cogsbox-state 0.5.201 → 0.5.203
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/CogsState.jsx +474 -490
- package/dist/CogsState.jsx.map +1 -1
- package/package.json +1 -1
- package/src/CogsState.tsx +70 -118
package/dist/CogsState.jsx
CHANGED
|
@@ -1,40 +1,40 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as
|
|
3
|
-
import { useState as le, useRef as
|
|
4
|
-
import { transformStateFunc as
|
|
5
|
-
import { pushFunc as se, updateFn as
|
|
6
|
-
import
|
|
7
|
-
import { v4 as
|
|
2
|
+
import { jsx as me } from "react/jsx-runtime";
|
|
3
|
+
import { useState as le, useRef as Q, useEffect as de, useLayoutEffect as $e, useMemo as ke, createElement as te, useSyncExternalStore as Te, startTransition as Ne } from "react";
|
|
4
|
+
import { transformStateFunc as Ae, isDeepEqual as G, isFunction as J, getNestedValue as W, getDifferences as ue, debounce as Ve } from "./utility.js";
|
|
5
|
+
import { pushFunc as se, updateFn as Y, cutFunc as X, ValidationWrapper as _e, FormControlComponent as be } from "./Functions.jsx";
|
|
6
|
+
import Ce from "superjson";
|
|
7
|
+
import { v4 as ge } from "uuid";
|
|
8
8
|
import "zod";
|
|
9
|
-
import { getGlobalStore as
|
|
10
|
-
import { useCogsConfig as
|
|
11
|
-
import { applyPatch as
|
|
12
|
-
function
|
|
13
|
-
const S =
|
|
9
|
+
import { getGlobalStore as n, formRefStore as ye } from "./store.js";
|
|
10
|
+
import { useCogsConfig as we } from "./CogsStateClient.jsx";
|
|
11
|
+
import { applyPatch as Pe } from "fast-json-patch";
|
|
12
|
+
function ve(e, i) {
|
|
13
|
+
const S = n.getState().getInitialOptions, u = n.getState().setInitialStateOptions, f = S(e) || {};
|
|
14
14
|
u(e, {
|
|
15
15
|
...f,
|
|
16
16
|
...i
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
|
-
function
|
|
19
|
+
function Ie({
|
|
20
20
|
stateKey: e,
|
|
21
21
|
options: i,
|
|
22
22
|
initialOptionsPart: S
|
|
23
23
|
}) {
|
|
24
|
-
const u =
|
|
24
|
+
const u = Z(e) || {}, f = S[e] || {}, T = n.getState().setInitialStateOptions, h = { ...f, ...u };
|
|
25
25
|
let v = !1;
|
|
26
26
|
if (i)
|
|
27
27
|
for (const s in i)
|
|
28
28
|
h.hasOwnProperty(s) ? (s == "localStorage" && i[s] && h[s].key !== i[s]?.key && (v = !0, h[s] = i[s]), s == "initialState" && i[s] && h[s] !== i[s] && // Different references
|
|
29
|
-
!
|
|
30
|
-
v &&
|
|
29
|
+
!G(h[s], i[s]) && (v = !0, h[s] = i[s])) : (v = !0, h[s] = i[s]);
|
|
30
|
+
v && T(e, h);
|
|
31
31
|
}
|
|
32
32
|
function Qe(e, { formElements: i, validation: S }) {
|
|
33
33
|
return { initialState: e, formElements: i, validation: S };
|
|
34
34
|
}
|
|
35
35
|
const Ke = (e, i) => {
|
|
36
36
|
let S = e;
|
|
37
|
-
const [u, f] =
|
|
37
|
+
const [u, f] = Ae(S);
|
|
38
38
|
(Object.keys(f).length > 0 || i && Object.keys(i).length > 0) && Object.keys(f).forEach((v) => {
|
|
39
39
|
f[v] = f[v] || {}, f[v].formElements = {
|
|
40
40
|
...i?.formElements,
|
|
@@ -42,16 +42,16 @@ const Ke = (e, i) => {
|
|
|
42
42
|
...i?.validation,
|
|
43
43
|
...f[v].formElements || {}
|
|
44
44
|
// State-specific overrides
|
|
45
|
-
},
|
|
46
|
-
}),
|
|
47
|
-
const
|
|
48
|
-
const [m] = le(s?.componentId ??
|
|
49
|
-
|
|
45
|
+
}, Z(v) || n.getState().setInitialStateOptions(v, f[v]);
|
|
46
|
+
}), n.getState().setInitialStates(u), n.getState().setCreatedState(u);
|
|
47
|
+
const T = (v, s) => {
|
|
48
|
+
const [m] = le(s?.componentId ?? ge());
|
|
49
|
+
Ie({
|
|
50
50
|
stateKey: v,
|
|
51
51
|
options: s,
|
|
52
52
|
initialOptionsPart: f
|
|
53
53
|
});
|
|
54
|
-
const
|
|
54
|
+
const t = n.getState().cogsStateStore[v] || u[v], I = s?.modifyState ? s.modifyState(t) : t, [j, A] = De(
|
|
55
55
|
I,
|
|
56
56
|
{
|
|
57
57
|
stateKey: v,
|
|
@@ -67,49 +67,49 @@ const Ke = (e, i) => {
|
|
|
67
67
|
serverState: s?.serverState
|
|
68
68
|
}
|
|
69
69
|
);
|
|
70
|
-
return
|
|
70
|
+
return A;
|
|
71
71
|
};
|
|
72
72
|
function h(v, s) {
|
|
73
|
-
|
|
73
|
+
Ie({ stateKey: v, options: s, initialOptionsPart: f }), s.localStorage && je(v, s), re(v);
|
|
74
74
|
}
|
|
75
|
-
return { useCogsState:
|
|
75
|
+
return { useCogsState: T, setCogsOptions: h };
|
|
76
76
|
}, {
|
|
77
|
-
setUpdaterState:
|
|
78
|
-
setState:
|
|
79
|
-
getInitialOptions:
|
|
80
|
-
getKeyState:
|
|
77
|
+
setUpdaterState: K,
|
|
78
|
+
setState: B,
|
|
79
|
+
getInitialOptions: Z,
|
|
80
|
+
getKeyState: Ee,
|
|
81
81
|
getValidationErrors: xe,
|
|
82
82
|
setStateLog: Oe,
|
|
83
|
-
updateInitialStateGlobal:
|
|
83
|
+
updateInitialStateGlobal: fe,
|
|
84
84
|
addValidationError: Fe,
|
|
85
|
-
removeValidationError:
|
|
85
|
+
removeValidationError: z,
|
|
86
86
|
setServerSyncActions: Re
|
|
87
|
-
} =
|
|
87
|
+
} = n.getState(), he = (e, i, S, u, f) => {
|
|
88
88
|
S?.log && console.log(
|
|
89
89
|
"saving to localstorage",
|
|
90
90
|
i,
|
|
91
91
|
S.localStorage?.key,
|
|
92
92
|
u
|
|
93
93
|
);
|
|
94
|
-
const
|
|
95
|
-
if (
|
|
96
|
-
const h = `${u}-${i}-${
|
|
94
|
+
const T = J(S?.localStorage?.key) ? S.localStorage?.key(e) : S?.localStorage?.key;
|
|
95
|
+
if (T && u) {
|
|
96
|
+
const h = `${u}-${i}-${T}`;
|
|
97
97
|
let v;
|
|
98
98
|
try {
|
|
99
|
-
v =
|
|
99
|
+
v = ne(h)?.lastSyncedWithServer;
|
|
100
100
|
} catch {
|
|
101
101
|
}
|
|
102
102
|
const s = {
|
|
103
103
|
state: e,
|
|
104
104
|
lastUpdated: Date.now(),
|
|
105
105
|
lastSyncedWithServer: f ?? v
|
|
106
|
-
}, m =
|
|
106
|
+
}, m = Ce.serialize(s);
|
|
107
107
|
window.localStorage.setItem(
|
|
108
108
|
h,
|
|
109
109
|
JSON.stringify(m.json)
|
|
110
110
|
);
|
|
111
111
|
}
|
|
112
|
-
},
|
|
112
|
+
}, ne = (e) => {
|
|
113
113
|
if (!e) return null;
|
|
114
114
|
try {
|
|
115
115
|
const i = window.localStorage.getItem(e);
|
|
@@ -118,29 +118,29 @@ const Ke = (e, i) => {
|
|
|
118
118
|
return console.error("Error loading from localStorage:", i), null;
|
|
119
119
|
}
|
|
120
120
|
}, je = (e, i) => {
|
|
121
|
-
const S =
|
|
121
|
+
const S = n.getState().cogsStateStore[e], { sessionId: u } = we(), f = J(i?.localStorage?.key) ? i.localStorage.key(S) : i?.localStorage?.key;
|
|
122
122
|
if (f && u) {
|
|
123
|
-
const
|
|
123
|
+
const T = ne(
|
|
124
124
|
`${u}-${e}-${f}`
|
|
125
125
|
);
|
|
126
|
-
if (
|
|
127
|
-
return
|
|
126
|
+
if (T && T.lastUpdated > (T.lastSyncedWithServer || 0))
|
|
127
|
+
return B(e, T.state), re(e), !0;
|
|
128
128
|
}
|
|
129
129
|
return !1;
|
|
130
|
-
},
|
|
130
|
+
}, pe = (e, i, S, u, f, T) => {
|
|
131
131
|
const h = {
|
|
132
132
|
initialState: i,
|
|
133
|
-
updaterState:
|
|
133
|
+
updaterState: ee(
|
|
134
134
|
e,
|
|
135
135
|
u,
|
|
136
136
|
f,
|
|
137
|
-
|
|
137
|
+
T
|
|
138
138
|
),
|
|
139
139
|
state: S
|
|
140
140
|
};
|
|
141
|
-
|
|
142
|
-
},
|
|
143
|
-
const i =
|
|
141
|
+
fe(e, h.initialState), K(e, h.updaterState), B(e, h.state);
|
|
142
|
+
}, re = (e) => {
|
|
143
|
+
const i = n.getState().stateComponents.get(e);
|
|
144
144
|
if (!i) return;
|
|
145
145
|
const S = /* @__PURE__ */ new Set();
|
|
146
146
|
i.components.forEach((u) => {
|
|
@@ -149,7 +149,7 @@ const Ke = (e, i) => {
|
|
|
149
149
|
S.forEach((u) => u());
|
|
150
150
|
});
|
|
151
151
|
}, et = (e, i) => {
|
|
152
|
-
const S =
|
|
152
|
+
const S = n.getState().stateComponents.get(e);
|
|
153
153
|
if (S) {
|
|
154
154
|
const u = `${e}////${i}`, f = S.components.get(u);
|
|
155
155
|
if ((f ? Array.isArray(f.reactiveType) ? f.reactiveType : [f.reactiveType || "component"] : null)?.includes("none"))
|
|
@@ -160,18 +160,18 @@ const Ke = (e, i) => {
|
|
|
160
160
|
switch (e) {
|
|
161
161
|
case "update":
|
|
162
162
|
return {
|
|
163
|
-
oldValue:
|
|
164
|
-
newValue:
|
|
163
|
+
oldValue: W(i, u),
|
|
164
|
+
newValue: W(S, u)
|
|
165
165
|
};
|
|
166
166
|
case "insert":
|
|
167
167
|
return {
|
|
168
168
|
oldValue: null,
|
|
169
169
|
// or undefined
|
|
170
|
-
newValue:
|
|
170
|
+
newValue: W(S, u)
|
|
171
171
|
};
|
|
172
172
|
case "cut":
|
|
173
173
|
return {
|
|
174
|
-
oldValue:
|
|
174
|
+
oldValue: W(i, u),
|
|
175
175
|
newValue: null
|
|
176
176
|
// or undefined
|
|
177
177
|
};
|
|
@@ -179,781 +179,765 @@ const Ke = (e, i) => {
|
|
|
179
179
|
return { oldValue: null, newValue: null };
|
|
180
180
|
}
|
|
181
181
|
};
|
|
182
|
-
function
|
|
182
|
+
function De(e, {
|
|
183
183
|
stateKey: i,
|
|
184
184
|
serverSync: S,
|
|
185
185
|
localStorage: u,
|
|
186
186
|
formElements: f,
|
|
187
|
-
reactiveDeps:
|
|
187
|
+
reactiveDeps: T,
|
|
188
188
|
reactiveType: h,
|
|
189
189
|
componentId: v,
|
|
190
190
|
initialState: s,
|
|
191
191
|
syncUpdate: m,
|
|
192
|
-
dependencies:
|
|
192
|
+
dependencies: t,
|
|
193
193
|
serverState: I
|
|
194
194
|
} = {}) {
|
|
195
|
-
const [
|
|
196
|
-
let
|
|
197
|
-
const [g] = le(i ??
|
|
195
|
+
const [j, A] = le({}), { sessionId: V } = we();
|
|
196
|
+
let U = !i;
|
|
197
|
+
const [g] = le(i ?? ge()), c = n.getState().stateLog[g], H = Q(/* @__PURE__ */ new Set()), q = Q(v ?? ge()), _ = Q(
|
|
198
198
|
null
|
|
199
199
|
);
|
|
200
|
-
|
|
200
|
+
_.current = Z(g) ?? null, de(() => {
|
|
201
201
|
if (m && m.stateKey === g && m.path?.[0]) {
|
|
202
|
-
|
|
202
|
+
B(g, (a) => ({
|
|
203
203
|
...a,
|
|
204
204
|
[m.path[0]]: m.newValue
|
|
205
205
|
}));
|
|
206
206
|
const o = `${m.stateKey}:${m.path.join(".")}`;
|
|
207
|
-
|
|
207
|
+
n.getState().setSyncInfo(o, {
|
|
208
208
|
timeStamp: m.timeStamp,
|
|
209
209
|
userId: m.userId
|
|
210
210
|
});
|
|
211
211
|
}
|
|
212
212
|
}, [m]), de(() => {
|
|
213
213
|
if (s) {
|
|
214
|
-
|
|
214
|
+
ve(g, {
|
|
215
215
|
initialState: s
|
|
216
216
|
});
|
|
217
|
-
const o =
|
|
218
|
-
if (!(
|
|
217
|
+
const o = _.current, l = o?.serverState?.id !== void 0 && o?.serverState?.status === "success" && o?.serverState?.data, w = n.getState().initialStateGlobal[g];
|
|
218
|
+
if (!(w && !G(w, s) || !w) && !l)
|
|
219
219
|
return;
|
|
220
|
-
let
|
|
221
|
-
const
|
|
222
|
-
|
|
223
|
-
let
|
|
224
|
-
const
|
|
225
|
-
|
|
220
|
+
let E = null;
|
|
221
|
+
const p = J(o?.localStorage?.key) ? o?.localStorage?.key(s) : o?.localStorage?.key;
|
|
222
|
+
p && V && (E = ne(`${V}-${g}-${p}`));
|
|
223
|
+
let k = s, b = !1;
|
|
224
|
+
const P = l ? Date.now() : 0, x = E?.lastUpdated || 0, ae = E?.lastSyncedWithServer || 0;
|
|
225
|
+
l && P > x ? (k = o.serverState.data, b = !0) : E && x > ae && (k = E.state, o?.localStorage?.onChange && o?.localStorage?.onChange(k)), pe(
|
|
226
226
|
g,
|
|
227
227
|
s,
|
|
228
|
-
|
|
228
|
+
k,
|
|
229
229
|
d,
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
),
|
|
230
|
+
q.current,
|
|
231
|
+
V
|
|
232
|
+
), b && p && V && he(k, g, o, V, Date.now()), re(g), (Array.isArray(h) ? h : [h || "component"]).includes("none") || A({});
|
|
233
233
|
}
|
|
234
234
|
}, [
|
|
235
235
|
s,
|
|
236
236
|
I?.status,
|
|
237
237
|
I?.data,
|
|
238
|
-
...
|
|
239
|
-
]),
|
|
240
|
-
|
|
238
|
+
...t || []
|
|
239
|
+
]), $e(() => {
|
|
240
|
+
U && ve(g, {
|
|
241
241
|
serverSync: S,
|
|
242
242
|
formElements: f,
|
|
243
243
|
initialState: s,
|
|
244
244
|
localStorage: u,
|
|
245
|
-
middleware:
|
|
245
|
+
middleware: _.current?.middleware
|
|
246
246
|
});
|
|
247
|
-
const o = `${g}////${
|
|
247
|
+
const o = `${g}////${q.current}`, a = n.getState().stateComponents.get(g) || {
|
|
248
248
|
components: /* @__PURE__ */ new Map()
|
|
249
249
|
};
|
|
250
250
|
return a.components.set(o, {
|
|
251
|
-
forceUpdate: () =>
|
|
251
|
+
forceUpdate: () => A({}),
|
|
252
252
|
paths: /* @__PURE__ */ new Set(),
|
|
253
253
|
deps: [],
|
|
254
|
-
depsFunction:
|
|
254
|
+
depsFunction: T || void 0,
|
|
255
255
|
reactiveType: h ?? ["component", "deps"]
|
|
256
|
-
}),
|
|
257
|
-
const
|
|
258
|
-
a && (a.components.delete(
|
|
256
|
+
}), n.getState().stateComponents.set(g, a), A({}), () => {
|
|
257
|
+
const l = `${g}////${q.current}`;
|
|
258
|
+
a && (a.components.delete(l), a.components.size === 0 && n.getState().stateComponents.delete(g));
|
|
259
259
|
};
|
|
260
260
|
}, []);
|
|
261
|
-
const d = (o, a,
|
|
261
|
+
const d = (o, a, l, w) => {
|
|
262
262
|
if (Array.isArray(a)) {
|
|
263
263
|
const y = `${g}-${a.join(".")}`;
|
|
264
|
-
|
|
264
|
+
H.current.add(y);
|
|
265
265
|
}
|
|
266
|
-
|
|
267
|
-
const
|
|
268
|
-
if (
|
|
269
|
-
let
|
|
270
|
-
if ((!N || N.size === 0) && (
|
|
271
|
-
const
|
|
272
|
-
if (Array.isArray(
|
|
273
|
-
|
|
274
|
-
const
|
|
275
|
-
N =
|
|
266
|
+
B(g, (y) => {
|
|
267
|
+
const E = J(o) ? o(y) : o, p = `${g}-${a.join(".")}`;
|
|
268
|
+
if (p) {
|
|
269
|
+
let M = !1, N = n.getState().signalDomElements.get(p);
|
|
270
|
+
if ((!N || N.size === 0) && (l.updateType === "insert" || l.updateType === "cut")) {
|
|
271
|
+
const F = a.slice(0, -1), D = W(E, F);
|
|
272
|
+
if (Array.isArray(D)) {
|
|
273
|
+
M = !0;
|
|
274
|
+
const $ = `${g}-${F.join(".")}`;
|
|
275
|
+
N = n.getState().signalDomElements.get($);
|
|
276
276
|
}
|
|
277
277
|
}
|
|
278
278
|
if (N) {
|
|
279
|
-
const
|
|
280
|
-
N.forEach(({ parentId:
|
|
281
|
-
const
|
|
282
|
-
`[data-parent-id="${
|
|
279
|
+
const F = M ? W(E, a.slice(0, -1)) : W(E, a);
|
|
280
|
+
N.forEach(({ parentId: D, position: $, effect: O }) => {
|
|
281
|
+
const C = document.querySelector(
|
|
282
|
+
`[data-parent-id="${D}"]`
|
|
283
283
|
);
|
|
284
|
-
if (
|
|
285
|
-
const
|
|
286
|
-
if (
|
|
287
|
-
const
|
|
288
|
-
|
|
284
|
+
if (C) {
|
|
285
|
+
const L = Array.from(C.childNodes);
|
|
286
|
+
if (L[$]) {
|
|
287
|
+
const R = O ? new Function("state", `return (${O})(state)`)(F) : F;
|
|
288
|
+
L[$].textContent = String(R);
|
|
289
289
|
}
|
|
290
290
|
}
|
|
291
291
|
});
|
|
292
292
|
}
|
|
293
293
|
}
|
|
294
|
-
|
|
295
|
-
(
|
|
294
|
+
l.updateType === "update" && (w || _.current?.validation?.key) && a && z(
|
|
295
|
+
(w || _.current?.validation?.key) + "." + a.join(".")
|
|
296
296
|
);
|
|
297
|
-
const
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
),
|
|
301
|
-
|
|
302
|
-
).filter(([N,
|
|
303
|
-
let
|
|
304
|
-
if (N ==
|
|
305
|
-
let
|
|
306
|
-
|
|
297
|
+
const k = a.slice(0, a.length - 1);
|
|
298
|
+
l.updateType === "cut" && _.current?.validation?.key && z(
|
|
299
|
+
_.current?.validation?.key + "." + k.join(".")
|
|
300
|
+
), l.updateType === "insert" && _.current?.validation?.key && xe(
|
|
301
|
+
_.current?.validation?.key + "." + k.join(".")
|
|
302
|
+
).filter(([N, F]) => {
|
|
303
|
+
let D = N?.split(".").length;
|
|
304
|
+
if (N == k.join(".") && D == k.length - 1) {
|
|
305
|
+
let $ = N + "." + k;
|
|
306
|
+
z(N), Fe($, F);
|
|
307
307
|
}
|
|
308
308
|
});
|
|
309
|
-
const
|
|
310
|
-
if (
|
|
311
|
-
const
|
|
309
|
+
const b = n.getState().stateComponents.get(g);
|
|
310
|
+
if (b) {
|
|
311
|
+
const M = ue(y, E), N = new Set(M), F = l.updateType === "update" ? a.join(".") : a.slice(0, -1).join(".") || "";
|
|
312
312
|
for (const [
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
] of
|
|
316
|
-
let
|
|
317
|
-
const
|
|
318
|
-
if (!
|
|
319
|
-
if (
|
|
320
|
-
|
|
313
|
+
D,
|
|
314
|
+
$
|
|
315
|
+
] of b.components.entries()) {
|
|
316
|
+
let O = !1;
|
|
317
|
+
const C = Array.isArray($.reactiveType) ? $.reactiveType : [$.reactiveType || "component"];
|
|
318
|
+
if (!C.includes("none")) {
|
|
319
|
+
if (C.includes("all")) {
|
|
320
|
+
$.forceUpdate();
|
|
321
321
|
continue;
|
|
322
322
|
}
|
|
323
|
-
if (
|
|
324
|
-
for (const
|
|
325
|
-
let
|
|
323
|
+
if (C.includes("component") && (($.paths.has(F) || $.paths.has("")) && (O = !0), !O))
|
|
324
|
+
for (const L of N) {
|
|
325
|
+
let R = L;
|
|
326
326
|
for (; ; ) {
|
|
327
|
-
if (
|
|
328
|
-
|
|
327
|
+
if ($.paths.has(R)) {
|
|
328
|
+
O = !0;
|
|
329
329
|
break;
|
|
330
330
|
}
|
|
331
|
-
const ie =
|
|
331
|
+
const ie = R.lastIndexOf(".");
|
|
332
332
|
if (ie !== -1) {
|
|
333
|
-
const
|
|
333
|
+
const Se = R.substring(
|
|
334
334
|
0,
|
|
335
335
|
ie
|
|
336
336
|
);
|
|
337
337
|
if (!isNaN(
|
|
338
|
-
Number(
|
|
339
|
-
) &&
|
|
340
|
-
|
|
338
|
+
Number(R.substring(ie + 1))
|
|
339
|
+
) && $.paths.has(Se)) {
|
|
340
|
+
O = !0;
|
|
341
341
|
break;
|
|
342
342
|
}
|
|
343
|
-
|
|
343
|
+
R = Se;
|
|
344
344
|
} else
|
|
345
|
-
|
|
346
|
-
if (
|
|
345
|
+
R = "";
|
|
346
|
+
if (R === "")
|
|
347
347
|
break;
|
|
348
348
|
}
|
|
349
|
-
if (
|
|
349
|
+
if (O) break;
|
|
350
350
|
}
|
|
351
|
-
if (!
|
|
352
|
-
const
|
|
353
|
-
let
|
|
354
|
-
typeof
|
|
351
|
+
if (!O && C.includes("deps") && $.depsFunction) {
|
|
352
|
+
const L = $.depsFunction(E);
|
|
353
|
+
let R = !1;
|
|
354
|
+
typeof L == "boolean" ? L && (R = !0) : G($.deps, L) || ($.deps = L, R = !0), R && (O = !0);
|
|
355
355
|
}
|
|
356
|
-
|
|
356
|
+
O && $.forceUpdate();
|
|
357
357
|
}
|
|
358
358
|
}
|
|
359
359
|
}
|
|
360
|
-
const
|
|
361
|
-
a = a.map((
|
|
362
|
-
const
|
|
363
|
-
return N === a.length - 1 && ["insert", "cut"].includes(
|
|
360
|
+
const P = Date.now();
|
|
361
|
+
a = a.map((M, N) => {
|
|
362
|
+
const F = a.slice(0, -1), D = W(E, F);
|
|
363
|
+
return N === a.length - 1 && ["insert", "cut"].includes(l.updateType) ? (D.length - 1).toString() : M;
|
|
364
364
|
}), console.log(
|
|
365
365
|
"mmmmmmmmmmmmmmmmm22222222222222",
|
|
366
|
-
|
|
366
|
+
l.updateType,
|
|
367
367
|
y,
|
|
368
|
-
|
|
368
|
+
E,
|
|
369
369
|
a
|
|
370
370
|
);
|
|
371
|
-
const { oldValue:
|
|
372
|
-
|
|
371
|
+
const { oldValue: x, newValue: ae } = Ue(
|
|
372
|
+
l.updateType,
|
|
373
373
|
y,
|
|
374
|
-
|
|
374
|
+
E,
|
|
375
375
|
a
|
|
376
|
-
),
|
|
377
|
-
timeStamp:
|
|
376
|
+
), oe = {
|
|
377
|
+
timeStamp: P,
|
|
378
378
|
stateKey: g,
|
|
379
379
|
path: a,
|
|
380
|
-
updateType:
|
|
380
|
+
updateType: l.updateType,
|
|
381
381
|
status: "new",
|
|
382
|
-
oldValue:
|
|
383
|
-
newValue:
|
|
382
|
+
oldValue: x,
|
|
383
|
+
newValue: ae
|
|
384
384
|
};
|
|
385
|
-
if (Oe(g, (
|
|
386
|
-
const
|
|
387
|
-
const
|
|
388
|
-
return
|
|
385
|
+
if (Oe(g, (M) => {
|
|
386
|
+
const F = [...M ?? [], oe].reduce((D, $) => {
|
|
387
|
+
const O = `${$.stateKey}:${JSON.stringify($.path)}`, C = D.get(O);
|
|
388
|
+
return C ? (C.timeStamp = Math.max(C.timeStamp, $.timeStamp), C.newValue = $.newValue, C.oldValue = C.oldValue ?? $.oldValue, C.updateType = $.updateType) : D.set(O, { ...$ }), D;
|
|
389
389
|
}, /* @__PURE__ */ new Map());
|
|
390
|
-
return Array.from(
|
|
391
|
-
}),
|
|
392
|
-
|
|
390
|
+
return Array.from(F.values());
|
|
391
|
+
}), he(
|
|
392
|
+
E,
|
|
393
393
|
g,
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
),
|
|
397
|
-
updateLog:
|
|
398
|
-
update:
|
|
399
|
-
}),
|
|
400
|
-
const
|
|
394
|
+
_.current,
|
|
395
|
+
V
|
|
396
|
+
), _.current?.middleware && _.current.middleware({
|
|
397
|
+
updateLog: c,
|
|
398
|
+
update: oe
|
|
399
|
+
}), _.current?.serverSync) {
|
|
400
|
+
const M = n.getState().serverState[g], N = _.current?.serverSync;
|
|
401
401
|
Re(g, {
|
|
402
|
-
syncKey: typeof N.syncKey == "string" ? N.syncKey : N.syncKey({ state:
|
|
403
|
-
rollBackState:
|
|
402
|
+
syncKey: typeof N.syncKey == "string" ? N.syncKey : N.syncKey({ state: E }),
|
|
403
|
+
rollBackState: M,
|
|
404
404
|
actionTimeStamp: Date.now() + (N.debounce ?? 3e3),
|
|
405
405
|
status: "waiting"
|
|
406
406
|
});
|
|
407
407
|
}
|
|
408
|
-
return
|
|
408
|
+
return E;
|
|
409
409
|
});
|
|
410
410
|
};
|
|
411
|
-
|
|
411
|
+
n.getState().updaterState[g] || (K(
|
|
412
412
|
g,
|
|
413
|
-
|
|
413
|
+
ee(
|
|
414
414
|
g,
|
|
415
415
|
d,
|
|
416
|
-
|
|
417
|
-
|
|
416
|
+
q.current,
|
|
417
|
+
V
|
|
418
418
|
)
|
|
419
|
-
),
|
|
420
|
-
const r =
|
|
419
|
+
), n.getState().cogsStateStore[g] || B(g, e), n.getState().initialStateGlobal[g] || fe(g, e));
|
|
420
|
+
const r = ke(() => ee(
|
|
421
421
|
g,
|
|
422
422
|
d,
|
|
423
|
-
|
|
424
|
-
|
|
423
|
+
q.current,
|
|
424
|
+
V
|
|
425
425
|
), [g]);
|
|
426
|
-
return [
|
|
426
|
+
return [Ee(g), r];
|
|
427
427
|
}
|
|
428
|
-
function
|
|
428
|
+
function ee(e, i, S, u) {
|
|
429
429
|
const f = /* @__PURE__ */ new Map();
|
|
430
|
-
let
|
|
430
|
+
let T = 0;
|
|
431
431
|
const h = (m) => {
|
|
432
|
-
const
|
|
432
|
+
const t = m.join(".");
|
|
433
433
|
for (const [I] of f)
|
|
434
|
-
(I ===
|
|
435
|
-
|
|
434
|
+
(I === t || I.startsWith(t + ".")) && f.delete(I);
|
|
435
|
+
T++;
|
|
436
436
|
}, v = {
|
|
437
437
|
removeValidation: (m) => {
|
|
438
|
-
m?.validationKey &&
|
|
438
|
+
m?.validationKey && z(m.validationKey);
|
|
439
439
|
},
|
|
440
440
|
revertToInitialState: (m) => {
|
|
441
|
-
const
|
|
442
|
-
|
|
443
|
-
const I =
|
|
444
|
-
|
|
445
|
-
const
|
|
446
|
-
|
|
447
|
-
const g =
|
|
448
|
-
return g && g.components.forEach((
|
|
449
|
-
|
|
441
|
+
const t = n.getState().getInitialOptions(e)?.validation;
|
|
442
|
+
t?.key && z(t?.key), m?.validationKey && z(m.validationKey);
|
|
443
|
+
const I = n.getState().initialStateGlobal[e];
|
|
444
|
+
n.getState().clearSelectedIndexesForState(e), f.clear(), T++;
|
|
445
|
+
const j = s(I, []), A = Z(e), V = J(A?.localStorage?.key) ? A?.localStorage?.key(I) : A?.localStorage?.key, U = `${u}-${e}-${V}`;
|
|
446
|
+
U && localStorage.removeItem(U), K(e, j), B(e, I);
|
|
447
|
+
const g = n.getState().stateComponents.get(e);
|
|
448
|
+
return g && g.components.forEach((c) => {
|
|
449
|
+
c.forceUpdate();
|
|
450
450
|
}), I;
|
|
451
451
|
},
|
|
452
452
|
updateInitialState: (m) => {
|
|
453
|
-
f.clear(),
|
|
454
|
-
const
|
|
453
|
+
f.clear(), T++;
|
|
454
|
+
const t = ee(
|
|
455
455
|
e,
|
|
456
456
|
i,
|
|
457
457
|
S,
|
|
458
458
|
u
|
|
459
|
-
), I =
|
|
460
|
-
return console.log("removing storage",
|
|
461
|
-
|
|
462
|
-
const
|
|
463
|
-
|
|
459
|
+
), I = n.getState().initialStateGlobal[e], j = Z(e), A = J(j?.localStorage?.key) ? j?.localStorage?.key(I) : j?.localStorage?.key, V = `${u}-${e}-${A}`;
|
|
460
|
+
return console.log("removing storage", V), localStorage.getItem(V) && localStorage.removeItem(V), Ne(() => {
|
|
461
|
+
fe(e, m), K(e, t), B(e, m);
|
|
462
|
+
const U = n.getState().stateComponents.get(e);
|
|
463
|
+
U && U.components.forEach((g) => {
|
|
464
464
|
g.forceUpdate();
|
|
465
465
|
});
|
|
466
466
|
}), {
|
|
467
|
-
fetchId: (
|
|
467
|
+
fetchId: (U) => t.get()[U]
|
|
468
468
|
};
|
|
469
469
|
},
|
|
470
|
-
_initialState:
|
|
471
|
-
_serverState:
|
|
472
|
-
_isLoading:
|
|
470
|
+
_initialState: n.getState().initialStateGlobal[e],
|
|
471
|
+
_serverState: n.getState().serverState[e],
|
|
472
|
+
_isLoading: n.getState().isLoadingGlobal[e],
|
|
473
473
|
_isServerSynced: () => {
|
|
474
|
-
const m =
|
|
475
|
-
return !!(m &&
|
|
474
|
+
const m = n.getState().serverState[e];
|
|
475
|
+
return !!(m && G(m, Ee(e)));
|
|
476
476
|
}
|
|
477
477
|
};
|
|
478
|
-
function s(m,
|
|
479
|
-
const
|
|
480
|
-
f.get(
|
|
481
|
-
const
|
|
482
|
-
return
|
|
478
|
+
function s(m, t = [], I) {
|
|
479
|
+
const j = t.map(String).join(".");
|
|
480
|
+
f.get(j);
|
|
481
|
+
const A = function() {
|
|
482
|
+
return n().getNestedState(e, t);
|
|
483
483
|
};
|
|
484
484
|
Object.keys(v).forEach((g) => {
|
|
485
|
-
|
|
485
|
+
A[g] = v[g];
|
|
486
486
|
});
|
|
487
|
-
const
|
|
488
|
-
apply(g,
|
|
487
|
+
const V = {
|
|
488
|
+
apply(g, c, H) {
|
|
489
489
|
return console.log(
|
|
490
|
-
`PROXY APPLY TRAP HIT: stateKey=${e}, path=${
|
|
491
|
-
), console.trace("Apply trap stack trace"),
|
|
490
|
+
`PROXY APPLY TRAP HIT: stateKey=${e}, path=${t.join(".")}`
|
|
491
|
+
), console.trace("Apply trap stack trace"), n().getNestedState(e, t);
|
|
492
492
|
},
|
|
493
|
-
get(g,
|
|
494
|
-
if (
|
|
495
|
-
const d =
|
|
493
|
+
get(g, c) {
|
|
494
|
+
if (c !== "then" && !c.startsWith("$") && c !== "stateMapNoRender") {
|
|
495
|
+
const d = t.join("."), r = `${e}////${S}`, o = n.getState().stateComponents.get(e);
|
|
496
496
|
if (o) {
|
|
497
497
|
const a = o.components.get(r);
|
|
498
|
-
a && (
|
|
498
|
+
a && (t.length > 0 || c === "get") && a.paths.add(d);
|
|
499
499
|
}
|
|
500
500
|
}
|
|
501
|
-
if (
|
|
502
|
-
return () =>
|
|
503
|
-
|
|
504
|
-
|
|
501
|
+
if (c === "getDifferences")
|
|
502
|
+
return () => ue(
|
|
503
|
+
n.getState().cogsStateStore[e],
|
|
504
|
+
n.getState().initialStateGlobal[e]
|
|
505
505
|
);
|
|
506
|
-
if (
|
|
506
|
+
if (c === "sync" && t.length === 0)
|
|
507
507
|
return async function() {
|
|
508
|
-
const d =
|
|
508
|
+
const d = n.getState().getInitialOptions(e), r = d?.sync;
|
|
509
509
|
if (!r)
|
|
510
510
|
return console.error(`No mutation defined for state key "${e}"`), { success: !1, error: "No mutation defined" };
|
|
511
|
-
const o =
|
|
511
|
+
const o = n.getState().getNestedState(e, []), a = d?.validation?.key;
|
|
512
512
|
try {
|
|
513
|
-
const
|
|
514
|
-
if (
|
|
515
|
-
|
|
516
|
-
const
|
|
517
|
-
|
|
513
|
+
const l = await r.action(o);
|
|
514
|
+
if (l && !l.success && l.errors && a) {
|
|
515
|
+
n.getState().removeValidationError(a), l.errors.forEach((y) => {
|
|
516
|
+
const E = [a, ...y.path].join(".");
|
|
517
|
+
n.getState().addValidationError(E, y.message);
|
|
518
518
|
});
|
|
519
|
-
const
|
|
520
|
-
|
|
519
|
+
const w = n.getState().stateComponents.get(e);
|
|
520
|
+
w && w.components.forEach((y) => {
|
|
521
521
|
y.forceUpdate();
|
|
522
522
|
});
|
|
523
523
|
}
|
|
524
|
-
return
|
|
525
|
-
} catch (
|
|
526
|
-
return r.onError && r.onError(
|
|
524
|
+
return l?.success && r.onSuccess ? r.onSuccess(l.data) : !l?.success && r.onError && r.onError(l.error), l;
|
|
525
|
+
} catch (l) {
|
|
526
|
+
return r.onError && r.onError(l), { success: !1, error: l };
|
|
527
527
|
}
|
|
528
528
|
};
|
|
529
|
-
if (
|
|
530
|
-
const d =
|
|
531
|
-
return
|
|
529
|
+
if (c === "_status") {
|
|
530
|
+
const d = n.getState().getNestedState(e, t), r = n.getState().initialStateGlobal[e], o = W(r, t);
|
|
531
|
+
return G(d, o) ? "fresh" : "stale";
|
|
532
532
|
}
|
|
533
|
-
if (
|
|
533
|
+
if (c === "getStatus")
|
|
534
534
|
return function() {
|
|
535
|
-
const d =
|
|
535
|
+
const d = n().getNestedState(
|
|
536
536
|
e,
|
|
537
|
-
|
|
538
|
-
), r =
|
|
539
|
-
return
|
|
537
|
+
t
|
|
538
|
+
), r = n.getState().initialStateGlobal[e], o = W(r, t);
|
|
539
|
+
return G(d, o) ? "fresh" : "stale";
|
|
540
540
|
};
|
|
541
|
-
if (
|
|
541
|
+
if (c === "removeStorage")
|
|
542
542
|
return () => {
|
|
543
|
-
const d =
|
|
543
|
+
const d = n.getState().initialStateGlobal[e], r = Z(e), o = J(r?.localStorage?.key) ? r?.localStorage?.key(d) : r?.localStorage?.key, a = `${u}-${e}-${o}`;
|
|
544
544
|
console.log("removing storage", a), a && localStorage.removeItem(a);
|
|
545
545
|
};
|
|
546
|
-
if (
|
|
546
|
+
if (c === "showValidationErrors")
|
|
547
547
|
return () => {
|
|
548
|
-
const d =
|
|
548
|
+
const d = n.getState().getInitialOptions(e)?.validation;
|
|
549
549
|
if (!d?.key)
|
|
550
550
|
throw new Error("Validation key not found");
|
|
551
|
-
return
|
|
551
|
+
return n.getState().getValidationErrors(d.key + "." + t.join("."));
|
|
552
552
|
};
|
|
553
553
|
if (Array.isArray(m)) {
|
|
554
554
|
const d = () => I?.validIndices ? m.map((o, a) => ({
|
|
555
555
|
item: o,
|
|
556
556
|
originalIndex: I.validIndices[a]
|
|
557
|
-
})) :
|
|
557
|
+
})) : n.getState().getNestedState(e, t).map((o, a) => ({
|
|
558
558
|
item: o,
|
|
559
559
|
originalIndex: a
|
|
560
560
|
}));
|
|
561
|
-
if (
|
|
561
|
+
if (c === "getSelected")
|
|
562
562
|
return () => {
|
|
563
|
-
const r =
|
|
563
|
+
const r = n.getState().getSelectedIndex(e, t.join("."));
|
|
564
564
|
if (r !== void 0)
|
|
565
565
|
return s(
|
|
566
566
|
m[r],
|
|
567
|
-
[...
|
|
567
|
+
[...t, r.toString()],
|
|
568
568
|
I
|
|
569
569
|
);
|
|
570
570
|
};
|
|
571
|
-
if (
|
|
571
|
+
if (c === "clearSelected")
|
|
572
572
|
return () => {
|
|
573
|
-
|
|
573
|
+
n.getState().clearSelectedIndex({ stateKey: e, path: t });
|
|
574
574
|
};
|
|
575
|
-
if (
|
|
576
|
-
return () =>
|
|
577
|
-
if (
|
|
575
|
+
if (c === "getSelectedIndex")
|
|
576
|
+
return () => n.getState().getSelectedIndex(e, t.join(".")) ?? -1;
|
|
577
|
+
if (c === "stateSort")
|
|
578
578
|
return (r) => {
|
|
579
579
|
const a = [...d()].sort(
|
|
580
|
-
(y,
|
|
581
|
-
),
|
|
580
|
+
(y, E) => r(y.item, E.item)
|
|
581
|
+
), l = a.map(({ item: y }) => y), w = {
|
|
582
582
|
...I,
|
|
583
583
|
validIndices: a.map(
|
|
584
584
|
({ originalIndex: y }) => y
|
|
585
585
|
)
|
|
586
586
|
};
|
|
587
|
-
return s(
|
|
587
|
+
return s(l, t, w);
|
|
588
588
|
};
|
|
589
|
-
if (
|
|
589
|
+
if (c === "stateFilter")
|
|
590
590
|
return (r) => {
|
|
591
591
|
const a = d().filter(
|
|
592
|
-
({ item: y },
|
|
593
|
-
),
|
|
592
|
+
({ item: y }, E) => r(y, E)
|
|
593
|
+
), l = a.map(({ item: y }) => y), w = {
|
|
594
594
|
...I,
|
|
595
595
|
validIndices: a.map(
|
|
596
596
|
({ originalIndex: y }) => y
|
|
597
597
|
)
|
|
598
598
|
};
|
|
599
|
-
return s(
|
|
599
|
+
return s(l, t, w);
|
|
600
600
|
};
|
|
601
|
-
if (
|
|
602
|
-
return (r) => m.map((a,
|
|
603
|
-
let
|
|
604
|
-
I?.validIndices && I.validIndices[
|
|
605
|
-
const y = [...
|
|
601
|
+
if (c === "stateMap" || c === "stateMapNoRender")
|
|
602
|
+
return (r) => m.map((a, l) => {
|
|
603
|
+
let w;
|
|
604
|
+
I?.validIndices && I.validIndices[l] !== void 0 ? w = I.validIndices[l] : w = l;
|
|
605
|
+
const y = [...t, w.toString()], E = s(a, y, I);
|
|
606
606
|
return r(
|
|
607
607
|
a,
|
|
608
|
-
|
|
609
|
-
|
|
608
|
+
E,
|
|
609
|
+
l,
|
|
610
610
|
m,
|
|
611
|
-
s(m,
|
|
611
|
+
s(m, t, I)
|
|
612
612
|
);
|
|
613
613
|
});
|
|
614
|
-
if (
|
|
615
|
-
return (r) =>
|
|
614
|
+
if (c === "$stateMap")
|
|
615
|
+
return (r) => te(Me, {
|
|
616
616
|
proxy: {
|
|
617
617
|
_stateKey: e,
|
|
618
|
-
_path:
|
|
618
|
+
_path: t,
|
|
619
619
|
_mapFn: r
|
|
620
620
|
// Pass the actual function, not string
|
|
621
621
|
},
|
|
622
622
|
rebuildStateShape: s
|
|
623
623
|
});
|
|
624
|
-
if (
|
|
624
|
+
if (c === "stateFlattenOn")
|
|
625
625
|
return (r) => {
|
|
626
626
|
const o = m;
|
|
627
|
-
f.clear(),
|
|
627
|
+
f.clear(), T++;
|
|
628
628
|
const a = o.flatMap(
|
|
629
|
-
(
|
|
629
|
+
(l) => l[r] ?? []
|
|
630
630
|
);
|
|
631
631
|
return s(
|
|
632
632
|
a,
|
|
633
|
-
[...
|
|
633
|
+
[...t, "[*]", r],
|
|
634
634
|
I
|
|
635
635
|
);
|
|
636
636
|
};
|
|
637
|
-
if (
|
|
637
|
+
if (c === "index")
|
|
638
638
|
return (r) => {
|
|
639
639
|
const o = m[r];
|
|
640
|
-
return s(o, [...
|
|
640
|
+
return s(o, [...t, r.toString()]);
|
|
641
641
|
};
|
|
642
|
-
if (
|
|
642
|
+
if (c === "last")
|
|
643
643
|
return () => {
|
|
644
|
-
const r =
|
|
644
|
+
const r = n.getState().getNestedState(e, t);
|
|
645
645
|
if (r.length === 0) return;
|
|
646
|
-
const o = r.length - 1, a = r[o],
|
|
647
|
-
return s(a,
|
|
646
|
+
const o = r.length - 1, a = r[o], l = [...t, o.toString()];
|
|
647
|
+
return s(a, l);
|
|
648
648
|
};
|
|
649
|
-
if (
|
|
650
|
-
return (r) => (h(
|
|
651
|
-
|
|
652
|
-
|
|
649
|
+
if (c === "insert")
|
|
650
|
+
return (r) => (h(t), se(i, r, t, e), s(
|
|
651
|
+
n.getState().getNestedState(e, t),
|
|
652
|
+
t
|
|
653
653
|
));
|
|
654
|
-
if (
|
|
654
|
+
if (c === "uniqueInsert")
|
|
655
655
|
return (r, o, a) => {
|
|
656
|
-
const
|
|
656
|
+
const l = n.getState().getNestedState(e, t), w = J(r) ? r(l) : r;
|
|
657
657
|
let y = null;
|
|
658
|
-
if (!
|
|
658
|
+
if (!l.some((p) => {
|
|
659
659
|
if (o) {
|
|
660
|
-
const
|
|
661
|
-
(
|
|
660
|
+
const b = o.every(
|
|
661
|
+
(P) => G(p[P], w[P])
|
|
662
662
|
);
|
|
663
|
-
return
|
|
663
|
+
return b && (y = p), b;
|
|
664
664
|
}
|
|
665
|
-
const
|
|
666
|
-
return
|
|
665
|
+
const k = G(p, w);
|
|
666
|
+
return k && (y = p), k;
|
|
667
667
|
}))
|
|
668
|
-
h(
|
|
668
|
+
h(t), se(i, w, t, e);
|
|
669
669
|
else if (a && y) {
|
|
670
|
-
const
|
|
671
|
-
(
|
|
670
|
+
const p = a(y), k = l.map(
|
|
671
|
+
(b) => G(b, y) ? p : b
|
|
672
672
|
);
|
|
673
|
-
h(
|
|
673
|
+
h(t), Y(i, k, t);
|
|
674
674
|
}
|
|
675
675
|
};
|
|
676
|
-
if (
|
|
676
|
+
if (c === "cut")
|
|
677
677
|
return (r, o) => {
|
|
678
678
|
if (!o?.waitForSync)
|
|
679
|
-
return h(
|
|
680
|
-
|
|
681
|
-
|
|
679
|
+
return h(t), X(i, t, e, r), s(
|
|
680
|
+
n.getState().getNestedState(e, t),
|
|
681
|
+
t
|
|
682
682
|
);
|
|
683
683
|
};
|
|
684
|
-
if (
|
|
684
|
+
if (c === "cutByValue")
|
|
685
685
|
return (r) => {
|
|
686
686
|
for (let o = 0; o < m.length; o++)
|
|
687
|
-
m[o] === r &&
|
|
687
|
+
m[o] === r && X(i, t, e, o);
|
|
688
688
|
};
|
|
689
|
-
if (
|
|
689
|
+
if (c === "toggleByValue")
|
|
690
690
|
return (r) => {
|
|
691
691
|
const o = m.findIndex((a) => a === r);
|
|
692
|
-
o > -1 ?
|
|
692
|
+
o > -1 ? X(i, t, e, o) : se(i, r, t, e);
|
|
693
693
|
};
|
|
694
|
-
if (
|
|
694
|
+
if (c === "stateFind")
|
|
695
695
|
return (r) => {
|
|
696
696
|
const a = d().find(
|
|
697
|
-
({ item:
|
|
697
|
+
({ item: w }, y) => r(w, y)
|
|
698
698
|
);
|
|
699
699
|
if (!a) return;
|
|
700
|
-
const
|
|
701
|
-
return s(a.item,
|
|
700
|
+
const l = [...t, a.originalIndex.toString()];
|
|
701
|
+
return s(a.item, l, I);
|
|
702
702
|
};
|
|
703
|
-
if (
|
|
703
|
+
if (c === "findWith")
|
|
704
704
|
return (r, o) => {
|
|
705
|
-
const
|
|
705
|
+
const l = d().find(
|
|
706
706
|
({ item: y }) => y[r] === o
|
|
707
707
|
);
|
|
708
|
-
if (!
|
|
709
|
-
const
|
|
710
|
-
return s(
|
|
708
|
+
if (!l) return;
|
|
709
|
+
const w = [...t, l.originalIndex.toString()];
|
|
710
|
+
return s(l.item, w, I);
|
|
711
711
|
};
|
|
712
712
|
}
|
|
713
|
-
const
|
|
714
|
-
if (!isNaN(Number(
|
|
715
|
-
const d =
|
|
716
|
-
if (Array.isArray(r) &&
|
|
717
|
-
return () =>
|
|
713
|
+
const H = t[t.length - 1];
|
|
714
|
+
if (!isNaN(Number(H))) {
|
|
715
|
+
const d = t.slice(0, -1), r = n.getState().getNestedState(e, d);
|
|
716
|
+
if (Array.isArray(r) && c === "cut")
|
|
717
|
+
return () => X(
|
|
718
718
|
i,
|
|
719
719
|
d,
|
|
720
720
|
e,
|
|
721
|
-
Number(
|
|
721
|
+
Number(H)
|
|
722
722
|
);
|
|
723
723
|
}
|
|
724
|
-
if (
|
|
725
|
-
return () =>
|
|
726
|
-
if (
|
|
724
|
+
if (c === "get")
|
|
725
|
+
return () => n.getState().getNestedState(e, t);
|
|
726
|
+
if (c === "$derive")
|
|
727
727
|
return (d) => ce({
|
|
728
728
|
_stateKey: e,
|
|
729
|
-
_path:
|
|
729
|
+
_path: t,
|
|
730
730
|
_effect: d.toString()
|
|
731
731
|
});
|
|
732
|
-
if (
|
|
732
|
+
if (c === "$derive")
|
|
733
733
|
return (d) => ce({
|
|
734
734
|
_stateKey: e,
|
|
735
|
-
_path:
|
|
735
|
+
_path: t,
|
|
736
736
|
_effect: d.toString()
|
|
737
737
|
});
|
|
738
|
-
if (
|
|
738
|
+
if (c === "$get")
|
|
739
739
|
return () => ce({
|
|
740
740
|
_stateKey: e,
|
|
741
|
-
_path:
|
|
741
|
+
_path: t
|
|
742
742
|
});
|
|
743
|
-
if (
|
|
744
|
-
const d = `${e}:${
|
|
745
|
-
return
|
|
743
|
+
if (c === "lastSynced") {
|
|
744
|
+
const d = `${e}:${t.join(".")}`;
|
|
745
|
+
return n.getState().getSyncInfo(d);
|
|
746
746
|
}
|
|
747
|
-
if (
|
|
748
|
-
return (d) =>
|
|
749
|
-
if (
|
|
750
|
-
const d =
|
|
751
|
-
return Array.isArray(o) ? Number(
|
|
747
|
+
if (c == "getLocalStorage")
|
|
748
|
+
return (d) => ne(u + "-" + e + "-" + d);
|
|
749
|
+
if (c === "_selected") {
|
|
750
|
+
const d = t.slice(0, -1), r = d.join("."), o = n.getState().getNestedState(e, d);
|
|
751
|
+
return Array.isArray(o) ? Number(t[t.length - 1]) === n.getState().getSelectedIndex(e, r) : void 0;
|
|
752
752
|
}
|
|
753
|
-
if (
|
|
753
|
+
if (c === "setSelected")
|
|
754
754
|
return (d) => {
|
|
755
|
-
const r =
|
|
756
|
-
d ?
|
|
757
|
-
const
|
|
758
|
-
|
|
755
|
+
const r = t.slice(0, -1), o = Number(t[t.length - 1]), a = r.join(".");
|
|
756
|
+
d ? n.getState().setSelectedIndex(e, a, o) : n.getState().setSelectedIndex(e, a, void 0);
|
|
757
|
+
const l = n.getState().getNestedState(e, [...r]);
|
|
758
|
+
Y(i, l, r), h(r);
|
|
759
759
|
};
|
|
760
|
-
if (
|
|
760
|
+
if (c === "toggleSelected")
|
|
761
761
|
return () => {
|
|
762
|
-
const d =
|
|
763
|
-
|
|
762
|
+
const d = t.slice(0, -1), r = Number(t[t.length - 1]), o = d.join("."), a = n.getState().getSelectedIndex(e, o);
|
|
763
|
+
n.getState().setSelectedIndex(
|
|
764
764
|
e,
|
|
765
765
|
o,
|
|
766
766
|
a === r ? void 0 : r
|
|
767
767
|
);
|
|
768
|
-
const
|
|
769
|
-
|
|
768
|
+
const l = n.getState().getNestedState(e, [...d]);
|
|
769
|
+
Y(i, l, d), h(d);
|
|
770
770
|
};
|
|
771
|
-
if (
|
|
772
|
-
if (
|
|
771
|
+
if (t.length == 0) {
|
|
772
|
+
if (c === "applyJsonPatch")
|
|
773
773
|
return (d) => {
|
|
774
|
-
const r =
|
|
775
|
-
|
|
776
|
-
...c,
|
|
777
|
-
middleware: void 0
|
|
778
|
-
}), Ee(
|
|
774
|
+
const r = n.getState().cogsStateStore[e], a = Pe(r, d).newDocument;
|
|
775
|
+
pe(
|
|
779
776
|
e,
|
|
780
|
-
|
|
777
|
+
n.getState().initialStateGlobal[e],
|
|
781
778
|
a,
|
|
782
779
|
i,
|
|
783
780
|
S,
|
|
784
781
|
u
|
|
785
|
-
)
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
}), $.add("");
|
|
805
|
-
});
|
|
806
|
-
for (const [
|
|
807
|
-
A,
|
|
808
|
-
T
|
|
809
|
-
] of w.components.entries()) {
|
|
810
|
-
console.log("component update logic component", T);
|
|
811
|
-
let V = !1;
|
|
812
|
-
const R = Array.isArray(T.reactiveType) ? T.reactiveType : [T.reactiveType || "component"];
|
|
813
|
-
if (!R.includes("none")) {
|
|
814
|
-
if (R.includes("all")) {
|
|
815
|
-
T.forceUpdate();
|
|
816
|
-
continue;
|
|
817
|
-
}
|
|
818
|
-
if (R.includes("component"))
|
|
819
|
-
for (const b of T.paths) {
|
|
820
|
-
if ($.has(b)) {
|
|
821
|
-
V = !0;
|
|
822
|
-
break;
|
|
823
|
-
}
|
|
824
|
-
for (const x of $)
|
|
825
|
-
if (x.startsWith(b + ".") || b === "" && x !== "") {
|
|
826
|
-
V = !0;
|
|
782
|
+
);
|
|
783
|
+
const l = n.getState().stateComponents.get(e);
|
|
784
|
+
if (l) {
|
|
785
|
+
const w = ue(r, a), y = new Set(w);
|
|
786
|
+
for (const [
|
|
787
|
+
E,
|
|
788
|
+
p
|
|
789
|
+
] of l.components.entries()) {
|
|
790
|
+
let k = !1;
|
|
791
|
+
const b = Array.isArray(p.reactiveType) ? p.reactiveType : [p.reactiveType || "component"];
|
|
792
|
+
if (!b.includes("none")) {
|
|
793
|
+
if (b.includes("all")) {
|
|
794
|
+
p.forceUpdate();
|
|
795
|
+
continue;
|
|
796
|
+
}
|
|
797
|
+
if (b.includes("component") && (p.paths.has("") && (k = !0), !k))
|
|
798
|
+
for (const P of y) {
|
|
799
|
+
if (p.paths.has(P)) {
|
|
800
|
+
k = !0;
|
|
827
801
|
break;
|
|
828
802
|
}
|
|
829
|
-
|
|
803
|
+
let x = P;
|
|
804
|
+
for (; x.includes("."); )
|
|
805
|
+
if (x = x.substring(
|
|
806
|
+
0,
|
|
807
|
+
x.lastIndexOf(".")
|
|
808
|
+
), p.paths.has(x)) {
|
|
809
|
+
k = !0;
|
|
810
|
+
break;
|
|
811
|
+
}
|
|
812
|
+
if (k) break;
|
|
813
|
+
}
|
|
814
|
+
if (!k && b.includes("deps") && p.depsFunction) {
|
|
815
|
+
const P = p.depsFunction(a);
|
|
816
|
+
let x = !1;
|
|
817
|
+
typeof P == "boolean" ? P && (x = !0) : G(p.deps, P) || (p.deps = P, x = !0), x && (k = !0);
|
|
830
818
|
}
|
|
831
|
-
|
|
832
|
-
const b = T.depsFunction(a);
|
|
833
|
-
let x = !1;
|
|
834
|
-
typeof b == "boolean" ? b && (x = !0) : L(T.deps, b) || (T.deps = b, x = !0), x && (V = !0);
|
|
819
|
+
k && p.forceUpdate();
|
|
835
820
|
}
|
|
836
|
-
V && T.forceUpdate();
|
|
837
821
|
}
|
|
838
822
|
}
|
|
839
823
|
};
|
|
840
|
-
if (
|
|
824
|
+
if (c === "validateZodSchema")
|
|
841
825
|
return () => {
|
|
842
|
-
const d =
|
|
826
|
+
const d = n.getState().getInitialOptions(e)?.validation, r = n.getState().addValidationError;
|
|
843
827
|
if (!d?.zodSchema)
|
|
844
828
|
throw new Error("Zod schema not found");
|
|
845
829
|
if (!d?.key)
|
|
846
830
|
throw new Error("Validation key not found");
|
|
847
|
-
|
|
848
|
-
const o =
|
|
831
|
+
z(d.key);
|
|
832
|
+
const o = n.getState().cogsStateStore[e];
|
|
849
833
|
try {
|
|
850
|
-
const a =
|
|
851
|
-
a && a.length > 0 && a.forEach(([
|
|
852
|
-
|
|
834
|
+
const a = n.getState().getValidationErrors(d.key);
|
|
835
|
+
a && a.length > 0 && a.forEach(([w]) => {
|
|
836
|
+
w && w.startsWith(d.key) && z(w);
|
|
853
837
|
});
|
|
854
|
-
const
|
|
855
|
-
return
|
|
856
|
-
const
|
|
857
|
-
r(
|
|
858
|
-
}),
|
|
838
|
+
const l = d.zodSchema.safeParse(o);
|
|
839
|
+
return l.success ? !0 : (l.error.errors.forEach((y) => {
|
|
840
|
+
const E = y.path, p = y.message, k = [d.key, ...E].join(".");
|
|
841
|
+
r(k, p);
|
|
842
|
+
}), re(e), !1);
|
|
859
843
|
} catch (a) {
|
|
860
844
|
return console.error("Zod schema validation failed", a), !1;
|
|
861
845
|
}
|
|
862
846
|
};
|
|
863
|
-
if (
|
|
864
|
-
if (
|
|
865
|
-
return () =>
|
|
866
|
-
if (
|
|
867
|
-
return () =>
|
|
868
|
-
if (
|
|
869
|
-
return
|
|
870
|
-
if (
|
|
871
|
-
return
|
|
872
|
-
if (
|
|
873
|
-
return
|
|
874
|
-
if (
|
|
847
|
+
if (c === "_componentId") return S;
|
|
848
|
+
if (c === "getComponents")
|
|
849
|
+
return () => n().stateComponents.get(e);
|
|
850
|
+
if (c === "getAllFormRefs")
|
|
851
|
+
return () => ye.getState().getFormRefsByStateKey(e);
|
|
852
|
+
if (c === "_initialState")
|
|
853
|
+
return n.getState().initialStateGlobal[e];
|
|
854
|
+
if (c === "_serverState")
|
|
855
|
+
return n.getState().serverState[e];
|
|
856
|
+
if (c === "_isLoading")
|
|
857
|
+
return n.getState().isLoadingGlobal[e];
|
|
858
|
+
if (c === "revertToInitialState")
|
|
875
859
|
return v.revertToInitialState;
|
|
876
|
-
if (
|
|
877
|
-
if (
|
|
860
|
+
if (c === "updateInitialState") return v.updateInitialState;
|
|
861
|
+
if (c === "removeValidation") return v.removeValidation;
|
|
878
862
|
}
|
|
879
|
-
if (
|
|
880
|
-
return () =>
|
|
881
|
-
if (
|
|
863
|
+
if (c === "getFormRef")
|
|
864
|
+
return () => ye.getState().getFormRef(e + "." + t.join("."));
|
|
865
|
+
if (c === "validationWrapper")
|
|
882
866
|
return ({
|
|
883
867
|
children: d,
|
|
884
868
|
hideMessage: r
|
|
885
|
-
}) => /* @__PURE__ */
|
|
869
|
+
}) => /* @__PURE__ */ me(
|
|
886
870
|
_e,
|
|
887
871
|
{
|
|
888
872
|
formOpts: r ? { validation: { message: "" } } : void 0,
|
|
889
|
-
path:
|
|
890
|
-
validationKey:
|
|
873
|
+
path: t,
|
|
874
|
+
validationKey: n.getState().getInitialOptions(e)?.validation?.key || "",
|
|
891
875
|
stateKey: e,
|
|
892
876
|
validIndices: I?.validIndices,
|
|
893
877
|
children: d
|
|
894
878
|
}
|
|
895
879
|
);
|
|
896
|
-
if (
|
|
897
|
-
if (
|
|
898
|
-
if (
|
|
899
|
-
if (
|
|
880
|
+
if (c === "_stateKey") return e;
|
|
881
|
+
if (c === "_path") return t;
|
|
882
|
+
if (c === "_isServerSynced") return v._isServerSynced;
|
|
883
|
+
if (c === "update")
|
|
900
884
|
return (d, r) => {
|
|
901
885
|
if (r?.debounce)
|
|
902
886
|
Ve(() => {
|
|
903
|
-
|
|
904
|
-
const o =
|
|
887
|
+
Y(i, d, t, "");
|
|
888
|
+
const o = n.getState().getNestedState(e, t);
|
|
905
889
|
r?.afterUpdate && r.afterUpdate(o);
|
|
906
890
|
}, r.debounce);
|
|
907
891
|
else {
|
|
908
|
-
|
|
909
|
-
const o =
|
|
892
|
+
Y(i, d, t, "");
|
|
893
|
+
const o = n.getState().getNestedState(e, t);
|
|
910
894
|
r?.afterUpdate && r.afterUpdate(o);
|
|
911
895
|
}
|
|
912
|
-
h(
|
|
896
|
+
h(t);
|
|
913
897
|
};
|
|
914
|
-
if (
|
|
915
|
-
return (d, r) => /* @__PURE__ */
|
|
916
|
-
|
|
898
|
+
if (c === "formElement")
|
|
899
|
+
return (d, r) => /* @__PURE__ */ me(
|
|
900
|
+
be,
|
|
917
901
|
{
|
|
918
902
|
setState: i,
|
|
919
903
|
stateKey: e,
|
|
920
|
-
path:
|
|
904
|
+
path: t,
|
|
921
905
|
child: d,
|
|
922
906
|
formOpts: r
|
|
923
907
|
}
|
|
924
908
|
);
|
|
925
|
-
const
|
|
926
|
-
return s(
|
|
909
|
+
const q = [...t, c], _ = n.getState().getNestedState(e, q);
|
|
910
|
+
return s(_, q, I);
|
|
927
911
|
}
|
|
928
|
-
},
|
|
929
|
-
return f.set(
|
|
930
|
-
proxy:
|
|
931
|
-
stateVersion:
|
|
932
|
-
}),
|
|
912
|
+
}, U = new Proxy(A, V);
|
|
913
|
+
return f.set(j, {
|
|
914
|
+
proxy: U,
|
|
915
|
+
stateVersion: T
|
|
916
|
+
}), U;
|
|
933
917
|
}
|
|
934
918
|
return s(
|
|
935
|
-
|
|
919
|
+
n.getState().getNestedState(e, [])
|
|
936
920
|
);
|
|
937
921
|
}
|
|
938
922
|
function ce(e) {
|
|
939
|
-
return
|
|
923
|
+
return te(Ge, { proxy: e });
|
|
940
924
|
}
|
|
941
|
-
function
|
|
925
|
+
function Me({
|
|
942
926
|
proxy: e,
|
|
943
927
|
rebuildStateShape: i
|
|
944
928
|
}) {
|
|
945
|
-
const S =
|
|
929
|
+
const S = n().getNestedState(e._stateKey, e._path);
|
|
946
930
|
return Array.isArray(S) ? i(
|
|
947
931
|
S,
|
|
948
932
|
e._path
|
|
949
933
|
).stateMapNoRender(
|
|
950
|
-
(f,
|
|
934
|
+
(f, T, h, v, s) => e._mapFn(f, T, h, v, s)
|
|
951
935
|
) : null;
|
|
952
936
|
}
|
|
953
|
-
function
|
|
937
|
+
function Ge({
|
|
954
938
|
proxy: e
|
|
955
939
|
}) {
|
|
956
|
-
const i =
|
|
940
|
+
const i = Q(null), S = `${e._stateKey}-${e._path.join(".")}`;
|
|
957
941
|
return de(() => {
|
|
958
942
|
const u = i.current;
|
|
959
943
|
if (!u || !u.parentElement) return;
|
|
@@ -966,24 +950,24 @@ function We({
|
|
|
966
950
|
position: h,
|
|
967
951
|
effect: e._effect
|
|
968
952
|
};
|
|
969
|
-
|
|
970
|
-
const
|
|
953
|
+
n.getState().addSignalElement(S, m);
|
|
954
|
+
const t = n.getState().getNestedState(e._stateKey, e._path);
|
|
971
955
|
let I;
|
|
972
956
|
if (e._effect)
|
|
973
957
|
try {
|
|
974
958
|
I = new Function(
|
|
975
959
|
"state",
|
|
976
960
|
`return (${e._effect})(state)`
|
|
977
|
-
)(
|
|
978
|
-
} catch (
|
|
979
|
-
console.error("Error evaluating effect function during mount:",
|
|
961
|
+
)(t);
|
|
962
|
+
} catch (A) {
|
|
963
|
+
console.error("Error evaluating effect function during mount:", A), I = t;
|
|
980
964
|
}
|
|
981
965
|
else
|
|
982
|
-
I =
|
|
966
|
+
I = t;
|
|
983
967
|
I !== null && typeof I == "object" && (I = JSON.stringify(I));
|
|
984
|
-
const
|
|
985
|
-
u.replaceWith(
|
|
986
|
-
}, [e._stateKey, e._path.join("."), e._effect]),
|
|
968
|
+
const j = document.createTextNode(String(I));
|
|
969
|
+
u.replaceWith(j);
|
|
970
|
+
}, [e._stateKey, e._path.join("."), e._effect]), te("span", {
|
|
987
971
|
ref: i,
|
|
988
972
|
style: { display: "none" },
|
|
989
973
|
"data-signal-id": S
|
|
@@ -992,7 +976,7 @@ function We({
|
|
|
992
976
|
function tt(e) {
|
|
993
977
|
const i = Te(
|
|
994
978
|
(S) => {
|
|
995
|
-
const u =
|
|
979
|
+
const u = n.getState().stateComponents.get(e._stateKey) || {
|
|
996
980
|
components: /* @__PURE__ */ new Map()
|
|
997
981
|
};
|
|
998
982
|
return u.components.set(e._stateKey, {
|
|
@@ -1000,9 +984,9 @@ function tt(e) {
|
|
|
1000
984
|
paths: /* @__PURE__ */ new Set([e._path.join(".")])
|
|
1001
985
|
}), () => u.components.delete(e._stateKey);
|
|
1002
986
|
},
|
|
1003
|
-
() =>
|
|
987
|
+
() => n.getState().getNestedState(e._stateKey, e._path)
|
|
1004
988
|
);
|
|
1005
|
-
return
|
|
989
|
+
return te("text", {}, String(i));
|
|
1006
990
|
}
|
|
1007
991
|
export {
|
|
1008
992
|
ce as $cogsSignal,
|
|
@@ -1010,6 +994,6 @@ export {
|
|
|
1010
994
|
Qe as addStateOptions,
|
|
1011
995
|
Ke as createCogsState,
|
|
1012
996
|
et as notifyComponent,
|
|
1013
|
-
|
|
997
|
+
De as useCogsStateFn
|
|
1014
998
|
};
|
|
1015
999
|
//# sourceMappingURL=CogsState.jsx.map
|