@rzl-zone/utils-js 3.12.1-beta.0 → 3.13.0-beta.2

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 (243) hide show
  1. package/README.md +15 -35
  2. package/dist/.references/index.d.cts +1 -3
  3. package/dist/.references/index.d.ts +1 -3
  4. package/dist/{assertIsArray-BfAbIUfa.js → assertIsArray-6BcSdNa-.js} +3 -3
  5. package/dist/{assertIsArray-BfAbIUfa.js.map → assertIsArray-6BcSdNa-.js.map} +1 -1
  6. package/dist/{assertIsArray-BChqwPiP.cjs → assertIsArray-BqjMoan3.cjs} +3 -3
  7. package/dist/{assertIsArray-BChqwPiP.cjs.map → assertIsArray-BqjMoan3.cjs.map} +1 -1
  8. package/dist/{assertIsBoolean-BlBct0Fc.js → assertIsBoolean-Bv6gL-xe.js} +8 -8
  9. package/dist/assertIsBoolean-Bv6gL-xe.js.map +1 -0
  10. package/dist/{assertIsBoolean-DozdtbNi.cjs → assertIsBoolean-amRiJHnh.cjs} +8 -8
  11. package/dist/assertIsBoolean-amRiJHnh.cjs.map +1 -0
  12. package/dist/{assertIsString-DqV9NwbI.js → assertIsString-1WiUjgqf.js} +3 -3
  13. package/dist/{assertIsString-DqV9NwbI.js.map → assertIsString-1WiUjgqf.js.map} +1 -1
  14. package/dist/{assertIsString-Bvk7bUL7.cjs → assertIsString-C0b28AU1.cjs} +3 -3
  15. package/dist/{assertIsString-Bvk7bUL7.cjs.map → assertIsString-C0b28AU1.cjs.map} +1 -1
  16. package/dist/assertions/index.cjs +5 -5
  17. package/dist/assertions/index.d.cts +2 -2
  18. package/dist/assertions/index.d.ts +2 -2
  19. package/dist/assertions/index.js +5 -5
  20. package/dist/conversions/index.cjs +6 -6
  21. package/dist/conversions/index.d.cts +2 -2
  22. package/dist/conversions/index.d.ts +2 -2
  23. package/dist/conversions/index.js +6 -6
  24. package/dist/{conversions-EMJa3g-D.js → conversions-BrI0GIOr.js} +16 -18
  25. package/dist/conversions-BrI0GIOr.js.map +1 -0
  26. package/dist/{conversions-CBs8-REq.cjs → conversions-lvvAYiZs.cjs} +16 -18
  27. package/dist/conversions-lvvAYiZs.cjs.map +1 -0
  28. package/dist/events/index.cjs +4 -4
  29. package/dist/events/index.cjs.map +1 -1
  30. package/dist/events/index.d.cts +153 -151
  31. package/dist/events/index.d.ts +153 -151
  32. package/dist/events/index.js +4 -4
  33. package/dist/events/index.js.map +1 -1
  34. package/dist/formatters/index.cjs +2 -2
  35. package/dist/formatters/index.d.cts +2 -2
  36. package/dist/formatters/index.d.ts +2 -2
  37. package/dist/formatters/index.js +2 -2
  38. package/dist/{formatters-lAYgA11L.cjs → formatters-DQr05EUA.cjs} +17 -15
  39. package/dist/formatters-DQr05EUA.cjs.map +1 -0
  40. package/dist/{formatters-QcZO_Cpx.js → formatters-zDzQvtb4.js} +17 -15
  41. package/dist/formatters-zDzQvtb4.js.map +1 -0
  42. package/dist/generators/index.cjs +12 -8
  43. package/dist/generators/index.cjs.map +1 -1
  44. package/dist/generators/index.d.cts +2 -2
  45. package/dist/generators/index.d.ts +2 -2
  46. package/dist/generators/index.js +12 -8
  47. package/dist/generators/index.js.map +1 -1
  48. package/dist/index-3jBnthag.d.cts +340 -0
  49. package/dist/index-BXwimNPA.d.cts +2361 -0
  50. package/dist/index-BlTCrSyc.d.cts +2158 -0
  51. package/dist/index-CEm8ZOvj.d.ts +2158 -0
  52. package/dist/index-CLq5kZmQ.d.cts +822 -0
  53. package/dist/index-Ckao53JY.d.ts +2361 -0
  54. package/dist/index-DHHrLc0B.d.ts +947 -0
  55. package/dist/index-DIeR8qa-.d.ts +340 -0
  56. package/dist/index-DxZlGbAH.d.ts +1716 -0
  57. package/dist/index-DyVWeYP3.d.cts +765 -0
  58. package/dist/index-GSUN6rjA.d.ts +822 -0
  59. package/dist/index-_dJhBl1h.d.ts +765 -0
  60. package/dist/index-bMa-0Yr4.d.cts +1716 -0
  61. package/dist/index-z_uCh5KW.d.cts +947 -0
  62. package/dist/{isBigInt-B1cijjqm.cjs → isBigInt-CIFRnsdx.cjs} +2 -2
  63. package/dist/{isBigInt-B1cijjqm.cjs.map → isBigInt-CIFRnsdx.cjs.map} +1 -1
  64. package/dist/{isBigInt-C0bN0Rhu.js → isBigInt-D-Pu9sxp.js} +2 -2
  65. package/dist/{isBigInt-C0bN0Rhu.js.map → isBigInt-D-Pu9sxp.js.map} +1 -1
  66. package/dist/{isEmptyObject-DI42NEo0.cjs → isEmptyObject-CEySmyHK.cjs} +3 -3
  67. package/dist/{isEmptyObject-DI42NEo0.cjs.map → isEmptyObject-CEySmyHK.cjs.map} +1 -1
  68. package/dist/{isEmptyObject-DeLVIJpl.js → isEmptyObject-CZ9DLi7R.js} +3 -3
  69. package/dist/{isEmptyObject-DeLVIJpl.js.map → isEmptyObject-CZ9DLi7R.js.map} +1 -1
  70. package/dist/{isEmptyString-BTUWYTbw.js → isEmptyString-DFDtBbNr.js} +3 -3
  71. package/dist/{isEmptyString-BTUWYTbw.js.map → isEmptyString-DFDtBbNr.js.map} +1 -1
  72. package/dist/{isEmptyString-CCK3bP74.cjs → isEmptyString-DI64RQCy.cjs} +3 -3
  73. package/dist/{isEmptyString-CCK3bP74.cjs.map → isEmptyString-DI64RQCy.cjs.map} +1 -1
  74. package/dist/{isEmptyValue-DMSMFTU8.cjs → isEmptyValue-Cw6ovu7z.cjs} +5 -5
  75. package/dist/{isEmptyValue-DMSMFTU8.cjs.map → isEmptyValue-Cw6ovu7z.cjs.map} +1 -1
  76. package/dist/{isEmptyValue-fjnfQnt5.js → isEmptyValue-aGyeClwA.js} +5 -5
  77. package/dist/{isEmptyValue-fjnfQnt5.js.map → isEmptyValue-aGyeClwA.js.map} +1 -1
  78. package/dist/{isEqual-DhyP8fB_.js → isEqual-Dtb2sXUv.js} +4 -4
  79. package/dist/{isEqual-DhyP8fB_.js.map → isEqual-Dtb2sXUv.js.map} +1 -1
  80. package/dist/{isEqual-B1fRgEuU.cjs → isEqual-UsvOwrlY.cjs} +4 -4
  81. package/dist/{isEqual-B1fRgEuU.cjs.map → isEqual-UsvOwrlY.cjs.map} +1 -1
  82. package/dist/{isFinite-BYMOo0os.js → isFinite-Cz_IFXuV.js} +3 -3
  83. package/dist/{isFinite-BYMOo0os.js.map → isFinite-Cz_IFXuV.js.map} +1 -1
  84. package/dist/{isFinite-sFkps2TY.cjs → isFinite-uukWvxJh.cjs} +3 -3
  85. package/dist/{isFinite-sFkps2TY.cjs.map → isFinite-uukWvxJh.cjs.map} +1 -1
  86. package/dist/{isInteger-FTCthMre.cjs → isInteger-DPYjliLZ.cjs} +2 -2
  87. package/dist/{isInteger-FTCthMre.cjs.map → isInteger-DPYjliLZ.cjs.map} +1 -1
  88. package/dist/{isInteger-DS9V7l_f.js → isInteger-DZ163OQg.js} +2 -2
  89. package/dist/{isInteger-DS9V7l_f.js.map → isInteger-DZ163OQg.js.map} +1 -1
  90. package/dist/isPlainObject-CBABRyEX.d.cts +339 -0
  91. package/dist/isPlainObject-Dr8gi89U.d.ts +339 -0
  92. package/dist/{isServer-D1TXfOs3.js → isServer-BDShLyVJ.js} +2 -2
  93. package/dist/{isServer-D1TXfOs3.js.map → isServer-BDShLyVJ.js.map} +1 -1
  94. package/dist/{isServer-q-QLFCqE.cjs → isServer-BzDeYuGg.cjs} +2 -2
  95. package/dist/{isServer-q-QLFCqE.cjs.map → isServer-BzDeYuGg.cjs.map} +1 -1
  96. package/dist/{isTypedArray-DiCoqffZ.cjs → isTypedArray-DaYAkyrt.cjs} +3 -3
  97. package/dist/{isTypedArray-DiCoqffZ.cjs.map → isTypedArray-DaYAkyrt.cjs.map} +1 -1
  98. package/dist/{isTypedArray-47R0wdrc.js → isTypedArray-DuUUA4CL.js} +3 -3
  99. package/dist/{isTypedArray-47R0wdrc.js.map → isTypedArray-DuUUA4CL.js.map} +1 -1
  100. package/dist/{isValidDomain-BSXshgkC.cjs → isValidDomain-BxyToAlh.cjs} +74 -8
  101. package/dist/isValidDomain-BxyToAlh.cjs.map +1 -0
  102. package/dist/{isValidDomain-DwA2EN79.js → isValidDomain-CTw5vZFY.js} +57 -9
  103. package/dist/isValidDomain-CTw5vZFY.js.map +1 -0
  104. package/dist/{noop-B2mTBhW-.cjs → noop-7KrqC9DC.cjs} +2 -2
  105. package/dist/{noop-B2mTBhW-.cjs.map → noop-7KrqC9DC.cjs.map} +1 -1
  106. package/dist/{noop-BzktGBVz.js → noop-DGg9vMSD.js} +2 -2
  107. package/dist/{noop-BzktGBVz.js.map → noop-DGg9vMSD.js.map} +1 -1
  108. package/dist/{normalizeSpaces-DQHR3Tlr.cjs → normalizeSpaces-B6ZQOZRX.cjs} +3 -3
  109. package/dist/{normalizeSpaces-DQHR3Tlr.cjs.map → normalizeSpaces-B6ZQOZRX.cjs.map} +1 -1
  110. package/dist/{normalizeSpaces-WS_iERJk.js → normalizeSpaces-C1eLwykD.js} +3 -3
  111. package/dist/{normalizeSpaces-WS_iERJk.js.map → normalizeSpaces-C1eLwykD.js.map} +1 -1
  112. package/dist/operations/index.cjs +10 -10
  113. package/dist/operations/index.cjs.map +1 -1
  114. package/dist/operations/index.d.cts +120 -120
  115. package/dist/operations/index.d.ts +120 -120
  116. package/dist/operations/index.js +10 -10
  117. package/dist/operations/index.js.map +1 -1
  118. package/dist/parsers/index.cjs +2 -2
  119. package/dist/parsers/index.d.cts +222 -222
  120. package/dist/parsers/index.d.ts +222 -222
  121. package/dist/parsers/index.js +2 -2
  122. package/dist/{parsers-DXtpsDyj.cjs → parsers-DEFpCYhw.cjs} +4 -4
  123. package/dist/{parsers-DXtpsDyj.cjs.map → parsers-DEFpCYhw.cjs.map} +1 -1
  124. package/dist/{parsers-Dpuq-V4u.js → parsers-bQQ9mStV.js} +4 -4
  125. package/dist/{parsers-Dpuq-V4u.js.map → parsers-bQQ9mStV.js.map} +1 -1
  126. package/dist/{parsing-B43x1sxn.js → parsing-BngARhmu.js} +3 -3
  127. package/dist/{parsing-B43x1sxn.js.map → parsing-BngARhmu.js.map} +1 -1
  128. package/dist/{parsing-lRoxn1Nz.cjs → parsing-lI5EN4LY.cjs} +3 -3
  129. package/dist/{parsing-lRoxn1Nz.cjs.map → parsing-lI5EN4LY.cjs.map} +1 -1
  130. package/dist/predicates/index.cjs +15 -16
  131. package/dist/predicates/index.d.cts +3 -3
  132. package/dist/predicates/index.d.ts +3 -3
  133. package/dist/predicates/index.js +14 -15
  134. package/dist/{predicates-DiaYA7Ps.cjs → predicates-CMmP3fPJ.cjs} +15 -16
  135. package/dist/{predicates-DiaYA7Ps.cjs.map → predicates-CMmP3fPJ.cjs.map} +1 -1
  136. package/dist/{predicates-gNepszvo.js → predicates-V87QD8hs.js} +13 -14
  137. package/dist/{predicates-gNepszvo.js.map → predicates-V87QD8hs.js.map} +1 -1
  138. package/dist/promises/index.cjs +4 -4
  139. package/dist/promises/index.d.cts +101 -101
  140. package/dist/promises/index.d.ts +101 -101
  141. package/dist/promises/index.js +4 -4
  142. package/dist/{punyCode-hmiFzLWT.js → punyCode-BeFYDjj0.js} +6 -6
  143. package/dist/punyCode-BeFYDjj0.js.map +1 -0
  144. package/dist/{punyCode-CTWXVVFo.cjs → punyCode-DmTsB7q_.cjs} +6 -6
  145. package/dist/punyCode-DmTsB7q_.cjs.map +1 -0
  146. package/dist/{removeSpaces-BE8lfh-4.js → removeSpaces-B96axxP6.js} +7 -4
  147. package/dist/removeSpaces-B96axxP6.js.map +1 -0
  148. package/dist/{removeSpaces-DRRxNWlb.cjs → removeSpaces-C8mu_yp3.cjs} +12 -3
  149. package/dist/removeSpaces-C8mu_yp3.cjs.map +1 -0
  150. package/dist/rzl-utils.global.js +21 -0
  151. package/dist/{safeJsonParse-BBnQElk8.cjs → safeJsonParse-BXbtX_j7.cjs} +9 -9
  152. package/dist/safeJsonParse-BXbtX_j7.cjs.map +1 -0
  153. package/dist/{safeJsonParse-CXruaP0p.js → safeJsonParse-DyCsTXlU.js} +9 -9
  154. package/dist/safeJsonParse-DyCsTXlU.js.map +1 -0
  155. package/dist/{safeStableStringify-BNh3D0K0.js → safeStableStringify-BrOcdX9n.js} +4 -4
  156. package/dist/{safeStableStringify-BNh3D0K0.js.map → safeStableStringify-BrOcdX9n.js.map} +1 -1
  157. package/dist/{safeStableStringify-Cc62pfRp.cjs → safeStableStringify-DRYQ56Dg.cjs} +4 -4
  158. package/dist/{safeStableStringify-Cc62pfRp.cjs.map → safeStableStringify-DRYQ56Dg.cjs.map} +1 -1
  159. package/dist/strings/index.cjs +12 -10
  160. package/dist/strings/index.cjs.map +1 -1
  161. package/dist/strings/index.d.cts +2 -2
  162. package/dist/strings/index.d.ts +2 -2
  163. package/dist/strings/index.js +11 -9
  164. package/dist/strings/index.js.map +1 -1
  165. package/dist/tailwind/index.cjs +6 -2
  166. package/dist/tailwind/index.d.cts +3 -3
  167. package/dist/tailwind/index.d.ts +3 -3
  168. package/dist/tailwind/index.js +3 -3
  169. package/dist/{tailwind-IJvOdkZp.js → tailwind-BZ2_MeNX.js} +18 -8
  170. package/dist/tailwind-BZ2_MeNX.js.map +1 -0
  171. package/dist/{tailwind-DJ4cmLUw.cjs → tailwind-C1YtxJ-K.cjs} +39 -5
  172. package/dist/tailwind-C1YtxJ-K.cjs.map +1 -0
  173. package/dist/{toStringArrayUnRecursive-xUaU8Ot9.cjs → toStringArrayUnRecursive-D1mPM4wg.cjs} +6 -6
  174. package/dist/{toStringArrayUnRecursive-xUaU8Ot9.cjs.map → toStringArrayUnRecursive-D1mPM4wg.cjs.map} +1 -1
  175. package/dist/{toStringArrayUnRecursive-CFs0jTEg.js → toStringArrayUnRecursive-tHp2a7KR.js} +6 -6
  176. package/dist/{toStringArrayUnRecursive-CFs0jTEg.js.map → toStringArrayUnRecursive-tHp2a7KR.js.map} +1 -1
  177. package/dist/urls/index.cjs +9 -119
  178. package/dist/urls/index.d.cts +656 -659
  179. package/dist/urls/index.d.ts +656 -659
  180. package/dist/urls/index.js +3 -113
  181. package/dist/urls-CoxDAoki.js +263 -0
  182. package/dist/urls-CoxDAoki.js.map +1 -0
  183. package/dist/urls-DCyx8Wpk.cjs +299 -0
  184. package/dist/urls-DCyx8Wpk.cjs.map +1 -0
  185. package/package.json +4 -25
  186. package/dist/assertIsBoolean-BlBct0Fc.js.map +0 -1
  187. package/dist/assertIsBoolean-DozdtbNi.cjs.map +0 -1
  188. package/dist/conversions-CBs8-REq.cjs.map +0 -1
  189. package/dist/conversions-EMJa3g-D.js.map +0 -1
  190. package/dist/formatEnvPort-DpIXzPAZ.js +0 -159
  191. package/dist/formatEnvPort-DpIXzPAZ.js.map +0 -1
  192. package/dist/formatEnvPort-hHNvOim-.cjs +0 -171
  193. package/dist/formatEnvPort-hHNvOim-.cjs.map +0 -1
  194. package/dist/formatters-QcZO_Cpx.js.map +0 -1
  195. package/dist/formatters-lAYgA11L.cjs.map +0 -1
  196. package/dist/index-26W7ItWx.d.ts +0 -760
  197. package/dist/index-BPPQjAfs.d.cts +0 -2359
  198. package/dist/index-BXjlgBLz.d.cts +0 -2139
  199. package/dist/index-B_Wwo91H.d.ts +0 -2359
  200. package/dist/index-CpufydcI.d.cts +0 -704
  201. package/dist/index-Czc4O526.d.ts +0 -333
  202. package/dist/index-DPs1_p5G.d.cts +0 -760
  203. package/dist/index-DRpOyBSC.d.ts +0 -1703
  204. package/dist/index-DWWvtHUn.d.cts +0 -822
  205. package/dist/index-DnM0LD0n.d.cts +0 -333
  206. package/dist/index-GUZ9fK6T.d.ts +0 -2139
  207. package/dist/index-I4fAzwXV.d.ts +0 -704
  208. package/dist/index-JDrOl_19.d.ts +0 -822
  209. package/dist/index-b66P49Qe.d.cts +0 -1703
  210. package/dist/isPlainObject-DcFGh3_5.d.ts +0 -530
  211. package/dist/isPlainObject-doTI11Ib.d.cts +0 -530
  212. package/dist/isURL-CQiowFq2.js +0 -14
  213. package/dist/isURL-CQiowFq2.js.map +0 -1
  214. package/dist/isURL-WZypXsax.cjs +0 -20
  215. package/dist/isURL-WZypXsax.cjs.map +0 -1
  216. package/dist/isValidDomain-BSXshgkC.cjs.map +0 -1
  217. package/dist/isValidDomain-DwA2EN79.js.map +0 -1
  218. package/dist/next/index.cjs +0 -129
  219. package/dist/next/index.cjs.map +0 -1
  220. package/dist/next/index.d.cts +0 -226
  221. package/dist/next/index.d.ts +0 -226
  222. package/dist/next/index.js +0 -124
  223. package/dist/next/index.js.map +0 -1
  224. package/dist/next/server/index.cjs +0 -28
  225. package/dist/next/server/index.cjs.map +0 -1
  226. package/dist/next/server/index.d.cts +0 -39
  227. package/dist/next/server/index.d.ts +0 -39
  228. package/dist/next/server/index.js +0 -26
  229. package/dist/next/server/index.js.map +0 -1
  230. package/dist/normalizeString-2WLth_Gj.js +0 -15
  231. package/dist/normalizeString-2WLth_Gj.js.map +0 -1
  232. package/dist/normalizeString-D8euBcRD.cjs +0 -21
  233. package/dist/normalizeString-D8euBcRD.cjs.map +0 -1
  234. package/dist/punyCode-CTWXVVFo.cjs.map +0 -1
  235. package/dist/punyCode-hmiFzLWT.js.map +0 -1
  236. package/dist/removeSpaces-BE8lfh-4.js.map +0 -1
  237. package/dist/removeSpaces-DRRxNWlb.cjs.map +0 -1
  238. package/dist/safeJsonParse-BBnQElk8.cjs.map +0 -1
  239. package/dist/safeJsonParse-CXruaP0p.js.map +0 -1
  240. package/dist/tailwind-DJ4cmLUw.cjs.map +0 -1
  241. package/dist/tailwind-IJvOdkZp.js.map +0 -1
  242. package/dist/urls/index.cjs.map +0 -1
  243. package/dist/urls/index.js.map +0 -1
