Comparing version 0.2.0 to 0.2.1
var draggables=function(t){"use strict";var e=Object.defineProperty,n=(t,n,r)=>((t,n,r)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[n]=r)(t,"symbol"!=typeof n?n+"":n,r) | ||
/*! draggables v0.2.0 | MIT License | © Itai Tenenbaum 2024 | git+https://github.com/taitulism/draggables */;const r='[data-drag-role="draggable"]',i='[data-drag-role="grip"]',o=`${r}, ${i}`,a=t=>"dragDisabled"in t&&"false"!==t.dragDisabled,s=t=>{if(!(t&&t instanceof HTMLElement))return;const e=t.closest(o)||void 0;if(!e)return;const{dragRole:n}=e.dataset;if("draggable"===n){if(a(e.dataset))return;if(Boolean(e.querySelector(i)))return;return e}if("grip"===n){const t=(t=>t.closest(r))(e);if(!t)throw new Error(`A grip must be inside a draggable ${r}`);if("true"===t.dataset.dragDisabled)return;return t}};const d="pointerdown",l="pointermove",g="pointerup",v=new WeakSet;class c{constructor(t,e){if(n(this,"isEnabled",!0),n(this,"contextElm"),n(this,"opts"),n(this,"activeDrag"),n(this,"events",{grab:void 0,dragStart:void 0,dragging:void 0,dragEnd:void 0}),n(this,"onDragStart",(t=>{var e,n;if(!this.isEnabled)return;const r=s(t.target);if(!r)return;const i=r.getBoundingClientRect();if(function(t,e,n){const{clientX:r,clientY:i}=e,{padding:o,cornerPadding:a}=n,s=r-t.x,d=i-t.y,l=t.x+t.width-r,g=t.y+t.height-i;return o?d<=o||g<=o||s<=o||l<=o:a?s<=a&&d<=a||l<=a&&d<=a||l<=a&&g<=a||s<=a&&g<=a:void 0}(i,t,this.opts))return;const o=r.closest("[data-drag-zone]")||document.body;this.activeDrag=function(t,e,n,r){const{dragAxis:i,dragPosition:o}=t.dataset,a={hasStarted:!1,elm:t,box:e,dragzoneBox:r.getBoundingClientRect(),axis:i,mouseStartX:i&&"x"!==i?0:n.clientX,mouseStartY:i&&"y"!==i?0:n.clientY,moveX:0,moveY:0,prevX:0,prevY:0};if(o){const[t,e]=o.split(",");a.prevX=parseInt(t,10),a.prevY=parseInt(e,10)}return a}(r,i,t,o),this.contextElm.style.userSelect="none",r.dataset.dragActive="",window.addEventListener(l,this.onDragging),window.addEventListener(g,this.onDrop),null==(n=(e=this.events).grab)||n.call(e,{ev:t,elm:r,relPos:[0,0]}),t.stopPropagation()})),n(this,"onDragging",(t=>{var e,n;const r=t.target;if(!this.isEnabled||a(r.dataset))return;const{activeDrag:i,events:o}=this,{hasStarted:s,elm:d}=i,[l,g]=function(t,e){const{box:n,dragzoneBox:r,axis:i,mouseStartX:o,mouseStartY:a,prevX:s,prevY:d}=t;let l=s,g=d;if(!i||"x"===i){const t=e.clientX-o,i=n.x+t;l=t+s,i<r.x?l+=r.x-i:i+n.width>r.right&&(l-=i+n.width-r.right)}if(!i||"y"===i){const t=e.clientY-a,i=n.y+t;g=t+d,i<r.y?g+=r.y-i:i+n.height>r.bottom&&(g-=i+n.height-r.bottom)}return[l,g]}(i,t);((t,e=0,n=0)=>{t.style.translate=`${e}px ${n}px`})(d,l,g),i.moveX=l,i.moveY=g,s?null==(n=o.dragging)||n.call(o,{ev:t,elm:d,relPos:[l,g]}):(i.hasStarted=!0,null==(e=o.dragStart)||e.call(o,{ev:t,elm:d,relPos:[l,g]}))})),n(this,"onDrop",(t=>{var e,n;window.removeEventListener(l,this.onDragging),window.removeEventListener(g,this.onDrop);const{activeDrag:r}=this,{elm:i,moveX:o,moveY:a,prevX:s,prevY:d}=r;i.dataset.dragPosition=`${o},${a}`,delete i.dataset.dragActive,this.contextElm.style.userSelect="",null==(n=(e=this.events).dragEnd)||n.call(e,{ev:t,elm:i,relPos:[o||s,a||d]})})),v.has(t))throw new Error("Context element already bound and cannot be bound twice. Destroy the previous one first.");v.add(t),this.opts=e,this.contextElm=t,t.addEventListener(d,this.onDragStart)}destroy(){var t;window.removeEventListener(l,this.onDragging),window.removeEventListener(g,this.onDrop),this.contextElm&&(v.delete(this.contextElm),this.contextElm.removeEventListener(d,this.onDragStart),this.contextElm=void 0),this.events={grab:void 0,dragStart:void 0,dragging:void 0,dragEnd:void 0},(null==(t=this.activeDrag)?void 0:t.elm)&&(delete this.activeDrag.elm.dataset.dragActive,this.activeDrag.elm=void 0),this.disable()}enable(){this.isEnabled=!0}disable(){this.isEnabled=!1}on(t,e){if(!(t in this.events))throw new Error("No such event name");return this.events[t]=e,this}off(t){if(!(t in this.events))throw new Error("No such event name");return this.events[t]=void 0,this}}const h={padding:0,cornerPadding:0};return t.Draggables=c,t.draggables=(t,e)=>t instanceof HTMLElement?new c(t,e||h):new c(document.body,t||h),Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),t}({}); | ||
/*! draggables v0.2.1 | MIT License | © Itai Tenenbaum 2024 | git+https://github.com/taitulism/draggables */;const r='[data-drag-role="draggable"]',i='[data-drag-role="grip"]',o=`${r}, ${i}`,a=t=>"dragDisabled"in t&&"false"!==t.dragDisabled,s=t=>{if(!(t&&t instanceof HTMLElement))return;const e=t.closest(o)||void 0;if(!e)return;const{dragRole:n}=e.dataset;if("draggable"===n){if(a(e.dataset))return;if(Boolean(e.querySelector(i)))return;return e}if("grip"===n){const t=(t=>t.closest(r))(e);if(!t)throw new Error(`A grip must be inside a draggable ${r}`);if("true"===t.dataset.dragDisabled)return;return t}};const d="pointerdown",l="pointermove",g="pointerup",v=new WeakSet;class c{constructor(t,e){if(n(this,"isEnabled",!0),n(this,"contextElm"),n(this,"opts"),n(this,"activeDrag"),n(this,"events",{grab:void 0,dragStart:void 0,dragging:void 0,dragEnd:void 0}),n(this,"onDragStart",(t=>{var e,n;if(!this.isEnabled)return;const r=s(t.target);if(!r)return;const i=r.getBoundingClientRect();if(function(t,e,n){const{clientX:r,clientY:i}=e,{padding:o,cornerPadding:a}=n,s=r-t.x,d=i-t.y,l=t.x+t.width-r,g=t.y+t.height-i;return o?d<=o||g<=o||s<=o||l<=o:a?s<=a&&d<=a||l<=a&&d<=a||l<=a&&g<=a||s<=a&&g<=a:void 0}(i,t,this.opts))return;const o=r.closest("[data-drag-zone]")||document.body;this.activeDrag=function(t,e,n,r){const{dragAxis:i,dragPosition:o}=t.dataset,a={hasStarted:!1,elm:t,box:e,dragzoneBox:r.getBoundingClientRect(),axis:i,mouseStartX:i&&"x"!==i?0:n.clientX,mouseStartY:i&&"y"!==i?0:n.clientY,moveX:0,moveY:0,prevX:0,prevY:0};if(o){const[t,e]=o.split(",");a.prevX=parseInt(t,10),a.prevY=parseInt(e,10)}return a}(r,i,t,o),this.contextElm.style.userSelect="none",r.dataset.dragActive="",window.addEventListener(l,this.onDragging),window.addEventListener(g,this.onDrop),null==(n=(e=this.events).grab)||n.call(e,{ev:t,elm:r,relPos:[0,0]}),t.stopPropagation()})),n(this,"onDragging",(t=>{var e,n;const r=t.target;if(!this.isEnabled||a(r.dataset))return;const{activeDrag:i,events:o}=this,{hasStarted:s,elm:d}=i,[l,g]=function(t,e){const{box:n,dragzoneBox:r,axis:i,mouseStartX:o,mouseStartY:a,prevX:s,prevY:d}=t;let l=s,g=d;if(!i||"x"===i){const t=e.clientX-o,i=n.x+t;l=t+s,i<r.x?l+=r.x-i:i+n.width>r.right&&(l-=i+n.width-r.right)}if(!i||"y"===i){const t=e.clientY-a,i=n.y+t;g=t+d,i<r.y?g+=r.y-i:i+n.height>r.bottom&&(g-=i+n.height-r.bottom)}return[l,g]}(i,t);((t,e=0,n=0)=>{t.style.translate=`${e}px ${n}px`})(d,l,g),i.moveX=l,i.moveY=g,s?null==(n=o.dragging)||n.call(o,{ev:t,elm:d,relPos:[l,g]}):(i.hasStarted=!0,null==(e=o.dragStart)||e.call(o,{ev:t,elm:d,relPos:[l,g]}))})),n(this,"onDrop",(t=>{var e,n;window.removeEventListener(l,this.onDragging),window.removeEventListener(g,this.onDrop);const{activeDrag:r}=this,{elm:i,moveX:o,moveY:a,prevX:s,prevY:d}=r;i.dataset.dragPosition=`${o},${a}`,delete i.dataset.dragActive,this.contextElm.style.userSelect="",null==(n=(e=this.events).dragEnd)||n.call(e,{ev:t,elm:i,relPos:[o||s,a||d]})})),v.has(t))throw new Error("Context element already bound and cannot be bound twice. Destroy the previous one first.");v.add(t),this.opts=e,this.contextElm=t,t.addEventListener(d,this.onDragStart)}destroy(){var t;window.removeEventListener(l,this.onDragging),window.removeEventListener(g,this.onDrop),this.contextElm&&(v.delete(this.contextElm),this.contextElm.removeEventListener(d,this.onDragStart),this.contextElm=void 0),this.events={grab:void 0,dragStart:void 0,dragging:void 0,dragEnd:void 0},(null==(t=this.activeDrag)?void 0:t.elm)&&(delete this.activeDrag.elm.dataset.dragActive,this.activeDrag.elm=void 0),this.disable()}enable(){this.isEnabled=!0}disable(){this.isEnabled=!1}on(t,e){if(!(t in this.events))throw new Error("No such event name");return this.events[t]=e,this}off(t){if(!(t in this.events))throw new Error("No such event name");return this.events[t]=void 0,this}}const h={padding:0,cornerPadding:0};return t.Draggables=c,t.draggables=(t,e)=>t instanceof HTMLElement?new c(t,e||h):new c(document.body,t||h),Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),t}({}); | ||
//# sourceMappingURL=draggables.browser.js.map |
var __defProp = Object.defineProperty; | ||
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; | ||
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); | ||
/*! draggables v0.2.0 | MIT License | © Itai Tenenbaum 2024 | git+https://github.com/taitulism/draggables */ | ||
/*! draggables v0.2.1 | MIT License | © Itai Tenenbaum 2024 | git+https://github.com/taitulism/draggables */ | ||
const DragzoneSelector = "[data-drag-zone]"; | ||
@@ -6,0 +6,0 @@ const DraggableSelector = '[data-drag-role="draggable"]'; |
{ | ||
"name": "draggables", | ||
"description": "Draggable elements.", | ||
"version": "0.2.0", | ||
"version": "0.2.1", | ||
"license": "MIT", | ||
"type": "module", | ||
"main": "./src/index.ts", | ||
"browser": "./dist/browser/draggables.min.js", | ||
"module": "./dist/esm/draggables.esm.js", | ||
"types": "./dist/esm/draggables.esm.d.ts", | ||
"browser": "./dist/draggables.browser.js", | ||
"module": "./dist/draggables.js", | ||
"files": [ | ||
@@ -12,0 +11,0 @@ "dist", |
61531