@xstate/react 2.0.0-pr2674-2021926101023 → 3.0.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.
- package/CHANGELOG.md +65 -28
- package/dist/xstate-react-fsm.umd.min.js +41 -15
- package/dist/xstate-react.umd.min.js +34 -23
- package/es/fsm.d.ts +3 -19
- package/es/fsm.js +35 -26
- package/es/index.d.ts +1 -2
- package/es/index.js +1 -2
- package/es/types.d.ts +1 -16
- package/es/types.js +1 -5
- package/es/useActor.js +13 -32
- package/es/useInterpret.d.ts +6 -5
- package/es/useInterpret.js +32 -43
- package/es/useMachine.d.ts +5 -7
- package/es/useMachine.js +39 -44
- package/es/useSelector.js +12 -48
- package/es/useSpawn.js +1 -1
- package/es/utils.d.ts +2 -0
- package/es/utils.js +3 -0
- package/lib/fsm.d.ts +3 -19
- package/lib/fsm.js +36 -27
- package/lib/index.d.ts +1 -2
- package/lib/index.js +1 -5
- package/lib/types.d.ts +1 -16
- package/lib/types.js +0 -6
- package/lib/useActor.js +16 -35
- package/lib/useInterpret.d.ts +6 -5
- package/lib/useInterpret.js +35 -45
- package/lib/useMachine.d.ts +5 -7
- package/lib/useMachine.js +37 -44
- package/lib/useSelector.js +13 -49
- package/lib/useSpawn.js +3 -3
- package/lib/utils.d.ts +2 -0
- package/lib/utils.js +5 -1
- package/package.json +17 -16
- package/dist/xstate-react.cjs.js +0 -16
- package/es/useReactEffectActions.d.ts +0 -3
- package/es/useReactEffectActions.js +0 -72
- package/es/useService.d.ts +0 -16
- package/es/useService.js +0 -36
- package/lib/useReactEffectActions.d.ts +0 -3
- package/lib/useReactEffectActions.js +0 -76
- package/lib/useService.d.ts +0 -16
- package/lib/useService.js +0 -41
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
2
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
3
|
-
if (!m) return o;
|
|
4
|
-
var i = m.call(o), r, ar = [], e;
|
|
5
|
-
try {
|
|
6
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
7
|
-
}
|
|
8
|
-
catch (error) { e = { error: error }; }
|
|
9
|
-
finally {
|
|
10
|
-
try {
|
|
11
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
12
|
-
}
|
|
13
|
-
finally { if (e) throw e.error; }
|
|
14
|
-
}
|
|
15
|
-
return ar;
|
|
16
|
-
};
|
|
17
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
18
|
-
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
19
|
-
to[j] = from[i];
|
|
20
|
-
return to;
|
|
21
|
-
};
|
|
22
|
-
import { useEffect, useRef } from 'react';
|
|
23
|
-
import useIsomorphicLayoutEffect from 'use-isomorphic-layout-effect';
|
|
24
|
-
import { ReactEffectType } from './types';
|
|
25
|
-
import { partition } from './utils';
|
|
26
|
-
function executeEffect(action, state) {
|
|
27
|
-
var exec = action.exec;
|
|
28
|
-
var originalExec = exec(state.context, state._event.data, {
|
|
29
|
-
action: action,
|
|
30
|
-
state: state,
|
|
31
|
-
_event: state._event
|
|
32
|
-
});
|
|
33
|
-
originalExec();
|
|
34
|
-
}
|
|
35
|
-
export function useReactEffectActions(service) {
|
|
36
|
-
var effectActionsRef = useRef([]);
|
|
37
|
-
var layoutEffectActionsRef = useRef([]);
|
|
38
|
-
useIsomorphicLayoutEffect(function () {
|
|
39
|
-
var sub = service.subscribe(function (currentState) {
|
|
40
|
-
var _a, _b;
|
|
41
|
-
if (currentState.actions.length) {
|
|
42
|
-
var reactEffectActions = currentState.actions.filter(function (action) {
|
|
43
|
-
return (typeof action.exec === 'function' &&
|
|
44
|
-
'__effect' in action.exec);
|
|
45
|
-
});
|
|
46
|
-
var _c = __read(partition(reactEffectActions, function (action) {
|
|
47
|
-
return action.exec.__effect === ReactEffectType.Effect;
|
|
48
|
-
}), 2), effectActions = _c[0], layoutEffectActions = _c[1];
|
|
49
|
-
(_a = effectActionsRef.current).push.apply(_a, __spreadArray([], __read(effectActions.map(function (effectAction) { return [effectAction, currentState]; }))));
|
|
50
|
-
(_b = layoutEffectActionsRef.current).push.apply(_b, __spreadArray([], __read(layoutEffectActions.map(function (layoutEffectAction) { return [layoutEffectAction, currentState]; }))));
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
return function () {
|
|
54
|
-
sub.unsubscribe();
|
|
55
|
-
};
|
|
56
|
-
}, []);
|
|
57
|
-
// this is somewhat weird - this should always be flushed within useLayoutEffect
|
|
58
|
-
// but we don't want to receive warnings about useLayoutEffect being used on the server
|
|
59
|
-
// so we have to use `useIsomorphicLayoutEffect` to silence those warnings
|
|
60
|
-
useIsomorphicLayoutEffect(function () {
|
|
61
|
-
while (layoutEffectActionsRef.current.length) {
|
|
62
|
-
var _a = __read(layoutEffectActionsRef.current.shift(), 2), layoutEffectAction = _a[0], effectState = _a[1];
|
|
63
|
-
executeEffect(layoutEffectAction, effectState);
|
|
64
|
-
}
|
|
65
|
-
}); // https://github.com/davidkpiano/xstate/pull/1202#discussion_r429677773
|
|
66
|
-
useEffect(function () {
|
|
67
|
-
while (effectActionsRef.current.length) {
|
|
68
|
-
var _a = __read(effectActionsRef.current.shift(), 2), effectAction = _a[0], effectState = _a[1];
|
|
69
|
-
executeEffect(effectAction, effectState);
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
}
|
package/es/useService.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { EventObject, Interpreter, PayloadSender, State, TypegenConstraint, TypegenDisabled, Typestate } from 'xstate';
|
|
2
|
-
export declare function getServiceSnapshot<TService extends Interpreter<any, any, any, any>>(service: TService): TService['state'];
|
|
3
|
-
/**
|
|
4
|
-
* @deprecated Use `useActor` instead.
|
|
5
|
-
*
|
|
6
|
-
* @param service The interpreted machine
|
|
7
|
-
* @returns A tuple of the current `state` of the service and the service's `send(event)` method
|
|
8
|
-
*/
|
|
9
|
-
export declare function useService<TContext, TEvent extends EventObject, TTypestate extends Typestate<TContext> = {
|
|
10
|
-
value: any;
|
|
11
|
-
context: TContext;
|
|
12
|
-
}, TTypesMeta extends TypegenConstraint = TypegenDisabled>(service: Interpreter<TContext, any, TEvent, TTypestate, TTypesMeta>): [
|
|
13
|
-
State<TContext, TEvent, any, TTypestate, TTypesMeta>,
|
|
14
|
-
PayloadSender<TEvent>
|
|
15
|
-
];
|
|
16
|
-
//# sourceMappingURL=useService.d.ts.map
|
package/es/useService.js
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
2
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
3
|
-
if (!m) return o;
|
|
4
|
-
var i = m.call(o), r, ar = [], e;
|
|
5
|
-
try {
|
|
6
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
7
|
-
}
|
|
8
|
-
catch (error) { e = { error: error }; }
|
|
9
|
-
finally {
|
|
10
|
-
try {
|
|
11
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
12
|
-
}
|
|
13
|
-
finally { if (e) throw e.error; }
|
|
14
|
-
}
|
|
15
|
-
return ar;
|
|
16
|
-
};
|
|
17
|
-
import { useActor } from './useActor';
|
|
18
|
-
export function getServiceSnapshot(service) {
|
|
19
|
-
// TODO: remove compat lines in a new major, replace literal number with InterpreterStatus then as well
|
|
20
|
-
return ('status' in service ? service.status : service._status) !== 0
|
|
21
|
-
? service.state
|
|
22
|
-
: service.machine.initialState;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* @deprecated Use `useActor` instead.
|
|
26
|
-
*
|
|
27
|
-
* @param service The interpreted machine
|
|
28
|
-
* @returns A tuple of the current `state` of the service and the service's `send(event)` method
|
|
29
|
-
*/
|
|
30
|
-
export function useService(service) {
|
|
31
|
-
if (process.env.NODE_ENV !== 'production' && !('machine' in service)) {
|
|
32
|
-
throw new Error("Attempted to use an actor-like object instead of a service in the useService() hook. Please use the useActor() hook instead.");
|
|
33
|
-
}
|
|
34
|
-
var _a = __read(useActor(service), 1), state = _a[0];
|
|
35
|
-
return [state, service.send];
|
|
36
|
-
}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
-
if (!m) return o;
|
|
5
|
-
var i = m.call(o), r, ar = [], e;
|
|
6
|
-
try {
|
|
7
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
-
}
|
|
9
|
-
catch (error) { e = { error: error }; }
|
|
10
|
-
finally {
|
|
11
|
-
try {
|
|
12
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
-
}
|
|
14
|
-
finally { if (e) throw e.error; }
|
|
15
|
-
}
|
|
16
|
-
return ar;
|
|
17
|
-
};
|
|
18
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
19
|
-
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
20
|
-
to[j] = from[i];
|
|
21
|
-
return to;
|
|
22
|
-
};
|
|
23
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
-
exports.useReactEffectActions = void 0;
|
|
25
|
-
var react_1 = require("react");
|
|
26
|
-
var use_isomorphic_layout_effect_1 = require("use-isomorphic-layout-effect");
|
|
27
|
-
var types_1 = require("./types");
|
|
28
|
-
var utils_1 = require("./utils");
|
|
29
|
-
function executeEffect(action, state) {
|
|
30
|
-
var exec = action.exec;
|
|
31
|
-
var originalExec = exec(state.context, state._event.data, {
|
|
32
|
-
action: action,
|
|
33
|
-
state: state,
|
|
34
|
-
_event: state._event
|
|
35
|
-
});
|
|
36
|
-
originalExec();
|
|
37
|
-
}
|
|
38
|
-
function useReactEffectActions(service) {
|
|
39
|
-
var effectActionsRef = react_1.useRef([]);
|
|
40
|
-
var layoutEffectActionsRef = react_1.useRef([]);
|
|
41
|
-
use_isomorphic_layout_effect_1.default(function () {
|
|
42
|
-
var sub = service.subscribe(function (currentState) {
|
|
43
|
-
var _a, _b;
|
|
44
|
-
if (currentState.actions.length) {
|
|
45
|
-
var reactEffectActions = currentState.actions.filter(function (action) {
|
|
46
|
-
return (typeof action.exec === 'function' &&
|
|
47
|
-
'__effect' in action.exec);
|
|
48
|
-
});
|
|
49
|
-
var _c = __read(utils_1.partition(reactEffectActions, function (action) {
|
|
50
|
-
return action.exec.__effect === types_1.ReactEffectType.Effect;
|
|
51
|
-
}), 2), effectActions = _c[0], layoutEffectActions = _c[1];
|
|
52
|
-
(_a = effectActionsRef.current).push.apply(_a, __spreadArray([], __read(effectActions.map(function (effectAction) { return [effectAction, currentState]; }))));
|
|
53
|
-
(_b = layoutEffectActionsRef.current).push.apply(_b, __spreadArray([], __read(layoutEffectActions.map(function (layoutEffectAction) { return [layoutEffectAction, currentState]; }))));
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
return function () {
|
|
57
|
-
sub.unsubscribe();
|
|
58
|
-
};
|
|
59
|
-
}, []);
|
|
60
|
-
// this is somewhat weird - this should always be flushed within useLayoutEffect
|
|
61
|
-
// but we don't want to receive warnings about useLayoutEffect being used on the server
|
|
62
|
-
// so we have to use `useIsomorphicLayoutEffect` to silence those warnings
|
|
63
|
-
use_isomorphic_layout_effect_1.default(function () {
|
|
64
|
-
while (layoutEffectActionsRef.current.length) {
|
|
65
|
-
var _a = __read(layoutEffectActionsRef.current.shift(), 2), layoutEffectAction = _a[0], effectState = _a[1];
|
|
66
|
-
executeEffect(layoutEffectAction, effectState);
|
|
67
|
-
}
|
|
68
|
-
}); // https://github.com/davidkpiano/xstate/pull/1202#discussion_r429677773
|
|
69
|
-
react_1.useEffect(function () {
|
|
70
|
-
while (effectActionsRef.current.length) {
|
|
71
|
-
var _a = __read(effectActionsRef.current.shift(), 2), effectAction = _a[0], effectState = _a[1];
|
|
72
|
-
executeEffect(effectAction, effectState);
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
exports.useReactEffectActions = useReactEffectActions;
|
package/lib/useService.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { EventObject, Interpreter, PayloadSender, State, TypegenConstraint, TypegenDisabled, Typestate } from 'xstate';
|
|
2
|
-
export declare function getServiceSnapshot<TService extends Interpreter<any, any, any, any>>(service: TService): TService['state'];
|
|
3
|
-
/**
|
|
4
|
-
* @deprecated Use `useActor` instead.
|
|
5
|
-
*
|
|
6
|
-
* @param service The interpreted machine
|
|
7
|
-
* @returns A tuple of the current `state` of the service and the service's `send(event)` method
|
|
8
|
-
*/
|
|
9
|
-
export declare function useService<TContext, TEvent extends EventObject, TTypestate extends Typestate<TContext> = {
|
|
10
|
-
value: any;
|
|
11
|
-
context: TContext;
|
|
12
|
-
}, TTypesMeta extends TypegenConstraint = TypegenDisabled>(service: Interpreter<TContext, any, TEvent, TTypestate, TTypesMeta>): [
|
|
13
|
-
State<TContext, TEvent, any, TTypestate, TTypesMeta>,
|
|
14
|
-
PayloadSender<TEvent>
|
|
15
|
-
];
|
|
16
|
-
//# sourceMappingURL=useService.d.ts.map
|
package/lib/useService.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
-
if (!m) return o;
|
|
5
|
-
var i = m.call(o), r, ar = [], e;
|
|
6
|
-
try {
|
|
7
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
-
}
|
|
9
|
-
catch (error) { e = { error: error }; }
|
|
10
|
-
finally {
|
|
11
|
-
try {
|
|
12
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
-
}
|
|
14
|
-
finally { if (e) throw e.error; }
|
|
15
|
-
}
|
|
16
|
-
return ar;
|
|
17
|
-
};
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.useService = exports.getServiceSnapshot = void 0;
|
|
20
|
-
var useActor_1 = require("./useActor");
|
|
21
|
-
function getServiceSnapshot(service) {
|
|
22
|
-
// TODO: remove compat lines in a new major, replace literal number with InterpreterStatus then as well
|
|
23
|
-
return ('status' in service ? service.status : service._status) !== 0
|
|
24
|
-
? service.state
|
|
25
|
-
: service.machine.initialState;
|
|
26
|
-
}
|
|
27
|
-
exports.getServiceSnapshot = getServiceSnapshot;
|
|
28
|
-
/**
|
|
29
|
-
* @deprecated Use `useActor` instead.
|
|
30
|
-
*
|
|
31
|
-
* @param service The interpreted machine
|
|
32
|
-
* @returns A tuple of the current `state` of the service and the service's `send(event)` method
|
|
33
|
-
*/
|
|
34
|
-
function useService(service) {
|
|
35
|
-
if (process.env.NODE_ENV !== 'production' && !('machine' in service)) {
|
|
36
|
-
throw new Error("Attempted to use an actor-like object instead of a service in the useService() hook. Please use the useActor() hook instead.");
|
|
37
|
-
}
|
|
38
|
-
var _a = __read(useActor_1.useActor(service), 1), state = _a[0];
|
|
39
|
-
return [state, service.send];
|
|
40
|
-
}
|
|
41
|
-
exports.useService = useService;
|