@@ -2,173 +2,175 @@
2
2
  * ========================================================================
3
3
  * @rzl-zone/utils-js
4
4
  * ------------------------------------------------------------------------
5
- * Version: `3.12.1-beta.0`
5
+ * Version: `3.13.0-beta.2`
6
6
  * Author: `Rizalvin Dwiky <rizalvindwiky@gmail.com>`
7
7
  * Repository: `https://github.com/rzl-zone/rzl-zone/tree/main/packages/utils-js`
8
8
  * ========================================================================
9
9
  */
10
10
  /** ----------------------------------------------------------
11
- * * ***Utility: `disableUserInteraction`.***
12
- * ----------------------------------------------------------
13
- * **Disables user interaction by adding a CSS class to the `<html>` element.**
14
- * - **Key points**:
15
- * - Works **only in browser environments**.
16
- * - Safely adds the specified CSS class to `<html>`.
17
- * - Prevents multiple additions of the same class.
18
- * - Useful to indicate that a process is ongoing
19
- * (e.g., loading or processing state).
20
- * - **Using custom CSS classes:**
21
- * - You can pass any class name that exists in your CSS.
22
- * - Example: if you have `.loading` in your styles, passing `"loading"`
23
- * will add it and disable interactions accordingly.
24
- * - **Validation:**
25
- * - Throws `TypeError` if the `className` parameter is not a string.
26
- * @defaultValue `"on_processing"`
27
- * @param {string} [className="on_processing"] - The CSS class to add, defaults to `"on_processing"`.
28
- * @returns {void} Does not return anything (void).
29
- * @throws **{@link TypeError | `TypeError`}** if `className` is not a string.
30
- * @example
31
- * * ***Example in your code:***
32
- * ```ts
33
- * disableUserInteraction(); // ➔ Adds "on_processing" class
34
- * disableUserInteraction("loading"); // ➔ Adds "loading" class
35
- * // ❌ Invalid value:
36
- * disableUserInteraction(123); // ➔ Throws TypeError
37
- * ```
38
- * * ***Example in your css file (with defaultValue `className` props [on_processing]):***
39
- * ```css
40
- * .on_processing {
41
- * cursor: wait;
42
- * touch-action: none;
43
- * user-select: none;
44
- * }
45
- *
46
- * .on_processing > * {
47
- * pointer-events: none;
48
- * touch-action: none;
49
- * user-select: none;
50
- * }
51
- * ```
52
- */
11
+ * * ***Utility: `disableUserInteraction`.***
12
+ * ----------------------------------------------------------
13
+ * **Disables user interaction by adding a CSS class to the `<html>` element.**
14
+ * - **Key points**:
15
+ * - Works **only in browser environments**.
16
+ * - Safely adds the specified CSS class to `<html>`.
17
+ * - Prevents multiple additions of the same class.
18
+ * - Useful to indicate that a process is ongoing
19
+ * (e.g., loading or processing state).
20
+ * - **Using custom CSS classes:**
21
+ * - You can pass any class name that exists in your CSS.
22
+ * - Example: if you have `.loading` in your styles, passing `"loading"`
23
+ * will add it and disable interactions accordingly.
24
+ * - **Validation:**
25
+ * - Throws `TypeError` if the `className` parameter is not a string.
26
+ * @defaultValue `"on_processing"`
27
+ * @param {string} [className="on_processing"] - The CSS class to add, defaults to `"on_processing"`.
28
+ * @returns {void} Does not return anything (void).
29
+ * @throws **{@link TypeError | `TypeError`}** if `className` is not a string.
30
+ * @example
31
+ * * ***Example in your code:***
32
+ * ```ts
33
+ * disableUserInteraction(); // ➔ Adds "on_processing" class
34
+ * disableUserInteraction("loading"); // ➔ Adds "loading" class
35
+ * // ❌ Invalid value:
36
+ * disableUserInteraction(123); // ➔ Throws TypeError
37
+ * ```
38
+ * * ***Example in your css file (with defaultValue `className` props [on_processing]):***
39
+ * ```css
40
+ * .on_processing {
41
+ * cursor: wait;
42
+ * touch-action: none;
43
+ * user-select: none;
44
+ * }
45
+ *
46
+ * .on_processing > * {
47
+ * pointer-events: none;
48
+ * touch-action: none;
49
+ * user-select: none;
50
+ * }
51
+ * ```
52
+ */
53
53
  declare const disableUserInteraction: (className?: string) => void;
