update absolute positions before initial fitView
This commit is contained in:
@@ -19,7 +19,8 @@ import {
|
||||
type UpdateConnection,
|
||||
type ConnectionState,
|
||||
type NodeOrigin,
|
||||
getFitViewNodes
|
||||
getFitViewNodes,
|
||||
updateAbsolutePositions
|
||||
} from '@xyflow/system';
|
||||
|
||||
import type { EdgeTypes, NodeTypes, Node, Edge, FitViewOptions } from '$lib/types';
|
||||
@@ -96,6 +97,7 @@ export function createStore({
|
||||
|
||||
function updateNodeInternals(updates: Map<string, InternalNodeUpdate>) {
|
||||
const nodeLookup = get(store.nodeLookup);
|
||||
const parentLookup = get(store.parentLookup);
|
||||
const { changes, updatedInternals } = updateNodeInternalsSystem(
|
||||
updates,
|
||||
nodeLookup,
|
||||
@@ -108,6 +110,8 @@ export function createStore({
|
||||
return;
|
||||
}
|
||||
|
||||
updateAbsolutePositions(nodeLookup, parentLookup, { nodeOrigin, nodeExtent });
|
||||
|
||||
if (!get(store.fitViewOnInitDone) && get(store.fitViewOnInit)) {
|
||||
const fitViewOptions = get(store.fitViewOptions);
|
||||
const fitViewOnInitDone = fitViewSync({
|
||||
|
||||
@@ -61,11 +61,14 @@ export function updateAbsolutePositions<NodeType extends NodeBase>(
|
||||
) {
|
||||
const _options = mergeObjects(defaultOptions, options);
|
||||
for (const node of nodeLookup.values()) {
|
||||
if (!node.parentId) {
|
||||
continue;
|
||||
if (node.parentId) {
|
||||
updateChildNode(node, nodeLookup, parentLookup, _options);
|
||||
} else {
|
||||
const positionWithOrigin = getNodePositionWithOrigin(node, _options.nodeOrigin);
|
||||
const extent = isCoordinateExtent(node.extent) ? node.extent : _options.nodeExtent;
|
||||
const clampedPosition = clampPosition(positionWithOrigin, extent, getNodeDimensions(node));
|
||||
node.internals.positionAbsolute = clampedPosition;
|
||||
}
|
||||
|
||||
updateChildNode(node, nodeLookup, parentLookup, _options);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user