@tempots/dom 31.6.1 → 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";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Ce=(t,e,s)=>t+(e-t)*s,Ae=97,Pe=(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=Ae);let l=e.charCodeAt(i);isNaN(l)&&(l=Ae),n+=String.fromCharCode(o+(l-o)*s)}return n},Oe=(t,e,s)=>new Date(t.getTime()+(e.getTime()-t.getTime())*s),xe=(t,e)=>e,De=t=>typeof t=="number"?Ce:typeof t=="string"?Pe:t instanceof Date?Oe:xe;class Y{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}}class m{constructor(e,s){this.equals=s,this._value=e}static ofPromise=(e,s,r,n=(i,o)=>i===o)=>{const i=new m(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};_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 D(()=>{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 D(()=>{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 D(()=>{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 D(()=>{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=A(s,n);let o=0,l=new AbortController;return i.onDispose(this.on(async a=>{const c=++o;l.abort(),l=new AbortController;try{const u=await e(a,{abortSignal:l.signal});c===o&&i.set(u)}catch(u){if(c===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(A(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 ot=typeof queueMicrotask=="function"?queueMicrotask:t=>Promise.resolve().then(t);class D extends m{constructor(e,s){super(void 0,s),this._fn=e,this.setDirty()}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;ot(()=>{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()}}class F extends m{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 F(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 ee=(t,e,s=(r,n)=>r===n)=>{const r=new D(t,s);return e.forEach(n=>n.setDerivative(r)),r},Le=(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=ee(r,e),i=()=>{n.dispose(),s.abortSignal!=null&&s.abortSignal.removeEventListener("abort",i)};return s.abortSignal!=null&&s.abortSignal.addEventListener("abort",i),i},A=(t,e=(s,r)=>s===r)=>new F(t,e),q=(t,e=(s,r)=>s===r)=>new m(t,e),te=()=>typeof window<"u"?window:void 0;function Me(t){return t!=null&&t!==!1&&t!==0&&t!==""}function lt(t){return!Me(t)}function at(t){return t==null}function ct(t){return t!=null}const y={map:(t,e)=>m.is(t)?t.map(e):e(t),toSignal:(t,e)=>m.is(t)?t.derive():q(t,e),maybeToSignal:(t,e)=>{if(t!=null)return y.toSignal(t,e)},get:t=>m.is(t)?t.get():t,on:(t,e)=>m.is(t)?t.on(e):(e(t),()=>{}),dispose:t=>{m.is(t)&&t.dispose()},deriveProp:(t,{autoDisposeProp:e=!0,equals:s}={})=>m.is(t)?t.deriveProp({autoDisposeProp:e,equals:s}):A(t,s),truthy:t=>y.map(t,Me),falsy:t=>y.map(t,lt),nil:t=>y.map(t,at),defined:t=>y.map(t,ct)},se=(...t)=>(e,s)=>{if(t.length===1)return y.toSignal(t[0]).map(e);const r=t.filter(n=>m.is(n));return ee(()=>e(...t.map(n=>y.get(n))),r,s)},ut=t=>{const e=Object.keys(t);return se(...Object.values(t))((...s)=>Object.fromEntries(e.map((r,n)=>[r,s[n]])))},ht=(...t)=>(e,s={})=>{const r=t.filter(n=>m.is(n));return Le(()=>e(...t.map(y.get)),r,s)};class ae{_store=new Map;getItem=e=>this._store.get(e)??null;setItem=(e,s)=>{this._store.set(e,s)}}const ce=({key:t,defaultValue:e,store:s,serialize:r=JSON.stringify,deserialize:n=JSON.parse,equals:i=(c,u)=>c===u,onLoad:o=c=>c,syncTabs:l=!0,onKeyChange:a="load"})=>{let c=y.get(t);const u=s.getItem(c),p=new F(u!=null?o(n(u)):typeof e=="function"?e():e,i),f=te(),d=l&&typeof f?.BroadcastChannel=="function";let g=!1,S=null,C=null;const v=b=>{if(!d)return null;const N=`tempo:storedProp:${b}`,_=new f.BroadcastChannel(N),k=`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,x=G=>{const w=G.data;if(!(w==null||typeof w!="object"||w.key!==b||typeof w.value!="string"||w.sourceId!=null&&w.sourceId===k))try{g=!0;const le=o(n(w.value));p.set(le)}catch(le){console.warn(`Failed to sync storedProp for key "${b}" via BroadcastChannel`,le)}finally{g=!1}};return _.addEventListener("message",x),p.onDispose(()=>{_?.removeEventListener("message",x),_?.close()}),{channel:_,instanceId:k,handleMessage:x}},P=v(c);P&&(S=P.channel,C=P.instanceId);const oe=b=>{const N=c;if(N===b)return;const _=p.get(),k=r(_);if(s.setItem(N,k),S!=null&&(S.close(),S=null,C=null),c=b,a==="load"){const G=s.getItem(b);if(G!=null)try{const w=o(n(G));p.set(w)}catch(w){console.warn(`Failed to load storedProp from new key "${b}"`,w)}else s.setItem(b,k)}else a==="migrate"&&s.setItem(b,k);const x=v(b);x&&(S=x.channel,C=x.instanceId)};return m.is(t)&&p.onDispose(t.on(oe)),p.on((b,N)=>{const _=r(b);s.setItem(c,_),S!=null&&!g&&N!==void 0&&C!=null&&S.postMessage({key:c,value:_,sourceId:C})}),p},dt=t=>ce({...t,store:te()?.localStorage??new ae}),ft=t=>ce({...t,store:te()?.sessionStorage??new ae});function Ee(t){return typeof requestAnimationFrame=="function"?requestAnimationFrame(t):setTimeout(t,0)}const He=(t,e,s,r)=>{const n=r?.duration??300,i=r?.easing??(v=>v),o=r?.equals??((v,P)=>v===P);let l=r?.interpolate,a=t,c=e(),u=performance.now(),p=null,f=!0;const d=new D(e,o),g=A(t,o);g.onDispose(()=>{p!==null&&cancelAnimationFrame(p)}),g.onDispose(d.dispose),s.forEach(v=>{v.setDerivative(d),v.onDispose(g.dispose)});const S=v=>{c=v,u=performance.now(),a=g.value,f&&(f=!1,p=Ee(C))},C=()=>{const P=(performance.now()-u)/y.get(n),oe=i(P);l==null&&(l=De(a));let b=l(a,c,oe);P>=1?(f=!0,b=c):p=Ee(C),g.set(b)};return d.on(S),g},pt=(t,e)=>{const{initialValue:s,...r}=e??{};return He(s??t.get(),t.get,[t],r)},Ne=(t,e)=>{const s=Object.values(t).filter(m.is),r=Object.keys(t);return ee(()=>{const n={};for(const i of r)n[i]=y.get(t[i]);return e(n)},s)},mt=t=>Ne(t,e=>e),gt=(t,e)=>{const s=A(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},yt=t=>{let e;return t.map(s=>{const r=e;return e=s,r})},bt=({size:t=void 0,signal:e})=>{const s=[];return e.map(r=>(s.push(r),t!=null&&s.length>t&&s.shift(),s.slice()))},St=t=>(...e)=>se(t,...e)((s,...r)=>s(...r));function Tt(...t){return se(...t)((...e)=>{for(const s of e)if(s!=null)return s})}const ke=new Set(["checked","disabled","hidden"]),Ie=new Set(["selected"]),$e=new Set(["rowSpan","colSpan","tabIndex","valueAsNumber"]),Re=new Set(["valueAsDate"]),Ve=new Set(["value","textContent","innerText","innerHTML","outerHTML","className","classList"]),je=(t,e)=>Ie.has(t)?s=>{s==null||s!==!0?e.removeAttribute(t):e.setAttribute(t,"")}:ke.has(t)?s=>{s==null?e[t]=null:e[t]=!!s}:$e.has(t)?s=>{s==null?e[t]=null:e[t]=Number(s)}:Re.has(t)?s=>{s==null?e[t]=null:e[t]=s}:Ve.has(t)?s=>{s==null?e[t]=null:e[t]=String(s)}:s=>{s==null?e.removeAttribute(t):e.setAttribute(t,s)},Be=(t,e)=>Ie.has(t)?()=>e.hasAttribute(t):ke.has(t)?()=>!!e[t]:$e.has(t)?()=>Number(e[t]):Re.has(t)?()=>e[t]:Ve.has(t)?()=>String(e[t]):()=>e.getAttribute(t),j=t=>{const e=t;e&&e.onblur&&(e.onblur=null),!(!t||t.ownerDocument===void 0)&&t.parentElement&&t.parentElement.removeChild(t)},Fe=t=>ue(t)?t:t.parentElement,ue=t=>t.nodeType===1;class he extends Error{constructor(e){super(`Provider not found: ${e.description}`)}}class L{constructor(e,s,r,n){this.document=e,this.element=s,this.reference=r,this.providers=n}static of(e,s,r){return new L(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 L(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 L(this.document,this.element,e,this.providers);setProvider=(e,s,r)=>new L(this.document,this.element,this.reference,{...this.providers,[e]:[s,r]});getProvider=e=>{if(this.providers[e]===void 0)throw new he(e);const[s,r]=this.providers[e];return{value:s,onUse:r}};clear=e=>{e&&(this.reference!==void 0?j(this.reference):j(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:Be(e,this.element),set:je(e,this.element)});getWindow=()=>this.document.defaultView}const qe=t=>Symbol(t),re=(t,e)=>{const s=t(e);return(r=!0)=>s(r)},vt=(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 We(`Cannot find element by selector for render: ${e}`);r!==!1&&(s??o.ownerDocument)!=null&&o.nodeType===1&&(o.innerHTML="");const l=Fe(o),a=ue(o)?void 0:o,c=L.of(l,a,i),u=re(t,c);let p;return n&&(p=new MutationObserver(f=>{f[0]?.removedNodes.forEach(d=>{d===o&&(p?.disconnect(),u(o.nodeType!==1))})}),p.observe(o.parentElement,{childList:!0,subtree:!1,attributes:!1})),()=>{p?.disconnect(),u(!0)}},wt=(t,{startUrl:e="https://example.com",selector:s,providers:r={}}={selector:"body"})=>{const n=y.toSignal(e).deriveProp(),i=new fe(s,void 0),o=new M(i,void 0,{currentURL:n},r);return{clear:re(t(),o),root:i,currentURL:n}};class We extends Error{constructor(e){super(e)}}const de="data-tts-node",B="data-tts-class",Q="data-tts-style",Z="data-tts-html",z="data-tts-text",K="data-tts-attrs";class At{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:a,getInnerHTML:c,setInnerHTML:u,getInnerText:p,setInnerText:f}){this.select=e,this.getAttribute=s,this.setAttribute=r,this.getClass=n,this.setClass=i,this.getStyles=o,this.setStyles=l,this.appendHTML=a,this.getInnerHTML=c,this.setInnerHTML=u,this.getInnerText=p,this.setInnerText=f}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,Z,l)}this.setInnerHTML(o,n.getInnerHTML())}if(n.hasInnerText()){if(s){const l=this.getInnerText(o);l!=null&&this.setAttribute(o,z,l)}this.setInnerText(o,n.getInnerText())}if(n.hasClasses()){if(s){const l=this.getClass(o);l!=null&&this.setAttribute(o,B,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,Q,JSON.stringify(l))}this.setStyles(o,n.getStyles())}if(n.hasAttributes()){const l=n.getAttributes();if(s){const a=[];l.forEach(([c])=>{const u=this.getAttribute(o,c);u!=null&&a.push([c,u])}),a.length>0&&this.setAttribute(o,K,JSON.stringify(Object.fromEntries(a)))}l.forEach(([a,c])=>{this.setAttribute(o,a,c)})}}})}}const Et=()=>{document.querySelectorAll(`[${de}]`).forEach(j)},_t=t=>{const e=t.getAttribute(B);t.removeAttribute(B),e!=null&&t.setAttribute("class",e)},Ct=()=>{document.querySelectorAll(`[${B}]`).forEach(e=>_t(e))},Pt=t=>{const e=t.getAttribute(Z);t.removeAttribute(Z),e!=null&&(t.innerHTML=e)},Ot=()=>{document.querySelectorAll(`[${Z}]`).forEach(e=>Pt(e))},xt=t=>{const e=t.getAttribute(z);t.removeAttribute(z),e!=null&&(t.innerText=e)},Dt=()=>{document.querySelectorAll(`[${z}]`).forEach(e=>xt(e))},Ue=t=>JSON.parse(t.replace(/&quot;/g,'"')),Lt=t=>{const e=t.getAttribute(Q);if(t.removeAttribute(Q),e!=null){const s=Ue(e);Object.entries(s).forEach(([r,n])=>{t.style.setProperty(r,n)})}},Mt=()=>{document.querySelectorAll(`[${Q}]`).forEach(e=>Lt(e))},Ht=t=>{const e=t.getAttribute(K);if(t.removeAttribute(K),e!=null){const s=Ue(e);Object.entries(s).forEach(([r,n])=>{n==null?t.removeAttribute(r):t.setAttribute(r,n)})}},Nt=()=>{document.querySelectorAll(`[${K}]`).forEach(e=>Ht(e))},kt=()=>{Et(),Ct(),Dt(),Ot(),Mt(),Nt()},I=Symbol("class"),$=Symbol("style"),J=Symbol("handler"),Ge=()=>Math.random().toString(36).substring(2,15),It=t=>t.replace(/<[^>]*>?/g,"");class Je{constructor(e){this.parent=e}id=Ge();properties={};children=[];isElement=()=>!0;isText=()=>!1;getText=()=>this.properties.innerText!=null?this.properties.innerText:this.properties.innerHTML!=null?It(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[I]!=null;hasStyles=()=>this.properties[$]!=null;hasAttributes=()=>Object.keys(this.properties).length>0;hasHandlers=()=>this.properties[J]!=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[J]??{})[e]??[]).forEach(n=>n(s))};click=()=>{this.trigger("click",{})};on=(e,s,r,n)=>{const i=this.properties[J]??={},o=n?.once?a=>{l(),s(a,r)}:a=>s(a,r);i[e]=[...i[e]??[],o];const l=()=>{const a=i[e]??[],c=a.indexOf(o);c!==-1&&(a.splice(c,1),a.length===0?(delete i[e],Object.keys(i).length===0&&delete this.properties[J]):i[e]=a,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[I]??=[];e.forEach(r=>{s.includes(r)||s.push(r)})};removeClasses=e=>{if(e.length===0)return;const s=this.properties[I]??=[];e.forEach(r=>{const n=s.indexOf(r);n!==-1&&s.splice(n,1)}),s.length===0&&delete this.properties[I]};getClasses=()=>this.properties[I]??[];getAttributes=()=>Object.entries(this.properties).filter(([e])=>!["innerText","innerHTML"].includes(e));getVisibleAttributes=()=>Reflect.ownKeys(this.properties).flatMap(e=>e===I?[["class",this.getClasses()]]:e===$?[["style",this.getStyles()]]:typeof e=="string"?[[e,String(this.properties[e])]]:[]);setStyle=(e,s)=>{const r=this.properties[$]??={};r[e]=s,s===""&&(delete r[e],Object.keys(r).length===0&&delete this.properties[$])};getStyle=e=>this.properties[$]?.[e]??"";getStyles=()=>this.properties[$]??{};makeAccessors=e=>{const s=this.properties;return{get:()=>s[e],set:r=>s[e]=r}}}const $t=t=>t.replace(/"/g,"&quot;"),Rt=t=>t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");class Xe extends Je{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,a])=>l==="class"?` class="${a.join(" ")}"`:l==="style"?typeof a=="string"?` style="${a}"`:` style="${Object.entries(a).map(([c,u])=>`${c}: ${u};`).join(" ")}"`:Vt.has(l)?` ${l}`:l==="innerHTML"?(n=a,""):l==="innerText"?(n=Rt(a),""):` ${l}="${$t(a)}"`).join(""),o=e?` ${de}`:"";return jt.has(this.tagName)&&s===""?`<${this.tagName}${r}${i}${o} />`:`<${this.tagName}${r}${i}${o}>${n??s}</${this.tagName}>`}}class fe extends Je{constructor(e,s){super(s),this.selector=e}isPortal=()=>!0;toHTML=()=>"";contentToHTML=(e=!1)=>this.children.map(s=>s.toHTML(e)).join("")}class Ye{constructor(e){this.text=e}id=Ge();isElement=()=>!1;isText=()=>!0;getText=()=>this.text;toHTML=()=>this.text}class M{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 Xe(e,s,this.element);return this.appendOrInsert(r),new M(r,void 0,this.container,this.providers)};makeChildText=e=>{const s=new Ye(e);return this.appendOrInsert(s),new M(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 fe(e,this.element);return this.appendOrInsert(s),new M(s,void 0,this.container,this.providers)};setProvider=(e,s,r)=>new M(this.element,this.reference,this.container,{...this.providers,[e]:[s,r]});getProvider=e=>{if(this.providers[e]===void 0)throw new he(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 Vt=new Set(["checked","disabled","multiple","readonly","required","selected"]),jt=new Set(["img","br","hr","input","link","meta"]),pe=t=>e=>e.makeChildText(t).clear,me=t=>e=>{const s=e.makeChildText(t.value),r=t.on(s.setText);return n=>{r(),s.clear(n)}},Bt=t=>m.is(t)?me(t):pe(t),T=(...t)=>e=>{const s=t.map(r=>h(r)(e));return r=>{s.forEach(n=>n(r))}},E=()=>()=>{},Ft=t=>e=>(e.addClasses(t),s=>{s&&e.removeClasses(t)}),qt=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}},Wt=(t,e)=>s=>{const{get:r,set:n}=s.makeAccessors(t),i=r();return n(e),o=>{o&&n(i)}},Ut=(t,e)=>s=>{const{get:r,set:n}=s.makeAccessors(t),i=r(),o=e.on(n);return l=>{o(),l&&n(i)}},V=(t,e)=>m.is(e)?Ut(t,e):Wt(t,e),ne=(t="")=>(e,s)=>{const r=t?`${t}${e}`:e;return V(r,s)},H=new Proxy({},{get:(t,e)=>e==="class"?s=>m.is(s)?qt(s):Ft((s??"").split(" ").filter(r=>r.length>0)):e==="set"?ne():s=>V(e,s)}),Gt=new Proxy({},{get:(t,e)=>e==="set"?ne("data-"):s=>V(`data-${e}`,s)}),Jt=new Proxy({},{get:(t,e)=>e==="set"?ne("aria-"):s=>V(`aria-${e}`,s)}),Xt=new Proxy({},{get:(t,e)=>e==="set"?ne():s=>V(e,s)}),Yt=new Proxy({},{get:(t,e)=>s=>V(e,s)}),h=t=>{if(t==null)return E;if(Array.isArray(t))return T(...t.map(h));if(typeof t=="string")return pe(t);if(m.is(t))return me(t);if(typeof t=="function")return t;throw new Error(`Unknown type: '${typeof t}' for child: ${t}`)},ge=(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)}},ye=(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)}},Qt=new Proxy({},{get:(t,e)=>(...s)=>ge(e,s.flatMap(h))}),Zt=new Proxy({},{get:(t,e)=>(...s)=>ge("input",H.type(e),...s)}),zt="http://www.w3.org/2000/svg",Kt=new Proxy({},{get:(t,e)=>(...s)=>ye(e,zt,s.flatMap(h))}),es="http://www.w3.org/1998/Math/MathML",ts=new Proxy({},{get:(t,e)=>(...s)=>ye(e,es,s.flatMap(h))}),be=(t,e)=>{if(typeof e=="function")return be(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(),a=i.makeRef();let c=h(s)(a);return l.then(u=>{o&&(c(!0),c=h(r(u))(a))},u=>{o&&(c(!0),c=h(n(u))(a))}),u=>{o=!1,c(u),a.clear(u)}}},ss=(t,e)=>be(()=>t,e),Qe=(t,e,s)=>r=>r.on(t,e,s),Ze=t=>Qe("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)}),W=new Proxy({},{get:(t,e)=>s=>Qe(e,s)}),ze=(t,e)=>s=>{e?.preventDefault===!0&&s.preventDefault(),e?.stopPropagation===!0&&s.stopPropagation(),e?.stopImmediatePropagation===!0&&s.stopImmediatePropagation(),t(s)},O=(t,e)=>ze(s=>{const r=s.target;t(r,s)},e),Ke=(t,e)=>O((s,r)=>t(s.value,r),e),et=(t,e)=>O((s,r)=>t(s.valueAsNumber,r),e),tt=(t,e)=>O((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),rs=(t,e)=>O((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),st=(t,e)=>O((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),ns=(t,e)=>O((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),is=(t,e)=>O((s,r)=>{t(s.checked,r)},e),os=(t,e="input")=>T(H.valueAsDate(t),W[e](tt(t.set))),ls=(t,e="input")=>T(H.valueAsDate(t),W[e](st(t.set))),as=(t,e="input")=>T(H.valueAsNumber(t),W[e](et(t.set))),cs=(t,e="input")=>T(H.value(t),W[e](Ke(t.set))),us=t=>T(H.checked(t),Ze(t.set)),Se=(t,e,s)=>m.is(t)?e(t):s(t),hs=(t,e,s)=>{const r=t.makeRef();let n=()=>{};const i=e.on(o=>{n(!0),n=h(s(o))(r)});return o=>{n(o),i(),r.clear(o)}},U=(t,e)=>{function s(n){return i=>{const o=i.makeRef();let l,a;const c=n.map(f=>Object.keys(f)[0]);let u;const p=c.on(f=>{if(f!==u){u=f,a?.dispose(),l?.(!0),a=n.map(g=>g[f]);const d=e[f](a);l=h(d)(o)}});return f=>{a?.dispose(),p(),o.clear(f),l?.(f)}}}function r(n){const i=Object.keys(n)[0];return h(e[i](q(n[i])))}return Se(t,s,r)},Te=(t,e,s)=>U(y.map(t,r=>({[r[e]]:r})),s),ds=(t,e)=>Te(t,"kind",e),fs=(t,e)=>{const s=y.map(t,([r,n])=>({[r]:n}));return U(s,e)},ps=(t,e)=>Te(t,"type",e),rt=(t,e)=>U(y.map(t,s=>({[s]:!0})),e),ms=(t,e={})=>s=>{const r=e?.firstSeparator??t,n=e?.lastSeparator??t;return rt(s.map(i=>i.isFirst?"first":i.isLast?"last":"other"),{first:r,last:n,other:t})},gs=t=>e=>(e.appendOrInsert(t),s=>{s&&j(t)}),ys=(t,e,s)=>{function r(i){return o=>{const l=o.makeRef();let a=()=>{},c=!1,u=null;const p=i.on(f=>{f==null?(a(!0),a=h(s?.())(l),c=!1,u?.dispose(),u=null):c?u.set(f):(u=A(f),a(!0),a=h(e(u))(l),c=!0)});return f=>{u?.dispose(),p(),a?.(f),l.clear(f)}}}function n(i){if(i==null){const o=s?.();return o!=null?h(o):E}return h(e(q(i)))}return Se(t,r,n)},bs=(...t)=>(e,s)=>r=>{const n=r.makeRef();if(t.some(d=>!m.is(d)&&d==null))return(s!=null?h(s?.()):E)(n);const o=t.map(()=>null),l=t.map(d=>m.is(d)?d.value!=null:d!=null);let a=null;const c=A(l.every(d=>d)),u=(d,g)=>{if(d.value!=null){if(o[g]==null){const S=A(d.value);o[g]=S}else o[g].value=d.value;l[g]=!0}else l[g]=!1};let p=t.length-1;const f=t.map((d,g)=>{if(!m.is(d)){const S=A(d);return o[g]=S,()=>{}}return d.on(()=>{u(d,g),p===0?c.value=l.every(S=>S):p--})});return c.on(d=>{a?.(!0),a=null,d?a=h(e(...o))(n):a=h(s?.()??E)(n)}),d=>{o.forEach(g=>g?.dispose()),c.dispose(),f.forEach(g=>g()),a?.(d),n.clear(d)}},R=(...t)=>e=>s=>t.forEach(r=>{typeof r=="function"?r(s,e):r.dispose(s,e)}),ve=(t,e,s)=>Se(t,r=>n=>hs(n,r,i=>i?e():s?.()),r=>{if(r){const n=e();return n!=null?h(n):E}return h(s?.())}),Ss=(t,e,s)=>ve(y.map(t,r=>!r),e,s),we=(t,e,s)=>{if(s!=null)return we(t,r=>{const n=new Y(r.index,r.total.map(i=>i-1));return T(R(n.dispose),h(e(r)),ve(r.isLast,()=>E,()=>s(n)))});if(m.is(t))return r=>{const n=t.derive(),i=r.makeRef(),o=[];return n.on(l=>{const a=o.splice(l);for(const c of a)c(!0);for(let c=o.length;c<l;c++){const u=new Y(c,n);o.push(T(R(u.dispose),h(e(u)))(i))}}),l=>{n.dispose();for(const a of o)a(l);o.length=0,i.clear(l)}};{const r=q(t);return T(...Array.from({length:t},(n,i)=>i).map(n=>{const i=new Y(n,r);return T(R(i.dispose),h(e(i)))}))}},Ts=(t,e,s)=>{const r=y.map(t,i=>i.length),n=y.toSignal(t);return we(r,i=>{const o=n.map(l=>l[i.index]);return T(R(o.dispose),h(e(o,i)))},s)},vs=(t,e)=>{if(m.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))},ws=(t,e,s=()=>E)=>U(y.map(t,r=>r.length>0?{notEmpty:r}:{whenEmpty:null}),{notEmpty:r=>e(r),whenEmpty:()=>s()}),As=(t,e)=>s=>{const r=s.makePortal(t),n=re(h(e),r);return()=>n(!0)},X=new Map,nt=t=>({mark:qe(`Probe(${t.description})`),create:({callback:e=()=>{},timeout:s=10}={})=>{const r=l=>{clearTimeout(n),X.delete(t),e(l)};if(X.has(t))throw new Error(`Probe already exists: ${t.description}`);const n=setTimeout(()=>r("timeout"),s),i={counter:0,timeoutId:n};return X.set(t,i),{value:()=>{clearTimeout(n);const l=X.get(t);l!=null&&--l.counter===0&&r("resolved")},dispose:()=>r("disposed"),onUse:()=>i.counter++}}}),Es=nt(Symbol("GlobalProbe")),_s=(t,e)=>s=>{const r=s.getStyle(t);return s.setStyle(t,e),n=>{n&&s.setStyle(t,r)}},Cs=(t,e)=>s=>{const r=s.getStyle(t),n=e.on(i=>s.setStyle(t,i));return i=>{n(),i&&s.setStyle(t,r)}},_e=(t,e)=>m.is(e)?Cs(t,e):_s(t,e),Ps=new Proxy({},{get:(t,e)=>e==="variable"?(s,r)=>_e(s,r):s=>_e(e,s)}),it=t=>e=>{if(e.isBrowser()){const s=t(e);if(s!=null)return h(s)(e)}return()=>{}},Os=t=>e=>{const s=t(e);return s==null?()=>{}:h(s)(e)},xs=t=>it(e=>t(e.element)),Ds=t=>e=>{if(e.isHeadlessDOM()){const s=t(e);if(s)return h(s)(e)}return()=>{}},ie=t=>e=>{let s=e;function r(){return s}function n(l){s=l}const i=[],o=t({use:({mark:l})=>{const{value:a,onUse:c}=r().getProvider(l);return c?.(),a},set:({mark:l,create:a},c)=>{const{value:u,dispose:p,onUse:f}=a(c,r());i.push(p),n(r().setProvider(l,u,f))}});return o==null?()=>{}:T(h(o),R(()=>i.forEach(l=>l())))(r())},Ls=(t,e,s)=>ie(({set:r})=>(r(t,e),s())),Ms=(t,e)=>ie(({use:s})=>e(s(t))),Hs=(...t)=>e=>ie(({use:s})=>{const r=t.map(s);return e(...r)});exports.Async=ss;exports.BindChecked=us;exports.BindDate=os;exports.BindDateTime=ls;exports.BindNumber=as;exports.BindText=cs;exports.BrowserContext=L;exports.CLASS_PLACEHOLDER_ATTR=B;exports.Computed=D;exports.Conjunction=ms;exports.DOMNode=gs;exports.El=ge;exports.ElNS=ye;exports.ElementPosition=Y;exports.Empty=E;exports.Ensure=ys;exports.EnsureAll=bs;exports.ForEach=Ts;exports.Fragment=T;exports.GlobalProbe=Es;exports.HeadlessAdapter=At;exports.HeadlessContext=M;exports.HeadlessElement=Xe;exports.HeadlessPortal=fe;exports.HeadlessText=Ye;exports.MapSignal=vs;exports.MemoryStore=ae;exports.NotEmpty=ws;exports.OnChecked=Ze;exports.OnDispose=R;exports.OneOf=U;exports.OneOfField=Te;exports.OneOfKind=ds;exports.OneOfTuple=fs;exports.OneOfType=ps;exports.OneOfValue=rt;exports.Portal=As;exports.Prop=F;exports.Provide=Ls;exports.ProviderNotFoundError=he;exports.RenderingError=We;exports.Repeat=we;exports.Signal=m;exports.Task=be;exports.TextNode=Bt;exports.Unless=Ss;exports.Use=Ms;exports.UseMany=Hs;exports.Value=y;exports.When=ve;exports.WithBrowserCtx=it;exports.WithCtx=Os;exports.WithElement=xs;exports.WithHeadlessCtx=Ds;exports.WithProvider=ie;exports._NODE_PLACEHOLDER_ATTR=de;exports._getSelfOrParentElement=Fe;exports._isElement=ue;exports._makeGetter=Be;exports._makeSetter=je;exports._removeDOMNode=j;exports._signalText=me;exports._staticText=pe;exports.animateSignal=pt;exports.animateSignals=He;exports.aria=Jt;exports.attr=H;exports.bind=St;exports.coalesce=Tt;exports.computed=ee;exports.computedOf=se;exports.computedRecord=Ne;exports.dataAttr=Gt;exports.delaySignal=gt;exports.effect=Le;exports.effectOf=ht;exports.emit=ze;exports.emitChecked=is;exports.emitTarget=O;exports.emitValue=Ke;exports.emitValueAsDate=tt;exports.emitValueAsDateTime=st;exports.emitValueAsNullableDate=rs;exports.emitValueAsNullableDateTime=ns;exports.emitValueAsNumber=et;exports.endInterpolate=xe;exports.getWindow=te;exports.guessInterpolate=De;exports.html=Qt;exports.input=Zt;exports.interpolateDate=Oe;exports.interpolateNumber=Ce;exports.interpolateString=Pe;exports.joinSignals=ut;exports.localStorageProp=dt;exports.makeProbe=nt;exports.makeProviderMark=qe;exports.math=ts;exports.mathAttr=Yt;exports.merge=mt;exports.on=W;exports.previousSignal=yt;exports.prop=A;exports.render=vt;exports.renderWithContext=re;exports.renderableOfTNode=h;exports.restoreTempoPlaceholders=kt;exports.runHeadless=wt;exports.sessionStorageProp=ft;exports.signal=q;exports.slidingWindowSignal=bt;exports.storedProp=ce;exports.style=Ps;exports.svg=Kt;exports.svgAttr=Xt;
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';