@lumx/react 3.20.1-alpha.35 → 3.20.1-alpha.36

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 (590) hide show
  1. package/_internal/035c132d.js +314 -0
  2. package/_internal/0b9c76cb.js +5 -0
  3. package/_internal/0ea95af1.js +819 -0
  4. package/_internal/{c0a6dba6.js → 230173a8.js} +6 -2
  5. package/_internal/{3e2f0517.js → 2a3d237c.js} +1 -2
  6. package/_internal/{a6dc95cd.js → 2c2b6a89.js} +5 -3
  7. package/_internal/{d8ee966d.js → 3181f000.js} +1 -2
  8. package/_internal/{8e8c5ab6.js → 36bd7352.js} +28 -2
  9. package/_internal/3864a6c1.js +436 -0
  10. package/_internal/{11687649.js → 3a1facc0.js} +1 -2
  11. package/_internal/{68f13c1c.js → 49bbeed3.js} +3 -2
  12. package/_internal/{cb19eca6.js → 4daccdd5.js} +1 -2
  13. package/_internal/4f4c0582.js +2169 -0
  14. package/_internal/{3996d544.js → 5cef5e8c.js} +4 -5
  15. package/_internal/{9b0c0489.js → 6a60381c.js} +5 -6
  16. package/_internal/{0350c865.js → 6f084a40.js} +26 -5
  17. package/_internal/{91f36a80.js → 76ddefd4.js} +31 -4
  18. package/_internal/{ebe24fd7.js → 78df9309.js} +1 -2
  19. package/_internal/{0d7cc1e0.js → 7ad474e4.js} +7 -8
  20. package/_internal/{16f5497d.js → 7b293665.js} +3 -4
  21. package/_internal/{bb8088e1.js → 7daf0f24.js} +1 -2
  22. package/_internal/{e0398237.js → 825ac334.js} +2 -3
  23. package/_internal/827b804a.js +5 -0
  24. package/_internal/{bd8b3ec8.js → 8bce732e.js} +1 -2
  25. package/_internal/{841c2303.js → 9d1336a1.js} +1 -2
  26. package/_internal/{f6bc7948.js → a38bdcd0.js} +7 -3
  27. package/_internal/b326655a.js +682 -0
  28. package/_internal/{5a0207d9.js → b83e864b.js} +6 -7
  29. package/_internal/{595d0e66.js → bace1bf1.js} +5 -5
  30. package/_internal/{b125b718.js → c57190eb.js} +21 -6
  31. package/_internal/{c51d37f8.js → components/alert-dialog/index-284fed80.js} +8 -11
  32. package/_internal/components/autocomplete/__mockData__/index-96fc7ea7.js +27 -0
  33. package/_internal/components/autocomplete/index-27a49d5d.js +261 -0
  34. package/_internal/{ffb2f7fa.js → components/avatar/index-b8bc3cae.js} +3 -4
  35. package/_internal/components/badge/index-9880f056.js +81 -0
  36. package/_internal/{bae815e2.js → components/button/index-d919f96d.js} +3 -2
  37. package/_internal/{6b510f5e.js → components/checkbox/index-dd478de9.js} +12 -11
  38. package/_internal/{7d9c0855.js → components/chip/index-7f84cdbd.js} +49 -2
  39. package/_internal/{cc5cac50.js → components/comment-block/index-e942de30.js} +4 -5
  40. package/_internal/components/date-picker/index-a258d3ce.js +596 -0
  41. package/_internal/{cd8457fc.js → components/dialog/index-c7066813.js} +46 -17
  42. package/_internal/{162672de.js → components/divider/index-b6934baf.js} +2 -3
  43. package/_internal/{840e9690.js → components/drag-handle/index-80e5af6c.js} +5 -5
  44. package/_internal/{2d1acaa0.js → components/dropdown/index-cebfc268.js} +47 -8
  45. package/_internal/{a89bf7bc.js → components/expansion-panel/index-9d45a211.js} +8 -10
  46. package/_internal/{fcc7c462.js → components/flag/index-33e9d909.js} +4 -5
  47. package/_internal/{fdebc718.js → components/flex-box/index-0d6b6b43.js} +1 -2
  48. package/_internal/{ac3f7e4d.js → components/generic-block/index-836c4352.js} +11 -6
  49. package/_internal/components/grid/index-8c16a4f1.js +104 -0
  50. package/_internal/{00cc46ee.js → components/grid-column/index-4a2f56bb.js} +1 -2
  51. package/_internal/{bd1cd49f.js → components/heading/index-fd558a9a.js} +5 -6
  52. package/_internal/components/icon/index-e7b9b40e.js +1 -0
  53. package/_internal/{4c891480.js → components/image-block/index-7021c2f1.js} +4 -5
  54. package/_internal/components/image-lightbox/index-27017547.js +759 -0
  55. package/_internal/{2403668c.js → components/inline-list/index-52efec7f.js} +1 -2
  56. package/_internal/{3119c1fe.js → components/input-helper/index-5a837e7c.js} +14 -4
  57. package/_internal/{26a92990.js → components/input-label/index-0113f382.js} +2 -3
  58. package/_internal/{5c4e10a0.js → components/lightbox/index-fad5a9f2.js} +13 -14
  59. package/_internal/{69eb2393.js → components/link/index-008bae4b.js} +5 -6
  60. package/_internal/{9e3b78fa.js → components/link-preview/index-3e9c32f2.js} +4 -5
  61. package/_internal/{4d751800.js → components/list/index-da88c6e9.js} +34 -3
  62. package/_internal/{b9e3e436.js → components/message/index-17b568f2.js} +6 -9
  63. package/_internal/{226a2eac.js → components/mosaic/index-2d40e01c.js} +3 -4
  64. package/_internal/components/navigation/index-dc17c639.js +225 -0
  65. package/_internal/{6893b89e.js → components/notification/index-a1101015.js} +32 -10
  66. package/_internal/components/popover/index-dbca63f1.js +2 -0
  67. package/_internal/{507d9459.js → components/popover-dialog/index-654d2abc.js} +3 -4
  68. package/_internal/{c241db12.js → components/post-block/index-4b6b4dcb.js} +4 -5
  69. package/_internal/components/progress/index-6f578c31.js +182 -0
  70. package/_internal/components/progress-tracker/index-700bc4c2.js +309 -0
  71. package/_internal/{9ae8998a.js → components/radio-button/index-89b725af.js} +53 -21
  72. package/_internal/components/select/index-2755aa32.js +458 -0
  73. package/_internal/{36008a95.js → components/side-navigation/index-0bbe1fdd.js} +48 -13
  74. package/_internal/components/skeleton/index-b2f8501c.js +166 -0
  75. package/_internal/{62c6c615.js → components/slider/index-4f9b891b.js} +42 -11
  76. package/_internal/{e5657997.js → components/slideshow/index-d4604589.js} +31 -11
  77. package/_internal/{851a3109.js → components/switch/index-58fe0f0c.js} +6 -7
  78. package/_internal/components/table/index-d541aa88.js +297 -0
  79. package/_internal/components/tabs/index-af1538d6.js +298 -0
  80. package/_internal/components/text/index-5bfc6d5e.js +1 -0
  81. package/_internal/{41a8b20f.js → components/text-field/index-47c98d09.js} +11 -13
  82. package/_internal/{58418448.js → components/thumbnail/index-71545d95.js} +1 -1
  83. package/_internal/{a1974f13.js → components/toolbar/index-7041a5a6.js} +1 -2
  84. package/_internal/components/tooltip/index-8bb97e60.js +327 -0
  85. package/_internal/{15fb66ce.js → components/uploader/index-8f6f55de.js} +7 -8
  86. package/_internal/{82159c03.js → components/user-block/index-70d4ce8f.js} +4 -5
  87. package/_internal/{6af61e2f.js → d0e3f49e.js} +2 -3
  88. package/_internal/{e47dacb8.js → de24f857.js} +1 -2
  89. package/_internal/{111e65e5.js → e806b848.js} +1 -2
  90. package/_internal/{203b01d8.js → e913a3af.js} +35 -6
  91. package/_internal/{536517c5.js → ea04260d.js} +1 -2
  92. package/_internal/{ad7c38b0.js → eaf6c45a.js} +1 -2
  93. package/_internal/ebdcb0c7.js +60 -0
  94. package/_internal/{6f37d603.js → ef5d1aac.js} +1 -2
  95. package/_internal/{27df0cb6.js → f0d7d6ea.js} +1 -2
  96. package/_internal/{739f2f15.js → utils/ClickAwayProvider/index-1234ce76.js} +36 -3
  97. package/_internal/utils/MaterialThemeSwitcher/index-8d22de5a.js +48 -0
  98. package/_internal/{38ac8c66.js → utils/Portal/index-6e0a7404.js} +14 -3
  99. package/_internal/{ef982c3d.js → utils/disabled/index-075b99c3.js} +3 -3
  100. package/_internal/utils/type/index-ea9fc197.js +2 -0
  101. package/index.js +64 -96
  102. package/package.json +3 -3
  103. package/utils/index.js +3 -5
  104. package/_internal/00560d40.js +0 -11
  105. package/_internal/00560d40.js.map +0 -1
  106. package/_internal/00cc46ee.js.map +0 -1
  107. package/_internal/0350c865.js.map +0 -1
  108. package/_internal/063618dc.js +0 -21
  109. package/_internal/063618dc.js.map +0 -1
  110. package/_internal/07f6dc7c.js +0 -16
  111. package/_internal/07f6dc7c.js.map +0 -1
  112. package/_internal/0846b7f3.js +0 -4
  113. package/_internal/0846b7f3.js.map +0 -1
  114. package/_internal/08948b47.js +0 -109
  115. package/_internal/08948b47.js.map +0 -1
  116. package/_internal/08b0de35.js +0 -14
  117. package/_internal/08b0de35.js.map +0 -1
  118. package/_internal/094c811d.js +0 -24
  119. package/_internal/094c811d.js.map +0 -1
  120. package/_internal/09d97180.js +0 -18
  121. package/_internal/09d97180.js.map +0 -1
  122. package/_internal/0a2c57a2.js +0 -9
  123. package/_internal/0a2c57a2.js.map +0 -1
  124. package/_internal/0a7f4911.js +0 -64
  125. package/_internal/0a7f4911.js.map +0 -1
  126. package/_internal/0aa9027f.js +0 -10
  127. package/_internal/0aa9027f.js.map +0 -1
  128. package/_internal/0c58c8e2.js +0 -59
  129. package/_internal/0c58c8e2.js.map +0 -1
  130. package/_internal/0d7cc1e0.js.map +0 -1
  131. package/_internal/0db022d6.js +0 -58
  132. package/_internal/0db022d6.js.map +0 -1
  133. package/_internal/0e16222d.js +0 -9
  134. package/_internal/0e16222d.js.map +0 -1
  135. package/_internal/0f849025.js +0 -4
  136. package/_internal/0f849025.js.map +0 -1
  137. package/_internal/0fe87dc7.js +0 -72
  138. package/_internal/0fe87dc7.js.map +0 -1
  139. package/_internal/1060c47e.js +0 -4
  140. package/_internal/1060c47e.js.map +0 -1
  141. package/_internal/111e65e5.js.map +0 -1
  142. package/_internal/11687649.js.map +0 -1
  143. package/_internal/14390eeb.js +0 -7
  144. package/_internal/14390eeb.js.map +0 -1
  145. package/_internal/145228a7.js +0 -47
  146. package/_internal/145228a7.js.map +0 -1
  147. package/_internal/15fb66ce.js.map +0 -1
  148. package/_internal/160cf9fe.js +0 -24
  149. package/_internal/160cf9fe.js.map +0 -1
  150. package/_internal/1616343a.js +0 -37
  151. package/_internal/1616343a.js.map +0 -1
  152. package/_internal/162672de.js.map +0 -1
  153. package/_internal/168f211f.js +0 -17
  154. package/_internal/168f211f.js.map +0 -1
  155. package/_internal/16f5497d.js.map +0 -1
  156. package/_internal/179a2989.js +0 -129
  157. package/_internal/179a2989.js.map +0 -1
  158. package/_internal/185778b8.js +0 -4
  159. package/_internal/185778b8.js.map +0 -1
  160. package/_internal/1afd2506.js +0 -60
  161. package/_internal/1afd2506.js.map +0 -1
  162. package/_internal/1c1cdfa2.js +0 -159
  163. package/_internal/1c1cdfa2.js.map +0 -1
  164. package/_internal/1c3b349b.js +0 -4
  165. package/_internal/1c3b349b.js.map +0 -1
  166. package/_internal/1d7267a1.js +0 -173
  167. package/_internal/1d7267a1.js.map +0 -1
  168. package/_internal/1df25415.js +0 -53
  169. package/_internal/1df25415.js.map +0 -1
  170. package/_internal/1ee5415f.js +0 -27
  171. package/_internal/1ee5415f.js.map +0 -1
  172. package/_internal/1ff933af.js +0 -5
  173. package/_internal/1ff933af.js.map +0 -1
  174. package/_internal/200c2ce1.js +0 -17
  175. package/_internal/200c2ce1.js.map +0 -1
  176. package/_internal/203b01d8.js.map +0 -1
  177. package/_internal/2040beb8.js +0 -169
  178. package/_internal/2040beb8.js.map +0 -1
  179. package/_internal/20f07616.js +0 -14
  180. package/_internal/20f07616.js.map +0 -1
  181. package/_internal/215781b4.js +0 -6
  182. package/_internal/215781b4.js.map +0 -1
  183. package/_internal/226a2eac.js.map +0 -1
  184. package/_internal/2291b633.js +0 -52
  185. package/_internal/2291b633.js.map +0 -1
  186. package/_internal/2403668c.js.map +0 -1
  187. package/_internal/24b48881.js +0 -133
  188. package/_internal/24b48881.js.map +0 -1
  189. package/_internal/2517d1d6.js +0 -9
  190. package/_internal/2517d1d6.js.map +0 -1
  191. package/_internal/256f8eff.js +0 -4
  192. package/_internal/256f8eff.js.map +0 -1
  193. package/_internal/26a92990.js.map +0 -1
  194. package/_internal/27a93417.js +0 -223
  195. package/_internal/27a93417.js.map +0 -1
  196. package/_internal/27df0cb6.js.map +0 -1
  197. package/_internal/28f344bd.js +0 -52
  198. package/_internal/28f344bd.js.map +0 -1
  199. package/_internal/2c5a950d.js +0 -55
  200. package/_internal/2c5a950d.js.map +0 -1
  201. package/_internal/2cdd9ec6.js +0 -16
  202. package/_internal/2cdd9ec6.js.map +0 -1
  203. package/_internal/2cfeae78.js +0 -150
  204. package/_internal/2cfeae78.js.map +0 -1
  205. package/_internal/2d1acaa0.js.map +0 -1
  206. package/_internal/2d69d0f5.js +0 -4
  207. package/_internal/2d69d0f5.js.map +0 -1
  208. package/_internal/2dcfa1df.js +0 -18
  209. package/_internal/2dcfa1df.js.map +0 -1
  210. package/_internal/2dff9a38.js +0 -150
  211. package/_internal/2dff9a38.js.map +0 -1
  212. package/_internal/2e5288d0.js +0 -15
  213. package/_internal/2e5288d0.js.map +0 -1
  214. package/_internal/2fc47dc4.js +0 -133
  215. package/_internal/2fc47dc4.js.map +0 -1
  216. package/_internal/30ecdee3.js +0 -9
  217. package/_internal/30ecdee3.js.map +0 -1
  218. package/_internal/3119c1fe.js.map +0 -1
  219. package/_internal/31b6784b.js +0 -14
  220. package/_internal/31b6784b.js.map +0 -1
  221. package/_internal/341034b4.js +0 -48
  222. package/_internal/341034b4.js.map +0 -1
  223. package/_internal/341ceaa9.js +0 -4
  224. package/_internal/341ceaa9.js.map +0 -1
  225. package/_internal/355f875f.js +0 -9
  226. package/_internal/355f875f.js.map +0 -1
  227. package/_internal/36008a95.js.map +0 -1
  228. package/_internal/378a6fb1.js +0 -126
  229. package/_internal/378a6fb1.js.map +0 -1
  230. package/_internal/37f5ba95.js +0 -12
  231. package/_internal/37f5ba95.js.map +0 -1
  232. package/_internal/38ac8c66.js.map +0 -1
  233. package/_internal/38ce97de.js +0 -29
  234. package/_internal/38ce97de.js.map +0 -1
  235. package/_internal/39534d28.js +0 -30
  236. package/_internal/39534d28.js.map +0 -1
  237. package/_internal/3996d544.js.map +0 -1
  238. package/_internal/3a7fd4bf.js +0 -60
  239. package/_internal/3a7fd4bf.js.map +0 -1
  240. package/_internal/3cfcb0a4.js +0 -122
  241. package/_internal/3cfcb0a4.js.map +0 -1
  242. package/_internal/3d5e1fd0.js +0 -46
  243. package/_internal/3d5e1fd0.js.map +0 -1
  244. package/_internal/3db5a3e4.js +0 -258
  245. package/_internal/3db5a3e4.js.map +0 -1
  246. package/_internal/3e2f0517.js.map +0 -1
  247. package/_internal/3eba1faf.js +0 -87
  248. package/_internal/3eba1faf.js.map +0 -1
  249. package/_internal/3f48eb48.js +0 -73
  250. package/_internal/3f48eb48.js.map +0 -1
  251. package/_internal/3f51175c.js +0 -61
  252. package/_internal/3f51175c.js.map +0 -1
  253. package/_internal/3f54fe9e.js +0 -4
  254. package/_internal/3f54fe9e.js.map +0 -1
  255. package/_internal/41a8b20f.js.map +0 -1
  256. package/_internal/42b26576.js +0 -4
  257. package/_internal/42b26576.js.map +0 -1
  258. package/_internal/45ef51db.js +0 -29
  259. package/_internal/45ef51db.js.map +0 -1
  260. package/_internal/48148353.js +0 -100
  261. package/_internal/48148353.js.map +0 -1
  262. package/_internal/4bb19934.js +0 -4
  263. package/_internal/4bb19934.js.map +0 -1
  264. package/_internal/4c471276.js +0 -75
  265. package/_internal/4c471276.js.map +0 -1
  266. package/_internal/4c891480.js.map +0 -1
  267. package/_internal/4d540596.js +0 -131
  268. package/_internal/4d540596.js.map +0 -1
  269. package/_internal/4d751800.js.map +0 -1
  270. package/_internal/4f71fd36.js +0 -4
  271. package/_internal/4f71fd36.js.map +0 -1
  272. package/_internal/507d9459.js.map +0 -1
  273. package/_internal/5178b7ba.js +0 -10
  274. package/_internal/5178b7ba.js.map +0 -1
  275. package/_internal/51921a16.js +0 -30
  276. package/_internal/51921a16.js.map +0 -1
  277. package/_internal/535aa51f.js +0 -44
  278. package/_internal/535aa51f.js.map +0 -1
  279. package/_internal/536517c5.js.map +0 -1
  280. package/_internal/53b8dea1.js +0 -48
  281. package/_internal/53b8dea1.js.map +0 -1
  282. package/_internal/5745f198.js +0 -12
  283. package/_internal/5745f198.js.map +0 -1
  284. package/_internal/57f2079b.js +0 -10
  285. package/_internal/57f2079b.js.map +0 -1
  286. package/_internal/58418448.js.map +0 -1
  287. package/_internal/595d0e66.js.map +0 -1
  288. package/_internal/5a0207d9.js.map +0 -1
  289. package/_internal/5a6b1aa5.js +0 -139
  290. package/_internal/5a6b1aa5.js.map +0 -1
  291. package/_internal/5c3e15ea.js +0 -107
  292. package/_internal/5c3e15ea.js.map +0 -1
  293. package/_internal/5c4e10a0.js.map +0 -1
  294. package/_internal/5da9ff06.js +0 -47
  295. package/_internal/5da9ff06.js.map +0 -1
  296. package/_internal/60139f6a.js +0 -9
  297. package/_internal/60139f6a.js.map +0 -1
  298. package/_internal/612b7365.js +0 -231
  299. package/_internal/612b7365.js.map +0 -1
  300. package/_internal/612f6fb4.js +0 -155
  301. package/_internal/612f6fb4.js.map +0 -1
  302. package/_internal/617d453e.js +0 -28
  303. package/_internal/617d453e.js.map +0 -1
  304. package/_internal/62c6c615.js.map +0 -1
  305. package/_internal/6417ddb1.js +0 -24
  306. package/_internal/6417ddb1.js.map +0 -1
  307. package/_internal/658e09de.js +0 -7
  308. package/_internal/658e09de.js.map +0 -1
  309. package/_internal/659a1cdd.js +0 -144
  310. package/_internal/659a1cdd.js.map +0 -1
  311. package/_internal/6671d28b.js +0 -40
  312. package/_internal/6671d28b.js.map +0 -1
  313. package/_internal/66950686.js +0 -14
  314. package/_internal/66950686.js.map +0 -1
  315. package/_internal/671b986c.js +0 -14
  316. package/_internal/671b986c.js.map +0 -1
  317. package/_internal/6893b89e.js.map +0 -1
  318. package/_internal/68f13c1c.js.map +0 -1
  319. package/_internal/69eb2393.js.map +0 -1
  320. package/_internal/6af61e2f.js.map +0 -1
  321. package/_internal/6b510f5e.js.map +0 -1
  322. package/_internal/6b61b268.js +0 -9
  323. package/_internal/6b61b268.js.map +0 -1
  324. package/_internal/6f0ce1bb.js +0 -67
  325. package/_internal/6f0ce1bb.js.map +0 -1
  326. package/_internal/6f17bf65.js +0 -8
  327. package/_internal/6f17bf65.js.map +0 -1
  328. package/_internal/6f37d603.js.map +0 -1
  329. package/_internal/6f3bb7d6.js +0 -16
  330. package/_internal/6f3bb7d6.js.map +0 -1
  331. package/_internal/705f415e.js +0 -67
  332. package/_internal/705f415e.js.map +0 -1
  333. package/_internal/722ea461.js +0 -9
  334. package/_internal/722ea461.js.map +0 -1
  335. package/_internal/728684f6.js +0 -6
  336. package/_internal/728684f6.js.map +0 -1
  337. package/_internal/730f75dc.js +0 -93
  338. package/_internal/730f75dc.js.map +0 -1
  339. package/_internal/735bcfa5.js +0 -38
  340. package/_internal/735bcfa5.js.map +0 -1
  341. package/_internal/739f2f15.js.map +0 -1
  342. package/_internal/7531ee4d.js +0 -72
  343. package/_internal/7531ee4d.js.map +0 -1
  344. package/_internal/75f285fb.js +0 -104
  345. package/_internal/75f285fb.js.map +0 -1
  346. package/_internal/78a9c3cd.js +0 -4
  347. package/_internal/78a9c3cd.js.map +0 -1
  348. package/_internal/7a2da67a.js +0 -64
  349. package/_internal/7a2da67a.js.map +0 -1
  350. package/_internal/7af4a428.js +0 -39
  351. package/_internal/7af4a428.js.map +0 -1
  352. package/_internal/7d4eb1c5.js +0 -62
  353. package/_internal/7d4eb1c5.js.map +0 -1
  354. package/_internal/7d9c0855.js.map +0 -1
  355. package/_internal/7eca7fcd.js +0 -28
  356. package/_internal/7eca7fcd.js.map +0 -1
  357. package/_internal/81a6a29a.js +0 -55
  358. package/_internal/81a6a29a.js.map +0 -1
  359. package/_internal/82159c03.js.map +0 -1
  360. package/_internal/82c6852b.js +0 -19
  361. package/_internal/82c6852b.js.map +0 -1
  362. package/_internal/840e9690.js.map +0 -1
  363. package/_internal/841c2303.js.map +0 -1
  364. package/_internal/8429fc80.js +0 -141
  365. package/_internal/8429fc80.js.map +0 -1
  366. package/_internal/84978777.js +0 -55
  367. package/_internal/84978777.js.map +0 -1
  368. package/_internal/851a3109.js.map +0 -1
  369. package/_internal/879fa64d.js +0 -6
  370. package/_internal/879fa64d.js.map +0 -1
  371. package/_internal/883321fd.js +0 -17
  372. package/_internal/883321fd.js.map +0 -1
  373. package/_internal/893eb653.js +0 -4
  374. package/_internal/893eb653.js.map +0 -1
  375. package/_internal/897e2dbb.js +0 -80
  376. package/_internal/897e2dbb.js.map +0 -1
  377. package/_internal/89ee5eb2.js +0 -22
  378. package/_internal/89ee5eb2.js.map +0 -1
  379. package/_internal/8acd6aff.js +0 -82
  380. package/_internal/8acd6aff.js.map +0 -1
  381. package/_internal/8d318b2b.js +0 -138
  382. package/_internal/8d318b2b.js.map +0 -1
  383. package/_internal/8e3efbc4.js +0 -65
  384. package/_internal/8e3efbc4.js.map +0 -1
  385. package/_internal/8e8c5ab6.js.map +0 -1
  386. package/_internal/8fe4c01f.js +0 -20
  387. package/_internal/8fe4c01f.js.map +0 -1
  388. package/_internal/91f36a80.js.map +0 -1
  389. package/_internal/928fa938.js +0 -102
  390. package/_internal/928fa938.js.map +0 -1
  391. package/_internal/9361ef65.js +0 -6
  392. package/_internal/9361ef65.js.map +0 -1
  393. package/_internal/99513933.js +0 -145
  394. package/_internal/99513933.js.map +0 -1
  395. package/_internal/9976fe9a.js +0 -28
  396. package/_internal/9976fe9a.js.map +0 -1
  397. package/_internal/9a0544c4.js +0 -34
  398. package/_internal/9a0544c4.js.map +0 -1
  399. package/_internal/9a5db774.js +0 -6
  400. package/_internal/9a5db774.js.map +0 -1
  401. package/_internal/9ae8998a.js.map +0 -1
  402. package/_internal/9b0c0489.js.map +0 -1
  403. package/_internal/9d063548.js +0 -49
  404. package/_internal/9d063548.js.map +0 -1
  405. package/_internal/9e3b78fa.js.map +0 -1
  406. package/_internal/a0a42aca.js +0 -14
  407. package/_internal/a0a42aca.js.map +0 -1
  408. package/_internal/a1974f13.js.map +0 -1
  409. package/_internal/a2b9eb60.js +0 -90
  410. package/_internal/a2b9eb60.js.map +0 -1
  411. package/_internal/a2c7c463.js +0 -4
  412. package/_internal/a2c7c463.js.map +0 -1
  413. package/_internal/a32628a1.js +0 -4
  414. package/_internal/a32628a1.js.map +0 -1
  415. package/_internal/a3f2000f.js +0 -198
  416. package/_internal/a3f2000f.js.map +0 -1
  417. package/_internal/a45cc1b9.js +0 -128
  418. package/_internal/a45cc1b9.js.map +0 -1
  419. package/_internal/a6be9f05.js +0 -75
  420. package/_internal/a6be9f05.js.map +0 -1
  421. package/_internal/a6dc95cd.js.map +0 -1
  422. package/_internal/a7abe967.js +0 -20
  423. package/_internal/a7abe967.js.map +0 -1
  424. package/_internal/a89bf7bc.js.map +0 -1
  425. package/_internal/a9d0f94d.js +0 -53
  426. package/_internal/a9d0f94d.js.map +0 -1
  427. package/_internal/ab3e5463.js +0 -39
  428. package/_internal/ab3e5463.js.map +0 -1
  429. package/_internal/ac3f7e4d.js.map +0 -1
  430. package/_internal/acd6bed6.js +0 -6
  431. package/_internal/acd6bed6.js.map +0 -1
  432. package/_internal/ad7c38b0.js.map +0 -1
  433. package/_internal/ae4dc9f0.js +0 -62
  434. package/_internal/ae4dc9f0.js.map +0 -1
  435. package/_internal/aeba575c.js +0 -4
  436. package/_internal/aeba575c.js.map +0 -1
  437. package/_internal/b0780b33.js +0 -60
  438. package/_internal/b0780b33.js.map +0 -1
  439. package/_internal/b0846836.js +0 -4
  440. package/_internal/b0846836.js.map +0 -1
  441. package/_internal/b1154f4b.js +0 -14
  442. package/_internal/b1154f4b.js.map +0 -1
  443. package/_internal/b125b718.js.map +0 -1
  444. package/_internal/b23a92ab.js +0 -56
  445. package/_internal/b23a92ab.js.map +0 -1
  446. package/_internal/b4018f8d.js +0 -107
  447. package/_internal/b4018f8d.js.map +0 -1
  448. package/_internal/b402784b.js +0 -11
  449. package/_internal/b402784b.js.map +0 -1
  450. package/_internal/b4dfa648.js +0 -32
  451. package/_internal/b4dfa648.js.map +0 -1
  452. package/_internal/b573621e.js +0 -26
  453. package/_internal/b573621e.js.map +0 -1
  454. package/_internal/b5edf49e.js +0 -8
  455. package/_internal/b5edf49e.js.map +0 -1
  456. package/_internal/b85a5f3f.js +0 -57
  457. package/_internal/b85a5f3f.js.map +0 -1
  458. package/_internal/b93aa71c.js +0 -89
  459. package/_internal/b93aa71c.js.map +0 -1
  460. package/_internal/b977b471.js +0 -5
  461. package/_internal/b977b471.js.map +0 -1
  462. package/_internal/b9e3e436.js.map +0 -1
  463. package/_internal/b9ed1f7a.js +0 -4
  464. package/_internal/b9ed1f7a.js.map +0 -1
  465. package/_internal/bae815e2.js.map +0 -1
  466. package/_internal/bb05343d.js +0 -36
  467. package/_internal/bb05343d.js.map +0 -1
  468. package/_internal/bb5fb0f9.js +0 -28
  469. package/_internal/bb5fb0f9.js.map +0 -1
  470. package/_internal/bb8088e1.js.map +0 -1
  471. package/_internal/bc393aec.js +0 -8
  472. package/_internal/bc393aec.js.map +0 -1
  473. package/_internal/bd1cd49f.js.map +0 -1
  474. package/_internal/bd8b3ec8.js.map +0 -1
  475. package/_internal/be29f79e.js +0 -52
  476. package/_internal/be29f79e.js.map +0 -1
  477. package/_internal/bf202fa2.js +0 -47
  478. package/_internal/bf202fa2.js.map +0 -1
  479. package/_internal/bf411e5a.js +0 -109
  480. package/_internal/bf411e5a.js.map +0 -1
  481. package/_internal/c01c3bec.js +0 -12
  482. package/_internal/c01c3bec.js.map +0 -1
  483. package/_internal/c0a6dba6.js.map +0 -1
  484. package/_internal/c241db12.js.map +0 -1
  485. package/_internal/c3ccd387.js +0 -20
  486. package/_internal/c3ccd387.js.map +0 -1
  487. package/_internal/c51d37f8.js.map +0 -1
  488. package/_internal/c625d242.js +0 -14
  489. package/_internal/c625d242.js.map +0 -1
  490. package/_internal/c72d4f8b.js +0 -4
  491. package/_internal/c72d4f8b.js.map +0 -1
  492. package/_internal/c9a3b27f.js +0 -6
  493. package/_internal/c9a3b27f.js.map +0 -1
  494. package/_internal/c9bd0e84.js +0 -29
  495. package/_internal/c9bd0e84.js.map +0 -1
  496. package/_internal/cb19eca6.js.map +0 -1
  497. package/_internal/cb525c68.js +0 -165
  498. package/_internal/cb525c68.js.map +0 -1
  499. package/_internal/cb7ac456.js +0 -165
  500. package/_internal/cb7ac456.js.map +0 -1
  501. package/_internal/cc5cac50.js.map +0 -1
  502. package/_internal/cd8457fc.js.map +0 -1
  503. package/_internal/d0b96efd.js +0 -8
  504. package/_internal/d0b96efd.js.map +0 -1
  505. package/_internal/d3286249.js +0 -72
  506. package/_internal/d3286249.js.map +0 -1
  507. package/_internal/d57d3fc6.js +0 -6
  508. package/_internal/d57d3fc6.js.map +0 -1
  509. package/_internal/d5f5f3f5.js +0 -18
  510. package/_internal/d5f5f3f5.js.map +0 -1
  511. package/_internal/d672fc0e.js +0 -24
  512. package/_internal/d672fc0e.js.map +0 -1
  513. package/_internal/d7ee7efe.js +0 -40
  514. package/_internal/d7ee7efe.js.map +0 -1
  515. package/_internal/d8ee966d.js.map +0 -1
  516. package/_internal/db88500d.js +0 -10
  517. package/_internal/db88500d.js.map +0 -1
  518. package/_internal/dbc379f8.js +0 -45
  519. package/_internal/dbc379f8.js.map +0 -1
  520. package/_internal/dbe906f1.js +0 -179
  521. package/_internal/dbe906f1.js.map +0 -1
  522. package/_internal/de52a4b9.js +0 -20
  523. package/_internal/de52a4b9.js.map +0 -1
  524. package/_internal/df688aab.js +0 -121
  525. package/_internal/df688aab.js.map +0 -1
  526. package/_internal/dfa00cf7.js +0 -35
  527. package/_internal/dfa00cf7.js.map +0 -1
  528. package/_internal/e0398237.js.map +0 -1
  529. package/_internal/e142a98d.js +0 -22
  530. package/_internal/e142a98d.js.map +0 -1
  531. package/_internal/e429bd82.js +0 -12
  532. package/_internal/e429bd82.js.map +0 -1
  533. package/_internal/e47dacb8.js.map +0 -1
  534. package/_internal/e4a199c0.js +0 -20
  535. package/_internal/e4a199c0.js.map +0 -1
  536. package/_internal/e50f2a75.js +0 -27
  537. package/_internal/e50f2a75.js.map +0 -1
  538. package/_internal/e5657997.js.map +0 -1
  539. package/_internal/e7aa44d1.js +0 -13
  540. package/_internal/e7aa44d1.js.map +0 -1
  541. package/_internal/e8e4d09e.js +0 -95
  542. package/_internal/e8e4d09e.js.map +0 -1
  543. package/_internal/e918f20b.js +0 -57
  544. package/_internal/e918f20b.js.map +0 -1
  545. package/_internal/e9c3b1e0.js +0 -4
  546. package/_internal/e9c3b1e0.js.map +0 -1
  547. package/_internal/ebd44733.js +0 -7
  548. package/_internal/ebd44733.js.map +0 -1
  549. package/_internal/ebe24fd7.js.map +0 -1
  550. package/_internal/ed03c692.js +0 -17
  551. package/_internal/ed03c692.js.map +0 -1
  552. package/_internal/eea52073.js +0 -27
  553. package/_internal/eea52073.js.map +0 -1
  554. package/_internal/eec574e6.js +0 -40
  555. package/_internal/eec574e6.js.map +0 -1
  556. package/_internal/eef5d63f.js +0 -21
  557. package/_internal/eef5d63f.js.map +0 -1
  558. package/_internal/ef907c21.js +0 -41
  559. package/_internal/ef907c21.js.map +0 -1
  560. package/_internal/ef982c3d.js.map +0 -1
  561. package/_internal/f0052b9b.js +0 -27
  562. package/_internal/f0052b9b.js.map +0 -1
  563. package/_internal/f2e34298.js +0 -75
  564. package/_internal/f2e34298.js.map +0 -1
  565. package/_internal/f419ecef.js +0 -4
  566. package/_internal/f419ecef.js.map +0 -1
  567. package/_internal/f4baa1da.js +0 -34
  568. package/_internal/f4baa1da.js.map +0 -1
  569. package/_internal/f6bc7948.js.map +0 -1
  570. package/_internal/f7520b8e.js +0 -52
  571. package/_internal/f7520b8e.js.map +0 -1
  572. package/_internal/f8c49b24.js +0 -14
  573. package/_internal/f8c49b24.js.map +0 -1
  574. package/_internal/fb201a04.js +0 -65
  575. package/_internal/fb201a04.js.map +0 -1
  576. package/_internal/fb36ff46.js +0 -51
  577. package/_internal/fb36ff46.js.map +0 -1
  578. package/_internal/fcc7c462.js.map +0 -1
  579. package/_internal/fcf83937.js +0 -28
  580. package/_internal/fcf83937.js.map +0 -1
  581. package/_internal/fd3e2f21.js +0 -30
  582. package/_internal/fd3e2f21.js.map +0 -1
  583. package/_internal/fdcf3942.js +0 -157
  584. package/_internal/fdcf3942.js.map +0 -1
  585. package/_internal/fdebc718.js.map +0 -1
  586. package/_internal/ff96951d.js +0 -8
  587. package/_internal/ff96951d.js.map +0 -1
  588. package/_internal/ffb2f7fa.js.map +0 -1
  589. package/index.js.map +0 -1
  590. package/utils/index.js.map +0 -1
