feat(core): add setViewport and getViewport to viewport helper
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
|
import { until } from '@vueuse/core'
|
||||||
import { zoomIdentity } from 'd3-zoom'
|
import { zoomIdentity } from 'd3-zoom'
|
||||||
import { ref } from 'vue'
|
import { computed, ref } from 'vue'
|
||||||
import type { ComputedGetters, D3Selection, GraphNode, State, ViewportFunctions } from '~/types'
|
import type { ComputedGetters, D3Selection, GraphNode, State, ViewportFunctions } from '~/types'
|
||||||
import { clampPosition, getRectOfNodes, getTransformForBounds, pointToRendererPoint } from '~/utils'
|
import { clampPosition, getRectOfNodes, getTransformForBounds, pointToRendererPoint } from '~/utils'
|
||||||
|
|
||||||
@@ -21,7 +22,9 @@ const initialViewportHelper: ExtendedViewport = {
|
|||||||
setCenter: noop,
|
setCenter: noop,
|
||||||
fitBounds: noop,
|
fitBounds: noop,
|
||||||
project: (position) => position,
|
project: (position) => position,
|
||||||
|
setViewport: noop,
|
||||||
setTransform: noop,
|
setTransform: noop,
|
||||||
|
getViewport: () => ({ x: 0, y: 0, zoom: 1 }),
|
||||||
getTransform: () => ({ x: 0, y: 0, zoom: 1 }),
|
getTransform: () => ({ x: 0, y: 0, zoom: 1 }),
|
||||||
initialized: false,
|
initialized: false,
|
||||||
}
|
}
|
||||||
@@ -97,9 +100,17 @@ export function useViewport(state: State, getters: ComputedGetters) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
setViewport: (transform, options) => {
|
||||||
|
transformViewport(transform.x, transform.y, transform.zoom, options?.duration)
|
||||||
|
},
|
||||||
setTransform: (transform, options) => {
|
setTransform: (transform, options) => {
|
||||||
return transformViewport(transform.x, transform.y, transform.zoom, options?.duration)
|
return transformViewport(transform.x, transform.y, transform.zoom, options?.duration)
|
||||||
},
|
},
|
||||||
|
getViewport: () => ({
|
||||||
|
x: viewport.x,
|
||||||
|
y: viewport.y,
|
||||||
|
zoom: viewport.zoom,
|
||||||
|
}),
|
||||||
getTransform: () => {
|
getTransform: () => {
|
||||||
return {
|
return {
|
||||||
x: viewport.x,
|
x: viewport.x,
|
||||||
|
|||||||
@@ -15,7 +15,9 @@ export function useZoomPanHelper(vueFlowId?: string): ViewportFunctions {
|
|||||||
zoomIn: (transitionOpts) => viewportHelper.value.zoomIn(transitionOpts),
|
zoomIn: (transitionOpts) => viewportHelper.value.zoomIn(transitionOpts),
|
||||||
zoomOut: (transitionOpts) => viewportHelper.value.zoomOut(transitionOpts),
|
zoomOut: (transitionOpts) => viewportHelper.value.zoomOut(transitionOpts),
|
||||||
zoomTo: (zoomLevel, transitionOpts) => viewportHelper.value.zoomTo(zoomLevel, transitionOpts),
|
zoomTo: (zoomLevel, transitionOpts) => viewportHelper.value.zoomTo(zoomLevel, transitionOpts),
|
||||||
|
setViewport: (params, transitionOpts) => viewportHelper.value.setViewport(params, transitionOpts),
|
||||||
setTransform: (params, transitionOpts) => viewportHelper.value.setTransform(params, transitionOpts),
|
setTransform: (params, transitionOpts) => viewportHelper.value.setTransform(params, transitionOpts),
|
||||||
|
getViewport: () => viewportHelper.value.getViewport(),
|
||||||
getTransform: () => viewportHelper.value.getTransform(),
|
getTransform: () => viewportHelper.value.getTransform(),
|
||||||
setCenter: (x, y, opts) => viewportHelper.value.setCenter(x, y, opts),
|
setCenter: (x, y, opts) => viewportHelper.value.setCenter(x, y, opts),
|
||||||
fitBounds: (params, opts) => viewportHelper.value.fitBounds(params, opts),
|
fitBounds: (params, opts) => viewportHelper.value.fitBounds(params, opts),
|
||||||
|
|||||||
@@ -885,7 +885,9 @@ export function useActions(
|
|||||||
zoomIn: (transitionOpts) => viewportHelper.value.zoomIn(transitionOpts),
|
zoomIn: (transitionOpts) => viewportHelper.value.zoomIn(transitionOpts),
|
||||||
zoomOut: (transitionOpts) => viewportHelper.value.zoomOut(transitionOpts),
|
zoomOut: (transitionOpts) => viewportHelper.value.zoomOut(transitionOpts),
|
||||||
zoomTo: (zoomLevel, transitionOpts) => viewportHelper.value.zoomTo(zoomLevel, transitionOpts),
|
zoomTo: (zoomLevel, transitionOpts) => viewportHelper.value.zoomTo(zoomLevel, transitionOpts),
|
||||||
|
setViewport: (params, transitionOpts) => viewportHelper.value.setViewport(params, transitionOpts),
|
||||||
setTransform: (params, transitionOpts) => viewportHelper.value.setTransform(params, transitionOpts),
|
setTransform: (params, transitionOpts) => viewportHelper.value.setTransform(params, transitionOpts),
|
||||||
|
getViewport: () => viewportHelper.value.getViewport(),
|
||||||
getTransform: () => viewportHelper.value.getTransform(),
|
getTransform: () => viewportHelper.value.getTransform(),
|
||||||
setCenter: (x, y, opts) => viewportHelper.value.setCenter(x, y, opts),
|
setCenter: (x, y, opts) => viewportHelper.value.setCenter(x, y, opts),
|
||||||
fitBounds: (params, opts) => viewportHelper.value.fitBounds(params, opts),
|
fitBounds: (params, opts) => viewportHelper.value.fitBounds(params, opts),
|
||||||
|
|||||||
@@ -60,17 +60,19 @@ export type ZoomInOut = (options?: TransitionOptions) => Promise<boolean>
|
|||||||
export type ZoomTo = (zoomLevel: number, options?: TransitionOptions) => Promise<boolean>
|
export type ZoomTo = (zoomLevel: number, options?: TransitionOptions) => Promise<boolean>
|
||||||
|
|
||||||
/** get current viewport transform */
|
/** get current viewport transform */
|
||||||
export type GetTransform = () => ViewportTransform
|
export type GetViewport = () => ViewportTransform
|
||||||
|
|
||||||
/** set current viewport transform */
|
/** set current viewport transform */
|
||||||
export type SetTransform = (transform: ViewportTransform, options?: TransitionOptions) => Promise<boolean>
|
export type SetViewport = (transform: ViewportTransform, options?: TransitionOptions) => Promise<boolean>
|
||||||
|
|
||||||
export interface ViewportFunctions {
|
export interface ViewportFunctions {
|
||||||
zoomIn: ZoomInOut
|
zoomIn: ZoomInOut
|
||||||
zoomOut: ZoomInOut
|
zoomOut: ZoomInOut
|
||||||
zoomTo: ZoomTo
|
zoomTo: ZoomTo
|
||||||
|
setViewport: SetViewport
|
||||||
/** @deprecated use setViewport instead */
|
/** @deprecated use setViewport instead */
|
||||||
setTransform: SetViewport
|
setTransform: SetViewport
|
||||||
|
getViewport: GetViewport
|
||||||
/** @deprecated use getViewport instead */
|
/** @deprecated use getViewport instead */
|
||||||
getTransform: GetViewport
|
getTransform: GetViewport
|
||||||
fitView: FitView
|
fitView: FitView
|
||||||
|
|||||||
Reference in New Issue
Block a user