react-transition-state 1.2.0-alpha.2 → 1.2.0-alpha.5

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 CHANGED
@@ -17,7 +17,8 @@ var getFullState = function getFullState(_state) {
17
17
  _state: _state,
18
18
  state: STATES[_state],
19
19
  isEnter: _state < PRE_EXIT,
20
- isMounted: _state !== UNMOUNTED
20
+ isMounted: _state !== UNMOUNTED,
21
+ isResolved: _state === ENTERED || _state > EXITING
21
22
  };
22
23
  };
23
24
  var startOrEnd = function startOrEnd(unmounted) {
@@ -102,13 +103,9 @@ var useTransition = function useTransition(_temp) {
102
103
  if (typeof toEnter !== 'boolean') toEnter = !enterStage;
103
104
 
104
105
  if (toEnter) {
105
- if (!enterStage) {
106
- transitState(enter ? preEnter ? PRE_ENTER : ENTERING : ENTERED);
107
- }
106
+ !enterStage && transitState(enter ? preEnter ? PRE_ENTER : ENTERING : ENTERED);
108
107
  } else {
109
- if (enterStage) {
110
- transitState(exit ? preExit ? PRE_EXIT : EXITING : startOrEnd(unmountOnExit));
111
- }
108
+ enterStage && transitState(exit ? preExit ? PRE_EXIT : EXITING : startOrEnd(unmountOnExit));
112
109
  }
113
110
  }, [endTransition, onChange, enter, exit, preEnter, preExit, enterTimeout, exitTimeout, unmountOnExit]);
