xote 6.0.0 → 6.1.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 +34 -192
- package/dist/xote.cjs +9 -9
- package/dist/xote.mjs +361 -351
- package/dist/xote.umd.js +8 -8
- package/package.json +12 -1
- package/src/Hydration.res +0 -1
- package/src/Node.res +11 -2
- package/src/Node.res.mjs +5 -0
- package/src/ReactiveProp.res +0 -1
- package/src/Router.res +7 -1
- package/src/SSR.res +6 -3
- package/src/SSR.res.mjs +5 -0
- package/src/SSRState.res +0 -1
- package/src/XoteJSX.res +93 -2
- package/src/XoteJSX.res.mjs +15 -0
package/README.md
CHANGED
|
@@ -1,19 +1,9 @@
|
|
|
1
|
-
# xote
|
|
1
|
+
# [Xote](https://brnrdog.github.io/xote/)
|
|
2
2
|

|
|
3
|
-

|
|
4
|
+

|
|
5
5
|
|
|
6
|
-
Xote is a lightweight
|
|
7
|
-
|
|
8
|
-
## Features
|
|
9
|
-
|
|
10
|
-
- **Reactive Components**: Declarative UI building with JSX support and direct DOM updates
|
|
11
|
-
- **Signal-based Reactivity**: Powered by [rescript-signals](https://brnrdog.github.io/rescript-signals) for automatic dependency tracking
|
|
12
|
-
- **Fine-grained Updates**: Direct DOM manipulation without virtual DOM diffing
|
|
13
|
-
- **Signal-based Router**: SPA navigation with pattern matching and dynamic parameters
|
|
14
|
-
- **Server-Side Rendering**: SSR with hydration and automatic state transfer
|
|
15
|
-
- **Lightweight**: Minimal runtime footprint
|
|
16
|
-
- **Type-safe**: Full ReScript type safety throughout
|
|
6
|
+
Xote is a lightweight [ReScript](https://rescript-lang.org/) library that combines fine-grained reactivity and a declarative component system for building user interfaces for the web.
|
|
17
7
|
|
|
18
8
|
## Getting Started
|
|
19
9
|
|
|
@@ -21,10 +11,6 @@ Xote is a lightweight UI library for ReScript that combines fine-grained reactiv
|
|
|
21
11
|
|
|
22
12
|
```bash
|
|
23
13
|
npm install xote
|
|
24
|
-
# or
|
|
25
|
-
yarn add xote
|
|
26
|
-
# or
|
|
27
|
-
pnpm add xote
|
|
28
14
|
```
|
|
29
15
|
|
|
30
16
|
Then, add it to your ReScript project's `rescript.json`. You'll need to declare `xote` as a dependency, configure JSX to use Xote's transform, and open `Xote` so the JSX module resolves:
|
|
@@ -40,42 +26,39 @@ Then, add it to your ReScript project's `rescript.json`. You'll need to declare
|
|
|
40
26
|
}
|
|
41
27
|
```
|
|
42
28
|
|
|
43
|
-
`-open Xote` makes
|
|
44
|
-
|
|
45
|
-
## Why Xote?
|
|
46
|
-
|
|
47
|
-
Xote uses **rescript-signals** for reactive primitives (Signal, Computed, Effect), and it adds:
|
|
48
|
-
|
|
49
|
-
- **Component System**: A minimal but powerful component model with JSX support for declarative UI
|
|
50
|
-
- **Direct DOM Updates**: Fine-grained reactivity that updates DOM elements directly, no virtual DOM
|
|
51
|
-
- **Signal-based Router**: Client-side routing with pattern matching and reactive location state
|
|
52
|
-
- **Reactive Attributes**: Support for static, signal-based, and computed attributes on elements
|
|
53
|
-
- **Automatic Cleanup**: Effect disposal and memory management built into the component lifecycle
|
|
54
|
-
|
|
55
|
-
Xote focuses on clarity, control, and performance. The goal is to offer precise, fine-grained updates and predictable behavior with minimal abstractions, while leveraging the robust type system from ReScript.
|
|
29
|
+
Optional: the `-open Xote` flag makes Xote modules available unqualified inside your source files.
|
|
56
30
|
|
|
57
31
|
### Quick Example
|
|
58
32
|
|
|
59
|
-
#### Using JSX
|
|
60
|
-
|
|
61
33
|
```rescript
|
|
62
34
|
open Xote
|
|
63
35
|
|
|
64
36
|
module App = {
|
|
37
|
+
@jsx.component
|
|
65
38
|
let make = () => {
|
|
66
39
|
// Create reactive state
|
|
67
40
|
let count = Signal.make(0)
|
|
68
41
|
|
|
69
|
-
//
|
|
70
|
-
let
|
|
42
|
+
// Create a derived state
|
|
43
|
+
let doubled = Computed.make(() => Signal.get(count) * 2)
|
|
44
|
+
|
|
45
|
+
// Logs every time count changes:
|
|
46
|
+
Effect.run(() => {
|
|
47
|
+
Console.log2("Count is ", Signal.get(count))
|
|
48
|
+
|
|
49
|
+
None
|
|
50
|
+
})
|
|
71
51
|
|
|
72
52
|
// Build the UI with JSX
|
|
73
53
|
<div>
|
|
74
54
|
<h1> {Node.text("Counter")} </h1>
|
|
75
55
|
<p>
|
|
76
|
-
{Node.signalText(() =>
|
|
56
|
+
{Node.signalText(() => "Count: " ++ Signal.get(count)->Int.toString)}
|
|
77
57
|
</p>
|
|
78
|
-
<
|
|
58
|
+
<p>
|
|
59
|
+
{Node.signalText(() => Signal.get(doubled)->Int.toString)}
|
|
60
|
+
</p>
|
|
61
|
+
<button onClick={(_evt: Dom.event) => Signal.update(count, n => n + 1)}>
|
|
79
62
|
{Node.text("Increment")}
|
|
80
63
|
</button>
|
|
81
64
|
</div>
|
|
@@ -88,170 +71,29 @@ Node.mountById(<App />, "app")
|
|
|
88
71
|
|
|
89
72
|
## Core Concepts
|
|
90
73
|
|
|
91
|
-
|
|
74
|
+
Xote focuses on clarity, control, and performance. The goal is to offer precise, fine-grained updates and predictable behavior with a minimal set of abstractions, while leveraging the robust type system from ReScript.
|
|
75
|
+
|
|
76
|
+
### Reactive Primitives
|
|
77
|
+
|
|
78
|
+
Xote uses **[rescript-signals](https://github.com/brnrdog/rescript-signals)** for its reactive primitives:
|
|
92
79
|
|
|
93
80
|
- **Signal**: Reactive state container - `Signal.make(value)`
|
|
94
81
|
- **Computed**: Derived reactive value that updates automatically - `Computed.make(() => ...)`
|
|
95
82
|
- **Effect**: Side-effect functions that re-run when dependencies change - `Effect.run(() => ...)`
|
|
96
83
|
|
|
97
|
-
All reactive primitives feature automatic dependency tracking
|
|
98
|
-
|
|
99
|
-
### Xote Features
|
|
100
|
-
|
|
101
|
-
- **Component**: Declarative UI builder with JSX syntax and function-based APIs
|
|
102
|
-
- **Router**: Signal-based navigation for SPAs with pattern matching and dynamic routes
|
|
103
|
-
|
|
104
|
-
### Component Features
|
|
105
|
-
|
|
106
|
-
- **JSX syntax**: Use HTML tags like `<div>`, `<button>`, `<input>`
|
|
107
|
-
- **Props**: Standard HTML attributes like `class`, `id`, `style`, `value`, `placeholder`
|
|
108
|
-
- **Event handlers**: `onClick`, `onInput`, `onChange`, `onSubmit`, etc.
|
|
109
|
-
- **Reactive content**: Wrap reactive text with `Node.signalText(() => ...)` (also `signalInt` and `signalFloat` for non-string values)
|
|
110
|
-
- **HTML helpers**: `Html.div`, `Html.button`, `Html.p`, etc. for the function-based API; JSX covers the rest
|
|
111
|
-
- **Component functions**: Define reusable components as functions that return JSX
|
|
112
|
-
|
|
113
|
-
### Xote.Router Features
|
|
114
|
-
|
|
115
|
-
- **Initialization**: Call `Router.init()` once at app start
|
|
116
|
-
- **Imperative navigation**: Use `Router.push()` and `Router.replace()` to navigate programmatically
|
|
117
|
-
- **Declarative routing**: Define routes with `Router.routes()` and render components based on URL patterns
|
|
118
|
-
- **Dynamic parameters**: Extract URL parameters using `:param` syntax (e.g., `/users/:id`)
|
|
119
|
-
- **Navigation links**: Use `Router.link()` for SPA navigation without page reload
|
|
120
|
-
- **Reactive location**: Access current route via `Router.location` signal
|
|
121
|
-
|
|
122
|
-
## Server-Side Rendering (SSR)
|
|
123
|
-
|
|
124
|
-
Xote supports server-side rendering with hydration. The same component code runs on both server and client, with the server rendering HTML and the client attaching reactivity to the existing DOM.
|
|
125
|
-
|
|
126
|
-
### Basic SSR Setup
|
|
127
|
-
|
|
128
|
-
**Shared component** (`App.res`):
|
|
129
|
-
```rescript
|
|
130
|
-
open Xote
|
|
131
|
-
|
|
132
|
-
let makeAppState = () => {
|
|
133
|
-
// SSRState.make creates a signal that syncs between server and client
|
|
134
|
-
let count = SSRState.make("count", 0, SSRState.Codec.int)
|
|
135
|
-
let items = SSRState.make("items", ["Apple", "Banana"], SSRState.Codec.array(SSRState.Codec.string))
|
|
136
|
-
(count, items)
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
let app = (count, items) => () => {
|
|
140
|
-
<div>
|
|
141
|
-
<p> {Node.signalText(() => `Count: ${Signal.get(count)->Int.toString}`)} </p>
|
|
142
|
-
<button onClick={_ => Signal.update(count, n => n + 1)}>
|
|
143
|
-
{Node.text("+")}
|
|
144
|
-
</button>
|
|
145
|
-
</div>
|
|
146
|
-
}
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
**Server entry** (`server.res`):
|
|
150
|
-
```rescript
|
|
151
|
-
open Xote
|
|
152
|
-
|
|
153
|
-
let (count, items) = App.makeAppState()
|
|
154
|
-
let appComponent = App.app(count, items)
|
|
155
|
-
|
|
156
|
-
let html = SSR.renderDocument(
|
|
157
|
-
~head="<title>My App</title>",
|
|
158
|
-
~scripts=["./client.res.mjs"],
|
|
159
|
-
~stateScript=SSRState.generateScript(),
|
|
160
|
-
appComponent,
|
|
161
|
-
)
|
|
162
|
-
|
|
163
|
-
Console.log(html)
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
**Client entry** (`client.res`):
|
|
167
|
-
```rescript
|
|
168
|
-
open Xote
|
|
169
|
-
|
|
170
|
-
let (count, items) = App.makeAppState()
|
|
171
|
-
let appComponent = App.app(count, items)
|
|
172
|
-
|
|
173
|
-
Hydration.hydrateById(appComponent, "root")
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
### Running the SSR Example
|
|
177
|
-
|
|
178
|
-
```bash
|
|
179
|
-
# Generate HTML
|
|
180
|
-
node server.res.mjs > index.html
|
|
181
|
-
|
|
182
|
-
# Serve with Vite (or any static server)
|
|
183
|
-
npx vite
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
### SSR Features
|
|
187
|
-
|
|
188
|
-
- **`SSR.renderToString`**: Render component to HTML string
|
|
189
|
-
- **`SSR.renderDocument`**: Render full HTML document with head, scripts, styles
|
|
190
|
-
- **`SSRState.make`**: Create signals that automatically sync between server and client
|
|
191
|
-
- **`SSRState.generateScript`**: Generate `<script>` tag with serialized state
|
|
192
|
-
- **`Hydration.hydrate`**: Attach reactivity to server-rendered DOM
|
|
193
|
-
- **`SSRContext.isServer` / `isClient`**: Environment detection for conditional logic
|
|
194
|
-
|
|
195
|
-
### Built-in Codecs for State Serialization
|
|
196
|
-
|
|
197
|
-
```rescript
|
|
198
|
-
SSRState.Codec.int
|
|
199
|
-
SSRState.Codec.float
|
|
200
|
-
SSRState.Codec.string
|
|
201
|
-
SSRState.Codec.bool
|
|
202
|
-
SSRState.Codec.array(itemCodec)
|
|
203
|
-
SSRState.Codec.option(itemCodec)
|
|
204
|
-
SSRState.Codec.dict(valueCodec)
|
|
205
|
-
SSRState.Codec.tuple2(codec1, codec2)
|
|
206
|
-
SSRState.Codec.tuple3(codec1, codec2, codec3)
|
|
207
|
-
SSRState.Codec.make(~encode, ~decode) // Custom codec
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
## Examples
|
|
211
|
-
|
|
212
|
-
Check some examples of applications built with Xote at https://brnrdog.github.io/xote/demos/.
|
|
213
|
-
|
|
214
|
-
### Running Examples Locally
|
|
84
|
+
All reactive primitives feature automatic dependency tracking. No manual subscriptions needed.
|
|
215
85
|
|
|
216
|
-
|
|
86
|
+
### Component System
|
|
217
87
|
|
|
218
|
-
|
|
219
|
-
```bash
|
|
220
|
-
git clone https://github.com/brnrdog/xote.git
|
|
221
|
-
cd xote
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
2. Install dependencies:
|
|
225
|
-
```bash
|
|
226
|
-
npm install
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
3. Compile ReScript and start the dev server:
|
|
230
|
-
```bash
|
|
231
|
-
npm run res:dev # In one terminal (watches ReScript files)
|
|
232
|
-
npm run dev # In another terminal (starts Vite dev server)
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
4. Open your browser and navigate to `http://localhost:5173`
|
|
236
|
-
|
|
237
|
-
The demo app includes a navigation menu to explore all examples interactively.
|
|
88
|
+
On top of the reactive primitives with signals, Xote provides a declarative component system:
|
|
238
89
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
**
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
### Building Documentation Locally
|
|
247
|
-
|
|
248
|
-
To build and preview the documentation site:
|
|
249
|
-
|
|
250
|
-
```bash
|
|
251
|
-
npm run docs:start
|
|
252
|
-
```
|
|
90
|
+
- **JSX Support**: Build user interface using JSX, in a declarative and familiar manner
|
|
91
|
+
- **Reactive DOM Nodes**: Fine-grained reactivity that updates DOM nodes directly, no virtual DOM required
|
|
92
|
+
- **Built-in Router**: Client-side routing with pattern matching and reactive location state
|
|
93
|
+
- **Automatic Cleanup**: Effect disposal and memory management built into the component lifecycle
|
|
94
|
+
- **Server-side Rendering**: pre-render your pages on the server with full hydration
|
|
253
95
|
|
|
254
|
-
|
|
96
|
+
Check the [website](https://brnrdog.github.io/xote/) for more comprehensive documentations about Xote and Signals.
|
|
255
97
|
|
|
256
98
|
## License
|
|
257
99
|
|
package/dist/xote.cjs
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});let We={contents:0};function Re(){return We.contents=We.contents+1|0,We.contents}function St(){return{first:void 0,last:void 0,version:0,compute:void 0,firstDep:void 0,lastDep:void 0,flags:0,level:0}}function xn(e){return{first:void 0,last:void 0,version:0,compute:e,firstDep:void 0,lastDep:void 0,flags:1,level:0}}function $n(e,t,n,r,l){return{id:e,kind:t,run:n,firstDep:void 0,lastDep:void 0,flags:1,level:0,name:r,backingSubs:l}}function _t(e){e.flags=e.flags&-2}function An(e){return(e.flags&2)!==0}function kn(e){e.flags=e.flags|2}function On(e){e.flags=e.flags&-3}function bt(e){return(e.flags&1)!==0}function Dn(e){e.flags=e.flags|1}function Xe(e){e.flags=e.flags&-2}function Cn(e){e.flags=e.flags&-3}function Ge(e){return e.compute!==void 0}function st(e,t){return{subs:e,observer:t,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0}}function Pe(e,t){t.prevSub=e.last,t.nextSub=void 0;let n=e.last;n!==void 0?n.nextSub=t:e.first=t,e.last=t}function ft(e,t){t.prevDep=e.lastDep,t.nextDep=void 0;let n=e.lastDep;n!==void 0?n.nextDep=t:e.firstDep=t,e.lastDep=t}function Et(e){let t=e.subs,n=e.prevSub;n!==void 0?n.nextSub=e.nextSub:t.first=e.nextSub;let r=e.nextSub;r!==void 0?r.prevSub=e.prevSub:t.last=e.prevSub,e.prevSub=void 0,e.nextSub=void 0}function wt(e){let t=e.firstDep;for(;t!==void 0;){let n=t;if(n!==void 0){let r=n.nextDep;Et(n),t=r}}e.firstDep=void 0,e.lastDep=void 0}function qe(e){let t=e.firstDep;for(;t!==void 0;){let n=t;if(n!==void 0){let r=n.nextDep;Et(n),t=r}}e.firstDep=void 0,e.lastDep=void 0}function ht(e,t){t.prevDep=e.lastDep,t.nextDep=void 0;let n=e.lastDep;n!==void 0?n.nextDep=t:e.firstDep=t,e.lastDep=t}let D={contents:void 0},z={contents:void 0},ee=[],ue=[],re={contents:!1},De=[],mt=(function(e){e.length=0});function jn(e){if(!An(e)){kn(e),ee.push(e);return}}function Pn(e,t){if(e.firstDep===void 0){let i={subs:t,observer:e,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0};return ht(e,i),Pe(t,i)}let n=!1,r=e.firstDep;for(;r!==void 0&&!n;){let i=r;i!==void 0&&(i.subs===t?n=!0:r=i.nextDep)}if(n)return;let l={subs:t,observer:e,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0};ht(e,l),Pe(t,l)}function Mn(e,t){if(e.firstDep===void 0){let i=st(t,e);return ft(e,i),Pe(t,i)}let n=!1,r=e.firstDep;for(;r!==void 0&&!n;){let i=r;i!==void 0&&(i.subs===t?n=!0:r=i.nextDep)}if(n)return;let l=st(t,e);ft(e,l),Pe(t,l)}function Rn(e){let t=D.contents;if(t!==void 0)return Pn(t,e);let n=z.contents;if(n!==void 0)return Mn(n,e)}function Gn(e,t){return e.level-t.level|0}function Ln(e,t){return e.level-t.level|0}function Tt(e){let t=0,n=e.firstDep;for(;n!==void 0;){let r=n;r!==void 0&&(Ge(r.subs)&&r.subs.level>t&&(t=r.subs.level),n=r.nextDep)}return t+1|0}function vt(e){let t=0,n=e.firstDep;for(;n!==void 0;){let r=n;r!==void 0&&(Ge(r.subs)&&r.subs.level>t&&(t=r.subs.level),n=r.nextDep)}return t+1|0}function Fn(e){let t=e.level;qe(e),Cn(e);let n=D.contents;D.contents=e;try{let r=e.compute;r!==void 0&&r(),Xe(e),D.contents=n}catch(r){throw D.contents=n,r}if(t===0){e.level=Tt(e);return}}function Nn(e){let t=e.level;wt(e),On(e);let n=z.contents;z.contents=e;try{e.run(),_t(e),z.contents=n}catch(r){throw z.contents=n,r}if(t===0){e.level=vt(e);return}}function xt(){re.contents=!0;try{for(;ee.length!==0||ue.length!==0;){if(ue.length!==0){ue.sort(Ln);let e=ue.slice();mt(ue),e.forEach(Fn)}if(ee.length!==0){ee.sort(Gn);let e=ee.slice();mt(ee),e.forEach(Nn)}}re.contents=!1;return}catch(e){throw re.contents=!1,e}}function zn(e){for(De.push(e);De.length!==0;){let t=De.pop();if(t!==void 0){let n=t.first;for(;n!==void 0;){let r=n;if(r!==void 0){let l=r.observer;Ge(l)?bt(l)||(Dn(l),De.push(l)):jn(r.observer),n=r.nextSub}}}}if((ee.length!==0||ue.length!==0)&&!re.contents)return xt()}function $t(e){if(!(Ge(e)&&bt(e)))return;let t=e.level;qe(e);let n=D.contents;D.contents=e;try{let r=e.compute;r!==void 0&&r(),Xe(e),D.contents=n}catch(r){throw D.contents=n,r}if(t===0){e.level=Tt(e);return}}function Bn(e){let t=re.contents;re.contents=!0;try{let n=e();return t||(re.contents=!1,(ee.length!==0||ue.length!==0)&&xt()),n}catch(n){throw t||(re.contents=!1),n}}function In(e){let t=D.contents,n=z.contents;D.contents=void 0,z.contents=void 0;try{let r=e();return D.contents=t,z.contents=n,r}catch(r){throw D.contents=t,z.contents=n,r}}function At(e,t){let n=Re(),r={contents:void 0},i=$n(n,"Effect",()=>{let y=r.contents;y!==void 0&&y(),r.contents=e()},t,void 0),u=z.contents;z.contents=i;try{i.run(),_t(i),z.contents=u}catch(y){throw z.contents=u,y}i.level=vt(i);let o={contents:!1};return{dispose:()=>{if(o.contents)return;o.contents=!0;let y=r.contents;y!==void 0&&y(),wt(i)}}}function Wn(e,t){At(e,t)}let G=At,Kn=Wn;const Vn=Object.freeze(Object.defineProperty({__proto__:null,run:Kn,runWithDisposer:G},Symbol.toStringTag,{value:"Module"}));function oe(e){return e===void 0?{BS_PRIVATE_NESTED_SOME_NONE:0}:e!==null&&e.BS_PRIVATE_NESTED_SOME_NONE!==void 0?{BS_PRIVATE_NESTED_SOME_NONE:e.BS_PRIVATE_NESTED_SOME_NONE+1|0}:e}function Ue(e){if(e!=null)return oe(e)}function h(e){if(e===null||e.BS_PRIVATE_NESTED_SOME_NONE===void 0)return e;let t=e.BS_PRIVATE_NESTED_SOME_NONE;if(t!==0)return{BS_PRIVATE_NESTED_SOME_NONE:t-1|0}}function Hn(e,t){if(e!==void 0)return oe(t(h(e)))}function J(e,t){return e!==void 0?h(e):t}function Ye(e){return e!==void 0}function Xn(e,t,n){return{id:Re(),value:e,equals:J(n,(l,i)=>l===i),name:t,subs:St()}}function qn(e,t){return{id:Re(),value:e,equals:(r,l)=>!1,name:t,subs:St()}}function Un(e){return $t(e.subs),Rn(e.subs),e.value}function Yn(e){return $t(e.subs),e.value}function kt(e,t){let n;try{n=!e.equals(e.value,t)}catch{n=!0}if(n)return e.value=t,e.subs.version=e.subs.version+1|0,zn(e.subs)}function Jn(e,t){kt(e,t(e.value))}let Qn=Bn,Zn=In,Je=Xn,er=qn,A=Un,V=Yn,de=kt,tr=Jn,nr=Qn,rr=Zn;const ir=Object.freeze(Object.defineProperty({__proto__:null,batch:nr,get:A,make:Je,makeForComputed:er,peek:V,set:de,untrack:rr,update:tr},Symbol.toStringTag,{value:"Module"}));function Qe(e,t){delete e[t]}function lr(e,t){let n=Re(),r={contents:void 0},i=xn(()=>{r.contents.value=e()}),u=D.contents;D.contents=i;let o=e();D.contents=u;let a={id:n,value:o,equals:(y,O)=>!1,name:t,subs:i};return r.contents=a,Xe(i),a}function ur(e){qe(e.subs)}let Q=lr,Ot=ur;const or=Object.freeze(Object.defineProperty({__proto__:null,dispose:Ot,make:Q},Symbol.toStringTag,{value:"Module"}));let Dt="http://www.w3.org/2000/svg",Ct=["svg","path","circle","ellipse","line","polygon","polyline","rect","g","defs","clipPath","mask","pattern","marker","symbol","use","text","tspan","image","foreignObject","linearGradient","radialGradient","stop","filter","feBlend","feColorMatrix","feComposite","feFlood","feGaussianBlur","feMerge","feMergeNode","feOffset","animate","animateTransform","desc","title","metadata"],Le={};Ct.forEach(e=>{Le[e]=!0});function dr(e){return Ye(Le[e])}function be(e,t,n){switch(t){case"checked":e.checked=n==="true";return;case"disabled":e.disabled=n==="true";return;case"aria-expanded":case"aria-hidden":case"aria-selected":case"multiple":case"readonly":case"required":break;case"value":e.value=n;return;default:e.setAttribute(t,n);return}n==="true"?e.setAttribute(t,""):e.removeAttribute(t)}let we={setAttrOrProp:be},Ce={contents:void 0};function ar(){return{disposers:[],computeds:[]}}function me(e,t){let n=Ce.contents;Ce.contents=e;let r=t();return Ce.contents=n,r}function pe(e,t){e.disposers.push(t)}function jt(e){e.disposers.forEach(t=>t.dispose()),e.computeds.forEach(Ot)}function ge(e,t){e.__xote_owner__=t}function Pt(e){return Ue(e.__xote_owner__)}let c={currentOwner:Ce,createOwner:ar,runWithOwner:me,addDisposer:pe,disposeOwner:jt,setOwner:ge,getOwner:Pt};function Mt(e,t){return[e,{TAG:"Static",_0:t}]}function Rt(e,t){return[e,{TAG:"SignalValue",_0:t}]}function Gt(e,t){return[e,{TAG:"Compute",_0:t}]}let cr={$$static:Mt,signal:Rt,computed:Gt};function Ee(e){let t=Pt(e);t!==void 0&&jt(t),Array.from(e.childNodes||[]).forEach(Ee)}function Y(e){switch(e.TAG){case"Element":let t=e.children,n=e.events,r=e.attrs,l=e.tag,i=Ye(Le[l])?document.createElementNS(Dt,l):document.createElement(l),u={disposers:[],computeds:[]};return ge(i,u),me(u,()=>{r.forEach(d=>{let m=d[1],x=d[0];switch(m.TAG){case"Static":return be(i,x,m._0);case"SignalValue":let k=m._0;be(i,x,V(k));let M=G(()=>{be(i,x,A(k))},void 0);return pe(u,M);case"Compute":let p=m._0,S=G(()=>{be(i,x,p())},void 0);return pe(u,S)}}),n.forEach(d=>{i.addEventListener(d[0],d[1])}),t.forEach(d=>{let m=Y(d);i.appendChild(m)})}),i;case"Text":return document.createTextNode(e._0);case"SignalText":let o=e._0,a=document.createTextNode(V(o)),y={disposers:[],computeds:[]};return ge(a,y),me(y,()=>{let d=G(()=>{a.textContent=A(o)},void 0);pe(y,d)}),a;case"Fragment":let O=document.createDocumentFragment();return e._0.forEach(d=>{let m=Y(d);O.appendChild(m)}),O;case"SignalFragment":let L=e._0,F={disposers:[],computeds:[]},C=document.createElement("div");return C.setAttribute("style","display: contents"),ge(C,F),me(F,()=>{let d=G(()=>{let m=A(L);Array.from(C.childNodes||[]).forEach(Ee),C.innerHTML="",m.forEach(k=>{let M=Y(k);C.appendChild(M)})},void 0);pe(F,d)}),C;case"LazyComponent":let $={disposers:[],computeds:[]},H=me($,e._0),I=Y(H);return ge(I,$),I;case"KeyedList":let W=e.renderItem,j=e.keyFn,X=e.signal,fe={disposers:[],computeds:[]},v=document.createComment(" keyed-list-start "),_=document.createComment(" keyed-list-end ");ge(v,fe);let s={},b=()=>{let d=_.parentNode;if(d==null)return;let m=A(X),x={};m.forEach(g=>{x[j(g)]=g});let k=[];Object.keys(s).forEach(g=>{if(x[g]===void 0){k.push(g);return}}),k.forEach(g=>{let T=s[g];if(T!==void 0){Ee(T.element),T.element.remove(),Qe(s,g);return}});let M=[],p={};m.forEach(g=>{let T=j(g),he=s[T];if(he!==void 0){if(he.item!==g){p[T]=!0;let Oe=W(g),vn=Y(Oe),ct={key:T,item:g,element:vn};M.push(ct),s[T]=ct;return}M.push(he);return}let Ae=W(g),Ie=Y(Ae),ke={key:T,item:g,element:Ie};M.push(ke),s[T]=ke});let S={contents:v.nextSibling};M.forEach(g=>{let T=S.contents;if(T==null){d.insertBefore(g.element,_);return}if(T===_){d.insertBefore(g.element,_);return}if(T===g.element){S.contents=T.nextSibling;return}J(p[g.key],!1)?(Ee(T),d.replaceChild(g.element,T),S.contents=g.element.nextSibling):(d.insertBefore(g.element,T),S.contents=g.element.nextSibling)})},w=document.createDocumentFragment();return w.appendChild(v),V(X).forEach(d=>{let m=j(d),x=W(d),k=Y(x),M={key:m,item:d,element:k};s[m]=M,w.appendChild(k)}),w.appendChild(_),me(fe,()=>{let d=G(()=>{b()},void 0);pe(fe,d)}),w}}let te={disposeElement:Ee,render:Y};function Lt(e){return{TAG:"Text",_0:e}}function sr(e){return{TAG:"SignalText",_0:Q(e,void 0)}}function fr(e){return{TAG:"SignalText",_0:Q(()=>e().toString(),void 0)}}function hr(e){return{TAG:"SignalText",_0:Q(()=>e().toString(),void 0)}}function mr(e){return{TAG:"Text",_0:e.toString()}}function pr(e){return{TAG:"Text",_0:e.toString()}}function Ze(e){return{TAG:"Fragment",_0:e}}function et(e){return{TAG:"SignalFragment",_0:e}}function gr(e,t){return{TAG:"SignalFragment",_0:Q(()=>A(e).map(t),void 0)}}function yr(e,t,n){return{TAG:"KeyedList",signal:e,keyFn:t,renderItem:n}}function K(e,t,n,r,l){let i=t!==void 0?t:[].map(a=>a),u=n!==void 0?n:[].map(a=>a),o=r!==void 0?r:[].map(a=>a);return{TAG:"Element",tag:e,attrs:i,events:u,children:o}}function Sr(){return{TAG:"Text",_0:""}}function Ft(e,t){let n=Y(e);t.appendChild(n)}function _r(e,t){let n=document.getElementById(t);if(n==null){console.error("Container element not found: "+t);return}else return Ft(e,n)}let br=Le,q=Mt,ae=Rt,Fe=Gt;const Er=Object.freeze(Object.defineProperty({__proto__:null,$$null:Sr,Attributes:cr,DOM:we,Reactivity:c,Render:te,attr:q,computedAttr:Fe,element:K,float:pr,fragment:Ze,int:mr,isSvgTag:dr,keyedList:yr,list:gr,mount:Ft,mountById:_r,signalAttr:ae,signalFloat:hr,signalFragment:et,signalInt:fr,signalText:sr,svgNamespace:Dt,svgTagSet:br,svgTags:Ct,text:Lt},Symbol.toStringTag,{value:"Module"}));function wr(e,t,n,r){return K("div",e,t,n)}function Tr(e,t,n,r){return K("span",e,t,n)}function vr(e,t,n,r){return K("button",e,t,n)}function xr(e,t,n){return K("input",e,t,void 0)}function $r(e,t,n,r){return K("h1",e,t,n)}function Ar(e,t,n,r){return K("h2",e,t,n)}function kr(e,t,n,r){return K("h3",e,t,n)}function Or(e,t,n,r){return K("p",e,t,n)}function Dr(e,t,n,r){return K("ul",e,t,n)}function Cr(e,t,n,r){return K("li",e,t,n)}function tt(e,t,n,r){return K("a",e,t,n)}const jr=Object.freeze(Object.defineProperty({__proto__:null,a:tt,button:vr,div:wr,h1:$r,h2:Ar,h3:kr,input:xr,li:Cr,p:Or,span:Tr,ul:Dr},Symbol.toStringTag,{value:"Module"}));function Nt(e,t){return{TAG:"LazyComponent",_0:()=>e(t)}}function zt(e,t,n,r){return{TAG:"LazyComponent",_0:()=>e(t)}}function Pr(e){let t=e.children;return t!==void 0?t:Ze([])}let Mr=Ze;function Rr(){return Lt("")}function nt(e){return e&&typeof e=="object"&&"TAG"in e&&(e.TAG==="Static"||e.TAG==="Reactive")}function E(e,t){return nt(t)?t.TAG==="Reactive"?ae(e,t._0):q(e,t._0):typeof t=="function"?Fe(e,t):typeof t=="object"?ae(e,t):q(e,t)}function U(e,t){if(nt(t)){if(t.TAG!=="Reactive")return q(e,t._0?"true":"false");let r=t._0,l=Q(()=>A(r)?"true":"false",void 0);return ae(e,l)}if(typeof t=="function")return Fe(e,()=>t()?"true":"false");if(typeof t!="object")return q(e,t?"true":"false");let n=Q(()=>A(t)?"true":"false",void 0);return ae(e,n)}function f(e,t,n,r){if(t!==void 0){e.push(r(n,h(t)));return}}function ye(e,t,n){if(t!==void 0){e.push(q(n,t.toString()));return}}function Bt(e){let t=[];f(t,e.id,"id",E),f(t,e.class,"class",E),f(t,e.style,"style",E),f(t,e.type,"type",E),f(t,e.name,"name",E),f(t,e.value,"value",E),f(t,e.placeholder,"placeholder",E),f(t,e.disabled,"disabled",U),f(t,e.checked,"checked",U),f(t,e.required,"required",U),f(t,e.readOnly,"readonly",U),ye(t,e.maxLength,"maxlength"),ye(t,e.minLength,"minlength"),f(t,e.min,"min",E),f(t,e.max,"max",E),f(t,e.step,"step",E),f(t,e.pattern,"pattern",E),f(t,e.autoComplete,"autocomplete",E),f(t,e.multiple,"multiple",U),f(t,e.accept,"accept",E),ye(t,e.rows,"rows"),ye(t,e.cols,"cols"),f(t,e.for,"for",E),f(t,e.href,"href",E),f(t,e.target,"target",E),f(t,e.src,"src",E),f(t,e.alt,"alt",E),f(t,e.width,"width",E),f(t,e.height,"height",E),f(t,e.role,"role",E),ye(t,e.tabIndex,"tabindex"),f(t,e["aria-label"],"aria-label",E),f(t,e["aria-hidden"],"aria-hidden",U),f(t,e["aria-expanded"],"aria-expanded",U),f(t,e["aria-selected"],"aria-selected",U);let n=e.data;return n!==void 0&&Object.entries(n).forEach(([r,l])=>{t.push(E("data-"+r,l))}),t}function R(e,t,n){if(t!==void 0){e.push([n,h(t)]);return}}function It(e){let t=[];return R(t,e.onClick,"click"),R(t,e.onInput,"input"),R(t,e.onChange,"change"),R(t,e.onSubmit,"submit"),R(t,e.onFocus,"focus"),R(t,e.onBlur,"blur"),R(t,e.onKeyDown,"keydown"),R(t,e.onKeyUp,"keyup"),R(t,e.onMouseEnter,"mouseenter"),R(t,e.onMouseLeave,"mouseleave"),R(t,e.onMouseDown,"mousedown"),R(t,e.onMouseMove,"mousemove"),R(t,e.onMouseUp,"mouseup"),R(t,e.onContextMenu,"contextmenu"),t}function Wt(e){let t=e.children;return t!==void 0?t.TAG==="Fragment"?t._0:[t]:[]}function rt(e,t){return{TAG:"Element",tag:e,attrs:Bt(t),events:It(t),children:Wt(t)}}let pt=rt;function gt(e,t,n,r){return rt(e,t)}let Gr={isReactiveProp:nt,convertAttrValue:E,convertBoolAttrValue:U,addAttr:f,addIntAttr:ye,propsToAttrs:Bt,addEvent:R,propsToEvents:It,getChildren:Wt,createElement:rt,jsx:pt,jsxs:pt,jsxKeyed:gt,jsxsKeyed:gt},Lr,Fr=Nt,Nr=zt;const zr=Object.freeze(Object.defineProperty({__proto__:null,$$null:Rr,Elements:Gr,ReactiveProp:Lr,array:Mr,jsx:Nt,jsxFragment:Pr,jsxKeyed:zt,jsxs:Fr,jsxsKeyed:Nr},Symbol.toStringTag,{value:"Module"}));function Br(e){return e.TAG==="Reactive"?A(e._0):e._0}function Ir(e){return{TAG:"Static",_0:e}}function Wr(e){return{TAG:"Reactive",_0:e}}const Kr=Object.freeze(Object.defineProperty({__proto__:null,$$static:Ir,get:Br,reactive:Wr},Symbol.toStringTag,{value:"Module"}));function Kt(e,t){let n=e.length,r=new Array(n),l=0;for(let i=0;i<n;++i){let u=e[i],o=t(u);o!==void 0&&(r[l]=h(o),l=l+1|0)}return r.length=l,r}function Vr(e,t){let n=0;for(;;){let r=n;if(r===e.length)return;let l=t(e[r]);if(l!==void 0)return l;n=r+1|0}}function Vt(e){return Kt(e.split("/"),t=>{if(t!=="")return t.startsWith(":")?{TAG:"Param",_0:t.slice(1)}:{TAG:"Static",_0:t}})}function Ht(e,t){let n=t.split("/").filter(i=>i!=="");if(e.length!==n.length)return"NoMatch";let r={};return e.every((i,u)=>{let o=n[u];return i.TAG==="Static"?o===i._0:(r[i._0]=o,!0)})?{TAG:"Match",_0:r}:"NoMatch"}function it(e,t){return Ht(Vt(e),t)}const Hr=Object.freeze(Object.defineProperty({__proto__:null,match:it,matchPath:Ht,parsePattern:Vt},Symbol.toStringTag,{value:"Module"}));function Xr(){return Symbol.for("xote.router.state")}function B(){let e=globalThis[Symbol.for("xote.router.state")];if(e!==void 0)return e;let t={location:Je({pathname:"/",search:"",hash:""},void 0,void 0),basePath:{contents:"/"},initialized:!1,popStateHandler:void 0};return globalThis[Symbol.for("xote.router.state")]=t,t}function qr(){return B().location}function Ur(){return B().basePath}function ce(e){if(!B().initialized){console.warn("[Xote Router] "+e+" called before Router.init(). Make sure to call Router.init() at your app entry point. This may cause incorrect routing behavior.");return}}function lt(e){if(e===""||e==="/")return"/";let t=e.startsWith("/")?e:"/"+e;return t.endsWith("/")?t.slice(0,t.length-1|0):t}function Xt(e){let t=B().basePath.contents;return t==="/"?e:e===t?"/":e.startsWith(t+"/")?e.slice(t.length):e}function ve(e){let t=B().basePath.contents;return t==="/"?e:e==="/"?t:t+e}function qt(){let e=window.scrollX||window.pageXOffset||0,t=window.scrollY||window.pageYOffset||0;return[e,t]}function Ne(e,t){window.scrollTo(e,t)}function Ut(e,t){return{scrollX:e,scrollY:t}}function ut(){return{}}function Yt(e){let t=e&&e.scrollX,n=e&&e.scrollY;if(t!=null&&n!=null)return[t,n]}function Jt(){let e=qt(),t=Ut(e[0],e[1]),n=window.location.href;window.history.replaceState(t,"",n)}function Ve(){let e=window.location.pathname;return{pathname:Xt(e),search:window.location.search,hash:window.location.hash}}function Yr(e,t){let n=e!==void 0?e:"/",r=B(),l=lt(n);if(r.basePath.contents=l,de(r.location,Ve()),r.initialized)return;let i=u=>{de(B().location,Ve());let o=window["history.state"];if(o==null)return;let a=Yt(o);if(a!==void 0)return Ne(a[0],a[1])};r.popStateHandler=i,window.addEventListener("popstate",i),r.initialized=!0}function Jr(e,t,n,r,l){let i=e!==void 0?e:"/",u=t!==void 0?t:"/",o=n!==void 0?n:"",a=r!==void 0?r:"",y=B(),O=lt(i);y.basePath.contents=O,de(y.location,{pathname:u,search:o,hash:a}),y.initialized=!0}function ot(e,t,n,r){let l=t!==void 0?t:"",i=n!==void 0?n:"";ce("Router.push()"),Jt();let u={pathname:e,search:l,hash:i},a=ve(e)+l+i;window.history.pushState(ut(),"",a),de(B().location,u),Ne(0,0)}function Qr(e,t,n,r){let l=t!==void 0?t:"",i=n!==void 0?n:"";ce("Router.replace()");let u={pathname:e,search:l,hash:i},a=ve(e)+l+i;window.history.replaceState(ut(),"",a),de(B().location,u),Ne(0,0)}function Zr(e,t){return ce("Router.route()"),et(Q(()=>{let n=A(B().location),r=it(e,n.pathname);return typeof r!="object"?[]:[t(r._0)]},void 0))}function ei(e){return ce("Router.routes()"),et(Q(()=>{let t=A(B().location),n=Vr(e,r=>{let l=it(r.pattern,t.pathname);if(typeof l=="object")return r.render(l._0)});return n!==void 0?[n]:[]},void 0))}function ti(e,t,n,r){let l=t!==void 0?t:[],i=n!==void 0?n:[];ce("Router.link()");let u=o=>{o.preventDefault(),ot(e,void 0,void 0)};return tt(l.concat([q("href",ve(e))]),[["click",u]],i)}function Qt(e){return e&&typeof e=="object"&&"TAG"in e&&(e.TAG==="Static"||e.TAG==="Reactive")}function Se(e,t){return Qt(t)?t.TAG==="Reactive"?ae(e,t._0):q(e,t._0):typeof t=="function"?Fe(e,t):typeof t=="object"?ae(e,t):q(e,t)}function Zt(e){let t=[],n=e.class;n!==void 0&&t.push(Se("class",h(n)));let r=e.id;r!==void 0&&t.push(Se("id",h(r)));let l=e.style;l!==void 0&&t.push(Se("style",h(l)));let i=e.target;i!==void 0&&t.push(Se("target",h(i)));let u=e["aria-label"];return u!==void 0&&t.push(Se("aria-label",h(u))),t}function en(e){let t=e.children;return t!==void 0?t.TAG==="Fragment"?t._0:[t]:[]}function je(e){ce("Router.Link");let t=n=>{n.preventDefault(),ot(e.to,void 0,void 0);let r=e.onClick;if(r!==void 0)return r(n)};return tt(Zt(e).concat([q("href",ve(e.to))]),[["click",t]],en(e))}function yt(e,t,n){return je(e)}let ni={ReactiveProp:void 0,isReactiveProp:Qt,convertAttrValue:Se,propsToAttrs:Zt,getChildren:en,make:je,jsx:je,jsxs:je,jsxKeyed:yt,jsxsKeyed:yt},ri;const ii=Object.freeze(Object.defineProperty({__proto__:null,Link:ni,Route:ri,addBasePath:ve,basePath:Ur,emptyHistoryState:ut,getCurrentLocation:Ve,getGlobalState:B,getScrollFromState:Yt,getScrollPosition:qt,getSymbolKey:Xr,init:Yr,initSSR:Jr,link:ti,location:qr,makeHistoryState:Ut,normalizeBasePath:lt,push:ot,replace:Qr,route:Zr,routes:ei,saveScrollPosition:Jt,scrollTo:Ne,stripBasePath:Xt,warnIfNotInitialized:ce},Symbol.toStringTag,{value:"Module"}));function ie(e){return e.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("'","'")}let dt=["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"];function li(e){return dt.includes(e)}let tn={escape:ie,voidElements:dt,isVoidElement:li},nn="<!--$-->",rn="<!--/$-->",ln="<!--#-->",un="<!--/#-->",on="<!--kl-->",dn="<!--/kl-->";function an(e){return"<!--k:"+e+"-->"}let cn="<!--/k-->",sn="<!--lc-->",fn="<!--/lc-->",ui={signalTextStart:nn,signalTextEnd:rn,signalFragmentStart:ln,signalFragmentEnd:un,keyedListStart:on,keyedListEnd:dn,keyedItemStart:an,keyedItemEnd:cn,lazyComponentStart:sn,lazyComponentEnd:fn};function hn(e){let t=e[1],n=e[0],r;switch(t.TAG){case"Static":r=t._0;break;case"SignalValue":r=V(t._0);break;case"Compute":r=t._0();break}switch(n){case"aria-expanded":case"aria-hidden":case"aria-selected":case"checked":case"disabled":case"multiple":case"readonly":case"required":break;default:return n+'="'+ie(r)+'"'}return r==="true"?n:""}function mn(e){let t=e.map(hn).filter(n=>n!=="");return t.length!==0?" "+t.join(" "):""}let oi={renderAttr:hn,renderAttrs:mn};function ne(e){switch(e.TAG){case"Element":let t=e.tag,n=mn(e.attrs);if(dt.includes(t))return"<"+t+n+" />";let r=e.children.map(ne).join("");return"<"+t+n+">"+r+"</"+t+">";case"Text":return ie(e._0);case"SignalText":let l=V(e._0);return nn+ie(l)+rn;case"Fragment":return e._0.map(ne).join("");case"SignalFragment":let u=V(e._0).map(ne).join("");return ln+u+un;case"LazyComponent":let o=e._0();return sn+ne(o)+fn;case"KeyedList":let a=e.renderItem,y=e.keyFn,L=V(e.signal).map(F=>{let C=y(F),$=ne(a(F));return an(C)+$+cn}).join("");return on+L+dn}}function pn(e,t){return ne(e())}function di(e,t,n){let r=t!==void 0?t:"root",l=e(),i=ne(l);return"<!--xote-root:"+r+"-->"+i+"<!--/xote-root-->"}function gn(e){return"<script"+(e!==void 0?' nonce="'+ie(e)+'"':"")+">window.__XOTE_HYDRATED__=false;<\/script>"}function ai(e,t,n,r,l,i,u){let o=e!==void 0?e:"",a=t!==void 0?t:"",y=n!==void 0?n:[],O=r!==void 0?r:[],L=l!==void 0?l:"",F=pn(u),C=gn(i),$=O.map(I=>'<link rel="stylesheet" href="'+ie(I)+'" />').join(`
|
|
2
|
-
`),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});let We={contents:0};function Re(){return We.contents=We.contents+1|0,We.contents}function St(){return{first:void 0,last:void 0,version:0,compute:void 0,firstDep:void 0,lastDep:void 0,flags:0,level:0}}function xn(e){return{first:void 0,last:void 0,version:0,compute:e,firstDep:void 0,lastDep:void 0,flags:1,level:0}}function $n(e,t,n,r,l){return{id:e,kind:t,run:n,firstDep:void 0,lastDep:void 0,flags:1,level:0,name:r,backingSubs:l}}function _t(e){e.flags=e.flags&-2}function An(e){return(e.flags&2)!==0}function kn(e){e.flags=e.flags|2}function Dn(e){e.flags=e.flags&-3}function bt(e){return(e.flags&1)!==0}function On(e){e.flags=e.flags|1}function Xe(e){e.flags=e.flags&-2}function Cn(e){e.flags=e.flags&-3}function Ge(e){return e.compute!==void 0}function st(e,t){return{subs:e,observer:t,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0}}function Pe(e,t){t.prevSub=e.last,t.nextSub=void 0;let n=e.last;n!==void 0?n.nextSub=t:e.first=t,e.last=t}function ft(e,t){t.prevDep=e.lastDep,t.nextDep=void 0;let n=e.lastDep;n!==void 0?n.nextDep=t:e.firstDep=t,e.lastDep=t}function Et(e){let t=e.subs,n=e.prevSub;n!==void 0?n.nextSub=e.nextSub:t.first=e.nextSub;let r=e.nextSub;r!==void 0?r.prevSub=e.prevSub:t.last=e.prevSub,e.prevSub=void 0,e.nextSub=void 0}function wt(e){let t=e.firstDep;for(;t!==void 0;){let n=t;if(n!==void 0){let r=n.nextDep;Et(n),t=r}}e.firstDep=void 0,e.lastDep=void 0}function qe(e){let t=e.firstDep;for(;t!==void 0;){let n=t;if(n!==void 0){let r=n.nextDep;Et(n),t=r}}e.firstDep=void 0,e.lastDep=void 0}function ht(e,t){t.prevDep=e.lastDep,t.nextDep=void 0;let n=e.lastDep;n!==void 0?n.nextDep=t:e.firstDep=t,e.lastDep=t}let C={contents:void 0},B={contents:void 0},ee=[],ue=[],re={contents:!1},Oe=[],mt=(function(e){e.length=0});function jn(e){if(!An(e)){kn(e),ee.push(e);return}}function Pn(e,t){if(e.firstDep===void 0){let i={subs:t,observer:e,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0};return ht(e,i),Pe(t,i)}let n=!1,r=e.firstDep;for(;r!==void 0&&!n;){let i=r;i!==void 0&&(i.subs===t?n=!0:r=i.nextDep)}if(n)return;let l={subs:t,observer:e,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0};ht(e,l),Pe(t,l)}function Mn(e,t){if(e.firstDep===void 0){let i=st(t,e);return ft(e,i),Pe(t,i)}let n=!1,r=e.firstDep;for(;r!==void 0&&!n;){let i=r;i!==void 0&&(i.subs===t?n=!0:r=i.nextDep)}if(n)return;let l=st(t,e);ft(e,l),Pe(t,l)}function Rn(e){let t=C.contents;if(t!==void 0)return Pn(t,e);let n=B.contents;if(n!==void 0)return Mn(n,e)}function Gn(e,t){return e.level-t.level|0}function Ln(e,t){return e.level-t.level|0}function Tt(e){let t=0,n=e.firstDep;for(;n!==void 0;){let r=n;r!==void 0&&(Ge(r.subs)&&r.subs.level>t&&(t=r.subs.level),n=r.nextDep)}return t+1|0}function vt(e){let t=0,n=e.firstDep;for(;n!==void 0;){let r=n;r!==void 0&&(Ge(r.subs)&&r.subs.level>t&&(t=r.subs.level),n=r.nextDep)}return t+1|0}function Fn(e){let t=e.level;qe(e),Cn(e);let n=C.contents;C.contents=e;try{let r=e.compute;r!==void 0&&r(),Xe(e),C.contents=n}catch(r){throw C.contents=n,r}if(t===0){e.level=Tt(e);return}}function Nn(e){let t=e.level;wt(e),Dn(e);let n=B.contents;B.contents=e;try{e.run(),_t(e),B.contents=n}catch(r){throw B.contents=n,r}if(t===0){e.level=vt(e);return}}function xt(){re.contents=!0;try{for(;ee.length!==0||ue.length!==0;){if(ue.length!==0){ue.sort(Ln);let e=ue.slice();mt(ue),e.forEach(Fn)}if(ee.length!==0){ee.sort(Gn);let e=ee.slice();mt(ee),e.forEach(Nn)}}re.contents=!1;return}catch(e){throw re.contents=!1,e}}function zn(e){for(Oe.push(e);Oe.length!==0;){let t=Oe.pop();if(t!==void 0){let n=t.first;for(;n!==void 0;){let r=n;if(r!==void 0){let l=r.observer;Ge(l)?bt(l)||(On(l),Oe.push(l)):jn(r.observer),n=r.nextSub}}}}if((ee.length!==0||ue.length!==0)&&!re.contents)return xt()}function $t(e){if(!(Ge(e)&&bt(e)))return;let t=e.level;qe(e);let n=C.contents;C.contents=e;try{let r=e.compute;r!==void 0&&r(),Xe(e),C.contents=n}catch(r){throw C.contents=n,r}if(t===0){e.level=Tt(e);return}}function Bn(e){let t=re.contents;re.contents=!0;try{let n=e();return t||(re.contents=!1,(ee.length!==0||ue.length!==0)&&xt()),n}catch(n){throw t||(re.contents=!1),n}}function In(e){let t=C.contents,n=B.contents;C.contents=void 0,B.contents=void 0;try{let r=e();return C.contents=t,B.contents=n,r}catch(r){throw C.contents=t,B.contents=n,r}}function At(e,t){let n=Re(),r={contents:void 0},i=$n(n,"Effect",()=>{let y=r.contents;y!==void 0&&y(),r.contents=e()},t,void 0),u=B.contents;B.contents=i;try{i.run(),_t(i),B.contents=u}catch(y){throw B.contents=u,y}i.level=vt(i);let o={contents:!1};return{dispose:()=>{if(o.contents)return;o.contents=!0;let y=r.contents;y!==void 0&&y(),wt(i)}}}function Wn(e,t){At(e,t)}let G=At,Kn=Wn;const Vn=Object.freeze(Object.defineProperty({__proto__:null,run:Kn,runWithDisposer:G},Symbol.toStringTag,{value:"Module"}));function oe(e){return e===void 0?{BS_PRIVATE_NESTED_SOME_NONE:0}:e!==null&&e.BS_PRIVATE_NESTED_SOME_NONE!==void 0?{BS_PRIVATE_NESTED_SOME_NONE:e.BS_PRIVATE_NESTED_SOME_NONE+1|0}:e}function Ue(e){if(e!=null)return oe(e)}function h(e){if(e===null||e.BS_PRIVATE_NESTED_SOME_NONE===void 0)return e;let t=e.BS_PRIVATE_NESTED_SOME_NONE;if(t!==0)return{BS_PRIVATE_NESTED_SOME_NONE:t-1|0}}function Hn(e,t){if(e!==void 0)return oe(t(h(e)))}function J(e,t){return e!==void 0?h(e):t}function Ye(e){return e!==void 0}function Xn(e,t,n){return{id:Re(),value:e,equals:J(n,(l,i)=>l===i),name:t,subs:St()}}function qn(e,t){return{id:Re(),value:e,equals:(r,l)=>!1,name:t,subs:St()}}function Un(e){return $t(e.subs),Rn(e.subs),e.value}function Yn(e){return $t(e.subs),e.value}function kt(e,t){let n;try{n=!e.equals(e.value,t)}catch{n=!0}if(n)return e.value=t,e.subs.version=e.subs.version+1|0,zn(e.subs)}function Jn(e,t){kt(e,t(e.value))}let Qn=Bn,Zn=In,Je=Xn,er=qn,k=Un,H=Yn,ae=kt,tr=Jn,nr=Qn,rr=Zn;const ir=Object.freeze(Object.defineProperty({__proto__:null,batch:nr,get:k,make:Je,makeForComputed:er,peek:H,set:ae,untrack:rr,update:tr},Symbol.toStringTag,{value:"Module"}));function Qe(e,t){delete e[t]}function lr(e,t){let n=Re(),r={contents:void 0},i=xn(()=>{r.contents.value=e()}),u=C.contents;C.contents=i;let o=e();C.contents=u;let c={id:n,value:o,equals:(y,O)=>!1,name:t,subs:i};return r.contents=c,Xe(i),c}function ur(e){qe(e.subs)}let Q=lr,Dt=ur;const or=Object.freeze(Object.defineProperty({__proto__:null,dispose:Dt,make:Q},Symbol.toStringTag,{value:"Module"}));let Ot="http://www.w3.org/2000/svg",Ct=["svg","path","circle","ellipse","line","polygon","polyline","rect","g","defs","clipPath","mask","pattern","marker","symbol","use","text","tspan","image","foreignObject","linearGradient","radialGradient","stop","filter","feBlend","feColorMatrix","feComposite","feFlood","feGaussianBlur","feMerge","feMergeNode","feOffset","animate","animateTransform","desc","title","metadata"],Le={};Ct.forEach(e=>{Le[e]=!0});function ar(e){return Ye(Le[e])}function be(e,t,n){switch(t){case"checked":e.checked=n==="true";return;case"disabled":e.disabled=n==="true";return;case"aria-expanded":case"aria-hidden":case"aria-selected":case"autofocus":case"contenteditable":case"draggable":case"hidden":case"multiple":case"readonly":case"required":case"spellcheck":break;case"value":e.value=n;return;default:e.setAttribute(t,n);return}n==="true"?e.setAttribute(t,""):e.removeAttribute(t)}let we={setAttrOrProp:be},Ce={contents:void 0};function dr(){return{disposers:[],computeds:[]}}function me(e,t){let n=Ce.contents;Ce.contents=e;let r=t();return Ce.contents=n,r}function pe(e,t){e.disposers.push(t)}function jt(e){e.disposers.forEach(t=>t.dispose()),e.computeds.forEach(Dt)}function ge(e,t){e.__xote_owner__=t}function Pt(e){return Ue(e.__xote_owner__)}let s={currentOwner:Ce,createOwner:dr,runWithOwner:me,addDisposer:pe,disposeOwner:jt,setOwner:ge,getOwner:Pt};function Mt(e,t){return[e,{TAG:"Static",_0:t}]}function Rt(e,t){return[e,{TAG:"SignalValue",_0:t}]}function Gt(e,t){return[e,{TAG:"Compute",_0:t}]}let cr={$$static:Mt,signal:Rt,computed:Gt};function Ee(e){let t=Pt(e);t!==void 0&&jt(t),Array.from(e.childNodes||[]).forEach(Ee)}function Y(e){switch(e.TAG){case"Element":let t=e.children,n=e.events,r=e.attrs,l=e.tag,i=Ye(Le[l])?document.createElementNS(Ot,l):document.createElement(l),u={disposers:[],computeds:[]};return ge(i,u),me(u,()=>{r.forEach(a=>{let m=a[1],$=a[0];switch(m.TAG){case"Static":return be(i,$,m._0);case"SignalValue":let D=m._0;be(i,$,H(D));let R=G(()=>{be(i,$,k(D))},void 0);return pe(u,R);case"Compute":let p=m._0,_=G(()=>{be(i,$,p())},void 0);return pe(u,_)}}),n.forEach(a=>{i.addEventListener(a[0],a[1])}),t.forEach(a=>{let m=Y(a);i.appendChild(m)})}),i;case"Text":return document.createTextNode(e._0);case"SignalText":let o=e._0,c=document.createTextNode(H(o)),y={disposers:[],computeds:[]};return ge(c,y),me(y,()=>{let a=G(()=>{c.textContent=k(o)},void 0);pe(y,a)}),c;case"Fragment":let O=document.createDocumentFragment();return e._0.forEach(a=>{let m=Y(a);O.appendChild(m)}),O;case"SignalFragment":let F=e._0,N={disposers:[],computeds:[]},j=document.createElement("div");return j.setAttribute("style","display: contents"),ge(j,N),me(N,()=>{let a=G(()=>{let m=k(F);Array.from(j.childNodes||[]).forEach(Ee),j.innerHTML="",m.forEach(D=>{let R=Y(D);j.appendChild(R)})},void 0);pe(N,a)}),j;case"LazyComponent":let A={disposers:[],computeds:[]},X=me(A,e._0),W=Y(X);return ge(W,A),W;case"KeyedList":let K=e.renderItem,P=e.keyFn,q=e.signal,fe={disposers:[],computeds:[]},x=document.createComment(" keyed-list-start "),b=document.createComment(" keyed-list-end ");ge(x,fe);let f={},E=()=>{let a=b.parentNode;if(a==null)return;let m=k(q),$={};m.forEach(g=>{$[P(g)]=g});let D=[];Object.keys(f).forEach(g=>{if($[g]===void 0){D.push(g);return}}),D.forEach(g=>{let v=f[g];if(v!==void 0){Ee(v.element),v.element.remove(),Qe(f,g);return}});let R=[],p={};m.forEach(g=>{let v=P(g),he=f[v];if(he!==void 0){if(he.item!==g){p[v]=!0;let De=K(g),vn=Y(De),ct={key:v,item:g,element:vn};R.push(ct),f[v]=ct;return}R.push(he);return}let Ae=K(g),Ie=Y(Ae),ke={key:v,item:g,element:Ie};R.push(ke),f[v]=ke});let _={contents:x.nextSibling};R.forEach(g=>{let v=_.contents;if(v==null){a.insertBefore(g.element,b);return}if(v===b){a.insertBefore(g.element,b);return}if(v===g.element){_.contents=v.nextSibling;return}J(p[g.key],!1)?(Ee(v),a.replaceChild(g.element,v),_.contents=g.element.nextSibling):(a.insertBefore(g.element,v),_.contents=g.element.nextSibling)})},T=document.createDocumentFragment();return T.appendChild(x),H(q).forEach(a=>{let m=P(a),$=K(a),D=Y($),R={key:m,item:a,element:D};f[m]=R,T.appendChild(D)}),T.appendChild(b),me(fe,()=>{let a=G(()=>{E()},void 0);pe(fe,a)}),T}}let te={disposeElement:Ee,render:Y};function Lt(e){return{TAG:"Text",_0:e}}function sr(e){return{TAG:"SignalText",_0:Q(e,void 0)}}function fr(e){return{TAG:"SignalText",_0:Q(()=>e().toString(),void 0)}}function hr(e){return{TAG:"SignalText",_0:Q(()=>e().toString(),void 0)}}function mr(e){return{TAG:"Text",_0:e.toString()}}function pr(e){return{TAG:"Text",_0:e.toString()}}function Ze(e){return{TAG:"Fragment",_0:e}}function et(e){return{TAG:"SignalFragment",_0:e}}function gr(e,t){return{TAG:"SignalFragment",_0:Q(()=>k(e).map(t),void 0)}}function yr(e,t,n){return{TAG:"KeyedList",signal:e,keyFn:t,renderItem:n}}function V(e,t,n,r,l){let i=t!==void 0?t:[].map(c=>c),u=n!==void 0?n:[].map(c=>c),o=r!==void 0?r:[].map(c=>c);return{TAG:"Element",tag:e,attrs:i,events:u,children:o}}function Sr(){return{TAG:"Text",_0:""}}function Ft(e,t){let n=Y(e);t.appendChild(n)}function _r(e,t){let n=document.getElementById(t);if(n==null){console.error("Container element not found: "+t);return}else return Ft(e,n)}let br=Le,U=Mt,de=Rt,Fe=Gt;const Er=Object.freeze(Object.defineProperty({__proto__:null,$$null:Sr,Attributes:cr,DOM:we,Reactivity:s,Render:te,attr:U,computedAttr:Fe,element:V,float:pr,fragment:Ze,int:mr,isSvgTag:ar,keyedList:yr,list:gr,mount:Ft,mountById:_r,signalAttr:de,signalFloat:hr,signalFragment:et,signalInt:fr,signalText:sr,svgNamespace:Ot,svgTagSet:br,svgTags:Ct,text:Lt},Symbol.toStringTag,{value:"Module"}));function wr(e,t,n,r){return V("div",e,t,n)}function Tr(e,t,n,r){return V("span",e,t,n)}function vr(e,t,n,r){return V("button",e,t,n)}function xr(e,t,n){return V("input",e,t,void 0)}function $r(e,t,n,r){return V("h1",e,t,n)}function Ar(e,t,n,r){return V("h2",e,t,n)}function kr(e,t,n,r){return V("h3",e,t,n)}function Dr(e,t,n,r){return V("p",e,t,n)}function Or(e,t,n,r){return V("ul",e,t,n)}function Cr(e,t,n,r){return V("li",e,t,n)}function tt(e,t,n,r){return V("a",e,t,n)}const jr=Object.freeze(Object.defineProperty({__proto__:null,a:tt,button:vr,div:wr,h1:$r,h2:Ar,h3:kr,input:xr,li:Cr,p:Dr,span:Tr,ul:Or},Symbol.toStringTag,{value:"Module"}));function Nt(e,t){return{TAG:"LazyComponent",_0:()=>e(t)}}function zt(e,t,n,r){return{TAG:"LazyComponent",_0:()=>e(t)}}function Pr(e){let t=e.children;return t!==void 0?t:Ze([])}let Mr=Ze;function Rr(){return Lt("")}function nt(e){return e&&typeof e=="object"&&"TAG"in e&&(e.TAG==="Static"||e.TAG==="Reactive")}function S(e,t){return nt(t)?t.TAG==="Reactive"?de(e,t._0):U(e,t._0):typeof t=="function"?Fe(e,t):typeof t=="object"?de(e,t):U(e,t)}function L(e,t){if(nt(t)){if(t.TAG!=="Reactive")return U(e,t._0?"true":"false");let r=t._0,l=Q(()=>k(r)?"true":"false",void 0);return de(e,l)}if(typeof t=="function")return Fe(e,()=>t()?"true":"false");if(typeof t!="object")return U(e,t?"true":"false");let n=Q(()=>k(t)?"true":"false",void 0);return de(e,n)}function d(e,t,n,r){if(t!==void 0){e.push(r(n,h(t)));return}}function ye(e,t,n){if(t!==void 0){e.push(U(n,t.toString()));return}}function Bt(e){let t=[];d(t,e.id,"id",S),d(t,e.class,"class",S),d(t,e.style,"style",S),d(t,e.title,"title",S),d(t,e.type,"type",S),d(t,e.name,"name",S),d(t,e.value,"value",S),d(t,e.placeholder,"placeholder",S),d(t,e.disabled,"disabled",L),d(t,e.checked,"checked",L),d(t,e.required,"required",L),d(t,e.readOnly,"readonly",L),ye(t,e.maxLength,"maxlength"),ye(t,e.minLength,"minlength"),d(t,e.min,"min",S),d(t,e.max,"max",S),d(t,e.step,"step",S),d(t,e.pattern,"pattern",S),d(t,e.autoComplete,"autocomplete",S),d(t,e.multiple,"multiple",L),d(t,e.accept,"accept",S),ye(t,e.rows,"rows"),ye(t,e.cols,"cols"),d(t,e.autofocus,"autofocus",L),d(t,e.action,"action",S),d(t,e.method,"method",S),d(t,e.for,"for",S),d(t,e.href,"href",S),d(t,e.target,"target",S),d(t,e.src,"src",S),d(t,e.alt,"alt",S),d(t,e.width,"width",S),d(t,e.height,"height",S),d(t,e.draggable,"draggable",L),d(t,e.hidden,"hidden",L),d(t,e.contentEditable,"contenteditable",L),d(t,e.spellcheck,"spellcheck",L),d(t,e.role,"role",S),ye(t,e.tabIndex,"tabindex"),d(t,e["aria-label"],"aria-label",S),d(t,e["aria-hidden"],"aria-hidden",L),d(t,e["aria-expanded"],"aria-expanded",L),d(t,e["aria-selected"],"aria-selected",L);let n=e.data;return n!==void 0&&Object.entries(n).forEach(([r,l])=>{t.push(S("data-"+r,l))}),t}function w(e,t,n){if(t!==void 0){e.push([n,h(t)]);return}}function It(e){let t=[];return w(t,e.onClick,"click"),w(t,e.onInput,"input"),w(t,e.onChange,"change"),w(t,e.onSubmit,"submit"),w(t,e.onFocus,"focus"),w(t,e.onBlur,"blur"),w(t,e.onKeyDown,"keydown"),w(t,e.onKeyUp,"keyup"),w(t,e.onMouseEnter,"mouseenter"),w(t,e.onMouseLeave,"mouseleave"),w(t,e.onMouseDown,"mousedown"),w(t,e.onMouseMove,"mousemove"),w(t,e.onMouseUp,"mouseup"),w(t,e.onContextMenu,"contextmenu"),w(t,e.onDrag,"drag"),w(t,e.onDragStart,"dragstart"),w(t,e.onDragEnd,"dragend"),w(t,e.onDragOver,"dragover"),w(t,e.onDragEnter,"dragenter"),w(t,e.onDragLeave,"dragleave"),w(t,e.onDrop,"drop"),t}function Wt(e){let t=e.children;return t!==void 0?t.TAG==="Fragment"?t._0:[t]:[]}function rt(e,t){return{TAG:"Element",tag:e,attrs:Bt(t),events:It(t),children:Wt(t)}}let pt=rt;function gt(e,t,n,r){return rt(e,t)}let Gr={isReactiveProp:nt,convertAttrValue:S,convertBoolAttrValue:L,addAttr:d,addIntAttr:ye,propsToAttrs:Bt,addEvent:w,propsToEvents:It,getChildren:Wt,createElement:rt,jsx:pt,jsxs:pt,jsxKeyed:gt,jsxsKeyed:gt},Lr,Fr=Nt,Nr=zt;const zr=Object.freeze(Object.defineProperty({__proto__:null,$$null:Rr,Elements:Gr,ReactiveProp:Lr,array:Mr,jsx:Nt,jsxFragment:Pr,jsxKeyed:zt,jsxs:Fr,jsxsKeyed:Nr},Symbol.toStringTag,{value:"Module"}));function Br(e){return e.TAG==="Reactive"?k(e._0):e._0}function Ir(e){return{TAG:"Static",_0:e}}function Wr(e){return{TAG:"Reactive",_0:e}}const Kr=Object.freeze(Object.defineProperty({__proto__:null,$$static:Ir,get:Br,reactive:Wr},Symbol.toStringTag,{value:"Module"}));function Kt(e,t){let n=e.length,r=new Array(n),l=0;for(let i=0;i<n;++i){let u=e[i],o=t(u);o!==void 0&&(r[l]=h(o),l=l+1|0)}return r.length=l,r}function Vr(e,t){let n=0;for(;;){let r=n;if(r===e.length)return;let l=t(e[r]);if(l!==void 0)return l;n=r+1|0}}function Vt(e){return Kt(e.split("/"),t=>{if(t!=="")return t.startsWith(":")?{TAG:"Param",_0:t.slice(1)}:{TAG:"Static",_0:t}})}function Ht(e,t){let n=t.split("/").filter(i=>i!=="");if(e.length!==n.length)return"NoMatch";let r={};return e.every((i,u)=>{let o=n[u];return i.TAG==="Static"?o===i._0:(r[i._0]=o,!0)})?{TAG:"Match",_0:r}:"NoMatch"}function it(e,t){return Ht(Vt(e),t)}const Hr=Object.freeze(Object.defineProperty({__proto__:null,match:it,matchPath:Ht,parsePattern:Vt},Symbol.toStringTag,{value:"Module"}));function Xr(){return Symbol.for("xote.router.state")}function I(){let e=globalThis[Symbol.for("xote.router.state")];if(e!==void 0)return e;let t={location:Je({pathname:"/",search:"",hash:""},void 0,void 0),basePath:{contents:"/"},initialized:!1,popStateHandler:void 0};return globalThis[Symbol.for("xote.router.state")]=t,t}function qr(){return I().location}function Ur(){return I().basePath}function ce(e){if(!I().initialized){console.warn("[Xote Router] "+e+" called before Router.init(). Make sure to call Router.init() at your app entry point. This may cause incorrect routing behavior.");return}}function lt(e){if(e===""||e==="/")return"/";let t=e.startsWith("/")?e:"/"+e;return t.endsWith("/")?t.slice(0,t.length-1|0):t}function Xt(e){let t=I().basePath.contents;return t==="/"?e:e===t?"/":e.startsWith(t+"/")?e.slice(t.length):e}function ve(e){let t=I().basePath.contents;return t==="/"?e:e==="/"?t:t+e}function qt(){let e=window.scrollX||window.pageXOffset||0,t=window.scrollY||window.pageYOffset||0;return[e,t]}function Ne(e,t){window.scrollTo(e,t)}function Ut(e,t){return{scrollX:e,scrollY:t}}function ut(){return{}}function Yt(e){let t=e&&e.scrollX,n=e&&e.scrollY;if(t!=null&&n!=null)return[t,n]}function Jt(){let e=qt(),t=Ut(e[0],e[1]),n=window.location.href;window.history.replaceState(t,"",n)}function Ve(){let e=window.location.pathname;return{pathname:Xt(e),search:window.location.search,hash:window.location.hash}}function Yr(e,t){let n=e!==void 0?e:"/",r=I(),l=lt(n);if(r.basePath.contents=l,ae(r.location,Ve()),r.initialized)return;let i=u=>{ae(I().location,Ve());let o=window["history.state"];if(o==null)return;let c=Yt(o);if(c!==void 0)return Ne(c[0],c[1])};r.popStateHandler=i,window.addEventListener("popstate",i),r.initialized=!0}function Jr(e,t,n,r,l){let i=e!==void 0?e:"/",u=t!==void 0?t:"/",o=n!==void 0?n:"",c=r!==void 0?r:"",y=I(),O=lt(i);y.basePath.contents=O,ae(y.location,{pathname:u,search:o,hash:c}),y.initialized=!0}function ot(e,t,n,r){let l=t!==void 0?t:"",i=n!==void 0?n:"";ce("Router.push()"),Jt();let u={pathname:e,search:l,hash:i},c=ve(e)+l+i;window.history.pushState(ut(),"",c),ae(I().location,u),Ne(0,0)}function Qr(e,t,n,r){let l=t!==void 0?t:"",i=n!==void 0?n:"";ce("Router.replace()");let u={pathname:e,search:l,hash:i},c=ve(e)+l+i;window.history.replaceState(ut(),"",c),ae(I().location,u),Ne(0,0)}function Zr(e,t){return ce("Router.route()"),et(Q(()=>{let n=k(I().location),r=it(e,n.pathname);return typeof r!="object"?[]:[t(r._0)]},void 0))}function ei(e){return ce("Router.routes()"),et(Q(()=>{let t=k(I().location),n=Vr(e,r=>{let l=it(r.pattern,t.pathname);if(typeof l=="object")return r.render(l._0)});return n!==void 0?[n]:[]},void 0))}function ti(e,t,n,r){let l=t!==void 0?t:[],i=n!==void 0?n:[];ce("Router.link()");let u=o=>{o.preventDefault(),ot(e,void 0,void 0)};return tt(l.concat([U("href",ve(e))]),[["click",u]],i)}function Qt(e){return e&&typeof e=="object"&&"TAG"in e&&(e.TAG==="Static"||e.TAG==="Reactive")}function Se(e,t){return Qt(t)?t.TAG==="Reactive"?de(e,t._0):U(e,t._0):typeof t=="function"?Fe(e,t):typeof t=="object"?de(e,t):U(e,t)}function Zt(e){let t=[],n=e.class;n!==void 0&&t.push(Se("class",h(n)));let r=e.id;r!==void 0&&t.push(Se("id",h(r)));let l=e.style;l!==void 0&&t.push(Se("style",h(l)));let i=e.target;i!==void 0&&t.push(Se("target",h(i)));let u=e["aria-label"];return u!==void 0&&t.push(Se("aria-label",h(u))),t}function en(e){let t=e.children;return t!==void 0?t.TAG==="Fragment"?t._0:[t]:[]}function je(e){ce("Router.Link");let t=n=>{n.preventDefault(),ot(e.to,void 0,void 0);let r=e.onClick;if(r!==void 0)return r(n)};return tt(Zt(e).concat([U("href",ve(e.to))]),[["click",t]],en(e))}function yt(e,t,n){return je(e)}let ni={ReactiveProp:void 0,isReactiveProp:Qt,convertAttrValue:Se,propsToAttrs:Zt,getChildren:en,make:je,jsx:je,jsxs:je,jsxKeyed:yt,jsxsKeyed:yt},ri;const ii=Object.freeze(Object.defineProperty({__proto__:null,Link:ni,Route:ri,addBasePath:ve,basePath:Ur,emptyHistoryState:ut,getCurrentLocation:Ve,getGlobalState:I,getScrollFromState:Yt,getScrollPosition:qt,getSymbolKey:Xr,init:Yr,initSSR:Jr,link:ti,location:qr,makeHistoryState:Ut,normalizeBasePath:lt,push:ot,replace:Qr,route:Zr,routes:ei,saveScrollPosition:Jt,scrollTo:Ne,stripBasePath:Xt,warnIfNotInitialized:ce},Symbol.toStringTag,{value:"Module"}));function ie(e){return e.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("'","'")}let at=["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"];function li(e){return at.includes(e)}let tn={escape:ie,voidElements:at,isVoidElement:li},nn="<!--$-->",rn="<!--/$-->",ln="<!--#-->",un="<!--/#-->",on="<!--kl-->",an="<!--/kl-->";function dn(e){return"<!--k:"+e+"-->"}let cn="<!--/k-->",sn="<!--lc-->",fn="<!--/lc-->",ui={signalTextStart:nn,signalTextEnd:rn,signalFragmentStart:ln,signalFragmentEnd:un,keyedListStart:on,keyedListEnd:an,keyedItemStart:dn,keyedItemEnd:cn,lazyComponentStart:sn,lazyComponentEnd:fn};function hn(e){let t=e[1],n=e[0],r;switch(t.TAG){case"Static":r=t._0;break;case"SignalValue":r=H(t._0);break;case"Compute":r=t._0();break}switch(n){case"aria-expanded":case"aria-hidden":case"aria-selected":case"autofocus":case"checked":case"contenteditable":case"disabled":case"draggable":case"hidden":case"multiple":case"readonly":case"required":case"spellcheck":break;default:return n+'="'+ie(r)+'"'}return r==="true"?n:""}function mn(e){let t=e.map(hn).filter(n=>n!=="");return t.length!==0?" "+t.join(" "):""}let oi={renderAttr:hn,renderAttrs:mn};function ne(e){switch(e.TAG){case"Element":let t=e.tag,n=mn(e.attrs);if(at.includes(t))return"<"+t+n+" />";let r=e.children.map(ne).join("");return"<"+t+n+">"+r+"</"+t+">";case"Text":return ie(e._0);case"SignalText":let l=H(e._0);return nn+ie(l)+rn;case"Fragment":return e._0.map(ne).join("");case"SignalFragment":let u=H(e._0).map(ne).join("");return ln+u+un;case"LazyComponent":let o=e._0();return sn+ne(o)+fn;case"KeyedList":let c=e.renderItem,y=e.keyFn,F=H(e.signal).map(N=>{let j=y(N),A=ne(c(N));return dn(j)+A+cn}).join("");return on+F+an}}function pn(e,t){return ne(e())}function ai(e,t,n){let r=t!==void 0?t:"root",l=e(),i=ne(l);return"<!--xote-root:"+r+"-->"+i+"<!--/xote-root-->"}function gn(e){return"<script"+(e!==void 0?' nonce="'+ie(e)+'"':"")+">window.__XOTE_HYDRATED__=false;<\/script>"}function di(e,t,n,r,l,i,u){let o=e!==void 0?e:"",c=t!==void 0?t:"",y=n!==void 0?n:[],O=r!==void 0?r:[],F=l!==void 0?l:"",N=pn(u),j=gn(i),A=O.map(W=>'<link rel="stylesheet" href="'+ie(W)+'" />').join(`
|
|
2
|
+
`),X=y.map(W=>{let K=i!==void 0?' nonce="'+ie(i)+'"':"";return'<script type="module" src="'+ie(W)+'"'+K+"><\/script>"}).join(`
|
|
3
3
|
`);return`<!DOCTYPE html>
|
|
4
4
|
<html>
|
|
5
5
|
<head>
|
|
6
6
|
<meta charset="UTF-8" />
|
|
7
7
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
8
|
-
|
|
8
|
+
`+A+`
|
|
9
9
|
`+o+`
|
|
10
10
|
</head>
|
|
11
|
-
<body`+(
|
|
12
|
-
<div id="root">`+
|
|
13
|
-
`+
|
|
14
|
-
`+
|
|
15
|
-
`+
|
|
11
|
+
<body`+(c!==""?" "+c:"")+`>
|
|
12
|
+
<div id="root">`+N+`</div>
|
|
13
|
+
`+F+`
|
|
14
|
+
`+j+`
|
|
15
|
+
`+X+`
|
|
16
16
|
</body>
|
|
17
|
-
</html>`}const ci=Object.freeze(Object.defineProperty({__proto__:null,Attributes:oi,Html:tn,Markers:ui,generateHydrationScript:gn,renderDocument:
|
|
17
|
+
</html>`}const ci=Object.freeze(Object.defineProperty({__proto__:null,Attributes:oi,Html:tn,Markers:ui,generateHydrationScript:gn,renderDocument:di,renderNodeToString:ne,renderToString:pn,renderToStringWithRoot:ai},Symbol.toStringTag,{value:"Module"}));let xe=typeof document>"u",ze=!xe;function si(e){if(xe)return oe(e())}function fi(e){if(ze)return oe(e())}function yn(e,t){return xe?e():t()}const hi=Object.freeze(Object.defineProperty({__proto__:null,isClient:ze,isServer:xe,match:yn,onClient:fi,onServer:si},Symbol.toStringTag,{value:"Module"}));function mi(e){if(typeof e=="boolean")return e}function pi(e){if(e===null)return null}function gi(e){if(typeof e=="string")return e}function yi(e){if(typeof e=="number")return e}function Si(e){if(typeof e=="object"&&e!==null&&!Array.isArray(e))return e}function _i(e){if(Array.isArray(e))return e}let se={bool:mi,$$null:pi,string:gi,float:yi,object:Si,array:_i};function bi(e){return e}function Ei(e){let t=se.float(e);if(t!==void 0)return t|0}let wi={encode:bi,decode:Ei};function Ti(e){return e}function vi(e){return se.float(e)}let xi={encode:Ti,decode:vi};function $i(e){return e}function Ai(e){return se.string(e)}let ki={encode:$i,decode:Ai};function Di(e){return e}function Oi(e){return se.bool(e)}let Ci={encode:Di,decode:Oi};function ji(e){return{encode:t=>t.map(e.encode),decode:t=>{let n=se.array(t);if(n===void 0)return;let r=Kt(n,e.decode);if(r.length===n.length)return r}}}function Pi(e){return{encode:t=>t!==void 0?e.encode(h(t)):null,decode:t=>Ye(se.$$null(t))?oe(void 0):Hn(e.decode(t),n=>oe(n))}}function Mi(e,t){return{encode:n=>[e.encode(n[0]),t.encode(n[1])],decode:n=>{let r=Array.isArray(n)?n:void 0;if(r===void 0||r.length!==2)return;let l=r[0],i=r[1],u=e.decode(l),o=t.decode(i);if(u!==void 0&&o!==void 0)return[h(u),h(o)]}}}function Ri(e,t,n){return{encode:r=>[e.encode(r[0]),t.encode(r[1]),n.encode(r[2])],decode:r=>{let l=Array.isArray(r)?r:void 0;if(l===void 0||l.length!==3)return;let i=l[0],u=l[1],o=l[2],c=e.decode(i),y=t.decode(u),O=n.decode(o);if(c!==void 0&&y!==void 0&&O!==void 0)return[h(c),h(y),h(O)]}}}function Gi(e){return{encode:t=>{let n={};return Object.entries(t).forEach(r=>{n[r[0]]=e.encode(r[1])}),n},decode:t=>{let n=se.object(t);if(n===void 0)return;let r={},l={contents:!0};if(Object.entries(n).forEach(i=>{let u=e.decode(i[1]);u!==void 0?r[i[0]]=h(u):l.contents=!1}),l.contents)return r}}}function Li(e,t){return{encode:e,decode:t}}let Fi={int:wi,float:xi,string:ki,bool:Ci,array:ji,option:Pi,tuple2:Mi,tuple3:Ri,dict:Gi,make:Li},Te={};function Sn(e,t,n){if(xe){Te[e]=n.encode(H(t));return}}function Ni(){Object.keys(Te).forEach(e=>{Qe(Te,e)})}function _n(e){return e.replaceAll("<\/script>","<\\/script>").replaceAll("<!--","<\\!--")}function zi(e){let t=J(JSON.stringify(Te),"{}"),n=_n(t);return"<script"+(e!==void 0?' nonce="'+tn.escape(e)+'"':"")+">window.__XOTE_STATE__="+n+";<\/script>"}function bn(){return ze?window.__XOTE_STATE__||{}:{}}function En(e,t,n){if(!ze)return;let l=bn()[e];if(l===void 0)return;let i=n.decode(l);if(i!==void 0)return ae(t,h(i))}function wn(e,t,n){yn(()=>Sn(e,t,n),()=>En(e,t,n))}function Bi(e,t,n){let r=Je(t,void 0,void 0);return wn(e,r,n),r}const Ii=Object.freeze(Object.defineProperty({__proto__:null,Codec:Fi,clear:Ni,escapeForScript:_n,generateScript:zi,getClientState:bn,make:Bi,register:Sn,registry:Te,restore:En,sync:wn},Symbol.toStringTag,{value:"Module"}));let Ke={};function Wi(e){let t=Ke[e];if(t!==void 0){let n=t+1|0;return Ke[e]=n,e+("/"+n)}return Ke[e]=1,e}function Ki(e){return Array.from(e.childNodes||[])}function $e(e,t){if(e.nodeType!==8)return!1;let n=e.nodeValue;return n==null?!1:n===t}function Be(e,t){if(e.nodeType!==8)return!1;let n=e.nodeValue;return n==null?!1:n.startsWith(t)}function dt(e){if(e.nodeType!==8)return;let t=e.nodeValue;if(t!=null&&t.startsWith("k:"))return t.slice(2)}function _e(e){return{current:Ue(e.firstChild),parent:e}}function Vi(e){return e.current}function z(e){let t=e.current;return t!==void 0&&(e.current=Ue(h(t).nextSibling)),t}function Z(e,t){return(()=>{for(;;){let r=e.current;if(r===void 0)return;let l=h(r);if($e(l,t))return z(e),oe(l);z(e)}})()}function Me(e,t){let n=[];return(()=>{for(;;){let l=e.current;if(l===void 0)return;let i=h(l);if($e(i,t)){z(e);return}n.push(i),z(e)}})(),n}let Hi={elementNode:1,textNode:3,commentNode:8,getChildNodes:Ki,isMarker:$e,isMarkerPrefix:Be,extractKey:dt,make:_e,peek:Vi,next:z,skipUntilMarker:Z,collectUntilMarker:Me},Xi=Wi("Hydration-Xote.HydrationMismatch");function He(e){console.warn("[Xote Hydration] "+e)}function qi(e,t){for(;;){let n=e;switch(n.TAG){case"Element":let r=n.children,l=n.events,i=n.attrs,u=s.createOwner();return s.setOwner(t,u),s.runWithOwner(u,()=>{i.forEach(b=>{let f=b[1],E=b[0];switch(f.TAG){case"Static":return;case"SignalValue":let T=f._0,M=G(()=>{we.setAttrOrProp(t,E,k(T))},void 0);return s.addDisposer(u,M);case"Compute":let a=f._0,m=G(()=>{we.setAttrOrProp(t,E,a())},void 0);return s.addDisposer(u,m)}}),l.forEach(b=>{t.addEventListener(b[0],b[1])});let x=_e(t);r.forEach(b=>le(b,x))});case"Text":return;case"SignalText":let o=n._0,c=s.createOwner();return s.setOwner(t,c),s.runWithOwner(c,()=>{let x=G(()=>{t.textContent=k(o)},void 0);s.addDisposer(c,x)});case"Fragment":let y=_e(t);n._0.forEach(x=>le(x,y));return;case"SignalFragment":let O=n._0,F=s.createOwner();return s.setOwner(t,F),s.runWithOwner(F,()=>{let x=G(()=>{let b=k(O);Array.from(t.childNodes||[]).forEach(E=>s.disposeOwner(J(s.getOwner(E),s.createOwner()))),t.innerHTML="",b.forEach(E=>{let T=te.render(E);t.appendChild(T)})},void 0);s.addDisposer(F,x)});case"LazyComponent":let N=s.createOwner(),j=s.runWithOwner(N,n._0);s.setOwner(t,N),e=j;continue;case"KeyedList":let A=n.renderItem,X=n.keyFn,W=n.signal,K=s.createOwner();s.setOwner(t,K);let P={},q=_e(t);return Z(q,"kl"),(()=>{for(;;){let x=q.current;if(x===void 0)return;let b=h(x);if(!Be(b,"k:"))if($e(b,"/kl")){z(q);return}else return;let f=J(dt(b),"");z(q);let T=Me(q,"/k").find(M=>M.nodeType===1);if(T!==void 0){let M=H(W),a=J(M.find(m=>X(m)===f),{});P[f]={key:f,item:a,element:h(T)}}}})(),s.runWithOwner(K,()=>{let x=document.createComment(" keyed-list-start "),b=document.createComment(" keyed-list-end "),f=t.firstChild;f==null?t.appendChild(x):t.insertBefore(x,f),t.appendChild(b);let E=()=>{let M=k(W),a={};M.forEach(p=>{a[X(p)]=p});let m=[];Object.keys(P).forEach(p=>{if(a[p]===void 0){m.push(p);return}}),m.forEach(p=>{let _=P[p];if(_!==void 0){te.disposeElement(_.element),_.element.remove(),Qe(P,p);return}});let $=[],D={};M.forEach(p=>{let _=X(p),g=P[_];if(g!==void 0){if(g.item!==p){D[_]=!0;let Ie=A(p),ke=te.render(Ie),De={key:_,item:p,element:ke};$.push(De),P[_]=De;return}$.push(g);return}let v=A(p),he=te.render(v),Ae={key:_,item:p,element:he};$.push(Ae),P[_]=Ae});let R={contents:x.nextSibling};$.forEach(p=>{let _=R.contents;if(_==null){t.insertBefore(p.element,b);return}if(_===b){t.insertBefore(p.element,b);return}if(_===p.element){R.contents=_.nextSibling;return}J(D[p.key],!1)?(te.disposeElement(_),t.replaceChild(p.element,_),R.contents=p.element.nextSibling):(t.insertBefore(p.element,_),R.contents=p.element.nextSibling)})},T=G(()=>{E()},void 0);s.addDisposer(K,T)})}}}function le(e,t){switch(e.TAG){case"Element":let n=e.children,r=e.events,l=e.attrs,i=z(t);if(i===void 0)return He("Missing DOM element for Element node");let u=h(i),o=s.createOwner();return s.setOwner(u,o),s.runWithOwner(o,()=>{l.forEach(E=>{let T=E[1],M=E[0];switch(T.TAG){case"Static":return;case"SignalValue":let a=T._0,m=G(()=>{we.setAttrOrProp(u,M,k(a))},void 0);return s.addDisposer(o,m);case"Compute":let $=T._0,D=G(()=>{we.setAttrOrProp(u,M,$())},void 0);return s.addDisposer(o,D)}}),r.forEach(E=>{u.addEventListener(E[0],E[1])});let f=_e(u);n.forEach(E=>le(E,f))});case"Text":z(t);return;case"SignalText":let c=e._0;Z(t,"$");let y=z(t);if(y===void 0)return He("Missing text node for SignalText");let O=h(y),F=s.createOwner();s.setOwner(O,F),s.runWithOwner(F,()=>{let f=G(()=>{O.textContent=k(c)},void 0);s.addDisposer(F,f)}),Z(t,"/$");return;case"Fragment":e._0.forEach(f=>le(f,t));return;case"SignalFragment":let N=e._0;Z(t,"#");let j=Me(t,"/#"),A=document.createElement("div");A.setAttribute("style","display: contents");let X=j[0],W=X!==void 0?X.parentNode:void 0;j.forEach(f=>{A.appendChild(f)});let K=t.current;if(W!==void 0){let f=h(W);K!==void 0?f.insertBefore(A,h(K)):f.appendChild(A)}let P=s.createOwner();return s.setOwner(A,P),s.runWithOwner(P,()=>{let f=G(()=>{let E=k(N);Array.from(A.childNodes||[]).forEach(te.disposeElement),A.innerHTML="",E.forEach(M=>{let a=te.render(M);A.appendChild(a)})},void 0);s.addDisposer(P,f)});case"LazyComponent":Z(t,"lc");let q=e._0();le(q,t),Z(t,"/lc");return;case"KeyedList":let fe=e.keyFn,x=e.signal;return Z(t,"kl"),(()=>{for(;;){let f=t.current;if(f===void 0)return;let E=h(f);if(!Be(E,"k:"))if($e(E,"/kl")){z(t);return}else return;let T=J(dt(E),"");z(t);let a=Me(t,"/k").find(m=>m.nodeType===1);if(a!==void 0){let m=H(x),$=J(m.find(D=>fe(D)===T),{});h(a)}}})()}}function Tn(e,t,n){let r=n!==void 0?n:{},l=e(),i=_e(t),u=i.current;u!==void 0&&Be(h(u),"xote-root:")&&z(i),le(l,i),window.__XOTE_HYDRATED__=!0;let o=r.onHydrated;if(o!==void 0)return o()}function Ui(e,t,n){let r=n!==void 0?n:{},l=document.getElementById(t);if(l==null){console.error("[Xote Hydration] Container element not found: "+t);return}else return Tn(e,l,r)}let Yi,Ji;const Qi=Object.freeze(Object.defineProperty({__proto__:null,DOM:Yi,DOMWalker:Hi,HydrationMismatch:Xi,Reactivity:Ji,hydrate:Tn,hydrateById:Ui,hydrateNode:qi,hydrateNodeWithWalker:le,logHydrationWarning:He},Symbol.toStringTag,{value:"Module"}));exports.Computed=or;exports.Effect=Vn;exports.Html=jr;exports.Hydration=Qi;exports.Node=Er;exports.ReactiveProp=Kr;exports.Route=Hr;exports.Router=ii;exports.SSR=ci;exports.SSRContext=hi;exports.SSRState=Ii;exports.Signal=ir;exports.XoteJSX=zr;
|