@design-edito/tools 0.4.23 → 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 (490) 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 +3 -3
  22. package/agnostic/colors/index.js +3 -3
  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 +6 -6
  87. package/agnostic/html/hyper-json/smart-tags/coalesced/index.js +6 -6
  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 +2 -2
  139. package/agnostic/html/hyper-json/smart-tags/isolated/index.js +2 -2
  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 +4 -4
  154. package/agnostic/html/index.js +4 -4
  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 +2 -2
  179. package/agnostic/misc/index.js +2 -2
  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 +2 -2
  215. package/agnostic/objects/index.js +2 -2
  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/index.d.ts +1 -1
  244. package/agnostic/sanitization/index.js +1 -1
  245. package/agnostic/sanitization/path/index.d.ts +2 -2
  246. package/agnostic/sanitization/path/index.js +2 -2
  247. package/agnostic/sanitization/user-input/index.js +1 -0
  248. package/agnostic/strings/char-codes/index.js +2 -6
  249. package/agnostic/strings/index.d.ts +1 -1
  250. package/agnostic/strings/index.js +1 -1
  251. package/agnostic/strings/normalize-indent/index.js +2 -2
  252. package/agnostic/strings/parse-table/index.d.ts +13 -13
  253. package/agnostic/strings/parse-table/index.js +31 -16
  254. package/agnostic/strings/replace-all/index.d.ts +1 -1
  255. package/agnostic/strings/replace-all/index.js +1 -0
  256. package/agnostic/strings/to-alphanum/index.js +2 -2
  257. package/agnostic/strings/trim/index.js +2 -2
  258. package/agnostic/time/dates/format-date/index.js +3 -1
  259. package/agnostic/time/dates/index.d.ts +1 -0
  260. package/agnostic/time/dates/index.js +1 -0
  261. package/agnostic/time/dates/to-french-republican/index.d.ts +16 -0
  262. package/agnostic/time/dates/to-french-republican/index.js +82 -0
  263. package/agnostic/time/dates/to-french-republican/index.test.d.ts +1 -0
  264. package/agnostic/time/dates/to-french-republican/index.test.js +112 -0
  265. package/agnostic/time/dates/to-french-republican/types.d.ts +91 -0
  266. package/agnostic/time/dates/to-french-republican/types.js +47 -0
  267. package/agnostic/time/dates/to-french-republican/utils.d.ts +32 -0
  268. package/agnostic/time/dates/to-french-republican/utils.js +155 -0
  269. package/agnostic/time/duration/index.js +2 -0
  270. package/agnostic/time/index.d.ts +2 -2
  271. package/agnostic/time/index.js +2 -2
  272. package/agnostic/time/timeout/index.js +9 -9
  273. package/agnostic/time/transitions/index.js +8 -7
  274. package/components/BeforeAfter/index.controlled.js +1 -0
  275. package/components/BeforeAfter/index.js +4 -0
  276. package/components/Button/index.d.ts +1 -1
  277. package/components/Clippable/index.js +1 -0
  278. package/components/Drawer/index.js +1 -1
  279. package/components/Gallery/index.js +2 -1
  280. package/components/Gallery/utils.js +5 -1
  281. package/components/Iframe/index.js +3 -0
  282. package/components/Image/index.js +2 -0
  283. package/components/Input/index.controlled.js +3 -2
  284. package/components/IntersectionObserver/index.js +5 -2
  285. package/components/JsonEditor/index.js +1 -1
  286. package/components/Overlayer/index.d.ts +1 -1
  287. package/components/ScrollListener/utils.d.ts +29 -0
  288. package/components/Select/index.controlled.js +3 -2
  289. package/components/Sequencer/index.controlled.js +1 -1
  290. package/components/Subtitles/index.js +3 -1
  291. package/components/Subtitles/types.d.ts +14 -0
  292. package/components/Subtitles/utils.d.ts +19 -15
  293. package/components/Subtitles/utils.js +29 -24
  294. package/components/Textarea/index.controlled.js +3 -2
  295. package/components/UIModule/index.js +3 -1
  296. package/components/Video/index.controlled.d.ts +1 -1
  297. package/components/Video/index.controlled.js +11 -10
  298. package/components/Video/index.js +27 -20
  299. package/components/Video/utils.d.ts +1 -1
  300. package/components/Video/utils.js +11 -2
  301. package/components/index.d.ts +2 -2
  302. package/components/index.js +2 -2
  303. package/components/utils/types.d.ts +5 -0
  304. package/node/@aws-s3/storage/directory/copy-dir/index.d.ts +9 -9
  305. package/node/@aws-s3/storage/directory/copy-dir/index.js +15 -12
  306. package/node/@aws-s3/storage/directory/list/index.d.ts +5 -5
  307. package/node/@aws-s3/storage/directory/list/index.js +5 -5
  308. package/node/@aws-s3/storage/directory/move-dir/index.d.ts +6 -6
  309. package/node/@aws-s3/storage/directory/move-dir/index.js +11 -7
  310. package/node/@aws-s3/storage/directory/remove-dir/index.d.ts +5 -5
  311. package/node/@aws-s3/storage/directory/remove-dir/index.js +5 -5
  312. package/node/@aws-s3/storage/file/copy/index.d.ts +8 -8
  313. package/node/@aws-s3/storage/file/copy/index.js +12 -9
  314. package/node/@aws-s3/storage/file/download/index.d.ts +6 -6
  315. package/node/@aws-s3/storage/file/download/index.js +6 -5
  316. package/node/@aws-s3/storage/file/exists/index.d.ts +6 -6
  317. package/node/@aws-s3/storage/file/exists/index.js +15 -12
  318. package/node/@aws-s3/storage/file/move/index.d.ts +9 -9
  319. package/node/@aws-s3/storage/file/move/index.js +18 -15
  320. package/node/@aws-s3/storage/file/remove/index.d.ts +5 -5
  321. package/node/@aws-s3/storage/file/remove/index.js +16 -11
  322. package/node/@aws-s3/storage/file/stat/index.d.ts +5 -5
  323. package/node/@aws-s3/storage/file/stat/index.js +10 -7
  324. package/node/@aws-s3/storage/file/upload/index.d.ts +7 -7
  325. package/node/@aws-s3/storage/file/upload/index.js +11 -9
  326. package/node/@express/@multer/index.d.ts +12 -12
  327. package/node/@express/@multer/index.js +27 -25
  328. package/node/@google-cloud/storage/bucket/get-metadata/index.d.ts +4 -4
  329. package/node/@google-cloud/storage/bucket/get-metadata/index.js +3 -3
  330. package/node/@google-cloud/storage/directory/copy-dir/index.d.ts +7 -7
  331. package/node/@google-cloud/storage/directory/copy-dir/index.js +6 -6
  332. package/node/@google-cloud/storage/directory/index.d.ts +1 -1
  333. package/node/@google-cloud/storage/directory/index.js +1 -1
  334. package/node/@google-cloud/storage/directory/list/index.d.ts +6 -6
  335. package/node/@google-cloud/storage/directory/list/index.js +5 -5
  336. package/node/@google-cloud/storage/directory/move-dir/index.d.ts +6 -6
  337. package/node/@google-cloud/storage/directory/move-dir/index.js +5 -5
  338. package/node/@google-cloud/storage/directory/remove-dir/index.d.ts +7 -7
  339. package/node/@google-cloud/storage/directory/remove-dir/index.js +6 -6
  340. package/node/@google-cloud/storage/file/copy/index.d.ts +9 -9
  341. package/node/@google-cloud/storage/file/copy/index.js +8 -8
  342. package/node/@google-cloud/storage/file/download/index.d.ts +7 -7
  343. package/node/@google-cloud/storage/file/download/index.js +5 -5
  344. package/node/@google-cloud/storage/file/exists/index.d.ts +7 -7
  345. package/node/@google-cloud/storage/file/exists/index.js +6 -6
  346. package/node/@google-cloud/storage/file/generate-signed-url/index.d.ts +7 -7
  347. package/node/@google-cloud/storage/file/generate-signed-url/index.js +6 -6
  348. package/node/@google-cloud/storage/file/get-metadata/index.d.ts +5 -5
  349. package/node/@google-cloud/storage/file/get-metadata/index.js +4 -4
  350. package/node/@google-cloud/storage/file/get-permissions/index.d.ts +6 -6
  351. package/node/@google-cloud/storage/file/get-permissions/index.js +4 -4
  352. package/node/@google-cloud/storage/file/index.d.ts +1 -1
  353. package/node/@google-cloud/storage/file/index.js +1 -1
  354. package/node/@google-cloud/storage/file/move/index.d.ts +10 -10
  355. package/node/@google-cloud/storage/file/move/index.js +9 -9
  356. package/node/@google-cloud/storage/file/remove/index.d.ts +5 -5
  357. package/node/@google-cloud/storage/file/remove/index.js +4 -4
  358. package/node/@google-cloud/storage/file/revoke-signed-urls/index.d.ts +5 -5
  359. package/node/@google-cloud/storage/file/revoke-signed-urls/index.js +5 -5
  360. package/node/@google-cloud/storage/file/stat/index.d.ts +5 -5
  361. package/node/@google-cloud/storage/file/stat/index.js +4 -4
  362. package/node/@google-cloud/storage/file/update-metadata/index.d.ts +7 -7
  363. package/node/@google-cloud/storage/file/update-metadata/index.js +5 -5
  364. package/node/@google-cloud/storage/file/upload/index.d.ts +7 -7
  365. package/node/@google-cloud/storage/file/upload/index.js +5 -5
  366. package/node/cloud-storage/clients/index.d.ts +8 -8
  367. package/node/cloud-storage/clients/index.js +8 -8
  368. package/node/cloud-storage/operations/copy-dir/index.d.ts +22 -22
  369. package/node/cloud-storage/operations/copy-dir/index.js +5 -5
  370. package/node/cloud-storage/operations/copy-file/index.d.ts +22 -22
  371. package/node/cloud-storage/operations/copy-file/index.js +5 -5
  372. package/node/cloud-storage/operations/download-file/index.d.ts +19 -19
  373. package/node/cloud-storage/operations/download-file/index.js +6 -6
  374. package/node/cloud-storage/operations/exists-file/index.d.ts +15 -26
  375. package/node/cloud-storage/operations/exists-file/index.js +4 -4
  376. package/node/cloud-storage/operations/list-dir/index.d.ts +15 -25
  377. package/node/cloud-storage/operations/list-dir/index.js +4 -4
  378. package/node/cloud-storage/operations/move-dir/index.d.ts +22 -22
  379. package/node/cloud-storage/operations/move-dir/index.js +5 -5
  380. package/node/cloud-storage/operations/move-file/index.d.ts +22 -22
  381. package/node/cloud-storage/operations/move-file/index.js +5 -5
  382. package/node/cloud-storage/operations/remove-dir/index.d.ts +18 -18
  383. package/node/cloud-storage/operations/remove-dir/index.js +4 -4
  384. package/node/cloud-storage/operations/remove-file/index.d.ts +18 -18
  385. package/node/cloud-storage/operations/remove-file/index.js +4 -4
  386. package/node/cloud-storage/operations/stat-file/index.d.ts +16 -16
  387. package/node/cloud-storage/operations/stat-file/index.js +4 -4
  388. package/node/cloud-storage/operations/upload-file/index.d.ts +23 -23
  389. package/node/cloud-storage/operations/upload-file/index.js +5 -5
  390. package/node/encryption/@aes-256-gcm/buffer/index.d.ts +6 -6
  391. package/node/encryption/@aes-256-gcm/buffer/index.js +6 -6
  392. package/node/encryption/@aes-256-gcm/uint8-array/index.d.ts +8 -8
  393. package/node/encryption/@aes-256-gcm/uint8-array/index.js +8 -8
  394. package/node/encryption/key/index.d.ts +6 -6
  395. package/node/encryption/key/index.js +6 -6
  396. package/node/files/read-write/index.d.ts +16 -16
  397. package/node/files/subpaths/index.d.ts +8 -8
  398. package/node/files/subpaths/index.js +11 -13
  399. package/node/ftps/directory/copy-dir/index.d.ts +6 -6
  400. package/node/ftps/directory/copy-dir/index.js +6 -6
  401. package/node/ftps/directory/list/index.d.ts +4 -4
  402. package/node/ftps/directory/list/index.js +3 -3
  403. package/node/ftps/directory/move-dir/index.d.ts +6 -6
  404. package/node/ftps/directory/move-dir/index.js +5 -5
  405. package/node/ftps/directory/remove-dir/index.d.ts +6 -6
  406. package/node/ftps/directory/remove-dir/index.js +8 -7
  407. package/node/ftps/file/copy/index.d.ts +6 -6
  408. package/node/ftps/file/copy/index.js +5 -5
  409. package/node/ftps/file/download/index.d.ts +6 -6
  410. package/node/ftps/file/download/index.js +5 -5
  411. package/node/ftps/file/exists/index.d.ts +3 -3
  412. package/node/ftps/file/exists/index.js +3 -3
  413. package/node/ftps/file/move/index.d.ts +8 -8
  414. package/node/ftps/file/move/index.js +11 -9
  415. package/node/ftps/file/remove/index.d.ts +5 -5
  416. package/node/ftps/file/remove/index.js +4 -4
  417. package/node/ftps/file/stat/index.d.ts +4 -4
  418. package/node/ftps/file/stat/index.js +4 -4
  419. package/node/ftps/file/upload/index.d.ts +7 -7
  420. package/node/ftps/file/upload/index.js +5 -5
  421. package/node/images/create/index.d.ts +2 -2
  422. package/node/images/create/index.js +1 -1
  423. package/node/images/format/index.d.ts +8 -8
  424. package/node/images/metadata/index.d.ts +2 -2
  425. package/node/images/transform/index.d.ts +2 -2
  426. package/node/images/transform/index.js +12 -2
  427. package/node/images/transform/operations/blur/index.d.ts +2 -2
  428. package/node/images/transform/operations/blur/index.js +1 -0
  429. package/node/images/transform/operations/brighten/index.d.ts +2 -2
  430. package/node/images/transform/operations/brighten/index.js +1 -0
  431. package/node/images/transform/operations/extend/index.d.ts +2 -2
  432. package/node/images/transform/operations/extend/index.js +1 -0
  433. package/node/images/transform/operations/extract/index.d.ts +2 -2
  434. package/node/images/transform/operations/extract/index.js +1 -0
  435. package/node/images/transform/operations/flatten/index.d.ts +2 -2
  436. package/node/images/transform/operations/flatten/index.js +1 -0
  437. package/node/images/transform/operations/flip/index.d.ts +2 -2
  438. package/node/images/transform/operations/flip/index.js +1 -0
  439. package/node/images/transform/operations/flop/index.d.ts +2 -2
  440. package/node/images/transform/operations/flop/index.js +1 -0
  441. package/node/images/transform/operations/hue/index.d.ts +2 -2
  442. package/node/images/transform/operations/hue/index.js +1 -0
  443. package/node/images/transform/operations/index.d.ts +2 -2
  444. package/node/images/transform/operations/index.js +2 -2
  445. package/node/images/transform/operations/level/index.d.ts +2 -2
  446. package/node/images/transform/operations/level/index.js +1 -0
  447. package/node/images/transform/operations/lighten/index.d.ts +2 -2
  448. package/node/images/transform/operations/lighten/index.js +1 -0
  449. package/node/images/transform/operations/normalize/index.d.ts +2 -2
  450. package/node/images/transform/operations/normalize/index.js +1 -0
  451. package/node/images/transform/operations/overlay/index.d.ts +2 -2
  452. package/node/images/transform/operations/resize/index.d.ts +2 -2
  453. package/node/images/transform/operations/resize/index.js +1 -0
  454. package/node/images/transform/operations/rotate/index.d.ts +2 -2
  455. package/node/images/transform/operations/rotate/index.js +1 -0
  456. package/node/images/transform/operations/saturate/index.d.ts +2 -2
  457. package/node/images/transform/operations/saturate/index.js +1 -0
  458. package/node/images/types.d.ts +41 -2
  459. package/node/images/utils/index.d.ts +10 -5
  460. package/node/process/index.d.ts +1 -1
  461. package/node/process/index.js +1 -1
  462. package/node/process/on-exit/index.js +2 -4
  463. package/node/process/prompt-continue/index.d.ts +3 -3
  464. package/node/process/prompt-continue/index.js +4 -3
  465. package/node/process/spawner/index.js +7 -6
  466. package/node/sftp/directory/copy-dir/index.d.ts +6 -6
  467. package/node/sftp/directory/copy-dir/index.js +6 -6
  468. package/node/sftp/directory/list/index.d.ts +3 -3
  469. package/node/sftp/directory/list/index.js +4 -4
  470. package/node/sftp/directory/move-dir/index.d.ts +7 -7
  471. package/node/sftp/directory/move-dir/index.js +7 -7
  472. package/node/sftp/directory/remove-dir/index.d.ts +5 -5
  473. package/node/sftp/directory/remove-dir/index.js +8 -7
  474. package/node/sftp/file/copy/index.d.ts +6 -6
  475. package/node/sftp/file/copy/index.js +5 -5
  476. package/node/sftp/file/download/index.d.ts +7 -7
  477. package/node/sftp/file/download/index.js +5 -5
  478. package/node/sftp/file/exists/index.d.ts +3 -3
  479. package/node/sftp/file/exists/index.js +3 -3
  480. package/node/sftp/file/index.d.ts +1 -1
  481. package/node/sftp/file/index.js +1 -1
  482. package/node/sftp/file/move/index.d.ts +7 -7
  483. package/node/sftp/file/move/index.js +7 -7
  484. package/node/sftp/file/remove/index.d.ts +4 -4
  485. package/node/sftp/file/remove/index.js +4 -4
  486. package/node/sftp/file/stat/index.d.ts +3 -3
  487. package/node/sftp/file/stat/index.js +6 -5
  488. package/node/sftp/file/upload/index.d.ts +6 -6
  489. package/node/sftp/file/upload/index.js +5 -5
  490. package/package.json +40 -39