114
111
  react.useEffect(function () {
@@ -119,24 +116,6 @@ var useTransition = function useTransition(_temp) {
119
116
  return [STATES[state], toggle, endTransition];
120
117
  };
121
118
 
122
- function _extends() {
123
- _extends = Object.assign || function (target) {
124
- for (var i = 1; i < arguments.length; i++) {
125
- var source = arguments[i];
126
-
127
- for (var key in source) {
128
- if (Object.prototype.hasOwnProperty.call(source, key)) {
129
- target[key] = source[key];
130
- }
131
- }
132
- }
133
-
134
- return target;
135
- };
136
-
137
- return _extends.apply(this, arguments);
138
- }
139
-
140
119
  var initialStateMap = new Map();
141
120
  var initialConfigMap = new Map();
142
121
 
@@ -153,14 +132,26 @@ var updateState = function updateState(_ref) {
153
132
  stateMap.set(key, state);
154
133
  setStateMap(stateMap);
155
134
  latestStateMap.current = stateMap;
156
- onChange && onChange(_extends({
157
- key: key
158
- }, state));
135
+ onChange && onChange({
136
+ key: key,
137
+ current: state
138
+ });
159
139
  };
160
140
 
161
141
  var useTransitionMap = function useTransitionMap(_temp) {
162
142
  var _ref2 = _temp === void 0 ? {} : _temp,
163
- singleEnter = _ref2.singleEnter;
143
+ singleEnter = _ref2.singleEnter,
144
+ _ref2$enter = _ref2.enter,
145
+ enter = _ref2$enter === void 0 ? true : _ref2$enter,
146
+ _ref2$exit = _ref2.exit,
147
+ exit = _ref2$exit === void 0 ? true : _ref2$exit,
148
+ preEnter = _ref2.preEnter,
149
+ preExit = _ref2.preExit,
150
+ timeout = _ref2.timeout,
151
+ initialEntered = _ref2.initialEntered,
152
+ mountOnEnter = _ref2.mountOnEnter,
153
+ unmountOnExit = _ref2.unmountOnExit,
154
+ onChange = _ref2.onStateChange;
164
155
 
165
156
  var _useState = react.useState(initialStateMap),
166
157
  stateMap = _useState[0],
@@ -168,23 +159,25 @@ var useTransitionMap = function useTransitionMap(_temp) {
168
159
 
169
160
  var latestStateMap = react.useRef(stateMap);
170
161
  var configMap = react.useRef(initialConfigMap);
162
+
163
+ var _getTimeout = getTimeout(timeout),
164
+ enterTimeout = _getTimeout[0],
165
+ exitTimeout = _getTimeout[1];
166
+
171
167
  var setItem = react.useCallback(function (key, config) {
172
- if (config === void 0) {
173
- config = {};
174
- }
168
+ var _ref3 = config || {},
169
+ _ref3$initialEntered = _ref3.initialEntered,
170
+ _initialEntered = _ref3$initialEntered === void 0 ? initialEntered : _ref3$initialEntered;
175
171
 
176
- var _config = config,
177
- initialEntered = _config.initialEntered,
178
- mountOnEnter = _config.mountOnEnter;
179
- var newState = initialEntered ? ENTERED : startOrEnd(mountOnEnter);
172
+ var newState = _initialEntered ? ENTERED : startOrEnd(mountOnEnter);
180
173
  updateState({
181
174
  key: key,
182
175
  newState: newState,
183
176
  setStateMap: setStateMap,
184
177
  latestStateMap: latestStateMap
185
178
  });
186
- configMap.current.set(key, _extends({}, config));
187
- }, []);
179
+ configMap.current.set(key, {});
180
+ }, [initialEntered, mountOnEnter]);
188
181
  var deleteItem = react.useCallback(function (key) {
189
182
  var newStateMap = new Map(latestStateMap.current);
190
183
 
@@ -206,9 +199,7 @@ var useTransitionMap = function useTransitionMap(_temp) {
206
199
  }
207
200
 
208
201
  var _configMap$current$ge = configMap.current.get(key),
209
- timeoutId = _configMap$current$ge.timeoutId,
210
- onChange = _configMap$current$ge.onChange,
211
- unmountOnExit = _configMap$current$ge.unmountOnExit;
202
+ timeoutId = _configMap$current$ge.timeoutId;
212
203
 
213
204
  var newState = getEndState(stateObj._state, unmountOnExit);
214
205
  newState && updateState({
@@ -219,7 +210,7 @@ var useTransitionMap = function useTransitionMap(_temp) {
219
210
  timeoutId: timeoutId,
220
211
  onChange: onChange
221
212
  });
222
- }, []);
213
+ }, [onChange, unmountOnExit]);
223
214
  var toggle = react.useCallback(function (key, toEnter) {
224
215
  var stateObj = latestStateMap.current.get(key);
225
216
 
@@ -229,16 +220,6 @@ var useTransitionMap = function useTransitionMap(_temp) {
229
220
  }
230
221
 
231
222
  var config = configMap.current.get(key);
232
- var _config$enter = config.enter,
233
- enter = _config$enter === void 0 ? true : _config$enter,
234
- _config$exit = config.exit,
235
- exit = _config$exit === void 0 ? true : _config$exit,
236
- preEnter = config.preEnter,
237
- preExit = config.preExit,
238
- timeout = config.timeout,
239
- unmountOnExit = config.unmountOnExit,
240
- onChange = config.onChange,
241
- timeoutId = config.timeoutId;
242
223
 
243
224
  var transitState = function transitState(newState) {
244
225
  updateState({
@@ -246,14 +227,10 @@ var useTransitionMap = function useTransitionMap(_temp) {
246
227
  newState: newState,
247
228
  setStateMap: setStateMap,
248
229
  latestStateMap: latestStateMap,
249
- timeoutId: timeoutId,
230
+ timeoutId: config.timeoutId,
250
231
  onChange: onChange
251
232
  });
252
233
 
253
- var _getTimeout = getTimeout(timeout),
254
- enterTimeout = _getTimeout[0],
255
- exitTimeout = _getTimeout[1];
256
-
257
234
  switch (newState) {
258
235
  case ENTERING:
259
236
  if (enterTimeout >= 0) config.timeoutId = setTimeout(function () {
@@ -291,7 +268,7 @@ var useTransitionMap = function useTransitionMap(_temp) {
291
268
  transitState(exit ? preExit ? PRE_EXIT : EXITING : startOrEnd(unmountOnExit));
292
269
  }
293
270
  }
294
- }, [endTransition, singleEnter]);
271
+ }, [onChange, endTransition, singleEnter, enter, exit, preEnter, preExit, enterTimeout, exitTimeout, unmountOnExit]);
295
272
  return {
296
273
  stateMap: stateMap,
297
274
  toggle: toggle,
@@ -65,13 +65,9 @@ var useTransition = function useTransition(_temp) {
65
65
  if (typeof toEnter !== 'boolean') toEnter = !enterStage;
66
66
 
67
67
  if (toEnter) {
68
- if (!enterStage) {
69
- transitState(enter ? preEnter ? PRE_ENTER : ENTERING : ENTERED);
70
- }
68
+ !enterStage && transitState(enter ? preEnter ? PRE_ENTER : ENTERING : ENTERED);
71
69
  } else {
72
- if (enterStage) {
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,6 +1,5 @@
1
- import { extends as _extends } from '../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import { useState, useRef, useCallback } from 'react';
3
- import { ENTERED, startOrEnd, getEndState, PRE_EXIT, EXITING, PRE_ENTER, ENTERING, getFullState, getTimeout } from './utils.js';
2
+ import { getTimeout, ENTERED, startOrEnd, getEndState, PRE_EXIT, EXITING, PRE_ENTER, ENTERING, getFullState } from './utils.js';
4
3
 
5
4
  var initialStateMap = new Map();
6
5
  var initialConfigMap = new Map();
@@ -18,14 +17,26 @@ var updateState = function updateState(_ref) {
18
17
  stateMap.set(key, state);
19
18
  setStateMap(stateMap);
20
19
  latestStateMap.current = stateMap;
21
- onChange && onChange(_extends({
22
- key: key
23
- }, state));
20
+ onChange && onChange({
21
+ key: key,
22
+ current: state
23
+ });
24
24
  };
25
25
 
26
26
  var useTransitionMap = function useTransitionMap(_temp) {
27
27
  var _ref2 = _temp === void 0 ? {} : _temp,
28
- singleEnter = _ref2.singleEnter;
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.onStateChange;
29
40
 
30
41
  var _useState = useState(initialStateMap),
31
42
  stateMap = _useState[0],
@@ -33,23 +44,25 @@ var useTransitionMap = function useTransitionMap(_temp) {
33
44
 
34
45
  var latestStateMap = useRef(stateMap);
35
46
  var configMap = useRef(initialConfigMap);
47
+
48
+ var _getTimeout = getTimeout(timeout),
49
+ enterTimeout = _getTimeout[0],
50
+ exitTimeout = _getTimeout[1];
51
+
36
52
  var setItem = useCallback(function (key, config) {
37
- if (config === void 0) {
38
- config = {};
39
- }
53
+ var _ref3 = config || {},
54
+ _ref3$initialEntered = _ref3.initialEntered,
55
+ _initialEntered = _ref3$initialEntered === void 0 ? initialEntered : _ref3$initialEntered;
40
56
 
41
- var _config = config,
42
- initialEntered = _config.initialEntered,
43
- mountOnEnter = _config.mountOnEnter;
44
- var newState = initialEntered ? ENTERED : startOrEnd(mountOnEnter);
57
+ var newState = _initialEntered ? ENTERED : startOrEnd(mountOnEnter);
45
58
  updateState({
46
59
  key: key,
47
60
  newState: newState,
48
61
  setStateMap: setStateMap,
49
62
  latestStateMap: latestStateMap
50
63
  });
51
- configMap.current.set(key, _extends({}, config));
52
- }, []);
64
+ configMap.current.set(key, {});
65
+ }, [initialEntered, mountOnEnter]);
53
66
  var deleteItem = useCallback(function (key) {
54
67
  var newStateMap = new Map(latestStateMap.current);
55
68
 
@@ -71,9 +84,7 @@ var useTransitionMap = function useTransitionMap(_temp) {
71
84
  }
72
85
 
73
86
  var _configMap$current$ge = configMap.current.get(key),
74
- timeoutId = _configMap$current$ge.timeoutId,
75
- onChange = _configMap$current$ge.onChange,
76
- unmountOnExit = _configMap$current$ge.unmountOnExit;
87
+ timeoutId = _configMap$current$ge.timeoutId;
77
88
 
78
89
  var newState = getEndState(stateObj._state, unmountOnExit);
79
90
  newState && updateState({
@@ -84,7 +95,7 @@ var useTransitionMap = function useTransitionMap(_temp) {
84
95
  timeoutId: timeoutId,
85
96
  onChange: onChange
86
97
  });
87
- }, []);
98
+ }, [onChange, unmountOnExit]);
88
99
  var toggle = useCallback(function (key, toEnter) {
89
100
  var stateObj = latestStateMap.current.get(key);
90
101
 
@@ -94,16 +105,6 @@ var useTransitionMap = function useTransitionMap(_temp) {
94
105
  }
95
106
 
96
107
  var config = configMap.current.get(key);
97
- var _config$enter = config.enter,
98
- enter = _config$enter === void 0 ? true : _config$enter,
99
- _config$exit = config.exit,
100
- exit = _config$exit === void 0 ? true : _config$exit,
101
- preEnter = config.preEnter,
102
- preExit = config.preExit,
103
- timeout = config.timeout,
104
- unmountOnExit = config.unmountOnExit,
105
- onChange = config.onChange,
106
- timeoutId = config.timeoutId;
107
108
 
108
109
  var transitState = function transitState(newState) {
109
110
  updateState({
@@ -111,14 +112,10 @@ var useTransitionMap = function useTransitionMap(_temp) {
111
112
  newState: newState,
112
113
  setStateMap: setStateMap,
113
114
  latestStateMap: latestStateMap,
114
- timeoutId: timeoutId,
115
+ timeoutId: config.timeoutId,
115
116
  onChange: onChange
116
117
  });
117
118
 
118
- var _getTimeout = getTimeout(timeout),
119
- enterTimeout = _getTimeout[0],
120
- exitTimeout = _getTimeout[1];
121
-
122
119
  switch (newState) {
123
120
  case ENTERING:
124
121
  if (enterTimeout >= 0) config.timeoutId = setTimeout(function () {
@@ -156,7 +153,7 @@ var useTransitionMap = function useTransitionMap(_temp) {
156
153
  transitState(exit ? preExit ? PRE_EXIT : EXITING : startOrEnd(unmountOnExit));
157
154
  }
158
155
  }
159
- }, [endTransition, singleEnter]);
156
+ }, [onChange, endTransition, singleEnter, enter, exit, preEnter, preExit, enterTimeout, exitTimeout, unmountOnExit]);
160
157
  return {
161
158
  stateMap: stateMap,
162
159
  toggle: toggle,
@@ -11,7 +11,8 @@ var getFullState = function getFullState(_state) {
11
11
  _state: _state,
12
12
  state: STATES[_state],
13
13
  isEnter: _state < PRE_EXIT,
14
- isMounted: _state !== UNMOUNTED
14
+ isMounted: _state !== UNMOUNTED,
15
+ isResolved: _state === ENTERED || _state > EXITING
15
16
  };
16
17
  };
17
18
  var startOrEnd = function startOrEnd(unmounted) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-transition-state",
3
- "version": "1.2.0-alpha.2",
3
+ "version": "1.2.0-alpha.5",
4
4
  "description": "Zero dependency, 0.7KB react-transition-group alternative.",
5
5
  "author": "Zheng Song",
6
6
  "license": "MIT",
package/types/index.d.ts CHANGED
@@ -7,6 +7,13 @@ export type TransitionState =
7
7
  | 'exited'
8
8
  | 'unmounted';
9
9
 
10
+ export interface State {
11
+ state: TransitionState;
12
+ isMounted: boolean;
13
+ isEnter: boolean;
14
+ isResolved: boolean;
15
+ }
16
+
10
17
  export interface TransitionOptions {
11
18
  initialEntered?: boolean;
12
19
  mountOnEnter?: boolean;
@@ -19,26 +26,27 @@ export interface TransitionOptions {
19
26
  onChange?: (event: { state: TransitionState }) => void;
20
27
  }
21
28
 
22
- export const useTransition: (
23
- options?: TransitionOptions
24
- ) => [TransitionState, (toEnter?: boolean) => void, () => void];
25
-
26
- interface State {
27
- state: TransitionState;
28
- isMounted: boolean;
29
- isEnter: boolean;
29
+ export interface TransitionItemOptions {
30
+ initialEntered?: boolean;
30
31
  }
31
32
 
32
33
  export interface TransitionMapOptions<K> extends Omit<TransitionOptions, 'onChange'> {
33
- onChange?: (event: { key: K } & State) => void;
34
+ singleEnter?: boolean;
35
+ onStateChange?: (event: { key: K; current: State }) => void;
34
36
  }
35
37
 
36
- export const useTransitionMap: <K>(options?: { singleEnter: boolean }) => {
38
+ export type TransitionResult = [TransitionState, (toEnter?: boolean) => void, () => void];
39
+
40
+ export interface TransitionMapResult<K> {
37
41
  stateMap: Omit<Map<K, State>, 'clear' | 'delete' | 'set'>;
38
42
  toggle: (key: K, toEnter?: boolean) => void;
39
43
  endTransition: (key: K) => void;
40
- setItem: (key: K, options?: TransitionMapOptions<K>) => void;
44
+ setItem: (key: K, options?: TransitionItemOptions) => void;
41
45
  deleteItem: (key: K) => boolean;
42
- };
46
+ }
47
+
48
+ export const useTransition: (options?: TransitionOptions) => TransitionResult;
49
+
50
+ export const useTransitionMap: <K>(options?: TransitionMapOptions<K>) => TransitionMapResult<K>;
43
51
 
44
52
  export default useTransition;
@@ -1,19 +0,0 @@
1
- function _extends() {
2
- _extends = Object.assign || function (target) {
3
- for (var i = 1; i < arguments.length; i++) {
4
- var source = arguments[i];
5
-
6
- for (var key in source) {
7
- if (Object.prototype.hasOwnProperty.call(source, key)) {
8
- target[key] = source[key];
9
- }
10
- }
11
- }
12
-
13
- return target;
14
- };
15
-
16
- return _extends.apply(this, arguments);
17
- }
18
-
19
- export { _extends as extends };