@xyflow/vue 2.0.0-next.1 → 2.0.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Align, AriaLabelConfig, AriaLabelConfig as AriaLabelConfig$1, ColorMode, ColorMode as ColorMode$1, ColorModeClass, Connection, Connection as Connection$1, ConnectionLineType, ConnectionLineType as ConnectionLineType$1, ConnectionMode, ConnectionMode as ConnectionMode$1, ControlLinePosition, ControlLinePosition as ControlLinePosition$1, ControlPosition, ControlPosition as ControlPosition$1, CoordinateExtent, CoordinateExtent as CoordinateExtent$1, Dimensions, Dimensions as Dimensions$1, DistributivePick, EdgeBase, EdgeRemoveChange, EdgeRemoveChange as EdgeRemoveChange$1, EdgeSelectionChange, EdgeSelectionChange as EdgeSelectionChange$1, FinalConnectionState, FinalConnectionState as FinalConnectionState$1, FitViewOptionsBase, FitViewOptionsBase as FitViewOptions, GetViewport, GetViewport as GetViewport$1, HandleType, HandleType as HandleType$1, InternalNodeBase, NodeBase, NodeConnection, NodeConnection as NodeConnection$1, NodeDimensionChange, NodeDimensionChange as NodeDimensionChange$1, NodePositionChange, NodePositionChange as NodePositionChange$1, NodeRemoveChange, NodeRemoveChange as NodeRemoveChange$1, NodeSelectionChange, NodeSelectionChange as NodeSelectionChange$1, Padding, Padding as Padding$1, PaddingUnit, PaddingWithUnit, PanOnScrollMode, PanOnScrollMode as PanOnScrollMode$1, PanZoomInstance, PanelPosition, Position, Position as Position$1, Project, Project as Project$1, Rect, Rect as Rect$1, ResizeControlVariant, ResizeControlVariant as ResizeControlVariant$1, ResizeControlVariant as ResizeControlVariant$2, ResizeDragEvent, ResizeDragEvent as ResizeDragEvent$1, ResizeParams, ResizeParams as ResizeParams$1, ResizeParamsWithDirection, ResizeParamsWithDirection as ResizeParamsWithDirection$1, SelectionMode, SelectionMode as SelectionMode$1, SelectionRect, SelectionRect as SelectionRect$1, SetCenter, SetCenter as SetCenter$1, SetCenterOptions, SetViewport, SetViewport as SetViewport$1, ShouldResize, ShouldResize as ShouldResize$1, SnapGrid, SnapGrid as SnapGrid$1, Transform, Viewport, Viewport as Viewport$1, ViewportHelperFunctionOptions, ViewportHelperFunctionOptions as ViewportHelperFunctionOptions$1, XYPosition, XYPosition as XYPosition$1, ZIndexMode, ZIndexMode as ZIndexMode$1, ZoomInOut, ZoomInOut as ZoomInOut$1, ZoomTo, ZoomTo as ZoomTo$1, clamp, getBezierEdgeCenter, getBezierPath, getBoundsOfBoxes, getBoundsOfRects, getConnectedEdges, getConnectionStatus, getIncomers, getMarkerId, getNodesBounds, getNodesInside, getOutgoers, getSmoothStepPath, getStraightPath, getViewportForBounds, isEdgeBase, isInternalNodeBase, isMacOs, isNodeBase, pointToRendererPoint, rendererPointToPoint } from "@xyflow/system";
1
+ import { Align, AriaLabelConfig, AriaLabelConfig as AriaLabelConfig$1, ColorMode, ColorMode as ColorMode$1, Connection, Connection as Connection$1, ConnectionLineType, ConnectionLineType as ConnectionLineType$1, ConnectionMode, ConnectionMode as ConnectionMode$1, ControlLinePosition, ControlLinePosition as ControlLinePosition$1, ControlPosition, ControlPosition as ControlPosition$1, CoordinateExtent, CoordinateExtent as CoordinateExtent$1, Dimensions, Dimensions as Dimensions$1, DistributivePick, EdgeBase, EdgeRemoveChange, EdgeRemoveChange as EdgeRemoveChange$1, EdgeSelectionChange, EdgeSelectionChange as EdgeSelectionChange$1, FinalConnectionState, FinalConnectionState as FinalConnectionState$1, FitViewOptionsBase, FitViewOptionsBase as FitViewOptions, GetViewport, GetViewport as GetViewport$1, HandleType, HandleType as HandleType$1, InternalNodeBase, NodeBase, NodeConnection, NodeConnection as NodeConnection$1, NodeDimensionChange, NodeDimensionChange as NodeDimensionChange$1, NodePositionChange, NodePositionChange as NodePositionChange$1, NodeRemoveChange, NodeRemoveChange as NodeRemoveChange$1, NodeSelectionChange, NodeSelectionChange as NodeSelectionChange$1, Padding, Padding as Padding$1, PaddingUnit, PaddingWithUnit, PanOnScrollMode, PanOnScrollMode as PanOnScrollMode$1, PanZoomInstance, PanelPosition, Position, Position as Position$1, Project, Project as Project$1, Rect, Rect as Rect$1, ResizeControlVariant, ResizeControlVariant as ResizeControlVariant$1, ResizeControlVariant as ResizeControlVariant$2, ResizeDragEvent, ResizeDragEvent as ResizeDragEvent$1, ResizeParams, ResizeParams as ResizeParams$1, ResizeParamsWithDirection, ResizeParamsWithDirection as ResizeParamsWithDirection$1, SelectionMode, SelectionMode as SelectionMode$1, SelectionRect, SelectionRect as SelectionRect$1, SetCenter, SetCenter as SetCenter$1, SetCenterOptions, SetViewport, SetViewport as SetViewport$1, ShouldResize, ShouldResize as ShouldResize$1, SnapGrid, SnapGrid as SnapGrid$1, Transform, Viewport, Viewport as Viewport$1, ViewportHelperFunctionOptions, ViewportHelperFunctionOptions as ViewportHelperFunctionOptions$1, XYPosition, XYPosition as XYPosition$1, ZIndexMode, ZIndexMode as ZIndexMode$1, ZoomInOut, ZoomInOut as ZoomInOut$1, ZoomTo, ZoomTo as ZoomTo$1, clamp, getBezierEdgeCenter, getBezierPath, getBoundsOfBoxes, getBoundsOfRects, getConnectedEdges, getConnectionStatus, getIncomers, getMarkerId, getNodesBounds, getNodesInside, getOutgoers, getSmoothStepPath, getStraightPath, getViewportForBounds, isEdgeBase, isInternalNodeBase, isMacOs, isNodeBase, pointToRendererPoint, rendererPointToPoint } from "@xyflow/system";
2
2
  import { CSSProperties, Component, ComputedRef, DefineComponent, HTMLAttributes, InjectionKey, MaybeRefOrGetter, SVGAttributes, ToRefs, VNode } from "vue";
