merge next
This commit is contained in:
@@ -105,6 +105,10 @@ export function createStore({
|
||||
}
|
||||
|
||||
store.nodes.set(nextNodes);
|
||||
|
||||
if (!get(store.nodesInitialized)) {
|
||||
store.nodesInitialized.set(true);
|
||||
}
|
||||
}
|
||||
|
||||
function fitView(nodes: Node[], options?: FitViewOptions) {
|
||||
@@ -347,6 +351,29 @@ export function createStore({
|
||||
[store.edges, store.defaultMarkerColor, store.flowId],
|
||||
([edges, defaultColor, id]) => createMarkerIds(edges, { defaultColor, id })
|
||||
),
|
||||
initialized: (() => {
|
||||
let initialized = false;
|
||||
const initialNodesLength = get(store.nodes).length;
|
||||
const initialEdgesLength = get(store.edges).length;
|
||||
return derived(
|
||||
[store.nodesInitialized, store.edgesInitialized, store.viewportInitialized],
|
||||
([nodesInitialized, edgesInitialized, viewportInitialized]) => {
|
||||
// If it was already initialized, return true from then on
|
||||
if (initialized) return initialized;
|
||||
|
||||
// if it hasn't been initialised check if it's now
|
||||
if (initialNodesLength === 0) {
|
||||
initialized = viewportInitialized;
|
||||
} else if (initialEdgesLength === 0) {
|
||||
initialized = viewportInitialized && nodesInitialized;
|
||||
} else {
|
||||
initialized = viewportInitialized && nodesInitialized && edgesInitialized;
|
||||
}
|
||||
|
||||
return initialized;
|
||||
}
|
||||
);
|
||||
})(),
|
||||
|
||||
// actions
|
||||
syncNodeStores: (nodes) => syncNodeStores(store.nodes, nodes),
|
||||
|
||||
@@ -23,7 +23,6 @@ import {
|
||||
type OnConnectStart,
|
||||
type OnConnectEnd,
|
||||
type NodeLookup,
|
||||
type OnBeforeDelete,
|
||||
type EdgeLookup
|
||||
} from '@xyflow/system';
|
||||
|
||||
@@ -47,7 +46,8 @@ import type {
|
||||
Edge,
|
||||
FitViewOptions,
|
||||
OnDelete,
|
||||
OnEdgeCreate
|
||||
OnEdgeCreate,
|
||||
OnBeforeDelete
|
||||
} from '$lib/types';
|
||||
import { createNodesStore, createEdgesStore } from './utils';
|
||||
import { initConnectionProps, type ConnectionProps } from './derived-connection-props';
|
||||
@@ -92,7 +92,8 @@ export const getInitialStore = ({
|
||||
|
||||
if (fitView && width && height) {
|
||||
const nodesWithDimensions = nextNodes.filter((node) => node.width && node.height);
|
||||
const bounds = getNodesBounds(nodesWithDimensions, [0, 0]);
|
||||
// @todo users nodeOrigin should be used here
|
||||
const bounds = getNodesBounds(nodesWithDimensions, { nodeOrigin: [0, 0] });
|
||||
viewport = getViewportForBounds(bounds, width, height, 0.5, 2, 0.1);
|
||||
}
|
||||
|
||||
@@ -152,6 +153,10 @@ export const getInitialStore = ({
|
||||
onconnect: writable<OnConnect>(undefined),
|
||||
onconnectstart: writable<OnConnectStart>(undefined),
|
||||
onconnectend: writable<OnConnectEnd>(undefined),
|
||||
onbeforedelete: writable<OnBeforeDelete>(undefined)
|
||||
onbeforedelete: writable<OnBeforeDelete>(undefined),
|
||||
nodesInitialized: writable<boolean>(false),
|
||||
edgesInitialized: writable<boolean>(false),
|
||||
viewportInitialized: writable<boolean>(false),
|
||||
initialized: readable<boolean>(false)
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user