refactor(onlyRenderVisible): change from nodes to elements #677

This commit is contained in:
moklick
2020-11-14 16:46:14 +01:00
parent 6e0b31d9c1
commit 2420cf3689
7 changed files with 121 additions and 98 deletions
+2 -7
View File
@@ -1,7 +1,6 @@
import React, { memo, useMemo, ComponentType, MouseEvent } from 'react';
import { useStoreState } from '../../store/hooks';
import { getNodesInside } from '../../utils/graph';
import { Node, NodeTypesType, WrapNodeProps, Edge } from '../../types';
interface NodeRendererProps {
@@ -14,19 +13,17 @@ interface NodeRendererProps {
onNodeContextMenu?: (event: MouseEvent, node: Node) => void;
onNodeDragStart?: (event: MouseEvent, node: Node) => void;
onNodeDragStop?: (event: MouseEvent, node: Node) => void;
onlyRenderVisibleNodes: boolean;
snapToGrid: boolean;
snapGrid: [number, number];
}
const NodeRenderer = (props: NodeRendererProps) => {
const nodes = useStoreState((state) => state.nodes);
const transform = useStoreState((state) => state.transform);
const selectedElements = useStoreState((state) => state.selectedElements);
const viewportBox = useStoreState((state) => state.viewportBox);
const nodesDraggable = useStoreState((state) => state.nodesDraggable);
const nodesConnectable = useStoreState((state) => state.nodesConnectable);
const elementsSelectable = useStoreState((state) => state.elementsSelectable);
const visibleNodes = useStoreState((state) => state.visibleNodes);
const transformStyle = useMemo(
() => ({
@@ -35,11 +32,9 @@ const NodeRenderer = (props: NodeRendererProps) => {
[transform[0], transform[1], transform[2]]
);
const nodesToRender = props.onlyRenderVisibleNodes ? getNodesInside(nodes, viewportBox, transform, true) : nodes;
return (
<div className="react-flow__nodes" style={transformStyle}>
{nodesToRender.map((node) => {
{visibleNodes.map((node) => {
const nodeType = node.type || 'default';
const NodeComponent = (props.nodeTypes[nodeType] || props.nodeTypes.default) as ComponentType<WrapNodeProps>;