@xstate/react 3.0.1 → 4.0.0-alpha.1
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/{lib → dist/declarations/src}/fsm.d.ts +0 -1
- package/{es/index.js → dist/declarations/src/index.d.ts} +1 -1
- package/dist/declarations/src/shallowEqual.d.ts +1 -0
- package/{es → dist/declarations/src}/types.d.ts +2 -3
- package/dist/declarations/src/useActor.d.ts +3 -0
- package/{es → dist/declarations/src}/useConstant.d.ts +0 -1
- package/{es → dist/declarations/src}/useInterpret.d.ts +4 -5
- package/{es → dist/declarations/src}/useMachine.d.ts +4 -5
- package/dist/declarations/src/useSelector.d.ts +2 -0
- package/{es → dist/declarations/src}/useSpawn.d.ts +0 -1
- 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 +291 -0
- package/dist/xstate-react.cjs.js +7 -0
- package/dist/xstate-react.cjs.prod.js +281 -0
- package/dist/xstate-react.esm.js +278 -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 +27 -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 -7
- 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 -36
- package/es/useSpawn.js +0 -15
- package/es/utils.d.ts +0 -5
- package/es/utils.js +0 -83
- package/lib/fsm.js +0 -87
- package/lib/index.d.ts +0 -7
- package/lib/index.js +0 -15
- 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 -40
- package/lib/useSpawn.d.ts +0 -10
- package/lib/useSpawn.js +0 -19
- package/lib/utils.d.ts +0 -5
- package/lib/utils.js +0 -89
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var fsm = require('@xstate/fsm');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var useIsomorphicLayoutEffect = require('use-isomorphic-layout-effect');
|
|
8
|
+
var withSelector = require('use-sync-external-store/shim/with-selector');
|
|
9
|
+
var useConstant = require('../../dist/useConstant-eeb49d3f.cjs.prod.js');
|
|
10
|
+
|
|
11
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
|
|
12
|
+
|
|
13
|
+
var useIsomorphicLayoutEffect__default = /*#__PURE__*/_interopDefault(useIsomorphicLayoutEffect);
|
|
14
|
+
|
|
15
|
+
function _arrayWithHoles(arr) {
|
|
16
|
+
if (Array.isArray(arr)) return arr;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function _iterableToArrayLimit(arr, i) {
|
|
20
|
+
if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
|
|
21
|
+
var _arr = [];
|
|
22
|
+
var _n = true;
|
|
23
|
+
var _d = false;
|
|
24
|
+
var _e = undefined;
|
|
25
|
+
|
|
26
|
+
try {
|
|
27
|
+
for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
|
|
28
|
+
_arr.push(_s.value);
|
|
29
|
+
|
|
30
|
+
if (i && _arr.length === i) break;
|
|
31
|
+
}
|
|
32
|
+
} catch (err) {
|
|
33
|
+
_d = true;
|
|
34
|
+
_e = err;
|
|
35
|
+
} finally {
|
|
36
|
+
try {
|
|
37
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
38
|
+
} finally {
|
|
39
|
+
if (_d) throw _e;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return _arr;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function _arrayLikeToArray(arr, len) {
|
|
47
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
48
|
+
|
|
49
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
50
|
+
|
|
51
|
+
return arr2;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
55
|
+
if (!o) return;
|
|
56
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
57
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
58
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
59
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
60
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function _nonIterableRest() {
|
|
64
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function _slicedToArray(arr, i) {
|
|
68
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function identity(a) {
|
|
72
|
+
return a;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
var getServiceState = function getServiceState(service) {
|
|
76
|
+
var currentValue;
|
|
77
|
+
service.subscribe(function (state) {
|
|
78
|
+
currentValue = state;
|
|
79
|
+
}).unsubscribe();
|
|
80
|
+
return currentValue;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
function useMachine(stateMachine, options) {
|
|
84
|
+
var persistedStateRef = React.useRef();
|
|
85
|
+
|
|
86
|
+
var _useConstant = useConstant.useConstant(function () {
|
|
87
|
+
var queue = [];
|
|
88
|
+
var service = fsm.interpret(fsm.createMachine(stateMachine.config, options ? options : stateMachine._options));
|
|
89
|
+
var send = service.send;
|
|
90
|
+
|
|
91
|
+
service.send = function (event) {
|
|
92
|
+
if (service.status === fsm.InterpreterStatus.NotStarted) {
|
|
93
|
+
queue.push(event);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
send(event);
|
|
98
|
+
persistedStateRef.current = service.state;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
return [service, queue];
|
|
102
|
+
}),
|
|
103
|
+
_useConstant2 = _slicedToArray(_useConstant, 2),
|
|
104
|
+
service = _useConstant2[0],
|
|
105
|
+
queue = _useConstant2[1]; // TODO: consider using `useInsertionEffect` if available
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
useIsomorphicLayoutEffect__default['default'](function () {
|
|
109
|
+
if (options) {
|
|
110
|
+
service._machine._options = options;
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
var useServiceResult = useService(service);
|
|
114
|
+
React.useEffect(function () {
|
|
115
|
+
service.start(persistedStateRef.current);
|
|
116
|
+
queue.forEach(service.send);
|
|
117
|
+
persistedStateRef.current = service.state;
|
|
118
|
+
return function () {
|
|
119
|
+
service.stop();
|
|
120
|
+
};
|
|
121
|
+
}, []);
|
|
122
|
+
return useServiceResult;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
var isEqual = function isEqual(_prevState, nextState) {
|
|
126
|
+
return nextState.changed === false;
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
function useService(service) {
|
|
130
|
+
var getSnapshot = React.useCallback(function () {
|
|
131
|
+
return getServiceState(service);
|
|
132
|
+
}, [service]);
|
|
133
|
+
var subscribe = React.useCallback(function (handleStoreChange) {
|
|
134
|
+
var _service$subscribe = service.subscribe(handleStoreChange),
|
|
135
|
+
unsubscribe = _service$subscribe.unsubscribe;
|
|
136
|
+
|
|
137
|
+
return unsubscribe;
|
|
138
|
+
}, [service]);
|
|
139
|
+
var storeSnapshot = withSelector.useSyncExternalStoreWithSelector(subscribe, getSnapshot, getSnapshot, identity, isEqual);
|
|
140
|
+
return [storeSnapshot, service.send, service];
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
exports.useMachine = useMachine;
|
|
144
|
+
exports.useService = useService;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { _ as _slicedToArray, u as useConstant } from '../../dist/useConstant-94bfdbb5.esm.js';
|
|
2
|
+
import { interpret, createMachine, InterpreterStatus } from '@xstate/fsm';
|
|
3
|
+
import { useRef, useState, useEffect, useCallback } from 'react';
|
|
4
|
+
import useIsomorphicLayoutEffect from 'use-isomorphic-layout-effect';
|
|
5
|
+
import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';
|
|
6
|
+
|
|
7
|
+
function identity(a) {
|
|
8
|
+
return a;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
var getServiceState = function getServiceState(service) {
|
|
12
|
+
var currentValue;
|
|
13
|
+
service.subscribe(function (state) {
|
|
14
|
+
currentValue = state;
|
|
15
|
+
}).unsubscribe();
|
|
16
|
+
return currentValue;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
function useMachine(stateMachine, options) {
|
|
20
|
+
var persistedStateRef = useRef();
|
|
21
|
+
|
|
22
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
23
|
+
var _useState = useState(stateMachine),
|
|
24
|
+
_useState2 = _slicedToArray(_useState, 1),
|
|
25
|
+
initialMachine = _useState2[0];
|
|
26
|
+
|
|
27
|
+
if (stateMachine !== initialMachine) {
|
|
28
|
+
console.warn('Machine given to `useMachine` has changed between renders. This is not supported and might lead to unexpected results.\n' + 'Please make sure that you pass the same Machine as argument each time.');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
var _useConstant = useConstant(function () {
|
|
33
|
+
var queue = [];
|
|
34
|
+
var service = interpret(createMachine(stateMachine.config, options ? options : stateMachine._options));
|
|
35
|
+
var send = service.send;
|
|
36
|
+
|
|
37
|
+
service.send = function (event) {
|
|
38
|
+
if (service.status === InterpreterStatus.NotStarted) {
|
|
39
|
+
queue.push(event);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
send(event);
|
|
44
|
+
persistedStateRef.current = service.state;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
return [service, queue];
|
|
48
|
+
}),
|
|
49
|
+
_useConstant2 = _slicedToArray(_useConstant, 2),
|
|
50
|
+
service = _useConstant2[0],
|
|
51
|
+
queue = _useConstant2[1]; // TODO: consider using `useInsertionEffect` if available
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
useIsomorphicLayoutEffect(function () {
|
|
55
|
+
if (options) {
|
|
56
|
+
service._machine._options = options;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
var useServiceResult = useService(service);
|
|
60
|
+
useEffect(function () {
|
|
61
|
+
service.start(persistedStateRef.current);
|
|
62
|
+
queue.forEach(service.send);
|
|
63
|
+
persistedStateRef.current = service.state;
|
|
64
|
+
return function () {
|
|
65
|
+
service.stop();
|
|
66
|
+
};
|
|
67
|
+
}, []);
|
|
68
|
+
return useServiceResult;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
var isEqual = function isEqual(_prevState, nextState) {
|
|
72
|
+
return nextState.changed === false;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
function useService(service) {
|
|
76
|
+
var getSnapshot = useCallback(function () {
|
|
77
|
+
return getServiceState(service);
|
|
78
|
+
}, [service]);
|
|
79
|
+
var subscribe = useCallback(function (handleStoreChange) {
|
|
80
|
+
var _service$subscribe = service.subscribe(handleStoreChange),
|
|
81
|
+
unsubscribe = _service$subscribe.unsubscribe;
|
|
82
|
+
|
|
83
|
+
return unsubscribe;
|
|
84
|
+
}, [service]);
|
|
85
|
+
var storeSnapshot = useSyncExternalStoreWithSelector(subscribe, getSnapshot, getSnapshot, identity, isEqual);
|
|
86
|
+
return [storeSnapshot, service.send, service];
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export { useMachine, useService };
|
package/fsm/package.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xstate/react",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0-alpha.1",
|
|
4
4
|
"description": "XState tools for React",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"state",
|
|
@@ -15,46 +15,37 @@
|
|
|
15
15
|
"author": "David Khourshid <davidkpiano@gmail.com>",
|
|
16
16
|
"homepage": "https://github.com/statelyai/xstate/tree/main/packages/xstate-react#readme",
|
|
17
17
|
"license": "MIT",
|
|
18
|
-
"main": "
|
|
19
|
-
"module": "
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
18
|
+
"main": "dist/xstate-react.cjs.js",
|
|
19
|
+
"module": "dist/xstate-react.esm.js",
|
|
20
|
+
"exports": {
|
|
21
|
+
"./fsm": {
|
|
22
|
+
"module": "./fsm/dist/xstate-react-fsm.esm.js",
|
|
23
|
+
"default": "./fsm/dist/xstate-react-fsm.cjs.js"
|
|
24
|
+
},
|
|
25
|
+
".": {
|
|
26
|
+
"module": "./dist/xstate-react.esm.js",
|
|
27
|
+
"default": "./dist/xstate-react.cjs.js"
|
|
28
|
+
},
|
|
29
|
+
"./package.json": "./package.json"
|
|
27
30
|
},
|
|
31
|
+
"types": "dist/xstate-react.cjs.d.ts",
|
|
28
32
|
"sideEffects": false,
|
|
29
|
-
"directories": {
|
|
30
|
-
"lib": "lib",
|
|
31
|
-
"test": "test"
|
|
32
|
-
},
|
|
33
33
|
"files": [
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"dist/**/*.js",
|
|
37
|
-
"es/**/*.js",
|
|
38
|
-
"es/**/*.d.ts",
|
|
39
|
-
"fsm/package.json"
|
|
34
|
+
"dist",
|
|
35
|
+
"fsm"
|
|
40
36
|
],
|
|
41
37
|
"repository": {
|
|
42
38
|
"type": "git",
|
|
43
39
|
"url": "git+ssh://git@github.com/statelyai/xstate.git"
|
|
44
40
|
},
|
|
45
|
-
"scripts": {
|
|
46
|
-
"clean": "rm -rf dist lib tsconfig.tsbuildinfo",
|
|
47
|
-
"build": "tsc && tsc --outDir es --module es2015 && rollup -c",
|
|
48
|
-
"test": "jest",
|
|
49
|
-
"prepare": "npm run build"
|
|
50
|
-
},
|
|
41
|
+
"scripts": {},
|
|
51
42
|
"bugs": {
|
|
52
43
|
"url": "https://github.com/statelyai/xstate/issues"
|
|
53
44
|
},
|
|
54
45
|
"peerDependencies": {
|
|
55
|
-
"@xstate/fsm": "^
|
|
46
|
+
"@xstate/fsm": "^3.0.0-alpha.0",
|
|
56
47
|
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
|
|
57
|
-
"xstate": "^
|
|
48
|
+
"xstate": "^5.0.0-alpha.1"
|
|
58
49
|
},
|
|
59
50
|
"peerDependenciesMeta": {
|
|
60
51
|
"@xstate/fsm": {
|
|
@@ -69,26 +60,22 @@
|
|
|
69
60
|
"use-sync-external-store": "^1.0.0"
|
|
70
61
|
},
|
|
71
62
|
"devDependencies": {
|
|
72
|
-
"@rollup/plugin-commonjs": "^17.0.0",
|
|
73
|
-
"@rollup/plugin-node-resolve": "^11.0.1",
|
|
74
63
|
"@testing-library/react": "^13.0.0",
|
|
75
64
|
"@types/jsdom": "^12.2.3",
|
|
76
65
|
"@types/react": "^17.0.43",
|
|
77
66
|
"@types/react-dom": "^17.0.14",
|
|
78
67
|
"@types/use-sync-external-store": "^0.0.3",
|
|
79
|
-
"@xstate/fsm": "
|
|
80
|
-
"jest": "^26.6.3",
|
|
68
|
+
"@xstate/fsm": "3.0.0-alpha.0",
|
|
81
69
|
"jsdom": "^14.0.0",
|
|
82
70
|
"jsdom-global": "^3.0.2",
|
|
83
|
-
"lerna-alias": "3.0.3-0",
|
|
84
71
|
"react": "^18.0.0",
|
|
85
72
|
"react-dom": "^18.0.0",
|
|
86
|
-
"
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
"
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
73
|
+
"xstate": "5.0.0-alpha.1"
|
|
74
|
+
},
|
|
75
|
+
"preconstruct": {
|
|
76
|
+
"entrypoints": [
|
|
77
|
+
"./index.ts",
|
|
78
|
+
"./fsm.ts"
|
|
79
|
+
]
|
|
93
80
|
}
|
|
94
81
|
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@xstate/fsm"),require("react")):"function"==typeof define&&define.amd?define(["exports","@xstate/fsm","react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).XStateReactFSM={},e.XStateFSM,e.React)}(this,(function(e,t,n){"use strict";function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var o=r(n),c=u(n);var a=n.useLayoutEffect;function f(e){var t={exports:{}};return e(t,t.exports),t.exports
|
|
2
|
-
/**
|
|
3
|
-
* @license React
|
|
4
|
-
* use-sync-external-store-shim.production.min.js
|
|
5
|
-
*
|
|
6
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
7
|
-
*
|
|
8
|
-
* This source code is licensed under the MIT license found in the
|
|
9
|
-
* LICENSE file in the root directory of this source tree.
|
|
10
|
-
*/}var i="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},s=o.default.useState,l=o.default.useEffect,d=o.default.useLayoutEffect,v=o.default.useDebugValue;function p(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch(e){return!0}}var b="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=s({inst:{value:n,getSnapshot:t}}),u=r[0].inst,o=r[1];return d((function(){u.value=n,u.getSnapshot=t,p(u)&&o({inst:u})}),[e,n,t]),l((function(){return p(u)&&o({inst:u}),e((function(){p(u)&&o({inst:u})}))}),[e]),v(n),n},y={useSyncExternalStore:void 0!==o.default.useSyncExternalStore?o.default.useSyncExternalStore:b};
|
|
11
|
-
/**
|
|
12
|
-
* @license React
|
|
13
|
-
* use-sync-external-store-shim.development.js
|
|
14
|
-
*
|
|
15
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
16
|
-
*
|
|
17
|
-
* This source code is licensed under the MIT license found in the
|
|
18
|
-
* LICENSE file in the root directory of this source tree.
|
|
19
|
-
*/
|
|
20
|
-
f((function(e,t){}));var S=f((function(e){e.exports=y}));
|
|
21
|
-
/**
|
|
22
|
-
* @license React
|
|
23
|
-
* use-sync-external-store-shim/with-selector.production.min.js
|
|
24
|
-
*
|
|
25
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
26
|
-
*
|
|
27
|
-
* This source code is licensed under the MIT license found in the
|
|
28
|
-
* LICENSE file in the root directory of this source tree.
|
|
29
|
-
*/var h="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},x=S.useSyncExternalStore,E=o.default.useRef,g=o.default.useEffect,j=o.default.useMemo,m=o.default.useDebugValue,O={useSyncExternalStoreWithSelector:function(e,t,n,r,u){var o=E(null);if(null===o.current){var c={hasValue:!1,value:null};o.current=c}else c=o.current;o=j((function(){function e(e){if(!f){if(f=!0,o=e,e=r(e),void 0!==u&&c.hasValue){var t=c.value;if(u(t,e))return a=t}return a=e}if(t=a,h(o,e))return t;var n=r(e);return void 0!==u&&u(t,n)?t:(o=e,a=n)}var o,a,f=!1,i=void 0===n?null:n;return[function(){return e(t())},null===i?void 0:function(){return e(i())}]}),[t,n,r,u]);var a=x(e,o[0],o[1]);return g((function(){c.hasValue=!0,c.value=a}),[a]),m(a),a}};
|
|
30
|
-
/**
|
|
31
|
-
* @license React
|
|
32
|
-
* use-sync-external-store-shim/with-selector.development.js
|
|
33
|
-
*
|
|
34
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
35
|
-
*
|
|
36
|
-
* This source code is licensed under the MIT license found in the
|
|
37
|
-
* LICENSE file in the root directory of this source tree.
|
|
38
|
-
*/
|
|
39
|
-
f((function(e,t){}));var w=f((function(e){e.exports=O}));function M(e){return e}var _=function(e,t){return!1===t.changed};function R(e){var t=n.useCallback((function(){return function(e){var t;return e.subscribe((function(e){t=e})).unsubscribe(),t}(e)}),[e]),r=n.useCallback((function(t){return e.subscribe(t).unsubscribe}),[e]);return[w.useSyncExternalStoreWithSelector(r,t,t,M,_),e.send,e]}e.useMachine=function(e,r){var u,o,f=n.useRef(),i=
|
|
40
|
-
/*! *****************************************************************************
|
|
41
|
-
Copyright (c) Microsoft Corporation.
|
|
42
|
-
|
|
43
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
44
|
-
purpose with or without fee is hereby granted.
|
|
45
|
-
|
|
46
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
47
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
48
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
49
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
50
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
51
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
52
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
53
|
-
***************************************************************************** */
|
|
54
|
-
function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,u,o=n.call(e),c=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)c.push(r.value)}catch(e){u={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(u)throw u.error}}return c}((u=function(){var n=[],u=t.interpret(t.createMachine(e.config,r||e._options)),o=u.send;return u.send=function(e){u.status!==t.InterpreterStatus.NotStarted?(o(e),f.current=u.state):n.push(e)},[u,n]},(o=c.useRef()).current||(o.current={v:u()}),o.current.v),2),s=i[0],l=i[1];a((function(){r&&(s._machine._options=r)}));var d=R(s);return n.useEffect((function(){return s.start(f.current),l.forEach(s.send),f.current=s.state,function(){s.stop()}}),[]),d},e.useService=R,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("react"),require("xstate")):"function"==typeof define&&define.amd?define(["exports","react","xstate"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).XStateReact={},t.React,t.XState)}(this,(function(t,e,n){"use strict";function r(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}function u(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})}})),e.default=t,Object.freeze(e)}var a=r(e),o=u(e),i=function(){return(i=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var u in e=arguments[n])Object.prototype.hasOwnProperty.call(e,u)&&(t[u]=e[u]);return t}).apply(this,arguments)};function c(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,u,a=n.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(t){u={error:t}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(u)throw u.error}}return o}function s(t){var e={exports:{}};return t(e,e.exports),e.exports
|
|
2
|
-
/**
|
|
3
|
-
* @license React
|
|
4
|
-
* use-sync-external-store-shim.production.min.js
|
|
5
|
-
*
|
|
6
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
7
|
-
*
|
|
8
|
-
* This source code is licensed under the MIT license found in the
|
|
9
|
-
* LICENSE file in the root directory of this source tree.
|
|
10
|
-
*/}var f="function"==typeof Object.is?Object.is:function(t,e){return t===e&&(0!==t||1/t==1/e)||t!=t&&e!=e},l=a.default.useState,v=a.default.useEffect,d=a.default.useLayoutEffect,p=a.default.useDebugValue;function b(t){var e=t.getSnapshot;t=t.value;try{var n=e();return!f(t,n)}catch(t){return!0}}var y="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(t,e){return e()}:function(t,e){var n=e(),r=l({inst:{value:n,getSnapshot:e}}),u=r[0].inst,a=r[1];return d((function(){u.value=n,u.getSnapshot=e,b(u)&&a({inst:u})}),[t,n,e]),v((function(){return b(u)&&a({inst:u}),t((function(){b(u)&&a({inst:u})}))}),[t]),p(n),n},h={useSyncExternalStore:void 0!==a.default.useSyncExternalStore?a.default.useSyncExternalStore:y};
|
|
11
|
-
/**
|
|
12
|
-
* @license React
|
|
13
|
-
* use-sync-external-store-shim.development.js
|
|
14
|
-
*
|
|
15
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
16
|
-
*
|
|
17
|
-
* This source code is licensed under the MIT license found in the
|
|
18
|
-
* LICENSE file in the root directory of this source tree.
|
|
19
|
-
*/
|
|
20
|
-
s((function(t,e){}));var S=s((function(t){t.exports=h}));
|
|
21
|
-
/**
|
|
22
|
-
* @license React
|
|
23
|
-
* use-sync-external-store-shim/with-selector.production.min.js
|
|
24
|
-
*
|
|
25
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
26
|
-
*
|
|
27
|
-
* This source code is licensed under the MIT license found in the
|
|
28
|
-
* LICENSE file in the root directory of this source tree.
|
|
29
|
-
*/var g="function"==typeof Object.is?Object.is:function(t,e){return t===e&&(0!==t||1/t==1/e)||t!=t&&e!=e},O=S.useSyncExternalStore,j=a.default.useRef,x=a.default.useEffect,m=a.default.useMemo,E=a.default.useDebugValue,w={useSyncExternalStoreWithSelector:function(t,e,n,r,u){var a=j(null);if(null===a.current){var o={hasValue:!1,value:null};a.current=o}else o=a.current;a=m((function(){function t(t){if(!c){if(c=!0,a=t,t=r(t),void 0!==u&&o.hasValue){var e=o.value;if(u(e,t))return i=e}return i=t}if(e=i,g(a,t))return e;var n=r(t);return void 0!==u&&u(e,n)?e:(a=t,i=n)}var a,i,c=!1,s=void 0===n?null:n;return[function(){return t(e())},null===s?void 0:function(){return t(s())}]}),[e,n,r,u]);var i=O(t,a[0],a[1]);return x((function(){o.hasValue=!0,o.value=i}),[i]),E(i),i}};
|
|
30
|
-
/**
|
|
31
|
-
* @license React
|
|
32
|
-
* use-sync-external-store-shim/with-selector.development.js
|
|
33
|
-
*
|
|
34
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
35
|
-
*
|
|
36
|
-
* This source code is licensed under the MIT license found in the
|
|
37
|
-
* LICENSE file in the root directory of this source tree.
|
|
38
|
-
*/
|
|
39
|
-
s((function(t,e){}));var k=s((function(t){t.exports=w})),C=e.useLayoutEffect;function P(t){var e=o.useRef();return e.current||(e.current={v:t()}),e.current.v}function R(t,e){var r=P((function(){return"function"==typeof t?t():t})),u=e.context,a=e.guards,o=e.actions,c=e.activities,s=e.services,f=e.delays;e.state;var l=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var u=0;for(r=Object.getOwnPropertySymbols(t);u<r.length;u++)e.indexOf(r[u])<0&&Object.prototype.propertyIsEnumerable.call(t,r[u])&&(n[r[u]]=t[r[u]])}return n}(e,["context","guards","actions","activities","services","delays","state"]),v=P((function(){var t={context:u,guards:a,actions:o,activities:c,services:s,delays:f},e=r.withConfig(t,(function(){return i(i({},r.context),u)}));return n.interpret(e,l)}));return C((function(){Object.assign(v.machine.options.actions,o),Object.assign(v.machine.options.guards,a),Object.assign(v.machine.options.activities,c),Object.assign(v.machine.options.services,s),Object.assign(v.machine.options.delays,f)}),[o,a,c,s,f]),v}function I(t){return t}function V(t){return"state"in t}function M(t){return"deferred"in t}function N(t){return"getSnapshot"in t?t.getSnapshot():V(t)?t.state:void 0}function _(t,e){return t===e?0!==t||0!==e||1/t==1/e:t!=t&&e!=e}var q=function(t,e){return t===e};t.shallowEqual=function(t,e){if(_(t,e))return!0;if("object"!=typeof t||null===t||"object"!=typeof e||null===e)return!1;var n=Object.keys(t),r=Object.keys(e);if(n.length!==r.length)return!1;for(var u=0;u<n.length;u++)if(!Object.prototype.hasOwnProperty.call(e,n[u])||!_(t[n[u]],e[n[u]]))return!1;return!0},t.useActor=function(t,n){void 0===n&&(n=N);var r=e.useRef(t),u=e.useRef([]),a=e.useCallback((function(e){return t.subscribe(e).unsubscribe}),[t]),o=e.useCallback((function(){return n(t)}),[t,n]),i=S.useSyncExternalStore(a,o,o),c=P((function(){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=t[0],a=r.current;M(a)&&a.deferred?u.current.push(n):a.send(n)}}));return C((function(){for(r.current=t;u.current.length>0;){var e=u.current.shift();t.send(e)}}),[t]),[i,c]},t.useInterpret=function(t){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];var a=c(r,2),o=a[0],i=void 0===o?{}:o,s=a[1],f=R(t,i);return e.useEffect((function(){if(s){var t=f.subscribe(n.toObserver(s));return function(){t.unsubscribe()}}}),[s]),e.useEffect((function(){var t=i.state;return f.start(t?n.State.create(t):void 0),function(){f.stop(),f.status=n.InterpreterStatus.NotStarted}}),[]),f},t.useMachine=function(t){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];var a=c(r,1),o=a[0],i=void 0===o?{}:o,s=R(t,i),f=e.useCallback((function(){return s.status===n.InterpreterStatus.NotStarted?i.state?n.State.create(i.state):s.machine.initialState:s.state}),[s]),l=e.useCallback((function(t,e){if(s.status===n.InterpreterStatus.NotStarted)return!0;var r=void 0===e.changed&&(Object.keys(e.children).length>0||"boolean"==typeof t.changed);return!(e.changed||r)}),[s]),v=e.useCallback((function(t){return s.subscribe(t).unsubscribe}),[s]),d=k.useSyncExternalStoreWithSelector(v,f,f,I,l);return e.useEffect((function(){var t=i.state;return s.start(t?n.State.create(t):void 0),function(){s.stop(),s.status=n.InterpreterStatus.NotStarted}}),[]),[d,s.send,s]},t.useSelector=function(t,n,r,u){void 0===r&&(r=q);var a=e.useRef(null),o=e.useCallback((function(e){return t.subscribe(e).unsubscribe}),[t]),i=e.useCallback((function(){return u?u(t):function(t,e){if("state"in(u=t)&&"machine"in u){if(0===t.status&&e.current)return e.current;var n=0!==(r=t).status?r.state:r.machine.initialState;return e.current=0===t.status?n:null,n}var r,u;return V(t)?t.state:void 0}(t,a)}),[t,u]);return k.useSyncExternalStoreWithSelector(o,i,i,n,r)},t.useSpawn=function(t){return P((function(){return n.spawnBehavior(t)}))},Object.defineProperty(t,"__esModule",{value:!0})}));
|
package/es/fsm.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { MachineImplementationsFrom, ServiceFrom, StateFrom, StateMachine } from '@xstate/fsm';
|
|
2
|
-
export declare function useMachine<TMachine extends StateMachine.AnyMachine>(stateMachine: TMachine, options?: MachineImplementationsFrom<TMachine>): [StateFrom<TMachine>, ServiceFrom<TMachine>['send'], ServiceFrom<TMachine>];
|
|
3
|
-
export declare function useService<TService extends StateMachine.AnyService>(service: TService): [StateFrom<TService>, TService['send'], TService];
|
|
4
|
-
//# sourceMappingURL=fsm.d.ts.map
|
package/es/fsm.js
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
2
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
3
|
-
if (!m) return o;
|
|
4
|
-
var i = m.call(o), r, ar = [], e;
|
|
5
|
-
try {
|
|
6
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
7
|
-
}
|
|
8
|
-
catch (error) { e = { error: error }; }
|
|
9
|
-
finally {
|
|
10
|
-
try {
|
|
11
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
12
|
-
}
|
|
13
|
-
finally { if (e) throw e.error; }
|
|
14
|
-
}
|
|
15
|
-
return ar;
|
|
16
|
-
};
|
|
17
|
-
import { createMachine, interpret, InterpreterStatus } from '@xstate/fsm';
|
|
18
|
-
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
19
|
-
import useIsomorphicLayoutEffect from 'use-isomorphic-layout-effect';
|
|
20
|
-
import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';
|
|
21
|
-
import useConstant from './useConstant';
|
|
22
|
-
function identity(a) {
|
|
23
|
-
return a;
|
|
24
|
-
}
|
|
25
|
-
var getServiceState = function (service) {
|
|
26
|
-
var currentValue;
|
|
27
|
-
service
|
|
28
|
-
.subscribe(function (state) {
|
|
29
|
-
currentValue = state;
|
|
30
|
-
})
|
|
31
|
-
.unsubscribe();
|
|
32
|
-
return currentValue;
|
|
33
|
-
};
|
|
34
|
-
export function useMachine(stateMachine, options) {
|
|
35
|
-
var persistedStateRef = useRef();
|
|
36
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
37
|
-
var _a = __read(useState(stateMachine), 1), initialMachine = _a[0];
|
|
38
|
-
if (stateMachine !== initialMachine) {
|
|
39
|
-
console.warn('Machine given to `useMachine` has changed between renders. This is not supported and might lead to unexpected results.\n' +
|
|
40
|
-
'Please make sure that you pass the same Machine as argument each time.');
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
var _b = __read(useConstant(function () {
|
|
44
|
-
var queue = [];
|
|
45
|
-
var service = interpret(createMachine(stateMachine.config, options ? options : stateMachine._options));
|
|
46
|
-
var send = service.send;
|
|
47
|
-
service.send = function (event) {
|
|
48
|
-
if (service.status === InterpreterStatus.NotStarted) {
|
|
49
|
-
queue.push(event);
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
send(event);
|
|
53
|
-
persistedStateRef.current = service.state;
|
|
54
|
-
};
|
|
55
|
-
return [service, queue];
|
|
56
|
-
}), 2), service = _b[0], queue = _b[1];
|
|
57
|
-
useIsomorphicLayoutEffect(function () {
|
|
58
|
-
if (options) {
|
|
59
|
-
service._machine._options = options;
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
var useServiceResult = useService(service);
|
|
63
|
-
useEffect(function () {
|
|
64
|
-
service.start(persistedStateRef.current);
|
|
65
|
-
queue.forEach(service.send);
|
|
66
|
-
persistedStateRef.current = service.state;
|
|
67
|
-
return function () {
|
|
68
|
-
service.stop();
|
|
69
|
-
};
|
|
70
|
-
}, []);
|
|
71
|
-
return useServiceResult;
|
|
72
|
-
}
|
|
73
|
-
var isEqual = function (_prevState, nextState) { return nextState.changed === false; };
|
|
74
|
-
export function useService(service) {
|
|
75
|
-
var getSnapshot = useCallback(function () { return getServiceState(service); }, [service]);
|
|
76
|
-
var subscribe = useCallback(function (handleStoreChange) {
|
|
77
|
-
var unsubscribe = service.subscribe(handleStoreChange).unsubscribe;
|
|
78
|
-
return unsubscribe;
|
|
79
|
-
}, [service]);
|
|
80
|
-
var storeSnapshot = useSyncExternalStoreWithSelector(subscribe, getSnapshot, getSnapshot, identity, isEqual);
|
|
81
|
-
return [storeSnapshot, service.send, service];
|
|
82
|
-
}
|
package/es/index.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { useMachine } from './useMachine';
|
|
2
|
-
export { useActor } from './useActor';
|
|
3
|
-
export { useInterpret } from './useInterpret';
|
|
4
|
-
export { useSelector } from './useSelector';
|
|
5
|
-
export { useSpawn } from './useSpawn';
|
|
6
|
-
export { shallowEqual } from './utils';
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|
package/es/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/es/useActor.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { ActorRef, EventObject, Sender } from 'xstate';
|
|
2
|
-
export declare function isActorWithState<T extends ActorRef<any>>(actorRef: T): actorRef is T & {
|
|
3
|
-
state: any;
|
|
4
|
-
};
|
|
5
|
-
declare type EmittedFromActorRef<TActor extends ActorRef<any, any>> = TActor extends ActorRef<any, infer TEmitted> ? TEmitted : never;
|
|
6
|
-
export declare function useActor<TActor extends ActorRef<any, any>>(actorRef: TActor, getSnapshot?: (actor: TActor) => EmittedFromActorRef<TActor>): [EmittedFromActorRef<TActor>, TActor['send']];
|
|
7
|
-
export declare function useActor<TEvent extends EventObject, TEmitted>(actorRef: ActorRef<TEvent, TEmitted>, getSnapshot?: (actor: ActorRef<TEvent, TEmitted>) => TEmitted): [TEmitted, Sender<TEvent>];
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=useActor.d.ts.map
|
package/es/useActor.js
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { useRef, useCallback } from 'react';
|
|
2
|
-
import useIsomorphicLayoutEffect from 'use-isomorphic-layout-effect';
|
|
3
|
-
import useConstant from './useConstant';
|
|
4
|
-
import { useSyncExternalStore } from 'use-sync-external-store/shim';
|
|
5
|
-
export function isActorWithState(actorRef) {
|
|
6
|
-
return 'state' in actorRef;
|
|
7
|
-
}
|
|
8
|
-
function isDeferredActor(actorRef) {
|
|
9
|
-
return 'deferred' in actorRef;
|
|
10
|
-
}
|
|
11
|
-
function defaultGetSnapshot(actorRef) {
|
|
12
|
-
return 'getSnapshot' in actorRef
|
|
13
|
-
? actorRef.getSnapshot()
|
|
14
|
-
: isActorWithState(actorRef)
|
|
15
|
-
? actorRef.state
|
|
16
|
-
: undefined;
|
|
17
|
-
}
|
|
18
|
-
export function useActor(actorRef, getSnapshot) {
|
|
19
|
-
if (getSnapshot === void 0) { getSnapshot = defaultGetSnapshot; }
|
|
20
|
-
var actorRefRef = useRef(actorRef);
|
|
21
|
-
var deferredEventsRef = useRef([]);
|
|
22
|
-
var subscribe = useCallback(function (handleStoreChange) {
|
|
23
|
-
var unsubscribe = actorRef.subscribe(handleStoreChange).unsubscribe;
|
|
24
|
-
return unsubscribe;
|
|
25
|
-
}, [actorRef]);
|
|
26
|
-
var boundGetSnapshot = useCallback(function () { return getSnapshot(actorRef); }, [
|
|
27
|
-
actorRef,
|
|
28
|
-
getSnapshot
|
|
29
|
-
]);
|
|
30
|
-
var storeSnapshot = useSyncExternalStore(subscribe, boundGetSnapshot, boundGetSnapshot);
|
|
31
|
-
var send = useConstant(function () { return function () {
|
|
32
|
-
var args = [];
|
|
33
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
34
|
-
args[_i] = arguments[_i];
|
|
35
|
-
}
|
|
36
|
-
var event = args[0];
|
|
37
|
-
if (process.env.NODE_ENV !== 'production' && args.length > 1) {
|
|
38
|
-
console.warn("Unexpected payload: ".concat(JSON.stringify(args[1]), ". Only a single event object can be sent to actor send() functions."));
|
|
39
|
-
}
|
|
40
|
-
var currentActorRef = actorRefRef.current;
|
|
41
|
-
// If the previous actor is a deferred actor,
|
|
42
|
-
// queue the events so that they can be replayed
|
|
43
|
-
// on the non-deferred actor.
|
|
44
|
-
if (isDeferredActor(currentActorRef) && currentActorRef.deferred) {
|
|
45
|
-
deferredEventsRef.current.push(event);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
currentActorRef.send(event);
|
|
49
|
-
}
|
|
50
|
-
}; });
|
|
51
|
-
useIsomorphicLayoutEffect(function () {
|
|
52
|
-
actorRefRef.current = actorRef;
|
|
53
|
-
// Dequeue deferred events from the previous deferred actorRef
|
|
54
|
-
while (deferredEventsRef.current.length > 0) {
|
|
55
|
-
var deferredEvent = deferredEventsRef.current.shift();
|
|
56
|
-
actorRef.send(deferredEvent);
|
|
57
|
-
}
|
|
58
|
-
}, [actorRef]);
|
|
59
|
-
return [storeSnapshot, send];
|
|
60
|
-
}
|