@o/hooks 0.16.19

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 (133) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +120 -0
  3. package/dist/cjs/index.cjs +32 -0
  4. package/dist/cjs/index.native.js +35 -0
  5. package/dist/cjs/index.native.js.map +1 -0
  6. package/dist/cjs/useClickOutside.cjs +52 -0
  7. package/dist/cjs/useClickOutside.native.js +63 -0
  8. package/dist/cjs/useClickOutside.native.js.map +1 -0
  9. package/dist/cjs/useDebouncePrepend.cjs +66 -0
  10. package/dist/cjs/useDebouncePrepend.native.js +70 -0
  11. package/dist/cjs/useDebouncePrepend.native.js.map +1 -0
  12. package/dist/cjs/useDeepMemoizedObject.cjs +207 -0
  13. package/dist/cjs/useDeepMemoizedObject.native.js +258 -0
  14. package/dist/cjs/useDeepMemoizedObject.native.js.map +1 -0
  15. package/dist/cjs/useDeepMemoizedObject.test.cjs +321 -0
  16. package/dist/cjs/useDeepMemoizedObject.test.native.js +324 -0
  17. package/dist/cjs/useDeepMemoizedObject.test.native.js.map +1 -0
  18. package/dist/cjs/useDeferredBoolean.cjs +39 -0
  19. package/dist/cjs/useDeferredBoolean.native.js +42 -0
  20. package/dist/cjs/useDeferredBoolean.native.js.map +1 -0
  21. package/dist/cjs/useEffectOnceGlobally.cjs +45 -0
  22. package/dist/cjs/useEffectOnceGlobally.native.js +50 -0
  23. package/dist/cjs/useEffectOnceGlobally.native.js.map +1 -0
  24. package/dist/cjs/useEvent.cjs +33 -0
  25. package/dist/cjs/useEvent.native.js +41 -0
  26. package/dist/cjs/useEvent.native.js.map +1 -0
  27. package/dist/cjs/useIsMounted.cjs +35 -0
  28. package/dist/cjs/useIsMounted.native.js +38 -0
  29. package/dist/cjs/useIsMounted.native.js.map +1 -0
  30. package/dist/cjs/useLastValue.cjs +31 -0
  31. package/dist/cjs/useLastValue.native.js +34 -0
  32. package/dist/cjs/useLastValue.native.js.map +1 -0
  33. package/dist/cjs/useLastValueIf.cjs +38 -0
  34. package/dist/cjs/useLastValueIf.native.js +42 -0
  35. package/dist/cjs/useLastValueIf.native.js.map +1 -0
  36. package/dist/cjs/useMemoStable.cjs +35 -0
  37. package/dist/cjs/useMemoStable.native.js +39 -0
  38. package/dist/cjs/useMemoStable.native.js.map +1 -0
  39. package/dist/cjs/useMemoizedObjectList.cjs +64 -0
  40. package/dist/cjs/useMemoizedObjectList.native.js +86 -0
  41. package/dist/cjs/useMemoizedObjectList.native.js.map +1 -0
  42. package/dist/cjs/useThrottle.cjs +52 -0
  43. package/dist/cjs/useThrottle.native.js +59 -0
  44. package/dist/cjs/useThrottle.native.js.map +1 -0
  45. package/dist/cjs/useWarnIfDepsChange.cjs +65 -0
  46. package/dist/cjs/useWarnIfDepsChange.native.js +68 -0
  47. package/dist/cjs/useWarnIfDepsChange.native.js.map +1 -0
  48. package/dist/cjs/useWarnIfMemoChangesOften.cjs +43 -0
  49. package/dist/cjs/useWarnIfMemoChangesOften.native.js +48 -0
  50. package/dist/cjs/useWarnIfMemoChangesOften.native.js.map +1 -0
  51. package/dist/esm/index.js +14 -0
  52. package/dist/esm/index.js.map +1 -0
  53. package/dist/esm/index.mjs +14 -0
  54. package/dist/esm/index.mjs.map +1 -0
  55. package/dist/esm/index.native.js +14 -0
  56. package/dist/esm/index.native.js.map +1 -0
  57. package/dist/esm/useClickOutside.mjs +27 -0
  58. package/dist/esm/useClickOutside.mjs.map +1 -0
  59. package/dist/esm/useClickOutside.native.js +35 -0
  60. package/dist/esm/useClickOutside.native.js.map +1 -0
  61. package/dist/esm/useDebouncePrepend.mjs +41 -0
  62. package/dist/esm/useDebouncePrepend.mjs.map +1 -0
  63. package/dist/esm/useDebouncePrepend.native.js +42 -0
  64. package/dist/esm/useDebouncePrepend.native.js.map +1 -0
  65. package/dist/esm/useDeepMemoizedObject.mjs +180 -0
  66. package/dist/esm/useDeepMemoizedObject.mjs.map +1 -0
  67. package/dist/esm/useDeepMemoizedObject.native.js +228 -0
  68. package/dist/esm/useDeepMemoizedObject.native.js.map +1 -0
  69. package/dist/esm/useDeepMemoizedObject.test.mjs +322 -0
  70. package/dist/esm/useDeepMemoizedObject.test.mjs.map +1 -0
  71. package/dist/esm/useDeepMemoizedObject.test.native.js +322 -0
  72. package/dist/esm/useDeepMemoizedObject.test.native.js.map +1 -0
  73. package/dist/esm/useDeferredBoolean.mjs +14 -0
  74. package/dist/esm/useDeferredBoolean.mjs.map +1 -0
  75. package/dist/esm/useDeferredBoolean.native.js +14 -0
  76. package/dist/esm/useDeferredBoolean.native.js.map +1 -0
  77. package/dist/esm/useEffectOnceGlobally.mjs +20 -0
  78. package/dist/esm/useEffectOnceGlobally.mjs.map +1 -0
  79. package/dist/esm/useEffectOnceGlobally.native.js +22 -0
  80. package/dist/esm/useEffectOnceGlobally.native.js.map +1 -0
  81. package/dist/esm/useEvent.mjs +8 -0
  82. package/dist/esm/useEvent.mjs.map +1 -0
  83. package/dist/esm/useEvent.native.js +13 -0
  84. package/dist/esm/useEvent.native.js.map +1 -0
  85. package/dist/esm/useIsMounted.mjs +10 -0
  86. package/dist/esm/useIsMounted.mjs.map +1 -0
  87. package/dist/esm/useIsMounted.native.js +10 -0
  88. package/dist/esm/useIsMounted.native.js.map +1 -0
  89. package/dist/esm/useLastValue.mjs +6 -0
  90. package/dist/esm/useLastValue.mjs.map +1 -0
  91. package/dist/esm/useLastValue.native.js +6 -0
  92. package/dist/esm/useLastValue.native.js.map +1 -0
  93. package/dist/esm/useLastValueIf.mjs +13 -0
  94. package/dist/esm/useLastValueIf.mjs.map +1 -0
  95. package/dist/esm/useLastValueIf.native.js +14 -0
  96. package/dist/esm/useLastValueIf.native.js.map +1 -0
  97. package/dist/esm/useMemoStable.mjs +10 -0
  98. package/dist/esm/useMemoStable.mjs.map +1 -0
  99. package/dist/esm/useMemoStable.native.js +11 -0
  100. package/dist/esm/useMemoStable.native.js.map +1 -0
  101. package/dist/esm/useMemoizedObjectList.mjs +39 -0
  102. package/dist/esm/useMemoizedObjectList.mjs.map +1 -0
  103. package/dist/esm/useMemoizedObjectList.native.js +58 -0
  104. package/dist/esm/useMemoizedObjectList.native.js.map +1 -0
  105. package/dist/esm/useThrottle.mjs +27 -0
  106. package/dist/esm/useThrottle.mjs.map +1 -0
  107. package/dist/esm/useThrottle.native.js +31 -0
  108. package/dist/esm/useThrottle.native.js.map +1 -0
  109. package/dist/esm/useWarnIfDepsChange.mjs +40 -0
  110. package/dist/esm/useWarnIfDepsChange.mjs.map +1 -0
  111. package/dist/esm/useWarnIfDepsChange.native.js +40 -0
  112. package/dist/esm/useWarnIfDepsChange.native.js.map +1 -0
  113. package/dist/esm/useWarnIfMemoChangesOften.mjs +18 -0
  114. package/dist/esm/useWarnIfMemoChangesOften.mjs.map +1 -0
  115. package/dist/esm/useWarnIfMemoChangesOften.native.js +20 -0
  116. package/dist/esm/useWarnIfMemoChangesOften.native.js.map +1 -0
  117. package/package.json +59 -0
  118. package/src/index.ts +13 -0
  119. package/src/useClickOutside.ts +34 -0
  120. package/src/useDebouncePrepend.ts +63 -0
  121. package/src/useDeepMemoizedObject.test.ts +344 -0
  122. package/src/useDeepMemoizedObject.ts +231 -0
  123. package/src/useDeferredBoolean.tsx +15 -0
  124. package/src/useEffectOnceGlobally.ts +41 -0
  125. package/src/useEvent.ts +7 -0
  126. package/src/useIsMounted.ts +11 -0
  127. package/src/useLastValue.ts +5 -0
  128. package/src/useLastValueIf.ts +15 -0
  129. package/src/useMemoStable.ts +25 -0
  130. package/src/useMemoizedObjectList.ts +74 -0
  131. package/src/useThrottle.ts +36 -0
  132. package/src/useWarnIfDepsChange.ts +61 -0
  133. package/src/useWarnIfMemoChangesOften.ts +24 -0
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var useWarnIfDepsChange_exports = {};
26
+ __export(useWarnIfDepsChange_exports, {
27
+ useWarnIfDepsChange: () => useWarnIfDepsChange
28
+ });
29
+ module.exports = __toCommonJS(useWarnIfDepsChange_exports);
30
+ var import_helpers = require("@o/helpers");
31
+ var import_react = require("react");
32
+ function useWarnIfDepsChange(deps, options) {
33
+ var {
34
+ maxChanges = 0,
35
+ name,
36
+ ignoreIndexBefore = 0
37
+ } = options;
38
+ var changeCountRef = (0, import_react.useRef)(0);
39
+ var prevDepsRef = (0, import_react.useRef)(void 0);
40
+ var id = (0, import_react.useId)();
41
+ (0, import_react.useEffect)(function () {
42
+ if (process.env.NODE_ENV === "development") {
43
+ if (prevDepsRef.current !== void 0) {
44
+ var changedDeps = [];
45
+ var compareDeps = ignoreIndexBefore ? deps.slice(ignoreIndexBefore) : deps;
46
+ compareDeps.forEach(function (dep, indexIn) {
47
+ var index = indexIn + ignoreIndexBefore;
48
+ if (prevDepsRef.current && prevDepsRef.current[index] !== dep) {
49
+ changedDeps.push({
50
+ index,
51
+ prev: prevDepsRef.current[index],
52
+ next: dep
53
+ });
54
+ }
55
+ });
56
+ if (changedDeps.length > 0) {
57
+ changeCountRef.current++;
58
+ if (changeCountRef.current > maxChanges) {
59
+ console.info(`\u{1F504} useWarnIfDepsChange "${name}" is changing too often! Changed ${changeCountRef.current} times (max: ${maxChanges})`, changedDeps, `
60
+ id (${id}) at:`, (0, import_helpers.getCurrentComponentStack)("short"));
61
+ }
62
+ }
63
+ }
64
+ prevDepsRef.current = deps;
65
+ }
66
+ });
67
+ }
68
+ //# sourceMappingURL=useWarnIfDepsChange.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useWarnIfDepsChange_exports","__export","useWarnIfDepsChange","module","exports","import_helpers","require","import_react","deps","options","maxChanges","name","ignoreIndexBefore","changeCountRef","useRef","prevDepsRef","id","useId","useEffect","process","env","NODE_ENV","current","changedDeps","compareDeps","slice","forEach","dep","indexIn","index","push","prev","next","length","console","info","getCurrentComponentStack"],"sources":["../../src/useWarnIfDepsChange.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,2BAAA;AAAAC,QAAA,CAAAD,2BAAA;EAAAE,mBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAAyC,CAAAK,2BAAA;AACzC,IAAAK,cAAA,GAAyCC,OAAA;AAQlC,IAAAC,YAAS,GAAAD,OAAA,QACd,CACA;AAEA,SAAMJ,mBAAkBA,CAAAM,IAAM,EAAAC,OAAA;EAE9B;IAAMC,UAAA;IAAAC,IAAA;IAAiBC,iBAAA,GAAO;EAAC,IAAAH,OAAA;EAC/B,IAAAI,cAAM,OAAcN,YAAA,CAAAO,MAAA,EAAsB;EAC1C,IAAAC,WAAW,OAAAR,YAAA,CAAMO,MAAA;EAEjB,IAAAE,EAAA,OAAAT,YAAA,CAAAU,KAAU,GAAM;EACd,IAAAV,YAAY,CAAAW,SAAI,cAAa;IAC3B,IAAAC,OAAI,CAAAC,GAAA,CAAAC,QAAY,kBAAuB;MACrC,IAAAN,WAAM,CAAAO,OAIA;QAEN,IAAAC,WAAM,KAAc;QAEpB,IAAAC,WAAY,GAAAZ,iBAAc,GAAYJ,IAAA,CAAAiB,KAAA,CAAAb,iBAAA,IAAAJ,IAAA;QACpCgB,WAAM,CAAAE,OAAQ,WAAUC,GAAA,EAAAC,OAAA;UAExB,IAAIC,KAAA,GAAAD,OAAY,GAAAhB,iBAAuB;UACrC,IAAAG,WAAY,CAAAO,OAAK,IAAAP,WAAA,CAAAO,OAAA,CAAAO,KAAA,MAAAF,GAAA;YAAAJ,WACf,CAAAO,IAAA;cACAD,KAAA;cACAE,IAAA,EAAMhB,WAAA,CAAAO,OAAA,CAAAO,KAAA;cACPG,IAAA,EAAAL;YACH;UACD;QAED;QACE,IAAAJ,WAAA,CAAAU,MAAe;UAEfpB,cAAI,CAAAS,OAAe;UAEjB,IAAAT,cAAQ,CAAAS,OAAA,GAAAZ,UAAA;YAAAwB,OACN,CAAAC,IAAA,mCAA+BxB,IAAA,oCAAoCE,cAAsB,CAAAS,OAAA,gBAA0BZ,UAAA,KAAAa,WAAA;AAAA,OAAAP,EAAA,OACnH,MAAAX,cAAA,CAAA+B,wBAAA;UAAA;QACU;MAAE;MACoBrB,WAClC,CAAAO,OAAA,GAAAd,IAAA;IAAA;EACF;AACF","ignoreList":[]}
@@ -0,0 +1,43 @@
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: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var useWarnIfMemoChangesOften_exports = {};
24
+ __export(useWarnIfMemoChangesOften_exports, {
25
+ useWarnIfMemoChangesOften: () => useWarnIfMemoChangesOften
26
+ });
27
+ module.exports = __toCommonJS(useWarnIfMemoChangesOften_exports);
28
+ var import_helpers = require("@o/helpers");
29
+ var import_react = require("react");
30
+ const useWarnIfMemoChangesOften = process.env.NODE_ENV === "production" ? import_helpers.emptyFn : (value, threshold = 5, name) => {
31
+ const countRef = (0, import_react.useRef)(0);
32
+ const prevValueRef = (0, import_react.useRef)(value);
33
+ (0, import_react.useEffect)(() => {
34
+ if (prevValueRef.current !== value) {
35
+ countRef.current++;
36
+ prevValueRef.current = value;
37
+ if (countRef.current > threshold) {
38
+ const warningName = name || "Memoized value";
39
+ console.warn(`\u{1F504} ${warningName} is changing too often! Changed ${countRef.current} times (threshold: ${threshold})`);
40
+ }
41
+ }
42
+ }, [value, threshold, name]);
43
+ };
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var useWarnIfMemoChangesOften_exports = {};
26
+ __export(useWarnIfMemoChangesOften_exports, {
27
+ useWarnIfMemoChangesOften: () => useWarnIfMemoChangesOften
28
+ });
29
+ module.exports = __toCommonJS(useWarnIfMemoChangesOften_exports);
30
+ var import_helpers = require("@o/helpers");
31
+ var import_react = require("react");
32
+ var useWarnIfMemoChangesOften = process.env.NODE_ENV === "production" ? import_helpers.emptyFn : function (value) {
33
+ var threshold = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 5,
34
+ name = arguments.length > 2 ? arguments[2] : void 0;
35
+ var countRef = (0, import_react.useRef)(0);
36
+ var prevValueRef = (0, import_react.useRef)(value);
37
+ (0, import_react.useEffect)(function () {
38
+ if (prevValueRef.current !== value) {
39
+ countRef.current++;
40
+ prevValueRef.current = value;
41
+ if (countRef.current > threshold) {
42
+ var warningName = name || "Memoized value";
43
+ console.warn(`\u{1F504} ${warningName} is changing too often! Changed ${countRef.current} times (threshold: ${threshold})`);
44
+ }
45
+ }
46
+ }, [value, threshold, name]);
47
+ };
48
+ //# sourceMappingURL=useWarnIfMemoChangesOften.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useWarnIfMemoChangesOften_exports","__export","useWarnIfMemoChangesOften","module","exports","import_helpers","require","import_react","process","env","NODE_ENV","emptyFn","threshold","arguments","length","name","countRef","useRef","prevValueRef","useEffect","current","warningName","console","warn"],"sources":["../../src/useWarnIfMemoChangesOften.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,iCAAA;AAAAC,QAAA,CAAAD,iCAAA;EAAAE,yBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAAwB,CAAAK,iCAAA;AACxB,IAAAK,cAAA,GAAkCC,OAAA;AAE3B,IAAAC,YAAM,GAAAD,OAAA,QACX;AAGM,IAAAJ,yBAAiB,GAAAM,OAAA,CAAAC,GAAA,CAAOC,QAAC,oBAAAL,cAAA,CAAAM,OAAA,aAAAZ,KAAA;EACzB,IAAAa,SAAM,GAAAC,SAAe,CAAAC,MAAA,QAAAD,SAAU,EAAK,eAAAA,SAAA;IAAAE,IAAA,GAAAF,SAAA,CAAAC,MAAA,OAAAD,SAAA;EAEpC,IAAAG,QAAA,OAAAT,YAAU,CAAAU,MAAM;EACd,IAAAC,YAAI,GAAa,IAAAX,YAAY,CAAAU,MAAO,EAAAlB,KAAA;EAClC,IAAAQ,YAAS,CAAAY,SAAA;IACT,IAAAD,YAAa,CAAAE,OAAA,KAAUrB,KAAA;MAEvBiB,QAAI,CAAAI,OAAS;MACXF,YAAM,CAAAE,OAAA,GAAcrB,KAAA;MACpB,IAAAiB,QAAQ,CAAAI,OAAA,GAAAR,SAAA;QAAA,IACNS,WAAM,GAAAN,IAAA,IAAW;QACnBO,OAAA,CAAAC,IAAA,cAAAF,WAAA,mCAAAL,QAAA,CAAAI,OAAA,sBAAAR,SAAA;MACF;IACF;EACF,GAAG,CACLb,KAAA,E","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ export * from "./useClickOutside.mjs";
2
+ export * from "./useDebouncePrepend.mjs";
3
+ export * from "./useDeepMemoizedObject.mjs";
4
+ export * from "./useDeferredBoolean.mjs";
5
+ export * from "./useEffectOnceGlobally.mjs";
6
+ export * from "./useIsMounted.mjs";
7
+ export * from "./useLastValue.mjs";
8
+ export * from "./useLastValueIf.mjs";
9
+ export * from "./useMemoizedObjectList.mjs";
10
+ export * from "./useMemoStable.mjs";
11
+ export * from "./useThrottle.mjs";
12
+ export * from "./useWarnIfDepsChange.mjs";
13
+ export * from "./useWarnIfMemoChangesOften.mjs";
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ export * from "./useClickOutside.mjs";
2
+ export * from "./useDebouncePrepend.mjs";
3
+ export * from "./useDeepMemoizedObject.mjs";
4
+ export * from "./useDeferredBoolean.mjs";
5
+ export * from "./useEffectOnceGlobally.mjs";
6
+ export * from "./useIsMounted.mjs";
7
+ export * from "./useLastValue.mjs";
8
+ export * from "./useLastValueIf.mjs";
9
+ export * from "./useMemoizedObjectList.mjs";
10
+ export * from "./useMemoStable.mjs";
11
+ export * from "./useThrottle.mjs";
12
+ export * from "./useWarnIfDepsChange.mjs";
13
+ export * from "./useWarnIfMemoChangesOften.mjs";
14
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ export * from "./useClickOutside.native.js";
2
+ export * from "./useDebouncePrepend.native.js";
3
+ export * from "./useDeepMemoizedObject.native.js";
4
+ export * from "./useDeferredBoolean.native.js";
5
+ export * from "./useEffectOnceGlobally.native.js";
6
+ export * from "./useIsMounted.native.js";
7
+ export * from "./useLastValue.native.js";
8
+ export * from "./useLastValueIf.native.js";
9
+ export * from "./useMemoizedObjectList.native.js";
10
+ export * from "./useMemoStable.native.js";
11
+ export * from "./useThrottle.native.js";
12
+ export * from "./useWarnIfDepsChange.native.js";
13
+ export * from "./useWarnIfMemoChangesOften.native.js";
14
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","ignoreList":[]}
@@ -0,0 +1,27 @@
1
+ import { IS_WEB } from "@o/helpers";
2
+ import { useEffect } from "react";
3
+ const useClickOutside = ({
4
+ ref,
5
+ active,
6
+ onClickOutside
7
+ }) => {
8
+ useEffect(() => {
9
+ if (!IS_WEB) return;
10
+ if (!active) return;
11
+ if (!onClickOutside) return;
12
+ const handleClickOutside = e => {
13
+ const node = ref.current;
14
+ if (!node) return;
15
+ if (!(e.target instanceof HTMLElement)) return;
16
+ if (!node.contains(e.target)) {
17
+ onClickOutside();
18
+ }
19
+ };
20
+ document.addEventListener("click", handleClickOutside);
21
+ return () => {
22
+ document.removeEventListener("click", handleClickOutside);
23
+ };
24
+ }, [ref, active, onClickOutside]);
25
+ };
26
+ export { useClickOutside };
27
+ //# sourceMappingURL=useClickOutside.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["IS_WEB","useEffect","useClickOutside","ref","active","onClickOutside","handleClickOutside","e","node","current","target","HTMLElement","contains","document","addEventListener","removeEventListener"],"sources":["../../src/useClickOutside.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAc;AACvB,SAASC,SAAA,QAAiB;AAQnB,MAAMC,eAAA,GAAkBA,CAAC;EAC9BC,GAAA;EACAC,MAAA;EACAC;AACF,MAA4B;EAC1BJ,SAAA,CAAU,MAAM;IACd,IAAI,CAACD,MAAA,EAAQ;IACb,IAAI,CAACI,MAAA,EAAQ;IACb,IAAI,CAACC,cAAA,EAAgB;IAErB,MAAMC,kBAAA,GAAsBC,CAAA,IAAkB;MAC5C,MAAMC,IAAA,GAAOL,GAAA,CAAIM,OAAA;MACjB,IAAI,CAACD,IAAA,EAAM;MACX,IAAI,EAAED,CAAA,CAAEG,MAAA,YAAkBC,WAAA,GAAc;MACxC,IAAI,CAACH,IAAA,CAAKI,QAAA,CAASL,CAAA,CAAEG,MAAM,GAAG;QAC5BL,cAAA,CAAe;MACjB;IACF;IAEAQ,QAAA,CAASC,gBAAA,CAAiB,SAASR,kBAAkB;IACrD,OAAO,MAAM;MACXO,QAAA,CAASE,mBAAA,CAAoB,SAAST,kBAAkB;IAC1D;EACF,GAAG,CAACH,GAAA,EAAKC,MAAA,EAAQC,cAAc,CAAC;AAClC","ignoreList":[]}
@@ -0,0 +1,35 @@
1
+ import { IS_WEB } from "@o/helpers";
2
+ import { useEffect } from "react";
3
+ function _instanceof(left, right) {
4
+ "@swc/helpers - instanceof";
5
+
6
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
7
+ return !!right[Symbol.hasInstance](left);
8
+ } else return left instanceof right;
9
+ }
10
+ var useClickOutside = function useClickOutside2(param) {
11
+ var {
12
+ ref,
13
+ active,
14
+ onClickOutside
15
+ } = param;
16
+ useEffect(function () {
17
+ if (!IS_WEB) return;
18
+ if (!active) return;
19
+ if (!onClickOutside) return;
20
+ var handleClickOutside = function handleClickOutside2(e) {
21
+ var node = ref.current;
22
+ if (!node) return;
23
+ if (!_instanceof(e.target, HTMLElement)) return;
24
+ if (!node.contains(e.target)) {
25
+ onClickOutside();
26
+ }
27
+ };
28
+ document.addEventListener("click", handleClickOutside);
29
+ return function () {
30
+ document.removeEventListener("click", handleClickOutside);
31
+ };
32
+ }, [ref, active, onClickOutside]);
33
+ };
34
+ export { useClickOutside };
35
+ //# sourceMappingURL=useClickOutside.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["IS_WEB","useEffect","_instanceof","left","right","Symbol","hasInstance","useClickOutside","useClickOutside2","param","ref","active","onClickOutside","handleClickOutside","handleClickOutside2","e","node","current","target","HTMLElement","contains","document","addEventListener","removeEventListener"],"sources":["../../src/useClickOutside.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAc;AACvB,SAASC,SAAA,QAAiB;AAQnB,SAAMC,YAAAC,IAAmB,EAAAC,KAAA;EAC9B;;EACA,IAAAA,KAAA,mBAAAC,MAAA,oBAAAD,KAAA,CAAAC,MAAA,CAAAC,WAAA;IACA,SAAAF,KAAA,CAAAC,MAAA,CAAAC,WAAA,EAAAH,IAAA;EACF,OAA4B,OAAAA,IAAA,YAAAC,KAAA;AAC1B;AACE,IAAAG,eAAa,YAAAC,iBAAAC,KAAA;EACb;IAAIC,GAAC;IAAAC,MAAQ;IAAAC;EAAA,IAAAH,KAAA;EACbR,SAAK;IAEL,KAAAD,MAAM;IACJ,KAAAW,MAAM;IACN,KAAAC,cAAW;IACX,IAAAC,kBAAQ,YAAkBC,mBAAcA,CAAAC,CAAA;MACxC,IAAIC,IAAC,GAAKN,GAAA,CAAAO,OAAW;MACnB,KAAAD,IAAA;MACF,KAAAd,WAAA,CAAAa,CAAA,CAAAG,MAAA,EAAAC,WAAA;MACF,KAAAH,IAAA,CAAAI,QAAA,CAAAL,CAAA,CAAAG,MAAA;QAEAN,cAAS;MACT;IACE;IACFS,QAAA,CAAAC,gBAAA,UAAAT,kBAAA;IACF,OAAS,YAAQ;MACnBQ,QAAA,CAAAE,mBAAA,UAAAV,kBAAA","ignoreList":[]}
@@ -0,0 +1,41 @@
1
+ import { debounce } from "@o/helpers";
2
+ import { useCallback, useEffect, useMemo, useState } from "react";
3
+ function useDebouncePrepend(list, delay) {
4
+ const [current, setCurrent] = useState(list);
5
+ const [previous, setPrevious] = useState(list);
6
+ const [pendingUpdate, setPendingUpdate] = useState(null);
7
+ const debouncedUpdate = useMemo(() => {
8
+ return debounce(newList => {
9
+ setCurrent(newList);
10
+ setPendingUpdate(null);
11
+ }, delay);
12
+ }, [delay]);
13
+ const updateState = useCallback(newList => {
14
+ setCurrent(prevCurrent => {
15
+ const currentList = pendingUpdate || prevCurrent;
16
+ const isPrepending = newList.length > previous.length && newList[0]?.id !== previous[0]?.id;
17
+ if (isPrepending) {
18
+ debouncedUpdate.cancel();
19
+ setPendingUpdate(newList);
20
+ debouncedUpdate(newList);
21
+ return currentList;
22
+ }
23
+ debouncedUpdate.cancel();
24
+ setPendingUpdate(null);
25
+ return newList;
26
+ });
27
+ }, [previous, pendingUpdate, debouncedUpdate]);
28
+ useEffect(() => {
29
+ if (list === previous) {
30
+ return;
31
+ }
32
+ setPrevious(list);
33
+ updateState(list);
34
+ return () => {
35
+ debouncedUpdate.cancel();
36
+ };
37
+ }, [list, previous, updateState, debouncedUpdate]);
38
+ return current;
39
+ }
40
+ export { useDebouncePrepend };
41
+ //# sourceMappingURL=useDebouncePrepend.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["debounce","useCallback","useEffect","useMemo","useState","useDebouncePrepend","list","delay","current","setCurrent","previous","setPrevious","pendingUpdate","setPendingUpdate","debouncedUpdate","newList","updateState","prevCurrent","currentList","isPrepending","length","id","cancel"],"sources":["../../src/useDebouncePrepend.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,QAAgB;AACzB,SAASC,WAAA,EAAaC,SAAA,EAAWC,OAAA,EAASC,QAAA,QAAgB;AAEnD,SAASC,mBACdC,IAAA,EACAC,KAAA,EACG;EACH,MAAM,CAACC,OAAA,EAASC,UAAU,IAAIL,QAAA,CAASE,IAAI;EAC3C,MAAM,CAACI,QAAA,EAAUC,WAAW,IAAIP,QAAA,CAASE,IAAI;EAC7C,MAAM,CAACM,aAAA,EAAeC,gBAAgB,IAAIT,QAAA,CAAmB,IAAI;EAEjE,MAAMU,eAAA,GAAkBX,OAAA,CAAQ,MAAM;IACpC,OAAOH,QAAA,CAAUe,OAAA,IAAe;MAC9BN,UAAA,CAAWM,OAAO;MAClBF,gBAAA,CAAiB,IAAI;IACvB,GAAGN,KAAK;EACV,GAAG,CAACA,KAAK,CAAC;EAEV,MAAMS,WAAA,GAAcf,WAAA,CACjBc,OAAA,IAAe;IACdN,UAAA,CAAYQ,WAAA,IAAgB;MAE1B,MAAMC,WAAA,GAAcN,aAAA,IAAiBK,WAAA;MAGrC,MAAME,YAAA,GACJJ,OAAA,CAAQK,MAAA,GAASV,QAAA,CAASU,MAAA,IAAUL,OAAA,CAAQ,CAAC,GAAGM,EAAA,KAAOX,QAAA,CAAS,CAAC,GAAGW,EAAA;MAEtE,IAAIF,YAAA,EAAc;QAEhBL,eAAA,CAAgBQ,MAAA,CAAO;QACvBT,gBAAA,CAAiBE,OAAO;QACxBD,eAAA,CAAgBC,OAAO;QACvB,OAAOG,WAAA;MACT;MAGAJ,eAAA,CAAgBQ,MAAA,CAAO;MACvBT,gBAAA,CAAiB,IAAI;MACrB,OAAOE,OAAA;IACT,CAAC;EACH,GACA,CAACL,QAAA,EAAUE,aAAA,EAAeE,eAAe,CAC3C;EAEAZ,SAAA,CAAU,MAAM;IACd,IAAII,IAAA,KAASI,QAAA,EAAU;MACrB;IACF;IAGAC,WAAA,CAAYL,IAAI;IAGhBU,WAAA,CAAYV,IAAI;IAEhB,OAAO,MAAM;MACXQ,eAAA,CAAgBQ,MAAA,CAAO;IACzB;EACF,GAAG,CAAChB,IAAA,EAAMI,QAAA,EAAUM,WAAA,EAAaF,eAAe,CAAC;EAEjD,OAAON,OAAA;AACT","ignoreList":[]}
@@ -0,0 +1,42 @@
1
+ import { debounce } from "@o/helpers";
2
+ import { useCallback, useEffect, useMemo, useState } from "react";
3
+ function useDebouncePrepend(list, delay) {
4
+ var [current, setCurrent] = useState(list);
5
+ var [previous, setPrevious] = useState(list);
6
+ var [pendingUpdate, setPendingUpdate] = useState(null);
7
+ var debouncedUpdate = useMemo(function () {
8
+ return debounce(function (newList) {
9
+ setCurrent(newList);
10
+ setPendingUpdate(null);
11
+ }, delay);
12
+ }, [delay]);
13
+ var updateState = useCallback(function (newList) {
14
+ setCurrent(function (prevCurrent) {
15
+ var _newList_, _previous_;
16
+ var currentList = pendingUpdate || prevCurrent;
17
+ var isPrepending = newList.length > previous.length && ((_newList_ = newList[0]) === null || _newList_ === void 0 ? void 0 : _newList_.id) !== ((_previous_ = previous[0]) === null || _previous_ === void 0 ? void 0 : _previous_.id);
18
+ if (isPrepending) {
19
+ debouncedUpdate.cancel();
20
+ setPendingUpdate(newList);
21
+ debouncedUpdate(newList);
22
+ return currentList;
23
+ }
24
+ debouncedUpdate.cancel();
25
+ setPendingUpdate(null);
26
+ return newList;
27
+ });
28
+ }, [previous, pendingUpdate, debouncedUpdate]);
29
+ useEffect(function () {
30
+ if (list === previous) {
31
+ return;
32
+ }
33
+ setPrevious(list);
34
+ updateState(list);
35
+ return function () {
36
+ debouncedUpdate.cancel();
37
+ };
38
+ }, [list, previous, updateState, debouncedUpdate]);
39
+ return current;
40
+ }
41
+ export { useDebouncePrepend };
42
+ //# sourceMappingURL=useDebouncePrepend.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["debounce","useCallback","useEffect","useMemo","useState","useDebouncePrepend","list","delay","current","setCurrent","previous","setPrevious","pendingUpdate","setPendingUpdate","debouncedUpdate","newList","updateState","prevCurrent","_newList_","_previous_","currentList","isPrepending","length","id","cancel"],"sources":["../../src/useDebouncePrepend.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,QAAgB;AACzB,SAASC,WAAA,EAAaC,SAAA,EAAWC,OAAA,EAASC,QAAA,QAAgB;AAEnD,SAASC,mBACdC,IAAA,EACAC,KAAA,EACG;EACH,KAAAC,OAAO,EAAAC,UAAS,IAAUL,QAAI,CAAAE,IAAS;EACvC,KAAAI,QAAO,EAAAC,WAAU,IAAWP,QAAI,CAAAE,IAAS;EACzC,KAAAM,aAAO,EAAAC,gBAAe,IAAgBT,QAAI,KAAmB;EAE7D,IAAAU,eAAM,GAAAX,OAAkB,aAAc;IACpC,OAAOH,QAAA,CAAS,UAACe,OAAe;MAC9BN,UAAA,CAAWM,OAAO;MAClBF,gBAAA,CAAiB,IAAI;IACvB,GAAGN,KAAK;EACV,GAAG,CAEHA,KAAM,CAAc,CAClB;EACE,IAAAS,WAAW,GAACf,WAAA,WAAgBc,OAAA;IAE1BN,UAAM,WAAAQ,WAAc;MAGpB,IAAAC,SAAM,EAAAC,UACJ;MAEF,IAAAC,WAAI,GAAAR,aAAc,IAAAK,WAAA;MAEhB,IAAAI,YAAA,GAAAN,OAAgB,CAAOO,MAAA,GAAAZ,QAAA,CAAAY,MAAA,MAAAJ,SAAA,GAAAH,OAAA,iBAAAG,SAAA,uBAAAA,SAAA,CAAAK,EAAA,QAAAJ,UAAA,GAAAT,QAAA,iBAAAS,UAAA,uBAAAA,UAAA,CAAAI,EAAA;MACvB,IAAAF,YAAA;QACAP,eAAA,CAAAU,MAAgB;QAChBX,gBAAO,CAAAE,OAAA;QACTD,eAAA,CAAAC,OAAA;QAGA,OAAAK,WAAgB;MAChB;MACAN,eAAO,CAAAU,MAAA;MACTX,gBAAC;MACH,OAAAE,OAAA;IACA,CAAC;EACH,IAEAL,QAAU,EACRE,aAAa,EACXE,eAAA,EACF;EAGAZ,SAAA,aAAgB;IAGhB,IAAAI,IAAA,KAAYI,QAAI;MAEhB;IACE;IACFC,WAAA,CAAAL,IAAA;IACFU,WAAU,CAAAV,IAAA;IAEV,OAAO;MACTQ,eAAA,CAAAU,MAAA","ignoreList":[]}
@@ -0,0 +1,180 @@
1
+ import { useRef } from "react";
2
+ function shouldBeImmutable(path, immutableToNestedChanges) {
3
+ if (!immutableToNestedChanges) return false;
4
+ const currentPath = path.join(".");
5
+ for (const pattern in immutableToNestedChanges) {
6
+ if (immutableToNestedChanges[pattern] && currentPath === pattern) {
7
+ return true;
8
+ }
9
+ }
10
+ return false;
11
+ }
12
+ function deepMutateInPlace(target, source) {
13
+ if (typeof target !== "object" || target === null || typeof source !== "object" || source === null) {
14
+ return;
15
+ }
16
+ if (Array.isArray(target) && Array.isArray(source)) {
17
+ ;
18
+ target.length = 0;
19
+ target.push(...source);
20
+ return;
21
+ }
22
+ for (const key in source) {
23
+ const targetValue = target[key];
24
+ const sourceValue = source[key];
25
+ if (typeof sourceValue === "object" && sourceValue !== null && typeof targetValue === "object" && targetValue !== null) {
26
+ deepMutateInPlace(targetValue, sourceValue);
27
+ } else {
28
+ ;
29
+ target[key] = sourceValue;
30
+ }
31
+ }
32
+ }
33
+ function deepMemoizeWithTracking(current, previous, path, immutableToNestedChanges, parentIsImmutable = false) {
34
+ if (current === previous) {
35
+ return {
36
+ value: previous,
37
+ hasChanges: false,
38
+ hasImmutableMutation: false
39
+ };
40
+ }
41
+ if (typeof current !== "object" || current === null) {
42
+ return {
43
+ value: current,
44
+ hasChanges: true,
45
+ hasImmutableMutation: false
46
+ };
47
+ }
48
+ if (typeof previous !== "object" || previous === null) {
49
+ return {
50
+ value: current,
51
+ hasChanges: true,
52
+ hasImmutableMutation: false
53
+ };
54
+ }
55
+ const isCurrentImmutable = shouldBeImmutable(path, immutableToNestedChanges);
56
+ const shouldMutateInPlace = isCurrentImmutable || parentIsImmutable;
57
+ if (Array.isArray(current)) {
58
+ if (!Array.isArray(previous)) {
59
+ return {
60
+ value: current,
61
+ hasChanges: true,
62
+ hasImmutableMutation: false
63
+ };
64
+ }
65
+ if (current.length !== previous.length) {
66
+ return {
67
+ value: current,
68
+ hasChanges: true,
69
+ hasImmutableMutation: false
70
+ };
71
+ }
72
+ let hasChanges2 = false;
73
+ let hasImmutableMutation2 = false;
74
+ const memoizedArray = [];
75
+ for (let i = 0; i < current.length; i++) {
76
+ const itemPath = [...path, String(i)];
77
+ const result = deepMemoizeWithTracking(current[i], previous[i], itemPath, immutableToNestedChanges, false);
78
+ memoizedArray[i] = result.value;
79
+ if (result.hasChanges) {
80
+ hasChanges2 = true;
81
+ }
82
+ if (result.hasImmutableMutation) {
83
+ hasImmutableMutation2 = true;
84
+ }
85
+ }
86
+ if (hasChanges2 || hasImmutableMutation2) {
87
+ return {
88
+ value: memoizedArray,
89
+ hasChanges: true,
90
+ hasImmutableMutation: false
91
+ };
92
+ }
93
+ return {
94
+ value: previous,
95
+ hasChanges: false,
96
+ hasImmutableMutation: false
97
+ };
98
+ }
99
+ const currentKeys = Object.keys(current);
100
+ const previousKeys = Object.keys(previous);
101
+ if (currentKeys.length !== previousKeys.length) {
102
+ return {
103
+ value: current,
104
+ hasChanges: true,
105
+ hasImmutableMutation: false
106
+ };
107
+ }
108
+ const keysMatch = currentKeys.every(key => key in previous);
109
+ if (!keysMatch) {
110
+ return {
111
+ value: current,
112
+ hasChanges: true,
113
+ hasImmutableMutation: false
114
+ };
115
+ }
116
+ let hasChanges = false;
117
+ let hasImmutableMutation = false;
118
+ const memoizedObject = {};
119
+ for (const key of currentKeys) {
120
+ const propPath = [...path, key];
121
+ const currentValue = current[key];
122
+ const previousValue = previous[key];
123
+ const result = deepMemoizeWithTracking(currentValue, previousValue, propPath, immutableToNestedChanges, shouldMutateInPlace);
124
+ memoizedObject[key] = result.value;
125
+ if (result.hasChanges) {
126
+ hasChanges = true;
127
+ }
128
+ if (result.hasImmutableMutation) {
129
+ hasImmutableMutation = true;
130
+ }
131
+ }
132
+ if (shouldMutateInPlace && (hasChanges || hasImmutableMutation)) {
133
+ if (parentIsImmutable) {
134
+ deepMutateInPlace(previous, current);
135
+ } else {
136
+ for (const key of currentKeys) {
137
+ ;
138
+ previous[key] = memoizedObject[key];
139
+ }
140
+ }
141
+ return {
142
+ value: previous,
143
+ hasChanges: false,
144
+ hasImmutableMutation: true
145
+ };
146
+ }
147
+ if (hasChanges || hasImmutableMutation) {
148
+ return {
149
+ value: memoizedObject,
150
+ hasChanges: true,
151
+ hasImmutableMutation: false
152
+ };
153
+ }
154
+ return {
155
+ value: previous,
156
+ hasChanges: false,
157
+ hasImmutableMutation: false
158
+ };
159
+ }
160
+ function deepMemoize(current, previous, path = [], immutableToNestedChanges) {
161
+ const result = deepMemoizeWithTracking(current, previous, path, immutableToNestedChanges, false);
162
+ if (path.length === 0 && result.hasImmutableMutation && !result.hasChanges) {
163
+ if (Array.isArray(result.value)) {
164
+ return [...result.value];
165
+ } else if (typeof result.value === "object" && result.value !== null) {
166
+ return {
167
+ ...result.value
168
+ };
169
+ }
170
+ }
171
+ return result.value;
172
+ }
173
+ function useDeepMemoizedObject(value, options) {
174
+ const previousValueRef = useRef(value);
175
+ const memoizedValue = deepMemoize(value, previousValueRef.current, [], options?.immutableToNestedChanges);
176
+ previousValueRef.current = memoizedValue;
177
+ return memoizedValue;
178
+ }
179
+ export { deepMemoize, shouldBeImmutable, useDeepMemoizedObject };
180
+ //# sourceMappingURL=useDeepMemoizedObject.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useRef","shouldBeImmutable","path","immutableToNestedChanges","currentPath","join","pattern","deepMutateInPlace","target","source","Array","isArray","length","push","key","targetValue","sourceValue","deepMemoizeWithTracking","current","previous","parentIsImmutable","value","hasChanges","hasImmutableMutation","isCurrentImmutable","shouldMutateInPlace","memoizedArray","i","itemPath","String","result","hasImmutableMutation2","currentKeys","Object","keys","previousKeys","keysMatch","every","memoizedObject","propPath","currentValue","previousValue","deepMemoize","useDeepMemoizedObject","options","previousValueRef","memoizedValue"],"sources":["../../src/useDeepMemoizedObject.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAc;AAQhB,SAASC,kBACdC,IAAA,EACAC,wBAAA,EACS;EACT,IAAI,CAACA,wBAAA,EAA0B,OAAO;EAEtC,MAAMC,WAAA,GAAcF,IAAA,CAAKG,IAAA,CAAK,GAAG;EACjC,WAAWC,OAAA,IAAWH,wBAAA,EAA0B;IAC9C,IAAIA,wBAAA,CAAyBG,OAAO,KAAKF,WAAA,KAAgBE,OAAA,EAAS;MAChE,OAAO;IACT;EACF;EACA,OAAO;AACT;AAQA,SAASC,kBAAqBC,MAAA,EAAWC,MAAA,EAAiB;EACxD,IACE,OAAOD,MAAA,KAAW,YAClBA,MAAA,KAAW,QACX,OAAOC,MAAA,KAAW,YAClBA,MAAA,KAAW,MACX;IACA;EACF;EAEA,IAAIC,KAAA,CAAMC,OAAA,CAAQH,MAAM,KAAKE,KAAA,CAAMC,OAAA,CAAQF,MAAM,GAAG;IAElD;IAAED,MAAA,CAAiBI,MAAA,GAAS;IAC1BJ,MAAA,CAAiBK,IAAA,CAAK,GAAIJ,MAAgB;IAC5C;EACF;EAGA,WAAWK,GAAA,IAAOL,MAAA,EAAe;IAC/B,MAAMM,WAAA,GAAeP,MAAA,CAAeM,GAAG;IACvC,MAAME,WAAA,GAAeP,MAAA,CAAeK,GAAG;IAEvC,IACE,OAAOE,WAAA,KAAgB,YACvBA,WAAA,KAAgB,QAChB,OAAOD,WAAA,KAAgB,YACvBA,WAAA,KAAgB,MAChB;MAEAR,iBAAA,CAAkBQ,WAAA,EAAaC,WAAW;IAC5C,OAAO;MAEL;MAAER,MAAA,CAAeM,GAAG,IAAIE,WAAA;IAC1B;EACF;AACF;AAEA,SAASC,wBACPC,OAAA,EACAC,QAAA,EACAjB,IAAA,EACAC,wBAAA,EACAiB,iBAAA,GAA6B,OACd;EACf,IAAIF,OAAA,KAAYC,QAAA,EAAU;IACxB,OAAO;MAAEE,KAAA,EAAOF,QAAA;MAAUG,UAAA,EAAY;MAAOC,oBAAA,EAAsB;IAAM;EAC3E;EAEA,IAAI,OAAOL,OAAA,KAAY,YAAYA,OAAA,KAAY,MAAM;IACnD,OAAO;MAAEG,KAAA,EAAOH,OAAA;MAASI,UAAA,EAAY;MAAMC,oBAAA,EAAsB;IAAM;EACzE;EAEA,IAAI,OAAOJ,QAAA,KAAa,YAAYA,QAAA,KAAa,MAAM;IACrD,OAAO;MAAEE,KAAA,EAAOH,OAAA;MAASI,UAAA,EAAY;MAAMC,oBAAA,EAAsB;IAAM;EACzE;EAEA,MAAMC,kBAAA,GAAqBvB,iBAAA,CAAkBC,IAAA,EAAMC,wBAAwB;EAC3E,MAAMsB,mBAAA,GAAsBD,kBAAA,IAAsBJ,iBAAA;EAElD,IAAIV,KAAA,CAAMC,OAAA,CAAQO,OAAO,GAAG;IAC1B,IAAI,CAACR,KAAA,CAAMC,OAAA,CAAQQ,QAAQ,GAAG;MAC5B,OAAO;QAAEE,KAAA,EAAOH,OAAA;QAASI,UAAA,EAAY;QAAMC,oBAAA,EAAsB;MAAM;IACzE;IACA,IAAIL,OAAA,CAAQN,MAAA,KAAWO,QAAA,CAASP,MAAA,EAAQ;MACtC,OAAO;QAAES,KAAA,EAAOH,OAAA;QAASI,UAAA,EAAY;QAAMC,oBAAA,EAAsB;MAAM;IACzE;IAEA,IAAID,WAAA,GAAa;IACjB,IAAIC,qBAAA,GAAuB;IAC3B,MAAMG,aAAA,GAAuB,EAAC;IAE9B,SAASC,CAAA,GAAI,GAAGA,CAAA,GAAIT,OAAA,CAAQN,MAAA,EAAQe,CAAA,IAAK;MACvC,MAAMC,QAAA,GAAW,CAAC,GAAG1B,IAAA,EAAM2B,MAAA,CAAOF,CAAC,CAAC;MAGpC,MAAMG,MAAA,GAASb,uBAAA,CACbC,OAAA,CAAQS,CAAC,GACTR,QAAA,CAASQ,CAAC,GACVC,QAAA,EACAzB,wBAAA,EACA,KACF;MACAuB,aAAA,CAAcC,CAAC,IAAIG,MAAA,CAAOT,KAAA;MAC1B,IAAIS,MAAA,CAAOR,UAAA,EAAY;QACrBA,WAAA,GAAa;MACf;MACA,IAAIQ,MAAA,CAAOP,oBAAA,EAAsB;QAC/BA,qBAAA,GAAuB;MACzB;IACF;IAGA,IAAID,WAAA,IAAcS,qBAAA,EAAsB;MACtC,OAAO;QAAEV,KAAA,EAAOK,aAAA;QAAoBJ,UAAA,EAAY;QAAMC,oBAAA,EAAsB;MAAM;IACpF;IACA,OAAO;MAAEF,KAAA,EAAOF,QAAA;MAAUG,UAAA,EAAY;MAAOC,oBAAA,EAAsB;IAAM;EAC3E;EAEA,MAAMS,WAAA,GAAcC,MAAA,CAAOC,IAAA,CAAKhB,OAAO;EACvC,MAAMiB,YAAA,GAAeF,MAAA,CAAOC,IAAA,CAAKf,QAAQ;EAEzC,IAAIa,WAAA,CAAYpB,MAAA,KAAWuB,YAAA,CAAavB,MAAA,EAAQ;IAC9C,OAAO;MAAES,KAAA,EAAOH,OAAA;MAASI,UAAA,EAAY;MAAMC,oBAAA,EAAsB;IAAM;EACzE;EAEA,MAAMa,SAAA,GAAYJ,WAAA,CAAYK,KAAA,CAAOvB,GAAA,IAAQA,GAAA,IAAOK,QAAQ;EAC5D,IAAI,CAACiB,SAAA,EAAW;IACd,OAAO;MAAEf,KAAA,EAAOH,OAAA;MAASI,UAAA,EAAY;MAAMC,oBAAA,EAAsB;IAAM;EACzE;EAEA,IAAID,UAAA,GAAa;EACjB,IAAIC,oBAAA,GAAuB;EAC3B,MAAMe,cAAA,GAAsB,CAAC;EAE7B,WAAWxB,GAAA,IAAOkB,WAAA,EAAa;IAC7B,MAAMO,QAAA,GAAW,CAAC,GAAGrC,IAAA,EAAMY,GAAG;IAC9B,MAAM0B,YAAA,GAAgBtB,OAAA,CAAgBJ,GAAG;IACzC,MAAM2B,aAAA,GAAiBtB,QAAA,CAAiBL,GAAG;IAG3C,MAAMgB,MAAA,GAASb,uBAAA,CACbuB,YAAA,EACAC,aAAA,EACAF,QAAA,EACApC,wBAAA,EACAsB,mBACF;IAEAa,cAAA,CAAexB,GAAG,IAAIgB,MAAA,CAAOT,KAAA;IAC7B,IAAIS,MAAA,CAAOR,UAAA,EAAY;MACrBA,UAAA,GAAa;IACf;IACA,IAAIQ,MAAA,CAAOP,oBAAA,EAAsB;MAC/BA,oBAAA,GAAuB;IACzB;EACF;EAEA,IAAIE,mBAAA,KAAwBH,UAAA,IAAcC,oBAAA,GAAuB;IAG/D,IAAIH,iBAAA,EAAmB;MAErBb,iBAAA,CAAkBY,QAAA,EAAUD,OAAO;IACrC,OAAO;MAEL,WAAWJ,GAAA,IAAOkB,WAAA,EAAa;QAC7B;QAAEb,QAAA,CAAiBL,GAAG,IAAIwB,cAAA,CAAexB,GAAG;MAC9C;IACF;IAEA,OAAO;MAAEO,KAAA,EAAOF,QAAA;MAAUG,UAAA,EAAY;MAAOC,oBAAA,EAAsB;IAAK;EAC1E;EAEA,IAAID,UAAA,IAAcC,oBAAA,EAAsB;IACtC,OAAO;MAAEF,KAAA,EAAOiB,cAAA;MAAgBhB,UAAA,EAAY;MAAMC,oBAAA,EAAsB;IAAM;EAChF;EAEA,OAAO;IAAEF,KAAA,EAAOF,QAAA;IAAUG,UAAA,EAAY;IAAOC,oBAAA,EAAsB;EAAM;AAC3E;AAEO,SAASmB,YACdxB,OAAA,EACAC,QAAA,EACAjB,IAAA,GAAiB,EAAC,EAClBC,wBAAA,EACG;EACH,MAAM2B,MAAA,GAASb,uBAAA,CACbC,OAAA,EACAC,QAAA,EACAjB,IAAA,EACAC,wBAAA,EACA,KACF;EAGA,IAAID,IAAA,CAAKU,MAAA,KAAW,KAAKkB,MAAA,CAAOP,oBAAA,IAAwB,CAACO,MAAA,CAAOR,UAAA,EAAY;IAG1E,IAAIZ,KAAA,CAAMC,OAAA,CAAQmB,MAAA,CAAOT,KAAK,GAAG;MAC/B,OAAO,CAAC,GAAGS,MAAA,CAAOT,KAAK;IACzB,WAAW,OAAOS,MAAA,CAAOT,KAAA,KAAU,YAAYS,MAAA,CAAOT,KAAA,KAAU,MAAM;MACpE,OAAO;QAAE,GAAGS,MAAA,CAAOT;MAAM;IAC3B;EACF;EAEA,OAAOS,MAAA,CAAOT,KAAA;AAChB;AAEO,SAASsB,sBAAyBtB,KAAA,EAAUuB,OAAA,EAAsB;EACvE,MAAMC,gBAAA,GAAmB7C,MAAA,CAAUqB,KAAK;EAExC,MAAMyB,aAAA,GAAgBJ,WAAA,CACpBrB,KAAA,EACAwB,gBAAA,CAAiB3B,OAAA,EACjB,EAAC,EACD0B,OAAA,EAASzC,wBACX;EAEA0C,gBAAA,CAAiB3B,OAAA,GAAU4B,aAAA;EAE3B,OAAOA,aAAA;AACT","ignoreList":[]}