chore(store-updater): cleanup

This commit is contained in:
moklick
2022-08-06 18:00:07 +02:00
parent 5cf4520992
commit 29013155fd
4 changed files with 11 additions and 9 deletions
@@ -3,7 +3,7 @@ import { StoreApi } from 'zustand';
import shallow from 'zustand/shallow'; import shallow from 'zustand/shallow';
import { useStore, useStoreApi } from '../../hooks/useStore'; import { useStore, useStoreApi } from '../../hooks/useStore';
import { Node, Edge, ReactFlowState, CoordinateExtent, ReactFlowProps } from '../../types'; import { Node, Edge, ReactFlowState, CoordinateExtent, ReactFlowProps, ReactFlowStore } from '../../types';
type StoreUpdaterProps = Pick< type StoreUpdaterProps = Pick<
ReactFlowProps, ReactFlowProps,
@@ -61,10 +61,14 @@ function useStoreUpdater<T>(value: T | undefined, setStoreState: (param: T) => v
}, [value]); }, [value]);
} }
function useDirectStoreUpdater(key: keyof ReactFlowState, value: any, setState: StoreApi<ReactFlowState>['setState']) { // updates with values in store that don't have a dedicated setter function
function useDirectStoreUpdater(
key: keyof ReactFlowStore,
value: unknown,
setState: StoreApi<ReactFlowState>['setState']
) {
useEffect(() => { useEffect(() => {
if (typeof value !== 'undefined') { if (typeof value !== 'undefined') {
// @ts-ignore
setState({ [key]: value }); setState({ [key]: value });
} }
}, [value]); }, [value]);
@@ -153,8 +157,6 @@ const StoreUpdater = ({
useStoreUpdater<Node[]>(nodes, setNodes); useStoreUpdater<Node[]>(nodes, setNodes);
useStoreUpdater<Edge[]>(edges, setEdges); useStoreUpdater<Edge[]>(edges, setEdges);
useStoreUpdater<Node[]>(defaultNodes, setNodes);
useStoreUpdater<Edge[]>(defaultEdges, setEdges);
useStoreUpdater<number>(minZoom, setMinZoom); useStoreUpdater<number>(minZoom, setMinZoom);
useStoreUpdater<number>(maxZoom, setMaxZoom); useStoreUpdater<number>(maxZoom, setMaxZoom);
useStoreUpdater<CoordinateExtent>(translateExtent, setTranslateExtent); useStoreUpdater<CoordinateExtent>(translateExtent, setTranslateExtent);
@@ -83,7 +83,7 @@ const ZoomPane = ({
d3ZoomHandler: selection.on('wheel.zoom'), d3ZoomHandler: selection.on('wheel.zoom'),
// we need to pass transform because zoom handler is not registered when we set the initial transform // we need to pass transform because zoom handler is not registered when we set the initial transform
transform: [clampedX, clampedY, clampedZoom], transform: [clampedX, clampedY, clampedZoom],
domNode: selection.node()?.closest('.react-flow') as HTMLElement, domNode: zoomPane.current.closest('.react-flow') as HTMLDivElement,
}); });
} }
}, []); }, []);
+2 -2
View File
@@ -29,7 +29,7 @@ function useResizeHandler(rendererNode: MutableRefObject<HTMLDivElement | null>)
}; };
updateDimensions(); updateDimensions();
window.onresize = updateDimensions; window.addEventListener('resize', updateDimensions);
if (rendererNode.current) { if (rendererNode.current) {
resizeObserver = new ResizeObserver(() => updateDimensions()); resizeObserver = new ResizeObserver(() => updateDimensions());
@@ -37,7 +37,7 @@ function useResizeHandler(rendererNode: MutableRefObject<HTMLDivElement | null>)
} }
return () => { return () => {
window.onresize = null; window.removeEventListener('resize', updateDimensions);
if (resizeObserver && rendererNode.current) { if (resizeObserver && rendererNode.current) {
resizeObserver.unobserve(rendererNode.current!); resizeObserver.unobserve(rendererNode.current!);
+1 -1
View File
@@ -135,7 +135,7 @@ export type ReactFlowStore = {
onEdgesChange: OnEdgesChange | null; onEdgesChange: OnEdgesChange | null;
hasDefaultNodes: boolean; hasDefaultNodes: boolean;
hasDefaultEdges: boolean; hasDefaultEdges: boolean;
domNode: HTMLElement | null; domNode: HTMLDivElement | null;
d3Zoom: ZoomBehavior<Element, unknown> | null; d3Zoom: ZoomBehavior<Element, unknown> | null;
d3Selection: D3Selection<Element, unknown, null, undefined> | null; d3Selection: D3Selection<Element, unknown, null, undefined> | null;