-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathindex.min.js
More file actions
1 lines (1 loc) · 3.12 KB
/
index.min.js
File metadata and controls
1 lines (1 loc) · 3.12 KB
1
(()=>{var d=new Map;function O(t,r){if(t=t.trim(),t==="")throw new Error("Trait name cannot be empty");if(d.has(t))throw new Error(`Trait "${t}" already defined`);d.set(t,r)}var l=new WeakMap,f=new WeakMap;function A(t){var r=t.getAttribute("traits");if(r){var e=l.get(t)||[],i=[];for(let n of r.split(/\s+/))if(d.has(n)){var o=e.some(function(u){return u.constructor===d.get(n)});if(!o){var a=new(d.get(n))(t);e.push(a),i.push(a)}}e.length&&l.set(t,e),i.length&&k(t,i)}}function C(t,r,e){var i=r?r.split(/\s+/):[],o=e?e.split(/\s+/):[],a=i.filter(s=>!o.includes(s));if(a.length>0){var n=l.get(t)||[],u=[],b=[];for(let s of n){var v=T(s);a.includes(v)?(b.push(s),g(s,"disconnectedCallback")):u.push(s)}b.length>0&&M(t,b,"remove"),u.length>0?l.set(t,u):l.delete(t)}e&&A(t)}function T(t){for(let[r,e]of d)if(t.constructor===e)return r;return null}function k(t,r){var e=new Set,i=[];for(let s of r){var o=s.constructor.observedAttributes;if(o&&Array.isArray(o)){i.push(s);for(let c of o)e.add(c)}}if(e.size!==0){var a=f.get(t);if(a){a.instances=a.instances.concat(i),a.observer.disconnect();var n=Array.from(new Set([...a.observedAttributes,...e]));a.observedAttributes=n,a.observer.observe(t,{attributes:!0,attributeOldValue:!0,attributeFilter:n})}else{var u=new MutationObserver(function(s){for(let h of s){var c=f.get(t)?.instances||[];for(let y of c){var p=y.constructor.observedAttributes;p&&p.includes(h.attributeName)&&g(y,"attributeChangedCallback",h.attributeName,h.oldValue,t.getAttribute(h.attributeName))}}}),b=Array.from(e);u.observe(t,{attributes:!0,attributeOldValue:!0,attributeFilter:b}),f.set(t,{observer:u,instances:i,observedAttributes:b});for(let s of i){var v=s.constructor.observedAttributes;if(v)for(let c of v)t.hasAttribute(c)&&g(s,"attributeChangedCallback",c,null,t.getAttribute(c))}}}}function E(t){t.hasAttribute?.("traits")&&w(t);for(let r of t.querySelectorAll?.("[traits]")??[])w(r)}function w(t){var r=l.get(t);for(let i of r??[])g(i,"disconnectedCallback");l.delete(t);var e=f.get(t);e&&(e.observer.disconnect(),f.delete(t))}function M(t,r,e){var i=f.get(t);if(i&&e==="remove")if(i.instances=i.instances.filter(n=>!r.includes(n)),i.instances.length===0)i.observer.disconnect(),f.delete(t);else{var o=new Set;for(let n of i.instances){var a=n.constructor.observedAttributes;if(a&&Array.isArray(a))for(let u of a)o.add(u)}o.size>0?(i.observedAttributes=Array.from(o),i.observer.disconnect(),i.observer.observe(t,{attributes:!0,attributeOldValue:!0,attributeFilter:i.observedAttributes})):(i.observer.disconnect(),f.delete(t))}}var N=new MutationObserver(function(t){for(let r of t){r.type==="attributes"&&r.attributeName==="traits"&&C(r.target,r.oldValue,r.target.getAttribute("traits"));for(let e of Array.from(r.addedNodes))e.nodeType===1&&e.hasAttribute?.("traits")&&A(e),e.querySelectorAll?.("[traits]").forEach(A);Array.from(r.removedNodes).forEach(E)}});function g(t,r,...e){if(typeof t[r]=="function")return t[r](...e)}document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll("[traits]").forEach(A)});N.observe(document,{childList:!0,subtree:!0,attributes:!0,attributeOldValue:!0,attributeFilter:["traits"]});window.defineTrait=O;})();