cogsbox-state 0.5.276 → 0.5.278
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 +584 -570
- package/dist/CogsState.jsx.map +1 -1
- package/dist/store.d.ts +9 -0
- package/dist/store.js +151 -83
- package/dist/store.js.map +1 -1
- package/package.json +1 -1
- package/src/CogsState.tsx +28 -3
- package/src/store.ts +149 -0
package/dist/store.d.ts
CHANGED
|
@@ -33,6 +33,15 @@ export type FormRefStoreState = {
|
|
|
33
33
|
};
|
|
34
34
|
export declare const formRefStore: import('zustand').UseBoundStore<import('zustand').StoreApi<FormRefStoreState>>;
|
|
35
35
|
export type CogsGlobalState = {
|
|
36
|
+
shadowStateStore: {
|
|
37
|
+
[key: string]: any;
|
|
38
|
+
};
|
|
39
|
+
initializeShadowState: (key: string, initialState: any) => void;
|
|
40
|
+
updateShadowAtPath: (key: string, path: string[], newValue: any) => void;
|
|
41
|
+
insertShadowArrayElement: (key: string, arrayPath: string[]) => void;
|
|
42
|
+
removeShadowArrayElement: (key: string, arrayPath: string[], index: number) => void;
|
|
43
|
+
getShadowMetadata: (key: string, path: string[]) => any;
|
|
44
|
+
setShadowMetadata: (key: string, path: string[], metadata: any) => void;
|
|
36
45
|
selectedIndicesMap: Map<string, Map<string, number>>;
|
|
37
46
|
getSelectedIndex: (stateKey: string, parentPath: string) => number | undefined;
|
|
38
47
|
setSelectedIndex: (stateKey: string, parentPath: string, index: number | undefined) => void;
|
package/dist/store.js
CHANGED
|
@@ -1,37 +1,105 @@
|
|
|
1
|
-
import { create as
|
|
2
|
-
const
|
|
1
|
+
import { create as u } from "zustand";
|
|
2
|
+
const w = u((s, l) => ({
|
|
3
3
|
formRefs: /* @__PURE__ */ new Map(),
|
|
4
|
-
registerFormRef: (e, r) =>
|
|
4
|
+
registerFormRef: (e, r) => s((t) => {
|
|
5
5
|
const n = new Map(t.formRefs);
|
|
6
6
|
return n.set(e, r), { formRefs: n };
|
|
7
7
|
}),
|
|
8
|
-
getFormRef: (e) =>
|
|
9
|
-
removeFormRef: (e) =>
|
|
8
|
+
getFormRef: (e) => l().formRefs.get(e),
|
|
9
|
+
removeFormRef: (e) => s((r) => {
|
|
10
10
|
const t = new Map(r.formRefs);
|
|
11
11
|
return t.delete(e), { formRefs: t };
|
|
12
12
|
}),
|
|
13
13
|
// Get all refs that start with the stateKey prefix
|
|
14
14
|
getFormRefsByStateKey: (e) => {
|
|
15
|
-
const r =
|
|
16
|
-
return r.forEach((
|
|
17
|
-
(
|
|
15
|
+
const r = l().formRefs, t = e + ".", n = /* @__PURE__ */ new Map();
|
|
16
|
+
return r.forEach((o, a) => {
|
|
17
|
+
(a.startsWith(t) || a === e) && n.set(a, o);
|
|
18
18
|
}), n;
|
|
19
19
|
}
|
|
20
|
-
})),
|
|
20
|
+
})), h = u((s, l) => ({
|
|
21
|
+
shadowStateStore: {},
|
|
22
|
+
getShadowMetadata: (e, r) => {
|
|
23
|
+
const t = l().shadowStateStore[e];
|
|
24
|
+
if (!t) return null;
|
|
25
|
+
let n = t;
|
|
26
|
+
for (const o of r)
|
|
27
|
+
if (n = n?.[o], !n) return null;
|
|
28
|
+
return n;
|
|
29
|
+
},
|
|
30
|
+
setShadowMetadata: (e, r, t) => {
|
|
31
|
+
s((n) => {
|
|
32
|
+
const o = { ...n.shadowStateStore };
|
|
33
|
+
if (!o[e]) return n;
|
|
34
|
+
o[e] = JSON.parse(JSON.stringify(o[e]));
|
|
35
|
+
let a = o[e];
|
|
36
|
+
for (const i of r)
|
|
37
|
+
a[i] || (a[i] = {}), a = a[i];
|
|
38
|
+
return Object.assign(a, t), { shadowStateStore: o };
|
|
39
|
+
});
|
|
40
|
+
},
|
|
41
|
+
initializeShadowState: (e, r) => {
|
|
42
|
+
const t = (n) => {
|
|
43
|
+
if (Array.isArray(n))
|
|
44
|
+
return new Array(n.length).fill(null).map((o, a) => t(n[a]));
|
|
45
|
+
if (typeof n == "object" && n !== null) {
|
|
46
|
+
const o = {};
|
|
47
|
+
for (const a in n)
|
|
48
|
+
o[a] = t(n[a]);
|
|
49
|
+
return o;
|
|
50
|
+
}
|
|
51
|
+
return {};
|
|
52
|
+
};
|
|
53
|
+
s((n) => ({
|
|
54
|
+
shadowStateStore: {
|
|
55
|
+
...n.shadowStateStore,
|
|
56
|
+
[e]: t(r)
|
|
57
|
+
}
|
|
58
|
+
}));
|
|
59
|
+
},
|
|
60
|
+
updateShadowAtPath: (e, r, t) => {
|
|
61
|
+
s((n) => {
|
|
62
|
+
const o = { ...n.shadowStateStore };
|
|
63
|
+
if (!o[e]) return n;
|
|
64
|
+
let a = o[e];
|
|
65
|
+
const i = [...r], d = i.pop();
|
|
66
|
+
for (const c of i)
|
|
67
|
+
a[c] || (a[c] = {}), a = a[c];
|
|
68
|
+
return d !== void 0 && (Array.isArray(t) ? a[d] = new Array(t.length) : typeof t == "object" && t !== null ? a[d] = {} : a[d] = a[d] || {}), { shadowStateStore: o };
|
|
69
|
+
});
|
|
70
|
+
},
|
|
71
|
+
insertShadowArrayElement: (e, r) => {
|
|
72
|
+
s((t) => {
|
|
73
|
+
const n = { ...t.shadowStateStore };
|
|
74
|
+
let o = n[e];
|
|
75
|
+
for (const a of r)
|
|
76
|
+
o = o?.[a];
|
|
77
|
+
return Array.isArray(o) && o.push({}), { shadowStateStore: n };
|
|
78
|
+
});
|
|
79
|
+
},
|
|
80
|
+
removeShadowArrayElement: (e, r, t) => {
|
|
81
|
+
s((n) => {
|
|
82
|
+
const o = { ...n.shadowStateStore };
|
|
83
|
+
let a = o[e];
|
|
84
|
+
for (const i of r)
|
|
85
|
+
a = a?.[i];
|
|
86
|
+
return Array.isArray(a) && a.splice(t, 1), { shadowStateStore: o };
|
|
87
|
+
});
|
|
88
|
+
},
|
|
21
89
|
selectedIndicesMap: /* @__PURE__ */ new Map(),
|
|
22
90
|
// Add the new methods
|
|
23
91
|
getSelectedIndex: (e, r) => {
|
|
24
|
-
const t =
|
|
92
|
+
const t = l().selectedIndicesMap.get(e);
|
|
25
93
|
if (t)
|
|
26
94
|
return t.get(r);
|
|
27
95
|
},
|
|
28
96
|
setSelectedIndex: (e, r, t) => {
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
let
|
|
32
|
-
return
|
|
97
|
+
s((n) => {
|
|
98
|
+
const o = new Map(n.selectedIndicesMap);
|
|
99
|
+
let a = o.get(e);
|
|
100
|
+
return a || (a = /* @__PURE__ */ new Map(), o.set(e, a)), t === void 0 ? a.delete(r) : a.set(r, t), {
|
|
33
101
|
...n,
|
|
34
|
-
selectedIndicesMap:
|
|
102
|
+
selectedIndicesMap: o
|
|
35
103
|
};
|
|
36
104
|
});
|
|
37
105
|
},
|
|
@@ -39,18 +107,18 @@ const v = p((o, i) => ({
|
|
|
39
107
|
stateKey: e,
|
|
40
108
|
path: r
|
|
41
109
|
}) => {
|
|
42
|
-
|
|
43
|
-
const n = new Map(t.selectedIndicesMap),
|
|
44
|
-
if (!
|
|
45
|
-
const
|
|
46
|
-
return
|
|
110
|
+
s((t) => {
|
|
111
|
+
const n = new Map(t.selectedIndicesMap), o = n.get(e);
|
|
112
|
+
if (!o) return t;
|
|
113
|
+
const a = r.join(".");
|
|
114
|
+
return o.delete(a), {
|
|
47
115
|
...t,
|
|
48
116
|
selectedIndicesMap: n
|
|
49
117
|
};
|
|
50
118
|
});
|
|
51
119
|
},
|
|
52
120
|
clearSelectedIndexesForState: (e) => {
|
|
53
|
-
|
|
121
|
+
s((r) => {
|
|
54
122
|
const t = new Map(r.selectedIndicesMap);
|
|
55
123
|
return t.delete(e) ? (console.log(
|
|
56
124
|
`Cleared selected indices map entry for stateKey: ${e}`
|
|
@@ -58,16 +126,16 @@ const v = p((o, i) => ({
|
|
|
58
126
|
});
|
|
59
127
|
},
|
|
60
128
|
stateComponents: /* @__PURE__ */ new Map(),
|
|
61
|
-
subscribe: (e) =>
|
|
129
|
+
subscribe: (e) => l().subscribe(e),
|
|
62
130
|
reactiveDeps: {},
|
|
63
|
-
setReactiveDeps: (e, r) =>
|
|
131
|
+
setReactiveDeps: (e, r) => s((t) => ({
|
|
64
132
|
...t,
|
|
65
133
|
reactiveDeps: {
|
|
66
134
|
...t.reactiveDeps,
|
|
67
135
|
[e]: r
|
|
68
136
|
}
|
|
69
137
|
})),
|
|
70
|
-
deleteReactiveDeps: (e) =>
|
|
138
|
+
deleteReactiveDeps: (e) => s((r) => {
|
|
71
139
|
const { [e]: t, ...n } = r.reactiveDeps;
|
|
72
140
|
return {
|
|
73
141
|
...r,
|
|
@@ -77,14 +145,14 @@ const v = p((o, i) => ({
|
|
|
77
145
|
reRenderTriggerPrevValue: {},
|
|
78
146
|
signalDomElements: /* @__PURE__ */ new Map(),
|
|
79
147
|
addSignalElement: (e, r) => {
|
|
80
|
-
const t =
|
|
81
|
-
t.has(e) || t.set(e, /* @__PURE__ */ new Set()), t.get(e).add(r),
|
|
148
|
+
const t = l().signalDomElements;
|
|
149
|
+
t.has(e) || t.set(e, /* @__PURE__ */ new Set()), t.get(e).add(r), s({ signalDomElements: new Map(t) });
|
|
82
150
|
},
|
|
83
151
|
removeSignalElement: (e, r) => {
|
|
84
|
-
const t =
|
|
85
|
-
n && n.forEach((
|
|
86
|
-
|
|
87
|
-
}),
|
|
152
|
+
const t = l().signalDomElements, n = t.get(e);
|
|
153
|
+
n && n.forEach((o) => {
|
|
154
|
+
o.instanceId === r && n.delete(o);
|
|
155
|
+
}), s({ signalDomElements: new Map(t) });
|
|
88
156
|
},
|
|
89
157
|
initialStateOptions: {},
|
|
90
158
|
updaterState: {},
|
|
@@ -95,7 +163,7 @@ const v = p((o, i) => ({
|
|
|
95
163
|
initialStateGlobal: {},
|
|
96
164
|
iniitialCreatedState: {},
|
|
97
165
|
updateInitialCreatedState: (e, r) => {
|
|
98
|
-
|
|
166
|
+
s((t) => ({
|
|
99
167
|
iniitialCreatedState: {
|
|
100
168
|
...t.iniitialCreatedState,
|
|
101
169
|
[e]: r
|
|
@@ -108,7 +176,7 @@ const v = p((o, i) => ({
|
|
|
108
176
|
serverSyncLog: {},
|
|
109
177
|
serverSideOrNot: {},
|
|
110
178
|
setServerSyncLog: (e, r) => {
|
|
111
|
-
|
|
179
|
+
s((t) => ({
|
|
112
180
|
serverSyncLog: {
|
|
113
181
|
...t.serverSyncLog,
|
|
114
182
|
[e]: [...t.serverSyncLog[e] ?? [], r]
|
|
@@ -116,17 +184,17 @@ const v = p((o, i) => ({
|
|
|
116
184
|
}));
|
|
117
185
|
},
|
|
118
186
|
setServerSideOrNot: (e, r) => {
|
|
119
|
-
|
|
187
|
+
s((t) => ({
|
|
120
188
|
serverSideOrNot: {
|
|
121
189
|
...t.serverSideOrNot,
|
|
122
190
|
[e]: r
|
|
123
191
|
}
|
|
124
192
|
}));
|
|
125
193
|
},
|
|
126
|
-
getServerSideOrNot: (e) =>
|
|
127
|
-
getThisLocalUpdate: (e) =>
|
|
194
|
+
getServerSideOrNot: (e) => l().serverSideOrNot[e],
|
|
195
|
+
getThisLocalUpdate: (e) => l().stateLog[e],
|
|
128
196
|
setServerState: (e, r) => {
|
|
129
|
-
|
|
197
|
+
s((t) => ({
|
|
130
198
|
serverState: {
|
|
131
199
|
...t.serverState,
|
|
132
200
|
[e]: r
|
|
@@ -134,18 +202,18 @@ const v = p((o, i) => ({
|
|
|
134
202
|
}));
|
|
135
203
|
},
|
|
136
204
|
setStateLog: (e, r) => {
|
|
137
|
-
|
|
138
|
-
const n = t.stateLog[e] ?? [],
|
|
205
|
+
s((t) => {
|
|
206
|
+
const n = t.stateLog[e] ?? [], o = r(n);
|
|
139
207
|
return {
|
|
140
208
|
stateLog: {
|
|
141
209
|
...t.stateLog,
|
|
142
|
-
[e]:
|
|
210
|
+
[e]: o
|
|
143
211
|
}
|
|
144
212
|
};
|
|
145
213
|
});
|
|
146
214
|
},
|
|
147
215
|
setIsLoadingGlobal: (e, r) => {
|
|
148
|
-
|
|
216
|
+
s((t) => ({
|
|
149
217
|
isLoadingGlobal: {
|
|
150
218
|
...t.isLoadingGlobal,
|
|
151
219
|
[e]: r
|
|
@@ -153,7 +221,7 @@ const v = p((o, i) => ({
|
|
|
153
221
|
}));
|
|
154
222
|
},
|
|
155
223
|
setServerSyncActions: (e, r) => {
|
|
156
|
-
|
|
224
|
+
s((t) => ({
|
|
157
225
|
serverSyncActions: {
|
|
158
226
|
...t.serverSyncActions,
|
|
159
227
|
[e]: r
|
|
@@ -161,45 +229,45 @@ const v = p((o, i) => ({
|
|
|
161
229
|
}));
|
|
162
230
|
},
|
|
163
231
|
addValidationError: (e, r) => {
|
|
164
|
-
console.log("addValidationError---"),
|
|
165
|
-
const n = new Map(t.validationErrors),
|
|
166
|
-
return console.log("addValidationError", e, r,
|
|
232
|
+
console.log("addValidationError---"), s((t) => {
|
|
233
|
+
const n = new Map(t.validationErrors), o = n.get(e) || [];
|
|
234
|
+
return console.log("addValidationError", e, r, o), n.set(e, [...o, r]), { validationErrors: n };
|
|
167
235
|
});
|
|
168
236
|
},
|
|
169
237
|
removeValidationError: (e) => {
|
|
170
|
-
|
|
238
|
+
s((r) => {
|
|
171
239
|
const t = new Map(r.validationErrors);
|
|
172
240
|
let n = !1;
|
|
173
|
-
const
|
|
174
|
-
return Array.from(t.keys()).forEach((
|
|
175
|
-
const
|
|
176
|
-
if (
|
|
241
|
+
const o = e.split(".");
|
|
242
|
+
return Array.from(t.keys()).forEach((a) => {
|
|
243
|
+
const i = a.split(".");
|
|
244
|
+
if (i.length >= o.length) {
|
|
177
245
|
let d = !0;
|
|
178
|
-
for (let c = 0; c <
|
|
179
|
-
if (
|
|
246
|
+
for (let c = 0; c < o.length; c++)
|
|
247
|
+
if (i[c] !== o[c]) {
|
|
180
248
|
d = !1;
|
|
181
249
|
break;
|
|
182
250
|
}
|
|
183
|
-
d && (n = !0, t.delete(
|
|
251
|
+
d && (n = !0, t.delete(a));
|
|
184
252
|
}
|
|
185
253
|
}), n ? { validationErrors: t } : r;
|
|
186
254
|
});
|
|
187
255
|
},
|
|
188
256
|
getValidationErrors: (e) => {
|
|
189
|
-
const r = [], t =
|
|
190
|
-
return Array.from(t.keys()).forEach((
|
|
191
|
-
const
|
|
192
|
-
if (
|
|
257
|
+
const r = [], t = l().validationErrors, n = e.split("."), o = (a, i) => a === "[*]" ? !0 : Array.isArray(a) ? a.includes(parseInt(i)) : a === i;
|
|
258
|
+
return Array.from(t.keys()).forEach((a) => {
|
|
259
|
+
const i = a.split(".");
|
|
260
|
+
if (i.length >= n.length) {
|
|
193
261
|
let d = !0;
|
|
194
262
|
for (let c = 0; c < n.length; c++) {
|
|
195
|
-
const S = n[c], f =
|
|
263
|
+
const S = n[c], f = i[c];
|
|
196
264
|
if (S === "[*]" || Array.isArray(S)) {
|
|
197
|
-
const
|
|
198
|
-
if (isNaN(
|
|
265
|
+
const p = parseInt(f);
|
|
266
|
+
if (isNaN(p)) {
|
|
199
267
|
d = !1;
|
|
200
268
|
break;
|
|
201
269
|
}
|
|
202
|
-
if (!
|
|
270
|
+
if (!o(S, f)) {
|
|
203
271
|
d = !1;
|
|
204
272
|
break;
|
|
205
273
|
}
|
|
@@ -209,36 +277,36 @@ const v = p((o, i) => ({
|
|
|
209
277
|
}
|
|
210
278
|
}
|
|
211
279
|
if (d) {
|
|
212
|
-
const c = t.get(
|
|
280
|
+
const c = t.get(a);
|
|
213
281
|
c && r.push(...c);
|
|
214
282
|
}
|
|
215
283
|
}
|
|
216
284
|
}), r;
|
|
217
285
|
},
|
|
218
|
-
getInitialOptions: (e) =>
|
|
286
|
+
getInitialOptions: (e) => l().initialStateOptions[e],
|
|
219
287
|
getNestedState: (e, r) => {
|
|
220
|
-
const t =
|
|
221
|
-
if (
|
|
222
|
-
const
|
|
223
|
-
if (
|
|
224
|
-
if (!Array.isArray(
|
|
288
|
+
const t = l().cogsStateStore[e], n = (o, a) => {
|
|
289
|
+
if (a.length === 0) return o;
|
|
290
|
+
const i = a[0], d = a.slice(1);
|
|
291
|
+
if (i === "[*]") {
|
|
292
|
+
if (!Array.isArray(o)) {
|
|
225
293
|
console.warn("Asterisk notation used on non-array value");
|
|
226
294
|
return;
|
|
227
295
|
}
|
|
228
|
-
if (d.length === 0) return
|
|
229
|
-
const S =
|
|
296
|
+
if (d.length === 0) return o;
|
|
297
|
+
const S = o.map(
|
|
230
298
|
(f) => n(f, d)
|
|
231
299
|
);
|
|
232
300
|
return Array.isArray(S[0]) ? S.flat() : S;
|
|
233
301
|
}
|
|
234
|
-
const c =
|
|
302
|
+
const c = o[i];
|
|
235
303
|
if (c !== void 0)
|
|
236
304
|
return n(c, d);
|
|
237
305
|
};
|
|
238
306
|
return n(t, r);
|
|
239
307
|
},
|
|
240
308
|
setInitialStateOptions: (e, r) => {
|
|
241
|
-
|
|
309
|
+
s((t) => ({
|
|
242
310
|
initialStateOptions: {
|
|
243
311
|
...t.initialStateOptions,
|
|
244
312
|
[e]: r
|
|
@@ -246,21 +314,21 @@ const v = p((o, i) => ({
|
|
|
246
314
|
}));
|
|
247
315
|
},
|
|
248
316
|
updateInitialStateGlobal: (e, r) => {
|
|
249
|
-
|
|
317
|
+
s((t) => ({
|
|
250
318
|
initialStateGlobal: {
|
|
251
319
|
...t.initialStateGlobal,
|
|
252
320
|
[e]: r
|
|
253
321
|
}
|
|
254
322
|
}));
|
|
255
323
|
},
|
|
256
|
-
getUpdaterState: (e) =>
|
|
324
|
+
getUpdaterState: (e) => l().updaterState[e],
|
|
257
325
|
setUpdaterState: (e, r) => {
|
|
258
|
-
const t =
|
|
259
|
-
!e || !r ||
|
|
326
|
+
const t = l().updaterState;
|
|
327
|
+
!e || !r || s({ updaterState: { ...t ?? {}, [e]: r } });
|
|
260
328
|
},
|
|
261
|
-
getKeyState: (e) =>
|
|
329
|
+
getKeyState: (e) => l().cogsStateStore[e],
|
|
262
330
|
setState: (e, r) => {
|
|
263
|
-
|
|
331
|
+
s((t) => ({
|
|
264
332
|
cogsStateStore: {
|
|
265
333
|
...t.cogsStateStore,
|
|
266
334
|
[e]: typeof r == "function" ? r(t.cogsStateStore[e]) : r
|
|
@@ -268,7 +336,7 @@ const v = p((o, i) => ({
|
|
|
268
336
|
}));
|
|
269
337
|
},
|
|
270
338
|
setInitialStates: (e) => {
|
|
271
|
-
|
|
339
|
+
s((r) => ({
|
|
272
340
|
cogsStateStore: {
|
|
273
341
|
...r.cogsStateStore,
|
|
274
342
|
...e
|
|
@@ -276,7 +344,7 @@ const v = p((o, i) => ({
|
|
|
276
344
|
}));
|
|
277
345
|
},
|
|
278
346
|
setCreatedState: (e) => {
|
|
279
|
-
|
|
347
|
+
s((r) => ({
|
|
280
348
|
iniitialCreatedState: {
|
|
281
349
|
...r.cogsStateStore,
|
|
282
350
|
...e
|
|
@@ -284,14 +352,14 @@ const v = p((o, i) => ({
|
|
|
284
352
|
}));
|
|
285
353
|
},
|
|
286
354
|
syncInfoStore: /* @__PURE__ */ new Map(),
|
|
287
|
-
setSyncInfo: (e, r) =>
|
|
355
|
+
setSyncInfo: (e, r) => s((t) => {
|
|
288
356
|
const n = new Map(t.syncInfoStore);
|
|
289
357
|
return n.set(e, r), { ...t, syncInfoStore: n };
|
|
290
358
|
}),
|
|
291
|
-
getSyncInfo: (e) =>
|
|
359
|
+
getSyncInfo: (e) => l().syncInfoStore.get(e) || null
|
|
292
360
|
}));
|
|
293
361
|
export {
|
|
294
|
-
|
|
295
|
-
|
|
362
|
+
w as formRefStore,
|
|
363
|
+
h as getGlobalStore
|
|
296
364
|
};
|
|
297
365
|
//# sourceMappingURL=store.js.map
|
package/dist/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sources":["../src/store.ts"],"sourcesContent":["import { create } from \"zustand\";\r\nimport type {\r\n OptionsType,\r\n ReactivityType,\r\n StateKeys,\r\n SyncActionsType,\r\n SyncInfo,\r\n UpdateTypeDetail,\r\n} from \"./CogsState.js\";\r\n\r\ntype StateUpdater<StateValue> =\r\n | StateValue\r\n | ((prevValue: StateValue) => StateValue);\r\n\r\nexport type FreshValuesObject = {\r\n pathsToValues?: string[];\r\n prevValue?: any;\r\n newValue?: any;\r\n timeStamp: number;\r\n};\r\n\r\ntype SyncLogType = {\r\n timeStamp: number;\r\n};\r\ntype StateValue = any;\r\n\r\nexport type TrieNode = {\r\n subscribers: Set<string>;\r\n children: Map<string, TrieNode>;\r\n};\r\nexport type ComponentsType = {\r\n components: Map<\r\n string,\r\n {\r\n forceUpdate: () => void;\r\n paths: Set<string>;\r\n deps?: any[];\r\n depsFunction?: (state: any) => any[] | true;\r\n reactiveType: ReactivityType[] | ReactivityType;\r\n }\r\n >;\r\n};\r\nexport type FormRefStoreState = {\r\n formRefs: Map<string, React.RefObject<any>>;\r\n registerFormRef: (id: string, ref: React.RefObject<any>) => void;\r\n getFormRef: (id: string) => React.RefObject<any> | undefined;\r\n removeFormRef: (id: string) => void;\r\n // New method to get all refs for a stateKey\r\n getFormRefsByStateKey: (\r\n stateKey: string\r\n ) => Map<string, React.RefObject<any>>;\r\n};\r\n\r\nexport const formRefStore = create<FormRefStoreState>((set, get) => ({\r\n formRefs: new Map(),\r\n\r\n registerFormRef: (id, ref) =>\r\n set((state) => {\r\n const newRefs = new Map(state.formRefs);\r\n newRefs.set(id, ref);\r\n return { formRefs: newRefs };\r\n }),\r\n\r\n getFormRef: (id) => get().formRefs.get(id),\r\n\r\n removeFormRef: (id) =>\r\n set((state) => {\r\n const newRefs = new Map(state.formRefs);\r\n newRefs.delete(id);\r\n return { formRefs: newRefs };\r\n }),\r\n\r\n // Get all refs that start with the stateKey prefix\r\n getFormRefsByStateKey: (stateKey) => {\r\n const allRefs = get().formRefs;\r\n const stateKeyPrefix = stateKey + \".\";\r\n const filteredRefs = new Map();\r\n\r\n allRefs.forEach((ref, id) => {\r\n if (id.startsWith(stateKeyPrefix) || id === stateKey) {\r\n filteredRefs.set(id, ref);\r\n }\r\n });\r\n\r\n return filteredRefs;\r\n },\r\n}));\r\nexport type CogsGlobalState = {\r\n selectedIndicesMap: Map<string, Map<string, number>>; // stateKey -> (parentPath -> selectedIndex)\r\n\r\n // Add these new methods\r\n getSelectedIndex: (\r\n stateKey: string,\r\n parentPath: string\r\n ) => number | undefined;\r\n setSelectedIndex: (\r\n stateKey: string,\r\n parentPath: string,\r\n index: number | undefined\r\n ) => void;\r\n clearSelectedIndex: ({\r\n stateKey,\r\n path,\r\n }: {\r\n stateKey: string;\r\n path: string[];\r\n }) => void;\r\n clearSelectedIndexesForState: (stateKey: string) => void;\r\n updaterState: { [key: string]: any };\r\n initialStateOptions: { [key: string]: OptionsType };\r\n cogsStateStore: { [key: string]: StateValue };\r\n isLoadingGlobal: { [key: string]: boolean };\r\n\r\n initialStateGlobal: { [key: string]: StateValue };\r\n iniitialCreatedState: { [key: string]: StateValue };\r\n validationErrors: Map<string, string[]>;\r\n\r\n serverState: { [key: string]: StateValue };\r\n serverSyncActions: { [key: string]: SyncActionsType<any> };\r\n\r\n serverSyncLog: { [key: string]: SyncLogType[] };\r\n serverSideOrNot: { [key: string]: boolean };\r\n setServerSyncLog: (key: string, newValue: SyncLogType) => void;\r\n\r\n setServerSideOrNot: (key: string, value: boolean) => void;\r\n getServerSideOrNot: (key: string) => boolean | undefined;\r\n setServerState: <StateKey extends StateKeys>(\r\n key: StateKey,\r\n value: StateValue\r\n ) => void;\r\n\r\n getThisLocalUpdate: (key: string) => UpdateTypeDetail[] | undefined;\r\n setServerSyncActions: (key: string, value: SyncActionsType<any>) => void;\r\n addValidationError: (path: string, message: string) => void;\r\n getValidationErrors: (path: string) => string[];\r\n updateInitialStateGlobal: (key: string, newState: StateValue) => void;\r\n updateInitialCreatedState: (key: string, newState: StateValue) => void;\r\n getInitialOptions: (key: string) => OptionsType | undefined;\r\n getUpdaterState: (key: string) => StateUpdater<StateValue>;\r\n setUpdaterState: (key: string, newUpdater: any) => void;\r\n getKeyState: <StateKey extends StateKeys>(key: StateKey) => StateValue;\r\n getNestedState: <StateKey extends StateKeys>(\r\n key: StateKey,\r\n path: string[]\r\n ) => StateValue;\r\n setState: <StateKey extends StateKeys>(\r\n key: StateKey,\r\n value: StateUpdater<StateValue>\r\n ) => void;\r\n setInitialStates: (initialState: StateValue) => void;\r\n setCreatedState: (initialState: StateValue) => void;\r\n stateLog: { [key: string]: UpdateTypeDetail[] };\r\n setStateLog: (\r\n key: string,\r\n updater: (prevUpdates: UpdateTypeDetail[]) => UpdateTypeDetail[]\r\n ) => void;\r\n setIsLoadingGlobal: (key: string, value: boolean) => void;\r\n\r\n setInitialStateOptions: (key: string, value: OptionsType) => void;\r\n removeValidationError: (path: string) => void;\r\n signalDomElements: Map<\r\n string,\r\n Set<{\r\n instanceId: string;\r\n parentId: string;\r\n position: number;\r\n effect?: string;\r\n map?: string;\r\n }>\r\n >;\r\n addSignalElement: (\r\n signalId: string,\r\n elementInfo: {\r\n instanceId: string;\r\n parentId: string;\r\n position: number;\r\n effect?: string;\r\n map?: string;\r\n }\r\n ) => void;\r\n removeSignalElement: (signalId: string, instanceId: string) => void;\r\n reRenderTriggerPrevValue: Record<string, any>;\r\n\r\n reactiveDeps: Record<\r\n string,\r\n {\r\n deps: any[];\r\n updaters: Set<() => void>;\r\n depsFunction: ((state: any) => any[] | true) | null;\r\n }\r\n >;\r\n setReactiveDeps: (\r\n key: string,\r\n record: {\r\n deps: any[];\r\n updaters: Set<() => void>;\r\n depsFunction: ((state: any) => any[] | true) | null;\r\n }\r\n ) => void;\r\n deleteReactiveDeps: (key: string) => void;\r\n subscribe: (listener: () => void) => () => void;\r\n\r\n stateComponents: Map<string, ComponentsType>;\r\n syncInfoStore: Map<string, SyncInfo>;\r\n setSyncInfo: (key: string, syncInfo: SyncInfo) => void;\r\n getSyncInfo: (key: string) => SyncInfo | null;\r\n};\r\n\r\nexport const getGlobalStore = create<CogsGlobalState>((set, get) => ({\r\n selectedIndicesMap: new Map<string, Map<string, number>>(),\r\n\r\n // Add the new methods\r\n getSelectedIndex: (stateKey: string, parentPath: string) => {\r\n const stateMap = get().selectedIndicesMap.get(stateKey);\r\n if (!stateMap) return undefined;\r\n return stateMap.get(parentPath);\r\n },\r\n\r\n setSelectedIndex: (\r\n stateKey: string,\r\n parentPath: string,\r\n index: number | undefined\r\n ) => {\r\n set((state) => {\r\n const newMap = new Map(state.selectedIndicesMap);\r\n let stateMap = newMap.get(stateKey);\r\n\r\n if (!stateMap) {\r\n stateMap = new Map<string, number>();\r\n newMap.set(stateKey, stateMap);\r\n }\r\n\r\n if (index === undefined) {\r\n stateMap.delete(parentPath);\r\n } else {\r\n stateMap.set(parentPath, index);\r\n }\r\n\r\n return {\r\n ...state,\r\n selectedIndicesMap: newMap,\r\n };\r\n });\r\n },\r\n clearSelectedIndex: ({\r\n stateKey,\r\n path,\r\n }: {\r\n stateKey: string;\r\n path: string[];\r\n }) => {\r\n set((state) => {\r\n const newMap = new Map(state.selectedIndicesMap);\r\n const stateMap = newMap.get(stateKey);\r\n if (!stateMap) return state;\r\n const parentPath = path.join(\".\");\r\n stateMap.delete(parentPath);\r\n return {\r\n ...state,\r\n selectedIndicesMap: newMap,\r\n };\r\n });\r\n },\r\n clearSelectedIndexesForState: (stateKey: string) => {\r\n set((state) => {\r\n const newOuterMap = new Map(state.selectedIndicesMap);\r\n const changed = newOuterMap.delete(stateKey);\r\n if (changed) {\r\n console.log(\r\n `Cleared selected indices map entry for stateKey: ${stateKey}`\r\n );\r\n return { selectedIndicesMap: newOuterMap };\r\n } else {\r\n return {};\r\n }\r\n });\r\n },\r\n stateComponents: new Map(),\r\n subscribe: (listener: () => void) => {\r\n // zustand's subscribe returns an unsubscribe function\r\n return get().subscribe(listener);\r\n },\r\n\r\n reactiveDeps: {},\r\n setReactiveDeps: (key, record) =>\r\n set((state) => ({\r\n ...state,\r\n reactiveDeps: {\r\n ...state.reactiveDeps,\r\n [key]: record,\r\n },\r\n })),\r\n deleteReactiveDeps: (key) =>\r\n set((state) => {\r\n const { [key]: _, ...rest } = state.reactiveDeps;\r\n return {\r\n ...state,\r\n reactiveDeps: rest,\r\n };\r\n }),\r\n\r\n reRenderTriggerPrevValue: {},\r\n signalDomElements: new Map(),\r\n addSignalElement: (\r\n signalId: string,\r\n elementInfo: { instanceId: string; parentId: string; position: number }\r\n ) => {\r\n const current = get().signalDomElements;\r\n if (!current.has(signalId)) {\r\n current.set(signalId, new Set());\r\n }\r\n current.get(signalId)!.add(elementInfo);\r\n\r\n set({ signalDomElements: new Map(current) }); // Create new reference to trigger update\r\n },\r\n removeSignalElement: (signalId: string, instanceId: string) => {\r\n const current = get().signalDomElements;\r\n const elements = current.get(signalId);\r\n if (elements) {\r\n elements.forEach((el) => {\r\n if (el.instanceId === instanceId) {\r\n elements.delete(el);\r\n }\r\n });\r\n }\r\n set({ signalDomElements: new Map(current) });\r\n },\r\n initialStateOptions: {},\r\n updaterState: {},\r\n stateTimeline: {},\r\n cogsStateStore: {},\r\n stateLog: {},\r\n isLoadingGlobal: {},\r\n\r\n initialStateGlobal: {},\r\n iniitialCreatedState: {},\r\n updateInitialCreatedState: (key, newState) => {\r\n set((prev) => ({\r\n iniitialCreatedState: {\r\n ...prev.iniitialCreatedState,\r\n [key]: newState,\r\n },\r\n }));\r\n },\r\n\r\n validationErrors: new Map(),\r\n\r\n serverState: {},\r\n\r\n serverSyncActions: {},\r\n\r\n serverSyncLog: {},\r\n serverSideOrNot: {},\r\n setServerSyncLog: (key, newValue) => {\r\n set((state) => ({\r\n serverSyncLog: {\r\n ...state.serverSyncLog,\r\n [key]: [...(state.serverSyncLog[key] ?? []), newValue],\r\n },\r\n }));\r\n },\r\n setServerSideOrNot: (key, value) => {\r\n set((state) => ({\r\n serverSideOrNot: {\r\n ...state.serverSideOrNot,\r\n [key]: value,\r\n },\r\n }));\r\n },\r\n getServerSideOrNot: (key) => {\r\n return get().serverSideOrNot[key];\r\n },\r\n\r\n getThisLocalUpdate: (key: string) => {\r\n return get().stateLog[key];\r\n },\r\n setServerState: <StateKey extends StateKeys>(\r\n key: StateKey,\r\n value: StateValue\r\n ) => {\r\n set((prev) => ({\r\n serverState: {\r\n ...prev.serverState,\r\n [key]: value,\r\n },\r\n }));\r\n },\r\n\r\n setStateLog: (\r\n key: string,\r\n updater: (prevUpdates: UpdateTypeDetail[]) => UpdateTypeDetail[]\r\n ) => {\r\n set((prev) => {\r\n const currentUpdates = prev.stateLog[key] ?? [];\r\n const newUpdates = updater(currentUpdates);\r\n return {\r\n stateLog: {\r\n ...prev.stateLog,\r\n [key]: newUpdates,\r\n },\r\n };\r\n });\r\n },\r\n setIsLoadingGlobal: (key: string, value: boolean) => {\r\n set((prev) => ({\r\n isLoadingGlobal: {\r\n ...prev.isLoadingGlobal,\r\n [key]: value,\r\n },\r\n }));\r\n },\r\n setServerSyncActions: (key: string, value: SyncActionsType<any>) => {\r\n set((prev) => ({\r\n serverSyncActions: {\r\n ...prev.serverSyncActions,\r\n [key]: value,\r\n },\r\n }));\r\n },\r\n addValidationError: (path, message) => {\r\n console.log(\"addValidationError---\");\r\n set((prev) => {\r\n const updatedErrors = new Map(prev.validationErrors);\r\n const existingMessages = updatedErrors.get(path) || [];\r\n console.log(\"addValidationError\", path, message, existingMessages);\r\n // Append the new message instead of replacing\r\n updatedErrors.set(path, [...existingMessages, message]);\r\n return { validationErrors: updatedErrors };\r\n });\r\n },\r\n removeValidationError: (path) => {\r\n set((prev) => {\r\n const updatedErrors = new Map(prev.validationErrors);\r\n\r\n let doSomething = false;\r\n const pathArray = path.split(\".\");\r\n Array.from(updatedErrors.keys()).forEach((key) => {\r\n const keyArray = key.split(\".\");\r\n if (keyArray.length >= pathArray.length) {\r\n let match = true;\r\n for (let i = 0; i < pathArray.length; i++) {\r\n if (keyArray[i] !== pathArray[i]) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (match) {\r\n doSomething = true;\r\n updatedErrors.delete(key);\r\n }\r\n }\r\n });\r\n\r\n return doSomething ? { validationErrors: updatedErrors } : prev;\r\n });\r\n },\r\n getValidationErrors: (path: string) => {\r\n const errors: string[] = [];\r\n const valErrors = get().validationErrors;\r\n const pathArray = path.split(\".\");\r\n\r\n // Helper to check if an index matches either a wildcard or is in an array of indices\r\n const isIndexMatch = (pathSegment: string, keySegment: string) => {\r\n if (pathSegment === \"[*]\") return true;\r\n if (Array.isArray(pathSegment)) {\r\n return pathSegment.includes(parseInt(keySegment));\r\n }\r\n return pathSegment === keySegment;\r\n };\r\n\r\n Array.from(valErrors.keys()).forEach((key) => {\r\n const keyArray = key.split(\".\");\r\n if (keyArray.length >= pathArray.length) {\r\n let match = true;\r\n for (let i = 0; i < pathArray.length; i++) {\r\n const pathSegment = pathArray[i];\r\n const keySegment = keyArray[i]!;\r\n\r\n // If current path segment is a number or [*], we need special handling\r\n if (pathSegment === \"[*]\" || Array.isArray(pathSegment)) {\r\n // Key segment should be a number if we're using [*] or array indices\r\n const keyIndex = parseInt(keySegment);\r\n if (isNaN(keyIndex)) {\r\n match = false;\r\n break;\r\n }\r\n\r\n if (!isIndexMatch(pathSegment, keySegment)) {\r\n match = false;\r\n break;\r\n }\r\n } else if (pathSegment !== keySegment) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (match) {\r\n const errorMessages = valErrors.get(key);\r\n if (errorMessages) {\r\n errors.push(...errorMessages);\r\n }\r\n }\r\n }\r\n });\r\n\r\n return errors;\r\n },\r\n getInitialOptions: (key) => {\r\n return get().initialStateOptions[key];\r\n },\r\n getNestedState: (key: string, path: string[]) => {\r\n const rootState = get().cogsStateStore[key];\r\n\r\n const getValueWithAsterisk = (obj: any, pathArray: string[]): any => {\r\n if (pathArray.length === 0) return obj;\r\n\r\n const currentPath = pathArray[0];\r\n const remainingPath = pathArray.slice(1);\r\n\r\n if (currentPath === \"[*]\") {\r\n if (!Array.isArray(obj)) {\r\n console.warn(\"Asterisk notation used on non-array value\");\r\n return undefined;\r\n }\r\n\r\n if (remainingPath.length === 0) return obj;\r\n\r\n // Get result for each array item\r\n const results = obj.map((item) =>\r\n getValueWithAsterisk(item, remainingPath)\r\n );\r\n\r\n // If the next path segment exists and returns arrays, flatten them\r\n if (Array.isArray(results[0])) {\r\n return results.flat();\r\n }\r\n\r\n return results;\r\n }\r\n\r\n const value = obj[currentPath as keyof typeof obj];\r\n if (value === undefined) return undefined;\r\n\r\n return getValueWithAsterisk(value, remainingPath);\r\n };\r\n\r\n // This will still get the value but we need to make it reactive only to specific paths\r\n return getValueWithAsterisk(rootState, path);\r\n },\r\n setInitialStateOptions: (key, value) => {\r\n set((prev) => ({\r\n initialStateOptions: {\r\n ...prev.initialStateOptions,\r\n [key]: value,\r\n },\r\n }));\r\n },\r\n updateInitialStateGlobal: (key, newState) => {\r\n set((prev) => ({\r\n initialStateGlobal: {\r\n ...prev.initialStateGlobal,\r\n [key]: newState,\r\n },\r\n }));\r\n },\r\n getUpdaterState: (key) => {\r\n return get().updaterState[key];\r\n },\r\n setUpdaterState: (key, newUpdater) => {\r\n const current = get().updaterState;\r\n\r\n if (!key || !newUpdater) return;\r\n\r\n set({ updaterState: { ...(current ?? {}), [key]: newUpdater } });\r\n },\r\n getKeyState: <StateKey extends StateKeys>(key: StateKey) => {\r\n return get().cogsStateStore[key];\r\n },\r\n\r\n setState: <StateKey extends StateKeys>(key: StateKey, value: StateValue) => {\r\n set((prev) => {\r\n return {\r\n cogsStateStore: {\r\n ...prev.cogsStateStore,\r\n [key]:\r\n typeof value === \"function\"\r\n ? value(prev.cogsStateStore[key])\r\n : value,\r\n },\r\n };\r\n });\r\n },\r\n setInitialStates: <StateKey extends StateKeys>(initialState: StateValue) => {\r\n set((prev) => ({\r\n cogsStateStore: {\r\n ...prev.cogsStateStore,\r\n ...initialState,\r\n },\r\n }));\r\n },\r\n setCreatedState: (initialState: StateValue) => {\r\n set((prev) => ({\r\n iniitialCreatedState: {\r\n ...prev.cogsStateStore,\r\n ...initialState,\r\n },\r\n }));\r\n },\r\n\r\n syncInfoStore: new Map<string, SyncInfo>(),\r\n setSyncInfo: (key: string, syncInfo: SyncInfo) =>\r\n set((state) => {\r\n const newMap = new Map(state.syncInfoStore);\r\n newMap.set(key, syncInfo);\r\n return { ...state, syncInfoStore: newMap };\r\n }),\r\n getSyncInfo: (key: string) => get().syncInfoStore.get(key) || null,\r\n}));\r\n"],"names":["formRefStore","create","set","get","id","ref","state","newRefs","stateKey","allRefs","stateKeyPrefix","filteredRefs","getGlobalStore","parentPath","stateMap","index","newMap","path","newOuterMap","listener","key","record","_","rest","signalId","elementInfo","current","instanceId","elements","el","newState","prev","newValue","value","updater","currentUpdates","newUpdates","message","updatedErrors","existingMessages","doSomething","pathArray","keyArray","match","i","errors","valErrors","isIndexMatch","pathSegment","keySegment","keyIndex","errorMessages","rootState","getValueWithAsterisk","obj","currentPath","remainingPath","results","item","newUpdater","initialState","syncInfo"],"mappings":";AAqDO,MAAMA,IAAeC,EAA0B,CAACC,GAAKC,OAAS;AAAA,EACnE,8BAAc,IAAI;AAAA,EAElB,iBAAiB,CAACC,GAAIC,MACpBH,EAAI,CAACI,MAAU;AACb,UAAMC,IAAU,IAAI,IAAID,EAAM,QAAQ;AAC9B,WAAAC,EAAA,IAAIH,GAAIC,CAAG,GACZ,EAAE,UAAUE,EAAQ;AAAA,EAAA,CAC5B;AAAA,EAEH,YAAY,CAACH,MAAOD,EAAM,EAAA,SAAS,IAAIC,CAAE;AAAA,EAEzC,eAAe,CAACA,MACdF,EAAI,CAACI,MAAU;AACb,UAAMC,IAAU,IAAI,IAAID,EAAM,QAAQ;AACtC,WAAAC,EAAQ,OAAOH,CAAE,GACV,EAAE,UAAUG,EAAQ;AAAA,EAAA,CAC5B;AAAA;AAAA,EAGH,uBAAuB,CAACC,MAAa;AAC7B,UAAAC,IAAUN,IAAM,UAChBO,IAAiBF,IAAW,KAC5BG,wBAAmB,IAAI;AAErB,WAAAF,EAAA,QAAQ,CAACJ,GAAKD,MAAO;AAC3B,OAAIA,EAAG,WAAWM,CAAc,KAAKN,MAAOI,MAC7BG,EAAA,IAAIP,GAAIC,CAAG;AAAA,IAC1B,CACD,GAEMM;AAAA,EAAA;AAEX,EAAE,GA0HWC,IAAiBX,EAAwB,CAACC,GAAKC,OAAS;AAAA,EACnE,wCAAwB,IAAiC;AAAA;AAAA,EAGzD,kBAAkB,CAACK,GAAkBK,MAAuB;AAC1D,UAAMC,IAAWX,EAAA,EAAM,mBAAmB,IAAIK,CAAQ;AAClD,QAACM;AACE,aAAAA,EAAS,IAAID,CAAU;AAAA,EAChC;AAAA,EAEA,kBAAkB,CAChBL,GACAK,GACAE,MACG;AACH,IAAAb,EAAI,CAACI,MAAU;AACb,YAAMU,IAAS,IAAI,IAAIV,EAAM,kBAAkB;AAC3C,UAAAQ,IAAWE,EAAO,IAAIR,CAAQ;AAElC,aAAKM,MACHA,wBAAe,IAAoB,GAC5BE,EAAA,IAAIR,GAAUM,CAAQ,IAG3BC,MAAU,SACZD,EAAS,OAAOD,CAAU,IAEjBC,EAAA,IAAID,GAAYE,CAAK,GAGzB;AAAA,QACL,GAAGT;AAAA,QACH,oBAAoBU;AAAA,MACtB;AAAA,IAAA,CACD;AAAA,EACH;AAAA,EACA,oBAAoB,CAAC;AAAA,IACnB,UAAAR;AAAA,IACA,MAAAS;AAAA,EAAA,MAII;AACJ,IAAAf,EAAI,CAACI,MAAU;AACb,YAAMU,IAAS,IAAI,IAAIV,EAAM,kBAAkB,GACzCQ,IAAWE,EAAO,IAAIR,CAAQ;AAChC,UAAA,CAACM,EAAiB,QAAAR;AAChB,YAAAO,IAAaI,EAAK,KAAK,GAAG;AAChC,aAAAH,EAAS,OAAOD,CAAU,GACnB;AAAA,QACL,GAAGP;AAAA,QACH,oBAAoBU;AAAA,MACtB;AAAA,IAAA,CACD;AAAA,EACH;AAAA,EACA,8BAA8B,CAACR,MAAqB;AAClD,IAAAN,EAAI,CAACI,MAAU;AACb,YAAMY,IAAc,IAAI,IAAIZ,EAAM,kBAAkB;AAEpD,aADgBY,EAAY,OAAOV,CAAQ,KAEjC,QAAA;AAAA,QACN,oDAAoDA,CAAQ;AAAA,MAC9D,GACO,EAAE,oBAAoBU,EAAY,KAElC,CAAC;AAAA,IACV,CACD;AAAA,EACH;AAAA,EACA,qCAAqB,IAAI;AAAA,EACzB,WAAW,CAACC,MAEHhB,EAAA,EAAM,UAAUgB,CAAQ;AAAA,EAGjC,cAAc,CAAC;AAAA,EACf,iBAAiB,CAACC,GAAKC,MACrBnB,EAAI,CAACI,OAAW;AAAA,IACd,GAAGA;AAAA,IACH,cAAc;AAAA,MACZ,GAAGA,EAAM;AAAA,MACT,CAACc,CAAG,GAAGC;AAAA,IAAA;AAAA,EACT,EACA;AAAA,EACJ,oBAAoB,CAACD,MACnBlB,EAAI,CAACI,MAAU;AACP,UAAA,EAAE,CAACc,CAAG,GAAGE,GAAG,GAAGC,EAAA,IAASjB,EAAM;AAC7B,WAAA;AAAA,MACL,GAAGA;AAAA,MACH,cAAciB;AAAA,IAChB;AAAA,EAAA,CACD;AAAA,EAEH,0BAA0B,CAAC;AAAA,EAC3B,uCAAuB,IAAI;AAAA,EAC3B,kBAAkB,CAChBC,GACAC,MACG;AACG,UAAAC,IAAUvB,IAAM;AACtB,IAAKuB,EAAQ,IAAIF,CAAQ,KACvBE,EAAQ,IAAIF,GAAc,oBAAA,IAAA,CAAK,GAEjCE,EAAQ,IAAIF,CAAQ,EAAG,IAAIC,CAAW,GAEtCvB,EAAI,EAAE,mBAAmB,IAAI,IAAIwB,CAAO,GAAG;AAAA,EAC7C;AAAA,EACA,qBAAqB,CAACF,GAAkBG,MAAuB;AACvD,UAAAD,IAAUvB,IAAM,mBAChByB,IAAWF,EAAQ,IAAIF,CAAQ;AACrC,IAAII,KACOA,EAAA,QAAQ,CAACC,MAAO;AACnB,MAAAA,EAAG,eAAeF,KACpBC,EAAS,OAAOC,CAAE;AAAA,IACpB,CACD,GAEH3B,EAAI,EAAE,mBAAmB,IAAI,IAAIwB,CAAO,GAAG;AAAA,EAC7C;AAAA,EACA,qBAAqB,CAAC;AAAA,EACtB,cAAc,CAAC;AAAA,EACf,eAAe,CAAC;AAAA,EAChB,gBAAgB,CAAC;AAAA,EACjB,UAAU,CAAC;AAAA,EACX,iBAAiB,CAAC;AAAA,EAElB,oBAAoB,CAAC;AAAA,EACrB,sBAAsB,CAAC;AAAA,EACvB,2BAA2B,CAACN,GAAKU,MAAa;AAC5C,IAAA5B,EAAI,CAAC6B,OAAU;AAAA,MACb,sBAAsB;AAAA,QACpB,GAAGA,EAAK;AAAA,QACR,CAACX,CAAG,GAAGU;AAAA,MAAA;AAAA,IACT,EACA;AAAA,EACJ;AAAA,EAEA,sCAAsB,IAAI;AAAA,EAE1B,aAAa,CAAC;AAAA,EAEd,mBAAmB,CAAC;AAAA,EAEpB,eAAe,CAAC;AAAA,EAChB,iBAAiB,CAAC;AAAA,EAClB,kBAAkB,CAACV,GAAKY,MAAa;AACnC,IAAA9B,EAAI,CAACI,OAAW;AAAA,MACd,eAAe;AAAA,QACb,GAAGA,EAAM;AAAA,QACT,CAACc,CAAG,GAAG,CAAC,GAAId,EAAM,cAAcc,CAAG,KAAK,CAAA,GAAKY,CAAQ;AAAA,MAAA;AAAA,IACvD,EACA;AAAA,EACJ;AAAA,EACA,oBAAoB,CAACZ,GAAKa,MAAU;AAClC,IAAA/B,EAAI,CAACI,OAAW;AAAA,MACd,iBAAiB;AAAA,QACf,GAAGA,EAAM;AAAA,QACT,CAACc,CAAG,GAAGa;AAAA,MAAA;AAAA,IACT,EACA;AAAA,EACJ;AAAA,EACA,oBAAoB,CAACb,MACZjB,EAAA,EAAM,gBAAgBiB,CAAG;AAAA,EAGlC,oBAAoB,CAACA,MACZjB,EAAA,EAAM,SAASiB,CAAG;AAAA,EAE3B,gBAAgB,CACdA,GACAa,MACG;AACH,IAAA/B,EAAI,CAAC6B,OAAU;AAAA,MACb,aAAa;AAAA,QACX,GAAGA,EAAK;AAAA,QACR,CAACX,CAAG,GAAGa;AAAA,MAAA;AAAA,IACT,EACA;AAAA,EACJ;AAAA,EAEA,aAAa,CACXb,GACAc,MACG;AACH,IAAAhC,EAAI,CAAC6B,MAAS;AACZ,YAAMI,IAAiBJ,EAAK,SAASX,CAAG,KAAK,CAAC,GACxCgB,IAAaF,EAAQC,CAAc;AAClC,aAAA;AAAA,QACL,UAAU;AAAA,UACR,GAAGJ,EAAK;AAAA,UACR,CAACX,CAAG,GAAGgB;AAAA,QAAA;AAAA,MAEX;AAAA,IAAA,CACD;AAAA,EACH;AAAA,EACA,oBAAoB,CAAChB,GAAaa,MAAmB;AACnD,IAAA/B,EAAI,CAAC6B,OAAU;AAAA,MACb,iBAAiB;AAAA,QACf,GAAGA,EAAK;AAAA,QACR,CAACX,CAAG,GAAGa;AAAA,MAAA;AAAA,IACT,EACA;AAAA,EACJ;AAAA,EACA,sBAAsB,CAACb,GAAaa,MAAgC;AAClE,IAAA/B,EAAI,CAAC6B,OAAU;AAAA,MACb,mBAAmB;AAAA,QACjB,GAAGA,EAAK;AAAA,QACR,CAACX,CAAG,GAAGa;AAAA,MAAA;AAAA,IACT,EACA;AAAA,EACJ;AAAA,EACA,oBAAoB,CAAChB,GAAMoB,MAAY;AACrC,YAAQ,IAAI,uBAAuB,GACnCnC,EAAI,CAAC6B,MAAS;AACZ,YAAMO,IAAgB,IAAI,IAAIP,EAAK,gBAAgB,GAC7CQ,IAAmBD,EAAc,IAAIrB,CAAI,KAAK,CAAC;AACrD,qBAAQ,IAAI,sBAAsBA,GAAMoB,GAASE,CAAgB,GAEjED,EAAc,IAAIrB,GAAM,CAAC,GAAGsB,GAAkBF,CAAO,CAAC,GAC/C,EAAE,kBAAkBC,EAAc;AAAA,IAAA,CAC1C;AAAA,EACH;AAAA,EACA,uBAAuB,CAACrB,MAAS;AAC/B,IAAAf,EAAI,CAAC6B,MAAS;AACZ,YAAMO,IAAgB,IAAI,IAAIP,EAAK,gBAAgB;AAEnD,UAAIS,IAAc;AACZ,YAAAC,IAAYxB,EAAK,MAAM,GAAG;AAChC,mBAAM,KAAKqB,EAAc,KAAM,CAAA,EAAE,QAAQ,CAAClB,MAAQ;AAC1C,cAAAsB,IAAWtB,EAAI,MAAM,GAAG;AAC1B,YAAAsB,EAAS,UAAUD,EAAU,QAAQ;AACvC,cAAIE,IAAQ;AACZ,mBAASC,IAAI,GAAGA,IAAIH,EAAU,QAAQG;AACpC,gBAAIF,EAASE,CAAC,MAAMH,EAAUG,CAAC,GAAG;AACxB,cAAAD,IAAA;AACR;AAAA,YAAA;AAIJ,UAAIA,MACYH,IAAA,IACdF,EAAc,OAAOlB,CAAG;AAAA,QAC1B;AAAA,MACF,CACD,GAEMoB,IAAc,EAAE,kBAAkBF,EAAkB,IAAAP;AAAA,IAAA,CAC5D;AAAA,EACH;AAAA,EACA,qBAAqB,CAACd,MAAiB;AACrC,UAAM4B,IAAmB,CAAC,GACpBC,IAAY3C,IAAM,kBAClBsC,IAAYxB,EAAK,MAAM,GAAG,GAG1B8B,IAAe,CAACC,GAAqBC,MACrCD,MAAgB,QAAc,KAC9B,MAAM,QAAQA,CAAW,IACpBA,EAAY,SAAS,SAASC,CAAU,CAAC,IAE3CD,MAAgBC;AAGzB,iBAAM,KAAKH,EAAU,KAAM,CAAA,EAAE,QAAQ,CAAC1B,MAAQ;AACtC,YAAAsB,IAAWtB,EAAI,MAAM,GAAG;AAC1B,UAAAsB,EAAS,UAAUD,EAAU,QAAQ;AACvC,YAAIE,IAAQ;AACZ,iBAASC,IAAI,GAAGA,IAAIH,EAAU,QAAQG,KAAK;AACnC,gBAAAI,IAAcP,EAAUG,CAAC,GACzBK,IAAaP,EAASE,CAAC;AAG7B,cAAII,MAAgB,SAAS,MAAM,QAAQA,CAAW,GAAG;AAEjD,kBAAAE,IAAW,SAASD,CAAU;AAChC,gBAAA,MAAMC,CAAQ,GAAG;AACX,cAAAP,IAAA;AACR;AAAA,YAAA;AAGF,gBAAI,CAACI,EAAaC,GAAaC,CAAU,GAAG;AAClC,cAAAN,IAAA;AACR;AAAA,YAAA;AAAA,UACF,WACSK,MAAgBC,GAAY;AAC7B,YAAAN,IAAA;AACR;AAAA,UAAA;AAAA,QACF;AAGF,YAAIA,GAAO;AACH,gBAAAQ,IAAgBL,EAAU,IAAI1B,CAAG;AACvC,UAAI+B,KACKN,EAAA,KAAK,GAAGM,CAAa;AAAA,QAC9B;AAAA,MACF;AAAA,IACF,CACD,GAEMN;AAAA,EACT;AAAA,EACA,mBAAmB,CAACzB,MACXjB,EAAA,EAAM,oBAAoBiB,CAAG;AAAA,EAEtC,gBAAgB,CAACA,GAAaH,MAAmB;AAC/C,UAAMmC,IAAYjD,IAAM,eAAeiB,CAAG,GAEpCiC,IAAuB,CAACC,GAAUb,MAA6B;AAC/D,UAAAA,EAAU,WAAW,EAAU,QAAAa;AAE7B,YAAAC,IAAcd,EAAU,CAAC,GACzBe,IAAgBf,EAAU,MAAM,CAAC;AAEvC,UAAIc,MAAgB,OAAO;AACzB,YAAI,CAAC,MAAM,QAAQD,CAAG,GAAG;AACvB,kBAAQ,KAAK,2CAA2C;AACjD;AAAA,QAAA;AAGL,YAAAE,EAAc,WAAW,EAAU,QAAAF;AAGvC,cAAMG,IAAUH,EAAI;AAAA,UAAI,CAACI,MACvBL,EAAqBK,GAAMF,CAAa;AAAA,QAC1C;AAGA,eAAI,MAAM,QAAQC,EAAQ,CAAC,CAAC,IACnBA,EAAQ,KAAK,IAGfA;AAAA,MAAA;AAGH,YAAAxB,IAAQqB,EAAIC,CAA+B;AAC7C,UAAAtB,MAAU;AAEP,eAAAoB,EAAqBpB,GAAOuB,CAAa;AAAA,IAClD;AAGO,WAAAH,EAAqBD,GAAWnC,CAAI;AAAA,EAC7C;AAAA,EACA,wBAAwB,CAACG,GAAKa,MAAU;AACtC,IAAA/B,EAAI,CAAC6B,OAAU;AAAA,MACb,qBAAqB;AAAA,QACnB,GAAGA,EAAK;AAAA,QACR,CAACX,CAAG,GAAGa;AAAA,MAAA;AAAA,IACT,EACA;AAAA,EACJ;AAAA,EACA,0BAA0B,CAACb,GAAKU,MAAa;AAC3C,IAAA5B,EAAI,CAAC6B,OAAU;AAAA,MACb,oBAAoB;AAAA,QAClB,GAAGA,EAAK;AAAA,QACR,CAACX,CAAG,GAAGU;AAAA,MAAA;AAAA,IACT,EACA;AAAA,EACJ;AAAA,EACA,iBAAiB,CAACV,MACTjB,EAAA,EAAM,aAAaiB,CAAG;AAAA,EAE/B,iBAAiB,CAACA,GAAKuC,MAAe;AAC9B,UAAAjC,IAAUvB,IAAM;AAElB,IAAA,CAACiB,KAAO,CAACuC,KAEbzD,EAAI,EAAE,cAAc,EAAE,GAAIwB,KAAW,CAAA,GAAK,CAACN,CAAG,GAAGuC,EAAW,GAAG;AAAA,EACjE;AAAA,EACA,aAAa,CAA6BvC,MACjCjB,EAAA,EAAM,eAAeiB,CAAG;AAAA,EAGjC,UAAU,CAA6BA,GAAea,MAAsB;AAC1E,IAAA/B,EAAI,CAAC6B,OACI;AAAA,MACL,gBAAgB;AAAA,QACd,GAAGA,EAAK;AAAA,QACR,CAACX,CAAG,GACF,OAAOa,KAAU,aACbA,EAAMF,EAAK,eAAeX,CAAG,CAAC,IAC9Ba;AAAA,MAAA;AAAA,IAEV,EACD;AAAA,EACH;AAAA,EACA,kBAAkB,CAA6B2B,MAA6B;AAC1E,IAAA1D,EAAI,CAAC6B,OAAU;AAAA,MACb,gBAAgB;AAAA,QACd,GAAGA,EAAK;AAAA,QACR,GAAG6B;AAAA,MAAA;AAAA,IACL,EACA;AAAA,EACJ;AAAA,EACA,iBAAiB,CAACA,MAA6B;AAC7C,IAAA1D,EAAI,CAAC6B,OAAU;AAAA,MACb,sBAAsB;AAAA,QACpB,GAAGA,EAAK;AAAA,QACR,GAAG6B;AAAA,MAAA;AAAA,IACL,EACA;AAAA,EACJ;AAAA,EAEA,mCAAmB,IAAsB;AAAA,EACzC,aAAa,CAACxC,GAAayC,MACzB3D,EAAI,CAACI,MAAU;AACb,UAAMU,IAAS,IAAI,IAAIV,EAAM,aAAa;AACnC,WAAAU,EAAA,IAAII,GAAKyC,CAAQ,GACjB,EAAE,GAAGvD,GAAO,eAAeU,EAAO;AAAA,EAAA,CAC1C;AAAA,EACH,aAAa,CAACI,MAAgBjB,EAAA,EAAM,cAAc,IAAIiB,CAAG,KAAK;AAChE,EAAE;"}
|
|
1
|
+
{"version":3,"file":"store.js","sources":["../src/store.ts"],"sourcesContent":["import { create } from \"zustand\";\r\nimport type {\r\n OptionsType,\r\n ReactivityType,\r\n StateKeys,\r\n SyncActionsType,\r\n SyncInfo,\r\n UpdateTypeDetail,\r\n} from \"./CogsState.js\";\r\n\r\ntype StateUpdater<StateValue> =\r\n | StateValue\r\n | ((prevValue: StateValue) => StateValue);\r\n\r\nexport type FreshValuesObject = {\r\n pathsToValues?: string[];\r\n prevValue?: any;\r\n newValue?: any;\r\n timeStamp: number;\r\n};\r\n\r\ntype SyncLogType = {\r\n timeStamp: number;\r\n};\r\ntype StateValue = any;\r\n\r\nexport type TrieNode = {\r\n subscribers: Set<string>;\r\n children: Map<string, TrieNode>;\r\n};\r\nexport type ComponentsType = {\r\n components: Map<\r\n string,\r\n {\r\n forceUpdate: () => void;\r\n paths: Set<string>;\r\n deps?: any[];\r\n depsFunction?: (state: any) => any[] | true;\r\n reactiveType: ReactivityType[] | ReactivityType;\r\n }\r\n >;\r\n};\r\nexport type FormRefStoreState = {\r\n formRefs: Map<string, React.RefObject<any>>;\r\n registerFormRef: (id: string, ref: React.RefObject<any>) => void;\r\n getFormRef: (id: string) => React.RefObject<any> | undefined;\r\n removeFormRef: (id: string) => void;\r\n // New method to get all refs for a stateKey\r\n getFormRefsByStateKey: (\r\n stateKey: string\r\n ) => Map<string, React.RefObject<any>>;\r\n};\r\n\r\nexport const formRefStore = create<FormRefStoreState>((set, get) => ({\r\n formRefs: new Map(),\r\n\r\n registerFormRef: (id, ref) =>\r\n set((state) => {\r\n const newRefs = new Map(state.formRefs);\r\n newRefs.set(id, ref);\r\n return { formRefs: newRefs };\r\n }),\r\n\r\n getFormRef: (id) => get().formRefs.get(id),\r\n\r\n removeFormRef: (id) =>\r\n set((state) => {\r\n const newRefs = new Map(state.formRefs);\r\n newRefs.delete(id);\r\n return { formRefs: newRefs };\r\n }),\r\n\r\n // Get all refs that start with the stateKey prefix\r\n getFormRefsByStateKey: (stateKey) => {\r\n const allRefs = get().formRefs;\r\n const stateKeyPrefix = stateKey + \".\";\r\n const filteredRefs = new Map();\r\n\r\n allRefs.forEach((ref, id) => {\r\n if (id.startsWith(stateKeyPrefix) || id === stateKey) {\r\n filteredRefs.set(id, ref);\r\n }\r\n });\r\n\r\n return filteredRefs;\r\n },\r\n}));\r\n\r\ntype ShadowMetadata = {\r\n virtualisedState?: { listItemHeight: number };\r\n syncInfo?: { status: string };\r\n // Add other metadata fields you need\r\n};\r\n\r\ntype ShadowState<T> =\r\n T extends Array<infer U>\r\n ? Array<ShadowState<U>> & ShadowMetadata\r\n : T extends object\r\n ? { [K in keyof T]: ShadowState<T[K]> } & ShadowMetadata\r\n : ShadowMetadata;\r\nexport type CogsGlobalState = {\r\n shadowStateStore: { [key: string]: any };\r\n initializeShadowState: (key: string, initialState: any) => void;\r\n updateShadowAtPath: (key: string, path: string[], newValue: any) => void;\r\n insertShadowArrayElement: (key: string, arrayPath: string[]) => void;\r\n removeShadowArrayElement: (\r\n key: string,\r\n arrayPath: string[],\r\n index: number\r\n ) => void;\r\n getShadowMetadata: (key: string, path: string[]) => any;\r\n setShadowMetadata: (key: string, path: string[], metadata: any) => void;\r\n\r\n selectedIndicesMap: Map<string, Map<string, number>>; // stateKey -> (parentPath -> selectedIndex)\r\n\r\n // Add these new methods\r\n getSelectedIndex: (\r\n stateKey: string,\r\n parentPath: string\r\n ) => number | undefined;\r\n setSelectedIndex: (\r\n stateKey: string,\r\n parentPath: string,\r\n index: number | undefined\r\n ) => void;\r\n clearSelectedIndex: ({\r\n stateKey,\r\n path,\r\n }: {\r\n stateKey: string;\r\n path: string[];\r\n }) => void;\r\n clearSelectedIndexesForState: (stateKey: string) => void;\r\n updaterState: { [key: string]: any };\r\n initialStateOptions: { [key: string]: OptionsType };\r\n cogsStateStore: { [key: string]: StateValue };\r\n isLoadingGlobal: { [key: string]: boolean };\r\n\r\n initialStateGlobal: { [key: string]: StateValue };\r\n iniitialCreatedState: { [key: string]: StateValue };\r\n validationErrors: Map<string, string[]>;\r\n\r\n serverState: { [key: string]: StateValue };\r\n serverSyncActions: { [key: string]: SyncActionsType<any> };\r\n\r\n serverSyncLog: { [key: string]: SyncLogType[] };\r\n serverSideOrNot: { [key: string]: boolean };\r\n setServerSyncLog: (key: string, newValue: SyncLogType) => void;\r\n\r\n setServerSideOrNot: (key: string, value: boolean) => void;\r\n getServerSideOrNot: (key: string) => boolean | undefined;\r\n setServerState: <StateKey extends StateKeys>(\r\n key: StateKey,\r\n value: StateValue\r\n ) => void;\r\n\r\n getThisLocalUpdate: (key: string) => UpdateTypeDetail[] | undefined;\r\n setServerSyncActions: (key: string, value: SyncActionsType<any>) => void;\r\n addValidationError: (path: string, message: string) => void;\r\n getValidationErrors: (path: string) => string[];\r\n updateInitialStateGlobal: (key: string, newState: StateValue) => void;\r\n updateInitialCreatedState: (key: string, newState: StateValue) => void;\r\n getInitialOptions: (key: string) => OptionsType | undefined;\r\n getUpdaterState: (key: string) => StateUpdater<StateValue>;\r\n setUpdaterState: (key: string, newUpdater: any) => void;\r\n getKeyState: <StateKey extends StateKeys>(key: StateKey) => StateValue;\r\n getNestedState: <StateKey extends StateKeys>(\r\n key: StateKey,\r\n path: string[]\r\n ) => StateValue;\r\n setState: <StateKey extends StateKeys>(\r\n key: StateKey,\r\n value: StateUpdater<StateValue>\r\n ) => void;\r\n setInitialStates: (initialState: StateValue) => void;\r\n setCreatedState: (initialState: StateValue) => void;\r\n stateLog: { [key: string]: UpdateTypeDetail[] };\r\n setStateLog: (\r\n key: string,\r\n updater: (prevUpdates: UpdateTypeDetail[]) => UpdateTypeDetail[]\r\n ) => void;\r\n setIsLoadingGlobal: (key: string, value: boolean) => void;\r\n\r\n setInitialStateOptions: (key: string, value: OptionsType) => void;\r\n removeValidationError: (path: string) => void;\r\n signalDomElements: Map<\r\n string,\r\n Set<{\r\n instanceId: string;\r\n parentId: string;\r\n position: number;\r\n effect?: string;\r\n map?: string;\r\n }>\r\n >;\r\n addSignalElement: (\r\n signalId: string,\r\n elementInfo: {\r\n instanceId: string;\r\n parentId: string;\r\n position: number;\r\n effect?: string;\r\n map?: string;\r\n }\r\n ) => void;\r\n removeSignalElement: (signalId: string, instanceId: string) => void;\r\n reRenderTriggerPrevValue: Record<string, any>;\r\n\r\n reactiveDeps: Record<\r\n string,\r\n {\r\n deps: any[];\r\n updaters: Set<() => void>;\r\n depsFunction: ((state: any) => any[] | true) | null;\r\n }\r\n >;\r\n setReactiveDeps: (\r\n key: string,\r\n record: {\r\n deps: any[];\r\n updaters: Set<() => void>;\r\n depsFunction: ((state: any) => any[] | true) | null;\r\n }\r\n ) => void;\r\n deleteReactiveDeps: (key: string) => void;\r\n subscribe: (listener: () => void) => () => void;\r\n\r\n stateComponents: Map<string, ComponentsType>;\r\n syncInfoStore: Map<string, SyncInfo>;\r\n setSyncInfo: (key: string, syncInfo: SyncInfo) => void;\r\n getSyncInfo: (key: string) => SyncInfo | null;\r\n};\r\n\r\nexport const getGlobalStore = create<CogsGlobalState>((set, get) => ({\r\n shadowStateStore: {},\r\n getShadowMetadata: (key: string, path: string[]) => {\r\n const shadow = get().shadowStateStore[key];\r\n if (!shadow) return null;\r\n\r\n let current = shadow;\r\n for (const segment of path) {\r\n current = current?.[segment];\r\n if (!current) return null;\r\n }\r\n\r\n return current;\r\n },\r\n\r\n setShadowMetadata: (key: string, path: string[], metadata: any) => {\r\n set((state) => {\r\n const newShadow = { ...state.shadowStateStore };\r\n if (!newShadow[key]) return state;\r\n\r\n newShadow[key] = JSON.parse(JSON.stringify(newShadow[key]));\r\n\r\n let current = newShadow[key];\r\n for (const segment of path) {\r\n if (!current[segment]) current[segment] = {};\r\n current = current[segment];\r\n }\r\n\r\n Object.assign(current, metadata);\r\n\r\n return { shadowStateStore: newShadow };\r\n });\r\n },\r\n initializeShadowState: (key: string, initialState: any) => {\r\n const createShadowStructure = (obj: any): any => {\r\n if (Array.isArray(obj)) {\r\n return new Array(obj.length)\r\n .fill(null)\r\n .map((_, i) => createShadowStructure(obj[i]));\r\n }\r\n if (typeof obj === \"object\" && obj !== null) {\r\n const shadow: any = {};\r\n for (const k in obj) {\r\n shadow[k] = createShadowStructure(obj[k]);\r\n }\r\n return shadow;\r\n }\r\n return {}; // Leaf node - empty object for metadata\r\n };\r\n\r\n set((state) => ({\r\n shadowStateStore: {\r\n ...state.shadowStateStore,\r\n [key]: createShadowStructure(initialState),\r\n },\r\n }));\r\n },\r\n\r\n updateShadowAtPath: (key: string, path: string[], newValue: any) => {\r\n set((state) => {\r\n const newShadow = { ...state.shadowStateStore };\r\n if (!newShadow[key]) return state;\r\n\r\n let current = newShadow[key];\r\n const pathCopy = [...path];\r\n const lastSegment = pathCopy.pop();\r\n\r\n // Navigate to parent\r\n for (const segment of pathCopy) {\r\n if (!current[segment]) current[segment] = {};\r\n current = current[segment];\r\n }\r\n\r\n // Update shadow structure to match new value structure\r\n if (lastSegment !== undefined) {\r\n if (Array.isArray(newValue)) {\r\n current[lastSegment] = new Array(newValue.length);\r\n } else if (typeof newValue === \"object\" && newValue !== null) {\r\n current[lastSegment] = {};\r\n } else {\r\n current[lastSegment] = current[lastSegment] || {};\r\n }\r\n }\r\n\r\n return { shadowStateStore: newShadow };\r\n });\r\n },\r\n\r\n insertShadowArrayElement: (key: string, arrayPath: string[]) => {\r\n set((state) => {\r\n const newShadow = { ...state.shadowStateStore };\r\n let current = newShadow[key];\r\n\r\n for (const segment of arrayPath) {\r\n current = current?.[segment];\r\n }\r\n\r\n if (Array.isArray(current)) {\r\n current.push({});\r\n }\r\n\r\n return { shadowStateStore: newShadow };\r\n });\r\n },\r\n\r\n removeShadowArrayElement: (\r\n key: string,\r\n arrayPath: string[],\r\n index: number\r\n ) => {\r\n set((state) => {\r\n const newShadow = { ...state.shadowStateStore };\r\n let current = newShadow[key];\r\n\r\n for (const segment of arrayPath) {\r\n current = current?.[segment];\r\n }\r\n\r\n if (Array.isArray(current)) {\r\n current.splice(index, 1);\r\n }\r\n\r\n return { shadowStateStore: newShadow };\r\n });\r\n },\r\n selectedIndicesMap: new Map<string, Map<string, number>>(),\r\n\r\n // Add the new methods\r\n getSelectedIndex: (stateKey: string, parentPath: string) => {\r\n const stateMap = get().selectedIndicesMap.get(stateKey);\r\n if (!stateMap) return undefined;\r\n return stateMap.get(parentPath);\r\n },\r\n\r\n setSelectedIndex: (\r\n stateKey: string,\r\n parentPath: string,\r\n index: number | undefined\r\n ) => {\r\n set((state) => {\r\n const newMap = new Map(state.selectedIndicesMap);\r\n let stateMap = newMap.get(stateKey);\r\n\r\n if (!stateMap) {\r\n stateMap = new Map<string, number>();\r\n newMap.set(stateKey, stateMap);\r\n }\r\n\r\n if (index === undefined) {\r\n stateMap.delete(parentPath);\r\n } else {\r\n stateMap.set(parentPath, index);\r\n }\r\n\r\n return {\r\n ...state,\r\n selectedIndicesMap: newMap,\r\n };\r\n });\r\n },\r\n clearSelectedIndex: ({\r\n stateKey,\r\n path,\r\n }: {\r\n stateKey: string;\r\n path: string[];\r\n }) => {\r\n set((state) => {\r\n const newMap = new Map(state.selectedIndicesMap);\r\n const stateMap = newMap.get(stateKey);\r\n if (!stateMap) return state;\r\n const parentPath = path.join(\".\");\r\n stateMap.delete(parentPath);\r\n return {\r\n ...state,\r\n selectedIndicesMap: newMap,\r\n };\r\n });\r\n },\r\n clearSelectedIndexesForState: (stateKey: string) => {\r\n set((state) => {\r\n const newOuterMap = new Map(state.selectedIndicesMap);\r\n const changed = newOuterMap.delete(stateKey);\r\n if (changed) {\r\n console.log(\r\n `Cleared selected indices map entry for stateKey: ${stateKey}`\r\n );\r\n return { selectedIndicesMap: newOuterMap };\r\n } else {\r\n return {};\r\n }\r\n });\r\n },\r\n stateComponents: new Map(),\r\n subscribe: (listener: () => void) => {\r\n // zustand's subscribe returns an unsubscribe function\r\n return get().subscribe(listener);\r\n },\r\n\r\n reactiveDeps: {},\r\n setReactiveDeps: (key, record) =>\r\n set((state) => ({\r\n ...state,\r\n reactiveDeps: {\r\n ...state.reactiveDeps,\r\n [key]: record,\r\n },\r\n })),\r\n deleteReactiveDeps: (key) =>\r\n set((state) => {\r\n const { [key]: _, ...rest } = state.reactiveDeps;\r\n return {\r\n ...state,\r\n reactiveDeps: rest,\r\n };\r\n }),\r\n\r\n reRenderTriggerPrevValue: {},\r\n signalDomElements: new Map(),\r\n addSignalElement: (\r\n signalId: string,\r\n elementInfo: { instanceId: string; parentId: string; position: number }\r\n ) => {\r\n const current = get().signalDomElements;\r\n if (!current.has(signalId)) {\r\n current.set(signalId, new Set());\r\n }\r\n current.get(signalId)!.add(elementInfo);\r\n\r\n set({ signalDomElements: new Map(current) }); // Create new reference to trigger update\r\n },\r\n removeSignalElement: (signalId: string, instanceId: string) => {\r\n const current = get().signalDomElements;\r\n const elements = current.get(signalId);\r\n if (elements) {\r\n elements.forEach((el) => {\r\n if (el.instanceId === instanceId) {\r\n elements.delete(el);\r\n }\r\n });\r\n }\r\n set({ signalDomElements: new Map(current) });\r\n },\r\n initialStateOptions: {},\r\n updaterState: {},\r\n stateTimeline: {},\r\n cogsStateStore: {},\r\n stateLog: {},\r\n isLoadingGlobal: {},\r\n\r\n initialStateGlobal: {},\r\n iniitialCreatedState: {},\r\n updateInitialCreatedState: (key, newState) => {\r\n set((prev) => ({\r\n iniitialCreatedState: {\r\n ...prev.iniitialCreatedState,\r\n [key]: newState,\r\n },\r\n }));\r\n },\r\n\r\n validationErrors: new Map(),\r\n\r\n serverState: {},\r\n\r\n serverSyncActions: {},\r\n\r\n serverSyncLog: {},\r\n serverSideOrNot: {},\r\n setServerSyncLog: (key, newValue) => {\r\n set((state) => ({\r\n serverSyncLog: {\r\n ...state.serverSyncLog,\r\n [key]: [...(state.serverSyncLog[key] ?? []), newValue],\r\n },\r\n }));\r\n },\r\n setServerSideOrNot: (key, value) => {\r\n set((state) => ({\r\n serverSideOrNot: {\r\n ...state.serverSideOrNot,\r\n [key]: value,\r\n },\r\n }));\r\n },\r\n getServerSideOrNot: (key) => {\r\n return get().serverSideOrNot[key];\r\n },\r\n\r\n getThisLocalUpdate: (key: string) => {\r\n return get().stateLog[key];\r\n },\r\n setServerState: <StateKey extends StateKeys>(\r\n key: StateKey,\r\n value: StateValue\r\n ) => {\r\n set((prev) => ({\r\n serverState: {\r\n ...prev.serverState,\r\n [key]: value,\r\n },\r\n }));\r\n },\r\n\r\n setStateLog: (\r\n key: string,\r\n updater: (prevUpdates: UpdateTypeDetail[]) => UpdateTypeDetail[]\r\n ) => {\r\n set((prev) => {\r\n const currentUpdates = prev.stateLog[key] ?? [];\r\n const newUpdates = updater(currentUpdates);\r\n return {\r\n stateLog: {\r\n ...prev.stateLog,\r\n [key]: newUpdates,\r\n },\r\n };\r\n });\r\n },\r\n setIsLoadingGlobal: (key: string, value: boolean) => {\r\n set((prev) => ({\r\n isLoadingGlobal: {\r\n ...prev.isLoadingGlobal,\r\n [key]: value,\r\n },\r\n }));\r\n },\r\n setServerSyncActions: (key: string, value: SyncActionsType<any>) => {\r\n set((prev) => ({\r\n serverSyncActions: {\r\n ...prev.serverSyncActions,\r\n [key]: value,\r\n },\r\n }));\r\n },\r\n addValidationError: (path, message) => {\r\n console.log(\"addValidationError---\");\r\n set((prev) => {\r\n const updatedErrors = new Map(prev.validationErrors);\r\n const existingMessages = updatedErrors.get(path) || [];\r\n console.log(\"addValidationError\", path, message, existingMessages);\r\n // Append the new message instead of replacing\r\n updatedErrors.set(path, [...existingMessages, message]);\r\n return { validationErrors: updatedErrors };\r\n });\r\n },\r\n removeValidationError: (path) => {\r\n set((prev) => {\r\n const updatedErrors = new Map(prev.validationErrors);\r\n\r\n let doSomething = false;\r\n const pathArray = path.split(\".\");\r\n Array.from(updatedErrors.keys()).forEach((key) => {\r\n const keyArray = key.split(\".\");\r\n if (keyArray.length >= pathArray.length) {\r\n let match = true;\r\n for (let i = 0; i < pathArray.length; i++) {\r\n if (keyArray[i] !== pathArray[i]) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (match) {\r\n doSomething = true;\r\n updatedErrors.delete(key);\r\n }\r\n }\r\n });\r\n\r\n return doSomething ? { validationErrors: updatedErrors } : prev;\r\n });\r\n },\r\n getValidationErrors: (path: string) => {\r\n const errors: string[] = [];\r\n const valErrors = get().validationErrors;\r\n const pathArray = path.split(\".\");\r\n\r\n // Helper to check if an index matches either a wildcard or is in an array of indices\r\n const isIndexMatch = (pathSegment: string, keySegment: string) => {\r\n if (pathSegment === \"[*]\") return true;\r\n if (Array.isArray(pathSegment)) {\r\n return pathSegment.includes(parseInt(keySegment));\r\n }\r\n return pathSegment === keySegment;\r\n };\r\n\r\n Array.from(valErrors.keys()).forEach((key) => {\r\n const keyArray = key.split(\".\");\r\n if (keyArray.length >= pathArray.length) {\r\n let match = true;\r\n for (let i = 0; i < pathArray.length; i++) {\r\n const pathSegment = pathArray[i];\r\n const keySegment = keyArray[i]!;\r\n\r\n // If current path segment is a number or [*], we need special handling\r\n if (pathSegment === \"[*]\" || Array.isArray(pathSegment)) {\r\n // Key segment should be a number if we're using [*] or array indices\r\n const keyIndex = parseInt(keySegment);\r\n if (isNaN(keyIndex)) {\r\n match = false;\r\n break;\r\n }\r\n\r\n if (!isIndexMatch(pathSegment, keySegment)) {\r\n match = false;\r\n break;\r\n }\r\n } else if (pathSegment !== keySegment) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (match) {\r\n const errorMessages = valErrors.get(key);\r\n if (errorMessages) {\r\n errors.push(...errorMessages);\r\n }\r\n }\r\n }\r\n });\r\n\r\n return errors;\r\n },\r\n getInitialOptions: (key) => {\r\n return get().initialStateOptions[key];\r\n },\r\n getNestedState: (key: string, path: string[]) => {\r\n const rootState = get().cogsStateStore[key];\r\n\r\n const getValueWithAsterisk = (obj: any, pathArray: string[]): any => {\r\n if (pathArray.length === 0) return obj;\r\n\r\n const currentPath = pathArray[0];\r\n const remainingPath = pathArray.slice(1);\r\n\r\n if (currentPath === \"[*]\") {\r\n if (!Array.isArray(obj)) {\r\n console.warn(\"Asterisk notation used on non-array value\");\r\n return undefined;\r\n }\r\n\r\n if (remainingPath.length === 0) return obj;\r\n\r\n // Get result for each array item\r\n const results = obj.map((item) =>\r\n getValueWithAsterisk(item, remainingPath)\r\n );\r\n\r\n // If the next path segment exists and returns arrays, flatten them\r\n if (Array.isArray(results[0])) {\r\n return results.flat();\r\n }\r\n\r\n return results;\r\n }\r\n\r\n const value = obj[currentPath as keyof typeof obj];\r\n if (value === undefined) return undefined;\r\n\r\n return getValueWithAsterisk(value, remainingPath);\r\n };\r\n\r\n // This will still get the value but we need to make it reactive only to specific paths\r\n return getValueWithAsterisk(rootState, path);\r\n },\r\n setInitialStateOptions: (key, value) => {\r\n set((prev) => ({\r\n initialStateOptions: {\r\n ...prev.initialStateOptions,\r\n [key]: value,\r\n },\r\n }));\r\n },\r\n updateInitialStateGlobal: (key, newState) => {\r\n set((prev) => ({\r\n initialStateGlobal: {\r\n ...prev.initialStateGlobal,\r\n [key]: newState,\r\n },\r\n }));\r\n },\r\n getUpdaterState: (key) => {\r\n return get().updaterState[key];\r\n },\r\n setUpdaterState: (key, newUpdater) => {\r\n const current = get().updaterState;\r\n\r\n if (!key || !newUpdater) return;\r\n\r\n set({ updaterState: { ...(current ?? {}), [key]: newUpdater } });\r\n },\r\n getKeyState: <StateKey extends StateKeys>(key: StateKey) => {\r\n return get().cogsStateStore[key];\r\n },\r\n\r\n setState: <StateKey extends StateKeys>(key: StateKey, value: StateValue) => {\r\n set((prev) => {\r\n return {\r\n cogsStateStore: {\r\n ...prev.cogsStateStore,\r\n [key]:\r\n typeof value === \"function\"\r\n ? value(prev.cogsStateStore[key])\r\n : value,\r\n },\r\n };\r\n });\r\n },\r\n setInitialStates: <StateKey extends StateKeys>(initialState: StateValue) => {\r\n set((prev) => ({\r\n cogsStateStore: {\r\n ...prev.cogsStateStore,\r\n ...initialState,\r\n },\r\n }));\r\n },\r\n setCreatedState: (initialState: StateValue) => {\r\n set((prev) => ({\r\n iniitialCreatedState: {\r\n ...prev.cogsStateStore,\r\n ...initialState,\r\n },\r\n }));\r\n },\r\n\r\n syncInfoStore: new Map<string, SyncInfo>(),\r\n setSyncInfo: (key: string, syncInfo: SyncInfo) =>\r\n set((state) => {\r\n const newMap = new Map(state.syncInfoStore);\r\n newMap.set(key, syncInfo);\r\n return { ...state, syncInfoStore: newMap };\r\n }),\r\n getSyncInfo: (key: string) => get().syncInfoStore.get(key) || null,\r\n}));\r\n"],"names":["formRefStore","create","set","get","id","ref","state","newRefs","stateKey","allRefs","stateKeyPrefix","filteredRefs","getGlobalStore","key","path","shadow","current","segment","metadata","newShadow","initialState","createShadowStructure","obj","_","i","k","newValue","pathCopy","lastSegment","arrayPath","index","parentPath","stateMap","newMap","newOuterMap","listener","record","rest","signalId","elementInfo","instanceId","elements","el","newState","prev","value","updater","currentUpdates","newUpdates","message","updatedErrors","existingMessages","doSomething","pathArray","keyArray","match","errors","valErrors","isIndexMatch","pathSegment","keySegment","keyIndex","errorMessages","rootState","getValueWithAsterisk","currentPath","remainingPath","results","item","newUpdater","syncInfo"],"mappings":"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"}
|