@xstate/react 4.0.0-alpha.2 → 4.0.0-beta.4

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