@vue-dnd-kit/core
Version:
Core functionality for Vue DnD Kit - a lightweight Vue 3 library for building performant and accessible drag and drop interfaces
3 lines (2 loc) • 24.7 kB
JavaScript
;var re=Object.defineProperty;var ae=(n,e,t)=>e in n?re(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var Z=(n,e,t)=>ae(n,typeof e!="symbol"?e+"":e,t);Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("vue"),q=require("@vueuse/core"),x=class x{};Z(x,"remove",(e,t)=>{if(!e||t===void 0)return;const[l]=e.splice(t,1);return l}),Z(x,"insert",(e,t,l)=>{!e||t===void 0||e.splice(t,0,l)}),Z(x,"move",(e,t,l,s)=>{if(!e||!l||t===void 0||s===void 0)return;const o=x.remove(e,t);x.insert(l,s,o)}),Z(x,"swap",(e,t,l,s)=>{if(!e||!l||t===void 0||s===void 0)return;const o=e[t],u=l[s];e[t]=u,l[s]=o}),Z(x,"copy",(e,t,l,s)=>{if(!e||t===void 0||!l||s===void 0)return;const o=e[t];x.insert(l,s,o)}),Z(x,"applyTransfer",e=>{var s,o,u,m,i,v,f;const t=e.hovered.element.value,l=e.hovered.zone.value;if(t){const g=(o=(s=e.elementsMap.value.get(t))==null?void 0:s.data)==null?void 0:o.source,a=(m=(u=e.elementsMap.value.get(t))==null?void 0:u.data)==null?void 0:m.index,d=e.draggingElements.value.values().next().value,c=(i=d==null?void 0:d.data)==null?void 0:i.index,p=c!==void 0&&a!==void 0&&c>a?1:-1;Array.from(e.draggingElements.value.values()).sort((h,A)=>{var L,S;return p*((((L=h.data)==null?void 0:L.index)||0)-(((S=A.data)==null?void 0:S.index)||0))}).forEach(h=>{var A,L;return x.move((A=h.data)==null?void 0:A.source,(L=h.data)==null?void 0:L.index,g,a)})}else if(l){const g=(f=(v=e.zonesMap.value.get(l))==null?void 0:v.data)==null?void 0:f.source,a=g==null?void 0:g.length;Array.from(e.draggingElements.value.values()).sort((c,p)=>{var y,h;return(((y=p.data)==null?void 0:y.index)||0)-(((h=c.data)==null?void 0:h.index)||0)}).forEach(c=>{var p,y;return x.move((p=c.data)==null?void 0:p.source,(y=c.data)==null?void 0:y.index,g,a)})}}),Z(x,"applyCopy",e=>{var s,o,u,m,i,v;const t=e.hovered.element.value,l=e.hovered.zone.value;if(t){const f=(o=(s=e.elementsMap.value.get(t))==null?void 0:s.data)==null?void 0:o.source,g=(m=(u=e.elementsMap.value.get(t))==null?void 0:u.data)==null?void 0:m.index;Array.from(e.draggingElements.value.values()).sort((d,c)=>{var p,y;return(((p=c.data)==null?void 0:p.index)||0)-(((y=d.data)==null?void 0:y.index)||0)}).forEach(d=>{var c,p;return x.copy((c=d.data)==null?void 0:c.source,(p=d.data)==null?void 0:p.index,f,g)})}else if(l){const f=(v=(i=e.zonesMap.value.get(l))==null?void 0:i.data)==null?void 0:v.source,g=f==null?void 0:f.length;Array.from(e.draggingElements.value.values()).sort((d,c)=>{var p,y;return(((p=c.data)==null?void 0:p.index)||0)-(((y=d.data)==null?void 0:y.index)||0)}).forEach(d=>{var c,p;return x.copy((c=d.data)==null?void 0:c.source,(p=d.data)==null?void 0:p.index,f,g)})}}),Z(x,"applySwap",e=>{var s,o,u,m,i,v,f,g;const t=e.hovered.element.value,l=e.hovered.zone.value;if(t&&e.draggingElements.value.size===1){const a=e.draggingElements.value.values().next().value;x.swap((s=a==null?void 0:a.data)==null?void 0:s.source,(o=a==null?void 0:a.data)==null?void 0:o.index,(m=(u=e.elementsMap.value.get(t))==null?void 0:u.data)==null?void 0:m.source,(v=(i=e.elementsMap.value.get(t))==null?void 0:i.data)==null?void 0:v.index)}else if(l){const a=(g=(f=e.zonesMap.value.get(l))==null?void 0:f.data)==null?void 0:g.source,d=a==null?void 0:a.length;Array.from(e.draggingElements.value.values()).sort((p,y)=>{var h,A;return(((h=y.data)==null?void 0:h.index)||0)-(((A=p.data)==null?void 0:A.index)||0)}).forEach(p=>{var y,h;return x.move((y=p.data)==null?void 0:y.source,(h=p.data)==null?void 0:h.index,a,d)})}}),Z(x,"applyRemove",e=>{Array.from(e.draggingElements.value.values()).sort((l,s)=>{var o,u;return(((o=s.data)==null?void 0:o.index)||0)-(((u=l.data)==null?void 0:u.index)||0)}).forEach(l=>{var s,o;(s=l.data)!=null&&s.source&&((o=l.data)==null?void 0:o.index)!==void 0&&x.remove(l.data.source,l.data.index)})}),Z(x,"applyInsert",(e,t)=>{var o,u,m,i,v,f;const l=e.hovered.element.value,s=e.hovered.zone.value;if(l&&t.length>0){const g=(u=(o=e.elementsMap.value.get(l))==null?void 0:o.data)==null?void 0:u.source,a=(i=(m=e.elementsMap.value.get(l))==null?void 0:m.data)==null?void 0:i.index;t.forEach(d=>{x.insert(g,a,d)})}else if(s){const g=(f=(v=e.zonesMap.value.get(s))==null?void 0:v.data)==null?void 0:f.source,a=g==null?void 0:g.length;t.forEach(d=>{x.insert(g,a,d)})}});let G=x;const T=q.createGlobalState(()=>{const n=r.shallowRef(!1),e=r.ref(new Map),t=r.computed(()=>e.value.size>0),l={component:r.ref(null),ref:r.shallowRef(null),options:r.shallowRef(null),props:r.shallowRef(null),animating:{enter:r.shallowRef(!1),leave:r.shallowRef(!1),appear:r.shallowRef(!1)}},s=r.ref(new Map),o=r.ref(new Set),u=r.ref(new Map),m=r.shallowRef(new Set),i=r.shallowRef(new Set),v=typeof window<"u"&&"IntersectionObserver"in window,f=v?new IntersectionObserver(M=>{M.forEach(E=>i.value[E.isIntersecting?"add":"delete"](E.target))}):null,g=v?new IntersectionObserver(M=>{M.forEach(E=>m.value[E.isIntersecting?"add":"delete"](E.target))}):null,a=(M,E)=>{f&&(M==="add"?f.observe(E):(f.unobserve(E),i.value.delete(E)))},d=(M,E)=>{g&&(M==="add"?g.observe(E):(g.unobserve(E),m.value.delete(E)))},c={start:r.shallowRef(null),current:r.shallowRef(null),offset:{percent:r.shallowRef(null),pixel:r.shallowRef(null)}},{KeyW:p,KeyS:y,KeyA:h,KeyD:A,ctrl:L,shift:S,alt:O,meta:k}=q.useMagicKeys(),P={zone:r.shallowRef(null),element:r.shallowRef(null)};return{draggingElements:e,isDragging:t,activeContainer:l,elementsMap:s,selectedElements:o,zonesMap:u,visibleZones:m,visibleElements:i,pointerPosition:c,keyboard:{w:p,s:y,a:h,d:A,ctrl:L,shift:S,alt:O,meta:k},hovered:P,isPending:n,handleDragElementIntersection:a,handleDropZoneIntersection:d}}),ne=n=>{const e=r.ref(null),{draggingElements:t,pointerPosition:l,isDragging:s,activeContainer:o}=T();return r.onMounted(()=>{o.ref=e,o.options.value=n??null}),r.onUnmounted(()=>{o.ref.value=null,o.options.value=null}),{elementRef:e,draggingElements:t,pointerPosition:l,isDragging:s,animating:o.animating}},le=["innerHTML"],se=r.defineComponent({__name:"DefaultOverlay",props:{styles:{}},setup(n){const{elementRef:e,pointerPosition:t,isDragging:l,draggingElements:s}=ne(),o=r.computed(()=>{var u,m,i,v;return{transform:`translate3d(${(((u=t.current.value)==null?void 0:u.x)??0)-(((m=t.offset.pixel.value)==null?void 0:m.x)??0)}px, ${(((i=t.current.value)==null?void 0:i.y)??0)-(((v=t.offset.pixel.value)==null?void 0:v.y)??0)}px, 0)`,zIndex:1e3,position:"fixed",top:0,left:0,transition:"0.3s cubic-bezier(0.165, 0.84, 0.44, 1)",...n.styles}});return(u,m)=>r.unref(l)?(r.openBlock(),r.createElementBlock("div",{key:0,ref_key:"elementRef",ref:e,style:r.normalizeStyle(o.value)},[(r.openBlock(!0),r.createElementBlock(r.Fragment,null,r.renderList(r.unref(s),([i,v])=>{var f,g;return r.openBlock(),r.createElementBlock(r.Fragment,{key:v.id},[v.layer?(r.openBlock(),r.createBlock(r.resolveDynamicComponent(v.layer),{key:0,node:i,data:v.data,id:v.id,groups:v.groups},null,8,["node","data","id","groups"])):(r.openBlock(),r.createElementBlock("div",{key:1,innerHTML:v.initialHTML,style:r.normalizeStyle({width:`${(f=v.initialRect)==null?void 0:f.width}px`,height:`${(g=v.initialRect)==null?void 0:g.height}px`})},null,12,le))],64)}),128))],4)):r.createCommentVNode("",!0)}}),W=r.defineComponent({__name:"DragOverlay",props:{styles:{}},setup(n){const e=n,{activeContainer:t}=T(),l=r.computed(()=>({component:t.component.value??se,props:{...e,...t.props.value}}));return(s,o)=>r.unref(t).options.value?(r.openBlock(),r.createBlock(r.Transition,{key:0,name:r.unref(t).options.value.name,duration:r.unref(t).options.value.duration,"enter-from-class":r.unref(t).options.value.enterFromClass,"enter-to-class":r.unref(t).options.value.enterToClass,"enter-active-class":r.unref(t).options.value.enterActiveClass,"leave-from-class":r.unref(t).options.value.leaveFromClass,"leave-to-class":r.unref(t).options.value.leaveToClass,"leave-active-class":r.unref(t).options.value.leaveActiveClass,"appear-active-class":r.unref(t).options.value.appearActiveClass,"appear-from-class":r.unref(t).options.value.appearFromClass,"appear-to-class":r.unref(t).options.value.appearToClass,mode:r.unref(t).options.value.mode,type:r.unref(t).options.value.type,css:r.unref(t).options.value.css,appear:!0,persisted:r.unref(t).options.value.persisted,onEnter:r.unref(t).options.value.onEnter,onLeave:r.unref(t).options.value.onLeave,onBeforeEnter:r.unref(t).options.value.onBeforeEnter,onBeforeLeave:r.unref(t).options.value.onBeforeLeave,onBeforeAppear:r.unref(t).options.value.onBeforeAppear,onAfterEnter:r.unref(t).options.value.onAfterEnter,onAfterLeave:r.unref(t).options.value.onAfterLeave,onAfterAppear:r.unref(t).options.value.onAfterAppear},{default:r.withCtx(()=>[(r.openBlock(),r.createBlock(r.resolveDynamicComponent(l.value.component||l.value),r.normalizeProps(r.guardReactiveProps(l.value.props||{})),null,16))]),_:1},8,["name","duration","enter-from-class","enter-to-class","enter-active-class","leave-from-class","leave-to-class","leave-active-class","appear-active-class","appear-from-class","appear-to-class","mode","type","css","persisted","onEnter","onLeave","onBeforeEnter","onBeforeLeave","onBeforeAppear","onAfterEnter","onAfterLeave","onAfterAppear"])):(r.openBlock(),r.createBlock(r.resolveDynamicComponent(l.value.component||l.value),r.normalizeProps(r.mergeProps({key:1},l.value.props||{})),null,16))}}),oe={install(n,e){n.component("DragOverlay",W);const t=n.mount;n.mount=function(s){var m,i,v,f,g,a,d;const o=t.call(this,s),u=typeof s=="string"?document.querySelector(s):s;if(u&&u instanceof Element&&!u.querySelector("#vue-dnd-kit-overlay")){const c=document.createElement("div");c.id="vue-dnd-kit-overlay",c.style.pointerEvents="none",(m=e==null?void 0:e.overlayPosition)!=null&&m.zIndex&&(c.style.zIndex=e.overlayPosition.zIndex.toString()),(i=e==null?void 0:e.overlayPosition)!=null&&i.className&&(c.className=e.overlayPosition.className);const p=((v=e==null?void 0:e.overlayPosition)==null?void 0:v.method)||"append",y=(f=e==null?void 0:e.overlayPosition)!=null&&f.target?typeof e.overlayPosition.target=="string"?document.querySelector(e.overlayPosition.target):e.overlayPosition.target:u;if(y&&y instanceof Element)switch(p){case"prepend":y.insertBefore(c,y.firstChild);break;case"after":(g=y.parentNode)==null||g.insertBefore(c,y.nextSibling);break;case"before":(a=y.parentNode)==null||a.insertBefore(c,y);break;case"append":default:y.appendChild(c);break}else u.appendChild(c);const h=r.createVNode(W,{styles:(d=e==null?void 0:e.defaultOverlay)==null?void 0:d.styles});r.render(h,c),n.__VUE_DND_KIT_OVERLAY__={container:c,vnode:h,options:(e==null?void 0:e.defaultOverlay)||{}};const A=T();n.__VUE_DND_KIT_STORE__=A}return o};const l=n.unmount;n.unmount=function(){return n.__VUE_DND_KIT_OVERLAY__&&(r.render(null,n.__VUE_DND_KIT_OVERLAY__.container),delete n.__VUE_DND_KIT_OVERLAY__),l.call(this)}}},J=(n,e)=>n.x<e.x+e.width&&n.x+n.width>e.x&&n.y<e.y+e.height&&n.y+n.height>e.y,Y=n=>{if(!n)return{x:0,y:0,width:0,height:0,bottom:0,left:0,right:0,top:0};const e=n.getBoundingClientRect();return{bottom:e.bottom,left:e.left,right:e.right,top:e.top,x:e.x,y:e.y,width:e.width,height:e.height}},$=n=>({x:n.x+n.width/2,y:n.y+n.height/2}),ue=(n,e)=>{const t=Y(n);return{pixel:{x:e.x-t.x,y:e.y-t.y},percent:{x:(e.x-t.x)/t.width*100,y:(e.y-t.y)/t.height*100}}},Q=(n,e)=>{const t=e.x-n.x,l=e.y-n.y;return Math.sqrt(t*t+l*l)},ee=(n,e)=>{const t=Math.max(0,Math.min(n.x+n.width,e.x+e.width)-Math.max(n.x,e.x)),l=Math.max(0,Math.min(n.y+n.height,e.y+e.height)-Math.max(n.y,e.y)),s=t*l,o=n.width*n.height,u=e.width*e.height;return(s/o*100+s/u*100)/2},te="data-vue-dnd-kit-draggable",R=n=>{n.preventDefault()},V=n=>({items:Array.from(n.draggingElements.value.values())}),ie=n=>{const{elementsMap:e,draggingElements:t,hovered:l,selectedElements:s,isDragging:o,visibleElements:u,handleDragElementIntersection:m}=T(),i=r.ref(null),v=r.computed(()=>l.element.value===i.value),f=r.shallowRef((n==null?void 0:n.id)||r.useId()),g=r.shallowRef((n==null?void 0:n.disabled)??!1),a=r.computed(()=>g.value||!i.value||!e.value.has(i.value)?!1:t.value.has(i.value)),d=r.computed(()=>{if(g.value||!i.value||!o.value||!u.value.has(i.value))return!1;const h=e.value.get(i.value);return h!=null&&h.groups.length?!Array.from(t.value.entries()).some(([A,L])=>L.groups.length?!L.groups.some(S=>h.groups.includes(S)):!1):!0}),c=r.computed(()=>{if(g.value||!i.value||!o.value||!u.value.has(i.value)||l.element.value!==i.value)return!1;const h=e.value.get(i.value);return h!=null&&h.groups.length?!Array.from(t.value.entries()).some(([A,L])=>L.groups.length?!L.groups.some(S=>h.groups.includes(S)):!1):!0});return{elementRef:i,registerElement:()=>{if(!i.value)throw new Error("ElementRef is not set");e.value.set(i.value,{node:i.value,groups:(n==null?void 0:n.groups)??[],layer:(n==null?void 0:n.layer)??null,defaultLayer:(n==null?void 0:n.layer)??null,events:(n==null?void 0:n.events)??{},data:(n==null?void 0:n.data)??null,id:f.value,disabled:g??!1}),m("add",i.value),i.value.addEventListener("dragstart",R),i.value.addEventListener("drag",R),i.value.setAttribute(te,"true"),i.value.setAttribute("draggable","false")},unregisterElement:()=>{i.value&&(e.value.delete(i.value),s.value.delete(i.value),i.value.removeEventListener("dragstart",R),i.value.removeEventListener("drag",R),i.value.removeAttribute(te),i.value.removeAttribute("draggable"))},isDragging:a,isOvered:v,isAllowed:d,isLazyAllowed:c,id:f}},I=(n,e)=>n?e.contains(n):!1,ce=n=>{var f,g;const e=Y(n.activeContainer.ref.value),t=$(e),l=((f=n.pointerPosition.current.value)==null?void 0:f.x)??0,s=((g=n.pointerPosition.current.value)==null?void 0:g.y)??0,u=!(e&&l>=e.x&&l<=e.x+e.width&&s>=e.y&&s<=e.y+e.height),m=Array.from(n.draggingElements.value.keys()),i=Array.from(n.visibleElements.value.entries()).filter(([a,d])=>{if(!a)return!1;const c=Y(a);return c&&e&&J(c,e)}).map(([a,d])=>{const c=Y(a),p=$(c),y=l>=c.x&&l<=c.x+c.width&&s>=c.y&&s<=c.y+c.height,h=ee(c,e),A=Q(t,p);let L=0;for(const[S,O]of n.visibleElements.value.entries())S!==a&&S&&a&&I(a,S)&&L++;return{element:d,node:a,isPointerInElement:y,overlapPercent:h,depth:L,centerDistance:A}}).sort((a,d)=>{if(!u){if(a.isPointerInElement&&d.isPointerInElement)return d.depth-a.depth;if(a.isPointerInElement!==d.isPointerInElement)return a.isPointerInElement?-1:1}return Math.abs(a.overlapPercent-d.overlapPercent)<=1?a.centerDistance-d.centerDistance:d.overlapPercent-a.overlapPercent}),v=Array.from(n.visibleZones.value.entries()).filter(([a,d])=>{if(!a||m.some(p=>p&&I(a,p)))return!1;const c=Y(a);return c&&e&&J(c,e)}).map(([a,d])=>{const c=Y(a),p=$(c),y=l>=c.x&&l<=c.x+c.width&&s>=c.y&&s<=c.y+c.height,h=ee(c,e),A=Q(t,p);let L=0;for(const[S,O]of n.visibleZones.value.entries())S!==a&&S&&a&&I(a,S)&&L++;return{zone:d,node:a,isPointerInElement:y,overlapPercent:h,depth:L,centerDistance:A}}).sort((a,d)=>{if(!u){if(a.isPointerInElement&&d.isPointerInElement)return d.depth-a.depth;if(a.isPointerInElement!==d.isPointerInElement)return a.isPointerInElement?-1:1}return Math.abs(a.overlapPercent-d.overlapPercent)<=1?a.centerDistance-d.centerDistance:d.overlapPercent-a.overlapPercent});return[...i.map(a=>a.node),...v.map(a=>a.node)]},ve=(n,e)=>{const{pointerPosition:t,keyboard:l}=T(),s=(e==null?void 0:e.moveStep)||10;return{onKeyboardStart:i=>{var a;R(i);const v=Y(n.value);(a=n.value)==null||a.blur();const f=v.x+v.width/2,g=v.y+v.height/2;t.start.value={x:f,y:g},t.current.value={x:f,y:g},t.offset.pixel.value={x:v.width/2,y:v.height/2},t.offset.percent.value={x:50,y:50}},onKeyboardMove:()=>{if(!t.current.value)return;const i=t.current.value.x,v=t.current.value.y;let f=i,g=v;l.w.value&&(g-=s),l.s.value&&(g+=s),l.a.value&&(f-=s),l.d.value&&(f+=s),t.current.value={x:f,y:g}},onKeyboardEnd:()=>{t.current.value=null,t.start.value=null,t.offset.pixel.value=null,t.offset.percent.value=null}}},de=n=>{const e=T();return{onPointerStart:o=>{e.pointerPosition.start.value={x:o.clientX,y:o.clientY},e.pointerPosition.current.value={x:o.clientX,y:o.clientY};const{pixel:u,percent:m}=ue(n.value,{x:o.clientX,y:o.clientY});e.pointerPosition.offset.pixel.value=u,e.pointerPosition.offset.percent.value=m},onPointerMove:o=>{e.isPending.value||(e.pointerPosition.current.value={x:o.clientX,y:o.clientY})},onPointerEnd:()=>{e.pointerPosition.current.value=null,e.pointerPosition.start.value=null,e.pointerPosition.offset.pixel.value=null,e.pointerPosition.offset.percent.value=null}}},fe=(n,e)=>{var O,k;const t=T(),{onPointerStart:l,onPointerMove:s,onPointerEnd:o}=de(n),{onKeyboardStart:u,onKeyboardMove:m,onKeyboardEnd:i}=ve(n,e==null?void 0:e.keyboard);let v=null;const f=P=>{var C,z;if(!P)return new Map;const M=t.selectedElements.value.has(P);if(t.selectedElements.value.size>0&&M){const N=new Map;return t.selectedElements.value.forEach(F=>{var b,_;const w=t.elementsMap.value.get(F);w&&N.set(F,{...w,initialHTML:((b=w.node)==null?void 0:b.outerHTML)??"",initialRect:(_=w.node)==null?void 0:_.getBoundingClientRect()})}),N}t.selectedElements.value.clear();const E=t.elementsMap.value.get(P);if(!E)return new Map;const D=new Map;return D.set(P,{...E,initialHTML:((C=E.node)==null?void 0:C.outerHTML)??"",initialRect:(z=E.node)==null?void 0:z.getBoundingClientRect()}),D},g=P=>{if(!P)return{element:null,zone:null};const M=Array.isArray(P)?P:[P],E=Array.from(t.draggingElements.value.keys()),D=Array.from(t.zonesMap.value.entries()).flatMap(([w,b])=>b.disabled?[w]:[]),C=Array.from(t.elementsMap.value.entries()).flatMap(([w,b])=>b.disabled?[w]:[]),z=M.find(w=>{if(!t.visibleZones.value.has(w))return!1;const b=t.zonesMap.value.get(w);return!(!b||b.disabled||D.some(K=>w===K||I(w,K))||E.some(K=>K&&(K===b.node||I(b.node,K)))||b.groups.length&&!!Array.from(t.draggingElements.value.values()).some(U=>U.groups.length?!U.groups.some(B=>b.groups.includes(B)):!1))});return z?{element:M.filter(w=>{if(!t.visibleElements.value.has(w)||!t.elementsMap.value.has(w))return!1;const b=t.elementsMap.value.get(w);if(b!=null&&b.disabled)return!1;const _=D.some(B=>w===B||I(w,B)),K=C.some(B=>w===B||I(w,B));return _||K?!1:!Array.from(t.draggingElements.value.values()).some(B=>B.groups.length?!B.groups.some(X=>{var H;return(H=t.elementsMap.value.get(w))==null?void 0:H.groups.includes(X)}):!1)}).find(w=>E.some(_=>_&&(_===w||I(w,_)||I(_,w)))?!1:w===z||I(w,z))||null,zone:z}:{element:null,zone:null}},a=((O=e==null?void 0:e.sensor)==null?void 0:O.setup)||ce,d=P=>{var z,N,F,w,b,_,K,U,B,X,H,j;const M=t.hovered.element.value,E=t.hovered.zone.value,D=P.element,C=P.zone;t.hovered.element.value=D,t.hovered.zone.value=C,M!==D&&(M&&((F=(N=(z=t.elementsMap.value.get(M))==null?void 0:z.events)==null?void 0:N.onLeave)==null||F.call(N,t,V(t))),D&&((_=(b=(w=t.elementsMap.value.get(D))==null?void 0:w.events)==null?void 0:b.onHover)==null||_.call(b,t,V(t)))),E!==C&&(E&&((B=(U=(K=t.zonesMap.value.get(E))==null?void 0:K.events)==null?void 0:U.onLeave)==null||B.call(U,t,V(t))),C&&((j=(H=(X=t.zonesMap.value.get(C))==null?void 0:X.events)==null?void 0:H.onHover)==null||j.call(H,t,V(t))))},c=q.useThrottleFn(()=>{const P=a(t),M=g(P);d(M)},((k=e==null?void 0:e.sensor)==null?void 0:k.throttle)??0),p=()=>{c(),v=requestAnimationFrame(p)},y=()=>p(),h=()=>{v!==null&&(o(),i(),cancelAnimationFrame(v),v=null)};return{activate:P=>{t.draggingElements.value=f(n.value),t.draggingElements.value.forEach(M=>{var E,D;return(D=(E=M.events).onStart)==null?void 0:D.call(E,t,V(t))}),P instanceof PointerEvent?l(P):u(P),y()},track:P=>{t.draggingElements.value.forEach(M=>{var E,D;return(D=(E=M.events).onMove)==null?void 0:D.call(E,t,V(t))}),P instanceof KeyboardEvent?m():s(P)},deactivate:async(P=!0)=>{var M,E;if(t.hovered.zone.value){const D=t.zonesMap.value.get(t.hovered.zone.value),C=(E=D==null?void 0:(M=D.events).onDrop)==null?void 0:E.call(M,t,V(t));if(C instanceof Promise)try{t.isPending.value=!0;const z=await C;return z&&(P&&t.selectedElements.value.clear(),t.draggingElements.value.clear(),t.hovered.zone.value=null,t.hovered.element.value=null,h()),z}catch{return!1}finally{t.isPending.value=!1}else P&&t.selectedElements.value.clear(),t.draggingElements.value.clear(),t.hovered.zone.value=null,t.hovered.element.value=null,h()}else t.draggingElements.value.forEach(D=>{var C,z;return(z=(C=D.events).onEnd)==null?void 0:z.call(C,t,V(t))}),P&&t.selectedElements.value.clear(),t.draggingElements.value.clear(),t.hovered.zone.value=null,t.hovered.element.value=null,h()}}},ge=q.createGlobalState(()=>{let n="",e="",t="",l=null,s=null,o=null,u=null,m=null;const{activeContainer:i,isPending:v,elementsMap:f}=T(),g=()=>{const p=document.body;n=p.style.userSelect,p.style.userSelect="none",window.addEventListener("contextmenu",R),window.addEventListener("selectstart",R),window.addEventListener("touchstart",R),window.addEventListener("touchmove",R)},a=()=>{const p=document.body;p.style.userSelect=n,p.style.touchAction=e,p.style.overscrollBehavior=t,window.removeEventListener("contextmenu",R),window.removeEventListener("selectstart",R),window.removeEventListener("touchstart",R),window.removeEventListener("touchmove",R)},d=()=>{l&&(document.removeEventListener("pointermove",l),l=null),s&&(document.removeEventListener("pointerup",s),s=null),o&&(o=null),u&&(document.removeEventListener("wheel",u),u=null),m&&(document.removeEventListener("keydown",m),document.removeEventListener("keypress",m),document.removeEventListener("keyup",m),m=null)};return{handleDragStart:(p,y,h)=>{if(!y.value||v.value)return;const A=f.value.get(y.value);if(A!=null&&A.disabled)return;d(),p.target.blur(),h!=null&&h.container&&(i.component.value=h.container),h!=null&&h.containerProps&&(i.props.value=h.containerProps);const{activate:L,track:S,deactivate:O}=fe(y,h);s=()=>{O(!0).then(k=>{k!==!1&&(i.component.value=null,a(),O(!0),d())})},o=()=>{i.component.value=null,a(),O(!1),d()},l=k=>S(k),u=k=>S(k),m=k=>{k.type==="keyup"&&(k.code==="Escape"&&(o==null||o()),k.code==="Enter"&&(s==null||s())),S(k)},g(),L(p),document.addEventListener("pointermove",l),document.addEventListener("pointerup",s),document.addEventListener("wheel",u),document.addEventListener("keydown",m),document.addEventListener("keypress",m),document.addEventListener("keyup",m)}}}),me=n=>{const{id:e,elementRef:t,isDragging:l,isOvered:s,isAllowed:o,isLazyAllowed:u,registerElement:m,unregisterElement:i}=ie(n),{pointerPosition:v}=T(),{handleDragStart:f}=ge(),g=a=>f(a,t,n);return r.onMounted(m),r.onBeforeUnmount(i),{pointerPosition:v,elementRef:t,isDragging:l,isOvered:s,isAllowed:o,isLazyAllowed:u,handleDragStart:g,id:e}},pe=n=>{const{zonesMap:e,hovered:t,draggingElements:l,isDragging:s,handleDropZoneIntersection:o}=T(),u=r.ref(null),m=r.computed(()=>t.zone.value===u.value),i=r.computed(()=>{if(!u.value||!s.value)return!1;const a=e.value.get(u.value);return a!=null&&a.groups.length?!Array.from(l.value.values()).some(d=>d.groups.length?!d.groups.some(c=>a.groups.includes(c)):!1):!0}),v=r.computed(()=>{if(!u.value||!s.value||t.zone.value!==u.value)return!1;const a=e.value.get(u.value);return a!=null&&a.groups.length?!Array.from(l.value.values()).some(d=>!d.groups.some(c=>a.groups.includes(c))):!0});return{elementRef:u,registerZone:()=>{if(!u.value)throw new Error("elementRef is not set");o("add",u.value),e.value.set(u.value,{node:u.value,groups:(n==null?void 0:n.groups)??[],events:(n==null?void 0:n.events)??{},data:(n==null?void 0:n.data)??void 0,disabled:(n==null?void 0:n.disabled)??!1}),u.value.setAttribute("data-dnd-droppable","true")},unregisterZone:()=>{u.value&&(o("remove",u.value),e.value.delete(u.value))},isOvered:m,isAllowed:i,isLazyAllowed:v}},he=n=>{const{elementRef:e,registerZone:t,unregisterZone:l,isOvered:s,isAllowed:o,isLazyAllowed:u}=pe(n);return r.onMounted(t),r.onBeforeUnmount(l),{elementRef:e,isOvered:s,isAllowed:o,isLazyAllowed:u}},ye=n=>{const{selectedElements:e,elementsMap:t}=T(),l=r.computed(()=>n.value?e.value.has(n.value):!1),s=r.computed(()=>{if(!n.value)return!1;for(const v of e.value)if(v&&I(v,n.value))return!0;return!1}),o=r.computed(()=>{if(!n.value)return!1;for(const v of e.value)if(v&&I(n.value,v))return!0;return!1}),u=()=>{n.value&&e.value.delete(n.value)},m=()=>{if(!(!n.value||!t.value.get(n.value))){if(s.value)for(const f of e.value)f&&I(f,n.value)&&e.value.delete(f);if(o.value)for(const f of e.value)f&&I(n.value,f)&&e.value.delete(f);e.value.add(n.value)}};return{handleUnselect:u,handleSelect:m,handleToggleSelect:()=>{n.value&&(e.value.has(n.value)?u():m())},isSelected:l,isParentOfSelected:s}};exports.DnDOperations=G;exports.default=oe;exports.getBoundingBox=Y;exports.useDnDStore=T;exports.useDragContainer=ne;exports.useDraggable=me;exports.useDroppable=he;exports.useSelection=ye;
//# sourceMappingURL=vue-dnd-kit-core.cjs.js.map