pointrix 1.0.0

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.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +971 -0
  3. package/dist/pointrix-drag.cjs +1 -0
  4. package/dist/pointrix-drag.d.cts +189 -0
  5. package/dist/pointrix-drag.d.mts +189 -0
  6. package/dist/pointrix-drag.mjs +2 -0
  7. package/dist/pointrix-dropzone.cjs +1 -0
  8. package/dist/pointrix-dropzone.d.cts +99 -0
  9. package/dist/pointrix-dropzone.d.mts +99 -0
  10. package/dist/pointrix-dropzone.mjs +2 -0
  11. package/dist/pointrix-gesture.cjs +1 -0
  12. package/dist/pointrix-gesture.d.cts +119 -0
  13. package/dist/pointrix-gesture.d.mts +119 -0
  14. package/dist/pointrix-gesture.mjs +2 -0
  15. package/dist/pointrix-modifiers.cjs +1 -0
  16. package/dist/pointrix-modifiers.d.cts +334 -0
  17. package/dist/pointrix-modifiers.d.mts +334 -0
  18. package/dist/pointrix-modifiers.mjs +2 -0
  19. package/dist/pointrix-nano.cjs +1 -0
  20. package/dist/pointrix-nano.d.cts +82 -0
  21. package/dist/pointrix-nano.d.mts +82 -0
  22. package/dist/pointrix-nano.mjs +2 -0
  23. package/dist/pointrix-react.cjs +1 -0
  24. package/dist/pointrix-react.d.cts +537 -0
  25. package/dist/pointrix-react.d.mts +537 -0
  26. package/dist/pointrix-react.mjs +2 -0
  27. package/dist/pointrix-resize.cjs +1 -0
  28. package/dist/pointrix-resize.d.cts +193 -0
  29. package/dist/pointrix-resize.d.mts +193 -0
  30. package/dist/pointrix-resize.mjs +2 -0
  31. package/dist/pointrix-sortable.cjs +1 -0
  32. package/dist/pointrix-sortable.d.cts +89 -0
  33. package/dist/pointrix-sortable.d.mts +89 -0
  34. package/dist/pointrix-sortable.mjs +2 -0
  35. package/dist/pointrix-vue.cjs +1 -0
  36. package/dist/pointrix-vue.d.cts +485 -0
  37. package/dist/pointrix-vue.d.mts +485 -0
  38. package/dist/pointrix-vue.mjs +2 -0
  39. package/dist/pointrix.cjs +1 -0
  40. package/dist/pointrix.d.cts +784 -0
  41. package/dist/pointrix.d.mts +784 -0
  42. package/dist/pointrix.mjs +2 -0
  43. package/package.json +144 -0
