@xstate/react 3.0.2 → 3.1.0

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.
@@ -36,4 +36,4 @@ s((function(t,e){}));var S=s((function(t){t.exports=h}));
36
36
  * This source code is licensed under the MIT license found in the
37
37
  * LICENSE file in the root directory of this source tree.
38
38
  */
39
- s((function(t,e){}));var k=s((function(t){t.exports=w})),C=e.useLayoutEffect;function P(t){var e=a.useRef();return e.current||(e.current={v:t()}),e.current.v}function R(t,e){var r=P((function(){return"function"==typeof t?t():t})),u=e.context,o=e.guards,a=e.actions,c=e.activities,s=e.services,f=e.delays;e.state;var l=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var u=0;for(r=Object.getOwnPropertySymbols(t);u<r.length;u++)e.indexOf(r[u])<0&&Object.prototype.propertyIsEnumerable.call(t,r[u])&&(n[r[u]]=t[r[u]])}return n}(e,["context","guards","actions","activities","services","delays","state"]),v=P((function(){var t={context:u,guards:o,actions:a,activities:c,services:s,delays:f},e=r.withConfig(t,(function(){return i(i({},r.context),u)}));return n.interpret(e,l)}));return C((function(){Object.assign(v.machine.options.actions,a),Object.assign(v.machine.options.guards,o),Object.assign(v.machine.options.activities,c),Object.assign(v.machine.options.services,s),Object.assign(v.machine.options.delays,f)}),[a,o,c,s,f]),v}function I(t){return t}function V(t){return 0!==t.status?t.getSnapshot():t.machine.initialState}function M(t,e){return t===e?0!==t||0!==e||1/t==1/e:t!=t&&e!=e}function N(t){return"state"in t&&"machine"in t}function _(t){return"state"in t}function q(t){return"deferred"in t}function D(t){return"getSnapshot"in t?N(t)?V(t):t.getSnapshot():_(t)?t.state:void 0}var W=function(t,e){return t===e};t.shallowEqual=function(t,e){if(M(t,e))return!0;if("object"!=typeof t||null===t||"object"!=typeof e||null===e)return!1;var n=Object.keys(t),r=Object.keys(e);if(n.length!==r.length)return!1;for(var u=0;u<n.length;u++)if(!Object.prototype.hasOwnProperty.call(e,n[u])||!M(t[n[u]],e[n[u]]))return!1;return!0},t.useActor=function(t,n){void 0===n&&(n=D);var r=e.useRef(t),u=e.useRef([]),o=e.useCallback((function(e){return t.subscribe(e).unsubscribe}),[t]),a=e.useCallback((function(){return n(t)}),[t,n]),i=S.useSyncExternalStore(o,a,a),c=P((function(){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=t[0],o=r.current;q(o)&&o.deferred?u.current.push(n):o.send(n)}}));return C((function(){for(r.current=t;u.current.length>0;){var e=u.current.shift();t.send(e)}}),[t]),[i,c]},t.useInterpret=function(t){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];var o=c(r,2),a=o[0],i=void 0===a?{}:a,s=o[1],f=R(t,i);return e.useEffect((function(){if(s){var t=f.subscribe(n.toObserver(s));return function(){t.unsubscribe()}}}),[s]),e.useEffect((function(){var t=i.state;return f.start(t?n.State.create(t):void 0),function(){f.stop(),f.status=n.InterpreterStatus.NotStarted}}),[]),f},t.useMachine=function(t){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];var o=c(r,1),a=o[0],i=void 0===a?{}:a,s=R(t,i),f=e.useCallback((function(){return s.status===n.InterpreterStatus.NotStarted?i.state?n.State.create(i.state):s.machine.initialState:s.getSnapshot()}),[s]),l=e.useCallback((function(t,e){if(s.status===n.InterpreterStatus.NotStarted)return!0;var r=void 0===e.changed&&(Object.keys(e.children).length>0||"boolean"==typeof t.changed);return!(e.changed||r)}),[s]),v=e.useCallback((function(t){return s.subscribe(t).unsubscribe}),[s]),d=k.useSyncExternalStoreWithSelector(v,f,f,I,l);return e.useEffect((function(){var t=i.state;return s.start(t?n.State.create(t):void 0),function(){s.stop(),s.status=n.InterpreterStatus.NotStarted}}),[]),[d,s.send,s]},t.useSelector=function(t,n,r,u){void 0===r&&(r=W);var o=e.useRef(null),a=e.useCallback((function(e){return t.subscribe(e).unsubscribe}),[t]),i=e.useCallback((function(){return u?u(t):function(t,e){if(N(t)){if(0===t.status&&e.current)return e.current;var n=V(t);return e.current=0===t.status?n:null,n}return _(t)?t.state:void 0}(t,o)}),[t,u]);return k.useSyncExternalStoreWithSelector(a,i,i,n,r)},t.useSpawn=function(t){return P((function(){return n.spawnBehavior(t)}))},Object.defineProperty(t,"__esModule",{value:!0})}));
39
+ s((function(t,e){}));var k=s((function(t){t.exports=w})),C=e.useLayoutEffect;function P(t){var e=a.useRef();return e.current||(e.current={v:t()}),e.current.v}function R(t,e){var r=P((function(){return"function"==typeof t?t():t})),u=e.context,o=e.guards,a=e.actions,c=e.activities,s=e.services,f=e.delays;e.state;var l=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var u=0;for(r=Object.getOwnPropertySymbols(t);u<r.length;u++)e.indexOf(r[u])<0&&Object.prototype.propertyIsEnumerable.call(t,r[u])&&(n[r[u]]=t[r[u]])}return n}(e,["context","guards","actions","activities","services","delays","state"]),v=P((function(){var t={context:u,guards:o,actions:a,activities:c,services:s,delays:f},e=r.withConfig(t,(function(){return i(i({},r.context),u)}));return n.interpret(e,l)}));return C((function(){Object.assign(v.machine.options.actions,a),Object.assign(v.machine.options.guards,o),Object.assign(v.machine.options.activities,c),Object.assign(v.machine.options.services,s),Object.assign(v.machine.options.delays,f)}),[a,o,c,s,f]),v}function N(t){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];var o=c(r,2),a=o[0],i=void 0===a?{}:a,s=o[1],f=R(t,i);return e.useEffect((function(){if(s){var t=f.subscribe(n.toObserver(s));return function(){t.unsubscribe()}}}),[s]),e.useEffect((function(){var t=i.state;return f.start(t?n.State.create(t):void 0),function(){f.stop(),f.status=n.InterpreterStatus.NotStarted}}),[]),f}function I(t){return t}function A(t){return 0!==t.status?t.getSnapshot():t.machine.initialState}function V(t,e){return t===e?0!==t||0!==e||1/t==1/e:t!=t&&e!=e}function M(t){return"state"in t&&"machine"in t}function _(t){return"state"in t}function q(t){return"deferred"in t}function D(t){return"getSnapshot"in t?M(t)?A(t):t.getSnapshot():_(t)?t.state:void 0}function W(t,n){void 0===n&&(n=D);var r=e.useRef(t),u=e.useRef([]),o=e.useCallback((function(e){return t.subscribe(e).unsubscribe}),[t]),a=e.useCallback((function(){return n(t)}),[t,n]),i=S.useSyncExternalStore(o,a,a),c=P((function(){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=t[0],o=r.current;q(o)&&o.deferred?u.current.push(n):o.send(n)}}));return C((function(){for(r.current=t;u.current.length>0;){var e=u.current.shift();t.send(e)}}),[t]),[i,c]}var L=function(t,e){return t===e};function T(t,n,r,u){void 0===r&&(r=L);var o=e.useRef(null),a=e.useCallback((function(e){return t.subscribe(e).unsubscribe}),[t]),i=e.useCallback((function(){return u?u(t):function(t,e){if(M(t)){if(0===t.status&&e.current)return e.current;var n=A(t);return e.current=0===t.status?n:null,n}return _(t)?t.state:void 0}(t,o)}),[t,u]);return k.useSyncExternalStoreWithSelector(a,i,i,n,r)}t.createActorContext=function(t){var e=a.createContext(null),n=e.Provider;function r(e){var r=e.children,u=e.machine,o=N(void 0===u?t:u);return a.createElement(n,{value:o},r)}function u(){var t=a.useContext(e);if(!t)throw new Error('You used a hook from "'.concat(r.displayName,"\" but it's not inside a <").concat(r.displayName,"> component."));return t}return r.displayName="ActorProvider(".concat(t.id,")"),{Provider:r,useActorRef:u,useActor:function(){return W(u())},useSelector:function(t,e){return T(u(),t,e)}}},t.shallowEqual=function(t,e){if(V(t,e))return!0;if("object"!=typeof t||null===t||"object"!=typeof e||null===e)return!1;var n=Object.keys(t),r=Object.keys(e);if(n.length!==r.length)return!1;for(var u=0;u<n.length;u++)if(!Object.prototype.hasOwnProperty.call(e,n[u])||!V(t[n[u]],e[n[u]]))return!1;return!0},t.useActor=W,t.useInterpret=N,t.useMachine=function(t){for(var r=[],u=1;u<arguments.length;u++)r[u-1]=arguments[u];var o=c(r,1),a=o[0],i=void 0===a?{}:a,s=R(t,i),f=e.useCallback((function(){return s.status===n.InterpreterStatus.NotStarted?i.state?n.State.create(i.state):s.machine.initialState:s.getSnapshot()}),[s]),l=e.useCallback((function(t,e){if(s.status===n.InterpreterStatus.NotStarted)return!0;var r=void 0===e.changed&&(Object.keys(e.children).length>0||"boolean"==typeof t.changed);return!(e.changed||r)}),[s]),v=e.useCallback((function(t){return s.subscribe(t).unsubscribe}),[s]),d=k.useSyncExternalStoreWithSelector(v,f,f,I,l);return e.useEffect((function(){var t=i.state;return s.start(t?n.State.create(t):void 0),function(){s.stop(),s.status=n.InterpreterStatus.NotStarted}}),[]),[d,s.send,s]},t.useSelector=T,t.useSpawn=function(t){return P((function(){return n.spawnBehavior(t)}))},Object.defineProperty(t,"__esModule",{value:!0})}));
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ import { useActor as useActorUnbound } from './useActor';
3
+ import { ActorRefFrom, AnyStateMachine, EmittedFrom } from 'xstate';
4
+ export declare function createActorContext<TMachine extends AnyStateMachine>(machine: TMachine): {
5
+ useActor: () => ReturnType<typeof useActorUnbound<ActorRefFrom<TMachine>>>;
6
+ useSelector: <T>(selector: (snapshot: EmittedFrom<TMachine>) => T, compare?: (a: T, b: T) => boolean) => T;
7
+ useActorRef: () => ActorRefFrom<TMachine>;
8
+ Provider: (props: {
9
+ children: React.ReactNode;
10
+ machine?: TMachine | (() => TMachine);
11
+ }) => React.ReactElement<any, any>;
12
+ };
13
+ //# sourceMappingURL=createActorContext.d.ts.map
@@ -0,0 +1,35 @@
1
+ import * as React from 'react';
2
+ import { useInterpret } from './useInterpret';
3
+ import { useActor as useActorUnbound } from './useActor';
4
+ import { useSelector as useSelectorUnbound } from './useSelector';
5
+ export function createActorContext(machine) {
6
+ var ReactContext = React.createContext(null);
7
+ var OriginalProvider = ReactContext.Provider;
8
+ function Provider(_a) {
9
+ var children = _a.children, _b = _a.machine, providedMachine = _b === void 0 ? machine : _b;
10
+ var actor = useInterpret(providedMachine);
11
+ return React.createElement(OriginalProvider, { value: actor }, children);
12
+ }
13
+ Provider.displayName = "ActorProvider(".concat(machine.id, ")");
14
+ function useContext() {
15
+ var actor = React.useContext(ReactContext);
16
+ if (!actor) {
17
+ throw new Error("You used a hook from \"".concat(Provider.displayName, "\" but it's not inside a <").concat(Provider.displayName, "> component."));
18
+ }
19
+ return actor;
20
+ }
21
+ function useActor() {
22
+ var actor = useContext();
23
+ return useActorUnbound(actor);
24
+ }
25
+ function useSelector(selector, compare) {
26
+ var actor = useContext();
27
+ return useSelectorUnbound(actor, selector, compare);
28
+ }
29
+ return {
30
+ Provider: Provider,
31
+ useActorRef: useContext,
32
+ useActor: useActor,
33
+ useSelector: useSelector
34
+ };
35
+ }
package/es/index.d.ts CHANGED
@@ -4,4 +4,5 @@ export { useInterpret } from './useInterpret';
4
4
  export { useSelector } from './useSelector';
