UNPKG

diffhtml-middleware-synthetic-events

Version:

Global event delegation middleware, avoids inline events

1 lines 2.09 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).syntheticEvents=t()}(this,function(){"use strict";const{NodeCache:u,PATCH_TYPE:p,decodeEntities:E,createNode:v}=("object"==typeof global?global:window||{})[Symbol.for("diffHTML")].Internals,g=["onload","onunload","onscroll","onfocus","onblur","onloadstart","onprogress","onerror","onabort","onload","onloadend","onpointerenter","onpointerleave"],{assign:e,defineProperty:s,getOwnPropertyDescriptor:i}=Object,h=[],b=new Map,w=new Set;for(const t in"undefined"!=typeof document?document.cloneNode():null)0===t.indexOf("on")&&h.push(t);class c{}const y=(e,t={})=>{const o=new c;for(var n in e){var r=i(e,n);"isTrusted"!==n&&(r&&r.get?s(o,n,r):o[n]=e[n])}for(var a in t)o[a]=t[a];return o},T=e=>{for(;e=e.parentNode;)if("[object ShadowRoot]"===e.toString())return e;return!1};return()=>{return e(function(){return({patches:e})=>{var t=e["length"];let o=0;for(;;){var n=e[o];if(o===t)break;switch(n){case p.SET_ATTRIBUTE:{var r=e[o+1];const i=e[o+2];var a=E(e[o+3]);const c=v(r);r=i.toLowerCase();if(h.includes(r)){c[r]=void 0;const d=b.get(c)||{};"function"==typeof a?d[r]=a:"function"==typeof window[a]?d[r]=window[a]:delete d[r],b.set(c,d),(e=>{e=T(e)||e.ownerDocument;const t=e["addEventListener"];if(w.has(e))return;w.add(e),h.forEach(a=>t(a.slice(2),e=>{var t=e.target;let o=null;const n=e.path||(e.composedPath?e.composedPath():[]);if(!n.length)for(let e=t;e;e=e.parentNode)n.push(e);for(let e=0;e<n.length;e++){var r=n[e];if(b.has(r)){r=b.get(r)[a];r&&(o=r);break}}t=y(e,{stopPropagation(){e.stopImmediatePropagation(),e.stopPropagation()},preventDefault(){e.preventDefault()},nativeEvent:e});o&&o(t)},!!g.includes(a)))})(c)}o+=4;break}case p.REMOVE_ATTRIBUTE:{a=e[o+1];const f=e[o+2];var r=u.get(a),s=f.toLowerCase();if(h.includes(s)){const l=b.get(r)||{};delete l[s],b.set(r,l)}o+=3;break}case p.NODE_VALUE:case p.INSERT_BEFORE:o+=4;break;case p.REPLACE_CHILD:o+=3;break;case p.REMOVE_CHILD:o+=2}}}},{displayName:"syntheticEventsTask"})}});