@xstate/react 4.0.0-beta.3 → 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.
Files changed (38) hide show
  1. package/dist/declarations/src/createActorContext.d.ts +6 -6
  2. package/dist/declarations/src/index.d.ts +6 -7
  3. package/dist/declarations/src/useActor.d.ts +6 -3
  4. package/dist/declarations/src/useActorRef.d.ts +14 -0
  5. package/dist/declarations/src/useMachine.d.ts +9 -9
  6. package/dist/useConstant-2ee82f84.cjs.js +35 -0
  7. package/dist/useConstant-ae6dceac.development.cjs.js +35 -0
  8. package/dist/{useConstant-c09b427a.cjs.prod.js → useConstant-bac83df4.development.esm.js} +3 -5
  9. package/dist/useConstant-c7ec0fdd.esm.js +13 -0
  10. package/dist/xstate-react.cjs.d.mts +2 -0
  11. package/dist/xstate-react.cjs.d.mts.map +1 -0
  12. package/dist/xstate-react.cjs.d.ts +1 -0
  13. package/dist/xstate-react.cjs.d.ts.map +1 -0
  14. package/dist/xstate-react.cjs.js +178 -4
  15. package/dist/xstate-react.cjs.mjs +8 -0
  16. package/dist/xstate-react.development.cjs.js +190 -0
  17. package/dist/xstate-react.development.esm.js +159 -0
  18. package/dist/xstate-react.esm.js +74 -245
  19. package/fsm/dist/xstate-react-fsm.cjs.d.mts +2 -0
  20. package/fsm/dist/xstate-react-fsm.cjs.d.mts.map +1 -0
  21. package/fsm/dist/xstate-react-fsm.cjs.d.ts +1 -0
  22. package/fsm/dist/xstate-react-fsm.cjs.d.ts.map +1 -0
  23. package/fsm/dist/xstate-react-fsm.cjs.js +65 -4
  24. package/fsm/dist/xstate-react-fsm.cjs.mjs +4 -0
  25. package/fsm/dist/xstate-react-fsm.development.cjs.js +74 -0
  26. package/fsm/dist/xstate-react-fsm.development.esm.js +65 -0
  27. package/fsm/dist/xstate-react-fsm.esm.js +30 -42
  28. package/package.json +30 -4
  29. package/dist/declarations/src/types.d.ts +0 -15
  30. package/dist/declarations/src/useConstant.d.ts +0 -1
  31. package/dist/declarations/src/useInterpret.d.ts +0 -12
  32. package/dist/declarations/src/useSpawn.d.ts +0 -9
  33. package/dist/useConstant-0013a606.esm.js +0 -68
  34. package/dist/useConstant-ff65b597.cjs.dev.js +0 -71
  35. package/dist/xstate-react.cjs.dev.js +0 -335
  36. package/dist/xstate-react.cjs.prod.js +0 -327
  37. package/fsm/dist/xstate-react-fsm.cjs.dev.js +0 -80
  38. package/fsm/dist/xstate-react-fsm.cjs.prod.js +0 -127
