summaryrefslogtreecommitdiff
path: root/legacy/use-element-registry.ts
diff options
context:
space:
mode:
Diffstat (limited to 'legacy/use-element-registry.ts')
-rw-r--r--legacy/use-element-registry.ts31
1 files changed, 31 insertions, 0 deletions
diff --git a/legacy/use-element-registry.ts b/legacy/use-element-registry.ts
new file mode 100644
index 00000000..85704318
--- /dev/null
+++ b/legacy/use-element-registry.ts
@@ -0,0 +1,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,
+ };
+}