@pdg/react-hook 1.0.28 → 1.0.30
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 +1 -1
- package/dist/index.esm.js +42 -2
- package/dist/index.js +45 -5
- package/package.json +2 -3
package/README.md
CHANGED
package/dist/index.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {useRef,useEffect,useState,useCallback,useLayoutEffect}from'react';
|
|
1
|
+
import {useRef,useEffect,useState,useCallback,useLayoutEffect}from'react';function useFirstSkipEffect(effect, deps) {
|
|
2
2
|
var firstRef = useRef(true);
|
|
3
3
|
useEffect(function () {
|
|
4
4
|
if (firstRef.current) {
|
|
@@ -70,7 +70,7 @@ function useAutoUpdateRefState(state, callback) {
|
|
|
70
70
|
var _a = useState(function () { return (callback ? callback(state) : state); }), _value = _a[0], _setValue = _a[1];
|
|
71
71
|
useFirstSkipEffect(function () {
|
|
72
72
|
var newValue = callback ? callback(state) : state;
|
|
73
|
-
if (!equal(valueRef.current, newValue)) {
|
|
73
|
+
if (!equal$1(valueRef.current, newValue)) {
|
|
74
74
|
valueRef.current = newValue;
|
|
75
75
|
_setValue(newValue);
|
|
76
76
|
}
|
|
@@ -92,6 +92,23 @@ function useAutoUpdateRefState(state, callback) {
|
|
|
92
92
|
return finalNewValue;
|
|
93
93
|
}, [callback]);
|
|
94
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);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
return v1 === v2;
|
|
111
|
+
}
|
|
95
112
|
}// 구현부
|
|
96
113
|
function useAutoUpdateLayoutRefState(state, callback) {
|
|
97
114
|
var valueRef = useRef(callback ? callback(state) : state);
|
|
@@ -120,6 +137,23 @@ function useAutoUpdateLayoutRefState(state, callback) {
|
|
|
120
137
|
return finalNewValue;
|
|
121
138
|
}, [callback]);
|
|
122
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
|
+
}
|
|
123
157
|
}function useForwardRef(ref, value) {
|
|
124
158
|
useLayoutEffect(function () {
|
|
125
159
|
if (ref) {
|
|
@@ -214,6 +248,12 @@ function useAutoUpdateLayoutRefState(state, callback) {
|
|
|
214
248
|
},
|
|
215
249
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
216
250
|
[delayMilliseconds]);
|
|
251
|
+
}
|
|
252
|
+
/********************************************************************************************************************
|
|
253
|
+
* ifUndefined
|
|
254
|
+
* ******************************************************************************************************************/
|
|
255
|
+
function ifUndefined(v, v2) {
|
|
256
|
+
return v === undefined ? v2 : v;
|
|
217
257
|
}function clearIntervalRef(ref) {
|
|
218
258
|
if (ref.current) {
|
|
219
259
|
clearInterval(ref.current);
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';var react=require('react')
|
|
1
|
+
'use strict';var react=require('react');function useFirstSkipEffect(effect, deps) {
|
|
2
2
|
var firstRef = react.useRef(true);
|
|
3
3
|
react.useEffect(function () {
|
|
4
4
|
if (firstRef.current) {
|
|
@@ -70,7 +70,7 @@ function useAutoUpdateRefState(state, callback) {
|
|
|
70
70
|
var _a = react.useState(function () { return (callback ? callback(state) : state); }), _value = _a[0], _setValue = _a[1];
|
|
71
71
|
useFirstSkipEffect(function () {
|
|
72
72
|
var newValue = callback ? callback(state) : state;
|
|
73
|
-
if (!
|
|
73
|
+
if (!equal$1(valueRef.current, newValue)) {
|
|
74
74
|
valueRef.current = newValue;
|
|
75
75
|
_setValue(newValue);
|
|
76
76
|
}
|
|
@@ -92,13 +92,30 @@ function useAutoUpdateRefState(state, callback) {
|
|
|
92
92
|
return finalNewValue;
|
|
93
93
|
}, [callback]);
|
|
94
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);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
return v1 === v2;
|
|
111
|
+
}
|
|
95
112
|
}// 구현부
|
|
96
113
|
function useAutoUpdateLayoutRefState(state, callback) {
|
|
97
114
|
var valueRef = react.useRef(callback ? callback(state) : state);
|
|
98
115
|
var _a = react.useState(function () { return (callback ? callback(state) : state); }), _value = _a[0], _setValue = _a[1];
|
|
99
116
|
useFirstSkipLayoutEffect(function () {
|
|
100
117
|
var newValue = callback ? callback(state) : state;
|
|
101
|
-
if (!
|
|
118
|
+
if (!equal(valueRef.current, newValue)) {
|
|
102
119
|
valueRef.current = newValue;
|
|
103
120
|
_setValue(newValue);
|
|
104
121
|
}
|
|
@@ -120,6 +137,23 @@ function useAutoUpdateLayoutRefState(state, callback) {
|
|
|
120
137
|
return finalNewValue;
|
|
121
138
|
}, [callback]);
|
|
122
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
|
+
}
|
|
123
157
|
}function useForwardRef(ref, value) {
|
|
124
158
|
react.useLayoutEffect(function () {
|
|
125
159
|
if (ref) {
|
|
@@ -203,10 +237,10 @@ function useAutoUpdateLayoutRefState(state, callback) {
|
|
|
203
237
|
var _a = useTimeoutRef(), setDelayTimeout = _a[1];
|
|
204
238
|
var _b = react.useState(0), setValue = _b[1];
|
|
205
239
|
return react.useCallback(function (delay) {
|
|
206
|
-
if (
|
|
240
|
+
if (ifUndefined(delay, delayMilliseconds) !== undefined) {
|
|
207
241
|
setDelayTimeout(function () {
|
|
208
242
|
setValue(function (old) { return old + 1; });
|
|
209
|
-
},
|
|
243
|
+
}, ifUndefined(delay, delayMilliseconds));
|
|
210
244
|
}
|
|
211
245
|
else {
|
|
212
246
|
setValue(function (old) { return old + 1; });
|
|
@@ -214,6 +248,12 @@ function useAutoUpdateLayoutRefState(state, callback) {
|
|
|
214
248
|
},
|
|
215
249
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
216
250
|
[delayMilliseconds]);
|
|
251
|
+
}
|
|
252
|
+
/********************************************************************************************************************
|
|
253
|
+
* ifUndefined
|
|
254
|
+
* ******************************************************************************************************************/
|
|
255
|
+
function ifUndefined(v, v2) {
|
|
256
|
+
return v === undefined ? v2 : v;
|
|
217
257
|
}function clearIntervalRef(ref) {
|
|
218
258
|
if (ref.current) {
|
|
219
259
|
clearInterval(ref.current);
|
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.
|
|
4
|
+
"version": "1.0.30",
|
|
5
5
|
"description": "React Hook",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -38,8 +38,6 @@
|
|
|
38
38
|
"javascript"
|
|
39
39
|
],
|
|
40
40
|
"peerDependencies": {
|
|
41
|
-
"@pdg/util": "^1.0.23",
|
|
42
|
-
"@types/react": ">=17.0.0",
|
|
43
41
|
"react": ">=17.0.0"
|
|
44
42
|
},
|
|
45
43
|
"devDependencies": {
|
|
@@ -47,6 +45,7 @@
|
|
|
47
45
|
"@rollup/plugin-eslint": "^9.0.5",
|
|
48
46
|
"@rollup/plugin-node-resolve": "^16.0.1",
|
|
49
47
|
"@types/node": "^22.14.0",
|
|
48
|
+
"@types/react": "^19.1.6",
|
|
50
49
|
"@typescript-eslint/eslint-plugin": "^8.29.1",
|
|
51
50
|
"@typescript-eslint/parser": "^8.29.1",
|
|
52
51
|
"eslint": "8.57.1",
|