From 731918dc1393357bba3d1bdd5eaa3a8180607703 Mon Sep 17 00:00:00 2001 From: moklick Date: Tue, 7 Dec 2021 01:58:48 +0100 Subject: [PATCH] feat(hooks): add useNodeDimensions --- src/hooks/useNodeDimensions.ts | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/hooks/useNodeDimensions.ts diff --git a/src/hooks/useNodeDimensions.ts b/src/hooks/useNodeDimensions.ts new file mode 100644 index 00000000..798de902 --- /dev/null +++ b/src/hooks/useNodeDimensions.ts @@ -0,0 +1,31 @@ +import { useCallback } from 'react'; +import shallow from 'zustand/shallow'; + +import { Rect } from '../types'; +import { useStore } from '../store'; + +function useNodeDimensions(id: string): Rect | null { + const nodeDimensions = useStore( + useCallback( + (s) => { + const nodeItem = s.nodeInternals.get(id); + + if (!nodeItem) { + return null; + } + + return { + ...nodeItem.positionAbsolute, + width: nodeItem.width, + height: nodeItem.height, + }; + }, + [id] + ), + shallow + ); + + return nodeDimensions; +} + +export default useNodeDimensions;