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