@xstate/react 4.0.0-beta.4 → 4.0.0-beta.5

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.
@@ -1,91 +0,0 @@
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 _arrayWithHoles(arr) {
26
- if (Array.isArray(arr)) return arr;
27
- }
28
-
29
- function _iterableToArrayLimit(arr, i) {
30
- var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
31
- if (null != _i) {
32
- var _s,
33
- _e,
34
- _x,
35
- _r,
36
- _arr = [],
37
- _n = !0,
38
- _d = !1;
39
- try {
40
- if (_x = (_i = _i.call(arr)).next, 0 === i) {
41
- if (Object(_i) !== _i) return;
42
- _n = !1;
43
- } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
44
- } catch (err) {
45
- _d = !0, _e = err;
46
- } finally {
47
- try {
48
- if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;
49
- } finally {
50
- if (_d) throw _e;
51
- }
52
- }
53
- return _arr;
54
- }
55
- }
56
-
57
- function _arrayLikeToArray(arr, len) {
58
- if (len == null || len > arr.length) len = arr.length;
59
- for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
60
- return arr2;
61
- }
62
-
63
- function _unsupportedIterableToArray(o, minLen) {
64
- if (!o) return;
65
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
66
- var n = Object.prototype.toString.call(o).slice(8, -1);
67
- if (n === "Object" && o.constructor) n = o.constructor.name;
68
- if (n === "Map" || n === "Set") return Array.from(o);
69
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
70
- }
71
-
72
- function _nonIterableRest() {
73
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
74
- }
75
-
76
- function _slicedToArray(arr, i) {
77
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
78
- }
79
-
80
- function useConstant(fn) {
81
- var ref = React__namespace.useRef();
82
- if (!ref.current) {
83
- ref.current = {
84
- v: fn()
85
- };
86
- }
87
- return ref.current.v;
88
- }
89
-
90
- exports._slicedToArray = _slicedToArray;
91
- exports.useConstant = useConstant;
@@ -1,68 +0,0 @@
1
- import * as React from 'react';
2
-
3
- function _arrayWithHoles(arr) {
4
- if (Array.isArray(arr)) return arr;
5
- }
6
-
7
- function _iterableToArrayLimit(arr, i) {
8
- var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
9
- if (null != _i) {
10
- var _s,
11
- _e,
12
- _x,
13
- _r,
14
- _arr = [],
15
- _n = !0,
16
- _d = !1;
17
- try {
18
- if (_x = (_i = _i.call(arr)).next, 0 === i) {
19
- if (Object(_i) !== _i) return;
20
- _n = !1;
21
- } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
22
- } catch (err) {
23
- _d = !0, _e = err;
24
- } finally {
25
- try {
26
- if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;
27
- } finally {
28
- if (_d) throw _e;
29
- }
30
- }
31
- return _arr;
32
- }
33
- }
34
-
35
- function _arrayLikeToArray(arr, len) {
36
- if (len == null || len > arr.length) len = arr.length;
37
- for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
38
- return arr2;
39
- }
40
-
41
- function _unsupportedIterableToArray(o, minLen) {
42
- if (!o) return;
43
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
44
- var n = Object.prototype.toString.call(o).slice(8, -1);
45
- if (n === "Object" && o.constructor) n = o.constructor.name;
46
- if (n === "Map" || n === "Set") return Array.from(o);
47
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
48
- }
49
-
50
- function _nonIterableRest() {
51
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
52
- }
53
-
54
- function _slicedToArray(arr, i) {
55
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
56
- }
57
-
58
- function useConstant(fn) {
59
- var ref = React.useRef();
60
- if (!ref.current) {
61
- ref.current = {
62
- v: fn()
63
- };
64
- }
65
- return ref.current.v;
66
- }
67
-
68
- export { _slicedToArray as _, useConstant as u };
@@ -1,213 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var React = require('react');
6
- var withSelector = require('use-sync-external-store/shim/with-selector');
7
- var xstate = require('xstate');
8
- var useConstant = require('./useConstant-23e96eea.cjs.dev.js');
9
- var useIsomorphicLayoutEffect = require('use-isomorphic-layout-effect');
10
- var actors = require('xstate/actors');
11
-
12
- function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
13
-
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
- });
27
- }
28
- n["default"] = e;
29
- return Object.freeze(n);
30
- }
31
-
32
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
33
- var useIsomorphicLayoutEffect__default = /*#__PURE__*/_interopDefault(useIsomorphicLayoutEffect);
34
-
35
- function useIdleInterpreter(machine, options) {
36
- if (process.env.NODE_ENV !== 'production') {
37
- var _useState = React.useState(machine),
38
- _useState2 = useConstant._slicedToArray(_useState, 1),
39
- initialMachine = _useState2[0];
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.");
42
- }
43
- }
44
- var actorRef = useConstant.useConstant(function () {
45
- return xstate.interpret(machine, options);
46
- });
47
-
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;
53
- }
54
- function useActorRef(machine) {
55
- for (var _len = arguments.length, _ref = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
56
- _ref[_key - 1] = arguments[_key];
57
- }
58
- var _ref$ = _ref[0],
59
- options = _ref$ === void 0 ? {} : _ref$,
60
- observerOrListener = _ref[1];
61
- var service = useIdleInterpreter(machine, options);
62
- React.useEffect(function () {
63
- if (!observerOrListener) {
64
- return;
65
- }
66
- var sub = service.subscribe(xstate.toObserver(observerOrListener));
67
- return function () {
68
- sub.unsubscribe();
69
- };
70
- }, [observerOrListener]);
71
- React.useEffect(function () {
72
- service.start();
73
- return function () {
74
- service.stop();
75
- service.status = xstate.InterpreterStatus.NotStarted;
76
- service._initState();
77
- };
78
- }, []);
79
- return service;
80
- }
81
-
82
- function identity(a) {
83
- return a;
84
- }
85
- var isEqual = function isEqual(prevState, nextState) {
86
- return prevState === nextState || nextState.changed === false;
87
- };
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
- }
94
- }
95
- var actorRef = useIdleInterpreter(behavior, options);
96
- var getSnapshot = React.useCallback(function () {
97
- return actorRef.getSnapshot();
98
- }, [actorRef]);
99
- var subscribe = React.useCallback(function (handleStoreChange) {
100
- var _actorRef$subscribe = actorRef.subscribe(handleStoreChange),
101
- unsubscribe = _actorRef$subscribe.unsubscribe;
102
- return unsubscribe;
103
- }, [actorRef]);
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
- };
112
- }, [actorRef]);
113
- return [actorSnapshot, actorRef.send, actorRef];
114
- }
115
-
116
- function defaultCompare(a, b) {
117
- return a === b;
118
- }
119
- function useSelector(actor, selector) {
120
- var compare = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultCompare;
121
- var subscribe = React.useCallback(function (handleStoreChange) {
122
- var _actor$subscribe = actor.subscribe(handleStoreChange),
123
- unsubscribe = _actor$subscribe.unsubscribe;
124
- return unsubscribe;
125
- }, [actor]);
126
- var boundGetSnapshot = React.useCallback(function () {
127
- return actor.getSnapshot();
128
- }, [actor]);
129
- var selectedSnapshot = withSelector.useSyncExternalStoreWithSelector(subscribe, boundGetSnapshot, boundGetSnapshot, selector, compare);
130
- return selectedSnapshot;
131
- }
132
-
133
- function _typeof(obj) {
134
- "@babel/helpers - typeof";
135
-
136
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
137
- return typeof obj;
138
- } : function (obj) {
139
- return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
140
- }, _typeof(obj);
141
- }
142
-
143
- // From https://github.com/reduxjs/react-redux/blob/720f0ba79236cdc3e1115f4ef9a7760a21784b48/src/utils/shallowEqual.ts
144
- function is(x, y) {
145
- if (x === y) {
146
- return x !== 0 || y !== 0 || 1 / x === 1 / y;
147
- } else {
148
- return x !== x && y !== y;
149
- }
150
- }
151
- function shallowEqual(objA, objB) {
152
- if (is(objA, objB)) return true;
153
- if (_typeof(objA) !== 'object' || objA === null || _typeof(objB) !== 'object' || objB === null) {
154
- return false;
155
- }
156
- var keysA = Object.keys(objA);
157
- var keysB = Object.keys(objB);
158
- if (keysA.length !== keysB.length) return false;
159
- for (var i = 0; i < keysA.length; i++) {
160
- if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
161
- return false;
162
- }
163
- }
164
- return true;
165
- }
166
-
167
- function createActorContext(machine, interpreterOptions, observerOrListener) {
168
- var ReactContext = /*#__PURE__*/React__namespace.createContext(null);
169
- var OriginalProvider = ReactContext.Provider;
170
- function Provider(_ref) {
171
- var children = _ref.children,
172
- _ref$machine = _ref.machine,
173
- providedMachine = _ref$machine === void 0 ? machine : _ref$machine;
174
- var actor = useActorRef(providedMachine, interpreterOptions, observerOrListener);
175
- return /*#__PURE__*/React__namespace.createElement(OriginalProvider, {
176
- value: actor,
177
- children: children
178
- });
179
- }
180
- Provider.displayName = "ActorProvider(".concat(machine.id, ")");
181
- function useContext() {
182
- var actor = React__namespace.useContext(ReactContext);
183
- if (!actor) {
184
- throw new Error("You used a hook from \"".concat(Provider.displayName, "\" but it's not inside a <").concat(Provider.displayName, "> component."));
185
- }
186
- return actor;
187
- }
188
- function useSelector$1(selector, compare) {
189
- var actor = useContext();
190
- return useSelector(actor, selector, compare);
191
- }
192
- return {
193
- Provider: Provider,
194
- useActorRef: useContext,
195
- useSelector: useSelector$1
196
- };
197
- }
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
-
208
- exports.createActorContext = createActorContext;
209
- exports.shallowEqual = shallowEqual;
210
- exports.useActor = useActor;
211
- exports.useActorRef = useActorRef;
212
- exports.useMachine = useMachine;
213
- exports.useSelector = useSelector;
@@ -1,80 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var useConstant = require('../../dist/useConstant-23e96eea.cjs.dev.js');
6
- var fsm = require('@xstate/fsm');
7
- var React = require('react');
8
- var useIsomorphicLayoutEffect = require('use-isomorphic-layout-effect');
9
- var withSelector = require('use-sync-external-store/shim/with-selector');
10
-
11
- function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
12
-
13
- var useIsomorphicLayoutEffect__default = /*#__PURE__*/_interopDefault(useIsomorphicLayoutEffect);
14
-
15
- function identity(a) {
16
- return a;
17
- }
18
- function useMachine(stateMachine, options) {
19
- var persistedStateRef = React.useRef();
20
- if (process.env.NODE_ENV !== 'production') {
21
- var _useState = React.useState(stateMachine),
22
- _useState2 = useConstant._slicedToArray(_useState, 1),
23
- initialMachine = _useState2[0];
24
- if (stateMachine !== initialMachine) {
25
- 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.');
26
- }
27
- }
28
- var _useConstant = useConstant.useConstant(function () {
29
- var queue = [];
30
- var service = fsm.interpret(fsm.createMachine(stateMachine.config, options ? options : stateMachine._options));
31
- var send = service.send;
32
- service.send = function (event) {
33
- if (service.status === fsm.InterpreterStatus.NotStarted) {
34
- queue.push(event);
35
- return;
36
- }
37
- send(event);
38
- persistedStateRef.current = service.state;
39
- };
40
- return [service, queue];
41
- }),
42
- _useConstant2 = useConstant._slicedToArray(_useConstant, 2),
43
- service = _useConstant2[0],
44
- queue = _useConstant2[1];
45
-
46
- // TODO: consider using `useInsertionEffect` if available
47
- useIsomorphicLayoutEffect__default["default"](function () {
48
- if (options) {
49
- service._machine._options = options;
50
- }
51
- });
52
- var useServiceResult = useService(service);
53
- React.useEffect(function () {
54
- service.start(persistedStateRef.current);
55
- queue.forEach(service.send);
56
- persistedStateRef.current = service.state;
57
- return function () {
58
- service.stop();
59
- };
60
- }, []);
61
- return useServiceResult;
62
- }
63
- var isEqual = function isEqual(_prevState, nextState) {
64
- return nextState.changed === false;
65
- };
66
- function useService(service) {
67
- var getSnapshot = React.useCallback(function () {
68
- return service.state;
69
- }, [service]);
70
- var subscribe = React.useCallback(function (handleStoreChange) {
71
- var _service$subscribe = service.subscribe(handleStoreChange),
72
- unsubscribe = _service$subscribe.unsubscribe;
73
- return unsubscribe;
74
- }, [service]);
75
- var storeSnapshot = withSelector.useSyncExternalStoreWithSelector(subscribe, getSnapshot, getSnapshot, identity, isEqual);
76
- return [storeSnapshot, service.send, service];
77
- }
78
-
79
- exports.useMachine = useMachine;
80
- exports.useService = useService;
@@ -1,127 +0,0 @@
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-720f1662.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
- var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
21
- if (null != _i) {
22
- var _s,
23
- _e,
24
- _x,
25
- _r,
26
- _arr = [],
27
- _n = !0,
28
- _d = !1;
29
- try {
30
- if (_x = (_i = _i.call(arr)).next, 0 === i) {
31
- if (Object(_i) !== _i) return;
32
- _n = !1;
33
- } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
34
- } catch (err) {
35
- _d = !0, _e = err;
36
- } finally {
37
- try {
38
- if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;
39
- } finally {
40
- if (_d) throw _e;
41
- }
42
- }
43
- return _arr;
44
- }
45
- }
46
-
47
- function _arrayLikeToArray(arr, len) {
48
- if (len == null || len > arr.length) len = arr.length;
49
- for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
50
- return arr2;
51
- }
52
-
53
- function _unsupportedIterableToArray(o, minLen) {
54
- if (!o) return;
55
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
56
- var n = Object.prototype.toString.call(o).slice(8, -1);
57
- if (n === "Object" && o.constructor) n = o.constructor.name;
58
- if (n === "Map" || n === "Set") return Array.from(o);
59
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
60
- }
61
-
62
- function _nonIterableRest() {
63
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
64
- }
65
-
66
- function _slicedToArray(arr, i) {
67
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
68
- }
69
-
70
- function identity(a) {
71
- return a;
72
- }
73
- function useMachine(stateMachine, options) {
74
- var persistedStateRef = React.useRef();
75
- var _useConstant = useConstant.useConstant(function () {
76
- var queue = [];
77
- var service = fsm.interpret(fsm.createMachine(stateMachine.config, options ? options : stateMachine._options));
78
- var send = service.send;
79
- service.send = function (event) {
80
- if (service.status === fsm.InterpreterStatus.NotStarted) {
81
- queue.push(event);
82
- return;
83
- }
84
- send(event);
85
- persistedStateRef.current = service.state;
86
- };
87
- return [service, queue];
88
- }),
89
- _useConstant2 = _slicedToArray(_useConstant, 2),
90
- service = _useConstant2[0],
91
- queue = _useConstant2[1];
92
-
93
- // TODO: consider using `useInsertionEffect` if available
94
- useIsomorphicLayoutEffect__default["default"](function () {
95
- if (options) {
96
- service._machine._options = options;
97
- }
98
- });
99
- var useServiceResult = useService(service);
100
- React.useEffect(function () {
101
- service.start(persistedStateRef.current);
102
- queue.forEach(service.send);
103
- persistedStateRef.current = service.state;
104
- return function () {
105
- service.stop();
106
- };
107
- }, []);
108
- return useServiceResult;
109
- }
110
- var isEqual = function isEqual(_prevState, nextState) {
111
- return nextState.changed === false;
112
- };
113
- function useService(service) {
114
- var getSnapshot = React.useCallback(function () {
115
- return service.state;
116
- }, [service]);
117
- var subscribe = React.useCallback(function (handleStoreChange) {
118
- var _service$subscribe = service.subscribe(handleStoreChange),
119
- unsubscribe = _service$subscribe.unsubscribe;
120
- return unsubscribe;
121
- }, [service]);
122
- var storeSnapshot = withSelector.useSyncExternalStoreWithSelector(subscribe, getSnapshot, getSnapshot, identity, isEqual);
123
- return [storeSnapshot, service.send, service];
124
- }
125
-
126
- exports.useMachine = useMachine;
127
- exports.useService = useService;