react-state-custom 1.0.22 → 1.0.23

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/index.es.js CHANGED
@@ -1,24 +1,24 @@
1
- import { useRef as O, useMemo as g, useEffect as f, useState as v, useCallback as A, Fragment as G, createElement as J } from "react";
2
- import { jsx as o, Fragment as y, jsxs as m } from "react/jsx-runtime";
3
- function w(t, e) {
4
- let n = null, a = function(...r) {
1
+ import { useRef as O, useMemo as b, useEffect as f, useState as v, useCallback as $, Fragment as H, createElement as J } from "react";
2
+ import { jsx as o, Fragment as x, jsxs as m } from "react/jsx-runtime";
3
+ function C(t, e) {
4
+ let n = null, r = function(...a) {
5
5
  n && clearTimeout(n), n = setTimeout(() => {
6
- t(...r);
6
+ t(...a);
7
7
  }, e);
8
8
  };
9
- return a.cancel = () => clearTimeout(n), a;
9
+ return r.cancel = () => clearTimeout(n), r;
10
10
  }
11
- function H(t) {
12
- const e = /* @__PURE__ */ new Map(), n = function(...a) {
13
- const r = JSON.stringify(a);
14
- if (e.has(r))
15
- return e.get(r);
16
- const s = t(...a);
17
- return e.set(r, s), s;
11
+ function W(t) {
12
+ const e = /* @__PURE__ */ new Map(), n = function(...r) {
13
+ const a = JSON.stringify(r);
14
+ if (e.has(a))
15
+ return e.get(a);
16
+ const s = t(...r);
17
+ return e.set(a, s), s;
18
18
  };
19
19
  return n.cache = e, n;
20
20
  }
21
- const D = () => Math.random().toString().slice(2), L = (t) => {
21
+ const A = () => Math.random().toString().slice(2), _ = (t) => {
22
22
  const { current: { computedHash: e } } = O({
23
23
  /**
24
24
  * Getter for the computed hash function.
@@ -28,21 +28,26 @@ const D = () => Math.random().toString().slice(2), L = (t) => {
28
28
  * - Updates the hash if any difference is detected.
29
29
  */
30
30
  get computedHash() {
31
- let n = [], a = D();
32
- return (r) => {
31
+ let n = [], r = A();
32
+ return (a) => {
33
33
  let s = !1;
34
- return s = s || !r != !n, s = s || r?.length != n?.length, s = s || r.some((c, l) => c != n[l]), n = r, s && (a = D()), a;
34
+ return s = s || !a != !n, s = s || a?.length != n?.length, s = s || a.some((c, l) => c != n[l]), n = a, s && (r = A()), r;
35
35
  };
36
36
  }
37
37
  });
38
38
  return e(t);
39
- };
40
- class W extends Event {
39
+ }, T = "@--change-event";
40
+ class K extends Event {
41
41
  constructor(e, n) {
42
- super(e), this.event = e, this.value = n;
42
+ super(String(e)), this.event = e, this.value = n;
43
+ }
44
+ }
45
+ class V extends Event {
46
+ constructor(e) {
47
+ super(T, e), this.value = e;
43
48
  }
44
49
  }
45
- class _ extends EventTarget {
50
+ class q extends EventTarget {
46
51
  /**
47
52
  * Create a new Context instance.
48
53
  * @param name - The name of the context (for debugging).
@@ -50,7 +55,6 @@ class _ extends EventTarget {
50
55
  constructor(e) {
51
56
  console.log("[CONTEXT] %s", e), super(), this.name = e;
52
57
  }
53
- // private event = new EventEmitter()
54
58
  /**
55
59
  * The current data held by the context.
56
60
  */
@@ -65,7 +69,11 @@ class _ extends EventTarget {
65
69
  * @param value - The new value.
66
70
  */
67
71
  publish(e, n) {
68
- n != this.data[e] && (this.data[e] = n, this.dispatchEvent(new W(String(e), n)));
72
+ if (n != this.data[e]) {
73
+ this.data[e] = n;
74
+ let r = new K(e, n);
75
+ this.dispatchEvent(r), this.dispatchEvent(new V(r));
76
+ }
69
77
  }
70
78
  /**
71
79
  * Subscribe to changes for a specific key in the context.
@@ -74,119 +82,128 @@ class _ extends EventTarget {
74
82
  * @returns Unsubscribe function.
75
83
  */
76
84
  subscribe(e, n) {
77
- const a = ({ event: r, value: s }) => {
85
+ const r = ({ event: a, value: s }) => {
78
86
  n(s);
79
87
  };
80
- return this.addEventListener(String(e), a), e in this.data && n(this.data[e]), () => (this.removeEventListener(String(e), a), void 0);
88
+ return this.addEventListener(String(e), r), e in this.data && n(this.data[e]), () => this.removeEventListener(String(e), r);
89
+ }
90
+ subscribeAll(e) {
91
+ const n = (r) => {
92
+ if (r instanceof V) {
93
+ const { value: a } = r;
94
+ e(a.event, this.data);
95
+ }
96
+ };
97
+ return this.addEventListener(String(T), n), () => this.removeEventListener(String(T), n);
81
98
  }
82
99
  }
83
- const T = H((t) => new _(t)), E = (t = "noname") => g(() => T(t), [t]), $ = (t, ...e) => {
100
+ const y = W((t) => new q(t)), E = (t = "noname") => b(() => y(t), [t]), k = (t, ...e) => {
84
101
  const n = new Error("[ctx] useRegistryChecker failed " + JSON.stringify({ names: e, ctx: t?.name ?? "undefined" }));
85
102
  f(
86
103
  () => {
87
104
  if (t)
88
- return e.some((a) => t.registry.has(a)) && console.error(n), e.forEach((a) => t.registry.add(a)), () => {
89
- e.forEach((a) => t.registry.delete(a));
105
+ return e.some((r) => t.registry.has(r)) && console.error(n), e.forEach((r) => t.registry.add(r)), () => {
106
+ e.forEach((r) => t.registry.delete(r));
90
107
  };
91
108
  },
92
109
  [t, e.length]
93
110
  );
94
- }, ae = (t, e, n) => {
111
+ }, ce = (t, e, n) => {
95
112
  f(() => {
96
113
  t && t.data[e] != n && t.publish(e, n);
97
- }, [e, n, t]), $(t, e);
98
- }, I = (t, e, n = 0) => {
99
- const [{ value: a }, r] = v(() => ({ value: t?.data?.[e] }));
114
+ }, [e, n, t]), k(t, e);
115
+ }, z = (t, e, n = 0) => {
116
+ const [{ value: r }, a] = v(() => ({ value: t?.data?.[e] }));
100
117
  return f(() => {
101
118
  if (t) {
102
- let s = n == 0 ? (l) => r({ value: l }) : w((l) => r({ value: l }), n), c = t.subscribe(e, s);
103
- return a != t.data[e] && r({ value: t.data[e] }), () => {
119
+ let s = n == 0 ? (l) => a({ value: l }) : C((l) => a({ value: l }), n), c = t.subscribe(e, s);
120
+ return r != t.data[e] && a({ value: t.data[e] }), () => {
104
121
  c();
105
122
  };
106
123
  }
107
124
  }, [e, t]), t?.data[e];
108
- }, re = (t, e, n) => {
109
- const [, a] = v(0), r = g(
125
+ }, le = (t, e, n) => {
126
+ const [, r] = v(0), a = b(
110
127
  () => n(t?.data[e]),
111
128
  [n, t?.data[e]]
112
129
  );
113
130
  return f(() => {
114
131
  if (t) {
115
- let s = r, c = () => {
132
+ let s = a, c = () => {
116
133
  let i = n(t.data[e]);
117
- i != s && (s = i, a((u) => u + 1));
134
+ i != s && (s = i, r((u) => u + 1));
118
135
  }, l = t.subscribe(e, c);
119
136
  return c(), () => l();
120
137
  }
121
- }, [e, t]), r;
122
- }, k = (t, ...e) => {
138
+ }, [e, t]), a;
139
+ }, R = (t, ...e) => {
123
140
  f(() => {
124
141
  if (t)
125
- for (let [n, a] of e)
126
- t.data[n] != a && t.publish(n, a);
127
- }, [t, L(e.flat())]), $(t, ...e.map((n) => n[0]));
128
- }, se = (t, ...e) => {
129
- const [, n] = v(0), a = e.map((r) => t?.data?.[r]);
142
+ for (let [n, r] of e)
143
+ t.data[n] != r && t.publish(n, r);
144
+ }, [t, _(e.flat())]), k(t, ...e.map((n) => n[0]));
145
+ }, ie = (t, ...e) => {
146
+ const [, n] = v(0), r = e.map((a) => t?.data?.[a]);
130
147
  return f(() => {
131
148
  if (t) {
132
- let r = a;
133
- const s = w(() => {
149
+ let a = r;
150
+ const s = C(() => {
134
151
  let i = e.map((u) => t?.data?.[u]);
135
- e.some((u, d) => r[d] != i[d]) && (r = i, n((u) => u + 1));
152
+ e.some((u, d) => a[d] != i[d]) && (a = i, n((u) => u + 1));
136
153
  }, 1);
137
154
  let c = e.map((i) => t.subscribe(i, s)), l = setTimeout(s, 1);
138
155
  return () => {
139
156
  clearTimeout(l), s.cancel(), c.forEach((i) => i());
140
157
  };
141
158
  }
142
- }, [t, ...e]), Object.fromEntries(e.map((r, s) => [r, a[s]]));
143
- }, ce = (t, e = 50, ...n) => {
144
- const [, a] = v(0), r = n.map((s) => t?.data?.[s]);
159
+ }, [t, ...e]), Object.fromEntries(e.map((a, s) => [a, r[s]]));
160
+ }, oe = (t, e = 50, ...n) => {
161
+ const [, r] = v(0), a = n.map((s) => t?.data?.[s]);
145
162
  return f(() => {
146
163
  if (t) {
147
- let s = r;
148
- const c = w(() => {
164
+ let s = a;
165
+ const c = C(() => {
149
166
  let u = n.map((d) => t?.data?.[d]);
150
- n.some((d, p) => s[p] != u[p]) && (s = u, a((d) => d + 1));
167
+ n.some((d, p) => s[p] != u[p]) && (s = u, r((d) => d + 1));
151
168
  }, e);
152
169
  let l = n.map((u) => t.subscribe(u, c)), i = setTimeout(c, 1);
153
170
  return () => {
154
171
  clearTimeout(i), c.cancel(), l.forEach((u) => u());
155
172
  };
156
173
  }
157
- }, [t, ...n]), r;
158
- }, le = (t, e) => {
174
+ }, [t, ...n]), a;
175
+ }, ue = (t, e) => {
159
176
  const n = (s) => [
160
177
  t,
161
178
  ...Object.entries(s ?? {}).sort((c, l) => c[0].localeCompare(l[0])).flat()
162
179
  ].join("-");
163
- let a = /* @__PURE__ */ new Set();
164
- const r = (s) => {
165
- const c = e(s), l = n(s), i = E(l), u = g(() => new Error().stack, []);
166
- return k(
180
+ let r = /* @__PURE__ */ new Set();
181
+ const a = (s) => {
182
+ const c = e(s), l = n(s), i = E(l), u = b(() => new Error().stack, []);
183
+ return R(
167
184
  i,
168
185
  ...Object.entries(c)
169
186
  ), f(() => {
170
- if (a.has(l)) {
187
+ if (r.has(l)) {
171
188
  const d = new Error("RootContext " + l + " are mounted more than once");
172
189
  throw d.stack = u, d;
173
190
  }
174
- return a.add(l), () => {
175
- a.delete(l);
191
+ return r.add(l), () => {
192
+ r.delete(l);
176
193
  };
177
- }), /* @__PURE__ */ o(y, {});
194
+ }), /* @__PURE__ */ o(x, {});
178
195
  };
179
- return r.displayName = `State[${e?.name ?? "??"}]`, {
196
+ return a.displayName = `State[${e?.name ?? "??"}]`, {
180
197
  resolveCtxName: n,
181
- Root: r,
198
+ Root: a,
182
199
  /**
183
200
  * Strict consumer: throws if the corresponding Root for these props isn't mounted.
184
201
  * Use in development/tests to fail fast when wiring is incorrect.
185
202
  */
186
203
  useCtxStateStrict: (s) => {
187
- const c = n(s), l = g(() => new Error().stack, []);
204
+ const c = n(s), l = b(() => new Error().stack, []);
188
205
  return f(() => {
189
- if (!a.has(c)) {
206
+ if (!r.has(c)) {
190
207
  const i = new Error("RootContext [" + c + "] is not mounted");
191
208
  throw i.stack = l, i;
192
209
  }
@@ -197,30 +214,30 @@ const T = H((t) => new _(t)), E = (t = "noname") => g(() => T(t), [t]), $ = (t,
197
214
  * Useful in production to avoid hard crashes while still surfacing misconfiguration.
198
215
  */
199
216
  useCtxState: (s) => {
200
- const c = n(s), l = g(() => new Error().stack, []);
217
+ const c = n(s), l = b(() => new Error().stack, []);
201
218
  return f(() => {
202
- if (!a.has(c)) {
219
+ if (!r.has(c)) {
203
220
  const i = new Error("RootContext [" + c + "] is not mounted");
204
221
  i.stack = l;
205
222
  let u = setTimeout(() => console.error(i), 1e3);
206
223
  return () => clearTimeout(u);
207
224
  }
208
- }, [a.has(c)]), E(c);
225
+ }, [r.has(c)]), E(c);
209
226
  }
210
227
  };
211
- }, K = /* @__PURE__ */ function() {
228
+ }, B = /* @__PURE__ */ function() {
212
229
  const t = /* @__PURE__ */ new WeakMap();
213
230
  return (e) => {
214
231
  let n = t.get(e);
215
232
  return n || t.set(e, n = (e?.name ?? "") + Math.random().toString()), n;
216
233
  };
217
- }(), q = (t) => [
234
+ }(), P = (t) => [
218
235
  ...Object.entries(t ?? {}).sort((e, n) => e[0].localeCompare(n[0])).flat()
219
- ].join("-"), ie = ({ Wrapper: t = G }) => {
220
- const e = E("auto-ctx"), [n, a] = v({}), r = A(
236
+ ].join("-"), de = ({ Wrapper: t = H }) => {
237
+ const e = E("auto-ctx"), [n, r] = v({}), a = $(
221
238
  (s, c) => {
222
- const l = K(s), i = q(c);
223
- return a(({
239
+ const l = B(s), i = P(c);
240
+ return r(({
224
241
  [l]: {
225
242
  Component: u = s,
226
243
  subState: {
@@ -228,9 +245,9 @@ const T = H((t) => new _(t)), E = (t = "noname") => g(() => T(t), [t]), $ = (t,
228
245
  ...p
229
246
  } = {}
230
247
  } = {},
231
- ...b
248
+ ...g
232
249
  }) => ({
233
- ...b,
250
+ ...g,
234
251
  [l]: {
235
252
  Component: u,
236
253
  subState: {
@@ -241,7 +258,7 @@ const T = H((t) => new _(t)), E = (t = "noname") => g(() => T(t), [t]), $ = (t,
241
258
  }
242
259
  }
243
260
  }
244
- })), () => a(({
261
+ })), () => r(({
245
262
  [l]: {
246
263
  Component: u = s,
247
264
  subState: {
@@ -249,9 +266,9 @@ const T = H((t) => new _(t)), E = (t = "noname") => g(() => T(t), [t]), $ = (t,
249
266
  ...p
250
267
  } = {}
251
268
  } = {},
252
- ...b
269
+ ...g
253
270
  }) => ({
254
- ...b,
271
+ ...g,
255
272
  [l]: {
256
273
  Component: u,
257
274
  subState: {
@@ -268,27 +285,27 @@ const T = H((t) => new _(t)), E = (t = "noname") => g(() => T(t), [t]), $ = (t,
268
285
  },
269
286
  []
270
287
  );
271
- return k(
288
+ return R(
272
289
  e,
273
- ["subscribe", r],
290
+ ["subscribe", a],
274
291
  ["state", n]
275
- ), /* @__PURE__ */ o(y, { children: Object.entries(n).flatMap(
292
+ ), /* @__PURE__ */ o(x, { children: Object.entries(n).flatMap(
276
293
  ([s, { Component: c, subState: l }]) => Object.entries(l).map(([i, { counter: u, params: d }]) => ({ key: s + i, Component: c, params: d, counter: u })).filter((i) => i.counter > 0).map(({ key: i, params: u, Component: d }) => /* @__PURE__ */ o(t, { children: /* @__PURE__ */ o(d, { ...u }) }, i))
277
294
  ) });
278
- }, oe = ({ Root: t, useCtxState: e, useCtxStateStrict: n, resolveCtxName: a }, r = 0) => ({
295
+ }, he = ({ Root: t, useCtxState: e, useCtxStateStrict: n, resolveCtxName: r }, a = 0) => ({
279
296
  useCtxState: (s) => {
280
- const c = a(s), l = I(E("auto-ctx"), "subscribe");
297
+ const c = r(s), l = z(E("auto-ctx"), "subscribe");
281
298
  return f(() => {
282
- if (r == 0)
299
+ if (a == 0)
283
300
  return l?.(t, s);
284
301
  {
285
302
  let i = l?.(t, s);
286
- return () => setTimeout(i, r);
303
+ return () => setTimeout(i, a);
287
304
  }
288
305
  }, [l, c]), E(c);
289
306
  }
290
- }), ue = (t) => {
291
- const [, e] = v(0), { proxy: n, finalGetter: a, openGetter: r, clean: s } = g(
307
+ }), me = (t) => {
308
+ const [, e] = v(0), { proxy: n, finalGetter: r, openGetter: a, clean: s } = b(
292
309
  () => {
293
310
  const c = /* @__PURE__ */ new Set(), l = {}, i = /* @__PURE__ */ new Map(), u = new Proxy(
294
311
  t?.data,
@@ -300,9 +317,9 @@ const T = H((t) => new _(t)), E = (t = "noname") => g(() => T(t), [t]), $ = (t,
300
317
  }
301
318
  }
302
319
  );
303
- let d = !0, p = w(() => {
320
+ let d = !0, p = C(() => {
304
321
  [...c.values()].some((h) => l[h] != t?.data?.[h]) && e((h) => h + 1);
305
- }, 0), b = () => {
322
+ }, 0), g = () => {
306
323
  d = !0, c.clear();
307
324
  }, j = () => {
308
325
  d = !1, [...c.values()].filter((h) => !i.has(h)).forEach((h) => {
@@ -311,42 +328,69 @@ const T = H((t) => new _(t)), E = (t = "noname") => g(() => T(t), [t]), $ = (t,
311
328
  i.get(h)?.(), i.delete(h);
312
329
  });
313
330
  };
314
- return { proxy: u, finalGetter: j, openGetter: b, clean: () => {
315
- b(), j(), e((h) => h + 1);
331
+ return { proxy: u, finalGetter: j, openGetter: g, clean: () => {
332
+ g(), j(), e((h) => h + 1);
316
333
  } };
317
334
  },
318
335
  [t]
319
336
  );
320
- return r(), setTimeout(a, 0), f(
337
+ return a(), setTimeout(r, 0), f(
321
338
  () => () => s(),
322
339
  [s]
323
340
  ), n;
324
- }, z = T.cache, B = ({}) => {
325
- const [t, e] = v("");
341
+ }, Q = y.cache, U = ({}) => {
342
+ const [t, e] = v(""), [n, r] = v(""), a = b(
343
+ () => {
344
+ const s = t.toLowerCase().split(" ");
345
+ return (c) => {
346
+ const l = c.toLowerCase();
347
+ return s.every((i) => l.includes(i));
348
+ };
349
+ },
350
+ [t]
351
+ );
326
352
  return /* @__PURE__ */ m("div", { className: "main-panel", children: [
327
- /* @__PURE__ */ o("div", { className: "state-list", children: [...z.keys()].map((n) => JSON.parse(n)?.[0]).filter((n) => n != "auto-ctx").map((n) => /* @__PURE__ */ o(
328
- "div",
329
- {
330
- className: "state-key",
331
- "data-active": n == t,
332
- onClick: () => e(n),
333
- children: n
334
- }
335
- )) }),
336
- /* @__PURE__ */ o("div", { className: "state-view", children: /* @__PURE__ */ o(P, { dataKey: t }, t) })
353
+ /* @__PURE__ */ m("div", { className: "state-list", children: [
354
+ /* @__PURE__ */ o(
355
+ "input",
356
+ {
357
+ placeholder: "Type to Filter ...",
358
+ className: "state-filter",
359
+ value: t,
360
+ onChange: (s) => e(s.target.value)
361
+ }
362
+ ),
363
+ [...Q.keys()].map((s) => JSON.parse(s)?.[0]).filter((s) => s != "auto-ctx" && s).filter(a).map((s) => /* @__PURE__ */ o(X, { selectedKey: n, setKey: r, currentKey: s }))
364
+ ] }),
365
+ /* @__PURE__ */ o("div", { className: "state-view", children: /* @__PURE__ */ o(I, { dataKey: n }, n) })
337
366
  ] });
338
- }, P = ({ dataKey: t }) => {
339
- const e = T(t), [n, a] = v({ ...e?.data });
367
+ }, X = ({ selectedKey: t, setKey: e, currentKey: n, ...r }) => {
368
+ const a = y(n), s = O(void 0);
340
369
  return f(() => {
341
- let r = { ...n }, s = setInterval(() => {
342
- let c = !1;
343
- for (let l in e?.data)
344
- e?.data?.[l] != r[l] && (r[l] = e?.data?.[l], c = !0);
345
- c && a({ ...r });
346
- }, 200);
347
- return () => clearInterval(s);
370
+ if (s.current) {
371
+ let c = C(() => {
372
+ s.current && (s.current?.classList.add("state-key-updated"), requestAnimationFrame(() => s.current?.classList.remove("state-key-updated")));
373
+ }, 16);
374
+ return a.subscribeAll(c);
375
+ }
376
+ }, [a, s]), /* @__PURE__ */ o(
377
+ "div",
378
+ {
379
+ ref: s,
380
+ className: "state-key",
381
+ "data-active": n == t,
382
+ onClick: () => e(n),
383
+ ...r,
384
+ children: n
385
+ }
386
+ );
387
+ }, I = ({ dataKey: t }) => {
388
+ const e = y(t), [n, r] = v({ ...e?.data });
389
+ return f(() => {
390
+ let a = C(r, 16);
391
+ return e.subscribeAll((s, c) => a({ ...c }));
348
392
  }, [e]), /* @__PURE__ */ o(
349
- ee,
393
+ re,
350
394
  {
351
395
  value: n,
352
396
  name: t,
@@ -354,60 +398,60 @@ const T = H((t) => new _(t)), E = (t = "noname") => g(() => T(t), [t]), $ = (t,
354
398
  style: {}
355
399
  }
356
400
  );
357
- }, V = (t) => {
401
+ }, F = (t) => {
358
402
  let e = t.length < 120 ? 10 : 100;
359
403
  return Object.fromEntries(
360
404
  new Array(Math.ceil((t.length + 1) / e)).fill(0).map(
361
- (n, a, r) => new Array(a == r.length - 1 ? t.length % e : e).fill(0).map((s, c) => a * e + c)
405
+ (n, r, a) => new Array(r == a.length - 1 ? t.length % e : e).fill(0).map((s, c) => r * e + c)
362
406
  ).filter((n) => n.length).map((n) => [`${n.at(0)}..${n.at(-1)}`, Object.fromEntries(
363
- n.map((a) => [a, t[a]])
407
+ n.map((r) => [r, t[r]])
364
408
  )])
365
409
  );
366
- }, Q = (t, e = 25) => {
410
+ }, Y = (t, e = 25) => {
367
411
  const n = Object.keys(t);
368
412
  return Object.fromEntries(
369
413
  Array(Math.ceil((n.length + 1) / e)).fill(0).map(
370
- (a, r, s) => new Array(r == s.length - 1 ? n.length % e : e).fill(0).map((c, l) => r * e + l)
371
- ).filter((a) => a.length).map((a) => a.map((r) => n.at(r))).map(
372
- (a) => [
373
- `${a.at(0)?.slice(0, 15)}...${a.at(-1)?.slice(0, 15)}`,
374
- Object.fromEntries(a.map((r) => [r, t[r]]))
414
+ (r, a, s) => new Array(a == s.length - 1 ? n.length % e : e).fill(0).map((c, l) => a * e + l)
415
+ ).filter((r) => r.length).map((r) => r.map((a) => n.at(a))).map(
416
+ (r) => [
417
+ `${r.at(0)?.slice(0, 15)}...${r.at(-1)?.slice(0, 15)}`,
418
+ Object.fromEntries(r.map((a) => [a, t[a]]))
375
419
  ]
376
420
  )
377
421
  );
378
- }, x = ({ path: t, expandLevel: e, expandRoot: n, setExpandRoot: a }) => {
379
- const r = t?.join("%") ?? "", s = typeof e == "boolean" ? e : typeof e == "number" && e > 0, c = g(
380
- () => n?.[r] ?? s,
381
- [n?.[r], r]
382
- ), l = A(
383
- (i) => a((u) => ({ ...u, [r]: i })),
384
- [n, r]
422
+ }, D = ({ path: t, expandLevel: e, expandRoot: n, setExpandRoot: r }) => {
423
+ const a = t?.join("%") ?? "", s = typeof e == "boolean" ? e : typeof e == "number" && e > 0, c = b(
424
+ () => n?.[a] ?? s,
425
+ [n?.[a], a]
426
+ ), l = $(
427
+ (i) => r((u) => ({ ...u, [a]: i })),
428
+ [n, a]
385
429
  );
386
430
  return { isExpand: c, setExpand: l };
387
- }, C = ({ value: t, deepCompare: e = !1, ...n }) => {
388
- const a = O(void 0), r = O(t);
431
+ }, w = ({ value: t, deepCompare: e = !1, ...n }) => {
432
+ const r = O(void 0), a = O(t);
389
433
  return f(() => {
390
- if (a.current && (e && t && r.current ? Object.keys(t).length != Object.keys(r.current).length || Object.keys(t).some((c) => t[c] != r.current[c]) : t != r.current)) {
391
- r.current = t, a.current.classList.add("jv-updated");
392
- let c = requestAnimationFrame(() => a.current?.classList.remove("jv-updated"));
434
+ if (r.current && (e && t && a.current ? Object.keys(t).length != Object.keys(a.current).length || Object.keys(t).some((c) => t[c] != a.current[c]) : t != a.current)) {
435
+ a.current = t, r.current.classList.add("jv-updated");
436
+ let c = requestAnimationFrame(() => r.current?.classList.remove("jv-updated"));
393
437
  return () => cancelAnimationFrame(c);
394
438
  }
395
- }, [t, e, a]), /* @__PURE__ */ o("div", { ...n, ref: a });
396
- }, U = (t) => {
439
+ }, [t, e, r]), /* @__PURE__ */ o("div", { ...n, ref: r });
440
+ }, Z = (t) => {
397
441
  const {
398
442
  currentField: e,
399
443
  value: n,
400
- path: a = [],
401
- name: r,
444
+ path: r = [],
445
+ name: a,
402
446
  expandRoot: s,
403
447
  setExpandRoot: c,
404
448
  expandLevel: l,
405
449
  isGrouped: i
406
- } = t, u = n instanceof Array, { isExpand: d, setExpand: p } = x(t), b = typeof l == "number" ? l - 1 : l, j = Object.entries(n).length > (n instanceof Array ? 10 : 25), N = Object.entries(n).length > 0, h = g(
407
- () => j ? n instanceof Array ? V(n) : Q(n, 25) : n,
408
- [n, j, V]
450
+ } = t, u = n instanceof Array, { isExpand: d, setExpand: p } = D(t), g = typeof l == "number" ? l - 1 : l, j = Object.entries(n).length > (n instanceof Array ? 10 : 25), N = Object.entries(n).length > 0, h = b(
451
+ () => j ? n instanceof Array ? F(n) : Y(n, 25) : n,
452
+ [n, j, F]
409
453
  );
410
- return d && N ? /* @__PURE__ */ m(C, { className: "jv-field jv-field-obj", value: n, deepCompare: i, children: [
454
+ return d && N ? /* @__PURE__ */ m(w, { className: "jv-field jv-field-obj", value: n, deepCompare: i, children: [
411
455
  e && /* @__PURE__ */ o("div", { children: /* @__PURE__ */ m("div", { onClick: () => p(!1), children: [
412
456
  /* @__PURE__ */ o("span", { className: "jv-name", children: e }),
413
457
  /* @__PURE__ */ o("span", { children: ":" }),
@@ -422,17 +466,17 @@ const T = H((t) => new _(t)), E = (t = "noname") => g(() => T(t), [t]), $ = (t,
422
466
  " "
423
467
  ] })
424
468
  ] }) }),
425
- /* @__PURE__ */ o("div", { className: "jv-value", children: Object.entries(h).map(([S, F], R) => /* @__PURE__ */ J(
469
+ /* @__PURE__ */ o("div", { className: "jv-value", children: Object.entries(h).map(([S, L], G) => /* @__PURE__ */ J(
426
470
  M,
427
471
  {
428
- name: r,
472
+ name: a,
429
473
  expandRoot: s,
430
474
  setExpandRoot: c,
431
- expandLevel: b,
432
- value: F,
475
+ expandLevel: g,
476
+ value: L,
433
477
  isGrouped: j,
434
- key: [...a, j ? R : S].join("%"),
435
- path: [...a, S]
478
+ key: [...r, j ? G : S].join("%"),
479
+ path: [...r, S]
436
480
  }
437
481
  )) }),
438
482
  e && /* @__PURE__ */ o("div", { children: /* @__PURE__ */ m("span", { children: [
@@ -440,7 +484,7 @@ const T = H((t) => new _(t)), E = (t = "noname") => g(() => T(t), [t]), $ = (t,
440
484
  u ? "]" : "}",
441
485
  " "
442
486
  ] }) })
443
- ] }) : /* @__PURE__ */ o(C, { className: "jv-field jv-field-obj", value: n, deepCompare: i, children: /* @__PURE__ */ o("div", { children: /* @__PURE__ */ m("div", { onClick: () => N && p(!0), children: [
487
+ ] }) : /* @__PURE__ */ o(w, { className: "jv-field jv-field-obj", value: n, deepCompare: i, children: /* @__PURE__ */ o("div", { children: /* @__PURE__ */ m("div", { onClick: () => N && p(!0), children: [
444
488
  /* @__PURE__ */ o("span", { className: "jv-name", children: e }),
445
489
  e && /* @__PURE__ */ o("span", { children: ":" }),
446
490
  e && N && /* @__PURE__ */ o("span", { children: "[+]" }),
@@ -460,21 +504,21 @@ const T = H((t) => new _(t)), E = (t = "noname") => g(() => T(t), [t]), $ = (t,
460
504
  " "
461
505
  ] })
462
506
  ] }) }) });
463
- }, X = (t) => {
464
- const { currentType: e, currentField: n, value: a } = t, { isExpand: r, setExpand: s } = x(t), c = String(a).length > 50, l = c && !r ? `${String(a).slice(0, 15)}...${String(a).slice(-15, -1)}` : String(a);
507
+ }, ee = (t) => {
508
+ const { currentType: e, currentField: n, value: r } = t, { isExpand: a, setExpand: s } = D(t), c = String(r).length > 50, l = c && !a ? `${String(r).slice(0, 15)}...${String(r).slice(-15, -1)}` : String(r);
465
509
  return /* @__PURE__ */ m(
466
- C,
510
+ w,
467
511
  {
468
512
  value: t.value,
469
513
  className: `jv-field jv-field-${e} ${c ? "jv-cursor" : ""}`,
470
- onClick: () => s(!r),
514
+ onClick: () => s(!a),
471
515
  children: [
472
516
  /* @__PURE__ */ o("span", { className: "jv-name", children: n }),
473
517
  /* @__PURE__ */ o("span", { children: ":" }),
474
518
  /* @__PURE__ */ m("span", { className: "jv-type", children: [
475
519
  e,
476
520
  ", lng=",
477
- a?.length
521
+ r?.length
478
522
  ] }),
479
523
  /* @__PURE__ */ m("span", { className: "jv-value", children: [
480
524
  '"',
@@ -485,14 +529,14 @@ const T = H((t) => new _(t)), E = (t = "noname") => g(() => T(t), [t]), $ = (t,
485
529
  ]
486
530
  }
487
531
  );
488
- }, Y = (t) => {
489
- const { currentType: e, currentField: n, value: a } = t, { isExpand: r, setExpand: s } = x(t), c = String(a).length > 50, l = c && !r ? `${String(a).slice(0, 15)}...${String(a).slice(-15, -1)}` : String(a);
532
+ }, te = (t) => {
533
+ const { currentType: e, currentField: n, value: r } = t, { isExpand: a, setExpand: s } = D(t), c = String(r).length > 50, l = c && !a ? `${String(r).slice(0, 15)}...${String(r).slice(-15, -1)}` : String(r);
490
534
  return /* @__PURE__ */ m(
491
- C,
535
+ w,
492
536
  {
493
537
  value: t.value,
494
538
  className: `jv-field jv-field-${e} ${c ? "jv-cursor" : ""}`,
495
- onClick: () => s(!r),
539
+ onClick: () => s(!a),
496
540
  children: [
497
541
  /* @__PURE__ */ o("span", { className: "jv-name", children: n }),
498
542
  /* @__PURE__ */ o("span", { children: ":" }),
@@ -506,10 +550,10 @@ const T = H((t) => new _(t)), E = (t = "noname") => g(() => T(t), [t]), $ = (t,
506
550
  ]
507
551
  }
508
552
  );
509
- }, Z = (t) => {
510
- const { currentType: e, currentField: n, value: a } = t;
553
+ }, ne = (t) => {
554
+ const { currentType: e, currentField: n, value: r } = t;
511
555
  return /* @__PURE__ */ m(
512
- C,
556
+ w,
513
557
  {
514
558
  value: t.value,
515
559
  className: `jv-field jv-field-${e}`,
@@ -517,66 +561,66 @@ const T = H((t) => new _(t)), E = (t = "noname") => g(() => T(t), [t]), $ = (t,
517
561
  /* @__PURE__ */ o("span", { className: "jv-name", children: n }),
518
562
  /* @__PURE__ */ o("span", { children: ":" }),
519
563
  /* @__PURE__ */ o("span", { className: "jv-type", children: e }),
520
- /* @__PURE__ */ o("span", { className: "jv-value", children: String(a) }),
564
+ /* @__PURE__ */ o("span", { className: "jv-value", children: String(r) }),
521
565
  /* @__PURE__ */ o("span", { children: "," })
522
566
  ]
523
567
  }
524
568
  );
525
569
  }, M = (t) => {
526
- const { value: e, path: n = [], name: a } = t, r = n.at(-1) ?? a ?? void 0, s = typeof e;
570
+ const { value: e, path: n = [], name: r } = t, a = n.at(-1) ?? r ?? void 0, s = typeof e;
527
571
  switch (s) {
528
572
  case "object":
529
- return /* @__PURE__ */ o(U, { ...t, currentField: r, currentType: s });
573
+ return /* @__PURE__ */ o(Z, { ...t, currentField: a, currentType: s });
530
574
  case "string":
531
- return /* @__PURE__ */ o(X, { ...t, currentField: r, currentType: s });
575
+ return /* @__PURE__ */ o(ee, { ...t, currentField: a, currentType: s });
532
576
  case "function":
533
- return /* @__PURE__ */ o(Y, { ...t, currentField: r, currentType: s });
577
+ return /* @__PURE__ */ o(te, { ...t, currentField: a, currentType: s });
534
578
  case "number":
535
579
  case "boolean":
536
580
  case "bigint":
537
581
  case "symbol":
538
582
  case "undefined":
539
583
  default:
540
- return /* @__PURE__ */ o(Z, { ...t, currentField: r, currentType: s });
584
+ return /* @__PURE__ */ o(ne, { ...t, currentField: a, currentType: s });
541
585
  }
542
- }, ee = ({ value: t, name: e, style: n, expandLevel: a = !1 }) => {
543
- const [r, s] = v({});
586
+ }, re = ({ value: t, name: e, style: n, expandLevel: r = !1 }) => {
587
+ const [a, s] = v({});
544
588
  return /* @__PURE__ */ o("div", { className: "jv-root", style: n, children: /* @__PURE__ */ o(
545
589
  M,
546
590
  {
547
591
  path: [],
548
592
  name: e,
549
593
  value: t,
550
- expandRoot: r,
594
+ expandRoot: a,
551
595
  setExpandRoot: s,
552
- expandLevel: a
596
+ expandLevel: r
553
597
  }
554
598
  ) });
555
- }, de = ({ toggleButton: t = "[x]", ...e }) => {
556
- const [n, a] = v(!1);
557
- return /* @__PURE__ */ m(y, { children: [
558
- /* @__PURE__ */ o("button", { className: "react-state-dev-btn", "data-active": n, onClick: () => a(!0), ...e, children: e?.children ?? "Toggle Dev Tool" }),
599
+ }, fe = ({ toggleButton: t = "[x]", ...e }) => {
600
+ const [n, r] = v(!1);
601
+ return /* @__PURE__ */ m(x, { children: [
602
+ /* @__PURE__ */ o("button", { className: "react-state-dev-btn", "data-active": n, onClick: () => r(!0), ...e, children: e?.children ?? "Toggle Dev Tool" }),
559
603
  /* @__PURE__ */ m("div", { className: "react-state-dev-container", "data-active": n, children: [
560
- /* @__PURE__ */ o("button", { className: "close-btn", onClick: () => a(!1), children: "[x]" }),
561
- /* @__PURE__ */ o(B, {})
604
+ /* @__PURE__ */ o("button", { className: "close-btn", onClick: () => r(!1), children: "[x]" }),
605
+ n && /* @__PURE__ */ o(U, {})
562
606
  ] })
563
607
  ] });
564
608
  };
565
609
  export {
566
- ie as AutoRootCtx,
567
- _ as Context,
568
- de as DevToolContainer,
569
- oe as createAutoCtx,
570
- le as createRootCtx,
571
- T as getContext,
572
- L as useArrayHash,
610
+ de as AutoRootCtx,
611
+ q as Context,
612
+ fe as DevToolContainer,
613
+ he as createAutoCtx,
614
+ ue as createRootCtx,
615
+ y as getContext,
616
+ _ as useArrayHash,
573
617
  E as useDataContext,
574
- ae as useDataSource,
575
- k as useDataSourceMultiple,
576
- I as useDataSubscribe,
577
- se as useDataSubscribeMultiple,
578
- ce as useDataSubscribeMultipleWithDebounce,
579
- re as useDataSubscribeWithTransform,
580
- ue as useQuickSubscribe
618
+ ce as useDataSource,
619
+ R as useDataSourceMultiple,
620
+ z as useDataSubscribe,
621
+ ie as useDataSubscribeMultiple,
622
+ oe as useDataSubscribeMultipleWithDebounce,
623
+ le as useDataSubscribeWithTransform,
624
+ me as useQuickSubscribe
581
625
  };
582
626
  //# sourceMappingURL=index.es.js.map