react-state-custom 1.0.28 → 1.0.30

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/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  **Simple. Powerful. TypeScript-first.**
4
4
 
5
- A lightweight React state management library that combines the simplicity of React hooks with the power of event-driven subscriptions. No boilerplate, no complexity—just pure, performant state management.
5
+ A lightweight global React state management library that combines the simplicity of React hooks with the power of event-driven subscriptions. No boilerplate, no complexity—just pure, performant state management.
6
6
 
7
7
  [![Demo](https://img.shields.io/badge/Demo-Live-blue?style=flat-square)](https://vothanhdat.github.io/react-state-custom/)
8
8
  [![npm version](https://img.shields.io/npm/v/react-state-custom?style=flat-square)](https://www.npmjs.com/package/react-state-custom)
@@ -14,14 +14,103 @@ npm install react-state-custom
14
14
 
15
15
  🎮 **[Try the Live Demo →](https://vothanhdat.github.io/react-state-custom/)**
16
16
 
17
+ ## Quick Start (2 minutes)
18
+
19
+ If you already know how to write a component with `useState`, you're moments away from sharing that state everywhere.
20
+
21
+ 1. **Write a plain hook** – encapuslate data fetching, derived values, and actions inside a normal React hook.
22
+ 2. **Create a root context** – `createRootCtx('feature', useFeatureState)` publishes the hook output into a context namespace.
23
+ 3. **Let AutoRoot manage lifecycles** – `createAutoCtx(rootCtx, 150)` registers the store with `<AutoRootCtx />` and (optionally) keeps it alive for a short grace period after the last subscriber unmounts.
24
+ 4. **Mount `<AutoRootCtx />` once** – drop it near the top of your tree (wrap it with your own `ErrorBoundary` if desired).
25
+ 5. **Consume anywhere** – call the generated `useCtxState` hook and destructure data via `useQuickSubscribe` or any `useDataSubscribe*` helper.
26
+
27
+ ```tsx
28
+ const useFeatureState = ({ featureId }: { featureId: string }) => {
29
+ const [value, setValue] = useState(0)
30
+ const double = useMemo(() => value * 2, [value])
31
+ return { value, double, increment: () => setValue(v => v + 1) }
32
+ }
33
+
34
+ const featureRoot = createRootCtx('feature', useFeatureState)
35
+ export const { useCtxState: useFeatureCtx } = createAutoCtx(featureRoot, 250)
36
+
37
+ function AppShell() {
38
+ return (
39
+ <>
40
+ <AutoRootCtx Wrapper={ErrorBoundary} debugging={import.meta.env.DEV} />
41
+ <Routes />
42
+ </>
43
+ )
44
+ }
45
+
46
+ function FeatureMeter({ featureId }: { featureId: string }) {
47
+ const ctx = useFeatureCtx({ featureId })
48
+ const { value, double, increment } = useQuickSubscribe(ctx)
49
+ return (
50
+ <section>
51
+ <strong>{value}</strong>
52
+ <em>{double}</em>
53
+ <button onClick={increment}>Add</button>
54
+ </section>
55
+ )
56
+ }
57
+ ```
58
+
59
+ That’s the entire workflow—no reducers, actions, or provider trees.
60
+
17
61
  ## Why React State Custom?
18
62
 
19
63
  **Zero Boilerplate** • **Type-Safe** • **Selective Re-renders** • **Hook-Based** • **~10KB Bundle**
20
64
 
21
- React State Custom lets you write state management code that feels natural—because it **is** just React hooks. Use the same hooks you already know (`useState`, `useEffect`, etc.) to create powerful, shared state without learning new paradigms.
65
+ React State Custom lets you write state management code that feels natural—because it **is** just React hooks. Use the same hooks you already know (`useState`, `useEffect`, etc.) to create powerful, shared global state without learning new paradigms.
66
+
67
+ ### When `useState` + `useEffect` Fall Short
68
+
69
+ Even though React hooks are flexible, they start to hurt once state crosses component boundaries:
70
+
71
+ - **Prop drilling & manual providers** – every time state needs to be shared, you create a context, memoize values, and remember to wrap trees.
72
+ - **Coarse-grained re-renders** – updating one property forces every subscriber of that context to render, even if they don't consume the changed field.
73
+ - **Lifecycle bookkeeping** – you manually manage instance lifetimes, clean up effects, and guard against components mounting before providers.
74
+ - **Zero visibility** – there's no built-in way to inspect shared state, throttle noisy updates, or keep debugging breadcrumbs.
75
+
76
+ React State Custom keeps your favorite hooks but layers on automatic context lifecycles, selective subscriptions, and built-in tooling so you can stay productive as your app grows.
22
77
 
23
78
  ## ⚡ Quick Example
24
79
 
80
+ ### Without React State Custom (manual context plumbing)
81
+
82
+ ```typescript
83
+ const CounterContext = createContext<{
84
+ count: number;
85
+ increment: () => void;
86
+ decrement: () => void;
87
+ } | null>(null);
88
+
89
+ function CounterProvider({ children }: { children: React.ReactNode }) {
90
+ const [count, setCount] = useState(0);
91
+ const value = useMemo(
92
+ () => ({
93
+ count,
94
+ increment: () => setCount(c => c + 1),
95
+ decrement: () => setCount(c => c - 1),
96
+ }),
97
+ [count]
98
+ );
99
+
100
+ return <CounterContext.Provider value={value}>{children}</CounterContext.Provider>;
101
+ }
102
+
103
+ function useCounter() {
104
+ const ctx = useContext(CounterContext);
105
+ if (!ctx) throw new Error('CounterProvider missing');
106
+ return ctx;
107
+ }
108
+ ```
109
+
110
+ Every consumer re-renders whenever anything in `value` changes, you have to remember to wrap parts of the tree with `CounterProvider`, and tearing this pattern down for parameterized instances gets messy fast.
111
+
112
+ ### With React State Custom (hook-first store)
113
+
25
114
  ```typescript
26
115
  import { createRootCtx, createAutoCtx, useQuickSubscribe, AutoRootCtx } from 'react-state-custom';
27
116
 
@@ -64,8 +153,49 @@ function Counter() {
64
153
 
65
154
  > ℹ️ `AutoRootCtx` accepts optional `Wrapper` and `debugging` props. Pass an ErrorBoundary-like component through `Wrapper` to isolate failures, or set `debugging` to `true` to render raw state snapshots in the DOM (handy alongside React DevTools when tracking updates).
66
155
 
156
+ `useQuickSubscribe` keeps `Counter` focused on `count`, so even if this context grows with more fields later, the component only re-renders when `count` changes.
157
+
67
158
  **That's it!** No reducers, no actions, no providers to wrap—just hooks.
68
159
 
160
+ ## Core Concepts in Plain English
161
+
162
+ - **Contexts on demand** – `Context` extends `EventTarget`, so every state update is just an event dispatch. `getContext` memoizes instances per name and `useDataContext` automatically bumps a counter so unused contexts self-evict shortly after the last consumer unmounts.
163
+ - **Publishers** – `useDataSource` and `useDataSourceMultiple` publish inside effects to keep renders pure. A registry guards against duplicate publishers fighting over the same key so you get actionable errors instead of stale data.
164
+ - **Subscribers** – `useDataSubscribe*` hooks cover single, multiple, debounced, and transformed reads. `useQuickSubscribe` proxies the backing data object so each component subscribes only to the properties it touches.
165
+ - **Root factories** – `createRootCtx` runs your headless hook exactly once per parameter set, publishes every returned key, and throws if two roots try to mount with the same resolved name. Parameters are serialized via `paramsToId`, so stick to primitive props (string/number/boolean/bigint/null/undefined) to keep IDs deterministic.
166
+ - **Auto orchestration** – Mount `<AutoRootCtx />` once and wire each root through `createAutoCtx`. The auto root listens for subscription requests, mounts/destroys the corresponding root on demand, and optionally keeps them alive for a configurable `timeToClean` window to smooth thrashing.
167
+ - **Dev tooling** – `DevToolContainer` watches the memoized context cache, flashes updates in place, and lets you plug in custom renderers so you can diff state right beside your UI.
168
+
169
+ ## Core Building Blocks (copy & paste ready)
170
+
171
+ Familiarity beats theory, so here are the primitives you’ll reach for most often:
172
+
173
+ ### 1. Context – event-driven store
174
+ ```typescript
175
+ const ctx = useDataContext<MyState>('my-state');
176
+ ```
177
+
178
+ ### 2. Data source – publish values
179
+ ```typescript
180
+ useDataSource(ctx, 'count', count);
181
+ ```
182
+
183
+ ### 3. Subscribers – pick exact fields
184
+ ```typescript
185
+ const count = useDataSubscribe(ctx, 'count');
186
+ const { count, name } = useDataSubscribeMultiple(ctx, 'count', 'name');
187
+ ```
188
+
189
+ ### 4. Root context – run your hook once
190
+ ```typescript
191
+ const { Root, useCtxState } = createRootCtx('my-state', useMyState);
192
+ ```
193
+
194
+ ### 5. Auto context – mount roots for you
195
+ ```typescript
196
+ const { useCtxState } = createAutoCtx(rootContext);
197
+ ```
198
+
69
199
  ## 🎯 Key Features
70
200
 
71
201
  ### 1. **Just React Hooks**
@@ -95,6 +225,8 @@ const { user } = useDataSubscribeMultiple(ctx, 'user');
95
225
  const { user, loading } = useDataSubscribeMultiple(ctx, 'user', 'loading');
96
226
  ```
97
227
 
228
+ > ⚠️ `useQuickSubscribe` proxies are only readable during render. Destructure the properties you need immediately and avoid storing the proxy in refs, effects, or callbacks.
229
+
98
230
  ### 3. **Automatic Context Management**
99
231
  With `AutoRootCtx`, state contexts are automatically created and destroyed as needed. Mount it once near your application root, optionally providing a `Wrapper` (for error boundaries) or enabling `debugging` to render live state snapshots in the DOM—useful context when pairing with React DevTools. No manual provider management required.
100
232
 
@@ -104,18 +236,18 @@ Full type inference and type safety throughout. Your IDE knows exactly what's in
104
236
  ### 5. **Tiny Bundle Size**
105
237
  ~10KB gzipped. No dependencies except React.
106
238
 
107
- ## 🆚 Comparison with Redux & Zustand
239
+ ## 🆚 Comparison with Hooks, Redux & Zustand
108
240
 
109
- | Feature | React State Custom | Redux | Zustand |
110
- |---------|-------------------|-------|---------|
111
- | **Bundle Size** | ~10KB | ~50KB (with toolkit) | ~1KB |
112
- | **Learning Curve** | ✅ Minimal (just hooks) | ❌ High (actions, reducers, middleware) | ✅ Low |
113
- | **Boilerplate** | ✅ None | ❌ Heavy | ✅ Minimal |
114
- | **Type Safety** | ✅ Full inference | ⚠️ Requires setup | ✅ Good |
115
- | **Selective Re-renders** | ✅ Built-in | ⚠️ Requires selectors | ✅ Built-in |
116
- | **DevTools** | ✅ Built-in UI | ✅ Redux DevTools | ✅ DevTools support |
117
- | **Async Support** | ✅ Native (hooks) | ⚠️ Requires middleware | ✅ Native |
118
- | **Context Composition** | ✅ Automatic | ❌ Manual | ⚠️ Manual store combination |
241
+ | Feature | React State Custom | Plain Hooks (Context) | Redux | Zustand |
242
+ |---------|-------------------|-----------------------|-------|---------|
243
+ | **Bundle Size** | ~10KB | 0KB (just React) | ~50KB (with toolkit) | ~1KB |
244
+ | **Learning Curve** | ✅ Minimal (just hooks) | ⚠️ Familiar APIs, but patterns are DIY | ❌ High (actions, reducers, middleware) | ✅ Low |
245
+ | **Boilerplate** | ✅ None | ❌ Manual providers + prop drilling | ❌ Heavy | ✅ Minimal |
246
+ | **Type Safety** | ✅ Full inference | ⚠️ Custom per-context typing | ⚠️ Requires setup | ✅ Good |
247
+ | **Selective Re-renders** | ✅ Built-in | ❌ Context update = every consumer renders | ⚠️ Requires selectors | ✅ Built-in |
248
+ | **DevTools** | ✅ Built-in UI | ❌ None | ✅ Redux DevTools | ✅ DevTools support |
249
+ | **Async Support** | ✅ Native (hooks) | ✅ Native (hooks) | ⚠️ Requires middleware | ✅ Native |
250
+ | **Context Composition** | ✅ Automatic | ❌ Manual provider trees | ❌ Manual | ⚠️ Manual store combination |
119
251
 
120
252
  ### When to Use React State Custom
121
253
 
@@ -221,36 +353,10 @@ function ProtectedRoute({ children }) {
221
353
  // React State Custom: just write a hook! ✨
222
354
  ```
223
355
 
224
- ## 📚 Core Concepts
225
-
226
- ### 1. **Context** - Event-driven state container
227
- ```typescript
228
- const ctx = useDataContext<MyState>('my-state');
229
- ```
230
-
231
- ### 2. **Data Source** - Publish values to context
232
- ```typescript
233
- useDataSource(ctx, 'count', count);
234
- ```
235
-
236
- ### 3. **Data Subscription** - Subscribe to specific values
237
- ```typescript
238
- const count = useDataSubscribe(ctx, 'count');
239
- const { count, name } = useDataSubscribeMultiple(ctx, 'count', 'name');
240
- ```
241
-
242
- ### 4. **Root Context** - Lifecycle-managed context
243
- ```typescript
244
- const { Root, useCtxState } = createRootCtx('my-state', useMyState);
245
- ```
246
-
247
- ### 5. **Auto Context** - Automatic instance management
248
- ```typescript
249
- const { useCtxState } = createAutoCtx(rootContext);
250
- ```
251
-
252
356
  ## 🚀 Advanced Features
253
357
 
358
+ Once you have a store running, layer in these power-ups as needed.
359
+
254
360
  ### Developer Tools
255
361
  Visual debugging component to inspect all your context data in real-time:
256
362
 
@@ -284,6 +390,8 @@ const CustomDataView: DataViewComponent = ({ name, value }) => {
284
390
  <DevToolContainer Component={CustomDataView} />
285
391
  ```
286
392
 
393
+ Pass `children` to `DevToolContainer` to customize the floating toggle button label (for example `<DevToolContainer>State Inspector</DevToolContainer>`), and import `react-state-custom/dist/react-state-custom.css` once to pick up the overlay styles.
394
+
287
395
  ### Parameterized Contexts
288
396
  Create multiple instances of the same state with different parameters:
289
397
 
@@ -306,6 +414,8 @@ function UserProfile({ userId }) {
306
414
 
307
415
  > Need to avoid rapid mount/unmount churn? Pass a second argument to `createAutoCtx` (for example `createAutoCtx(rootCtx, 200)`) to keep instances alive for a few extra milliseconds before disposal.
308
416
 
417
+ > ⚠️ The props you pass to `createRootCtx`/`useCtxState` must be composed of primitive values (string, number, boolean, bigint, null, or undefined). Objects are rejected so context names stay deterministic—pass IDs instead of raw objects.
418
+
309
419
  ### Debounced Subscriptions
310
420
  Optimize performance for frequently changing values:
311
421
 
@@ -382,10 +492,10 @@ yarn preview
382
492
 
383
493
  ## 🎓 Learning Path
384
494
 
385
- 1. **Start Simple** - Use `createRootCtx` + `createAutoCtx` for basic state
386
- 2. **Add Subscriptions** - Use `useDataSubscribeMultiple` for selective re-renders
387
- 3. **Optimize** - Add debouncing and transformations as needed
388
- 4. **Scale** - Create parameterized contexts for dynamic instances
495
+ 1. **Follow the Quick Start** build one shared store end-to-end.
496
+ 2. **Layer on subscriptions** swap `useQuickSubscribe` for the more specific `useDataSubscribe*` hooks where it makes sense.
497
+ 3. **Optimize when needed** introduce debounced/transform subscriptions and `createAutoCtx` grace periods to smooth noisy stores.
498
+ 4. **Scale up** add parameterized contexts (one store per ID) and wire the DevTool overlay for visibility.
389
499
 
390
500
  ## 📦 Installation
391
501
 
@@ -407,4 +517,4 @@ MIT License - feel free to use in any project.
407
517
 
408
518
  ---
409
519
 
410
- **Made with ❤️ for developers who love React hooks**
520
+ **Made with ❤️ for developers who love React hooks**
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../node_modules/react/cjs/react-compiler-runtime.production.js","../node_modules/react/cjs/react-compiler-runtime.development.js","../node_modules/react/compiler-runtime.js","../src/state-utils/utils.ts","../src/state-utils/useArrayChangeId.ts","../src/state-utils/ctx.ts","../src/state-utils/paramsToId.tsx","../src/state-utils/createRootCtx.tsx","../src/state-utils/createAutoCtx.tsx","../src/state-utils/useQuickSubscribe.ts","../src/dev-tool/useHighlight.tsx","../src/dev-tool/DataViewComponent.tsx","../src/dev-tool/StateLabelRender.tsx","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@uiw/react-split/esm/index.js","../src/dev-tool/DevToolState.tsx","../src/dev-tool/DevTool.tsx"],"sourcesContent":["/**\n * @license React\n * react-compiler-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nexports.c = function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n};\n","/**\n * @license React\n * react-compiler-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n var ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n exports.c = function (size) {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher.useMemoCache(size);\n };\n })();\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-compiler-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-compiler-runtime.development.js');\n}\n","// Debounce function\nexport function debounce<T extends (...args: any[]) => any>(\n func: T,\n wait: number\n): ((...args: Parameters<T>) => void) & { cancel: any } {\n let timeout: ReturnType<typeof setTimeout> | null = null;\n\n let fn: Function & { cancel: any } = function (...args: Parameters<T>): void {\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n func(...args);\n }, wait);\n } as any;\n\n fn.cancel = () => clearTimeout(timeout!);\n\n return fn as any;\n}\n\n// Memoize function\nexport function memoize<T extends (...args: any[]) => any>(\n func: T\n): ((...args: Parameters<T>) => ReturnType<T>) & { cache: Map<string, ReturnType<T>> } {\n \n const cache = new Map<string, ReturnType<T>>();\n\n const cachedFunc: any = function (...args: Parameters<T>): ReturnType<T> {\n const key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key) as ReturnType<T>;\n }\n const result = func(...args);\n cache.set(key, result);\n return result;\n }\n\n cachedFunc.cache = cache;\n\n return cachedFunc\n}\n\n","import { useRef } from \"react\"\n\n\nconst randomHash = () => Math.random().toString().slice(2)\n\n/**\n * useArrayChangeId\n *\n * A custom hook that generates a stable change identifier for an array of values.\n * The identifier changes only when the array's contents differ from the previous call.\n *\n * @param e - The input array to track.\n * @returns A string identifier that updates when the array changes.\n *\n * How it works:\n * - Tracks the previous array and its identifier using a `useRef`.\n * - Compares the new array to the previous one by length and element equality (shallow comparison).\n * - If any difference is detected, generates a new random identifier.\n * \n * Note: Uses shallow comparison - compares array length and element references using `!=`.\n * For objects and nested arrays, only references are compared, not deep values.\n */\nexport const useArrayChangeId = (e: any[]): string => {\n const ref = useRef<{ values: any[]; id: string }>({\n values: [],\n id: randomHash()\n })\n\n // Check for differences in array existence, length, or elements\n let isDiff = false\n isDiff = isDiff || ((!e) != (!ref.current.values))\n isDiff = isDiff || (e?.length != ref.current.values?.length)\n isDiff = isDiff || (e?.some((f, i) => f != ref.current.values[i]))\n\n // Update the identifier if differences are found\n if (isDiff) {\n ref.current.values = e\n ref.current.id = randomHash()\n }\n\n return ref.current.id\n}","import { debounce, memoize } from \"./utils\";\nimport { useEffect, useMemo, useState } from \"react\"\nimport { useArrayChangeId } from \"./useArrayChangeId\"\n\n\n\nconst CHANGE_EVENT = \"@--change-event\"\n\nclass DataEvent<D> extends Event {\n constructor(\n public event: keyof D,\n public value: D[typeof event] | undefined\n ) {\n super(String(event));\n }\n}\n\nclass ChangeEvent<D> extends Event {\n constructor(\n public value: DataEvent<D>\n ) {\n super(CHANGE_EVENT, value);\n }\n}\n\n/**\n * Generic context for managing shared state and event subscriptions.\n * @template D - The shape of the data managed by the context.\n */\nexport class Context<D> extends EventTarget {\n /**\n * Create a new Context instance.\n * @param name - The name of the context (for debugging).\n */\n constructor(public name: string) {\n // console.log(\"[CONTEXT] %s\", name)\n // this.event.setMaxListeners(100)\n super();\n }\n\n /**\n * The current data held by the context.\n */\n public data: Partial<D> = {}\n /**\n * Registry for tracking active keys (for duplicate detection).\n */\n public registry = new Set<string>()\n\n public useCounter = 0\n\n /**\n * Publish a value to the context and notify subscribers if it changed.\n * @param key - The key to update.\n * @param value - The new value.\n */\n public publish(key: keyof D, value: D[typeof key] | undefined) {\n\n if (value != this.data[key]) {\n this.data[key] = value\n let event = new DataEvent(key, value);\n this.dispatchEvent(event);\n this.dispatchEvent(new ChangeEvent(event))\n }\n }\n\n /**\n * Subscribe to changes for a specific key in the context.\n * @param key - The key to subscribe to.\n * @param _listener - Callback invoked with the new value.\n * @returns Unsubscribe function.\n */\n public subscribe(key: keyof D, _listener: (e: D[typeof key] | undefined) => void) {\n\n const listener = ({ event, value }: any) => {\n _listener(value)\n }\n\n this.addEventListener(String(key), listener)\n // console.log(\"listenerCount:\", String(key), this.event.listenerCount(String(key)))\n\n if (key in this.data) _listener(this.data[key])\n\n return () => this.removeEventListener(String(key), listener)\n }\n\n public subscribeAll(_listener: (changeKey: keyof D, newData: Partial<D>) => void) {\n\n const listener = (event: any) => {\n if (event instanceof ChangeEvent) {\n const { value: data } = event\n _listener(data.event as any as keyof D, this.data)\n }\n }\n\n this.addEventListener(String(CHANGE_EVENT), listener)\n\n return () => this.removeEventListener(String(CHANGE_EVENT), listener)\n\n }\n\n}\n\n/**\n * Get or create a memoized Context instance by name.\n * @param name - The context name.\n * @returns The Context instance.\n */\nexport const getContext = memoize((name: string) => new Context<any>(name))\n\n/**\n * Type alias for a function that returns a Context instance.\n */\nexport type getContext<D> = (e: string) => Context<D>\n\n/**\n * React hook to get a typed Context instance by name.\n * @param name - The context name.\n * @returns The Context instance.\n */\nexport const useDataContext = <D>(name: string = \"noname\") => {\n const ctx = useMemo(() => getContext(name), [name])\n useEffect(() => {\n ctx.useCounter += 1;\n return () => {\n ctx.useCounter -= 1;\n if (ctx.useCounter <= 0) {\n setTimeout(() => {\n if (ctx.useCounter <= 0) {\n getContext.cache.delete(JSON.stringify([name]))\n }\n }, 100)\n }\n }\n }, [ctx])\n\n return ctx as any as Context<D>\n}\n\n/**\n * Internal hook to check for duplicate registry entries in a context.\n * Warns if any of the provided names are already registered.\n * @param ctx - The context instance.\n * @param names - Names to check and register.\n */\nconst useRegistryChecker = (ctx: Context<any> | undefined, ...names: string[]) => {\n // return;\n const stack = new Error(\"[ctx] useRegistryChecker failed \" + JSON.stringify({ names, ctx: ctx?.name ?? 'undefined' }))\n\n useEffect(\n () => {\n if (ctx) {\n if (names.some(name => ctx.registry.has(name))) {\n // console.error(stack)\n }\n names.forEach(e => ctx.registry.add(e))\n\n // console.debug(\"[ctx] %s%s add datasource\", componentId, ctx.name, names)\n return () => {\n // console.debug(\"[ctx] %s %s remove datasource\", componentId, ctx.name, names)\n\n names.forEach(e => ctx.registry.delete(e))\n }\n }\n },\n [ctx, names.length]\n )\n\n}\n\n/**\n * React hook to publish a value to the context when it changes.\n * @param ctx - The context instance.\n * @param key - The key to update.\n * @param value - The new value.\n */\nexport const useDataSource = <D, K extends keyof D>(ctx: Context<D> | undefined, key: K, value: D[K] | undefined) => {\n //@ts-check\n useEffect(() => {\n if (ctx && ctx.data[key] != value) {\n\n ctx.publish(key, value)\n }\n }, [key, value, ctx])\n\n useRegistryChecker(ctx, key as any)\n}\n\n/**\n * React hook to subscribe to a context value, with optional debounce.\n * @param ctx - The context instance.\n * @param key - The key to subscribe to.\n * @param debounceTime - Debounce time in ms (default 0).\n * @returns The current value for the key.\n */\nexport const useDataSubscribe = <D, K extends keyof D>(ctx: Context<D> | undefined, key: K, debounceTime = 0): D[K] | undefined => {\n //@ts-check\n const [{ value }, setState] = useState(() => ({ value: ctx?.data?.[key] }))\n\n useEffect(() => {\n if (ctx) {\n let callback = debounceTime == 0\n ? (value: any) => setState({ value } as any)\n : debounce((value: any) => setState({ value } as any), debounceTime)\n let unsub = ctx.subscribe(key, callback)\n value != ctx.data[key] && setState({ value: ctx.data[key] })\n return () => {\n unsub()\n }\n }\n }, [key, ctx])\n\n return ctx?.data[key]\n}\n\n/**\n * React hook to subscribe to a context value and transform it before returning.\n * @param ctx - The context instance.\n * @param key - The key to subscribe to.\n * @param transform - Function to transform the value.\n * @returns The transformed value.\n */\nexport const useDataSubscribeWithTransform = <D, K extends keyof D, E>(ctx: Context<D> | undefined, key: K, transform: (e: D[K] | undefined) => E): E => {\n const [, setState] = useState(0)\n const result = useMemo(\n () => transform(ctx?.data[key]),\n [transform, ctx?.data[key]]\n )\n\n useEffect(() => {\n if (ctx) {\n let preValue = result\n let callback = () => {\n let newValue = transform(ctx.data[key])\n if (newValue != preValue) {\n preValue = newValue;\n setState(e => e + 1)\n };\n }\n let unsub = ctx.subscribe(key, callback)\n callback();\n return () => unsub()\n }\n }, [key, ctx])\n\n return result\n}\n\n/**\n * React hook to publish multiple values to the context.\n * @param ctx - The context instance.\n * @param entries - Array of [key, value] pairs to update.\n */\nexport const useDataSourceMultiple = <D, T extends readonly (keyof D)[]>(\n ctx: Context<D> | undefined,\n ...entries: { -readonly [P in keyof T]: [T[P], D[T[P]]] }\n) => {\n //@ts-check\n useEffect(() => {\n if (ctx) {\n for (let [key, value] of entries) {\n ctx.data[key] != value && ctx.publish(key, value)\n }\n }\n }, [ctx, useArrayChangeId(entries.flat())])\n\n useRegistryChecker(ctx, ...entries.map(e => e[0]) as any)\n\n}\n\n/**\n * React hook to subscribe to multiple context values.\n * @param ctx - The context instance.\n * @param keys - Keys to subscribe to.\n * @returns An object with the current values for the keys.\n */\nexport const useDataSubscribeMultiple = <D, K extends (keyof D)[]>(\n ctx: Context<D> | undefined,\n ...keys: K\n): { [i in keyof K]: D[K[i]] | undefined } => {\n const [, setCounter] = useState(0)\n\n const returnValues = keys.map(key => ctx?.data?.[key])\n\n useEffect(() => {\n if (ctx) {\n let prevValues = returnValues\n const callback = debounce(() => {\n let currentValues = keys.map(key => ctx?.data?.[key])\n if (keys.some((key, i) => prevValues[i] != currentValues[i])) {\n // console.log(\"DIFF\", keys.filter((e, i) => prevValues[i] != currentValues[i]))\n prevValues = currentValues\n setCounter(c => c + 1)\n }\n }, 1)\n\n let handles = keys.map(key => ctx.subscribe(key, callback))\n\n let firstCall = setTimeout(callback, 1);\n\n return () => {\n clearTimeout(firstCall)\n callback.cancel();\n handles.forEach(unsub => unsub())\n }\n\n }\n }, [ctx, ...keys])\n\n\n return Object\n .fromEntries(keys.map((key, index) => [key, returnValues[index]])) as any\n}\n\n/**\n * React hook to subscribe to multiple context values with throttling.\n * @param ctx - The context instance.\n * @param debounceTime - Debounce time in ms (default 50).\n * @param keys - Keys to subscribe to.\n * @returns Array of current values for the keys.\n */\nexport const useDataSubscribeMultipleWithDebounce = <D, K extends (keyof D)[]>(\n ctx: Context<D> | undefined,\n debounceTime = 50,\n ...keys: K\n): { [i in keyof K]: D[K[i]] | undefined } => {\n //@ts-check\n const [, setCounter] = useState(0)\n\n const returnValues = keys.map(key => ctx?.data?.[key])\n\n useEffect(() => {\n if (ctx) {\n let prevValues = returnValues\n const callback = debounce(() => {\n let currentValues = keys.map(key => ctx?.data?.[key])\n if (keys.some((key, i) => prevValues[i] != currentValues[i])) {\n prevValues = currentValues\n setCounter(c => c + 1)\n }\n }, debounceTime)\n\n let handles = keys.map(key => ctx.subscribe(key, callback))\n\n let firstCall = setTimeout(callback, 1);\n\n return () => {\n clearTimeout(firstCall)\n callback.cancel();\n handles.forEach(unsub => unsub())\n }\n\n }\n }, [ctx, ...keys])\n\n return returnValues as any\n}\n\n\n\n","\nexport type ParamsToIdRecord = Record<string, string | number | bigint | boolean | null | undefined>\nexport type ParamsToIdInput = ParamsToIdRecord | undefined\n\n/**\n * Converts a parameters object into a deterministic string identifier.\n * \n * This function creates a consistent string representation of parameters by:\n * - Sorting keys alphabetically to ensure deterministic output\n * - Validating that all values are primitive types\n * - Joining key-value pairs with '&' separator\n * \n * @param params - Object containing string, number, bigint, boolean, null, or undefined values.\n * Defaults to undefined if not provided.\n * @returns A string identifier in the format \"key1=value1&key2=value2\"\n * \n * @throws {Error} When any parameter value is an object (non-primitive type)\n * \n * @example\n * ```typescript\n * paramsToId({ name: \"john\", age: 30 }) // Returns \"age=30&name=john\"\n * paramsToId({ id: null, active: true }) // Returns \"active=true&id=null\"\n * paramsToId() // Returns \"\"\n * ```\n */\nexport const paramsToId = (params: ParamsToIdInput = undefined) => Object\n .keys(params ?? {})\n .sort()\n .map(key => {\n const value = params?.[key];\n if (\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\")\n ) {\n throw new Error(`Parameter \"${key}\" must be a primitive value (string, number, bigint, null, or undefined), but received ${typeof value}`)\n }\n return key + '=' + value\n })\n .join(\"&\");\n","import { useEffect, useMemo } from \"react\"\nimport { useDataContext, useDataSourceMultiple, type Context } from \"./ctx\"\nimport { paramsToId, type ParamsToIdRecord } from \"./paramsToId\"\n// import { debugObjTime } from \"./debugObjTime\"\n\n\n/**\n * createRootCtx\n *\n * Factory that creates a headless \"Root\" component and companion hooks for a context namespace.\n * It derives a unique context name from a base `name` and a props object `U`, then publishes\n * a computed state `V` (from `useFn`) to that context.\n *\n * Usage (manual mounting):\n * ```\n * const { Root, useCtxState } = createRootCtx('user-state', useUserState)\n * ...\n * // Mount exactly one Root per unique props combination\n * <Root userId={id} />\n * ...\n * // Read anywhere ,using the same props shape\n * const user = useCtxState({ userId: id })\n *```\n * Strict vs lenient consumers:\n * - useCtxStateStrict(props) throws if a matching Root is not mounted.\n * - useCtxState(props) logs an error (after 1s) instead of throwing.\n *\n * Multiple instances safety:\n * - Mounting more than one Root with the same resolved context name throws (guards accidental duplicates).\n *\n * Name resolution notes:\n * - The context name is built from `name` + sorted key/value pairs of `props` (U), joined by \"-\".\n * - Prefer stable, primitive props to avoid collisions; if you need automation, pair with `createAutoCtx` and\n * mount a single <AutoRootCtx Wrapper={ErrorBoundary} /> at the app root so you don't manually mount `Root`.\n */\nexport const createRootCtx = <U extends ParamsToIdRecord, V extends Record<string, unknown>>(name: string, useFn: (e: U) => V) => {\n\n const getCtxName = (e: U) => [name, paramsToId(e)]\n .filter(Boolean)\n .join(\"?\");\n\n const ctxMountedCheck = new Set<string>()\n\n const useRootState = (e: U) => {\n const state = useFn(e)\n const ctxName = getCtxName(e)\n const ctx = useDataContext<V>(ctxName)\n const stack = useMemo(() => new Error().stack, [])\n\n useDataSourceMultiple(\n ctx,\n ...Object.entries(state) as any\n )\n\n useEffect(() => {\n if (ctxMountedCheck.has(ctxName)) {\n const err = new Error(\"RootContext \" + ctxName + \" are mounted more than once\")\n err.stack = stack;\n throw err\n }\n ctxMountedCheck.add(ctxName)\n return () => { ctxMountedCheck.delete(ctxName) };\n })\n\n return state;\n }\n\n const Debug = ({ }) => <></>\n\n const RootState: React.FC<U> = (e: U) => {\n const state = useRootState(e);\n return <Debug {...e} {...state} />\n }\n\n useRootState.displayName = `useState[${name}]`\n RootState.displayName = `StateContainer[${name}]`\n Debug.displayName = `Debug[${name}]`\n\n return {\n name,\n getCtxName,\n useRootState,\n Root: RootState,\n /**\n * Strict consumer: throws if the corresponding Root for these props isn't mounted.\n * Use in development/tests to fail fast when wiring is incorrect.\n */\n useCtxStateStrict: (e: U): Context<V> => {\n const ctxName = getCtxName(e)\n\n const stack = useMemo(() => new Error().stack, [])\n\n useEffect(() => {\n if (!ctxMountedCheck.has(ctxName)) {\n const err = new Error(\"RootContext [\" + ctxName + \"] is not mounted\")\n err.stack = stack;\n throw err\n }\n }, [ctxName])\n\n return useDataContext<V>(ctxName)\n },\n /**\n * Lenient consumer: schedules a console.error if the Root isn't mounted instead of throwing.\n * Useful in production to avoid hard crashes while still surfacing misconfiguration.\n */\n useCtxState: (e: U): Context<V> => {\n const ctxName = getCtxName(e)\n\n const stack = useMemo(() => new Error().stack, [])\n\n useEffect(() => {\n if (!ctxMountedCheck.has(ctxName)) {\n const err = new Error(\"RootContext [\" + ctxName + \"] is not mounted\")\n err.stack = stack;\n let timeout = setTimeout(() => console.error(err), 1000)\n return () => clearTimeout(timeout)\n }\n }, [ctxMountedCheck.has(ctxName)])\n\n return useDataContext<V>(ctxName)\n }\n }\n}","import { useEffect, useState, Fragment, useCallback, useMemo, Activity } from \"react\"\nimport { useDataContext, useDataSourceMultiple, useDataSubscribe, type Context } from \"./ctx\"\nimport { createRootCtx } from \"./createRootCtx\"\nimport { paramsToId, type ParamsToIdRecord } from \"./paramsToId\"\n\n\n\nconst DebugState = ({ }) => <></>\n\nconst StateRunner: React.FC<{ useStateFn: Function, params: ParamsToIdRecord, debugging: boolean }> = ({ useStateFn, params, debugging }) => {\n const state = useStateFn(params)\n return debugging ? <DebugState {...state} /> : <></>\n}\n\n\n/**\n * Inline docs: createAutoCtx + AutoRootCtx\n *\n * Quick start\n * 1) Mount <AutoRootCtx /> ONCE near your app root. Provide a Wrapper that acts like an ErrorBoundary to isolate and log errors.\n * Example: <AutoRootCtx Wrapper={MyErrorBoundary} />\n *\n * 2) Create auto contexts from your root context factories:\n * ```\n * const { useCtxState: useTestCtxState } = createAutoCtx(createRootCtx('test-state', stateFn))\n * const { useCtxState: useOtherCtxState } = createAutoCtx(createRootCtx('other-state', otherFn))\n * ```\n * 3) Use them in components:\n * ```\n * const ctx = useTestCtxState({ userId })\n * const { property1, property2 } = useDataSubscribeMultiple(ctx,'property1','property2')\n * // No need to mount the Root returned by createRootCtx directly — AutoRootCtx manages it for you.\n * ```\n * Notes\n * - AutoRootCtx must be mounted before any useCtxState hooks created by createAutoCtx run.\n * - Wrapper should be an ErrorBoundary-like component that simply renders {children}; no extra providers or layout required.\n * - For each unique params object (by stable stringified key), AutoRootCtx ensures a corresponding Root instance is rendered.\n */\n\nexport const AutoRootCtx: React.FC<{ Wrapper?: React.FC<any>, debugging?: boolean }> = ({ Wrapper = Fragment, debugging = false }) => {\n\n const ctx = useDataContext<any>(\"auto-ctx\")\n\n const [state, setState] = useState<Record<string, {\n useStateFn: Function,\n params: ParamsToIdRecord,\n // paramKey: string,\n counter: number,\n keepUntil?: number\n }>>({})\n\n\n const subscribeRoot = useCallback(\n (contextName: string, useStateFn: Function, params: ParamsToIdRecord, timeToCleanState = 0) => {\n\n const recordKey = [contextName, paramsToId(params)].filter(Boolean).join(\"?\")\n\n\n setState(state => ({\n ...state,\n [recordKey]: {\n ...state[recordKey] ?? { useStateFn, params },\n counter: (state[recordKey]?.counter ?? 0) + 1,\n keepUntil: undefined,\n useStateFn,\n }\n }))\n\n return () => setState(({ [recordKey]: current, ...rest }) => ({\n ...rest,\n ...(current?.counter > 1 || timeToCleanState > 0) ? {\n [recordKey]: {\n ...current,\n counter: current.counter - 1,\n keepUntil: current.counter > 1 ? undefined : (Date.now() + timeToCleanState),\n }\n } : {}\n }))\n\n },\n []\n )\n\n const nextDelete = useMemo(() => Object.entries(state)\n .filter(([, { counter, keepUntil }]) => counter <= 0 && keepUntil)\n .toSorted(([, { keepUntil: k1 = 0 }], [, { keepUntil: k2 = 0 }]) => k1 - k2)\n ?.at(0),\n [state]\n )\n\n useEffect(() => {\n if (nextDelete) {\n const [key, { keepUntil }] = nextDelete\n if (typeof keepUntil == 'undefined')\n throw new Error(\"Invalid state mgr\")\n\n let t = setTimeout(() => {\n // console.log(\"Delay Cleaned\")\n setState(({ [key]: _, ...rest }) => rest)\n }, Math.max(0, keepUntil - Date.now()))\n return () => {\n // console.log(\"Cancel clean\")\n clearTimeout(t)\n };\n }\n }, [nextDelete])\n\n useDataSourceMultiple(ctx,\n [\"subscribe\", subscribeRoot],\n [\"state\", state],\n )\n\n return <>\n {Object\n .entries(state)\n .filter(([, { counter, keepUntil = 0 }]) => counter > 0 || keepUntil >= Date.now())\n .map(([key, { useStateFn, params }]) => <Wrapper key={key}>\n <StateRunner key={key} params={params} useStateFn={useStateFn} debugging={debugging} />\n </Wrapper>)}\n </>\n\n}\n\n/**\n * createAutoCtx\n *\n * Bridges a Root context (from createRootCtx) to the global AutoRootCtx renderer.\n * You do NOT mount the Root component yourself — just mount <AutoRootCtx /> once at the app root.\n *\n * Usage: \n * ```\n * const { useCtxState: useTestCtxState } = createAutoCtx(createRootCtx(\n * 'test-state', \n * stateFn\n * ))\n * const { useCtxState: useOtherCtxState } = createAutoCtx(createRootCtx(\n * 'other-state', \n * otherFn\n * ))\n * ```\n * \n * Then inside components:\n * ```\n * const ctxState = useTestCtxState({ any: 'params' })\n * ```\n * AutoRootCtx will subscribe/unsubscribe instances per unique params and render the appropriate Root under the hood.\n */\nexport const createAutoCtx = <U extends ParamsToIdRecord, V extends Record<string, unknown>>(\n { useRootState, getCtxName, name }: ReturnType<typeof createRootCtx<U, V>>,\n timeToClean = 0\n) => {\n\n return {\n\n useCtxState: (e: U): Context<V> => {\n\n const ctxName = getCtxName(e)\n\n const subscribe = useDataSubscribe(useDataContext<any>(\"auto-ctx\"), \"subscribe\")\n\n useEffect(\n () => subscribe?.(name, useRootState, e, timeToClean),\n [useRootState, subscribe, name, ctxName, timeToClean]\n )\n\n return useDataContext<V>(ctxName)\n }\n }\n}","\nimport { debounce } from \"./utils\";\nimport { useState, useMemo, useEffect } from \"react\";\nimport type { Context } from \"./ctx\";\n\n/**\n * useQuickSubscribe is a custom React hook for efficiently subscribing to specific properties of a context's data object.\n * \n * @template D - The shape of the context data.\n * @param {Context<D> | undefined} ctx - The context object containing data and a subscribe method.\n * @returns {Partial<D>} A proxy object that mirrors the context data, automatically subscribing to properties as they are accessed.\n *\n * This hook tracks which properties of the context data are accessed by the component and subscribes to updates for only those properties.\n * When any of the subscribed properties change, the hook triggers a re-render. Subscriptions are managed and cleaned up automatically\n * when the component unmounts or the context changes. This approach minimizes unnecessary re-renders and resource usage by only\n * subscribing to the data that the component actually uses.\n *\n * Example usage:\n * const {name} = useQuickSubscribe(userContext);\n * // Accessing name will subscribe to changes in 'name' only\n * return <div>{name}</div>;\n */\n\nexport const useQuickSubscribe = <D>(\n ctx: Context<D> | undefined\n): {\n [P in keyof D]?: D[P] | undefined;\n } => {\n\n const [, setCounter] = useState(0);\n\n const { proxy, finalGetter, openGetter, clean } = useMemo(\n () => {\n\n const allKeys = new Set<keyof D>()\n const allCompareValue: { [P in keyof D]?: D[P] | undefined; } = {}\n const allUnsub = new Map()\n\n const proxy = new Proxy(\n ctx?.data as any,\n {\n get(target, p) {\n if (isOpenGetter) {\n allKeys.add(p as keyof D)\n return allCompareValue[p as keyof D] = target[p];\n } else {\n throw new Error(\"useQuickSubscribe: Cannot access context data outside render phase. Destructure needed properties immediately during render.\");\n }\n },\n ownKeys(t) {\n console.warn(`useQuickSubscribe: Rest object operations aren't recommended as they bypass selective subscription and may cause performance issues`);\n return Reflect.ownKeys(t); // unchanged behavior\n },\n\n }\n ) as any\n\n let isOpenGetter = true;\n\n\n let onChange = debounce(() => {\n if ([...allKeys.values()]\n .some(k => allCompareValue[k] != ctx?.data?.[k])) {\n setCounter(c => c + 1)\n }\n }, 0)\n\n let openGetter = () => {\n isOpenGetter = true\n allKeys.clear()\n }\n\n let finalGetter = () => {\n isOpenGetter = false;\n\n [...allKeys.values()]\n .filter(k => !allUnsub.has(k))\n .forEach(k => {\n allUnsub.set(k, ctx?.subscribe(k, onChange))\n });\n\n [...allUnsub.keys()]\n .filter(k => !allKeys.has(k))\n .forEach(k => {\n let unsub = allUnsub.get(k)\n unsub?.();\n allUnsub.delete(k);\n });\n\n }\n\n let clean = () => {\n openGetter();\n finalGetter();\n setCounter(c => c + 1)\n }\n\n return { proxy, finalGetter, openGetter, clean }\n },\n [ctx]\n )\n\n openGetter();\n\n setTimeout(finalGetter, 0)\n\n useEffect(\n () => () => clean(),\n [clean]\n )\n\n return proxy;\n\n\n};\n","import React, { useContext, useMemo } from \"react\";\n\nexport function useHighlight(filterString: string) {\n const highlight = useMemo(\n () => filterString\n ? buildRegex(filterString\n .trim()\n .toLowerCase()\n .split(\" \"), 'gi')\n : undefined,\n [filterString]\n );\n return { highlight };\n}\n\nfunction escapeRegex(str: string) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction buildRegex(words: string[], flags = 'gi') {\n const pattern = words.map(escapeRegex).join('|');\n return new RegExp(`(${pattern})`, flags);\n}\n\nfunction markByToken(text: string, regex: RegExp) {\n const result = [];\n let last = 0;\n for (const match of text.matchAll(regex)) {\n const [m] = match;\n const start = match.index;\n if (start > last) result.push(text.slice(last, start));\n result.push(<mark key={start}>{m}</mark>);\n last = start + m.length;\n }\n if (last < text.length) result.push(text.slice(last));\n return result;\n}\n\nconst highlightCtx = React.createContext<{ highlight?: RegExp }>({\n highlight: undefined\n})\n\nexport const HightlightWrapper: React.FC<{ highlight: string, children: any }> = ({ children, highlight }) => {\n return <highlightCtx.Provider value={useHighlight(highlight)}>\n {children}\n </highlightCtx.Provider>\n}\n\nexport const HighlightString: React.FC<{ text: string; }> = ({ text }) => {\n const { highlight } = useContext(highlightCtx)\n\n const render = useMemo(\n () => highlight ? markByToken(text, highlight) : text,\n [text, highlight]\n );\n\n return <>{render}</>;\n\n};\n","import React, { useMemo } from \"react\";\n\n\nexport type DataViewComponent = React.FC<{ value: any; name: string; }>;\n\nexport const DataViewDefault: DataViewComponent = ({ name, value }) => {\n\n const renderString = useMemo(() => {\n try {\n return JSON.stringify({ [name]: value }, null, 2);\n } catch (error) {\n return String(error);\n }\n }, [name, value]);\n\n return <pre>{renderString}</pre>;\n};\n","import React, { useRef, useEffect } from \"react\";\nimport { getContext } from \"../state-utils/ctx\";\nimport { debounce } from \"../state-utils/utils\";\nimport { HighlightString } from \"./useHighlight\";\n\nexport const StateLabelRender: React.FC<any> = ({ selectedKey, setKey, currentKey, highlight, ...props }) => {\n const ctx = getContext(currentKey);\n const divRef = useRef<HTMLDivElement>(undefined);\n\n useEffect(() => {\n if (divRef.current) {\n let flashKeyDebounce = debounce(() => {\n if (divRef.current) {\n divRef.current?.classList.add(\"state-key-updated\");\n requestAnimationFrame(() => divRef.current?.classList.remove(\"state-key-updated\"));\n }\n }, 5);\n return ctx.subscribeAll(flashKeyDebounce);\n }\n\n }, [ctx, divRef]);\n\n return <div\n ref={divRef}\n className=\"state-key\"\n title={currentKey}\n data-active={currentKey == selectedKey}\n onClick={() => setKey(currentKey)}\n {...props}\n >\n <div className=\"state-key-name\">\n <HighlightString text={String(currentKey)} />\n </div>\n <div className=\"state-key-meta\">\n {Object.keys(ctx.data).length} items\n </div>\n </div>;\n};\n","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"prefixCls\", \"className\", \"children\", \"mode\", \"visiable\", \"visible\", \"renderBar\", \"lineBar\", \"disable\", \"onDragEnd\", \"onDragging\"];\nimport React from 'react';\nimport \"./style/index.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport default class Split extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n dragging: false\n };\n this.warpper = void 0;\n this.paneNumber = void 0;\n this.startX = void 0;\n this.startY = void 0;\n this.move = void 0;\n this.target = void 0;\n this.boxWidth = void 0;\n this.boxHeight = void 0;\n this.preWidth = void 0;\n this.nextWidth = void 0;\n this.preHeight = void 0;\n this.nextHeight = void 0;\n this.preSize = void 0;\n this.nextSize = void 0;\n this.onDragEnd = this.onDragEnd.bind(this);\n this.onDragging = this.onDragging.bind(this);\n }\n componentWillUnmount() {\n this.removeEvent();\n }\n removeEvent() {\n window.removeEventListener('mousemove', this.onDragging, false);\n window.removeEventListener('mouseup', this.onDragEnd, false);\n }\n onMouseDown(paneNumber, env) {\n if (!env.target || !this.warpper) {\n return;\n }\n this.paneNumber = paneNumber;\n this.startX = env.clientX;\n this.startY = env.clientY;\n this.move = true;\n this.target = env.target.parentNode;\n var prevTarget = this.target.previousElementSibling;\n var nextTarget = this.target.nextElementSibling;\n this.boxWidth = this.warpper.clientWidth;\n this.boxHeight = this.warpper.clientHeight;\n if (prevTarget) {\n this.preWidth = prevTarget.clientWidth;\n this.preHeight = prevTarget.clientHeight;\n }\n if (nextTarget) {\n this.nextWidth = nextTarget.clientWidth;\n this.nextHeight = nextTarget.clientHeight;\n }\n window.addEventListener('mousemove', this.onDragging);\n window.addEventListener('mouseup', this.onDragEnd, false);\n this.setState({\n dragging: true\n });\n }\n onDragging(env) {\n if (!this.move) {\n return;\n }\n if (!this.state.dragging) {\n this.setState({\n dragging: true\n });\n }\n var {\n mode,\n onDragging\n } = this.props;\n var nextTarget = this.target.nextElementSibling;\n var prevTarget = this.target.previousElementSibling;\n var x = env.clientX - this.startX;\n var y = env.clientY - this.startY;\n this.preSize = 0;\n this.nextSize = 0;\n if (mode === 'horizontal') {\n this.preSize = this.preWidth + x > -1 ? this.preWidth + x : 0;\n this.nextSize = this.nextWidth - x > -1 ? this.nextWidth - x : 0;\n if (this.preSize === 0 || this.nextSize === 0) {\n return;\n }\n this.preSize = (this.preSize / this.boxWidth >= 1 ? 1 : this.preSize / this.boxWidth) * 100;\n this.nextSize = (this.nextSize / this.boxWidth >= 1 ? 1 : this.nextSize / this.boxWidth) * 100;\n if (prevTarget && nextTarget) {\n prevTarget.style.width = this.preSize + \"%\";\n nextTarget.style.width = this.nextSize + \"%\";\n }\n }\n if (mode === 'vertical' && this.preHeight + y > -1 && this.nextHeight - y > -1) {\n this.preSize = this.preHeight + y > -1 ? this.preHeight + y : 0;\n this.nextSize = this.nextHeight - y > -1 ? this.nextHeight - y : 0;\n this.preSize = (this.preSize / this.boxHeight >= 1 ? 1 : this.preSize / this.boxHeight) * 100;\n this.nextSize = (this.nextSize / this.boxHeight >= 1 ? 1 : this.nextSize / this.boxHeight) * 100;\n if (this.preSize === 0 || this.nextSize === 0) {\n return;\n }\n if (prevTarget && nextTarget) {\n prevTarget.style.height = this.preSize + \"%\";\n nextTarget.style.height = this.nextSize + \"%\";\n }\n }\n onDragging && onDragging(this.preSize, this.nextSize, this.paneNumber);\n }\n onDragEnd() {\n var {\n onDragEnd\n } = this.props;\n this.move = false;\n onDragEnd && onDragEnd(this.preSize, this.nextSize, this.paneNumber);\n this.removeEvent();\n this.setState({\n dragging: false\n });\n }\n render() {\n var _this$props$visible;\n var _this$props = this.props,\n {\n prefixCls,\n className,\n children,\n mode,\n visible = (_this$props$visible = this.props.visible) != null ? _this$props$visible : this.props.visiable,\n renderBar,\n lineBar,\n disable\n } = _this$props,\n other = _objectWithoutPropertiesLoose(_this$props, _excluded);\n var {\n dragging\n } = this.state;\n var cls = [prefixCls, className, prefixCls + \"-\" + mode, dragging ? 'dragging' : null].filter(Boolean).join(' ').trim();\n var child = React.Children.toArray(children);\n return /*#__PURE__*/_jsx(\"div\", _extends({\n className: cls\n }, other, {\n ref: node => this.warpper = node,\n children: React.Children.map(child, (element, idx) => {\n var props = Object.assign({}, element.props, {\n className: [prefixCls + \"-pane\", element.props.className].filter(Boolean).join(' ').trim(),\n style: _extends({}, element.props.style)\n });\n var visibleBar = visible === true || visible && visible.includes(idx + 1) || false;\n var barProps = {\n className: [prefixCls + \"-bar\", lineBar ? prefixCls + \"-line-bar\" : null, !lineBar ? prefixCls + \"-large-bar\" : null].filter(Boolean).join(' ').trim()\n };\n if (disable === true || disable && disable.includes(idx + 1)) {\n barProps.className = [barProps.className, disable ? 'disable' : null].filter(Boolean).join(' ').trim();\n }\n var BarCom = null;\n if (idx !== 0 && visibleBar && renderBar) {\n BarCom = renderBar(_extends({}, barProps, {\n onMouseDown: this.onMouseDown.bind(this, idx + 1)\n }));\n } else if (idx !== 0 && visibleBar) {\n BarCom = /*#__PURE__*/React.createElement('div', _extends({}, barProps), /*#__PURE__*/_jsx(\"div\", {\n onMouseDown: this.onMouseDown.bind(this, idx + 1)\n }));\n }\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [BarCom, /*#__PURE__*/React.cloneElement(element, _extends({}, props))]\n }, idx);\n })\n }));\n }\n}\nSplit.defaultProps = {\n prefixCls: 'w-split',\n visiable: true,\n mode: 'horizontal'\n};","import React, { useEffect, useMemo, useState } from \"react\"\nimport { getContext } from \"../state-utils/ctx\"\nimport { debounce } from \"../state-utils/utils\"\nimport { HightlightWrapper } from \"./useHighlight\"\nimport { DataViewComponent, DataViewDefault } from \"./DataViewComponent\"\nimport { StateLabelRender } from \"./StateLabelRender\"\nimport Split from \"@uiw/react-split\"\nimport \"./DevTool.css\"\n\nconst cache = getContext.cache\n\nexport const DevToolState: React.FC<{ Component: DataViewComponent }> = ({ Component }) => {\n const [allKeys, setKeys] = useState(() => [...cache.keys()])\n const [filterString, setFilterString] = useState(\"\")\n const [selectedKey, setKey] = useState(\"\")\n\n useEffect(() => {\n let t = setInterval(() => {\n setKeys(k => k.length != cache.size\n ? [...cache.keys()]\n : k\n )\n }, 50)\n return () => clearInterval(t)\n }, [cache])\n\n const filterFn = useMemo(\n () => {\n const preFilter = filterString\n .toLowerCase()\n .split(\" \")\n return (e: string) => {\n const sLow = e.toLowerCase()\n return preFilter.every(token => sLow.includes(token))\n }\n },\n [filterString]\n )\n\n\n return <Split mode=\"horizontal\" className=\"main-panel\">\n <div className=\"state-list\">\n <input\n placeholder=\"Type to Filter ...\"\n className=\"state-filter\"\n value={filterString}\n onChange={(ev) => setFilterString(ev.target.value)}\n />\n <HightlightWrapper highlight={filterString}>\n {allKeys\n .map(e => JSON.parse(e)?.[0])\n .filter(e => e != \"auto-ctx\" && e)\n .filter(filterFn)\n .map(currentKey => <StateLabelRender key={currentKey} {...{ selectedKey, setKey, currentKey }} />)}\n </HightlightWrapper>\n\n </div>\n <div className=\"state-view\" >\n <StateView dataKey={selectedKey} key={selectedKey} Component={Component} />\n </div>\n </Split>\n}\n\nexport const StateView: React.FC<{ dataKey: string, Component: DataViewComponent }> = ({ dataKey, Component = DataViewDefault }) => {\n const ctx = getContext(dataKey)\n const [currentData, setCurrentData] = useState({ ...ctx?.data })\n\n useEffect(() => {\n let updateDataDebounce = debounce(setCurrentData, 5)\n return ctx\n .subscribeAll((changeKey, newData) => updateDataDebounce({ ...newData }))\n\n }, [ctx])\n\n return <Component\n value={currentData}\n name={dataKey}\n />\n}\n","import \"./DevTool.css\"\nimport { useState } from \"react\"\nimport { DevToolState } from \"./DevToolState\";\nimport { DataViewDefault } from \"./DataViewComponent\";\nimport Split from '@uiw/react-split';\n\n\nexport const DevToolContainer = ({ toggleButton = \"[x]\", Component = DataViewDefault, ...props }) => {\n const [active, setActive] = useState(false);\n return <>\n <button className=\"react-state-dev-btn\" data-active={active} onClick={() => setActive(true)} {...props}>\n {props?.children ?? \"Toggle Dev Tool\"}\n </button>\n <div className=\"react-state-dev-container\">\n <Split mode=\"vertical\" style={{ height: \"100%\" }}>\n <div style={{ height: active ? \"66.66%\" : \"100%\" }}></div>\n <div className=\"react-state-dev-panel\" style={{\n height: active ? \"33.33%\" : \"0\",\n backgroundColor: \"var(--rs-bg-color)\",\n position: \"relative\"\n }}>\n {active && <button\n className=\"close-btn\"\n onClick={() => setActive(false)}\n >\n [x]\n </button>}\n {active && <DevToolState Component={Component} />}\n </div>\n </Split>\n </div>\n </>\n}"],"names":["ReactSharedInternals","require$$0","reactCompilerRuntime_production","size","reactCompilerRuntime_development","dispatcher","compilerRuntimeModule","require$$1","debounce","func","wait","timeout","fn","args","clearTimeout","setTimeout","cancel","memoize","cache","Map","cachedFunc","key","JSON","stringify","has","get","result","set","randomHash","Math","random","toString","slice","useArrayChangeId","e","ref","useRef","values","id","isDiff","current","length","some","f","i","CHANGE_EVENT","DataEvent","Event","constructor","event","value","String","ChangeEvent","Context","EventTarget","name","data","registry","Set","useCounter","publish","dispatchEvent","subscribe","_listener","listener","addEventListener","removeEventListener","subscribeAll","getContext","useDataContext","ctx","useMemo","useEffect","delete","useRegistryChecker","t0","$","_c","names","Error","t1","forEach","add","e_0","t2","useDataSource","useDataSubscribe","debounceTime","undefined","setState","useState","t3","callback","value_0","value_1","unsub","t4","useDataSubscribeWithTransform","transform","preValue","newValue","useDataSourceMultiple","entries","flat","map","useDataSubscribeMultiple","keys","setCounter","returnValues","prevValues","currentValues","key_0","key_1","_temp","handles","key_2","firstCall","_temp2","t5","key_3","index","Object","fromEntries","useDataSubscribeMultipleWithDebounce","_temp3","_temp4","c","paramsToId","params","sort","join","createRootCtx","useFn","getCtxName","filter","Boolean","ctxMountedCheck","useRootState","state","ctxName","Symbol","for","stack","err","Debug","jsx","Fragment","RootState","displayName","Root","useCtxStateStrict","useCtxState","console","error","DebugState","StateRunner","useStateFn","debugging","AutoRootCtx","Wrapper","subscribeRoot","useCallback","contextName","timeToCleanState","recordKey","counter","keepUntil","rest","Date","now","nextDelete","toSorted","k1","k2","at","t","_","max","createAutoCtx","timeToClean","useQuickSubscribe","proxy","finalGetter","openGetter","clean","allKeys","allCompareValue","allUnsub","Proxy","target","p","isOpenGetter","ownKeys","warn","Reflect","onChange","k","clear","useHighlight","filterString","buildRegex","trim","toLowerCase","split","highlight","escapeRegex","str","replace","words","flags","pattern","RegExp","markByToken","text","regex","last","match","matchAll","m","start","push","highlightCtx","React","createContext","HightlightWrapper","children","HighlightString","useContext","render","DataViewDefault","renderString","StateLabelRender","currentKey","props","selectedKey","setKey","divRef","flashKeyDebounce","classList","requestAnimationFrame","remove","t6","t7","t8","t9","jsxs","t10","_extends","r","_objectWithoutPropertiesLoose","n","_excluded","Split","paneNumber","env","prevTarget","nextTarget","mode","onDragging","x","y","onDragEnd","_this$props$visible","_this$props","prefixCls","className","visible","renderBar","lineBar","disable","other","dragging","cls","child","_jsx","node","element","idx","visibleBar","barProps","BarCom","_jsxs","DevToolState","Component","setKeys","setFilterString","setInterval","clearInterval","preFilter","sLow","every","token","includes","filterFn","ev","StateView","t11","dataKey","currentData","setCurrentData","updateDataDebounce","changeKey","newData","parse","e_1","DevToolContainer","toggleButton","active","setActive","height","backgroundColor","position","t12","t13","t14","t15"],"mappings":"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","x_google_ignoreList":[0,1,2,13,14,15]}
1
+ {"version":3,"file":"index.es.js","sources":["../node_modules/react/cjs/react-compiler-runtime.production.js","../node_modules/react/cjs/react-compiler-runtime.development.js","../node_modules/react/compiler-runtime.js","../src/state-utils/utils.ts","../src/state-utils/useArrayChangeId.ts","../src/state-utils/ctx.ts","../src/state-utils/paramsToId.tsx","../src/state-utils/createRootCtx.tsx","../src/state-utils/createAutoCtx.tsx","../src/state-utils/useQuickSubscribe.ts","../src/dev-tool/useHighlight.tsx","../src/dev-tool/DataViewComponent.tsx","../src/dev-tool/StateLabelRender.tsx","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@uiw/react-split/esm/index.js","../src/dev-tool/DevToolState.tsx","../src/dev-tool/DevTool.tsx"],"sourcesContent":["/**\n * @license React\n * react-compiler-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nexports.c = function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n};\n","/**\n * @license React\n * react-compiler-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n var ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n exports.c = function (size) {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher.useMemoCache(size);\n };\n })();\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-compiler-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-compiler-runtime.development.js');\n}\n","// Debounce function\nexport function debounce<T extends (...args: any[]) => any>(\n func: T,\n wait: number\n): ((...args: Parameters<T>) => void) & { cancel: any } {\n let timeout: ReturnType<typeof setTimeout> | null = null;\n\n let fn: Function & { cancel: any } = function (...args: Parameters<T>): void {\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n func(...args);\n }, wait);\n } as any;\n\n fn.cancel = () => clearTimeout(timeout!);\n\n return fn as any;\n}\n\n// Memoize function\nexport function memoize<T extends (...args: any[]) => any>(\n func: T\n): ((...args: Parameters<T>) => ReturnType<T>) & { cache: Map<string, ReturnType<T>> } {\n \n const cache = new Map<string, ReturnType<T>>();\n\n const cachedFunc: any = function (...args: Parameters<T>): ReturnType<T> {\n const key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key) as ReturnType<T>;\n }\n const result = func(...args);\n cache.set(key, result);\n return result;\n }\n\n cachedFunc.cache = cache;\n\n return cachedFunc\n}\n\n","import { useRef } from \"react\"\n\n\nconst randomHash = () => Math.random().toString().slice(2)\n\n/**\n * useArrayChangeId\n *\n * A custom hook that generates a stable change identifier for an array of values.\n * The identifier changes only when the array's contents differ from the previous call.\n *\n * @param e - The input array to track.\n * @returns A string identifier that updates when the array changes.\n *\n * How it works:\n * - Tracks the previous array and its identifier using a `useRef`.\n * - Compares the new array to the previous one by length and element equality (shallow comparison).\n * - If any difference is detected, generates a new random identifier.\n * \n * Note: Uses shallow comparison - compares array length and element references using `!=`.\n * For objects and nested arrays, only references are compared, not deep values.\n */\nexport const useArrayChangeId = (e: any[]): string => {\n const ref = useRef<{ values: any[]; id: string }>({\n values: [],\n id: randomHash()\n })\n\n // Check for differences in array existence, length, or elements\n let isDiff = false\n isDiff = isDiff || ((!e) != (!ref.current.values))\n isDiff = isDiff || (e?.length != ref.current.values?.length)\n isDiff = isDiff || (e?.some((f, i) => f != ref.current.values[i]))\n\n // Update the identifier if differences are found\n if (isDiff) {\n ref.current.values = e\n ref.current.id = randomHash()\n }\n\n return ref.current.id\n}","import { debounce, memoize } from \"./utils\";\nimport { useEffect, useMemo, useState } from \"react\"\nimport { useArrayChangeId } from \"./useArrayChangeId\"\n\n\n\nconst CHANGE_EVENT = \"@--change-event\"\n\nclass DataEvent<D> extends Event {\n constructor(\n public event: keyof D,\n public value: D[typeof event] | undefined\n ) {\n super(String(event));\n }\n}\n\nclass ChangeEvent<D> extends Event {\n constructor(\n public value: DataEvent<D>\n ) {\n super(CHANGE_EVENT, value);\n }\n}\n\n/**\n * Generic context for managing shared state and event subscriptions.\n * @template D - The shape of the data managed by the context.\n */\nexport class Context<D> extends EventTarget {\n /**\n * Create a new Context instance.\n * @param name - The name of the context (for debugging).\n */\n constructor(public name: string) {\n // console.log(\"[CONTEXT] %s\", name)\n // this.event.setMaxListeners(100)\n super();\n }\n\n /**\n * The current data held by the context.\n */\n public data: Partial<D> = {}\n /**\n * Registry for tracking active keys (for duplicate detection).\n */\n public registry = new Set<string>()\n\n public useCounter = 0\n\n /**\n * Publish a value to the context and notify subscribers if it changed.\n * @param key - The key to update.\n * @param value - The new value.\n */\n public publish(key: keyof D, value: D[typeof key] | undefined) {\n\n if (value != this.data[key]) {\n this.data[key] = value\n let event = new DataEvent(key, value);\n this.dispatchEvent(event);\n this.dispatchEvent(new ChangeEvent(event))\n }\n }\n\n /**\n * Subscribe to changes for a specific key in the context.\n * @param key - The key to subscribe to.\n * @param _listener - Callback invoked with the new value.\n * @returns Unsubscribe function.\n */\n public subscribe(key: keyof D, _listener: (e: D[typeof key] | undefined) => void) {\n\n const listener = ({ event, value }: any) => {\n _listener(value)\n }\n\n this.addEventListener(String(key), listener)\n // console.log(\"listenerCount:\", String(key), this.event.listenerCount(String(key)))\n\n if (key in this.data) _listener(this.data[key])\n\n return () => this.removeEventListener(String(key), listener)\n }\n\n public subscribeAll(_listener: (changeKey: keyof D, newData: Partial<D>) => void) {\n\n const listener = (event: any) => {\n if (event instanceof ChangeEvent) {\n const { value: data } = event\n _listener(data.event as any as keyof D, this.data)\n }\n }\n\n this.addEventListener(String(CHANGE_EVENT), listener)\n\n return () => this.removeEventListener(String(CHANGE_EVENT), listener)\n\n }\n\n}\n\n/**\n * Get or create a memoized Context instance by name.\n * @param name - The context name.\n * @returns The Context instance.\n */\nexport const getContext = memoize((name: string) => new Context<any>(name))\n\n/**\n * Type alias for a function that returns a Context instance.\n */\nexport type getContext<D> = (e: string) => Context<D>\n\n/**\n * React hook to get a typed Context instance by name.\n * @param name - The context name.\n * @returns The Context instance.\n */\nexport const useDataContext = <D>(name: string = \"noname\") => {\n const ctx = useMemo(() => getContext(name), [name])\n useEffect(() => {\n ctx.useCounter += 1;\n return () => {\n ctx.useCounter -= 1;\n if (ctx.useCounter <= 0) {\n setTimeout(() => {\n if (ctx.useCounter <= 0) {\n getContext.cache.delete(JSON.stringify([name]))\n }\n }, 100)\n }\n }\n }, [ctx])\n\n return ctx as any as Context<D>\n}\n\n/**\n * Internal hook to check for duplicate registry entries in a context.\n * Warns if any of the provided names are already registered.\n * @param ctx - The context instance.\n * @param names - Names to check and register.\n */\nconst useRegistryChecker = (ctx: Context<any> | undefined, ...names: string[]) => {\n // return;\n const stack = new Error(\"[ctx] useRegistryChecker failed \" + JSON.stringify({ names, ctx: ctx?.name ?? 'undefined' }))\n\n useEffect(\n () => {\n if (ctx) {\n if (names.some(name => ctx.registry.has(name))) {\n // console.error(stack)\n }\n names.forEach(e => ctx.registry.add(e))\n\n // console.debug(\"[ctx] %s%s add datasource\", componentId, ctx.name, names)\n return () => {\n // console.debug(\"[ctx] %s %s remove datasource\", componentId, ctx.name, names)\n\n names.forEach(e => ctx.registry.delete(e))\n }\n }\n },\n [ctx, names.length]\n )\n\n}\n\n/**\n * React hook to publish a value to the context when it changes.\n * @param ctx - The context instance.\n * @param key - The key to update.\n * @param value - The new value.\n */\nexport const useDataSource = <D, K extends keyof D>(ctx: Context<D> | undefined, key: K, value: D[K] | undefined) => {\n //@ts-check\n useEffect(() => {\n if (ctx && ctx.data[key] != value) {\n\n ctx.publish(key, value)\n }\n }, [key, value, ctx])\n\n useRegistryChecker(ctx, key as any)\n}\n\n/**\n * React hook to subscribe to a context value, with optional debounce.\n * @param ctx - The context instance.\n * @param key - The key to subscribe to.\n * @param debounceTime - Debounce time in ms (default 0).\n * @returns The current value for the key.\n */\nexport const useDataSubscribe = <D, K extends keyof D>(ctx: Context<D> | undefined, key: K, debounceTime = 0): D[K] | undefined => {\n //@ts-check\n const [{ value }, setState] = useState(() => ({ value: ctx?.data?.[key] }))\n\n useEffect(() => {\n if (ctx) {\n let callback = debounceTime == 0\n ? (value: any) => setState({ value } as any)\n : debounce((value: any) => setState({ value } as any), debounceTime)\n let unsub = ctx.subscribe(key, callback)\n value != ctx.data[key] && setState({ value: ctx.data[key] })\n return () => {\n unsub()\n }\n }\n }, [key, ctx])\n\n return ctx?.data[key]\n}\n\n/**\n * React hook to subscribe to a context value and transform it before returning.\n * @param ctx - The context instance.\n * @param key - The key to subscribe to.\n * @param transform - Function to transform the value.\n * @returns The transformed value.\n */\nexport const useDataSubscribeWithTransform = <D, K extends keyof D, E>(ctx: Context<D> | undefined, key: K, transform: (e: D[K] | undefined) => E): E => {\n const [, setState] = useState(0)\n const result = useMemo(\n () => transform(ctx?.data[key]),\n [transform, ctx?.data[key]]\n )\n\n useEffect(() => {\n if (ctx) {\n let preValue = result\n let callback = () => {\n let newValue = transform(ctx.data[key])\n if (newValue != preValue) {\n preValue = newValue;\n setState(e => e + 1)\n };\n }\n let unsub = ctx.subscribe(key, callback)\n callback();\n return () => unsub()\n }\n }, [key, ctx])\n\n return result\n}\n\n/**\n * React hook to publish multiple values to the context.\n * @param ctx - The context instance.\n * @param entries - Array of [key, value] pairs to update.\n */\nexport const useDataSourceMultiple = <D, T extends readonly (keyof D)[]>(\n ctx: Context<D> | undefined,\n ...entries: { -readonly [P in keyof T]: [T[P], D[T[P]]] }\n) => {\n //@ts-check\n useEffect(() => {\n if (ctx) {\n for (let [key, value] of entries) {\n ctx.data[key] != value && ctx.publish(key, value)\n }\n }\n }, [ctx, useArrayChangeId(entries.flat())])\n\n useRegistryChecker(ctx, ...entries.map(e => e[0]) as any)\n\n}\n\n/**\n * React hook to subscribe to multiple context values.\n * @param ctx - The context instance.\n * @param keys - Keys to subscribe to.\n * @returns An object with the current values for the keys.\n */\nexport const useDataSubscribeMultiple = <D, K extends readonly (keyof D)[]>(\n ctx: Context<D> | undefined,\n ...keys: K\n): { [P in K[number]]: D[P] | undefined } => {\n const [, setCounter] = useState(0)\n\n const returnValues = keys.map(key => ctx?.data?.[key])\n\n useEffect(() => {\n if (ctx) {\n let prevValues = returnValues\n const callback = debounce(() => {\n let currentValues = keys.map(key => ctx?.data?.[key])\n if (keys.some((key, i) => prevValues[i] != currentValues[i])) {\n // console.log(\"DIFF\", keys.filter((e, i) => prevValues[i] != currentValues[i]))\n prevValues = currentValues\n setCounter(c => c + 1)\n }\n }, 1)\n\n let handles = keys.map(key => ctx.subscribe(key, callback))\n\n let firstCall = setTimeout(callback, 1);\n\n return () => {\n clearTimeout(firstCall)\n callback.cancel();\n handles.forEach(unsub => unsub())\n }\n\n }\n }, [ctx, ...keys])\n\n\n return Object\n .fromEntries(keys.map((key, index) => [key, returnValues[index]])) as any\n}\n\n/**\n * React hook to subscribe to multiple context values with throttling.\n * @param ctx - The context instance.\n * @param debounceTime - Debounce time in ms (default 50).\n * @param keys - Keys to subscribe to.\n * @returns Array of current values for the keys.\n */\nexport const useDataSubscribeMultipleWithDebounce = <D, K extends (keyof D)[]>(\n ctx: Context<D> | undefined,\n debounceTime = 50,\n ...keys: K\n): { [i in keyof K]: D[K[i]] | undefined } => {\n //@ts-check\n const [, setCounter] = useState(0)\n\n const returnValues = keys.map(key => ctx?.data?.[key])\n\n useEffect(() => {\n if (ctx) {\n let prevValues = returnValues\n const callback = debounce(() => {\n let currentValues = keys.map(key => ctx?.data?.[key])\n if (keys.some((key, i) => prevValues[i] != currentValues[i])) {\n prevValues = currentValues\n setCounter(c => c + 1)\n }\n }, debounceTime)\n\n let handles = keys.map(key => ctx.subscribe(key, callback))\n\n let firstCall = setTimeout(callback, 1);\n\n return () => {\n clearTimeout(firstCall)\n callback.cancel();\n handles.forEach(unsub => unsub())\n }\n\n }\n }, [ctx, ...keys])\n\n return returnValues as any\n}\n\n\n\n","\nexport type ParamsToIdRecord = Record<string, string | number | bigint | boolean | null | undefined>\nexport type ParamsToIdInput = ParamsToIdRecord | undefined\n\n/**\n * Converts a parameters object into a deterministic string identifier.\n * \n * This function creates a consistent string representation of parameters by:\n * - Sorting keys alphabetically to ensure deterministic output\n * - Validating that all values are primitive types\n * - Joining key-value pairs with '&' separator\n * \n * @param params - Object containing string, number, bigint, boolean, null, or undefined values.\n * Defaults to undefined if not provided.\n * @returns A string identifier in the format \"key1=value1&key2=value2\"\n * \n * @throws {Error} When any parameter value is an object (non-primitive type)\n * \n * @example\n * ```typescript\n * paramsToId({ name: \"john\", age: 30 }) // Returns \"age=30&name=john\"\n * paramsToId({ id: null, active: true }) // Returns \"active=true&id=null\"\n * paramsToId() // Returns \"\"\n * ```\n */\nexport const paramsToId = (params: ParamsToIdInput = undefined) => Object\n .keys(params ?? {})\n .sort()\n .map(key => {\n const value = params?.[key];\n if (\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\")\n ) {\n throw new Error(`Parameter \"${key}\" must be a primitive value (string, number, bigint, null, or undefined), but received ${typeof value}`)\n }\n return key + '=' + value\n })\n .join(\"&\");\n","import { useEffect, useMemo } from \"react\"\nimport { useDataContext, useDataSourceMultiple, type Context } from \"./ctx\"\nimport { paramsToId, type ParamsToIdRecord } from \"./paramsToId\"\n// import { debugObjTime } from \"./debugObjTime\"\n\n\n/**\n * createRootCtx\n *\n * Factory that creates a headless \"Root\" component and companion hooks for a context namespace.\n * It derives a unique context name from a base `name` and a props object `U`, then publishes\n * a computed state `V` (from `useFn`) to that context.\n *\n * Usage (manual mounting):\n * ```\n * const { Root, useCtxState } = createRootCtx('user-state', useUserState)\n * ...\n * // Mount exactly one Root per unique props combination\n * <Root userId={id} />\n * ...\n * // Read anywhere ,using the same props shape\n * const user = useCtxState({ userId: id })\n *```\n * Strict vs lenient consumers:\n * - useCtxStateStrict(props) throws if a matching Root is not mounted.\n * - useCtxState(props) logs an error (after 1s) instead of throwing.\n *\n * Multiple instances safety:\n * - Mounting more than one Root with the same resolved context name throws (guards accidental duplicates).\n *\n * Name resolution notes:\n * - The context name is built from `name` + sorted key/value pairs of `props` (U), joined by \"-\".\n * - Prefer stable, primitive props to avoid collisions; if you need automation, pair with `createAutoCtx` and\n * mount a single <AutoRootCtx Wrapper={ErrorBoundary} /> at the app root so you don't manually mount `Root`.\n */\nexport const createRootCtx = <U extends ParamsToIdRecord, V extends Record<string, unknown>>(name: string, useFn: (e: U) => V) => {\n\n const getCtxName = (e: U) => [name, paramsToId(e)]\n .filter(Boolean)\n .join(\"?\");\n\n const ctxMountedCheck = new Set<string>()\n\n const useRootState = (e: U) => {\n const state = useFn(e)\n const ctxName = getCtxName(e)\n const ctx = useDataContext<V>(ctxName)\n const stack = useMemo(() => new Error().stack, [])\n\n useDataSourceMultiple(\n ctx,\n ...Object.entries(state) as any\n )\n\n useEffect(() => {\n if (ctxMountedCheck.has(ctxName)) {\n const err = new Error(\"RootContext \" + ctxName + \" are mounted more than once\")\n err.stack = stack;\n throw err\n }\n ctxMountedCheck.add(ctxName)\n return () => { ctxMountedCheck.delete(ctxName) };\n })\n\n return state;\n }\n\n const Debug = ({ }) => <></>\n\n const RootState: React.FC<U> = (e: U) => {\n const state = useRootState(e);\n return <Debug {...e} {...state} />\n }\n\n useRootState.displayName = `useState[${name}]`\n RootState.displayName = `StateContainer[${name}]`\n Debug.displayName = `Debug[${name}]`\n\n return {\n name,\n getCtxName,\n useRootState,\n Root: RootState,\n /**\n * Strict consumer: throws if the corresponding Root for these props isn't mounted.\n * Use in development/tests to fail fast when wiring is incorrect.\n */\n useCtxStateStrict: (e: U): Context<V> => {\n const ctxName = getCtxName(e)\n\n const stack = useMemo(() => new Error().stack, [])\n\n useEffect(() => {\n if (!ctxMountedCheck.has(ctxName)) {\n const err = new Error(\"RootContext [\" + ctxName + \"] is not mounted\")\n err.stack = stack;\n throw err\n }\n }, [ctxName])\n\n return useDataContext<V>(ctxName)\n },\n /**\n * Lenient consumer: schedules a console.error if the Root isn't mounted instead of throwing.\n * Useful in production to avoid hard crashes while still surfacing misconfiguration.\n */\n useCtxState: (e: U): Context<V> => {\n const ctxName = getCtxName(e)\n\n const stack = useMemo(() => new Error().stack, [])\n\n useEffect(() => {\n if (!ctxMountedCheck.has(ctxName)) {\n const err = new Error(\"RootContext [\" + ctxName + \"] is not mounted\")\n err.stack = stack;\n let timeout = setTimeout(() => console.error(err), 1000)\n return () => clearTimeout(timeout)\n }\n }, [ctxMountedCheck.has(ctxName)])\n\n return useDataContext<V>(ctxName)\n }\n }\n}","import { useEffect, useState, Fragment, useCallback, useMemo, Activity } from \"react\"\nimport { useDataContext, useDataSourceMultiple, useDataSubscribe, type Context } from \"./ctx\"\nimport { createRootCtx } from \"./createRootCtx\"\nimport { paramsToId, type ParamsToIdRecord } from \"./paramsToId\"\n\n\n\nconst DebugState = ({ }) => <></>\n\nconst StateRunner: React.FC<{ useStateFn: Function, params: ParamsToIdRecord, debugging: boolean }> = ({ useStateFn, params, debugging }) => {\n const state = useStateFn(params)\n return debugging ? <DebugState {...state} /> : <></>\n}\n\n\n/**\n * Inline docs: createAutoCtx + AutoRootCtx\n *\n * Quick start\n * 1) Mount <AutoRootCtx /> ONCE near your app root. Provide a Wrapper that acts like an ErrorBoundary to isolate and log errors.\n * Example: <AutoRootCtx Wrapper={MyErrorBoundary} />\n *\n * 2) Create auto contexts from your root context factories:\n * ```\n * const { useCtxState: useTestCtxState } = createAutoCtx(createRootCtx('test-state', stateFn))\n * const { useCtxState: useOtherCtxState } = createAutoCtx(createRootCtx('other-state', otherFn))\n * ```\n * 3) Use them in components:\n * ```\n * const ctx = useTestCtxState({ userId })\n * const { property1, property2 } = useDataSubscribeMultiple(ctx,'property1','property2')\n * // No need to mount the Root returned by createRootCtx directly — AutoRootCtx manages it for you.\n * ```\n * Notes\n * - AutoRootCtx must be mounted before any useCtxState hooks created by createAutoCtx run.\n * - Wrapper should be an ErrorBoundary-like component that simply renders {children}; no extra providers or layout required.\n * - For each unique params object (by stable stringified key), AutoRootCtx ensures a corresponding Root instance is rendered.\n */\n\nexport const AutoRootCtx: React.FC<{ Wrapper?: React.FC<any>, debugging?: boolean }> = ({ Wrapper = Fragment, debugging = false }) => {\n\n const ctx = useDataContext<any>(\"auto-ctx\")\n\n const [state, setState] = useState<Record<string, {\n useStateFn: Function,\n params: ParamsToIdRecord,\n // paramKey: string,\n counter: number,\n keepUntil?: number\n }>>({})\n\n\n const subscribeRoot = useCallback(\n (contextName: string, useStateFn: Function, params: ParamsToIdRecord, timeToCleanState = 0) => {\n\n const recordKey = [contextName, paramsToId(params)].filter(Boolean).join(\"?\")\n\n\n setState(state => ({\n ...state,\n [recordKey]: {\n ...state[recordKey] ?? { useStateFn, params },\n counter: (state[recordKey]?.counter ?? 0) + 1,\n keepUntil: undefined,\n useStateFn,\n }\n }))\n\n return () => setState(({ [recordKey]: current, ...rest }) => ({\n ...rest,\n ...(current?.counter > 1 || timeToCleanState > 0) ? {\n [recordKey]: {\n ...current,\n counter: current.counter - 1,\n keepUntil: current.counter > 1 ? undefined : (Date.now() + timeToCleanState),\n }\n } : {}\n }))\n\n },\n []\n )\n\n const nextDelete = useMemo(() => Object.entries(state)\n .filter(([, { counter, keepUntil }]) => counter <= 0 && keepUntil)\n .toSorted(([, { keepUntil: k1 = 0 }], [, { keepUntil: k2 = 0 }]) => k1 - k2)\n ?.at(0),\n [state]\n )\n\n useEffect(() => {\n if (nextDelete) {\n const [key, { keepUntil }] = nextDelete\n if (typeof keepUntil == 'undefined')\n throw new Error(\"Invalid state mgr\")\n\n let t = setTimeout(() => {\n // console.log(\"Delay Cleaned\")\n setState(({ [key]: _, ...rest }) => rest)\n }, Math.max(0, keepUntil - Date.now()))\n return () => {\n // console.log(\"Cancel clean\")\n clearTimeout(t)\n };\n }\n }, [nextDelete])\n\n useDataSourceMultiple(ctx,\n [\"subscribe\", subscribeRoot],\n [\"state\", state],\n )\n\n return <>\n {Object\n .entries(state)\n .filter(([, { counter, keepUntil = 0 }]) => counter > 0 || keepUntil >= Date.now())\n .map(([key, { useStateFn, params }]) => <Wrapper key={key}>\n <StateRunner key={key} params={params} useStateFn={useStateFn} debugging={debugging} />\n </Wrapper>)}\n </>\n\n}\n\n/**\n * createAutoCtx\n *\n * Bridges a Root context (from createRootCtx) to the global AutoRootCtx renderer.\n * You do NOT mount the Root component yourself — just mount <AutoRootCtx /> once at the app root.\n *\n * Usage: \n * ```\n * const { useCtxState: useTestCtxState } = createAutoCtx(createRootCtx(\n * 'test-state', \n * stateFn\n * ))\n * const { useCtxState: useOtherCtxState } = createAutoCtx(createRootCtx(\n * 'other-state', \n * otherFn\n * ))\n * ```\n * \n * Then inside components:\n * ```\n * const ctxState = useTestCtxState({ any: 'params' })\n * ```\n * AutoRootCtx will subscribe/unsubscribe instances per unique params and render the appropriate Root under the hood.\n */\nexport const createAutoCtx = <U extends ParamsToIdRecord, V extends Record<string, unknown>>(\n { useRootState, getCtxName, name }: ReturnType<typeof createRootCtx<U, V>>,\n timeToClean = 0\n) => {\n\n return {\n\n useCtxState: (e: U): Context<V> => {\n\n const ctxName = getCtxName(e)\n\n const subscribe = useDataSubscribe(useDataContext<any>(\"auto-ctx\"), \"subscribe\")\n\n useEffect(\n () => subscribe?.(name, useRootState, e, timeToClean),\n [useRootState, subscribe, name, ctxName, timeToClean]\n )\n\n return useDataContext<V>(ctxName)\n }\n }\n}","\nimport { debounce } from \"./utils\";\nimport { useState, useMemo, useEffect } from \"react\";\nimport type { Context } from \"./ctx\";\n\n/**\n * useQuickSubscribe is a custom React hook for efficiently subscribing to specific properties of a context's data object.\n * \n * @template D - The shape of the context data.\n * @param {Context<D> | undefined} ctx - The context object containing data and a subscribe method.\n * @returns {Partial<D>} A proxy object that mirrors the context data, automatically subscribing to properties as they are accessed.\n *\n * This hook tracks which properties of the context data are accessed by the component and subscribes to updates for only those properties.\n * When any of the subscribed properties change, the hook triggers a re-render. Subscriptions are managed and cleaned up automatically\n * when the component unmounts or the context changes. This approach minimizes unnecessary re-renders and resource usage by only\n * subscribing to the data that the component actually uses.\n *\n * Example usage:\n * const {name} = useQuickSubscribe(userContext);\n * // Accessing name will subscribe to changes in 'name' only\n * return <div>{name}</div>;\n */\n\nexport const useQuickSubscribe = <D>(\n ctx: Context<D> | undefined\n): {\n [P in keyof D]?: D[P] | undefined;\n } => {\n\n const [, setCounter] = useState(0);\n\n const { proxy, finalGetter, openGetter, clean } = useMemo(\n () => {\n\n const allKeys = new Set<keyof D>()\n const allCompareValue: { [P in keyof D]?: D[P] | undefined; } = {}\n const allUnsub = new Map()\n\n const proxy = new Proxy(\n ctx?.data as any,\n {\n get(target, p) {\n if (isOpenGetter) {\n allKeys.add(p as keyof D)\n return allCompareValue[p as keyof D] = target[p];\n } else {\n throw new Error(\"useQuickSubscribe: Cannot access context data outside render phase. Destructure needed properties immediately during render.\");\n }\n },\n ownKeys(t) {\n console.warn(`useQuickSubscribe: Rest object operations aren't recommended as they bypass selective subscription and may cause performance issues`);\n return Reflect.ownKeys(t); // unchanged behavior\n },\n\n }\n ) as any\n\n let isOpenGetter = true;\n\n\n let onChange = debounce(() => {\n if ([...allKeys.values()]\n .some(k => allCompareValue[k] != ctx?.data?.[k])) {\n setCounter(c => c + 1)\n }\n }, 0)\n\n let openGetter = () => {\n isOpenGetter = true\n allKeys.clear()\n }\n\n let finalGetter = () => {\n isOpenGetter = false;\n\n [...allKeys.values()]\n .filter(k => !allUnsub.has(k))\n .forEach(k => {\n allUnsub.set(k, ctx?.subscribe(k, onChange))\n });\n\n [...allUnsub.keys()]\n .filter(k => !allKeys.has(k))\n .forEach(k => {\n let unsub = allUnsub.get(k)\n unsub?.();\n allUnsub.delete(k);\n });\n\n }\n\n let clean = () => {\n openGetter();\n finalGetter();\n setCounter(c => c + 1)\n }\n\n return { proxy, finalGetter, openGetter, clean }\n },\n [ctx]\n )\n\n openGetter();\n\n setTimeout(finalGetter, 0)\n\n useEffect(\n () => () => clean(),\n [clean]\n )\n\n return proxy;\n\n\n};\n","import React, { useContext, useMemo } from \"react\";\n\nexport function useHighlight(filterString: string) {\n const highlight = useMemo(\n () => filterString\n ? buildRegex(filterString\n .trim()\n .toLowerCase()\n .split(\" \"), 'gi')\n : undefined,\n [filterString]\n );\n return { highlight };\n}\n\nfunction escapeRegex(str: string) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction buildRegex(words: string[], flags = 'gi') {\n const pattern = words.map(escapeRegex).join('|');\n return new RegExp(`(${pattern})`, flags);\n}\n\nfunction markByToken(text: string, regex: RegExp) {\n const result = [];\n let last = 0;\n for (const match of text.matchAll(regex)) {\n const [m] = match;\n const start = match.index;\n if (start > last) result.push(text.slice(last, start));\n result.push(<mark key={start}>{m}</mark>);\n last = start + m.length;\n }\n if (last < text.length) result.push(text.slice(last));\n return result;\n}\n\nconst highlightCtx = React.createContext<{ highlight?: RegExp }>({\n highlight: undefined\n})\n\nexport const HightlightWrapper: React.FC<{ highlight: string, children: any }> = ({ children, highlight }) => {\n return <highlightCtx.Provider value={useHighlight(highlight)}>\n {children}\n </highlightCtx.Provider>\n}\n\nexport const HighlightString: React.FC<{ text: string; }> = ({ text }) => {\n const { highlight } = useContext(highlightCtx)\n\n const render = useMemo(\n () => highlight ? markByToken(text, highlight) : text,\n [text, highlight]\n );\n\n return <>{render}</>;\n\n};\n","import React, { useMemo } from \"react\";\n\n\nexport type DataViewComponent = React.FC<{ value: any; name: string; }>;\n\nexport const DataViewDefault: DataViewComponent = ({ name, value }) => {\n\n const renderString = useMemo(() => {\n try {\n return JSON.stringify({ [name]: value }, null, 2);\n } catch (error) {\n return String(error);\n }\n }, [name, value]);\n\n return <pre>{renderString}</pre>;\n};\n","import React, { useRef, useEffect } from \"react\";\nimport { getContext } from \"../state-utils/ctx\";\nimport { debounce } from \"../state-utils/utils\";\nimport { HighlightString } from \"./useHighlight\";\n\nexport const StateLabelRender: React.FC<any> = ({ selectedKey, setKey, currentKey, highlight, ...props }) => {\n const ctx = getContext(currentKey);\n const divRef = useRef<HTMLDivElement>(undefined);\n\n useEffect(() => {\n if (divRef.current) {\n let flashKeyDebounce = debounce(() => {\n if (divRef.current) {\n divRef.current?.classList.add(\"state-key-updated\");\n requestAnimationFrame(() => divRef.current?.classList.remove(\"state-key-updated\"));\n }\n }, 5);\n return ctx.subscribeAll(flashKeyDebounce);\n }\n\n }, [ctx, divRef]);\n\n return <div\n ref={divRef}\n className=\"state-key\"\n title={currentKey}\n data-active={currentKey == selectedKey}\n onClick={() => setKey(currentKey)}\n {...props}\n >\n <div className=\"state-key-name\">\n <HighlightString text={String(currentKey)} />\n </div>\n <div className=\"state-key-meta\">\n {Object.keys(ctx.data).length} items\n </div>\n </div>;\n};\n","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"prefixCls\", \"className\", \"children\", \"mode\", \"visiable\", \"visible\", \"renderBar\", \"lineBar\", \"disable\", \"onDragEnd\", \"onDragging\"];\nimport React from 'react';\nimport \"./style/index.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport default class Split extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n dragging: false\n };\n this.warpper = void 0;\n this.paneNumber = void 0;\n this.startX = void 0;\n this.startY = void 0;\n this.move = void 0;\n this.target = void 0;\n this.boxWidth = void 0;\n this.boxHeight = void 0;\n this.preWidth = void 0;\n this.nextWidth = void 0;\n this.preHeight = void 0;\n this.nextHeight = void 0;\n this.preSize = void 0;\n this.nextSize = void 0;\n this.onDragEnd = this.onDragEnd.bind(this);\n this.onDragging = this.onDragging.bind(this);\n }\n componentWillUnmount() {\n this.removeEvent();\n }\n removeEvent() {\n window.removeEventListener('mousemove', this.onDragging, false);\n window.removeEventListener('mouseup', this.onDragEnd, false);\n }\n onMouseDown(paneNumber, env) {\n if (!env.target || !this.warpper) {\n return;\n }\n this.paneNumber = paneNumber;\n this.startX = env.clientX;\n this.startY = env.clientY;\n this.move = true;\n this.target = env.target.parentNode;\n var prevTarget = this.target.previousElementSibling;\n var nextTarget = this.target.nextElementSibling;\n this.boxWidth = this.warpper.clientWidth;\n this.boxHeight = this.warpper.clientHeight;\n if (prevTarget) {\n this.preWidth = prevTarget.clientWidth;\n this.preHeight = prevTarget.clientHeight;\n }\n if (nextTarget) {\n this.nextWidth = nextTarget.clientWidth;\n this.nextHeight = nextTarget.clientHeight;\n }\n window.addEventListener('mousemove', this.onDragging);\n window.addEventListener('mouseup', this.onDragEnd, false);\n this.setState({\n dragging: true\n });\n }\n onDragging(env) {\n if (!this.move) {\n return;\n }\n if (!this.state.dragging) {\n this.setState({\n dragging: true\n });\n }\n var {\n mode,\n onDragging\n } = this.props;\n var nextTarget = this.target.nextElementSibling;\n var prevTarget = this.target.previousElementSibling;\n var x = env.clientX - this.startX;\n var y = env.clientY - this.startY;\n this.preSize = 0;\n this.nextSize = 0;\n if (mode === 'horizontal') {\n this.preSize = this.preWidth + x > -1 ? this.preWidth + x : 0;\n this.nextSize = this.nextWidth - x > -1 ? this.nextWidth - x : 0;\n if (this.preSize === 0 || this.nextSize === 0) {\n return;\n }\n this.preSize = (this.preSize / this.boxWidth >= 1 ? 1 : this.preSize / this.boxWidth) * 100;\n this.nextSize = (this.nextSize / this.boxWidth >= 1 ? 1 : this.nextSize / this.boxWidth) * 100;\n if (prevTarget && nextTarget) {\n prevTarget.style.width = this.preSize + \"%\";\n nextTarget.style.width = this.nextSize + \"%\";\n }\n }\n if (mode === 'vertical' && this.preHeight + y > -1 && this.nextHeight - y > -1) {\n this.preSize = this.preHeight + y > -1 ? this.preHeight + y : 0;\n this.nextSize = this.nextHeight - y > -1 ? this.nextHeight - y : 0;\n this.preSize = (this.preSize / this.boxHeight >= 1 ? 1 : this.preSize / this.boxHeight) * 100;\n this.nextSize = (this.nextSize / this.boxHeight >= 1 ? 1 : this.nextSize / this.boxHeight) * 100;\n if (this.preSize === 0 || this.nextSize === 0) {\n return;\n }\n if (prevTarget && nextTarget) {\n prevTarget.style.height = this.preSize + \"%\";\n nextTarget.style.height = this.nextSize + \"%\";\n }\n }\n onDragging && onDragging(this.preSize, this.nextSize, this.paneNumber);\n }\n onDragEnd() {\n var {\n onDragEnd\n } = this.props;\n this.move = false;\n onDragEnd && onDragEnd(this.preSize, this.nextSize, this.paneNumber);\n this.removeEvent();\n this.setState({\n dragging: false\n });\n }\n render() {\n var _this$props$visible;\n var _this$props = this.props,\n {\n prefixCls,\n className,\n children,\n mode,\n visible = (_this$props$visible = this.props.visible) != null ? _this$props$visible : this.props.visiable,\n renderBar,\n lineBar,\n disable\n } = _this$props,\n other = _objectWithoutPropertiesLoose(_this$props, _excluded);\n var {\n dragging\n } = this.state;\n var cls = [prefixCls, className, prefixCls + \"-\" + mode, dragging ? 'dragging' : null].filter(Boolean).join(' ').trim();\n var child = React.Children.toArray(children);\n return /*#__PURE__*/_jsx(\"div\", _extends({\n className: cls\n }, other, {\n ref: node => this.warpper = node,\n children: React.Children.map(child, (element, idx) => {\n var props = Object.assign({}, element.props, {\n className: [prefixCls + \"-pane\", element.props.className].filter(Boolean).join(' ').trim(),\n style: _extends({}, element.props.style)\n });\n var visibleBar = visible === true || visible && visible.includes(idx + 1) || false;\n var barProps = {\n className: [prefixCls + \"-bar\", lineBar ? prefixCls + \"-line-bar\" : null, !lineBar ? prefixCls + \"-large-bar\" : null].filter(Boolean).join(' ').trim()\n };\n if (disable === true || disable && disable.includes(idx + 1)) {\n barProps.className = [barProps.className, disable ? 'disable' : null].filter(Boolean).join(' ').trim();\n }\n var BarCom = null;\n if (idx !== 0 && visibleBar && renderBar) {\n BarCom = renderBar(_extends({}, barProps, {\n onMouseDown: this.onMouseDown.bind(this, idx + 1)\n }));\n } else if (idx !== 0 && visibleBar) {\n BarCom = /*#__PURE__*/React.createElement('div', _extends({}, barProps), /*#__PURE__*/_jsx(\"div\", {\n onMouseDown: this.onMouseDown.bind(this, idx + 1)\n }));\n }\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [BarCom, /*#__PURE__*/React.cloneElement(element, _extends({}, props))]\n }, idx);\n })\n }));\n }\n}\nSplit.defaultProps = {\n prefixCls: 'w-split',\n visiable: true,\n mode: 'horizontal'\n};","import React, { useEffect, useMemo, useState } from \"react\"\nimport { getContext } from \"../state-utils/ctx\"\nimport { debounce } from \"../state-utils/utils\"\nimport { HightlightWrapper } from \"./useHighlight\"\nimport { DataViewComponent, DataViewDefault } from \"./DataViewComponent\"\nimport { StateLabelRender } from \"./StateLabelRender\"\nimport Split from \"@uiw/react-split\"\nimport \"./DevTool.css\"\n\nconst cache = getContext.cache\n\nexport const DevToolState: React.FC<{ Component: DataViewComponent }> = ({ Component }) => {\n const [allKeys, setKeys] = useState(() => [...cache.keys()])\n const [filterString, setFilterString] = useState(\"\")\n const [selectedKey, setKey] = useState(\"\")\n\n useEffect(() => {\n let t = setInterval(() => {\n setKeys(k => k.length != cache.size\n ? [...cache.keys()]\n : k\n )\n }, 50)\n return () => clearInterval(t)\n }, [cache])\n\n const filterFn = useMemo(\n () => {\n const preFilter = filterString\n .toLowerCase()\n .split(\" \")\n return (e: string) => {\n const sLow = e.toLowerCase()\n return preFilter.every(token => sLow.includes(token))\n }\n },\n [filterString]\n )\n\n\n return <Split mode=\"horizontal\" className=\"main-panel\">\n <div className=\"state-list\">\n <input\n placeholder=\"Type to Filter ...\"\n className=\"state-filter\"\n value={filterString}\n onChange={(ev) => setFilterString(ev.target.value)}\n />\n <HightlightWrapper highlight={filterString}>\n {allKeys\n .map(e => JSON.parse(e)?.[0])\n .filter(e => e != \"auto-ctx\" && e)\n .filter(filterFn)\n .map(currentKey => <StateLabelRender key={currentKey} {...{ selectedKey, setKey, currentKey }} />)}\n </HightlightWrapper>\n\n </div>\n <div className=\"state-view\" >\n <StateView dataKey={selectedKey} key={selectedKey} Component={Component} />\n </div>\n </Split>\n}\n\nexport const StateView: React.FC<{ dataKey: string, Component: DataViewComponent }> = ({ dataKey, Component = DataViewDefault }) => {\n const ctx = getContext(dataKey)\n const [currentData, setCurrentData] = useState({ ...ctx?.data })\n\n useEffect(() => {\n let updateDataDebounce = debounce(setCurrentData, 5)\n return ctx\n .subscribeAll((changeKey, newData) => updateDataDebounce({ ...newData }))\n\n }, [ctx])\n\n return <Component\n value={currentData}\n name={dataKey}\n />\n}\n","import \"./DevTool.css\"\nimport { useState } from \"react\"\nimport { DevToolState } from \"./DevToolState\";\nimport { DataViewDefault } from \"./DataViewComponent\";\nimport Split from '@uiw/react-split';\n\n\nexport const DevToolContainer = ({ toggleButton = \"[x]\", Component = DataViewDefault, ...props }) => {\n const [active, setActive] = useState(false);\n return <>\n <button className=\"react-state-dev-btn\" data-active={active} onClick={() => setActive(true)} {...props}>\n {props?.children ?? \"Toggle Dev Tool\"}\n </button>\n <div className=\"react-state-dev-container\">\n <Split mode=\"vertical\" style={{ height: \"100%\" }}>\n <div style={{ height: active ? \"66.66%\" : \"100%\" }}></div>\n <div className=\"react-state-dev-panel\" style={{\n height: active ? \"33.33%\" : \"0\",\n backgroundColor: \"var(--rs-bg-color)\",\n position: \"relative\"\n }}>\n {active && <button\n className=\"close-btn\"\n onClick={() => setActive(false)}\n >\n [x]\n </button>}\n {active && <DevToolState Component={Component} />}\n </div>\n </Split>\n </div>\n </>\n}"],"names":["ReactSharedInternals","require$$0","reactCompilerRuntime_production","size","reactCompilerRuntime_development","dispatcher","compilerRuntimeModule","require$$1","debounce","func","wait","timeout","fn","args","clearTimeout","setTimeout","cancel","memoize","cache","Map","cachedFunc","key","JSON","stringify","has","get","result","set","randomHash","Math","random","toString","slice","useArrayChangeId","e","ref","useRef","values","id","isDiff","current","length","some","f","i","CHANGE_EVENT","DataEvent","Event","constructor","event","value","String","ChangeEvent","Context","EventTarget","name","data","registry","Set","useCounter","publish","dispatchEvent","subscribe","_listener","listener","addEventListener","removeEventListener","subscribeAll","getContext","useDataContext","ctx","useMemo","useEffect","delete","useRegistryChecker","t0","$","_c","names","Error","t1","forEach","add","e_0","t2","useDataSource","useDataSubscribe","debounceTime","undefined","setState","useState","t3","callback","value_0","value_1","unsub","t4","useDataSubscribeWithTransform","transform","preValue","newValue","useDataSourceMultiple","entries","flat","map","useDataSubscribeMultiple","keys","setCounter","returnValues","prevValues","currentValues","key_0","key_1","_temp","handles","key_2","firstCall","_temp2","t5","key_3","index","Object","fromEntries","useDataSubscribeMultipleWithDebounce","_temp3","_temp4","c","paramsToId","params","sort","join","createRootCtx","useFn","getCtxName","filter","Boolean","ctxMountedCheck","useRootState","state","ctxName","Symbol","for","stack","err","Debug","jsx","Fragment","RootState","displayName","Root","useCtxStateStrict","useCtxState","console","error","DebugState","StateRunner","useStateFn","debugging","AutoRootCtx","Wrapper","subscribeRoot","useCallback","contextName","timeToCleanState","recordKey","counter","keepUntil","rest","Date","now","nextDelete","toSorted","k1","k2","at","t","_","max","createAutoCtx","timeToClean","useQuickSubscribe","proxy","finalGetter","openGetter","clean","allKeys","allCompareValue","allUnsub","Proxy","target","p","isOpenGetter","ownKeys","warn","Reflect","onChange","k","clear","useHighlight","filterString","buildRegex","trim","toLowerCase","split","highlight","escapeRegex","str","replace","words","flags","pattern","RegExp","markByToken","text","regex","last","match","matchAll","m","start","push","highlightCtx","React","createContext","HightlightWrapper","children","HighlightString","useContext","render","DataViewDefault","renderString","StateLabelRender","currentKey","props","selectedKey","setKey","divRef","flashKeyDebounce","classList","requestAnimationFrame","remove","t6","t7","t8","t9","jsxs","t10","_extends","r","_objectWithoutPropertiesLoose","n","_excluded","Split","paneNumber","env","prevTarget","nextTarget","mode","onDragging","x","y","onDragEnd","_this$props$visible","_this$props","prefixCls","className","visible","renderBar","lineBar","disable","other","dragging","cls","child","_jsx","node","element","idx","visibleBar","barProps","BarCom","_jsxs","DevToolState","Component","setKeys","setFilterString","setInterval","clearInterval","preFilter","sLow","every","token","includes","filterFn","ev","StateView","t11","dataKey","currentData","setCurrentData","updateDataDebounce","changeKey","newData","parse","e_1","DevToolContainer","toggleButton","active","setActive","height","backgroundColor","position","t12","t13","t14","t15"],"mappings":"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","x_google_ignoreList":[0,1,2,13,14,15]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../node_modules/react/cjs/react-compiler-runtime.production.js","../node_modules/react/cjs/react-compiler-runtime.development.js","../node_modules/react/compiler-runtime.js","../src/state-utils/utils.ts","../src/state-utils/useArrayChangeId.ts","../src/state-utils/ctx.ts","../src/state-utils/paramsToId.tsx","../src/state-utils/createRootCtx.tsx","../src/state-utils/createAutoCtx.tsx","../src/state-utils/useQuickSubscribe.ts","../src/dev-tool/useHighlight.tsx","../src/dev-tool/DataViewComponent.tsx","../src/dev-tool/StateLabelRender.tsx","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@uiw/react-split/esm/index.js","../src/dev-tool/DevToolState.tsx","../src/dev-tool/DevTool.tsx"],"sourcesContent":["/**\n * @license React\n * react-compiler-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nexports.c = function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n};\n","/**\n * @license React\n * react-compiler-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n var ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n exports.c = function (size) {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher.useMemoCache(size);\n };\n })();\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-compiler-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-compiler-runtime.development.js');\n}\n","// Debounce function\nexport function debounce<T extends (...args: any[]) => any>(\n func: T,\n wait: number\n): ((...args: Parameters<T>) => void) & { cancel: any } {\n let timeout: ReturnType<typeof setTimeout> | null = null;\n\n let fn: Function & { cancel: any } = function (...args: Parameters<T>): void {\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n func(...args);\n }, wait);\n } as any;\n\n fn.cancel = () => clearTimeout(timeout!);\n\n return fn as any;\n}\n\n// Memoize function\nexport function memoize<T extends (...args: any[]) => any>(\n func: T\n): ((...args: Parameters<T>) => ReturnType<T>) & { cache: Map<string, ReturnType<T>> } {\n \n const cache = new Map<string, ReturnType<T>>();\n\n const cachedFunc: any = function (...args: Parameters<T>): ReturnType<T> {\n const key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key) as ReturnType<T>;\n }\n const result = func(...args);\n cache.set(key, result);\n return result;\n }\n\n cachedFunc.cache = cache;\n\n return cachedFunc\n}\n\n","import { useRef } from \"react\"\n\n\nconst randomHash = () => Math.random().toString().slice(2)\n\n/**\n * useArrayChangeId\n *\n * A custom hook that generates a stable change identifier for an array of values.\n * The identifier changes only when the array's contents differ from the previous call.\n *\n * @param e - The input array to track.\n * @returns A string identifier that updates when the array changes.\n *\n * How it works:\n * - Tracks the previous array and its identifier using a `useRef`.\n * - Compares the new array to the previous one by length and element equality (shallow comparison).\n * - If any difference is detected, generates a new random identifier.\n * \n * Note: Uses shallow comparison - compares array length and element references using `!=`.\n * For objects and nested arrays, only references are compared, not deep values.\n */\nexport const useArrayChangeId = (e: any[]): string => {\n const ref = useRef<{ values: any[]; id: string }>({\n values: [],\n id: randomHash()\n })\n\n // Check for differences in array existence, length, or elements\n let isDiff = false\n isDiff = isDiff || ((!e) != (!ref.current.values))\n isDiff = isDiff || (e?.length != ref.current.values?.length)\n isDiff = isDiff || (e?.some((f, i) => f != ref.current.values[i]))\n\n // Update the identifier if differences are found\n if (isDiff) {\n ref.current.values = e\n ref.current.id = randomHash()\n }\n\n return ref.current.id\n}","import { debounce, memoize } from \"./utils\";\nimport { useEffect, useMemo, useState } from \"react\"\nimport { useArrayChangeId } from \"./useArrayChangeId\"\n\n\n\nconst CHANGE_EVENT = \"@--change-event\"\n\nclass DataEvent<D> extends Event {\n constructor(\n public event: keyof D,\n public value: D[typeof event] | undefined\n ) {\n super(String(event));\n }\n}\n\nclass ChangeEvent<D> extends Event {\n constructor(\n public value: DataEvent<D>\n ) {\n super(CHANGE_EVENT, value);\n }\n}\n\n/**\n * Generic context for managing shared state and event subscriptions.\n * @template D - The shape of the data managed by the context.\n */\nexport class Context<D> extends EventTarget {\n /**\n * Create a new Context instance.\n * @param name - The name of the context (for debugging).\n */\n constructor(public name: string) {\n // console.log(\"[CONTEXT] %s\", name)\n // this.event.setMaxListeners(100)\n super();\n }\n\n /**\n * The current data held by the context.\n */\n public data: Partial<D> = {}\n /**\n * Registry for tracking active keys (for duplicate detection).\n */\n public registry = new Set<string>()\n\n public useCounter = 0\n\n /**\n * Publish a value to the context and notify subscribers if it changed.\n * @param key - The key to update.\n * @param value - The new value.\n */\n public publish(key: keyof D, value: D[typeof key] | undefined) {\n\n if (value != this.data[key]) {\n this.data[key] = value\n let event = new DataEvent(key, value);\n this.dispatchEvent(event);\n this.dispatchEvent(new ChangeEvent(event))\n }\n }\n\n /**\n * Subscribe to changes for a specific key in the context.\n * @param key - The key to subscribe to.\n * @param _listener - Callback invoked with the new value.\n * @returns Unsubscribe function.\n */\n public subscribe(key: keyof D, _listener: (e: D[typeof key] | undefined) => void) {\n\n const listener = ({ event, value }: any) => {\n _listener(value)\n }\n\n this.addEventListener(String(key), listener)\n // console.log(\"listenerCount:\", String(key), this.event.listenerCount(String(key)))\n\n if (key in this.data) _listener(this.data[key])\n\n return () => this.removeEventListener(String(key), listener)\n }\n\n public subscribeAll(_listener: (changeKey: keyof D, newData: Partial<D>) => void) {\n\n const listener = (event: any) => {\n if (event instanceof ChangeEvent) {\n const { value: data } = event\n _listener(data.event as any as keyof D, this.data)\n }\n }\n\n this.addEventListener(String(CHANGE_EVENT), listener)\n\n return () => this.removeEventListener(String(CHANGE_EVENT), listener)\n\n }\n\n}\n\n/**\n * Get or create a memoized Context instance by name.\n * @param name - The context name.\n * @returns The Context instance.\n */\nexport const getContext = memoize((name: string) => new Context<any>(name))\n\n/**\n * Type alias for a function that returns a Context instance.\n */\nexport type getContext<D> = (e: string) => Context<D>\n\n/**\n * React hook to get a typed Context instance by name.\n * @param name - The context name.\n * @returns The Context instance.\n */\nexport const useDataContext = <D>(name: string = \"noname\") => {\n const ctx = useMemo(() => getContext(name), [name])\n useEffect(() => {\n ctx.useCounter += 1;\n return () => {\n ctx.useCounter -= 1;\n if (ctx.useCounter <= 0) {\n setTimeout(() => {\n if (ctx.useCounter <= 0) {\n getContext.cache.delete(JSON.stringify([name]))\n }\n }, 100)\n }\n }\n }, [ctx])\n\n return ctx as any as Context<D>\n}\n\n/**\n * Internal hook to check for duplicate registry entries in a context.\n * Warns if any of the provided names are already registered.\n * @param ctx - The context instance.\n * @param names - Names to check and register.\n */\nconst useRegistryChecker = (ctx: Context<any> | undefined, ...names: string[]) => {\n // return;\n const stack = new Error(\"[ctx] useRegistryChecker failed \" + JSON.stringify({ names, ctx: ctx?.name ?? 'undefined' }))\n\n useEffect(\n () => {\n if (ctx) {\n if (names.some(name => ctx.registry.has(name))) {\n // console.error(stack)\n }\n names.forEach(e => ctx.registry.add(e))\n\n // console.debug(\"[ctx] %s%s add datasource\", componentId, ctx.name, names)\n return () => {\n // console.debug(\"[ctx] %s %s remove datasource\", componentId, ctx.name, names)\n\n names.forEach(e => ctx.registry.delete(e))\n }\n }\n },\n [ctx, names.length]\n )\n\n}\n\n/**\n * React hook to publish a value to the context when it changes.\n * @param ctx - The context instance.\n * @param key - The key to update.\n * @param value - The new value.\n */\nexport const useDataSource = <D, K extends keyof D>(ctx: Context<D> | undefined, key: K, value: D[K] | undefined) => {\n //@ts-check\n useEffect(() => {\n if (ctx && ctx.data[key] != value) {\n\n ctx.publish(key, value)\n }\n }, [key, value, ctx])\n\n useRegistryChecker(ctx, key as any)\n}\n\n/**\n * React hook to subscribe to a context value, with optional debounce.\n * @param ctx - The context instance.\n * @param key - The key to subscribe to.\n * @param debounceTime - Debounce time in ms (default 0).\n * @returns The current value for the key.\n */\nexport const useDataSubscribe = <D, K extends keyof D>(ctx: Context<D> | undefined, key: K, debounceTime = 0): D[K] | undefined => {\n //@ts-check\n const [{ value }, setState] = useState(() => ({ value: ctx?.data?.[key] }))\n\n useEffect(() => {\n if (ctx) {\n let callback = debounceTime == 0\n ? (value: any) => setState({ value } as any)\n : debounce((value: any) => setState({ value } as any), debounceTime)\n let unsub = ctx.subscribe(key, callback)\n value != ctx.data[key] && setState({ value: ctx.data[key] })\n return () => {\n unsub()\n }\n }\n }, [key, ctx])\n\n return ctx?.data[key]\n}\n\n/**\n * React hook to subscribe to a context value and transform it before returning.\n * @param ctx - The context instance.\n * @param key - The key to subscribe to.\n * @param transform - Function to transform the value.\n * @returns The transformed value.\n */\nexport const useDataSubscribeWithTransform = <D, K extends keyof D, E>(ctx: Context<D> | undefined, key: K, transform: (e: D[K] | undefined) => E): E => {\n const [, setState] = useState(0)\n const result = useMemo(\n () => transform(ctx?.data[key]),\n [transform, ctx?.data[key]]\n )\n\n useEffect(() => {\n if (ctx) {\n let preValue = result\n let callback = () => {\n let newValue = transform(ctx.data[key])\n if (newValue != preValue) {\n preValue = newValue;\n setState(e => e + 1)\n };\n }\n let unsub = ctx.subscribe(key, callback)\n callback();\n return () => unsub()\n }\n }, [key, ctx])\n\n return result\n}\n\n/**\n * React hook to publish multiple values to the context.\n * @param ctx - The context instance.\n * @param entries - Array of [key, value] pairs to update.\n */\nexport const useDataSourceMultiple = <D, T extends readonly (keyof D)[]>(\n ctx: Context<D> | undefined,\n ...entries: { -readonly [P in keyof T]: [T[P], D[T[P]]] }\n) => {\n //@ts-check\n useEffect(() => {\n if (ctx) {\n for (let [key, value] of entries) {\n ctx.data[key] != value && ctx.publish(key, value)\n }\n }\n }, [ctx, useArrayChangeId(entries.flat())])\n\n useRegistryChecker(ctx, ...entries.map(e => e[0]) as any)\n\n}\n\n/**\n * React hook to subscribe to multiple context values.\n * @param ctx - The context instance.\n * @param keys - Keys to subscribe to.\n * @returns An object with the current values for the keys.\n */\nexport const useDataSubscribeMultiple = <D, K extends (keyof D)[]>(\n ctx: Context<D> | undefined,\n ...keys: K\n): { [i in keyof K]: D[K[i]] | undefined } => {\n const [, setCounter] = useState(0)\n\n const returnValues = keys.map(key => ctx?.data?.[key])\n\n useEffect(() => {\n if (ctx) {\n let prevValues = returnValues\n const callback = debounce(() => {\n let currentValues = keys.map(key => ctx?.data?.[key])\n if (keys.some((key, i) => prevValues[i] != currentValues[i])) {\n // console.log(\"DIFF\", keys.filter((e, i) => prevValues[i] != currentValues[i]))\n prevValues = currentValues\n setCounter(c => c + 1)\n }\n }, 1)\n\n let handles = keys.map(key => ctx.subscribe(key, callback))\n\n let firstCall = setTimeout(callback, 1);\n\n return () => {\n clearTimeout(firstCall)\n callback.cancel();\n handles.forEach(unsub => unsub())\n }\n\n }\n }, [ctx, ...keys])\n\n\n return Object\n .fromEntries(keys.map((key, index) => [key, returnValues[index]])) as any\n}\n\n/**\n * React hook to subscribe to multiple context values with throttling.\n * @param ctx - The context instance.\n * @param debounceTime - Debounce time in ms (default 50).\n * @param keys - Keys to subscribe to.\n * @returns Array of current values for the keys.\n */\nexport const useDataSubscribeMultipleWithDebounce = <D, K extends (keyof D)[]>(\n ctx: Context<D> | undefined,\n debounceTime = 50,\n ...keys: K\n): { [i in keyof K]: D[K[i]] | undefined } => {\n //@ts-check\n const [, setCounter] = useState(0)\n\n const returnValues = keys.map(key => ctx?.data?.[key])\n\n useEffect(() => {\n if (ctx) {\n let prevValues = returnValues\n const callback = debounce(() => {\n let currentValues = keys.map(key => ctx?.data?.[key])\n if (keys.some((key, i) => prevValues[i] != currentValues[i])) {\n prevValues = currentValues\n setCounter(c => c + 1)\n }\n }, debounceTime)\n\n let handles = keys.map(key => ctx.subscribe(key, callback))\n\n let firstCall = setTimeout(callback, 1);\n\n return () => {\n clearTimeout(firstCall)\n callback.cancel();\n handles.forEach(unsub => unsub())\n }\n\n }\n }, [ctx, ...keys])\n\n return returnValues as any\n}\n\n\n\n","\nexport type ParamsToIdRecord = Record<string, string | number | bigint | boolean | null | undefined>\nexport type ParamsToIdInput = ParamsToIdRecord | undefined\n\n/**\n * Converts a parameters object into a deterministic string identifier.\n * \n * This function creates a consistent string representation of parameters by:\n * - Sorting keys alphabetically to ensure deterministic output\n * - Validating that all values are primitive types\n * - Joining key-value pairs with '&' separator\n * \n * @param params - Object containing string, number, bigint, boolean, null, or undefined values.\n * Defaults to undefined if not provided.\n * @returns A string identifier in the format \"key1=value1&key2=value2\"\n * \n * @throws {Error} When any parameter value is an object (non-primitive type)\n * \n * @example\n * ```typescript\n * paramsToId({ name: \"john\", age: 30 }) // Returns \"age=30&name=john\"\n * paramsToId({ id: null, active: true }) // Returns \"active=true&id=null\"\n * paramsToId() // Returns \"\"\n * ```\n */\nexport const paramsToId = (params: ParamsToIdInput = undefined) => Object\n .keys(params ?? {})\n .sort()\n .map(key => {\n const value = params?.[key];\n if (\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\")\n ) {\n throw new Error(`Parameter \"${key}\" must be a primitive value (string, number, bigint, null, or undefined), but received ${typeof value}`)\n }\n return key + '=' + value\n })\n .join(\"&\");\n","import { useEffect, useMemo } from \"react\"\nimport { useDataContext, useDataSourceMultiple, type Context } from \"./ctx\"\nimport { paramsToId, type ParamsToIdRecord } from \"./paramsToId\"\n// import { debugObjTime } from \"./debugObjTime\"\n\n\n/**\n * createRootCtx\n *\n * Factory that creates a headless \"Root\" component and companion hooks for a context namespace.\n * It derives a unique context name from a base `name` and a props object `U`, then publishes\n * a computed state `V` (from `useFn`) to that context.\n *\n * Usage (manual mounting):\n * ```\n * const { Root, useCtxState } = createRootCtx('user-state', useUserState)\n * ...\n * // Mount exactly one Root per unique props combination\n * <Root userId={id} />\n * ...\n * // Read anywhere ,using the same props shape\n * const user = useCtxState({ userId: id })\n *```\n * Strict vs lenient consumers:\n * - useCtxStateStrict(props) throws if a matching Root is not mounted.\n * - useCtxState(props) logs an error (after 1s) instead of throwing.\n *\n * Multiple instances safety:\n * - Mounting more than one Root with the same resolved context name throws (guards accidental duplicates).\n *\n * Name resolution notes:\n * - The context name is built from `name` + sorted key/value pairs of `props` (U), joined by \"-\".\n * - Prefer stable, primitive props to avoid collisions; if you need automation, pair with `createAutoCtx` and\n * mount a single <AutoRootCtx Wrapper={ErrorBoundary} /> at the app root so you don't manually mount `Root`.\n */\nexport const createRootCtx = <U extends ParamsToIdRecord, V extends Record<string, unknown>>(name: string, useFn: (e: U) => V) => {\n\n const getCtxName = (e: U) => [name, paramsToId(e)]\n .filter(Boolean)\n .join(\"?\");\n\n const ctxMountedCheck = new Set<string>()\n\n const useRootState = (e: U) => {\n const state = useFn(e)\n const ctxName = getCtxName(e)\n const ctx = useDataContext<V>(ctxName)\n const stack = useMemo(() => new Error().stack, [])\n\n useDataSourceMultiple(\n ctx,\n ...Object.entries(state) as any\n )\n\n useEffect(() => {\n if (ctxMountedCheck.has(ctxName)) {\n const err = new Error(\"RootContext \" + ctxName + \" are mounted more than once\")\n err.stack = stack;\n throw err\n }\n ctxMountedCheck.add(ctxName)\n return () => { ctxMountedCheck.delete(ctxName) };\n })\n\n return state;\n }\n\n const Debug = ({ }) => <></>\n\n const RootState: React.FC<U> = (e: U) => {\n const state = useRootState(e);\n return <Debug {...e} {...state} />\n }\n\n useRootState.displayName = `useState[${name}]`\n RootState.displayName = `StateContainer[${name}]`\n Debug.displayName = `Debug[${name}]`\n\n return {\n name,\n getCtxName,\n useRootState,\n Root: RootState,\n /**\n * Strict consumer: throws if the corresponding Root for these props isn't mounted.\n * Use in development/tests to fail fast when wiring is incorrect.\n */\n useCtxStateStrict: (e: U): Context<V> => {\n const ctxName = getCtxName(e)\n\n const stack = useMemo(() => new Error().stack, [])\n\n useEffect(() => {\n if (!ctxMountedCheck.has(ctxName)) {\n const err = new Error(\"RootContext [\" + ctxName + \"] is not mounted\")\n err.stack = stack;\n throw err\n }\n }, [ctxName])\n\n return useDataContext<V>(ctxName)\n },\n /**\n * Lenient consumer: schedules a console.error if the Root isn't mounted instead of throwing.\n * Useful in production to avoid hard crashes while still surfacing misconfiguration.\n */\n useCtxState: (e: U): Context<V> => {\n const ctxName = getCtxName(e)\n\n const stack = useMemo(() => new Error().stack, [])\n\n useEffect(() => {\n if (!ctxMountedCheck.has(ctxName)) {\n const err = new Error(\"RootContext [\" + ctxName + \"] is not mounted\")\n err.stack = stack;\n let timeout = setTimeout(() => console.error(err), 1000)\n return () => clearTimeout(timeout)\n }\n }, [ctxMountedCheck.has(ctxName)])\n\n return useDataContext<V>(ctxName)\n }\n }\n}","import { useEffect, useState, Fragment, useCallback, useMemo, Activity } from \"react\"\nimport { useDataContext, useDataSourceMultiple, useDataSubscribe, type Context } from \"./ctx\"\nimport { createRootCtx } from \"./createRootCtx\"\nimport { paramsToId, type ParamsToIdRecord } from \"./paramsToId\"\n\n\n\nconst DebugState = ({ }) => <></>\n\nconst StateRunner: React.FC<{ useStateFn: Function, params: ParamsToIdRecord, debugging: boolean }> = ({ useStateFn, params, debugging }) => {\n const state = useStateFn(params)\n return debugging ? <DebugState {...state} /> : <></>\n}\n\n\n/**\n * Inline docs: createAutoCtx + AutoRootCtx\n *\n * Quick start\n * 1) Mount <AutoRootCtx /> ONCE near your app root. Provide a Wrapper that acts like an ErrorBoundary to isolate and log errors.\n * Example: <AutoRootCtx Wrapper={MyErrorBoundary} />\n *\n * 2) Create auto contexts from your root context factories:\n * ```\n * const { useCtxState: useTestCtxState } = createAutoCtx(createRootCtx('test-state', stateFn))\n * const { useCtxState: useOtherCtxState } = createAutoCtx(createRootCtx('other-state', otherFn))\n * ```\n * 3) Use them in components:\n * ```\n * const ctx = useTestCtxState({ userId })\n * const { property1, property2 } = useDataSubscribeMultiple(ctx,'property1','property2')\n * // No need to mount the Root returned by createRootCtx directly — AutoRootCtx manages it for you.\n * ```\n * Notes\n * - AutoRootCtx must be mounted before any useCtxState hooks created by createAutoCtx run.\n * - Wrapper should be an ErrorBoundary-like component that simply renders {children}; no extra providers or layout required.\n * - For each unique params object (by stable stringified key), AutoRootCtx ensures a corresponding Root instance is rendered.\n */\n\nexport const AutoRootCtx: React.FC<{ Wrapper?: React.FC<any>, debugging?: boolean }> = ({ Wrapper = Fragment, debugging = false }) => {\n\n const ctx = useDataContext<any>(\"auto-ctx\")\n\n const [state, setState] = useState<Record<string, {\n useStateFn: Function,\n params: ParamsToIdRecord,\n // paramKey: string,\n counter: number,\n keepUntil?: number\n }>>({})\n\n\n const subscribeRoot = useCallback(\n (contextName: string, useStateFn: Function, params: ParamsToIdRecord, timeToCleanState = 0) => {\n\n const recordKey = [contextName, paramsToId(params)].filter(Boolean).join(\"?\")\n\n\n setState(state => ({\n ...state,\n [recordKey]: {\n ...state[recordKey] ?? { useStateFn, params },\n counter: (state[recordKey]?.counter ?? 0) + 1,\n keepUntil: undefined,\n useStateFn,\n }\n }))\n\n return () => setState(({ [recordKey]: current, ...rest }) => ({\n ...rest,\n ...(current?.counter > 1 || timeToCleanState > 0) ? {\n [recordKey]: {\n ...current,\n counter: current.counter - 1,\n keepUntil: current.counter > 1 ? undefined : (Date.now() + timeToCleanState),\n }\n } : {}\n }))\n\n },\n []\n )\n\n const nextDelete = useMemo(() => Object.entries(state)\n .filter(([, { counter, keepUntil }]) => counter <= 0 && keepUntil)\n .toSorted(([, { keepUntil: k1 = 0 }], [, { keepUntil: k2 = 0 }]) => k1 - k2)\n ?.at(0),\n [state]\n )\n\n useEffect(() => {\n if (nextDelete) {\n const [key, { keepUntil }] = nextDelete\n if (typeof keepUntil == 'undefined')\n throw new Error(\"Invalid state mgr\")\n\n let t = setTimeout(() => {\n // console.log(\"Delay Cleaned\")\n setState(({ [key]: _, ...rest }) => rest)\n }, Math.max(0, keepUntil - Date.now()))\n return () => {\n // console.log(\"Cancel clean\")\n clearTimeout(t)\n };\n }\n }, [nextDelete])\n\n useDataSourceMultiple(ctx,\n [\"subscribe\", subscribeRoot],\n [\"state\", state],\n )\n\n return <>\n {Object\n .entries(state)\n .filter(([, { counter, keepUntil = 0 }]) => counter > 0 || keepUntil >= Date.now())\n .map(([key, { useStateFn, params }]) => <Wrapper key={key}>\n <StateRunner key={key} params={params} useStateFn={useStateFn} debugging={debugging} />\n </Wrapper>)}\n </>\n\n}\n\n/**\n * createAutoCtx\n *\n * Bridges a Root context (from createRootCtx) to the global AutoRootCtx renderer.\n * You do NOT mount the Root component yourself — just mount <AutoRootCtx /> once at the app root.\n *\n * Usage: \n * ```\n * const { useCtxState: useTestCtxState } = createAutoCtx(createRootCtx(\n * 'test-state', \n * stateFn\n * ))\n * const { useCtxState: useOtherCtxState } = createAutoCtx(createRootCtx(\n * 'other-state', \n * otherFn\n * ))\n * ```\n * \n * Then inside components:\n * ```\n * const ctxState = useTestCtxState({ any: 'params' })\n * ```\n * AutoRootCtx will subscribe/unsubscribe instances per unique params and render the appropriate Root under the hood.\n */\nexport const createAutoCtx = <U extends ParamsToIdRecord, V extends Record<string, unknown>>(\n { useRootState, getCtxName, name }: ReturnType<typeof createRootCtx<U, V>>,\n timeToClean = 0\n) => {\n\n return {\n\n useCtxState: (e: U): Context<V> => {\n\n const ctxName = getCtxName(e)\n\n const subscribe = useDataSubscribe(useDataContext<any>(\"auto-ctx\"), \"subscribe\")\n\n useEffect(\n () => subscribe?.(name, useRootState, e, timeToClean),\n [useRootState, subscribe, name, ctxName, timeToClean]\n )\n\n return useDataContext<V>(ctxName)\n }\n }\n}","\nimport { debounce } from \"./utils\";\nimport { useState, useMemo, useEffect } from \"react\";\nimport type { Context } from \"./ctx\";\n\n/**\n * useQuickSubscribe is a custom React hook for efficiently subscribing to specific properties of a context's data object.\n * \n * @template D - The shape of the context data.\n * @param {Context<D> | undefined} ctx - The context object containing data and a subscribe method.\n * @returns {Partial<D>} A proxy object that mirrors the context data, automatically subscribing to properties as they are accessed.\n *\n * This hook tracks which properties of the context data are accessed by the component and subscribes to updates for only those properties.\n * When any of the subscribed properties change, the hook triggers a re-render. Subscriptions are managed and cleaned up automatically\n * when the component unmounts or the context changes. This approach minimizes unnecessary re-renders and resource usage by only\n * subscribing to the data that the component actually uses.\n *\n * Example usage:\n * const {name} = useQuickSubscribe(userContext);\n * // Accessing name will subscribe to changes in 'name' only\n * return <div>{name}</div>;\n */\n\nexport const useQuickSubscribe = <D>(\n ctx: Context<D> | undefined\n): {\n [P in keyof D]?: D[P] | undefined;\n } => {\n\n const [, setCounter] = useState(0);\n\n const { proxy, finalGetter, openGetter, clean } = useMemo(\n () => {\n\n const allKeys = new Set<keyof D>()\n const allCompareValue: { [P in keyof D]?: D[P] | undefined; } = {}\n const allUnsub = new Map()\n\n const proxy = new Proxy(\n ctx?.data as any,\n {\n get(target, p) {\n if (isOpenGetter) {\n allKeys.add(p as keyof D)\n return allCompareValue[p as keyof D] = target[p];\n } else {\n throw new Error(\"useQuickSubscribe: Cannot access context data outside render phase. Destructure needed properties immediately during render.\");\n }\n },\n ownKeys(t) {\n console.warn(`useQuickSubscribe: Rest object operations aren't recommended as they bypass selective subscription and may cause performance issues`);\n return Reflect.ownKeys(t); // unchanged behavior\n },\n\n }\n ) as any\n\n let isOpenGetter = true;\n\n\n let onChange = debounce(() => {\n if ([...allKeys.values()]\n .some(k => allCompareValue[k] != ctx?.data?.[k])) {\n setCounter(c => c + 1)\n }\n }, 0)\n\n let openGetter = () => {\n isOpenGetter = true\n allKeys.clear()\n }\n\n let finalGetter = () => {\n isOpenGetter = false;\n\n [...allKeys.values()]\n .filter(k => !allUnsub.has(k))\n .forEach(k => {\n allUnsub.set(k, ctx?.subscribe(k, onChange))\n });\n\n [...allUnsub.keys()]\n .filter(k => !allKeys.has(k))\n .forEach(k => {\n let unsub = allUnsub.get(k)\n unsub?.();\n allUnsub.delete(k);\n });\n\n }\n\n let clean = () => {\n openGetter();\n finalGetter();\n setCounter(c => c + 1)\n }\n\n return { proxy, finalGetter, openGetter, clean }\n },\n [ctx]\n )\n\n openGetter();\n\n setTimeout(finalGetter, 0)\n\n useEffect(\n () => () => clean(),\n [clean]\n )\n\n return proxy;\n\n\n};\n","import React, { useContext, useMemo } from \"react\";\n\nexport function useHighlight(filterString: string) {\n const highlight = useMemo(\n () => filterString\n ? buildRegex(filterString\n .trim()\n .toLowerCase()\n .split(\" \"), 'gi')\n : undefined,\n [filterString]\n );\n return { highlight };\n}\n\nfunction escapeRegex(str: string) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction buildRegex(words: string[], flags = 'gi') {\n const pattern = words.map(escapeRegex).join('|');\n return new RegExp(`(${pattern})`, flags);\n}\n\nfunction markByToken(text: string, regex: RegExp) {\n const result = [];\n let last = 0;\n for (const match of text.matchAll(regex)) {\n const [m] = match;\n const start = match.index;\n if (start > last) result.push(text.slice(last, start));\n result.push(<mark key={start}>{m}</mark>);\n last = start + m.length;\n }\n if (last < text.length) result.push(text.slice(last));\n return result;\n}\n\nconst highlightCtx = React.createContext<{ highlight?: RegExp }>({\n highlight: undefined\n})\n\nexport const HightlightWrapper: React.FC<{ highlight: string, children: any }> = ({ children, highlight }) => {\n return <highlightCtx.Provider value={useHighlight(highlight)}>\n {children}\n </highlightCtx.Provider>\n}\n\nexport const HighlightString: React.FC<{ text: string; }> = ({ text }) => {\n const { highlight } = useContext(highlightCtx)\n\n const render = useMemo(\n () => highlight ? markByToken(text, highlight) : text,\n [text, highlight]\n );\n\n return <>{render}</>;\n\n};\n","import React, { useMemo } from \"react\";\n\n\nexport type DataViewComponent = React.FC<{ value: any; name: string; }>;\n\nexport const DataViewDefault: DataViewComponent = ({ name, value }) => {\n\n const renderString = useMemo(() => {\n try {\n return JSON.stringify({ [name]: value }, null, 2);\n } catch (error) {\n return String(error);\n }\n }, [name, value]);\n\n return <pre>{renderString}</pre>;\n};\n","import React, { useRef, useEffect } from \"react\";\nimport { getContext } from \"../state-utils/ctx\";\nimport { debounce } from \"../state-utils/utils\";\nimport { HighlightString } from \"./useHighlight\";\n\nexport const StateLabelRender: React.FC<any> = ({ selectedKey, setKey, currentKey, highlight, ...props }) => {\n const ctx = getContext(currentKey);\n const divRef = useRef<HTMLDivElement>(undefined);\n\n useEffect(() => {\n if (divRef.current) {\n let flashKeyDebounce = debounce(() => {\n if (divRef.current) {\n divRef.current?.classList.add(\"state-key-updated\");\n requestAnimationFrame(() => divRef.current?.classList.remove(\"state-key-updated\"));\n }\n }, 5);\n return ctx.subscribeAll(flashKeyDebounce);\n }\n\n }, [ctx, divRef]);\n\n return <div\n ref={divRef}\n className=\"state-key\"\n title={currentKey}\n data-active={currentKey == selectedKey}\n onClick={() => setKey(currentKey)}\n {...props}\n >\n <div className=\"state-key-name\">\n <HighlightString text={String(currentKey)} />\n </div>\n <div className=\"state-key-meta\">\n {Object.keys(ctx.data).length} items\n </div>\n </div>;\n};\n","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"prefixCls\", \"className\", \"children\", \"mode\", \"visiable\", \"visible\", \"renderBar\", \"lineBar\", \"disable\", \"onDragEnd\", \"onDragging\"];\nimport React from 'react';\nimport \"./style/index.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport default class Split extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n dragging: false\n };\n this.warpper = void 0;\n this.paneNumber = void 0;\n this.startX = void 0;\n this.startY = void 0;\n this.move = void 0;\n this.target = void 0;\n this.boxWidth = void 0;\n this.boxHeight = void 0;\n this.preWidth = void 0;\n this.nextWidth = void 0;\n this.preHeight = void 0;\n this.nextHeight = void 0;\n this.preSize = void 0;\n this.nextSize = void 0;\n this.onDragEnd = this.onDragEnd.bind(this);\n this.onDragging = this.onDragging.bind(this);\n }\n componentWillUnmount() {\n this.removeEvent();\n }\n removeEvent() {\n window.removeEventListener('mousemove', this.onDragging, false);\n window.removeEventListener('mouseup', this.onDragEnd, false);\n }\n onMouseDown(paneNumber, env) {\n if (!env.target || !this.warpper) {\n return;\n }\n this.paneNumber = paneNumber;\n this.startX = env.clientX;\n this.startY = env.clientY;\n this.move = true;\n this.target = env.target.parentNode;\n var prevTarget = this.target.previousElementSibling;\n var nextTarget = this.target.nextElementSibling;\n this.boxWidth = this.warpper.clientWidth;\n this.boxHeight = this.warpper.clientHeight;\n if (prevTarget) {\n this.preWidth = prevTarget.clientWidth;\n this.preHeight = prevTarget.clientHeight;\n }\n if (nextTarget) {\n this.nextWidth = nextTarget.clientWidth;\n this.nextHeight = nextTarget.clientHeight;\n }\n window.addEventListener('mousemove', this.onDragging);\n window.addEventListener('mouseup', this.onDragEnd, false);\n this.setState({\n dragging: true\n });\n }\n onDragging(env) {\n if (!this.move) {\n return;\n }\n if (!this.state.dragging) {\n this.setState({\n dragging: true\n });\n }\n var {\n mode,\n onDragging\n } = this.props;\n var nextTarget = this.target.nextElementSibling;\n var prevTarget = this.target.previousElementSibling;\n var x = env.clientX - this.startX;\n var y = env.clientY - this.startY;\n this.preSize = 0;\n this.nextSize = 0;\n if (mode === 'horizontal') {\n this.preSize = this.preWidth + x > -1 ? this.preWidth + x : 0;\n this.nextSize = this.nextWidth - x > -1 ? this.nextWidth - x : 0;\n if (this.preSize === 0 || this.nextSize === 0) {\n return;\n }\n this.preSize = (this.preSize / this.boxWidth >= 1 ? 1 : this.preSize / this.boxWidth) * 100;\n this.nextSize = (this.nextSize / this.boxWidth >= 1 ? 1 : this.nextSize / this.boxWidth) * 100;\n if (prevTarget && nextTarget) {\n prevTarget.style.width = this.preSize + \"%\";\n nextTarget.style.width = this.nextSize + \"%\";\n }\n }\n if (mode === 'vertical' && this.preHeight + y > -1 && this.nextHeight - y > -1) {\n this.preSize = this.preHeight + y > -1 ? this.preHeight + y : 0;\n this.nextSize = this.nextHeight - y > -1 ? this.nextHeight - y : 0;\n this.preSize = (this.preSize / this.boxHeight >= 1 ? 1 : this.preSize / this.boxHeight) * 100;\n this.nextSize = (this.nextSize / this.boxHeight >= 1 ? 1 : this.nextSize / this.boxHeight) * 100;\n if (this.preSize === 0 || this.nextSize === 0) {\n return;\n }\n if (prevTarget && nextTarget) {\n prevTarget.style.height = this.preSize + \"%\";\n nextTarget.style.height = this.nextSize + \"%\";\n }\n }\n onDragging && onDragging(this.preSize, this.nextSize, this.paneNumber);\n }\n onDragEnd() {\n var {\n onDragEnd\n } = this.props;\n this.move = false;\n onDragEnd && onDragEnd(this.preSize, this.nextSize, this.paneNumber);\n this.removeEvent();\n this.setState({\n dragging: false\n });\n }\n render() {\n var _this$props$visible;\n var _this$props = this.props,\n {\n prefixCls,\n className,\n children,\n mode,\n visible = (_this$props$visible = this.props.visible) != null ? _this$props$visible : this.props.visiable,\n renderBar,\n lineBar,\n disable\n } = _this$props,\n other = _objectWithoutPropertiesLoose(_this$props, _excluded);\n var {\n dragging\n } = this.state;\n var cls = [prefixCls, className, prefixCls + \"-\" + mode, dragging ? 'dragging' : null].filter(Boolean).join(' ').trim();\n var child = React.Children.toArray(children);\n return /*#__PURE__*/_jsx(\"div\", _extends({\n className: cls\n }, other, {\n ref: node => this.warpper = node,\n children: React.Children.map(child, (element, idx) => {\n var props = Object.assign({}, element.props, {\n className: [prefixCls + \"-pane\", element.props.className].filter(Boolean).join(' ').trim(),\n style: _extends({}, element.props.style)\n });\n var visibleBar = visible === true || visible && visible.includes(idx + 1) || false;\n var barProps = {\n className: [prefixCls + \"-bar\", lineBar ? prefixCls + \"-line-bar\" : null, !lineBar ? prefixCls + \"-large-bar\" : null].filter(Boolean).join(' ').trim()\n };\n if (disable === true || disable && disable.includes(idx + 1)) {\n barProps.className = [barProps.className, disable ? 'disable' : null].filter(Boolean).join(' ').trim();\n }\n var BarCom = null;\n if (idx !== 0 && visibleBar && renderBar) {\n BarCom = renderBar(_extends({}, barProps, {\n onMouseDown: this.onMouseDown.bind(this, idx + 1)\n }));\n } else if (idx !== 0 && visibleBar) {\n BarCom = /*#__PURE__*/React.createElement('div', _extends({}, barProps), /*#__PURE__*/_jsx(\"div\", {\n onMouseDown: this.onMouseDown.bind(this, idx + 1)\n }));\n }\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [BarCom, /*#__PURE__*/React.cloneElement(element, _extends({}, props))]\n }, idx);\n })\n }));\n }\n}\nSplit.defaultProps = {\n prefixCls: 'w-split',\n visiable: true,\n mode: 'horizontal'\n};","import React, { useEffect, useMemo, useState } from \"react\"\nimport { getContext } from \"../state-utils/ctx\"\nimport { debounce } from \"../state-utils/utils\"\nimport { HightlightWrapper } from \"./useHighlight\"\nimport { DataViewComponent, DataViewDefault } from \"./DataViewComponent\"\nimport { StateLabelRender } from \"./StateLabelRender\"\nimport Split from \"@uiw/react-split\"\nimport \"./DevTool.css\"\n\nconst cache = getContext.cache\n\nexport const DevToolState: React.FC<{ Component: DataViewComponent }> = ({ Component }) => {\n const [allKeys, setKeys] = useState(() => [...cache.keys()])\n const [filterString, setFilterString] = useState(\"\")\n const [selectedKey, setKey] = useState(\"\")\n\n useEffect(() => {\n let t = setInterval(() => {\n setKeys(k => k.length != cache.size\n ? [...cache.keys()]\n : k\n )\n }, 50)\n return () => clearInterval(t)\n }, [cache])\n\n const filterFn = useMemo(\n () => {\n const preFilter = filterString\n .toLowerCase()\n .split(\" \")\n return (e: string) => {\n const sLow = e.toLowerCase()\n return preFilter.every(token => sLow.includes(token))\n }\n },\n [filterString]\n )\n\n\n return <Split mode=\"horizontal\" className=\"main-panel\">\n <div className=\"state-list\">\n <input\n placeholder=\"Type to Filter ...\"\n className=\"state-filter\"\n value={filterString}\n onChange={(ev) => setFilterString(ev.target.value)}\n />\n <HightlightWrapper highlight={filterString}>\n {allKeys\n .map(e => JSON.parse(e)?.[0])\n .filter(e => e != \"auto-ctx\" && e)\n .filter(filterFn)\n .map(currentKey => <StateLabelRender key={currentKey} {...{ selectedKey, setKey, currentKey }} />)}\n </HightlightWrapper>\n\n </div>\n <div className=\"state-view\" >\n <StateView dataKey={selectedKey} key={selectedKey} Component={Component} />\n </div>\n </Split>\n}\n\nexport const StateView: React.FC<{ dataKey: string, Component: DataViewComponent }> = ({ dataKey, Component = DataViewDefault }) => {\n const ctx = getContext(dataKey)\n const [currentData, setCurrentData] = useState({ ...ctx?.data })\n\n useEffect(() => {\n let updateDataDebounce = debounce(setCurrentData, 5)\n return ctx\n .subscribeAll((changeKey, newData) => updateDataDebounce({ ...newData }))\n\n }, [ctx])\n\n return <Component\n value={currentData}\n name={dataKey}\n />\n}\n","import \"./DevTool.css\"\nimport { useState } from \"react\"\nimport { DevToolState } from \"./DevToolState\";\nimport { DataViewDefault } from \"./DataViewComponent\";\nimport Split from '@uiw/react-split';\n\n\nexport const DevToolContainer = ({ toggleButton = \"[x]\", Component = DataViewDefault, ...props }) => {\n const [active, setActive] = useState(false);\n return <>\n <button className=\"react-state-dev-btn\" data-active={active} onClick={() => setActive(true)} {...props}>\n {props?.children ?? \"Toggle Dev Tool\"}\n </button>\n <div className=\"react-state-dev-container\">\n <Split mode=\"vertical\" style={{ height: \"100%\" }}>\n <div style={{ height: active ? \"66.66%\" : \"100%\" }}></div>\n <div className=\"react-state-dev-panel\" style={{\n height: active ? \"33.33%\" : \"0\",\n backgroundColor: \"var(--rs-bg-color)\",\n position: \"relative\"\n }}>\n {active && <button\n className=\"close-btn\"\n onClick={() => setActive(false)}\n >\n [x]\n </button>}\n {active && <DevToolState Component={Component} />}\n </div>\n </Split>\n </div>\n </>\n}"],"names":["ReactSharedInternals","require$$0","reactCompilerRuntime_production","size","reactCompilerRuntime_development","dispatcher","compilerRuntimeModule","require$$1","debounce","func","wait","timeout","fn","args","clearTimeout","setTimeout","cancel","memoize","cache","Map","cachedFunc","key","JSON","stringify","has","get","result","set","randomHash","Math","random","toString","slice","useArrayChangeId","e","ref","useRef","values","id","isDiff","current","length","some","f","i","CHANGE_EVENT","DataEvent","Event","constructor","event","value","String","ChangeEvent","Context","EventTarget","name","data","registry","Set","useCounter","publish","dispatchEvent","subscribe","_listener","listener","addEventListener","removeEventListener","subscribeAll","getContext","useDataContext","ctx","useMemo","useEffect","delete","useRegistryChecker","t0","$","_c","names","Error","t1","forEach","add","e_0","t2","useDataSource","useDataSubscribe","debounceTime","undefined","setState","useState","t3","callback","value_0","value_1","unsub","t4","useDataSubscribeWithTransform","transform","preValue","newValue","useDataSourceMultiple","entries","flat","map","useDataSubscribeMultiple","keys","setCounter","returnValues","prevValues","currentValues","key_1","_temp","handles","key_2","firstCall","_temp2","t5","key_3","index","Object","fromEntries","useDataSubscribeMultipleWithDebounce","_temp3","_temp4","c","paramsToId","params","sort","join","createRootCtx","useFn","getCtxName","filter","Boolean","ctxMountedCheck","useRootState","state","ctxName","Symbol","for","stack","err","Debug","jsx","Fragment","RootState","displayName","Root","useCtxStateStrict","useCtxState","console","error","DebugState","StateRunner","useStateFn","debugging","AutoRootCtx","Wrapper","subscribeRoot","useCallback","contextName","timeToCleanState","recordKey","counter","keepUntil","rest","Date","now","nextDelete","toSorted","k1","k2","at","t","_","max","createAutoCtx","timeToClean","useQuickSubscribe","proxy","finalGetter","openGetter","clean","allKeys","allCompareValue","allUnsub","Proxy","target","p","isOpenGetter","ownKeys","warn","Reflect","onChange","k","clear","useHighlight","filterString","buildRegex","trim","toLowerCase","split","highlight","escapeRegex","str","replace","words","flags","pattern","RegExp","markByToken","text","regex","last","match","matchAll","m","start","push","highlightCtx","React","createContext","HightlightWrapper","children","HighlightString","useContext","render","DataViewDefault","renderString","StateLabelRender","currentKey","props","selectedKey","setKey","divRef","flashKeyDebounce","classList","requestAnimationFrame","remove","t6","t7","t8","t9","jsxs","t10","_extends","r","_objectWithoutPropertiesLoose","n","_excluded","Split","paneNumber","env","prevTarget","nextTarget","mode","onDragging","x","y","onDragEnd","_this$props$visible","_this$props","prefixCls","className","visible","renderBar","lineBar","disable","other","dragging","cls","child","_jsx","node","element","idx","visibleBar","barProps","BarCom","_jsxs","DevToolState","Component","setKeys","setFilterString","setInterval","clearInterval","preFilter","sLow","every","token","includes","filterFn","ev","StateView","t11","dataKey","currentData","setCurrentData","updateDataDebounce","changeKey","newData","parse","e_1","DevToolContainer","toggleButton","active","setActive","height","backgroundColor","position","t12","t13","t14","t15"],"mappings":"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","x_google_ignoreList":[0,1,2,13,14,15]}
1
+ {"version":3,"file":"index.umd.js","sources":["../node_modules/react/cjs/react-compiler-runtime.production.js","../node_modules/react/cjs/react-compiler-runtime.development.js","../node_modules/react/compiler-runtime.js","../src/state-utils/utils.ts","../src/state-utils/useArrayChangeId.ts","../src/state-utils/ctx.ts","../src/state-utils/paramsToId.tsx","../src/state-utils/createRootCtx.tsx","../src/state-utils/createAutoCtx.tsx","../src/state-utils/useQuickSubscribe.ts","../src/dev-tool/useHighlight.tsx","../src/dev-tool/DataViewComponent.tsx","../src/dev-tool/StateLabelRender.tsx","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@uiw/react-split/esm/index.js","../src/dev-tool/DevToolState.tsx","../src/dev-tool/DevTool.tsx"],"sourcesContent":["/**\n * @license React\n * react-compiler-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nexports.c = function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n};\n","/**\n * @license React\n * react-compiler-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n var ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n exports.c = function (size) {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher.useMemoCache(size);\n };\n })();\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-compiler-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-compiler-runtime.development.js');\n}\n","// Debounce function\nexport function debounce<T extends (...args: any[]) => any>(\n func: T,\n wait: number\n): ((...args: Parameters<T>) => void) & { cancel: any } {\n let timeout: ReturnType<typeof setTimeout> | null = null;\n\n let fn: Function & { cancel: any } = function (...args: Parameters<T>): void {\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n func(...args);\n }, wait);\n } as any;\n\n fn.cancel = () => clearTimeout(timeout!);\n\n return fn as any;\n}\n\n// Memoize function\nexport function memoize<T extends (...args: any[]) => any>(\n func: T\n): ((...args: Parameters<T>) => ReturnType<T>) & { cache: Map<string, ReturnType<T>> } {\n \n const cache = new Map<string, ReturnType<T>>();\n\n const cachedFunc: any = function (...args: Parameters<T>): ReturnType<T> {\n const key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key) as ReturnType<T>;\n }\n const result = func(...args);\n cache.set(key, result);\n return result;\n }\n\n cachedFunc.cache = cache;\n\n return cachedFunc\n}\n\n","import { useRef } from \"react\"\n\n\nconst randomHash = () => Math.random().toString().slice(2)\n\n/**\n * useArrayChangeId\n *\n * A custom hook that generates a stable change identifier for an array of values.\n * The identifier changes only when the array's contents differ from the previous call.\n *\n * @param e - The input array to track.\n * @returns A string identifier that updates when the array changes.\n *\n * How it works:\n * - Tracks the previous array and its identifier using a `useRef`.\n * - Compares the new array to the previous one by length and element equality (shallow comparison).\n * - If any difference is detected, generates a new random identifier.\n * \n * Note: Uses shallow comparison - compares array length and element references using `!=`.\n * For objects and nested arrays, only references are compared, not deep values.\n */\nexport const useArrayChangeId = (e: any[]): string => {\n const ref = useRef<{ values: any[]; id: string }>({\n values: [],\n id: randomHash()\n })\n\n // Check for differences in array existence, length, or elements\n let isDiff = false\n isDiff = isDiff || ((!e) != (!ref.current.values))\n isDiff = isDiff || (e?.length != ref.current.values?.length)\n isDiff = isDiff || (e?.some((f, i) => f != ref.current.values[i]))\n\n // Update the identifier if differences are found\n if (isDiff) {\n ref.current.values = e\n ref.current.id = randomHash()\n }\n\n return ref.current.id\n}","import { debounce, memoize } from \"./utils\";\nimport { useEffect, useMemo, useState } from \"react\"\nimport { useArrayChangeId } from \"./useArrayChangeId\"\n\n\n\nconst CHANGE_EVENT = \"@--change-event\"\n\nclass DataEvent<D> extends Event {\n constructor(\n public event: keyof D,\n public value: D[typeof event] | undefined\n ) {\n super(String(event));\n }\n}\n\nclass ChangeEvent<D> extends Event {\n constructor(\n public value: DataEvent<D>\n ) {\n super(CHANGE_EVENT, value);\n }\n}\n\n/**\n * Generic context for managing shared state and event subscriptions.\n * @template D - The shape of the data managed by the context.\n */\nexport class Context<D> extends EventTarget {\n /**\n * Create a new Context instance.\n * @param name - The name of the context (for debugging).\n */\n constructor(public name: string) {\n // console.log(\"[CONTEXT] %s\", name)\n // this.event.setMaxListeners(100)\n super();\n }\n\n /**\n * The current data held by the context.\n */\n public data: Partial<D> = {}\n /**\n * Registry for tracking active keys (for duplicate detection).\n */\n public registry = new Set<string>()\n\n public useCounter = 0\n\n /**\n * Publish a value to the context and notify subscribers if it changed.\n * @param key - The key to update.\n * @param value - The new value.\n */\n public publish(key: keyof D, value: D[typeof key] | undefined) {\n\n if (value != this.data[key]) {\n this.data[key] = value\n let event = new DataEvent(key, value);\n this.dispatchEvent(event);\n this.dispatchEvent(new ChangeEvent(event))\n }\n }\n\n /**\n * Subscribe to changes for a specific key in the context.\n * @param key - The key to subscribe to.\n * @param _listener - Callback invoked with the new value.\n * @returns Unsubscribe function.\n */\n public subscribe(key: keyof D, _listener: (e: D[typeof key] | undefined) => void) {\n\n const listener = ({ event, value }: any) => {\n _listener(value)\n }\n\n this.addEventListener(String(key), listener)\n // console.log(\"listenerCount:\", String(key), this.event.listenerCount(String(key)))\n\n if (key in this.data) _listener(this.data[key])\n\n return () => this.removeEventListener(String(key), listener)\n }\n\n public subscribeAll(_listener: (changeKey: keyof D, newData: Partial<D>) => void) {\n\n const listener = (event: any) => {\n if (event instanceof ChangeEvent) {\n const { value: data } = event\n _listener(data.event as any as keyof D, this.data)\n }\n }\n\n this.addEventListener(String(CHANGE_EVENT), listener)\n\n return () => this.removeEventListener(String(CHANGE_EVENT), listener)\n\n }\n\n}\n\n/**\n * Get or create a memoized Context instance by name.\n * @param name - The context name.\n * @returns The Context instance.\n */\nexport const getContext = memoize((name: string) => new Context<any>(name))\n\n/**\n * Type alias for a function that returns a Context instance.\n */\nexport type getContext<D> = (e: string) => Context<D>\n\n/**\n * React hook to get a typed Context instance by name.\n * @param name - The context name.\n * @returns The Context instance.\n */\nexport const useDataContext = <D>(name: string = \"noname\") => {\n const ctx = useMemo(() => getContext(name), [name])\n useEffect(() => {\n ctx.useCounter += 1;\n return () => {\n ctx.useCounter -= 1;\n if (ctx.useCounter <= 0) {\n setTimeout(() => {\n if (ctx.useCounter <= 0) {\n getContext.cache.delete(JSON.stringify([name]))\n }\n }, 100)\n }\n }\n }, [ctx])\n\n return ctx as any as Context<D>\n}\n\n/**\n * Internal hook to check for duplicate registry entries in a context.\n * Warns if any of the provided names are already registered.\n * @param ctx - The context instance.\n * @param names - Names to check and register.\n */\nconst useRegistryChecker = (ctx: Context<any> | undefined, ...names: string[]) => {\n // return;\n const stack = new Error(\"[ctx] useRegistryChecker failed \" + JSON.stringify({ names, ctx: ctx?.name ?? 'undefined' }))\n\n useEffect(\n () => {\n if (ctx) {\n if (names.some(name => ctx.registry.has(name))) {\n // console.error(stack)\n }\n names.forEach(e => ctx.registry.add(e))\n\n // console.debug(\"[ctx] %s%s add datasource\", componentId, ctx.name, names)\n return () => {\n // console.debug(\"[ctx] %s %s remove datasource\", componentId, ctx.name, names)\n\n names.forEach(e => ctx.registry.delete(e))\n }\n }\n },\n [ctx, names.length]\n )\n\n}\n\n/**\n * React hook to publish a value to the context when it changes.\n * @param ctx - The context instance.\n * @param key - The key to update.\n * @param value - The new value.\n */\nexport const useDataSource = <D, K extends keyof D>(ctx: Context<D> | undefined, key: K, value: D[K] | undefined) => {\n //@ts-check\n useEffect(() => {\n if (ctx && ctx.data[key] != value) {\n\n ctx.publish(key, value)\n }\n }, [key, value, ctx])\n\n useRegistryChecker(ctx, key as any)\n}\n\n/**\n * React hook to subscribe to a context value, with optional debounce.\n * @param ctx - The context instance.\n * @param key - The key to subscribe to.\n * @param debounceTime - Debounce time in ms (default 0).\n * @returns The current value for the key.\n */\nexport const useDataSubscribe = <D, K extends keyof D>(ctx: Context<D> | undefined, key: K, debounceTime = 0): D[K] | undefined => {\n //@ts-check\n const [{ value }, setState] = useState(() => ({ value: ctx?.data?.[key] }))\n\n useEffect(() => {\n if (ctx) {\n let callback = debounceTime == 0\n ? (value: any) => setState({ value } as any)\n : debounce((value: any) => setState({ value } as any), debounceTime)\n let unsub = ctx.subscribe(key, callback)\n value != ctx.data[key] && setState({ value: ctx.data[key] })\n return () => {\n unsub()\n }\n }\n }, [key, ctx])\n\n return ctx?.data[key]\n}\n\n/**\n * React hook to subscribe to a context value and transform it before returning.\n * @param ctx - The context instance.\n * @param key - The key to subscribe to.\n * @param transform - Function to transform the value.\n * @returns The transformed value.\n */\nexport const useDataSubscribeWithTransform = <D, K extends keyof D, E>(ctx: Context<D> | undefined, key: K, transform: (e: D[K] | undefined) => E): E => {\n const [, setState] = useState(0)\n const result = useMemo(\n () => transform(ctx?.data[key]),\n [transform, ctx?.data[key]]\n )\n\n useEffect(() => {\n if (ctx) {\n let preValue = result\n let callback = () => {\n let newValue = transform(ctx.data[key])\n if (newValue != preValue) {\n preValue = newValue;\n setState(e => e + 1)\n };\n }\n let unsub = ctx.subscribe(key, callback)\n callback();\n return () => unsub()\n }\n }, [key, ctx])\n\n return result\n}\n\n/**\n * React hook to publish multiple values to the context.\n * @param ctx - The context instance.\n * @param entries - Array of [key, value] pairs to update.\n */\nexport const useDataSourceMultiple = <D, T extends readonly (keyof D)[]>(\n ctx: Context<D> | undefined,\n ...entries: { -readonly [P in keyof T]: [T[P], D[T[P]]] }\n) => {\n //@ts-check\n useEffect(() => {\n if (ctx) {\n for (let [key, value] of entries) {\n ctx.data[key] != value && ctx.publish(key, value)\n }\n }\n }, [ctx, useArrayChangeId(entries.flat())])\n\n useRegistryChecker(ctx, ...entries.map(e => e[0]) as any)\n\n}\n\n/**\n * React hook to subscribe to multiple context values.\n * @param ctx - The context instance.\n * @param keys - Keys to subscribe to.\n * @returns An object with the current values for the keys.\n */\nexport const useDataSubscribeMultiple = <D, K extends readonly (keyof D)[]>(\n ctx: Context<D> | undefined,\n ...keys: K\n): { [P in K[number]]: D[P] | undefined } => {\n const [, setCounter] = useState(0)\n\n const returnValues = keys.map(key => ctx?.data?.[key])\n\n useEffect(() => {\n if (ctx) {\n let prevValues = returnValues\n const callback = debounce(() => {\n let currentValues = keys.map(key => ctx?.data?.[key])\n if (keys.some((key, i) => prevValues[i] != currentValues[i])) {\n // console.log(\"DIFF\", keys.filter((e, i) => prevValues[i] != currentValues[i]))\n prevValues = currentValues\n setCounter(c => c + 1)\n }\n }, 1)\n\n let handles = keys.map(key => ctx.subscribe(key, callback))\n\n let firstCall = setTimeout(callback, 1);\n\n return () => {\n clearTimeout(firstCall)\n callback.cancel();\n handles.forEach(unsub => unsub())\n }\n\n }\n }, [ctx, ...keys])\n\n\n return Object\n .fromEntries(keys.map((key, index) => [key, returnValues[index]])) as any\n}\n\n/**\n * React hook to subscribe to multiple context values with throttling.\n * @param ctx - The context instance.\n * @param debounceTime - Debounce time in ms (default 50).\n * @param keys - Keys to subscribe to.\n * @returns Array of current values for the keys.\n */\nexport const useDataSubscribeMultipleWithDebounce = <D, K extends (keyof D)[]>(\n ctx: Context<D> | undefined,\n debounceTime = 50,\n ...keys: K\n): { [i in keyof K]: D[K[i]] | undefined } => {\n //@ts-check\n const [, setCounter] = useState(0)\n\n const returnValues = keys.map(key => ctx?.data?.[key])\n\n useEffect(() => {\n if (ctx) {\n let prevValues = returnValues\n const callback = debounce(() => {\n let currentValues = keys.map(key => ctx?.data?.[key])\n if (keys.some((key, i) => prevValues[i] != currentValues[i])) {\n prevValues = currentValues\n setCounter(c => c + 1)\n }\n }, debounceTime)\n\n let handles = keys.map(key => ctx.subscribe(key, callback))\n\n let firstCall = setTimeout(callback, 1);\n\n return () => {\n clearTimeout(firstCall)\n callback.cancel();\n handles.forEach(unsub => unsub())\n }\n\n }\n }, [ctx, ...keys])\n\n return returnValues as any\n}\n\n\n\n","\nexport type ParamsToIdRecord = Record<string, string | number | bigint | boolean | null | undefined>\nexport type ParamsToIdInput = ParamsToIdRecord | undefined\n\n/**\n * Converts a parameters object into a deterministic string identifier.\n * \n * This function creates a consistent string representation of parameters by:\n * - Sorting keys alphabetically to ensure deterministic output\n * - Validating that all values are primitive types\n * - Joining key-value pairs with '&' separator\n * \n * @param params - Object containing string, number, bigint, boolean, null, or undefined values.\n * Defaults to undefined if not provided.\n * @returns A string identifier in the format \"key1=value1&key2=value2\"\n * \n * @throws {Error} When any parameter value is an object (non-primitive type)\n * \n * @example\n * ```typescript\n * paramsToId({ name: \"john\", age: 30 }) // Returns \"age=30&name=john\"\n * paramsToId({ id: null, active: true }) // Returns \"active=true&id=null\"\n * paramsToId() // Returns \"\"\n * ```\n */\nexport const paramsToId = (params: ParamsToIdInput = undefined) => Object\n .keys(params ?? {})\n .sort()\n .map(key => {\n const value = params?.[key];\n if (\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\")\n ) {\n throw new Error(`Parameter \"${key}\" must be a primitive value (string, number, bigint, null, or undefined), but received ${typeof value}`)\n }\n return key + '=' + value\n })\n .join(\"&\");\n","import { useEffect, useMemo } from \"react\"\nimport { useDataContext, useDataSourceMultiple, type Context } from \"./ctx\"\nimport { paramsToId, type ParamsToIdRecord } from \"./paramsToId\"\n// import { debugObjTime } from \"./debugObjTime\"\n\n\n/**\n * createRootCtx\n *\n * Factory that creates a headless \"Root\" component and companion hooks for a context namespace.\n * It derives a unique context name from a base `name` and a props object `U`, then publishes\n * a computed state `V` (from `useFn`) to that context.\n *\n * Usage (manual mounting):\n * ```\n * const { Root, useCtxState } = createRootCtx('user-state', useUserState)\n * ...\n * // Mount exactly one Root per unique props combination\n * <Root userId={id} />\n * ...\n * // Read anywhere ,using the same props shape\n * const user = useCtxState({ userId: id })\n *```\n * Strict vs lenient consumers:\n * - useCtxStateStrict(props) throws if a matching Root is not mounted.\n * - useCtxState(props) logs an error (after 1s) instead of throwing.\n *\n * Multiple instances safety:\n * - Mounting more than one Root with the same resolved context name throws (guards accidental duplicates).\n *\n * Name resolution notes:\n * - The context name is built from `name` + sorted key/value pairs of `props` (U), joined by \"-\".\n * - Prefer stable, primitive props to avoid collisions; if you need automation, pair with `createAutoCtx` and\n * mount a single <AutoRootCtx Wrapper={ErrorBoundary} /> at the app root so you don't manually mount `Root`.\n */\nexport const createRootCtx = <U extends ParamsToIdRecord, V extends Record<string, unknown>>(name: string, useFn: (e: U) => V) => {\n\n const getCtxName = (e: U) => [name, paramsToId(e)]\n .filter(Boolean)\n .join(\"?\");\n\n const ctxMountedCheck = new Set<string>()\n\n const useRootState = (e: U) => {\n const state = useFn(e)\n const ctxName = getCtxName(e)\n const ctx = useDataContext<V>(ctxName)\n const stack = useMemo(() => new Error().stack, [])\n\n useDataSourceMultiple(\n ctx,\n ...Object.entries(state) as any\n )\n\n useEffect(() => {\n if (ctxMountedCheck.has(ctxName)) {\n const err = new Error(\"RootContext \" + ctxName + \" are mounted more than once\")\n err.stack = stack;\n throw err\n }\n ctxMountedCheck.add(ctxName)\n return () => { ctxMountedCheck.delete(ctxName) };\n })\n\n return state;\n }\n\n const Debug = ({ }) => <></>\n\n const RootState: React.FC<U> = (e: U) => {\n const state = useRootState(e);\n return <Debug {...e} {...state} />\n }\n\n useRootState.displayName = `useState[${name}]`\n RootState.displayName = `StateContainer[${name}]`\n Debug.displayName = `Debug[${name}]`\n\n return {\n name,\n getCtxName,\n useRootState,\n Root: RootState,\n /**\n * Strict consumer: throws if the corresponding Root for these props isn't mounted.\n * Use in development/tests to fail fast when wiring is incorrect.\n */\n useCtxStateStrict: (e: U): Context<V> => {\n const ctxName = getCtxName(e)\n\n const stack = useMemo(() => new Error().stack, [])\n\n useEffect(() => {\n if (!ctxMountedCheck.has(ctxName)) {\n const err = new Error(\"RootContext [\" + ctxName + \"] is not mounted\")\n err.stack = stack;\n throw err\n }\n }, [ctxName])\n\n return useDataContext<V>(ctxName)\n },\n /**\n * Lenient consumer: schedules a console.error if the Root isn't mounted instead of throwing.\n * Useful in production to avoid hard crashes while still surfacing misconfiguration.\n */\n useCtxState: (e: U): Context<V> => {\n const ctxName = getCtxName(e)\n\n const stack = useMemo(() => new Error().stack, [])\n\n useEffect(() => {\n if (!ctxMountedCheck.has(ctxName)) {\n const err = new Error(\"RootContext [\" + ctxName + \"] is not mounted\")\n err.stack = stack;\n let timeout = setTimeout(() => console.error(err), 1000)\n return () => clearTimeout(timeout)\n }\n }, [ctxMountedCheck.has(ctxName)])\n\n return useDataContext<V>(ctxName)\n }\n }\n}","import { useEffect, useState, Fragment, useCallback, useMemo, Activity } from \"react\"\nimport { useDataContext, useDataSourceMultiple, useDataSubscribe, type Context } from \"./ctx\"\nimport { createRootCtx } from \"./createRootCtx\"\nimport { paramsToId, type ParamsToIdRecord } from \"./paramsToId\"\n\n\n\nconst DebugState = ({ }) => <></>\n\nconst StateRunner: React.FC<{ useStateFn: Function, params: ParamsToIdRecord, debugging: boolean }> = ({ useStateFn, params, debugging }) => {\n const state = useStateFn(params)\n return debugging ? <DebugState {...state} /> : <></>\n}\n\n\n/**\n * Inline docs: createAutoCtx + AutoRootCtx\n *\n * Quick start\n * 1) Mount <AutoRootCtx /> ONCE near your app root. Provide a Wrapper that acts like an ErrorBoundary to isolate and log errors.\n * Example: <AutoRootCtx Wrapper={MyErrorBoundary} />\n *\n * 2) Create auto contexts from your root context factories:\n * ```\n * const { useCtxState: useTestCtxState } = createAutoCtx(createRootCtx('test-state', stateFn))\n * const { useCtxState: useOtherCtxState } = createAutoCtx(createRootCtx('other-state', otherFn))\n * ```\n * 3) Use them in components:\n * ```\n * const ctx = useTestCtxState({ userId })\n * const { property1, property2 } = useDataSubscribeMultiple(ctx,'property1','property2')\n * // No need to mount the Root returned by createRootCtx directly — AutoRootCtx manages it for you.\n * ```\n * Notes\n * - AutoRootCtx must be mounted before any useCtxState hooks created by createAutoCtx run.\n * - Wrapper should be an ErrorBoundary-like component that simply renders {children}; no extra providers or layout required.\n * - For each unique params object (by stable stringified key), AutoRootCtx ensures a corresponding Root instance is rendered.\n */\n\nexport const AutoRootCtx: React.FC<{ Wrapper?: React.FC<any>, debugging?: boolean }> = ({ Wrapper = Fragment, debugging = false }) => {\n\n const ctx = useDataContext<any>(\"auto-ctx\")\n\n const [state, setState] = useState<Record<string, {\n useStateFn: Function,\n params: ParamsToIdRecord,\n // paramKey: string,\n counter: number,\n keepUntil?: number\n }>>({})\n\n\n const subscribeRoot = useCallback(\n (contextName: string, useStateFn: Function, params: ParamsToIdRecord, timeToCleanState = 0) => {\n\n const recordKey = [contextName, paramsToId(params)].filter(Boolean).join(\"?\")\n\n\n setState(state => ({\n ...state,\n [recordKey]: {\n ...state[recordKey] ?? { useStateFn, params },\n counter: (state[recordKey]?.counter ?? 0) + 1,\n keepUntil: undefined,\n useStateFn,\n }\n }))\n\n return () => setState(({ [recordKey]: current, ...rest }) => ({\n ...rest,\n ...(current?.counter > 1 || timeToCleanState > 0) ? {\n [recordKey]: {\n ...current,\n counter: current.counter - 1,\n keepUntil: current.counter > 1 ? undefined : (Date.now() + timeToCleanState),\n }\n } : {}\n }))\n\n },\n []\n )\n\n const nextDelete = useMemo(() => Object.entries(state)\n .filter(([, { counter, keepUntil }]) => counter <= 0 && keepUntil)\n .toSorted(([, { keepUntil: k1 = 0 }], [, { keepUntil: k2 = 0 }]) => k1 - k2)\n ?.at(0),\n [state]\n )\n\n useEffect(() => {\n if (nextDelete) {\n const [key, { keepUntil }] = nextDelete\n if (typeof keepUntil == 'undefined')\n throw new Error(\"Invalid state mgr\")\n\n let t = setTimeout(() => {\n // console.log(\"Delay Cleaned\")\n setState(({ [key]: _, ...rest }) => rest)\n }, Math.max(0, keepUntil - Date.now()))\n return () => {\n // console.log(\"Cancel clean\")\n clearTimeout(t)\n };\n }\n }, [nextDelete])\n\n useDataSourceMultiple(ctx,\n [\"subscribe\", subscribeRoot],\n [\"state\", state],\n )\n\n return <>\n {Object\n .entries(state)\n .filter(([, { counter, keepUntil = 0 }]) => counter > 0 || keepUntil >= Date.now())\n .map(([key, { useStateFn, params }]) => <Wrapper key={key}>\n <StateRunner key={key} params={params} useStateFn={useStateFn} debugging={debugging} />\n </Wrapper>)}\n </>\n\n}\n\n/**\n * createAutoCtx\n *\n * Bridges a Root context (from createRootCtx) to the global AutoRootCtx renderer.\n * You do NOT mount the Root component yourself — just mount <AutoRootCtx /> once at the app root.\n *\n * Usage: \n * ```\n * const { useCtxState: useTestCtxState } = createAutoCtx(createRootCtx(\n * 'test-state', \n * stateFn\n * ))\n * const { useCtxState: useOtherCtxState } = createAutoCtx(createRootCtx(\n * 'other-state', \n * otherFn\n * ))\n * ```\n * \n * Then inside components:\n * ```\n * const ctxState = useTestCtxState({ any: 'params' })\n * ```\n * AutoRootCtx will subscribe/unsubscribe instances per unique params and render the appropriate Root under the hood.\n */\nexport const createAutoCtx = <U extends ParamsToIdRecord, V extends Record<string, unknown>>(\n { useRootState, getCtxName, name }: ReturnType<typeof createRootCtx<U, V>>,\n timeToClean = 0\n) => {\n\n return {\n\n useCtxState: (e: U): Context<V> => {\n\n const ctxName = getCtxName(e)\n\n const subscribe = useDataSubscribe(useDataContext<any>(\"auto-ctx\"), \"subscribe\")\n\n useEffect(\n () => subscribe?.(name, useRootState, e, timeToClean),\n [useRootState, subscribe, name, ctxName, timeToClean]\n )\n\n return useDataContext<V>(ctxName)\n }\n }\n}","\nimport { debounce } from \"./utils\";\nimport { useState, useMemo, useEffect } from \"react\";\nimport type { Context } from \"./ctx\";\n\n/**\n * useQuickSubscribe is a custom React hook for efficiently subscribing to specific properties of a context's data object.\n * \n * @template D - The shape of the context data.\n * @param {Context<D> | undefined} ctx - The context object containing data and a subscribe method.\n * @returns {Partial<D>} A proxy object that mirrors the context data, automatically subscribing to properties as they are accessed.\n *\n * This hook tracks which properties of the context data are accessed by the component and subscribes to updates for only those properties.\n * When any of the subscribed properties change, the hook triggers a re-render. Subscriptions are managed and cleaned up automatically\n * when the component unmounts or the context changes. This approach minimizes unnecessary re-renders and resource usage by only\n * subscribing to the data that the component actually uses.\n *\n * Example usage:\n * const {name} = useQuickSubscribe(userContext);\n * // Accessing name will subscribe to changes in 'name' only\n * return <div>{name}</div>;\n */\n\nexport const useQuickSubscribe = <D>(\n ctx: Context<D> | undefined\n): {\n [P in keyof D]?: D[P] | undefined;\n } => {\n\n const [, setCounter] = useState(0);\n\n const { proxy, finalGetter, openGetter, clean } = useMemo(\n () => {\n\n const allKeys = new Set<keyof D>()\n const allCompareValue: { [P in keyof D]?: D[P] | undefined; } = {}\n const allUnsub = new Map()\n\n const proxy = new Proxy(\n ctx?.data as any,\n {\n get(target, p) {\n if (isOpenGetter) {\n allKeys.add(p as keyof D)\n return allCompareValue[p as keyof D] = target[p];\n } else {\n throw new Error(\"useQuickSubscribe: Cannot access context data outside render phase. Destructure needed properties immediately during render.\");\n }\n },\n ownKeys(t) {\n console.warn(`useQuickSubscribe: Rest object operations aren't recommended as they bypass selective subscription and may cause performance issues`);\n return Reflect.ownKeys(t); // unchanged behavior\n },\n\n }\n ) as any\n\n let isOpenGetter = true;\n\n\n let onChange = debounce(() => {\n if ([...allKeys.values()]\n .some(k => allCompareValue[k] != ctx?.data?.[k])) {\n setCounter(c => c + 1)\n }\n }, 0)\n\n let openGetter = () => {\n isOpenGetter = true\n allKeys.clear()\n }\n\n let finalGetter = () => {\n isOpenGetter = false;\n\n [...allKeys.values()]\n .filter(k => !allUnsub.has(k))\n .forEach(k => {\n allUnsub.set(k, ctx?.subscribe(k, onChange))\n });\n\n [...allUnsub.keys()]\n .filter(k => !allKeys.has(k))\n .forEach(k => {\n let unsub = allUnsub.get(k)\n unsub?.();\n allUnsub.delete(k);\n });\n\n }\n\n let clean = () => {\n openGetter();\n finalGetter();\n setCounter(c => c + 1)\n }\n\n return { proxy, finalGetter, openGetter, clean }\n },\n [ctx]\n )\n\n openGetter();\n\n setTimeout(finalGetter, 0)\n\n useEffect(\n () => () => clean(),\n [clean]\n )\n\n return proxy;\n\n\n};\n","import React, { useContext, useMemo } from \"react\";\n\nexport function useHighlight(filterString: string) {\n const highlight = useMemo(\n () => filterString\n ? buildRegex(filterString\n .trim()\n .toLowerCase()\n .split(\" \"), 'gi')\n : undefined,\n [filterString]\n );\n return { highlight };\n}\n\nfunction escapeRegex(str: string) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction buildRegex(words: string[], flags = 'gi') {\n const pattern = words.map(escapeRegex).join('|');\n return new RegExp(`(${pattern})`, flags);\n}\n\nfunction markByToken(text: string, regex: RegExp) {\n const result = [];\n let last = 0;\n for (const match of text.matchAll(regex)) {\n const [m] = match;\n const start = match.index;\n if (start > last) result.push(text.slice(last, start));\n result.push(<mark key={start}>{m}</mark>);\n last = start + m.length;\n }\n if (last < text.length) result.push(text.slice(last));\n return result;\n}\n\nconst highlightCtx = React.createContext<{ highlight?: RegExp }>({\n highlight: undefined\n})\n\nexport const HightlightWrapper: React.FC<{ highlight: string, children: any }> = ({ children, highlight }) => {\n return <highlightCtx.Provider value={useHighlight(highlight)}>\n {children}\n </highlightCtx.Provider>\n}\n\nexport const HighlightString: React.FC<{ text: string; }> = ({ text }) => {\n const { highlight } = useContext(highlightCtx)\n\n const render = useMemo(\n () => highlight ? markByToken(text, highlight) : text,\n [text, highlight]\n );\n\n return <>{render}</>;\n\n};\n","import React, { useMemo } from \"react\";\n\n\nexport type DataViewComponent = React.FC<{ value: any; name: string; }>;\n\nexport const DataViewDefault: DataViewComponent = ({ name, value }) => {\n\n const renderString = useMemo(() => {\n try {\n return JSON.stringify({ [name]: value }, null, 2);\n } catch (error) {\n return String(error);\n }\n }, [name, value]);\n\n return <pre>{renderString}</pre>;\n};\n","import React, { useRef, useEffect } from \"react\";\nimport { getContext } from \"../state-utils/ctx\";\nimport { debounce } from \"../state-utils/utils\";\nimport { HighlightString } from \"./useHighlight\";\n\nexport const StateLabelRender: React.FC<any> = ({ selectedKey, setKey, currentKey, highlight, ...props }) => {\n const ctx = getContext(currentKey);\n const divRef = useRef<HTMLDivElement>(undefined);\n\n useEffect(() => {\n if (divRef.current) {\n let flashKeyDebounce = debounce(() => {\n if (divRef.current) {\n divRef.current?.classList.add(\"state-key-updated\");\n requestAnimationFrame(() => divRef.current?.classList.remove(\"state-key-updated\"));\n }\n }, 5);\n return ctx.subscribeAll(flashKeyDebounce);\n }\n\n }, [ctx, divRef]);\n\n return <div\n ref={divRef}\n className=\"state-key\"\n title={currentKey}\n data-active={currentKey == selectedKey}\n onClick={() => setKey(currentKey)}\n {...props}\n >\n <div className=\"state-key-name\">\n <HighlightString text={String(currentKey)} />\n </div>\n <div className=\"state-key-meta\">\n {Object.keys(ctx.data).length} items\n </div>\n </div>;\n};\n","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"prefixCls\", \"className\", \"children\", \"mode\", \"visiable\", \"visible\", \"renderBar\", \"lineBar\", \"disable\", \"onDragEnd\", \"onDragging\"];\nimport React from 'react';\nimport \"./style/index.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport default class Split extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n dragging: false\n };\n this.warpper = void 0;\n this.paneNumber = void 0;\n this.startX = void 0;\n this.startY = void 0;\n this.move = void 0;\n this.target = void 0;\n this.boxWidth = void 0;\n this.boxHeight = void 0;\n this.preWidth = void 0;\n this.nextWidth = void 0;\n this.preHeight = void 0;\n this.nextHeight = void 0;\n this.preSize = void 0;\n this.nextSize = void 0;\n this.onDragEnd = this.onDragEnd.bind(this);\n this.onDragging = this.onDragging.bind(this);\n }\n componentWillUnmount() {\n this.removeEvent();\n }\n removeEvent() {\n window.removeEventListener('mousemove', this.onDragging, false);\n window.removeEventListener('mouseup', this.onDragEnd, false);\n }\n onMouseDown(paneNumber, env) {\n if (!env.target || !this.warpper) {\n return;\n }\n this.paneNumber = paneNumber;\n this.startX = env.clientX;\n this.startY = env.clientY;\n this.move = true;\n this.target = env.target.parentNode;\n var prevTarget = this.target.previousElementSibling;\n var nextTarget = this.target.nextElementSibling;\n this.boxWidth = this.warpper.clientWidth;\n this.boxHeight = this.warpper.clientHeight;\n if (prevTarget) {\n this.preWidth = prevTarget.clientWidth;\n this.preHeight = prevTarget.clientHeight;\n }\n if (nextTarget) {\n this.nextWidth = nextTarget.clientWidth;\n this.nextHeight = nextTarget.clientHeight;\n }\n window.addEventListener('mousemove', this.onDragging);\n window.addEventListener('mouseup', this.onDragEnd, false);\n this.setState({\n dragging: true\n });\n }\n onDragging(env) {\n if (!this.move) {\n return;\n }\n if (!this.state.dragging) {\n this.setState({\n dragging: true\n });\n }\n var {\n mode,\n onDragging\n } = this.props;\n var nextTarget = this.target.nextElementSibling;\n var prevTarget = this.target.previousElementSibling;\n var x = env.clientX - this.startX;\n var y = env.clientY - this.startY;\n this.preSize = 0;\n this.nextSize = 0;\n if (mode === 'horizontal') {\n this.preSize = this.preWidth + x > -1 ? this.preWidth + x : 0;\n this.nextSize = this.nextWidth - x > -1 ? this.nextWidth - x : 0;\n if (this.preSize === 0 || this.nextSize === 0) {\n return;\n }\n this.preSize = (this.preSize / this.boxWidth >= 1 ? 1 : this.preSize / this.boxWidth) * 100;\n this.nextSize = (this.nextSize / this.boxWidth >= 1 ? 1 : this.nextSize / this.boxWidth) * 100;\n if (prevTarget && nextTarget) {\n prevTarget.style.width = this.preSize + \"%\";\n nextTarget.style.width = this.nextSize + \"%\";\n }\n }\n if (mode === 'vertical' && this.preHeight + y > -1 && this.nextHeight - y > -1) {\n this.preSize = this.preHeight + y > -1 ? this.preHeight + y : 0;\n this.nextSize = this.nextHeight - y > -1 ? this.nextHeight - y : 0;\n this.preSize = (this.preSize / this.boxHeight >= 1 ? 1 : this.preSize / this.boxHeight) * 100;\n this.nextSize = (this.nextSize / this.boxHeight >= 1 ? 1 : this.nextSize / this.boxHeight) * 100;\n if (this.preSize === 0 || this.nextSize === 0) {\n return;\n }\n if (prevTarget && nextTarget) {\n prevTarget.style.height = this.preSize + \"%\";\n nextTarget.style.height = this.nextSize + \"%\";\n }\n }\n onDragging && onDragging(this.preSize, this.nextSize, this.paneNumber);\n }\n onDragEnd() {\n var {\n onDragEnd\n } = this.props;\n this.move = false;\n onDragEnd && onDragEnd(this.preSize, this.nextSize, this.paneNumber);\n this.removeEvent();\n this.setState({\n dragging: false\n });\n }\n render() {\n var _this$props$visible;\n var _this$props = this.props,\n {\n prefixCls,\n className,\n children,\n mode,\n visible = (_this$props$visible = this.props.visible) != null ? _this$props$visible : this.props.visiable,\n renderBar,\n lineBar,\n disable\n } = _this$props,\n other = _objectWithoutPropertiesLoose(_this$props, _excluded);\n var {\n dragging\n } = this.state;\n var cls = [prefixCls, className, prefixCls + \"-\" + mode, dragging ? 'dragging' : null].filter(Boolean).join(' ').trim();\n var child = React.Children.toArray(children);\n return /*#__PURE__*/_jsx(\"div\", _extends({\n className: cls\n }, other, {\n ref: node => this.warpper = node,\n children: React.Children.map(child, (element, idx) => {\n var props = Object.assign({}, element.props, {\n className: [prefixCls + \"-pane\", element.props.className].filter(Boolean).join(' ').trim(),\n style: _extends({}, element.props.style)\n });\n var visibleBar = visible === true || visible && visible.includes(idx + 1) || false;\n var barProps = {\n className: [prefixCls + \"-bar\", lineBar ? prefixCls + \"-line-bar\" : null, !lineBar ? prefixCls + \"-large-bar\" : null].filter(Boolean).join(' ').trim()\n };\n if (disable === true || disable && disable.includes(idx + 1)) {\n barProps.className = [barProps.className, disable ? 'disable' : null].filter(Boolean).join(' ').trim();\n }\n var BarCom = null;\n if (idx !== 0 && visibleBar && renderBar) {\n BarCom = renderBar(_extends({}, barProps, {\n onMouseDown: this.onMouseDown.bind(this, idx + 1)\n }));\n } else if (idx !== 0 && visibleBar) {\n BarCom = /*#__PURE__*/React.createElement('div', _extends({}, barProps), /*#__PURE__*/_jsx(\"div\", {\n onMouseDown: this.onMouseDown.bind(this, idx + 1)\n }));\n }\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [BarCom, /*#__PURE__*/React.cloneElement(element, _extends({}, props))]\n }, idx);\n })\n }));\n }\n}\nSplit.defaultProps = {\n prefixCls: 'w-split',\n visiable: true,\n mode: 'horizontal'\n};","import React, { useEffect, useMemo, useState } from \"react\"\nimport { getContext } from \"../state-utils/ctx\"\nimport { debounce } from \"../state-utils/utils\"\nimport { HightlightWrapper } from \"./useHighlight\"\nimport { DataViewComponent, DataViewDefault } from \"./DataViewComponent\"\nimport { StateLabelRender } from \"./StateLabelRender\"\nimport Split from \"@uiw/react-split\"\nimport \"./DevTool.css\"\n\nconst cache = getContext.cache\n\nexport const DevToolState: React.FC<{ Component: DataViewComponent }> = ({ Component }) => {\n const [allKeys, setKeys] = useState(() => [...cache.keys()])\n const [filterString, setFilterString] = useState(\"\")\n const [selectedKey, setKey] = useState(\"\")\n\n useEffect(() => {\n let t = setInterval(() => {\n setKeys(k => k.length != cache.size\n ? [...cache.keys()]\n : k\n )\n }, 50)\n return () => clearInterval(t)\n }, [cache])\n\n const filterFn = useMemo(\n () => {\n const preFilter = filterString\n .toLowerCase()\n .split(\" \")\n return (e: string) => {\n const sLow = e.toLowerCase()\n return preFilter.every(token => sLow.includes(token))\n }\n },\n [filterString]\n )\n\n\n return <Split mode=\"horizontal\" className=\"main-panel\">\n <div className=\"state-list\">\n <input\n placeholder=\"Type to Filter ...\"\n className=\"state-filter\"\n value={filterString}\n onChange={(ev) => setFilterString(ev.target.value)}\n />\n <HightlightWrapper highlight={filterString}>\n {allKeys\n .map(e => JSON.parse(e)?.[0])\n .filter(e => e != \"auto-ctx\" && e)\n .filter(filterFn)\n .map(currentKey => <StateLabelRender key={currentKey} {...{ selectedKey, setKey, currentKey }} />)}\n </HightlightWrapper>\n\n </div>\n <div className=\"state-view\" >\n <StateView dataKey={selectedKey} key={selectedKey} Component={Component} />\n </div>\n </Split>\n}\n\nexport const StateView: React.FC<{ dataKey: string, Component: DataViewComponent }> = ({ dataKey, Component = DataViewDefault }) => {\n const ctx = getContext(dataKey)\n const [currentData, setCurrentData] = useState({ ...ctx?.data })\n\n useEffect(() => {\n let updateDataDebounce = debounce(setCurrentData, 5)\n return ctx\n .subscribeAll((changeKey, newData) => updateDataDebounce({ ...newData }))\n\n }, [ctx])\n\n return <Component\n value={currentData}\n name={dataKey}\n />\n}\n","import \"./DevTool.css\"\nimport { useState } from \"react\"\nimport { DevToolState } from \"./DevToolState\";\nimport { DataViewDefault } from \"./DataViewComponent\";\nimport Split from '@uiw/react-split';\n\n\nexport const DevToolContainer = ({ toggleButton = \"[x]\", Component = DataViewDefault, ...props }) => {\n const [active, setActive] = useState(false);\n return <>\n <button className=\"react-state-dev-btn\" data-active={active} onClick={() => setActive(true)} {...props}>\n {props?.children ?? \"Toggle Dev Tool\"}\n </button>\n <div className=\"react-state-dev-container\">\n <Split mode=\"vertical\" style={{ height: \"100%\" }}>\n <div style={{ height: active ? \"66.66%\" : \"100%\" }}></div>\n <div className=\"react-state-dev-panel\" style={{\n height: active ? \"33.33%\" : \"0\",\n backgroundColor: \"var(--rs-bg-color)\",\n position: \"relative\"\n }}>\n {active && <button\n className=\"close-btn\"\n onClick={() => setActive(false)}\n >\n [x]\n </button>}\n {active && <DevToolState Component={Component} />}\n </div>\n </Split>\n </div>\n </>\n}"],"names":["ReactSharedInternals","require$$0","reactCompilerRuntime_production","size","reactCompilerRuntime_development","dispatcher","compilerRuntimeModule","require$$1","debounce","func","wait","timeout","fn","args","clearTimeout","setTimeout","cancel","memoize","cache","Map","cachedFunc","key","JSON","stringify","has","get","result","set","randomHash","Math","random","toString","slice","useArrayChangeId","e","ref","useRef","values","id","isDiff","current","length","some","f","i","CHANGE_EVENT","DataEvent","Event","constructor","event","value","String","ChangeEvent","Context","EventTarget","name","data","registry","Set","useCounter","publish","dispatchEvent","subscribe","_listener","listener","addEventListener","removeEventListener","subscribeAll","getContext","useDataContext","ctx","useMemo","useEffect","delete","useRegistryChecker","t0","$","_c","names","Error","t1","forEach","add","e_0","t2","useDataSource","useDataSubscribe","debounceTime","undefined","setState","useState","t3","callback","value_0","value_1","unsub","t4","useDataSubscribeWithTransform","transform","preValue","newValue","useDataSourceMultiple","entries","flat","map","useDataSubscribeMultiple","keys","setCounter","returnValues","prevValues","currentValues","key_1","_temp","handles","key_2","firstCall","_temp2","t5","key_3","index","Object","fromEntries","useDataSubscribeMultipleWithDebounce","_temp3","_temp4","c","paramsToId","params","sort","join","createRootCtx","useFn","getCtxName","filter","Boolean","ctxMountedCheck","useRootState","state","ctxName","Symbol","for","stack","err","Debug","jsx","Fragment","RootState","displayName","Root","useCtxStateStrict","useCtxState","console","error","DebugState","StateRunner","useStateFn","debugging","AutoRootCtx","Wrapper","subscribeRoot","useCallback","contextName","timeToCleanState","recordKey","counter","keepUntil","rest","Date","now","nextDelete","toSorted","k1","k2","at","t","_","max","createAutoCtx","timeToClean","useQuickSubscribe","proxy","finalGetter","openGetter","clean","allKeys","allCompareValue","allUnsub","Proxy","target","p","isOpenGetter","ownKeys","warn","Reflect","onChange","k","clear","useHighlight","filterString","buildRegex","trim","toLowerCase","split","highlight","escapeRegex","str","replace","words","flags","pattern","RegExp","markByToken","text","regex","last","match","matchAll","m","start","push","highlightCtx","React","createContext","HightlightWrapper","children","HighlightString","useContext","render","DataViewDefault","renderString","StateLabelRender","currentKey","props","selectedKey","setKey","divRef","flashKeyDebounce","classList","requestAnimationFrame","remove","t6","t7","t8","t9","jsxs","t10","_extends","r","_objectWithoutPropertiesLoose","n","_excluded","Split","paneNumber","env","prevTarget","nextTarget","mode","onDragging","x","y","onDragEnd","_this$props$visible","_this$props","prefixCls","className","visible","renderBar","lineBar","disable","other","dragging","cls","child","_jsx","node","element","idx","visibleBar","barProps","BarCom","_jsxs","DevToolState","Component","setKeys","setFilterString","setInterval","clearInterval","preFilter","sLow","every","token","includes","filterFn","ev","StateView","t11","dataKey","currentData","setCurrentData","updateDataDebounce","changeKey","newData","parse","e_1","DevToolContainer","toggleButton","active","setActive","height","backgroundColor","position","t12","t13","t14","t15"],"mappings":"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","x_google_ignoreList":[0,1,2,13,14,15]}
@@ -86,7 +86,7 @@ export declare const useDataSourceMultiple: <D, T extends readonly (keyof D)[]>(
86
86
  * @param keys - Keys to subscribe to.
87
87
  * @returns An object with the current values for the keys.
88
88
  */
89
- export declare const useDataSubscribeMultiple: <D, K extends (keyof D)[]>(ctx: Context<D> | undefined, ...keys: K) => { [i in keyof K]: D[K[i]] | undefined; };
89
+ export declare const useDataSubscribeMultiple: <D, K extends readonly (keyof D)[]>(ctx: Context<D> | undefined, ...keys: K) => { [P in K[number]]: D[P] | undefined; };
90
90
  /**
91
91
  * React hook to subscribe to multiple context values with throttling.
92
92
  * @param ctx - The context instance.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-state-custom",
3
- "version": "1.0.28",
3
+ "version": "1.0.30",
4
4
  "description": "The `react-state-custom` library provides a powerful set of tools for managing shared state in React applications",
5
5
  "type": "module",
6
6
  "main": "dist/index.umd.js",
@@ -68,8 +68,7 @@
68
68
  "react": "^19.2.0",
69
69
  "react-dom": "^19.2.0",
70
70
  "react-error-boundary": "^6.0.0",
71
- "react-obj-view": "^1.0.5",
72
- "react-state-custom": "^1.0.28",
71
+ "react-obj-view": "^1.1.1",
73
72
  "typescript": "^5.8.3",
74
73
  "vite": "7",
75
74
  "vite-bundle-analyzer": "^1.1.0",
@@ -1 +0,0 @@
1
- export declare const useRefValue: <T extends object>(e: T) => T;