@design-edito/tools 0.4.4 → 0.4.6

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 (526) hide show
  1. package/TODO.md +269 -0
  2. package/agnostic/arrays/dedupe/index.js +9 -9
  3. package/agnostic/arrays/dedupe/index.test.js +24 -0
  4. package/agnostic/arrays/find-duplicates/index.js +34 -24
  5. package/agnostic/arrays/find-duplicates/index.test.js +31 -0
  6. package/agnostic/arrays/index.d.ts +1 -1
  7. package/agnostic/arrays/index.js +1 -1
  8. package/agnostic/arrays/is-array-of/index.js +28 -26
  9. package/agnostic/arrays/is-array-of/index.test.js +56 -0
  10. package/agnostic/arrays/make/index.js +11 -8
  11. package/agnostic/arrays/make/index.test.js +10 -0
  12. package/agnostic/arrays/random-pick/index.js +40 -9
  13. package/agnostic/arrays/random-pick/index.test.js +23 -0
  14. package/agnostic/arrays/shuffle/index.js +15 -13
  15. package/agnostic/arrays/shuffle/index.test.js +14 -0
  16. package/agnostic/booleans/is-falsy/index.js +26 -12
  17. package/agnostic/booleans/is-falsy/index.test.js +26 -0
  18. package/agnostic/colors/channels/index.js +145 -19
  19. package/agnostic/colors/channels/index.test.js +64 -0
  20. package/agnostic/colors/contrast/index.js +23 -30
  21. package/agnostic/colors/contrast/index.test.js +21 -0
  22. package/agnostic/colors/convert/index.js +839 -46
  23. package/agnostic/colors/convert/index.test.js +98 -0
  24. package/agnostic/colors/cssColorsMap.js +153 -0
  25. package/agnostic/colors/distance/index.js +65 -53
  26. package/agnostic/colors/distance/index.test.js +21 -0
  27. package/agnostic/colors/grayscale/index.js +96 -137
  28. package/agnostic/colors/grayscale/index.test.js +34 -0
  29. package/agnostic/colors/invert/index.js +33 -44
  30. package/agnostic/colors/invert/index.test.js +31 -0
  31. package/agnostic/colors/lerp/index.js +74 -88
  32. package/agnostic/colors/lerp/index.test.js +55 -0
  33. package/agnostic/colors/luminance/index.js +19 -13
  34. package/agnostic/colors/luminance/index.test.js +30 -0
  35. package/agnostic/colors/palette/index.js +80 -87
  36. package/agnostic/colors/palette/index.test.js +35 -0
  37. package/agnostic/colors/rotate/index.js +41 -14
  38. package/agnostic/colors/rotate/index.test.js +45 -0
  39. package/agnostic/colors/tidy/index.js +80 -12
  40. package/agnostic/colors/tidy/index.test.js +45 -0
  41. package/agnostic/colors/typechecks/index.js +196 -25
  42. package/agnostic/colors/typechecks/index.test.js +113 -0
  43. package/agnostic/colors/types.js +1 -0
  44. package/agnostic/css/bem/index.js +135 -160
  45. package/agnostic/css/clss/index.js +66 -7
  46. package/agnostic/css/clss/index.test.js +60 -0
  47. package/agnostic/css/generate-nice-color/index.js +26 -73
  48. package/agnostic/css/generate-nice-color/index.test.js +8 -0
  49. package/agnostic/css/index.d.ts +1 -1
  50. package/agnostic/css/index.js +1 -1
  51. package/agnostic/css/is-valid-css-class-name/index.js +15 -9
  52. package/agnostic/css/is-valid-css-class-name/index.test.js +36 -0
  53. package/agnostic/css/scale/index.js +37 -37
  54. package/agnostic/css/scale/index.test.js +71 -0
  55. package/agnostic/css/styles-set/index.js +151 -169
  56. package/agnostic/errors/register/index.js +45 -51
  57. package/agnostic/errors/unknown-to-string/index.js +18 -7
  58. package/agnostic/errors/unknown-to-string/index.test.js +35 -0
  59. package/agnostic/html/get-node-ancestors/index.js +31 -8
  60. package/agnostic/html/get-node-ancestors/index.test.js +58 -0
  61. package/agnostic/html/get-position-inside-parent/index.js +13 -10
  62. package/agnostic/html/get-position-inside-parent/index.test.js +56 -0
  63. package/agnostic/html/hyper-json/cast/index.js +137 -24
  64. package/agnostic/html/hyper-json/index.js +23 -50
  65. package/agnostic/html/hyper-json/method/index.js +10 -7
  66. package/agnostic/html/hyper-json/serialize/index.js +91 -11
  67. package/agnostic/html/hyper-json/smart-tags/coalesced/add/index.js +16 -24
  68. package/agnostic/html/hyper-json/smart-tags/coalesced/addclass/index.js +30 -24
  69. package/agnostic/html/hyper-json/smart-tags/coalesced/and/index.js +15 -24
  70. package/agnostic/html/hyper-json/smart-tags/coalesced/append/index.js +36 -24
  71. package/agnostic/html/hyper-json/smart-tags/coalesced/at/index.js +47 -24
  72. package/agnostic/html/hyper-json/smart-tags/coalesced/call/index.js +50 -24
  73. package/agnostic/html/hyper-json/smart-tags/coalesced/clone/index.js +11 -24
  74. package/agnostic/html/hyper-json/smart-tags/coalesced/deleteproperties/index.js +49 -24
  75. package/agnostic/html/hyper-json/smart-tags/coalesced/equals/index.js +24 -24
  76. package/agnostic/html/hyper-json/smart-tags/coalesced/getattribute/index.js +28 -24
  77. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperties/index.js +21 -24
  78. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperty/index.js +73 -26
  79. package/agnostic/html/hyper-json/smart-tags/coalesced/hjparse/index.js +24 -24
  80. package/agnostic/html/hyper-json/smart-tags/coalesced/hjstringify/index.js +93 -28
  81. package/agnostic/html/hyper-json/smart-tags/coalesced/if/index.js +22 -24
  82. package/agnostic/html/hyper-json/smart-tags/coalesced/index.d.ts +14 -14
  83. package/agnostic/html/hyper-json/smart-tags/coalesced/index.js +14 -14
  84. package/agnostic/html/hyper-json/smart-tags/coalesced/initialize/index.js +39 -24
  85. package/agnostic/html/hyper-json/smart-tags/coalesced/join/index.js +18 -24
  86. package/agnostic/html/hyper-json/smart-tags/coalesced/length/index.js +23 -24
  87. package/agnostic/html/hyper-json/smart-tags/coalesced/map/index.js +33 -24
  88. package/agnostic/html/hyper-json/smart-tags/coalesced/negate/index.js +11 -24
  89. package/agnostic/html/hyper-json/smart-tags/coalesced/notrailing/index.js +35 -24
  90. package/agnostic/html/hyper-json/smart-tags/coalesced/or/index.js +15 -24
  91. package/agnostic/html/hyper-json/smart-tags/coalesced/pickrandom/index.js +19 -24
  92. package/agnostic/html/hyper-json/smart-tags/coalesced/populate/index.js +61 -24
  93. package/agnostic/html/hyper-json/smart-tags/coalesced/print/index.js +25 -24
  94. package/agnostic/html/hyper-json/smart-tags/coalesced/push/index.js +11 -24
  95. package/agnostic/html/hyper-json/smart-tags/coalesced/pusheach/index.js +28 -24
  96. package/agnostic/html/hyper-json/smart-tags/coalesced/recordtoarray/index.js +11 -24
  97. package/agnostic/html/hyper-json/smart-tags/coalesced/removeattribute/index.js +58 -24
  98. package/agnostic/html/hyper-json/smart-tags/coalesced/removeclass/index.js +30 -24
  99. package/agnostic/html/hyper-json/smart-tags/coalesced/renameproperty/index.js +34 -24
  100. package/agnostic/html/hyper-json/smart-tags/coalesced/replace/index.js +56 -26
  101. package/agnostic/html/hyper-json/smart-tags/coalesced/select/index.js +34 -24
  102. package/agnostic/html/hyper-json/smart-tags/coalesced/set/index.js +31 -24
  103. package/agnostic/html/hyper-json/smart-tags/coalesced/setattribute/index.js +58 -24
  104. package/agnostic/html/hyper-json/smart-tags/coalesced/setproperty/index.js +237 -26
  105. package/agnostic/html/hyper-json/smart-tags/coalesced/sorton/index.js +93 -24
  106. package/agnostic/html/hyper-json/smart-tags/coalesced/split/index.js +22 -24
  107. package/agnostic/html/hyper-json/smart-tags/coalesced/spread/index.js +24 -24
  108. package/agnostic/html/hyper-json/smart-tags/coalesced/toarray/index.js +12 -24
  109. package/agnostic/html/hyper-json/smart-tags/coalesced/toboolean/index.js +12 -24
  110. package/agnostic/html/hyper-json/smart-tags/coalesced/toelement/index.js +19 -24
  111. package/agnostic/html/hyper-json/smart-tags/coalesced/toggleclass/index.js +30 -24
  112. package/agnostic/html/hyper-json/smart-tags/coalesced/tonodelist/index.js +12 -24
  113. package/agnostic/html/hyper-json/smart-tags/coalesced/tonull/index.js +11 -24
  114. package/agnostic/html/hyper-json/smart-tags/coalesced/tonumber/index.js +12 -24
  115. package/agnostic/html/hyper-json/smart-tags/coalesced/torecord/index.js +12 -24
  116. package/agnostic/html/hyper-json/smart-tags/coalesced/toref/index.js +12 -24
  117. package/agnostic/html/hyper-json/smart-tags/coalesced/tostring/index.js +12 -24
  118. package/agnostic/html/hyper-json/smart-tags/coalesced/totext/index.js +12 -24
  119. package/agnostic/html/hyper-json/smart-tags/coalesced/transformselected/index.js +86 -24
  120. package/agnostic/html/hyper-json/smart-tags/coalesced/trim/index.js +16 -24
  121. package/agnostic/html/hyper-json/smart-tags/index.js +31 -10
  122. package/agnostic/html/hyper-json/smart-tags/isolated/any/index.js +14 -11
  123. package/agnostic/html/hyper-json/smart-tags/isolated/array/index.js +14 -11
  124. package/agnostic/html/hyper-json/smart-tags/isolated/boolean/index.js +13 -24
  125. package/agnostic/html/hyper-json/smart-tags/isolated/element/index.js +26 -24
  126. package/agnostic/html/hyper-json/smart-tags/isolated/get/index.js +20 -24
  127. package/agnostic/html/hyper-json/smart-tags/isolated/guess/index.js +59 -24
  128. package/agnostic/html/hyper-json/smart-tags/isolated/index.d.ts +1 -1
  129. package/agnostic/html/hyper-json/smart-tags/isolated/index.js +1 -1
  130. package/agnostic/html/hyper-json/smart-tags/isolated/nodelist/index.js +20 -24
  131. package/agnostic/html/hyper-json/smart-tags/isolated/null/index.js +10 -11
  132. package/agnostic/html/hyper-json/smart-tags/isolated/number/index.js +18 -24
  133. package/agnostic/html/hyper-json/smart-tags/isolated/record/index.js +14 -24
  134. package/agnostic/html/hyper-json/smart-tags/isolated/ref/index.js +45 -25
  135. package/agnostic/html/hyper-json/smart-tags/isolated/string/index.js +18 -24
  136. package/agnostic/html/hyper-json/smart-tags/isolated/text/index.js +20 -24
  137. package/agnostic/html/hyper-json/transformer/index.js +113 -9
  138. package/agnostic/html/hyper-json/tree/index.js +423 -24
  139. package/agnostic/html/hyper-json/types/index.js +28 -7
  140. package/agnostic/html/hyper-json/utils/index.js +516 -24
  141. package/agnostic/html/index.d.ts +2 -2
  142. package/agnostic/html/index.js +2 -2
  143. package/agnostic/html/insert-node/index.js +28 -7
  144. package/agnostic/html/insert-node/index.test.js +73 -0
  145. package/agnostic/html/placeholders/index.js +26 -31
  146. package/agnostic/html/replace-in-element/index.js +31 -25
  147. package/agnostic/html/replace-in-element/index.test.js +80 -0
  148. package/agnostic/html/selector-to-element/index.js +53 -33
  149. package/agnostic/html/selector-to-element/index.test.js +69 -0
  150. package/agnostic/html/string-to-nodes/index.js +24 -19
  151. package/agnostic/html/string-to-nodes/index.test.js +54 -0
  152. package/agnostic/index.d.ts +1 -1
  153. package/agnostic/index.js +1 -1
  154. package/agnostic/misc/assert/index.js +60 -58
  155. package/agnostic/misc/cast/index.js +132 -23
  156. package/agnostic/misc/cast/index.test.js +134 -0
  157. package/agnostic/misc/connection/index.js +55 -30
  158. package/agnostic/misc/connection/index.test.js +143 -0
  159. package/agnostic/misc/crawler/index.js +68 -44
  160. package/agnostic/misc/crawler/index.test.js +56 -0
  161. package/agnostic/misc/crossenv/detect-runtime/index.js +41 -16
  162. package/agnostic/misc/crossenv/detect-runtime/index.test.js +24 -0
  163. package/agnostic/misc/crossenv/types.js +21 -7
  164. package/agnostic/misc/crossenv/window/index.js +49 -13
  165. package/agnostic/misc/crossenv/window/index.test.js +24 -0
  166. package/agnostic/misc/data-size/index.js +182 -296
  167. package/agnostic/misc/data-size/index.test.js +100 -0
  168. package/agnostic/misc/data-size/types.js +1 -0
  169. package/agnostic/misc/index.d.ts +1 -1
  170. package/agnostic/misc/index.js +1 -1
  171. package/agnostic/misc/is-constructor-function/index.js +13 -7
  172. package/agnostic/misc/is-constructor-function/index.test.js +36 -0
  173. package/agnostic/misc/is-nullish/index.js +26 -11
  174. package/agnostic/misc/is-nullish/index.test.js +44 -0
  175. package/agnostic/misc/logs/logger/index.js +115 -142
  176. package/agnostic/misc/logs/make-text-block/index.js +14 -7
  177. package/agnostic/misc/logs/styles/index.js +30 -7
  178. package/agnostic/misc/lorem-ipsum/index.js +51 -186
  179. package/agnostic/misc/lorem-ipsum/index.test.js +49 -0
  180. package/agnostic/misc/normalize-extension/index.js +99 -90
  181. package/agnostic/misc/normalize-extension/index.test.js +40 -0
  182. package/agnostic/misc/outcome/index.js +21 -11
  183. package/agnostic/misc/outcome/index.test.js +40 -0
  184. package/agnostic/numbers/absolute-modulo/index.js +10 -7
  185. package/agnostic/numbers/absolute-modulo/index.test.js +23 -0
  186. package/agnostic/numbers/approximate-rational/index.js +86 -71
  187. package/agnostic/numbers/approximate-rational/index.test.js +90 -0
  188. package/agnostic/numbers/clamp/index.js +13 -7
  189. package/agnostic/numbers/clamp/index.test.js +24 -0
  190. package/agnostic/numbers/geometric-progressions/index.js +26 -7
  191. package/agnostic/numbers/geometric-progressions/index.test.js +45 -0
  192. package/agnostic/numbers/index.d.ts +1 -1
  193. package/agnostic/numbers/index.js +1 -1
  194. package/agnostic/numbers/interpolate/index.js +25 -12
  195. package/agnostic/numbers/interpolate/index.test.js +40 -0
  196. package/agnostic/numbers/round/index.js +33 -11
  197. package/agnostic/numbers/round/index.test.js +56 -0
  198. package/agnostic/objects/deep-get-property/index.js +30 -26
  199. package/agnostic/objects/deep-get-property/index.test.js +59 -0
  200. package/agnostic/objects/enums/is-in-enum/index.js +18 -7
  201. package/agnostic/objects/enums/is-in-enum/index.test.js +100 -0
  202. package/agnostic/objects/flatten-getters/index.js +15 -16
  203. package/agnostic/objects/flatten-getters/index.test.js +78 -0
  204. package/agnostic/objects/index.d.ts +3 -3
  205. package/agnostic/objects/index.js +3 -3
  206. package/agnostic/objects/is-object/index.js +18 -9
  207. package/agnostic/objects/is-object/index.test.js +60 -0
  208. package/agnostic/objects/is-record/index.js +13 -7
  209. package/agnostic/objects/is-record/index.test.js +48 -0
  210. package/agnostic/objects/record-format/index.js +18 -14
  211. package/agnostic/objects/record-format/index.test.js +92 -0
  212. package/agnostic/objects/record-map/index.js +18 -7
  213. package/agnostic/objects/record-map/index.test.js +56 -0
  214. package/agnostic/objects/sort-keys/index.js +15 -13
  215. package/agnostic/objects/sort-keys/index.test.js +37 -0
  216. package/agnostic/objects/validation/index.js +21 -10
  217. package/agnostic/objects/validation/index.test.js +72 -0
  218. package/agnostic/optim/index.d.ts +1 -1
  219. package/agnostic/optim/index.js +1 -1
  220. package/agnostic/optim/memoize/index.js +24 -18
  221. package/agnostic/optim/memoize/index.test.js +30 -0
  222. package/agnostic/optim/throttle-debounce/index.js +120 -104
  223. package/agnostic/optim/throttle-debounce/index.test.js +44 -0
  224. package/agnostic/optim/throttle-debounce/types.js +1 -0
  225. package/agnostic/random/hex-char/index.js +9 -9
  226. package/agnostic/random/hex-char/index.test.js +20 -0
  227. package/agnostic/random/index.d.ts +1 -1
  228. package/agnostic/random/index.js +1 -1
  229. package/agnostic/random/random/index.js +19 -9
  230. package/agnostic/random/random/index.test.js +73 -0
  231. package/agnostic/random/uuid/index.js +31 -12
  232. package/agnostic/random/uuid/index.test.js +45 -0
  233. package/agnostic/regexps/index.js +126 -86
  234. package/agnostic/regexps/index.test.js +108 -0
  235. package/agnostic/sanitization/file-name/index.js +25 -7
  236. package/agnostic/sanitization/file-name/index.test.js +23 -0
  237. package/agnostic/sanitization/html/index.js +172 -116
  238. package/agnostic/sanitization/path/index.js +23 -13
  239. package/agnostic/sanitization/path/index.test.js +18 -0
  240. package/agnostic/sanitization/types.js +1 -0
  241. package/agnostic/sanitization/user-input/index.js +36 -26
  242. package/agnostic/sanitization/user-input/index.test.js +31 -0
  243. package/agnostic/strings/char-codes/index.js +123 -57
  244. package/agnostic/strings/matches/index.js +38 -11
  245. package/agnostic/strings/normalize-indent/index.js +34 -18
  246. package/agnostic/strings/parse-table/index.js +153 -84
  247. package/agnostic/strings/replace-all/index.js +36 -17
  248. package/agnostic/strings/to-alphanum/index.js +23 -10
  249. package/agnostic/strings/trim/index.js +24 -9
  250. package/agnostic/time/dates/format-date/index.js +140 -74
  251. package/agnostic/time/duration/index.js +106 -142
  252. package/agnostic/time/timeout/index.js +24 -18
  253. package/agnostic/time/transitions/index.js +200 -156
  254. package/agnostic/time/wait/index.js +11 -7
  255. package/agnostic/typescript/types.js +1 -0
  256. package/components/BeforeAfter/index.controlled.js +95 -0
  257. package/components/BeforeAfter/index.js +54 -152
  258. package/components/BeforeAfter/utils.js +9 -0
  259. package/components/Disclaimer/index.js +50 -9
  260. package/components/Drawer/index.js +82 -88
  261. package/components/EventListener/index.js +29 -47
  262. package/components/Gallery/index.js +146 -190
  263. package/components/Gallery/utils.js +12 -0
  264. package/components/Image/index.js +67 -106
  265. package/components/IntersectionObserver/index.js +62 -9
  266. package/components/Overlayer/index.js +59 -66
  267. package/components/Paginator/index.js +125 -9
  268. package/components/ResizeObserver/index.js +68 -9
  269. package/components/ResizeObserver/style.module.css +0 -0
  270. package/components/Scrllgngn/index.js +176 -183
  271. package/components/ScrollListener/index.js +97 -171
  272. package/components/ScrollListener/utils.js +51 -0
  273. package/components/Sequencer/index.controlled.js +67 -0
  274. package/components/Sequencer/index.js +105 -160
  275. package/components/ShadowRoot/index.js +42 -63
  276. package/components/Subtitles/index.js +107 -13
  277. package/components/Subtitles/types.js +1 -0
  278. package/components/Subtitles/utils.js +102 -0
  279. package/components/Theatre/index.js +89 -9
  280. package/components/UIModule/index.js +156 -146
  281. package/components/Video/index.d.ts +10 -0
  282. package/components/Video/index.js +292 -503
  283. package/components/Video/utils.js +137 -0
  284. package/components/_WIP_AudioQuote/index.js +1 -0
  285. package/components/_WIP_Icon/index.js +1 -0
  286. package/components/index.d.ts +2 -2
  287. package/components/index.js +2 -2
  288. package/components/public-classnames.js +18 -0
  289. package/components/utils/index.js +12 -7
  290. package/components/utils/types.js +1 -0
  291. package/index.d.ts +1 -2
  292. package/index.js +1 -2
  293. package/node/@aws-s3/index.test.js +6 -0
  294. package/node/@aws-s3/storage/directory/copy-dir/index.js +68 -9
  295. package/node/@aws-s3/storage/directory/index.d.ts +1 -1
  296. package/node/@aws-s3/storage/directory/index.js +1 -1
  297. package/node/@aws-s3/storage/directory/list/index.js +33 -9
  298. package/node/@aws-s3/storage/directory/move-dir/index.js +69 -9
  299. package/node/@aws-s3/storage/directory/remove-dir/index.js +59 -9
  300. package/node/@aws-s3/storage/file/copy/index.js +43 -9
  301. package/node/@aws-s3/storage/file/download/index.js +30 -9
  302. package/node/@aws-s3/storage/file/exists/index.js +37 -9
  303. package/node/@aws-s3/storage/file/index.d.ts +1 -1
  304. package/node/@aws-s3/storage/file/index.js +1 -1
  305. package/node/@aws-s3/storage/file/move/index.js +60 -9
  306. package/node/@aws-s3/storage/file/remove/index.js +38 -9
  307. package/node/@aws-s3/storage/file/stat/index.js +34 -9
  308. package/node/@aws-s3/storage/file/upload/index.js +55 -9
  309. package/node/@design-edito/index.js +1 -0
  310. package/node/@express/@multer/index.js +61 -45
  311. package/node/@google-cloud/storage/bucket/get-metadata/index.js +25 -21
  312. package/node/@google-cloud/storage/directory/copy-dir/index.js +38 -9
  313. package/node/@google-cloud/storage/directory/list/index.js +29 -9
  314. package/node/@google-cloud/storage/directory/move-dir/index.js +45 -9
  315. package/node/@google-cloud/storage/directory/remove-dir/index.js +36 -9
  316. package/node/@google-cloud/storage/file/copy/index.js +37 -9
  317. package/node/@google-cloud/storage/file/download/index.js +28 -9
  318. package/node/@google-cloud/storage/file/exists/index.js +26 -9
  319. package/node/@google-cloud/storage/file/generate-signed-url/index.js +33 -27
  320. package/node/@google-cloud/storage/file/get-metadata/index.js +28 -23
  321. package/node/@google-cloud/storage/file/get-permissions/index.js +25 -23
  322. package/node/@google-cloud/storage/file/index.d.ts +1 -1
  323. package/node/@google-cloud/storage/file/index.js +1 -1
  324. package/node/@google-cloud/storage/file/move/index.js +40 -9
  325. package/node/@google-cloud/storage/file/remove/index.js +36 -9
  326. package/node/@google-cloud/storage/file/revoke-signed-urls/index.js +32 -29
  327. package/node/@google-cloud/storage/file/stat/index.js +35 -9
  328. package/node/@google-cloud/storage/file/update-metadata/index.js +30 -23
  329. package/node/@google-cloud/storage/file/upload/index.js +47 -9
  330. package/node/cloud-storage/clients/index.js +35 -13
  331. package/node/cloud-storage/operations/copy-dir/index.js +30 -34
  332. package/node/cloud-storage/operations/copy-file/index.js +30 -34
  333. package/node/cloud-storage/operations/download-file/index.js +30 -34
  334. package/node/cloud-storage/operations/exists-file/index.js +30 -34
  335. package/node/cloud-storage/operations/list-dir/index.js +29 -34
  336. package/node/cloud-storage/operations/move-dir/index.js +30 -34
  337. package/node/cloud-storage/operations/move-file/index.js +30 -34
  338. package/node/cloud-storage/operations/remove-dir/index.js +29 -34
  339. package/node/cloud-storage/operations/remove-file/index.js +29 -34
  340. package/node/cloud-storage/operations/stat-file/index.js +29 -34
  341. package/node/cloud-storage/operations/upload-file/index.js +30 -34
  342. package/node/encryption/@aes-256-gcm/buffer/index.js +31 -26
  343. package/node/encryption/@aes-256-gcm/index.d.ts +1 -1
  344. package/node/encryption/@aes-256-gcm/index.js +1 -1
  345. package/node/encryption/@aes-256-gcm/uint8-array/index.js +57 -11
  346. package/node/encryption/key/index.js +19 -14
  347. package/node/files/is-in-directory/index.js +11 -10
  348. package/node/files/read-write/index.js +11 -17
  349. package/node/files/subpaths/index.js +156 -113
  350. package/node/ftps/directory/copy-dir/index.js +58 -9
  351. package/node/ftps/directory/index.d.ts +1 -1
  352. package/node/ftps/directory/index.js +1 -1
  353. package/node/ftps/directory/list/index.js +25 -9
  354. package/node/ftps/directory/move-dir/index.js +41 -9
  355. package/node/ftps/directory/remove-dir/index.js +42 -9
  356. package/node/ftps/file/copy/index.js +45 -9
  357. package/node/ftps/file/download/index.js +30 -9
  358. package/node/ftps/file/exists/index.js +39 -9
  359. package/node/ftps/file/index.d.ts +1 -1
  360. package/node/ftps/file/index.js +1 -1
  361. package/node/ftps/file/move/index.js +49 -9
  362. package/node/ftps/file/remove/index.js +40 -9
  363. package/node/ftps/file/stat/index.js +31 -9
  364. package/node/ftps/file/upload/index.js +44 -9
  365. package/node/images/create/index.js +10 -18
  366. package/node/images/format/index.js +264 -251
  367. package/node/images/index.d.ts +1 -1
  368. package/node/images/index.js +1 -1
  369. package/node/images/metadata/index.js +10 -18
  370. package/node/images/transform/index.js +168 -203
  371. package/node/images/transform/operations/blur/index.js +12 -10
  372. package/node/images/transform/operations/brighten/index.js +12 -10
  373. package/node/images/transform/operations/extend/index.js +26 -17
  374. package/node/images/transform/operations/extract/index.js +17 -10
  375. package/node/images/transform/operations/flatten/index.js +21 -17
  376. package/node/images/transform/operations/flip/index.js +3 -7
  377. package/node/images/transform/operations/flop/index.js +3 -7
  378. package/node/images/transform/operations/hue/index.js +14 -10
  379. package/node/images/transform/operations/index.d.ts +2 -2
  380. package/node/images/transform/operations/index.js +2 -2
  381. package/node/images/transform/operations/level/index.js +15 -10
  382. package/node/images/transform/operations/lighten/index.js +14 -10
  383. package/node/images/transform/operations/normalize/index.js +15 -10
  384. package/node/images/transform/operations/overlay/index.js +90 -17
  385. package/node/images/transform/operations/resize/index.js +47 -17
  386. package/node/images/transform/operations/rotate/index.js +21 -17
  387. package/node/images/transform/operations/saturate/index.js +16 -10
  388. package/node/images/types.js +34 -9
  389. package/node/images/utils/index.js +85 -19
  390. package/node/index.d.ts +3 -3
  391. package/node/index.js +3 -3
  392. package/node/process/on-exit/index.js +45 -28
  393. package/node/process/prompt-continue/index.js +29 -16
  394. package/node/process/spawner/index.js +104 -80
  395. package/node/sftp/directory/copy-dir/index.js +55 -9
  396. package/node/sftp/directory/list/index.js +23 -9
  397. package/node/sftp/directory/move-dir/index.js +38 -9
  398. package/node/sftp/directory/remove-dir/index.js +42 -9
  399. package/node/sftp/file/copy/index.js +40 -9
  400. package/node/sftp/file/download/index.js +27 -9
  401. package/node/sftp/file/exists/index.js +30 -9
  402. package/node/sftp/file/index.d.ts +2 -2
  403. package/node/sftp/file/index.js +2 -2
  404. package/node/sftp/file/move/index.js +42 -9
  405. package/node/sftp/file/remove/index.js +33 -9
  406. package/node/sftp/file/stat/index.js +28 -9
  407. package/node/sftp/file/upload/index.js +36 -9
  408. package/package.json +1 -8
  409. package/chunks/chunk-2FNCUXAX.js +0 -27
  410. package/chunks/chunk-2GJSPEO4.js +0 -31
  411. package/chunks/chunk-2IGP6V77.js +0 -22
  412. package/chunks/chunk-3QI2MSDK.js +0 -34
  413. package/chunks/chunk-3RNLPW7B.js +0 -101
  414. package/chunks/chunk-3RZMW72G.js +0 -33
  415. package/chunks/chunk-4KLCJX2T.js +0 -36
  416. package/chunks/chunk-4LTN4SCD.js +0 -55
  417. package/chunks/chunk-4Q4T7QQO.js +0 -27
  418. package/chunks/chunk-4Q5TKOIG.js +0 -53
  419. package/chunks/chunk-57YKZBJR.js +0 -29
  420. package/chunks/chunk-5H3IRSOB.js +0 -8
  421. package/chunks/chunk-5NTPCRFH.js +0 -32
  422. package/chunks/chunk-5TM235Z3.js +0 -40
  423. package/chunks/chunk-5WVGUZL5.js +0 -35
  424. package/chunks/chunk-6XL25OZX.js +0 -12
  425. package/chunks/chunk-75BICI4L.js +0 -20
  426. package/chunks/chunk-77SWZUHV.js +0 -31
  427. package/chunks/chunk-AC4UMIWM.js +0 -124
  428. package/chunks/chunk-AG4VERYN.js +0 -25
  429. package/chunks/chunk-AP3VYSVF.js +0 -36
  430. package/chunks/chunk-ASXK7XCC.js +0 -18
  431. package/chunks/chunk-AVIMGMTP.js +0 -17
  432. package/chunks/chunk-B4HGXMP3.js +0 -20
  433. package/chunks/chunk-B5V7D2ZL.js +0 -77
  434. package/chunks/chunk-B6653QJD.js +0 -37
  435. package/chunks/chunk-BCX4HPD7.js +0 -33
  436. package/chunks/chunk-CVMYA5XK.js +0 -632
  437. package/chunks/chunk-DMWGHBIL.js +0 -25
  438. package/chunks/chunk-DNIOWD7K.js +0 -8
  439. package/chunks/chunk-E2ZY3SEW.js +0 -26
  440. package/chunks/chunk-E6MSDKON.js +0 -13
  441. package/chunks/chunk-E7BBN5JC.js +0 -22
  442. package/chunks/chunk-EX2QKFY5.js +0 -41
  443. package/chunks/chunk-EYYNCLVR.js +0 -33
  444. package/chunks/chunk-F2YJXIT7.js +0 -78
  445. package/chunks/chunk-FSNNEPY5.js +0 -37
  446. package/chunks/chunk-GG4EFNMU.js +0 -89
  447. package/chunks/chunk-GQBFMP6N.js +0 -32
  448. package/chunks/chunk-H3HRQ52T.js +0 -32
  449. package/chunks/chunk-H4PP6AHP.js +0 -15
  450. package/chunks/chunk-HC6ZOHCS.js +0 -14
  451. package/chunks/chunk-HMMPT3UM.js +0 -47
  452. package/chunks/chunk-HQLRJ7XW.js +0 -12
  453. package/chunks/chunk-HYGUIF2O.js +0 -23
  454. package/chunks/chunk-HYPEWMYZ.js +0 -10
  455. package/chunks/chunk-I5MRXMHR.js +0 -32
  456. package/chunks/chunk-I6ZP5T5V.js +0 -10
  457. package/chunks/chunk-IEZ3O5OF.js +0 -40
  458. package/chunks/chunk-IPRWXI27.js +0 -31
  459. package/chunks/chunk-IRKZUMWZ.js +0 -38
  460. package/chunks/chunk-ISJONMNA.js +0 -16
  461. package/chunks/chunk-JB27MAKY.js +0 -22
  462. package/chunks/chunk-JZ6GM444.js +0 -43
  463. package/chunks/chunk-K5UF634H.js +0 -25
  464. package/chunks/chunk-LEBGVBYD.js +0 -138
  465. package/chunks/chunk-LJ5MGLLU.js +0 -56
  466. package/chunks/chunk-LUAYN7VJ.js +0 -27
  467. package/chunks/chunk-MDVGDZU6.js +0 -25
  468. package/chunks/chunk-ML22TIBW.js +0 -37
  469. package/chunks/chunk-MO4TRYNI.js +0 -29
  470. package/chunks/chunk-MSU7JU63.js +0 -49
  471. package/chunks/chunk-NIBRPZJD.js +0 -58
  472. package/chunks/chunk-O32IRXDX.js +0 -78
  473. package/chunks/chunk-OAX7GS7C.js +0 -36
  474. package/chunks/chunk-OBSTP7YR.js +0 -257
  475. package/chunks/chunk-OFCSIK6J.js +0 -13
  476. package/chunks/chunk-OFYGPRWE.js +0 -21
  477. package/chunks/chunk-OGBUSUE6.js +0 -12
  478. package/chunks/chunk-OSAXBA7G.js +0 -10
  479. package/chunks/chunk-OT7QXCH6.js +0 -23
  480. package/chunks/chunk-P4J6S2WQ.js +0 -64
  481. package/chunks/chunk-PUQUSA6S.js +0 -12
  482. package/chunks/chunk-PYJKFOMV.js +0 -193
  483. package/chunks/chunk-QHEWBOQI.js +0 -19
  484. package/chunks/chunk-QXAJXTXV.js +0 -19
  485. package/chunks/chunk-R3AWQXMY.js +0 -20
  486. package/chunks/chunk-R66GH2MQ.js +0 -38
  487. package/chunks/chunk-RART44AF.js +0 -21
  488. package/chunks/chunk-REXSJULD.js +0 -28
  489. package/chunks/chunk-RJRNYRPM.js +0 -23
  490. package/chunks/chunk-RKX6KLPQ.js +0 -47
  491. package/chunks/chunk-RW7VAKJW.js +0 -15
  492. package/chunks/chunk-RZOR7ZC3.js +0 -35
  493. package/chunks/chunk-S2UZ3HZR.js +0 -31
  494. package/chunks/chunk-SYH5LYQC.js +0 -28
  495. package/chunks/chunk-TAXFCVFE.js +0 -30
  496. package/chunks/chunk-TNZGRXKJ.js +0 -24
  497. package/chunks/chunk-TRFZSKNB.js +0 -32
  498. package/chunks/chunk-U664BT44.js +0 -45
  499. package/chunks/chunk-U6SGKHHA.js +0 -32
  500. package/chunks/chunk-UTQNGKGQ.js +0 -60
  501. package/chunks/chunk-VPBZS3S4.js +0 -27
  502. package/chunks/chunk-W5A2TON3.js +0 -10
  503. package/chunks/chunk-W7PJ5NQQ.js +0 -23
  504. package/chunks/chunk-WGRQXVBK.js +0 -207
  505. package/chunks/chunk-WIFHP4X7.js +0 -56
  506. package/chunks/chunk-WL4WNJ2Y.js +0 -39
  507. package/chunks/chunk-WNDMYNDU.js +0 -8
  508. package/chunks/chunk-WSFCRVEQ.js +0 -9
  509. package/chunks/chunk-WZS4Q3G3.js +0 -36
  510. package/chunks/chunk-X4YSGOKG.js +0 -2673
  511. package/chunks/chunk-XA4HVHJ4.js +0 -18
  512. package/chunks/chunk-XEQ2PBT2.js +0 -20
  513. package/chunks/chunk-XFB4PUXO.js +0 -78
  514. package/chunks/chunk-XIIJYVJZ.js +0 -15
  515. package/chunks/chunk-XNF5MLCQ.js +0 -14
  516. package/chunks/chunk-XQUMWHCH.js +0 -25
  517. package/chunks/chunk-YA2YCZUF.js +0 -8
  518. package/chunks/chunk-YDIBNEGA.js +0 -9
  519. package/chunks/chunk-YHMR7IBA.js +0 -24
  520. package/chunks/chunk-YWSXCFYY.js +0 -61
  521. package/chunks/chunk-YY3TSU22.js +0 -48
  522. package/chunks/chunk-ZAP3ELDE.js +0 -40
  523. package/chunks/chunk-ZJNQRKEJ.js +0 -105
  524. package/chunks/chunk-ZJR5ASR3.js +0 -26
  525. package/chunks/index.d.ts +0 -1
  526. package/chunks/index.js +0 -1
