n8n-editor-ui
Version:
Workflow Editor UI for n8n
3 lines (2 loc) • 5.22 kB
JavaScript
function g(i){return i.type.indexOf("mouse")!==-1?i.clientX:i.touches[0].clientX}function j(i){return i.type.indexOf("mouse")!==-1?i.clientY:i.touches[0].clientY}var M=function(){var i=!1;try{var p=Object.defineProperty({},"passive",{get:function(){i=!0}});window.addEventListener("test",null,p)}catch{}return i}(),k={install:function(i,p){var E=Object.assign({},{disableClick:!1,tapTolerance:10,swipeTolerance:30,touchHoldTolerance:400,longTapTimeInterval:400,touchClass:"",dragFrequency:100,rollOverFrequency:100},p);function f(e){var t=this.$$touchObj,o=e.type.indexOf("touch")>=0,u=e.type.indexOf("mouse")>=0,c=this;o&&(t.lastTouchStartTime=e.timeStamp),!(u&&t.lastTouchStartTime&&e.timeStamp-t.lastTouchStartTime<350)&&(t.touchStarted||(L(this),t.touchStarted=!0,t.touchMoved=!1,t.swipeOutBounded=!1,t.startX=g(e),t.startY=j(e),t.currentX=0,t.currentY=0,t.touchStartTime=e.timeStamp,t.hasSwipe=n(this,"swipe")||n(this,"swipe.left")||n(this,"swipe.right")||n(this,"swipe.top")||n(this,"swipe.bottom"),n(this,"hold")&&(t.touchHoldTimer=setTimeout(function(){t.touchHoldTimer=null,h(e,c,"hold")},t.options.touchHoldTolerance)),h(e,this,"press")))}function v(e){var t=this.$$touchObj,o=g(e),u=j(e),c=t.currentX!=o||t.currentY!=u;if(t.currentX=o,t.currentY=u,t.touchMoved){if(t.hasSwipe&&!t.swipeOutBounded){var a=t.options.swipeTolerance;t.swipeOutBounded=Math.abs(t.startX-t.currentX)>a&&Math.abs(t.startY-t.currentY)>a}}else{var r=t.options.tapTolerance;t.touchMoved=Math.abs(t.startX-t.currentX)>r||Math.abs(t.startY-t.currentY)>r,t.touchMoved&&(T(t),h(e,this,"drag.once"))}if(n(this,"rollover")&&c){var s=e.timeStamp,l=t.options.rollOverFrequency;(t.touchRollTime==null||s>t.touchRollTime+l)&&(t.touchRollTime=s,h(e,this,"rollover"))}if(n(this,"drag")&&t.touchStarted&&t.touchMoved&&c){var s=e.timeStamp,l=t.options.dragFrequency;(t.touchDragTime==null||s>t.touchDragTime+l)&&(t.touchDragTime=s,h(e,this,"drag"))}}function O(){var e=this.$$touchObj;T(e),d(this),e.touchStarted=e.touchMoved=!1,e.startX=e.startY=0}function m(e){var t=this.$$touchObj,o=e.type.indexOf("touch")>=0,u=e.type.indexOf("mouse")>=0;o&&(t.lastTouchEndTime=e.timeStamp);var c=o&&!t.touchHoldTimer;if(T(t),t.touchStarted=!1,d(this),!(u&&t.lastTouchEndTime&&e.timeStamp-t.lastTouchEndTime<350))if(h(e,this,"release"),t.touchMoved){if(t.hasSwipe&&!t.swipeOutBounded){var r=t.options.swipeTolerance,a,s=Math.abs(t.startY-t.currentY),l=Math.abs(t.startX-t.currentX);(s>r||l>r)&&(s>r?a=t.startY>t.currentY?"top":"bottom":a=t.startX>t.currentX?"left":"right",n(this,"swipe."+a)?h(e,this,"swipe."+a,a):h(e,this,"swipe",a))}}else if(n(this,"longtap")&&e.timeStamp-t.touchStartTime>t.options.longTapTimeInterval)e.cancelable&&e.preventDefault(),h(e,this,"longtap");else if(n(this,"hold")&&c){e.cancelable&&e.preventDefault();return}else h(e,this,"tap")}function w(){L(this)}function S(){d(this)}function n(e,t){var o=e.$$touchObj.callbacks[t];return o!=null&&o.length>0}function h(e,t,o,u){var c=t.$$touchObj,r=c.callbacks[o];if(r==null||r.length===0)return null;for(var a=0;a<r.length;a++){var s=r[a];s.modifiers.stop&&e.stopPropagation(),s.modifiers.prevent&&e.preventDefault(),!(s.modifiers.self&&e.target!==e.currentTarget)&&typeof s.value=="function"&&(u?s.value(u,e):s.value(e))}}function L(e){var t=e.$$touchObj.options.touchClass;t&&e.classList.add(t)}function d(e){var t=e.$$touchObj.options.touchClass;t&&e.classList.remove(t)}function T(e){e.touchHoldTimer&&(clearTimeout(e.touchHoldTimer),e.touchHoldTimer=null)}function b(e,t){var o=e.$$touchObj||{callbacks:{},hasBindTouchEvents:!1,options:E};return t&&(o.options=Object.assign({},o.options,t)),e.$$touchObj=o,e.$$touchObj}i.directive("touch",{beforeMount:function(e,t){var o=b(e),u=M?{passive:!0}:!1,c=t.arg||"tap";switch(c){case"swipe":var r=t.modifiers;if(r.left||r.right||r.top||r.bottom){for(var a in t.modifiers)if(["left","right","top","bottom"].indexOf(a)>=0){var s="swipe."+a;o.callbacks[s]=o.callbacks[s]||[],o.callbacks[s].push(t)}}else o.callbacks.swipe=o.callbacks.swipe||[],o.callbacks.swipe.push(t);break;case"press":case"drag":t.modifiers.disablePassive&&(u=!1);default:o.callbacks[c]=o.callbacks[c]||[],o.callbacks[c].push(t)}o.hasBindTouchEvents||(e.addEventListener("touchstart",f,u),e.addEventListener("touchmove",v,u),e.addEventListener("touchcancel",O),e.addEventListener("touchend",m),o.options.disableClick||(e.addEventListener("mousedown",f),e.addEventListener("mousemove",v),e.addEventListener("mouseup",m),e.addEventListener("mouseenter",w),e.addEventListener("mouseleave",S)),o.hasBindTouchEvents=!0)},unmounted:function(e){e.removeEventListener("touchstart",f),e.removeEventListener("touchmove",v),e.removeEventListener("touchcancel",O),e.removeEventListener("touchend",m),e.$$touchObj&&!e.$$touchObj.options.disableClick&&(e.removeEventListener("mousedown",f),e.removeEventListener("mousemove",v),e.removeEventListener("mouseup",m),e.removeEventListener("mouseenter",w),e.removeEventListener("mouseleave",S)),delete e.$$touchObj}}),i.directive("touch-class",{beforeMount:function(e,t){b(e,{touchClass:t.value})}}),i.directive("touch-options",{beforeMount:function(e,t){b(e,t.value)}})}};export{k as v};
//# sourceMappingURL=vue3-touch-events-ee55ce04.js.map