@xstate/react 3.0.0 → 4.0.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/CHANGELOG.md +11 -0
- package/{lib → dist/declarations/src}/fsm.d.ts +3 -4
- package/{es/index.js → dist/declarations/src/index.d.ts} +5 -5
- package/{es → dist/declarations/src}/types.d.ts +15 -16
- package/dist/declarations/src/useActor.d.ts +3 -0
- package/{es → dist/declarations/src}/useConstant.d.ts +1 -2
- package/{es → dist/declarations/src}/useInterpret.d.ts +13 -14
- package/{es → dist/declarations/src}/useMachine.d.ts +21 -22
- package/dist/declarations/src/useSelector.d.ts +2 -0
- package/{es → dist/declarations/src}/useSpawn.d.ts +9 -10
- package/dist/useConstant-644f0e11.cjs.dev.js +74 -0
- package/dist/useConstant-94bfdbb5.esm.js +71 -0
- package/dist/useConstant-eeb49d3f.cjs.prod.js +17 -0
- package/dist/xstate-react.cjs.d.ts +1 -0
- package/dist/xstate-react.cjs.dev.js +241 -0
- package/dist/xstate-react.cjs.js +7 -0
- package/dist/xstate-react.cjs.prod.js +231 -0
- package/dist/xstate-react.esm.js +229 -0
- package/fsm/dist/xstate-react-fsm.cjs.d.ts +1 -0
- package/fsm/dist/xstate-react-fsm.cjs.dev.js +98 -0
- package/fsm/dist/xstate-react-fsm.cjs.js +7 -0
- package/fsm/dist/xstate-react-fsm.cjs.prod.js +144 -0
- package/fsm/dist/xstate-react-fsm.esm.js +89 -0
- package/fsm/package.json +3 -5
- package/package.json +16 -40
- package/dist/xstate-react-fsm.umd.min.js +0 -54
- package/dist/xstate-react.umd.min.js +0 -39
- package/es/fsm.d.ts +0 -4
- package/es/fsm.js +0 -82
- package/es/index.d.ts +0 -6
- package/es/types.js +0 -1
- package/es/useActor.d.ts +0 -9
- package/es/useActor.js +0 -60
- package/es/useConstant.js +0 -8
- package/es/useInterpret.js +0 -105
- package/es/useMachine.js +0 -69
- package/es/useSelector.d.ts +0 -3
- package/es/useSelector.js +0 -29
- package/es/useSpawn.js +0 -15
- package/es/utils.d.ts +0 -4
- package/es/utils.js +0 -53
- package/lib/fsm.js +0 -87
- package/lib/index.d.ts +0 -6
- package/lib/index.js +0 -13
- package/lib/types.d.ts +0 -16
- package/lib/types.js +0 -2
- package/lib/useActor.d.ts +0 -9
- package/lib/useActor.js +0 -65
- package/lib/useConstant.d.ts +0 -2
- package/lib/useConstant.js +0 -11
- package/lib/useInterpret.d.ts +0 -14
- package/lib/useInterpret.js +0 -110
- package/lib/useMachine.d.ts +0 -22
- package/lib/useMachine.js +0 -73
- package/lib/useSelector.d.ts +0 -3
- package/lib/useSelector.js +0 -33
- package/lib/useSpawn.d.ts +0 -10
- package/lib/useSpawn.js +0 -19
- package/lib/utils.d.ts +0 -4
- package/lib/utils.js +0 -58
package/lib/useMachine.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
-
if (!m) return o;
|
|
5
|
-
var i = m.call(o), r, ar = [], e;
|
|
6
|
-
try {
|
|
7
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
-
}
|
|
9
|
-
catch (error) { e = { error: error }; }
|
|
10
|
-
finally {
|
|
11
|
-
try {
|
|
12
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
-
}
|
|
14
|
-
finally { if (e) throw e.error; }
|
|
15
|
-
}
|
|
16
|
-
return ar;
|
|
17
|
-
};
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.useMachine = void 0;
|
|
20
|
-
var react_1 = require("react");
|
|
21
|
-
var with_selector_1 = require("use-sync-external-store/shim/with-selector");
|
|
22
|
-
var xstate_1 = require("xstate");
|
|
23
|
-
var useInterpret_1 = require("./useInterpret");
|
|
24
|
-
function identity(a) {
|
|
25
|
-
return a;
|
|
26
|
-
}
|
|
27
|
-
function useMachine(getMachine) {
|
|
28
|
-
var _a = [];
|
|
29
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
30
|
-
_a[_i - 1] = arguments[_i];
|
|
31
|
-
}
|
|
32
|
-
var _b = __read(_a, 1), _c = _b[0], options = _c === void 0 ? {} : _c;
|
|
33
|
-
// using `useIdleInterpreter` allows us to subscribe to the service *before* we start it
|
|
34
|
-
// so we don't miss any notifications
|
|
35
|
-
var service = (0, useInterpret_1.useIdleInterpreter)(getMachine, options);
|
|
36
|
-
var getSnapshot = (0, react_1.useCallback)(function () {
|
|
37
|
-
if (service.status === xstate_1.InterpreterStatus.NotStarted) {
|
|
38
|
-
return (options.state
|
|
39
|
-
? xstate_1.State.create(options.state)
|
|
40
|
-
: service.machine.initialState);
|
|
41
|
-
}
|
|
42
|
-
return service.state;
|
|
43
|
-
}, [service]);
|
|
44
|
-
var isEqual = (0, react_1.useCallback)(function (prevState, nextState) {
|
|
45
|
-
if (service.status === xstate_1.InterpreterStatus.NotStarted) {
|
|
46
|
-
return true;
|
|
47
|
-
}
|
|
48
|
-
// Only change the current state if:
|
|
49
|
-
// - the incoming state is the "live" initial state (since it might have new actors)
|
|
50
|
-
// - OR the incoming state actually changed.
|
|
51
|
-
//
|
|
52
|
-
// The "live" initial state will have .changed === undefined.
|
|
53
|
-
var initialStateChanged = nextState.changed === undefined &&
|
|
54
|
-
(Object.keys(nextState.children).length > 0 ||
|
|
55
|
-
typeof prevState.changed === 'boolean');
|
|
56
|
-
return !(nextState.changed || initialStateChanged);
|
|
57
|
-
}, [service]);
|
|
58
|
-
var subscribe = (0, react_1.useCallback)(function (handleStoreChange) {
|
|
59
|
-
var unsubscribe = service.subscribe(handleStoreChange).unsubscribe;
|
|
60
|
-
return unsubscribe;
|
|
61
|
-
}, [service]);
|
|
62
|
-
var storeSnapshot = (0, with_selector_1.useSyncExternalStoreWithSelector)(subscribe, getSnapshot, getSnapshot, identity, isEqual);
|
|
63
|
-
(0, react_1.useEffect)(function () {
|
|
64
|
-
var rehydratedState = options.state;
|
|
65
|
-
service.start(rehydratedState ? xstate_1.State.create(rehydratedState) : undefined);
|
|
66
|
-
return function () {
|
|
67
|
-
service.stop();
|
|
68
|
-
service.status = xstate_1.InterpreterStatus.NotStarted;
|
|
69
|
-
};
|
|
70
|
-
}, []);
|
|
71
|
-
return [storeSnapshot, service.send, service];
|
|
72
|
-
}
|
|
73
|
-
exports.useMachine = useMachine;
|
package/lib/useSelector.d.ts
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { ActorRef, Subscribable } from 'xstate';
|
|
2
|
-
export declare function useSelector<TActor extends ActorRef<any, any>, T, TEmitted = TActor extends Subscribable<infer Emitted> ? Emitted : never>(actor: TActor, selector: (emitted: TEmitted) => T, compare?: (a: T, b: T) => boolean, getSnapshot?: (a: TActor) => TEmitted): T;
|
|
3
|
-
//# sourceMappingURL=useSelector.d.ts.map
|
package/lib/useSelector.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useSelector = void 0;
|
|
4
|
-
var react_1 = require("react");
|
|
5
|
-
var with_selector_1 = require("use-sync-external-store/shim/with-selector");
|
|
6
|
-
var useActor_1 = require("./useActor");
|
|
7
|
-
var utils_1 = require("./utils");
|
|
8
|
-
function isService(actor) {
|
|
9
|
-
return 'state' in actor && 'machine' in actor;
|
|
10
|
-
}
|
|
11
|
-
var defaultCompare = function (a, b) { return a === b; };
|
|
12
|
-
var defaultGetSnapshot = function (a) {
|
|
13
|
-
return isService(a)
|
|
14
|
-
? (0, utils_1.getServiceSnapshot)(a)
|
|
15
|
-
: (0, useActor_1.isActorWithState)(a)
|
|
16
|
-
? a.state
|
|
17
|
-
: undefined;
|
|
18
|
-
};
|
|
19
|
-
function useSelector(actor, selector, compare, getSnapshot) {
|
|
20
|
-
if (compare === void 0) { compare = defaultCompare; }
|
|
21
|
-
if (getSnapshot === void 0) { getSnapshot = defaultGetSnapshot; }
|
|
22
|
-
var subscribe = (0, react_1.useCallback)(function (handleStoreChange) {
|
|
23
|
-
var unsubscribe = actor.subscribe(handleStoreChange).unsubscribe;
|
|
24
|
-
return unsubscribe;
|
|
25
|
-
}, [actor]);
|
|
26
|
-
var boundGetSnapshot = (0, react_1.useCallback)(function () { return getSnapshot(actor); }, [
|
|
27
|
-
actor,
|
|
28
|
-
getSnapshot
|
|
29
|
-
]);
|
|
30
|
-
var selectedSnapshot = (0, with_selector_1.useSyncExternalStoreWithSelector)(subscribe, boundGetSnapshot, boundGetSnapshot, selector, compare);
|
|
31
|
-
return selectedSnapshot;
|
|
32
|
-
}
|
|
33
|
-
exports.useSelector = useSelector;
|
package/lib/useSpawn.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { ActorRef, Behavior, EventObject } from 'xstate';
|
|
2
|
-
/**
|
|
3
|
-
* React hook that spawns an `ActorRef` with the specified `behavior`.
|
|
4
|
-
* The returned `ActorRef` can be used with the `useActor(actorRef)` hook.
|
|
5
|
-
*
|
|
6
|
-
* @param behavior The actor behavior to spawn
|
|
7
|
-
* @returns An ActorRef with the specified `behavior`
|
|
8
|
-
*/
|
|
9
|
-
export declare function useSpawn<TState, TEvent extends EventObject>(behavior: Behavior<TEvent, TState>): ActorRef<TEvent, TState>;
|
|
10
|
-
//# sourceMappingURL=useSpawn.d.ts.map
|
package/lib/useSpawn.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useSpawn = void 0;
|
|
4
|
-
var xstate_1 = require("xstate");
|
|
5
|
-
var useConstant_1 = require("./useConstant");
|
|
6
|
-
/**
|
|
7
|
-
* React hook that spawns an `ActorRef` with the specified `behavior`.
|
|
8
|
-
* The returned `ActorRef` can be used with the `useActor(actorRef)` hook.
|
|
9
|
-
*
|
|
10
|
-
* @param behavior The actor behavior to spawn
|
|
11
|
-
* @returns An ActorRef with the specified `behavior`
|
|
12
|
-
*/
|
|
13
|
-
function useSpawn(behavior) {
|
|
14
|
-
var actorRef = (0, useConstant_1.default)(function () {
|
|
15
|
-
return (0, xstate_1.spawnBehavior)(behavior);
|
|
16
|
-
});
|
|
17
|
-
return actorRef;
|
|
18
|
-
}
|
|
19
|
-
exports.useSpawn = useSpawn;
|
package/lib/utils.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { Interpreter } from 'xstate';
|
|
2
|
-
export declare function partition<T, A extends T, B extends T>(items: T[], predicate: (item: T) => item is A): [A[], B[]];
|
|
3
|
-
export declare function getServiceSnapshot<TService extends Interpreter<any, any, any, any>>(service: TService): TService['state'];
|
|
4
|
-
//# sourceMappingURL=utils.d.ts.map
|
package/lib/utils.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
-
if (!m) return o;
|
|
5
|
-
var i = m.call(o), r, ar = [], e;
|
|
6
|
-
try {
|
|
7
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
-
}
|
|
9
|
-
catch (error) { e = { error: error }; }
|
|
10
|
-
finally {
|
|
11
|
-
try {
|
|
12
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
-
}
|
|
14
|
-
finally { if (e) throw e.error; }
|
|
15
|
-
}
|
|
16
|
-
return ar;
|
|
17
|
-
};
|
|
18
|
-
var __values = (this && this.__values) || function(o) {
|
|
19
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
20
|
-
if (m) return m.call(o);
|
|
21
|
-
if (o && typeof o.length === "number") return {
|
|
22
|
-
next: function () {
|
|
23
|
-
if (o && i >= o.length) o = void 0;
|
|
24
|
-
return { value: o && o[i++], done: !o };
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
28
|
-
};
|
|
29
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.getServiceSnapshot = exports.partition = void 0;
|
|
31
|
-
function partition(items, predicate) {
|
|
32
|
-
var e_1, _a;
|
|
33
|
-
var _b = __read([[], []], 2), truthy = _b[0], falsy = _b[1];
|
|
34
|
-
try {
|
|
35
|
-
for (var items_1 = __values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {
|
|
36
|
-
var item = items_1_1.value;
|
|
37
|
-
if (predicate(item)) {
|
|
38
|
-
truthy.push(item);
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
falsy.push(item);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
46
|
-
finally {
|
|
47
|
-
try {
|
|
48
|
-
if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1);
|
|
49
|
-
}
|
|
50
|
-
finally { if (e_1) throw e_1.error; }
|
|
51
|
-
}
|
|
52
|
-
return [truthy, falsy];
|
|
53
|
-
}
|
|
54
|
-
exports.partition = partition;
|
|
55
|
-
function getServiceSnapshot(service) {
|
|
56
|
-
return service.status !== 0 ? service.state : service.machine.initialState;
|
|
57
|
-
}
|
|
58
|
-
exports.getServiceSnapshot = getServiceSnapshot;
|