From 474a17173121038ad5744c233121ce68a200c47c Mon Sep 17 00:00:00 2001 From: braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Mon, 15 Jul 2024 23:57:09 +0200 Subject: [PATCH 01/17] refactor(core): replace `clamp` Signed-off-by: braks <78412429+bcakmakoglu@users.noreply.github.com> --- packages/core/src/container/Viewport/Viewport.vue | 3 ++- packages/core/src/index.ts | 4 +++- packages/core/src/store/actions.ts | 2 +- packages/core/src/utils/autopan.ts | 2 +- packages/core/src/utils/graph.ts | 5 +---- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/core/src/container/Viewport/Viewport.vue b/packages/core/src/container/Viewport/Viewport.vue index 98e3b3996..b6eec2164 100644 --- a/packages/core/src/container/Viewport/Viewport.vue +++ b/packages/core/src/container/Viewport/Viewport.vue @@ -3,12 +3,13 @@ import type { D3ZoomEvent, ZoomTransform } from 'd3-zoom' import { zoom, zoomIdentity } from 'd3-zoom' import { pointer, select } from 'd3-selection' import { onMounted, ref, toRef, watch } from 'vue' +import { clamp } from '@xyflow/system' import type { CoordinateExtent, D3ZoomHandler, ViewportTransform } from '../../types' import { PanOnScrollMode } from '../../types' import { useKeyPress } from '../../composables/useKeyPress' import { useVueFlow } from '../../composables/useVueFlow' import { useResizeHandler } from '../../composables/useResizeHandler' -import { clamp, isMacOs, warn } from '../../utils' +import { isMacOs, warn } from '../../utils' import Pane from '../Pane/Pane.vue' import Transform from './Transform.vue' diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 501f6cd54..a6bdfd42a 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -22,6 +22,9 @@ export { default as EdgeLabelRenderer } from './components/Edges/EdgeLabelRender export { getBezierPath, getSmoothStepPath, getStraightPath, getBezierEdgeCenter } from '@xyflow/system' export { getSimpleBezierPath } from './components/Edges/SimpleBezierEdge' +// re-export graph utils +export { clamp } from '@xyflow/system' + export { isNode, isEdge, @@ -38,7 +41,6 @@ export { getMarkerId, getBoundsofRects, connectionExists, - clamp, } from './utils/graph' /** diff --git a/packages/core/src/store/actions.ts b/packages/core/src/store/actions.ts index 89564847d..fc7cac903 100644 --- a/packages/core/src/store/actions.ts +++ b/packages/core/src/store/actions.ts @@ -1,6 +1,7 @@ import { zoomIdentity } from 'd3-zoom' import type { ComputedRef } from 'vue' import { until } from '@vueuse/core' +import { clamp } from '@xyflow/system' import type { Actions, CoordinateExtent, @@ -26,7 +27,6 @@ import type { import { useViewportHelper } from '../composables' import { applyChanges, - clamp, createAdditionChange, createEdgeRemoveChange, createGraphEdges, diff --git a/packages/core/src/utils/autopan.ts b/packages/core/src/utils/autopan.ts index 140d698b1..d2489bbb4 100644 --- a/packages/core/src/utils/autopan.ts +++ b/packages/core/src/utils/autopan.ts @@ -1,5 +1,5 @@ +import { clamp } from '@xyflow/system' import type { Dimensions, XYPosition } from '../types' -import { clamp } from './graph' // returns a number between 0 and 1 that represents the velocity of the movement // when the mouse is close to the edge of the canvas diff --git a/packages/core/src/utils/graph.ts b/packages/core/src/utils/graph.ts index a3512374e..97347843b 100644 --- a/packages/core/src/utils/graph.ts +++ b/packages/core/src/utils/graph.ts @@ -1,4 +1,5 @@ import { markRaw } from 'vue' +import { clamp } from '@xyflow/system' import type { Actions, Box, @@ -45,10 +46,6 @@ export function getDimensions(node: HTMLElement): Dimensions { } } -export function clamp(val: number, min = 0, max = 1) { - return Math.min(Math.max(val, min), max) -} - export function clampPosition(position: XYPosition, extent: CoordinateExtent): XYPosition { return { x: clamp(position.x, extent[0][0], extent[1][0]), From 637c78b7ad179072ae5c8dff4f7e3f7f416142f7 Mon Sep 17 00:00:00 2001 From: braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Tue, 16 Jul 2024 00:00:05 +0200 Subject: [PATCH 02/17] refactor(core): replace `clampPosition` Signed-off-by: braks <78412429+bcakmakoglu@users.noreply.github.com> --- packages/core/src/composables/useViewportHelper.ts | 3 ++- packages/core/src/utils/drag.ts | 3 ++- packages/core/src/utils/graph.ts | 8 -------- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/packages/core/src/composables/useViewportHelper.ts b/packages/core/src/composables/useViewportHelper.ts index 586984172..7cf124da4 100644 --- a/packages/core/src/composables/useViewportHelper.ts +++ b/packages/core/src/composables/useViewportHelper.ts @@ -1,7 +1,8 @@ import { zoomIdentity } from 'd3-zoom' import { computed } from 'vue' +import { clampPosition } from '@xyflow/system' import type { D3Selection, GraphNode, Project, State, ViewportFunctions } from '../types' -import { clampPosition, getRectOfNodes, getTransformForBounds, pointToRendererPoint, rendererPointToPoint, warn } from '../utils' +import { getRectOfNodes, getTransformForBounds, pointToRendererPoint, rendererPointToPoint, warn } from '../utils' export interface ViewportHelper extends ViewportFunctions { viewportInitialized: boolean diff --git a/packages/core/src/utils/drag.ts b/packages/core/src/utils/drag.ts index ccc107f2f..ecc0bf452 100644 --- a/packages/core/src/utils/drag.ts +++ b/packages/core/src/utils/drag.ts @@ -1,4 +1,5 @@ import { markRaw } from 'vue' +import { clampPosition } from '@xyflow/system' import type { Actions, CoordinateExtent, @@ -9,7 +10,7 @@ import type { State, XYPosition, } from '../types' -import { ErrorCode, VueFlowError, clampPosition, isParentSelected } from '.' +import { ErrorCode, VueFlowError, isParentSelected } from '.' export function hasSelector(target: Element, selector: string, node: Element): boolean { let current = target diff --git a/packages/core/src/utils/graph.ts b/packages/core/src/utils/graph.ts index 97347843b..330d5a784 100644 --- a/packages/core/src/utils/graph.ts +++ b/packages/core/src/utils/graph.ts @@ -4,7 +4,6 @@ import type { Actions, Box, Connection, - CoordinateExtent, DefaultEdgeOptions, Dimensions, Edge, @@ -46,13 +45,6 @@ export function getDimensions(node: HTMLElement): Dimensions { } } -export function clampPosition(position: XYPosition, extent: CoordinateExtent): XYPosition { - return { - x: clamp(position.x, extent[0][0], extent[1][0]), - y: clamp(position.y, extent[0][1], extent[1][1]), - } -} - export function getHostForElement(element: HTMLElement): Document { const doc = element.getRootNode() as Document From 605164e7460cb2151031a93b808e7f33b7ec3eb2 Mon Sep 17 00:00:00 2001 From: braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Tue, 16 Jul 2024 00:04:29 +0200 Subject: [PATCH 03/17] refactor(core): replace `getDimensions` Signed-off-by: braks <78412429+bcakmakoglu@users.noreply.github.com> --- packages/core/src/components/Handle/Handle.vue | 3 ++- packages/core/src/composables/useResizeHandler.ts | 3 ++- packages/core/src/store/actions.ts | 3 +-- packages/core/src/utils/graph.ts | 8 -------- packages/core/src/utils/node.ts | 2 +- 5 files changed, 6 insertions(+), 13 deletions(-) diff --git a/packages/core/src/components/Handle/Handle.vue b/packages/core/src/components/Handle/Handle.vue index aa67fac0e..4d1181b9d 100644 --- a/packages/core/src/components/Handle/Handle.vue +++ b/packages/core/src/components/Handle/Handle.vue @@ -1,9 +1,10 @@