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