use nodesInitialized from adoptUserNodes
This commit is contained in:
@@ -9,15 +9,17 @@ export type UseNodesInitializedOptions = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const selector = (options: UseNodesInitializedOptions) => (s: ReactFlowState) => {
|
const selector = (options: UseNodesInitializedOptions) => (s: ReactFlowState) => {
|
||||||
|
if (!options.includeHiddenNodes) {
|
||||||
|
return s.nodesInitialized;
|
||||||
|
}
|
||||||
|
|
||||||
if (s.nodeLookup.size === 0) {
|
if (s.nodeLookup.size === 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const [, { hidden, internals }] of s.nodeLookup) {
|
for (const [, { internals }] of s.nodeLookup) {
|
||||||
if (options.includeHiddenNodes || !hidden) {
|
if (internals.handleBounds === undefined || !nodeHasDimensions(internals.userNode)) {
|
||||||
if (internals.handleBounds === undefined || !nodeHasDimensions(internals.userNode)) {
|
return false;
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -91,9 +91,9 @@ const createStore = ({
|
|||||||
|
|
||||||
if (fitViewQueued && nodesInitialized) {
|
if (fitViewQueued && nodesInitialized) {
|
||||||
resolveFitView();
|
resolveFitView();
|
||||||
set({ nodes, fitViewQueued: false, fitViewOptions: undefined });
|
set({ nodes, nodesInitialized, fitViewQueued: false, fitViewOptions: undefined });
|
||||||
} else {
|
} else {
|
||||||
set({ nodes });
|
set({ nodes, nodesInitialized });
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
setEdges: (edges: Edge[]) => {
|
setEdges: (edges: Edge[]) => {
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ const getInitialState = ({
|
|||||||
const storeNodeExtent = nodeExtent ?? infiniteExtent;
|
const storeNodeExtent = nodeExtent ?? infiniteExtent;
|
||||||
|
|
||||||
updateConnectionLookup(connectionLookup, edgeLookup, storeEdges);
|
updateConnectionLookup(connectionLookup, edgeLookup, storeEdges);
|
||||||
adoptUserNodes(storeNodes, nodeLookup, parentLookup, {
|
const nodesInitialized = adoptUserNodes(storeNodes, nodeLookup, parentLookup, {
|
||||||
nodeOrigin: storeNodeOrigin,
|
nodeOrigin: storeNodeOrigin,
|
||||||
nodeExtent: storeNodeExtent,
|
nodeExtent: storeNodeExtent,
|
||||||
elevateNodesOnSelect: false,
|
elevateNodesOnSelect: false,
|
||||||
@@ -69,6 +69,7 @@ const getInitialState = ({
|
|||||||
height: 0,
|
height: 0,
|
||||||
transform,
|
transform,
|
||||||
nodes: storeNodes,
|
nodes: storeNodes,
|
||||||
|
nodesInitialized,
|
||||||
nodeLookup,
|
nodeLookup,
|
||||||
parentLookup,
|
parentLookup,
|
||||||
edges: storeEdges,
|
edges: storeEdges,
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ export type ReactFlowStore<NodeType extends Node = Node, EdgeType extends Edge =
|
|||||||
height: number;
|
height: number;
|
||||||
transform: Transform;
|
transform: Transform;
|
||||||
nodes: NodeType[];
|
nodes: NodeType[];
|
||||||
|
nodesInitialized: boolean;
|
||||||
nodeLookup: NodeLookup<InternalNode<NodeType>>;
|
nodeLookup: NodeLookup<InternalNode<NodeType>>;
|
||||||
parentLookup: ParentLookup<InternalNode<NodeType>>;
|
parentLookup: ParentLookup<InternalNode<NodeType>>;
|
||||||
edges: EdgeType[];
|
edges: EdgeType[];
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ export function adoptUserNodes<NodeType extends NodeBase>(
|
|||||||
): boolean {
|
): boolean {
|
||||||
const _options = mergeObjects(adoptUserNodesDefaultOptions, options);
|
const _options = mergeObjects(adoptUserNodesDefaultOptions, options);
|
||||||
|
|
||||||
let nodesInitialized = true;
|
let nodesInitialized = nodes.length > 0;
|
||||||
const tmpLookup = new Map(nodeLookup);
|
const tmpLookup = new Map(nodeLookup);
|
||||||
const selectedNodeZ: number = _options?.elevateNodesOnSelect ? 1000 : 0;
|
const selectedNodeZ: number = _options?.elevateNodesOnSelect ? 1000 : 0;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user