@lumx/react 3.20.1-alpha.10 → 3.20.1-alpha.12

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 (723) hide show
  1. package/CONTRIBUTING.md +1 -5
  2. package/README.md +0 -2
  3. package/_internal/0420e67b.js +119 -0
  4. package/_internal/0420e67b.js.map +1 -0
  5. package/_internal/0a490b07.js +75 -0
  6. package/_internal/0a490b07.js.map +1 -0
  7. package/_internal/0b9c76cb.js +6 -0
  8. package/_internal/0b9c76cb.js.map +1 -0
  9. package/_internal/0be1006e.js +97 -0
  10. package/_internal/0be1006e.js.map +1 -0
  11. package/_internal/0d1a078c.js +144 -0
  12. package/_internal/0d1a078c.js.map +1 -0
  13. package/_internal/15eab19b.js +75 -0
  14. package/_internal/15eab19b.js.map +1 -0
  15. package/_internal/179a84d1.js +259 -0
  16. package/_internal/179a84d1.js.map +1 -0
  17. package/_internal/193521fa.js +52 -0
  18. package/_internal/193521fa.js.map +1 -0
  19. package/_internal/1a90ea3d.js +51 -0
  20. package/_internal/1a90ea3d.js.map +1 -0
  21. package/_internal/1deba7d7.js +224 -0
  22. package/_internal/1deba7d7.js.map +1 -0
  23. package/_internal/1ea72630.js +146 -0
  24. package/_internal/1ea72630.js.map +1 -0
  25. package/_internal/21b83d16.js +137 -0
  26. package/_internal/21b83d16.js.map +1 -0
  27. package/_internal/230173a8.js +13 -0
  28. package/_internal/230173a8.js.map +1 -0
  29. package/_internal/297bed8f.js +457 -0
  30. package/_internal/297bed8f.js.map +1 -0
  31. package/_internal/2a3d237c.js +12 -0
  32. package/_internal/2a3d237c.js.map +1 -0
  33. package/_internal/2c2b6a89.js +52 -0
  34. package/_internal/2c2b6a89.js.map +1 -0
  35. package/_internal/2f1716fa.js +237 -0
  36. package/_internal/2f1716fa.js.map +1 -0
  37. package/_internal/2f6c7f84.js +103 -0
  38. package/_internal/2f6c7f84.js.map +1 -0
  39. package/_internal/3181f000.js +14 -0
  40. package/_internal/3181f000.js.map +1 -0
  41. package/_internal/329b5f12.js +55 -0
  42. package/_internal/329b5f12.js.map +1 -0
  43. package/_internal/332e9844.js +2 -0
  44. package/_internal/332e9844.js.map +1 -0
  45. package/_internal/34c59f5b.js +681 -0
  46. package/_internal/34c59f5b.js.map +1 -0
  47. package/_internal/36bd7352.js +219 -0
  48. package/_internal/36bd7352.js.map +1 -0
  49. package/_internal/370bdaed.js +61 -0
  50. package/_internal/370bdaed.js.map +1 -0
  51. package/_internal/37b007a4.js +20 -0
  52. package/_internal/37b007a4.js.map +1 -0
  53. package/_internal/3a1facc0.js +18 -0
  54. package/_internal/3a1facc0.js.map +1 -0
  55. package/_internal/3a4e4636.js +162 -0
  56. package/_internal/3a4e4636.js.map +1 -0
  57. package/_internal/3e653144.js +49 -0
  58. package/_internal/3e653144.js.map +1 -0
  59. package/_internal/3f86608e.js +45 -0
  60. package/_internal/3f86608e.js.map +1 -0
  61. package/_internal/478b5c92.js +24 -0
  62. package/_internal/478b5c92.js.map +1 -0
  63. package/_internal/4962be5b.js +121 -0
  64. package/_internal/4962be5b.js.map +1 -0
  65. package/_internal/49bbeed3.js +6 -0
  66. package/_internal/49bbeed3.js.map +1 -0
  67. package/_internal/4cd870a5.js +2155 -0
  68. package/_internal/4cd870a5.js.map +1 -0
  69. package/{src/utils/partitionMulti.ts → _internal/4daccdd5.js} +5 -9
  70. package/_internal/4daccdd5.js.map +1 -0
  71. package/_internal/501f2f9f.js +58 -0
  72. package/_internal/501f2f9f.js.map +1 -0
  73. package/_internal/5e7b90e2.js +2 -0
  74. package/_internal/5e7b90e2.js.map +1 -0
  75. package/_internal/5ec059fe.js +145 -0
  76. package/_internal/5ec059fe.js.map +1 -0
  77. package/_internal/5f8f9454.js +70 -0
  78. package/_internal/5f8f9454.js.map +1 -0
  79. package/_internal/5fe09341.js +112 -0
  80. package/_internal/5fe09341.js.map +1 -0
  81. package/_internal/628468c4.js +313 -0
  82. package/_internal/628468c4.js.map +1 -0
  83. package/_internal/6589b796.js +280 -0
  84. package/_internal/6589b796.js.map +1 -0
  85. package/_internal/65f91970.js +297 -0
  86. package/_internal/65f91970.js.map +1 -0
  87. package/_internal/66f691d3.js +74 -0
  88. package/_internal/66f691d3.js.map +1 -0
  89. package/_internal/68c10f98.js +166 -0
  90. package/_internal/68c10f98.js.map +1 -0
  91. package/_internal/690ca33e.js +109 -0
  92. package/_internal/690ca33e.js.map +1 -0
  93. package/_internal/6ca04271.js +108 -0
  94. package/_internal/6ca04271.js.map +1 -0
  95. package/_internal/6da19518.js +165 -0
  96. package/_internal/6da19518.js.map +1 -0
  97. package/_internal/7093ba23.js +95 -0
  98. package/_internal/7093ba23.js.map +1 -0
  99. package/_internal/74a4a214.js +82 -0
  100. package/_internal/74a4a214.js.map +1 -0
  101. package/_internal/76be70dd.js +42 -0
  102. package/_internal/76be70dd.js.map +1 -0
  103. package/_internal/78df9309.js +20 -0
  104. package/_internal/78df9309.js.map +1 -0
  105. package/_internal/7b221b05.js +9 -0
  106. package/_internal/7b221b05.js.map +1 -0
  107. package/_internal/7daf0f24.js +77 -0
  108. package/_internal/7daf0f24.js.map +1 -0
  109. package/_internal/7f54e947.js +758 -0
  110. package/_internal/7f54e947.js.map +1 -0
  111. package/_internal/825ac334.js +130 -0
  112. package/_internal/825ac334.js.map +1 -0
  113. package/_internal/827b804a.js +6 -0
  114. package/_internal/827b804a.js.map +1 -0
  115. package/_internal/84dfe68f.js +436 -0
  116. package/_internal/84dfe68f.js.map +1 -0
  117. package/_internal/85e3a5ca.js +145 -0
  118. package/_internal/85e3a5ca.js.map +1 -0
  119. package/_internal/86aa4aa4.js +154 -0
  120. package/_internal/86aa4aa4.js.map +1 -0
  121. package/_internal/88ec77c2.js +130 -0
  122. package/_internal/88ec77c2.js.map +1 -0
  123. package/_internal/8ab42752.js +103 -0
  124. package/_internal/8ab42752.js.map +1 -0
  125. package/_internal/95cfd814.js +70 -0
  126. package/_internal/95cfd814.js.map +1 -0
  127. package/_internal/9a4dfad0.js +326 -0
  128. package/_internal/9a4dfad0.js.map +1 -0
  129. package/_internal/9c9df5f2.js +80 -0
  130. package/_internal/9c9df5f2.js.map +1 -0
  131. package/_internal/9d1336a1.js +19 -0
  132. package/_internal/9d1336a1.js.map +1 -0
  133. package/_internal/9fdc715b.js +152 -0
  134. package/_internal/9fdc715b.js.map +1 -0
  135. package/_internal/a003602b.js +116 -0
  136. package/_internal/a003602b.js.map +1 -0
  137. package/_internal/a34639bd.js +97 -0
  138. package/_internal/a34639bd.js.map +1 -0
  139. package/_internal/a84f4981.js +122 -0
  140. package/_internal/a84f4981.js.map +1 -0
  141. package/_internal/b0a7a999.js +59 -0
  142. package/_internal/b0a7a999.js.map +1 -0
  143. package/_internal/b0b2e33d.js +359 -0
  144. package/_internal/b0b2e33d.js.map +1 -0
  145. package/_internal/b1af5979.js +653 -0
  146. package/_internal/b1af5979.js.map +1 -0
  147. package/_internal/b477da26.js +164 -0
  148. package/_internal/b477da26.js.map +1 -0
  149. package/_internal/b8667090.js +36 -0
  150. package/_internal/b8667090.js.map +1 -0
  151. package/_internal/bae266a9.js +61 -0
  152. package/_internal/bae266a9.js.map +1 -0
  153. package/_internal/be6da9b0.js +296 -0
  154. package/_internal/be6da9b0.js.map +1 -0
  155. package/_internal/c0414b89.js +101 -0
  156. package/_internal/c0414b89.js.map +1 -0
  157. package/_internal/c2388b10.js +58 -0
  158. package/_internal/c2388b10.js.map +1 -0
  159. package/_internal/c459a04d.js +148 -0
  160. package/_internal/c459a04d.js.map +1 -0
  161. package/_internal/c6ca7494.js +2 -0
  162. package/_internal/c6ca7494.js.map +1 -0
  163. package/_internal/cdddaed8.js +116 -0
  164. package/_internal/cdddaed8.js.map +1 -0
  165. package/_internal/d0dd1815.js +10 -0
  166. package/_internal/d0dd1815.js.map +1 -0
  167. package/_internal/d45e3f16.js +15 -0
  168. package/_internal/d45e3f16.js.map +1 -0
  169. package/_internal/d5f316cb.js +62 -0
  170. package/_internal/d5f316cb.js.map +1 -0
  171. package/_internal/db4fdc7b.js +310 -0
  172. package/_internal/db4fdc7b.js.map +1 -0
  173. package/_internal/dbe0cf24.js +75 -0
  174. package/_internal/dbe0cf24.js.map +1 -0
  175. package/_internal/de24f857.js +4 -0
  176. package/_internal/de24f857.js.map +1 -0
  177. package/_internal/e2afb13f.js +75 -0
  178. package/_internal/e2afb13f.js.map +1 -0
  179. package/_internal/e52f0d3f.js +94 -0
  180. package/_internal/e52f0d3f.js.map +1 -0
  181. package/_internal/e6dd117e.js +50 -0
  182. package/_internal/e6dd117e.js.map +1 -0
  183. package/_internal/e806b848.js +9 -0
  184. package/_internal/e806b848.js.map +1 -0
  185. package/_internal/ea04260d.js +29 -0
  186. package/_internal/ea04260d.js.map +1 -0
  187. package/_internal/eaa8b1d8.js +150 -0
  188. package/_internal/eaa8b1d8.js.map +1 -0
  189. package/_internal/eaf6c45a.js +4 -0
  190. package/_internal/eaf6c45a.js.map +1 -0
  191. package/_internal/edab29ce.js +308 -0
  192. package/_internal/edab29ce.js.map +1 -0
  193. package/_internal/ef5d1aac.js +4 -0
  194. package/_internal/ef5d1aac.js.map +1 -0
  195. package/_internal/f0900583.js +142 -0
  196. package/_internal/f0900583.js.map +1 -0
  197. package/_internal/f0d7d6ea.js +30 -0
  198. package/_internal/f0d7d6ea.js.map +1 -0
  199. package/_internal/f23cdf84.js +181 -0
  200. package/_internal/f23cdf84.js.map +1 -0
  201. package/_internal/f52e979e.js +3 -0
  202. package/_internal/f52e979e.js.map +1 -0
  203. package/_internal/f5508d3d.js +792 -0
  204. package/_internal/f5508d3d.js.map +1 -0
  205. package/_internal/f93fe83e.js +46 -0
  206. package/_internal/f93fe83e.js.map +1 -0
  207. package/index.d.ts +1 -2
  208. package/index.js +65 -14607
  209. package/index.js.map +1 -1
  210. package/package.json +3 -15
  211. package/utils/index.d.ts +1 -1
  212. package/utils/index.js +3 -1
  213. package/utils/index.js.map +1 -1
  214. package/_internal/index.js +0 -229
  215. package/_internal/index.js.map +0 -1
  216. package/src/components/alert-dialog/AlertDialog.stories.tsx +0 -127
  217. package/src/components/alert-dialog/AlertDialog.test.tsx +0 -34
  218. package/src/components/alert-dialog/AlertDialog.tsx +0 -189
  219. package/src/components/alert-dialog/index.ts +0 -1
  220. package/src/components/autocomplete/Autocomplete.stories.tsx +0 -75
  221. package/src/components/autocomplete/Autocomplete.test.tsx +0 -99
  222. package/src/components/autocomplete/Autocomplete.tsx +0 -294
  223. package/src/components/autocomplete/AutocompleteMultiple.stories.tsx +0 -167
  224. package/src/components/autocomplete/AutocompleteMultiple.test.tsx +0 -61
  225. package/src/components/autocomplete/AutocompleteMultiple.tsx +0 -156
  226. package/src/components/autocomplete/__mockData__/index.ts +0 -39
  227. package/src/components/autocomplete/index.ts +0 -2
  228. package/src/components/avatar/Avatar.stories.tsx +0 -119
  229. package/src/components/avatar/Avatar.test.tsx +0 -32
  230. package/src/components/avatar/Avatar.tsx +0 -114
  231. package/src/components/avatar/index.ts +0 -1
  232. package/src/components/badge/Badge.stories.tsx +0 -69
  233. package/src/components/badge/Badge.test.tsx +0 -45
  234. package/src/components/badge/Badge.tsx +0 -58
  235. package/src/components/badge/BadgeWrapper.stories.tsx +0 -75
  236. package/src/components/badge/BadgeWrapper.test.tsx +0 -47
  237. package/src/components/badge/BadgeWrapper.tsx +0 -37
  238. package/src/components/badge/index.ts +0 -2
  239. package/src/components/button/Button.stories.tsx +0 -355
  240. package/src/components/button/Button.test.tsx +0 -125
  241. package/src/components/button/Button.tsx +0 -101
  242. package/src/components/button/ButtonGroup.stories.tsx +0 -52
  243. package/src/components/button/ButtonGroup.test.tsx +0 -41
  244. package/src/components/button/ButtonGroup.tsx +0 -50
  245. package/src/components/button/ButtonRoot.tsx +0 -163
  246. package/src/components/button/IconButton.stories.tsx +0 -52
  247. package/src/components/button/IconButton.test.tsx +0 -66
  248. package/src/components/button/IconButton.tsx +0 -91
  249. package/src/components/button/index.ts +0 -4
  250. package/src/components/checkbox/Checkbox.stories.tsx +0 -64
  251. package/src/components/checkbox/Checkbox.test.tsx +0 -154
  252. package/src/components/checkbox/Checkbox.tsx +0 -164
  253. package/src/components/checkbox/index.ts +0 -1
  254. package/src/components/chip/Chip.stories.tsx +0 -164
  255. package/src/components/chip/Chip.test.tsx +0 -243
  256. package/src/components/chip/Chip.tsx +0 -168
  257. package/src/components/chip/ChipGroup.stories.tsx +0 -47
  258. package/src/components/chip/ChipGroup.test.tsx +0 -37
  259. package/src/components/chip/ChipGroup.tsx +0 -60
  260. package/src/components/chip/index.ts +0 -2
  261. package/src/components/comment-block/CommentBlock.stories.tsx +0 -91
  262. package/src/components/comment-block/CommentBlock.test.tsx +0 -28
  263. package/src/components/comment-block/CommentBlock.tsx +0 -172
  264. package/src/components/comment-block/index.ts +0 -1
  265. package/src/components/date-picker/DatePicker.stories.tsx +0 -118
  266. package/src/components/date-picker/DatePicker.test.tsx +0 -34
  267. package/src/components/date-picker/DatePicker.tsx +0 -52
  268. package/src/components/date-picker/DatePickerControlled.test.tsx +0 -91
  269. package/src/components/date-picker/DatePickerControlled.tsx +0 -259
  270. package/src/components/date-picker/DatePickerField.stories.tsx +0 -100
  271. package/src/components/date-picker/DatePickerField.test.tsx +0 -70
  272. package/src/components/date-picker/DatePickerField.tsx +0 -135
  273. package/src/components/date-picker/constants.ts +0 -11
  274. package/src/components/date-picker/index.ts +0 -4
  275. package/src/components/date-picker/types.ts +0 -28
  276. package/src/components/dialog/Dialog.stories.tsx +0 -318
  277. package/src/components/dialog/Dialog.test.tsx +0 -97
  278. package/src/components/dialog/Dialog.tsx +0 -288
  279. package/src/components/dialog/index.ts +0 -1
  280. package/src/components/divider/Divider.test.tsx +0 -51
  281. package/src/components/divider/Divider.tsx +0 -50
  282. package/src/components/divider/index.ts +0 -1
  283. package/src/components/drag-handle/DragHandle.test.tsx +0 -36
  284. package/src/components/drag-handle/DragHandle.tsx +0 -51
  285. package/src/components/drag-handle/index.ts +0 -1
  286. package/src/components/dropdown/Dropdown.stories.tsx +0 -31
  287. package/src/components/dropdown/Dropdown.test.tsx +0 -66
  288. package/src/components/dropdown/Dropdown.tsx +0 -186
  289. package/src/components/dropdown/index.ts +0 -1
  290. package/src/components/expansion-panel/ExpansionPanel.stories.tsx +0 -91
  291. package/src/components/expansion-panel/ExpansionPanel.test.tsx +0 -185
  292. package/src/components/expansion-panel/ExpansionPanel.tsx +0 -195
  293. package/src/components/expansion-panel/index.ts +0 -1
  294. package/src/components/flag/Flag.stories.tsx +0 -48
  295. package/src/components/flag/Flag.test.tsx +0 -62
  296. package/src/components/flag/Flag.tsx +0 -52
  297. package/src/components/flag/index.ts +0 -1
  298. package/src/components/flex-box/FlexBox.stories.tsx +0 -156
  299. package/src/components/flex-box/FlexBox.test.tsx +0 -24
  300. package/src/components/flex-box/FlexBox.tsx +0 -100
  301. package/src/components/flex-box/index.ts +0 -1
  302. package/src/components/generic-block/GenericBlock.stories.jsx +0 -128
  303. package/src/components/generic-block/GenericBlock.test.tsx +0 -156
  304. package/src/components/generic-block/GenericBlock.tsx +0 -225
  305. package/src/components/generic-block/constants.ts +0 -9
  306. package/src/components/generic-block/index.ts +0 -2
  307. package/src/components/grid/Grid.tsx +0 -83
  308. package/src/components/grid/GridItem.tsx +0 -55
  309. package/src/components/grid/index.ts +0 -2
  310. package/src/components/grid-column/GridColumn.stories.tsx +0 -45
  311. package/src/components/grid-column/GridColumn.test.jsx +0 -56
  312. package/src/components/grid-column/GridColumn.tsx +0 -83
  313. package/src/components/grid-column/index.ts +0 -1
  314. package/src/components/heading/Heading.stories.tsx +0 -69
  315. package/src/components/heading/Heading.test.tsx +0 -82
  316. package/src/components/heading/Heading.tsx +0 -65
  317. package/src/components/heading/HeadingLevelProvider.tsx +0 -30
  318. package/src/components/heading/constants.ts +0 -16
  319. package/src/components/heading/context.tsx +0 -13
  320. package/src/components/heading/index.ts +0 -3
  321. package/src/components/heading/useHeadingLevel.tsx +0 -8
  322. package/src/components/icon/Icon.stories.tsx +0 -73
  323. package/src/components/icon/Icon.test.tsx +0 -125
  324. package/src/components/icon/Icon.tsx +0 -22
  325. package/src/components/icon/index.ts +0 -1
  326. package/src/components/image-block/ImageBlock.stories.tsx +0 -117
  327. package/src/components/image-block/ImageBlock.test.tsx +0 -58
  328. package/src/components/image-block/ImageBlock.tsx +0 -142
  329. package/src/components/image-block/ImageCaption.tsx +0 -115
  330. package/src/components/image-block/index.ts +0 -1
  331. package/src/components/image-lightbox/ImageLightbox.stories.tsx +0 -160
  332. package/src/components/image-lightbox/ImageLightbox.test.tsx +0 -254
  333. package/src/components/image-lightbox/ImageLightbox.tsx +0 -90
  334. package/src/components/image-lightbox/constants.ts +0 -11
  335. package/src/components/image-lightbox/index.ts +0 -2
  336. package/src/components/image-lightbox/internal/ImageSlide.tsx +0 -107
  337. package/src/components/image-lightbox/internal/ImageSlideshow.tsx +0 -164
  338. package/src/components/image-lightbox/internal/useAnimateScroll.ts +0 -55
  339. package/src/components/image-lightbox/internal/usePointerZoom.ts +0 -148
  340. package/src/components/image-lightbox/types.ts +0 -48
  341. package/src/components/image-lightbox/useImageLightbox.tsx +0 -141
  342. package/src/components/inline-list/InlineList.stories.tsx +0 -77
  343. package/src/components/inline-list/InlineList.test.tsx +0 -52
  344. package/src/components/inline-list/InlineList.tsx +0 -96
  345. package/src/components/inline-list/index.ts +0 -1
  346. package/src/components/input-helper/InputHelper.stories.tsx +0 -35
  347. package/src/components/input-helper/InputHelper.test.tsx +0 -55
  348. package/src/components/input-helper/InputHelper.tsx +0 -65
  349. package/src/components/input-helper/constants.ts +0 -11
  350. package/src/components/input-helper/index.ts +0 -1
  351. package/src/components/input-label/InputLabel.stories.tsx +0 -45
  352. package/src/components/input-label/InputLabel.test.tsx +0 -59
  353. package/src/components/input-label/InputLabel.tsx +0 -69
  354. package/src/components/input-label/index.ts +0 -1
  355. package/src/components/lightbox/Lightbox.stories.tsx +0 -101
  356. package/src/components/lightbox/Lightbox.test.tsx +0 -53
  357. package/src/components/lightbox/Lightbox.tsx +0 -180
  358. package/src/components/lightbox/index.ts +0 -1
  359. package/src/components/link/Link.stories.tsx +0 -195
  360. package/src/components/link/Link.test.tsx +0 -127
  361. package/src/components/link/Link.tsx +0 -106
  362. package/src/components/link/index.ts +0 -1
  363. package/src/components/link-preview/LinkPreview.stories.tsx +0 -61
  364. package/src/components/link-preview/LinkPreview.test.tsx +0 -105
  365. package/src/components/link-preview/LinkPreview.tsx +0 -158
  366. package/src/components/link-preview/index.ts +0 -1
  367. package/src/components/list/List.stories.tsx +0 -116
  368. package/src/components/list/List.test.tsx +0 -18
  369. package/src/components/list/List.tsx +0 -104
  370. package/src/components/list/ListDivider.stories.tsx +0 -12
  371. package/src/components/list/ListDivider.test.tsx +0 -22
  372. package/src/components/list/ListDivider.tsx +0 -35
  373. package/src/components/list/ListItem.stories.tsx +0 -66
  374. package/src/components/list/ListItem.test.tsx +0 -93
  375. package/src/components/list/ListItem.tsx +0 -157
  376. package/src/components/list/ListSubheader.stories.tsx +0 -11
  377. package/src/components/list/ListSubheader.test.tsx +0 -21
  378. package/src/components/list/ListSubheader.tsx +0 -44
  379. package/src/components/list/index.ts +0 -4
  380. package/src/components/list/useInteractiveList.tsx +0 -202
  381. package/src/components/message/Message.stories.tsx +0 -72
  382. package/src/components/message/Message.test.tsx +0 -76
  383. package/src/components/message/Message.tsx +0 -100
  384. package/src/components/message/index.ts +0 -1
  385. package/src/components/mosaic/Mosaic.stories.tsx +0 -89
  386. package/src/components/mosaic/Mosaic.test.tsx +0 -77
  387. package/src/components/mosaic/Mosaic.tsx +0 -98
  388. package/src/components/mosaic/index.ts +0 -1
  389. package/src/components/navigation/Navigation.stories.tsx +0 -234
  390. package/src/components/navigation/Navigation.test.tsx +0 -65
  391. package/src/components/navigation/Navigation.tsx +0 -79
  392. package/src/components/navigation/NavigationItem.test.tsx +0 -35
  393. package/src/components/navigation/NavigationItem.tsx +0 -82
  394. package/src/components/navigation/NavigationSection.test.tsx +0 -137
  395. package/src/components/navigation/NavigationSection.tsx +0 -108
  396. package/src/components/navigation/context.tsx +0 -7
  397. package/src/components/navigation/index.ts +0 -1
  398. package/src/components/notification/Notification.test.tsx +0 -94
  399. package/src/components/notification/Notification.tsx +0 -138
  400. package/src/components/notification/Notifications.stories.tsx +0 -92
  401. package/src/components/notification/constants.ts +0 -28
  402. package/src/components/notification/index.ts +0 -1
  403. package/src/components/popover/Popover.stories.tsx +0 -264
  404. package/src/components/popover/Popover.test.tsx +0 -62
  405. package/src/components/popover/Popover.tsx +0 -201
  406. package/src/components/popover/constants.ts +0 -62
  407. package/src/components/popover/index.ts +0 -3
  408. package/src/components/popover/usePopoverStyle.tsx +0 -184
  409. package/src/components/popover/useRestoreFocusOnClose.tsx +0 -47
  410. package/src/components/popover-dialog/PopoverDialog.stories.tsx +0 -64
  411. package/src/components/popover-dialog/PopoverDialog.test.tsx +0 -139
  412. package/src/components/popover-dialog/PopoverDialog.tsx +0 -74
  413. package/src/components/popover-dialog/index.tsx +0 -1
  414. package/src/components/post-block/PostBlock.test.tsx +0 -27
  415. package/src/components/post-block/PostBlock.tsx +0 -122
  416. package/src/components/post-block/index.ts +0 -1
  417. package/src/components/progress/Progress.tsx +0 -68
  418. package/src/components/progress/ProgressCircular.stories.tsx +0 -43
  419. package/src/components/progress/ProgressCircular.test.tsx +0 -46
  420. package/src/components/progress/ProgressCircular.tsx +0 -82
  421. package/src/components/progress/ProgressLinear.stories.tsx +0 -12
  422. package/src/components/progress/ProgressLinear.test.tsx +0 -30
  423. package/src/components/progress/ProgressLinear.tsx +0 -50
  424. package/src/components/progress/index.ts +0 -3
  425. package/src/components/progress-tracker/ProgressTracker.stories.tsx +0 -145
  426. package/src/components/progress-tracker/ProgressTracker.test.tsx +0 -42
  427. package/src/components/progress-tracker/ProgressTracker.tsx +0 -87
  428. package/src/components/progress-tracker/ProgressTrackerProvider.test.tsx +0 -65
  429. package/src/components/progress-tracker/ProgressTrackerProvider.tsx +0 -67
  430. package/src/components/progress-tracker/ProgressTrackerStep.test.tsx +0 -36
  431. package/src/components/progress-tracker/ProgressTrackerStep.tsx +0 -159
  432. package/src/components/progress-tracker/ProgressTrackerStepPanel.test.tsx +0 -34
  433. package/src/components/progress-tracker/ProgressTrackerStepPanel.tsx +0 -67
  434. package/src/components/progress-tracker/index.ts +0 -4
  435. package/src/components/radio-button/RadioButton.stories.tsx +0 -71
  436. package/src/components/radio-button/RadioButton.test.tsx +0 -143
  437. package/src/components/radio-button/RadioButton.tsx +0 -143
  438. package/src/components/radio-button/RadioGroup.stories.tsx +0 -39
  439. package/src/components/radio-button/RadioGroup.test.tsx +0 -29
  440. package/src/components/radio-button/RadioGroup.tsx +0 -44
  441. package/src/components/radio-button/index.ts +0 -2
  442. package/src/components/select/Select.stories.tsx +0 -385
  443. package/src/components/select/Select.test.tsx +0 -199
  444. package/src/components/select/Select.tsx +0 -199
  445. package/src/components/select/SelectMultiple.stories.tsx +0 -315
  446. package/src/components/select/SelectMultiple.test.tsx +0 -213
  447. package/src/components/select/SelectMultiple.tsx +0 -206
  448. package/src/components/select/WithSelectContext.tsx +0 -147
  449. package/src/components/select/constants.ts +0 -55
  450. package/src/components/select/index.ts +0 -2
  451. package/src/components/side-navigation/SideNavigation.stories.tsx +0 -191
  452. package/src/components/side-navigation/SideNavigation.test.tsx +0 -37
  453. package/src/components/side-navigation/SideNavigation.tsx +0 -52
  454. package/src/components/side-navigation/SideNavigationItem.stories.tsx +0 -133
  455. package/src/components/side-navigation/SideNavigationItem.test.tsx +0 -136
  456. package/src/components/side-navigation/SideNavigationItem.tsx +0 -165
  457. package/src/components/side-navigation/index.ts +0 -2
  458. package/src/components/skeleton/SkeletonCircle.stories.tsx +0 -41
  459. package/src/components/skeleton/SkeletonCircle.test.tsx +0 -27
  460. package/src/components/skeleton/SkeletonCircle.tsx +0 -52
  461. package/src/components/skeleton/SkeletonRectangle.stories.tsx +0 -82
  462. package/src/components/skeleton/SkeletonRectangle.test.tsx +0 -27
  463. package/src/components/skeleton/SkeletonRectangle.tsx +0 -88
  464. package/src/components/skeleton/SkeletonTypography.stories.tsx +0 -19
  465. package/src/components/skeleton/SkeletonTypography.test.tsx +0 -27
  466. package/src/components/skeleton/SkeletonTypography.tsx +0 -59
  467. package/src/components/skeleton/index.ts +0 -3
  468. package/src/components/slider/Slider.stories.tsx +0 -45
  469. package/src/components/slider/Slider.test.tsx +0 -29
  470. package/src/components/slider/Slider.tsx +0 -299
  471. package/src/components/slider/index.ts +0 -2
  472. package/src/components/slideshow/Slides.tsx +0 -130
  473. package/src/components/slideshow/Slideshow.stories.tsx +0 -179
  474. package/src/components/slideshow/Slideshow.test.tsx +0 -35
  475. package/src/components/slideshow/Slideshow.tsx +0 -173
  476. package/src/components/slideshow/SlideshowControls.stories.tsx +0 -100
  477. package/src/components/slideshow/SlideshowControls.tsx +0 -243
  478. package/src/components/slideshow/SlideshowItem.tsx +0 -44
  479. package/src/components/slideshow/SlideshowItemGroup.tsx +0 -60
  480. package/src/components/slideshow/constants.ts +0 -24
  481. package/src/components/slideshow/index.ts +0 -4
  482. package/src/components/slideshow/useKeyNavigate.ts +0 -28
  483. package/src/components/slideshow/usePaginationVisibleRange.ts +0 -37
  484. package/src/components/slideshow/useSlideFocusManagement.tsx +0 -92
  485. package/src/components/slideshow/useSwipeNavigate.ts +0 -18
  486. package/src/components/switch/Switch.stories.tsx +0 -49
  487. package/src/components/switch/Switch.test.tsx +0 -144
  488. package/src/components/switch/Switch.tsx +0 -145
  489. package/src/components/switch/index.ts +0 -1
  490. package/src/components/table/Table.test.tsx +0 -29
  491. package/src/components/table/Table.tsx +0 -59
  492. package/src/components/table/TableBody.test.tsx +0 -30
  493. package/src/components/table/TableBody.tsx +0 -42
  494. package/src/components/table/TableCell.test.tsx +0 -72
  495. package/src/components/table/TableCell.tsx +0 -130
  496. package/src/components/table/TableHeader.test.tsx +0 -30
  497. package/src/components/table/TableHeader.tsx +0 -48
  498. package/src/components/table/TableRow.test.tsx +0 -40
  499. package/src/components/table/TableRow.tsx +0 -71
  500. package/src/components/table/index.ts +0 -5
  501. package/src/components/tabs/Tab.test.tsx +0 -50
  502. package/src/components/tabs/Tab.tsx +0 -133
  503. package/src/components/tabs/TabList.test.tsx +0 -49
  504. package/src/components/tabs/TabList.tsx +0 -94
  505. package/src/components/tabs/TabPanel.test.tsx +0 -37
  506. package/src/components/tabs/TabPanel.tsx +0 -67
  507. package/src/components/tabs/TabProvider.test.tsx +0 -161
  508. package/src/components/tabs/TabProvider.tsx +0 -67
  509. package/src/components/tabs/Tabs.stories.tsx +0 -170
  510. package/src/components/tabs/index.ts +0 -4
  511. package/src/components/tabs/state.ts +0 -114
  512. package/src/components/tabs/test-utils.ts +0 -39
  513. package/src/components/text/Text.stories.tsx +0 -177
  514. package/src/components/text/Text.test.tsx +0 -92
  515. package/src/components/text/Text.tsx +0 -139
  516. package/src/components/text/index.ts +0 -1
  517. package/src/components/text-field/TextField.stories.tsx +0 -180
  518. package/src/components/text-field/TextField.test.tsx +0 -298
  519. package/src/components/text-field/TextField.tsx +0 -493
  520. package/src/components/text-field/index.ts +0 -1
  521. package/src/components/thumbnail/Thumbnail.stories.tsx +0 -448
  522. package/src/components/thumbnail/Thumbnail.test.tsx +0 -88
  523. package/src/components/thumbnail/Thumbnail.tsx +0 -248
  524. package/src/components/thumbnail/index.ts +0 -3
  525. package/src/components/thumbnail/types.ts +0 -48
  526. package/src/components/thumbnail/useFocusPointStyle.test.ts +0 -92
  527. package/src/components/thumbnail/useFocusPointStyle.tsx +0 -107
  528. package/src/components/thumbnail/useImageLoad.ts +0 -40
  529. package/src/components/toolbar/Toolbar.tsx +0 -68
  530. package/src/components/toolbar/index.ts +0 -1
  531. package/src/components/tooltip/Tooltip.stories.tsx +0 -118
  532. package/src/components/tooltip/Tooltip.test.tsx +0 -417
  533. package/src/components/tooltip/Tooltip.tsx +0 -165
  534. package/src/components/tooltip/constants.ts +0 -8
  535. package/src/components/tooltip/context.tsx +0 -17
  536. package/src/components/tooltip/index.ts +0 -1
  537. package/src/components/tooltip/useInjectTooltipRef.tsx +0 -55
  538. package/src/components/tooltip/useTooltipOpen.tsx +0 -143
  539. package/src/components/uploader/Uploader.stories.tsx +0 -109
  540. package/src/components/uploader/Uploader.test.tsx +0 -146
  541. package/src/components/uploader/Uploader.tsx +0 -177
  542. package/src/components/uploader/index.ts +0 -1
  543. package/src/components/user-block/UserBlock.stories.tsx +0 -133
  544. package/src/components/user-block/UserBlock.test.tsx +0 -106
  545. package/src/components/user-block/UserBlock.tsx +0 -193
  546. package/src/components/user-block/index.ts +0 -1
  547. package/src/constants.ts +0 -27
  548. package/src/hooks/useBooleanState.tsx +0 -13
  549. package/src/hooks/useCallbackOnEscape.ts +0 -34
  550. package/src/hooks/useChipGroupNavigation.tsx +0 -75
  551. package/src/hooks/useClickAway.tsx +0 -48
  552. package/src/hooks/useDisableBodyScroll.ts +0 -28
  553. package/src/hooks/useEventCallback.tsx +0 -17
  554. package/src/hooks/useFocus.tsx +0 -21
  555. package/src/hooks/useFocusTrap.ts +0 -93
  556. package/src/hooks/useFocusWithin.ts +0 -33
  557. package/src/hooks/useId.test.tsx +0 -22
  558. package/src/hooks/useId.ts +0 -15
  559. package/src/hooks/useImageSize.ts +0 -17
  560. package/src/hooks/useInfiniteScroll.tsx +0 -60
  561. package/src/hooks/useIntersectionObserver.tsx +0 -43
  562. package/src/hooks/useInterval.tsx +0 -31
  563. package/src/hooks/useKeyboardListNavigation.tsx +0 -204
  564. package/src/hooks/useListenFocus.tsx +0 -26
  565. package/src/hooks/useOverflowTooltipLabel.tsx +0 -32
  566. package/src/hooks/usePopper.ts +0 -12
  567. package/src/hooks/usePreviousValue.ts +0 -12
  568. package/src/hooks/useRovingTabIndex.tsx +0 -90
  569. package/src/hooks/useSizeOnWindowResize.ts +0 -30
  570. package/src/hooks/useSlideshowControls.ts +0 -246
  571. package/src/hooks/useStopPropagation.ts +0 -21
  572. package/src/hooks/useTransitionVisibility.ts +0 -48
  573. package/src/index.ts +0 -63
  574. package/src/stories/controls/color.ts +0 -7
  575. package/src/stories/controls/element.ts +0 -6
  576. package/src/stories/controls/focusPoint.ts +0 -1
  577. package/src/stories/controls/icons.ts +0 -126
  578. package/src/stories/controls/image.ts +0 -84
  579. package/src/stories/controls/selectArgType.ts +0 -8
  580. package/src/stories/controls/theme.ts +0 -3
  581. package/src/stories/controls/typography.ts +0 -5
  582. package/src/stories/controls/withUndefined.ts +0 -1
  583. package/src/stories/decorators/withChromaticForceScreenSize.tsx +0 -7
  584. package/src/stories/decorators/withCombinations.tsx +0 -132
  585. package/src/stories/decorators/withNestedProps.tsx +0 -22
  586. package/src/stories/decorators/withResizableBox.tsx +0 -21
  587. package/src/stories/decorators/withThemedBackground.tsx +0 -16
  588. package/src/stories/decorators/withValueOnChange.tsx +0 -18
  589. package/src/stories/decorators/withWrapper.tsx +0 -19
  590. package/src/stories/generated/Autocomplete/Demos.stories.tsx +0 -7
  591. package/src/stories/generated/Avatar/Demos.stories.tsx +0 -7
  592. package/src/stories/generated/Badge/Demos.stories.tsx +0 -9
  593. package/src/stories/generated/Button/Demos.stories.tsx +0 -11
  594. package/src/stories/generated/Checkbox/Demos.stories.tsx +0 -6
  595. package/src/stories/generated/Chip/Demos.stories.tsx +0 -11
  596. package/src/stories/generated/CommentBlock/Demos.stories.tsx +0 -8
  597. package/src/stories/generated/DatePicker/Demos.stories.tsx +0 -8
  598. package/src/stories/generated/Dialog/Demos.stories.tsx +0 -10
  599. package/src/stories/generated/Divider/Demos.stories.tsx +0 -6
  600. package/src/stories/generated/Dropdown/Demos.stories.tsx +0 -8
  601. package/src/stories/generated/ExpansionPanel/Demos.stories.tsx +0 -9
  602. package/src/stories/generated/Flag/Demos.stories.tsx +0 -6
  603. package/src/stories/generated/GenericBlock/Demos.stories.tsx +0 -8
  604. package/src/stories/generated/Heading/Demos.stories.tsx +0 -6
  605. package/src/stories/generated/Icon/Demos.stories.tsx +0 -8
  606. package/src/stories/generated/ImageBlock/Demos.stories.tsx +0 -9
  607. package/src/stories/generated/ImageLightbox/Demos.stories.tsx +0 -6
  608. package/src/stories/generated/Lightbox/Demos.stories.tsx +0 -6
  609. package/src/stories/generated/LinkPreview/Demos.stories.tsx +0 -7
  610. package/src/stories/generated/List/Demos.stories.tsx +0 -11
  611. package/src/stories/generated/Message/Demos.stories.tsx +0 -11
  612. package/src/stories/generated/Mosaic/Demos.stories.tsx +0 -10
  613. package/src/stories/generated/Notification/Demos.stories.tsx +0 -6
  614. package/src/stories/generated/Popover/Demos.stories.tsx +0 -11
  615. package/src/stories/generated/PopoverDialog/Demos.stories.tsx +0 -6
  616. package/src/stories/generated/PostBlock/Demos.stories.tsx +0 -6
  617. package/src/stories/generated/Progress/Demos.stories.tsx +0 -7
  618. package/src/stories/generated/ProgressTracker/Demos.stories.tsx +0 -9
  619. package/src/stories/generated/RadioButton/Demos.stories.tsx +0 -6
  620. package/src/stories/generated/Select/Demos.stories.tsx +0 -14
  621. package/src/stories/generated/SideNavigation/Demos.stories.tsx +0 -10
  622. package/src/stories/generated/Skeleton/Demos.stories.tsx +0 -9
  623. package/src/stories/generated/Slider/Demos.stories.tsx +0 -9
  624. package/src/stories/generated/Slideshow/Demos.stories.tsx +0 -8
  625. package/src/stories/generated/Switch/Demos.stories.tsx +0 -6
  626. package/src/stories/generated/Table/Demos.stories.tsx +0 -7
  627. package/src/stories/generated/Tabs/Demos.stories.tsx +0 -8
  628. package/src/stories/generated/TextField/Demos.stories.tsx +0 -20
  629. package/src/stories/generated/Thumbnail/Demos.stories.tsx +0 -12
  630. package/src/stories/generated/Toolbar/Demos.stories.tsx +0 -10
  631. package/src/stories/generated/Tooltip/Demos.stories.tsx +0 -8
  632. package/src/stories/generated/Uploader/Demos.stories.tsx +0 -8
  633. package/src/stories/generated/UserBlock/Demos.stories.tsx +0 -11
  634. package/src/stories/utils/CustomLink.tsx +0 -12
  635. package/src/stories/utils/concatPath.tsx +0 -17
  636. package/src/stories/utils/disableArgTypes.ts +0 -3
  637. package/src/stories/utils/initDemoShadowDOMPortal.ts +0 -10
  638. package/src/stories/utils/lorem.ts +0 -59
  639. package/src/stories/utils/theming.tsx +0 -166
  640. package/src/stories/utils/toFlattenProps.ts +0 -28
  641. package/src/stories/utils/withCategory.ts +0 -12
  642. package/src/testing/utils/ThemeSentinel.tsx +0 -10
  643. package/src/testing/utils/commonTestsSuiteRTL.tsx +0 -193
  644. package/src/testing/utils/index.ts +0 -1
  645. package/src/testing/utils/queries.ts +0 -19
  646. package/src/untypped-modules.d.ts +0 -9
  647. package/src/utils/ClickAwayProvider/ClickAwayProvider.stories.jsx +0 -70
  648. package/src/utils/ClickAwayProvider/ClickAwayProvider.tsx +0 -69
  649. package/src/utils/ClickAwayProvider/index.ts +0 -1
  650. package/src/utils/MaterialThemeSwitcher/MaterialThemeSwitcher.tsx +0 -54
  651. package/src/utils/MaterialThemeSwitcher/index.ts +0 -1
  652. package/src/utils/Portal/Portal.test.tsx +0 -31
  653. package/src/utils/Portal/Portal.tsx +0 -33
  654. package/src/utils/Portal/PortalProvider.stories.jsx +0 -22
  655. package/src/utils/Portal/PortalProvider.test.tsx +0 -72
  656. package/src/utils/Portal/PortalProvider.tsx +0 -24
  657. package/src/utils/Portal/index.tsx +0 -2
  658. package/src/utils/browser/DOM/findImage.tsx +0 -3
  659. package/src/utils/browser/DOM/startViewTransition.ts +0 -68
  660. package/src/utils/browser/focus/constants.ts +0 -7
  661. package/src/utils/browser/focus/getFirstAndLastFocusable.test.ts +0 -134
  662. package/src/utils/browser/focus/getFirstAndLastFocusable.ts +0 -21
  663. package/src/utils/browser/focus/getFocusableElements.test.ts +0 -151
  664. package/src/utils/browser/focus/getFocusableElements.ts +0 -7
  665. package/src/utils/browser/isFocusVisible.ts +0 -9
  666. package/src/utils/browser/isHoverNotSupported.test.js +0 -24
  667. package/src/utils/browser/isHoverNotSupported.ts +0 -2
  668. package/src/utils/browser/isReducedMotion.ts +0 -6
  669. package/src/utils/date/addMonthResetDay.test.ts +0 -13
  670. package/src/utils/date/addMonthResetDay.ts +0 -9
  671. package/src/utils/date/formatDayNumber.test.ts +0 -12
  672. package/src/utils/date/formatDayNumber.ts +0 -5
  673. package/src/utils/date/getFirstDayOfWeek.test.ts +0 -20
  674. package/src/utils/date/getFirstDayOfWeek.ts +0 -59
  675. package/src/utils/date/getMonthCalendar.test.ts +0 -127
  676. package/src/utils/date/getMonthCalendar.ts +0 -69
  677. package/src/utils/date/getWeekDays.test.ts +0 -48
  678. package/src/utils/date/getWeekDays.ts +0 -34
  679. package/src/utils/date/getYearDisplayName.test.ts +0 -20
  680. package/src/utils/date/getYearDisplayName.ts +0 -12
  681. package/src/utils/date/isDateValid.test.ts +0 -15
  682. package/src/utils/date/isDateValid.ts +0 -4
  683. package/src/utils/date/isSameDay.test.ts +0 -37
  684. package/src/utils/date/isSameDay.ts +0 -11
  685. package/src/utils/disabled/DisabledStateContext.tsx +0 -29
  686. package/src/utils/disabled/DisabledStateProvider.stories.tsx +0 -92
  687. package/src/utils/disabled/index.ts +0 -2
  688. package/src/utils/disabled/useDisableStateProps.test.tsx +0 -74
  689. package/src/utils/disabled/useDisableStateProps.tsx +0 -37
  690. package/src/utils/function/makeListenerTowerContext.ts +0 -32
  691. package/src/utils/index.ts +0 -7
  692. package/src/utils/locale/getCurrentLocale.ts +0 -4
  693. package/src/utils/locale/parseLocale.test.ts +0 -17
  694. package/src/utils/locale/parseLocale.ts +0 -23
  695. package/src/utils/locale/types.ts +0 -8
  696. package/src/utils/number/clamp.ts +0 -17
  697. package/src/utils/object/isEqual.test.ts +0 -25
  698. package/src/utils/object/isEqual.ts +0 -11
  699. package/src/utils/partitionMulti.test.ts +0 -27
  700. package/src/utils/react/OnBeforeUnmount.tsx +0 -20
  701. package/src/utils/react/RawClickable.test.tsx +0 -153
  702. package/src/utils/react/RawClickable.tsx +0 -65
  703. package/src/utils/react/flattenChildren.ts +0 -32
  704. package/src/utils/react/forwardRef.ts +0 -11
  705. package/src/utils/react/forwardRefPolymorphic.ts +0 -9
  706. package/src/utils/react/mergeRefs.ts +0 -33
  707. package/src/utils/react/renderLink.tsx +0 -17
  708. package/src/utils/react/skipRender.tsx +0 -18
  709. package/src/utils/react/unref.ts +0 -7
  710. package/src/utils/react/wrapChildrenIconWithSpaces.test.tsx +0 -37
  711. package/src/utils/react/wrapChildrenIconWithSpaces.tsx +0 -22
  712. package/src/utils/theme/ThemeContext.ts +0 -16
  713. package/src/utils/theme/invertTheme.ts +0 -4
  714. package/src/utils/type/Comp.ts +0 -14
  715. package/src/utils/type/ComponentRef.ts +0 -16
  716. package/src/utils/type/HasAriaDisabled.ts +0 -6
  717. package/src/utils/type/HasPolymorphicAs.ts +0 -6
  718. package/src/utils/type/HasRequiredLinkHref.ts +0 -1
  719. package/src/utils/type/MaybeElementOrRef.ts +0 -6
  720. package/src/utils/type/index.ts +0 -9
  721. package/src/utils/type/isComponent.ts +0 -33
  722. package/src/utils/type/isComponentType.ts +0 -9
  723. /package/_internal/{Falsy.d.ts → d95844c1.d.ts} +0 -0
