@design-edito/tools 0.4.22 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (505) hide show
  1. package/agnostic/arrays/find-duplicates/index.d.ts +1 -1
  2. package/agnostic/arrays/find-duplicates/index.js +3 -2
  3. package/agnostic/arrays/is-array-of/index.d.ts +1 -1
  4. package/agnostic/arrays/is-array-of/index.js +3 -1
  5. package/agnostic/arrays/make/index.d.ts +1 -1
  6. package/agnostic/arrays/random-pick/index.js +2 -1
  7. package/agnostic/arrays/shuffle/index.js +1 -1
  8. package/agnostic/booleans/is-falsy/index.d.ts +3 -3
  9. package/agnostic/booleans/is-falsy/index.js +2 -3
  10. package/agnostic/colors/channels/index.d.ts +16 -16
  11. package/agnostic/colors/channels/index.js +15 -15
  12. package/agnostic/colors/contrast/index.d.ts +6 -6
  13. package/agnostic/colors/contrast/index.js +6 -8
  14. package/agnostic/colors/contrast/index.test.js +1 -1
  15. package/agnostic/colors/convert/index.d.ts +43 -43
  16. package/agnostic/colors/convert/index.js +60 -55
  17. package/agnostic/colors/distance/index.d.ts +5 -5
  18. package/agnostic/colors/distance/index.js +5 -4
  19. package/agnostic/colors/grayscale/index.d.ts +3 -3
  20. package/agnostic/colors/grayscale/index.js +3 -3
  21. package/agnostic/colors/index.d.ts +1 -1
  22. package/agnostic/colors/index.js +1 -1
  23. package/agnostic/colors/invert/index.d.ts +4 -4
  24. package/agnostic/colors/invert/index.js +3 -3
  25. package/agnostic/colors/lerp/index.d.ts +6 -7
  26. package/agnostic/colors/lerp/index.js +5 -6
  27. package/agnostic/colors/luminance/index.d.ts +4 -4
  28. package/agnostic/colors/luminance/index.js +3 -3
  29. package/agnostic/colors/palette/index.d.ts +3 -3
  30. package/agnostic/colors/palette/index.js +4 -3
  31. package/agnostic/colors/rotate/index.d.ts +4 -4
  32. package/agnostic/colors/rotate/index.js +4 -4
  33. package/agnostic/colors/tidy/index.d.ts +2 -2
  34. package/agnostic/colors/tidy/index.js +2 -2
  35. package/agnostic/colors/typechecks/index.d.ts +21 -21
  36. package/agnostic/colors/typechecks/index.js +22 -21
  37. package/agnostic/colors/types.d.ts +33 -33
  38. package/agnostic/css/bem/index.d.ts +11 -11
  39. package/agnostic/css/bem/index.js +9 -8
  40. package/agnostic/css/clss/index.d.ts +1 -1
  41. package/agnostic/css/clss/index.js +1 -1
  42. package/agnostic/css/index.d.ts +1 -1
  43. package/agnostic/css/index.js +1 -1
  44. package/agnostic/css/is-valid-css-class-name/index.d.ts +2 -2
  45. package/agnostic/css/is-valid-css-class-name/index.js +3 -3
  46. package/agnostic/css/scale/index.d.ts +18 -18
  47. package/agnostic/css/scale/index.js +18 -18
  48. package/agnostic/css/styles-set/index.d.ts +1 -1
  49. package/agnostic/css/styles-set/index.js +0 -2
  50. package/agnostic/errors/register/index.d.ts +1 -1
  51. package/agnostic/errors/register/index.js +3 -0
  52. package/agnostic/errors/unknown-to-string/index.d.ts +2 -2
  53. package/agnostic/errors/unknown-to-string/index.js +2 -3
  54. package/agnostic/html/deep-select/index.d.ts +3 -3
  55. package/agnostic/html/deep-select/index.js +11 -7
  56. package/agnostic/html/get-node-ancestors/index.d.ts +3 -3
  57. package/agnostic/html/get-node-ancestors/index.js +3 -3
  58. package/agnostic/html/get-position-inside-parent/index.d.ts +2 -2
  59. package/agnostic/html/get-position-inside-parent/index.js +2 -2
  60. package/agnostic/html/hyper-json/cast/index.d.ts +1 -1
  61. package/agnostic/html/hyper-json/cast/index.js +6 -5
  62. package/agnostic/html/hyper-json/method/index.d.ts +2 -2
  63. package/agnostic/html/hyper-json/serialize/index.d.ts +1 -1
  64. package/agnostic/html/hyper-json/serialize/index.js +9 -5
  65. package/agnostic/html/hyper-json/smart-tags/coalesced/addclass/index.js +1 -0
  66. package/agnostic/html/hyper-json/smart-tags/coalesced/and/index.d.ts +1 -1
  67. package/agnostic/html/hyper-json/smart-tags/coalesced/append/index.d.ts +1 -1
  68. package/agnostic/html/hyper-json/smart-tags/coalesced/append/index.js +1 -0
  69. package/agnostic/html/hyper-json/smart-tags/coalesced/at/index.d.ts +1 -1
  70. package/agnostic/html/hyper-json/smart-tags/coalesced/at/index.js +1 -0
  71. package/agnostic/html/hyper-json/smart-tags/coalesced/call/index.d.ts +1 -1
  72. package/agnostic/html/hyper-json/smart-tags/coalesced/call/index.js +1 -1
  73. package/agnostic/html/hyper-json/smart-tags/coalesced/clone/index.d.ts +1 -1
  74. package/agnostic/html/hyper-json/smart-tags/coalesced/deleteproperties/index.d.ts +1 -1
  75. package/agnostic/html/hyper-json/smart-tags/coalesced/deleteproperties/index.js +0 -1
  76. package/agnostic/html/hyper-json/smart-tags/coalesced/equals/index.d.ts +1 -1
  77. package/agnostic/html/hyper-json/smart-tags/coalesced/getattribute/index.js +1 -0
  78. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperties/index.d.ts +1 -1
  79. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperty/index.d.ts +1 -1
  80. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperty/index.js +1 -2
  81. package/agnostic/html/hyper-json/smart-tags/coalesced/hjparse/index.d.ts +1 -1
  82. package/agnostic/html/hyper-json/smart-tags/coalesced/hjstringify/index.d.ts +1 -1
  83. package/agnostic/html/hyper-json/smart-tags/coalesced/hjstringify/index.js +4 -0
  84. package/agnostic/html/hyper-json/smart-tags/coalesced/if/index.d.ts +1 -1
  85. package/agnostic/html/hyper-json/smart-tags/coalesced/if/index.js +1 -0
  86. package/agnostic/html/hyper-json/smart-tags/coalesced/index.d.ts +11 -11
  87. package/agnostic/html/hyper-json/smart-tags/coalesced/index.js +11 -11
  88. package/agnostic/html/hyper-json/smart-tags/coalesced/initialize/index.d.ts +1 -1
  89. package/agnostic/html/hyper-json/smart-tags/coalesced/initialize/index.js +1 -0
  90. package/agnostic/html/hyper-json/smart-tags/coalesced/join/index.d.ts +1 -1
  91. package/agnostic/html/hyper-json/smart-tags/coalesced/length/index.d.ts +1 -1
  92. package/agnostic/html/hyper-json/smart-tags/coalesced/map/index.d.ts +1 -1
  93. package/agnostic/html/hyper-json/smart-tags/coalesced/or/index.d.ts +1 -1
  94. package/agnostic/html/hyper-json/smart-tags/coalesced/pickrandom/index.d.ts +1 -1
  95. package/agnostic/html/hyper-json/smart-tags/coalesced/populate/index.d.ts +1 -1
  96. package/agnostic/html/hyper-json/smart-tags/coalesced/populate/index.js +1 -0
  97. package/agnostic/html/hyper-json/smart-tags/coalesced/print/index.d.ts +1 -1
  98. package/agnostic/html/hyper-json/smart-tags/coalesced/print/index.js +2 -0
  99. package/agnostic/html/hyper-json/smart-tags/coalesced/push/index.d.ts +1 -1
  100. package/agnostic/html/hyper-json/smart-tags/coalesced/pusheach/index.d.ts +1 -1
  101. package/agnostic/html/hyper-json/smart-tags/coalesced/pusheach/index.js +1 -0
  102. package/agnostic/html/hyper-json/smart-tags/coalesced/recordtoarray/index.d.ts +1 -1
  103. package/agnostic/html/hyper-json/smart-tags/coalesced/removeattribute/index.js +3 -0
  104. package/agnostic/html/hyper-json/smart-tags/coalesced/removeclass/index.js +1 -0
  105. package/agnostic/html/hyper-json/smart-tags/coalesced/renameproperty/index.d.ts +1 -1
  106. package/agnostic/html/hyper-json/smart-tags/coalesced/renameproperty/index.js +1 -0
  107. package/agnostic/html/hyper-json/smart-tags/coalesced/replace/index.d.ts +1 -1
  108. package/agnostic/html/hyper-json/smart-tags/coalesced/replace/index.js +1 -0
  109. package/agnostic/html/hyper-json/smart-tags/coalesced/select/index.js +1 -0
  110. package/agnostic/html/hyper-json/smart-tags/coalesced/set/index.d.ts +1 -1
  111. package/agnostic/html/hyper-json/smart-tags/coalesced/set/index.js +1 -0
  112. package/agnostic/html/hyper-json/smart-tags/coalesced/setattribute/index.js +3 -0
  113. package/agnostic/html/hyper-json/smart-tags/coalesced/setproperty/index.d.ts +1 -1
  114. package/agnostic/html/hyper-json/smart-tags/coalesced/setproperty/index.js +4 -2
  115. package/agnostic/html/hyper-json/smart-tags/coalesced/sorton/index.d.ts +1 -1
  116. package/agnostic/html/hyper-json/smart-tags/coalesced/sorton/index.js +5 -0
  117. package/agnostic/html/hyper-json/smart-tags/coalesced/spread/index.d.ts +1 -1
  118. package/agnostic/html/hyper-json/smart-tags/coalesced/spread/index.js +1 -0
  119. package/agnostic/html/hyper-json/smart-tags/coalesced/toarray/index.d.ts +1 -1
  120. package/agnostic/html/hyper-json/smart-tags/coalesced/toboolean/index.d.ts +1 -1
  121. package/agnostic/html/hyper-json/smart-tags/coalesced/toelement/index.d.ts +1 -1
  122. package/agnostic/html/hyper-json/smart-tags/coalesced/toggleclass/index.js +3 -2
  123. package/agnostic/html/hyper-json/smart-tags/coalesced/tonodelist/index.d.ts +1 -1
  124. package/agnostic/html/hyper-json/smart-tags/coalesced/tonull/index.d.ts +1 -1
  125. package/agnostic/html/hyper-json/smart-tags/coalesced/tonumber/index.d.ts +1 -1
  126. package/agnostic/html/hyper-json/smart-tags/coalesced/torecord/index.d.ts +1 -1
  127. package/agnostic/html/hyper-json/smart-tags/coalesced/toref/index.d.ts +1 -1
  128. package/agnostic/html/hyper-json/smart-tags/coalesced/tostring/index.d.ts +1 -1
  129. package/agnostic/html/hyper-json/smart-tags/coalesced/totext/index.d.ts +1 -1
  130. package/agnostic/html/hyper-json/smart-tags/coalesced/transformselected/index.d.ts +1 -1
  131. package/agnostic/html/hyper-json/smart-tags/coalesced/trim/index.js +1 -1
  132. package/agnostic/html/hyper-json/smart-tags/index.d.ts +1 -1
  133. package/agnostic/html/hyper-json/smart-tags/isolated/any/index.d.ts +1 -1
  134. package/agnostic/html/hyper-json/smart-tags/isolated/array/index.d.ts +1 -1
  135. package/agnostic/html/hyper-json/smart-tags/isolated/get/index.d.ts +1 -1
  136. package/agnostic/html/hyper-json/smart-tags/isolated/guess/index.d.ts +1 -1
  137. package/agnostic/html/hyper-json/smart-tags/isolated/guess/index.js +3 -1
  138. package/agnostic/html/hyper-json/smart-tags/isolated/index.d.ts +1 -1
  139. package/agnostic/html/hyper-json/smart-tags/isolated/index.js +1 -1
  140. package/agnostic/html/hyper-json/smart-tags/isolated/nodelist/index.d.ts +1 -1
  141. package/agnostic/html/hyper-json/smart-tags/isolated/nodelist/index.js +1 -0
  142. package/agnostic/html/hyper-json/smart-tags/isolated/null/index.d.ts +1 -1
  143. package/agnostic/html/hyper-json/smart-tags/isolated/record/index.d.ts +1 -1
  144. package/agnostic/html/hyper-json/smart-tags/isolated/ref/index.d.ts +1 -1
  145. package/agnostic/html/hyper-json/smart-tags/isolated/ref/index.js +3 -1
  146. package/agnostic/html/hyper-json/smart-tags/isolated/text/index.js +2 -2
  147. package/agnostic/html/hyper-json/transformer/index.d.ts +5 -5
  148. package/agnostic/html/hyper-json/tree/index.d.ts +1 -1
  149. package/agnostic/html/hyper-json/tree/index.js +14 -8
  150. package/agnostic/html/hyper-json/types/index.d.ts +11 -11
  151. package/agnostic/html/hyper-json/utils/index.d.ts +3 -3
  152. package/agnostic/html/hyper-json/utils/index.js +8 -3
  153. package/agnostic/html/index.d.ts +1 -1
  154. package/agnostic/html/index.js +1 -1
  155. package/agnostic/html/insert-node/index.d.ts +4 -4
  156. package/agnostic/html/insert-node/index.js +4 -4
  157. package/agnostic/html/replace-in-element/index.d.ts +3 -3
  158. package/agnostic/html/replace-in-element/index.js +4 -4
  159. package/agnostic/html/selector-to-element/index.d.ts +2 -2
  160. package/agnostic/html/selector-to-element/index.js +11 -11
  161. package/agnostic/html/string-to-nodes/index.d.ts +3 -3
  162. package/agnostic/html/string-to-nodes/index.js +3 -3
  163. package/agnostic/html/watch-selection/index.d.ts +4 -5
  164. package/agnostic/html/watch-selection/index.js +5 -6
  165. package/agnostic/misc/assert/index.js +3 -1
  166. package/agnostic/misc/cast/index.d.ts +16 -16
  167. package/agnostic/misc/cast/index.js +18 -18
  168. package/agnostic/misc/connection/index.d.ts +5 -5
  169. package/agnostic/misc/connection/index.js +4 -2
  170. package/agnostic/misc/crawler/index.d.ts +18 -18
  171. package/agnostic/misc/crawler/index.js +10 -9
  172. package/agnostic/misc/crawler/index.test.js +2 -2
  173. package/agnostic/misc/crossenv/detect-runtime/index.d.ts +1 -1
  174. package/agnostic/misc/crossenv/detect-runtime/index.js +10 -11
  175. package/agnostic/misc/crossenv/window/index.d.ts +6 -6
  176. package/agnostic/misc/crossenv/window/index.js +6 -5
  177. package/agnostic/misc/data-size/index.js +2 -0
  178. package/agnostic/misc/index.d.ts +3 -3
  179. package/agnostic/misc/index.js +3 -3
  180. package/agnostic/misc/is-constructor-function/index.d.ts +2 -2
  181. package/agnostic/misc/is-constructor-function/index.js +3 -2
  182. package/agnostic/misc/is-constructor-function/index.test.js +2 -2
  183. package/agnostic/misc/is-nullish/index.d.ts +5 -5
  184. package/agnostic/misc/is-nullish/index.js +5 -4
  185. package/agnostic/misc/logs/index.d.ts +1 -1
  186. package/agnostic/misc/logs/index.js +1 -1
  187. package/agnostic/misc/logs/logger/index.js +2 -2
  188. package/agnostic/misc/lorem-ipsum/index.js +4 -4
  189. package/agnostic/misc/normalize-extension/index.d.ts +3 -3
  190. package/agnostic/misc/normalize-extension/index.js +4 -4
  191. package/agnostic/misc/outcome/index.d.ts +14 -14
  192. package/agnostic/misc/outcome/index.js +6 -4
  193. package/agnostic/numbers/absolute-modulo/index.d.ts +3 -3
  194. package/agnostic/numbers/absolute-modulo/index.js +3 -3
  195. package/agnostic/numbers/approximate-rational/index.d.ts +6 -6
  196. package/agnostic/numbers/approximate-rational/index.js +9 -9
  197. package/agnostic/numbers/clamp/index.d.ts +4 -4
  198. package/agnostic/numbers/clamp/index.js +4 -4
  199. package/agnostic/numbers/geometric-progressions/index.d.ts +5 -5
  200. package/agnostic/numbers/geometric-progressions/index.js +7 -5
  201. package/agnostic/numbers/geometric-progressions/index.test.js +2 -2
  202. package/agnostic/numbers/index.d.ts +1 -1
  203. package/agnostic/numbers/index.js +1 -1
  204. package/agnostic/numbers/interpolate/index.d.ts +8 -8
  205. package/agnostic/numbers/interpolate/index.js +8 -8
  206. package/agnostic/numbers/round/index.d.ts +9 -9
  207. package/agnostic/numbers/round/index.js +9 -9
  208. package/agnostic/objects/deep-get-property/index.d.ts +4 -4
  209. package/agnostic/objects/deep-get-property/index.js +3 -3
  210. package/agnostic/objects/enums/is-in-enum/index.d.ts +3 -3
  211. package/agnostic/objects/enums/is-in-enum/index.js +3 -3
  212. package/agnostic/objects/flatten-getters/index.d.ts +2 -2
  213. package/agnostic/objects/flatten-getters/index.js +3 -2
  214. package/agnostic/objects/index.d.ts +1 -1
  215. package/agnostic/objects/index.js +1 -1
  216. package/agnostic/objects/is-object/index.d.ts +4 -4
  217. package/agnostic/objects/is-object/index.js +4 -4
  218. package/agnostic/objects/is-record/index.d.ts +2 -2
  219. package/agnostic/objects/is-record/index.js +2 -2
  220. package/agnostic/objects/record-format/index.d.ts +9 -9
  221. package/agnostic/objects/record-format/index.js +8 -3
  222. package/agnostic/objects/record-map/index.d.ts +4 -4
  223. package/agnostic/objects/record-map/index.js +5 -3
  224. package/agnostic/objects/sort-keys/index.d.ts +3 -3
  225. package/agnostic/objects/sort-keys/index.js +4 -3
  226. package/agnostic/objects/validation/index.d.ts +3 -3
  227. package/agnostic/objects/validation/index.js +4 -3
  228. package/agnostic/optim/memoize/index.d.ts +2 -2
  229. package/agnostic/optim/memoize/index.js +4 -2
  230. package/agnostic/optim/throttle-debounce/index.d.ts +2 -2
  231. package/agnostic/optim/throttle-debounce/index.js +7 -6
  232. package/agnostic/optim/throttle-debounce/types.d.ts +2 -1
  233. package/agnostic/random/random/index.d.ts +7 -8
  234. package/agnostic/random/random/index.js +3 -3
  235. package/agnostic/random/uuid/index.d.ts +6 -6
  236. package/agnostic/random/uuid/index.js +6 -6
  237. package/agnostic/regexps/index.d.ts +30 -60
  238. package/agnostic/regexps/index.js +27 -26
  239. package/agnostic/sanitization/file-name/index.d.ts +3 -3
  240. package/agnostic/sanitization/file-name/index.js +10 -10
  241. package/agnostic/sanitization/html/index.d.ts +6 -6
  242. package/agnostic/sanitization/html/index.js +9 -6
  243. package/agnostic/sanitization/path/index.d.ts +2 -2
  244. package/agnostic/sanitization/path/index.js +2 -2
  245. package/agnostic/sanitization/user-input/index.js +1 -0
  246. package/agnostic/strings/char-codes/index.js +2 -6
  247. package/agnostic/strings/index.d.ts +1 -1
  248. package/agnostic/strings/index.js +1 -1
  249. package/agnostic/strings/normalize-indent/index.js +2 -2
  250. package/agnostic/strings/parse-table/index.d.ts +13 -13
  251. package/agnostic/strings/parse-table/index.js +31 -16
  252. package/agnostic/strings/replace-all/index.d.ts +1 -1
  253. package/agnostic/strings/replace-all/index.js +1 -0
  254. package/agnostic/strings/to-alphanum/index.js +2 -2
  255. package/agnostic/strings/trim/index.js +2 -2
  256. package/agnostic/time/dates/format-date/index.js +3 -1
  257. package/agnostic/time/dates/index.d.ts +1 -0
  258. package/agnostic/time/dates/index.js +1 -0
  259. package/agnostic/time/dates/to-french-republican/index.d.ts +16 -0
  260. package/agnostic/time/dates/to-french-republican/index.js +82 -0
  261. package/agnostic/time/dates/to-french-republican/index.test.d.ts +1 -0
  262. package/agnostic/time/dates/to-french-republican/index.test.js +112 -0
  263. package/agnostic/time/dates/to-french-republican/types.d.ts +91 -0
  264. package/agnostic/time/dates/to-french-republican/types.js +47 -0
  265. package/agnostic/time/dates/to-french-republican/utils.d.ts +32 -0
  266. package/agnostic/time/dates/to-french-republican/utils.js +155 -0
  267. package/agnostic/time/duration/index.js +2 -0
  268. package/agnostic/time/index.d.ts +2 -2
  269. package/agnostic/time/index.js +2 -2
  270. package/agnostic/time/timeout/index.js +9 -9
  271. package/agnostic/time/transitions/index.js +8 -7
  272. package/components/BeforeAfter/index.controlled.js +1 -0
  273. package/components/BeforeAfter/index.js +4 -0
  274. package/components/Button/index.d.ts +2 -7
  275. package/components/Button/index.js +2 -2
  276. package/components/Clippable/index.js +1 -0
  277. package/components/Drawer/index.js +1 -1
  278. package/components/Gallery/index.js +2 -1
  279. package/components/Gallery/utils.js +5 -1
  280. package/components/Iframe/index.d.ts +16 -34
  281. package/components/Iframe/index.js +70 -27
  282. package/components/Image/index.js +2 -0
  283. package/components/Input/index.controlled.d.ts +42 -0
  284. package/components/Input/index.controlled.js +54 -0
  285. package/components/Input/index.d.ts +21 -17
  286. package/components/Input/index.js +27 -18
  287. package/components/IntersectionObserver/index.js +5 -2
  288. package/components/JsonEditor/index.js +1 -1
  289. package/components/Overlayer/index.d.ts +1 -1
  290. package/components/ScrollListener/utils.d.ts +29 -0
  291. package/components/Select/index.controlled.d.ts +43 -0
  292. package/components/Select/index.controlled.js +54 -0
  293. package/components/Select/index.d.ts +22 -18
  294. package/components/Select/index.js +27 -18
  295. package/components/Sequencer/index.controlled.js +1 -1
  296. package/components/Subtitles/index.js +3 -1
  297. package/components/Subtitles/types.d.ts +14 -0
  298. package/components/Subtitles/utils.d.ts +19 -15
  299. package/components/Subtitles/utils.js +29 -24
  300. package/components/Textarea/index.controlled.d.ts +50 -0
  301. package/components/Textarea/index.controlled.js +75 -0
  302. package/components/Textarea/index.d.ts +22 -17
  303. package/components/Textarea/index.js +27 -18
  304. package/components/UIModule/index.js +3 -1
  305. package/components/Video/index.controlled.d.ts +1 -1
  306. package/components/Video/index.controlled.js +11 -10
  307. package/components/Video/index.js +27 -20
  308. package/components/Video/utils.d.ts +1 -1
  309. package/components/Video/utils.js +11 -2
  310. package/components/index.d.ts +1 -1
  311. package/components/index.js +1 -1
  312. package/components/utils/types.d.ts +5 -0
  313. package/node/@aws-s3/storage/directory/copy-dir/index.d.ts +9 -9
  314. package/node/@aws-s3/storage/directory/copy-dir/index.js +15 -12
  315. package/node/@aws-s3/storage/directory/index.d.ts +1 -1
  316. package/node/@aws-s3/storage/directory/index.js +1 -1
  317. package/node/@aws-s3/storage/directory/list/index.d.ts +5 -5
  318. package/node/@aws-s3/storage/directory/list/index.js +5 -5
  319. package/node/@aws-s3/storage/directory/move-dir/index.d.ts +6 -6
  320. package/node/@aws-s3/storage/directory/move-dir/index.js +11 -7
  321. package/node/@aws-s3/storage/directory/remove-dir/index.d.ts +5 -5
  322. package/node/@aws-s3/storage/directory/remove-dir/index.js +5 -5
  323. package/node/@aws-s3/storage/file/copy/index.d.ts +8 -8
  324. package/node/@aws-s3/storage/file/copy/index.js +12 -9
  325. package/node/@aws-s3/storage/file/download/index.d.ts +6 -6
  326. package/node/@aws-s3/storage/file/download/index.js +6 -5
  327. package/node/@aws-s3/storage/file/exists/index.d.ts +6 -6
  328. package/node/@aws-s3/storage/file/exists/index.js +15 -12
  329. package/node/@aws-s3/storage/file/index.d.ts +1 -1
  330. package/node/@aws-s3/storage/file/index.js +1 -1
  331. package/node/@aws-s3/storage/file/move/index.d.ts +9 -9
  332. package/node/@aws-s3/storage/file/move/index.js +18 -15
  333. package/node/@aws-s3/storage/file/remove/index.d.ts +5 -5
  334. package/node/@aws-s3/storage/file/remove/index.js +16 -11
  335. package/node/@aws-s3/storage/file/stat/index.d.ts +5 -5
  336. package/node/@aws-s3/storage/file/stat/index.js +10 -7
  337. package/node/@aws-s3/storage/file/upload/index.d.ts +7 -7
  338. package/node/@aws-s3/storage/file/upload/index.js +11 -9
  339. package/node/@express/@multer/index.d.ts +12 -12
  340. package/node/@express/@multer/index.js +27 -25
  341. package/node/@google-cloud/storage/bucket/get-metadata/index.d.ts +4 -4
  342. package/node/@google-cloud/storage/bucket/get-metadata/index.js +3 -3
  343. package/node/@google-cloud/storage/directory/copy-dir/index.d.ts +7 -7
  344. package/node/@google-cloud/storage/directory/copy-dir/index.js +6 -6
  345. package/node/@google-cloud/storage/directory/index.d.ts +1 -1
  346. package/node/@google-cloud/storage/directory/index.js +1 -1
  347. package/node/@google-cloud/storage/directory/list/index.d.ts +6 -6
  348. package/node/@google-cloud/storage/directory/list/index.js +5 -5
  349. package/node/@google-cloud/storage/directory/move-dir/index.d.ts +6 -6
  350. package/node/@google-cloud/storage/directory/move-dir/index.js +5 -5
  351. package/node/@google-cloud/storage/directory/remove-dir/index.d.ts +7 -7
  352. package/node/@google-cloud/storage/directory/remove-dir/index.js +6 -6
  353. package/node/@google-cloud/storage/file/copy/index.d.ts +9 -9
  354. package/node/@google-cloud/storage/file/copy/index.js +8 -8
  355. package/node/@google-cloud/storage/file/download/index.d.ts +7 -7
  356. package/node/@google-cloud/storage/file/download/index.js +5 -5
  357. package/node/@google-cloud/storage/file/exists/index.d.ts +7 -7
  358. package/node/@google-cloud/storage/file/exists/index.js +6 -6
  359. package/node/@google-cloud/storage/file/generate-signed-url/index.d.ts +7 -7
  360. package/node/@google-cloud/storage/file/generate-signed-url/index.js +6 -6
  361. package/node/@google-cloud/storage/file/get-metadata/index.d.ts +5 -5
  362. package/node/@google-cloud/storage/file/get-metadata/index.js +4 -4
  363. package/node/@google-cloud/storage/file/get-permissions/index.d.ts +6 -6
  364. package/node/@google-cloud/storage/file/get-permissions/index.js +4 -4
  365. package/node/@google-cloud/storage/file/index.d.ts +1 -1
  366. package/node/@google-cloud/storage/file/index.js +1 -1
  367. package/node/@google-cloud/storage/file/move/index.d.ts +10 -10
  368. package/node/@google-cloud/storage/file/move/index.js +9 -9
  369. package/node/@google-cloud/storage/file/remove/index.d.ts +5 -5
  370. package/node/@google-cloud/storage/file/remove/index.js +4 -4
  371. package/node/@google-cloud/storage/file/revoke-signed-urls/index.d.ts +5 -5
  372. package/node/@google-cloud/storage/file/revoke-signed-urls/index.js +5 -5
  373. package/node/@google-cloud/storage/file/stat/index.d.ts +5 -5
  374. package/node/@google-cloud/storage/file/stat/index.js +4 -4
  375. package/node/@google-cloud/storage/file/update-metadata/index.d.ts +7 -7
  376. package/node/@google-cloud/storage/file/update-metadata/index.js +5 -5
  377. package/node/@google-cloud/storage/file/upload/index.d.ts +7 -7
  378. package/node/@google-cloud/storage/file/upload/index.js +5 -5
  379. package/node/@google-cloud/storage/index.d.ts +1 -1
  380. package/node/@google-cloud/storage/index.js +1 -1
  381. package/node/cloud-storage/clients/index.d.ts +8 -8
  382. package/node/cloud-storage/clients/index.js +8 -8
  383. package/node/cloud-storage/operations/copy-dir/index.d.ts +22 -22
  384. package/node/cloud-storage/operations/copy-dir/index.js +5 -5
  385. package/node/cloud-storage/operations/copy-file/index.d.ts +22 -22
  386. package/node/cloud-storage/operations/copy-file/index.js +5 -5
  387. package/node/cloud-storage/operations/download-file/index.d.ts +19 -19
  388. package/node/cloud-storage/operations/download-file/index.js +6 -6
  389. package/node/cloud-storage/operations/exists-file/index.d.ts +15 -26
  390. package/node/cloud-storage/operations/exists-file/index.js +4 -4
  391. package/node/cloud-storage/operations/index.d.ts +1 -1
  392. package/node/cloud-storage/operations/index.js +1 -1
  393. package/node/cloud-storage/operations/list-dir/index.d.ts +15 -25
  394. package/node/cloud-storage/operations/list-dir/index.js +4 -4
  395. package/node/cloud-storage/operations/move-dir/index.d.ts +22 -22
  396. package/node/cloud-storage/operations/move-dir/index.js +5 -5
  397. package/node/cloud-storage/operations/move-file/index.d.ts +22 -22
  398. package/node/cloud-storage/operations/move-file/index.js +5 -5
  399. package/node/cloud-storage/operations/remove-dir/index.d.ts +18 -18
  400. package/node/cloud-storage/operations/remove-dir/index.js +4 -4
  401. package/node/cloud-storage/operations/remove-file/index.d.ts +18 -18
  402. package/node/cloud-storage/operations/remove-file/index.js +4 -4
  403. package/node/cloud-storage/operations/stat-file/index.d.ts +16 -16
  404. package/node/cloud-storage/operations/stat-file/index.js +4 -4
  405. package/node/cloud-storage/operations/upload-file/index.d.ts +23 -23
  406. package/node/cloud-storage/operations/upload-file/index.js +5 -5
  407. package/node/encryption/@aes-256-gcm/buffer/index.d.ts +6 -6
  408. package/node/encryption/@aes-256-gcm/buffer/index.js +6 -6
  409. package/node/encryption/@aes-256-gcm/uint8-array/index.d.ts +8 -8
  410. package/node/encryption/@aes-256-gcm/uint8-array/index.js +8 -8
  411. package/node/encryption/key/index.d.ts +6 -6
  412. package/node/encryption/key/index.js +6 -6
  413. package/node/files/read-write/index.d.ts +16 -16
  414. package/node/files/subpaths/index.d.ts +8 -8
  415. package/node/files/subpaths/index.js +11 -13
  416. package/node/ftps/directory/copy-dir/index.d.ts +6 -6
  417. package/node/ftps/directory/copy-dir/index.js +6 -6
  418. package/node/ftps/directory/list/index.d.ts +4 -4
  419. package/node/ftps/directory/list/index.js +3 -3
  420. package/node/ftps/directory/move-dir/index.d.ts +6 -6
  421. package/node/ftps/directory/move-dir/index.js +5 -5
  422. package/node/ftps/directory/remove-dir/index.d.ts +6 -6
  423. package/node/ftps/directory/remove-dir/index.js +8 -7
  424. package/node/ftps/file/copy/index.d.ts +6 -6
  425. package/node/ftps/file/copy/index.js +5 -5
  426. package/node/ftps/file/download/index.d.ts +6 -6
  427. package/node/ftps/file/download/index.js +5 -5
  428. package/node/ftps/file/exists/index.d.ts +3 -3
  429. package/node/ftps/file/exists/index.js +3 -3
  430. package/node/ftps/file/move/index.d.ts +8 -8
  431. package/node/ftps/file/move/index.js +11 -9
  432. package/node/ftps/file/remove/index.d.ts +5 -5
  433. package/node/ftps/file/remove/index.js +4 -4
  434. package/node/ftps/file/stat/index.d.ts +4 -4
  435. package/node/ftps/file/stat/index.js +4 -4
  436. package/node/ftps/file/upload/index.d.ts +7 -7
  437. package/node/ftps/file/upload/index.js +5 -5
  438. package/node/images/create/index.d.ts +2 -2
  439. package/node/images/create/index.js +1 -1
  440. package/node/images/format/index.d.ts +8 -8
  441. package/node/images/metadata/index.d.ts +2 -2
  442. package/node/images/transform/index.d.ts +2 -2
  443. package/node/images/transform/index.js +12 -2
  444. package/node/images/transform/operations/blur/index.d.ts +2 -2
  445. package/node/images/transform/operations/blur/index.js +1 -0
  446. package/node/images/transform/operations/brighten/index.d.ts +2 -2
  447. package/node/images/transform/operations/brighten/index.js +1 -0
  448. package/node/images/transform/operations/extend/index.d.ts +2 -2
  449. package/node/images/transform/operations/extend/index.js +1 -0
  450. package/node/images/transform/operations/extract/index.d.ts +2 -2
  451. package/node/images/transform/operations/extract/index.js +1 -0
  452. package/node/images/transform/operations/flatten/index.d.ts +2 -2
  453. package/node/images/transform/operations/flatten/index.js +1 -0
  454. package/node/images/transform/operations/flip/index.d.ts +2 -2
  455. package/node/images/transform/operations/flip/index.js +1 -0
  456. package/node/images/transform/operations/flop/index.d.ts +2 -2
  457. package/node/images/transform/operations/flop/index.js +1 -0
  458. package/node/images/transform/operations/hue/index.d.ts +2 -2
  459. package/node/images/transform/operations/hue/index.js +1 -0
  460. package/node/images/transform/operations/index.d.ts +1 -1
  461. package/node/images/transform/operations/index.js +1 -1
  462. package/node/images/transform/operations/level/index.d.ts +2 -2
  463. package/node/images/transform/operations/level/index.js +1 -0
  464. package/node/images/transform/operations/lighten/index.d.ts +2 -2
  465. package/node/images/transform/operations/lighten/index.js +1 -0
  466. package/node/images/transform/operations/normalize/index.d.ts +2 -2
  467. package/node/images/transform/operations/normalize/index.js +1 -0
  468. package/node/images/transform/operations/overlay/index.d.ts +2 -2
  469. package/node/images/transform/operations/resize/index.d.ts +2 -2
  470. package/node/images/transform/operations/resize/index.js +1 -0
  471. package/node/images/transform/operations/rotate/index.d.ts +2 -2
  472. package/node/images/transform/operations/rotate/index.js +1 -0
  473. package/node/images/transform/operations/saturate/index.d.ts +2 -2
  474. package/node/images/transform/operations/saturate/index.js +1 -0
  475. package/node/images/types.d.ts +41 -2
  476. package/node/images/utils/index.d.ts +10 -5
  477. package/node/index.d.ts +1 -1
  478. package/node/index.js +1 -1
  479. package/node/process/on-exit/index.js +2 -4
  480. package/node/process/prompt-continue/index.d.ts +3 -3
  481. package/node/process/prompt-continue/index.js +4 -3
  482. package/node/process/spawner/index.js +7 -6
  483. package/node/sftp/directory/copy-dir/index.d.ts +6 -6
  484. package/node/sftp/directory/copy-dir/index.js +6 -6
  485. package/node/sftp/directory/list/index.d.ts +3 -3
  486. package/node/sftp/directory/list/index.js +4 -4
  487. package/node/sftp/directory/move-dir/index.d.ts +7 -7
  488. package/node/sftp/directory/move-dir/index.js +7 -7
  489. package/node/sftp/directory/remove-dir/index.d.ts +5 -5
  490. package/node/sftp/directory/remove-dir/index.js +8 -7
  491. package/node/sftp/file/copy/index.d.ts +6 -6
  492. package/node/sftp/file/copy/index.js +5 -5
  493. package/node/sftp/file/download/index.d.ts +7 -7
  494. package/node/sftp/file/download/index.js +5 -5
  495. package/node/sftp/file/exists/index.d.ts +3 -3
  496. package/node/sftp/file/exists/index.js +3 -3
  497. package/node/sftp/file/move/index.d.ts +7 -7
  498. package/node/sftp/file/move/index.js +7 -7
  499. package/node/sftp/file/remove/index.d.ts +4 -4
  500. package/node/sftp/file/remove/index.js +4 -4
  501. package/node/sftp/file/stat/index.d.ts +3 -3
  502. package/node/sftp/file/stat/index.js +6 -5
  503. package/node/sftp/file/upload/index.d.ts +6 -6
  504. package/node/sftp/file/upload/index.js +5 -5
  505. package/package.json +40 -39
