@actuallab/fusion-react 12.1.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs ADDED
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ UIActionTracker: () => import_fusion3.UIActionTracker,
24
+ UIUpdateDelayer: () => import_fusion3.UIUpdateDelayer,
25
+ uiActions: () => import_fusion3.uiActions,
26
+ useComputedState: () => useComputedState,
27
+ useMutableState: () => useMutableState
28
+ });
29
+ module.exports = __toCommonJS(index_exports);
30
+
31
+ // src/use-computed-state.ts
32
+ var import_react = require("react");
33
+ var import_fusion = require("@actuallab/fusion");
34
+ function useComputedState(computer, deps, options) {
35
+ const [, forceRender] = (0, import_react.useReducer)((c) => c + 1, 0);
36
+ const stateRef = (0, import_react.useRef)(null);
37
+ const depsRef = (0, import_react.useRef)(deps);
38
+ const depsChanged = deps.length !== depsRef.current.length || deps.some((d, i) => d !== depsRef.current[i]);
39
+ if (depsChanged || stateRef.current === null) {
40
+ stateRef.current?.dispose();
41
+ depsRef.current = deps;
42
+ stateRef.current = new import_fusion.ComputedState(computer, options);
43
+ }
44
+ const state = stateRef.current;
45
+ (0, import_react.useEffect)(() => {
46
+ let cancelled = false;
47
+ const subscribe = async () => {
48
+ try {
49
+ await state.whenFirstTimeUpdated();
50
+ } catch {
51
+ return;
52
+ }
53
+ if (cancelled || state.isDisposed) return;
54
+ forceRender();
55
+ while (!cancelled && !state.isDisposed) {
56
+ try {
57
+ await state.whenUpdated();
58
+ } catch {
59
+ return;
60
+ }
61
+ if (!cancelled && !state.isDisposed)
62
+ forceRender();
63
+ }
64
+ };
65
+ void subscribe();
66
+ return () => {
67
+ cancelled = true;
68
+ state.dispose();
69
+ };
70
+ }, [state]);
71
+ const isInitial = state.updateIndex === 0;
72
+ return {
73
+ value: isInitial ? void 0 : state.valueOrUndefined,
74
+ error: isInitial ? void 0 : state.error,
75
+ isInitial,
76
+ state
77
+ };
78
+ }
79
+
80
+ // src/use-mutable-state.ts
81
+ var import_react2 = require("react");
82
+ var import_fusion2 = require("@actuallab/fusion");
83
+ function useMutableState(initial) {
84
+ const [, forceRender] = (0, import_react2.useReducer)((c) => c + 1, 0);
85
+ const stateRef = (0, import_react2.useRef)(null);
86
+ if (stateRef.current === null) {
87
+ stateRef.current = new import_fusion2.MutableState(initial);
88
+ }
89
+ const state = stateRef.current;
90
+ (0, import_react2.useEffect)(() => {
91
+ let cancelled = false;
92
+ const subscribe = async () => {
93
+ while (!cancelled) {
94
+ try {
95
+ await state.whenUpdated();
96
+ } catch {
97
+ return;
98
+ }
99
+ if (!cancelled)
100
+ forceRender();
101
+ }
102
+ };
103
+ void subscribe();
104
+ return () => {
105
+ cancelled = true;
106
+ };
107
+ }, [state]);
108
+ return [state.value, (v) => state.set(v), state];
109
+ }
110
+
111
+ // src/index.ts
112
+ var import_fusion3 = require("@actuallab/fusion");
113
+ // Annotate the CommonJS export names for ESM import in node:
114
+ 0 && (module.exports = {
115
+ UIActionTracker,
116
+ UIUpdateDelayer,
117
+ uiActions,
118
+ useComputedState,
119
+ useMutableState
120
+ });
121
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/use-computed-state.ts","../src/use-mutable-state.ts"],"sourcesContent":["export { useComputedState } from \"./use-computed-state.js\";\r\nexport type { UseComputedStateResult } from \"./use-computed-state.js\";\r\nexport { useMutableState } from \"./use-mutable-state.js\";\r\n// Re-export from @actuallab/fusion for convenience\r\nexport { UIActionTracker, uiActions, UIUpdateDelayer } from \"@actuallab/fusion\";\r\n","import { useEffect, useReducer, useRef } from \"react\";\r\nimport { ComputedState, type ComputedStateOptions, type StateComputer } from \"@actuallab/fusion\";\r\n\r\nexport interface UseComputedStateResult<T> {\r\n value: T | undefined;\r\n error: unknown;\r\n isInitial: boolean;\r\n state: ComputedState<T>;\r\n}\r\n\r\n/**\r\n * React hook wrapping Fusion's ComputedState.\r\n * Creates a ComputedState keyed on deps, subscribes to updates, and triggers re-renders.\r\n */\r\nexport function useComputedState<T>(\r\n computer: StateComputer<T>,\r\n deps: readonly unknown[],\r\n options?: ComputedStateOptions<T>,\r\n): UseComputedStateResult<T> {\r\n const [, forceRender] = useReducer(c => c + 1, 0);\r\n const stateRef = useRef<ComputedState<T> | null>(null);\r\n const depsRef = useRef<readonly unknown[]>(deps);\r\n\r\n // Check if deps changed\r\n const depsChanged = deps.length !== depsRef.current.length\r\n || deps.some((d, i) => d !== depsRef.current[i]);\r\n\r\n if (depsChanged || stateRef.current === null) {\r\n // Dispose old state\r\n stateRef.current?.dispose();\r\n depsRef.current = deps;\r\n stateRef.current = new ComputedState<T>(computer, options);\r\n }\r\n\r\n const state = stateRef.current;\r\n\r\n useEffect(() => {\r\n let cancelled = false;\r\n\r\n const subscribe = async () => {\r\n // Wait for first update\r\n try {\r\n await state.whenFirstTimeUpdated();\r\n } catch {\r\n return;\r\n }\r\n if (cancelled || state.isDisposed) return;\r\n forceRender();\r\n\r\n // Subscribe to subsequent updates\r\n while (!cancelled && !state.isDisposed) {\r\n try {\r\n await state.whenUpdated();\r\n } catch {\r\n return;\r\n }\r\n if (!cancelled && !state.isDisposed)\r\n forceRender();\r\n }\r\n };\r\n\r\n void subscribe();\r\n\r\n return () => {\r\n cancelled = true;\r\n state.dispose();\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [state]);\r\n\r\n const isInitial = state.updateIndex === 0;\r\n return {\r\n value: isInitial ? undefined : state.valueOrUndefined,\r\n error: isInitial ? undefined : state.error,\r\n isInitial,\r\n state,\r\n };\r\n}\r\n","import { useEffect, useReducer, useRef } from \"react\";\r\nimport { MutableState } from \"@actuallab/fusion\";\r\nimport type { Result } from \"@actuallab/core\";\r\n\r\n/**\r\n * React hook wrapping Fusion's MutableState.\r\n * Returns [value, setter, state] — re-renders on updates.\r\n */\r\nexport function useMutableState<T>(\r\n initial: T,\r\n): [T, (value: Result<T> | T) => void, MutableState<T>] {\r\n const [, forceRender] = useReducer(c => c + 1, 0);\r\n const stateRef = useRef<MutableState<T> | null>(null);\r\n\r\n if (stateRef.current === null) {\r\n stateRef.current = new MutableState<T>(initial);\r\n }\r\n\r\n const state = stateRef.current;\r\n\r\n useEffect(() => {\r\n let cancelled = false;\r\n\r\n const subscribe = async () => {\r\n while (!cancelled) {\r\n try {\r\n await state.whenUpdated();\r\n } catch {\r\n return;\r\n }\r\n if (!cancelled)\r\n forceRender();\r\n }\r\n };\r\n\r\n void subscribe();\r\n\r\n return () => { cancelled = true; };\r\n }, [state]);\r\n\r\n return [state.value, (v) => state.set(v), state];\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAA8C;AAC9C,oBAA6E;AAatE,SAAS,iBACd,UACA,MACA,SAC2B;AAC3B,QAAM,CAAC,EAAE,WAAW,QAAI,yBAAW,OAAK,IAAI,GAAG,CAAC;AAChD,QAAM,eAAW,qBAAgC,IAAI;AACrD,QAAM,cAAU,qBAA2B,IAAI;AAG/C,QAAM,cAAc,KAAK,WAAW,QAAQ,QAAQ,UAC/C,KAAK,KAAK,CAAC,GAAG,MAAM,MAAM,QAAQ,QAAQ,CAAC,CAAC;AAEjD,MAAI,eAAe,SAAS,YAAY,MAAM;AAE5C,aAAS,SAAS,QAAQ;AAC1B,YAAQ,UAAU;AAClB,aAAS,UAAU,IAAI,4BAAiB,UAAU,OAAO;AAAA,EAC3D;AAEA,QAAM,QAAQ,SAAS;AAEvB,8BAAU,MAAM;AACd,QAAI,YAAY;AAEhB,UAAM,YAAY,YAAY;AAE5B,UAAI;AACF,cAAM,MAAM,qBAAqB;AAAA,MACnC,QAAQ;AACN;AAAA,MACF;AACA,UAAI,aAAa,MAAM,WAAY;AACnC,kBAAY;AAGZ,aAAO,CAAC,aAAa,CAAC,MAAM,YAAY;AACtC,YAAI;AACF,gBAAM,MAAM,YAAY;AAAA,QAC1B,QAAQ;AACN;AAAA,QACF;AACA,YAAI,CAAC,aAAa,CAAC,MAAM;AACvB,sBAAY;AAAA,MAChB;AAAA,IACF;AAEA,SAAK,UAAU;AAEf,WAAO,MAAM;AACX,kBAAY;AACZ,YAAM,QAAQ;AAAA,IAChB;AAAA,EAEF,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,YAAY,MAAM,gBAAgB;AACxC,SAAO;AAAA,IACL,OAAO,YAAY,SAAY,MAAM;AAAA,IACrC,OAAO,YAAY,SAAY,MAAM;AAAA,IACrC;AAAA,IACA;AAAA,EACF;AACF;;;AC7EA,IAAAA,gBAA8C;AAC9C,IAAAC,iBAA6B;AAOtB,SAAS,gBACd,SACsD;AACtD,QAAM,CAAC,EAAE,WAAW,QAAI,0BAAW,OAAK,IAAI,GAAG,CAAC;AAChD,QAAM,eAAW,sBAA+B,IAAI;AAEpD,MAAI,SAAS,YAAY,MAAM;AAC7B,aAAS,UAAU,IAAI,4BAAgB,OAAO;AAAA,EAChD;AAEA,QAAM,QAAQ,SAAS;AAEvB,+BAAU,MAAM;AACd,QAAI,YAAY;AAEhB,UAAM,YAAY,YAAY;AAC5B,aAAO,CAAC,WAAW;AACjB,YAAI;AACF,gBAAM,MAAM,YAAY;AAAA,QAC1B,QAAQ;AACN;AAAA,QACF;AACA,YAAI,CAAC;AACH,sBAAY;AAAA,MAChB;AAAA,IACF;AAEA,SAAK,UAAU;AAEf,WAAO,MAAM;AAAE,kBAAY;AAAA,IAAM;AAAA,EACnC,GAAG,CAAC,KAAK,CAAC;AAEV,SAAO,CAAC,MAAM,OAAO,CAAC,MAAM,MAAM,IAAI,CAAC,GAAG,KAAK;AACjD;;;AFrCA,IAAAC,iBAA4D;","names":["import_react","import_fusion","import_fusion"]}
@@ -0,0 +1,23 @@
1
+ import { ComputedState, StateComputer, ComputedStateOptions, MutableState } from '@actuallab/fusion';
2
+ export { UIActionTracker, UIUpdateDelayer, uiActions } from '@actuallab/fusion';
3
+ import { Result } from '@actuallab/core';
4
+
5
+ interface UseComputedStateResult<T> {
6
+ value: T | undefined;
7
+ error: unknown;
8
+ isInitial: boolean;
9
+ state: ComputedState<T>;
10
+ }
11
+ /**
12
+ * React hook wrapping Fusion's ComputedState.
13
+ * Creates a ComputedState keyed on deps, subscribes to updates, and triggers re-renders.
14
+ */
15
+ declare function useComputedState<T>(computer: StateComputer<T>, deps: readonly unknown[], options?: ComputedStateOptions<T>): UseComputedStateResult<T>;
16
+
17
+ /**
18
+ * React hook wrapping Fusion's MutableState.
19
+ * Returns [value, setter, state] — re-renders on updates.
20
+ */
21
+ declare function useMutableState<T>(initial: T): [T, (value: Result<T> | T) => void, MutableState<T>];
22
+
23
+ export { type UseComputedStateResult, useComputedState, useMutableState };
@@ -0,0 +1,23 @@
1
+ import { ComputedState, StateComputer, ComputedStateOptions, MutableState } from '@actuallab/fusion';
2
+ export { UIActionTracker, UIUpdateDelayer, uiActions } from '@actuallab/fusion';
3
+ import { Result } from '@actuallab/core';
4
+
5
+ interface UseComputedStateResult<T> {
6
+ value: T | undefined;
7
+ error: unknown;
8
+ isInitial: boolean;
9
+ state: ComputedState<T>;
10
+ }
11
+ /**
12
+ * React hook wrapping Fusion's ComputedState.
13
+ * Creates a ComputedState keyed on deps, subscribes to updates, and triggers re-renders.
14
+ */
15
+ declare function useComputedState<T>(computer: StateComputer<T>, deps: readonly unknown[], options?: ComputedStateOptions<T>): UseComputedStateResult<T>;
16
+
17
+ /**
18
+ * React hook wrapping Fusion's MutableState.
19
+ * Returns [value, setter, state] — re-renders on updates.
20
+ */
21
+ declare function useMutableState<T>(initial: T): [T, (value: Result<T> | T) => void, MutableState<T>];
22
+
23
+ export { type UseComputedStateResult, useComputedState, useMutableState };
package/dist/index.js ADDED
@@ -0,0 +1,90 @@
1
+ // src/use-computed-state.ts
2
+ import { useEffect, useReducer, useRef } from "react";
3
+ import { ComputedState } from "@actuallab/fusion";
4
+ function useComputedState(computer, deps, options) {
5
+ const [, forceRender] = useReducer((c) => c + 1, 0);
6
+ const stateRef = useRef(null);
7
+ const depsRef = useRef(deps);
8
+ const depsChanged = deps.length !== depsRef.current.length || deps.some((d, i) => d !== depsRef.current[i]);
9
+ if (depsChanged || stateRef.current === null) {
10
+ stateRef.current?.dispose();
11
+ depsRef.current = deps;
12
+ stateRef.current = new ComputedState(computer, options);
13
+ }
14
+ const state = stateRef.current;
15
+ useEffect(() => {
16
+ let cancelled = false;
17
+ const subscribe = async () => {
18
+ try {
19
+ await state.whenFirstTimeUpdated();
20
+ } catch {
21
+ return;
22
+ }
23
+ if (cancelled || state.isDisposed) return;
24
+ forceRender();
25
+ while (!cancelled && !state.isDisposed) {
26
+ try {
27
+ await state.whenUpdated();
28
+ } catch {
29
+ return;
30
+ }
31
+ if (!cancelled && !state.isDisposed)
32
+ forceRender();
33
+ }
34
+ };
35
+ void subscribe();
36
+ return () => {
37
+ cancelled = true;
38
+ state.dispose();
39
+ };
40
+ }, [state]);
41
+ const isInitial = state.updateIndex === 0;
42
+ return {
43
+ value: isInitial ? void 0 : state.valueOrUndefined,
44
+ error: isInitial ? void 0 : state.error,
45
+ isInitial,
46
+ state
47
+ };
48
+ }
49
+
50
+ // src/use-mutable-state.ts
51
+ import { useEffect as useEffect2, useReducer as useReducer2, useRef as useRef2 } from "react";
52
+ import { MutableState } from "@actuallab/fusion";
53
+ function useMutableState(initial) {
54
+ const [, forceRender] = useReducer2((c) => c + 1, 0);
55
+ const stateRef = useRef2(null);
56
+ if (stateRef.current === null) {
57
+ stateRef.current = new MutableState(initial);
58
+ }
59
+ const state = stateRef.current;
60
+ useEffect2(() => {
61
+ let cancelled = false;
62
+ const subscribe = async () => {
63
+ while (!cancelled) {
64
+ try {
65
+ await state.whenUpdated();
66
+ } catch {
67
+ return;
68
+ }
69
+ if (!cancelled)
70
+ forceRender();
71
+ }
72
+ };
73
+ void subscribe();
74
+ return () => {
75
+ cancelled = true;
76
+ };
77
+ }, [state]);
78
+ return [state.value, (v) => state.set(v), state];
79
+ }
80
+
81
+ // src/index.ts
82
+ import { UIActionTracker, uiActions, UIUpdateDelayer } from "@actuallab/fusion";
83
+ export {
84
+ UIActionTracker,
85
+ UIUpdateDelayer,
86
+ uiActions,
87
+ useComputedState,
88
+ useMutableState
89
+ };
90
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/use-computed-state.ts","../src/use-mutable-state.ts","../src/index.ts"],"sourcesContent":["import { useEffect, useReducer, useRef } from \"react\";\r\nimport { ComputedState, type ComputedStateOptions, type StateComputer } from \"@actuallab/fusion\";\r\n\r\nexport interface UseComputedStateResult<T> {\r\n value: T | undefined;\r\n error: unknown;\r\n isInitial: boolean;\r\n state: ComputedState<T>;\r\n}\r\n\r\n/**\r\n * React hook wrapping Fusion's ComputedState.\r\n * Creates a ComputedState keyed on deps, subscribes to updates, and triggers re-renders.\r\n */\r\nexport function useComputedState<T>(\r\n computer: StateComputer<T>,\r\n deps: readonly unknown[],\r\n options?: ComputedStateOptions<T>,\r\n): UseComputedStateResult<T> {\r\n const [, forceRender] = useReducer(c => c + 1, 0);\r\n const stateRef = useRef<ComputedState<T> | null>(null);\r\n const depsRef = useRef<readonly unknown[]>(deps);\r\n\r\n // Check if deps changed\r\n const depsChanged = deps.length !== depsRef.current.length\r\n || deps.some((d, i) => d !== depsRef.current[i]);\r\n\r\n if (depsChanged || stateRef.current === null) {\r\n // Dispose old state\r\n stateRef.current?.dispose();\r\n depsRef.current = deps;\r\n stateRef.current = new ComputedState<T>(computer, options);\r\n }\r\n\r\n const state = stateRef.current;\r\n\r\n useEffect(() => {\r\n let cancelled = false;\r\n\r\n const subscribe = async () => {\r\n // Wait for first update\r\n try {\r\n await state.whenFirstTimeUpdated();\r\n } catch {\r\n return;\r\n }\r\n if (cancelled || state.isDisposed) return;\r\n forceRender();\r\n\r\n // Subscribe to subsequent updates\r\n while (!cancelled && !state.isDisposed) {\r\n try {\r\n await state.whenUpdated();\r\n } catch {\r\n return;\r\n }\r\n if (!cancelled && !state.isDisposed)\r\n forceRender();\r\n }\r\n };\r\n\r\n void subscribe();\r\n\r\n return () => {\r\n cancelled = true;\r\n state.dispose();\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [state]);\r\n\r\n const isInitial = state.updateIndex === 0;\r\n return {\r\n value: isInitial ? undefined : state.valueOrUndefined,\r\n error: isInitial ? undefined : state.error,\r\n isInitial,\r\n state,\r\n };\r\n}\r\n","import { useEffect, useReducer, useRef } from \"react\";\r\nimport { MutableState } from \"@actuallab/fusion\";\r\nimport type { Result } from \"@actuallab/core\";\r\n\r\n/**\r\n * React hook wrapping Fusion's MutableState.\r\n * Returns [value, setter, state] — re-renders on updates.\r\n */\r\nexport function useMutableState<T>(\r\n initial: T,\r\n): [T, (value: Result<T> | T) => void, MutableState<T>] {\r\n const [, forceRender] = useReducer(c => c + 1, 0);\r\n const stateRef = useRef<MutableState<T> | null>(null);\r\n\r\n if (stateRef.current === null) {\r\n stateRef.current = new MutableState<T>(initial);\r\n }\r\n\r\n const state = stateRef.current;\r\n\r\n useEffect(() => {\r\n let cancelled = false;\r\n\r\n const subscribe = async () => {\r\n while (!cancelled) {\r\n try {\r\n await state.whenUpdated();\r\n } catch {\r\n return;\r\n }\r\n if (!cancelled)\r\n forceRender();\r\n }\r\n };\r\n\r\n void subscribe();\r\n\r\n return () => { cancelled = true; };\r\n }, [state]);\r\n\r\n return [state.value, (v) => state.set(v), state];\r\n}\r\n","export { useComputedState } from \"./use-computed-state.js\";\r\nexport type { UseComputedStateResult } from \"./use-computed-state.js\";\r\nexport { useMutableState } from \"./use-mutable-state.js\";\r\n// Re-export from @actuallab/fusion for convenience\r\nexport { UIActionTracker, uiActions, UIUpdateDelayer } from \"@actuallab/fusion\";\r\n"],"mappings":";AAAA,SAAS,WAAW,YAAY,cAAc;AAC9C,SAAS,qBAAoE;AAatE,SAAS,iBACd,UACA,MACA,SAC2B;AAC3B,QAAM,CAAC,EAAE,WAAW,IAAI,WAAW,OAAK,IAAI,GAAG,CAAC;AAChD,QAAM,WAAW,OAAgC,IAAI;AACrD,QAAM,UAAU,OAA2B,IAAI;AAG/C,QAAM,cAAc,KAAK,WAAW,QAAQ,QAAQ,UAC/C,KAAK,KAAK,CAAC,GAAG,MAAM,MAAM,QAAQ,QAAQ,CAAC,CAAC;AAEjD,MAAI,eAAe,SAAS,YAAY,MAAM;AAE5C,aAAS,SAAS,QAAQ;AAC1B,YAAQ,UAAU;AAClB,aAAS,UAAU,IAAI,cAAiB,UAAU,OAAO;AAAA,EAC3D;AAEA,QAAM,QAAQ,SAAS;AAEvB,YAAU,MAAM;AACd,QAAI,YAAY;AAEhB,UAAM,YAAY,YAAY;AAE5B,UAAI;AACF,cAAM,MAAM,qBAAqB;AAAA,MACnC,QAAQ;AACN;AAAA,MACF;AACA,UAAI,aAAa,MAAM,WAAY;AACnC,kBAAY;AAGZ,aAAO,CAAC,aAAa,CAAC,MAAM,YAAY;AACtC,YAAI;AACF,gBAAM,MAAM,YAAY;AAAA,QAC1B,QAAQ;AACN;AAAA,QACF;AACA,YAAI,CAAC,aAAa,CAAC,MAAM;AACvB,sBAAY;AAAA,MAChB;AAAA,IACF;AAEA,SAAK,UAAU;AAEf,WAAO,MAAM;AACX,kBAAY;AACZ,YAAM,QAAQ;AAAA,IAChB;AAAA,EAEF,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,YAAY,MAAM,gBAAgB;AACxC,SAAO;AAAA,IACL,OAAO,YAAY,SAAY,MAAM;AAAA,IACrC,OAAO,YAAY,SAAY,MAAM;AAAA,IACrC;AAAA,IACA;AAAA,EACF;AACF;;;AC7EA,SAAS,aAAAA,YAAW,cAAAC,aAAY,UAAAC,eAAc;AAC9C,SAAS,oBAAoB;AAOtB,SAAS,gBACd,SACsD;AACtD,QAAM,CAAC,EAAE,WAAW,IAAID,YAAW,OAAK,IAAI,GAAG,CAAC;AAChD,QAAM,WAAWC,QAA+B,IAAI;AAEpD,MAAI,SAAS,YAAY,MAAM;AAC7B,aAAS,UAAU,IAAI,aAAgB,OAAO;AAAA,EAChD;AAEA,QAAM,QAAQ,SAAS;AAEvB,EAAAF,WAAU,MAAM;AACd,QAAI,YAAY;AAEhB,UAAM,YAAY,YAAY;AAC5B,aAAO,CAAC,WAAW;AACjB,YAAI;AACF,gBAAM,MAAM,YAAY;AAAA,QAC1B,QAAQ;AACN;AAAA,QACF;AACA,YAAI,CAAC;AACH,sBAAY;AAAA,MAChB;AAAA,IACF;AAEA,SAAK,UAAU;AAEf,WAAO,MAAM;AAAE,kBAAY;AAAA,IAAM;AAAA,EACnC,GAAG,CAAC,KAAK,CAAC;AAEV,SAAO,CAAC,MAAM,OAAO,CAAC,MAAM,MAAM,IAAI,CAAC,GAAG,KAAK;AACjD;;;ACrCA,SAAS,iBAAiB,WAAW,uBAAuB;","names":["useEffect","useReducer","useRef"]}
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@actuallab/fusion-react",
3
+ "version": "12.1.62",
4
+ "description": "React integration for Fusion - hooks and UI action tracking",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": {
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/index.js"
14
+ },
15
+ "require": {
16
+ "types": "./dist/index.d.cts",
17
+ "default": "./dist/index.cjs"
18
+ }
19
+ }
20
+ },
21
+ "files": [
22
+ "dist"
23
+ ],
24
+ "scripts": {
25
+ "build": "tsup --config ../../tsup.config.ts src/index.ts",
26
+ "clean": "rm -rf dist"
27
+ },
28
+ "dependencies": {
29
+ "@actuallab/core": "12.1.62",
30
+ "@actuallab/fusion": "12.1.62"
31
+ },
32
+ "peerDependencies": {
33
+ "react": "^19.0.0"
34
+ },
35
+ "publishConfig": {
36
+ "access": "public"
37
+ },
38
+ "license": "MIT"
39
+ }