@tempots/dom 26.7.5 → 26.8.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 +133 -2
- package/dom/browser-context.d.ts +4 -3
- package/dom/dom-context.d.ts +1 -1
- package/dom/headless-context.d.ts +3 -3
- package/index.cjs +1 -1
- package/index.js +359 -354
- package/package.json +1 -1
- package/renderable/portal.d.ts +1 -1
- package/renderable/render.d.ts +25 -8
package/README.md
CHANGED
|
@@ -1,3 +1,134 @@
|
|
|
1
|
-
# Tempo DOM
|
|
1
|
+
# Tempo DOM (@tempots/dom)
|
|
2
2
|
|
|
3
|
-
Tempo DOM is a lightweight UI
|
|
3
|
+
Tempo DOM is a lightweight UI framework for building web applications with TypeScript. It provides a simple, functional approach to creating reactive user interfaces with direct DOM manipulation. This package has no dependencies and serves as the core of the Tempo ecosystem.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@tempots/dom)
|
|
6
|
+
[](https://github.com/fponticelli/tempots/blob/main/LICENSE)
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
# npm
|
|
12
|
+
npm install @tempots/dom
|
|
13
|
+
|
|
14
|
+
# yarn
|
|
15
|
+
yarn add @tempots/dom
|
|
16
|
+
|
|
17
|
+
# pnpm
|
|
18
|
+
pnpm add @tempots/dom
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Key Concepts
|
|
22
|
+
|
|
23
|
+
### Renderables
|
|
24
|
+
|
|
25
|
+
Renderables are the building blocks of Tempo applications. A Renderable is a function that:
|
|
26
|
+
1. Takes a context (typically a DOM context)
|
|
27
|
+
2. Performs some operations on that context (like creating DOM elements)
|
|
28
|
+
3. Returns a cleanup function
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import { html, render } from '@tempots/dom'
|
|
32
|
+
|
|
33
|
+
// Create a simple renderable
|
|
34
|
+
const HelloWorld = html.h1('Hello World')
|
|
35
|
+
|
|
36
|
+
// Render it to the DOM
|
|
37
|
+
render(HelloWorld, document.body)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Signals
|
|
41
|
+
|
|
42
|
+
Signals are reactive values that automatically update the UI when they change:
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
import { html, render, prop, on } from '@tempots/dom'
|
|
46
|
+
|
|
47
|
+
function Counter() {
|
|
48
|
+
// Create a reactive state
|
|
49
|
+
const count = prop(0)
|
|
50
|
+
|
|
51
|
+
return html.div(
|
|
52
|
+
html.div('Count: ', count.map(String)),
|
|
53
|
+
html.button(on.click(() => count.value--), 'Decrement'),
|
|
54
|
+
html.button(on.click(() => count.value++), 'Increment')
|
|
55
|
+
)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
render(Counter(), document.body)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### HTML Elements
|
|
62
|
+
|
|
63
|
+
Tempo provides a convenient way to create HTML elements using the `html` object:
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
import { html } from '@tempots/dom'
|
|
67
|
+
|
|
68
|
+
const myDiv = html.div(
|
|
69
|
+
html.h1('Title'),
|
|
70
|
+
html.p('Paragraph text'),
|
|
71
|
+
html.button('Click me')
|
|
72
|
+
)
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Attributes and Events
|
|
76
|
+
|
|
77
|
+
Add attributes and event handlers to elements:
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
import { html, attr, on } from '@tempots/dom'
|
|
81
|
+
|
|
82
|
+
const button = html.button(
|
|
83
|
+
attr.class('primary-button'),
|
|
84
|
+
attr.disabled(false),
|
|
85
|
+
on.click(() => console.log('Button clicked')),
|
|
86
|
+
'Click Me'
|
|
87
|
+
)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Conditional Rendering
|
|
91
|
+
|
|
92
|
+
Render content conditionally:
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
import { html, When, prop } from '@tempots/dom'
|
|
96
|
+
|
|
97
|
+
const isLoggedIn = prop(false)
|
|
98
|
+
|
|
99
|
+
const greeting = html.div(
|
|
100
|
+
When(
|
|
101
|
+
isLoggedIn,
|
|
102
|
+
() => html.span('Welcome back!'),
|
|
103
|
+
() => html.span('Please log in')
|
|
104
|
+
)
|
|
105
|
+
)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Lists and Iterations
|
|
109
|
+
|
|
110
|
+
Render lists of items:
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
import { html, ForEach, prop } from '@tempots/dom'
|
|
114
|
+
|
|
115
|
+
const items = prop(['Apple', 'Banana', 'Cherry'])
|
|
116
|
+
|
|
117
|
+
const list = html.ul(
|
|
118
|
+
ForEach(items, (item) =>
|
|
119
|
+
html.li(item)
|
|
120
|
+
)
|
|
121
|
+
)
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Documentation
|
|
125
|
+
|
|
126
|
+
For comprehensive documentation, visit the [Tempo Documentation Site](https://tempo-ts.com/).
|
|
127
|
+
|
|
128
|
+
## Examples
|
|
129
|
+
|
|
130
|
+
Check out the [examples directory](https://github.com/fponticelli/tempots/tree/main/demo) for complete examples.
|
|
131
|
+
|
|
132
|
+
## License
|
|
133
|
+
|
|
134
|
+
This package is licensed under the Apache License 2.0.
|
package/dom/browser-context.d.ts
CHANGED
|
@@ -31,10 +31,11 @@ export declare class BrowserContext implements DOMContext {
|
|
|
31
31
|
* Creates a new `DOMContext` instance for the given `Element` and optional reference `Node`.
|
|
32
32
|
*
|
|
33
33
|
* @param element - The `HTMLElement` to create the `DOMContext` for.
|
|
34
|
-
* @param ref -
|
|
34
|
+
* @param ref - A reference `Node` to associate with the `DOMContext` or undefined .
|
|
35
|
+
* @param providers - The providers to associate with the `DOMContext`.
|
|
35
36
|
* @returns A new `DOMContext` instance.
|
|
36
37
|
*/
|
|
37
|
-
static of(element: HTMLElement, ref
|
|
38
|
+
static of(element: HTMLElement, ref: Node | undefined, providers: Providers): DOMContext;
|
|
38
39
|
/**
|
|
39
40
|
* Constructs a new `DOMContext` instance.
|
|
40
41
|
*
|
|
@@ -122,7 +123,7 @@ export declare class BrowserContext implements DOMContext {
|
|
|
122
123
|
* @param selector - The CSS selector for the target DOM element.
|
|
123
124
|
* @returns A new `DOMContext` instance with a reference to the selected DOM element.
|
|
124
125
|
*/
|
|
125
|
-
readonly makePortal: (selector: string) => DOMContext;
|
|
126
|
+
readonly makePortal: (selector: string | HTMLElement) => DOMContext;
|
|
126
127
|
/**
|
|
127
128
|
* Creates a new `DOMContext` instance with the specified reference.
|
|
128
129
|
*
|
package/dom/dom-context.d.ts
CHANGED
|
@@ -66,7 +66,7 @@ export interface DOMContext {
|
|
|
66
66
|
* @param selector - The CSS selector for the target DOM element.
|
|
67
67
|
* @returns A new `DOMContext` instance with a reference to the selected DOM element.
|
|
68
68
|
*/
|
|
69
|
-
makePortal(selector: string): DOMContext;
|
|
69
|
+
makePortal(selector: string | HTMLElement): DOMContext;
|
|
70
70
|
/**
|
|
71
71
|
* Retrieves a provider for the given provider mark.
|
|
72
72
|
*
|
|
@@ -52,8 +52,8 @@ export declare class HeadlessElement extends HeadlessBase {
|
|
|
52
52
|
readonly toHTML: (generatePlaceholders?: boolean) => string;
|
|
53
53
|
}
|
|
54
54
|
export declare class HeadlessPortal extends HeadlessBase {
|
|
55
|
-
readonly selector: string;
|
|
56
|
-
constructor(selector: string, parent: HeadlessBase | undefined);
|
|
55
|
+
readonly selector: string | HTMLElement;
|
|
56
|
+
constructor(selector: string | HTMLElement, parent: HeadlessBase | undefined);
|
|
57
57
|
readonly isPortal: () => this is HeadlessPortal;
|
|
58
58
|
readonly toHTML: () => string;
|
|
59
59
|
readonly contentToHTML: (generatePlaceholders?: boolean) => string;
|
|
@@ -83,7 +83,7 @@ export declare class HeadlessContext implements DOMContext {
|
|
|
83
83
|
readonly setText: (text: string) => void;
|
|
84
84
|
readonly getText: () => string;
|
|
85
85
|
readonly makeRef: () => DOMContext;
|
|
86
|
-
readonly makePortal: (selector: string) => DOMContext;
|
|
86
|
+
readonly makePortal: (selector: string | HTMLElement) => DOMContext;
|
|
87
87
|
/**
|
|
88
88
|
* Sets a provider for the given provider mark.
|
|
89
89
|
*
|
package/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var rt=Object.defineProperty;var ye=s=>{throw TypeError(s)};var nt=(s,e,t)=>e in s?rt(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var o=(s,e,t)=>nt(s,typeof e!="symbol"?e+"":e,t),Te=(s,e,t)=>e.has(s)||ye("Cannot "+t);var K=(s,e,t)=>(Te(s,e,"read from private field"),t?t.call(s):e.get(s)),Se=(s,e,t)=>e.has(s)?ye("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t),be=(s,e,t,r)=>(Te(s,e,"write to private field"),r?r.call(s,t):e.set(s,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _e=(s,e,t)=>s+(e-s)*t,Ae=97,we=(s,e,t)=>{const r=Math.max(s.length,e.length);let n="";for(let i=0;i<r;i++){let l=s.charCodeAt(i);isNaN(l)&&(l=Ae);let a=e.charCodeAt(i);isNaN(a)&&(a=Ae),n+=String.fromCharCode(l+(a-l)*t)}return n},Ce=(s,e,t)=>new Date(s.getTime()+(e.getTime()-s.getTime())*t),Pe=(s,e)=>e,xe=s=>typeof s=="number"?_e:typeof s=="string"?we:s instanceof Date?Ce:Pe;var L;class F{constructor(e,t){o(this,"counter");o(this,"isFirst");o(this,"isEven");o(this,"isOdd");Se(this,L);o(this,"dispose",()=>{this.total.dispose()});this.index=e,this.total=t,this.counter=e+1,this.isFirst=e===0,this.isEven=e%2===1,this.isOdd=e%2===0}get isLast(){return K(this,L)==null&&be(this,L,this.total.map(e=>this.counter===e)),K(this,L)}}L=new WeakMap;const M=class M{constructor(e,t){o(this,"$__signal__",!0);o(this,"_value");o(this,"_derivatives",[]);o(this,"_onValueListeners",[]);o(this,"_onDisposeListeners",[]);o(this,"get",()=>this._value);o(this,"hasListeners",()=>this._onValueListeners.length>0);o(this,"on",(e,t={})=>{t.skipInitial||e(this.get(),void 0);const r=t.once?(i,l)=>{n(),e(i,l)}:e;this._onValueListeners.push(r);const n=()=>{this._onValueListeners.splice(this._onValueListeners.indexOf(r),1),t.abortSignal!=null&&t.abortSignal.removeEventListener("abort",n)};return t.abortSignal!=null&&t.abortSignal.addEventListener("abort",n),n});o(this,"_setAndNotify",(e,t)=>{if(this._disposed)return;const r=this._value,n=this.equals(r,e);n||(this._value=e),(t||!n)&&this._onValueListeners.forEach(i=>i(e,r))});o(this,"_disposed",!1);o(this,"isDisposed",()=>this._disposed);o(this,"onDispose",e=>{this._onDisposeListeners.push(e)});o(this,"dispose",()=>{this._disposed||(this._disposed=!0,this._onDisposeListeners.forEach(e=>e()),this._onDisposeListeners.length=0,this._derivatives.length=0)});o(this,"map",(e,t=(r,n)=>r===n)=>{const r=new P(()=>{try{return e(this.get())}catch(n){throw console.error("Error in Signal.map:",n),n}},t);return this.setDerivative(r),r});o(this,"flatMap",(e,t=(r,n)=>r===n)=>{const r=new P(()=>{try{return e(this.get()).get()}catch(n){throw console.error("Error in Signal.flatMap:",n),n}},t);return this.setDerivative(r),r});o(this,"tap",e=>this.map(t=>(e(t),t)));o(this,"at",e=>this.map(t=>t[e]));o(this,"_$");o(this,"filter",(e,t)=>{let r=t??this.get();const n=new P(()=>{try{const i=this.get();return r=e(i)?i:r}catch(i){throw console.error("Error in Signal.filter:",i),i}},this.equals);return this.setDerivative(n),n});o(this,"filterMap",(e,t,r=(n,i)=>n===i)=>{let n=t;const i=new P(()=>{try{const l=this.get(),a=e(l);return n=a??n}catch(l){throw console.error("Error in Signal.filterMap:",l),l}},r);return this.setDerivative(i),i});o(this,"mapAsync",(e,t,r,n=(i,l)=>i===l)=>{const i=_(t,n);let l=0,a=new AbortController;return i.onDispose(this.on(async c=>{const u=++l;a.abort(),a=new AbortController;try{const h=await e(c,{abortSignal:a.signal});u===l&&i.set(h)}catch(h){if(u===l)if(r!=null)i.set(r(h));else throw h}})),i});o(this,"mapMaybe",(e,t)=>this.map(r=>e(r)??t));o(this,"feedProp",(e,t=!1)=>{const r=this.on(e.set);return e.onDispose(r),t?this.onDispose(e.dispose):this.onDispose(r),e});o(this,"deriveProp",({autoDisposeProp:e=!0,equals:t}={})=>this.feedProp(_(this.get(),t),e));o(this,"derive",()=>this.map(e=>e));o(this,"count",()=>{let e=0;return this.map(()=>++e)});o(this,"setDerivative",e=>{this._derivatives.push(e),e.onDispose(()=>{this._derivatives.splice(this._derivatives.indexOf(e),1)}),e.onDispose(this.on(e.setDirty)),this.onDispose(e.dispose)});this.equals=t,this._value=e}get value(){return this._value}get $(){return this._$!==void 0?this._$:this._$=new Proxy(this,{get:(e,t)=>this.at(t)})}};o(M,"ofPromise",(e,t,r,n=(i,l)=>i===l)=>{const i=new M(t,n);return e.then(l=>i._setAndNotify(l,!1)).catch(l=>{r!=null?i._setAndNotify(r(l),!1):console.error("Unhandled promise rejection in Signal.ofPromise:",l)}),i}),o(M,"is",e=>e!=null&&e.$__signal__===!0);let d=M;const it=typeof queueMicrotask=="function"?queueMicrotask:s=>Promise.resolve().then(s);class P extends d{constructor(t,r){super(void 0,r);o(this,"$__computed__",!0);o(this,"_isDirty",!1);o(this,"setDirty",()=>{this._isDirty||this._disposed||(this._isDirty=!0,this._derivatives.forEach(t=>t.setDirty()),this._scheduleNotify())});o(this,"_scheduleCount",0);o(this,"_scheduleNotify",()=>{const t=++this._scheduleCount;it(()=>{this._scheduleCount!==t||this._disposed||this._isDirty&&(this._isDirty=!1,this._setAndNotify(this._fn(),!1))})});o(this,"get",()=>(this._isDirty&&(this._isDirty=!1,this._setAndNotify(this._fn(),!0)),this._value));this._fn=t,this.setDirty()}static is(t){return t!=null&&t.$__computed__===!0}get value(){return this.get()}}const X=class X extends d{constructor(){super(...arguments);o(this,"$__prop__",!0);o(this,"set",t=>{this._setAndNotify(t,!1)});o(this,"update",t=>{this._setAndNotify(t(this.get()),!1)});o(this,"reducer",(t,...r)=>{const n=this;return function i(l){const a=n.value;n.update(c=>t(c,l)),!n.equals(a,n.value)&&r.forEach(c=>c({previousState:a,state:n.value,action:l,dispatch:i}))}});o(this,"iso",(t,r,n=(i,l)=>i===l)=>{const i=new X(t(this.get()),n);return i.onDispose(this.on(l=>i.set(t(l)))),i.on(l=>this._setAndNotify(r(l),!1)),i});o(this,"atProp",t=>this.iso(r=>r[t],r=>({...this.value,[t]:r})))}get value(){return this.get()}set value(t){this._setAndNotify(t,!1)}};o(X,"is",t=>t!=null&&t.$__prop__===!0);let H=X;const Y=(s,e,t=(r,n)=>r===n)=>{const r=new P(s,t);return e.forEach(n=>n.setDerivative(r)),r},Oe=(s,e,t={})=>{let r=t.once?()=>{i(),s()}:s;if(t.skipInitial){let l=!1;const a=r;r=()=>{l?a():l=!0}}const n=Y(r,e),i=()=>{n.dispose(),t.abortSignal!=null&&t.abortSignal.removeEventListener("abort",i)};return t.abortSignal!=null&&t.abortSignal.addEventListener("abort",i),i},_=(s,e=(t,r)=>t===r)=>new H(s,e),I=(s,e=(t,r)=>t===r)=>new d(s,e),ee=()=>typeof window<"u"?window:void 0,T={map:(s,e)=>d.is(s)?s.map(e):e(s),toSignal:(s,e)=>d.is(s)?s:I(s,e),maybeToSignal:(s,e)=>{if(s!=null)return T.toSignal(s,e)},get:s=>d.is(s)?s.get():s,on:(s,e)=>d.is(s)?s.on(e):(e(s),()=>{}),dispose:s=>{d.is(s)&&s.dispose()},deriveProp:(s,{autoDisposeProp:e=!0,equals:t}={})=>d.is(s)?s.deriveProp({autoDisposeProp:e,equals:t}):_(s,t)},ve=(...s)=>(e,t)=>{const r=s.filter(n=>d.is(n));return Y(()=>e(...s.map(n=>T.get(n))),r,t)},ot=s=>{const e=Object.keys(s);return ve(...Object.values(s))((...t)=>Object.fromEntries(e.map((r,n)=>[r,t[n]])))},lt=(...s)=>(e,t={})=>{const r=s.filter(n=>d.is(n));return Oe(()=>e(...s.map(T.get)),r,t)};class te{constructor(){o(this,"_store",new Map);o(this,"getItem",e=>this._store.get(e)??null);o(this,"setItem",(e,t)=>{this._store.set(e,t)})}}const se=({key:s,defaultValue:e,store:t,serialize:r=JSON.stringify,deserialize:n=JSON.parse,equals:i=(a,c)=>a===c,onLoad:l=a=>a})=>{const a=t.getItem(s),c=new H(a!=null?l(n(a)):typeof e=="function"?e():e,i);return c.on(u=>{t.setItem(s,r(u))}),c},at=s=>{var e;return se({...s,store:((e=ee())==null?void 0:e.localStorage)??new te})},ct=s=>{var e;return se({...s,store:((e=ee())==null?void 0:e.sessionStorage)??new te})};function Ee(s){return typeof requestAnimationFrame=="function"?requestAnimationFrame(s):setTimeout(s,0)}const De=(s,e,t,r)=>{const n=(r==null?void 0:r.duration)??300,i=(r==null?void 0:r.easing)??(E=>E),l=(r==null?void 0:r.equals)??((E,q)=>E===q);let a=r==null?void 0:r.interpolate,c=s,u=e(),h=performance.now(),g=null,y=!0;const p=new P(e,l),m=_(s,l);m.onDispose(()=>{g!==null&&cancelAnimationFrame(g)}),m.onDispose(p.dispose),t.forEach(E=>{E.setDerivative(p),E.onDispose(m.dispose)});const C=E=>{u=E,h=performance.now(),c=m.value,y&&(y=!1,g=Ee(me))},me=()=>{const q=(performance.now()-h)/T.get(n),st=i(q);a==null&&(a=xe(c));let ge=a(c,u,st);q>=1?(y=!0,ge=u):g=Ee(me),m.set(ge)};return p.on(C),m},ut=(s,e)=>{const{initialValue:t,...r}=e??{};return De(t??s.get(),s.get,[s],r)},ht=(s,e)=>{const{signals:t,literals:r}=Object.entries(s).reduce(({signals:i,literals:l},[a,c])=>(d.is(c)?i.push([a,c]):l[a]=c,{signals:i,literals:l}),{signals:[],literals:{}}),n=t.map(([,i])=>i);return Y(()=>(t.forEach(([i,l])=>r[i]=l.value),e(r)),n)},Le=new Set(["checked","disabled","hidden"]),Me=new Set(["selected"]),He=new Set(["rowSpan","colSpan","tabIndex","valueAsNumber"]),Ne=new Set(["valueAsDate"]),ke=new Set(["value","textContent","innerText","innerHTML","outerHTML","className","classList"]),Ie=(s,e)=>Me.has(s)?t=>{t==null||t!==!0?e.removeAttribute(s):e.setAttribute(s,"")}:Le.has(s)?t=>{t==null?e[s]=null:e[s]=!!t}:He.has(s)?t=>{t==null?e[s]=null:e[s]=Number(t)}:Ne.has(s)?t=>{t==null?e[s]=null:e[s]=t}:ke.has(s)?t=>{t==null?e[s]=null:e[s]=String(t)}:t=>{t==null?e.removeAttribute(s):e.setAttribute(s,t)},$e=(s,e)=>Me.has(s)?()=>e.hasAttribute(s):Le.has(s)?()=>!!e[s]:He.has(s)?()=>Number(e[s]):Ne.has(s)?()=>e[s]:ke.has(s)?()=>String(e[s]):()=>e.getAttribute(s),N=s=>{const e=s;e&&e.onblur&&(e.onblur=null),!(!s||s.ownerDocument===void 0)&&s.parentElement&&s.parentElement.removeChild(s)},Re=s=>re(s)?s:s.parentElement,re=s=>s.nodeType===1;class ne extends Error{constructor(e){super(`Provider not found: ${e.description}`)}}class x{constructor(e,t,r,n){o(this,"createElement",(e,t)=>t!==void 0?this.document.createElementNS(t,e):this.document.createElement(e));o(this,"makeChildElement",(e,t)=>{const r=this.createElement(e,t);return this.appendOrInsert(r),this.withElement(r)});o(this,"createText",e=>this.document.createTextNode(e));o(this,"makeChildText",e=>{const t=this.createText(e);return this.appendOrInsert(t),this.withReference(t)});o(this,"setText",e=>{this.reference.nodeValue=e});o(this,"getText",()=>{var e;return((e=this.reference)==null?void 0:e.nodeValue)??this.element.textContent??""});o(this,"makeRef",()=>{const e=this.createText("");return this.appendOrInsert(e),this.withReference(e)});o(this,"appendOrInsert",e=>{this.reference===void 0?this.element.appendChild(e):this.element.insertBefore(e,this.reference)});o(this,"withElement",e=>new x(this.document,e,void 0,this.providers));o(this,"makePortal",e=>{const t=this.document.querySelector(e);if(t==null)throw new Error(`Cannot find element by selector for portal: ${e}`);return this.withElement(t)});o(this,"withReference",e=>new x(this.document,this.element,e,this.providers));o(this,"setProvider",(e,t,r)=>new x(this.document,this.element,this.reference,{...this.providers,[e]:[t,r]}));o(this,"getProvider",e=>{if(this.providers[e]===void 0)throw new ne(e);return this.providers[e]});o(this,"clear",e=>{e&&(this.reference!==void 0?N(this.reference):N(this.element))});o(this,"addClasses",e=>{this.element.classList.add(...e)});o(this,"removeClasses",e=>{this.element.classList.remove(...e)});o(this,"getClasses",()=>Array.from(this.element.classList));o(this,"on",(e,t,r)=>(this.element.addEventListener(e,t,r),n=>{n&&this.element.removeEventListener(e,t,r)}));o(this,"isBrowserDOM",()=>!0);o(this,"isBrowser",()=>!0);o(this,"isHeadlessDOM",()=>!1);o(this,"isHeadless",()=>!1);o(this,"setStyle",(e,t)=>{this.element.style[e]=t});o(this,"getStyle",e=>this.element.style[e]);o(this,"makeAccessors",e=>({get:$e(e,this.element),set:Ie(e,this.element)}));o(this,"getWindow",()=>this.document.defaultView);this.document=e,this.element=t,this.reference=r,this.providers=n}static of(e,t){return new x(e.ownerDocument,e,t,{})}}const Ve=s=>Symbol(s),z=(s,e)=>{const t=s(e);return(r=!0)=>t(r)},ft=(s,e,{doc:t,clear:r,disposeWithParent:n=!0}={})=>{const i=typeof e=="string"?(t??document).querySelector(e):e;if(i===null)throw new je(`Cannot find element by selector for render: ${e}`);r!==!1&&(t??i.ownerDocument)!=null&&i.nodeType===1&&(i.innerHTML="");const l=Re(i),a=re(i)?void 0:i,c=x.of(l,a),u=z(s,c);let h;return n&&(h=new MutationObserver(g=>{var y;(y=g[0])==null||y.removedNodes.forEach(p=>{p===i&&(u(i.nodeType!==Node.ELEMENT_NODE),h==null||h.disconnect())})}),h.observe(i.parentElement,{childList:!0,subtree:!1,attributes:!1})),()=>{h==null||h.disconnect(),u(!0)}},dt=(s,{startUrl:e="https://example.com",selector:t=":root"}={})=>{const r=T.toSignal(e).deriveProp(),n=new oe(t,void 0),i=new O(n,void 0,{currentURL:r},{});return{clear:z(s(),i),root:n,currentURL:r}};class je extends Error{constructor(e){super(e)}}const ie="data-tts-node",k="data-tts-class",W="data-tts-style",U="data-tts-html",G="data-tts-text",J="data-tts-attrs";class pt{constructor({select:e,getAttribute:t,setAttribute:r,getClass:n,setClass:i,getStyles:l,setStyles:a,appendHTML:c,getInnerHTML:u,setInnerHTML:h,getInnerText:g,setInnerText:y}){o(this,"select");o(this,"getAttribute");o(this,"setAttribute");o(this,"getClass");o(this,"setClass");o(this,"getStyles");o(this,"setStyles");o(this,"appendHTML");o(this,"getInnerHTML");o(this,"setInnerHTML");o(this,"getInnerText");o(this,"setInnerText");o(this,"setFromRoot",(e,t)=>{e.getPortals().forEach(n=>{for(const i of this.select(n.selector)){if(i==null)throw new Error(`Cannot find element by selector for render: ${n.selector}`);if(n.hasChildren()&&this.appendHTML(i,n.contentToHTML(t)),n.hasInnerHTML()){if(t){const l=this.getInnerHTML(i);l!=null&&this.setAttribute(i,U,l)}this.setInnerHTML(i,n.getInnerHTML())}if(n.hasInnerText()){if(t){const l=this.getInnerText(i);l!=null&&this.setAttribute(i,G,l)}this.setInnerText(i,n.getInnerText())}if(n.hasClasses()){if(t){const l=this.getClass(i);l!=null&&this.setAttribute(i,k,l)}this.setClass(i,n.getClasses().join(" "))}if(n.hasStyles()){if(t){const l=this.getStyles(i);Object.keys(l).length>0&&this.setAttribute(i,W,JSON.stringify(l))}this.setStyles(i,n.getStyles())}if(n.hasAttributes()){const l=n.getAttributes();if(t){const a=[];l.forEach(([c])=>{const u=this.getAttribute(i,c);u!=null&&a.push([c,u])}),a.length>0&&this.setAttribute(i,J,JSON.stringify(Object.fromEntries(a)))}l.forEach(([a,c])=>{this.setAttribute(i,a,c)})}}})});this.select=e,this.getAttribute=t,this.setAttribute=r,this.getClass=n,this.setClass=i,this.getStyles=l,this.setStyles=a,this.appendHTML=c,this.getInnerHTML=u,this.setInnerHTML=h,this.getInnerText=g,this.setInnerText=y}}const mt=()=>{document.querySelectorAll(`[${ie}]`).forEach(N)},gt=s=>{const e=s.getAttribute(k);s.removeAttribute(k),e!=null&&s.setAttribute("class",e)},yt=()=>{document.querySelectorAll(`[${k}]`).forEach(e=>gt(e))},Tt=s=>{const e=s.getAttribute(U);s.removeAttribute(U),e!=null&&(s.innerHTML=e)},St=()=>{document.querySelectorAll(`[${U}]`).forEach(e=>Tt(e))},bt=s=>{const e=s.getAttribute(G);s.removeAttribute(G),e!=null&&(s.innerText=e)},At=()=>{document.querySelectorAll(`[${G}]`).forEach(e=>bt(e))},qe=s=>JSON.parse(s.replace(/"/g,'"')),Et=s=>{const e=s.getAttribute(W);if(s.removeAttribute(W),e!=null){const t=qe(e);Object.entries(t).forEach(([r,n])=>{s.style.setProperty(r,n)})}},_t=()=>{document.querySelectorAll(`[${W}]`).forEach(e=>Et(e))},wt=s=>{const e=s.getAttribute(J);if(s.removeAttribute(J),e!=null){const t=qe(e);Object.entries(t).forEach(([r,n])=>{n==null?s.removeAttribute(r):s.setAttribute(r,n)})}},Ct=()=>{document.querySelectorAll(`[${J}]`).forEach(e=>wt(e))},Pt=()=>{mt(),yt(),At(),St(),_t(),Ct()},b=Symbol("class"),w=Symbol("style"),D=Symbol("handler"),Be=()=>Math.random().toString(36).substring(2,15),xt=s=>s.replace(/<[^>]*>?/g,"");class Fe{constructor(e){o(this,"id",Be());o(this,"properties",{});o(this,"children",[]);o(this,"isElement",()=>!0);o(this,"isText",()=>!1);o(this,"getText",()=>this.properties.innerText!=null?this.properties.innerText:this.properties.innerHTML!=null?xt(this.properties.innerHTML):this.children.map(e=>e.getText()).join(""));o(this,"removeChild",e=>{const t=this.children.indexOf(e);t!==-1&&this.children.splice(t,1)});o(this,"remove",()=>{if(this.parent!=null)this.parent.removeChild(this);else throw new Error("Parent is undefined")});o(this,"getPortals",()=>{const e=this.elements().flatMap(t=>t.isPortal()?[t,...t.getPortals()]:t.getPortals());return this.isPortal()&&e.unshift(this),e});o(this,"elements",()=>this.children.filter(e=>e.isElement()));o(this,"hasInnerHTML",()=>this.properties.innerHTML!=null);o(this,"getInnerHTML",()=>this.properties.innerHTML??"");o(this,"getInnerText",()=>this.properties.innerText??"");o(this,"hasInnerText",()=>this.properties.innerText!=null);o(this,"hasChildren",()=>this.children.length>0);o(this,"hasClasses",()=>this.properties[b]!=null);o(this,"hasStyles",()=>this.properties[w]!=null);o(this,"hasAttributes",()=>Object.keys(this.properties).length>0);o(this,"hasHandlers",()=>this.properties[D]!=null);o(this,"hasRenderableProperties",()=>this.hasClasses()||this.hasAttributes()||this.hasStyles());o(this,"getById",e=>{if(this.properties.id===e)return this;for(const t of this.elements()){const r=t.getById(e);if(r!=null)return r}});o(this,"trigger",(e,t)=>{((this.properties[D]??{})[e]??[]).forEach(n=>n(t))});o(this,"click",()=>{this.trigger("click",{})});o(this,"on",(e,t,r)=>{var a;const n=(a=this.properties)[D]??(a[D]={}),i=r!=null&&r.once?c=>{l(),t(c)}:c=>t(c);n[e]=[...n[e]??[],i];const l=()=>{const c=n[e]??[],u=c.indexOf(i);u!==-1&&(c.splice(u,1),c.length===0?(delete n[e],Object.keys(n).length===0&&delete this.properties[D]):n[e]=c,(r==null?void 0:r.signal)!=null&&r.signal.removeEventListener("abort",l))};return(r==null?void 0:r.signal)!=null&&r.signal.addEventListener("abort",l),l});o(this,"addClasses",e=>{var r;if(e.length===0)return;const t=(r=this.properties)[b]??(r[b]=[]);e.forEach(n=>{t.includes(n)||t.push(n)})});o(this,"removeClasses",e=>{var r;if(e.length===0)return;const t=(r=this.properties)[b]??(r[b]=[]);e.forEach(n=>{const i=t.indexOf(n);i!==-1&&t.splice(i,1)}),t.length===0&&delete this.properties[b]});o(this,"getClasses",()=>this.properties[b]??[]);o(this,"getAttributes",()=>Object.entries(this.properties).filter(([e])=>!["innerText","innerHTML"].includes(e)));o(this,"getVisibleAttributes",()=>Reflect.ownKeys(this.properties).flatMap(e=>e===b?[["class",this.getClasses()]]:e===w?[["style",this.getStyles()]]:typeof e=="string"?[[e,String(this.properties[e])]]:[]));o(this,"setStyle",(e,t)=>{var n;const r=(n=this.properties)[w]??(n[w]={});r[e]=t,t===""&&(delete r[e],Object.keys(r).length===0&&delete this.properties[w])});o(this,"getStyle",e=>{var t;return((t=this.properties[w])==null?void 0:t[e])??""});o(this,"getStyles",()=>this.properties[w]??{});o(this,"makeAccessors",e=>{const t=this.properties;return{get:()=>t[e],set:r=>t[e]=r}});this.parent=e}}const Ot=s=>s.replace(/"/g,"""),vt=s=>s.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");class We extends Fe{constructor(t,r,n){super(n);o(this,"isPortal",()=>!1);o(this,"toHTML",(t=!1)=>{const r=this.children.map(c=>c.toHTML()).join(""),n=this.namespace?` xmlns="${this.namespace}"`:"";let i=null;const l=this.getVisibleAttributes().map(([c,u])=>c==="class"?` class="${u.join(" ")}"`:c==="style"?typeof u=="string"?` style="${u}"`:` style="${Object.entries(u).map(([h,g])=>`${h}: ${g};`).join(" ")}"`:Dt.has(c)?` ${c}`:c==="innerHTML"?(i=u,""):c==="innerText"?(i=vt(u),""):` ${c}="${Ot(u)}"`).join(""),a=t?` ${ie}`:"";return Lt.has(this.tagName)&&r===""?`<${this.tagName}${n}${l}${a} />`:`<${this.tagName}${n}${l}${a}>${i??r}</${this.tagName}>`});this.tagName=t,this.namespace=r}}class oe extends Fe{constructor(t,r){super(r);o(this,"isPortal",()=>!0);o(this,"toHTML",()=>"");o(this,"contentToHTML",(t=!1)=>this.children.map(r=>r.toHTML(t)).join(""));this.selector=t}}class Ue{constructor(e){o(this,"id",Be());o(this,"isElement",()=>!1);o(this,"isText",()=>!0);o(this,"getText",()=>this.text);o(this,"toHTML",()=>this.text);this.text=e}}class O{constructor(e,t,r,n){o(this,"appendOrInsert",e=>{if(this.reference!=null){const t=this.element.children.indexOf(this.reference);this.element.children.splice(t,0,e)}else this.element.children.push(e)});o(this,"makeChildElement",(e,t)=>{const r=new We(e,t,this.element);return this.appendOrInsert(r),new O(r,void 0,this.container,this.providers)});o(this,"makeChildText",e=>{const t=new Ue(e);return this.appendOrInsert(t),new O(this.element,t,this.container,this.providers)});o(this,"setText",e=>{this.reference&&this.reference.isText()&&(this.reference.text=e)});o(this,"getText",()=>{var e;return((e=this.reference)==null?void 0:e.getText())??this.element.getText()});o(this,"makeRef",()=>this.makeChildText(""));o(this,"makePortal",e=>{const t=new oe(e,this.element);return this.appendOrInsert(t),new O(t,void 0,this.container,this.providers)});o(this,"setProvider",(e,t,r)=>new O(this.element,this.reference,this.container,{...this.providers,[e]:[t,r]}));o(this,"getProvider",e=>{if(this.providers[e]===void 0)throw new ne(e);return this.providers[e]});o(this,"clear",e=>{e&&(this.reference!==void 0?this.element.removeChild(this.reference):this.element.remove())});o(this,"on",(e,t)=>this.element.on(e,t));o(this,"addClasses",e=>this.element.addClasses(e));o(this,"removeClasses",e=>this.element.removeClasses(e));o(this,"getClasses",()=>this.element.getClasses());o(this,"isBrowserDOM",()=>!1);o(this,"isBrowser",()=>!1);o(this,"isHeadlessDOM",()=>!0);o(this,"isHeadless",()=>!0);o(this,"setStyle",(e,t)=>this.element.setStyle(e,t));o(this,"getStyle",e=>this.element.getStyle(e));o(this,"makeAccessors",e=>this.element.makeAccessors(e));this.element=e,this.reference=t,this.container=r,this.providers=n}}const Dt=new Set(["checked","disabled","multiple","readonly","required","selected"]),Lt=new Set(["img","br","hr","input","link","meta"]),le=s=>e=>e.makeChildText(s).clear,ae=s=>e=>{const t=e.makeChildText(s.value),r=s.on(t.setText);return n=>{r(),t.clear(n)}},Mt=s=>d.is(s)?ae(s):le(s),S=(...s)=>e=>{const t=s.map(r=>f(r)(e));return r=>{t.forEach(n=>n(r))}},A=()=>()=>{},Ht=s=>e=>(e.addClasses(s),t=>{t&&e.removeClasses(s)}),Nt=s=>e=>{let t=[];const r=s.on(n=>{e.removeClasses(t),t=(n??"").split(" ").filter(i=>i.length>0),e.addClasses(t)});return n=>{r(),n&&e.removeClasses(t),t.length=0}},$=(s,e)=>t=>{const{get:r,set:n}=t.makeAccessors(s),i=r();return n(e),l=>{l&&n(i)}},R=(s,e)=>t=>{const{get:r,set:n}=t.makeAccessors(s),i=r(),l=e.on(n);return a=>{l(),a&&n(i)}},v=new Proxy({},{get:(s,e)=>e==="class"?t=>d.is(t)?Nt(t):Ht((t??"").split(" ").filter(r=>r.length>0)):t=>d.is(t)?R(e,t):$(e,t)}),kt=new Proxy({},{get:(s,e)=>t=>d.is(t)?R(`data-${e}`,t):$(`data-${e}`,t)}),It=new Proxy({},{get:(s,e)=>t=>d.is(t)?R(`aria-${e}`,t):$(`aria-${e}`,t)}),$t=new Proxy({},{get:(s,e)=>t=>d.is(t)?R(e,t):$(e,t)}),Rt=new Proxy({},{get:(s,e)=>t=>d.is(t)?R(e,t):$(e,t)}),f=s=>{if(s==null)return A;if(Array.isArray(s))return S(...s.map(f));if(typeof s=="string")return le(s);if(d.is(s))return ae(s);if(typeof s=="function")return s;throw new Error(`Unknown type: '${typeof s}' for child: ${s}`)},ce=(s,...e)=>t=>{const r=t.makeChildElement(s,void 0),n=e.map(i=>f(i)(r));return i=>{n.forEach(l=>l(!1)),r.clear(i)}},ue=(s,e,...t)=>r=>{const n=r.makeChildElement(s,e),i=t.map(l=>f(l)(n));return l=>{i.forEach(a=>a(!1)),n.clear(l)}},Vt=new Proxy({},{get:(s,e)=>(...t)=>ce(e,t.flatMap(f))}),jt=new Proxy({},{get:(s,e)=>(...t)=>ce("input",v.type(e),...t)}),qt="http://www.w3.org/2000/svg",Bt=new Proxy({},{get:(s,e)=>(...t)=>ue(e,qt,t.flatMap(f))}),Ft="http://www.w3.org/1998/Math/MathML",Wt=new Proxy({},{get:(s,e)=>(...t)=>ue(e,Ft,t.flatMap(f))}),he=(s,e)=>{if(typeof e=="function")return he(s,{then:e});const t=e.pending!=null?f(e.pending()):A,r=e.then,n=e.error!=null?i=>f(e.error(i)):()=>A;return i=>{let l=!0;const a=s(),c=i.makeRef();let u=f(t)(c);return a.then(h=>{l&&(u(!0),u=f(r(h))(c))},h=>{l&&(u(!0),u=f(n(h))(c))}),h=>{l=!1,u(h),c.clear(h)}}},Ut=(s,e)=>he(()=>s,e),Ge=(s,e,t)=>r=>r.on(s,e,t),Je=s=>Ge("click",e=>{e.preventDefault();const t=e.target;setTimeout(()=>{const r=t.ownerDocument!=null?t==null?void 0:t.checked:void 0;r!=null&&s(!r)},0)}),V=new Proxy({},{get:(s,e)=>t=>Ge(e,t)}),Xe=s=>e=>{const t=e.target;s(t.value)},Ye=s=>e=>{const t=e.target;s(t.valueAsNumber)},ze=s=>e=>{const t=e.target;if(t.value==="")return;const r=t.value.split("-"),n=new Date(Number(r[0]),Number(r[1])-1,Number(r[2].substring(0,2)));s(n)},Gt=s=>e=>{const t=e.target;if(t.value===""){s(null);return}const r=t.value.split("-"),n=new Date(Number(r[0]),Number(r[1])-1,Number(r[2].substring(0,2)));s(n)},Qe=s=>e=>{const t=e.target;if(t.value==="")return;const r=t.value.split("T"),n=r[0].split("-"),i=new Date(Number(n[0]),Number(n[1])-1,Number(n[2])),l=r[1].split(":");i.setHours(Number(l[0])),i.setMinutes(Number(l[1])),i.setSeconds(Number(l[2])),s(i)},Jt=s=>e=>{const t=e.target;if(t.value===""){s(null);return}const r=t.value.split("T");if(r.length!==2){s(null);return}const n=r[0].split("-"),i=new Date(Number(n[0]),Number(n[1])-1,Number(n[2])),l=r[1].split(":");i.setHours(Number(l[0]??0)),i.setMinutes(Number(l[1]??0)),i.setSeconds(Number(l[2]??0)),s(i)},Xt=s=>e=>{const t=e.target;s(t.checked)},Yt=s=>e=>{e.preventDefault(),s()},zt=s=>e=>{e.stopPropagation(),s()},Qt=s=>e=>{e.stopImmediatePropagation(),s()},Zt=(s,e="input")=>S(v.valueAsDate(s),V[e](ze(s.set))),Kt=(s,e="input")=>S(v.valueAsDate(s),V[e](Qe(s.set))),es=(s,e="input")=>S(v.valueAsNumber(s),V[e](Ye(s.set))),ts=(s,e="input")=>S(v.value(s),V[e](Xe(s.set))),ss=s=>S(v.checked(s),Je(s.set)),j=(s,e)=>{if(d.is(s))return r=>{const n=r.makeRef();let i,l;const a=s.map(h=>Object.keys(h)[0]);let c;const u=a.on(h=>{if(h!==c){c=h,l==null||l.dispose(),i==null||i(!0),l=s.map(y=>y[h]);const g=e[h](l);i=f(g)(n)}});return h=>{l==null||l.dispose(),u(),n.clear(h),i==null||i(h)}};const t=Object.keys(s)[0];return f(e[t](I(s[t])))},fe=(s,e,t)=>j(T.map(s,r=>({[r[e]]:r})),t),rs=(s,e)=>fe(s,"kind",e),ns=(s,e)=>{const t=T.map(s,([r,n])=>({[r]:n}));return j(t,e)},is=(s,e)=>fe(s,"type",e),Ze=(s,e)=>j(T.map(s,t=>({[t]:!0})),e),os=(s,e={})=>t=>{const r=(e==null?void 0:e.firstSeparator)??s,n=(e==null?void 0:e.lastSeparator)??s;return Ze(t.map(i=>i.isFirst?"first":i.isLast?"last":"other"),{first:r,last:n,other:s})},ls=s=>e=>(e.appendOrInsert(s),t=>{t&&N(s)}),Ke=(s,e,t)=>{if(d.is(s)){const r=s;return n=>{const i=n.makeRef();let l=()=>{},a=!1,c=null;const u=r.on(h=>{h==null?(l(!0),l=f((t==null?void 0:t())??A)(i),a=!1,c==null||c.dispose(),c=null):(c==null?c=_(h):c.value=h,a||(l(!0),l=f(e(c))(i),a=!0))});return h=>{c==null||c.dispose(),u(),l==null||l(h),i.clear(h)}}}else{const r=s;if(r==null){const n=t==null?void 0:t();return n!=null?f(n):A}return f(e(I(r)))}},as=(...s)=>(e,t)=>r=>{const n=r.makeRef();if(s.some(p=>!d.is(p)&&p==null))return(t!=null?f(t==null?void 0:t()):A)(n);const l=s.map(()=>null),a=s.map(p=>d.is(p)?p.value!=null:p!=null);let c=null;const u=_(a.every(p=>p)),h=(p,m)=>{if(p.value!=null){if(l[m]==null){const C=_(p.value);l[m]=C}else l[m].value=p.value;a[m]=!0}else a[m]=!1};let g=s.length-1;const y=s.map((p,m)=>{if(!d.is(p)){const C=_(p);return l[m]=C,()=>{}}return p.on(()=>{h(p,m),g===0?u.value=a.every(C=>C):g--})});return u.on(p=>{c==null||c(!0),c=null,p?c=f(e(...l))(n):c=f((t==null?void 0:t())??A)(n)}),p=>{l.forEach(m=>m==null?void 0:m.dispose()),u.dispose(),y.forEach(m=>m()),c==null||c(p),n.clear(p)}},Q=(...s)=>e=>t=>s.forEach(r=>r(t,e)),de=(s,e,t)=>Ke(T.map(s,r=>r?!0:null),e,t??void 0),cs=(s,e,t)=>de(T.map(s,r=>!r),e,t),pe=(s,e,t)=>t!=null?pe(s,r=>{const n=new F(r.index,r.total.map(i=>i-1));return S(Q(n.dispose),f(e(r)),de(r.isLast,()=>A,()=>t(n)))}):d.is(s)?r=>{const n=r.makeRef(),i=[],l=s.on(a=>{const c=i.splice(a);for(const u of c)u(!0);for(let u=i.length;u<a;u++){const h=new F(u,s);i.push(f(e(h))(n))}});return a=>{l();for(const c of i)c(a);i.length=0,n.clear(a)}}:S(...Array.from({length:s},(r,n)=>n).map(r=>f(e(new F(r,I(s)))))),us=(s,e,t)=>{const r=T.map(s,i=>i.length),n=T.toSignal(s);return pe(r,i=>{const l=n.map(a=>a[i.index]);return S(Q(l.dispose),f(e(l,i)))},t)},hs=(s,e)=>{if(d.is(s)){const t=s;return r=>{r=r.makeRef();const n=t.map(a=>f(e(a)));let i=()=>{};const l=n.on(a=>{i(!0),i=a(r)});return a=>{l(),i(a)}}}return f(e(s))},fs=(s,e,t=()=>A)=>j(T.map(s,r=>r.length>0?{notEmpty:r}:{whenEmpty:null}),{notEmpty:r=>e(r),whenEmpty:()=>t()}),ds=(s,e)=>t=>{const r=t.makePortal(s);return z(f(e),r)},B=new Map,et=s=>({mark:Ve(`Probe(${s.description})`),create:({callback:e=()=>{},timeout:t=10}={})=>{const r=a=>{clearTimeout(n),B.delete(s),e(a)};if(B.has(s))throw new Error(`Probe already exists: ${s.description}`);const n=setTimeout(()=>r("timeout"),t),i={counter:0,timeoutId:n};return B.set(s,i),{value:()=>{clearTimeout(n);const a=B.get(s);a!=null&&--a.counter===0&&r("resolved")},dispose:()=>r("disposed"),onUse:()=>i.counter++}}}),ps=et(Symbol("GlobalProbe")),ms=(s,e)=>t=>{const r=t.getStyle(s);return t.setStyle(s,e),n=>{n&&t.setStyle(s,r)}},gs=(s,e)=>t=>{const r=t.getStyle(s);return e.on(n=>t.setStyle(s,n)),n=>{n&&t.setStyle(s,r)}},ys=new Proxy({},{get:(s,e)=>t=>d.is(t)?gs(e,t):ms(e,t)}),tt=s=>e=>{if(e.isBrowser()){const t=s(e);if(t!=null)return f(t)(e)}return()=>{}},Ts=s=>e=>{const t=s(e);return t==null?()=>{}:f(t)(e)},Ss=s=>tt(e=>s(e.element)),bs=s=>e=>{if(e.isHeadlessDOM()){const t=s(e);if(t)return f(t)(e)}return()=>{}},Z=s=>e=>{let t=e;function r(){return t}function n(a){t=a}const i=[],l=s({use:({mark:a})=>{const[c,u]=r().getProvider(a);return u==null||u(),c},set:({mark:a,create:c},u)=>{const{value:h,dispose:g,onUse:y}=c(u,r());i.push(g),n(r().setProvider(a,h,y))}});return l==null?()=>{}:S(f(l),Q(()=>i.forEach(a=>a())))(r())},As=(s,e,t)=>Z(({set:r})=>(r(s,e),t())),Es=(s,e)=>Z(({use:t})=>e(t(s))),_s=(...s)=>e=>Z(({use:t})=>{const r=s.map(t);return e(...r)});exports.Async=Ut;exports.BindChecked=ss;exports.BindDate=Zt;exports.BindDateTime=Kt;exports.BindNumber=es;exports.BindText=ts;exports.BrowserContext=x;exports.CLASS_PLACEHOLDER_ATTR=k;exports.Computed=P;exports.Conjunction=os;exports.DOMNode=ls;exports.El=ce;exports.ElNS=ue;exports.ElementPosition=F;exports.Empty=A;exports.Ensure=Ke;exports.EnsureAll=as;exports.ForEach=us;exports.Fragment=S;exports.GlobalProbe=ps;exports.HeadlessAdapter=pt;exports.HeadlessContext=O;exports.HeadlessElement=We;exports.HeadlessPortal=oe;exports.HeadlessText=Ue;exports.MapSignal=hs;exports.MemoryStore=te;exports.NotEmpty=fs;exports.OnChecked=Je;exports.OnDispose=Q;exports.OneOf=j;exports.OneOfField=fe;exports.OneOfKind=rs;exports.OneOfTuple=ns;exports.OneOfType=is;exports.OneOfValue=Ze;exports.Portal=ds;exports.Prop=H;exports.Provide=As;exports.ProviderNotFoundError=ne;exports.RenderingError=je;exports.Repeat=pe;exports.Signal=d;exports.Task=he;exports.TextNode=Mt;exports.Unless=cs;exports.Use=Es;exports.UseMany=_s;exports.Value=T;exports.When=de;exports.WithBrowserCtx=tt;exports.WithCtx=Ts;exports.WithElement=Ss;exports.WithHeadlessCtx=bs;exports.WithProvider=Z;exports._NODE_PLACEHOLDER_ATTR=ie;exports._getSelfOrParentElement=Re;exports._isElement=re;exports._makeGetter=$e;exports._makeSetter=Ie;exports._removeDOMNode=N;exports._signalText=ae;exports._staticText=le;exports.animateSignal=ut;exports.animateSignals=De;exports.aria=It;exports.attr=v;exports.computed=Y;exports.computedOf=ve;exports.computedRecord=ht;exports.dataAttr=kt;exports.effect=Oe;exports.effectOf=lt;exports.emitChecked=Xt;exports.emitPreventDefault=Yt;exports.emitStopImmediatePropagation=Qt;exports.emitStopPropagation=zt;exports.emitValue=Xe;exports.emitValueAsDate=ze;exports.emitValueAsDateTime=Qe;exports.emitValueAsNullableDate=Gt;exports.emitValueAsNullableDateTime=Jt;exports.emitValueAsNumber=Ye;exports.endInterpolate=Pe;exports.getWindow=ee;exports.guessInterpolate=xe;exports.html=Vt;exports.input=jt;exports.interpolateDate=Ce;exports.interpolateNumber=_e;exports.interpolateString=we;exports.joinSignals=ot;exports.localStorageProp=at;exports.makeProbe=et;exports.makeProviderMark=Ve;exports.math=Wt;exports.mathAttr=Rt;exports.on=V;exports.prop=_;exports.render=ft;exports.renderWithContext=z;exports.renderableOfTNode=f;exports.restoreTempoPlaceholders=Pt;exports.runHeadless=dt;exports.sessionStorageProp=ct;exports.signal=I;exports.storedProp=se;exports.style=ys;exports.svg=Bt;exports.svgAttr=$t;
|
|
1
|
+
"use strict";var rt=Object.defineProperty;var ye=s=>{throw TypeError(s)};var nt=(s,e,t)=>e in s?rt(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var i=(s,e,t)=>nt(s,typeof e!="symbol"?e+"":e,t),Te=(s,e,t)=>e.has(s)||ye("Cannot "+t);var K=(s,e,t)=>(Te(s,e,"read from private field"),t?t.call(s):e.get(s)),be=(s,e,t)=>e.has(s)?ye("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t),Se=(s,e,t,r)=>(Te(s,e,"write to private field"),r?r.call(s,t):e.set(s,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _e=(s,e,t)=>s+(e-s)*t,Ae=97,we=(s,e,t)=>{const r=Math.max(s.length,e.length);let n="";for(let l=0;l<r;l++){let o=s.charCodeAt(l);isNaN(o)&&(o=Ae);let a=e.charCodeAt(l);isNaN(a)&&(a=Ae),n+=String.fromCharCode(o+(a-o)*t)}return n},Ce=(s,e,t)=>new Date(s.getTime()+(e.getTime()-s.getTime())*t),Pe=(s,e)=>e,xe=s=>typeof s=="number"?_e:typeof s=="string"?we:s instanceof Date?Ce:Pe;var L;class F{constructor(e,t){i(this,"counter");i(this,"isFirst");i(this,"isEven");i(this,"isOdd");be(this,L);i(this,"dispose",()=>{this.total.dispose()});this.index=e,this.total=t,this.counter=e+1,this.isFirst=e===0,this.isEven=e%2===1,this.isOdd=e%2===0}get isLast(){return K(this,L)==null&&Se(this,L,this.total.map(e=>this.counter===e)),K(this,L)}}L=new WeakMap;const M=class M{constructor(e,t){i(this,"$__signal__",!0);i(this,"_value");i(this,"_derivatives",[]);i(this,"_onValueListeners",[]);i(this,"_onDisposeListeners",[]);i(this,"get",()=>this._value);i(this,"hasListeners",()=>this._onValueListeners.length>0);i(this,"on",(e,t={})=>{t.skipInitial||e(this.get(),void 0);const r=t.once?(l,o)=>{n(),e(l,o)}:e;this._onValueListeners.push(r);const n=()=>{this._onValueListeners.splice(this._onValueListeners.indexOf(r),1),t.abortSignal!=null&&t.abortSignal.removeEventListener("abort",n)};return t.abortSignal!=null&&t.abortSignal.addEventListener("abort",n),n});i(this,"_setAndNotify",(e,t)=>{if(this._disposed)return;const r=this._value,n=this.equals(r,e);n||(this._value=e),(t||!n)&&this._onValueListeners.forEach(l=>l(e,r))});i(this,"_disposed",!1);i(this,"isDisposed",()=>this._disposed);i(this,"onDispose",e=>{this._onDisposeListeners.push(e)});i(this,"dispose",()=>{this._disposed||(this._disposed=!0,this._onDisposeListeners.forEach(e=>e()),this._onDisposeListeners.length=0,this._derivatives.length=0)});i(this,"map",(e,t=(r,n)=>r===n)=>{const r=new P(()=>{try{return e(this.get())}catch(n){throw console.error("Error in Signal.map:",n),n}},t);return this.setDerivative(r),r});i(this,"flatMap",(e,t=(r,n)=>r===n)=>{const r=new P(()=>{try{return e(this.get()).get()}catch(n){throw console.error("Error in Signal.flatMap:",n),n}},t);return this.setDerivative(r),r});i(this,"tap",e=>this.map(t=>(e(t),t)));i(this,"at",e=>this.map(t=>t[e]));i(this,"_$");i(this,"filter",(e,t)=>{let r=t??this.get();const n=new P(()=>{try{const l=this.get();return r=e(l)?l:r}catch(l){throw console.error("Error in Signal.filter:",l),l}},this.equals);return this.setDerivative(n),n});i(this,"filterMap",(e,t,r=(n,l)=>n===l)=>{let n=t;const l=new P(()=>{try{const o=this.get(),a=e(o);return n=a??n}catch(o){throw console.error("Error in Signal.filterMap:",o),o}},r);return this.setDerivative(l),l});i(this,"mapAsync",(e,t,r,n=(l,o)=>l===o)=>{const l=_(t,n);let o=0,a=new AbortController;return l.onDispose(this.on(async c=>{const u=++o;a.abort(),a=new AbortController;try{const h=await e(c,{abortSignal:a.signal});u===o&&l.set(h)}catch(h){if(u===o)if(r!=null)l.set(r(h));else throw h}})),l});i(this,"mapMaybe",(e,t)=>this.map(r=>e(r)??t));i(this,"feedProp",(e,t=!1)=>{const r=this.on(e.set);return e.onDispose(r),t?this.onDispose(e.dispose):this.onDispose(r),e});i(this,"deriveProp",({autoDisposeProp:e=!0,equals:t}={})=>this.feedProp(_(this.get(),t),e));i(this,"derive",()=>this.map(e=>e));i(this,"count",()=>{let e=0;return this.map(()=>++e)});i(this,"setDerivative",e=>{this._derivatives.push(e),e.onDispose(()=>{this._derivatives.splice(this._derivatives.indexOf(e),1)}),e.onDispose(this.on(e.setDirty)),this.onDispose(e.dispose)});this.equals=t,this._value=e}get value(){return this._value}get $(){return this._$!==void 0?this._$:this._$=new Proxy(this,{get:(e,t)=>this.at(t)})}};i(M,"ofPromise",(e,t,r,n=(l,o)=>l===o)=>{const l=new M(t,n);return e.then(o=>l._setAndNotify(o,!1)).catch(o=>{r!=null?l._setAndNotify(r(o),!1):console.error("Unhandled promise rejection in Signal.ofPromise:",o)}),l}),i(M,"is",e=>e!=null&&e.$__signal__===!0);let d=M;const it=typeof queueMicrotask=="function"?queueMicrotask:s=>Promise.resolve().then(s);class P extends d{constructor(t,r){super(void 0,r);i(this,"$__computed__",!0);i(this,"_isDirty",!1);i(this,"setDirty",()=>{this._isDirty||this._disposed||(this._isDirty=!0,this._derivatives.forEach(t=>t.setDirty()),this._scheduleNotify())});i(this,"_scheduleCount",0);i(this,"_scheduleNotify",()=>{const t=++this._scheduleCount;it(()=>{this._scheduleCount!==t||this._disposed||this._isDirty&&(this._isDirty=!1,this._setAndNotify(this._fn(),!1))})});i(this,"get",()=>(this._isDirty&&(this._isDirty=!1,this._setAndNotify(this._fn(),!0)),this._value));this._fn=t,this.setDirty()}static is(t){return t!=null&&t.$__computed__===!0}get value(){return this.get()}}const X=class X extends d{constructor(){super(...arguments);i(this,"$__prop__",!0);i(this,"set",t=>{this._setAndNotify(t,!1)});i(this,"update",t=>{this._setAndNotify(t(this.get()),!1)});i(this,"reducer",(t,...r)=>{const n=this;return function l(o){const a=n.value;n.update(c=>t(c,o)),!n.equals(a,n.value)&&r.forEach(c=>c({previousState:a,state:n.value,action:o,dispatch:l}))}});i(this,"iso",(t,r,n=(l,o)=>l===o)=>{const l=new X(t(this.get()),n);return l.onDispose(this.on(o=>l.set(t(o)))),l.on(o=>this._setAndNotify(r(o),!1)),l});i(this,"atProp",t=>this.iso(r=>r[t],r=>({...this.value,[t]:r})))}get value(){return this.get()}set value(t){this._setAndNotify(t,!1)}};i(X,"is",t=>t!=null&&t.$__prop__===!0);let H=X;const Y=(s,e,t=(r,n)=>r===n)=>{const r=new P(s,t);return e.forEach(n=>n.setDerivative(r)),r},Oe=(s,e,t={})=>{let r=t.once?()=>{l(),s()}:s;if(t.skipInitial){let o=!1;const a=r;r=()=>{o?a():o=!0}}const n=Y(r,e),l=()=>{n.dispose(),t.abortSignal!=null&&t.abortSignal.removeEventListener("abort",l)};return t.abortSignal!=null&&t.abortSignal.addEventListener("abort",l),l},_=(s,e=(t,r)=>t===r)=>new H(s,e),I=(s,e=(t,r)=>t===r)=>new d(s,e),ee=()=>typeof window<"u"?window:void 0,y={map:(s,e)=>d.is(s)?s.map(e):e(s),toSignal:(s,e)=>d.is(s)?s:I(s,e),maybeToSignal:(s,e)=>{if(s!=null)return y.toSignal(s,e)},get:s=>d.is(s)?s.get():s,on:(s,e)=>d.is(s)?s.on(e):(e(s),()=>{}),dispose:s=>{d.is(s)&&s.dispose()},deriveProp:(s,{autoDisposeProp:e=!0,equals:t}={})=>d.is(s)?s.deriveProp({autoDisposeProp:e,equals:t}):_(s,t)},ve=(...s)=>(e,t)=>{const r=s.filter(n=>d.is(n));return Y(()=>e(...s.map(n=>y.get(n))),r,t)},ot=s=>{const e=Object.keys(s);return ve(...Object.values(s))((...t)=>Object.fromEntries(e.map((r,n)=>[r,t[n]])))},lt=(...s)=>(e,t={})=>{const r=s.filter(n=>d.is(n));return Oe(()=>e(...s.map(y.get)),r,t)};class te{constructor(){i(this,"_store",new Map);i(this,"getItem",e=>this._store.get(e)??null);i(this,"setItem",(e,t)=>{this._store.set(e,t)})}}const se=({key:s,defaultValue:e,store:t,serialize:r=JSON.stringify,deserialize:n=JSON.parse,equals:l=(a,c)=>a===c,onLoad:o=a=>a})=>{const a=t.getItem(s),c=new H(a!=null?o(n(a)):typeof e=="function"?e():e,l);return c.on(u=>{t.setItem(s,r(u))}),c},at=s=>{var e;return se({...s,store:((e=ee())==null?void 0:e.localStorage)??new te})},ct=s=>{var e;return se({...s,store:((e=ee())==null?void 0:e.sessionStorage)??new te})};function Ee(s){return typeof requestAnimationFrame=="function"?requestAnimationFrame(s):setTimeout(s,0)}const De=(s,e,t,r)=>{const n=(r==null?void 0:r.duration)??300,l=(r==null?void 0:r.easing)??(E=>E),o=(r==null?void 0:r.equals)??((E,q)=>E===q);let a=r==null?void 0:r.interpolate,c=s,u=e(),h=performance.now(),m=null,T=!0;const p=new P(e,o),g=_(s,o);g.onDispose(()=>{m!==null&&cancelAnimationFrame(m)}),g.onDispose(p.dispose),t.forEach(E=>{E.setDerivative(p),E.onDispose(g.dispose)});const C=E=>{u=E,h=performance.now(),c=g.value,T&&(T=!1,m=Ee(me))},me=()=>{const q=(performance.now()-h)/y.get(n),st=l(q);a==null&&(a=xe(c));let ge=a(c,u,st);q>=1?(T=!0,ge=u):m=Ee(me),g.set(ge)};return p.on(C),g},ut=(s,e)=>{const{initialValue:t,...r}=e??{};return De(t??s.get(),s.get,[s],r)},ht=(s,e)=>{const{signals:t,literals:r}=Object.entries(s).reduce(({signals:l,literals:o},[a,c])=>(d.is(c)?l.push([a,c]):o[a]=c,{signals:l,literals:o}),{signals:[],literals:{}}),n=t.map(([,l])=>l);return Y(()=>(t.forEach(([l,o])=>r[l]=o.value),e(r)),n)},Le=new Set(["checked","disabled","hidden"]),Me=new Set(["selected"]),He=new Set(["rowSpan","colSpan","tabIndex","valueAsNumber"]),Ne=new Set(["valueAsDate"]),ke=new Set(["value","textContent","innerText","innerHTML","outerHTML","className","classList"]),Ie=(s,e)=>Me.has(s)?t=>{t==null||t!==!0?e.removeAttribute(s):e.setAttribute(s,"")}:Le.has(s)?t=>{t==null?e[s]=null:e[s]=!!t}:He.has(s)?t=>{t==null?e[s]=null:e[s]=Number(t)}:Ne.has(s)?t=>{t==null?e[s]=null:e[s]=t}:ke.has(s)?t=>{t==null?e[s]=null:e[s]=String(t)}:t=>{t==null?e.removeAttribute(s):e.setAttribute(s,t)},$e=(s,e)=>Me.has(s)?()=>e.hasAttribute(s):Le.has(s)?()=>!!e[s]:He.has(s)?()=>Number(e[s]):Ne.has(s)?()=>e[s]:ke.has(s)?()=>String(e[s]):()=>e.getAttribute(s),N=s=>{const e=s;e&&e.onblur&&(e.onblur=null),!(!s||s.ownerDocument===void 0)&&s.parentElement&&s.parentElement.removeChild(s)},Re=s=>re(s)?s:s.parentElement,re=s=>s.nodeType===1;class ne extends Error{constructor(e){super(`Provider not found: ${e.description}`)}}class x{constructor(e,t,r,n){i(this,"createElement",(e,t)=>t!==void 0?this.document.createElementNS(t,e):this.document.createElement(e));i(this,"makeChildElement",(e,t)=>{const r=this.createElement(e,t);return this.appendOrInsert(r),this.withElement(r)});i(this,"createText",e=>this.document.createTextNode(e));i(this,"makeChildText",e=>{const t=this.createText(e);return this.appendOrInsert(t),this.withReference(t)});i(this,"setText",e=>{this.reference.nodeValue=e});i(this,"getText",()=>{var e;return((e=this.reference)==null?void 0:e.nodeValue)??this.element.textContent??""});i(this,"makeRef",()=>{const e=this.createText("");return this.appendOrInsert(e),this.withReference(e)});i(this,"appendOrInsert",e=>{this.reference===void 0?this.element.appendChild(e):this.element.insertBefore(e,this.reference)});i(this,"withElement",e=>new x(this.document,e,void 0,this.providers));i(this,"makePortal",e=>{const t=typeof e=="string"?this.document.querySelector(e):e;if(t==null)throw new Error(`Cannot find element by selector for portal: ${e}`);return this.withElement(t)});i(this,"withReference",e=>new x(this.document,this.element,e,this.providers));i(this,"setProvider",(e,t,r)=>new x(this.document,this.element,this.reference,{...this.providers,[e]:[t,r]}));i(this,"getProvider",e=>{if(this.providers[e]===void 0)throw new ne(e);return this.providers[e]});i(this,"clear",e=>{e&&(this.reference!==void 0?N(this.reference):N(this.element))});i(this,"addClasses",e=>{this.element.classList.add(...e)});i(this,"removeClasses",e=>{this.element.classList.remove(...e)});i(this,"getClasses",()=>Array.from(this.element.classList));i(this,"on",(e,t,r)=>(this.element.addEventListener(e,t,r),n=>{n&&this.element.removeEventListener(e,t,r)}));i(this,"isBrowserDOM",()=>!0);i(this,"isBrowser",()=>!0);i(this,"isHeadlessDOM",()=>!1);i(this,"isHeadless",()=>!1);i(this,"setStyle",(e,t)=>{this.element.style[e]=t});i(this,"getStyle",e=>this.element.style[e]);i(this,"makeAccessors",e=>({get:$e(e,this.element),set:Ie(e,this.element)}));i(this,"getWindow",()=>this.document.defaultView);this.document=e,this.element=t,this.reference=r,this.providers=n}static of(e,t,r){return new x(e.ownerDocument,e,t,r)}}const Ve=s=>Symbol(s),z=(s,e)=>{const t=s(e);return(r=!0)=>t(r)},ft=(s,e,{doc:t,clear:r,disposeWithParent:n=!0,providers:l={}}={})=>{const o=typeof e=="string"?(t??document).querySelector(e):e;if(o===null)throw new je(`Cannot find element by selector for render: ${e}`);r!==!1&&(t??o.ownerDocument)!=null&&o.nodeType===1&&(o.innerHTML="");const a=Re(o),c=re(o)?void 0:o,u=x.of(a,c,l),h=z(s,u);let m;return n&&(m=new MutationObserver(T=>{var p;(p=T[0])==null||p.removedNodes.forEach(g=>{g===o&&(m==null||m.disconnect(),h(o.nodeType!==Node.ELEMENT_NODE))})}),m.observe(o.parentElement,{childList:!0,subtree:!1,attributes:!1})),()=>{m==null||m.disconnect(),h(!0)}},dt=(s,{startUrl:e="https://example.com",selector:t,providers:r={}}={selector:"body"})=>{const n=y.toSignal(e).deriveProp(),l=new oe(t,void 0),o=new O(l,void 0,{currentURL:n},r);return{clear:z(s(),o),root:l,currentURL:n}};class je extends Error{constructor(e){super(e)}}const ie="data-tts-node",k="data-tts-class",W="data-tts-style",U="data-tts-html",G="data-tts-text",J="data-tts-attrs";class pt{constructor({select:e,getAttribute:t,setAttribute:r,getClass:n,setClass:l,getStyles:o,setStyles:a,appendHTML:c,getInnerHTML:u,setInnerHTML:h,getInnerText:m,setInnerText:T}){i(this,"select");i(this,"getAttribute");i(this,"setAttribute");i(this,"getClass");i(this,"setClass");i(this,"getStyles");i(this,"setStyles");i(this,"appendHTML");i(this,"getInnerHTML");i(this,"setInnerHTML");i(this,"getInnerText");i(this,"setInnerText");i(this,"setFromRoot",(e,t)=>{e.getPortals().forEach(n=>{const l=typeof n.selector=="string"?this.select(n.selector):[n.selector];for(const o of l){if(o==null)throw new Error(`Cannot find element by selector for render: ${n.selector}`);if(n.hasChildren()&&this.appendHTML(o,n.contentToHTML(t)),n.hasInnerHTML()){if(t){const a=this.getInnerHTML(o);a!=null&&this.setAttribute(o,U,a)}this.setInnerHTML(o,n.getInnerHTML())}if(n.hasInnerText()){if(t){const a=this.getInnerText(o);a!=null&&this.setAttribute(o,G,a)}this.setInnerText(o,n.getInnerText())}if(n.hasClasses()){if(t){const a=this.getClass(o);a!=null&&this.setAttribute(o,k,a)}this.setClass(o,n.getClasses().join(" "))}if(n.hasStyles()){if(t){const a=this.getStyles(o);Object.keys(a).length>0&&this.setAttribute(o,W,JSON.stringify(a))}this.setStyles(o,n.getStyles())}if(n.hasAttributes()){const a=n.getAttributes();if(t){const c=[];a.forEach(([u])=>{const h=this.getAttribute(o,u);h!=null&&c.push([u,h])}),c.length>0&&this.setAttribute(o,J,JSON.stringify(Object.fromEntries(c)))}a.forEach(([c,u])=>{this.setAttribute(o,c,u)})}}})});this.select=e,this.getAttribute=t,this.setAttribute=r,this.getClass=n,this.setClass=l,this.getStyles=o,this.setStyles=a,this.appendHTML=c,this.getInnerHTML=u,this.setInnerHTML=h,this.getInnerText=m,this.setInnerText=T}}const mt=()=>{document.querySelectorAll(`[${ie}]`).forEach(N)},gt=s=>{const e=s.getAttribute(k);s.removeAttribute(k),e!=null&&s.setAttribute("class",e)},yt=()=>{document.querySelectorAll(`[${k}]`).forEach(e=>gt(e))},Tt=s=>{const e=s.getAttribute(U);s.removeAttribute(U),e!=null&&(s.innerHTML=e)},bt=()=>{document.querySelectorAll(`[${U}]`).forEach(e=>Tt(e))},St=s=>{const e=s.getAttribute(G);s.removeAttribute(G),e!=null&&(s.innerText=e)},At=()=>{document.querySelectorAll(`[${G}]`).forEach(e=>St(e))},qe=s=>JSON.parse(s.replace(/"/g,'"')),Et=s=>{const e=s.getAttribute(W);if(s.removeAttribute(W),e!=null){const t=qe(e);Object.entries(t).forEach(([r,n])=>{s.style.setProperty(r,n)})}},_t=()=>{document.querySelectorAll(`[${W}]`).forEach(e=>Et(e))},wt=s=>{const e=s.getAttribute(J);if(s.removeAttribute(J),e!=null){const t=qe(e);Object.entries(t).forEach(([r,n])=>{n==null?s.removeAttribute(r):s.setAttribute(r,n)})}},Ct=()=>{document.querySelectorAll(`[${J}]`).forEach(e=>wt(e))},Pt=()=>{mt(),yt(),At(),bt(),_t(),Ct()},S=Symbol("class"),w=Symbol("style"),D=Symbol("handler"),Be=()=>Math.random().toString(36).substring(2,15),xt=s=>s.replace(/<[^>]*>?/g,"");class Fe{constructor(e){i(this,"id",Be());i(this,"properties",{});i(this,"children",[]);i(this,"isElement",()=>!0);i(this,"isText",()=>!1);i(this,"getText",()=>this.properties.innerText!=null?this.properties.innerText:this.properties.innerHTML!=null?xt(this.properties.innerHTML):this.children.map(e=>e.getText()).join(""));i(this,"removeChild",e=>{const t=this.children.indexOf(e);t!==-1&&this.children.splice(t,1)});i(this,"remove",()=>{if(this.parent!=null)this.parent.removeChild(this);else throw new Error("Parent is undefined")});i(this,"getPortals",()=>{const e=this.elements().flatMap(t=>t.isPortal()?[t,...t.getPortals()]:t.getPortals());return this.isPortal()&&e.unshift(this),e});i(this,"elements",()=>this.children.filter(e=>e.isElement()));i(this,"hasInnerHTML",()=>this.properties.innerHTML!=null);i(this,"getInnerHTML",()=>this.properties.innerHTML??"");i(this,"getInnerText",()=>this.properties.innerText??"");i(this,"hasInnerText",()=>this.properties.innerText!=null);i(this,"hasChildren",()=>this.children.length>0);i(this,"hasClasses",()=>this.properties[S]!=null);i(this,"hasStyles",()=>this.properties[w]!=null);i(this,"hasAttributes",()=>Object.keys(this.properties).length>0);i(this,"hasHandlers",()=>this.properties[D]!=null);i(this,"hasRenderableProperties",()=>this.hasClasses()||this.hasAttributes()||this.hasStyles());i(this,"getById",e=>{if(this.properties.id===e)return this;for(const t of this.elements()){const r=t.getById(e);if(r!=null)return r}});i(this,"trigger",(e,t)=>{((this.properties[D]??{})[e]??[]).forEach(n=>n(t))});i(this,"click",()=>{this.trigger("click",{})});i(this,"on",(e,t,r)=>{var a;const n=(a=this.properties)[D]??(a[D]={}),l=r!=null&&r.once?c=>{o(),t(c)}:c=>t(c);n[e]=[...n[e]??[],l];const o=()=>{const c=n[e]??[],u=c.indexOf(l);u!==-1&&(c.splice(u,1),c.length===0?(delete n[e],Object.keys(n).length===0&&delete this.properties[D]):n[e]=c,(r==null?void 0:r.signal)!=null&&r.signal.removeEventListener("abort",o))};return(r==null?void 0:r.signal)!=null&&r.signal.addEventListener("abort",o),o});i(this,"addClasses",e=>{var r;if(e.length===0)return;const t=(r=this.properties)[S]??(r[S]=[]);e.forEach(n=>{t.includes(n)||t.push(n)})});i(this,"removeClasses",e=>{var r;if(e.length===0)return;const t=(r=this.properties)[S]??(r[S]=[]);e.forEach(n=>{const l=t.indexOf(n);l!==-1&&t.splice(l,1)}),t.length===0&&delete this.properties[S]});i(this,"getClasses",()=>this.properties[S]??[]);i(this,"getAttributes",()=>Object.entries(this.properties).filter(([e])=>!["innerText","innerHTML"].includes(e)));i(this,"getVisibleAttributes",()=>Reflect.ownKeys(this.properties).flatMap(e=>e===S?[["class",this.getClasses()]]:e===w?[["style",this.getStyles()]]:typeof e=="string"?[[e,String(this.properties[e])]]:[]));i(this,"setStyle",(e,t)=>{var n;const r=(n=this.properties)[w]??(n[w]={});r[e]=t,t===""&&(delete r[e],Object.keys(r).length===0&&delete this.properties[w])});i(this,"getStyle",e=>{var t;return((t=this.properties[w])==null?void 0:t[e])??""});i(this,"getStyles",()=>this.properties[w]??{});i(this,"makeAccessors",e=>{const t=this.properties;return{get:()=>t[e],set:r=>t[e]=r}});this.parent=e}}const Ot=s=>s.replace(/"/g,"""),vt=s=>s.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");class We extends Fe{constructor(t,r,n){super(n);i(this,"isPortal",()=>!1);i(this,"toHTML",(t=!1)=>{const r=this.children.map(c=>c.toHTML()).join(""),n=this.namespace?` xmlns="${this.namespace}"`:"";let l=null;const o=this.getVisibleAttributes().map(([c,u])=>c==="class"?` class="${u.join(" ")}"`:c==="style"?typeof u=="string"?` style="${u}"`:` style="${Object.entries(u).map(([h,m])=>`${h}: ${m};`).join(" ")}"`:Dt.has(c)?` ${c}`:c==="innerHTML"?(l=u,""):c==="innerText"?(l=vt(u),""):` ${c}="${Ot(u)}"`).join(""),a=t?` ${ie}`:"";return Lt.has(this.tagName)&&r===""?`<${this.tagName}${n}${o}${a} />`:`<${this.tagName}${n}${o}${a}>${l??r}</${this.tagName}>`});this.tagName=t,this.namespace=r}}class oe extends Fe{constructor(t,r){super(r);i(this,"isPortal",()=>!0);i(this,"toHTML",()=>"");i(this,"contentToHTML",(t=!1)=>this.children.map(r=>r.toHTML(t)).join(""));this.selector=t}}class Ue{constructor(e){i(this,"id",Be());i(this,"isElement",()=>!1);i(this,"isText",()=>!0);i(this,"getText",()=>this.text);i(this,"toHTML",()=>this.text);this.text=e}}class O{constructor(e,t,r,n){i(this,"appendOrInsert",e=>{if(this.reference!=null){const t=this.element.children.indexOf(this.reference);this.element.children.splice(t,0,e)}else this.element.children.push(e)});i(this,"makeChildElement",(e,t)=>{const r=new We(e,t,this.element);return this.appendOrInsert(r),new O(r,void 0,this.container,this.providers)});i(this,"makeChildText",e=>{const t=new Ue(e);return this.appendOrInsert(t),new O(this.element,t,this.container,this.providers)});i(this,"setText",e=>{this.reference&&this.reference.isText()&&(this.reference.text=e)});i(this,"getText",()=>{var e;return((e=this.reference)==null?void 0:e.getText())??this.element.getText()});i(this,"makeRef",()=>this.makeChildText(""));i(this,"makePortal",e=>{const t=new oe(e,this.element);return this.appendOrInsert(t),new O(t,void 0,this.container,this.providers)});i(this,"setProvider",(e,t,r)=>new O(this.element,this.reference,this.container,{...this.providers,[e]:[t,r]}));i(this,"getProvider",e=>{if(this.providers[e]===void 0)throw new ne(e);return this.providers[e]});i(this,"clear",e=>{e&&(this.reference!==void 0?this.element.removeChild(this.reference):this.element.remove())});i(this,"on",(e,t)=>this.element.on(e,t));i(this,"addClasses",e=>this.element.addClasses(e));i(this,"removeClasses",e=>this.element.removeClasses(e));i(this,"getClasses",()=>this.element.getClasses());i(this,"isBrowserDOM",()=>!1);i(this,"isBrowser",()=>!1);i(this,"isHeadlessDOM",()=>!0);i(this,"isHeadless",()=>!0);i(this,"setStyle",(e,t)=>this.element.setStyle(e,t));i(this,"getStyle",e=>this.element.getStyle(e));i(this,"makeAccessors",e=>this.element.makeAccessors(e));this.element=e,this.reference=t,this.container=r,this.providers=n}}const Dt=new Set(["checked","disabled","multiple","readonly","required","selected"]),Lt=new Set(["img","br","hr","input","link","meta"]),le=s=>e=>e.makeChildText(s).clear,ae=s=>e=>{const t=e.makeChildText(s.value),r=s.on(t.setText);return n=>{r(),t.clear(n)}},Mt=s=>d.is(s)?ae(s):le(s),b=(...s)=>e=>{const t=s.map(r=>f(r)(e));return r=>{t.forEach(n=>n(r))}},A=()=>()=>{},Ht=s=>e=>(e.addClasses(s),t=>{t&&e.removeClasses(s)}),Nt=s=>e=>{let t=[];const r=s.on(n=>{e.removeClasses(t),t=(n??"").split(" ").filter(l=>l.length>0),e.addClasses(t)});return n=>{r(),n&&e.removeClasses(t),t.length=0}},$=(s,e)=>t=>{const{get:r,set:n}=t.makeAccessors(s),l=r();return n(e),o=>{o&&n(l)}},R=(s,e)=>t=>{const{get:r,set:n}=t.makeAccessors(s),l=r(),o=e.on(n);return a=>{o(),a&&n(l)}},v=new Proxy({},{get:(s,e)=>e==="class"?t=>d.is(t)?Nt(t):Ht((t??"").split(" ").filter(r=>r.length>0)):t=>d.is(t)?R(e,t):$(e,t)}),kt=new Proxy({},{get:(s,e)=>t=>d.is(t)?R(`data-${e}`,t):$(`data-${e}`,t)}),It=new Proxy({},{get:(s,e)=>t=>d.is(t)?R(`aria-${e}`,t):$(`aria-${e}`,t)}),$t=new Proxy({},{get:(s,e)=>t=>d.is(t)?R(e,t):$(e,t)}),Rt=new Proxy({},{get:(s,e)=>t=>d.is(t)?R(e,t):$(e,t)}),f=s=>{if(s==null)return A;if(Array.isArray(s))return b(...s.map(f));if(typeof s=="string")return le(s);if(d.is(s))return ae(s);if(typeof s=="function")return s;throw new Error(`Unknown type: '${typeof s}' for child: ${s}`)},ce=(s,...e)=>t=>{const r=t.makeChildElement(s,void 0),n=e.map(l=>f(l)(r));return l=>{n.forEach(o=>o(!1)),r.clear(l)}},ue=(s,e,...t)=>r=>{const n=r.makeChildElement(s,e),l=t.map(o=>f(o)(n));return o=>{l.forEach(a=>a(!1)),n.clear(o)}},Vt=new Proxy({},{get:(s,e)=>(...t)=>ce(e,t.flatMap(f))}),jt=new Proxy({},{get:(s,e)=>(...t)=>ce("input",v.type(e),...t)}),qt="http://www.w3.org/2000/svg",Bt=new Proxy({},{get:(s,e)=>(...t)=>ue(e,qt,t.flatMap(f))}),Ft="http://www.w3.org/1998/Math/MathML",Wt=new Proxy({},{get:(s,e)=>(...t)=>ue(e,Ft,t.flatMap(f))}),he=(s,e)=>{if(typeof e=="function")return he(s,{then:e});const t=e.pending!=null?f(e.pending()):A,r=e.then,n=e.error!=null?l=>f(e.error(l)):()=>A;return l=>{let o=!0;const a=s(),c=l.makeRef();let u=f(t)(c);return a.then(h=>{o&&(u(!0),u=f(r(h))(c))},h=>{o&&(u(!0),u=f(n(h))(c))}),h=>{o=!1,u(h),c.clear(h)}}},Ut=(s,e)=>he(()=>s,e),Ge=(s,e,t)=>r=>r.on(s,e,t),Je=s=>Ge("click",e=>{e.preventDefault();const t=e.target;setTimeout(()=>{const r=t.ownerDocument!=null?t==null?void 0:t.checked:void 0;r!=null&&s(!r)},0)}),V=new Proxy({},{get:(s,e)=>t=>Ge(e,t)}),Xe=s=>e=>{const t=e.target;s(t.value)},Ye=s=>e=>{const t=e.target;s(t.valueAsNumber)},ze=s=>e=>{const t=e.target;if(t.value==="")return;const r=t.value.split("-"),n=new Date(Number(r[0]),Number(r[1])-1,Number(r[2].substring(0,2)));s(n)},Gt=s=>e=>{const t=e.target;if(t.value===""){s(null);return}const r=t.value.split("-"),n=new Date(Number(r[0]),Number(r[1])-1,Number(r[2].substring(0,2)));s(n)},Qe=s=>e=>{const t=e.target;if(t.value==="")return;const r=t.value.split("T"),n=r[0].split("-"),l=new Date(Number(n[0]),Number(n[1])-1,Number(n[2])),o=r[1].split(":");l.setHours(Number(o[0])),l.setMinutes(Number(o[1])),l.setSeconds(Number(o[2])),s(l)},Jt=s=>e=>{const t=e.target;if(t.value===""){s(null);return}const r=t.value.split("T");if(r.length!==2){s(null);return}const n=r[0].split("-"),l=new Date(Number(n[0]),Number(n[1])-1,Number(n[2])),o=r[1].split(":");l.setHours(Number(o[0]??0)),l.setMinutes(Number(o[1]??0)),l.setSeconds(Number(o[2]??0)),s(l)},Xt=s=>e=>{const t=e.target;s(t.checked)},Yt=s=>e=>{e.preventDefault(),s()},zt=s=>e=>{e.stopPropagation(),s()},Qt=s=>e=>{e.stopImmediatePropagation(),s()},Zt=(s,e="input")=>b(v.valueAsDate(s),V[e](ze(s.set))),Kt=(s,e="input")=>b(v.valueAsDate(s),V[e](Qe(s.set))),es=(s,e="input")=>b(v.valueAsNumber(s),V[e](Ye(s.set))),ts=(s,e="input")=>b(v.value(s),V[e](Xe(s.set))),ss=s=>b(v.checked(s),Je(s.set)),j=(s,e)=>{if(d.is(s))return r=>{const n=r.makeRef();let l,o;const a=s.map(h=>Object.keys(h)[0]);let c;const u=a.on(h=>{if(h!==c){c=h,o==null||o.dispose(),l==null||l(!0),o=s.map(T=>T[h]);const m=e[h](o);l=f(m)(n)}});return h=>{o==null||o.dispose(),u(),n.clear(h),l==null||l(h)}};const t=Object.keys(s)[0];return f(e[t](I(s[t])))},fe=(s,e,t)=>j(y.map(s,r=>({[r[e]]:r})),t),rs=(s,e)=>fe(s,"kind",e),ns=(s,e)=>{const t=y.map(s,([r,n])=>({[r]:n}));return j(t,e)},is=(s,e)=>fe(s,"type",e),Ze=(s,e)=>j(y.map(s,t=>({[t]:!0})),e),os=(s,e={})=>t=>{const r=(e==null?void 0:e.firstSeparator)??s,n=(e==null?void 0:e.lastSeparator)??s;return Ze(t.map(l=>l.isFirst?"first":l.isLast?"last":"other"),{first:r,last:n,other:s})},ls=s=>e=>(e.appendOrInsert(s),t=>{t&&N(s)}),Ke=(s,e,t)=>{if(d.is(s)){const r=s;return n=>{const l=n.makeRef();let o=()=>{},a=!1,c=null;const u=r.on(h=>{h==null?(o(!0),o=f((t==null?void 0:t())??A)(l),a=!1,c==null||c.dispose(),c=null):(c==null?c=_(h):c.value=h,a||(o(!0),o=f(e(c))(l),a=!0))});return h=>{c==null||c.dispose(),u(),o==null||o(h),l.clear(h)}}}else{const r=s;if(r==null){const n=t==null?void 0:t();return n!=null?f(n):A}return f(e(I(r)))}},as=(...s)=>(e,t)=>r=>{const n=r.makeRef();if(s.some(p=>!d.is(p)&&p==null))return(t!=null?f(t==null?void 0:t()):A)(n);const o=s.map(()=>null),a=s.map(p=>d.is(p)?p.value!=null:p!=null);let c=null;const u=_(a.every(p=>p)),h=(p,g)=>{if(p.value!=null){if(o[g]==null){const C=_(p.value);o[g]=C}else o[g].value=p.value;a[g]=!0}else a[g]=!1};let m=s.length-1;const T=s.map((p,g)=>{if(!d.is(p)){const C=_(p);return o[g]=C,()=>{}}return p.on(()=>{h(p,g),m===0?u.value=a.every(C=>C):m--})});return u.on(p=>{c==null||c(!0),c=null,p?c=f(e(...o))(n):c=f((t==null?void 0:t())??A)(n)}),p=>{o.forEach(g=>g==null?void 0:g.dispose()),u.dispose(),T.forEach(g=>g()),c==null||c(p),n.clear(p)}},Q=(...s)=>e=>t=>s.forEach(r=>r(t,e)),de=(s,e,t)=>Ke(y.map(s,r=>r?!0:null),e,t??void 0),cs=(s,e,t)=>de(y.map(s,r=>!r),e,t),pe=(s,e,t)=>t!=null?pe(s,r=>{const n=new F(r.index,r.total.map(l=>l-1));return b(Q(n.dispose),f(e(r)),de(r.isLast,()=>A,()=>t(n)))}):d.is(s)?r=>{const n=r.makeRef(),l=[],o=s.on(a=>{const c=l.splice(a);for(const u of c)u(!0);for(let u=l.length;u<a;u++){const h=new F(u,s);l.push(f(e(h))(n))}});return a=>{o();for(const c of l)c(a);l.length=0,n.clear(a)}}:b(...Array.from({length:s},(r,n)=>n).map(r=>f(e(new F(r,I(s)))))),us=(s,e,t)=>{const r=y.map(s,l=>l.length),n=y.toSignal(s);return pe(r,l=>{const o=n.map(a=>a[l.index]);return b(Q(o.dispose),f(e(o,l)))},t)},hs=(s,e)=>{if(d.is(s)){const t=s;return r=>{r=r.makeRef();const n=t.map(a=>f(e(a)));let l=()=>{};const o=n.on(a=>{l(!0),l=a(r)});return a=>{o(),l(a)}}}return f(e(s))},fs=(s,e,t=()=>A)=>j(y.map(s,r=>r.length>0?{notEmpty:r}:{whenEmpty:null}),{notEmpty:r=>e(r),whenEmpty:()=>t()}),ds=(s,e)=>t=>{const r=t.makePortal(s);return z(f(e),r)},B=new Map,et=s=>({mark:Ve(`Probe(${s.description})`),create:({callback:e=()=>{},timeout:t=10}={})=>{const r=a=>{clearTimeout(n),B.delete(s),e(a)};if(B.has(s))throw new Error(`Probe already exists: ${s.description}`);const n=setTimeout(()=>r("timeout"),t),l={counter:0,timeoutId:n};return B.set(s,l),{value:()=>{clearTimeout(n);const a=B.get(s);a!=null&&--a.counter===0&&r("resolved")},dispose:()=>r("disposed"),onUse:()=>l.counter++}}}),ps=et(Symbol("GlobalProbe")),ms=(s,e)=>t=>{const r=t.getStyle(s);return t.setStyle(s,e),n=>{n&&t.setStyle(s,r)}},gs=(s,e)=>t=>{const r=t.getStyle(s);return e.on(n=>t.setStyle(s,n)),n=>{n&&t.setStyle(s,r)}},ys=new Proxy({},{get:(s,e)=>t=>d.is(t)?gs(e,t):ms(e,t)}),tt=s=>e=>{if(e.isBrowser()){const t=s(e);if(t!=null)return f(t)(e)}return()=>{}},Ts=s=>e=>{const t=s(e);return t==null?()=>{}:f(t)(e)},bs=s=>tt(e=>s(e.element)),Ss=s=>e=>{if(e.isHeadlessDOM()){const t=s(e);if(t)return f(t)(e)}return()=>{}},Z=s=>e=>{let t=e;function r(){return t}function n(a){t=a}const l=[],o=s({use:({mark:a})=>{const[c,u]=r().getProvider(a);return u==null||u(),c},set:({mark:a,create:c},u)=>{const{value:h,dispose:m,onUse:T}=c(u,r());l.push(m),n(r().setProvider(a,h,T))}});return o==null?()=>{}:b(f(o),Q(()=>l.forEach(a=>a())))(r())},As=(s,e,t)=>Z(({set:r})=>(r(s,e),t())),Es=(s,e)=>Z(({use:t})=>e(t(s))),_s=(...s)=>e=>Z(({use:t})=>{const r=s.map(t);return e(...r)});exports.Async=Ut;exports.BindChecked=ss;exports.BindDate=Zt;exports.BindDateTime=Kt;exports.BindNumber=es;exports.BindText=ts;exports.BrowserContext=x;exports.CLASS_PLACEHOLDER_ATTR=k;exports.Computed=P;exports.Conjunction=os;exports.DOMNode=ls;exports.El=ce;exports.ElNS=ue;exports.ElementPosition=F;exports.Empty=A;exports.Ensure=Ke;exports.EnsureAll=as;exports.ForEach=us;exports.Fragment=b;exports.GlobalProbe=ps;exports.HeadlessAdapter=pt;exports.HeadlessContext=O;exports.HeadlessElement=We;exports.HeadlessPortal=oe;exports.HeadlessText=Ue;exports.MapSignal=hs;exports.MemoryStore=te;exports.NotEmpty=fs;exports.OnChecked=Je;exports.OnDispose=Q;exports.OneOf=j;exports.OneOfField=fe;exports.OneOfKind=rs;exports.OneOfTuple=ns;exports.OneOfType=is;exports.OneOfValue=Ze;exports.Portal=ds;exports.Prop=H;exports.Provide=As;exports.ProviderNotFoundError=ne;exports.RenderingError=je;exports.Repeat=pe;exports.Signal=d;exports.Task=he;exports.TextNode=Mt;exports.Unless=cs;exports.Use=Es;exports.UseMany=_s;exports.Value=y;exports.When=de;exports.WithBrowserCtx=tt;exports.WithCtx=Ts;exports.WithElement=bs;exports.WithHeadlessCtx=Ss;exports.WithProvider=Z;exports._NODE_PLACEHOLDER_ATTR=ie;exports._getSelfOrParentElement=Re;exports._isElement=re;exports._makeGetter=$e;exports._makeSetter=Ie;exports._removeDOMNode=N;exports._signalText=ae;exports._staticText=le;exports.animateSignal=ut;exports.animateSignals=De;exports.aria=It;exports.attr=v;exports.computed=Y;exports.computedOf=ve;exports.computedRecord=ht;exports.dataAttr=kt;exports.effect=Oe;exports.effectOf=lt;exports.emitChecked=Xt;exports.emitPreventDefault=Yt;exports.emitStopImmediatePropagation=Qt;exports.emitStopPropagation=zt;exports.emitValue=Xe;exports.emitValueAsDate=ze;exports.emitValueAsDateTime=Qe;exports.emitValueAsNullableDate=Gt;exports.emitValueAsNullableDateTime=Jt;exports.emitValueAsNumber=Ye;exports.endInterpolate=Pe;exports.getWindow=ee;exports.guessInterpolate=xe;exports.html=Vt;exports.input=jt;exports.interpolateDate=Ce;exports.interpolateNumber=_e;exports.interpolateString=we;exports.joinSignals=ot;exports.localStorageProp=at;exports.makeProbe=et;exports.makeProviderMark=Ve;exports.math=Wt;exports.mathAttr=Rt;exports.on=V;exports.prop=_;exports.render=ft;exports.renderWithContext=z;exports.renderableOfTNode=f;exports.restoreTempoPlaceholders=Pt;exports.runHeadless=dt;exports.sessionStorageProp=ct;exports.signal=I;exports.storedProp=se;exports.style=ys;exports.svg=Bt;exports.svgAttr=$t;
|