@take-out/hooks 0.0.28

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 (183) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +120 -0
  3. package/dist/cjs/index.cjs +30 -0
  4. package/dist/cjs/index.js +27 -0
  5. package/dist/cjs/index.js.map +6 -0
  6. package/dist/cjs/index.native.js +33 -0
  7. package/dist/cjs/index.native.js.map +1 -0
  8. package/dist/cjs/useClickOutside.cjs +43 -0
  9. package/dist/cjs/useClickOutside.js +37 -0
  10. package/dist/cjs/useClickOutside.js.map +6 -0
  11. package/dist/cjs/useClickOutside.native.js +51 -0
  12. package/dist/cjs/useClickOutside.native.js.map +1 -0
  13. package/dist/cjs/useDebouncePrepend.cjs +46 -0
  14. package/dist/cjs/useDebouncePrepend.js +40 -0
  15. package/dist/cjs/useDebouncePrepend.js.map +6 -0
  16. package/dist/cjs/useDebouncePrepend.native.js +54 -0
  17. package/dist/cjs/useDebouncePrepend.native.js.map +1 -0
  18. package/dist/cjs/useDeepMemoizedObject.cjs +148 -0
  19. package/dist/cjs/useDeepMemoizedObject.js +122 -0
  20. package/dist/cjs/useDeepMemoizedObject.js.map +6 -0
  21. package/dist/cjs/useDeepMemoizedObject.native.js +192 -0
  22. package/dist/cjs/useDeepMemoizedObject.native.js.map +1 -0
  23. package/dist/cjs/useDeepMemoizedObject.test.cjs +251 -0
  24. package/dist/cjs/useDeepMemoizedObject.test.js +187 -0
  25. package/dist/cjs/useDeepMemoizedObject.test.js.map +6 -0
  26. package/dist/cjs/useDeepMemoizedObject.test.native.js +261 -0
  27. package/dist/cjs/useDeepMemoizedObject.test.native.js.map +1 -0
  28. package/dist/cjs/useDeferredBoolean.cjs +34 -0
  29. package/dist/cjs/useDeferredBoolean.js +29 -0
  30. package/dist/cjs/useDeferredBoolean.js.map +6 -0
  31. package/dist/cjs/useDeferredBoolean.native.js +37 -0
  32. package/dist/cjs/useDeferredBoolean.native.js.map +1 -0
  33. package/dist/cjs/useEffectOnceGlobally.cjs +33 -0
  34. package/dist/cjs/useEffectOnceGlobally.js +28 -0
  35. package/dist/cjs/useEffectOnceGlobally.js.map +6 -0
  36. package/dist/cjs/useEffectOnceGlobally.native.js +38 -0
  37. package/dist/cjs/useEffectOnceGlobally.native.js.map +1 -0
  38. package/dist/cjs/useIsMounted.cjs +32 -0
  39. package/dist/cjs/useIsMounted.js +27 -0
  40. package/dist/cjs/useIsMounted.js.map +6 -0
  41. package/dist/cjs/useIsMounted.native.js +35 -0
  42. package/dist/cjs/useIsMounted.native.js.map +1 -0
  43. package/dist/cjs/useLastValue.cjs +29 -0
  44. package/dist/cjs/useLastValue.js +24 -0
  45. package/dist/cjs/useLastValue.js.map +6 -0
  46. package/dist/cjs/useLastValue.native.js +32 -0
  47. package/dist/cjs/useLastValue.native.js.map +1 -0
  48. package/dist/cjs/useLastValueIf.cjs +31 -0
  49. package/dist/cjs/useLastValueIf.js +25 -0
  50. package/dist/cjs/useLastValueIf.js.map +6 -0
  51. package/dist/cjs/useLastValueIf.native.js +35 -0
  52. package/dist/cjs/useLastValueIf.native.js.map +1 -0
  53. package/dist/cjs/useMemoStable.cjs +32 -0
  54. package/dist/cjs/useMemoStable.js +26 -0
  55. package/dist/cjs/useMemoStable.js.map +6 -0
  56. package/dist/cjs/useMemoStable.native.js +36 -0
  57. package/dist/cjs/useMemoStable.native.js.map +1 -0
  58. package/dist/cjs/useMemoizedObjectList.cjs +48 -0
  59. package/dist/cjs/useMemoizedObjectList.js +36 -0
  60. package/dist/cjs/useMemoizedObjectList.js.map +6 -0
  61. package/dist/cjs/useMemoizedObjectList.native.js +65 -0
  62. package/dist/cjs/useMemoizedObjectList.native.js.map +1 -0
  63. package/dist/cjs/useThrottle.cjs +39 -0
  64. package/dist/cjs/useThrottle.js +30 -0
  65. package/dist/cjs/useThrottle.js.map +6 -0
  66. package/dist/cjs/useThrottle.native.js +45 -0
  67. package/dist/cjs/useThrottle.native.js.map +1 -0
  68. package/dist/cjs/useWarnIfDepsChange.cjs +54 -0
  69. package/dist/cjs/useWarnIfDepsChange.js +46 -0
  70. package/dist/cjs/useWarnIfDepsChange.js.map +6 -0
  71. package/dist/cjs/useWarnIfDepsChange.native.js +58 -0
  72. package/dist/cjs/useWarnIfDepsChange.native.js.map +1 -0
  73. package/dist/cjs/useWarnIfMemoChangesOften.cjs +34 -0
  74. package/dist/cjs/useWarnIfMemoChangesOften.js +29 -0
  75. package/dist/cjs/useWarnIfMemoChangesOften.js.map +6 -0
  76. package/dist/cjs/useWarnIfMemoChangesOften.native.js +42 -0
  77. package/dist/cjs/useWarnIfMemoChangesOften.native.js.map +1 -0
  78. package/dist/esm/index.js +14 -0
  79. package/dist/esm/index.js.map +6 -0
  80. package/dist/esm/index.mjs +14 -0
  81. package/dist/esm/index.mjs.map +1 -0
  82. package/dist/esm/index.native.js +14 -0
  83. package/dist/esm/index.native.js.map +1 -0
  84. package/dist/esm/useClickOutside.js +22 -0
  85. package/dist/esm/useClickOutside.js.map +6 -0
  86. package/dist/esm/useClickOutside.mjs +20 -0
  87. package/dist/esm/useClickOutside.mjs.map +1 -0
  88. package/dist/esm/useClickOutside.native.js +25 -0
  89. package/dist/esm/useClickOutside.native.js.map +1 -0
  90. package/dist/esm/useDebouncePrepend.js +25 -0
  91. package/dist/esm/useDebouncePrepend.js.map +6 -0
  92. package/dist/esm/useDebouncePrepend.mjs +23 -0
  93. package/dist/esm/useDebouncePrepend.mjs.map +1 -0
  94. package/dist/esm/useDebouncePrepend.native.js +28 -0
  95. package/dist/esm/useDebouncePrepend.native.js.map +1 -0
  96. package/dist/esm/useDeepMemoizedObject.js +106 -0
  97. package/dist/esm/useDeepMemoizedObject.js.map +6 -0
  98. package/dist/esm/useDeepMemoizedObject.mjs +123 -0
  99. package/dist/esm/useDeepMemoizedObject.mjs.map +1 -0
  100. package/dist/esm/useDeepMemoizedObject.native.js +164 -0
  101. package/dist/esm/useDeepMemoizedObject.native.js.map +1 -0
  102. package/dist/esm/useDeepMemoizedObject.test.js +188 -0
  103. package/dist/esm/useDeepMemoizedObject.test.js.map +6 -0
  104. package/dist/esm/useDeepMemoizedObject.test.mjs +252 -0
  105. package/dist/esm/useDeepMemoizedObject.test.mjs.map +1 -0
  106. package/dist/esm/useDeepMemoizedObject.test.native.js +259 -0
  107. package/dist/esm/useDeepMemoizedObject.test.native.js.map +1 -0
  108. package/dist/esm/useDeferredBoolean.js +13 -0
  109. package/dist/esm/useDeferredBoolean.js.map +6 -0
  110. package/dist/esm/useDeferredBoolean.mjs +11 -0
  111. package/dist/esm/useDeferredBoolean.mjs.map +1 -0
  112. package/dist/esm/useDeferredBoolean.native.js +11 -0
  113. package/dist/esm/useDeferredBoolean.native.js.map +1 -0
  114. package/dist/esm/useEffectOnceGlobally.js +12 -0
  115. package/dist/esm/useEffectOnceGlobally.js.map +6 -0
  116. package/dist/esm/useEffectOnceGlobally.mjs +10 -0
  117. package/dist/esm/useEffectOnceGlobally.mjs.map +1 -0
  118. package/dist/esm/useEffectOnceGlobally.native.js +12 -0
  119. package/dist/esm/useEffectOnceGlobally.native.js.map +1 -0
  120. package/dist/esm/useIsMounted.js +11 -0
  121. package/dist/esm/useIsMounted.js.map +6 -0
  122. package/dist/esm/useIsMounted.mjs +9 -0
  123. package/dist/esm/useIsMounted.mjs.map +1 -0
  124. package/dist/esm/useIsMounted.native.js +9 -0
  125. package/dist/esm/useIsMounted.native.js.map +1 -0
  126. package/dist/esm/useLastValue.js +8 -0
  127. package/dist/esm/useLastValue.js.map +6 -0
  128. package/dist/esm/useLastValue.mjs +6 -0
  129. package/dist/esm/useLastValue.mjs.map +1 -0
  130. package/dist/esm/useLastValue.native.js +6 -0
  131. package/dist/esm/useLastValue.native.js.map +1 -0
  132. package/dist/esm/useLastValueIf.js +9 -0
  133. package/dist/esm/useLastValueIf.js.map +6 -0
  134. package/dist/esm/useLastValueIf.mjs +8 -0
  135. package/dist/esm/useLastValueIf.mjs.map +1 -0
  136. package/dist/esm/useLastValueIf.native.js +9 -0
  137. package/dist/esm/useLastValueIf.native.js.map +1 -0
  138. package/dist/esm/useMemoStable.js +11 -0
  139. package/dist/esm/useMemoStable.js.map +6 -0
  140. package/dist/esm/useMemoStable.mjs +9 -0
  141. package/dist/esm/useMemoStable.mjs.map +1 -0
  142. package/dist/esm/useMemoStable.native.js +10 -0
  143. package/dist/esm/useMemoStable.native.js.map +1 -0
  144. package/dist/esm/useMemoizedObjectList.js +21 -0
  145. package/dist/esm/useMemoizedObjectList.js.map +6 -0
  146. package/dist/esm/useMemoizedObjectList.mjs +25 -0
  147. package/dist/esm/useMemoizedObjectList.mjs.map +1 -0
  148. package/dist/esm/useMemoizedObjectList.native.js +39 -0
  149. package/dist/esm/useMemoizedObjectList.native.js.map +1 -0
  150. package/dist/esm/useThrottle.js +15 -0
  151. package/dist/esm/useThrottle.js.map +6 -0
  152. package/dist/esm/useThrottle.mjs +16 -0
  153. package/dist/esm/useThrottle.mjs.map +1 -0
  154. package/dist/esm/useThrottle.native.js +19 -0
  155. package/dist/esm/useThrottle.native.js.map +1 -0
  156. package/dist/esm/useWarnIfDepsChange.js +31 -0
  157. package/dist/esm/useWarnIfDepsChange.js.map +6 -0
  158. package/dist/esm/useWarnIfDepsChange.mjs +31 -0
  159. package/dist/esm/useWarnIfDepsChange.mjs.map +1 -0
  160. package/dist/esm/useWarnIfDepsChange.native.js +32 -0
  161. package/dist/esm/useWarnIfDepsChange.native.js.map +1 -0
  162. package/dist/esm/useWarnIfMemoChangesOften.js +14 -0
  163. package/dist/esm/useWarnIfMemoChangesOften.js.map +6 -0
  164. package/dist/esm/useWarnIfMemoChangesOften.mjs +11 -0
  165. package/dist/esm/useWarnIfMemoChangesOften.mjs.map +1 -0
  166. package/dist/esm/useWarnIfMemoChangesOften.native.js +16 -0
  167. package/dist/esm/useWarnIfMemoChangesOften.native.js.map +1 -0
  168. package/package.json +54 -0
  169. package/src/index.ts +13 -0
  170. package/src/useClickOutside.ts +34 -0
  171. package/src/useDebouncePrepend.ts +63 -0
  172. package/src/useDeepMemoizedObject.test.ts +343 -0
  173. package/src/useDeepMemoizedObject.ts +231 -0
  174. package/src/useDeferredBoolean.tsx +15 -0
  175. package/src/useEffectOnceGlobally.ts +41 -0
  176. package/src/useIsMounted.ts +11 -0
  177. package/src/useLastValue.ts +5 -0
  178. package/src/useLastValueIf.ts +15 -0
  179. package/src/useMemoStable.ts +24 -0
  180. package/src/useMemoizedObjectList.ts +74 -0
  181. package/src/useThrottle.ts +35 -0
  182. package/src/useWarnIfDepsChange.ts +61 -0
  183. package/src/useWarnIfMemoChangesOften.ts +24 -0
