2 lines
3.5 KiB
JavaScript
2 lines
3.5 KiB
JavaScript
import{Scope as e,SignalArgs as t}from"./scope.prod.js";import o from"../utils/browser.prod.js";import n from"../utils/domObjects.prod.js";import{nodeContains as r}from"../utils/domUtils.prod.js";import*as i from"../utils/pointerUtils.prod.js";import s from"./Interaction.prod.js";import p from"./interactablePreventDefault.prod.js";import c from"./interactionFinder.prod.js";const a=["pointerDown","pointerMove","pointerUp","updatePointer","removePointer","windowBlur"];function l(e,t){return n=>{const r=t.interactions.list,s=i.getPointerType(n),[p,c]=i.getEventTargets(n),a=[];if(/^touch/.test(n.type)){t.prevTouchTime=t.now();for(const e of n.changedTouches){const o=e,r={pointer:o,pointerId:i.getPointerId(o),pointerType:s,eventType:n.type,eventTarget:p,curEventTarget:c,scope:t},l=u(r);a.push([r.pointer,r.eventTarget,r.curEventTarget,l])}}else{let e=!1;if(!o.supportsPointerEvent&&/mouse/.test(n.type)){for(let t=0;t<r.length&&!e;t++)e="mouse"!==r[t].pointerType&&r[t].pointerIsDown;e=e||t.now()-t.prevTouchTime<500||0===n.timeStamp}if(!e){const e={pointer:n,pointerId:i.getPointerId(n),pointerType:s,eventType:n.type,curEventTarget:c,eventTarget:p,scope:t},o=u(e);a.push([e.pointer,e.eventTarget,e.curEventTarget,o])}}for(const[t,o,r,i]of a)i[e](t,n,o,r)}}function u(e){const{pointerType:t,scope:o}=e,n={interaction:c.search(e),searchDetails:e};return o.fire("interactions:find",n),n.interaction||o.interactions.new({pointerType:t})}function d({doc:e,scope:t,options:o},n){const{interactions:{docEvents:r},events:i}=t,s=i[n];t.browser.isIOS&&!o.events&&(o.events={passive:!1});for(const t in i.delegatedEvents)s(e,t,i.delegateListener),s(e,t,i.delegateUseCapture,!0);const p=o&&o.events;for(const{type:t,listener:o}of r)s(e,t,o,p)}const v={id:"core/interactions",install(e){const t={};for(const o of a)t[o]=l(o,e);const i=o.pEventTypes;let c;function u(){for(const t of e.interactions.list)if(t.pointerIsDown&&"touch"===t.pointerType&&!t._interacting)for(const o of t.pointers)e.documents.some((({doc:e})=>r(e,o.downTarget)))||t.removePointer(o.pointer,o.event)}c=n.PointerEvent?[{type:i.down,listener:u},{type:i.down,listener:t.pointerDown},{type:i.move,listener:t.pointerMove},{type:i.up,listener:t.pointerUp},{type:i.cancel,listener:t.pointerUp}]:[{type:"mousedown",listener:t.pointerDown},{type:"mousemove",listener:t.pointerMove},{type:"mouseup",listener:t.pointerUp},{type:"touchstart",listener:u},{type:"touchstart",listener:t.pointerDown},{type:"touchmove",listener:t.pointerMove},{type:"touchend",listener:t.pointerUp},{type:"touchcancel",listener:t.pointerUp}],c.push({type:"blur",listener(t){for(const o of e.interactions.list)o.documentBlur(t)}}),e.prevTouchTime=0,e.Interaction=class extends s{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:c,pointerMoveTolerance:1},e.usePlugin(p)},listeners:{"scope:add-document":e=>d(e,"add"),"scope:remove-document":e=>d(e,"remove"),"interactable:unset"({interactable:e},t){for(let o=t.interactions.list.length-1;o>=0;o--){const n=t.interactions.list[o];n.interactable===e&&(n.stop(),t.fire("interactions:destroy",{interaction:n}),n.destroy(),t.interactions.list.length>2&&t.interactions.list.splice(o,1))}}},onDocSignal:d,doOnInteractions:l,methodNames:a};export default v;
|
|
//# sourceMappingURL=interactions.prod.js.map
|