@splendidlabz/utils 1.6.0 → 1.7.0

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 (472) hide show
  1. package/CHANGELOG.md +7 -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 +206 -0
  49. package/dist/cjs/lib/date/months.cjs +102 -0
  50. package/dist/cjs/lib/date/time.cjs +115 -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 +1141 -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 +146 -0
  68. package/dist/cjs/lib/objects/flatten.cjs +48 -0
  69. package/dist/cjs/lib/objects/index.cjs +375 -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 +112 -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 +171 -0
  146. package/dist/esm/lib/date/months.js +78 -0
  147. package/dist/esm/lib/date/time.js +82 -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 +1023 -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 +120 -0
  165. package/dist/esm/lib/objects/flatten.js +22 -0
  166. package/dist/esm/lib/objects/index.js +321 -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 +87 -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 +4 -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 -15
  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 +36 -5
  302. package/{lib → src/lib}/objects/mix/mix.js +30 -11
  303. package/{lib → src/lib}/objects/mix/mix.test.js +49 -1
  304. package/src/lib/strings/pluralize.js +2 -0
  305. package/{lib → src/lib}/style/index.js +2 -0
  306. package/tsconfig.json +6 -6
  307. package/tsup.config.js +38 -0
  308. package/tsup.config.mjs +43 -0
  309. package/dist/dom/actions/index.d.ts +0 -3
  310. package/dist/dom/actions/masonry.d.ts +0 -3
  311. package/dist/dom/actions/prefer-horizontal-scroll.d.ts +0 -3
  312. package/dist/dom/actions/sticky.d.ts +0 -3
  313. package/dist/dom/cookie.d.ts +0 -5
  314. package/dist/dom/css-vars.d.ts +0 -4
  315. package/dist/dom/events.d.ts +0 -18
  316. package/dist/dom/font-size.d.ts +0 -5
  317. package/dist/dom/hash.d.ts +0 -1
  318. package/dist/dom/index.d.ts +0 -22
  319. package/dist/dom/media.d.ts +0 -3
  320. package/dist/dom/observers/index.d.ts +0 -3
  321. package/dist/dom/observers/observer.d.ts +0 -1
  322. package/dist/dom/ui/aria-current.d.ts +0 -5
  323. package/dist/dom/ui/index.d.ts +0 -4
  324. package/dist/dom/ui/scroll-container.d.ts +0 -1
  325. package/dist/lib/arrays/index.d.ts +0 -5
  326. package/dist/lib/arrays/shuffle.d.ts +0 -1
  327. package/dist/lib/arrays/unique.d.ts +0 -1
  328. package/dist/lib/auth/index.d.ts +0 -1
  329. package/dist/lib/date/index.d.ts +0 -3
  330. package/dist/lib/date/time.d.ts +0 -8
  331. package/dist/lib/form/form-data.d.ts +0 -7
  332. package/dist/lib/form/index.d.ts +0 -2
  333. package/dist/lib/functions/debounce.d.ts +0 -1
  334. package/dist/lib/functions/env.d.ts +0 -1
  335. package/dist/lib/functions/functional.d.ts +0 -4
  336. package/dist/lib/functions/index.d.ts +0 -5
  337. package/dist/lib/functions/throttle.d.ts +0 -1
  338. package/dist/lib/functions/timeout.d.ts +0 -3
  339. package/dist/lib/hash.d.ts +0 -1
  340. package/dist/lib/index.d.ts +0 -14
  341. package/dist/lib/numbers/index.d.ts +0 -2
  342. package/dist/lib/numbers/math.d.ts +0 -2
  343. package/dist/lib/objects/camelcase-keys.d.ts +0 -1
  344. package/dist/lib/objects/empty.d.ts +0 -2
  345. package/dist/lib/objects/equal.d.ts +0 -2
  346. package/dist/lib/objects/extend.d.ts +0 -4
  347. package/dist/lib/objects/flatten.d.ts +0 -4
  348. package/dist/lib/objects/index.d.ts +0 -13
  349. package/dist/lib/objects/json.d.ts +0 -1
  350. package/dist/lib/objects/loop.d.ts +0 -2
  351. package/dist/lib/objects/mix/mix.d.ts +0 -1
  352. package/dist/lib/objects/normalize-object.d.ts +0 -1
  353. package/dist/lib/objects/omit-empty.d.ts +0 -1
  354. package/dist/lib/objects/size.d.ts +0 -1
  355. package/dist/lib/promises/index.d.ts +0 -1
  356. package/dist/lib/promises/reject.d.ts +0 -3
  357. package/dist/lib/strings/convert-case/convert-case.d.ts +0 -8
  358. package/dist/lib/strings/index.d.ts +0 -5
  359. package/dist/lib/strings/name.d.ts +0 -5
  360. package/dist/lib/strings/pluralize.d.ts +0 -1
  361. package/dist/lib/strings/query-string.d.ts +0 -8
  362. package/dist/lib/style/index.d.ts +0 -1
  363. package/dist/lib/symbols/index.d.ts +0 -1
  364. package/dist/lib/symbols/symbols.d.ts +0 -2
  365. package/dist/node/common.d.ts +0 -1
  366. package/dist/node/dirname.d.ts +0 -7
  367. package/dist/node/file.d.ts +0 -2
  368. package/dist/node/hash.d.ts +0 -1
  369. package/dist/node/index.d.ts +0 -7
  370. package/dist/node/random-string.d.ts +0 -1
  371. package/lib/strings/pluralize.js +0 -2
  372. /package/{dom → src/dom}/accessibility.js +0 -0
  373. /package/{dom → src/dom}/actions/index.js +0 -0
  374. /package/{dom → src/dom}/actions/masonry.js +0 -0
  375. /package/{dom → src/dom}/actions/prefer-horizontal-scroll.js +0 -0
  376. /package/{dom → src/dom}/actions/sticky.js +0 -0
  377. /package/{dom → src/dom}/bounding-box.js +0 -0
  378. /package/{dom → src/dom}/clipboard.js +0 -0
  379. /package/{dom → src/dom}/cookie.js +0 -0
  380. /package/{dom → src/dom}/css-vars.js +0 -0
  381. /package/{dom → src/dom}/events.js +0 -0
  382. /package/{dom → src/dom}/events.test.js +0 -0
  383. /package/{dom → src/dom}/focusable.js +0 -0
  384. /package/{dom → src/dom}/font-size.js +0 -0
  385. /package/{dom → src/dom}/get-element.js +0 -0
  386. /package/{dom → src/dom}/hash.js +0 -0
  387. /package/{dom → src/dom}/keyboard.js +0 -0
  388. /package/{dom → src/dom}/local-store.js +0 -0
  389. /package/{dom → src/dom}/media.js +0 -0
  390. /package/{dom → src/dom}/observers/index.js +0 -0
  391. /package/{dom → src/dom}/observers/intersection-observer.js +0 -0
  392. /package/{dom → src/dom}/observers/mutation-observer.js +0 -0
  393. /package/{dom → src/dom}/observers/observer.js +0 -0
  394. /package/{dom → src/dom}/observers/resize-observer.js +0 -0
  395. /package/{dom → src/dom}/pkce.js +0 -0
  396. /package/{dom → src/dom}/query-params.js +0 -0
  397. /package/{dom → src/dom}/random-string.js +0 -0
  398. /package/{dom → src/dom}/random-string.test.js +0 -0
  399. /package/{dom → src/dom}/sanitize.js +0 -0
  400. /package/{dom → src/dom}/session-store.js +0 -0
  401. /package/{dom → src/dom}/trap-focus.js +0 -0
  402. /package/{dom → src/dom}/ui/inconsistent-button-fix.js +0 -0
  403. /package/{dom → src/dom}/ui/index.js +0 -0
  404. /package/{dom → src/dom}/ui/scroll-container.js +0 -0
  405. /package/{dom → src/dom}/ui/traverse-and-scramble.js +0 -0
  406. /package/{lib → src/lib}/arrays/item-position.js +0 -0
  407. /package/{lib → src/lib}/arrays/join.js +0 -0
  408. /package/{lib → src/lib}/arrays/shuffle.js +0 -0
  409. /package/{lib → src/lib}/arrays/sort.spec.js +0 -0
  410. /package/{lib → src/lib}/arrays/unique.js +0 -0
  411. /package/{lib → src/lib}/auth/index.js +0 -0
  412. /package/{lib → src/lib}/checks.js +0 -0
  413. /package/{lib → src/lib}/date/days.js +0 -0
  414. /package/{lib → src/lib}/date/index.js +0 -0
  415. /package/{lib → src/lib}/date/months.js +0 -0
  416. /package/{lib → src/lib}/form/form-data.js +0 -0
  417. /package/{lib → src/lib}/form/index.js +0 -0
  418. /package/{lib → src/lib}/form/sanitize.js +0 -0
  419. /package/{lib → src/lib}/form/sanitize.spec.js +0 -0
  420. /package/{lib → src/lib}/functions/debounce.js +0 -0
  421. /package/{lib → src/lib}/functions/env.js +0 -0
  422. /package/{lib → src/lib}/functions/functional.js +0 -0
  423. /package/{lib → src/lib}/functions/index.js +0 -0
  424. /package/{lib → src/lib}/functions/throttle.js +0 -0
  425. /package/{lib → src/lib}/functions/timeout.js +0 -0
  426. /package/{lib → src/lib}/hash.js +0 -0
  427. /package/{lib → src/lib}/hash.spec.js +0 -0
  428. /package/{lib → src/lib}/index.js +0 -0
  429. /package/{lib → src/lib}/numbers/index.js +0 -0
  430. /package/{lib → src/lib}/numbers/math.js +0 -0
  431. /package/{lib → src/lib}/objects/camelcase-keys.js +0 -0
  432. /package/{lib → src/lib}/objects/camelcase-keys.test.js +0 -0
  433. /package/{lib → src/lib}/objects/empty.js +0 -0
  434. /package/{lib → src/lib}/objects/equal.js +0 -0
  435. /package/{lib → src/lib}/objects/extend.js +0 -0
  436. /package/{lib → src/lib}/objects/extend.test.js +0 -0
  437. /package/{lib → src/lib}/objects/flatten.js +0 -0
  438. /package/{lib → src/lib}/objects/index.js +0 -0
  439. /package/{lib → src/lib}/objects/json.js +0 -0
  440. /package/{lib → src/lib}/objects/loop.js +0 -0
  441. /package/{lib → src/lib}/objects/loop.test.js +0 -0
  442. /package/{lib → src/lib}/objects/mix/mix.md +0 -0
  443. /package/{lib → src/lib}/objects/nested-property.js +0 -0
  444. /package/{lib → src/lib}/objects/normalize-object.js +0 -0
  445. /package/{lib → src/lib}/objects/omit-empty.js +0 -0
  446. /package/{lib → src/lib}/objects/omit-empty.test.js +0 -0
  447. /package/{lib → src/lib}/objects/size.js +0 -0
  448. /package/{lib → src/lib}/objects/split.js +0 -0
  449. /package/{lib → src/lib}/promises/index.js +0 -0
  450. /package/{lib → src/lib}/promises/reject.js +0 -0
  451. /package/{lib → src/lib}/sse.js +0 -0
  452. /package/{lib → src/lib}/strings/convert-case/convert-case.js +0 -0
  453. /package/{lib → src/lib}/strings/convert-case/convert-case.md +0 -0
  454. /package/{lib → src/lib}/strings/convert-case/convert-case.test.js +0 -0
  455. /package/{lib → src/lib}/strings/index.js +0 -0
  456. /package/{lib → src/lib}/strings/markdown.js +0 -0
  457. /package/{lib → src/lib}/strings/name.js +0 -0
  458. /package/{lib → src/lib}/strings/name.test.js +0 -0
  459. /package/{lib → src/lib}/strings/query-string.js +0 -0
  460. /package/{lib → src/lib}/symbols/index.js +0 -0
  461. /package/{lib → src/lib}/symbols/symbols.js +0 -0
  462. /package/{node → src/node}/common.js +0 -0
  463. /package/{node → src/node}/dirname.js +0 -0
  464. /package/{node → src/node}/file-cache.js +0 -0
  465. /package/{node → src/node}/file.js +0 -0
  466. /package/{node → src/node}/hash.js +0 -0
  467. /package/{node → src/node}/index.js +0 -0
  468. /package/{node → src/node}/pkce.js +0 -0
  469. /package/{node → src/node}/random-string.js +0 -0
  470. /package/{node → src/node}/random-string.test.js +0 -0
  471. /package/{node → src/node}/sanitize.js +0 -0
  472. /package/{node → src/node}/sanitize.spec.js +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @splendidlabz/utils