54
54
  /** ----------------------------------------------------------
55
- * * ***Utility: `enableUserInteraction`.***
56
- * ----------------------------------------------------------
57
- * **Enables user interaction by removing a CSS class from the `<html>` element.**
58
- * - **Key points**:
59
- * - Works **only in browser environments**.
60
- * - Safely removes the specified CSS class from `<html>`.
61
- * - Does nothing if the class is not present.
62
- * - Useful to re-enable user interactions after a process
63
- * (e.g., loading or processing) completes.
64
- * - **Using custom CSS classes:**
65
- * - You can pass any class name that exists in your CSS.
66
- * - Example: if you have `.loading` in your styles, passing `"loading"`
67
- * will remove it and re-enable interactions.
68
- * - **Validation:**
69
- * - Throws `TypeError` if the `className` parameter is not a string.
70
- * @defaultValue `"on_processing"`
71
- * @param {string} [className="on_processing"] - The CSS class to remove, defaults to `"on_processing"`.
72
- * @returns {void} Does not return anything (void).
73
- * @throws **{@link TypeError | `TypeError`}** if `className` is not a string.
74
- * @example
75
- * * ***Example in your code:***
76
- * ```ts
77
- * enableUserInteraction(); // ➔ Removes "on_processing" class
78
- * enableUserInteraction("loading"); // ➔ Removes "loading" class
79
- * // ❌ Invalid value:
80
- * enableUserInteraction(123); // ➔ Throws TypeError
81
- * ```
82
- * * ***Example in your css file (with defaultValue `className` props [on_processing]):***
83
- * ```css
84
- * .on_processing {
85
- * cursor: wait;
86
- * touch-action: none;
87
- * user-select: none;
88
- * }
89
- *
90
- * .on_processing > * {
91
- * pointer-events: none;
92
- * touch-action: none;
93
- * user-select: none;
94
- * }
95
- * ```
96
- */
55
+ * * ***Utility: `enableUserInteraction`.***
56
+ * ----------------------------------------------------------
57
+ * **Enables user interaction by removing a CSS class from the `<html>` element.**
58
+ * - **Key points**:
59
+ * - Works **only in browser environments**.
60
+ * - Safely removes the specified CSS class from `<html>`.
61
+ * - Does nothing if the class is not present.
62
+ * - Useful to re-enable user interactions after a process
63
+ * (e.g., loading or processing) completes.
64
+ * - **Using custom CSS classes:**
65
+ * - You can pass any class name that exists in your CSS.
66
+ * - Example: if you have `.loading` in your styles, passing `"loading"`
67
+ * will remove it and re-enable interactions.
68
+ * - **Validation:**
69
+ * - Throws `TypeError` if the `className` parameter is not a string.
70
+ * @defaultValue `"on_processing"`
71
+ * @param {string} [className="on_processing"] - The CSS class to remove, defaults to `"on_processing"`.
72
+ * @returns {void} Does not return anything (void).
73
+ * @throws **{@link TypeError | `TypeError`}** if `className` is not a string.
74
+ * @example
75
+ * * ***Example in your code:***
76
+ * ```ts
77
+ * enableUserInteraction(); // ➔ Removes "on_processing" class
78
+ * enableUserInteraction("loading"); // ➔ Removes "loading" class
79
+ * // ❌ Invalid value:
80
+ * enableUserInteraction(123); // ➔ Throws TypeError
81
+ * ```
82
+ * * ***Example in your css file (with defaultValue `className` props [on_processing]):***
83
+ * ```css
84
+ * .on_processing {
85
+ * cursor: wait;
86
+ * touch-action: none;
87
+ * user-select: none;
88
+ * }
89
+ *
90
+ * .on_processing > * {
91
+ * pointer-events: none;
92
+ * touch-action: none;
93
+ * user-select: none;
94
+ * }
95
+ * ```
96
+ */
97
97
  declare const enableUserInteraction: (className?: string) => void;
