@lumx/react 3.20.1-alpha.14 → 3.20.1-alpha.15

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 (697) hide show
  1. package/_internal/Button-f19e18df.js +96 -0
  2. package/_internal/Button-f19e18df.js.map +1 -0
  3. package/_internal/ButtonRoot-ab633b1d.js +115 -0
  4. package/_internal/ButtonRoot-ab633b1d.js.map +1 -0
  5. package/_internal/Chip-4c572eec.js +149 -0
  6. package/_internal/Chip-4c572eec.js.map +1 -0
  7. package/_internal/ClickAwayProvider-bcce6ceb.js +93 -0
  8. package/_internal/ClickAwayProvider-bcce6ceb.js.map +1 -0
  9. package/_internal/DisabledStateContext-077b7bef.js +29 -0
  10. package/_internal/DisabledStateContext-077b7bef.js.map +1 -0
  11. package/_internal/HeadingLevelProvider-e4817816.js +59 -0
  12. package/_internal/HeadingLevelProvider-e4817816.js.map +1 -0
  13. package/_internal/IconButton-10585058.js +72 -0
  14. package/_internal/IconButton-10585058.js.map +1 -0
  15. package/_internal/ImageCaption-4279b2b6.js +65 -0
  16. package/_internal/ImageCaption-4279b2b6.js.map +1 -0
  17. package/_internal/List-d5f5d465.js +791 -0
  18. package/_internal/List-d5f5d465.js.map +1 -0
  19. package/_internal/PopoverDialog-21e5c9dd.js +647 -0
  20. package/_internal/PopoverDialog-21e5c9dd.js.map +1 -0
  21. package/_internal/Portal-c43d098b.js +42 -0
  22. package/_internal/Portal-c43d098b.js.map +1 -0
  23. package/_internal/RawClickable-c76bbc4c.js +50 -0
  24. package/_internal/RawClickable-c76bbc4c.js.map +1 -0
  25. package/_internal/Slides-01f513ce.js +675 -0
  26. package/_internal/Slides-01f513ce.js.map +1 -0
  27. package/_internal/ThemeContext-3181f000.js +14 -0
  28. package/_internal/ThemeContext-3181f000.js.map +1 -0
  29. package/_internal/Thumbnail-30d2a781.js +312 -0
  30. package/_internal/Thumbnail-30d2a781.js.map +1 -0
  31. package/_internal/components/alert-dialog-8f1c163c.js +147 -0
  32. package/_internal/components/alert-dialog-8f1c163c.js.map +1 -0
  33. package/_internal/components/autocomplete-bfbdeb3c.js +264 -0
  34. package/_internal/components/autocomplete-bfbdeb3c.js.map +1 -0
  35. package/_internal/components/avatar-6990e3e9.js +87 -0
  36. package/_internal/components/avatar-6990e3e9.js.map +1 -0
  37. package/_internal/components/badge-81543bc7.js +81 -0
  38. package/_internal/components/badge-81543bc7.js.map +1 -0
  39. package/_internal/components/button-927abe71.js +49 -0
  40. package/_internal/components/button-927abe71.js.map +1 -0
  41. package/_internal/components/checkbox-dc4caec8.js +131 -0
  42. package/_internal/components/checkbox-dc4caec8.js.map +1 -0
  43. package/_internal/components/chip-fb3d0c76.js +104 -0
  44. package/_internal/components/chip-fb3d0c76.js.map +1 -0
  45. package/_internal/components/comment-block-b84c4694.js +121 -0
  46. package/_internal/components/comment-block-b84c4694.js.map +1 -0
  47. package/_internal/components/date-picker-a425534c.js +2 -0
  48. package/_internal/components/date-picker-a425534c.js.map +1 -0
  49. package/_internal/components/dialog-7dbcb485.js +226 -0
  50. package/_internal/components/dialog-7dbcb485.js.map +1 -0
  51. package/_internal/components/divider-12e9b6a0.js +53 -0
  52. package/_internal/components/divider-12e9b6a0.js.map +1 -0
  53. package/_internal/components/drag-handle-a38ff757.js +53 -0
  54. package/_internal/components/drag-handle-a38ff757.js.map +1 -0
  55. package/_internal/components/dropdown-38b0b6a0.js +148 -0
  56. package/_internal/components/dropdown-38b0b6a0.js.map +1 -0
  57. package/_internal/components/expansion-panel-c4b93653.js +158 -0
  58. package/_internal/components/expansion-panel-c4b93653.js.map +1 -0
  59. package/_internal/components/flag-c5e2f5f0.js +55 -0
  60. package/_internal/components/flag-c5e2f5f0.js.map +1 -0
  61. package/_internal/components/flex-box-c8701a85.js +58 -0
  62. package/_internal/components/flex-box-c8701a85.js.map +1 -0
  63. package/_internal/components/generic-block-0d6ad5a6.js +115 -0
  64. package/_internal/components/generic-block-0d6ad5a6.js.map +1 -0
  65. package/_internal/components/grid-3b194fe8.js +109 -0
  66. package/_internal/components/grid-3b194fe8.js.map +1 -0
  67. package/_internal/components/grid-column-985b9327.js +60 -0
  68. package/_internal/components/grid-column-985b9327.js.map +1 -0
  69. package/_internal/components/heading-5e954dfc.js +54 -0
  70. package/_internal/components/heading-5e954dfc.js.map +1 -0
  71. package/_internal/components/icon-2e7345ad.js +103 -0
  72. package/_internal/components/icon-2e7345ad.js.map +1 -0
  73. package/_internal/components/image-block-8d21dd7e.js +109 -0
  74. package/_internal/components/image-block-8d21dd7e.js.map +1 -0
  75. package/_internal/components/image-lightbox-4a5ab962.js +743 -0
  76. package/_internal/components/image-lightbox-4a5ab962.js.map +1 -0
  77. package/_internal/components/inline-list-4884f004.js +74 -0
  78. package/_internal/components/inline-list-4884f004.js.map +1 -0
  79. package/_internal/components/input-helper-e644e05e.js +73 -0
  80. package/_internal/components/input-helper-e644e05e.js.map +1 -0
  81. package/_internal/components/input-label-5e509a1b.js +61 -0
  82. package/_internal/components/input-label-5e509a1b.js.map +1 -0
  83. package/_internal/components/lightbox-bec1b95f.js +149 -0
  84. package/_internal/components/lightbox-bec1b95f.js.map +1 -0
  85. package/_internal/components/link-9637b9e4.js +70 -0
  86. package/_internal/components/link-9637b9e4.js.map +1 -0
  87. package/_internal/components/link-preview-7a4a6e4b.js +108 -0
  88. package/_internal/components/link-preview-7a4a6e4b.js.map +1 -0
  89. package/_internal/components/list-5c8f7122.js +77 -0
  90. package/_internal/components/list-5c8f7122.js.map +1 -0
  91. package/_internal/components/message-a67067d9.js +96 -0
  92. package/_internal/components/message-a67067d9.js.map +1 -0
  93. package/_internal/components/mosaic-92b66c80.js +92 -0
  94. package/_internal/components/mosaic-92b66c80.js.map +1 -0
  95. package/_internal/components/navigation-4fd3917d.js +210 -0
  96. package/_internal/components/navigation-4fd3917d.js.map +1 -0
  97. package/_internal/components/notification-9063c963.js +140 -0
  98. package/_internal/components/notification-9063c963.js.map +1 -0
  99. package/_internal/components/popover-3c4c54bd.js +3 -0
  100. package/_internal/components/popover-3c4c54bd.js.map +1 -0
  101. package/_internal/components/post-block-0cfc2206.js +99 -0
  102. package/_internal/components/post-block-0cfc2206.js.map +1 -0
  103. package/_internal/components/progress-eaf5b33d.js +188 -0
  104. package/_internal/components/progress-eaf5b33d.js.map +1 -0
  105. package/_internal/components/progress-tracker-4a65718d.js +309 -0
  106. package/_internal/components/progress-tracker-4a65718d.js.map +1 -0
  107. package/_internal/components/radio-button-3ef8a325.js +148 -0
  108. package/_internal/components/radio-button-3ef8a325.js.map +1 -0
  109. package/_internal/components/select-d46cfe35.js +404 -0
  110. package/_internal/components/select-d46cfe35.js.map +1 -0
  111. package/_internal/components/side-navigation-75b22f19.js +159 -0
  112. package/_internal/components/side-navigation-75b22f19.js.map +1 -0
  113. package/_internal/components/skeleton-361ce335.js +174 -0
  114. package/_internal/components/skeleton-361ce335.js.map +1 -0
  115. package/_internal/components/slider-8094cb5c.js +305 -0
  116. package/_internal/components/slider-8094cb5c.js.map +1 -0
  117. package/_internal/components/slideshow-2e8cd372.js +150 -0
  118. package/_internal/components/slideshow-2e8cd372.js.map +1 -0
  119. package/_internal/components/switch-5516949b.js +118 -0
  120. package/_internal/components/switch-5516949b.js.map +1 -0
  121. package/_internal/components/table-fa198ee6.js +299 -0
  122. package/_internal/components/table-fa198ee6.js.map +1 -0
  123. package/_internal/components/tabs-bb9bc2a5.js +298 -0
  124. package/_internal/components/tabs-bb9bc2a5.js.map +1 -0
  125. package/_internal/components/text-289c0526.js +2 -0
  126. package/_internal/components/text-289c0526.js.map +1 -0
  127. package/_internal/components/text-field-82733568.js +346 -0
  128. package/_internal/components/text-field-82733568.js.map +1 -0
  129. package/_internal/components/thumbnail-e3acff82.js +42 -0
  130. package/_internal/components/thumbnail-e3acff82.js.map +1 -0
  131. package/_internal/components/toolbar-155562be.js +60 -0
  132. package/_internal/components/toolbar-155562be.js.map +1 -0
  133. package/_internal/components/tooltip-84ffb4f9.js +318 -0
  134. package/_internal/components/tooltip-84ffb4f9.js.map +1 -0
  135. package/_internal/components/uploader-896a1d89.js +150 -0
  136. package/_internal/components/uploader-896a1d89.js.map +1 -0
  137. package/_internal/components/user-block-8fd15895.js +143 -0
  138. package/_internal/components/user-block-8fd15895.js.map +1 -0
  139. package/_internal/constants-b9e57936.js +2155 -0
  140. package/_internal/constants-b9e57936.js.map +1 -0
  141. package/_internal/constants-d0e3f49e.js +24 -0
  142. package/_internal/constants-d0e3f49e.js.map +1 -0
  143. package/_internal/context-21aeb1c7.js +19 -0
  144. package/_internal/context-21aeb1c7.js.map +1 -0
  145. package/_internal/forwardRef-49d2bb84.js +80 -0
  146. package/_internal/forwardRef-49d2bb84.js.map +1 -0
  147. package/_internal/getFocusableElements-230173a8.js +13 -0
  148. package/_internal/getFocusableElements-230173a8.js.map +1 -0
  149. package/_internal/index-b4d256e7.js +118 -0
  150. package/_internal/index-b4d256e7.js.map +1 -0
  151. package/_internal/index-f415b08e.js +430 -0
  152. package/_internal/index-f415b08e.js.map +1 -0
  153. package/_internal/isComponent-78df9309.js +20 -0
  154. package/_internal/isComponent-78df9309.js.map +1 -0
  155. package/_internal/isComponentType-e806b848.js +9 -0
  156. package/_internal/isComponentType-e806b848.js.map +1 -0
  157. package/_internal/mergeRefs-f0d7d6ea.js +30 -0
  158. package/_internal/mergeRefs-f0d7d6ea.js.map +1 -0
  159. package/{src/utils/partitionMulti.ts → _internal/partitionMulti-4daccdd5.js} +5 -9
  160. package/_internal/partitionMulti-4daccdd5.js.map +1 -0
  161. package/_internal/state-db358714.js +130 -0
  162. package/_internal/state-db358714.js.map +1 -0
  163. package/_internal/useBooleanState-2a3d237c.js +12 -0
  164. package/_internal/useBooleanState-2a3d237c.js.map +1 -0
  165. package/_internal/useCallbackOnEscape-ea4d9eb4.js +62 -0
  166. package/_internal/useCallbackOnEscape-ea4d9eb4.js.map +1 -0
  167. package/_internal/useDisableBodyScroll-36bd7352.js +219 -0
  168. package/_internal/useDisableBodyScroll-36bd7352.js.map +1 -0
  169. package/_internal/useDisableStateProps-fffc365f.js +36 -0
  170. package/_internal/useDisableStateProps-fffc365f.js.map +1 -0
  171. package/_internal/useFocusTrap-c3c6378b.js +112 -0
  172. package/_internal/useFocusTrap-c3c6378b.js.map +1 -0
  173. package/_internal/useId-3a1facc0.js +18 -0
  174. package/_internal/useId-3a1facc0.js.map +1 -0
  175. package/_internal/useRovingTabIndex-7daf0f24.js +77 -0
  176. package/_internal/useRovingTabIndex-7daf0f24.js.map +1 -0
  177. package/_internal/useTransitionVisibility-321fdbfa.js +50 -0
  178. package/_internal/useTransitionVisibility-321fdbfa.js.map +1 -0
  179. package/_internal/wrapChildrenIconWithSpaces-f86106ce.js +20 -0
  180. package/_internal/wrapChildrenIconWithSpaces-f86106ce.js.map +1 -0
  181. package/index.d.ts +7 -352
  182. package/index.js +65 -14486
  183. package/index.js.map +1 -1
  184. package/package.json +3 -11
  185. package/utils/index.d.ts +1 -1
  186. package/utils/index.js +3 -1
  187. package/utils/index.js.map +1 -1
  188. package/_internal/Falsy.d.ts +0 -7
  189. package/_internal/index.js +0 -236
  190. package/_internal/index.js.map +0 -1
  191. package/src/components/alert-dialog/AlertDialog.stories.tsx +0 -127
  192. package/src/components/alert-dialog/AlertDialog.test.tsx +0 -34
  193. package/src/components/alert-dialog/AlertDialog.tsx +0 -189
  194. package/src/components/alert-dialog/index.ts +0 -1
  195. package/src/components/autocomplete/Autocomplete.stories.tsx +0 -75
  196. package/src/components/autocomplete/Autocomplete.test.tsx +0 -99
  197. package/src/components/autocomplete/Autocomplete.tsx +0 -294
  198. package/src/components/autocomplete/AutocompleteMultiple.stories.tsx +0 -167
  199. package/src/components/autocomplete/AutocompleteMultiple.test.tsx +0 -61
  200. package/src/components/autocomplete/AutocompleteMultiple.tsx +0 -156
  201. package/src/components/autocomplete/__mockData__/index.ts +0 -39
  202. package/src/components/autocomplete/index.ts +0 -2
  203. package/src/components/avatar/Avatar.stories.tsx +0 -119
  204. package/src/components/avatar/Avatar.test.tsx +0 -32
  205. package/src/components/avatar/Avatar.tsx +0 -114
  206. package/src/components/avatar/index.ts +0 -1
  207. package/src/components/badge/Badge.stories.tsx +0 -69
  208. package/src/components/badge/Badge.test.tsx +0 -45
  209. package/src/components/badge/Badge.tsx +0 -58
  210. package/src/components/badge/BadgeWrapper.stories.tsx +0 -75
  211. package/src/components/badge/BadgeWrapper.test.tsx +0 -47
  212. package/src/components/badge/BadgeWrapper.tsx +0 -37
  213. package/src/components/badge/index.ts +0 -2
  214. package/src/components/button/Button.stories.tsx +0 -355
  215. package/src/components/button/Button.test.tsx +0 -125
  216. package/src/components/button/Button.tsx +0 -101
  217. package/src/components/button/ButtonGroup.stories.tsx +0 -52
  218. package/src/components/button/ButtonGroup.test.tsx +0 -41
  219. package/src/components/button/ButtonGroup.tsx +0 -50
  220. package/src/components/button/ButtonRoot.tsx +0 -163
  221. package/src/components/button/IconButton.stories.tsx +0 -52
  222. package/src/components/button/IconButton.test.tsx +0 -66
  223. package/src/components/button/IconButton.tsx +0 -91
  224. package/src/components/button/index.ts +0 -4
  225. package/src/components/checkbox/Checkbox.stories.tsx +0 -64
  226. package/src/components/checkbox/Checkbox.test.tsx +0 -154
  227. package/src/components/checkbox/Checkbox.tsx +0 -164
  228. package/src/components/checkbox/index.ts +0 -1
  229. package/src/components/chip/Chip.stories.tsx +0 -164
  230. package/src/components/chip/Chip.test.tsx +0 -243
  231. package/src/components/chip/Chip.tsx +0 -168
  232. package/src/components/chip/ChipGroup.stories.tsx +0 -47
  233. package/src/components/chip/ChipGroup.test.tsx +0 -37
  234. package/src/components/chip/ChipGroup.tsx +0 -60
  235. package/src/components/chip/index.ts +0 -2
  236. package/src/components/comment-block/CommentBlock.stories.tsx +0 -91
  237. package/src/components/comment-block/CommentBlock.test.tsx +0 -28
  238. package/src/components/comment-block/CommentBlock.tsx +0 -172
  239. package/src/components/comment-block/index.ts +0 -1
  240. package/src/components/date-picker/DatePicker.stories.tsx +0 -118
  241. package/src/components/date-picker/DatePicker.test.tsx +0 -34
  242. package/src/components/date-picker/DatePicker.tsx +0 -52
  243. package/src/components/date-picker/DatePickerControlled.test.tsx +0 -91
  244. package/src/components/date-picker/DatePickerControlled.tsx +0 -259
  245. package/src/components/date-picker/DatePickerField.stories.tsx +0 -100
  246. package/src/components/date-picker/DatePickerField.test.tsx +0 -70
  247. package/src/components/date-picker/DatePickerField.tsx +0 -135
  248. package/src/components/date-picker/constants.ts +0 -11
  249. package/src/components/date-picker/index.ts +0 -4
  250. package/src/components/date-picker/types.ts +0 -28
  251. package/src/components/dialog/Dialog.stories.tsx +0 -318
  252. package/src/components/dialog/Dialog.test.tsx +0 -97
  253. package/src/components/dialog/Dialog.tsx +0 -288
  254. package/src/components/dialog/index.ts +0 -1
  255. package/src/components/divider/Divider.test.tsx +0 -51
  256. package/src/components/divider/Divider.tsx +0 -50
  257. package/src/components/divider/index.ts +0 -1
  258. package/src/components/drag-handle/DragHandle.test.tsx +0 -36
  259. package/src/components/drag-handle/DragHandle.tsx +0 -51
  260. package/src/components/drag-handle/index.ts +0 -1
  261. package/src/components/dropdown/Dropdown.stories.tsx +0 -31
  262. package/src/components/dropdown/Dropdown.test.tsx +0 -66
  263. package/src/components/dropdown/Dropdown.tsx +0 -186
  264. package/src/components/dropdown/index.ts +0 -1
  265. package/src/components/expansion-panel/ExpansionPanel.stories.tsx +0 -91
  266. package/src/components/expansion-panel/ExpansionPanel.test.tsx +0 -185
  267. package/src/components/expansion-panel/ExpansionPanel.tsx +0 -195
  268. package/src/components/expansion-panel/index.ts +0 -1
  269. package/src/components/flag/Flag.stories.tsx +0 -48
  270. package/src/components/flag/Flag.test.tsx +0 -62
  271. package/src/components/flag/Flag.tsx +0 -52
  272. package/src/components/flag/index.ts +0 -1
  273. package/src/components/flex-box/FlexBox.stories.tsx +0 -156
  274. package/src/components/flex-box/FlexBox.test.tsx +0 -24
  275. package/src/components/flex-box/FlexBox.tsx +0 -100
  276. package/src/components/flex-box/index.ts +0 -1
  277. package/src/components/generic-block/GenericBlock.stories.jsx +0 -128
  278. package/src/components/generic-block/GenericBlock.test.tsx +0 -156
  279. package/src/components/generic-block/GenericBlock.tsx +0 -225
  280. package/src/components/generic-block/constants.ts +0 -9
  281. package/src/components/generic-block/index.ts +0 -2
  282. package/src/components/grid/Grid.tsx +0 -83
  283. package/src/components/grid/GridItem.tsx +0 -55
  284. package/src/components/grid/index.ts +0 -2
  285. package/src/components/grid-column/GridColumn.stories.tsx +0 -45
  286. package/src/components/grid-column/GridColumn.test.jsx +0 -56
  287. package/src/components/grid-column/GridColumn.tsx +0 -83
  288. package/src/components/grid-column/index.ts +0 -1
  289. package/src/components/heading/Heading.stories.tsx +0 -69
  290. package/src/components/heading/Heading.test.tsx +0 -82
  291. package/src/components/heading/Heading.tsx +0 -65
  292. package/src/components/heading/HeadingLevelProvider.tsx +0 -30
  293. package/src/components/heading/constants.ts +0 -16
  294. package/src/components/heading/context.tsx +0 -13
  295. package/src/components/heading/index.ts +0 -3
  296. package/src/components/heading/useHeadingLevel.tsx +0 -8
  297. package/src/components/icon/Icon.stories.tsx +0 -73
  298. package/src/components/icon/Icon.test.tsx +0 -125
  299. package/src/components/icon/Icon.tsx +0 -133
  300. package/src/components/icon/index.ts +0 -1
  301. package/src/components/image-block/ImageBlock.stories.tsx +0 -117
  302. package/src/components/image-block/ImageBlock.test.tsx +0 -58
  303. package/src/components/image-block/ImageBlock.tsx +0 -142
  304. package/src/components/image-block/ImageCaption.tsx +0 -115
  305. package/src/components/image-block/index.ts +0 -1
  306. package/src/components/image-lightbox/ImageLightbox.stories.tsx +0 -160
  307. package/src/components/image-lightbox/ImageLightbox.test.tsx +0 -254
  308. package/src/components/image-lightbox/ImageLightbox.tsx +0 -90
  309. package/src/components/image-lightbox/constants.ts +0 -11
  310. package/src/components/image-lightbox/index.ts +0 -2
  311. package/src/components/image-lightbox/internal/ImageSlide.tsx +0 -107
  312. package/src/components/image-lightbox/internal/ImageSlideshow.tsx +0 -164
  313. package/src/components/image-lightbox/internal/useAnimateScroll.ts +0 -55
  314. package/src/components/image-lightbox/internal/usePointerZoom.ts +0 -148
  315. package/src/components/image-lightbox/types.ts +0 -48
  316. package/src/components/image-lightbox/useImageLightbox.tsx +0 -141
  317. package/src/components/inline-list/InlineList.stories.tsx +0 -77
  318. package/src/components/inline-list/InlineList.test.tsx +0 -52
  319. package/src/components/inline-list/InlineList.tsx +0 -96
  320. package/src/components/inline-list/index.ts +0 -1
  321. package/src/components/input-helper/InputHelper.stories.tsx +0 -35
  322. package/src/components/input-helper/InputHelper.test.tsx +0 -55
  323. package/src/components/input-helper/InputHelper.tsx +0 -65
  324. package/src/components/input-helper/constants.ts +0 -11
  325. package/src/components/input-helper/index.ts +0 -1
  326. package/src/components/input-label/InputLabel.stories.tsx +0 -45
  327. package/src/components/input-label/InputLabel.test.tsx +0 -59
  328. package/src/components/input-label/InputLabel.tsx +0 -69
  329. package/src/components/input-label/index.ts +0 -1
  330. package/src/components/lightbox/Lightbox.stories.tsx +0 -101
  331. package/src/components/lightbox/Lightbox.test.tsx +0 -53
  332. package/src/components/lightbox/Lightbox.tsx +0 -180
  333. package/src/components/lightbox/index.ts +0 -1
  334. package/src/components/link/Link.stories.tsx +0 -195
  335. package/src/components/link/Link.test.tsx +0 -127
  336. package/src/components/link/Link.tsx +0 -106
  337. package/src/components/link/index.ts +0 -1
  338. package/src/components/link-preview/LinkPreview.stories.tsx +0 -61
  339. package/src/components/link-preview/LinkPreview.test.tsx +0 -105
  340. package/src/components/link-preview/LinkPreview.tsx +0 -158
  341. package/src/components/link-preview/index.ts +0 -1
  342. package/src/components/list/List.stories.tsx +0 -116
  343. package/src/components/list/List.test.tsx +0 -18
  344. package/src/components/list/List.tsx +0 -104
  345. package/src/components/list/ListDivider.stories.tsx +0 -12
  346. package/src/components/list/ListDivider.test.tsx +0 -22
  347. package/src/components/list/ListDivider.tsx +0 -35
  348. package/src/components/list/ListItem.stories.tsx +0 -66
  349. package/src/components/list/ListItem.test.tsx +0 -93
  350. package/src/components/list/ListItem.tsx +0 -157
  351. package/src/components/list/ListSubheader.stories.tsx +0 -11
  352. package/src/components/list/ListSubheader.test.tsx +0 -21
  353. package/src/components/list/ListSubheader.tsx +0 -44
  354. package/src/components/list/index.ts +0 -4
  355. package/src/components/list/useInteractiveList.tsx +0 -202
  356. package/src/components/message/Message.stories.tsx +0 -72
  357. package/src/components/message/Message.test.tsx +0 -76
  358. package/src/components/message/Message.tsx +0 -100
  359. package/src/components/message/index.ts +0 -1
  360. package/src/components/mosaic/Mosaic.stories.tsx +0 -89
  361. package/src/components/mosaic/Mosaic.test.tsx +0 -77
  362. package/src/components/mosaic/Mosaic.tsx +0 -98
  363. package/src/components/mosaic/index.ts +0 -1
  364. package/src/components/navigation/Navigation.stories.tsx +0 -234
  365. package/src/components/navigation/Navigation.test.tsx +0 -65
  366. package/src/components/navigation/Navigation.tsx +0 -79
  367. package/src/components/navigation/NavigationItem.test.tsx +0 -35
  368. package/src/components/navigation/NavigationItem.tsx +0 -82
  369. package/src/components/navigation/NavigationSection.test.tsx +0 -137
  370. package/src/components/navigation/NavigationSection.tsx +0 -108
  371. package/src/components/navigation/context.tsx +0 -7
  372. package/src/components/navigation/index.ts +0 -1
  373. package/src/components/notification/Notification.test.tsx +0 -94
  374. package/src/components/notification/Notification.tsx +0 -138
  375. package/src/components/notification/Notifications.stories.tsx +0 -92
  376. package/src/components/notification/constants.ts +0 -28
  377. package/src/components/notification/index.ts +0 -1
  378. package/src/components/popover/Popover.stories.tsx +0 -264
  379. package/src/components/popover/Popover.test.tsx +0 -62
  380. package/src/components/popover/Popover.tsx +0 -201
  381. package/src/components/popover/constants.ts +0 -62
  382. package/src/components/popover/index.ts +0 -3
  383. package/src/components/popover/usePopoverStyle.tsx +0 -184
  384. package/src/components/popover/useRestoreFocusOnClose.tsx +0 -47
  385. package/src/components/popover-dialog/PopoverDialog.stories.tsx +0 -64
  386. package/src/components/popover-dialog/PopoverDialog.test.tsx +0 -139
  387. package/src/components/popover-dialog/PopoverDialog.tsx +0 -74
  388. package/src/components/popover-dialog/index.tsx +0 -1
  389. package/src/components/post-block/PostBlock.test.tsx +0 -27
  390. package/src/components/post-block/PostBlock.tsx +0 -122
  391. package/src/components/post-block/index.ts +0 -1
  392. package/src/components/progress/Progress.tsx +0 -68
  393. package/src/components/progress/ProgressCircular.stories.tsx +0 -43
  394. package/src/components/progress/ProgressCircular.test.tsx +0 -46
  395. package/src/components/progress/ProgressCircular.tsx +0 -82
  396. package/src/components/progress/ProgressLinear.stories.tsx +0 -12
  397. package/src/components/progress/ProgressLinear.test.tsx +0 -30
  398. package/src/components/progress/ProgressLinear.tsx +0 -50
  399. package/src/components/progress/index.ts +0 -3
  400. package/src/components/progress-tracker/ProgressTracker.stories.tsx +0 -145
  401. package/src/components/progress-tracker/ProgressTracker.test.tsx +0 -42
  402. package/src/components/progress-tracker/ProgressTracker.tsx +0 -87
  403. package/src/components/progress-tracker/ProgressTrackerProvider.test.tsx +0 -65
  404. package/src/components/progress-tracker/ProgressTrackerProvider.tsx +0 -67
  405. package/src/components/progress-tracker/ProgressTrackerStep.test.tsx +0 -36
  406. package/src/components/progress-tracker/ProgressTrackerStep.tsx +0 -159
  407. package/src/components/progress-tracker/ProgressTrackerStepPanel.test.tsx +0 -34
  408. package/src/components/progress-tracker/ProgressTrackerStepPanel.tsx +0 -67
  409. package/src/components/progress-tracker/index.ts +0 -4
  410. package/src/components/radio-button/RadioButton.stories.tsx +0 -71
  411. package/src/components/radio-button/RadioButton.test.tsx +0 -143
  412. package/src/components/radio-button/RadioButton.tsx +0 -143
  413. package/src/components/radio-button/RadioGroup.stories.tsx +0 -39
  414. package/src/components/radio-button/RadioGroup.test.tsx +0 -29
  415. package/src/components/radio-button/RadioGroup.tsx +0 -44
  416. package/src/components/radio-button/index.ts +0 -2
  417. package/src/components/select/Select.stories.tsx +0 -385
  418. package/src/components/select/Select.test.tsx +0 -199
  419. package/src/components/select/Select.tsx +0 -199
  420. package/src/components/select/SelectMultiple.stories.tsx +0 -315
  421. package/src/components/select/SelectMultiple.test.tsx +0 -213
  422. package/src/components/select/SelectMultiple.tsx +0 -206
  423. package/src/components/select/WithSelectContext.tsx +0 -147
  424. package/src/components/select/constants.ts +0 -55
  425. package/src/components/select/index.ts +0 -2
  426. package/src/components/side-navigation/SideNavigation.stories.tsx +0 -191
  427. package/src/components/side-navigation/SideNavigation.test.tsx +0 -37
  428. package/src/components/side-navigation/SideNavigation.tsx +0 -52
  429. package/src/components/side-navigation/SideNavigationItem.stories.tsx +0 -133
  430. package/src/components/side-navigation/SideNavigationItem.test.tsx +0 -136
  431. package/src/components/side-navigation/SideNavigationItem.tsx +0 -165
  432. package/src/components/side-navigation/index.ts +0 -2
  433. package/src/components/skeleton/SkeletonCircle.stories.tsx +0 -41
  434. package/src/components/skeleton/SkeletonCircle.test.tsx +0 -27
  435. package/src/components/skeleton/SkeletonCircle.tsx +0 -52
  436. package/src/components/skeleton/SkeletonRectangle.stories.tsx +0 -82
  437. package/src/components/skeleton/SkeletonRectangle.test.tsx +0 -27
  438. package/src/components/skeleton/SkeletonRectangle.tsx +0 -88
  439. package/src/components/skeleton/SkeletonTypography.stories.tsx +0 -19
  440. package/src/components/skeleton/SkeletonTypography.test.tsx +0 -27
  441. package/src/components/skeleton/SkeletonTypography.tsx +0 -59
  442. package/src/components/skeleton/index.ts +0 -3
  443. package/src/components/slider/Slider.stories.tsx +0 -45
  444. package/src/components/slider/Slider.test.tsx +0 -29
  445. package/src/components/slider/Slider.tsx +0 -299
  446. package/src/components/slider/index.ts +0 -2
  447. package/src/components/slideshow/Slides.tsx +0 -130
  448. package/src/components/slideshow/Slideshow.stories.tsx +0 -179
  449. package/src/components/slideshow/Slideshow.test.tsx +0 -35
  450. package/src/components/slideshow/Slideshow.tsx +0 -173
  451. package/src/components/slideshow/SlideshowControls.stories.tsx +0 -100
  452. package/src/components/slideshow/SlideshowControls.tsx +0 -243
  453. package/src/components/slideshow/SlideshowItem.tsx +0 -44
  454. package/src/components/slideshow/SlideshowItemGroup.tsx +0 -60
  455. package/src/components/slideshow/constants.ts +0 -24
  456. package/src/components/slideshow/index.ts +0 -4
  457. package/src/components/slideshow/useKeyNavigate.ts +0 -28
  458. package/src/components/slideshow/usePaginationVisibleRange.ts +0 -37
  459. package/src/components/slideshow/useSlideFocusManagement.tsx +0 -92
  460. package/src/components/slideshow/useSwipeNavigate.ts +0 -18
  461. package/src/components/switch/Switch.stories.tsx +0 -49
  462. package/src/components/switch/Switch.test.tsx +0 -144
  463. package/src/components/switch/Switch.tsx +0 -145
  464. package/src/components/switch/index.ts +0 -1
  465. package/src/components/table/Table.test.tsx +0 -29
  466. package/src/components/table/Table.tsx +0 -59
  467. package/src/components/table/TableBody.test.tsx +0 -30
  468. package/src/components/table/TableBody.tsx +0 -42
  469. package/src/components/table/TableCell.test.tsx +0 -72
  470. package/src/components/table/TableCell.tsx +0 -130
  471. package/src/components/table/TableHeader.test.tsx +0 -30
  472. package/src/components/table/TableHeader.tsx +0 -48
  473. package/src/components/table/TableRow.test.tsx +0 -40
  474. package/src/components/table/TableRow.tsx +0 -71
  475. package/src/components/table/index.ts +0 -5
  476. package/src/components/tabs/Tab.test.tsx +0 -50
  477. package/src/components/tabs/Tab.tsx +0 -133
  478. package/src/components/tabs/TabList.test.tsx +0 -49
  479. package/src/components/tabs/TabList.tsx +0 -94
  480. package/src/components/tabs/TabPanel.test.tsx +0 -37
  481. package/src/components/tabs/TabPanel.tsx +0 -67
  482. package/src/components/tabs/TabProvider.test.tsx +0 -161
  483. package/src/components/tabs/TabProvider.tsx +0 -67
  484. package/src/components/tabs/Tabs.stories.tsx +0 -170
  485. package/src/components/tabs/index.ts +0 -4
  486. package/src/components/tabs/state.ts +0 -114
  487. package/src/components/tabs/test-utils.ts +0 -39
  488. package/src/components/text/Text.stories.tsx +0 -177
  489. package/src/components/text/Text.test.tsx +0 -92
  490. package/src/components/text/Text.tsx +0 -139
  491. package/src/components/text/index.ts +0 -1
  492. package/src/components/text-field/TextField.stories.tsx +0 -180
  493. package/src/components/text-field/TextField.test.tsx +0 -298
  494. package/src/components/text-field/TextField.tsx +0 -493
  495. package/src/components/text-field/index.ts +0 -1
  496. package/src/components/thumbnail/Thumbnail.stories.tsx +0 -448
  497. package/src/components/thumbnail/Thumbnail.test.tsx +0 -88
  498. package/src/components/thumbnail/Thumbnail.tsx +0 -248
  499. package/src/components/thumbnail/index.ts +0 -3
  500. package/src/components/thumbnail/types.ts +0 -48
  501. package/src/components/thumbnail/useFocusPointStyle.test.ts +0 -92
  502. package/src/components/thumbnail/useFocusPointStyle.tsx +0 -107
  503. package/src/components/thumbnail/useImageLoad.ts +0 -40
  504. package/src/components/toolbar/Toolbar.tsx +0 -68
  505. package/src/components/toolbar/index.ts +0 -1
  506. package/src/components/tooltip/Tooltip.stories.tsx +0 -118
  507. package/src/components/tooltip/Tooltip.test.tsx +0 -417
  508. package/src/components/tooltip/Tooltip.tsx +0 -165
  509. package/src/components/tooltip/constants.ts +0 -8
  510. package/src/components/tooltip/context.tsx +0 -17
  511. package/src/components/tooltip/index.ts +0 -1
  512. package/src/components/tooltip/useInjectTooltipRef.tsx +0 -55
  513. package/src/components/tooltip/useTooltipOpen.tsx +0 -143
  514. package/src/components/uploader/Uploader.stories.tsx +0 -109
  515. package/src/components/uploader/Uploader.test.tsx +0 -146
  516. package/src/components/uploader/Uploader.tsx +0 -177
  517. package/src/components/uploader/index.ts +0 -1
  518. package/src/components/user-block/UserBlock.stories.tsx +0 -133
  519. package/src/components/user-block/UserBlock.test.tsx +0 -106
  520. package/src/components/user-block/UserBlock.tsx +0 -193
  521. package/src/components/user-block/index.ts +0 -1
  522. package/src/constants.ts +0 -27
  523. package/src/hooks/useBooleanState.tsx +0 -13
  524. package/src/hooks/useCallbackOnEscape.ts +0 -34
  525. package/src/hooks/useChipGroupNavigation.tsx +0 -75
  526. package/src/hooks/useClickAway.tsx +0 -48
  527. package/src/hooks/useDisableBodyScroll.ts +0 -28
  528. package/src/hooks/useEventCallback.tsx +0 -17
  529. package/src/hooks/useFocus.tsx +0 -21
  530. package/src/hooks/useFocusTrap.ts +0 -93
  531. package/src/hooks/useFocusWithin.ts +0 -33
  532. package/src/hooks/useId.test.tsx +0 -22
  533. package/src/hooks/useId.ts +0 -15
  534. package/src/hooks/useImageSize.ts +0 -17
  535. package/src/hooks/useInfiniteScroll.tsx +0 -60
  536. package/src/hooks/useIntersectionObserver.tsx +0 -43
  537. package/src/hooks/useInterval.tsx +0 -31
  538. package/src/hooks/useKeyboardListNavigation.tsx +0 -204
  539. package/src/hooks/useListenFocus.tsx +0 -26
  540. package/src/hooks/useOverflowTooltipLabel.tsx +0 -32
  541. package/src/hooks/usePopper.ts +0 -12
  542. package/src/hooks/usePreviousValue.ts +0 -12
  543. package/src/hooks/useRovingTabIndex.tsx +0 -90
  544. package/src/hooks/useSizeOnWindowResize.ts +0 -30
  545. package/src/hooks/useSlideshowControls.ts +0 -246
  546. package/src/hooks/useStopPropagation.ts +0 -21
  547. package/src/hooks/useTransitionVisibility.ts +0 -48
  548. package/src/index.ts +0 -63
  549. package/src/stories/controls/color.ts +0 -7
  550. package/src/stories/controls/element.ts +0 -6
  551. package/src/stories/controls/focusPoint.ts +0 -1
  552. package/src/stories/controls/icons.ts +0 -126
  553. package/src/stories/controls/image.ts +0 -84
  554. package/src/stories/controls/selectArgType.ts +0 -8
  555. package/src/stories/controls/theme.ts +0 -3
  556. package/src/stories/controls/typography.ts +0 -5
  557. package/src/stories/controls/withUndefined.ts +0 -1
  558. package/src/stories/decorators/withChromaticForceScreenSize.tsx +0 -7
  559. package/src/stories/decorators/withCombinations.tsx +0 -132
  560. package/src/stories/decorators/withNestedProps.tsx +0 -22
  561. package/src/stories/decorators/withResizableBox.tsx +0 -21
  562. package/src/stories/decorators/withThemedBackground.tsx +0 -16
  563. package/src/stories/decorators/withValueOnChange.tsx +0 -18
  564. package/src/stories/decorators/withWrapper.tsx +0 -19
  565. package/src/stories/generated/Autocomplete/Demos.stories.tsx +0 -7
  566. package/src/stories/generated/Avatar/Demos.stories.tsx +0 -7
  567. package/src/stories/generated/Badge/Demos.stories.tsx +0 -9
  568. package/src/stories/generated/Button/Demos.stories.tsx +0 -11
  569. package/src/stories/generated/Checkbox/Demos.stories.tsx +0 -6
  570. package/src/stories/generated/Chip/Demos.stories.tsx +0 -11
  571. package/src/stories/generated/CommentBlock/Demos.stories.tsx +0 -8
  572. package/src/stories/generated/DatePicker/Demos.stories.tsx +0 -8
  573. package/src/stories/generated/Dialog/Demos.stories.tsx +0 -10
  574. package/src/stories/generated/Divider/Demos.stories.tsx +0 -6
  575. package/src/stories/generated/Dropdown/Demos.stories.tsx +0 -8
  576. package/src/stories/generated/ExpansionPanel/Demos.stories.tsx +0 -9
  577. package/src/stories/generated/Flag/Demos.stories.tsx +0 -6
  578. package/src/stories/generated/GenericBlock/Demos.stories.tsx +0 -8
  579. package/src/stories/generated/Heading/Demos.stories.tsx +0 -6
  580. package/src/stories/generated/Icon/Demos.stories.tsx +0 -8
  581. package/src/stories/generated/ImageBlock/Demos.stories.tsx +0 -9
  582. package/src/stories/generated/ImageLightbox/Demos.stories.tsx +0 -6
  583. package/src/stories/generated/Lightbox/Demos.stories.tsx +0 -6
  584. package/src/stories/generated/LinkPreview/Demos.stories.tsx +0 -7
  585. package/src/stories/generated/List/Demos.stories.tsx +0 -11
  586. package/src/stories/generated/Message/Demos.stories.tsx +0 -11
  587. package/src/stories/generated/Mosaic/Demos.stories.tsx +0 -10
  588. package/src/stories/generated/Notification/Demos.stories.tsx +0 -6
  589. package/src/stories/generated/Popover/Demos.stories.tsx +0 -11
  590. package/src/stories/generated/PopoverDialog/Demos.stories.tsx +0 -6
  591. package/src/stories/generated/PostBlock/Demos.stories.tsx +0 -6
  592. package/src/stories/generated/Progress/Demos.stories.tsx +0 -7
  593. package/src/stories/generated/ProgressTracker/Demos.stories.tsx +0 -9
  594. package/src/stories/generated/RadioButton/Demos.stories.tsx +0 -6
  595. package/src/stories/generated/Select/Demos.stories.tsx +0 -14
  596. package/src/stories/generated/SideNavigation/Demos.stories.tsx +0 -10
  597. package/src/stories/generated/Skeleton/Demos.stories.tsx +0 -9
  598. package/src/stories/generated/Slider/Demos.stories.tsx +0 -9
  599. package/src/stories/generated/Slideshow/Demos.stories.tsx +0 -8
  600. package/src/stories/generated/Switch/Demos.stories.tsx +0 -6
  601. package/src/stories/generated/Table/Demos.stories.tsx +0 -7
  602. package/src/stories/generated/Tabs/Demos.stories.tsx +0 -8
  603. package/src/stories/generated/TextField/Demos.stories.tsx +0 -20
  604. package/src/stories/generated/Thumbnail/Demos.stories.tsx +0 -12
  605. package/src/stories/generated/Toolbar/Demos.stories.tsx +0 -10
  606. package/src/stories/generated/Tooltip/Demos.stories.tsx +0 -8
  607. package/src/stories/generated/Uploader/Demos.stories.tsx +0 -8
  608. package/src/stories/generated/UserBlock/Demos.stories.tsx +0 -11
  609. package/src/stories/utils/CustomLink.tsx +0 -12
  610. package/src/stories/utils/concatPath.tsx +0 -17
  611. package/src/stories/utils/disableArgTypes.ts +0 -3
  612. package/src/stories/utils/initDemoShadowDOMPortal.ts +0 -10
  613. package/src/stories/utils/lorem.ts +0 -59
  614. package/src/stories/utils/theming.tsx +0 -166
  615. package/src/stories/utils/toFlattenProps.ts +0 -28
  616. package/src/stories/utils/withCategory.ts +0 -12
  617. package/src/testing/utils/ThemeSentinel.tsx +0 -10
  618. package/src/testing/utils/commonTestsSuiteRTL.tsx +0 -193
  619. package/src/testing/utils/index.ts +0 -1
  620. package/src/testing/utils/queries.ts +0 -19
  621. package/src/untypped-modules.d.ts +0 -9
  622. package/src/utils/ClickAwayProvider/ClickAwayProvider.stories.jsx +0 -70
  623. package/src/utils/ClickAwayProvider/ClickAwayProvider.tsx +0 -69
  624. package/src/utils/ClickAwayProvider/index.ts +0 -1
  625. package/src/utils/MaterialThemeSwitcher/MaterialThemeSwitcher.tsx +0 -54
  626. package/src/utils/MaterialThemeSwitcher/index.ts +0 -1
  627. package/src/utils/Portal/Portal.test.tsx +0 -31
  628. package/src/utils/Portal/Portal.tsx +0 -33
  629. package/src/utils/Portal/PortalProvider.stories.jsx +0 -22
  630. package/src/utils/Portal/PortalProvider.test.tsx +0 -72
  631. package/src/utils/Portal/PortalProvider.tsx +0 -24
  632. package/src/utils/Portal/index.tsx +0 -2
  633. package/src/utils/browser/DOM/findImage.tsx +0 -3
  634. package/src/utils/browser/DOM/startViewTransition.ts +0 -68
  635. package/src/utils/browser/focus/constants.ts +0 -7
  636. package/src/utils/browser/focus/getFirstAndLastFocusable.test.ts +0 -134
  637. package/src/utils/browser/focus/getFirstAndLastFocusable.ts +0 -21
  638. package/src/utils/browser/focus/getFocusableElements.test.ts +0 -151
  639. package/src/utils/browser/focus/getFocusableElements.ts +0 -7
  640. package/src/utils/browser/isFocusVisible.ts +0 -9
  641. package/src/utils/browser/isHoverNotSupported.test.js +0 -24
  642. package/src/utils/browser/isHoverNotSupported.ts +0 -2
  643. package/src/utils/browser/isReducedMotion.ts +0 -6
  644. package/src/utils/date/addMonthResetDay.test.ts +0 -13
  645. package/src/utils/date/addMonthResetDay.ts +0 -9
  646. package/src/utils/date/formatDayNumber.test.ts +0 -12
  647. package/src/utils/date/formatDayNumber.ts +0 -5
  648. package/src/utils/date/getFirstDayOfWeek.test.ts +0 -20
  649. package/src/utils/date/getFirstDayOfWeek.ts +0 -59
  650. package/src/utils/date/getMonthCalendar.test.ts +0 -127
  651. package/src/utils/date/getMonthCalendar.ts +0 -69
  652. package/src/utils/date/getWeekDays.test.ts +0 -48
  653. package/src/utils/date/getWeekDays.ts +0 -34
  654. package/src/utils/date/getYearDisplayName.test.ts +0 -20
  655. package/src/utils/date/getYearDisplayName.ts +0 -12
  656. package/src/utils/date/isDateValid.test.ts +0 -15
  657. package/src/utils/date/isDateValid.ts +0 -4
  658. package/src/utils/date/isSameDay.test.ts +0 -37
  659. package/src/utils/date/isSameDay.ts +0 -11
  660. package/src/utils/disabled/DisabledStateContext.tsx +0 -29
  661. package/src/utils/disabled/DisabledStateProvider.stories.tsx +0 -92
  662. package/src/utils/disabled/index.ts +0 -2
  663. package/src/utils/disabled/useDisableStateProps.test.tsx +0 -74
  664. package/src/utils/disabled/useDisableStateProps.tsx +0 -37
  665. package/src/utils/function/makeListenerTowerContext.ts +0 -32
  666. package/src/utils/index.ts +0 -7
  667. package/src/utils/locale/getCurrentLocale.ts +0 -4
  668. package/src/utils/locale/parseLocale.test.ts +0 -17
  669. package/src/utils/locale/parseLocale.ts +0 -23
  670. package/src/utils/locale/types.ts +0 -8
  671. package/src/utils/number/clamp.ts +0 -17
  672. package/src/utils/object/isEqual.test.ts +0 -25
  673. package/src/utils/object/isEqual.ts +0 -11
  674. package/src/utils/partitionMulti.test.ts +0 -27
  675. package/src/utils/react/OnBeforeUnmount.tsx +0 -20
  676. package/src/utils/react/RawClickable.test.tsx +0 -153
  677. package/src/utils/react/RawClickable.tsx +0 -65
  678. package/src/utils/react/flattenChildren.ts +0 -32
  679. package/src/utils/react/forwardRef.ts +0 -11
  680. package/src/utils/react/forwardRefPolymorphic.ts +0 -9
  681. package/src/utils/react/mergeRefs.ts +0 -33
  682. package/src/utils/react/renderLink.tsx +0 -17
  683. package/src/utils/react/skipRender.tsx +0 -18
  684. package/src/utils/react/unref.ts +0 -7
  685. package/src/utils/react/wrapChildrenIconWithSpaces.test.tsx +0 -37
  686. package/src/utils/react/wrapChildrenIconWithSpaces.tsx +0 -22
  687. package/src/utils/theme/ThemeContext.ts +0 -16
  688. package/src/utils/theme/invertTheme.ts +0 -4
  689. package/src/utils/type/Comp.ts +0 -14
  690. package/src/utils/type/ComponentRef.ts +0 -16
  691. package/src/utils/type/HasAriaDisabled.ts +0 -6
  692. package/src/utils/type/HasPolymorphicAs.ts +0 -6
  693. package/src/utils/type/HasRequiredLinkHref.ts +0 -1
  694. package/src/utils/type/MaybeElementOrRef.ts +0 -6
  695. package/src/utils/type/index.ts +0 -9
  696. package/src/utils/type/isComponent.ts +0 -33
  697. package/src/utils/type/isComponentType.ts +0 -9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Slides-01f513ce.js","sources":["../../src/hooks/useInterval.tsx","../../src/components/slideshow/constants.ts","../../src/hooks/useSlideshowControls.ts","../../src/components/slideshow/useSlideFocusManagement.tsx","../../src/components/slideshow/SlideshowItemGroup.tsx","../../src/components/slideshow/SlideshowItem.tsx","../../src/components/slideshow/useSwipeNavigate.ts","../../src/components/slideshow/usePaginationVisibleRange.ts","../../src/components/slideshow/SlideshowControls.tsx","../../src/components/slideshow/Slides.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport isFunction from 'lodash/isFunction';\nimport { Callback } from '@lumx/react/utils/type';\n\n/**\n * Making setInterval Declarative with React Hooks.\n * Credits: https://overreacted.io/making-setinterval-declarative-with-react-hooks/\n *\n * @param callback Function called by setInterval.\n * @param delay Delay for setInterval.\n */\nexport function useInterval(callback: Callback, delay: number | null): void {\n const savedCallback = useRef<Callback>();\n\n useEffect(() => {\n savedCallback.current = callback;\n });\n\n useEffect(() => {\n if (delay === null) return undefined;\n\n function tick() {\n if (isFunction(savedCallback.current)) {\n savedCallback.current();\n }\n }\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }, [delay]);\n}\n","/**\n * Autoplay default interval in ms.\n */\nexport const AUTOPLAY_DEFAULT_INTERVAL = 5000;\n\n/**\n * Full width size in percent.\n */\nexport const FULL_WIDTH_PERCENT = 100;\n\n/**\n * Edge from the active index.\n */\nexport const EDGE_FROM_ACTIVE_INDEX = 2;\n\n/**\n * Max number of pagination items.\n */\nexport const PAGINATION_ITEMS_MAX = 5;\n\n/**\n * Size of a pagination item. Used to translate wrapper.\n */\nexport const PAGINATION_ITEM_SIZE = 12;\n","import { useState, useCallback, useEffect } from 'react';\n\nimport { useInterval } from '@lumx/react/hooks/useInterval';\nimport { AUTOPLAY_DEFAULT_INTERVAL } from '@lumx/react/components/slideshow/constants';\nimport { useId } from '@lumx/react/hooks/useId';\n\nexport interface UseSlideshowControlsOptions {\n /** default active index to be displayed */\n defaultActiveIndex?: number;\n /** total slides to display */\n itemsCount: number;\n /** Index of the current slide. */\n activeIndex?: number;\n /** Whether the automatic rotation of the slideshow is enabled or not. */\n autoPlay?: boolean;\n /** Whether the image has to fill its container height or not. */\n fillHeight?: boolean;\n /** Number of slides to group together. */\n groupBy?: number;\n /** Interval between each slide when automatic rotation is enabled. */\n interval?: number;\n /** Callback when slide changes */\n onChange?(index: number): void;\n /** slideshow HTML id attribute */\n id?: string;\n /** slides wrapper HTML id attribute */\n slidesId?: string;\n}\n\nexport interface UseSlideshowControls {\n /** Index for the first visible slide, should be used when groupBy is passed in */\n startIndexVisible: number;\n /** Index for the last visible slide, should be used when groupBy is passed in */\n endIndexVisible: number;\n /** total slides to be displayed */\n slidesCount: number;\n /** callback to set */\n setSlideshow: (element: HTMLDivElement | null) => void;\n /** reference to the slideshow element */\n slideshow: HTMLDivElement | null;\n /** id to be used for the slideshow */\n slideshowId: string;\n /** id to be used for the wrapper that contains the slides */\n slideshowSlidesId: string;\n /** callback that triggers the previous slide while using the slideshow controls */\n onPreviousClick: (loopback: boolean) => void;\n /** callback that triggers the next slide while using the slideshow controls */\n onNextClick: (loopback: boolean) => void;\n /** callback that triggers a specific page while using the slideshow controls */\n onPaginationClick: (index: number) => void;\n /** whether the slideshow is autoplaying or not */\n isAutoPlaying: boolean;\n /** whether the slideshow was force paused or not */\n isForcePaused: boolean;\n /** callback to change whether the slideshow is autoplaying or not */\n toggleAutoPlay: () => void;\n /** calback to change whether the slideshow should be force paused or not */\n toggleForcePause: () => void;\n /** current active slide index */\n activeIndex: number;\n /** set the current index as the active one */\n setActiveIndex: (index: number) => void;\n /** callback that stops the auto play */\n stopAutoPlay: () => void;\n /** callback that starts the auto play */\n startAutoPlay: () => void;\n}\n\nexport const DEFAULT_OPTIONS = {\n activeIndex: 0,\n groupBy: 1,\n interval: AUTOPLAY_DEFAULT_INTERVAL,\n} as const;\n\nexport const useSlideshowControls = ({\n activeIndex = DEFAULT_OPTIONS.activeIndex,\n groupBy = DEFAULT_OPTIONS.groupBy,\n interval = DEFAULT_OPTIONS.interval,\n autoPlay,\n defaultActiveIndex,\n onChange,\n itemsCount,\n id,\n slidesId,\n}: UseSlideshowControlsOptions): UseSlideshowControls => {\n const [currentIndex, setCurrentIndex] = useState(activeIndex as number);\n // Use state instead of a ref to make the slideshow controls update directly when the element is set.\n const [element, setElement] = useState<HTMLDivElement | null>(null);\n\n // Number of slides when using groupBy prop.\n const slidesCount = Math.ceil(itemsCount / Math.min(groupBy as number, itemsCount));\n\n // Change current index to display next slide.\n const goToNextSlide = useCallback(\n (loopback = true) => {\n setCurrentIndex((index) => {\n if (loopback && index === slidesCount - 1) {\n // Loopback to the start.\n return 0;\n }\n if (index < slidesCount - 1) {\n // Next slide.\n return index + 1;\n }\n return index;\n });\n },\n [slidesCount, setCurrentIndex],\n );\n\n // Change current index to display previous slide.\n const goToPreviousSlide = useCallback(\n (loopback = true) => {\n setCurrentIndex((index) => {\n if (loopback && index === 0) {\n // Loopback to the end.\n return slidesCount - 1;\n }\n if (index > 0) {\n // Previous slide.\n return index - 1;\n }\n return index;\n });\n },\n [slidesCount, setCurrentIndex],\n );\n\n // Auto play\n const [isAutoPlaying, setIsAutoPlaying] = useState(Boolean(autoPlay));\n const [isForcePaused, setIsForcePaused] = useState(false);\n\n const isSlideshowAutoPlaying = isForcePaused ? false : isAutoPlaying;\n // Start\n useInterval(goToNextSlide, isSlideshowAutoPlaying && slidesCount > 1 ? (interval as number) : null);\n\n // Reset current index if it become invalid.\n useEffect(() => {\n if (currentIndex > slidesCount - 1) {\n setCurrentIndex(defaultActiveIndex as number);\n }\n }, [currentIndex, slidesCount, defaultActiveIndex]);\n\n const startAutoPlay = () => {\n setIsAutoPlaying(Boolean(autoPlay));\n };\n\n const stopAutoPlay = () => {\n setIsAutoPlaying(false);\n };\n\n // Handle click on a bullet to go to a specific slide.\n const onPaginationClick = useCallback(\n (index: number) => {\n stopAutoPlay();\n setIsForcePaused(true);\n\n if (index >= 0 && index < slidesCount) {\n setCurrentIndex(index);\n }\n },\n [slidesCount, setCurrentIndex],\n );\n\n // Handle click or keyboard event to go to next slide.\n const onNextClick = useCallback(\n (loopback = true) => {\n stopAutoPlay();\n setIsForcePaused(true);\n goToNextSlide(loopback);\n },\n [goToNextSlide],\n );\n\n // Handle click or keyboard event to go to previous slide.\n const onPreviousClick = useCallback(\n (loopback = true) => {\n stopAutoPlay();\n setIsForcePaused(true);\n goToPreviousSlide(loopback);\n },\n [goToPreviousSlide],\n );\n\n // If the activeIndex props changes, update the current slide\n useEffect(() => {\n setCurrentIndex(activeIndex as number);\n }, [activeIndex]);\n\n // If the slide changes, with autoplay for example, trigger \"onChange\"\n useEffect(() => {\n if (!onChange) return;\n onChange(currentIndex);\n }, [currentIndex, onChange]);\n\n const generatedSlideshowId = useId();\n const slideshowId = id || generatedSlideshowId;\n\n const generatedSlidesId = useId();\n const slideshowSlidesId = slidesId || generatedSlidesId;\n\n const toggleAutoPlay = () => {\n if (isSlideshowAutoPlaying) {\n stopAutoPlay();\n } else {\n startAutoPlay();\n }\n };\n\n const toggleForcePause = () => {\n const shouldBePaused = !isForcePaused;\n\n setIsForcePaused(shouldBePaused);\n\n if (!shouldBePaused) {\n startAutoPlay();\n } else {\n stopAutoPlay();\n }\n };\n\n // Start index and end index of visible slides.\n const startIndexVisible = currentIndex * (groupBy as number);\n const endIndexVisible = startIndexVisible + (groupBy as number);\n\n return {\n startIndexVisible,\n endIndexVisible,\n setSlideshow: setElement,\n slideshow: element,\n slideshowId,\n slideshowSlidesId,\n onPreviousClick,\n onNextClick,\n onPaginationClick,\n isAutoPlaying: isSlideshowAutoPlaying,\n toggleAutoPlay,\n activeIndex: currentIndex,\n slidesCount,\n setActiveIndex: setCurrentIndex,\n startAutoPlay,\n stopAutoPlay,\n isForcePaused,\n toggleForcePause,\n };\n};\n","import { useEffect } from 'react';\nimport { getFocusableElements } from '@lumx/react/utils/browser/focus/getFocusableElements';\n\nexport interface UseSlideFocusManagementProps {\n isSlideDisplayed?: boolean;\n slideRef: React.RefObject<HTMLDivElement>;\n}\n\n/**\n * Classname set on elements whose focus was blocked.\n * This is to easily find elements that have been tempered with,\n * and not elements whose focus was already initially blocked.\n * */\nconst BLOCKED_FOCUS_CLASSNAME = 'focus-blocked';\n\n/**\n * Manage how slides must behave when visible or not.\n * When not visible, they should be hidden from screen readers and not focusable.\n */\nexport const useSlideFocusManagement = ({ isSlideDisplayed, slideRef }: UseSlideFocusManagementProps) => {\n useEffect(() => {\n const element = slideRef?.current;\n\n if (!element) {\n return undefined;\n }\n\n /**\n * Display given slide to screen readers and, if focus was blocked, restore focus on elements.\n */\n const enableSlide = () => {\n // Hide from screen readers\n element.setAttribute('aria-hidden', 'false');\n // Find elements we have blocked focus on\n element.querySelectorAll(`.${BLOCKED_FOCUS_CLASSNAME}`).forEach((focusableElement) => {\n focusableElement.removeAttribute('tabindex');\n focusableElement.classList.remove(BLOCKED_FOCUS_CLASSNAME);\n });\n };\n\n /**\n * Hide given slide from screen readers and block focus on all focusable elements within.\n */\n const blockSlide = () => {\n element.setAttribute('aria-hidden', 'true');\n getFocusableElements(element).forEach((focusableElement) => {\n focusableElement.setAttribute('tabindex', '-1');\n focusableElement.classList.add(BLOCKED_FOCUS_CLASSNAME);\n });\n };\n\n const handleDisplay = () => {\n if (!element) {\n return;\n }\n if (isSlideDisplayed) {\n enableSlide();\n } else {\n blockSlide();\n }\n };\n\n // Callback function to execute when mutations are observed\n const callback: MutationCallback = (mutationsList) => {\n if (element) {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n handleDisplay();\n }\n }\n }\n };\n\n // Create an observer instance linked to the callback function\n const observer = new MutationObserver(callback);\n\n if (element) {\n handleDisplay();\n\n /** If slide is hidden, start observing for elements to block focus */\n if (!isSlideDisplayed) {\n observer.observe(element, { attributes: true, childList: true, subtree: true });\n }\n }\n\n return () => {\n if (!isSlideDisplayed) {\n observer.disconnect();\n }\n };\n }, [isSlideDisplayed, slideRef]);\n};\n","import React from 'react';\n\nimport classNames from 'classnames';\nimport { mergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { getRootClassName } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { useSlideFocusManagement } from './useSlideFocusManagement';\n\n/**\n * Defines the props of the component.\n */\nexport interface SlideshowItemGroupProps extends GenericProps {\n role?: 'tabpanel' | 'group';\n label?: string;\n isDisplayed?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'SlideshowItemGroup';\n\n/**\n * Component default class name and class prefix.\n */\nexport const CLASSNAME = getRootClassName(COMPONENT_NAME);\n\nexport const buildSlideShowGroupId = (slidesId: string, index: number) => `${slidesId}-slide-${index}`;\n\n/**\n * SlideshowItemGroup component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const SlideshowItemGroup = forwardRef<SlideshowItemGroupProps, HTMLDivElement>((props, ref) => {\n const { className, children, role = 'group', label, isDisplayed, ...forwardedProps } = props;\n const groupRef = React.useRef<HTMLDivElement>(null);\n\n useSlideFocusManagement({ isSlideDisplayed: isDisplayed, slideRef: groupRef });\n\n return (\n <div\n ref={mergeRefs(groupRef, ref)}\n role={role}\n className={classNames(className, CLASSNAME)}\n aria-roledescription=\"slide\"\n aria-label={label}\n {...forwardedProps}\n >\n {children}\n </div>\n );\n});\n\nSlideshowItemGroup.displayName = COMPONENT_NAME;\nSlideshowItemGroup.className = CLASSNAME;\n","import classNames from 'classnames';\n\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { getRootClassName } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface SlideshowItemProps extends GenericProps {\n /** interval in which slides are automatically shown */\n interval?: number;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'SlideshowItem';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * SlideshowItem component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const SlideshowItem = forwardRef<SlideshowItemProps, HTMLDivElement>((props, ref) => {\n const { className, children, ...forwardedProps } = props;\n return (\n <div ref={ref} className={classNames(className, CLASSNAME)} {...forwardedProps}>\n {children}\n </div>\n );\n});\n\nSlideshowItem.displayName = COMPONENT_NAME;\nSlideshowItem.className = CLASSNAME;\n","import { useEffect } from 'react';\nimport { detectHorizontalSwipe } from '@lumx/core/js/utils';\n\nconst isTouchDevice = () => 'ontouchstart' in window;\n\n/**\n * Listen swipe to navigate left and right.\n */\nexport function useSwipeNavigate(element?: HTMLElement | null, onNext?: () => void, onPrevious?: () => void): void {\n useEffect(() => {\n if (!element || !isTouchDevice()) return undefined;\n\n return detectHorizontalSwipe(element, (swipe) => {\n const callback = swipe === 'right' ? onPrevious : onNext;\n callback?.();\n });\n }, [onPrevious, onNext, element]);\n}\n","import { useMemo, useRef } from 'react';\nimport { EDGE_FROM_ACTIVE_INDEX, PAGINATION_ITEMS_MAX } from '@lumx/react/components/slideshow/constants';\n\ntype Range = { min: number; max: number };\n\n/**\n * Calculate the currently visible pagination \"bullet\" range.\n */\nexport function usePaginationVisibleRange(activeIndex: number, slideCount: number): Range {\n const previousVisibleRangeRef = useRef<Range>();\n return useMemo(() => {\n const lastSlide = slideCount - 1;\n const { current: previousVisibleRange } = previousVisibleRangeRef;\n let newVisibleRange: Range;\n if (activeIndex === previousVisibleRange?.max && activeIndex < lastSlide) {\n newVisibleRange = { min: previousVisibleRange.min + 1, max: previousVisibleRange.max + 1 };\n } else if (activeIndex === previousVisibleRange?.min && activeIndex > 0) {\n newVisibleRange = { min: previousVisibleRange.min - 1, max: previousVisibleRange.max - 1 };\n } else {\n const deltaItems = PAGINATION_ITEMS_MAX - 1;\n let min = activeIndex - EDGE_FROM_ACTIVE_INDEX;\n let max = activeIndex + EDGE_FROM_ACTIVE_INDEX;\n\n if (activeIndex > lastSlide - EDGE_FROM_ACTIVE_INDEX) {\n min = lastSlide - deltaItems;\n max = lastSlide;\n } else if (activeIndex < deltaItems) {\n min = 0;\n max = deltaItems;\n }\n\n newVisibleRange = { min, max };\n }\n previousVisibleRangeRef.current = newVisibleRange;\n return newVisibleRange;\n }, [activeIndex, slideCount]);\n}\n","import React, { RefObject, useCallback, useMemo } from 'react';\n\nimport classNames from 'classnames';\nimport range from 'lodash/range';\n\nimport { mdiChevronLeft, mdiChevronRight, mdiPlayCircleOutline, mdiPauseCircleOutline } from '@lumx/icons';\nimport { Emphasis, IconButton, IconButtonProps, Theme } from '@lumx/react';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { WINDOW } from '@lumx/react/constants';\nimport { useSlideshowControls, DEFAULT_OPTIONS } from '@lumx/react/hooks/useSlideshowControls';\nimport { useRovingTabIndex } from '@lumx/react/hooks/useRovingTabIndex';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { useSwipeNavigate } from './useSwipeNavigate';\nimport { PAGINATION_ITEM_SIZE, PAGINATION_ITEMS_MAX } from './constants';\nimport { usePaginationVisibleRange } from './usePaginationVisibleRange';\n\n/**\n * Defines the props of the component.\n */\nexport interface SlideshowControlsProps extends GenericProps, HasTheme {\n /** Index of the current slide. */\n activeIndex?: number;\n /** Props to pass to the next button (minus those already set by the SlideshowControls props). */\n nextButtonProps: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;\n /** Reference to the parent element on which we want to listen touch swipe. */\n parentRef?: RefObject<HTMLDivElement> | HTMLDivElement | null;\n /** Props to pass to the previous button (minus those already set by the SlideshowControls props). */\n previousButtonProps: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;\n /** Props to pass to the pagination wrapper */\n paginationProps?: Omit<React.HTMLAttributes<HTMLDivElement>, 'className' | 'style' | 'role'>;\n /** Number of slides. */\n slidesCount: number;\n /** On next button click callback. */\n onNextClick?(loopback?: boolean): void;\n /** On pagination change callback. */\n onPaginationClick?(index: number): void;\n /** On previous button click callback. */\n onPreviousClick?(loopback?: boolean): void;\n /** whether the slideshow is currently playing */\n isAutoPlaying?: boolean;\n /**\n * function to be executed in order to retrieve the label for the pagination item\n * @deprecated Use paginationItemProps instead.\n * */\n paginationItemLabel?: (index: number) => string;\n /**\n * function to be executed in order to retrieve the props for a pagination item.\n */\n paginationItemProps?: (itemIndex: number) => React.HTMLAttributes<HTMLButtonElement> & { label?: string };\n /** Props to pass to the lay button (minus those already set by the SlideshowControls props). */\n playButtonProps?: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'SlideshowControls';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<SlideshowControlsProps> = {\n activeIndex: 0,\n};\n\n/**\n * SlideshowControls component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nconst InternalSlideshowControls = forwardRef<SlideshowControlsProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n activeIndex = DEFAULT_PROPS.activeIndex,\n className,\n nextButtonProps,\n onNextClick,\n onPaginationClick,\n onPreviousClick,\n parentRef,\n previousButtonProps,\n paginationProps,\n slidesCount,\n theme = defaultTheme,\n isAutoPlaying = false,\n playButtonProps,\n paginationItemLabel,\n paginationItemProps,\n ...forwardedProps\n } = props;\n\n let parent;\n if (WINDOW) {\n // Checking window object to avoid errors in SSR.\n parent = parentRef instanceof HTMLElement ? parentRef : parentRef?.current;\n }\n const paginationRef = React.useRef(null);\n // Listen to touch swipe navigate left & right.\n useSwipeNavigate(\n parent,\n // Go next without loopback.\n useCallback(() => onNextClick?.(false), [onNextClick]),\n // Go previous without loopback.\n useCallback(() => onPreviousClick?.(false), [onPreviousClick]),\n );\n\n /**\n * Add roving tab index pattern to pagination items and activate slide on focus.\n */\n useRovingTabIndex({\n parentRef: paginationRef,\n elementSelector: 'button',\n keepTabIndex: true,\n onElementFocus: (element) => {\n element.click();\n },\n });\n\n // Pagination \"bullet\" range.\n const visibleRange = usePaginationVisibleRange(activeIndex as number, slidesCount);\n\n // Inline style of wrapper element.\n const wrapperStyle = { transform: `translateX(-${PAGINATION_ITEM_SIZE * visibleRange.min}px)` };\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, theme }), {\n [`${CLASSNAME}--has-infinite-pagination`]: slidesCount > PAGINATION_ITEMS_MAX,\n })}\n >\n <IconButton\n {...previousButtonProps}\n icon={mdiChevronLeft}\n className={`${CLASSNAME}__navigation`}\n color={theme === Theme.dark ? 'light' : 'dark'}\n emphasis={Emphasis.low}\n onClick={onPreviousClick}\n />\n <div ref={paginationRef} className={`${CLASSNAME}__pagination`}>\n <div\n className={`${CLASSNAME}__pagination-items`}\n style={wrapperStyle}\n role=\"tablist\"\n {...paginationProps}\n >\n {useMemo(\n () =>\n range(slidesCount).map((index) => {\n const isOnEdge =\n index !== 0 &&\n index !== slidesCount - 1 &&\n (index === visibleRange.min || index === visibleRange.max);\n const isActive = activeIndex === index;\n const isOutRange = index < visibleRange.min || index > visibleRange.max;\n const {\n className: itemClassName = undefined,\n label = undefined,\n ...itemProps\n } = paginationItemProps ? paginationItemProps(index) : {};\n\n const ariaLabel =\n label || paginationItemLabel?.(index) || `${index + 1} / ${slidesCount}`;\n\n return (\n <button\n className={classNames(\n handleBasicClasses({\n prefix: `${CLASSNAME}__pagination-item`,\n isActive,\n isOnEdge,\n isOutRange,\n }),\n itemClassName,\n )}\n key={index}\n type=\"button\"\n tabIndex={isActive ? undefined : -1}\n role=\"tab\"\n aria-selected={isActive}\n onClick={() => onPaginationClick?.(index)}\n aria-label={ariaLabel}\n {...itemProps}\n />\n );\n }),\n [\n slidesCount,\n visibleRange.min,\n visibleRange.max,\n activeIndex,\n paginationItemProps,\n paginationItemLabel,\n onPaginationClick,\n ],\n )}\n </div>\n </div>\n\n {playButtonProps ? (\n <IconButton\n {...playButtonProps}\n icon={isAutoPlaying ? mdiPauseCircleOutline : mdiPlayCircleOutline}\n className={`${CLASSNAME}__play`}\n color={theme === Theme.dark ? 'light' : 'dark'}\n emphasis={Emphasis.low}\n />\n ) : null}\n\n <IconButton\n {...nextButtonProps}\n icon={mdiChevronRight}\n className={`${CLASSNAME}__navigation`}\n color={theme === Theme.dark ? 'light' : 'dark'}\n emphasis={Emphasis.low}\n onClick={onNextClick}\n />\n </div>\n );\n});\n\nInternalSlideshowControls.displayName = COMPONENT_NAME;\nInternalSlideshowControls.className = CLASSNAME;\nInternalSlideshowControls.defaultProps = DEFAULT_PROPS;\n\nexport const SlideshowControls = Object.assign(InternalSlideshowControls, {\n useSlideshowControls,\n useSlideshowControlsDefaultOptions: DEFAULT_OPTIONS,\n});\n","import React, { Children, CSSProperties } from 'react';\n\nimport chunk from 'lodash/chunk';\nimport classNames from 'classnames';\n\nimport { FULL_WIDTH_PERCENT } from '@lumx/react/components/slideshow/constants';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { buildSlideShowGroupId, SlideshowItemGroup } from './SlideshowItemGroup';\n\nexport interface SlidesProps extends GenericProps, HasTheme {\n /** current slide active */\n activeIndex: number;\n /** slides id to be added to the wrapper */\n id?: string;\n /** Whether the automatic rotation of the slideshow is enabled or not. */\n autoPlay?: boolean;\n /** Whether the image has to fill its container height or not. */\n fillHeight?: boolean;\n /** Number of slides to group together. */\n groupBy?: number;\n /** whether the slides are currently playing or not */\n isAutoPlaying?: boolean;\n /** id to be passed in into the slides */\n slidesId?: string;\n /** callback to change whether the slideshow is playing or not */\n toggleAutoPlay: () => void;\n /** component to be rendered after the slides */\n afterSlides?: React.ReactNode;\n /** Whether the slides have controls linked */\n hasControls?: boolean;\n /**\n * Accessible label to set on a slide group.\n * Receives the group position starting from 1 and the total number of groups.\n * */\n slideGroupLabel?: (groupPosition: number, groupTotal: number) => string;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Slideshow';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Slides component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Slides = forwardRef<SlidesProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme();\n const {\n activeIndex,\n id,\n className,\n theme = defaultTheme,\n fillHeight,\n groupBy,\n isAutoPlaying,\n toggleAutoPlay,\n slidesId,\n children,\n afterSlides,\n hasControls,\n slideGroupLabel,\n ...forwardedProps\n } = props;\n const wrapperRef = React.useRef<HTMLDivElement>(null);\n const startIndexVisible = activeIndex;\n const endIndexVisible = startIndexVisible + 1;\n\n // Inline style of wrapper element.\n const wrapperStyle: CSSProperties = { transform: `translateX(-${FULL_WIDTH_PERCENT * activeIndex}%)` };\n\n const groups = React.useMemo(() => {\n const childrenArray = Children.toArray(children);\n return groupBy && groupBy > 1 ? chunk(childrenArray, groupBy) : childrenArray;\n }, [children, groupBy]);\n\n return (\n <section\n id={id}\n ref={ref}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, theme }), {\n [`${CLASSNAME}--fill-height`]: fillHeight,\n [`${CLASSNAME}--group-by-${groupBy}`]: Boolean(groupBy),\n })}\n aria-roledescription=\"carousel\"\n >\n <div\n id={slidesId}\n className={`${CLASSNAME}__slides`}\n onMouseEnter={toggleAutoPlay}\n onMouseLeave={toggleAutoPlay}\n aria-live={isAutoPlaying ? 'off' : 'polite'}\n >\n <div ref={wrapperRef} className={`${CLASSNAME}__wrapper`} style={wrapperStyle}>\n {groups.map((group, index) => (\n <SlideshowItemGroup\n key={index}\n id={slidesId && buildSlideShowGroupId(slidesId, index)}\n role={hasControls ? 'tabpanel' : 'group'}\n label={slideGroupLabel ? slideGroupLabel(index + 1, groups.length) : undefined}\n isDisplayed={index >= startIndexVisible && index < endIndexVisible}\n >\n {group}\n </SlideshowItemGroup>\n ))}\n </div>\n </div>\n\n {afterSlides}\n </section>\n );\n});\n\nSlides.displayName = COMPONENT_NAME;\nSlides.className = CLASSNAME;\n"],"names":["useInterval","callback","delay","savedCallback","useRef","useEffect","current","undefined","tick","isFunction","id","setInterval","clearInterval","AUTOPLAY_DEFAULT_INTERVAL","FULL_WIDTH_PERCENT","EDGE_FROM_ACTIVE_INDEX","PAGINATION_ITEMS_MAX","PAGINATION_ITEM_SIZE","DEFAULT_OPTIONS","activeIndex","groupBy","interval","useSlideshowControls","autoPlay","defaultActiveIndex","onChange","itemsCount","slidesId","currentIndex","setCurrentIndex","useState","element","setElement","slidesCount","Math","ceil","min","goToNextSlide","useCallback","loopback","index","goToPreviousSlide","isAutoPlaying","setIsAutoPlaying","Boolean","isForcePaused","setIsForcePaused","isSlideshowAutoPlaying","startAutoPlay","stopAutoPlay","onPaginationClick","onNextClick","onPreviousClick","generatedSlideshowId","useId","slideshowId","generatedSlidesId","slideshowSlidesId","toggleAutoPlay","toggleForcePause","shouldBePaused","startIndexVisible","endIndexVisible","setSlideshow","slideshow","setActiveIndex","BLOCKED_FOCUS_CLASSNAME","useSlideFocusManagement","isSlideDisplayed","slideRef","enableSlide","setAttribute","querySelectorAll","forEach","focusableElement","removeAttribute","classList","remove","blockSlide","getFocusableElements","add","handleDisplay","mutationsList","mutation","type","observer","MutationObserver","observe","attributes","childList","subtree","disconnect","COMPONENT_NAME","CLASSNAME","getRootClassName","buildSlideShowGroupId","SlideshowItemGroup","forwardRef","props","ref","className","children","role","label","isDisplayed","forwardedProps","groupRef","React","createElement","_extends","mergeRefs","classNames","displayName","SlideshowItem","isTouchDevice","window","useSwipeNavigate","onNext","onPrevious","detectHorizontalSwipe","swipe","usePaginationVisibleRange","slideCount","previousVisibleRangeRef","useMemo","lastSlide","previousVisibleRange","newVisibleRange","max","deltaItems","DEFAULT_PROPS","InternalSlideshowControls","defaultTheme","useTheme","Theme","light","nextButtonProps","parentRef","previousButtonProps","paginationProps","theme","playButtonProps","paginationItemLabel","paginationItemProps","parent","WINDOW","HTMLElement","paginationRef","useRovingTabIndex","elementSelector","keepTabIndex","onElementFocus","click","visibleRange","wrapperStyle","transform","handleBasicClasses","prefix","IconButton","icon","mdiChevronLeft","color","dark","emphasis","Emphasis","low","onClick","style","range","map","isOnEdge","isActive","isOutRange","itemClassName","itemProps","ariaLabel","key","tabIndex","mdiPauseCircleOutline","mdiPlayCircleOutline","mdiChevronRight","defaultProps","SlideshowControls","Object","assign","useSlideshowControlsDefaultOptions","Slides","fillHeight","afterSlides","hasControls","slideGroupLabel","wrapperRef","groups","childrenArray","Children","toArray","chunk","onMouseEnter","onMouseLeave","group","length"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import React__default from 'react';
2
+
3
+ const ThemeContext = /*#__PURE__*/React__default.createContext(undefined);
4
+
5
+ /** Provide a theme context to all children. */
6
+ const ThemeProvider = ThemeContext.Provider;
7
+
8
+ /** Get the theme in the current context. */
9
+ function useTheme() {
10
+ return React__default.useContext(ThemeContext);
11
+ }
12
+
13
+ export { ThemeProvider as T, useTheme as u };
14
+ //# sourceMappingURL=ThemeContext-3181f000.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeContext-3181f000.js","sources":["../../src/utils/theme/ThemeContext.ts"],"sourcesContent":["import React from 'react';\nimport type { Theme } from '@lumx/react';\n\ntype ThemeContextValue = Theme | undefined;\nexport const ThemeContext = React.createContext<ThemeContextValue>(undefined);\n\n/** Provide a theme context to all children. */\nexport const ThemeProvider = ThemeContext.Provider as React.FC<{\n value: ThemeContextValue;\n children?: React.ReactNode;\n}>;\n\n/** Get the theme in the current context. */\nexport function useTheme(): ThemeContextValue {\n return React.useContext(ThemeContext);\n}\n"],"names":["ThemeContext","React","createContext","undefined","ThemeProvider","Provider","useTheme","useContext"],"mappings":";;AAIO,MAAMA,YAAY,gBAAGC,cAAK,CAACC,aAAa,CAAoBC,SAAS,CAAC,CAAA;;AAE7E;AACaC,MAAAA,aAAa,GAAGJ,YAAY,CAACK,SAGxC;;AAEF;AACO,SAASC,QAAQA,GAAsB;AAC1C,EAAA,OAAOL,cAAK,CAACM,UAAU,CAACP,YAAY,CAAC,CAAA;AACzC;;;;"}
@@ -0,0 +1,312 @@
1
+ import { f as forwardRef, _ as _extends, c as classNames } from './forwardRef-49d2bb84.js';
2
+ import React__default, { useState, useEffect, useMemo } from 'react';
3
+ import { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';
4
+ import { mdiImageBroken } from '@lumx/icons';
5
+ import { u as useMergeRefs } from './mergeRefs-f0d7d6ea.js';
6
+ import { AspectRatio, Theme, Size } from '@lumx/core/js/constants';
7
+ import { u as useTheme } from './ThemeContext-3181f000.js';
8
+ import { R as RawClickable } from './RawClickable-c76bbc4c.js';
9
+ import { u as useDisableStateProps } from './useDisableStateProps-fffc365f.js';
10
+ import { Icon } from './components/icon-2e7345ad.js';
11
+
12
+ function getState(img, event) {
13
+ // Error event occurred or image has no source.
14
+ if (event?.type === 'error' || img?.complete && !img.getAttribute('src')) {
15
+ return 'hasError';
16
+ }
17
+ // Image is undefined or incomplete.
18
+ if (!img || !img.complete) {
19
+ return 'isLoading';
20
+ }
21
+ // Else loaded.
22
+ return 'isLoaded';
23
+ }
24
+ function useImageLoad(imageURL, imgRef) {
25
+ const [state, setState] = useState(getState(imgRef));
26
+
27
+ // Update state when changing image URL or DOM reference.
28
+ useEffect(() => {
29
+ setState(getState(imgRef));
30
+ }, [imageURL, imgRef]);
31
+
32
+ // Listen to `load` and `error` event on image
33
+ useEffect(() => {
34
+ const img = imgRef;
35
+ if (!img) return undefined;
36
+ const update = event => setState(getState(img, event));
37
+ img.addEventListener('load', update);
38
+ img.addEventListener('error', update);
39
+ return () => {
40
+ img.removeEventListener('load', update);
41
+ img.removeEventListener('error', update);
42
+ };
43
+ }, [imgRef, imgRef?.src]);
44
+ return state;
45
+ }
46
+
47
+ // Calculate shift to center the focus point in the container.
48
+ function shiftPosition({
49
+ scale,
50
+ focusPoint,
51
+ imageSize,
52
+ containerSize
53
+ }) {
54
+ const scaledSize = imageSize / scale;
55
+ if (scaledSize === containerSize) return 0;
56
+ const scaledFocusHeight = focusPoint * scaledSize;
57
+ const startFocus = scaledFocusHeight - containerSize / 2;
58
+ const shift = startFocus / (scaledSize - containerSize);
59
+ return Math.floor(Math.max(Math.min(shift, 1), 0) * 100);
60
+ }
61
+
62
+ // Compute CSS properties to apply the focus point.
63
+ const useFocusPointStyle = ({
64
+ image,
65
+ aspectRatio,
66
+ focusPoint,
67
+ imgProps: {
68
+ width,
69
+ height
70
+ } = {}
71
+ }, element, isLoaded) => {
72
+ // Get natural image size from imgProps or img element.
73
+ const imageSize = useMemo(() => {
74
+ // Focus point is not applicable => exit early
75
+ if (!image || aspectRatio === AspectRatio.original || !focusPoint?.x && !focusPoint?.y) return undefined;
76
+ if (typeof width === 'number' && typeof height === 'number') return {
77
+ width,
78
+ height
79
+ };
80
+ if (element && isLoaded) return {
81
+ width: element.naturalWidth,
82
+ height: element.naturalHeight
83
+ };
84
+ return undefined;
85
+ }, [aspectRatio, element, focusPoint?.x, focusPoint?.y, height, image, isLoaded, width]);
86
+
87
+ // Get container size (dependant on imageSize).
88
+ const [containerSize, setContainerSize] = useState(undefined);
89
+ useEffect(function updateContainerSize() {
90
+ const cWidth = element?.offsetWidth;
91
+ const cHeight = element?.offsetHeight;
92
+ if (cWidth && cHeight) {
93
+ // Update only if needed.
94
+ setContainerSize(oldContainerSize => oldContainerSize?.width === cWidth && oldContainerSize.height === cHeight ? oldContainerSize : {
95
+ width: cWidth,
96
+ height: cHeight
97
+ });
98
+ } else if (imageSize) {
99
+ // Wait for a render (in case the container size is dependent on the image size).
100
+ requestAnimationFrame(updateContainerSize);
101
+ }
102
+ }, [element?.offsetHeight, element?.offsetWidth, imageSize]);
103
+
104
+ // Compute style.
105
+ const style = useMemo(() => {
106
+ // Focus point is not applicable => exit early
107
+ if (!image || aspectRatio === AspectRatio.original || !focusPoint?.x && !focusPoint?.y) {
108
+ return {};
109
+ }
110
+ if (!element || !imageSize) {
111
+ // Focus point can be computed but now right now (image size unknown).
112
+ return {
113
+ visibility: 'hidden'
114
+ };
115
+ }
116
+ if (!containerSize || !imageSize.height || !imageSize.width) {
117
+ // Missing container or image size abort focus point compute.
118
+ return {};
119
+ }
120
+ const heightScale = imageSize.height / containerSize.height;
121
+ const widthScale = imageSize.width / containerSize.width;
122
+ const scale = Math.min(widthScale, heightScale);
123
+
124
+ // Focus Y relative to the top (instead of the center)
125
+ const focusPointFromTop = Math.abs((focusPoint?.y || 0) - 1) / 2;
126
+ const y = shiftPosition({
127
+ scale,
128
+ focusPoint: focusPointFromTop,
129
+ imageSize: imageSize.height,
130
+ containerSize: containerSize.height
131
+ });
132
+
133
+ // Focus X relative to the left (instead of the center)
134
+ const focusPointFromLeft = Math.abs((focusPoint?.x || 0) + 1) / 2;
135
+ const x = shiftPosition({
136
+ scale,
137
+ focusPoint: focusPointFromLeft,
138
+ imageSize: imageSize.width,
139
+ containerSize: containerSize.width
140
+ });
141
+ const objectPosition = `${x}% ${y}%`;
142
+ return {
143
+ objectPosition
144
+ };
145
+ }, [aspectRatio, containerSize, element, focusPoint?.x, focusPoint?.y, image, imageSize]);
146
+ return style;
147
+ };
148
+
149
+ /**
150
+ * Defines the props of the component.
151
+ */
152
+
153
+ /**
154
+ * Component display name.
155
+ */
156
+ const COMPONENT_NAME = 'Thumbnail';
157
+
158
+ /**
159
+ * Component default class name and class prefix.
160
+ */
161
+ const CLASSNAME = getRootClassName(COMPONENT_NAME);
162
+
163
+ /**
164
+ * Component default props.
165
+ */
166
+ const DEFAULT_PROPS = {
167
+ fallback: mdiImageBroken,
168
+ loading: 'lazy'
169
+ };
170
+
171
+ /**
172
+ * Thumbnail component.
173
+ *
174
+ * @param props Component props.
175
+ * @param ref Component ref.
176
+ * @return React element.
177
+ */
178
+ const Thumbnail = forwardRef((props, ref) => {
179
+ const {
180
+ isAnyDisabled,
181
+ otherProps,
182
+ disabledStateProps
183
+ } = useDisableStateProps(props);
184
+ const defaultTheme = useTheme() || Theme.light;
185
+ const {
186
+ align,
187
+ alt,
188
+ aspectRatio = AspectRatio.original,
189
+ badge,
190
+ className,
191
+ crossOrigin,
192
+ fallback = DEFAULT_PROPS.fallback,
193
+ fillHeight,
194
+ // `focusPoint` needs to be here to remove it from `forwardedProps`.
195
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
196
+ focusPoint,
197
+ image,
198
+ imgProps,
199
+ imgRef: propImgRef,
200
+ isLoading: isLoadingProp,
201
+ objectFit,
202
+ loading = DEFAULT_PROPS.loading,
203
+ loadingPlaceholderImageRef,
204
+ size,
205
+ theme = defaultTheme,
206
+ variant,
207
+ linkProps,
208
+ linkAs,
209
+ ...forwardedProps
210
+ } = otherProps;
211
+ const [imgElement, setImgElement] = useState();
212
+
213
+ // Image loading state.
214
+ const loadingState = useImageLoad(image, imgElement);
215
+ const isLoaded = loadingState === 'isLoaded';
216
+ const isLoading = isLoadingProp || loadingState === 'isLoading';
217
+ const hasError = loadingState === 'hasError';
218
+
219
+ // Focus point.
220
+ const focusPointStyle = useFocusPointStyle(props, imgElement, isLoaded);
221
+ const hasIconErrorFallback = hasError && typeof fallback === 'string';
222
+ const hasCustomErrorFallback = hasError && !hasIconErrorFallback;
223
+ const imageErrorStyle = {};
224
+ if (hasIconErrorFallback) {
225
+ // Keep the image layout on icon fallback.
226
+ imageErrorStyle.visibility = 'hidden';
227
+ } else if (hasCustomErrorFallback) {
228
+ // Remove the image on custom fallback.
229
+ imageErrorStyle.display = 'none';
230
+ }
231
+ const isLink = Boolean(linkProps?.href || linkAs);
232
+ const isClickable = !isAnyDisabled && Boolean(isLink || !!forwardedProps.onClick);
233
+ const Wrapper = isClickable ? RawClickable : 'div';
234
+ const wrapperProps = {
235
+ ...forwardedProps
236
+ };
237
+ if (isClickable) {
238
+ Object.assign(wrapperProps, {
239
+ as: linkAs || (linkProps?.href ? 'a' : 'button')
240
+ }, disabledStateProps);
241
+ if (isLink) {
242
+ Object.assign(wrapperProps, linkProps);
243
+ } else {
244
+ wrapperProps['aria-label'] = forwardedProps['aria-label'] || alt;
245
+ }
246
+ }
247
+
248
+ // If we have a loading placeholder image that is really loaded (complete)
249
+ const loadingPlaceholderImage = isLoading && loadingPlaceholderImageRef?.current?.complete && loadingPlaceholderImageRef?.current || undefined;
250
+
251
+ // Set loading placeholder image as background
252
+ const loadingStyle = loadingPlaceholderImage ? {
253
+ backgroundImage: `url(${loadingPlaceholderImage.src})`
254
+ } : undefined;
255
+ return /*#__PURE__*/React__default.createElement(Wrapper, _extends({}, wrapperProps, {
256
+ ref: ref,
257
+ className: classNames(linkProps?.className, className, handleBasicClasses({
258
+ align,
259
+ aspectRatio,
260
+ prefix: CLASSNAME,
261
+ size,
262
+ theme,
263
+ variant,
264
+ isClickable,
265
+ hasError,
266
+ hasIconErrorFallback,
267
+ hasCustomErrorFallback,
268
+ isLoading,
269
+ objectFit,
270
+ hasBadge: !!badge
271
+ }), fillHeight && `${CLASSNAME}--fill-height`)
272
+ }), /*#__PURE__*/React__default.createElement("span", {
273
+ className: `${CLASSNAME}__background`
274
+ }, /*#__PURE__*/React__default.createElement("img", _extends({
275
+ // Use placeholder image size
276
+ width: loadingPlaceholderImage?.naturalWidth,
277
+ height: loadingPlaceholderImage?.naturalHeight
278
+ }, imgProps, {
279
+ style: {
280
+ // Reserve space while loading (when possible)
281
+ width: isLoading ? imgProps?.width || loadingPlaceholderImage?.naturalWidth : undefined,
282
+ ...imgProps?.style,
283
+ ...imageErrorStyle,
284
+ ...focusPointStyle,
285
+ ...loadingStyle
286
+ },
287
+ ref: useMergeRefs(setImgElement, propImgRef),
288
+ className: classNames(handleBasicClasses({
289
+ prefix: `${CLASSNAME}__image`,
290
+ isLoading,
291
+ hasDefinedSize: Boolean(imgProps?.height && imgProps.width)
292
+ }), imgProps?.className),
293
+ crossOrigin: crossOrigin,
294
+ src: image,
295
+ alt: alt,
296
+ loading: loading
297
+ })), !isLoading && hasError && /*#__PURE__*/React__default.createElement("span", {
298
+ className: `${CLASSNAME}__fallback`
299
+ }, hasIconErrorFallback ? /*#__PURE__*/React__default.createElement(Icon, {
300
+ icon: fallback,
301
+ size: Size.xxs,
302
+ theme: theme
303
+ }) : fallback)), badge && /*#__PURE__*/React__default.cloneElement(badge, {
304
+ className: classNames(`${CLASSNAME}__badge`, badge.props.className)
305
+ }));
306
+ });
307
+ Thumbnail.displayName = COMPONENT_NAME;
308
+ Thumbnail.className = CLASSNAME;
309
+ Thumbnail.defaultProps = DEFAULT_PROPS;
310
+
311
+ export { Thumbnail as T, useFocusPointStyle as u };
312
+ //# sourceMappingURL=Thumbnail-30d2a781.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Thumbnail-30d2a781.js","sources":["../../src/components/thumbnail/useImageLoad.ts","../../src/components/thumbnail/useFocusPointStyle.tsx","../../src/components/thumbnail/Thumbnail.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport type LoadingState = 'isLoading' | 'isLoaded' | 'hasError';\n\nfunction getState(img: HTMLImageElement | null | undefined, event?: Event) {\n // Error event occurred or image has no source.\n if (event?.type === 'error' || (img?.complete && !img.getAttribute('src'))) {\n return 'hasError';\n }\n // Image is undefined or incomplete.\n if (!img || !img.complete) {\n return 'isLoading';\n }\n // Else loaded.\n return 'isLoaded';\n}\n\nexport function useImageLoad(imageURL: string, imgRef?: HTMLImageElement): LoadingState {\n const [state, setState] = useState<LoadingState>(getState(imgRef));\n\n // Update state when changing image URL or DOM reference.\n useEffect(() => {\n setState(getState(imgRef));\n }, [imageURL, imgRef]);\n\n // Listen to `load` and `error` event on image\n useEffect(() => {\n const img = imgRef;\n if (!img) return undefined;\n const update = (event?: Event) => setState(getState(img, event));\n img.addEventListener('load', update);\n img.addEventListener('error', update);\n return () => {\n img.removeEventListener('load', update);\n img.removeEventListener('error', update);\n };\n }, [imgRef, imgRef?.src]);\n\n return state;\n}\n","import { CSSProperties, useEffect, useMemo, useState } from 'react';\nimport { AspectRatio } from '@lumx/core/js/constants';\nimport { ThumbnailProps } from '@lumx/react/components/thumbnail/Thumbnail';\nimport { RectSize } from '@lumx/react/utils/type';\n\n// Calculate shift to center the focus point in the container.\nexport function shiftPosition({\n scale,\n focusPoint,\n imageSize,\n containerSize,\n}: {\n scale: number;\n focusPoint: number;\n imageSize: number;\n containerSize: number;\n}) {\n const scaledSize = imageSize / scale;\n if (scaledSize === containerSize) return 0;\n\n const scaledFocusHeight = focusPoint * scaledSize;\n const startFocus = scaledFocusHeight - containerSize / 2;\n const shift = startFocus / (scaledSize - containerSize);\n\n return Math.floor(Math.max(Math.min(shift, 1), 0) * 100);\n}\n\n// Compute CSS properties to apply the focus point.\nexport const useFocusPointStyle = (\n { image, aspectRatio, focusPoint, imgProps: { width, height } = {} }: ThumbnailProps,\n element: HTMLImageElement | undefined,\n isLoaded: boolean,\n): CSSProperties => {\n // Get natural image size from imgProps or img element.\n const imageSize: RectSize | undefined = useMemo(() => {\n // Focus point is not applicable => exit early\n if (!image || aspectRatio === AspectRatio.original || (!focusPoint?.x && !focusPoint?.y)) return undefined;\n if (typeof width === 'number' && typeof height === 'number') return { width, height };\n if (element && isLoaded) return { width: element.naturalWidth, height: element.naturalHeight };\n return undefined;\n }, [aspectRatio, element, focusPoint?.x, focusPoint?.y, height, image, isLoaded, width]);\n\n // Get container size (dependant on imageSize).\n const [containerSize, setContainerSize] = useState<RectSize | undefined>(undefined);\n useEffect(\n function updateContainerSize() {\n const cWidth = element?.offsetWidth;\n const cHeight = element?.offsetHeight;\n if (cWidth && cHeight) {\n // Update only if needed.\n setContainerSize((oldContainerSize) =>\n oldContainerSize?.width === cWidth && oldContainerSize.height === cHeight\n ? oldContainerSize\n : { width: cWidth, height: cHeight },\n );\n } else if (imageSize) {\n // Wait for a render (in case the container size is dependent on the image size).\n requestAnimationFrame(updateContainerSize);\n }\n },\n [element?.offsetHeight, element?.offsetWidth, imageSize],\n );\n\n // Compute style.\n const style: CSSProperties = useMemo(() => {\n // Focus point is not applicable => exit early\n if (!image || aspectRatio === AspectRatio.original || (!focusPoint?.x && !focusPoint?.y)) {\n return {};\n }\n if (!element || !imageSize) {\n // Focus point can be computed but now right now (image size unknown).\n return { visibility: 'hidden' };\n }\n if (!containerSize || !imageSize.height || !imageSize.width) {\n // Missing container or image size abort focus point compute.\n return {};\n }\n\n const heightScale = imageSize.height / containerSize.height;\n const widthScale = imageSize.width / containerSize.width;\n const scale = Math.min(widthScale, heightScale);\n\n // Focus Y relative to the top (instead of the center)\n const focusPointFromTop = Math.abs((focusPoint?.y || 0) - 1) / 2;\n const y = shiftPosition({\n scale,\n focusPoint: focusPointFromTop,\n imageSize: imageSize.height,\n containerSize: containerSize.height,\n });\n\n // Focus X relative to the left (instead of the center)\n const focusPointFromLeft = Math.abs((focusPoint?.x || 0) + 1) / 2;\n const x = shiftPosition({\n scale,\n focusPoint: focusPointFromLeft,\n imageSize: imageSize.width,\n containerSize: containerSize.width,\n });\n\n const objectPosition = `${x}% ${y}%`;\n\n return { objectPosition };\n }, [aspectRatio, containerSize, element, focusPoint?.x, focusPoint?.y, image, imageSize]);\n\n return style;\n};\n","import React, {\n CSSProperties,\n ImgHTMLAttributes,\n KeyboardEventHandler,\n MouseEventHandler,\n ReactElement,\n ReactNode,\n Ref,\n useState,\n} from 'react';\n\nimport classNames from 'classnames';\n\nimport { AspectRatio, HorizontalAlignment, Icon, Size, Theme, ThumbnailObjectFit } from '@lumx/react';\nimport { Falsy, GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { mdiImageBroken } from '@lumx/icons';\nimport { useMergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { useImageLoad } from '@lumx/react/components/thumbnail/useImageLoad';\nimport { useFocusPointStyle } from '@lumx/react/components/thumbnail/useFocusPointStyle';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useDisableStateProps } from '@lumx/react/utils/disabled';\nimport { RawClickable } from '@lumx/react/utils/react/RawClickable';\nimport { FocusPoint, ThumbnailSize, ThumbnailVariant } from './types';\n\ntype ImgHTMLProps = ImgHTMLAttributes<HTMLImageElement>;\n\n/**\n * Defines the props of the component.\n */\nexport interface ThumbnailProps extends GenericProps, HasTheme {\n /** Alignment of the thumbnail in it's parent (requires flex parent). */\n align?: HorizontalAlignment;\n /** Image alternative text. */\n alt: string;\n /** Image aspect ratio. */\n aspectRatio?: AspectRatio;\n /** Badge. */\n badge?: ReactElement | Falsy;\n /** Image cross origin resource policy. */\n crossOrigin?: ImgHTMLProps['crossOrigin'];\n /** Fallback icon (SVG path) or react node when image fails to load. */\n fallback?: string | ReactNode;\n /** Whether the thumbnail should fill it's parent size (requires flex parent) or not. */\n fillHeight?: boolean;\n /** Apply relative vertical and horizontal shift (from -1 to 1) on the image position inside the thumbnail. */\n focusPoint?: FocusPoint;\n /** Image URL. */\n image: string;\n /** Props to inject into the native <img> element. */\n imgProps?: ImgHTMLProps;\n /** Reference to the native <img> element. */\n imgRef?: Ref<HTMLImageElement>;\n /** Set to true to force the display of the loading skeleton. */\n isLoading?: boolean;\n /** Set how the image should fit when its aspect ratio is constrained */\n objectFit?: ThumbnailObjectFit;\n /** Size variant of the component. */\n size?: ThumbnailSize;\n /** Image loading mode. */\n loading?: ImgHTMLProps['loading'];\n /** Ref of an existing placeholder image to display while loading. */\n loadingPlaceholderImageRef?: React.RefObject<HTMLImageElement>;\n /** On click callback. */\n onClick?: MouseEventHandler<HTMLDivElement>;\n /** On key press callback. */\n onKeyPress?: KeyboardEventHandler<HTMLDivElement>;\n /** Variant of the component. */\n variant?: ThumbnailVariant;\n /** Props to pass to the link wrapping the thumbnail. */\n linkProps?: React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>;\n /** Custom react component for the link (can be used to inject react router Link). */\n linkAs?: 'a' | any;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Thumbnail';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<ThumbnailProps> = {\n fallback: mdiImageBroken,\n loading: 'lazy',\n};\n\n/**\n * Thumbnail component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Thumbnail = forwardRef<ThumbnailProps>((props, ref) => {\n const { isAnyDisabled, otherProps, disabledStateProps } = useDisableStateProps(props);\n const defaultTheme = useTheme() || Theme.light;\n const {\n align,\n alt,\n aspectRatio = AspectRatio.original,\n badge,\n className,\n crossOrigin,\n fallback = DEFAULT_PROPS.fallback,\n fillHeight,\n // `focusPoint` needs to be here to remove it from `forwardedProps`.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n focusPoint,\n image,\n imgProps,\n imgRef: propImgRef,\n isLoading: isLoadingProp,\n objectFit,\n loading = DEFAULT_PROPS.loading,\n loadingPlaceholderImageRef,\n size,\n theme = defaultTheme,\n variant,\n linkProps,\n linkAs,\n ...forwardedProps\n } = otherProps;\n const [imgElement, setImgElement] = useState<HTMLImageElement>();\n\n // Image loading state.\n const loadingState = useImageLoad(image, imgElement);\n const isLoaded = loadingState === 'isLoaded';\n const isLoading = isLoadingProp || loadingState === 'isLoading';\n const hasError = loadingState === 'hasError';\n\n // Focus point.\n const focusPointStyle = useFocusPointStyle(props, imgElement, isLoaded);\n\n const hasIconErrorFallback = hasError && typeof fallback === 'string';\n const hasCustomErrorFallback = hasError && !hasIconErrorFallback;\n const imageErrorStyle: CSSProperties = {};\n if (hasIconErrorFallback) {\n // Keep the image layout on icon fallback.\n imageErrorStyle.visibility = 'hidden';\n } else if (hasCustomErrorFallback) {\n // Remove the image on custom fallback.\n imageErrorStyle.display = 'none';\n }\n\n const isLink = Boolean(linkProps?.href || linkAs);\n const isClickable = !isAnyDisabled && Boolean(isLink || !!forwardedProps.onClick);\n\n const Wrapper: any = isClickable ? RawClickable : 'div';\n const wrapperProps = { ...forwardedProps };\n if (isClickable) {\n Object.assign(wrapperProps, { as: linkAs || (linkProps?.href ? 'a' : 'button') }, disabledStateProps);\n if (isLink) {\n Object.assign(wrapperProps, linkProps);\n } else {\n wrapperProps['aria-label'] = forwardedProps['aria-label'] || alt;\n }\n }\n\n // If we have a loading placeholder image that is really loaded (complete)\n const loadingPlaceholderImage =\n (isLoading && loadingPlaceholderImageRef?.current?.complete && loadingPlaceholderImageRef?.current) ||\n undefined;\n\n // Set loading placeholder image as background\n const loadingStyle = loadingPlaceholderImage\n ? { backgroundImage: `url(${loadingPlaceholderImage.src})` }\n : undefined;\n\n return (\n <Wrapper\n {...wrapperProps}\n ref={ref}\n className={classNames(\n linkProps?.className,\n className,\n handleBasicClasses({\n align,\n aspectRatio,\n prefix: CLASSNAME,\n size,\n theme,\n variant,\n isClickable,\n hasError,\n hasIconErrorFallback,\n hasCustomErrorFallback,\n isLoading,\n objectFit,\n hasBadge: !!badge,\n }),\n fillHeight && `${CLASSNAME}--fill-height`,\n )}\n >\n <span className={`${CLASSNAME}__background`}>\n <img\n // Use placeholder image size\n width={loadingPlaceholderImage?.naturalWidth}\n height={loadingPlaceholderImage?.naturalHeight}\n {...imgProps}\n style={{\n // Reserve space while loading (when possible)\n width: isLoading ? imgProps?.width || loadingPlaceholderImage?.naturalWidth : undefined,\n ...imgProps?.style,\n ...imageErrorStyle,\n ...focusPointStyle,\n ...loadingStyle,\n }}\n ref={useMergeRefs(setImgElement, propImgRef)}\n className={classNames(\n handleBasicClasses({\n prefix: `${CLASSNAME}__image`,\n isLoading,\n hasDefinedSize: Boolean(imgProps?.height && imgProps.width),\n }),\n imgProps?.className,\n )}\n crossOrigin={crossOrigin}\n src={image}\n alt={alt}\n loading={loading}\n />\n {!isLoading && hasError && (\n <span className={`${CLASSNAME}__fallback`}>\n {hasIconErrorFallback ? (\n <Icon icon={fallback as string} size={Size.xxs} theme={theme} />\n ) : (\n fallback\n )}\n </span>\n )}\n </span>\n {badge &&\n React.cloneElement(badge, { className: classNames(`${CLASSNAME}__badge`, badge.props.className) })}\n </Wrapper>\n );\n});\nThumbnail.displayName = COMPONENT_NAME;\nThumbnail.className = CLASSNAME;\nThumbnail.defaultProps = DEFAULT_PROPS;\n"],"names":["getState","img","event","type","complete","getAttribute","useImageLoad","imageURL","imgRef","state","setState","useState","useEffect","undefined","update","addEventListener","removeEventListener","src","shiftPosition","scale","focusPoint","imageSize","containerSize","scaledSize","scaledFocusHeight","startFocus","shift","Math","floor","max","min","useFocusPointStyle","image","aspectRatio","imgProps","width","height","element","isLoaded","useMemo","AspectRatio","original","x","y","naturalWidth","naturalHeight","setContainerSize","updateContainerSize","cWidth","offsetWidth","cHeight","offsetHeight","oldContainerSize","requestAnimationFrame","style","visibility","heightScale","widthScale","focusPointFromTop","abs","focusPointFromLeft","objectPosition","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","fallback","mdiImageBroken","loading","Thumbnail","forwardRef","props","ref","isAnyDisabled","otherProps","disabledStateProps","useDisableStateProps","defaultTheme","useTheme","Theme","light","align","alt","badge","className","crossOrigin","fillHeight","propImgRef","isLoading","isLoadingProp","objectFit","loadingPlaceholderImageRef","size","theme","variant","linkProps","linkAs","forwardedProps","imgElement","setImgElement","loadingState","hasError","focusPointStyle","hasIconErrorFallback","hasCustomErrorFallback","imageErrorStyle","display","isLink","Boolean","href","isClickable","onClick","Wrapper","RawClickable","wrapperProps","Object","assign","as","loadingPlaceholderImage","current","loadingStyle","backgroundImage","React","createElement","_extends","classNames","handleBasicClasses","prefix","hasBadge","useMergeRefs","hasDefinedSize","Icon","icon","Size","xxs","cloneElement","displayName","defaultProps"],"mappings":"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"}