From 7324767c31b8495267d09f2fe278691dcaca895a Mon Sep 17 00:00:00 2001 From: Eugene Samonenko Date: Sat, 6 Feb 2021 12:20:20 +0200 Subject: [PATCH] feat(fitView): added option to exclude hidden nodes --- src/hooks/useZoomPanHelper.ts | 6 +++--- src/types/index.ts | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/hooks/useZoomPanHelper.ts b/src/hooks/useZoomPanHelper.ts index 079494f0..2db74294 100644 --- a/src/hooks/useZoomPanHelper.ts +++ b/src/hooks/useZoomPanHelper.ts @@ -11,7 +11,7 @@ const initialZoomPanHelper: ZoomPanHelperFunctions = { zoomOut: () => {}, zoomTo: (_: number) => {}, transform: (_: FlowTransform) => {}, - fitView: (_: FitViewParams = { padding: 0.1 }) => {}, + fitView: (_: FitViewParams = { padding: 0.1, excludeHidden: false }) => {}, setCenter: (_: number, __: number) => {}, fitBounds: (_: Rect) => {}, initialized: false, @@ -53,14 +53,14 @@ const usePanZoomHelper = (): ZoomPanHelperFunctions => { d3Zoom.transform(d3Selection, nextTransform); }, - fitView: (options: FitViewParams = { padding: 0.1 }) => { + fitView: (options: FitViewParams = { padding: 0.1, excludeHidden: false }) => { const { nodes, width, height, minZoom, maxZoom } = store.getState(); if (!nodes.length) { return; } - const bounds = getRectOfNodes(nodes); + const bounds = getRectOfNodes(options.excludeHidden ? nodes.filter(node => !node.isHidden) : nodes); const [x, y, zoom] = getTransformForBounds(bounds, width, height, minZoom, maxZoom, options.padding); const transform = zoomIdentity.translate(x, y).scale(zoom); diff --git a/src/types/index.ts b/src/types/index.ts index b41e82a9..32150248 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -236,6 +236,7 @@ export interface WrapNodeProps { export type FitViewParams = { padding: number; + excludeHidden?: boolean; }; export type FlowExportObject = {