react-transition-state 1.2.0-alpha.1 → 1.2.0-alpha.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.
- package/dist/cjs/index.js +73 -58
- package/dist/es/hooks/useTransition.js +2 -6
- package/dist/es/hooks/useTransitionMap.js +64 -53
- package/dist/es/hooks/utils.js +9 -1
- package/package.json +7 -6
- package/types/index.d.ts +51 -0
- package/dist/index.d.ts +0 -26
package/dist/cjs/index.js
CHANGED
|
@@ -12,6 +12,14 @@ var EXITING = 4;
|
|
|
12
12
|
var EXITED = 5;
|
|
13
13
|
var UNMOUNTED = 6;
|
|
14
14
|
var STATES = ['preEnter', 'entering', 'entered', 'preExit', 'exiting', 'exited', 'unmounted'];
|
|
15
|
+
var getFullState = function getFullState(_state) {
|
|
16
|
+
return {
|
|
17
|
+
_state: _state,
|
|
18
|
+
state: STATES[_state],
|
|
19
|
+
isEnter: _state < PRE_EXIT,
|
|
20
|
+
isMounted: _state !== UNMOUNTED
|
|
21
|
+
};
|
|
22
|
+
};
|
|
15
23
|
var startOrEnd = function startOrEnd(unmounted) {
|
|
16
24
|
return unmounted ? UNMOUNTED : EXITED;
|
|
17
25
|
};
|
|
@@ -94,13 +102,9 @@ var useTransition = function useTransition(_temp) {
|
|
|
94
102
|
if (typeof toEnter !== 'boolean') toEnter = !enterStage;
|
|
95
103
|
|
|
96
104
|
if (toEnter) {
|
|
97
|
-
|
|
98
|
-
transitState(enter ? preEnter ? PRE_ENTER : ENTERING : ENTERED);
|
|
99
|
-
}
|
|
105
|
+
!enterStage && transitState(enter ? preEnter ? PRE_ENTER : ENTERING : ENTERED);
|
|
100
106
|
} else {
|
|
101
|
-
|
|
102
|
-
transitState(exit ? preExit ? PRE_EXIT : EXITING : startOrEnd(unmountOnExit));
|
|
103
|
-
}
|
|
107
|
+
enterStage && transitState(exit ? preExit ? PRE_EXIT : EXITING : startOrEnd(unmountOnExit));
|
|
104
108
|
}
|
|
105
109
|
}, [endTransition, onChange, enter, exit, preEnter, preExit, enterTimeout, exitTimeout, unmountOnExit]);
|
|
106
110
|
react.useEffect(function () {
|
|
@@ -115,119 +119,127 @@ var initialStateMap = new Map();
|
|
|
115
119
|
var initialConfigMap = new Map();
|
|
116
120
|
|
|
117
121
|
var updateState = function updateState(_ref) {
|
|
118
|
-
var
|
|
122
|
+
var key = _ref.key,
|
|
119
123
|
_state = _ref.newState,
|
|
120
124
|
setStateMap = _ref.setStateMap,
|
|
121
125
|
latestStateMap = _ref.latestStateMap,
|
|
122
126
|
timeoutId = _ref.timeoutId,
|
|
123
127
|
onChange = _ref.onChange;
|
|
124
128
|
clearTimeout(timeoutId);
|
|
125
|
-
var state =
|
|
126
|
-
state: STATES[_state],
|
|
127
|
-
_state: _state
|
|
128
|
-
};
|
|
129
|
+
var state = getFullState(_state);
|
|
129
130
|
var stateMap = new Map(latestStateMap.current);
|
|
130
|
-
stateMap.set(
|
|
131
|
+
stateMap.set(key, state);
|
|
131
132
|
setStateMap(stateMap);
|
|
132
133
|
latestStateMap.current = stateMap;
|
|
133
|
-
onChange && onChange(
|
|
134
|
+
onChange && onChange({
|
|
135
|
+
key: key,
|
|
136
|
+
current: state
|
|
137
|
+
});
|
|
134
138
|
};
|
|
135
139
|
|
|
136
|
-
var useTransitionMap = function useTransitionMap() {
|
|
140
|
+
var useTransitionMap = function useTransitionMap(_temp) {
|
|
141
|
+
var _ref2 = _temp === void 0 ? {} : _temp,
|
|
142
|
+
singleEnter = _ref2.singleEnter,
|
|
143
|
+
_ref2$enter = _ref2.enter,
|
|
144
|
+
enter = _ref2$enter === void 0 ? true : _ref2$enter,
|
|
145
|
+
_ref2$exit = _ref2.exit,
|
|
146
|
+
exit = _ref2$exit === void 0 ? true : _ref2$exit,
|
|
147
|
+
preEnter = _ref2.preEnter,
|
|
148
|
+
preExit = _ref2.preExit,
|
|
149
|
+
timeout = _ref2.timeout,
|
|
150
|
+
initialEntered = _ref2.initialEntered,
|
|
151
|
+
mountOnEnter = _ref2.mountOnEnter,
|
|
152
|
+
unmountOnExit = _ref2.unmountOnExit,
|
|
153
|
+
onChange = _ref2.onChange;
|
|
154
|
+
|
|
137
155
|
var _useState = react.useState(initialStateMap),
|
|
138
156
|
stateMap = _useState[0],
|
|
139
157
|
setStateMap = _useState[1];
|
|
140
158
|
|
|
141
159
|
var latestStateMap = react.useRef(stateMap);
|
|
142
160
|
var configMap = react.useRef(initialConfigMap);
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
161
|
+
|
|
162
|
+
var _getTimeout = getTimeout(timeout),
|
|
163
|
+
enterTimeout = _getTimeout[0],
|
|
164
|
+
exitTimeout = _getTimeout[1];
|
|
165
|
+
|
|
166
|
+
var setItem = react.useCallback(function (key, config) {
|
|
167
|
+
var _ref3 = config || {},
|
|
168
|
+
_ref3$initialEntered = _ref3.initialEntered,
|
|
169
|
+
_initialEntered = _ref3$initialEntered === void 0 ? initialEntered : _ref3$initialEntered;
|
|
170
|
+
|
|
171
|
+
var newState = _initialEntered ? ENTERED : startOrEnd(mountOnEnter);
|
|
147
172
|
updateState({
|
|
148
|
-
|
|
173
|
+
key: key,
|
|
149
174
|
newState: newState,
|
|
150
175
|
setStateMap: setStateMap,
|
|
151
176
|
latestStateMap: latestStateMap
|
|
152
177
|
});
|
|
153
|
-
configMap.current.set(
|
|
154
|
-
}, []);
|
|
155
|
-
var
|
|
178
|
+
configMap.current.set(key, {});
|
|
179
|
+
}, [initialEntered, mountOnEnter]);
|
|
180
|
+
var deleteItem = react.useCallback(function (key) {
|
|
156
181
|
var newStateMap = new Map(latestStateMap.current);
|
|
157
182
|
|
|
158
|
-
if (newStateMap.delete(
|
|
183
|
+
if (newStateMap.delete(key)) {
|
|
159
184
|
setStateMap(newStateMap);
|
|
160
185
|
latestStateMap.current = newStateMap;
|
|
161
|
-
configMap.current.delete(
|
|
186
|
+
configMap.current.delete(key);
|
|
187
|
+
return true;
|
|
162
188
|
}
|
|
189
|
+
|
|
190
|
+
return false;
|
|
163
191
|
}, []);
|
|
164
|
-
var endTransition = react.useCallback(function (
|
|
165
|
-
var stateObj = latestStateMap.current.get(
|
|
192
|
+
var endTransition = react.useCallback(function (key) {
|
|
193
|
+
var stateObj = latestStateMap.current.get(key);
|
|
166
194
|
|
|
167
195
|
if (!stateObj) {
|
|
168
|
-
process.env.NODE_ENV !== 'production' && console.error("[React-Transition-State] invalid
|
|
196
|
+
process.env.NODE_ENV !== 'production' && console.error("[React-Transition-State] invalid key: " + key);
|
|
169
197
|
return;
|
|
170
198
|
}
|
|
171
199
|
|
|
172
|
-
var _configMap$current$ge = configMap.current.get(
|
|
173
|
-
timeoutId = _configMap$current$ge.timeoutId
|
|
174
|
-
onChange = _configMap$current$ge.onChange,
|
|
175
|
-
unmountOnExit = _configMap$current$ge.unmountOnExit;
|
|
200
|
+
var _configMap$current$ge = configMap.current.get(key),
|
|
201
|
+
timeoutId = _configMap$current$ge.timeoutId;
|
|
176
202
|
|
|
177
203
|
var newState = getEndState(stateObj._state, unmountOnExit);
|
|
178
204
|
newState && updateState({
|
|
179
|
-
|
|
205
|
+
key: key,
|
|
180
206
|
newState: newState,
|
|
181
207
|
setStateMap: setStateMap,
|
|
182
208
|
latestStateMap: latestStateMap,
|
|
183
209
|
timeoutId: timeoutId,
|
|
184
210
|
onChange: onChange
|
|
185
211
|
});
|
|
186
|
-
}, []);
|
|
187
|
-
var toggle = react.useCallback(function (
|
|
188
|
-
var stateObj = latestStateMap.current.get(
|
|
212
|
+
}, [onChange, unmountOnExit]);
|
|
213
|
+
var toggle = react.useCallback(function (key, toEnter) {
|
|
214
|
+
var stateObj = latestStateMap.current.get(key);
|
|
189
215
|
|
|
190
216
|
if (!stateObj) {
|
|
191
|
-
process.env.NODE_ENV !== 'production' && console.error("[React-Transition-State] invalid
|
|
217
|
+
process.env.NODE_ENV !== 'production' && console.error("[React-Transition-State] invalid key: " + key);
|
|
192
218
|
return;
|
|
193
219
|
}
|
|
194
220
|
|
|
195
|
-
var config = configMap.current.get(
|
|
196
|
-
var _config$enter = config.enter,
|
|
197
|
-
enter = _config$enter === void 0 ? true : _config$enter,
|
|
198
|
-
_config$exit = config.exit,
|
|
199
|
-
exit = _config$exit === void 0 ? true : _config$exit,
|
|
200
|
-
preEnter = config.preEnter,
|
|
201
|
-
preExit = config.preExit,
|
|
202
|
-
timeout = config.timeout,
|
|
203
|
-
unmountOnExit = config.unmountOnExit,
|
|
204
|
-
onChange = config.onChange,
|
|
205
|
-
timeoutId = config.timeoutId;
|
|
221
|
+
var config = configMap.current.get(key);
|
|
206
222
|
|
|
207
223
|
var transitState = function transitState(newState) {
|
|
208
224
|
updateState({
|
|
209
|
-
|
|
225
|
+
key: key,
|
|
210
226
|
newState: newState,
|
|
211
227
|
setStateMap: setStateMap,
|
|
212
228
|
latestStateMap: latestStateMap,
|
|
213
|
-
timeoutId: timeoutId,
|
|
229
|
+
timeoutId: config.timeoutId,
|
|
214
230
|
onChange: onChange
|
|
215
231
|
});
|
|
216
232
|
|
|
217
|
-
var _getTimeout = getTimeout(timeout),
|
|
218
|
-
enterTimeout = _getTimeout[0],
|
|
219
|
-
exitTimeout = _getTimeout[1];
|
|
220
|
-
|
|
221
233
|
switch (newState) {
|
|
222
234
|
case ENTERING:
|
|
223
235
|
if (enterTimeout >= 0) config.timeoutId = setTimeout(function () {
|
|
224
|
-
return endTransition(
|
|
236
|
+
return endTransition(key);
|
|
225
237
|
}, enterTimeout);
|
|
226
238
|
break;
|
|
227
239
|
|
|
228
240
|
case EXITING:
|
|
229
241
|
if (exitTimeout >= 0) config.timeoutId = setTimeout(function () {
|
|
230
|
-
return endTransition(
|
|
242
|
+
return endTransition(key);
|
|
231
243
|
}, exitTimeout);
|
|
232
244
|
break;
|
|
233
245
|
|
|
@@ -246,19 +258,22 @@ var useTransitionMap = function useTransitionMap() {
|
|
|
246
258
|
if (toEnter) {
|
|
247
259
|
if (!enterStage) {
|
|
248
260
|
transitState(enter ? preEnter ? PRE_ENTER : ENTERING : ENTERED);
|
|
261
|
+
singleEnter && latestStateMap.current.forEach(function (_, _key) {
|
|
262
|
+
return _key !== key && toggle(_key, false);
|
|
263
|
+
});
|
|
249
264
|
}
|
|
250
265
|
} else {
|
|
251
266
|
if (enterStage) {
|
|
252
267
|
transitState(exit ? preExit ? PRE_EXIT : EXITING : startOrEnd(unmountOnExit));
|
|
253
268
|
}
|
|
254
269
|
}
|
|
255
|
-
}, [endTransition]);
|
|
270
|
+
}, [onChange, endTransition, singleEnter, enter, exit, preEnter, preExit, enterTimeout, exitTimeout, unmountOnExit]);
|
|
256
271
|
return {
|
|
257
272
|
stateMap: stateMap,
|
|
258
273
|
toggle: toggle,
|
|
259
274
|
endTransition: endTransition,
|
|
260
|
-
|
|
261
|
-
|
|
275
|
+
setItem: setItem,
|
|
276
|
+
deleteItem: deleteItem
|
|
262
277
|
};
|
|
263
278
|
};
|
|
264
279
|
|
|
@@ -65,13 +65,9 @@ var useTransition = function useTransition(_temp) {
|
|
|
65
65
|
if (typeof toEnter !== 'boolean') toEnter = !enterStage;
|
|
66
66
|
|
|
67
67
|
if (toEnter) {
|
|
68
|
-
|
|
69
|
-
transitState(enter ? preEnter ? PRE_ENTER : ENTERING : ENTERED);
|
|
70
|
-
}
|
|
68
|
+
!enterStage && transitState(enter ? preEnter ? PRE_ENTER : ENTERING : ENTERED);
|
|
71
69
|
} else {
|
|
72
|
-
|
|
73
|
-
transitState(exit ? preExit ? PRE_EXIT : EXITING : startOrEnd(unmountOnExit));
|
|
74
|
-
}
|
|
70
|
+
enterStage && transitState(exit ? preExit ? PRE_EXIT : EXITING : startOrEnd(unmountOnExit));
|
|
75
71
|
}
|
|
76
72
|
}, [endTransition, onChange, enter, exit, preEnter, preExit, enterTimeout, exitTimeout, unmountOnExit]);
|
|
77
73
|
useEffect(function () {
|
|
@@ -1,123 +1,131 @@
|
|
|
1
1
|
import { useState, useRef, useCallback } from 'react';
|
|
2
|
-
import { ENTERED, startOrEnd, getEndState, PRE_EXIT, EXITING, PRE_ENTER, ENTERING,
|
|
2
|
+
import { getTimeout, ENTERED, startOrEnd, getEndState, PRE_EXIT, EXITING, PRE_ENTER, ENTERING, getFullState } 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
|
-
var
|
|
8
|
+
var key = _ref.key,
|
|
9
9
|
_state = _ref.newState,
|
|
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 =
|
|
16
|
-
state: STATES[_state],
|
|
17
|
-
_state: _state
|
|
18
|
-
};
|
|
15
|
+
var state = getFullState(_state);
|
|
19
16
|
var stateMap = new Map(latestStateMap.current);
|
|
20
|
-
stateMap.set(
|
|
17
|
+
stateMap.set(key, state);
|
|
21
18
|
setStateMap(stateMap);
|
|
22
19
|
latestStateMap.current = stateMap;
|
|
23
|
-
onChange && onChange(
|
|
20
|
+
onChange && onChange({
|
|
21
|
+
key: key,
|
|
22
|
+
current: state
|
|
23
|
+
});
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
-
var useTransitionMap = function useTransitionMap() {
|
|
26
|
+
var useTransitionMap = function useTransitionMap(_temp) {
|
|
27
|
+
var _ref2 = _temp === void 0 ? {} : _temp,
|
|
28
|
+
singleEnter = _ref2.singleEnter,
|
|
29
|
+
_ref2$enter = _ref2.enter,
|
|
30
|
+
enter = _ref2$enter === void 0 ? true : _ref2$enter,
|
|
31
|
+
_ref2$exit = _ref2.exit,
|
|
32
|
+
exit = _ref2$exit === void 0 ? true : _ref2$exit,
|
|
33
|
+
preEnter = _ref2.preEnter,
|
|
34
|
+
preExit = _ref2.preExit,
|
|
35
|
+
timeout = _ref2.timeout,
|
|
36
|
+
initialEntered = _ref2.initialEntered,
|
|
37
|
+
mountOnEnter = _ref2.mountOnEnter,
|
|
38
|
+
unmountOnExit = _ref2.unmountOnExit,
|
|
39
|
+
onChange = _ref2.onChange;
|
|
40
|
+
|
|
27
41
|
var _useState = useState(initialStateMap),
|
|
28
42
|
stateMap = _useState[0],
|
|
29
43
|
setStateMap = _useState[1];
|
|
30
44
|
|
|
31
45
|
var latestStateMap = useRef(stateMap);
|
|
32
46
|
var configMap = useRef(initialConfigMap);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
47
|
+
|
|
48
|
+
var _getTimeout = getTimeout(timeout),
|
|
49
|
+
enterTimeout = _getTimeout[0],
|
|
50
|
+
exitTimeout = _getTimeout[1];
|
|
51
|
+
|
|
52
|
+
var setItem = useCallback(function (key, config) {
|
|
53
|
+
var _ref3 = config || {},
|
|
54
|
+
_ref3$initialEntered = _ref3.initialEntered,
|
|
55
|
+
_initialEntered = _ref3$initialEntered === void 0 ? initialEntered : _ref3$initialEntered;
|
|
56
|
+
|
|
57
|
+
var newState = _initialEntered ? ENTERED : startOrEnd(mountOnEnter);
|
|
37
58
|
updateState({
|
|
38
|
-
|
|
59
|
+
key: key,
|
|
39
60
|
newState: newState,
|
|
40
61
|
setStateMap: setStateMap,
|
|
41
62
|
latestStateMap: latestStateMap
|
|
42
63
|
});
|
|
43
|
-
configMap.current.set(
|
|
44
|
-
}, []);
|
|
45
|
-
var
|
|
64
|
+
configMap.current.set(key, {});
|
|
65
|
+
}, [initialEntered, mountOnEnter]);
|
|
66
|
+
var deleteItem = useCallback(function (key) {
|
|
46
67
|
var newStateMap = new Map(latestStateMap.current);
|
|
47
68
|
|
|
48
|
-
if (newStateMap.delete(
|
|
69
|
+
if (newStateMap.delete(key)) {
|
|
49
70
|
setStateMap(newStateMap);
|
|
50
71
|
latestStateMap.current = newStateMap;
|
|
51
|
-
configMap.current.delete(
|
|
72
|
+
configMap.current.delete(key);
|
|
73
|
+
return true;
|
|
52
74
|
}
|
|
75
|
+
|
|
76
|
+
return false;
|
|
53
77
|
}, []);
|
|
54
|
-
var endTransition = useCallback(function (
|
|
55
|
-
var stateObj = latestStateMap.current.get(
|
|
78
|
+
var endTransition = useCallback(function (key) {
|
|
79
|
+
var stateObj = latestStateMap.current.get(key);
|
|
56
80
|
|
|
57
81
|
if (!stateObj) {
|
|
58
|
-
process.env.NODE_ENV !== 'production' && console.error("[React-Transition-State] invalid
|
|
82
|
+
process.env.NODE_ENV !== 'production' && console.error("[React-Transition-State] invalid key: " + key);
|
|
59
83
|
return;
|
|
60
84
|
}
|
|
61
85
|
|
|
62
|
-
var _configMap$current$ge = configMap.current.get(
|
|
63
|
-
timeoutId = _configMap$current$ge.timeoutId
|
|
64
|
-
onChange = _configMap$current$ge.onChange,
|
|
65
|
-
unmountOnExit = _configMap$current$ge.unmountOnExit;
|
|
86
|
+
var _configMap$current$ge = configMap.current.get(key),
|
|
87
|
+
timeoutId = _configMap$current$ge.timeoutId;
|
|
66
88
|
|
|
67
89
|
var newState = getEndState(stateObj._state, unmountOnExit);
|
|
68
90
|
newState && updateState({
|
|
69
|
-
|
|
91
|
+
key: key,
|
|
70
92
|
newState: newState,
|
|
71
93
|
setStateMap: setStateMap,
|
|
72
94
|
latestStateMap: latestStateMap,
|
|
73
95
|
timeoutId: timeoutId,
|
|
74
96
|
onChange: onChange
|
|
75
97
|
});
|
|
76
|
-
}, []);
|
|
77
|
-
var toggle = useCallback(function (
|
|
78
|
-
var stateObj = latestStateMap.current.get(
|
|
98
|
+
}, [onChange, unmountOnExit]);
|
|
99
|
+
var toggle = useCallback(function (key, toEnter) {
|
|
100
|
+
var stateObj = latestStateMap.current.get(key);
|
|
79
101
|
|
|
80
102
|
if (!stateObj) {
|
|
81
|
-
process.env.NODE_ENV !== 'production' && console.error("[React-Transition-State] invalid
|
|
103
|
+
process.env.NODE_ENV !== 'production' && console.error("[React-Transition-State] invalid key: " + key);
|
|
82
104
|
return;
|
|
83
105
|
}
|
|
84
106
|
|
|
85
|
-
var config = configMap.current.get(
|
|
86
|
-
var _config$enter = config.enter,
|
|
87
|
-
enter = _config$enter === void 0 ? true : _config$enter,
|
|
88
|
-
_config$exit = config.exit,
|
|
89
|
-
exit = _config$exit === void 0 ? true : _config$exit,
|
|
90
|
-
preEnter = config.preEnter,
|
|
91
|
-
preExit = config.preExit,
|
|
92
|
-
timeout = config.timeout,
|
|
93
|
-
unmountOnExit = config.unmountOnExit,
|
|
94
|
-
onChange = config.onChange,
|
|
95
|
-
timeoutId = config.timeoutId;
|
|
107
|
+
var config = configMap.current.get(key);
|
|
96
108
|
|
|
97
109
|
var transitState = function transitState(newState) {
|
|
98
110
|
updateState({
|
|
99
|
-
|
|
111
|
+
key: key,
|
|
100
112
|
newState: newState,
|
|
101
113
|
setStateMap: setStateMap,
|
|
102
114
|
latestStateMap: latestStateMap,
|
|
103
|
-
timeoutId: timeoutId,
|
|
115
|
+
timeoutId: config.timeoutId,
|
|
104
116
|
onChange: onChange
|
|
105
117
|
});
|
|
106
118
|
|
|
107
|
-
var _getTimeout = getTimeout(timeout),
|
|
108
|
-
enterTimeout = _getTimeout[0],
|
|
109
|
-
exitTimeout = _getTimeout[1];
|
|
110
|
-
|
|
111
119
|
switch (newState) {
|
|
112
120
|
case ENTERING:
|
|
113
121
|
if (enterTimeout >= 0) config.timeoutId = setTimeout(function () {
|
|
114
|
-
return endTransition(
|
|
122
|
+
return endTransition(key);
|
|
115
123
|
}, enterTimeout);
|
|
116
124
|
break;
|
|
117
125
|
|
|
118
126
|
case EXITING:
|
|
119
127
|
if (exitTimeout >= 0) config.timeoutId = setTimeout(function () {
|
|
120
|
-
return endTransition(
|
|
128
|
+
return endTransition(key);
|
|
121
129
|
}, exitTimeout);
|
|
122
130
|
break;
|
|
123
131
|
|
|
@@ -136,19 +144,22 @@ var useTransitionMap = function useTransitionMap() {
|
|
|
136
144
|
if (toEnter) {
|
|
137
145
|
if (!enterStage) {
|
|
138
146
|
transitState(enter ? preEnter ? PRE_ENTER : ENTERING : ENTERED);
|
|
147
|
+
singleEnter && latestStateMap.current.forEach(function (_, _key) {
|
|
148
|
+
return _key !== key && toggle(_key, false);
|
|
149
|
+
});
|
|
139
150
|
}
|
|
140
151
|
} else {
|
|
141
152
|
if (enterStage) {
|
|
142
153
|
transitState(exit ? preExit ? PRE_EXIT : EXITING : startOrEnd(unmountOnExit));
|
|
143
154
|
}
|
|
144
155
|
}
|
|
145
|
-
}, [endTransition]);
|
|
156
|
+
}, [onChange, endTransition, singleEnter, enter, exit, preEnter, preExit, enterTimeout, exitTimeout, unmountOnExit]);
|
|
146
157
|
return {
|
|
147
158
|
stateMap: stateMap,
|
|
148
159
|
toggle: toggle,
|
|
149
160
|
endTransition: endTransition,
|
|
150
|
-
|
|
151
|
-
|
|
161
|
+
setItem: setItem,
|
|
162
|
+
deleteItem: deleteItem
|
|
152
163
|
};
|
|
153
164
|
};
|
|
154
165
|
|
package/dist/es/hooks/utils.js
CHANGED
|
@@ -6,6 +6,14 @@ var EXITING = 4;
|
|
|
6
6
|
var EXITED = 5;
|
|
7
7
|
var UNMOUNTED = 6;
|
|
8
8
|
var STATES = ['preEnter', 'entering', 'entered', 'preExit', 'exiting', 'exited', 'unmounted'];
|
|
9
|
+
var getFullState = function getFullState(_state) {
|
|
10
|
+
return {
|
|
11
|
+
_state: _state,
|
|
12
|
+
state: STATES[_state],
|
|
13
|
+
isEnter: _state < PRE_EXIT,
|
|
14
|
+
isMounted: _state !== UNMOUNTED
|
|
15
|
+
};
|
|
16
|
+
};
|
|
9
17
|
var startOrEnd = function startOrEnd(unmounted) {
|
|
10
18
|
return unmounted ? UNMOUNTED : EXITED;
|
|
11
19
|
};
|
|
@@ -24,4 +32,4 @@ var getTimeout = function getTimeout(timeout) {
|
|
|
24
32
|
return typeof timeout === 'object' ? [timeout.enter, timeout.exit] : [timeout, timeout];
|
|
25
33
|
};
|
|
26
34
|
|
|
27
|
-
export { ENTERED, ENTERING, EXITED, EXITING, PRE_ENTER, PRE_EXIT, STATES, UNMOUNTED, getEndState, getTimeout, startOrEnd };
|
|
35
|
+
export { ENTERED, ENTERING, EXITED, EXITING, PRE_ENTER, PRE_EXIT, STATES, UNMOUNTED, getEndState, getFullState, getTimeout, startOrEnd };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-transition-state",
|
|
3
|
-
"version": "1.2.0-alpha.
|
|
3
|
+
"version": "1.2.0-alpha.4",
|
|
4
4
|
"description": "Zero dependency, 0.7KB react-transition-group alternative.",
|
|
5
5
|
"author": "Zheng Song",
|
|
6
6
|
"license": "MIT",
|
|
@@ -8,10 +8,11 @@
|
|
|
8
8
|
"homepage": "https://szhsin.github.io/react-transition-state/",
|
|
9
9
|
"main": "dist/cjs/index.js",
|
|
10
10
|
"module": "dist/es/index.js",
|
|
11
|
-
"types": "
|
|
11
|
+
"types": "types/index.d.ts",
|
|
12
12
|
"sideEffects": false,
|
|
13
13
|
"files": [
|
|
14
|
-
"dist"
|
|
14
|
+
"dist/",
|
|
15
|
+
"types/*.d.ts"
|
|
15
16
|
],
|
|
16
17
|
"keywords": [
|
|
17
18
|
"react",
|
|
@@ -26,12 +27,12 @@
|
|
|
26
27
|
"bundle": "rollup -c",
|
|
27
28
|
"test": "jest",
|
|
28
29
|
"eg": "npm start --prefix example",
|
|
29
|
-
"
|
|
30
|
-
"types": "npm run dtslint && cp -f types/index.d.ts dist/",
|
|
30
|
+
"types": "dtslint --localTs node_modules/typescript/lib types",
|
|
31
31
|
"tsc": "cd types && tsc",
|
|
32
32
|
"lint": "eslint .",
|
|
33
33
|
"lint:fix": "eslint --fix .",
|
|
34
|
-
"pret": "prettier
|
|
34
|
+
"pret": "prettier -c .",
|
|
35
|
+
"pret:fix": "prettier -w .",
|
|
35
36
|
"build": "run-s clean lint pret bundle types"
|
|
36
37
|
},
|
|
37
38
|
"peerDependencies": {
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export type TransitionState =
|
|
2
|
+
| 'preEnter'
|
|
3
|
+
| 'entering'
|
|
4
|
+
| 'entered'
|
|
5
|
+
| 'preExit'
|
|
6
|
+
| 'exiting'
|
|
7
|
+
| 'exited'
|
|
8
|
+
| 'unmounted';
|
|
9
|
+
|
|
10
|
+
export interface State {
|
|
11
|
+
state: TransitionState;
|
|
12
|
+
isMounted: boolean;
|
|
13
|
+
isEnter: boolean;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface TransitionOptions {
|
|
17
|
+
initialEntered?: boolean;
|
|
18
|
+
mountOnEnter?: boolean;
|
|
19
|
+
unmountOnExit?: boolean;
|
|
20
|
+
preEnter?: boolean;
|
|
21
|
+
preExit?: boolean;
|
|
22
|
+
enter?: boolean;
|
|
23
|
+
exit?: boolean;
|
|
24
|
+
timeout?: number | { enter?: number; exit?: number };
|
|
25
|
+
onChange?: (event: { state: TransitionState }) => void;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface TransitionItemOptions {
|
|
29
|
+
initialEntered?: boolean;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface TransitionMapOptions<K> extends Omit<TransitionOptions, 'onChange'> {
|
|
33
|
+
singleEnter?: boolean;
|
|
34
|
+
onChange?: (event: { key: K; current: State }) => void;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export type TransitionResult = [TransitionState, (toEnter?: boolean) => void, () => void];
|
|
38
|
+
|
|
39
|
+
export interface TransitionMapResult<K> {
|
|
40
|
+
stateMap: Omit<Map<K, State>, 'clear' | 'delete' | 'set'>;
|
|
41
|
+
toggle: (key: K, toEnter?: boolean) => void;
|
|
42
|
+
endTransition: (key: K) => void;
|
|
43
|
+
setItem: (key: K, options?: TransitionItemOptions) => void;
|
|
44
|
+
deleteItem: (key: K) => boolean;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export const useTransition: (options?: TransitionOptions) => TransitionResult;
|
|
48
|
+
|
|
49
|
+
export const useTransitionMap: <K>(options?: TransitionMapOptions<K>) => TransitionMapResult<K>;
|
|
50
|
+
|
|
51
|
+
export default useTransition;
|
package/dist/index.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export type TransitionState =
|
|
2
|
-
| 'preEnter'
|
|
3
|
-
| 'entering'
|
|
4
|
-
| 'entered'
|
|
5
|
-
| 'preExit'
|
|
6
|
-
| 'exiting'
|
|
7
|
-
| 'exited'
|
|
8
|
-
| 'unmounted';
|
|
9
|
-
|
|
10
|
-
export interface TransitionOptions {
|
|
11
|
-
initialEntered?: boolean;
|
|
12
|
-
mountOnEnter?: boolean;
|
|
13
|
-
unmountOnExit?: boolean;
|
|
14
|
-
preEnter?: boolean;
|
|
15
|
-
preExit?: boolean;
|
|
16
|
-
enter?: boolean;
|
|
17
|
-
exit?: boolean;
|
|
18
|
-
timeout?: number | { enter?: number; exit?: number };
|
|
19
|
-
onChange?: (event: { state: TransitionState }) => void;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export const useTransition: (
|
|
23
|
-
options?: TransitionOptions
|
|
24
|
-
) => [TransitionState, (toEnter?: boolean) => void, () => void];
|
|
25
|
-
|
|
26
|
-
export default useTransition;
|