98
98
  /** ----------------------------------------------------------
99
- * * ***Utility: `removeElementFocus`.***
100
- * ----------------------------------------------------------
101
- * **Removes focus from the currently active element in the document.**
102
- * - **Features**:
103
- * - This function works **only in browser environments** ***(safely no-ops in server environments)***.
104
- * - If an element is focused, it will lose focus by calling `HTMLElement.blur()`.
105
- * - If no element is focused or the active element is not an `HTMLElement`, nothing happens.
106
- * @returns {void} Does not return anything (void).
107
- * @example
108
- * removeElementFocus(); // ➔ Removes focus from the currently active element
109
- */
99
+ * * ***Utility: `removeElementFocus`.***
100
+ * ----------------------------------------------------------
101
+ * **Removes focus from the currently active element in the document.**
102
+ * - **Features**:
103
+ * - This function works **only in browser environments** ***(safely no-ops in server environments)***.
104
+ * - If an element is focused, it will lose focus by calling `HTMLElement.blur()`.
105
+ * - If no element is focused or the active element is not an `HTMLElement`, nothing happens.
106
+ * @returns {void} Does not return anything (void).
107
+ * @example
108
+ * removeElementFocus(); // ➔ Removes focus from the currently active element
109
+ */
110
110
  declare const removeElementFocus: () => void;
111
- /** @private ***Types options for {@link scrollToTop | `scrollToTop`}.*** */
111
+ /**
112
+ * ***Types options for {@link scrollToTop | `scrollToTop`}.***
113
+ */
112
114
  type ScrollToTopOptions = {
113
115
  /** ----------------------------------------------------------
114
- * * ***Scroll animation type.***
115
- * ----------------------------------------------------------
116
- * - ***Behavior:***
117
- * - Valid values: `"auto"`, `"instant"`, `"smooth"`.
118
- * - Default force to `"smooth"` if missing or invalid.
119
- *
120
- * @default "smooth"
121
- */
116
+ * * ***Scroll animation type.***
117
+ * ----------------------------------------------------------
118
+ * - ***Behavior:***
119
+ * - Valid values: `"auto"`, `"instant"`, `"smooth"`.
120
+ * - Default force to `"smooth"` if missing or invalid.
121
+ *
122
+ * @default "smooth"
123
+ */
122
124
  behavior?: ScrollBehavior | undefined;
123
125
  /** ----------------------------------------------------------
124
- * * ***Delay before scrolling (in milliseconds).***
125
- * ----------------------------------------------------------
126
- * - ***Behavior:***
127
- * - Default value is `1`.
128
- * - Valid values: any number `≥` `1`.
129
- * - Non-integer number are truncated to an integer.
130
- * - Force to `2147483647` if number is larger than `2147483647`.
131
- * - Default force to `1` if `missing`, `NaN`, `invalid-type`, or `less-than` `1`.
132
- *
133
- * @default 1
134
- */
126
+ * * ***Delay before scrolling (in milliseconds).***
127
+ * ----------------------------------------------------------
128
+ * - ***Behavior:***
129
+ * - Default value is `1`.
130
+ * - Valid values: any number `≥` `1`.
131
+ * - Non-integer number are truncated to an integer.
132
+ * - Force to `2147483647` if number is larger than `2147483647`.
133
+ * - Default force to `1` if `missing`, `NaN`, `invalid-type`, or `less-than` `1`.
134
+ *
135
+ * @default 1
136
+ */
135
137
  timeout?: number | undefined;
136
138
  };
137
139
  /** ----------------------------------------------------------
138
- * * ***Utility: `scrollToTop`.***
139
- * ----------------------------------------------------------
140
- * **Scrolls the page to the top with optional smooth animation and delay.**
141
- * - **Features**:
142
- * - This function works **only in browser environments** (no effect on server-side).
143
- * - It leverages the native `window.scrollTo()` API with support for smooth scrolling
144
- * and an optional timeout delay before executing the scroll.
145
- * - Each option has strict valid values.
146
- * - If an invalid value is provided, the function **automatically falls back to its default**.
147
- * @param {ScrollToTopOptions} [options] - Optional settings for scroll behavior.
148
- * @param {ScrollToTopOptions["behavior"]} [options.behavior="smooth"] - Scroll animation type.
149
- * - Valid values: `"auto"`, `"instant"`, `"smooth"`.
150
- * - Default force to `"smooth"` if missing or invalid.
151
- * @param {ScrollToTopOptions["timeout"]} [options.timeout=1] - Delay before scrolling (in milliseconds).
152
- * - Default value is `1`.
153
- * - Valid values: any number `≥` `1`.
154
- * - Non-integer number are truncated to an integer.
155
- * - Force to `2147483647` if number is larger than `2147483647`.
156
- * - Default force to `1` if `missing`, `NaN`, `invalid`, or `less-than` `1`.
157
- * @returns {void} Does not return anything, only scrolling to top (void).
158
- * @example
159
- * // ✅ Valid options value:
160
- * scrollToTop();
161
- * // ➔ Scroll smoothly to the top after 1ms delay
162
- * scrollToTop({ behavior: "instant" });
163
- * // ➔ Jump instantly to the top
164
- * scrollToTop({ timeout: 500 });
165
- * // ➔ Scroll smoothly to the top after 500ms
166
- *
167
- * // ❌ Invalid options value:
168
- * scrollToTop({ behavior: "fly", timeout: -100 });
169
- * // ➔ Fallback: behavior="smooth", timeout=1
170
- * scrollToTop({ behavior: "fly", timeout: 123.55 });
171
- * // ➔ Fallback: behavior="smooth", timeout=123
172
- */
140
+ * * ***Utility: `scrollToTop`.***
141
+ * ----------------------------------------------------------
142
+ * **Scrolls the page to the top with optional smooth animation and delay.**
143
+ * - **Features**:
144
+ * - This function works **only in browser environments** (no effect on server-side).
145
+ * - It leverages the native `window.scrollTo()` API with support for smooth scrolling
146
+ * and an optional timeout delay before executing the scroll.
147
+ * - Each option has strict valid values.
148
+ * - If an invalid value is provided, the function **automatically falls back to its default**.
149
+ * @param {ScrollToTopOptions} [options] - Optional settings for scroll behavior.
150
+ * @param {ScrollToTopOptions["behavior"]} [options.behavior="smooth"] - Scroll animation type.
151
+ * - Valid values: `"auto"`, `"instant"`, `"smooth"`.
152
+ * - Default force to `"smooth"` if missing or invalid.
153
+ * @param {ScrollToTopOptions["timeout"]} [options.timeout=1] - Delay before scrolling (in milliseconds).
154
+ * - Default value is `1`.
155
+ * - Valid values: any number `≥` `1`.
156
+ * - Non-integer number are truncated to an integer.
157
+ * - Force to `2147483647` if number is larger than `2147483647`.
158
+ * - Default force to `1` if `missing`, `NaN`, `invalid`, or `less-than` `1`.
159
+ * @returns {void} Does not return anything, only scrolling to top (void).
160
+ * @example
161
+ * // ✅ Valid options value:
162
+ * scrollToTop();
163
+ * // ➔ Scroll smoothly to the top after 1ms delay
164
+ * scrollToTop({ behavior: "instant" });
165
+ * // ➔ Jump instantly to the top
166
+ * scrollToTop({ timeout: 500 });
167
+ * // ➔ Scroll smoothly to the top after 500ms
168
+ *
169
+ * // ❌ Invalid options value:
170
+ * scrollToTop({ behavior: "fly", timeout: -100 });
171
+ * // ➔ Fallback: behavior="smooth", timeout=1
172
+ * scrollToTop({ behavior: "fly", timeout: 123.55 });
173
+ * // ➔ Fallback: behavior="smooth", timeout=123
174
+ */
173
175
  declare const scrollToTop: (options?: ScrollToTopOptions) => void;