@@ -0,0 +1,46 @@
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 useWarnIfDepsChange_exports = {};
16
+ __export(useWarnIfDepsChange_exports, {
17
+ useWarnIfDepsChange: () => useWarnIfDepsChange
18
+ });
19
+ module.exports = __toCommonJS(useWarnIfDepsChange_exports);
20
+ var import_react = require("react"), import_helpers = require("@take-out/helpers");
21
+ function useWarnIfDepsChange(deps, options) {
22
+ const { maxChanges = 0, name, ignoreIndexBefore = 0 } = options, changeCountRef = (0, import_react.useRef)(0), prevDepsRef = (0, import_react.useRef)(void 0), id = (0, import_react.useId)();
23
+ (0, import_react.useEffect)(() => {
24
+ if (process.env.NODE_ENV === "development") {
25
+ if (prevDepsRef.current !== void 0) {
26
+ const changedDeps = [];
27
+ (ignoreIndexBefore ? deps.slice(ignoreIndexBefore) : deps).forEach((dep, indexIn) => {
28
+ const index = indexIn + ignoreIndexBefore;
29
+ prevDepsRef.current && prevDepsRef.current[index] !== dep && changedDeps.push({
30
+ index,
31
+ prev: prevDepsRef.current[index],
32
+ next: dep
33
+ });
34
+ }), changedDeps.length > 0 && (changeCountRef.current++, changeCountRef.current > maxChanges && console.info(
35
+ `\u{1F504} useWarnIfDepsChange "${name}" is changing too often! Changed ${changeCountRef.current} times (max: ${maxChanges})`,
36
+ changedDeps,
37
+ `
38
+ id (${id}) at:`,
39
+ (0, import_helpers.getCurrentComponentStack)("short")
40
+ ));
41
+ }
42
+ prevDepsRef.current = deps;
43
+ }
44
+ });
45
+ }
46
+ //# sourceMappingURL=useWarnIfDepsChange.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/useWarnIfDepsChange.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAyC,kBACzC,iBAAyC;AAQlC,SAAS,oBACd,MACA,SACM;AACN,QAAM,EAAE,aAAa,GAAG,MAAM,oBAAoB,EAAE,IAAI,SAElD,qBAAiB,qBAAO,CAAC,GACzB,kBAAc,qBAAsB,MAAS,GAC7C,SAAK,oBAAM;AAEjB,8BAAU,MAAM;AACd,QAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,UAAI,YAAY,YAAY,QAAW;AACrC,cAAM,cAID,CAAC;AAIN,SAFoB,oBAAoB,KAAK,MAAM,iBAAiB,IAAI,MAE5D,QAAQ,CAAC,KAAK,YAAY;AACpC,gBAAM,QAAQ,UAAU;AAExB,UAAI,YAAY,WAAW,YAAY,QAAQ,KAAK,MAAM,OACxD,YAAY,KAAK;AAAA,YACf;AAAA,YACA,MAAM,YAAY,QAAQ,KAAK;AAAA,YAC/B,MAAM;AAAA,UACR,CAAC;AAAA,QAEL,CAAC,GAEG,YAAY,SAAS,MACvB,eAAe,WAEX,eAAe,UAAU,cAE3B,QAAQ;AAAA,UACN,kCAA2B,IAAI,oCAAoC,eAAe,OAAO,gBAAgB,UAAU;AAAA,UACnH;AAAA,UACA;AAAA,OAAU,EAAE;AAAA,cACZ,yCAAyB,OAAO;AAAA,QAClC;AAAA,MAGN;AAEA,kBAAY,UAAU;AAAA,IACxB;AAAA,EACF,CAAC;AACH;",
5
+ "names": []
6
+ }
@@ -0,0 +1,58 @@
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: !0
11
+ });
12
+ },
13
+ __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
15
+ get: () => from[key],
16
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
+ });
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: !0
22
+ }), mod);
23
+ var useWarnIfDepsChange_exports = {};
24
+ __export(useWarnIfDepsChange_exports, {
25
+ useWarnIfDepsChange: () => useWarnIfDepsChange
26
+ });
27
+ module.exports = __toCommonJS(useWarnIfDepsChange_exports);
28
+ var import_react = require("react"),
29
+ import_helpers = require("@take-out/helpers");
30
+ function useWarnIfDepsChange(deps, options) {
31
+ var {
32
+ maxChanges = 0,
33
+ name,
34
+ ignoreIndexBefore = 0
35
+ } = options,
36
+ changeCountRef = (0, import_react.useRef)(0),
37
+ prevDepsRef = (0, import_react.useRef)(void 0),
38
+ id = (0, import_react.useId)();
39
+ (0, import_react.useEffect)(function () {
40
+ if (process.env.NODE_ENV === "development") {
41
+ if (prevDepsRef.current !== void 0) {
42
+ var changedDeps = [],
43
+ compareDeps = ignoreIndexBefore ? deps.slice(ignoreIndexBefore) : deps;
44
+ compareDeps.forEach(function (dep, indexIn) {
45
+ var index = indexIn + ignoreIndexBefore;
46
+ prevDepsRef.current && prevDepsRef.current[index] !== dep && changedDeps.push({
47
+ index,
48
+ prev: prevDepsRef.current[index],
49
+ next: dep
50
+ });
51
+ }), changedDeps.length > 0 && (changeCountRef.current++, changeCountRef.current > maxChanges && console.info(`\u{1F504} useWarnIfDepsChange "${name}" is changing too often! Changed ${changeCountRef.current} times (max: ${maxChanges})`, changedDeps, `
52
+ id (${id}) at:`, (0, import_helpers.getCurrentComponentStack)("short")));
53
+ }
54
+ prevDepsRef.current = deps;
55
+ }
56
+ });
57
+ }
58
+ //# sourceMappingURL=useWarnIfDepsChange.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useWarnIfDepsChange_exports","__export","useWarnIfDepsChange","module","exports","import_react","require","import_helpers","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,2BACA;AAQlC,IAAAK,YAAS,GAAAC,OAAA,QACd,CACA;EAAAC,cACM,GAAAD,OAAA;AACN,SAAMJ,mBAAkBA,CAAAM,IAAM,EAAAC,OAAA;EAM9B;MAAAC,UAAA;MAAAC,IAAA;MAAUC,iBAAM;IAAA,IAAAH,OAAA;IAAAI,cAAA,OAAAR,YAAA,CAAAS,MAAA;IAAAC,WAAA,OAAAV,YAAA,CAAAS,MAAA;IAAAE,EAAA,OAAAX,YAAA,CAAAY,KAAA;EACd,IAAAZ,YAAY,CAAAa,SAAI,cAAa;IAC3B,IAAAC,OAAI,CAAAC,GAAA,CAAAC,QAAY,kBAAuB;MACrC,IAAAN,WAAM,CAAAO,OAIA;QAIN,IAFoBC,WAAA;UAAoBC,WAAW,GAAAZ,iBAAqB,GAAAJ,IAE5D,CAAAiB,KAAA,CAAQb,iBAAM,CAAY,GAAAJ,IAAA;QACpCgB,WAAM,CAAAE,OAAQ,WAAUC,GAAA,EAAAC,OAAA;UAEpB,IAAAC,KAAA,GAAYD,OAAA,GAAAhB,iBAAuB;UACpBG,WACf,CAAAO,OAAA,IAAAP,WAAA,CAAAO,OAAA,CAAAO,KAAA,MAAAF,GAAA,IAAAJ,WAAA,CAAAO,IAAA;YACAD,KAAA;YACAE,IAAA,EAAMhB,WAAA,CAAAO,OAAA,CAAAO,KAAA;YACPG,IAAA,EAAAL;UAEJ,EAEG;QAKQ,EACN,EAAAJ,WAAA,CAAAU,MAAA,SAAApB,cAA+B,CAAAS,OAAA,IAAAT,cAAA,CAAAS,OAAoC,GAAAZ,UAAe,IAAAwB,OAAO,CAAAC,IAAA,mCAA0BxB,IAAA,oCAAAE,cAAA,CAAAS,OAAA,gBAAAZ,UAAA,KAAAa,WAAA;AAAA,OAAAP,EAAA,OACnH,MAAAT,cAAA,CAAA6B,wBAAA;MAAA;MACArB,WAAY,CAAAO,OAAA,GAAAd,IAAA;IAAA;EACoB;AAClC","ignoreList":[]}
@@ -0,0 +1,34 @@
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 useWarnIfMemoChangesOften_exports = {};
22
+ __export(useWarnIfMemoChangesOften_exports, {
23
+ useWarnIfMemoChangesOften: () => useWarnIfMemoChangesOften
24
+ });
25
+ module.exports = __toCommonJS(useWarnIfMemoChangesOften_exports);
26
+ var import_react = require("react"),
27
+ import_helpers = require("@take-out/helpers");
28
+ const useWarnIfMemoChangesOften = process.env.NODE_ENV === "production" ? import_helpers.emptyFn : (value, threshold = 5, name) => {
29
+ const countRef = (0, import_react.useRef)(0),
30
+ prevValueRef = (0, import_react.useRef)(value);
31
+ (0, import_react.useEffect)(() => {
32
+ prevValueRef.current !== value && (countRef.current++, prevValueRef.current = value, countRef.current > threshold && console.warn(`\u{1F504} ${name || "Memoized value"} is changing too often! Changed ${countRef.current} times (threshold: ${threshold})`));
33
+ }, [value, threshold, name]);
34
+ };
@@ -0,0 +1,29 @@
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 useWarnIfMemoChangesOften_exports = {};
16
+ __export(useWarnIfMemoChangesOften_exports, {
17
+ useWarnIfMemoChangesOften: () => useWarnIfMemoChangesOften
18
+ });
19
+ module.exports = __toCommonJS(useWarnIfMemoChangesOften_exports);
20
+ var import_react = require("react"), import_helpers = require("@take-out/helpers");
21
+ const useWarnIfMemoChangesOften = process.env.NODE_ENV === "production" ? import_helpers.emptyFn : (value, threshold = 5, name) => {
22
+ const countRef = (0, import_react.useRef)(0), prevValueRef = (0, import_react.useRef)(value);
23
+ (0, import_react.useEffect)(() => {
24
+ prevValueRef.current !== value && (countRef.current++, prevValueRef.current = value, countRef.current > threshold && console.warn(
25
+ `\u{1F504} ${name || "Memoized value"} is changing too often! Changed ${countRef.current} times (threshold: ${threshold})`
26
+ ));
27
+ }, [value, threshold, name]);
28
+ };
29
+ //# sourceMappingURL=useWarnIfMemoChangesOften.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/useWarnIfMemoChangesOften.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkC,kBAClC,iBAAwB;AAEjB,MAAM,4BACX,QAAQ,IAAI,aAAa,eACpB,yBACD,CAAI,OAAU,YAAY,GAAG,SAAkB;AAC7C,QAAM,eAAW,qBAAO,CAAC,GACnB,mBAAe,qBAAU,KAAK;AAEpC,8BAAU,MAAM;AACd,IAAI,aAAa,YAAY,UAC3B,SAAS,WACT,aAAa,UAAU,OAEnB,SAAS,UAAU,aAErB,QAAQ;AAAA,MACN,aAFkB,QAAQ,gBAET,mCAAmC,SAAS,OAAO,sBAAsB,SAAS;AAAA,IACrG;AAAA,EAGN,GAAG,CAAC,OAAO,WAAW,IAAI,CAAC;AAC7B;",
5
+ "names": []
6
+ }
@@ -0,0 +1,42 @@
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: !0
11
+ });
12
+ },
13
+ __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
15
+ get: () => from[key],
16
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
+ });
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: !0
22
+ }), mod);
23
+ var useWarnIfMemoChangesOften_exports = {};
24
+ __export(useWarnIfMemoChangesOften_exports, {
25
+ useWarnIfMemoChangesOften: () => useWarnIfMemoChangesOften
26
+ });
27
+ module.exports = __toCommonJS(useWarnIfMemoChangesOften_exports);
28
+ var import_react = require("react"),
29
+ import_helpers = require("@take-out/helpers"),
30
+ useWarnIfMemoChangesOften = process.env.NODE_ENV === "production" ? import_helpers.emptyFn : function (value) {
31
+ var threshold = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 5,
32
+ name = arguments.length > 2 ? arguments[2] : void 0,
33
+ countRef = (0, import_react.useRef)(0),
34
+ prevValueRef = (0, import_react.useRef)(value);
35
+ (0, import_react.useEffect)(function () {
36
+ if (prevValueRef.current !== value && (countRef.current++, prevValueRef.current = value, countRef.current > threshold)) {
37
+ var warningName = name || "Memoized value";
38
+ console.warn(`\u{1F504} ${warningName} is changing too often! Changed ${countRef.current} times (threshold: ${threshold})`);
39
+ }
40
+ }, [value, threshold, name]);
41
+ };
42
+ //# sourceMappingURL=useWarnIfMemoChangesOften.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useWarnIfMemoChangesOften_exports","__export","useWarnIfMemoChangesOften","module","exports","import_react","require","import_helpers","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,YAAkC,CAAAK,iCACV;AAEjB,IAAAK,YAAM,GAAAC,OAAA,QACX;EAAAC,cAAY,GAAAD,OAAa,oBACpB;EAAAJ,yBACa,GAAAM,OAAY,CAAAC,GAAG,CAAAC,QAAkB,oBAAAH,cAAA,CAAAI,OAAA,aAAAZ,KAAA;IAC7C,IAAAa,SAAM,GAAAC,SAAW,CAAAC,MAAA,QAAAD,SACX,iBAAeA,SAAA;MAAAE,IAAU,GAAKF,SAAA,CAAAC,MAAA,OAAAD,SAAA;MAAAG,QAAA,OAAAX,YAAA,CAAAY,MAAA;MAAAC,YAAA,OAAAb,YAAA,CAAAY,MAAA,EAAAlB,KAAA;IAEpC,IAAAM,YAAA,CAAAc,SAAA,EAAU,YAAM;MACV,IAAAD,YAAa,CAAAE,OAAA,KAAYrB,KAAA,KAC3BiB,QAAS,CAAAI,OACT,IAAAF,YAAa,CAAAE,OAAU,GAAArB,KAEnB,EAAAiB,QAAS,CAAAI,OAAU,GAAAR,SAErB;QACE,IAAAS,WAFkB,GAAAN,IAAQ,oBAET;QACnBO,OAAA,CAAAC,IAAA,cAAAF,WAAA,mCAAAL,QAAA,CAAAI,OAAA,sBAAAR,SAAA;MAGN;IACF,I","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ export * from "./useClickOutside";
2
+ export * from "./useDebouncePrepend";
3
+ export * from "./useDeepMemoizedObject";
4
+ export * from "./useDeferredBoolean";
5
+ export * from "./useEffectOnceGlobally";
6
+ export * from "./useIsMounted";
7
+ export * from "./useLastValue";
8
+ export * from "./useLastValueIf";
9
+ export * from "./useMemoizedObjectList";
10
+ export * from "./useMemoStable";
11
+ export * from "./useThrottle";
12
+ export * from "./useWarnIfDepsChange";
13
+ export * from "./useWarnIfMemoChangesOften";
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.ts"],
4
+ "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;",
5
+ "names": []
6
+ }
@@ -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,22 @@
1
+ import { useEffect } from "react";
2
+ import { isWeb } from "tamagui";
3
+ const useClickOutside = ({
4
+ ref,
5
+ active,
6
+ onClickOutside
7
+ }) => {
8
+ useEffect(() => {
9
+ if (!isWeb || !active || !onClickOutside) return;
10
+ const handleClickOutside = (e) => {
11
+ const node = ref.current;
12
+ node && e.target instanceof HTMLElement && (node.contains(e.target) || onClickOutside());
13
+ };
14
+ return document.addEventListener("click", handleClickOutside), () => {
15
+ document.removeEventListener("click", handleClickOutside);
16
+ };
17
+ }, [ref, active, onClickOutside]);
18
+ };
19
+ export {
20
+ useClickOutside
21
+ };
22
+ //# sourceMappingURL=useClickOutside.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/useClickOutside.ts"],
4
+ "mappings": "AAAA,SAAS,iBAAiB;AAC1B,SAAS,aAAkC;AAQpC,MAAM,kBAAkB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AACF,MAA4B;AAC1B,YAAU,MAAM;AAGd,QAFI,CAAC,SACD,CAAC,UACD,CAAC,eAAgB;AAErB,UAAM,qBAAqB,CAAC,MAAkB;AAC5C,YAAM,OAAO,IAAI;AACjB,MAAK,QACC,EAAE,kBAAkB,gBACrB,KAAK,SAAS,EAAE,MAAM,KACzB,eAAe;AAAA,IAEnB;AAEA,oBAAS,iBAAiB,SAAS,kBAAkB,GAC9C,MAAM;AACX,eAAS,oBAAoB,SAAS,kBAAkB;AAAA,IAC1D;AAAA,EACF,GAAG,CAAC,KAAK,QAAQ,cAAc,CAAC;AAClC;",
5
+ "names": []
6
+ }
@@ -0,0 +1,20 @@
1
+ import { useEffect } from "react";
2
+ import { isWeb } from "tamagui";
3
+ const useClickOutside = ({
4
+ ref,
5
+ active,
6
+ onClickOutside
7
+ }) => {
8
+ useEffect(() => {
9
+ if (!isWeb || !active || !onClickOutside) return;
10
+ const handleClickOutside = e => {
11
+ const node = ref.current;
12
+ node && e.target instanceof HTMLElement && (node.contains(e.target) || onClickOutside());
13
+ };
14
+ return document.addEventListener("click", handleClickOutside), () => {
15
+ document.removeEventListener("click", handleClickOutside);
16
+ };
17
+ }, [ref, active, onClickOutside]);
18
+ };
19
+ export { useClickOutside };
20
+ //# sourceMappingURL=useClickOutside.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","isWeb","useClickOutside","ref","active","onClickOutside","handleClickOutside","e","node","current","target","HTMLElement","contains","document","addEventListener","removeEventListener"],"sources":["../../src/useClickOutside.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,QAAiB;AAC1B,SAASC,KAAA,QAAkC;AAQpC,MAAMC,eAAA,GAAkBA,CAAC;EAC9BC,GAAA;EACAC,MAAA;EACAC;AACF,MAA4B;EAC1BL,SAAA,CAAU,MAAM;IAGd,IAFI,CAACC,KAAA,IACD,CAACG,MAAA,IACD,CAACC,cAAA,EAAgB;IAErB,MAAMC,kBAAA,GAAsBC,CAAA,IAAkB;MAC5C,MAAMC,IAAA,GAAOL,GAAA,CAAIM,OAAA;MACZD,IAAA,IACCD,CAAA,CAAEG,MAAA,YAAkBC,WAAA,KACrBH,IAAA,CAAKI,QAAA,CAASL,CAAA,CAAEG,MAAM,KACzBL,cAAA,CAAe;IAEnB;IAEA,OAAAQ,QAAA,CAASC,gBAAA,CAAiB,SAASR,kBAAkB,GAC9C,MAAM;MACXO,QAAA,CAASE,mBAAA,CAAoB,SAAST,kBAAkB;IAC1D;EACF,GAAG,CAACH,GAAA,EAAKC,MAAA,EAAQC,cAAc,CAAC;AAClC","ignoreList":[]}
@@ -0,0 +1,25 @@
1
+ import { useEffect } from "react";
2
+ import { isWeb } from "tamagui";
3
+ function _instanceof(left, right) {
4
+ return right != null && typeof Symbol < "u" && right[Symbol.hasInstance] ? !!right[Symbol.hasInstance](left) : left instanceof right;
5
+ }
6
+ var useClickOutside = function (param) {
7
+ var {
8
+ ref,
9
+ active,
10
+ onClickOutside
11
+ } = param;
12
+ useEffect(function () {
13
+ if (isWeb && active && onClickOutside) {
14
+ var handleClickOutside = function (e) {
15
+ var node = ref.current;
16
+ node && _instanceof(e.target, HTMLElement) && (node.contains(e.target) || onClickOutside());
17
+ };
18
+ return document.addEventListener("click", handleClickOutside), function () {
19
+ document.removeEventListener("click", handleClickOutside);
20
+ };
21
+ }
22
+ }, [ref, active, onClickOutside]);
23
+ };
24
+ export { useClickOutside };
25
+ //# sourceMappingURL=useClickOutside.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","isWeb","_instanceof","left","right","Symbol","hasInstance","useClickOutside","param","ref","active","onClickOutside","handleClickOutside","e","node","current","target","HTMLElement","contains","document","addEventListener","removeEventListener"],"sources":["../../src/useClickOutside.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,QAAiB;AAC1B,SAASC,KAAA,QAAkC;AAQpC,SAAMC,YAAAC,IAAmB,EAAAC,KAAA;EAC9B,OAAAA,KAAA,mBAAAC,MAAA,UAAAD,KAAA,CAAAC,MAAA,CAAAC,WAAA,MAAAF,KAAA,CAAAC,MAAA,CAAAC,WAAA,EAAAH,IAAA,IAAAA,IAAA,YAAAC,KAAA;AAAA;AACA,IACAG,eAAA,YAAAA,CAAAC,KAAA;EACF,IAA4B;IAAAC,GAAA;IAAAC,MAAA;IAAAC;EAAA,IAAAH,KAAA;EAC1BR,SAAA,CAAU,YAAM;IAGd,IAFIC,KAAC,IAAAS,MACA,IAAAC,cACA;MAEL,IAAMC,kBAAA,GAAqB,SAAAA,CAAmBC,CAAA;QAC5C,IAAMC,IAAA,GAAOL,GAAA,CAAIM,OAAA;QACZD,IAAA,IACGZ,WAAA,CAAAW,CAAA,CAAAG,MAAkB,EAAAC,WAAA,CACrB,KAAKH,IAAA,CAAAI,QAAW,CAAAL,CAAA,CAAAG,MACnB,KAAAL,cAAe;MAEnB;MAEA,OAAAQ,QAAS,CAAAC,gBAAiB,QAAS,EAAAR,kBAAkB,CAC9C,cAAM;QACXO,QAAS,CAAAE,mBAAoB,QAAS,EAAAT,kBAAkB;MAC1D;IACF;EACF,I","ignoreList":[]}
@@ -0,0 +1,25 @@
1
+ import { useCallback, useEffect, useMemo, useState } from "react";
2
+ import { debounce } from "tamagui";
3
+ function useDebouncePrepend(list, delay) {
4
+ const [current, setCurrent] = useState(list), [previous, setPrevious] = useState(list), [pendingUpdate, setPendingUpdate] = useState(null), debouncedUpdate = useMemo(() => debounce((newList) => {
5
+ setCurrent(newList), setPendingUpdate(null);
6
+ }, delay), [delay]), updateState = useCallback(
7
+ (newList) => {
8
+ setCurrent((prevCurrent) => {
9
+ const currentList = pendingUpdate || prevCurrent;
10
+ return newList.length > previous.length && newList[0]?.id !== previous[0]?.id ? (debouncedUpdate.cancel(), setPendingUpdate(newList), debouncedUpdate(newList), currentList) : (debouncedUpdate.cancel(), setPendingUpdate(null), newList);
11
+ });
12
+ },
13
+ [previous, pendingUpdate, debouncedUpdate]
14
+ );
15
+ return useEffect(() => {
16
+ if (list !== previous)
17
+ return setPrevious(list), updateState(list), () => {
18
+ debouncedUpdate.cancel();
19
+ };
20
+ }, [list, previous, updateState, debouncedUpdate]), current;
21
+ }
22
+ export {
23
+ useDebouncePrepend
24
+ };
25
+ //# sourceMappingURL=useDebouncePrepend.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/useDebouncePrepend.ts"],
4
+ "mappings": "AAAA,SAAS,aAAa,WAAW,SAAS,gBAAgB;AAC1D,SAAS,gBAAgB;AAElB,SAAS,mBACd,MACA,OACG;AACH,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,IAAI,GACrC,CAAC,UAAU,WAAW,IAAI,SAAS,IAAI,GACvC,CAAC,eAAe,gBAAgB,IAAI,SAAmB,IAAI,GAE3D,kBAAkB,QAAQ,MACvB,SAAS,CAAC,YAAe;AAC9B,eAAW,OAAO,GAClB,iBAAiB,IAAI;AAAA,EACvB,GAAG,KAAK,GACP,CAAC,KAAK,CAAC,GAEJ,cAAc;AAAA,IAClB,CAAC,YAAe;AACd,iBAAW,CAAC,gBAAgB;AAE1B,cAAM,cAAc,iBAAiB;AAMrC,eAFE,QAAQ,SAAS,SAAS,UAAU,QAAQ,CAAC,GAAG,OAAO,SAAS,CAAC,GAAG,MAIpE,gBAAgB,OAAO,GACvB,iBAAiB,OAAO,GACxB,gBAAgB,OAAO,GAChB,gBAIT,gBAAgB,OAAO,GACvB,iBAAiB,IAAI,GACd;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAAC,UAAU,eAAe,eAAe;AAAA,EAC3C;AAEA,mBAAU,MAAM;AACd,QAAI,SAAS;AAKb,yBAAY,IAAI,GAGhB,YAAY,IAAI,GAET,MAAM;AACX,wBAAgB,OAAO;AAAA,MACzB;AAAA,EACF,GAAG,CAAC,MAAM,UAAU,aAAa,eAAe,CAAC,GAE1C;AACT;",
5
+ "names": []
6
+ }
@@ -0,0 +1,23 @@
1
+ import { useCallback, useEffect, useMemo, useState } from "react";
2
+ import { debounce } from "tamagui";
3
+ function useDebouncePrepend(list, delay) {
4
+ const [current, setCurrent] = useState(list),
5
+ [previous, setPrevious] = useState(list),
6
+ [pendingUpdate, setPendingUpdate] = useState(null),
7
+ debouncedUpdate = useMemo(() => debounce(newList => {
8
+ setCurrent(newList), setPendingUpdate(null);
9
+ }, delay), [delay]),
10
+ updateState = useCallback(newList => {
11
+ setCurrent(prevCurrent => {
12
+ const currentList = pendingUpdate || prevCurrent;
13
+ return newList.length > previous.length && newList[0]?.id !== previous[0]?.id ? (debouncedUpdate.cancel(), setPendingUpdate(newList), debouncedUpdate(newList), currentList) : (debouncedUpdate.cancel(), setPendingUpdate(null), newList);
14
+ });
15
+ }, [previous, pendingUpdate, debouncedUpdate]);
16
+ return useEffect(() => {
17
+ if (list !== previous) return setPrevious(list), updateState(list), () => {
18
+ debouncedUpdate.cancel();
19
+ };
20
+ }, [list, previous, updateState, debouncedUpdate]), current;
21
+ }
22
+ export { useDebouncePrepend };
23
+ //# sourceMappingURL=useDebouncePrepend.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useMemo","useState","debounce","useDebouncePrepend","list","delay","current","setCurrent","previous","setPrevious","pendingUpdate","setPendingUpdate","debouncedUpdate","newList","updateState","prevCurrent","currentList","length","id","cancel"],"sources":["../../src/useDebouncePrepend.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,WAAA,EAAaC,SAAA,EAAWC,OAAA,EAASC,QAAA,QAAgB;AAC1D,SAASC,QAAA,QAAgB;AAElB,SAASC,mBACdC,IAAA,EACAC,KAAA,EACG;EACH,MAAM,CAACC,OAAA,EAASC,UAAU,IAAIN,QAAA,CAASG,IAAI;IACrC,CAACI,QAAA,EAAUC,WAAW,IAAIR,QAAA,CAASG,IAAI;IACvC,CAACM,aAAA,EAAeC,gBAAgB,IAAIV,QAAA,CAAmB,IAAI;IAE3DW,eAAA,GAAkBZ,OAAA,CAAQ,MACvBE,QAAA,CAAUW,OAAA,IAAe;MAC9BN,UAAA,CAAWM,OAAO,GAClBF,gBAAA,CAAiB,IAAI;IACvB,GAAGN,KAAK,GACP,CAACA,KAAK,CAAC;IAEJS,WAAA,GAAchB,WAAA,CACjBe,OAAA,IAAe;MACdN,UAAA,CAAYQ,WAAA,IAAgB;QAE1B,MAAMC,WAAA,GAAcN,aAAA,IAAiBK,WAAA;QAMrC,OAFEF,OAAA,CAAQI,MAAA,GAAST,QAAA,CAASS,MAAA,IAAUJ,OAAA,CAAQ,CAAC,GAAGK,EAAA,KAAOV,QAAA,CAAS,CAAC,GAAGU,EAAA,IAIpEN,eAAA,CAAgBO,MAAA,CAAO,GACvBR,gBAAA,CAAiBE,OAAO,GACxBD,eAAA,CAAgBC,OAAO,GAChBG,WAAA,KAITJ,eAAA,CAAgBO,MAAA,CAAO,GACvBR,gBAAA,CAAiB,IAAI,GACdE,OAAA;MACT,CAAC;IACH,GACA,CAACL,QAAA,EAAUE,aAAA,EAAeE,eAAe,CAC3C;EAEA,OAAAb,SAAA,CAAU,MAAM;IACd,IAAIK,IAAA,KAASI,QAAA,EAKb,OAAAC,WAAA,CAAYL,IAAI,GAGhBU,WAAA,CAAYV,IAAI,GAET,MAAM;MACXQ,eAAA,CAAgBO,MAAA,CAAO;IACzB;EACF,GAAG,CAACf,IAAA,EAAMI,QAAA,EAAUM,WAAA,EAAaF,eAAe,CAAC,GAE1CN,OAAA;AACT","ignoreList":[]}
@@ -0,0 +1,28 @@
1
+ import { useCallback, useEffect, useMemo, useState } from "react";
2
+ import { debounce } from "tamagui";
3
+ function useDebouncePrepend(list, delay) {
4
+ var [current, setCurrent] = useState(list),
5
+ [previous, setPrevious] = useState(list),
6
+ [pendingUpdate, setPendingUpdate] = useState(null),
7
+ debouncedUpdate = useMemo(function () {
8
+ return debounce(function (newList) {
9
+ setCurrent(newList), setPendingUpdate(null);
10
+ }, delay);
11
+ }, [delay]),
12
+ updateState = useCallback(function (newList) {
13
+ setCurrent(function (prevCurrent) {
14
+ var _newList_,
15
+ _previous_,
16
+ currentList = pendingUpdate || prevCurrent,
17
+ 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
+ return isPrepending ? (debouncedUpdate.cancel(), setPendingUpdate(newList), debouncedUpdate(newList), currentList) : (debouncedUpdate.cancel(), setPendingUpdate(null), newList);
19
+ });
20
+ }, [previous, pendingUpdate, debouncedUpdate]);
21
+ return useEffect(function () {
22
+ if (list !== previous) return setPrevious(list), updateState(list), function () {
23
+ debouncedUpdate.cancel();
24
+ };
25
+ }, [list, previous, updateState, debouncedUpdate]), current;
26
+ }
27
+ export { useDebouncePrepend };
28
+ //# sourceMappingURL=useDebouncePrepend.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useMemo","useState","debounce","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,WAAA,EAAaC,SAAA,EAAWC,OAAA,EAASC,QAAA,QAAgB;AAC1D,SAASC,QAAA,QAAgB;AAElB,SAASC,mBACdC,IAAA,EACAC,KAAA,EACG;EACH,KAAAC,OAAO,EAAAC,UAAS,IAAUN,QAAI,CAAAG,IAAS;IAAI,CAAAI,QACpC,EAAAC,WAAU,IAAWR,QAAI,CAAAG,IAAS;IAAI,CAAAM,aACtC,EAAAC,gBAAe,IAAgBV,QAAI,KAAmB;IAAIW,eAE3D,GAAAZ,OAAkB,aACf;MACL,OAAAE,QAAW,WACXW,OAAA;QACCN,UACD,CAAAM,OAEE,GAAAF,gBAAc;MAClB,CAAC,EAAAN,KAAA;IACC,IAEEA,KAAA,CAMA;IAAAS,WAFE,GAAAhB,WAAQ,CAAS,UAASe,OAAA;MAarBN,UACR,WAAAQ,WAAA;QACH,IAAAC,SAAA;UAAAC,UAAA;UAAAC,WAAA,GAAAR,aAAA,IAAAK,WAAA;UAAAI,YAAA,GAAAN,OAAA,CAAAO,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;QACC,OAAAF,YAAU,IAAAP,eAAe,CAAeU,MAAA,IAAAX,gBAAA,CAAAE,OAAA,GAAAD,eAAA,CAAAC,OAAA,GAAAK,WAAA,KAAAN,eAAA,CAAAU,MAAA,IAAAX,gBAAA,QAAAE,OAAA;MAC3C;IAEA,IACEL,QAAI,EAKJE,aAAA,EAMEE,eAAA,CAAuB;EAE3B,OAAIb,SAAM,aAAU;IAGtB,IAAAK,IAAA,KAAAI,QAAA,E","ignoreList":[]}
@@ -0,0 +1,106 @@
1
+ import { useRef } from "react";
2
+ function shouldBeImmutable(path, immutableToNestedChanges) {
3
+ if (!immutableToNestedChanges) return !1;
4
+ const currentPath = path.join(".");
5
+ for (const pattern in immutableToNestedChanges)
6
+ if (immutableToNestedChanges[pattern] && currentPath === pattern)
7
+ return !0;
8
+ return !1;
9
+ }
10
+ function deepMutateInPlace(target, source) {
11
+ if (!(typeof target != "object" || target === null || typeof source != "object" || source === null)) {
12
+ if (Array.isArray(target) && Array.isArray(source)) {
13
+ target.length = 0, target.push(...source);
14
+ return;
15
+ }
16
+ for (const key in source) {
17
+ const targetValue = target[key], sourceValue = source[key];
18
+ typeof sourceValue == "object" && sourceValue !== null && typeof targetValue == "object" && targetValue !== null ? deepMutateInPlace(targetValue, sourceValue) : target[key] = sourceValue;
19
+ }
20
+ }
21
+ }
22
+ function deepMemoizeWithTracking(current, previous, path, immutableToNestedChanges, parentIsImmutable = !1) {
23
+ if (current === previous)
24
+ return { value: previous, hasChanges: !1, hasImmutableMutation: !1 };
25
+ if (typeof current != "object" || current === null)
26
+ return { value: current, hasChanges: !0, hasImmutableMutation: !1 };
27
+ if (typeof previous != "object" || previous === null)
28
+ return { value: current, hasChanges: !0, hasImmutableMutation: !1 };
29
+ const shouldMutateInPlace = shouldBeImmutable(path, immutableToNestedChanges) || parentIsImmutable;
30
+ if (Array.isArray(current)) {
31
+ if (!Array.isArray(previous))
32
+ return { value: current, hasChanges: !0, hasImmutableMutation: !1 };
33
+ if (current.length !== previous.length)
34
+ return { value: current, hasChanges: !0, hasImmutableMutation: !1 };
35
+ let hasChanges2 = !1, hasImmutableMutation2 = !1;
36
+ const memoizedArray = [];
37
+ for (let i = 0; i < current.length; i++) {
38
+ const itemPath = [...path, String(i)], result = deepMemoizeWithTracking(
39
+ current[i],
40
+ previous[i],
41
+ itemPath,
42
+ immutableToNestedChanges,
43
+ !1
44
+ );
45
+ memoizedArray[i] = result.value, result.hasChanges && (hasChanges2 = !0), result.hasImmutableMutation && (hasImmutableMutation2 = !0);
46
+ }
47
+ return hasChanges2 || hasImmutableMutation2 ? { value: memoizedArray, hasChanges: !0, hasImmutableMutation: !1 } : { value: previous, hasChanges: !1, hasImmutableMutation: !1 };
48
+ }
49
+ const currentKeys = Object.keys(current), previousKeys = Object.keys(previous);
50
+ if (currentKeys.length !== previousKeys.length)
51
+ return { value: current, hasChanges: !0, hasImmutableMutation: !1 };
52
+ if (!currentKeys.every((key) => key in previous))
53
+ return { value: current, hasChanges: !0, hasImmutableMutation: !1 };
54
+ let hasChanges = !1, hasImmutableMutation = !1;
55
+ const memoizedObject = {};
56
+ for (const key of currentKeys) {
57
+ const propPath = [...path, key], currentValue = current[key], previousValue = previous[key], result = deepMemoizeWithTracking(
58
+ currentValue,
59
+ previousValue,
60
+ propPath,
61
+ immutableToNestedChanges,
62
+ shouldMutateInPlace
63
+ );
64
+ memoizedObject[key] = result.value, result.hasChanges && (hasChanges = !0), result.hasImmutableMutation && (hasImmutableMutation = !0);
65
+ }
66
+ if (shouldMutateInPlace && (hasChanges || hasImmutableMutation)) {
67
+ if (parentIsImmutable)
68
+ deepMutateInPlace(previous, current);
69
+ else
70
+ for (const key of currentKeys)
71
+ previous[key] = memoizedObject[key];
72
+ return { value: previous, hasChanges: !1, hasImmutableMutation: !0 };
73
+ }
74
+ return hasChanges || hasImmutableMutation ? { value: memoizedObject, hasChanges: !0, hasImmutableMutation: !1 } : { value: previous, hasChanges: !1, hasImmutableMutation: !1 };
75
+ }
76
+ function deepMemoize(current, previous, path = [], immutableToNestedChanges) {
77
+ const result = deepMemoizeWithTracking(
78
+ current,
79
+ previous,
80
+ path,
81
+ immutableToNestedChanges,
82
+ !1
83
+ );
84
+ if (path.length === 0 && result.hasImmutableMutation && !result.hasChanges) {
85
+ if (Array.isArray(result.value))
86
+ return [...result.value];
87
+ if (typeof result.value == "object" && result.value !== null)
88
+ return { ...result.value };
89
+ }
90
+ return result.value;
91
+ }
92
+ function useDeepMemoizedObject(value, options) {
93
+ const previousValueRef = useRef(value), memoizedValue = deepMemoize(
94
+ value,
95
+ previousValueRef.current,
96
+ [],
97
+ options?.immutableToNestedChanges
98
+ );
99
+ return previousValueRef.current = memoizedValue, memoizedValue;
100
+ }
101
+ export {
102
+ deepMemoize,
103
+ shouldBeImmutable,
104
+ useDeepMemoizedObject
105
+ };
106
+ //# sourceMappingURL=useDeepMemoizedObject.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/useDeepMemoizedObject.ts"],
4
+ "mappings": "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",
5
+ "names": ["hasChanges", "hasImmutableMutation"]
6
+ }