blob: df3315cbf6fd55c54a46a9a2effdb9a883347968 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
import { useCallback, useRef } from "react";
export function useElementRegistry() {
const elementRefs = useRef<Map<string, HTMLElement>>(new Map());
const registerElement = useCallback(
(id: string, element: HTMLElement | null) => {
if (element) {
elementRefs.current.set(id, element);
return;
}
elementRefs.current.delete(id);
},
[],
);
const getElement = useCallback((id: string) => {
return elementRefs.current.get(id) ?? null;
}, []);
const getElements = useCallback(() => {
return elementRefs.current;
}, []);
return {
registerElement,
getElement,
getElements,
};
}
|