diff --git a/src/container/NodeRenderer/index.tsx b/src/container/NodeRenderer/index.tsx index 05f96543..8fc90157 100644 --- a/src/container/NodeRenderer/index.tsx +++ b/src/container/NodeRenderer/index.tsx @@ -72,8 +72,7 @@ const NodeRenderer = ({ onlyRenderVisibleNodes = true, ...props }: NodeRendererP const nodes = useStoreState((s) => s.nodes); const transform = useStoreState((s) => s.transform); const selectedElements = useStoreState((s) => s.selectedElements); - const width = useStoreState((s) => s.width); - const height = useStoreState((s) => s.height); + const viewportBox = useStoreState((s) => s.viewportBox); const nodesDraggable = useStoreState((s) => s.nodesDraggable); const nodesConnectable = useStoreState((s) => s.nodesConnectable); const elementsSelectable = useStoreState((s) => s.elementsSelectable); @@ -81,9 +80,7 @@ const NodeRenderer = ({ onlyRenderVisibleNodes = true, ...props }: NodeRendererP transform: `translate(${transform[0]}px,${transform[1]}px) scale(${transform[2]})`, }; - const renderNodes = onlyRenderVisibleNodes - ? getNodesInside(nodes, { x: 0, y: 0, width, height }, transform, true) - : nodes; + const renderNodes = onlyRenderVisibleNodes ? getNodesInside(nodes, viewportBox, transform, true) : nodes; return (
diff --git a/src/store/index.ts b/src/store/index.ts index cfc9faf5..cf710ab2 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -54,6 +54,7 @@ type SetSnapGrid = { export interface StoreModel { width: number; height: number; + viewportBox: Computed; transform: Transform; elements: Elements; nodes: Computed; @@ -136,10 +137,11 @@ export interface StoreModel { export const storeModel: StoreModel = { width: 0, height: 0, + viewportBox: computed((state) => ({ x: 0, y: 0, width: state.width, height: state.height })), transform: [0, 0, 1], elements: [], - nodes: computed([(state) => state.elements], (elements) => elements.filter((el) => isNode(el)) as Node[]), - edges: computed([(state) => state.elements], (elements) => elements.filter((el) => isEdge(el)) as Edge[]), + nodes: computed((state) => state.elements.filter((el) => isNode(el)) as Node[]), + edges: computed((state) => state.elements.filter((el) => isEdge(el)) as Edge[]), selectedElements: null, selectedNodesBbox: { x: 0, y: 0, width: 0, height: 0 },