@tamagui/is-equal-shallow 1.129.12 → 1.129.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +11 -11
- package/dist/cjs/index.js +11 -10
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.native.js +9 -13
- package/dist/cjs/index.native.js.map +2 -2
- package/dist/esm/index.js +11 -10
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +11 -11
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +9 -11
- package/dist/esm/index.native.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +26 -17
- package/types/index.d.ts +3 -3
- package/types/index.d.ts.map +6 -7
package/dist/cjs/index.cjs
CHANGED
|
@@ -26,18 +26,18 @@ __export(index_exports, {
|
|
|
26
26
|
});
|
|
27
27
|
module.exports = __toCommonJS(index_exports);
|
|
28
28
|
var import_react = require("react");
|
|
29
|
-
function useCreateShallowSetState(setter,
|
|
30
|
-
return (0, import_react.useCallback)(
|
|
31
|
-
setter(prev =>
|
|
32
|
-
|
|
29
|
+
function useCreateShallowSetState(setter, debug) {
|
|
30
|
+
return (0, import_react.useCallback)(stateOrGetState => {
|
|
31
|
+
setter(prev => {
|
|
32
|
+
const next = typeof stateOrGetState == "function" ? stateOrGetState(prev) : stateOrGetState,
|
|
33
|
+
update = mergeIfNotShallowEqual(prev, next);
|
|
34
|
+
if (process.env.NODE_ENV === "development" && debug && update !== prev && (console.groupCollapsed("setStateShallow CHANGE", "=>", update), console.info("previously", prev), console.trace(), console.groupEnd(), debug === "break")) debugger;
|
|
35
|
+
return update;
|
|
36
|
+
});
|
|
37
|
+
}, [setter, debug]);
|
|
33
38
|
}
|
|
34
|
-
function mergeIfNotShallowEqual(prev, next
|
|
35
|
-
|
|
36
|
-
if (process.env.NODE_ENV === "development" && debug && (console.info("setStateShallow CHANGE", {
|
|
37
|
-
prev,
|
|
38
|
-
next
|
|
39
|
-
}), debug === "break")) debugger;
|
|
40
|
-
return {
|
|
39
|
+
function mergeIfNotShallowEqual(prev, next) {
|
|
40
|
+
return !prev || !next || isEqualShallow(prev, next) ? prev || next : {
|
|
41
41
|
...prev,
|
|
42
42
|
...next
|
|
43
43
|
};
|
package/dist/cjs/index.js
CHANGED
|
@@ -20,20 +20,21 @@ __export(index_exports, {
|
|
|
20
20
|
});
|
|
21
21
|
module.exports = __toCommonJS(index_exports);
|
|
22
22
|
var import_react = require("react");
|
|
23
|
-
function useCreateShallowSetState(setter,
|
|
23
|
+
function useCreateShallowSetState(setter, debug) {
|
|
24
24
|
return (0, import_react.useCallback)(
|
|
25
|
-
(
|
|
26
|
-
setter((prev) =>
|
|
25
|
+
(stateOrGetState) => {
|
|
26
|
+
setter((prev) => {
|
|
27
|
+
const next = typeof stateOrGetState == "function" ? stateOrGetState(prev) : stateOrGetState, update = mergeIfNotShallowEqual(prev, next);
|
|
28
|
+
if (process.env.NODE_ENV === "development" && debug && update !== prev && (console.groupCollapsed("setStateShallow CHANGE", "=>", update), console.info("previously", prev), console.trace(), console.groupEnd(), debug === "break"))
|
|
29
|
+
debugger;
|
|
30
|
+
return update;
|
|
31
|
+
});
|
|
27
32
|
},
|
|
28
|
-
[setter,
|
|
33
|
+
[setter, debug]
|
|
29
34
|
);
|
|
30
35
|
}
|
|
31
|
-
function mergeIfNotShallowEqual(prev, next
|
|
32
|
-
|
|
33
|
-
return prev || next;
|
|
34
|
-
if (process.env.NODE_ENV === "development" && debug && (console.info("setStateShallow CHANGE", { prev, next }), debug === "break"))
|
|
35
|
-
debugger;
|
|
36
|
-
return { ...prev, ...next };
|
|
36
|
+
function mergeIfNotShallowEqual(prev, next) {
|
|
37
|
+
return !prev || !next || isEqualShallow(prev, next) ? prev || next : { ...prev, ...next };
|
|
37
38
|
}
|
|
38
39
|
function isEqualShallow(prev, next) {
|
|
39
40
|
for (const key in next)
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA4B;AAMrB,SAAS,yBACd,QACA,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA4B;AAMrB,SAAS,yBACd,QACA,OACsD;AAEtD,aAAO;AAAA,IACL,CAAC,oBAAoB;AACnB,aAAO,CAAC,SAAS;AACf,cAAM,OACJ,OAAO,mBAAoB,aAAa,gBAAgB,IAAI,IAAI,iBAC5D,SAAS,uBAAuB,MAAM,IAAI;AAEhD,YAAI,QAAQ,IAAI,aAAa,iBACvB,SAAS,WAAW,SACtB,QAAQ,eAAe,0BAA0B,MAAM,MAAM,GAC7D,QAAQ,KAAK,cAAc,IAAI,GAC/B,QAAQ,MAAM,GACd,QAAQ,SAAS,GACb,UAAU;AAEZ;AAIN,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAAC,QAAQ,KAAK;AAAA,EAChB;AACF;AAEO,SAAS,uBACd,MACA,MACO;AACP,SAAI,CAAC,QAAQ,CAAC,QAAQ,eAAe,MAAM,IAAI,IACxC,QAAa,OAGb,EAAE,GAAG,MAAM,GAAG,KAAK;AAC5B;AAEO,SAAS,eACd,MACA,MACS;AACT,aAAW,OAAO;AAChB,QAAI,KAAK,GAAG,MAAM,KAAK,GAAG;AACxB,aAAO;AAGX,SAAO;AACT;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/cjs/index.native.js
CHANGED
|
@@ -21,25 +21,21 @@ __export(index_exports, {
|
|
|
21
21
|
});
|
|
22
22
|
module.exports = __toCommonJS(index_exports);
|
|
23
23
|
var import_react = require("react");
|
|
24
|
-
function useCreateShallowSetState(setter,
|
|
25
|
-
return (0, import_react.useCallback)(function(
|
|
24
|
+
function useCreateShallowSetState(setter, debug) {
|
|
25
|
+
return (0, import_react.useCallback)(function(stateOrGetState) {
|
|
26
26
|
setter(function(prev) {
|
|
27
|
-
|
|
27
|
+
var next = typeof stateOrGetState == "function" ? stateOrGetState(prev) : stateOrGetState, update = mergeIfNotShallowEqual(prev, next);
|
|
28
|
+
if (process.env.NODE_ENV === "development" && debug && update !== prev && (console.groupCollapsed("setStateShallow CHANGE", "=>", update), console.info("previously", prev), console.trace(), console.groupEnd(), debug === "break"))
|
|
29
|
+
debugger;
|
|
30
|
+
return update;
|
|
28
31
|
});
|
|
29
32
|
}, [
|
|
30
33
|
setter,
|
|
31
|
-
|
|
34
|
+
debug
|
|
32
35
|
]);
|
|
33
36
|
}
|
|
34
|
-
function mergeIfNotShallowEqual(prev, next
|
|
35
|
-
|
|
36
|
-
return prev || next;
|
|
37
|
-
if (process.env.NODE_ENV === "development" && debug && (console.info("setStateShallow CHANGE", {
|
|
38
|
-
prev,
|
|
39
|
-
next
|
|
40
|
-
}), debug === "break"))
|
|
41
|
-
debugger;
|
|
42
|
-
return {
|
|
37
|
+
function mergeIfNotShallowEqual(prev, next) {
|
|
38
|
+
return !prev || !next || isEqualShallow(prev, next) ? prev || next : {
|
|
43
39
|
...prev,
|
|
44
40
|
...next
|
|
45
41
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;AAAA;;;;;;;mBAA4B;AAMrB,SAASA,yBACdC,QACAC,
|
|
5
|
-
"names": ["useCreateShallowSetState", "setter", "
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;AAAA;;;;;;;mBAA4B;AAMrB,SAASA,yBACdC,QACAC,OAAiB;AAGjB,aAAOC,0BACL,SAACC,iBAAAA;AACCH,WAAO,SAACI,MAAAA;AACN,UAAMC,OACJ,OAAOF,mBAAoB,aAAaA,gBAAgBC,IAAAA,IAAQD,iBAC5DG,SAASC,uBAAuBH,MAAMC,IAAAA;AAE5C,UAAIG,QAAQC,IAAIC,aAAa,iBACvBT,SAASK,WAAWF,SACtBO,QAAQC,eAAe,0BAA0B,MAAMN,MAAAA,GACvDK,QAAQE,KAAK,cAAcT,IAAAA,GAC3BO,QAAQG,MAAK,GACbH,QAAQI,SAAQ,GACZd,UAAU;AAEZ;AAIN,aAAOK;IACT,CAAA;EACF,GACA;IAACN;IAAQC;GAAM;AAEnB;AAEO,SAASM,uBACdH,MACAC,MAAoB;AAEpB,SAAI,CAACD,QAAQ,CAACC,QAAQW,eAAeZ,MAAMC,IAAAA,IACpCD,QAAaC,OAGb;IAAE,GAAGD;IAAM,GAAGC;EAAK;AAC5B;AAEO,SAASW,eACdZ,MACAC,MAA6B;AAE7B,WAAWY,OAAOZ;AAChB,QAAID,KAAKa,GAAAA,MAASZ,KAAKY,GAAAA;AACrB,aAAO;AAGX,SAAO;AACT;",
|
|
5
|
+
"names": ["useCreateShallowSetState", "setter", "debug", "useCallback", "stateOrGetState", "prev", "next", "update", "mergeIfNotShallowEqual", "process", "env", "NODE_ENV", "console", "groupCollapsed", "info", "trace", "groupEnd", "isEqualShallow", "key"]
|
|
6
6
|
}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import { useCallback } from "react";
|
|
2
|
-
function useCreateShallowSetState(setter,
|
|
2
|
+
function useCreateShallowSetState(setter, debug) {
|
|
3
3
|
return useCallback(
|
|
4
|
-
(
|
|
5
|
-
setter((prev) =>
|
|
4
|
+
(stateOrGetState) => {
|
|
5
|
+
setter((prev) => {
|
|
6
|
+
const next = typeof stateOrGetState == "function" ? stateOrGetState(prev) : stateOrGetState, update = mergeIfNotShallowEqual(prev, next);
|
|
7
|
+
if (process.env.NODE_ENV === "development" && debug && update !== prev && (console.groupCollapsed("setStateShallow CHANGE", "=>", update), console.info("previously", prev), console.trace(), console.groupEnd(), debug === "break"))
|
|
8
|
+
debugger;
|
|
9
|
+
return update;
|
|
10
|
+
});
|
|
6
11
|
},
|
|
7
|
-
[setter,
|
|
12
|
+
[setter, debug]
|
|
8
13
|
);
|
|
9
14
|
}
|
|
10
|
-
function mergeIfNotShallowEqual(prev, next
|
|
11
|
-
|
|
12
|
-
return prev || next;
|
|
13
|
-
if (process.env.NODE_ENV === "development" && debug && (console.info("setStateShallow CHANGE", { prev, next }), debug === "break"))
|
|
14
|
-
debugger;
|
|
15
|
-
return { ...prev, ...next };
|
|
15
|
+
function mergeIfNotShallowEqual(prev, next) {
|
|
16
|
+
return !prev || !next || isEqualShallow(prev, next) ? prev || next : { ...prev, ...next };
|
|
16
17
|
}
|
|
17
18
|
function isEqualShallow(prev, next) {
|
|
18
19
|
for (const key in next)
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,mBAAmB;AAMrB,SAAS,yBACd,QACA,
|
|
4
|
+
"mappings": "AAAA,SAAS,mBAAmB;AAMrB,SAAS,yBACd,QACA,OACsD;AAEtD,SAAO;AAAA,IACL,CAAC,oBAAoB;AACnB,aAAO,CAAC,SAAS;AACf,cAAM,OACJ,OAAO,mBAAoB,aAAa,gBAAgB,IAAI,IAAI,iBAC5D,SAAS,uBAAuB,MAAM,IAAI;AAEhD,YAAI,QAAQ,IAAI,aAAa,iBACvB,SAAS,WAAW,SACtB,QAAQ,eAAe,0BAA0B,MAAM,MAAM,GAC7D,QAAQ,KAAK,cAAc,IAAI,GAC/B,QAAQ,MAAM,GACd,QAAQ,SAAS,GACb,UAAU;AAEZ;AAIN,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAAC,QAAQ,KAAK;AAAA,EAChB;AACF;AAEO,SAAS,uBACd,MACA,MACO;AACP,SAAI,CAAC,QAAQ,CAAC,QAAQ,eAAe,MAAM,IAAI,IACxC,QAAa,OAGb,EAAE,GAAG,MAAM,GAAG,KAAK;AAC5B;AAEO,SAAS,eACd,MACA,MACS;AACT,aAAW,OAAO;AAChB,QAAI,KAAK,GAAG,MAAM,KAAK,GAAG;AACxB,aAAO;AAGX,SAAO;AACT;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { useCallback } from "react";
|
|
2
|
-
function useCreateShallowSetState(setter,
|
|
3
|
-
return useCallback(
|
|
4
|
-
setter(prev =>
|
|
5
|
-
|
|
2
|
+
function useCreateShallowSetState(setter, debug) {
|
|
3
|
+
return useCallback(stateOrGetState => {
|
|
4
|
+
setter(prev => {
|
|
5
|
+
const next = typeof stateOrGetState == "function" ? stateOrGetState(prev) : stateOrGetState,
|
|
6
|
+
update = mergeIfNotShallowEqual(prev, next);
|
|
7
|
+
if (process.env.NODE_ENV === "development" && debug && update !== prev && (console.groupCollapsed("setStateShallow CHANGE", "=>", update), console.info("previously", prev), console.trace(), console.groupEnd(), debug === "break")) debugger;
|
|
8
|
+
return update;
|
|
9
|
+
});
|
|
10
|
+
}, [setter, debug]);
|
|
6
11
|
}
|
|
7
|
-
function mergeIfNotShallowEqual(prev, next
|
|
8
|
-
|
|
9
|
-
if (process.env.NODE_ENV === "development" && debug && (console.info("setStateShallow CHANGE", {
|
|
10
|
-
prev,
|
|
11
|
-
next
|
|
12
|
-
}), debug === "break")) debugger;
|
|
13
|
-
return {
|
|
12
|
+
function mergeIfNotShallowEqual(prev, next) {
|
|
13
|
+
return !prev || !next || isEqualShallow(prev, next) ? prev || next : {
|
|
14
14
|
...prev,
|
|
15
15
|
...next
|
|
16
16
|
};
|
package/dist/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useCreateShallowSetState","setter","
|
|
1
|
+
{"version":3,"names":["useCallback","useCreateShallowSetState","setter","debug","stateOrGetState","prev","next","update","mergeIfNotShallowEqual","process","env","NODE_ENV","console","groupCollapsed","info","trace","groupEnd","isEqualShallow","key"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,WAAA,QAAmB;AAMrB,SAASC,yBACdC,MAAA,EACAC,KAAA,EACsD;EAEtD,OAAOH,WAAA,CACJI,eAAA,IAAoB;IACnBF,MAAA,CAAQG,IAAA,IAAS;MACf,MAAMC,IAAA,GACJ,OAAOF,eAAA,IAAoB,aAAaA,eAAA,CAAgBC,IAAI,IAAID,eAAA;QAC5DG,MAAA,GAASC,sBAAA,CAAuBH,IAAA,EAAMC,IAAI;MAEhD,IAAIG,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,iBACvBR,KAAA,IAASI,MAAA,KAAWF,IAAA,KACtBO,OAAA,CAAQC,cAAA,CAAe,0BAA0B,MAAMN,MAAM,GAC7DK,OAAA,CAAQE,IAAA,CAAK,cAAcT,IAAI,GAC/BO,OAAA,CAAQG,KAAA,CAAM,GACdH,OAAA,CAAQI,QAAA,CAAS,GACbb,KAAA,KAAU,UAEZ;MAIN,OAAOI,MAAA;IACT,CAAC;EACH,GACA,CAACL,MAAA,EAAQC,KAAK,CAChB;AACF;AAEO,SAASK,uBACdH,IAAA,EACAC,IAAA,EACO;EACP,OAAI,CAACD,IAAA,IAAQ,CAACC,IAAA,IAAQW,cAAA,CAAeZ,IAAA,EAAMC,IAAI,IACxCD,IAAA,IAAaC,IAAA,GAGb;IAAE,GAAGD,IAAA;IAAM,GAAGC;EAAK;AAC5B;AAEO,SAASW,eACdZ,IAAA,EACAC,IAAA,EACS;EACT,WAAWY,GAAA,IAAOZ,IAAA,EAChB,IAAID,IAAA,CAAKa,GAAG,MAAMZ,IAAA,CAAKY,GAAG,GACxB,OAAO;EAGX,OAAO;AACT","ignoreList":[]}
|
package/dist/esm/index.native.js
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
import { useCallback } from "react";
|
|
2
|
-
function useCreateShallowSetState(setter,
|
|
3
|
-
return useCallback(function (
|
|
2
|
+
function useCreateShallowSetState(setter, debug) {
|
|
3
|
+
return useCallback(function (stateOrGetState) {
|
|
4
4
|
setter(function (prev) {
|
|
5
|
-
|
|
5
|
+
var next = typeof stateOrGetState == "function" ? stateOrGetState(prev) : stateOrGetState,
|
|
6
|
+
update = mergeIfNotShallowEqual(prev, next);
|
|
7
|
+
if (process.env.NODE_ENV === "development" && debug && update !== prev && (console.groupCollapsed("setStateShallow CHANGE", "=>", update), console.info("previously", prev), console.trace(), console.groupEnd(), debug === "break")) debugger;
|
|
8
|
+
return update;
|
|
6
9
|
});
|
|
7
|
-
}, [setter,
|
|
10
|
+
}, [setter, debug]);
|
|
8
11
|
}
|
|
9
|
-
function mergeIfNotShallowEqual(prev, next
|
|
10
|
-
|
|
11
|
-
if (process.env.NODE_ENV === "development" && debug && (console.info("setStateShallow CHANGE", {
|
|
12
|
-
prev,
|
|
13
|
-
next
|
|
14
|
-
}), debug === "break")) debugger;
|
|
15
|
-
return {
|
|
12
|
+
function mergeIfNotShallowEqual(prev, next) {
|
|
13
|
+
return !prev || !next || isEqualShallow(prev, next) ? prev || next : {
|
|
16
14
|
...prev,
|
|
17
15
|
...next
|
|
18
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useCreateShallowSetState","setter","
|
|
1
|
+
{"version":3,"names":["useCallback","useCreateShallowSetState","setter","debug","stateOrGetState","prev","next","update","mergeIfNotShallowEqual","process","env","NODE_ENV","console","groupCollapsed","info","trace","groupEnd","isEqualShallow","key"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,WAAA,QAAmB;AAMrB,SAASC,yBACdC,MAAA,EACAC,KAAA,EACsD;EAEtD,OAAOH,WAAA,WAAAI,eAAA;IACLF,MAAC,WAAAG,IAAA,EAAoB;MACnB,IAAAC,IAAQ,UAASF,eAAA,iBAAAA,eAAA,CAAAC,IAAA,IAAAD,eAAA;QAAAG,MAAA,GAAAC,sBAAA,CAAAH,IAAA,EAAAC,IAAA;MACf,IAAAG,OAAM,CAAAC,GACJ,CAAAC,QAAO,kBAAoB,IAAAR,KAAA,IAAaI,MAAA,KAAAF,IAAgB,KAAIO,OAAI,CAAAC,cAC5D,yBAAS,MAAuB,EAAAN,MAAM,CAAI,EAAAK,OAAA,CAAAE,IAAA,eAAAT,IAAA,GAAAO,OAAA,CAAAG,KAAA,IAAAH,OAAA,CAAAI,QAAA,IAAAb,KAAA,eAEhD;MAQM,OAAAI,MAAA;IAIN;EAAO,IAEXL,MAAA,EACAC,KAAC,CACH;AACF;AAEO,SAASK,uBACdH,IAAA,EACAC,IAAA,EACO;EACP,OAAI,CAACD,IAAA,IAAQ,CAACC,IAAA,IAAQW,cAAA,CAAeZ,IAAA,EAAMC,IAAI,IACxCD,IAAA,IAAaC,IAAA,GAGb;IACT,GAAAD,IAAA;IAEO,GAAAC;EAIL;AACE;AACE,SAAAW,cAAOA,CAAAZ,IAAA,EAAAC,IAAA;EAGX,SAAOY,GAAA,IAAAZ,IAAA,EACT,IAAAD,IAAA,CAAAa,GAAA,MAAAZ,IAAA,CAAAY,GAAA,G","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/is-equal-shallow",
|
|
3
|
-
"version": "1.129.
|
|
3
|
+
"version": "1.129.13",
|
|
4
4
|
"types": "./types/index.d.ts",
|
|
5
5
|
"main": "dist/cjs",
|
|
6
6
|
"module": "dist/esm",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"clean:build": "tamagui-build clean:build"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"@tamagui/build": "1.129.
|
|
21
|
+
"@tamagui/build": "1.129.13"
|
|
22
22
|
},
|
|
23
23
|
"exports": {
|
|
24
24
|
"./package.json": "./package.json",
|
package/src/index.ts
CHANGED
|
@@ -6,41 +6,50 @@ export type CallbackSetState<State> = (next: (cb: State) => State) => void
|
|
|
6
6
|
|
|
7
7
|
export function useCreateShallowSetState<State extends Record<string, unknown>>(
|
|
8
8
|
setter: CallbackSetState<State>,
|
|
9
|
-
|
|
10
|
-
):
|
|
9
|
+
debug?: DebugProp
|
|
10
|
+
): React.Dispatch<React.SetStateAction<Partial<State>>> {
|
|
11
11
|
// this must be memoized or it ruins performance in components
|
|
12
12
|
return useCallback(
|
|
13
|
-
(
|
|
13
|
+
(stateOrGetState) => {
|
|
14
14
|
setter((prev) => {
|
|
15
|
-
|
|
15
|
+
const next =
|
|
16
|
+
typeof stateOrGetState === 'function' ? stateOrGetState(prev) : stateOrGetState
|
|
17
|
+
const update = mergeIfNotShallowEqual(prev, next)
|
|
18
|
+
|
|
19
|
+
if (process.env.NODE_ENV === 'development') {
|
|
20
|
+
if (debug && update !== prev) {
|
|
21
|
+
console.groupCollapsed(`setStateShallow CHANGE`, '=>', update)
|
|
22
|
+
console.info(`previously`, prev)
|
|
23
|
+
console.trace()
|
|
24
|
+
console.groupEnd()
|
|
25
|
+
if (debug === 'break') {
|
|
26
|
+
// biome-ignore lint/suspicious/noDebugger: <explanation>
|
|
27
|
+
debugger
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return update
|
|
16
32
|
})
|
|
17
33
|
},
|
|
18
|
-
[setter,
|
|
34
|
+
[setter, debug]
|
|
19
35
|
)
|
|
20
36
|
}
|
|
21
37
|
|
|
22
38
|
export function mergeIfNotShallowEqual<State extends Record<string, unknown>>(
|
|
23
39
|
prev: State,
|
|
24
|
-
next: Partial<State
|
|
25
|
-
debug?: DebugProp
|
|
40
|
+
next: Partial<State>
|
|
26
41
|
): State {
|
|
27
42
|
if (!prev || !next || isEqualShallow(prev, next)) {
|
|
28
43
|
if (!prev) return next as State
|
|
29
44
|
return prev
|
|
30
45
|
}
|
|
31
|
-
if (process.env.NODE_ENV === 'development') {
|
|
32
|
-
if (debug) {
|
|
33
|
-
console.info(`setStateShallow CHANGE`, { prev, next })
|
|
34
|
-
if (debug === 'break') {
|
|
35
|
-
// biome-ignore lint/suspicious/noDebugger: <explanation>
|
|
36
|
-
debugger
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
46
|
return { ...prev, ...next }
|
|
41
47
|
}
|
|
42
48
|
|
|
43
|
-
export function isEqualShallow(
|
|
49
|
+
export function isEqualShallow(
|
|
50
|
+
prev: Record<string, unknown>,
|
|
51
|
+
next: Record<string, unknown>
|
|
52
|
+
): boolean {
|
|
44
53
|
for (const key in next) {
|
|
45
54
|
if (prev[key] !== next[key]) {
|
|
46
55
|
return false
|
package/types/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
type DebugProp = null | undefined | boolean | "profile" | "verbose" | "break";
|
|
2
2
|
export type CallbackSetState<State> = (next: (cb: State) => State) => void;
|
|
3
|
-
export declare function useCreateShallowSetState<State extends Record<string, unknown>>(setter: CallbackSetState<State>,
|
|
4
|
-
export declare function mergeIfNotShallowEqual<State extends Record<string, unknown>>(prev: State, next: Partial<State
|
|
5
|
-
export declare function isEqualShallow(prev:
|
|
3
|
+
export declare function useCreateShallowSetState<State extends Record<string, unknown>>(setter: CallbackSetState<State>, debug?: DebugProp): React.Dispatch<React.SetStateAction<Partial<State>>>;
|
|
4
|
+
export declare function mergeIfNotShallowEqual<State extends Record<string, unknown>>(prev: State, next: Partial<State>): State;
|
|
5
|
+
export declare function isEqualShallow(prev: Record<string, unknown>, next: Record<string, unknown>): boolean;
|
|
6
6
|
export {};
|
|
7
7
|
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
package/types/index.d.ts.map
CHANGED
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
{
|
|
2
|
-
"mappings": "KAEK,yCAAyC,YAAY,YAAY;AAEtE,YAAY,iBAAiB,UAAUA,OAAOC,IAAI,UAAU;AAE5D,OAAO,iBAAS,yBAAyB,cAAc,yBACrDC,QAAQ,iBAAiB,QACzBC,
|
|
2
|
+
"mappings": "KAEK,yCAAyC,YAAY,YAAY;AAEtE,YAAY,iBAAiB,UAAUA,OAAOC,IAAI,UAAU;AAE5D,OAAO,iBAAS,yBAAyB,cAAc,yBACrDC,QAAQ,iBAAiB,QACzBC,QAAQ,YACP,MAAM,SAAS,MAAM,eAAe,QAAQ;AA4B/C,OAAO,iBAAS,uBAAuB,cAAc,yBACnDC,MAAM,OACNC,MAAM,QAAQ,SACb;AAQH,OAAO,iBAAS,eACdC,MAAM,yBACNC,MAAM",
|
|
3
3
|
"names": [
|
|
4
4
|
"next: (cb: State) => State",
|
|
5
5
|
"cb: State",
|
|
6
6
|
"setter: CallbackSetState<State>",
|
|
7
|
-
"debugIn?: DebugProp",
|
|
8
|
-
"next: Partial<State>",
|
|
9
|
-
"prev: State",
|
|
10
7
|
"debug?: DebugProp",
|
|
11
|
-
"prev:
|
|
12
|
-
"next:
|
|
8
|
+
"prev: State",
|
|
9
|
+
"next: Partial<State>",
|
|
10
|
+
"prev: Record<string, unknown>",
|
|
11
|
+
"next: Record<string, unknown>"
|
|
13
12
|
],
|
|
14
13
|
"sources": [
|
|
15
14
|
"src/index.ts"
|
|
16
15
|
],
|
|
17
16
|
"sourcesContent": [
|
|
18
|
-
"import { useCallback } from 'react'\n\ntype DebugProp = null | undefined | boolean | 'profile' | 'verbose' | 'break'\n\nexport type CallbackSetState<State> = (next: (cb: State) => State) => void\n\nexport function useCreateShallowSetState<State extends Record<string, unknown>>(\n setter: CallbackSetState<State>,\n
|
|
17
|
+
"import { useCallback } from 'react'\n\ntype DebugProp = null | undefined | boolean | 'profile' | 'verbose' | 'break'\n\nexport type CallbackSetState<State> = (next: (cb: State) => State) => void\n\nexport function useCreateShallowSetState<State extends Record<string, unknown>>(\n setter: CallbackSetState<State>,\n debug?: DebugProp\n): React.Dispatch<React.SetStateAction<Partial<State>>> {\n // this must be memoized or it ruins performance in components\n return useCallback(\n (stateOrGetState) => {\n setter((prev) => {\n const next =\n typeof stateOrGetState === 'function' ? stateOrGetState(prev) : stateOrGetState\n const update = mergeIfNotShallowEqual(prev, next)\n\n if (process.env.NODE_ENV === 'development') {\n if (debug && update !== prev) {\n console.groupCollapsed(`setStateShallow CHANGE`, '=>', update)\n console.info(`previously`, prev)\n console.trace()\n console.groupEnd()\n if (debug === 'break') {\n // biome-ignore lint/suspicious/noDebugger: <explanation>\n debugger\n }\n }\n }\n return update\n })\n },\n [setter, debug]\n )\n}\n\nexport function mergeIfNotShallowEqual<State extends Record<string, unknown>>(\n prev: State,\n next: Partial<State>\n): State {\n if (!prev || !next || isEqualShallow(prev, next)) {\n if (!prev) return next as State\n return prev\n }\n return { ...prev, ...next }\n}\n\nexport function isEqualShallow(\n prev: Record<string, unknown>,\n next: Record<string, unknown>\n): boolean {\n for (const key in next) {\n if (prev[key] !== next[key]) {\n return false\n }\n }\n return true\n}\n"
|
|
19
18
|
],
|
|
20
19
|
"version": 3
|
|
21
20
|
}
|