3
3
  import { KeyFilter } from "@vueuse/core";
4
4
 
@@ -671,7 +671,6 @@ interface State<NodeType extends Node = Node, EdgeType extends Edge = Edge> exte
671
671
  translateExtent: CoordinateExtent$1;
672
672
  nodeExtent: CoordinateExtent$1;
673
673
  nodeOrigin: NodeOrigin;
674
- colorMode: ColorMode$1;
675
674
  /** viewport dimensions - do not change! */
676
675
  readonly dimensions: Dimensions$1;
677
676
  /** canonical viewport transform `[x, y, zoom]` (the `@xyflow/system` representation) - do not change! Read `viewport` for the `{ x, y, zoom }` shape. */
@@ -1212,8 +1211,8 @@ interface FlowProps<NodeType extends Node = Node, EdgeType extends Edge = Edge>
1212
1211
  nodeExtent?: CoordinateExtent$1;
1213
1212
  /** origin of all nodes relative to their position — `[0, 0]` top-left, `[0.5, 0.5]` center, `[1, 1]` bottom-right */
1214
1213
  nodeOrigin?: NodeOrigin;
1215
- /** light/dark/system applies the resolved `light`/`dark` class to the flow container; `system` follows `prefers-color-scheme` @default 'light' */
1216
- colorMode?: ColorMode$1;
1214
+ /** Forces a color scheme on the flow container via class name. Page-level theming is typically done by setting `data-theme` on `<html>`. */
1215
+ forceColorMode?: ColorMode$1;
1217
1216
  /** color of edge markers; pass `null` to drive the arrowhead color from the `--xy-edge-stroke` CSS variable @default '#b1b1b7' */
