@pdg/react-hook 1.0.30 → 1.0.32

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/forwardRef/useForwardLayoutRef.d.ts +2 -0
  9. package/dist/{useForwardRef.d.ts → forwardRef/useForwardRef.d.ts} +1 -2
  10. package/dist/index.d.ts +9 -17
  11. package/dist/index.esm.js +176 -184
  12. package/dist/index.js +175 -183
  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 +19 -14
  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';
@@ -0,0 +1,2 @@
1
+ import { ForwardedRef } from 'react';
2
+ export declare function useForwardLayoutRef<T>(ref: ForwardedRef<T>, value: T, onSet?: (value: T) => void, onUnset?: () => void): void;
@@ -1,3 +1,2 @@
1
1
  import { ForwardedRef } from 'react';
2
- export declare function useForwardRef<T>(ref: ForwardedRef<T>, value: T): void;
3
- export default useForwardRef;
2
+ export declare function useForwardRef<T>(ref: ForwardedRef<T>, value: T, onSet?: (value: T) => void, onUnset?: () => void): void;
package/dist/index.d.ts CHANGED
@@ -1,17 +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 './useForwardRef';
8
- export * from './useAutoUpdateRef';
9
- export * from './useAutoUpdateLayoutRef';
10
- export * from './usePerformance';
11
- export * from './useLayoutPerformance';
12
- export * from './useAutoForceUpdate';
13
- export * from './useForceUpdate';
14
- export * from './useTimeoutRef';
15
- export * from './clearTimeoutRef';
16
- export * from './useIntervalRef';
17
- 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,35 +20,166 @@ 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;
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;
58
29
  });
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;
39
+ }
40
+ }function clearTimeoutRef(ref) {
41
+ if (ref.current) {
42
+ clearTimeout(ref.current);
43
+ ref.current = undefined;
44
+ }
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));
59
82
  }
60
83
  else {
61
- finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
62
- _setValue(finalNewValue);
84
+ setValue(function (old) { return old + 1; });
63
85
  }
64
- return finalNewValue;
65
- }, [callback]);
66
- return [_value, setValue];
86
+ },
87
+ // eslint-disable-next-line react-hooks/exhaustive-deps
88
+ [delayMilliseconds]);
89
+ }
90
+ /********************************************************************************************************************
91
+ * ifUndefined
92
+ * ******************************************************************************************************************/
93
+ function ifUndefined(v, v2) {
94
+ return v === undefined ? v2 : v;
95
+ }function useForwardLayoutRef(ref, value, onSet, onUnset) {
96
+ useLayoutEffect(function () {
97
+ onSet === null || onSet === void 0 ? void 0 : onSet(value);
98
+ if (ref) {
99
+ if (typeof ref === 'function') {
100
+ ref(value);
101
+ }
102
+ else {
103
+ ref.current = value;
104
+ }
105
+ }
106
+ return function () {
107
+ onUnset === null || onUnset === void 0 ? void 0 : onUnset();
108
+ if (ref) {
109
+ if (typeof ref === 'function') {
110
+ ref(null);
111
+ }
112
+ else {
113
+ ref.current = null;
114
+ }
115
+ }
116
+ };
117
+ }, [onSet, onUnset, ref, value]);
118
+ }function useForwardRef(ref, value, onSet, onUnset) {
119
+ useEffect(function () {
120
+ onSet === null || onSet === void 0 ? void 0 : onSet(value);
121
+ if (ref) {
122
+ if (typeof ref === 'function') {
123
+ ref(value);
124
+ }
125
+ else {
126
+ ref.current = value;
127
+ }
128
+ }
129
+ return function () {
130
+ onUnset === null || onUnset === void 0 ? void 0 : onUnset();
131
+ if (ref) {
132
+ if (typeof ref === 'function') {
133
+ ref(null);
134
+ }
135
+ else {
136
+ ref.current = null;
137
+ }
138
+ }
139
+ };
140
+ }, [onSet, onUnset, ref, value]);
141
+ }function useMountedRef(initialValue) {
142
+ if (initialValue === void 0) { initialValue = true; }
143
+ var isMountedRef = useRef(initialValue);
144
+ useEffect(function () {
145
+ return function () {
146
+ isMountedRef.current = false;
147
+ };
148
+ }, []);
149
+ return isMountedRef;
150
+ }function useLayoutPerformance(name) {
151
+ var beginTime = performance.now();
152
+ useLayoutEffect(function () {
153
+ console.log('Layout Performance', '-', name, performance.now() - beginTime);
154
+ });
155
+ }function usePerformance(name) {
156
+ var beginTime = performance.now();
157
+ useEffect(function () {
158
+ console.log('Performance', '-', name, performance.now() - beginTime);
159
+ });
160
+ }function useAutoUpdateLayoutRef(value) {
161
+ var valueRef = useRef(value);
162
+ var _a = useState(0), setUpdateValue = _a[1];
163
+ useFirstSkipLayoutEffect(function () {
164
+ valueRef.current = value;
165
+ setUpdateValue(function (prev) { return prev + 1; });
166
+ }, [value]);
167
+ return valueRef;
168
+ }function useAutoUpdateRef(value) {
169
+ var valueRef = useRef(value);
170
+ var _a = useState(0), setUpdateValue = _a[1];
171
+ useFirstSkipEffect(function () {
172
+ valueRef.current = value;
173
+ setUpdateValue(function (prev) { return prev + 1; });
174
+ }, [value]);
175
+ return valueRef;
67
176
  }// 구현부
