-
-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathdNd.min.js
1 lines (1 loc) · 7.87 KB
/
dNd.min.js
1
var dragNdrop=function(e){function t(e){if(e){var t=o(e);return d(t),t}return!1}function o(e){var t=[];if(e instanceof Array)for(var o=0,r=e.length;o<r;o++)t=t.concat(n(e[o]));else t=t.concat(n(e));return t}function n(e){if("string"==typeof e.innerHTML)return[e];if("string"==typeof e){for(var t=document.querySelectorAll(e),o=[],n=0,r=t.length;n<r;n++)o.push(t[n]);return o}}function r(){u(D||T),s(T,D),d()}function d(e){if(I(T,"dragNdrop"),e)for(var t=0,o=e.length;t<o;t++)I(e[t],"dragNdrop__dropzone")}function s(e,t){if(B)a(e);else{e.style.position=H?"auto":"relative",e.style.zIndex="999";var o=t||e;o.style.cursor=A&&"x"===A||"y"===A?"x"===A?"col-resize":"row-resize":"move"}}function a(e){var t=R(e,"position");e.style.position=t&&"static"!==t?t:H?"auto":"relative";var o=R(e,"zIndex");e.style.zIndex=o&&"auto"!==o?o:"999";var n=R(e,"cursor");e.style.cursor=n&&"auto"!==o?n:A&&"x"===A||"y"===A?"x"===A?"col-resize":"row-resize":"move"}function u(e){document.addEventListener?(e.addEventListener("mousedown",l,!1),e.addEventListener("touchstart",l,!1)):(e.attachEvent("onmousedown",l),e.attachEvent("touchstart",l))}function c(e){document.addEventListener?(e.removeEventListener("mousedown",l,!1),e.removeEventListener("touchstart",l,!1)):(e.detachEvent("onmousedown",l),e.detachEvent("touchstart",l))}function l(e){C("start"),q(T,"dragNdrop--stop"),I(T,"dragNdrop--start");var t="touches"in e?e.touches[0]:e;t.preventDefault?t.preventDefault():t.returnValue=!1,i(T,t),T.style.zIndex=parseInt(T.style.zIndex)+1;var o=document.body.style;o.cursor=o.cursor&&"inherit"!==o.cursor?o.cursor:T.style.cursor,p()}function i(e,t){if(X={x:t.pageX||t.clientX,y:t.pageY||t.clientY},H){var o=e.style.transform.split("translate3d(")[1],n=!!o&&o.split(",");V.x=parseInt(n[0])||0,V.y=parseInt(n[1])||0}else V.x=parseInt(R(e,"left"))||0,V.y=parseInt(R(e,"top"))||0}function p(){document.addEventListener?(document.addEventListener("mousemove",m,!1),document.addEventListener("touchmove",m,!1),document.addEventListener("mouseup",E,!1),document.addEventListener("touchend",E,!1)):(document.attachEvent("onmousemove",m),document.attachEvent("touchmove",m),document.attachEvent("onmouseup",E),document.attachEvent("touchend",E))}function m(e){var t;C("drag"),q(T,"dragNdrop--start"),I(T,"dragNdrop--drag"),M&&L(T,M),"touches"in e?(e.preventDefault(),t=e.touches[0]):t=e,f(T,t,A)}function f(e,t,o){var n={x:t.pageX||t.clientX,y:t.pageY||t.clientY},r={x:n.x-X.x,y:n.y-X.y};X={x:n.x,y:n.y},v(e,r,o)}function v(e,t,o){o&&!1!==o?y(e,t,o):g(e,{x:V.x+t.x,y:V.y+t.y})}function y(e,t,o){"x"===o?g(e,{x:V.x+t.x,y:V.y}):"y"===o?g(e,{x:V.x,y:V.y+t.y}):Y&&(g(e,{x:V.x+t.x,y:V.y+t.y}),h(e,o,!1))}function g(e,t){V={x:t.x,y:t.y},H?(e.style.transform="translate3d("+t.x+"px ,"+t.y+"px , 1px)",e.style.webkitTransform="translate3d("+t.x+"px ,"+t.y+"px , 1px)"):(e.style.left=t.x+"px",e.style.top=t.y+"px")}function h(e,t,o){if(e===t)return!1;for(var n={x:window.scrollY||document.documentElement.scrollTop,y:window.scrollX||document.documentElement.scrollLeft},r={top:t.getBoundingClientRect().top+n.y,left:t.getBoundingClientRect().left+n.x},d={top:t.offsetHeight,left:t.offsetWidth},s={top:e.getBoundingClientRect().top+n.y,left:e.getBoundingClientRect().left+n.x},a={top:e.offsetHeight,left:e.offsetWidth},u=["top","left","top","left"],c=[],l=0,i=u.length;l<i;l++)l<i/2?s[u[l]]>=r[u[l]]?c.push(!0):(c.push(!1),o||x(e,u[l],r[u[l]]-s[u[l]])):s[u[l]]+a[u[l]]<=r[u[l]]+d[u[l]]?c.push(!0):(c.push(!1),o||x(e,u[l],r[u[l]]+d[u[l]]-(s[u[l]]+a[u[l]])));return c[0]&&c[1]&&c[2]&&c[3]}function x(e,t,o){"top"===t?g(e,{y:V.y+o,x:V.x}):g(e,{y:V.y,x:V.x+o})}function E(){C("stop"),q(T,"dragNdrop--drag"),I(T,"dragNdrop--stop");var e=!1;M&&(e=b(T,M)),k&&k({element:T,dropped:e,dropZones:M,constraints:A,customStyles:B,useTransform:H}),w(),T.style.zIndex=parseInt(T.style.zIndex)-1,document.body.style.cursor=Z}function N(){E()}function w(){document.addEventListener?(document.removeEventListener("mousemove",m,!1),document.removeEventListener("touchmove",m,!1),document.removeEventListener("mouseup",E,!1),document.removeEventListener("touchend",E,!1)):(document.detachEvent("onmousemove",m),document.detachEvent("touchmove",m),document.detachEvent("onmouseup",E),document.detachEvent("touchend",E))}function L(e,t){q(e,"dragNdrop--dropped"),I(e,"dragNdrop--dropable");for(var o=0;o<t.length;o++){var n=t[o];q(n,"dragNdrop__dropzone--dropped"),I(n,"dragNdrop__dropzone--ready")}}function b(e,t){q(e,"dragNdrop--dropable"),q(e,"dragNdrop--dropped");for(var o=[],n=0;n<t.length;n++){var r=t[n];q(r,"dragNdrop__dropzone--ready"),q(r,"dragNdrop__dropzone--dropped"),h(e,r,!0)&&(C("dropped"),I(e,"dragNdrop--dropped"),I(r,"dragNdrop__dropzone--dropped"),o.push(r))}return o.length>0&&o}function S(){z(T),w();var e=D||T;c(e),"col-resize"!==e.style.cursor&&"row-resize"!==e.style.cursor&&"move"!==e.style.cursor||(e.style.cursor="auto")}function z(e){q(e,"dragNdrop"),q(e,"dragNdrop--drag"),q(e,"dragNdrop--stop"),q(e,"dragNdrop--dropped"),q(e,"dragNdrop--dropable")}function C(e){var t;"function"==typeof Event?(t=new Event("dragNdrop:"+e),T.dispatchEvent(t)):document.createEvent&&(t=document.createEvent("CustomEvent"),t.initEvent("dragNdrop:"+e,!0,!0),T.dispatchEvent(t))}function _(e,t){return e.classList?e.classList.contains(t):!!e.className.match(new RegExp("(\\s|^)"+t+"(\\s|$)"))}function I(e,t){_(e,t)||(e.classList?e.classList.add(t):e.className+=" "+t)}function q(e,t){if(_(e,t))if(e.classList)e.classList.remove(t);else{var o=new RegExp("(\\s|^)"+t+"(\\s|$)");e.className=e.className.replace(o," ")}}function R(e,t){return window.getComputedStyle?window.getComputedStyle(e,null)[t]:document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(e,null)[t]:e.currentStyle?e.currentStyle[t]:e.style[t]}e?e&&!e.element&&console.log("ERROR: dragNdrop: please provide an element (options.element) that will be made draggable to the function. See reference at: https://github.com/ThibaultJanBeyer/dragNdrop for more info"):console.log("ERROR: dragNdrop: please provide an options object to the function. See reference at: https://github.com/ThibaultJanBeyer/dragNdrop for more info");var T=e.element,D=e.elementHandle,B=e.customStyles,A=e.constraints,M=t(e.dropZones),k=e.callback,H=!("useTransform"in e)||e.useTransform,V={},X={x:0,y:0},Y=A&&"string"==typeof A.innerHTML;(function(){if(!window.getComputedStyle)return!1;var e,t=document.createElement("p"),o={webkitTransform:"-webkit-transform",transform:"transform"};document.body.insertBefore(t,null);for(var n in o)void 0!==t.style[n]&&(t.style[n]="translate3d(1px, 1px, 1px)",e=window.getComputedStyle(t).getPropertyValue(o[n]));return document.body.removeChild(t),void 0!==e&&e.length>0&&"none"!==e})()||(console.log("WARNING: dragNdrop: your browser does not support hardware accelerated css. The plugin will still work but do yourself a favor and update your browser."),H=!1),r();var Z=document.body.style.cursor||"inherit";return function(){document.querySelectorAll||(document.querySelectorAll=function(e){var t,o=document.createElement("style"),n=[];for(document.documentElement.firstChild.appendChild(o),document._qsa=[],o.styleSheet.cssText=e+"{x-qsa:expression(document._qsa && document._qsa.push(this))}",window.scrollBy(0,0),o.parentNode.removeChild(o);document._qsa.length;)t=document._qsa.shift(),t.style.removeAttribute("x-qsa"),n.push(t);return document._qsa=null,n}),document.querySelector||(document.querySelector=function(e){var t=document.querySelectorAll(e);return t.length?t[0]:null})}(),{setupDropZones:t,getDropZones:o,getElement:n,start:r,setupClasses:d,setStyles:s,setCustomStyles:a,setupEventListeners:u,eleMouseDown:l,getStartingPositions:i,addDocumentEventListeners:p,eleMouseMove:m,getPositions:f,handleMoveElement:v,handleConstraints:y,moveElement:g,isElementInside:h,putElementBack:x,eleMouseUp:E,pause:N,removeDocumentEventListeners:w,prepareDrop:L,handleDrop:b,stop:S,removeClasses:z}};"undefined"!=typeof module&&null!==module?module.exports=dragNdrop:window.dragNdrop=dragNdrop;