@xstate/react 4.0.0-beta.3 → 4.0.0-beta.4
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/declarations/src/createActorContext.d.ts +6 -6
- package/dist/declarations/src/index.d.ts +2 -3
- package/dist/declarations/src/useActor.d.ts +6 -3
- package/dist/declarations/src/useActorRef.d.ts +14 -0
- package/dist/declarations/src/useMachine.d.ts +9 -9
- package/dist/{useConstant-ff65b597.cjs.dev.js → useConstant-23e96eea.cjs.dev.js} +21 -1
- package/dist/useConstant-720f1662.cjs.prod.js +35 -0
- package/dist/{useConstant-0013a606.esm.js → useConstant-9bbaf12a.esm.js} +2 -2
- package/dist/xstate-react.cjs.d.mts +2 -0
- package/dist/xstate-react.cjs.d.mts.map +1 -0
- package/dist/xstate-react.cjs.d.ts +1 -0
- package/dist/xstate-react.cjs.d.ts.map +1 -0
- package/dist/xstate-react.cjs.dev.js +66 -188
- package/dist/xstate-react.cjs.mjs +8 -0
- package/dist/xstate-react.cjs.prod.js +59 -186
- package/dist/xstate-react.esm.js +53 -192
- package/fsm/dist/xstate-react-fsm.cjs.d.mts +2 -0
- package/fsm/dist/xstate-react-fsm.cjs.d.mts.map +1 -0
- package/fsm/dist/xstate-react-fsm.cjs.d.ts +1 -0
- package/fsm/dist/xstate-react-fsm.cjs.d.ts.map +1 -0
- package/fsm/dist/xstate-react-fsm.cjs.dev.js +2 -2
- package/fsm/dist/xstate-react-fsm.cjs.mjs +4 -0
- package/fsm/dist/xstate-react-fsm.cjs.prod.js +2 -2
- package/fsm/dist/xstate-react-fsm.esm.js +1 -1
- package/package.json +6 -4
- package/dist/declarations/src/types.d.ts +0 -15
- package/dist/declarations/src/useInterpret.d.ts +0 -12
- package/dist/declarations/src/useSpawn.d.ts +0 -9
- package/dist/useConstant-c09b427a.cjs.prod.js +0 -15
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { ActorRefFrom, AnyStateMachine,
|
|
2
|
+
import { ActorRefFrom, AnyStateMachine, SnapshotFrom, InterpreterOptions, Observer, StateFrom, AreAllImplementationsAssumedToBeProvided, MarkAllImplementationsAsProvided, StateMachine } from 'xstate';
|
|
3
|
+
type ToMachinesWithProvidedImplementations<TMachine extends AnyStateMachine> = TMachine extends StateMachine<infer TContext, infer TEvent, infer TAction, infer TActorMap, infer TResolvedTypesMeta> ? StateMachine<TContext, TEvent, TAction, TActorMap, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta> : never;
|
|
3
4
|
export declare function createActorContext<TMachine extends AnyStateMachine>(machine: TMachine, interpreterOptions?: InterpreterOptions<TMachine>, observerOrListener?: Observer<StateFrom<TMachine>> | ((value: StateFrom<TMachine>) => void)): {
|
|
4
|
-
useActor: () => [StateFrom<TMachine>, ActorRefFrom<TMachine>['send']];
|
|
5
5
|
useSelector: <T>(selector: (snapshot: SnapshotFrom<TMachine>) => T, compare?: (a: T, b: T) => boolean) => T;
|
|
6
6
|
useActorRef: () => ActorRefFrom<TMachine>;
|
|
7
7
|
Provider: (props: {
|
|
8
8
|
children: React.ReactNode;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
options: InternalMachineImplementations<TMachine['__TContext'], TMachine['__TEvent'], TMachine['__TResolvedTypesMeta'], true>;
|
|
9
|
+
} & (AreAllImplementationsAssumedToBeProvided<TMachine['__TResolvedTypesMeta']> extends true ? {
|
|
10
|
+
machine?: TMachine;
|
|
12
11
|
} : {
|
|
13
|
-
|
|
12
|
+
machine: ToMachinesWithProvidedImplementations<TMachine>;
|
|
14
13
|
})) => React.ReactElement<any, any>;
|
|
15
14
|
};
|
|
15
|
+
export {};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
export { useMachine } from './useMachine.ts';
|
|
2
1
|
export { useActor } from './useActor.ts';
|
|
3
|
-
export {
|
|
2
|
+
export { useActorRef } from './useActorRef.ts';
|
|
4
3
|
export { useSelector } from './useSelector.ts';
|
|
5
|
-
export { useSpawn } from './useSpawn.ts';
|
|
6
4
|
export { shallowEqual } from './shallowEqual.ts';
|
|
7
5
|
export { createActorContext } from './createActorContext.ts';
|
|
6
|
+
export { useMachine } from './useMachine.ts';
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function useActor<
|
|
3
|
-
|
|
1
|
+
import { ActorRefFrom, AnyActorBehavior, InterpreterOptions, SnapshotFrom } from 'xstate';
|
|
2
|
+
export declare function useActor<TBehavior extends AnyActorBehavior>(behavior: TBehavior, options?: InterpreterOptions<TBehavior>): [
|
|
3
|
+
SnapshotFrom<TBehavior>,
|
|
4
|
+
ActorRefFrom<TBehavior>['send'],
|
|
5
|
+
ActorRefFrom<TBehavior>
|
|
6
|
+
];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AnyActorBehavior, AnyInterpreter, AnyStateMachine, AreAllImplementationsAssumedToBeProvided, InternalMachineImplementations, ActorRefFrom, InterpreterOptions, Observer, StateFrom, SnapshotFrom } from 'xstate';
|
|
2
|
+
export declare function useIdleInterpreter(machine: AnyActorBehavior, options: Partial<InterpreterOptions<AnyActorBehavior>>): AnyInterpreter;
|
|
3
|
+
type RestParams<TBehavior extends AnyActorBehavior> = TBehavior extends AnyStateMachine ? AreAllImplementationsAssumedToBeProvided<TBehavior['__TResolvedTypesMeta']> extends false ? [
|
|
4
|
+
options: InterpreterOptions<TBehavior> & InternalMachineImplementations<TBehavior['__TContext'], TBehavior['__TEvent'], TBehavior['__TResolvedTypesMeta'], true>,
|
|
5
|
+
observerOrListener?: Observer<StateFrom<TBehavior>> | ((value: StateFrom<TBehavior>) => void)
|
|
6
|
+
] : [
|
|
7
|
+
options?: InterpreterOptions<TBehavior> & InternalMachineImplementations<TBehavior['__TContext'], TBehavior['__TEvent'], TBehavior['__TResolvedTypesMeta']>,
|
|
8
|
+
observerOrListener?: Observer<StateFrom<TBehavior>> | ((value: StateFrom<TBehavior>) => void)
|
|
9
|
+
] : [
|
|
10
|
+
options?: InterpreterOptions<TBehavior>,
|
|
11
|
+
observerOrListener?: Observer<SnapshotFrom<TBehavior>> | ((value: SnapshotFrom<TBehavior>) => void)
|
|
12
|
+
];
|
|
13
|
+
export declare function useActorRef<TBehavior extends AnyActorBehavior>(machine: TBehavior, ...[options, observerOrListener]: RestParams<TBehavior>): ActorRefFrom<TBehavior>;
|
|
14
|
+
export {};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { AnyStateMachine, AreAllImplementationsAssumedToBeProvided,
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { ActorRefFrom, AnyStateMachine, AreAllImplementationsAssumedToBeProvided, InterpreterOptions, MissingImplementationsError, StateFrom } from 'xstate';
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
* @deprecated Use `useActor(...)` instead.
|
|
5
|
+
*/
|
|
6
|
+
export declare function useMachine<TMachine extends AnyStateMachine>(machine: AreAllImplementationsAssumedToBeProvided<TMachine['__TResolvedTypesMeta']> extends true ? TMachine : MissingImplementationsError<TMachine['__TResolvedTypesMeta']>, options?: InterpreterOptions<TMachine>): [
|
|
7
|
+
StateFrom<TMachine>,
|
|
8
|
+
ActorRefFrom<TMachine>['send'],
|
|
9
|
+
ActorRefFrom<TMachine>
|
|
7
10
|
];
|
|
8
|
-
type UseMachineReturn<TMachine extends AnyStateMachine, TInterpreter = InterpreterFrom<TMachine>> = [StateFrom<TMachine>, Prop<TInterpreter, 'send'>, TInterpreter];
|
|
9
|
-
export declare function useMachine<TMachine extends AnyStateMachine>(getMachine: MaybeLazy<TMachine>, ...[options]: RestParams<TMachine>): UseMachineReturn<TMachine>;
|
|
10
|
-
export {};
|
|
@@ -2,6 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
|
|
5
|
+
function _interopNamespace(e) {
|
|
6
|
+
if (e && e.__esModule) return e;
|
|
7
|
+
var n = Object.create(null);
|
|
8
|
+
if (e) {
|
|
9
|
+
Object.keys(e).forEach(function (k) {
|
|
10
|
+
if (k !== 'default') {
|
|
11
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
12
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () { return e[k]; }
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
n["default"] = e;
|
|
20
|
+
return Object.freeze(n);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
24
|
+
|
|
5
25
|
function _arrayWithHoles(arr) {
|
|
6
26
|
if (Array.isArray(arr)) return arr;
|
|
7
27
|
}
|
|
@@ -58,7 +78,7 @@ function _slicedToArray(arr, i) {
|
|
|
58
78
|
}
|
|
59
79
|
|
|
60
80
|
function useConstant(fn) {
|
|
61
|
-
var ref =
|
|
81
|
+
var ref = React__namespace.useRef();
|
|
62
82
|
if (!ref.current) {
|
|
63
83
|
ref.current = {
|
|
64
84
|
v: fn()
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
|
|
5
|
+
function _interopNamespace(e) {
|
|
6
|
+
if (e && e.__esModule) return e;
|
|
7
|
+
var n = Object.create(null);
|
|
8
|
+
if (e) {
|
|
9
|
+
Object.keys(e).forEach(function (k) {
|
|
10
|
+
if (k !== 'default') {
|
|
11
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
12
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () { return e[k]; }
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
n["default"] = e;
|
|
20
|
+
return Object.freeze(n);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
24
|
+
|
|
25
|
+
function useConstant(fn) {
|
|
26
|
+
var ref = React__namespace.useRef();
|
|
27
|
+
if (!ref.current) {
|
|
28
|
+
ref.current = {
|
|
29
|
+
v: fn()
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return ref.current.v;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
exports.useConstant = useConstant;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from 'react';
|
|
2
2
|
|
|
3
3
|
function _arrayWithHoles(arr) {
|
|
4
4
|
if (Array.isArray(arr)) return arr;
|
|
@@ -56,7 +56,7 @@ function _slicedToArray(arr, i) {
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
function useConstant(fn) {
|
|
59
|
-
var ref = useRef();
|
|
59
|
+
var ref = React.useRef();
|
|
60
60
|
if (!ref.current) {
|
|
61
61
|
ref.current = {
|
|
62
62
|
v: fn()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xstate-react.cjs.d.mts","sourceRoot":"","sources":["./declarations/src/index.d.ts"],"names":[],"mappings":"AAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xstate-react.cjs.d.ts","sourceRoot":"","sources":["./declarations/src/index.d.ts"],"names":[],"mappings":"AAAA"}
|
|
@@ -2,94 +2,63 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var useConstant = require('./useConstant-ff65b597.cjs.dev.js');
|
|
6
5
|
var React = require('react');
|
|
7
|
-
var useIsomorphicLayoutEffect = require('use-isomorphic-layout-effect');
|
|
8
6
|
var withSelector = require('use-sync-external-store/shim/with-selector');
|
|
9
7
|
var xstate = require('xstate');
|
|
10
|
-
var
|
|
8
|
+
var useConstant = require('./useConstant-23e96eea.cjs.dev.js');
|
|
9
|
+
var useIsomorphicLayoutEffect = require('use-isomorphic-layout-effect');
|
|
10
|
+
var actors = require('xstate/actors');
|
|
11
11
|
|
|
12
12
|
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
if (
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
14
|
+
function _interopNamespace(e) {
|
|
15
|
+
if (e && e.__esModule) return e;
|
|
16
|
+
var n = Object.create(null);
|
|
17
|
+
if (e) {
|
|
18
|
+
Object.keys(e).forEach(function (k) {
|
|
19
|
+
if (k !== 'default') {
|
|
20
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
21
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () { return e[k]; }
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
});
|
|
25
27
|
}
|
|
26
|
-
|
|
28
|
+
n["default"] = e;
|
|
29
|
+
return Object.freeze(n);
|
|
27
30
|
}
|
|
28
31
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
var target = _objectWithoutPropertiesLoose(source, excluded);
|
|
32
|
-
var key, i;
|
|
33
|
-
if (Object.getOwnPropertySymbols) {
|
|
34
|
-
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
|
35
|
-
for (i = 0; i < sourceSymbolKeys.length; i++) {
|
|
36
|
-
key = sourceSymbolKeys[i];
|
|
37
|
-
if (excluded.indexOf(key) >= 0) continue;
|
|
38
|
-
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
|
39
|
-
target[key] = source[key];
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return target;
|
|
43
|
-
}
|
|
32
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
33
|
+
var useIsomorphicLayoutEffect__default = /*#__PURE__*/_interopDefault(useIsomorphicLayoutEffect);
|
|
44
34
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
var machine = useConstant.useConstant(function () {
|
|
48
|
-
return typeof getMachine === 'function' ? getMachine() : getMachine;
|
|
49
|
-
});
|
|
50
|
-
if (process.env.NODE_ENV !== 'production' && typeof getMachine !== 'function') {
|
|
35
|
+
function useIdleInterpreter(machine, options) {
|
|
36
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
51
37
|
var _useState = React.useState(machine),
|
|
52
38
|
_useState2 = useConstant._slicedToArray(_useState, 1),
|
|
53
39
|
initialMachine = _useState2[0];
|
|
54
|
-
if (
|
|
55
|
-
console.warn(
|
|
40
|
+
if (machine.config !== initialMachine.config) {
|
|
41
|
+
console.warn("Actor logic has changed between renders. This is not supported and may lead to invalid snapshots.");
|
|
56
42
|
}
|
|
57
43
|
}
|
|
58
|
-
var
|
|
59
|
-
|
|
60
|
-
actions = options.actions,
|
|
61
|
-
delays = options.delays,
|
|
62
|
-
interpreterOptions = _objectWithoutProperties(options, _excluded);
|
|
63
|
-
var service = useConstant.useConstant(function () {
|
|
64
|
-
var machineConfig = {
|
|
65
|
-
guards: guards,
|
|
66
|
-
actions: actions,
|
|
67
|
-
actors: actors,
|
|
68
|
-
delays: delays
|
|
69
|
-
};
|
|
70
|
-
var machineWithConfig = machine.provide(machineConfig);
|
|
71
|
-
return xstate.interpret(machineWithConfig, interpreterOptions);
|
|
44
|
+
var actorRef = useConstant.useConstant(function () {
|
|
45
|
+
return xstate.interpret(machine, options);
|
|
72
46
|
});
|
|
73
47
|
|
|
74
|
-
//
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
Object.assign(service.behavior.options.guards, guards);
|
|
80
|
-
Object.assign(service.behavior.options.actors, actors);
|
|
81
|
-
Object.assign(service.behavior.options.delays, delays);
|
|
82
|
-
}, [actions, guards, actors, delays]);
|
|
83
|
-
return service;
|
|
48
|
+
// TODO: consider using `useAsapEffect` that would do this in `useInsertionEffect` is that's available
|
|
49
|
+
useIsomorphicLayoutEffect__default["default"](function () {
|
|
50
|
+
actorRef.behavior.options = machine.options;
|
|
51
|
+
});
|
|
52
|
+
return actorRef;
|
|
84
53
|
}
|
|
85
|
-
function
|
|
54
|
+
function useActorRef(machine) {
|
|
86
55
|
for (var _len = arguments.length, _ref = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
87
56
|
_ref[_key - 1] = arguments[_key];
|
|
88
57
|
}
|
|
89
58
|
var _ref$ = _ref[0],
|
|
90
59
|
options = _ref$ === void 0 ? {} : _ref$,
|
|
91
60
|
observerOrListener = _ref[1];
|
|
92
|
-
var service = useIdleInterpreter(
|
|
61
|
+
var service = useIdleInterpreter(machine, options);
|
|
93
62
|
React.useEffect(function () {
|
|
94
63
|
if (!observerOrListener) {
|
|
95
64
|
return;
|
|
@@ -116,49 +85,32 @@ function identity(a) {
|
|
|
116
85
|
var isEqual = function isEqual(prevState, nextState) {
|
|
117
86
|
return prevState === nextState || nextState.changed === false;
|
|
118
87
|
};
|
|
119
|
-
function
|
|
120
|
-
|
|
121
|
-
|
|
88
|
+
function useActor(behavior) {
|
|
89
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
90
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
91
|
+
if (actors.isActorRef(behavior)) {
|
|
92
|
+
throw new Error("useActor() expects actor logic (e.g. a machine), but received an ActorRef. Use the useSelector(actorRef, ...) hook instead to read the ActorRef's snapshot.");
|
|
93
|
+
}
|
|
122
94
|
}
|
|
123
|
-
var
|
|
124
|
-
options = _ref$ === void 0 ? {} : _ref$;
|
|
125
|
-
// using `useIdleInterpreter` allows us to subscribe to the service *before* we start it
|
|
126
|
-
// so we don't miss any notifications
|
|
127
|
-
var service = useIdleInterpreter(getMachine, options);
|
|
95
|
+
var actorRef = useIdleInterpreter(behavior, options);
|
|
128
96
|
var getSnapshot = React.useCallback(function () {
|
|
129
|
-
return
|
|
130
|
-
}, [
|
|
131
|
-
var subscribe = React.useCallback(function (handleStoreChange) {
|
|
132
|
-
var _service$subscribe = service.subscribe(handleStoreChange),
|
|
133
|
-
unsubscribe = _service$subscribe.unsubscribe;
|
|
134
|
-
return unsubscribe;
|
|
135
|
-
}, [service]);
|
|
136
|
-
var storeSnapshot = withSelector.useSyncExternalStoreWithSelector(subscribe, getSnapshot, getSnapshot, identity, isEqual);
|
|
137
|
-
React.useEffect(function () {
|
|
138
|
-
service.start();
|
|
139
|
-
return function () {
|
|
140
|
-
service.stop();
|
|
141
|
-
service.status = xstate.InterpreterStatus.NotStarted;
|
|
142
|
-
service._initState();
|
|
143
|
-
};
|
|
144
|
-
}, []);
|
|
145
|
-
return [storeSnapshot, service.send, service];
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
function useActor(actorRef) {
|
|
97
|
+
return actorRef.getSnapshot();
|
|
98
|
+
}, [actorRef]);
|
|
149
99
|
var subscribe = React.useCallback(function (handleStoreChange) {
|
|
150
100
|
var _actorRef$subscribe = actorRef.subscribe(handleStoreChange),
|
|
151
101
|
unsubscribe = _actorRef$subscribe.unsubscribe;
|
|
152
102
|
return unsubscribe;
|
|
153
103
|
}, [actorRef]);
|
|
154
|
-
var
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
104
|
+
var actorSnapshot = withSelector.useSyncExternalStoreWithSelector(subscribe, getSnapshot, getSnapshot, identity, isEqual);
|
|
105
|
+
React.useEffect(function () {
|
|
106
|
+
actorRef.start();
|
|
107
|
+
return function () {
|
|
108
|
+
actorRef.stop();
|
|
109
|
+
actorRef.status = xstate.InterpreterStatus.NotStarted;
|
|
110
|
+
actorRef._initState();
|
|
111
|
+
};
|
|
160
112
|
}, [actorRef]);
|
|
161
|
-
return [
|
|
113
|
+
return [actorSnapshot, actorRef.send, actorRef];
|
|
162
114
|
}
|
|
163
115
|
|
|
164
116
|
function defaultCompare(a, b) {
|
|
@@ -178,29 +130,6 @@ function useSelector(actor, selector) {
|
|
|
178
130
|
return selectedSnapshot;
|
|
179
131
|
}
|
|
180
132
|
|
|
181
|
-
/**
|
|
182
|
-
* React hook that spawns an `ActorRef` with the specified `behavior`.
|
|
183
|
-
* The returned `ActorRef` can be used with the `useActor(actorRef)` hook.
|
|
184
|
-
*
|
|
185
|
-
* @param behavior The actor behavior to spawn
|
|
186
|
-
* @returns An ActorRef with the specified `behavior`
|
|
187
|
-
*/
|
|
188
|
-
function useSpawn(behavior) {
|
|
189
|
-
var actorRef = useConstant.useConstant(function () {
|
|
190
|
-
// TODO: figure out what to do about the name argument
|
|
191
|
-
return xstate.interpret(behavior);
|
|
192
|
-
});
|
|
193
|
-
React.useEffect(function () {
|
|
194
|
-
var _actorRef$start;
|
|
195
|
-
(_actorRef$start = actorRef.start) === null || _actorRef$start === void 0 ? void 0 : _actorRef$start.call(actorRef);
|
|
196
|
-
return function () {
|
|
197
|
-
var _stop, _ref;
|
|
198
|
-
(_stop = (_ref = actorRef).stop) === null || _stop === void 0 ? void 0 : _stop.call(_ref);
|
|
199
|
-
};
|
|
200
|
-
}, []);
|
|
201
|
-
return actorRef;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
133
|
function _typeof(obj) {
|
|
205
134
|
"@babel/helpers - typeof";
|
|
206
135
|
|
|
@@ -235,85 +164,27 @@ function shallowEqual(objA, objB) {
|
|
|
235
164
|
return true;
|
|
236
165
|
}
|
|
237
166
|
|
|
238
|
-
function _toPrimitive(input, hint) {
|
|
239
|
-
if (typeof input !== "object" || input === null) return input;
|
|
240
|
-
var prim = input[Symbol.toPrimitive];
|
|
241
|
-
if (prim !== undefined) {
|
|
242
|
-
var res = prim.call(input, hint || "default");
|
|
243
|
-
if (typeof res !== "object") return res;
|
|
244
|
-
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
245
|
-
}
|
|
246
|
-
return (hint === "string" ? String : Number)(input);
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
function _toPropertyKey(arg) {
|
|
250
|
-
var key = _toPrimitive(arg, "string");
|
|
251
|
-
return typeof key === "symbol" ? key : String(key);
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
function _defineProperty(obj, key, value) {
|
|
255
|
-
key = _toPropertyKey(key);
|
|
256
|
-
if (key in obj) {
|
|
257
|
-
Object.defineProperty(obj, key, {
|
|
258
|
-
value: value,
|
|
259
|
-
enumerable: true,
|
|
260
|
-
configurable: true,
|
|
261
|
-
writable: true
|
|
262
|
-
});
|
|
263
|
-
} else {
|
|
264
|
-
obj[key] = value;
|
|
265
|
-
}
|
|
266
|
-
return obj;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
function ownKeys(object, enumerableOnly) {
|
|
270
|
-
var keys = Object.keys(object);
|
|
271
|
-
if (Object.getOwnPropertySymbols) {
|
|
272
|
-
var symbols = Object.getOwnPropertySymbols(object);
|
|
273
|
-
enumerableOnly && (symbols = symbols.filter(function (sym) {
|
|
274
|
-
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
275
|
-
})), keys.push.apply(keys, symbols);
|
|
276
|
-
}
|
|
277
|
-
return keys;
|
|
278
|
-
}
|
|
279
|
-
function _objectSpread2(target) {
|
|
280
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
281
|
-
var source = null != arguments[i] ? arguments[i] : {};
|
|
282
|
-
i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
|
|
283
|
-
_defineProperty(target, key, source[key]);
|
|
284
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
|
|
285
|
-
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
286
|
-
});
|
|
287
|
-
}
|
|
288
|
-
return target;
|
|
289
|
-
}
|
|
290
|
-
|
|
291
167
|
function createActorContext(machine, interpreterOptions, observerOrListener) {
|
|
292
|
-
var ReactContext = /*#__PURE__*/
|
|
168
|
+
var ReactContext = /*#__PURE__*/React__namespace.createContext(null);
|
|
293
169
|
var OriginalProvider = ReactContext.Provider;
|
|
294
170
|
function Provider(_ref) {
|
|
295
171
|
var children = _ref.children,
|
|
296
172
|
_ref$machine = _ref.machine,
|
|
297
|
-
providedMachine = _ref$machine === void 0 ? machine : _ref$machine
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
return /*#__PURE__*/React.createElement(OriginalProvider, {
|
|
173
|
+
providedMachine = _ref$machine === void 0 ? machine : _ref$machine;
|
|
174
|
+
var actor = useActorRef(providedMachine, interpreterOptions, observerOrListener);
|
|
175
|
+
return /*#__PURE__*/React__namespace.createElement(OriginalProvider, {
|
|
301
176
|
value: actor,
|
|
302
177
|
children: children
|
|
303
178
|
});
|
|
304
179
|
}
|
|
305
180
|
Provider.displayName = "ActorProvider(".concat(machine.id, ")");
|
|
306
181
|
function useContext() {
|
|
307
|
-
var actor =
|
|
182
|
+
var actor = React__namespace.useContext(ReactContext);
|
|
308
183
|
if (!actor) {
|
|
309
184
|
throw new Error("You used a hook from \"".concat(Provider.displayName, "\" but it's not inside a <").concat(Provider.displayName, "> component."));
|
|
310
185
|
}
|
|
311
186
|
return actor;
|
|
312
187
|
}
|
|
313
|
-
function useActor$1() {
|
|
314
|
-
var actor = useContext();
|
|
315
|
-
return useActor(actor);
|
|
316
|
-
}
|
|
317
188
|
function useSelector$1(selector, compare) {
|
|
318
189
|
var actor = useContext();
|
|
319
190
|
return useSelector(actor, selector, compare);
|
|
@@ -321,15 +192,22 @@ function createActorContext(machine, interpreterOptions, observerOrListener) {
|
|
|
321
192
|
return {
|
|
322
193
|
Provider: Provider,
|
|
323
194
|
useActorRef: useContext,
|
|
324
|
-
useActor: useActor$1,
|
|
325
195
|
useSelector: useSelector$1
|
|
326
196
|
};
|
|
327
197
|
}
|
|
328
198
|
|
|
199
|
+
/**
|
|
200
|
+
*
|
|
201
|
+
* @deprecated Use `useActor(...)` instead.
|
|
202
|
+
*/
|
|
203
|
+
function useMachine(machine) {
|
|
204
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
205
|
+
return useActor(machine, options);
|
|
206
|
+
}
|
|
207
|
+
|
|
329
208
|
exports.createActorContext = createActorContext;
|
|
330
209
|
exports.shallowEqual = shallowEqual;
|
|
331
210
|
exports.useActor = useActor;
|
|
332
|
-
exports.
|
|
211
|
+
exports.useActorRef = useActorRef;
|
|
333
212
|
exports.useMachine = useMachine;
|
|
334
213
|
exports.useSelector = useSelector;
|
|
335
|
-
exports.useSpawn = useSpawn;
|