@xstate/react 4.0.0-alpha.1 → 4.0.0-beta.3

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.
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+ import { ActorRefFrom, AnyStateMachine, AreAllImplementationsAssumedToBeProvided, SnapshotFrom, InternalMachineImplementations, InterpreterOptions, Observer, StateFrom } from 'xstate';
3
+ 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
+ useSelector: <T>(selector: (snapshot: SnapshotFrom<TMachine>) => T, compare?: (a: T, b: T) => boolean) => T;
6
+ useActorRef: () => ActorRefFrom<TMachine>;
7
+ Provider: (props: {
8
+ children: React.ReactNode;
9
+ machine?: TMachine | (() => TMachine);
10
+ } & (AreAllImplementationsAssumedToBeProvided<TMachine['__TResolvedTypesMeta']> extends false ? {
11
+ options: InternalMachineImplementations<TMachine['__TContext'], TMachine['__TEvent'], TMachine['__TResolvedTypesMeta'], true>;
12
+ } : {
13
+ options?: InternalMachineImplementations<TMachine['__TContext'], TMachine['__TEvent'], TMachine['__TResolvedTypesMeta']>;
14
+ })) => React.ReactElement<any, any>;
15
+ };
@@ -1,6 +1,7 @@
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 './shallowEqual';
1
+ export { useMachine } from './useMachine.ts';
2
+ export { useActor } from './useActor.ts';
3
+ export { useInterpret } from './useInterpret.ts';
4
+ export { useSelector } from './useSelector.ts';
5
+ export { useSpawn } from './useSpawn.ts';
6
+ export { shallowEqual } from './shallowEqual.ts';
7
+ export { createActorContext } from './createActorContext.ts';
@@ -1,7 +1,7 @@
1
1
  import { EventObject, MachineContext, StateConfig } from 'xstate';
