jotai-solid-api 1.1.0 → 1.2.0

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
@@ -1,3 +1,5 @@
1
+ [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/doeixd/jotai-solid-api)
2
+
1
3
  # jotai-solid-api
2
4
 
3
5
  Solid-style reactive primitives on top of `jotai/vanilla`, plus a React component wrapper so app code can stay hook-free.
@@ -12,12 +14,16 @@ npm install jotai-solid-api jotai react
12
14
 
13
15
  - `component(setup, { memo?, displayName? })`
14
16
  - `createSignal(initial)`
17
+ - `createDeferred(source, options?)`
18
+ - `createUniqueId(prefix?)`
15
19
  - `fromSolidSignal(signal)` / `toSolidSignal(signal)`
16
20
  - `fromSignal(signal)` / `toSignal(signal)`
17
21
  - `createMemo(compute)`
18
22
  - `createEffect(effect)`
19
23
  - `createLayoutEffect(effect)`
20
24
  - `createComputed(compute)`
25
+ - `createReaction(onInvalidate)`
26
+ - `on(deps, fn, { defer? })`
21
27
  - `onMount(callback)`
22
28
  - `onCleanup(cleanup)` / `cleanup(cleanup)`
23
29
  - `createRoot(init)`
@@ -30,6 +36,8 @@ npm install jotai-solid-api jotai react
30
36
  - `createAsync(compute)`
31
37
  - `use(accessorOrPromise)`
32
38
  - `createStore(initial)` / `setStore(next)`
39
+ - `produce(recipe)`
40
+ - `reconcile(value, options?)`
33
41
  - `createMutable(initial)` / `createMutableStore(initial)`
34
42
  - `createReactiveArray(initial)` / `createArrayStore(initial)`
35
43
  - `createProjection(source, initialize, mutate)`
@@ -38,6 +46,7 @@ npm install jotai-solid-api jotai react
38
46
  - `lazy(loader)` / `Suspense`
39
47
  - `untrack(fn)`
40
48
  - control flow: `Show`, `For`, `Index`, `Switch`, `Match`
49
+ - props helpers: `mergeProps`, `splitProps`, `children`
41
50
 
42
51
  ### Aliases
43
52
 
package/dist/index.d.ts CHANGED
@@ -169,6 +169,34 @@ export declare const toSignal: typeof toSolidSignal;
169
169
  * ```
170
170
  */
171
171
  export declare function createMemo<T>(compute: () => T): Accessor<T>;
172
+ /**
173
+ * Defers propagation of a source accessor value.
174
+ *
175
+ * @param source Source accessor to defer.
176
+ * @param options Optional deferral settings.
177
+ * @returns Accessor containing the deferred value.
178
+ *
179
+ * @example
180
+ * ```ts
181
+ * const deferredQuery = createDeferred(query, { timeoutMs: 50 })
182
+ * ```
183
+ */
184
+ export declare function createDeferred<T>(source: Accessor<T>, options?: {
185
+ timeoutMs?: number;
186
+ equals?: (left: T, right: T) => boolean;
187
+ }): Accessor<T>;
188
+ /**
189
+ * Creates a unique id string for the current scope.
190
+ *
191
+ * @param prefix Prefix for the generated id.
192
+ * @returns Unique id string.
193
+ *
194
+ * @example
195
+ * ```ts
196
+ * const inputId = createUniqueId("field-")
197
+ * ```
198
+ */
199
+ export declare function createUniqueId(prefix?: string): string;
172
200
  /**
173
201
  * Alias for {@link createMemo}.
174
202
  *
@@ -321,6 +349,31 @@ export declare function createRoot<T>(init: (dispose: () => void) => T): T;
321
349
  * ```
322
350
  */
323
351
  export declare function batch<T>(fn: () => T): T;
