xote 6.4.0 → 7.0.0-beta.1
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 +132 -33
- package/dist/RuntimeAttr.res-Cr5Qmz0i.js +1 -0
- package/dist/RuntimeAttr.res-DAZkL5CF.mjs +539 -0
- package/dist/RuntimeHydrationMarkers.res-C5-ieaOS.js +1 -0
- package/dist/RuntimeHydrationMarkers.res-DHikAvHr.mjs +6 -0
- package/dist/RuntimeJsxProp.res-A6N-qWoK.js +1 -0
- package/dist/RuntimeJsxProp.res-D3W5GXqT.mjs +64 -0
- package/dist/Stdlib_Array-1YCQzU_Y.mjs +22 -0
- package/dist/Stdlib_Array-BeBVUIuY.js +1 -0
- package/dist/View.res-C36--SJD.js +1 -0
- package/dist/View.res-SuqJrQPC.mjs +777 -0
- package/dist/client.cjs +1 -0
- package/dist/client.mjs +131 -0
- package/dist/hydration.cjs +1 -0
- package/dist/hydration.mjs +385 -0
- package/dist/mdx.cjs +1 -0
- package/dist/mdx.mjs +50 -0
- package/dist/router.cjs +1 -0
- package/dist/router.mjs +276 -0
- package/dist/ssr.cjs +17 -0
- package/dist/ssr.mjs +321 -0
- package/dist/xote.cjs +1 -17
- package/dist/xote.mjs +1456 -2467
- package/dist/xote.umd.js +1 -17
- package/package.json +42 -10
- package/rescript.json +2 -2
- package/src/Mdx.res +77 -0
- package/src/Mdx.res.mjs +93 -0
- package/src/Router.res +62 -8
- package/src/Router.res.mjs +60 -6
- package/src/RuntimeDom.res +7 -0
- package/src/RuntimeDom.res.mjs +8 -0
- package/src/RuntimeJsxProp.res +5 -8
- package/src/RuntimeJsxProp.res.mjs +9 -10
- package/src/RuntimeValue.res +35 -0
- package/src/RuntimeValue.res.mjs +67 -0
- package/src/SSRState.res +1 -4
- package/src/SSRState.res.mjs +4 -10
- package/src/View.res +224 -34
- package/src/View.res.mjs +306 -32
- package/src/jsx-dev-runtime.mjs +7 -0
- package/src/jsx-runtime.mjs +276 -0
- package/src/Node.res +0 -2
- package/src/Node.res.mjs +0 -82
- package/src/ReactiveProp.res +0 -2
- package/src/ReactiveProp.res.mjs +0 -19
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# [xote](https://
|
|
1
|
+
# [xote](https://xote.dev/)
|
|
2
2
|

|
|
3
3
|

|
|
4
4
|

