From 3d67d29347d51305ffe93c02db25db5753b40a33 Mon Sep 17 00:00:00 2001 From: Braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Sat, 9 Apr 2022 19:04:00 +0200 Subject: [PATCH] refactor: Change zoom pane into viewport * split zoom pane into smaller components as viewport * rename UseZoomPanHelper Type to Viewport --- package/src/composables/useZoomPanHelper.ts | 4 +- .../Transform.vue} | 2 +- package/src/container/Viewport/Viewport.vue | 53 ++++++ package/src/container/Viewport/Zoom.vue | 152 ++++++++++++++++ package/src/container/VueFlow/VueFlow.vue | 6 +- package/src/container/ZoomPane/ZoomPane.vue | 172 ------------------ package/src/style.css | 2 +- package/src/types/flow.ts | 12 +- package/src/types/store.ts | 13 +- package/src/types/zoom.ts | 2 +- 10 files changed, 230 insertions(+), 188 deletions(-) rename package/src/container/{TransformationPane/TransformationPane.vue => Viewport/Transform.vue} (98%) create mode 100644 package/src/container/Viewport/Viewport.vue create mode 100644 package/src/container/Viewport/Zoom.vue delete mode 100644 package/src/container/ZoomPane/ZoomPane.vue diff --git a/package/src/composables/useZoomPanHelper.ts b/package/src/composables/useZoomPanHelper.ts index 167be1c7..6c9825e1 100644 --- a/package/src/composables/useZoomPanHelper.ts +++ b/package/src/composables/useZoomPanHelper.ts @@ -2,13 +2,13 @@ import { zoomIdentity } from 'd3-zoom' import useVueFlow from './useVueFlow' import useWindow from './useWindow' import { getRectOfNodes, pointToRendererPoint, getTransformForBounds } from '~/utils' -import { GraphNode, Store, UseZoomPanHelper, D3Selection } from '~/types' +import { GraphNode, Store, Viewport, D3Selection } from '~/types' const DEFAULT_PADDING = 0.1 const transition = (selection: D3Selection, ms = 0) => selection.transition().duration(ms) -export default (store: Store = useVueFlow().store): UseZoomPanHelper => ({ +export default (store: Store = useVueFlow().store): Viewport => ({ zoomIn: (options) => store.d3Selection && store.d3Zoom?.scaleBy(transition(store.d3Selection, options?.duration), 1.2), zoomOut: (options) => store.d3Selection && store.d3Zoom?.scaleBy(transition(store.d3Selection, options?.duration), 1 / 1.2), zoomTo: (zoomLevel, options) => diff --git a/package/src/container/TransformationPane/TransformationPane.vue b/package/src/container/Viewport/Transform.vue similarity index 98% rename from package/src/container/TransformationPane/TransformationPane.vue rename to package/src/container/Viewport/Transform.vue index 28df82d3..1b014d6e 100644 --- a/package/src/container/TransformationPane/TransformationPane.vue +++ b/package/src/container/Viewport/Transform.vue @@ -33,7 +33,7 @@ const transform = computed(() => `translate(${store.transform[0]}px,${store.tran