forked from gtramontina/draggable.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
draggable.min.js
4 lines (4 loc) · 1.72 KB
/
draggable.min.js
1
2
3
4
!function(h,g){"function"===typeof define&&"object"===typeof define.amd?define(g):this[h]=g()}("draggable",function(){function h(a){a.draggableListeners={start:[],drag:[],stop:[]};a.whenDragStarts=g(a,"start");a.whenDragging=g(a,"drag");a.whenDragStops=g(a,"stop")}function g(a,c){return function(d){a.draggableListeners[c].push(d)}}function i(a,b){for(var d=!0,e=c.draggableListeners[a],f=e.length-1;0<=f;f--)!1===e[f](b)&&(d=!1);return d}function j(a){a.preventDefault&&a.preventDefault();a.stopPropagation&&
a.stopPropagation();return a.returnValue=!1}function k(a){var b=c.style,d=parseInt(b.left,10),e=parseInt(b.top,10),d=d+(a.clientX-c.lastXPosition),e=e+(a.clientY-c.lastYPosition);b.left=d+"px";b.top=e+"px";c.lastXPosition=a.clientX;c.lastYPosition=a.clientY;i("drag",{x:d,y:e,mouseEvent:a})}function l(a){document.removeEventListener("selectstart",j);document.removeEventListener("mousemove",k);document.removeEventListener("mouseup",l);var b=parseInt(c.style.left,10),d=parseInt(c.style.top,10);i("stop",
{x:b,y:d,mouseEvent:a})}var c;return function(a,b){b=b||a;a.style.position="absolute";h(a);b.addEventListener("mousedown",function(d){var e,f;c&&(f=c,f.style["z-index"]=9,f.style.zIndex=9);a.style["z-index"]="10";a.style.zIndex="10";c=a;f=e=0;var b=c;do e+=b.offsetTop,f+=b.offsetLeft;while(b=b.offsetParent);if(b=getComputedStyle?getComputedStyle(c):!1)f=f-(parseInt(b["margin-left"])||0)-(parseInt(b["border-left"])||0),e=e-(parseInt(b["margin-top"])||0)-(parseInt(b["border-top"])||0);c.style.left=
f+"px";c.style.top=e+"px";c.lastXPosition=d.clientX;c.lastYPosition=d.clientY;i("start",{x:f,y:e,mouseEvent:d})&&(document.addEventListener("selectstart",j),document.addEventListener("mousemove",k),document.addEventListener("mouseup",l))})}});