352
+ /**
353
+ * Dependency helper for effects. Runs `fn` only when provided dependencies change.
354
+ *
355
+ * @param deps Dependency accessor or accessor list.
356
+ * @param fn Callback receiving current dependency values and previous values.
357
+ * @param options Optional behavior (`defer` skips the first invocation).
358
+ * @returns Effect callback compatible with `createEffect`.
359
+ *
360
+ * @example
361
+ * ```ts
362
+ * createEffect(
363
+ * on([userId, locale], ([id, nextLocale], prev) => {
364
+ * refetchUser(id, nextLocale)
365
+ * }, { defer: true }),
366
+ * )
367
+ * ```
368
+ */
369
+ export declare function on<T>(deps: Accessor<T>, fn: (input: T, prevInput: T | undefined, prevValue: undefined) => void, options?: {
370
+ defer?: boolean;
371
+ }): () => void;
372
+ export declare function on<T extends readonly unknown[]>(deps: {
373
+ [K in keyof T]: Accessor<T[K]>;
374
+ }, fn: (input: T, prevInput: T | undefined, prevValue: undefined) => void, options?: {
375
+ defer?: boolean;
376
+ }): () => void;
324
377
  /**
325
378
  * Executes a function without dependency tracking.
326
379
  *
@@ -333,6 +386,23 @@ export declare function batch<T>(fn: () => T): T;
333
386
  * ```
334
387
  */
335
388
  export declare function untrack<T>(fn: () => T): T;
389
+ /**
390
+ * Creates a manually armed reaction.
391
+ *
392
+ * The returned `track` function subscribes to dependencies read inside `trackFn`.
393
+ * When any dependency changes, `onInvalidate` runs once and the reaction disarms
394
+ * until `track(...)` is called again.
395
+ *
396
+ * @param onInvalidate Callback invoked when tracked dependencies change.
397
+ * @returns Track function used to arm the reaction.
398
+ *
399
+ * @example
400
+ * ```ts
401
+ * const track = createReaction(() => console.log("changed"))
402
+ * track(() => state.userId)
403
+ * ```
404
+ */
405
+ export declare function createReaction(onInvalidate: () => void): (trackFn: () => unknown) => void;
336
406
  /**
337
407
  * Creates an async resource from a fetcher.
338
408
  *
@@ -425,6 +495,34 @@ export declare function use<T>(value: PromiseLike<T>): T;
425
495
  * ```
426
496
  */
427
497
  export type SetStore<T> = (next: T | Partial<T> | ((prev: T) => T | Partial<T>)) => T;
498
+ /**
499
+ * Produces immutable updates using a mutable draft callback.
500
+ *
501
+ * @param recipe Draft mutator callback.
502
+ * @returns Updater function suitable for `setStore` or signal setters.
503
+ *
504
+ * @example
505
+ * ```ts
506
+ * setStore(produce((draft) => { draft.user.name = "Ada" }))
507
+ * ```
508
+ */
509
+ export declare function produce<T>(recipe: (draft: T) => void): (previous: T) => T;
510
+ /**
511
+ * Reconciles structural updates while preserving matching nested references.
512
+ *
513
+ * @param value Next value to reconcile into current state.
514
+ * @param options Reconciliation behavior.
515
+ * @returns Updater function suitable for `setStore` or signal setters.
516
+ *
517
+ * @example
518
+ * ```ts
519
+ * setStore(reconcile(nextData, { key: "id", merge: true }))
520
+ * ```
521
+ */
522
+ export declare function reconcile<T>(value: T, options?: {
523
+ key?: string | number;
524
+ merge?: boolean;
525
+ }): (previous: T) => T;
428
526
  /**
429
527
  * Creates an immutable reactive object store.
430
528
  *
@@ -703,6 +801,51 @@ export declare const defineComponent: typeof component;
703
801
  * ```
704
802
  */
705
803
  export type MaybeAccessor<T> = T | Accessor<T>;
