5 lines
3.3 KiB
JavaScript
5 lines
3.3 KiB
JavaScript
/* interact.js 1.10.27 | https://raw.github.com/taye/interact.js/main/LICENSE */
|
|
|
|
import*as arr from"../utils/arr.prod.js";import*as domUtils from"../utils/domUtils.prod.js";import is from"../utils/is.prod.js";import pExtend from"../utils/pointerExtend.prod.js";import*as pointerUtils from"../utils/pointerUtils.prod.js";function install(t){var e;const n=[],s={},o=[],i={add:r,remove:a,addDelegate(t,e,n,i,a){const c=getOptions(a);if(!s[n]){s[n]=[];for(const t of o)r(t,n,p),r(t,n,l,!0)}const u=s[n];let v=arr.find(u,(n=>n.selector===t&&n.context===e));v||(v={selector:t,context:e,listeners:[]},u.push(v)),v.listeners.push({func:i,options:c})},removeDelegate(t,e,n,o,i){const r=getOptions(i),c=s[n];let u,v=!1;if(c)for(u=c.length-1;u>=0;u--){const s=c[u];if(s.selector===t&&s.context===e){const{listeners:t}=s;for(let s=t.length-1;s>=0;s--){const i=t[s];if(i.func===o&&optionsMatch(i.options,r)){t.splice(s,1),t.length||(c.splice(u,1),a(e,n,p),a(e,n,l,!0)),v=!0;break}}if(v)break}}},delegateListener:p,delegateUseCapture:l,delegatedEvents:s,documents:o,targets:n,supportsOptions:!1,supportsPassive:!1};function r(t,e,s,o){if(!t.addEventListener)return;const r=getOptions(o);let a=arr.find(n,(e=>e.eventTarget===t));a||(a={eventTarget:t,events:{}},n.push(a)),a.events[e]||(a.events[e]=[]),arr.find(a.events[e],(t=>t.func===s&&optionsMatch(t.options,r)))||(t.addEventListener(e,s,i.supportsOptions?r:r.capture),a.events[e].push({func:s,options:r}))}function a(t,e,s,o){if(!t.addEventListener||!t.removeEventListener)return;const r=arr.findIndex(n,(e=>e.eventTarget===t)),p=n[r];if(!p||!p.events)return;if("all"===e){for(e in p.events)p.events.hasOwnProperty(e)&&a(t,e,"all");return}let l=!1;const c=p.events[e];if(c){if("all"===s){for(let n=c.length-1;n>=0;n--){const s=c[n];a(t,e,s.func,s.options)}return}{const n=getOptions(o);for(let o=0;o<c.length;o++){const r=c[o];if(r.func===s&&optionsMatch(r.options,n)){t.removeEventListener(e,s,i.supportsOptions?n:n.capture),c.splice(o,1),0===c.length&&(delete p.events[e],l=!0);break}}}}l&&!Object.keys(p.events).length&&n.splice(r,1)}function p(t,e){const n=getOptions(e),o=new FakeEvent(t),i=s[t.type],[r]=pointerUtils.getEventTargets(t);let a=r;for(;is.element(a);){for(let t=0;t<i.length;t++){const e=i[t],{selector:s,context:p}=e;if(domUtils.matchesSelector(a,s)&&domUtils.nodeContains(p,r)&&domUtils.nodeContains(p,a)){const{listeners:t}=e;o.currentTarget=a;for(const e of t)optionsMatch(e.options,n)&&e.func(o)}}a=domUtils.parentNode(a)}}function l(t){return p(t,!0)}return null==(e=t.document)||e.createElement("div").addEventListener("test",null,{get capture(){return i.supportsOptions=!0},get passive(){return i.supportsPassive=!0}}),t.events=i,i}class FakeEvent{constructor(t){this.currentTarget=void 0,this.originalEvent=void 0,this.type=void 0,this.originalEvent=t,pExtend(this,t)}preventOriginalDefault(){this.originalEvent.preventDefault()}stopPropagation(){this.originalEvent.stopPropagation()}stopImmediatePropagation(){this.originalEvent.stopImmediatePropagation()}}function getOptions(t){return is.object(t)?{capture:!!t.capture,passive:!!t.passive}:{capture:!!t,passive:!1}}function optionsMatch(t,e){return t===e||("boolean"==typeof t?!!e.capture===t&&!1==!!e.passive:!!t.capture==!!e.capture&&!!t.passive==!!e.passive)}var events={id:"events",install:install};export{events as default};
|
|
//# sourceMappingURL=events.prod.js.map
|