68
177
  function useAutoUpdateRefState(state, callback) {
69
178
  var valueRef = useRef(callback ? callback(state) : state);
70
179
  var _a = useState(function () { return (callback ? callback(state) : state); }), _value = _a[0], _setValue = _a[1];
71
180
  useFirstSkipEffect(function () {
72
181
  var newValue = callback ? callback(state) : state;
73
- if (!equal$1(valueRef.current, newValue)) {
182
+ if (!equal(valueRef.current, newValue)) {
74
183
  valueRef.current = newValue;
75
184
  _setValue(newValue);
76
185
  }
@@ -96,7 +205,7 @@ function useAutoUpdateRefState(state, callback) {
96
205
  /********************************************************************************************************************
97
206
  * equal
98
207
  * ******************************************************************************************************************/
99
- function equal$1(v1, v2) {
208
+ function equal(v1, v2) {
100
209
  if (v1 === v2)
101
210
  return true;
102
211
  if (typeof v1 !== typeof v2)
@@ -110,15 +219,10 @@ function equal$1(v1, v2) {
110
219
  return v1 === v2;
111
220
  }
112
221
  }// 구현부
113
- function useAutoUpdateLayoutRefState(state, callback) {
114
- var valueRef = useRef(callback ? callback(state) : state);
222
+ function useAutoUpdateState(state, callback) {
115
223
  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
- }
224
+ useFirstSkipEffect(function () {
225
+ _setValue(callback ? callback(state) : state);
122
226
  }, [state]);
123
227
  var setValue = useCallback(function (newValue, skipCallback) {
124
228
  var finalNewValue = newValue;
@@ -133,144 +237,32 @@ function useAutoUpdateLayoutRefState(state, callback) {
133
237
  finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
134
238
  _setValue(finalNewValue);
135
239
  }
136
- valueRef.current = finalNewValue;
137
240
  return finalNewValue;
138
241
  }, [callback]);
139
- return [valueRef, _value, setValue];
140
- }
141
- /********************************************************************************************************************
142
- * equal
143
- * ******************************************************************************************************************/
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
- }
157
- }function useForwardRef(ref, value) {
158
- useLayoutEffect(function () {
159
- if (ref) {
160
- if (typeof ref === 'function') {
161
- ref(value);
162
- }
163
- else {
164
- ref.current = value;
165
- }
166
- }
167
- return function () {
168
- if (ref) {
169
- if (typeof ref === 'function') {
170
- ref(null);
171
- }
172
- else {
173
- ref.current = null;
174
- }
175
- }
176
- };
177
- }, [ref, value]);
178
- }function useAutoUpdateRef(value) {
179
- var valueRef = useRef(value);
180
- var _a = useState(0), setUpdateValue = _a[1];
181
- useFirstSkipEffect(function () {
182
- valueRef.current = value;
183
- setUpdateValue(function (prev) { return prev + 1; });
184
- }, [value]);
185
- return valueRef;
186
- }function useAutoUpdateLayoutRef(value) {
187
- var valueRef = useRef(value);
188
- var _a = useState(0), setUpdateValue = _a[1];
189
- useFirstSkipLayoutEffect(function () {
190
- valueRef.current = value;
191
- setUpdateValue(function (prev) { return prev + 1; });
192
- }, [value]);
193
- return valueRef;
194
- }function usePerformance(name) {
195
- var beginTime = performance.now();
196
- useEffect(function () {
197
- console.log('Performance', '-', name, performance.now() - beginTime);
198
- });
199
- }function useLayoutPerformance(name) {
200
- var beginTime = performance.now();
201
- useLayoutEffect(function () {
202
- console.log('Layout Performance', '-', name, performance.now() - beginTime);
203
- });
204
- }function useAutoForceUpdate(interval) {
205
- var _a = useState(0), setTick = _a[1];
206
- useEffect(function () {
207
- var tm = setInterval(function () {
208
- setTick(function (old) {
209
- return old + 1;
242
+ return [_value, setValue];
243
+ }function useRefState(initialState) {
244
+ var _a = useState(initialState), _value = _a[0], _setValue = _a[1];
245
+ var valueRef = useRef(_value);
246
+ var setValue = useCallback(function (value) {
247
+ if (typeof value === 'function') {
248
+ _setValue(function (prev) {
249
+ var finalValue = value(prev);
250
+ valueRef.current = finalValue;
251
+ return finalValue;
210
252
  });
211
- }, interval);
212
- return function () {
213
- clearInterval(tm);
214
- };
215
- }, [interval]);
216
- }function clearTimeoutRef(ref) {
217
- if (ref.current) {
218
- clearTimeout(ref.current);
219
- ref.current = undefined;
220
- }
221
- }function useTimeoutRef() {
222
- var ref = useRef(undefined);
223
- useEffect(function () {
224
- return function () {
225
- clearTimeoutRef(ref);
226
- };
227
- }, []);
228
- var setTimeoutFunc = useCallback(function (callback, ms) {
229
- clearTimeoutRef(ref);
230
- ref.current = setTimeout(function () {
231
- ref.current = undefined;
232
- callback();
233
- }, ms);
234
- }, []);
235
- return [ref, setTimeoutFunc];
236
- }function useForceUpdate(delayMilliseconds) {
237
- var _a = useTimeoutRef(), setDelayTimeout = _a[1];
238
- var _b = useState(0), setValue = _b[1];
239
- return useCallback(function (delay) {
240
- if (ifUndefined(delay, delayMilliseconds) !== undefined) {
241
- setDelayTimeout(function () {
242
- setValue(function (old) { return old + 1; });
243
- }, ifUndefined(delay, delayMilliseconds));
244
253
  }
245
254
  else {
246
- setValue(function (old) { return old + 1; });
255
+ valueRef.current = value;
256
+ _setValue(value);
247
257
  }
248
- },
249
- // eslint-disable-next-line react-hooks/exhaustive-deps
250
- [delayMilliseconds]);
251
- }
252
- /********************************************************************************************************************
253
- * ifUndefined
254
- * ******************************************************************************************************************/
255
- function ifUndefined(v, v2) {
256
- return v === undefined ? v2 : v;
257
- }function clearIntervalRef(ref) {
258
- if (ref.current) {
259
- clearInterval(ref.current);
260
- ref.current = undefined;
261
- }
262
- }function useIntervalRef() {
263
- var ref = useRef(undefined);
264
- useEffect(function () {
265
- return function () {
266
- clearIntervalRef(ref);
267
- };
268
258
  }, []);
269
- var setIntervalFunc = useCallback(function (callback, ms) {
270
- clearIntervalRef(ref);
271
- ref.current = setInterval(function () {
272
- callback(ref);
273
- }, ms);
259
+ return [valueRef, _value, setValue];
260
+ }function useSafeUpdate() {
261
+ var mountedRef = useMountedRef();
262
+ return useCallback(function (callback) {
263
+ if (mountedRef.current) {
264
+ callback();
265
+ }
266
+ // eslint-disable-next-line react-hooks/exhaustive-deps
274
267
  }, []);
275
- return [ref, setIntervalFunc];
276
- }export{clearIntervalRef,clearTimeoutRef,useAutoForceUpdate,useAutoUpdateLayoutRef,useAutoUpdateLayoutRefState,useAutoUpdateLayoutState,useAutoUpdateRef,useAutoUpdateRefState,useAutoUpdateState,useFirstSkipEffect,useFirstSkipLayoutEffect,useForceUpdate,useForwardRef,useIntervalRef,useLayoutPerformance,usePerformance,useTimeoutRef};
268
+ }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,35 +20,166 @@ 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;
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;
58
29
  });
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;
39
+ }
40
+ }function clearTimeoutRef(ref) {
41
+ if (ref.current) {
42
+ clearTimeout(ref.current);
43
+ ref.current = undefined;
44
+ }
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));
59
82
  }
60
83
  else {
61
- finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
62
- _setValue(finalNewValue);
84
+ setValue(function (old) { return old + 1; });
63
85
  }
64
- return finalNewValue;
65
- }, [callback]);
66
- return [_value, setValue];
86
+ },
87
+ // eslint-disable-next-line react-hooks/exhaustive-deps
88
+ [delayMilliseconds]);
89
+ }
90
+ /********************************************************************************************************************
91
+ * ifUndefined
92
+ * ******************************************************************************************************************/
93
+ function ifUndefined(v, v2) {
94
+ return v === undefined ? v2 : v;
95
+ }function useForwardLayoutRef(ref, value, onSet, onUnset) {
96
+ react.useLayoutEffect(function () {
97
+ onSet === null || onSet === void 0 ? void 0 : onSet(value);
98
+ if (ref) {
99
+ if (typeof ref === 'function') {
100
+ ref(value);
101
+ }
102
+ else {
103
+ ref.current = value;
104
+ }
105
+ }
106
+ return function () {
107
+ onUnset === null || onUnset === void 0 ? void 0 : onUnset();
108
+ if (ref) {
109
+ if (typeof ref === 'function') {
110
+ ref(null);
111
+ }
112
+ else {
113
+ ref.current = null;
114
+ }
115
+ }
116
+ };
117
+ }, [onSet, onUnset, ref, value]);
118
+ }function useForwardRef(ref, value, onSet, onUnset) {
119
+ react.useEffect(function () {
120
+ onSet === null || onSet === void 0 ? void 0 : onSet(value);
121
+ if (ref) {
122
+ if (typeof ref === 'function') {
123
+ ref(value);
124
+ }
125
+ else {
126
+ ref.current = value;
127
+ }
128
+ }
129
+ return function () {
130
+ onUnset === null || onUnset === void 0 ? void 0 : onUnset();
131
+ if (ref) {
132
+ if (typeof ref === 'function') {
133
+ ref(null);
134
+ }
135
+ else {
136
+ ref.current = null;
137
+ }
138
+ }
139
+ };
140
+ }, [onSet, onUnset, ref, value]);
141
+ }function useMountedRef(initialValue) {
142
+ if (initialValue === void 0) { initialValue = true; }
143
+ var isMountedRef = react.useRef(initialValue);
144
+ react.useEffect(function () {
145
+ return function () {
146
+ isMountedRef.current = false;
147
+ };
148
+ }, []);
149
+ return isMountedRef;
150
+ }function useLayoutPerformance(name) {
151
+ var beginTime = performance.now();
152
+ react.useLayoutEffect(function () {
153
+ console.log('Layout Performance', '-', name, performance.now() - beginTime);
154
+ });
155
+ }function usePerformance(name) {
156
+ var beginTime = performance.now();
157
+ react.useEffect(function () {
158
+ console.log('Performance', '-', name, performance.now() - beginTime);
159
+ });
160
+ }function useAutoUpdateLayoutRef(value) {
161
+ var valueRef = react.useRef(value);
162
+ var _a = react.useState(0), setUpdateValue = _a[1];
163
+ useFirstSkipLayoutEffect(function () {
164
+ valueRef.current = value;
165
+ setUpdateValue(function (prev) { return prev + 1; });
166
+ }, [value]);
167
+ return valueRef;
168
+ }function useAutoUpdateRef(value) {
169
+ var valueRef = react.useRef(value);
170
+ var _a = react.useState(0), setUpdateValue = _a[1];
171
+ useFirstSkipEffect(function () {
172
+ valueRef.current = value;
173
+ setUpdateValue(function (prev) { return prev + 1; });
174
+ }, [value]);
175
+ return valueRef;
67
176
  }// 구현부
