5 lines
4.3 KiB
JavaScript
5 lines
4.3 KiB
JavaScript
/* interact.js 1.10.27 | https://raw.github.com/taye/interact.js/main/LICENSE */
|
|
|
|
import browser from"../utils/browser.prod.js";import domObjects from"../utils/domObjects.prod.js";import{nodeContains}from"../utils/domUtils.prod.js";import*as pointerUtils from"../utils/pointerUtils.prod.js";import interactablePreventDefault from"./interactablePreventDefault.prod.js";import{Interaction}from"./Interaction.prod.js";import finder from"./interactionFinder.prod.js";import"../utils/is.prod.js";import"../utils/window.prod.js";import"../utils/arr.prod.js";import"../utils/extend.prod.js";import"../utils/hypot.prod.js";import"../utils/misc.prod.js";import"../utils/rect.prod.js";import"./InteractEvent.prod.js";import"../utils/getOriginXY.prod.js";import"./BaseEvent.prod.js";import"./options.prod.js";import"./PointerInfo.prod.js";const methodNames=["pointerDown","pointerMove","pointerUp","updatePointer","removePointer","windowBlur"];function install(e){const t={};for(const o of methodNames)t[o]=doOnInteractions(o,e);const o=browser.pEventTypes;let n;function r(){for(const t of e.interactions.list)if(t.pointerIsDown&&"touch"===t.pointerType&&!t._interacting)for(const o of t.pointers)e.documents.some((e=>{let{doc:t}=e;return nodeContains(t,o.downTarget)}))||t.removePointer(o.pointer,o.event)}n=domObjects.PointerEvent?[{type:o.down,listener:r},{type:o.down,listener:t.pointerDown},{type:o.move,listener:t.pointerMove},{type:o.up,listener:t.pointerUp},{type:o.cancel,listener:t.pointerUp}]:[{type:"mousedown",listener:t.pointerDown},{type:"mousemove",listener:t.pointerMove},{type:"mouseup",listener:t.pointerUp},{type:"touchstart",listener:r},{type:"touchstart",listener:t.pointerDown},{type:"touchmove",listener:t.pointerMove},{type:"touchend",listener:t.pointerUp},{type:"touchcancel",listener:t.pointerUp}],n.push({type:"blur",listener(t){for(const o of e.interactions.list)o.documentBlur(t)}}),e.prevTouchTime=0,e.Interaction=class extends Interaction{get pointerMoveTolerance(){return e.interactions.pointerMoveTolerance}set pointerMoveTolerance(t){e.interactions.pointerMoveTolerance=t}_now(){return e.now()}},e.interactions={list:[],new(t){t.scopeFire=(t,o)=>e.fire(t,o);const o=new e.Interaction(t);return e.interactions.list.push(o),o},listeners:t,docEvents:n,pointerMoveTolerance:1},e.usePlugin(interactablePreventDefault)}function doOnInteractions(e,t){return function(o){const n=t.interactions.list,r=pointerUtils.getPointerType(o),[i,s]=pointerUtils.getEventTargets(o),p=[];if(/^touch/.test(o.type)){t.prevTouchTime=t.now();for(const e of o.changedTouches){const n=e,c={pointer:n,pointerId:pointerUtils.getPointerId(n),pointerType:r,eventType:o.type,eventTarget:i,curEventTarget:s,scope:t},a=getInteraction(c);p.push([c.pointer,c.eventTarget,c.curEventTarget,a])}}else{let e=!1;if(!browser.supportsPointerEvent&&/mouse/.test(o.type)){for(let t=0;t<n.length&&!e;t++)e="mouse"!==n[t].pointerType&&n[t].pointerIsDown;e=e||t.now()-t.prevTouchTime<500||0===o.timeStamp}if(!e){const e={pointer:o,pointerId:pointerUtils.getPointerId(o),pointerType:r,eventType:o.type,curEventTarget:s,eventTarget:i,scope:t},n=getInteraction(e);p.push([e.pointer,e.eventTarget,e.curEventTarget,n])}}for(const[t,n,r,i]of p)i[e](t,o,n,r)}}function getInteraction(e){const{pointerType:t,scope:o}=e,n={interaction:finder.search(e),searchDetails:e};return o.fire("interactions:find",n),n.interaction||o.interactions.new({pointerType:t})}function onDocSignal(e,t){let{doc:o,scope:n,options:r}=e;const{interactions:{docEvents:i},events:s}=n,p=s[t];n.browser.isIOS&&!r.events&&(r.events={passive:!1});for(const e in s.delegatedEvents)p(o,e,s.delegateListener),p(o,e,s.delegateUseCapture,!0);const c=r&&r.events;for(const{type:e,listener:t}of i)p(o,e,t,c)}const interactions={id:"core/interactions",install:install,listeners:{"scope:add-document"(e){return onDocSignal(e,"add")},"scope:remove-document"(e){return onDocSignal(e,"remove")},"interactable:unset"(e,t){let{interactable:o}=e;for(let e=t.interactions.list.length-1;e>=0;e--){const n=t.interactions.list[e];n.interactable===o&&(n.stop(),t.fire("interactions:destroy",{interaction:n}),n.destroy(),t.interactions.list.length>2&&t.interactions.list.splice(e,1))}}},onDocSignal:onDocSignal,doOnInteractions:doOnInteractions,methodNames:methodNames};export{interactions as default};
|
|
//# sourceMappingURL=interactions.prod.js.map
|