@vue-dnd-kit/core 0.0.24-beta → 0.0.25-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -1
- package/dist/vue-dnd-kit-core.cjs.js +1 -1
- package/dist/vue-dnd-kit-core.es.js +144 -131
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { default as DnDContext } from './components/DnDContext';
|
|
1
2
|
import { default as DragOverlay } from './components/DragOverlay';
|
|
2
3
|
import { useDnDStore } from './composables/useDnDStore';
|
|
3
4
|
import { useDraggable } from './composables/useDraggable';
|
|
4
5
|
import { useDroppable } from './composables/useDroppable';
|
|
5
6
|
import { useSelection } from './composables/useSelection';
|
|
6
7
|
|
|
7
|
-
export { DragOverlay, useDraggable, useDroppable, useDnDStore, useSelection };
|
|
8
|
+
export { DragOverlay, DnDContext, useDraggable, useDroppable, useDnDStore, useSelection, };
|
|
8
9
|
export { getBoundingBox } from './utils/geometry';
|
|
9
10
|
export type { IDnDStore, IActiveContainer, IBoundingBox, IDragElement, IDraggingElement, IDropZone, IPoint, IPointerPosition, IUseDragOptions, IUseDropOptions, } from './types';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("vue");let G=!1,R;const L=()=>(G||(R=n.effectScope(!0).run(()=>({isDragging:n.computed(()=>R.draggingElements.value.length>0),activeContainer:{component:n.ref(null),ref:n.ref(null)},elements:n.ref([]),draggingElements:n.ref([]),selectedElements:n.ref([]),zones:n.ref([]),hovered:{zone:n.ref(null),element:n.ref(null)},pointerPosition:{current:n.ref(null),start:n.ref(null),offset:{percent:n.ref(null),pixel:n.ref(null)}}})),G=!0),R),W=()=>{const t=n.ref(null),{draggingElements:e,pointerPosition:u,isDragging:c,activeContainer:d}=L();return n.onMounted(()=>{d.ref=t}),n.onBeforeUnmount(()=>{d.ref.value=null}),{elementRef:t,draggingElements:e,pointerPosition:u,isDragging:c}},b=["innerHTML"],ee=n.defineComponent({__name:"DefaultOverlay",setup(t){const{elementRef:e,pointerPosition:u,isDragging:c,draggingElements:d}=W(),r=n.computed(()=>{var s,m,h,y;return{transform:`translate3d(${(((s=u.current.value)==null?void 0:s.x)??0)-(((m=u.offset.pixel.value)==null?void 0:m.x)??0)}px, ${(((h=u.current.value)==null?void 0:h.y)??0)-(((y=u.offset.pixel.value)==null?void 0:y.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(s,m)=>n.unref(c)?(n.openBlock(),n.createElementBlock("div",{key:0,ref_key:"elementRef",ref:e,style:n.normalizeStyle(r.value)},[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(n.unref(d),(h,y)=>{var i,E;return n.openBlock(),n.createElementBlock("div",{key:y,innerHTML:h.initialHTML,style:n.normalizeStyle({width:`${(i=h.initialRect)==null?void 0:i.width}px`,height:`${(E=h.initialRect)==null?void 0:E.height}px`})},null,12,b)}),128))],4)):n.createCommentVNode("",!0)}}),te=n.defineComponent({__name:"DragOverlay",setup(t){const{activeContainer:e}=L(),u=n.computed(()=>e.component.value??ee);return(c,d)=>(n.openBlock(),n.createBlock(n.resolveDynamicComponent(u.value)))}}),ne="data-dnd-draggable",re=t=>{const{elements:e,draggingElements:u,hovered:c,selectedElements:d,isDragging:r}=L(),s=n.ref(null),m=n.computed(()=>{var p;return((p=c.element.value)==null?void 0:p.node)===s.value}),h=n.computed(()=>u.value.some(p=>p.node===s.value)),y=n.computed(()=>{if(!s.value||!r.value)return!1;const p=e.value.find(D=>D.node===s.value);return p!=null&&p.groups.length?!u.value.some(D=>D.groups.length?!D.groups.some(o=>p.groups.includes(o)):!1):!0});return{elementRef:s,registerElement:()=>{if(!s.value)throw new Error("ElementRef is not set");e.value.push({node:s.value,groups:(t==null?void 0:t.groups)??[],layer:(t==null?void 0:t.layer)??null,defaultLayer:(t==null?void 0:t.layer)??null,events:(t==null?void 0:t.events)??{},data:(t==null?void 0:t.data)??void 0}),s.value.setAttribute(ne,"true")},unregisterElement:()=>{const p=e.value.findIndex(o=>o.node===s.value);p!==-1&&e.value.splice(p,1);const D=d.value.findIndex(o=>o.node===s.value);D!==-1&&d.value.splice(D,1)},isDragging:h,isOvered:m,isAllowed:y}},oe=()=>{let t="",e="",u="";const c=()=>{const s=document.body;t=s.style.userSelect,e=s.style.touchAction,u=s.style.overscrollBehavior,s.style.userSelect="none",s.style.touchAction="none",s.style.overscrollBehavior="none",window.addEventListener("contextmenu",r),window.addEventListener("selectstart",r),window.addEventListener("touchstart",r),window.addEventListener("touchmove",r)},d=()=>{const s=document.body;s.style.userSelect=t,s.style.touchAction=e,s.style.overscrollBehavior=u,window.removeEventListener("contextmenu",r),window.removeEventListener("selectstart",r),window.removeEventListener("touchstart",r),window.removeEventListener("touchmove",r)},r=s=>s.preventDefault();return{disableInteractions:c,enableInteractions:d}},J=(t,e)=>t.x<e.x+e.width&&t.x+t.width>e.x&&t.y<e.y+e.height&&t.y+t.height>e.y,k=t=>{if(!t)return{x:0,y:0,width:0,height:0,bottom:0,left:0,right:0,top:0};const e=t.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}},U=t=>({x:t.x+t.width/2,y:t.y+t.height/2}),le=(t,e)=>{const u=k(t);return{pixel:{x:e.x-u.x,y:e.y-u.y},percent:{x:(e.x-u.x)/u.width*100,y:(e.y-u.y)/u.height*100}}},K=(t,e)=>{const u=e.x-t.x,c=e.y-t.y;return Math.sqrt(u*u+c*c)},M=(t,e)=>t?e.contains(t):!1,ie=t=>{const e=L();return{onPointerStart:r=>{e.pointerPosition.start.value={x:r.clientX,y:r.clientY},e.pointerPosition.current.value={x:r.clientX,y:r.clientY};const{pixel:s,percent:m}=le(t.value,{x:r.clientX,y:r.clientY});e.pointerPosition.offset.pixel.value=s,e.pointerPosition.offset.percent.value=m},onPointerMove:r=>{e.pointerPosition.current.value={x:r.clientX,y:r.clientY}},onPointerEnd:()=>{e.pointerPosition.current.value=null,e.pointerPosition.start.value=null,e.pointerPosition.offset.pixel.value=null,e.pointerPosition.offset.percent.value=null}}},se=t=>{const e=L(),{onPointerStart:u,onPointerMove:c,onPointerEnd:d}=ie(t);let r=null;const s=o=>{var v,x;const g=e.selectedElements.value.some(P=>P.node===o);if(e.selectedElements.value.length&&g)return e.selectedElements.value.map(P=>{var C,H;return{...P,initialHTML:((C=P.node)==null?void 0:C.outerHTML)??"",initialRect:(H=P.node)==null?void 0:H.getBoundingClientRect()}});e.selectedElements.value=[];const f=e.elements.value.find(P=>P.node===o);return f?[{...f,initialHTML:((v=f.node)==null?void 0:v.outerHTML)??"",initialRect:(x=f.node)==null?void 0:x.getBoundingClientRect()}]:[]},m=(o,g)=>{const f=Math.max(0,Math.min(o.x+o.width,g.x+g.width)-Math.max(o.x,g.x)),v=Math.max(0,Math.min(o.y+o.height,g.y+g.height)-Math.max(o.y,g.y)),x=f*v,P=o.width*o.height,C=g.width*g.height;return(x/P*100+x/C*100)/2},h=()=>{var Z,A,X,Y,$,F,q,N,j,V;const o=k(e.activeContainer.ref.value),g=U(o),f=((Z=e.pointerPosition.current.value)==null?void 0:Z.x)??0,v=((A=e.pointerPosition.current.value)==null?void 0:A.y)??0,P=!(o&&f>=o.x&&f<=o.x+o.width&&v>=o.y&&v<=o.y+o.height),C=e.draggingElements.value.map(l=>l.node),H=e.elements.value.filter(l=>{if(!l.node||C.some(w=>w&&M(l.node,w))||l.groups.length&&!!e.draggingElements.value.some(S=>S.groups.length?!S.groups.some(I=>l.groups.includes(I)):!1))return!1;const a=k(l.node);return a&&o&&J(a,o)}).map(l=>{const a=k(l.node),w=U(a),S=f>=a.x&&f<=a.x+a.width&&v>=a.y&&v<=a.y+a.height,I=m(a,o),T=K(g,w),B=e.elements.value.filter(_=>_!==l&&_.node&&l.node&&M(l.node,_.node)).length;return{element:l,isPointerInElement:S,overlapPercent:I,depth:B,centerDistance:T}}).sort((l,a)=>{if(!P){if(l.isPointerInElement&&a.isPointerInElement)return a.depth-l.depth;if(l.isPointerInElement!==a.isPointerInElement)return l.isPointerInElement?-1:1}return Math.abs(l.overlapPercent-a.overlapPercent)<=1?l.centerDistance-a.centerDistance:a.overlapPercent-l.overlapPercent}),Q=e.zones.value.filter(l=>{if(!l.node||C.some(w=>w&&M(l.node,w))||l.groups.length&&!!e.draggingElements.value.some(S=>S.groups.length?!S.groups.some(I=>l.groups.includes(I)):!1))return!1;const a=k(l.node);return a&&o&&J(a,o)}).map(l=>{const a=k(l.node),w=U(a),S=f>=a.x&&f<=a.x+a.width&&v>=a.y&&v<=a.y+a.height,I=m(a,o),T=K(g,w),B=e.zones.value.filter(_=>_!==l&&_.node&&l.node&&M(l.node,_.node)).length;return{zone:l,isPointerInElement:S,overlapPercent:I,depth:B,centerDistance:T}}).sort((l,a)=>{if(!P){if(l.isPointerInElement&&a.isPointerInElement)return a.depth-l.depth;if(l.isPointerInElement!==a.isPointerInElement)return l.isPointerInElement?-1:1}return Math.abs(l.overlapPercent-a.overlapPercent)<=1?l.centerDistance-a.centerDistance:a.overlapPercent-l.overlapPercent}),O=e.hovered.element.value,z=e.hovered.zone.value;e.hovered.element.value=((X=H[0])==null?void 0:X.element)??null,e.hovered.zone.value=((Y=Q[0])==null?void 0:Y.zone)??null,e.hovered.element.value!==O&&(($=O==null?void 0:O.events)!=null&&$.onLeave&&O.events.onLeave(e),(q=(F=e.hovered.element.value)==null?void 0:F.events)!=null&&q.onHover&&e.hovered.element.value.events.onHover(e)),e.hovered.zone.value!==z&&((N=z==null?void 0:z.events)!=null&&N.onLeave&&z.events.onLeave(e),(V=(j=e.hovered.zone.value)==null?void 0:j.events)!=null&&V.onHover&&e.hovered.zone.value.events.onHover(e)),r=requestAnimationFrame(h)},y=()=>{h()},i=()=>{r!==null&&(cancelAnimationFrame(r),r=null)};return{activate:o=>{e.draggingElements.value=s(t.value),u(o),y()},track:o=>{c(o)},deactivate:()=>{var o,g;d(),e.hovered.zone.value?(g=(o=e.hovered.zone.value.events).onDrop)==null||g.call(o,e):e.draggingElements.value.forEach(f=>{var v,x;return(x=(v=f.events).onEnd)==null?void 0:x.call(v,e)}),e.draggingElements.value=[],e.selectedElements.value=[],e.hovered.zone.value=null,e.hovered.element.value=null,i()}}},ae=t=>{const{elementRef:e,registerElement:u,unregisterElement:c,isDragging:d,isOvered:r,isAllowed:s}=re(t),{disableInteractions:m,enableInteractions:h}=oe(),y=L(),{activate:i,track:E,deactivate:p}=se(e),D=v=>{t!=null&&t.container&&(y.activeContainer.component.value=n.markRaw(t.container)),m(),i(v),document.addEventListener("pointermove",o),document.addEventListener("pointerup",f),document.addEventListener("wheel",g)},o=v=>{E(v)},g=v=>{E(v)},f=()=>{y.activeContainer.component.value=null,h(),p(),document.removeEventListener("pointermove",o),document.removeEventListener("pointerup",f),document.removeEventListener("wheel",g)};return n.onMounted(u),n.onBeforeUnmount(c),{pointerPosition:y.pointerPosition,elementRef:e,isDragging:d,isOvered:r,isAllowed:s,handleDragStart:D}},ue=t=>{const{zones:e,hovered:u,draggingElements:c,isDragging:d}=L(),r=n.ref(null),s=n.computed(()=>{var i;return((i=u.zone.value)==null?void 0:i.node)===r.value}),m=n.computed(()=>{if(!r.value||!d.value)return!1;const i=e.value.find(E=>E.node===r.value);return i!=null&&i.groups.length?!c.value.some(E=>E.groups.length?!E.groups.some(p=>i.groups.includes(p)):!1):!0});return{elementRef:r,registerZone:()=>{if(!r.value)throw new Error("elementRef is not set");e.value.push({node:r.value,groups:(t==null?void 0:t.groups)??[],events:(t==null?void 0:t.events)??{},data:(t==null?void 0:t.data)??void 0}),r.value.setAttribute("data-dnd-droppable","true")},unregisterZone:()=>{if(!r.value)throw new Error("elementRef is not set");const i=e.value.findIndex(E=>E.node===r.value);i!==-1&&e.value.splice(i,1)},isOvered:s,isAllowed:m}},ce=t=>{const{elementRef:e,registerZone:u,unregisterZone:c,isOvered:d,isAllowed:r}=ue(t);return n.onMounted(u),n.onBeforeUnmount(c),{elementRef:e,isOvered:d,isAllowed:r}},de=t=>{const{selectedElements:e,elements:u}=L(),c=n.computed(()=>u.value.find(i=>i.node===t.value)),d=n.computed(()=>e.value.some(i=>i.node===t.value)),r=n.computed(()=>t.value?e.value.some(i=>i.node&&M(i.node,t.value)):!1),s=n.computed(()=>t.value?e.value.some(i=>i.node&&M(t.value,i.node)):!1),m=()=>{c.value&&(e.value=e.value.filter(i=>i.node!==t.value))},h=()=>{c.value&&(r.value&&(e.value=e.value.filter(i=>i.node&&!M(i.node,t.value))),s.value&&(e.value=e.value.filter(i=>i.node&&!M(t.value,i.node))),e.value.push(c.value))};return{handleUnselect:m,handleSelect:h,handleToggleSelect:()=>{c.value&&(e.value.some(i=>i.node===t.value)?m():h())},isSelected:d,isParentOfSelected:r}};exports.DragOverlay=te;exports.getBoundingBox=k;exports.useDnDStore=L;exports.useDraggable=ae;exports.useDroppable=ce;exports.useSelection=de;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("vue");let G=!1,T;const S=()=>(G||(T=n.effectScope(!0).run(()=>({isDragging:n.computed(()=>T.draggingElements.value.length>0),activeContainer:{component:n.ref(null),ref:n.ref(null)},elements:n.ref([]),draggingElements:n.ref([]),selectedElements:n.ref([]),zones:n.ref([]),hovered:{zone:n.ref(null),element:n.ref(null)},pointerPosition:{current:n.ref(null),start:n.ref(null),offset:{percent:n.ref(null),pixel:n.ref(null)}}})),G=!0),T),b=()=>{const t=n.ref(null),{draggingElements:e,pointerPosition:s,isDragging:c,activeContainer:d}=S();return n.onMounted(()=>{d.ref=t}),n.onBeforeUnmount(()=>{d.ref.value=null}),{elementRef:t,draggingElements:e,pointerPosition:s,isDragging:c}},ee=["innerHTML"],te=n.defineComponent({__name:"DefaultOverlay",setup(t){const{elementRef:e,pointerPosition:s,isDragging:c,draggingElements:d}=b(),r=n.computed(()=>{var a,m,h,y;return{transform:`translate3d(${(((a=s.current.value)==null?void 0:a.x)??0)-(((m=s.offset.pixel.value)==null?void 0:m.x)??0)}px, ${(((h=s.current.value)==null?void 0:h.y)??0)-(((y=s.offset.pixel.value)==null?void 0:y.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(a,m)=>n.unref(c)?(n.openBlock(),n.createElementBlock("div",{key:0,ref_key:"elementRef",ref:e,style:n.normalizeStyle(r.value)},[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(n.unref(d),(h,y)=>{var i,E;return n.openBlock(),n.createElementBlock("div",{key:y,innerHTML:h.initialHTML,style:n.normalizeStyle({width:`${(i=h.initialRect)==null?void 0:i.width}px`,height:`${(E=h.initialRect)==null?void 0:E.height}px`})},null,12,ee)}),128))],4)):n.createCommentVNode("",!0)}}),Q=n.defineComponent({__name:"DragOverlay",setup(t){const{activeContainer:e}=S(),s=n.computed(()=>e.component.value??te);return(c,d)=>(n.openBlock(),n.createBlock(n.resolveDynamicComponent(s.value)))}}),ne=n.defineComponent({__name:"DnDContext",setup(t){const e=n.ref(null);return(s,c)=>(n.openBlock(),n.createElementBlock("div",{ref_key:"contextRef",ref:e},[n.renderSlot(s.$slots,"default"),n.createVNode(Q)],512))}}),re="data-dnd-draggable",oe=t=>{const{elements:e,draggingElements:s,hovered:c,selectedElements:d,isDragging:r}=S(),a=n.ref(null),m=n.computed(()=>{var p;return((p=c.element.value)==null?void 0:p.node)===a.value}),h=n.computed(()=>s.value.some(p=>p.node===a.value)),y=n.computed(()=>{if(!a.value||!r.value)return!1;const p=e.value.find(D=>D.node===a.value);return p!=null&&p.groups.length?!s.value.some(D=>D.groups.length?!D.groups.some(o=>p.groups.includes(o)):!1):!0});return{elementRef:a,registerElement:()=>{if(!a.value)throw new Error("ElementRef is not set");e.value.push({node:a.value,groups:(t==null?void 0:t.groups)??[],layer:(t==null?void 0:t.layer)??null,defaultLayer:(t==null?void 0:t.layer)??null,events:(t==null?void 0:t.events)??{},data:(t==null?void 0:t.data)??void 0}),a.value.setAttribute(re,"true")},unregisterElement:()=>{const p=e.value.findIndex(o=>o.node===a.value);p!==-1&&e.value.splice(p,1);const D=d.value.findIndex(o=>o.node===a.value);D!==-1&&d.value.splice(D,1)},isDragging:h,isOvered:m,isAllowed:y}},le=()=>{let t="",e="",s="";const c=()=>{const a=document.body;t=a.style.userSelect,e=a.style.touchAction,s=a.style.overscrollBehavior,a.style.userSelect="none",a.style.touchAction="none",a.style.overscrollBehavior="none",window.addEventListener("contextmenu",r),window.addEventListener("selectstart",r),window.addEventListener("touchstart",r),window.addEventListener("touchmove",r)},d=()=>{const a=document.body;a.style.userSelect=t,a.style.touchAction=e,a.style.overscrollBehavior=s,window.removeEventListener("contextmenu",r),window.removeEventListener("selectstart",r),window.removeEventListener("touchstart",r),window.removeEventListener("touchmove",r)},r=a=>a.preventDefault();return{disableInteractions:c,enableInteractions:d}},J=(t,e)=>t.x<e.x+e.width&&t.x+t.width>e.x&&t.y<e.y+e.height&&t.y+t.height>e.y,k=t=>{if(!t)return{x:0,y:0,width:0,height:0,bottom:0,left:0,right:0,top:0};const e=t.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}},$=t=>({x:t.x+t.width/2,y:t.y+t.height/2}),ie=(t,e)=>{const s=k(t);return{pixel:{x:e.x-s.x,y:e.y-s.y},percent:{x:(e.x-s.x)/s.width*100,y:(e.y-s.y)/s.height*100}}},K=(t,e)=>{const s=e.x-t.x,c=e.y-t.y;return Math.sqrt(s*s+c*c)},L=(t,e)=>t?e.contains(t):!1,se=t=>{const e=S();return{onPointerStart:r=>{e.pointerPosition.start.value={x:r.clientX,y:r.clientY},e.pointerPosition.current.value={x:r.clientX,y:r.clientY};const{pixel:a,percent:m}=ie(t.value,{x:r.clientX,y:r.clientY});e.pointerPosition.offset.pixel.value=a,e.pointerPosition.offset.percent.value=m},onPointerMove:r=>{e.pointerPosition.current.value={x:r.clientX,y:r.clientY}},onPointerEnd:()=>{e.pointerPosition.current.value=null,e.pointerPosition.start.value=null,e.pointerPosition.offset.pixel.value=null,e.pointerPosition.offset.percent.value=null}}},ae=t=>{const e=S(),{onPointerStart:s,onPointerMove:c,onPointerEnd:d}=se(t);let r=null;const a=o=>{var v,x;const g=e.selectedElements.value.some(P=>P.node===o);if(e.selectedElements.value.length&&g)return e.selectedElements.value.map(P=>{var M,B;return{...P,initialHTML:((M=P.node)==null?void 0:M.outerHTML)??"",initialRect:(B=P.node)==null?void 0:B.getBoundingClientRect()}});e.selectedElements.value=[];const f=e.elements.value.find(P=>P.node===o);return f?[{...f,initialHTML:((v=f.node)==null?void 0:v.outerHTML)??"",initialRect:(x=f.node)==null?void 0:x.getBoundingClientRect()}]:[]},m=(o,g)=>{const f=Math.max(0,Math.min(o.x+o.width,g.x+g.width)-Math.max(o.x,g.x)),v=Math.max(0,Math.min(o.y+o.height,g.y+g.height)-Math.max(o.y,g.y)),x=f*v,P=o.width*o.height,M=g.width*g.height;return(x/P*100+x/M*100)/2},h=()=>{var U,Z,A,X,Y,F,q,N,V,j;const o=k(e.activeContainer.ref.value),g=$(o),f=((U=e.pointerPosition.current.value)==null?void 0:U.x)??0,v=((Z=e.pointerPosition.current.value)==null?void 0:Z.y)??0,P=!(o&&f>=o.x&&f<=o.x+o.width&&v>=o.y&&v<=o.y+o.height),M=e.draggingElements.value.map(l=>l.node),B=e.elements.value.filter(l=>{if(!l.node||M.some(w=>w&&L(l.node,w))||l.groups.length&&!!e.draggingElements.value.some(C=>C.groups.length?!C.groups.some(_=>l.groups.includes(_)):!1))return!1;const u=k(l.node);return u&&o&&J(u,o)}).map(l=>{const u=k(l.node),w=$(u),C=f>=u.x&&f<=u.x+u.width&&v>=u.y&&v<=u.y+u.height,_=m(u,o),H=K(g,w),R=e.elements.value.filter(I=>I!==l&&I.node&&l.node&&L(l.node,I.node)).length;return{element:l,isPointerInElement:C,overlapPercent:_,depth:R,centerDistance:H}}).sort((l,u)=>{if(!P){if(l.isPointerInElement&&u.isPointerInElement)return u.depth-l.depth;if(l.isPointerInElement!==u.isPointerInElement)return l.isPointerInElement?-1:1}return Math.abs(l.overlapPercent-u.overlapPercent)<=1?l.centerDistance-u.centerDistance:u.overlapPercent-l.overlapPercent}),W=e.zones.value.filter(l=>{if(!l.node||M.some(w=>w&&L(l.node,w))||l.groups.length&&!!e.draggingElements.value.some(C=>C.groups.length?!C.groups.some(_=>l.groups.includes(_)):!1))return!1;const u=k(l.node);return u&&o&&J(u,o)}).map(l=>{const u=k(l.node),w=$(u),C=f>=u.x&&f<=u.x+u.width&&v>=u.y&&v<=u.y+u.height,_=m(u,o),H=K(g,w),R=e.zones.value.filter(I=>I!==l&&I.node&&l.node&&L(l.node,I.node)).length;return{zone:l,isPointerInElement:C,overlapPercent:_,depth:R,centerDistance:H}}).sort((l,u)=>{if(!P){if(l.isPointerInElement&&u.isPointerInElement)return u.depth-l.depth;if(l.isPointerInElement!==u.isPointerInElement)return l.isPointerInElement?-1:1}return Math.abs(l.overlapPercent-u.overlapPercent)<=1?l.centerDistance-u.centerDistance:u.overlapPercent-l.overlapPercent}),O=e.hovered.element.value,z=e.hovered.zone.value;e.hovered.element.value=((A=B[0])==null?void 0:A.element)??null,e.hovered.zone.value=((X=W[0])==null?void 0:X.zone)??null,e.hovered.element.value!==O&&((Y=O==null?void 0:O.events)!=null&&Y.onLeave&&O.events.onLeave(e),(q=(F=e.hovered.element.value)==null?void 0:F.events)!=null&&q.onHover&&e.hovered.element.value.events.onHover(e)),e.hovered.zone.value!==z&&((N=z==null?void 0:z.events)!=null&&N.onLeave&&z.events.onLeave(e),(j=(V=e.hovered.zone.value)==null?void 0:V.events)!=null&&j.onHover&&e.hovered.zone.value.events.onHover(e)),r=requestAnimationFrame(h)},y=()=>{h()},i=()=>{r!==null&&(cancelAnimationFrame(r),r=null)};return{activate:o=>{e.draggingElements.value=a(t.value),s(o),y()},track:o=>{c(o)},deactivate:()=>{var o,g;d(),e.hovered.zone.value?(g=(o=e.hovered.zone.value.events).onDrop)==null||g.call(o,e):e.draggingElements.value.forEach(f=>{var v,x;return(x=(v=f.events).onEnd)==null?void 0:x.call(v,e)}),e.draggingElements.value=[],e.selectedElements.value=[],e.hovered.zone.value=null,e.hovered.element.value=null,i()}}},ue=t=>{const{elementRef:e,registerElement:s,unregisterElement:c,isDragging:d,isOvered:r,isAllowed:a}=oe(t),{disableInteractions:m,enableInteractions:h}=le(),y=S(),{activate:i,track:E,deactivate:p}=ae(e),D=v=>{t!=null&&t.container&&(y.activeContainer.component.value=n.markRaw(t.container)),m(),i(v),document.addEventListener("pointermove",o),document.addEventListener("pointerup",f),document.addEventListener("wheel",g)},o=v=>{E(v)},g=v=>{E(v)},f=()=>{y.activeContainer.component.value=null,h(),p(),document.removeEventListener("pointermove",o),document.removeEventListener("pointerup",f),document.removeEventListener("wheel",g)};return n.onMounted(s),n.onBeforeUnmount(c),{pointerPosition:y.pointerPosition,elementRef:e,isDragging:d,isOvered:r,isAllowed:a,handleDragStart:D}},ce=t=>{const{zones:e,hovered:s,draggingElements:c,isDragging:d}=S(),r=n.ref(null),a=n.computed(()=>{var i;return((i=s.zone.value)==null?void 0:i.node)===r.value}),m=n.computed(()=>{if(!r.value||!d.value)return!1;const i=e.value.find(E=>E.node===r.value);return i!=null&&i.groups.length?!c.value.some(E=>E.groups.length?!E.groups.some(p=>i.groups.includes(p)):!1):!0});return{elementRef:r,registerZone:()=>{if(!r.value)throw new Error("elementRef is not set");e.value.push({node:r.value,groups:(t==null?void 0:t.groups)??[],events:(t==null?void 0:t.events)??{},data:(t==null?void 0:t.data)??void 0}),r.value.setAttribute("data-dnd-droppable","true")},unregisterZone:()=>{if(!r.value)throw new Error("elementRef is not set");const i=e.value.findIndex(E=>E.node===r.value);i!==-1&&e.value.splice(i,1)},isOvered:a,isAllowed:m}},de=t=>{const{elementRef:e,registerZone:s,unregisterZone:c,isOvered:d,isAllowed:r}=ce(t);return n.onMounted(s),n.onBeforeUnmount(c),{elementRef:e,isOvered:d,isAllowed:r}},ve=t=>{const{selectedElements:e,elements:s}=S(),c=n.computed(()=>s.value.find(i=>i.node===t.value)),d=n.computed(()=>e.value.some(i=>i.node===t.value)),r=n.computed(()=>t.value?e.value.some(i=>i.node&&L(i.node,t.value)):!1),a=n.computed(()=>t.value?e.value.some(i=>i.node&&L(t.value,i.node)):!1),m=()=>{c.value&&(e.value=e.value.filter(i=>i.node!==t.value))},h=()=>{c.value&&(r.value&&(e.value=e.value.filter(i=>i.node&&!L(i.node,t.value))),a.value&&(e.value=e.value.filter(i=>i.node&&!L(t.value,i.node))),e.value.push(c.value))};return{handleUnselect:m,handleSelect:h,handleToggleSelect:()=>{c.value&&(e.value.some(i=>i.node===t.value)?m():h())},isSelected:d,isParentOfSelected:r}};exports.DnDContext=ne;exports.DragOverlay=Q;exports.getBoundingBox=k;exports.useDnDStore=S;exports.useDraggable=ue;exports.useDroppable=de;exports.useSelection=ve;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { effectScope as ie, ref as p, computed as w, onMounted as F, onBeforeUnmount as U, defineComponent as
|
|
2
|
-
let
|
|
3
|
-
const
|
|
1
|
+
import { effectScope as ie, ref as p, computed as w, onMounted as F, onBeforeUnmount as U, defineComponent as N, createElementBlock as $, createCommentVNode as se, unref as ee, openBlock as R, normalizeStyle as te, Fragment as ae, renderList as ue, createBlock as ce, resolveDynamicComponent as ve, renderSlot as de, createVNode as ge, markRaw as he } from "vue";
|
|
2
|
+
let ne = !1, X;
|
|
3
|
+
const I = () => (ne || (X = ie(!0).run(() => ({
|
|
4
4
|
/** Whether any drag operation is currently active */
|
|
5
5
|
isDragging: w(
|
|
6
|
-
() =>
|
|
6
|
+
() => X.draggingElements.value.length > 0
|
|
7
7
|
),
|
|
8
8
|
/** Active container where dragging occurs */
|
|
9
9
|
activeContainer: {
|
|
@@ -41,8 +41,8 @@ const M = () => (te || (Y = ie(!0).run(() => ({
|
|
|
41
41
|
pixel: p(null)
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
|
-
})),
|
|
45
|
-
const t = p(null), { draggingElements: e, pointerPosition:
|
|
44
|
+
})), ne = !0), X), fe = () => {
|
|
45
|
+
const t = p(null), { draggingElements: e, pointerPosition: i, isDragging: u, activeContainer: c } = I();
|
|
46
46
|
return F(() => {
|
|
47
47
|
c.ref = t;
|
|
48
48
|
}), U(() => {
|
|
@@ -50,16 +50,16 @@ const M = () => (te || (Y = ie(!0).run(() => ({
|
|
|
50
50
|
}), {
|
|
51
51
|
elementRef: t,
|
|
52
52
|
draggingElements: e,
|
|
53
|
-
pointerPosition:
|
|
53
|
+
pointerPosition: i,
|
|
54
54
|
isDragging: u
|
|
55
55
|
};
|
|
56
|
-
},
|
|
56
|
+
}, me = ["innerHTML"], pe = /* @__PURE__ */ N({
|
|
57
57
|
__name: "DefaultOverlay",
|
|
58
58
|
setup(t) {
|
|
59
|
-
const { elementRef: e, pointerPosition:
|
|
60
|
-
var
|
|
59
|
+
const { elementRef: e, pointerPosition: i, isDragging: u, draggingElements: c } = fe(), n = w(() => {
|
|
60
|
+
var s, h, f, y;
|
|
61
61
|
return {
|
|
62
|
-
transform: `translate3d(${(((
|
|
62
|
+
transform: `translate3d(${(((s = i.current.value) == null ? void 0 : s.x) ?? 0) - (((h = i.offset.pixel.value) == null ? void 0 : h.x) ?? 0)}px, ${(((f = i.current.value) == null ? void 0 : f.y) ?? 0) - (((y = i.offset.pixel.value) == null ? void 0 : y.y) ?? 0)}px, 0)`,
|
|
63
63
|
zIndex: 1e3,
|
|
64
64
|
position: "fixed",
|
|
65
65
|
top: 0,
|
|
@@ -67,76 +67,88 @@ const M = () => (te || (Y = ie(!0).run(() => ({
|
|
|
67
67
|
transition: "0.3s cubic-bezier(0.165, 0.84, 0.44, 1)"
|
|
68
68
|
};
|
|
69
69
|
});
|
|
70
|
-
return (
|
|
70
|
+
return (s, h) => ee(u) ? (R(), $("div", {
|
|
71
71
|
key: 0,
|
|
72
72
|
ref_key: "elementRef",
|
|
73
73
|
ref: e,
|
|
74
|
-
style:
|
|
74
|
+
style: te(n.value)
|
|
75
75
|
}, [
|
|
76
|
-
(R(!0),
|
|
76
|
+
(R(!0), $(ae, null, ue(ee(c), (f, y) => {
|
|
77
77
|
var l, E;
|
|
78
|
-
return R(),
|
|
78
|
+
return R(), $("div", {
|
|
79
79
|
key: y,
|
|
80
80
|
innerHTML: f.initialHTML,
|
|
81
|
-
style:
|
|
81
|
+
style: te({
|
|
82
82
|
width: `${(l = f.initialRect) == null ? void 0 : l.width}px`,
|
|
83
83
|
height: `${(E = f.initialRect) == null ? void 0 : E.height}px`
|
|
84
84
|
})
|
|
85
|
-
}, null, 12,
|
|
85
|
+
}, null, 12, me);
|
|
86
86
|
}), 128))
|
|
87
87
|
], 4)) : se("", !0);
|
|
88
88
|
}
|
|
89
|
-
}),
|
|
89
|
+
}), ye = /* @__PURE__ */ N({
|
|
90
90
|
__name: "DragOverlay",
|
|
91
91
|
setup(t) {
|
|
92
|
-
const { activeContainer: e } =
|
|
93
|
-
() => e.component.value ??
|
|
92
|
+
const { activeContainer: e } = I(), i = w(
|
|
93
|
+
() => e.component.value ?? pe
|
|
94
94
|
);
|
|
95
|
-
return (u, c) => (R(), ce(ve(
|
|
95
|
+
return (u, c) => (R(), ce(ve(i.value)));
|
|
96
96
|
}
|
|
97
|
-
}),
|
|
97
|
+
}), Ie = /* @__PURE__ */ N({
|
|
98
|
+
__name: "DnDContext",
|
|
99
|
+
setup(t) {
|
|
100
|
+
const e = p(null);
|
|
101
|
+
return (i, u) => (R(), $("div", {
|
|
102
|
+
ref_key: "contextRef",
|
|
103
|
+
ref: e
|
|
104
|
+
}, [
|
|
105
|
+
de(i.$slots, "default"),
|
|
106
|
+
ge(ye)
|
|
107
|
+
], 512));
|
|
108
|
+
}
|
|
109
|
+
}), Ee = "data-dnd-draggable", Pe = (t) => {
|
|
98
110
|
const {
|
|
99
111
|
elements: e,
|
|
100
|
-
draggingElements:
|
|
112
|
+
draggingElements: i,
|
|
101
113
|
hovered: u,
|
|
102
114
|
selectedElements: c,
|
|
103
115
|
isDragging: n
|
|
104
|
-
} =
|
|
116
|
+
} = I(), s = p(null), h = w(
|
|
105
117
|
() => {
|
|
106
118
|
var m;
|
|
107
|
-
return ((m = u.element.value) == null ? void 0 : m.node) ===
|
|
119
|
+
return ((m = u.element.value) == null ? void 0 : m.node) === s.value;
|
|
108
120
|
}
|
|
109
121
|
), f = w(
|
|
110
|
-
() =>
|
|
122
|
+
() => i.value.some((m) => m.node === s.value)
|
|
111
123
|
), y = w(() => {
|
|
112
|
-
if (!
|
|
124
|
+
if (!s.value || !n.value) return !1;
|
|
113
125
|
const m = e.value.find(
|
|
114
|
-
(D) => D.node ===
|
|
126
|
+
(D) => D.node === s.value
|
|
115
127
|
);
|
|
116
|
-
return m != null && m.groups.length ? !
|
|
128
|
+
return m != null && m.groups.length ? !i.value.some((D) => D.groups.length ? !D.groups.some(
|
|
117
129
|
(r) => m.groups.includes(r)
|
|
118
130
|
) : !1) : !0;
|
|
119
131
|
});
|
|
120
132
|
return {
|
|
121
|
-
elementRef:
|
|
133
|
+
elementRef: s,
|
|
122
134
|
registerElement: () => {
|
|
123
|
-
if (!
|
|
135
|
+
if (!s.value) throw new Error("ElementRef is not set");
|
|
124
136
|
e.value.push({
|
|
125
|
-
node:
|
|
137
|
+
node: s.value,
|
|
126
138
|
groups: (t == null ? void 0 : t.groups) ?? [],
|
|
127
139
|
layer: (t == null ? void 0 : t.layer) ?? null,
|
|
128
140
|
defaultLayer: (t == null ? void 0 : t.layer) ?? null,
|
|
129
141
|
events: (t == null ? void 0 : t.events) ?? {},
|
|
130
142
|
data: (t == null ? void 0 : t.data) ?? void 0
|
|
131
|
-
}),
|
|
143
|
+
}), s.value.setAttribute(Ee, "true");
|
|
132
144
|
},
|
|
133
145
|
unregisterElement: () => {
|
|
134
146
|
const m = e.value.findIndex(
|
|
135
|
-
(r) => r.node ===
|
|
147
|
+
(r) => r.node === s.value
|
|
136
148
|
);
|
|
137
149
|
m !== -1 && e.value.splice(m, 1);
|
|
138
150
|
const D = c.value.findIndex(
|
|
139
|
-
(r) => r.node ===
|
|
151
|
+
(r) => r.node === s.value
|
|
140
152
|
);
|
|
141
153
|
D !== -1 && c.value.splice(D, 1);
|
|
142
154
|
},
|
|
@@ -144,20 +156,20 @@ const M = () => (te || (Y = ie(!0).run(() => ({
|
|
|
144
156
|
isOvered: h,
|
|
145
157
|
isAllowed: y
|
|
146
158
|
};
|
|
147
|
-
},
|
|
148
|
-
let t = "", e = "",
|
|
159
|
+
}, we = () => {
|
|
160
|
+
let t = "", e = "", i = "";
|
|
149
161
|
const u = () => {
|
|
150
|
-
const
|
|
151
|
-
t =
|
|
162
|
+
const s = document.body;
|
|
163
|
+
t = s.style.userSelect, e = s.style.touchAction, i = s.style.overscrollBehavior, s.style.userSelect = "none", s.style.touchAction = "none", s.style.overscrollBehavior = "none", window.addEventListener("contextmenu", n), window.addEventListener("selectstart", n), window.addEventListener("touchstart", n), window.addEventListener("touchmove", n);
|
|
152
164
|
}, c = () => {
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
}, n = (
|
|
165
|
+
const s = document.body;
|
|
166
|
+
s.style.userSelect = t, s.style.touchAction = e, s.style.overscrollBehavior = i, window.removeEventListener("contextmenu", n), window.removeEventListener("selectstart", n), window.removeEventListener("touchstart", n), window.removeEventListener("touchmove", n);
|
|
167
|
+
}, n = (s) => s.preventDefault();
|
|
156
168
|
return {
|
|
157
169
|
disableInteractions: u,
|
|
158
170
|
enableInteractions: c
|
|
159
171
|
};
|
|
160
|
-
},
|
|
172
|
+
}, re = (t, e) => t.x < e.x + e.width && t.x + t.width > e.x && t.y < e.y + e.height && t.y + t.height > e.y, k = (t) => {
|
|
161
173
|
if (!t)
|
|
162
174
|
return {
|
|
163
175
|
x: 0,
|
|
@@ -180,37 +192,37 @@ const M = () => (te || (Y = ie(!0).run(() => ({
|
|
|
180
192
|
width: e.width,
|
|
181
193
|
height: e.height
|
|
182
194
|
};
|
|
183
|
-
},
|
|
195
|
+
}, Y = (t) => ({
|
|
184
196
|
x: t.x + t.width / 2,
|
|
185
197
|
y: t.y + t.height / 2
|
|
186
|
-
}),
|
|
187
|
-
const
|
|
198
|
+
}), xe = (t, e) => {
|
|
199
|
+
const i = k(t);
|
|
188
200
|
return {
|
|
189
201
|
pixel: {
|
|
190
|
-
x: e.x -
|
|
191
|
-
y: e.y -
|
|
202
|
+
x: e.x - i.x,
|
|
203
|
+
y: e.y - i.y
|
|
192
204
|
},
|
|
193
205
|
percent: {
|
|
194
|
-
x: (e.x -
|
|
195
|
-
y: (e.y -
|
|
206
|
+
x: (e.x - i.x) / i.width * 100,
|
|
207
|
+
y: (e.y - i.y) / i.height * 100
|
|
196
208
|
}
|
|
197
209
|
};
|
|
198
|
-
},
|
|
199
|
-
const
|
|
200
|
-
return Math.sqrt(
|
|
201
|
-
},
|
|
202
|
-
const e =
|
|
210
|
+
}, oe = (t, e) => {
|
|
211
|
+
const i = e.x - t.x, u = e.y - t.y;
|
|
212
|
+
return Math.sqrt(i * i + u * u);
|
|
213
|
+
}, _ = (t, e) => t ? e.contains(t) : !1, De = (t) => {
|
|
214
|
+
const e = I();
|
|
203
215
|
return {
|
|
204
216
|
onPointerStart: (n) => {
|
|
205
217
|
e.pointerPosition.start.value = { x: n.clientX, y: n.clientY }, e.pointerPosition.current.value = {
|
|
206
218
|
x: n.clientX,
|
|
207
219
|
y: n.clientY
|
|
208
220
|
};
|
|
209
|
-
const { pixel:
|
|
221
|
+
const { pixel: s, percent: h } = xe(t.value, {
|
|
210
222
|
x: n.clientX,
|
|
211
223
|
y: n.clientY
|
|
212
224
|
});
|
|
213
|
-
e.pointerPosition.offset.pixel.value =
|
|
225
|
+
e.pointerPosition.offset.pixel.value = s, e.pointerPosition.offset.percent.value = h;
|
|
214
226
|
},
|
|
215
227
|
onPointerMove: (n) => {
|
|
216
228
|
e.pointerPosition.current.value = {
|
|
@@ -222,20 +234,20 @@ const M = () => (te || (Y = ie(!0).run(() => ({
|
|
|
222
234
|
e.pointerPosition.current.value = null, e.pointerPosition.start.value = null, e.pointerPosition.offset.pixel.value = null, e.pointerPosition.offset.percent.value = null;
|
|
223
235
|
}
|
|
224
236
|
};
|
|
225
|
-
},
|
|
226
|
-
const e =
|
|
237
|
+
}, Ce = (t) => {
|
|
238
|
+
const e = I(), { onPointerStart: i, onPointerMove: u, onPointerEnd: c } = De(t);
|
|
227
239
|
let n = null;
|
|
228
|
-
const
|
|
229
|
-
var v,
|
|
240
|
+
const s = (r) => {
|
|
241
|
+
var v, C;
|
|
230
242
|
const d = e.selectedElements.value.some(
|
|
231
243
|
(P) => P.node === r
|
|
232
244
|
);
|
|
233
245
|
if (e.selectedElements.value.length && d)
|
|
234
246
|
return e.selectedElements.value.map((P) => {
|
|
235
|
-
var
|
|
247
|
+
var M, T;
|
|
236
248
|
return {
|
|
237
249
|
...P,
|
|
238
|
-
initialHTML: ((
|
|
250
|
+
initialHTML: ((M = P.node) == null ? void 0 : M.outerHTML) ?? "",
|
|
239
251
|
initialRect: (T = P.node) == null ? void 0 : T.getBoundingClientRect()
|
|
240
252
|
};
|
|
241
253
|
});
|
|
@@ -247,7 +259,7 @@ const M = () => (te || (Y = ie(!0).run(() => ({
|
|
|
247
259
|
{
|
|
248
260
|
...g,
|
|
249
261
|
initialHTML: ((v = g.node) == null ? void 0 : v.outerHTML) ?? "",
|
|
250
|
-
initialRect: (
|
|
262
|
+
initialRect: (C = g.node) == null ? void 0 : C.getBoundingClientRect()
|
|
251
263
|
}
|
|
252
264
|
] : [];
|
|
253
265
|
}, h = (r, d) => {
|
|
@@ -257,71 +269,71 @@ const M = () => (te || (Y = ie(!0).run(() => ({
|
|
|
257
269
|
), v = Math.max(
|
|
258
270
|
0,
|
|
259
271
|
Math.min(r.y + r.height, d.y + d.height) - Math.max(r.y, d.y)
|
|
260
|
-
),
|
|
261
|
-
return (
|
|
272
|
+
), C = g * v, P = r.width * r.height, M = d.width * d.height;
|
|
273
|
+
return (C / P * 100 + C / M * 100) / 2;
|
|
262
274
|
}, f = () => {
|
|
263
|
-
var q,
|
|
264
|
-
const r =
|
|
265
|
-
if (!o.node ||
|
|
266
|
-
(x) => x &&
|
|
275
|
+
var q, V, B, j, G, J, K, Q, W, b;
|
|
276
|
+
const r = k(e.activeContainer.ref.value), d = Y(r), g = ((q = e.pointerPosition.current.value) == null ? void 0 : q.x) ?? 0, v = ((V = e.pointerPosition.current.value) == null ? void 0 : V.y) ?? 0, P = !(r && g >= r.x && g <= r.x + r.width && v >= r.y && v <= r.y + r.height), M = e.draggingElements.value.map((o) => o.node), T = e.elements.value.filter((o) => {
|
|
277
|
+
if (!o.node || M.some(
|
|
278
|
+
(x) => x && _(o.node, x)
|
|
267
279
|
) || o.groups.length && !!e.draggingElements.value.some(
|
|
268
|
-
(
|
|
269
|
-
(
|
|
280
|
+
(L) => L.groups.length ? !L.groups.some(
|
|
281
|
+
(S) => o.groups.includes(S)
|
|
270
282
|
) : !1
|
|
271
283
|
))
|
|
272
284
|
return !1;
|
|
273
|
-
const
|
|
274
|
-
return
|
|
285
|
+
const a = k(o.node);
|
|
286
|
+
return a && r && re(a, r);
|
|
275
287
|
}).map((o) => {
|
|
276
|
-
const
|
|
277
|
-
(O) => O !== o && O.node && o.node &&
|
|
288
|
+
const a = k(o.node), x = Y(a), L = g >= a.x && g <= a.x + a.width && v >= a.y && v <= a.y + a.height, S = h(a, r), Z = oe(d, x), A = e.elements.value.filter(
|
|
289
|
+
(O) => O !== o && O.node && o.node && _(
|
|
278
290
|
o.node,
|
|
279
291
|
O.node
|
|
280
292
|
)
|
|
281
293
|
).length;
|
|
282
294
|
return {
|
|
283
295
|
element: o,
|
|
284
|
-
isPointerInElement:
|
|
285
|
-
overlapPercent:
|
|
296
|
+
isPointerInElement: L,
|
|
297
|
+
overlapPercent: S,
|
|
286
298
|
depth: A,
|
|
287
299
|
centerDistance: Z
|
|
288
300
|
};
|
|
289
|
-
}).sort((o,
|
|
301
|
+
}).sort((o, a) => {
|
|
290
302
|
if (!P) {
|
|
291
|
-
if (o.isPointerInElement &&
|
|
292
|
-
return
|
|
293
|
-
if (o.isPointerInElement !==
|
|
303
|
+
if (o.isPointerInElement && a.isPointerInElement)
|
|
304
|
+
return a.depth - o.depth;
|
|
305
|
+
if (o.isPointerInElement !== a.isPointerInElement)
|
|
294
306
|
return o.isPointerInElement ? -1 : 1;
|
|
295
307
|
}
|
|
296
|
-
return Math.abs(o.overlapPercent -
|
|
308
|
+
return Math.abs(o.overlapPercent - a.overlapPercent) <= 1 ? o.centerDistance - a.centerDistance : a.overlapPercent - o.overlapPercent;
|
|
297
309
|
}), le = e.zones.value.filter((o) => {
|
|
298
|
-
if (!o.node ||
|
|
299
|
-
(x) => x &&
|
|
300
|
-
) || o.groups.length && !!e.draggingElements.value.some((
|
|
310
|
+
if (!o.node || M.some(
|
|
311
|
+
(x) => x && _(o.node, x)
|
|
312
|
+
) || o.groups.length && !!e.draggingElements.value.some((L) => L.groups.length ? !L.groups.some((S) => o.groups.includes(S)) : !1))
|
|
301
313
|
return !1;
|
|
302
|
-
const
|
|
303
|
-
return
|
|
314
|
+
const a = k(o.node);
|
|
315
|
+
return a && r && re(a, r);
|
|
304
316
|
}).map((o) => {
|
|
305
|
-
const
|
|
306
|
-
(O) => O !== o && O.node && o.node &&
|
|
317
|
+
const a = k(o.node), x = Y(a), L = g >= a.x && g <= a.x + a.width && v >= a.y && v <= a.y + a.height, S = h(a, r), Z = oe(d, x), A = e.zones.value.filter(
|
|
318
|
+
(O) => O !== o && O.node && o.node && _(o.node, O.node)
|
|
307
319
|
).length;
|
|
308
320
|
return {
|
|
309
321
|
zone: o,
|
|
310
|
-
isPointerInElement:
|
|
311
|
-
overlapPercent:
|
|
322
|
+
isPointerInElement: L,
|
|
323
|
+
overlapPercent: S,
|
|
312
324
|
depth: A,
|
|
313
325
|
centerDistance: Z
|
|
314
326
|
};
|
|
315
|
-
}).sort((o,
|
|
327
|
+
}).sort((o, a) => {
|
|
316
328
|
if (!P) {
|
|
317
|
-
if (o.isPointerInElement &&
|
|
318
|
-
return
|
|
319
|
-
if (o.isPointerInElement !==
|
|
329
|
+
if (o.isPointerInElement && a.isPointerInElement)
|
|
330
|
+
return a.depth - o.depth;
|
|
331
|
+
if (o.isPointerInElement !== a.isPointerInElement)
|
|
320
332
|
return o.isPointerInElement ? -1 : 1;
|
|
321
333
|
}
|
|
322
|
-
return Math.abs(o.overlapPercent -
|
|
323
|
-
}),
|
|
324
|
-
e.hovered.element.value = ((B = T[0]) == null ? void 0 : B.element) ?? null, e.hovered.zone.value = ((
|
|
334
|
+
return Math.abs(o.overlapPercent - a.overlapPercent) <= 1 ? o.centerDistance - a.centerDistance : a.overlapPercent - o.overlapPercent;
|
|
335
|
+
}), z = e.hovered.element.value, H = e.hovered.zone.value;
|
|
336
|
+
e.hovered.element.value = ((B = T[0]) == null ? void 0 : B.element) ?? null, e.hovered.zone.value = ((j = le[0]) == null ? void 0 : j.zone) ?? null, e.hovered.element.value !== z && ((G = z == null ? void 0 : z.events) != null && G.onLeave && z.events.onLeave(e), (K = (J = e.hovered.element.value) == null ? void 0 : J.events) != null && K.onHover && e.hovered.element.value.events.onHover(e)), e.hovered.zone.value !== H && ((Q = H == null ? void 0 : H.events) != null && Q.onLeave && H.events.onLeave(e), (b = (W = e.hovered.zone.value) == null ? void 0 : W.events) != null && b.onHover && e.hovered.zone.value.events.onHover(e)), n = requestAnimationFrame(f);
|
|
325
337
|
}, y = () => {
|
|
326
338
|
f();
|
|
327
339
|
}, l = () => {
|
|
@@ -329,7 +341,7 @@ const M = () => (te || (Y = ie(!0).run(() => ({
|
|
|
329
341
|
};
|
|
330
342
|
return {
|
|
331
343
|
activate: (r) => {
|
|
332
|
-
e.draggingElements.value =
|
|
344
|
+
e.draggingElements.value = s(t.value), i(r), y();
|
|
333
345
|
},
|
|
334
346
|
track: (r) => {
|
|
335
347
|
u(r);
|
|
@@ -338,22 +350,22 @@ const M = () => (te || (Y = ie(!0).run(() => ({
|
|
|
338
350
|
var r, d;
|
|
339
351
|
c(), e.hovered.zone.value ? (d = (r = e.hovered.zone.value.events).onDrop) == null || d.call(r, e) : e.draggingElements.value.forEach(
|
|
340
352
|
(g) => {
|
|
341
|
-
var v,
|
|
342
|
-
return (
|
|
353
|
+
var v, C;
|
|
354
|
+
return (C = (v = g.events).onEnd) == null ? void 0 : C.call(v, e);
|
|
343
355
|
}
|
|
344
356
|
), e.draggingElements.value = [], e.selectedElements.value = [], e.hovered.zone.value = null, e.hovered.element.value = null, l();
|
|
345
357
|
}
|
|
346
358
|
};
|
|
347
|
-
},
|
|
359
|
+
}, Me = (t) => {
|
|
348
360
|
const {
|
|
349
361
|
elementRef: e,
|
|
350
|
-
registerElement:
|
|
362
|
+
registerElement: i,
|
|
351
363
|
unregisterElement: u,
|
|
352
364
|
isDragging: c,
|
|
353
365
|
isOvered: n,
|
|
354
|
-
isAllowed:
|
|
355
|
-
} =
|
|
356
|
-
t != null && t.container && (y.activeContainer.component.value =
|
|
366
|
+
isAllowed: s
|
|
367
|
+
} = Pe(t), { disableInteractions: h, enableInteractions: f } = we(), y = I(), { activate: l, track: E, deactivate: m } = Ce(e), D = (v) => {
|
|
368
|
+
t != null && t.container && (y.activeContainer.component.value = he(t.container)), h(), l(v), document.addEventListener("pointermove", r), document.addEventListener("pointerup", g), document.addEventListener("wheel", d);
|
|
357
369
|
}, r = (v) => {
|
|
358
370
|
E(v);
|
|
359
371
|
}, d = (v) => {
|
|
@@ -361,18 +373,18 @@ const M = () => (te || (Y = ie(!0).run(() => ({
|
|
|
361
373
|
}, g = () => {
|
|
362
374
|
y.activeContainer.component.value = null, f(), m(), document.removeEventListener("pointermove", r), document.removeEventListener("pointerup", g), document.removeEventListener("wheel", d);
|
|
363
375
|
};
|
|
364
|
-
return F(
|
|
376
|
+
return F(i), U(u), {
|
|
365
377
|
pointerPosition: y.pointerPosition,
|
|
366
378
|
elementRef: e,
|
|
367
379
|
isDragging: c,
|
|
368
380
|
isOvered: n,
|
|
369
|
-
isAllowed:
|
|
381
|
+
isAllowed: s,
|
|
370
382
|
handleDragStart: D
|
|
371
383
|
};
|
|
372
|
-
},
|
|
373
|
-
const { zones: e, hovered:
|
|
384
|
+
}, Le = (t) => {
|
|
385
|
+
const { zones: e, hovered: i, draggingElements: u, isDragging: c } = I(), n = p(null), s = w(() => {
|
|
374
386
|
var l;
|
|
375
|
-
return ((l =
|
|
387
|
+
return ((l = i.zone.value) == null ? void 0 : l.node) === n.value;
|
|
376
388
|
}), h = w(() => {
|
|
377
389
|
if (!n.value || !c.value) return !1;
|
|
378
390
|
const l = e.value.find(
|
|
@@ -396,22 +408,22 @@ const M = () => (te || (Y = ie(!0).run(() => ({
|
|
|
396
408
|
(E) => E.node === n.value
|
|
397
409
|
);
|
|
398
410
|
l !== -1 && e.value.splice(l, 1);
|
|
399
|
-
}, isOvered:
|
|
400
|
-
},
|
|
401
|
-
const { elementRef: e, registerZone:
|
|
402
|
-
return F(
|
|
403
|
-
},
|
|
404
|
-
const { selectedElements: e, elements:
|
|
405
|
-
() =>
|
|
411
|
+
}, isOvered: s, isAllowed: h };
|
|
412
|
+
}, Se = (t) => {
|
|
413
|
+
const { elementRef: e, registerZone: i, unregisterZone: u, isOvered: c, isAllowed: n } = Le(t);
|
|
414
|
+
return F(i), U(u), { elementRef: e, isOvered: c, isAllowed: n };
|
|
415
|
+
}, Oe = (t) => {
|
|
416
|
+
const { selectedElements: e, elements: i } = I(), u = w(
|
|
417
|
+
() => i.value.find((l) => l.node === t.value)
|
|
406
418
|
), c = w(
|
|
407
419
|
() => e.value.some((l) => l.node === t.value)
|
|
408
420
|
), n = w(() => t.value ? e.value.some(
|
|
409
|
-
(l) => l.node &&
|
|
421
|
+
(l) => l.node && _(
|
|
410
422
|
l.node,
|
|
411
423
|
t.value
|
|
412
424
|
)
|
|
413
|
-
) : !1),
|
|
414
|
-
(l) => l.node &&
|
|
425
|
+
) : !1), s = w(() => t.value ? e.value.some(
|
|
426
|
+
(l) => l.node && _(
|
|
415
427
|
t.value,
|
|
416
428
|
l.node
|
|
417
429
|
)
|
|
@@ -421,12 +433,12 @@ const M = () => (te || (Y = ie(!0).run(() => ({
|
|
|
421
433
|
));
|
|
422
434
|
}, f = () => {
|
|
423
435
|
u.value && (n.value && (e.value = e.value.filter(
|
|
424
|
-
(l) => l.node && !
|
|
436
|
+
(l) => l.node && !_(
|
|
425
437
|
l.node,
|
|
426
438
|
t.value
|
|
427
439
|
)
|
|
428
|
-
)),
|
|
429
|
-
(l) => l.node && !
|
|
440
|
+
)), s.value && (e.value = e.value.filter(
|
|
441
|
+
(l) => l.node && !_(
|
|
430
442
|
t.value,
|
|
431
443
|
l.node
|
|
432
444
|
)
|
|
@@ -443,10 +455,11 @@ const M = () => (te || (Y = ie(!0).run(() => ({
|
|
|
443
455
|
};
|
|
444
456
|
};
|
|
445
457
|
export {
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
458
|
+
Ie as DnDContext,
|
|
459
|
+
ye as DragOverlay,
|
|
460
|
+
k as getBoundingBox,
|
|
461
|
+
I as useDnDStore,
|
|
462
|
+
Me as useDraggable,
|
|
463
|
+
Se as useDroppable,
|
|
464
|
+
Oe as useSelection
|
|
452
465
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vue-dnd-kit/core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.25-beta",
|
|
4
4
|
"description": "Core functionality for Vue DnD Kit - a lightweight Vue 3 library for building performant and accessible drag and drop interfaces",
|
|
5
5
|
"author": "ZiZIGY",
|
|
6
6
|
"license": "MIT",
|