@tempots/dom 31.6.0 → 32.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -50,7 +50,7 @@ function Counter() {
50
50
  const count = prop(0)
51
51
 
52
52
  return html.div(
53
- html.div('Count: ', count.map(String)),
53
+ html.div('Count: ', count.map(String)), // ✨ Auto-disposed
54
54
  html.button(
55
55
  on.click(() => count.value--),
56
56
  'Decrement'
@@ -65,6 +65,11 @@ function Counter() {
65
65
  render(Counter(), document.body)
66
66
  ```
67
67
 
68
+ **Automatic Memory Management:** Signals created within renderables are automatically tracked and disposed when the component is removed from the DOM. This includes:
69
+ - Signals created with `prop()`, `signal()`, `computed()`
70
+ - Derived signals from `.map()`, `.filter()`, `.flatMap()`, etc.
71
+ - No manual `OnDispose()` calls needed!
72
+
68
73
  ### HTML Elements
69
74
 
70
75
  Tempo provides a convenient way to create HTML elements using the `html` object:
package/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var mt=Object.defineProperty;var Oe=s=>{throw TypeError(s)};var gt=(s,e,t)=>e in s?mt(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var o=(s,e,t)=>gt(s,typeof e!="symbol"?e+"":e,t),De=(s,e,t)=>e.has(s)||Oe("Cannot "+t);var Z=(s,e,t)=>(De(s,e,"read from private field"),t?t.call(s):e.get(s)),Le=(s,e,t)=>e.has(s)?Oe("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t),fe=(s,e,t,r)=>(De(s,e,"write to private field"),r?r.call(s,t):e.set(s,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const ke=(s,e,t)=>s+(e-s)*t,Me=97,Ie=(s,e,t)=>{const r=Math.max(s.length,e.length);let n="";for(let i=0;i<r;i++){let l=s.charCodeAt(i);isNaN(l)&&(l=Me);let c=e.charCodeAt(i);isNaN(c)&&(c=Me),n+=String.fromCharCode(l+(c-l)*t)}return n},$e=(s,e,t)=>new Date(s.getTime()+(e.getTime()-s.getTime())*t),Re=(s,e)=>e,Ve=s=>typeof s=="number"?ke:typeof s=="string"?Ie:s instanceof Date?$e:Re;var L;class K{constructor(e,t){o(this,"counter");o(this,"isFirst");o(this,"isEven");o(this,"isOdd");Le(this,L);o(this,"dispose",()=>{var e;(e=Z(this,L))==null||e.dispose(),fe(this,L,void 0)});this.index=e,this.total=t,this.counter=e+1,this.isFirst=e===0,this.isEven=e%2===1,this.isOdd=e%2===0}get isLast(){return Z(this,L)==null&&fe(this,L,this.total.map(e=>this.counter===e)),Z(this,L)}}L=new WeakMap;const q=class q{constructor(e,t){o(this,"$__signal__",!0);o(this,"_value");o(this,"_derivatives",[]);o(this,"_onValueListeners",[]);o(this,"_onDisposeListeners",[]);o(this,"get",()=>this._value);o(this,"hasListeners",()=>this._onValueListeners.length>0);o(this,"on",(e,t={})=>{t.skipInitial||e(this.get(),void 0);const r=t.once?(i,l)=>{n(),e(i,l)}:e;this._onValueListeners.push(r);const n=()=>{this._onValueListeners.splice(this._onValueListeners.indexOf(r),1),t.abortSignal!=null&&t.abortSignal.removeEventListener("abort",n)};return t.abortSignal!=null&&t.abortSignal.addEventListener("abort",n),n});o(this,"_setAndNotify",e=>{if(this._disposed)return;const t=this._value;this.equals(t,e)||(this._value=e,this._onValueListeners.forEach(n=>n(e,t)))});o(this,"_disposed",!1);o(this,"isDisposed",()=>this._disposed);o(this,"onDispose",e=>{this._onDisposeListeners.push(e)});o(this,"dispose",()=>{this._disposed||(this._disposed=!0,this._onDisposeListeners.forEach(e=>e()),this._onDisposeListeners.length=0,this._derivatives.length=0)});o(this,"map",(e,t=(r,n)=>r===n)=>{const r=new N(()=>{try{return e(this.get())}catch(n){throw console.error("Error in Signal.map:",n),n}},t);return this.setDerivative(r),r});o(this,"flatMap",(e,t=(r,n)=>r===n)=>{const r=new N(()=>{try{return e(this.get()).get()}catch(n){throw console.error("Error in Signal.flatMap:",n),n}},t);return this.setDerivative(r),r});o(this,"tap",e=>this.map(t=>(e(t),t)));o(this,"at",e=>this.map(t=>t[e]));o(this,"_$");o(this,"filter",(e,t)=>{let r=t??this.get();const n=new N(()=>{try{const i=this.get();return r=e(i)?i:r}catch(i){throw console.error("Error in Signal.filter:",i),i}},this.equals);return this.setDerivative(n),n});o(this,"filterMap",(e,t,r=(n,i)=>n===i)=>{let n=t;const i=new N(()=>{try{const l=this.get(),c=e(l);return n=c??n}catch(l){throw console.error("Error in Signal.filterMap:",l),l}},r);return this.setDerivative(i),i});o(this,"mapAsync",(e,t,r,n=(i,l)=>i===l)=>{const i=P(t,n);let l=0,c=new AbortController;return i.onDispose(this.on(async a=>{const u=++l;c.abort(),c=new AbortController;try{const h=await e(a,{abortSignal:c.signal});u===l&&i.set(h)}catch(h){if(u===l)if(r!=null)i.set(r(h));else throw h}})),i});o(this,"mapMaybe",(e,t)=>this.map(r=>e(r)??t));o(this,"feedProp",(e,t=!1)=>{const r=this.on(e.set);return e.onDispose(r),t?this.onDispose(e.dispose):this.onDispose(r),e});o(this,"deriveProp",({autoDisposeProp:e=!0,equals:t}={})=>this.feedProp(P(this.get(),t),e));o(this,"derive",()=>this.map(e=>e));o(this,"count",()=>{let e=0;return this.map(()=>++e)});o(this,"setDerivative",e=>{this._derivatives.push(e),e.onDispose(()=>{this._derivatives.splice(this._derivatives.indexOf(e),1)}),e.onDispose(this.on(e.setDirty)),this.onDispose(e.dispose)});this.equals=t,this._value=e}get value(){return this._value}get $(){return this._$!==void 0?this._$:this._$=new Proxy(this,{get:(e,t)=>this.at(t)})}};o(q,"ofPromise",(e,t,r,n=(i,l)=>i===l)=>{const i=new q(t,n);return e.then(l=>i._setAndNotify(l)).catch(l=>{r!=null?i._setAndNotify(r(l)):console.error("Unhandled promise rejection in Signal.ofPromise:",l)}),i}),o(q,"is",e=>e!=null&&e.$__signal__===!0);let y=q;const yt=typeof queueMicrotask=="function"?queueMicrotask:s=>Promise.resolve().then(s);class N extends y{constructor(t,r){super(void 0,r);o(this,"$__computed__",!0);o(this,"_isDirty",!1);o(this,"setDirty",()=>{this._isDirty||this._disposed||(this._isDirty=!0,this._derivatives.forEach(t=>t.setDirty()),this._scheduleNotify())});o(this,"_scheduleCount",0);o(this,"_scheduleNotify",()=>{const t=++this._scheduleCount;yt(()=>{this._scheduleCount!==t||this._disposed||this._isDirty&&(this._isDirty=!1,this._setAndNotify(this._fn()))})});o(this,"get",()=>(this._isDirty&&(this._isDirty=!1,this._setAndNotify(this._fn())),this._value));this._fn=t,this.setDirty()}static is(t){return t!=null&&t.$__computed__===!0}get value(){return this.get()}}const ne=class ne extends y{constructor(){super(...arguments);o(this,"$__prop__",!0);o(this,"set",t=>{this._setAndNotify(t)});o(this,"update",t=>{this._setAndNotify(t(this.get()))});o(this,"reducer",(t,...r)=>{const n=this;return function i(l){const c=n.value;n.update(a=>t(a,l)),!n.equals(c,n.value)&&r.forEach(a=>a({previousState:c,state:n.value,action:l,dispatch:i}))}});o(this,"iso",(t,r,n=(i,l)=>i===l)=>{const i=new ne(t(this.get()),n);return i.onDispose(this.on(l=>i.set(t(l)))),i.on(l=>this._setAndNotify(r(l))),i});o(this,"atProp",t=>this.iso(r=>r[t],r=>({...this.value,[t]:r})))}get value(){return this.get()}set value(t){this._setAndNotify(t)}};o(ne,"is",t=>t!=null&&t.$__prop__===!0);let W=ne;const ie=(s,e,t=(r,n)=>r===n)=>{const r=new N(s,t);return e.forEach(n=>n.setDerivative(r)),r},je=(s,e,t={})=>{let r=t.once?()=>{i(),s()}:s;if(t.skipInitial){let l=!1;const c=r;r=()=>{l?c():l=!0}}const n=ie(r,e),i=()=>{n.dispose(),t.abortSignal!=null&&t.abortSignal.removeEventListener("abort",i)};return t.abortSignal!=null&&t.abortSignal.addEventListener("abort",i),i},P=(s,e=(t,r)=>t===r)=>new W(s,e),J=(s,e=(t,r)=>t===r)=>new y(s,e),oe=()=>typeof window<"u"?window:void 0;function Be(s){return s!=null&&s!==!1&&s!==0&&s!==""}function Tt(s){return!Be(s)}function St(s){return s==null}function bt(s){return s!=null}const T={map:(s,e)=>y.is(s)?s.map(e):e(s),toSignal:(s,e)=>y.is(s)?s:J(s,e),maybeToSignal:(s,e)=>{if(s!=null)return T.toSignal(s,e)},get:s=>y.is(s)?s.get():s,on:(s,e)=>y.is(s)?s.on(e):(e(s),()=>{}),dispose:s=>{y.is(s)&&s.dispose()},deriveProp:(s,{autoDisposeProp:e=!0,equals:t}={})=>y.is(s)?s.deriveProp({autoDisposeProp:e,equals:t}):P(s,t),truthy:s=>T.map(s,Be),falsy:s=>T.map(s,Tt),nil:s=>T.map(s,St),defined:s=>T.map(s,bt)},le=(...s)=>(e,t)=>{if(s.length===1)return T.toSignal(s[0]).map(e);const r=s.filter(n=>y.is(n));return ie(()=>e(...s.map(n=>T.get(n))),r,t)},At=s=>{const e=Object.keys(s);return le(...Object.values(s))((...t)=>Object.fromEntries(e.map((r,n)=>[r,t[n]])))},vt=(...s)=>(e,t={})=>{const r=s.filter(n=>y.is(n));return je(()=>e(...s.map(T.get)),r,t)};class pe{constructor(){o(this,"_store",new Map);o(this,"getItem",e=>this._store.get(e)??null);o(this,"setItem",(e,t)=>{this._store.set(e,t)})}}const me=({key:s,defaultValue:e,store:t,serialize:r=JSON.stringify,deserialize:n=JSON.parse,equals:i=(u,h)=>u===h,onLoad:l=u=>u,syncTabs:c=!0,onKeyChange:a="load"})=>{let u=T.get(s);const h=t.getItem(u),f=new W(h!=null?l(n(h)):typeof e=="function"?e():e,i),p=oe(),m=c&&typeof(p==null?void 0:p.BroadcastChannel)=="function";let g=!1,b=null,x=null;const E=S=>{if(!m)return null;const R=`tempo:storedProp:${S}`,A=new p.BroadcastChannel(R),V=`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,H=Q=>{const _=Q.data;if(!(_==null||typeof _!="object"||_.key!==S||typeof _.value!="string"||_.sourceId!=null&&_.sourceId===V))try{g=!0;const de=l(n(_.value));f.set(de)}catch(de){console.warn(`Failed to sync storedProp for key "${S}" via BroadcastChannel`,de)}finally{g=!1}};return A.addEventListener("message",H),f.onDispose(()=>{A==null||A.removeEventListener("message",H),A==null||A.close()}),{channel:A,instanceId:V,handleMessage:H}},O=E(u);O&&(b=O.channel,x=O.instanceId);const he=S=>{const R=u;if(R===S)return;const A=f.get(),V=r(A);if(t.setItem(R,V),b!=null&&(b.close(),b=null,x=null),u=S,a==="load"){const Q=t.getItem(S);if(Q!=null)try{const _=l(n(Q));f.set(_)}catch(_){console.warn(`Failed to load storedProp from new key "${S}"`,_)}else t.setItem(S,V)}else a==="migrate"&&t.setItem(S,V);const H=E(S);H&&(b=H.channel,x=H.instanceId)};return y.is(s)&&f.onDispose(s.on(he)),f.on((S,R)=>{const A=r(S);t.setItem(u,A),b!=null&&!g&&R!==void 0&&x!=null&&b.postMessage({key:u,value:A,sourceId:x})}),f},Et=s=>{var e;return me({...s,store:((e=oe())==null?void 0:e.localStorage)??new pe})},_t=s=>{var e;return me({...s,store:((e=oe())==null?void 0:e.sessionStorage)??new pe})};function He(s){return typeof requestAnimationFrame=="function"?requestAnimationFrame(s):setTimeout(s,0)}const Fe=(s,e,t,r)=>{const n=(r==null?void 0:r.duration)??300,i=(r==null?void 0:r.easing)??(E=>E),l=(r==null?void 0:r.equals)??((E,O)=>E===O);let c=r==null?void 0:r.interpolate,a=s,u=e(),h=performance.now(),f=null,p=!0;const m=new N(e,l),g=P(s,l);g.onDispose(()=>{f!==null&&cancelAnimationFrame(f)}),g.onDispose(m.dispose),t.forEach(E=>{E.setDerivative(m),E.onDispose(g.dispose)});const b=E=>{u=E,h=performance.now(),a=g.value,p&&(p=!1,f=He(x))},x=()=>{const O=(performance.now()-h)/T.get(n),he=i(O);c==null&&(c=Ve(a));let S=c(a,u,he);O>=1?(p=!0,S=u):f=He(x),g.set(S)};return m.on(b),g},Ct=(s,e)=>{const{initialValue:t,...r}=e??{};return Fe(t??s.get(),s.get,[s],r)},qe=(s,e)=>{const t=Object.values(s).filter(y.is),r=Object.keys(s);return ie(()=>{const n={};for(const i of r)n[i]=T.get(s[i]);return e(n)},t)},Pt=s=>qe(s,e=>e),wt=(s,e)=>{const t=P(s.get());let r=null;const n=s.on(i=>{r!=null&&clearTimeout(r),r=setTimeout(()=>{r=null,t.set(i)},typeof e=="function"?e(i):e)});return t.onDispose(()=>{n(),r!=null&&clearTimeout(r)}),t},xt=s=>{let e;return s.map(t=>{const r=e;return e=t,r})},Ot=({size:s=void 0,signal:e})=>{const t=[];return e.map(r=>(t.push(r),s!=null&&t.length>s&&t.shift(),t.slice()))},Dt=s=>(...e)=>le(s,...e)((t,...r)=>t(...r));function Lt(...s){return le(...s)((...e)=>{for(const t of e)if(t!=null)return t})}const We=new Set(["checked","disabled","hidden"]),Ue=new Set(["selected"]),Ge=new Set(["rowSpan","colSpan","tabIndex","valueAsNumber"]),Je=new Set(["valueAsDate"]),Xe=new Set(["value","textContent","innerText","innerHTML","outerHTML","className","classList"]),Ye=(s,e)=>Ue.has(s)?t=>{t==null||t!==!0?e.removeAttribute(s):e.setAttribute(s,"")}:We.has(s)?t=>{t==null?e[s]=null:e[s]=!!t}:Ge.has(s)?t=>{t==null?e[s]=null:e[s]=Number(t)}:Je.has(s)?t=>{t==null?e[s]=null:e[s]=t}:Xe.has(s)?t=>{t==null?e[s]=null:e[s]=String(t)}:t=>{t==null?e.removeAttribute(s):e.setAttribute(s,t)},Qe=(s,e)=>Ue.has(s)?()=>e.hasAttribute(s):We.has(s)?()=>!!e[s]:Ge.has(s)?()=>Number(e[s]):Je.has(s)?()=>e[s]:Xe.has(s)?()=>String(e[s]):()=>e.getAttribute(s),U=s=>{const e=s;e&&e.onblur&&(e.onblur=null),!(!s||s.ownerDocument===void 0)&&s.parentElement&&s.parentElement.removeChild(s)},Ze=s=>ge(s)?s:s.parentElement,ge=s=>s.nodeType===1;class ye extends Error{constructor(e){super(`Provider not found: ${e.description}`)}}class k{constructor(e,t,r,n){o(this,"createElement",(e,t)=>t!==void 0?this.document.createElementNS(t,e):this.document.createElement(e));o(this,"makeChildElement",(e,t)=>{const r=this.createElement(e,t);return this.appendOrInsert(r),this.withElement(r)});o(this,"createText",e=>this.document.createTextNode(e));o(this,"makeChildText",e=>{const t=this.createText(e);return this.appendOrInsert(t),this.withReference(t)});o(this,"setText",e=>{this.reference.nodeValue=e});o(this,"getText",()=>{var e;return((e=this.reference)==null?void 0:e.nodeValue)??this.element.textContent??""});o(this,"makeRef",()=>{const e=this.createText("");return this.appendOrInsert(e),this.withReference(e)});o(this,"appendOrInsert",e=>{this.reference===void 0?this.element.appendChild(e):this.element.insertBefore(e,this.reference)});o(this,"withElement",e=>new k(this.document,e,void 0,this.providers));o(this,"makePortal",e=>{const t=typeof e=="string"?this.document.querySelector(e):e;if(t==null)throw new Error(`Cannot find element by selector for portal: ${e}`);return this.withElement(t)});o(this,"withReference",e=>new k(this.document,this.element,e,this.providers));o(this,"setProvider",(e,t,r)=>new k(this.document,this.element,this.reference,{...this.providers,[e]:[t,r]}));o(this,"getProvider",e=>{if(this.providers[e]===void 0)throw new ye(e);const[t,r]=this.providers[e];return{value:t,onUse:r}});o(this,"clear",e=>{e&&(this.reference!==void 0?U(this.reference):U(this.element))});o(this,"addClasses",e=>{this.element.classList.add(...e)});o(this,"removeClasses",e=>{this.element.classList.remove(...e)});o(this,"getClasses",()=>Array.from(this.element.classList));o(this,"on",(e,t,r)=>{const n=i=>t(i,this);return this.element.addEventListener(e,n,r),i=>{i&&this.element.removeEventListener(e,n,r)}});o(this,"isBrowserDOM",()=>!0);o(this,"isBrowser",()=>!0);o(this,"isHeadlessDOM",()=>!1);o(this,"isHeadless",()=>!1);o(this,"setStyle",(e,t)=>{this.element.style[e]=t});o(this,"getStyle",e=>this.element.style[e]);o(this,"makeAccessors",e=>({get:Qe(e,this.element),set:Ye(e,this.element)}));o(this,"getWindow",()=>this.document.defaultView);this.document=e,this.element=t,this.reference=r,this.providers=n}static of(e,t,r){return new k(e.ownerDocument,e,t,r)}}const ze=s=>Symbol(s),ce=(s,e)=>{const t=s(e);return(r=!0)=>t(r)},Mt=(s,e,{doc:t,clear:r,disposeWithParent:n=!0,providers:i={}}={})=>{const l=typeof e=="string"?(t??document).querySelector(e):e;if(l===null)throw new Ke(`Cannot find element by selector for render: ${e}`);r!==!1&&(t??l.ownerDocument)!=null&&l.nodeType===1&&(l.innerHTML="");const c=Ze(l),a=ge(l)?void 0:l,u=k.of(c,a,i),h=ce(s,u);let f;return n&&(f=new MutationObserver(p=>{var m;(m=p[0])==null||m.removedNodes.forEach(g=>{g===l&&(f==null||f.disconnect(),h(l.nodeType!==1))})}),f.observe(l.parentElement,{childList:!0,subtree:!1,attributes:!1})),()=>{f==null||f.disconnect(),h(!0)}},Ht=(s,{startUrl:e="https://example.com",selector:t,providers:r={}}={selector:"body"})=>{const n=T.toSignal(e).deriveProp(),i=new Se(t,void 0),l=new I(i,void 0,{currentURL:n},r);return{clear:ce(s(),l),root:i,currentURL:n}};class Ke extends Error{constructor(e){super(e)}}const Te="data-tts-node",G="data-tts-class",ee="data-tts-style",te="data-tts-html",se="data-tts-text",re="data-tts-attrs";class Nt{constructor({select:e,getAttribute:t,setAttribute:r,getClass:n,setClass:i,getStyles:l,setStyles:c,appendHTML:a,getInnerHTML:u,setInnerHTML:h,getInnerText:f,setInnerText:p}){o(this,"select");o(this,"getAttribute");o(this,"setAttribute");o(this,"getClass");o(this,"setClass");o(this,"getStyles");o(this,"setStyles");o(this,"appendHTML");o(this,"getInnerHTML");o(this,"setInnerHTML");o(this,"getInnerText");o(this,"setInnerText");o(this,"setFromRoot",(e,t)=>{e.getPortals().forEach(n=>{const i=typeof n.selector=="string"?this.select(n.selector):[n.selector];for(const l of i){if(l==null)throw new Error(`Cannot find element by selector for render: ${n.selector}`);if(n.hasChildren()&&this.appendHTML(l,n.contentToHTML(t)),n.hasInnerHTML()){if(t){const c=this.getInnerHTML(l);c!=null&&this.setAttribute(l,te,c)}this.setInnerHTML(l,n.getInnerHTML())}if(n.hasInnerText()){if(t){const c=this.getInnerText(l);c!=null&&this.setAttribute(l,se,c)}this.setInnerText(l,n.getInnerText())}if(n.hasClasses()){if(t){const c=this.getClass(l);c!=null&&this.setAttribute(l,G,c)}this.setClass(l,n.getClasses().join(" "))}if(n.hasStyles()){if(t){const c=this.getStyles(l);Object.keys(c).length>0&&this.setAttribute(l,ee,JSON.stringify(c))}this.setStyles(l,n.getStyles())}if(n.hasAttributes()){const c=n.getAttributes();if(t){const a=[];c.forEach(([u])=>{const h=this.getAttribute(l,u);h!=null&&a.push([u,h])}),a.length>0&&this.setAttribute(l,re,JSON.stringify(Object.fromEntries(a)))}c.forEach(([a,u])=>{this.setAttribute(l,a,u)})}}})});this.select=e,this.getAttribute=t,this.setAttribute=r,this.getClass=n,this.setClass=i,this.getStyles=l,this.setStyles=c,this.appendHTML=a,this.getInnerHTML=u,this.setInnerHTML=h,this.getInnerText=f,this.setInnerText=p}}const kt=()=>{document.querySelectorAll(`[${Te}]`).forEach(U)},It=s=>{const e=s.getAttribute(G);s.removeAttribute(G),e!=null&&s.setAttribute("class",e)},$t=()=>{document.querySelectorAll(`[${G}]`).forEach(e=>It(e))},Rt=s=>{const e=s.getAttribute(te);s.removeAttribute(te),e!=null&&(s.innerHTML=e)},Vt=()=>{document.querySelectorAll(`[${te}]`).forEach(e=>Rt(e))},jt=s=>{const e=s.getAttribute(se);s.removeAttribute(se),e!=null&&(s.innerText=e)},Bt=()=>{document.querySelectorAll(`[${se}]`).forEach(e=>jt(e))},et=s=>JSON.parse(s.replace(/&quot;/g,'"')),Ft=s=>{const e=s.getAttribute(ee);if(s.removeAttribute(ee),e!=null){const t=et(e);Object.entries(t).forEach(([r,n])=>{s.style.setProperty(r,n)})}},qt=()=>{document.querySelectorAll(`[${ee}]`).forEach(e=>Ft(e))},Wt=s=>{const e=s.getAttribute(re);if(s.removeAttribute(re),e!=null){const t=et(e);Object.entries(t).forEach(([r,n])=>{n==null?s.removeAttribute(r):s.setAttribute(r,n)})}},Ut=()=>{document.querySelectorAll(`[${re}]`).forEach(e=>Wt(e))},Gt=()=>{kt(),$t(),Bt(),Vt(),qt(),Ut()},C=Symbol("class"),D=Symbol("style"),j=Symbol("handler"),tt=()=>Math.random().toString(36).substring(2,15),Jt=s=>s.replace(/<[^>]*>?/g,"");class st{constructor(e){o(this,"id",tt());o(this,"properties",{});o(this,"children",[]);o(this,"isElement",()=>!0);o(this,"isText",()=>!1);o(this,"getText",()=>this.properties.innerText!=null?this.properties.innerText:this.properties.innerHTML!=null?Jt(this.properties.innerHTML):this.children.map(e=>e.getText()).join(""));o(this,"removeChild",e=>{const t=this.children.indexOf(e);t!==-1&&this.children.splice(t,1)});o(this,"remove",()=>{if(this.parent!=null)this.parent.removeChild(this);else throw new Error("Parent is undefined")});o(this,"getPortals",()=>{const e=this.elements().flatMap(t=>t.isPortal()?[t,...t.getPortals()]:t.getPortals());return this.isPortal()&&e.unshift(this),e});o(this,"elements",()=>this.children.filter(e=>e.isElement()));o(this,"hasInnerHTML",()=>this.properties.innerHTML!=null);o(this,"getInnerHTML",()=>this.properties.innerHTML??"");o(this,"getInnerText",()=>this.properties.innerText??"");o(this,"hasInnerText",()=>this.properties.innerText!=null);o(this,"hasChildren",()=>this.children.length>0);o(this,"hasClasses",()=>this.properties[C]!=null);o(this,"hasStyles",()=>this.properties[D]!=null);o(this,"hasAttributes",()=>Object.keys(this.properties).length>0);o(this,"hasHandlers",()=>this.properties[j]!=null);o(this,"hasRenderableProperties",()=>this.hasClasses()||this.hasAttributes()||this.hasStyles());o(this,"getById",e=>{if(this.properties.id===e)return this;for(const t of this.elements()){const r=t.getById(e);if(r!=null)return r}});o(this,"trigger",(e,t)=>{((this.properties[j]??{})[e]??[]).forEach(n=>n(t))});o(this,"click",()=>{this.trigger("click",{})});o(this,"on",(e,t,r,n)=>{var a;const i=(a=this.properties)[j]??(a[j]={}),l=n!=null&&n.once?u=>{c(),t(u,r)}:u=>t(u,r);i[e]=[...i[e]??[],l];const c=()=>{const u=i[e]??[],h=u.indexOf(l);h!==-1&&(u.splice(h,1),u.length===0?(delete i[e],Object.keys(i).length===0&&delete this.properties[j]):i[e]=u,(n==null?void 0:n.signal)!=null&&n.signal.removeEventListener("abort",c))};return(n==null?void 0:n.signal)!=null&&n.signal.addEventListener("abort",c),c});o(this,"addClasses",e=>{var r;if(e.length===0)return;const t=(r=this.properties)[C]??(r[C]=[]);e.forEach(n=>{t.includes(n)||t.push(n)})});o(this,"removeClasses",e=>{var r;if(e.length===0)return;const t=(r=this.properties)[C]??(r[C]=[]);e.forEach(n=>{const i=t.indexOf(n);i!==-1&&t.splice(i,1)}),t.length===0&&delete this.properties[C]});o(this,"getClasses",()=>this.properties[C]??[]);o(this,"getAttributes",()=>Object.entries(this.properties).filter(([e])=>!["innerText","innerHTML"].includes(e)));o(this,"getVisibleAttributes",()=>Reflect.ownKeys(this.properties).flatMap(e=>e===C?[["class",this.getClasses()]]:e===D?[["style",this.getStyles()]]:typeof e=="string"?[[e,String(this.properties[e])]]:[]));o(this,"setStyle",(e,t)=>{var n;const r=(n=this.properties)[D]??(n[D]={});r[e]=t,t===""&&(delete r[e],Object.keys(r).length===0&&delete this.properties[D])});o(this,"getStyle",e=>{var t;return((t=this.properties[D])==null?void 0:t[e])??""});o(this,"getStyles",()=>this.properties[D]??{});o(this,"makeAccessors",e=>{const t=this.properties;return{get:()=>t[e],set:r=>t[e]=r}});this.parent=e}}const Xt=s=>s.replace(/"/g,"&quot;"),Yt=s=>s.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");class rt extends st{constructor(t,r,n){super(n);o(this,"isPortal",()=>!1);o(this,"toHTML",(t=!1)=>{const r=this.children.map(a=>a.toHTML()).join(""),n=this.namespace?` xmlns="${this.namespace}"`:"";let i=null;const l=this.getVisibleAttributes().map(([a,u])=>a==="class"?` class="${u.join(" ")}"`:a==="style"?typeof u=="string"?` style="${u}"`:` style="${Object.entries(u).map(([h,f])=>`${h}: ${f};`).join(" ")}"`:Qt.has(a)?` ${a}`:a==="innerHTML"?(i=u,""):a==="innerText"?(i=Yt(u),""):` ${a}="${Xt(u)}"`).join(""),c=t?` ${Te}`:"";return Zt.has(this.tagName)&&r===""?`<${this.tagName}${n}${l}${c} />`:`<${this.tagName}${n}${l}${c}>${i??r}</${this.tagName}>`});this.tagName=t,this.namespace=r}}class Se extends st{constructor(t,r){super(r);o(this,"isPortal",()=>!0);o(this,"toHTML",()=>"");o(this,"contentToHTML",(t=!1)=>this.children.map(r=>r.toHTML(t)).join(""));this.selector=t}}class nt{constructor(e){o(this,"id",tt());o(this,"isElement",()=>!1);o(this,"isText",()=>!0);o(this,"getText",()=>this.text);o(this,"toHTML",()=>this.text);this.text=e}}class I{constructor(e,t,r,n){o(this,"appendOrInsert",e=>{if(this.reference!=null){const t=this.element.children.indexOf(this.reference);this.element.children.splice(t,0,e)}else this.element.children.push(e)});o(this,"makeChildElement",(e,t)=>{const r=new rt(e,t,this.element);return this.appendOrInsert(r),new I(r,void 0,this.container,this.providers)});o(this,"makeChildText",e=>{const t=new nt(e);return this.appendOrInsert(t),new I(this.element,t,this.container,this.providers)});o(this,"setText",e=>{this.reference&&this.reference.isText()&&(this.reference.text=e)});o(this,"getText",()=>{var e;return((e=this.reference)==null?void 0:e.getText())??this.element.getText()});o(this,"makeRef",()=>this.makeChildText(""));o(this,"makePortal",e=>{const t=new Se(e,this.element);return this.appendOrInsert(t),new I(t,void 0,this.container,this.providers)});o(this,"setProvider",(e,t,r)=>new I(this.element,this.reference,this.container,{...this.providers,[e]:[t,r]}));o(this,"getProvider",e=>{if(this.providers[e]===void 0)throw new ye(e);const[t,r]=this.providers[e];return{value:t,onUse:r}});o(this,"clear",e=>{e&&(this.reference!==void 0?this.element.removeChild(this.reference):this.element.remove())});o(this,"on",(e,t)=>this.element.on(e,t,this));o(this,"addClasses",e=>this.element.addClasses(e));o(this,"removeClasses",e=>this.element.removeClasses(e));o(this,"getClasses",()=>this.element.getClasses());o(this,"isBrowserDOM",()=>!1);o(this,"isBrowser",()=>!1);o(this,"isHeadlessDOM",()=>!0);o(this,"isHeadless",()=>!0);o(this,"setStyle",(e,t)=>this.element.setStyle(e,t));o(this,"getStyle",e=>this.element.getStyle(e));o(this,"makeAccessors",e=>this.element.makeAccessors(e));this.element=e,this.reference=t,this.container=r,this.providers=n}}const Qt=new Set(["checked","disabled","multiple","readonly","required","selected"]),Zt=new Set(["img","br","hr","input","link","meta"]),be=s=>e=>e.makeChildText(s).clear,Ae=s=>e=>{const t=e.makeChildText(s.value),r=s.on(t.setText);return n=>{r(),t.clear(n)}},zt=s=>y.is(s)?Ae(s):be(s),v=(...s)=>e=>{const t=s.map(r=>d(r)(e));return r=>{t.forEach(n=>n(r))}},w=()=>()=>{},Kt=s=>e=>(e.addClasses(s),t=>{t&&e.removeClasses(s)}),es=s=>e=>{let t=[];const r=s.on(n=>{e.removeClasses(t),t=(n??"").split(" ").filter(i=>i.length>0),e.addClasses(t)});return n=>{r(),n&&e.removeClasses(t),t.length=0}},ts=(s,e)=>t=>{const{get:r,set:n}=t.makeAccessors(s),i=r();return n(e),l=>{l&&n(i)}},ss=(s,e)=>t=>{const{get:r,set:n}=t.makeAccessors(s),i=r(),l=e.on(n);return c=>{l(),c&&n(i)}},F=(s,e)=>y.is(e)?ss(s,e):ts(s,e),ae=(s="")=>(e,t)=>{const r=s?`${s}${e}`:e;return F(r,t)},$=new Proxy({},{get:(s,e)=>e==="class"?t=>y.is(t)?es(t):Kt((t??"").split(" ").filter(r=>r.length>0)):e==="set"?ae():t=>F(e,t)}),rs=new Proxy({},{get:(s,e)=>e==="set"?ae("data-"):t=>F(`data-${e}`,t)}),ns=new Proxy({},{get:(s,e)=>e==="set"?ae("aria-"):t=>F(`aria-${e}`,t)}),is=new Proxy({},{get:(s,e)=>e==="set"?ae():t=>F(e,t)}),os=new Proxy({},{get:(s,e)=>t=>F(e,t)}),d=s=>{if(s==null)return w;if(Array.isArray(s))return v(...s.map(d));if(typeof s=="string")return be(s);if(y.is(s))return Ae(s);if(typeof s=="function")return s;throw new Error(`Unknown type: '${typeof s}' for child: ${s}`)},ve=(s,...e)=>t=>{const r=t.makeChildElement(s,void 0),n=e.map(i=>d(i)(r));return i=>{n.forEach(l=>l(!1)),r.clear(i)}},Ee=(s,e,...t)=>r=>{const n=r.makeChildElement(s,e),i=t.map(l=>d(l)(n));return l=>{i.forEach(c=>c(!1)),n.clear(l)}},ls=new Proxy({},{get:(s,e)=>(...t)=>ve(e,t.flatMap(d))}),cs=new Proxy({},{get:(s,e)=>(...t)=>ve("input",$.type(e),...t)}),as="http://www.w3.org/2000/svg",us=new Proxy({},{get:(s,e)=>(...t)=>Ee(e,as,t.flatMap(d))}),hs="http://www.w3.org/1998/Math/MathML",ds=new Proxy({},{get:(s,e)=>(...t)=>Ee(e,hs,t.flatMap(d))}),_e=(s,e)=>{if(typeof e=="function")return _e(s,{then:e});const t=e.pending!=null?d(e.pending()):w,r=e.then,n=e.error!=null?i=>d(e.error(i)):()=>w;return i=>{let l=!0;const c=s(),a=i.makeRef();let u=d(t)(a);return c.then(h=>{l&&(u(!0),u=d(r(h))(a))},h=>{l&&(u(!0),u=d(n(h))(a))}),h=>{l=!1,u(h),a.clear(h)}}},fs=(s,e)=>_e(()=>s,e),it=(s,e,t)=>r=>r.on(s,e,t),ot=s=>it("click",(e,t)=>{e.preventDefault();const r=e.target;setTimeout(()=>{const n=r.ownerDocument!=null?r==null?void 0:r.checked:void 0;n!=null&&s(!n,t)},0)}),X=new Proxy({},{get:(s,e)=>t=>it(e,t)}),lt=(s,e)=>t=>{(e==null?void 0:e.preventDefault)===!0&&t.preventDefault(),(e==null?void 0:e.stopPropagation)===!0&&t.stopPropagation(),(e==null?void 0:e.stopImmediatePropagation)===!0&&t.stopImmediatePropagation(),s(t)},M=(s,e)=>lt(t=>{const r=t.target;s(r,t)},e),ct=(s,e)=>M((t,r)=>s(t.value,r),e),at=(s,e)=>M((t,r)=>s(t.valueAsNumber,r),e),ut=(s,e)=>M((t,r)=>{if(t.value==="")return;const n=t.value.split("-"),i=new Date(Number(n[0]),Number(n[1])-1,Number(n[2].substring(0,2)));s(i,r)},e),ps=(s,e)=>M((t,r)=>{if(t.value===""){s(null,r);return}const n=t.value.split("-"),i=new Date(Number(n[0]),Number(n[1])-1,Number(n[2].substring(0,2)));s(i,r)},e),ht=(s,e)=>M((t,r)=>{if(t.value==="")return;const n=t.value.split("T"),i=n[0].split("-"),l=new Date(Number(i[0]),Number(i[1])-1,Number(i[2])),c=n[1].split(":");l.setHours(Number(c[0])),l.setMinutes(Number(c[1])),l.setSeconds(Number(c[2])),s(l,r)},e),ms=(s,e)=>M((t,r)=>{if(t.value===""){s(null,r);return}const n=t.value.split("T");if(n.length!==2){s(null,r);return}const i=n[0].split("-"),l=new Date(Number(i[0]),Number(i[1])-1,Number(i[2])),c=n[1].split(":");l.setHours(Number(c[0]??0)),l.setMinutes(Number(c[1]??0)),l.setSeconds(Number(c[2]??0)),s(l,r)},e),gs=(s,e)=>M((t,r)=>{s(t.checked,r)},e),ys=(s,e="input")=>v($.valueAsDate(s),X[e](ut(s.set))),Ts=(s,e="input")=>v($.valueAsDate(s),X[e](ht(s.set))),Ss=(s,e="input")=>v($.valueAsNumber(s),X[e](at(s.set))),bs=(s,e="input")=>v($.value(s),X[e](ct(s.set))),As=s=>v($.checked(s),ot(s.set)),Ce=(s,e,t)=>y.is(s)?e(s):t(s),vs=(s,e,t)=>{const r=s.makeRef();let n=()=>{};const i=e.on(l=>{n(!0),n=d(t(l))(r)});return l=>{n(l),i(),r.clear(l)}},Y=(s,e)=>{function t(n){return i=>{const l=i.makeRef();let c,a;const u=n.map(p=>Object.keys(p)[0]);let h;const f=u.on(p=>{if(p!==h){h=p,a==null||a.dispose(),c==null||c(!0),a=n.map(g=>g[p]);const m=e[p](a);c=d(m)(l)}});return p=>{a==null||a.dispose(),f(),l.clear(p),c==null||c(p)}}}function r(n){const i=Object.keys(n)[0];return d(e[i](J(n[i])))}return Ce(s,t,r)},Pe=(s,e,t)=>Y(T.map(s,r=>({[r[e]]:r})),t),Es=(s,e)=>Pe(s,"kind",e),_s=(s,e)=>{const t=T.map(s,([r,n])=>({[r]:n}));return Y(t,e)},Cs=(s,e)=>Pe(s,"type",e),dt=(s,e)=>Y(T.map(s,t=>({[t]:!0})),e),Ps=(s,e={})=>t=>{const r=(e==null?void 0:e.firstSeparator)??s,n=(e==null?void 0:e.lastSeparator)??s;return dt(t.map(i=>i.isFirst?"first":i.isLast?"last":"other"),{first:r,last:n,other:s})},ws=s=>e=>(e.appendOrInsert(s),t=>{t&&U(s)}),xs=(s,e,t)=>{function r(i){return l=>{const c=l.makeRef();let a=()=>{},u=!1,h=null;const f=i.on(p=>{p==null?(a(!0),a=d(t==null?void 0:t())(c),u=!1,h==null||h.dispose(),h=null):u?h.set(p):(h=P(p),a(!0),a=d(e(h))(c),u=!0)});return p=>{h==null||h.dispose(),f(),a==null||a(p),c.clear(p)}}}function n(i){if(i==null){const l=t==null?void 0:t();return l!=null?d(l):w}return d(e(J(i)))}return Ce(s,r,n)},Os=(...s)=>(e,t)=>r=>{const n=r.makeRef();if(s.some(m=>!y.is(m)&&m==null))return(t!=null?d(t==null?void 0:t()):w)(n);const l=s.map(()=>null),c=s.map(m=>y.is(m)?m.value!=null:m!=null);let a=null;const u=P(c.every(m=>m)),h=(m,g)=>{if(m.value!=null){if(l[g]==null){const b=P(m.value);l[g]=b}else l[g].value=m.value;c[g]=!0}else c[g]=!1};let f=s.length-1;const p=s.map((m,g)=>{if(!y.is(m)){const b=P(m);return l[g]=b,()=>{}}return m.on(()=>{h(m,g),f===0?u.value=c.every(b=>b):f--})});return u.on(m=>{a==null||a(!0),a=null,m?a=d(e(...l))(n):a=d((t==null?void 0:t())??w)(n)}),m=>{l.forEach(g=>g==null?void 0:g.dispose()),u.dispose(),p.forEach(g=>g()),a==null||a(m),n.clear(m)}},B=(...s)=>e=>t=>s.forEach(r=>r(t,e)),we=(s,e,t)=>Ce(s,r=>n=>vs(n,r,i=>i?e():t==null?void 0:t()),r=>{if(r){const n=e();return n!=null?d(n):w}return d(t==null?void 0:t())}),Ds=(s,e,t)=>we(T.map(s,r=>!r),e,t),xe=(s,e,t)=>{if(t!=null)return xe(s,r=>{const n=new K(r.index,r.total.map(i=>i-1));return v(B(n.dispose),d(e(r)),we(r.isLast,()=>w,()=>t(n)))});if(y.is(s))return r=>{const n=s.derive(),i=r.makeRef(),l=[];return n.on(c=>{const a=l.splice(c);for(const u of a)u(!0);for(let u=l.length;u<c;u++){const h=new K(u,n);l.push(v(B(h.dispose),d(e(h)))(i))}}),c=>{n.dispose();for(const a of l)a(c);l.length=0,i.clear(c)}};{const r=J(s);return v(...Array.from({length:s},(n,i)=>i).map(n=>{const i=new K(n,r);return v(B(i.dispose),d(e(i)))}))}},Ls=(s,e,t)=>{const r=T.map(s,i=>i.length),n=T.toSignal(s);return xe(r,i=>{const l=n.map(c=>c[i.index]);return v(B(l.dispose),d(e(l,i)))},t)},Ms=(s,e)=>{if(y.is(s)){const t=s;return r=>{r=r.makeRef();const n=t.map(c=>d(e(c)));let i=()=>{};const l=n.on(c=>{i(!0),i=c(r)});return c=>{l(),i(c)}}}return d(e(s))},Hs=(s,e,t=()=>w)=>Y(T.map(s,r=>r.length>0?{notEmpty:r}:{whenEmpty:null}),{notEmpty:r=>e(r),whenEmpty:()=>t()}),Ns=(s,e)=>t=>{const r=t.makePortal(s),n=ce(d(e),r);return()=>n(!0)},z=new Map,ft=s=>({mark:ze(`Probe(${s.description})`),create:({callback:e=()=>{},timeout:t=10}={})=>{const r=c=>{clearTimeout(n),z.delete(s),e(c)};if(z.has(s))throw new Error(`Probe already exists: ${s.description}`);const n=setTimeout(()=>r("timeout"),t),i={counter:0,timeoutId:n};return z.set(s,i),{value:()=>{clearTimeout(n);const c=z.get(s);c!=null&&--c.counter===0&&r("resolved")},dispose:()=>r("disposed"),onUse:()=>i.counter++}}}),ks=ft(Symbol("GlobalProbe")),Is=(s,e)=>t=>{const r=t.getStyle(s);return t.setStyle(s,e),n=>{n&&t.setStyle(s,r)}},$s=(s,e)=>t=>{const r=t.getStyle(s),n=e.on(i=>t.setStyle(s,i));return i=>{n(),i&&t.setStyle(s,r)}},Ne=(s,e)=>y.is(e)?$s(s,e):Is(s,e),Rs=new Proxy({},{get:(s,e)=>e==="variable"?(t,r)=>Ne(t,r):t=>Ne(e,t)}),pt=s=>e=>{if(e.isBrowser()){const t=s(e);if(t!=null)return d(t)(e)}return()=>{}},Vs=s=>e=>{const t=s(e);return t==null?()=>{}:d(t)(e)},js=s=>pt(e=>s(e.element)),Bs=s=>e=>{if(e.isHeadlessDOM()){const t=s(e);if(t)return d(t)(e)}return()=>{}},ue=s=>e=>{let t=e;function r(){return t}function n(c){t=c}const i=[],l=s({use:({mark:c})=>{const{value:a,onUse:u}=r().getProvider(c);return u==null||u(),a},set:({mark:c,create:a},u)=>{const{value:h,dispose:f,onUse:p}=a(u,r());i.push(f),n(r().setProvider(c,h,p))}});return l==null?()=>{}:v(d(l),B(()=>i.forEach(c=>c())))(r())},Fs=(s,e,t)=>ue(({set:r})=>(r(s,e),t())),qs=(s,e)=>ue(({use:t})=>e(t(s))),Ws=(...s)=>e=>ue(({use:t})=>{const r=s.map(t);return e(...r)});exports.Async=fs;exports.BindChecked=As;exports.BindDate=ys;exports.BindDateTime=Ts;exports.BindNumber=Ss;exports.BindText=bs;exports.BrowserContext=k;exports.CLASS_PLACEHOLDER_ATTR=G;exports.Computed=N;exports.Conjunction=Ps;exports.DOMNode=ws;exports.El=ve;exports.ElNS=Ee;exports.ElementPosition=K;exports.Empty=w;exports.Ensure=xs;exports.EnsureAll=Os;exports.ForEach=Ls;exports.Fragment=v;exports.GlobalProbe=ks;exports.HeadlessAdapter=Nt;exports.HeadlessContext=I;exports.HeadlessElement=rt;exports.HeadlessPortal=Se;exports.HeadlessText=nt;exports.MapSignal=Ms;exports.MemoryStore=pe;exports.NotEmpty=Hs;exports.OnChecked=ot;exports.OnDispose=B;exports.OneOf=Y;exports.OneOfField=Pe;exports.OneOfKind=Es;exports.OneOfTuple=_s;exports.OneOfType=Cs;exports.OneOfValue=dt;exports.Portal=Ns;exports.Prop=W;exports.Provide=Fs;exports.ProviderNotFoundError=ye;exports.RenderingError=Ke;exports.Repeat=xe;exports.Signal=y;exports.Task=_e;exports.TextNode=zt;exports.Unless=Ds;exports.Use=qs;exports.UseMany=Ws;exports.Value=T;exports.When=we;exports.WithBrowserCtx=pt;exports.WithCtx=Vs;exports.WithElement=js;exports.WithHeadlessCtx=Bs;exports.WithProvider=ue;exports._NODE_PLACEHOLDER_ATTR=Te;exports._getSelfOrParentElement=Ze;exports._isElement=ge;exports._makeGetter=Qe;exports._makeSetter=Ye;exports._removeDOMNode=U;exports._signalText=Ae;exports._staticText=be;exports.animateSignal=Ct;exports.animateSignals=Fe;exports.aria=ns;exports.attr=$;exports.bind=Dt;exports.coalesce=Lt;exports.computed=ie;exports.computedOf=le;exports.computedRecord=qe;exports.dataAttr=rs;exports.delaySignal=wt;exports.effect=je;exports.effectOf=vt;exports.emit=lt;exports.emitChecked=gs;exports.emitTarget=M;exports.emitValue=ct;exports.emitValueAsDate=ut;exports.emitValueAsDateTime=ht;exports.emitValueAsNullableDate=ps;exports.emitValueAsNullableDateTime=ms;exports.emitValueAsNumber=at;exports.endInterpolate=Re;exports.getWindow=oe;exports.guessInterpolate=Ve;exports.html=ls;exports.input=cs;exports.interpolateDate=$e;exports.interpolateNumber=ke;exports.interpolateString=Ie;exports.joinSignals=At;exports.localStorageProp=Et;exports.makeProbe=ft;exports.makeProviderMark=ze;exports.math=ds;exports.mathAttr=os;exports.merge=Pt;exports.on=X;exports.previousSignal=xt;exports.prop=P;exports.render=Mt;exports.renderWithContext=ce;exports.renderableOfTNode=d;exports.restoreTempoPlaceholders=Gt;exports.runHeadless=Ht;exports.sessionStorageProp=_t;exports.signal=J;exports.slidingWindowSignal=Ot;exports.storedProp=me;exports.style=Rs;exports.svg=us;exports.svgAttr=is;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=[],Le=t=>{w.push(t)},ke=()=>{if(w.length===0)throw new Error("Cannot pop from empty scope stack");w.pop()},he=()=>w[w.length-1]??null,pt=()=>w,gt=()=>w[w.length-2]??null,D=(t,e)=>{Le(t);try{return e()}finally{ke()}},mt=t=>{const e=new j;try{return D(e,()=>t(e))}finally{e.dispose()}},K=t=>{const e=w.slice();w.length=0;try{return t()}finally{w.length=0,w.push(...e)}};class g{constructor(e,s){this.equals=s,this._value=e}static ofPromise=(e,s,r,n=(i,o)=>i===o)=>{const i=new g(s,n);return e.then(o=>i._setAndNotify(o)).catch(o=>{r!=null?i._setAndNotify(r(o)):console.error("Unhandled promise rejection in Signal.ofPromise:",o)}),i};static is=e=>e!=null&&e.$__signal__===!0;$__signal__=!0;_value;_derivatives=[];_onValueListeners=[];_onDisposeListeners=[];get=()=>this._value;get value(){return this._value}hasListeners=()=>this._onValueListeners.length>0;on=(e,s={})=>{s.skipInitial||e(this.get(),void 0);const r=s.once?(i,o)=>{n(),e(i,o)}:e;this._onValueListeners.push(r);const n=()=>{this._onValueListeners.splice(this._onValueListeners.indexOf(r),1),s.abortSignal!=null&&s.abortSignal.removeEventListener("abort",n)};return s.abortSignal!=null&&s.abortSignal.addEventListener("abort",n),n};onChange=(e,s={})=>{let r=0;const n=(i,o)=>{r++>0&&e(i,o)};return this.on(n,s)};_setAndNotify=e=>{if(this._disposed)return;const s=this._value;this.equals(s,e)||(this._value=e,this._onValueListeners.forEach(n=>n(e,s)))};_disposed=!1;isDisposed=()=>this._disposed;onDispose=e=>{this._onDisposeListeners.push(e)};dispose=()=>{this._disposed||(this._disposed=!0,this._onDisposeListeners.forEach(e=>e()),this._onDisposeListeners.length=0,this._derivatives.length=0)};map=(e,s=(r,n)=>r===n)=>{const r=new k(()=>{try{return e(this.get())}catch(n){throw console.error("Error in Signal.map:",n),n}},s);return this.setDerivative(r),r};flatMap=(e,s=(r,n)=>r===n)=>{const r=new k(()=>{try{return e(this.get()).get()}catch(n){throw console.error("Error in Signal.flatMap:",n),n}},s);return this.setDerivative(r),r};tap=e=>this.map(s=>(e(s),s));at=e=>this.map(s=>s[e]);_$;get $(){return this._$!==void 0?this._$:this._$=new Proxy(this,{get:(e,s)=>this.at(s)})}filter=(e,s)=>{let r=s??this.get();const n=new k(()=>{try{const i=this.get();return r=e(i)?i:r}catch(i){throw console.error("Error in Signal.filter:",i),i}},this.equals);return this.setDerivative(n),n};filterMap=(e,s,r=(n,i)=>n===i)=>{let n=s;const i=new k(()=>{try{const o=this.get(),l=e(o);return n=l??n}catch(o){throw console.error("Error in Signal.filterMap:",o),o}},r);return this.setDerivative(i),i};mapAsync=(e,s,r,n=(i,o)=>i===o)=>{const i=v(s,n);let o=0,l=new AbortController;return i.onDispose(this.on(async c=>{const a=++o;l.abort(),l=new AbortController;try{const u=await e(c,{abortSignal:l.signal});a===o&&i.set(u)}catch(u){if(a===o)if(r!=null)i.set(r(u));else throw u}})),i};mapMaybe=(e,s)=>this.map(r=>e(r)??s);feedProp=(e,s=!1)=>{const r=this.on(e.set);return e.onDispose(r),s?this.onDispose(e.dispose):this.onDispose(r),e};deriveProp=({autoDisposeProp:e=!0,equals:s}={})=>this.feedProp(v(this.get(),s),e);derive=()=>this.map(e=>e);count=()=>{let e=0;return this.map(()=>++e)};setDerivative=e=>{this._derivatives.push(e),e.onDispose(()=>{this._derivatives.splice(this._derivatives.indexOf(e),1)}),e.onDispose(this.on(e.setDirty)),this.onDispose(e.dispose)}}const yt=typeof queueMicrotask=="function"?queueMicrotask:t=>Promise.resolve().then(t);class k extends g{constructor(e,s){super(void 0,s),this._fn=e,this.setDirty();const r=he();r?.track(this)}static is(e){return e!=null&&e.$__computed__===!0}$__computed__=!0;_isDirty=!1;setDirty=()=>{this._isDirty||this._disposed||(this._isDirty=!0,this._derivatives.forEach(e=>e.setDirty()),this._scheduleNotify())};_scheduleCount=0;_scheduleNotify=()=>{const e=++this._scheduleCount;yt(()=>{this._scheduleCount!==e||this._disposed||this._isDirty&&(this._isDirty=!1,this._setAndNotify(this._fn()))})};get=()=>(this._isDirty&&(this._isDirty=!1,this._setAndNotify(this._fn())),this._value);get value(){return this.get()}dispose=()=>{this._disposed||(this._scheduleCount++,this._disposed=!0,this._onDisposeListeners.forEach(e=>e()),this._onDisposeListeners.length=0,this._derivatives.length=0)}}class q extends g{static is=e=>e!=null&&e.$__prop__===!0;$__prop__=!0;set=e=>{this._setAndNotify(e)};update=e=>{this._setAndNotify(e(this.get()))};reducer=(e,...s)=>{const r=this;return function n(i){const o=r.value;r.update(l=>e(l,i)),!r.equals(o,r.value)&&s.forEach(l=>l({previousState:o,state:r.value,action:i,dispatch:n}))}};iso=(e,s,r=(n,i)=>n===i)=>{const n=new q(e(this.get()),r);return n.onDispose(this.on(i=>n.set(e(i)))),n.on(i=>this._setAndNotify(s(i))),n};atProp=e=>this.iso(s=>s[e],s=>({...this.value,[e]:s}));get value(){return this.get()}set value(e){this._setAndNotify(e)}}const U=(t,e,s=(r,n)=>r===n)=>{const r=new k(t,s);return e.forEach(n=>n.setDerivative(r)),r},de=(t,e,s={})=>{let r=s.once?()=>{i(),t()}:t;if(s.skipInitial){let o=!1;const l=r;r=()=>{o?l():o=!0}}const n=U(r,e),i=()=>{n.dispose(),s.abortSignal!=null&&s.abortSignal.removeEventListener("abort",i)};return s.abortSignal!=null&&s.abortSignal.addEventListener("abort",i),i},v=(t,e=(s,r)=>s===r)=>{const s=new q(t,e),r=he();return r?.track(s),s},G=(t,e=(s,r)=>s===r)=>new g(t,e);function Me(t){return t!=null&&t!==!1&&t!==0&&t!==""}function St(t){return!Me(t)}function bt(t){return t==null}function wt(t){return t!=null}const y={map:(t,e)=>g.is(t)?t.map(e):e(t),toSignal:(t,e)=>g.is(t)?t.derive():G(t,e),maybeToSignal:(t,e)=>{if(t!=null)return y.toSignal(t,e)},get:t=>g.is(t)?t.get():t,on:(t,e)=>g.is(t)?t.on(e):(e(t),()=>{}),dispose:t=>{g.is(t)&&t.dispose()},disposeFn:t=>()=>y.dispose(t),deriveProp:(t,{autoDisposeProp:e=!0,equals:s}={})=>g.is(t)?t.deriveProp({autoDisposeProp:e,equals:s}):v(t,s),truthy:t=>y.map(t,Me),falsy:t=>y.map(t,St),nil:t=>y.map(t,bt),defined:t=>y.map(t,wt)},J=(...t)=>(e,s)=>{if(t.length===1)return y.toSignal(t[0]).map(e);const r=t.filter(n=>g.is(n));return U(()=>e(...t.map(n=>y.get(n))),r,s)},Tt=t=>{const e=Object.keys(t);return J(...Object.values(t))((...s)=>Object.fromEntries(e.map((r,n)=>[r,s[n]])))},He=(...t)=>(e,s={})=>{const r=t.filter(n=>g.is(n));return de(()=>e(...t.map(y.get)),r,s)};class j{_signals=new Set;_callbacks=[];_disposed=!1;track(e){if(this._disposed)throw new Error("Cannot track signal in disposed scope");if(e.isDisposed())throw new Error("Cannot track already disposed signal");this._signals.add(e)}onDispose(e){if(this._disposed)throw new Error("Cannot register callback in disposed scope");this._callbacks.push(e)}dispose(){if(!this._disposed){this._disposed=!0;for(const e of this._callbacks)try{e()}catch(s){console.error("Error in disposal callback:",s)}this._callbacks.length=0;for(const e of this._signals)e.dispose();this._signals.clear()}}get disposed(){return this._disposed}prop(e,s){const r=K(()=>v(e,s));return this.track(r),r}computed(e,s,r){const n=K(()=>U(e,s,r));return this.track(n),n}effect(e,s,r){return D(this,()=>de(e,s,r))}computedOf(...e){return(s,r)=>{const n=K(()=>J(...e)(s,r));return this.track(n),n}}effectOf(...e){return(s,r)=>D(this,()=>He(...e)(s,r))}}const Ne=(t,e,s)=>t+(e-t)*s,Oe=97,Ie=(t,e,s)=>{const r=Math.max(t.length,e.length);let n="";for(let i=0;i<r;i++){let o=t.charCodeAt(i);isNaN(o)&&(o=Oe);let l=e.charCodeAt(i);isNaN(l)&&(l=Oe),n+=String.fromCharCode(o+(l-o)*s)}return n},$e=(t,e,s)=>new Date(t.getTime()+(e.getTime()-t.getTime())*s),Re=(t,e)=>e,Ve=t=>typeof t=="number"?Ne:typeof t=="string"?Ie:t instanceof Date?$e:Re;class ee{constructor(e,s){this.index=e,this.total=s,this.counter=e+1,this.isFirst=e===0,this.isEven=e%2===1,this.isOdd=e%2===0}counter;isFirst;isEven;isOdd;#e;get isLast(){return this.#e==null&&(this.#e=this.total.map(e=>this.counter===e)),this.#e}dispose=()=>{this.#e?.dispose(),this.#e=void 0}}const ie=()=>typeof window<"u"?window:void 0;class fe{_store=new Map;getItem=e=>this._store.get(e)??null;setItem=(e,s)=>{this._store.set(e,s)}}const pe=({key:t,defaultValue:e,store:s,serialize:r=JSON.stringify,deserialize:n=JSON.parse,equals:i=(a,u)=>a===u,onLoad:o=a=>a,syncTabs:l=!0,onKeyChange:c="load"})=>{let a=y.get(t);const u=s.getItem(a),d=new q(u!=null?o(n(u)):typeof e=="function"?e():e,i),p=ie(),f=l&&typeof p?.BroadcastChannel=="function";let m=!1,b=null,P=null;const T=S=>{if(!f)return null;const I=`tempo:storedProp:${S}`,C=new p.BroadcastChannel(I),$=`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,L=Q=>{const _=Q.data;if(!(_==null||typeof _!="object"||_.key!==S||typeof _.value!="string"||_.sourceId!=null&&_.sourceId===$))try{m=!0;const ue=o(n(_.value));d.set(ue)}catch(ue){console.warn(`Failed to sync storedProp for key "${S}" via BroadcastChannel`,ue)}finally{m=!1}};return C.addEventListener("message",L),d.onDispose(()=>{C?.removeEventListener("message",L),C?.close()}),{channel:C,instanceId:$,handleMessage:L}},O=T(a);O&&(b=O.channel,P=O.instanceId);const ae=S=>{const I=a;if(I===S)return;const C=d.get(),$=r(C);if(s.setItem(I,$),b!=null&&(b.close(),b=null,P=null),a=S,c==="load"){const Q=s.getItem(S);if(Q!=null)try{const _=o(n(Q));d.set(_)}catch(_){console.warn(`Failed to load storedProp from new key "${S}"`,_)}else s.setItem(S,$)}else c==="migrate"&&s.setItem(S,$);const L=T(S);L&&(b=L.channel,P=L.instanceId)};return g.is(t)&&d.onDispose(t.on(ae)),d.on((S,I)=>{const C=r(S);s.setItem(a,C),b!=null&&!m&&I!==void 0&&P!=null&&b.postMessage({key:a,value:C,sourceId:P})}),d},_t=t=>pe({...t,store:ie()?.localStorage??new fe}),vt=t=>pe({...t,store:ie()?.sessionStorage??new fe});function De(t){return typeof requestAnimationFrame=="function"?requestAnimationFrame(t):setTimeout(t,0)}const je=(t,e,s,r)=>{const n=r?.duration??300,i=r?.easing??(T=>T),o=r?.equals??((T,O)=>T===O);let l=r?.interpolate,c=t,a=e(),u=performance.now(),d=null,p=!0;const f=new k(e,o),m=v(t,o);m.onDispose(()=>{d!==null&&cancelAnimationFrame(d)}),m.onDispose(f.dispose),s.forEach(T=>{T.setDerivative(f),T.onDispose(m.dispose)});const b=T=>{a=T,u=performance.now(),c=m.value,p&&(p=!1,d=De(P))},P=()=>{const O=(performance.now()-u)/y.get(n),ae=i(O);l==null&&(l=Ve(c));let S=l(c,a,ae);O>=1?(p=!0,S=a):d=De(P),m.set(S)};return f.on(b),m},At=(t,e)=>{const{initialValue:s,...r}=e??{};return je(s??t.get(),t.get,[t],r)},Be=(t,e)=>{const s=Object.values(t).filter(g.is),r=Object.keys(t);return U(()=>{const n={};for(const i of r)n[i]=y.get(t[i]);return e(n)},s)},Et=t=>Be(t,e=>e),Ct=(t,e)=>{const s=v(t.get());let r=null;const n=t.on(i=>{r!=null&&clearTimeout(r),r=setTimeout(()=>{r=null,s.set(i)},typeof e=="function"?e(i):e)});return s.onDispose(()=>{n(),r!=null&&clearTimeout(r)}),s},Pt=t=>{let e;return t.map(s=>{const r=e;return e=s,r})},Ot=({size:t=void 0,signal:e})=>{const s=[];return e.map(r=>(s.push(r),t!=null&&s.length>t&&s.shift(),s.slice()))},Dt=t=>(...e)=>J(t,...e)((s,...r)=>s(...r));function xt(...t){return J(...t)((...e)=>{for(const s of e)if(s!=null)return s})}const Fe=new Set(["checked","disabled","hidden"]),We=new Set(["selected"]),qe=new Set(["rowSpan","colSpan","tabIndex","valueAsNumber"]),Ue=new Set(["valueAsDate"]),Ge=new Set(["value","textContent","innerText","innerHTML","outerHTML","className","classList"]),Je=(t,e)=>We.has(t)?s=>{s==null||s!==!0?e.removeAttribute(t):e.setAttribute(t,"")}:Fe.has(t)?s=>{s==null?e[t]=null:e[t]=!!s}:qe.has(t)?s=>{s==null?e[t]=null:e[t]=Number(s)}:Ue.has(t)?s=>{s==null?e[t]=null:e[t]=s}:Ge.has(t)?s=>{s==null?e[t]=null:e[t]=String(s)}:s=>{s==null?e.removeAttribute(t):e.setAttribute(t,s)},Xe=(t,e)=>We.has(t)?()=>e.hasAttribute(t):Fe.has(t)?()=>!!e[t]:qe.has(t)?()=>Number(e[t]):Ue.has(t)?()=>e[t]:Ge.has(t)?()=>String(e[t]):()=>e.getAttribute(t),F=t=>{const e=t;e&&e.onblur&&(e.onblur=null),!(!t||t.ownerDocument===void 0)&&t.parentElement&&t.parentElement.removeChild(t)},Ye=t=>ge(t)?t:t.parentElement,ge=t=>t.nodeType===1;class me extends Error{constructor(e){super(`Provider not found: ${e.description}`)}}class M{constructor(e,s,r,n){this.document=e,this.element=s,this.reference=r,this.providers=n}static of(e,s,r){return new M(e.ownerDocument,e,s,r)}createElement=(e,s)=>s!==void 0?this.document.createElementNS(s,e):this.document.createElement(e);makeChildElement=(e,s)=>{const r=this.createElement(e,s);return this.appendOrInsert(r),this.withElement(r)};createText=e=>this.document.createTextNode(e);makeChildText=e=>{const s=this.createText(e);return this.appendOrInsert(s),this.withReference(s)};setText=e=>{this.reference.nodeValue=e};getText=()=>this.reference?.nodeValue??this.element.textContent??"";makeRef=()=>{const e=this.createText("");return this.appendOrInsert(e),this.withReference(e)};appendOrInsert=e=>{this.reference===void 0?this.element.appendChild(e):this.element.insertBefore(e,this.reference)};withElement=e=>new M(this.document,e,void 0,this.providers);makePortal=e=>{const s=typeof e=="string"?this.document.querySelector(e):e;if(s==null)throw new Error(`Cannot find element by selector for portal: ${e}`);return this.withElement(s)};withReference=e=>new M(this.document,this.element,e,this.providers);setProvider=(e,s,r)=>new M(this.document,this.element,this.reference,{...this.providers,[e]:[s,r]});getProvider=e=>{if(this.providers[e]===void 0)throw new me(e);const[s,r]=this.providers[e];return{value:s,onUse:r}};clear=e=>{e&&(this.reference!==void 0?F(this.reference):F(this.element))};addClasses=e=>{this.element.classList.add(...e)};removeClasses=e=>{this.element.classList.remove(...e)};getClasses=()=>Array.from(this.element.classList);on=(e,s,r)=>{const n=i=>s(i,this);return this.element.addEventListener(e,n,r),i=>{i&&this.element.removeEventListener(e,n,r)}};isBrowserDOM=()=>!0;isBrowser=()=>!0;isHeadlessDOM=()=>!1;isHeadless=()=>!1;setStyle=(e,s)=>{this.element.style[e]=s};getStyle=e=>this.element.style[e];makeAccessors=e=>({get:Xe(e,this.element),set:Je(e,this.element)});getWindow=()=>this.document.defaultView}const Qe=t=>Symbol(t),oe=(t,e)=>{const s=new j,r=D(s,()=>t(e));return(n=!0)=>{s.dispose(),r(n)}},Lt=(t,e,{doc:s,clear:r,disposeWithParent:n=!0,providers:i={}}={})=>{const o=typeof e=="string"?(s??document).querySelector(e):e;if(o===null)throw new Ze(`Cannot find element by selector for render: ${e}`);r!==!1&&(s??o.ownerDocument)!=null&&o.nodeType===1&&(o.innerHTML="");const l=Ye(o),c=ge(o)?void 0:o,a=M.of(l,c,i),u=oe(t,a);let d;return n&&(d=new MutationObserver(p=>{p[0]?.removedNodes.forEach(f=>{f===o&&(d?.disconnect(),u(o.nodeType!==1))})}),d.observe(o.parentElement,{childList:!0,subtree:!1,attributes:!1})),()=>{d?.disconnect(),u(!0)}},kt=(t,{startUrl:e="https://example.com",selector:s,providers:r={}}={selector:"body"})=>{const n=y.toSignal(e).deriveProp(),i=new Se(s,void 0),o=new H(i,void 0,{currentURL:n},r);return{clear:oe(t(),o),root:i,currentURL:n}};class Ze extends Error{constructor(e){super(e)}}const ye="data-tts-node",W="data-tts-class",te="data-tts-style",se="data-tts-html",re="data-tts-text",ne="data-tts-attrs";class Mt{select;getAttribute;setAttribute;getClass;setClass;getStyles;setStyles;appendHTML;getInnerHTML;setInnerHTML;getInnerText;setInnerText;constructor({select:e,getAttribute:s,setAttribute:r,getClass:n,setClass:i,getStyles:o,setStyles:l,appendHTML:c,getInnerHTML:a,setInnerHTML:u,getInnerText:d,setInnerText:p}){this.select=e,this.getAttribute=s,this.setAttribute=r,this.getClass=n,this.setClass=i,this.getStyles=o,this.setStyles=l,this.appendHTML=c,this.getInnerHTML=a,this.setInnerHTML=u,this.getInnerText=d,this.setInnerText=p}setFromRoot=(e,s)=>{e.getPortals().forEach(n=>{const i=typeof n.selector=="string"?this.select(n.selector):[n.selector];for(const o of i){if(o==null)throw new Error(`Cannot find element by selector for render: ${n.selector}`);if(n.hasChildren()&&this.appendHTML(o,n.contentToHTML(s)),n.hasInnerHTML()){if(s){const l=this.getInnerHTML(o);l!=null&&this.setAttribute(o,se,l)}this.setInnerHTML(o,n.getInnerHTML())}if(n.hasInnerText()){if(s){const l=this.getInnerText(o);l!=null&&this.setAttribute(o,re,l)}this.setInnerText(o,n.getInnerText())}if(n.hasClasses()){if(s){const l=this.getClass(o);l!=null&&this.setAttribute(o,W,l)}this.setClass(o,n.getClasses().join(" "))}if(n.hasStyles()){if(s){const l=this.getStyles(o);Object.keys(l).length>0&&this.setAttribute(o,te,JSON.stringify(l))}this.setStyles(o,n.getStyles())}if(n.hasAttributes()){const l=n.getAttributes();if(s){const c=[];l.forEach(([a])=>{const u=this.getAttribute(o,a);u!=null&&c.push([a,u])}),c.length>0&&this.setAttribute(o,ne,JSON.stringify(Object.fromEntries(c)))}l.forEach(([c,a])=>{this.setAttribute(o,c,a)})}}})}}const Ht=()=>{document.querySelectorAll(`[${ye}]`).forEach(F)},Nt=t=>{const e=t.getAttribute(W);t.removeAttribute(W),e!=null&&t.setAttribute("class",e)},It=()=>{document.querySelectorAll(`[${W}]`).forEach(e=>Nt(e))},$t=t=>{const e=t.getAttribute(se);t.removeAttribute(se),e!=null&&(t.innerHTML=e)},Rt=()=>{document.querySelectorAll(`[${se}]`).forEach(e=>$t(e))},Vt=t=>{const e=t.getAttribute(re);t.removeAttribute(re),e!=null&&(t.innerText=e)},jt=()=>{document.querySelectorAll(`[${re}]`).forEach(e=>Vt(e))},ze=t=>JSON.parse(t.replace(/&quot;/g,'"')),Bt=t=>{const e=t.getAttribute(te);if(t.removeAttribute(te),e!=null){const s=ze(e);Object.entries(s).forEach(([r,n])=>{t.style.setProperty(r,n)})}},Ft=()=>{document.querySelectorAll(`[${te}]`).forEach(e=>Bt(e))},Wt=t=>{const e=t.getAttribute(ne);if(t.removeAttribute(ne),e!=null){const s=ze(e);Object.entries(s).forEach(([r,n])=>{n==null?t.removeAttribute(r):t.setAttribute(r,n)})}},qt=()=>{document.querySelectorAll(`[${ne}]`).forEach(e=>Wt(e))},Ut=()=>{Ht(),It(),jt(),Rt(),Ft(),qt()},R=Symbol("class"),V=Symbol("style"),Z=Symbol("handler"),Ke=()=>Math.random().toString(36).substring(2,15),Gt=t=>t.replace(/<[^>]*>?/g,"");class et{constructor(e){this.parent=e}id=Ke();properties={};children=[];isElement=()=>!0;isText=()=>!1;getText=()=>this.properties.innerText!=null?this.properties.innerText:this.properties.innerHTML!=null?Gt(this.properties.innerHTML):this.children.map(e=>e.getText()).join("");removeChild=e=>{const s=this.children.indexOf(e);s!==-1&&this.children.splice(s,1)};remove=()=>{if(this.parent!=null)this.parent.removeChild(this);else throw new Error("Parent is undefined")};getPortals=()=>{const e=this.elements().flatMap(s=>s.isPortal()?[s,...s.getPortals()]:s.getPortals());return this.isPortal()&&e.unshift(this),e};elements=()=>this.children.filter(e=>e.isElement());hasInnerHTML=()=>this.properties.innerHTML!=null;getInnerHTML=()=>this.properties.innerHTML??"";getInnerText=()=>this.properties.innerText??"";hasInnerText=()=>this.properties.innerText!=null;hasChildren=()=>this.children.length>0;hasClasses=()=>this.properties[R]!=null;hasStyles=()=>this.properties[V]!=null;hasAttributes=()=>Object.keys(this.properties).length>0;hasHandlers=()=>this.properties[Z]!=null;hasRenderableProperties=()=>this.hasClasses()||this.hasAttributes()||this.hasStyles();getById=e=>{if(this.properties.id===e)return this;for(const s of this.elements()){const r=s.getById(e);if(r!=null)return r}};trigger=(e,s)=>{((this.properties[Z]??{})[e]??[]).forEach(n=>n(s))};click=()=>{this.trigger("click",{})};on=(e,s,r,n)=>{const i=this.properties[Z]??={},o=n?.once?c=>{l(),s(c,r)}:c=>s(c,r);i[e]=[...i[e]??[],o];const l=()=>{const c=i[e]??[],a=c.indexOf(o);a!==-1&&(c.splice(a,1),c.length===0?(delete i[e],Object.keys(i).length===0&&delete this.properties[Z]):i[e]=c,n?.signal!=null&&n.signal.removeEventListener("abort",l))};return n?.signal!=null&&n.signal.addEventListener("abort",l),l};addClasses=e=>{if(e.length===0)return;const s=this.properties[R]??=[];e.forEach(r=>{s.includes(r)||s.push(r)})};removeClasses=e=>{if(e.length===0)return;const s=this.properties[R]??=[];e.forEach(r=>{const n=s.indexOf(r);n!==-1&&s.splice(n,1)}),s.length===0&&delete this.properties[R]};getClasses=()=>this.properties[R]??[];getAttributes=()=>Object.entries(this.properties).filter(([e])=>!["innerText","innerHTML"].includes(e));getVisibleAttributes=()=>Reflect.ownKeys(this.properties).flatMap(e=>e===R?[["class",this.getClasses()]]:e===V?[["style",this.getStyles()]]:typeof e=="string"?[[e,String(this.properties[e])]]:[]);setStyle=(e,s)=>{const r=this.properties[V]??={};r[e]=s,s===""&&(delete r[e],Object.keys(r).length===0&&delete this.properties[V])};getStyle=e=>this.properties[V]?.[e]??"";getStyles=()=>this.properties[V]??{};makeAccessors=e=>{const s=this.properties;return{get:()=>s[e],set:r=>s[e]=r}}}const Jt=t=>t.replace(/"/g,"&quot;"),Xt=t=>t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");class tt extends et{constructor(e,s,r){super(r),this.tagName=e,this.namespace=s}isPortal=()=>!1;toHTML=(e=!1)=>{const s=this.children.map(l=>l.toHTML()).join(""),r=this.namespace?` xmlns="${this.namespace}"`:"";let n=null;const i=this.getVisibleAttributes().map(([l,c])=>l==="class"?` class="${c.join(" ")}"`:l==="style"?typeof c=="string"?` style="${c}"`:` style="${Object.entries(c).map(([a,u])=>`${a}: ${u};`).join(" ")}"`:Yt.has(l)?` ${l}`:l==="innerHTML"?(n=c,""):l==="innerText"?(n=Xt(c),""):` ${l}="${Jt(c)}"`).join(""),o=e?` ${ye}`:"";return Qt.has(this.tagName)&&s===""?`<${this.tagName}${r}${i}${o} />`:`<${this.tagName}${r}${i}${o}>${n??s}</${this.tagName}>`}}class Se extends et{constructor(e,s){super(s),this.selector=e}isPortal=()=>!0;toHTML=()=>"";contentToHTML=(e=!1)=>this.children.map(s=>s.toHTML(e)).join("")}class st{constructor(e){this.text=e}id=Ke();isElement=()=>!1;isText=()=>!0;getText=()=>this.text;toHTML=()=>this.text}class H{constructor(e,s,r,n){this.element=e,this.reference=s,this.container=r,this.providers=n}appendOrInsert=e=>{if(this.reference!=null){const s=this.element.children.indexOf(this.reference);this.element.children.splice(s,0,e)}else this.element.children.push(e)};makeChildElement=(e,s)=>{const r=new tt(e,s,this.element);return this.appendOrInsert(r),new H(r,void 0,this.container,this.providers)};makeChildText=e=>{const s=new st(e);return this.appendOrInsert(s),new H(this.element,s,this.container,this.providers)};setText=e=>{this.reference&&this.reference.isText()&&(this.reference.text=e)};getText=()=>this.reference?.getText()??this.element.getText();makeRef=()=>this.makeChildText("");makePortal=e=>{const s=new Se(e,this.element);return this.appendOrInsert(s),new H(s,void 0,this.container,this.providers)};setProvider=(e,s,r)=>new H(this.element,this.reference,this.container,{...this.providers,[e]:[s,r]});getProvider=e=>{if(this.providers[e]===void 0)throw new me(e);const[s,r]=this.providers[e];return{value:s,onUse:r}};clear=e=>{e&&(this.reference!==void 0?this.element.removeChild(this.reference):this.element.remove())};on=(e,s)=>this.element.on(e,s,this);addClasses=e=>this.element.addClasses(e);removeClasses=e=>this.element.removeClasses(e);getClasses=()=>this.element.getClasses();isBrowserDOM=()=>!1;isBrowser=()=>!1;isHeadlessDOM=()=>!0;isHeadless=()=>!0;setStyle=(e,s)=>this.element.setStyle(e,s);getStyle=e=>this.element.getStyle(e);makeAccessors=e=>this.element.makeAccessors(e)}const Yt=new Set(["checked","disabled","multiple","readonly","required","selected"]),Qt=new Set(["img","br","hr","input","link","meta"]),be=t=>e=>e.makeChildText(t).clear,we=t=>e=>{const s=e.makeChildText(t.value),r=t.on(s.setText);return n=>{r(),s.clear(n)}},Zt=t=>g.is(t)?we(t):be(t),A=(...t)=>e=>{const s=t.map(r=>h(r)(e));return r=>{s.forEach(n=>n(r))}},E=()=>()=>{},zt=t=>e=>(e.addClasses(t),s=>{s&&e.removeClasses(t)}),Kt=t=>e=>{let s=[];const r=t.on(n=>{e.removeClasses(s),s=(n??"").split(" ").filter(i=>i.length>0),e.addClasses(s)});return n=>{r(),n&&e.removeClasses(s),s.length=0}},es=(t,e)=>s=>{const{get:r,set:n}=s.makeAccessors(t),i=r();return n(e),o=>{o&&n(i)}},ts=(t,e)=>s=>{const{get:r,set:n}=s.makeAccessors(t),i=r(),o=e.on(n);return l=>{o(),l&&n(i)}},B=(t,e)=>g.is(e)?ts(t,e):es(t,e),le=(t="")=>(e,s)=>{const r=t?`${t}${e}`:e;return B(r,s)},N=new Proxy({},{get:(t,e)=>e==="class"?s=>g.is(s)?Kt(s):zt((s??"").split(" ").filter(r=>r.length>0)):e==="set"?le():s=>B(e,s)}),ss=new Proxy({},{get:(t,e)=>e==="set"?le("data-"):s=>B(`data-${e}`,s)}),rs=new Proxy({},{get:(t,e)=>e==="set"?le("aria-"):s=>B(`aria-${e}`,s)}),ns=new Proxy({},{get:(t,e)=>e==="set"?le():s=>B(e,s)}),is=new Proxy({},{get:(t,e)=>s=>B(e,s)}),h=t=>{if(t==null)return E;if(Array.isArray(t))return A(...t.map(h));if(typeof t=="string")return be(t);if(g.is(t))return we(t);if(typeof t=="function")return t;throw new Error(`Unknown type: '${typeof t}' for child: ${t}`)},Te=(t,...e)=>s=>{const r=s.makeChildElement(t,void 0),n=e.map(i=>h(i)(r));return i=>{n.forEach(o=>o(!1)),r.clear(i)}},_e=(t,e,...s)=>r=>{const n=r.makeChildElement(t,e),i=s.map(o=>h(o)(n));return o=>{i.forEach(l=>l(!1)),n.clear(o)}},os=new Proxy({},{get:(t,e)=>(...s)=>Te(e,s.flatMap(h))}),ls=new Proxy({},{get:(t,e)=>(...s)=>Te("input",N.type(e),...s)}),cs="http://www.w3.org/2000/svg",as=new Proxy({},{get:(t,e)=>(...s)=>_e(e,cs,s.flatMap(h))}),us="http://www.w3.org/1998/Math/MathML",hs=new Proxy({},{get:(t,e)=>(...s)=>_e(e,us,s.flatMap(h))}),ve=(t,e)=>{if(typeof e=="function")return ve(t,{then:e});const s=e.pending!=null?h(e.pending()):E,r=e.then,n=e.error!=null?i=>h(e.error(i)):()=>E;return i=>{let o=!0;const l=t(),c=i.makeRef();let a=h(s)(c);return l.then(u=>{o&&(a(!0),a=h(r(u))(c))},u=>{o&&(a(!0),a=h(n(u))(c))}),u=>{o=!1,a(u),c.clear(u)}}},ds=(t,e)=>ve(()=>t,e),rt=(t,e,s)=>r=>r.on(t,e,s),nt=t=>rt("click",(e,s)=>{e.preventDefault();const r=e.target;setTimeout(()=>{const n=r.ownerDocument!=null?r?.checked:void 0;n!=null&&t(!n,s)},0)}),X=new Proxy({},{get:(t,e)=>s=>rt(e,s)}),it=(t,e)=>s=>{e?.preventDefault===!0&&s.preventDefault(),e?.stopPropagation===!0&&s.stopPropagation(),e?.stopImmediatePropagation===!0&&s.stopImmediatePropagation(),t(s)},x=(t,e)=>it(s=>{const r=s.target;t(r,s)},e),ot=(t,e)=>x((s,r)=>t(s.value,r),e),lt=(t,e)=>x((s,r)=>t(s.valueAsNumber,r),e),ct=(t,e)=>x((s,r)=>{if(s.value==="")return;const n=s.value.split("-"),i=new Date(Number(n[0]),Number(n[1])-1,Number(n[2].substring(0,2)));t(i,r)},e),fs=(t,e)=>x((s,r)=>{if(s.value===""){t(null,r);return}const n=s.value.split("-"),i=new Date(Number(n[0]),Number(n[1])-1,Number(n[2].substring(0,2)));t(i,r)},e),at=(t,e)=>x((s,r)=>{if(s.value==="")return;const n=s.value.split("T"),i=n[0].split("-"),o=new Date(Number(i[0]),Number(i[1])-1,Number(i[2])),l=n[1].split(":");o.setHours(Number(l[0])),o.setMinutes(Number(l[1])),o.setSeconds(Number(l[2])),t(o,r)},e),ps=(t,e)=>x((s,r)=>{if(s.value===""){t(null,r);return}const n=s.value.split("T");if(n.length!==2){t(null,r);return}const i=n[0].split("-"),o=new Date(Number(i[0]),Number(i[1])-1,Number(i[2])),l=n[1].split(":");o.setHours(Number(l[0]??0)),o.setMinutes(Number(l[1]??0)),o.setSeconds(Number(l[2]??0)),t(o,r)},e),gs=(t,e)=>x((s,r)=>{t(s.checked,r)},e),ms=(t,e="input")=>A(N.valueAsDate(t),X[e](ct(t.set))),ys=(t,e="input")=>A(N.valueAsDate(t),X[e](at(t.set))),Ss=(t,e="input")=>A(N.valueAsNumber(t),X[e](lt(t.set))),bs=(t,e="input")=>A(N.value(t),X[e](ot(t.set))),ws=t=>A(N.checked(t),nt(t.set)),Ae=(t,e,s)=>g.is(t)?e(t):s(t),Ts=(t,e,s)=>{const r=t.makeRef();let n=()=>{},i=null;const o=e.on(l=>{i?.dispose(),n(!0),i=new j,n=D(i,()=>h(s(l))(r))});return l=>{i?.dispose(),n(l),o(),r.clear(l)}},Y=(t,e)=>{function s(n){return i=>{const o=i.makeRef();let l,c;const a=n.map(p=>Object.keys(p)[0]);let u;const d=a.on(p=>{if(p!==u){u=p,c?.dispose(),l?.(!0),c=n.map(m=>m[p]);const f=e[p](c);l=h(f)(o)}});return p=>{c?.dispose(),d(),o.clear(p),l?.(p)}}}function r(n){const i=Object.keys(n)[0];return h(e[i](G(n[i])))}return Ae(t,s,r)},Ee=(t,e,s)=>Y(y.map(t,r=>({[r[e]]:r})),s),_s=(t,e)=>Ee(t,"kind",e),vs=(t,e)=>{const s=y.map(t,([r,n])=>({[r]:n}));return Y(s,e)},As=(t,e)=>Ee(t,"type",e),ut=(t,e)=>Y(y.map(t,s=>({[s]:!0})),e),Es=(t,e={})=>s=>{const r=e?.firstSeparator??t,n=e?.lastSeparator??t;return ut(s.map(i=>i.isFirst?"first":i.isLast?"last":"other"),{first:r,last:n,other:t})},Cs=t=>e=>(e.appendOrInsert(t),s=>{s&&F(t)}),Ps=(t,e,s)=>{function r(i){return o=>{const l=o.makeRef();let c=()=>{},a=!1,u=null;const d=i.on(p=>{p==null?(c(!0),c=h(s?.())(l),a=!1,u?.dispose(),u=null):a?u.set(p):(u=v(p),c(!0),c=h(e(u))(l),a=!0)});return p=>{u?.dispose(),d(),c?.(p),l.clear(p)}}}function n(i){if(i==null){const o=s?.();return o!=null?h(o):E}return h(e(G(i)))}return Ae(t,r,n)},Os=(...t)=>(e,s)=>r=>{const n=r.makeRef();if(t.some(f=>!g.is(f)&&f==null))return(s!=null?h(s?.()):E)(n);const o=t.map(()=>null),l=t.map(f=>g.is(f)?f.value!=null:f!=null);let c=null;const a=v(l.every(f=>f)),u=(f,m)=>{if(f.value!=null){if(o[m]==null){const b=v(f.value);o[m]=b}else o[m].value=f.value;l[m]=!0}else l[m]=!1};let d=t.length-1;const p=t.map((f,m)=>{if(!g.is(f)){const b=v(f);return o[m]=b,()=>{}}return f.on(()=>{u(f,m),d===0?a.value=l.every(b=>b):d--})});return a.on(f=>{c?.(!0),c=null,f?c=h(e(...o))(n):c=h(s?.()??E)(n)}),f=>{o.forEach(m=>m?.dispose()),a.dispose(),p.forEach(m=>m()),c?.(f),n.clear(f)}},Ce=(t,e,s)=>Ae(t,r=>n=>Ts(n,r,i=>i?e():s?.()),r=>{if(r){const n=e();return n!=null?h(n):E}return h(s?.())}),Ds=(t,e,s)=>Ce(y.map(t,r=>!r),e,s),Pe=(t,e,s)=>{if(s!=null)return Pe(t,r=>{const n=new ee(r.index,r.total.map(i=>i-1));return A(h(e(r)),Ce(r.isLast,()=>E,()=>s(n)))});if(g.is(t))return r=>{const n=t.derive(),i=r.makeRef(),o=[],l=[];return n.on(c=>{const a=o.splice(c),u=l.splice(c);for(const d of u)d.dispose();for(const d of a)d(!0);for(let d=o.length;d<c;d++){const p=new ee(d,n),f=new j;l.push(f),o.push(D(f,()=>h(e(p))(i)))}}),c=>{for(const a of l)a.dispose();l.length=0,n.dispose();for(const a of o)a(c);o.length=0,i.clear(c)}};{const r=G(t);return A(...Array.from({length:t},(n,i)=>i).map(n=>{const i=new ee(n,r);return h(e(i))}))}},xs=(t,e,s)=>{const r=y.map(t,i=>i.length),n=y.toSignal(t);return Pe(r,i=>{const o=n.map(l=>l[i.index]);return h(e(o,i))},s)},ht=(...t)=>e=>s=>t.forEach(r=>{typeof r=="function"?r(s,e):r.dispose(s,e)}),Ls=(t,e)=>{if(g.is(t)){const s=t;return r=>{r=r.makeRef();const n=s.map(l=>h(e(l)));let i=()=>{};const o=n.on(l=>{i(!0),i=l(r)});return l=>{o(),i(l)}}}return h(e(t))},ks=(t,e,s=()=>E)=>Y(y.map(t,r=>r.length>0?{notEmpty:r}:{whenEmpty:null}),{notEmpty:r=>e(r),whenEmpty:()=>s()}),Ms=(t,e)=>s=>{const r=s.makePortal(t),n=oe(h(e),r);return()=>n(!0)},z=new Map,dt=t=>({mark:Qe(`Probe(${t.description})`),create:({callback:e=()=>{},timeout:s=10}={})=>{const r=l=>{clearTimeout(n),z.delete(t),e(l)};if(z.has(t))throw new Error(`Probe already exists: ${t.description}`);const n=setTimeout(()=>r("timeout"),s),i={counter:0,timeoutId:n};return z.set(t,i),{value:()=>{clearTimeout(n);const l=z.get(t);l!=null&&--l.counter===0&&r("resolved")},dispose:()=>r("disposed"),onUse:()=>i.counter++}}}),Hs=dt(Symbol("GlobalProbe")),Ns=(t,e)=>s=>{const r=s.getStyle(t);return s.setStyle(t,e),n=>{n&&s.setStyle(t,r)}},Is=(t,e)=>s=>{const r=s.getStyle(t),n=e.on(i=>s.setStyle(t,i));return i=>{n(),i&&s.setStyle(t,r)}},xe=(t,e)=>g.is(e)?Is(t,e):Ns(t,e),$s=new Proxy({},{get:(t,e)=>e==="variable"?(s,r)=>xe(s,r):s=>xe(e,s)}),ft=t=>e=>{if(e.isBrowser()){const s=t(e);if(s!=null)return h(s)(e)}return()=>{}},Rs=t=>e=>{const s=t(e);return s==null?()=>{}:h(s)(e)},Vs=t=>ft(e=>t(e.element)),js=t=>e=>{if(e.isHeadlessDOM()){const s=t(e);if(s)return h(s)(e)}return()=>{}},Bs=t=>e=>{const s=new j,r=D(s,()=>h(t(s))(e));return n=>{s.dispose(),r(n)}},ce=t=>e=>{let s=e;function r(){return s}function n(l){s=l}const i=[],o=t({use:({mark:l})=>{const{value:c,onUse:a}=r().getProvider(l);return a?.(),c},set:({mark:l,create:c},a)=>{const{value:u,dispose:d,onUse:p}=c(a,r());i.push(d),n(r().setProvider(l,u,p))}});return o==null?()=>{}:A(h(o),ht(()=>i.forEach(l=>l())))(r())},Fs=(t,e,s)=>ce(({set:r})=>(r(t,e),s())),Ws=(t,e)=>ce(({use:s})=>e(s(t))),qs=(...t)=>e=>ce(({use:s})=>{const r=t.map(s);return e(...r)});exports.Async=ds;exports.BindChecked=ws;exports.BindDate=ms;exports.BindDateTime=ys;exports.BindNumber=Ss;exports.BindText=bs;exports.BrowserContext=M;exports.CLASS_PLACEHOLDER_ATTR=W;exports.Computed=k;exports.Conjunction=Es;exports.DOMNode=Cs;exports.DisposalScope=j;exports.El=Te;exports.ElNS=_e;exports.ElementPosition=ee;exports.Empty=E;exports.Ensure=Ps;exports.EnsureAll=Os;exports.ForEach=xs;exports.Fragment=A;exports.GlobalProbe=Hs;exports.HeadlessAdapter=Mt;exports.HeadlessContext=H;exports.HeadlessElement=tt;exports.HeadlessPortal=Se;exports.HeadlessText=st;exports.MapSignal=Ls;exports.MemoryStore=fe;exports.NotEmpty=ks;exports.OnChecked=nt;exports.OnDispose=ht;exports.OneOf=Y;exports.OneOfField=Ee;exports.OneOfKind=_s;exports.OneOfTuple=vs;exports.OneOfType=As;exports.OneOfValue=ut;exports.Portal=Ms;exports.Prop=q;exports.Provide=Fs;exports.ProviderNotFoundError=me;exports.RenderingError=Ze;exports.Repeat=Pe;exports.Signal=g;exports.Task=ve;exports.TextNode=Zt;exports.Unless=Ds;exports.Use=Ws;exports.UseMany=qs;exports.Value=y;exports.When=Ce;exports.WithBrowserCtx=ft;exports.WithCtx=Rs;exports.WithElement=Vs;exports.WithHeadlessCtx=js;exports.WithProvider=ce;exports.WithScope=Bs;exports._NODE_PLACEHOLDER_ATTR=ye;exports._getSelfOrParentElement=Ye;exports._isElement=ge;exports._makeGetter=Xe;exports._makeSetter=Je;exports._removeDOMNode=F;exports._signalText=we;exports._staticText=be;exports.animateSignal=At;exports.animateSignals=je;exports.aria=rs;exports.attr=N;exports.bind=Dt;exports.coalesce=xt;exports.computed=U;exports.computedOf=J;exports.computedRecord=Be;exports.dataAttr=ss;exports.delaySignal=Ct;exports.effect=de;exports.effectOf=He;exports.emit=it;exports.emitChecked=gs;exports.emitTarget=x;exports.emitValue=ot;exports.emitValueAsDate=ct;exports.emitValueAsDateTime=at;exports.emitValueAsNullableDate=fs;exports.emitValueAsNullableDateTime=ps;exports.emitValueAsNumber=lt;exports.endInterpolate=Re;exports.getCurrentScope=he;exports.getParentScope=gt;exports.getScopeStack=pt;exports.getWindow=ie;exports.guessInterpolate=Ve;exports.html=os;exports.input=ls;exports.interpolateDate=$e;exports.interpolateNumber=Ne;exports.interpolateString=Ie;exports.joinSignals=Tt;exports.localStorageProp=_t;exports.makeProbe=dt;exports.makeProviderMark=Qe;exports.math=hs;exports.mathAttr=is;exports.merge=Et;exports.on=X;exports.popScope=ke;exports.previousSignal=Pt;exports.prop=v;exports.pushScope=Le;exports.render=Lt;exports.renderWithContext=oe;exports.renderableOfTNode=h;exports.restoreTempoPlaceholders=Ut;exports.runHeadless=kt;exports.scopeStack=w;exports.scoped=mt;exports.sessionStorageProp=vt;exports.signal=G;exports.slidingWindowSignal=Ot;exports.storedProp=pe;exports.style=$s;exports.svg=as;exports.svgAttr=ns;exports.untracked=K;exports.withScope=D;
package/index.d.ts CHANGED
@@ -8,6 +8,8 @@ export type * from './types/mathml-attributes';
8
8
  export type * from './types/mathml-tags';
9
9
  export type * from './types/svg-attributes';
10
10
  export type * from './types/svg-tags';
11
+ export * from './std/disposal-scope';
12
+ export * from './std/scope-stack';
11
13
  export * from './std/interpolate';
12
14
  export * from './std/element-position';
13
15
  export * from './std/signal';
@@ -47,4 +49,5 @@ export * from './renderable/with-browser-ctx';
47
49
  export * from './renderable/with-ctx';
48
50
  export * from './renderable/with-element';
49
51
  export * from './renderable/with-headless-ctx';
52
+ export * from './renderable/with-scope';
50
53
  export * from './renderable/provider';