@lumx/react 3.20.1-alpha.11 → 3.20.1-alpha.13

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 (304) hide show
  1. package/_internal/{baa0a23b.js → Button-f19e18df.js} +9 -8
  2. package/_internal/Button-f19e18df.js.map +1 -0
  3. package/_internal/{01bc8fcf.js → ButtonRoot-ab633b1d.js} +7 -6
  4. package/_internal/ButtonRoot-ab633b1d.js.map +1 -0
  5. package/_internal/{e2440593.js → Chip-4c572eec.js} +7 -6
  6. package/_internal/Chip-4c572eec.js.map +1 -0
  7. package/_internal/{bcce6ceb.js → ClickAwayProvider-bcce6ceb.js} +1 -1
  8. package/_internal/ClickAwayProvider-bcce6ceb.js.map +1 -0
  9. package/_internal/{077b7bef.js → DisabledStateContext-077b7bef.js} +1 -1
  10. package/_internal/DisabledStateContext-077b7bef.js.map +1 -0
  11. package/_internal/{30f4c83c.js → HeadingLevelProvider-e4817816.js} +2 -2
  12. package/_internal/HeadingLevelProvider-e4817816.js.map +1 -0
  13. package/_internal/{7b214f74.js → IconButton-10585058.js} +8 -6
  14. package/_internal/IconButton-10585058.js.map +1 -0
  15. package/_internal/{803945f7.js → ImageCaption-4279b2b6.js} +5 -5
  16. package/_internal/ImageCaption-4279b2b6.js.map +1 -0
  17. package/_internal/{1ce667fb.js → List-d5f5d465.js} +8 -7
  18. package/_internal/List-d5f5d465.js.map +1 -0
  19. package/_internal/{1aaa0341.js → PopoverDialog-21e5c9dd.js} +18 -16
  20. package/_internal/PopoverDialog-21e5c9dd.js.map +1 -0
  21. package/_internal/{c43d098b.js → Portal-c43d098b.js} +1 -1
  22. package/_internal/Portal-c43d098b.js.map +1 -0
  23. package/_internal/{432c85a7.js → RawClickable-c76bbc4c.js} +2 -2
  24. package/_internal/RawClickable-c76bbc4c.js.map +1 -0
  25. package/_internal/{85d992d2.js → Slides-01f513ce.js} +13 -16
  26. package/_internal/Slides-01f513ce.js.map +1 -0
  27. package/_internal/{3181f000.js → ThemeContext-3181f000.js} +1 -1
  28. package/_internal/ThemeContext-3181f000.js.map +1 -0
  29. package/_internal/{714809cc.js → Thumbnail-30d2a781.js} +10 -10
  30. package/_internal/Thumbnail-30d2a781.js.map +1 -0
  31. package/_internal/{07e0bd90.js → components/alert-dialog-8f1c163c.js} +10 -10
  32. package/_internal/components/alert-dialog-8f1c163c.js.map +1 -0
  33. package/_internal/{87bada02.js → components/autocomplete-bfbdeb3c.js} +13 -11
  34. package/_internal/components/autocomplete-bfbdeb3c.js.map +1 -0
  35. package/_internal/{bc4cb4c0.js → components/avatar-6990e3e9.js} +6 -5
  36. package/_internal/components/avatar-6990e3e9.js.map +1 -0
  37. package/_internal/{80e5c950.js → components/badge-81543bc7.js} +4 -3
  38. package/_internal/components/badge-81543bc7.js.map +1 -0
  39. package/_internal/{43262bfe.js → components/button-927abe71.js} +5 -4
  40. package/_internal/components/button-927abe71.js.map +1 -0
  41. package/_internal/{38b3ecf3.js → components/checkbox-dc4caec8.js} +12 -14
  42. package/_internal/{38b3ecf3.js.map → components/checkbox-dc4caec8.js.map} +1 -1
  43. package/_internal/{9452daf7.js → components/chip-fb3d0c76.js} +4 -3
  44. package/_internal/components/chip-fb3d0c76.js.map +1 -0
  45. package/_internal/{5ba8fae8.js → components/comment-block-b84c4694.js} +7 -6
  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/{bba7d4c4.js → components/dialog-7dbcb485.js} +17 -16
  50. package/_internal/components/dialog-7dbcb485.js.map +1 -0
  51. package/_internal/{3683d267.js → components/divider-12e9b6a0.js} +5 -4
  52. package/_internal/components/divider-12e9b6a0.js.map +1 -0
  53. package/_internal/{f57d4eb8.js → components/drag-handle-a38ff757.js} +7 -7
  54. package/_internal/components/drag-handle-a38ff757.js.map +1 -0
  55. package/_internal/{2938a251.js → components/dropdown-38b0b6a0.js} +7 -6
  56. package/_internal/components/dropdown-38b0b6a0.js.map +1 -0
  57. package/_internal/{bdd41804.js → components/expansion-panel-c4b93653.js} +11 -10
  58. package/_internal/components/expansion-panel-c4b93653.js.map +1 -0
  59. package/_internal/{e566d502.js → components/flag-c5e2f5f0.js} +7 -6
  60. package/_internal/components/flag-c5e2f5f0.js.map +1 -0
  61. package/_internal/{64046d7a.js → components/flex-box-c8701a85.js} +4 -3
  62. package/_internal/components/flex-box-c8701a85.js.map +1 -0
  63. package/_internal/{cb036703.js → components/generic-block-0d6ad5a6.js} +7 -5
  64. package/_internal/components/generic-block-0d6ad5a6.js.map +1 -0
  65. package/_internal/{2c7942af.js → components/grid-3b194fe8.js} +4 -3
  66. package/_internal/components/grid-3b194fe8.js.map +1 -0
  67. package/_internal/{e4613195.js → components/grid-column-985b9327.js} +3 -2
  68. package/_internal/components/grid-column-985b9327.js.map +1 -0
  69. package/_internal/{4c5a7b63.js → components/heading-5e954dfc.js} +6 -5
  70. package/_internal/components/heading-5e954dfc.js.map +1 -0
  71. package/_internal/{4e1dde79.js → components/icon-2e7345ad.js} +7 -8
  72. package/_internal/components/icon-2e7345ad.js.map +1 -0
  73. package/_internal/{9cfa3e10.js → components/image-block-8d21dd7e.js} +7 -6
  74. package/_internal/components/image-block-8d21dd7e.js.map +1 -0
  75. package/_internal/{60f8e509.js → components/image-lightbox-4a5ab962.js} +14 -16
  76. package/_internal/components/image-lightbox-4a5ab962.js.map +1 -0
  77. package/_internal/{1eab656b.js → components/inline-list-4884f004.js} +3 -4
  78. package/_internal/components/inline-list-4884f004.js.map +1 -0
  79. package/_internal/{fc47f2da.js → components/input-helper-e644e05e.js} +5 -4
  80. package/_internal/components/input-helper-e644e05e.js.map +1 -0
  81. package/_internal/{9210e2f3.js → components/input-label-5e509a1b.js} +5 -5
  82. package/_internal/components/input-label-5e509a1b.js.map +1 -0
  83. package/_internal/{742d4906.js → components/lightbox-bec1b95f.js} +16 -15
  84. package/_internal/components/lightbox-bec1b95f.js.map +1 -0
  85. package/_internal/{1921f348.js → components/link-9637b9e4.js} +7 -9
  86. package/_internal/components/link-9637b9e4.js.map +1 -0
  87. package/_internal/{32698205.js → components/link-preview-7a4a6e4b.js} +7 -6
  88. package/_internal/components/link-preview-7a4a6e4b.js.map +1 -0
  89. package/_internal/{0f4b35b2.js → components/list-5c8f7122.js} +4 -3
  90. package/_internal/components/list-5c8f7122.js.map +1 -0
  91. package/_internal/{4d92e13b.js → components/message-a67067d9.js} +7 -8
  92. package/_internal/components/message-a67067d9.js.map +1 -0
  93. package/_internal/{b925072d.js → components/mosaic-92b66c80.js} +6 -5
  94. package/_internal/components/mosaic-92b66c80.js.map +1 -0
  95. package/_internal/{2d6bde7d.js → components/navigation-4fd3917d.js} +13 -12
  96. package/_internal/components/navigation-4fd3917d.js.map +1 -0
  97. package/_internal/{18334f0d.js → components/notification-9063c963.js} +12 -12
  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/{a67f26a8.js → components/post-block-0cfc2206.js} +7 -6
  102. package/_internal/components/post-block-0cfc2206.js.map +1 -0
  103. package/_internal/{881714a1.js → components/progress-eaf5b33d.js} +5 -4
  104. package/_internal/components/progress-eaf5b33d.js.map +1 -0
  105. package/_internal/{aafcf80e.js → components/progress-tracker-4a65718d.js} +13 -16
  106. package/_internal/components/progress-tracker-4a65718d.js.map +1 -0
  107. package/_internal/{9cf0d217.js → components/radio-button-3ef8a325.js} +9 -8
  108. package/_internal/components/radio-button-3ef8a325.js.map +1 -0
  109. package/_internal/{e53b5a39.js → components/select-d46cfe35.js} +16 -19
  110. package/_internal/components/select-d46cfe35.js.map +1 -0
  111. package/_internal/{21cf275f.js → components/side-navigation-75b22f19.js} +11 -10
  112. package/_internal/components/side-navigation-75b22f19.js.map +1 -0
  113. package/_internal/{cdc3efab.js → components/skeleton-361ce335.js} +5 -4
  114. package/_internal/components/skeleton-361ce335.js.map +1 -0
  115. package/_internal/{0a31e895.js → components/slider-8094cb5c.js} +9 -8
  116. package/_internal/components/slider-8094cb5c.js.map +1 -0
  117. package/_internal/{77eb8ef3.js → components/slideshow-2e8cd372.js} +7 -6
  118. package/_internal/components/slideshow-2e8cd372.js.map +1 -0
  119. package/_internal/{70cf341b.js → components/switch-5516949b.js} +9 -8
  120. package/_internal/components/switch-5516949b.js.map +1 -0
  121. package/_internal/{9d8130ae.js → components/table-fa198ee6.js} +8 -10
  122. package/_internal/components/table-fa198ee6.js.map +1 -0
  123. package/_internal/{2368cb68.js → components/tabs-bb9bc2a5.js} +12 -11
  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/{3646abc3.js → components/text-field-82733568.js} +13 -13
  128. package/_internal/components/text-field-82733568.js.map +1 -0
  129. package/_internal/{95a2e851.js → components/thumbnail-e3acff82.js} +3 -3
  130. package/_internal/components/thumbnail-e3acff82.js.map +1 -0
  131. package/_internal/{1e4b7ad5.js → components/toolbar-155562be.js} +3 -3
  132. package/_internal/components/toolbar-155562be.js.map +1 -0
  133. package/_internal/{d6b3a3c0.js → components/tooltip-84ffb4f9.js} +11 -10
  134. package/_internal/components/tooltip-84ffb4f9.js.map +1 -0
  135. package/_internal/{ee64ab0d.js → components/uploader-896a1d89.js} +10 -9
  136. package/_internal/components/uploader-896a1d89.js.map +1 -0
  137. package/_internal/{dd0a245d.js → components/user-block-8fd15895.js} +7 -6
  138. package/_internal/components/user-block-8fd15895.js.map +1 -0
  139. package/_internal/{407735b4.js → constants-b9e57936.js} +2 -2
  140. package/_internal/constants-b9e57936.js.map +1 -0
  141. package/_internal/{b3bfbe72.js → constants-d0e3f49e.js} +2 -2
  142. package/_internal/constants-d0e3f49e.js.map +1 -0
  143. package/_internal/{21aeb1c7.js → context-21aeb1c7.js} +1 -1
  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/{230173a8.js → getFocusableElements-230173a8.js} +1 -1
  148. package/_internal/getFocusableElements-230173a8.js.map +1 -0
  149. package/_internal/{8fcceef3.js → index-b4d256e7.js} +7 -9
  150. package/_internal/index-b4d256e7.js.map +1 -0
  151. package/_internal/{72407886.js → index-f415b08e.js} +11 -11
  152. package/_internal/index-f415b08e.js.map +1 -0
  153. package/_internal/{78df9309.js → isComponent-78df9309.js} +1 -1
  154. package/_internal/isComponent-78df9309.js.map +1 -0
  155. package/_internal/{e806b848.js → isComponentType-e806b848.js} +1 -1
  156. package/_internal/isComponentType-e806b848.js.map +1 -0
  157. package/_internal/{f0d7d6ea.js → mergeRefs-f0d7d6ea.js} +1 -1
  158. package/_internal/mergeRefs-f0d7d6ea.js.map +1 -0
  159. package/_internal/{4daccdd5.js → partitionMulti-4daccdd5.js} +1 -1
  160. package/_internal/partitionMulti-4daccdd5.js.map +1 -0
  161. package/_internal/{825ac334.js → state-db358714.js} +2 -2
  162. package/_internal/state-db358714.js.map +1 -0
  163. package/_internal/{2a3d237c.js → useBooleanState-2a3d237c.js} +1 -1
  164. package/_internal/useBooleanState-2a3d237c.js.map +1 -0
  165. package/_internal/{d66c4375.js → useCallbackOnEscape-ea4d9eb4.js} +3 -3
  166. package/_internal/useCallbackOnEscape-ea4d9eb4.js.map +1 -0
  167. package/_internal/{36bd7352.js → useDisableBodyScroll-36bd7352.js} +1 -1
  168. package/_internal/useDisableBodyScroll-36bd7352.js.map +1 -0
  169. package/_internal/{60923026.js → useDisableStateProps-fffc365f.js} +2 -2
  170. package/_internal/useDisableStateProps-fffc365f.js.map +1 -0
  171. package/_internal/{3f3de25e.js → useFocusTrap-c3c6378b.js} +4 -4
  172. package/_internal/useFocusTrap-c3c6378b.js.map +1 -0
  173. package/_internal/{3a1facc0.js → useId-3a1facc0.js} +1 -1
  174. package/_internal/useId-3a1facc0.js.map +1 -0
  175. package/_internal/{7daf0f24.js → useRovingTabIndex-7daf0f24.js} +1 -1
  176. package/_internal/useRovingTabIndex-7daf0f24.js.map +1 -0
  177. package/_internal/{aa8c5d9b.js → useTransitionVisibility-321fdbfa.js} +2 -2
  178. package/_internal/useTransitionVisibility-321fdbfa.js.map +1 -0
  179. package/_internal/{7c4f4643.js → wrapChildrenIconWithSpaces-f86106ce.js} +3 -3
  180. package/_internal/wrapChildrenIconWithSpaces-f86106ce.js.map +1 -0
  181. package/index.d.ts +7 -352
  182. package/index.js +65 -111
  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 -3
  187. package/_internal/01bc8fcf.js.map +0 -1
  188. package/_internal/0361b7fb.js +0 -15
  189. package/_internal/0361b7fb.js.map +0 -1
  190. package/_internal/077b7bef.js.map +0 -1
  191. package/_internal/07e0bd90.js.map +0 -1
  192. package/_internal/0a31e895.js.map +0 -1
  193. package/_internal/0b9c76cb.js +0 -6
  194. package/_internal/0b9c76cb.js.map +0 -1
  195. package/_internal/0f4b35b2.js.map +0 -1
  196. package/_internal/18334f0d.js.map +0 -1
  197. package/_internal/1921f348.js.map +0 -1
  198. package/_internal/1aaa0341.js.map +0 -1
  199. package/_internal/1ce667fb.js.map +0 -1
  200. package/_internal/1e4b7ad5.js.map +0 -1
  201. package/_internal/1eab656b.js.map +0 -1
  202. package/_internal/21aeb1c7.js.map +0 -1
  203. package/_internal/21cf275f.js.map +0 -1
  204. package/_internal/230173a8.js.map +0 -1
  205. package/_internal/2368cb68.js.map +0 -1
  206. package/_internal/286fc728.js +0 -2
  207. package/_internal/286fc728.js.map +0 -1
  208. package/_internal/2938a251.js.map +0 -1
  209. package/_internal/2a3d237c.js.map +0 -1
  210. package/_internal/2c7942af.js.map +0 -1
  211. package/_internal/2d6bde7d.js.map +0 -1
  212. package/_internal/30f4c83c.js.map +0 -1
  213. package/_internal/3181f000.js.map +0 -1
  214. package/_internal/32698205.js.map +0 -1
  215. package/_internal/3646abc3.js.map +0 -1
  216. package/_internal/3683d267.js.map +0 -1
  217. package/_internal/36bd7352.js.map +0 -1
  218. package/_internal/3a1facc0.js.map +0 -1
  219. package/_internal/3f3de25e.js.map +0 -1
  220. package/_internal/407735b4.js.map +0 -1
  221. package/_internal/43262bfe.js.map +0 -1
  222. package/_internal/432c85a7.js.map +0 -1
  223. package/_internal/49bbeed3.js +0 -6
  224. package/_internal/49bbeed3.js.map +0 -1
  225. package/_internal/4c5a7b63.js.map +0 -1
  226. package/_internal/4ceaf17c.js +0 -75
  227. package/_internal/4ceaf17c.js.map +0 -1
  228. package/_internal/4d92e13b.js.map +0 -1
  229. package/_internal/4daccdd5.js.map +0 -1
  230. package/_internal/4e1dde79.js.map +0 -1
  231. package/_internal/5ba8fae8.js.map +0 -1
  232. package/_internal/60923026.js.map +0 -1
  233. package/_internal/60f8e509.js.map +0 -1
  234. package/_internal/64046d7a.js.map +0 -1
  235. package/_internal/70cf341b.js.map +0 -1
  236. package/_internal/714809cc.js.map +0 -1
  237. package/_internal/72407886.js.map +0 -1
  238. package/_internal/742d4906.js.map +0 -1
  239. package/_internal/77eb8ef3.js.map +0 -1
  240. package/_internal/78df9309.js.map +0 -1
  241. package/_internal/7b214f74.js.map +0 -1
  242. package/_internal/7b221b05.js +0 -9
  243. package/_internal/7b221b05.js.map +0 -1
  244. package/_internal/7c4f4643.js.map +0 -1
  245. package/_internal/7daf0f24.js.map +0 -1
  246. package/_internal/803945f7.js.map +0 -1
  247. package/_internal/80e5c950.js.map +0 -1
  248. package/_internal/825ac334.js.map +0 -1
  249. package/_internal/827b804a.js +0 -6
  250. package/_internal/827b804a.js.map +0 -1
  251. package/_internal/85d992d2.js.map +0 -1
  252. package/_internal/87bada02.js.map +0 -1
  253. package/_internal/881714a1.js.map +0 -1
  254. package/_internal/88ec77c2.js +0 -130
  255. package/_internal/88ec77c2.js.map +0 -1
  256. package/_internal/8fcceef3.js.map +0 -1
  257. package/_internal/9210e2f3.js.map +0 -1
  258. package/_internal/9452daf7.js.map +0 -1
  259. package/_internal/95a2e851.js.map +0 -1
  260. package/_internal/9cf0d217.js.map +0 -1
  261. package/_internal/9cfa3e10.js.map +0 -1
  262. package/_internal/9d8130ae.js.map +0 -1
  263. package/_internal/a67f26a8.js.map +0 -1
  264. package/_internal/aa8c5d9b.js.map +0 -1
  265. package/_internal/aafcf80e.js.map +0 -1
  266. package/_internal/ac3bc511.js +0 -2
  267. package/_internal/ac3bc511.js.map +0 -1
  268. package/_internal/b3bfbe72.js.map +0 -1
  269. package/_internal/b925072d.js.map +0 -1
  270. package/_internal/baa0a23b.js.map +0 -1
  271. package/_internal/bba7d4c4.js.map +0 -1
  272. package/_internal/bc4cb4c0.js.map +0 -1
  273. package/_internal/bcce6ceb.js.map +0 -1
  274. package/_internal/bdd41804.js.map +0 -1
  275. package/_internal/c43d098b.js.map +0 -1
  276. package/_internal/cb036703.js.map +0 -1
  277. package/_internal/cc995526.js +0 -2
  278. package/_internal/cc995526.js.map +0 -1
  279. package/_internal/cdc3efab.js.map +0 -1
  280. package/_internal/d0dd1815.js +0 -10
  281. package/_internal/d0dd1815.js.map +0 -1
  282. package/_internal/d3321a86.js +0 -290
  283. package/_internal/d3321a86.js.map +0 -1
  284. package/_internal/d66c4375.js.map +0 -1
  285. package/_internal/d6b3a3c0.js.map +0 -1
  286. package/_internal/d95844c1.d.ts +0 -7
  287. package/_internal/dd0a245d.js.map +0 -1
  288. package/_internal/de24f857.js +0 -4
  289. package/_internal/de24f857.js.map +0 -1
  290. package/_internal/e2122a37.js +0 -3
  291. package/_internal/e2122a37.js.map +0 -1
  292. package/_internal/e2440593.js.map +0 -1
  293. package/_internal/e4613195.js.map +0 -1
  294. package/_internal/e53b5a39.js.map +0 -1
  295. package/_internal/e566d502.js.map +0 -1
  296. package/_internal/e806b848.js.map +0 -1
  297. package/_internal/eaf6c45a.js +0 -4
  298. package/_internal/eaf6c45a.js.map +0 -1
  299. package/_internal/ee64ab0d.js.map +0 -1
  300. package/_internal/ef5d1aac.js +0 -4
  301. package/_internal/ef5d1aac.js.map +0 -1
  302. package/_internal/f0d7d6ea.js.map +0 -1
  303. package/_internal/f57d4eb8.js.map +0 -1
  304. package/_internal/fc47f2da.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"5ba8fae8.js","sources":["../../src/components/comment-block/CommentBlock.tsx"],"sourcesContent":["import { Children, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Avatar, Size, Theme, Tooltip } from '@lumx/react';\nimport { GenericProps, HasTheme, ValueOf } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { AvatarProps } from '../avatar/Avatar';\n\n/**\n * Comment block variants.\n */\nexport const CommentBlockVariant = {\n indented: 'indented',\n linear: 'linear',\n} as const;\nexport type CommentBlockVariant = ValueOf<typeof CommentBlockVariant>;\n\n/**\n * Defines the props of the component.\n */\nexport interface CommentBlockProps extends GenericProps, HasTheme {\n /** Action toolbar content. */\n actions?: ReactNode;\n /** Props to pass to the avatar. */\n avatarProps: AvatarProps;\n /** Comment block replies. */\n children?: ReactNode;\n /** Comment date with the minimal timestamp information (xx minutes, x hours, yesterday, 6 days, Month Day, Month Day Year)*/\n date?: string;\n /** Comment date with the full timestamp information (day, month, year, time) */\n fullDate?: string;\n /** Whether the component has actions to display or not. */\n hasActions?: boolean;\n /** Action toolbar header content. */\n headerActions?: ReactNode;\n /** Whether the component is open or not. */\n isOpen?: boolean;\n /** Whether the comment is relevant or not. */\n isRelevant?: boolean;\n /** Comment author name. */\n name?: React.ReactNode;\n /**\n * On click callback.\n * @deprecated Use avatarProps instead and/or inject a clickable component in `name`\n */\n onClick?(): void;\n /**\n * On mouse enter callback.\n * @deprecated Use avatarProps instead and/or inject a clickable component in `name`\n */\n onMouseEnter?(): void;\n /**\n * On mouse leave callback.\n * @deprecated Use avatarProps instead and/or inject a clickable component in `name`\n */\n onMouseLeave?(): void;\n /** Comment content. */\n text: ReactNode | string;\n /** Comment variant. */\n variant?: CommentBlockVariant;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'CommentBlock';\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<CommentBlockProps> = {\n variant: CommentBlockVariant.indented,\n};\n\n/**\n * CommentBlock component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const CommentBlock = forwardRef<CommentBlockProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n actions,\n avatarProps,\n children,\n className,\n date,\n fullDate,\n hasActions,\n headerActions,\n isOpen,\n isRelevant,\n name,\n onClick,\n onMouseEnter,\n onMouseLeave,\n text,\n theme = defaultTheme,\n variant = DEFAULT_PROPS.variant,\n ...forwardedProps\n } = props;\n const hasChildren = Children.count(children) > 0;\n\n return (\n <div\n ref={ref}\n className={classNames(\n className,\n handleBasicClasses({\n hasChildren: hasChildren && isOpen,\n hasIndentedChildren: hasChildren && variant === CommentBlockVariant.indented,\n hasLinearChildren: hasChildren && variant === CommentBlockVariant.linear,\n isRelevant,\n prefix: CLASSNAME,\n theme,\n }),\n )}\n {...forwardedProps}\n >\n <div className={`${CLASSNAME}__wrapper`}>\n <div className={`${CLASSNAME}__avatar`}>\n <Avatar {...avatarProps} size={Size.m} onClick={onClick} />\n </div>\n\n <div className={`${CLASSNAME}__container`}>\n <div className={`${CLASSNAME}__content`}>\n <div className={`${CLASSNAME}__meta`}>\n {name && (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n <span\n className={`${CLASSNAME}__name`}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {name}\n </span>\n )}\n {headerActions && <span className={`${CLASSNAME}__header-actions`}>{headerActions}</span>}\n </div>\n\n <div className={`${CLASSNAME}__text`}>{text}</div>\n {date &&\n (fullDate ? (\n <Tooltip label={fullDate} placement=\"top\">\n <span className={`${CLASSNAME}__date`}>{date}</span>\n </Tooltip>\n ) : (\n <span className={`${CLASSNAME}__date`}>{date}</span>\n ))}\n </div>\n {hasActions && <div className={`${CLASSNAME}__actions`}>{actions}</div>}\n </div>\n </div>\n {hasChildren && isOpen && <div className={`${CLASSNAME}__children`}>{children}</div>}\n </div>\n );\n});\nCommentBlock.displayName = COMPONENT_NAME;\nCommentBlock.className = CLASSNAME;\nCommentBlock.defaultProps = DEFAULT_PROPS;\n"],"names":["CommentBlockVariant","indented","linear","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","variant","CommentBlock","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","actions","avatarProps","children","className","date","fullDate","hasActions","headerActions","isOpen","isRelevant","name","onClick","onMouseEnter","onMouseLeave","text","theme","forwardedProps","hasChildren","Children","count","React","createElement","_extends","classNames","handleBasicClasses","hasIndentedChildren","hasLinearChildren","prefix","Avatar","size","Size","m","Tooltip","label","placement","displayName","defaultProps"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"60923026.js","sources":["../../src/utils/disabled/useDisableStateProps.tsx"],"sourcesContent":["import { useDisabledStateContext } from './DisabledStateContext';\n\ntype GenericProps = {\n disabled?: boolean;\n isDisabled?: boolean;\n 'aria-disabled'?: boolean | 'true' | 'false';\n onClick?: any;\n onChange?: any;\n};\n\ninterface Output<TProps extends GenericProps> {\n /** Is disabled or aria-disabled */\n isAnyDisabled?: boolean;\n disabledStateProps: { disabled?: boolean; 'aria-disabled'?: boolean };\n otherProps: TProps & { disabled: never; 'aria-disabled': never; isDisabled: never };\n}\n\n/**\n * Resolve disabled state from props.\n * (handles `disabled`, `isDisabled` and `aria-disabled`)\n *\n * @params component props\n */\nexport function useDisableStateProps<TProps extends GenericProps>(props: TProps): Output<TProps> {\n const { disabled, isDisabled = disabled, 'aria-disabled': ariaDisabled, onClick, onChange, ...otherProps } = props;\n const disabledStateContext = useDisabledStateContext();\n const disabledStateProps = {\n disabled: disabledStateContext?.state === 'disabled' || isDisabled,\n 'aria-disabled': ariaDisabled === true || ariaDisabled === 'true',\n };\n const isAnyDisabled = disabledStateProps['aria-disabled'] || disabledStateProps.disabled;\n if (!isAnyDisabled) {\n (otherProps as any).onClick = onClick;\n (otherProps as any).onChange = onChange;\n }\n return { disabledStateProps, otherProps: otherProps as Output<TProps>['otherProps'], isAnyDisabled };\n}\n"],"names":["useDisableStateProps","props","disabled","isDisabled","ariaDisabled","onClick","onChange","otherProps","disabledStateContext","useDisabledStateContext","disabledStateProps","state","isAnyDisabled"],"mappings":";;AAiBA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,oBAAoBA,CAA8BC,KAAa,EAAkB;EAC7F,MAAM;IAAEC,QAAQ;AAAEC,IAAAA,UAAU,GAAGD,QAAQ;AAAE,IAAA,eAAe,EAAEE,YAAY;IAAEC,OAAO;IAAEC,QAAQ;IAAE,GAAGC,UAAAA;AAAW,GAAC,GAAGN,KAAK,CAAA;AAClH,EAAA,MAAMO,oBAAoB,GAAGC,uBAAuB,EAAE,CAAA;AACtD,EAAA,MAAMC,kBAAkB,GAAG;AACvBR,IAAAA,QAAQ,EAAEM,oBAAoB,EAAEG,KAAK,KAAK,UAAU,IAAIR,UAAU;AAClE,IAAA,eAAe,EAAEC,YAAY,KAAK,IAAI,IAAIA,YAAY,KAAK,MAAA;GAC9D,CAAA;EACD,MAAMQ,aAAa,GAAGF,kBAAkB,CAAC,eAAe,CAAC,IAAIA,kBAAkB,CAACR,QAAQ,CAAA;EACxF,IAAI,CAACU,aAAa,EAAE;IACfL,UAAU,CAASF,OAAO,GAAGA,OAAO,CAAA;IACpCE,UAAU,CAASD,QAAQ,GAAGA,QAAQ,CAAA;AAC3C,GAAA;EACA,OAAO;IAAEI,kBAAkB;AAAEH,IAAAA,UAAU,EAAEA,UAA0C;AAAEK,IAAAA,aAAAA;GAAe,CAAA;AACxG;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"60f8e509.js","sources":["../../../lumx-icons/dist/esm/magnify-minus-outline.js","../../../lumx-icons/dist/esm/magnify-plus-outline.js","../../src/components/image-lightbox/constants.ts","../../src/hooks/useSizeOnWindowResize.ts","../../src/hooks/useImageSize.ts","../../src/utils/object/isEqual.ts","../../src/components/image-lightbox/internal/usePointerZoom.ts","../../src/components/image-lightbox/internal/useAnimateScroll.ts","../../src/components/image-lightbox/internal/ImageSlide.tsx","../../src/components/image-lightbox/internal/ImageSlideshow.tsx","../../src/utils/react/unref.ts","../../src/utils/browser/DOM/startViewTransition.ts","../../src/utils/browser/DOM/findImage.tsx","../../src/components/image-lightbox/useImageLightbox.tsx","../../src/components/image-lightbox/ImageLightbox.tsx"],"sourcesContent":["export const mdiMagnifyMinusOutline = 'M15.5 14h-.79l-.28-.27A6.5 6.5 0 0 0 16 9.5 6.5 6.5 0 0 0 9.5 3 6.5 6.5 0 0 0 3 9.5 6.5 6.5 0 0 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 5 1.5-1.5zm-6 0C7 14 5 12 5 9.5S7 5 9.5 5 14 7 14 9.5 12 14 9.5 14M7 9h5v1H7z';","export const mdiMagnifyPlusOutline = 'm15.5 14 5 5-1.5 1.5-5-5v-.79l-.27-.28A6.5 6.5 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3 6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.57 4.23l.28.27zm-6 0C12 14 14 12 14 9.5S12 5 9.5 5 5 7 5 9.5 7 14 9.5 14m2.5-4h-2v2H9v-2H7V9h2V7h1v2h2z';","import { getRootClassName } from '@lumx/core/js/utils/className';\n\n/**\n * Component display name.\n */\nexport const COMPONENT_NAME = 'ImageLightbox';\n\n/**\n * Component default class name and class prefix.\n */\nexport const CLASSNAME = getRootClassName(COMPONENT_NAME);\n","import React from 'react';\n\nimport throttle from 'lodash/throttle';\nimport { RectSize } from '@lumx/react/utils/type';\n\n/**\n * Observe element size (only works if it's size depends on the window size).\n *\n * (Not using ResizeObserver for better browser backward compat)\n *\n * @param elementRef Element to observe\n * @return the size and a manual update callback\n */\nexport function useSizeOnWindowResize(elementRef: React.RefObject<HTMLElement>): [RectSize | null, () => void] {\n const [size, setSize] = React.useState<null | RectSize>(null);\n const updateSize = React.useMemo(\n () =>\n throttle(() => {\n const newSize = elementRef.current?.getBoundingClientRect();\n if (newSize) setSize(newSize);\n }, 10),\n [elementRef],\n );\n React.useEffect(() => {\n updateSize();\n window.addEventListener('resize', updateSize);\n return () => window.removeEventListener('resize', updateSize);\n }, [updateSize]);\n return [size, updateSize];\n}\n","import React from 'react';\nimport { RectSize } from '@lumx/react/utils/type';\n\n/** Get natural image size after load. */\nexport function useImageSize(imgRef: React.RefObject<HTMLImageElement>, getInitialSize?: () => RectSize | null) {\n const [imageSize, setImageSize] = React.useState<null | RectSize>(getInitialSize || null);\n React.useEffect(() => {\n const { current: img } = imgRef;\n if (!img) {\n return undefined;\n }\n const onLoad = () => setImageSize({ width: img.naturalWidth, height: img.naturalHeight });\n img.addEventListener('load', onLoad);\n return () => img.removeEventListener('load', onLoad);\n }, [imgRef]);\n return imageSize;\n}\n","/** Minimal recursive deep equal of JS values */\nexport function isEqual(obj1: any, obj2: any): boolean {\n if (obj1 === obj2) return true;\n if (typeof obj1 === 'object' && typeof obj2 === 'object') {\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n if (keys1.length !== keys2.length) return false;\n return keys1.every((key1) => isEqual(obj1[key1], obj2[key1]));\n }\n return false;\n}\n","import React from 'react';\nimport type { Point } from '@lumx/react/utils/type';\nimport type { useAnimateScroll } from './useAnimateScroll';\n\n/**\n * Listen to mouse wheel + ctrl and multi-pointer pinch to zoom\n */\nexport function usePointerZoom(\n scrollAreaRef: React.RefObject<HTMLDivElement>,\n onScaleChange: ((value: number) => void) | undefined,\n animateScroll: ReturnType<typeof useAnimateScroll>,\n) {\n const [isPointerZooming, setPointerZooming] = React.useState(false);\n React.useEffect(() => {\n const scrollArea = scrollAreaRef.current as HTMLDivElement;\n if (!scrollArea || !onScaleChange) {\n return undefined;\n }\n\n let animationFrame: number | null;\n let zoomStateTimeoutId: ReturnType<typeof setTimeout> | null;\n\n function updateScaleOnNextFrame(newScale: number, mousePosition: Point): void {\n // Cancel previously scheduled frame\n if (animationFrame) cancelAnimationFrame(animationFrame);\n\n // Cancel previously scheduled zoom state change\n if (zoomStateTimeoutId) clearTimeout(zoomStateTimeoutId);\n\n function nextFrame() {\n setPointerZooming(true);\n onScaleChange?.(newScale);\n\n animationFrame = null;\n // Wait a bit before indicating the pointer zooming is finished\n zoomStateTimeoutId = setTimeout(() => setPointerZooming(false), 100);\n }\n animationFrame = requestAnimationFrame(nextFrame);\n\n // Animate scroll in parallel (centering on the current mouse position)\n animateScroll(mousePosition, {\n width: scrollArea.scrollWidth,\n height: scrollArea.scrollHeight,\n });\n }\n\n function onWheel(event: WheelEvent) {\n if (!event.ctrlKey) {\n return;\n }\n event.preventDefault();\n const newScale = Math.exp(-event.deltaY / 50);\n\n // Update scale on next frame (focused on the mouse position)\n updateScaleOnNextFrame(newScale, {\n x: event.clientX,\n y: event.clientY,\n });\n }\n\n const activePointers: Record<PointerEvent['pointerId'], PointerEvent> = {};\n let prevDistance: number | null = null;\n let previousCenterPoint: Point | null = null;\n\n function onPointerDown(event: PointerEvent) {\n activePointers[event.pointerId] = event;\n }\n function onPointerMove(event: PointerEvent) {\n // Update pointer in cache\n if (activePointers[event.pointerId]) {\n activePointers[event.pointerId] = event;\n }\n\n const pointers = Object.values(activePointers);\n\n // Make sure we run computation on one of the pointer in the group\n if (pointers[0]?.pointerId !== event.pointerId) {\n return;\n }\n\n // Centered point between all pointers\n const centerPoint: Point = {\n x: pointers.reduce((x, { clientX }) => x + clientX, 0) / pointers.length,\n y: pointers.reduce((y, { clientY }) => y + clientY, 0) / pointers.length,\n };\n\n // Movement of the center point\n const deltaCenterPoint = previousCenterPoint && {\n left: previousCenterPoint.x - centerPoint.x,\n top: previousCenterPoint.y - centerPoint.y,\n };\n\n // Pan X & Y\n if (deltaCenterPoint) {\n // Apply movement of the center point to the scroll\n scrollArea.scrollBy({\n top: deltaCenterPoint.top / 2,\n left: deltaCenterPoint.left / 2,\n });\n }\n\n // Pinch to zoom\n if (pointers.length === 2) {\n const [pointer1, pointer2] = pointers;\n const distance = Math.hypot(pointer2.clientX - pointer1.clientX, pointer2.clientY - pointer1.clientY);\n\n if (prevDistance && deltaCenterPoint) {\n const delta = prevDistance - distance;\n const absDelta = Math.abs(delta);\n\n // Zoom only if we are \"pinching\" more than we are moving the pointers\n if (absDelta > Math.abs(deltaCenterPoint.left) && absDelta > Math.abs(deltaCenterPoint.top)) {\n // Update scale on next frame (focused on the center point between the two pointers)\n const newScale = Math.exp(-delta / 100);\n updateScaleOnNextFrame(newScale, centerPoint);\n }\n }\n\n prevDistance = distance;\n }\n\n previousCenterPoint = centerPoint;\n }\n function onPointerUp(event: PointerEvent) {\n prevDistance = null;\n previousCenterPoint = null;\n delete activePointers[event.pointerId];\n }\n\n scrollArea.addEventListener('wheel', onWheel, { passive: false });\n const isMultiTouch = navigator.maxTouchPoints >= 2;\n if (isMultiTouch) {\n scrollArea.addEventListener('pointerdown', onPointerDown);\n scrollArea.addEventListener('pointermove', onPointerMove);\n scrollArea.addEventListener('pointerup', onPointerUp);\n }\n return () => {\n scrollArea.removeEventListener('wheel', onWheel);\n if (isMultiTouch) {\n scrollArea.removeEventListener('pointerdown', onPointerDown);\n scrollArea.removeEventListener('pointermove', onPointerMove);\n scrollArea.removeEventListener('pointerup', onPointerUp);\n }\n };\n }, [animateScroll, onScaleChange, scrollAreaRef]);\n\n return isPointerZooming;\n}\n","import React from 'react';\nimport type { Point, RectSize } from '@lumx/react/utils/type';\n\n/** Maintains the scroll position centered relative to the original scroll area's dimensions when the content scales. */\nexport function useAnimateScroll(scrollAreaRef: React.RefObject<HTMLDivElement>) {\n return React.useMemo(() => {\n let animationFrame: number | null = null;\n\n return function animate(centerPoint?: Point, initialScrollAreaSize?: RectSize) {\n const scrollArea = scrollAreaRef.current as HTMLDivElement;\n if (!scrollArea) {\n return;\n }\n\n // Cancel previously running animation\n if (animationFrame) cancelAnimationFrame(animationFrame);\n\n // Center on the given point or else on the scroll area visual center\n const clientHeightRatio = centerPoint?.y ? centerPoint.y / scrollArea.clientHeight : 0.5;\n const clientWidthRatio = centerPoint?.x ? centerPoint.x / scrollArea.clientWidth : 0.5;\n\n const initialScrollHeight = initialScrollAreaSize?.height || scrollArea.scrollHeight;\n const initialScrollWidth = initialScrollAreaSize?.width || scrollArea.scrollWidth;\n\n const heightCenter = scrollArea.scrollTop + scrollArea.clientHeight * clientHeightRatio;\n const heightRatio = heightCenter / initialScrollHeight;\n\n const widthCenter = scrollArea.scrollLeft + scrollArea.clientWidth * clientWidthRatio;\n const widthRatio = widthCenter / initialScrollWidth;\n\n let prevScrollHeight = 0;\n let prevScrollWidth = 0;\n\n function nextFrame() {\n const { scrollHeight, scrollWidth, clientHeight, clientWidth } = scrollArea;\n\n // Scroll area stopped expanding => stop animation\n if (scrollHeight === prevScrollHeight && scrollWidth === prevScrollWidth) {\n animationFrame = null;\n return;\n }\n\n // Compute next scroll position\n const top = heightRatio * scrollHeight - clientHeight * clientHeightRatio;\n const left = widthRatio * scrollWidth - clientWidth * clientWidthRatio;\n\n scrollArea.scrollTo({ top, left });\n prevScrollHeight = scrollHeight;\n prevScrollWidth = scrollWidth;\n animationFrame = requestAnimationFrame(nextFrame);\n }\n animationFrame = requestAnimationFrame(nextFrame);\n };\n }, [scrollAreaRef]);\n}\n","import React from 'react';\n\nimport { SlideshowItem, Thumbnail } from '@lumx/react';\nimport { useMergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { useSizeOnWindowResize } from '@lumx/react/hooks/useSizeOnWindowResize';\nimport { useImageSize } from '@lumx/react/hooks/useImageSize';\nimport { isReducedMotion } from '@lumx/react/utils/browser/isReducedMotion';\nimport { isEqual } from '@lumx/react/utils/object/isEqual';\n\nimport { CLASSNAME } from '../constants';\nimport { usePointerZoom } from './usePointerZoom';\nimport { useAnimateScroll } from './useAnimateScroll';\nimport type { ImageProps } from '../types';\n\nexport interface ImageSlideProps {\n image: ImageProps;\n isActive?: boolean;\n scale?: number;\n onScaleChange?: (value: number) => void;\n}\n\n/** Internal image slide component for ImageLightbox */\nexport const ImageSlide = React.memo((props: ImageSlideProps) => {\n const {\n isActive,\n scale,\n onScaleChange,\n image: { image, imgRef: propImgRef, imgProps, alt, loadingPlaceholderImageRef },\n } = props;\n\n // Get scroll area size\n const scrollAreaRef = React.useRef<HTMLDivElement>(null);\n const [scrollAreaSize, updateSize] = useSizeOnWindowResize(scrollAreaRef);\n React.useEffect(() => {\n // Update size when active\n if (isActive) updateSize();\n }, [isActive, updateSize]);\n\n // Get image size\n const imgRef = React.useRef<HTMLImageElement>(null);\n const imageSize = useImageSize(imgRef, () => {\n const width = Number.parseInt(imgProps?.width as any, 10);\n const height = Number.parseInt(imgProps?.height as any, 10);\n return width && height ? { width, height } : null;\n });\n\n // Calculate new image size with scale\n const scaledImageSize = React.useMemo(() => {\n if (!scrollAreaSize || !imageSize) {\n return null;\n }\n const horizontalScale = scrollAreaSize.width / imageSize.width;\n const verticalScale = scrollAreaSize.height / imageSize.height;\n const baseScale = Math.min(1, Math.min(horizontalScale, verticalScale));\n return {\n width: imageSize.width * baseScale * (scale ?? 1),\n height: imageSize.height * baseScale * (scale ?? 1),\n };\n }, [scrollAreaSize, imageSize, scale]);\n\n // Animate scroll to preserve the center of the current visible window in the scroll area\n const animateScroll = useAnimateScroll(scrollAreaRef);\n\n // Zoom via mouse wheel or multi-touch pinch zoom\n const isPointerZooming = usePointerZoom(scrollAreaRef, onScaleChange, animateScroll);\n\n // Animate scroll on scale change\n React.useLayoutEffect(() => {\n if (scale && !isPointerZooming) {\n animateScroll();\n }\n }, [isPointerZooming, scale, animateScroll]);\n\n const isScrollable =\n scaledImageSize &&\n scrollAreaSize &&\n (scaledImageSize.width > scrollAreaSize.width || scaledImageSize.height > scrollAreaSize.height);\n\n return (\n <SlideshowItem\n ref={scrollAreaRef}\n // Make it accessible to keyboard nav when the zone is scrollable\n tabIndex={isScrollable ? 0 : undefined}\n className={`${CLASSNAME}__image-slide`}\n >\n <Thumbnail\n imgRef={useMergeRefs(imgRef, propImgRef)}\n image={image}\n alt={alt}\n className={`${CLASSNAME}__thumbnail`}\n imgProps={{\n ...imgProps,\n style: {\n ...imgProps?.style,\n ...(scaledImageSize || {\n maxHeight: scrollAreaSize?.height,\n maxWidth: scrollAreaSize?.width,\n }),\n // Only animate when scale is set, and we are not pointer zooming and the user does not prefer reduced motion\n transition: scale && !isPointerZooming && !isReducedMotion() ? 'all 250ms' : undefined,\n },\n }}\n loadingPlaceholderImageRef={loadingPlaceholderImageRef}\n />\n </SlideshowItem>\n );\n}, isEqual);\n","import React from 'react';\n\nimport { mdiMagnifyMinusOutline, mdiMagnifyPlusOutline } from '@lumx/icons';\nimport { FlexBox, IconButton, Slides, SlideshowControls } from '@lumx/react';\nimport { mergeRefs } from '@lumx/react/utils/react/mergeRefs';\n\nimport memoize from 'lodash/memoize';\nimport { ImageCaption } from '../../image-block/ImageCaption';\nimport { CLASSNAME } from '../constants';\nimport type { ImagesProps, InheritedSlideShowProps, ZoomButtonProps } from '../types';\nimport { ImageSlide } from './ImageSlide';\n\nexport interface ImageSlideshowProps extends InheritedSlideShowProps, ZoomButtonProps, ImagesProps {\n currentPaginationItemRef?: React.Ref<HTMLButtonElement>;\n footerRef?: React.Ref<HTMLDivElement>;\n}\n\n/** Internal image slideshow component for ImageLightbox */\nexport const ImageSlideshow: React.FC<ImageSlideshowProps> = ({\n activeImageIndex,\n images,\n slideGroupLabel,\n zoomInButtonProps,\n zoomOutButtonProps,\n slideshowControlsProps,\n currentPaginationItemRef,\n footerRef,\n activeImageRef,\n}) => {\n const {\n activeIndex,\n slideshowId,\n setSlideshow,\n slideshowSlidesId,\n slidesCount,\n onNextClick,\n onPaginationClick,\n onPreviousClick,\n toggleAutoPlay,\n } = SlideshowControls.useSlideshowControls({\n itemsCount: images.length,\n activeIndex: activeImageIndex,\n });\n\n // Image metadata (caption)\n const title = images[activeIndex]?.title;\n const description = images[activeIndex]?.description;\n const tags = images[activeIndex]?.tags;\n const metadata =\n title || description || tags ? (\n <ImageCaption as=\"div\" title={title} description={description} tags={tags} align=\"center\" />\n ) : null;\n\n // Slideshow controls\n const slideShowControls =\n slidesCount > 1 && slideshowControlsProps ? (\n <SlideshowControls\n activeIndex={activeIndex}\n slidesCount={slidesCount}\n onNextClick={onNextClick}\n onPreviousClick={onPreviousClick}\n onPaginationClick={onPaginationClick}\n {...slideshowControlsProps}\n paginationItemProps={(index: number) => {\n const props = slideshowControlsProps?.paginationItemProps?.(index) || {};\n return {\n ...props,\n ref: mergeRefs(\n (props as any)?.ref,\n // Focus the active pagination item once on mount\n activeIndex === index ? currentPaginationItemRef : undefined,\n ),\n };\n }}\n />\n ) : null;\n\n // Zoom controls\n const [scale, setScale] = React.useState<number | undefined>(undefined);\n const zoomEnabled = zoomInButtonProps && zoomOutButtonProps;\n const onScaleChange = React.useMemo(() => {\n if (!zoomEnabled) return undefined;\n return (newScale: number) => {\n setScale((prevScale = 1) => Math.max(1, newScale * prevScale));\n };\n }, [zoomEnabled]);\n const zoomIn = React.useCallback(() => onScaleChange?.(1.5), [onScaleChange]);\n const zoomOut = React.useCallback(() => onScaleChange?.(0.5), [onScaleChange]);\n React.useEffect(() => {\n // Reset scale on slide change\n if (typeof activeIndex === 'number') setScale(undefined);\n }, [activeIndex]);\n const zoomControls = zoomEnabled && (\n <>\n <IconButton {...zoomInButtonProps} emphasis=\"low\" icon={mdiMagnifyPlusOutline} onClick={zoomIn} />\n <IconButton\n {...zoomOutButtonProps}\n emphasis=\"low\"\n isDisabled={!scale || scale <= 1}\n icon={mdiMagnifyMinusOutline}\n onClick={zoomOut}\n />\n </>\n );\n\n const getImgRef = React.useMemo(\n () =>\n memoize(\n (index: number, isActive: boolean) => {\n return mergeRefs(images?.[index].imgRef, isActive ? activeImageRef : undefined);\n },\n // memoize based on both arguments\n (...args) => args.join(),\n ),\n [images, activeImageRef],\n );\n\n return (\n <>\n <Slides\n activeIndex={activeIndex}\n slideGroupLabel={slideGroupLabel}\n fillHeight\n id={slideshowId}\n ref={setSlideshow}\n slidesId={slideshowSlidesId}\n toggleAutoPlay={toggleAutoPlay}\n >\n {images.map(({ image, imgRef, ...imageProps }, index) => {\n const isActive = index === activeIndex;\n return (\n <ImageSlide\n isActive={isActive}\n key={image}\n image={{\n ...imageProps,\n image,\n imgRef: getImgRef(index, isActive),\n }}\n scale={isActive ? scale : undefined}\n onScaleChange={onScaleChange}\n />\n );\n })}\n </Slides>\n {(metadata || slideShowControls || zoomControls) && (\n <FlexBox\n ref={footerRef}\n className={`${CLASSNAME}__footer`}\n orientation=\"vertical\"\n vAlign=\"center\"\n gap=\"big\"\n >\n {metadata}\n\n <FlexBox className={`${CLASSNAME}__footer-actions`} orientation=\"horizontal\" gap=\"regular\">\n {slideShowControls}\n {zoomControls}\n </FlexBox>\n </FlexBox>\n )}\n </>\n );\n};\n","import { MaybeElementOrRef } from '@lumx/react/utils/type';\n\n/** Unref a react ref or element */\nexport function unref(maybeElement: MaybeElementOrRef<HTMLElement>) {\n if (maybeElement instanceof HTMLElement) return maybeElement;\n return maybeElement?.current;\n}\n","import ReactDOM from 'react-dom';\n\nimport { MaybeElementOrRef } from '@lumx/react/utils/type';\n\nimport { unref } from '../../react/unref';\nimport { isReducedMotion } from '../isReducedMotion';\n\nfunction setupViewTransitionName(elementRef: MaybeElementOrRef<HTMLElement>, name: string) {\n let originalName: string | null = null;\n return {\n set() {\n const element = unref(elementRef);\n if (!element) return;\n originalName = element.style.viewTransitionName;\n element.style.viewTransitionName = name;\n },\n unset() {\n const element = unref(elementRef);\n if (!element || originalName === null) return;\n element.style.viewTransitionName = originalName;\n },\n };\n}\n\n/**\n * Wrapper around the `document.startViewTransition` handling browser incompatibilities, react DOM flush and\n * user preference.\n *\n * @param changes callback containing the changes to apply within the view transition.\n * @param setViewTransitionName set the `viewTransitionName` style on a `source` & `target` to morph these elements.\n */\nexport async function startViewTransition({\n changes,\n viewTransitionName,\n}: {\n changes: () => void;\n viewTransitionName: {\n source: MaybeElementOrRef<HTMLElement>;\n target: MaybeElementOrRef<HTMLElement>;\n name: string;\n };\n}) {\n const start = (document as any)?.startViewTransition?.bind(document);\n const prefersReducedMotion = isReducedMotion();\n const { flushSync } = ReactDOM as any;\n if (prefersReducedMotion || !start || !flushSync || !viewTransitionName?.source || !viewTransitionName?.target) {\n // Skip, apply changes without a transition\n changes();\n return;\n }\n\n // Setup set/unset transition name on source & target\n const sourceTransitionName = setupViewTransitionName(viewTransitionName.source, viewTransitionName.name);\n const targetTransitionName = setupViewTransitionName(viewTransitionName.target, viewTransitionName.name);\n\n sourceTransitionName.set();\n\n // Start view transition, apply changes & flush to DOM\n await start(() => {\n sourceTransitionName.unset();\n\n flushSync(changes);\n\n targetTransitionName.set();\n }).updateCallbackDone;\n\n targetTransitionName.unset();\n}\n","/** Find image in element including the element */\nexport const findImage = (element: HTMLElement | null): HTMLImageElement | null =>\n element?.matches('img') ? (element as HTMLImageElement) : element?.querySelector('img') || null;\n","import React from 'react';\n\nimport memoize from 'lodash/memoize';\n\nimport { startViewTransition } from '@lumx/react/utils/browser/DOM/startViewTransition';\nimport { findImage } from '@lumx/react/utils/browser/DOM/findImage';\n\nimport type { ImageLightboxProps } from './types';\nimport { CLASSNAME } from './constants';\n\n/** Subset of the ImageLightboxProps managed by the useImageLightbox hook */\ntype ManagedProps = Pick<\n ImageLightboxProps,\n 'isOpen' | 'images' | 'parentElement' | 'activeImageRef' | 'onClose' | 'activeImageIndex'\n>;\n\nconst EMPTY_PROPS: ManagedProps = { isOpen: false, images: [], parentElement: React.createRef() };\n\ntype TriggerOptions = Pick<ImageLightboxProps, 'activeImageIndex'>;\n\n/**\n * Set up an ImageLightbox with images and triggers.\n *\n * - Associate a trigger with the lightbox to properly focus the trigger on close\n * - Associate a trigger with an image to display on open\n * - Automatically provide a view transition between an image trigger and the displayed image on open & close\n *\n * @param props Images to display in the image lightbox\n */\nexport function useImageLightbox<P extends Partial<ImageLightboxProps>>(\n props: P,\n): {\n /**\n * Generates trigger props\n * @param index Provide an index to choose which image to display when the image lightbox opens.\n * */\n getTriggerProps: (options?: TriggerOptions) => { onClick: React.MouseEventHandler; ref: React.Ref<any> };\n /** Props to forward to the ImageLightbox */\n imageLightboxProps: ManagedProps & P;\n} {\n const propsRef = React.useRef(props);\n\n React.useEffect(() => {\n propsRef.current = props;\n }, [props]);\n\n // Keep reference for each image elements\n const imageRefsRef = React.useRef<Array<React.RefObject<HTMLImageElement>>>([]);\n\n const currentImageRef = React.useRef<HTMLImageElement>(null);\n const [imageLightboxProps, setImageLightboxProps] = React.useState(\n () => ({ ...EMPTY_PROPS, ...props }) as ManagedProps & P,\n );\n\n const getTriggerProps = React.useMemo(() => {\n const triggerImageRefs: Record<number, React.RefObject<HTMLImageElement>> = {};\n\n async function close() {\n const currentImage = currentImageRef.current;\n if (!currentImage) {\n return;\n }\n const currentIndex = imageRefsRef.current.findIndex(\n (imageRef) => imageRef.current === currentImage,\n ) as number;\n\n await startViewTransition({\n changes() {\n // Close lightbox\n setImageLightboxProps((prevProps) => ({ ...prevProps, isOpen: false }));\n },\n // Morph from the image in lightbox to the image in trigger\n viewTransitionName: {\n source: currentImageRef,\n target: triggerImageRefs[currentIndex],\n name: CLASSNAME,\n },\n });\n }\n\n async function open(triggerElement: HTMLElement, { activeImageIndex }: TriggerOptions = {}) {\n // If we find an image inside the trigger, animate it in transition with the opening image\n const triggerImage = triggerImageRefs[activeImageIndex as any]?.current || findImage(triggerElement);\n\n // Inject refs to improve transition and loading style\n const images = propsRef.current?.images?.map((image, idx) => {\n // Get or create image reference\n let imgRef = imageRefsRef.current[idx];\n if (!imgRef) {\n imgRef = React.createRef();\n imageRefsRef.current[idx] = imgRef;\n }\n\n // Try to use the trigger image as the loading placeholder\n const loadingPlaceholderImageRef =\n triggerImage && idx === activeImageIndex ? { current: triggerImage } : undefined;\n\n return { loadingPlaceholderImageRef, ...image, imgRef };\n });\n\n await startViewTransition({\n changes: () => {\n // Open lightbox with setup props\n setImageLightboxProps((prevProps) => ({\n ...prevProps,\n ...propsRef.current,\n activeImageRef: currentImageRef,\n parentElement: { current: triggerElement },\n isOpen: true,\n onClose: () => {\n close();\n propsRef.current?.onClose?.();\n },\n images,\n activeImageIndex: activeImageIndex || 0,\n }));\n },\n // Morph from the image in trigger to the image in lightbox\n viewTransitionName: {\n source: triggerImage,\n target: currentImageRef,\n name: CLASSNAME,\n },\n });\n }\n\n return memoize((options?: TriggerOptions) => ({\n ref(element: HTMLElement | null) {\n // Track trigger image ref if any\n if (options?.activeImageIndex !== undefined && element) {\n triggerImageRefs[options.activeImageIndex] = { current: findImage(element) };\n }\n },\n onClick(e: React.MouseEvent) {\n open(e.target as HTMLElement, options);\n },\n }));\n }, []);\n\n return { getTriggerProps, imageLightboxProps };\n}\n","import React from 'react';\n\nimport classNames from 'classnames';\n\nimport { Lightbox, ThemeProvider } from '@lumx/react';\nimport { ClickAwayProvider } from '@lumx/react/utils';\nimport { useMergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { ImageSlideshow } from './internal/ImageSlideshow';\nimport { useImageLightbox } from './useImageLightbox';\nimport type { ImageLightboxProps } from './types';\nimport { CLASSNAME, COMPONENT_NAME } from './constants';\n\nconst Inner = forwardRef<ImageLightboxProps, HTMLDivElement>((props, ref) => {\n const {\n className,\n isOpen,\n closeButtonProps,\n onClose,\n parentElement,\n activeImageIndex,\n slideshowControlsProps,\n slideGroupLabel,\n images,\n zoomOutButtonProps,\n zoomInButtonProps,\n activeImageRef: propImageRef,\n ...forwardedProps\n } = props;\n const currentPaginationItemRef = React.useRef(null);\n const footerRef = React.useRef(null);\n const imageRef = React.useRef(null);\n const clickAwayChildrenRefs = React.useRef([imageRef, footerRef]);\n\n const onClickAway = React.useCallback(\n (evt: Event) => {\n const targetElement = evt.target;\n if (!(targetElement instanceof HTMLElement) || !(evt instanceof MouseEvent)) return;\n\n // Skip click away if clicking on the scrollbar\n if (targetElement.clientWidth < evt.clientX || targetElement.clientHeight < evt.clientY) return;\n\n onClose?.();\n },\n [onClose],\n );\n\n return (\n <Lightbox\n ref={ref}\n className={classNames(className, CLASSNAME)}\n parentElement={parentElement}\n isOpen={isOpen}\n onClose={onClose}\n closeButtonProps={closeButtonProps}\n focusElement={currentPaginationItemRef}\n {...forwardedProps}\n // Disable the close on click away as we want a custom one here\n preventAutoClose\n >\n <ClickAwayProvider childrenRefs={clickAwayChildrenRefs} callback={onClickAway}>\n <ThemeProvider value=\"dark\">\n <ImageSlideshow\n activeImageIndex={activeImageIndex}\n slideGroupLabel={slideGroupLabel}\n slideshowControlsProps={slideshowControlsProps}\n images={images}\n zoomInButtonProps={zoomInButtonProps}\n zoomOutButtonProps={zoomOutButtonProps}\n footerRef={footerRef}\n activeImageRef={useMergeRefs(propImageRef, imageRef)}\n currentPaginationItemRef={currentPaginationItemRef}\n />\n </ThemeProvider>\n </ClickAwayProvider>\n </Lightbox>\n );\n});\nInner.displayName = COMPONENT_NAME;\nInner.className = CLASSNAME;\n\n/**\n * ImageLightbox component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const ImageLightbox = Object.assign(Inner, { useImageLightbox });\n"],"names":["mdiMagnifyMinusOutline","mdiMagnifyPlusOutline","COMPONENT_NAME","CLASSNAME","getRootClassName","useSizeOnWindowResize","elementRef","size","setSize","React","useState","updateSize","useMemo","throttle","newSize","current","getBoundingClientRect","useEffect","window","addEventListener","removeEventListener","useImageSize","imgRef","getInitialSize","imageSize","setImageSize","img","undefined","onLoad","width","naturalWidth","height","naturalHeight","isEqual","obj1","obj2","keys1","Object","keys","keys2","length","every","key1","usePointerZoom","scrollAreaRef","onScaleChange","animateScroll","isPointerZooming","setPointerZooming","scrollArea","animationFrame","zoomStateTimeoutId","updateScaleOnNextFrame","newScale","mousePosition","cancelAnimationFrame","clearTimeout","nextFrame","setTimeout","requestAnimationFrame","scrollWidth","scrollHeight","onWheel","event","ctrlKey","preventDefault","Math","exp","deltaY","x","clientX","y","clientY","activePointers","prevDistance","previousCenterPoint","onPointerDown","pointerId","onPointerMove","pointers","values","centerPoint","reduce","deltaCenterPoint","left","top","scrollBy","pointer1","pointer2","distance","hypot","delta","absDelta","abs","onPointerUp","passive","isMultiTouch","navigator","maxTouchPoints","useAnimateScroll","animate","initialScrollAreaSize","clientHeightRatio","clientHeight","clientWidthRatio","clientWidth","initialScrollHeight","initialScrollWidth","heightCenter","scrollTop","heightRatio","widthCenter","scrollLeft","widthRatio","prevScrollHeight","prevScrollWidth","scrollTo","ImageSlide","memo","props","isActive","scale","image","propImgRef","imgProps","alt","loadingPlaceholderImageRef","useRef","scrollAreaSize","Number","parseInt","scaledImageSize","horizontalScale","verticalScale","baseScale","min","useLayoutEffect","isScrollable","createElement","SlideshowItem","ref","tabIndex","className","Thumbnail","useMergeRefs","style","maxHeight","maxWidth","transition","isReducedMotion","ImageSlideshow","activeImageIndex","images","slideGroupLabel","zoomInButtonProps","zoomOutButtonProps","slideshowControlsProps","currentPaginationItemRef","footerRef","activeImageRef","activeIndex","slideshowId","setSlideshow","slideshowSlidesId","slidesCount","onNextClick","onPaginationClick","onPreviousClick","toggleAutoPlay","SlideshowControls","useSlideshowControls","itemsCount","title","description","tags","metadata","ImageCaption","as","align","slideShowControls","_extends","paginationItemProps","index","mergeRefs","setScale","zoomEnabled","prevScale","max","zoomIn","useCallback","zoomOut","zoomControls","Fragment","IconButton","emphasis","icon","onClick","isDisabled","getImgRef","memoize","args","join","Slides","fillHeight","id","slidesId","map","imageProps","key","FlexBox","orientation","vAlign","gap","unref","maybeElement","HTMLElement","setupViewTransitionName","name","originalName","set","element","viewTransitionName","unset","startViewTransition","changes","start","document","bind","prefersReducedMotion","flushSync","ReactDOM","source","target","sourceTransitionName","targetTransitionName","updateCallbackDone","findImage","matches","querySelector","EMPTY_PROPS","isOpen","parentElement","createRef","useImageLightbox","propsRef","imageRefsRef","currentImageRef","imageLightboxProps","setImageLightboxProps","getTriggerProps","triggerImageRefs","close","currentImage","currentIndex","findIndex","imageRef","prevProps","open","triggerElement","triggerImage","idx","onClose","options","e","Inner","forwardRef","closeButtonProps","propImageRef","forwardedProps","clickAwayChildrenRefs","onClickAway","evt","targetElement","MouseEvent","Lightbox","classNames","focusElement","preventAutoClose","ClickAwayProvider","childrenRefs","callback","ThemeProvider","value","displayName","ImageLightbox","assign"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"64046d7a.js","sources":["../../src/components/flex-box/FlexBox.tsx"],"sourcesContent":["import { ReactNode } from 'react';\n\nimport classNames from 'classnames';\nimport castArray from 'lodash/castArray';\n\nimport { Alignment, Orientation, HorizontalAlignment, Size, VerticalAlignment } from '@lumx/core/js/constants';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nexport type MarginAutoAlignment = Extract<Alignment, 'top' | 'bottom' | 'right' | 'left'>;\nexport type GapSize = Extract<Size, 'tiny' | 'regular' | 'medium' | 'big' | 'huge'>;\ntype SpaceAlignment = Extract<Alignment, 'space-between' | 'space-evenly' | 'space-around'>;\nexport type FlexVerticalAlignment = VerticalAlignment | SpaceAlignment;\nexport type FlexHorizontalAlignment = HorizontalAlignment | SpaceAlignment;\n\n/**\n * Defines the props of the component.\n */\nexport interface FlexBoxProps extends GenericProps {\n /** Customize the root element. */\n as?: React.ElementType;\n /** Children elements. */\n children?: ReactNode;\n /** Whether the \"content filling space\" is enabled or not. */\n fillSpace?: boolean;\n /** Gap space between flexbox items. */\n gap?: GapSize;\n /** Flex horizontal alignment. */\n hAlign?: FlexVerticalAlignment;\n /** Whether the \"auto margin\" is enabled all around or not. */\n marginAuto?: MarginAutoAlignment | MarginAutoAlignment[];\n /** Whether the \"content shrink\" is disabled or not. */\n noShrink?: boolean;\n /** Flex direction. */\n orientation?: Orientation;\n /** Flex vertical alignment. */\n vAlign?: FlexHorizontalAlignment;\n /** Whether the \"flex wrap\" is enabled or not. */\n wrap?: boolean;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'FlexBox';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * FlexBox component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const FlexBox = forwardRef<FlexBoxProps, HTMLDivElement>((props, ref) => {\n const {\n as: Component = 'div',\n children,\n className,\n fillSpace,\n gap,\n hAlign,\n marginAuto,\n noShrink,\n orientation,\n vAlign,\n wrap,\n ...forwardedProps\n } = props;\n\n return (\n <Component\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n orientation: orientation ?? (wrap || hAlign || vAlign ? Orientation.horizontal : null),\n vAlign,\n hAlign,\n gap,\n }),\n wrap && `${CLASSNAME}--wrap`,\n fillSpace && `${CLASSNAME}--fill-space`,\n noShrink && `${CLASSNAME}--no-shrink`,\n marginAuto && castArray(marginAuto).map((align) => `${CLASSNAME}--margin-auto-${align}`),\n )}\n >\n {children}\n </Component>\n );\n});\nFlexBox.displayName = COMPONENT_NAME;\nFlexBox.className = CLASSNAME;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","FlexBox","forwardRef","props","ref","as","Component","children","className","fillSpace","gap","hAlign","marginAuto","noShrink","orientation","vAlign","wrap","forwardedProps","React","createElement","_extends","classNames","handleBasicClasses","prefix","Orientation","horizontal","castArray","map","align","displayName"],"mappings":";;;;AAgBA;AACA;AACA;;AAwBA;AACA;AACA;AACA,MAAMA,cAAc,GAAG,SAAS,CAAA;;AAEhC;AACA;AACA;AACA,MAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAc,CAAC,CAAA;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,OAAO,GAAGC,UAAU,CAA+B,CAACC,KAAK,EAAEC,GAAG,KAAK;EAC5E,MAAM;IACFC,EAAE,EAAEC,SAAS,GAAG,KAAK;IACrBC,QAAQ;IACRC,SAAS;IACTC,SAAS;IACTC,GAAG;IACHC,MAAM;IACNC,UAAU;IACVC,QAAQ;IACRC,WAAW;IACXC,MAAM;IACNC,IAAI;IACJ,GAAGC,cAAAA;AACP,GAAC,GAAGd,KAAK,CAAA;AAET,EAAA,oBACIe,KAAA,CAAAC,aAAA,CAACb,SAAS,EAAAc,QAAA,CAAA;AACNhB,IAAAA,GAAG,EAAEA,GAAAA;AAAI,GAAA,EACLa,cAAc,EAAA;AAClBT,IAAAA,SAAS,EAAEa,UAAU,CACjBb,SAAS,EACTc,kBAAkB,CAAC;AACfC,MAAAA,MAAM,EAAExB,SAAS;AACjBe,MAAAA,WAAW,EAAEA,WAAW,KAAKE,IAAI,IAAIL,MAAM,IAAII,MAAM,GAAGS,WAAW,CAACC,UAAU,GAAG,IAAI,CAAC;MACtFV,MAAM;MACNJ,MAAM;AACND,MAAAA,GAAAA;AACJ,KAAC,CAAC,EACFM,IAAI,IAAI,CAAA,EAAGjB,SAAS,CAAQ,MAAA,CAAA,EAC5BU,SAAS,IAAI,GAAGV,SAAS,CAAA,YAAA,CAAc,EACvCc,QAAQ,IAAI,CAAGd,EAAAA,SAAS,CAAa,WAAA,CAAA,EACrCa,UAAU,IAAIc,SAAS,CAACd,UAAU,CAAC,CAACe,GAAG,CAAEC,KAAK,IAAK,CAAG7B,EAAAA,SAAS,CAAiB6B,cAAAA,EAAAA,KAAK,EAAE,CAC3F,CAAA;AAAE,GAAA,CAAA,EAEDrB,QACM,CAAC,CAAA;AAEpB,CAAC,EAAC;AACFN,OAAO,CAAC4B,WAAW,GAAG/B,cAAc,CAAA;AACpCG,OAAO,CAACO,SAAS,GAAGT,SAAS;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"70cf341b.js","sources":["../../src/components/switch/Switch.tsx"],"sourcesContent":["import { Children, InputHTMLAttributes, SyntheticEvent } from 'react';\n\nimport classNames from 'classnames';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { Alignment, InputHelper, InputLabel, Theme } from '@lumx/react';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { useId } from '@lumx/react/hooks/useId';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { useDisableStateProps } from '@lumx/react/utils/disabled/useDisableStateProps';\nimport { HasAriaDisabled } from '@lumx/react/utils/type/HasAriaDisabled';\n\n/**\n * Defines the props of the component.\n */\nexport interface SwitchProps extends GenericProps, HasTheme, HasAriaDisabled {\n /** Helper text. */\n helper?: string;\n /** Whether it is checked or not. */\n isChecked?: boolean;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Native input name property. */\n name?: string;\n /** Position of the switch relative to the label. */\n position?: Extract<Alignment, 'right' | 'left'>;\n /** Native input value property. */\n value?: string;\n /** On change callback. */\n onChange?(isChecked: boolean, value?: string, name?: string, event?: SyntheticEvent): void;\n /** optional props for input */\n inputProps?: InputHTMLAttributes<HTMLInputElement>;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Switch';\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<SwitchProps> = {\n position: Alignment.left,\n};\n\n/**\n * Switch component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Switch = forwardRef<SwitchProps, HTMLDivElement>((props, ref) => {\n const { isAnyDisabled, disabledStateProps, otherProps } = useDisableStateProps(props);\n const defaultTheme = useTheme() || Theme.light;\n const {\n checked,\n children,\n className,\n helper,\n id,\n isChecked = checked,\n name,\n onChange,\n position = DEFAULT_PROPS.position,\n theme = defaultTheme,\n value,\n inputProps = {},\n ...forwardedProps\n } = otherProps;\n const generatedInputId = useId();\n const inputId = id || generatedInputId;\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(!isChecked, value, name, event);\n }\n };\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n isChecked,\n isDisabled: isAnyDisabled,\n position,\n theme,\n isUnchecked: !isChecked,\n }),\n )}\n >\n <div className={`${CLASSNAME}__input-wrapper`}>\n <input\n type=\"checkbox\"\n role=\"switch\"\n id={inputId}\n className={`${CLASSNAME}__input-native`}\n name={name}\n value={value}\n {...disabledStateProps}\n readOnly={inputProps.readOnly || isAnyDisabled}\n checked={isChecked}\n aria-checked={Boolean(isChecked)}\n onChange={handleChange}\n aria-describedby={helper ? `${inputId}-helper` : undefined}\n {...inputProps}\n />\n\n <div className={`${CLASSNAME}__input-placeholder`}>\n <div className={`${CLASSNAME}__input-background`} />\n <div className={`${CLASSNAME}__input-indicator`} />\n </div>\n </div>\n\n {Children.count(children) > 0 && (\n <div className={`${CLASSNAME}__content`}>\n <InputLabel htmlFor={inputId} theme={theme} className={`${CLASSNAME}__label`}>\n {children}\n </InputLabel>\n {!isEmpty(helper) && (\n <InputHelper id={`${inputId}-helper`} theme={theme} className={`${CLASSNAME}__helper`}>\n {helper}\n </InputHelper>\n )}\n </div>\n )}\n </div>\n );\n});\nSwitch.displayName = COMPONENT_NAME;\nSwitch.className = CLASSNAME;\nSwitch.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","position","Alignment","left","Switch","forwardRef","props","ref","isAnyDisabled","disabledStateProps","otherProps","useDisableStateProps","defaultTheme","useTheme","Theme","light","checked","children","className","helper","id","isChecked","name","onChange","theme","value","inputProps","forwardedProps","generatedInputId","useId","inputId","handleChange","event","React","createElement","_extends","classNames","handleBasicClasses","prefix","isDisabled","isUnchecked","type","role","readOnly","Boolean","undefined","Children","count","InputLabel","htmlFor","isEmpty","InputHelper","displayName","defaultProps"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"714809cc.js","sources":["../../../lumx-icons/dist/esm/image-broken.js","../../src/components/thumbnail/useImageLoad.ts","../../src/components/thumbnail/useFocusPointStyle.tsx","../../src/components/thumbnail/Thumbnail.tsx"],"sourcesContent":["export const mdiImageBroken = 'M19 3a2 2 0 0 1 2 2v6h-2v2h-2v2h-2v2h-2v2h-2v2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zm2 12v4a2 2 0 0 1-2 2h-4v-2h2v-2h2v-2zm-2-6.5a.5.5 0 0 0-.5-.5h-13a.5.5 0 0 0-.5.5v7a.5.5 0 0 0 .5.5H11v-1h2v-2h2v-2h2V9h2z';","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":["mdiImageBroken","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","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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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"72407886.js","sources":["../../src/hooks/useFocus.tsx","../../src/utils/react/skipRender.tsx","../../src/utils/react/OnBeforeUnmount.tsx","../../src/components/popover/useRestoreFocusOnClose.tsx","../../src/components/popover/usePopoverStyle.tsx","../../src/components/popover/Popover.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\n/**\n * Hook focusing an element when defined and `focus` boolean `true`.\n *\n * @param element Element to focus.\n * @param shouldFocus Boolean flag to trigger the focus\n */\nexport function useFocus(element: HTMLElement | null | undefined, shouldFocus = true): void {\n const [wasFocus, setWasFocus] = useState(false);\n useEffect(\n () => {\n if (shouldFocus && wasFocus !== shouldFocus && element) {\n element.focus();\n setWasFocus(shouldFocus);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [element, shouldFocus],\n );\n}\n","import React from 'react';\n\nimport { DOCUMENT } from '@lumx/react/constants';\nimport type { Comp } from '@lumx/react/utils/type';\n/**\n * HOC component wrapping a component to skip render if predicate return falsy\n */\nexport const skipRender = <P, T>(predicate: (props: P) => any, Component: Comp<P, T>) => {\n const Wrapper = React.forwardRef<T, P>((props, ref) => {\n if (!DOCUMENT) {\n // Can't render in SSR.\n return null;\n }\n return <Component ref={ref} {...props} />;\n });\n Wrapper.displayName = Component.displayName;\n return Wrapper;\n};\n","import { useLayoutEffect } from 'react';\n\n/**\n * Helper component using useLayoutEffect to trigger a callback on before unmount.\n *\n * The callback must be wrapped in a React ref to avoid updating the `useLayoutEffect` before the un-mount\n */\nexport const OnBeforeUnmount = ({ callbackRef }: { callbackRef: React.RefObject<(() => void) | undefined> }) => {\n useLayoutEffect(\n () => {\n return () => {\n // On unmount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n callbackRef.current?.();\n };\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n return null;\n};\n","import React from 'react';\nimport { getFirstAndLastFocusable } from '@lumx/react/utils/browser/focus/getFirstAndLastFocusable';\nimport { OnBeforeUnmount } from '@lumx/react/utils/react/OnBeforeUnmount';\nimport type { PopoverProps } from './Popover';\n\n/**\n * Provides an unmount sentinel to inject in the popover to detect when it closes and restore the focus to the\n * anchor if needed.\n */\nexport function useRestoreFocusOnClose(\n {\n focusAnchorOnClose,\n anchorRef,\n parentElement,\n }: Pick<PopoverProps, 'focusAnchorOnClose' | 'anchorRef' | 'parentElement'>,\n popoverElement?: HTMLElement | null,\n) {\n const onBeforeUnmountRef = React.useRef<(() => void) | undefined>();\n\n React.useEffect(() => {\n if (!popoverElement || !focusAnchorOnClose) {\n onBeforeUnmountRef.current = undefined;\n return;\n }\n\n onBeforeUnmountRef.current = () => {\n const isFocusWithin = popoverElement?.contains(document.activeElement);\n if (!isFocusWithin) return;\n\n // On next render\n setTimeout(() => {\n const anchor = anchorRef.current;\n const elementToFocus =\n // Provided parent element\n parentElement?.current ||\n // Or first focusable element in anchor\n (anchor ? getFirstAndLastFocusable(anchor).first : undefined) ||\n // Fallback to anchor\n anchor;\n\n elementToFocus?.focus({ preventScroll: true });\n }, 0);\n };\n }, [anchorRef, focusAnchorOnClose, parentElement, popoverElement]);\n\n return <OnBeforeUnmount callbackRef={onBeforeUnmountRef} />;\n}\n","import { useEffect, useMemo, useState } from 'react';\nimport memoize from 'lodash/memoize';\nimport { detectOverflow } from '@popperjs/core';\n\nimport { DOCUMENT, WINDOW } from '@lumx/react/constants';\nimport { PopoverProps } from '@lumx/react/components/popover/Popover';\nimport { usePopper } from '@lumx/react/hooks/usePopper';\nimport { ARROW_SIZE, FitAnchorWidth, Placement } from './constants';\n\n/**\n * Popper js modifier to fit popover min width to the anchor width.\n */\nconst sameWidth = memoize((anchorWidthOption: FitAnchorWidth) => ({\n name: 'sameWidth',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn({ state }: any) {\n // eslint-disable-next-line no-param-reassign\n state.styles.popper[anchorWidthOption] = `${state.rects.reference.width}px`;\n },\n effect({ state }: any) {\n // eslint-disable-next-line no-param-reassign\n state.elements.popper.style[anchorWidthOption] = `${state.elements.reference.offsetWidth}px`;\n },\n}));\n\n/**\n * Popper js modifier to compute max size of the popover.\n */\nconst maxSize = {\n name: 'maxSize',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['offset', 'preventOverflow', 'flip'],\n fn({ state, name, options }: any) {\n const overflow = detectOverflow(state, options);\n\n const { y = 0, x = 0 } = state.modifiersData.preventOverflow;\n const { width, height } = state.rects.popper;\n\n const [basePlacement] = state.placement.split('-');\n\n const widthProp = basePlacement === 'left' ? 'left' : 'right';\n const heightProp = basePlacement === 'top' ? 'top' : 'bottom';\n // eslint-disable-next-line no-param-reassign\n state.modifiersData[name] = {\n width: width - overflow[widthProp] - x,\n height: height - overflow[heightProp] - y,\n };\n },\n};\n\n/**\n * Popper js modifier to apply the max height.\n */\nconst applyMaxHeight = {\n name: 'applyMaxHeight',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['maxSize'],\n fn({ state }: any) {\n const { height } = state.modifiersData.maxSize;\n // eslint-disable-next-line no-param-reassign\n state.elements.popper.style.maxHeight = `${height - ARROW_SIZE}px`;\n },\n};\n\ntype Options = Pick<\n PopoverProps,\n | 'offset'\n | 'hasArrow'\n | 'fitToAnchorWidth'\n | 'fitWithinViewportHeight'\n | 'boundaryRef'\n | 'anchorRef'\n | 'placement'\n | 'style'\n | 'zIndex'\n>;\n\ninterface Output {\n styles: { arrow?: React.CSSProperties; popover?: React.CSSProperties };\n attributes: any;\n isPositioned: boolean;\n position?: Placement;\n setArrowElement?: React.Ref<HTMLDivElement>;\n setPopperElement?: React.Ref<HTMLDivElement>;\n popperElement: HTMLElement | null;\n}\n\nexport function usePopoverStyle({\n offset,\n hasArrow,\n fitToAnchorWidth,\n fitWithinViewportHeight,\n boundaryRef,\n anchorRef,\n placement,\n style,\n zIndex,\n}: Options): Output {\n const [popperElement, setPopperElement] = useState<null | HTMLElement>(null);\n const [arrowElement, setArrowElement] = useState<null | HTMLElement>(null);\n\n const actualOffset: [number, number] = [offset?.along ?? 0, (offset?.away ?? 0) + (hasArrow ? ARROW_SIZE : 0)];\n const modifiers: any = [\n {\n name: 'offset',\n options: { offset: actualOffset },\n },\n ];\n if (hasArrow && arrowElement) {\n modifiers.push({\n name: 'arrow',\n options: {\n element: arrowElement,\n padding: ARROW_SIZE / 2,\n },\n });\n }\n if (fitToAnchorWidth) {\n const fitWidth = typeof fitToAnchorWidth === 'string' ? fitToAnchorWidth : FitAnchorWidth.MIN_WIDTH;\n modifiers.push(sameWidth(fitWidth));\n }\n if (fitWithinViewportHeight) {\n modifiers.push({ ...maxSize, options: { boundary: boundaryRef?.current } }, applyMaxHeight);\n }\n if (boundaryRef) {\n modifiers.push(\n { name: 'flip', options: { boundary: boundaryRef.current } },\n { name: 'preventOverflow', options: { boundary: boundaryRef.current } },\n );\n }\n\n const { styles, attributes, state, update } = usePopper(anchorRef.current, popperElement, { placement, modifiers });\n\n // Auto update popover\n useEffect(() => {\n const { current: anchorElement } = anchorRef;\n if (!update || !popperElement || !anchorElement || !WINDOW?.ResizeObserver) {\n return undefined;\n }\n let running: ReturnType<typeof setTimeout> | undefined;\n function updateRateLimited() {\n if (running) return;\n update?.();\n running = setTimeout(() => {\n running = undefined;\n }, 100);\n }\n updateRateLimited();\n\n // On anchor or popover resize\n const resizeObserver = new ResizeObserver(updateRateLimited);\n resizeObserver.observe(anchorElement);\n resizeObserver.observe(popperElement);\n return () => {\n resizeObserver.disconnect();\n };\n }, [anchorRef, popperElement, update]);\n\n const position = state?.placement ?? placement;\n\n const popoverStyle = useMemo(() => {\n const newStyles = { ...style, ...styles.popper, zIndex };\n\n if (fitWithinViewportHeight && !newStyles.maxHeight) {\n newStyles.maxHeight = WINDOW?.innerHeight || DOCUMENT?.documentElement.clientHeight;\n }\n\n return newStyles;\n }, [style, styles.popper, zIndex, fitWithinViewportHeight]);\n\n return {\n styles: { arrow: styles.arrow, popover: popoverStyle },\n attributes,\n isPositioned: (state?.rects?.popper?.y ?? -1) >= 0,\n position,\n setArrowElement,\n setPopperElement,\n popperElement,\n };\n}\n","import { ReactNode, RefObject, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { useCallbackOnEscape } from '@lumx/react/hooks/useCallbackOnEscape';\nimport { useFocus } from '@lumx/react/hooks/useFocus';\nimport { ClickAwayProvider } from '@lumx/react/utils/ClickAwayProvider';\nimport { DOCUMENT } from '@lumx/react/constants';\nimport { Comp, GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { useMergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { useFocusTrap } from '@lumx/react/hooks/useFocusTrap';\nimport { skipRender } from '@lumx/react/utils/react/skipRender';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { ThemeProvider } from '@lumx/react/utils/theme/ThemeContext';\nimport { Portal } from '@lumx/react/utils';\nimport { useRestoreFocusOnClose } from './useRestoreFocusOnClose';\nimport { usePopoverStyle } from './usePopoverStyle';\nimport { Elevation, FitAnchorWidth, Offset, Placement, POPOVER_ZINDEX } from './constants';\n\n/**\n * Defines the props of the component.\n */\nexport interface PopoverProps extends GenericProps, HasTheme {\n /** Reference to the DOM element used to set the position of the popover. */\n anchorRef: React.RefObject<HTMLElement>;\n /** Customize the root element. (Must accept ref forwarding and props forwarding!). */\n as?: React.ElementType;\n /** Element which will act as boundary when opening the popover. */\n boundaryRef?: RefObject<HTMLElement>;\n /** Content. */\n children: ReactNode;\n /** Whether a click anywhere out of the popover would close it. */\n closeOnClickAway?: boolean;\n /** Whether an escape key press would close the popover. */\n closeOnEscape?: boolean;\n /** Shadow elevation. */\n elevation?: Elevation;\n /**\n * Manage popover width:\n * - `maxWidth`: popover not bigger than anchor\n * - `minWidth` or `true`: popover not smaller than anchor\n * - `width`: popover equal to the anchor.\n */\n fitToAnchorWidth?: FitAnchorWidth | boolean;\n /** Shrink popover if even after flipping there is not enough space. */\n fitWithinViewportHeight?: boolean;\n /** Element to focus when opening the popover. */\n focusElement?: RefObject<HTMLElement>;\n /** Whether the focus should go back on the anchor when popover closes and focus is within. */\n focusAnchorOnClose?: boolean;\n /** Whether we put an arrow or not. */\n hasArrow?: boolean;\n /** Whether the popover is open or not. */\n isOpen: boolean;\n /** Offset placement relative to anchor. */\n offset?: Offset;\n /** Reference to the parent element that triggered the popover (will get back focus on close or else fallback on the anchor element). */\n parentElement?: RefObject<HTMLElement>;\n /** Placement relative to anchor. */\n placement?: Placement;\n /** Whether the popover should be rendered into a DOM node that exists outside the DOM hierarchy of the parent component. */\n usePortal?: boolean;\n /** The element in which the focus trap should be set. Default to popover. */\n focusTrapZoneElement?: RefObject<HTMLElement>;\n /** Z-axis position. */\n zIndex?: number;\n /** On close callback (on click away or Escape pressed). */\n onClose?(): void;\n /** Whether the popover should trap the focus within itself. Default to false. */\n withFocusTrap?: boolean;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Popover';\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<PopoverProps> = {\n elevation: 3,\n placement: Placement.AUTO,\n focusAnchorOnClose: true,\n usePortal: true,\n zIndex: POPOVER_ZINDEX,\n};\n\n// Inner component (must be wrapped before export)\nconst _InnerPopover = forwardRef<PopoverProps, HTMLDivElement>((props, ref) => {\n const {\n anchorRef,\n as: Component = 'div',\n children,\n className,\n closeOnClickAway,\n closeOnEscape,\n elevation = DEFAULT_PROPS.elevation,\n focusElement,\n hasArrow,\n isOpen,\n onClose,\n parentElement,\n usePortal = DEFAULT_PROPS.usePortal,\n focusAnchorOnClose = DEFAULT_PROPS.focusAnchorOnClose,\n withFocusTrap,\n boundaryRef,\n fitToAnchorWidth,\n fitWithinViewportHeight,\n focusTrapZoneElement,\n offset,\n placement = DEFAULT_PROPS.placement,\n style,\n theme,\n zIndex = DEFAULT_PROPS.zIndex,\n ...forwardedProps\n } = props;\n const popoverRef = useRef<HTMLDivElement>(null);\n\n const { styles, attributes, isPositioned, position, setArrowElement, setPopperElement, popperElement } =\n usePopoverStyle({\n offset,\n hasArrow,\n fitToAnchorWidth,\n fitWithinViewportHeight,\n boundaryRef,\n anchorRef,\n placement,\n style,\n zIndex,\n });\n\n const unmountSentinel = useRestoreFocusOnClose({ focusAnchorOnClose, anchorRef, parentElement }, popperElement);\n const focusZoneElement = focusTrapZoneElement?.current || popoverRef?.current;\n\n useCallbackOnEscape(onClose, isOpen && closeOnEscape);\n\n /** Only set focus within if the focus trap is disabled as they interfere with one another. */\n useFocus(focusElement?.current, !withFocusTrap && isOpen && isPositioned);\n useFocusTrap(withFocusTrap && isOpen && focusZoneElement, focusElement?.current);\n\n const clickAwayRefs = useRef([popoverRef, anchorRef]);\n const mergedRefs = useMergeRefs<HTMLDivElement>(setPopperElement, ref, popoverRef);\n\n return isOpen ? (\n <Portal enabled={usePortal}>\n <Component\n {...forwardedProps}\n ref={mergedRefs}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n theme,\n elevation: Math.min(elevation || 0, 5),\n position,\n isInitializing: !styles.popover?.transform,\n }),\n )}\n style={styles.popover}\n {...attributes.popper}\n >\n {unmountSentinel}\n <ClickAwayProvider callback={closeOnClickAway && onClose} childrenRefs={clickAwayRefs}>\n {hasArrow && (\n <div ref={setArrowElement} className={`${CLASSNAME}__arrow`} style={styles.arrow}>\n <svg viewBox=\"0 0 14 14\" aria-hidden>\n <path d=\"M8 3.49C7.62 2.82 6.66 2.82 6.27 3.48L.04 14 14.04 14 8 3.49Z\" />\n </svg>\n </div>\n )}\n <ThemeProvider value={theme}>{children}</ThemeProvider>\n </ClickAwayProvider>\n </Component>\n </Portal>\n ) : null;\n});\n_InnerPopover.displayName = COMPONENT_NAME;\n\n/**\n * Popover component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Popover: Comp<PopoverProps, HTMLDivElement> = skipRender(\n // Skip render in SSR\n () => Boolean(DOCUMENT),\n _InnerPopover,\n);\nPopover.displayName = COMPONENT_NAME;\nPopover.className = CLASSNAME;\nPopover.defaultProps = DEFAULT_PROPS;\n"],"names":["useFocus","element","shouldFocus","wasFocus","setWasFocus","useState","useEffect","focus","skipRender","predicate","Component","Wrapper","React","forwardRef","props","ref","DOCUMENT","createElement","_extends","displayName","OnBeforeUnmount","callbackRef","useLayoutEffect","current","useRestoreFocusOnClose","focusAnchorOnClose","anchorRef","parentElement","popoverElement","onBeforeUnmountRef","useRef","undefined","isFocusWithin","contains","document","activeElement","setTimeout","anchor","elementToFocus","getFirstAndLastFocusable","first","preventScroll","sameWidth","memoize","anchorWidthOption","name","enabled","phase","requires","fn","state","styles","popper","rects","reference","width","effect","elements","style","offsetWidth","maxSize","requiresIfExists","options","overflow","detectOverflow","y","x","modifiersData","preventOverflow","height","basePlacement","placement","split","widthProp","heightProp","applyMaxHeight","maxHeight","ARROW_SIZE","usePopoverStyle","offset","hasArrow","fitToAnchorWidth","fitWithinViewportHeight","boundaryRef","zIndex","popperElement","setPopperElement","arrowElement","setArrowElement","actualOffset","along","away","modifiers","push","padding","fitWidth","FitAnchorWidth","MIN_WIDTH","boundary","attributes","update","usePopper","anchorElement","WINDOW","ResizeObserver","running","updateRateLimited","resizeObserver","observe","disconnect","position","popoverStyle","useMemo","newStyles","innerHeight","documentElement","clientHeight","arrow","popover","isPositioned","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","elevation","Placement","AUTO","usePortal","POPOVER_ZINDEX","_InnerPopover","as","children","className","closeOnClickAway","closeOnEscape","focusElement","isOpen","onClose","withFocusTrap","focusTrapZoneElement","theme","forwardedProps","popoverRef","unmountSentinel","focusZoneElement","useCallbackOnEscape","useFocusTrap","clickAwayRefs","mergedRefs","useMergeRefs","Portal","classNames","handleBasicClasses","prefix","Math","min","isInitializing","transform","ClickAwayProvider","callback","childrenRefs","viewBox","d","ThemeProvider","value","Popover","Boolean","defaultProps"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"742d4906.js","sources":["../../src/components/lightbox/Lightbox.tsx"],"sourcesContent":["import { RefObject, useRef, useEffect, AriaAttributes } from 'react';\n\nimport classNames from 'classnames';\n\nimport { mdiClose } from '@lumx/icons';\nimport { HeadingLevelProvider, IconButton, IconButtonProps } from '@lumx/react';\nimport { DIALOG_TRANSITION_DURATION, DOCUMENT } from '@lumx/react/constants';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\n\nimport { useFocusTrap } from '@lumx/react/hooks/useFocusTrap';\nimport { useDisableBodyScroll } from '@lumx/react/hooks/useDisableBodyScroll';\nimport { ClickAwayProvider } from '@lumx/react/utils/ClickAwayProvider';\nimport { mergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { useCallbackOnEscape } from '@lumx/react/hooks/useCallbackOnEscape';\nimport { useTransitionVisibility } from '@lumx/react/hooks/useTransitionVisibility';\nimport { ThemeProvider } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { Portal } from '@lumx/react/utils';\n\n/**\n * Defines the props of the component.\n */\nexport interface LightboxProps extends GenericProps, HasTheme, Pick<AriaAttributes, 'aria-label' | 'aria-labelledby'> {\n /** Props to pass to the close button (minus those already set by the Lightbox props). */\n closeButtonProps?: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;\n /** Whether the component is open or not. */\n isOpen?: boolean;\n /** Reference to the element that triggered modal opening to set focus on. */\n parentElement: RefObject<any>;\n /** Reference to the element that should get the focus when the lightbox opens. By default, the close button or the lightbox itself will take focus. */\n focusElement?: RefObject<HTMLElement>;\n /** Whether to keep the dialog open on clickaway or escape press. */\n preventAutoClose?: boolean;\n /** Z-axis position. */\n zIndex?: number;\n /** On close callback. */\n onClose?(): void;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Lightbox';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Lightbox component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Lightbox = forwardRef<LightboxProps, HTMLDivElement>((props, ref) => {\n const {\n 'aria-labelledby': propAriaLabelledBy,\n ariaLabelledBy = propAriaLabelledBy,\n 'aria-label': propAriaLabel,\n ariaLabel = propAriaLabel,\n children,\n className,\n closeButtonProps,\n isOpen,\n onClose,\n parentElement,\n focusElement,\n preventAutoClose,\n theme,\n zIndex,\n ...forwardedProps\n } = props;\n if (!DOCUMENT) {\n // Can't render in SSR.\n return null;\n }\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const childrenRef = useRef<any>(null);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const wrapperRef = useRef<HTMLDivElement>(null);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const closeButtonRef = useRef<HTMLButtonElement>(null);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useDisableBodyScroll(isOpen && wrapperRef.current);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const isVisible = useTransitionVisibility(wrapperRef, !!isOpen, DIALOG_TRANSITION_DURATION);\n\n // Handle focus trap.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useFocusTrap(\n // Focus trap zone\n isOpen && wrapperRef.current,\n // Focus element (fallback on close button and then on the dialog)\n focusElement?.current || closeButtonRef.current || wrapperRef.current,\n );\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const previousOpen = useRef(isOpen);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n if (isOpen !== previousOpen.current) {\n previousOpen.current = isOpen;\n\n // Focus the parent element on close.\n if (!isOpen && parentElement && parentElement.current) {\n parentElement.current.focus();\n }\n }\n }, [isOpen, parentElement]);\n\n // Close lightbox on escape key pressed.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useCallbackOnEscape(onClose);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const clickAwayRefs = useRef([wrapperRef]);\n\n if (!isOpen && !isVisible) return null;\n\n return (\n <Portal>\n <div\n ref={mergeRefs(ref, wrapperRef)}\n {...forwardedProps}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-modal=\"true\"\n role=\"dialog\"\n tabIndex={-1}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n isHidden: !isOpen,\n isShown: isOpen || isVisible,\n theme,\n }),\n )}\n style={{ zIndex }}\n >\n {closeButtonProps && (\n <div className={`${CLASSNAME}__close`}>\n <IconButton\n {...closeButtonProps}\n ref={closeButtonRef}\n emphasis=\"low\"\n hasBackground\n icon={mdiClose}\n theme=\"dark\"\n type=\"button\"\n onClick={onClose}\n />\n </div>\n )}\n <HeadingLevelProvider level={2}>\n <ThemeProvider value={undefined}>\n <ClickAwayProvider callback={!preventAutoClose && onClose} childrenRefs={clickAwayRefs}>\n <div ref={childrenRef} className={`${CLASSNAME}__wrapper`} role=\"presentation\">\n {children}\n </div>\n </ClickAwayProvider>\n </ThemeProvider>\n </HeadingLevelProvider>\n </div>\n </Portal>\n );\n});\nLightbox.displayName = COMPONENT_NAME;\nLightbox.className = CLASSNAME;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","Lightbox","forwardRef","props","ref","propAriaLabelledBy","ariaLabelledBy","propAriaLabel","ariaLabel","children","className","closeButtonProps","isOpen","onClose","parentElement","focusElement","preventAutoClose","theme","zIndex","forwardedProps","DOCUMENT","childrenRef","useRef","wrapperRef","closeButtonRef","useDisableBodyScroll","current","isVisible","useTransitionVisibility","DIALOG_TRANSITION_DURATION","useFocusTrap","previousOpen","useEffect","focus","useCallbackOnEscape","clickAwayRefs","React","createElement","Portal","_extends","mergeRefs","role","tabIndex","classNames","handleBasicClasses","prefix","isHidden","isShown","style","IconButton","emphasis","hasBackground","icon","mdiClose","type","onClick","HeadingLevelProvider","level","ThemeProvider","value","undefined","ClickAwayProvider","callback","childrenRefs","displayName"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"77eb8ef3.js","sources":["../../src/hooks/useFocusWithin.ts","../../src/components/slideshow/Slideshow.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\nexport interface UseFocusWithinOptions {\n /** element to add the focus within to */\n element: HTMLElement | null;\n /** callback to be executed on focus in */\n onFocusIn: (ev: FocusEvent) => void;\n /** callback to be executed on focus out */\n onFocusOut: (ev: FocusEvent) => void;\n}\n\n/**\n * Hook that allows to control when there is a focus event within a given element, meaning\n * that any element within the given target will trigger the focus in and focus out events.\n * @param options - UseFocusWithinOptions\n */\nexport const useFocusWithin = ({ element, onFocusIn, onFocusOut }: UseFocusWithinOptions) => {\n useEffect(() => {\n if (element) {\n element.addEventListener('focusin', onFocusIn);\n\n element.addEventListener('focusout', onFocusOut);\n }\n\n return () => {\n if (element) {\n element.removeEventListener('focusin', onFocusIn);\n\n element.removeEventListener('focusout', onFocusOut);\n }\n };\n }, [onFocusIn, element, onFocusOut]);\n};\n","import React from 'react';\n\nimport { SlideshowControls, SlideshowControlsProps, Theme, Slides, SlidesProps } from '@lumx/react';\nimport { DEFAULT_OPTIONS } from '@lumx/react/hooks/useSlideshowControls';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { useFocusWithin } from '@lumx/react/hooks/useFocusWithin';\nimport { mergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { buildSlideShowGroupId } from './SlideshowItemGroup';\n\n/**\n * Defines the props of the component.\n */\nexport interface SlideshowProps\n extends GenericProps,\n Pick<SlidesProps, 'autoPlay' | 'slidesId' | 'id' | 'theme' | 'fillHeight' | 'groupBy' | 'slideGroupLabel'> {\n /** current slide active */\n activeIndex?: SlidesProps['activeIndex'];\n /** Interval between each slide when automatic rotation is enabled. */\n interval?: number;\n /** Props to pass to the slideshow controls (minus those already set by the Slideshow props). */\n slideshowControlsProps?: Pick<\n SlideshowControlsProps,\n 'nextButtonProps' | 'previousButtonProps' | 'paginationItemProps'\n > &\n Omit<\n SlideshowControlsProps,\n | 'activeIndex'\n | 'onPaginationClick'\n | 'onNextClick'\n | 'onPreviousClick'\n | 'slidesCount'\n | 'parentRef'\n | 'theme'\n >;\n /** Callback when slide changes */\n onChange?(index: number): void;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<SlideshowProps> = DEFAULT_OPTIONS;\n\n/**\n * Slideshow component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Slideshow = forwardRef<SlideshowProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n activeIndex,\n autoPlay = DEFAULT_PROPS.autoPlay,\n children,\n className,\n fillHeight,\n groupBy = DEFAULT_OPTIONS.groupBy,\n interval = DEFAULT_PROPS.interval,\n onChange,\n slideshowControlsProps,\n theme = defaultTheme,\n id,\n slidesId,\n slideGroupLabel,\n ...forwardedProps\n } = props;\n // Number of slideshow items.\n const itemsCount = React.Children.count(children);\n\n const {\n activeIndex: currentIndex,\n slideshowId,\n setSlideshow,\n isAutoPlaying,\n slideshowSlidesId,\n slidesCount,\n onNextClick,\n onPaginationClick,\n onPreviousClick,\n slideshow,\n stopAutoPlay,\n startAutoPlay,\n toggleAutoPlay,\n toggleForcePause,\n } = SlideshowControls.useSlideshowControls({\n activeIndex,\n defaultActiveIndex: DEFAULT_PROPS.activeIndex as number,\n autoPlay: Boolean(autoPlay),\n itemsCount,\n groupBy,\n id,\n interval,\n onChange,\n slidesId,\n });\n\n useFocusWithin({\n element: slideshow,\n onFocusIn: stopAutoPlay,\n onFocusOut: startAutoPlay,\n });\n\n const showControls = slideshowControlsProps && slidesCount > 1;\n\n return (\n <Slides\n activeIndex={currentIndex}\n id={slideshowId}\n className={className}\n theme={theme}\n fillHeight={fillHeight}\n groupBy={groupBy}\n isAutoPlaying={isAutoPlaying}\n autoPlay={autoPlay}\n slidesId={slideshowSlidesId}\n toggleAutoPlay={toggleAutoPlay}\n ref={mergeRefs(ref, setSlideshow)}\n hasControls={showControls}\n slideGroupLabel={slideGroupLabel}\n afterSlides={\n slideshowControlsProps && slidesCount > 1 ? (\n <div className={`${Slides.className}__controls`}>\n <SlideshowControls\n {...slideshowControlsProps}\n activeIndex={currentIndex}\n onPaginationClick={onPaginationClick}\n onNextClick={onNextClick}\n onPreviousClick={onPreviousClick}\n slidesCount={slidesCount}\n parentRef={slideshow}\n theme={theme}\n isAutoPlaying={isAutoPlaying}\n nextButtonProps={{\n 'aria-controls': slideshowSlidesId,\n ...slideshowControlsProps.nextButtonProps,\n }}\n previousButtonProps={{\n 'aria-controls': slideshowSlidesId,\n ...slideshowControlsProps.previousButtonProps,\n }}\n playButtonProps={\n autoPlay\n ? {\n 'aria-controls': slideshowSlidesId,\n onClick: toggleForcePause,\n ...slideshowControlsProps.playButtonProps,\n }\n : undefined\n }\n paginationItemProps={(index) => ({\n 'aria-controls': buildSlideShowGroupId(slideshowSlidesId, index),\n ...slideshowControlsProps.paginationItemProps?.(index),\n })}\n />\n </div>\n ) : undefined\n }\n {...forwardedProps}\n >\n {children}\n </Slides>\n );\n});\n\nSlideshow.displayName = 'Slideshow';\nSlideshow.defaultProps = DEFAULT_PROPS;\n"],"names":["useFocusWithin","element","onFocusIn","onFocusOut","useEffect","addEventListener","removeEventListener","DEFAULT_PROPS","DEFAULT_OPTIONS","Slideshow","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","activeIndex","autoPlay","children","className","fillHeight","groupBy","interval","onChange","slideshowControlsProps","theme","id","slidesId","slideGroupLabel","forwardedProps","itemsCount","React","Children","count","currentIndex","slideshowId","setSlideshow","isAutoPlaying","slideshowSlidesId","slidesCount","onNextClick","onPaginationClick","onPreviousClick","slideshow","stopAutoPlay","startAutoPlay","toggleAutoPlay","toggleForcePause","SlideshowControls","useSlideshowControls","defaultActiveIndex","Boolean","showControls","createElement","Slides","_extends","mergeRefs","hasControls","afterSlides","parentRef","nextButtonProps","previousButtonProps","playButtonProps","onClick","undefined","paginationItemProps","index","buildSlideShowGroupId","displayName","defaultProps"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"78df9309.js","sources":["../../src/utils/type/isComponent.ts"],"sourcesContent":["import type { ReactElement, ReactNode } from 'react';\nimport get from 'lodash/get';\nimport type { Comp } from './Comp';\n\n/**\n * Properties of a component to use to determine it's name.\n * In the order of preference.\n */\nconst NAME_PROPERTIES: string[] = [\n 'type',\n 'type.displayName',\n 'displayName',\n 'name',\n 'type.name',\n 'props.mdxType',\n '_reactInternalFiber.elementType.name',\n];\n/**\n * Create a predicate function that checks if a ReactNode is a react element from the given component.\n *\n * @param component React function component or the component name\n * @return predicate returning true if value is instance of the component\n */\nexport const isComponent =\n <C>(component: Comp<C, any> | string) =>\n (instance: ReactNode): instance is ReactElement => {\n const componentName = typeof component === 'string' ? component : component.displayName;\n\n return (\n !!get(instance, '$$typeof') &&\n NAME_PROPERTIES.some((nameProperty: string): boolean => get(instance, nameProperty) === componentName)\n );\n };\n"],"names":["NAME_PROPERTIES","isComponent","component","instance","componentName","displayName","get","some","nameProperty"],"mappings":";;AAIA;AACA;AACA;AACA;AACA,MAAMA,eAAyB,GAAG,CAC9B,MAAM,EACN,kBAAkB,EAClB,aAAa,EACb,MAAM,EACN,WAAW,EACX,eAAe,EACf,sCAAsC,CACzC,CAAA;AACD;AACA;AACA;AACA;AACA;AACA;MACaC,WAAW,GAChBC,SAAgC,IACnCC,QAAmB,IAA+B;EAC/C,MAAMC,aAAa,GAAG,OAAOF,SAAS,KAAK,QAAQ,GAAGA,SAAS,GAAGA,SAAS,CAACG,WAAW,CAAA;EAEvF,OACI,CAAC,CAACC,GAAG,CAACH,QAAQ,EAAE,UAAU,CAAC,IAC3BH,eAAe,CAACO,IAAI,CAAEC,YAAoB,IAAcF,GAAG,CAACH,QAAQ,EAAEK,YAAY,CAAC,KAAKJ,aAAa,CAAC,CAAA;AAE9G;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"7b214f74.js","sources":["../../src/components/button/IconButton.tsx"],"sourcesContent":["import { Emphasis, Icon, Size, Theme, ThemeProvider, Tooltip, TooltipProps } from '@lumx/react';\nimport { BaseButtonProps, ButtonRoot } from '@lumx/react/components/button/ButtonRoot';\nimport { getRootClassName } from '@lumx/core/js/utils/className';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nexport interface IconButtonProps extends BaseButtonProps {\n /**\n * Icon (SVG path).\n * If `image` is also set, `image` will be used instead.\n */\n icon?: string;\n /**\n * Image (image url).\n * Has priority over `icon`.\n */\n image?: string;\n /**\n * Label text (required for a11y purpose).\n * If you really don't want an aria-label, you can set an empty label (this is not recommended).\n */\n label: string;\n /**\n * Props to pass to the tooltip.\n * If undefined or if tooltipProps.label is undefined, the label prop will be used as tooltip label.\n * */\n tooltipProps?: Partial<TooltipProps>;\n /** Whether the tooltip should be hidden or not. */\n hideTooltip?: boolean;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'IconButton';\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<IconButtonProps> = {\n emphasis: Emphasis.high,\n size: Size.m,\n};\n\n/**\n * IconButton component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const IconButton = forwardRef<IconButtonProps, HTMLButtonElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n emphasis = DEFAULT_PROPS.emphasis,\n image,\n icon,\n label,\n size = DEFAULT_PROPS.size,\n theme = defaultTheme,\n tooltipProps,\n hideTooltip,\n ...forwardedProps\n } = props;\n\n return (\n <Tooltip label={hideTooltip ? '' : label} {...tooltipProps}>\n <ButtonRoot ref={ref} {...{ emphasis, size, theme, ...forwardedProps }} aria-label={label} variant=\"icon\">\n {image ? (\n <img\n // no need to set alt as an aria-label is already set on the button\n alt=\"\"\n src={image}\n />\n ) : (\n <ThemeProvider value={undefined}>\n <Icon icon={icon as string} />\n </ThemeProvider>\n )}\n </ButtonRoot>\n </Tooltip>\n );\n});\nIconButton.displayName = COMPONENT_NAME;\nIconButton.className = CLASSNAME;\nIconButton.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","emphasis","Emphasis","high","size","Size","m","IconButton","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","image","icon","label","theme","tooltipProps","hideTooltip","forwardedProps","React","createElement","Tooltip","_extends","ButtonRoot","variant","alt","src","ThemeProvider","value","undefined","Icon","displayName","className","defaultProps"],"mappings":";;;;;;AA+BA;AACA;AACA;AACA,MAAMA,cAAc,GAAG,YAAY,CAAA;;AAEnC;AACA;AACA;AACA,MAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAc,CAAC,CAAA;;AAElD;AACA;AACA;AACA,MAAMG,aAAuC,GAAG;EAC5CC,QAAQ,EAAEC,QAAQ,CAACC,IAAI;EACvBC,IAAI,EAAEC,IAAI,CAACC,CAAAA;AACf,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,UAAU,GAAGC,UAAU,CAAqC,CAACC,KAAK,EAAEC,GAAG,KAAK;EACrF,MAAMC,YAAY,GAAGC,QAAQ,EAAE,IAAIC,KAAK,CAACC,KAAK,CAAA;EAC9C,MAAM;IACFb,QAAQ,GAAGD,aAAa,CAACC,QAAQ;IACjCc,KAAK;IACLC,IAAI;IACJC,KAAK;IACLb,IAAI,GAAGJ,aAAa,CAACI,IAAI;AACzBc,IAAAA,KAAK,GAAGP,YAAY;IACpBQ,YAAY;IACZC,WAAW;IACX,GAAGC,cAAAA;AACP,GAAC,GAAGZ,KAAK,CAAA;AAET,EAAA,oBACIa,KAAA,CAAAC,aAAA,CAACC,OAAO,EAAAC,QAAA,CAAA;AAACR,IAAAA,KAAK,EAAEG,WAAW,GAAG,EAAE,GAAGH,KAAAA;GAAWE,EAAAA,YAAY,gBACtDG,KAAA,CAAAC,aAAA,CAACG,UAAU,EAAAD,QAAA,CAAA;AAACf,IAAAA,GAAG,EAAEA,GAAI;IAAOT,QAAQ;IAAEG,IAAI;AAAEc,IAAAA,KAAAA;AAAK,GAAA,EAAKG,cAAc,EAAA;AAAI,IAAA,YAAA,EAAYJ,KAAM;AAACU,IAAAA,OAAO,EAAC,MAAA;AAAM,GAAA,CAAA,EACpGZ,KAAK,gBACFO,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACI;AACAK,IAAAA,GAAG,EAAC,EAAE;AACNC,IAAAA,GAAG,EAAEd,KAAAA;AAAM,GACd,CAAC,gBAEFO,KAAA,CAAAC,aAAA,CAACO,aAAa,EAAA;AAACC,IAAAA,KAAK,EAAEC,SAAAA;AAAU,GAAA,eAC5BV,KAAA,CAAAC,aAAA,CAACU,IAAI,EAAA;AAACjB,IAAAA,IAAI,EAAEA,IAAAA;GAAiB,CAClB,CAEX,CACP,CAAC,CAAA;AAElB,CAAC,EAAC;AACFT,UAAU,CAAC2B,WAAW,GAAGrC,cAAc,CAAA;AACvCU,UAAU,CAAC4B,SAAS,GAAGrC,SAAS,CAAA;AAChCS,UAAU,CAAC6B,YAAY,GAAGpC,aAAa;;;;"}
@@ -1,9 +0,0 @@
1
- /** Resolve color & color variant from a `ColorWithVariants` and optionally a `ColorVariant`. */
2
- function resolveColorWithVariants(colorWithVariants, colorVariant) {
3
- if (!colorWithVariants) return [undefined, colorVariant];
4
- const [color, baseColorVariant] = colorWithVariants.split('-');
5
- return [color, colorVariant || baseColorVariant];
6
- }
7
-
8
- export { resolveColorWithVariants as r };
9
- //# sourceMappingURL=7b221b05.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"7b221b05.js","sources":["../../../lumx-core/src/js/utils/className/resolveColorWithVariants.ts"],"sourcesContent":["import { ColorPalette, ColorVariant, ColorWithVariants } from '../../constants';\n\n/** Resolve color & color variant from a `ColorWithVariants` and optionally a `ColorVariant`. */\nexport function resolveColorWithVariants(\n colorWithVariants?: ColorWithVariants,\n colorVariant?: ColorVariant,\n): [color?: ColorPalette, colorVariant?: ColorVariant] {\n if (!colorWithVariants) return [undefined, colorVariant];\n const [color, baseColorVariant] = colorWithVariants.split('-');\n return [color as ColorPalette, (colorVariant || baseColorVariant) as ColorVariant];\n}\n"],"names":["resolveColorWithVariants","colorWithVariants","colorVariant","undefined","color","baseColorVariant","split"],"mappings":"AAEA;AACO,SAASA,wBAAwBA,CACpCC,iBAAqC,EACrCC,YAA2B,EACwB;EACnD,IAAI,CAACD,iBAAiB,EAAE,OAAO,CAACE,SAAS,EAAED,YAAY,CAAC,CAAA;EACxD,MAAM,CAACE,KAAK,EAAEC,gBAAgB,CAAC,GAAGJ,iBAAiB,CAACK,KAAK,CAAC,GAAG,CAAC,CAAA;AAC9D,EAAA,OAAO,CAACF,KAAK,EAAmBF,YAAY,IAAIG,gBAAgB,CAAkB,CAAA;AACtF;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"7c4f4643.js","sources":["../../src/utils/react/wrapChildrenIconWithSpaces.tsx"],"sourcesContent":["import React, { Children } from 'react';\nimport { isComponentType } from '@lumx/react/utils/type';\nimport { Icon } from '@lumx/react';\n\n/** Force wrap spaces around icons to make sure they are never stuck against text. */\nexport function wrapChildrenIconWithSpaces(children: React.ReactNode): React.ReactNode {\n if (children === null || children === undefined) return undefined;\n return Children.toArray(children).flatMap((child) => {\n if (isComponentType(Icon)(child)) {\n return [' ', child, ' '];\n }\n if (\n React.isValidElement(child) &&\n child.props &&\n typeof child.props === 'object' &&\n 'children' in child.props\n ) {\n return React.cloneElement(child, undefined, wrapChildrenIconWithSpaces(child.props.children));\n }\n return child;\n });\n}\n"],"names":["wrapChildrenIconWithSpaces","children","undefined","Children","toArray","flatMap","child","isComponentType","Icon","React","isValidElement","props","cloneElement"],"mappings":";;;;AAIA;AACO,SAASA,0BAA0BA,CAACC,QAAyB,EAAmB;EACnF,IAAIA,QAAQ,KAAK,IAAI,IAAIA,QAAQ,KAAKC,SAAS,EAAE,OAAOA,SAAS,CAAA;EACjE,OAAOC,QAAQ,CAACC,OAAO,CAACH,QAAQ,CAAC,CAACI,OAAO,CAAEC,KAAK,IAAK;AACjD,IAAA,IAAIC,eAAe,CAACC,IAAI,CAAC,CAACF,KAAK,CAAC,EAAE;AAC9B,MAAA,OAAO,CAAC,GAAG,EAAEA,KAAK,EAAE,GAAG,CAAC,CAAA;AAC5B,KAAA;IACA,iBACIG,cAAK,CAACC,cAAc,CAACJ,KAAK,CAAC,IAC3BA,KAAK,CAACK,KAAK,IACX,OAAOL,KAAK,CAACK,KAAK,KAAK,QAAQ,IAC/B,UAAU,IAAIL,KAAK,CAACK,KAAK,EAC3B;AACE,MAAA,oBAAOF,cAAK,CAACG,YAAY,CAACN,KAAK,EAAEJ,SAAS,EAAEF,0BAA0B,CAACM,KAAK,CAACK,KAAK,CAACV,QAAQ,CAAC,CAAC,CAAA;AACjG,KAAA;AACA,IAAA,OAAOK,KAAK,CAAA;AAChB,GAAC,CAAC,CAAA;AACN;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"7daf0f24.js","sources":["../../src/hooks/useRovingTabIndex.tsx"],"sourcesContent":["import { RefObject, useEffect } from 'react';\n\ninterface UseRovingTabIndexOptions {\n parentRef: RefObject<HTMLElement>;\n elementSelector: string;\n keepTabIndex?: boolean;\n /** Action to trigger when an element is focused using roving tab index */\n onElementFocus?: (element: HTMLElement) => void;\n /** List of values to be used as extra dependencies of the useEffect */\n extraDependencies?: any[];\n}\n\nexport const useRovingTabIndex = ({\n parentRef,\n elementSelector,\n keepTabIndex,\n onElementFocus,\n extraDependencies = [],\n}: UseRovingTabIndexOptions): void => {\n useEffect(\n () => {\n const parent = parentRef?.current;\n if (!parent) {\n return undefined;\n }\n\n const elements = parent.querySelectorAll(elementSelector) as NodeListOf<HTMLElement>;\n const initialFocusableElement = parent?.querySelector(`${elementSelector}[tabindex=\"0\"]`);\n\n const handleKeyDown = (index: number) => (evt: KeyboardEvent) => {\n let newTabFocus = index;\n if (!(evt.key === 'ArrowRight' || evt.key === 'ArrowLeft')) {\n return;\n }\n\n if (evt.key === 'ArrowRight') {\n // Move right\n newTabFocus += 1;\n // If we're at the end, go to the start\n if (newTabFocus >= elements.length) {\n newTabFocus = 0;\n }\n } else if (evt.key === 'ArrowLeft') {\n // Move left\n newTabFocus -= 1;\n if (newTabFocus < 0) {\n // If we're at the start, move to the end\n newTabFocus = elements.length - 1;\n }\n }\n const newElement = elements[newTabFocus];\n newElement?.focus();\n\n // When an element is focused using roving tab index, trigger the onElementFocus callback\n if (newElement && onElementFocus) {\n onElementFocus(newElement);\n }\n\n if (keepTabIndex) {\n (evt.currentTarget as HTMLElement).setAttribute('tabindex', '-1');\n newElement?.setAttribute('tabindex', '0');\n }\n };\n\n if (elements?.length > 0) {\n elements.forEach((el, key) => {\n // if no element has tabindex set to 0, set the first element as focusable\n if (!initialFocusableElement && key === 0) {\n el.setAttribute('tabindex', '0');\n // set all other to -1\n } else if (initialFocusableElement !== el) {\n el.setAttribute('tabindex', '-1');\n }\n // add event listener\n el.addEventListener('keydown', handleKeyDown(key) as EventListener);\n });\n }\n\n // Cleanup listeners\n return () => {\n if (elements?.length > 0) {\n elements.forEach((el, key) => {\n el.removeEventListener('keydown', handleKeyDown(key) as EventListener);\n });\n }\n };\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [parentRef, ...extraDependencies],\n );\n};\n"],"names":["useRovingTabIndex","parentRef","elementSelector","keepTabIndex","onElementFocus","extraDependencies","useEffect","parent","current","undefined","elements","querySelectorAll","initialFocusableElement","querySelector","handleKeyDown","index","evt","newTabFocus","key","length","newElement","focus","currentTarget","setAttribute","forEach","el","addEventListener","removeEventListener"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"803945f7.js","sources":["../../src/components/image-block/ImageCaption.tsx"],"sourcesContent":["import { CSSProperties, ReactNode } from 'react';\n\nimport { FlexBox, HorizontalAlignment, Text, TextProps, useTheme } from '@lumx/react';\nimport { HasPolymorphicAs, HasTheme } from '@lumx/react/utils/type';\nimport classNames from 'classnames';\n\ntype As = 'div' | 'figcaption';\n\ntype ForwardedTextProps = Omit<TextProps, 'as' | 'typography' | 'color' | 'colorVariant'>;\n\nexport type ImageCaptionMetadata = {\n /** Image title to display in the caption. */\n title?: string;\n /** Props to pass to the title. */\n titleProps?: ForwardedTextProps;\n /** Image description. Can be either a string, or sanitized html. */\n description?: string | { __html: string };\n /** Props to pass to the title. */\n descriptionProps?: ForwardedTextProps;\n /** Tag content. */\n tags?: ReactNode;\n /** Caption custom CSS style. */\n captionStyle?: CSSProperties;\n};\n\nexport type ImageCaptionProps<AS extends As = 'figcaption'> = HasTheme &\n HasPolymorphicAs<AS> &\n ImageCaptionMetadata & {\n /** Base className for sub elements */\n baseClassName?: string;\n /** Alignment. */\n align?: HorizontalAlignment;\n /** Truncate text on title & description (no line wrapping). */\n truncate?: TextProps['truncate'];\n };\n\n/** Internal component used to render image captions */\nexport const ImageCaption = <AS extends As>(props: ImageCaptionProps<AS>) => {\n const defaultTheme = useTheme();\n const {\n baseClassName,\n theme = defaultTheme,\n as = 'figcaption',\n title,\n titleProps,\n description,\n descriptionProps,\n tags,\n captionStyle,\n align,\n truncate,\n } = props;\n if (!title && !description && !tags) return null;\n\n const titleColor = { color: theme === 'dark' ? 'light' : 'dark' } as const;\n const baseColor = { color: theme === 'dark' ? 'light' : 'dark', colorVariant: 'L2' } as const;\n\n // Display description as string or HTML\n const descriptionContent =\n typeof description === 'string' ? { children: description } : { dangerouslySetInnerHTML: description };\n\n return (\n <FlexBox\n as={as}\n className={classNames(baseClassName && `${baseClassName}__wrapper`)}\n style={captionStyle}\n orientation=\"vertical\"\n vAlign={align}\n hAlign={align === 'center' ? align : undefined}\n gap=\"regular\"\n >\n {(title || description) && (\n <Text\n as=\"p\"\n className={classNames(baseClassName && `${baseClassName}__caption`)}\n truncate={truncate}\n {...baseColor}\n >\n {title && (\n <Text\n {...titleProps}\n as=\"span\"\n className={classNames(titleProps?.className, baseClassName && `${baseClassName}__title`)}\n typography=\"subtitle1\"\n {...titleColor}\n >\n {title}\n </Text>\n )}{' '}\n {description && (\n <Text\n {...descriptionProps}\n as=\"span\"\n className={classNames(\n descriptionProps?.className,\n baseClassName && `${baseClassName}__description`,\n )}\n typography=\"body1\"\n {...descriptionContent}\n />\n )}\n </Text>\n )}\n {tags && (\n <FlexBox\n className={classNames(baseClassName && `${baseClassName}__tags`)}\n orientation=\"horizontal\"\n vAlign={align}\n >\n {tags}\n </FlexBox>\n )}\n </FlexBox>\n );\n};\n"],"names":["ImageCaption","props","defaultTheme","useTheme","baseClassName","theme","as","title","titleProps","description","descriptionProps","tags","captionStyle","align","truncate","titleColor","color","baseColor","colorVariant","descriptionContent","children","dangerouslySetInnerHTML","React","createElement","FlexBox","className","classNames","style","orientation","vAlign","hAlign","undefined","gap","Text","_extends","typography"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"80e5c950.js","sources":["../../src/components/badge/Badge.tsx","../../src/components/badge/BadgeWrapper.tsx"],"sourcesContent":["import { ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { ColorPalette } from '@lumx/react';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } 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 BadgeProps extends GenericProps {\n /** Badge content. */\n children?: ReactNode;\n /** Color variant. */\n color?: ColorPalette;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Badge';\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<BadgeProps> = {\n color: ColorPalette.primary,\n};\n\n/**\n * Badge component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Badge = forwardRef<BadgeProps, HTMLDivElement>((props, ref) => {\n const { children, className, color = DEFAULT_PROPS.color, ...forwardedProps } = props;\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, color }))}\n >\n {children}\n </div>\n );\n});\nBadge.displayName = COMPONENT_NAME;\nBadge.className = CLASSNAME;\nBadge.defaultProps = DEFAULT_PROPS;\n","import { ReactElement, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { getRootClassName } from '@lumx/core/js/utils/className';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nexport interface BadgeWrapperProps extends GenericProps {\n /** Badge. */\n badge: ReactElement;\n /** Node to display the badge on */\n children: ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'BadgeWrapper';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\nexport const BadgeWrapper = forwardRef<BadgeWrapperProps, HTMLDivElement>((props, ref) => {\n const { badge, children, className, ...forwardedProps } = props;\n\n return (\n <div ref={ref} {...forwardedProps} className={classNames(className, CLASSNAME)}>\n {children}\n {badge && <div className={`${CLASSNAME}__badge`}>{badge}</div>}\n </div>\n );\n});\nBadgeWrapper.displayName = 'BadgeWrapper';\nBadgeWrapper.className = CLASSNAME;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","color","ColorPalette","primary","Badge","forwardRef","props","ref","children","className","forwardedProps","React","createElement","_extends","classNames","handleBasicClasses","prefix","displayName","defaultProps","BadgeWrapper","badge"],"mappings":";;;AASA;AACA;AACA;;AAQA;AACA;AACA;AACA,MAAMA,gBAAc,GAAG,OAAO,CAAA;;AAE9B;AACA;AACA;AACA,MAAMC,WAAS,GAAGC,gBAAgB,CAACF,gBAAc,CAAC,CAAA;;AAElD;AACA;AACA;AACA,MAAMG,aAAkC,GAAG;EACvCC,KAAK,EAAEC,YAAY,CAACC,OAAAA;AACxB,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,KAAK,GAAGC,UAAU,CAA6B,CAACC,KAAK,EAAEC,GAAG,KAAK;EACxE,MAAM;IAAEC,QAAQ;IAAEC,SAAS;IAAER,KAAK,GAAGD,aAAa,CAACC,KAAK;IAAE,GAAGS,cAAAA;AAAe,GAAC,GAAGJ,KAAK,CAAA;AACrF,EAAA,oBACIK,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAAC,QAAA,CAAA;AACIN,IAAAA,GAAG,EAAEA,GAAAA;AAAI,GAAA,EACLG,cAAc,EAAA;AAClBD,IAAAA,SAAS,EAAEK,UAAU,CAACL,SAAS,EAAEM,kBAAkB,CAAC;AAAEC,MAAAA,MAAM,EAAElB,WAAS;AAAEG,MAAAA,KAAAA;AAAM,KAAC,CAAC,CAAA;AAAE,GAAA,CAAA,EAElFO,QACA,CAAC,CAAA;AAEd,CAAC,EAAC;AACFJ,KAAK,CAACa,WAAW,GAAGpB,gBAAc,CAAA;AAClCO,KAAK,CAACK,SAAS,GAAGX,WAAS,CAAA;AAC3BM,KAAK,CAACc,YAAY,GAAGlB,aAAa;;AC1ClC;AACA;AACA;AACA,MAAMH,cAAc,GAAG,cAAc,CAAA;;AAErC;AACA;AACA;AACA,MAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAc,CAAC,CAAA;AAE3C,MAAMsB,YAAY,GAAGd,UAAU,CAAoC,CAACC,KAAK,EAAEC,GAAG,KAAK;EACtF,MAAM;IAAEa,KAAK;IAAEZ,QAAQ;IAAEC,SAAS;IAAE,GAAGC,cAAAA;AAAe,GAAC,GAAGJ,KAAK,CAAA;AAE/D,EAAA,oBACIK,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAAC,QAAA,CAAA;AAAKN,IAAAA,GAAG,EAAEA,GAAAA;AAAI,GAAA,EAAKG,cAAc,EAAA;AAAED,IAAAA,SAAS,EAAEK,UAAU,CAACL,SAAS,EAAEX,SAAS,CAAA;AAAE,GAAA,CAAA,EAC1EU,QAAQ,EACRY,KAAK,iBAAIT,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;IAAKH,SAAS,EAAE,GAAGX,SAAS,CAAA,OAAA,CAAA;GAAYsB,EAAAA,KAAW,CAC5D,CAAC,CAAA;AAEd,CAAC,EAAC;AACFD,YAAY,CAACF,WAAW,GAAG,cAAc,CAAA;AACzCE,YAAY,CAACV,SAAS,GAAGX,SAAS;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"825ac334.js","sources":["../../src/components/tabs/state.ts"],"sourcesContent":["import { Dispatch, createContext, useCallback, useContext, useEffect, useMemo } from 'react';\nimport { useId } from '@lumx/react/hooks/useId';\n\ntype TabType = 'tab' | 'tabPanel';\n\nexport interface State {\n isLazy: boolean;\n shouldActivateOnFocus: boolean;\n activeTabIndex: number;\n ids: Record<TabType, string[]>;\n}\n\nexport const INIT_STATE: State = {\n isLazy: true,\n shouldActivateOnFocus: false,\n activeTabIndex: 0,\n ids: { tab: [], tabPanel: [] },\n};\n\nexport type Action =\n | { type: 'update'; payload: Partial<State> }\n | { type: 'setActiveTabIndex'; payload: number }\n | { type: 'register'; payload: { type: TabType; id: string } }\n | { type: 'unregister'; payload: { type: TabType; id: string } };\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case 'update':\n return { ...state, ...action.payload };\n case 'setActiveTabIndex': {\n if (state.activeTabIndex === action.payload) {\n return state;\n }\n // Change active tab index.\n return { ...state, activeTabIndex: action.payload };\n }\n case 'register': {\n const { type, id } = action.payload;\n // Append tab/tabPanel id in state.\n return { ...state, ids: { ...state.ids, [type]: [...state.ids[type], id] } };\n }\n case 'unregister': {\n const { type, id } = action.payload;\n const index = state.ids[type].indexOf(id);\n if (index === -1) return state;\n // Remove tab & tab panel at index.\n const tabIds = [...state.ids.tab];\n tabIds.splice(index, 1);\n const tabPanelIds = [...state.ids.tabPanel];\n tabPanelIds.splice(index, 1);\n return {\n ...state,\n ids: { tab: tabIds, tabPanel: tabPanelIds },\n };\n }\n default:\n return state;\n }\n};\n\nexport const TabProviderContext = createContext<[State, Dispatch<Action>] | null>(null);\n\nexport type TabState = Pick<Required<State>, 'isLazy' | 'shouldActivateOnFocus'> & {\n isActive: boolean;\n tabId: string;\n tabPanelId: string;\n changeToTab(): void;\n};\n\n/* eslint-disable react-hooks/rules-of-hooks */\nexport const useTabProviderContext = (type: TabType, originalId?: string): undefined | TabState => {\n const context = useContext(TabProviderContext);\n if (!context) {\n return undefined;\n }\n const [state, dispatch] = context;\n\n // Current tab or tab panel id.\n const generatedId = useId();\n const id = originalId || generatedId;\n\n useEffect(\n () => {\n // On mount: register tab or tab panel id.\n dispatch({ type: 'register', payload: { type, id } });\n return () => {\n // On unmount: unregister tab or tab panel id.\n dispatch({ type: 'unregister', payload: { type, id } });\n };\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n\n // Find tab/tabPanel index using it's id.\n const index = useMemo(() => state.ids[type].indexOf(id), [state.ids, type, id]);\n const tabId = useMemo(() => state.ids.tab[index] || '', [state, index]);\n const tabPanelId = useMemo(() => state.ids.tabPanel[index] || '', [state, index]);\n const isActive = useMemo(() => state.activeTabIndex === index, [state, index]);\n const changeToTab = useCallback(() => dispatch({ type: 'setActiveTabIndex', payload: index }), [dispatch, index]);\n return {\n isLazy: state.isLazy,\n shouldActivateOnFocus: state.shouldActivateOnFocus,\n tabId,\n tabPanelId,\n isActive,\n changeToTab,\n };\n};\n\nexport const useTabProviderContextState = (): State | undefined => {\n const context = useContext(TabProviderContext);\n return context?.[0];\n};\n"],"names":["INIT_STATE","isLazy","shouldActivateOnFocus","activeTabIndex","ids","tab","tabPanel","reducer","state","action","type","payload","id","index","indexOf","tabIds","splice","tabPanelIds","TabProviderContext","createContext","useTabProviderContext","originalId","context","useContext","undefined","dispatch","generatedId","useId","useEffect","useMemo","tabId","tabPanelId","isActive","changeToTab","useCallback","useTabProviderContextState"],"mappings":"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"}