1218
1217
  defaultMarkerColor?: string | null;
1219
1218
  zoomOnScroll?: boolean;
@@ -1359,14 +1358,14 @@ interface FlowEmits<NodeType extends Node = Node, EdgeType extends Edge = Edge>
1359
1358
  nodeDrag: [nodeDragEvent: NodeDragEvent<NodeType>];
1360
1359
  nodeDragStop: [nodeDragEvent: NodeDragEvent<NodeType>];
1361
1360
  }
1362
- type NodeByType<NodeType extends Node, T extends string> = NodeType extends any ? (T extends NonNullable<NodeType['type']> ? NodeType : never) : never;
1363
- type EdgeByType<EdgeType extends Edge, T extends string> = EdgeType extends any ? (T extends NonNullable<EdgeType['type']> ? EdgeType : never) : never;
1361
+ type NodeByType<NodeType extends Node, T extends string> = NodeType extends any ? T extends NonNullable<NodeType['type']> ? NodeType : never : never;
1362
+ type EdgeByType<EdgeType extends Edge, T extends string> = EdgeType extends any ? T extends NonNullable<EdgeType['type']> ? EdgeType : never : never;
1364
1363
  type NodeSlots<NodeType extends Node = Node> = Partial<{ [T in NonNullable<NodeType['type']> as `node-${T}`]: (nodeProps: NodeProps<NodeByType<NodeType, T>>) => any } & Record<`node-${string}`, (nodeProps: NodeProps<NodeType>) => any>>;
1365
1364
  type EdgeSlots<EdgeType extends Edge = Edge> = Partial<{ [T in NonNullable<EdgeType['type']> as `edge-${T}`]: (edgeProps: EdgeProps<EdgeByType<EdgeType, T>>) => any } & Record<`edge-${string}`, (edgeProps: EdgeProps<EdgeType>) => any>>;
1366
1365
  type FlowSlots<NodeType extends Node = Node, EdgeType extends Edge = Edge> = NodeSlots<NodeType> & EdgeSlots<EdgeType> & {
1367
1366
  'connection-line'?: (connectionLineProps: ConnectionLineProps<NodeType>) => any;
1368
1367
  'zoom-pane'?: () => any;
1369
- 'default'?: () => any;
1368
+ default?: () => any;
1370
1369
  };
1371
1370
  //#endregion
1372
1371
  //#region src/types/node.d.ts
@@ -2204,5 +2203,5 @@ declare const NodeId: InjectionKey<string>;
2204
2203
  declare const defaultNodeTypes: DefaultNodeTypes;
2205
2204
  declare const defaultEdgeTypes: DefaultEdgeTypes;
2206
2205
  //#endregion