5
5
  export { useSpawn } from './useSpawn';
6
6
  export { shallowEqual } from './utils';
7
+ export { createActorContext } from './createActorContext';
7
8
  //# sourceMappingURL=index.d.ts.map
package/es/index.js CHANGED
@@ -4,3 +4,4 @@ export { useInterpret } from './useInterpret';
4
4
  export { useSelector } from './useSelector';
5
5
  export { useSpawn } from './useSpawn';
6
6
  export { shallowEqual } from './utils';
7
+ export { createActorContext } from './createActorContext';
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ import { useActor as useActorUnbound } from './useActor';
3
+ import { ActorRefFrom, AnyStateMachine, EmittedFrom } from 'xstate';
4
+ export declare function createActorContext<TMachine extends AnyStateMachine>(machine: TMachine): {
5
+ useActor: () => ReturnType<typeof useActorUnbound<ActorRefFrom<TMachine>>>;
6
+ useSelector: <T>(selector: (snapshot: EmittedFrom<TMachine>) => T, compare?: (a: T, b: T) => boolean) => T;
7
+ useActorRef: () => ActorRefFrom<TMachine>;
8
+ Provider: (props: {
9
+ children: React.ReactNode;
10
+ machine?: TMachine | (() => TMachine);
11
+ }) => React.ReactElement<any, any>;
12
+ };
13
+ //# sourceMappingURL=createActorContext.d.ts.map
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createActorContext = void 0;
4
+ var React = require("react");
5
+ var useInterpret_1 = require("./useInterpret");
6
+ var useActor_1 = require("./useActor");
7
+ var useSelector_1 = require("./useSelector");
8
+ function createActorContext(machine) {
9
+ var ReactContext = React.createContext(null);
10
+ var OriginalProvider = ReactContext.Provider;
11
+ function Provider(_a) {
12
+ var children = _a.children, _b = _a.machine, providedMachine = _b === void 0 ? machine : _b;
13
+ var actor = (0, useInterpret_1.useInterpret)(providedMachine);
14
+ return React.createElement(OriginalProvider, { value: actor }, children);
15
+ }
16
+ Provider.displayName = "ActorProvider(".concat(machine.id, ")");
17
+ function useContext() {
18
+ var actor = React.useContext(ReactContext);
19
+ if (!actor) {
20
+ throw new Error("You used a hook from \"".concat(Provider.displayName, "\" but it's not inside a <").concat(Provider.displayName, "> component."));
21
+ }
22
+ return actor;
23
+ }
24
+ function useActor() {
25
+ var actor = useContext();
26
+ return (0, useActor_1.useActor)(actor);
27
+ }
28
+ function useSelector(selector, compare) {
29
+ var actor = useContext();
30
+ return (0, useSelector_1.useSelector)(actor, selector, compare);
31
+ }
32
+ return {
33
+ Provider: Provider,
34
+ useActorRef: useContext,
35
+ useActor: useActor,
36
+ useSelector: useSelector
37
+ };
38
+ }
39
+ exports.createActorContext = createActorContext;
package/lib/index.d.ts CHANGED
@@ -4,4 +4,5 @@ export { useInterpret } from './useInterpret';
4
4
  export { useSelector } from './useSelector';
