@pdg/react-hook 1.0.31 → 1.0.33

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.
Files changed (35) hide show
  1. package/dist/effect/index.d.ts +2 -0
  2. package/dist/{useFirstSkipEffect.d.ts → effect/useFirstSkipEffect.d.ts} +0 -1
  3. package/dist/{useFirstSkipLayoutEffect.d.ts → effect/useFirstSkipLayoutEffect.d.ts} +0 -1
  4. package/dist/forceUpdate/index.d.ts +2 -0
  5. package/dist/{useAutoForceUpdate.d.ts → forceUpdate/useAutoForceUpdate.d.ts} +0 -1
  6. package/dist/{useForceUpdate.d.ts → forceUpdate/useForceUpdate.d.ts} +0 -1
  7. package/dist/forwardRef/index.d.ts +2 -0
  8. package/dist/{useForwardLayoutRef.d.ts → forwardRef/useForwardLayoutRef.d.ts} +0 -1
  9. package/dist/{useForwardRef.d.ts → forwardRef/useForwardRef.d.ts} +0 -1
  10. package/dist/index.d.ts +9 -18
  11. package/dist/index.esm.js +171 -203
  12. package/dist/index.js +170 -202
  13. package/dist/mount/index.d.ts +1 -0
  14. package/dist/mount/useMountedRef.d.ts +2 -0
  15. package/dist/performance/index.d.ts +2 -0
  16. package/dist/{useLayoutPerformance.d.ts → performance/useLayoutPerformance.d.ts} +0 -1
  17. package/dist/{usePerformance.d.ts → performance/usePerformance.d.ts} +0 -1
  18. package/dist/ref/index.d.ts +2 -0
  19. package/dist/{useAutoUpdateLayoutRef.d.ts → ref/useAutoUpdateLayoutRef.d.ts} +0 -1
  20. package/dist/{useAutoUpdateRef.d.ts → ref/useAutoUpdateRef.d.ts} +0 -1
  21. package/dist/state/index.d.ts +4 -0
  22. package/dist/{useAutoUpdateRefState.d.ts → state/useAutoUpdateRefState.d.ts} +0 -1
  23. package/dist/{useAutoUpdateState.d.ts → state/useAutoUpdateState.d.ts} +0 -1
  24. package/dist/state/useRefState.d.ts +7 -0
  25. package/dist/state/useSafeState.d.ts +1 -0
  26. package/dist/{clearIntervalRef.d.ts → timeoutInterval/clearIntervalRef.d.ts} +0 -1
  27. package/dist/{clearTimeoutRef.d.ts → timeoutInterval/clearTimeoutRef.d.ts} +0 -1
  28. package/dist/timeoutInterval/index.d.ts +4 -0
  29. package/dist/{useIntervalRef.d.ts → timeoutInterval/useIntervalRef.d.ts} +0 -1
  30. package/dist/{useTimeoutRef.d.ts → timeoutInterval/useTimeoutRef.d.ts} +0 -1
  31. package/dist/update/index.d.ts +1 -0
  32. package/dist/update/useSafeUpdate.d.ts +1 -0
  33. package/package.json +1 -1
  34. package/dist/useAutoUpdateLayoutRefState.d.ts +0 -9
  35. package/dist/useAutoUpdateLayoutState.d.ts +0 -8
@@ -0,0 +1,2 @@
1
+ export * from './useFirstSkipEffect';
2
+ export * from './useFirstSkipLayoutEffect';
@@ -1,3 +1,2 @@
1
1
  import { DependencyList, EffectCallback } from 'react';
2
2
  export declare function useFirstSkipEffect(effect: EffectCallback, deps?: DependencyList): void;
3
- export default useFirstSkipEffect;
@@ -1,3 +1,2 @@
1
1
  import { DependencyList, EffectCallback } from 'react';
2
2
  export declare function useFirstSkipLayoutEffect(effect: EffectCallback, deps?: DependencyList): void;
3
- export default useFirstSkipLayoutEffect;
@@ -0,0 +1,2 @@
1
+ export * from './useAutoForceUpdate';
2
+ export * from './useForceUpdate';
@@ -1,2 +1 @@
1
1
  export declare function useAutoForceUpdate(interval: number): void;
2
- export default useAutoForceUpdate;
@@ -1,2 +1 @@
1
1
  export declare function useForceUpdate(delayMilliseconds?: number): (delay?: number) => void;
2
- export default useForceUpdate;
@@ -0,0 +1,2 @@
1
+ export * from './useForwardLayoutRef';
2
+ export * from './useForwardRef';
@@ -1,3 +1,2 @@
1
1
  import { ForwardedRef } from 'react';
2
2
  export declare function useForwardLayoutRef<T>(ref: ForwardedRef<T>, value: T, onSet?: (value: T) => void, onUnset?: () => void): void;
3
- export default useForwardLayoutRef;
@@ -1,3 +1,2 @@
1
1
  import { ForwardedRef } from 'react';
2
2
  export declare function useForwardRef<T>(ref: ForwardedRef<T>, value: T, onSet?: (value: T) => void, onUnset?: () => void): void;