2207
- export { Actions, AddEdges, AddNodes, type Align, type AriaLabelConfig, _default as Background, BackgroundProps, BackgroundVariant, _default$1 as BaseEdge, BaseEdgeProps, BezierEdge, BezierEdgeProps, BezierEdgeType, BezierPathOptions, BuiltInNode, CSSVars, ClassValue, type ColorMode, type ColorModeClass, ComputedGetters, ConnectEndEvent, ConnectingHandle, type Connection, ConnectionInProgress, ConnectionLineOptions, ConnectionLineProps, ConnectionLineType, ConnectionLookup, ConnectionMode, ConnectionState, ConnectionStatus, Connector, _default$2 as ControlButton, ControlEmits, type ControlLinePosition, type ControlPosition, ControlProps, _default$3 as Controls, type CoordinateExtent, CustomThemeVars, DefaultEdge, DefaultEdgeOptions, DefaultEdgeTypes, DefaultNodeTypes, DeleteElements, type Dimensions, Edge, EdgeAddChange, EdgeChange, EdgeComponent, EdgeEventsHandler, EdgeEventsOn, EdgeLabelOptions, _default$4 as EdgeLabelRenderer, EdgeLookup, EdgeMarker, EdgeMarkerType, EdgeMouseEvent, EdgePositions, EdgeProps, EdgeReconnectEndEvent, EdgeReconnectEvent, EdgeReconnectStartEvent, EdgeReconnectable, type EdgeRemoveChange, type EdgeSelectionChange, EdgeSlots, _default$5 as EdgeText, EdgeTextProps, EdgeTypesObject, ElementChange, ErrorCode, type FinalConnectionState, FitBounds, FitBoundsOptions, FitView, type FitViewOptions, FlowEmits, FlowEvents, FlowExportObject, FlowHooks, FlowHooksEmit, FlowHooksOn, FlowOptions, FlowProps, FlowSlots, GetEdge, GetInternalNode, GetIntersectingNodes, GetNode, type GetViewport, Getters, _default$6 as Handle, HandleConnectable, HandleConnectableFunc, HandleElement, HandleProps, type HandleType, InternalNode, IsNodeIntersecting, IsValidParams, MarkerProps, MarkerType, _default$7 as MiniMap, MiniMapEmits, _default$8 as MiniMapNode, MiniMapNodeEmits, MiniMapNodeFunc, MiniMapNodeProps, MiniMapProps, MiniMapSlots, MouseTouchEvent, NoConnection, Node, NodeAddChange, NodeChange, NodeComponent, type NodeConnection, type NodeDimensionChange, NodeDragEvent, NodeDragItem, NodeEventsHandler, NodeEventsOn, NodeHandleBounds, NodeId as NodeIdInjection, NodeLookup, NodeMouseEvent, NodeOrigin, type NodePositionChange, NodeProps, type NodeRemoveChange, _default$9 as NodeResizeControl, _default$10 as NodeResizer, NodeResizerEmits, NodeResizerProps, type NodeSelectionChange, NodeSlots, _default$11 as NodeToolbar, NodeToolbarProps, NodeTypesObject, OnBeforeDelete, OnConnectStartParams, OnResize, OnResizeEnd, OnResizeStart, type Padding, type PaddingUnit, type PaddingWithUnit, PanOnScrollMode, _default$12 as Panel, PanelProps, Position, type Project, ReconnectEdge, type Rect, RemoveEdges, RemoveNodes, ResizeControlLineProps, ResizeControlProps, ResizeControlVariant, type ResizeDragEvent, type ResizeParams, type ResizeParamsWithDirection, Result, SelectionChangeEvent, SelectionMode, type SelectionRect, type SetCenter, type SetCenterOptions, SetEdges, SetNodes, SetState, SetStateOptions, type SetViewport, ShapeRendering, type ShouldResize, SimpleBezierEdge, SimpleBezierEdgeProps, Slots, SmoothStepEdge, SmoothStepEdgeProps, SmoothStepEdgeType, SmoothStepPathOptions, type SnapGrid, State, StepEdge, StepEdgeProps, StraightEdge, StraightEdgeProps, Styles, ThemeVars, UpdateEdge, UpdateEdgeData, UpdateNode, UpdateNodeData, UpdateNodeDimensions, UpdateNodeDimensionsParams, UpdateNodeInternals, UpdateNodePosition, ValidConnectionFunc, type Viewport, ViewportFunctions, type ViewportHelperFunctionOptions, _default$13 as VueFlow, VueFlowError, VueFlow as VueFlowInjection, VueFlowInstance, _default$14 as VueFlowProvider, VueFlowState, VueFlowStoreHandle, type XYPosition, type ZIndexMode, type ZoomInOut, type ZoomTo, applyChanges, applyEdgeChanges, applyNodeChanges, clamp, connectionExists, defaultEdgeTypes, defaultNodeTypes, getBezierEdgeCenter, getBezierPath, getBoundsOfBoxes, getBoundsOfRects, getConnectedEdges, getConnectionStatus, getIncomers, getMarkerId, getNodesBounds, getNodesInside, getOutgoers, getSimpleBezierPath, getSmoothStepPath, getStraightPath, getViewportForBounds, isEdge, isEdgeBase, isErrorOfType, isInternalNode, isInternalNodeBase, isMacOs, isNode, isNodeBase, pointToRendererPoint, rendererPointToPoint, storeToRefs, useConnection, useEdge, useEdgesData, useHandle, useInternalNode, useKeyPress, useNode, useNodeConnections, useNodeId, useNodesData, useNodesInitialized, useStore, useVueFlow };
2206
+ export { Actions, AddEdges, AddNodes, type Align, type AriaLabelConfig, _default as Background, BackgroundProps, BackgroundVariant, _default$1 as BaseEdge, BaseEdgeProps, BezierEdge, BezierEdgeProps, BezierEdgeType, BezierPathOptions, BuiltInNode, CSSVars, ClassValue, type ColorMode, ComputedGetters, ConnectEndEvent, ConnectingHandle, type Connection, ConnectionInProgress, ConnectionLineOptions, ConnectionLineProps, ConnectionLineType, ConnectionLookup, ConnectionMode, ConnectionState, ConnectionStatus, Connector, _default$2 as ControlButton, ControlEmits, type ControlLinePosition, type ControlPosition, ControlProps, _default$3 as Controls, type CoordinateExtent, CustomThemeVars, DefaultEdge, DefaultEdgeOptions, DefaultEdgeTypes, DefaultNodeTypes, DeleteElements, type Dimensions, Edge, EdgeAddChange, EdgeChange, EdgeComponent, EdgeEventsHandler, EdgeEventsOn, EdgeLabelOptions, _default$4 as EdgeLabelRenderer, EdgeLookup, EdgeMarker, EdgeMarkerType, EdgeMouseEvent, EdgePositions, EdgeProps, EdgeReconnectEndEvent, EdgeReconnectEvent, EdgeReconnectStartEvent, EdgeReconnectable, type EdgeRemoveChange, type EdgeSelectionChange, EdgeSlots, _default$5 as EdgeText, EdgeTextProps, EdgeTypesObject, ElementChange, ErrorCode, type FinalConnectionState, FitBounds, FitBoundsOptions, FitView, type FitViewOptions, FlowEmits, FlowEvents, FlowExportObject, FlowHooks, FlowHooksEmit, FlowHooksOn, FlowOptions, FlowProps, FlowSlots, GetEdge, GetInternalNode, GetIntersectingNodes, GetNode, type GetViewport, Getters, _default$6 as Handle, HandleConnectable, HandleConnectableFunc, HandleElement, HandleProps, type HandleType, InternalNode, IsNodeIntersecting, IsValidParams, MarkerProps, MarkerType, _default$7 as MiniMap, MiniMapEmits, _default$8 as MiniMapNode, MiniMapNodeEmits, MiniMapNodeFunc, MiniMapNodeProps, MiniMapProps, MiniMapSlots, MouseTouchEvent, NoConnection, Node, NodeAddChange, NodeChange, NodeComponent, type NodeConnection, type NodeDimensionChange, NodeDragEvent, NodeDragItem, NodeEventsHandler, NodeEventsOn, NodeHandleBounds, NodeId as NodeIdInjection, NodeLookup, NodeMouseEvent, NodeOrigin, type NodePositionChange, NodeProps, type NodeRemoveChange, _default$9 as NodeResizeControl, _default$10 as NodeResizer, NodeResizerEmits, NodeResizerProps, type NodeSelectionChange, NodeSlots, _default$11 as NodeToolbar, NodeToolbarProps, NodeTypesObject, OnBeforeDelete, OnConnectStartParams, OnResize, OnResizeEnd, OnResizeStart, type Padding, type PaddingUnit, type PaddingWithUnit, PanOnScrollMode, _default$12 as Panel, PanelProps, Position, type Project, ReconnectEdge, type Rect, RemoveEdges, RemoveNodes, ResizeControlLineProps, ResizeControlProps, ResizeControlVariant, type ResizeDragEvent, type ResizeParams, type ResizeParamsWithDirection, Result, SelectionChangeEvent, SelectionMode, type SelectionRect, type SetCenter, type SetCenterOptions, SetEdges, SetNodes, SetState, SetStateOptions, type SetViewport, ShapeRendering, type ShouldResize, SimpleBezierEdge, SimpleBezierEdgeProps, Slots, SmoothStepEdge, SmoothStepEdgeProps, SmoothStepEdgeType, SmoothStepPathOptions, type SnapGrid, State, StepEdge, StepEdgeProps, StraightEdge, StraightEdgeProps, Styles, ThemeVars, UpdateEdge, UpdateEdgeData, UpdateNode, UpdateNodeData, UpdateNodeDimensions, UpdateNodeDimensionsParams, UpdateNodeInternals, UpdateNodePosition, ValidConnectionFunc, type Viewport, ViewportFunctions, type ViewportHelperFunctionOptions, _default$13 as VueFlow, VueFlowError, VueFlow as VueFlowInjection, VueFlowInstance, _default$14 as VueFlowProvider, VueFlowState, VueFlowStoreHandle, type XYPosition, type ZIndexMode, type ZoomInOut, type ZoomTo, applyChanges, applyEdgeChanges, applyNodeChanges, clamp, connectionExists, defaultEdgeTypes, defaultNodeTypes, getBezierEdgeCenter, getBezierPath, getBoundsOfBoxes, getBoundsOfRects, getConnectedEdges, getConnectionStatus, getIncomers, getMarkerId, getNodesBounds, getNodesInside, getOutgoers, getSimpleBezierPath, getSmoothStepPath, getStraightPath, getViewportForBounds, isEdge, isEdgeBase, isErrorOfType, isInternalNode, isInternalNodeBase, isMacOs, isNode, isNodeBase, pointToRendererPoint, rendererPointToPoint, storeToRefs, useConnection, useEdge, useEdgesData, useHandle, useInternalNode, useKeyPress, useNode, useNodeConnections, useNodeId, useNodesData, useNodesInitialized, useStore, useVueFlow };
2208
2207
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -645,39 +645,6 @@ function createExtendedEventHook(defaultHandler) {
645
645
  };
