let e={},t=[(e,t)=>e[t],(e,t)=>e.hasAttribute(t),(e,t)=>e.getAttribute(t),e=>1,e=>0];class s extends WeakMap{use=(e,t={})=>this.get(e)||this.set(e,t).get(e)}let i={},n=new s,a=new s,l=new s,r=(e,t)=>"number"===t?0|e:e;class h{#e;#t=[];#s=0;constructor(e){this.#e=e}#i=()=>1==++this.#s&&queueMicrotask((()=>{this.#t.map((e=>e())),this.#s=0}));get value(){return this.#e}set value(e){this.#e=e,this.#i()}onChange(e,t,s=this.#t.length,i=(()=>e(this.#e))){return t&&i(),this.#t[s]=i,s}when(e,t=[]){let s=new h;return this.onChange((t=>s.value=e(t)),!0),t.map((e=>e.onChange(this.#i))),s}}let o={},d={};class u extends HTMLElement{#n=(e,t=this)=>t.getAttribute(e);#a=(e,s)=>{let i=e[0],n=e.slice(1),l=this.#n(e,s),r=".?!@:".indexOf(i);if(r>=0){let i=t[r](s,n);a.use(s)[e]={init:i,name:l,kind:r},queueMicrotask((()=>s.removeAttribute(e)))}};static Signal=h;static hydrate=(t,s,r)=>{let h="string"==typeof t?i[t]:t.map((e=>document.querySelector(e).shadowRoot));for(let t of h)if(!t.h){t.h=1;let i=l.get(t)||e;for(let l in s){let h=n.get(t),d=h[l],u=a.get(d);if(u){let t=s[l];for(let s in t){let n=t[s];s in o&&(n=o[s](n));let{name:a,init:l,kind:c}=u[s.toLowerCase()]||e,{signal:g,type:f,id:m}=a&&i[a]||e;r instanceof Object&&m&&g&&(r[m]=g);let p=s.slice(1),y=e=>n({type:f,name:p,signal:g,signals:i,init:l,kind:c,domNode:d,domNodes:h,e:e});a&&(s.startsWith("@")?d.addEventListener(p,y):queueMicrotask(y))}}}}};static plugin=(e,t)=>(o[e]=t)&&d[e]&&d[e]();static usable=(e,t=[])=>{for(let s of e)o[s]||t.push(new Promise((e=>d[s]=e)));return Promise.all(t)};static render=e=>({domNode:t,name:s,kind:i})=>{e="function"==typeof e?e():e,/^dataset\.\S+/.test(s)?t.dataset[s.slice(8)]=e:null!==e&&(4===i?t[s](e):t[s]=e)};static rerender=(e,t=!0)=>e.signal.onChange((t=>u.render(t)(e)),t);connectedCallback(){let e=this[this.#n("for")||"parentNode"],t=this.#n("scope");t=t?this.closest(t):this.getRootNode();let s=this.#n("new"),a=s||this.#n("ref")||crypto.randomUUID(),o=this.#n("type"),{id:d,textContent:u}=this;(i[a]=i[a]||[]).push(t),n.use(t)[a]=e,s&&(l.use(t)[a]={signal:new h(r(u||this.#n("value"),o)),type:o,id:d});for(let t of e.getAttributeNames())this.#a(t,e);null!==this.#n("hydrate")&&(new Function(`let{hydrate,render,rerender}=customElements.get('sig-nal');hydrate('${a}',${u})`)(),u=""),this.className||this.replaceWith(u)}}customElements.define("sig-nal",u);