@splendidlabz/utils 1.11.3 → 1.11.5

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 (408) hide show
  1. package/dist/cjs/dom/accessibility.cjs +53 -0
  2. package/dist/cjs/dom/actions/index.cjs +410 -0
  3. package/dist/cjs/dom/actions/masonry.cjs +152 -0
  4. package/dist/cjs/dom/actions/prefer-horizontal-scroll.cjs +157 -0
  5. package/dist/cjs/dom/actions/sticky.cjs +213 -0
  6. package/dist/cjs/dom/bounding-box.cjs +70 -0
  7. package/dist/cjs/dom/clipboard.cjs +37 -0
  8. package/dist/cjs/dom/cookie.cjs +57 -0
  9. package/dist/cjs/dom/css-vars.cjs +57 -0
  10. package/dist/cjs/dom/events.cjs +59 -0
  11. package/{src/dom/focusable.js → dist/cjs/dom/focusable.cjs} +51 -73
  12. package/dist/cjs/dom/font-size.cjs +80 -0
  13. package/dist/cjs/dom/get-element.cjs +98 -0
  14. package/dist/cjs/dom/hash.cjs +35 -0
  15. package/dist/cjs/dom/index.cjs +1267 -0
  16. package/dist/cjs/dom/keyboard.cjs +51 -0
  17. package/dist/cjs/dom/local-store.cjs +79 -0
  18. package/dist/cjs/dom/media.cjs +59 -0
  19. package/dist/cjs/dom/observers/index.cjs +253 -0
  20. package/dist/cjs/dom/observers/intersection-observer.cjs +91 -0
  21. package/dist/cjs/dom/observers/mutation-observer.cjs +95 -0
  22. package/dist/cjs/dom/observers/observer.cjs +48 -0
  23. package/dist/cjs/dom/observers/resize-observer.cjs +84 -0
  24. package/dist/cjs/dom/observers/scroll-observer.cjs +177 -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 +63 -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/callback.cjs +31 -0
  55. package/dist/cjs/lib/functions/debounce.cjs +43 -0
  56. package/dist/cjs/lib/functions/env.cjs +32 -0
  57. package/dist/cjs/lib/functions/functional.cjs +82 -0
  58. package/dist/cjs/lib/functions/index.cjs +142 -0
  59. package/dist/cjs/lib/functions/throttle.cjs +38 -0
  60. package/dist/cjs/lib/functions/timeout.cjs +41 -0
  61. package/dist/cjs/lib/hash.cjs +43 -0
  62. package/dist/cjs/lib/index.cjs +1178 -0
  63. package/dist/cjs/lib/numbers/index.cjs +49 -0
  64. package/dist/cjs/lib/numbers/math.cjs +36 -0
  65. package/dist/cjs/lib/objects/camelcase-keys.cjs +80 -0
  66. package/dist/cjs/lib/objects/empty.cjs +39 -0
  67. package/dist/cjs/lib/objects/equal.cjs +47 -0
  68. package/dist/cjs/lib/objects/extend.cjs +147 -0
  69. package/dist/cjs/lib/objects/flatten.cjs +48 -0
  70. package/dist/cjs/lib/objects/index.cjs +378 -0
  71. package/dist/cjs/lib/objects/json.cjs +35 -0
  72. package/dist/cjs/lib/objects/loop.cjs +40 -0
  73. package/dist/cjs/lib/objects/mix/mix.cjs +115 -0
  74. package/dist/cjs/lib/objects/nested-property.cjs +45 -0
  75. package/dist/cjs/lib/objects/normalize-object.cjs +106 -0
  76. package/dist/cjs/lib/objects/omit-empty.cjs +40 -0
  77. package/dist/cjs/lib/objects/size.cjs +63 -0
  78. package/dist/cjs/lib/objects/split.cjs +39 -0
  79. package/dist/cjs/lib/promises/index.cjs +69 -0
  80. package/dist/cjs/lib/promises/reject.cjs +67 -0
  81. package/dist/cjs/lib/sse.cjs +99 -0
  82. package/dist/cjs/lib/strings/convert-case/convert-case.cjs +96 -0
  83. package/dist/cjs/lib/strings/index.cjs +197 -0
  84. package/dist/cjs/lib/strings/markdown.cjs +76 -0
  85. package/dist/cjs/lib/strings/name.cjs +46 -0
  86. package/dist/cjs/lib/strings/pluralize.cjs +40 -0
  87. package/dist/cjs/lib/strings/query-string.cjs +43 -0
  88. package/dist/cjs/lib/style/index.cjs +64 -0
  89. package/dist/cjs/lib/symbols/index.cjs +40 -0
  90. package/dist/cjs/lib/symbols/symbols.cjs +38 -0
  91. package/dist/cjs/node/dirname.cjs +49 -0
  92. package/dist/cjs/node/file-cache.cjs +200 -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 +296 -0
  96. package/dist/cjs/node/pkce.cjs +64 -0
  97. package/dist/cjs/node/random-string.cjs +43 -0
  98. package/dist/cjs/node/sanitize.cjs +65 -0
  99. package/dist/cjs/node/uuid.cjs +42 -0
  100. package/dist/esm/dom/accessibility.js +26 -0
  101. package/dist/esm/dom/actions/index.js +3 -0
  102. package/dist/esm/dom/actions/masonry.js +38 -0
  103. package/dist/esm/dom/actions/prefer-horizontal-scroll.js +90 -0
  104. package/dist/esm/dom/actions/sticky.js +70 -0
  105. package/dist/esm/dom/bounding-box.js +44 -0
  106. package/dist/esm/dom/clipboard.js +12 -0
  107. package/dist/esm/dom/cookie.js +31 -0
  108. package/dist/esm/dom/css-vars.js +21 -0
  109. package/dist/esm/dom/events.js +31 -0
  110. package/dist/esm/dom/focusable.js +117 -0
  111. package/dist/esm/dom/font-size.js +40 -0
  112. package/dist/esm/dom/get-element.js +66 -0
  113. package/dist/esm/dom/hash.js +10 -0
  114. package/dist/esm/dom/index.js +23 -0
  115. package/dist/esm/dom/keyboard.js +22 -0
  116. package/{src → dist/esm}/dom/local-store.js +16 -28
  117. package/dist/esm/dom/media.js +32 -0
  118. package/dist/esm/dom/observers/index.js +4 -0
  119. package/dist/esm/dom/observers/intersection-observer.js +36 -0
  120. package/dist/esm/dom/observers/mutation-observer.js +40 -0
  121. package/dist/esm/dom/observers/observer.js +15 -0
  122. package/dist/esm/dom/observers/resize-observer.js +29 -0
  123. package/dist/esm/dom/observers/scroll-observer.js +95 -0
  124. package/dist/esm/dom/pkce.js +20 -0
  125. package/dist/esm/dom/query-params.js +13 -0
  126. package/dist/esm/dom/random-string.js +12 -0
  127. package/dist/esm/dom/sanitize.js +8 -0
  128. package/dist/esm/dom/session-store.js +24 -0
  129. package/dist/esm/dom/spam-prevention.js +25 -0
  130. package/dist/esm/dom/trap-focus.js +51 -0
  131. package/dist/esm/dom/ui/aria-current.js +17 -0
  132. package/dist/esm/dom/ui/inconsistent-button-fix.js +10 -0
  133. package/dist/esm/dom/ui/index.js +4 -0
  134. package/dist/esm/dom/ui/scroll-container.js +22 -0
  135. package/dist/esm/dom/ui/traverse-and-scramble.js +25 -0
  136. package/dist/esm/lib/arrays/index.js +6 -0
  137. package/dist/esm/lib/arrays/item-position.js +15 -0
  138. package/dist/esm/lib/arrays/join.js +12 -0
  139. package/dist/esm/lib/arrays/shuffle.js +17 -0
  140. package/dist/esm/lib/arrays/sort.js +36 -0
  141. package/dist/esm/lib/arrays/split-array.js +16 -0
  142. package/dist/esm/lib/arrays/unique.js +6 -0
  143. package/dist/esm/lib/auth/index.js +1 -0
  144. package/dist/esm/lib/auth/route-manager.js +25 -0
  145. package/dist/esm/lib/checks.js +34 -0
  146. package/dist/esm/lib/date/days.js +12 -0
  147. package/dist/esm/lib/date/index.js +3 -0
  148. package/dist/esm/lib/date/months.js +77 -0
  149. package/dist/esm/lib/date/time.js +75 -0
  150. package/dist/esm/lib/form/form-data.js +57 -0
  151. package/dist/esm/lib/form/index.js +2 -0
  152. package/dist/esm/lib/form/sanitize.js +34 -0
  153. package/dist/esm/lib/functions/callback.js +6 -0
  154. package/dist/esm/lib/functions/debounce.js +18 -0
  155. package/dist/esm/lib/functions/env.js +7 -0
  156. package/dist/esm/lib/functions/functional.js +52 -0
  157. package/dist/esm/lib/functions/index.js +5 -0
  158. package/dist/esm/lib/functions/throttle.js +13 -0
  159. package/dist/esm/lib/functions/timeout.js +14 -0
  160. package/dist/esm/lib/hash.js +18 -0
  161. package/dist/esm/lib/index.js +14 -0
  162. package/dist/esm/lib/numbers/index.js +11 -0
  163. package/dist/esm/lib/numbers/math.js +10 -0
  164. package/dist/esm/lib/objects/camelcase-keys.js +16 -0
  165. package/dist/esm/lib/objects/empty.js +13 -0
  166. package/dist/esm/lib/objects/equal.js +11 -0
  167. package/dist/esm/lib/objects/extend.js +13 -0
  168. package/dist/esm/lib/objects/flatten.js +17 -0
  169. package/dist/esm/lib/objects/index.js +13 -0
  170. package/dist/esm/lib/objects/json.js +10 -0
  171. package/dist/esm/lib/objects/loop.js +14 -0
  172. package/dist/esm/lib/objects/mix/mix.js +88 -0
  173. package/dist/esm/lib/objects/nested-property.js +18 -0
  174. package/dist/esm/lib/objects/normalize-object.js +9 -0
  175. package/dist/esm/lib/objects/omit-empty.js +15 -0
  176. package/dist/esm/lib/objects/size.js +38 -0
  177. package/dist/esm/lib/objects/split.js +14 -0
  178. package/dist/esm/lib/promises/index.js +1 -0
  179. package/dist/esm/lib/promises/reject.js +17 -0
  180. package/dist/esm/lib/sse.js +50 -0
  181. package/dist/esm/lib/strings/convert-case/convert-case.js +64 -0
  182. package/dist/esm/lib/strings/index.js +5 -0
  183. package/dist/esm/lib/strings/markdown.js +40 -0
  184. package/dist/esm/lib/strings/name.js +21 -0
  185. package/dist/esm/lib/strings/pluralize.js +5 -0
  186. package/dist/esm/lib/strings/query-string.js +16 -0
  187. package/dist/esm/lib/style/index.js +12 -0
  188. package/dist/esm/lib/symbols/index.js +1 -0
  189. package/dist/esm/lib/symbols/symbols.js +12 -0
  190. package/dist/esm/node/context.js +0 -0
  191. package/dist/esm/node/dirname.js +13 -0
  192. package/dist/esm/node/file-cache.js +121 -0
  193. package/dist/esm/node/file.js +14 -0
  194. package/dist/esm/node/hash.js +7 -0
  195. package/dist/esm/node/index.js +7 -0
  196. package/dist/esm/node/pkce.js +20 -0
  197. package/dist/esm/node/random-string.js +8 -0
  198. package/dist/esm/node/sanitize.js +8 -0
  199. package/dist/esm/node/uuid.js +7 -0
  200. package/dist/types/dom/accessibility.d.cts +30 -0
  201. package/dist/types/dom/actions/index.d.cts +3 -0
  202. package/dist/types/dom/actions/masonry.d.cts +5 -0
  203. package/dist/types/dom/actions/prefer-horizontal-scroll.d.cts +5 -0
  204. package/dist/types/dom/actions/sticky.d.cts +5 -0
  205. package/{src/dom/bounding-box.js → dist/types/dom/bounding-box.d.cts} +8 -49
  206. package/dist/types/dom/clipboard.d.cts +7 -0
  207. package/dist/types/dom/cookie.d.cts +7 -0
  208. package/dist/types/dom/css-vars.d.cts +6 -0
  209. package/{src/dom/events.js → dist/types/dom/events.d.cts} +52 -31
  210. package/dist/types/dom/focusable.d.cts +78 -0
  211. package/dist/types/dom/font-size.d.cts +8 -0
  212. package/{src/dom/get-element.js → dist/types/dom/get-element.d.cts} +25 -99
  213. package/dist/types/dom/hash.d.cts +3 -0
  214. package/dist/types/dom/index.d.cts +31 -0
  215. package/{src/dom/keyboard.js → dist/types/dom/keyboard.d.cts} +7 -19
  216. package/dist/types/dom/local-store.d.cts +31 -0
  217. package/dist/types/dom/media.d.cts +5 -0
  218. package/dist/types/dom/observers/index.d.cts +4 -0
  219. package/dist/types/dom/observers/intersection-observer.d.cts +10 -0
  220. package/dist/types/dom/observers/mutation-observer.d.cts +9 -0
  221. package/dist/types/dom/observers/observer.d.cts +3 -0
  222. package/{src/dom/observers/resize-observer.js → dist/types/dom/observers/resize-observer.d.cts} +6 -32
  223. package/dist/types/dom/observers/scroll-observer.d.cts +40 -0
  224. package/dist/types/dom/pkce.d.cts +8 -0
  225. package/dist/types/dom/query-params.d.cts +6 -0
  226. package/dist/types/dom/random-string.d.cts +9 -0
  227. package/dist/types/dom/sanitize.d.cts +10 -0
  228. package/dist/types/dom/session-store.d.cts +7 -0
  229. package/dist/types/dom/spam-prevention.d.cts +14 -0
  230. package/dist/types/dom/trap-focus.d.cts +32 -0
  231. package/dist/types/dom/ui/aria-current.d.cts +7 -0
  232. package/{src/dom/ui/inconsistent-button-fix.js → dist/types/dom/ui/inconsistent-button-fix.d.cts} +5 -11
  233. package/dist/types/dom/ui/index.d.cts +4 -0
  234. package/dist/types/dom/ui/scroll-container.d.cts +3 -0
  235. package/dist/types/dom/ui/traverse-and-scramble.d.cts +21 -0
  236. package/dist/types/lib/arrays/index.d.cts +6 -0
  237. package/{src/lib/arrays/item-position.js → dist/types/lib/arrays/item-position.d.cts} +5 -12
  238. package/{src/lib/arrays/join.js → dist/types/lib/arrays/join.d.cts} +4 -9
  239. package/dist/types/lib/arrays/shuffle.d.cts +3 -0
  240. package/dist/types/lib/arrays/sort.d.cts +32 -0
  241. package/dist/types/lib/arrays/split-array.d.cts +6 -0
  242. package/dist/types/lib/arrays/unique.d.cts +3 -0
  243. package/dist/types/lib/auth/index.d.cts +1 -0
  244. package/dist/types/lib/auth/route-manager.d.cts +28 -0
  245. package/dist/types/lib/checks.d.cts +33 -0
  246. package/dist/types/lib/date/days.d.cts +7 -0
  247. package/dist/types/lib/date/index.d.cts +3 -0
  248. package/dist/types/lib/date/months.d.cts +11 -0
  249. package/dist/types/lib/date/time.d.cts +21 -0
  250. package/dist/types/lib/form/form-data.d.cts +9 -0
  251. package/dist/types/lib/form/index.d.cts +2 -0
  252. package/{src/lib/form/sanitize.js → dist/types/lib/form/sanitize.d.cts} +19 -39
  253. package/{src/lib/functions/callback.js → dist/types/lib/functions/callback.d.cts} +3 -3
  254. package/dist/types/lib/functions/debounce.d.cts +3 -0
  255. package/dist/types/lib/functions/env.d.cts +3 -0
  256. package/{src/lib/functions/functional.js → dist/types/lib/functions/functional.d.cts} +8 -49
  257. package/dist/types/lib/functions/index.d.cts +5 -0
  258. package/dist/types/lib/functions/throttle.d.cts +3 -0
  259. package/dist/types/lib/functions/timeout.d.cts +5 -0
  260. package/dist/types/lib/hash.d.cts +3 -0
  261. package/dist/types/lib/index.d.cts +43 -0
  262. package/dist/types/lib/numbers/index.d.cts +5 -0
  263. package/dist/types/lib/numbers/math.d.cts +4 -0
  264. package/dist/types/lib/objects/camelcase-keys.d.cts +3 -0
  265. package/dist/types/lib/objects/empty.d.cts +4 -0
  266. package/dist/types/lib/objects/equal.d.cts +4 -0
  267. package/dist/types/lib/objects/extend.d.cts +6 -0
  268. package/dist/types/lib/objects/flatten.d.cts +6 -0
  269. package/dist/types/lib/objects/index.d.cts +13 -0
  270. package/dist/types/lib/objects/json.d.cts +3 -0
  271. package/dist/types/lib/objects/loop.d.cts +4 -0
  272. package/dist/types/lib/objects/mix/mix.d.cts +44 -0
  273. package/{src/lib/objects/nested-property.js → dist/types/lib/objects/nested-property.d.cts} +4 -21
  274. package/dist/types/lib/objects/normalize-object.d.cts +3 -0
  275. package/dist/types/lib/objects/omit-empty.d.cts +3 -0
  276. package/dist/types/lib/objects/size.d.cts +3 -0
  277. package/dist/types/lib/objects/split.d.cts +14 -0
  278. package/dist/types/lib/promises/index.d.cts +1 -0
  279. package/dist/types/lib/promises/reject.d.cts +5 -0
  280. package/dist/types/lib/sse.d.cts +18 -0
  281. package/dist/types/lib/strings/convert-case/convert-case.d.cts +10 -0
  282. package/dist/types/lib/strings/index.d.cts +5 -0
  283. package/dist/types/lib/strings/markdown.d.cts +25 -0
  284. package/dist/types/lib/strings/name.d.cts +7 -0
  285. package/dist/types/lib/strings/pluralize.d.cts +3 -0
  286. package/dist/types/lib/strings/query-string.d.cts +10 -0
  287. package/dist/types/lib/style/index.d.cts +3 -0
  288. package/dist/types/lib/symbols/index.d.cts +1 -0
  289. package/dist/types/lib/symbols/symbols.d.cts +4 -0
  290. package/dist/types/node/context.d.cts +2 -0
  291. package/dist/types/node/dirname.d.cts +9 -0
  292. package/dist/types/node/file-cache.d.cts +56 -0
  293. package/dist/types/node/file.d.cts +4 -0
  294. package/dist/types/node/hash.d.cts +3 -0
  295. package/dist/types/node/index.d.cts +7 -0
  296. package/dist/types/node/pkce.d.cts +14 -0
  297. package/dist/types/node/random-string.d.cts +3 -0
  298. package/{src/node/sanitize.js → dist/types/node/sanitize.d.cts} +3 -6
  299. package/dist/types/node/uuid.d.cts +3 -0
  300. package/package.json +18 -15
  301. package/CHANGELOG.md +0 -237
  302. package/eslint.config.js +0 -2
  303. package/src/dom/accessibility.js +0 -58
  304. package/src/dom/actions/index.js +0 -3
  305. package/src/dom/actions/masonry.js +0 -43
  306. package/src/dom/actions/prefer-horizontal-scroll.js +0 -121
  307. package/src/dom/actions/sticky.js +0 -85
  308. package/src/dom/clipboard.js +0 -14
  309. package/src/dom/cookie.js +0 -32
  310. package/src/dom/css-vars.js +0 -19
  311. package/src/dom/font-size.js +0 -40
  312. package/src/dom/hash.js +0 -9
  313. package/src/dom/index.js +0 -23
  314. package/src/dom/media.js +0 -30
  315. package/src/dom/observers/index.js +0 -4
  316. package/src/dom/observers/intersection-observer.js +0 -43
  317. package/src/dom/observers/mutation-observer.js +0 -51
  318. package/src/dom/observers/observer.js +0 -18
  319. package/src/dom/observers/scroll-observer.js +0 -146
  320. package/src/dom/pkce.js +0 -34
  321. package/src/dom/query-params.js +0 -14
  322. package/src/dom/random-string.js +0 -18
  323. package/src/dom/random-string.test.js +0 -13
  324. package/src/dom/sanitize.js +0 -16
  325. package/src/dom/session-store.js +0 -29
  326. package/src/dom/spam-prevention.js +0 -40
  327. package/src/dom/trap-focus.js +0 -70
  328. package/src/dom/ui/aria-current.js +0 -20
  329. package/src/dom/ui/index.js +0 -4
  330. package/src/dom/ui/scroll-container.js +0 -25
  331. package/src/dom/ui/traverse-and-scramble.js +0 -61
  332. package/src/lib/arrays/index.js +0 -6
  333. package/src/lib/arrays/shuffle.js +0 -21
  334. package/src/lib/arrays/sort.js +0 -88
  335. package/src/lib/arrays/sort.spec.js +0 -123
  336. package/src/lib/arrays/split-array.js +0 -15
  337. package/src/lib/arrays/unique.js +0 -3
  338. package/src/lib/auth/index.js +0 -1
  339. package/src/lib/auth/route-manager.js +0 -45
  340. package/src/lib/checks.js +0 -57
  341. package/src/lib/date/days.js +0 -9
  342. package/src/lib/date/index.js +0 -3
  343. package/src/lib/date/months.js +0 -74
  344. package/src/lib/date/time.js +0 -83
  345. package/src/lib/form/form-data.js +0 -73
  346. package/src/lib/form/index.js +0 -2
  347. package/src/lib/form/sanitize.spec.js +0 -126
  348. package/src/lib/functions/debounce.js +0 -18
  349. package/src/lib/functions/env.js +0 -5
  350. package/src/lib/functions/functional.test.js +0 -196
  351. package/src/lib/functions/index.js +0 -5
  352. package/src/lib/functions/throttle.js +0 -11
  353. package/src/lib/functions/timeout.js +0 -15
  354. package/src/lib/hash.js +0 -18
  355. package/src/lib/hash.spec.js +0 -163
  356. package/src/lib/index.js +0 -14
  357. package/src/lib/numbers/index.js +0 -12
  358. package/src/lib/numbers/math.js +0 -9
  359. package/src/lib/numbers/split-unit.test.js +0 -45
  360. package/src/lib/objects/camelcase-keys.js +0 -17
  361. package/src/lib/objects/camelcase-keys.test.js +0 -72
  362. package/src/lib/objects/empty.js +0 -10
  363. package/src/lib/objects/equal.js +0 -9
  364. package/src/lib/objects/extend.js +0 -16
  365. package/src/lib/objects/extend.test.js +0 -35
  366. package/src/lib/objects/flatten.js +0 -19
  367. package/src/lib/objects/index.js +0 -13
  368. package/src/lib/objects/json.js +0 -7
  369. package/src/lib/objects/loop.js +0 -11
  370. package/src/lib/objects/loop.test.js +0 -31
  371. package/src/lib/objects/mix/mix.js +0 -191
  372. package/src/lib/objects/mix/mix.md +0 -78
  373. package/src/lib/objects/mix/mix.test.js +0 -445
  374. package/src/lib/objects/normalize-object.js +0 -10
  375. package/src/lib/objects/omit-empty.js +0 -23
  376. package/src/lib/objects/omit-empty.test.js +0 -85
  377. package/src/lib/objects/size.js +0 -41
  378. package/src/lib/objects/split.js +0 -19
  379. package/src/lib/promises/index.js +0 -1
  380. package/src/lib/promises/reject.js +0 -17
  381. package/src/lib/sse.js +0 -61
  382. package/src/lib/strings/convert-case/convert-case.js +0 -86
  383. package/src/lib/strings/convert-case/convert-case.md +0 -44
  384. package/src/lib/strings/convert-case/convert-case.test.js +0 -50
  385. package/src/lib/strings/index.js +0 -5
  386. package/src/lib/strings/markdown.js +0 -71
  387. package/src/lib/strings/markdown.spec.js +0 -73
  388. package/src/lib/strings/name.js +0 -24
  389. package/src/lib/strings/name.test.js +0 -67
  390. package/src/lib/strings/pluralize.js +0 -2
  391. package/src/lib/strings/query-string.js +0 -18
  392. package/src/lib/style/index.js +0 -13
  393. package/src/lib/symbols/index.js +0 -1
  394. package/src/lib/symbols/symbols.js +0 -9
  395. package/src/node/dirname.js +0 -17
  396. package/src/node/file-cache.js +0 -184
  397. package/src/node/file.js +0 -13
  398. package/src/node/hash.js +0 -5
  399. package/src/node/index.js +0 -7
  400. package/src/node/pkce.js +0 -33
  401. package/src/node/random-string.js +0 -10
  402. package/src/node/random-string.test.js +0 -15
  403. package/src/node/sanitize.spec.js +0 -142
  404. package/src/node/uuid.js +0 -5
  405. package/tsconfig.json +0 -23
  406. package/tsup.config.js +0 -38
  407. package/tsup.config.mjs +0 -63
  408. /package/{src/node/context.js → dist/cjs/node/context.cjs} +0 -0
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Split on object up based on the keys provided.
3
+ * @param {Object} obj
4
+ * @param {Array} keys
5
+ * @returns
6
+ */
7
+ declare function splitObject(obj: any, keys: any[]): {
8
+ picked: {};
9
+ omitted: any;
10
+ p: {};
11
+ o: any;
12
+ };
13
+
14
+ export { splitObject };
@@ -0,0 +1 @@
1
+ export { reject } from './reject.cjs';
@@ -0,0 +1,5 @@
1
+ declare function reject(props: any, { includeStack }?: {
2
+ includeStack?: boolean;
3
+ }): Promise<never>;
4
+
5
+ export { reject };
@@ -0,0 +1,18 @@
1
+ declare function createSSE({ event, data, id, retry }: {
2
+ event: any;
3
+ data: any;
4
+ id: any;
5
+ retry: any;
6
+ }): string;
7
+ /**
8
+ * Parses a single SSE message into a structured object
9
+ * @param {string} message - The raw SSE message
10
+ * @returns {Object|null} The parsed message or null if invalid
11
+ * @property {string} [event] - The event type if specified
12
+ * @property {string|Object} data - The message data (parsed as JSON if possible)
13
+ * @property {string} [id] - The message ID if specified
14
+ * @property {number} [retry] - The retry interval if specified
15
+ */
16
+ declare function parseSSE(message: string): any | null;
17
+
18
+ export { createSSE, parseSSE };
@@ -0,0 +1,10 @@
1
+ declare function toKebab(string: any): any;
2
+ declare function toCamel(string: any): any;
3
+ declare function toPascal(string: any): any;
4
+ declare function toTitle(string: any): any;
5
+ declare function toSlug(string: any): any;
6
+ declare function toSentence(string: any): any;
7
+ declare function toUpper(string: any): any;
8
+ declare function toLower(string: any): any;
9
+
10
+ export { toCamel, toKebab, toLower, toPascal, toSentence, toSlug, toTitle, toUpper };
@@ -0,0 +1,5 @@
1
+ export { toCamel, toKebab, toLower, toPascal, toSentence, toSlug, toTitle, toUpper } from './convert-case/convert-case.cjs';
2
+ export { markdown, treatMarkdownWhitespace } from './markdown.cjs';
3
+ export { parseFullName } from './name.cjs';
4
+ export { pluralize } from './pluralize.cjs';
5
+ export { plural, stripNumbers, toQueryString } from './query-string.cjs';
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Converts markdown content to HTML with whitespace handling
3
+ * @param {string} content - Markdown content to convert
4
+ * @param {Object} [options={}] - Conversion options
5
+ * @param {boolean} [options.inline=false] - Whether content should be treated as inline markdown
6
+ * @returns {string} Converted HTML string
7
+ */
8
+ declare function markdown(content: string, options?: {
9
+ inline?: boolean;
10
+ }): string;
11
+ /**
12
+ * Handles whitespace in markdown content to ensure proper rendering
13
+ * @param {string} content - Markdown content to process
14
+ * @param {Object} [options={}] - Processing options
15
+ * @param {boolean} [options.inline=false] - Whether content is inline markdown
16
+ * @returns {{ content: string, inline: boolean }} Processed content and inline status
17
+ */
18
+ declare function treatMarkdownWhitespace(content: string, { inline }?: {
19
+ inline?: boolean;
20
+ }): {
21
+ content: string;
22
+ inline: boolean;
23
+ };
24
+
25
+ export { markdown, treatMarkdownWhitespace };
@@ -0,0 +1,7 @@
1
+ declare function parseFullName(name: any): {
2
+ firstName: any;
3
+ middleName: any;
4
+ lastName: any;
5
+ };
6
+
7
+ export { parseFullName };
@@ -0,0 +1,3 @@
1
+ declare const pluralize: any;
2
+
3
+ export { pluralize };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Converts object into a query string
3
+ * @param {Object} object
4
+ * @returns
5
+ */
6
+ declare function toQueryString(object: any): string;
7
+ declare function plural(count: any, noun: any, suffix?: string): string;
8
+ declare function stripNumbers(string: any): any;
9
+
10
+ export { plural, stripNumbers, toQueryString };
@@ -0,0 +1,3 @@
1
+ declare function toStyleString(style: any): string;
2
+
3
+ export { toStyleString };
@@ -0,0 +1 @@
1
+ export { getSymbol, getSymbolValue } from './symbols.cjs';
@@ -0,0 +1,4 @@
1
+ declare function getSymbol(object: any, description: any): symbol;
2
+ declare function getSymbolValue(object: any, description: any): any;
3
+
4
+ export { getSymbol, getSymbolValue };
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Returns __dirname
3
+ * @param url — import.meta.url
4
+ * @returns
5
+ */
6
+ declare function __dirname$1(url: any): string;
7
+ declare function dirname(url: any): string;
8
+
9
+ export { __dirname$1 as __dirname, dirname };
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Creates a file cache instance for managing cached files in a directory
3
+ * @param {string} dir - Absolute or relative path to cache directory
4
+ * @returns {Promise<object>} Cache instance
5
+ * @property {function(string): Promise<number>} cacheAt - Returns the cached file's modified timestamp, or directory's last modified time if no file specified
6
+ * @property {function(string): string} getAbsPath - Returns absolute path for a file in cache
7
+ * @property {function(string): Promise<boolean>} hasFile - Checks if a file exists in cache
8
+ * @property {function(string): Promise<Buffer|undefined>} loadFile - Loads file contents from cache
9
+ * @property {function(string, string|Buffer): Promise<void>} saveFile - Saves data to cache file
10
+ * @property {function(string): Promise<object>} loadJSON - Loads and parses JSON from cache file
11
+ * @property {function(string, object): Promise<void>} saveJSON - Saves object as JSON to cache file
12
+ */
13
+ declare function createCache(dir: string): Promise<object>;
14
+ /**
15
+ * Legacy file cache API for managing a single cached file
16
+ * @param {Object} options
17
+ * @param {string} options.dir - Absolute or relative path to cache directory
18
+ * @param {string} options.file - Filename to cache
19
+ * @returns {Promise<{
20
+ * modifiedAt: number,
21
+ * load: () => Promise<Buffer>,
22
+ * save: (data: string|Buffer) => Promise<void>,
23
+ * loadJSON: () => Promise<object>,
24
+ * saveJSON: (data: object) => Promise<void>
25
+ * }>}
26
+ */
27
+ declare function fileCache({ dir, file }: {
28
+ dir: string;
29
+ file: string;
30
+ }): Promise<{
31
+ modifiedAt: number;
32
+ load: () => Promise<Buffer>;
33
+ save: (data: string | Buffer) => Promise<void>;
34
+ loadJSON: () => Promise<object>;
35
+ saveJSON: (data: object) => Promise<void>;
36
+ }>;
37
+ /**
38
+ * Gets the most recent modification time of files matching the glob pattern
39
+ * @param {string|string[]} globPath - Glob pattern(s) to match files
40
+ * @returns {Promise<number>} Timestamp of most recently modified file, or 0 if no files found
41
+ */
42
+ declare function getLastModifiedTime(globPath: string | string[]): Promise<number>;
43
+ /**
44
+ * @deprecated Use getLastModifiedTime instead
45
+ * @param {string|string[]} globPath - Glob pattern(s) to match files
46
+ * @returns {Promise<number>} Timestamp of most recently modified file, or 0 if no files found
47
+ */
48
+ declare function getLatestModifiedTime(globPath: string | string[]): Promise<number>;
49
+ /**
50
+ * Removes leading slash from a path string
51
+ * @param {string} x - Path string to process
52
+ * @returns {string} Path without leading slash
53
+ */
54
+ declare function removeFirstSlash(x: string): string;
55
+
56
+ export { createCache, fileCache, getLastModifiedTime, getLatestModifiedTime, removeFirstSlash };
@@ -0,0 +1,4 @@
1
+ declare function mkdir(path: any): Promise<string>;
2
+ declare function copyFile(from: any, to: any): Promise<void>;
3
+
4
+ export { copyFile, mkdir };
@@ -0,0 +1,3 @@
1
+ declare function sha256Hash(string: any): string;
2
+
3
+ export { sha256Hash };
@@ -0,0 +1,7 @@
1
+ export { __dirname, dirname } from './dirname.cjs';
2
+ export { createCache, fileCache, getLastModifiedTime, getLatestModifiedTime, removeFirstSlash } from './file-cache.cjs';
3
+ export { sha256Hash } from './hash.cjs';
4
+ export { PKCE, getCodeChallenge } from './pkce.cjs';
5
+ export { randomString } from './random-string.cjs';
6
+ export { sanitize } from './sanitize.cjs';
7
+ export { uuid } from './uuid.cjs';
@@ -0,0 +1,14 @@
1
+ declare function PKCE(): Promise<{
2
+ state: string;
3
+ code_verifier: string;
4
+ code_challenge: string;
5
+ code_challenge_method: string;
6
+ }>;
7
+ /**
8
+ * Generates code challenge in node
9
+ * @param {string} verifier
10
+ * @returns string
11
+ */
12
+ declare function getCodeChallenge(verifier: string): string;
13
+
14
+ export { PKCE, getCodeChallenge };
@@ -0,0 +1,3 @@
1
+ declare function randomString(length?: number): string;
2
+
3
+ export { randomString };
@@ -1,6 +1,3 @@
1
- import sanitizeHtml from 'sanitize-html'
2
- import { sanitize as sanitizeLib } from '../lib/form/sanitize.js'
3
-
4
1
  /**
5
2
  * Sanitizes values using sanitize-html
6
3
  * @param {*} value - Value to sanitize (string, array, or object)
@@ -8,6 +5,6 @@ import { sanitize as sanitizeLib } from '../lib/form/sanitize.js'
8
5
  * @returns {*} Sanitized value
9
6
  * @throws {Error} If input is a string but sanitize-html fails
10
7
  */