646
646
  }
647
647
  //#endregion
648
- //#region src/utils/drag.ts
649
- function getParentExtent(parent) {
650
- if (parent && typeof parent.internals.positionAbsolute.x !== "undefined" && typeof parent.internals.positionAbsolute.y !== "undefined" && typeof parent.measured.width !== "undefined" && typeof parent.measured.height !== "undefined") return [[parent.internals.positionAbsolute.x, parent.internals.positionAbsolute.y], [parent.internals.positionAbsolute.x + parent.measured.width, parent.internals.positionAbsolute.y + parent.measured.height]];
651
- return false;
652
- }
653
- function getExtent(item, triggerError, extent, parent) {
654
- let currentExtent = item.extent || extent;
655
- if (currentExtent === "parent" && !item.expandParent) if (item.parentId && parent && item.measured.width && item.measured.height) {
656
- const parentExtent = getParentExtent(parent);
657
- if (parentExtent) currentExtent = parentExtent;
658
- } else {
659
- triggerError(new VueFlowError("NODE_EXTENT_INVALID", item.id));
660
- currentExtent = extent;
661
- }
662
- else if (Array.isArray(currentExtent)) {
663
- const parentX = parent?.internals.positionAbsolute.x || 0;
664
- const parentY = parent?.internals.positionAbsolute.y || 0;
665
- currentExtent = [[currentExtent[0][0] + parentX, currentExtent[0][1] + parentY], [currentExtent[1][0] + parentX, currentExtent[1][1] + parentY]];
666
- }
667
- return currentExtent === "parent" ? [[Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY], [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY]] : currentExtent;
668
- }
669
- function calcNextPosition(node, nextPosition, triggerError, nodeExtent, parentNode) {
670
- const measured = (0, _xyflow_system.getNodeDimensions)(node);
671
- const clampedPos = (0, _xyflow_system.clampPosition)(nextPosition, getExtent(node, triggerError, nodeExtent, parentNode), measured);
672
- return {
673
- position: {
674
- x: clampedPos.x - (parentNode?.internals.positionAbsolute.x || 0),
675
- y: clampedPos.y - (parentNode?.internals.positionAbsolute.y || 0)
676
- },
677
- computedPosition: clampedPos
678
- };
679
- }
680
- //#endregion
681
648
  //#region src/utils/edge.ts