@@ -1,254 +0,0 @@
1
- import { commonTestsSuiteRTL } from '@lumx/react/testing/utils';
2
- import { render, within, screen, waitFor } from '@testing-library/react';
3
- import { getByClassName, queryByClassName } from '@lumx/react/testing/utils/queries';
4
- import userEvent from '@testing-library/user-event';
5
- import { useImageSize } from '@lumx/react/hooks/useImageSize';
6
- import { useSizeOnWindowResize } from '@lumx/react/hooks/useSizeOnWindowResize';
7
-
8
- import { ImageLightbox } from './ImageLightbox';
9
- import { ImageLightboxProps } from './types';
10
- import Meta, {
11
- MultipleImages,
12
- MultipleImagesWithZoom,
13
- SingleImage,
14
- SingleImageWithZoom,
15
- WithButtonTrigger,
16
- WithMosaicTrigger,
17
- } from './ImageLightbox.stories';
18
-
19
- vi.mock('@lumx/react/hooks/useImageSize');
20
- vi.mock('@lumx/react/hooks/useSizeOnWindowResize');
21
-
22
- const CLASSNAME = ImageLightbox.className as string;
23
- const baseProps = Meta.args;
24
-
25
- const setup = (overrides: Partial<ImageLightboxProps> = {}) => {
26
- const props: any = {
27
- ...baseProps,
28
- isOpen: true,
29
- images: [],
30
- ...overrides,
31
- };
32
- const result = render(<ImageLightbox {...props} />);
33
- const rerender = () => result.rerender(<ImageLightbox {...props} />);
34
- const imageLightbox = queryByClassName(document.body, CLASSNAME);
35
- return { props, imageLightbox, rerender };
36
- };
37
-
38
- const queries = {
39
- getImageLightbox: () => getByClassName(document.body, CLASSNAME),
40
- queryCloseButton: (imageLightbox: HTMLElement) => within(imageLightbox).queryByRole('button', { name: 'Close' }),
41
- queryImage: (imageLightbox: HTMLElement, name?: string) => within(imageLightbox).queryByRole('img', { name }),
42
- queryScrollArea: (imageLightbox: HTMLElement) =>
43
- queryByClassName(imageLightbox, 'lumx-image-lightbox__image-slide'),
44
- queryZoomInButton: (imageLightbox: HTMLElement) => within(imageLightbox).queryByRole('button', { name: 'Zoom in' }),
45
- queryZoomOutButton: (imageLightbox: HTMLElement) =>
46
- within(imageLightbox).queryByRole('button', { name: 'Zoom out' }),
47
- queryPrevSlideButton: (imageLightbox: HTMLElement) =>
48
- within(imageLightbox).queryByRole('button', { name: 'Previous' }),
49
- queryNextSlideButton: (imageLightbox: HTMLElement) => within(imageLightbox).queryByRole('button', { name: 'Next' }),
50
- querySlideButton: (imageLightbox: HTMLElement, slide: number) =>
51
- within(imageLightbox).queryByRole('tab', { name: `Go to slide ${slide}` }),
52
- };
53
-
54
- describe(`<${ImageLightbox.displayName}>`, () => {
55
- beforeEach(() => {
56
- (useImageSize as any).mockReturnValue(null);
57
- (useSizeOnWindowResize as any).mockReturnValue([null, vi.fn()]);
58
- });
59
-
60
- describe('render', () => {
61
- it('should render single image', () => {
62
- setup(SingleImage.args);
63
- const imageLightbox = queries.getImageLightbox();
64
-
65
- // Should render
66
- expect(queries.queryCloseButton(imageLightbox)).toBeInTheDocument();
67
- expect(queries.queryImage(imageLightbox, 'Image 1')).toBeInTheDocument();
68
-
69
- // Should not render
70
- expect(queries.queryZoomInButton(imageLightbox)).not.toBeInTheDocument();
71
- expect(queries.queryZoomOutButton(imageLightbox)).not.toBeInTheDocument();
72
- expect(queries.queryPrevSlideButton(imageLightbox)).not.toBeInTheDocument();
73
- expect(queries.queryNextSlideButton(imageLightbox)).not.toBeInTheDocument();
74
- });
75
-
76
- it('should render single image with zoom', () => {
77
- setup(SingleImageWithZoom.args);
78
- const imageLightbox = queries.getImageLightbox();
79
-
80
- // Should render
81
- expect(queries.queryCloseButton(imageLightbox)).toBeInTheDocument();
82
- expect(queries.queryImage(imageLightbox, 'Image 1')).toBeInTheDocument();
83
- expect(queries.queryZoomInButton(imageLightbox)).toBeInTheDocument();
84
- expect(queries.queryZoomOutButton(imageLightbox)).toBeInTheDocument();
85
-
86
- // Should not render
87
- expect(queries.queryPrevSlideButton(imageLightbox)).not.toBeInTheDocument();
88
- expect(queries.queryNextSlideButton(imageLightbox)).not.toBeInTheDocument();
89
- });
90
-
91
- it('should render multiple images', () => {
92
- setup(MultipleImages.args);
93
- const imageLightbox = queries.getImageLightbox();
94
-
95
- // Should render
96
- expect(queries.queryCloseButton(imageLightbox)).toBeInTheDocument();
97
- expect(queries.queryImage(imageLightbox, 'Image 1')).toBeInTheDocument();
98
- expect(queries.queryPrevSlideButton(imageLightbox)).toBeInTheDocument();
99
- expect(queries.queryNextSlideButton(imageLightbox)).toBeInTheDocument();
100
-
101
- // Should not render
102
- expect(queries.queryZoomInButton(imageLightbox)).not.toBeInTheDocument();
103
- expect(queries.queryZoomOutButton(imageLightbox)).not.toBeInTheDocument();
104
- });
105
-
106
- it('should render multiple images with set active image', () => {
107
- setup({ ...MultipleImages.args, activeImageIndex: 1 });
108
- const imageLightbox = queries.getImageLightbox();
109
-
110
- // Should render
111
- expect(queries.queryImage(imageLightbox, 'Image 2')).toBeInTheDocument();
112
- });
113
-
114
- it('should render multiple images with zoom', () => {
115
- setup(MultipleImagesWithZoom.args);
116
- const imageLightbox = queries.getImageLightbox();
117
-
118
- // Should render
119
- expect(queries.queryCloseButton(imageLightbox)).toBeInTheDocument();
120
- expect(queries.queryImage(imageLightbox, 'Image 1')).toBeInTheDocument();
121
- expect(queries.queryPrevSlideButton(imageLightbox)).toBeInTheDocument();
122
- expect(queries.queryNextSlideButton(imageLightbox)).toBeInTheDocument();
123
- expect(queries.queryZoomInButton(imageLightbox)).toBeInTheDocument();
124
- expect(queries.queryZoomOutButton(imageLightbox)).toBeInTheDocument();
125
- });
126
- });
127
-
128
- describe('trigger', () => {
129
- it('should move focus on open and close with single image lightbox', async () => {
130
- const decorator = WithButtonTrigger.decorators[0];
131
- const Story = ({ args }: any) => <ImageLightbox {...args} />;
132
- const Render = () => decorator(Story, { args: baseProps });
133
- render(<Render />);
134
-
135
- // Focus the second button
136
- await userEvent.tab();
137
- await userEvent.tab();
138
- const buttonTrigger = screen.getByRole('button', { name: 'Image 2' });
139
- expect(buttonTrigger).toHaveFocus();
140
-
141
- // Open image lightbox with the button trigger
142
- await userEvent.keyboard('{enter}');
143
-
144
- // Focus moved to the close button
145
- const imageLightbox = queries.getImageLightbox();
146
- const closeButton = queries.queryCloseButton(imageLightbox);
147
- expect(closeButton).toHaveFocus();
148
- const tooltip = screen.getByRole('tooltip', { name: 'Close' });
149
- expect(tooltip).toBeInTheDocument();
150
-
151
- // Image lightbox opened on the correct image
152
- expect(queries.queryImage(imageLightbox, 'Image 2')).toBeInTheDocument();
153
-
154
- // Close tooltip
155
- await userEvent.keyboard('{escape}');
156
- expect(tooltip).not.toBeInTheDocument();
157
-
158
- // Close on escape
159
- await userEvent.keyboard('{escape}');
160
- await waitFor(() => {
161
- expect(imageLightbox).not.toBeInTheDocument();
162
- });
163
-
164
- // Focus moved back to the trigger button
165
- expect(buttonTrigger).toHaveFocus();
166
- });
167
-
168
- it('should move focus on open and close with multiple image lightbox', async () => {
169
- const decorator = WithMosaicTrigger.decorators[0];
170
- const Story = ({ args }: any) => <ImageLightbox {...args} />;
171
- const Render = () => decorator(Story, { args: { ...baseProps, ...WithMosaicTrigger.args } });
172
- render(<Render />);
173
-
174
- // Focus the first button & activate to open
175
- await userEvent.tab();
176
- const buttonTrigger = document.activeElement;
177
- await userEvent.keyboard('{enter}');
178
-
179
- // Focus moved to the first slide button
180
- const imageLightbox = queries.getImageLightbox();
181
- expect(queries.querySlideButton(imageLightbox, 1)).toHaveFocus();
182
-
183
- // Image lightbox opened on the correct image
184
- expect(queries.queryImage(imageLightbox, 'Image 1')).toBeInTheDocument();
185
-
186
- // Close on escape
187
- await userEvent.keyboard('{escape}');
188
- await waitFor(() => {
189
- expect(imageLightbox).not.toBeInTheDocument();
190
- });
191
-
192
- // Focus moved back to the trigger button
193
- expect(buttonTrigger).toHaveFocus();
194
- });
195
- });
196
-
197
- describe('zoom', () => {
198
- const scrollAreaSize = { width: 600, height: 600 };
199
- beforeEach(() => {
200
- (useImageSize as any).mockImplementation((_: any, getInitialSize: any) => getInitialSize?.() || null);
201
- (useSizeOnWindowResize as any).mockReturnValue([scrollAreaSize, vi.fn()]);
202
- });
203
-
204
- it('should use the image initial size', () => {
205
- setup({
206
- images: [
207
- { image: 'https://example.com/image.png', alt: 'Image 1', imgProps: { width: 200, height: 200 } },
208
- ],
209
- });
210
- const imageLightbox = queries.getImageLightbox();
211
- const image = queries.queryImage(imageLightbox, 'Image 1');
212
- expect(image).toHaveStyle({
213
- height: `200px`,
214
- width: `200px`,
215
- });
216
- });
217
-
218
- it('should zoom on zoom button pressed', async () => {
219
- // Set image size (simulate image loaded)
220
- const imageSize = { width: 500, height: 300 };
221
- (useImageSize as any).mockReturnValue(imageSize);
222
-
223
- setup(SingleImageWithZoom.args);
224
- const imageLightbox = queries.getImageLightbox();
225
-
226
- // Image style
227
- const image = queries.queryImage(imageLightbox, 'Image 1');
228
- expect(image).toHaveStyle({ width: `${imageSize.width}px`, height: `${imageSize.height}px` });
229
-
230
- // Scroll area is bigger than the image, it should not be focusable
231
- expect(queries.queryScrollArea(imageLightbox)).not.toHaveAttribute('tabindex');
232
-
233
- // Zoom in
234
- const zoomInButton = queries.queryZoomInButton(imageLightbox) as any;
235
- await userEvent.click(zoomInButton);
236
- expect(image).toHaveStyle({ height: '450px', width: '750px' });
237
-
238
- // Scroll area is smaller than the image, it should be focusable
239
- expect(queries.queryScrollArea(imageLightbox)).toHaveAttribute('tabindex', '0');
240
-
241
- // Zoom out
242
- const zoomOutButton = queries.queryZoomOutButton(imageLightbox) as any;
243
- await userEvent.click(zoomOutButton);
244
- expect(image).toHaveStyle({ width: `${imageSize.width}px`, height: `${imageSize.height}px` });
245
- });
246
- });
247
-
248
- // Common tests suite.
249
- commonTestsSuiteRTL(setup, {
250
- baseClassName: CLASSNAME,
251
- forwardClassName: 'imageLightbox',
252
- forwardAttributes: 'imageLightbox',
253
- });
254
- });
@@ -1,90 +0,0 @@
1
- import React from 'react';
2
-
3
- import classNames from 'classnames';
4
-
5
- import { Lightbox, ThemeProvider } from '@lumx/react';
6
- import { ClickAwayProvider } from '@lumx/react/utils';
7
- import { useMergeRefs } from '@lumx/react/utils/react/mergeRefs';
8
- import { forwardRef } from '@lumx/react/utils/react/forwardRef';
9
-
10
- import { ImageSlideshow } from './internal/ImageSlideshow';
11
- import { useImageLightbox } from './useImageLightbox';
12
- import type { ImageLightboxProps } from './types';
13
- import { CLASSNAME, COMPONENT_NAME } from './constants';
14
-
15
- const Inner = forwardRef<ImageLightboxProps, HTMLDivElement>((props, ref) => {
16
- const {
17
- className,
18
- isOpen,
19
- closeButtonProps,
20
- onClose,
21
- parentElement,
22
- activeImageIndex,
23
- slideshowControlsProps,
24
- slideGroupLabel,
25
- images,
26
- zoomOutButtonProps,
27
- zoomInButtonProps,
28
- activeImageRef: propImageRef,
29
- ...forwardedProps
30
- } = props;
31
- const currentPaginationItemRef = React.useRef(null);
32
- const footerRef = React.useRef(null);
33
- const imageRef = React.useRef(null);
34
- const clickAwayChildrenRefs = React.useRef([imageRef, footerRef]);
35
-
36
- const onClickAway = React.useCallback(
37
- (evt: Event) => {
38
- const targetElement = evt.target;
39
- if (!(targetElement instanceof HTMLElement) || !(evt instanceof MouseEvent)) return;
40
-
41
- // Skip click away if clicking on the scrollbar
42
- if (targetElement.clientWidth < evt.clientX || targetElement.clientHeight < evt.clientY) return;
43
-
44
- onClose?.();
45
- },
46
- [onClose],
47
- );
48
-
49
- return (
50
- <Lightbox
51
- ref={ref}
52
- className={classNames(className, CLASSNAME)}
53
- parentElement={parentElement}
54
- isOpen={isOpen}
55
- onClose={onClose}
56
- closeButtonProps={closeButtonProps}
57
- focusElement={currentPaginationItemRef}
58
- {...forwardedProps}
59
- // Disable the close on click away as we want a custom one here
60
- preventAutoClose
61
- >
62
- <ClickAwayProvider childrenRefs={clickAwayChildrenRefs} callback={onClickAway}>
63
- <ThemeProvider value="dark">
64
- <ImageSlideshow
65
- activeImageIndex={activeImageIndex}
66
- slideGroupLabel={slideGroupLabel}
67
- slideshowControlsProps={slideshowControlsProps}
68
- images={images}
69
- zoomInButtonProps={zoomInButtonProps}
70
- zoomOutButtonProps={zoomOutButtonProps}
71
- footerRef={footerRef}
72
- activeImageRef={useMergeRefs(propImageRef, imageRef)}
73
- currentPaginationItemRef={currentPaginationItemRef}
74
- />
75
- </ThemeProvider>
76
- </ClickAwayProvider>
77
- </Lightbox>
78
- );
79
- });
80
- Inner.displayName = COMPONENT_NAME;
81
- Inner.className = CLASSNAME;
82
-
83
- /**
84
- * ImageLightbox component.
85
- *
86
- * @param props Component props.
87
- * @param ref Component ref.
88
- * @return React element.
89
- */
90
- export const ImageLightbox = Object.assign(Inner, { useImageLightbox });
@@ -1,11 +0,0 @@
1
- import { getRootClassName } from '@lumx/core/js/utils/className';
2
-
3
- /**
4
- * Component display name.
5
- */
6
- export const COMPONENT_NAME = 'ImageLightbox';
7
-
8
- /**
9
- * Component default class name and class prefix.
10
- */
11
- export const CLASSNAME = getRootClassName(COMPONENT_NAME);
@@ -1,2 +0,0 @@
1
- export { ImageLightbox } from './ImageLightbox';
2
- export type { ImageLightboxProps } from './types';
@@ -1,107 +0,0 @@
1
- import React from 'react';
2
-
3
- import { SlideshowItem, Thumbnail } from '@lumx/react';
4
- import { useMergeRefs } from '@lumx/react/utils/react/mergeRefs';
5
- import { useSizeOnWindowResize } from '@lumx/react/hooks/useSizeOnWindowResize';
6
- import { useImageSize } from '@lumx/react/hooks/useImageSize';
7
- import { isReducedMotion } from '@lumx/react/utils/browser/isReducedMotion';
8
- import { isEqual } from '@lumx/react/utils/object/isEqual';
9
-
10
- import { CLASSNAME } from '../constants';
11
- import { usePointerZoom } from './usePointerZoom';
12
- import { useAnimateScroll } from './useAnimateScroll';
13
- import type { ImageProps } from '../types';
14
-
15
- export interface ImageSlideProps {
16
- image: ImageProps;
17
- isActive?: boolean;
18
- scale?: number;
19
- onScaleChange?: (value: number) => void;
20
- }
21
-
22
- /** Internal image slide component for ImageLightbox */
23
- export const ImageSlide = React.memo((props: ImageSlideProps) => {
24
- const {
25
- isActive,
26
- scale,
27
- onScaleChange,
28
- image: { image, imgRef: propImgRef, imgProps, alt, loadingPlaceholderImageRef },
29
- } = props;
30
-
31
- // Get scroll area size
32
- const scrollAreaRef = React.useRef<HTMLDivElement>(null);
33
- const [scrollAreaSize, updateSize] = useSizeOnWindowResize(scrollAreaRef);
34
- React.useEffect(() => {
35
- // Update size when active
36
- if (isActive) updateSize();
37
- }, [isActive, updateSize]);
38
-
39
- // Get image size
40
- const imgRef = React.useRef<HTMLImageElement>(null);
41
- const imageSize = useImageSize(imgRef, () => {
42
- const width = Number.parseInt(imgProps?.width as any, 10);
43
- const height = Number.parseInt(imgProps?.height as any, 10);
44
- return width && height ? { width, height } : null;
45
- });
46
-
47
- // Calculate new image size with scale
48
- const scaledImageSize = React.useMemo(() => {
49
- if (!scrollAreaSize || !imageSize) {
50
- return null;
51
- }
52
- const horizontalScale = scrollAreaSize.width / imageSize.width;
53
- const verticalScale = scrollAreaSize.height / imageSize.height;
54
- const baseScale = Math.min(1, Math.min(horizontalScale, verticalScale));
55
- return {
56
- width: imageSize.width * baseScale * (scale ?? 1),
57
- height: imageSize.height * baseScale * (scale ?? 1),
58
- };
59
- }, [scrollAreaSize, imageSize, scale]);
60
-
61
- // Animate scroll to preserve the center of the current visible window in the scroll area
62
- const animateScroll = useAnimateScroll(scrollAreaRef);
63
-
64
- // Zoom via mouse wheel or multi-touch pinch zoom
65
- const isPointerZooming = usePointerZoom(scrollAreaRef, onScaleChange, animateScroll);
66
-
67
- // Animate scroll on scale change
68
- React.useLayoutEffect(() => {
69
- if (scale && !isPointerZooming) {
70
- animateScroll();
71
- }
72
- }, [isPointerZooming, scale, animateScroll]);
73
-
74
- const isScrollable =
75
- scaledImageSize &&
76
- scrollAreaSize &&
77
- (scaledImageSize.width > scrollAreaSize.width || scaledImageSize.height > scrollAreaSize.height);
78
-
79
- return (
80
- <SlideshowItem
81
- ref={scrollAreaRef}
82
- // Make it accessible to keyboard nav when the zone is scrollable
83
- tabIndex={isScrollable ? 0 : undefined}
84
- className={`${CLASSNAME}__image-slide`}
85
- >
86
- <Thumbnail
87
- imgRef={useMergeRefs(imgRef, propImgRef)}
88
- image={image}
89
- alt={alt}
90
- className={`${CLASSNAME}__thumbnail`}
91
- imgProps={{
92
- ...imgProps,
93
- style: {
94
- ...imgProps?.style,
95
- ...(scaledImageSize || {
96
- maxHeight: scrollAreaSize?.height,
97
- maxWidth: scrollAreaSize?.width,
98
- }),
99
- // Only animate when scale is set, and we are not pointer zooming and the user does not prefer reduced motion
100
- transition: scale && !isPointerZooming && !isReducedMotion() ? 'all 250ms' : undefined,
101
- },
102
- }}
103
- loadingPlaceholderImageRef={loadingPlaceholderImageRef}
104
- />
105
- </SlideshowItem>
106
- );
107
- }, isEqual);
@@ -1,164 +0,0 @@
1
- import React from 'react';
2
-
3
- import { mdiMagnifyMinusOutline, mdiMagnifyPlusOutline } from '@lumx/icons';
4
- import { FlexBox, IconButton, Slides, SlideshowControls } from '@lumx/react';
5
- import { mergeRefs } from '@lumx/react/utils/react/mergeRefs';
6
-
7
- import memoize from 'lodash/memoize';
8
- import { ImageCaption } from '../../image-block/ImageCaption';
9
- import { CLASSNAME } from '../constants';
10
- import type { ImagesProps, InheritedSlideShowProps, ZoomButtonProps } from '../types';
11
- import { ImageSlide } from './ImageSlide';
12
-
13
- export interface ImageSlideshowProps extends InheritedSlideShowProps, ZoomButtonProps, ImagesProps {
14
- currentPaginationItemRef?: React.Ref<HTMLButtonElement>;
15
- footerRef?: React.Ref<HTMLDivElement>;
16
- }
17
-
18
- /** Internal image slideshow component for ImageLightbox */
19
- export const ImageSlideshow: React.FC<ImageSlideshowProps> = ({
20
- activeImageIndex,
21
- images,
22
- slideGroupLabel,
23
- zoomInButtonProps,
24
- zoomOutButtonProps,
25
- slideshowControlsProps,
26
- currentPaginationItemRef,
27
- footerRef,
28
- activeImageRef,
29
- }) => {
30
- const {
31
- activeIndex,
32
- slideshowId,
33
- setSlideshow,
34
- slideshowSlidesId,
35
- slidesCount,
36
- onNextClick,
37
- onPaginationClick,
38
- onPreviousClick,
39
- toggleAutoPlay,
40
- } = SlideshowControls.useSlideshowControls({
41
- itemsCount: images.length,
42
- activeIndex: activeImageIndex,
43
- });
44
-
45
- // Image metadata (caption)
46
- const title = images[activeIndex]?.title;
47
- const description = images[activeIndex]?.description;
48
- const tags = images[activeIndex]?.tags;
49
- const metadata =
50
- title || description || tags ? (
51
- <ImageCaption as="div" title={title} description={description} tags={tags} align="center" />
52
- ) : null;
53
-
54
- // Slideshow controls
55
- const slideShowControls =
56
- slidesCount > 1 && slideshowControlsProps ? (
57
- <SlideshowControls
58
- activeIndex={activeIndex}
59
- slidesCount={slidesCount}
60
- onNextClick={onNextClick}
61
- onPreviousClick={onPreviousClick}
62
- onPaginationClick={onPaginationClick}
63
- {...slideshowControlsProps}
64
- paginationItemProps={(index: number) => {
65
- const props = slideshowControlsProps?.paginationItemProps?.(index) || {};
66
- return {
67
- ...props,
68
- ref: mergeRefs(
69
- (props as any)?.ref,
70
- // Focus the active pagination item once on mount
71
- activeIndex === index ? currentPaginationItemRef : undefined,
72
- ),
73
- };
74
- }}
75
- />
76
- ) : null;
77
-
78
- // Zoom controls
79
- const [scale, setScale] = React.useState<number | undefined>(undefined);
80
- const zoomEnabled = zoomInButtonProps && zoomOutButtonProps;
81
- const onScaleChange = React.useMemo(() => {
82
- if (!zoomEnabled) return undefined;
83
- return (newScale: number) => {
84
- setScale((prevScale = 1) => Math.max(1, newScale * prevScale));
85
- };
86
- }, [zoomEnabled]);
87
- const zoomIn = React.useCallback(() => onScaleChange?.(1.5), [onScaleChange]);
88
- const zoomOut = React.useCallback(() => onScaleChange?.(0.5), [onScaleChange]);
89
- React.useEffect(() => {
90
- // Reset scale on slide change
91
- if (typeof activeIndex === 'number') setScale(undefined);
92
- }, [activeIndex]);
93
- const zoomControls = zoomEnabled && (
94
- <>
95
- <IconButton {...zoomInButtonProps} emphasis="low" icon={mdiMagnifyPlusOutline} onClick={zoomIn} />
96
- <IconButton
97
- {...zoomOutButtonProps}
98
- emphasis="low"
99
- isDisabled={!scale || scale <= 1}
100
- icon={mdiMagnifyMinusOutline}
101
- onClick={zoomOut}
102
- />
103
- </>
104
- );
105
-
106
- const getImgRef = React.useMemo(
107
- () =>
108
- memoize(
109
- (index: number, isActive: boolean) => {
110
- return mergeRefs(images?.[index].imgRef, isActive ? activeImageRef : undefined);
111
- },
112
- // memoize based on both arguments
113
- (...args) => args.join(),
114
- ),
115
- [images, activeImageRef],
116
- );
117
-
118
- return (
119
- <>
120
- <Slides
121
- activeIndex={activeIndex}
122
- slideGroupLabel={slideGroupLabel}
123
- fillHeight
124
- id={slideshowId}
125
- ref={setSlideshow}
126
- slidesId={slideshowSlidesId}
127
- toggleAutoPlay={toggleAutoPlay}
128
- >
129
- {images.map(({ image, imgRef, ...imageProps }, index) => {
130
- const isActive = index === activeIndex;
131
- return (
132
- <ImageSlide
133
- isActive={isActive}
134
- key={image}
135
- image={{
136
- ...imageProps,
137
- image,
138
- imgRef: getImgRef(index, isActive),
139
- }}
140
- scale={isActive ? scale : undefined}
141
- onScaleChange={onScaleChange}
142
- />
143
- );
144
- })}
145
- </Slides>
146
- {(metadata || slideShowControls || zoomControls) && (
147
- <FlexBox
148
- ref={footerRef}
149
- className={`${CLASSNAME}__footer`}
150
- orientation="vertical"
151
- vAlign="center"
152
- gap="big"
153
- >
154
- {metadata}
155
-
156
- <FlexBox className={`${CLASSNAME}__footer-actions`} orientation="horizontal" gap="regular">
157
- {slideShowControls}
158
- {zoomControls}
159
- </FlexBox>
160
- </FlexBox>
161
- )}
162
- </>
163
- );
164
- };
@@ -1,55 +0,0 @@
1
- import React from 'react';
2
- import type { Point, RectSize } from '@lumx/react/utils/type';
3
-
4
- /** Maintains the scroll position centered relative to the original scroll area's dimensions when the content scales. */
5
- export function useAnimateScroll(scrollAreaRef: React.RefObject<HTMLDivElement>) {
6
- return React.useMemo(() => {
7
- let animationFrame: number | null = null;
8
-
9
- return function animate(centerPoint?: Point, initialScrollAreaSize?: RectSize) {
10
- const scrollArea = scrollAreaRef.current as HTMLDivElement;
11
- if (!scrollArea) {
12
- return;
13
- }
14
-
15
- // Cancel previously running animation
16
- if (animationFrame) cancelAnimationFrame(animationFrame);
17
-
18
- // Center on the given point or else on the scroll area visual center
19
- const clientHeightRatio = centerPoint?.y ? centerPoint.y / scrollArea.clientHeight : 0.5;
20
- const clientWidthRatio = centerPoint?.x ? centerPoint.x / scrollArea.clientWidth : 0.5;
21
-
22
- const initialScrollHeight = initialScrollAreaSize?.height || scrollArea.scrollHeight;
23
- const initialScrollWidth = initialScrollAreaSize?.width || scrollArea.scrollWidth;
24
-
25
- const heightCenter = scrollArea.scrollTop + scrollArea.clientHeight * clientHeightRatio;
26
- const heightRatio = heightCenter / initialScrollHeight;
27
-
28
- const widthCenter = scrollArea.scrollLeft + scrollArea.clientWidth * clientWidthRatio;
29
- const widthRatio = widthCenter / initialScrollWidth;
30
-
31
- let prevScrollHeight = 0;
32
- let prevScrollWidth = 0;
33
-
34
- function nextFrame() {
35
- const { scrollHeight, scrollWidth, clientHeight, clientWidth } = scrollArea;
36
-
37
- // Scroll area stopped expanding => stop animation
38
- if (scrollHeight === prevScrollHeight && scrollWidth === prevScrollWidth) {
39
- animationFrame = null;
40
- return;
41
- }
42
-
43
- // Compute next scroll position
44
- const top = heightRatio * scrollHeight - clientHeight * clientHeightRatio;
45
- const left = widthRatio * scrollWidth - clientWidth * clientWidthRatio;
46
-
47
- scrollArea.scrollTo({ top, left });
48
- prevScrollHeight = scrollHeight;
49
- prevScrollWidth = scrollWidth;
50
- animationFrame = requestAnimationFrame(nextFrame);
51
- }
52
- animationFrame = requestAnimationFrame(nextFrame);
53
- };
54
- }, [scrollAreaRef]);
55
- }