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