From 806c1dfa7725d956e912c75778f5e459bd03b9c9 Mon Sep 17 00:00:00 2001 From: braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Mon, 6 Feb 2023 11:13:33 +0100 Subject: [PATCH] feat(core): add `nodes` option to `fitView` # What's changed? - Add `nodes` option to `fitView` - Allows `fitView` to only fit around a certain set of specified nodeIds --- packages/core/src/store/utils.ts | 6 +++++- packages/core/src/types/general.ts | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/core/src/store/utils.ts b/packages/core/src/store/utils.ts index caf860af..d7944141 100644 --- a/packages/core/src/store/utils.ts +++ b/packages/core/src/store/utils.ts @@ -141,7 +141,11 @@ export function fitView(get: StoreApi['getState'], options: Inte if ((options.initial && !fitViewOnInitDone && fitViewOnInit) || !options.initial) { if (d3Zoom && d3Selection) { - const nodes = getNodes().filter((n) => (options.includeHiddenNodes ? n.width && n.height : !n.hidden)); + let nodes: Node[] = getNodes().filter((n) => (options.includeHiddenNodes ? n.width && n.height : !n.hidden)); + + if (options.nodes?.length) { + nodes = nodes.filter((n) => options.nodes?.includes(n.id)) + } const nodesInitialized = nodes.every((n) => n.width && n.height); diff --git a/packages/core/src/types/general.ts b/packages/core/src/types/general.ts index 4abfa405..3c1dd4a8 100644 --- a/packages/core/src/types/general.ts +++ b/packages/core/src/types/general.ts @@ -76,6 +76,7 @@ export type FitViewOptions = { minZoom?: number; maxZoom?: number; duration?: number; + nodes?: string[]; }; export type OnConnectStartParams = {