11
- export function sanitize(value, options = {}) {
12
- return sanitizeLib(value, { sanitizer: sanitizeHtml, ...options })
13
- }
8
+ declare function sanitize(value: any, options?: any): any;
9
+
10
+ export { sanitize };
@@ -0,0 +1,3 @@
1
+ declare function uuid(): `${string}-${string}-${string}-${string}-${string}`;
2
+
3
+ export { uuid };
package/package.json CHANGED
@@ -1,10 +1,13 @@
1
1
  {
2
2
  "name": "@splendidlabz/utils",
3
- "version": "1.11.3",
3
+ "version": "1.11.5",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "homepage": "https://splendidlabz.com/docs/utils",
7
7
  "sideEffects": false,
8
+ "files": [
9
+ "dist"
10
+ ],
8
11
  "main": "./dist/cjs/lib/index.cjs",
9
12
  "module": "./dist/esm/lib/index.js",
10
13
  "types": "./dist/types/lib/index.d.cts",
@@ -54,23 +57,23 @@
54
57
  "author": "Zell Liew <zellwk@gmail.com>",
55
58
  "dependencies": {
56
59
  "deep-eql": "^5.0.2",
57
- "dompurify": "^3.2.4",
58
- "glob": "^11.0.0",
59
- "markdown-it": "^14.1.0",
60
+ "dompurify": "^3.4.0",
61
+ "glob": "^13.0.6",
62
+ "markdown-it": "^14.1.1",
60
63
  "markdown-it-anchor": "^9.2.0",
61
- "marked": "^15.0.7",
62
- "marked-gfm-heading-id": "^4.1.1",
63
- "marked-mangle": "^1.1.10",
64
+ "marked": "^18.0.2",
65
+ "marked-gfm-heading-id": "^4.1.4",
66
+ "marked-mangle": "^1.1.13",
64
67
  "pluralize": "^8.0.0",
65
- "sanitize-html": "^2.17.0",
66
- "statuses": "^2.0.1"
68
+ "sanitize-html": "^2.17.3",
69
+ "statuses": "^2.0.2"
67
70
  },
68
71
  "devDependencies": {
69
- "@splendidlabz/eslint-config": "2.1.3",
70
- "jsdom": "^26.0.0",
71
- "np": "^10.2.0",
72
- "tsup": "^8.0.0",
73
- "typescript": "^5.4.2",
74
- "vitest": "^3.1.1"
72
+ "@splendidlabz/eslint-config": "2.1.4",
73
+ "jsdom": "^29.0.2",
74
+ "np": "^11.1.0",
75
+ "tsup": "^8.5.1",
76
+ "typescript": "^6.0.3",
77
+ "vitest": "^4.1.4"
75
78
  }
76
79
  }