2
- export declare type MaybeLazy<T> = T | (() => T);
3
- export declare type NoInfer<T> = [T][T extends any ? 0 : any];
4
- export declare type Prop<T, K> = K extends keyof T ? T[K] : never;
2
+ export type MaybeLazy<T> = T | (() => T);
3
+ export type NoInfer<T> = [T][T extends any ? 0 : any];
4
+ export type Prop<T, K> = K extends keyof T ? T[K] : never;
5
5
  export interface UseMachineOptions<TContext extends MachineContext, TEvent extends EventObject> {
6
6
  /**
7
7
  * If provided, will be merged with machine's `context`.
@@ -1,12 +1,11 @@
1
1
  import { AnyInterpreter, AnyStateMachine, AreAllImplementationsAssumedToBeProvided, InternalMachineImplementations, InterpreterFrom, InterpreterOptions, MachineImplementations, Observer, StateFrom } from 'xstate';
2
- import { MaybeLazy } from './types';
3
- import { UseMachineOptions } from './useMachine';
4
- export declare function useIdleInterpreter(getMachine: MaybeLazy<AnyStateMachine>, options: Partial<InterpreterOptions> & Partial<UseMachineOptions<any, never>> & Partial<MachineImplementations<any, never>>): AnyInterpreter;
5
- declare type RestParams<TMachine extends AnyStateMachine> = AreAllImplementationsAssumedToBeProvided<TMachine['__TResolvedTypesMeta']> extends false ? [
6
- options: InterpreterOptions & UseMachineOptions<TMachine['__TContext'], TMachine['__TEvent']> & InternalMachineImplementations<TMachine['__TContext'], TMachine['__TEvent'], TMachine['__TResolvedTypesMeta'], true>,
2
+ import { MaybeLazy } from './types.ts';
3
+ export declare function useIdleInterpreter(getMachine: MaybeLazy<AnyStateMachine>, options: Partial<InterpreterOptions<AnyStateMachine>> & Partial<MachineImplementations<any, never>>): AnyInterpreter;
4
+ type RestParams<TMachine extends AnyStateMachine> = AreAllImplementationsAssumedToBeProvided<TMachine['__TResolvedTypesMeta']> extends false ? [
5
+ options: InterpreterOptions<TMachine> & InternalMachineImplementations<TMachine['__TContext'], TMachine['__TEvent'], TMachine['__TResolvedTypesMeta'], true>,
7
6
  observerOrListener?: Observer<StateFrom<TMachine>> | ((value: StateFrom<TMachine>) => void)
8
7
  ] : [
9
- options?: InterpreterOptions & UseMachineOptions<TMachine['__TContext'], TMachine['__TEvent']> & InternalMachineImplementations<TMachine['__TContext'], TMachine['__TEvent'], TMachine['__TResolvedTypesMeta']>,
8
+ options?: InterpreterOptions<TMachine> & InternalMachineImplementations<TMachine['__TContext'], TMachine['__TEvent'], TMachine['__TResolvedTypesMeta']>,
10
9
  observerOrListener?: Observer<StateFrom<TMachine>> | ((value: StateFrom<TMachine>) => void)
11
10
  ];
12
11
  export declare function useInterpret<TMachine extends AnyStateMachine>(getMachine: MaybeLazy<TMachine>, ...[options, observerOrListener]: RestParams<TMachine>): InterpreterFrom<TMachine>;
@@ -1,21 +1,10 @@
1
- import { AnyStateMachine, AreAllImplementationsAssumedToBeProvided, EventObject, InternalMachineImplementations, InterpreterFrom, InterpreterOptions, MachineContext, StateConfig, StateFrom } from 'xstate';
2
- import { MaybeLazy, Prop } from './types';
3
- export interface UseMachineOptions<TContext extends MachineContext, TEvent extends EventObject> {
4
- /**
5
- * If provided, will be merged with machine's `context`.
6
- */
7
- context?: Partial<TContext>;
8
- /**
9
- * The state to rehydrate the machine to. The machine will
10
- * start at this state instead of its `initialState`.
11
- */
12
- state?: StateConfig<TContext, TEvent>;
13
- }
14
- declare type RestParams<TMachine extends AnyStateMachine> = AreAllImplementationsAssumedToBeProvided<TMachine['__TResolvedTypesMeta']> extends false ? [
15
- options: InterpreterOptions & UseMachineOptions<TMachine['__TContext'], TMachine['__TEvent']> & InternalMachineImplementations<TMachine['__TContext'], TMachine['__TEvent'], TMachine['__TResolvedTypesMeta'], true>
1
+ import { AnyStateMachine, AreAllImplementationsAssumedToBeProvided, InternalMachineImplementations, InterpreterFrom, InterpreterOptions, StateFrom } from 'xstate';
2
+ import { MaybeLazy, Prop } from './types.ts';
3
+ type RestParams<TMachine extends AnyStateMachine> = AreAllImplementationsAssumedToBeProvided<TMachine['__TResolvedTypesMeta']> extends false ? [
4
+ options: InterpreterOptions<TMachine> & InternalMachineImplementations<TMachine['__TContext'], TMachine['__TEvent'], TMachine['__TResolvedTypesMeta'], true>
16
5
  ] : [
17
- options?: InterpreterOptions & UseMachineOptions<TMachine['__TContext'], TMachine['__TEvent']> & InternalMachineImplementations<TMachine['__TContext'], TMachine['__TEvent'], TMachine['__TResolvedTypesMeta']>
6
+ options?: InterpreterOptions<TMachine> & InternalMachineImplementations<TMachine['__TContext'], TMachine['__TEvent'], TMachine['__TResolvedTypesMeta']>
18
7
  ];
19
- declare type UseMachineReturn<TMachine extends AnyStateMachine, TInterpreter = InterpreterFrom<TMachine>> = [StateFrom<TMachine>, Prop<TInterpreter, 'send'>, TInterpreter];
8
+ type UseMachineReturn<TMachine extends AnyStateMachine, TInterpreter = InterpreterFrom<TMachine>> = [StateFrom<TMachine>, Prop<TInterpreter, 'send'>, TInterpreter];
20
9
  export declare function useMachine<TMachine extends AnyStateMachine>(getMachine: MaybeLazy<TMachine>, ...[options]: RestParams<TMachine>): UseMachineReturn<TMachine>;
21
10
  export {};
@@ -1,4 +1,4 @@
1
- import { ActorRef, Behavior, EventObject } from 'xstate';
1
+ import { ActorRef, ActorBehavior, EventObject } from 'xstate';
2
2
  /**
3
3
  * React hook that spawns an `ActorRef` with the specified `behavior`.
4
4
  * The returned `ActorRef` can be used with the `useActor(actorRef)` hook.
@@ -6,4 +6,4 @@ import { ActorRef, Behavior, EventObject } from 'xstate';
6
6
  * @param behavior The actor behavior to spawn
7
7
  * @returns An ActorRef with the specified `behavior`
8
8
  */
9
- export declare function useSpawn<TState, TEvent extends EventObject>(behavior: Behavior<TEvent, TState>): ActorRef<TEvent, TState>;
9
+ export declare function useSpawn<TState, TEvent extends EventObject>(behavior: ActorBehavior<TEvent, TState>): ActorRef<TEvent, TState>;
@@ -5,37 +5,36 @@ function _arrayWithHoles(arr) {
5
5
  }
6
6
 
7
7
  function _iterableToArrayLimit(arr, i) {
8
- if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
9
- var _arr = [];
10
- var _n = true;
11
- var _d = false;
12
- var _e = undefined;
13
-
14
- try {
15
- for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
16
- _arr.push(_s.value);
17
-
18
- if (i && _arr.length === i) break;
19
- }
20
- } catch (err) {
21
- _d = true;
22
- _e = err;
23
- } finally {
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;
24
17
  try {
25
- if (!_n && _i["return"] != null) _i["return"]();
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;
26
24
  } finally {
27
- if (_d) throw _e;
25
+ try {
26
+ if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;
27
+ } finally {
28
+ if (_d) throw _e;
29
+ }
28
30
  }
31
+ return _arr;
29
32
  }
30
-
31
- return _arr;
32
33
  }
