@tamagui/is-equal-shallow 1.129.6-1751237024118
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 +48 -0
- package/dist/cjs/index.js +44 -0
- package/dist/cjs/index.js.map +6 -0
- package/dist/cjs/index.native.js +59 -0
- package/dist/cjs/index.native.js.map +6 -0
- package/dist/esm/index.js +28 -0
- package/dist/esm/index.js.map +6 -0
- package/dist/esm/index.mjs +23 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +25 -0
- package/dist/esm/index.native.js.map +1 -0
- package/package.json +39 -0
- package/src/index.ts +50 -0
- package/types/index.d.ts +8 -0
- package/types/index.d.ts.map +21 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: !0
|
|
9
|
+
});
|
|
10
|
+
},
|
|
11
|
+
__copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
13
|
+
get: () => from[key],
|
|
14
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
+
});
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
19
|
+
value: !0
|
|
20
|
+
}), mod);
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
|
+
isEqualShallow: () => isEqualShallow,
|
|
24
|
+
mergeIfNotShallowEqual: () => mergeIfNotShallowEqual,
|
|
25
|
+
useCreateShallowSetState: () => useCreateShallowSetState
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(index_exports);
|
|
28
|
+
var import_react = require("react");
|
|
29
|
+
function useCreateShallowSetState(setter, debugIn) {
|
|
30
|
+
return (0, import_react.useCallback)(next => {
|
|
31
|
+
setter(prev => mergeIfNotShallowEqual(prev, next, debugIn));
|
|
32
|
+
}, [setter, debugIn]);
|
|
33
|
+
}
|
|
34
|
+
function mergeIfNotShallowEqual(prev, next, debug) {
|
|
35
|
+
if (!prev || !next || isEqualShallow(prev, next)) return prev || next;
|
|
36
|
+
if (process.env.NODE_ENV === "development" && debug && (console.info("setStateShallow CHANGE", {
|
|
37
|
+
prev,
|
|
38
|
+
next
|
|
39
|
+
}), debug === "break")) debugger;
|
|
40
|
+
return {
|
|
41
|
+
...prev,
|
|
42
|
+
...next
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function isEqualShallow(prev, next) {
|
|
46
|
+
for (const key in next) if (prev[key] !== next[key]) return !1;
|
|
47
|
+
return !0;
|
|
48
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: !0 });
|
|
8
|
+
}, __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from == "object" || typeof from == "function")
|
|
10
|
+
for (let key of __getOwnPropNames(from))
|
|
11
|
+
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
15
|
+
var index_exports = {};
|
|
16
|
+
__export(index_exports, {
|
|
17
|
+
isEqualShallow: () => isEqualShallow,
|
|
18
|
+
mergeIfNotShallowEqual: () => mergeIfNotShallowEqual,
|
|
19
|
+
useCreateShallowSetState: () => useCreateShallowSetState
|
|
20
|
+
});
|
|
21
|
+
module.exports = __toCommonJS(index_exports);
|
|
22
|
+
var import_react = require("react");
|
|
23
|
+
function useCreateShallowSetState(setter, debugIn) {
|
|
24
|
+
return (0, import_react.useCallback)(
|
|
25
|
+
(next) => {
|
|
26
|
+
setter((prev) => mergeIfNotShallowEqual(prev, next, debugIn));
|
|
27
|
+
},
|
|
28
|
+
[setter, debugIn]
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
function mergeIfNotShallowEqual(prev, next, debug) {
|
|
32
|
+
if (!prev || !next || isEqualShallow(prev, next))
|
|
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 };
|
|
37
|
+
}
|
|
38
|
+
function isEqualShallow(prev, next) {
|
|
39
|
+
for (const key in next)
|
|
40
|
+
if (prev[key] !== next[key])
|
|
41
|
+
return !1;
|
|
42
|
+
return !0;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/index.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA4B;AAMrB,SAAS,yBACd,QACA,SACgC;AAEhC,aAAO;AAAA,IACL,CAAC,SAAyB;AACxB,aAAO,CAAC,SACC,uBAAuB,MAAM,MAAM,OAAO,CAClD;AAAA,IACH;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,EAClB;AACF;AAEO,SAAS,uBACd,MACA,MACA,OACO;AACP,MAAI,CAAC,QAAQ,CAAC,QAAQ,eAAe,MAAM,IAAI;AAC7C,WAAK,QAAa;AAGpB,MAAI,QAAQ,IAAI,aAAa,iBACvB,UACF,QAAQ,KAAK,0BAA0B,EAAE,MAAM,KAAK,CAAC,GACjD,UAAU;AAEZ;AAIN,SAAO,EAAE,GAAG,MAAM,GAAG,KAAK;AAC5B;AAEO,SAAS,eAAe,MAAc,MAAuB;AAClE,aAAW,OAAO;AAChB,QAAI,KAAK,GAAG,MAAM,KAAK,GAAG;AACxB,aAAO;AAGX,SAAO;AACT;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: !0 });
|
|
9
|
+
}, __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from == "object" || typeof from == "function")
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
13
|
+
return to;
|
|
14
|
+
};
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
16
|
+
var index_exports = {};
|
|
17
|
+
__export(index_exports, {
|
|
18
|
+
isEqualShallow: () => isEqualShallow,
|
|
19
|
+
mergeIfNotShallowEqual: () => mergeIfNotShallowEqual,
|
|
20
|
+
useCreateShallowSetState: () => useCreateShallowSetState
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(index_exports);
|
|
23
|
+
var import_react = require("react");
|
|
24
|
+
function useCreateShallowSetState(setter, debugIn) {
|
|
25
|
+
return (0, import_react.useCallback)(function(next) {
|
|
26
|
+
setter(function(prev) {
|
|
27
|
+
return mergeIfNotShallowEqual(prev, next, debugIn);
|
|
28
|
+
});
|
|
29
|
+
}, [
|
|
30
|
+
setter,
|
|
31
|
+
debugIn
|
|
32
|
+
]);
|
|
33
|
+
}
|
|
34
|
+
function mergeIfNotShallowEqual(prev, next, debug) {
|
|
35
|
+
if (!prev || !next || isEqualShallow(prev, next))
|
|
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 {
|
|
43
|
+
...prev,
|
|
44
|
+
...next
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function isEqualShallow(prev, next) {
|
|
48
|
+
for (var key in next)
|
|
49
|
+
if (prev[key] !== next[key])
|
|
50
|
+
return !1;
|
|
51
|
+
return !0;
|
|
52
|
+
}
|
|
53
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
54
|
+
0 && (module.exports = {
|
|
55
|
+
isEqualShallow,
|
|
56
|
+
mergeIfNotShallowEqual,
|
|
57
|
+
useCreateShallowSetState
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/index.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;AAAA;;;;;;;mBAA4B;AAMrB,SAASA,yBACdC,QACAC,SAAmB;AAGnB,aAAOC,0BACL,SAACC,MAAAA;AACCH,WAAO,SAACI,MAAAA;AACN,aAAOC,uBAAuBD,MAAMD,MAAMF,OAAAA;IAC5C,CAAA;EACF,GACA;IAACD;IAAQC;GAAQ;AAErB;AAEO,SAASI,uBACdD,MACAD,MACAG,OAAiB;AAEjB,MAAI,CAACF,QAAQ,CAACD,QAAQI,eAAeH,MAAMD,IAAAA;AACzC,WAAKC,QAAaD;AAGpB,MAAIK,QAAQC,IAAIC,aAAa,iBACvBJ,UACFK,QAAQC,KAAK,0BAA0B;IAAER;IAAMD;EAAK,CAAA,GAChDG,UAAU;AAEZ;AAIN,SAAO;IAAE,GAAGF;IAAM,GAAGD;EAAK;AAC5B;AAEO,SAASI,eAAeH,MAAcD,MAAY;AACvD,WAAWU,OAAOV;AAChB,QAAIC,KAAKS,GAAAA,MAASV,KAAKU,GAAAA;AACrB,aAAO;AAGX,SAAO;AACT;",
|
|
5
|
+
"names": ["useCreateShallowSetState", "setter", "debugIn", "useCallback", "next", "prev", "mergeIfNotShallowEqual", "debug", "isEqualShallow", "process", "env", "NODE_ENV", "console", "info", "key"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
function useCreateShallowSetState(setter, debugIn) {
|
|
3
|
+
return useCallback(
|
|
4
|
+
(next) => {
|
|
5
|
+
setter((prev) => mergeIfNotShallowEqual(prev, next, debugIn));
|
|
6
|
+
},
|
|
7
|
+
[setter, debugIn]
|
|
8
|
+
);
|
|
9
|
+
}
|
|
10
|
+
function mergeIfNotShallowEqual(prev, next, debug) {
|
|
11
|
+
if (!prev || !next || isEqualShallow(prev, next))
|
|
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 };
|
|
16
|
+
}
|
|
17
|
+
function isEqualShallow(prev, next) {
|
|
18
|
+
for (const key in next)
|
|
19
|
+
if (prev[key] !== next[key])
|
|
20
|
+
return !1;
|
|
21
|
+
return !0;
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
isEqualShallow,
|
|
25
|
+
mergeIfNotShallowEqual,
|
|
26
|
+
useCreateShallowSetState
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/index.ts"],
|
|
4
|
+
"mappings": "AAAA,SAAS,mBAAmB;AAMrB,SAAS,yBACd,QACA,SACgC;AAEhC,SAAO;AAAA,IACL,CAAC,SAAyB;AACxB,aAAO,CAAC,SACC,uBAAuB,MAAM,MAAM,OAAO,CAClD;AAAA,IACH;AAAA,IACA,CAAC,QAAQ,OAAO;AAAA,EAClB;AACF;AAEO,SAAS,uBACd,MACA,MACA,OACO;AACP,MAAI,CAAC,QAAQ,CAAC,QAAQ,eAAe,MAAM,IAAI;AAC7C,WAAK,QAAa;AAGpB,MAAI,QAAQ,IAAI,aAAa,iBACvB,UACF,QAAQ,KAAK,0BAA0B,EAAE,MAAM,KAAK,CAAC,GACjD,UAAU;AAEZ;AAIN,SAAO,EAAE,GAAG,MAAM,GAAG,KAAK;AAC5B;AAEO,SAAS,eAAe,MAAc,MAAuB;AAClE,aAAW,OAAO;AAChB,QAAI,KAAK,GAAG,MAAM,KAAK,GAAG;AACxB,aAAO;AAGX,SAAO;AACT;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
function useCreateShallowSetState(setter, debugIn) {
|
|
3
|
+
return useCallback(next => {
|
|
4
|
+
setter(prev => mergeIfNotShallowEqual(prev, next, debugIn));
|
|
5
|
+
}, [setter, debugIn]);
|
|
6
|
+
}
|
|
7
|
+
function mergeIfNotShallowEqual(prev, next, debug) {
|
|
8
|
+
if (!prev || !next || isEqualShallow(prev, next)) return prev || next;
|
|
9
|
+
if (process.env.NODE_ENV === "development" && debug && (console.info("setStateShallow CHANGE", {
|
|
10
|
+
prev,
|
|
11
|
+
next
|
|
12
|
+
}), debug === "break")) debugger;
|
|
13
|
+
return {
|
|
14
|
+
...prev,
|
|
15
|
+
...next
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function isEqualShallow(prev, next) {
|
|
19
|
+
for (const key in next) if (prev[key] !== next[key]) return !1;
|
|
20
|
+
return !0;
|
|
21
|
+
}
|
|
22
|
+
export { isEqualShallow, mergeIfNotShallowEqual, useCreateShallowSetState };
|
|
23
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useCreateShallowSetState","setter","debugIn","next","prev","mergeIfNotShallowEqual","debug","isEqualShallow","process","env","NODE_ENV","console","info","key"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,WAAA,QAAmB;AAMrB,SAASC,yBACdC,MAAA,EACAC,OAAA,EACgC;EAEhC,OAAOH,WAAA,CACJI,IAAA,IAAyB;IACxBF,MAAA,CAAQG,IAAA,IACCC,sBAAA,CAAuBD,IAAA,EAAMD,IAAA,EAAMD,OAAO,CAClD;EACH,GACA,CAACD,MAAA,EAAQC,OAAO,CAClB;AACF;AAEO,SAASG,uBACdD,IAAA,EACAD,IAAA,EACAG,KAAA,EACO;EACP,IAAI,CAACF,IAAA,IAAQ,CAACD,IAAA,IAAQI,cAAA,CAAeH,IAAA,EAAMD,IAAI,GAC7C,OAAKC,IAAA,IAAaD,IAAA;EAGpB,IAAIK,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,iBACvBJ,KAAA,KACFK,OAAA,CAAQC,IAAA,CAAK,0BAA0B;IAAER,IAAA;IAAMD;EAAK,CAAC,GACjDG,KAAA,KAAU,UAEZ;EAIN,OAAO;IAAE,GAAGF,IAAA;IAAM,GAAGD;EAAK;AAC5B;AAEO,SAASI,eAAeH,IAAA,EAAcD,IAAA,EAAuB;EAClE,WAAWU,GAAA,IAAOV,IAAA,EAChB,IAAIC,IAAA,CAAKS,GAAG,MAAMV,IAAA,CAAKU,GAAG,GACxB,OAAO;EAGX,OAAO;AACT","ignoreList":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
function useCreateShallowSetState(setter, debugIn) {
|
|
3
|
+
return useCallback(function (next) {
|
|
4
|
+
setter(function (prev) {
|
|
5
|
+
return mergeIfNotShallowEqual(prev, next, debugIn);
|
|
6
|
+
});
|
|
7
|
+
}, [setter, debugIn]);
|
|
8
|
+
}
|
|
9
|
+
function mergeIfNotShallowEqual(prev, next, debug) {
|
|
10
|
+
if (!prev || !next || isEqualShallow(prev, next)) return prev || next;
|
|
11
|
+
if (process.env.NODE_ENV === "development" && debug && (console.info("setStateShallow CHANGE", {
|
|
12
|
+
prev,
|
|
13
|
+
next
|
|
14
|
+
}), debug === "break")) debugger;
|
|
15
|
+
return {
|
|
16
|
+
...prev,
|
|
17
|
+
...next
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function isEqualShallow(prev, next) {
|
|
21
|
+
for (var key in next) if (prev[key] !== next[key]) return !1;
|
|
22
|
+
return !0;
|
|
23
|
+
}
|
|
24
|
+
export { isEqualShallow, mergeIfNotShallowEqual, useCreateShallowSetState };
|
|
25
|
+
//# sourceMappingURL=index.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useCreateShallowSetState","setter","debugIn","next","prev","mergeIfNotShallowEqual","debug","isEqualShallow","process","env","NODE_ENV","console","info"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,WAAA,QAAmB;AAMrB,SAASC,yBACdC,MAAA,EACAC,OAAA,EACgC;EAEhC,OAAOH,WAAA,WAAAI,IAAA;IACLF,MAAC,WAAyBG,IAAA;MACxB,OAAOC,sBACE,CAAAD,IAAA,EAAAD,IAAuB,EAAAD,OAAM;IAExC;EAAA,GACC,CACHD,MAAA,EACFC,OAAA,CAEO;AAKL;AACE,SAAAG,sBAAkBA,CAAAD,IAAA,EAAAD,IAAA,EAAAG,KAAA;EAGpB,IAAI,CAAAF,IAAA,IAAQ,CAAAD,IAAI,IAAAI,cAAa,CAAAH,IAAA,EAAAD,IACvB,GAIA,OAAAC,IAAA,IAAAD,IAAA;EAIN,IAAAK,OAAS,CAAGC,GAAA,CAAAC,QAAS,KAAK,iBAAAJ,KAAA,KAAAK,OAAA,CAAAC,IAAA;IAC5BR,IAAA;IAEOD;EACL,IAAAG,KAAA,KAAW,OAAO,GAChB;EACE;IAGJ,GAAAF,IAAO;IACT,GAAAD","ignoreList":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tamagui/is-equal-shallow",
|
|
3
|
+
"version": "1.129.6-1751237024118",
|
|
4
|
+
"types": "./types/index.d.ts",
|
|
5
|
+
"main": "dist/cjs",
|
|
6
|
+
"module": "dist/esm",
|
|
7
|
+
"files": [
|
|
8
|
+
"src",
|
|
9
|
+
"types",
|
|
10
|
+
"dist"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tamagui-build",
|
|
14
|
+
"watch": "tamagui-build --watch",
|
|
15
|
+
"lint": "biome check src",
|
|
16
|
+
"lint:fix": "biome check --write src",
|
|
17
|
+
"clean": "tamagui-build clean",
|
|
18
|
+
"clean:build": "tamagui-build clean:build"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@tamagui/build": "1.129.6-1751237024118"
|
|
22
|
+
},
|
|
23
|
+
"exports": {
|
|
24
|
+
"./package.json": "./package.json",
|
|
25
|
+
".": {
|
|
26
|
+
"react-native": {
|
|
27
|
+
"import": "./dist/esm/index.native.js",
|
|
28
|
+
"require": "./dist/cjs/index.native.js"
|
|
29
|
+
},
|
|
30
|
+
"types": "./types/index.d.ts",
|
|
31
|
+
"import": "./dist/esm/index.mjs",
|
|
32
|
+
"require": "./dist/cjs/index.cjs",
|
|
33
|
+
"default": "./dist/cjs/index.native.js"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"publishConfig": {
|
|
37
|
+
"access": "public"
|
|
38
|
+
}
|
|
39
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { useCallback } from 'react'
|
|
2
|
+
|
|
3
|
+
type DebugProp = null | undefined | boolean | 'profile' | 'verbose' | 'break'
|
|
4
|
+
|
|
5
|
+
export type CallbackSetState<State> = (next: (cb: State) => State) => void
|
|
6
|
+
|
|
7
|
+
export function useCreateShallowSetState<State extends Record<string, unknown>>(
|
|
8
|
+
setter: CallbackSetState<State>,
|
|
9
|
+
debugIn?: DebugProp
|
|
10
|
+
): (next: Partial<State>) => void {
|
|
11
|
+
// this must be memoized or it ruins performance in components
|
|
12
|
+
return useCallback(
|
|
13
|
+
(next: Partial<State>) => {
|
|
14
|
+
setter((prev) => {
|
|
15
|
+
return mergeIfNotShallowEqual(prev, next, debugIn)
|
|
16
|
+
})
|
|
17
|
+
},
|
|
18
|
+
[setter, debugIn]
|
|
19
|
+
)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function mergeIfNotShallowEqual<State extends Record<string, unknown>>(
|
|
23
|
+
prev: State,
|
|
24
|
+
next: Partial<State>,
|
|
25
|
+
debug?: DebugProp
|
|
26
|
+
): State {
|
|
27
|
+
if (!prev || !next || isEqualShallow(prev, next)) {
|
|
28
|
+
if (!prev) return next as State
|
|
29
|
+
return prev
|
|
30
|
+
}
|
|
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
|
+
return { ...prev, ...next }
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function isEqualShallow(prev: Object, next: Object): boolean {
|
|
44
|
+
for (const key in next) {
|
|
45
|
+
if (prev[key] !== next[key]) {
|
|
46
|
+
return false
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return true
|
|
50
|
+
}
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type DebugProp = null | undefined | boolean | "profile" | "verbose" | "break";
|
|
2
|
+
export type CallbackSetState<State> = (next: (cb: State) => State) => void;
|
|
3
|
+
export declare function useCreateShallowSetState<State extends Record<string, unknown>>(setter: CallbackSetState<State>, debugIn?: DebugProp): (next: Partial<State>) => void;
|
|
4
|
+
export declare function mergeIfNotShallowEqual<State extends Record<string, unknown>>(prev: State, next: Partial<State>, debug?: DebugProp): State;
|
|
5
|
+
export declare function isEqualShallow(prev: Object, next: Object): boolean;
|
|
6
|
+
export {};
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mappings": "KAEK,yCAAyC,YAAY,YAAY;AAEtE,YAAY,iBAAiB,UAAUA,OAAOC,IAAI,UAAU;AAE5D,OAAO,iBAAS,yBAAyB,cAAc,yBACrDC,QAAQ,iBAAiB,QACzBC,UAAU,aACRC,MAAM,QAAQ;AAYlB,OAAO,iBAAS,uBAAuB,cAAc,yBACnDC,MAAM,OACND,MAAM,QAAQ,QACdE,QAAQ,YACP;AAiBH,OAAO,iBAAS,eAAeC,MAAM,QAAQC,MAAM",
|
|
3
|
+
"names": [
|
|
4
|
+
"next: (cb: State) => State",
|
|
5
|
+
"cb: State",
|
|
6
|
+
"setter: CallbackSetState<State>",
|
|
7
|
+
"debugIn?: DebugProp",
|
|
8
|
+
"next: Partial<State>",
|
|
9
|
+
"prev: State",
|
|
10
|
+
"debug?: DebugProp",
|
|
11
|
+
"prev: Object",
|
|
12
|
+
"next: Object"
|
|
13
|
+
],
|
|
14
|
+
"sources": [
|
|
15
|
+
"src/index.ts"
|
|
16
|
+
],
|
|
17
|
+
"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 debugIn?: DebugProp\n): (next: Partial<State>) => void {\n // this must be memoized or it ruins performance in components\n return useCallback(\n (next: Partial<State>) => {\n setter((prev) => {\n return mergeIfNotShallowEqual(prev, next, debugIn)\n })\n },\n [setter, debugIn]\n )\n}\n\nexport function mergeIfNotShallowEqual<State extends Record<string, unknown>>(\n prev: State,\n next: Partial<State>,\n debug?: DebugProp\n): State {\n if (!prev || !next || isEqualShallow(prev, next)) {\n if (!prev) return next as State\n return prev\n }\n if (process.env.NODE_ENV === 'development') {\n if (debug) {\n console.info(`setStateShallow CHANGE`, { prev, next })\n if (debug === 'break') {\n // biome-ignore lint/suspicious/noDebugger: <explanation>\n debugger\n }\n }\n }\n return { ...prev, ...next }\n}\n\nexport function isEqualShallow(prev: Object, next: Object): boolean {\n for (const key in next) {\n if (prev[key] !== next[key]) {\n return false\n }\n }\n return true\n}\n"
|
|
19
|
+
],
|
|
20
|
+
"version": 3
|
|
21
|
+
}
|