@@ -1,335 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var useConstant = require('./useConstant-ff65b597.cjs.dev.js');
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 xstate = require('xstate');
10
- var shim = require('use-sync-external-store/shim');
11
-
12
- function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
13
-
14
- var useIsomorphicLayoutEffect__default = /*#__PURE__*/_interopDefault(useIsomorphicLayoutEffect);
15
-
16
- function _objectWithoutPropertiesLoose(source, excluded) {
17
- if (source == null) return {};
18
- var target = {};
19
- var sourceKeys = Object.keys(source);
20
- var key, i;
21
- for (i = 0; i < sourceKeys.length; i++) {
22
- key = sourceKeys[i];
23
- if (excluded.indexOf(key) >= 0) continue;
24
- target[key] = source[key];
25
- }
26
- return target;
27
- }
28
-
29
- function _objectWithoutProperties(source, excluded) {
30
- if (source == null) return {};
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
- }
44
-
45
- var _excluded = ["actors", "guards", "actions", "delays"];
46
- function useIdleInterpreter(getMachine, options) {
47
- var machine = useConstant.useConstant(function () {
48
- return typeof getMachine === 'function' ? getMachine() : getMachine;
49
- });
50
- if (process.env.NODE_ENV !== 'production' && typeof getMachine !== 'function') {
51
- var _useState = React.useState(machine),
52
- _useState2 = useConstant._slicedToArray(_useState, 1),
53
- initialMachine = _useState2[0];
54
- if (getMachine !== initialMachine) {
55
- 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.');
56
- }
57
- }
58
- var actors = options.actors,
59
- guards = options.guards,
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);
72
- });
73
-
74
- // Make sure options are kept updated when they change.
75
- // This mutation assignment is safe because the service instance is only used
76
- // in one place -- this hook's caller.
77
- useIsomorphicLayoutEffect__default['default'](function () {
78
- Object.assign(service.behavior.options.actions, actions);
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;
84
- }
85
- function useInterpret(getMachine) {
86
- for (var _len = arguments.length, _ref = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
87
- _ref[_key - 1] = arguments[_key];
88
- }
89
- var _ref$ = _ref[0],
90
- options = _ref$ === void 0 ? {} : _ref$,
91
- observerOrListener = _ref[1];
92
- var service = useIdleInterpreter(getMachine, options);
93
- React.useEffect(function () {
94
- if (!observerOrListener) {
95
- return;
96
- }
97
- var sub = service.subscribe(xstate.toObserver(observerOrListener));
98
- return function () {
99
- sub.unsubscribe();
100
- };
101
- }, [observerOrListener]);
102
- React.useEffect(function () {
103
- service.start();
104
- return function () {
105
- service.stop();
106
- service.status = xstate.InterpreterStatus.NotStarted;
107
- service._initState();
108
- };
109
- }, []);
110
- return service;
111
- }
112
-
113
- function identity(a) {
114
- return a;
115
- }
116
- var isEqual = function isEqual(prevState, nextState) {
117
- return prevState === nextState || nextState.changed === false;
118
- };
119
- function useMachine(getMachine) {
120
- for (var _len = arguments.length, _ref = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
121
- _ref[_key - 1] = arguments[_key];
122
- }
123
- var _ref$ = _ref[0],
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);
128
- var getSnapshot = React.useCallback(function () {
129
- return service.getSnapshot();
130
- }, [service]);
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) {
149
- var subscribe = React.useCallback(function (handleStoreChange) {
150
- var _actorRef$subscribe = actorRef.subscribe(handleStoreChange),
151
- unsubscribe = _actorRef$subscribe.unsubscribe;
152
- return unsubscribe;
153
- }, [actorRef]);
154
- var boundGetSnapshot = React.useCallback(function () {
155
- return actorRef.getSnapshot();
156
- }, [actorRef]);
157
- var storeSnapshot = shim.useSyncExternalStore(subscribe, boundGetSnapshot, boundGetSnapshot);
158
- var boundSend = React.useCallback(function (event) {
159
- return actorRef.send(event);
160
- }, [actorRef]);
161
- return [storeSnapshot, boundSend];
162
- }
163
-
164
- function defaultCompare(a, b) {
165
- return a === b;
166
- }
167
- function useSelector(actor, selector) {
168
- var compare = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultCompare;
169
- var subscribe = React.useCallback(function (handleStoreChange) {
170
- var _actor$subscribe = actor.subscribe(handleStoreChange),
171
- unsubscribe = _actor$subscribe.unsubscribe;
172
- return unsubscribe;
173
- }, [actor]);
174
- var boundGetSnapshot = React.useCallback(function () {
175
- return actor.getSnapshot();
176
- }, [actor]);
177
- var selectedSnapshot = withSelector.useSyncExternalStoreWithSelector(subscribe, boundGetSnapshot, boundGetSnapshot, selector, compare);
178
- return selectedSnapshot;
179
- }
180
-
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
- function _typeof(obj) {
205
- "@babel/helpers - typeof";
206
-
207
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
208
- return typeof obj;
209
- } : function (obj) {
210
- return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
211
- }, _typeof(obj);
212
- }
213
-
214
- // From https://github.com/reduxjs/react-redux/blob/720f0ba79236cdc3e1115f4ef9a7760a21784b48/src/utils/shallowEqual.ts
215
- function is(x, y) {
216
- if (x === y) {
217
- return x !== 0 || y !== 0 || 1 / x === 1 / y;
218
- } else {
219
- return x !== x && y !== y;
220
- }
221
- }
222
- function shallowEqual(objA, objB) {
223
- if (is(objA, objB)) return true;
224
- if (_typeof(objA) !== 'object' || objA === null || _typeof(objB) !== 'object' || objB === null) {
225
- return false;
226
- }
227
- var keysA = Object.keys(objA);
228
- var keysB = Object.keys(objB);
229
- if (keysA.length !== keysB.length) return false;
230
- for (var i = 0; i < keysA.length; i++) {
231
- if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
232
- return false;
233
- }
234
- }
235
- return true;
236
- }
237
-
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
- function createActorContext(machine, interpreterOptions, observerOrListener) {
292
- var ReactContext = /*#__PURE__*/React.createContext(null);
293
- var OriginalProvider = ReactContext.Provider;
294
- function Provider(_ref) {
295
- var children = _ref.children,
296
- _ref$machine = _ref.machine,
297
- providedMachine = _ref$machine === void 0 ? machine : _ref$machine,
298
- options = _ref.options;
299
- var actor = useInterpret(providedMachine, _objectSpread2(_objectSpread2({}, interpreterOptions), options), observerOrListener);
300
- return /*#__PURE__*/React.createElement(OriginalProvider, {
301
- value: actor,
302
- children: children
303
- });
304
- }
305
- Provider.displayName = "ActorProvider(".concat(machine.id, ")");
306
- function useContext() {
307
- var actor = React.useContext(ReactContext);
308
- if (!actor) {
309
- throw new Error("You used a hook from \"".concat(Provider.displayName, "\" but it's not inside a <").concat(Provider.displayName, "> component."));
310
- }
311
- return actor;
312
- }
313
- function useActor$1() {
314
- var actor = useContext();
315
- return useActor(actor);
316
- }
317
- function useSelector$1(selector, compare) {
318
- var actor = useContext();
319
- return useSelector(actor, selector, compare);
320
- }
321
- return {
322
- Provider: Provider,
323
- useActorRef: useContext,
324
- useActor: useActor$1,
325
- useSelector: useSelector$1
326
- };
327
- }
328
-
329
- exports.createActorContext = createActorContext;
330
- exports.shallowEqual = shallowEqual;
331
- exports.useActor = useActor;
332
- exports.useInterpret = useInterpret;
333
- exports.useMachine = useMachine;
334
- exports.useSelector = useSelector;
335
- exports.useSpawn = useSpawn;
@@ -1,327 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var React = require('react');
6
- var useIsomorphicLayoutEffect = require('use-isomorphic-layout-effect');
7
- var withSelector = require('use-sync-external-store/shim/with-selector');
8
- var useConstant = require('./useConstant-c09b427a.cjs.prod.js');
9
- var xstate = require('xstate');
10
- var shim = require('use-sync-external-store/shim');
11
-
12
- function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
13
-
14
- var useIsomorphicLayoutEffect__default = /*#__PURE__*/_interopDefault(useIsomorphicLayoutEffect);
15
-
16
- function _objectWithoutPropertiesLoose(source, excluded) {
17
- if (source == null) return {};
18
- var target = {};
19
- var sourceKeys = Object.keys(source);
20
- var key, i;
21
- for (i = 0; i < sourceKeys.length; i++) {
22
- key = sourceKeys[i];
23
- if (excluded.indexOf(key) >= 0) continue;
24
- target[key] = source[key];
25
- }
26
- return target;
27
- }
28
-
29
- function _objectWithoutProperties(source, excluded) {
30
- if (source == null) return {};
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
- }
44
-
45
- var _excluded = ["actors", "guards", "actions", "delays"];
46
- function useIdleInterpreter(getMachine, options) {
47
- var machine = useConstant.useConstant(function () {
48
- return typeof getMachine === 'function' ? getMachine() : getMachine;
49
- });
50
- var actors = options.actors,
51
- guards = options.guards,
52
- actions = options.actions,
53
- delays = options.delays,
54
- interpreterOptions = _objectWithoutProperties(options, _excluded);
55
- var service = useConstant.useConstant(function () {
56
- var machineConfig = {
57
- guards: guards,
58
- actions: actions,
59
- actors: actors,
60
- delays: delays
61
- };
62
- var machineWithConfig = machine.provide(machineConfig);
63
- return xstate.interpret(machineWithConfig, interpreterOptions);
64
- });
65
-
66
- // Make sure options are kept updated when they change.
67
- // This mutation assignment is safe because the service instance is only used
68
- // in one place -- this hook's caller.
69
- useIsomorphicLayoutEffect__default['default'](function () {
70
- Object.assign(service.behavior.options.actions, actions);
71
- Object.assign(service.behavior.options.guards, guards);
72
- Object.assign(service.behavior.options.actors, actors);
73
- Object.assign(service.behavior.options.delays, delays);
74
- }, [actions, guards, actors, delays]);
75
- return service;
76
- }
77
- function useInterpret(getMachine) {
78
- for (var _len = arguments.length, _ref = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
79
- _ref[_key - 1] = arguments[_key];
80
- }
81
- var _ref$ = _ref[0],
82
- options = _ref$ === void 0 ? {} : _ref$,
83
- observerOrListener = _ref[1];
84
- var service = useIdleInterpreter(getMachine, options);
85
- React.useEffect(function () {
86
- if (!observerOrListener) {
87
- return;
88
- }
89
- var sub = service.subscribe(xstate.toObserver(observerOrListener));
90
- return function () {
91
- sub.unsubscribe();
92
- };
93
- }, [observerOrListener]);
94
- React.useEffect(function () {
95
- service.start();
96
- return function () {
97
- service.stop();
98
- service.status = xstate.InterpreterStatus.NotStarted;
99
- service._initState();
100
- };
101
- }, []);
102
- return service;
103
- }
104
-
105
- function identity(a) {
106
- return a;
107
- }
108
- var isEqual = function isEqual(prevState, nextState) {
109
- return prevState === nextState || nextState.changed === false;
110
- };
111
- function useMachine(getMachine) {
112
- for (var _len = arguments.length, _ref = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
113
- _ref[_key - 1] = arguments[_key];
114
- }
115
- var _ref$ = _ref[0],
116
- options = _ref$ === void 0 ? {} : _ref$;
117
- // using `useIdleInterpreter` allows us to subscribe to the service *before* we start it
118
- // so we don't miss any notifications
119
- var service = useIdleInterpreter(getMachine, options);
120
- var getSnapshot = React.useCallback(function () {
121
- return service.getSnapshot();
122
- }, [service]);
123
- var subscribe = React.useCallback(function (handleStoreChange) {
124
- var _service$subscribe = service.subscribe(handleStoreChange),
125
- unsubscribe = _service$subscribe.unsubscribe;
126
- return unsubscribe;
127
- }, [service]);
128
- var storeSnapshot = withSelector.useSyncExternalStoreWithSelector(subscribe, getSnapshot, getSnapshot, identity, isEqual);
129
- React.useEffect(function () {
130
- service.start();
131
- return function () {
132
- service.stop();
133
- service.status = xstate.InterpreterStatus.NotStarted;
134
- service._initState();
135
- };
136
- }, []);
137
- return [storeSnapshot, service.send, service];
138
- }
139
-
140
- function useActor(actorRef) {
141
- var subscribe = React.useCallback(function (handleStoreChange) {
142
- var _actorRef$subscribe = actorRef.subscribe(handleStoreChange),
143
- unsubscribe = _actorRef$subscribe.unsubscribe;
144
- return unsubscribe;
145
- }, [actorRef]);
146
- var boundGetSnapshot = React.useCallback(function () {
147
- return actorRef.getSnapshot();
148
- }, [actorRef]);
149
- var storeSnapshot = shim.useSyncExternalStore(subscribe, boundGetSnapshot, boundGetSnapshot);
150
- var boundSend = React.useCallback(function (event) {
151
- return actorRef.send(event);
152
- }, [actorRef]);
153
- return [storeSnapshot, boundSend];
154
- }
155
-
156
- function defaultCompare(a, b) {
157
- return a === b;
158
- }
159
- function useSelector(actor, selector) {
160
- var compare = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultCompare;
161
- var subscribe = React.useCallback(function (handleStoreChange) {
162
- var _actor$subscribe = actor.subscribe(handleStoreChange),
163
- unsubscribe = _actor$subscribe.unsubscribe;
164
- return unsubscribe;
165
- }, [actor]);
166
- var boundGetSnapshot = React.useCallback(function () {
167
- return actor.getSnapshot();
168
- }, [actor]);
169
- var selectedSnapshot = withSelector.useSyncExternalStoreWithSelector(subscribe, boundGetSnapshot, boundGetSnapshot, selector, compare);
170
- return selectedSnapshot;
171
- }
172
-
173
- /**
174
- * React hook that spawns an `ActorRef` with the specified `behavior`.
175
- * The returned `ActorRef` can be used with the `useActor(actorRef)` hook.
176
- *
177
- * @param behavior The actor behavior to spawn
178
- * @returns An ActorRef with the specified `behavior`
179
- */
180
- function useSpawn(behavior) {
181
- var actorRef = useConstant.useConstant(function () {
182
- // TODO: figure out what to do about the name argument
183
- return xstate.interpret(behavior);
184
- });
185
- React.useEffect(function () {
186
- var _actorRef$start;
187
- (_actorRef$start = actorRef.start) === null || _actorRef$start === void 0 ? void 0 : _actorRef$start.call(actorRef);
188
- return function () {
189
- var _stop, _ref;
190
- (_stop = (_ref = actorRef).stop) === null || _stop === void 0 ? void 0 : _stop.call(_ref);
191
- };
192
- }, []);
193
- return actorRef;
194
- }
195
-
196
- function _typeof(obj) {
197
- "@babel/helpers - typeof";
198
-
199
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
200
- return typeof obj;
201
- } : function (obj) {
202
- return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
203
- }, _typeof(obj);
204
- }
205
-
206
- // From https://github.com/reduxjs/react-redux/blob/720f0ba79236cdc3e1115f4ef9a7760a21784b48/src/utils/shallowEqual.ts
207
- function is(x, y) {
208
- if (x === y) {
209
- return x !== 0 || y !== 0 || 1 / x === 1 / y;
210
- } else {
211
- return x !== x && y !== y;
212
- }
213
- }
214
- function shallowEqual(objA, objB) {
215
- if (is(objA, objB)) return true;
216
- if (_typeof(objA) !== 'object' || objA === null || _typeof(objB) !== 'object' || objB === null) {
217
- return false;
218
- }
219
- var keysA = Object.keys(objA);
220
- var keysB = Object.keys(objB);
221
- if (keysA.length !== keysB.length) return false;
222
- for (var i = 0; i < keysA.length; i++) {
223
- if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
224
- return false;
225
- }
226
- }
227
- return true;
228
- }
229
-
230
- function _toPrimitive(input, hint) {
231
- if (typeof input !== "object" || input === null) return input;
232
- var prim = input[Symbol.toPrimitive];
233
- if (prim !== undefined) {
234
- var res = prim.call(input, hint || "default");
235
- if (typeof res !== "object") return res;
236
- throw new TypeError("@@toPrimitive must return a primitive value.");
237
- }
238
- return (hint === "string" ? String : Number)(input);
239
- }
240
-
241
- function _toPropertyKey(arg) {
242
- var key = _toPrimitive(arg, "string");
243
- return typeof key === "symbol" ? key : String(key);
244
- }
245
-
246
- function _defineProperty(obj, key, value) {
247
- key = _toPropertyKey(key);
248
- if (key in obj) {
249
- Object.defineProperty(obj, key, {
250
- value: value,
251
- enumerable: true,
252
- configurable: true,
253
- writable: true
254
- });
255
- } else {
256
- obj[key] = value;
257
- }
258
- return obj;
259
- }
260
-
261
- function ownKeys(object, enumerableOnly) {
262
- var keys = Object.keys(object);
263
- if (Object.getOwnPropertySymbols) {
264
- var symbols = Object.getOwnPropertySymbols(object);
265
- enumerableOnly && (symbols = symbols.filter(function (sym) {
266
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
267
- })), keys.push.apply(keys, symbols);
268
- }
269
- return keys;
270
- }
271
- function _objectSpread2(target) {
272
- for (var i = 1; i < arguments.length; i++) {
273
- var source = null != arguments[i] ? arguments[i] : {};
274
- i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
275
- _defineProperty(target, key, source[key]);
276
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
277
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
278
- });
279
- }
280
- return target;
281
- }
282
-
283
- function createActorContext(machine, interpreterOptions, observerOrListener) {
284
- var ReactContext = /*#__PURE__*/React.createContext(null);
285
- var OriginalProvider = ReactContext.Provider;
286
- function Provider(_ref) {
287
- var children = _ref.children,
288
- _ref$machine = _ref.machine,
289
- providedMachine = _ref$machine === void 0 ? machine : _ref$machine,
290
- options = _ref.options;
291
- var actor = useInterpret(providedMachine, _objectSpread2(_objectSpread2({}, interpreterOptions), options), observerOrListener);
292
- return /*#__PURE__*/React.createElement(OriginalProvider, {
293
- value: actor,
294
- children: children
295
- });
296
- }
297
- Provider.displayName = "ActorProvider(".concat(machine.id, ")");
298
- function useContext() {
299
- var actor = React.useContext(ReactContext);
300
- if (!actor) {
301
- throw new Error("You used a hook from \"".concat(Provider.displayName, "\" but it's not inside a <").concat(Provider.displayName, "> component."));
302
- }
303
- return actor;
304
- }
305
- function useActor$1() {
306
- var actor = useContext();
307
- return useActor(actor);
308
- }
309
- function useSelector$1(selector, compare) {
310
- var actor = useContext();
311
- return useSelector(actor, selector, compare);
312
- }
313
- return {
314
- Provider: Provider,
315
- useActorRef: useContext,
316
- useActor: useActor$1,
317
- useSelector: useSelector$1
318
- };
319
- }
320
-
321
- exports.createActorContext = createActorContext;
322
- exports.shallowEqual = shallowEqual;
323
- exports.useActor = useActor;
324
- exports.useInterpret = useInterpret;
325
- exports.useMachine = useMachine;
326
- exports.useSelector = useSelector;
327
- exports.useSpawn = useSpawn;