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