@splendidlabz/utils 1.6.0 → 1.8.1

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 (474) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/cjs/dom/accessibility.cjs +53 -0
  3. package/dist/cjs/dom/actions/index.cjs +407 -0
  4. package/dist/cjs/dom/actions/masonry.cjs +149 -0
  5. package/dist/cjs/dom/actions/prefer-horizontal-scroll.cjs +157 -0
  6. package/dist/cjs/dom/actions/sticky.cjs +211 -0
  7. package/dist/cjs/dom/bounding-box.cjs +70 -0
  8. package/dist/cjs/dom/clipboard.cjs +37 -0
  9. package/dist/cjs/dom/cookie.cjs +57 -0
  10. package/dist/cjs/dom/css-vars.cjs +57 -0
  11. package/dist/cjs/dom/events.cjs +95 -0
  12. package/dist/cjs/dom/focusable.cjs +143 -0
  13. package/dist/cjs/dom/font-size.cjs +74 -0
  14. package/dist/cjs/dom/get-element.cjs +98 -0
  15. package/dist/cjs/dom/hash.cjs +35 -0
  16. package/dist/cjs/dom/index.cjs +1197 -0
  17. package/dist/cjs/dom/keyboard.cjs +51 -0
  18. package/dist/cjs/dom/local-store.cjs +79 -0
  19. package/dist/cjs/dom/media.cjs +59 -0
  20. package/dist/cjs/dom/observers/index.cjs +156 -0
  21. package/dist/cjs/dom/observers/intersection-observer.cjs +91 -0
  22. package/dist/cjs/dom/observers/mutation-observer.cjs +95 -0
  23. package/dist/cjs/dom/observers/observer.cjs +48 -0
  24. package/dist/cjs/dom/observers/resize-observer.cjs +82 -0
  25. package/dist/cjs/dom/pkce.cjs +53 -0
  26. package/dist/cjs/dom/query-params.cjs +38 -0
  27. package/dist/cjs/dom/random-string.cjs +38 -0
  28. package/dist/cjs/dom/sanitize.cjs +65 -0
  29. package/dist/cjs/dom/session-store.cjs +49 -0
  30. package/dist/cjs/dom/spam-prevention.cjs +50 -0
  31. package/dist/cjs/dom/trap-focus.cjs +197 -0
  32. package/dist/cjs/dom/ui/aria-current.cjs +43 -0
  33. package/dist/cjs/dom/ui/inconsistent-button-fix.cjs +35 -0
  34. package/dist/cjs/dom/ui/index.cjs +105 -0
  35. package/dist/cjs/dom/ui/scroll-container.cjs +47 -0
  36. package/dist/cjs/dom/ui/traverse-and-scramble.cjs +50 -0
  37. package/dist/cjs/lib/arrays/index.cjs +139 -0
  38. package/dist/cjs/lib/arrays/item-position.cjs +42 -0
  39. package/dist/cjs/lib/arrays/join.cjs +43 -0
  40. package/dist/cjs/lib/arrays/shuffle.cjs +42 -0
  41. package/dist/cjs/lib/arrays/sort.cjs +67 -0
  42. package/dist/cjs/lib/arrays/split-array.cjs +41 -0
  43. package/dist/cjs/lib/arrays/unique.cjs +31 -0
  44. package/dist/cjs/lib/auth/index.cjs +53 -0
  45. package/dist/cjs/lib/auth/route-manager.cjs +51 -0
  46. package/dist/cjs/lib/checks.cjs +58 -0
  47. package/dist/cjs/lib/date/days.cjs +37 -0
  48. package/dist/cjs/lib/date/index.cjs +208 -0
  49. package/dist/cjs/lib/date/months.cjs +102 -0
  50. package/dist/cjs/lib/date/time.cjs +117 -0
  51. package/dist/cjs/lib/form/form-data.cjs +83 -0
  52. package/dist/cjs/lib/form/index.cjs +122 -0
  53. package/dist/cjs/lib/form/sanitize.cjs +61 -0
  54. package/dist/cjs/lib/functions/debounce.cjs +43 -0
  55. package/dist/cjs/lib/functions/env.cjs +32 -0
  56. package/dist/cjs/lib/functions/functional.cjs +62 -0
  57. package/dist/cjs/lib/functions/index.cjs +122 -0
  58. package/dist/cjs/lib/functions/throttle.cjs +38 -0
  59. package/dist/cjs/lib/functions/timeout.cjs +41 -0
  60. package/dist/cjs/lib/hash.cjs +43 -0
  61. package/dist/cjs/lib/index.cjs +1146 -0
  62. package/dist/cjs/lib/numbers/index.cjs +49 -0
  63. package/dist/cjs/lib/numbers/math.cjs +36 -0
  64. package/dist/cjs/lib/objects/camelcase-keys.cjs +80 -0
  65. package/dist/cjs/lib/objects/empty.cjs +39 -0
  66. package/dist/cjs/lib/objects/equal.cjs +47 -0
  67. package/dist/cjs/lib/objects/extend.cjs +147 -0
  68. package/dist/cjs/lib/objects/flatten.cjs +48 -0
  69. package/dist/cjs/lib/objects/index.cjs +378 -0
  70. package/dist/cjs/lib/objects/json.cjs +35 -0
  71. package/dist/cjs/lib/objects/loop.cjs +40 -0
  72. package/dist/cjs/lib/objects/mix/mix.cjs +115 -0
  73. package/dist/cjs/lib/objects/nested-property.cjs +45 -0
  74. package/dist/cjs/lib/objects/normalize-object.cjs +106 -0
  75. package/dist/cjs/lib/objects/omit-empty.cjs +40 -0
  76. package/dist/cjs/lib/objects/size.cjs +63 -0
  77. package/dist/cjs/lib/objects/split.cjs +39 -0
  78. package/dist/cjs/lib/promises/index.cjs +69 -0
  79. package/dist/cjs/lib/promises/reject.cjs +67 -0
  80. package/dist/cjs/lib/sse.cjs +99 -0
  81. package/dist/cjs/lib/strings/convert-case/convert-case.cjs +96 -0
  82. package/dist/cjs/lib/strings/index.cjs +190 -0
  83. package/dist/cjs/lib/strings/markdown.cjs +59 -0
  84. package/dist/cjs/lib/strings/name.cjs +46 -0
  85. package/dist/cjs/lib/strings/pluralize.cjs +40 -0
  86. package/dist/cjs/lib/strings/query-string.cjs +43 -0
  87. package/dist/cjs/lib/style/index.cjs +64 -0
  88. package/dist/cjs/lib/symbols/index.cjs +40 -0
  89. package/dist/cjs/lib/symbols/symbols.cjs +38 -0
  90. package/dist/cjs/node/common.cjs +42 -0
  91. package/dist/cjs/node/dirname.cjs +49 -0
  92. package/dist/cjs/node/file-cache.cjs +196 -0
  93. package/dist/cjs/node/file.cjs +50 -0
  94. package/dist/cjs/node/hash.cjs +42 -0
  95. package/dist/cjs/node/index.cjs +290 -0
  96. package/dist/cjs/node/pkce.cjs +62 -0
  97. package/dist/cjs/node/random-string.cjs +43 -0
  98. package/dist/cjs/node/sanitize.cjs +65 -0
  99. package/dist/esm/dom/accessibility.js +27 -0
  100. package/dist/esm/dom/actions/index.js +379 -0
  101. package/dist/esm/dom/actions/masonry.js +123 -0
  102. package/dist/esm/dom/actions/prefer-horizontal-scroll.js +131 -0
  103. package/dist/esm/dom/actions/sticky.js +185 -0
  104. package/dist/esm/dom/bounding-box.js +45 -0
  105. package/dist/esm/dom/clipboard.js +13 -0
  106. package/dist/esm/dom/cookie.js +32 -0
  107. package/dist/esm/dom/css-vars.js +28 -0
  108. package/dist/esm/dom/events.js +67 -0
  109. package/dist/esm/dom/focusable.js +118 -0
  110. package/dist/esm/dom/font-size.js +44 -0
  111. package/dist/esm/dom/get-element.js +67 -0
  112. package/dist/esm/dom/hash.js +11 -0
  113. package/dist/esm/dom/index.js +1100 -0
  114. package/dist/esm/dom/keyboard.js +23 -0
  115. package/dist/esm/dom/local-store.js +55 -0
  116. package/dist/esm/dom/media.js +33 -0
  117. package/dist/esm/dom/observers/index.js +128 -0
  118. package/dist/esm/dom/observers/intersection-observer.js +65 -0
  119. package/dist/esm/dom/observers/mutation-observer.js +69 -0
  120. package/dist/esm/dom/observers/observer.js +22 -0
  121. package/dist/esm/dom/observers/resize-observer.js +56 -0
  122. package/dist/esm/dom/pkce.js +27 -0
  123. package/dist/esm/dom/query-params.js +14 -0
  124. package/dist/esm/dom/random-string.js +13 -0
  125. package/dist/esm/dom/sanitize.js +31 -0
  126. package/dist/esm/dom/session-store.js +25 -0
  127. package/dist/esm/dom/spam-prevention.js +26 -0
  128. package/dist/esm/dom/trap-focus.js +170 -0
  129. package/dist/esm/dom/ui/aria-current.js +18 -0
  130. package/dist/esm/dom/ui/inconsistent-button-fix.js +11 -0
  131. package/dist/esm/dom/ui/index.js +75 -0
  132. package/dist/esm/dom/ui/scroll-container.js +23 -0
  133. package/dist/esm/dom/ui/traverse-and-scramble.js +26 -0
  134. package/dist/esm/lib/arrays/index.js +106 -0
  135. package/dist/esm/lib/arrays/item-position.js +16 -0
  136. package/dist/esm/lib/arrays/join.js +17 -0
  137. package/dist/esm/lib/arrays/shuffle.js +18 -0
  138. package/dist/esm/lib/arrays/sort.js +41 -0
  139. package/dist/esm/lib/arrays/split-array.js +17 -0
  140. package/dist/esm/lib/arrays/unique.js +7 -0
  141. package/dist/esm/lib/auth/index.js +26 -0
  142. package/dist/esm/lib/auth/route-manager.js +26 -0
  143. package/dist/esm/lib/checks.js +31 -0
  144. package/dist/esm/lib/date/days.js +13 -0
  145. package/dist/esm/lib/date/index.js +173 -0
  146. package/dist/esm/lib/date/months.js +78 -0
  147. package/dist/esm/lib/date/time.js +84 -0
  148. package/dist/esm/lib/form/form-data.js +58 -0
  149. package/dist/esm/lib/form/index.js +92 -0
  150. package/dist/esm/lib/form/sanitize.js +35 -0
  151. package/dist/esm/lib/functions/debounce.js +19 -0
  152. package/dist/esm/lib/functions/env.js +8 -0
  153. package/dist/esm/lib/functions/functional.js +35 -0
  154. package/dist/esm/lib/functions/index.js +87 -0
  155. package/dist/esm/lib/functions/throttle.js +14 -0
  156. package/dist/esm/lib/functions/timeout.js +15 -0
  157. package/dist/esm/lib/hash.js +19 -0
  158. package/dist/esm/lib/index.js +1027 -0
  159. package/dist/esm/lib/numbers/index.js +21 -0
  160. package/dist/esm/lib/numbers/math.js +11 -0
  161. package/dist/esm/lib/objects/camelcase-keys.js +54 -0
  162. package/dist/esm/lib/objects/empty.js +14 -0
  163. package/dist/esm/lib/objects/equal.js +12 -0
  164. package/dist/esm/lib/objects/extend.js +121 -0
  165. package/dist/esm/lib/objects/flatten.js +22 -0
  166. package/dist/esm/lib/objects/index.js +323 -0
  167. package/dist/esm/lib/objects/json.js +11 -0
  168. package/dist/esm/lib/objects/loop.js +15 -0
  169. package/dist/esm/lib/objects/mix/mix.js +89 -0
  170. package/dist/esm/lib/objects/nested-property.js +19 -0
  171. package/dist/esm/lib/objects/normalize-object.js +80 -0
  172. package/dist/esm/lib/objects/omit-empty.js +16 -0
  173. package/dist/esm/lib/objects/size.js +39 -0
  174. package/dist/esm/lib/objects/split.js +15 -0
  175. package/dist/esm/lib/promises/index.js +33 -0
  176. package/dist/esm/lib/promises/reject.js +33 -0
  177. package/dist/esm/lib/sse.js +72 -0
  178. package/dist/esm/lib/strings/convert-case/convert-case.js +65 -0
  179. package/dist/esm/lib/strings/index.js +140 -0
  180. package/dist/esm/lib/strings/markdown.js +34 -0
  181. package/dist/esm/lib/strings/name.js +22 -0
  182. package/dist/esm/lib/strings/pluralize.js +6 -0
  183. package/dist/esm/lib/strings/query-string.js +17 -0
  184. package/dist/esm/lib/style/index.js +38 -0
  185. package/dist/esm/lib/symbols/index.js +13 -0
  186. package/dist/esm/lib/symbols/symbols.js +13 -0
  187. package/dist/esm/node/common.js +8 -0
  188. package/dist/esm/node/dirname.js +14 -0
  189. package/dist/esm/node/file-cache.js +158 -0
  190. package/dist/esm/node/file.js +15 -0
  191. package/dist/esm/node/hash.js +8 -0
  192. package/dist/esm/node/index.js +243 -0
  193. package/dist/esm/node/pkce.js +28 -0
  194. package/dist/esm/node/random-string.js +9 -0
  195. package/dist/esm/node/sanitize.js +31 -0
  196. package/dist/{dom/accessibility.d.ts → types/dom/accessibility.d.cts} +5 -3
  197. package/dist/types/dom/actions/index.d.cts +3 -0
  198. package/dist/types/dom/actions/masonry.d.cts +5 -0
  199. package/dist/types/dom/actions/prefer-horizontal-scroll.d.cts +5 -0
  200. package/dist/types/dom/actions/sticky.d.cts +5 -0
  201. package/dist/{dom/bounding-box.d.ts → types/dom/bounding-box.d.cts} +4 -2
  202. package/dist/{dom/clipboard.d.ts → types/dom/clipboard.d.cts} +3 -1
  203. package/dist/types/dom/cookie.d.cts +7 -0
  204. package/dist/types/dom/css-vars.d.cts +6 -0
  205. package/dist/types/dom/events.d.cts +20 -0
  206. package/dist/{dom/focusable.d.ts → types/dom/focusable.d.cts} +5 -3
  207. package/dist/types/dom/font-size.d.cts +7 -0
  208. package/dist/{dom/get-element.d.ts → types/dom/get-element.d.cts} +10 -8
  209. package/dist/types/dom/hash.d.cts +3 -0
  210. package/dist/types/dom/index.d.cts +30 -0
  211. package/dist/{dom/keyboard.d.ts → types/dom/keyboard.d.cts} +7 -5
  212. package/dist/{dom/local-store.d.ts → types/dom/local-store.d.cts} +3 -1
  213. package/dist/types/dom/media.d.cts +5 -0
  214. package/dist/types/dom/observers/index.d.cts +3 -0
  215. package/dist/{dom/observers/intersection-observer.d.ts → types/dom/observers/intersection-observer.d.cts} +3 -1
  216. package/dist/{dom/observers/mutation-observer.d.ts → types/dom/observers/mutation-observer.d.cts} +3 -1
  217. package/dist/types/dom/observers/observer.d.cts +3 -0
  218. package/dist/{dom/observers/resize-observer.d.ts → types/dom/observers/resize-observer.d.cts} +3 -1
  219. package/dist/{node/pkce.d.ts → types/dom/pkce.d.cts} +3 -1
  220. package/dist/{dom/query-params.d.ts → types/dom/query-params.d.cts} +3 -1
  221. package/dist/{dom/random-string.d.ts → types/dom/random-string.d.cts} +4 -2
  222. package/dist/{dom/sanitize.d.ts → types/dom/sanitize.d.cts} +3 -1
  223. package/dist/{dom/session-store.d.ts → types/dom/session-store.d.cts} +3 -1
  224. package/dist/types/dom/spam-prevention.d.cts +14 -0
  225. package/dist/{dom/trap-focus.d.ts → types/dom/trap-focus.d.cts} +8 -4
  226. package/dist/types/dom/ui/aria-current.d.cts +7 -0
  227. package/dist/{dom/ui/inconsistent-button-fix.d.ts → types/dom/ui/inconsistent-button-fix.d.cts} +3 -1
  228. package/dist/types/dom/ui/index.d.cts +4 -0
  229. package/dist/types/dom/ui/scroll-container.d.cts +3 -0
  230. package/dist/{dom/ui/traverse-and-scramble.d.ts → types/dom/ui/traverse-and-scramble.d.cts} +3 -1
  231. package/dist/types/lib/arrays/index.d.cts +6 -0
  232. package/dist/{lib/arrays/item-position.d.ts → types/lib/arrays/item-position.d.cts} +5 -3
  233. package/dist/{lib/arrays/join.d.ts → types/lib/arrays/join.d.cts} +3 -1
  234. package/dist/types/lib/arrays/shuffle.d.cts +3 -0
  235. package/dist/{lib/arrays/sort.d.ts → types/lib/arrays/sort.d.cts} +3 -1
  236. package/dist/types/lib/arrays/split-array.d.cts +6 -0
  237. package/dist/types/lib/arrays/unique.d.cts +3 -0
  238. package/dist/types/lib/auth/index.d.cts +1 -0
  239. package/dist/{lib/auth/route-manager.d.ts → types/lib/auth/route-manager.d.cts} +5 -2
  240. package/dist/{lib/checks.d.ts → types/lib/checks.d.cts} +6 -4
  241. package/dist/{lib/date/days.d.ts → types/lib/date/days.d.cts} +3 -1
  242. package/dist/types/lib/date/index.d.cts +3 -0
  243. package/dist/{lib/date/months.d.ts → types/lib/date/months.d.cts} +3 -1
  244. package/dist/types/lib/date/time.d.cts +21 -0
  245. package/dist/types/lib/form/form-data.d.cts +9 -0
  246. package/dist/types/lib/form/index.d.cts +2 -0
  247. package/dist/{lib/form/sanitize.d.ts → types/lib/form/sanitize.d.cts} +6 -4
  248. package/dist/types/lib/functions/debounce.d.cts +3 -0
  249. package/dist/types/lib/functions/env.d.cts +3 -0
  250. package/dist/types/lib/functions/functional.d.cts +6 -0
  251. package/dist/types/lib/functions/index.d.cts +5 -0
  252. package/dist/types/lib/functions/throttle.d.cts +3 -0
  253. package/dist/types/lib/functions/timeout.d.cts +5 -0
  254. package/dist/types/lib/hash.d.cts +3 -0
  255. package/dist/types/lib/index.d.cts +43 -0
  256. package/dist/types/lib/numbers/index.d.cts +5 -0
  257. package/dist/types/lib/numbers/math.d.cts +4 -0
  258. package/dist/types/lib/objects/camelcase-keys.d.cts +3 -0
  259. package/dist/types/lib/objects/empty.d.cts +4 -0
  260. package/dist/types/lib/objects/equal.d.cts +4 -0
  261. package/dist/types/lib/objects/extend.d.cts +6 -0
  262. package/dist/types/lib/objects/flatten.d.cts +6 -0
  263. package/dist/types/lib/objects/index.d.cts +13 -0
  264. package/dist/types/lib/objects/json.d.cts +3 -0
  265. package/dist/types/lib/objects/loop.d.cts +4 -0
  266. package/dist/types/lib/objects/mix/mix.d.cts +44 -0
  267. package/dist/{lib/objects/nested-property.d.ts → types/lib/objects/nested-property.d.cts} +5 -3
  268. package/dist/types/lib/objects/normalize-object.d.cts +3 -0
  269. package/dist/types/lib/objects/omit-empty.d.cts +3 -0
  270. package/dist/types/lib/objects/size.d.cts +3 -0
  271. package/dist/{lib/objects/split.d.ts → types/lib/objects/split.d.cts} +3 -1
  272. package/dist/types/lib/promises/index.d.cts +1 -0
  273. package/dist/types/lib/promises/reject.d.cts +5 -0
  274. package/dist/{lib/sse.d.ts → types/lib/sse.d.cts} +4 -2
  275. package/dist/types/lib/strings/convert-case/convert-case.d.cts +10 -0
  276. package/dist/types/lib/strings/index.d.cts +5 -0
  277. package/dist/{lib/strings/markdown.d.ts → types/lib/strings/markdown.d.cts} +4 -2
  278. package/dist/types/lib/strings/name.d.cts +7 -0
  279. package/dist/types/lib/strings/pluralize.d.cts +3 -0
  280. package/dist/types/lib/strings/query-string.d.cts +10 -0
  281. package/dist/types/lib/style/index.d.cts +3 -0
  282. package/dist/types/lib/symbols/index.d.cts +1 -0
  283. package/dist/types/lib/symbols/symbols.d.cts +4 -0
  284. package/dist/types/node/common.d.cts +3 -0
  285. package/dist/types/node/dirname.d.cts +9 -0
  286. package/dist/{node/file-cache.d.ts → types/node/file-cache.d.cts} +7 -5
  287. package/dist/types/node/file.d.cts +4 -0
  288. package/dist/types/node/hash.d.cts +3 -0
  289. package/dist/types/node/index.d.cts +7 -0
  290. package/dist/{dom/pkce.d.ts → types/node/pkce.d.cts} +3 -1
  291. package/dist/types/node/random-string.d.cts +3 -0
  292. package/dist/{node/sanitize.d.ts → types/node/sanitize.d.cts} +3 -1
  293. package/package.json +28 -16
  294. package/{dom → src/dom}/index.js +1 -0
  295. package/src/dom/spam-prevention.js +39 -0
  296. package/{dom → src/dom}/ui/aria-current.js +1 -1
  297. package/{lib → src/lib}/arrays/index.js +1 -0
  298. package/{lib → src/lib}/arrays/sort.js +6 -6
  299. package/src/lib/arrays/split-array.js +15 -0
  300. package/{lib → src/lib}/auth/route-manager.js +1 -0
  301. package/{lib → src/lib}/date/time.js +38 -5
  302. package/{lib → src/lib}/numbers/index.js +1 -1
  303. package/src/lib/numbers/split-unit.test.js +45 -0
  304. package/src/lib/objects/mix/mix.js +191 -0
  305. package/{lib → src/lib}/objects/mix/mix.test.js +99 -2
  306. package/src/lib/strings/pluralize.js +2 -0
  307. package/{lib → src/lib}/style/index.js +2 -0
  308. package/{node → src/node}/file-cache.js +1 -1
  309. package/tsconfig.json +6 -6
  310. package/tsup.config.js +38 -0
  311. package/tsup.config.mjs +43 -0
  312. package/dist/dom/actions/index.d.ts +0 -3
  313. package/dist/dom/actions/masonry.d.ts +0 -3
  314. package/dist/dom/actions/prefer-horizontal-scroll.d.ts +0 -3
  315. package/dist/dom/actions/sticky.d.ts +0 -3
  316. package/dist/dom/cookie.d.ts +0 -5
  317. package/dist/dom/css-vars.d.ts +0 -4
  318. package/dist/dom/events.d.ts +0 -18
  319. package/dist/dom/font-size.d.ts +0 -5
  320. package/dist/dom/hash.d.ts +0 -1
  321. package/dist/dom/index.d.ts +0 -22
  322. package/dist/dom/media.d.ts +0 -3
  323. package/dist/dom/observers/index.d.ts +0 -3
  324. package/dist/dom/observers/observer.d.ts +0 -1
  325. package/dist/dom/ui/aria-current.d.ts +0 -5
  326. package/dist/dom/ui/index.d.ts +0 -4
  327. package/dist/dom/ui/scroll-container.d.ts +0 -1
  328. package/dist/lib/arrays/index.d.ts +0 -5
  329. package/dist/lib/arrays/shuffle.d.ts +0 -1
  330. package/dist/lib/arrays/unique.d.ts +0 -1
  331. package/dist/lib/auth/index.d.ts +0 -1
  332. package/dist/lib/date/index.d.ts +0 -3
  333. package/dist/lib/date/time.d.ts +0 -8
  334. package/dist/lib/form/form-data.d.ts +0 -7
  335. package/dist/lib/form/index.d.ts +0 -2
  336. package/dist/lib/functions/debounce.d.ts +0 -1
  337. package/dist/lib/functions/env.d.ts +0 -1
  338. package/dist/lib/functions/functional.d.ts +0 -4
  339. package/dist/lib/functions/index.d.ts +0 -5
  340. package/dist/lib/functions/throttle.d.ts +0 -1
  341. package/dist/lib/functions/timeout.d.ts +0 -3
  342. package/dist/lib/hash.d.ts +0 -1
  343. package/dist/lib/index.d.ts +0 -14
  344. package/dist/lib/numbers/index.d.ts +0 -2
  345. package/dist/lib/numbers/math.d.ts +0 -2
  346. package/dist/lib/objects/camelcase-keys.d.ts +0 -1
  347. package/dist/lib/objects/empty.d.ts +0 -2
  348. package/dist/lib/objects/equal.d.ts +0 -2
  349. package/dist/lib/objects/extend.d.ts +0 -4
  350. package/dist/lib/objects/flatten.d.ts +0 -4
  351. package/dist/lib/objects/index.d.ts +0 -13
  352. package/dist/lib/objects/json.d.ts +0 -1
  353. package/dist/lib/objects/loop.d.ts +0 -2
  354. package/dist/lib/objects/mix/mix.d.ts +0 -1
  355. package/dist/lib/objects/normalize-object.d.ts +0 -1
  356. package/dist/lib/objects/omit-empty.d.ts +0 -1
  357. package/dist/lib/objects/size.d.ts +0 -1
  358. package/dist/lib/promises/index.d.ts +0 -1
  359. package/dist/lib/promises/reject.d.ts +0 -3
  360. package/dist/lib/strings/convert-case/convert-case.d.ts +0 -8
  361. package/dist/lib/strings/index.d.ts +0 -5
  362. package/dist/lib/strings/name.d.ts +0 -5
  363. package/dist/lib/strings/pluralize.d.ts +0 -1
  364. package/dist/lib/strings/query-string.d.ts +0 -8
  365. package/dist/lib/style/index.d.ts +0 -1
  366. package/dist/lib/symbols/index.d.ts +0 -1
  367. package/dist/lib/symbols/symbols.d.ts +0 -2
  368. package/dist/node/common.d.ts +0 -1
  369. package/dist/node/dirname.d.ts +0 -7
  370. package/dist/node/file.d.ts +0 -2
  371. package/dist/node/hash.d.ts +0 -1
  372. package/dist/node/index.d.ts +0 -7
  373. package/dist/node/random-string.d.ts +0 -1
  374. package/lib/objects/mix/mix.js +0 -102
  375. package/lib/strings/pluralize.js +0 -2
  376. /package/{dom → src/dom}/accessibility.js +0 -0
  377. /package/{dom → src/dom}/actions/index.js +0 -0
  378. /package/{dom → src/dom}/actions/masonry.js +0 -0
  379. /package/{dom → src/dom}/actions/prefer-horizontal-scroll.js +0 -0
  380. /package/{dom → src/dom}/actions/sticky.js +0 -0
  381. /package/{dom → src/dom}/bounding-box.js +0 -0
  382. /package/{dom → src/dom}/clipboard.js +0 -0
  383. /package/{dom → src/dom}/cookie.js +0 -0
  384. /package/{dom → src/dom}/css-vars.js +0 -0
  385. /package/{dom → src/dom}/events.js +0 -0
  386. /package/{dom → src/dom}/events.test.js +0 -0
  387. /package/{dom → src/dom}/focusable.js +0 -0
  388. /package/{dom → src/dom}/font-size.js +0 -0
  389. /package/{dom → src/dom}/get-element.js +0 -0
  390. /package/{dom → src/dom}/hash.js +0 -0
  391. /package/{dom → src/dom}/keyboard.js +0 -0
  392. /package/{dom → src/dom}/local-store.js +0 -0
  393. /package/{dom → src/dom}/media.js +0 -0
  394. /package/{dom → src/dom}/observers/index.js +0 -0
  395. /package/{dom → src/dom}/observers/intersection-observer.js +0 -0
  396. /package/{dom → src/dom}/observers/mutation-observer.js +0 -0
  397. /package/{dom → src/dom}/observers/observer.js +0 -0
  398. /package/{dom → src/dom}/observers/resize-observer.js +0 -0
  399. /package/{dom → src/dom}/pkce.js +0 -0
  400. /package/{dom → src/dom}/query-params.js +0 -0
  401. /package/{dom → src/dom}/random-string.js +0 -0
  402. /package/{dom → src/dom}/random-string.test.js +0 -0
  403. /package/{dom → src/dom}/sanitize.js +0 -0
  404. /package/{dom → src/dom}/session-store.js +0 -0
  405. /package/{dom → src/dom}/trap-focus.js +0 -0
  406. /package/{dom → src/dom}/ui/inconsistent-button-fix.js +0 -0
  407. /package/{dom → src/dom}/ui/index.js +0 -0
  408. /package/{dom → src/dom}/ui/scroll-container.js +0 -0
  409. /package/{dom → src/dom}/ui/traverse-and-scramble.js +0 -0
  410. /package/{lib → src/lib}/arrays/item-position.js +0 -0
  411. /package/{lib → src/lib}/arrays/join.js +0 -0
  412. /package/{lib → src/lib}/arrays/shuffle.js +0 -0
  413. /package/{lib → src/lib}/arrays/sort.spec.js +0 -0
  414. /package/{lib → src/lib}/arrays/unique.js +0 -0
  415. /package/{lib → src/lib}/auth/index.js +0 -0
  416. /package/{lib → src/lib}/checks.js +0 -0
  417. /package/{lib → src/lib}/date/days.js +0 -0
  418. /package/{lib → src/lib}/date/index.js +0 -0
  419. /package/{lib → src/lib}/date/months.js +0 -0
  420. /package/{lib → src/lib}/form/form-data.js +0 -0
  421. /package/{lib → src/lib}/form/index.js +0 -0
  422. /package/{lib → src/lib}/form/sanitize.js +0 -0
  423. /package/{lib → src/lib}/form/sanitize.spec.js +0 -0
  424. /package/{lib → src/lib}/functions/debounce.js +0 -0
  425. /package/{lib → src/lib}/functions/env.js +0 -0
  426. /package/{lib → src/lib}/functions/functional.js +0 -0
  427. /package/{lib → src/lib}/functions/index.js +0 -0
  428. /package/{lib → src/lib}/functions/throttle.js +0 -0
  429. /package/{lib → src/lib}/functions/timeout.js +0 -0
  430. /package/{lib → src/lib}/hash.js +0 -0
  431. /package/{lib → src/lib}/hash.spec.js +0 -0
  432. /package/{lib → src/lib}/index.js +0 -0
  433. /package/{lib → src/lib}/numbers/math.js +0 -0
  434. /package/{lib → src/lib}/objects/camelcase-keys.js +0 -0
  435. /package/{lib → src/lib}/objects/camelcase-keys.test.js +0 -0
  436. /package/{lib → src/lib}/objects/empty.js +0 -0
  437. /package/{lib → src/lib}/objects/equal.js +0 -0
  438. /package/{lib → src/lib}/objects/extend.js +0 -0
  439. /package/{lib → src/lib}/objects/extend.test.js +0 -0
  440. /package/{lib → src/lib}/objects/flatten.js +0 -0
  441. /package/{lib → src/lib}/objects/index.js +0 -0
  442. /package/{lib → src/lib}/objects/json.js +0 -0
  443. /package/{lib → src/lib}/objects/loop.js +0 -0
  444. /package/{lib → src/lib}/objects/loop.test.js +0 -0
  445. /package/{lib → src/lib}/objects/mix/mix.md +0 -0
  446. /package/{lib → src/lib}/objects/nested-property.js +0 -0
  447. /package/{lib → src/lib}/objects/normalize-object.js +0 -0
  448. /package/{lib → src/lib}/objects/omit-empty.js +0 -0
  449. /package/{lib → src/lib}/objects/omit-empty.test.js +0 -0
  450. /package/{lib → src/lib}/objects/size.js +0 -0
  451. /package/{lib → src/lib}/objects/split.js +0 -0
  452. /package/{lib → src/lib}/promises/index.js +0 -0
  453. /package/{lib → src/lib}/promises/reject.js +0 -0
  454. /package/{lib → src/lib}/sse.js +0 -0
  455. /package/{lib → src/lib}/strings/convert-case/convert-case.js +0 -0
  456. /package/{lib → src/lib}/strings/convert-case/convert-case.md +0 -0
  457. /package/{lib → src/lib}/strings/convert-case/convert-case.test.js +0 -0
  458. /package/{lib → src/lib}/strings/index.js +0 -0
  459. /package/{lib → src/lib}/strings/markdown.js +0 -0
  460. /package/{lib → src/lib}/strings/name.js +0 -0
  461. /package/{lib → src/lib}/strings/name.test.js +0 -0
  462. /package/{lib → src/lib}/strings/query-string.js +0 -0
  463. /package/{lib → src/lib}/symbols/index.js +0 -0
  464. /package/{lib → src/lib}/symbols/symbols.js +0 -0
  465. /package/{node → src/node}/common.js +0 -0
  466. /package/{node → src/node}/dirname.js +0 -0
  467. /package/{node → src/node}/file.js +0 -0
  468. /package/{node → src/node}/hash.js +0 -0
  469. /package/{node → src/node}/index.js +0 -0
  470. /package/{node → src/node}/pkce.js +0 -0
  471. /package/{node → src/node}/random-string.js +0 -0
  472. /package/{node → src/node}/random-string.test.js +0 -0
  473. /package/{node → src/node}/sanitize.js +0 -0
  474. /package/{node → src/node}/sanitize.spec.js +0 -0