5
5
  export { useSpawn } from './useSpawn';
6
6
  export { shallowEqual } from './utils';
7
+ export { createActorContext } from './createActorContext';
7
8
  //# sourceMappingURL=index.d.ts.map
package/lib/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.shallowEqual = exports.useSpawn = exports.useSelector = exports.useInterpret = exports.useActor = exports.useMachine = void 0;
3
+ exports.createActorContext = exports.shallowEqual = exports.useSpawn = exports.useSelector = exports.useInterpret = exports.useActor = exports.useMachine = void 0;
4
4
  var useMachine_1 = require("./useMachine");
5
5
  Object.defineProperty(exports, "useMachine", { enumerable: true, get: function () { return useMachine_1.useMachine; } });
6
6
  var useActor_1 = require("./useActor");
@@ -13,3 +13,5 @@ var useSpawn_1 = require("./useSpawn");
13
13
  Object.defineProperty(exports, "useSpawn", { enumerable: true, get: function () { return useSpawn_1.useSpawn; } });
14
14
  var utils_1 = require("./utils");
15
15
  Object.defineProperty(exports, "shallowEqual", { enumerable: true, get: function () { return utils_1.shallowEqual; } });
16
+ var createActorContext_1 = require("./createActorContext");
17
+ Object.defineProperty(exports, "createActorContext", { enumerable: true, get: function () { return createActorContext_1.createActorContext; } });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xstate/react",
3
- "version": "3.0.2",
3
+ "version": "3.1.0",
4
4
  "description": "XState tools for React",
5
5
  "keywords": [
6
6
  "state",
@@ -54,7 +54,7 @@
54
54
  "peerDependencies": {
55
55
  "@xstate/fsm": "^2.0.0",
56
56
  "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
57
- "xstate": "^4.35.2"
57
+ "xstate": "^4.35.3"
58
58
  },
59
59
  "peerDependenciesMeta": {
60
60
  "@xstate/fsm": {