@lite-fsm/react 2.0.5 → 2.1.0-alpha.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 +10 -0
- package/dist/FSMHydrationBoundary.d.cts +1 -1
- package/dist/FSMHydrationBoundary.d.ts +1 -1
- package/dist/FSMProvider.d.cts +1 -1
- package/dist/FSMProvider.d.ts +1 -1
- package/dist/hydrationOverlay.d.cts +17 -0
- package/dist/hydrationOverlay.d.ts +17 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -1
- package/dist/useTransition.d.cts +1 -1
- package/dist/useTransition.d.ts +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -78,8 +78,18 @@ function Counter() {
|
|
|
78
78
|
- `useTransition` - returns `manager.transition`.
|
|
79
79
|
- `useManager` - returns the current manager from context.
|
|
80
80
|
- `FSMHydrationBoundary` and `useHydrateSnapshot` - React hydration helpers for snapshots.
|
|
81
|
+
- `useStorageHydrationPreview` - generic raw `snapshot.storage[kind]` preview для plugin packages.
|
|
81
82
|
- `defineMachine` - creates a standalone shared machine hook.
|
|
82
83
|
|
|
84
|
+
## Storage Preview Bridge
|
|
85
|
+
|
|
86
|
+
`useStorageHydrationPreview(storageKind)` возвращает `{ hasPreview, preview,
|
|
87
|
+
hasServerPreview, serverPreview }`. Payload имеет тип `unknown`; plugin package
|
|
88
|
+
сам валидирует свой `snapshot.storage[kind]`. `FSMHydrationBoundary` наследует
|
|
89
|
+
storage preview от parent boundary, если child snapshot не содержит этот
|
|
90
|
+
`storageKind`, и заменяет его, если содержит. API не импортирует plugin packages
|
|
91
|
+
и не дает доступа к мутации storage runtime.
|
|
92
|
+
|
|
83
93
|
## Documentation
|
|
84
94
|
|
|
85
95
|
- [Full documentation](https://alexandergureev.github.io/lite-fsm/)
|
|
@@ -6,5 +6,5 @@ export type FSMHydrationBoundaryProps<S extends MachineStore, P extends AnyEvent
|
|
|
6
6
|
strategy?: HydrateStrategy;
|
|
7
7
|
transitionAfterHydrate?: TransitionAfterHydrate<P>;
|
|
8
8
|
}>;
|
|
9
|
-
export declare const FSMHydrationBoundary: <S extends MachineStore, P extends AnyEvent = MachineEvents<S>>({ snapshot, strategy, transitionAfterHydrate, children, }: FSMHydrationBoundaryProps<S, P>) =>
|
|
9
|
+
export declare const FSMHydrationBoundary: <S extends MachineStore, P extends AnyEvent = MachineEvents<S>>({ snapshot, strategy, transitionAfterHydrate, children, }: FSMHydrationBoundaryProps<S, P>) => React.JSX.Element;
|
|
10
10
|
export {};
|
|
@@ -6,5 +6,5 @@ export type FSMHydrationBoundaryProps<S extends MachineStore, P extends AnyEvent
|
|
|
6
6
|
strategy?: HydrateStrategy;
|
|
7
7
|
transitionAfterHydrate?: TransitionAfterHydrate<P>;
|
|
8
8
|
}>;
|
|
9
|
-
export declare const FSMHydrationBoundary: <S extends MachineStore, P extends AnyEvent = MachineEvents<S>>({ snapshot, strategy, transitionAfterHydrate, children, }: FSMHydrationBoundaryProps<S, P>) =>
|
|
9
|
+
export declare const FSMHydrationBoundary: <S extends MachineStore, P extends AnyEvent = MachineEvents<S>>({ snapshot, strategy, transitionAfterHydrate, children, }: FSMHydrationBoundaryProps<S, P>) => React.JSX.Element;
|
|
10
10
|
export {};
|
package/dist/FSMProvider.d.cts
CHANGED
|
@@ -7,4 +7,4 @@ export type FSMContextProviderProps<S extends MachineStore, P extends AnyEvent =
|
|
|
7
7
|
getServerSnapshot?: () => MachinesState<S>;
|
|
8
8
|
persist?: readonly FSMPersistLifecycle[];
|
|
9
9
|
}>;
|
|
10
|
-
export declare const FSMContextProvider: <S extends MachineStore, P extends AnyEvent = AnyEvent>({ children, getServerSnapshot, machineManager, persist, }: FSMContextProviderProps<S, P>) =>
|
|
10
|
+
export declare const FSMContextProvider: <S extends MachineStore, P extends AnyEvent = AnyEvent>({ children, getServerSnapshot, machineManager, persist, }: FSMContextProviderProps<S, P>) => React.JSX.Element;
|
package/dist/FSMProvider.d.ts
CHANGED
|
@@ -7,4 +7,4 @@ export type FSMContextProviderProps<S extends MachineStore, P extends AnyEvent =
|
|
|
7
7
|
getServerSnapshot?: () => MachinesState<S>;
|
|
8
8
|
persist?: readonly FSMPersistLifecycle[];
|
|
9
9
|
}>;
|
|
10
|
-
export declare const FSMContextProvider: <S extends MachineStore, P extends AnyEvent = AnyEvent>({ children, getServerSnapshot, machineManager, persist, }: FSMContextProviderProps<S, P>) =>
|
|
10
|
+
export declare const FSMContextProvider: <S extends MachineStore, P extends AnyEvent = AnyEvent>({ children, getServerSnapshot, machineManager, persist, }: FSMContextProviderProps<S, P>) => React.JSX.Element;
|
|
@@ -2,12 +2,29 @@ import React from "react";
|
|
|
2
2
|
import type { MachinesState, MachineStore } from "@lite-fsm/core";
|
|
3
3
|
export type HydrationOverlay<S extends MachineStore> = {
|
|
4
4
|
getState: () => MachinesState<S>;
|
|
5
|
+
getStoragePreview: (storageKind: string) => StorageHydrationPreviewSlot;
|
|
6
|
+
};
|
|
7
|
+
type StorageHydrationPreviewSlot = {
|
|
8
|
+
readonly hasPreview: boolean;
|
|
9
|
+
readonly preview: unknown | undefined;
|
|
10
|
+
};
|
|
11
|
+
export type FSMStorageHydrationPreview = {
|
|
12
|
+
readonly hasPreview: boolean;
|
|
13
|
+
readonly preview: unknown | undefined;
|
|
14
|
+
readonly hasServerPreview: boolean;
|
|
15
|
+
readonly serverPreview: unknown | undefined;
|
|
5
16
|
};
|
|
6
17
|
type ErasedHydrationOverlay = {
|
|
7
18
|
getState: () => unknown;
|
|
19
|
+
getStoragePreview: (storageKind: string) => StorageHydrationPreviewSlot;
|
|
8
20
|
};
|
|
21
|
+
export declare const NO_STORAGE_HYDRATION_PREVIEW: StorageHydrationPreviewSlot;
|
|
9
22
|
export declare const FSMHydrationOverlayProvider: React.Provider<ErasedHydrationOverlay | null>;
|
|
10
23
|
export declare const useHydrationOverlay: <S extends MachineStore>() => HydrationOverlay<S> | null;
|
|
11
24
|
export declare const FSMServerSnapshotProvider: React.Provider<ErasedHydrationOverlay | null>;
|
|
12
25
|
export declare const useServerSnapshot: <S extends MachineStore>() => HydrationOverlay<S> | null;
|
|
26
|
+
export declare const readSnapshotStoragePreview: (snapshot: {
|
|
27
|
+
readonly storage?: Readonly<Record<string, unknown>>;
|
|
28
|
+
}, parent: ((storageKind: string) => StorageHydrationPreviewSlot) | undefined, storageKind: string) => StorageHydrationPreviewSlot;
|
|
29
|
+
export declare function useStorageHydrationPreview(storageKind: string): FSMStorageHydrationPreview;
|
|
13
30
|
export {};
|
|
@@ -2,12 +2,29 @@ import React from "react";
|
|
|
2
2
|
import type { MachinesState, MachineStore } from "@lite-fsm/core";
|
|
3
3
|
export type HydrationOverlay<S extends MachineStore> = {
|
|
4
4
|
getState: () => MachinesState<S>;
|
|
5
|
+
getStoragePreview: (storageKind: string) => StorageHydrationPreviewSlot;
|
|
6
|
+
};
|
|
7
|
+
type StorageHydrationPreviewSlot = {
|
|
8
|
+
readonly hasPreview: boolean;
|
|
9
|
+
readonly preview: unknown | undefined;
|
|
10
|
+
};
|
|
11
|
+
export type FSMStorageHydrationPreview = {
|
|
12
|
+
readonly hasPreview: boolean;
|
|
13
|
+
readonly preview: unknown | undefined;
|
|
14
|
+
readonly hasServerPreview: boolean;
|
|
15
|
+
readonly serverPreview: unknown | undefined;
|
|
5
16
|
};
|
|
6
17
|
type ErasedHydrationOverlay = {
|
|
7
18
|
getState: () => unknown;
|
|
19
|
+
getStoragePreview: (storageKind: string) => StorageHydrationPreviewSlot;
|
|
8
20
|
};
|
|
21
|
+
export declare const NO_STORAGE_HYDRATION_PREVIEW: StorageHydrationPreviewSlot;
|
|
9
22
|
export declare const FSMHydrationOverlayProvider: React.Provider<ErasedHydrationOverlay | null>;
|
|
10
23
|
export declare const useHydrationOverlay: <S extends MachineStore>() => HydrationOverlay<S> | null;
|
|
11
24
|
export declare const FSMServerSnapshotProvider: React.Provider<ErasedHydrationOverlay | null>;
|
|
12
25
|
export declare const useServerSnapshot: <S extends MachineStore>() => HydrationOverlay<S> | null;
|
|
26
|
+
export declare const readSnapshotStoragePreview: (snapshot: {
|
|
27
|
+
readonly storage?: Readonly<Record<string, unknown>>;
|
|
28
|
+
}, parent: ((storageKind: string) => StorageHydrationPreviewSlot) | undefined, storageKind: string) => StorageHydrationPreviewSlot;
|
|
29
|
+
export declare function useStorageHydrationPreview(storageKind: string): FSMStorageHydrationPreview;
|
|
13
30
|
export {};
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";"use client";var
|
|
1
|
+
"use strict";"use client";var ge=Object.create;var h=Object.defineProperty;var he=Object.getOwnPropertyDescriptor;var xe=Object.getOwnPropertyNames;var Ee=Object.getPrototypeOf,we=Object.prototype.hasOwnProperty;var Fe=(e,r)=>{for(var t in r)h(e,t,{get:r[t],enumerable:!0})},q=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of xe(r))!we.call(e,n)&&n!==t&&h(e,n,{get:()=>r[n],enumerable:!(o=he(r,n))||o.enumerable});return e};var y=(e,r,t)=>(t=e!=null?ge(Ee(e)):{},q(r||!e||!e.__esModule?h(t,"default",{value:e,enumerable:!0}):t,e)),Re=e=>q(h({},"__esModule",{value:!0}),e);var _e={};Fe(_e,{FSMContext:()=>f,FSMContextProvider:()=>ne,FSMHydrationBoundary:()=>Q,defineMachine:()=>de,useHydrateSnapshot:()=>se,useManager:()=>S,useSelector:()=>Se,useStorageHydrationPreview:()=>X,useTransition:()=>ce});module.exports=Re(_e);var j=y(require("react"),1),G="Hooks from @lite-fsm/react must be used within FSMContextProvider.",f=j.default.createContext(null);var c=y(require("react"),1);var M=y(require("react"),1),m=Object.freeze({hasPreview:!1,preview:void 0}),b=M.default.createContext(null),z=b.Provider,x=()=>M.default.useContext(b),_=M.default.createContext(null),E=_.Provider,w=()=>M.default.useContext(_),I=(e,r,t)=>{let o=e.storage;return o&&Object.prototype.hasOwnProperty.call(o,t)?{hasPreview:!0,preview:o[t]}:r?r(t):m};function X(e){let r=M.default.useContext(b),t=M.default.useContext(_),o=r?.getStoragePreview(e)??m,n=t?.getStoragePreview(e)??m;return{hasPreview:o.hasPreview,preview:o.preview,hasServerPreview:n.hasPreview,serverPreview:n.preview}}var J=y(require("react"),1);var S=()=>{let e=J.default.useContext(f);if(!e)throw new Error(G);return e};var D=y(require("react"),1),F=typeof window>"u"?D.default.useEffect:D.default.useLayoutEffect;var L=require("react/jsx-runtime"),K=(e,r,t,o)=>o!==null&&e!==null&&e.snapshot===r&&e.strategy===t&&e.actions===o,Q=({snapshot:e,strategy:r,transitionAfterHydrate:t,children:o})=>{let n=S(),s=x(),u=w(),a=r??"merge",l=c.default.useRef(null),[g,ue]=c.default.useState(null),k=c.default.useRef(null),[pe,Me]=c.default.useState(null),p=c.default.useMemo(()=>{if(!t)return null;let i=Array.isArray(t)?t:[t];return i.length>0?i:null},[t]),d=s?.getState()??n.getState(),H=c.default.useMemo(()=>n.getHydratedState(e,{baseState:d,strategy:a}),[d,a,n,e]),V=K(pe,e,a,p),N=g!==null&&g.committedState===d&&g.snapshot===e&&g.strategy===a,A=H!==d&&!V&&!N,B=u?.getState()??d,W=c.default.useMemo(()=>n.getHydratedState(e,{baseState:B,strategy:a}),[a,n,B,e]),me=e.storage!==void 0&&Object.keys(e.storage).length>0,T=!V&&!N&&me;F(()=>{let i=K(k.current,e,a,p),Y=p!==null&&!i,U=A&&!i;if(!U&&!Y)return;let O=l.current;if(U&&!(O?.baseState===d&&O.snapshot===e&&O.strategy===a)){n.hydrate(e,{strategy:a});let v={baseState:d,committedState:n.getState(),snapshot:e,strategy:a};l.current=v,ue(v)}if(Y&&p!==null){for(let Pe of p)n.transition(Pe);let v={snapshot:e,strategy:a,actions:p};k.current=v,Me(v)}},[d,A,a,n,e,p]);let fe=c.default.useMemo(()=>({getState:()=>H,getStoragePreview:i=>T?I(e,s?.getStoragePreview,i):s?.getStoragePreview(i)??m}),[T,s,H,e]),ve=c.default.useMemo(()=>({getState:()=>W,getStoragePreview:i=>I(e,u?.getStoragePreview,i)}),[u,W,e]);return(0,L.jsx)(E,{value:ve,children:A||T?(0,L.jsx)(z,{value:fe,children:o}):o})};var P=y(require("react"),1);var ee=y(require("react"),1),Z=globalThis,$=Symbol.for("@lite-fsm/react.persistStatusesContext"),R=[],Ce=[],te=Z[$]??(Z[$]=ee.default.createContext(null)),He=e=>{let r=e;return e!==null&&typeof e=="object"&&typeof r.getStatus=="function"&&typeof r.subscribeStatus=="function"},re=(e,r)=>{if(e.length!==r.length)return!1;for(let t=0;t<e.length;t+=1)if(e[t]!==r[t])return!1;return!0},oe=e=>e===void 0||e.length===0?Ce:e.map(r=>He(r)?r:null);var C=require("react/jsx-runtime"),Ae=e=>e===void 0||e.length===0?R:e,Te=e=>{let[r,t]=P.default.useState(R),o=Ae(e);return re(r,o)||t(o.length===0?R:[...o]),r},ne=({children:e,getServerSnapshot:r,machineManager:t,persist:o})=>{let n=P.default.useMemo(()=>{let a=()=>m;if(r)return{getState:r,getStoragePreview:a};let l=t.getState();return{getState:()=>l,getStoragePreview:a}},[r,t]),s=Te(o),u=P.default.useMemo(()=>oe(s),[s]);return P.default.useEffect(()=>{if(s.length===0)return;let a=s.map(l=>l.start());return()=>{for(let l of a)l()}},[s]),(0,C.jsx)(f.Provider,{value:t,children:(0,C.jsx)(te.Provider,{value:u,children:(0,C.jsx)(E,{value:n,children:e})})})};var ae=require("react");var se=(e,r)=>{let t=S(),o=r?.strategy??"merge",n=(0,ae.useRef)(null);F(()=>{n.current?.snapshot===e&&n.current.strategy===o||(t.hydrate(e,{strategy:o}),n.current={snapshot:e,strategy:o})},[t,e,o])};var ie=y(require("use-sync-external-store/shim/with-selector"),1);var{useSyncExternalStoreWithSelector:Oe}=ie.default;function Se(e,r){let t=S(),o=x(),n=w(),s=o?.getState??t.getState,u=n?.getState??s;return Oe(t.onTransition,s,u,e,r)}var ce=()=>S().transition;var ye=y(require("use-sync-external-store/shim/with-selector"),1),le=require("@lite-fsm/core"),{useSyncExternalStoreWithSelector:be}=ye.default,de=(e={})=>({create:r=>{let t=(0,le.defineMachine)(e).create(r),o=(n,s)=>be(t.onTransition,t.getState,t.getState,n,s);return Object.assign(o,t),o}});0&&(module.exports={FSMContext,FSMContextProvider,FSMHydrationBoundary,defineMachine,useHydrateSnapshot,useManager,useSelector,useStorageHydrationPreview,useTransition});
|
package/dist/index.d.cts
CHANGED
|
@@ -4,9 +4,11 @@ export type { FSMHydrationBoundaryProps } from "./FSMHydrationBoundary";
|
|
|
4
4
|
export { FSMHydrationBoundary } from "./FSMHydrationBoundary";
|
|
5
5
|
export type { FSMContextProviderProps, FSMPersistLifecycle } from "./FSMProvider";
|
|
6
6
|
export { FSMContextProvider } from "./FSMProvider";
|
|
7
|
+
export type { FSMStorageHydrationPreview } from "./hydrationOverlay";
|
|
7
8
|
export type { TypedUseMachineHook, TypedUseManagerHook, TypedUseSelectorHook, TypedUseTransitionHook } from "./types";
|
|
8
9
|
export { useHydrateSnapshot } from "./useHydrateSnapshot";
|
|
9
10
|
export { useManager } from "./useManager";
|
|
10
11
|
export { useSelector } from "./useSelector";
|
|
12
|
+
export { useStorageHydrationPreview } from "./hydrationOverlay";
|
|
11
13
|
export { useTransition } from "./useTransition";
|
|
12
14
|
export { defineMachine } from "./defineMachine";
|
package/dist/index.d.ts
CHANGED
|
@@ -4,9 +4,11 @@ export type { FSMHydrationBoundaryProps } from "./FSMHydrationBoundary";
|
|
|
4
4
|
export { FSMHydrationBoundary } from "./FSMHydrationBoundary";
|
|
5
5
|
export type { FSMContextProviderProps, FSMPersistLifecycle } from "./FSMProvider";
|
|
6
6
|
export { FSMContextProvider } from "./FSMProvider";
|
|
7
|
+
export type { FSMStorageHydrationPreview } from "./hydrationOverlay";
|
|
7
8
|
export type { TypedUseMachineHook, TypedUseManagerHook, TypedUseSelectorHook, TypedUseTransitionHook } from "./types";
|
|
8
9
|
export { useHydrateSnapshot } from "./useHydrateSnapshot";
|
|
9
10
|
export { useManager } from "./useManager";
|
|
10
11
|
export { useSelector } from "./useSelector";
|
|
12
|
+
export { useStorageHydrationPreview } from "./hydrationOverlay";
|
|
11
13
|
export { useTransition } from "./useTransition";
|
|
12
14
|
export { defineMachine } from "./defineMachine";
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import
|
|
1
|
+
"use client";import oe from"react";var B="Hooks from @lite-fsm/react must be used within FSMContextProvider.",f=oe.createContext(null);import c from"react";import M from"react";var p=Object.freeze({hasPreview:!1,preview:void 0}),A=M.createContext(null),W=A.Provider,P=()=>M.useContext(A),T=M.createContext(null),g=T.Provider,h=()=>M.useContext(T),O=(e,r,t)=>{let o=e.storage;return o&&Object.prototype.hasOwnProperty.call(o,t)?{hasPreview:!0,preview:o[t]}:r?r(t):p};function ne(e){let r=M.useContext(A),t=M.useContext(T),o=r?.getStoragePreview(e)??p,n=t?.getStoragePreview(e)??p;return{hasPreview:o.hasPreview,preview:o.preview,hasServerPreview:n.hasPreview,serverPreview:n.preview}}import ae from"react";var S=()=>{let e=ae.useContext(f);if(!e)throw new Error(B);return e};import Y from"react";var x=typeof window>"u"?Y.useEffect:Y.useLayoutEffect;import{jsx as q}from"react/jsx-runtime";var U=(e,r,t,o)=>o!==null&&e!==null&&e.snapshot===r&&e.strategy===t&&e.actions===o,se=({snapshot:e,strategy:r,transitionAfterHydrate:t,children:o})=>{let n=S(),s=P(),d=h(),a=r??"merge",y=c.useRef(null),[v,K]=c.useState(null),_=c.useRef(null),[Q,Z]=c.useState(null),u=c.useMemo(()=>{if(!t)return null;let i=Array.isArray(t)?t:[t];return i.length>0?i:null},[t]),l=s?.getState()??n.getState(),F=c.useMemo(()=>n.getHydratedState(e,{baseState:l,strategy:a}),[l,a,n,e]),I=U(Q,e,a,u),D=v!==null&&v.committedState===l&&v.snapshot===e&&v.strategy===a,R=F!==l&&!I&&!D,L=d?.getState()??l,k=c.useMemo(()=>n.getHydratedState(e,{baseState:L,strategy:a}),[a,n,L,e]),$=e.storage!==void 0&&Object.keys(e.storage).length>0,C=!I&&!D&&$;x(()=>{let i=U(_.current,e,a,u),V=u!==null&&!i,N=R&&!i;if(!N&&!V)return;let H=y.current;if(N&&!(H?.baseState===l&&H.snapshot===e&&H.strategy===a)){n.hydrate(e,{strategy:a});let m={baseState:l,committedState:n.getState(),snapshot:e,strategy:a};y.current=m,K(m)}if(V&&u!==null){for(let re of u)n.transition(re);let m={snapshot:e,strategy:a,actions:u};_.current=m,Z(m)}},[l,R,a,n,e,u]);let ee=c.useMemo(()=>({getState:()=>F,getStoragePreview:i=>C?O(e,s?.getStoragePreview,i):s?.getStoragePreview(i)??p}),[C,s,F,e]),te=c.useMemo(()=>({getState:()=>k,getStoragePreview:i=>O(e,d?.getStoragePreview,i)}),[d,k,e]);return q(g,{value:te,children:R||C?q(W,{value:ee,children:o}):o})};import w from"react";import ie from"react";var j=globalThis,G=Symbol.for("@lite-fsm/react.persistStatusesContext"),E=[],Se=[],z=j[G]??(j[G]=ie.createContext(null)),ce=e=>{let r=e;return e!==null&&typeof e=="object"&&typeof r.getStatus=="function"&&typeof r.subscribeStatus=="function"},X=(e,r)=>{if(e.length!==r.length)return!1;for(let t=0;t<e.length;t+=1)if(e[t]!==r[t])return!1;return!0},J=e=>e===void 0||e.length===0?Se:e.map(r=>ce(r)?r:null);import{jsx as b}from"react/jsx-runtime";var ye=e=>e===void 0||e.length===0?E:e,le=e=>{let[r,t]=w.useState(E),o=ye(e);return X(r,o)||t(o.length===0?E:[...o]),r},de=({children:e,getServerSnapshot:r,machineManager:t,persist:o})=>{let n=w.useMemo(()=>{let a=()=>p;if(r)return{getState:r,getStoragePreview:a};let y=t.getState();return{getState:()=>y,getStoragePreview:a}},[r,t]),s=le(o),d=w.useMemo(()=>J(s),[s]);return w.useEffect(()=>{if(s.length===0)return;let a=s.map(y=>y.start());return()=>{for(let y of a)y()}},[s]),b(f.Provider,{value:t,children:b(z.Provider,{value:d,children:b(g,{value:n,children:e})})})};import{useRef as ue}from"react";var pe=(e,r)=>{let t=S(),o=r?.strategy??"merge",n=ue(null);x(()=>{n.current?.snapshot===e&&n.current.strategy===o||(t.hydrate(e,{strategy:o}),n.current={snapshot:e,strategy:o})},[t,e,o])};import Me from"use-sync-external-store/shim/with-selector";var{useSyncExternalStoreWithSelector:me}=Me;function fe(e,r){let t=S(),o=P(),n=h(),s=o?.getState??t.getState,d=n?.getState??s;return me(t.onTransition,s,d,e,r)}var ve=()=>S().transition;import Pe from"use-sync-external-store/shim/with-selector";import{defineMachine as ge}from"@lite-fsm/core";var{useSyncExternalStoreWithSelector:he}=Pe,xe=(e={})=>({create:r=>{let t=ge(e).create(r),o=(n,s)=>he(t.onTransition,t.getState,t.getState,n,s);return Object.assign(o,t),o}});export{f as FSMContext,de as FSMContextProvider,se as FSMHydrationBoundary,xe as defineMachine,pe as useHydrateSnapshot,S as useManager,fe as useSelector,ne as useStorageHydrationPreview,ve as useTransition};
|
package/dist/useTransition.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { AnyEvent } from "@lite-fsm/core";
|
|
2
|
-
export declare const useTransition: <P extends AnyEvent = AnyEvent>() => (payload: import("@lite-fsm/core").ManagerAction<P>) => import("@lite-fsm/core").ManagerAction<P>;
|
|
2
|
+
export declare const useTransition: <P extends AnyEvent = AnyEvent>() => (payload: import("@lite-fsm/core").ManagerAction<P, import("@lite-fsm/core").FSMEventMeta>) => import("@lite-fsm/core").ManagerAction<P, import("@lite-fsm/core").FSMEventMeta>;
|
package/dist/useTransition.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { AnyEvent } from "@lite-fsm/core";
|
|
2
|
-
export declare const useTransition: <P extends AnyEvent = AnyEvent>() => (payload: import("@lite-fsm/core").ManagerAction<P>) => import("@lite-fsm/core").ManagerAction<P>;
|
|
2
|
+
export declare const useTransition: <P extends AnyEvent = AnyEvent>() => (payload: import("@lite-fsm/core").ManagerAction<P, import("@lite-fsm/core").FSMEventMeta>) => import("@lite-fsm/core").ManagerAction<P, import("@lite-fsm/core").FSMEventMeta>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lite-fsm/react",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.1.0-alpha.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "React bindings for lite-fsm",
|
|
6
6
|
"license": "MIT",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"use-sync-external-store": ">=1.2.0",
|
|
59
|
-
"@lite-fsm/core": "2.0.
|
|
59
|
+
"@lite-fsm/core": "2.1.0-alpha.0"
|
|
60
60
|
},
|
|
61
61
|
"peerDependencies": {
|
|
62
62
|
"react": ">=18.0.0"
|