package/CHANGELOG.md DELETED
@@ -1,237 +0,0 @@
1
- # @splendidlabz/utils
2
-
3
- ## 1.11.3
4
-
5
- ### Patch Changes
6
-
7
- - 7b9b628: Added context utility
8
-
9
- ## 1.11.2
10
-
11
- ### Patch Changes
12
-
13
- - - Add `updateMasonryLayout` method to `masonry` nodes.
14
-
15
- ## 1.11.1
16
-
17
- ### Patch Changes
18
-
19
- - Fix auth jwt secret
20
-
21
- ## 1.11.0
22
-
23
- ### Minor Changes
24
-
25
- - Utils: Add isFunction
26
-
27
- ## 1.10.7
28
-
29
- ### Patch Changes
30
-
31
- - Allow fileCache to accept absolute urls
32
-
33
- ## 1.10.6
34
-
35
- ### Patch Changes
36
-
37
- - Bump
38
-
39
- ## 1.10.5
40
-
41
- ### Patch Changes
42
-
43
- - Fixed `env` in node
44
-
45
- ## 1.10.4
46
-
47
- ### Patch Changes
48
-
49
- - - Add env to utils/node.
50
- - Allow JWT_SECRET to be retrieved from both import.meta.env and process.env
51
-
52
- ## 1.10.3
53
-
54
- ### Patch Changes
55
-
56
- - Prevent tsup from bundling — allows tree shaking
57
-
58
- ## 1.10.2
59
-
60
- ### Patch Changes
61
-
62
- - Built
63
-
64
- ## 1.10.1
65
-
66
- ### Patch Changes
67
-
68
- - Fix circular references and typescript errors
69
-
70
- ## 1.10.0
71
-
72
- ### Minor Changes
73
-
74
- - 4efacb3: - 6c636877 fix scroll observer
75
- - 54effb06 add rlh
76
-
77
- ## 1.9.1
78
-
79
- ### Patch Changes
80
-
81
- - Replace Markdown with Markdown-it
82
-
83
- ## 1.9.0
84
-
85
- ### Minor Changes
86
-
87
- - 8f2cb34: - 48406c69 Add JSDocs for events
88
- - 304b5310 Utils: Add runCallback
89
-
90
- ## 1.8.2
91
-
92
- ### Patch Changes
93
-
94
- - - abd0770c Add pipeAsync and composeAsync along with tests
95
-
96
- ## 1.8.1
97
-
98
- ### Patch Changes
99
-
100
- - Build
101
-
102
- ## 1.8.0
103
-
104
- ### Minor Changes
105
-
106
- - Several updates
107
-
108
- ## 1.7.0
109
-
110
- ### Minor Changes
111
-
112
- - 2c149fc: Now supports CJS
113
- - Many changes! Woo
114
-
115
- ## 1.6.0
116
-
117
- ### Minor Changes
118
-
119
- - Many many upgrades which I didn't document properly 😅. The details are in Github history, but too many details to talk about now.
120
-
121
- ## 1.5.1
122
-
123
- ### Patch Changes
124
-
125
- - - Utils: Added getFocusableElements as alias of Focusables
126
- - Styles: Adjusted `grid-with-breakout` children classes and CSS properties. Wrote docs for it.
127
-
128
- ## 1.5.0
129
-
130
- ### Minor Changes
131
-
132
- - 859a2b0: Add utilities for SSE
133
- - acf9faf: Improve sort function
134
- - 8b17adc: Ready for next release
135
- - 5fe7c51: - Just bumping
136
- - Fix bug with `mix` erroring when a `null` or `undefined` source is passed to it. `mix` now ignores `null` and `undefined`.
137
- - Adds `toDegrees`
138
- - Adds `toRadians`
139
- - Adds `getCSSValue` and `setCSSValue`. They're aliases for `getCSSVar` and `setCSSVar` but they're more descriptive for standard properties.
140
- - Renamed `hasLabel` to `checkForAccessibleName`
141
- - Add `getParentElement` to get the parent element of a DOM node. If it encounters an `ASTRO-ISLAND` and `ASTRO-SLOT`, it goes one level up.
142
-
143
- ### Patch Changes
144
-
145
- - df4f2d6: Simplified Markdown — so utils now contain a markdown function
146
- - Include typescript checks!
147
- - bb06596: Updates
148
-
149
- ## 1.5.0-beta.6
150
-
151
- ### Minor Changes
152
-
153
- - Add utilities for SSE
154
-
155
- ## 1.5.0-beta.5
156
-
157
- ### Minor Changes
158
-
159
- - Ready for next release
160
-
161
- ## 1.5.0-alpha.4
162
-
163
- ### Patch Changes
164
-
165
- - Updates
166
-
167
- ## 1.5.0-alpha.3
168
-
169
- ### Minor Changes
170
-
171
- - 5fe7c51: - Just bumping
172
- - Fix bug with `mix` erroring when a `null` or `undefined` source is passed to it. `mix` now ignores `null` and `undefined`.
173
- - Adds `toDegrees`
174
- - Adds `toRadians`
175
- - Adds `getCSSValue` and `setCSSValue`. They're aliases for `getCSSVar` and `setCSSVar` but they're more descriptive for standard properties.
176
- - Renamed `hasLabel` to `checkForAccessibleName`
177
- - Add `getParentElement` to get the parent element of a DOM node. If it encounters an `ASTRO-ISLAND` and `ASTRO-SLOT`, it goes one level up.
178
-
179
- ## 1.5.0-alpha.2
180
-
181
- ### Minor Changes
182
-
183
- - acf9faf: Improve sort function
184
-
185
- ## 1.5.0-alpha.1
186
-
187
- ### Patch Changes
188
-
189
- - df4f2d6: Simplified Markdown — so utils now contain a markdown function
190
-
191
- ## 1.5.0-alpha.0
192
-
193
- ### Minor Changes
194
-
195
- - Just bumping
196
-
197
- ## 1.4.0
198
-
199
- ### Minor Changes
200
-
201
- - Added a couple of improvements
202
-
203
- ## 1.3.0
204
-
205
- ### Minor Changes
206
-
207
- - a9128f4: Add Debounce and Throttle functions
208
-
209
- ## 1.2.0
210
-
211
- ### Minor Changes
212
-
213
- - a9128f4: - Add `uuid` to `utils/node`
214
- - Add `uuid` to `utils/dom`
215
- - Add `MONTHS` constant to `utils`
216
-
217
- ### Patch Changes
218
-
219
- - a9128f4: - Change `randomString` in `utils/dom` to produce a HTML-usable string
220
-
221
- ## 1.1.2
222
-
223
- ### Patch Changes
224
-
225
- - Add query params path
226
-
227
- ## 1.1.1
228
-
229
- ### Patch Changes
230
-
231
- - Fix session store path
232
-
233
- ## 1.1.0
234
-
235
- ### Minor Changes
236
-
237
- - 2d5789f: New and better cache utility
package/eslint.config.js DELETED
@@ -1,2 +0,0 @@
1
- import config from '@splendidlabz/eslint-config'
2
- export default config
@@ -1,58 +0,0 @@
1
- // export function stopBodyScroll(element) {
2
- // if (!element) element = document.body
3
- // const top = document.documentElement.scrollTop
4
- // element.style.top = -1 * top + 'px'
5
- // element.style.overflow = 'hidden'
6
- // }
7
-
8
- // export function allowBodyScroll() {
9
- // const top = parseFloat(document.body.style.top) * -1
10
- // document.body.style.top = null
11
- // document.body.style.overflow = null
12
- // document.documentElement.scrollTop = top
13
- // }
14
-
15
- /**
16
- * Checks if an element has an accessible name through label or aria-labelledby
17
- * @param {string} [label] - The label text
18
- * @param {string} [labelledBy] - The aria-labelledby value
19
- * @returns {boolean} True if the element has an accessible name
20
- */
21
- export function hasAccessibleName(label, labelledBy) {
22
- if (label || labelledBy) return true
23
- return false
24
- }
25
-
26
- /**
27
- * Checks if an element has an accessible name and logs a warning/error if it doesn't
28
- * @param {Object} [options] - Options for checking accessible name
29
- * @param {string} [options.name] - The name of the element being checked
30
- * @param {string} [options.ariaLabel] - The aria-label value
31
- * @param {string} [options.ariaLabelledBy] - The aria-labelledby value
32
- * @param {'warn'|'error'} [options.severity='warn'] - Severity level for the message
33
- * @returns {boolean} True if the element has an accessible name
34
- */
35
- export function checkForAccessibleName({
36
- name,
37
- ariaLabel,
38
- ariaLabelledBy,
39
- severity = 'warn',
40
- } = {}) {
41
- if (ariaLabel || ariaLabelledBy) return true
42
-
43
- const message = `${name} is missing an accessible name. Please provide an accessible name with 'aria-label' or 'aria-labelledby'.`
44
- if (severity === 'warn') console.warn(message)
45
- if (severity === 'error') console.error(message)
46
- return false
47
- }
48
-
49
- /**
50
- * Checks if an ARIA popup value is valid
51
- * @param {string} value - The ARIA popup value to check
52
- * @returns {boolean} True if the value is invalid
53
- */
54
- export function isInvalidAriaPopup(value) {
55
- const allowedPopoupValues = ['dialog', 'menu', 'listbox', 'grid', 'tree']
56
- if (!allowedPopoupValues.includes(value)) return true
57
- return false
58
- }
@@ -1,3 +0,0 @@
1
- export * from './masonry.js'
2
- export * from './prefer-horizontal-scroll.js'
3
- export * from './sticky.js'
@@ -1,43 +0,0 @@
1
- import { getChildrenElements } from '../get-element.js'
2
- import { mediaLoaded } from '../media.js'
3
- import { resizeObserver } from '../observers/resize-observer.js'
4
-
5
- export async function masonry(node) {
6
- if (nativeMasonrySupport(node)) return
7
-
8
- const colGap = parseFloat(getComputedStyle(node).columnGap)
9
- const items = getChildrenElements(node)
10
-
11
- node.style.setProperty('row-gap', '1px', 'important')
12
- node.style.gridAutoRows = '0px'
13
- node.updateMasonryLayout = _ => layout({ colGap, items })
14
-
15
- try {
16
- await mediaLoaded(node)
17
- } catch (e) {}
18
-
19
- layout({ colGap, items })
20
-
21
- const obs = resizeObserver(node, {
22
- async callback(opts) {
23
- layout({ colGap, items })
24
- },
25
- })
26
-
27
- async function layout({ colGap, items }) {
28
- items.forEach(item => {
29
- const ib = item.getBoundingClientRect()
30
- item.style.gridRowEnd = `span ${Math.round(ib.height + colGap)}`
31
- })
32
- }
33
-
34
- return {
35
- destroy() {
36
- obs.disconnect()
37
- },
38
- }
39
- }
40
-
41
- function nativeMasonrySupport(node) {
42
- return getComputedStyle(node).gridTemplateRows === 'masonry'
43
- }