682
649
  function getEdgeHandle(bounds, handleId) {
683
650
  if (!bounds) return null;
@@ -1414,7 +1381,7 @@ function useNode(id) {
1414
1381
  * @internal
1415
1382
  */
1416
1383
  function useUpdateNodePositions() {
1417
- const { getSelectedNodes, updateNodePositions, getInternalNode, emits } = useVueFlow();
1384
+ const { getSelectedNodes, updateNodePositions, getInternalNode } = useVueFlow();
1418
1385
  const store = useStore();
1419
1386
  return (positionDiff, isShiftPressed = false) => {
1420
1387
  const xVelo = store.snapToGrid ? store.snapGrid[0] : 5;
@@ -1426,10 +1393,18 @@ function useUpdateNodePositions() {
1426
1393
  for (const node of getSelectedNodes.value) if (node.draggable || store.nodesDraggable && typeof node.draggable === "undefined") {
1427
1394
  const internalNode = getInternalNode(node.id);
1428
1395
  if (!internalNode) continue;
1429
- const { position } = calcNextPosition(internalNode, {
1396
+ let nextPosition = {
1430
1397
  x: internalNode.internals.positionAbsolute.x + positionDiffX,
1431
1398
  y: internalNode.internals.positionAbsolute.y + positionDiffY
1432
- }, emits.error, store.nodeExtent, node.parentId ? getInternalNode(node.parentId) : void 0);
1399
+ };
1400
+ if (store.snapToGrid) nextPosition = (0, _xyflow_system.snapPosition)(nextPosition, store.snapGrid);
1401
+ const { position, positionAbsolute } = (0, _xyflow_system.calculateNodePosition)({
1402
+ nodeId: node.id,
1403
+ nextPosition,
1404
+ nodeLookup: store.nodeLookup,
1405
+ nodeExtent: store.nodeExtent,
1406
+ nodeOrigin: store.nodeOrigin
1407
+ });
1433
1408
  nodeUpdates.push({
1434
1409
  id: node.id,
1435
1410
  position,
@@ -1438,10 +1413,7 @@ function useUpdateNodePositions() {
1438
1413
  y: positionDiff.y
1439
1414
  },
1440
1415
  measured: (0, _xyflow_system.getNodeDimensions)(internalNode),
1441
- internals: { positionAbsolute: {
1442
- x: internalNode.internals.positionAbsolute.x,
1443
- y: internalNode.internals.positionAbsolute.y
1444
- } }
1416
+ internals: { positionAbsolute }
1445
1417
  });
1446
1418
  }
1447
1419
  updateNodePositions(nodeUpdates, true, false);
@@ -4034,23 +4006,6 @@ function _sfc_render$11(_ctx, _cache, $props, $setup, $data, $options) {
4034
4006
  }
4035
4007
  var A11yDescriptions_default = /* @__PURE__ */ export_helper_default(_sfc_main$11, [["render", _sfc_render$11], ["__file", "/Users/moritz/xyflow/xyflow/packages/vue/src/components/A11y/A11yDescriptions.vue"]]);
4036
4008
  //#endregion
4037
- //#region src/composables/useColorModeClass.ts
4038
- /**
4039
- * Resolves the `colorMode` prop to the `light`/`dark` class applied to the flow container, tracking
4040
- * `prefers-color-scheme` reactively when `colorMode` is `system` (matching xyflow/react+svelte).
4041
- *
4042
- * Takes the state explicitly because it runs inside `<VueFlow>`'s own setup; defaults to `useStore()`.
4043
- *
4044
- * @internal
4045
- */
4046
- function useColorModeClass(state = useStore()) {
4047
- const prefersDark = (0, _vueuse_core.useMediaQuery)("(prefers-color-scheme: dark)");
4048
- return (0, vue.computed)(() => {
4049
- if (state.colorMode === "system") return prefersDark.value ? "dark" : "light";
4050
- return state.colorMode;
4051
- });
4052
- }
4053
- //#endregion
4054
4009
  //#region src/store/hooks.ts
4055
4010
  function createHooks() {
4056
4011
  return {
@@ -4168,7 +4123,6 @@ function useState() {
4168
4123
  translateExtent: [[Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY], [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY]],
4169
4124
  nodeExtent: [[Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY], [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY]],
4170
4125
  nodeOrigin: [0, 0],
4171
- colorMode: "light",
4172
4126
  selectionMode: _xyflow_system.SelectionMode.Full,
4173
4127
  paneDragging: false,
4174
4128
  preventScrolling: true,
@@ -4333,7 +4287,7 @@ function useActions(state, nodeLookup, parentLookup, edgeLookup) {
4333
4287
  for (const id of rawEdgeLookup.keys()) if (!nextIds.has(id)) edgeLookup.delete(id);
4334
4288
  }
4335
4289
  state.edges = next;
4336
- updateConnectionLookup(state.connectionLookup, state.edges);
4290
+ updateConnectionLookup(state.connectionLookup, next);
4337
4291
  }
4338
4292
  /**
4339
4293
  * Recompute parent-aware `internals.positionAbsolute` on the system lookup, then mirror into the
@@ -7109,7 +7063,7 @@ const _sfc_main$1 = /* @__PURE__ */ (0, vue.defineComponent)({
7109
7063
  type: Array,
7110
7064
  required: false
7111
7065
  },
7112
- colorMode: {
7066
+ forceColorMode: {
7113
7067
  type: String,
7114
7068
  required: false,
7115
7069
  default: void 0
@@ -7361,7 +7315,6 @@ const _sfc_main$1 = /* @__PURE__ */ (0, vue.defineComponent)({
7361
7315
  useOnInitHandler(instance);
7362
7316
  useSelectionChange(instance);
7363
7317
  useStylesLoadedWarning(instance);
7364
- const colorModeClass = useColorModeClass(state);
7365
7318
  useViewportSync(modelViewport, state);
7366
7319
  const stateRefs = storeToRefs(state);
7367
7320
  (0, vue.provide)(Slots$1, slots);
@@ -7380,7 +7333,6 @@ const _sfc_main$1 = /* @__PURE__ */ (0, vue.defineComponent)({
7380
7333
  instance,
7381
7334
  state,
7382
7335
  disposeWatchers,
7383
- colorModeClass,
7384
7336
  stateRefs,
7385
7337
  A11yDescriptions: A11yDescriptions_default,
7386
7338
  ZoomPane: ZoomPane_default
@@ -7395,7 +7347,7 @@ const _sfc_main$1 = /* @__PURE__ */ (0, vue.defineComponent)({
7395
7347
  function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
7396
7348
  return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
7397
7349
  ref: $setup.stateRefs.vueFlowRef,
7398
- class: (0, vue.normalizeClass)(["vue-flow", $setup.colorModeClass])
7350
+ class: (0, vue.normalizeClass)(["vue-flow", $setup.props.forceColorMode])
7399
7351
  }, [
7400
7352
  (0, vue.createCommentVNode)(" the `zoom-pane` slot (affected by zooming & panning) renders inside the transformed Viewport via\n the provided `Slots` (see ZoomPaneSlot), not drilled through ZoomPane → Pane → Viewport "),
7401
7353
  (0, vue.createVNode)($setup["ZoomPane"]),