chizu 0.2.9 → 0.2.11
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/dist/chizu.js
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
1
|
+
var q = Object.defineProperty;
|
|
2
|
+
var k = (t) => {
|
|
3
3
|
throw TypeError(t);
|
|
4
4
|
};
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
import { jsx as p, Fragment as
|
|
9
|
-
import { Immer as
|
|
5
|
+
var z = (t, e, n) => e in t ? q(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;
|
|
6
|
+
var E = (t, e, n) => z(t, typeof e != "symbol" ? e + "" : e, n), O = (t, e, n) => e.has(t) || k("Cannot " + n);
|
|
7
|
+
var R = (t, e, n) => (O(t, e, "read from private field"), n ? n.call(t) : e.get(t)), b = (t, e, n) => e.has(t) ? k("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(t) : e.set(t, n), S = (t, e, n, r) => (O(t, e, "write to private field"), r ? r.call(t, n) : e.set(t, n), n);
|
|
8
|
+
import { jsx as p, Fragment as F } from "react/jsx-runtime";
|
|
9
|
+
import { Immer as T } from "immer";
|
|
10
10
|
import v from "lodash/get";
|
|
11
|
-
import
|
|
11
|
+
import M from "traverse";
|
|
12
12
|
import * as a from "react";
|
|
13
|
-
import
|
|
13
|
+
import j from "eventemitter3";
|
|
14
14
|
import * as h from "react-router-dom";
|
|
15
|
-
class
|
|
15
|
+
class C {
|
|
16
16
|
constructor(e) {
|
|
17
17
|
this.value = e;
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
class
|
|
20
|
+
class $ {
|
|
21
21
|
static Draft(e) {
|
|
22
|
-
return new
|
|
22
|
+
return new C(e);
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
E($, "Op", {
|
|
26
26
|
Add: 1,
|
|
27
27
|
Remove: 2,
|
|
28
28
|
Update: 4,
|
|
@@ -31,102 +31,102 @@ w(T, "Op", {
|
|
|
31
31
|
});
|
|
32
32
|
var m = /* @__PURE__ */ ((t) => (t.Mount = "lifecycle/mount", t.Node = "lifecycle/node", t.Derive = "lifecycle/derive", t.Error = "distributed/lifecycle/error", t.Unmount = "lifecycle/unmount", t))(m || {});
|
|
33
33
|
const l = {
|
|
34
|
-
immer: new
|
|
34
|
+
immer: new T(),
|
|
35
35
|
annotations: Symbol("annotations")
|
|
36
36
|
};
|
|
37
37
|
l.immer.setAutoFreeze(!1);
|
|
38
|
-
class
|
|
38
|
+
class P {
|
|
39
39
|
constructor(e, n, r = null) {
|
|
40
|
-
|
|
40
|
+
E(this, "process");
|
|
41
41
|
this.value = e, this.operations = n, this.field = r, this.process = null;
|
|
42
42
|
}
|
|
43
43
|
attach(e) {
|
|
44
44
|
return this.process = e, this;
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
function
|
|
48
|
-
return new
|
|
47
|
+
function J(t, e = []) {
|
|
48
|
+
return new P(t, e);
|
|
49
49
|
}
|
|
50
|
-
class
|
|
50
|
+
class D {
|
|
51
51
|
constructor(e, n = e) {
|
|
52
52
|
this.stateless = e, this.stateful = n;
|
|
53
53
|
}
|
|
54
54
|
get validatable() {
|
|
55
|
-
return
|
|
55
|
+
return I(this.stateful);
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
function
|
|
58
|
+
function I(t, e = []) {
|
|
59
59
|
return new Proxy(t, {
|
|
60
60
|
get(n, r) {
|
|
61
61
|
switch (r) {
|
|
62
62
|
case "is":
|
|
63
63
|
return (s) => {
|
|
64
|
-
const o =
|
|
64
|
+
const o = x(t, e);
|
|
65
65
|
if (!o) return !1;
|
|
66
66
|
const u = new Set(
|
|
67
|
-
o.flatMap((
|
|
67
|
+
o.flatMap((i) => i.operations)
|
|
68
68
|
);
|
|
69
69
|
return !!(Array.from(u).reduce(
|
|
70
|
-
(
|
|
70
|
+
(i, d) => i | (d ?? 0),
|
|
71
71
|
0
|
|
72
72
|
) & s);
|
|
73
73
|
};
|
|
74
74
|
case "pending":
|
|
75
|
-
return () => !!
|
|
75
|
+
return () => !!x(t, e);
|
|
76
76
|
case "draft":
|
|
77
77
|
return () => {
|
|
78
|
-
const s =
|
|
78
|
+
const s = x(t, e);
|
|
79
79
|
if (!s) return v(t, e);
|
|
80
|
-
const o = s.flatMap((u) => u.operations).find((u) => u instanceof
|
|
80
|
+
const o = s.flatMap((u) => u.operations).find((u) => u instanceof C);
|
|
81
81
|
return o ? o.value : v(t, e);
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
|
-
return
|
|
84
|
+
return I(t, [...e, String(r)]);
|
|
85
85
|
}
|
|
86
86
|
});
|
|
87
87
|
}
|
|
88
|
-
function
|
|
88
|
+
function x(t, e) {
|
|
89
89
|
const r = typeof v(t, e) == "object" ? e : e.slice(0, -1), s = r.length === 0 ? t : v(t, r), o = (s == null ? void 0 : s[l.annotations]) ?? [];
|
|
90
90
|
return o.length > 0 ? o : null;
|
|
91
91
|
}
|
|
92
92
|
function Q(t, e, n) {
|
|
93
93
|
function r(o) {
|
|
94
|
-
return
|
|
94
|
+
return M(o).forEach(function() {
|
|
95
95
|
if (this.key === l.annotations) {
|
|
96
96
|
this.block();
|
|
97
97
|
return;
|
|
98
98
|
}
|
|
99
|
-
this.node instanceof
|
|
99
|
+
this.node instanceof P && this.update(this.node.value);
|
|
100
100
|
});
|
|
101
101
|
}
|
|
102
102
|
function s(o) {
|
|
103
|
-
return
|
|
103
|
+
return M(o).forEach(function() {
|
|
104
104
|
if (this.key === l.annotations) {
|
|
105
105
|
this.block();
|
|
106
106
|
return;
|
|
107
107
|
}
|
|
108
|
-
if (this.node instanceof
|
|
109
|
-
const u = typeof this.node.value == "object",
|
|
108
|
+
if (this.node instanceof P) {
|
|
109
|
+
const u = typeof this.node.value == "object", c = [
|
|
110
110
|
...u ? this.path : this.path.slice(0, -1),
|
|
111
111
|
l.annotations
|
|
112
|
-
],
|
|
112
|
+
], i = v(t.stateful, c) ?? [], d = this.node.attach(e);
|
|
113
113
|
u ? this.update(
|
|
114
114
|
{
|
|
115
115
|
...this.node.value,
|
|
116
|
-
[l.annotations]: [d, ...
|
|
116
|
+
[l.annotations]: [d, ...i]
|
|
117
117
|
},
|
|
118
118
|
!0
|
|
119
|
-
) : (this.parent && (this.parent.node[l.annotations] = [d, ...
|
|
119
|
+
) : (this.parent && (this.parent.node[l.annotations] = [d, ...i]), this.update(this.node.value, !0));
|
|
120
120
|
}
|
|
121
121
|
});
|
|
122
122
|
}
|
|
123
|
-
return new
|
|
123
|
+
return new D(
|
|
124
124
|
r(l.immer.produce(t.stateless, n)),
|
|
125
125
|
s(l.immer.produce(t.stateful, n))
|
|
126
126
|
);
|
|
127
127
|
}
|
|
128
128
|
function A(t, e) {
|
|
129
|
-
const n =
|
|
129
|
+
const n = M(t.stateful).forEach(function() {
|
|
130
130
|
if (this.key === l.annotations) {
|
|
131
131
|
this.block();
|
|
132
132
|
return;
|
|
@@ -144,7 +144,7 @@ function A(t, e) {
|
|
|
144
144
|
);
|
|
145
145
|
}
|
|
146
146
|
});
|
|
147
|
-
return new
|
|
147
|
+
return new D(t.stateless, n);
|
|
148
148
|
}
|
|
149
149
|
function W(t) {
|
|
150
150
|
return (e, n) => async (r = Promise.withResolvers(), s) => {
|
|
@@ -153,41 +153,41 @@ function W(t) {
|
|
|
153
153
|
if (u == null)
|
|
154
154
|
return void r.resolve();
|
|
155
155
|
if (typeof u == "function") {
|
|
156
|
-
const
|
|
157
|
-
return t.model.current = A(
|
|
156
|
+
const c = u(t.model.current, o);
|
|
157
|
+
return t.model.current = A(c, o), t.update.rerender(), void r.resolve();
|
|
158
158
|
}
|
|
159
159
|
for (; ; ) {
|
|
160
|
-
const { value:
|
|
161
|
-
if (
|
|
162
|
-
const
|
|
163
|
-
t.model.current = A(
|
|
160
|
+
const { value: c, done: i } = await u.next();
|
|
161
|
+
if (i) {
|
|
162
|
+
const N = c(t.model.current, o);
|
|
163
|
+
t.model.current = A(N, o), t.update.rerender();
|
|
164
164
|
break;
|
|
165
165
|
}
|
|
166
|
-
const d =
|
|
166
|
+
const d = c;
|
|
167
167
|
t.model.current = d(t.model.current, o), t.update.rerender();
|
|
168
168
|
}
|
|
169
169
|
r.resolve();
|
|
170
170
|
};
|
|
171
171
|
}
|
|
172
|
-
function
|
|
172
|
+
function U(t) {
|
|
173
173
|
return t.startsWith("distributed");
|
|
174
174
|
}
|
|
175
|
-
var
|
|
175
|
+
var y, w;
|
|
176
176
|
class G extends Error {
|
|
177
177
|
constructor(n, r = null) {
|
|
178
178
|
super(String(r));
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
179
|
+
b(this, y);
|
|
180
|
+
b(this, w);
|
|
181
|
+
S(this, y, n), S(this, w, r);
|
|
182
182
|
}
|
|
183
183
|
get type() {
|
|
184
|
-
return
|
|
184
|
+
return R(this, y);
|
|
185
185
|
}
|
|
186
186
|
get message() {
|
|
187
|
-
return
|
|
187
|
+
return R(this, w) || "";
|
|
188
188
|
}
|
|
189
189
|
}
|
|
190
|
-
|
|
190
|
+
y = new WeakMap(), w = new WeakMap();
|
|
191
191
|
function K(t) {
|
|
192
192
|
return new Promise((e) => setTimeout(e, t));
|
|
193
193
|
}
|
|
@@ -197,12 +197,12 @@ function V(t) {
|
|
|
197
197
|
function X(t) {
|
|
198
198
|
return t instanceof G;
|
|
199
199
|
}
|
|
200
|
-
function
|
|
200
|
+
function g(t) {
|
|
201
201
|
return JSON.stringify(t);
|
|
202
202
|
}
|
|
203
203
|
const gt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
204
204
|
__proto__: null,
|
|
205
|
-
hash:
|
|
205
|
+
hash: g,
|
|
206
206
|
isEventError: X,
|
|
207
207
|
pk: V,
|
|
208
208
|
sleep: K
|
|
@@ -210,7 +210,7 @@ const gt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
|
210
210
|
function f(t, e) {
|
|
211
211
|
const n = a.useRef(null), r = a.useRef(null);
|
|
212
212
|
return a.useMemo(() => {
|
|
213
|
-
const s =
|
|
213
|
+
const s = g(e);
|
|
214
214
|
if (r.current !== s) {
|
|
215
215
|
r.current = s;
|
|
216
216
|
const o = t();
|
|
@@ -219,29 +219,29 @@ function f(t, e) {
|
|
|
219
219
|
return n.current;
|
|
220
220
|
}, e);
|
|
221
221
|
}
|
|
222
|
-
function
|
|
222
|
+
function _(t, e) {
|
|
223
223
|
const n = a.useRef(null);
|
|
224
224
|
a.useEffect(() => {
|
|
225
|
-
const r =
|
|
225
|
+
const r = g(e);
|
|
226
226
|
if (n.current !== r)
|
|
227
227
|
return n.current = r, t();
|
|
228
228
|
}, e);
|
|
229
229
|
}
|
|
230
|
-
const
|
|
231
|
-
appEmitter: new
|
|
230
|
+
const B = a.createContext({
|
|
231
|
+
appEmitter: new j()
|
|
232
232
|
});
|
|
233
|
-
function
|
|
234
|
-
return a.useContext(
|
|
233
|
+
function H() {
|
|
234
|
+
return a.useContext(B);
|
|
235
235
|
}
|
|
236
236
|
function Y(t) {
|
|
237
237
|
return () => {
|
|
238
238
|
const e = f(
|
|
239
239
|
() => ({
|
|
240
|
-
appEmitter: new
|
|
240
|
+
appEmitter: new j()
|
|
241
241
|
}),
|
|
242
242
|
[]
|
|
243
243
|
);
|
|
244
|
-
return /* @__PURE__ */ p(
|
|
244
|
+
return /* @__PURE__ */ p(B.Provider, { value: e, children: /* @__PURE__ */ p(t, {}) });
|
|
245
245
|
};
|
|
246
246
|
}
|
|
247
247
|
function Z(t) {
|
|
@@ -251,14 +251,16 @@ function Z(t) {
|
|
|
251
251
|
get model() {
|
|
252
252
|
return t.model.current.stateful;
|
|
253
253
|
},
|
|
254
|
+
get props() {
|
|
255
|
+
return t.options.props;
|
|
256
|
+
},
|
|
254
257
|
get router() {
|
|
255
258
|
return t.router.current;
|
|
256
259
|
},
|
|
257
260
|
queue: [],
|
|
258
|
-
props: t.options.props,
|
|
259
261
|
actions: {
|
|
260
262
|
annotate(e, n) {
|
|
261
|
-
return
|
|
263
|
+
return J(e, n);
|
|
262
264
|
},
|
|
263
265
|
produce(e) {
|
|
264
266
|
return (n, r) => Q(n, r, e);
|
|
@@ -274,10 +276,12 @@ function Z(t) {
|
|
|
274
276
|
get model() {
|
|
275
277
|
return t.model.current.stateless;
|
|
276
278
|
},
|
|
279
|
+
get props() {
|
|
280
|
+
return t.options.props;
|
|
281
|
+
},
|
|
277
282
|
get validate() {
|
|
278
283
|
return t.model.current.validatable;
|
|
279
284
|
},
|
|
280
|
-
props: t.options.props,
|
|
281
285
|
actions: {
|
|
282
286
|
dispatch([e, ...n]) {
|
|
283
287
|
if (e == null) return Promise.reject();
|
|
@@ -298,17 +302,17 @@ function L(t) {
|
|
|
298
302
|
}, []);
|
|
299
303
|
}
|
|
300
304
|
function tt(t) {
|
|
301
|
-
const e =
|
|
305
|
+
const e = H(), n = W(t);
|
|
302
306
|
return f(() => {
|
|
303
|
-
const r = new
|
|
307
|
+
const r = new j(), s = e.appEmitter;
|
|
304
308
|
return {
|
|
305
309
|
attach(o, u) {
|
|
306
|
-
const i = String(o);
|
|
307
|
-
N(i) ? s.on(i, n(o, u)) : r.on(i, n(o, u));
|
|
308
|
-
},
|
|
309
|
-
dispatch(o, u, i) {
|
|
310
310
|
const c = String(o);
|
|
311
|
-
|
|
311
|
+
U(c) ? s.on(c, n(o, u)) : r.on(c, n(o, u));
|
|
312
|
+
},
|
|
313
|
+
dispatch(o, u, c) {
|
|
314
|
+
const i = String(o);
|
|
315
|
+
U(i) ? s.emit(i, c, u) : r.emit(i, c, u);
|
|
312
316
|
}
|
|
313
317
|
};
|
|
314
318
|
}, []);
|
|
@@ -319,20 +323,20 @@ function et() {
|
|
|
319
323
|
}
|
|
320
324
|
function nt(t) {
|
|
321
325
|
var e, n, r, s;
|
|
322
|
-
|
|
323
|
-
t.dispatchers.dispatch(m.Derive, []);
|
|
326
|
+
_(() => {
|
|
327
|
+
t.dispatchers.dispatch(m.Derive, []), t.update.rerender();
|
|
324
328
|
}, [
|
|
325
329
|
t.options.props,
|
|
326
330
|
(e = t.router.current) == null ? void 0 : e.location,
|
|
327
331
|
(n = t.router.current) == null ? void 0 : n.params,
|
|
328
332
|
(s = (r = t.router.current) == null ? void 0 : r.search) == null ? void 0 : s[0]
|
|
329
|
-
]),
|
|
333
|
+
]), _(() => (t.dispatchers.dispatch(m.Mount, []), t.dispatchers.dispatch(m.Node, [
|
|
330
334
|
t.elements.customElement.current
|
|
331
335
|
]), () => t.dispatchers.dispatch(m.Unmount, [])), []);
|
|
332
336
|
}
|
|
333
337
|
function rt(t) {
|
|
334
338
|
const e = f(() => t.options.model ?? {}, []);
|
|
335
|
-
return a.useRef(new
|
|
339
|
+
return a.useRef(new D(e, e));
|
|
336
340
|
}
|
|
337
341
|
function ot() {
|
|
338
342
|
return a.useRef(/* @__PURE__ */ new Set());
|
|
@@ -341,28 +345,28 @@ function st() {
|
|
|
341
345
|
return a.useRef(null);
|
|
342
346
|
}
|
|
343
347
|
function ut({ using: t, children: e }) {
|
|
344
|
-
return h.useInRouterContext() ? /* @__PURE__ */ p(
|
|
348
|
+
return h.useInRouterContext() ? /* @__PURE__ */ p(ct, { using: t, children: e }) : e();
|
|
345
349
|
}
|
|
346
|
-
function
|
|
350
|
+
function ct({ using: t, children: e }) {
|
|
347
351
|
return t.current = {
|
|
348
352
|
navigate: h.useNavigate(),
|
|
349
353
|
location: h.useLocation(),
|
|
350
354
|
params: h.useParams(),
|
|
351
355
|
search: h.useSearchParams()
|
|
352
|
-
}, /* @__PURE__ */ p(
|
|
356
|
+
}, /* @__PURE__ */ p(F, { children: e() });
|
|
353
357
|
}
|
|
354
|
-
function
|
|
358
|
+
function it() {
|
|
355
359
|
const [t, e] = a.useReducer((n) => n + 1, 0);
|
|
356
360
|
return f(() => ({ hash: t, rerender: e }), [t]);
|
|
357
361
|
}
|
|
358
362
|
function at({
|
|
359
363
|
options: t
|
|
360
364
|
}) {
|
|
361
|
-
const e =
|
|
362
|
-
return L({ options: t, dispatchers:
|
|
365
|
+
const e = H(), n = it(), r = ot(), s = et(), o = st(), u = rt({ options: t }), c = tt({ app: e, options: t, update: n, model: u, queue: r }), i = Z({ app: e, options: t, model: u, dispatchers: c, router: o });
|
|
366
|
+
return L({ options: t, dispatchers: c, actions: i }), nt({ options: t, dispatchers: c, elements: s, router: o, update: n }), f(() => a.createElement(t.name, {
|
|
363
367
|
ref: s.customElement,
|
|
364
368
|
style: { display: "contents" },
|
|
365
|
-
children: /* @__PURE__ */ p(ut, { using: o, children: () => t.view(
|
|
369
|
+
children: /* @__PURE__ */ p(ut, { using: o, children: () => t.view(i.view) })
|
|
366
370
|
}), [n.hash]);
|
|
367
371
|
}
|
|
368
372
|
function lt(t) {
|
|
@@ -374,14 +378,14 @@ function lt(t) {
|
|
|
374
378
|
props: n
|
|
375
379
|
}
|
|
376
380
|
}),
|
|
377
|
-
(n, r) =>
|
|
381
|
+
(n, r) => g(n) === g(r)
|
|
378
382
|
);
|
|
379
383
|
}
|
|
380
384
|
const yt = { app: Y, module: lt };
|
|
381
385
|
export {
|
|
382
386
|
G as EventError,
|
|
383
387
|
m as Lifecycle,
|
|
384
|
-
|
|
388
|
+
$ as State,
|
|
385
389
|
yt as create,
|
|
386
390
|
gt as utils
|
|
387
391
|
};
|
package/dist/chizu.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(s,u){typeof exports=="object"&&typeof module<"u"?u(exports,require("react/jsx-runtime"),require("immer"),require("lodash/get"),require("traverse"),require("react"),require("eventemitter3"),require("react-router-dom")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","immer","lodash/get","traverse","react","eventemitter3","react-router-dom"],u):(s=typeof globalThis<"u"?globalThis:s||self,u(s.Chizu={},s.jsxRuntime,s.Immer,s.get,s.Traverse,s.React,s.EventEmitter3,s.ReactRouterDOM))})(this,function(s,u,l,m,S,
|
|
1
|
+
(function(s,u){typeof exports=="object"&&typeof module<"u"?u(exports,require("react/jsx-runtime"),require("immer"),require("lodash/get"),require("traverse"),require("react"),require("eventemitter3"),require("react-router-dom")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","immer","lodash/get","traverse","react","eventemitter3","react-router-dom"],u):(s=typeof globalThis<"u"?globalThis:s||self,u(s.Chizu={},s.jsxRuntime,s.Immer,s.get,s.Traverse,s.React,s.EventEmitter3,s.ReactRouterDOM))})(this,function(s,u,l,m,R,$,S,J){"use strict";var me=Object.defineProperty;var H=s=>{throw TypeError(s)};var pe=(s,u,l)=>u in s?me(s,u,{enumerable:!0,configurable:!0,writable:!0,value:l}):s[u]=l;var P=(s,u,l)=>pe(s,typeof u!="symbol"?u+"":u,l),F=(s,u,l)=>u.has(s)||H("Cannot "+l);var D=(s,u,l)=>(F(s,u,"read from private field"),l?l.call(s):u.get(s)),_=(s,u,l)=>u.has(s)?H("Cannot add the same private member more than once"):u instanceof WeakSet?u.add(s):u.set(s,l),x=(s,u,l,m)=>(F(s,u,"write to private field"),m?m.call(s,l):u.set(s,l),l);var b,E;function k(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const d=k($),g=k(J);class q{constructor(t){this.value=t}}class T{static Draft(t){return new q(t)}}P(T,"Op",{Add:1,Remove:2,Update:4,Move:8,Replace:16});var v=(e=>(e.Mount="lifecycle/mount",e.Node="lifecycle/node",e.Derive="lifecycle/derive",e.Error="distributed/lifecycle/error",e.Unmount="lifecycle/unmount",e))(v||{});const h={immer:new l.Immer,annotations:Symbol("annotations")};h.immer.setAutoFreeze(!1);class j{constructor(t,n,r=null){P(this,"process");this.value=t,this.operations=n,this.field=r,this.process=null}attach(t){return this.process=t,this}}function Q(e,t=[]){return new j(e,t)}class O{constructor(t,n=t){this.stateless=t,this.stateful=n}get validatable(){return A(this.stateful)}}function A(e,t=[]){return new Proxy(e,{get(n,r){switch(r){case"is":return c=>{const o=M(e,t);if(!o)return!1;const i=new Set(o.flatMap(f=>f.operations));return!!(Array.from(i).reduce((f,y)=>f|(y??0),0)&c)};case"pending":return()=>!!M(e,t);case"draft":return()=>{const c=M(e,t);if(!c)return m(e,t);const o=c.flatMap(i=>i.operations).find(i=>i instanceof q);return o?o.value:m(e,t)}}return A(e,[...t,String(r)])}})}function M(e,t){const r=typeof m(e,t)=="object"?t:t.slice(0,-1),c=r.length===0?e:m(e,r),o=(c==null?void 0:c[h.annotations])??[];return o.length>0?o:null}function W(e,t,n){function r(o){return R(o).forEach(function(){if(this.key===h.annotations){this.block();return}this.node instanceof j&&this.update(this.node.value)})}function c(o){return R(o).forEach(function(){if(this.key===h.annotations){this.block();return}if(this.node instanceof j){const i=typeof this.node.value=="object",a=[...i?this.path:this.path.slice(0,-1),h.annotations],f=m(e.stateful,a)??[],y=this.node.attach(t);i?this.update({...this.node.value,[h.annotations]:[y,...f]},!0):(this.parent&&(this.parent.node[h.annotations]=[y,...f]),this.update(this.node.value,!0))}})}return new O(r(h.immer.produce(e.stateless,n)),c(h.immer.produce(e.stateful,n)))}function C(e,t){const n=R(e.stateful).forEach(function(){if(this.key===h.annotations){this.block();return}if(this.node&&this.node[h.annotations]){const r=this.node[h.annotations];this.update({...this.node,[h.annotations]:r.filter(c=>c.process!==t)},!0)}});return new O(e.stateless,n)}function G(e){return(t,n)=>async(r=Promise.withResolvers(),c)=>{if(typeof n!="function")return;const o=Symbol("process"),i=n(...c);if(i==null)return void r.resolve();if(typeof i=="function"){const a=i(e.model.current,o);return e.model.current=C(a,o),e.update.rerender(),void r.resolve()}for(;;){const{value:a,done:f}=await i.next();if(f){const he=a(e.model.current,o);e.model.current=C(he,o),e.update.rerender();break}const y=a;e.model.current=y(e.model.current,o),e.update.rerender()}r.resolve()}}function I(e){return e.startsWith("distributed")}class U extends Error{constructor(n,r=null){super(String(r));_(this,b);_(this,E);x(this,b,n),x(this,E,r)}get type(){return D(this,b)}get message(){return D(this,E)||""}}b=new WeakMap,E=new WeakMap;function K(e){return new Promise(t=>setTimeout(t,e))}function V(e){return e?!!(e&&typeof e!="symbol"):Symbol(`pk.${Date.now()}.${crypto.randomUUID()}`)}function X(e){return e instanceof U}function w(e){return JSON.stringify(e)}const Y=Object.freeze(Object.defineProperty({__proto__:null,hash:w,isEventError:X,pk:V,sleep:K},Symbol.toStringTag,{value:"Module"}));function p(e,t){const n=d.useRef(null),r=d.useRef(null);return d.useMemo(()=>{const c=w(t);if(r.current!==c){r.current=c;const o=e();return n.current=o,o}return n.current},t)}function N(e,t){const n=d.useRef(null);d.useEffect(()=>{const r=w(t);if(n.current!==r)return n.current=r,e()},t)}const z=d.createContext({appEmitter:new S});function B(){return d.useContext(z)}function Z(e){return()=>{const t=p(()=>({appEmitter:new S}),[]);return u.jsx(z.Provider,{value:t,children:u.jsx(e,{})})}}function L(e){return p(()=>({controller:{get model(){return e.model.current.stateful},get props(){return e.options.props},get router(){return e.router.current},queue:[],actions:{annotate(t,n){return Q(t,n)},produce(t){return(n,r)=>W(n,r,t)},dispatch([t,...n]){if(t==null)return Promise.reject();const r=Promise.withResolvers();return e.dispatchers.dispatch(t,n,r),r.promise}}},view:{get model(){return e.model.current.stateless},get props(){return e.options.props},get validate(){return e.model.current.validatable},actions:{dispatch([t,...n]){if(t==null)return Promise.reject();const r=Promise.withResolvers();return e.dispatchers.dispatch(t,n,r),r.promise}}}}),[])}function ee(e){return p(()=>{var r,c;const t=(c=(r=e.options).controller)==null?void 0:c.call(r,e.actions.controller);return t?(Object.entries(t).forEach(([o,i])=>e.dispatchers.attach(o,i)),t):void 0},[])}function te(e){const t=B(),n=G(e);return p(()=>{const r=new S,c=t.appEmitter;return{attach(o,i){const a=String(o);I(a)?c.on(a,n(o,i)):r.on(a,n(o,i))},dispatch(o,i,a){const f=String(o);I(f)?c.emit(f,a,i):r.emit(f,a,i)}}},[])}function ne(){const e=d.useRef(null);return p(()=>({customElement:e}),[])}function re(e){var t,n,r,c;N(()=>{e.dispatchers.dispatch(v.Derive,[]),e.update.rerender()},[e.options.props,(t=e.router.current)==null?void 0:t.location,(n=e.router.current)==null?void 0:n.params,(c=(r=e.router.current)==null?void 0:r.search)==null?void 0:c[0]]),N(()=>(e.dispatchers.dispatch(v.Mount,[]),e.dispatchers.dispatch(v.Node,[e.elements.customElement.current]),()=>e.dispatchers.dispatch(v.Unmount,[])),[])}function se(e){const t=p(()=>e.options.model??{},[]);return d.useRef(new O(t,t))}function oe(){return d.useRef(new Set)}function ue(){return d.useRef(null)}function ce({using:e,children:t}){return g.useInRouterContext()?u.jsx(ie,{using:e,children:t}):t()}function ie({using:e,children:t}){return e.current={navigate:g.useNavigate(),location:g.useLocation(),params:g.useParams(),search:g.useSearchParams()},u.jsx(u.Fragment,{children:t()})}function ae(){const[e,t]=d.useReducer(n=>n+1,0);return p(()=>({hash:e,rerender:t}),[e])}function le({options:e}){const t=B(),n=ae(),r=oe(),c=ne(),o=ue(),i=se({options:e}),a=te({app:t,options:e,update:n,model:i,queue:r}),f=L({app:t,options:e,model:i,dispatchers:a,router:o});return ee({options:e,dispatchers:a,actions:f}),re({options:e,dispatchers:a,elements:c,router:o,update:n}),p(()=>d.createElement(e.name,{ref:c.customElement,style:{display:"contents"},children:u.jsx(ce,{using:o,children:()=>e.view(f.view)})}),[n.hash])}function fe(e){return t=>d.memo(n=>le({options:{...t,name:e.join(""),props:n}}),(n,r)=>w(n)===w(r))}const de={app:Z,module:fe};s.EventError=U,s.Lifecycle=v,s.State=T,s.create=de,s.utils=Y,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})});
|
|
@@ -3,11 +3,13 @@ import { UseDispatchers } from '../dispatchers/types.ts';
|
|
|
3
3
|
import { UseElements } from '../elements/types.ts';
|
|
4
4
|
import { UseRouter } from '../router/types.ts';
|
|
5
5
|
import { UseOptions } from '../types.ts';
|
|
6
|
+
import { UseUpdate } from '../update/types.ts';
|
|
6
7
|
import { default as useLifecycles } from './index.ts';
|
|
7
8
|
export type Props<M extends ModuleDefinition> = {
|
|
8
9
|
options: UseOptions<M>;
|
|
9
10
|
elements: UseElements;
|
|
10
11
|
dispatchers: UseDispatchers;
|
|
11
12
|
router: UseRouter;
|
|
13
|
+
update: UseUpdate;
|
|
12
14
|
};
|
|
13
15
|
export type UseLifecycles = ReturnType<typeof useLifecycles>;
|