stylus/vendor/@eight04/draggable-list/dist/draggable-list.iife.js
2021-12-11 01:33:33 +08:00

3 lines
2.2 KiB
JavaScript

var DraggableList=function(){"use strict";return function(t){for(const e of t.children)e.draggable=!0;new MutationObserver((t=>{for(const e of t)for(const t of e.addedNodes)t.draggable=!0})).observe(t,{childList:!0});let e=null,r=0,a=0,s=null,n=[],o=null,d=!1;function l(r,a,n){const d={origin:r,startPos:e,currentPos:s,dragTarget:o};n&&Object.assign(d,n),t.dispatchEvent(new CustomEvent(a,{detail:d}))}t.addEventListener("dragstart",(i=>{if(i.target.parentNode!==t)return;o=i.target,d=!1,e={x:i.pageX,y:i.pageY},r=[...t.children].indexOf(i.target),a=r,s=e;const g=window.scrollY;n=[...t.children].map((t=>{const e=t.getBoundingClientRect();return{top:e.top+g,bottom:e.bottom+g}})),o.classList.add("draggable-list-target"),t.classList.add("draggable-list-dragging"),l(i,"d:dragstart")})),t.addEventListener("dragenter",(t=>{o&&(t.preventDefault(),l(t,"d:dragmove"))})),t.addEventListener("dragover",(e=>{if(!o)return;e.preventDefault();const d={x:e.pageX,y:e.pageY};a=function(t,e,r,a,s,n){if(n>a)for(let a=s;a<t.length&&!(e[a].top>n);a++)a<r&&e[a].bottom<n&&t[a].classList.contains("draggable-list-transformed")?(t[a].classList.remove("draggable-list-transformed"),t[a].style=""):a>r&&e[a].top<n&&!t[a].classList.contains("draggable-list-transformed")&&(t[a].classList.add("draggable-list-transformed"),t[a].style.transform="translateY(".concat(e[r].top-e[r+1].top,"px)")),s=a;else for(let a=s;a>=0&&!(e[a].bottom<n);a--)a>r&&e[a].top>n&&t[a].classList.contains("draggable-list-transformed")?(t[a].classList.remove("draggable-list-transformed"),t[a].style=""):a<r&&e[a].bottom>n&&!t[a].classList.contains("draggable-list-transformed")&&(t[a].classList.add("draggable-list-transformed"),t[a].style.transform="translateY(".concat(e[r].bottom-e[r-1].bottom,"px)")),s=a;return s}(t.children,n,r,s.y,a,d.y),s=d,l(e,"d:dragmove")})),document.addEventListener("dragend",(e=>{if(o){for(const e of t.children)e.classList.remove("draggable-list-transformed"),e.style="";o.classList.remove("draggable-list-target"),t.classList.remove("draggable-list-dragging"),l(e,"d:dragend",{originalIndex:r,spliceIndex:a,insertBefore:a<r?t.children[a]:t.children[a+1],dropped:d}),o=null}})),t.addEventListener("drop",(t=>{o&&(d=!0,t.preventDefault())}))}}();
//# sourceMappingURL=draggable-list.iife.js.map