@vue-dnd-kit/core 2.0.0-alpha6 → 2.0.0-alpha8

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.
@@ -1,3 +1,4 @@
1
+ import { IDnDProviderProps } from '../types/provider';
1
2
  declare function __VLS_template(): {
2
3
  attrs: Partial<{}>;
3
4
  slots: {
@@ -12,7 +13,7 @@ declare function __VLS_template(): {
12
13
  rootEl: any;
13
14
  };
14
15
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
15
- declare const __VLS_component: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {
16
+ declare const __VLS_component: import('vue').DefineComponent<IDnDProviderProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<IDnDProviderProps> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
16
17
  overlayRef: HTMLDivElement;
17
18
  }, any>;
18
19
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
@@ -0,0 +1,13 @@
1
+ import { Ref } from 'vue';
2
+ import { IAutoScrollOptions } from '../types';
3
+ export type { IAutoScrollOptions };
4
+ /**
5
+ * Auto-scroll when the drag overlay is near container edges. Element scroll only.
6
+ *
7
+ * @param container - Ref to the scrollable element
8
+ * @param options - threshold, speed, disabled
9
+ * @returns { isScrolling }
10
+ */
11
+ export declare const makeAutoScroll: (container: Ref<HTMLElement | null>, options?: IAutoScrollOptions) => {
12
+ isScrolling: import('vue').ShallowRef<boolean, boolean>;
13
+ };
@@ -1,15 +1,17 @@
1
1
  import { IBaseOptions, IDragActivationOptions, IDraggableEvents, IModifierOptions, IPlacementMargins, TDnDNodeRef, TDraggablePayload } from '../types';
2
- import { Component, Ref } from 'vue';
2
+ import { Component, ComputedRef, Ref, WritableComputedRef } from 'vue';
3
3
  interface IMakeDraggableOptions extends IBaseOptions {
4
4
  events?: IDraggableEvents;
5
5
  modifier?: IModifierOptions;
6
6
  render?: Component;
7
7
  dragHandle?: string | Ref<string>;
8
8
  activation?: IDragActivationOptions;
9
- /** Margins for center zone. When pointer in center and element is also droppable, zone mode is used. */
10
9
  placementMargins?: IPlacementMargins;
11
10
  }
12
11
  interface IMakeDraggableReturnType {
12
+ selected: WritableComputedRef<boolean>;
13
+ isDragging: ComputedRef<boolean>;
14
+ isAllowed: ComputedRef<boolean>;
13
15
  }
14
16
  export declare function makeDraggable(ref: TDnDNodeRef, payload?: TDraggablePayload): IMakeDraggableReturnType;
15
17
  export declare function makeDraggable(ref: TDnDNodeRef, options: IMakeDraggableOptions, payload?: TDraggablePayload): IMakeDraggableReturnType;
@@ -1,8 +1,12 @@
1
1
  import { IBaseOptions, IDroppableEvents, TDnDNodeRef, TDroppablePayload } from '../types';
2
+ import { ComputedRef } from 'vue';
2
3
  interface IMakeDroppableOptions extends IBaseOptions {
3
4
  events?: IDroppableEvents;
4
5
  }
5
- export declare function makeDroppable(ref: TDnDNodeRef): void;
6
- export declare function makeDroppable(ref: TDnDNodeRef, options: IMakeDroppableOptions, payload?: TDroppablePayload): void;
7
- export declare function makeDroppable(ref: TDnDNodeRef, payload: TDroppablePayload): void;
6
+ interface IMakeDroppableReturnType {
7
+ isAllowed: ComputedRef<boolean>;
8
+ }
9
+ export declare function makeDroppable(ref: TDnDNodeRef): IMakeDroppableReturnType;
10
+ export declare function makeDroppable(ref: TDnDNodeRef, options: IMakeDroppableOptions, payload?: TDroppablePayload): IMakeDroppableReturnType;
11
+ export declare function makeDroppable(ref: TDnDNodeRef, payload: TDroppablePayload): IMakeDroppableReturnType;
8
12
  export {};
@@ -0,0 +1,20 @@
1
+ import { ComputedRef } from 'vue';
2
+ import { ICoordinates } from '@vue-dnd-kit/core';
3
+ /** Per-axis grid (no grid = step 1, no snap) */
4
+ export type TSnapOverlayOptions = {
5
+ grid: number;
6
+ gridX?: never;
7
+ gridY?: never;
8
+ } | {
9
+ grid?: never;
10
+ gridX: number;
11
+ gridY: number;
12
+ };
13
+ /**
14
+ * Returns a computed that maps overlay position (x, y) to grid‑snapped coordinates.
15
+ * Core keeps writing raw coordinates; use this for overlay display only.
16
+ *
17
+ * @param options - grid (or gridX / gridY)
18
+ * @returns ComputedRef<ICoordinates> — use for --position-x / --position-y in overlay
19
+ */
20
+ export declare function makeSnappedOverlayPosition(position: ComputedRef<ICoordinates>, options?: TSnapOverlayOptions): ComputedRef<ICoordinates>;
@@ -8,4 +8,6 @@ export { makeSelectionArea } from './composables/makeSelectionArea';
8
8
  export { makeConstraintArea } from './composables/makeConstraintArea';
9
9
  export { makeDroppable } from './composables/makeDroppable';
10
10
  export { useDnDProvider } from './composables/useDnDProvider';
11
+ export { makeAutoScroll, type IAutoScrollOptions, } from './composables/makeAutoScroll';
12
+ export { makeSnappedOverlayPosition, type TSnapOverlayOptions, } from './composables/makeSnappedOverlayPosition';
11
13
  export type * from './types';
@@ -47,6 +47,9 @@ export interface IEntities {
47
47
  modifiersDraggableSet: ComputedRef<Set<HTMLElement>>;
48
48
  modifiersSelectableAreaSet: ComputedRef<Set<HTMLElement>>;
49
49
 
50
+ allowedDroppableSet: ComputedRef<Set<HTMLElement>>;
51
+ allowedDraggableSet: ComputedRef<Set<HTMLElement>>;
52
+
50
53
  visibleDraggableSet: Set<HTMLElement>;
51
54
  visibleDroppableSet: Set<HTMLElement>;
52
55
  visibleSelectableAreaSet: Set<HTMLElement>;
@@ -1,4 +1,4 @@
1
1
  export type * from './pointer';
2
2
  export type * from './provider';
3
3
  export type * from './placement';
4
- export type * from './entities'
4
+ export type * from './entities';
@@ -13,3 +13,10 @@ export interface IPlacementMargins {
13
13
  bottom?: number;
14
14
  left?: number;
15
15
  }
16
+
17
+ /** Options for makeAutoScroll and DnDProvider autoScrollViewport prop */
18
+ export interface IAutoScrollOptions {
19
+ threshold?: number | IPlacementMargins;
20
+ speed?: number;
21
+ disabled?: boolean;
22
+ }
@@ -1,9 +1,14 @@
1
1
  import { IConstraintsAreaEntity, IDragPayload, IDropZonePayload, IDraggableEntity, IDroppableEntity, IEntities, ISelectableAreaEntity, TDnDNode } from './entities';
2
2
  import { ICoordinates, TPointerState } from './pointer';
3
- import { IPlacement } from './placement';
4
- import { Component, ComputedRef, CSSProperties, Reactive, Ref, ShallowRef } from 'vue';
3
+ import { IAutoScrollOptions, IPlacement } from './placement';
4
+ import { Component, ComputedRef, CSSProperties, Reactive, Ref, ShallowRef, WritableComputedRef } from 'vue';
5
5
  /** Event object passed to drag/drop handlers */
6
- export interface IDragEvent<T = unknown, D = unknown, U = unknown, V = unknown> {
6
+ export interface IDragEvent<
7
+ T = unknown,
8
+ D = unknown,
9
+ U = unknown,
10
+ V = unknown,
11
+ > {
7
12
  /** Payload from the dragged item (draggable payload) */
8
13
  payload: IDragPayload<T, D> | undefined;
9
14
  /** Payload from the drop zone (droppable payload), set for onEnter/onDrop/onLeave */
@@ -40,9 +45,10 @@ export interface IDnDProviderExternal {
40
45
  distanceProgress: ComputedRef<number>;
41
46
  overlay: {
42
47
  ref: Ref<HTMLElement | null>;
43
- style: ComputedRef<ICoordinates>;
48
+ position: ComputedRef<ICoordinates>;
44
49
  size: Ref<DOMRect | null>;
45
50
  render: Ref<Component | undefined>;
51
+ to: WritableComputedRef<string | false | null | undefined>;
46
52
  };
47
53
  hovered: IHovered;
48
54
  collision: {
@@ -52,6 +58,9 @@ export interface IDnDProviderExternal {
52
58
  };
53
59
  throttle: Ref<number>;
54
60
  };
61
+ autoScrollViewport: ComputedRef<
62
+ IAutoScrollOptions | true | false | null | undefined
63
+ >;
55
64
  }
56
65
 
57
66
  export interface IDelay {
@@ -65,3 +74,11 @@ export type TDnDState =
65
74
  | 'activating'
66
75
  | null
67
76
  | undefined;
77
+
78
+ /** DnDProvider props */
79
+ export interface IDnDProviderProps {
80
+ /** Enable viewport auto-scroll: true = defaults, object = options. false | null | undefined = disabled. */
81
+ autoScrollViewport?: IAutoScrollOptions | true | false | null;
82
+ /** Teleport overlay to element: 'body' = defaults, string = element id. false | null | undefined = disabled. */
83
+ overlayTo?: string | false | null;
84
+ }
@@ -1,3 +1,4 @@
1
1
  import { Ref } from 'vue';
2
+ import { IDnDProviderProps } from '../../external/types/provider';
2
3
  import { IDnDProviderInternal } from '../types/provider';
3
- export declare function useDnDProviderState(overlayRef: Ref<HTMLElement | null>): IDnDProviderInternal;
4
+ export declare function useDnDProviderState(overlayRef: Ref<HTMLElement | null>, props?: IDnDProviderProps): IDnDProviderInternal;
@@ -0,0 +1,9 @@
1
+ import { IAutoScrollOptionsInternal } from '../types/auto-scroll';
2
+ import { IDnDProviderInternal } from '../types/provider';
3
+ /**
4
+ * Internal composable: viewport (window) auto-scroll. Not exposed to user.
5
+ */
6
+ export declare function useViewportAutoScroll(provider: IDnDProviderInternal, options?: IAutoScrollOptionsInternal): {
7
+ isScrolling: import('vue').ShallowRef<boolean, boolean>;
8
+ stop: () => void;
9
+ };
@@ -1,2 +1,2 @@
1
1
  export * from './steps';
2
- export { defaultCollisionDetection } from './defaultCollision';
2
+ export { defaultCollisionDetection } from './default-collision';
@@ -1,5 +1,14 @@
1
1
  import { IBoundingBox } from '../utils/geometry';
2
2
  import { IDnDProviderInternal } from '../types/provider';
3
+ /**
4
+ * Collision detection function signature.
5
+ * Returns sorted lists of colliding elements and zones.
6
+ *
7
+ * IMPORTANT: When implementing custom sensors, use:
8
+ * - `provider.entities.allowedDroppableSet` for zones (visible + filtered by groups)
9
+ * - `provider.entities.allowedDraggableSet` for draggables (visible + filtered by groups)
10
+ * OR use helper functions from `steps.ts`: `allowedVisibleZones()` and `visibleElements()`.
11
+ */
3
12
  export type CollisionDetectionFn = (provider: IDnDProviderInternal) => {
4
13
  elements: HTMLElement[];
5
14
  zones: HTMLElement[];
@@ -4,10 +4,10 @@ import { TSortCompareFn, TFilterFn, TCollisionCheckFn, TContainerBoxFn } from '.
4
4
  export declare const overlayContainer: (p: IDnDProviderInternal) => HTMLElement | null;
5
5
  /** Box from overlay style (x,y) + size — overlay uses fixed+transform, getBoundingClientRect is wrong */
6
6
  export declare const overlayBoxFromStyle: TContainerBoxFn;
7
- /** Visible draggables */
8
- export declare const visibleElements: (p: IDnDProviderInternal) => Set<HTMLElement> & Omit<Set<HTMLElement>, keyof Set<any>>;
9
- /** Visible droppables */
10
- export declare const visibleZones: (p: IDnDProviderInternal) => Set<HTMLElement> & Omit<Set<HTMLElement>, keyof Set<any>>;
7
+ /** Allowed draggables (visible + filtered by groups) */
8
+ export declare const visibleElements: (p: IDnDProviderInternal) => Set<HTMLElement>;
9
+ /** Allowed droppables (visible + filtered by groups) */
10
+ export declare const allowedVisibleZones: (p: IDnDProviderInternal) => Set<HTMLElement>;
11
11
  /** Exclude nodes being dragged */
12
12
  export declare const filterNotDragging: TFilterFn;
13
13
  /** Exclude nodes that are descendants of any dragged element (nesting into self) */
@@ -0,0 +1,19 @@
1
+ /** Internal: options for auto-scroll controller (same shape as IAutoScrollOptions for compatibility) */
2
+ export interface IAutoScrollOptionsInternal {
3
+ threshold?: number | { top?: number; right?: number; bottom?: number; left?: number };
4
+ speed?: number;
5
+ disabled?: boolean;
6
+ }
7
+
8
+ export interface IScrollState {
9
+ scrollTop: number;
10
+ scrollLeft: number;
11
+ rect: DOMRect;
12
+ }
13
+
14
+ export interface IScrollAdapter {
15
+ getScrollState(el: HTMLElement): IScrollState;
16
+ setScroll(el: HTMLElement, scrollTop: number, scrollLeft: number): void;
17
+ }
18
+
19
+ export type TOverlayPoint = { x: number; y: number } | null;
@@ -1,5 +1,6 @@
1
1
  import { Ref } from 'vue';
2
2
  import { IDnDProviderExternal } from '../../external';
3
+ import { IAutoScrollOptions } from '../../external/types/placement';
3
4
  import { IIntersectionObserverWrapper } from './observer';
4
5
 
5
6
 
@@ -26,4 +27,4 @@ export interface IDnDProviderInternal extends IDnDProviderExternal {
26
27
  selectableAreaObserver: IIntersectionObserverWrapper;
27
28
  overlaySizeObserver: { disconnect: () => void };
28
29
  };
29
- }
30
+ }
@@ -0,0 +1,13 @@
1
+ import { IAutoScrollOptionsInternal, IScrollAdapter, TOverlayPoint } from '../types/auto-scroll';
2
+ export declare const defaultScrollAdapter: IScrollAdapter;
3
+ /**
4
+ * Creates run/stop controller for auto-scroll loop. Element scroll only (no viewport).
5
+ */
6
+ export declare function createAutoScrollController(containerRef: {
7
+ value: HTMLElement | null;
8
+ }, options: IAutoScrollOptionsInternal, getOverlayPoint: () => TOverlayPoint, scrollAdapter?: IScrollAdapter, isScrollingRef?: {
9
+ value: boolean;
10
+ }): {
11
+ run: () => void;
12
+ stop: () => void;
13
+ };
@@ -1,3 +1,4 @@
1
+ import { IDraggableEntity, IDraggingEntity, IDroppableEntity } from '../../external/types/entities';
1
2
  /**
2
3
  * Checks compatibility between two group sets.
3
4
  * Used for selection area, zones, droppable, etc.
@@ -6,3 +7,13 @@
6
7
  * - Otherwise requires at least one shared group
7
8
  */
8
9
  export declare const areGroupsCompatible: (groupsA: string[], groupsB: string[]) => boolean;
10
+ /**
11
+ * Фильтрует видимые зоны по группам: оставляет только те, куда можно дропнуть
12
+ * текущий набор перетаскиваемых (draggingMap). Внутри сам берёт ключи из draggingMap.
13
+ */
14
+ export declare function filterByGroupsDroppables(visibleDroppableSet: Set<HTMLElement>, draggingMap: Map<HTMLElement, IDraggingEntity>, draggableMap: Map<HTMLElement, IDraggableEntity>, droppableMap: Map<HTMLElement, IDroppableEntity>): Set<HTMLElement>;
15
+ /**
16
+ * Фильтрует видимые драгаемые по группам: оставляет только те, что в одной «доступной» группе
17
+ * с текущим перетаскиваемым набором (draggingMap). Когда не тянем — все видимые доступны.
18
+ */
19
+ export declare function filterByGroupsDraggables(visibleDraggableSet: Set<HTMLElement>, draggingMap: Map<HTMLElement, IDraggingEntity>, draggableMap: Map<HTMLElement, IDraggableEntity>): Set<HTMLElement>;
@@ -1,2 +1,2 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".dnd-kit-default-overlay{transform:translate3d(var(--position-x),var(--position-y),0)}.dnd-kit-overlay-container{position:fixed;top:0;left:0;pointer-events:none;cursor:grabbing}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("vue"),E={SELECT_AREA:"data-dnd-kit-select-area",DRAGGABLE:"data-dnd-kit-draggable",DROPPABLE:"data-dnd-kit-droppable",CONSTRAINT_AREA:"data-dnd-kit-constraint-area"},k={SELECT_AREA:`[${E.SELECT_AREA}]`,DRAGGABLE:`[${E.DRAGGABLE}]`,CONSTRAINT_AREA:`[${E.CONSTRAINT_AREA}]`},$="VueDnDKitProvider",X=(e,t,n,s)=>{const i=new Set;return t.forEach(a=>{const o=e.get(a),l=s?s(a):o?.disabled;if(!o||l)return;const c=o.modifier?.keys,u=o.modifier?.method;if(!c||!u||c.length===0){i.add(a);return}c[u](f=>n.value.has(f))&&i.add(a)}),i};let ee="",ce="",ue="";const z=e=>e.value?e.value instanceof HTMLElement?e.value:e.value.$el:null,C=(e,t)=>e!==t&&e.contains(t),ge=(e,t)=>!(e.right<t.left||e.left>t.right||e.bottom<t.top||e.top>t.bottom),H=()=>{const e=document.body;ee=e.style.userSelect,e.style.userSelect="none",window.addEventListener("contextmenu",h),window.addEventListener("selectstart",h),window.addEventListener("touchstart",h),window.addEventListener("touchmove",h)},G=()=>{const e=document.body;e.style.userSelect=ee,e.style.touchAction=ce,e.style.overscrollBehavior=ue,window.removeEventListener("contextmenu",h),window.removeEventListener("selectstart",h),window.removeEventListener("touchstart",h),window.removeEventListener("touchmove",h)},h=e=>e.preventDefault(),M=(e,t)=>{if(t.entities.draggableMap.get(e)?.disabled)return!0;for(const[s,i]of t.entities.draggableMap)if(i.disabled&&C(s,e))return!0;return!1},w=(e,t)=>{if(t.entities.droppableMap.get(e)?.disabled)return!0;for(const[s,i]of t.entities.droppableMap)if(i.disabled&&C(s,e))return!0;return!1},F=e=>{const t=new IntersectionObserver(n=>{n.forEach(s=>{const i=s.target;e[s.isIntersecting?"add":"delete"](i)})});return{observe:n=>t.observe(n),unobserve:n=>t.unobserve(n),disconnect:()=>t.disconnect()}},fe=e=>{const t=new ResizeObserver(n=>{const s=n[0];if(!s)return;const{width:i,height:a}=s.contentRect;e.value={width:i,height:a}});return{observe:n=>t.observe(n),unobserve:n=>t.unobserve(n),disconnect:()=>t.disconnect()}},de=e=>{const t=r.ref(null),n=fe(t),s=r.watch(e,a=>{n.disconnect(),a&&n.observe(a)},{immediate:!0});return{overlaySize:t,overlaySizeObserver:{disconnect:()=>{s(),n.disconnect()}}}};function N(e,t=0,n=0){return{start:{x:e.clientX,y:e.clientY},current:{x:e.clientX,y:e.clientY},offset:{x:t,y:n}}}function te(e,t){const n=t.getBoundingClientRect(),s=n.width>0?(e.clientX-n.left)/n.width:.5,i=n.height>0?(e.clientY-n.top)/n.height:.5;return{x:s,y:i}}function ne(e,t){return{...t,initialHTML:e.innerHTML,initialRect:e.getBoundingClientRect(),initialOuterHTML:e.outerHTML}}function ye(e,t,n){e.forEach(s=>{const i=t.get(s);n.set(s,ne(s,i))}),e.clear()}function me(e,t,n){n.clear();const s=t.get(e);n.set(e,ne(e,s))}function T(e){e.entities.initiatingDraggable&&(e.state.value="dragging",be(e.entities.initiatingDraggable,e.entities.selectedSet,e.entities.draggableMap,e.entities.draggingMap))}function be(e,t,n,s){t.has(e)?ye(t,n,s):(t.clear(),me(e,n,s))}function se(e,t,n,s){if(s||!n)return!0;const i=e.closest(n);return i?t.contains(i):!1}function he(e,t){if(!e||!t)return 1;const n=Math.abs(e.current.x-e.start.x),s=Math.abs(e.current.y-e.start.y);if(typeof t=="number"){const u=Math.sqrt(n*n+s*s);return Math.min(u/t,1)}const{x:i=0,y:a=0,condition:o="any"}=t;if(i===0&&a===0)return 1;const l=i>0?Math.min(n/i,1):1,c=a>0?Math.min(s/a,1):1;return o==="both"?Math.min(l,c):Math.max(l,c)}function ie(e,t,n){if(!n)return!0;const s=n.distance!=null,i=n.delay!=null;return!s&&!i?!0:s&&!i?e>=1:!s&&i?t>=1:(n.condition??"both")==="both"?e>=1&&t>=1:e>=1||t>=1}function De(e){if(e.state.value!=="activating"||!e.entities.initiatingDraggable)return!1;const t=e.entities.draggableMap.get(e.entities.initiatingDraggable);return ie(e.distanceProgress.value,e.delay.progress,t?.activation)?(T(e),!0):!1}function pe(e,t){let n=null;const s=()=>{if(e.state.value!=="activating"||!e.entities.initiatingDraggable){n=null;return}const i=e.entities.draggableMap.get(e.entities.initiatingDraggable),a=i?.activation?.delay;if(!a){n=null;return}e.delay.progress=Math.min((Date.now()-e.delay.startTime)/(a*1e3),1),ie(e.distanceProgress.value,e.delay.progress,i?.activation)?(t(),n=null):n=requestAnimationFrame(s)};return n=requestAnimationFrame(s),{cancel:()=>{n!==null&&(cancelAnimationFrame(n),n=null)}}}function ve(e,t){const n=e.closest(k.CONSTRAINT_AREA);return!n||!t.has(n)?null:{element:n,entity:t.get(n)}}function Ee(e,t,n,s){return n==="x"?{x:e,y:s.top}:n==="y"?{x:s.left,y:t}:{x:e,y:t}}function Me(e,t,n,s,i){let a=e,o=t;return n!=="y"&&(a=Math.max(s.left,Math.min(s.right-i.width,e))),n!=="x"&&(o=Math.max(s.top,Math.min(s.bottom-i.height,t))),{x:a,y:o}}function Se(e,t,n,s,i){if(!e||!t)return{x:0,y:0};const a=t.getBoundingClientRect(),o=a.width||i?.width||0,l=a.height||i?.height||0;let c=e.current.x-o*e.offset.x,u=e.current.y-l*e.offset.y;if(!n)return{x:c,y:u};const d=ve(n,s);if(!d)return{x:c,y:u};const{element:f,entity:y}=d,g=f.getBoundingClientRect(),m=n.getBoundingClientRect(),b=Ee(c,u,y.axis||"both",m);return y.restrictToArea?Me(b.x,b.y,y.axis||"both",g,a):b}const x={forDrag:["Enter","Space"],forCancel:["Escape"],forDrop:["Enter","Space"],forMove:["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","KeyW","KeyA","KeyS","KeyD"],forMoveFaster:["ShiftLeft","ShiftRight"]};function Ae(e){const t=r.shallowRef(),n=r.ref(),i={keys:{pressedKeys:r.ref(new Set),forDrag:[...x.forDrag],forCancel:[...x.forCancel],forDrop:[...x.forDrop],forMove:[...x.forMove],forMoveFaster:[...x.forMoveFaster]},step:8,moveFaster:4},a=r.reactive({draggableMap:new Map,droppableMap:new Map,selectableAreaMap:new Map,constraintsAreaMap:new Map,initiatingDraggable:void 0,selectingArea:void 0,draggingMap:new Map,selectedSet:new Set,modifiersSelectableAreaSet:r.computed(()=>X(a.selectableAreaMap,a.visibleSelectableAreaSet,i.keys.pressedKeys)),modifiersDraggableSet:r.computed(()=>X(a.draggableMap,a.visibleDraggableSet,i.keys.pressedKeys,P=>M(P,{entities:a}))),visibleDraggableSet:new Set,visibleDroppableSet:new Set,visibleSelectableAreaSet:new Set}),o=r.reactive({x:window.scrollX,y:window.scrollY}),l=r.reactive({progress:0,startTime:0}),c=r.computed(()=>{if(!n.value||!a.initiatingDraggable)return 0;const P=a.draggableMap.get(a.initiatingDraggable)?.activation?.distance;return P?he(n.value,P):1}),u=F(a.visibleDraggableSet),d=F(a.visibleDroppableSet),f=F(a.visibleSelectableAreaSet),{overlaySize:y,overlaySizeObserver:g}=de(e),m=r.ref(),b=r.reactive({draggable:new Map,droppable:new Map}),v={throttle:r.shallowRef(0)},L=r.computed(()=>{o.y,o.x;const B=a.initiatingDraggable;return Se(n.value,e.value,B||null,a.constraintsAreaMap,y.value)});return{state:t,pointer:n,entities:a,keyboard:i,scrollPosition:o,delay:l,distanceProgress:c,hovered:b,collision:v,overlay:{size:y,style:L,render:m,ref:e},lib:{draggableObserver:u,droppableObserver:d,selectableAreaObserver:f,overlaySizeObserver:g}}}const O=e=>{e.pointer.value=void 0,e.state.value=void 0,e.entities.selectingArea=void 0,e.entities.initiatingDraggable=void 0,e.delay.progress=0,e.delay.startTime=0,e.entities.draggingMap.clear(),e.hovered.draggable.clear(),e.hovered.droppable.clear()},we=e=>{const t=e.entities.initiatingDraggable;if(!t)return;const s=e.entities.draggableMap.get(t)?.payload;if(!s)return;const i=s();if(!Array.isArray(i)||i.length<2)return;const[a,o,l]=i;return{index:Number(a),items:Array.isArray(o)?o:[],dropData:l}},xe=(e,t)=>{const s=e.entities.droppableMap.get(t)?.payload;if(!s)return;const i=s();if(!Array.isArray(i)||i.length<1)return;const[a,o]=i;return{items:Array.isArray(a)?a:[],userData:o}},S=e=>e.keys().next().value,ke=e=>e.target.closest(k.DRAGGABLE),p=(e,t)=>{const n={payload:we(e),provider:e};return t&&(n.dropZonePayload=xe(e,t)),n},I=(e,t,n)=>{const s=ke(t);if(!s||!e.entities.draggingMap.has(s))return;const i=p(e);e.entities.draggingMap.get(s)?.events?.[n]?.(i)},A=(e,t,n)=>{if(!t||M(t,e))return;const s=p(e);e.entities.draggableMap.get(t)?.events?.[n]?.(s)},D=(e,t)=>{const n=p(e);e.entities.draggableMap.forEach((s,i)=>{M(i,e)||s.events?.[t]?.(n)})},Ce=(e,t,n)=>{if(t!==n){if(t&&!w(t,e)){const s=p(e,t);e.entities.droppableMap.get(t)?.events?.onLeave?.(s)}if(n&&!w(n,e)){const s=p(e,n);e.entities.droppableMap.get(n)?.events?.onEnter?.(s)}}},Le=(e,t,n)=>{if(t!==n){const s=p(e);t&&!M(t,e)&&e.entities.draggableMap.get(t)?.events?.onLeave?.(s),n&&!M(n,e)&&e.entities.draggableMap.get(n)?.events?.onHover?.(s)}},Be=(e,t)=>{const n=S(t.droppable);if(n&&!w(n,e)){const s=p(e,n);e.entities.droppableMap.get(n)?.events?.onLeave?.(s)}},ae=(e,t)=>{const n=S(t.droppable);if(n&&!w(n,e)){const s=p(e,n);e.entities.droppableMap.get(n)?.events?.onLeave?.(s)}},Pe=(e,t)=>!e.length||!t.length?!0:e.some(n=>t.includes(n)),Re=(e,t,n)=>{if(!n)return{};const s=n.getBoundingClientRect(),i=Math.max(s.left,Math.min(e.x,t.x)),a=Math.max(s.top,Math.min(e.y,t.y)),o=Math.min(s.right,Math.max(e.x,t.x)),l=Math.min(s.bottom,Math.max(e.y,t.y)),c=Math.max(0,o-i),u=Math.max(0,l-a);return{left:`${i}px`,top:`${a}px`,width:`${c}px`,height:`${u}px`,position:"fixed",pointerEvents:"none",border:"1px solid #3b82f6",backgroundColor:"#3b82f61a"}},Te=e=>{if(!e.pointer.value||!e.entities.selectingArea)return;const{selectingArea:t}=e.entities,n=Oe(e.pointer.value.start,e.pointer.value.current),s=e.entities.selectableAreaMap.get(t)?.groups??[];e.entities.visibleDraggableSet.forEach(i=>{if(!t.contains(i))return;if(M(i,e)){e.entities.selectedSet.delete(i);return}const o=e.entities.draggableMap.get(i)?.groups??[];if(!Pe(s,o)){e.entities.selectedSet.delete(i);return}ge(n,i.getBoundingClientRect())?e.entities.selectedSet.add(i):e.entities.selectedSet.delete(i)})},Oe=(e,t)=>{const n=Math.min(e.x,t.x),s=Math.min(e.y,t.y),i=Math.max(e.x,t.x),a=Math.max(e.y,t.y),o=i-n,l=a-s;return new DOMRect(n,s,o,l)},ze=(e,t,n=5)=>{const s=n/2;return{left:e-s,top:t-s,width:n,height:n}},_e=e=>{const t=e.pointer.value?.current,n=t?.x??0,s=t?.y??0;return ze(n,s,5)},R=(e,t,n)=>{const s=e.left+e.width/2,i=e.top+e.height/2;if(n){const d=n.top??0,f=n.right??0,y=n.bottom??0,g=n.left??0,m=t.left+g,b=t.right-f,v=t.top+d,L=t.bottom-y;if(m<b&&v<L&&s>=m&&s<=b&&i>=v&&i<=L)return{top:!1,right:!1,bottom:!1,left:!1,center:!0}}const a=i-t.top,o=t.bottom-i,l=s-t.left,c=t.right-s,u=Math.min(a,o,l,c);return{top:a===u,bottom:o===u,left:l===u,right:c===u}},Fe=(e,t)=>e.find(n=>n!==t&&C(t,n)),U=(e,t,n)=>{const s=S(t.droppable),i=S(t.draggable);t.draggable.clear(),t.droppable.clear();const a=_e(e),o=n.zones[0],l=n.elements[0];if(o&&l&&o===l&&e.entities.droppableMap.has(o)&&o){const f=o.getBoundingClientRect(),y=e.entities.draggableMap.get(o)?.placementMargins,g=R(a,f,y);if(g.center){t.droppable.set(o,g);const m=Fe(n.elements,o);if(m){const b=m.getBoundingClientRect();t.draggable.set(m,R(a,b,void 0))}}else t.draggable.set(l,g),t.droppable.set(o,g)}else{if(o){const f=o.getBoundingClientRect();t.droppable.set(o,R(a,f))}if(l){const f=l.getBoundingClientRect(),y=e.entities.draggableMap.get(l)?.placementMargins;t.draggable.set(l,R(a,f,y))}}const u=S(t.droppable),d=S(t.draggable);Ce(e,s,u),Le(e,i,d)},Ie=(e,t)=>e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y,Z=e=>{if(!e)return{x:0,y:0,width:0,height:0,top:0,left:0,right:0,bottom:0};const t=e.getBoundingClientRect();return{x:t.x,y:t.y,width:t.width,height:t.height,top:t.top,left:t.left,right:t.right,bottom:t.bottom}},q=e=>({x:e.x+e.width/2,y:e.y+e.height/2}),Ke=(e,t)=>Math.hypot(t.x-e.x,t.y-e.y),He=(e,t)=>{const n=Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x)),s=Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y)),i=n*s,a=e.width*e.height,o=t.width*t.height;return a===0||o===0?0:(i/a*100+i/o*100)/2},Ge=(e,t,n)=>t>=e.x&&t<=e.x+e.width&&n>=e.y&&n<=e.y+e.height,V=()=>!0,j=()=>0,Ne=()=>{const e={filterElements:V,filterZones:V,sortElements:j,sortZones:j},t=(s,i,a,o,l,c,u)=>{const d=new Set(o),f={containerBox:i,pointer:a},y=[...o].filter(g=>l(g,s)).map(g=>{const m=Z(g);if(!u(m,f))return null;let b=0;for(const v of d)v!==g&&C(v,g)&&b++;return{node:g,box:m,meta:{isPointerInElement:Ge(m,a.x,a.y),overlapPercent:He(m,i),depth:b,centerDistance:Ke(q(i),q(m))}}}).filter(g=>g!==null);return y.sort((g,m)=>c(g,m,f)),y.map(g=>g.node)},n={container(s){return e.container=s,n},containerBox(s){return e.containerBox=s,n},elements(s){return e.elements=s,n},zones(s){return e.zones=s,n},filterElements(s){return e.filterElements=s,n},filterZones(s){return e.filterZones=s,n},collision(s){return e.collision=s,n},sortElements(s){return e.sortElements=s,n},sortZones(s){return e.sortZones=s,n},build(){const s=e;if(!s.container||!s.elements||!s.zones||!s.collision)throw new Error("sensor: container, elements, zones, collision are required");return i=>{const a=s.container(i);if(!a)return{elements:[],zones:[]};const o=s.containerBox?s.containerBox(i):Z(a),l=i.pointer.value?.current??{x:0,y:0};return{elements:t(i,o,l,s.elements(i),s.filterElements,s.sortElements,s.collision),zones:t(i,o,l,s.zones(i),s.filterZones,s.sortZones,s.collision)}}}};return n},Ue=()=>Ne(),Ye=e=>e.overlay.ref?.value??null,$e=e=>{const t=e.overlay.style?.value??{x:0,y:0},n=e.overlay.size?.value??null,{x:s,y:i}=t,a=n?.width??0,o=n?.height??0;return{x:s,y:i,width:a,height:o,top:i,left:s,right:s+a,bottom:i+o}},Xe=e=>e.entities.visibleDraggableSet,Ze=e=>e.entities.visibleDroppableSet,qe=(e,t)=>!t.entities.draggingMap.has(e),Ve=(e,t)=>![...t.entities.draggingMap.keys()].some(n=>C(n,e)),je=(e,t)=>t.entities.draggableMap.has(e)?!M(e,t):t.entities.droppableMap.has(e)?!w(e,t):!0,W=(e,t)=>qe(e,t)&&Ve(e,t)&&je(e,t),We=(e,t)=>Ie(e,t.containerBox),J=(e,t,n)=>{if(n.pointer.x>=n.containerBox.x&&n.pointer.x<=n.containerBox.x+n.containerBox.width&&n.pointer.y>=n.containerBox.y&&n.pointer.y<=n.containerBox.y+n.containerBox.height){if(e.meta.isPointerInElement&&t.meta.isPointerInElement)return t.meta.depth-e.meta.depth;if(e.meta.isPointerInElement!==t.meta.isPointerInElement)return e.meta.isPointerInElement?-1:1}return Math.abs(e.meta.overlapPercent-t.meta.overlapPercent)<=1?e.meta.centerDistance-t.meta.centerDistance:t.meta.overlapPercent-e.meta.overlapPercent},Y=Ue().container(Ye).containerBox($e).elements(Xe).zones(Ze).filterElements(W).filterZones(W).collision(We).sortElements(J).sortZones(J).build();function Q(e){const n=(e.collision?.run??Y)(e);U(e,e.hovered,n)}function Je(e,t){const n=e.collision?.throttle?.value??0;if(n<=0){Q(e);return}const s=Date.now();s-t.value>=n&&(t.value=s,Q(e))}async function oe(e){const t=e.hovered.droppable.keys().next().value;if(!t||w(t,e))return!0;const n=e.entities.droppableMap.get(t),s=p(e,t),i=n?.events?.onDrop?.(s);if(i!=null&&typeof i.then=="function")try{return await i,!0}catch{const o=e.entities.initiatingDraggable;return A(e,o,"onSelfDragCancel"),D(e,"onDragCancel"),ae(e,e.hovered),!1}return!0}function re(e){const t=e.entities.initiatingDraggable;A(e,t,"onSelfDragEnd"),D(e,"onDragEnd"),Be(e,e.hovered)}function Qe(e){const t=e.entities.selectingArea;if(!t)return;const n=e.entities.selectableAreaMap.get(t),s=[...e.entities.selectedSet];n?.events?.onSelected?.(s)}const et=e=>{const t={current:null},n={value:0},s=async()=>{G(),t.current?.cancel(),t.current=null;const l=e.state.value;if(l==="dragging"){if(!await oe(e)){O(e),document.removeEventListener("pointerup",s),document.removeEventListener("pointermove",i);return}re(e)}else l==="selecting"&&Qe(e);O(e),document.removeEventListener("pointerup",s),document.removeEventListener("pointermove",i)},i=l=>{if(e.pointer.value){if(e.pointer.value.current={x:l.clientX,y:l.clientY},De(e)){I(e,l,"onSelfDragStart"),D(e,"onDragStart");return}if(e.state.value==="dragging"){Je(e,n);const c=e.entities.initiatingDraggable;A(e,c,"onSelfDragMove"),D(e,"onDragMove")}e.state.value==="selecting"&&Te(e)}};return{pointerDown:l=>{document.addEventListener("pointerup",s),document.addEventListener("pointermove",i);const c=l.target,u=c.closest(k.SELECT_AREA),d=c.closest(k.DRAGGABLE);if(e.entities.modifiersSelectableAreaSet.size>0&&e.entities.modifiersSelectableAreaSet.has(u)){H(),e.pointer.value=N(l),e.state.value="selecting",e.entities.selectingArea=u;return}if(e.entities.modifiersDraggableSet.size>0&&e.entities.modifiersDraggableSet.has(d)){const f=e.entities.draggableMap.get(d);if(!se(c,d,f?.dragHandle))return;H(),e.entities.initiatingDraggable=d;const y=te(l,d);e.pointer.value=N(l,y.x,y.y),f?.activation?.distance||f?.activation?.delay?(e.state.value="activating",f?.activation?.delay&&(e.delay.startTime=Date.now(),t.current=pe(e,()=>{T(e),I(e,l,"onSelfDragStart"),D(e,"onDragStart")}))):(T(e),I(e,l,"onSelfDragStart"),D(e,"onDragStart"))}},pointerUp:s,pointerMove:i,cleanup:()=>{t.current?.cancel(),document.removeEventListener("pointerup",s),document.removeEventListener("pointermove",i),e.lib.draggableObserver.disconnect(),e.lib.droppableObserver.disconnect(),e.lib.selectableAreaObserver.disconnect(),e.lib.overlaySizeObserver.disconnect()}}},tt={ArrowUp:{dx:0,dy:-1},ArrowDown:{dx:0,dy:1},ArrowLeft:{dx:-1,dy:0},ArrowRight:{dx:1,dy:0},KeyW:{dx:0,dy:-1},KeyA:{dx:-1,dy:0},KeyS:{dx:0,dy:1},KeyD:{dx:1,dy:0}},nt=e=>t=>{const{keys:n}=e.keyboard;if(n.pressedKeys.value.add(t.code),e.state.value==="dragging"){if(n.forCancel.includes(t.code)){t.preventDefault(),G(),A(e,e.entities.initiatingDraggable,"onSelfDragCancel"),D(e,"onDragCancel"),ae(e,e.hovered),O(e);return}if(n.forDrop.includes(t.code)){t.preventDefault(),(async()=>(await oe(e)&&re(e),G(),O(e)))();return}const i=tt[t.code];if(i&&n.forMove.includes(t.code)&&e.pointer.value){t.preventDefault();const a=n.forMoveFaster.some(u=>n.pressedKeys.value.has(u)),o=e.keyboard.step*(a?e.keyboard.moveFaster:1);e.pointer.value.current={x:e.pointer.value.current.x+i.dx*o,y:e.pointer.value.current.y+i.dy*o};const c=(e.collision?.run??Y)(e);U(e,e.hovered,c),A(e,e.entities.initiatingDraggable,"onSelfDragMove"),D(e,"onDragMove");return}return}if(n.forDrag.includes(t.code)){const i=document.activeElement;if(!i)return;const a=i.closest(k.DRAGGABLE);if(!a||e.entities.modifiersDraggableSet.size===0||!e.entities.modifiersDraggableSet.has(a))return;const o=e.entities.draggableMap.get(a);if(!se(i,a,o?.dragHandle,!0))return;t.preventDefault(),H();const l=a.getBoundingClientRect(),c=l.left+l.width/2,u=l.top+l.height/2,d={clientX:c,clientY:u};e.entities.initiatingDraggable=a;const f=te(d,a);e.pointer.value=N(d,f.x,f.y),T(e);const g=(e.collision?.run??Y)(e);U(e,e.hovered,g),A(e,a,"onSelfDragStart"),D(e,"onDragStart")}},st=e=>t=>{e.keyboard.keys.pressedKeys.value.delete(t.code)},it=e=>()=>{e.keyboard.keys.pressedKeys.value.clear()},K={keyDown:nt,keyUp:st,clear:it},at=e=>()=>{e.state.value&&(e.scrollPosition.x=window.scrollX,e.scrollPosition.y=window.scrollY)},ot=e=>{const t=et(e),n=K.keyDown(e),s=K.keyUp(e),i=K.clear(e),a=at(e);r.onMounted(()=>{document.addEventListener("pointerdown",t.pointerDown),document.addEventListener("keydown",n),document.addEventListener("keyup",s),document.addEventListener("blur",i),document.addEventListener("scroll",a,!0)}),r.onBeforeUnmount(()=>{document.removeEventListener("pointerdown",t.pointerDown),document.removeEventListener("pointerup",t.pointerUp),document.removeEventListener("pointermove",t.pointerMove),document.removeEventListener("keydown",n),document.removeEventListener("keyup",s),document.removeEventListener("blur",i),document.removeEventListener("scroll",a,!0),t.cleanup()})},_=()=>{const e=r.inject($);if(!e)throw Error("DnD provider not found");return e},le=()=>{const e=_();return{overlay:e.overlay,delay:e.delay,distanceProgress:e.distanceProgress,entities:e.entities,pointer:e.pointer,state:e.state,scrollPosition:e.scrollPosition,keyboard:e.keyboard,hovered:e.hovered,collision:e.collision}},rt=r.defineComponent({__name:"DefaultOverlay",setup(e){const{entities:t,state:n,overlay:s}=le();return(i,a)=>r.unref(n)==="dragging"?(r.openBlock(),r.createElementBlock("div",{key:0,class:"dnd-kit-default-overlay",style:r.normalizeStyle({"--position-x":r.unref(s).style.value.x+"px","--position-y":r.unref(s).style.value.y+"px"})},[(r.openBlock(!0),r.createElementBlock(r.Fragment,null,r.renderList(r.unref(t).draggingMap,([o,l])=>(r.openBlock(),r.createElementBlock(r.Fragment,null,[r.unref(t).draggableMap.get(o)?.render?(r.openBlock(),r.createBlock(r.resolveDynamicComponent(r.unref(t).draggableMap.get(o)?.render),{key:0,class:"test"})):(r.openBlock(),r.createBlock(r.resolveDynamicComponent(o.tagName),{key:1,innerHTML:l.initialOuterHTML,class:"test",style:r.normalizeStyle({width:l.initialRect.width+"px",height:l.initialRect.height+"px"})},null,8,["innerHTML","style"]))],64))),256))],4)):r.createCommentVNode("",!0)}}),lt=r.defineComponent({__name:"DnDProvider",setup(e){const t=r.useTemplateRef("overlayRef"),n=Ae(t);ot(n);const s=r.computed(()=>n.overlay.render.value??rt);return r.provide($,n),(i,a)=>(r.openBlock(),r.createElementBlock(r.Fragment,null,[r.renderSlot(i.$slots,"default"),(r.openBlock(),r.createBlock(r.Teleport,{to:"body"},[r.createElementVNode("div",{ref_key:"overlayRef",ref:t,class:"dnd-kit-overlay-container"},[r.renderSlot(i.$slots,"overlay",{overlay:s.value},()=>[(r.openBlock(),r.createBlock(r.resolveDynamicComponent(s.value)))])],512)]))],64))}});function ct(e,t,n){const s=_();let i,a,o;return typeof t=="function"?(i={},a=t):(i=t??{},a=n),r.onMounted(()=>{o=z(e),o&&(o.addEventListener("dragstart",h),o.addEventListener("drag",h),o.addEventListener("dragend",h),o.setAttribute(E.DRAGGABLE,""),s.lib.draggableObserver.observe(o),s.entities.draggableMap.set(o,{render:i.render,disabled:i.disabled??!1,groups:i.groups??[],modifier:i.modifier,events:i.events,payload:a,dragHandle:i.dragHandle,activation:i.activation,placementMargins:i.placementMargins}))}),r.onBeforeUnmount(()=>{o&&(s.lib.draggableObserver.unobserve(o),s.entities.visibleDraggableSet.delete(o),s.entities.draggableMap.delete(o),s.entities.modifiersDraggableSet.delete(o))}),{}}const ut=(e,t)=>{const n=_(),s=r.computed(()=>e.value===n.entities.selectingArea);let i=null;r.onMounted(()=>{i=z(e),i&&(i.setAttribute(E.SELECT_AREA,""),n.lib.selectableAreaObserver.observe(i),n.entities.selectableAreaMap.set(i,{modifier:t?.modifier??{keys:["ControlLeft"],method:"every"},events:t?.events,disabled:t?.disabled??!1,groups:t?.groups??[]}))}),r.onBeforeUnmount(()=>{i&&(n.lib.selectableAreaObserver.unobserve(i),n.entities.visibleSelectableAreaSet.delete(i),n.entities.modifiersSelectableAreaSet.delete(i),n.entities.selectableAreaMap.delete(i))});const a=r.computed(()=>{n.scrollPosition.x,n.scrollPosition.y;const o=n.pointer.value;return!o||n.state.value!=="selecting"||!i?{}:Re(o.start,o.current,i)});return{isSelecting:s,style:a}};function gt(e,t){const n=r.inject($);if(!n)throw Error("DnD provider not found");let s=null;return r.onMounted(()=>{s=z(e),s&&(s.setAttribute(E.CONSTRAINT_AREA,""),n.entities.constraintsAreaMap.set(s,{axis:t?.axis||"both",restrictToArea:t?.restrictToArea||!1}))}),r.onBeforeUnmount(()=>{s&&n.entities.constraintsAreaMap.delete(s)}),{}}function ft(e,t,n){const s=_();let i=null,a,o;typeof t=="function"?(a={},o=t):(a=t??{},o=n),r.onMounted(()=>{i=z(e),i&&(i.setAttribute(E.DROPPABLE,""),s.lib.droppableObserver.observe(i),s.entities.droppableMap.set(i,{disabled:a.disabled??!1,groups:a.groups??[],events:a.events,payload:o}))}),r.onBeforeUnmount(()=>{i&&(s.lib.droppableObserver.unobserve(i),s.entities.visibleDroppableSet.delete(i),s.entities.droppableMap.delete(i))})}exports.DnDProvider=lt;exports.makeConstraintArea=gt;exports.makeDraggable=ct;exports.makeDroppable=ft;exports.makeSelectionArea=ut;exports.useDnDProvider=le;
2
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("vue"),k={SELECT_AREA:"data-dnd-kit-select-area",DRAGGABLE:"data-dnd-kit-draggable",DROPPABLE:"data-dnd-kit-droppable",CONSTRAINT_AREA:"data-dnd-kit-constraint-area"},F={SELECT_AREA:`[${k.SELECT_AREA}]`,DRAGGABLE:`[${k.DRAGGABLE}]`,CONSTRAINT_AREA:`[${k.CONSTRAINT_AREA}]`},Q="VueDnDKitProvider",ne=(e,t,n,o)=>{const r=new Set;return t.forEach(i=>{const s=e.get(i),a=o?o(i):s?.disabled;if(!s||a)return;const c=s.modifier?.keys,u=s.modifier?.method;if(!c||!u||c.length===0){r.add(i);return}c[u](f=>n.value.has(f))&&r.add(i)}),r};let fe="",we="",Ee="";const v=e=>e.value?e.value instanceof HTMLElement?e.value:e.value.$el:null,_=(e,t)=>e!==t&&e.contains(t),Me=(e,t)=>!(e.right<t.left||e.left>t.right||e.bottom<t.top||e.top>t.bottom),V=()=>{const e=document.body;fe=e.style.userSelect,e.style.userSelect="none",window.addEventListener("contextmenu",h),window.addEventListener("selectstart",h),window.addEventListener("touchstart",h),window.addEventListener("touchmove",h)},q=()=>{const e=document.body;e.style.userSelect=fe,e.style.touchAction=we,e.style.overscrollBehavior=Ee,window.removeEventListener("contextmenu",h),window.removeEventListener("selectstart",h),window.removeEventListener("touchstart",h),window.removeEventListener("touchmove",h)},h=e=>e.preventDefault(),L=(e,t)=>{if(t.entities.draggableMap.get(e)?.disabled)return!0;for(const[o,r]of t.entities.draggableMap)if(r.disabled&&_(o,e))return!0;return!1},P=(e,t)=>{if(t.entities.droppableMap.get(e)?.disabled)return!0;for(const[o,r]of t.entities.droppableMap)if(r.disabled&&_(o,e))return!0;return!1},ee=(e,t)=>!e.length||!t.length?!0:e.some(n=>t.includes(n));function Ae(e,t,n,o){const r=new Set;for(const a of t.keys()){const c=n.get(a);for(const u of c?.groups??[])r.add(u)}const i=[...r],s=new Set;for(const a of e){const u=o.get(a)?.groups??[];ee(i,u)&&s.add(a)}return s}function xe(e,t,n){const o=new Set;for(const s of t.keys()){const a=n.get(s);for(const c of a?.groups??[])o.add(c)}const r=[...o],i=new Set;for(const s of e){const c=n.get(s)?.groups??[];ee(r,c)&&i.add(s)}return i}const X=e=>{const t=new IntersectionObserver(n=>{n.forEach(o=>{const r=o.target;e[o.isIntersecting?"add":"delete"](r)})});return{observe:n=>t.observe(n),unobserve:n=>t.unobserve(n),disconnect:()=>t.disconnect()}},ke=e=>{const t=new ResizeObserver(n=>{const o=n[0];if(!o)return;const{width:r,height:i}=o.contentRect;e.value={width:r,height:i}});return{observe:n=>t.observe(n),unobserve:n=>t.unobserve(n),disconnect:()=>t.disconnect()}},Le=e=>{const t=l.ref(null),n=ke(t),o=l.watch(e,i=>{n.disconnect(),i&&n.observe(i)},{immediate:!0});return{overlaySize:t,overlaySizeObserver:{disconnect:()=>{o(),n.disconnect()}}}};function j(e,t=0,n=0){return{start:{x:e.clientX,y:e.clientY},current:{x:e.clientX,y:e.clientY},offset:{x:t,y:n}}}function de(e,t){const n=t.getBoundingClientRect(),o=n.width>0?(e.clientX-n.left)/n.width:.5,r=n.height>0?(e.clientY-n.top)/n.height:.5;return{x:o,y:r}}function ye(e,t){return{...t,initialHTML:e.innerHTML,initialRect:e.getBoundingClientRect(),initialOuterHTML:e.outerHTML}}function Ce(e,t,n){e.forEach(o=>{const r=t.get(o);n.set(o,ye(o,r))}),e.clear()}function Be(e,t,n){n.clear();const o=t.get(e);n.set(e,ye(e,o))}function K(e){e.entities.initiatingDraggable&&(e.state.value="dragging",Te(e.entities.initiatingDraggable,e.entities.selectedSet,e.entities.draggableMap,e.entities.draggingMap))}function Te(e,t,n,o){t.has(e)?Ce(t,n,o):(t.clear(),Be(e,n,o))}function me(e,t,n,o){if(o||!n)return!0;const r=e.closest(n);return r?t.contains(r):!1}function Pe(e,t){if(!e||!t)return 1;const n=Math.abs(e.current.x-e.start.x),o=Math.abs(e.current.y-e.start.y);if(typeof t=="number"){const u=Math.sqrt(n*n+o*o);return Math.min(u/t,1)}const{x:r=0,y:i=0,condition:s="any"}=t;if(r===0&&i===0)return 1;const a=r>0?Math.min(n/r,1):1,c=i>0?Math.min(o/i,1):1;return s==="both"?Math.min(a,c):Math.max(a,c)}function be(e,t,n){if(!n)return!0;const o=n.distance!=null,r=n.delay!=null;return!o&&!r?!0:o&&!r?e>=1:!o&&r?t>=1:(n.condition??"both")==="both"?e>=1&&t>=1:e>=1||t>=1}function Re(e){if(e.state.value!=="activating"||!e.entities.initiatingDraggable)return!1;const t=e.entities.draggableMap.get(e.entities.initiatingDraggable);return be(e.distanceProgress.value,e.delay.progress,t?.activation)?(K(e),!0):!1}function Oe(e,t){let n=null;const o=()=>{if(e.state.value!=="activating"||!e.entities.initiatingDraggable){n=null;return}const r=e.entities.draggableMap.get(e.entities.initiatingDraggable),i=r?.activation?.delay;if(!i){n=null;return}e.delay.progress=Math.min((Date.now()-e.delay.startTime)/(i*1e3),1),be(e.distanceProgress.value,e.delay.progress,r?.activation)?(t(),n=null):n=requestAnimationFrame(o)};return n=requestAnimationFrame(o),{cancel:()=>{n!==null&&(cancelAnimationFrame(n),n=null)}}}function ze(e,t){const n=e.closest(F.CONSTRAINT_AREA);return!n||!t.has(n)?null:{element:n,entity:t.get(n)}}function Fe(e,t,n,o){return n==="x"?{x:e,y:o.top}:n==="y"?{x:o.left,y:t}:{x:e,y:t}}function _e(e,t,n,o,r){let i=e,s=t;return n!=="y"&&(i=Math.max(o.left,Math.min(o.right-r.width,e))),n!=="x"&&(s=Math.max(o.top,Math.min(o.bottom-r.height,t))),{x:i,y:s}}function Ge(e,t,n,o,r){if(!e||!t)return{x:0,y:0};const i=t.getBoundingClientRect(),s=i.width||r?.width||0,a=i.height||r?.height||0;let c=e.current.x-s*e.offset.x,u=e.current.y-a*e.offset.y;if(!n)return{x:c,y:u};const g=ze(n,o);if(!g)return{x:c,y:u};const{element:f,entity:y}=g,d=f.getBoundingClientRect(),m=n.getBoundingClientRect(),b=Fe(c,u,y.axis||"both",m);return y.restrictToArea?_e(b.x,b.y,y.axis||"both",d,i):b}const z={forDrag:["Enter","Space"],forCancel:["Escape"],forDrop:["Enter","Space"],forMove:["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","KeyW","KeyA","KeyS","KeyD"],forMoveFaster:["ShiftLeft","ShiftRight"]};function Ie(e,t){const n=l.shallowRef(),o=l.ref(),i={keys:{pressedKeys:l.ref(new Set),forDrag:[...z.forDrag],forCancel:[...z.forCancel],forDrop:[...z.forDrop],forMove:[...z.forMove],forMoveFaster:[...z.forMoveFaster]},step:8,moveFaster:4},s=l.reactive({draggableMap:new Map,droppableMap:new Map,selectableAreaMap:new Map,constraintsAreaMap:new Map,initiatingDraggable:void 0,selectingArea:void 0,draggingMap:new Map,selectedSet:new Set,allowedDroppableSet:l.computed(()=>n.value?Ae(s.visibleDroppableSet,s.draggingMap,s.draggableMap,s.droppableMap):new Set),allowedDraggableSet:l.computed(()=>n.value?xe(s.visibleDraggableSet,s.draggingMap,s.draggableMap):new Set),modifiersSelectableAreaSet:l.computed(()=>ne(s.selectableAreaMap,s.visibleSelectableAreaSet,i.keys.pressedKeys)),modifiersDraggableSet:l.computed(()=>ne(s.draggableMap,s.visibleDraggableSet,i.keys.pressedKeys,S=>L(S,{entities:s}))),visibleDraggableSet:new Set,visibleDroppableSet:new Set,visibleSelectableAreaSet:new Set}),a=l.reactive({draggable:new Map,droppable:new Map}),c={throttle:l.shallowRef(0)},u=l.reactive({x:window.scrollX,y:window.scrollY}),g=l.reactive({progress:0,startTime:0}),f=l.computed(()=>{if(!o.value||!s.initiatingDraggable)return 0;const S=s.draggableMap.get(s.initiatingDraggable)?.activation?.distance;return S?Pe(o.value,S):1}),y=X(s.visibleDraggableSet),d=X(s.visibleDroppableSet),m=X(s.visibleSelectableAreaSet),{overlaySize:b,overlaySizeObserver:M}=Le(e),D=l.ref(),R=l.computed(()=>{const p=s.initiatingDraggable;return Ge(o.value,e.value,p||null,s.constraintsAreaMap,b.value)}),A=l.computed({get:()=>t?.overlayTo,set:p=>A.value=p}),G=l.computed(()=>t?.autoScrollViewport);return{state:n,pointer:o,entities:s,keyboard:i,scrollPosition:u,delay:g,distanceProgress:f,hovered:a,collision:c,overlay:{size:b,position:R,render:D,ref:e,to:A},lib:{draggableObserver:y,droppableObserver:d,selectableAreaObserver:m,overlaySizeObserver:M},autoScrollViewport:G}}const H=e=>{e.pointer.value=void 0,e.state.value=void 0,e.entities.selectingArea=void 0,e.entities.initiatingDraggable=void 0,e.delay.progress=0,e.delay.startTime=0,e.entities.draggingMap.clear(),e.hovered.draggable.clear(),e.hovered.droppable.clear()},Ke=e=>{const t=e.entities.initiatingDraggable;if(!t)return;const o=e.entities.draggableMap.get(t)?.payload;if(!o)return;const r=o();if(!Array.isArray(r)||r.length<2)return;const[i,s,a]=r;return{index:Number(i),items:Array.isArray(s)?s:[],dropData:a}},He=(e,t)=>{const o=e.entities.droppableMap.get(t)?.payload;if(!o)return;const r=o();if(!Array.isArray(r)||r.length<1)return;const[i,s]=r;return{items:Array.isArray(i)?i:[],userData:s}},B=e=>e.keys().next().value,Ne=e=>e.target.closest(F.DRAGGABLE),E=(e,t)=>{const n={payload:Ke(e),provider:e};return t&&(n.dropZonePayload=He(e,t)),n},$=(e,t,n)=>{const o=Ne(t);if(!o||!e.entities.draggingMap.has(o))return;const r=E(e);e.entities.draggingMap.get(o)?.events?.[n]?.(r)},T=(e,t,n)=>{if(!t||L(t,e))return;const o=E(e);e.entities.draggableMap.get(t)?.events?.[n]?.(o)},w=(e,t)=>{const n=E(e);e.entities.draggableMap.forEach((o,r)=>{L(r,e)||o.events?.[t]?.(n)})},Ue=(e,t,n)=>{if(t!==n){if(t&&!P(t,e)){const o=E(e,t);e.entities.droppableMap.get(t)?.events?.onLeave?.(o)}if(n&&!P(n,e)){const o=E(e,n);e.entities.droppableMap.get(n)?.events?.onEnter?.(o)}}},Ye=(e,t,n)=>{if(t!==n){const o=E(e);t&&!L(t,e)&&e.entities.draggableMap.get(t)?.events?.onLeave?.(o),n&&!L(n,e)&&e.entities.draggableMap.get(n)?.events?.onHover?.(o)}},Xe=(e,t)=>{const n=B(t.droppable);if(n&&!P(n,e)){const o=E(e,n);e.entities.droppableMap.get(n)?.events?.onLeave?.(o)}},pe=(e,t)=>{const n=B(t.droppable);if(n&&!P(n,e)){const o=E(e,n);e.entities.droppableMap.get(n)?.events?.onLeave?.(o)}},$e=(e,t,n)=>{if(!n)return{};const o=n.getBoundingClientRect(),r=Math.max(o.left,Math.min(e.x,t.x)),i=Math.max(o.top,Math.min(e.y,t.y)),s=Math.min(o.right,Math.max(e.x,t.x)),a=Math.min(o.bottom,Math.max(e.y,t.y)),c=Math.max(0,s-r),u=Math.max(0,a-i);return{left:`${r}px`,top:`${i}px`,width:`${c}px`,height:`${u}px`,position:"fixed",pointerEvents:"none",border:"1px solid #3b82f6",backgroundColor:"#3b82f61a"}},Ze=e=>{if(!e.pointer.value||!e.entities.selectingArea)return;const{selectingArea:t}=e.entities,n=Ve(e.pointer.value.start,e.pointer.value.current),o=e.entities.selectableAreaMap.get(t)?.groups??[];e.entities.visibleDraggableSet.forEach(r=>{if(!t.contains(r))return;if(L(r,e)){e.entities.selectedSet.delete(r);return}const s=e.entities.draggableMap.get(r)?.groups??[];if(!ee(o,s)){e.entities.selectedSet.delete(r);return}Me(n,r.getBoundingClientRect())?e.entities.selectedSet.add(r):e.entities.selectedSet.delete(r)})},Ve=(e,t)=>{const n=Math.min(e.x,t.x),o=Math.min(e.y,t.y),r=Math.max(e.x,t.x),i=Math.max(e.y,t.y),s=r-n,a=i-o;return new DOMRect(n,o,s,a)},qe=(e,t,n=5)=>{const o=n/2;return{left:e-o,top:t-o,width:n,height:n}},je=e=>{const t=e.pointer.value?.current,n=t?.x??0,o=t?.y??0;return qe(n,o,5)},I=(e,t,n)=>{const o=e.left+e.width/2,r=e.top+e.height/2;if(n){const g=n.top??0,f=n.right??0,y=n.bottom??0,d=n.left??0,m=t.left+d,b=t.right-f,M=t.top+g,D=t.bottom-y;if(m<b&&M<D&&o>=m&&o<=b&&r>=M&&r<=D)return{top:!1,right:!1,bottom:!1,left:!1,center:!0}}const i=r-t.top,s=t.bottom-r,a=o-t.left,c=t.right-o,u=Math.min(i,s,a,c);return{top:i===u,bottom:s===u,left:a===u,right:c===u}},We=(e,t)=>e.find(n=>n!==t&&_(t,n)),W=(e,t,n)=>{const o=B(t.droppable),r=B(t.draggable);t.draggable.clear(),t.droppable.clear();const i=je(e),s=n.zones[0],a=n.elements[0];if(s&&a&&s===a&&e.entities.droppableMap.has(s)&&s){const f=s.getBoundingClientRect(),y=e.entities.draggableMap.get(s)?.placementMargins,d=I(i,f,y);if(d.center){t.droppable.set(s,d);const m=We(n.elements,s);if(m){const b=m.getBoundingClientRect();t.draggable.set(m,I(i,b,void 0))}}else t.draggable.set(a,d),t.droppable.set(s,d)}else{if(s){const f=s.getBoundingClientRect();t.droppable.set(s,I(i,f))}if(a){const f=a.getBoundingClientRect(),y=e.entities.draggableMap.get(a)?.placementMargins;t.draggable.set(a,I(i,f,y))}}const u=B(t.droppable),g=B(t.draggable);Ue(e,o,u),Ye(e,r,g)},Je=(e,t)=>e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y,oe=e=>{if(!e)return{x:0,y:0,width:0,height:0,top:0,left:0,right:0,bottom:0};const t=e.getBoundingClientRect();return{x:t.x,y:t.y,width:t.width,height:t.height,top:t.top,left:t.left,right:t.right,bottom:t.bottom}},re=e=>({x:e.x+e.width/2,y:e.y+e.height/2}),Qe=(e,t)=>Math.hypot(t.x-e.x,t.y-e.y),et=(e,t)=>{const n=Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x)),o=Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y)),r=n*o,i=e.width*e.height,s=t.width*t.height;return i===0||s===0?0:(r/i*100+r/s*100)/2},tt=(e,t,n)=>t>=e.x&&t<=e.x+e.width&&n>=e.y&&n<=e.y+e.height,se=()=>!0,ie=()=>0,nt=()=>{const e={filterElements:se,filterZones:se,sortElements:ie,sortZones:ie},t=(o,r,i,s,a,c,u)=>{const g=new Set(s),f={containerBox:r,pointer:i},y=[...s].filter(d=>a(d,o)).map(d=>{const m=oe(d);if(!u(m,f))return null;let b=0;for(const M of g)M!==d&&_(M,d)&&b++;return{node:d,box:m,meta:{isPointerInElement:tt(m,i.x,i.y),overlapPercent:et(m,r),depth:b,centerDistance:Qe(re(r),re(m))}}}).filter(d=>d!==null);return y.sort((d,m)=>c(d,m,f)),y.map(d=>d.node)},n={container(o){return e.container=o,n},containerBox(o){return e.containerBox=o,n},elements(o){return e.elements=o,n},zones(o){return e.zones=o,n},filterElements(o){return e.filterElements=o,n},filterZones(o){return e.filterZones=o,n},collision(o){return e.collision=o,n},sortElements(o){return e.sortElements=o,n},sortZones(o){return e.sortZones=o,n},build(){const o=e;if(!o.container||!o.elements||!o.zones||!o.collision)throw new Error("sensor: container, elements, zones, collision are required");return r=>{const i=o.container(r);if(!i)return{elements:[],zones:[]};const s=o.containerBox?o.containerBox(r):oe(i),a=r.pointer.value?.current??{x:0,y:0};return{elements:t(r,s,a,o.elements(r),o.filterElements,o.sortElements,o.collision),zones:t(r,s,a,o.zones(r),o.filterZones,o.sortZones,o.collision)}}}};return n},ot=()=>nt(),rt=e=>e.overlay.ref?.value??null,st=e=>{const t=e.overlay.position?.value??{x:0,y:0},n=e.overlay.size?.value??null,{x:o,y:r}=t,i=n?.width??0,s=n?.height??0;return{x:o,y:r,width:i,height:s,top:r,left:o,right:o+i,bottom:r+s}},it=e=>e.entities.allowedDraggableSet,at=e=>e.entities.allowedDroppableSet,lt=(e,t)=>!t.entities.draggingMap.has(e),ct=(e,t)=>![...t.entities.draggingMap.keys()].some(n=>_(n,e)),ut=(e,t)=>t.entities.draggableMap.has(e)?!L(e,t):t.entities.droppableMap.has(e)?!P(e,t):!0,ae=(e,t)=>lt(e,t)&&ct(e,t)&&ut(e,t),gt=(e,t)=>Je(e,t.containerBox),le=(e,t,n)=>{if(n.pointer.x>=n.containerBox.x&&n.pointer.x<=n.containerBox.x+n.containerBox.width&&n.pointer.y>=n.containerBox.y&&n.pointer.y<=n.containerBox.y+n.containerBox.height){if(e.meta.isPointerInElement&&t.meta.isPointerInElement)return t.meta.depth-e.meta.depth;if(e.meta.isPointerInElement!==t.meta.isPointerInElement)return e.meta.isPointerInElement?-1:1}return Math.abs(e.meta.overlapPercent-t.meta.overlapPercent)<=1?e.meta.centerDistance-t.meta.centerDistance:t.meta.overlapPercent-e.meta.overlapPercent},J=ot().container(rt).containerBox(st).elements(it).zones(at).filterElements(ae).filterZones(ae).collision(gt).sortElements(le).sortZones(le).build();function ce(e){const n=(e.collision?.run??J)(e);W(e,e.hovered,n)}function ft(e,t){const n=e.collision?.throttle?.value??0;if(n<=0){ce(e);return}const o=Date.now();o-t.value>=n&&(t.value=o,ce(e))}async function he(e){const t=e.hovered.droppable.keys().next().value;if(!t||P(t,e))return!0;const n=e.entities.droppableMap.get(t),o=E(e,t),r=n?.events?.onDrop?.(o);if(r!=null&&typeof r.then=="function")try{return await r,!0}catch{const s=e.entities.initiatingDraggable;return T(e,s,"onSelfDragCancel"),w(e,"onDragCancel"),pe(e,e.hovered),!1}return!0}function De(e){const t=e.entities.initiatingDraggable;T(e,t,"onSelfDragEnd"),w(e,"onDragEnd"),Xe(e,e.hovered)}function dt(e){const t=e.entities.selectingArea;if(!t)return;const n=e.entities.selectableAreaMap.get(t),o=[...e.entities.selectedSet];n?.events?.onSelected?.(o)}const yt=e=>{const t={current:null},n={value:0},o=async()=>{q(),t.current?.cancel(),t.current=null;const a=e.state.value;if(a==="dragging"){if(!await he(e)){H(e),document.removeEventListener("pointerup",o),document.removeEventListener("pointermove",r);return}De(e)}else a==="selecting"&&dt(e);H(e),document.removeEventListener("pointerup",o),document.removeEventListener("pointermove",r)},r=a=>{if(e.pointer.value){if(e.pointer.value.current={x:a.clientX,y:a.clientY},Re(e)){$(e,a,"onSelfDragStart"),w(e,"onDragStart");return}if(e.state.value==="dragging"){ft(e,n);const c=e.entities.initiatingDraggable;T(e,c,"onSelfDragMove"),w(e,"onDragMove")}e.state.value==="selecting"&&Ze(e)}};return{pointerDown:a=>{document.addEventListener("pointerup",o),document.addEventListener("pointermove",r);const c=a.target,u=c.closest(F.SELECT_AREA),g=c.closest(F.DRAGGABLE);if(e.entities.modifiersSelectableAreaSet.size>0&&e.entities.modifiersSelectableAreaSet.has(u)){V(),e.pointer.value=j(a),e.state.value="selecting",e.entities.selectingArea=u;return}if(e.entities.modifiersDraggableSet.size>0&&e.entities.modifiersDraggableSet.has(g)){const f=e.entities.draggableMap.get(g);if(!me(c,g,f?.dragHandle))return;V(),e.entities.initiatingDraggable=g;const y=de(a,g);e.pointer.value=j(a,y.x,y.y),f?.activation?.distance||f?.activation?.delay?(e.state.value="activating",f?.activation?.delay&&(e.delay.startTime=Date.now(),t.current=Oe(e,()=>{K(e),$(e,a,"onSelfDragStart"),w(e,"onDragStart")}))):(K(e),$(e,a,"onSelfDragStart"),w(e,"onDragStart"))}},pointerUp:o,pointerMove:r,cleanup:()=>{t.current?.cancel(),document.removeEventListener("pointerup",o),document.removeEventListener("pointermove",r),e.lib.draggableObserver.disconnect(),e.lib.droppableObserver.disconnect(),e.lib.selectableAreaObserver.disconnect(),e.lib.overlaySizeObserver.disconnect()}}},mt={ArrowUp:{dx:0,dy:-1},ArrowDown:{dx:0,dy:1},ArrowLeft:{dx:-1,dy:0},ArrowRight:{dx:1,dy:0},KeyW:{dx:0,dy:-1},KeyA:{dx:-1,dy:0},KeyS:{dx:0,dy:1},KeyD:{dx:1,dy:0}},bt=e=>t=>{const{keys:n}=e.keyboard;if(n.pressedKeys.value.add(t.code),e.state.value==="dragging"){if(n.forCancel.includes(t.code)){t.preventDefault(),q(),T(e,e.entities.initiatingDraggable,"onSelfDragCancel"),w(e,"onDragCancel"),pe(e,e.hovered),H(e);return}if(n.forDrop.includes(t.code)){t.preventDefault(),(async()=>(await he(e)&&De(e),q(),H(e)))();return}const r=mt[t.code];if(r&&n.forMove.includes(t.code)&&e.pointer.value){t.preventDefault();const i=n.forMoveFaster.some(u=>n.pressedKeys.value.has(u)),s=e.keyboard.step*(i?e.keyboard.moveFaster:1);e.pointer.value.current={x:e.pointer.value.current.x+r.dx*s,y:e.pointer.value.current.y+r.dy*s};const c=(e.collision?.run??J)(e);W(e,e.hovered,c),T(e,e.entities.initiatingDraggable,"onSelfDragMove"),w(e,"onDragMove");return}return}if(n.forDrag.includes(t.code)){const r=document.activeElement;if(!r)return;const i=r.closest(F.DRAGGABLE);if(!i||e.entities.modifiersDraggableSet.size===0||!e.entities.modifiersDraggableSet.has(i))return;const s=e.entities.draggableMap.get(i);if(!me(r,i,s?.dragHandle,!0))return;t.preventDefault(),V();const a=i.getBoundingClientRect(),c=a.left+a.width/2,u=a.top+a.height/2,g={clientX:c,clientY:u};e.entities.initiatingDraggable=i;const f=de(g,i);e.pointer.value=j(g,f.x,f.y),K(e);const d=(e.collision?.run??J)(e);W(e,e.hovered,d),T(e,i,"onSelfDragStart"),w(e,"onDragStart")}},pt=e=>t=>{e.keyboard.keys.pressedKeys.value.delete(t.code)},ht=e=>()=>{e.keyboard.keys.pressedKeys.value.clear()},Z={keyDown:bt,keyUp:pt,clear:ht},Dt=e=>()=>{e.state.value&&(e.scrollPosition.x=window.scrollX,e.scrollPosition.y=window.scrollY)},x=50,St=144,ue=1e3/St;function vt(e){return e==null?{top:x,right:x,bottom:x,left:x}:typeof e=="number"?{top:e,right:e,bottom:e,left:e}:{top:e.top??x,right:e.right??x,bottom:e.bottom??x,left:e.left??x}}const wt={getScrollState(e){return{scrollTop:e.scrollTop,scrollLeft:e.scrollLeft,rect:e.getBoundingClientRect()}},setScroll(e,t,n){e.scrollTop=t,e.scrollLeft=n}};function Se(e,t,n,o=wt,r){const{speed:i=10,disabled:s=!1}=t,a=vt(t.threshold);let c=null,u=null,g=null,f=0,y=0;const d=D=>{r&&(r.value=D)},m=D=>{const R=e.value,A=n();if(!R||!A||s){d(!1);return}u||(u=D);const G=D-u;if(G<ue){c=requestAnimationFrame(m);return}const p=i*(G/ue);u=D;const{scrollTop:S,scrollLeft:O,rect:ve}=o.getScrollState(R);(!g||f!==S||y!==O)&&(g=ve,f=S,y=O);let C=!1,U=S,Y=O;a.top>0&&A.y-g.top<a.top?(U=S-p,C=!0):a.bottom>0&&g.bottom-A.y<a.bottom&&(U=S+p,C=!0),a.left>0&&A.x-g.left<a.left?(Y=O-p,C=!0):a.right>0&&g.right-A.x<a.right&&(Y=O+p,C=!0),C&&o.setScroll(R,U,Y),d(C),c=requestAnimationFrame(m)};return{run:()=>{u=null,c=requestAnimationFrame(m)},stop:()=>{c&&(cancelAnimationFrame(c),c=null),g=null,f=0,y=0,u=null,d(!1)}}}const Et={getScrollState(){return{scrollTop:window.scrollY??document.documentElement.scrollTop,scrollLeft:window.scrollX??document.documentElement.scrollLeft,rect:new DOMRect(0,0,window.innerWidth,window.innerHeight)}},setScroll(e,t,n){window.scrollTo(n,t)}},Mt={get value(){return typeof document<"u"?document.documentElement:null}};function At(e,t){const n=l.shallowRef(!1),r=Se(Mt,t??{},()=>{if(e.state.value!=="dragging")return null;const a=e.overlay.position.value,c=e.overlay.size.value;return a?c?.width&&c?.height?{x:a.x+c.width/2,y:a.y+c.height/2}:a:null},Et,n),i=l.watch(()=>e.state.value,a=>{a==="dragging"?r.run():r.stop()}),s=()=>{i(),r.stop()};return l.onScopeDispose(s),{isScrolling:n,stop:s}}const xt=e=>{const t=yt(e),n=Z.keyDown(e),o=Z.keyUp(e),r=Z.clear(e),i=Dt(e);let s=null;l.watch(e.autoScrollViewport,a=>{s?.(),s=null,(a===!0||a&&typeof a=="object")&&(s=At(e,a===!0?{}:a).stop)},{immediate:!0}),l.onMounted(()=>{document.addEventListener("pointerdown",t.pointerDown),document.addEventListener("keydown",n),document.addEventListener("keyup",o),document.addEventListener("blur",r),document.addEventListener("scroll",i,!0)}),l.onBeforeUnmount(()=>{document.removeEventListener("pointerdown",t.pointerDown),document.removeEventListener("pointerup",t.pointerUp),document.removeEventListener("pointermove",t.pointerMove),document.removeEventListener("keydown",n),document.removeEventListener("keyup",o),document.removeEventListener("blur",r),document.removeEventListener("scroll",i,!0),s?.(),t.cleanup()})},N=()=>{const e=l.inject(Q);if(!e)throw Error("DnD provider not found");return e},te=()=>{const e=N();return{overlay:e.overlay,delay:e.delay,distanceProgress:e.distanceProgress,entities:e.entities,pointer:e.pointer,state:e.state,scrollPosition:e.scrollPosition,keyboard:e.keyboard,hovered:e.hovered,collision:e.collision,autoScrollViewport:e.autoScrollViewport}},kt=l.defineComponent({__name:"DefaultOverlay",setup(e){const{entities:t,state:n,overlay:o}=te();return(r,i)=>l.unref(n)==="dragging"?(l.openBlock(),l.createElementBlock("div",{key:0,class:"dnd-kit-default-overlay",style:l.normalizeStyle({"--position-x":l.unref(o).position.value.x+"px","--position-y":l.unref(o).position.value.y+"px"})},[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(l.unref(t).draggingMap,([s,a])=>(l.openBlock(),l.createElementBlock(l.Fragment,null,[l.unref(t).draggableMap.get(s)?.render?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(t).draggableMap.get(s)?.render),{key:0})):(l.openBlock(),l.createBlock(l.resolveDynamicComponent(s.tagName),{key:1,innerHTML:a.initialOuterHTML,style:l.normalizeStyle({width:a.initialRect.width+"px",height:a.initialRect.height+"px"})},null,8,["innerHTML","style"]))],64))),256))],4)):l.createCommentVNode("",!0)}}),Lt=l.defineComponent({__name:"DnDProvider",props:{autoScrollViewport:{type:[Object,Boolean,null]},overlayTo:{type:[String,Boolean,null]}},setup(e){const t=e,n=l.useTemplateRef("overlayRef"),o=Ie(n,t);xt(o);const r=l.computed(()=>o.overlay.render.value??kt);return l.provide(Q,o),(i,s)=>(l.openBlock(),l.createElementBlock(l.Fragment,null,[l.renderSlot(i.$slots,"default"),(l.openBlock(),l.createBlock(l.Teleport,{to:l.unref(o).overlay.to.value||"body"},[l.createElementVNode("div",{ref_key:"overlayRef",ref:n,class:"dnd-kit-overlay-container"},[l.renderSlot(i.$slots,"overlay",{overlay:r.value},()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(r.value)))])],512)],8,["to"]))],64))}});function Ct(e,t,n){const o=N();let r,i,s;typeof t=="function"?(r={},i=t):(r=t??{},i=n);const a=l.computed({get(){const g=v(e);return g?o.entities.selectedSet.has(g):!1},set(g){const f=v(e);f&&o.entities.selectedSet[g?"add":"delete"](f)}}),c=l.computed(()=>{const g=v(e);return g?o.entities.draggingMap.has(g):!1}),u=l.computed(()=>{const g=v(e);return g?o.entities.allowedDraggableSet.has(g):!1});return l.onMounted(()=>{s=v(e),s&&(s.addEventListener("dragstart",h),s.addEventListener("drag",h),s.addEventListener("dragend",h),s.setAttribute(k.DRAGGABLE,""),o.lib.draggableObserver.observe(s),o.entities.draggableMap.set(s,{render:r.render,disabled:r.disabled??!1,groups:r.groups??[],modifier:r.modifier,events:r.events,payload:i,dragHandle:r.dragHandle,activation:r.activation,placementMargins:r.placementMargins}))}),l.onBeforeUnmount(()=>{s&&(o.lib.draggableObserver.unobserve(s),o.entities.visibleDraggableSet.delete(s),o.entities.draggableMap.delete(s),o.entities.modifiersDraggableSet.delete(s))}),{selected:a,isDragging:c,isAllowed:u}}const Bt=(e,t)=>{const n=N(),o=l.computed(()=>e.value===n.entities.selectingArea);let r=null;l.onMounted(()=>{r=v(e),r&&(r.setAttribute(k.SELECT_AREA,""),n.lib.selectableAreaObserver.observe(r),n.entities.selectableAreaMap.set(r,{modifier:t?.modifier??{keys:["ControlLeft"],method:"every"},events:t?.events,disabled:t?.disabled??!1,groups:t?.groups??[]}))}),l.onBeforeUnmount(()=>{r&&(n.lib.selectableAreaObserver.unobserve(r),n.entities.visibleSelectableAreaSet.delete(r),n.entities.modifiersSelectableAreaSet.delete(r),n.entities.selectableAreaMap.delete(r))});const i=l.computed(()=>{n.scrollPosition.x,n.scrollPosition.y;const s=n.pointer.value;return!s||n.state.value!=="selecting"||!r?{}:$e(s.start,s.current,r)});return{isSelecting:o,style:i}};function Tt(e,t){const n=l.inject(Q);if(!n)throw Error("DnD provider not found");let o=null;return l.onMounted(()=>{o=v(e),o&&(o.setAttribute(k.CONSTRAINT_AREA,""),n.entities.constraintsAreaMap.set(o,{axis:t?.axis||"both",restrictToArea:t?.restrictToArea||!1}))}),l.onBeforeUnmount(()=>{o&&n.entities.constraintsAreaMap.delete(o)}),{}}function Pt(e,t,n){const o=N();let r=null,i,s;typeof t=="function"?(i={},s=t):(i=t??{},s=n);const a=l.computed(()=>{const c=v(e);return c?o.entities.allowedDroppableSet.has(c):!1});return l.onMounted(()=>{r=v(e),r&&(r.setAttribute(k.DROPPABLE,""),o.lib.droppableObserver.observe(r),o.entities.droppableMap.set(r,{disabled:i.disabled??!1,groups:i.groups??[],events:i.events,payload:s}))}),l.onBeforeUnmount(()=>{r&&(o.lib.droppableObserver.unobserve(r),o.entities.visibleDroppableSet.delete(r),o.entities.droppableMap.delete(r))}),{isAllowed:a}}const Rt=(e,t)=>{const n=te(),o=l.shallowRef(!1),i=Se(e,t??{},()=>{if(n.state.value!=="dragging")return null;const s=n.overlay.position.value,a=n.overlay.size.value;return s?a?.width&&a?.height?{x:s.x+a.width/2,y:s.y+a.height/2}:s:null},void 0,o);return l.watch(()=>n.state.value,s=>{s==="dragging"?i.run():i.stop()}),{isScrolling:o}};function ge(e,t){return t<=0?e:Math.round(e/t)*t}function Ot(e,t){const n=t&&"grid"in t&&t.grid!=null,o=t?n?t.grid:t.gridX:1,r=t?n?t.grid:t.gridY:1;return l.computed(()=>{const{x:i,y:s}=e.value;return{x:ge(i,o),y:ge(s,r)}})}exports.DnDProvider=Lt;exports.makeAutoScroll=Rt;exports.makeConstraintArea=Tt;exports.makeDraggable=Ct;exports.makeDroppable=Pt;exports.makeSelectionArea=Bt;exports.makeSnappedOverlayPosition=Ot;exports.useDnDProvider=te;