mjolnir.js
Advanced tools
Comparing version 3.0.0-alpha.4 to 3.0.0-beta.1
@@ -7,4 +7,4 @@ (function webpackUniversalModuleDefinition(root, factory) { | ||
else root['mjolnir'] = factory();})(globalThis, function () { | ||
var __exports__=(()=>{var W=Object.defineProperty;var ye=Object.getOwnPropertyDescriptor;var Te=Object.getOwnPropertyNames;var be=Object.prototype.hasOwnProperty;var Me=(o,t)=>{for(var e in t)W(o,e,{get:t[e],enumerable:!0})},Re=(o,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Te(t))!be.call(o,r)&&r!==e&&W(o,r,{get:()=>t[r],enumerable:!(n=ye(t,r))||n.enumerable});return o};var xe=o=>Re(W({},"__esModule",{value:!0}),o);var Ge={};Me(Ge,{EventManager:()=>F,InputDirection:()=>g,InputEvent:()=>h,Pan:()=>y,Pinch:()=>z,Press:()=>A,Recognizer:()=>u,Rotate:()=>w,Swipe:()=>P,Tap:()=>_});var h=(r=>(r[r.Start=1]="Start",r[r.Move=2]="Move",r[r.End=4]="End",r[r.Cancel=8]="Cancel",r))(h||{}),g=(a=>(a[a.None=0]="None",a[a.Left=1]="Left",a[a.Right=2]="Right",a[a.Up=4]="Up",a[a.Down=8]="Down",a[a.Horizontal=3]="Horizontal",a[a.Vertical=12]="Vertical",a[a.All=15]="All",a))(g||{});var te="compute",L="auto",b="manipulation",E="none",M="pan-x",R="pan-y";function K(o){if(o.includes(E))return E;let t=o.includes(M),e=o.includes(R);return t&&e?E:t||e?t?M:R:o.includes(b)?b:L}var x=class{constructor(t,e){this.actions="";this.manager=t,this.set(e)}set(t){t===te&&(t=this.compute()),this.manager.element&&(this.manager.element.style.touchAction=t,this.actions=t)}update(){this.set(this.manager.options.touchAction)}compute(){let t=[];for(let e of this.manager.recognizers)e.options.enable&&(t=t.concat(e.getTouchAction()));return K(t.join(" "))}};function T(o){return o.trim().split(/\s+/g)}function C(o,t,e){if(o)for(let n of T(t))o.addEventListener(n,e,!1)}function N(o,t,e){if(o)for(let n of T(t))o.removeEventListener(n,e,!1)}function G(o){return(o.ownerDocument||o).defaultView}function $(o,t){let e=o;for(;e;){if(e===t)return!0;e=o.parentNode}return!1}function S(o){let t=o.length;if(t===1)return{x:Math.round(o[0].clientX),y:Math.round(o[0].clientY)};let e=0,n=0,r=0;for(;r<t;)e+=o[r].clientX,n+=o[r].clientY,r++;return{x:Math.round(e/t),y:Math.round(n/t)}}function J(o){let t=[],e=0;for(;e<o.pointers.length;)t[e]={clientX:Math.round(o.pointers[e].clientX),clientY:Math.round(o.pointers[e].clientY)},e++;return{timeStamp:Date.now(),pointers:t,center:S(t),deltaX:o.deltaX,deltaY:o.deltaY}}function j(o,t){let e=t.x-o.x,n=t.y-o.y;return Math.sqrt(e*e+n*n)}function Q(o,t){let e=t.clientX-o.clientX,n=t.clientY-o.clientY;return Math.sqrt(e*e+n*n)}function ne(o,t){let e=t.x-o.x,n=t.y-o.y;return Math.atan2(n,e)*180/Math.PI}function Z(o,t){let e=t.clientX-o.clientX,n=t.clientY-o.clientY;return Math.atan2(n,e)*180/Math.PI}function U(o,t){return o===t?0:Math.abs(o)>=Math.abs(t)?o<0?1:2:t<0?4:8}function oe(o,t){let e=t.center,n=o.offsetDelta,r=o.prevDelta,i=o.prevInput;return(t.eventType===1||i?.eventType===4)&&(r=o.prevDelta={x:i?.deltaX||0,y:i?.deltaY||0},n=o.offsetDelta={x:e.x,y:e.y}),{deltaX:r.x+(e.x-n.x),deltaY:r.y+(e.y-n.y)}}function D(o,t,e){return{x:t/o||0,y:e/o||0}}function re(o,t){return Q(t[0],t[1])/Q(o[0],o[1])}function ie(o,t){return Z(t[1],t[0])-Z(o[1],o[0])}function se(o,t){let e=o.lastInterval||t,n=t.timeStamp-e.timeStamp,r,i,s,l;if(t.eventType!==8&&(n>25||e.velocity===void 0)){let a=t.deltaX-e.deltaX,p=t.deltaY-e.deltaY,c=D(n,a,p);i=c.x,s=c.y,r=Math.abs(c.x)>Math.abs(c.y)?c.x:c.y,l=U(a,p),o.lastInterval=t}else r=e.velocity,i=e.velocityX,s=e.velocityY,l=e.direction;t.velocity=r,t.velocityX=i,t.velocityY=s,t.direction=l}function ae(o,t){let{session:e}=o,{pointers:n}=t,{length:r}=n;e.firstInput||(e.firstInput=J(t)),r>1&&!e.firstMultiple?e.firstMultiple=J(t):r===1&&(e.firstMultiple=!1);let{firstInput:i,firstMultiple:s}=e,l=s?s.center:i.center,a=t.center=S(n);t.timeStamp=Date.now(),t.deltaTime=t.timeStamp-i.timeStamp,t.angle=ne(l,a),t.distance=j(l,a);let{deltaX:p,deltaY:c}=oe(e,t);t.deltaX=p,t.deltaY=c,t.offsetDirection=U(t.deltaX,t.deltaY);let m=D(t.deltaTime,t.deltaX,t.deltaY);t.overallVelocityX=m.x,t.overallVelocityY=m.y,t.overallVelocity=Math.abs(m.x)>Math.abs(m.y)?m.x:m.y,t.scale=s?re(s.pointers,n):1,t.rotation=s?ie(s.pointers,n):0,t.maxPointers=e.prevInput?t.pointers.length>e.prevInput.maxPointers?t.pointers.length:e.prevInput.maxPointers:t.pointers.length;let q=o.element;return $(t.srcEvent.target,q)&&(q=t.srcEvent.target),t.target=q,se(e,t),t}function le(o,t,e){let n=e.pointers.length,r=e.changedPointers.length,i=t&1&&n-r===0,s=t&12&&n-r===0;e.isFirst=Boolean(i),e.isFinal=Boolean(s),i&&(o.session={}),e.eventType=t;let l=ae(o,e);o.emit("hammer.input",l),o.recognize(l),o.session.prevInput=l}var I=class{constructor(t){this.evEl="";this.evWin="";this.evTarget="";this.domHandler=t=>{this.manager.options.enable&&this.handler(t)};this.manager=t,this.element=t.element,this.target=t.options.inputTarget||t.element}callback(t,e){le(this.manager,t,e)}init(){C(this.element,this.evEl,this.domHandler),C(this.target,this.evTarget,this.domHandler),C(G(this.element),this.evWin,this.domHandler)}destroy(){N(this.element,this.evEl,this.domHandler),N(this.target,this.evTarget,this.domHandler),N(G(this.element),this.evWin,this.domHandler)}};var Oe={pointerdown:1,pointermove:2,pointerup:4,pointercancel:8,pointerout:8},He="pointerdown",_e="pointermove pointerup pointercancel",O=class extends I{constructor(e){super(e);this.evEl=He,this.evWin=_e,this.store=this.manager.session.pointerEvents=[],this.init()}handler(e){let{store:n}=this,r=!1,i=Oe[e.type],s=e.pointerType,l=s==="touch",a=n.findIndex(p=>p.pointerId===e.pointerId);i&1&&(e.buttons||l)?a<0&&(n.push(e),a=n.length-1):i&12&&(r=!0),!(a<0)&&(n[a]=e,this.callback(i,{pointers:n,changedPointers:[e],eventType:i,pointerType:s,srcEvent:e}),r&&n.splice(a,1))}};var Pe=["","webkit","Moz","MS","ms","o"];function pe(o,t){let e=t[0].toUpperCase()+t.slice(1);for(let n of Pe){let r=n?n+e:t;if(r in o)return r}}var ze=1,ce=2,me={touchAction:"compute",enable:!0,inputTarget:null,cssProps:{userSelect:"none",userDrag:"none",touchCallout:"none",tapHighlightColor:"rgba(0,0,0,0)"}},H=class{constructor(t,e){this.options={...me,...e,cssProps:{...me.cssProps,...e.cssProps},inputTarget:e.inputTarget||t},this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=t,this.input=new O(this),this.touchAction=new x(this,this.options.touchAction),this.toggleCssProps(!0)}set(t){return Object.assign(this.options,t),t.touchAction&&this.touchAction.update(),t.inputTarget&&(this.input.destroy(),this.input.target=t.inputTarget,this.input.init()),this}stop(t){this.session.stopped=t?ce:ze}recognize(t){let{session:e}=this;if(e.stopped)return;this.session.prevented&&t.srcEvent.preventDefault();let n,{recognizers:r}=this,{curRecognizer:i}=e;(!i||i&&i.state&8)&&(i=e.curRecognizer=null);let s=0;for(;s<r.length;)n=r[s],e.stopped!==ce&&(!i||n===i||n.canRecognizeWith(i))?n.recognize(t):n.reset(),!i&&n.state&14&&(i=e.curRecognizer=n),s++}get(t){let{recognizers:e}=this;for(let n=0;n<e.length;n++)if(e[n].options.event===t)return e[n];return null}add(t){if(Array.isArray(t)){for(let n of t)this.add(n);return this}let e=this.get(t.options.event);return e&&this.remove(e),this.recognizers.push(t),t.manager=this,this.touchAction.update(),t}remove(t){if(Array.isArray(t)){for(let n of t)this.remove(n);return this}let e=typeof t=="string"?this.get(t):t;if(e){let{recognizers:n}=this,r=n.indexOf(e);r!==-1&&(n.splice(r,1),this.touchAction.update())}return this}on(t,e){if(!t||!e)return;let{handlers:n}=this;for(let r of T(t))n[r]=n[r]||[],n[r].push(e)}off(t,e){if(!t)return;let{handlers:n}=this;for(let r of T(t))e?n[r]&&n[r].splice(n[r].indexOf(e),1):delete n[r]}emit(t,e){let n=this.handlers[t]&&this.handlers[t].slice();if(!n||!n.length)return;let r=e;r.type=t,r.preventDefault=function(){e.srcEvent.preventDefault()};let i=0;for(;i<n.length;)n[i](r),i++}destroy(){this.toggleCssProps(!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}toggleCssProps(t){let{element:e}=this;if(e){for(let[n,r]of Object.entries(this.options.cssProps)){let i=pe(e.style,n);t?(this.oldCssProps[i]=e.style[i],e.style[i]=r):e.style[i]=this.oldCssProps[i]||""}t||(this.oldCssProps={})}}};var we=1;function he(){return we++}function ee(o){return o&16?"cancel":o&8?"end":o&4?"move":o&2?"start":""}var u=class{constructor(t){this.options=t,this.id=he(),this.state=1,this.simultaneous={},this.requireFail=[]}set(t){return Object.assign(this.options,t),this.manager.touchAction.update(),this}recognizeWith(t){if(Array.isArray(t)){for(let r of t)this.recognizeWith(r);return this}let e;if(typeof t=="string"){if(e=this.manager.get(t),!e)throw new Error(`Cannot find recognizer ${t}`)}else e=t;let{simultaneous:n}=this;return n[e.id]||(n[e.id]=e,e.recognizeWith(this)),this}dropRecognizeWith(t){if(Array.isArray(t)){for(let n of t)this.dropRecognizeWith(n);return this}let e;return typeof t=="string"?e=this.manager.get(t):e=t,e&&delete this.simultaneous[e.id],this}requireFailure(t){if(Array.isArray(t)){for(let r of t)this.requireFailure(r);return this}let e;if(typeof t=="string"){if(e=this.manager.get(t),!e)throw new Error(`Cannot find recognizer ${t}`)}else e=t;let{requireFail:n}=this;return n.indexOf(e)===-1&&(n.push(e),e.requireFailure(this)),this}dropRequireFailure(t){if(Array.isArray(t)){for(let n of t)this.dropRequireFailure(n);return this}let e;if(typeof t=="string"?e=this.manager.get(t):e=t,e){let n=this.requireFail.indexOf(e);n>-1&&this.requireFail.splice(n,1)}return this}hasRequireFailures(){return Boolean(this.requireFail.find(t=>t.options.enable))}canRecognizeWith(t){return Boolean(this.simultaneous[t.id])}emit(t){if(!t)return;let{state:e}=this;e<8&&this.manager.emit(this.options.event+ee(e),t),this.manager.emit(this.options.event,t),t.additionalEvent&&this.manager.emit(t.additionalEvent,t),e>=8&&this.manager.emit(this.options.event+ee(e),t)}tryEmit(t){this.canEmit()?this.emit(t):this.state=32}canEmit(){let t=0;for(;t<this.requireFail.length;){if(!(this.requireFail[t].state&33))return!1;t++}return!0}recognize(t){let e={...t};if(!this.options.enable){this.reset(),this.state=32;return}this.state&56&&(this.state=1),this.state=this.process(e),this.state&30&&this.tryEmit(e)}getEventNames(){return[this.options.event]}reset(){}};var d=class extends u{attrTest(t){let e=this.options.pointers;return e===0||t.pointers.length===e}process(t){let{state:e}=this,{eventType:n}=t,r=e&6,i=this.attrTest(t);return r&&(n&8||!i)?e|16:r||i?n&4?e|8:e&2?e|4:2:32}};var _=class extends u{constructor(e={}){super({enable:!0,event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10,...e});this.pTime=null;this.pCenter=null;this._timer=null;this._input=null;this.count=0}getTouchAction(){return[b]}process(e){let{options:n}=this,r=e.pointers.length===n.pointers,i=e.distance<n.threshold,s=e.deltaTime<n.time;if(this.reset(),e.eventType&1&&this.count===0)return this.failTimeout();if(i&&s&&r){if(e.eventType!==4)return this.failTimeout();let l=this.pTime?e.timeStamp-this.pTime<n.interval:!0,a=!this.pCenter||j(this.pCenter,e.center)<n.posThreshold;if(this.pTime=e.timeStamp,this.pCenter=e.center,!a||!l?this.count=1:this.count+=1,this._input=e,this.count%n.taps===0)return this.hasRequireFailures()?(this._timer=setTimeout(()=>{this.state=8,this.tryEmit(this._input)},n.interval),2):8}return 32}failTimeout(){return this._timer=setTimeout(()=>{this.state=32},this.options.interval),32}reset(){clearTimeout(this._timer)}emit(e){this.state===8&&(e.tapCount=this.count,this.manager.emit(this.options.event,e))}};var Ae=["","start","move","end","cancel","up","down","left","right"],y=class extends d{constructor(e={}){super({enable:!0,pointers:1,event:"pan",threshold:10,direction:15,...e});this.pX=null,this.pY=null}getTouchAction(){let{options:{direction:e}}=this,n=[];return e&3&&n.push(R),e&12&&n.push(M),n}getEventNames(){return Ae.map(e=>this.options.event+e)}directionTest(e){let{options:n}=this,r=!0,{distance:i}=e,{direction:s}=e,l=e.deltaX,a=e.deltaY;return s&n.direction||(n.direction&3?(s=l===0?0:l<0?1:2,r=l!==this.pX,i=Math.abs(e.deltaX)):(s=a===0?0:a<0?4:8,r=a!==this.pY,i=Math.abs(e.deltaY))),e.direction=s,r&&i>n.threshold&&Boolean(s&n.direction)}attrTest(e){return super.attrTest(e)&&(Boolean(this.state&2)||!(this.state&2)&&this.directionTest(e))}emit(e){this.pX=e.deltaX,this.pY=e.deltaY;let n=g[e.direction].toLowerCase();n&&(e.additionalEvent=this.options.event+n),super.emit(e)}};var Le=["","up","down","left","right"],P=class extends d{constructor(t={}){super({enable:!0,event:"swipe",threshold:10,velocity:.3,direction:15,pointers:1,...t})}getTouchAction(){return y.prototype.getTouchAction.call(this)}getEventNames(){return Le.map(t=>this.options.event+t)}attrTest(t){let{direction:e}=this.options,n=0;return e&15?n=t.overallVelocity:e&3?n=t.overallVelocityX:e&12&&(n=t.overallVelocityY),super.attrTest(t)&&Boolean(e&t.offsetDirection)&&t.distance>this.options.threshold&&t.maxPointers===this.options.pointers&&Math.abs(n)>this.options.velocity&&Boolean(t.eventType&4)}emit(t){let e=g[t.offsetDirection].toLowerCase();e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}};var Ce=["","start","move","end","cancel","in","out"],z=class extends d{constructor(t={}){super({enable:!0,event:"pinch",threshold:0,pointers:2,...t})}getTouchAction(){return[E]}getEventNames(){return Ce.map(t=>this.options.event+t)}attrTest(t){return super.attrTest(t)&&(Math.abs(t.scale-1)>this.options.threshold||Boolean(this.state&2))}emit(t){if(t.scale!==1){let e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}super.emit(t)}};var Ne=["","start","move","end","cancel"],w=class extends d{constructor(t={}){super({enable:!0,event:"rotate",threshold:0,pointers:2,...t})}getTouchAction(){return[E]}getEventNames(){return Ne.map(t=>this.options.event+t)}attrTest(t){return super.attrTest(t)&&(Math.abs(t.rotation)>this.options.threshold||Boolean(this.state&2))}};var Se=["","up"],A=class extends u{constructor(e={}){super({enable:!0,event:"press",pointers:1,time:251,threshold:9,...e});this._timer=null;this._input=null}getTouchAction(){return[L]}getEventNames(){return Se.map(e=>this.options.event+e)}process(e){let{options:n}=this,r=e.pointers.length===n.pointers,i=e.distance<n.threshold,s=e.deltaTime>n.time;if(this._input=e,!i||!r||e.eventType&12&&!s)this.reset();else if(e.eventType&1)this.reset(),this._timer=setTimeout(()=>{this.state=8,this.tryEmit()},n.time);else if(e.eventType&4)return 8;return 32}reset(){clearTimeout(this._timer)}emit(e){this.state===8&&(e&&e.eventType&4?this.manager.emit(`${this.options.event}up`,e):(this._input.timeStamp=Date.now(),this.manager.emit(this.options.event,this._input)))}};var f=class{constructor(t,e,n){this.element=t,this.callback=e,this.options=n}};var ue=typeof navigator<"u"&&navigator.userAgent?navigator.userAgent.toLowerCase():"",ao=typeof window<"u"?window:global;var je=ue.indexOf("firefox")!==-1,de=4.000244140625,Ue=40,De=.25,k=class extends f{constructor(e,n,r){super(e,n,{enable:!0,...r});this.handleEvent=e=>{if(!this.options.enable)return;let n=e.deltaY;globalThis.WheelEvent&&(je&&e.deltaMode===globalThis.WheelEvent.DOM_DELTA_PIXEL&&(n/=globalThis.devicePixelRatio),e.deltaMode===globalThis.WheelEvent.DOM_DELTA_LINE&&(n*=Ue)),n!==0&&n%de===0&&(n=Math.floor(n/de)),e.shiftKey&&n&&(n=n*De),this.callback({type:"wheel",center:{x:e.clientX,y:e.clientY},delta:-n,srcEvent:e,pointerType:"mouse",target:e.target})};e.addEventListener("wheel",this.handleEvent,{passive:!1})}destroy(){this.element.removeEventListener("wheel",this.handleEvent)}enableEventType(e,n){e==="wheel"&&(this.options.enable=n)}};var fe=["mousedown","mousemove","mouseup","mouseover","mouseout","mouseleave"],V=class extends f{constructor(e,n,r){super(e,n,{enable:!0,...r});this.handleEvent=e=>{this.handleOverEvent(e),this.handleOutEvent(e),this.handleEnterEvent(e),this.handleLeaveEvent(e),this.handleMoveEvent(e)};this.pressed=!1;let{enable:i}=this.options;this.enableMoveEvent=i,this.enableLeaveEvent=i,this.enableEnterEvent=i,this.enableOutEvent=i,this.enableOverEvent=i,fe.forEach(s=>e.addEventListener(s,this.handleEvent))}destroy(){fe.forEach(e=>this.element.removeEventListener(e,this.handleEvent))}enableEventType(e,n){switch(e){case"pointermove":this.enableMoveEvent=n;break;case"pointerover":this.enableOverEvent=n;break;case"pointerout":this.enableOutEvent=n;break;case"pointerenter":this.enableEnterEvent=n;break;case"pointerleave":this.enableLeaveEvent=n;break;default:}}handleOverEvent(e){this.enableOverEvent&&e.type==="mouseover"&&this._emit("pointerover",e)}handleOutEvent(e){this.enableOutEvent&&e.type==="mouseout"&&this._emit("pointerout",e)}handleEnterEvent(e){this.enableEnterEvent&&e.type==="mouseenter"&&this._emit("pointerenter",e)}handleLeaveEvent(e){this.enableLeaveEvent&&e.type==="mouseleave"&&this._emit("pointerleave",e)}handleMoveEvent(e){if(this.enableMoveEvent)switch(e.type){case"mousedown":e.button>=0&&(this.pressed=!0);break;case"mousemove":e.buttons===0&&(this.pressed=!1),this.pressed||this._emit("pointermove",e);break;case"mouseup":this.pressed=!1;break;default:}}_emit(e,n){this.callback({type:e,center:{x:n.clientX,y:n.clientY},srcEvent:n,pointerType:"mouse",target:n.target})}};var ge=["keydown","keyup"],B=class extends f{constructor(e,n,r){super(e,n,{enable:!0,tabIndex:0,...r});this.handleEvent=e=>{let n=e.target||e.srcElement;n.tagName==="INPUT"&&n.type==="text"||n.tagName==="TEXTAREA"||(this.enableDownEvent&&e.type==="keydown"&&this.callback({type:"keydown",srcEvent:e,key:e.key,target:e.target}),this.enableUpEvent&&e.type==="keyup"&&this.callback({type:"keyup",srcEvent:e,key:e.key,target:e.target}))};this.enableDownEvent=this.options.enable,this.enableUpEvent=this.options.enable,e.tabIndex=this.options.tabIndex,e.style.outline="none",ge.forEach(i=>e.addEventListener(i,this.handleEvent))}destroy(){ge.forEach(e=>this.element.removeEventListener(e,this.handleEvent))}enableEventType(e,n){e==="keydown"&&(this.enableDownEvent=n),e==="keyup"&&(this.enableUpEvent=n)}};var X=class extends f{constructor(e,n,r){super(e,n,r);this.handleEvent=e=>{this.options.enable&&this.callback({type:"contextmenu",center:{x:e.clientX,y:e.clientY},srcEvent:e,pointerType:"mouse",target:e.target})};e.addEventListener("contextmenu",this.handleEvent)}destroy(){this.element.removeEventListener("contextmenu",this.handleEvent)}enableEventType(e,n){e==="contextmenu"&&(this.options.enable=n)}};var ke={pointerdown:1,pointermove:2,pointerup:4,mousedown:1,mousemove:2,mouseup:4},Ve=0,Be=1,Xe=2,Ye=1,Fe=2,qe=4;function ve(o){let t=ke[o.srcEvent.type];if(!t)return null;let{buttons:e,button:n}=o.srcEvent,r=!1,i=!1,s=!1;return t===2?(r=Boolean(e&Ye),i=Boolean(e&qe),s=Boolean(e&Fe)):(r=n===Ve,i=n===Be,s=n===Xe),{leftButton:r,middleButton:i,rightButton:s}}function Ee(o,t){let e=o.center;if(!e)return null;let n=t.getBoundingClientRect(),r=n.width/t.offsetWidth||1,i=n.height/t.offsetHeight||1,s={x:(e.x-n.left-t.clientLeft)/r,y:(e.y-n.top-t.clientTop)/i};return{center:e,offsetCenter:s}}var We={srcElement:"root",priority:0},Y=class{constructor(t,e){this.handleEvent=t=>{if(this.isEmpty())return;let e=this._normalizeEvent(t),n=t.srcEvent.target;for(;n&&n!==e.rootElement;){if(this._emit(e,n),e.handled)return;n=n.parentNode}this._emit(e,"root")};this.eventManager=t,this.recognizerName=e,this.handlers=[],this.handlersByElement=new Map,this._active=!1}isEmpty(){return!this._active}add(t,e,n,r=!1,i=!1){let{handlers:s,handlersByElement:l}=this,a={...We,...n},p=l.get(a.srcElement);p||(p=[],l.set(a.srcElement,p));let c={type:t,handler:e,srcElement:a.srcElement,priority:a.priority};r&&(c.once=!0),i&&(c.passive=!0),s.push(c),this._active=this._active||!c.passive;let m=p.length-1;for(;m>=0&&!(p[m].priority>=c.priority);)m--;p.splice(m+1,0,c)}remove(t,e){let{handlers:n,handlersByElement:r}=this;for(let i=n.length-1;i>=0;i--){let s=n[i];if(s.type===t&&s.handler===e){n.splice(i,1);let l=r.get(s.srcElement);l.splice(l.indexOf(s),1),l.length===0&&r.delete(s.srcElement)}}this._active=n.some(i=>!i.passive)}_emit(t,e){let n=this.handlersByElement.get(e);if(n){let r=!1,i=()=>{t.handled=!0},s=()=>{t.handled=!0,r=!0},l=[];for(let a=0;a<n.length;a++){let{type:p,handler:c,once:m}=n[a];if(c({...t,type:p,stopPropagation:i,stopImmediatePropagation:s}),m&&l.push(n[a]),r)break}for(let a=0;a<l.length;a++){let{type:p,handler:c}=l[a];this.remove(p,c)}}}_normalizeEvent(t){let e=this.eventManager.getElement();return{...t,...ve(t),...Ee(t,e),preventDefault:()=>{t.srcEvent.preventDefault()},stopImmediatePropagation:null,stopPropagation:null,handled:!1,rootElement:e}}};function Ke(o){if("recognizer"in o)return o;let t,e=Array.isArray(o)?[...o]:[o];if(typeof e[0]=="function"){let n=e.shift(),r=e.shift()||{};t=new n(r)}else t=e.shift();return{recognizer:t,recognizeWith:typeof e[0]=="string"?[e[0]]:e[0],requireFailure:typeof e[1]=="string"?[e[1]]:e[1]}}var F=class{constructor(t=null,e={}){this._onBasicInput=t=>{this.manager.emit(t.srcEvent.type,t)};this._onOtherEvent=t=>{this.manager.emit(t.type,t)};if(this.options={recognizers:[],events:{},touchAction:"compute",tabIndex:0,cssProps:{},...e},this.events=new Map,this.element=t,!!t){this.manager=new H(t,this.options);for(let n of this.options.recognizers){let{recognizer:r,recognizeWith:i,requireFailure:s}=Ke(n);this.manager.add(r),i&&r.recognizeWith(i),s&&r.requireFailure(s)}this.manager.on("hammer.input",this._onBasicInput),this.wheelInput=new k(t,this._onOtherEvent,{enable:!1}),this.moveInput=new V(t,this._onOtherEvent,{enable:!1}),this.keyInput=new B(t,this._onOtherEvent,{enable:!1,tabIndex:e.tabIndex}),this.contextmenuInput=new X(t,this._onOtherEvent,{enable:!1}),this.on(this.options.events)}}getElement(){return this.element}destroy(){this.element&&(this.wheelInput.destroy(),this.moveInput.destroy(),this.keyInput.destroy(),this.contextmenuInput.destroy(),this.manager.destroy())}on(t,e,n){this._addEventHandler(t,e,n,!1)}once(t,e,n){this._addEventHandler(t,e,n,!0)}watch(t,e,n){this._addEventHandler(t,e,n,!1,!0)}off(t,e){this._removeEventHandler(t,e)}_toggleRecognizer(t,e){let{manager:n}=this;if(!n)return;let r=n.get(t);r&&(r.set({enable:e}),n.touchAction.update()),this.wheelInput?.enableEventType(t,e),this.moveInput?.enableEventType(t,e),this.keyInput?.enableEventType(t,e),this.contextmenuInput?.enableEventType(t,e)}_addEventHandler(t,e,n,r,i){if(typeof t!="string"){n=e;for(let[p,c]of Object.entries(t))this._addEventHandler(p,c,n,r,i);return}let{manager:s,events:l}=this;if(!s)return;let a=l.get(t);if(!a){let p=this._getRecognizerName(t)||t;a=new Y(this,p),l.set(t,a),s&&s.on(t,a.handleEvent)}a.add(t,e,n,r,i),a.isEmpty()||this._toggleRecognizer(a.recognizerName,!0)}_removeEventHandler(t,e){if(typeof t!="string"){for(let[i,s]of Object.entries(t))this._removeEventHandler(i,s);return}let{events:n}=this,r=n.get(t);if(r&&(r.remove(t,e),r.isEmpty())){let{recognizerName:i}=r,s=!1;for(let l of n.values())if(l.recognizerName===i&&!l.isEmpty()){s=!0;break}s||this._toggleRecognizer(i,!1)}}_getRecognizerName(t){return this.manager.recognizers.find(e=>e.getEventNames().includes(t))?.options.event}};return xe(Ge);})(); | ||
var __exports__=(()=>{var W=Object.defineProperty;var ye=Object.getOwnPropertyDescriptor;var Te=Object.getOwnPropertyNames;var be=Object.prototype.hasOwnProperty;var Me=(o,t)=>{for(var e in t)W(o,e,{get:t[e],enumerable:!0})},Re=(o,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Te(t))!be.call(o,r)&&r!==e&&W(o,r,{get:()=>t[r],enumerable:!(n=ye(t,r))||n.enumerable});return o};var xe=o=>Re(W({},"__esModule",{value:!0}),o);var Ge={};Me(Ge,{EventManager:()=>F,InputDirection:()=>g,InputEvent:()=>h,Pan:()=>y,Pinch:()=>z,Press:()=>A,Recognizer:()=>u,Rotate:()=>w,Swipe:()=>P,Tap:()=>_});var h=(r=>(r[r.Start=1]="Start",r[r.Move=2]="Move",r[r.End=4]="End",r[r.Cancel=8]="Cancel",r))(h||{}),g=(a=>(a[a.None=0]="None",a[a.Left=1]="Left",a[a.Right=2]="Right",a[a.Up=4]="Up",a[a.Down=8]="Down",a[a.Horizontal=3]="Horizontal",a[a.Vertical=12]="Vertical",a[a.All=15]="All",a))(g||{});var te="compute",L="auto",b="manipulation",E="none",M="pan-x",R="pan-y";function K(o){if(o.includes(E))return E;let t=o.includes(M),e=o.includes(R);return t&&e?E:t||e?t?M:R:o.includes(b)?b:L}var x=class{constructor(t,e){this.actions="";this.manager=t,this.set(e)}set(t){t===te&&(t=this.compute()),this.manager.element&&(this.manager.element.style.touchAction=t,this.actions=t)}update(){this.set(this.manager.options.touchAction)}compute(){let t=[];for(let e of this.manager.recognizers)e.options.enable&&(t=t.concat(e.getTouchAction()));return K(t.join(" "))}};function T(o){return o.trim().split(/\s+/g)}function C(o,t,e){if(o)for(let n of T(t))o.addEventListener(n,e,!1)}function N(o,t,e){if(o)for(let n of T(t))o.removeEventListener(n,e,!1)}function G(o){return(o.ownerDocument||o).defaultView}function $(o,t){let e=o;for(;e;){if(e===t)return!0;e=e.parentNode}return!1}function S(o){let t=o.length;if(t===1)return{x:Math.round(o[0].clientX),y:Math.round(o[0].clientY)};let e=0,n=0,r=0;for(;r<t;)e+=o[r].clientX,n+=o[r].clientY,r++;return{x:Math.round(e/t),y:Math.round(n/t)}}function J(o){let t=[],e=0;for(;e<o.pointers.length;)t[e]={clientX:Math.round(o.pointers[e].clientX),clientY:Math.round(o.pointers[e].clientY)},e++;return{timeStamp:Date.now(),pointers:t,center:S(t),deltaX:o.deltaX,deltaY:o.deltaY}}function j(o,t){let e=t.x-o.x,n=t.y-o.y;return Math.sqrt(e*e+n*n)}function Q(o,t){let e=t.clientX-o.clientX,n=t.clientY-o.clientY;return Math.sqrt(e*e+n*n)}function ne(o,t){let e=t.x-o.x,n=t.y-o.y;return Math.atan2(n,e)*180/Math.PI}function Z(o,t){let e=t.clientX-o.clientX,n=t.clientY-o.clientY;return Math.atan2(n,e)*180/Math.PI}function U(o,t){return o===t?0:Math.abs(o)>=Math.abs(t)?o<0?1:2:t<0?4:8}function oe(o,t){let e=t.center,n=o.offsetDelta,r=o.prevDelta,i=o.prevInput;return(t.eventType===1||i?.eventType===4)&&(r=o.prevDelta={x:i?.deltaX||0,y:i?.deltaY||0},n=o.offsetDelta={x:e.x,y:e.y}),{deltaX:r.x+(e.x-n.x),deltaY:r.y+(e.y-n.y)}}function D(o,t,e){return{x:t/o||0,y:e/o||0}}function re(o,t){return Q(t[0],t[1])/Q(o[0],o[1])}function ie(o,t){return Z(t[1],t[0])-Z(o[1],o[0])}function se(o,t){let e=o.lastInterval||t,n=t.timeStamp-e.timeStamp,r,i,s,l;if(t.eventType!==8&&(n>25||e.velocity===void 0)){let a=t.deltaX-e.deltaX,p=t.deltaY-e.deltaY,c=D(n,a,p);i=c.x,s=c.y,r=Math.abs(c.x)>Math.abs(c.y)?c.x:c.y,l=U(a,p),o.lastInterval=t}else r=e.velocity,i=e.velocityX,s=e.velocityY,l=e.direction;t.velocity=r,t.velocityX=i,t.velocityY=s,t.direction=l}function ae(o,t){let{session:e}=o,{pointers:n}=t,{length:r}=n;e.firstInput||(e.firstInput=J(t)),r>1&&!e.firstMultiple?e.firstMultiple=J(t):r===1&&(e.firstMultiple=!1);let{firstInput:i,firstMultiple:s}=e,l=s?s.center:i.center,a=t.center=S(n);t.timeStamp=Date.now(),t.deltaTime=t.timeStamp-i.timeStamp,t.angle=ne(l,a),t.distance=j(l,a);let{deltaX:p,deltaY:c}=oe(e,t);t.deltaX=p,t.deltaY=c,t.offsetDirection=U(t.deltaX,t.deltaY);let m=D(t.deltaTime,t.deltaX,t.deltaY);t.overallVelocityX=m.x,t.overallVelocityY=m.y,t.overallVelocity=Math.abs(m.x)>Math.abs(m.y)?m.x:m.y,t.scale=s?re(s.pointers,n):1,t.rotation=s?ie(s.pointers,n):0,t.maxPointers=e.prevInput?t.pointers.length>e.prevInput.maxPointers?t.pointers.length:e.prevInput.maxPointers:t.pointers.length;let q=o.element;return $(t.srcEvent.target,q)&&(q=t.srcEvent.target),t.target=q,se(e,t),t}function le(o,t,e){let n=e.pointers.length,r=e.changedPointers.length,i=t&1&&n-r===0,s=t&12&&n-r===0;e.isFirst=Boolean(i),e.isFinal=Boolean(s),i&&(o.session={}),e.eventType=t;let l=ae(o,e);o.emit("hammer.input",l),o.recognize(l),o.session.prevInput=l}var I=class{constructor(t){this.evEl="";this.evWin="";this.evTarget="";this.domHandler=t=>{this.manager.options.enable&&this.handler(t)};this.manager=t,this.element=t.element,this.target=t.options.inputTarget||t.element}callback(t,e){le(this.manager,t,e)}init(){C(this.element,this.evEl,this.domHandler),C(this.target,this.evTarget,this.domHandler),C(G(this.element),this.evWin,this.domHandler)}destroy(){N(this.element,this.evEl,this.domHandler),N(this.target,this.evTarget,this.domHandler),N(G(this.element),this.evWin,this.domHandler)}};var Oe={pointerdown:1,pointermove:2,pointerup:4,pointercancel:8,pointerout:8},He="pointerdown",_e="pointermove pointerup pointercancel",O=class extends I{constructor(e){super(e);this.evEl=He,this.evWin=_e,this.store=this.manager.session.pointerEvents=[],this.init()}handler(e){let{store:n}=this,r=!1,i=Oe[e.type],s=e.pointerType,l=s==="touch",a=n.findIndex(p=>p.pointerId===e.pointerId);i&1&&(e.buttons||l)?a<0&&(n.push(e),a=n.length-1):i&12&&(r=!0),!(a<0)&&(n[a]=e,this.callback(i,{pointers:n,changedPointers:[e],eventType:i,pointerType:s,srcEvent:e}),r&&n.splice(a,1))}};var Pe=["","webkit","Moz","MS","ms","o"];function pe(o,t){let e=t[0].toUpperCase()+t.slice(1);for(let n of Pe){let r=n?n+e:t;if(r in o)return r}}var ze=1,ce=2,me={touchAction:"compute",enable:!0,inputTarget:null,cssProps:{userSelect:"none",userDrag:"none",touchCallout:"none",tapHighlightColor:"rgba(0,0,0,0)"}},H=class{constructor(t,e){this.options={...me,...e,cssProps:{...me.cssProps,...e.cssProps},inputTarget:e.inputTarget||t},this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=t,this.input=new O(this),this.touchAction=new x(this,this.options.touchAction),this.toggleCssProps(!0)}set(t){return Object.assign(this.options,t),t.touchAction&&this.touchAction.update(),t.inputTarget&&(this.input.destroy(),this.input.target=t.inputTarget,this.input.init()),this}stop(t){this.session.stopped=t?ce:ze}recognize(t){let{session:e}=this;if(e.stopped)return;this.session.prevented&&t.srcEvent.preventDefault();let n,{recognizers:r}=this,{curRecognizer:i}=e;(!i||i&&i.state&8)&&(i=e.curRecognizer=null);let s=0;for(;s<r.length;)n=r[s],e.stopped!==ce&&(!i||n===i||n.canRecognizeWith(i))?n.recognize(t):n.reset(),!i&&n.state&14&&(i=e.curRecognizer=n),s++}get(t){let{recognizers:e}=this;for(let n=0;n<e.length;n++)if(e[n].options.event===t)return e[n];return null}add(t){if(Array.isArray(t)){for(let n of t)this.add(n);return this}let e=this.get(t.options.event);return e&&this.remove(e),this.recognizers.push(t),t.manager=this,this.touchAction.update(),t}remove(t){if(Array.isArray(t)){for(let n of t)this.remove(n);return this}let e=typeof t=="string"?this.get(t):t;if(e){let{recognizers:n}=this,r=n.indexOf(e);r!==-1&&(n.splice(r,1),this.touchAction.update())}return this}on(t,e){if(!t||!e)return;let{handlers:n}=this;for(let r of T(t))n[r]=n[r]||[],n[r].push(e)}off(t,e){if(!t)return;let{handlers:n}=this;for(let r of T(t))e?n[r]&&n[r].splice(n[r].indexOf(e),1):delete n[r]}emit(t,e){let n=this.handlers[t]&&this.handlers[t].slice();if(!n||!n.length)return;let r=e;r.type=t,r.preventDefault=function(){e.srcEvent.preventDefault()};let i=0;for(;i<n.length;)n[i](r),i++}destroy(){this.toggleCssProps(!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}toggleCssProps(t){let{element:e}=this;if(e){for(let[n,r]of Object.entries(this.options.cssProps)){let i=pe(e.style,n);t?(this.oldCssProps[i]=e.style[i],e.style[i]=r):e.style[i]=this.oldCssProps[i]||""}t||(this.oldCssProps={})}}};var we=1;function he(){return we++}function ee(o){return o&16?"cancel":o&8?"end":o&4?"move":o&2?"start":""}var u=class{constructor(t){this.options=t,this.id=he(),this.state=1,this.simultaneous={},this.requireFail=[]}set(t){return Object.assign(this.options,t),this.manager.touchAction.update(),this}recognizeWith(t){if(Array.isArray(t)){for(let r of t)this.recognizeWith(r);return this}let e;if(typeof t=="string"){if(e=this.manager.get(t),!e)throw new Error(`Cannot find recognizer ${t}`)}else e=t;let{simultaneous:n}=this;return n[e.id]||(n[e.id]=e,e.recognizeWith(this)),this}dropRecognizeWith(t){if(Array.isArray(t)){for(let n of t)this.dropRecognizeWith(n);return this}let e;return typeof t=="string"?e=this.manager.get(t):e=t,e&&delete this.simultaneous[e.id],this}requireFailure(t){if(Array.isArray(t)){for(let r of t)this.requireFailure(r);return this}let e;if(typeof t=="string"){if(e=this.manager.get(t),!e)throw new Error(`Cannot find recognizer ${t}`)}else e=t;let{requireFail:n}=this;return n.indexOf(e)===-1&&(n.push(e),e.requireFailure(this)),this}dropRequireFailure(t){if(Array.isArray(t)){for(let n of t)this.dropRequireFailure(n);return this}let e;if(typeof t=="string"?e=this.manager.get(t):e=t,e){let n=this.requireFail.indexOf(e);n>-1&&this.requireFail.splice(n,1)}return this}hasRequireFailures(){return Boolean(this.requireFail.find(t=>t.options.enable))}canRecognizeWith(t){return Boolean(this.simultaneous[t.id])}emit(t){if(!t)return;let{state:e}=this;e<8&&this.manager.emit(this.options.event+ee(e),t),this.manager.emit(this.options.event,t),t.additionalEvent&&this.manager.emit(t.additionalEvent,t),e>=8&&this.manager.emit(this.options.event+ee(e),t)}tryEmit(t){this.canEmit()?this.emit(t):this.state=32}canEmit(){let t=0;for(;t<this.requireFail.length;){if(!(this.requireFail[t].state&33))return!1;t++}return!0}recognize(t){let e={...t};if(!this.options.enable){this.reset(),this.state=32;return}this.state&56&&(this.state=1),this.state=this.process(e),this.state&30&&this.tryEmit(e)}getEventNames(){return[this.options.event]}reset(){}};var d=class extends u{attrTest(t){let e=this.options.pointers;return e===0||t.pointers.length===e}process(t){let{state:e}=this,{eventType:n}=t,r=e&6,i=this.attrTest(t);return r&&(n&8||!i)?e|16:r||i?n&4?e|8:e&2?e|4:2:32}};var _=class extends u{constructor(e={}){super({enable:!0,event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10,...e});this.pTime=null;this.pCenter=null;this._timer=null;this._input=null;this.count=0}getTouchAction(){return[b]}process(e){let{options:n}=this,r=e.pointers.length===n.pointers,i=e.distance<n.threshold,s=e.deltaTime<n.time;if(this.reset(),e.eventType&1&&this.count===0)return this.failTimeout();if(i&&s&&r){if(e.eventType!==4)return this.failTimeout();let l=this.pTime?e.timeStamp-this.pTime<n.interval:!0,a=!this.pCenter||j(this.pCenter,e.center)<n.posThreshold;if(this.pTime=e.timeStamp,this.pCenter=e.center,!a||!l?this.count=1:this.count+=1,this._input=e,this.count%n.taps===0)return this.hasRequireFailures()?(this._timer=setTimeout(()=>{this.state=8,this.tryEmit(this._input)},n.interval),2):8}return 32}failTimeout(){return this._timer=setTimeout(()=>{this.state=32},this.options.interval),32}reset(){clearTimeout(this._timer)}emit(e){this.state===8&&(e.tapCount=this.count,this.manager.emit(this.options.event,e))}};var Ae=["","start","move","end","cancel","up","down","left","right"],y=class extends d{constructor(e={}){super({enable:!0,pointers:1,event:"pan",threshold:10,direction:15,...e});this.pX=null,this.pY=null}getTouchAction(){let{options:{direction:e}}=this,n=[];return e&3&&n.push(R),e&12&&n.push(M),n}getEventNames(){return Ae.map(e=>this.options.event+e)}directionTest(e){let{options:n}=this,r=!0,{distance:i}=e,{direction:s}=e,l=e.deltaX,a=e.deltaY;return s&n.direction||(n.direction&3?(s=l===0?0:l<0?1:2,r=l!==this.pX,i=Math.abs(e.deltaX)):(s=a===0?0:a<0?4:8,r=a!==this.pY,i=Math.abs(e.deltaY))),e.direction=s,r&&i>n.threshold&&Boolean(s&n.direction)}attrTest(e){return super.attrTest(e)&&(Boolean(this.state&2)||!(this.state&2)&&this.directionTest(e))}emit(e){this.pX=e.deltaX,this.pY=e.deltaY;let n=g[e.direction].toLowerCase();n&&(e.additionalEvent=this.options.event+n),super.emit(e)}};var Le=["","up","down","left","right"],P=class extends d{constructor(t={}){super({enable:!0,event:"swipe",threshold:10,velocity:.3,direction:15,pointers:1,...t})}getTouchAction(){return y.prototype.getTouchAction.call(this)}getEventNames(){return Le.map(t=>this.options.event+t)}attrTest(t){let{direction:e}=this.options,n=0;return e&15?n=t.overallVelocity:e&3?n=t.overallVelocityX:e&12&&(n=t.overallVelocityY),super.attrTest(t)&&Boolean(e&t.offsetDirection)&&t.distance>this.options.threshold&&t.maxPointers===this.options.pointers&&Math.abs(n)>this.options.velocity&&Boolean(t.eventType&4)}emit(t){let e=g[t.offsetDirection].toLowerCase();e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}};var Ce=["","start","move","end","cancel","in","out"],z=class extends d{constructor(t={}){super({enable:!0,event:"pinch",threshold:0,pointers:2,...t})}getTouchAction(){return[E]}getEventNames(){return Ce.map(t=>this.options.event+t)}attrTest(t){return super.attrTest(t)&&(Math.abs(t.scale-1)>this.options.threshold||Boolean(this.state&2))}emit(t){if(t.scale!==1){let e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}super.emit(t)}};var Ne=["","start","move","end","cancel"],w=class extends d{constructor(t={}){super({enable:!0,event:"rotate",threshold:0,pointers:2,...t})}getTouchAction(){return[E]}getEventNames(){return Ne.map(t=>this.options.event+t)}attrTest(t){return super.attrTest(t)&&(Math.abs(t.rotation)>this.options.threshold||Boolean(this.state&2))}};var Se=["","up"],A=class extends u{constructor(e={}){super({enable:!0,event:"press",pointers:1,time:251,threshold:9,...e});this._timer=null;this._input=null}getTouchAction(){return[L]}getEventNames(){return Se.map(e=>this.options.event+e)}process(e){let{options:n}=this,r=e.pointers.length===n.pointers,i=e.distance<n.threshold,s=e.deltaTime>n.time;if(this._input=e,!i||!r||e.eventType&12&&!s)this.reset();else if(e.eventType&1)this.reset(),this._timer=setTimeout(()=>{this.state=8,this.tryEmit()},n.time);else if(e.eventType&4)return 8;return 32}reset(){clearTimeout(this._timer)}emit(e){this.state===8&&(e&&e.eventType&4?this.manager.emit(`${this.options.event}up`,e):(this._input.timeStamp=Date.now(),this.manager.emit(this.options.event,this._input)))}};var f=class{constructor(t,e,n){this.element=t,this.callback=e,this.options=n}};var ue=typeof navigator<"u"&&navigator.userAgent?navigator.userAgent.toLowerCase():"",ao=typeof window<"u"?window:global;var je=ue.indexOf("firefox")!==-1,de=4.000244140625,Ue=40,De=.25,k=class extends f{constructor(e,n,r){super(e,n,{enable:!0,...r});this.handleEvent=e=>{if(!this.options.enable)return;let n=e.deltaY;globalThis.WheelEvent&&(je&&e.deltaMode===globalThis.WheelEvent.DOM_DELTA_PIXEL&&(n/=globalThis.devicePixelRatio),e.deltaMode===globalThis.WheelEvent.DOM_DELTA_LINE&&(n*=Ue)),n!==0&&n%de===0&&(n=Math.floor(n/de)),e.shiftKey&&n&&(n=n*De),this.callback({type:"wheel",center:{x:e.clientX,y:e.clientY},delta:-n,srcEvent:e,pointerType:"mouse",target:e.target})};e.addEventListener("wheel",this.handleEvent,{passive:!1})}destroy(){this.element.removeEventListener("wheel",this.handleEvent)}enableEventType(e,n){e==="wheel"&&(this.options.enable=n)}};var fe=["mousedown","mousemove","mouseup","mouseover","mouseout","mouseleave"],V=class extends f{constructor(e,n,r){super(e,n,{enable:!0,...r});this.handleEvent=e=>{this.handleOverEvent(e),this.handleOutEvent(e),this.handleEnterEvent(e),this.handleLeaveEvent(e),this.handleMoveEvent(e)};this.pressed=!1;let{enable:i}=this.options;this.enableMoveEvent=i,this.enableLeaveEvent=i,this.enableEnterEvent=i,this.enableOutEvent=i,this.enableOverEvent=i,fe.forEach(s=>e.addEventListener(s,this.handleEvent))}destroy(){fe.forEach(e=>this.element.removeEventListener(e,this.handleEvent))}enableEventType(e,n){switch(e){case"pointermove":this.enableMoveEvent=n;break;case"pointerover":this.enableOverEvent=n;break;case"pointerout":this.enableOutEvent=n;break;case"pointerenter":this.enableEnterEvent=n;break;case"pointerleave":this.enableLeaveEvent=n;break;default:}}handleOverEvent(e){this.enableOverEvent&&e.type==="mouseover"&&this._emit("pointerover",e)}handleOutEvent(e){this.enableOutEvent&&e.type==="mouseout"&&this._emit("pointerout",e)}handleEnterEvent(e){this.enableEnterEvent&&e.type==="mouseenter"&&this._emit("pointerenter",e)}handleLeaveEvent(e){this.enableLeaveEvent&&e.type==="mouseleave"&&this._emit("pointerleave",e)}handleMoveEvent(e){if(this.enableMoveEvent)switch(e.type){case"mousedown":e.button>=0&&(this.pressed=!0);break;case"mousemove":e.buttons===0&&(this.pressed=!1),this.pressed||this._emit("pointermove",e);break;case"mouseup":this.pressed=!1;break;default:}}_emit(e,n){this.callback({type:e,center:{x:n.clientX,y:n.clientY},srcEvent:n,pointerType:"mouse",target:n.target})}};var ge=["keydown","keyup"],B=class extends f{constructor(e,n,r){super(e,n,{enable:!0,tabIndex:0,...r});this.handleEvent=e=>{let n=e.target||e.srcElement;n.tagName==="INPUT"&&n.type==="text"||n.tagName==="TEXTAREA"||(this.enableDownEvent&&e.type==="keydown"&&this.callback({type:"keydown",srcEvent:e,key:e.key,target:e.target}),this.enableUpEvent&&e.type==="keyup"&&this.callback({type:"keyup",srcEvent:e,key:e.key,target:e.target}))};this.enableDownEvent=this.options.enable,this.enableUpEvent=this.options.enable,e.tabIndex=this.options.tabIndex,e.style.outline="none",ge.forEach(i=>e.addEventListener(i,this.handleEvent))}destroy(){ge.forEach(e=>this.element.removeEventListener(e,this.handleEvent))}enableEventType(e,n){e==="keydown"&&(this.enableDownEvent=n),e==="keyup"&&(this.enableUpEvent=n)}};var X=class extends f{constructor(e,n,r){super(e,n,r);this.handleEvent=e=>{this.options.enable&&this.callback({type:"contextmenu",center:{x:e.clientX,y:e.clientY},srcEvent:e,pointerType:"mouse",target:e.target})};e.addEventListener("contextmenu",this.handleEvent)}destroy(){this.element.removeEventListener("contextmenu",this.handleEvent)}enableEventType(e,n){e==="contextmenu"&&(this.options.enable=n)}};var ke={pointerdown:1,pointermove:2,pointerup:4,mousedown:1,mousemove:2,mouseup:4},Ve=0,Be=1,Xe=2,Ye=1,Fe=2,qe=4;function ve(o){let t=ke[o.srcEvent.type];if(!t)return null;let{buttons:e,button:n}=o.srcEvent,r=!1,i=!1,s=!1;return t===2?(r=Boolean(e&Ye),i=Boolean(e&qe),s=Boolean(e&Fe)):(r=n===Ve,i=n===Be,s=n===Xe),{leftButton:r,middleButton:i,rightButton:s}}function Ee(o,t){let e=o.center;if(!e)return null;let n=t.getBoundingClientRect(),r=n.width/t.offsetWidth||1,i=n.height/t.offsetHeight||1,s={x:(e.x-n.left-t.clientLeft)/r,y:(e.y-n.top-t.clientTop)/i};return{center:e,offsetCenter:s}}var We={srcElement:"root",priority:0},Y=class{constructor(t,e){this.handleEvent=t=>{if(this.isEmpty())return;let e=this._normalizeEvent(t),n=t.srcEvent.target;for(;n&&n!==e.rootElement;){if(this._emit(e,n),e.handled)return;n=n.parentNode}this._emit(e,"root")};this.eventManager=t,this.recognizerName=e,this.handlers=[],this.handlersByElement=new Map,this._active=!1}isEmpty(){return!this._active}add(t,e,n,r=!1,i=!1){let{handlers:s,handlersByElement:l}=this,a={...We,...n},p=l.get(a.srcElement);p||(p=[],l.set(a.srcElement,p));let c={type:t,handler:e,srcElement:a.srcElement,priority:a.priority};r&&(c.once=!0),i&&(c.passive=!0),s.push(c),this._active=this._active||!c.passive;let m=p.length-1;for(;m>=0&&!(p[m].priority>=c.priority);)m--;p.splice(m+1,0,c)}remove(t,e){let{handlers:n,handlersByElement:r}=this;for(let i=n.length-1;i>=0;i--){let s=n[i];if(s.type===t&&s.handler===e){n.splice(i,1);let l=r.get(s.srcElement);l.splice(l.indexOf(s),1),l.length===0&&r.delete(s.srcElement)}}this._active=n.some(i=>!i.passive)}_emit(t,e){let n=this.handlersByElement.get(e);if(n){let r=!1,i=()=>{t.handled=!0},s=()=>{t.handled=!0,r=!0},l=[];for(let a=0;a<n.length;a++){let{type:p,handler:c,once:m}=n[a];if(c({...t,type:p,stopPropagation:i,stopImmediatePropagation:s}),m&&l.push(n[a]),r)break}for(let a=0;a<l.length;a++){let{type:p,handler:c}=l[a];this.remove(p,c)}}}_normalizeEvent(t){let e=this.eventManager.getElement();return{...t,...ve(t),...Ee(t,e),preventDefault:()=>{t.srcEvent.preventDefault()},stopImmediatePropagation:null,stopPropagation:null,handled:!1,rootElement:e}}};function Ke(o){if("recognizer"in o)return o;let t,e=Array.isArray(o)?[...o]:[o];if(typeof e[0]=="function"){let n=e.shift(),r=e.shift()||{};t=new n(r)}else t=e.shift();return{recognizer:t,recognizeWith:typeof e[0]=="string"?[e[0]]:e[0],requireFailure:typeof e[1]=="string"?[e[1]]:e[1]}}var F=class{constructor(t=null,e={}){this._onBasicInput=t=>{this.manager.emit(t.srcEvent.type,t)};this._onOtherEvent=t=>{this.manager.emit(t.type,t)};if(this.options={recognizers:[],events:{},touchAction:"compute",tabIndex:0,cssProps:{},...e},this.events=new Map,this.element=t,!!t){this.manager=new H(t,this.options);for(let n of this.options.recognizers){let{recognizer:r,recognizeWith:i,requireFailure:s}=Ke(n);this.manager.add(r),i&&r.recognizeWith(i),s&&r.requireFailure(s)}this.manager.on("hammer.input",this._onBasicInput),this.wheelInput=new k(t,this._onOtherEvent,{enable:!1}),this.moveInput=new V(t,this._onOtherEvent,{enable:!1}),this.keyInput=new B(t,this._onOtherEvent,{enable:!1,tabIndex:e.tabIndex}),this.contextmenuInput=new X(t,this._onOtherEvent,{enable:!1}),this.on(this.options.events)}}getElement(){return this.element}destroy(){this.element&&(this.wheelInput.destroy(),this.moveInput.destroy(),this.keyInput.destroy(),this.contextmenuInput.destroy(),this.manager.destroy())}on(t,e,n){this._addEventHandler(t,e,n,!1)}once(t,e,n){this._addEventHandler(t,e,n,!0)}watch(t,e,n){this._addEventHandler(t,e,n,!1,!0)}off(t,e){this._removeEventHandler(t,e)}_toggleRecognizer(t,e){let{manager:n}=this;if(!n)return;let r=n.get(t);r&&(r.set({enable:e}),n.touchAction.update()),this.wheelInput?.enableEventType(t,e),this.moveInput?.enableEventType(t,e),this.keyInput?.enableEventType(t,e),this.contextmenuInput?.enableEventType(t,e)}_addEventHandler(t,e,n,r,i){if(typeof t!="string"){n=e;for(let[p,c]of Object.entries(t))this._addEventHandler(p,c,n,r,i);return}let{manager:s,events:l}=this;if(!s)return;let a=l.get(t);if(!a){let p=this._getRecognizerName(t)||t;a=new Y(this,p),l.set(t,a),s&&s.on(t,a.handleEvent)}a.add(t,e,n,r,i),a.isEmpty()||this._toggleRecognizer(a.recognizerName,!0)}_removeEventHandler(t,e){if(typeof t!="string"){for(let[i,s]of Object.entries(t))this._removeEventHandler(i,s);return}let{events:n}=this,r=n.get(t);if(r&&(r.remove(t,e),r.isEmpty())){let{recognizerName:i}=r,s=!1;for(let l of n.values())if(l.recognizerName===i&&!l.isEmpty()){s=!0;break}s||this._toggleRecognizer(i,!1)}}_getRecognizerName(t){return this.manager.recognizers.find(e=>e.getEventNames().includes(t))?.options.event}};return xe(Ge);})(); | ||
return __exports__; | ||
}); |
@@ -5,8 +5,8 @@ /** | ||
export default function hasParent(node, parent) { | ||
let ancester = node; | ||
while (ancester) { | ||
if (ancester === parent) { | ||
let ancestor = node; | ||
while (ancestor) { | ||
if (ancestor === parent) { | ||
return true; | ||
} | ||
ancester = node.parentNode; | ||
ancestor = ancestor.parentNode; | ||
} | ||
@@ -13,0 +13,0 @@ return false; |
{ | ||
"name": "mjolnir.js", | ||
"description": "An Event Manager", | ||
"version": "3.0.0-alpha.4", | ||
"version": "3.0.0-beta.1", | ||
"type": "module", | ||
@@ -6,0 +6,0 @@ "keywords": [ |
@@ -5,10 +5,10 @@ /** | ||
export default function hasParent(node: HTMLElement, parent: HTMLElement): boolean { | ||
let ancester: Node | null = node; | ||
while (ancester) { | ||
if (ancester === parent) { | ||
let ancestor: Node | null = node; | ||
while (ancestor) { | ||
if (ancestor === parent) { | ||
return true; | ||
} | ||
ancester = node.parentNode; | ||
ancestor = ancestor.parentNode; | ||
} | ||
return false; | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
520303