react-transition-state 1.2.0-alpha.4 → 2.0.0-alpha.1
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/dist/cjs/index.js +40 -36
- package/dist/es/hooks/useTransition.js +16 -13
- package/dist/es/hooks/useTransitionMap.js +17 -17
- package/dist/es/hooks/utils.js +10 -9
- package/package.json +4 -3
- package/types/index.d.ts +10 -9
package/dist/cjs/index.js
CHANGED
|
@@ -11,20 +11,21 @@ var PRE_EXIT = 3;
|
|
|
11
11
|
var EXITING = 4;
|
|
12
12
|
var EXITED = 5;
|
|
13
13
|
var UNMOUNTED = 6;
|
|
14
|
-
var
|
|
15
|
-
var
|
|
14
|
+
var STATUS = ['preEnter', 'entering', 'entered', 'preExit', 'exiting', 'exited', 'unmounted'];
|
|
15
|
+
var getState = function getState(_status) {
|
|
16
16
|
return {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
isEnter:
|
|
20
|
-
isMounted:
|
|
17
|
+
_status: _status,
|
|
18
|
+
status: STATUS[_status],
|
|
19
|
+
isEnter: _status < PRE_EXIT,
|
|
20
|
+
isMounted: _status !== UNMOUNTED,
|
|
21
|
+
isResolved: _status === ENTERED || _status > EXITING
|
|
21
22
|
};
|
|
22
23
|
};
|
|
23
24
|
var startOrEnd = function startOrEnd(unmounted) {
|
|
24
25
|
return unmounted ? UNMOUNTED : EXITED;
|
|
25
26
|
};
|
|
26
|
-
var
|
|
27
|
-
switch (
|
|
27
|
+
var getEndStatus = function getEndStatus(status, unmountOnExit) {
|
|
28
|
+
switch (status) {
|
|
28
29
|
case ENTERING:
|
|
29
30
|
case PRE_ENTER:
|
|
30
31
|
return ENTERED;
|
|
@@ -38,12 +39,13 @@ var getTimeout = function getTimeout(timeout) {
|
|
|
38
39
|
return typeof timeout === 'object' ? [timeout.enter, timeout.exit] : [timeout, timeout];
|
|
39
40
|
};
|
|
40
41
|
|
|
41
|
-
var updateState$1 = function updateState(
|
|
42
|
+
var updateState$1 = function updateState(status, setState, latestState, timeoutId, onChange) {
|
|
42
43
|
clearTimeout(timeoutId.current);
|
|
44
|
+
var state = getState(status);
|
|
43
45
|
setState(state);
|
|
44
46
|
latestState.current = state;
|
|
45
47
|
onChange && onChange({
|
|
46
|
-
|
|
48
|
+
current: state
|
|
47
49
|
});
|
|
48
50
|
};
|
|
49
51
|
|
|
@@ -59,9 +61,11 @@ var useTransition = function useTransition(_temp) {
|
|
|
59
61
|
initialEntered = _ref.initialEntered,
|
|
60
62
|
mountOnEnter = _ref.mountOnEnter,
|
|
61
63
|
unmountOnExit = _ref.unmountOnExit,
|
|
62
|
-
onChange = _ref.
|
|
64
|
+
onChange = _ref.onStateChange;
|
|
63
65
|
|
|
64
|
-
var _useState = react.useState(
|
|
66
|
+
var _useState = react.useState(function () {
|
|
67
|
+
return getState(initialEntered ? ENTERED : startOrEnd(mountOnEnter));
|
|
68
|
+
}),
|
|
65
69
|
state = _useState[0],
|
|
66
70
|
setState = _useState[1];
|
|
67
71
|
|
|
@@ -73,14 +77,14 @@ var useTransition = function useTransition(_temp) {
|
|
|
73
77
|
exitTimeout = _getTimeout[1];
|
|
74
78
|
|
|
75
79
|
var endTransition = react.useCallback(function () {
|
|
76
|
-
var
|
|
77
|
-
|
|
80
|
+
var status = getEndStatus(latestState.current._status, unmountOnExit);
|
|
81
|
+
status && updateState$1(status, setState, latestState, timeoutId, onChange);
|
|
78
82
|
}, [onChange, unmountOnExit]);
|
|
79
83
|
var toggle = react.useCallback(function (toEnter) {
|
|
80
|
-
var transitState = function transitState(
|
|
81
|
-
updateState$1(
|
|
84
|
+
var transitState = function transitState(status) {
|
|
85
|
+
updateState$1(status, setState, latestState, timeoutId, onChange);
|
|
82
86
|
|
|
83
|
-
switch (
|
|
87
|
+
switch (status) {
|
|
84
88
|
case ENTERING:
|
|
85
89
|
if (enterTimeout >= 0) timeoutId.current = setTimeout(endTransition, enterTimeout);
|
|
86
90
|
break;
|
|
@@ -92,13 +96,13 @@ var useTransition = function useTransition(_temp) {
|
|
|
92
96
|
case PRE_ENTER:
|
|
93
97
|
case PRE_EXIT:
|
|
94
98
|
timeoutId.current = setTimeout(function () {
|
|
95
|
-
return transitState(
|
|
99
|
+
return transitState(status + 1);
|
|
96
100
|
}, 0);
|
|
97
101
|
break;
|
|
98
102
|
}
|
|
99
103
|
};
|
|
100
104
|
|
|
101
|
-
var enterStage = latestState.current <= ENTERED;
|
|
105
|
+
var enterStage = latestState.current._status <= ENTERED;
|
|
102
106
|
if (typeof toEnter !== 'boolean') toEnter = !enterStage;
|
|
103
107
|
|
|
104
108
|
if (toEnter) {
|
|
@@ -112,7 +116,7 @@ var useTransition = function useTransition(_temp) {
|
|
|
112
116
|
return clearTimeout(timeoutId.current);
|
|
113
117
|
};
|
|
114
118
|
}, []);
|
|
115
|
-
return [
|
|
119
|
+
return [state, toggle, endTransition];
|
|
116
120
|
};
|
|
117
121
|
|
|
118
122
|
var initialStateMap = new Map();
|
|
@@ -120,13 +124,13 @@ var initialConfigMap = new Map();
|
|
|
120
124
|
|
|
121
125
|
var updateState = function updateState(_ref) {
|
|
122
126
|
var key = _ref.key,
|
|
123
|
-
|
|
127
|
+
status = _ref.status,
|
|
124
128
|
setStateMap = _ref.setStateMap,
|
|
125
129
|
latestStateMap = _ref.latestStateMap,
|
|
126
130
|
timeoutId = _ref.timeoutId,
|
|
127
131
|
onChange = _ref.onChange;
|
|
128
132
|
clearTimeout(timeoutId);
|
|
129
|
-
var state =
|
|
133
|
+
var state = getState(status);
|
|
130
134
|
var stateMap = new Map(latestStateMap.current);
|
|
131
135
|
stateMap.set(key, state);
|
|
132
136
|
setStateMap(stateMap);
|
|
@@ -139,7 +143,7 @@ var updateState = function updateState(_ref) {
|
|
|
139
143
|
|
|
140
144
|
var useTransitionMap = function useTransitionMap(_temp) {
|
|
141
145
|
var _ref2 = _temp === void 0 ? {} : _temp,
|
|
142
|
-
|
|
146
|
+
allowMultiple = _ref2.allowMultiple,
|
|
143
147
|
_ref2$enter = _ref2.enter,
|
|
144
148
|
enter = _ref2$enter === void 0 ? true : _ref2$enter,
|
|
145
149
|
_ref2$exit = _ref2.exit,
|
|
@@ -150,7 +154,7 @@ var useTransitionMap = function useTransitionMap(_temp) {
|
|
|
150
154
|
initialEntered = _ref2.initialEntered,
|
|
151
155
|
mountOnEnter = _ref2.mountOnEnter,
|
|
152
156
|
unmountOnExit = _ref2.unmountOnExit,
|
|
153
|
-
onChange = _ref2.
|
|
157
|
+
onChange = _ref2.onStateChange;
|
|
154
158
|
|
|
155
159
|
var _useState = react.useState(initialStateMap),
|
|
156
160
|
stateMap = _useState[0],
|
|
@@ -168,10 +172,10 @@ var useTransitionMap = function useTransitionMap(_temp) {
|
|
|
168
172
|
_ref3$initialEntered = _ref3.initialEntered,
|
|
169
173
|
_initialEntered = _ref3$initialEntered === void 0 ? initialEntered : _ref3$initialEntered;
|
|
170
174
|
|
|
171
|
-
var
|
|
175
|
+
var status = _initialEntered ? ENTERED : startOrEnd(mountOnEnter);
|
|
172
176
|
updateState({
|
|
173
177
|
key: key,
|
|
174
|
-
|
|
178
|
+
status: status,
|
|
175
179
|
setStateMap: setStateMap,
|
|
176
180
|
latestStateMap: latestStateMap
|
|
177
181
|
});
|
|
@@ -200,10 +204,10 @@ var useTransitionMap = function useTransitionMap(_temp) {
|
|
|
200
204
|
var _configMap$current$ge = configMap.current.get(key),
|
|
201
205
|
timeoutId = _configMap$current$ge.timeoutId;
|
|
202
206
|
|
|
203
|
-
var
|
|
204
|
-
|
|
207
|
+
var status = getEndStatus(stateObj._status, unmountOnExit);
|
|
208
|
+
status && updateState({
|
|
205
209
|
key: key,
|
|
206
|
-
|
|
210
|
+
status: status,
|
|
207
211
|
setStateMap: setStateMap,
|
|
208
212
|
latestStateMap: latestStateMap,
|
|
209
213
|
timeoutId: timeoutId,
|
|
@@ -220,17 +224,17 @@ var useTransitionMap = function useTransitionMap(_temp) {
|
|
|
220
224
|
|
|
221
225
|
var config = configMap.current.get(key);
|
|
222
226
|
|
|
223
|
-
var transitState = function transitState(
|
|
227
|
+
var transitState = function transitState(status) {
|
|
224
228
|
updateState({
|
|
225
229
|
key: key,
|
|
226
|
-
|
|
230
|
+
status: status,
|
|
227
231
|
setStateMap: setStateMap,
|
|
228
232
|
latestStateMap: latestStateMap,
|
|
229
233
|
timeoutId: config.timeoutId,
|
|
230
234
|
onChange: onChange
|
|
231
235
|
});
|
|
232
236
|
|
|
233
|
-
switch (
|
|
237
|
+
switch (status) {
|
|
234
238
|
case ENTERING:
|
|
235
239
|
if (enterTimeout >= 0) config.timeoutId = setTimeout(function () {
|
|
236
240
|
return endTransition(key);
|
|
@@ -246,19 +250,19 @@ var useTransitionMap = function useTransitionMap(_temp) {
|
|
|
246
250
|
case PRE_ENTER:
|
|
247
251
|
case PRE_EXIT:
|
|
248
252
|
config.timeoutId = setTimeout(function () {
|
|
249
|
-
return transitState(
|
|
253
|
+
return transitState(status + 1);
|
|
250
254
|
}, 0);
|
|
251
255
|
break;
|
|
252
256
|
}
|
|
253
257
|
};
|
|
254
258
|
|
|
255
|
-
var enterStage = stateObj.
|
|
259
|
+
var enterStage = stateObj._status <= ENTERED;
|
|
256
260
|
if (typeof toEnter !== 'boolean') toEnter = !enterStage;
|
|
257
261
|
|
|
258
262
|
if (toEnter) {
|
|
259
263
|
if (!enterStage) {
|
|
260
264
|
transitState(enter ? preEnter ? PRE_ENTER : ENTERING : ENTERED);
|
|
261
|
-
|
|
265
|
+
!allowMultiple && latestStateMap.current.forEach(function (_, _key) {
|
|
262
266
|
return _key !== key && toggle(_key, false);
|
|
263
267
|
});
|
|
264
268
|
}
|
|
@@ -267,7 +271,7 @@ var useTransitionMap = function useTransitionMap(_temp) {
|
|
|
267
271
|
transitState(exit ? preExit ? PRE_EXIT : EXITING : startOrEnd(unmountOnExit));
|
|
268
272
|
}
|
|
269
273
|
}
|
|
270
|
-
}, [onChange, endTransition,
|
|
274
|
+
}, [onChange, endTransition, allowMultiple, enter, exit, preEnter, preExit, enterTimeout, exitTimeout, unmountOnExit]);
|
|
271
275
|
return {
|
|
272
276
|
stateMap: stateMap,
|
|
273
277
|
toggle: toggle,
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { useState, useRef, useCallback, useEffect } from 'react';
|
|
2
|
-
import { ENTERED, startOrEnd, getTimeout,
|
|
2
|
+
import { getState, ENTERED, startOrEnd, getTimeout, getEndStatus, PRE_EXIT, EXITING, PRE_ENTER, ENTERING } from './utils.js';
|
|
3
3
|
|
|
4
|
-
var updateState = function updateState(
|
|
4
|
+
var updateState = function updateState(status, setState, latestState, timeoutId, onChange) {
|
|
5
5
|
clearTimeout(timeoutId.current);
|
|
6
|
+
var state = getState(status);
|
|
6
7
|
setState(state);
|
|
7
8
|
latestState.current = state;
|
|
8
9
|
onChange && onChange({
|
|
9
|
-
|
|
10
|
+
current: state
|
|
10
11
|
});
|
|
11
12
|
};
|
|
12
13
|
|
|
@@ -22,9 +23,11 @@ var useTransition = function useTransition(_temp) {
|
|
|
22
23
|
initialEntered = _ref.initialEntered,
|
|
23
24
|
mountOnEnter = _ref.mountOnEnter,
|
|
24
25
|
unmountOnExit = _ref.unmountOnExit,
|
|
25
|
-
onChange = _ref.
|
|
26
|
+
onChange = _ref.onStateChange;
|
|
26
27
|
|
|
27
|
-
var _useState = useState(
|
|
28
|
+
var _useState = useState(function () {
|
|
29
|
+
return getState(initialEntered ? ENTERED : startOrEnd(mountOnEnter));
|
|
30
|
+
}),
|
|
28
31
|
state = _useState[0],
|
|
29
32
|
setState = _useState[1];
|
|
30
33
|
|
|
@@ -36,14 +39,14 @@ var useTransition = function useTransition(_temp) {
|
|
|
36
39
|
exitTimeout = _getTimeout[1];
|
|
37
40
|
|
|
38
41
|
var endTransition = useCallback(function () {
|
|
39
|
-
var
|
|
40
|
-
|
|
42
|
+
var status = getEndStatus(latestState.current._status, unmountOnExit);
|
|
43
|
+
status && updateState(status, setState, latestState, timeoutId, onChange);
|
|
41
44
|
}, [onChange, unmountOnExit]);
|
|
42
45
|
var toggle = useCallback(function (toEnter) {
|
|
43
|
-
var transitState = function transitState(
|
|
44
|
-
updateState(
|
|
46
|
+
var transitState = function transitState(status) {
|
|
47
|
+
updateState(status, setState, latestState, timeoutId, onChange);
|
|
45
48
|
|
|
46
|
-
switch (
|
|
49
|
+
switch (status) {
|
|
47
50
|
case ENTERING:
|
|
48
51
|
if (enterTimeout >= 0) timeoutId.current = setTimeout(endTransition, enterTimeout);
|
|
49
52
|
break;
|
|
@@ -55,13 +58,13 @@ var useTransition = function useTransition(_temp) {
|
|
|
55
58
|
case PRE_ENTER:
|
|
56
59
|
case PRE_EXIT:
|
|
57
60
|
timeoutId.current = setTimeout(function () {
|
|
58
|
-
return transitState(
|
|
61
|
+
return transitState(status + 1);
|
|
59
62
|
}, 0);
|
|
60
63
|
break;
|
|
61
64
|
}
|
|
62
65
|
};
|
|
63
66
|
|
|
64
|
-
var enterStage = latestState.current <= ENTERED;
|
|
67
|
+
var enterStage = latestState.current._status <= ENTERED;
|
|
65
68
|
if (typeof toEnter !== 'boolean') toEnter = !enterStage;
|
|
66
69
|
|
|
67
70
|
if (toEnter) {
|
|
@@ -75,7 +78,7 @@ var useTransition = function useTransition(_temp) {
|
|
|
75
78
|
return clearTimeout(timeoutId.current);
|
|
76
79
|
};
|
|
77
80
|
}, []);
|
|
78
|
-
return [
|
|
81
|
+
return [state, toggle, endTransition];
|
|
79
82
|
};
|
|
80
83
|
|
|
81
84
|
export { useTransition };
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { useState, useRef, useCallback } from 'react';
|
|
2
|
-
import { getTimeout, ENTERED, startOrEnd,
|
|
2
|
+
import { getTimeout, ENTERED, startOrEnd, getEndStatus, PRE_EXIT, EXITING, PRE_ENTER, ENTERING, getState } from './utils.js';
|
|
3
3
|
|
|
4
4
|
var initialStateMap = new Map();
|
|
5
5
|
var initialConfigMap = new Map();
|
|
6
6
|
|
|
7
7
|
var updateState = function updateState(_ref) {
|
|
8
8
|
var key = _ref.key,
|
|
9
|
-
|
|
9
|
+
status = _ref.status,
|
|
10
10
|
setStateMap = _ref.setStateMap,
|
|
11
11
|
latestStateMap = _ref.latestStateMap,
|
|
12
12
|
timeoutId = _ref.timeoutId,
|
|
13
13
|
onChange = _ref.onChange;
|
|
14
14
|
clearTimeout(timeoutId);
|
|
15
|
-
var state =
|
|
15
|
+
var state = getState(status);
|
|
16
16
|
var stateMap = new Map(latestStateMap.current);
|
|
17
17
|
stateMap.set(key, state);
|
|
18
18
|
setStateMap(stateMap);
|
|
@@ -25,7 +25,7 @@ var updateState = function updateState(_ref) {
|
|
|
25
25
|
|
|
26
26
|
var useTransitionMap = function useTransitionMap(_temp) {
|
|
27
27
|
var _ref2 = _temp === void 0 ? {} : _temp,
|
|
28
|
-
|
|
28
|
+
allowMultiple = _ref2.allowMultiple,
|
|
29
29
|
_ref2$enter = _ref2.enter,
|
|
30
30
|
enter = _ref2$enter === void 0 ? true : _ref2$enter,
|
|
31
31
|
_ref2$exit = _ref2.exit,
|
|
@@ -36,7 +36,7 @@ var useTransitionMap = function useTransitionMap(_temp) {
|
|
|
36
36
|
initialEntered = _ref2.initialEntered,
|
|
37
37
|
mountOnEnter = _ref2.mountOnEnter,
|
|
38
38
|
unmountOnExit = _ref2.unmountOnExit,
|
|
39
|
-
onChange = _ref2.
|
|
39
|
+
onChange = _ref2.onStateChange;
|
|
40
40
|
|
|
41
41
|
var _useState = useState(initialStateMap),
|
|
42
42
|
stateMap = _useState[0],
|
|
@@ -54,10 +54,10 @@ var useTransitionMap = function useTransitionMap(_temp) {
|
|
|
54
54
|
_ref3$initialEntered = _ref3.initialEntered,
|
|
55
55
|
_initialEntered = _ref3$initialEntered === void 0 ? initialEntered : _ref3$initialEntered;
|
|
56
56
|
|
|
57
|
-
var
|
|
57
|
+
var status = _initialEntered ? ENTERED : startOrEnd(mountOnEnter);
|
|
58
58
|
updateState({
|
|
59
59
|
key: key,
|
|
60
|
-
|
|
60
|
+
status: status,
|
|
61
61
|
setStateMap: setStateMap,
|
|
62
62
|
latestStateMap: latestStateMap
|
|
63
63
|
});
|
|
@@ -86,10 +86,10 @@ var useTransitionMap = function useTransitionMap(_temp) {
|
|
|
86
86
|
var _configMap$current$ge = configMap.current.get(key),
|
|
87
87
|
timeoutId = _configMap$current$ge.timeoutId;
|
|
88
88
|
|
|
89
|
-
var
|
|
90
|
-
|
|
89
|
+
var status = getEndStatus(stateObj._status, unmountOnExit);
|
|
90
|
+
status && updateState({
|
|
91
91
|
key: key,
|
|
92
|
-
|
|
92
|
+
status: status,
|
|
93
93
|
setStateMap: setStateMap,
|
|
94
94
|
latestStateMap: latestStateMap,
|
|
95
95
|
timeoutId: timeoutId,
|
|
@@ -106,17 +106,17 @@ var useTransitionMap = function useTransitionMap(_temp) {
|
|
|
106
106
|
|
|
107
107
|
var config = configMap.current.get(key);
|
|
108
108
|
|
|
109
|
-
var transitState = function transitState(
|
|
109
|
+
var transitState = function transitState(status) {
|
|
110
110
|
updateState({
|
|
111
111
|
key: key,
|
|
112
|
-
|
|
112
|
+
status: status,
|
|
113
113
|
setStateMap: setStateMap,
|
|
114
114
|
latestStateMap: latestStateMap,
|
|
115
115
|
timeoutId: config.timeoutId,
|
|
116
116
|
onChange: onChange
|
|
117
117
|
});
|
|
118
118
|
|
|
119
|
-
switch (
|
|
119
|
+
switch (status) {
|
|
120
120
|
case ENTERING:
|
|
121
121
|
if (enterTimeout >= 0) config.timeoutId = setTimeout(function () {
|
|
122
122
|
return endTransition(key);
|
|
@@ -132,19 +132,19 @@ var useTransitionMap = function useTransitionMap(_temp) {
|
|
|
132
132
|
case PRE_ENTER:
|
|
133
133
|
case PRE_EXIT:
|
|
134
134
|
config.timeoutId = setTimeout(function () {
|
|
135
|
-
return transitState(
|
|
135
|
+
return transitState(status + 1);
|
|
136
136
|
}, 0);
|
|
137
137
|
break;
|
|
138
138
|
}
|
|
139
139
|
};
|
|
140
140
|
|
|
141
|
-
var enterStage = stateObj.
|
|
141
|
+
var enterStage = stateObj._status <= ENTERED;
|
|
142
142
|
if (typeof toEnter !== 'boolean') toEnter = !enterStage;
|
|
143
143
|
|
|
144
144
|
if (toEnter) {
|
|
145
145
|
if (!enterStage) {
|
|
146
146
|
transitState(enter ? preEnter ? PRE_ENTER : ENTERING : ENTERED);
|
|
147
|
-
|
|
147
|
+
!allowMultiple && latestStateMap.current.forEach(function (_, _key) {
|
|
148
148
|
return _key !== key && toggle(_key, false);
|
|
149
149
|
});
|
|
150
150
|
}
|
|
@@ -153,7 +153,7 @@ var useTransitionMap = function useTransitionMap(_temp) {
|
|
|
153
153
|
transitState(exit ? preExit ? PRE_EXIT : EXITING : startOrEnd(unmountOnExit));
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
|
-
}, [onChange, endTransition,
|
|
156
|
+
}, [onChange, endTransition, allowMultiple, enter, exit, preEnter, preExit, enterTimeout, exitTimeout, unmountOnExit]);
|
|
157
157
|
return {
|
|
158
158
|
stateMap: stateMap,
|
|
159
159
|
toggle: toggle,
|
package/dist/es/hooks/utils.js
CHANGED
|
@@ -5,20 +5,21 @@ var PRE_EXIT = 3;
|
|
|
5
5
|
var EXITING = 4;
|
|
6
6
|
var EXITED = 5;
|
|
7
7
|
var UNMOUNTED = 6;
|
|
8
|
-
var
|
|
9
|
-
var
|
|
8
|
+
var STATUS = ['preEnter', 'entering', 'entered', 'preExit', 'exiting', 'exited', 'unmounted'];
|
|
9
|
+
var getState = function getState(_status) {
|
|
10
10
|
return {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
isEnter:
|
|
14
|
-
isMounted:
|
|
11
|
+
_status: _status,
|
|
12
|
+
status: STATUS[_status],
|
|
13
|
+
isEnter: _status < PRE_EXIT,
|
|
14
|
+
isMounted: _status !== UNMOUNTED,
|
|
15
|
+
isResolved: _status === ENTERED || _status > EXITING
|
|
15
16
|
};
|
|
16
17
|
};
|
|
17
18
|
var startOrEnd = function startOrEnd(unmounted) {
|
|
18
19
|
return unmounted ? UNMOUNTED : EXITED;
|
|
19
20
|
};
|
|
20
|
-
var
|
|
21
|
-
switch (
|
|
21
|
+
var getEndStatus = function getEndStatus(status, unmountOnExit) {
|
|
22
|
+
switch (status) {
|
|
22
23
|
case ENTERING:
|
|
23
24
|
case PRE_ENTER:
|
|
24
25
|
return ENTERED;
|
|
@@ -32,4 +33,4 @@ var getTimeout = function getTimeout(timeout) {
|
|
|
32
33
|
return typeof timeout === 'object' ? [timeout.enter, timeout.exit] : [timeout, timeout];
|
|
33
34
|
};
|
|
34
35
|
|
|
35
|
-
export { ENTERED, ENTERING, EXITED, EXITING, PRE_ENTER, PRE_EXIT,
|
|
36
|
+
export { ENTERED, ENTERING, EXITED, EXITING, PRE_ENTER, PRE_EXIT, STATUS, UNMOUNTED, getEndStatus, getState, getTimeout, startOrEnd };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-transition-state",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Zero dependency
|
|
3
|
+
"version": "2.0.0-alpha.1",
|
|
4
|
+
"description": "Zero dependency React transition state machine.",
|
|
5
5
|
"author": "Zheng Song",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": "szhsin/react-transition-state",
|
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
"transition",
|
|
20
20
|
"animation",
|
|
21
21
|
"component",
|
|
22
|
-
"hook"
|
|
22
|
+
"hook",
|
|
23
|
+
"state machine"
|
|
23
24
|
],
|
|
24
25
|
"scripts": {
|
|
25
26
|
"start": "rollup -c -w",
|
package/types/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type
|
|
1
|
+
export type TransitionStatus =
|
|
2
2
|
| 'preEnter'
|
|
3
3
|
| 'entering'
|
|
4
4
|
| 'entered'
|
|
@@ -7,11 +7,12 @@ export type TransitionState =
|
|
|
7
7
|
| 'exited'
|
|
8
8
|
| 'unmounted';
|
|
9
9
|
|
|
10
|
-
export
|
|
11
|
-
|
|
10
|
+
export type TransitionState = Readonly<{
|
|
11
|
+
status: TransitionStatus;
|
|
12
12
|
isMounted: boolean;
|
|
13
13
|
isEnter: boolean;
|
|
14
|
-
|
|
14
|
+
isResolved: boolean;
|
|
15
|
+
}>;
|
|
15
16
|
|
|
16
17
|
export interface TransitionOptions {
|
|
17
18
|
initialEntered?: boolean;
|
|
@@ -22,22 +23,22 @@ export interface TransitionOptions {
|
|
|
22
23
|
enter?: boolean;
|
|
23
24
|
exit?: boolean;
|
|
24
25
|
timeout?: number | { enter?: number; exit?: number };
|
|
25
|
-
|
|
26
|
+
onStateChange?: (event: { current: TransitionState }) => void;
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
export interface TransitionItemOptions {
|
|
29
30
|
initialEntered?: boolean;
|
|
30
31
|
}
|
|
31
32
|
|
|
32
|
-
export interface TransitionMapOptions<K> extends Omit<TransitionOptions, '
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
export interface TransitionMapOptions<K> extends Omit<TransitionOptions, 'onStateChange'> {
|
|
34
|
+
allowMultiple?: boolean;
|
|
35
|
+
onStateChange?: (event: { key: K; current: TransitionState }) => void;
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
export type TransitionResult = [TransitionState, (toEnter?: boolean) => void, () => void];
|
|
38
39
|
|
|
39
40
|
export interface TransitionMapResult<K> {
|
|
40
|
-
stateMap:
|
|
41
|
+
stateMap: ReadonlyMap<K, TransitionState>;
|
|
41
42
|
toggle: (key: K, toEnter?: boolean) => void;
|
|
42
43
|
endTransition: (key: K) => void;
|
|
43
44
|
setItem: (key: K, options?: TransitionItemOptions) => void;
|