@xstate/react
Advanced tools
Comparing version 1.3.2 to 1.3.3
# Changelog | ||
## 1.3.3 | ||
### Patch Changes | ||
- [`27e7242c`](https://github.com/davidkpiano/xstate/commit/27e7242c24146de85cf618a658b400a3241fa7d7) [#2112](https://github.com/davidkpiano/xstate/pull/2112) Thanks [@davidkpiano](https://github.com/davidkpiano)! - The `executeEffect` function is no longer exported (was meant to be internal and is useless as a public function anyway). This also fixes a circular dependency issue. | ||
## 1.3.2 | ||
@@ -4,0 +10,0 @@ |
@@ -15,2 +15,2 @@ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("react"),require("xstate")):"function"==typeof define&&define.amd?define(["exports","react","xstate"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).XStateReact={},t.React,t.XState)}(this,(function(t,e,n){"use strict"; | ||
PERFORMANCE OF THIS SOFTWARE. | ||
***************************************************************************** */var r,u=function(){return(u=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var u in e=arguments[n])Object.prototype.hasOwnProperty.call(e,u)&&(t[u]=e[u]);return t}).apply(this,arguments)};function c(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,u,c=n.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=c.next()).done;)o.push(r.value)}catch(t){u={error:t}}finally{try{r&&!r.done&&(n=c.return)&&n.call(c)}finally{if(u)throw u.error}}return o}function o(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(c(arguments[e]));return t}!function(t){t[t.Effect=1]="Effect",t[t.LayoutEffect=2]="LayoutEffect"}(r||(r={}));var i=e.useLayoutEffect;function f(t){var n=e.useRef();return n.current||(n.current={v:t()}),n.current.v}function a(t,e){var n,r,u=c([[],[]],2),o=u[0],i=u[1];try{for(var f=function(t){var e="function"==typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}(t),a=f.next();!a.done;a=f.next()){var s=a.value;e(s)?o.push(s):i.push(s)}}catch(t){n={error:t}}finally{try{a&&!a.done&&(r=f.return)&&r.call(f)}finally{if(n)throw n.error}}return[o,i]}function s(t,s,l){void 0===s&&(s={});var d=f((function(){return"function"==typeof t?t():t})),p=s.context,y=s.guards,b=s.actions,h=s.activities,g=s.services,m=s.delays,x=s.state,O=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}(s,["context","guards","actions","activities","services","delays","state"]),S=f((function(){var t={context:p,guards:y,actions:b,activities:h,services:g,delays:m},e=d.withConfig(t,u(u({},d.context),p));return n.interpret(e,u({deferEvents:!0},O))}));return i((function(){var t;return l&&(t=S.subscribe(function(t,e,n){if("object"==typeof t)return t;var r=function(){};return{next:t,error:e||r,complete:n||r}}(l))),function(){null==t||t.unsubscribe()}}),[l]),i((function(){return S.start(x?n.State.create(x):void 0),function(){S.stop()}}),[]),i((function(){Object.assign(S.machine.options.actions,b)}),[b]),i((function(){Object.assign(S.machine.options.services,g)}),[g]),function(t){var n=e.useRef([]),u=e.useRef([]);i((function(){var e=t.subscribe((function(t){var e,i;if(t.actions.length){var f=c(a(t.actions.filter((function(t){return"function"==typeof t.exec&&"__effect"in t.exec})),(function(t){return t.exec.__effect===r.Effect})),2),s=f[0],l=f[1];(e=n.current).push.apply(e,o(s.map((function(e){return[e,t]})))),(i=u.current).push.apply(i,o(l.map((function(e){return[e,t]}))))}}));return function(){e.unsubscribe()}}),[]),i((function(){for(;u.current.length;){var t=c(u.current.shift(),2);v(t[0],t[1])}})),e.useEffect((function(){for(;n.current.length;){var t=c(n.current.shift(),2);v(t[0],t[1])}}))}(S),S}function l(t,e){var n=function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return function(){return t.apply(void 0,o(e))}};return Object.defineProperties(n,{name:{value:"effect:"+t.name},__effect:{value:e}}),n}function v(t,e){(0,t.exec)(e.context,e._event.data,{action:t,state:e,_event:e._event})()}function d(t){return"state"in t}var p=function(){};function y(t,n){void 0===n&&(n=function(t){return d(t)?t.state:void 0});var r=e.useRef(t),u=e.useRef([]),o=c(e.useState((function(){return n(t)})),2),a=o[0],s=o[1],l=f((function(){return function(t){var e=r.current;(function(t){return"deferred"in t})(e)&&e.deferred?u.current.push(t):e.send(t)}}));return i((function(){r.current=t,s(n(t));for(var e=t.subscribe({next:function(t){return s(t)},error:p,complete:p});u.current.length>0;){var c=u.current.shift();t.send(c)}return function(){e.unsubscribe()}}),[t]),[a,l]}function b(t){return 0!==("status"in t?t.status:t._status)?t.state:t.machine.initialState}var h=function(t,e){return t===e},g=function(t){return"state"in(e=t)&&"machine"in e?b(t):d(t)?t.state:void 0;var e};t.asEffect=function(t){return l(t,r.Effect)},t.asLayoutEffect=function(t){return l(t,r.LayoutEffect)},t.useActor=y,t.useInterpret=s,t.useMachine=function(t,r){void 0===r&&(r={});var u=e.useCallback((function(t){var e=void 0===t.changed&&Object.keys(t.children).length;(t.changed||e)&&a(t)}),[]),o=s(t,r,u),i=c(e.useState((function(){var t=o.machine.initialState;return r.state?n.State.create(r.state):t})),2),f=i[0],a=i[1];return[f,o.send,o]},t.useSelector=function(t,n,r,u){void 0===r&&(r=h),void 0===u&&(u=g);var o=c(e.useState((function(){return n(u(t))})),2),i=o[0],f=o[1],a=e.useRef(i);return e.useEffect((function(){var e=function(t){r(a.current,t)||(f(t),a.current=t)},c=n(u(t));e(c);var o=t.subscribe((function(t){var r=n(t);e(r)}));return function(){return o.unsubscribe()}}),[n,r]),i},t.useService=function(t){return[c(y(t,b),1)[0],t.send]},Object.defineProperty(t,"__esModule",{value:!0})})); | ||
***************************************************************************** */var r,u=function(){return(u=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var u in e=arguments[n])Object.prototype.hasOwnProperty.call(e,u)&&(t[u]=e[u]);return t}).apply(this,arguments)};function c(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,u,c=n.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=c.next()).done;)o.push(r.value)}catch(t){u={error:t}}finally{try{r&&!r.done&&(n=c.return)&&n.call(c)}finally{if(u)throw u.error}}return o}function o(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(c(arguments[e]));return t}!function(t){t[t.Effect=1]="Effect",t[t.LayoutEffect=2]="LayoutEffect"}(r||(r={}));var i=e.useLayoutEffect;function f(t){var n=e.useRef();return n.current||(n.current={v:t()}),n.current.v}function a(t,e){var n,r,u=c([[],[]],2),o=u[0],i=u[1];try{for(var f=function(t){var e="function"==typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}(t),a=f.next();!a.done;a=f.next()){var s=a.value;e(s)?o.push(s):i.push(s)}}catch(t){n={error:t}}finally{try{a&&!a.done&&(r=f.return)&&r.call(f)}finally{if(n)throw n.error}}return[o,i]}function s(t,e){(0,t.exec)(e.context,e._event.data,{action:t,state:e,_event:e._event})()}function l(t,l,v){void 0===l&&(l={});var d=f((function(){return"function"==typeof t?t():t})),p=l.context,y=l.guards,b=l.actions,h=l.activities,g=l.services,m=l.delays,x=l.state,O=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}(l,["context","guards","actions","activities","services","delays","state"]),S=f((function(){var t={context:p,guards:y,actions:b,activities:h,services:g,delays:m},e=d.withConfig(t,u(u({},d.context),p));return n.interpret(e,u({deferEvents:!0},O))}));return i((function(){var t;return v&&(t=S.subscribe(function(t,e,n){if("object"==typeof t)return t;var r=function(){};return{next:t,error:e||r,complete:n||r}}(v))),function(){null==t||t.unsubscribe()}}),[v]),i((function(){return S.start(x?n.State.create(x):void 0),function(){S.stop()}}),[]),i((function(){Object.assign(S.machine.options.actions,b)}),[b]),i((function(){Object.assign(S.machine.options.services,g)}),[g]),function(t){var n=e.useRef([]),u=e.useRef([]);i((function(){var e=t.subscribe((function(t){var e,i;if(t.actions.length){var f=c(a(t.actions.filter((function(t){return"function"==typeof t.exec&&"__effect"in t.exec})),(function(t){return t.exec.__effect===r.Effect})),2),s=f[0],l=f[1];(e=n.current).push.apply(e,o(s.map((function(e){return[e,t]})))),(i=u.current).push.apply(i,o(l.map((function(e){return[e,t]}))))}}));return function(){e.unsubscribe()}}),[]),i((function(){for(;u.current.length;){var t=c(u.current.shift(),2);s(t[0],t[1])}})),e.useEffect((function(){for(;n.current.length;){var t=c(n.current.shift(),2);s(t[0],t[1])}}))}(S),S}function v(t,e){var n=function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return function(){return t.apply(void 0,o(e))}};return Object.defineProperties(n,{name:{value:"effect:"+t.name},__effect:{value:e}}),n}function d(t){return"state"in t}var p=function(){};function y(t,n){void 0===n&&(n=function(t){return d(t)?t.state:void 0});var r=e.useRef(t),u=e.useRef([]),o=c(e.useState((function(){return n(t)})),2),a=o[0],s=o[1],l=f((function(){return function(t){var e=r.current;(function(t){return"deferred"in t})(e)&&e.deferred?u.current.push(t):e.send(t)}}));return i((function(){r.current=t,s(n(t));for(var e=t.subscribe({next:function(t){return s(t)},error:p,complete:p});u.current.length>0;){var c=u.current.shift();t.send(c)}return function(){e.unsubscribe()}}),[t]),[a,l]}function b(t){return 0!==("status"in t?t.status:t._status)?t.state:t.machine.initialState}var h=function(t,e){return t===e},g=function(t){return"state"in(e=t)&&"machine"in e?b(t):d(t)?t.state:void 0;var e};t.asEffect=function(t){return v(t,r.Effect)},t.asLayoutEffect=function(t){return v(t,r.LayoutEffect)},t.useActor=y,t.useInterpret=l,t.useMachine=function(t,r){void 0===r&&(r={});var u=e.useCallback((function(t){var e=void 0===t.changed&&Object.keys(t.children).length;(t.changed||e)&&a(t)}),[]),o=l(t,r,u),i=c(e.useState((function(){var t=o.machine.initialState;return r.state?n.State.create(r.state):t})),2),f=i[0],a=i[1];return[f,o.send,o]},t.useSelector=function(t,n,r,u){void 0===r&&(r=h),void 0===u&&(u=g);var o=c(e.useState((function(){return n(u(t))})),2),i=o[0],f=o[1],a=e.useRef(i);return e.useEffect((function(){var e=function(t){r(a.current,t)||(f(t),a.current=t)},c=n(u(t));e(c);var o=t.subscribe((function(t){var r=n(t);e(r)}));return function(){return o.unsubscribe()}}),[n,r]),i},t.useService=function(t){return[c(y(t,b),1)[0],t.send]},Object.defineProperty(t,"__esModule",{value:!0})})); |
import { EventObject, StateMachine, State, Interpreter, InterpreterOptions, MachineOptions, StateConfig, Typestate, ActionFunction } from 'xstate'; | ||
import { MaybeLazy, ReactActionFunction, ReactActionObject } from './types'; | ||
import { MaybeLazy, ReactActionFunction } from './types'; | ||
export declare function asEffect<TContext, TEvent extends EventObject>(exec: ActionFunction<TContext, TEvent>): ReactActionFunction<TContext, TEvent>; | ||
export declare function asLayoutEffect<TContext, TEvent extends EventObject>(exec: ActionFunction<TContext, TEvent>): ReactActionFunction<TContext, TEvent>; | ||
export declare type ActionStateTuple<TContext, TEvent extends EventObject> = [ | ||
ReactActionObject<TContext, TEvent>, | ||
State<TContext, TEvent, any, any> | ||
]; | ||
export declare function executeEffect<TContext, TEvent extends EventObject>(action: ReactActionObject<TContext, TEvent>, state: State<TContext, TEvent, any, any>): void; | ||
export interface UseMachineOptions<TContext, TEvent extends EventObject> { | ||
@@ -11,0 +6,0 @@ /** |
@@ -48,11 +48,2 @@ var __read = (this && this.__read) || function (o, n) { | ||
} | ||
export function executeEffect(action, state) { | ||
var exec = action.exec; | ||
var originalExec = exec(state.context, state._event.data, { | ||
action: action, | ||
state: state, | ||
_event: state._event | ||
}); | ||
originalExec(); | ||
} | ||
export function useMachine(getMachine, options) { | ||
@@ -59,0 +50,0 @@ if (options === void 0) { options = {}; } |
@@ -25,3 +25,11 @@ var __read = (this && this.__read) || function (o, n) { | ||
import { partition } from './utils'; | ||
import { executeEffect } from './useMachine'; | ||
function executeEffect(action, state) { | ||
var exec = action.exec; | ||
var originalExec = exec(state.context, state._event.data, { | ||
action: action, | ||
state: state, | ||
_event: state._event | ||
}); | ||
originalExec(); | ||
} | ||
export function useReactEffectActions(service) { | ||
@@ -28,0 +36,0 @@ var effectActionsRef = useRef([]); |
import { EventObject, StateMachine, State, Interpreter, InterpreterOptions, MachineOptions, StateConfig, Typestate, ActionFunction } from 'xstate'; | ||
import { MaybeLazy, ReactActionFunction, ReactActionObject } from './types'; | ||
import { MaybeLazy, ReactActionFunction } from './types'; | ||
export declare function asEffect<TContext, TEvent extends EventObject>(exec: ActionFunction<TContext, TEvent>): ReactActionFunction<TContext, TEvent>; | ||
export declare function asLayoutEffect<TContext, TEvent extends EventObject>(exec: ActionFunction<TContext, TEvent>): ReactActionFunction<TContext, TEvent>; | ||
export declare type ActionStateTuple<TContext, TEvent extends EventObject> = [ | ||
ReactActionObject<TContext, TEvent>, | ||
State<TContext, TEvent, any, any> | ||
]; | ||
export declare function executeEffect<TContext, TEvent extends EventObject>(action: ReactActionObject<TContext, TEvent>, state: State<TContext, TEvent, any, any>): void; | ||
export interface UseMachineOptions<TContext, TEvent extends EventObject> { | ||
@@ -11,0 +6,0 @@ /** |
@@ -23,3 +23,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.useMachine = exports.executeEffect = exports.asLayoutEffect = exports.asEffect = void 0; | ||
exports.useMachine = exports.asLayoutEffect = exports.asEffect = void 0; | ||
var react_1 = require("react"); | ||
@@ -54,12 +54,2 @@ var xstate_1 = require("xstate"); | ||
exports.asLayoutEffect = asLayoutEffect; | ||
function executeEffect(action, state) { | ||
var exec = action.exec; | ||
var originalExec = exec(state.context, state._event.data, { | ||
action: action, | ||
state: state, | ||
_event: state._event | ||
}); | ||
originalExec(); | ||
} | ||
exports.executeEffect = executeEffect; | ||
function useMachine(getMachine, options) { | ||
@@ -66,0 +56,0 @@ if (options === void 0) { options = {}; } |
@@ -28,3 +28,11 @@ "use strict"; | ||
var utils_1 = require("./utils"); | ||
var useMachine_1 = require("./useMachine"); | ||
function executeEffect(action, state) { | ||
var exec = action.exec; | ||
var originalExec = exec(state.context, state._event.data, { | ||
action: action, | ||
state: state, | ||
_event: state._event | ||
}); | ||
originalExec(); | ||
} | ||
function useReactEffectActions(service) { | ||
@@ -58,3 +66,3 @@ var effectActionsRef = react_1.useRef([]); | ||
var _a = __read(layoutEffectActionsRef.current.shift(), 2), layoutEffectAction = _a[0], effectState = _a[1]; | ||
useMachine_1.executeEffect(layoutEffectAction, effectState); | ||
executeEffect(layoutEffectAction, effectState); | ||
} | ||
@@ -65,3 +73,3 @@ }); // https://github.com/davidkpiano/xstate/pull/1202#discussion_r429677773 | ||
var _a = __read(effectActionsRef.current.shift(), 2), effectAction = _a[0], effectState = _a[1]; | ||
useMachine_1.executeEffect(effectAction, effectState); | ||
executeEffect(effectAction, effectState); | ||
} | ||
@@ -68,0 +76,0 @@ }); |
{ | ||
"name": "@xstate/react", | ||
"version": "1.3.2", | ||
"version": "1.3.3", | ||
"description": "XState tools for React", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
100596
1484