3
- export default useForwardRef;
package/dist/index.d.ts CHANGED
@@ -1,18 +1,9 @@
1
- export * from './useAutoUpdateState';
2
- export * from './useAutoUpdateLayoutState';
3
- export * from './useFirstSkipEffect';
4
- export * from './useFirstSkipLayoutEffect';
5
- export * from './useAutoUpdateRefState';
6
- export * from './useAutoUpdateLayoutRefState';
7
- export * from './useForwardLayoutRef';
8
- export * from './useForwardRef';
9
- export * from './useAutoUpdateRef';
10
- export * from './useAutoUpdateLayoutRef';
11
- export * from './usePerformance';
12
- export * from './useLayoutPerformance';
13
- export * from './useAutoForceUpdate';
14
- export * from './useForceUpdate';
15
- export * from './useTimeoutRef';
16
- export * from './clearTimeoutRef';
17
- export * from './useIntervalRef';
18
- export * from './clearIntervalRef';
1
+ export * from './effect';
2
+ export * from './forceUpdate';
3
+ export * from './forwardRef';
4
+ export * from './mount';
5
+ export * from './performance';
6
+ export * from './ref';
7
+ export * from './state';
8
+ export * from './timeoutInterval';
9
+ export * from './update';
package/dist/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import {useRef,useEffect,useState,useCallback,useLayoutEffect}from'react';function useFirstSkipEffect(effect, deps) {
1
+ import {useRef,useEffect,useLayoutEffect,useState,useCallback}from'react';function useFirstSkipEffect(effect, deps) {
2
2
  var firstRef = useRef(true);
3
3
  useEffect(function () {
4
4
  if (firstRef.current) {
@@ -9,28 +9,6 @@ import {useRef,useEffect,useState,useCallback,useLayoutEffect}from'react';functi
9
9
  }
10
10
  // eslint-disable-next-line react-hooks/exhaustive-deps
11
11
  }, deps);
12
- }// 구현부
13
- function useAutoUpdateState(state, callback) {
14
- var _a = useState(function () { return (callback ? callback(state) : state); }), _value = _a[0], _setValue = _a[1];
15
- useFirstSkipEffect(function () {
16
- _setValue(callback ? callback(state) : state);
17
- }, [state]);
18
- var setValue = useCallback(function (newValue, skipCallback) {
19
- var finalNewValue = newValue;
20
- if (typeof finalNewValue === 'function') {
21
- _setValue(function (prev) {
22
- finalNewValue = finalNewValue(prev);
23
- finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
24
- return finalNewValue;
25
- });
26
- }
27
- else {
28
- finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
29
- _setValue(finalNewValue);
30
- }
31
- return finalNewValue;
32
- }, [callback]);
33
- return [_value, setValue];
34
12
  }function useFirstSkipLayoutEffect(effect, deps) {
35
13
  var firstRef = useRef(true);
36
14
  useLayoutEffect(function () {
@@ -42,118 +20,78 @@ function useAutoUpdateState(state, callback) {
42
20
  }
43
21
  // eslint-disable-next-line react-hooks/exhaustive-deps
44
22
  }, deps);
45
- }// 구현부
46
- function useAutoUpdateLayoutState(state, callback) {
47
- var _a = useState(function () { return (callback ? callback(state) : state); }), _value = _a[0], _setValue = _a[1];
48
- useFirstSkipLayoutEffect(function () {
49
- _setValue(callback ? callback(state) : state);
50
- }, [state]);
51
- var setValue = useCallback(function (newValue, skipCallback) {
52
- var finalNewValue = newValue;
53
- if (typeof finalNewValue === 'function') {
54
- _setValue(function (prev) {
55
- finalNewValue = finalNewValue(prev);
56
- finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
57
- return finalNewValue;
58
- });
59
- }
60
- else {
61
- finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
62
- _setValue(finalNewValue);
63
- }
64
- return finalNewValue;
65
- }, [callback]);
66
- return [_value, setValue];
67
- }// 구현부
68
- function useAutoUpdateRefState(state, callback) {
69
- var valueRef = useRef(callback ? callback(state) : state);
70
- var _a = useState(function () { return (callback ? callback(state) : state); }), _value = _a[0], _setValue = _a[1];
71
- useFirstSkipEffect(function () {
72
- var newValue = callback ? callback(state) : state;
73
- if (!equal$1(valueRef.current, newValue)) {
74
- valueRef.current = newValue;
75
- _setValue(newValue);
76
- }
77
- }, [state]);
78
- var setValue = useCallback(function (newValue, skipCallback) {
79
- var finalNewValue = newValue;
80
- if (typeof finalNewValue === 'function') {
81
- _setValue(function (prev) {
82
- finalNewValue = finalNewValue(prev);
83
- finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
84
- return finalNewValue;
23
+ }function useAutoForceUpdate(interval) {
24
+ var _a = useState(0), setTick = _a[1];
25
+ useEffect(function () {
26
+ var tm = setInterval(function () {
27
+ setTick(function (old) {
28
+ return old + 1;
85
29
  });
86
- }
87
- else {
88
- finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
89
- _setValue(finalNewValue);
90
- }
91
- valueRef.current = finalNewValue;
92
- return finalNewValue;
93
- }, [callback]);
94
- return [valueRef, _value, setValue];
95
- }
96
- /********************************************************************************************************************
97
- * equal
98
- * ******************************************************************************************************************/
99
- function equal$1(v1, v2) {
100
- if (v1 === v2)
101
- return true;
102
- if (typeof v1 !== typeof v2)
103
- return false;
104
- if (v1 == null || v2 == null)
105
- return false;
106
- if (typeof v1 === 'object' && typeof v2 === 'object') {
107
- return JSON.stringify(v1) === JSON.stringify(v2);
30
+ }, interval);
31
+ return function () {
32
+ clearInterval(tm);
33
+ };
34
+ }, [interval]);
35
+ }function clearIntervalRef(ref) {
36
+ if (ref.current) {
37
+ clearInterval(ref.current);
38
+ ref.current = undefined;
108
39
  }
109
- else {
110
- return v1 === v2;
40
+ }function clearTimeoutRef(ref) {
41
+ if (ref.current) {
42
+ clearTimeout(ref.current);
43
+ ref.current = undefined;
111
44
  }
112
- }// 구현부
113
- function useAutoUpdateLayoutRefState(state, callback) {
114
- var valueRef = useRef(callback ? callback(state) : state);
115
- var _a = useState(function () { return (callback ? callback(state) : state); }), _value = _a[0], _setValue = _a[1];
116
- useFirstSkipLayoutEffect(function () {
117
- var newValue = callback ? callback(state) : state;
118
- if (!equal(valueRef.current, newValue)) {
119
- valueRef.current = newValue;
120
- _setValue(newValue);
121
- }
122
- }, [state]);
123
- var setValue = useCallback(function (newValue, skipCallback) {
124
- var finalNewValue = newValue;
125
- if (typeof finalNewValue === 'function') {
126
- _setValue(function (prev) {
127
- finalNewValue = finalNewValue(prev);
128
- finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
129
- return finalNewValue;
130
- });
45
+ }function useIntervalRef() {
46
+ var ref = useRef(undefined);
47
+ useEffect(function () {
48
+ return function () {
49
+ clearIntervalRef(ref);
50
+ };
51
+ }, []);
52
+ var setIntervalFunc = useCallback(function (callback, ms) {
53
+ clearIntervalRef(ref);
54
+ ref.current = setInterval(function () {
55
+ callback(ref);
56
+ }, ms);
57
+ }, []);
58
+ return [ref, setIntervalFunc];
59
+ }function useTimeoutRef() {
60
+ var ref = useRef(undefined);
61
+ useEffect(function () {
62
+ return function () {
63
+ clearTimeoutRef(ref);
64
+ };
65
+ }, []);
66
+ var setTimeoutFunc = useCallback(function (callback, ms) {
67
+ clearTimeoutRef(ref);
68
+ ref.current = setTimeout(function () {
69
+ ref.current = undefined;
70
+ callback();
71
+ }, ms);
72
+ }, []);
73
+ return [ref, setTimeoutFunc];
74
+ }function useForceUpdate(delayMilliseconds) {
75
+ var _a = useTimeoutRef(), setDelayTimeout = _a[1];
76
+ var _b = useState(0), setValue = _b[1];
77
+ return useCallback(function (delay) {
78
+ if (ifUndefined(delay, delayMilliseconds) !== undefined) {
79
+ setDelayTimeout(function () {
80
+ setValue(function (old) { return old + 1; });
81
+ }, ifUndefined(delay, delayMilliseconds));
131
82
  }
132
83
  else {
133
- finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
134
- _setValue(finalNewValue);
84
+ setValue(function (old) { return old + 1; });
135
85
  }
136
- valueRef.current = finalNewValue;
137
- return finalNewValue;
138
- }, [callback]);
139
- return [valueRef, _value, setValue];
86
+ },
87
+ // eslint-disable-next-line react-hooks/exhaustive-deps
88
+ [delayMilliseconds]);
140
89
  }
141
90
  /********************************************************************************************************************
142
- * equal
91
+ * ifUndefined
143
92
  * ******************************************************************************************************************/
144
- function equal(v1, v2) {
145
- if (v1 === v2)
146
- return true;
147
- if (typeof v1 !== typeof v2)
148
- return false;
149
- if (v1 == null || v2 == null)
150
- return false;
151
- if (typeof v1 === 'object' && typeof v2 === 'object') {
152
- return JSON.stringify(v1) === JSON.stringify(v2);
153
- }
154
- else {
155
- return v1 === v2;
156
- }
93
+ function ifUndefined(v, v2) {
94
+ return v === undefined ? v2 : v;
157
95
  }function useForwardLayoutRef(ref, value, onSet, onUnset) {
158
96
  useLayoutEffect(function () {
159
97
  onSet === null || onSet === void 0 ? void 0 : onSet(value);
@@ -200,102 +138,132 @@ function equal(v1, v2) {
200
138
  }
201
139
  };
202
140
  }, [onSet, onUnset, ref, value]);
203
- }function useAutoUpdateRef(value) {
141
+ }function useMountedRef(initialValue) {
142
+ if (initialValue === void 0) { initialValue = true; }
143
+ var isMountedRef = useRef(initialValue);
144
+ useEffect(function () {
145
+ isMountedRef.current = true;
146
+ return function () {
147
+ isMountedRef.current = false;
148
+ };
149
+ }, []);
150
+ return isMountedRef;
151
+ }function useLayoutPerformance(name) {
152
+ var beginTime = performance.now();
153
+ useLayoutEffect(function () {
154
+ console.log('Layout Performance', '-', name, performance.now() - beginTime);
155
+ });
156
+ }function usePerformance(name) {
157
+ var beginTime = performance.now();
158
+ useEffect(function () {
159
+ console.log('Performance', '-', name, performance.now() - beginTime);
160
+ });
161
+ }function useAutoUpdateLayoutRef(value) {
204
162
  var valueRef = useRef(value);
205
163
  var _a = useState(0), setUpdateValue = _a[1];
206
- useFirstSkipEffect(function () {
164
+ useFirstSkipLayoutEffect(function () {
207
165
  valueRef.current = value;
208
166
  setUpdateValue(function (prev) { return prev + 1; });
209
167
  }, [value]);
210
168
  return valueRef;
211
- }function useAutoUpdateLayoutRef(value) {
169
+ }function useAutoUpdateRef(value) {
212
170
  var valueRef = useRef(value);
213
171
  var _a = useState(0), setUpdateValue = _a[1];
214
- useFirstSkipLayoutEffect(function () {
172
+ useFirstSkipEffect(function () {
215
173
  valueRef.current = value;
216
174
  setUpdateValue(function (prev) { return prev + 1; });
217
175
  }, [value]);
218
176
  return valueRef;
219
- }function usePerformance(name) {
220
- var beginTime = performance.now();
221
- useEffect(function () {
222
- console.log('Performance', '-', name, performance.now() - beginTime);
223
- });
224
- }function useLayoutPerformance(name) {
225
- var beginTime = performance.now();
226
- useLayoutEffect(function () {
227
- console.log('Layout Performance', '-', name, performance.now() - beginTime);
228
- });
229
- }function useAutoForceUpdate(interval) {
230
- var _a = useState(0), setTick = _a[1];
231
- useEffect(function () {
232
- var tm = setInterval(function () {
233
- setTick(function (old) {
234
- return old + 1;
177
+ }// 구현부
178
+ function useAutoUpdateRefState(state, callback) {
179
+ var valueRef = useRef(callback ? callback(state) : state);
180
+ var _a = useState(function () { return (callback ? callback(state) : state); }), _value = _a[0], _setValue = _a[1];
181
+ useFirstSkipEffect(function () {
182
+ var newValue = callback ? callback(state) : state;
183
+ if (!equal(valueRef.current, newValue)) {
184
+ valueRef.current = newValue;
185
+ _setValue(newValue);
186
+ }
187
+ }, [state]);
188
+ var setValue = useCallback(function (newValue, skipCallback) {
189
+ var finalNewValue = newValue;
190
+ if (typeof finalNewValue === 'function') {
191
+ _setValue(function (prev) {
192
+ finalNewValue = finalNewValue(prev);
193
+ finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
194
+ return finalNewValue;
235
195
  });
236
- }, interval);
237
- return function () {
238
- clearInterval(tm);
239
- };
240
- }, [interval]);
241
- }function clearTimeoutRef(ref) {
242
- if (ref.current) {
243
- clearTimeout(ref.current);
244
- ref.current = undefined;
245
- }
246
- }function useTimeoutRef() {
247
- var ref = useRef(undefined);
248
- useEffect(function () {
249
- return function () {
250
- clearTimeoutRef(ref);
251
- };
252
- }, []);
253
- var setTimeoutFunc = useCallback(function (callback, ms) {
254
- clearTimeoutRef(ref);
255
- ref.current = setTimeout(function () {
256
- ref.current = undefined;
257
- callback();
258
- }, ms);
259
- }, []);
260
- return [ref, setTimeoutFunc];
261
- }function useForceUpdate(delayMilliseconds) {
262
- var _a = useTimeoutRef(), setDelayTimeout = _a[1];
263
- var _b = useState(0), setValue = _b[1];
264
- return useCallback(function (delay) {
265
- if (ifUndefined(delay, delayMilliseconds) !== undefined) {
266
- setDelayTimeout(function () {
267
- setValue(function (old) { return old + 1; });
268
- }, ifUndefined(delay, delayMilliseconds));
269
196
  }
270
197
  else {
271
- setValue(function (old) { return old + 1; });
198
+ finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
199
+ _setValue(finalNewValue);
272
200
  }
273
- },
274
- // eslint-disable-next-line react-hooks/exhaustive-deps
275
- [delayMilliseconds]);
201
+ valueRef.current = finalNewValue;
202
+ return finalNewValue;
203
+ }, [callback]);
204
+ return [valueRef, _value, setValue];
276
205
  }
277
206
  /********************************************************************************************************************
278
- * ifUndefined
207
+ * equal
279
208
  * ******************************************************************************************************************/
280
- function ifUndefined(v, v2) {
281
- return v === undefined ? v2 : v;
282
- }function clearIntervalRef(ref) {
283
- if (ref.current) {
284
- clearInterval(ref.current);
285
- ref.current = undefined;
209
+ function equal(v1, v2) {
210
+ if (v1 === v2)
211
+ return true;
212
+ if (typeof v1 !== typeof v2)
213
+ return false;
214
+ if (v1 == null || v2 == null)
215
+ return false;
216
+ if (typeof v1 === 'object' && typeof v2 === 'object') {
217
+ return JSON.stringify(v1) === JSON.stringify(v2);
286
218
  }
287
- }function useIntervalRef() {
288
- var ref = useRef(undefined);
289
- useEffect(function () {
290
- return function () {
291
- clearIntervalRef(ref);
292
- };
219
+ else {
220
+ return v1 === v2;
221
+ }
222
+ }// 구현부
223
+ function useAutoUpdateState(state, callback) {
224
+ var _a = useState(function () { return (callback ? callback(state) : state); }), _value = _a[0], _setValue = _a[1];
225
+ useFirstSkipEffect(function () {
226
+ _setValue(callback ? callback(state) : state);
227
+ }, [state]);
228
+ var setValue = useCallback(function (newValue, skipCallback) {
229
+ var finalNewValue = newValue;
230
+ if (typeof finalNewValue === 'function') {
231
+ _setValue(function (prev) {
232
+ finalNewValue = finalNewValue(prev);
233
+ finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
234
+ return finalNewValue;
235
+ });
236
+ }
237
+ else {
238
+ finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
239
+ _setValue(finalNewValue);
240
+ }
241
+ return finalNewValue;
242
+ }, [callback]);
243
+ return [_value, setValue];
244
+ }function useRefState(initialState) {
245
+ var _a = useState(initialState), _value = _a[0], _setValue = _a[1];
246
+ var valueRef = useRef(_value);
247
+ var setValue = useCallback(function (value) {
248
+ if (typeof value === 'function') {
249
+ _setValue(function (prev) {
250
+ var finalValue = value(prev);
251
+ valueRef.current = finalValue;
252
+ return finalValue;
253
+ });
254
+ }
255
+ else {
256
+ valueRef.current = value;
257
+ _setValue(value);
258
+ }
293
259
  }, []);
294
- var setIntervalFunc = useCallback(function (callback, ms) {
295
- clearIntervalRef(ref);
296
- ref.current = setInterval(function () {
297
- callback(ref);
298
- }, ms);
260
+ return [valueRef, _value, setValue];
261
+ }function useSafeUpdate() {
262
+ var mountedRef = useMountedRef();
263
+ return useCallback(function (callback) {
264
+ if (mountedRef.current) {
265
+ callback();
266
+ }
267
+ // eslint-disable-next-line react-hooks/exhaustive-deps
299
268
  }, []);
300
- return [ref, setIntervalFunc];
301
- }export{clearIntervalRef,clearTimeoutRef,useAutoForceUpdate,useAutoUpdateLayoutRef,useAutoUpdateLayoutRefState,useAutoUpdateLayoutState,useAutoUpdateRef,useAutoUpdateRefState,useAutoUpdateState,useFirstSkipEffect,useFirstSkipLayoutEffect,useForceUpdate,useForwardLayoutRef,useForwardRef,useIntervalRef,useLayoutPerformance,usePerformance,useTimeoutRef};
269
+ }export{clearIntervalRef,clearTimeoutRef,useAutoForceUpdate,useAutoUpdateLayoutRef,useAutoUpdateRef,useAutoUpdateRefState,useAutoUpdateState,useFirstSkipEffect,useFirstSkipLayoutEffect,useForceUpdate,useForwardLayoutRef,useForwardRef,useIntervalRef,useLayoutPerformance,useMountedRef,usePerformance,useRefState,useSafeUpdate,useTimeoutRef};
package/dist/index.js CHANGED
@@ -9,28 +9,6 @@
9
9
  }
10
10
  // eslint-disable-next-line react-hooks/exhaustive-deps
11
11
  }, deps);
12
- }// 구현부
13
- function useAutoUpdateState(state, callback) {
14
- var _a = react.useState(function () { return (callback ? callback(state) : state); }), _value = _a[0], _setValue = _a[1];
15
- useFirstSkipEffect(function () {
16
- _setValue(callback ? callback(state) : state);
17
- }, [state]);
18
- var setValue = react.useCallback(function (newValue, skipCallback) {
19
- var finalNewValue = newValue;
20
- if (typeof finalNewValue === 'function') {
21
- _setValue(function (prev) {
22
- finalNewValue = finalNewValue(prev);
23
- finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
24
- return finalNewValue;
25
- });
26
- }
27
- else {
28
- finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
29
- _setValue(finalNewValue);
30
- }
31
- return finalNewValue;
32
- }, [callback]);
33
- return [_value, setValue];
34
12
  }function useFirstSkipLayoutEffect(effect, deps) {
35
13
  var firstRef = react.useRef(true);
36
14
  react.useLayoutEffect(function () {
@@ -42,118 +20,78 @@ function useAutoUpdateState(state, callback) {
42
20
  }
43
21
  // eslint-disable-next-line react-hooks/exhaustive-deps
44
22
  }, deps);
45
- }// 구현부
46
- function useAutoUpdateLayoutState(state, callback) {
47
- var _a = react.useState(function () { return (callback ? callback(state) : state); }), _value = _a[0], _setValue = _a[1];
48
- useFirstSkipLayoutEffect(function () {
49
- _setValue(callback ? callback(state) : state);
50
- }, [state]);
51
- var setValue = react.useCallback(function (newValue, skipCallback) {
52
- var finalNewValue = newValue;
53
- if (typeof finalNewValue === 'function') {
54
- _setValue(function (prev) {
55
- finalNewValue = finalNewValue(prev);
56
- finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
57
- return finalNewValue;
58
- });
59
- }
60
- else {
61
- finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
62
- _setValue(finalNewValue);
63
- }
64
- return finalNewValue;
65
- }, [callback]);
66
- return [_value, setValue];
67
- }// 구현부
68
- function useAutoUpdateRefState(state, callback) {
69
- var valueRef = react.useRef(callback ? callback(state) : state);
70
- var _a = react.useState(function () { return (callback ? callback(state) : state); }), _value = _a[0], _setValue = _a[1];
71
- useFirstSkipEffect(function () {
72
- var newValue = callback ? callback(state) : state;
73
- if (!equal$1(valueRef.current, newValue)) {
74
- valueRef.current = newValue;
75
- _setValue(newValue);
76
- }
77
- }, [state]);
78
- var setValue = react.useCallback(function (newValue, skipCallback) {
79
- var finalNewValue = newValue;
80
- if (typeof finalNewValue === 'function') {
81
- _setValue(function (prev) {
82
- finalNewValue = finalNewValue(prev);
83
- finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
84
- return finalNewValue;
23
+ }function useAutoForceUpdate(interval) {
24
+ var _a = react.useState(0), setTick = _a[1];
25
+ react.useEffect(function () {
26
+ var tm = setInterval(function () {
27
+ setTick(function (old) {
28
+ return old + 1;
85
29
  });
86
- }
87
- else {
88
- finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
89
- _setValue(finalNewValue);
90
- }
91
- valueRef.current = finalNewValue;
92
- return finalNewValue;
93
- }, [callback]);
94
- return [valueRef, _value, setValue];
95
- }
96
- /********************************************************************************************************************
97
- * equal
98
- * ******************************************************************************************************************/
99
- function equal$1(v1, v2) {
100
- if (v1 === v2)
101
- return true;
102
- if (typeof v1 !== typeof v2)
103
- return false;
104
- if (v1 == null || v2 == null)
105
- return false;
106
- if (typeof v1 === 'object' && typeof v2 === 'object') {
107
- return JSON.stringify(v1) === JSON.stringify(v2);
30
+ }, interval);
31
+ return function () {
32
+ clearInterval(tm);
33
+ };
34
+ }, [interval]);
35
+ }function clearIntervalRef(ref) {
36
+ if (ref.current) {
37
+ clearInterval(ref.current);
38
+ ref.current = undefined;
108
39
  }
109
- else {
110
- return v1 === v2;
40
+ }function clearTimeoutRef(ref) {
41
+ if (ref.current) {
42
+ clearTimeout(ref.current);
43
+ ref.current = undefined;
111
44
  }
112
- }// 구현부
113
- function useAutoUpdateLayoutRefState(state, callback) {
114
- var valueRef = react.useRef(callback ? callback(state) : state);
115
- var _a = react.useState(function () { return (callback ? callback(state) : state); }), _value = _a[0], _setValue = _a[1];
116
- useFirstSkipLayoutEffect(function () {
117
- var newValue = callback ? callback(state) : state;
118
- if (!equal(valueRef.current, newValue)) {
119
- valueRef.current = newValue;
120
- _setValue(newValue);
121
- }
122
- }, [state]);
123
- var setValue = react.useCallback(function (newValue, skipCallback) {
124
- var finalNewValue = newValue;
125
- if (typeof finalNewValue === 'function') {
126
- _setValue(function (prev) {
127
- finalNewValue = finalNewValue(prev);
128
- finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
129
- return finalNewValue;
130
- });
45
+ }function useIntervalRef() {
46
+ var ref = react.useRef(undefined);
47
+ react.useEffect(function () {
48
+ return function () {
49
+ clearIntervalRef(ref);
50
+ };
51
+ }, []);
52
+ var setIntervalFunc = react.useCallback(function (callback, ms) {
53
+ clearIntervalRef(ref);
54
+ ref.current = setInterval(function () {
55
+ callback(ref);
56
+ }, ms);
57
+ }, []);
58
+ return [ref, setIntervalFunc];
59
+ }function useTimeoutRef() {
60
+ var ref = react.useRef(undefined);
61
+ react.useEffect(function () {
62
+ return function () {
63
+ clearTimeoutRef(ref);
64
+ };
65
+ }, []);
66
+ var setTimeoutFunc = react.useCallback(function (callback, ms) {
67
+ clearTimeoutRef(ref);
68
+ ref.current = setTimeout(function () {
69
+ ref.current = undefined;
70
+ callback();
71
+ }, ms);
72
+ }, []);
73
+ return [ref, setTimeoutFunc];
74
+ }function useForceUpdate(delayMilliseconds) {
75
+ var _a = useTimeoutRef(), setDelayTimeout = _a[1];
76
+ var _b = react.useState(0), setValue = _b[1];
77
+ return react.useCallback(function (delay) {
78
+ if (ifUndefined(delay, delayMilliseconds) !== undefined) {
79
+ setDelayTimeout(function () {
80
+ setValue(function (old) { return old + 1; });
81
+ }, ifUndefined(delay, delayMilliseconds));
131
82
  }
132
83
  else {
133
- finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
134
- _setValue(finalNewValue);
84
+ setValue(function (old) { return old + 1; });
135
85
  }
136
- valueRef.current = finalNewValue;
137
- return finalNewValue;
138
- }, [callback]);
139
- return [valueRef, _value, setValue];
86
+ },
87
+ // eslint-disable-next-line react-hooks/exhaustive-deps
88
+ [delayMilliseconds]);
140
89
  }
141
90
  /********************************************************************************************************************
142
- * equal
91
+ * ifUndefined
143
92
  * ******************************************************************************************************************/
144
- function equal(v1, v2) {
145
- if (v1 === v2)
146
- return true;
147
- if (typeof v1 !== typeof v2)
148
- return false;
149
- if (v1 == null || v2 == null)
150
- return false;
151
- if (typeof v1 === 'object' && typeof v2 === 'object') {
152
- return JSON.stringify(v1) === JSON.stringify(v2);
153
- }
154
- else {
155
- return v1 === v2;
156
- }
93
+ function ifUndefined(v, v2) {
94
+ return v === undefined ? v2 : v;
157
95
  }function useForwardLayoutRef(ref, value, onSet, onUnset) {
158
96
  react.useLayoutEffect(function () {
159
97
  onSet === null || onSet === void 0 ? void 0 : onSet(value);
@@ -200,102 +138,132 @@ function equal(v1, v2) {
200
138
  }
201
139
  };
202
140
  }, [onSet, onUnset, ref, value]);
203
- }function useAutoUpdateRef(value) {
141
+ }function useMountedRef(initialValue) {
142
+ if (initialValue === void 0) { initialValue = true; }
143
+ var isMountedRef = react.useRef(initialValue);
144
+ react.useEffect(function () {
145
+ isMountedRef.current = true;
146
+ return function () {
147
+ isMountedRef.current = false;
148
+ };
149
+ }, []);
150
+ return isMountedRef;
151
+ }function useLayoutPerformance(name) {
152
+ var beginTime = performance.now();
153
+ react.useLayoutEffect(function () {
154
+ console.log('Layout Performance', '-', name, performance.now() - beginTime);
155
+ });
156
+ }function usePerformance(name) {
157
+ var beginTime = performance.now();
158
+ react.useEffect(function () {
159
+ console.log('Performance', '-', name, performance.now() - beginTime);
160
+ });
161
+ }function useAutoUpdateLayoutRef(value) {
204
162
  var valueRef = react.useRef(value);
205
163
  var _a = react.useState(0), setUpdateValue = _a[1];
206
- useFirstSkipEffect(function () {
164
+ useFirstSkipLayoutEffect(function () {
207
165
  valueRef.current = value;
208
166
  setUpdateValue(function (prev) { return prev + 1; });
209
167
  }, [value]);
210
168
  return valueRef;
211
- }function useAutoUpdateLayoutRef(value) {
169
+ }function useAutoUpdateRef(value) {
212
170
  var valueRef = react.useRef(value);
213
171
  var _a = react.useState(0), setUpdateValue = _a[1];
214
- useFirstSkipLayoutEffect(function () {
172
+ useFirstSkipEffect(function () {
215
173
  valueRef.current = value;
216
174
  setUpdateValue(function (prev) { return prev + 1; });
217
175
  }, [value]);
218
176
  return valueRef;
219
- }function usePerformance(name) {
220
- var beginTime = performance.now();
221
- react.useEffect(function () {
222
- console.log('Performance', '-', name, performance.now() - beginTime);
223
- });
224
- }function useLayoutPerformance(name) {
225
- var beginTime = performance.now();
226
- react.useLayoutEffect(function () {
227
- console.log('Layout Performance', '-', name, performance.now() - beginTime);
228
- });
229
- }function useAutoForceUpdate(interval) {
230
- var _a = react.useState(0), setTick = _a[1];
231
- react.useEffect(function () {
232
- var tm = setInterval(function () {
233
- setTick(function (old) {
234
- return old + 1;
177
+ }// 구현부
178
+ function useAutoUpdateRefState(state, callback) {
179
+ var valueRef = react.useRef(callback ? callback(state) : state);
180
+ var _a = react.useState(function () { return (callback ? callback(state) : state); }), _value = _a[0], _setValue = _a[1];
181
+ useFirstSkipEffect(function () {
182
+ var newValue = callback ? callback(state) : state;
183
+ if (!equal(valueRef.current, newValue)) {
184
+ valueRef.current = newValue;
185
+ _setValue(newValue);
186
+ }
187
+ }, [state]);
188
+ var setValue = react.useCallback(function (newValue, skipCallback) {
189
+ var finalNewValue = newValue;
190
+ if (typeof finalNewValue === 'function') {
191
+ _setValue(function (prev) {
192
+ finalNewValue = finalNewValue(prev);
193
+ finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
194
+ return finalNewValue;
235
195
  });
236
- }, interval);
237
- return function () {
238
- clearInterval(tm);
239
- };
240
- }, [interval]);
241
- }function clearTimeoutRef(ref) {
242
- if (ref.current) {
243
- clearTimeout(ref.current);
244
- ref.current = undefined;
245
- }
246
- }function useTimeoutRef() {
247
- var ref = react.useRef(undefined);
248
- react.useEffect(function () {
249
- return function () {
250
- clearTimeoutRef(ref);
251
- };
252
- }, []);
253
- var setTimeoutFunc = react.useCallback(function (callback, ms) {
254
- clearTimeoutRef(ref);
255
- ref.current = setTimeout(function () {
256
- ref.current = undefined;
257
- callback();
258
- }, ms);
259
- }, []);
260
- return [ref, setTimeoutFunc];
261
- }function useForceUpdate(delayMilliseconds) {
262
- var _a = useTimeoutRef(), setDelayTimeout = _a[1];
263
- var _b = react.useState(0), setValue = _b[1];
264
- return react.useCallback(function (delay) {
265
- if (ifUndefined(delay, delayMilliseconds) !== undefined) {
266
- setDelayTimeout(function () {
267
- setValue(function (old) { return old + 1; });
268
- }, ifUndefined(delay, delayMilliseconds));
269
196
  }
270
197
  else {
271
- setValue(function (old) { return old + 1; });
198
+ finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
199
+ _setValue(finalNewValue);
272
200
  }
273
- },
274
- // eslint-disable-next-line react-hooks/exhaustive-deps
275
- [delayMilliseconds]);
201
+ valueRef.current = finalNewValue;
202
+ return finalNewValue;
203
+ }, [callback]);
204
+ return [valueRef, _value, setValue];
276
205
  }
277
206
  /********************************************************************************************************************
278
- * ifUndefined
207
+ * equal
279
208
  * ******************************************************************************************************************/
280
- function ifUndefined(v, v2) {
281
- return v === undefined ? v2 : v;
282
- }function clearIntervalRef(ref) {
283
- if (ref.current) {
284
- clearInterval(ref.current);
285
- ref.current = undefined;
209
+ function equal(v1, v2) {
210
+ if (v1 === v2)
211
+ return true;
212
+ if (typeof v1 !== typeof v2)
213
+ return false;
214
+ if (v1 == null || v2 == null)
215
+ return false;
216
+ if (typeof v1 === 'object' && typeof v2 === 'object') {
217
+ return JSON.stringify(v1) === JSON.stringify(v2);
286
218
  }
287
- }function useIntervalRef() {
288
- var ref = react.useRef(undefined);
289
- react.useEffect(function () {
290
- return function () {
291
- clearIntervalRef(ref);
292
- };
219
+ else {
220
+ return v1 === v2;
221
+ }
222
+ }// 구현부
223
+ function useAutoUpdateState(state, callback) {
224
+ var _a = react.useState(function () { return (callback ? callback(state) : state); }), _value = _a[0], _setValue = _a[1];
225
+ useFirstSkipEffect(function () {
226
+ _setValue(callback ? callback(state) : state);
227
+ }, [state]);
228
+ var setValue = react.useCallback(function (newValue, skipCallback) {
229
+ var finalNewValue = newValue;
230
+ if (typeof finalNewValue === 'function') {
231
+ _setValue(function (prev) {
232
+ finalNewValue = finalNewValue(prev);
233
+ finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
234
+ return finalNewValue;
235
+ });
236
+ }
237
+ else {
238
+ finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
239
+ _setValue(finalNewValue);
240
+ }
241
+ return finalNewValue;
242
+ }, [callback]);
243
+ return [_value, setValue];
244
+ }function useRefState(initialState) {
245
+ var _a = react.useState(initialState), _value = _a[0], _setValue = _a[1];
246
+ var valueRef = react.useRef(_value);
247
+ var setValue = react.useCallback(function (value) {
248
+ if (typeof value === 'function') {
249
+ _setValue(function (prev) {
250
+ var finalValue = value(prev);
251
+ valueRef.current = finalValue;
252
+ return finalValue;
253
+ });
254
+ }
255
+ else {
256
+ valueRef.current = value;
257
+ _setValue(value);
258
+ }
293
259
  }, []);
294
- var setIntervalFunc = react.useCallback(function (callback, ms) {
295
- clearIntervalRef(ref);
296
- ref.current = setInterval(function () {
297
- callback(ref);
298
- }, ms);
260
+ return [valueRef, _value, setValue];
261
+ }function useSafeUpdate() {
262
+ var mountedRef = useMountedRef();
263
+ return react.useCallback(function (callback) {
264
+ if (mountedRef.current) {
265
+ callback();
266
+ }
267
+ // eslint-disable-next-line react-hooks/exhaustive-deps
299
268
  }, []);
300
- return [ref, setIntervalFunc];
301
- }exports.clearIntervalRef=clearIntervalRef;exports.clearTimeoutRef=clearTimeoutRef;exports.useAutoForceUpdate=useAutoForceUpdate;exports.useAutoUpdateLayoutRef=useAutoUpdateLayoutRef;exports.useAutoUpdateLayoutRefState=useAutoUpdateLayoutRefState;exports.useAutoUpdateLayoutState=useAutoUpdateLayoutState;exports.useAutoUpdateRef=useAutoUpdateRef;exports.useAutoUpdateRefState=useAutoUpdateRefState;exports.useAutoUpdateState=useAutoUpdateState;exports.useFirstSkipEffect=useFirstSkipEffect;exports.useFirstSkipLayoutEffect=useFirstSkipLayoutEffect;exports.useForceUpdate=useForceUpdate;exports.useForwardLayoutRef=useForwardLayoutRef;exports.useForwardRef=useForwardRef;exports.useIntervalRef=useIntervalRef;exports.useLayoutPerformance=useLayoutPerformance;exports.usePerformance=usePerformance;exports.useTimeoutRef=useTimeoutRef;
269
+ }exports.clearIntervalRef=clearIntervalRef;exports.clearTimeoutRef=clearTimeoutRef;exports.useAutoForceUpdate=useAutoForceUpdate;exports.useAutoUpdateLayoutRef=useAutoUpdateLayoutRef;exports.useAutoUpdateRef=useAutoUpdateRef;exports.useAutoUpdateRefState=useAutoUpdateRefState;exports.useAutoUpdateState=useAutoUpdateState;exports.useFirstSkipEffect=useFirstSkipEffect;exports.useFirstSkipLayoutEffect=useFirstSkipLayoutEffect;exports.useForceUpdate=useForceUpdate;exports.useForwardLayoutRef=useForwardLayoutRef;exports.useForwardRef=useForwardRef;exports.useIntervalRef=useIntervalRef;exports.useLayoutPerformance=useLayoutPerformance;exports.useMountedRef=useMountedRef;exports.usePerformance=usePerformance;exports.useRefState=useRefState;exports.useSafeUpdate=useSafeUpdate;exports.useTimeoutRef=useTimeoutRef;
@@ -0,0 +1 @@
1
+ export * from './useMountedRef';
@@ -0,0 +1,2 @@
1
+ import { RefObject } from 'react';
2
+ export declare function useMountedRef(initialValue?: boolean): RefObject<boolean>;
@@ -0,0 +1,2 @@
1
+ export * from './useLayoutPerformance';
2
+ export * from './usePerformance';
@@ -1,2 +1 @@
1
1
  export declare function useLayoutPerformance(name: string): void;
2
- export default useLayoutPerformance;
@@ -1,2 +1 @@
1
1
  export declare function usePerformance(name: string): void;
2
- export default usePerformance;
@@ -0,0 +1,2 @@
1
+ export * from './useAutoUpdateLayoutRef';
2
+ export * from './useAutoUpdateRef';
@@ -1,3 +1,2 @@
1
1
  import { RefObject } from 'react';
2
2
  export declare function useAutoUpdateLayoutRef<T>(value: T): RefObject<T>;
3
- export default useAutoUpdateLayoutRef;
@@ -1,3 +1,2 @@
1
1
  import { RefObject } from 'react';
2
2
  export declare function useAutoUpdateRef<T>(value: T): RefObject<T>;
3
- export default useAutoUpdateRef;
@@ -0,0 +1,4 @@
1
+ export * from './useAutoUpdateRefState';
2
+ export * from './useAutoUpdateState';
3
+ export * from './useRefState';
4
+ export * from './useSafeState';
@@ -6,4 +6,3 @@ export declare function useAutoUpdateRefState<T = never, StateT = never>(state:
6
6
  T extends never ? StateT : T,
7
7
  (value: SetStateAction<T | StateT>, skipCallback?: boolean) => T extends never ? StateT : T
8
8
  ];
9
- export default useAutoUpdateRefState;
@@ -5,4 +5,3 @@ export declare function useAutoUpdateState<T = never, StateT = never>(state: Exc
5
5
  T extends never ? StateT : T,
6
6
  (value: SetStateAction<T | StateT>, skipCallback?: boolean) => T extends never ? StateT : T
7
7
  ];
8
- export default useAutoUpdateState;
@@ -0,0 +1,7 @@
1
+ import { Dispatch, RefObject, SetStateAction } from 'react';
2
+ export declare function useRefState<S>(initialState: S | (() => S)): [RefObject<S>, S, Dispatch<SetStateAction<S>>];
3
+ export declare function useRefState<S = undefined>(): [
4
+ RefObject<S | undefined>,
5
+ S | undefined,
6
+ Dispatch<SetStateAction<S | undefined>>
7
+ ];
@@ -0,0 +1 @@
1
+ export {};
@@ -1,3 +1,2 @@
1
1
  import React from 'react';
2
2
  export declare function clearIntervalRef(ref: React.RefObject<NodeJS.Timeout | undefined>): void;
3
- export default clearIntervalRef;
@@ -1,3 +1,2 @@
1
1
  import React from 'react';
2
2
  export declare function clearTimeoutRef(ref: React.RefObject<NodeJS.Timeout | undefined>): void;
3
- export default clearTimeoutRef;
@@ -0,0 +1,4 @@
1
+ export * from './clearIntervalRef';
2
+ export * from './clearTimeoutRef';
3
+ export * from './useIntervalRef';
4
+ export * from './useTimeoutRef';
@@ -4,4 +4,3 @@ export type UseIntervalReturnValue = [
4
4
  (callback: (ref: React.RefObject<NodeJS.Timeout | undefined>) => void, ms?: number) => void
5
5
  ];
6
6
  export declare function useIntervalRef(): UseIntervalReturnValue;
7
- export default useIntervalRef;
@@ -4,4 +4,3 @@ export type UseTimeoutReturnValue = [
4
4
  (callback: (args: void) => void, ms?: number) => void
5
5
  ];
6
6
  export declare function useTimeoutRef(): UseTimeoutReturnValue;
7
- export default useTimeoutRef;
@@ -0,0 +1 @@
1
+ export * from './useSafeUpdate';
@@ -0,0 +1 @@
1
+ export declare function useSafeUpdate(): (callback: () => void) => void;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pdg/react-hook",
3
3
  "title": "React Hook",
4
- "version": "1.0.31",
4
+ "version": "1.0.33",
5
5
  "description": "React Hook",
6
6
  "type": "module",
7
7
  "types": "dist/index.d.ts",
@@ -1,9 +0,0 @@
1
- import { RefObject, SetStateAction } from 'react';
2
- export declare function useAutoUpdateLayoutRefState<T>(state: Exclude<T, (...args: any[]) => any>): [RefObject<T>, T, (value: SetStateAction<T>) => T];
3
- export declare function useAutoUpdateLayoutRefState<T>(state: Exclude<T, (...args: any[]) => any>, callback: (state: T) => T): [RefObject<T>, T, (value: SetStateAction<T>, skipCallback?: boolean) => T];
4
- export declare function useAutoUpdateLayoutRefState<T = never, StateT = never>(state: Exclude<StateT, (...args: any[]) => any>, callback: (state: T | StateT) => T extends never ? StateT : T): [
5
- RefObject<T extends never ? StateT : T>,
6
- T extends never ? StateT : T,
7
- (value: SetStateAction<T | StateT>, skipCallback?: boolean) => T extends never ? StateT : T
8
- ];
9
- export default useAutoUpdateLayoutRefState;
@@ -1,8 +0,0 @@
1
- import { SetStateAction } from 'react';
2
- export declare function useAutoUpdateLayoutState<T>(state: Exclude<T, (...args: any[]) => any>): [T, (value: SetStateAction<T>) => T];
3
- export declare function useAutoUpdateLayoutState<T>(state: Exclude<T, (...args: any[]) => any>, callback: (state: T) => T): [T, (value: SetStateAction<T>, skipCallback?: boolean) => T];
4
- export declare function useAutoUpdateLayoutState<T = never, StateT = never>(state: Exclude<StateT, (...args: any[]) => any>, callback: (state: T | StateT) => T extends never ? StateT : T): [
5
- T extends never ? StateT : T,
6
- (value: SetStateAction<T | StateT>, skipCallback?: boolean) => T extends never ? StateT : T
7
- ];
8
- export default useAutoUpdateLayoutState;