33
34
 
34
35
  function _arrayLikeToArray(arr, len) {
35
36
  if (len == null || len > arr.length) len = arr.length;
36
-
37
37
  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
38
-
39
38
  return arr2;
40
39
  }
41
40
 
@@ -58,13 +57,11 @@ function _slicedToArray(arr, i) {
58
57
 
59
58
  function useConstant(fn) {
60
59
  var ref = useRef();
61
-
62
60
  if (!ref.current) {
63
61
  ref.current = {
64
62
  v: fn()
65
63
  };
66
64
  }
67
-
68
65
  return ref.current.v;
69
66
  }
70
67
 
@@ -4,13 +4,11 @@ var React = require('react');
4
4
 
5
5
  function useConstant(fn) {
6
6
  var ref = React.useRef();
7
-
8
7
  if (!ref.current) {
9
8
  ref.current = {
10
9
  v: fn()
11
10
  };
12
11
  }
13
-
14
12
  return ref.current.v;
15
13
  }
16
14
 
@@ -7,37 +7,36 @@ function _arrayWithHoles(arr) {
7
7
  }
8
8
 
9
9
  function _iterableToArrayLimit(arr, i) {
10
- if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
11
- var _arr = [];
12
- var _n = true;
13
- var _d = false;
14
- var _e = undefined;
15
-
16
- try {
17
- for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
18
- _arr.push(_s.value);
19
-
20
- if (i && _arr.length === i) break;
21
- }
22
- } catch (err) {
23
- _d = true;
24
- _e = err;
25
- } finally {
10
+ var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
11
+ if (null != _i) {
12
+ var _s,
13
+ _e,
14
+ _x,
15
+ _r,
16
+ _arr = [],
17
+ _n = !0,
18
+ _d = !1;
26
19
  try {
27
- if (!_n && _i["return"] != null) _i["return"]();
20
+ if (_x = (_i = _i.call(arr)).next, 0 === i) {
21
+ if (Object(_i) !== _i) return;
22
+ _n = !1;
23
+ } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
24
+ } catch (err) {
25
+ _d = !0, _e = err;
28
26
  } finally {
29
- if (_d) throw _e;
27
+ try {
28
+ if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;
29
+ } finally {
30
+ if (_d) throw _e;
31
+ }
30
32
  }
33
+ return _arr;
31
34
  }
32
-
33
- return _arr;
34
35
  }
35
36
 
36
37
  function _arrayLikeToArray(arr, len) {
37
38
  if (len == null || len > arr.length) len = arr.length;
38
-
39
39
  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
40
-
41
40
  return arr2;
42
41
  }
43
42
 
@@ -60,13 +59,11 @@ function _slicedToArray(arr, i) {
60
59
 
61
60
  function useConstant(fn) {
62
61
  var ref = React.useRef();
63
-
64
62
  if (!ref.current) {
65
63
  ref.current = {
66
64
  v: fn()
67
65
  };
68
66
  }
69
-
70
67
  return ref.current.v;
71
68
  }
72
69
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var useConstant = require('./useConstant-644f0e11.cjs.dev.js');
5
+ var useConstant = require('./useConstant-ff65b597.cjs.dev.js');
6
6
  var React = require('react');
7
7
  var useIsomorphicLayoutEffect = require('use-isomorphic-layout-effect');
8
8
  var withSelector = require('use-sync-external-store/shim/with-selector');
@@ -18,13 +18,11 @@ function _objectWithoutPropertiesLoose(source, excluded) {
18
18
  var target = {};
19
19
  var sourceKeys = Object.keys(source);
20
20
  var key, i;
21
-
22
21
  for (i = 0; i < sourceKeys.length; i++) {
23
22
  key = sourceKeys[i];
24
23
  if (excluded.indexOf(key) >= 0) continue;
25
24
  target[key] = source[key];
26
25
  }
27
-
28
26
  return target;
29
27
  }
30
28
 
@@ -32,10 +30,8 @@ function _objectWithoutProperties(source, excluded) {
32
30
  if (source == null) return {};
33
31
  var target = _objectWithoutPropertiesLoose(source, excluded);
34
32
  var key, i;
35
-
36
33
  if (Object.getOwnPropertySymbols) {
37
34
  var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
38
-
39
35
  for (i = 0; i < sourceSymbolKeys.length; i++) {
40
36
  key = sourceSymbolKeys[i];
41
37
  if (excluded.indexOf(key) >= 0) continue;
@@ -43,37 +39,29 @@ function _objectWithoutProperties(source, excluded) {
43
39
  target[key] = source[key];
44
40
  }
45
41
  }
46
-
47
42
  return target;
48
43
  }
49
44
 
50
- var _excluded = ["context", "actors", "guards", "actions", "delays", "state"];
45
+ var _excluded = ["actors", "guards", "actions", "delays"];
51
46
  function useIdleInterpreter(getMachine, options) {
52
47
  var machine = useConstant.useConstant(function () {
53
48
  return typeof getMachine === 'function' ? getMachine() : getMachine;
54
49
  });
55
-
56
50
  if (process.env.NODE_ENV !== 'production' && typeof getMachine !== 'function') {
57
51
  var _useState = React.useState(machine),
58
- _useState2 = useConstant._slicedToArray(_useState, 1),
59
- initialMachine = _useState2[0];
60
-
52
+ _useState2 = useConstant._slicedToArray(_useState, 1),
53
+ initialMachine = _useState2[0];
61
54
  if (getMachine !== initialMachine) {
62
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.');
63
56
  }
64
57
  }
65
-
66
- var context = options.context,
67
- actors = options.actors,
68
- guards = options.guards,
69
- actions = options.actions,
70
- delays = options.delays,
71
- rehydratedState = options.state,
72
- interpreterOptions = _objectWithoutProperties(options, _excluded);
73
-
58
+ var actors = options.actors,
59
+ guards = options.guards,
60
+ actions = options.actions,
61
+ delays = options.delays,
62
+ interpreterOptions = _objectWithoutProperties(options, _excluded);
74
63
  var service = useConstant.useConstant(function () {
75
64
  var machineConfig = {
76
- context: context,
77
65
  guards: guards,
78
66
  actions: actions,
79
67
  actors: actors,
@@ -81,10 +69,11 @@ function useIdleInterpreter(getMachine, options) {
81
69
  };
82
70
  var machineWithConfig = machine.provide(machineConfig);
83
71
  return xstate.interpret(machineWithConfig, interpreterOptions);
84
- }); // Make sure options are kept updated when they change.
72
+ });
73
+
74
+ // Make sure options are kept updated when they change.
85
75
  // This mutation assignment is safe because the service instance is only used
86
76
  // in one place -- this hook's caller.
87
-
88
77
  useIsomorphicLayoutEffect__default['default'](function () {
89
78
  Object.assign(service.behavior.options.actions, actions);
90
79
  Object.assign(service.behavior.options.guards, guards);
@@ -97,27 +86,25 @@ function useInterpret(getMachine) {
97
86
  for (var _len = arguments.length, _ref = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
98
87
  _ref[_key - 1] = arguments[_key];
99
88
  }
100
-
101
89
  var _ref$ = _ref[0],
102
- options = _ref$ === void 0 ? {} : _ref$,
103
- observerOrListener = _ref[1];
90
+ options = _ref$ === void 0 ? {} : _ref$,
91
+ observerOrListener = _ref[1];
104
92
  var service = useIdleInterpreter(getMachine, options);
105
93
  React.useEffect(function () {
106
94
  if (!observerOrListener) {
107
95
  return;
108
96
  }
109
-
110
97
  var sub = service.subscribe(xstate.toObserver(observerOrListener));
111
98
  return function () {
112
99
  sub.unsubscribe();
113
100
  };
114
101
  }, [observerOrListener]);
115
102
  React.useEffect(function () {
116
- var rehydratedState = options.state;
117
- service.start(rehydratedState ? service.behavior.createState(rehydratedState) : undefined);
103
+ service.start();
118
104
  return function () {
119
105
  service.stop();
120
106
  service.status = xstate.InterpreterStatus.NotStarted;
107
+ service._initState();
121
108
  };
122
109
  }, []);
123
110
  return service;
@@ -126,51 +113,33 @@ function useInterpret(getMachine) {
126
113
  function identity(a) {
127
114
  return a;
128
115
  }
129
-
130
116
  var isEqual = function isEqual(prevState, nextState) {
131
117
  return prevState === nextState || nextState.changed === false;
132
118
  };
133
-
134
- // TODO: rethink how we can do this better
135
- var cachedRehydratedStates = new WeakMap();
136
119
  function useMachine(getMachine) {
137
120
  for (var _len = arguments.length, _ref = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
138
121
  _ref[_key - 1] = arguments[_key];
139
122
  }
140
-
141
123
  var _ref$ = _ref[0],
142
- options = _ref$ === void 0 ? {} : _ref$;
124
+ options = _ref$ === void 0 ? {} : _ref$;
143
125
  // using `useIdleInterpreter` allows us to subscribe to the service *before* we start it
144
126
  // so we don't miss any notifications
145
127
  var service = useIdleInterpreter(getMachine, options);
146
128
  var getSnapshot = React.useCallback(function () {
147
- if (service.status === xstate.InterpreterStatus.NotStarted && options.state) {
148
- var cached = cachedRehydratedStates.get(options.state);
149
-
150
- if (cached) {
151
- return cached;
152
- }
153
-
154
- var created = service.behavior.createState(options.state);
155
- cachedRehydratedStates.set(options.state, created);
156
- return created;
157
- }
158
-
159
129
  return service.getSnapshot();
160
130
  }, [service]);
161
131
  var subscribe = React.useCallback(function (handleStoreChange) {
162
132
  var _service$subscribe = service.subscribe(handleStoreChange),
163
- unsubscribe = _service$subscribe.unsubscribe;
164
-
133
+ unsubscribe = _service$subscribe.unsubscribe;
165
134
  return unsubscribe;
166
135
  }, [service]);
167
136
  var storeSnapshot = withSelector.useSyncExternalStoreWithSelector(subscribe, getSnapshot, getSnapshot, identity, isEqual);
168
137
  React.useEffect(function () {
169
- var rehydratedState = options.state;
170
- service.start(rehydratedState ? service.behavior.createState(rehydratedState) : undefined);
138
+ service.start();
171
139
  return function () {
172
140
  service.stop();
173
141
  service.status = xstate.InterpreterStatus.NotStarted;
142
+ service._initState();
174
143
  };
175
144
  }, []);
176
145
  return [storeSnapshot, service.send, service];
@@ -179,8 +148,7 @@ function useMachine(getMachine) {
179
148
  function useActor(actorRef) {
180
149
  var subscribe = React.useCallback(function (handleStoreChange) {
181
150
  var _actorRef$subscribe = actorRef.subscribe(handleStoreChange),
182
- unsubscribe = _actorRef$subscribe.unsubscribe;
183
-
151
+ unsubscribe = _actorRef$subscribe.unsubscribe;
184
152
  return unsubscribe;
185
153
  }, [actorRef]);
186
154
  var boundGetSnapshot = React.useCallback(function () {
@@ -196,13 +164,11 @@ function useActor(actorRef) {
196
164
  function defaultCompare(a, b) {
197
165
  return a === b;
198
166
  }
199
-
200
167
  function useSelector(actor, selector) {
201
168
  var compare = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultCompare;
202
169
  var subscribe = React.useCallback(function (handleStoreChange) {
203
170
  var _actor$subscribe = actor.subscribe(handleStoreChange),
204
- unsubscribe = _actor$subscribe.unsubscribe;
205
-
171
+ unsubscribe = _actor$subscribe.unsubscribe;
206
172
  return unsubscribe;
207
173
  }, [actor]);
208
174
  var boundGetSnapshot = React.useCallback(function () {
@@ -219,7 +185,6 @@ function useSelector(actor, selector) {
219
185
  * @param behavior The actor behavior to spawn
220
186
  * @returns An ActorRef with the specified `behavior`
221
187
  */
222
-
223
188
  function useSpawn(behavior) {
224
189
  var actorRef = useConstant.useConstant(function () {
225
190
  // TODO: figure out what to do about the name argument
@@ -227,11 +192,9 @@ function useSpawn(behavior) {
227
192
  });
228
193
  React.useEffect(function () {
229
194
  var _actorRef$start;
230
-
231
195
  (_actorRef$start = actorRef.start) === null || _actorRef$start === void 0 ? void 0 : _actorRef$start.call(actorRef);
232
196
  return function () {
233
197
  var _stop, _ref;
234
-
235
198
  (_stop = (_ref = actorRef).stop) === null || _stop === void 0 ? void 0 : _stop.call(_ref);
236
199
  };
237
200
  }, []);
@@ -241,17 +204,11 @@ function useSpawn(behavior) {
241
204
  function _typeof(obj) {
242
205
  "@babel/helpers - typeof";
243
206
 
244
- if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
245
- _typeof = function (obj) {
246
- return typeof obj;
247
- };
248
- } else {
249
- _typeof = function (obj) {
250
- return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
251
- };
252
- }
253
-
254
- return _typeof(obj);
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);
255
212
  }
256
213
 
257
214
  // From https://github.com/reduxjs/react-redux/blob/720f0ba79236cdc3e1115f4ef9a7760a21784b48/src/utils/shallowEqual.ts
@@ -262,27 +219,114 @@ function is(x, y) {
262
219
  return x !== x && y !== y;
263
220
  }
264
221
  }
265
-
266
222
  function shallowEqual(objA, objB) {
267
223
  if (is(objA, objB)) return true;
268
-
269
224
  if (_typeof(objA) !== 'object' || objA === null || _typeof(objB) !== 'object' || objB === null) {
270
225
  return false;
271
226
  }
272
-
273
227
  var keysA = Object.keys(objA);
274
228
  var keysB = Object.keys(objB);
275
229
  if (keysA.length !== keysB.length) return false;
276
-
277
230
  for (var i = 0; i < keysA.length; i++) {
278
231
  if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
279
232
  return false;
280
233
  }
281
234
  }
282
-
283
235
  return true;
284
236
  }
285
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;
286
330
  exports.shallowEqual = shallowEqual;
287
331
  exports.useActor = useActor;
288
332
  exports.useInterpret = useInterpret;