@sigrea/react 0.3.1 → 0.4.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 +6 -6
- package/dist/index.cjs +3 -3
- package/dist/index.d.cts +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.mjs +3 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
- **Signal subscriptions.** `useSignal` subscribes to signals and computed values, triggering re-renders when they change.
|
|
6
6
|
- **Computed subscriptions.** `useComputed` subscribes to computed values and memoizes them per component instance.
|
|
7
7
|
- **Deep signal subscriptions.** `useDeepSignal` subscribes to deep signal objects and exposes them for direct mutation.
|
|
8
|
-
- **Molecule lifecycles.** `
|
|
8
|
+
- **Molecule lifecycles.** `useMolecule` mounts molecule factories and binds their lifecycles to React components.
|
|
9
9
|
|
|
10
10
|
## Table of Contents
|
|
11
11
|
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
- [useSignal](#usesignal)
|
|
19
19
|
- [useComputed](#usecomputed)
|
|
20
20
|
- [useDeepSignal](#usedeepsignal)
|
|
21
|
-
- [
|
|
21
|
+
- [useMolecule](#usemolecule)
|
|
22
22
|
- [Testing](#testing)
|
|
23
23
|
- [Handling Scope Cleanup Errors](#handling-scope-cleanup-errors)
|
|
24
24
|
- [Development](#development)
|
|
@@ -52,7 +52,7 @@ export function CounterLabel() {
|
|
|
52
52
|
|
|
53
53
|
```tsx
|
|
54
54
|
import { molecule, signal } from "@sigrea/core";
|
|
55
|
-
import {
|
|
55
|
+
import { useMolecule, useSignal } from "@sigrea/react";
|
|
56
56
|
|
|
57
57
|
const CounterMolecule = molecule((props: { initialCount: number }) => {
|
|
58
58
|
const count = signal(props.initialCount);
|
|
@@ -69,7 +69,7 @@ const CounterMolecule = molecule((props: { initialCount: number }) => {
|
|
|
69
69
|
});
|
|
70
70
|
|
|
71
71
|
export function Counter(props: { initialCount: number }) {
|
|
72
|
-
const counter =
|
|
72
|
+
const counter = useMolecule(CounterMolecule, props);
|
|
73
73
|
const value = useSignal(counter.count);
|
|
74
74
|
|
|
75
75
|
return (
|
|
@@ -133,10 +133,10 @@ function useDeepSignal<T extends object>(signal: DeepSignal<T>): T
|
|
|
133
133
|
|
|
134
134
|
Exposes a deep signal object for direct mutation within the component. Updates to nested properties trigger re-renders, and the subscription is cleaned up when the component unmounts.
|
|
135
135
|
|
|
136
|
-
###
|
|
136
|
+
### useMolecule
|
|
137
137
|
|
|
138
138
|
```tsx
|
|
139
|
-
function
|
|
139
|
+
function useMolecule<TProps, TReturn>(
|
|
140
140
|
molecule: MoleculeFactory<TProps, TReturn>,
|
|
141
141
|
props?: TProps
|
|
142
142
|
): TReturn
|
package/dist/index.cjs
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
const react = require('react');
|
|
4
4
|
const core = require('@sigrea/core');
|
|
5
5
|
|
|
6
|
-
function
|
|
6
|
+
function useMolecule(molecule, ...args) {
|
|
7
7
|
const props = args.length === 0 ? void 0 : args[0];
|
|
8
8
|
const stateRef = react.useRef(
|
|
9
9
|
void 0
|
|
@@ -29,7 +29,7 @@ function useMolcule(molecule, ...args) {
|
|
|
29
29
|
const state = stateRef.current;
|
|
30
30
|
if (state === void 0) {
|
|
31
31
|
throw new Error(
|
|
32
|
-
"
|
|
32
|
+
"useMolecule failed to mount the requested molecule instance."
|
|
33
33
|
);
|
|
34
34
|
}
|
|
35
35
|
const instance = state.instance;
|
|
@@ -106,6 +106,6 @@ function useDeepSignal(source) {
|
|
|
106
106
|
|
|
107
107
|
exports.useComputed = useComputed;
|
|
108
108
|
exports.useDeepSignal = useDeepSignal;
|
|
109
|
-
exports.
|
|
109
|
+
exports.useMolecule = useMolecule;
|
|
110
110
|
exports.useSignal = useSignal;
|
|
111
111
|
exports.useSnapshot = useSnapshot;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MoleculeFactory, MoleculeArgs, MoleculeInstance, Signal, ReadonlySignal, Computed, DeepSignal, SnapshotHandler } from '@sigrea/core';
|
|
2
2
|
|
|
3
|
-
declare function
|
|
3
|
+
declare function useMolecule<TReturn extends object, TProps = void>(molecule: MoleculeFactory<TReturn, TProps>, ...args: MoleculeArgs<TProps>): MoleculeInstance<TReturn>;
|
|
4
4
|
|
|
5
5
|
type ReadableSignal<T> = Signal<T> | ReadonlySignal<T>;
|
|
6
6
|
declare function useSignal<T>(source: ReadableSignal<T>): T;
|
|
@@ -11,4 +11,4 @@ declare function useDeepSignal<T extends object>(source: DeepSignal<T>): T;
|
|
|
11
11
|
|
|
12
12
|
declare function useSnapshot<T>(handler: SnapshotHandler<T>): T;
|
|
13
13
|
|
|
14
|
-
export { useComputed, useDeepSignal,
|
|
14
|
+
export { useComputed, useDeepSignal, useMolecule, useSignal, useSnapshot };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MoleculeFactory, MoleculeArgs, MoleculeInstance, Signal, ReadonlySignal, Computed, DeepSignal, SnapshotHandler } from '@sigrea/core';
|
|
2
2
|
|
|
3
|
-
declare function
|
|
3
|
+
declare function useMolecule<TReturn extends object, TProps = void>(molecule: MoleculeFactory<TReturn, TProps>, ...args: MoleculeArgs<TProps>): MoleculeInstance<TReturn>;
|
|
4
4
|
|
|
5
5
|
type ReadableSignal<T> = Signal<T> | ReadonlySignal<T>;
|
|
6
6
|
declare function useSignal<T>(source: ReadableSignal<T>): T;
|
|
@@ -11,4 +11,4 @@ declare function useDeepSignal<T extends object>(source: DeepSignal<T>): T;
|
|
|
11
11
|
|
|
12
12
|
declare function useSnapshot<T>(handler: SnapshotHandler<T>): T;
|
|
13
13
|
|
|
14
|
-
export { useComputed, useDeepSignal,
|
|
14
|
+
export { useComputed, useDeepSignal, useMolecule, useSignal, useSnapshot };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MoleculeFactory, MoleculeArgs, MoleculeInstance, Signal, ReadonlySignal, Computed, DeepSignal, SnapshotHandler } from '@sigrea/core';
|
|
2
2
|
|
|
3
|
-
declare function
|
|
3
|
+
declare function useMolecule<TReturn extends object, TProps = void>(molecule: MoleculeFactory<TReturn, TProps>, ...args: MoleculeArgs<TProps>): MoleculeInstance<TReturn>;
|
|
4
4
|
|
|
5
5
|
type ReadableSignal<T> = Signal<T> | ReadonlySignal<T>;
|
|
6
6
|
declare function useSignal<T>(source: ReadableSignal<T>): T;
|
|
@@ -11,4 +11,4 @@ declare function useDeepSignal<T extends object>(source: DeepSignal<T>): T;
|
|
|
11
11
|
|
|
12
12
|
declare function useSnapshot<T>(handler: SnapshotHandler<T>): T;
|
|
13
13
|
|
|
14
|
-
export { useComputed, useDeepSignal,
|
|
14
|
+
export { useComputed, useDeepSignal, useMolecule, useSignal, useSnapshot };
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useRef, useEffect, useCallback, useSyncExternalStore, useMemo } from 'react';
|
|
2
2
|
import { disposeMolecule, createSignalHandler, createComputedHandler, createDeepSignalHandler } from '@sigrea/core';
|
|
3
3
|
|
|
4
|
-
function
|
|
4
|
+
function useMolecule(molecule, ...args) {
|
|
5
5
|
const props = args.length === 0 ? void 0 : args[0];
|
|
6
6
|
const stateRef = useRef(
|
|
7
7
|
void 0
|
|
@@ -27,7 +27,7 @@ function useMolcule(molecule, ...args) {
|
|
|
27
27
|
const state = stateRef.current;
|
|
28
28
|
if (state === void 0) {
|
|
29
29
|
throw new Error(
|
|
30
|
-
"
|
|
30
|
+
"useMolecule failed to mount the requested molecule instance."
|
|
31
31
|
);
|
|
32
32
|
}
|
|
33
33
|
const instance = state.instance;
|
|
@@ -102,4 +102,4 @@ function useDeepSignal(source) {
|
|
|
102
102
|
return useSnapshot(handler);
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
export { useComputed, useDeepSignal,
|
|
105
|
+
export { useComputed, useDeepSignal, useMolecule, useSignal, useSnapshot };
|