diff --git a/dist/dde-with-observables.js b/dist/dde-with-observables.js
index e7970a1..6720c35 100644
--- a/dist/dde-with-observables.js
+++ b/dist/dde-with-observables.js
@@ -1,31 +1,31 @@
//deka-dom-el library is available via global namespace `dde`
(()=> {
-var D={isObservable(t){return!1},processReactiveAttribute(t,e,n,r){return n}};function $(t,e=!0){return e?Object.assign(D,t):(Object.setPrototypeOf(t,D),t)}function P(t){return D.isPrototypeOf(t)&&t!==D?t:D}function O(t){return typeof t>"u"}function G(t){let e=typeof t;return e!=="object"?e:t===null?"null":Object.prototype.toString.call(t)}function L(t,e){if(!t||!(t instanceof AbortSignal))return!0;if(!t.aborted)return t.addEventListener("abort",e),function(){t.removeEventListener("abort",e)}}function T(t,e){let{observedAttributes:n=[]}=t.constructor;return n.reduce(function(r,o){return Reflect.set(r,ft(o),e(t,o)),r},{})}function ft(t){return t.replace(/-./g,e=>e[1].toUpperCase())}var d={setDeleteAttr:ut,ssr:"",D:globalThis.document,F:globalThis.DocumentFragment,H:globalThis.HTMLElement,S:globalThis.SVGElement,M:globalThis.MutationObserver};function ut(t,e,n){if(Reflect.set(t,e,n),!!O(n)){if(Reflect.deleteProperty(t,e),t instanceof d.H&&t.getAttribute(e)==="undefined")return t.removeAttribute(e);if(Reflect.get(t,e)==="undefined")return Reflect.set(t,e,"")}}var C="__dde_lifecycleToEvents",x="__dde_disconnect_mode";var A=[{get scope(){return d.D.body},host:t=>t?t(d.D.body):d.D.body,custom_element:!1,prevent:!0}],v={get current(){return A[A.length-1]},get host(){return this.current.host},preventDefault(){let{current:t}=this;return t.prevent=!0,t},get state(){return[...A]},push(t={}){return A.push(Object.assign({},this.current,{prevent:!1},t))},pushRoot(){return A.push(A[0])},pop(){if(A.length!==1)return A.pop()}};function V(...t){return this.appendOriginal(...t),this}function at(t){return t.append===V||(t.appendOriginal=t.append,t.append=V),t}var j;function k(t,e,...n){let r=P(this),o=0,c,s;switch((Object(e)!==e||r.isObservable(e))&&(e={textContent:e}),!0){case typeof t=="function":{o=1,v.push({scope:t,host:(...l)=>l.length?(o===1?n.unshift(...l):l.forEach(b=>b(s)),void 0):s}),c=t(e||void 0);let a=c instanceof d.F;if(c.nodeName==="#comment")break;let p=k.mark({type:"component",name:t.name,host:a?"this":"parentElement"});c.prepend(p),a&&(s=p);break}case t==="#text":c=S.call(this,d.D.createTextNode(""),e);break;case(t==="<>"||!t):c=S.call(this,d.D.createDocumentFragment(),e);break;case!!j:c=S.call(this,d.D.createElementNS(j,t),e);break;case!c:c=S.call(this,d.D.createElement(t),e)}return at(c),s||(s=c),n.forEach(a=>a(s)),o&&v.pop(),o=2,c}function Nt(t,e=t,n=void 0){let r=Symbol.for("default"),o=Array.from(e.querySelectorAll("slot")).reduce((s,a)=>Reflect.set(s,a.name||r,a)&&s,{}),c=Reflect.has(o,r);if(t.append=new Proxy(t.append,{apply(s,a,p){if(!p.length)return t;let l=d.D.createDocumentFragment();for(let b of p){if(!b||!b.slot){c&&l.appendChild(b);continue}let N=b.slot,i=o[N];lt(b,"remove","slot"),i&&(dt(i,b,n),Reflect.deleteProperty(o,N))}return c&&(o[r].replaceWith(l),Reflect.deleteProperty(o,r)),t.append=s,t}}),t!==e){let s=Array.from(t.childNodes);s.forEach(a=>a.remove()),t.append(...s)}return e}function dt(t,e,n){n&&n(t,e);try{t.replaceWith(S(e,{className:[e.className,t.className],dataset:{...t.dataset}}))}catch{t.replaceWith(e)}}k.mark=function(t,e=!1){t=Object.entries(t).map(([o,c])=>o+`="${c}"`).join(" ");let n=e?"":"/",r=d.D.createComment(``);return e&&(r.end=d.D.createComment("")),r};function Pt(t){let e=this;return function(...r){j=t;let o=k.call(e,...r);return j=void 0,o}}var M=new WeakMap,{setDeleteAttr:K}=d;function S(t,...e){if(!e.length)return t;M.set(t,Y(t,this));for(let[n,r]of Object.entries(Object.assign({},...e)))X.call(this,t,n,r);return M.delete(t),t}function X(t,e,n){let{setRemoveAttr:r,s:o}=Y(t,this),c=this;n=o.processReactiveAttribute(t,e,n,(a,p)=>X.call(c,t,a,p));let[s]=e;if(s==="=")return r(e.slice(1),n);if(s===".")return Q(t,e.slice(1),n);if(/(aria|data)([A-Z])/.test(e))return e=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),r(e,n);switch(e==="className"&&(e="class"),e){case"xlink:href":return r(e,n,"http://www.w3.org/1999/xlink");case"textContent":return K(t,e,n);case"style":if(typeof n!="object")break;case"dataset":return U(o,n,Q.bind(null,t[e]));case"ariaset":return U(o,n,(a,p)=>r("aria-"+a,p));case"classList":return pt.call(c,t,n)}return ht(t,e)?K(t,e,n):r(e,n)}function Y(t,e){if(M.has(t))return M.get(t);let r=(t instanceof d.S?vt:bt).bind(null,t,"Attribute"),o=P(e);return{setRemoveAttr:r,s:o}}function pt(t,e){let n=P(this);return U(n,e,(r,o)=>t.classList.toggle(r,o===-1?void 0:!!o)),t}function Lt(t){return Array.from(t.children).forEach(e=>e.remove()),t}function lt(t,e,n,r){return t instanceof d.H?t[e+"Attribute"](n,r):t[e+"AttributeNS"](null,n,r)}function ht(t,e){if(!Reflect.has(t,e))return!1;let n=tt(t,e);return!O(n.set)}function tt(t,e){if(t=Object.getPrototypeOf(t),!t)return{};let n=Object.getOwnPropertyDescriptor(t,e);return n||tt(t,e)}function U(t,e,n){if(!(typeof e!="object"||e===null))return Object.entries(e).forEach(function([o,c]){o&&(c=t.processReactiveAttribute(e,o,c,n),n(o,c))})}function et(t){return Array.isArray(t)?t.filter(Boolean).join(" "):t}function bt(t,e,n,r){return t[(O(r)?"remove":"set")+e](n,et(r))}function vt(t,e,n,r,o=null){return t[(O(r)?"remove":"set")+e+"NS"](o,n,et(r))}function Q(t,e,n){if(Reflect.set(t,e,n),!!O(n))return Reflect.deleteProperty(t,e)}function qt(t,e,n=gt){v.push({scope:t,host:(...o)=>o.length?o.forEach(c=>c(t)):t,custom_element:t}),typeof n=="function"&&(n=n.call(t,t));let r=e.call(t,n);return v.pop(),r}function Ft(t){return z(t.prototype,"connectedCallback",function(e,n,r){e.apply(n,r),n.dispatchEvent(new Event("dde:connected"))}),t.prototype[x]||(t.prototype[x]="dde"),z(t.prototype,"disconnectedCallback",function(e,n,r){e.apply(n,r);let o=()=>n.dispatchEvent(new Event("dde:disconnected"));if(n[x]!=="dde")return o();(queueMicrotask||setTimeout)(()=>!n.isConnected&&o())}),z(t.prototype,"attributeChangedCallback",function(e,n,r){let[o,,c]=r;n.dispatchEvent(new CustomEvent("dde:attributeChanged",{detail:[o,c]})),e.apply(n,r)}),t.prototype[C]=!0,t}function z(t,e,n){t[e]=new Proxy(t[e]||(()=>{}),{apply:n})}function gt(t){return T(t,(e,n)=>e.getAttribute(n))}function Ht(t,e,n){return e||(e={}),function(o,...c){n&&(c.unshift(o),o=typeof n=="function"?n():n);let s=c.length?new CustomEvent(t,Object.assign({detail:c[0]},e)):new Event(t,e);return o.dispatchEvent(s)}}function y(t,e,n){return function(o){return o.addEventListener(t,e,n),o}}var W=d.M?mt():new Proxy({},{get(){return()=>{}}}),Et=new WeakSet;y.connected=function(t,e){let{custom_element:n}=v.current,r="connected";return typeof e!="object"&&(e={}),typeof e.once!="boolean"&&(e.once=!0),function(c){n&&(c=n);let s="dde:"+r;return c.addEventListener(s,t,e),c[C]?c:c.isConnected?(c.dispatchEvent(new Event(s)),c):(L(e.signal,()=>W.offConnected(c,t))&&W.onConnected(c,t),c)}};y.disconnected=function(t,e){let{custom_element:n}=v.current,r="disconnected";return typeof e!="object"&&(e={}),typeof e.once!="boolean"&&(e.once=!0),function(c){n&&(c=n),c[x]||(c[x]="dde");let s="dde:"+r;return c.addEventListener(s,t,e),c[C]||L(e.signal,()=>W.offDisconnected(c,t))&&W.onDisconnected(c,t),c}};var H=new WeakMap;y.disconnectedAsAbort=function(t){if(H.has(t))return H.get(t);let e=new AbortController;return H.set(t,e),t(y.disconnected(()=>e.abort())),e};y.attributeChanged=function(t,e){let n="attributeChanged";return typeof e!="object"&&(e={}),function(o){let c="dde:"+n;if(o.addEventListener(c,t,e),o[C]||Et.has(o)||!d.M)return o;let s=new d.M(function(p){for(let{attributeName:l,target:b}of p)b.dispatchEvent(new CustomEvent(c,{detail:[l,b.getAttribute(l)]}))});return L(e.signal,()=>s.disconnect())&&s.observe(o,{attributes:!0}),o}};function mt(){let t=new Map,e=!1,n=new d.M(function(i){for(let f of i)if(f.type==="childList"){if(l(f.addedNodes,!0)){s();continue}b(f.removedNodes,!0)&&s()}});return{onConnected(i,f){c();let u=o(i);u.connected.has(f)||(u.connected.add(f),u.length_c+=1)},offConnected(i,f){if(!t.has(i))return;let u=t.get(i);u.connected.has(f)&&(u.connected.delete(f),u.length_c-=1,r(i,u))},onDisconnected(i,f){c();let u=o(i);u.disconnected.has(f)||(u.disconnected.add(f),u.length_d+=1)},offDisconnected(i,f){if(!t.has(i))return;let u=t.get(i);u.disconnected.has(f)&&(u.disconnected.delete(f),u.length_d-=1,r(i,u))}};function r(i,f){f.length_c||f.length_d||(t.delete(i),s())}function o(i){if(t.has(i))return t.get(i);let f={connected:new WeakSet,length_c:0,disconnected:new WeakSet,length_d:0};return t.set(i,f),f}function c(){e||(e=!0,n.observe(d.D.body,{childList:!0,subtree:!0}))}function s(){!e||t.size||(e=!1,n.disconnect())}function a(){return new Promise(function(i){(requestIdleCallback||requestAnimationFrame)(i)})}async function p(i){t.size>30&&await a();let f=[];if(!(i instanceof Node))return f;for(let u of t.keys())u===i||!(u instanceof Node)||i.contains(u)&&f.push(u);return f}function l(i,f){let u=!1;for(let m of i){if(f&&p(m).then(l),!t.has(m))continue;let R=t.get(m);R.length_c&&(m.dispatchEvent(new Event("dde:connected")),R.connected=new WeakSet,R.length_c=0,R.length_d||t.delete(m),u=!0)}return u}function b(i,f){let u=!1;for(let m of i){if(f&&p(m).then(b),!t.has(m)||!t.get(m).length_d)continue;let Z=N(m);m[x]==="dde"?(queueMicrotask||setTimeout)(Z):Z(),u=!0}return u}function N(i){return()=>{i.isConnected||(i.dispatchEvent(new Event("dde:disconnected")),t.delete(i))}}}var h=Symbol.for("observable");function q(t){try{return Reflect.has(t,h)}catch{return!1}}var F=[],g=new WeakMap;function E(t,e){if(typeof t!="function")return nt(!1,t,e);if(q(t))return t;let n=nt(!0),r=function(){let[o,...c]=g.get(r);if(g.set(r,new Set([o])),F.push(r),it(n,t()),F.pop(),!c.length)return;let s=g.get(r);for(let a of c)s.has(a)||w(a,r)};return g.set(n[h],r),g.set(r,new Set([n])),r(),n}E.action=function(t,e,...n){let r=t[h],{actions:o}=r;if(!o||!Reflect.has(o,e))throw new Error(`'${t}' has no action with name '${e}'!`);if(o[e].apply(r,n),r.skip)return Reflect.deleteProperty(r,"skip");r.listeners.forEach(c=>c(r.value))};E.on=function t(e,n,r={}){let{signal:o}=r;if(!(o&&o.aborted)){if(Array.isArray(e))return e.forEach(c=>t(c,n,r));J(e,n),o&&o.addEventListener("abort",()=>w(e,n))}};E.symbols={onclear:Symbol.for("Observable.onclear")};E.clear=function(...t){for(let n of t){Reflect.deleteProperty(n,"toJSON");let r=n[h];r.onclear.forEach(o=>o.call(r)),e(n,r),Reflect.deleteProperty(n,h)}function e(n,r){r.listeners.forEach(o=>{if(r.listeners.delete(o),!g.has(o))return;let c=g.get(o);c.delete(n),!(c.size>1)&&(n.clear(...c),g.delete(o))})}};var _="__dde_reactive";E.el=function(t,e){let n=k.mark({type:"reactive"},!0),r=n.end,o=d.D.createDocumentFragment();o.append(n,r);let{current:c}=v,s=a=>{if(!n.parentNode||!r.parentNode)return w(t,s);v.push(c);let p=e(a);v.pop(),Array.isArray(p)||(p=[p]);let l=n;for(;(l=n.nextSibling)!==r;)l.remove();n.after(...p),n.isConnected&&yt(c.host())};return J(t,s),ct(t,s,n,e),s(t()),o};function yt(t){!t||!t[_]||(requestIdleCallback||setTimeout)(function(){t[_]=t[_].filter(([e,n])=>n.isConnected?!0:(w(...e),!1))})}var xt={_set(t){this.value=t}};function At(t){return function(e,n){let r=(...c)=>c.length?e.setAttribute(n,...c):e.getAttribute(n),o=st(r,r(),xt);return t[n]=o,o}}var B="__dde_attributes";E.observedAttributes=function(t){let e=t[B]={},n=T(t,At(e));return y.attributeChanged(function({detail:o}){/*! This maps attributes to observables (`O.observedAttributes`).
- * Investigate `__dde_attributes` key of the element.*/let[c,s]=o,a=this[B][c];if(a)return E.action(a,"_set",s)})(t),y.disconnected(function(){/*! This removes all observables mapped to attributes (`O.observedAttributes`).
- * Investigate `__dde_attributes` key of the element.*/E.clear(...Object.values(this[B]))})(t),n};var ot={isObservable:q,processReactiveAttribute(t,e,n,r){if(!q(n))return n;let o=c=>{if(!t.isConnected)return w(n,o);r(e,c)};return J(n,o),ct(n,o,t,e),n()}};function ct(t,e,...n){let{current:r}=v;r.prevent||r.host(function(o){o[_]||(o[_]=[],y.disconnected(()=>o[_].forEach(([[c,s]])=>w(c,s,c[h]?.host()===o)))(o)),o[_].push([[t,e],...n])})}function nt(t,e,n){let r=t?()=>rt(r):(...o)=>o.length?it(r,...o):rt(r);return st(r,e,n)}var Ot=Object.assign(Object.create(null),{stopPropagation(){this.skip=!0}}),I=class extends Error{constructor(){super();let[e,...n]=this.stack.split(`
-`),r=e.slice(e.indexOf("@"),e.indexOf(".js:")+4);this.stack=n.find(o=>!o.includes(r))}};function st(t,e,n){let r=[];G(n)!=="[object Object]"&&(n={});let{onclear:o}=E.symbols;n[o]&&(r.push(n[o]),Reflect.deleteProperty(n,o));let{host:c}=v;return Reflect.defineProperty(t,h,{value:{value:e,actions:n,onclear:r,host:c,listeners:new Set,defined:new I},enumerable:!1,writable:!1,configurable:!0}),t.toJSON=()=>t(),Object.setPrototypeOf(t[h],Ot),t}function _t(){return F[F.length-1]}function rt(t){if(!t[h])return;let{value:e,listeners:n}=t[h],r=_t();return r&&n.add(r),g.has(r)&&g.get(r).add(t),e}function it(t,e,n){if(!t[h])return;let r=t[h];if(!(!n&&r.value===e))return r.value=e,r.listeners.forEach(o=>o(e)),e}function J(t,e){if(t[h])return t[h].listeners.add(e)}function w(t,e,n){let r=t[h];if(!r)return;let o=r.listeners.delete(e);if(n&&!r.listeners.size){if(E.clear(t),!g.has(r))return o;let c=g.get(r);if(!g.has(c))return o;g.get(c).forEach(s=>w(s,c,!0))}return o}$(ot);
-globalThis.dde= {O: E,
+var R={isObservable(t){return!1},processReactiveAttribute(t,e,n,r){return n}};function F(t,e=!0){return e?Object.assign(R,t):(Object.setPrototypeOf(t,R),t)}function N(t){return R.isPrototypeOf(t)&&t!==R?t:R}function A(t){return typeof t>"u"}function J(t){let e=typeof t;return e!=="object"?e:t===null?"null":Object.prototype.toString.call(t)}function P(t,e){if(!t||!(t instanceof AbortSignal))return!0;if(!t.aborted)return t.addEventListener("abort",e),function(){t.removeEventListener("abort",e)}}function L(t,e){let{observedAttributes:n=[]}=t.constructor;return n.reduce(function(r,o){return Reflect.set(r,st(o),e(t,o)),r},{})}function st(t){return t.replace(/-./g,e=>e[1].toUpperCase())}var d={setDeleteAttr:it,ssr:"",D:globalThis.document,F:globalThis.DocumentFragment,H:globalThis.HTMLElement,S:globalThis.SVGElement,M:globalThis.MutationObserver};function it(t,e,n){if(Reflect.set(t,e,n),!!A(n)){if(Reflect.deleteProperty(t,e),t instanceof d.H&&t.getAttribute(e)==="undefined")return t.removeAttribute(e);if(Reflect.get(t,e)==="undefined")return Reflect.set(t,e,"")}}var _="__dde_lifecycleToEvents";var y=[{get scope(){return d.D.body},host:t=>t?t(d.D.body):d.D.body,custom_element:!1,prevent:!0}],v={get current(){return y[y.length-1]},get host(){return this.current.host},preventDefault(){let{current:t}=this;return t.prevent=!0,t},get state(){return[...y]},push(t={}){return y.push(Object.assign({},this.current,{prevent:!1},t))},pushRoot(){return y.push(y[0])},pop(){if(y.length!==1)return y.pop()}};function Z(...t){return this.appendOriginal(...t),this}function ut(t){return t.append===Z||(t.appendOriginal=t.append,t.append=Z),t}var T;function D(t,e,...n){let r=N(this),o=0,c,s;switch((Object(e)!==e||r.isObservable(e))&&(e={textContent:e}),!0){case typeof t=="function":{o=1,v.push({scope:t,host:(...p)=>p.length?(o===1?n.unshift(...p):p.forEach(b=>b(s)),void 0):s}),c=t(e||void 0);let a=c instanceof d.F;if(c.nodeName==="#comment")break;let l=D.mark({type:"component",name:t.name,host:a?"this":"parentElement"});c.prepend(l),a&&(s=l);break}case t==="#text":c=S.call(this,d.D.createTextNode(""),e);break;case(t==="<>"||!t):c=S.call(this,d.D.createDocumentFragment(),e);break;case!!T:c=S.call(this,d.D.createElementNS(T,t),e);break;case!c:c=S.call(this,d.D.createElement(t),e)}return ut(c),s||(s=c),n.forEach(a=>a(s)),o&&v.pop(),o=2,c}function Dt(t,e=t,n=void 0){let r=Symbol.for("default"),o=Array.from(e.querySelectorAll("slot")).reduce((s,a)=>Reflect.set(s,a.name||r,a)&&s,{}),c=Reflect.has(o,r);if(t.append=new Proxy(t.append,{apply(s,a,l){if(!l.length)return t;let p=d.D.createDocumentFragment();for(let b of l){if(!b||!b.slot){c&&p.appendChild(b);continue}let k=b.slot,i=o[k];dt(b,"remove","slot"),i&&(ft(i,b,n),Reflect.deleteProperty(o,k))}return c&&(o[r].replaceWith(p),Reflect.deleteProperty(o,r)),t.append=s,t}}),t!==e){let s=Array.from(t.childNodes);s.forEach(a=>a.remove()),t.append(...s)}return e}function ft(t,e,n){n&&n(t,e);try{t.replaceWith(S(e,{className:[e.className,t.className],dataset:{...t.dataset}}))}catch{t.replaceWith(e)}}D.mark=function(t,e=!1){t=Object.entries(t).map(([o,c])=>o+`="${c}"`).join(" ");let n=e?"":"/",r=d.D.createComment(``);return e&&(r.end=d.D.createComment("")),r};function kt(t){let e=this;return function(...r){T=t;let o=D.call(e,...r);return T=void 0,o}}var j=new WeakMap,{setDeleteAttr:G}=d;function S(t,...e){if(!e.length)return t;j.set(t,Q(t,this));for(let[n,r]of Object.entries(Object.assign({},...e)))K.call(this,t,n,r);return j.delete(t),t}function K(t,e,n){let{setRemoveAttr:r,s:o}=Q(t,this),c=this;n=o.processReactiveAttribute(t,e,n,(a,l)=>K.call(c,t,a,l));let[s]=e;if(s==="=")return r(e.slice(1),n);if(s===".")return V(t,e.slice(1),n);if(/(aria|data)([A-Z])/.test(e))return e=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),r(e,n);switch(e==="className"&&(e="class"),e){case"xlink:href":return r(e,n,"http://www.w3.org/1999/xlink");case"textContent":return G(t,e,n);case"style":if(typeof n!="object")break;case"dataset":return $(o,n,V.bind(null,t[e]));case"ariaset":return $(o,n,(a,l)=>r("aria-"+a,l));case"classList":return at.call(c,t,n)}return lt(t,e)?G(t,e,n):r(e,n)}function Q(t,e){if(j.has(t))return j.get(t);let r=(t instanceof d.S?ht:pt).bind(null,t,"Attribute"),o=N(e);return{setRemoveAttr:r,s:o}}function at(t,e){let n=N(this);return $(n,e,(r,o)=>t.classList.toggle(r,o===-1?void 0:!!o)),t}function Nt(t){return Array.from(t.children).forEach(e=>e.remove()),t}function dt(t,e,n,r){return t instanceof d.H?t[e+"Attribute"](n,r):t[e+"AttributeNS"](null,n,r)}function lt(t,e){if(!Reflect.has(t,e))return!1;let n=X(t,e);return!A(n.set)}function X(t,e){if(t=Object.getPrototypeOf(t),!t)return{};let n=Object.getOwnPropertyDescriptor(t,e);return n||X(t,e)}function $(t,e,n){if(!(typeof e!="object"||e===null))return Object.entries(e).forEach(function([o,c]){o&&(c=t.processReactiveAttribute(e,o,c,n),n(o,c))})}function Y(t){return Array.isArray(t)?t.filter(Boolean).join(" "):t}function pt(t,e,n,r){return t[(A(r)?"remove":"set")+e](n,Y(r))}function ht(t,e,n,r,o=null){return t[(A(r)?"remove":"set")+e+"NS"](o,n,Y(r))}function V(t,e,n){if(Reflect.set(t,e,n),!!A(n))return Reflect.deleteProperty(t,e)}function Mt(t,e,n=bt){v.push({scope:t,host:(...o)=>o.length?o.forEach(c=>c(t)):t,custom_element:t}),typeof n=="function"&&(n=n.call(t,t));let r=e.call(t,n);return v.pop(),r}function Wt(t){return U(t.prototype,"connectedCallback",function(e,n,r){e.apply(n,r),n.dispatchEvent(new Event("dde:connected"))}),U(t.prototype,"disconnectedCallback",function(e,n,r){e.apply(n,r),(queueMicrotask||setTimeout)(()=>!n.isConnected&&n.dispatchEvent(new Event("dde:disconnected")))}),U(t.prototype,"attributeChangedCallback",function(e,n,r){let[o,,c]=r;n.dispatchEvent(new CustomEvent("dde:attributeChanged",{detail:[o,c]})),e.apply(n,r)}),t.prototype[_]=!0,t}function U(t,e,n){t[e]=new Proxy(t[e]||(()=>{}),{apply:n})}function bt(t){return L(t,(e,n)=>e.getAttribute(n))}function Ut(t,e,n){return e||(e={}),function(o,...c){n&&(c.unshift(o),o=typeof n=="function"?n():n);let s=c.length?new CustomEvent(t,Object.assign({detail:c[0]},e)):new Event(t,e);return o.dispatchEvent(s)}}function x(t,e,n){return function(o){return o.addEventListener(t,e,n),o}}var M=d.M?gt():new Proxy({},{get(){return()=>{}}}),vt=new WeakSet;x.connected=function(t,e){let{custom_element:n}=v.current,r="connected";return typeof e!="object"&&(e={}),e.once=!0,function(c){n&&(c=n);let s="dde:"+r;return c.addEventListener(s,t,e),c[_]?c:c.isConnected?(c.dispatchEvent(new Event(s)),c):(P(e.signal,()=>M.offConnected(c,t))&&M.onConnected(c,t),c)}};x.disconnected=function(t,e){let{custom_element:n}=v.current,r="disconnected";return typeof e!="object"&&(e={}),e.once=!0,function(c){n&&(c=n);let s="dde:"+r;return c.addEventListener(s,t,e),c[_]||P(e.signal,()=>M.offDisconnected(c,t))&&M.onDisconnected(c,t),c}};var z=new WeakMap;x.disconnectedAsAbort=function(t){if(z.has(t))return z.get(t);let e=new AbortController;return z.set(t,e),t(x.disconnected(()=>e.abort())),e};x.attributeChanged=function(t,e){let n="attributeChanged";return typeof e!="object"&&(e={}),function(o){let c="dde:"+n;if(o.addEventListener(c,t,e),o[_]||vt.has(o)||!d.M)return o;let s=new d.M(function(l){for(let{attributeName:p,target:b}of l)b.dispatchEvent(new CustomEvent(c,{detail:[p,b.getAttribute(p)]}))});return P(e.signal,()=>s.disconnect())&&s.observe(o,{attributes:!0}),o}};function gt(){let t=new Map,e=!1,n=new d.M(function(i){for(let u of i)if(u.type==="childList"){if(p(u.addedNodes,!0)){s();continue}b(u.removedNodes,!0)&&s()}});return{onConnected(i,u){c();let f=o(i);f.connected.has(u)||(f.connected.add(u),f.length_c+=1)},offConnected(i,u){if(!t.has(i))return;let f=t.get(i);f.connected.has(u)&&(f.connected.delete(u),f.length_c-=1,r(i,f))},onDisconnected(i,u){c();let f=o(i);f.disconnected.has(u)||(f.disconnected.add(u),f.length_d+=1)},offDisconnected(i,u){if(!t.has(i))return;let f=t.get(i);f.disconnected.has(u)&&(f.disconnected.delete(u),f.length_d-=1,r(i,f))}};function r(i,u){u.length_c||u.length_d||(t.delete(i),s())}function o(i){if(t.has(i))return t.get(i);let u={connected:new WeakSet,length_c:0,disconnected:new WeakSet,length_d:0};return t.set(i,u),u}function c(){e||(e=!0,n.observe(d.D.body,{childList:!0,subtree:!0}))}function s(){!e||t.size||(e=!1,n.disconnect())}function a(){return new Promise(function(i){(requestIdleCallback||requestAnimationFrame)(i)})}async function l(i){t.size>30&&await a();let u=[];if(!(i instanceof Node))return u;for(let f of t.keys())f===i||!(f instanceof Node)||i.contains(f)&&u.push(f);return u}function p(i,u){let f=!1;for(let E of i){if(u&&l(E).then(p),!t.has(E))continue;let C=t.get(E);C.length_c&&(E.dispatchEvent(new Event("dde:connected")),C.connected=new WeakSet,C.length_c=0,C.length_d||t.delete(E),f=!0)}return f}function b(i,u){let f=!1;for(let E of i)u&&l(E).then(b),!(!t.has(E)||!t.get(E).length_d)&&((queueMicrotask||setTimeout)(k(E)),f=!0);return f}function k(i){return()=>{i.isConnected||(i.dispatchEvent(new Event("dde:disconnected")),t.delete(i))}}}var h=Symbol.for("observable");function W(t){try{return Reflect.has(t,h)}catch{return!1}}var q=[],g=new WeakMap;function m(t,e){if(typeof t!="function")return tt(!1,t,e);if(W(t))return t;let n=tt(!0),r=function(){let[o,...c]=g.get(r);if(g.set(r,new Set([o])),q.push(r),ct(n,t()),q.pop(),!c.length)return;let s=g.get(r);for(let a of c)s.has(a)||w(a,r)};return g.set(n[h],r),g.set(r,new Set([n])),r(),n}m.action=function(t,e,...n){let r=t[h],{actions:o}=r;if(!o||!Reflect.has(o,e))throw new Error(`'${t}' has no action with name '${e}'!`);if(o[e].apply(r,n),r.skip)return Reflect.deleteProperty(r,"skip");r.listeners.forEach(c=>c(r.value))};m.on=function t(e,n,r={}){let{signal:o}=r;if(!(o&&o.aborted)){if(Array.isArray(e))return e.forEach(c=>t(c,n,r));I(e,n),o&&o.addEventListener("abort",()=>w(e,n))}};m.symbols={onclear:Symbol.for("Observable.onclear")};m.clear=function(...t){for(let n of t){Reflect.deleteProperty(n,"toJSON");let r=n[h];r.onclear.forEach(o=>o.call(r)),e(n,r),Reflect.deleteProperty(n,h)}function e(n,r){r.listeners.forEach(o=>{if(r.listeners.delete(o),!g.has(o))return;let c=g.get(o);c.delete(n),!(c.size>1)&&(n.clear(...c),g.delete(o))})}};var O="__dde_reactive";m.el=function(t,e){let n=D.mark({type:"reactive"},!0),r=n.end,o=d.D.createDocumentFragment();o.append(n,r);let{current:c}=v,s=a=>{if(!n.parentNode||!r.parentNode)return w(t,s);v.push(c);let l=e(a);v.pop(),Array.isArray(l)||(l=[l]);let p=n;for(;(p=n.nextSibling)!==r;)p.remove();n.after(...l),n.isConnected&&mt(c.host())};return I(t,s),rt(t,s,n,e),s(t()),o};function mt(t){!t||!t[O]||(requestIdleCallback||setTimeout)(function(){t[O]=t[O].filter(([e,n])=>n.isConnected?!0:(w(...e),!1))})}var Et={_set(t){this.value=t}};function xt(t){return function(e,n){let r=(...c)=>c.length?e.setAttribute(n,...c):e.getAttribute(n),o=ot(r,r(),Et);return t[n]=o,o}}var H="__dde_attributes";m.observedAttributes=function(t){let e=t[H]={},n=L(t,xt(e));return x.attributeChanged(function({detail:o}){/*! This maps attributes to observables (`O.observedAttributes`).
+ * Investigate `__dde_attributes` key of the element.*/let[c,s]=o,a=this[H][c];if(a)return m.action(a,"_set",s)})(t),x.disconnected(function(){/*! This removes all observables mapped to attributes (`O.observedAttributes`).
+ * Investigate `__dde_attributes` key of the element.*/m.clear(...Object.values(this[H]))})(t),n};var nt={isObservable:W,processReactiveAttribute(t,e,n,r){if(!W(n))return n;let o=c=>{if(!t.isConnected)return w(n,o);r(e,c)};return I(n,o),rt(n,o,t,e),n()}};function rt(t,e,...n){let{current:r}=v;r.prevent||r.host(function(o){o[O]||(o[O]=[],x.disconnected(()=>o[O].forEach(([[c,s]])=>w(c,s,c[h]?.host()===o)))(o)),o[O].push([[t,e],...n])})}function tt(t,e,n){let r=t?()=>et(r):(...o)=>o.length?ct(r,...o):et(r);return ot(r,e,n)}var yt=Object.assign(Object.create(null),{stopPropagation(){this.skip=!0}}),B=class extends Error{constructor(){super();let[e,...n]=this.stack.split(`
+`),r=e.slice(e.indexOf("@"),e.indexOf(".js:")+4);this.stack=n.find(o=>!o.includes(r))}};function ot(t,e,n){let r=[];J(n)!=="[object Object]"&&(n={});let{onclear:o}=m.symbols;n[o]&&(r.push(n[o]),Reflect.deleteProperty(n,o));let{host:c}=v;return Reflect.defineProperty(t,h,{value:{value:e,actions:n,onclear:r,host:c,listeners:new Set,defined:new B},enumerable:!1,writable:!1,configurable:!0}),t.toJSON=()=>t(),Object.setPrototypeOf(t[h],yt),t}function At(){return q[q.length-1]}function et(t){if(!t[h])return;let{value:e,listeners:n}=t[h],r=At();return r&&n.add(r),g.has(r)&&g.get(r).add(t),e}function ct(t,e,n){if(!t[h])return;let r=t[h];if(!(!n&&r.value===e))return r.value=e,r.listeners.forEach(o=>o(e)),e}function I(t,e){if(t[h])return t[h].listeners.add(e)}function w(t,e,n){let r=t[h];if(!r)return;let o=r.listeners.delete(e);if(n&&!r.listeners.size){if(m.clear(t),!g.has(r))return o;let c=g.get(r);if(!g.has(c))return o;g.get(c).forEach(s=>w(s,c,!0))}return o}F(nt);
+globalThis.dde= {O: m,
assign: S,
-assignAttribute: X,
-chainableAppend: at,
-classListDeclarative: pt,
-createElement: k,
-createElementNS: Pt,
-customElementRender: qt,
-customElementWithDDE: Ft,
-dispatchEvent: Ht,
-el: k,
-elNS: Pt,
-elementAttribute: lt,
-empty: Lt,
-isObservable: q,
-lifecycleToEvents: Ft,
-observable: E,
-observedAttributes: gt,
-on: y,
-registerReactivity: $,
+assignAttribute: K,
+chainableAppend: ut,
+classListDeclarative: at,
+createElement: D,
+createElementNS: kt,
+customElementRender: Mt,
+customElementWithDDE: Wt,
+dispatchEvent: Ut,
+el: D,
+elNS: kt,
+elementAttribute: dt,
+empty: Nt,
+isObservable: W,
+lifecycleToEvents: Wt,
+observable: m,
+observedAttributes: bt,
+on: x,
+registerReactivity: F,
scope: v,
-simulateSlots: Nt
+simulateSlots: Dt
};
})();
\ No newline at end of file
diff --git a/dist/dde.js b/dist/dde.js
index b2d06f7..4005c82 100644
--- a/dist/dde.js
+++ b/dist/dde.js
@@ -1,25 +1,25 @@
//deka-dom-el library is available via global namespace `dde`
(()=> {
-var A={isObservable(t){return!1},processReactiveAttribute(t,e,n,c){return n}};function B(t,e=!0){return e?Object.assign(A,t):(Object.setPrototypeOf(t,A),t)}function R(t){return A.isPrototypeOf(t)&&t!==A?t:A}function x(t){return typeof t>"u"}function _(t,e){if(!t||!(t instanceof AbortSignal))return!0;if(!t.aborted)return t.addEventListener("abort",e),function(){t.removeEventListener("abort",e)}}function W(t,e){let{observedAttributes:n=[]}=t.constructor;return n.reduce(function(c,r){return Reflect.set(c,I(r),e(t,r)),c},{})}function I(t){return t.replace(/-./g,e=>e[1].toUpperCase())}var a={setDeleteAttr:Z,ssr:"",D:globalThis.document,F:globalThis.DocumentFragment,H:globalThis.HTMLElement,S:globalThis.SVGElement,M:globalThis.MutationObserver};function Z(t,e,n){if(Reflect.set(t,e,n),!!x(n)){if(Reflect.deleteProperty(t,e),t instanceof a.H&&t.getAttribute(e)==="undefined")return t.removeAttribute(e);if(Reflect.get(t,e)==="undefined")return Reflect.set(t,e,"")}}var y="__dde_lifecycleToEvents",g="__dde_disconnect_mode";var v=[{get scope(){return a.D.body},host:t=>t?t(a.D.body):a.D.body,custom_element:!1,prevent:!0}],E={get current(){return v[v.length-1]},get host(){return this.current.host},preventDefault(){let{current:t}=this;return t.prevent=!0,t},get state(){return[...v]},push(t={}){return v.push(Object.assign({},this.current,{prevent:!1},t))},pushRoot(){return v.push(v[0])},pop(){if(v.length!==1)return v.pop()}};function j(...t){return this.appendOriginal(...t),this}function G(t){return t.append===j||(t.appendOriginal=t.append,t.append=j),t}var O;function M(t,e,...n){let c=R(this),r=0,o,i;switch((Object(e)!==e||c.isObservable(e))&&(e={textContent:e}),!0){case typeof t=="function":{r=1,E.push({scope:t,host:(...h)=>h.length?(r===1?n.unshift(...h):h.forEach(l=>l(i)),void 0):i}),o=t(e||void 0);let d=o instanceof a.F;if(o.nodeName==="#comment")break;let p=M.mark({type:"component",name:t.name,host:d?"this":"parentElement"});o.prepend(p),d&&(i=p);break}case t==="#text":o=w.call(this,a.D.createTextNode(""),e);break;case(t==="<>"||!t):o=w.call(this,a.D.createDocumentFragment(),e);break;case!!O:o=w.call(this,a.D.createElementNS(O,t),e);break;case!o:o=w.call(this,a.D.createElement(t),e)}return G(o),i||(i=o),n.forEach(d=>d(i)),r&&E.pop(),r=2,o}function ft(t,e=t,n=void 0){let c=Symbol.for("default"),r=Array.from(e.querySelectorAll("slot")).reduce((i,d)=>Reflect.set(i,d.name||c,d)&&i,{}),o=Reflect.has(r,c);if(t.append=new Proxy(t.append,{apply(i,d,p){if(!p.length)return t;let h=a.D.createDocumentFragment();for(let l of p){if(!l||!l.slot){o&&h.appendChild(l);continue}let D=l.slot,s=r[D];K(l,"remove","slot"),s&&(V(s,l,n),Reflect.deleteProperty(r,D))}return o&&(r[c].replaceWith(h),Reflect.deleteProperty(r,c)),t.append=i,t}}),t!==e){let i=Array.from(t.childNodes);i.forEach(d=>d.remove()),t.append(...i)}return e}function V(t,e,n){n&&n(t,e);try{t.replaceWith(w(e,{className:[e.className,t.className],dataset:{...t.dataset}}))}catch{t.replaceWith(e)}}M.mark=function(t,e=!1){t=Object.entries(t).map(([r,o])=>r+`="${o}"`).join(" ");let n=e?"":"/",c=a.D.createComment(``);return e&&(c.end=a.D.createComment("")),c};function at(t){let e=this;return function(...c){O=t;let r=M.call(e,...c);return O=void 0,r}}var S=new WeakMap,{setDeleteAttr:q}=a;function w(t,...e){if(!e.length)return t;S.set(t,U(t,this));for(let[n,c]of Object.entries(Object.assign({},...e)))$.call(this,t,n,c);return S.delete(t),t}function $(t,e,n){let{setRemoveAttr:c,s:r}=U(t,this),o=this;n=r.processReactiveAttribute(t,e,n,(d,p)=>$.call(o,t,d,p));let[i]=e;if(i==="=")return c(e.slice(1),n);if(i===".")return F(t,e.slice(1),n);if(/(aria|data)([A-Z])/.test(e))return e=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),c(e,n);switch(e==="className"&&(e="class"),e){case"xlink:href":return c(e,n,"http://www.w3.org/1999/xlink");case"textContent":return q(t,e,n);case"style":if(typeof n!="object")break;case"dataset":return L(r,n,F.bind(null,t[e]));case"ariaset":return L(r,n,(d,p)=>c("aria-"+d,p));case"classList":return J.call(o,t,n)}return Q(t,e)?q(t,e,n):c(e,n)}function U(t,e){if(S.has(t))return S.get(t);let c=(t instanceof a.S?Y:X).bind(null,t,"Attribute"),r=R(e);return{setRemoveAttr:c,s:r}}function J(t,e){let n=R(this);return L(n,e,(c,r)=>t.classList.toggle(c,r===-1?void 0:!!r)),t}function dt(t){return Array.from(t.children).forEach(e=>e.remove()),t}function K(t,e,n,c){return t instanceof a.H?t[e+"Attribute"](n,c):t[e+"AttributeNS"](null,n,c)}function Q(t,e){if(!Reflect.has(t,e))return!1;let n=H(t,e);return!x(n.set)}function H(t,e){if(t=Object.getPrototypeOf(t),!t)return{};let n=Object.getOwnPropertyDescriptor(t,e);return n||H(t,e)}function L(t,e,n){if(!(typeof e!="object"||e===null))return Object.entries(e).forEach(function([r,o]){r&&(o=t.processReactiveAttribute(e,r,o,n),n(r,o))})}function z(t){return Array.isArray(t)?t.filter(Boolean).join(" "):t}function X(t,e,n,c){return t[(x(c)?"remove":"set")+e](n,z(c))}function Y(t,e,n,c,r=null){return t[(x(c)?"remove":"set")+e+"NS"](r,n,z(c))}function F(t,e,n){if(Reflect.set(t,e,n),!!x(n))return Reflect.deleteProperty(t,e)}function gt(t,e,n=tt){E.push({scope:t,host:(...r)=>r.length?r.forEach(o=>o(t)):t,custom_element:t}),typeof n=="function"&&(n=n.call(t,t));let c=e.call(t,n);return E.pop(),c}function vt(t){return T(t.prototype,"connectedCallback",function(e,n,c){e.apply(n,c),n.dispatchEvent(new Event("dde:connected"))}),t.prototype[g]||(t.prototype[g]="dde"),T(t.prototype,"disconnectedCallback",function(e,n,c){e.apply(n,c);let r=()=>n.dispatchEvent(new Event("dde:disconnected"));if(n[g]!=="dde")return r();(queueMicrotask||setTimeout)(()=>!n.isConnected&&r())}),T(t.prototype,"attributeChangedCallback",function(e,n,c){let[r,,o]=c;n.dispatchEvent(new CustomEvent("dde:attributeChanged",{detail:[r,o]})),e.apply(n,c)}),t.prototype[y]=!0,t}function T(t,e,n){t[e]=new Proxy(t[e]||(()=>{}),{apply:n})}function tt(t){return W(t,(e,n)=>e.getAttribute(n))}function mt(t,e,n){return e||(e={}),function(r,...o){n&&(o.unshift(r),r=typeof n=="function"?n():n);let i=o.length?new CustomEvent(t,Object.assign({detail:o[0]},e)):new Event(t,e);return r.dispatchEvent(i)}}function C(t,e,n){return function(r){return r.addEventListener(t,e,n),r}}var N=a.M?nt():new Proxy({},{get(){return()=>{}}}),et=new WeakSet;C.connected=function(t,e){let{custom_element:n}=E.current,c="connected";return typeof e!="object"&&(e={}),typeof e.once!="boolean"&&(e.once=!0),function(o){n&&(o=n);let i="dde:"+c;return o.addEventListener(i,t,e),o[y]?o:o.isConnected?(o.dispatchEvent(new Event(i)),o):(_(e.signal,()=>N.offConnected(o,t))&&N.onConnected(o,t),o)}};C.disconnected=function(t,e){let{custom_element:n}=E.current,c="disconnected";return typeof e!="object"&&(e={}),typeof e.once!="boolean"&&(e.once=!0),function(o){n&&(o=n),o[g]||(o[g]="dde");let i="dde:"+c;return o.addEventListener(i,t,e),o[y]||_(e.signal,()=>N.offDisconnected(o,t))&&N.onDisconnected(o,t),o}};var k=new WeakMap;C.disconnectedAsAbort=function(t){if(k.has(t))return k.get(t);let e=new AbortController;return k.set(t,e),t(C.disconnected(()=>e.abort())),e};C.attributeChanged=function(t,e){let n="attributeChanged";return typeof e!="object"&&(e={}),function(r){let o="dde:"+n;if(r.addEventListener(o,t,e),r[y]||et.has(r)||!a.M)return r;let i=new a.M(function(p){for(let{attributeName:h,target:l}of p)l.dispatchEvent(new CustomEvent(o,{detail:[h,l.getAttribute(h)]}))});return _(e.signal,()=>i.disconnect())&&i.observe(r,{attributes:!0}),r}};function nt(){let t=new Map,e=!1,n=new a.M(function(s){for(let u of s)if(u.type==="childList"){if(h(u.addedNodes,!0)){i();continue}l(u.removedNodes,!0)&&i()}});return{onConnected(s,u){o();let f=r(s);f.connected.has(u)||(f.connected.add(u),f.length_c+=1)},offConnected(s,u){if(!t.has(s))return;let f=t.get(s);f.connected.has(u)&&(f.connected.delete(u),f.length_c-=1,c(s,f))},onDisconnected(s,u){o();let f=r(s);f.disconnected.has(u)||(f.disconnected.add(u),f.length_d+=1)},offDisconnected(s,u){if(!t.has(s))return;let f=t.get(s);f.disconnected.has(u)&&(f.disconnected.delete(u),f.length_d-=1,c(s,f))}};function c(s,u){u.length_c||u.length_d||(t.delete(s),i())}function r(s){if(t.has(s))return t.get(s);let u={connected:new WeakSet,length_c:0,disconnected:new WeakSet,length_d:0};return t.set(s,u),u}function o(){e||(e=!0,n.observe(a.D.body,{childList:!0,subtree:!0}))}function i(){!e||t.size||(e=!1,n.disconnect())}function d(){return new Promise(function(s){(requestIdleCallback||requestAnimationFrame)(s)})}async function p(s){t.size>30&&await d();let u=[];if(!(s instanceof Node))return u;for(let f of t.keys())f===s||!(f instanceof Node)||s.contains(f)&&u.push(f);return u}function h(s,u){let f=!1;for(let b of s){if(u&&p(b).then(h),!t.has(b))continue;let m=t.get(b);m.length_c&&(b.dispatchEvent(new Event("dde:connected")),m.connected=new WeakSet,m.length_c=0,m.length_d||t.delete(b),f=!0)}return f}function l(s,u){let f=!1;for(let b of s){if(u&&p(b).then(l),!t.has(b)||!t.get(b).length_d)continue;let P=D(b);b[g]==="dde"?(queueMicrotask||setTimeout)(P):P(),f=!0}return f}function D(s){return()=>{s.isConnected||(s.dispatchEvent(new Event("dde:disconnected")),t.delete(s))}}}
-globalThis.dde= {assign: w,
-assignAttribute: $,
-chainableAppend: G,
-classListDeclarative: J,
-createElement: M,
-createElementNS: at,
-customElementRender: gt,
-customElementWithDDE: vt,
-dispatchEvent: mt,
-el: M,
-elNS: at,
-elementAttribute: K,
-empty: dt,
-lifecycleToEvents: vt,
-observedAttributes: tt,
-on: C,
-registerReactivity: B,
-scope: E,
-simulateSlots: ft
+var y={isObservable(t){return!1},processReactiveAttribute(t,e,n,r){return n}};function H(t,e=!0){return e?Object.assign(y,t):(Object.setPrototypeOf(t,y),t)}function D(t){return y.isPrototypeOf(t)&&t!==y?t:y}function E(t){return typeof t>"u"}function R(t,e){if(!t||!(t instanceof AbortSignal))return!0;if(!t.aborted)return t.addEventListener("abort",e),function(){t.removeEventListener("abort",e)}}function M(t,e){let{observedAttributes:n=[]}=t.constructor;return n.reduce(function(r,o){return Reflect.set(r,z(o),e(t,o)),r},{})}function z(t){return t.replace(/-./g,e=>e[1].toUpperCase())}var a={setDeleteAttr:B,ssr:"",D:globalThis.document,F:globalThis.DocumentFragment,H:globalThis.HTMLElement,S:globalThis.SVGElement,M:globalThis.MutationObserver};function B(t,e,n){if(Reflect.set(t,e,n),!!E(n)){if(Reflect.deleteProperty(t,e),t instanceof a.H&&t.getAttribute(e)==="undefined")return t.removeAttribute(e);if(Reflect.get(t,e)==="undefined")return Reflect.set(t,e,"")}}var x="__dde_lifecycleToEvents";var g=[{get scope(){return a.D.body},host:t=>t?t(a.D.body):a.D.body,custom_element:!1,prevent:!0}],v={get current(){return g[g.length-1]},get host(){return this.current.host},preventDefault(){let{current:t}=this;return t.prevent=!0,t},get state(){return[...g]},push(t={}){return g.push(Object.assign({},this.current,{prevent:!1},t))},pushRoot(){return g.push(g[0])},pop(){if(g.length!==1)return g.pop()}};function k(...t){return this.appendOriginal(...t),this}function I(t){return t.append===k||(t.appendOriginal=t.append,t.append=k),t}var O;function L(t,e,...n){let r=D(this),o=0,c,i;switch((Object(e)!==e||r.isObservable(e))&&(e={textContent:e}),!0){case typeof t=="function":{o=1,v.push({scope:t,host:(...h)=>h.length?(o===1?n.unshift(...h):h.forEach(l=>l(i)),void 0):i}),c=t(e||void 0);let d=c instanceof a.F;if(c.nodeName==="#comment")break;let p=L.mark({type:"component",name:t.name,host:d?"this":"parentElement"});c.prepend(p),d&&(i=p);break}case t==="#text":c=A.call(this,a.D.createTextNode(""),e);break;case(t==="<>"||!t):c=A.call(this,a.D.createDocumentFragment(),e);break;case!!O:c=A.call(this,a.D.createElementNS(O,t),e);break;case!c:c=A.call(this,a.D.createElement(t),e)}return I(c),i||(i=c),n.forEach(d=>d(i)),o&&v.pop(),o=2,c}function it(t,e=t,n=void 0){let r=Symbol.for("default"),o=Array.from(e.querySelectorAll("slot")).reduce((i,d)=>Reflect.set(i,d.name||r,d)&&i,{}),c=Reflect.has(o,r);if(t.append=new Proxy(t.append,{apply(i,d,p){if(!p.length)return t;let h=a.D.createDocumentFragment();for(let l of p){if(!l||!l.slot){c&&h.appendChild(l);continue}let C=l.slot,s=o[C];V(l,"remove","slot"),s&&(Z(s,l,n),Reflect.deleteProperty(o,C))}return c&&(o[r].replaceWith(h),Reflect.deleteProperty(o,r)),t.append=i,t}}),t!==e){let i=Array.from(t.childNodes);i.forEach(d=>d.remove()),t.append(...i)}return e}function Z(t,e,n){n&&n(t,e);try{t.replaceWith(A(e,{className:[e.className,t.className],dataset:{...t.dataset}}))}catch{t.replaceWith(e)}}L.mark=function(t,e=!1){t=Object.entries(t).map(([o,c])=>o+`="${c}"`).join(" ");let n=e?"":"/",r=a.D.createComment(``);return e&&(r.end=a.D.createComment("")),r};function ut(t){let e=this;return function(...r){O=t;let o=L.call(e,...r);return O=void 0,o}}var _=new WeakMap,{setDeleteAttr:W}=a;function A(t,...e){if(!e.length)return t;_.set(t,F(t,this));for(let[n,r]of Object.entries(Object.assign({},...e)))q.call(this,t,n,r);return _.delete(t),t}function q(t,e,n){let{setRemoveAttr:r,s:o}=F(t,this),c=this;n=o.processReactiveAttribute(t,e,n,(d,p)=>q.call(c,t,d,p));let[i]=e;if(i==="=")return r(e.slice(1),n);if(i===".")return j(t,e.slice(1),n);if(/(aria|data)([A-Z])/.test(e))return e=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),r(e,n);switch(e==="className"&&(e="class"),e){case"xlink:href":return r(e,n,"http://www.w3.org/1999/xlink");case"textContent":return W(t,e,n);case"style":if(typeof n!="object")break;case"dataset":return N(o,n,j.bind(null,t[e]));case"ariaset":return N(o,n,(d,p)=>r("aria-"+d,p));case"classList":return G.call(c,t,n)}return J(t,e)?W(t,e,n):r(e,n)}function F(t,e){if(_.has(t))return _.get(t);let r=(t instanceof a.S?Q:K).bind(null,t,"Attribute"),o=D(e);return{setRemoveAttr:r,s:o}}function G(t,e){let n=D(this);return N(n,e,(r,o)=>t.classList.toggle(r,o===-1?void 0:!!o)),t}function ft(t){return Array.from(t.children).forEach(e=>e.remove()),t}function V(t,e,n,r){return t instanceof a.H?t[e+"Attribute"](n,r):t[e+"AttributeNS"](null,n,r)}function J(t,e){if(!Reflect.has(t,e))return!1;let n=$(t,e);return!E(n.set)}function $(t,e){if(t=Object.getPrototypeOf(t),!t)return{};let n=Object.getOwnPropertyDescriptor(t,e);return n||$(t,e)}function N(t,e,n){if(!(typeof e!="object"||e===null))return Object.entries(e).forEach(function([o,c]){o&&(c=t.processReactiveAttribute(e,o,c,n),n(o,c))})}function U(t){return Array.isArray(t)?t.filter(Boolean).join(" "):t}function K(t,e,n,r){return t[(E(r)?"remove":"set")+e](n,U(r))}function Q(t,e,n,r,o=null){return t[(E(r)?"remove":"set")+e+"NS"](o,n,U(r))}function j(t,e,n){if(Reflect.set(t,e,n),!!E(n))return Reflect.deleteProperty(t,e)}function ht(t,e,n=X){v.push({scope:t,host:(...o)=>o.length?o.forEach(c=>c(t)):t,custom_element:t}),typeof n=="function"&&(n=n.call(t,t));let r=e.call(t,n);return v.pop(),r}function bt(t){return T(t.prototype,"connectedCallback",function(e,n,r){e.apply(n,r),n.dispatchEvent(new Event("dde:connected"))}),T(t.prototype,"disconnectedCallback",function(e,n,r){e.apply(n,r),(queueMicrotask||setTimeout)(()=>!n.isConnected&&n.dispatchEvent(new Event("dde:disconnected")))}),T(t.prototype,"attributeChangedCallback",function(e,n,r){let[o,,c]=r;n.dispatchEvent(new CustomEvent("dde:attributeChanged",{detail:[o,c]})),e.apply(n,r)}),t.prototype[x]=!0,t}function T(t,e,n){t[e]=new Proxy(t[e]||(()=>{}),{apply:n})}function X(t){return M(t,(e,n)=>e.getAttribute(n))}function xt(t,e,n){return e||(e={}),function(o,...c){n&&(c.unshift(o),o=typeof n=="function"?n():n);let i=c.length?new CustomEvent(t,Object.assign({detail:c[0]},e)):new Event(t,e);return o.dispatchEvent(i)}}function w(t,e,n){return function(o){return o.addEventListener(t,e,n),o}}var S=a.M?tt():new Proxy({},{get(){return()=>{}}}),Y=new WeakSet;w.connected=function(t,e){let{custom_element:n}=v.current,r="connected";return typeof e!="object"&&(e={}),e.once=!0,function(c){n&&(c=n);let i="dde:"+r;return c.addEventListener(i,t,e),c[x]?c:c.isConnected?(c.dispatchEvent(new Event(i)),c):(R(e.signal,()=>S.offConnected(c,t))&&S.onConnected(c,t),c)}};w.disconnected=function(t,e){let{custom_element:n}=v.current,r="disconnected";return typeof e!="object"&&(e={}),e.once=!0,function(c){n&&(c=n);let i="dde:"+r;return c.addEventListener(i,t,e),c[x]||R(e.signal,()=>S.offDisconnected(c,t))&&S.onDisconnected(c,t),c}};var P=new WeakMap;w.disconnectedAsAbort=function(t){if(P.has(t))return P.get(t);let e=new AbortController;return P.set(t,e),t(w.disconnected(()=>e.abort())),e};w.attributeChanged=function(t,e){let n="attributeChanged";return typeof e!="object"&&(e={}),function(o){let c="dde:"+n;if(o.addEventListener(c,t,e),o[x]||Y.has(o)||!a.M)return o;let i=new a.M(function(p){for(let{attributeName:h,target:l}of p)l.dispatchEvent(new CustomEvent(c,{detail:[h,l.getAttribute(h)]}))});return R(e.signal,()=>i.disconnect())&&i.observe(o,{attributes:!0}),o}};function tt(){let t=new Map,e=!1,n=new a.M(function(s){for(let u of s)if(u.type==="childList"){if(h(u.addedNodes,!0)){i();continue}l(u.removedNodes,!0)&&i()}});return{onConnected(s,u){c();let f=o(s);f.connected.has(u)||(f.connected.add(u),f.length_c+=1)},offConnected(s,u){if(!t.has(s))return;let f=t.get(s);f.connected.has(u)&&(f.connected.delete(u),f.length_c-=1,r(s,f))},onDisconnected(s,u){c();let f=o(s);f.disconnected.has(u)||(f.disconnected.add(u),f.length_d+=1)},offDisconnected(s,u){if(!t.has(s))return;let f=t.get(s);f.disconnected.has(u)&&(f.disconnected.delete(u),f.length_d-=1,r(s,f))}};function r(s,u){u.length_c||u.length_d||(t.delete(s),i())}function o(s){if(t.has(s))return t.get(s);let u={connected:new WeakSet,length_c:0,disconnected:new WeakSet,length_d:0};return t.set(s,u),u}function c(){e||(e=!0,n.observe(a.D.body,{childList:!0,subtree:!0}))}function i(){!e||t.size||(e=!1,n.disconnect())}function d(){return new Promise(function(s){(requestIdleCallback||requestAnimationFrame)(s)})}async function p(s){t.size>30&&await d();let u=[];if(!(s instanceof Node))return u;for(let f of t.keys())f===s||!(f instanceof Node)||s.contains(f)&&u.push(f);return u}function h(s,u){let f=!1;for(let b of s){if(u&&p(b).then(h),!t.has(b))continue;let m=t.get(b);m.length_c&&(b.dispatchEvent(new Event("dde:connected")),m.connected=new WeakSet,m.length_c=0,m.length_d||t.delete(b),f=!0)}return f}function l(s,u){let f=!1;for(let b of s)u&&p(b).then(l),!(!t.has(b)||!t.get(b).length_d)&&((queueMicrotask||setTimeout)(C(b)),f=!0);return f}function C(s){return()=>{s.isConnected||(s.dispatchEvent(new Event("dde:disconnected")),t.delete(s))}}}
+globalThis.dde= {assign: A,
+assignAttribute: q,
+chainableAppend: I,
+classListDeclarative: G,
+createElement: L,
+createElementNS: ut,
+customElementRender: ht,
+customElementWithDDE: bt,
+dispatchEvent: xt,
+el: L,
+elNS: ut,
+elementAttribute: V,
+empty: ft,
+lifecycleToEvents: bt,
+observedAttributes: X,
+on: w,
+registerReactivity: H,
+scope: v,
+simulateSlots: it
};
})();
\ No newline at end of file
diff --git a/dist/esm-with-observables.js b/dist/esm-with-observables.js
index d6d0b6f..76ef113 100644
--- a/dist/esm-with-observables.js
+++ b/dist/esm-with-observables.js
@@ -1,4 +1,4 @@
-var D={isObservable(t){return!1},processReactiveAttribute(t,e,n,r){return n}};function $(t,e=!0){return e?Object.assign(D,t):(Object.setPrototypeOf(t,D),t)}function P(t){return D.isPrototypeOf(t)&&t!==D?t:D}function O(t){return typeof t>"u"}function G(t){let e=typeof t;return e!=="object"?e:t===null?"null":Object.prototype.toString.call(t)}function L(t,e){if(!t||!(t instanceof AbortSignal))return!0;if(!t.aborted)return t.addEventListener("abort",e),function(){t.removeEventListener("abort",e)}}function T(t,e){let{observedAttributes:n=[]}=t.constructor;return n.reduce(function(r,o){return Reflect.set(r,ft(o),e(t,o)),r},{})}function ft(t){return t.replace(/-./g,e=>e[1].toUpperCase())}var d={setDeleteAttr:ut,ssr:"",D:globalThis.document,F:globalThis.DocumentFragment,H:globalThis.HTMLElement,S:globalThis.SVGElement,M:globalThis.MutationObserver};function ut(t,e,n){if(Reflect.set(t,e,n),!!O(n)){if(Reflect.deleteProperty(t,e),t instanceof d.H&&t.getAttribute(e)==="undefined")return t.removeAttribute(e);if(Reflect.get(t,e)==="undefined")return Reflect.set(t,e,"")}}var C="__dde_lifecycleToEvents",x="__dde_disconnect_mode";var A=[{get scope(){return d.D.body},host:t=>t?t(d.D.body):d.D.body,custom_element:!1,prevent:!0}],v={get current(){return A[A.length-1]},get host(){return this.current.host},preventDefault(){let{current:t}=this;return t.prevent=!0,t},get state(){return[...A]},push(t={}){return A.push(Object.assign({},this.current,{prevent:!1},t))},pushRoot(){return A.push(A[0])},pop(){if(A.length!==1)return A.pop()}};function V(...t){return this.appendOriginal(...t),this}function at(t){return t.append===V||(t.appendOriginal=t.append,t.append=V),t}var j;function k(t,e,...n){let r=P(this),o=0,c,s;switch((Object(e)!==e||r.isObservable(e))&&(e={textContent:e}),!0){case typeof t=="function":{o=1,v.push({scope:t,host:(...l)=>l.length?(o===1?n.unshift(...l):l.forEach(b=>b(s)),void 0):s}),c=t(e||void 0);let a=c instanceof d.F;if(c.nodeName==="#comment")break;let p=k.mark({type:"component",name:t.name,host:a?"this":"parentElement"});c.prepend(p),a&&(s=p);break}case t==="#text":c=S.call(this,d.D.createTextNode(""),e);break;case(t==="<>"||!t):c=S.call(this,d.D.createDocumentFragment(),e);break;case!!j:c=S.call(this,d.D.createElementNS(j,t),e);break;case!c:c=S.call(this,d.D.createElement(t),e)}return at(c),s||(s=c),n.forEach(a=>a(s)),o&&v.pop(),o=2,c}function Nt(t,e=t,n=void 0){let r=Symbol.for("default"),o=Array.from(e.querySelectorAll("slot")).reduce((s,a)=>Reflect.set(s,a.name||r,a)&&s,{}),c=Reflect.has(o,r);if(t.append=new Proxy(t.append,{apply(s,a,p){if(!p.length)return t;let l=d.D.createDocumentFragment();for(let b of p){if(!b||!b.slot){c&&l.appendChild(b);continue}let N=b.slot,i=o[N];lt(b,"remove","slot"),i&&(dt(i,b,n),Reflect.deleteProperty(o,N))}return c&&(o[r].replaceWith(l),Reflect.deleteProperty(o,r)),t.append=s,t}}),t!==e){let s=Array.from(t.childNodes);s.forEach(a=>a.remove()),t.append(...s)}return e}function dt(t,e,n){n&&n(t,e);try{t.replaceWith(S(e,{className:[e.className,t.className],dataset:{...t.dataset}}))}catch{t.replaceWith(e)}}k.mark=function(t,e=!1){t=Object.entries(t).map(([o,c])=>o+`="${c}"`).join(" ");let n=e?"":"/",r=d.D.createComment(``);return e&&(r.end=d.D.createComment("")),r};function Pt(t){let e=this;return function(...r){j=t;let o=k.call(e,...r);return j=void 0,o}}var M=new WeakMap,{setDeleteAttr:K}=d;function S(t,...e){if(!e.length)return t;M.set(t,Y(t,this));for(let[n,r]of Object.entries(Object.assign({},...e)))X.call(this,t,n,r);return M.delete(t),t}function X(t,e,n){let{setRemoveAttr:r,s:o}=Y(t,this),c=this;n=o.processReactiveAttribute(t,e,n,(a,p)=>X.call(c,t,a,p));let[s]=e;if(s==="=")return r(e.slice(1),n);if(s===".")return Q(t,e.slice(1),n);if(/(aria|data)([A-Z])/.test(e))return e=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),r(e,n);switch(e==="className"&&(e="class"),e){case"xlink:href":return r(e,n,"http://www.w3.org/1999/xlink");case"textContent":return K(t,e,n);case"style":if(typeof n!="object")break;case"dataset":return U(o,n,Q.bind(null,t[e]));case"ariaset":return U(o,n,(a,p)=>r("aria-"+a,p));case"classList":return pt.call(c,t,n)}return ht(t,e)?K(t,e,n):r(e,n)}function Y(t,e){if(M.has(t))return M.get(t);let r=(t instanceof d.S?vt:bt).bind(null,t,"Attribute"),o=P(e);return{setRemoveAttr:r,s:o}}function pt(t,e){let n=P(this);return U(n,e,(r,o)=>t.classList.toggle(r,o===-1?void 0:!!o)),t}function Lt(t){return Array.from(t.children).forEach(e=>e.remove()),t}function lt(t,e,n,r){return t instanceof d.H?t[e+"Attribute"](n,r):t[e+"AttributeNS"](null,n,r)}function ht(t,e){if(!Reflect.has(t,e))return!1;let n=tt(t,e);return!O(n.set)}function tt(t,e){if(t=Object.getPrototypeOf(t),!t)return{};let n=Object.getOwnPropertyDescriptor(t,e);return n||tt(t,e)}function U(t,e,n){if(!(typeof e!="object"||e===null))return Object.entries(e).forEach(function([o,c]){o&&(c=t.processReactiveAttribute(e,o,c,n),n(o,c))})}function et(t){return Array.isArray(t)?t.filter(Boolean).join(" "):t}function bt(t,e,n,r){return t[(O(r)?"remove":"set")+e](n,et(r))}function vt(t,e,n,r,o=null){return t[(O(r)?"remove":"set")+e+"NS"](o,n,et(r))}function Q(t,e,n){if(Reflect.set(t,e,n),!!O(n))return Reflect.deleteProperty(t,e)}function qt(t,e,n=gt){v.push({scope:t,host:(...o)=>o.length?o.forEach(c=>c(t)):t,custom_element:t}),typeof n=="function"&&(n=n.call(t,t));let r=e.call(t,n);return v.pop(),r}function Ft(t){return z(t.prototype,"connectedCallback",function(e,n,r){e.apply(n,r),n.dispatchEvent(new Event("dde:connected"))}),t.prototype[x]||(t.prototype[x]="dde"),z(t.prototype,"disconnectedCallback",function(e,n,r){e.apply(n,r);let o=()=>n.dispatchEvent(new Event("dde:disconnected"));if(n[x]!=="dde")return o();(queueMicrotask||setTimeout)(()=>!n.isConnected&&o())}),z(t.prototype,"attributeChangedCallback",function(e,n,r){let[o,,c]=r;n.dispatchEvent(new CustomEvent("dde:attributeChanged",{detail:[o,c]})),e.apply(n,r)}),t.prototype[C]=!0,t}function z(t,e,n){t[e]=new Proxy(t[e]||(()=>{}),{apply:n})}function gt(t){return T(t,(e,n)=>e.getAttribute(n))}function Ht(t,e,n){return e||(e={}),function(o,...c){n&&(c.unshift(o),o=typeof n=="function"?n():n);let s=c.length?new CustomEvent(t,Object.assign({detail:c[0]},e)):new Event(t,e);return o.dispatchEvent(s)}}function y(t,e,n){return function(o){return o.addEventListener(t,e,n),o}}var W=d.M?mt():new Proxy({},{get(){return()=>{}}}),Et=new WeakSet;y.connected=function(t,e){let{custom_element:n}=v.current,r="connected";return typeof e!="object"&&(e={}),typeof e.once!="boolean"&&(e.once=!0),function(c){n&&(c=n);let s="dde:"+r;return c.addEventListener(s,t,e),c[C]?c:c.isConnected?(c.dispatchEvent(new Event(s)),c):(L(e.signal,()=>W.offConnected(c,t))&&W.onConnected(c,t),c)}};y.disconnected=function(t,e){let{custom_element:n}=v.current,r="disconnected";return typeof e!="object"&&(e={}),typeof e.once!="boolean"&&(e.once=!0),function(c){n&&(c=n),c[x]||(c[x]="dde");let s="dde:"+r;return c.addEventListener(s,t,e),c[C]||L(e.signal,()=>W.offDisconnected(c,t))&&W.onDisconnected(c,t),c}};var H=new WeakMap;y.disconnectedAsAbort=function(t){if(H.has(t))return H.get(t);let e=new AbortController;return H.set(t,e),t(y.disconnected(()=>e.abort())),e};y.attributeChanged=function(t,e){let n="attributeChanged";return typeof e!="object"&&(e={}),function(o){let c="dde:"+n;if(o.addEventListener(c,t,e),o[C]||Et.has(o)||!d.M)return o;let s=new d.M(function(p){for(let{attributeName:l,target:b}of p)b.dispatchEvent(new CustomEvent(c,{detail:[l,b.getAttribute(l)]}))});return L(e.signal,()=>s.disconnect())&&s.observe(o,{attributes:!0}),o}};function mt(){let t=new Map,e=!1,n=new d.M(function(i){for(let f of i)if(f.type==="childList"){if(l(f.addedNodes,!0)){s();continue}b(f.removedNodes,!0)&&s()}});return{onConnected(i,f){c();let u=o(i);u.connected.has(f)||(u.connected.add(f),u.length_c+=1)},offConnected(i,f){if(!t.has(i))return;let u=t.get(i);u.connected.has(f)&&(u.connected.delete(f),u.length_c-=1,r(i,u))},onDisconnected(i,f){c();let u=o(i);u.disconnected.has(f)||(u.disconnected.add(f),u.length_d+=1)},offDisconnected(i,f){if(!t.has(i))return;let u=t.get(i);u.disconnected.has(f)&&(u.disconnected.delete(f),u.length_d-=1,r(i,u))}};function r(i,f){f.length_c||f.length_d||(t.delete(i),s())}function o(i){if(t.has(i))return t.get(i);let f={connected:new WeakSet,length_c:0,disconnected:new WeakSet,length_d:0};return t.set(i,f),f}function c(){e||(e=!0,n.observe(d.D.body,{childList:!0,subtree:!0}))}function s(){!e||t.size||(e=!1,n.disconnect())}function a(){return new Promise(function(i){(requestIdleCallback||requestAnimationFrame)(i)})}async function p(i){t.size>30&&await a();let f=[];if(!(i instanceof Node))return f;for(let u of t.keys())u===i||!(u instanceof Node)||i.contains(u)&&f.push(u);return f}function l(i,f){let u=!1;for(let m of i){if(f&&p(m).then(l),!t.has(m))continue;let R=t.get(m);R.length_c&&(m.dispatchEvent(new Event("dde:connected")),R.connected=new WeakSet,R.length_c=0,R.length_d||t.delete(m),u=!0)}return u}function b(i,f){let u=!1;for(let m of i){if(f&&p(m).then(b),!t.has(m)||!t.get(m).length_d)continue;let Z=N(m);m[x]==="dde"?(queueMicrotask||setTimeout)(Z):Z(),u=!0}return u}function N(i){return()=>{i.isConnected||(i.dispatchEvent(new Event("dde:disconnected")),t.delete(i))}}}var h=Symbol.for("observable");function q(t){try{return Reflect.has(t,h)}catch{return!1}}var F=[],g=new WeakMap;function E(t,e){if(typeof t!="function")return nt(!1,t,e);if(q(t))return t;let n=nt(!0),r=function(){let[o,...c]=g.get(r);if(g.set(r,new Set([o])),F.push(r),it(n,t()),F.pop(),!c.length)return;let s=g.get(r);for(let a of c)s.has(a)||w(a,r)};return g.set(n[h],r),g.set(r,new Set([n])),r(),n}E.action=function(t,e,...n){let r=t[h],{actions:o}=r;if(!o||!Reflect.has(o,e))throw new Error(`'${t}' has no action with name '${e}'!`);if(o[e].apply(r,n),r.skip)return Reflect.deleteProperty(r,"skip");r.listeners.forEach(c=>c(r.value))};E.on=function t(e,n,r={}){let{signal:o}=r;if(!(o&&o.aborted)){if(Array.isArray(e))return e.forEach(c=>t(c,n,r));J(e,n),o&&o.addEventListener("abort",()=>w(e,n))}};E.symbols={onclear:Symbol.for("Observable.onclear")};E.clear=function(...t){for(let n of t){Reflect.deleteProperty(n,"toJSON");let r=n[h];r.onclear.forEach(o=>o.call(r)),e(n,r),Reflect.deleteProperty(n,h)}function e(n,r){r.listeners.forEach(o=>{if(r.listeners.delete(o),!g.has(o))return;let c=g.get(o);c.delete(n),!(c.size>1)&&(n.clear(...c),g.delete(o))})}};var _="__dde_reactive";E.el=function(t,e){let n=k.mark({type:"reactive"},!0),r=n.end,o=d.D.createDocumentFragment();o.append(n,r);let{current:c}=v,s=a=>{if(!n.parentNode||!r.parentNode)return w(t,s);v.push(c);let p=e(a);v.pop(),Array.isArray(p)||(p=[p]);let l=n;for(;(l=n.nextSibling)!==r;)l.remove();n.after(...p),n.isConnected&&yt(c.host())};return J(t,s),ct(t,s,n,e),s(t()),o};function yt(t){!t||!t[_]||(requestIdleCallback||setTimeout)(function(){t[_]=t[_].filter(([e,n])=>n.isConnected?!0:(w(...e),!1))})}var xt={_set(t){this.value=t}};function At(t){return function(e,n){let r=(...c)=>c.length?e.setAttribute(n,...c):e.getAttribute(n),o=st(r,r(),xt);return t[n]=o,o}}var B="__dde_attributes";E.observedAttributes=function(t){let e=t[B]={},n=T(t,At(e));return y.attributeChanged(function({detail:o}){/*! This maps attributes to observables (`O.observedAttributes`).
- * Investigate `__dde_attributes` key of the element.*/let[c,s]=o,a=this[B][c];if(a)return E.action(a,"_set",s)})(t),y.disconnected(function(){/*! This removes all observables mapped to attributes (`O.observedAttributes`).
- * Investigate `__dde_attributes` key of the element.*/E.clear(...Object.values(this[B]))})(t),n};var ot={isObservable:q,processReactiveAttribute(t,e,n,r){if(!q(n))return n;let o=c=>{if(!t.isConnected)return w(n,o);r(e,c)};return J(n,o),ct(n,o,t,e),n()}};function ct(t,e,...n){let{current:r}=v;r.prevent||r.host(function(o){o[_]||(o[_]=[],y.disconnected(()=>o[_].forEach(([[c,s]])=>w(c,s,c[h]?.host()===o)))(o)),o[_].push([[t,e],...n])})}function nt(t,e,n){let r=t?()=>rt(r):(...o)=>o.length?it(r,...o):rt(r);return st(r,e,n)}var Ot=Object.assign(Object.create(null),{stopPropagation(){this.skip=!0}}),I=class extends Error{constructor(){super();let[e,...n]=this.stack.split(`
-`),r=e.slice(e.indexOf("@"),e.indexOf(".js:")+4);this.stack=n.find(o=>!o.includes(r))}};function st(t,e,n){let r=[];G(n)!=="[object Object]"&&(n={});let{onclear:o}=E.symbols;n[o]&&(r.push(n[o]),Reflect.deleteProperty(n,o));let{host:c}=v;return Reflect.defineProperty(t,h,{value:{value:e,actions:n,onclear:r,host:c,listeners:new Set,defined:new I},enumerable:!1,writable:!1,configurable:!0}),t.toJSON=()=>t(),Object.setPrototypeOf(t[h],Ot),t}function _t(){return F[F.length-1]}function rt(t){if(!t[h])return;let{value:e,listeners:n}=t[h],r=_t();return r&&n.add(r),g.has(r)&&g.get(r).add(t),e}function it(t,e,n){if(!t[h])return;let r=t[h];if(!(!n&&r.value===e))return r.value=e,r.listeners.forEach(o=>o(e)),e}function J(t,e){if(t[h])return t[h].listeners.add(e)}function w(t,e,n){let r=t[h];if(!r)return;let o=r.listeners.delete(e);if(n&&!r.listeners.size){if(E.clear(t),!g.has(r))return o;let c=g.get(r);if(!g.has(c))return o;g.get(c).forEach(s=>w(s,c,!0))}return o}$(ot);export{E as O,S as assign,X as assignAttribute,at as chainableAppend,pt as classListDeclarative,k as createElement,Pt as createElementNS,qt as customElementRender,Ft as customElementWithDDE,Ht as dispatchEvent,k as el,Pt as elNS,lt as elementAttribute,Lt as empty,q as isObservable,Ft as lifecycleToEvents,E as observable,gt as observedAttributes,y as on,$ as registerReactivity,v as scope,Nt as simulateSlots};
+var R={isObservable(t){return!1},processReactiveAttribute(t,e,n,r){return n}};function F(t,e=!0){return e?Object.assign(R,t):(Object.setPrototypeOf(t,R),t)}function N(t){return R.isPrototypeOf(t)&&t!==R?t:R}function A(t){return typeof t>"u"}function J(t){let e=typeof t;return e!=="object"?e:t===null?"null":Object.prototype.toString.call(t)}function P(t,e){if(!t||!(t instanceof AbortSignal))return!0;if(!t.aborted)return t.addEventListener("abort",e),function(){t.removeEventListener("abort",e)}}function L(t,e){let{observedAttributes:n=[]}=t.constructor;return n.reduce(function(r,o){return Reflect.set(r,st(o),e(t,o)),r},{})}function st(t){return t.replace(/-./g,e=>e[1].toUpperCase())}var d={setDeleteAttr:it,ssr:"",D:globalThis.document,F:globalThis.DocumentFragment,H:globalThis.HTMLElement,S:globalThis.SVGElement,M:globalThis.MutationObserver};function it(t,e,n){if(Reflect.set(t,e,n),!!A(n)){if(Reflect.deleteProperty(t,e),t instanceof d.H&&t.getAttribute(e)==="undefined")return t.removeAttribute(e);if(Reflect.get(t,e)==="undefined")return Reflect.set(t,e,"")}}var _="__dde_lifecycleToEvents";var y=[{get scope(){return d.D.body},host:t=>t?t(d.D.body):d.D.body,custom_element:!1,prevent:!0}],v={get current(){return y[y.length-1]},get host(){return this.current.host},preventDefault(){let{current:t}=this;return t.prevent=!0,t},get state(){return[...y]},push(t={}){return y.push(Object.assign({},this.current,{prevent:!1},t))},pushRoot(){return y.push(y[0])},pop(){if(y.length!==1)return y.pop()}};function Z(...t){return this.appendOriginal(...t),this}function ut(t){return t.append===Z||(t.appendOriginal=t.append,t.append=Z),t}var T;function D(t,e,...n){let r=N(this),o=0,c,s;switch((Object(e)!==e||r.isObservable(e))&&(e={textContent:e}),!0){case typeof t=="function":{o=1,v.push({scope:t,host:(...p)=>p.length?(o===1?n.unshift(...p):p.forEach(b=>b(s)),void 0):s}),c=t(e||void 0);let a=c instanceof d.F;if(c.nodeName==="#comment")break;let l=D.mark({type:"component",name:t.name,host:a?"this":"parentElement"});c.prepend(l),a&&(s=l);break}case t==="#text":c=S.call(this,d.D.createTextNode(""),e);break;case(t==="<>"||!t):c=S.call(this,d.D.createDocumentFragment(),e);break;case!!T:c=S.call(this,d.D.createElementNS(T,t),e);break;case!c:c=S.call(this,d.D.createElement(t),e)}return ut(c),s||(s=c),n.forEach(a=>a(s)),o&&v.pop(),o=2,c}function Dt(t,e=t,n=void 0){let r=Symbol.for("default"),o=Array.from(e.querySelectorAll("slot")).reduce((s,a)=>Reflect.set(s,a.name||r,a)&&s,{}),c=Reflect.has(o,r);if(t.append=new Proxy(t.append,{apply(s,a,l){if(!l.length)return t;let p=d.D.createDocumentFragment();for(let b of l){if(!b||!b.slot){c&&p.appendChild(b);continue}let k=b.slot,i=o[k];dt(b,"remove","slot"),i&&(ft(i,b,n),Reflect.deleteProperty(o,k))}return c&&(o[r].replaceWith(p),Reflect.deleteProperty(o,r)),t.append=s,t}}),t!==e){let s=Array.from(t.childNodes);s.forEach(a=>a.remove()),t.append(...s)}return e}function ft(t,e,n){n&&n(t,e);try{t.replaceWith(S(e,{className:[e.className,t.className],dataset:{...t.dataset}}))}catch{t.replaceWith(e)}}D.mark=function(t,e=!1){t=Object.entries(t).map(([o,c])=>o+`="${c}"`).join(" ");let n=e?"":"/",r=d.D.createComment(``);return e&&(r.end=d.D.createComment("")),r};function kt(t){let e=this;return function(...r){T=t;let o=D.call(e,...r);return T=void 0,o}}var j=new WeakMap,{setDeleteAttr:G}=d;function S(t,...e){if(!e.length)return t;j.set(t,Q(t,this));for(let[n,r]of Object.entries(Object.assign({},...e)))K.call(this,t,n,r);return j.delete(t),t}function K(t,e,n){let{setRemoveAttr:r,s:o}=Q(t,this),c=this;n=o.processReactiveAttribute(t,e,n,(a,l)=>K.call(c,t,a,l));let[s]=e;if(s==="=")return r(e.slice(1),n);if(s===".")return V(t,e.slice(1),n);if(/(aria|data)([A-Z])/.test(e))return e=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),r(e,n);switch(e==="className"&&(e="class"),e){case"xlink:href":return r(e,n,"http://www.w3.org/1999/xlink");case"textContent":return G(t,e,n);case"style":if(typeof n!="object")break;case"dataset":return $(o,n,V.bind(null,t[e]));case"ariaset":return $(o,n,(a,l)=>r("aria-"+a,l));case"classList":return at.call(c,t,n)}return lt(t,e)?G(t,e,n):r(e,n)}function Q(t,e){if(j.has(t))return j.get(t);let r=(t instanceof d.S?ht:pt).bind(null,t,"Attribute"),o=N(e);return{setRemoveAttr:r,s:o}}function at(t,e){let n=N(this);return $(n,e,(r,o)=>t.classList.toggle(r,o===-1?void 0:!!o)),t}function Nt(t){return Array.from(t.children).forEach(e=>e.remove()),t}function dt(t,e,n,r){return t instanceof d.H?t[e+"Attribute"](n,r):t[e+"AttributeNS"](null,n,r)}function lt(t,e){if(!Reflect.has(t,e))return!1;let n=X(t,e);return!A(n.set)}function X(t,e){if(t=Object.getPrototypeOf(t),!t)return{};let n=Object.getOwnPropertyDescriptor(t,e);return n||X(t,e)}function $(t,e,n){if(!(typeof e!="object"||e===null))return Object.entries(e).forEach(function([o,c]){o&&(c=t.processReactiveAttribute(e,o,c,n),n(o,c))})}function Y(t){return Array.isArray(t)?t.filter(Boolean).join(" "):t}function pt(t,e,n,r){return t[(A(r)?"remove":"set")+e](n,Y(r))}function ht(t,e,n,r,o=null){return t[(A(r)?"remove":"set")+e+"NS"](o,n,Y(r))}function V(t,e,n){if(Reflect.set(t,e,n),!!A(n))return Reflect.deleteProperty(t,e)}function Mt(t,e,n=bt){v.push({scope:t,host:(...o)=>o.length?o.forEach(c=>c(t)):t,custom_element:t}),typeof n=="function"&&(n=n.call(t,t));let r=e.call(t,n);return v.pop(),r}function Wt(t){return U(t.prototype,"connectedCallback",function(e,n,r){e.apply(n,r),n.dispatchEvent(new Event("dde:connected"))}),U(t.prototype,"disconnectedCallback",function(e,n,r){e.apply(n,r),(queueMicrotask||setTimeout)(()=>!n.isConnected&&n.dispatchEvent(new Event("dde:disconnected")))}),U(t.prototype,"attributeChangedCallback",function(e,n,r){let[o,,c]=r;n.dispatchEvent(new CustomEvent("dde:attributeChanged",{detail:[o,c]})),e.apply(n,r)}),t.prototype[_]=!0,t}function U(t,e,n){t[e]=new Proxy(t[e]||(()=>{}),{apply:n})}function bt(t){return L(t,(e,n)=>e.getAttribute(n))}function Ut(t,e,n){return e||(e={}),function(o,...c){n&&(c.unshift(o),o=typeof n=="function"?n():n);let s=c.length?new CustomEvent(t,Object.assign({detail:c[0]},e)):new Event(t,e);return o.dispatchEvent(s)}}function x(t,e,n){return function(o){return o.addEventListener(t,e,n),o}}var M=d.M?gt():new Proxy({},{get(){return()=>{}}}),vt=new WeakSet;x.connected=function(t,e){let{custom_element:n}=v.current,r="connected";return typeof e!="object"&&(e={}),e.once=!0,function(c){n&&(c=n);let s="dde:"+r;return c.addEventListener(s,t,e),c[_]?c:c.isConnected?(c.dispatchEvent(new Event(s)),c):(P(e.signal,()=>M.offConnected(c,t))&&M.onConnected(c,t),c)}};x.disconnected=function(t,e){let{custom_element:n}=v.current,r="disconnected";return typeof e!="object"&&(e={}),e.once=!0,function(c){n&&(c=n);let s="dde:"+r;return c.addEventListener(s,t,e),c[_]||P(e.signal,()=>M.offDisconnected(c,t))&&M.onDisconnected(c,t),c}};var z=new WeakMap;x.disconnectedAsAbort=function(t){if(z.has(t))return z.get(t);let e=new AbortController;return z.set(t,e),t(x.disconnected(()=>e.abort())),e};x.attributeChanged=function(t,e){let n="attributeChanged";return typeof e!="object"&&(e={}),function(o){let c="dde:"+n;if(o.addEventListener(c,t,e),o[_]||vt.has(o)||!d.M)return o;let s=new d.M(function(l){for(let{attributeName:p,target:b}of l)b.dispatchEvent(new CustomEvent(c,{detail:[p,b.getAttribute(p)]}))});return P(e.signal,()=>s.disconnect())&&s.observe(o,{attributes:!0}),o}};function gt(){let t=new Map,e=!1,n=new d.M(function(i){for(let u of i)if(u.type==="childList"){if(p(u.addedNodes,!0)){s();continue}b(u.removedNodes,!0)&&s()}});return{onConnected(i,u){c();let f=o(i);f.connected.has(u)||(f.connected.add(u),f.length_c+=1)},offConnected(i,u){if(!t.has(i))return;let f=t.get(i);f.connected.has(u)&&(f.connected.delete(u),f.length_c-=1,r(i,f))},onDisconnected(i,u){c();let f=o(i);f.disconnected.has(u)||(f.disconnected.add(u),f.length_d+=1)},offDisconnected(i,u){if(!t.has(i))return;let f=t.get(i);f.disconnected.has(u)&&(f.disconnected.delete(u),f.length_d-=1,r(i,f))}};function r(i,u){u.length_c||u.length_d||(t.delete(i),s())}function o(i){if(t.has(i))return t.get(i);let u={connected:new WeakSet,length_c:0,disconnected:new WeakSet,length_d:0};return t.set(i,u),u}function c(){e||(e=!0,n.observe(d.D.body,{childList:!0,subtree:!0}))}function s(){!e||t.size||(e=!1,n.disconnect())}function a(){return new Promise(function(i){(requestIdleCallback||requestAnimationFrame)(i)})}async function l(i){t.size>30&&await a();let u=[];if(!(i instanceof Node))return u;for(let f of t.keys())f===i||!(f instanceof Node)||i.contains(f)&&u.push(f);return u}function p(i,u){let f=!1;for(let E of i){if(u&&l(E).then(p),!t.has(E))continue;let C=t.get(E);C.length_c&&(E.dispatchEvent(new Event("dde:connected")),C.connected=new WeakSet,C.length_c=0,C.length_d||t.delete(E),f=!0)}return f}function b(i,u){let f=!1;for(let E of i)u&&l(E).then(b),!(!t.has(E)||!t.get(E).length_d)&&((queueMicrotask||setTimeout)(k(E)),f=!0);return f}function k(i){return()=>{i.isConnected||(i.dispatchEvent(new Event("dde:disconnected")),t.delete(i))}}}var h=Symbol.for("observable");function W(t){try{return Reflect.has(t,h)}catch{return!1}}var q=[],g=new WeakMap;function m(t,e){if(typeof t!="function")return tt(!1,t,e);if(W(t))return t;let n=tt(!0),r=function(){let[o,...c]=g.get(r);if(g.set(r,new Set([o])),q.push(r),ct(n,t()),q.pop(),!c.length)return;let s=g.get(r);for(let a of c)s.has(a)||w(a,r)};return g.set(n[h],r),g.set(r,new Set([n])),r(),n}m.action=function(t,e,...n){let r=t[h],{actions:o}=r;if(!o||!Reflect.has(o,e))throw new Error(`'${t}' has no action with name '${e}'!`);if(o[e].apply(r,n),r.skip)return Reflect.deleteProperty(r,"skip");r.listeners.forEach(c=>c(r.value))};m.on=function t(e,n,r={}){let{signal:o}=r;if(!(o&&o.aborted)){if(Array.isArray(e))return e.forEach(c=>t(c,n,r));I(e,n),o&&o.addEventListener("abort",()=>w(e,n))}};m.symbols={onclear:Symbol.for("Observable.onclear")};m.clear=function(...t){for(let n of t){Reflect.deleteProperty(n,"toJSON");let r=n[h];r.onclear.forEach(o=>o.call(r)),e(n,r),Reflect.deleteProperty(n,h)}function e(n,r){r.listeners.forEach(o=>{if(r.listeners.delete(o),!g.has(o))return;let c=g.get(o);c.delete(n),!(c.size>1)&&(n.clear(...c),g.delete(o))})}};var O="__dde_reactive";m.el=function(t,e){let n=D.mark({type:"reactive"},!0),r=n.end,o=d.D.createDocumentFragment();o.append(n,r);let{current:c}=v,s=a=>{if(!n.parentNode||!r.parentNode)return w(t,s);v.push(c);let l=e(a);v.pop(),Array.isArray(l)||(l=[l]);let p=n;for(;(p=n.nextSibling)!==r;)p.remove();n.after(...l),n.isConnected&&mt(c.host())};return I(t,s),rt(t,s,n,e),s(t()),o};function mt(t){!t||!t[O]||(requestIdleCallback||setTimeout)(function(){t[O]=t[O].filter(([e,n])=>n.isConnected?!0:(w(...e),!1))})}var Et={_set(t){this.value=t}};function xt(t){return function(e,n){let r=(...c)=>c.length?e.setAttribute(n,...c):e.getAttribute(n),o=ot(r,r(),Et);return t[n]=o,o}}var H="__dde_attributes";m.observedAttributes=function(t){let e=t[H]={},n=L(t,xt(e));return x.attributeChanged(function({detail:o}){/*! This maps attributes to observables (`O.observedAttributes`).
+ * Investigate `__dde_attributes` key of the element.*/let[c,s]=o,a=this[H][c];if(a)return m.action(a,"_set",s)})(t),x.disconnected(function(){/*! This removes all observables mapped to attributes (`O.observedAttributes`).
+ * Investigate `__dde_attributes` key of the element.*/m.clear(...Object.values(this[H]))})(t),n};var nt={isObservable:W,processReactiveAttribute(t,e,n,r){if(!W(n))return n;let o=c=>{if(!t.isConnected)return w(n,o);r(e,c)};return I(n,o),rt(n,o,t,e),n()}};function rt(t,e,...n){let{current:r}=v;r.prevent||r.host(function(o){o[O]||(o[O]=[],x.disconnected(()=>o[O].forEach(([[c,s]])=>w(c,s,c[h]?.host()===o)))(o)),o[O].push([[t,e],...n])})}function tt(t,e,n){let r=t?()=>et(r):(...o)=>o.length?ct(r,...o):et(r);return ot(r,e,n)}var yt=Object.assign(Object.create(null),{stopPropagation(){this.skip=!0}}),B=class extends Error{constructor(){super();let[e,...n]=this.stack.split(`
+`),r=e.slice(e.indexOf("@"),e.indexOf(".js:")+4);this.stack=n.find(o=>!o.includes(r))}};function ot(t,e,n){let r=[];J(n)!=="[object Object]"&&(n={});let{onclear:o}=m.symbols;n[o]&&(r.push(n[o]),Reflect.deleteProperty(n,o));let{host:c}=v;return Reflect.defineProperty(t,h,{value:{value:e,actions:n,onclear:r,host:c,listeners:new Set,defined:new B},enumerable:!1,writable:!1,configurable:!0}),t.toJSON=()=>t(),Object.setPrototypeOf(t[h],yt),t}function At(){return q[q.length-1]}function et(t){if(!t[h])return;let{value:e,listeners:n}=t[h],r=At();return r&&n.add(r),g.has(r)&&g.get(r).add(t),e}function ct(t,e,n){if(!t[h])return;let r=t[h];if(!(!n&&r.value===e))return r.value=e,r.listeners.forEach(o=>o(e)),e}function I(t,e){if(t[h])return t[h].listeners.add(e)}function w(t,e,n){let r=t[h];if(!r)return;let o=r.listeners.delete(e);if(n&&!r.listeners.size){if(m.clear(t),!g.has(r))return o;let c=g.get(r);if(!g.has(c))return o;g.get(c).forEach(s=>w(s,c,!0))}return o}F(nt);export{m as O,S as assign,K as assignAttribute,ut as chainableAppend,at as classListDeclarative,D as createElement,kt as createElementNS,Mt as customElementRender,Wt as customElementWithDDE,Ut as dispatchEvent,D as el,kt as elNS,dt as elementAttribute,Nt as empty,W as isObservable,Wt as lifecycleToEvents,m as observable,bt as observedAttributes,x as on,F as registerReactivity,v as scope,Dt as simulateSlots};
diff --git a/dist/esm.js b/dist/esm.js
index 15c75ca..450f448 100644
--- a/dist/esm.js
+++ b/dist/esm.js
@@ -1 +1 @@
-var A={isObservable(t){return!1},processReactiveAttribute(t,e,n,c){return n}};function B(t,e=!0){return e?Object.assign(A,t):(Object.setPrototypeOf(t,A),t)}function R(t){return A.isPrototypeOf(t)&&t!==A?t:A}function x(t){return typeof t>"u"}function _(t,e){if(!t||!(t instanceof AbortSignal))return!0;if(!t.aborted)return t.addEventListener("abort",e),function(){t.removeEventListener("abort",e)}}function W(t,e){let{observedAttributes:n=[]}=t.constructor;return n.reduce(function(c,r){return Reflect.set(c,I(r),e(t,r)),c},{})}function I(t){return t.replace(/-./g,e=>e[1].toUpperCase())}var a={setDeleteAttr:Z,ssr:"",D:globalThis.document,F:globalThis.DocumentFragment,H:globalThis.HTMLElement,S:globalThis.SVGElement,M:globalThis.MutationObserver};function Z(t,e,n){if(Reflect.set(t,e,n),!!x(n)){if(Reflect.deleteProperty(t,e),t instanceof a.H&&t.getAttribute(e)==="undefined")return t.removeAttribute(e);if(Reflect.get(t,e)==="undefined")return Reflect.set(t,e,"")}}var y="__dde_lifecycleToEvents",g="__dde_disconnect_mode";var v=[{get scope(){return a.D.body},host:t=>t?t(a.D.body):a.D.body,custom_element:!1,prevent:!0}],E={get current(){return v[v.length-1]},get host(){return this.current.host},preventDefault(){let{current:t}=this;return t.prevent=!0,t},get state(){return[...v]},push(t={}){return v.push(Object.assign({},this.current,{prevent:!1},t))},pushRoot(){return v.push(v[0])},pop(){if(v.length!==1)return v.pop()}};function j(...t){return this.appendOriginal(...t),this}function G(t){return t.append===j||(t.appendOriginal=t.append,t.append=j),t}var O;function M(t,e,...n){let c=R(this),r=0,o,i;switch((Object(e)!==e||c.isObservable(e))&&(e={textContent:e}),!0){case typeof t=="function":{r=1,E.push({scope:t,host:(...h)=>h.length?(r===1?n.unshift(...h):h.forEach(l=>l(i)),void 0):i}),o=t(e||void 0);let d=o instanceof a.F;if(o.nodeName==="#comment")break;let p=M.mark({type:"component",name:t.name,host:d?"this":"parentElement"});o.prepend(p),d&&(i=p);break}case t==="#text":o=w.call(this,a.D.createTextNode(""),e);break;case(t==="<>"||!t):o=w.call(this,a.D.createDocumentFragment(),e);break;case!!O:o=w.call(this,a.D.createElementNS(O,t),e);break;case!o:o=w.call(this,a.D.createElement(t),e)}return G(o),i||(i=o),n.forEach(d=>d(i)),r&&E.pop(),r=2,o}function ft(t,e=t,n=void 0){let c=Symbol.for("default"),r=Array.from(e.querySelectorAll("slot")).reduce((i,d)=>Reflect.set(i,d.name||c,d)&&i,{}),o=Reflect.has(r,c);if(t.append=new Proxy(t.append,{apply(i,d,p){if(!p.length)return t;let h=a.D.createDocumentFragment();for(let l of p){if(!l||!l.slot){o&&h.appendChild(l);continue}let D=l.slot,s=r[D];K(l,"remove","slot"),s&&(V(s,l,n),Reflect.deleteProperty(r,D))}return o&&(r[c].replaceWith(h),Reflect.deleteProperty(r,c)),t.append=i,t}}),t!==e){let i=Array.from(t.childNodes);i.forEach(d=>d.remove()),t.append(...i)}return e}function V(t,e,n){n&&n(t,e);try{t.replaceWith(w(e,{className:[e.className,t.className],dataset:{...t.dataset}}))}catch{t.replaceWith(e)}}M.mark=function(t,e=!1){t=Object.entries(t).map(([r,o])=>r+`="${o}"`).join(" ");let n=e?"":"/",c=a.D.createComment(``);return e&&(c.end=a.D.createComment("")),c};function at(t){let e=this;return function(...c){O=t;let r=M.call(e,...c);return O=void 0,r}}var S=new WeakMap,{setDeleteAttr:q}=a;function w(t,...e){if(!e.length)return t;S.set(t,U(t,this));for(let[n,c]of Object.entries(Object.assign({},...e)))$.call(this,t,n,c);return S.delete(t),t}function $(t,e,n){let{setRemoveAttr:c,s:r}=U(t,this),o=this;n=r.processReactiveAttribute(t,e,n,(d,p)=>$.call(o,t,d,p));let[i]=e;if(i==="=")return c(e.slice(1),n);if(i===".")return F(t,e.slice(1),n);if(/(aria|data)([A-Z])/.test(e))return e=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),c(e,n);switch(e==="className"&&(e="class"),e){case"xlink:href":return c(e,n,"http://www.w3.org/1999/xlink");case"textContent":return q(t,e,n);case"style":if(typeof n!="object")break;case"dataset":return L(r,n,F.bind(null,t[e]));case"ariaset":return L(r,n,(d,p)=>c("aria-"+d,p));case"classList":return J.call(o,t,n)}return Q(t,e)?q(t,e,n):c(e,n)}function U(t,e){if(S.has(t))return S.get(t);let c=(t instanceof a.S?Y:X).bind(null,t,"Attribute"),r=R(e);return{setRemoveAttr:c,s:r}}function J(t,e){let n=R(this);return L(n,e,(c,r)=>t.classList.toggle(c,r===-1?void 0:!!r)),t}function dt(t){return Array.from(t.children).forEach(e=>e.remove()),t}function K(t,e,n,c){return t instanceof a.H?t[e+"Attribute"](n,c):t[e+"AttributeNS"](null,n,c)}function Q(t,e){if(!Reflect.has(t,e))return!1;let n=H(t,e);return!x(n.set)}function H(t,e){if(t=Object.getPrototypeOf(t),!t)return{};let n=Object.getOwnPropertyDescriptor(t,e);return n||H(t,e)}function L(t,e,n){if(!(typeof e!="object"||e===null))return Object.entries(e).forEach(function([r,o]){r&&(o=t.processReactiveAttribute(e,r,o,n),n(r,o))})}function z(t){return Array.isArray(t)?t.filter(Boolean).join(" "):t}function X(t,e,n,c){return t[(x(c)?"remove":"set")+e](n,z(c))}function Y(t,e,n,c,r=null){return t[(x(c)?"remove":"set")+e+"NS"](r,n,z(c))}function F(t,e,n){if(Reflect.set(t,e,n),!!x(n))return Reflect.deleteProperty(t,e)}function gt(t,e,n=tt){E.push({scope:t,host:(...r)=>r.length?r.forEach(o=>o(t)):t,custom_element:t}),typeof n=="function"&&(n=n.call(t,t));let c=e.call(t,n);return E.pop(),c}function vt(t){return T(t.prototype,"connectedCallback",function(e,n,c){e.apply(n,c),n.dispatchEvent(new Event("dde:connected"))}),t.prototype[g]||(t.prototype[g]="dde"),T(t.prototype,"disconnectedCallback",function(e,n,c){e.apply(n,c);let r=()=>n.dispatchEvent(new Event("dde:disconnected"));if(n[g]!=="dde")return r();(queueMicrotask||setTimeout)(()=>!n.isConnected&&r())}),T(t.prototype,"attributeChangedCallback",function(e,n,c){let[r,,o]=c;n.dispatchEvent(new CustomEvent("dde:attributeChanged",{detail:[r,o]})),e.apply(n,c)}),t.prototype[y]=!0,t}function T(t,e,n){t[e]=new Proxy(t[e]||(()=>{}),{apply:n})}function tt(t){return W(t,(e,n)=>e.getAttribute(n))}function mt(t,e,n){return e||(e={}),function(r,...o){n&&(o.unshift(r),r=typeof n=="function"?n():n);let i=o.length?new CustomEvent(t,Object.assign({detail:o[0]},e)):new Event(t,e);return r.dispatchEvent(i)}}function C(t,e,n){return function(r){return r.addEventListener(t,e,n),r}}var N=a.M?nt():new Proxy({},{get(){return()=>{}}}),et=new WeakSet;C.connected=function(t,e){let{custom_element:n}=E.current,c="connected";return typeof e!="object"&&(e={}),typeof e.once!="boolean"&&(e.once=!0),function(o){n&&(o=n);let i="dde:"+c;return o.addEventListener(i,t,e),o[y]?o:o.isConnected?(o.dispatchEvent(new Event(i)),o):(_(e.signal,()=>N.offConnected(o,t))&&N.onConnected(o,t),o)}};C.disconnected=function(t,e){let{custom_element:n}=E.current,c="disconnected";return typeof e!="object"&&(e={}),typeof e.once!="boolean"&&(e.once=!0),function(o){n&&(o=n),o[g]||(o[g]="dde");let i="dde:"+c;return o.addEventListener(i,t,e),o[y]||_(e.signal,()=>N.offDisconnected(o,t))&&N.onDisconnected(o,t),o}};var k=new WeakMap;C.disconnectedAsAbort=function(t){if(k.has(t))return k.get(t);let e=new AbortController;return k.set(t,e),t(C.disconnected(()=>e.abort())),e};C.attributeChanged=function(t,e){let n="attributeChanged";return typeof e!="object"&&(e={}),function(r){let o="dde:"+n;if(r.addEventListener(o,t,e),r[y]||et.has(r)||!a.M)return r;let i=new a.M(function(p){for(let{attributeName:h,target:l}of p)l.dispatchEvent(new CustomEvent(o,{detail:[h,l.getAttribute(h)]}))});return _(e.signal,()=>i.disconnect())&&i.observe(r,{attributes:!0}),r}};function nt(){let t=new Map,e=!1,n=new a.M(function(s){for(let u of s)if(u.type==="childList"){if(h(u.addedNodes,!0)){i();continue}l(u.removedNodes,!0)&&i()}});return{onConnected(s,u){o();let f=r(s);f.connected.has(u)||(f.connected.add(u),f.length_c+=1)},offConnected(s,u){if(!t.has(s))return;let f=t.get(s);f.connected.has(u)&&(f.connected.delete(u),f.length_c-=1,c(s,f))},onDisconnected(s,u){o();let f=r(s);f.disconnected.has(u)||(f.disconnected.add(u),f.length_d+=1)},offDisconnected(s,u){if(!t.has(s))return;let f=t.get(s);f.disconnected.has(u)&&(f.disconnected.delete(u),f.length_d-=1,c(s,f))}};function c(s,u){u.length_c||u.length_d||(t.delete(s),i())}function r(s){if(t.has(s))return t.get(s);let u={connected:new WeakSet,length_c:0,disconnected:new WeakSet,length_d:0};return t.set(s,u),u}function o(){e||(e=!0,n.observe(a.D.body,{childList:!0,subtree:!0}))}function i(){!e||t.size||(e=!1,n.disconnect())}function d(){return new Promise(function(s){(requestIdleCallback||requestAnimationFrame)(s)})}async function p(s){t.size>30&&await d();let u=[];if(!(s instanceof Node))return u;for(let f of t.keys())f===s||!(f instanceof Node)||s.contains(f)&&u.push(f);return u}function h(s,u){let f=!1;for(let b of s){if(u&&p(b).then(h),!t.has(b))continue;let m=t.get(b);m.length_c&&(b.dispatchEvent(new Event("dde:connected")),m.connected=new WeakSet,m.length_c=0,m.length_d||t.delete(b),f=!0)}return f}function l(s,u){let f=!1;for(let b of s){if(u&&p(b).then(l),!t.has(b)||!t.get(b).length_d)continue;let P=D(b);b[g]==="dde"?(queueMicrotask||setTimeout)(P):P(),f=!0}return f}function D(s){return()=>{s.isConnected||(s.dispatchEvent(new Event("dde:disconnected")),t.delete(s))}}}export{w as assign,$ as assignAttribute,G as chainableAppend,J as classListDeclarative,M as createElement,at as createElementNS,gt as customElementRender,vt as customElementWithDDE,mt as dispatchEvent,M as el,at as elNS,K as elementAttribute,dt as empty,vt as lifecycleToEvents,tt as observedAttributes,C as on,B as registerReactivity,E as scope,ft as simulateSlots};
+var y={isObservable(t){return!1},processReactiveAttribute(t,e,n,r){return n}};function H(t,e=!0){return e?Object.assign(y,t):(Object.setPrototypeOf(t,y),t)}function D(t){return y.isPrototypeOf(t)&&t!==y?t:y}function E(t){return typeof t>"u"}function R(t,e){if(!t||!(t instanceof AbortSignal))return!0;if(!t.aborted)return t.addEventListener("abort",e),function(){t.removeEventListener("abort",e)}}function M(t,e){let{observedAttributes:n=[]}=t.constructor;return n.reduce(function(r,o){return Reflect.set(r,z(o),e(t,o)),r},{})}function z(t){return t.replace(/-./g,e=>e[1].toUpperCase())}var a={setDeleteAttr:B,ssr:"",D:globalThis.document,F:globalThis.DocumentFragment,H:globalThis.HTMLElement,S:globalThis.SVGElement,M:globalThis.MutationObserver};function B(t,e,n){if(Reflect.set(t,e,n),!!E(n)){if(Reflect.deleteProperty(t,e),t instanceof a.H&&t.getAttribute(e)==="undefined")return t.removeAttribute(e);if(Reflect.get(t,e)==="undefined")return Reflect.set(t,e,"")}}var x="__dde_lifecycleToEvents";var g=[{get scope(){return a.D.body},host:t=>t?t(a.D.body):a.D.body,custom_element:!1,prevent:!0}],v={get current(){return g[g.length-1]},get host(){return this.current.host},preventDefault(){let{current:t}=this;return t.prevent=!0,t},get state(){return[...g]},push(t={}){return g.push(Object.assign({},this.current,{prevent:!1},t))},pushRoot(){return g.push(g[0])},pop(){if(g.length!==1)return g.pop()}};function k(...t){return this.appendOriginal(...t),this}function I(t){return t.append===k||(t.appendOriginal=t.append,t.append=k),t}var O;function L(t,e,...n){let r=D(this),o=0,c,i;switch((Object(e)!==e||r.isObservable(e))&&(e={textContent:e}),!0){case typeof t=="function":{o=1,v.push({scope:t,host:(...h)=>h.length?(o===1?n.unshift(...h):h.forEach(l=>l(i)),void 0):i}),c=t(e||void 0);let d=c instanceof a.F;if(c.nodeName==="#comment")break;let p=L.mark({type:"component",name:t.name,host:d?"this":"parentElement"});c.prepend(p),d&&(i=p);break}case t==="#text":c=A.call(this,a.D.createTextNode(""),e);break;case(t==="<>"||!t):c=A.call(this,a.D.createDocumentFragment(),e);break;case!!O:c=A.call(this,a.D.createElementNS(O,t),e);break;case!c:c=A.call(this,a.D.createElement(t),e)}return I(c),i||(i=c),n.forEach(d=>d(i)),o&&v.pop(),o=2,c}function it(t,e=t,n=void 0){let r=Symbol.for("default"),o=Array.from(e.querySelectorAll("slot")).reduce((i,d)=>Reflect.set(i,d.name||r,d)&&i,{}),c=Reflect.has(o,r);if(t.append=new Proxy(t.append,{apply(i,d,p){if(!p.length)return t;let h=a.D.createDocumentFragment();for(let l of p){if(!l||!l.slot){c&&h.appendChild(l);continue}let C=l.slot,s=o[C];V(l,"remove","slot"),s&&(Z(s,l,n),Reflect.deleteProperty(o,C))}return c&&(o[r].replaceWith(h),Reflect.deleteProperty(o,r)),t.append=i,t}}),t!==e){let i=Array.from(t.childNodes);i.forEach(d=>d.remove()),t.append(...i)}return e}function Z(t,e,n){n&&n(t,e);try{t.replaceWith(A(e,{className:[e.className,t.className],dataset:{...t.dataset}}))}catch{t.replaceWith(e)}}L.mark=function(t,e=!1){t=Object.entries(t).map(([o,c])=>o+`="${c}"`).join(" ");let n=e?"":"/",r=a.D.createComment(``);return e&&(r.end=a.D.createComment("")),r};function ut(t){let e=this;return function(...r){O=t;let o=L.call(e,...r);return O=void 0,o}}var _=new WeakMap,{setDeleteAttr:W}=a;function A(t,...e){if(!e.length)return t;_.set(t,F(t,this));for(let[n,r]of Object.entries(Object.assign({},...e)))q.call(this,t,n,r);return _.delete(t),t}function q(t,e,n){let{setRemoveAttr:r,s:o}=F(t,this),c=this;n=o.processReactiveAttribute(t,e,n,(d,p)=>q.call(c,t,d,p));let[i]=e;if(i==="=")return r(e.slice(1),n);if(i===".")return j(t,e.slice(1),n);if(/(aria|data)([A-Z])/.test(e))return e=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),r(e,n);switch(e==="className"&&(e="class"),e){case"xlink:href":return r(e,n,"http://www.w3.org/1999/xlink");case"textContent":return W(t,e,n);case"style":if(typeof n!="object")break;case"dataset":return N(o,n,j.bind(null,t[e]));case"ariaset":return N(o,n,(d,p)=>r("aria-"+d,p));case"classList":return G.call(c,t,n)}return J(t,e)?W(t,e,n):r(e,n)}function F(t,e){if(_.has(t))return _.get(t);let r=(t instanceof a.S?Q:K).bind(null,t,"Attribute"),o=D(e);return{setRemoveAttr:r,s:o}}function G(t,e){let n=D(this);return N(n,e,(r,o)=>t.classList.toggle(r,o===-1?void 0:!!o)),t}function ft(t){return Array.from(t.children).forEach(e=>e.remove()),t}function V(t,e,n,r){return t instanceof a.H?t[e+"Attribute"](n,r):t[e+"AttributeNS"](null,n,r)}function J(t,e){if(!Reflect.has(t,e))return!1;let n=$(t,e);return!E(n.set)}function $(t,e){if(t=Object.getPrototypeOf(t),!t)return{};let n=Object.getOwnPropertyDescriptor(t,e);return n||$(t,e)}function N(t,e,n){if(!(typeof e!="object"||e===null))return Object.entries(e).forEach(function([o,c]){o&&(c=t.processReactiveAttribute(e,o,c,n),n(o,c))})}function U(t){return Array.isArray(t)?t.filter(Boolean).join(" "):t}function K(t,e,n,r){return t[(E(r)?"remove":"set")+e](n,U(r))}function Q(t,e,n,r,o=null){return t[(E(r)?"remove":"set")+e+"NS"](o,n,U(r))}function j(t,e,n){if(Reflect.set(t,e,n),!!E(n))return Reflect.deleteProperty(t,e)}function ht(t,e,n=X){v.push({scope:t,host:(...o)=>o.length?o.forEach(c=>c(t)):t,custom_element:t}),typeof n=="function"&&(n=n.call(t,t));let r=e.call(t,n);return v.pop(),r}function bt(t){return T(t.prototype,"connectedCallback",function(e,n,r){e.apply(n,r),n.dispatchEvent(new Event("dde:connected"))}),T(t.prototype,"disconnectedCallback",function(e,n,r){e.apply(n,r),(queueMicrotask||setTimeout)(()=>!n.isConnected&&n.dispatchEvent(new Event("dde:disconnected")))}),T(t.prototype,"attributeChangedCallback",function(e,n,r){let[o,,c]=r;n.dispatchEvent(new CustomEvent("dde:attributeChanged",{detail:[o,c]})),e.apply(n,r)}),t.prototype[x]=!0,t}function T(t,e,n){t[e]=new Proxy(t[e]||(()=>{}),{apply:n})}function X(t){return M(t,(e,n)=>e.getAttribute(n))}function xt(t,e,n){return e||(e={}),function(o,...c){n&&(c.unshift(o),o=typeof n=="function"?n():n);let i=c.length?new CustomEvent(t,Object.assign({detail:c[0]},e)):new Event(t,e);return o.dispatchEvent(i)}}function w(t,e,n){return function(o){return o.addEventListener(t,e,n),o}}var S=a.M?tt():new Proxy({},{get(){return()=>{}}}),Y=new WeakSet;w.connected=function(t,e){let{custom_element:n}=v.current,r="connected";return typeof e!="object"&&(e={}),e.once=!0,function(c){n&&(c=n);let i="dde:"+r;return c.addEventListener(i,t,e),c[x]?c:c.isConnected?(c.dispatchEvent(new Event(i)),c):(R(e.signal,()=>S.offConnected(c,t))&&S.onConnected(c,t),c)}};w.disconnected=function(t,e){let{custom_element:n}=v.current,r="disconnected";return typeof e!="object"&&(e={}),e.once=!0,function(c){n&&(c=n);let i="dde:"+r;return c.addEventListener(i,t,e),c[x]||R(e.signal,()=>S.offDisconnected(c,t))&&S.onDisconnected(c,t),c}};var P=new WeakMap;w.disconnectedAsAbort=function(t){if(P.has(t))return P.get(t);let e=new AbortController;return P.set(t,e),t(w.disconnected(()=>e.abort())),e};w.attributeChanged=function(t,e){let n="attributeChanged";return typeof e!="object"&&(e={}),function(o){let c="dde:"+n;if(o.addEventListener(c,t,e),o[x]||Y.has(o)||!a.M)return o;let i=new a.M(function(p){for(let{attributeName:h,target:l}of p)l.dispatchEvent(new CustomEvent(c,{detail:[h,l.getAttribute(h)]}))});return R(e.signal,()=>i.disconnect())&&i.observe(o,{attributes:!0}),o}};function tt(){let t=new Map,e=!1,n=new a.M(function(s){for(let u of s)if(u.type==="childList"){if(h(u.addedNodes,!0)){i();continue}l(u.removedNodes,!0)&&i()}});return{onConnected(s,u){c();let f=o(s);f.connected.has(u)||(f.connected.add(u),f.length_c+=1)},offConnected(s,u){if(!t.has(s))return;let f=t.get(s);f.connected.has(u)&&(f.connected.delete(u),f.length_c-=1,r(s,f))},onDisconnected(s,u){c();let f=o(s);f.disconnected.has(u)||(f.disconnected.add(u),f.length_d+=1)},offDisconnected(s,u){if(!t.has(s))return;let f=t.get(s);f.disconnected.has(u)&&(f.disconnected.delete(u),f.length_d-=1,r(s,f))}};function r(s,u){u.length_c||u.length_d||(t.delete(s),i())}function o(s){if(t.has(s))return t.get(s);let u={connected:new WeakSet,length_c:0,disconnected:new WeakSet,length_d:0};return t.set(s,u),u}function c(){e||(e=!0,n.observe(a.D.body,{childList:!0,subtree:!0}))}function i(){!e||t.size||(e=!1,n.disconnect())}function d(){return new Promise(function(s){(requestIdleCallback||requestAnimationFrame)(s)})}async function p(s){t.size>30&&await d();let u=[];if(!(s instanceof Node))return u;for(let f of t.keys())f===s||!(f instanceof Node)||s.contains(f)&&u.push(f);return u}function h(s,u){let f=!1;for(let b of s){if(u&&p(b).then(h),!t.has(b))continue;let m=t.get(b);m.length_c&&(b.dispatchEvent(new Event("dde:connected")),m.connected=new WeakSet,m.length_c=0,m.length_d||t.delete(b),f=!0)}return f}function l(s,u){let f=!1;for(let b of s)u&&p(b).then(l),!(!t.has(b)||!t.get(b).length_d)&&((queueMicrotask||setTimeout)(C(b)),f=!0);return f}function C(s){return()=>{s.isConnected||(s.dispatchEvent(new Event("dde:disconnected")),t.delete(s))}}}export{A as assign,q as assignAttribute,I as chainableAppend,G as classListDeclarative,L as createElement,ut as createElementNS,ht as customElementRender,bt as customElementWithDDE,xt as dispatchEvent,L as el,ut as elNS,V as elementAttribute,ft as empty,bt as lifecycleToEvents,X as observedAttributes,w as on,H as registerReactivity,v as scope,it as simulateSlots};
diff --git a/docs/p03-events.html b/docs/p03-events.html
index cd6c5b4..c48c2a9 100644
--- a/docs/p03-events.html
+++ b/docs/p03-events.html
@@ -67,7 +67,7 @@ document.body.append(
function log({ type, detail }){
console.log({ _this: this, type, detail });
}
-
For Custom elements, we will later introduce a way to replace *Callback
syntax with dde:*
events. The on.*
functions then listen to the appropriate Custom Elements events (see Custom element lifecycle callbacks | MDN).
But, in case of regular elemnets the MutationObserver
| MDN is internaly used to track these events. Therefore, there are some drawbacks:
- To proper listener registration, you need to use
on.*
not `on("dde:*", …)`! - Use sparingly! Internally, library must loop of all registered events and fires event properly. It is good practice to use the fact that if an element is removed, its children are also removed! In this spirit, we will introduce later the host syntax to register clean up procedures when the component is removed from the app.
# Final notes
The library also provides a method to dispatch the events.
import { el, on, dispatchEvent } from "https://cdn.jsdelivr.net/gh/jaandrle/deka-dom-el/dist/esm-with-observables.js";
+
For Custom elements, we will later introduce a way to replace *Callback
syntax with dde:*
events. The on.*
functions then listen to the appropriate Custom Elements events (see Custom element lifecycle callbacks | MDN).
But, in case of regular elemnets the MutationObserver
| MDN is internaly used to track these events. Therefore, there are some drawbacks:
- To proper listener registration, you need to use
on.*
not `on("dde:*", …)`! - Use sparingly! Internally, library must loop of all registered events and fires event properly. It is good practice to use the fact that if an element is removed, its children are also removed! In this spirit, we will introduce later the host syntax to register clean up procedures when the component is removed from the app.
To provide intuitive behaviour, similar also to how the life-cycle events works in other frameworks/libraries, deka-dom-el library ensures that on.connected
and on.disconnected
are called only once and only when the element is (dis)connected to live DOM. The solution is inspired by Vue. For using native behaviour re-(dis)connecting element, use:
- custom
MutationObserver
or logic in (dis)
or… - re-add
on.connected
or on.disconnected
listeners.
# Final notes
The library also provides a method to dispatch the events.
import { el, on, dispatchEvent } from "https://cdn.jsdelivr.net/gh/jaandrle/deka-dom-el/dist/esm-with-observables.js";
document.body.append(
el("p", "Listenning to `test` event.", on("test", console.log)).append(
el("br"),
diff --git a/docs_src/p03-events.html.js b/docs_src/p03-events.html.js
index b0def3a..451617f 100644
--- a/docs_src/p03-events.html.js
+++ b/docs_src/p03-events.html.js
@@ -108,6 +108,17 @@ export function page({ pkg, info }){
" clean up procedures when the component is removed from the app."
),
),
+ el("p").append(
+ "To provide intuitive behaviour, similar also to how the life-cycle events works in other",
+ " frameworks/libraries, deka-dom-el library ensures that ", el("code", "on.connected"),
+ " and ", el("code", "on.disconnected"), " are called only once and only when the element",
+ " is (dis)connected to live DOM. The solution is inspired by ", el("a", { textContent: "Vue", href: "https://vuejs.org/guide/extras/web-components.html#lifecycle", title: "Vue and Web Components | Lifecycle" }), ".",
+ " For using native behaviour re-(dis)connecting element, use:"
+ ),
+ el("ul").append(
+ el("li").append("custom ", el("code", "MutationObserver"), " or logic in (dis)", el(code, "connectedCallback"), " or…"),
+ el("li").append("re-add ", el("code", "on.connected"), " or ", el("code", "on.disconnected"), " listeners.")
+ ),
el(h3, "Final notes"),
el("p", "The library also provides a method to dispatch the events."),
diff --git a/src/customElement.js b/src/customElement.js
index f5b303e..c3f6c40 100644
--- a/src/customElement.js
+++ b/src/customElement.js
@@ -1,4 +1,4 @@
-import { keyDM, keyLTE } from "./dom-common.js";
+import { keyLTE } from "./dom-common.js";
import { scope } from "./dom.js";
export function customElementRender(custom_element, render, props= observedAttributes){
scope.push({
@@ -16,14 +16,11 @@ export function lifecycleToEvents(class_declaration){
target.apply(thisArg, detail);
thisArg.dispatchEvent(new Event("dde:connected"));
});
- if(!class_declaration.prototype[keyDM])
- class_declaration.prototype[keyDM]= "dde";
wrapMethod(class_declaration.prototype, "disconnectedCallback", function(target, thisArg, detail){
target.apply(thisArg, detail);
- const dispatch= ()=> thisArg.dispatchEvent(new Event("dde:disconnected"));
- if(thisArg[keyDM]!=="dde")
- return dispatch();
- (queueMicrotask || setTimeout)(()=> !thisArg.isConnected && dispatch());
+ (queueMicrotask || setTimeout)(
+ ()=> !thisArg.isConnected && thisArg.dispatchEvent(new Event("dde:disconnected"))
+ );
});
wrapMethod(class_declaration.prototype, "attributeChangedCallback", function(target, thisArg, detail){
const [ attribute, , value ]= detail;
diff --git a/src/dom-common.js b/src/dom-common.js
index 16e08b4..73dbe6c 100644
--- a/src/dom-common.js
+++ b/src/dom-common.js
@@ -27,4 +27,3 @@ function setDeleteAttr(obj, prop, val){
return Reflect.set(obj, prop, "");
}
export const keyLTE= "__dde_lifecycleToEvents"; //boolean
-export const keyDM= "__dde_disconnect_mode"; //native (unset) | dde | skip
diff --git a/src/events.js b/src/events.js
index 7e12965..03d7465 100644
--- a/src/events.js
+++ b/src/events.js
@@ -1,5 +1,5 @@
export { registerReactivity } from './observables-common.js';
-import { enviroment as env, keyDM, keyLTE } from './dom-common.js';
+import { enviroment as env, keyLTE } from './dom-common.js';
export function dispatchEvent(name, options, host){
if(!options) options= {};
@@ -32,8 +32,7 @@ on.connected= function(listener, options){
const name= "connected";
if(typeof options !== "object")
options= {};
- if(typeof options.once !== "boolean")
- options.once= true;
+ options.once= true;
return function registerElement(element){
if(custom_element) element= custom_element;
const event= "dde:"+name;
@@ -51,11 +50,9 @@ on.disconnected= function(listener, options){
const name= "disconnected";
if(typeof options !== "object")
options= {};
- if(typeof options.once !== "boolean")
- options.once= true;
+ options.once= true;
return function registerElement(element){
if(custom_element) element= custom_element;
- if(!element[keyDM]) element[keyDM]= "dde";
const event= "dde:"+name;
element.addEventListener(event, listener, options);
if(element[keyLTE]) return element;
@@ -212,11 +209,7 @@ function connectionsChangesObserverConstructor(){
const ls= store.get(element);
if(!ls.length_d) continue;
- const dispatch= dispatchRemove(element);
- if(element[keyDM]==="dde")
- (queueMicrotask || setTimeout)(dispatch);
- else
- dispatch();
+ (queueMicrotask || setTimeout)(dispatchRemove(element));
out= true;
}
return out;