@@ -1,42 +1,42 @@
1
- import {
2
- getGeometricStep
3
- } from "../../../chunks/chunk-ASXK7XCC.js";
4
- import {
5
- round
6
- } from "../../../chunks/chunk-QHEWBOQI.js";
7
- import "../../../chunks/chunk-WSFCRVEQ.js";
8
-
9
- // src/agnostic/css/scale/index.ts
10
- function createScale(descriptor) {
11
- const {
12
- screenBounds: [loBound, hiBound],
13
- lowLevel: [loLevelMin, loLevelMax],
14
- highLevel: [hiLevelMin, hiLevelMax],
15
- steps,
16
- clamp
17
- } = descriptor;
18
- return function scale(level) {
19
- if (steps < 2) return;
20
- const loBoundVal = getGeometricStep(loLevelMin, hiLevelMin, level - 1, steps - 1);
21
- const hiBoundVal = getGeometricStep(loLevelMax, hiLevelMax, level - 1, steps - 1);
22
- if (loBoundVal === void 0) return;
23
- if (hiBoundVal === void 0) return;
24
- const affine = getAffineFunction(loBound, loBoundVal, hiBound, hiBoundVal);
25
- const cssFormula = getCssValueFromAffine(affine);
26
- return clamp === true ? `clamp(${round(loBoundVal, 2)}px, ${cssFormula}, ${round(hiBoundVal, 2)}px)` : cssFormula;
27
- };
1
+ import { round } from '../../numbers/round/index.js';
2
+ import { getGeometricStep } from '../../numbers/geometric-progressions/index.js';
3
+ /**
4
+ * Creates a scale function that maps a level to a CSS size value using harmonic interpolation.
5
+ *
6
+ * @param {ScaleDescriptor} descriptor - The scale configuration.
7
+ * @param {[number, number]} descriptor.screenBounds - The lower and upper bounds for screen width in pixels.
8
+ * @param {[number, number]} descriptor.lowLevel - Minimum and maximum values for the low level range.
9
+ * @param {[number, number]} descriptor.highLevel - Minimum and maximum values for the high level range.
10
+ * @param {number} descriptor.steps - Number of discrete steps in the scale.
11
+ * @param {boolean} [descriptor.clamp] - Whether to wrap the resulting CSS value in a `clamp()` function.
12
+ * @returns {(level: number) => string | undefined} A function mapping a level to a CSS value string.
13
+ */
14
+ export function createScale(descriptor) {
15
+ const { screenBounds: [loBound, hiBound], lowLevel: [loLevelMin, loLevelMax], highLevel: [hiLevelMin, hiLevelMax], steps, clamp } = descriptor;
16
+ return function scale(level) {
17
+ if (steps < 2)
18
+ return;
19
+ const loBoundVal = getGeometricStep(loLevelMin, hiLevelMin, level - 1, steps - 1);
20
+ const hiBoundVal = getGeometricStep(loLevelMax, hiLevelMax, level - 1, steps - 1);
21
+ if (loBoundVal === undefined)
22
+ return;
23
+ if (hiBoundVal === undefined)
24
+ return;
25
+ const affine = getAffineFunction(loBound, loBoundVal, hiBound, hiBoundVal);
26
+ const cssFormula = getCssValueFromAffine(affine);
27
+ return clamp === true
28
+ ? `clamp(${round(loBoundVal, 2)}px, ${cssFormula}, ${round(hiBoundVal, 2)}px)`
29
+ : cssFormula;
30
+ };
28
31
  }
29
32
  function getAffineFunction(x1, y1, x2, y2) {
30
- const slope = (y2 - y1) / (x2 - x1);
31
- const yIntercept = y1 - x1 * slope;
32
- return { slope, yIntercept };
33
+ const slope = (y2 - y1) / (x2 - x1);
34
+ const yIntercept = y1 - (x1 * slope);
35
+ return { slope, yIntercept };
33
36
  }
34
37
  function getCssValueFromAffine(affine) {
35
- const { slope, yIntercept } = affine;
36
- const roundedSlope = round(100 * slope, 3);
37
- const roundedIntercept = round(yIntercept, 2);
38
- return `calc(${roundedSlope}vw + ${roundedIntercept}px)`;
38
+ const { slope, yIntercept } = affine;
39
+ const roundedSlope = round(100 * slope, 3);
40
+ const roundedIntercept = round(yIntercept, 2);
41
+ return `calc(${roundedSlope}vw + ${roundedIntercept}px)`;
39
42
  }
40
- export {
41
- createScale
42
- };
@@ -0,0 +1,71 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { createScale } from './index.js';
3
+ import * as geo from '../../numbers/geometric-progressions/index.js';
4
+ describe('createScale', () => {
5
+ it('returns a function', () => {
6
+ const descriptor = {
7
+ screenBounds: [320, 1280],
8
+ lowLevel: [10, 20],
9
+ highLevel: [30, 60],
10
+ steps: 5
11
+ };
12
+ const scaleFn = createScale(descriptor);
13
+ expect(typeof scaleFn).toBe('function');
14
+ });
15
+ it('produces CSS calc() formula for intermediate levels', () => {
16
+ const descriptor = {
17
+ screenBounds: [320, 1280],
18
+ lowLevel: [10, 20],
19
+ highLevel: [30, 60],
20
+ steps: 5
21
+ };
22
+ const scaleFn = createScale(descriptor);
23
+ const cssValue = scaleFn(3);
24
+ expect(cssValue).toMatch(/^calc\([\d.]+vw \+ [\d.]+px\)$/);
25
+ });
26
+ it('wraps result in clamp() when clamp is true', () => {
27
+ const descriptor = {
28
+ screenBounds: [320, 1280],
29
+ lowLevel: [10, 20],
30
+ highLevel: [30, 60],
31
+ steps: 5,
32
+ clamp: true
33
+ };
34
+ const scaleFn = createScale(descriptor);
35
+ const cssValue = scaleFn(3);
36
+ expect(cssValue).toMatch(/^clamp\([\d.]+px, calc\([\d.]+vw \+ [\d.]+px\), [\d.]+px\)$/);
37
+ });
38
+ it('returns undefined if steps < 2', () => {
39
+ const descriptor = {
40
+ screenBounds: [320, 1280],
41
+ lowLevel: [10, 20],
42
+ highLevel: [30, 60],
43
+ steps: 1
44
+ };
45
+ const scaleFn = createScale(descriptor);
46
+ expect(scaleFn(1)).toBeUndefined();
47
+ });
48
+ it('handles descending low/high levels', () => {
49
+ const descriptor = {
50
+ screenBounds: [320, 1280],
51
+ lowLevel: [20, 10],
52
+ highLevel: [60, 30],
53
+ steps: 5
54
+ };
55
+ const scaleFn = createScale(descriptor);
56
+ const cssValue = scaleFn(3);
57
+ expect(cssValue).toMatch(/^calc\(-?[\d.]+vw \+ -?[\d.]+px\)$/);
58
+ });
59
+ it('propagates NaN from getGeometricStep', () => {
60
+ vi.spyOn(geo, 'getGeometricStep').mockReturnValueOnce(NaN);
61
+ const descriptor = {
62
+ screenBounds: [320, 1280],
63
+ lowLevel: [10, 20],
64
+ highLevel: [30, 60],
65
+ steps: 5
66
+ };
67
+ const scaleFn = createScale(descriptor);
68
+ const result = scaleFn(2);
69
+ expect(result).toBe('calc(NaNvw + NaNpx)');
70
+ });
71
+ });
@@ -1,173 +1,155 @@
1
- import {
2
- randomHash
3
- } from "../../../chunks/chunk-75BICI4L.js";
4
- import "../../../chunks/chunk-OGBUSUE6.js";
5
- import "../../../chunks/chunk-WSFCRVEQ.js";
6
-
7
- // src/agnostic/css/styles-set/index.tsx
8
- import { Component } from "react";
9
- import {
10
- createRoot as reactCreateRoot
11
- } from "react-dom/client";
12
- import { Fragment, jsx } from "react/jsx-runtime";
13
- var StylesSet = class _StylesSet {
14
- static defaultPrivateIDAttribute = "data-styleset-private-id";
15
- static defaultPublicIDAttribute = "data-styleset-public-id";
16
- tagsPrivateIDAttribute = _StylesSet.defaultPrivateIDAttribute;
17
- tagsPublicIDAttribute = _StylesSet.defaultPublicIDAttribute;
18
- _items = /* @__PURE__ */ new Map();
19
- get items() {
20
- const sortedItemsArray = Array.from(this._items).map(([privateId, item]) => {
21
- const targetPosition = this.getTargetPosition(privateId) ?? 0;
22
- return { targetPosition, privateId, item };
23
- }).sort((a, b) => a.targetPosition - b.targetPosition).map(({ item, privateId }) => [privateId, item]);
24
- const sortedItemsMap = new Map(sortedItemsArray);
25
- return sortedItemsMap;
26
- }
27
- getTargetPosition(privateId) {
28
- const orderedStyles = Array.from(this._items).map(([privateId2, data]) => ({ privateId: privateId2, data })).sort((a, b) => {
29
- const aPos = a.data.position ?? 0;
30
- const bPos = b.data.position ?? 0;
31
- return aPos - bPos;
32
- });
33
- const foundIndex = orderedStyles.findIndex((item) => item.privateId === privateId);
34
- return foundIndex === -1 ? null : foundIndex;
35
- }
36
- setTagsPrivateIDAttribute(str) {
37
- this.tagsPrivateIDAttribute = str;
38
- return this;
39
- }
40
- setTagsPublicIDAttribute(str) {
41
- this.tagsPublicIDAttribute = str;
42
- return this;
43
- }
44
- getById(id) {
45
- const found = Array.from(this._items.values()).find((entry) => entry.id === id);
46
- if (found === void 0) return void 0;
47
- return found;
48
- }
49
- generateUniquePrivateId() {
50
- const existingIds = Array.from(this._items.keys());
51
- const generated = randomHash(12);
52
- if (existingIds.includes(generated)) return this.generateUniquePrivateId();
53
- return generated;
54
- }
55
- _rendered = /* @__PURE__ */ new Map();
56
- render(element) {
57
- const root = reactCreateRoot(element);
58
- const items = this.items;
59
- root.render(/* @__PURE__ */ jsx(
60
- StylesSetComp,
61
- {
62
- items,
63
- privateIDAttribute: this.tagsPrivateIDAttribute,
64
- publicIDAttribute: this.tagsPublicIDAttribute
65
- }
66
- ));
67
- this._rendered.set(element, root);
68
- return this;
69
- }
70
- unmount(element) {
71
- if (!this._rendered.has(element)) return this;
72
- const root = this._rendered.get(element);
73
- if (root === void 0) return this;
74
- root.unmount();
75
- this._rendered.delete(element);
76
- return this;
77
- }
78
- updateRendered() {
79
- const { items } = this;
80
- this._rendered.forEach((root) => root.render(/* @__PURE__ */ jsx(
81
- StylesSetComp,
82
- {
83
- items,
84
- privateIDAttribute: this.tagsPrivateIDAttribute,
85
- publicIDAttribute: this.tagsPublicIDAttribute
86
- }
87
- )));
88
- return this;
89
- }
90
- addItem(item, abortIfIdExists = true) {
91
- const existing = Array.from(this._items.entries()).map(([privateId2, entry]) => ({ privateId: privateId2, entry })).find(({ entry }) => entry.id !== void 0 && entry.id === item.id);
92
- if (existing !== void 0) {
93
- if (abortIfIdExists) return this;
94
- this._items.delete(existing.privateId);
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Component } from 'react';
3
+ import { createRoot as reactCreateRoot } from 'react-dom/client';
4
+ import { randomHash } from '../../random/uuid/index.js';
5
+ export class StylesSet {
6
+ static defaultPrivateIDAttribute = 'data-styleset-private-id';
7
+ static defaultPublicIDAttribute = 'data-styleset-public-id';
8
+ tagsPrivateIDAttribute = StylesSet.defaultPrivateIDAttribute;
9
+ tagsPublicIDAttribute = StylesSet.defaultPublicIDAttribute;
10
+ _items = new Map();
11
+ get items() {
12
+ const sortedItemsArray = Array.from(this._items).map(([privateId, item]) => {
13
+ const targetPosition = this.getTargetPosition(privateId) ?? 0;
14
+ return { targetPosition, privateId, item };
15
+ }).sort((a, b) => a.targetPosition - b.targetPosition)
16
+ .map(({ item, privateId }) => [privateId, item]);
17
+ const sortedItemsMap = new Map(sortedItemsArray);
18
+ return sortedItemsMap;
95
19
  }
96
- const privateId = this.generateUniquePrivateId();
97
- this._items.set(privateId, item);
98
- this.updateRendered();
99
- return this;
100
- }
101
- removeItem(idOrPosition) {
102
- if (typeof idOrPosition === "string") {
103
- const existing = Array.from(this._items.entries()).map(([privateId, entry]) => ({ privateId, entry })).find(({ entry }) => entry.id !== void 0 && entry.id === idOrPosition);
104
- if (existing === void 0) return this;
105
- this._items.delete(existing.privateId);
106
- this.updateRendered();
107
- return this;
20
+ getTargetPosition(privateId) {
21
+ const orderedStyles = Array.from(this._items)
22
+ .map(([privateId, data]) => ({ privateId, data }))
23
+ .sort((a, b) => {
24
+ const aPos = a.data.position ?? 0;
25
+ const bPos = b.data.position ?? 0;
26
+ return aPos - bPos;
27
+ });
28
+ const foundIndex = orderedStyles.findIndex(item => item.privateId === privateId);
29
+ return foundIndex === -1 ? null : foundIndex;
108
30
  }
109
- const toRemove = Array.from(this._items).map(([privateId, entry]) => ({ privateId, entry })).at(idOrPosition);
110
- if (toRemove === void 0) return this;
111
- this._items.delete(toRemove.privateId);
112
- this.updateRendered();
113
- return this;
114
- }
115
- async getDomString(documentObj) {
116
- const actualDocumentObj = documentObj ?? window.document;
117
- if (actualDocumentObj === null) throw new Error("Window.document is not available");
118
- return await new Promise((resolve) => {
119
- const tempElt = actualDocumentObj.createElement("div");
120
- const tempRoot = reactCreateRoot(tempElt);
121
- const { items } = this;
122
- const onRendered = () => {
123
- resolve(tempElt.innerHTML);
124
- tempRoot.unmount();
125
- tempElt.remove();
126
- };
127
- tempRoot.render(/* @__PURE__ */ jsx(
128
- StylesSetComp,
129
- {
130
- items,
131
- privateIDAttribute: this.tagsPrivateIDAttribute,
132
- publicIDAttribute: this.tagsPublicIDAttribute,
133
- onRendered
31
+ setTagsPrivateIDAttribute(str) {
32
+ this.tagsPrivateIDAttribute = str;
33
+ return this;
34
+ }
35
+ setTagsPublicIDAttribute(str) {
36
+ this.tagsPublicIDAttribute = str;
37
+ return this;
38
+ }
39
+ getById(id) {
40
+ const found = Array.from(this._items.values())
41
+ .find(entry => entry.id === id);
42
+ if (found === undefined)
43
+ return undefined;
44
+ return found;
45
+ }
46
+ generateUniquePrivateId() {
47
+ const existingIds = Array.from(this._items.keys());
48
+ const generated = randomHash(12);
49
+ if (existingIds.includes(generated))
50
+ return this.generateUniquePrivateId();
51
+ return generated;
52
+ }
53
+ _rendered = new Map();
54
+ render(element) {
55
+ const root = reactCreateRoot(element);
56
+ const items = this.items;
57
+ root.render(_jsx(StylesSetComp, { items: items, privateIDAttribute: this.tagsPrivateIDAttribute, publicIDAttribute: this.tagsPublicIDAttribute }));
58
+ this._rendered.set(element, root);
59
+ return this;
60
+ }
61
+ unmount(element) {
62
+ if (!this._rendered.has(element))
63
+ return this;
64
+ const root = this._rendered.get(element);
65
+ if (root === undefined)
66
+ return this;
67
+ root.unmount();
68
+ this._rendered.delete(element);
69
+ return this;
70
+ }
71
+ updateRendered() {
72
+ const { items } = this;
73
+ this._rendered.forEach((root) => root.render(_jsx(StylesSetComp, { items: items, privateIDAttribute: this.tagsPrivateIDAttribute, publicIDAttribute: this.tagsPublicIDAttribute })));
74
+ return this;
75
+ }
76
+ addItem(item, abortIfIdExists = true) {
77
+ const existing = Array
78
+ .from(this._items.entries())
79
+ .map(([privateId, entry]) => ({ privateId, entry }))
80
+ .find(({ entry }) => (entry.id !== undefined && entry.id === item.id));
81
+ if (existing !== undefined) {
82
+ if (abortIfIdExists)
83
+ return this;
84
+ this._items.delete(existing.privateId);
134
85
  }
135
- ));
136
- });
137
- }
138
- };
139
- var StylesSetComp = class extends Component {
140
- componentDidMount() {
141
- const { props } = this;
142
- const { onRendered } = props;
143
- if (onRendered !== void 0) onRendered();
144
- }
145
- componentDidUpdate() {
146
- const { props } = this;
147
- const { onRendered } = props;
148
- if (onRendered !== void 0) onRendered();
149
- }
150
- render() {
151
- const { props } = this;
152
- const items = props.items ?? /* @__PURE__ */ new Map();
153
- const pidAttr = props.privateIDAttribute ?? StylesSet.defaultPrivateIDAttribute;
154
- const idAttr = props.publicIDAttribute ?? StylesSet.defaultPublicIDAttribute;
155
- return /* @__PURE__ */ jsx(Fragment, { children: Array.from(items).map(([privateId, itemData]) => {
156
- const customAttributes = { [pidAttr]: privateId, [idAttr]: itemData.id };
157
- if (itemData.type === "url") return /* @__PURE__ */ jsx(
158
- "link",
159
- {
160
- onLoad: itemData.onLoad,
161
- rel: "stylesheet",
162
- href: itemData.content,
163
- ...customAttributes
86
+ const privateId = this.generateUniquePrivateId();
87
+ this._items.set(privateId, item);
88
+ this.updateRendered();
89
+ return this;
90
+ }
91
+ removeItem(idOrPosition) {
92
+ if (typeof idOrPosition === 'string') {
93
+ const existing = Array
94
+ .from(this._items.entries())
95
+ .map(([privateId, entry]) => ({ privateId, entry }))
96
+ .find(({ entry }) => (entry.id !== undefined && entry.id === idOrPosition));
97
+ if (existing === undefined)
98
+ return this;
99
+ this._items.delete(existing.privateId);
100
+ this.updateRendered();
101
+ return this;
164
102
  }
165
- );
166
- return /* @__PURE__ */ jsx("style", { ...customAttributes, children: itemData.content });
167
- }) });
168
- }
169
- };
170
- export {
171
- StylesSet,
172
- StylesSetComp
173
- };
103
+ const toRemove = Array
104
+ .from(this._items)
105
+ .map(([privateId, entry]) => ({ privateId, entry }))
106
+ .at(idOrPosition);
107
+ if (toRemove === undefined)
108
+ return this;
109
+ this._items.delete(toRemove.privateId);
110
+ this.updateRendered();
111
+ return this;
112
+ }
113
+ async getDomString(documentObj) {
114
+ const actualDocumentObj = documentObj ?? window.document;
115
+ if (actualDocumentObj === null)
116
+ throw new Error('Window.document is not available');
117
+ return await new Promise(resolve => {
118
+ const tempElt = actualDocumentObj.createElement('div');
119
+ const tempRoot = reactCreateRoot(tempElt);
120
+ const { items } = this;
121
+ const onRendered = () => {
122
+ resolve(tempElt.innerHTML);
123
+ tempRoot.unmount();
124
+ tempElt.remove();
125
+ };
126
+ tempRoot.render(_jsx(StylesSetComp, { items: items, privateIDAttribute: this.tagsPrivateIDAttribute, publicIDAttribute: this.tagsPublicIDAttribute, onRendered: onRendered }));
127
+ });
128
+ }
129
+ }
130
+ export class StylesSetComp extends Component {
131
+ componentDidMount() {
132
+ const { props } = this;
133
+ const { onRendered } = props;
134
+ if (onRendered !== undefined)
135
+ onRendered();
136
+ }
137
+ componentDidUpdate() {
138
+ const { props } = this;
139
+ const { onRendered } = props;
140
+ if (onRendered !== undefined)
141
+ onRendered();
142
+ }
143
+ render() {
144
+ const { props } = this;
145
+ const items = props.items ?? new Map();
146
+ const pidAttr = props.privateIDAttribute ?? StylesSet.defaultPrivateIDAttribute;
147
+ const idAttr = props.publicIDAttribute ?? StylesSet.defaultPublicIDAttribute;
148
+ return _jsx(_Fragment, { children: Array.from(items).map(([privateId, itemData]) => {
149
+ const customAttributes = { [pidAttr]: privateId, [idAttr]: itemData.id };
150
+ if (itemData.type === 'url')
151
+ return _jsx("link", { onLoad: itemData.onLoad, rel: 'stylesheet', href: itemData.content, ...customAttributes });
152
+ return _jsx("style", { ...customAttributes, children: itemData.content });
153
+ }) });
154
+ }
155
+ }
@@ -1,53 +1,47 @@
1
- import "../../../chunks/chunk-WSFCRVEQ.js";
2
-
3
- // src/agnostic/errors/register/index.ts
4
- function makeSource(s) {
5
- return s;
6
- }
7
- function from(source) {
8
- function getMessage(code) {
9
- const message = source[code]?.message;
10
- if (message === void 0) throw new Error("Unknown code");
11
- return message;
12
- }
13
- function getDetailsMaker(code) {
14
- const maker = source[code]?.detailsMaker;
15
- if (maker === void 0) throw new Error("Unknown code");
16
- return maker;
17
- }
18
- function getDetails(code, ...params) {
19
- const maker = getDetailsMaker(code);
20
- const details = maker?.(...params);
21
- return details;
22
- }
23
- function getErrorData(code, ...params) {
24
- const message = getMessage(code);
25
- const details = getDetails(code, ...params);
26
- return { code, message, details };
27
- }
28
- class RegisteredError extends Error {
29
- code;
30
- details;
31
- constructor(code, ...params) {
32
- const data = getErrorData(code, ...params);
33
- super(data.message);
34
- this.code = data.code;
35
- this.details = data.details;
1
+ export function makeSource(s) { return s; }
2
+ // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
3
+ export function from(source) {
4
+ function getMessage(code) {
5
+ const message = source[code]?.message;
6
+ if (message === undefined)
7
+ throw new Error('Unknown code');
8
+ return message;
9
+ }
10
+ function getDetailsMaker(code) {
11
+ const maker = source[code]?.detailsMaker;
12
+ if (maker === undefined)
13
+ throw new Error('Unknown code');
14
+ return maker;
15
+ }
16
+ function getDetails(code, ...params) {
17
+ const maker = getDetailsMaker(code);
18
+ const details = maker?.(...params);
19
+ return details;
20
+ }
21
+ function getErrorData(code, ...params) {
22
+ const message = getMessage(code);
23
+ const details = getDetails(code, ...params);
24
+ return { code, message, details };
25
+ }
26
+ class RegisteredError extends Error {
27
+ code;
28
+ details;
29
+ constructor(code, ...params) {
30
+ const data = getErrorData(code, ...params);
31
+ super(data.message);
32
+ this.code = data.code;
33
+ this.details = data.details;
34
+ }
35
+ }
36
+ function getError(code, ...params) {
37
+ return new RegisteredError(code, ...params);
36
38
  }
37
- }
38
- function getError(code, ...params) {
39
- return new RegisteredError(code, ...params);
40
- }
41
- return {
42
- getMessage,
43
- getDetailsMaker,
44
- getDetails,
45
- getErrorData,
46
- getError,
47
- source
48
- };
39
+ return {
40
+ getMessage,
41
+ getDetailsMaker,
42
+ getDetails,
43
+ getErrorData,
44
+ getError,
45
+ source
46
+ };
49
47
  }
50
- export {
51
- from,
52
- makeSource
53
- };
@@ -1,7 +1,18 @@
1
- import {
2
- unknownToString
3
- } from "../../../chunks/chunk-PUQUSA6S.js";
4
- import "../../../chunks/chunk-WSFCRVEQ.js";
5
- export {
6
- unknownToString
7
- };
1
+ /**
2
+ * Converts an unknown object into a string
3
+ *
4
+ * @param {unknown} unk - the unknown object to stringify
5
+ * @returns {string} The stringified object
6
+ */
7
+ export function unknownToString(unk, encoding) {
8
+ if (unk instanceof Error)
9
+ return unk.message;
10
+ if (unk instanceof Buffer)
11
+ return unk.toString(encoding ?? 'utf-8');
12
+ if (typeof unk === 'string')
13
+ return unk;
14
+ if (typeof unk === 'object' && unk !== null)
15
+ return JSON.stringify(unk);
16
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
17
+ return `${unk}`;
18
+ }
@@ -0,0 +1,35 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { unknownToString } from './index.js';
3
+ describe('unknownToString', () => {
4
+ it('returns error message for Error instances', () => {
5
+ const error = new Error('test error message');
6
+ expect(unknownToString(error)).toBe('test error message');
7
+ });
8
+ it('returns the string for string inputs', () => {
9
+ expect(unknownToString('test string')).toBe('test string');
10
+ expect(unknownToString('')).toBe('');
11
+ });
12
+ it('returns JSON stringified object for objects', () => {
13
+ expect(unknownToString({ a: 1, b: 'test' })).toBe('{"a":1,"b":"test"}');
14
+ expect(unknownToString({ nested: { value: 42 } })).toBe('{"nested":{"value":42}}');
15
+ });
16
+ it('returns JSON stringified array for arrays', () => {
17
+ expect(unknownToString([1, 2, 3])).toBe('[1,2,3]');
18
+ expect(unknownToString(['a', 'b', 'c'])).toBe('["a","b","c"]');
19
+ });
20
+ it('returns stringified number for numbers', () => {
21
+ expect(unknownToString(42)).toBe('42');
22
+ expect(unknownToString(0)).toBe('0');
23
+ expect(unknownToString(-123)).toBe('-123');
24
+ });
25
+ it('returns stringified boolean for booleans', () => {
26
+ expect(unknownToString(true)).toBe('true');
27
+ expect(unknownToString(false)).toBe('false');
28
+ });
29
+ it('returns stringified null for null', () => {
30
+ expect(unknownToString(null)).toBe('null');
31
+ });
32
+ it('returns stringified undefined for undefined', () => {
33
+ expect(unknownToString(undefined)).toBe('undefined');
34
+ });
35
+ });