174
176
  export { disableUserInteraction, enableUserInteraction, removeElementFocus, scrollToTop };
@@ -2,14 +2,14 @@
2
2
  * ========================================================================
3
3
  * @rzl-zone/utils-js
4
4
  * ------------------------------------------------------------------------
5
- * Version: `3.12.1-beta.0`
5
+ * Version: `3.13.0-beta.2`
6
6
  * Author: `Rizalvin Dwiky <rizalvindwiky@gmail.com>`
7
7
  * Repository: `https://github.com/rzl-zone/rzl-zone/tree/main/packages/utils-js`
8
8
  * ========================================================================
9
9
  */
10
- import { A as isPlainObject, b as hasOwnProp, w as isNumber, y as isNonEmptyString } from "../assertIsBoolean-BlBct0Fc.js";
11
- import { t as assertIsString } from "../assertIsString-DqV9NwbI.js";
12
- import { t as isServer } from "../isServer-D1TXfOs3.js";
10
+ import { A as isPlainObject, b as hasOwnProp, w as isNumber, y as isNonEmptyString } from "../assertIsBoolean-Bv6gL-xe.js";
11
+ import { t as assertIsString } from "../assertIsString-1WiUjgqf.js";
12
+ import { t as isServer } from "../isServer-BDShLyVJ.js";
13
13
  const disableUserInteraction = (className = "on_processing") => {
14
14
  if (isServer()) return;
15
15
  assertIsString(className, { message({ validType, currentType }) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/events/actions/disableUserInteraction.ts","../../src/events/actions/enableUserInteraction.ts","../../src/events/actions/removeElementFocus.ts","../../src/events/actions/scrollToTop.ts"],"sourcesContent":["import { isServer } from \"@/predicates/is/isServer\";\nimport { assertIsString } from \"@/assertions/strings/assertIsString\";\n\n/** ----------------------------------------------------------\n * * ***Utility: `disableUserInteraction`.***\n * ----------------------------------------------------------\n * **Disables user interaction by adding a CSS class to the `<html>` element.**\n * - **Key points**:\n * - Works **only in browser environments**.\n * - Safely adds the specified CSS class to `<html>`.\n * - Prevents multiple additions of the same class.\n * - Useful to indicate that a process is ongoing\n * (e.g., loading or processing state).\n * - **Using custom CSS classes:**\n * - You can pass any class name that exists in your CSS.\n * - Example: if you have `.loading` in your styles, passing `\"loading\"`\n * will add it and disable interactions accordingly.\n * - **Validation:**\n * - Throws `TypeError` if the `className` parameter is not a string.\n * @defaultValue `\"on_processing\"`\n * @param {string} [className=\"on_processing\"] - The CSS class to add, defaults to `\"on_processing\"`.\n * @returns {void} Does not return anything (void).\n * @throws **{@link TypeError | `TypeError`}** if `className` is not a string.\n * @example\n * * ***Example in your code:***\n * ```ts\n * disableUserInteraction(); // ➔ Adds \"on_processing\" class\n * disableUserInteraction(\"loading\"); // ➔ Adds \"loading\" class\n * // ❌ Invalid value:\n * disableUserInteraction(123); // ➔ Throws TypeError\n * ```\n * * ***Example in your css file (with defaultValue `className` props [on_processing]):***\n * ```css\n * .on_processing {\n * cursor: wait;\n * touch-action: none;\n * user-select: none;\n * }\n *\n * .on_processing > * {\n * pointer-events: none;\n * touch-action: none;\n * user-select: none;\n * }\n * ```\n */\nexport const disableUserInteraction = (\n className: string = \"on_processing\"\n): void => {\n // Ensure function runs only in the browser\n if (isServer()) return;\n\n assertIsString(className, {\n message({ validType, currentType }) {\n return `First parameter \\`className\\` must be of type \\`${validType}\\`, but received: \\`${currentType}\\`.`;\n }\n });\n\n const { documentElement } = document;\n\n if (documentElement && !documentElement.classList.contains(className)) {\n documentElement.classList.add(className);\n }\n};\n","import { isServer } from \"@/predicates/is/isServer\";\nimport { assertIsString } from \"@/assertions/strings/assertIsString\";\n\n/** ----------------------------------------------------------\n * * ***Utility: `enableUserInteraction`.***\n * ----------------------------------------------------------\n * **Enables user interaction by removing a CSS class from the `<html>` element.**\n * - **Key points**:\n * - Works **only in browser environments**.\n * - Safely removes the specified CSS class from `<html>`.\n * - Does nothing if the class is not present.\n * - Useful to re-enable user interactions after a process\n * (e.g., loading or processing) completes.\n * - **Using custom CSS classes:**\n * - You can pass any class name that exists in your CSS.\n * - Example: if you have `.loading` in your styles, passing `\"loading\"`\n * will remove it and re-enable interactions.\n * - **Validation:**\n * - Throws `TypeError` if the `className` parameter is not a string.\n * @defaultValue `\"on_processing\"`\n * @param {string} [className=\"on_processing\"] - The CSS class to remove, defaults to `\"on_processing\"`.\n * @returns {void} Does not return anything (void).\n * @throws **{@link TypeError | `TypeError`}** if `className` is not a string.\n * @example\n * * ***Example in your code:***\n * ```ts\n * enableUserInteraction(); // ➔ Removes \"on_processing\" class\n * enableUserInteraction(\"loading\"); // ➔ Removes \"loading\" class\n * // ❌ Invalid value:\n * enableUserInteraction(123); // ➔ Throws TypeError\n * ```\n * * ***Example in your css file (with defaultValue `className` props [on_processing]):***\n * ```css\n * .on_processing {\n * cursor: wait;\n * touch-action: none;\n * user-select: none;\n * }\n *\n * .on_processing > * {\n * pointer-events: none;\n * touch-action: none;\n * user-select: none;\n * }\n * ```\n */\nexport const enableUserInteraction = (\n className: string = \"on_processing\"\n): void => {\n // Ensure function runs only in the browser\n if (isServer()) return;\n\n assertIsString(className, {\n message({ validType, currentType }) {\n return `First parameter \\`className\\` must be of type \\`${validType}\\`, but received: \\`${currentType}\\`.`;\n }\n });\n\n const { documentElement } = document;\n\n if (documentElement && documentElement.classList.contains(className)) {\n documentElement.classList.remove(className);\n }\n};\n","import { isServer } from \"@/predicates/is/isServer\";\n\n/** ----------------------------------------------------------\n * * ***Utility: `removeElementFocus`.***\n * ----------------------------------------------------------\n * **Removes focus from the currently active element in the document.**\n * - **Features**:\n * - This function works **only in browser environments** ***(safely no-ops in server environments)***.\n * - If an element is focused, it will lose focus by calling `HTMLElement.blur()`.\n * - If no element is focused or the active element is not an `HTMLElement`, nothing happens.\n * @returns {void} Does not return anything (void).\n * @example\n * removeElementFocus(); // ➔ Removes focus from the currently active element\n */\nexport const removeElementFocus = (): void => {\n // Ensure function runs only in the browser\n if (isServer()) return;\n\n const activeElement = document.activeElement;\n\n if (activeElement instanceof HTMLElement) {\n activeElement.blur();\n } else {\n // not-support, currently we nothing to do...\n // console.warn(\"removeElementFocus: No active element to blur or unsupported element type.\");\n }\n};\n","import { isNumber } from \"@/predicates/is/isNumber\";\nimport { hasOwnProp } from \"@/predicates/has/hasOwnProp\";\nimport { isServer } from \"@/predicates/is/isServer\";\nimport { isPlainObject } from \"@/predicates/is/isPlainObject\";\nimport { isNonEmptyString } from \"@/predicates/is/isNonEmptyString\";\n\n/** @private ***Types options for {@link scrollToTop | `scrollToTop`}.*** */\ntype ScrollToTopOptions = {\n /** ----------------------------------------------------------\n * * ***Scroll animation type.***\n * ----------------------------------------------------------\n * - ***Behavior:***\n * - Valid values: `\"auto\"`, `\"instant\"`, `\"smooth\"`.\n * - Default force to `\"smooth\"` if missing or invalid.\n *\n * @default \"smooth\"\n */\n behavior?: ScrollBehavior | undefined;\n /** ----------------------------------------------------------\n * * ***Delay before scrolling (in milliseconds).***\n * ----------------------------------------------------------\n * - ***Behavior:***\n * - Default value is `1`.\n * - Valid values: any number `≥` `1`.\n * - Non-integer number are truncated to an integer.\n * - Force to `2147483647` if number is larger than `2147483647`.\n * - Default force to `1` if `missing`, `NaN`, `invalid-type`, or `less-than` `1`.\n *\n * @default 1\n */\n timeout?: number | undefined;\n};\n\n/** ----------------------------------------------------------\n * * ***Utility: `scrollToTop`.***\n * ----------------------------------------------------------\n * **Scrolls the page to the top with optional smooth animation and delay.**\n * - **Features**:\n * - This function works **only in browser environments** (no effect on server-side).\n * - It leverages the native `window.scrollTo()` API with support for smooth scrolling\n * and an optional timeout delay before executing the scroll.\n * - Each option has strict valid values.\n * - If an invalid value is provided, the function **automatically falls back to its default**.\n * @param {ScrollToTopOptions} [options] - Optional settings for scroll behavior.\n * @param {ScrollToTopOptions[\"behavior\"]} [options.behavior=\"smooth\"] - Scroll animation type.\n * - Valid values: `\"auto\"`, `\"instant\"`, `\"smooth\"`.\n * - Default force to `\"smooth\"` if missing or invalid.\n * @param {ScrollToTopOptions[\"timeout\"]} [options.timeout=1] - Delay before scrolling (in milliseconds).\n * - Default value is `1`.\n * - Valid values: any number `≥` `1`.\n * - Non-integer number are truncated to an integer.\n * - Force to `2147483647` if number is larger than `2147483647`.\n * - Default force to `1` if `missing`, `NaN`, `invalid`, or `less-than` `1`.\n * @returns {void} Does not return anything, only scrolling to top (void).\n * @example\n * // ✅ Valid options value:\n * scrollToTop();\n * // ➔ Scroll smoothly to the top after 1ms delay\n * scrollToTop({ behavior: \"instant\" });\n * // ➔ Jump instantly to the top\n * scrollToTop({ timeout: 500 });\n * // ➔ Scroll smoothly to the top after 500ms\n *\n * // ❌ Invalid options value:\n * scrollToTop({ behavior: \"fly\", timeout: -100 });\n * // ➔ Fallback: behavior=\"smooth\", timeout=1\n * scrollToTop({ behavior: \"fly\", timeout: 123.55 });\n * // ➔ Fallback: behavior=\"smooth\", timeout=123\n */\nexport const scrollToTop = (options?: ScrollToTopOptions): void => {\n // Ensure function runs only in the browser\n if (isServer()) return;\n\n // Ensure options is an object and Defensive options check\n if (!isPlainObject(options)) {\n options = {};\n }\n\n const behavior: ScrollBehavior =\n hasOwnProp(options, \"behavior\") &&\n isNonEmptyString(options.behavior) &&\n [\"auto\", \"instant\", \"smooth\"].includes(options.behavior)\n ? options.behavior\n : \"smooth\";\n let timeout =\n hasOwnProp(options, \"timeout\") &&\n isNumber(options.timeout) &&\n options.timeout >= 1\n ? options.timeout\n : 1;\n\n timeout = timeout > 2147483647 ? 2147483647 : timeout;\n\n setTimeout(() => window.scrollTo({ top: 0, left: 0, behavior }), timeout);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,MAAa,0BACX,YAAoB,oBACX;CAET,IAAI,UAAU,EAAE;CAEhB,eAAe,WAAW,EACxB,QAAQ,EAAE,WAAW,eAAe;EAClC,OAAO,mDAAmD,UAAU,sBAAsB,YAAY;IAEzG,CAAC;CAEF,MAAM,EAAE,oBAAoB;CAE5B,IAAI,mBAAmB,CAAC,gBAAgB,UAAU,SAAS,UAAU,EACnE,gBAAgB,UAAU,IAAI,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACf5C,MAAa,yBACX,YAAoB,oBACX;CAET,IAAI,UAAU,EAAE;CAEhB,eAAe,WAAW,EACxB,QAAQ,EAAE,WAAW,eAAe;EAClC,OAAO,mDAAmD,UAAU,sBAAsB,YAAY;IAEzG,CAAC;CAEF,MAAM,EAAE,oBAAoB;CAE5B,IAAI,mBAAmB,gBAAgB,UAAU,SAAS,UAAU,EAClE,gBAAgB,UAAU,OAAO,UAAU;;;;;;;;;;;;;;;;;AC/C/C,MAAa,2BAAiC;CAE5C,IAAI,UAAU,EAAE;CAEhB,MAAM,gBAAgB,SAAS;CAE/B,IAAI,yBAAyB,aAC3B,cAAc,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACgDxB,MAAa,eAAe,YAAuC;CAEjE,IAAI,UAAU,EAAE;CAGhB,IAAI,CAAC,cAAc,QAAQ,EACzB,UAAU,EAAE;CAGd,MAAM,WACJ,WAAW,SAAS,WAAW,IAC/B,iBAAiB,QAAQ,SAAS,IAClC;EAAC;EAAQ;EAAW;EAAS,CAAC,SAAS,QAAQ,SAAS,GACpD,QAAQ,WACR;CACN,IAAI,UACF,WAAW,SAAS,UAAU,IAC9B,SAAS,QAAQ,QAAQ,IACzB,QAAQ,WAAW,IACf,QAAQ,UACR;CAEN,UAAU,UAAU,aAAa,aAAa;CAE9C,iBAAiB,OAAO,SAAS;EAAE,KAAK;EAAG,MAAM;EAAG;EAAU,CAAC,EAAE,QAAQ"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/events/actions/disableUserInteraction.ts","../../src/events/actions/enableUserInteraction.ts","../../src/events/actions/removeElementFocus.ts","../../src/events/actions/scrollToTop.ts"],"sourcesContent":["import { isServer } from \"@/predicates/is/isServer\";\nimport { assertIsString } from \"@/assertions/strings/assertIsString\";\n\n/** ----------------------------------------------------------\n * * ***Utility: `disableUserInteraction`.***\n * ----------------------------------------------------------\n * **Disables user interaction by adding a CSS class to the `<html>` element.**\n * - **Key points**:\n * - Works **only in browser environments**.\n * - Safely adds the specified CSS class to `<html>`.\n * - Prevents multiple additions of the same class.\n * - Useful to indicate that a process is ongoing\n * (e.g., loading or processing state).\n * - **Using custom CSS classes:**\n * - You can pass any class name that exists in your CSS.\n * - Example: if you have `.loading` in your styles, passing `\"loading\"`\n * will add it and disable interactions accordingly.\n * - **Validation:**\n * - Throws `TypeError` if the `className` parameter is not a string.\n * @defaultValue `\"on_processing\"`\n * @param {string} [className=\"on_processing\"] - The CSS class to add, defaults to `\"on_processing\"`.\n * @returns {void} Does not return anything (void).\n * @throws **{@link TypeError | `TypeError`}** if `className` is not a string.\n * @example\n * * ***Example in your code:***\n * ```ts\n * disableUserInteraction(); // ➔ Adds \"on_processing\" class\n * disableUserInteraction(\"loading\"); // ➔ Adds \"loading\" class\n * // ❌ Invalid value:\n * disableUserInteraction(123); // ➔ Throws TypeError\n * ```\n * * ***Example in your css file (with defaultValue `className` props [on_processing]):***\n * ```css\n * .on_processing {\n * cursor: wait;\n * touch-action: none;\n * user-select: none;\n * }\n *\n * .on_processing > * {\n * pointer-events: none;\n * touch-action: none;\n * user-select: none;\n * }\n * ```\n */\nexport const disableUserInteraction = (\n className: string = \"on_processing\"\n): void => {\n // Ensure function runs only in the browser\n if (isServer()) return;\n\n assertIsString(className, {\n message({ validType, currentType }) {\n return `First parameter \\`className\\` must be of type \\`${validType}\\`, but received: \\`${currentType}\\`.`;\n }\n });\n\n const { documentElement } = document;\n\n if (documentElement && !documentElement.classList.contains(className)) {\n documentElement.classList.add(className);\n }\n};\n","import { isServer } from \"@/predicates/is/isServer\";\nimport { assertIsString } from \"@/assertions/strings/assertIsString\";\n\n/** ----------------------------------------------------------\n * * ***Utility: `enableUserInteraction`.***\n * ----------------------------------------------------------\n * **Enables user interaction by removing a CSS class from the `<html>` element.**\n * - **Key points**:\n * - Works **only in browser environments**.\n * - Safely removes the specified CSS class from `<html>`.\n * - Does nothing if the class is not present.\n * - Useful to re-enable user interactions after a process\n * (e.g., loading or processing) completes.\n * - **Using custom CSS classes:**\n * - You can pass any class name that exists in your CSS.\n * - Example: if you have `.loading` in your styles, passing `\"loading\"`\n * will remove it and re-enable interactions.\n * - **Validation:**\n * - Throws `TypeError` if the `className` parameter is not a string.\n * @defaultValue `\"on_processing\"`\n * @param {string} [className=\"on_processing\"] - The CSS class to remove, defaults to `\"on_processing\"`.\n * @returns {void} Does not return anything (void).\n * @throws **{@link TypeError | `TypeError`}** if `className` is not a string.\n * @example\n * * ***Example in your code:***\n * ```ts\n * enableUserInteraction(); // ➔ Removes \"on_processing\" class\n * enableUserInteraction(\"loading\"); // ➔ Removes \"loading\" class\n * // ❌ Invalid value:\n * enableUserInteraction(123); // ➔ Throws TypeError\n * ```\n * * ***Example in your css file (with defaultValue `className` props [on_processing]):***\n * ```css\n * .on_processing {\n * cursor: wait;\n * touch-action: none;\n * user-select: none;\n * }\n *\n * .on_processing > * {\n * pointer-events: none;\n * touch-action: none;\n * user-select: none;\n * }\n * ```\n */\nexport const enableUserInteraction = (\n className: string = \"on_processing\"\n): void => {\n // Ensure function runs only in the browser\n if (isServer()) return;\n\n assertIsString(className, {\n message({ validType, currentType }) {\n return `First parameter \\`className\\` must be of type \\`${validType}\\`, but received: \\`${currentType}\\`.`;\n }\n });\n\n const { documentElement } = document;\n\n if (documentElement && documentElement.classList.contains(className)) {\n documentElement.classList.remove(className);\n }\n};\n","import { isServer } from \"@/predicates/is/isServer\";\n\n/** ----------------------------------------------------------\n * * ***Utility: `removeElementFocus`.***\n * ----------------------------------------------------------\n * **Removes focus from the currently active element in the document.**\n * - **Features**:\n * - This function works **only in browser environments** ***(safely no-ops in server environments)***.\n * - If an element is focused, it will lose focus by calling `HTMLElement.blur()`.\n * - If no element is focused or the active element is not an `HTMLElement`, nothing happens.\n * @returns {void} Does not return anything (void).\n * @example\n * removeElementFocus(); // ➔ Removes focus from the currently active element\n */\nexport const removeElementFocus = (): void => {\n // Ensure function runs only in the browser\n if (isServer()) return;\n\n const activeElement = document.activeElement;\n\n if (activeElement instanceof HTMLElement) {\n activeElement.blur();\n } else {\n // not-support, currently we nothing to do...\n // console.warn(\"removeElementFocus: No active element to blur or unsupported element type.\");\n }\n};\n","import { isNumber } from \"@/predicates/is/isNumber\";\nimport { hasOwnProp } from \"@/predicates/has/hasOwnProp\";\nimport { isServer } from \"@/predicates/is/isServer\";\nimport { isPlainObject } from \"@/predicates/is/isPlainObject\";\nimport { isNonEmptyString } from \"@/predicates/is/isNonEmptyString\";\n\n/**\n * ***Types options for {@link scrollToTop | `scrollToTop`}.***\n */\ntype ScrollToTopOptions = {\n /** ----------------------------------------------------------\n * * ***Scroll animation type.***\n * ----------------------------------------------------------\n * - ***Behavior:***\n * - Valid values: `\"auto\"`, `\"instant\"`, `\"smooth\"`.\n * - Default force to `\"smooth\"` if missing or invalid.\n *\n * @default \"smooth\"\n */\n behavior?: ScrollBehavior | undefined;\n /** ----------------------------------------------------------\n * * ***Delay before scrolling (in milliseconds).***\n * ----------------------------------------------------------\n * - ***Behavior:***\n * - Default value is `1`.\n * - Valid values: any number `≥` `1`.\n * - Non-integer number are truncated to an integer.\n * - Force to `2147483647` if number is larger than `2147483647`.\n * - Default force to `1` if `missing`, `NaN`, `invalid-type`, or `less-than` `1`.\n *\n * @default 1\n */\n timeout?: number | undefined;\n};\n\n/** ----------------------------------------------------------\n * * ***Utility: `scrollToTop`.***\n * ----------------------------------------------------------\n * **Scrolls the page to the top with optional smooth animation and delay.**\n * - **Features**:\n * - This function works **only in browser environments** (no effect on server-side).\n * - It leverages the native `window.scrollTo()` API with support for smooth scrolling\n * and an optional timeout delay before executing the scroll.\n * - Each option has strict valid values.\n * - If an invalid value is provided, the function **automatically falls back to its default**.\n * @param {ScrollToTopOptions} [options] - Optional settings for scroll behavior.\n * @param {ScrollToTopOptions[\"behavior\"]} [options.behavior=\"smooth\"] - Scroll animation type.\n * - Valid values: `\"auto\"`, `\"instant\"`, `\"smooth\"`.\n * - Default force to `\"smooth\"` if missing or invalid.\n * @param {ScrollToTopOptions[\"timeout\"]} [options.timeout=1] - Delay before scrolling (in milliseconds).\n * - Default value is `1`.\n * - Valid values: any number `≥` `1`.\n * - Non-integer number are truncated to an integer.\n * - Force to `2147483647` if number is larger than `2147483647`.\n * - Default force to `1` if `missing`, `NaN`, `invalid`, or `less-than` `1`.\n * @returns {void} Does not return anything, only scrolling to top (void).\n * @example\n * // ✅ Valid options value:\n * scrollToTop();\n * // ➔ Scroll smoothly to the top after 1ms delay\n * scrollToTop({ behavior: \"instant\" });\n * // ➔ Jump instantly to the top\n * scrollToTop({ timeout: 500 });\n * // ➔ Scroll smoothly to the top after 500ms\n *\n * // ❌ Invalid options value:\n * scrollToTop({ behavior: \"fly\", timeout: -100 });\n * // ➔ Fallback: behavior=\"smooth\", timeout=1\n * scrollToTop({ behavior: \"fly\", timeout: 123.55 });\n * // ➔ Fallback: behavior=\"smooth\", timeout=123\n */\nexport const scrollToTop = (options?: ScrollToTopOptions): void => {\n // Ensure function runs only in the browser\n if (isServer()) return;\n\n // Ensure options is an object and Defensive options check\n if (!isPlainObject(options)) {\n options = {};\n }\n\n const behavior: ScrollBehavior =\n hasOwnProp(options, \"behavior\") &&\n isNonEmptyString(options.behavior) &&\n [\"auto\", \"instant\", \"smooth\"].includes(options.behavior)\n ? options.behavior\n : \"smooth\";\n let timeout =\n hasOwnProp(options, \"timeout\") &&\n isNumber(options.timeout) &&\n options.timeout >= 1\n ? options.timeout\n : 1;\n\n timeout = timeout > 2147483647 ? 2147483647 : timeout;\n\n setTimeout(() => window.scrollTo({ top: 0, left: 0, behavior }), timeout);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,MAAa,0BACX,YAAoB,oBACX;CAET,IAAI,UAAU,EAAE;CAEhB,eAAe,WAAW,EACxB,QAAQ,EAAE,WAAW,eAAe;EAClC,OAAO,mDAAmD,UAAU,sBAAsB,YAAY;IAEzG,CAAC;CAEF,MAAM,EAAE,oBAAoB;CAE5B,IAAI,mBAAmB,CAAC,gBAAgB,UAAU,SAAS,UAAU,EACnE,gBAAgB,UAAU,IAAI,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACf5C,MAAa,yBACX,YAAoB,oBACX;CAET,IAAI,UAAU,EAAE;CAEhB,eAAe,WAAW,EACxB,QAAQ,EAAE,WAAW,eAAe;EAClC,OAAO,mDAAmD,UAAU,sBAAsB,YAAY;IAEzG,CAAC;CAEF,MAAM,EAAE,oBAAoB;CAE5B,IAAI,mBAAmB,gBAAgB,UAAU,SAAS,UAAU,EAClE,gBAAgB,UAAU,OAAO,UAAU;;;;;;;;;;;;;;;;;AC/C/C,MAAa,2BAAiC;CAE5C,IAAI,UAAU,EAAE;CAEhB,MAAM,gBAAgB,SAAS;CAE/B,IAAI,yBAAyB,aAC3B,cAAc,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACkDxB,MAAa,eAAe,YAAuC;CAEjE,IAAI,UAAU,EAAE;CAGhB,IAAI,CAAC,cAAc,QAAQ,EACzB,UAAU,EAAE;CAGd,MAAM,WACJ,WAAW,SAAS,WAAW,IAC/B,iBAAiB,QAAQ,SAAS,IAClC;EAAC;EAAQ;EAAW;EAAS,CAAC,SAAS,QAAQ,SAAS,GACpD,QAAQ,WACR;CACN,IAAI,UACF,WAAW,SAAS,UAAU,IAC9B,SAAS,QAAQ,QAAQ,IACzB,QAAQ,WAAW,IACf,QAAQ,UACR;CAEN,UAAU,UAAU,aAAa,aAAa;CAE9C,iBAAiB,OAAO,SAAS;EAAE,KAAK;EAAG,MAAM;EAAG;EAAU,CAAC,EAAE,QAAQ"}
@@ -2,14 +2,14 @@
2
2
  * ========================================================================
3
3
  * @rzl-zone/utils-js
4
4
  * ------------------------------------------------------------------------
5
- * Version: `3.12.1-beta.0`
5
+ * Version: `3.13.0-beta.2`
6
6
  * Author: `Rizalvin Dwiky <rizalvindwiky@gmail.com>`
7
7
  * Repository: `https://github.com/rzl-zone/rzl-zone/tree/main/packages/utils-js`
8
8
  * ========================================================================
9
9
  */
10
10
  "use strict";
11
11
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
12
- const require_formatters = require('../formatters-lAYgA11L.cjs');
12
+ const require_formatters = require('../formatters-DQr05EUA.cjs');
13
13
  exports.censorEmail = require_formatters.censorEmail;
14
14
  exports.chunkString = require_formatters.chunkString;
15
15
  exports.formatCurrency = require_formatters.formatCurrency;
@@ -2,11 +2,11 @@
2
2
  * ========================================================================
3
3
  * @rzl-zone/utils-js
4
4
  * ------------------------------------------------------------------------
5
- * Version: `3.12.1-beta.0`
5
+ * Version: `3.13.0-beta.2`
6
6
  * Author: `Rizalvin Dwiky <rizalvindwiky@gmail.com>`
7
7
  * Repository: `https://github.com/rzl-zone/rzl-zone/tree/main/packages/utils-js`
8
8
  * ========================================================================
9
9
  */
10
10
 
11
- import { a as truncateString, c as formatPhoneNumber, i as formatDateFns, l as formatNumber, n as formatDateTime, o as chunkString, r as formatDateIntl, s as censorEmail, t as getGMTOffset, u as formatCurrency } from "../index-BXjlgBLz.cjs";
11
+ import { a as truncateString, c as formatPhoneNumber, i as formatDateFns, l as formatNumber, n as formatDateTime, o as chunkString, r as formatDateIntl, s as censorEmail, t as getGMTOffset, u as formatCurrency } from "../index-BlTCrSyc.cjs";
12
12
  export { censorEmail, chunkString, formatCurrency, formatDateFns, formatDateIntl, formatDateTime, formatNumber, formatPhoneNumber, getGMTOffset, truncateString };
@@ -2,11 +2,11 @@
2
2
  * ========================================================================
3
3
  * @rzl-zone/utils-js
4
4
  * ------------------------------------------------------------------------
5
- * Version: `3.12.1-beta.0`
5
+ * Version: `3.13.0-beta.2`
6
6
  * Author: `Rizalvin Dwiky <rizalvindwiky@gmail.com>`
7
7
  * Repository: `https://github.com/rzl-zone/rzl-zone/tree/main/packages/utils-js`
8
8
  * ========================================================================
9
9
  */
10
10
 
11
- import { a as truncateString, c as formatPhoneNumber, i as formatDateFns, l as formatNumber, n as formatDateTime, o as chunkString, r as formatDateIntl, s as censorEmail, t as getGMTOffset, u as formatCurrency } from "../index-GUZ9fK6T.js";
11
+ import { a as truncateString, c as formatPhoneNumber, i as formatDateFns, l as formatNumber, n as formatDateTime, o as chunkString, r as formatDateIntl, s as censorEmail, t as getGMTOffset, u as formatCurrency } from "../index-CEm8ZOvj.js";
12
12
  export { censorEmail, chunkString, formatCurrency, formatDateFns, formatDateIntl, formatDateTime, formatNumber, formatPhoneNumber, getGMTOffset, truncateString };
@@ -2,10 +2,10 @@
2
2
  * ========================================================================
3
3
  * @rzl-zone/utils-js
4
4
  * ------------------------------------------------------------------------
5
- * Version: `3.12.1-beta.0`
5
+ * Version: `3.13.0-beta.2`
6
6
  * Author: `Rizalvin Dwiky <rizalvindwiky@gmail.com>`
7
7
  * Repository: `https://github.com/rzl-zone/rzl-zone/tree/main/packages/utils-js`
8
8
  * ========================================================================
9
9
  */
10
- import { a as truncateString, c as formatPhoneNumber, i as formatDateFns, l as formatNumber, n as formatDateTime, o as chunkString, r as formatDateIntl, s as censorEmail, t as getGMTOffset, u as formatCurrency } from "../formatters-QcZO_Cpx.js";
10
+ import { a as truncateString, c as formatPhoneNumber, i as formatDateFns, l as formatNumber, n as formatDateTime, o as chunkString, r as formatDateIntl, s as censorEmail, t as getGMTOffset, u as formatCurrency } from "../formatters-zDzQvtb4.js";
11
11
  export { censorEmail, chunkString, formatCurrency, formatDateFns, formatDateIntl, formatDateTime, formatNumber, formatPhoneNumber, getGMTOffset, truncateString };
@@ -2,20 +2,20 @@
2
2
  * ========================================================================
3
3
  * @rzl-zone/utils-js
4
4
  * ------------------------------------------------------------------------
5
- * Version: `3.12.1-beta.0`
5
+ * Version: `3.13.0-beta.2`
6
6
  * Author: `Rizalvin Dwiky <rizalvindwiky@gmail.com>`
7
7
  * Repository: `https://github.com/rzl-zone/rzl-zone/tree/main/packages/utils-js`
8
8
  * ========================================================================
9
9
  */
10
10
  "use strict";
11
- const require_assertIsBoolean = require('./assertIsBoolean-DozdtbNi.cjs');
12
- const require_assertIsString = require('./assertIsString-Bvk7bUL7.cjs');
13
- const require_isFinite = require('./isFinite-sFkps2TY.cjs');
14
- const require_safeStableStringify = require('./safeStableStringify-Cc62pfRp.cjs');
15
- const require_isEmptyString = require('./isEmptyString-CCK3bP74.cjs');
16
- const require_parsing = require('./parsing-lRoxn1Nz.cjs');
17
- const require_isInteger = require('./isInteger-FTCthMre.cjs');
18
- const require_normalizeSpaces = require('./normalizeSpaces-DQHR3Tlr.cjs');
11
+ const require_assertIsBoolean = require('./assertIsBoolean-amRiJHnh.cjs');
12
+ const require_assertIsString = require('./assertIsString-C0b28AU1.cjs');
13
+ const require_isFinite = require('./isFinite-uukWvxJh.cjs');
14
+ const require_safeStableStringify = require('./safeStableStringify-DRYQ56Dg.cjs');
15
+ const require_isEmptyString = require('./isEmptyString-DI64RQCy.cjs');
16
+ const require_parsing = require('./parsing-lI5EN4LY.cjs');
17
+ const require_isInteger = require('./isInteger-DPYjliLZ.cjs');
18
+ const require_normalizeSpaces = require('./normalizeSpaces-B6ZQOZRX.cjs');
19
19
  let libphonenumber_js_max = require("libphonenumber-js/max");
20
20
  let date_fns_locale = require("date-fns/locale");
21
21
  let date_fns = require("date-fns");
@@ -124,7 +124,7 @@ const formatNumber = (value, separator = ",") => {
124
124
  if (lastDot > lastComma) actualDecimal = ".";
125
125
  else if (lastComma > lastDot) actualDecimal = ",";
126
126
  let integerPart = stringValue;
127
- let decimalPart = "";
127
+ let decimalPart;
128
128
  if (actualDecimal) {
129
129
  const parts = stringValue.split(actualDecimal);
130
130
  integerPart = parts.slice(0, -1).join(actualDecimal);
@@ -178,8 +178,9 @@ function formatPhoneNumber(value, options = {}) {
178
178
  const intlNumb = parsedPhoneNumber.getNumber().format(outputFormat);
179
179
  if (outputFormat === "INTERNATIONAL") {
180
180
  const [cc, ...rest] = intlNumb.split(" ");
181
- const countryCode = prependPlusCountryCode ? cc : cc.replace(/^\++/, "");
181
+ const countryCode = prependPlusCountryCode ? cc : cc?.replace(/^\++/, "");
182
182
  const restWithSeparator = rest.join(separator);
183
+ if (!countryCode) return restWithSeparator;
183
184
  if (require_assertIsBoolean.isNonEmptyString(openingNumberCountry) && require_assertIsBoolean.isNonEmptyString(closingNumberCountry)) return `${openingNumberCountry}${countryCode}${closingNumberCountry} ${restWithSeparator}`;
184
185
  return `${countryCode} ${restWithSeparator}`;
185
186
  }
@@ -218,9 +219,10 @@ const censorEmail = (email, options = {}) => {
218
219
  if (mode !== "random" && mode !== "fixed") throw new TypeError(`Parameter \`mode\` property of the \`options\` (second parameter) must be one of "fixed" or "random", but received: \`${require_assertIsBoolean.getPreciseType(mode)}\`, with value: \`${require_safeStableStringify.safeStableStringify(mode, { keepUndefined: true })}\`.`);
219
220
  if (!/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(email)) return "";
220
221
  const [local, domain] = email.split("@");
221
- const domainParts = domain.split(".");
222
- if (domainParts.length < 2) return "";
222
+ const domainParts = domain?.split(".");
223
+ if (!local || !domainParts || domainParts.length < 2) return "";
223
224
  const [domainName, ...tldParts] = domainParts;
225
+ if (!domainName) return "";
224
226
  const tld = tldParts.join(".");
225
227
  const hashSeed = hashSeedGenerate(mode, email);
226
228
  const localMinCensor = local.length < 4 ? 1 : 2;
@@ -259,7 +261,7 @@ function chunkString(subject, limiter, options = {}) {
259
261
  const word = words[i];
260
262
  let processedWord = "";
261
263
  let charCountInWord = 0;
262
- for (let j = 0; j < word.length; j++) {
264
+ if (word) for (let j = 0; j < word.length; j++) {
263
265
  processedWord += word[j];
264
266
  charCountInWord++;
265
267
  if (charCountInWord === limiter && j < word.length - 1) {
@@ -424,4 +426,4 @@ Object.defineProperty(exports, 'truncateString', {
424
426
  return truncateString;
425
427
  }
426
428
  });
427
- //# sourceMappingURL=formatters-lAYgA11L.cjs.map
429
+ //# sourceMappingURL=formatters-DQr05EUA.cjs.map