2
2
 
3
+ ## 1.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 2c149fc: Now supports CJS
8
+ - Many changes! Woo
9
+
3
10
  ## 1.6.0
4
11
 
5
12
  ### Minor Changes
@@ -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/accessibility.js
20
+ var accessibility_exports = {};
21
+ __export(accessibility_exports, {
22
+ checkForAccessibleName: () => checkForAccessibleName,
23
+ hasAccessibleName: () => hasAccessibleName,
24
+ isInvalidAriaPopup: () => isInvalidAriaPopup
25
+ });
26
+ module.exports = __toCommonJS(accessibility_exports);
27
+ function hasAccessibleName(label, labelledBy) {
28
+ if (label || labelledBy) return true;
29
+ return false;
30
+ }
31
+ function checkForAccessibleName({
32
+ name,
33
+ ariaLabel,
34
+ ariaLabelledBy,
35
+ severity = "warn"
36
+ } = {}) {
37
+ if (ariaLabel || ariaLabelledBy) return true;
38
+ const message = `${name} is missing an accessible name. Please provide an accessible name with 'aria-label' or 'aria-labelledby'.`;
39
+ if (severity === "warn") console.warn(message);
40
+ if (severity === "error") console.error(message);
41
+ return false;
42
+ }
43
+ function isInvalidAriaPopup(value) {
44
+ const allowedPopoupValues = ["dialog", "menu", "listbox", "grid", "tree"];
45
+ if (!allowedPopoupValues.includes(value)) return true;
46
+ return false;
47
+ }
48
+ // Annotate the CommonJS export names for ESM import in node:
49
+ 0 && (module.exports = {
50
+ checkForAccessibleName,
51
+ hasAccessibleName,
52
+ isInvalidAriaPopup
53
+ });
@@ -0,0 +1,407 @@
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/actions/index.js
20
+ var actions_exports = {};
21
+ __export(actions_exports, {
22
+ masonry: () => masonry,
23
+ preferHorizontalScroll: () => preferHorizontalScroll,
24
+ sticky: () => sticky
25
+ });
26
+ module.exports = __toCommonJS(actions_exports);
27
+
28
+ // src/dom/get-element.js
29
+ function getNodeType(node) {
30
+ if (node instanceof Element) return "element";
31
+ if (node instanceof NodeList) return "nodelist";
32
+ if (Array.isArray(node)) return "array";
33
+ }
34
+ function getElement(selector) {
35
+ if (!selector) return;
36
+ if (selector instanceof Element) return selector;
37
+ return document.querySelector(selector);
38
+ }
39
+ function getChildrenElements(node) {
40
+ let children = node.children;
41
+ if (children[0]?.nodeName === "ASTRO-SLOT") children = children[0].children;
42
+ return Array.from(children);
43
+ }
44
+
45
+ // src/dom/media.js
46
+ async function imagesLoaded(node) {
47
+ const images = Array.from(node.querySelectorAll("img"));
48
+ const promises = images.map((img) => {
49
+ return new Promise((resolve, reject) => {
50
+ if (img.complete) return resolve();
51
+ img.onload = resolve;
52
+ img.onerror = (e) => {
53
+ reject("Image failed to load");
54
+ };
55
+ });
56
+ });
57
+ return Promise.all(promises);
58
+ }
59
+ async function videosLoaded(node) {
60
+ const videos = Array.from(node.querySelectorAll("video"));
61
+ const promises = videos.map((video) => {
62
+ return new Promise((resolve, reject) => {
63
+ if (video.readyState === 4) return resolve();
64
+ video.onloadedmetadata = resolve;
65
+ video.onerror = reject;
66
+ });
67
+ });
68
+ return Promise.all(promises);
69
+ }
70
+ async function mediaLoaded(node) {
71
+ return Promise.all([imagesLoaded(node), videosLoaded(node)]);
72
+ }
73
+
74
+ // src/dom/events.js
75
+ function addListeners(listeners) {
76
+ listeners.forEach(({ node, event, handler }) => {
77
+ node.addEventListener(event, handler);
78
+ });
79
+ }
80
+ function removeListeners(listeners) {
81
+ listeners.forEach(({ node, event, handler }) => {
82
+ node.removeEventListener(event, handler);
83
+ });
84
+ }
85
+ function dispatchEvent(node, eventName, detail, options = {}) {
86
+ node.dispatchEvent(
87
+ new CustomEvent(eventName, {
88
+ ...options,
89
+ detail
90
+ })
91
+ );
92
+ }
93
+
94
+ // src/dom/observers/observer.js
95
+ function useObserverMethodOnTarget(target, observer, method = "observe", options = void 0) {
96
+ const targetType = getNodeType(target);
97
+ if (targetType === "element") observer[method](target, options);
98
+ if (targetType === "nodelist") {
99
+ const elements = Array.from(target);
100
+ elements.forEach((element) => observer[method](element, options));
101
+ }
102
+ if (targetType === "array") {
103
+ target.forEach((element) => observer[method](element, options));
104
+ }
105
+ }
106
+
107
+ // src/dom/observers/resize-observer.js
108
+ function resizeObserver(target, options) {
109
+ const { callback, ...opts } = options;
110
+ const observer = new ResizeObserver(observerFn);
111
+ if (target === window) target = document.body;
112
+ useObserverMethodOnTarget(target, observer, "observe", opts);
113
+ function observerFn(entries) {
114
+ for (const entry of entries) {
115
+ if (callback) callback({ entry, entries, observer });
116
+ else dispatchEvent(target, "resize-obs", { entry, entries, observer });
117
+ }
118
+ }
119
+ return {
120
+ observe(target2) {
121
+ useObserverMethodOnTarget(target2, observer, "observe", options);
122
+ },
123
+ unobserve(target2) {
124
+ useObserverMethodOnTarget(target2, observer, "unobserve");
125
+ },
126
+ disconnect: (_) => observer.disconnect(),
127
+ destroy: (_) => observer.disconnect()
128
+ };
129
+ }
130
+
131
+ // src/dom/actions/masonry.js
132
+ async function masonry(node) {
133
+ if (nativeMasonrySupport(node)) return;
134
+ const colGap = parseFloat(getComputedStyle(node).columnGap);
135
+ const items = getChildrenElements(node);
136
+ node.style.setProperty("row-gap", "1px", "important");
137
+ node.style.gridAutoRows = "0px";
138
+ try {
139
+ await mediaLoaded(node);
140
+ } catch (e) {
141
+ }
142
+ layout({ colGap, items });
143
+ const obs = resizeObserver(node, {
144
+ async callback(opts) {
145
+ layout({ colGap, items });
146
+ }
147
+ });
148
+ async function layout({ colGap: colGap2, items: items2 }) {
149
+ items2.forEach((item) => {
150
+ const ib = item.getBoundingClientRect();
151
+ item.style.gridRowEnd = `span ${Math.round(ib.height + colGap2)}`;
152
+ });
153
+ }
154
+ return {
155
+ destroy() {
156
+ obs.disconnect();
157
+ }
158
+ };
159
+ }
160
+ function nativeMasonrySupport(node) {
161
+ return getComputedStyle(node).gridTemplateRows === "masonry";
162
+ }
163
+
164
+ // src/dom/bounding-box.js
165
+ function boundingBox(element, { containsPadding = true } = {}) {
166
+ const box = element.getBoundingClientRect();
167
+ const ret = {};
168
+ for (const prop in box) ret[prop] = box[prop];
169
+ if (!containsPadding) {
170
+ const style = getComputedStyle(element);
171
+ const paddingTop = parseFloat(style.paddingTop);
172
+ const paddingRight = parseFloat(style.paddingRight);
173
+ const paddingBottom = parseFloat(style.paddingBottom);
174
+ const paddingLeft = parseFloat(style.paddingLeft);
175
+ ret.x = ret.x + paddingLeft;
176
+ ret.y = ret.y + paddingTop;
177
+ ret.width = ret.width - paddingLeft - paddingRight;
178
+ ret.height = ret.height - paddingTop - paddingBottom;
179
+ ret.top = ret.top + paddingTop;
180
+ ret.bottom = ret.bottom - paddingBottom;
181
+ ret.right = ret.right - paddingRight;
182
+ ret.left = ret.left + paddingLeft;
183
+ }
184
+ ret.xCenter = (ret.left + ret.right) / 2;
185
+ ret.yCenter = (ret.top + ret.bottom) / 2;
186
+ return ret;
187
+ }
188
+ function boundingBoxRelativeToAncestor({ element, ancestorElement }) {
189
+ ancestorElement = ancestorElement || element.parentElement;
190
+ const box = boundingBox(element);
191
+ const ancestorBox = boundingBox(ancestorElement, {
192
+ containsPadding: false
193
+ });
194
+ return {
195
+ top: box.top - ancestorBox.top,
196
+ right: box.right - ancestorBox.right,
197
+ bottom: box.bottom - ancestorBox.bottom,
198
+ left: box.left - ancestorBox.left,
199
+ width: box.width,
200
+ height: box.height,
201
+ xCenter: (box.left + box.right) / 2 - ancestorBox.left,
202
+ yCenter: (box.top + box.bottom) / 2 - ancestorBox.top
203
+ };
204
+ }
205
+
206
+ // src/dom/css-vars.js
207
+ function getCSSVar(element, prop) {
208
+ element = getElement(element);
209
+ return getComputedStyle(element).getPropertyValue(prop);
210
+ }
211
+ function setCSSVar(element, prop, value) {
212
+ element = getElement(element);
213
+ element.style.setProperty(prop, value);
214
+ }
215
+
216
+ // src/lib/objects/omit-empty.js
217
+ function omitEmpty(obj, shallow = false) {
218
+ if (typeof obj !== "object" || obj === null) return obj;
219
+ if (obj instanceof Date) return obj;
220
+ const result = Array.isArray(obj) ? [] : {};
221
+ for (const [key, value] of Object.entries(obj)) {
222
+ if (value === null || value === void 0 || value === "" || typeof value === "object" && !(value instanceof Date) && Object.keys(value).length === 0) {
223
+ continue;
224
+ }
225
+ result[key] = shallow ? value : omitEmpty(value);
226
+ }
227
+ return result;
228
+ }
229
+
230
+ // src/dom/ui/scroll-container.js
231
+ function findScrollContainer(element, direction = "both") {
232
+ if (!element) return;
233
+ let parent = element.parentElement;
234
+ while (parent) {
235
+ const { overflow, overflowX, overflowY } = getComputedStyle(parent);
236
+ if (direction === "both") {
237
+ if (overflow.includes("auto") || overflow.includes("scroll"))
238
+ return parent;
239
+ }
240
+ if (direction === "horizontal") {
241
+ if (overflowX === "auto" || overflowX === "scroll") return parent;
242
+ }
243
+ if (direction === "vertical") {
244
+ if (overflowY === "auto" || overflowY === "scroll") return parent;
245
+ }
246
+ parent = parent.parentElement;
247
+ }
248
+ return document.documentElement;
249
+ }
250
+
251
+ // src/dom/actions/prefer-horizontal-scroll.js
252
+ var DEFAULT_OPTIONS = {
253
+ scrollSnapDelay: 1e3
254
+ };
255
+ function preferHorizontalScroll(node, props = {}) {
256
+ if (!node.classList.contains("scrollable-prefer-horizontal")) return;
257
+ const state = {
258
+ origSnapType: null,
259
+ currentSnapType: null,
260
+ snapTimeoutID: null
261
+ };
262
+ const options = {
263
+ ...DEFAULT_OPTIONS,
264
+ ...omitEmpty({
265
+ scrollSnapDelay: getCSSVar(node, "--scroll-snap-delay")
266
+ }),
267
+ ...omitEmpty(props)
268
+ };
269
+ const listeners = [
270
+ {
271
+ event: "wheel",
272
+ node,
273
+ handler: handleWheel
274
+ },
275
+ {
276
+ event: "pointerenter",
277
+ node,
278
+ handler: handlePointerEnter
279
+ },
280
+ {
281
+ event: "pointerleave",
282
+ node,
283
+ handler: handlePointerLeave
284
+ }
285
+ ];
286
+ addListeners(listeners);
287
+ function handleWheel(event) {
288
+ const direction = event.deltaY > 0 ? "down" : "up";
289
+ const updatedDelta = event.deltaY;
290
+ if (isTrackpad(event)) return false;
291
+ setCSSVar(node, "--snap-type", "none");
292
+ const scrolledAmount = node.scrollLeft;
293
+ const scrollWidth = node.scrollWidth;
294
+ const clientWidth = node.clientWidth;
295
+ const scrollableAmount = scrollWidth - clientWidth;
296
+ if (direction === "down" && scrolledAmount < scrollableAmount) {
297
+ node.scrollLeft += updatedDelta;
298
+ event.preventDefault();
299
+ }
300
+ if (direction === "up" && scrolledAmount > 0) {
301
+ node.scrollLeft += updatedDelta;
302
+ event.preventDefault();
303
+ }
304
+ const { snapTimeoutID } = state;
305
+ if (snapTimeoutID) clearTimeout(snapTimeoutID);
306
+ state.snapTimeoutID = setTimeout((_) => {
307
+ restoreHijackedState(node, state);
308
+ }, options.scrollSnapDelay);
309
+ }
310
+ function handlePointerEnter(event) {
311
+ state.origSnapType = getCSSVar(node, "--snap-type") || "proximity";
312
+ }
313
+ function handlePointerLeave(event) {
314
+ restoreHijackedState(node, state);
315
+ }
316
+ return {
317
+ destroy() {
318
+ removeListeners(listeners);
319
+ }
320
+ };
321
+ }
322
+ function restoreHijackedState(node, state) {
323
+ const scrollLeft = node.scrollLeft;
324
+ setCSSVar(node, "--snap-type", state.origSnapType);
325
+ const finalScrollLeft = node.scrollLeft;
326
+ setCSSVar(node, "--snap-type", "none");
327
+ node.scrollTo({ left: scrollLeft, behavior: "instant" });
328
+ node.scrollTo({ left: finalScrollLeft, behavior: "smooth" });
329
+ setTimeout((_) => {
330
+ setCSSVar(node, "--snap-type", state.origSnapType);
331
+ }, 250);
332
+ }
333
+ function isTrackpad(event) {
334
+ if (event.wheelDeltaY === event.deltaY * -3) return true;
335
+ }
336
+
337
+ // src/dom/actions/sticky.js
338
+ function sticky(node, props = {}) {
339
+ const scrollContainer = findScrollContainer(node);
340
+ let stickyTBLR = getComputedTBLR(node);
341
+ const obs = resizeObserver(node, {
342
+ callback: ({ entry }) => {
343
+ stickyTBLR = getComputedTBLR(node);
344
+ isSticking();
345
+ scrollContainer === document.documentElement ? window.addEventListener("scroll", scrollEventListener) : scrollContainer.addEventListener("scroll", scrollEventListener);
346
+ }
347
+ });
348
+ function scrollEventListener(event) {
349
+ isSticking();
350
+ }
351
+ function isSticking() {
352
+ const { top, bottom, left, right } = stickyTBLR;
353
+ const relativeRect = boundingBoxRelativeToAncestor({
354
+ element: node,
355
+ ancestorElement: scrollContainer
356
+ });
357
+ if (!isNaN(top)) {
358
+ if (relativeRect.top - top <= 1) {
359
+ node.classList.add("sticking");
360
+ } else {
361
+ node.classList.remove("sticking");
362
+ }
363
+ }
364
+ if (!isNaN(bottom)) {
365
+ if (relativeRect.bottom + bottom >= -1) {
366
+ node.classList.add("sticking");
367
+ } else {
368
+ node.classList.remove("sticking");
369
+ }
370
+ }
371
+ if (!isNaN(left)) {
372
+ if (relativeRect.left - left <= 1) {
373
+ node.classList.add("sticking");
374
+ } else {
375
+ node.classList.remove("sticking");
376
+ }
377
+ }
378
+ if (!isNaN(right)) {
379
+ if (relativeRect.right + right >= -1) {
380
+ node.classList.add("sticking");
381
+ } else {
382
+ node.classList.remove("sticking");
383
+ }
384
+ }
385
+ }
386
+ return {
387
+ destroy() {
388
+ obs.disconnect();
389
+ scrollContainer.removeEventListener("scroll", scrollEventListener);
390
+ }
391
+ };
392
+ }
393
+ function getComputedTBLR(element) {
394
+ const style = getComputedStyle(element);
395
+ return {
396
+ top: parseFloat(style.top),
397
+ bottom: parseFloat(style.bottom),
398
+ left: parseFloat(style.left),
399
+ right: parseFloat(style.right)
400
+ };
401
+ }
402
+ // Annotate the CommonJS export names for ESM import in node:
403
+ 0 && (module.exports = {
404
+ masonry,
405
+ preferHorizontalScroll,
406
+ sticky
407
+ });
@@ -0,0 +1,149 @@
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/actions/masonry.js
20
+ var masonry_exports = {};
21
+ __export(masonry_exports, {
22
+ masonry: () => masonry
23
+ });
24
+ module.exports = __toCommonJS(masonry_exports);
25
+
26
+ // src/dom/get-element.js
27
+ function getNodeType(node) {
28
+ if (node instanceof Element) return "element";
29
+ if (node instanceof NodeList) return "nodelist";
30
+ if (Array.isArray(node)) return "array";
31
+ }
32
+ function getChildrenElements(node) {
33
+ let children = node.children;
34
+ if (children[0]?.nodeName === "ASTRO-SLOT") children = children[0].children;
35
+ return Array.from(children);
36
+ }
37
+
38
+ // src/dom/media.js
39
+ async function imagesLoaded(node) {
40
+ const images = Array.from(node.querySelectorAll("img"));
41
+ const promises = images.map((img) => {
42
+ return new Promise((resolve, reject) => {
43
+ if (img.complete) return resolve();
44
+ img.onload = resolve;
45
+ img.onerror = (e) => {
46
+ reject("Image failed to load");
47
+ };
48
+ });
49
+ });
50
+ return Promise.all(promises);
51
+ }
52
+ async function videosLoaded(node) {
53
+ const videos = Array.from(node.querySelectorAll("video"));
54
+ const promises = videos.map((video) => {
55
+ return new Promise((resolve, reject) => {
56
+ if (video.readyState === 4) return resolve();
57
+ video.onloadedmetadata = resolve;
58
+ video.onerror = reject;
59
+ });
60
+ });
61
+ return Promise.all(promises);
62
+ }
63
+ async function mediaLoaded(node) {
64
+ return Promise.all([imagesLoaded(node), videosLoaded(node)]);
65
+ }
66
+
67
+ // src/dom/events.js
68
+ function dispatchEvent(node, eventName, detail, options = {}) {
69
+ node.dispatchEvent(
70
+ new CustomEvent(eventName, {
71
+ ...options,
72
+ detail
73
+ })
74
+ );
75
+ }
76
+
77
+ // src/dom/observers/observer.js
78
+ function useObserverMethodOnTarget(target, observer, method = "observe", options = void 0) {
79
+ const targetType = getNodeType(target);
80
+ if (targetType === "element") observer[method](target, options);
81
+ if (targetType === "nodelist") {
82
+ const elements = Array.from(target);
83
+ elements.forEach((element) => observer[method](element, options));
84
+ }
85
+ if (targetType === "array") {
86
+ target.forEach((element) => observer[method](element, options));
87
+ }
88
+ }
89
+
90
+ // src/dom/observers/resize-observer.js
91
+ function resizeObserver(target, options) {
92
+ const { callback, ...opts } = options;
93
+ const observer = new ResizeObserver(observerFn);
94
+ if (target === window) target = document.body;
95
+ useObserverMethodOnTarget(target, observer, "observe", opts);
96
+ function observerFn(entries) {
97
+ for (const entry of entries) {
98
+ if (callback) callback({ entry, entries, observer });
99
+ else dispatchEvent(target, "resize-obs", { entry, entries, observer });
100
+ }
101
+ }
102
+ return {
103
+ observe(target2) {
104
+ useObserverMethodOnTarget(target2, observer, "observe", options);
105
+ },
106
+ unobserve(target2) {
107
+ useObserverMethodOnTarget(target2, observer, "unobserve");
108
+ },
109
+ disconnect: (_) => observer.disconnect(),
110
+ destroy: (_) => observer.disconnect()
111
+ };
112
+ }
113
+
114
+ // src/dom/actions/masonry.js
115
+ async function masonry(node) {
116
+ if (nativeMasonrySupport(node)) return;
117
+ const colGap = parseFloat(getComputedStyle(node).columnGap);
118
+ const items = getChildrenElements(node);
119
+ node.style.setProperty("row-gap", "1px", "important");
120
+ node.style.gridAutoRows = "0px";
121
+ try {
122
+ await mediaLoaded(node);
123
+ } catch (e) {
124
+ }
125
+ layout({ colGap, items });
126
+ const obs = resizeObserver(node, {
127
+ async callback(opts) {
128
+ layout({ colGap, items });
129
+ }
130
+ });
131
+ async function layout({ colGap: colGap2, items: items2 }) {
132
+ items2.forEach((item) => {
133
+ const ib = item.getBoundingClientRect();
134
+ item.style.gridRowEnd = `span ${Math.round(ib.height + colGap2)}`;
135
+ });
136
+ }
137
+ return {
138
+ destroy() {
139
+ obs.disconnect();
140
+ }
141
+ };
142
+ }
143
+ function nativeMasonrySupport(node) {
144
+ return getComputedStyle(node).gridTemplateRows === "masonry";
145
+ }
146
+ // Annotate the CommonJS export names for ESM import in node:
147
+ 0 && (module.exports = {
148
+ masonry
149
+ });