feat(hooks): add useOnViewportChange

This commit is contained in:
moklick
2022-08-10 16:01:29 +02:00
parent a5a9a60c11
commit 820cb1c880
7 changed files with 87 additions and 9 deletions
@@ -2,7 +2,7 @@ import { memo, useEffect } from 'react';
import shallow from 'zustand/shallow';
import { ReactFlowState, OnSelectionChangeFunc, Node, Edge } from '../../types';
import { useStore } from '../../hooks/useStore';
import { useStore, useStoreApi } from '../../hooks/useStore';
interface SelectionListenerProps {
onSelectionChange: OnSelectionChangeFunc;
@@ -28,10 +28,14 @@ function areEqual(objA: SelectorSlice, objB: SelectorSlice) {
// This is just a helper component for calling the onSelectionChange listener.
// @TODO: Now that we have the onNodesChange and on EdgesChange listeners, do we still need this component?
function SelectionListener({ onSelectionChange }: SelectionListenerProps) {
const store = useStoreApi();
const { selectedNodes, selectedEdges } = useStore(selector, areEqual);
useEffect(() => {
onSelectionChange({ nodes: selectedNodes, edges: selectedEdges });
const params = { nodes: selectedNodes, edges: selectedEdges };
onSelectionChange(params);
store.getState().onSelectionChange?.(params);
}, [selectedNodes, selectedEdges]);
return null;