Skip to content

Commit 9f63252

Browse files
committed
feat(core): add setViewport and getViewport to viewport helper
1 parent ed6c298 commit 9f63252

File tree

4 files changed

+20
-3
lines changed

4 files changed

+20
-3
lines changed

packages/core/src/composables/useViewport.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
import { until } from '@vueuse/core'
12
import { zoomIdentity } from 'd3-zoom'
2-
import { ref } from 'vue'
3+
import { computed, ref } from 'vue'
34
import type { ComputedGetters, D3Selection, GraphNode, State, ViewportFunctions } from '~/types'
45
import { clampPosition, getRectOfNodes, getTransformForBounds, pointToRendererPoint } from '~/utils'
56

@@ -21,7 +22,9 @@ const initialViewportHelper: ExtendedViewport = {
2122
setCenter: noop,
2223
fitBounds: noop,
2324
project: (position) => position,
25+
setViewport: noop,
2426
setTransform: noop,
27+
getViewport: () => ({ x: 0, y: 0, zoom: 1 }),
2528
getTransform: () => ({ x: 0, y: 0, zoom: 1 }),
2629
initialized: false,
2730
}
@@ -97,9 +100,17 @@ export function useViewport(state: State, getters: ComputedGetters) {
97100
}
98101
})
99102
},
103+
setViewport: (transform, options) => {
104+
transformViewport(transform.x, transform.y, transform.zoom, options?.duration)
105+
},
100106
setTransform: (transform, options) => {
101107
return transformViewport(transform.x, transform.y, transform.zoom, options?.duration)
102108
},
109+
getViewport: () => ({
110+
x: viewport.x,
111+
y: viewport.y,
112+
zoom: viewport.zoom,
113+
}),
103114
getTransform: () => {
104115
return {
105116
x: viewport.x,

packages/core/src/composables/useZoomPanHelper.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ export function useZoomPanHelper(vueFlowId?: string): ViewportFunctions {
1515
zoomIn: (transitionOpts) => viewportHelper.value.zoomIn(transitionOpts),
1616
zoomOut: (transitionOpts) => viewportHelper.value.zoomOut(transitionOpts),
1717
zoomTo: (zoomLevel, transitionOpts) => viewportHelper.value.zoomTo(zoomLevel, transitionOpts),
18+
setViewport: (params, transitionOpts) => viewportHelper.value.setViewport(params, transitionOpts),
1819
setTransform: (params, transitionOpts) => viewportHelper.value.setTransform(params, transitionOpts),
20+
getViewport: () => viewportHelper.value.getViewport(),
1921
getTransform: () => viewportHelper.value.getTransform(),
2022
setCenter: (x, y, opts) => viewportHelper.value.setCenter(x, y, opts),
2123
fitBounds: (params, opts) => viewportHelper.value.fitBounds(params, opts),

packages/core/src/store/actions.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -885,7 +885,9 @@ export function useActions(
885885
zoomIn: (transitionOpts) => viewportHelper.value.zoomIn(transitionOpts),
886886
zoomOut: (transitionOpts) => viewportHelper.value.zoomOut(transitionOpts),
887887
zoomTo: (zoomLevel, transitionOpts) => viewportHelper.value.zoomTo(zoomLevel, transitionOpts),
888+
setViewport: (params, transitionOpts) => viewportHelper.value.setViewport(params, transitionOpts),
888889
setTransform: (params, transitionOpts) => viewportHelper.value.setTransform(params, transitionOpts),
890+
getViewport: () => viewportHelper.value.getViewport(),
889891
getTransform: () => viewportHelper.value.getTransform(),
890892
setCenter: (x, y, opts) => viewportHelper.value.setCenter(x, y, opts),
891893
fitBounds: (params, opts) => viewportHelper.value.fitBounds(params, opts),

packages/core/src/types/zoom.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,17 +60,19 @@ export type ZoomInOut = (options?: TransitionOptions) => Promise<boolean>
6060
export type ZoomTo = (zoomLevel: number, options?: TransitionOptions) => Promise<boolean>
6161

6262
/** get current viewport transform */
63-
export type GetTransform = () => ViewportTransform
63+
export type GetViewport = () => ViewportTransform
6464

6565
/** set current viewport transform */
66-
export type SetTransform = (transform: ViewportTransform, options?: TransitionOptions) => Promise<boolean>
66+
export type SetViewport = (transform: ViewportTransform, options?: TransitionOptions) => Promise<boolean>
6767

6868
export interface ViewportFunctions {
6969
zoomIn: ZoomInOut
7070
zoomOut: ZoomInOut
7171
zoomTo: ZoomTo
72+
setViewport: SetViewport
7273
/** @deprecated use setViewport instead */
7374
setTransform: SetViewport
75+
getViewport: GetViewport
7476
/** @deprecated use getViewport instead */
7577
getTransform: GetViewport
7678
fitView: FitView

0 commit comments

Comments
 (0)