@@ -0,0 +1,53 @@
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: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/dom/pkce.js
20
+ var pkce_exports = {};
21
+ __export(pkce_exports, {
22
+ PKCE: () => PKCE
23
+ });
24
+ module.exports = __toCommonJS(pkce_exports);
25
+
26
+ // src/dom/random-string.js
27
+ function randomString(length = 10) {
28
+ const firstLetter = String.fromCharCode(65 + Math.floor(Math.random() * 26));
29
+ const others = Math.random().toString(36).substring(2, 2 + length - 1);
30
+ return firstLetter + others;
31
+ }
32
+
33
+ // src/dom/pkce.js
34
+ async function PKCE() {
35
+ const codeVerifier = await randomString();
36
+ const codeChallenge = await getCodeChallenge(codeVerifier);
37
+ return {
38
+ state: await randomString(),
39
+ code_verifier: codeVerifier,
40
+ code_challenge: codeChallenge,
41
+ code_challenge_method: "S256"
42
+ };
43
+ }
44
+ async function getCodeChallenge(verifier) {
45
+ const encoder = new TextEncoder();
46
+ const data = encoder.encode(verifier);
47
+ const hashed = await window.crypto.subtle.digest("SHA-256", data);
48
+ return window.btoa(String.fromCharCode.apply(null, new Uint8Array(hashed))).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
49
+ }
50
+ // Annotate the CommonJS export names for ESM import in node:
51
+ 0 && (module.exports = {
52
+ PKCE
53
+ });
@@ -0,0 +1,38 @@
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: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/dom/query-params.js
20
+ var query_params_exports = {};
21
+ __export(query_params_exports, {
22
+ queryParams: () => queryParams
23
+ });
24
+ module.exports = __toCommonJS(query_params_exports);
25
+ var queryParams = {
26
+ get(key) {
27
+ const searchParams = new URLSearchParams(location.search);
28
+ return searchParams.get(key);
29
+ },
30
+ stringify(params) {
31
+ const searchParams = new URLSearchParams(location.search);
32
+ return searchParams.toString();
33
+ }
34
+ };
35
+ // Annotate the CommonJS export names for ESM import in node:
36
+ 0 && (module.exports = {
37
+ queryParams
38
+ });
@@ -0,0 +1,38 @@
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: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/dom/random-string.js
20
+ var random_string_exports = {};
21
+ __export(random_string_exports, {
22
+ randomString: () => randomString,
23
+ uuid: () => uuid
24
+ });
25
+ module.exports = __toCommonJS(random_string_exports);
26
+ function randomString(length = 10) {
27
+ const firstLetter = String.fromCharCode(65 + Math.floor(Math.random() * 26));
28
+ const others = Math.random().toString(36).substring(2, 2 + length - 1);
29
+ return firstLetter + others;
30
+ }
31
+ function uuid() {
32
+ return crypto.randomUUID();
33
+ }
34
+ // Annotate the CommonJS export names for ESM import in node:
35
+ 0 && (module.exports = {
36
+ randomString,
37
+ uuid
38
+ });
@@ -0,0 +1,65 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/dom/sanitize.js
30
+ var sanitize_exports = {};
31
+ __export(sanitize_exports, {
32
+ sanitize: () => sanitize2
33
+ });
34
+ module.exports = __toCommonJS(sanitize_exports);
35
+ var import_dompurify = __toESM(require("dompurify"), 1);
36
+
37
+ // src/lib/form/sanitize.js
38
+ function sanitize(value, options = {}) {
39
+ const { sanitizer, ...rest } = options;
40
+ if (!sanitizer) throw new Error("sanitizer function is required");
41
+ if (typeof value === "string") return sanitizer(value, rest);
42
+ if (Array.isArray(value)) return sanitizeArray(value, { sanitizer, ...rest });
43
+ if (value && typeof value === "object") {
44
+ return Object.fromEntries(
45
+ Object.entries(value).map(([key, val]) => [
46
+ key,
47
+ sanitize(val, { sanitizer, ...rest })
48
+ ])
49
+ );
50
+ }
51
+ return value;
52
+ }
53
+ function sanitizeArray(arr, { sanitizer, ...rest }) {
54
+ if (!sanitizer) throw new Error("sanitizer function is required");
55
+ return arr.map((item) => sanitize(item, { sanitizer, ...rest }));
56
+ }
57
+
58
+ // src/dom/sanitize.js
59
+ function sanitize2(value, options = {}) {
60
+ return sanitize(value, { sanitizer: import_dompurify.default.sanitize, ...options });
61
+ }
62
+ // Annotate the CommonJS export names for ESM import in node:
63
+ 0 && (module.exports = {
64
+ sanitize
65
+ });
@@ -0,0 +1,49 @@
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: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/dom/session-store.js
20
+ var session_store_exports = {};
21
+ __export(session_store_exports, {
22
+ sessionStore: () => sessionStore
23
+ });
24
+ module.exports = __toCommonJS(session_store_exports);
25
+ var sessionStore = {
26
+ get(key) {
27
+ const value = sessionStorage.getItem(key);
28
+ if (!value) return;
29
+ try {
30
+ return JSON.parse(value);
31
+ } catch (error) {
32
+ return value;
33
+ }
34
+ },
35
+ set(key, value) {
36
+ if (typeof value === "string") {
37
+ sessionStorage.setItem(key, value);
38
+ } else {
39
+ sessionStorage.setItem(key, JSON.stringify(value));
40
+ }
41
+ },
42
+ remove(key) {
43
+ sessionStorage.removeItem(key);
44
+ }
45
+ };
46
+ // Annotate the CommonJS export names for ESM import in node:
47
+ 0 && (module.exports = {
48
+ sessionStore
49
+ });
@@ -0,0 +1,50 @@
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: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/dom/spam-prevention.js
20
+ var spam_prevention_exports = {};
21
+ __export(spam_prevention_exports, {
22
+ preventSpam: () => preventSpam
23
+ });
24
+ module.exports = __toCommonJS(spam_prevention_exports);
25
+ function preventSpam(form, { honeypotField = "hp", honeypotDuration = 2e3 } = {}) {
26
+ const startTime = Date.now();
27
+ let hasInteraction = false;
28
+ function checkForInteraction() {
29
+ hasInteraction = true;
30
+ }
31
+ const events = ["keydown", "mousemove", "touchstart", "click"];
32
+ events.forEach((event) => {
33
+ form.addEventListener(event, checkForInteraction, { once: true });
34
+ });
35
+ form.containsSpam = function() {
36
+ const fillTime = Date.now() - startTime;
37
+ const isTooFast = fillTime < honeypotDuration;
38
+ const honeypotInput = form.querySelector(`[name="${honeypotField}"]`);
39
+ const hasHoneypotValue = honeypotInput?.value?.trim();
40
+ const noInteraction = !hasInteraction;
41
+ events.forEach(
42
+ (event) => form.removeEventListener(event, checkForInteraction)
43
+ );
44
+ return isTooFast || !!hasHoneypotValue || noInteraction;
45
+ };
46
+ }
47
+ // Annotate the CommonJS export names for ESM import in node:
48
+ 0 && (module.exports = {
49
+ preventSpam
50
+ });
@@ -0,0 +1,197 @@
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: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/dom/trap-focus.js
20
+ var trap_focus_exports = {};
21
+ __export(trap_focus_exports, {
22
+ manageFocus: () => manageFocus,
23
+ trapFocus: () => trapFocus
24
+ });
25
+ module.exports = __toCommonJS(trap_focus_exports);
26
+
27
+ // src/dom/focusable.js
28
+ function getFocusableElements(container = document.body) {
29
+ return {
30
+ /**
31
+ * Gets the number of keyboard focusable elements.
32
+ * This is useful for checking if there are any focusable elements
33
+ * before attempting to focus them.
34
+ *
35
+ * @returns {number} The number of keyboard focusable elements
36
+ */
37
+ get length() {
38
+ return this.keyboard.length;
39
+ },
40
+ /**
41
+ * Gets all focusable elements within the container that are visible and enabled.
42
+ * This includes elements that can be focused via mouse or programmatically,
43
+ * but may not be keyboard focusable.
44
+ *
45
+ * Elements are considered focusable if they:
46
+ * - Are not disabled
47
+ * - Are not hidden
48
+ * - Are not display:none
49
+ *
50
+ * @returns {HTMLElement[]} Array of focusable elements that are visible and enabled
51
+ */
52
+ get all() {
53
+ const elements = Array.from(
54
+ container.querySelectorAll(
55
+ `a,
56
+ button,
57
+ input,
58
+ textarea,
59
+ select,
60
+ details,
61
+ iframe,
62
+ embed,
63
+ object,
64
+ summary,
65
+ dialog,
66
+ audio[controls],
67
+ video[controls],
68
+ [contenteditable],
69
+ [tabindex]
70
+ `
71
+ )
72
+ );
73
+ return elements.filter((el) => {
74
+ if (el.hasAttribute("disabled")) return false;
75
+ if (el.hasAttribute("hidden")) return false;
76
+ if (window.getComputedStyle(el).display === "none") return false;
77
+ return true;
78
+ });
79
+ },
80
+ /**
81
+ * Gets elements that can be focused via keyboard (tabIndex > -1).
82
+ * These are the elements that will be focused when using the Tab key.
83
+ *
84
+ * @returns {HTMLElement[]} Array of keyboard focusable elements
85
+ */
86
+ get keyboard() {
87
+ return this.all.filter((el) => el instanceof HTMLElement && el.tabIndex > -1);
88
+ },
89
+ /**
90
+ * Alias for keyboard focusable elements.
91
+ * This is provided for semantic clarity in certain contexts.
92
+ *
93
+ * @returns {HTMLElement[]} Array of keyboard focusable elements
94
+ */
95
+ get keyboardOnly() {
96
+ return this.keyboard;
97
+ },
98
+ /**
99
+ * Gets the first keyboard focusable element.
100
+ * This is useful for setting initial focus when opening a modal or dialog.
101
+ *
102
+ * @returns {HTMLElement|null} The first focusable element or null if none exist
103
+ */
104
+ get first() {
105
+ return this.keyboard[0] || null;
106
+ },
107
+ /**
108
+ * Gets the last keyboard focusable element.
109
+ * This is useful for focus trapping when using Shift+Tab.
110
+ *
111
+ * @returns {HTMLElement|null} The last focusable element or null if none exist
112
+ */
113
+ get last() {
114
+ return this.keyboard[this.length - 1] || null;
115
+ },
116
+ /**
117
+ * Gets the next focusable element after the given index.
118
+ * This is useful for implementing custom tab order or focus management.
119
+ *
120
+ * @param {number} index - The current element's index in the keyboard focusable array
121
+ * @returns {HTMLElement|null} The next focusable element or null if none exists
122
+ */
123
+ next(index) {
124
+ return this.keyboard[index + 1] || null;
125
+ },
126
+ /**
127
+ * Gets the previous focusable element before the given index.
128
+ * This is useful for implementing custom tab order or focus management.
129
+ *
130
+ * @param {number} index - The current element's index in the keyboard focusable array
131
+ * @returns {HTMLElement|null} The previous focusable element or null if none exists
132
+ */
133
+ prev(index) {
134
+ return this.keyboard[index - 1] || null;
135
+ }
136
+ };
137
+ }
138
+
139
+ // src/dom/keyboard.js
140
+ function isTab(event) {
141
+ return !event.shiftKey && event.key === "Tab";
142
+ }
143
+ function isShiftTab(event) {
144
+ return event.shiftKey && event.key === "Tab";
145
+ }
146
+
147
+ // src/dom/trap-focus.js
148
+ function trapFocus({ event, focusables }) {
149
+ if (event.key !== "Tab") return;
150
+ if (isTab(event) && document.activeElement === focusables.last) {
151
+ event.preventDefault();
152
+ focusables.first.focus();
153
+ }
154
+ if (isShiftTab(event) && document.activeElement === focusables.first) {
155
+ event.preventDefault();
156
+ focusables.last.focus();
157
+ }
158
+ }
159
+ function manageFocus({
160
+ event,
161
+ triggerNode,
162
+ contentNode,
163
+ focusables,
164
+ tabOutFocus = "next",
165
+ // 'trigger'
166
+ onLeave = function() {
167
+ }
168
+ }) {
169
+ const activeEl = document.activeElement;
170
+ if (activeEl === contentNode && isShiftTab(event)) return backFocus();
171
+ if (activeEl === contentNode && focusables.length === 0 && isTab(event))
172
+ return nextFocus();
173
+ if (activeEl === focusables.last && isTab(event)) return nextFocus();
174
+ if (activeEl === focusables.first && isShiftTab(event)) return backFocus();
175
+ function backFocus() {
176
+ event.preventDefault();
177
+ triggerNode.focus();
178
+ onLeave("back");
179
+ }
180
+ function nextFocus() {
181
+ if (tabOutFocus === "trigger") triggerNode.focus();
182
+ if (tabOutFocus === "next") {
183
+ event.preventDefault();
184
+ const DOMFocusables = getFocusableElements().keyboard;
185
+ const index = DOMFocusables.findIndex((e) => e === triggerNode);
186
+ const next = DOMFocusables[index + 1];
187
+ if (next) next.focus();
188
+ else triggerNode.focus();
189
+ }
190
+ onLeave("forward");
191
+ }
192
+ }
193
+ // Annotate the CommonJS export names for ESM import in node:
194
+ 0 && (module.exports = {
195
+ manageFocus,
196
+ trapFocus
197
+ });
@@ -0,0 +1,43 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/dom/ui/aria-current.js
20
+ var aria_current_exports = {};
21
+ __export(aria_current_exports, {
22
+ markActiveAnchorIn: () => markActiveAnchorIn,
23
+ scrollToElement: () => scrollToElement
24
+ });
25
+ module.exports = __toCommonJS(aria_current_exports);
26
+ function markActiveAnchorIn(container, anchorType = "page") {
27
+ if (!container) return;
28
+ const { pathname } = window.location;
29
+ const element = container.querySelector(`[href="${pathname}"]`);
30
+ if (!element) return;
31
+ element.setAttribute("aria-current", "page");
32
+ return element;
33
+ }
34
+ function scrollToElement(element, { scrollBehaviour = "instant", scrollMargin = "3rem" } = {}) {
35
+ if (!element) return;
36
+ element.style.scrollMarginTop = scrollMargin;
37
+ element.scrollIntoView({ behavior: scrollBehaviour });
38
+ }
39
+ // Annotate the CommonJS export names for ESM import in node:
40
+ 0 && (module.exports = {
41
+ markActiveAnchorIn,
42
+ scrollToElement
43
+ });
@@ -0,0 +1,35 @@
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: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/dom/ui/inconsistent-button-fix.js
20
+ var inconsistent_button_fix_exports = {};
21
+ __export(inconsistent_button_fix_exports, {
22
+ inconsistentButtonFix: () => inconsistentButtonFix
23
+ });
24
+ module.exports = __toCommonJS(inconsistent_button_fix_exports);
25
+ function inconsistentButtonFix() {
26
+ document.addEventListener("click", (event) => {
27
+ if (event.target instanceof HTMLButtonElement) {
28
+ event.target.focus();
29
+ }
30
+ });
31
+ }
32
+ // Annotate the CommonJS export names for ESM import in node:
33
+ 0 && (module.exports = {
34
+ inconsistentButtonFix
35
+ });
@@ -0,0 +1,105 @@
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: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/dom/ui/index.js
20
+ var ui_exports = {};
21
+ __export(ui_exports, {
22
+ findScrollContainer: () => findScrollContainer,
23
+ inconsistentButtonFix: () => inconsistentButtonFix,
24
+ markActiveAnchorIn: () => markActiveAnchorIn,
25
+ scrollToElement: () => scrollToElement,
26
+ traverseAndScramble: () => traverseAndScramble
27
+ });
28
+ module.exports = __toCommonJS(ui_exports);
29
+
30
+ // src/dom/ui/aria-current.js
31
+ function markActiveAnchorIn(container, anchorType = "page") {
32
+ if (!container) return;
33
+ const { pathname } = window.location;
34
+ const element = container.querySelector(`[href="${pathname}"]`);
35
+ if (!element) return;
36
+ element.setAttribute("aria-current", "page");
37
+ return element;
38
+ }
39
+ function scrollToElement(element, { scrollBehaviour = "instant", scrollMargin = "3rem" } = {}) {
40
+ if (!element) return;
41
+ element.style.scrollMarginTop = scrollMargin;
42
+ element.scrollIntoView({ behavior: scrollBehaviour });
43
+ }
44
+
45
+ // src/dom/ui/inconsistent-button-fix.js
46
+ function inconsistentButtonFix() {
47
+ document.addEventListener("click", (event) => {
48
+ if (event.target instanceof HTMLButtonElement) {
49
+ event.target.focus();
50
+ }
51
+ });
52
+ }
53
+
54
+ // src/dom/ui/scroll-container.js
55
+ function findScrollContainer(element, direction = "both") {
56
+ if (!element) return;
57
+ let parent = element.parentElement;
58
+ while (parent) {
59
+ const { overflow, overflowX, overflowY } = getComputedStyle(parent);
60
+ if (direction === "both") {
61
+ if (overflow.includes("auto") || overflow.includes("scroll"))
62
+ return parent;
63
+ }
64
+ if (direction === "horizontal") {
65
+ if (overflowX === "auto" || overflowX === "scroll") return parent;
66
+ }
67
+ if (direction === "vertical") {
68
+ if (overflowY === "auto" || overflowY === "scroll") return parent;
69
+ }
70
+ parent = parent.parentElement;
71
+ }
72
+ return document.documentElement;
73
+ }
74
+
75
+ // src/dom/ui/traverse-and-scramble.js
76
+ function traverseAndScramble(node, { excludes = [] } = {}) {
77
+ if (node instanceof Element && excludes.some((selector) => node.matches(selector))) {
78
+ return;
79
+ }
80
+ node.childNodes.forEach((child) => {
81
+ if (child.nodeType === 3) {
82
+ child.nodeValue = scrambleText(child.nodeValue);
83
+ } else if (child.nodeType === 1 && child instanceof Element) {
84
+ traverseAndScramble(child, { excludes });
85
+ }
86
+ });
87
+ }
88
+ function scrambleText(text) {
89
+ return text.split("").map((char) => {
90
+ if (/^[A-Za-z0-9]$/.test(char)) {
91
+ const randomCharCode = Math.random() < 26 / 36 ? Math.floor(Math.random() * 26) + (char === char.toUpperCase() ? 65 : 97) : Math.floor(Math.random() * 10) + 48;
92
+ return String.fromCharCode(randomCharCode);
93
+ } else {
94
+ return char;
95
+ }
96
+ }).join("");
97
+ }
98
+ // Annotate the CommonJS export names for ESM import in node:
99
+ 0 && (module.exports = {
100
+ findScrollContainer,
101
+ inconsistentButtonFix,
102
+ markActiveAnchorIn,
103
+ scrollToElement,
104
+ traverseAndScramble
105
+ });