@@ -0,0 +1,155 @@
1
+ import { RepublicanMonth, ComplementaryDay, DecadeDay } from './types.js';
2
+ // Ordered lookup tables derived from the enums (declaration order).
3
+ /** The twelve month names, indexed by 0-based month index. */
4
+ export const MONTH_NAMES = Object.values(RepublicanMonth);
5
+ /** The six complementary day names, indexed by 0-based complementary index. */
6
+ export const COMPLEMENTARY_DAY_NAMES = Object.values(ComplementaryDay);
7
+ /** The ten décade day names, indexed by 0-based day-of-décade index. */
8
+ export const DECADE_DAY_NAMES = Object.values(DecadeDay);
9
+ // Paris Observatory meridian: 2°20'14" E ≈ +9m21s, expressed in days.
10
+ // The Republican astronomers used the Paris meridian to decide which civil day
11
+ // hosts the equinox, so we keep using it for every year.
12
+ const PARIS_MERIDIAN_OFFSET_DAYS = (2 + 20 / 60 + 14 / 3600) / 360;
13
+ const DEG_TO_RAD = Math.PI / 180;
14
+ // --- Julian Day -------------------------------------------------------------
15
+ /**
16
+ * Julian Day Number (integer, noon-based) for a proleptic Gregorian date.
17
+ *
18
+ * @param year - Gregorian year.
19
+ * @param month - Month, 1–12.
20
+ * @param day - Day of month, 1–31.
21
+ * @returns The Julian Day Number.
22
+ */
23
+ export function gregorianToJdn(year, month, day) {
24
+ const a = Math.floor((14 - month) / 12);
25
+ const y = year + 4800 - a;
26
+ const m = month + 12 * a - 3;
27
+ return (day
28
+ + Math.floor((153 * m + 2) / 5)
29
+ + 365 * y
30
+ + Math.floor(y / 4)
31
+ - Math.floor(y / 100)
32
+ + Math.floor(y / 400)
33
+ - 32045);
34
+ }
35
+ // --- Astronomy: September equinox (Meeus, "Astronomical Algorithms", ch. 27) --
36
+ // Periodic-term table 27.A: rows of [A, B (deg), C (deg)].
37
+ const EQUINOX_TERMS = [
38
+ [485, 324.96, 1934.136], [203, 337.23, 32964.467], [199, 342.08, 20.186],
39
+ [182, 27.85, 445267.112], [156, 73.14, 45036.886], [136, 171.52, 22518.443],
40
+ [77, 222.54, 65928.934], [74, 296.72, 3034.906], [70, 243.58, 9037.513],
41
+ [58, 119.81, 33718.147], [52, 297.17, 150.678], [50, 21.02, 2281.226],
42
+ [45, 247.54, 29929.562], [44, 325.15, 31555.956], [29, 60.93, 4443.417],
43
+ [18, 155.12, 67555.328], [17, 288.79, 4562.452], [16, 198.04, 62894.029],
44
+ [14, 199.76, 31436.921], [12, 95.39, 14577.848], [12, 287.11, 31931.756],
45
+ [12, 320.81, 34777.259], [9, 227.73, 1222.114], [8, 15.45, 16859.074]
46
+ ];
47
+ // Instant of the September equinox for a Gregorian year, as a Julian Ephemeris
48
+ // Day (JDE) in Dynamical Time (TD). Valid roughly for years 1000..3000.
49
+ function septemberEquinoxJde(year) {
50
+ const y = (year - 2000) / 1000;
51
+ const jde0 = 2451810.21715
52
+ + 365242.01767 * y
53
+ - 0.11575 * y * y
54
+ + 0.00337 * y * y * y
55
+ + 0.00078 * y * y * y * y;
56
+ const t = (jde0 - 2451545.0) / 36525;
57
+ const w = (35999.373 * t - 2.47) * DEG_TO_RAD;
58
+ const deltaLambda = 1 + 0.0334 * Math.cos(w) + 0.0007 * Math.cos(2 * w);
59
+ let s = 0;
60
+ for (const [a, b, c] of EQUINOX_TERMS) {
61
+ s += a * Math.cos((b + c * t) * DEG_TO_RAD);
62
+ }
63
+ return jde0 + (0.00001 * s) / deltaLambda;
64
+ }
65
+ // TD - UT, in seconds. Espenak & Meeus (2006) polynomial approximations,
66
+ // covering the range that matters here (18th–22nd century) with a parabolic
67
+ // fallback outside it.
68
+ function deltaTSeconds(year) {
69
+ let t;
70
+ if (year >= 2005 && year < 2050) {
71
+ t = year - 2000;
72
+ return 62.92 + 0.32217 * t + 0.005589 * t * t;
73
+ }
74
+ if (year >= 1986 && year < 2005) {
75
+ t = year - 2000;
76
+ return (63.86 + 0.3345 * t - 0.060374 * t * t + 0.0017275 * t ** 3
77
+ + 0.000651814 * t ** 4 + 0.00002373599 * t ** 5);
78
+ }
79
+ if (year >= 1961 && year < 1986) {
80
+ t = year - 1975;
81
+ return 45.45 + 1.067 * t - (t * t) / 260 - (t ** 3) / 718;
82
+ }
83
+ if (year >= 1941 && year < 1961) {
84
+ t = year - 1950;
85
+ return 29.07 + 0.407 * t - (t * t) / 233 + (t ** 3) / 2547;
86
+ }
87
+ if (year >= 1920 && year < 1941) {
88
+ t = year - 1920;
89
+ return 21.20 + 0.84493 * t - 0.076100 * t * t + 0.0020936 * t ** 3;
90
+ }
91
+ if (year >= 1900 && year < 1920) {
92
+ t = year - 1900;
93
+ return (-2.79 + 1.494119 * t - 0.0598939 * t * t
94
+ + 0.0061966 * t ** 3 - 0.000197 * t ** 4);
95
+ }
96
+ if (year >= 1860 && year < 1900) {
97
+ t = year - 1860;
98
+ return (7.62 + 0.5737 * t - 0.251754 * t * t + 0.01680668 * t ** 3
99
+ - 0.0004473624 * t ** 4 + (t ** 5) / 233174);
100
+ }
101
+ if (year >= 1800 && year < 1860) {
102
+ t = year - 1800;
103
+ return (13.72 - 0.332447 * t + 0.0068612 * t * t + 0.0041116 * t ** 3
104
+ - 0.00037436 * t ** 4 + 0.0000121272 * t ** 5
105
+ - 0.0000001699 * t ** 6 + 0.000000000875 * t ** 7);
106
+ }
107
+ if (year >= 1700 && year < 1800) {
108
+ t = year - 1700;
109
+ return 8.83 + 0.1603 * t - 0.0059285 * t * t + 0.00013336 * t ** 3 - (t ** 4) / 1174000;
110
+ }
111
+ if (year >= 2050 && year < 2150) {
112
+ return -20 + 32 * ((year - 1820) / 100) ** 2 - 0.5628 * (2150 - year);
113
+ }
114
+ const u = (year - 1820) / 100;
115
+ return -20 + 32 * u * u;
116
+ }
117
+ /**
118
+ * JDN of 1 Vendémiaire — the civil day (Paris meridian) hosting the September
119
+ * equinox of the given Gregorian year.
120
+ *
121
+ * @param gregorianYear - The Gregorian year whose equinox opens the Republican year.
122
+ * @returns The Julian Day Number of that year's 1 Vendémiaire.
123
+ */
124
+ export function republicanYearStartJdn(gregorianYear) {
125
+ const jde = septemberEquinoxJde(gregorianYear); // TD
126
+ const ut = jde - deltaTSeconds(gregorianYear) / 86400;
127
+ const parisMeanTime = ut + PARIS_MERIDIAN_OFFSET_DAYS;
128
+ return Math.floor(parisMeanTime + 0.5);
129
+ }
130
+ // --- Roman numerals (years were written in Roman numerals: "an VIII") --------
131
+ /**
132
+ * Formats a positive integer as a Roman numeral. Non-positive inputs are
133
+ * returned as their decimal string.
134
+ *
135
+ * @param n - The number to format.
136
+ * @returns The Roman numeral (e.g. `8` -> `'VIII'`).
137
+ */
138
+ export function toRoman(n) {
139
+ if (n <= 0)
140
+ return String(n);
141
+ const table = [
142
+ [1000, 'M'], [900, 'CM'], [500, 'D'], [400, 'CD'],
143
+ [100, 'C'], [90, 'XC'], [50, 'L'], [40, 'XL'],
144
+ [10, 'X'], [9, 'IX'], [5, 'V'], [4, 'IV'], [1, 'I']
145
+ ];
146
+ let remaining = n;
147
+ let result = '';
148
+ for (const [value, symbol] of table) {
149
+ while (remaining >= value) {
150
+ result += symbol;
151
+ remaining -= value;
152
+ }
153
+ }
154
+ return result;
155
+ }
@@ -41,6 +41,7 @@ export class Duration {
41
41
  else if (type === 'mo' || type === 'mth' || type === 'months') {
42
42
  this.type = 'months';
43
43
  }
44
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
44
45
  else if (type === 'y' || type === 'years') {
45
46
  this.type = 'years';
46
47
  }
@@ -64,6 +65,7 @@ export class Duration {
64
65
  return this.value * 1000 * 60 * 60 * 24 * 7;
65
66
  if (this.type === 'months')
66
67
  return this.value * 1000 * 60 * 60 * 24 * 30;
68
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
67
69
  if (this.type === 'years')
68
70
  return this.value * 1000 * 60 * 60 * 24 * 365;
69
71
  return this.value; // defaults to milliseconds
@@ -1,5 +1,5 @@
1
1
  export * as dates from './dates/index.js'
2
2
  export * as duration from './duration/index.js'
3
- export * as wait from './wait/index.js'
4
- export * as transitions from './transitions/index.js'
5
3
  export * as timeout from './timeout/index.js'
4
+ export * as transitions from './transitions/index.js'
5
+ export * as wait from './wait/index.js'
@@ -1,5 +1,5 @@
1
1
  export * as dates from './dates/index.js'
2
2
  export * as duration from './duration/index.js'
3
- export * as wait from './wait/index.js'
4
- export * as transitions from './transitions/index.js'
5
3
  export * as timeout from './timeout/index.js'
4
+ export * as transitions from './transitions/index.js'
5
+ export * as wait from './wait/index.js'
@@ -8,18 +8,18 @@
8
8
  */
9
9
  export async function timeout(timeoutMs, callback) {
10
10
  let hasRejected = false;
11
- // eslint-disable-next-line @typescript-eslint/no-misused-promises, no-async-promise-executor
12
- return await new Promise(async (resolve, reject) => {
11
+ return await new Promise((resolve, reject) => {
13
12
  const rejectTimeout = setTimeout(() => {
14
- // eslint-disable-next-line prefer-promise-reject-errors
13
+ // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
15
14
  reject(false);
16
15
  hasRejected = true;
17
16
  }, timeoutMs);
18
- // eslint-disable-next-line @typescript-eslint/await-thenable
19
- const callbackResult = await callback();
20
- if (hasRejected)
21
- return;
22
- clearTimeout(rejectTimeout);
23
- return resolve(callbackResult);
17
+ void (async () => {
18
+ const callbackResult = await callback();
19
+ if (hasRejected)
20
+ return;
21
+ clearTimeout(rejectTimeout);
22
+ resolve(callbackResult);
23
+ })();
24
24
  });
25
25
  }
@@ -89,13 +89,14 @@ const c5 = (2 * PI) / 4.5;
89
89
  const bounceOut = function (x) {
90
90
  const n1 = 7.5625;
91
91
  const d1 = 2.75;
92
- if (x < 1 / d1)
93
- return n1 * x * x;
94
- if (x < 2 / d1)
95
- return n1 * (x -= 1.5 / d1) * x + 0.75;
96
- if (x < 2.5 / d1)
97
- return n1 * (x -= 2.25 / d1) * x + 0.9375;
98
- return n1 * (x -= 2.625 / d1) * x + 0.984375;
92
+ let t = x;
93
+ if (t < 1 / d1)
94
+ return n1 * t * t;
95
+ if (t < 2 / d1)
96
+ return n1 * (t -= 1.5 / d1) * t + 0.75;
97
+ if (t < 2.5 / d1)
98
+ return n1 * (t -= 2.25 / d1) * t + 0.9375;
99
+ return n1 * (t -= 2.625 / d1) * t + 0.984375;
99
100
  };
100
101
  /**
101
102
  * Predefined easing functions used internally by transitions.
@@ -32,6 +32,7 @@ import cssModule from './styles.module.css';
32
32
  * @returns A split-panel container with pointer interaction handlers and ratio state applied.
33
33
  */
34
34
  export const BeforeAfterControlled = ({ mode = 'horizontal', ratio = 0, before, after, className, children, actionHandlers }) => {
35
+ // eslint-disable-next-line no-param-reassign
35
36
  ratio = clamp(ratio, 0, 1);
36
37
  // State & refs
37
38
  const rootRef = useRef(null);
@@ -26,7 +26,9 @@ export const BeforeAfter = ({ mode = 'horizontal', actionHandlers, stateHandlers
26
26
  const isControlled = ratio !== undefined;
27
27
  const effectiveRatio = isControlled ? ratio : internalRatio;
28
28
  const handleDrag = (x, y) => {
29
+ // eslint-disable-next-line no-param-reassign
29
30
  x = 1.02 * x - 0.01;
31
+ // eslint-disable-next-line no-param-reassign
30
32
  y = 1.02 * y - 0.01;
31
33
  actionHandlers?.dragged?.(x, y);
32
34
  if (!isControlled) {
@@ -35,7 +37,9 @@ export const BeforeAfter = ({ mode = 'horizontal', actionHandlers, stateHandlers
35
37
  }
36
38
  };
37
39
  const handleClick = (x, y) => {
40
+ // eslint-disable-next-line no-param-reassign
38
41
  x = 1.02 * x - 0.01;
42
+ // eslint-disable-next-line no-param-reassign
39
43
  y = 1.02 * y - 0.01;
40
44
  actionHandlers?.clicked?.(x, y);
41
45
  if (!isControlled) {
@@ -1,4 +1,4 @@
1
- import { type FunctionComponent, type ButtonHTMLAttributes, type ReactNode } from 'react';
1
+ import type { FunctionComponent, ButtonHTMLAttributes } from 'react';
2
2
  import type { WithClassName } from '../utils/types.js';
3
3
  /**
4
4
  * Props for the {@link Button} component.
@@ -6,14 +6,9 @@ import type { WithClassName } from '../utils/types.js';
6
6
  * Extends all native {@link ButtonHTMLAttributes} and {@link WithClassName}
7
7
  * with optional label and error content.
8
8
  *
9
- * @property label - Content rendered as the button label.
10
- * @property error - Content rendered to convey an error state associated with the button.
11
9
  * @property className - Additional class name(s) applied to the root element.
12
10
  */
13
- export type Props = ButtonHTMLAttributes<HTMLButtonElement> & WithClassName<{
14
- label?: ReactNode;
15
- error?: ReactNode;
16
- }>;
11
+ export type Props = ButtonHTMLAttributes<HTMLButtonElement> & WithClassName<Record<string, unknown>>;
17
12
  /**
18
13
  * Base button component.
19
14
  *
@@ -13,8 +13,8 @@ import cssModule from './styles.module.css';
13
13
  * @see {@link Props}
14
14
  * @returns A styled native button element.
15
15
  */
16
- export const Button = ({ label, error, className, ...rest }) => {
16
+ export const Button = ({ className, ...rest }) => {
17
17
  const c = clss(publicClassName, { cssModule });
18
18
  const rootClss = mergeClassNames(c(null), className);
19
- return _jsx("button", { ...rest, className: c(rootClss) });
19
+ return _jsx("button", { ...rest, className: rootClss });
20
20
  };
@@ -51,6 +51,7 @@ export const Clippable = ({ className, children, toClip, actionHandlers, stateHa
51
51
  ]);
52
52
  }
53
53
  catch (err) {
54
+ // eslint-disable-next-line no-console
54
55
  console.error(err);
55
56
  }
56
57
  stateHandlers?.clipped?.(html);
@@ -49,7 +49,7 @@ export const Drawer = ({ openerContent, closerContent, initialIsOpened = false,
49
49
  setInternalIsOpened(false);
50
50
  };
51
51
  const handleROCompResize = ({ entry }) => {
52
- const { width, height } = entry?.contentRect ?? {};
52
+ const { width, height } = entry.contentRect;
53
53
  setContentDimensions({ width, height });
54
54
  };
55
55
  // Rendering
@@ -56,6 +56,7 @@ export const Gallery = ({ paddingLeft, paddingRight, padding, prevButtonContent,
56
56
  animationFrame = null;
57
57
  const { scrollLeft, clientWidth, scrollWidth } = scrollerElt;
58
58
  const center = scrollLeft + clientWidth / 2;
59
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- scrollerElt.children (HTMLCollection) always contains Element/HTMLElement nodes
59
60
  const children = Array.from(scrollerElt.children);
60
61
  let closestIndex = 0;
61
62
  let closestDistance = Infinity;
@@ -138,7 +139,7 @@ export const Gallery = ({ paddingLeft, paddingRight, padding, prevButtonContent,
138
139
  ? actualPaddingRight
139
140
  : undefined
140
141
  };
141
- return _jsx("div", { className: `${slotClss}`, style: { ...style }, "data-slot": pos, children: child }, pos);
142
+ return _jsx("div", { className: slotClss, style: { ...style }, "data-slot": pos, children: child }, pos);
142
143
  }) }), _jsxs("div", { className: actionsClss, children: [_jsx("div", { className: prevBtnClss, onClick: handlePrevClick, children: prevButtonContent ?? 'prev' }), _jsx("div", { className: nextBtnClss, onClick: handleNextClick, children: nextButtonContent ?? 'next' })] }), _jsx("div", { className: paginationClss, children: Children.map(children, (_, pos) => {
143
144
  const pageClss = c('page', { active: pos === activeIndex });
144
145
  return _jsx("div", { className: pageClss, "data-page": pos, onClick: () => handlePaginationClick(pos), children: typeof paginationContent === 'string'
@@ -1,6 +1,7 @@
1
1
  export const forceActivateSlot = (div, targetPos, smooth = true) => {
2
2
  if (div === null)
3
3
  return;
4
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- div.children (HTMLCollection) always contains Element/HTMLElement nodes
4
5
  const children = Array.from(div.children);
5
6
  if (children[targetPos] === undefined)
6
7
  return;
@@ -8,5 +9,8 @@ export const forceActivateSlot = (div, targetPos, smooth = true) => {
8
9
  const halfClientWidth = div.clientWidth / 2;
9
10
  const halfOffsetWidth = div.offsetWidth / 2;
10
11
  const offset = target.offsetLeft - (halfClientWidth - halfOffsetWidth);
11
- div.scrollTo({ left: offset, behavior: smooth ? 'smooth' : 'instant' });
12
+ div.scrollTo({
13
+ left: offset,
14
+ behavior: smooth ? 'smooth' : 'instant'
15
+ });
12
16
  };
@@ -1,48 +1,30 @@
1
- import { type FunctionComponent, type IframeHTMLAttributes, type PropsWithChildren } from 'react';
1
+ import { type FunctionComponent, type IframeHTMLAttributes } from 'react';
2
2
  import type { WithClassName } from '../utils/types.js';
3
3
  /**
4
4
  * Props for the {@link Iframe} component.
5
5
  *
6
- * Extends native {@link IframeHTMLAttributes} with optional class name support.
6
+ * Extends native {@link IframeHTMLAttributes} with class name support and
7
+ * automatic height adjustment.
7
8
  *
8
- * @property className - Additional class name(s) applied to the root element.
9
- * @property children - React content rendered as the iframe document body.
10
- * @property srcDoc - Raw HTML string used as iframe content when `children` is not provided.
11
- *
12
- * @remarks
13
- * This component behaves as a hybrid between a native `<iframe>` and a React renderer.
14
- *
15
- * Rendering priority:
16
- * - `children` takes precedence over `srcDoc` when provided.
17
- * - If `children` is `null` or `undefined`, `srcDoc` is used directly.
18
- *
19
- * When `children` is provided, it is converted to static HTML using
20
- * `renderToStaticMarkup` and injected into a complete HTML document:
21
- * `<!doctype html><html><body>...</body></html>`.
9
+ * @property autoHeight - Enables automatic iframe height adjustment based on
10
+ * document content size. Only supported with `srcDoc`.
11
+ * @property className - Optional additional class names applied to the iframe.
12
+ * @property style - Optional inline style applied to the iframe.
13
+ * @property srcDoc - Raw HTML string rendered inside the iframe.
22
14
  */
23
- export type Props = PropsWithChildren<WithClassName<Record<never, never>>> & Omit<IframeHTMLAttributes<HTMLIFrameElement>, 'children'>;
15
+ export type Props = WithClassName<{
16
+ autoHeight?: boolean;
17
+ }> & Omit<IframeHTMLAttributes<HTMLIFrameElement>, 'children'>;
24
18
  /**
25
- * Iframe component with React-to-HTML rendering support.
26
- *
27
- * Renders either:
28
- * - A raw HTML string via the `srcDoc` attribute, or
29
- * - A ReactNode rendered into static HTML via `renderToStaticMarkup`.
30
- *
31
- * ### Rendering strategy
32
- * 1. If `children` is defined (non-nullish), it is rendered to static HTML
33
- * and used as iframe content.
34
- * 2. Otherwise, `srcDoc` is used as-is.
19
+ * Iframe component with optional automatic height adjustment.
35
20
  *
36
- * The resulting content is wrapped in a minimal HTML document:
37
- * `<!doctype html><html><body>...</body></html>`.
21
+ * When `autoHeight` is enabled, the iframe injects a script that measures
22
+ * document height and sends updates to the parent via `postMessage`.
38
23
  *
39
- * ### Notes
40
- * - The iframe content is static (no hydration, no client-side React inside iframe).
41
- * - `children` overrides `srcDoc`.
42
- * - Useful for embedding server-rendered UI fragments or documentation blocks.
24
+ * The parent component updates the iframe height via React state and `style`
25
+ * prop (no direct DOM mutation).
43
26
  *
44
27
  * @param props - Component properties.
45
28
  * @see {@link Props}
46
- * @returns A styled iframe element with computed HTML document content.
47
29
  */
48
30
  export declare const Iframe: FunctionComponent<Props>;
@@ -1,43 +1,86 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useMemo } from 'react';
3
- import { renderToStaticMarkup } from 'react-dom/server';
2
+ import { useEffect, useMemo, useRef, useState } from 'react';
4
3
  import { clss } from '../../agnostic/css/clss/index.js';
4
+ import { randomHash } from '../../agnostic/random/uuid/index.js';
5
5
  import { mergeClassNames } from '../utils/index.js';
6
6
  import { iframe as publicClassName } from '../public-classnames.js';
7
7
  import cssModule from './styles.module.css';
8
- import { isNotNullish } from '../../agnostic/misc/is-nullish/index.js';
8
+ const innerAutoHeightNitifier = (messageType) => `<script>
9
+ (() => {
10
+ const notify = () => {
11
+ const height = Math.max(
12
+ document.body?.scrollHeight ?? 0,
13
+ document.documentElement?.scrollHeight ?? 0
14
+ )
15
+ window.parent.postMessage({
16
+ type: '${messageType}',
17
+ height
18
+ }, '*')
19
+ }
20
+ window.addEventListener('load', notify)
21
+ const observer = new ResizeObserver(notify)
22
+ observer.observe(document.body)
23
+ observer.observe(document.documentElement)
24
+ notify()
25
+ })()
26
+ </script>`;
9
27
  /**
10
- * Iframe component with React-to-HTML rendering support.
28
+ * Iframe component with optional automatic height adjustment.
11
29
  *
12
- * Renders either:
13
- * - A raw HTML string via the `srcDoc` attribute, or
14
- * - A ReactNode rendered into static HTML via `renderToStaticMarkup`.
30
+ * When `autoHeight` is enabled, the iframe injects a script that measures
31
+ * document height and sends updates to the parent via `postMessage`.
15
32
  *
16
- * ### Rendering strategy
17
- * 1. If `children` is defined (non-nullish), it is rendered to static HTML
18
- * and used as iframe content.
19
- * 2. Otherwise, `srcDoc` is used as-is.
20
- *
21
- * The resulting content is wrapped in a minimal HTML document:
22
- * `<!doctype html><html><body>...</body></html>`.
23
- *
24
- * ### Notes
25
- * - The iframe content is static (no hydration, no client-side React inside iframe).
26
- * - `children` overrides `srcDoc`.
27
- * - Useful for embedding server-rendered UI fragments or documentation blocks.
33
+ * The parent component updates the iframe height via React state and `style`
34
+ * prop (no direct DOM mutation).
28
35
  *
29
36
  * @param props - Component properties.
30
37
  * @see {@link Props}
31
- * @returns A styled iframe element with computed HTML document content.
32
38
  */
33
- export const Iframe = ({ className, children, srcDoc, ...iframeProps }) => {
39
+ export const Iframe = ({ autoHeight = false, className, srcDoc, style, ...iframeProps }) => {
40
+ const iframeRef = useRef(null);
41
+ const [height, setHeight] = useState(null);
42
+ const [innerMessageType] = useState(`_${randomHash(10)}`);
43
+ // Fx. dep. `autoHeight` - Handles messages from iframe content when autoHeight is enabled.
44
+ useEffect(() => {
45
+ if (!autoHeight)
46
+ return;
47
+ const handleMessage = (event) => {
48
+ const iframe = iframeRef.current;
49
+ if (iframe === null
50
+ || event.source !== iframe.contentWindow
51
+ || typeof event.data !== 'object'
52
+ || event.data === null
53
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
54
+ || event.data.type !== innerMessageType
55
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
56
+ || typeof event.data.height !== 'number')
57
+ return;
58
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-type-assertion -- event.data.height was already checked to be a number above; event.data is typed any by MessageEvent
59
+ setHeight(event.data.height);
60
+ };
61
+ window.addEventListener('message', handleMessage);
62
+ return () => window.removeEventListener('message', handleMessage);
63
+ }, [autoHeight]);
64
+ const iframeStyle = useMemo(() => {
65
+ const base = style ?? {};
66
+ if (!autoHeight || height === null)
67
+ return base;
68
+ return { ...base, height: `${height}px` };
69
+ }, [style, autoHeight, height]);
34
70
  const c = clss(publicClassName, { cssModule });
35
71
  const rootClss = mergeClassNames(c(), className);
36
72
  const html = useMemo(() => {
37
- const body = isNotNullish(children)
38
- ? renderToStaticMarkup(children)
39
- : srcDoc;
40
- return `<!doctype html><html><body>${body}</body></html>`;
41
- }, [children, srcDoc]);
42
- return _jsx("iframe", { ...iframeProps, className: rootClss, srcDoc: html });
73
+ const autoHeightScript = autoHeight
74
+ ? innerAutoHeightNitifier(innerMessageType)
75
+ : '';
76
+ return `<!doctype html>
77
+ <html>
78
+ <body>
79
+ ${srcDoc ?? ''}
80
+ ${autoHeightScript}
81
+ </body>
82
+ </html>
83
+ `;
84
+ }, [srcDoc, autoHeight]);
85
+ return _jsx("iframe", { ...iframeProps, ref: iframeRef, className: rootClss, style: iframeStyle, srcDoc: html });
43
86
  };
@@ -40,8 +40,10 @@ export const Image = ({ sources, disclaimer, theatre, className, ...intrinsicImg
40
40
  if (Array.isArray(sources)) {
41
41
  if (sources.length === 0)
42
42
  return [];
43
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- first element sampled just above; array is expected to be homogeneous
43
44
  if (typeof sources[0] === 'string')
44
45
  return sources.map(srcSet => ({ srcSet }));
46
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- first element was checked not to be a string just above; array is expected to be homogeneous
45
47
  return sources;
46
48
  }
47
49
  return [];
@@ -0,0 +1,42 @@
1
+ import { type FunctionComponent, type InputHTMLAttributes, type ReactNode } from 'react';
2
+ import type { WithClassName } from '../utils/types.js';
3
+ /**
4
+ * Props for the {@link Input} component.
5
+ *
6
+ * Extends all native {@link InputHTMLAttributes} and {@link WithClassName}
7
+ * with optional label and error content.
8
+ *
9
+ * @property label - Content rendered as an associated `<label>`. When omitted, no label is rendered.
10
+ * @property error - Content rendered as an error message below the input. When omitted, no error is rendered.
11
+ * @property className - Additional class name(s) applied to the root element.
12
+ */
13
+ export type Props = InputHTMLAttributes<HTMLInputElement> & WithClassName<{
14
+ label?: ReactNode;
15
+ error?: ReactNode;
16
+ }>;
17
+ /**
18
+ * Controlled input field component.
19
+ *
20
+ * Renders a native `<input>` element with optional label and error feedback.
21
+ * The input value is entirely driven by the provided `value` prop and all
22
+ * native input attributes are forwarded to the underlying element.
23
+ *
24
+ * A stable auto-generated `id` is created on mount and used to associate the
25
+ * rendered label through the `htmlFor` attribute.
26
+ *
27
+ * ### CSS elements
28
+ * - `label`
29
+ * - `error`
30
+ *
31
+ * @param props - Component properties.
32
+ * @see {@link Props}
33
+ *
34
+ * @returns A labelled controlled input with optional error feedback.
35
+ *
36
+ * @remarks
37
+ * - The component does not manage its own value state.
38
+ * - Consumers are responsible for updating `value` in response to `onChange`.
39
+ * - Additional `className` values are merged with the component public class name
40
+ * and applied to the underlying `<input>` element.
41
+ */
42
+ export declare const ControlledInput: FunctionComponent<Props>;
@@ -0,0 +1,54 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { clss } from '../../agnostic/css/clss/index.js';
4
+ import { isNotFalsy } from '../../agnostic/booleans/is-falsy/index.js';
5
+ import { randomHash } from '../../agnostic/random/uuid/index.js';
6
+ import { input as publicClassName } from '../public-classnames.js';
7
+ import { mergeClassNames } from '../utils/index.js';
8
+ import cssModule from './styles.module.css';
9
+ /**
10
+ * Controlled input field component.
11
+ *
12
+ * Renders a native `<input>` element with optional label and error feedback.
13
+ * The input value is entirely driven by the provided `value` prop and all
14
+ * native input attributes are forwarded to the underlying element.
15
+ *
16
+ * A stable auto-generated `id` is created on mount and used to associate the
17
+ * rendered label through the `htmlFor` attribute.
18
+ *
19
+ * ### CSS elements
20
+ * - `label`
21
+ * - `error`
22
+ *
23
+ * @param props - Component properties.
24
+ * @see {@link Props}
25
+ *
26
+ * @returns A labelled controlled input with optional error feedback.
27
+ *
28
+ * @remarks
29
+ * - The component does not manage its own value state.
30
+ * - Consumers are responsible for updating `value` in response to `onChange`.
31
+ * - Additional `className` values are merged with the component public class name
32
+ * and applied to the underlying `<input>` element.
33
+ */
34
+ export const ControlledInput = ({ label, error, value, className, ...rest }) => {
35
+ const [id] = useState(`_${randomHash(12)}`);
36
+ const c = clss(publicClassName, { cssModule });
37
+ const rootClss = mergeClassNames(c(null), className);
38
+ return _jsxs(_Fragment, { children: [isNotFalsy(label) && _jsx("label", { className: c('label'), htmlFor: id, children: label }), _jsx("input", { ...rest, id: id, className: rootClss, value: value ?? '', onChange: e => {
39
+ const { target } = e;
40
+ rest.onChange?.(e);
41
+ if (value === undefined)
42
+ return;
43
+ if (typeof value === 'number') {
44
+ target.value = `${value}`;
45
+ }
46
+ else if (typeof value === 'string') {
47
+ target.value = value;
48
+ }
49
+ else {
50
+ // value is readonly string[]
51
+ // not supported for <input>; ignore or normalize if needed
52
+ }
53
+ } }), isNotFalsy(error) && _jsx("span", { className: c('error'), children: error })] });
54
+ };