@@ -0,0 +1 @@
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let e=null,t=new Set,n=new Set,r=null;function i(){return!r&&typeof PointerEvent<`u`&&(r=new PointerEvent(`pointermove`)),r}function a(){e===null&&(e=requestAnimationFrame(()=>{e=null;for(let e of n)e.update();if(n.clear(),t.size>0){let e=!1;for(let n of t)if(n.hasActivePointers()){e=!0;break}e&&a()}}))}var o=class e{on(e,t){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t),this}off(e,t){return this.listeners.get(e)?.delete(t),this}emit(e,t){let n=this.listeners.get(e);if(n)for(let e of n)e(t)}get enabled(){return this._enabled}set enabled(r){this._enabled=r,!r&&this.isActive&&(this.pointers.clear(),this.pointersCache=[],this.isActive=!1,t.delete(this),n.delete(this),e.activeInstance.get(this.element)===this&&e.activeInstance.set(this.element,null),document.removeEventListener(`pointermove`,this.onPointerMove),document.removeEventListener(`pointerup`,this.onPointerUp),document.removeEventListener(`pointercancel`,this.onPointerUp))}get interacting(){return this.isActive}static{this.elementInstances=new WeakMap}static{this.activeInstance=new WeakMap}static{this.elementListeners=new WeakMap}constructor(t,n={}){this.pointers=new Map,this.pointersCache=[],this.isActive=!1,this.lastUpdate=0,this.priority=0,this._enabled=!0,this.holdTimer=null,this.holdEventTimer=null,this.lastTapTime=0,this.lastTapTarget=null,this.listeners=new Map,this.element=t,this.options={threshold:3,preventScroll:!0,styleCursor:!0,...n},this.registerInstance();let r=e.elementInstances.get(t);if(r&&r.length===1&&(t.style.touchAction=this.options.touchAction??`none`,t.style.userSelect=`none`,t.style.webkitUserSelect=`none`),this.onPointerDown=this.onPointerDown.bind(this),this.onPointerMove=this.onPointerMove.bind(this),this.onPointerUp=this.onPointerUp.bind(this),r&&r.length===1){let n=n=>e.handleElementPointerDown(t,n);e.elementListeners.set(t,n),t.addEventListener(`pointerdown`,n)}}registerInstance(){let t=e.elementInstances.get(this.element);t?t.push(this):e.elementInstances.set(this.element,[this])}unregisterInstance(){let t=e.elementInstances.get(this.element);if(!t)return;let n=t.indexOf(this);n>=0&&(t.splice(n,1),t.length===0?(e.elementInstances.delete(this.element),e.activeInstance.delete(this.element),e.elementListeners.delete(this.element)):e.elementInstances.set(this.element,t))}shouldHandleEvent(e){return!0}checkEventFilters(e){let t=e.target;return t?!(this.options.ignoreFrom&&t.closest(this.options.ignoreFrom)||this.options.allowFrom&&!t.closest(this.options.allowFrom)):!0}static handleElementPointerDown(t,n){let r=e.elementInstances.get(t);if(!r)return;let i=e.activeInstance.get(t);if(i){i.onPointerDown(n);return}let a=null,o=-1;for(let e of r)e.checkEventFilters(n)&&e.shouldHandleEvent(n)&&e.enabled&&e.priority>o&&(a=e,o=e.priority);a&&(e.activeInstance.set(t,a),a.handlePointerDown(n))}onPointerDown(e){this.handlePointerDown(e)}handlePointerDown(e){if(this.options.mouseButtons&&!(e.buttons&this.options.mouseButtons))return;this.options.preventScroll&&e.preventDefault();let t={x:e.clientX,y:e.clientY},n={id:e.pointerId,start:{...t},current:{...t},previous:{...t},delta:{x:0,y:0},total:{x:0,y:0},velocity:{x:0,y:0},timestamp:e.timeStamp};this.pointers.set(e.pointerId,n),this.pointersCache=Array.from(this.pointers.values()),this.pointers.size===1&&(document.addEventListener(`pointermove`,this.onPointerMove,{passive:!1}),document.addEventListener(`pointerup`,this.onPointerUp),document.addEventListener(`pointercancel`,this.onPointerUp)),this.options.onHold&&(this.holdEventTimer&&clearTimeout(this.holdEventTimer),this.holdEventTimer=setTimeout(()=>{this.holdEventTimer=null,this.pointers.size>0&&!this.isActive&&this.options.onHold(this.createEvent(e))},this.options.holdDuration??600));let r=this.options.holdDelay??0;r>0?(this.holdTimer&&clearTimeout(this.holdTimer),this.holdTimer=setTimeout(()=>{this.holdTimer=null,!this.isActive&&this.pointers.size>0&&this.start(e)},r)):this.options.threshold===0&&this.start(e)}onPointerMove(e){let r=this.pointers.get(e.pointerId);if(!r)return;let i=e.clientX,o=e.clientY;if(r.current.x!==i||r.current.y!==o){if(r.current.x=i,r.current.y=o,!this.isActive){let t=r.current.x-r.start.x,n=r.current.y-r.start.y;Math.sqrt(t*t+n*n)>=(this.options.threshold||3)&&(this.holdTimer&&=(clearTimeout(this.holdTimer),null),this.holdEventTimer&&=(clearTimeout(this.holdEventTimer),null),this.start(e))}this.isActive&&(this.options.preventScroll&&e.preventDefault(),t.add(this),n.add(this),a())}}onPointerUp(e){if(this.pointers.get(e.pointerId)&&(this.pointers.delete(e.pointerId),this.pointersCache=Array.from(this.pointers.values()),this.holdTimer&&=(clearTimeout(this.holdTimer),null),this.holdEventTimer&&=(clearTimeout(this.holdEventTimer),null),this.pointers.size===0))if(document.removeEventListener(`pointermove`,this.onPointerMove),document.removeEventListener(`pointerup`,this.onPointerUp),document.removeEventListener(`pointercancel`,this.onPointerUp),this.isActive)this.end(e);else{let t=this.createEvent(e);this.options.onTap&&this.options.onTap(t),this.emit(`tap`,t);let n=e.timeStamp;this.options.onDoubleTap&&n-this.lastTapTime<300&&this.lastTapTarget===e.target&&this.options.onDoubleTap(t),this.lastTapTime=n,this.lastTapTarget=e.target}}start(e){this.isActive=!0,t.add(this);let n=this.createEvent(e);this.options.onStart&&this.options.onStart(n),this.emit(`start`,n)}end(r){this.isActive=!1,t.delete(this),n.delete(this),e.activeInstance.get(this.element)===this&&e.activeInstance.set(this.element,null);let i=this.createEvent(r);this.options.onEnd&&this.options.onEnd(i),this.emit(`end`,i)}update(){if(!this.isActive||this.pointers.size===0)return;let e=performance.now(),t=e-this.lastUpdate;this.lastUpdate=e;let r=!1,a=!1;if(this.pointers.forEach(e=>{let n=e.current.x-e.previous.x,i=e.current.y-e.previous.y;if(n!==0||i!==0){if(r=!0,e.delta.x=n,e.delta.y=i,e.total.x=e.current.x-e.start.x,e.total.y=e.current.y-e.start.y,t>0){let r=n/t*1e3,a=i/t*1e3;e.velocity.x=e.velocity.x*.7+r*.3,e.velocity.y=e.velocity.y*.7+a*.3}e.previous.x=e.current.x,e.previous.y=e.current.y}(Math.abs(e.velocity.x)>.1||Math.abs(e.velocity.y)>.1)&&(a=!0)}),r){let e=i(),t=this.createEvent(e);this.options.onMove&&this.options.onMove(t),this.emit(`move`,t)}a&&n.add(this)}hasActivePointers(){if(!this.isActive||this.pointers.size===0)return!1;for(let e of this.pointers.values())if(Math.abs(e.velocity.x)>.1||Math.abs(e.velocity.y)>.1)return!0;return this.pointers.size>0}createEvent(e){return{target:this.element,pointers:this.pointersCache,isPrimary:e.isPrimary,originalEvent:e}}destroy(){this.holdTimer&&=(clearTimeout(this.holdTimer),null),this.holdEventTimer&&=(clearTimeout(this.holdEventTimer),null),this.unregisterInstance();let n=e.elementInstances.get(this.element);if(!n||n.length===0){let t=e.elementListeners.get(this.element);t&&(this.element.removeEventListener(`pointerdown`,t),e.elementListeners.delete(this.element)),this.element.style.touchAction=``,this.element.style.userSelect=``,this.element.style.webkitUserSelect=``}this.pointers.size>0&&(document.removeEventListener(`pointermove`,this.onPointerMove),document.removeEventListener(`pointerup`,this.onPointerUp),document.removeEventListener(`pointercancel`,this.onPointerUp)),t.delete(this),this.pointers.clear(),this.pointersCache=[]}};function s(e,t){let n=typeof e==`string`?document.querySelector(e):e;if(!n)throw Error(`Element not found: ${e}`);return new o(n,t)}function c(e,t){let n=t.position.x,r=t.position.y,i=t.velocity.x,a=t.velocity.y,o=t.size?.width,s=t.size?.height;for(let c of e){t.position.x=n,t.position.y=r,t.velocity.x=i,t.velocity.y=a,t.size&&o!==void 0&&s!==void 0&&(t.size.width=o,t.size.height=s);let e=c.modify(t);n=e.position.x,r=e.position.y,i=e.velocity.x,a=e.velocity.y,e.size&&(o=e.size.width,s=e.size.height)}return{position:{x:n,y:r},velocity:{x:i,y:a},size:o!==void 0&&s!==void 0?{width:o,height:s}:void 0}}let l={instructions:`Press Space or Enter to pick up. Use arrow keys to move. Press Space or Enter to drop. Press Escape to cancel.`,pickedUp:(e,t,n)=>`Picked up ${e}, position ${t} of ${n}`,movedTo:(e,t)=>`Moved to position ${e} of ${t}`,dropped:(e,t,n)=>`Dropped ${e} in position ${t} of ${n}`,dragPickedUp:`Picked up`,dragDropped:`Dropped`};function u(e){l={...l,...e}}function d(){return l}let f=null;function p(){return f&&f.isConnected?f:(f=document.createElement(`div`),f.setAttribute(`aria-live`,`assertive`),f.setAttribute(`aria-atomic`,`true`),f.setAttribute(`role`,`status`),f.style.cssText=`position:fixed;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0`,document.body.appendChild(f),f)}function m(e){let t=p();t.textContent=``,requestAnimationFrame(()=>{t.textContent=e})}let h=null;const g=`grip-instructions`;function _(){return h&&h.isConnected?(h.textContent=l.instructions,g):(h=document.createElement(`div`),h.id=g,h.style.cssText=`position:fixed;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0`,h.textContent=l.instructions,document.body.appendChild(h),g)}function v(e){e.hasAttribute(`tabindex`)||e.setAttribute(`tabindex`,`0`),e.hasAttribute(`role`)||e.setAttribute(`role`,`button`),e.setAttribute(`aria-roledescription`,`draggable`),e.setAttribute(`aria-describedby`,_())}function y(e,t){e.setAttribute(`aria-grabbed`,String(t))}function b(e){e.removeAttribute(`aria-roledescription`),e.removeAttribute(`aria-grabbed`),e.removeAttribute(`aria-describedby`)}function x(e,t,n){e.hasAttribute(`tabindex`)||e.setAttribute(`tabindex`,`0`),e.hasAttribute(`role`)||e.setAttribute(`role`,`option`),e.setAttribute(`aria-roledescription`,`sortable`),e.setAttribute(`aria-describedby`,_()),e.setAttribute(`aria-posinset`,String(t+1)),e.setAttribute(`aria-setsize`,String(n))}function S(e){e.removeAttribute(`aria-roledescription`),e.removeAttribute(`aria-grabbed`),e.removeAttribute(`aria-describedby`),e.removeAttribute(`aria-posinset`),e.removeAttribute(`aria-setsize`)}function C(e){e.hasAttribute(`role`)||e.setAttribute(`role`,`listbox`)}function w(e){e.getAttribute(`role`)===`listbox`&&e.removeAttribute(`role`)}function ee(e){e.setAttribute(`aria-dropeffect`,`move`)}function T(e,t){e.setAttribute(`aria-dropeffect`,t?`move`:`none`)}function E(e){e.removeAttribute(`aria-dropeffect`)}function D(e,t){return t.x>=e.left&&t.x<=e.right&&t.y>=e.top&&t.y<=e.bottom}function te(e,t){let n=Math.max(0,Math.min(e.right,t.right)-Math.max(e.left,t.left))*Math.max(0,Math.min(e.bottom,t.bottom)-Math.max(e.top,t.top)),r=e.width*e.height;return r>0?n/r:0}var O=class{on(e,t){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t),this}off(e,t){return this.listeners.get(e)?.delete(t),this}emit(e,t){let n=this.listeners.get(e);if(n)for(let e of n)e(t)}get enabled(){return this._enabled}set enabled(e){this._enabled=e}constructor(e,t={}){this._isOver=!1,this._isActive=!1,this._enabled=!0,this.listeners=new Map,this.element=e,this.options={overlap:`pointer`,aria:!0,...t},k.register(this),this.options.aria!==!1&&ee(e)}get isOver(){return this._isOver}get isActive(){return this._isActive}accepts(e){if(!this._enabled)return!1;let{accept:t}=this.options;return t?typeof t==`function`?t(e):e.matches(t):!0}checkOverlap(e,t){let n=this.element.getBoundingClientRect(),r=this.options.overlap??`pointer`;if(r===`pointer`)return D(n,t)?1:0;let i=e.getBoundingClientRect();if(r===`center`)return D(n,{x:i.left+i.width/2,y:i.top+i.height/2})?1:0;let a=te(i,n);return a>=r?a:0}activate(e){if(this._isActive)return;this._isActive=!0,this.options.activeClass&&this.element.classList.add(this.options.activeClass),this.options.aria!==!1&&T(this.element,!0);let t=this.createEvent(e,0);this.options.onActivate?.(t),this.emit(`activate`,t)}deactivate(e){if(!this._isActive)return;this._isOver&&this.leave(e),this._isActive=!1,this.options.activeClass&&this.element.classList.remove(this.options.activeClass),this.options.aria!==!1&&T(this.element,!1);let t=this.createEvent(e,0);this.options.onDeactivate?.(t),this.emit(`deactivate`,t)}enter(e,t,n){if(this._isOver)return;this._isOver=!0,this.options.hoverClass&&this.element.classList.add(this.options.hoverClass);let r=this.createEvent(e,t,n);this.options.onDragEnter?.(r),this.emit(`dragenter`,r)}leave(e,t){if(!this._isOver)return;this._isOver=!1,this.options.hoverClass&&this.element.classList.remove(this.options.hoverClass);let n=this.createEvent(e,0,t);this.options.onDragLeave?.(n),this.emit(`dragleave`,n)}over(e,t,n){let r=this.createEvent(e,t,n);this.options.onDragOver?.(r),this.emit(`dragover`,r)}drop(e,t,n){let r=this.createEvent(e,t,n);this.options.onDrop?.(r),this.emit(`drop`,r)}createEvent(e,t,n){return{target:this.element,draggable:e,dragEvent:n,overlap:t}}updateOptions(e){this.options={...this.options,...e}}destroy(){this._isOver=!1,this._isActive=!1,this.options.activeClass&&this.element.classList.remove(this.options.activeClass),this.options.hoverClass&&this.element.classList.remove(this.options.hoverClass),this.options.aria!==!1&&E(this.element),k.unregister(this)}};const k=new class{constructor(){this.zones=new Set}register(e){this.zones.add(e)}unregister(e){this.zones.delete(e)}onDragStart(e){for(let t of this.zones)t.accepts(e)&&t.activate(e)}onDragMove(e,t,n){for(let r of this.zones){if(!r.isActive)continue;let i=r.checkOverlap(e,t);i>0?(r.isOver||r.enter(e,i,n),r.over(e,i,n)):r.isOver&&r.leave(e,n)}}onDragEnd(e,t,n){for(let r of this.zones)if(r.isActive){if(r.isOver){let i=r.checkOverlap(e,t);r.drop(e,i>0?i:1,n)}r.deactivate(e)}}getActiveZones(){let e=[];for(let t of this.zones)t.isActive&&e.push(t);return e}getHoveredZones(){let e=[];for(let t of this.zones)t.isOver&&e.push(t);return e}};function A(e,t){let n=typeof e==`string`?document.querySelector(e):e;if(!n)throw Error(`Element not found: ${e}`);return new O(n,t)}var j=class extends o{constructor(e,t={}){super(e,{...t,onStart:e=>{this.handleDragStart(e),t.onStart?.(e)},onMove:e=>{this.handleDragMove(e),t.onMove?.(e)},onEnd:e=>{this.handleDragEnd(e),t.onEnd?.(e)}}),this.transform={x:0,y:0},this.startTransform={x:0,y:0},this.bounds=null,this.momentum={vx:0,vy:0,active:!1},this.transformNormalized=!1,this.detectedAxis=null,this.startAxisConfirmed=!1,this.cachedSize={width:0,height:0},this.modifierContext={position:{x:0,y:0},velocity:{x:0,y:0},element:null,startPosition:{x:0,y:0},delta:{x:0,y:0},size:{width:0,height:0}},this.cachedDragEvent={target:null,originalEvent:null,pointers:[],isPrimary:!0,dx:0,dy:0,totalX:0,totalY:0,velocityX:0,velocityY:0},this.dragOptions=t,this.priority=5,t.styleCursor!==!1&&(e.style.cursor=t.cursorChecker?t.cursorChecker(`idle`):`grab`),t.aria!==!1&&v(e)}shouldHandleEvent(e){if(!this.dragOptions.handle)return!0;let t=null;return t=typeof this.dragOptions.handle==`string`?this.element.querySelector(this.dragOptions.handle):this.dragOptions.handle,t?t.contains(e.target):!1}readCurrentTransform(e){let t=window.getComputedStyle(e).transform;if(t&&t!==`none`){let e=t.match(/matrix.*\((.+)\)/);if(e){let t=e[1].split(`, `);this.transform.x=parseFloat(t[4])||0,this.transform.y=parseFloat(t[5])||0}}else this.transformNormalized||(this.transform.x=0,this.transform.y=0);this.transformNormalized||=(e.style.transform=`translate3d(${this.transform.x}px, ${this.transform.y}px, 0)`,!0)}handleDragStart(e){let t=e.target;if(this.dragOptions.aria!==!1&&(y(t,!0),m(d().dragPickedUp)),this.detectedAxis=null,this.startAxisConfirmed=!1,this.readCurrentTransform(t),this.dragOptions.styleCursor!==!1&&(t.style.cursor=this.dragOptions.cursorChecker?this.dragOptions.cursorChecker(`grabbing`):`grabbing`),t.style.willChange=`transform`,this.startTransform={...this.transform},this.dragOptions.bounds){let e=t.getBoundingClientRect(),n=this.startTransform.x,r=this.startTransform.y,i;if(this.dragOptions.bounds===`parent`){let e=(t.offsetParent||document.body).getBoundingClientRect();i={left:e.left,top:e.top,right:e.right,bottom:e.bottom}}else if(this.dragOptions.bounds instanceof HTMLElement){let e=this.dragOptions.bounds.getBoundingClientRect();i={left:e.left,top:e.top,right:e.right,bottom:e.bottom}}else{let e=this.dragOptions.bounds;i={left:e.left??-1/0,top:e.top??-1/0,right:e.right??1/0,bottom:e.bottom??1/0}}let a=i.left-e.left+n,o=i.top-e.top+r,s=i.right-e.right+n,c=i.bottom-e.bottom+r;this.bounds=new DOMRect(a,o,s-a,c-o)}this.momentum.active=!1;let n=e.target.getBoundingClientRect();if(this.cachedSize.width=n.width,this.cachedSize.height=n.height,this.dragOptions.modifiers?.length){let t=this.modifierContext;t.position.x=this.startTransform.x,t.position.y=this.startTransform.y,t.velocity.x=0,t.velocity.y=0,t.element=e.target,t.startPosition.x=this.startTransform.x,t.startPosition.y=this.startTransform.y,t.delta.x=0,t.delta.y=0,t.size.width=this.cachedSize.width,t.size.height=this.cachedSize.height;for(let e of this.dragOptions.modifiers)e.onStart?.(t)}let r=this.createDragEvent(e,0,0);this.dragOptions.onDragStart&&this.dragOptions.onDragStart(r),this.emit(`dragstart`,r),this.dragOptions.droppable&&k.onDragStart(e.target)}handleDragMove(e){let t=e.pointers[0],n=t.total.x,r=t.total.y;if(this.dragOptions.startAxis&&!this.startAxisConfirmed){let e=Math.abs(n),t=Math.abs(r);if(this.dragOptions.startAxis===`x`&&t>e||this.dragOptions.startAxis===`y`&&e>t)return;this.startAxisConfirmed=!0}if(this.dragOptions.axis===`start`&&this.detectedAxis===null){let e=Math.abs(n),t=Math.abs(r);(e>0||t>0)&&(this.detectedAxis=e>t?`x`:`y`)}let i=this.dragOptions.axis===`start`?this.detectedAxis:this.dragOptions.axis;i===`x`?r=0:i===`y`&&(n=0);let a=this.startTransform.x+n,o=this.startTransform.y+r;if(this.dragOptions.grid&&(a=Math.round(a/this.dragOptions.grid.x)*this.dragOptions.grid.x,o=Math.round(o/this.dragOptions.grid.y)*this.dragOptions.grid.y),this.bounds&&(a=Math.max(this.bounds.left,Math.min(a,this.bounds.right)),o=Math.max(this.bounds.top,Math.min(o,this.bounds.bottom))),this.dragOptions.modifiers?.length){let n=this.modifierContext;n.position.x=a,n.position.y=o,n.velocity.x=t.velocity.x,n.velocity.y=t.velocity.y,n.element=e.target,n.startPosition.x=this.startTransform.x,n.startPosition.y=this.startTransform.y,n.delta.x=t.delta.x,n.delta.y=t.delta.y,n.size.width=this.cachedSize.width,n.size.height=this.cachedSize.height;let r=c(this.dragOptions.modifiers,n);a=r.position.x,o=r.position.y}this.transform={x:a,y:o},this.applyTransform(e.target),this.dragOptions.momentum&&(this.momentum.vx=t.velocity.x,this.momentum.vy=t.velocity.y);let s=this.createDragEvent(e,n,r);this.dragOptions.onDragMove&&this.dragOptions.onDragMove(s),this.emit(`dragmove`,s),this.dragOptions.droppable&&k.onDragMove(e.target,t.current,s)}handleDragEnd(e){let t=e.target;this.dragOptions.aria!==!1&&(y(t,!1),m(d().dragDropped)),this.dragOptions.styleCursor!==!1&&(t.style.cursor=this.dragOptions.cursorChecker?this.dragOptions.cursorChecker(`grab`):`grab`);let n=this.transform.x-this.startTransform.x,r=this.transform.y-this.startTransform.y;if(this.dragOptions.momentum&&(Math.abs(this.momentum.vx)>10||Math.abs(this.momentum.vy)>10)?this.startMomentum():t.style.willChange=``,this.dragOptions.modifiers?.length){let i=e.pointers[0],a={...this.transform},o={position:a,velocity:i?.velocity??{x:0,y:0},element:e.target,startPosition:{...this.startTransform},delta:{x:n,y:r}};for(let e of this.dragOptions.modifiers){let t=e.onEnd?.(o);t&&(a=t.position,o.position=a)}if(a.x!==this.transform.x||a.y!==this.transform.y){this.transform=a,t.style.transition=`transform 300ms cubic-bezier(0.25, 1, 0.5, 1)`,this.applyTransform(t);let e=()=>{t.style.transition=``,t.removeEventListener(`transitionend`,e)};t.addEventListener(`transitionend`,e)}}if(this.dragOptions.droppable){let t=e.pointers[0]?.current??{x:0,y:0};k.onDragEnd(e.target,t,this.createDragEvent(e,n,r))}let i=this.createDragEvent(e,n,r);this.dragOptions.onDragEnd&&this.dragOptions.onDragEnd(i),this.emit(`dragend`,i)}startMomentum(){this.momentum.active=!0;let e=typeof this.dragOptions.momentum==`object`&&this.dragOptions.momentum.friction||.95,t=typeof this.dragOptions.momentum==`object`&&this.dragOptions.momentum.minSpeed||.1,n=()=>{if(this.momentum.active){if(this.momentum.vx*=e,this.momentum.vy*=e,Math.abs(this.momentum.vx)<t&&Math.abs(this.momentum.vy)<t){this.momentum.active=!1,this.element.style.willChange=``;return}this.transform.x+=this.momentum.vx*.016,this.transform.y+=this.momentum.vy*.016,this.bounds&&((this.transform.x<this.bounds.left||this.transform.x>this.bounds.right)&&(this.momentum.vx*=-.5,this.transform.x=Math.max(this.bounds.left,Math.min(this.transform.x,this.bounds.right))),(this.transform.y<this.bounds.top||this.transform.y>this.bounds.bottom)&&(this.momentum.vy*=-.5,this.transform.y=Math.max(this.bounds.top,Math.min(this.transform.y,this.bounds.bottom)))),this.applyTransform(this.element),requestAnimationFrame(n)}};requestAnimationFrame(n)}applyTransform(e){e.style.transform=`translate3d(${this.transform.x}px, ${this.transform.y}px, 0)`}createDragEvent(e,t,n){let r=e.pointers[0],i=this.cachedDragEvent;return i.target=e.target,i.originalEvent=e.originalEvent,i.pointers=e.pointers,i.isPrimary=e.isPrimary,i.dx=r?.delta.x||0,i.dy=r?.delta.y||0,i.totalX=t,i.totalY=n,i.velocityX=r?.velocity.x||0,i.velocityY=r?.velocity.y||0,i}setPosition(e,t){this.transform={x:e,y:t},this.applyTransform(this.element)}getPosition(){return{...this.transform}}destroy(){super.destroy(),this.element.style.cursor=``,this.element.style.willChange=``,this.momentum.active=!1,this.dragOptions.aria!==!1&&b(this.element)}};function M(e,t){let n=typeof e==`string`?document.querySelector(e):e;if(!n)throw Error(`Element not found: ${e}`);return new j(n,t)}var N=class extends o{constructor(e,t={}){let n={edges:{top:!0,right:!0,bottom:!0,left:!0},handleSize:10,minWidth:50,minHeight:50,...t};super(e,{...n,threshold:0,onStart:e=>{this.handleResizeStart(e),t.onStart?.(e)},onMove:e=>{this.handleResizeMove(e),t.onMove?.(e)},onEnd:e=>{this.handleResizeEnd(e),t.onEnd?.(e)}}),this.startSize={width:0,height:0},this.startPos={x:0,y:0},this.currentSize={width:0,height:0},this.currentPos={x:0,y:0},this.activeEdge=null,this.edgeFlags={top:!1,right:!1,bottom:!1,left:!1},this.aspectRatio=null,this.transformNormalized=!1,this.modifierContext={position:{x:0,y:0},velocity:{x:0,y:0},element:null,startPosition:{x:0,y:0},delta:{x:0,y:0},edges:{top:!1,right:!1,bottom:!1,left:!1},size:{width:0,height:0},startSize:{width:0,height:0}},this.cachedResizeEvent={target:null,originalEvent:null,pointers:[],isPrimary:!0,width:0,height:0,deltaWidth:0,deltaHeight:0,edges:{top:!1,right:!1,bottom:!1,left:!1}},this.resizeOptions=n,this.resizeOptions.square&&(this.resizeOptions.aspectRatio=1),this.priority=10,this.boundUpdateCursor=this.updateCursor.bind(this),e.addEventListener(`pointermove`,this.boundUpdateCursor),e.style.position=`relative`}normalizeInitialTransform(e){let t=window.getComputedStyle(e).transform;if(t&&t!==`none`){let n=t.match(/matrix.*\((.+)\)/);if(n){let t=n[1].split(`, `),r=parseFloat(t[4])||0,i=parseFloat(t[5])||0;e.style.transform=`translate3d(${r}px, ${i}px, 0)`}}}shouldHandleEvent(e){return this.detectEdge(e)!==null}updateCursor(e){if(this.activeEdge)return;let t=this.detectEdge(e);this.element.style.cursor=this.resizeOptions.cursorChecker?this.resizeOptions.cursorChecker(t):this.getCursor(t)}detectEdge(e){let t=this.element.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top,i=this.resizeOptions.handleSize||10,a=this.resizeOptions.edges||{},o=a.top&&r<i,s=a.bottom&&r>t.height-i,c=a.left&&n<i,l=a.right&&n>t.width-i;return o&&c?`top-left`:o&&l?`top-right`:s&&c?`bottom-left`:s&&l?`bottom-right`:o?`top`:s?`bottom`:c?`left`:l?`right`:null}getCursor(e){switch(e){case`top`:case`bottom`:return`ns-resize`;case`left`:case`right`:return`ew-resize`;case`top-left`:case`bottom-right`:return`nwse-resize`;case`top-right`:case`bottom-left`:return`nesw-resize`;default:return``}}handleResizeStart(e){this.transformNormalized||=(this.normalizeInitialTransform(this.element),!0);let t=this.element.getBoundingClientRect(),n=window.getComputedStyle(this.element);if(this.activeEdge=this.detectEdge(e.originalEvent),!this.activeEdge)return;this.edgeFlags.top=this.activeEdge.includes(`top`),this.edgeFlags.right=this.activeEdge.includes(`right`),this.edgeFlags.bottom=this.activeEdge.includes(`bottom`),this.edgeFlags.left=this.activeEdge.includes(`left`),this.startSize={width:parseFloat(n.width)||t.width,height:parseFloat(n.height)||t.height},this.currentSize={...this.startSize};let r=n.transform;if(r&&r!==`none`){let e=r.match(/matrix.*\((.+)\)/);if(e){let t=e[1].split(`, `);this.startPos.x=parseFloat(t[4])||0,this.startPos.y=parseFloat(t[5])||0}}else this.startPos.x=0,this.startPos.y=0;this.currentPos={...this.startPos},this.resizeOptions.aspectRatio===`preserve`?this.aspectRatio=this.startSize.width/this.startSize.height:typeof this.resizeOptions.aspectRatio==`number`&&(this.aspectRatio=this.resizeOptions.aspectRatio),this.element.style.willChange=`width, height, transform`;let i=this.createResizeEvent(e,0,0);this.resizeOptions.onResizeStart&&this.resizeOptions.onResizeStart(i),this.emit(`resizestart`,i)}handleResizeMove(e){if(!this.activeEdge)return;let t=e.pointers[0],n=t.total.x,r=t.total.y,i=this.startSize.width,a=this.startSize.height,o=this.startPos.x,s=this.startPos.y;this.edgeFlags.right&&(i+=n),this.edgeFlags.left&&(i-=n,o+=n),this.edgeFlags.bottom&&(a+=r),this.edgeFlags.top&&(a-=r,s+=r);let l=this.resizeOptions.invert||`none`;l===`reposition`&&(i<0&&(o+=i,i=-i),a<0&&(s+=a,a=-a));let u=l===`negate`?-1/0:this.resizeOptions.minWidth||0,d=l===`negate`?-1/0:this.resizeOptions.minHeight||0,f=this.resizeOptions.maxWidth||1/0,p=this.resizeOptions.maxHeight||1/0,m=l===`reposition`?1:u||50,h=l===`reposition`?1:d||50;if(this.aspectRatio&&(this.activeEdge===`left`||this.activeEdge===`right`?a=i/this.aspectRatio:this.activeEdge===`top`||this.activeEdge===`bottom`?i=a*this.aspectRatio:Math.abs(i-this.startSize.width)>Math.abs(a-this.startSize.height)?a=i/this.aspectRatio:i=a*this.aspectRatio),i<m&&(this.edgeFlags.left&&(o+=i-m),i=m,this.aspectRatio&&(a=i/this.aspectRatio)),i>f&&(this.edgeFlags.left&&(o+=i-f),i=f,this.aspectRatio&&(a=i/this.aspectRatio)),a<h&&(this.edgeFlags.top&&(s+=a-h),a=h,this.aspectRatio&&(i=a*this.aspectRatio)),a>p&&(this.edgeFlags.top&&(s+=a-p),a=p,this.aspectRatio&&(i=a*this.aspectRatio)),this.resizeOptions.grid&&(i=Math.round(i/this.resizeOptions.grid.width)*this.resizeOptions.grid.width,a=Math.round(a/this.resizeOptions.grid.height)*this.resizeOptions.grid.height),this.resizeOptions.modifiers?.length){let e=this.modifierContext;e.position.x=o,e.position.y=s,e.velocity.x=t.velocity?.x??0,e.velocity.y=t.velocity?.y??0,e.element=this.element,e.startPosition.x=this.startPos.x,e.startPosition.y=this.startPos.y,e.delta.x=n,e.delta.y=r,e.edges.top=this.edgeFlags.top,e.edges.right=this.edgeFlags.right,e.edges.bottom=this.edgeFlags.bottom,e.edges.left=this.edgeFlags.left,e.size.width=i,e.size.height=a,e.startSize.width=this.startSize.width,e.startSize.height=this.startSize.height;let l=c(this.resizeOptions.modifiers,e);o=l.position.x,s=l.position.y,l.size&&(i=l.size.width,a=l.size.height)}this.currentSize={width:i,height:a},this.currentPos={x:o,y:s},this.element.style.width=`${i}px`,this.element.style.height=`${a}px`,(o!==this.startPos.x||s!==this.startPos.y)&&(this.element.style.transform=`translate3d(${o}px, ${s}px, 0)`);let g=i-this.startSize.width,_=a-this.startSize.height,v=this.createResizeEvent(e,g,_);this.resizeOptions.onResizeMove&&this.resizeOptions.onResizeMove(v),this.emit(`resizemove`,v)}handleResizeEnd(e){this.element.style.willChange=``,this.activeEdge=null;let t=this.currentSize.width-this.startSize.width,n=this.currentSize.height-this.startSize.height,r=this.createResizeEvent(e,t,n);this.resizeOptions.onResizeEnd&&this.resizeOptions.onResizeEnd(r),this.emit(`resizeend`,r)}createResizeEvent(e,t,n){let r=this.cachedResizeEvent;return r.target=e.target,r.originalEvent=e.originalEvent,r.pointers=e.pointers,r.isPrimary=e.isPrimary,r.width=this.currentSize.width,r.height=this.currentSize.height,r.deltaWidth=t,r.deltaHeight=n,r.edges.top=this.edgeFlags.top,r.edges.right=this.edgeFlags.right,r.edges.bottom=this.edgeFlags.bottom,r.edges.left=this.edgeFlags.left,r}setSize(e,t){this.currentSize={width:e,height:t},this.element.style.width=`${e}px`,this.element.style.height=`${t}px`}getSize(){return{...this.currentSize}}destroy(){super.destroy(),this.element.removeEventListener(`pointermove`,this.boundUpdateCursor),this.element.style.cursor=``,this.element.style.willChange=``}};function P(e,t){let n=typeof e==`string`?document.querySelector(e):e;if(!n)throw Error(`Element not found: ${e}`);return new N(n,t)}var F=class extends o{constructor(e,t={}){super(e,{...t,threshold:0}),this.gestureActive=!1,this.startDistance=0,this.startAngle=0,this.prevScale=1,this.prevAngle=0,this.gestureOptions=t,this.minPointers=t.minPointers??2,this.priority=15}shouldHandleEvent(e){return!0}getTwoPointers(){if(this.pointers.size<2)return null;let e=this.pointers.values(),t=e.next().value,n=e.next().value;return[t.current,n.current]}computeDistance(e,t){let n=t.x-e.x,r=t.y-e.y;return Math.sqrt(n*n+r*r)}computeAngle(e,t){return Math.atan2(t.y-e.y,t.x-e.x)*180/Math.PI}computeCenter(e,t){return{x:(e.x+t.x)/2,y:(e.y+t.y)/2}}normalizeAngleDelta(e){for(;e>180;)e-=360;for(;e<-180;)e+=360;return e}createGestureEvent(e,t){return{...e,scale:t.scale??1,rotation:t.rotation??0,distance:t.distance??0,angle:t.angle??0,center:t.center??{x:0,y:0},deltaScale:t.deltaScale??0,deltaAngle:t.deltaAngle??0}}update(){if(!this.isActive||this.pointers.size===0)return;let e=this.getTwoPointers();if(!this.gestureActive&&e&&this.pointers.size>=this.minPointers){this.gestureActive=!0;let[t,n]=e;this.startDistance=this.computeDistance(t,n),this.startAngle=this.computeAngle(t,n),this.prevScale=1,this.prevAngle=0;let r={target:this.element,pointers:Array.from(this.pointers.values()),isPrimary:!1,originalEvent:new PointerEvent(`pointermove`)},i=this.createGestureEvent(r,{scale:1,rotation:0,distance:this.startDistance,angle:this.startAngle,center:this.computeCenter(t,n),deltaScale:0,deltaAngle:0});this.gestureOptions.onGestureStart&&this.gestureOptions.onGestureStart(i),this.emit(`gesturestart`,i);return}if(this.gestureActive&&this.pointers.size<this.minPointers){this.endGesture(),super.update();return}if(this.gestureActive&&e){let[t,n]=e,r=this.computeDistance(t,n),i=this.computeAngle(t,n),a=this.computeCenter(t,n),o=this.startDistance>0?r/this.startDistance:1,s=this.normalizeAngleDelta(i-this.startAngle),c=o-this.prevScale,l=this.normalizeAngleDelta(s-this.prevAngle);this.prevScale=o,this.prevAngle=s;let u={target:this.element,pointers:Array.from(this.pointers.values()),isPrimary:!1,originalEvent:new PointerEvent(`pointermove`)},d=this.createGestureEvent(u,{scale:o,rotation:s,distance:r,angle:i,center:a,deltaScale:c,deltaAngle:l});this.gestureOptions.onGestureMove&&this.gestureOptions.onGestureMove(d),this.emit(`gesturemove`,d)}super.update()}endGesture(){if(!this.gestureActive)return;this.gestureActive=!1;let e={target:this.element,pointers:Array.from(this.pointers.values()),isPrimary:!1,originalEvent:new PointerEvent(`pointerup`)},t=this.getTwoPointers(),n=t?this.computeDistance(t[0],t[1]):0,r=t?this.computeAngle(t[0],t[1]):0,i=t?this.computeCenter(t[0],t[1]):{x:0,y:0},a=this.startDistance>0&&n>0?n/this.startDistance:this.prevScale,o=this.createGestureEvent(e,{scale:a,rotation:this.prevAngle,distance:n,angle:r,center:i,deltaScale:0,deltaAngle:0});this.gestureOptions.onGestureEnd&&this.gestureOptions.onGestureEnd(o),this.emit(`gestureend`,o)}destroy(){this.gestureActive&&this.endGesture(),super.destroy()}};function I(e,t){let n=typeof e==`string`?document.querySelector(e):e;if(!n)throw Error(`Element not found: ${e}`);return new F(n,t)}const L=new Map;function R(e,t){L.has(e)||L.set(e,new Set),L.get(e).add(t)}function z(e,t){let n=L.get(e);n&&(n.delete(t),n.size===0&&L.delete(e))}function B(e){let t=L.get(e);return t?Array.from(t):[]}var V=class{on(e,t){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t),this}off(e,t){return this.listeners.get(e)?.delete(t),this}emit(e,t){let n=this.listeners.get(e);if(n)for(let e of n)e(t)}get enabled(){return this._enabled}set enabled(e){this._enabled=e}constructor(e,t={}){this.draggables=[],this.itemStates=[],this.dragItem=null,this.dragIndex=-1,this.currentIndex=-1,this.targetSortable=null,this.targetIndex=-1,this.placeholder=null,this._enabled=!0,this.listeners=new Map,this.container=e,this.options={items:t.items??``,axis:t.axis??`y`,handle:t.handle??``,animationDuration:t.animationDuration??200,dragClass:t.dragClass??`sortable-dragging`,hoverClass:t.hoverClass??`sortable-hover`,group:t.group??``,onSort:t.onSort??(()=>{}),onSortEnd:t.onSortEnd??(()=>{}),onAdd:t.onAdd??(()=>{}),onRemove:t.onRemove??(()=>{}),aria:t.aria??!0},this.options.group&&R(this.options.group,this),this.options.aria&&C(e),this.setup()}getItems(){return this.options.items?Array.from(this.container.querySelectorAll(this.options.items+`:not(.sortable-placeholder)`)):Array.from(this.container.children).filter(e=>!e.classList.contains(`sortable-placeholder`))}setup(){this.teardown();let e=this.getItems();if(this.options.aria)for(let t=0;t<e.length;t++)x(e[t],t,e.length);for(let t of e){let e={aria:!1,axis:this.options.group?void 0:this.options.axis,handle:this.options.handle||void 0,onDragStart:e=>this.handleDragStart(t,e),onDragMove:e=>this.handleDragMove(t,e),onDragEnd:e=>this.handleDragEnd(t,e)};this.draggables.push(new j(t,e))}}handleDragStart(e,t){if(!this._enabled)return;this.dragItem=e;let n=this.getItems();if(this.dragIndex=n.indexOf(e),this.currentIndex=this.dragIndex,this.targetSortable=null,this.targetIndex=-1,this.snapshotItems(),e.classList.add(this.options.dragClass),e.style.zIndex=`9999`,e.style.position=`relative`,this.options.aria){y(e,!0);let t=e.textContent?.trim()||`Item ${this.dragIndex+1}`;m(d().pickedUp(t,this.dragIndex+1,n.length))}}handleDragMove(e,t){if(!this.dragItem)return;let n=e.getBoundingClientRect(),r=n.left+n.width/2,i=n.top+n.height/2;if(this.options.group){let n=this.findTargetContainer(r,i);if(n&&n!==this){this.setTargetSortable(n,r,i),this.updateWithinIndex(e,t);return}else this.targetSortable&&this.clearTargetSortable()}this.updateWithinIndex(e,t)}updateWithinIndex(e,t){let n=this.options.axis===`y`,r=this.itemStates[this.dragIndex];if(!r)return;let i=n?t.totalY:t.totalX,a=n?r.rect.top+r.rect.height/2+i:r.rect.left+r.rect.width/2+i,o=0;for(let e=0;e<this.itemStates.length;e++){if(e===this.dragIndex)continue;let t=this.itemStates[e];a>(n?t.rect.top+t.rect.height/2:t.rect.left+t.rect.width/2)&&o++}if(o=Math.max(0,Math.min(o,this.itemStates.length-1)),o!==this.currentIndex){this.currentIndex=o,this.animateItems(e);let t={item:e,oldIndex:this.dragIndex,newIndex:o,items:this.getItems()};this.options.onSort(t),this.emit(`sort`,t),this.options.aria&&m(d().movedTo(o+1,this.itemStates.length))}}findTargetContainer(e,t){for(let n of B(this.options.group)){if(n===this)continue;let r=n.container.getBoundingClientRect();if(e>=r.left&&e<=r.right&&t>=r.top&&t<=r.bottom)return n}return null}setTargetSortable(e,t,n){let r=this.targetSortable!==e;if(this.targetSortable=e,r){for(let e of B(this.options.group))e!==this&&e.container.classList.remove(this.options.hoverClass);e.container.classList.add(this.options.hoverClass)}let i=this.options.axis===`y`,a=e.getItems(),o=a.length;for(let e=0;e<a.length;e++){let r=a[e].getBoundingClientRect(),s=i?r.top+r.height/2:r.left+r.width/2;if((i?n:t)<s){o=e;break}}(o!==this.targetIndex||r)&&(this.targetIndex=o,this.updatePlaceholder(e,o))}clearTargetSortable(){this.targetSortable&&this.targetSortable.container.classList.remove(this.options.hoverClass),this.targetSortable=null,this.targetIndex=-1,this.removePlaceholder()}updatePlaceholder(e,t){if(this.removePlaceholder(),!this.dragItem)return;let n=document.createElement(`div`);n.className=`sortable-placeholder`;let r=this.dragItem.getBoundingClientRect();n.style.height=`${r.height}px`,n.style.width=`${r.width}px`,n.style.border=`2px dashed currentColor`,n.style.borderRadius=`6px`,n.style.opacity=`0.3`,n.style.transition=`all 150ms ease`,n.style.boxSizing=`border-box`;let i=e.getItems();t>=i.length?e.container.appendChild(n):i[t].before(n),this.placeholder=n}removePlaceholder(){this.placeholder&&=(this.placeholder.remove(),null)}handleDragEnd(e,t){if(!this.dragItem)return;let n=this.dragIndex,r=this.targetSortable!==null;if(e.classList.remove(this.options.dragClass),e.style.zIndex=``,this.options.aria&&y(e,!1),r&&this.targetSortable){let t=this.targetSortable,r=this.targetIndex;this.removePlaceholder(),t.container.classList.remove(this.options.hoverClass),e.style.transform=``,e.style.transition=``;let i=t.getItems();r>=i.length?t.container.appendChild(e):i[r].before(e);let a=t.getItems().indexOf(e),o={item:e,from:this,to:t,oldIndex:n,newIndex:a};this.options.onRemove(o),this.emit(`remove`,o);let s={item:e,from:this,to:t,oldIndex:n,newIndex:a};t.options.onAdd(s),t.emit(`add`,s);let c={item:e,oldIndex:-1,newIndex:a,items:t.getItems()};t.options.onSortEnd(c),t.emit(`sortend`,c)}else{let t=this.currentIndex;if(n!==t){let e=this.getItems();this.reorderDOM(e,n,t)}let r={item:e,oldIndex:n,newIndex:t,items:this.getItems()};this.options.onSortEnd(r),this.emit(`sortend`,r)}for(let e of this.getItems())e.style.transform=``,e.style.transition=``;if(this.options.aria){let t=e.textContent?.trim()||`Item`,n=this.getItems(),r=n.indexOf(e);m(d().dropped(t,r+1,n.length));for(let e=0;e<n.length;e++)x(n[e],e,n.length)}if(this.dragItem=null,this.dragIndex=-1,this.currentIndex=-1,this.targetSortable=null,this.targetIndex=-1,this.setup(),this.options.group)for(let e of B(this.options.group))e!==this&&e.setup()}snapshotItems(){this.itemStates=this.getItems().map((e,t)=>({el:e,rect:e.getBoundingClientRect(),originalIndex:t}))}animateItems(e){let t=this.options.axis===`y`,n=this.options.animationDuration,r=this.dragIndex,i=this.currentIndex;for(let a=0;a<this.itemStates.length;a++){if(this.itemStates[a].el===e)continue;let o=this.itemStates[a].el,s=0;if(r<i&&a>r&&a<=i){let e=this.itemStates[a-1].rect,n=this.itemStates[a].rect;s=t?e.top-n.top:e.left-n.left}else if(r>i&&a>=i&&a<r){let e=this.itemStates[a+1].rect,n=this.itemStates[a].rect;s=t?e.top-n.top:e.left-n.left}o.style.transition=`transform ${n}ms ease`,o.style.transform=t?`translateY(${s}px)`:`translateX(${s}px)`}}reorderDOM(e,t,n){let r=e[t];t<n?e[n].after(r):e[n].before(r)}refresh(){this.setup()}getOrder(){return this.getItems()}move(e,t){let n=this.getItems();if(e<0||e>=n.length||t<0||t>=n.length||e===t)return;this.reorderDOM(n,e,t);let r={item:n[e],oldIndex:e,newIndex:t,items:this.getItems()};this.options.onSortEnd(r),this.emit(`sortend`,r),this.setup()}teardown(){for(let e of this.draggables)e.destroy();this.draggables=[]}destroy(){this.teardown(),this.removePlaceholder();let e=this.getItems();for(let t of e)t.style.transform=``,t.style.transition=``,this.options.aria&&S(t);this.options.aria&&w(this.container),this.options.group&&z(this.options.group,this)}};function H(e,t){let n=typeof e==`string`?document.querySelector(e):e;if(!n)throw Error(`Container not found: ${e}`);return new V(n,t)}var U=class{constructor(e){this.name=`restrict`,this.transformBounds=null,this.options=e}onStart(e){this.transformBounds=this.resolveTransformBounds(e.element,e.startPosition,e.size)}modify(e){return this.transformBounds||this.resolveAndCache(e),this.options.endOnly?{position:e.position,velocity:e.velocity,size:e.size}:this.applyRestriction(e)}onEnd(e){return this.transformBounds||this.resolveAndCache(e),this.applyRestriction(e)}resolveAndCache(e){this.transformBounds=this.resolveTransformBounds(e.element,e.startPosition,e.size)}applyRestriction(e){let t=this.transformBounds;if(!t)return{position:e.position,velocity:e.velocity,size:e.size};let n=e.position.x,r=e.position.y;return t.left!==void 0&&(n=Math.max(n,t.left)),t.top!==void 0&&(r=Math.max(r,t.top)),t.right!==void 0&&(n=Math.min(n,t.right)),t.bottom!==void 0&&(r=Math.min(r,t.bottom)),{position:{x:n,y:r},velocity:e.velocity,size:e.size}}resolveTransformBounds(e,t,n){let{bounds:r}=this.options;if(!r)return null;let i;if(r===`parent`){let t=e.parentElement;if(!t)return null;let n=t.getBoundingClientRect();i={left:n.left,top:n.top,right:n.right,bottom:n.bottom}}else if(r instanceof HTMLElement){let e=r.getBoundingClientRect();i={left:e.left,top:e.top,right:e.right,bottom:e.bottom}}else return r;let a=e.getBoundingClientRect(),o=a.left-t.x,s=a.top-t.y,c=n?.width??a.width,l=n?.height??a.height,u=this.options.elementRect;return u?{left:i.left===void 0?void 0:i.left-o-c*u.left,top:i.top===void 0?void 0:i.top-s-l*u.top,right:i.right===void 0?void 0:i.right-o-c*u.right,bottom:i.bottom===void 0?void 0:i.bottom-s-l*u.bottom}:{left:i.left===void 0?void 0:i.left-o,top:i.top===void 0?void 0:i.top-s,right:i.right===void 0?void 0:i.right-o-c,bottom:i.bottom===void 0?void 0:i.bottom-s-l}}};function W(e){return new U(e)}var G=class{constructor(e){this.name=`snap-grid`,this.options=e}modify(e){let{x:t,y:n,offset:r,limits:i}=this.options,a=r?.x??0,o=r?.y??0,s=Math.round((e.position.x-a)/t)*t+a,c=Math.round((e.position.y-o)/n)*n+o;return i&&(i.left!==void 0&&(s=Math.max(s,i.left)),i.right!==void 0&&(s=Math.min(s,i.right)),i.top!==void 0&&(c=Math.max(c,i.top)),i.bottom!==void 0&&(c=Math.min(c,i.bottom))),{position:{x:s,y:c},velocity:e.velocity,size:e.size}}};function K(e){return new G(e)}const q={"top-left":{x:0,y:0},top:{x:.5,y:0},"top-right":{x:1,y:0},left:{x:0,y:.5},center:{x:.5,y:.5},right:{x:1,y:.5},"bottom-left":{x:0,y:1},bottom:{x:.5,y:1},"bottom-right":{x:1,y:1}};function J(e){return typeof e==`string`?q[e]??q[`top-left`]:e}var Y=class{constructor(e){this.name=`snap-targets`,this.parentOffset=null,this._snappedTarget=null,this._snappedIndex=-1,this.resolvedPivots=[],this.options=e,this.resolvedPivots=e.relativePoints?.length?e.relativePoints.map(J):[{x:0,y:0}]}get snappedTarget(){return this._snappedTarget}get snappedIndex(){return this._snappedIndex}get isSnapped(){return this._snappedTarget!==null}onStart(e){if(this.options.coordinateMode===`parent`){let t=e.element,n=t.offsetParent||t.parentElement;if(n){let r=n.getBoundingClientRect(),i=t.getBoundingClientRect();this.parentOffset={x:i.left-r.left-e.startPosition.x,y:i.top-r.top-e.startPosition.y}}else this.parentOffset={x:0,y:0}}this._snappedTarget=null,this._snappedIndex=-1}modify(e){let{targets:t,range:n=50}=this.options,r=this.resolvedPivots,i=this.options.coordinateMode===`parent`,a=1/0,o={x:0,y:0},s=-1;for(let c of r){let r=e.position.x+(e.size?e.size.width*c.x:0),l=e.position.y+(e.size?e.size.height*c.y:0);for(let e=0;e<t.length;e++){let c=t[e],u=c.range??n,d=c.x,f=c.y;i&&this.parentOffset&&(d!==void 0&&(d-=this.parentOffset.x),f!==void 0&&(f-=this.parentOffset.y));let p=0,m=0,h=0;if(d!==void 0&&f!==void 0)p=d-r,m=f-l,h=Math.sqrt(p*p+m*m);else if(d!==void 0)p=d-r,h=Math.abs(p);else if(f!==void 0)m=f-l,h=Math.abs(m);else continue;h<=u&&h<a&&(a=h,o={x:p,y:m},s=e)}}return s>=0?(this._snappedTarget=t[s],this._snappedIndex=s,{position:{x:e.position.x+o.x,y:e.position.y+o.y},velocity:e.velocity,size:e.size}):(this._snappedTarget=null,this._snappedIndex=-1,{position:e.position,velocity:e.velocity,size:e.size})}};function X(e){return new Y(e)}var ne=class{constructor(e){this.name=`magnetic-snap`,this.currentTarget=null,this.options={targets:e.targets,distance:e.distance??30,strength:e.strength??.5,onSnap:e.onSnap??(()=>{}),onUnsnap:e.onUnsnap??(()=>{})},this.targetMap=new Map(e.targets.map(e=>[e.id,e]))}updateTargets(e){this.options.targets=e,this.targetMap=new Map(e.map(e=>[e.id,e]))}addTarget(e){this.options.targets.push(e),this.targetMap.set(e.id,e)}removeTarget(e){this.options.targets=this.options.targets.filter(t=>t.id!==e),this.targetMap.delete(e),this.currentTarget?.id===e&&(this.options.onUnsnap&&this.options.onUnsnap(this.currentTarget),this.currentTarget=null)}modify(e){let{position:t}=e,n=e.size?.width??0,r=e.size?.height??0,i={x:t.x+n/2,y:t.y+r/2},a=null,o=1/0;for(let e of this.options.targets){let t={x:e.x+(e.width??0)/2,y:e.y+(e.height??0)/2},n=this.getDistance(i,t);n<this.options.distance&&n<o&&(o=n,a=e)}if(a){let n={x:a.x+(a.width??0)/2,y:a.y+(a.height??0)/2},r=(a.strength??this.options.strength)*(1-o/this.options.distance),s={x:t.x+(n.x-i.x)*r,y:t.y+(n.y-i.y)*r};return o<this.options.distance*.3&&(s.x=a.x,s.y=a.y),this.currentTarget?.id!==a.id&&(this.currentTarget&&this.options.onUnsnap&&this.options.onUnsnap(this.currentTarget),this.currentTarget=a,this.options.onSnap&&this.options.onSnap(a)),{position:s,velocity:e.velocity,size:e.size}}else this.currentTarget&&=(this.options.onUnsnap&&this.options.onUnsnap(this.currentTarget),null);return{position:e.position,velocity:e.velocity,size:e.size}}getDistance(e,t){let n=e.x-t.x,r=e.y-t.y;return Math.sqrt(n*n+r*r)}getCurrentTarget(){return this.currentTarget}isSnapped(){return this.currentTarget!==null}};function Z(e){return new ne(e)}var re=class{constructor(e){this.name=`inertia`,this.state=null,this.options={resistance:e?.resistance??10,minSpeed:e?.minSpeed??10,endSpeed:e?.endSpeed??100,smoothEnd:e?.smoothEnd??!1,smoothEndDuration:e?.smoothEndDuration??300}}onStart(){this.state=null}modify(e){if(!this.state||!this.state.active)return{position:e.position,velocity:e.velocity,size:e.size};let{v0:t,lambda:n,startTime:r,startPosition:i}=this.state,a=(performance.now()-r)/1e3,o=Math.exp(-n*a),s=t.x*o,c=t.y*o,l=i.x+t.x/n*(1-o),u=i.y+t.y/n*(1-o);return Math.sqrt(s*s+c*c)<this.options.minSpeed&&(this.state.active=!1),{position:{x:l,y:u},velocity:{x:s,y:c},size:e.size}}onEnd(e){if(Math.sqrt(e.velocity.x**2+e.velocity.y**2)<this.options.endSpeed)return this.options.smoothEnd?this.computeSmoothEnd(e):void 0;let t=this.options.resistance,n={...e.velocity};return this.state={v0:n,lambda:t,startTime:performance.now(),active:!0,startPosition:{...e.position}},{position:{x:e.position.x+n.x/t,y:e.position.y+n.y/t},velocity:{x:0,y:0},size:e.size}}computeSmoothEnd(e){return{position:e.position,velocity:{x:0,y:0},size:e.size}}isActive(){return this.state?.active??!1}};function ie(e){return new re(e)}var ae=class{constructor(e){this.name=`auto-scroll`,this.animationFrame=null,this.cachedContainer=null,this.cachedContainerRect=null,this.options={container:e?.container??window,speed:e?.speed??10,margin:e?.margin??50,acceleration:e?.acceleration??5}}onStart(e){this.animationFrame=null,this.cachedContainer=this.resolveContainer(e.element),this.cachedContainer===window||this.cachedContainer instanceof Window?this.cachedContainerRect={left:0,top:0,right:window.innerWidth,bottom:window.innerHeight}:this.cachedContainerRect=null}modify(e){let t=this.cachedContainer??this.resolveContainer(e.element),n=this.cachedContainerRect??this.getContainerRect(t),{margin:r,speed:i,acceleration:a}=this.options,o=e.position.x+e.delta.x,s=e.position.y+e.delta.y,c=0,l=0,u=n.right-o;if(u<r&&u>0){let e=1-u/r;c=Math.min(i,e*a*i)}let d=o-n.left;if(d<r&&d>0){let e=1-d/r;c=-Math.min(i,e*a*i)}let f=n.bottom-s;if(f<r&&f>0){let e=1-f/r;l=Math.min(i,e*a*i)}let p=s-n.top;if(p<r&&p>0){let e=1-p/r;l=-Math.min(i,e*a*i)}return(c!==0||l!==0)&&this.performScroll(t,c,l),{position:e.position,velocity:e.velocity,size:e.size}}onEnd(){this.animationFrame!==null&&(cancelAnimationFrame(this.animationFrame),this.animationFrame=null),this.cachedContainer=null,this.cachedContainerRect=null}resolveContainer(e){if(this.options.container!==window)return this.options.container;let t=e.parentElement;for(;t;){let e=getComputedStyle(t),n=e.overflow+e.overflowX+e.overflowY;if(/auto|scroll/.test(n))return t;t=t.parentElement}return window}getContainerRect(e){if(e===window||e instanceof Window)return{left:0,top:0,right:window.innerWidth,bottom:window.innerHeight};let t=e.getBoundingClientRect();return{left:t.left,top:t.top,right:t.right,bottom:t.bottom}}performScroll(e,t,n){e===window||e instanceof Window?window.scrollBy(t,n):(e.scrollLeft+=t,e.scrollTop+=n)}};function oe(e){return new ae(e)}var se=class{constructor(e){this.name=`rubberband`,this.transformBounds=null,this.options=e}onStart(e){this.transformBounds=this.resolveTransformBounds(e.element,e.startPosition)}modify(e){this.transformBounds||=this.resolveTransformBounds(e.element,e.startPosition);let t=this.transformBounds,n=this.options.resistance??.15,r=this.options.maxOvershoot??100,i={...e.position};if(t){if(t.left!==void 0&&i.x<t.left){let e=(i.x-t.left)*n;i.x=t.left+Math.max(e,-r)}if(t.right!==void 0&&i.x>t.right){let e=(i.x-t.right)*n;i.x=t.right+Math.min(e,r)}if(t.top!==void 0&&i.y<t.top){let e=(i.y-t.top)*n;i.y=t.top+Math.max(e,-r)}if(t.bottom!==void 0&&i.y>t.bottom){let e=(i.y-t.bottom)*n;i.y=t.bottom+Math.min(e,r)}}return{position:i,velocity:e.velocity,size:e.size}}onEnd(e){this.transformBounds||=this.resolveTransformBounds(e.element,e.startPosition);let t=this.transformBounds,n={...e.position};return t&&(t.left!==void 0&&(n.x=Math.max(n.x,t.left)),t.right!==void 0&&(n.x=Math.min(n.x,t.right)),t.top!==void 0&&(n.y=Math.max(n.y,t.top)),t.bottom!==void 0&&(n.y=Math.min(n.y,t.bottom))),{position:n,velocity:e.velocity,size:e.size}}resolveTransformBounds(e,t){let{bounds:n}=this.options,r;if(n===`parent`){let t=e.parentElement;if(!t)return null;let n=t.getBoundingClientRect();r={left:n.left,top:n.top,right:n.right,bottom:n.bottom}}else r=n;let i=e.getBoundingClientRect(),a=i.left-t.x,o=i.top-t.y,s=i.width,c=i.height;return{left:r.left===void 0?void 0:r.left-a,top:r.top===void 0?void 0:r.top-o,right:r.right===void 0?void 0:r.right-a-s,bottom:r.bottom===void 0?void 0:r.bottom-o-c}}};function ce(e){return new se(e)}var Q=class{constructor(e){this.name=`restrictSize`,this.options=e}modify(e){if(e.size){let{min:t,max:n}=this.options;t?.width!==void 0&&(e.size.width=Math.max(e.size.width,t.width)),t?.height!==void 0&&(e.size.height=Math.max(e.size.height,t.height)),n?.width!==void 0&&(e.size.width=Math.min(e.size.width,n.width)),n?.height!==void 0&&(e.size.height=Math.min(e.size.height,n.height))}return{position:e.position,velocity:e.velocity,size:e.size}}};function le(e){return new Q(e)}var ue=class{constructor(e){this.name=`restrictEdges`,this.options=e}modify(e){let t=e.position,n=e.size,r=e.edges,{outer:i,inner:a}=this.options;if(r&&n){let e=t.x,o=t.y,s=t.x+n.width,c=t.y+n.height;i&&(r.left&&i.left!==void 0&&(e=Math.max(e,i.left)),r.top&&i.top!==void 0&&(o=Math.max(o,i.top)),r.right&&i.right!==void 0&&(s=Math.min(s,i.right)),r.bottom&&i.bottom!==void 0&&(c=Math.min(c,i.bottom))),a&&(r.left&&a.left!==void 0&&(e=Math.min(e,a.left)),r.top&&a.top!==void 0&&(o=Math.min(o,a.top)),r.right&&a.right!==void 0&&(s=Math.max(s,a.right)),r.bottom&&a.bottom!==void 0&&(c=Math.max(c,a.bottom))),r.left&&(t.x=e,n.width=s-e),r.top&&(t.y=o,n.height=c-o),r.right&&(n.width=s-t.x),r.bottom&&(n.height=c-t.y)}return{position:t,velocity:e.velocity,size:n}}};function de(e){return new ue(e)}var fe=class{constructor(e){this.name=`snapSize`,this.options=e}modify(e){if(e.size){let{width:t,height:n,offset:r}=this.options,i=r?.width??0,a=r?.height??0;t&&t>0&&(e.size.width=Math.round((e.size.width-i)/t)*t+i),n&&n>0&&(e.size.height=Math.round((e.size.height-a)/n)*n+a)}return{position:e.position,velocity:e.velocity,size:e.size}}};function pe(e){return new fe(e)}var me=class{constructor(e){this.name=`snapEdges`,this.options=e}modify(e){let t=e.position,n=e.size,r=e.edges,i=this.options.range??20;if(r&&n){let e=t.x,a=t.y,o=t.x+n.width,s=t.y+n.height;for(let c of this.options.targets){let l=c.range??i;if(r.left&&c.left!==void 0&&Math.abs(e-c.left)<=l){let r=c.left-e;e=c.left,t.x=e,n.width-=r}if(r.top&&c.top!==void 0&&Math.abs(a-c.top)<=l){let e=c.top-a;a=c.top,t.y=a,n.height-=e}r.right&&c.right!==void 0&&Math.abs(o-c.right)<=l&&(o=c.right,n.width=o-t.x),r.bottom&&c.bottom!==void 0&&Math.abs(s-c.bottom)<=l&&(s=c.bottom,n.height=s-t.y)}}return{position:t,velocity:e.velocity,size:n}}};function he(e){return new me(e)}function $(e,t={}){let n=typeof e==`string`?document.querySelector(e):e;if(!n)throw Error(`Element not found: ${e}`);let r=null,i=null,a=null;return t.drag&&(r=M(n,typeof t.drag==`object`?t.drag:{})),t.resize&&(i=P(n,typeof t.resize==`object`?t.resize:{})),t.gesture&&(a=I(n,typeof t.gesture==`object`?t.gesture:{})),{drag:r,resize:i,gesture:a,destroy(){r?.destroy(),i?.destroy(),a?.destroy()}}}function ge(e,t={}){let n=document.querySelectorAll(e),r=Array.from(n).map(e=>$(e,t));return{instances:r,destroy(){r.forEach(e=>e.destroy())}}}exports.Draggable=j,exports.Dropzone=O,exports.DropzoneManager=k,exports.Gesturable=F,exports.Grip=o,exports.Resizable=N,exports.Sortable=V,exports.announce=m,exports.applyModifiers=c,exports.autoScroll=oe,exports.default=$,exports.interactable=$,exports.draggable=M,exports.dropzone=A,exports.gesturable=I,exports.getMessages=d,exports.grip=s,exports.inertia=ie,exports.interactAll=ge,exports.magneticSnap=Z,exports.resizable=P,exports.restrict=W,exports.restrictEdges=de,exports.restrictSize=le,exports.rubberband=ce,exports.setMessages=u,exports.snapEdges=he,exports.snapGrid=K,exports.snapSize=pe,exports.snapTargets=X,exports.sortable=H;