cogsbox-state 0.5.297 → 0.5.298
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 +307 -309
- package/dist/CogsState.jsx.map +1 -1
- package/dist/store.d.ts +26 -24
- package/dist/store.js +109 -95
- package/dist/store.js.map +1 -1
- package/package.json +1 -1
- package/src/CogsState.tsx +36 -32
- package/src/store.ts +96 -57
package/dist/store.d.ts
CHANGED
|
@@ -36,6 +36,8 @@ export type CogsGlobalState = {
|
|
|
36
36
|
shadowStateStore: {
|
|
37
37
|
[key: string]: any;
|
|
38
38
|
};
|
|
39
|
+
shadowStateSubscribers: Map<string, Set<() => void>>;
|
|
40
|
+
subscribeToShadowState: (key: string, callback: () => void) => () => void;
|
|
39
41
|
initializeShadowState: (key: string, initialState: any) => void;
|
|
40
42
|
updateShadowAtPath: (key: string, path: string[], newValue: any) => void;
|
|
41
43
|
insertShadowArrayElement: (key: string, arrayPath: string[], newItem: any) => void;
|
|
@@ -68,44 +70,47 @@ export type CogsGlobalState = {
|
|
|
68
70
|
iniitialCreatedState: {
|
|
69
71
|
[key: string]: StateValue;
|
|
70
72
|
};
|
|
71
|
-
validationErrors: Map<string, string[]>;
|
|
72
73
|
serverState: {
|
|
73
74
|
[key: string]: StateValue;
|
|
74
75
|
};
|
|
76
|
+
getUpdaterState: (key: string) => StateUpdater<StateValue>;
|
|
77
|
+
setUpdaterState: (key: string, newUpdater: any) => void;
|
|
78
|
+
getKeyState: <StateKey extends StateKeys>(key: StateKey) => StateValue;
|
|
79
|
+
getNestedState: <StateKey extends StateKeys>(key: StateKey, path: string[]) => StateValue;
|
|
80
|
+
setState: <StateKey extends StateKeys>(key: StateKey, value: StateUpdater<StateValue>) => void;
|
|
81
|
+
setInitialStates: (initialState: StateValue) => void;
|
|
82
|
+
setCreatedState: (initialState: StateValue) => void;
|
|
83
|
+
updateInitialStateGlobal: (key: string, newState: StateValue) => void;
|
|
84
|
+
updateInitialCreatedState: (key: string, newState: StateValue) => void;
|
|
85
|
+
setIsLoadingGlobal: (key: string, value: boolean) => void;
|
|
86
|
+
setServerState: <StateKey extends StateKeys>(key: StateKey, value: StateValue) => void;
|
|
87
|
+
getInitialOptions: (key: string) => OptionsType | undefined;
|
|
88
|
+
setInitialStateOptions: (key: string, value: OptionsType) => void;
|
|
89
|
+
validationErrors: Map<string, string[]>;
|
|
90
|
+
addValidationError: (path: string, message: string) => void;
|
|
91
|
+
getValidationErrors: (path: string) => string[];
|
|
92
|
+
removeValidationError: (path: string) => void;
|
|
75
93
|
serverSyncActions: {
|
|
76
94
|
[key: string]: SyncActionsType<any>;
|
|
77
95
|
};
|
|
78
96
|
serverSyncLog: {
|
|
79
97
|
[key: string]: SyncLogType[];
|
|
80
98
|
};
|
|
99
|
+
stateLog: {
|
|
100
|
+
[key: string]: UpdateTypeDetail[];
|
|
101
|
+
};
|
|
102
|
+
syncInfoStore: Map<string, SyncInfo>;
|
|
81
103
|
serverSideOrNot: {
|
|
82
104
|
[key: string]: boolean;
|
|
83
105
|
};
|
|
84
106
|
setServerSyncLog: (key: string, newValue: SyncLogType) => void;
|
|
85
107
|
setServerSideOrNot: (key: string, value: boolean) => void;
|
|
86
108
|
getServerSideOrNot: (key: string) => boolean | undefined;
|
|
87
|
-
setServerState: <StateKey extends StateKeys>(key: StateKey, value: StateValue) => void;
|
|
88
109
|
getThisLocalUpdate: (key: string) => UpdateTypeDetail[] | undefined;
|
|
89
110
|
setServerSyncActions: (key: string, value: SyncActionsType<any>) => void;
|
|
90
|
-
addValidationError: (path: string, message: string) => void;
|
|
91
|
-
getValidationErrors: (path: string) => string[];
|
|
92
|
-
updateInitialStateGlobal: (key: string, newState: StateValue) => void;
|
|
93
|
-
updateInitialCreatedState: (key: string, newState: StateValue) => void;
|
|
94
|
-
getInitialOptions: (key: string) => OptionsType | undefined;
|
|
95
|
-
getUpdaterState: (key: string) => StateUpdater<StateValue>;
|
|
96
|
-
setUpdaterState: (key: string, newUpdater: any) => void;
|
|
97
|
-
getKeyState: <StateKey extends StateKeys>(key: StateKey) => StateValue;
|
|
98
|
-
getNestedState: <StateKey extends StateKeys>(key: StateKey, path: string[]) => StateValue;
|
|
99
|
-
setState: <StateKey extends StateKeys>(key: StateKey, value: StateUpdater<StateValue>) => void;
|
|
100
|
-
setInitialStates: (initialState: StateValue) => void;
|
|
101
|
-
setCreatedState: (initialState: StateValue) => void;
|
|
102
|
-
stateLog: {
|
|
103
|
-
[key: string]: UpdateTypeDetail[];
|
|
104
|
-
};
|
|
105
111
|
setStateLog: (key: string, updater: (prevUpdates: UpdateTypeDetail[]) => UpdateTypeDetail[]) => void;
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
removeValidationError: (path: string) => void;
|
|
112
|
+
setSyncInfo: (key: string, syncInfo: SyncInfo) => void;
|
|
113
|
+
getSyncInfo: (key: string) => SyncInfo | null;
|
|
109
114
|
signalDomElements: Map<string, Set<{
|
|
110
115
|
instanceId: string;
|
|
111
116
|
parentId: string;
|
|
@@ -121,6 +126,7 @@ export type CogsGlobalState = {
|
|
|
121
126
|
map?: string;
|
|
122
127
|
}) => void;
|
|
123
128
|
removeSignalElement: (signalId: string, instanceId: string) => void;
|
|
129
|
+
stateComponents: Map<string, ComponentsType>;
|
|
124
130
|
reRenderTriggerPrevValue: Record<string, any>;
|
|
125
131
|
reactiveDeps: Record<string, {
|
|
126
132
|
deps: any[];
|
|
@@ -134,10 +140,6 @@ export type CogsGlobalState = {
|
|
|
134
140
|
}) => void;
|
|
135
141
|
deleteReactiveDeps: (key: string) => void;
|
|
136
142
|
subscribe: (listener: () => void) => () => void;
|
|
137
|
-
stateComponents: Map<string, ComponentsType>;
|
|
138
|
-
syncInfoStore: Map<string, SyncInfo>;
|
|
139
|
-
setSyncInfo: (key: string, syncInfo: SyncInfo) => void;
|
|
140
|
-
getSyncInfo: (key: string) => SyncInfo | null;
|
|
141
143
|
};
|
|
142
144
|
export declare const getGlobalStore: import('zustand').UseBoundStore<import('zustand').StoreApi<CogsGlobalState>>;
|
|
143
145
|
export {};
|
package/dist/store.js
CHANGED
|
@@ -13,8 +13,8 @@ const w = u((s, S) => ({
|
|
|
13
13
|
// Get all refs that start with the stateKey prefix
|
|
14
14
|
getFormRefsByStateKey: (e) => {
|
|
15
15
|
const r = S().formRefs, t = e + ".", n = /* @__PURE__ */ new Map();
|
|
16
|
-
return r.forEach((
|
|
17
|
-
(
|
|
16
|
+
return r.forEach((a, o) => {
|
|
17
|
+
(o.startsWith(t) || o === e) && n.set(o, a);
|
|
18
18
|
}), n;
|
|
19
19
|
}
|
|
20
20
|
})), h = u((s, S) => ({
|
|
@@ -23,32 +23,19 @@ const w = u((s, S) => ({
|
|
|
23
23
|
const t = S().shadowStateStore[e];
|
|
24
24
|
if (!t) return null;
|
|
25
25
|
let n = t;
|
|
26
|
-
for (const
|
|
27
|
-
if (n = n?.[
|
|
26
|
+
for (const a of r)
|
|
27
|
+
if (n = n?.[a], !n) return null;
|
|
28
28
|
return n;
|
|
29
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.keys(t).forEach((i) => {
|
|
39
|
-
a[i] || (a[i] = {}), Object.assign(a[i], t[i]);
|
|
40
|
-
}), { shadowStateStore: o };
|
|
41
|
-
});
|
|
42
|
-
},
|
|
43
30
|
initializeShadowState: (e, r) => {
|
|
44
31
|
const t = (n) => {
|
|
45
32
|
if (Array.isArray(n))
|
|
46
|
-
return new Array(n.length).fill(null).map((
|
|
33
|
+
return new Array(n.length).fill(null).map((a, o) => t(n[o]));
|
|
47
34
|
if (typeof n == "object" && n !== null) {
|
|
48
|
-
const
|
|
49
|
-
for (const
|
|
50
|
-
o
|
|
51
|
-
return
|
|
35
|
+
const a = {};
|
|
36
|
+
for (const o in n)
|
|
37
|
+
a[o] = t(n[o]);
|
|
38
|
+
return a;
|
|
52
39
|
}
|
|
53
40
|
return {};
|
|
54
41
|
};
|
|
@@ -61,49 +48,76 @@ const w = u((s, S) => ({
|
|
|
61
48
|
},
|
|
62
49
|
updateShadowAtPath: (e, r, t) => {
|
|
63
50
|
s((n) => {
|
|
64
|
-
const
|
|
65
|
-
if (!
|
|
66
|
-
let
|
|
67
|
-
const i = [...r],
|
|
68
|
-
for (const
|
|
69
|
-
|
|
70
|
-
return
|
|
51
|
+
const a = { ...n.shadowStateStore };
|
|
52
|
+
if (!a[e]) return n;
|
|
53
|
+
let o = a[e];
|
|
54
|
+
const i = [...r], l = i.pop();
|
|
55
|
+
for (const c of i)
|
|
56
|
+
o[c] || (o[c] = {}), o = o[c];
|
|
57
|
+
return l !== void 0 && (Array.isArray(t) ? o[l] = new Array(t.length) : typeof t == "object" && t !== null ? o[l] = {} : o[l] = o[l] || {}), { shadowStateStore: a };
|
|
71
58
|
});
|
|
72
59
|
},
|
|
73
60
|
insertShadowArrayElement: (e, r, t) => {
|
|
74
61
|
s((n) => {
|
|
75
|
-
const
|
|
76
|
-
if (!
|
|
77
|
-
|
|
78
|
-
let
|
|
62
|
+
const a = { ...n.shadowStateStore };
|
|
63
|
+
if (!a[e]) return n;
|
|
64
|
+
a[e] = JSON.parse(JSON.stringify(a[e]));
|
|
65
|
+
let o = a[e];
|
|
79
66
|
for (const i of r)
|
|
80
|
-
if (
|
|
81
|
-
if (Array.isArray(
|
|
82
|
-
const i = (
|
|
83
|
-
if (Array.isArray(
|
|
84
|
-
return
|
|
85
|
-
if (typeof
|
|
86
|
-
const
|
|
87
|
-
for (const d in
|
|
88
|
-
|
|
89
|
-
return
|
|
67
|
+
if (o = o[i], !o) return n;
|
|
68
|
+
if (Array.isArray(o)) {
|
|
69
|
+
const i = (l) => {
|
|
70
|
+
if (Array.isArray(l))
|
|
71
|
+
return l.map((c) => i(c));
|
|
72
|
+
if (typeof l == "object" && l !== null) {
|
|
73
|
+
const c = {};
|
|
74
|
+
for (const d in l)
|
|
75
|
+
c[d] = i(l[d]);
|
|
76
|
+
return c;
|
|
90
77
|
}
|
|
91
78
|
return {};
|
|
92
79
|
};
|
|
93
|
-
|
|
80
|
+
o.push(i(t));
|
|
94
81
|
}
|
|
95
|
-
return { shadowStateStore:
|
|
82
|
+
return { shadowStateStore: a };
|
|
96
83
|
});
|
|
97
84
|
},
|
|
98
85
|
removeShadowArrayElement: (e, r, t) => {
|
|
99
86
|
s((n) => {
|
|
100
|
-
const
|
|
101
|
-
let
|
|
87
|
+
const a = { ...n.shadowStateStore };
|
|
88
|
+
let o = a[e];
|
|
102
89
|
for (const i of r)
|
|
103
|
-
|
|
104
|
-
return Array.isArray(
|
|
90
|
+
o = o?.[i];
|
|
91
|
+
return Array.isArray(o) && o.splice(t, 1), { shadowStateStore: a };
|
|
105
92
|
});
|
|
106
93
|
},
|
|
94
|
+
shadowStateSubscribers: /* @__PURE__ */ new Map(),
|
|
95
|
+
// key -> Set of callbacks
|
|
96
|
+
subscribeToShadowState: (e, r) => (s((t) => {
|
|
97
|
+
const n = new Map(t.shadowStateSubscribers), a = n.get(e) || /* @__PURE__ */ new Set();
|
|
98
|
+
return a.add(r), n.set(e, a), { shadowStateSubscribers: n };
|
|
99
|
+
}), () => {
|
|
100
|
+
s((t) => {
|
|
101
|
+
const n = new Map(t.shadowStateSubscribers), a = n.get(e);
|
|
102
|
+
return a && a.delete(r), { shadowStateSubscribers: n };
|
|
103
|
+
});
|
|
104
|
+
}),
|
|
105
|
+
setShadowMetadata: (e, r, t) => {
|
|
106
|
+
let n = !1;
|
|
107
|
+
if (s((a) => {
|
|
108
|
+
const o = { ...a.shadowStateStore };
|
|
109
|
+
if (!o[e]) return a;
|
|
110
|
+
o[e] = JSON.parse(JSON.stringify(o[e]));
|
|
111
|
+
let i = o[e];
|
|
112
|
+
for (const d of r)
|
|
113
|
+
i[d] || (i[d] = {}), i = i[d];
|
|
114
|
+
const l = i.virtualizer?.itemHeight, c = t.virtualizer?.itemHeight;
|
|
115
|
+
return c && l !== c && (n = !0, i.virtualizer || (i.virtualizer = {}), i.virtualizer.itemHeight = c), { shadowStateStore: o };
|
|
116
|
+
}), n) {
|
|
117
|
+
const a = S().shadowStateSubscribers.get(e);
|
|
118
|
+
a && a.forEach((o) => o());
|
|
119
|
+
}
|
|
120
|
+
},
|
|
107
121
|
selectedIndicesMap: /* @__PURE__ */ new Map(),
|
|
108
122
|
// Add the new methods
|
|
109
123
|
getSelectedIndex: (e, r) => {
|
|
@@ -113,11 +127,11 @@ const w = u((s, S) => ({
|
|
|
113
127
|
},
|
|
114
128
|
setSelectedIndex: (e, r, t) => {
|
|
115
129
|
s((n) => {
|
|
116
|
-
const
|
|
117
|
-
let
|
|
118
|
-
return
|
|
130
|
+
const a = new Map(n.selectedIndicesMap);
|
|
131
|
+
let o = a.get(e);
|
|
132
|
+
return o || (o = /* @__PURE__ */ new Map(), a.set(e, o)), t === void 0 ? o.delete(r) : o.set(r, t), {
|
|
119
133
|
...n,
|
|
120
|
-
selectedIndicesMap:
|
|
134
|
+
selectedIndicesMap: a
|
|
121
135
|
};
|
|
122
136
|
});
|
|
123
137
|
},
|
|
@@ -126,10 +140,10 @@ const w = u((s, S) => ({
|
|
|
126
140
|
path: r
|
|
127
141
|
}) => {
|
|
128
142
|
s((t) => {
|
|
129
|
-
const n = new Map(t.selectedIndicesMap),
|
|
130
|
-
if (!
|
|
131
|
-
const
|
|
132
|
-
return
|
|
143
|
+
const n = new Map(t.selectedIndicesMap), a = n.get(e);
|
|
144
|
+
if (!a) return t;
|
|
145
|
+
const o = r.join(".");
|
|
146
|
+
return a.delete(o), {
|
|
133
147
|
...t,
|
|
134
148
|
selectedIndicesMap: n
|
|
135
149
|
};
|
|
@@ -168,8 +182,8 @@ const w = u((s, S) => ({
|
|
|
168
182
|
},
|
|
169
183
|
removeSignalElement: (e, r) => {
|
|
170
184
|
const t = S().signalDomElements, n = t.get(e);
|
|
171
|
-
n && n.forEach((
|
|
172
|
-
|
|
185
|
+
n && n.forEach((a) => {
|
|
186
|
+
a.instanceId === r && n.delete(a);
|
|
173
187
|
}), s({ signalDomElements: new Map(t) });
|
|
174
188
|
},
|
|
175
189
|
initialStateOptions: {},
|
|
@@ -221,11 +235,11 @@ const w = u((s, S) => ({
|
|
|
221
235
|
},
|
|
222
236
|
setStateLog: (e, r) => {
|
|
223
237
|
s((t) => {
|
|
224
|
-
const n = t.stateLog[e] ?? [],
|
|
238
|
+
const n = t.stateLog[e] ?? [], a = r(n);
|
|
225
239
|
return {
|
|
226
240
|
stateLog: {
|
|
227
241
|
...t.stateLog,
|
|
228
|
-
[e]:
|
|
242
|
+
[e]: a
|
|
229
243
|
}
|
|
230
244
|
};
|
|
231
245
|
});
|
|
@@ -248,78 +262,78 @@ const w = u((s, S) => ({
|
|
|
248
262
|
},
|
|
249
263
|
addValidationError: (e, r) => {
|
|
250
264
|
console.log("addValidationError---"), s((t) => {
|
|
251
|
-
const n = new Map(t.validationErrors),
|
|
252
|
-
return console.log("addValidationError", e, r,
|
|
265
|
+
const n = new Map(t.validationErrors), a = n.get(e) || [];
|
|
266
|
+
return console.log("addValidationError", e, r, a), n.set(e, [...a, r]), { validationErrors: n };
|
|
253
267
|
});
|
|
254
268
|
},
|
|
255
269
|
removeValidationError: (e) => {
|
|
256
270
|
s((r) => {
|
|
257
271
|
const t = new Map(r.validationErrors);
|
|
258
272
|
let n = !1;
|
|
259
|
-
const
|
|
260
|
-
return Array.from(t.keys()).forEach((
|
|
261
|
-
const i =
|
|
262
|
-
if (i.length >=
|
|
263
|
-
let
|
|
264
|
-
for (let
|
|
265
|
-
if (i[
|
|
266
|
-
|
|
273
|
+
const a = e.split(".");
|
|
274
|
+
return Array.from(t.keys()).forEach((o) => {
|
|
275
|
+
const i = o.split(".");
|
|
276
|
+
if (i.length >= a.length) {
|
|
277
|
+
let l = !0;
|
|
278
|
+
for (let c = 0; c < a.length; c++)
|
|
279
|
+
if (i[c] !== a[c]) {
|
|
280
|
+
l = !1;
|
|
267
281
|
break;
|
|
268
282
|
}
|
|
269
|
-
|
|
283
|
+
l && (n = !0, t.delete(o));
|
|
270
284
|
}
|
|
271
285
|
}), n ? { validationErrors: t } : r;
|
|
272
286
|
});
|
|
273
287
|
},
|
|
274
288
|
getValidationErrors: (e) => {
|
|
275
|
-
const r = [], t = S().validationErrors, n = e.split("."),
|
|
276
|
-
return Array.from(t.keys()).forEach((
|
|
277
|
-
const i =
|
|
289
|
+
const r = [], t = S().validationErrors, n = e.split("."), a = (o, i) => o === "[*]" ? !0 : Array.isArray(o) ? o.includes(parseInt(i)) : o === i;
|
|
290
|
+
return Array.from(t.keys()).forEach((o) => {
|
|
291
|
+
const i = o.split(".");
|
|
278
292
|
if (i.length >= n.length) {
|
|
279
|
-
let
|
|
280
|
-
for (let
|
|
281
|
-
const d = n[
|
|
293
|
+
let l = !0;
|
|
294
|
+
for (let c = 0; c < n.length; c++) {
|
|
295
|
+
const d = n[c], f = i[c];
|
|
282
296
|
if (d === "[*]" || Array.isArray(d)) {
|
|
283
297
|
const p = parseInt(f);
|
|
284
298
|
if (isNaN(p)) {
|
|
285
|
-
|
|
299
|
+
l = !1;
|
|
286
300
|
break;
|
|
287
301
|
}
|
|
288
|
-
if (!
|
|
289
|
-
|
|
302
|
+
if (!a(d, f)) {
|
|
303
|
+
l = !1;
|
|
290
304
|
break;
|
|
291
305
|
}
|
|
292
306
|
} else if (d !== f) {
|
|
293
|
-
|
|
307
|
+
l = !1;
|
|
294
308
|
break;
|
|
295
309
|
}
|
|
296
310
|
}
|
|
297
|
-
if (
|
|
298
|
-
const
|
|
299
|
-
|
|
311
|
+
if (l) {
|
|
312
|
+
const c = t.get(o);
|
|
313
|
+
c && r.push(...c);
|
|
300
314
|
}
|
|
301
315
|
}
|
|
302
316
|
}), r;
|
|
303
317
|
},
|
|
304
318
|
getInitialOptions: (e) => S().initialStateOptions[e],
|
|
305
319
|
getNestedState: (e, r) => {
|
|
306
|
-
const t = S().cogsStateStore[e], n = (
|
|
307
|
-
if (
|
|
308
|
-
const i =
|
|
320
|
+
const t = S().cogsStateStore[e], n = (a, o) => {
|
|
321
|
+
if (o.length === 0) return a;
|
|
322
|
+
const i = o[0], l = o.slice(1);
|
|
309
323
|
if (i === "[*]") {
|
|
310
|
-
if (!Array.isArray(
|
|
324
|
+
if (!Array.isArray(a)) {
|
|
311
325
|
console.warn("Asterisk notation used on non-array value");
|
|
312
326
|
return;
|
|
313
327
|
}
|
|
314
|
-
if (
|
|
315
|
-
const d =
|
|
316
|
-
(f) => n(f,
|
|
328
|
+
if (l.length === 0) return a;
|
|
329
|
+
const d = a.map(
|
|
330
|
+
(f) => n(f, l)
|
|
317
331
|
);
|
|
318
332
|
return Array.isArray(d[0]) ? d.flat() : d;
|
|
319
333
|
}
|
|
320
|
-
const
|
|
321
|
-
if (
|
|
322
|
-
return n(
|
|
334
|
+
const c = a[i];
|
|
335
|
+
if (c !== void 0)
|
|
336
|
+
return n(c, l);
|
|
323
337
|
};
|
|
324
338
|
return n(t, r);
|
|
325
339
|
},
|
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\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: (\r\n key: string,\r\n arrayPath: string[],\r\n newItem: any\r\n ) => 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: any = 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 // Merge the metadata into the existing structure\r\n Object.keys(metadata).forEach((category) => {\r\n if (!current[category]) {\r\n current[category] = {};\r\n }\r\n Object.assign(current[category], metadata[category]);\r\n });\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: (\r\n key: string,\r\n arrayPath: string[],\r\n newItem: any\r\n ) => {\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: any = newShadow[key];\r\n\r\n for (const segment of arrayPath) {\r\n current = current[segment];\r\n if (!current) return state;\r\n }\r\n\r\n if (Array.isArray(current)) {\r\n // Create shadow structure based on the actual new item\r\n const createShadowStructure = (obj: any): any => {\r\n if (Array.isArray(obj)) {\r\n return obj.map((item) => createShadowStructure(item));\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 nodes get empty object for metadata\r\n };\r\n\r\n current.push(createShadowStructure(newItem));\r\n }\r\n\r\n return { shadowStateStore: newShadow };\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","category","initialState","createShadowStructure","obj","_","i","k","newValue","pathCopy","lastSegment","arrayPath","newItem","item","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","newUpdater","syncInfo"],"mappings":"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"}
|
|
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\n\r\nexport type CogsGlobalState = {\r\n // --- Shadow State and Subscription System ---\r\n shadowStateStore: { [key: string]: any };\r\n shadowStateSubscribers: Map<string, Set<() => void>>; // Stores subscribers for shadow state updates\r\n subscribeToShadowState: (key: string, callback: () => void) => () => void; // Subscribes a listener, returns an unsubscribe function\r\n initializeShadowState: (key: string, initialState: any) => void;\r\n updateShadowAtPath: (key: string, path: string[], newValue: any) => void;\r\n insertShadowArrayElement: (\r\n key: string,\r\n arrayPath: string[],\r\n newItem: any\r\n ) => 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 // --- Selected Item State ---\r\n selectedIndicesMap: Map<string, Map<string, number>>; // stateKey -> (parentPath -> selectedIndex)\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\r\n // --- Core State and Updaters ---\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 initialStateGlobal: { [key: string]: StateValue };\r\n iniitialCreatedState: { [key: string]: StateValue };\r\n serverState: { [key: string]: StateValue };\r\n\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 updateInitialStateGlobal: (key: string, newState: StateValue) => void;\r\n updateInitialCreatedState: (key: string, newState: StateValue) => void;\r\n setIsLoadingGlobal: (key: string, value: boolean) => void;\r\n setServerState: <StateKey extends StateKeys>(\r\n key: StateKey,\r\n value: StateValue\r\n ) => void;\r\n getInitialOptions: (key: string) => OptionsType | undefined;\r\n setInitialStateOptions: (key: string, value: OptionsType) => void;\r\n\r\n // --- Validation ---\r\n validationErrors: Map<string, string[]>;\r\n addValidationError: (path: string, message: string) => void;\r\n getValidationErrors: (path: string) => string[];\r\n removeValidationError: (path: string) => void;\r\n\r\n // --- Server Sync and Logging ---\r\n serverSyncActions: { [key: string]: SyncActionsType<any> };\r\n serverSyncLog: { [key: string]: SyncLogType[] };\r\n stateLog: { [key: string]: UpdateTypeDetail[] };\r\n syncInfoStore: Map<string, SyncInfo>;\r\n serverSideOrNot: { [key: string]: boolean };\r\n setServerSyncLog: (key: string, newValue: SyncLogType) => void;\r\n setServerSideOrNot: (key: string, value: boolean) => void;\r\n getServerSideOrNot: (key: string) => boolean | undefined;\r\n getThisLocalUpdate: (key: string) => UpdateTypeDetail[] | undefined;\r\n setServerSyncActions: (key: string, value: SyncActionsType<any>) => void;\r\n setStateLog: (\r\n key: string,\r\n updater: (prevUpdates: UpdateTypeDetail[]) => UpdateTypeDetail[]\r\n ) => void;\r\n setSyncInfo: (key: string, syncInfo: SyncInfo) => void;\r\n getSyncInfo: (key: string) => SyncInfo | null;\r\n\r\n // --- Component and DOM Integration ---\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 stateComponents: Map<string, ComponentsType>;\r\n\r\n // --- Deprecated/Legacy (Review for removal) ---\r\n reRenderTriggerPrevValue: Record<string, any>;\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\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 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: (\r\n key: string,\r\n arrayPath: string[],\r\n newItem: any\r\n ) => {\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: any = newShadow[key];\r\n\r\n for (const segment of arrayPath) {\r\n current = current[segment];\r\n if (!current) return state;\r\n }\r\n\r\n if (Array.isArray(current)) {\r\n // Create shadow structure based on the actual new item\r\n const createShadowStructure = (obj: any): any => {\r\n if (Array.isArray(obj)) {\r\n return obj.map((item) => createShadowStructure(item));\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 nodes get empty object for metadata\r\n };\r\n\r\n current.push(createShadowStructure(newItem));\r\n }\r\n\r\n return { shadowStateStore: newShadow };\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 shadowStateSubscribers: new Map<string, Set<() => void>>(), // key -> Set of callbacks\r\n\r\n subscribeToShadowState: (key: string, callback: () => void) => {\r\n set((state) => {\r\n const newSubs = new Map(state.shadowStateSubscribers);\r\n const subsForKey = newSubs.get(key) || new Set();\r\n subsForKey.add(callback);\r\n newSubs.set(key, subsForKey);\r\n return { shadowStateSubscribers: newSubs };\r\n });\r\n // Return an unsubscribe function\r\n return () => {\r\n set((state) => {\r\n const newSubs = new Map(state.shadowStateSubscribers);\r\n const subsForKey = newSubs.get(key);\r\n if (subsForKey) {\r\n subsForKey.delete(callback);\r\n }\r\n return { shadowStateSubscribers: newSubs };\r\n });\r\n };\r\n },\r\n\r\n setShadowMetadata: (key: string, path: string[], metadata: any) => {\r\n let hasChanged = false;\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: any = 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 const oldHeight = current.virtualizer?.itemHeight;\r\n const newHeight = metadata.virtualizer?.itemHeight;\r\n\r\n if (newHeight && oldHeight !== newHeight) {\r\n hasChanged = true;\r\n if (!current.virtualizer) current.virtualizer = {};\r\n current.virtualizer.itemHeight = newHeight;\r\n }\r\n\r\n return { shadowStateStore: newShadow };\r\n });\r\n\r\n // If a height value was actually changed, notify the specific subscribers.\r\n if (hasChanged) {\r\n const subscribers = get().shadowStateSubscribers.get(key);\r\n if (subscribers) {\r\n subscribers.forEach((callback) => callback());\r\n }\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","initialState","createShadowStructure","obj","_","i","k","newValue","newShadow","pathCopy","lastSegment","arrayPath","newItem","item","index","callback","newSubs","subsForKey","metadata","hasChanged","oldHeight","newHeight","subscribers","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","newUpdater","syncInfo"],"mappings":"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"}
|