-
Notifications
You must be signed in to change notification settings - Fork 30
/
Copy pathvue-drag.min.js
1 lines (1 loc) · 1.73 KB
/
vue-drag.min.js
1
function detectmob(){return!!(navigator.userAgent.match(/Android/i)||navigator.userAgent.match(/webOS/i)||navigator.userAgent.match(/iPhone/i)||navigator.userAgent.match(/iPad/i)||navigator.userAgent.match(/iPod/i)||navigator.userAgent.match(/BlackBerry/i)||navigator.userAgent.match(/Windows Phone/i))}!function(){var e={install:function(e){e.directive("drag",{bind:function(e,t){var r;e.style.position="absolute",r=void 0!==t.value;var o=0,n=0;function i(t){e.style.left=t.pageX-o+"px",e.style.top=t.pageY-n+"px"}function u(){removeEventListener("mousemove",i),removeEventListener("mouseup",u)}e.addEventListener("mousedown",function(a){if(o=a.pageX-e.offsetLeft,n=a.pageY-e.offsetTop,r){var l=e.querySelector(t.value);l.style.position="relative",t.modifiers.cursor&&(l.style.cursor="move");var p=l.currentStyle?l.currentStyle:window.getComputedStyle(l,null),s=e.currentStyle?e.currentStyle:window.getComputedStyle(e,null),c=Number(p.getPropertyValue("left").replace("px",""))+Number(s.getPropertyValue("left").replace("px",""))+Number(s.getPropertyValue("border-left-width").replace("px","")),d=c+Number(p.getPropertyValue("width").replace("px","")),m=Number(p.getPropertyValue("top").replace("px",""))+Number(s.getPropertyValue("top").replace("px",""))+Number(s.getPropertyValue("border-top-width").replace("px","")),v=m+Number(p.getPropertyValue("height").replace("px",""));a.clientX<=d&&a.clientX>=c&&a.clientY>=m&&a.clientY<=v&&(addEventListener("mousemove",i),addEventListener("mouseup",u))}else t.modifiers.cursor&&(e.style.cursor="move"),addEventListener("mousemove",i),addEventListener("mouseup",u)})}})}};"object"==typeof exports?module.exports=e:"function"==typeof define&&define.amd?define([],function(){return e}):window.Vue&&(window.vueDrag=e,Vue.use(e))}();