804
+ type UnionToIntersection<T> = (T extends unknown ? (arg: T) => void : never) extends (arg: infer R) => void ? R : never;
805
+ /**
806
+ * Merges multiple props objects with lazy property resolution.
807
+ * Later sources take precedence.
808
+ *
809
+ * @param sources Props sources to merge.
810
+ * @returns Merged props proxy.
811
+ *
812
+ * @example
813
+ * ```ts
814
+ * const props = mergeProps({ a: 1 }, defaults, incoming)
815
+ * ```
816
+ */
817
+ export declare function mergeProps<TSources extends readonly object[]>(...sources: TSources): UnionToIntersection<TSources[number]>;
818
+ type SplitGroups<T extends object, Groups extends readonly (readonly (keyof T)[])[]> = {
819
+ [I in keyof Groups]: Pick<T, Groups[I][number]>;
820
+ };
821
+ /**
822
+ * Splits props into picked groups plus a remainder object.
823
+ *
824
+ * @param props Source props object.
825
+ * @param groups Key groups to pick.
826
+ * @returns Tuple of picked groups followed by remainder props.
827
+ *
828
+ * @example
829
+ * ```ts
830
+ * const [local, others] = splitProps(props, ["id", "name"])
831
+ * ```
832
+ */
833
+ export declare function splitProps<T extends object, Groups extends readonly (readonly (keyof T)[])[]>(props: T, ...groups: Groups): [...SplitGroups<T, Groups>, Omit<T, Groups[number][number]>];
834
+ /**
835
+ * Resolves and memoizes children access.
836
+ *
837
+ * @param fn Accessor returning children nodes.
838
+ * @returns Accessor with `toArray()` helper.
839
+ *
840
+ * @example
841
+ * ```ts
842
+ * const resolved = children(() => props().children)
843
+ * const list = resolved.toArray()
844
+ * ```
845
+ */
846
+ export declare function children(fn: Accessor<React.ReactNode>): Accessor<React.ReactNode> & {
847
+ toArray: () => React.ReactNode[];
848
+ };
706
849
  /**
707
850
  * Props for {@link Show}.
708
851
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,KAAK,OAAO,GAAG,MAAM,IAAI,CAAC;AAwY1B;;;;;;;;GAQG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAElC;;;;;;;;GAQG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;AAE/D;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC;AAE1E;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAE1C;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAE3E;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG;IAC1D,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;CACzC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAChC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B,YAAY,CAAC,EAAE,CAAC,CAAC;CAClB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAOzE;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,qBAAe,CAAC;AAEnC;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAOxF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,cAAc,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAChD,WAAW,CAAC,CAAC,CAAC,CAMhB;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,wBAAkB,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,QAAQ,sBAAgB,CAAC;AAEtC;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAK3D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EACnB,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;CACpC,GACL,QAAQ,CAAC,CAAC,CAAC,CA2Bb;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,MAAM,SAAS,GAAG,MAAM,CAEtD;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI,mBAAa,CAAC;AAE/B;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,OAAO,GAAG,IAAI,CAO/D;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,qBAAe,CAAC;AAEnC;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,OAAO,GAAG,IAAI,CAOrE;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,2BAAqB,CAAC;AAE/C;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,OAAO,GAAG,IAAI,CAElE;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,uBAAiB,CAAC;AAEvC;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,GAAG,IAAI,CAO5D;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,gBAAU,CAAC;AAE7B;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAOhD;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,kBAAY,CAAC;AAEjC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAYjE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAUvC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,EAAE,CAAC,CAAC,EAClB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EACjB,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,SAAS,EAAE,SAAS,KAAK,IAAI,EACtE,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B,MAAM,IAAI,CAAC;AACd,wBAAgB,EAAE,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,EAC7C,IAAI,EAAE;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,EACxC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,SAAS,EAAE,SAAS,KAAK,IAAI,EACtE,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B,MAAM,IAAI,CAAC;AA8Bd;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CASzC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,OAAO,KAAK,IAAI,CAsCzF;AA8BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAC7B,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC3B;IACD,gBAAgB,CAAC,CAAC,CAAC;IACnB,gBAAgB,CAAC,CAAC,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EACjC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EACnB,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE;IAAE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAC3F,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC3B;IACD,gBAAgB,CAAC,CAAC,CAAC;IACnB,gBAAgB,CAAC,CAAC,CAAC;CACpB,CAAC;AA2GF;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,uBAAiB,CAAC;AAEvC;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAC7B,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC3B,gBAAgB,CAAC,CAAC,CAAC,CAGrB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,oBAAc,CAAC;AAQvC;;;;;;;;;;;GAWG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9C,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAmUjD;;;;;;;;GAQG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAEtF;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAMzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,CAAC,EACzB,KAAK,EAAE,CAAC,EACR,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACvD,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAEpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAgB/E;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,oBAAc,CAAC;AAEjC;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,oBAAc,CAAC;AAEjC;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAIlE;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,sBAAgB,CAAC;AAErC;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAEvE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,YAAY,GAAE,CAAC,EAAO,GAAG,CAAC,EAAE,CAElE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,YAAY,GAAE,CAAC,EAAO,GAAG,CAAC,EAAE,CAE/D;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,sBAAsB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,GAAG,OAAO,IAAI;IAC7E,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC;IAC/C,GAAG,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,KAAK,aAAa,CAAC;IACxD,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9E,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,GAAG,OAAO,EAC5E,MAAM,EAAE,QAAQ,CAAC,SAAS,UAAU,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC,EAC1D,OAAO,EAAE,sBAAsB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,CAAC,GAC9D,aAAa,EAAE,CA0DjB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,8BAAwB,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI;IACjC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;CAC1C,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CA2B3E;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,2BAAqB,CAAC;AAE/C,KAAK,iBAAiB,CAAC,MAAM,EAAE,MAAM,IAAI,CACvC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,KACnB,IAAI,CAAC;AAEV;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,SAAS,MAAM,EAC5D,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EACxB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,EACtC,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,GACxC,MAAM,CAcR;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,yBAAmB,CAAC;AAE3C;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,4CAAiB,CAAC;AAEvC;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,KAAK,EACxB,MAAM,EAAE,MAAM,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;CAAE,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,GAC1F,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAQvD;AAED,KAAK,WAAW,GAAG,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;AAE7D,KAAK,OAAO,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,WAAW,CAAC;AACxE,KAAK,cAAc,GAAG,MAAM,WAAW,CAAC;AAExC;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,CAAC,KAAK,IAAI;IACpC,IAAI,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,CAAC;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,CAAC,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AA+D/D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,cAAc,EACrB,OAAO,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,GAChD,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACzC,wBAAgB,SAAS,CAAC,KAAK,EAC7B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,EACrB,OAAO,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAChC,cAAc,CAAC,KAAK,CAAC,CAAC;AA6DzB;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,kBAAY,CAAC;AAEzC;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAE/C,KAAK,mBAAmB,CAAC,CAAC,IACxB,CAAC,CAAC,SAAS,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,IAAI,GACzE,CAAC,GACD,KAAK,CAAC;AAEZ;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,QAAQ,SAAS,SAAS,MAAM,EAAE,EAC3D,GAAG,OAAO,EAAE,QAAQ,GACnB,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CA+CvC;AAED,KAAK,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,SAAS,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI;KACpF,CAAC,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;CAChD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACxB,CAAC,SAAS,MAAM,EAChB,MAAM,SAAS,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAEhD,KAAK,EAAE,CAAC,EACR,GAAG,MAAM,EAAE,MAAM,GAChB,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAoE9D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CACtB,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,GAC5B,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG;IAAE,OAAO,EAAE,MAAM,KAAK,CAAC,SAAS,EAAE,CAAA;CAAE,CAOlE;AAMD;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IACzB,sFAAsF;IACtF,IAAI,EAAE,aAAa,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IAC/B,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,8DAA8D;IAC9D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yEAAyE;IACzE,QAAQ,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;CACrE,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAa5D;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;IACxB,4CAA4C;IAC5C,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACrD,mCAAmC;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,gDAAgD;IAChD,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;CACjE,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAe1D;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,4CAA4C;IAC5C,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACrD,mCAAmC;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,+DAA+D;IAC/D,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;CAC3E,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAe9D;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,+EAA+E;IAC/E,IAAI,EAAE,aAAa,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IAC/B,+EAA+E;IAC/E,QAAQ,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;CACrE,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAEzE;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,mDAAmD;IACnD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,CAE5E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAElE;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,6BAAuB,CAAC;AAE5C;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EACnB,MAAM,GAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAmB,GACjD,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAErB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,KAAK,CAAC,SAAS,CAsB1D"}
package/dist/index.js CHANGED
@@ -80,9 +80,14 @@ class Scope {
80
80
  this.scopeCleanups = new Set();
81
81
  this.layoutStarters = [];
82
82
  this.effectStarters = [];
83
+ this.uniqueIdCounter = 0;
83
84
  this.layoutStarted = Boolean(options.autoStart);
84
85
  this.effectsStarted = Boolean(options.autoStart);
85
86
  }
87
+ nextUniqueId(prefix) {
88
+ this.uniqueIdCounter += 1;
89
+ return `${prefix}${this.uniqueIdCounter}`;
90
+ }
86
91
  register(disposable) {
87
92
  this.disposables.add(disposable);
88
93
  }
@@ -407,6 +412,55 @@ export function createMemo(compute) {
407
412
  scope.register(source);
408
413
  return () => source.get();
409
414
  }
415
+ /**
416
+ * Defers propagation of a source accessor value.
417
+ *
418
+ * @param source Source accessor to defer.
419
+ * @param options Optional deferral settings.
420
+ * @returns Accessor containing the deferred value.
421
+ *
422
+ * @example
423
+ * ```ts
424
+ * const deferredQuery = createDeferred(query, { timeoutMs: 50 })
425
+ * ```
426
+ */
427
+ export function createDeferred(source, options = {}) {
428
+ const equals = options.equals ?? Object.is;
429
+ const [deferred, setDeferred] = createSignal(source());
430
+ createEffect(() => {
431
+ const nextValue = source();
432
+ if (equals(deferred(), nextValue)) {
433
+ return;
434
+ }
435
+ if (options.timeoutMs === undefined || options.timeoutMs <= 0) {
436
+ queueMicrotask(() => {
437
+ setDeferred(nextValue);
438
+ });
439
+ return;
440
+ }
441
+ const timer = setTimeout(() => {
442
+ setDeferred(nextValue);
443
+ }, options.timeoutMs);
444
+ onCleanup(() => {
445
+ clearTimeout(timer);
446
+ });
447
+ });
448
+ return deferred;
449
+ }
450
+ /**
451
+ * Creates a unique id string for the current scope.
452
+ *
453
+ * @param prefix Prefix for the generated id.
454
+ * @returns Unique id string.
455
+ *
456
+ * @example
457
+ * ```ts
458
+ * const inputId = createUniqueId("field-")
459
+ * ```
460
+ */
461
+ export function createUniqueId(prefix = "uid-") {
462
+ return activeScope().nextUniqueId(prefix);
463
+ }
410
464
  /**
411
465
  * Alias for {@link createMemo}.
412
466
  *
@@ -610,6 +664,28 @@ export function batch(fn) {
610
664
  }
611
665
  }
612
666
  }
667
+ export function on(deps, fn, options = {}) {
668
+ let initialized = false;
669
+ let previousInput;
670
+ const readInput = () => {
671
+ if (Array.isArray(deps)) {
672
+ return deps.map((dep) => dep());
673
+ }
674
+ return deps();
675
+ };
676
+ return () => {
677
+ const input = readInput();
678
+ if (!initialized) {
679
+ initialized = true;
680
+ if (options.defer) {
681
+ previousInput = input;
682
+ return;
683
+ }
684
+ }
685
+ fn(input, previousInput, undefined);
686
+ previousInput = input;
687
+ };
688
+ }
613
689
  /**
614
690
  * Executes a function without dependency tracking.
615
691
  *
@@ -632,6 +708,54 @@ export function untrack(fn) {
632
708
  }
633
709
  }
634
710
  }
711
+ /**
712
+ * Creates a manually armed reaction.
713
+ *
714
+ * The returned `track` function subscribes to dependencies read inside `trackFn`.
715
+ * When any dependency changes, `onInvalidate` runs once and the reaction disarms
716
+ * until `track(...)` is called again.
717
+ *
718
+ * @param onInvalidate Callback invoked when tracked dependencies change.
719
+ * @returns Track function used to arm the reaction.
720
+ *
721
+ * @example
722
+ * ```ts
723
+ * const track = createReaction(() => console.log("changed"))
724
+ * track(() => state.userId)
725
+ * ```
726
+ */
727
+ export function createReaction(onInvalidate) {
728
+ const scope = activeScope();
729
+ let tracker = null;
730
+ let armed = false;
731
+ const disposeTracker = () => {
732
+ if (!tracker) {
733
+ return;
734
+ }
735
+ tracker.dispose();
736
+ tracker = null;
737
+ };
738
+ const track = (trackFn) => {
739
+ armed = true;
740
+ disposeTracker();
741
+ tracker = new DependencyTracker(() => {
742
+ if (!armed) {
743
+ return;
744
+ }
745
+ armed = false;
746
+ disposeTracker();
747
+ onInvalidate();
748
+ });
749
+ tracker.collect(trackFn);
750
+ };
751
+ scope.register({
752
+ dispose: () => {
753
+ armed = false;
754
+ disposeTracker();
755
+ },
756
+ });
757
+ return track;
758
+ }
635
759
  function resolveResourceArgs(sourceOrFetcher, maybeFetcher, maybeOptions) {
636
760
  if (maybeFetcher) {
637
761
  return {
@@ -809,6 +933,65 @@ function shallowClone(value) {
809
933
  }
810
934
  return value;
811
935
  }
936
+ function deepClone(value) {
937
+ if (typeof globalThis.structuredClone === "function") {
938
+ return globalThis.structuredClone(value);
939
+ }
940
+ if (Array.isArray(value)) {
941
+ return value.map((item) => deepClone(item));
942
+ }
943
+ if (isObjectLike(value)) {
944
+ const clone = {};
945
+ for (const key of Reflect.ownKeys(value)) {
946
+ clone[key] = deepClone(value[key]);
947
+ }
948
+ return clone;
949
+ }
950
+ return value;
951
+ }
952
+ function reconcileValue(previous, next, options) {
953
+ if (Object.is(previous, next)) {
954
+ return previous;
955
+ }
956
+ if (Array.isArray(previous) && Array.isArray(next)) {
957
+ if (options.key) {
958
+ const keyField = options.key;
959
+ const keyed = new Map();
960
+ for (const item of previous) {
961
+ if (isObjectLike(item) && keyField in item) {
962
+ keyed.set(item[keyField], item);
963
+ }
964
+ }
965
+ return next.map((item) => {
966
+ if (!isObjectLike(item) || !(keyField in item)) {
967
+ return deepClone(item);
968
+ }
969
+ const keyValue = item[keyField];
970
+ const existing = keyed.get(keyValue);
971
+ if (existing && isObjectLike(existing)) {
972
+ return reconcileValue(existing, item, options);
973
+ }
974
+ return deepClone(item);
975
+ });
976
+ }
977
+ return next.map((item, index) => {
978
+ const previousItem = previous[index];
979
+ return reconcileValue(previousItem, item, options);
980
+ });
981
+ }
982
+ if (isObjectLike(previous) && isObjectLike(next)) {
983
+ const out = options.merge
984
+ ? { ...previous }
985
+ : {};
986
+ for (const key of Reflect.ownKeys(next)) {
987
+ const previousValue = previous[key];
988
+ const nextValue = next[key];
989
+ out[key] = reconcileValue(previousValue, nextValue, options);
990
+ }
991
+ return out;
992
+ }
993
+ return deepClone(next);
994
+ }
812
995
  function getAtPath(root, path) {
813
996
  let cursor = root;
814
997
  for (const segment of path) {
@@ -955,6 +1138,39 @@ function createReactiveProxy(source, mutable) {
955
1138
  };
956
1139
  return createAtPath([]);
957
1140
  }
1141
+ /**
1142
+ * Produces immutable updates using a mutable draft callback.
1143
+ *
1144
+ * @param recipe Draft mutator callback.
1145
+ * @returns Updater function suitable for `setStore` or signal setters.
1146
+ *
1147
+ * @example
1148
+ * ```ts
1149
+ * setStore(produce((draft) => { draft.user.name = "Ada" }))
1150
+ * ```
1151
+ */
1152
+ export function produce(recipe) {
1153
+ return (previous) => {
1154
+ const draft = deepClone(previous);
1155
+ recipe(draft);
1156
+ return draft;
1157
+ };
1158
+ }
1159
+ /**
1160
+ * Reconciles structural updates while preserving matching nested references.
1161
+ *
1162
+ * @param value Next value to reconcile into current state.
1163
+ * @param options Reconciliation behavior.
1164
+ * @returns Updater function suitable for `setStore` or signal setters.
1165
+ *
1166
+ * @example
1167
+ * ```ts
1168
+ * setStore(reconcile(nextData, { key: "id", merge: true }))
1169
+ * ```
1170
+ */
1171
+ export function reconcile(value, options = {}) {
1172
+ return (previous) => reconcileValue(previous, value, options);
1173
+ }
958
1174
  /**
959
1175
  * Creates an immutable reactive object store.
960
1176
  *
@@ -1349,6 +1565,161 @@ export function component(setup, options = {}) {
1349
1565
  * ```
1350
1566
  */
1351
1567
  export const defineComponent = component;
1568
+ /**
1569
+ * Merges multiple props objects with lazy property resolution.
1570
+ * Later sources take precedence.
1571
+ *
1572
+ * @param sources Props sources to merge.
1573
+ * @returns Merged props proxy.
1574
+ *
1575
+ * @example
1576
+ * ```ts
1577
+ * const props = mergeProps({ a: 1 }, defaults, incoming)
1578
+ * ```
1579
+ */
1580
+ export function mergeProps(...sources) {
1581
+ const readSource = (index) => sources[index] ?? {};
1582
+ return new Proxy({}, {
1583
+ get(_target, prop) {
1584
+ for (let index = sources.length - 1; index >= 0; index -= 1) {
1585
+ const source = readSource(index);
1586
+ if (prop in source) {
1587
+ return source[prop];
1588
+ }
1589
+ }
1590
+ return undefined;
1591
+ },
1592
+ has(_target, prop) {
1593
+ for (let index = sources.length - 1; index >= 0; index -= 1) {
1594
+ const source = readSource(index);
1595
+ if (prop in source) {
1596
+ return true;
1597
+ }
1598
+ }
1599
+ return false;
1600
+ },
1601
+ ownKeys() {
1602
+ const keys = new Set();
1603
+ for (const source of sources) {
1604
+ for (const key of Reflect.ownKeys(source)) {
1605
+ keys.add(typeof key === "number" ? String(key) : key);
1606
+ }
1607
+ }
1608
+ return [...keys];
1609
+ },
1610
+ getOwnPropertyDescriptor(_target, prop) {
1611
+ return {
1612
+ configurable: true,
1613
+ enumerable: true,
1614
+ get() {
1615
+ for (let index = sources.length - 1; index >= 0; index -= 1) {
1616
+ const source = readSource(index);
1617
+ if (prop in source) {
1618
+ return source[prop];
1619
+ }
1620
+ }
1621
+ return undefined;
1622
+ },
1623
+ };
1624
+ },
1625
+ });
1626
+ }
1627
+ /**
1628
+ * Splits props into picked groups plus a remainder object.
1629
+ *
1630
+ * @param props Source props object.
1631
+ * @param groups Key groups to pick.
1632
+ * @returns Tuple of picked groups followed by remainder props.
1633
+ *
1634
+ * @example
1635
+ * ```ts
1636
+ * const [local, others] = splitProps(props, ["id", "name"])
1637
+ * ```
1638
+ */
1639
+ export function splitProps(props, ...groups) {
1640
+ const picked = groups.map((group) => {
1641
+ const keySet = new Set(group);
1642
+ return new Proxy({}, {
1643
+ get(_target, prop) {
1644
+ if (!keySet.has(prop)) {
1645
+ return undefined;
1646
+ }
1647
+ return props[prop];
1648
+ },
1649
+ has(_target, prop) {
1650
+ return keySet.has(prop);
1651
+ },
1652
+ ownKeys() {
1653
+ return [...keySet].map((key) => (typeof key === "number" ? String(key) : key));
1654
+ },
1655
+ getOwnPropertyDescriptor(_target, prop) {
1656
+ if (!keySet.has(prop)) {
1657
+ return undefined;
1658
+ }
1659
+ return {
1660
+ configurable: true,
1661
+ enumerable: true,
1662
+ writable: false,
1663
+ value: props[prop],
1664
+ };
1665
+ },
1666
+ });
1667
+ });
1668
+ const blocked = new Set();
1669
+ for (const group of groups) {
1670
+ for (const key of group) {
1671
+ blocked.add(key);
1672
+ }
1673
+ }
1674
+ const rest = new Proxy({}, {
1675
+ get(_target, prop) {
1676
+ if (blocked.has(prop)) {
1677
+ return undefined;
1678
+ }
1679
+ return props[prop];
1680
+ },
1681
+ has(_target, prop) {
1682
+ return !blocked.has(prop) && prop in props;
1683
+ },
1684
+ ownKeys() {
1685
+ return Reflect.ownKeys(props)
1686
+ .filter((key) => !blocked.has(key))
1687
+ .map((key) => (typeof key === "number" ? String(key) : key));
1688
+ },
1689
+ getOwnPropertyDescriptor(_target, prop) {
1690
+ if (blocked.has(prop)) {
1691
+ return undefined;
1692
+ }
1693
+ const descriptor = Object.getOwnPropertyDescriptor(props, prop);
1694
+ if (!descriptor) {
1695
+ return undefined;
1696
+ }
1697
+ return {
1698
+ ...descriptor,
1699
+ configurable: true,
1700
+ };
1701
+ },
1702
+ });
1703
+ return [...picked, rest];
1704
+ }
1705
+ /**
1706
+ * Resolves and memoizes children access.
1707
+ *
1708
+ * @param fn Accessor returning children nodes.
1709
+ * @returns Accessor with `toArray()` helper.
1710
+ *
1711
+ * @example
1712
+ * ```ts
1713
+ * const resolved = children(() => props().children)
1714
+ * const list = resolved.toArray()
1715
+ * ```
1716
+ */
1717
+ export function children(fn) {
1718
+ const resolved = createMemo(() => fn());
1719
+ const accessor = (() => resolved());
1720
+ accessor.toArray = () => React.Children.toArray(resolved());
1721
+ return accessor;
1722
+ }
1352
1723
  function readMaybeAccessor(value) {
1353
1724
  return resolveMaybeAccessor(value);
1354
1725
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jotai-solid-api",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Solid-style reactive API on top of Jotai for React component wrappers",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",