68
177
  function useAutoUpdateRefState(state, callback) {
69
178
  var valueRef = react.useRef(callback ? callback(state) : state);
70
179
  var _a = react.useState(function () { return (callback ? callback(state) : state); }), _value = _a[0], _setValue = _a[1];
71
180
  useFirstSkipEffect(function () {
72
181
  var newValue = callback ? callback(state) : state;
73
- if (!equal$1(valueRef.current, newValue)) {
182
+ if (!equal(valueRef.current, newValue)) {
74
183
  valueRef.current = newValue;
75
184
  _setValue(newValue);
76
185
  }
@@ -96,7 +205,7 @@ function useAutoUpdateRefState(state, callback) {
96
205
  /********************************************************************************************************************
97
206
  * equal
98
207
  * ******************************************************************************************************************/
99
- function equal$1(v1, v2) {
208
+ function equal(v1, v2) {
100
209
  if (v1 === v2)
101
210
  return true;
102
211
  if (typeof v1 !== typeof v2)
@@ -110,15 +219,10 @@ function equal$1(v1, v2) {
110
219
  return v1 === v2;
111
220
  }
112
221
  }// 구현부
113
- function useAutoUpdateLayoutRefState(state, callback) {
114
- var valueRef = react.useRef(callback ? callback(state) : state);
222
+ function useAutoUpdateState(state, callback) {
115
223
  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
- }
224
+ useFirstSkipEffect(function () {
225
+ _setValue(callback ? callback(state) : state);
122
226
  }, [state]);
123
227
  var setValue = react.useCallback(function (newValue, skipCallback) {
124
228
  var finalNewValue = newValue;
@@ -133,144 +237,32 @@ function useAutoUpdateLayoutRefState(state, callback) {
133
237
  finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
134
238
  _setValue(finalNewValue);
135
239
  }
136
- valueRef.current = finalNewValue;
137
240
  return finalNewValue;
138
241
  }, [callback]);
139
- return [valueRef, _value, setValue];
140
- }
141
- /********************************************************************************************************************
142
- * equal
143
- * ******************************************************************************************************************/
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
- }
157
- }function useForwardRef(ref, value) {
158
- react.useLayoutEffect(function () {
159
- if (ref) {
160
- if (typeof ref === 'function') {
161
- ref(value);
162
- }
163
- else {
164
- ref.current = value;
165
- }
166
- }
167
- return function () {
168
- if (ref) {
169
- if (typeof ref === 'function') {
170
- ref(null);
171
- }
172
- else {
173
- ref.current = null;
174
- }
175
- }
176
- };
177
- }, [ref, value]);
178
- }function useAutoUpdateRef(value) {
179
- var valueRef = react.useRef(value);
180
- var _a = react.useState(0), setUpdateValue = _a[1];
181
- useFirstSkipEffect(function () {
182
- valueRef.current = value;
183
- setUpdateValue(function (prev) { return prev + 1; });
184
- }, [value]);
185
- return valueRef;
186
- }function useAutoUpdateLayoutRef(value) {
187
- var valueRef = react.useRef(value);
188
- var _a = react.useState(0), setUpdateValue = _a[1];
189
- useFirstSkipLayoutEffect(function () {
190
- valueRef.current = value;
191
- setUpdateValue(function (prev) { return prev + 1; });
192
- }, [value]);
193
- return valueRef;
194
- }function usePerformance(name) {
195
- var beginTime = performance.now();
196
- react.useEffect(function () {
197
- console.log('Performance', '-', name, performance.now() - beginTime);
198
- });
199
- }function useLayoutPerformance(name) {
200
- var beginTime = performance.now();
201
- react.useLayoutEffect(function () {
202
- console.log('Layout Performance', '-', name, performance.now() - beginTime);
203
- });
204
- }function useAutoForceUpdate(interval) {
205
- var _a = react.useState(0), setTick = _a[1];
206
- react.useEffect(function () {
207
- var tm = setInterval(function () {
208
- setTick(function (old) {
209
- return old + 1;
242
+ return [_value, setValue];
243
+ }function useRefState(initialState) {
244
+ var _a = react.useState(initialState), _value = _a[0], _setValue = _a[1];
245
+ var valueRef = react.useRef(_value);
246
+ var setValue = react.useCallback(function (value) {
247
+ if (typeof value === 'function') {
248
+ _setValue(function (prev) {
249
+ var finalValue = value(prev);
250
+ valueRef.current = finalValue;
251
+ return finalValue;
210
252
  });
211
- }, interval);
212
- return function () {
213
- clearInterval(tm);
214
- };
215
- }, [interval]);
216
- }function clearTimeoutRef(ref) {
217
- if (ref.current) {
218
- clearTimeout(ref.current);
219
- ref.current = undefined;
220
- }
221
- }function useTimeoutRef() {
222
- var ref = react.useRef(undefined);
223
- react.useEffect(function () {
224
- return function () {
225
- clearTimeoutRef(ref);
226
- };
227
- }, []);
228
- var setTimeoutFunc = react.useCallback(function (callback, ms) {
229
- clearTimeoutRef(ref);
230
- ref.current = setTimeout(function () {
231
- ref.current = undefined;
232
- callback();
233
- }, ms);
234
- }, []);
235
- return [ref, setTimeoutFunc];
236
- }function useForceUpdate(delayMilliseconds) {
237
- var _a = useTimeoutRef(), setDelayTimeout = _a[1];
238
- var _b = react.useState(0), setValue = _b[1];
239
- return react.useCallback(function (delay) {
240
- if (ifUndefined(delay, delayMilliseconds) !== undefined) {
241
- setDelayTimeout(function () {
242
- setValue(function (old) { return old + 1; });
243
- }, ifUndefined(delay, delayMilliseconds));
244
253
  }
245
254
  else {
246
- setValue(function (old) { return old + 1; });
255
+ valueRef.current = value;
256
+ _setValue(value);
247
257
  }
248
- },
249
- // eslint-disable-next-line react-hooks/exhaustive-deps
250
- [delayMilliseconds]);
251
- }
252
- /********************************************************************************************************************
253
- * ifUndefined
254
- * ******************************************************************************************************************/
255
- function ifUndefined(v, v2) {
256
- return v === undefined ? v2 : v;
257
- }function clearIntervalRef(ref) {
258
- if (ref.current) {
259
- clearInterval(ref.current);
260
- ref.current = undefined;
261
- }
262
- }function useIntervalRef() {
263
- var ref = react.useRef(undefined);
264
- react.useEffect(function () {
265
- return function () {
266
- clearIntervalRef(ref);
267
- };
268
258
  }, []);
269
- var setIntervalFunc = react.useCallback(function (callback, ms) {
270
- clearIntervalRef(ref);
271
- ref.current = setInterval(function () {
272
- callback(ref);
273
- }, ms);
259
+ return [valueRef, _value, setValue];
260
+ }function useSafeUpdate() {
261
+ var mountedRef = useMountedRef();
262
+ return react.useCallback(function (callback) {
263
+ if (mountedRef.current) {
264
+ callback();
265
+ }
266
+ // eslint-disable-next-line react-hooks/exhaustive-deps
274
267
  }, []);
275
- return [ref, setIntervalFunc];
276
- }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.useForwardRef=useForwardRef;exports.useIntervalRef=useIntervalRef;exports.useLayoutPerformance=useLayoutPerformance;exports.usePerformance=usePerformance;exports.useTimeoutRef=useTimeoutRef;
268
+ }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.30",
4
+ "version": "1.0.32",
5
5
  "description": "React Hook",
6
6
  "type": "module",
7
7
  "types": "dist/index.d.ts",
@@ -25,8 +25,13 @@
25
25
  "dev-prd-lib": "cd examples && npm run dev-prd-lib",
26
26
  "build": "rollup -c --bundleConfigAsCjs",
27
27
  "pub": "npm i && npm run build && npm publish --access=public && rm ./.git/hooks/pre-commit",
28
- "lint": "eslint './src/**/*.{ts,tsx}'",
29
- "reinstall-module": "rm -rf node_modules && rm -f package-lock.json && npm i"
28
+ "git:commit": "node .git-commit.cjs",
29
+ "git:push": "git push",
30
+ "git:commit:push": "npm run git:commit && npm run git:push",
31
+ "reset:gitignore": "git rm -r --cached . && git add .",
32
+ "reinstall": "npm run reinstall:module",
33
+ "reinstall:module": "rm -rf node_modules && rm -f package-lock.json && npm i",
34
+ "lint": "eslint './src/**/*.{ts,tsx}'"
30
35
  },
31
36
  "author": "YOUNG CHUL PARK",
32
37
  "license": "MIT",
@@ -41,26 +46,26 @@
41
46
  "react": ">=17.0.0"
42
47
  },
43
48
  "devDependencies": {
49
+ "@eslint/js": "^9.28.0",
44
50
  "@rollup/plugin-commonjs": "^28.0.3",
45
51
  "@rollup/plugin-eslint": "^9.0.5",
46
52
  "@rollup/plugin-node-resolve": "^16.0.1",
47
- "@types/node": "^22.14.0",
53
+ "@types/node": "^22.15.29",
48
54
  "@types/react": "^19.1.6",
49
- "@typescript-eslint/eslint-plugin": "^8.29.1",
50
- "@typescript-eslint/parser": "^8.29.1",
51
- "eslint": "8.57.1",
52
- "eslint-config-prettier": "^10.1.2",
53
- "eslint-plugin-jsx-a11y": "^6.10.2",
54
- "eslint-plugin-prettier": "^5.2.6",
55
+ "@typescript-eslint/parser": "^8.33.0",
56
+ "eslint": "9.28.0",
57
+ "eslint-config-prettier": "^10.1.5",
58
+ "eslint-plugin-prettier": "^5.4.1",
55
59
  "eslint-plugin-react": "^7.37.5",
56
60
  "eslint-plugin-react-hooks": "^5.2.0",
57
61
  "prettier": "^3.5.3",
58
- "rollup": "^4.39.0",
62
+ "rollup": "^4.41.1",
59
63
  "rollup-plugin-delete": "^2.2.0",
60
64
  "rollup-plugin-peer-deps-external": "^2.2.4",
61
- "rollup-plugin-postcss": "^4.0.2",
65
+ "rollup-plugin-sass": "^1.15.2",
62
66
  "rollup-plugin-typescript2": "^0.36.0",
63
- "sass": "^1.86.3",
64
- "typescript": "^5.8.3"
67
+ "sass": "^1.89.1",
68
+ "typescript": "^5.8.3",
69
+ "typescript-eslint": "^8.33.0"
65
70
  }
66
71
  }
@@ -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;