@@ -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
  };
@@ -50,9 +50,12 @@ export const Iframe = ({ autoHeight = false, className, srcDoc, style, ...iframe
50
50
  || event.source !== iframe.contentWindow
51
51
  || typeof event.data !== 'object'
52
52
  || event.data === null
53
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
53
54
  || event.data.type !== innerMessageType
55
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
54
56
  || typeof event.data.height !== 'number')
55
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
56
59
  setHeight(event.data.height);
57
60
  };
58
61
  window.addEventListener('message', handleMessage);
@@ -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 [];
@@ -36,14 +36,15 @@ export const ControlledInput = ({ label, error, value, className, ...rest }) =>
36
36
  const c = clss(publicClassName, { cssModule });
37
37
  const rootClss = mergeClassNames(c(null), className);
38
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;
39
40
  rest.onChange?.(e);
40
41
  if (value === undefined)
41
42
  return;
42
43
  if (typeof value === 'number') {
43
- e.target.value = `${value}`;
44
+ target.value = `${value}`;
44
45
  }
45
46
  else if (typeof value === 'string') {
46
- e.target.value = value;
47
+ target.value = value;
47
48
  }
48
49
  else {
49
50
  // value is readonly string[]
@@ -40,8 +40,11 @@ export const IntersectionObserverComponent = ({ onIntersected, root, rootMargin,
40
40
  }, []);
41
41
  useEffect(() => {
42
42
  const rootEl = rootRef.current;
43
- if (rootEl === null)
44
- return console.warn('rootRef.current should not be null');
43
+ if (rootEl === null) {
44
+ // eslint-disable-next-line no-console
45
+ console.warn('rootRef.current should not be null');
46
+ return;
47
+ }
45
48
  const observer = new IntersectionObserver(observation, { root, rootMargin, threshold });
46
49
  observerRef.current = observer;
47
50
  observer.observe(rootEl);
@@ -102,7 +102,7 @@ export const ValueEditor = ({ defaultValue = {}, onChange, path = [] }) => {
102
102
  array: Array.isArray(value),
103
103
  record: !Array.isArray(value) && isNonNullObject(value)
104
104
  });
105
- const pathStringDataAttr = (path ?? []).map(e => e.toString()).join('.');
105
+ const pathStringDataAttr = path.map(e => e.toString()).join('.');
106
106
  return _jsxs("span", { className: valueEditorClss, "data-path": pathStringDataAttr, children: [_jsxs(Select, { className: c('type'), onChange: handleTypeSelectChange, children: [_jsx("option", { value: 'string', selected: typeof value === 'string', children: "string" }), _jsx("option", { value: 'number', selected: typeof value === 'number', children: "number" }), _jsx("option", { value: 'boolean', selected: typeof value === 'boolean', children: "boolean" }), _jsx("option", { value: 'null', selected: value === null, children: "null" }), _jsx("option", { value: 'record', selected: isNonNullObject(value) && !Array.isArray(value), children: "record" }), _jsx("option", { value: 'array', selected: Array.isArray(value), children: "array" })] }), typeof value === 'string' && _jsx(StringEditor, { type: 'textarea', defaultValue: value, onChange: handleStringValueChange }), typeof value === 'number' && _jsx(NumberEditor, { defaultValue: value, onChange: handleNumberValueChange }), typeof value === 'boolean' && _jsx(BooleanEditor, { defaultValue: value, onChange: handleBooleanValueChange }), value === null && _jsx(NullEditor, { defaultValue: value }), isNonNullObject(value) && !Array.isArray(value) && _jsx(RecordEditor, { defaultValue: value, onChange: handleRecordValueChange, path: path }), Array.isArray(value) && _jsx(ArrayEditor, { defaultValue: value, onChange: handleArrayValueChange, path: path })] });
107
107
  };
108
108
  /* * * * * * * * * * * * * * * * *
@@ -1,4 +1,4 @@
1
- import { type FunctionComponent, type PropsWithChildren, type ReactNode } from 'react';
1
+ import type { FunctionComponent, PropsWithChildren, ReactNode } from 'react';
2
2
  import type { WithClassName } from '../utils/types.js';
3
3
  /**
4
4
  * Describes a single overlay positioned over the base content.
@@ -1,4 +1,12 @@
1
1
  import type { RefObject, Dispatch, SetStateAction } from 'react';
2
+ /**
3
+ * Scroll-related measurements for the document and viewport.
4
+ *
5
+ * @property win - Window inner dimensions.
6
+ * @property html - Document root element dimensions.
7
+ * @property scroll - Current scroll position.
8
+ * @property viewport - Current viewport bounds in document coordinates.
9
+ */
2
10
  export type GlobalScrollData = {
3
11
  win: {
4
12
  height: number;
@@ -19,18 +27,39 @@ export type GlobalScrollData = {
19
27
  maxY: number;
20
28
  };
21
29
  };
30
+ /**
31
+ * Position and size of a tracked element relative to the document.
32
+ *
33
+ * @property offsetX - Horizontal offset in pixels.
34
+ * @property offsetY - Vertical offset in pixels.
35
+ * @property width - Element width in pixels.
36
+ * @property height - Element height in pixels.
37
+ */
22
38
  export type LocalScrollData = {
23
39
  offsetX: number;
24
40
  offsetY: number;
25
41
  width: number;
26
42
  height: number;
27
43
  };
44
+ /**
45
+ * Combined scroll state passed to each registered {@link ScrollListener}.
46
+ *
47
+ * @property global - Document-level scroll data.
48
+ * @property local - Element-level position data.
49
+ */
28
50
  export type ScrollState = {
29
51
  global: GlobalScrollData;
30
52
  local: LocalScrollData;
31
53
  };
32
54
  export declare const globalDocumentScrollListener: () => GlobalScrollData;
33
55
  export declare const localElementScrollListener: (div: HTMLDivElement) => LocalScrollData;
56
+ /**
57
+ * An entry registered with the global scroll listener.
58
+ *
59
+ * @property id - Unique identifier for this registration.
60
+ * @property rootRef - Ref to the tracked DOM element.
61
+ * @property setData - State setter to update the component's scroll state.
62
+ */
34
63
  export type RegisterEntry = {
35
64
  id: string;
36
65
  rootRef: RefObject<HTMLDivElement | null>;
@@ -36,14 +36,15 @@ export const ControlledSelect = ({ label, error, value, className, children, ...
36
36
  const c = clss(publicClassName, { cssModule });
37
37
  const rootClss = mergeClassNames(c(null), className);
38
38
  return _jsxs(_Fragment, { children: [isNotFalsy(label) && _jsx("label", { className: c('label'), htmlFor: id, children: label }), _jsx("select", { ...rest, className: rootClss, id: id, value: value, onChange: e => {
39
+ const { target } = e;
39
40
  rest.onChange?.(e);
40
41
  if (value === undefined)
41
42
  return;
42
43
  if (typeof value === 'number') {
43
- e.target.value = `${value}`;
44
+ target.value = `${value}`;
44
45
  }
45
46
  else if (typeof value === 'string') {
46
- e.target.value = value;
47
+ target.value = value;
47
48
  }
48
49
  else {
49
50
  // value is readonly string[]
@@ -55,7 +55,7 @@ export const SequencerControlled = ({ step = 0, activateOnStep, _modifiers, _dat
55
55
  ? childPos === step
56
56
  : Array.isArray(thisStepActivateOnStep)
57
57
  ? thisStepActivateOnStep.includes(childPos)
58
- : thisStepActivateOnStep === childPos;
58
+ : false;
59
59
  const isNext = !isPrevious && !isCurrent;
60
60
  const childClss = c('child', {
61
61
  current: isCurrent,
@@ -60,6 +60,7 @@ export const Subtitles = ({ src, srtFileContent, subsGroups, timecodeMs, isEnded
60
60
  setLoadError(error instanceof Error
61
61
  ? error
62
62
  : new Error(unknownToString(error)));
63
+ // eslint-disable-next-line no-console
63
64
  console.error(error);
64
65
  onLoadFailed?.(toError(error));
65
66
  }
@@ -69,6 +70,7 @@ export const Subtitles = ({ src, srtFileContent, subsGroups, timecodeMs, isEnded
69
70
  }, [onLoadFailed, onLoaded]);
70
71
  useEffect(() => {
71
72
  fetchAndParseSubs(src, srtFileContent)
73
+ // eslint-disable-next-line no-console
72
74
  .catch((error) => { console.error(error); });
73
75
  }, [fetchAndParseSubs, src, srtFileContent]);
74
76
  // Rendering
@@ -77,7 +79,7 @@ export const Subtitles = ({ src, srtFileContent, subsGroups, timecodeMs, isEnded
77
79
  loading: isLoading,
78
80
  error: loadError !== null
79
81
  }), className);
80
- const prevSubs = parsedSubs.filter(({ start }) => start != null && start < (timecodeMs ?? 0));
82
+ const prevSubs = parsedSubs.filter(({ start }) => start !== undefined && start < (timecodeMs ?? 0));
81
83
  const lastPrevSub = prevSubs[prevSubs.length - 1];
82
84
  const highestSubId = Math.max(...parsedSubs.map(sub => sub.id));
83
85
  const subsGroupsWithBoundaries = computeSubGroupsWithBoundaries(subsGroups, highestSubId);
@@ -1,9 +1,23 @@
1
+ /**
2
+ * A single parsed subtitle entry from an SRT file.
3
+ *
4
+ * @property id - Sequential subtitle number.
5
+ * @property start - Start time in milliseconds.
6
+ * @property end - End time in milliseconds.
7
+ * @property content - Subtitle text content.
8
+ */
1
9
  export type ParsedSub = {
2
10
  id: number;
3
11
  start?: number;
4
12
  end?: number;
5
13
  content?: string;
6
14
  };
15
+ /**
16
+ * The inclusive ID boundaries of a subtitle group.
17
+ *
18
+ * @property startId - ID of the first subtitle in the group.
19
+ * @property endId - ID of the last subtitle in the group.
20
+ */
7
21
  export type SubGroupBoundaries = {
8
22
  startId: number;
9
23
  endId: number;
@@ -1,28 +1,32 @@
1
1
  import type { ParsedSub, SubGroupBoundaries } from './types.js';
2
2
  /**
3
- * Convertit un timecode au format SRT (hh:mm:ss,ms) en millisecondes.
4
- * @param timecode - Timecode sous forme de chaîne (ex: '00:01:23,456')
5
- * @returns Le temps en millisecondes
3
+ * Converts an SRT timecode (hh:mm:ss,ms) to milliseconds.
4
+ *
5
+ * @param timecode - Timecode string (e.g. '00:01:23,456').
6
+ * @returns The time in milliseconds.
6
7
  */
7
8
  export declare const getTimecodeToMs: (timecode: string) => number;
8
9
  /**
9
- * Parse un texte brut de sous-titres SRT en une liste d'objets ParsedSub.
10
- * @param rawSubs - Sous-titres bruts au format SRT
11
- * @returns Tableau d'objets ParsedSub
10
+ * Parses a raw SRT subtitle text into a list of {@link ParsedSub} objects.
11
+ *
12
+ * @param rawSubs - Raw subtitle content in SRT format.
13
+ * @returns Array of parsed subtitle entries.
12
14
  */
13
15
  export declare const parseSubs: (rawSubs: string) => ParsedSub[];
14
16
  /**
15
- * Calcule les groupes de sous-titres avec leurs bornes (startId, endId).
16
- * @param subsGroups - Tableau d'IDs de fin de groupe
17
- * @param highestSubId - ID le plus élevé des sous-titres
18
- * @returns Tableau de SubGroupBoundaries
17
+ * Computes subtitle groups with their boundaries (startId, endId).
18
+ *
19
+ * @param subsGroups - Array of group-end subtitle IDs.
20
+ * @param highestSubId - Highest subtitle ID in the track.
21
+ * @returns Array of {@link SubGroupBoundaries}.
19
22
  */
20
23
  export declare const computeSubGroupsWithBoundaries: (subsGroups: number[] | undefined, highestSubId: number) => SubGroupBoundaries[];
21
24
  /**
22
- * Retourne le groupe de sous-titres courant selon l'ID du dernier sous-titre précédent et l'état.
23
- * @param subsGroupsWithBoundaries - Tableau des groupes avec bornes
24
- * @param lastPrevSubId - ID du dernier sous-titre précédent
25
- * @param isEnded - Indique si la lecture est terminée
26
- * @returns Le groupe courant ou undefined
25
+ * Returns the current subtitle group based on the last preceding subtitle ID and playback state.
26
+ *
27
+ * @param subsGroupsWithBoundaries - Array of groups with their boundaries.
28
+ * @param lastPrevSubId - ID of the last subtitle that has already passed.
29
+ * @param isEnded - Whether playback has ended.
30
+ * @returns The current group, or `undefined` if none matches.
27
31
  */
28
32
  export declare const getCurrentGroup: (subsGroupsWithBoundaries: SubGroupBoundaries[], lastPrevSubId: number | undefined, isEnded: boolean | undefined) => SubGroupBoundaries | undefined;
@@ -1,7 +1,8 @@
1
1
  /**
2
- * Convertit un timecode au format SRT (hh:mm:ss,ms) en millisecondes.
3
- * @param timecode - Timecode sous forme de chaîne (ex: '00:01:23,456')
4
- * @returns Le temps en millisecondes
2
+ * Converts an SRT timecode (hh:mm:ss,ms) to milliseconds.
3
+ *
4
+ * @param timecode - Timecode string (e.g. '00:01:23,456').
5
+ * @returns The time in milliseconds.
5
6
  */
6
7
  export const getTimecodeToMs = (timecode) => {
7
8
  const [hours = '0', minutes = '0', secondsAndMs = '0,0'] = timecode.split(':');
@@ -13,13 +14,14 @@ export const getTimecodeToMs = (timecode) => {
13
14
  return result;
14
15
  };
15
16
  /**
16
- * Parse un texte brut de sous-titres SRT en une liste d'objets ParsedSub.
17
- * @param rawSubs - Sous-titres bruts au format SRT
18
- * @returns Tableau d'objets ParsedSub
17
+ * Parses a raw SRT subtitle text into a list of {@link ParsedSub} objects.
18
+ *
19
+ * @param rawSubs - Raw subtitle content in SRT format.
20
+ * @returns Array of parsed subtitle entries.
19
21
  */
20
22
  export const parseSubs = (rawSubs) => {
21
- const numberRegex = /^\d+$/;
22
- const timecodeRegex = /^[0-9]+:[0-9]+:[0-9]+,[0-9]+\s*-->\s*[0-9]+:[0-9]+:[0-9]+,[0-9]+$/;
23
+ const numberRegex = /^\d+$/v;
24
+ const timecodeRegex = /^[0-9]+:[0-9]+:[0-9]+,[0-9]+\s*-->\s*[0-9]+:[0-9]+:[0-9]+,[0-9]+$/v;
23
25
  const parsedSubs = [];
24
26
  rawSubs.split('\n').forEach(line => {
25
27
  if (line.trim() === '')
@@ -49,10 +51,10 @@ export const parseSubs = (rawSubs) => {
49
51
  }
50
52
  // content
51
53
  if (lastParsedSub?.id !== undefined
52
- && lastParsedSub?.start !== undefined
53
- && lastParsedSub?.end !== undefined) {
54
- if (lastParsedSub?.content !== undefined) {
55
- lastParsedSub.content += '\n' + line;
54
+ && lastParsedSub.start !== undefined
55
+ && lastParsedSub.end !== undefined) {
56
+ if (lastParsedSub.content !== undefined) {
57
+ lastParsedSub.content += `\n${line}`;
56
58
  return;
57
59
  }
58
60
  lastParsedSub.content = line;
@@ -61,21 +63,23 @@ export const parseSubs = (rawSubs) => {
61
63
  return parsedSubs;
62
64
  };
63
65
  /**
64
- * Calcule les groupes de sous-titres avec leurs bornes (startId, endId).
65
- * @param subsGroups - Tableau d'IDs de fin de groupe
66
- * @param highestSubId - ID le plus élevé des sous-titres
67
- * @returns Tableau de SubGroupBoundaries
66
+ * Computes subtitle groups with their boundaries (startId, endId).
67
+ *
68
+ * @param subsGroups - Array of group-end subtitle IDs.
69
+ * @param highestSubId - Highest subtitle ID in the track.
70
+ * @returns Array of {@link SubGroupBoundaries}.
68
71
  */
69
72
  export const computeSubGroupsWithBoundaries = (subsGroups, highestSubId) => {
70
73
  const fallback = [{ startId: 1, endId: highestSubId }];
71
74
  if (subsGroups === undefined || subsGroups.length === 0)
72
75
  return fallback;
73
76
  const emptySubGroupBoundaries = [];
74
- return subsGroups?.reduce((acc, curr, currIndex) => {
77
+ return subsGroups.reduce((acc, curr, currIndex) => {
75
78
  const lastInAcc = acc[acc.length - 1];
76
79
  const startId = lastInAcc === undefined ? 1 : lastInAcc.endId + 1;
77
80
  const endId = curr;
78
- if (currIndex === (subsGroups?.length ?? 0) - 1 && endId !== highestSubId) {
81
+ if (currIndex === subsGroups.length - 1
82
+ && endId !== highestSubId) {
79
83
  return [
80
84
  ...acc,
81
85
  { startId, endId },
@@ -83,14 +87,15 @@ export const computeSubGroupsWithBoundaries = (subsGroups, highestSubId) => {
83
87
  ];
84
88
  }
85
89
  return [...acc, { startId, endId }];
86
- }, emptySubGroupBoundaries) ?? fallback;
90
+ }, emptySubGroupBoundaries);
87
91
  };
88
92
  /**
89
- * Retourne le groupe de sous-titres courant selon l'ID du dernier sous-titre précédent et l'état.
90
- * @param subsGroupsWithBoundaries - Tableau des groupes avec bornes
91
- * @param lastPrevSubId - ID du dernier sous-titre précédent
92
- * @param isEnded - Indique si la lecture est terminée
93
- * @returns Le groupe courant ou undefined
93
+ * Returns the current subtitle group based on the last preceding subtitle ID and playback state.
94
+ *
95
+ * @param subsGroupsWithBoundaries - Array of groups with their boundaries.
96
+ * @param lastPrevSubId - ID of the last subtitle that has already passed.
97
+ * @param isEnded - Whether playback has ended.
98
+ * @returns The current group, or `undefined` if none matches.
94
99
  */
95
100
  export const getCurrentGroup = (subsGroupsWithBoundaries, lastPrevSubId, isEnded) => {
96
101
  const previousGroups = subsGroupsWithBoundaries.filter(group => group.startId <= (lastPrevSubId ?? 0));
@@ -57,14 +57,15 @@ export const ControlledTextarea = ({ label, error, autoHeight = false, value, cl
57
57
  const c = clss(publicClassName, { cssModule });
58
58
  const rootClss = mergeClassNames(c(null), className);
59
59
  return _jsxs(_Fragment, { children: [isNotFalsy(label) && _jsx("label", { className: c('label'), htmlFor: id, children: label }), _jsx("textarea", { ...rest, ref: textareaRef, className: rootClss, id: id, value: value, onChange: e => {
60
+ const { target } = e;
60
61
  rest.onChange?.(e);
61
62
  if (value === undefined)
62
63
  return;
63
64
  if (typeof value === 'number') {
64
- e.target.value = `${value}`;
65
+ target.value = `${value}`;
65
66
  }
66
67
  else if (typeof value === 'string') {
67
- e.target.value = value;
68
+ target.value = value;
68
69
  }
69
70
  else {
70
71
  // value is readonly string[]
@@ -94,6 +94,7 @@ export const UIModule = ({ src, props, stateHandlers, className }) => {
94
94
  }
95
95
  if ('update' in data && typeof data.update !== 'function')
96
96
  return setLoadedModule(errs.updFunc);
97
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- shape fully validated by the checks above
97
98
  const module = data;
98
99
  setLoadedModule(module);
99
100
  try {
@@ -109,7 +110,7 @@ export const UIModule = ({ src, props, stateHandlers, className }) => {
109
110
  : new Error(unknownToString(err));
110
111
  setLoadedModule(e);
111
112
  }
112
- }).catch(err => {
113
+ }).catch((err) => {
113
114
  setLoading(false);
114
115
  setLoadedModule(err instanceof Error ? err : new Error(unknownToString(err)));
115
116
  setModuleTarget(null);
@@ -133,6 +134,7 @@ export const UIModule = ({ src, props, stateHandlers, className }) => {
133
134
  }, [src]);
134
135
  // Fx dep. `loadedModule` - log load errors
135
136
  useEffect(() => {
137
+ // eslint-disable-next-line no-console
136
138
  if (loadedModule instanceof Error)
137
139
  console.error(loadedModule);
138
140
  }, [loadedModule]);
@@ -1,5 +1,5 @@
1
1
  import { type FunctionComponent, type PropsWithChildren, type VideoHTMLAttributes, type ReactEventHandler } from 'react';
2
- import { type WithClassName } from '../utils/types.js';
2
+ import type { WithClassName } from '../utils/types.js';
3
3
  import { type Props as SubsProps } from '../Subtitles/index.js';
4
4
  /**
5
5
  * Describes a single video source.
@@ -54,16 +54,15 @@ export const ControlledVideo = ({ sources, tracks, subtitles, playBtnContent, pa
54
54
  if (videoRef.current === null)
55
55
  return;
56
56
  const video = videoRef.current;
57
- setTotalTime(Number(video.duration));
57
+ setTotalTime(video.duration);
58
58
  intrinsicVideoAttributes.onLoadedMetadata?.(e);
59
59
  }, [intrinsicVideoAttributes.onLoadedMetadata]);
60
60
  const handleOnTimeUpdateEvent = useCallback((e) => {
61
61
  const video = e.currentTarget;
62
- const newTimeMs = secondsToMs(Number(video.currentTime));
62
+ const newTimeMs = secondsToMs(video.currentTime);
63
63
  setCurrentTimeMs(newTimeMs);
64
- if (intrinsicVideoAttributes?.onTimeUpdate !== undefined) {
64
+ if (intrinsicVideoAttributes.onTimeUpdate !== undefined)
65
65
  intrinsicVideoAttributes.onTimeUpdate(e);
66
- }
67
66
  }, [intrinsicVideoAttributes.onTimeUpdate]);
68
67
  const handleOnPlayEvent = useCallback((e) => {
69
68
  /* We must never play a video that has controlled time */
@@ -75,11 +74,11 @@ export const ControlledVideo = ({ sources, tracks, subtitles, playBtnContent, pa
75
74
  }, [isTimeControlled, intrinsicVideoAttributes.onPlay]);
76
75
  // Custom action handlers
77
76
  const handlePlayButtonClick = useCallback((e) => {
78
- const isPlaying = videoRef.current !== null ? Boolean(videoRef.current.paused) : false;
77
+ const isPlaying = videoRef.current !== null ? videoRef.current.paused : false;
79
78
  actionHandlers?.playButtonClick?.(e, isPlaying, videoRef.current);
80
79
  }, [actionHandlers?.playButtonClick]);
81
80
  const handlePauseButtonClick = useCallback((e) => {
82
- const isPlaying = videoRef.current !== null ? Boolean(videoRef.current.paused) : false;
81
+ const isPlaying = videoRef.current !== null ? videoRef.current.paused : false;
83
82
  actionHandlers?.pauseButtonClick?.(e, isPlaying, videoRef.current);
84
83
  }, [actionHandlers?.pauseButtonClick]);
85
84
  const handleLoudButtonClick = useCallback((e) => {
@@ -125,7 +124,7 @@ export const ControlledVideo = ({ sources, tracks, subtitles, playBtnContent, pa
125
124
  'muted': !isLoud,
126
125
  ..._modifiers
127
126
  }), className);
128
- const appliedVolume = volume ?? 0;
127
+ const appliedVolume = volume;
129
128
  const rootAttributes = {
130
129
  'data-play-on': isPlaying ? '' : undefined,
131
130
  'data-play-off': !isPlaying ? '' : undefined,
@@ -151,8 +150,10 @@ export const ControlledVideo = ({ sources, tracks, subtitles, playBtnContent, pa
151
150
  if (Array.isArray(sources)) {
152
151
  if (sources.length === 0)
153
152
  return [];
153
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- first element sampled just above; array is expected to be homogeneous
154
154
  if (typeof sources[0] === 'string')
155
155
  return sources.map(src => ({ src }));
156
+ // 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
156
157
  return sources;
157
158
  }
158
159
  return [];
@@ -165,8 +166,10 @@ export const ControlledVideo = ({ sources, tracks, subtitles, playBtnContent, pa
165
166
  if (Array.isArray(tracks)) {
166
167
  if (tracks.length === 0)
167
168
  return [];
169
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- first element sampled just above; array is expected to be homogeneous
168
170
  if (typeof tracks[0] === 'string')
169
171
  return tracks.map(src => ({ src }));
172
+ // 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
170
173
  return tracks;
171
174
  }
172
175
  return [];
@@ -208,9 +211,7 @@ export const ControlledVideo = ({ sources, tracks, subtitles, playBtnContent, pa
208
211
  }
209
212
  }, [play, isTimeControlled]);
210
213
  useEffect(() => {
211
- if (volume !== undefined) {
212
- forceVolume(videoRef.current, volume);
213
- }
214
+ forceVolume(videoRef.current, volume);
214
215
  }, [volume]);
215
216
  useEffect(() => {
216
217
  if (givenCurrentTimeMs !== undefined && videoRef.current !== null) {
@@ -55,20 +55,20 @@ export const Video = ({ loop, disclaimer, autoPlayWhenVisible, autoPauseWhenHidd
55
55
  }
56
56
  setPlay(true);
57
57
  hasBeenAutoPlayed.current = true;
58
- }, [controlledProps?.onPlay, shouldDisclaimerBeOn]);
58
+ }, [controlledProps.onPlay, shouldDisclaimerBeOn]);
59
59
  const handleOnPauseEvent = useCallback((e) => {
60
60
  setPlay(false);
61
61
  controlledProps.onPause?.(e);
62
- }, [controlledProps?.onPause]);
62
+ }, [controlledProps.onPause]);
63
63
  const handleOnVolumeChangeEvent = useCallback((e) => {
64
- setMute(Boolean(e.currentTarget.muted));
65
- setVolume(Number(e.currentTarget.volume));
64
+ setMute(e.currentTarget.muted);
65
+ setVolume(e.currentTarget.volume);
66
66
  controlledProps.onVolumeChange?.(e);
67
- }, [controlledProps?.onVolumeChange]);
67
+ }, [controlledProps.onVolumeChange]);
68
68
  const handleOnRateChangeEvent = useCallback((e) => {
69
- setPlaybackRate(Number(e.currentTarget.playbackRate));
69
+ setPlaybackRate(e.currentTarget.playbackRate);
70
70
  controlledProps.onRateChange?.(e);
71
- }, [controlledProps?.onRateChange]);
71
+ }, [controlledProps.onRateChange]);
72
72
  const handleOnFullscreenChangeEvent = useCallback((e) => {
73
73
  if (document.fullscreenElement === null || shouldDisclaimerBeOn) {
74
74
  setFullscreen(false);
@@ -77,7 +77,7 @@ export const Video = ({ loop, disclaimer, autoPlayWhenVisible, autoPauseWhenHidd
77
77
  const handleOnLoadedMetadataEvent = useCallback((e) => {
78
78
  muteAttributeWorkaround(e.currentTarget, controlledProps.muted ?? false);
79
79
  controlledProps.onLoadedMetadata?.(e);
80
- }, [controlledProps?.onLoadedMetadata, controlledProps?.muted]);
80
+ }, [controlledProps.onLoadedMetadata, controlledProps.muted]);
81
81
  // User actions
82
82
  const handlePlayButtonClick = useCallback((e, isPlaying, video) => {
83
83
  controlledProps.actionHandlers?.playButtonClick?.(e, isPlaying, video);
@@ -111,20 +111,28 @@ export const Video = ({ loop, disclaimer, autoPlayWhenVisible, autoPauseWhenHidd
111
111
  const onIntersected = useCallback(({ ioEntry }) => {
112
112
  if (ioEntry === undefined)
113
113
  return;
114
- const { isIntersecting = false } = ioEntry;
115
- if (autoPauseWhenHidden === true && !isIntersecting) {
114
+ const { isIntersecting } = ioEntry;
115
+ if (autoPauseWhenHidden === true && !isIntersecting)
116
116
  setPlay(false);
117
- }
118
- if (autoLoudWhenVisible === true && isIntersecting) {
117
+ if (autoLoudWhenVisible === true && isIntersecting)
119
118
  setMute(false);
120
- }
121
- if (autoPlayWhenVisible === true && !shouldDisclaimerBeOn && !hasBeenAutoPlayed.current && isIntersecting) {
119
+ if (autoPlayWhenVisible === true
120
+ && !shouldDisclaimerBeOn
121
+ && !hasBeenAutoPlayed.current
122
+ && isIntersecting)
122
123
  setPlay(true);
123
- }
124
- if (autoMuteWhenHidden === true && !shouldDisclaimerBeOn && !hasBeenAutoPlayed.current && !isIntersecting) {
124
+ if (autoMuteWhenHidden === true
125
+ && !shouldDisclaimerBeOn
126
+ && !hasBeenAutoPlayed.current
127
+ && !isIntersecting)
125
128
  setMute(true);
126
- }
127
- }, [autoPlayWhenVisible, autoPauseWhenHidden, autoMuteWhenHidden, autoLoudWhenVisible, shouldDisclaimerBeOn]);
129
+ }, [
130
+ autoPlayWhenVisible,
131
+ autoPauseWhenHidden,
132
+ autoMuteWhenHidden,
133
+ autoLoudWhenVisible,
134
+ shouldDisclaimerBeOn
135
+ ]);
128
136
  const handleDiclaimerDismiss = useCallback((prevIsOn) => {
129
137
  setIsDisclaimerOn(false);
130
138
  if (controlledProps.autoPlay === true && !hasBeenAutoPlayed.current) {
@@ -133,9 +141,8 @@ export const Video = ({ loop, disclaimer, autoPlayWhenVisible, autoPauseWhenHidd
133
141
  disclaimer?.actionHandlers?.dismissClick?.(prevIsOn);
134
142
  }, [controlledProps.autoPlay, disclaimer?.actionHandlers?.dismissClick]);
135
143
  useEffect(() => {
136
- if (isDisclaimerOn !== shouldDisclaimerBeOn) {
144
+ if (isDisclaimerOn !== shouldDisclaimerBeOn)
137
145
  setIsDisclaimerOn(shouldDisclaimerBeOn);
138
- }
139
146
  }, [isDisclaimerOn, shouldDisclaimerBeOn]);
140
147
  useEffect(() => {
141
148
  if (shouldDisclaimerBeOn) {
@@ -5,7 +5,7 @@ export declare const forceLoud: (video: HTMLVideoElement | null) => void;
5
5
  export declare const forceVolume: (video: HTMLVideoElement | null, volume: number) => void;
6
6
  export declare const forceCurrentTime: (video: HTMLVideoElement | null, time: number, setCurrentTime: Dispatch<SetStateAction<number>>) => void;
7
7
  export declare const forcePlay: (video: HTMLVideoElement | null) => Promise<boolean>;
8
- export declare const forcePause: (video: HTMLVideoElement | null) => Promise<boolean>;
8
+ export declare const forcePause: (video: HTMLVideoElement | null) => boolean;
9
9
  export declare const forcePlaybackRate: (video: HTMLVideoElement | null, rate: number) => void;
10
10
  export declare const forceFullscreen: (video: HTMLVideoElement | null) => Promise<boolean>;
11
11
  export declare const forceExitFullscreen: (video: HTMLVideoElement | null) => Promise<boolean>;