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