|
|
@@ -28,13 +28,48 @@ Then, add it to your ReScript project's `rescript.json`. You'll need to declare
|
|
|
28
28
|
|
|
29
29
|
The compiler flag `-open Xote` is optional, it makes the Xote modules available unqualified inside your source files.
|
|
30
30
|
|
|
31
|
-
This README uses the application-facing names
|
|
31
|
+
This README uses the application-facing names for public code:
|
|
32
|
+
|
|
33
|
+
- `View` is the module for building and mounting DOM nodes.
|
|
34
|
+
- `Prop` is the static-or-reactive prop module.
|
|
35
|
+
- `View.Text`, `View.Int`, `View.For`, `View.Show`, `View.Attr.*`, `Router.location`, and `SSRState.signal` are the building blocks used throughout these examples.
|
|
36
|
+
|
|
37
|
+
### JavaScript
|
|
38
|
+
|
|
39
|
+
Xote is built for ReScript first, but the compiled package can also be used from JavaScript. Import the focused client entry and build nodes with `View` or `Html` helpers:
|
|
40
|
+
|
|
41
|
+
```js
|
|
42
|
+
import { Signal, Computed, Effect, View } from "xote/client";
|
|
43
|
+
|
|
44
|
+
const count = Signal.make(0);
|
|
45
|
+
const doubled = Computed.make(() => Signal.get(count) * 2);
|
|
46
|
+
|
|
47
|
+
Effect.run(() => {
|
|
48
|
+
console.log("Count:", Signal.get(count));
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
const app = View.element("div", [], [], [
|
|
52
|
+
View.element("h1", [], [], [View.text("Counter")]),
|
|
53
|
+
View.element("p", [], [], [
|
|
54
|
+
View.text("Count: "),
|
|
55
|
+
View.signalText(() => String(Signal.get(count))),
|
|
56
|
+
]),
|
|
57
|
+
View.element("p", [], [], [
|
|
58
|
+
View.text("Doubled: "),
|
|
59
|
+
View.signalText(() => String(Signal.get(doubled))),
|
|
60
|
+
]),
|
|
61
|
+
View.element(
|
|
62
|
+
"button",
|
|
63
|
+
[],
|
|
64
|
+
[["click", () => Signal.update(count, n => n + 1)]],
|
|
65
|
+
[View.text("Increment")],
|
|
66
|
+
),
|
|
67
|
+
]);
|
|
68
|
+
|
|
69
|
+
View.mountById(app, "app");
|
|
70
|
+
```
|
|
32
71
|
|
|
33
|
-
|
|
34
|
-
- `Node` is a deprecated compatibility alias for `View` and will be removed in a future release.
|
|
35
|
-
- `Prop` is the official static-or-reactive prop module.
|
|
36
|
-
- `ReactiveProp` is a deprecated compatibility alias for `Prop`.
|
|
37
|
-
- `View.signalText`, `View.each`, `View.eachWithKey`, `View.Attr.*`, `Router.location`, and `SSRState.signal` are preferred in examples, while the deprecated `Node.signalText`, `Node.list`, `Node.keyedList`, `Node.attr`, `ReactiveProp.*`, and `SSRState.make` names remain supported.
|
|
72
|
+
Use `xote/client` for browser UI, `xote/router` for routing, `xote/ssr` for server rendering, `xote/hydration` for hydrating server-rendered pages, and `xote/mdx` for MDX integration.
|
|
38
73
|
|
|
39
74
|
### Quick Example
|
|
40
75
|
|
|
@@ -57,15 +92,17 @@ module App = {
|
|
|
57
92
|
|
|
58
93
|
// Build the UI with JSX
|
|
59
94
|
<div>
|
|
60
|
-
<h1>
|
|
95
|
+
<h1> <View.Text> "Counter" </View.Text> </h1>
|
|
61
96
|
<p>
|
|
62
|
-
|
|
97
|
+
<View.Text> "Count: " </View.Text>
|
|
98
|
+
<View.Int> {count} </View.Int>
|
|
63
99
|
</p>
|
|
64
100
|
<p>
|
|
65
|
-
|
|
101
|
+
<View.Text> "Doubled: " </View.Text>
|
|
102
|
+
<View.Int> {doubled} </View.Int>
|
|
66
103
|
</p>
|
|
67
104
|
<button onClick={(_evt: Dom.event) => Signal.update(count, n => n + 1)}>
|
|
68
|
-
|
|
105
|
+
<View.Text> "Increment" </View.Text>
|
|
69
106
|
</button>
|
|
70
107
|
</div>
|
|
71
108
|
}
|
|
@@ -86,7 +123,7 @@ Here's an example of a reusable component with properties:
|
|
|
86
123
|
@jsx.component
|
|
87
124
|
let make = (~name: string, ~greeting: string="Hello") => {
|
|
88
125
|
<p>
|
|
89
|
-
|
|
126
|
+
<View.Text> {`${greeting}, ${name}!`} </View.Text>
|
|
90
127
|
</p>
|
|
91
128
|
}
|
|
92
129
|
|
|
@@ -126,17 +163,13 @@ On top of the reactive primitives with signals, Xote provides a declarative view
|
|
|
126
163
|
```rescript
|
|
127
164
|
let className = Signal.make("card")
|
|
128
165
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
View.signalText(() => Signal.get(className)),
|
|
134
|
-
],
|
|
135
|
-
(),
|
|
136
|
-
)
|
|
166
|
+
<div class={Prop.signal(className)}>
|
|
167
|
+
<View.Text> "Status: " </View.Text>
|
|
168
|
+
<View.Text> {className} </View.Text>
|
|
169
|
+
</div>
|
|
137
170
|
```
|
|
138
171
|
|
|
139
|
-
For rendering collections, prefer `View.
|
|
172
|
+
For rendering collections in JSX, prefer `View.For`. Add `by` when items have stable identity and should reconcile by key:
|
|
140
173
|
|
|
141
174
|
```rescript
|
|
142
175
|
type todo = {id: string, title: string}
|
|
@@ -146,11 +179,55 @@ let todos = Signal.make([
|
|
|
146
179
|
{id: "2", title: "Ship release"},
|
|
147
180
|
])
|
|
148
181
|
|
|
149
|
-
View.
|
|
150
|
-
todos
|
|
151
|
-
todo => todo.id
|
|
152
|
-
todo => <li>
|
|
153
|
-
|
|
182
|
+
<View.For
|
|
183
|
+
each={Prop.signal(todos)}
|
|
184
|
+
by={todo => todo.id}
|
|
185
|
+
render={todo => <li> <View.Text> {todo.title} </View.Text> </li>}
|
|
186
|
+
/>
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
`View` also provides component primitives for static or reactive values. Their children can be raw values, signals, `Prop.t` values, or functions.
|
|
190
|
+
|
|
191
|
+
```rescript
|
|
192
|
+
<View.For
|
|
193
|
+
each={Prop.static(["Draft", "Review", "Ship"])}
|
|
194
|
+
render={label => <span> <View.Text> {label} </View.Text> </span>}
|
|
195
|
+
/>
|
|
196
|
+
|
|
197
|
+
<ul>
|
|
198
|
+
<View.For
|
|
199
|
+
each={Prop.signal(todos)}
|
|
200
|
+
by={todo => todo.id}
|
|
201
|
+
render={todo => <li> <View.Text> {todo.title} </View.Text> </li>}
|
|
202
|
+
/>
|
|
203
|
+
</ul>
|
|
204
|
+
|
|
205
|
+
<View.Show when_={Prop.signal(isReady)} fallback={<p> <View.Text> "Loading" </View.Text> </p>}>
|
|
206
|
+
<p> <View.Text> "Ready" </View.Text> </p>
|
|
207
|
+
</View.Show>
|
|
208
|
+
|
|
209
|
+
<View.Maybe
|
|
210
|
+
value={Prop.signal(selectedTodo)}
|
|
211
|
+
fallback={<p> <View.Text> "No selection" </View.Text> </p>}
|
|
212
|
+
render={todo => <p> <View.Text> {todo.title} </View.Text> </p>}
|
|
213
|
+
/>
|
|
214
|
+
|
|
215
|
+
<View.Value
|
|
216
|
+
value={Prop.signal(count)}
|
|
217
|
+
render={count =>
|
|
218
|
+
<p>
|
|
219
|
+
<View.Text> "Count: " </View.Text>
|
|
220
|
+
<View.Int> {count} </View.Int>
|
|
221
|
+
</p>
|
|
222
|
+
}
|
|
223
|
+
/>
|
|
224
|
+
|
|
225
|
+
<p>
|
|
226
|
+
<View.Text> "Count: " </View.Text>
|
|
227
|
+
<View.Int> {count} </View.Int>
|
|
228
|
+
<View.Text> ", ready: " </View.Text>
|
|
229
|
+
<View.Bool> {isReady} </View.Bool>
|
|
230
|
+
</p>
|
|
154
231
|
```
|
|
155
232
|
|
|
156
233
|
### Static or Reactive Props
|
|
@@ -166,23 +243,41 @@ let make = (~className: Prop.t<string>=Prop.static("badge"), ~children) => {
|
|
|
166
243
|
let tone = Signal.make("badge badge-info")
|
|
167
244
|
|
|
168
245
|
<Badge className={Prop.signal(tone)}>
|
|
169
|
-
|
|
246
|
+
<View.Text> "Live" </View.Text>
|
|
170
247
|
</Badge>
|
|
171
248
|
```
|
|
172
249
|
|
|
173
|
-
`Prop` is the
|
|
250
|
+
`Prop` is the module for static-or-reactive props.
|
|
174
251
|
|
|
175
252
|
### Router and SSR State
|
|
176
253
|
|
|
177
|
-
|
|
254
|
+
Initialize the router once at your app entry, then describe your screens with
|
|
255
|
+
the `Router.routes` component. Each route matches a pattern and receives the
|
|
256
|
+
parsed params:
|
|
178
257
|
|
|
179
258
|
```rescript
|
|
180
259
|
Router.init(())
|
|
181
260
|
|
|
182
|
-
let
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}
|
|
261
|
+
let app = () =>
|
|
262
|
+
Router.routes([
|
|
263
|
+
{pattern: "/", render: _ => <Home />},
|
|
264
|
+
{pattern: "/about", render: _ => <About />},
|
|
265
|
+
{
|
|
266
|
+
pattern: "/users/:id",
|
|
267
|
+
render: params =>
|
|
268
|
+
<UserPage id={params->Dict.get("id")->Option.getOr("")} />,
|
|
269
|
+
},
|
|
270
|
+
])
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
Use the `Router.Link` component for client-side navigation without a full page
|
|
274
|
+
reload:
|
|
275
|
+
|
|
276
|
+
```rescript
|
|
277
|
+
<nav>
|
|
278
|
+
<Router.Link to="/"> <View.Text> "Home" </View.Text> </Router.Link>
|
|
279
|
+
<Router.Link to="/about" class="nav-link"> <View.Text> "About" </View.Text> </Router.Link>
|
|
280
|
+
</nav>
|
|
186
281
|
```
|
|
187
282
|
|
|
188
283
|
For server/client state transfer, prefer `SSRState.signal` when creating a synced signal:
|
|
@@ -193,6 +288,10 @@ let count = SSRState.signal("count", 0, SSRState.Codec.int)
|
|
|
193
288
|
|
|
194
289
|
Check the [website](https://brnrdog.github.io/xote/) for more comprehensive documentations about Xote and Signals.
|
|
195
290
|
|
|
291
|
+
## Releasing
|
|
292
|
+
|
|
293
|
+
Releases are automated with semantic-release and published to npm. See [docs/RELEASING.md](docs/RELEASING.md) for the stable and beta channels and the release flow.
|
|
294
|
+
|
|
196
295
|
## License
|
|
197
296
|
|
|
198
297
|
LGPL v3
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r};function n(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 r(e){if(e!=null)return n(e)}function i(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}}var a={contents:0};function o(){return a.contents=a.contents+1|0,a.contents}var s={contents:0},c={contents:0};function l(){return{first:void 0,last:void 0,computedSubscriberCount:0,version:0,compute:void 0,firstDep:void 0,lastDep:void 0,flags:0,level:0,deferEffectsUntilRecompute:!1,lastGlobalVersion:0}}function ee(e,t){return{first:void 0,last:void 0,computedSubscriberCount:0,version:0,compute:e,firstDep:void 0,lastDep:void 0,flags:1,level:0,deferEffectsUntilRecompute:t===void 0?!1:t,lastGlobalVersion:0}}function te(e,t,n,r,i){return{id:e,kind:t,run:n,firstDep:void 0,lastDep:void 0,flags:1,level:0,name:r,backingSubs:i}}function u(e){e.flags&=-2}function ne(e){return(e.flags&2)!=0}function re(e){e.flags|=2}function ie(e){e.flags&=-3}function d(e){return(e.flags&1)!=0}function f(e){e.flags|=1}function p(e){e.flags&=-2}function ae(e){return(e.flags&2)!=0}function m(e){e.flags|=2}function oe(e){e.flags&=-3}function h(e){return e.compute!==void 0}function g(e,t){return{subs:e,observer:t,nextDep:void 0,prevDep:void 0,nextSub:void 0,prevSub:void 0,lastTrackedVersion:0}}function _(e,t){t.prevSub=e.last,t.nextSub=void 0;let n=e.last;if(n===void 0?e.first=t:n.nextSub=t,e.last=t,t.observer.compute!==void 0){e.computedSubscriberCount=e.computedSubscriberCount+1|0;return}}function v(e,t){t.prevDep=e.lastDep,t.nextDep=void 0;let n=e.lastDep;n===void 0?e.firstDep=t:n.nextDep=t,e.lastDep=t}function y(e){let t=e.subs,n=e.prevSub;n===void 0?t.first=e.nextSub:n.nextSub=e.nextSub;let r=e.nextSub;if(r===void 0?t.last=e.prevSub:r.prevSub=e.prevSub,e.prevSub=void 0,e.nextSub=void 0,e.observer.compute!==void 0&&t.computedSubscriberCount>0){t.computedSubscriberCount=t.computedSubscriberCount-1|0;return}}function se(e,t){let n=t.prevDep;n===void 0?e.firstDep=t.nextDep:n.nextDep=t.nextDep;let r=t.nextDep;r===void 0?e.lastDep=t.prevDep:r.prevDep=t.prevDep,t.prevDep=void 0,t.nextDep=void 0}function ce(e,t){let n=t.prevDep;n===void 0?e.firstDep=t.nextDep:n.nextDep=t.nextDep;let r=t.nextDep;r===void 0?e.lastDep=t.prevDep:r.prevDep=t.prevDep,t.prevDep=void 0,t.nextDep=void 0}function le(e){let t=e.firstDep;for(;t!==void 0;){let e=t;if(e!==void 0){let n=e.nextDep;y(e),t=n}}e.firstDep=void 0,e.lastDep=void 0}function ue(e){let t=e.firstDep;for(;t!==void 0;){let e=t;if(e!==void 0){let n=e.nextDep;y(e),t=n}}e.firstDep=void 0,e.lastDep=void 0}function b(e,t){t.prevDep=e.lastDep,t.nextDep=void 0;let n=e.lastDep;n===void 0?e.firstDep=t:n.nextDep=t,e.lastDep=t}var x={contents:void 0},S={contents:void 0},C={contents:0},w={contents:void 0},T={contents:void 0},E=[],D=[],O={contents:!1},k={contents:!1},A={contents:!1},j={contents:0},M={contents:0},N=[],de=(function(e){e.length=0}),P=(function(e,t){if(!(t<=0)){if(t>=e.length){e.length=0;return}e.copyWithin(0,t),e.length-=t}});function F(e){ne(e)||(re(e),E.length===0?k.contents=!1:e.level<j.contents&&(k.contents=!0),E.push(e),j.contents=e.level)}function fe(e){ae(e)||(m(e),D.length===0?A.contents=!1:e.level<M.contents&&(A.contents=!0),D.push(e),M.contents=e.level)}function I(e,t){if(e.firstDep===void 0){let n=g(t,e);n.lastTrackedVersion=C.contents,b(e,n),_(t,n),w.contents=n;return}let n=C.contents,r=!1,i=w.contents;if(i!==void 0)if(i.subs===t&&i.observer===e)i.lastTrackedVersion=n,r=!0;else{let a=i.nextDep;a!==void 0&&a.subs===t&&a.observer===e&&(a.lastTrackedVersion=n,w.contents=a,r=!0)}if(!r){let i=t.last;i!==void 0&&i.lastTrackedVersion===n&&i.observer===e&&(i.lastTrackedVersion=n,w.contents=i,r=!0)}if(r)return;let a=!1,o,s=e.firstDep;for(;s!==void 0&&!a;){let e=s;e!==void 0&&(e.subs===t?(e.lastTrackedVersion=n,o=e,a=!0):s=e.nextDep)}if(a){w.contents=o;return}let c=g(t,e);c.lastTrackedVersion=n,b(e,c),_(t,c),w.contents=c}function L(e,t){if(e.firstDep===void 0){let n=g(t,e);n.lastTrackedVersion=C.contents,v(e,n),_(t,n),T.contents=n;return}let n=C.contents,r=!1,i=T.contents;if(i!==void 0)if(i.subs===t&&i.observer===e)i.lastTrackedVersion=n,r=!0;else{let a=i.nextDep;a!==void 0&&a.subs===t&&a.observer===e&&(a.lastTrackedVersion=n,T.contents=a,r=!0)}if(!r){let i=t.last;i!==void 0&&i.lastTrackedVersion===n&&i.observer===e&&(i.lastTrackedVersion=n,T.contents=i,r=!0)}if(r)return;let a=!1,o,s=e.firstDep;for(;s!==void 0&&!a;){let e=s;e!==void 0&&(e.subs===t?(e.lastTrackedVersion=n,o=e,a=!0):s=e.nextDep)}if(a){T.contents=o;return}let c=g(t,e);c.lastTrackedVersion=n,v(e,c),_(t,c),T.contents=c}function R(e){let t=x.contents;if(t!==void 0)return I(t,e);let n=S.contents;if(n!==void 0)return L(n,e)}function z(e,t){return e.level-t.level|0}function B(e,t){return e.level-t.level|0}function V(e){let t=0,n=e.firstDep;for(;n!==void 0;){let e=n;e!==void 0&&(h(e.subs)&&e.subs.level>t&&(t=e.subs.level),n=e.nextDep)}return t+1|0}function H(e){let t=0,n=e.firstDep;for(;n!==void 0;){let e=n;e!==void 0&&(h(e.subs)&&e.subs.level>t&&(t=e.subs.level),n=e.nextDep)}return t+1|0}function U(e,t){let n=C.contents,r=e.version;s.contents=s.contents+1|0,C.contents=s.contents,t&&oe(e);let i=x.contents,a=w.contents;x.contents=e,w.contents=e.firstDep;try{let t=e.compute;t!==void 0&&t();let o=e.firstDep;for(;o!==void 0;){let t=o;if(t!==void 0){let n=t.nextDep;t.lastTrackedVersion!==C.contents&&(y(t),ce(e,t)),o=n}}if(p(e),e.lastGlobalVersion=c.contents,e.first!==void 0&&e.version!==r){let t=e.first;for(;t!==void 0;){let e=t;if(e!==void 0){let n=e.observer;if(h(n))f(n);else{let t=S.contents;t!==void 0&&t===e.observer||F(e.observer)}t=e.nextSub}}}x.contents=i,w.contents=a,C.contents=n;return}catch(e){throw x.contents=i,w.contents=a,C.contents=n,e}}function pe(e){let t=e.level;if(U(e,!0),t===0){e.level=V(e);return}}function me(e){let t=e.level,n=C.contents;s.contents=s.contents+1|0,C.contents=s.contents,ie(e);let r=S.contents,i=T.contents;S.contents=e,T.contents=e.firstDep;try{e.run();let t=e.firstDep;for(;t!==void 0;){let n=t;if(n!==void 0){let r=n.nextDep;n.lastTrackedVersion!==C.contents&&(y(n),se(e,n)),t=r}}u(e),S.contents=r,T.contents=i,C.contents=n}catch(e){throw S.contents=r,T.contents=i,C.contents=n,e}if(t===0){e.level=H(e);return}}function W(){O.contents=!0;try{for(;E.length!==0||D.length!==0;){if(D.length!==0){let e=D.length;e>1&&A.contents&&(D.sort(B),A.contents=!1);let t=0;for(;t<e;){let e=D[t];e!==void 0&&pe(e),t=t+1|0}P(D,e),D.length===0&&(A.contents=!1)}if(E.length!==0){let e=E.length;e>1&&k.contents&&(E.sort(z),k.contents=!1);let t=0;for(;t<e;){let e=E[t];e!==void 0&&me(e),t=t+1|0}P(E,e),E.length===0&&(k.contents=!1)}}O.contents=!1;return}catch(e){throw O.contents=!1,e}}function he(e){if(e.first!==void 0)if(!h(e)&&e.computedSubscriberCount===0){let t=e.first;for(;t!==void 0;){let e=t;e!==void 0&&(F(e.observer),t=e.nextSub)}}else{N.push(e);let t=0;for(;t<N.length;){let e=N[t];if(t=t+1|0,e!==void 0){let t=e.first;for(;t!==void 0;){let n=t;if(n!==void 0){let r=n.observer;h(r)?d(r)||(f(r),N.push(r)):h(e)&&e.deferEffectsUntilRecompute?fe(e):F(n.observer),t=n.nextSub}}}}de(N)}if((E.length!==0||D.length!==0)&&!O.contents)return W()}function G(e){if(!h(e)||!d(e))return;if(e.lastGlobalVersion===c.contents)return p(e);let t=e.level;if(U(e,!1),t===0){e.level=V(e);return}}function ge(e){let t=O.contents;O.contents=!0;try{let n=e();return t||(O.contents=!1,(E.length!==0||D.length!==0)&&W()),n}catch(e){throw t||(O.contents=!1),e}}function _e(e){let t=x.contents,n=S.contents,r=w.contents,i=T.contents;x.contents=void 0,S.contents=void 0,w.contents=void 0,T.contents=void 0;try{let a=e();return x.contents=t,S.contents=n,w.contents=r,T.contents=i,a}catch(e){throw x.contents=t,S.contents=n,w.contents=r,T.contents=i,e}}function K(e,t){return e===t}function q(e,t){return!1}function ve(e,t,n){return{id:o(),value:e,equals:n===void 0?K:n,name:t,subs:l()}}function ye(e,t){return{id:o(),value:e,equals:q,name:t,subs:l()}}function be(e){return G(e.subs),R(e.subs),e.value}function xe(e){return G(e.subs),e.value}function J(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,c.contents=c.contents+1|0,he(e.subs)}function Se(e,t){J(e,t(e.value))}var Ce=ge,we=_e,Te=t({batch:()=>Ae,defaultEquals:()=>Ee,get:()=>X,make:()=>Y,makeForComputed:()=>Oe,neverEquals:()=>De,peek:()=>Z,set:()=>Q,untrack:()=>je,update:()=>ke}),Ee=K,De=q,Y=ve,Oe=ye,X=be,Z=xe,Q=J,ke=Se,Ae=Ce,je=we;function Me(e,t){delete e[t]}function Ne(e,t){if(e!==void 0)return n(t(i(e)))}function $(e,t){return e===void 0?t:i(e)}function Pe(e){return e!==void 0}var Fe=[`checked`,`disabled`,`required`,`readonly`,`multiple`,`aria-hidden`,`aria-expanded`,`aria-selected`,`draggable`,`hidden`,`contenteditable`,`spellcheck`,`autofocus`];function Ie(e){return Fe.includes(e)}function Le(e){return e?`true`:`false`}function Re(e){return e===`true`}Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return te}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return Te}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return le}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Ie}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return Ne}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Re}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return Me}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Le}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return p}});
|