@@ -0,0 +1,759 @@
1
+ import React__default from 'react';
2
+ import classNames from 'classnames';
3
+ import { u as useMergeRefs, m as mergeRefs } from '../../f0d7d6ea.js';
4
+ import { f as forwardRef } from '../../8bce732e.js';
5
+ import memoize from 'lodash/memoize';
6
+ import { I as ImageCaption } from '../../5cef5e8c.js';
7
+ import { getRootClassName } from '@lumx/core/js/utils/className';
8
+ import throttle from 'lodash/throttle';
9
+ import { i as isReducedMotion } from '../../a38bdcd0.js';
10
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
11
+ import { S as SlideshowItem, a as SlideshowControls, b as Slides } from '../../b326655a.js';
12
+ import { T as Thumbnail } from '../../035c132d.js';
13
+ import { I as IconButton } from '../../b83e864b.js';
14
+ import { FlexBox } from '../flex-box/index-0d6b6b43.js';
15
+ import ReactDOM from 'react-dom';
16
+ import { Lightbox } from '../lightbox/index-fad5a9f2.js';
17
+ import { T as ThemeProvider } from '../../3181f000.js';
18
+ import { ClickAwayProvider } from '../../utils/ClickAwayProvider/index-1234ce76.js';
19
+
20
+ 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';
21
+
22
+ 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';
23
+
24
+ /**
25
+ * Component display name.
26
+ */
27
+ const COMPONENT_NAME = 'ImageLightbox';
28
+
29
+ /**
30
+ * Component default class name and class prefix.
31
+ */
32
+ const CLASSNAME = getRootClassName(COMPONENT_NAME);
33
+
34
+ /**
35
+ * Observe element size (only works if it's size depends on the window size).
36
+ *
37
+ * (Not using ResizeObserver for better browser backward compat)
38
+ *
39
+ * @param elementRef Element to observe
40
+ * @return the size and a manual update callback
41
+ */
42
+ function useSizeOnWindowResize(elementRef) {
43
+ const [size, setSize] = React__default.useState(null);
44
+ const updateSize = React__default.useMemo(() => throttle(() => {
45
+ const newSize = elementRef.current?.getBoundingClientRect();
46
+ if (newSize) setSize(newSize);
47
+ }, 10), [elementRef]);
48
+ React__default.useEffect(() => {
49
+ updateSize();
50
+ window.addEventListener('resize', updateSize);
51
+ return () => window.removeEventListener('resize', updateSize);
52
+ }, [updateSize]);
53
+ return [size, updateSize];
54
+ }
55
+
56
+ /** Get natural image size after load. */
57
+ function useImageSize(imgRef, getInitialSize) {
58
+ const [imageSize, setImageSize] = React__default.useState(getInitialSize || null);
59
+ React__default.useEffect(() => {
60
+ const {
61
+ current: img
62
+ } = imgRef;
63
+ if (!img) {
64
+ return undefined;
65
+ }
66
+ const onLoad = () => setImageSize({
67
+ width: img.naturalWidth,
68
+ height: img.naturalHeight
69
+ });
70
+ img.addEventListener('load', onLoad);
71
+ return () => img.removeEventListener('load', onLoad);
72
+ }, [imgRef]);
73
+ return imageSize;
74
+ }
75
+
76
+ /** Minimal recursive deep equal of JS values */
77
+ function isEqual(obj1, obj2) {
78
+ if (obj1 === obj2) return true;
79
+ if (typeof obj1 === 'object' && typeof obj2 === 'object') {
80
+ const keys1 = Object.keys(obj1);
81
+ const keys2 = Object.keys(obj2);
82
+ if (keys1.length !== keys2.length) return false;
83
+ return keys1.every(key1 => isEqual(obj1[key1], obj2[key1]));
84
+ }
85
+ return false;
86
+ }
87
+
88
+ /**
89
+ * Listen to mouse wheel + ctrl and multi-pointer pinch to zoom
90
+ */
91
+ function usePointerZoom(scrollAreaRef, onScaleChange, animateScroll) {
92
+ const [isPointerZooming, setPointerZooming] = React__default.useState(false);
93
+ React__default.useEffect(() => {
94
+ const scrollArea = scrollAreaRef.current;
95
+ if (!scrollArea || !onScaleChange) {
96
+ return undefined;
97
+ }
98
+ let animationFrame;
99
+ let zoomStateTimeoutId;
100
+ function updateScaleOnNextFrame(newScale, mousePosition) {
101
+ // Cancel previously scheduled frame
102
+ if (animationFrame) cancelAnimationFrame(animationFrame);
103
+
104
+ // Cancel previously scheduled zoom state change
105
+ if (zoomStateTimeoutId) clearTimeout(zoomStateTimeoutId);
106
+ function nextFrame() {
107
+ setPointerZooming(true);
108
+ onScaleChange?.(newScale);
109
+ animationFrame = null;
110
+ // Wait a bit before indicating the pointer zooming is finished
111
+ zoomStateTimeoutId = setTimeout(() => setPointerZooming(false), 100);
112
+ }
113
+ animationFrame = requestAnimationFrame(nextFrame);
114
+
115
+ // Animate scroll in parallel (centering on the current mouse position)
116
+ animateScroll(mousePosition, {
117
+ width: scrollArea.scrollWidth,
118
+ height: scrollArea.scrollHeight
119
+ });
120
+ }
121
+ function onWheel(event) {
122
+ if (!event.ctrlKey) {
123
+ return;
124
+ }
125
+ event.preventDefault();
126
+ const newScale = Math.exp(-event.deltaY / 50);
127
+
128
+ // Update scale on next frame (focused on the mouse position)
129
+ updateScaleOnNextFrame(newScale, {
130
+ x: event.clientX,
131
+ y: event.clientY
132
+ });
133
+ }
134
+ const activePointers = {};
135
+ let prevDistance = null;
136
+ let previousCenterPoint = null;
137
+ function onPointerDown(event) {
138
+ activePointers[event.pointerId] = event;
139
+ }
140
+ function onPointerMove(event) {
141
+ // Update pointer in cache
142
+ if (activePointers[event.pointerId]) {
143
+ activePointers[event.pointerId] = event;
144
+ }
145
+ const pointers = Object.values(activePointers);
146
+
147
+ // Make sure we run computation on one of the pointer in the group
148
+ if (pointers[0]?.pointerId !== event.pointerId) {
149
+ return;
150
+ }
151
+
152
+ // Centered point between all pointers
153
+ const centerPoint = {
154
+ x: pointers.reduce((x, {
155
+ clientX
156
+ }) => x + clientX, 0) / pointers.length,
157
+ y: pointers.reduce((y, {
158
+ clientY
159
+ }) => y + clientY, 0) / pointers.length
160
+ };
161
+
162
+ // Movement of the center point
163
+ const deltaCenterPoint = previousCenterPoint && {
164
+ left: previousCenterPoint.x - centerPoint.x,
165
+ top: previousCenterPoint.y - centerPoint.y
166
+ };
167
+
168
+ // Pan X & Y
169
+ if (deltaCenterPoint) {
170
+ // Apply movement of the center point to the scroll
171
+ scrollArea.scrollBy({
172
+ top: deltaCenterPoint.top / 2,
173
+ left: deltaCenterPoint.left / 2
174
+ });
175
+ }
176
+
177
+ // Pinch to zoom
178
+ if (pointers.length === 2) {
179
+ const [pointer1, pointer2] = pointers;
180
+ const distance = Math.hypot(pointer2.clientX - pointer1.clientX, pointer2.clientY - pointer1.clientY);
181
+ if (prevDistance && deltaCenterPoint) {
182
+ const delta = prevDistance - distance;
183
+ const absDelta = Math.abs(delta);
184
+
185
+ // Zoom only if we are "pinching" more than we are moving the pointers
186
+ if (absDelta > Math.abs(deltaCenterPoint.left) && absDelta > Math.abs(deltaCenterPoint.top)) {
187
+ // Update scale on next frame (focused on the center point between the two pointers)
188
+ const newScale = Math.exp(-delta / 100);
189
+ updateScaleOnNextFrame(newScale, centerPoint);
190
+ }
191
+ }
192
+ prevDistance = distance;
193
+ }
194
+ previousCenterPoint = centerPoint;
195
+ }
196
+ function onPointerUp(event) {
197
+ prevDistance = null;
198
+ previousCenterPoint = null;
199
+ delete activePointers[event.pointerId];
200
+ }
201
+ scrollArea.addEventListener('wheel', onWheel, {
202
+ passive: false
203
+ });
204
+ const isMultiTouch = navigator.maxTouchPoints >= 2;
205
+ if (isMultiTouch) {
206
+ scrollArea.addEventListener('pointerdown', onPointerDown);
207
+ scrollArea.addEventListener('pointermove', onPointerMove);
208
+ scrollArea.addEventListener('pointerup', onPointerUp);
209
+ }
210
+ return () => {
211
+ scrollArea.removeEventListener('wheel', onWheel);
212
+ if (isMultiTouch) {
213
+ scrollArea.removeEventListener('pointerdown', onPointerDown);
214
+ scrollArea.removeEventListener('pointermove', onPointerMove);
215
+ scrollArea.removeEventListener('pointerup', onPointerUp);
216
+ }
217
+ };
218
+ }, [animateScroll, onScaleChange, scrollAreaRef]);
219
+ return isPointerZooming;
220
+ }
221
+
222
+ /** Maintains the scroll position centered relative to the original scroll area's dimensions when the content scales. */
223
+ function useAnimateScroll(scrollAreaRef) {
224
+ return React__default.useMemo(() => {
225
+ let animationFrame = null;
226
+ return function animate(centerPoint, initialScrollAreaSize) {
227
+ const scrollArea = scrollAreaRef.current;
228
+ if (!scrollArea) {
229
+ return;
230
+ }
231
+
232
+ // Cancel previously running animation
233
+ if (animationFrame) cancelAnimationFrame(animationFrame);
234
+
235
+ // Center on the given point or else on the scroll area visual center
236
+ const clientHeightRatio = centerPoint?.y ? centerPoint.y / scrollArea.clientHeight : 0.5;
237
+ const clientWidthRatio = centerPoint?.x ? centerPoint.x / scrollArea.clientWidth : 0.5;
238
+ const initialScrollHeight = initialScrollAreaSize?.height || scrollArea.scrollHeight;
239
+ const initialScrollWidth = initialScrollAreaSize?.width || scrollArea.scrollWidth;
240
+ const heightCenter = scrollArea.scrollTop + scrollArea.clientHeight * clientHeightRatio;
241
+ const heightRatio = heightCenter / initialScrollHeight;
242
+ const widthCenter = scrollArea.scrollLeft + scrollArea.clientWidth * clientWidthRatio;
243
+ const widthRatio = widthCenter / initialScrollWidth;
244
+ let prevScrollHeight = 0;
245
+ let prevScrollWidth = 0;
246
+ function nextFrame() {
247
+ const {
248
+ scrollHeight,
249
+ scrollWidth,
250
+ clientHeight,
251
+ clientWidth
252
+ } = scrollArea;
253
+
254
+ // Scroll area stopped expanding => stop animation
255
+ if (scrollHeight === prevScrollHeight && scrollWidth === prevScrollWidth) {
256
+ animationFrame = null;
257
+ return;
258
+ }
259
+
260
+ // Compute next scroll position
261
+ const top = heightRatio * scrollHeight - clientHeight * clientHeightRatio;
262
+ const left = widthRatio * scrollWidth - clientWidth * clientWidthRatio;
263
+ scrollArea.scrollTo({
264
+ top,
265
+ left
266
+ });
267
+ prevScrollHeight = scrollHeight;
268
+ prevScrollWidth = scrollWidth;
269
+ animationFrame = requestAnimationFrame(nextFrame);
270
+ }
271
+ animationFrame = requestAnimationFrame(nextFrame);
272
+ };
273
+ }, [scrollAreaRef]);
274
+ }
275
+
276
+ /** Internal image slide component for ImageLightbox */
277
+ const ImageSlide = /*#__PURE__*/React__default.memo(props => {
278
+ const {
279
+ isActive,
280
+ scale,
281
+ onScaleChange,
282
+ image: {
283
+ image,
284
+ imgRef: propImgRef,
285
+ imgProps,
286
+ alt,
287
+ loadingPlaceholderImageRef
288
+ }
289
+ } = props;
290
+
291
+ // Get scroll area size
292
+ const scrollAreaRef = React__default.useRef(null);
293
+ const [scrollAreaSize, updateSize] = useSizeOnWindowResize(scrollAreaRef);
294
+ React__default.useEffect(() => {
295
+ // Update size when active
296
+ if (isActive) updateSize();
297
+ }, [isActive, updateSize]);
298
+
299
+ // Get image size
300
+ const imgRef = React__default.useRef(null);
301
+ const imageSize = useImageSize(imgRef, () => {
302
+ const width = Number.parseInt(imgProps?.width, 10);
303
+ const height = Number.parseInt(imgProps?.height, 10);
304
+ return width && height ? {
305
+ width,
306
+ height
307
+ } : null;
308
+ });
309
+
310
+ // Calculate new image size with scale
311
+ const scaledImageSize = React__default.useMemo(() => {
312
+ if (!scrollAreaSize || !imageSize) {
313
+ return null;
314
+ }
315
+ const horizontalScale = scrollAreaSize.width / imageSize.width;
316
+ const verticalScale = scrollAreaSize.height / imageSize.height;
317
+ const baseScale = Math.min(1, Math.min(horizontalScale, verticalScale));
318
+ return {
319
+ width: imageSize.width * baseScale * (scale ?? 1),
320
+ height: imageSize.height * baseScale * (scale ?? 1)
321
+ };
322
+ }, [scrollAreaSize, imageSize, scale]);
323
+
324
+ // Animate scroll to preserve the center of the current visible window in the scroll area
325
+ const animateScroll = useAnimateScroll(scrollAreaRef);
326
+
327
+ // Zoom via mouse wheel or multi-touch pinch zoom
328
+ const isPointerZooming = usePointerZoom(scrollAreaRef, onScaleChange, animateScroll);
329
+
330
+ // Animate scroll on scale change
331
+ React__default.useLayoutEffect(() => {
332
+ if (scale && !isPointerZooming) {
333
+ animateScroll();
334
+ }
335
+ }, [isPointerZooming, scale, animateScroll]);
336
+ const isScrollable = scaledImageSize && scrollAreaSize && (scaledImageSize.width > scrollAreaSize.width || scaledImageSize.height > scrollAreaSize.height);
337
+ return /*#__PURE__*/jsx(SlideshowItem, {
338
+ ref: scrollAreaRef
339
+ // Make it accessible to keyboard nav when the zone is scrollable
340
+ ,
341
+ tabIndex: isScrollable ? 0 : undefined,
342
+ className: `${CLASSNAME}__image-slide`,
343
+ children: /*#__PURE__*/jsx(Thumbnail, {
344
+ imgRef: useMergeRefs(imgRef, propImgRef),
345
+ image: image,
346
+ alt: alt,
347
+ className: `${CLASSNAME}__thumbnail`,
348
+ imgProps: {
349
+ ...imgProps,
350
+ style: {
351
+ ...imgProps?.style,
352
+ ...(scaledImageSize || {
353
+ maxHeight: scrollAreaSize?.height,
354
+ maxWidth: scrollAreaSize?.width
355
+ }),
356
+ // Only animate when scale is set, and we are not pointer zooming and the user does not prefer reduced motion
357
+ transition: scale && !isPointerZooming && !isReducedMotion() ? 'all 250ms' : undefined
358
+ }
359
+ },
360
+ loadingPlaceholderImageRef: loadingPlaceholderImageRef
361
+ })
362
+ });
363
+ }, isEqual);
364
+
365
+ /** Internal image slideshow component for ImageLightbox */
366
+ const ImageSlideshow = ({
367
+ activeImageIndex,
368
+ images,
369
+ slideGroupLabel,
370
+ zoomInButtonProps,
371
+ zoomOutButtonProps,
372
+ slideshowControlsProps,
373
+ currentPaginationItemRef,
374
+ footerRef,
375
+ activeImageRef
376
+ }) => {
377
+ const {
378
+ activeIndex,
379
+ slideshowId,
380
+ setSlideshow,
381
+ slideshowSlidesId,
382
+ slidesCount,
383
+ onNextClick,
384
+ onPaginationClick,
385
+ onPreviousClick,
386
+ toggleAutoPlay
387
+ } = SlideshowControls.useSlideshowControls({
388
+ itemsCount: images.length,
389
+ activeIndex: activeImageIndex
390
+ });
391
+
392
+ // Image metadata (caption)
393
+ const title = images[activeIndex]?.title;
394
+ const description = images[activeIndex]?.description;
395
+ const tags = images[activeIndex]?.tags;
396
+ const metadata = title || description || tags ? /*#__PURE__*/jsx(ImageCaption, {
397
+ as: "div",
398
+ title: title,
399
+ description: description,
400
+ tags: tags,
401
+ align: "center"
402
+ }) : null;
403
+
404
+ // Slideshow controls
405
+ const slideShowControls = slidesCount > 1 && slideshowControlsProps ? /*#__PURE__*/jsx(SlideshowControls, {
406
+ activeIndex: activeIndex,
407
+ slidesCount: slidesCount,
408
+ onNextClick: onNextClick,
409
+ onPreviousClick: onPreviousClick,
410
+ onPaginationClick: onPaginationClick,
411
+ ...slideshowControlsProps,
412
+ paginationItemProps: index => {
413
+ const props = slideshowControlsProps?.paginationItemProps?.(index) || {};
414
+ return {
415
+ ...props,
416
+ ref: mergeRefs(props?.ref,
417
+ // Focus the active pagination item once on mount
418
+ activeIndex === index ? currentPaginationItemRef : undefined)
419
+ };
420
+ }
421
+ }) : null;
422
+
423
+ // Zoom controls
424
+ const [scale, setScale] = React__default.useState(undefined);
425
+ const zoomEnabled = zoomInButtonProps && zoomOutButtonProps;
426
+ const onScaleChange = React__default.useMemo(() => {
427
+ if (!zoomEnabled) return undefined;
428
+ return newScale => {
429
+ setScale((prevScale = 1) => Math.max(1, newScale * prevScale));
430
+ };
431
+ }, [zoomEnabled]);
432
+ const zoomIn = React__default.useCallback(() => onScaleChange?.(1.5), [onScaleChange]);
433
+ const zoomOut = React__default.useCallback(() => onScaleChange?.(0.5), [onScaleChange]);
434
+ React__default.useEffect(() => {
435
+ // Reset scale on slide change
436
+ if (typeof activeIndex === 'number') setScale(undefined);
437
+ }, [activeIndex]);
438
+ const zoomControls = zoomEnabled && /*#__PURE__*/jsxs(Fragment, {
439
+ children: [/*#__PURE__*/jsx(IconButton, {
440
+ ...zoomInButtonProps,
441
+ emphasis: "low",
442
+ icon: mdiMagnifyPlusOutline,
443
+ onClick: zoomIn
444
+ }), /*#__PURE__*/jsx(IconButton, {
445
+ ...zoomOutButtonProps,
446
+ emphasis: "low",
447
+ isDisabled: !scale || scale <= 1,
448
+ icon: mdiMagnifyMinusOutline,
449
+ onClick: zoomOut
450
+ })]
451
+ });
452
+ const getImgRef = React__default.useMemo(() => memoize((index, isActive) => {
453
+ return mergeRefs(images?.[index].imgRef, isActive ? activeImageRef : undefined);
454
+ },
455
+ // memoize based on both arguments
456
+ (...args) => args.join()), [images, activeImageRef]);
457
+ return /*#__PURE__*/jsxs(Fragment, {
458
+ children: [/*#__PURE__*/jsx(Slides, {
459
+ activeIndex: activeIndex,
460
+ slideGroupLabel: slideGroupLabel,
461
+ fillHeight: true,
462
+ id: slideshowId,
463
+ ref: setSlideshow,
464
+ slidesId: slideshowSlidesId,
465
+ toggleAutoPlay: toggleAutoPlay,
466
+ children: images.map(({
467
+ image,
468
+ imgRef,
469
+ ...imageProps
470
+ }, index) => {
471
+ const isActive = index === activeIndex;
472
+ return /*#__PURE__*/jsx(ImageSlide, {
473
+ isActive: isActive,
474
+ image: {
475
+ ...imageProps,
476
+ image,
477
+ imgRef: getImgRef(index, isActive)
478
+ },
479
+ scale: isActive ? scale : undefined,
480
+ onScaleChange: onScaleChange
481
+ }, image);
482
+ })
483
+ }), (metadata || slideShowControls || zoomControls) && /*#__PURE__*/jsxs(FlexBox, {
484
+ ref: footerRef,
485
+ className: `${CLASSNAME}__footer`,
486
+ orientation: "vertical",
487
+ vAlign: "center",
488
+ gap: "big",
489
+ children: [metadata, /*#__PURE__*/jsxs(FlexBox, {
490
+ className: `${CLASSNAME}__footer-actions`,
491
+ orientation: "horizontal",
492
+ gap: "regular",
493
+ children: [slideShowControls, zoomControls]
494
+ })]
495
+ })]
496
+ });
497
+ };
498
+
499
+ /** Unref a react ref or element */
500
+ function unref(maybeElement) {
501
+ if (maybeElement instanceof HTMLElement) return maybeElement;
502
+ return maybeElement?.current;
503
+ }
504
+
505
+ function setupViewTransitionName(elementRef, name) {
506
+ let originalName = null;
507
+ return {
508
+ set() {
509
+ const element = unref(elementRef);
510
+ if (!element) return;
511
+ originalName = element.style.viewTransitionName;
512
+ element.style.viewTransitionName = name;
513
+ },
514
+ unset() {
515
+ const element = unref(elementRef);
516
+ if (!element || originalName === null) return;
517
+ element.style.viewTransitionName = originalName;
518
+ }
519
+ };
520
+ }
521
+
522
+ /**
523
+ * Wrapper around the `document.startViewTransition` handling browser incompatibilities, react DOM flush and
524
+ * user preference.
525
+ *
526
+ * @param changes callback containing the changes to apply within the view transition.
527
+ * @param setViewTransitionName set the `viewTransitionName` style on a `source` & `target` to morph these elements.
528
+ */
529
+ async function startViewTransition({
530
+ changes,
531
+ viewTransitionName
532
+ }) {
533
+ const start = document?.startViewTransition?.bind(document);
534
+ const prefersReducedMotion = isReducedMotion();
535
+ const {
536
+ flushSync
537
+ } = ReactDOM;
538
+ if (prefersReducedMotion || !start || !flushSync || !viewTransitionName?.source || !viewTransitionName?.target) {
539
+ // Skip, apply changes without a transition
540
+ changes();
541
+ return;
542
+ }
543
+
544
+ // Setup set/unset transition name on source & target
545
+ const sourceTransitionName = setupViewTransitionName(viewTransitionName.source, viewTransitionName.name);
546
+ const targetTransitionName = setupViewTransitionName(viewTransitionName.target, viewTransitionName.name);
547
+ sourceTransitionName.set();
548
+
549
+ // Start view transition, apply changes & flush to DOM
550
+ await start(() => {
551
+ sourceTransitionName.unset();
552
+ flushSync(changes);
553
+ targetTransitionName.set();
554
+ }).updateCallbackDone;
555
+ targetTransitionName.unset();
556
+ }
557
+
558
+ /** Find image in element including the element */
559
+ const findImage = element => element?.matches('img') ? element : element?.querySelector('img') || null;
560
+
561
+ /** Subset of the ImageLightboxProps managed by the useImageLightbox hook */
562
+
563
+ const EMPTY_PROPS = {
564
+ isOpen: false,
565
+ images: [],
566
+ parentElement: /*#__PURE__*/React__default.createRef()
567
+ };
568
+ /**
569
+ * Set up an ImageLightbox with images and triggers.
570
+ *
571
+ * - Associate a trigger with the lightbox to properly focus the trigger on close
572
+ * - Associate a trigger with an image to display on open
573
+ * - Automatically provide a view transition between an image trigger and the displayed image on open & close
574
+ *
575
+ * @param props Images to display in the image lightbox
576
+ */
577
+ function useImageLightbox(props) {
578
+ const propsRef = React__default.useRef(props);
579
+ React__default.useEffect(() => {
580
+ propsRef.current = props;
581
+ }, [props]);
582
+
583
+ // Keep reference for each image elements
584
+ const imageRefsRef = React__default.useRef([]);
585
+ const currentImageRef = React__default.useRef(null);
586
+ const [imageLightboxProps, setImageLightboxProps] = React__default.useState(() => ({
587
+ ...EMPTY_PROPS,
588
+ ...props
589
+ }));
590
+ const getTriggerProps = React__default.useMemo(() => {
591
+ const triggerImageRefs = {};
592
+ async function close() {
593
+ const currentImage = currentImageRef.current;
594
+ if (!currentImage) {
595
+ return;
596
+ }
597
+ const currentIndex = imageRefsRef.current.findIndex(imageRef => imageRef.current === currentImage);
598
+ await startViewTransition({
599
+ changes() {
600
+ // Close lightbox
601
+ setImageLightboxProps(prevProps => ({
602
+ ...prevProps,
603
+ isOpen: false
604
+ }));
605
+ },
606
+ // Morph from the image in lightbox to the image in trigger
607
+ viewTransitionName: {
608
+ source: currentImageRef,
609
+ target: triggerImageRefs[currentIndex],
610
+ name: CLASSNAME
611
+ }
612
+ });
613
+ }
614
+ async function open(triggerElement, {
615
+ activeImageIndex
616
+ } = {}) {
617
+ // If we find an image inside the trigger, animate it in transition with the opening image
618
+ const triggerImage = triggerImageRefs[activeImageIndex]?.current || findImage(triggerElement);
619
+
620
+ // Inject refs to improve transition and loading style
621
+ const images = propsRef.current?.images?.map((image, idx) => {
622
+ // Get or create image reference
623
+ let imgRef = imageRefsRef.current[idx];
624
+ if (!imgRef) {
625
+ imgRef = /*#__PURE__*/React__default.createRef();
626
+ imageRefsRef.current[idx] = imgRef;
627
+ }
628
+
629
+ // Try to use the trigger image as the loading placeholder
630
+ const loadingPlaceholderImageRef = triggerImage && idx === activeImageIndex ? {
631
+ current: triggerImage
632
+ } : undefined;
633
+ return {
634
+ loadingPlaceholderImageRef,
635
+ ...image,
636
+ imgRef
637
+ };
638
+ });
639
+ await startViewTransition({
640
+ changes: () => {
641
+ // Open lightbox with setup props
642
+ setImageLightboxProps(prevProps => ({
643
+ ...prevProps,
644
+ ...propsRef.current,
645
+ activeImageRef: currentImageRef,
646
+ parentElement: {
647
+ current: triggerElement
648
+ },
649
+ isOpen: true,
650
+ onClose: () => {
651
+ close();
652
+ propsRef.current?.onClose?.();
653
+ },
654
+ images,
655
+ activeImageIndex: activeImageIndex || 0
656
+ }));
657
+ },
658
+ // Morph from the image in trigger to the image in lightbox
659
+ viewTransitionName: {
660
+ source: triggerImage,
661
+ target: currentImageRef,
662
+ name: CLASSNAME
663
+ }
664
+ });
665
+ }
666
+ return memoize(options => ({
667
+ ref(element) {
668
+ // Track trigger image ref if any
669
+ if (options?.activeImageIndex !== undefined && element) {
670
+ triggerImageRefs[options.activeImageIndex] = {
671
+ current: findImage(element)
672
+ };
673
+ }
674
+ },
675
+ onClick(e) {
676
+ open(e.target, options);
677
+ }
678
+ }));
679
+ }, []);
680
+ return {
681
+ getTriggerProps,
682
+ imageLightboxProps
683
+ };
684
+ }
685
+
686
+ const Inner = forwardRef((props, ref) => {
687
+ const {
688
+ className,
689
+ isOpen,
690
+ closeButtonProps,
691
+ onClose,
692
+ parentElement,
693
+ activeImageIndex,
694
+ slideshowControlsProps,
695
+ slideGroupLabel,
696
+ images,
697
+ zoomOutButtonProps,
698
+ zoomInButtonProps,
699
+ activeImageRef: propImageRef,
700
+ ...forwardedProps
701
+ } = props;
702
+ const currentPaginationItemRef = React__default.useRef(null);
703
+ const footerRef = React__default.useRef(null);
704
+ const imageRef = React__default.useRef(null);
705
+ const clickAwayChildrenRefs = React__default.useRef([imageRef, footerRef]);
706
+ const onClickAway = React__default.useCallback(evt => {
707
+ const targetElement = evt.target;
708
+ if (!(targetElement instanceof HTMLElement) || !(evt instanceof MouseEvent)) return;
709
+
710
+ // Skip click away if clicking on the scrollbar
711
+ if (targetElement.clientWidth < evt.clientX || targetElement.clientHeight < evt.clientY) return;
712
+ onClose?.();
713
+ }, [onClose]);
714
+ return /*#__PURE__*/jsx(Lightbox, {
715
+ ref: ref,
716
+ className: classNames(className, CLASSNAME),
717
+ parentElement: parentElement,
718
+ isOpen: isOpen,
719
+ onClose: onClose,
720
+ closeButtonProps: closeButtonProps,
721
+ focusElement: currentPaginationItemRef,
722
+ ...forwardedProps,
723
+ // Disable the close on click away as we want a custom one here
724
+ preventAutoClose: true,
725
+ children: /*#__PURE__*/jsx(ClickAwayProvider, {
726
+ childrenRefs: clickAwayChildrenRefs,
727
+ callback: onClickAway,
728
+ children: /*#__PURE__*/jsx(ThemeProvider, {
729
+ value: "dark",
730
+ children: /*#__PURE__*/jsx(ImageSlideshow, {
731
+ activeImageIndex: activeImageIndex,
732
+ slideGroupLabel: slideGroupLabel,
733
+ slideshowControlsProps: slideshowControlsProps,
734
+ images: images,
735
+ zoomInButtonProps: zoomInButtonProps,
736
+ zoomOutButtonProps: zoomOutButtonProps,
737
+ footerRef: footerRef,
738
+ activeImageRef: useMergeRefs(propImageRef, imageRef),
739
+ currentPaginationItemRef: currentPaginationItemRef
740
+ })
741
+ })
742
+ })
743
+ });
744
+ });
745
+ Inner.displayName = COMPONENT_NAME;
746
+ Inner.className = CLASSNAME;
747
+
748
+ /**
749
+ * ImageLightbox component.
750
+ *
751
+ * @param props Component props.
752
+ * @param ref Component ref.
753
+ * @return React element.
754
+ */
755
+ const ImageLightbox = Object.assign(Inner, {
756
+ useImageLightbox
757
+ });
758
+
759
+ export { ImageLightbox };