xote 1.0.3 → 1.2.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/LICENSE +11 -18
- package/README.md +99 -42
- package/dist/xote.cjs +1 -1
- package/dist/xote.mjs +764 -416
- package/dist/xote.umd.js +1 -1
- package/package.json +10 -6
- package/dist/xote.cjs.map +0 -1
- package/dist/xote.mjs.map +0 -1
- package/dist/xote.umd.js.map +0 -1
package/LICENSE
CHANGED
|
@@ -1,21 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
Copyright (c) 2025 Bernardo Gurgel, Author of Xote
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This library is free software: you can redistribute it and/or modify it
|
|
4
|
+
under the terms of the GNU Lesser General Public License as published by
|
|
5
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
6
|
+
(at your option) any later version.
|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
8
|
+
This library is distributed in the hope that it will be useful,
|
|
9
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
11
|
+
GNU Lesser General Public License for more details.
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
13
|
+
You should have received a copy of the GNU Lesser General Public License
|
|
14
|
+
along with this library. If not, see https://www.gnu.org/licenses/.
|
package/README.md
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
# xote
|
|
2
|
-
|
|
1
|
+
# xote
|
|
2
|
+

|
|
3
|
+

|
|
4
|
+

|
|
3
5
|
|
|
4
|
-
|
|
6
|
+
Xote is a lightweight, zero-dependency library for ReScript with fine-grained reactivity based on the [TC39 Signals proposal](https://github.com/tc39/proposal-signals). With Xote, you can build reactive web applications with automatic dependency tracking and efficient updates.
|
|
5
7
|
|
|
6
8
|
## Features
|
|
7
9
|
|
|
8
10
|
- Zero dependencies: pure ReScript implementation
|
|
9
|
-
- Lightweight and efficient runtime
|
|
10
|
-
- Declarative components for building reactive UIs
|
|
11
|
+
- Lightweight and efficient runtime (~12kb minified)
|
|
12
|
+
- Declarative components for building reactive UIs with JSX support
|
|
11
13
|
- Reactive primitives: signals, computed values, and effects
|
|
12
14
|
- Automatic dependency tracking: no manual subscription management
|
|
13
15
|
- Fine-grained updates: direct DOM updates without a virtual DOM
|
|
16
|
+
- Signal-based router: SPA navigation with pattern matching and dynamic parameters
|
|
14
17
|
|
|
15
18
|
## Getting Started
|
|
16
19
|
|
|
@@ -32,59 +35,113 @@ Then, add it to your ReScript project’s dependencies in `rescript.json`:
|
|
|
32
35
|
}
|
|
33
36
|
```
|
|
34
37
|
|
|
38
|
+
## Philosophy
|
|
39
|
+
|
|
40
|
+
Xote focuses on clarity, control, and performance. It brings reactive programming to ReScript with minimal abstractions and no runtime dependencies. The goal is to offer precise, fine-grained updates and predictable behavior without a virtual DOM.
|
|
41
|
+
|
|
35
42
|
### Quick Example
|
|
36
43
|
|
|
44
|
+
#### Using JSX
|
|
45
|
+
|
|
37
46
|
```rescript
|
|
38
47
|
open Xote
|
|
39
48
|
|
|
40
|
-
|
|
41
|
-
let
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
~children=[Component.text("Increment")],
|
|
61
|
-
()
|
|
62
|
-
)
|
|
63
|
-
],
|
|
64
|
-
()
|
|
65
|
-
)
|
|
49
|
+
module App = {
|
|
50
|
+
let make = () => {
|
|
51
|
+
// Create reactive state
|
|
52
|
+
let count = Signal.make(0)
|
|
53
|
+
|
|
54
|
+
// Event handler
|
|
55
|
+
let increment = (_evt: Dom.event) => Signal.update(count, n => n + 1)
|
|
56
|
+
|
|
57
|
+
// Build the UI with JSX
|
|
58
|
+
<div>
|
|
59
|
+
<h1> {Component.text("Counter")} </h1>
|
|
60
|
+
<p>
|
|
61
|
+
{Component.textSignal(() => `Count: ${Signal.get(count)->Int.toString}`)}
|
|
62
|
+
</p>
|
|
63
|
+
<button onClick={increment}>
|
|
64
|
+
{Component.text("Increment")}
|
|
65
|
+
</button>
|
|
66
|
+
</div>
|
|
67
|
+
}
|
|
68
|
+
}
|
|
66
69
|
|
|
67
70
|
// Mount to the DOM
|
|
68
|
-
Component.mountById(
|
|
71
|
+
Component.mountById(<App />, "app")
|
|
69
72
|
```
|
|
70
73
|
|
|
71
|
-
|
|
74
|
+
## Core Concepts
|
|
72
75
|
|
|
73
|
-
|
|
76
|
+
- **Signal**: Reactive state container
|
|
77
|
+
- **Computed**: Derived reactive value that updates automatically
|
|
78
|
+
- **Effect**: Side-effect functions that re-runs when dependencies change. Dependencies are automatically tracked, unlike React.
|
|
79
|
+
- **Component**: Declarative UI builder using ReScript functions
|
|
80
|
+
- **Router**: Signal-based navigation for single-page applications
|
|
74
81
|
|
|
75
|
-
|
|
82
|
+
### Component Features
|
|
76
83
|
|
|
77
|
-
|
|
84
|
+
- **JSX syntax**: Use HTML tags like `<div>`, `<button>`, `<input>`
|
|
85
|
+
- **Props**: Standard HTML attributes like `class`, `id`, `style`, `value`, `placeholder`
|
|
86
|
+
- **Event handlers**: `onClick`, `onInput`, `onChange`, `onSubmit`, etc.
|
|
87
|
+
- **Reactive content**: Wrap reactive text with `Component.textSignal(() => ...)`
|
|
88
|
+
- **Component functions**: Define reusable components as functions that return JSX
|
|
89
|
+
|
|
90
|
+
### Xote.Router Features
|
|
91
|
+
|
|
92
|
+
- **Initialization**: Call `Router.init()` once at app start
|
|
93
|
+
- **Imperative navigation**: Use `Router.push()` and `Router.replace()` to navigate programmatically
|
|
94
|
+
- **Declarative routing**: Define routes with `Router.routes()` and render components based on URL patterns
|
|
95
|
+
- **Dynamic parameters**: Extract URL parameters using `:param` syntax (e.g., `/users/:id`)
|
|
96
|
+
- **Navigation links**: Use `Router.link()` for SPA navigation without page reload
|
|
97
|
+
- **Reactive location**: Access current route via `Router.location` signal
|
|
98
|
+
|
|
99
|
+
## Examples
|
|
78
100
|
|
|
79
|
-
|
|
80
|
-
- **Computed**: Derived reactive value that updates automatically
|
|
81
|
-
- **Effect**: Function that re-runs when dependencies change
|
|
82
|
-
- **Component**: Declarative UI builder using ReScript functions
|
|
101
|
+
Check some examples of applications built with Xote at https://brnrdog.github.io/xote/demos/.
|
|
83
102
|
|
|
84
|
-
|
|
103
|
+
### Running Examples Locally
|
|
104
|
+
|
|
105
|
+
To run the example demos locally:
|
|
106
|
+
|
|
107
|
+
1. Clone the repository:
|
|
108
|
+
```bash
|
|
109
|
+
git clone https://github.com/brnrdog/xote.git
|
|
110
|
+
cd xote
|
|
111
|
+
```
|
|
85
112
|
|
|
113
|
+
2. Install dependencies:
|
|
114
|
+
```bash
|
|
115
|
+
npm install
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
3. Compile ReScript and start the dev server:
|
|
119
|
+
```bash
|
|
120
|
+
npm run res:dev # In one terminal (watches ReScript files)
|
|
121
|
+
npm run dev # In another terminal (starts Vite dev server)
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
4. Open your browser and navigate to `http://localhost:5173`
|
|
125
|
+
|
|
126
|
+
The demo app includes a navigation menu to explore all examples interactively.
|
|
127
|
+
|
|
128
|
+
## Documentation
|
|
129
|
+
|
|
130
|
+
Comprehensive documentation with live embedded demos is available at:
|
|
131
|
+
|
|
132
|
+
**https://brnrdog.github.io/xote/**
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
### Building Documentation Locally
|
|
136
|
+
|
|
137
|
+
To build and preview the documentation site:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
npm run docs:start
|
|
141
|
+
```
|
|
86
142
|
|
|
143
|
+
This will build the demos and start the documentation server at `http://localhost:3000`.
|
|
87
144
|
|
|
88
145
|
## License
|
|
89
146
|
|
|
90
|
-
|
|
147
|
+
LGPL v3
|
package/dist/xote.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var V=(function(n,e){for(var r in n)e(r)});function j(n,e){if(n===e)return!0;var r=typeof n;if(r==="string"||r==="number"||r==="bigint"||r==="boolean"||r==="undefined"||n===null)return!1;var t=typeof e;if(r==="function"||t==="function")throw{RE_EXN_ID:"Invalid_argument",_1:"equal: functional value",Error:new Error};if(t==="number"||t==="bigint"||t==="undefined"||e===null)return!1;var u=n.TAG,i=e.TAG;if(u===248)return n[1]===e[1];if(u===251)throw{RE_EXN_ID:"Invalid_argument",_1:"equal: abstract value",Error:new Error};if(u!==i)return!1;var o=n.length|0,a=e.length|0;if(o===a)if(Array.isArray(n))for(var f=0;;){var c=f;if(c===o)return!0;if(!j(n[c],e[c]))return!1;f=c+1|0}else{if(n instanceof Date&&e instanceof Date)return!(n>e||n<e);var g={contents:!0},nn=function(b){if(!Object.prototype.hasOwnProperty.call(e,b)){g.contents=!1;return}},en=function(b){if(!Object.prototype.hasOwnProperty.call(n,b)||!j(e[b],n[b])){g.contents=!1;return}};return V(n,nn),g.contents&&V(e,en),g.contents}else return!1}function X(n,e,r){for(var t=new Array(r),u=0,i=e;u<r;)t[u]=n[i],u=u+1|0,i=i+1|0;return t}function L(n,e){for(;;){var r=e,t=n,u=t.length,i=u===0?1:u,o=r.length,a=i-o|0;if(a===0)return t.apply(null,r);if(a>=0)return(function(f,c){return function(g){return L(f,c.concat([g]))}})(t,r);e=X(r,i,-a|0),n=t.apply(null,X(r,0,i))}}function rn(n,e){var r=n.length;if(r===1)return n(e);switch(r){case 1:return n(e);case 2:return function(t){return n(e,t)};case 3:return function(t,u){return n(e,t,u)};case 4:return function(t,u,i){return n(e,t,u,i)};case 5:return function(t,u,i,o){return n(e,t,u,i,o)};case 6:return function(t,u,i,o,a){return n(e,t,u,i,o,a)};case 7:return function(t,u,i,o,a,f){return n(e,t,u,i,o,a,f)};default:return L(n,[e])}}function tn(n){var e=n.length;return e===1?n:function(r){return rn(n,r)}}function un(n){return n===void 0?{BS_PRIVATE_NESTED_SOME_NONE:0}:n!==null&&n.BS_PRIVATE_NESTED_SOME_NONE!==void 0?{BS_PRIVATE_NESTED_SOME_NONE:n.BS_PRIVATE_NESTED_SOME_NONE+1|0}:n}function G(n){if(!(n!==null&&n.BS_PRIVATE_NESTED_SOME_NONE!==void 0))return n;var e=n.BS_PRIVATE_NESTED_SOME_NONE;if(e!==0)return{BS_PRIVATE_NESTED_SOME_NONE:e-1|0}}function S(n){return n!==void 0?n.h:0}function l(n,e,r,t){var u=S(n),i=S(t);return{k:e,v:r,h:u>=i?u+1|0:i+1|0,l:n,r:t}}function an(n,e){return{k:n,v:e,h:1,l:void 0,r:void 0}}function on(n,e){return n.v===e?n:{k:n.k,v:e,h:n.h,l:n.l,r:n.r}}function O(n,e,r,t){var u=n!==void 0?n.h:0,i=t!==void 0?t.h:0;if(u>(i+2|0)){var o=n.l,a=n.r;return S(o)>=S(a)?l(o,n.k,n.v,l(a,e,r,t)):l(l(o,n.k,n.v,a.l),a.k,a.v,l(a.r,e,r,t))}if(i<=(u+2|0))return{k:e,v:r,h:u>=i?u+1|0:i+1|0,l:n,r:t};var f=t.l,c=t.r;return S(c)>=S(f)?l(l(n,e,r,f),t.k,t.v,c):l(l(n,e,r,f.l),f.k,f.v,l(f.r,t.k,t.v,c))}function H(n,e,r){var t=n.l;return t!==void 0?O(H(t,e,r),n.k,n.v,n.r):(e.contents=n.k,r.contents=n.v,n.r)}function fn(n,e){for(;;){var r=n;if(r===void 0)return;var t=r.k;if(e===t)return un(r.v);n=e<t?r.l:r.r}}function E(n,e,r){if(n===void 0)return an(e,r);var t=n.k;if(e===t)return on(n,r);var u=n.v;return e<t?O(E(n.l,e,r),t,u,n.r):O(n.l,t,u,E(n.r,e,r))}function R(n,e){var r=n.k,t=n.l,u=n.r;if(e===r){if(t===void 0)return u;if(u===void 0)return t;var i={contents:u.k},o={contents:u.v},a=H(u,i,o);return O(t,i.contents,o.contents,a)}if(e<r){if(t===void 0)return n;var f=R(t,e);return f===t?n:O(f,r,n.v,u)}if(u===void 0)return n;var c=R(u,e);return O(t,r,n.v,c)}function cn(n,e){if(n!==void 0)return R(n,e)}var m=fn;function z(n){if(n!==void 0)return G(n);throw{RE_EXN_ID:"Not_found",Error:new Error}}function p(n,e,r){var t=n!==void 0?n.h:0,u=r!==void 0?r.h:0;return{v:e,h:(t>=u?t:u)+1|0,l:n,r}}function vn(n){return{v:n,h:1,l:void 0,r:void 0}}function q(n,e){return e!==void 0?n!==void 0?n.h>=e.h:!1:!0}function T(n,e,r){var t=n!==void 0?n.h:0,u=r!==void 0?r.h:0;if(t>(u+2|0)){var i=n.l,o=n.r;return q(i,o)?p(i,n.v,p(o,e,r)):p(p(i,n.v,o.l),o.v,p(o.r,e,r))}if(u<=(t+2|0))return{v:e,h:(t>=u?t:u)+1|0,l:n,r};var a=r.l,f=r.r;return q(f,a)?p(p(n,e,a),r.v,f):p(p(n,e,a.l),a.v,p(a.r,r.v,f))}function W(n,e){var r=n.l;return r!==void 0?T(W(r,e),n.v,n.r):(e.contents=n.v,n.r)}function U(n,e){for(;;){var r=n;if(r===void 0)return;U(r.l,e),e(r.v),n=r.r}}function dn(n,e){U(n,tn(e))}function sn(n,e){for(;;){var r=n;if(r===void 0)return!1;var t=r.v;if(e===t)return!0;n=e<t?r.l:r.r}}function N(n,e){if(n===void 0)return vn(e);var r=n.v;if(e===r)return n;var t=n.l,u=n.r;if(e<r){var i=N(t,e);return i===t?n:T(i,r,u)}var o=N(u,e);return o===u?n:T(t,r,o)}function D(n,e){if(n===void 0)return n;var r=n.v,t=n.l,u=n.r;if(e===r){if(t===void 0)return u;if(u===void 0)return t;var i={contents:u.v},o=W(u,i);return T(t,i.contents,o)}if(e<r){var a=D(t,e);return a===t?n:T(a,r,u)}var f=D(u,e);return f===u?n:T(t,r,f)}var ln=sn,k=dn,_={contents:void 0},d={contents:void 0},pn={contents:void 0},v={contents:void 0},h={contents:void 0},I={contents:!1};function M(n){var e=m(d.contents,n);if(e===void 0){d.contents=E(d.contents,n,void 0);return}}function J(n,e){M(e);var r=z(m(_.contents,n));if(j(v.contents,n)&&ln(r.deps,e)===!1){r.deps=N(r.deps,e);var t=z(m(d.contents,e));d.contents=E(d.contents,e,N(t,n))}}function y(n){k(n.deps,(function(e){var r=m(d.contents,e);if(r!==void 0){d.contents=E(d.contents,e,D(G(r),n.id));return}})),n.deps=void 0}function w(n){if(h.contents=N(h.contents,n),I.contents===!1){var e=h.contents;h.contents=void 0,k(e,(function(r){var t=m(_.contents,r);if(t!==void 0){y(t),v.contents=r,t.run(),v.contents=void 0;return}}))}}function Q(n){M(n);var e=m(d.contents,n);if(e!==void 0)return k(G(e),w)}function _n(n){var e=v.contents;v.contents=void 0;var r=n();return v.contents=e,r}function hn(n){var e=I.contents;I.contents=!0;var r=n();if(I.contents=e,h.contents!==void 0){var t=h.contents;h.contents=void 0,k(t,(function(u){w(u)}))}return r}var En,mn,gn,Sn;const On=Object.freeze(Object.defineProperty({__proto__:null,Id:Sn,IntMap:mn,IntSet:En,Observer:gn,addDep:J,batch:hn,batching:I,clearDeps:y,currentObserverId:v,ensureSignalBucket:M,notify:Q,observers:_,pending:h,schedule:w,signalObservers:d,signalPeeks:pn,untrack:_n},Symbol.toStringTag,{value:"Module"}));var P={contents:0};function F(){return P.contents=P.contents+1|0,P.contents}function B(n){var e=F(),r={id:e,kind:"Effect",run:(function(){n()}),deps:void 0};_.contents=E(_.contents,e,r),y(r),v.contents=e,r.run(),v.contents=void 0;var t=function(){var u=m(_.contents,e);if(u!==void 0){y(u),_.contents=cn(_.contents,e);return}};return{dispose:t}}var Tn,bn,In,$n,Nn,yn;const An=Object.freeze(Object.defineProperty({__proto__:null,Core:yn,Id:In,IntMap:bn,IntSet:Tn,Observer:$n,Signal:Nn,run:B},Symbol.toStringTag,{value:"Module"}));function Y(n){var e=F();return M(e),{id:e,value:{contents:n},version:{contents:0}}}function A(n){var e=v.contents;return e!==void 0&&J(e,n.id),n.value.contents}function Z(n){return n.value.contents}function C(n,e){n.value.contents=e,n.version.contents=n.version.contents+1|0,Q(n.id)}function Cn(n,e){C(n,e(n.value.contents))}var kn,Mn,Pn,jn,Rn;const Dn=Object.freeze(Object.defineProperty({__proto__:null,Core:Rn,Id:jn,IntMap:Mn,IntSet:kn,Observer:Pn,get:A,make:Y,peek:Z,set:C,update:Cn},Symbol.toStringTag,{value:"Module"}));function K(n){var e=Y(),r={contents:!1},t=F(),u=function(){var o=n();return r.contents===!1&&(r.contents=!0),C(e,o)},i={id:t,kind:{NAME:"Computed",VAL:e.id},run:u,deps:void 0};return _.contents=E(_.contents,t,i),y(i),v.contents=t,i.run(),v.contents=void 0,e}var Bn,Gn,wn,Fn,Vn,Xn;const zn=Object.freeze(Object.defineProperty({__proto__:null,Core:Fn,Id:Xn,IntMap:Gn,IntSet:Bn,Observer:Vn,Signal:wn,make:K},Symbol.toStringTag,{value:"Module"}));function qn(n){return{TAG:"Text",_0:n}}function Ln(n){return{TAG:"SignalText",_0:n}}function Hn(n){return{TAG:"Fragment",_0:n}}function Wn(n){return{TAG:"SignalFragment",_0:n}}function Un(n,e){var r=K(function(){return A(n).map(e)});return{TAG:"SignalFragment",_0:r}}function s(n,e,r,t,u){var i=e!==void 0?e:[].map(function(f){return f}),o=r!==void 0?r:[].map(function(f){return f}),a=t!==void 0?t:[].map(function(f){return f});return{TAG:"Element",tag:n,attrs:i,events:o,children:a}}function Jn(n,e,r,t){return s("div",n,e,r)}function Qn(n,e,r,t){return s("span",n,e,r)}function Yn(n,e,r,t){return s("button",n,e,r)}function Zn(n,e,r){return s("input",n,e,void 0)}function Kn(n,e,r,t){return s("h1",n,e,r)}function xn(n,e,r,t){return s("h2",n,e,r)}function ne(n,e,r,t){return s("h3",n,e,r)}function ee(n,e,r,t){return s("p",n,e,r)}function re(n,e,r,t){return s("ul",n,e,r)}function te(n,e,r,t){return s("li",n,e,r)}function $(n){switch(n.TAG){case"Element":var e=document.createElement(n.tag);return n.attrs.forEach(function(a){e.setAttribute(a[0],a[1])}),n.events.forEach(function(a){e.addEventListener(a[0],a[1])}),n.children.forEach(function(a){var f=$(a);e.appendChild(f)}),e;case"Text":return document.createTextNode(n._0);case"SignalText":var r=n._0,t=document.createTextNode(Z(r));return B(function(){var a=A(r);t.textContent=a}),t;case"Fragment":var u=document.createDocumentFragment();return n._0.forEach(function(a){var f=$(a);u.appendChild(f)}),u;case"SignalFragment":var i=n._0,o=document.createElement("div");return o.setAttribute("data-signal-fragment","true"),o.setAttribute("style","display: contents"),B(function(){var a=A(i);o.innerHTML="",a.forEach(function(f){var c=$(f);o.appendChild(c)})}),o}}function x(n,e){var r=$(n);e.appendChild(r)}function ue(n,e){var r=document.getElementById(e);if(r==null){console.error("Container element not found: "+e);return}else return x(n,r)}var ie,ae,oe,fe;const ce=Object.freeze(Object.defineProperty({__proto__:null,Computed:fe,Core:oe,Effect:ae,Signal:ie,button:Yn,div:Jn,element:s,fragment:Hn,h1:Kn,h2:xn,h3:ne,input:Zn,li:te,list:Un,mount:x,mountById:ue,p:ee,render:$,signalFragment:Wn,span:Qn,text:qn,textSignal:Ln,ul:re},Symbol.toStringTag,{value:"Module"}));var ve=ce,de=zn,se=On,le=An,pe=Dn;exports.Component=ve;exports.Computed=de;exports.Core=se;exports.Effect=le;exports.Signal=pe;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function Ee(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 v(e){if(!(e!==null&&e.BS_PRIVATE_NESTED_SOME_NONE!==void 0))return e;var n=e.BS_PRIVATE_NESTED_SOME_NONE;if(n!==0)return{BS_PRIVATE_NESTED_SOME_NONE:n-1|0}}function $e(e){return e!==void 0}var z={contents:0};function J(){return z.contents=z.contents+1|0,z.contents}var Z=(function(e,n){for(var r in e)n(r)});function L(e,n){if(e===n)return!0;var r=typeof e;if(r==="string"||r==="number"||r==="bigint"||r==="boolean"||r==="undefined"||e===null)return!1;var t=typeof n;if(r==="function"||t==="function")throw{RE_EXN_ID:"Invalid_argument",_1:"equal: functional value",Error:new Error};if(t==="number"||t==="bigint"||t==="undefined"||n===null)return!1;var u=e.TAG,a=n.TAG;if(u===248)return e[1]===n[1];if(u===251)throw{RE_EXN_ID:"Invalid_argument",_1:"equal: abstract value",Error:new Error};if(u!==a)return!1;var o=e.length|0,i=n.length|0;if(o===i)if(Array.isArray(e))for(var f=0;;){var c=f;if(c===o)return!0;if(!L(e[c],n[c]))return!1;f=c+1|0}else{if(e instanceof Date&&n instanceof Date)return!(e>n||e<n);var d={contents:!0},g=function(S){if(!Object.prototype.hasOwnProperty.call(n,S)){d.contents=!1;return}},X=function(S){if(!Object.prototype.hasOwnProperty.call(e,S)||!L(n[S],e[S])){d.contents=!1;return}};return Z(e,g),d.contents&&Z(n,X),d.contents}else return!1}function ee(e,n,r){for(var t=new Array(r),u=0,a=n;u<r;)t[u]=e[a],u=u+1|0,a=a+1|0;return t}function te(e,n){for(;;){var r=n,t=e,u=t.length,a=u===0?1:u,o=r.length,i=a-o|0;if(i===0)return t.apply(null,r);if(i>=0)return(function(f,c){return function(d){return te(f,c.concat([d]))}})(t,r);n=ee(r,a,-i|0),e=t.apply(null,ee(r,0,a))}}function ye(e,n){var r=e.length;if(r===1)return e(n);switch(r){case 1:return e(n);case 2:return function(t){return e(n,t)};case 3:return function(t,u){return e(n,t,u)};case 4:return function(t,u,a){return e(n,t,u,a)};case 5:return function(t,u,a,o){return e(n,t,u,a,o)};case 6:return function(t,u,a,o,i){return e(n,t,u,a,o,i)};case 7:return function(t,u,a,o,i,f){return e(n,t,u,a,o,i,f)};default:return te(e,[n])}}function be(e){var n=e.length;return n===1?e:function(r){return ye(e,r)}}function j(e){return e!==void 0?e.h:0}function p(e,n,r,t){var u=j(e),a=j(t);return{k:n,v:r,h:u>=a?u+1|0:a+1|0,l:e,r:t}}function Te(e,n){return{k:e,v:n,h:1,l:void 0,r:void 0}}function Ae(e,n){return e.v===n?e:{k:e.k,v:n,h:e.h,l:e.l,r:e.r}}function k(e,n,r,t){var u=e!==void 0?e.h:0,a=t!==void 0?t.h:0;if(u>(a+2|0)){var o=e.l,i=e.r;return j(o)>=j(i)?p(o,e.k,e.v,p(i,n,r,t)):p(p(o,e.k,e.v,i.l),i.k,i.v,p(i.r,n,r,t))}if(a<=(u+2|0))return{k:n,v:r,h:u>=a?u+1|0:a+1|0,l:e,r:t};var f=t.l,c=t.r;return j(c)>=j(f)?p(p(e,n,r,f),t.k,t.v,c):p(p(e,n,r,f.l),f.k,f.v,p(f.r,t.k,t.v,c))}function ue(e,n,r){var t=e.l;return t!==void 0?k(ue(t,n,r),e.k,e.v,e.r):(n.contents=e.k,r.contents=e.v,e.r)}function Ce(e,n){for(;;){var r=e;if(r===void 0)return;var t=r.k;if(n===t)return Ee(r.v);e=n<t?r.l:r.r}}function T(e,n,r){if(e===void 0)return Te(n,r);var t=e.k;if(n===t)return Ae(e,r);var u=e.v;return n<t?k(T(e.l,n,r),t,u,e.r):k(e.l,t,u,T(e.r,n,r))}function x(e,n){var r=e.k,t=e.l,u=e.r;if(n===r){if(t===void 0)return u;if(u===void 0)return t;var a={contents:u.k},o={contents:u.v},i=ue(u,a,o);return k(t,a.contents,o.contents,i)}if(n<r){if(t===void 0)return e;var f=x(t,n);return f===t?e:k(f,r,e.v,u)}if(u===void 0)return e;var c=x(u,n);return k(t,r,e.v,c)}function je(e,n){if(e!==void 0)return x(e,n)}var A=Ce;function ne(e){if(e!==void 0)return v(e);throw{RE_EXN_ID:"Not_found",Error:new Error}}function m(e,n,r){var t=e!==void 0?e.h:0,u=r!==void 0?r.h:0;return{v:n,h:(t>=u?t:u)+1|0,l:e,r}}function ke(e){return{v:e,h:1,l:void 0,r:void 0}}function re(e,n){return n!==void 0?e!==void 0?e.h>=n.h:!1:!0}function O(e,n,r){var t=e!==void 0?e.h:0,u=r!==void 0?r.h:0;if(t>(u+2|0)){var a=e.l,o=e.r;return re(a,o)?m(a,e.v,m(o,n,r)):m(m(a,e.v,o.l),o.v,m(o.r,n,r))}if(u<=(t+2|0))return{v:n,h:(t>=u?t:u)+1|0,l:e,r};var i=r.l,f=r.r;return re(f,i)?m(m(e,n,i),r.v,f):m(m(e,n,i.l),i.v,m(i.r,r.v,f))}function ae(e,n){var r=e.l;return r!==void 0?O(ae(r,n),e.v,e.r):(n.contents=e.v,e.r)}function ie(e,n){for(;;){var r=e;if(r===void 0)return;ie(r.l,n),n(r.v),e=r.r}}function Oe(e,n){ie(e,be(n))}function Ie(e,n){for(;;){var r=e;if(r===void 0)return!1;var t=r.v;if(n===t)return!0;e=n<t?r.l:r.r}}function P(e,n){if(e===void 0)return ke(n);var r=e.v;if(n===r)return e;var t=e.l,u=e.r;if(n<r){var a=P(t,n);return a===t?e:O(a,r,u)}var o=P(u,n);return o===u?e:O(t,r,o)}function K(e,n){if(e===void 0)return e;var r=e.v,t=e.l,u=e.r;if(n===r){if(t===void 0)return u;if(u===void 0)return t;var a={contents:u.v},o=ae(u,a);return O(t,a.contents,o)}if(n<r){var i=K(t,n);return i===t?e:O(i,r,u)}var f=K(u,n);return f===u?e:O(t,r,f)}var Me=Ie,B=Oe,_={contents:void 0},h={contents:void 0},Ne={contents:void 0},s={contents:void 0},$={contents:void 0},N={contents:!1};function F(e){var n=A(h.contents,e);if(n===void 0){h.contents=T(h.contents,e,void 0);return}}function oe(e,n){F(n);var r=ne(A(_.contents,e));if(L(s.contents,e)&&Me(r.deps,n)===!1){r.deps=P(r.deps,n);var t=ne(A(h.contents,n));h.contents=T(h.contents,n,P(t,e))}}function R(e){B(e.deps,(function(n){var r=A(h.contents,n);if(r!==void 0){h.contents=T(h.contents,n,K(v(r),e.id));return}})),e.deps=void 0}function W(e){if($.contents=P($.contents,e),N.contents===!1){var n=$.contents;$.contents=void 0,B(n,(function(r){var t=A(_.contents,r);if(t!==void 0){R(t),s.contents=r,t.run(),s.contents=void 0;return}}))}}function fe(e){F(e);var n=A(h.contents,e);if(n!==void 0)return B(v(n),W)}function we(e){var n=s.contents;s.contents=void 0;var r=e();return s.contents=n,r}function Pe(e){var n=N.contents;N.contents=!0;var r=e();if(N.contents=n,$.contents!==void 0){var t=$.contents;$.contents=void 0,B(t,(function(u){W(u)}))}return r}var Re,Ge,De,Xe;const Ve=Object.freeze(Object.defineProperty({__proto__:null,Id:Xe,IntMap:Ge,IntSet:Re,Observer:De,addDep:oe,batch:Pe,batching:N,clearDeps:R,currentObserverId:s,ensureSignalBucket:F,notify:fe,observers:_,pending:$,schedule:W,signalObservers:h,signalPeeks:Ne,untrack:we},Symbol.toStringTag,{value:"Module"}));function M(e){var n=J(),r={id:n,kind:"Effect",run:(function(){e()}),deps:void 0};_.contents=T(_.contents,n,r),R(r),s.contents=n,r.run(),s.contents=void 0;var t=function(){var u=A(_.contents,n);if(u!==void 0){R(u),_.contents=je(_.contents,n);return}};return{dispose:t}}var Be,Fe,ze,Le,xe,Ke;const qe=Object.freeze(Object.defineProperty({__proto__:null,Core:Ke,Id:ze,IntMap:Fe,IntSet:Be,Observer:Le,Signal:xe,run:M},Symbol.toStringTag,{value:"Module"}));function H(e){var n=J();return F(n),{id:n,value:{contents:e},version:{contents:0}}}function y(e){var n=s.contents;return n!==void 0&&oe(n,e.id),e.value.contents}function V(e){return e.value.contents}function b(e,n){e.value.contents=n,e.version.contents=e.version.contents+1|0,fe(e.id)}function Je(e,n){b(e,n(e.value.contents))}var We,He,Ue,Qe,Ye;const Ze=Object.freeze(Object.defineProperty({__proto__:null,Core:Ye,Id:Qe,IntMap:He,IntSet:We,Observer:Ue,get:y,make:H,peek:V,set:b,update:Je},Symbol.toStringTag,{value:"Module"}));function I(e){var n=H(),r={contents:!1},t=J(),u=function(){var o=e();return r.contents===!1&&(r.contents=!0),b(n,o)},a={id:t,kind:{NAME:"Computed",VAL:n.id},run:u,deps:void 0};return _.contents=T(_.contents,t,a),R(a),s.contents=t,a.run(),s.contents=void 0,n}var en,nn,rn,tn,un,an;const on=Object.freeze(Object.defineProperty({__proto__:null,Core:tn,Id:an,IntMap:nn,IntSet:en,Observer:un,Signal:rn,make:I},Symbol.toStringTag,{value:"Module"}));function G(e,n){return[e,{TAG:"Static",_0:n}]}function ce(e,n){return[e,{TAG:"SignalValue",_0:n}]}function de(e,n){return[e,{TAG:"Compute",_0:n}]}function ve(e){return{TAG:"Text",_0:e}}function fn(e){var n=I(e);return{TAG:"SignalText",_0:n}}function U(e){return{TAG:"Fragment",_0:e}}function Q(e){return{TAG:"SignalFragment",_0:e}}function cn(e,n){var r=I(function(){return y(e).map(n)});return{TAG:"SignalFragment",_0:r}}function l(e,n,r,t,u){var a=n!==void 0?n:[].map(function(f){return f}),o=r!==void 0?r:[].map(function(f){return f}),i=t!==void 0?t:[].map(function(f){return f});return{TAG:"Element",tag:e,attrs:a,events:o,children:i}}function dn(e,n,r,t){return l("div",e,n,r)}function vn(e,n,r,t){return l("span",e,n,r)}function sn(e,n,r,t){return l("button",e,n,r)}function ln(e,n,r){return l("input",e,n,void 0)}function hn(e,n,r,t){return l("h1",e,n,r)}function pn(e,n,r,t){return l("h2",e,n,r)}function mn(e,n,r,t){return l("h3",e,n,r)}function _n(e,n,r,t){return l("p",e,n,r)}function gn(e,n,r,t){return l("ul",e,n,r)}function Sn(e,n,r,t){return l("li",e,n,r)}function se(e,n,r,t){return l("a",e,n,r)}function w(e){switch(e.TAG){case"Element":var n=document.createElement(e.tag);return e.attrs.forEach(function(i){var f=i[1],c=i[0];switch(f.TAG){case"Static":n.setAttribute(c,f._0);return;case"SignalValue":var d=f._0;n.setAttribute(c,V(d)),M(function(){var S=y(d);n.setAttribute(c,S)});return;case"Compute":var g=f._0,X=I(function(){return g()});n.setAttribute(c,V(X)),M(function(){var S=y(X);n.setAttribute(c,S)});return}}),e.events.forEach(function(i){n.addEventListener(i[0],i[1])}),e.children.forEach(function(i){var f=w(i);n.appendChild(f)}),n;case"Text":return document.createTextNode(e._0);case"SignalText":var r=e._0,t=document.createTextNode(V(r));return M(function(){var i=y(r);t.textContent=i}),t;case"Fragment":var u=document.createDocumentFragment();return e._0.forEach(function(i){var f=w(i);u.appendChild(f)}),u;case"SignalFragment":var a=e._0,o=document.createElement("div");return o.setAttribute("data-signal-fragment","true"),o.setAttribute("style","display: contents"),M(function(){var i=y(a);o.innerHTML="",i.forEach(function(f){var c=w(f);o.appendChild(c)})}),o}}function le(e,n){var r=w(e);n.appendChild(r)}function En(e,n){var r=document.getElementById(n);if(r==null){console.error("Container element not found: "+n);return}else return le(e,r)}var $n,yn,bn,Tn;const An=Object.freeze(Object.defineProperty({__proto__:null,Computed:Tn,Core:bn,Effect:yn,Signal:$n,a:se,attr:G,button:sn,computedAttr:de,div:dn,element:l,fragment:U,h1:hn,h2:pn,h3:mn,input:ln,li:Sn,list:cn,mount:le,mountById:En,p:_n,render:w,signalAttr:ce,signalFragment:Q,span:vn,text:ve,textSignal:fn,ul:gn},Symbol.toStringTag,{value:"Module"}));function Cn(e,n){return e(n)}function jn(e,n){return e(n)}function kn(e,n,r,t){return e(n)}function On(e,n,r,t){return e(n)}function In(e){var n=e.children;return n!==void 0?n:U([])}function Mn(e){return U(e)}function Nn(){return ve("")}function wn(e){return e}function Pn(e){return e}function E(e,n){return typeof n=="function"?de(e,n):typeof n=="object"&&$e(n.id)?ce(e,n):G(e,n)}function he(e){var n=[],r=e.id;r!==void 0&&n.push(E("id",v(r)));var t=e.class;t!==void 0&&n.push(E("class",v(t)));var u=e.style;u!==void 0&&n.push(E("style",v(u)));var a=e.type;a!==void 0&&n.push(E("type",v(a)));var o=e.value;o!==void 0&&n.push(E("value",v(o)));var i=e.placeholder;i!==void 0&&n.push(E("placeholder",v(i)));var f=e.disabled;f!==void 0&&f&&n.push(G("disabled","true"));var c=e.checked;c!==void 0&&c&&n.push(G("checked","true"));var d=e.href;d!==void 0&&n.push(E("href",v(d)));var g=e.target;return g!==void 0&&n.push(E("target",v(g))),n}function pe(e){var n=[],r=e.onClick;r!==void 0&&n.push(["click",r]);var t=e.onInput;t!==void 0&&n.push(["input",t]);var u=e.onChange;u!==void 0&&n.push(["change",u]);var a=e.onSubmit;a!==void 0&&n.push(["submit",a]);var o=e.onFocus;o!==void 0&&n.push(["focus",o]);var i=e.onBlur;i!==void 0&&n.push(["blur",i]);var f=e.onKeyDown;f!==void 0&&n.push(["keydown",f]);var c=e.onKeyUp;c!==void 0&&n.push(["keyup",c]);var d=e.onMouseEnter;d!==void 0&&n.push(["mouseenter",d]);var g=e.onMouseLeave;return g!==void 0&&n.push(["mouseleave",g]),n}function me(e){var n=e.children;return n!==void 0?n.TAG==="Fragment"?n._0:[n]:[]}function D(e,n){return{TAG:"Element",tag:e,attrs:he(n),events:pe(n),children:me(n)}}function Rn(e,n){return D(e,n)}function Gn(e,n){return D(e,n)}function Dn(e,n,r,t){return D(e,n)}function Xn(e,n,r,t){return D(e,n)}var Vn={signal:wn,computed:Pn,convertAttrValue:E,propsToAttrs:he,propsToEvents:pe,getChildren:me,createElement:D,jsx:Rn,jsxs:Gn,jsxKeyed:Dn,jsxsKeyed:Xn},Bn;const Fn=Object.freeze(Object.defineProperty({__proto__:null,$$null:Nn,Component:Bn,Elements:Vn,array:Mn,jsx:Cn,jsxFragment:In,jsxKeyed:kn,jsxs:jn,jsxsKeyed:On},Symbol.toStringTag,{value:"Module"}));function zn(e,n){for(var r=e.length,t=new Array(r),u=0,a=0;a<r;++a){var o=e[a],i=n(o);i!==void 0&&(t[u]=v(i),u=u+1|0)}return t.length=u,t}function Ln(e,n){for(var r=0;;){var t=r;if(t===e.length)return;var u=n(e[t]);if(u!==void 0)return u;r=t+1|0}}function _e(e){return zn(e.split("/"),(function(n){if(n!=="")return n.startsWith(":")?{TAG:"Param",_0:n.slice(1)}:{TAG:"Static",_0:n}}))}function ge(e,n){var r=n.split("/").filter(function(a){return a!==""});if(e.length!==r.length)return"NoMatch";var t={},u=e.every(function(a,o){var i=r[o];return a.TAG==="Static"?i===a._0:(t[a._0]=i,!0)});return u?{TAG:"Match",_0:t}:"NoMatch"}function Y(e,n){return ge(_e(e),n)}const xn=Object.freeze(Object.defineProperty({__proto__:null,match:Y,matchPath:ge,parsePattern:_e},Symbol.toStringTag,{value:"Module"}));var C=H({pathname:"/",search:"",hash:""});function q(){return{pathname:window.location.pathname,search:window.location.search,hash:window.location.hash}}function Kn(){b(C,q());var e=function(n){b(C,q())};window.addEventListener("popstate",e)}function Se(e,n,r,t){var u=n!==void 0?n:"",a=r!==void 0?r:"",o={pathname:e,search:u,hash:a},i=e+u+a,f={};window.history.pushState(f,"",i),b(C,o)}function qn(e,n,r,t){var u=n!==void 0?n:"",a=r!==void 0?r:"",o={pathname:e,search:u,hash:a},i=e+u+a,f={};window.history.replaceState(f,"",i),b(C,o)}function Jn(e,n){return Q(I(function(){var r=y(C),t=Y(e,r.pathname);return typeof t!="object"?[]:[n(t._0)]}))}function Wn(e){return Q(I(function(){var n=y(C),r=Ln(e,(function(t){var u=Y(t.pattern,n.pathname);if(typeof u=="object")return t.render(u._0)}));return r!==void 0?[r]:[]}))}function Hn(e,n,r,t){var u=n!==void 0?n:[],a=r!==void 0?r:[],o=function(i){i.preventDefault(),Se(e,void 0,void 0)};return se(u.concat([G("href",e)]),[["click",o]],a)}var Un,Qn,Yn,Zn,er;const nr=Object.freeze(Object.defineProperty({__proto__:null,$$location:C,Component:Yn,Computed:Qn,Core:er,Route:Zn,Signal:Un,getCurrentLocation:q,init:Kn,link:Hn,push:Se,replace:qn,route:Jn,routes:Wn},Symbol.toStringTag,{value:"Module"}));var rr=An,tr=on,ur=Ve,ar=qe,ir=Fn,or=xn,fr=nr,cr=Ze;exports.Component=rr;exports.Computed=tr;exports.Core=ur;exports.Effect=ar;exports.JSX=ir;exports.Route=or;exports.Router=fr;exports.Signal=cr;
|