@pdg/react-hook 1.0.39 → 1.0.41

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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @pdg/react-hook
2
2
 
3
- Admin Layout for React
3
+ Typescript React Hook Module
4
4
 
5
5
  ## 설치
6
6
  ```
package/dist/index.esm.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {useRef,useEffect,useLayoutEffect,useState,useCallback}from'react';function useFirstSkipEffect(effect, deps) {
2
- var firstRef = useRef(true);
3
- useEffect(function () {
2
+ const firstRef = useRef(true);
3
+ useEffect(() => {
4
4
  if (firstRef.current) {
5
5
  firstRef.current = false;
6
6
  }
@@ -10,8 +10,8 @@ import {useRef,useEffect,useLayoutEffect,useState,useCallback}from'react';functi
10
10
  // eslint-disable-next-line react-hooks/exhaustive-deps
11
11
  }, deps);
12
12
  }function useFirstSkipLayoutEffect(effect, deps) {
13
- var firstRef = useRef(true);
14
- useLayoutEffect(function () {
13
+ const firstRef = useRef(true);
14
+ useLayoutEffect(() => {
15
15
  if (firstRef.current) {
16
16
  firstRef.current = false;
17
17
  }
@@ -21,14 +21,14 @@ import {useRef,useEffect,useLayoutEffect,useState,useCallback}from'react';functi
21
21
  // eslint-disable-next-line react-hooks/exhaustive-deps
22
22
  }, deps);
23
23
  }function useAutoForceUpdate(interval) {
24
- var _a = useState(0), setTick = _a[1];
25
- useEffect(function () {
26
- var tm = setInterval(function () {
27
- setTick(function (old) {
24
+ const [, setTick] = useState(0);
25
+ useEffect(() => {
26
+ const tm = setInterval(() => {
27
+ setTick((old) => {
28
28
  return old + 1;
29
29
  });
30
30
  }, interval);
31
- return function () {
31
+ return () => {
32
32
  clearInterval(tm);
33
33
  };
34
34
  }, [interval]);
@@ -43,45 +43,45 @@ import {useRef,useEffect,useLayoutEffect,useState,useCallback}from'react';functi
43
43
  ref.current = undefined;
44
44
  }
45
45
  }function useIntervalRef() {
46
- var ref = useRef(undefined);
47
- useEffect(function () {
48
- return function () {
46
+ const ref = useRef(undefined);
47
+ useEffect(() => {
48
+ return () => {
49
49
  clearIntervalRef(ref);
50
50
  };
51
51
  }, []);
52
- var setIntervalFunc = useCallback(function (callback, ms) {
52
+ const setIntervalFunc = useCallback((callback, ms) => {
53
53
  clearIntervalRef(ref);
54
- ref.current = setInterval(function () {
54
+ ref.current = setInterval(() => {
55
55
  callback(ref);
56
56
  }, ms);
57
57
  }, []);
58
58
  return [ref, setIntervalFunc];
59
59
  }function useTimeoutRef() {
60
- var ref = useRef(undefined);
61
- useEffect(function () {
62
- return function () {
60
+ const ref = useRef(undefined);
61
+ useEffect(() => {
62
+ return () => {
63
63
  clearTimeoutRef(ref);
64
64
  };
65
65
  }, []);
66
- var setTimeoutFunc = useCallback(function (callback, ms) {
66
+ const setTimeoutFunc = useCallback((callback, ms) => {
67
67
  clearTimeoutRef(ref);
68
- ref.current = setTimeout(function () {
68
+ ref.current = setTimeout(() => {
69
69
  ref.current = undefined;
70
70
  callback();
71
71
  }, ms);
72
72
  }, []);
73
73
  return [ref, setTimeoutFunc];
74
74
  }function useForceUpdate(delayMilliseconds) {
75
- var _a = useTimeoutRef(), setDelayTimeout = _a[1];
76
- var _b = useState(0), setValue = _b[1];
77
- return useCallback(function (delay) {
75
+ const [, setDelayTimeout] = useTimeoutRef();
76
+ const [, setValue] = useState(0);
77
+ return useCallback((delay) => {
78
78
  if (ifUndefined(delay, delayMilliseconds) !== undefined) {
79
- setDelayTimeout(function () {
80
- setValue(function (old) { return old + 1; });
79
+ setDelayTimeout(() => {
80
+ setValue((old) => old + 1);
81
81
  }, ifUndefined(delay, delayMilliseconds));
82
82
  }
83
83
  else {
84
- setValue(function (old) { return old + 1; });
84
+ setValue((old) => old + 1);
85
85
  }
86
86
  },
87
87
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -93,7 +93,7 @@ import {useRef,useEffect,useLayoutEffect,useState,useCallback}from'react';functi
93
93
  function ifUndefined(v, v2) {
94
94
  return v === undefined ? v2 : v;
95
95
  }function useForwardLayoutRef(ref, value, onSet, onUnset) {
96
- useLayoutEffect(function () {
96
+ useLayoutEffect(() => {
97
97
  onSet === null || onSet === void 0 ? void 0 : onSet(value);
98
98
  if (ref) {
99
99
  if (typeof ref === 'function') {
@@ -103,7 +103,7 @@ function ifUndefined(v, v2) {
103
103
  ref.current = value;
104
104
  }
105
105
  }
106
- return function () {
106
+ return () => {
107
107
  onUnset === null || onUnset === void 0 ? void 0 : onUnset();
108
108
  if (ref) {
109
109
  if (typeof ref === 'function') {
@@ -116,7 +116,7 @@ function ifUndefined(v, v2) {
116
116
  };
117
117
  }, [onSet, onUnset, ref, value]);
118
118
  }function useForwardRef(ref, value, onSet, onUnset) {
119
- useEffect(function () {
119
+ useEffect(() => {
120
120
  onSet === null || onSet === void 0 ? void 0 : onSet(value);
121
121
  if (ref) {
122
122
  if (typeof ref === 'function') {
@@ -126,7 +126,7 @@ function ifUndefined(v, v2) {
126
126
  ref.current = value;
127
127
  }
128
128
  }
129
- return function () {
129
+ return () => {
130
130
  onUnset === null || onUnset === void 0 ? void 0 : onUnset();
131
131
  if (ref) {
132
132
  if (typeof ref === 'function') {
@@ -138,57 +138,56 @@ function ifUndefined(v, v2) {
138
138
  }
139
139
  };
140
140
  }, [onSet, onUnset, ref, value]);
141
- }function useMountedRef(initialValue) {
142
- if (initialValue === void 0) { initialValue = true; }
143
- var isMountedRef = useRef(initialValue);
144
- useEffect(function () {
141
+ }function useMountedRef(initialValue = true) {
142
+ const isMountedRef = useRef(initialValue);
143
+ useEffect(() => {
145
144
  isMountedRef.current = true;
146
- return function () {
145
+ return () => {
147
146
  isMountedRef.current = false;
148
147
  };
149
148
  }, []);
150
149
  return isMountedRef;
151
150
  }function useLayoutPerformance(name) {
152
- var beginTime = performance.now();
153
- useLayoutEffect(function () {
151
+ const beginTime = performance.now();
152
+ useLayoutEffect(() => {
154
153
  console.log('Layout Performance', '-', name, performance.now() - beginTime);
155
154
  });
156
155
  }function usePerformance(name) {
157
- var beginTime = performance.now();
158
- useEffect(function () {
156
+ const beginTime = performance.now();
157
+ useEffect(() => {
159
158
  console.log('Performance', '-', name, performance.now() - beginTime);
160
159
  });
161
160
  }function useAutoUpdateLayoutRef(value) {
162
- var valueRef = useRef(value);
163
- var _a = useState(0), setUpdateValue = _a[1];
164
- useFirstSkipLayoutEffect(function () {
161
+ const valueRef = useRef(value);
162
+ const [, setUpdateValue] = useState(0);
163
+ useFirstSkipLayoutEffect(() => {
165
164
  valueRef.current = value;
166
- setUpdateValue(function (prev) { return prev + 1; });
165
+ setUpdateValue((prev) => prev + 1);
167
166
  }, [value]);
168
167
  return valueRef;
169
168
  }function useAutoUpdateRef(value) {
170
- var valueRef = useRef(value);
171
- var _a = useState(0), setUpdateValue = _a[1];
172
- useFirstSkipEffect(function () {
169
+ const valueRef = useRef(value);
170
+ const [, setUpdateValue] = useState(0);
171
+ useFirstSkipEffect(() => {
173
172
  valueRef.current = value;
174
- setUpdateValue(function (prev) { return prev + 1; });
173
+ setUpdateValue((prev) => prev + 1);
175
174
  }, [value]);
176
175
  return valueRef;
177
176
  }// 구현부
178
177
  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;
178
+ const valueRef = useRef(callback ? callback(state) : state);
179
+ const [_value, _setValue] = useState(() => (callback ? callback(state) : state));
180
+ useFirstSkipEffect(() => {
181
+ const newValue = callback ? callback(state) : state;
183
182
  if (!equal(valueRef.current, newValue)) {
184
183
  valueRef.current = newValue;
185
184
  _setValue(newValue);
186
185
  }
187
186
  }, [state]);
188
- var setValue = useCallback(function (newValue, skipCallback) {
189
- var finalNewValue = newValue;
187
+ const setValue = useCallback((newValue, skipCallback) => {
188
+ let finalNewValue = newValue;
190
189
  if (typeof finalNewValue === 'function') {
191
- _setValue(function (prev) {
190
+ _setValue((prev) => {
192
191
  finalNewValue = finalNewValue(prev);
193
192
  finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
194
193
  return finalNewValue;
@@ -221,14 +220,14 @@ function equal(v1, v2) {
221
220
  }
222
221
  }// 구현부
223
222
  function useAutoUpdateState(state, callback) {
224
- var _a = useState(function () { return (callback ? callback(state) : state); }), _value = _a[0], _setValue = _a[1];
225
- useFirstSkipEffect(function () {
223
+ const [_value, _setValue] = useState(() => (callback ? callback(state) : state));
224
+ useFirstSkipEffect(() => {
226
225
  _setValue(callback ? callback(state) : state);
227
226
  }, [state]);
228
- var setValue = useCallback(function (newValue, skipCallback) {
229
- var finalNewValue = newValue;
227
+ const setValue = useCallback((newValue, skipCallback) => {
228
+ let finalNewValue = newValue;
230
229
  if (typeof finalNewValue === 'function') {
231
- _setValue(function (prev) {
230
+ _setValue((prev) => {
232
231
  finalNewValue = finalNewValue(prev);
233
232
  finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
234
233
  return finalNewValue;
@@ -242,12 +241,12 @@ function useAutoUpdateState(state, callback) {
242
241
  }, [callback]);
243
242
  return [_value, setValue];
244
243
  }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) {
244
+ const [_value, _setValue] = useState(initialState);
245
+ const valueRef = useRef(_value);
246
+ const setValue = useCallback((value) => {
248
247
  if (typeof value === 'function') {
249
- _setValue(function (prev) {
250
- var finalValue = value(prev);
248
+ _setValue((prev) => {
249
+ const finalValue = value(prev);
251
250
  valueRef.current = finalValue;
252
251
  return finalValue;
253
252
  });
@@ -258,12 +257,22 @@ function useAutoUpdateState(state, callback) {
258
257
  }
259
258
  }, []);
260
259
  return [valueRef, _value, setValue];
260
+ }function useSafeState(initialState) {
261
+ const mountedRef = useMountedRef();
262
+ const [value, setValue] = useState(initialState);
263
+ const safeSetValue = useCallback((newValue) => {
264
+ if (mountedRef.current) {
265
+ setValue(newValue);
266
+ }
267
+ // eslint-disable-next-line react-hooks/exhaustive-deps
268
+ }, []);
269
+ return [value, safeSetValue];
261
270
  }function useSafeUpdate() {
262
- var mountedRef = useMountedRef();
263
- return useCallback(function (callback) {
271
+ const mountedRef = useMountedRef();
272
+ return useCallback((callback) => {
264
273
  if (mountedRef.current) {
265
274
  callback();
266
275
  }
267
276
  // eslint-disable-next-line react-hooks/exhaustive-deps
268
277
  }, []);
269
- }export{clearIntervalRef,clearTimeoutRef,useAutoForceUpdate,useAutoUpdateLayoutRef,useAutoUpdateRef,useAutoUpdateRefState,useAutoUpdateState,useFirstSkipEffect,useFirstSkipLayoutEffect,useForceUpdate,useForwardLayoutRef,useForwardRef,useIntervalRef,useLayoutPerformance,useMountedRef,usePerformance,useRefState,useSafeUpdate,useTimeoutRef};
278
+ }export{clearIntervalRef,clearTimeoutRef,useAutoForceUpdate,useAutoUpdateLayoutRef,useAutoUpdateRef,useAutoUpdateRefState,useAutoUpdateState,useFirstSkipEffect,useFirstSkipLayoutEffect,useForceUpdate,useForwardLayoutRef,useForwardRef,useIntervalRef,useLayoutPerformance,useMountedRef,usePerformance,useRefState,useSafeState,useSafeUpdate,useTimeoutRef};
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';var react=require('react');function useFirstSkipEffect(effect, deps) {
2
- var firstRef = react.useRef(true);
3
- react.useEffect(function () {
2
+ const firstRef = react.useRef(true);
3
+ react.useEffect(() => {
4
4
  if (firstRef.current) {
5
5
  firstRef.current = false;
6
6
  }
@@ -10,8 +10,8 @@
10
10
  // eslint-disable-next-line react-hooks/exhaustive-deps
11
11
  }, deps);
12
12
  }function useFirstSkipLayoutEffect(effect, deps) {
13
- var firstRef = react.useRef(true);
14
- react.useLayoutEffect(function () {
13
+ const firstRef = react.useRef(true);
14
+ react.useLayoutEffect(() => {
15
15
  if (firstRef.current) {
16
16
  firstRef.current = false;
17
17
  }
@@ -21,14 +21,14 @@
21
21
  // eslint-disable-next-line react-hooks/exhaustive-deps
22
22
  }, deps);
23
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) {
24
+ const [, setTick] = react.useState(0);
25
+ react.useEffect(() => {
26
+ const tm = setInterval(() => {
27
+ setTick((old) => {
28
28
  return old + 1;
29
29
  });
30
30
  }, interval);
31
- return function () {
31
+ return () => {
32
32
  clearInterval(tm);
33
33
  };
34
34
  }, [interval]);
@@ -43,45 +43,45 @@
43
43
  ref.current = undefined;
44
44
  }
45
45
  }function useIntervalRef() {
46
- var ref = react.useRef(undefined);
47
- react.useEffect(function () {
48
- return function () {
46
+ const ref = react.useRef(undefined);
47
+ react.useEffect(() => {
48
+ return () => {
49
49
  clearIntervalRef(ref);
50
50
  };
51
51
  }, []);
52
- var setIntervalFunc = react.useCallback(function (callback, ms) {
52
+ const setIntervalFunc = react.useCallback((callback, ms) => {
53
53
  clearIntervalRef(ref);
54
- ref.current = setInterval(function () {
54
+ ref.current = setInterval(() => {
55
55
  callback(ref);
56
56
  }, ms);
57
57
  }, []);
58
58
  return [ref, setIntervalFunc];
59
59
  }function useTimeoutRef() {
60
- var ref = react.useRef(undefined);
61
- react.useEffect(function () {
62
- return function () {
60
+ const ref = react.useRef(undefined);
61
+ react.useEffect(() => {
62
+ return () => {
63
63
  clearTimeoutRef(ref);
64
64
  };
65
65
  }, []);
66
- var setTimeoutFunc = react.useCallback(function (callback, ms) {
66
+ const setTimeoutFunc = react.useCallback((callback, ms) => {
67
67
  clearTimeoutRef(ref);
68
- ref.current = setTimeout(function () {
68
+ ref.current = setTimeout(() => {
69
69
  ref.current = undefined;
70
70
  callback();
71
71
  }, ms);
72
72
  }, []);
73
73
  return [ref, setTimeoutFunc];
74
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) {
75
+ const [, setDelayTimeout] = useTimeoutRef();
76
+ const [, setValue] = react.useState(0);
77
+ return react.useCallback((delay) => {
78
78
  if (ifUndefined(delay, delayMilliseconds) !== undefined) {
79
- setDelayTimeout(function () {
80
- setValue(function (old) { return old + 1; });
79
+ setDelayTimeout(() => {
80
+ setValue((old) => old + 1);
81
81
  }, ifUndefined(delay, delayMilliseconds));
82
82
  }
83
83
  else {
84
- setValue(function (old) { return old + 1; });
84
+ setValue((old) => old + 1);
85
85
  }
86
86
  },
87
87
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -93,7 +93,7 @@
93
93
  function ifUndefined(v, v2) {
94
94
  return v === undefined ? v2 : v;
95
95
  }function useForwardLayoutRef(ref, value, onSet, onUnset) {
96
- react.useLayoutEffect(function () {
96
+ react.useLayoutEffect(() => {
97
97
  onSet === null || onSet === void 0 ? void 0 : onSet(value);
98
98
  if (ref) {
99
99
  if (typeof ref === 'function') {
@@ -103,7 +103,7 @@ function ifUndefined(v, v2) {
103
103
  ref.current = value;
104
104
  }
105
105
  }
106
- return function () {
106
+ return () => {
107
107
  onUnset === null || onUnset === void 0 ? void 0 : onUnset();
108
108
  if (ref) {
109
109
  if (typeof ref === 'function') {
@@ -116,7 +116,7 @@ function ifUndefined(v, v2) {
116
116
  };
117
117
  }, [onSet, onUnset, ref, value]);
118
118
  }function useForwardRef(ref, value, onSet, onUnset) {
119
- react.useEffect(function () {
119
+ react.useEffect(() => {
120
120
  onSet === null || onSet === void 0 ? void 0 : onSet(value);
121
121
  if (ref) {
122
122
  if (typeof ref === 'function') {
@@ -126,7 +126,7 @@ function ifUndefined(v, v2) {
126
126
  ref.current = value;
127
127
  }
128
128
  }
129
- return function () {
129
+ return () => {
130
130
  onUnset === null || onUnset === void 0 ? void 0 : onUnset();
131
131
  if (ref) {
132
132
  if (typeof ref === 'function') {
@@ -138,57 +138,56 @@ function ifUndefined(v, v2) {
138
138
  }
139
139
  };
140
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 () {
141
+ }function useMountedRef(initialValue = true) {
142
+ const isMountedRef = react.useRef(initialValue);
143
+ react.useEffect(() => {
145
144
  isMountedRef.current = true;
146
- return function () {
145
+ return () => {
147
146
  isMountedRef.current = false;
148
147
  };
149
148
  }, []);
150
149
  return isMountedRef;
151
150
  }function useLayoutPerformance(name) {
152
- var beginTime = performance.now();
153
- react.useLayoutEffect(function () {
151
+ const beginTime = performance.now();
152
+ react.useLayoutEffect(() => {
154
153
  console.log('Layout Performance', '-', name, performance.now() - beginTime);
155
154
  });
156
155
  }function usePerformance(name) {
157
- var beginTime = performance.now();
158
- react.useEffect(function () {
156
+ const beginTime = performance.now();
157
+ react.useEffect(() => {
159
158
  console.log('Performance', '-', name, performance.now() - beginTime);
160
159
  });
161
160
  }function useAutoUpdateLayoutRef(value) {
162
- var valueRef = react.useRef(value);
163
- var _a = react.useState(0), setUpdateValue = _a[1];
164
- useFirstSkipLayoutEffect(function () {
161
+ const valueRef = react.useRef(value);
162
+ const [, setUpdateValue] = react.useState(0);
163
+ useFirstSkipLayoutEffect(() => {
165
164
  valueRef.current = value;
166
- setUpdateValue(function (prev) { return prev + 1; });
165
+ setUpdateValue((prev) => prev + 1);
167
166
  }, [value]);
168
167
  return valueRef;
169
168
  }function useAutoUpdateRef(value) {
170
- var valueRef = react.useRef(value);
171
- var _a = react.useState(0), setUpdateValue = _a[1];
172
- useFirstSkipEffect(function () {
169
+ const valueRef = react.useRef(value);
170
+ const [, setUpdateValue] = react.useState(0);
171
+ useFirstSkipEffect(() => {
173
172
  valueRef.current = value;
174
- setUpdateValue(function (prev) { return prev + 1; });
173
+ setUpdateValue((prev) => prev + 1);
175
174
  }, [value]);
176
175
  return valueRef;
177
176
  }// 구현부
178
177
  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;
178
+ const valueRef = react.useRef(callback ? callback(state) : state);
179
+ const [_value, _setValue] = react.useState(() => (callback ? callback(state) : state));
180
+ useFirstSkipEffect(() => {
181
+ const newValue = callback ? callback(state) : state;
183
182
  if (!equal(valueRef.current, newValue)) {
184
183
  valueRef.current = newValue;
185
184
  _setValue(newValue);
186
185
  }
187
186
  }, [state]);
188
- var setValue = react.useCallback(function (newValue, skipCallback) {
189
- var finalNewValue = newValue;
187
+ const setValue = react.useCallback((newValue, skipCallback) => {
188
+ let finalNewValue = newValue;
190
189
  if (typeof finalNewValue === 'function') {
191
- _setValue(function (prev) {
190
+ _setValue((prev) => {
192
191
  finalNewValue = finalNewValue(prev);
193
192
  finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
194
193
  return finalNewValue;
@@ -221,14 +220,14 @@ function equal(v1, v2) {
221
220
  }
222
221
  }// 구현부
223
222
  function useAutoUpdateState(state, callback) {
224
- var _a = react.useState(function () { return (callback ? callback(state) : state); }), _value = _a[0], _setValue = _a[1];
225
- useFirstSkipEffect(function () {
223
+ const [_value, _setValue] = react.useState(() => (callback ? callback(state) : state));
224
+ useFirstSkipEffect(() => {
226
225
  _setValue(callback ? callback(state) : state);
227
226
  }, [state]);
228
- var setValue = react.useCallback(function (newValue, skipCallback) {
229
- var finalNewValue = newValue;
227
+ const setValue = react.useCallback((newValue, skipCallback) => {
228
+ let finalNewValue = newValue;
230
229
  if (typeof finalNewValue === 'function') {
231
- _setValue(function (prev) {
230
+ _setValue((prev) => {
232
231
  finalNewValue = finalNewValue(prev);
233
232
  finalNewValue = !skipCallback && callback ? callback(finalNewValue) : finalNewValue;
234
233
  return finalNewValue;
@@ -242,12 +241,12 @@ function useAutoUpdateState(state, callback) {
242
241
  }, [callback]);
243
242
  return [_value, setValue];
244
243
  }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) {
244
+ const [_value, _setValue] = react.useState(initialState);
245
+ const valueRef = react.useRef(_value);
246
+ const setValue = react.useCallback((value) => {
248
247
  if (typeof value === 'function') {
249
- _setValue(function (prev) {
250
- var finalValue = value(prev);
248
+ _setValue((prev) => {
249
+ const finalValue = value(prev);
251
250
  valueRef.current = finalValue;
252
251
  return finalValue;
253
252
  });
@@ -258,12 +257,22 @@ function useAutoUpdateState(state, callback) {
258
257
  }
259
258
  }, []);
260
259
  return [valueRef, _value, setValue];
260
+ }function useSafeState(initialState) {
261
+ const mountedRef = useMountedRef();
262
+ const [value, setValue] = react.useState(initialState);
263
+ const safeSetValue = react.useCallback((newValue) => {
264
+ if (mountedRef.current) {
265
+ setValue(newValue);
266
+ }
267
+ // eslint-disable-next-line react-hooks/exhaustive-deps
268
+ }, []);
269
+ return [value, safeSetValue];
261
270
  }function useSafeUpdate() {
262
- var mountedRef = useMountedRef();
263
- return react.useCallback(function (callback) {
271
+ const mountedRef = useMountedRef();
272
+ return react.useCallback((callback) => {
264
273
  if (mountedRef.current) {
265
274
  callback();
266
275
  }
267
276
  // eslint-disable-next-line react-hooks/exhaustive-deps
268
277
  }, []);
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;
278
+ }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.useSafeState=useSafeState;exports.useSafeUpdate=useSafeUpdate;exports.useTimeoutRef=useTimeoutRef;
@@ -1 +1,3 @@
1
- export {};
1
+ import { Dispatch, SetStateAction } from 'react';
2
+ export declare function useSafeState<S>(initialState: S | (() => S)): [S, Dispatch<SetStateAction<S>>];
3
+ export declare function useSafeState<S = undefined>(): [S | undefined, Dispatch<SetStateAction<S | undefined>>];
package/package.json CHANGED
@@ -1,12 +1,19 @@
1
1
  {
2
2
  "name": "@pdg/react-hook",
3
- "title": "React Hook",
4
- "version": "1.0.39",
5
- "description": "React Hook",
3
+ "title": "Typescript React Hook Module",
4
+ "description": "Typescript React Hook Module",
5
+ "version": "1.0.41",
6
6
  "type": "module",
7
- "types": "dist/index.d.ts",
8
- "main": "dist/index.js",
9
- "module": "dist/index.esm.js",
7
+ "main": "./dist/index.js",
8
+ "module": "./dist/index.esm.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.esm.js",
14
+ "require": "./dist/index.js"
15
+ }
16
+ },
10
17
  "repository": {
11
18
  "type": "git",
12
19
  "url": "git+https://github.com/parkdigy/react-hook.git",
@@ -22,51 +29,55 @@
22
29
  ],
23
30
  "scripts": {
24
31
  "dev": "cd examples && npm run dev",
25
- "dev-prd-lib": "cd examples && npm run dev-prd-lib",
26
- "build": "rollup -c --bundleConfigAsCjs",
27
- "pub": "npm i && npm run build && npm publish --access=public && rm ./.git/hooks/pre-commit",
32
+ "watchman:del": "watchman watch-del \"${PWD}\" ; watchman watch-project \"${PWD}\"",
33
+ "build:examples": "cd examples && npm run build",
34
+ "build": "npm run watchman:del && npm run lint && rollup -c --bundleConfigAsCjs",
28
35
  "git:commit": "node .git-commit.cjs",
29
36
  "git:push": "git push",
30
37
  "git:commit:push": "npm run git:commit && npm run git:push",
38
+ "git:merge:mirror": "node .git-merge.cjs mirror main",
31
39
  "reset:gitignore": "git rm -r --cached . && git add .",
40
+ "pub": "npm i && npm run build:examples && npm run build && npm publish --access=public && rm ./.git/hooks/pre-commit",
41
+ "lint": "eslint './src/**/*.{ts,tsx}'",
32
42
  "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}'"
43
+ "reinstall:module": "rm -rf node_modules && rm -f package-lock.json && npm i"
35
44
  },
36
45
  "author": "YOUNG CHUL PARK",
37
46
  "license": "MIT",
38
47
  "readmeFilename": "README.md",
39
48
  "keywords": [
40
- "react",
41
- "hook",
49
+ "util",
42
50
  "typescript",
43
51
  "javascript"
44
52
  ],
45
53
  "peerDependencies": {
46
- "react": ">=17.0.0"
54
+ "react": ">=17.0.0",
55
+ "react-dom": ">=17.0.0"
47
56
  },
48
57
  "devDependencies": {
49
- "@eslint/js": "^9.28.0",
50
- "@pdg/types": "^1.0.6",
51
- "@rollup/plugin-commonjs": "^28.0.3",
52
- "@rollup/plugin-eslint": "^9.0.5",
53
- "@rollup/plugin-node-resolve": "^16.0.1",
54
- "@types/node": "^22.15.29",
55
- "@types/react": "^19.1.6",
56
- "@typescript-eslint/parser": "^8.33.0",
57
- "eslint": "9.28.0",
58
- "eslint-config-prettier": "^10.1.5",
59
- "eslint-plugin-prettier": "^5.4.1",
60
- "eslint-plugin-react": "^7.37.5",
61
- "eslint-plugin-react-hooks": "^5.2.0",
62
- "prettier": "^3.5.3",
63
- "rollup": "^4.41.1",
64
- "rollup-plugin-delete": "^2.2.0",
65
- "rollup-plugin-peer-deps-external": "^2.2.4",
66
- "rollup-plugin-sass": "^1.15.2",
67
- "rollup-plugin-typescript2": "^0.36.0",
68
- "sass": "^1.89.1",
69
- "typescript": "^5.8.3",
70
- "typescript-eslint": "^8.33.0"
58
+ "@eslint/js": "9.39.1",
59
+ "@pdg/types": "1.0.9",
60
+ "@rollup/plugin-commonjs": "29.0.0",
61
+ "@rollup/plugin-node-resolve": "16.0.3",
62
+ "@types/node": "^22.19.2",
63
+ "@types/react": "19.2.7",
64
+ "@typescript-eslint/parser": "8.49.0",
65
+ "eslint": "9.39.1",
66
+ "eslint-config-prettier": "10.1.8",
67
+ "eslint-plugin-prettier": "5.5.4",
68
+ "eslint-plugin-react": "7.37.5",
69
+ "eslint-plugin-react-hooks": "5.2.0",
70
+ "eslint-plugin-react-refresh": "0.4.24",
71
+ "globals": "^16.5.0",
72
+ "prettier": "3.7.4",
73
+ "rollup": "4.53.3",
74
+ "rollup-plugin-delete": "2.2.0",
75
+ "rollup-plugin-peer-deps-external": "2.2.4",
76
+ "rollup-plugin-sass": "1.15.3",
77
+ "rollup-plugin-typescript2": "0.36.0",
78
+ "sass": "1.95.1",
79
+ "ts-node": "10.9.2",
80
+ "typescript": "5.9.3",
81
+ "typescript-eslint": "8.49.0"
71
82
  }
72
83
  }