@banzamel/mineralui 1.9.1 → 1.10.2

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 (578) hide show
  1. package/README.md +22 -55
  2. package/dist/MAvatar-BElYyQXH.cjs +2 -0
  3. package/dist/MAvatar-BElYyQXH.cjs.map +1 -0
  4. package/dist/MAvatar-CIvYzQV4.js +63 -0
  5. package/dist/MAvatar-CIvYzQV4.js.map +1 -0
  6. package/dist/{MButton-C1pnL4_j.js → MButton-C94fZ3l9.js} +1 -1
  7. package/dist/{MButton-C1pnL4_j.js.map → MButton-C94fZ3l9.js.map} +1 -1
  8. package/dist/{MButton-DFRHWHzh.cjs → MButton-ouB6903s.cjs} +2 -2
  9. package/dist/{MButton-DFRHWHzh.cjs.map → MButton-ouB6903s.cjs.map} +1 -1
  10. package/dist/MButtonGroup-BhGt-Yy1.js +30 -0
  11. package/dist/MButtonGroup-BhGt-Yy1.js.map +1 -0
  12. package/dist/MButtonGroup-yumQneDa.cjs +2 -0
  13. package/dist/MButtonGroup-yumQneDa.cjs.map +1 -0
  14. package/dist/MCard-9ucghJJs.js +89 -0
  15. package/dist/MCard-9ucghJJs.js.map +1 -0
  16. package/dist/MCard-Bg_R86Gr.cjs +2 -0
  17. package/dist/MCard-Bg_R86Gr.cjs.map +1 -0
  18. package/dist/{MCheckbox-B7SpcD4H.js → MCheckbox-B-nT2OBE.js} +1 -1
  19. package/dist/{MCheckbox-B7SpcD4H.js.map → MCheckbox-B-nT2OBE.js.map} +1 -1
  20. package/dist/{MCheckbox-Dn3p_9-1.cjs → MCheckbox-Cbk5hwzJ.cjs} +2 -2
  21. package/dist/{MCheckbox-Dn3p_9-1.cjs.map → MCheckbox-Cbk5hwzJ.cjs.map} +1 -1
  22. package/dist/MDetailList-CpwrF22b.cjs +2 -0
  23. package/dist/MDetailList-CpwrF22b.cjs.map +1 -0
  24. package/dist/MDetailList-Gh5Y0UOx.js +89 -0
  25. package/dist/MDetailList-Gh5Y0UOx.js.map +1 -0
  26. package/dist/{MDropdownMenu-c9U3sEcl.cjs → MDropdownMenu-BT3u-ZJj.cjs} +2 -2
  27. package/dist/{MDropdownMenu-c9U3sEcl.cjs.map → MDropdownMenu-BT3u-ZJj.cjs.map} +1 -1
  28. package/dist/{MDropdownMenu-CeiC1tz3.js → MDropdownMenu-CAwSTZ1h.js} +2 -2
  29. package/dist/{MDropdownMenu-CeiC1tz3.js.map → MDropdownMenu-CAwSTZ1h.js.map} +1 -1
  30. package/dist/{MGalleryIllustration-Dglx_Ckc.cjs → MGalleryIllustration-D1givjFR.cjs} +2 -2
  31. package/dist/{MGalleryIllustration-Dglx_Ckc.cjs.map → MGalleryIllustration-D1givjFR.cjs.map} +1 -1
  32. package/dist/MGrid-Di7laCq4.cjs +2 -0
  33. package/dist/MGrid-Di7laCq4.cjs.map +1 -0
  34. package/dist/MGrid-yLmEteNw.js +265 -0
  35. package/dist/MGrid-yLmEteNw.js.map +1 -0
  36. package/dist/{MHeading-f3hwkW3r.cjs → MHeading-TJ5yvklz.cjs} +2 -2
  37. package/dist/{MHeading-f3hwkW3r.cjs.map → MHeading-TJ5yvklz.cjs.map} +1 -1
  38. package/dist/{MI18nProvider-DOh5xexz.cjs → MI18nProvider-bf1G7lTP.cjs} +2 -2
  39. package/dist/{MI18nProvider-DOh5xexz.cjs.map → MI18nProvider-bf1G7lTP.cjs.map} +1 -1
  40. package/dist/{MInput-IsUELgN2.js → MInput-CkbgK8eU.js} +3 -3
  41. package/dist/{MInput-IsUELgN2.js.map → MInput-CkbgK8eU.js.map} +1 -1
  42. package/dist/{MInput-BLGduKL_.cjs → MInput-ClHpIrDG.cjs} +2 -2
  43. package/dist/{MInput-BLGduKL_.cjs.map → MInput-ClHpIrDG.cjs.map} +1 -1
  44. package/dist/MInputCVC-B353PyVi.cjs +2 -0
  45. package/dist/MInputCVC-B353PyVi.cjs.map +1 -0
  46. package/dist/{MInputExpDate-CeCmw6fj.js → MInputCVC-BSHrWcEh.js} +101 -101
  47. package/dist/MInputCVC-BSHrWcEh.js.map +1 -0
  48. package/dist/{MInputSearch-_7jfFGr1.cjs → MInputSearch-D2Fr_34s.cjs} +2 -2
  49. package/dist/{MInputSearch-_7jfFGr1.cjs.map → MInputSearch-D2Fr_34s.cjs.map} +1 -1
  50. package/dist/{MInputSearch-BBxUF5pw.js → MInputSearch-Dj55a3oO.js} +3 -3
  51. package/dist/{MInputSearch-BBxUF5pw.js.map → MInputSearch-Dj55a3oO.js.map} +1 -1
  52. package/dist/{MKbd-DWTS3iS5.cjs → MKbd-CGkzxJhi.cjs} +2 -2
  53. package/dist/{MKbd-DWTS3iS5.cjs.map → MKbd-CGkzxJhi.cjs.map} +1 -1
  54. package/dist/{MKbd-v6-tJ9sP.js → MKbd-I4xDtsqc.js} +1 -1
  55. package/dist/{MKbd-v6-tJ9sP.js.map → MKbd-I4xDtsqc.js.map} +1 -1
  56. package/dist/{MLink-CRK8YvR4.cjs → MLink-CZ2FfQ0N.cjs} +2 -2
  57. package/dist/{MLink-CRK8YvR4.cjs.map → MLink-CZ2FfQ0N.cjs.map} +1 -1
  58. package/dist/{MPagination-D1hYqLDb.cjs → MPagination-CAzIIP2o.cjs} +2 -2
  59. package/dist/{MPagination-D1hYqLDb.cjs.map → MPagination-CAzIIP2o.cjs.map} +1 -1
  60. package/dist/{MPagination-DvToi2cs.js → MPagination-CnFI794t.js} +7 -7
  61. package/dist/{MPagination-DvToi2cs.js.map → MPagination-CnFI794t.js.map} +1 -1
  62. package/dist/{MPopover-Cqz5TsHg.js → MPopover-BRuwva-c.js} +2 -2
  63. package/dist/MPopover-BRuwva-c.js.map +1 -0
  64. package/dist/MPopover-BbgAAM5Z.cjs +2 -0
  65. package/dist/MPopover-BbgAAM5Z.cjs.map +1 -0
  66. package/dist/{MPortal-BIxPtFYd.cjs → MPortal-DokH9TfY.cjs} +2 -2
  67. package/dist/{MPortal-BIxPtFYd.cjs.map → MPortal-DokH9TfY.cjs.map} +1 -1
  68. package/dist/{MSimpleGrid-CyLf-9R2.cjs → MSimpleGrid-B6Uh1XJY.cjs} +2 -2
  69. package/dist/{MSimpleGrid-CyLf-9R2.cjs.map → MSimpleGrid-B6Uh1XJY.cjs.map} +1 -1
  70. package/dist/{MSimpleGrid-Bojj4xKH.js → MSimpleGrid-Ds14eBrD.js} +1 -1
  71. package/dist/{MSimpleGrid-Bojj4xKH.js.map → MSimpleGrid-Ds14eBrD.js.map} +1 -1
  72. package/dist/MSkeleton-BpylRABV.js +53 -0
  73. package/dist/MSkeleton-BpylRABV.js.map +1 -0
  74. package/dist/MSkeleton-JMkJFzu9.cjs +2 -0
  75. package/dist/MSkeleton-JMkJFzu9.cjs.map +1 -0
  76. package/dist/{MSlider-CqrusKJQ.js → MSlider-5141rKeH.js} +1 -1
  77. package/dist/{MSlider-CqrusKJQ.js.map → MSlider-5141rKeH.js.map} +1 -1
  78. package/dist/{MSlider-qCGmD4UA.cjs → MSlider-PyXLKckL.cjs} +2 -2
  79. package/dist/{MSlider-qCGmD4UA.cjs.map → MSlider-PyXLKckL.cjs.map} +1 -1
  80. package/dist/MStack-B8JtyM10.js +39 -0
  81. package/dist/MStack-B8JtyM10.js.map +1 -0
  82. package/dist/MStack-DDn2bYBQ.cjs +2 -0
  83. package/dist/MStack-DDn2bYBQ.cjs.map +1 -0
  84. package/dist/{MSurface-odrvQXkb.js → MSurface-B-sjyczH.js} +34 -3
  85. package/dist/MSurface-B-sjyczH.js.map +1 -0
  86. package/dist/MSurface-WsYGNGX5.cjs +2 -0
  87. package/dist/MSurface-WsYGNGX5.cjs.map +1 -0
  88. package/dist/{MTag-DgB6ukFJ.js → MTag-CKM8lXD6.js} +3 -3
  89. package/dist/{MTag-DgB6ukFJ.js.map → MTag-CKM8lXD6.js.map} +1 -1
  90. package/dist/{MTag-DZqV4S13.cjs → MTag-Dez1GOX0.cjs} +2 -2
  91. package/dist/{MTag-DZqV4S13.cjs.map → MTag-Dez1GOX0.cjs.map} +1 -1
  92. package/dist/{MText-BHbI7KJO.cjs → MText-CAbqC2qZ.cjs} +2 -2
  93. package/dist/{MText-BHbI7KJO.cjs.map → MText-CAbqC2qZ.cjs.map} +1 -1
  94. package/dist/{MTooltip-Dq2vYf3G.cjs → MTooltip-C-x_SqMx.cjs} +2 -2
  95. package/dist/{MTooltip-Dq2vYf3G.cjs.map → MTooltip-C-x_SqMx.cjs.map} +1 -1
  96. package/dist/{MTooltip-jSf4VBtB.js → MTooltip-Cbj80F3o.js} +1 -1
  97. package/dist/{MTooltip-jSf4VBtB.js.map → MTooltip-Cbj80F3o.js.map} +1 -1
  98. package/dist/MTreeView-B7IWHmGc.cjs +2 -0
  99. package/dist/MTreeView-B7IWHmGc.cjs.map +1 -0
  100. package/dist/MTreeView-DMTzRk6c.js +315 -0
  101. package/dist/MTreeView-DMTzRk6c.js.map +1 -0
  102. package/dist/{arduino-Bm509TuR.cjs → arduino-CFZS94LP.cjs} +1 -1
  103. package/dist/arduino-CFZS94LP.cjs.map +1 -0
  104. package/dist/{arduino-C5s1z3P1.js → arduino-DWEBiENP.js} +2 -2
  105. package/dist/arduino-DWEBiENP.js.map +1 -0
  106. package/dist/{bash-RIFbRcCe.js → bash-DQsQM8so.js} +2 -2
  107. package/dist/bash-DQsQM8so.js.map +1 -0
  108. package/dist/{bash-CyBbinAU.cjs → bash-Dl1TvWHd.cjs} +1 -1
  109. package/dist/bash-Dl1TvWHd.cjs.map +1 -0
  110. package/dist/{c-DAywn1DE.js → c-BgkSGJWN.js} +2 -2
  111. package/dist/c-BgkSGJWN.js.map +1 -0
  112. package/dist/{c-DGOxo0dj.cjs → c-PUMyVGnz.cjs} +1 -1
  113. package/dist/c-PUMyVGnz.cjs.map +1 -0
  114. package/dist/cards-23tpYjxc.js +1207 -0
  115. package/dist/cards-23tpYjxc.js.map +1 -0
  116. package/dist/cards-CK6RnNZi.cjs +2 -0
  117. package/dist/cards-CK6RnNZi.cjs.map +1 -0
  118. package/dist/cards.cjs +1 -1
  119. package/dist/cards.js +3 -3
  120. package/dist/components/cards/MCardGrid/index.d.ts +1 -1
  121. package/dist/components/cards/index.d.ts +1 -9
  122. package/dist/components/data/index.d.ts +4 -24
  123. package/dist/components/data/useMCardGrid.d.ts +36 -0
  124. package/dist/components/data/useMTable.d.ts +69 -0
  125. package/dist/components/display/index.d.ts +0 -8
  126. package/dist/components/feedback/MProgressRing/MProgressRing.d.ts +8 -0
  127. package/dist/components/feedback/MProgressRing/MProgressRing.types.d.ts +21 -0
  128. package/dist/components/feedback/MProgressRing/index.d.ts +2 -0
  129. package/dist/components/feedback/index.d.ts +2 -1
  130. package/dist/components/layout/MCanvasGrid/MCanvasGrid.d.ts +5 -0
  131. package/dist/components/layout/MCanvasGrid/MCanvasGrid.types.d.ts +43 -0
  132. package/dist/components/layout/MCanvasGrid/ScaleToFit.d.ts +19 -0
  133. package/dist/components/layout/MCanvasGrid/index.d.ts +2 -0
  134. package/dist/components/layout/index.d.ts +2 -4
  135. package/dist/components/media/MAvatar/MAvatar.d.ts +1 -1
  136. package/dist/components/media/MAvatar/MAvatar.types.d.ts +9 -0
  137. package/dist/components/media/MAvatar/index.d.ts +1 -1
  138. package/dist/components/media/index.d.ts +1 -17
  139. package/dist/components/typography/MHeading/MHeading.d.ts +1 -1
  140. package/dist/{controls-CcbEqqWo.js → controls-B3P4zKoA.js} +85 -63
  141. package/dist/controls-B3P4zKoA.js.map +1 -0
  142. package/dist/controls-DwWfqfDX.cjs +2 -0
  143. package/dist/controls-DwWfqfDX.cjs.map +1 -0
  144. package/dist/controls.cjs +1 -1
  145. package/dist/controls.js +6 -6
  146. package/dist/{core-DAox0BHy.cjs → core-B2klLGki.cjs} +1 -1
  147. package/dist/core-B2klLGki.cjs.map +1 -0
  148. package/dist/{core-BUYr52VU.js → core-BdOw9NlN.js} +1 -1
  149. package/dist/core-BdOw9NlN.js.map +1 -0
  150. package/dist/{cpp-D-FtdQo9.cjs → cpp-C_DS-imi.cjs} +1 -1
  151. package/dist/cpp-C_DS-imi.cjs.map +1 -0
  152. package/dist/{cpp-Y9cHXDal.js → cpp-ChrqJwqu.js} +2 -2
  153. package/dist/cpp-ChrqJwqu.js.map +1 -0
  154. package/dist/{css-DCYZ-Rs6.cjs → css-Brdthutg.cjs} +1 -1
  155. package/dist/css-Brdthutg.cjs.map +1 -0
  156. package/dist/{css-C__ffGj6.js → css-DL_ID0lZ.js} +2 -2
  157. package/dist/css-DL_ID0lZ.js.map +1 -0
  158. package/dist/data-B5KYb0SW.js +463 -0
  159. package/dist/data-B5KYb0SW.js.map +1 -0
  160. package/dist/data-CDZvakQ8.cjs +2 -0
  161. package/dist/data-CDZvakQ8.cjs.map +1 -0
  162. package/dist/data.cjs +1 -1
  163. package/dist/data.js +3 -4
  164. package/dist/display-2Vak-RyH.cjs +3 -0
  165. package/dist/display-2Vak-RyH.cjs.map +1 -0
  166. package/dist/{display-C7YRf4Ze.js → display-ChhvaSPc.js} +288 -241
  167. package/dist/display-ChhvaSPc.js.map +1 -0
  168. package/dist/display.cjs +1 -1
  169. package/dist/display.js +3 -4
  170. package/dist/dropdowns-BP2HBR-x.cjs +2 -0
  171. package/dist/dropdowns-BP2HBR-x.cjs.map +1 -0
  172. package/dist/dropdowns-C9jREjLg.js +1752 -0
  173. package/dist/dropdowns-C9jREjLg.js.map +1 -0
  174. package/dist/dropdowns.cjs +1 -1
  175. package/dist/dropdowns.js +1 -1
  176. package/dist/feedback-DnuJtYUI.cjs +2 -0
  177. package/dist/feedback-DnuJtYUI.cjs.map +1 -0
  178. package/dist/feedback-urwS5wps.js +290 -0
  179. package/dist/feedback-urwS5wps.js.map +1 -0
  180. package/dist/feedback.cjs +1 -1
  181. package/dist/feedback.js +5 -6
  182. package/dist/{form-BiPQ8SRK.js → form-CWoOQ_qo.js} +1 -1
  183. package/dist/{form-BiPQ8SRK.js.map → form-CWoOQ_qo.js.map} +1 -1
  184. package/dist/{form-DlXWN2ul.cjs → form-D5F1kTIA.cjs} +2 -2
  185. package/dist/{form-DlXWN2ul.cjs.map → form-D5F1kTIA.cjs.map} +1 -1
  186. package/dist/form.cjs +1 -1
  187. package/dist/form.js +1 -1
  188. package/dist/i18n.cjs +1 -1
  189. package/dist/icons/MIcon.types.d.ts +6 -0
  190. package/dist/icons/glyphs/MAirplaneFillIcon.d.ts +2 -0
  191. package/dist/icons/glyphs/{MBrandIconsV2.d.ts → MAirplaneIcon.d.ts} +1 -1
  192. package/dist/icons/glyphs/MApartmentIcon.d.ts +2 -0
  193. package/dist/icons/glyphs/{MChartIconV2.d.ts → MArchiveIcon.d.ts} +1 -1
  194. package/dist/icons/glyphs/MBookIcon.d.ts +2 -0
  195. package/dist/icons/glyphs/MBookOpenFillIcon.d.ts +2 -0
  196. package/dist/icons/glyphs/{MSearchIconV2.d.ts → MBookOpenIcon.d.ts} +1 -1
  197. package/dist/icons/glyphs/MBookmarkFillIcon.d.ts +2 -0
  198. package/dist/icons/glyphs/MBookmarkIcon.d.ts +2 -0
  199. package/dist/icons/glyphs/MBooksIcon.d.ts +2 -0
  200. package/dist/icons/glyphs/MCarFillIcon.d.ts +2 -0
  201. package/dist/icons/glyphs/MCarIcon.d.ts +2 -0
  202. package/dist/icons/glyphs/MClassroomIcon.d.ts +2 -0
  203. package/dist/icons/glyphs/MColumnsIcon.d.ts +2 -0
  204. package/dist/icons/glyphs/{MUserIconV2.d.ts → MFlagAtIcon.d.ts} +1 -1
  205. package/dist/icons/glyphs/{MHomeIconV2.d.ts → MFlagAuIcon.d.ts} +1 -1
  206. package/dist/icons/glyphs/MFlagChIcon.d.ts +2 -0
  207. package/dist/icons/glyphs/MFlagIeIcon.d.ts +2 -0
  208. package/dist/icons/glyphs/MFlagKrIcon.d.ts +2 -0
  209. package/dist/icons/glyphs/MFlagNlIcon.d.ts +2 -0
  210. package/dist/icons/glyphs/MFlagNoIcon.d.ts +2 -0
  211. package/dist/icons/glyphs/MFlagPtIcon.d.ts +2 -0
  212. package/dist/icons/glyphs/MFlagSeIcon.d.ts +2 -0
  213. package/dist/icons/glyphs/MFlagTrIcon.d.ts +2 -0
  214. package/dist/icons/glyphs/MFlatIcon.d.ts +2 -0
  215. package/dist/icons/glyphs/MHistoryIcon.d.ts +2 -0
  216. package/dist/icons/glyphs/MHouseIcon.d.ts +2 -0
  217. package/dist/icons/glyphs/MKeyIcon.d.ts +2 -0
  218. package/dist/icons/glyphs/MLessonIcon.d.ts +2 -0
  219. package/dist/icons/glyphs/MListIcon.d.ts +2 -0
  220. package/dist/icons/glyphs/MMakeupIcon.d.ts +2 -0
  221. package/dist/icons/glyphs/MMoveIcon.d.ts +2 -0
  222. package/dist/icons/glyphs/MPlayIcon.d.ts +2 -0
  223. package/dist/icons/glyphs/MPrinterIcon.d.ts +2 -0
  224. package/dist/icons/glyphs/MRedoIcon.d.ts +2 -0
  225. package/dist/icons/glyphs/MResizeIcon.d.ts +2 -0
  226. package/dist/icons/glyphs/MRoomIcon.d.ts +2 -0
  227. package/dist/icons/glyphs/MShareIcon.d.ts +2 -0
  228. package/dist/icons/glyphs/MShipIcon.d.ts +2 -0
  229. package/dist/icons/glyphs/MShopIcon.d.ts +2 -0
  230. package/dist/icons/glyphs/MStopIcon.d.ts +2 -0
  231. package/dist/icons/glyphs/MTaskIcon.d.ts +2 -0
  232. package/dist/icons/glyphs/MUndoIcon.d.ts +2 -0
  233. package/dist/icons/glyphs/MUrgentIcon.d.ts +2 -0
  234. package/dist/icons/glyphs/MUserCheckIcon.d.ts +2 -0
  235. package/dist/icons/glyphs/MUserMinusIcon.d.ts +2 -0
  236. package/dist/icons/glyphs/MUserPlusIcon.d.ts +2 -0
  237. package/dist/icons/index.d.ts +48 -13
  238. package/dist/icons-BHFwX7ri.cjs +2 -0
  239. package/dist/icons-BHFwX7ri.cjs.map +1 -0
  240. package/dist/{icons-CfpYxnfg.js → icons-DLP-Rs6z.js} +1325 -1925
  241. package/dist/icons-DLP-Rs6z.js.map +1 -0
  242. package/dist/icons.cjs +1 -1
  243. package/dist/icons.js +2 -2
  244. package/dist/illustrations.cjs +1 -1
  245. package/dist/index.cjs +1 -2
  246. package/dist/index.d.ts +0 -2
  247. package/dist/index.js +53 -93
  248. package/dist/{inputs-BJMmyEdL.cjs → inputs-D38ib0gM.cjs} +2 -2
  249. package/dist/{inputs-BJMmyEdL.cjs.map → inputs-D38ib0gM.cjs.map} +1 -1
  250. package/dist/{inputs-CNPeF6gb.js → inputs-bbwdb6m3.js} +181 -181
  251. package/dist/{inputs-CNPeF6gb.js.map → inputs-bbwdb6m3.js.map} +1 -1
  252. package/dist/inputs.cjs +1 -1
  253. package/dist/inputs.js +5 -5
  254. package/dist/{javascript-ClV78Svx.js → javascript-B5hepBcv.js} +2 -2
  255. package/dist/javascript-B5hepBcv.js.map +1 -0
  256. package/dist/{javascript-_Sr9cnsG.cjs → javascript-DFYAIwfO.cjs} +1 -1
  257. package/dist/javascript-DFYAIwfO.cjs.map +1 -0
  258. package/dist/{json-BFetU4Pi.cjs → json-BTHMevf2.cjs} +1 -1
  259. package/dist/json-BTHMevf2.cjs.map +1 -0
  260. package/dist/{json-Dz6EkGZR.js → json-DTBnkegk.js} +2 -2
  261. package/dist/json-DTBnkegk.js.map +1 -0
  262. package/dist/layout-BgfQpVOU.js +823 -0
  263. package/dist/layout-BgfQpVOU.js.map +1 -0
  264. package/dist/layout-D9LAqtZp.cjs +2 -0
  265. package/dist/layout-D9LAqtZp.cjs.map +1 -0
  266. package/dist/layout.cjs +1 -1
  267. package/dist/layout.js +7 -8
  268. package/dist/licensing-f5KYVz7D.js +28 -0
  269. package/dist/licensing-f5KYVz7D.js.map +1 -0
  270. package/dist/licensing-sRHTvX0B.cjs +2 -0
  271. package/dist/licensing-sRHTvX0B.cjs.map +1 -0
  272. package/dist/{locale-Bz2JXxDZ.cjs → locale-CJWWjFm-.cjs} +2 -2
  273. package/dist/{locale-Bz2JXxDZ.cjs.map → locale-CJWWjFm-.cjs.map} +1 -1
  274. package/dist/{locale-CS1-IY_I.js → locale-JX_gX03k.js} +1 -1
  275. package/dist/{locale-CS1-IY_I.js.map → locale-JX_gX03k.js.map} +1 -1
  276. package/dist/media-CM-uEUrV.js +402 -0
  277. package/dist/media-CM-uEUrV.js.map +1 -0
  278. package/dist/media-CnjA4Ruo.cjs +2 -0
  279. package/dist/media-CnjA4Ruo.cjs.map +1 -0
  280. package/dist/media.cjs +1 -1
  281. package/dist/media.js +3 -4
  282. package/dist/overlays-BpDz9ddf.cjs +2 -0
  283. package/dist/overlays-BpDz9ddf.cjs.map +1 -0
  284. package/dist/overlays-NwVsvmlb.js +568 -0
  285. package/dist/overlays-NwVsvmlb.js.map +1 -0
  286. package/dist/overlays.cjs +1 -1
  287. package/dist/overlays.js +4 -6
  288. package/dist/{php-jOdR0XS8.cjs → php-ClxZCTCr.cjs} +1 -1
  289. package/dist/php-ClxZCTCr.cjs.map +1 -0
  290. package/dist/{php-5Erp5xxI.js → php-DwgDg57J.js} +2 -2
  291. package/dist/php-DwgDg57J.js.map +1 -0
  292. package/dist/primitives.cjs +1 -1
  293. package/dist/primitives.js +1 -1
  294. package/dist/style-runtime.cjs +1 -1
  295. package/dist/style-runtime.js +1 -1
  296. package/dist/styles.css +1 -1
  297. package/dist/{theme-DsTDooyX.cjs → theme-yQQAPTkp.cjs} +2 -2
  298. package/dist/{theme-DsTDooyX.cjs.map → theme-yQQAPTkp.cjs.map} +1 -1
  299. package/dist/theme.cjs +1 -1
  300. package/dist/{typescript-C65sNL5w.cjs → typescript-C8NJZXwD.cjs} +1 -1
  301. package/dist/typescript-C8NJZXwD.cjs.map +1 -0
  302. package/dist/{typescript-wdQKWfxO.js → typescript-MSi2XC0t.js} +2 -2
  303. package/dist/typescript-MSi2XC0t.js.map +1 -0
  304. package/dist/typography-BHhyTO1V.js +42 -0
  305. package/dist/typography-BHhyTO1V.js.map +1 -0
  306. package/dist/typography-Qb1U4eiY.cjs +2 -0
  307. package/dist/typography-Qb1U4eiY.cjs.map +1 -0
  308. package/dist/typography.cjs +1 -1
  309. package/dist/typography.js +3 -4
  310. package/dist/{useGhostText-Dg4P606B.cjs → useGhostText-BFaUUKid.cjs} +2 -2
  311. package/dist/{useGhostText-Dg4P606B.cjs.map → useGhostText-BFaUUKid.cjs.map} +1 -1
  312. package/dist/{useInteractionEffect-Bo8285cg.cjs → useInteractionEffect-BH2dgQla.cjs} +2 -2
  313. package/dist/{useInteractionEffect-Bo8285cg.cjs.map → useInteractionEffect-BH2dgQla.cjs.map} +1 -1
  314. package/dist/{useKeyboardNav-CyeQtqF8.cjs → useKeyboardNav-CtGPfQX7.cjs} +2 -2
  315. package/dist/{useKeyboardNav-CyeQtqF8.cjs.map → useKeyboardNav-CtGPfQX7.cjs.map} +1 -1
  316. package/dist/utils/licensing.d.ts +1 -82
  317. package/dist/utils.cjs +1 -1
  318. package/dist/utils.js +1 -1
  319. package/dist/{xml-a3b-XevT.js → xml-CnKYdLjT.js} +2 -2
  320. package/dist/xml-CnKYdLjT.js.map +1 -0
  321. package/dist/{xml-B2okahIr.cjs → xml-jypnnWFn.cjs} +1 -1
  322. package/dist/xml-jypnnWFn.cjs.map +1 -0
  323. package/package.json +6 -29
  324. package/dist/MAvatar-D_dVAPaR.js +0 -57
  325. package/dist/MAvatar-D_dVAPaR.js.map +0 -1
  326. package/dist/MAvatar-DzZPRbot.cjs +0 -2
  327. package/dist/MAvatar-DzZPRbot.cjs.map +0 -1
  328. package/dist/MAvatarStack-CrhkO_SO.js +0 -330
  329. package/dist/MAvatarStack-CrhkO_SO.js.map +0 -1
  330. package/dist/MAvatarStack-DN79aJo1.cjs +0 -2
  331. package/dist/MAvatarStack-DN79aJo1.cjs.map +0 -1
  332. package/dist/MCookieBootstrap-BUqtJO3m.cjs +0 -2
  333. package/dist/MCookieBootstrap-BUqtJO3m.cjs.map +0 -1
  334. package/dist/MCookieBootstrap-Btt49Iuq.js +0 -436
  335. package/dist/MCookieBootstrap-Btt49Iuq.js.map +0 -1
  336. package/dist/MDataTable-7nJuwzJR.cjs +0 -2
  337. package/dist/MDataTable-7nJuwzJR.cjs.map +0 -1
  338. package/dist/MDataTable-CQt_pINO.js +0 -297
  339. package/dist/MDataTable-CQt_pINO.js.map +0 -1
  340. package/dist/MDrawer-B83--EVv.js +0 -122
  341. package/dist/MDrawer-B83--EVv.js.map +0 -1
  342. package/dist/MDrawer-D6cy9K7J.cjs +0 -2
  343. package/dist/MDrawer-D6cy9K7J.cjs.map +0 -1
  344. package/dist/MGrid-B-fP4GME.cjs +0 -2
  345. package/dist/MGrid-B-fP4GME.cjs.map +0 -1
  346. package/dist/MGrid-DVluuula.js +0 -182
  347. package/dist/MGrid-DVluuula.js.map +0 -1
  348. package/dist/MInputExpDate-CeCmw6fj.js.map +0 -1
  349. package/dist/MInputExpDate-DZ8JtSjs.cjs +0 -2
  350. package/dist/MInputExpDate-DZ8JtSjs.cjs.map +0 -1
  351. package/dist/MModal-DiTjBO8B.js +0 -69
  352. package/dist/MModal-DiTjBO8B.js.map +0 -1
  353. package/dist/MModal-eJDG6riB.cjs +0 -2
  354. package/dist/MModal-eJDG6riB.cjs.map +0 -1
  355. package/dist/MPopover-Cqz5TsHg.js.map +0 -1
  356. package/dist/MPopover-CxxaY9kr.cjs +0 -2
  357. package/dist/MPopover-CxxaY9kr.cjs.map +0 -1
  358. package/dist/MQrCode-HO2YIC7e.cjs +0 -2
  359. package/dist/MQrCode-HO2YIC7e.cjs.map +0 -1
  360. package/dist/MQrCode-Kb997gaE.js +0 -465
  361. package/dist/MQrCode-Kb997gaE.js.map +0 -1
  362. package/dist/MSkeleton-CVofhuDp.js +0 -136
  363. package/dist/MSkeleton-CVofhuDp.js.map +0 -1
  364. package/dist/MSkeleton-CuYA8eN3.cjs +0 -2
  365. package/dist/MSkeleton-CuYA8eN3.cjs.map +0 -1
  366. package/dist/MStack-C4Eocfb5.js +0 -70
  367. package/dist/MStack-C4Eocfb5.js.map +0 -1
  368. package/dist/MStack-w8XcuIJK.cjs +0 -2
  369. package/dist/MStack-w8XcuIJK.cjs.map +0 -1
  370. package/dist/MSubText-C-N15d4Z.js +0 -17
  371. package/dist/MSubText-C-N15d4Z.js.map +0 -1
  372. package/dist/MSubText-CIMKPb8o.cjs +0 -2
  373. package/dist/MSubText-CIMKPb8o.cjs.map +0 -1
  374. package/dist/MSurface-KvAS2hkl.cjs +0 -2
  375. package/dist/MSurface-KvAS2hkl.cjs.map +0 -1
  376. package/dist/MSurface-odrvQXkb.js.map +0 -1
  377. package/dist/MTabs-BQZ--mMq.js +0 -89
  378. package/dist/MTabs-BQZ--mMq.js.map +0 -1
  379. package/dist/MTabs-DeUn6bIp.cjs +0 -2
  380. package/dist/MTabs-DeUn6bIp.cjs.map +0 -1
  381. package/dist/MTimeAgo-DI3DF7bD.cjs +0 -2
  382. package/dist/MTimeAgo-DI3DF7bD.cjs.map +0 -1
  383. package/dist/MTimeAgo-Db8gOade.js +0 -51
  384. package/dist/MTimeAgo-Db8gOade.js.map +0 -1
  385. package/dist/MToggle-B6emKoKq.js +0 -48
  386. package/dist/MToggle-B6emKoKq.js.map +0 -1
  387. package/dist/MToggle-BVJm5Bdk.cjs +0 -2
  388. package/dist/MToggle-BVJm5Bdk.cjs.map +0 -1
  389. package/dist/MTreeView-AqH8XMPz.js +0 -516
  390. package/dist/MTreeView-AqH8XMPz.js.map +0 -1
  391. package/dist/MTreeView-Dp9qbqQh.cjs +0 -2
  392. package/dist/MTreeView-Dp9qbqQh.cjs.map +0 -1
  393. package/dist/arduino-Bm509TuR.cjs.map +0 -1
  394. package/dist/arduino-C5s1z3P1.js.map +0 -1
  395. package/dist/bash-CyBbinAU.cjs.map +0 -1
  396. package/dist/bash-RIFbRcCe.js.map +0 -1
  397. package/dist/c-DAywn1DE.js.map +0 -1
  398. package/dist/c-DGOxo0dj.cjs.map +0 -1
  399. package/dist/cards-C50fpYud.js +0 -1539
  400. package/dist/cards-C50fpYud.js.map +0 -1
  401. package/dist/cards-Ci1FoV9C.cjs +0 -2
  402. package/dist/cards-Ci1FoV9C.cjs.map +0 -1
  403. package/dist/components/cards/MCardBusiness/MCardBusiness.d.ts +0 -2
  404. package/dist/components/cards/MCardBusiness/MCardBusiness.types.d.ts +0 -37
  405. package/dist/components/cards/MCardBusiness/index.d.ts +0 -4
  406. package/dist/components/cards/MCardFinance/MCardFinance.d.ts +0 -2
  407. package/dist/components/cards/MCardFinance/MCardFinance.types.d.ts +0 -17
  408. package/dist/components/cards/MCardFinance/index.d.ts +0 -4
  409. package/dist/components/data/MCalendarBoard/MCalendarBoard.d.ts +0 -8
  410. package/dist/components/data/MCalendarBoard/MCalendarBoard.types.d.ts +0 -186
  411. package/dist/components/data/MCalendarBoard/index.d.ts +0 -4
  412. package/dist/components/data/MChart/MAreaChart.d.ts +0 -2
  413. package/dist/components/data/MChart/MBarChart.d.ts +0 -2
  414. package/dist/components/data/MChart/MChart.d.ts +0 -2
  415. package/dist/components/data/MChart/MChart.types.d.ts +0 -95
  416. package/dist/components/data/MChart/MLineChart.d.ts +0 -2
  417. package/dist/components/data/MChart/MPieChart.d.ts +0 -2
  418. package/dist/components/data/MChart/charts/MAreaChart.d.ts +0 -27
  419. package/dist/components/data/MChart/charts/MBarChart.d.ts +0 -26
  420. package/dist/components/data/MChart/charts/MLineChart.d.ts +0 -26
  421. package/dist/components/data/MChart/charts/MPieChart.d.ts +0 -19
  422. package/dist/components/data/MChart/index.d.ts +0 -5
  423. package/dist/components/data/MChart/parts/ChartAxis.d.ts +0 -13
  424. package/dist/components/data/MChart/parts/ChartDefs.d.ts +0 -1
  425. package/dist/components/data/MChart/parts/ChartGrid.d.ts +0 -10
  426. package/dist/components/data/MChart/parts/ChartLegend.d.ts +0 -9
  427. package/dist/components/data/MChart/parts/ChartTooltip.d.ts +0 -7
  428. package/dist/components/data/MChart/utils/formats.d.ts +0 -3
  429. package/dist/components/data/MChart/utils/paths.d.ts +0 -10
  430. package/dist/components/data/MChart/utils/scales.d.ts +0 -7
  431. package/dist/components/data/MChat/MChat.d.ts +0 -2
  432. package/dist/components/data/MChat/MChat.types.d.ts +0 -77
  433. package/dist/components/data/MChat/MChatBody.d.ts +0 -2
  434. package/dist/components/data/MChat/MChatContext.d.ts +0 -6
  435. package/dist/components/data/MChat/MChatConversationItem.d.ts +0 -2
  436. package/dist/components/data/MChat/MChatConversationList.d.ts +0 -2
  437. package/dist/components/data/MChat/MChatHeader.d.ts +0 -2
  438. package/dist/components/data/MChat/MChatInput.d.ts +0 -2
  439. package/dist/components/data/MChat/MChatMessage.d.ts +0 -2
  440. package/dist/components/data/MChat/MChatTypingIndicator.d.ts +0 -2
  441. package/dist/components/data/MChat/emojis.d.ts +0 -2
  442. package/dist/components/data/MChat/index.d.ts +0 -9
  443. package/dist/components/data/MFileManager/MFileManager.d.ts +0 -2
  444. package/dist/components/data/MFileManager/MFileManager.types.d.ts +0 -70
  445. package/dist/components/data/MFileManager/index.d.ts +0 -4
  446. package/dist/components/data/MSparkline/MSparkline.d.ts +0 -2
  447. package/dist/components/data/MSparkline/MSparkline.types.d.ts +0 -15
  448. package/dist/components/data/MSparkline/index.d.ts +0 -2
  449. package/dist/components/data/MTimelineCalendar/DayStrip.d.ts +0 -11
  450. package/dist/components/data/MTimelineCalendar/EventPopover.d.ts +0 -18
  451. package/dist/components/data/MTimelineCalendar/MTimelineCalendar.d.ts +0 -2
  452. package/dist/components/data/MTimelineCalendar/MTimelineCalendar.helpers.d.ts +0 -55
  453. package/dist/components/data/MTimelineCalendar/MTimelineCalendar.types.d.ts +0 -89
  454. package/dist/components/data/MTimelineCalendar/index.d.ts +0 -2
  455. package/dist/components/display/MQrCode/MQrCode.d.ts +0 -2
  456. package/dist/components/display/MQrCode/MQrCode.types.d.ts +0 -11
  457. package/dist/components/display/MQrCode/index.d.ts +0 -4
  458. package/dist/components/feedback/MCookie/MCookieBanner/MCookieBanner.d.ts +0 -3
  459. package/dist/components/feedback/MCookie/MCookieBanner/MCookieBanner.types.d.ts +0 -27
  460. package/dist/components/feedback/MCookie/MCookieBanner/index.d.ts +0 -2
  461. package/dist/components/feedback/MCookie/MCookieBootstrap/MCookieBootstrap.d.ts +0 -6
  462. package/dist/components/feedback/MCookie/MCookieBootstrap/MCookieBootstrap.script.d.ts +0 -4
  463. package/dist/components/feedback/MCookie/MCookieBootstrap/MCookieBootstrap.types.d.ts +0 -90
  464. package/dist/components/feedback/MCookie/MCookieBootstrap/index.d.ts +0 -3
  465. package/dist/components/feedback/MCookie/MCookieConsent/MCookieConsent.d.ts +0 -2
  466. package/dist/components/feedback/MCookie/MCookieConsent/MCookieConsent.types.d.ts +0 -11
  467. package/dist/components/feedback/MCookie/MCookieConsent/index.d.ts +0 -2
  468. package/dist/components/feedback/MCookie/MCookieConsentProvider/MCookieConsent.defaults.d.ts +0 -9
  469. package/dist/components/feedback/MCookie/MCookieConsentProvider/MCookieConsent.inventory.d.ts +0 -6
  470. package/dist/components/feedback/MCookie/MCookieConsentProvider/MCookieConsent.storage.d.ts +0 -11
  471. package/dist/components/feedback/MCookie/MCookieConsentProvider/MCookieConsent.types.d.ts +0 -95
  472. package/dist/components/feedback/MCookie/MCookieConsentProvider/MCookieConsentContext.d.ts +0 -4
  473. package/dist/components/feedback/MCookie/MCookieConsentProvider/MCookieConsentProvider.d.ts +0 -2
  474. package/dist/components/feedback/MCookie/MCookieConsentProvider/index.d.ts +0 -3
  475. package/dist/components/feedback/MCookie/MCookieDeclaration/MCookieDeclaration.d.ts +0 -2
  476. package/dist/components/feedback/MCookie/MCookieDeclaration/MCookieDeclaration.types.d.ts +0 -18
  477. package/dist/components/feedback/MCookie/MCookieDeclaration/index.d.ts +0 -2
  478. package/dist/components/feedback/MCookie/MCookiePreferences/MCookiePreferences.d.ts +0 -2
  479. package/dist/components/feedback/MCookie/MCookiePreferences/MCookiePreferences.types.d.ts +0 -25
  480. package/dist/components/feedback/MCookie/MCookiePreferences/index.d.ts +0 -2
  481. package/dist/components/feedback/MCookie/MCookieTrigger/MCookieTrigger.d.ts +0 -2
  482. package/dist/components/feedback/MCookie/MCookieTrigger/MCookieTrigger.types.d.ts +0 -7
  483. package/dist/components/feedback/MCookie/MCookieTrigger/index.d.ts +0 -2
  484. package/dist/components/feedback/MCookie/index.d.ts +0 -16
  485. package/dist/components/layout/MTopbar/MTopbar.d.ts +0 -2
  486. package/dist/components/layout/MTopbar/MTopbar.types.d.ts +0 -37
  487. package/dist/components/layout/MTopbar/index.d.ts +0 -2
  488. package/dist/components/media/MAvatarStack/MAvatarStack.d.ts +0 -2
  489. package/dist/components/media/MAvatarStack/MAvatarStack.types.d.ts +0 -27
  490. package/dist/components/media/MAvatarStack/index.d.ts +0 -2
  491. package/dist/components/media/MMasonry/MMasonry.d.ts +0 -2
  492. package/dist/components/media/MMasonry/MMasonry.types.d.ts +0 -7
  493. package/dist/components/media/MMasonry/index.d.ts +0 -2
  494. package/dist/components/media/MMasonryItem/MMasonryItem.d.ts +0 -2
  495. package/dist/components/media/MMasonryItem/MMasonryItem.types.d.ts +0 -14
  496. package/dist/components/media/MMasonryItem/index.d.ts +0 -2
  497. package/dist/components/media/MShowcaseCarousel/MShowcaseCarousel.d.ts +0 -2
  498. package/dist/components/media/MShowcaseCarousel/MShowcaseCarousel.types.d.ts +0 -19
  499. package/dist/components/media/MShowcaseCarousel/index.d.ts +0 -2
  500. package/dist/components/media/MShowcaseCarouselItem/MShowcaseCarouselItem.d.ts +0 -2
  501. package/dist/components/media/MShowcaseCarouselItem/MShowcaseCarouselItem.types.d.ts +0 -18
  502. package/dist/components/media/MShowcaseCarouselItem/index.d.ts +0 -2
  503. package/dist/controls-CYQxPd4U.cjs +0 -2
  504. package/dist/controls-CYQxPd4U.cjs.map +0 -1
  505. package/dist/controls-CcbEqqWo.js.map +0 -1
  506. package/dist/cookie-consent-bootstrap.cjs +0 -2
  507. package/dist/cookie-consent-bootstrap.cjs.map +0 -1
  508. package/dist/cookie-consent-bootstrap.d.ts +0 -1
  509. package/dist/cookie-consent-bootstrap.js +0 -106
  510. package/dist/cookie-consent-bootstrap.js.map +0 -1
  511. package/dist/core-BUYr52VU.js.map +0 -1
  512. package/dist/core-DAox0BHy.cjs.map +0 -1
  513. package/dist/cpp-D-FtdQo9.cjs.map +0 -1
  514. package/dist/cpp-Y9cHXDal.js.map +0 -1
  515. package/dist/css-C__ffGj6.js.map +0 -1
  516. package/dist/css-DCYZ-Rs6.cjs.map +0 -1
  517. package/dist/data-DtShJEic.cjs +0 -2
  518. package/dist/data-DtShJEic.cjs.map +0 -1
  519. package/dist/data-RXuvb9VI.js +0 -3454
  520. package/dist/data-RXuvb9VI.js.map +0 -1
  521. package/dist/display-96-TEGmZ.cjs +0 -3
  522. package/dist/display-96-TEGmZ.cjs.map +0 -1
  523. package/dist/display-C7YRf4Ze.js.map +0 -1
  524. package/dist/dropdowns-Ce3Pb2JM.cjs +0 -2
  525. package/dist/dropdowns-Ce3Pb2JM.cjs.map +0 -1
  526. package/dist/dropdowns-DfXhVlWQ.js +0 -1712
  527. package/dist/dropdowns-DfXhVlWQ.js.map +0 -1
  528. package/dist/feedback-DGT28-Zx.js +0 -1058
  529. package/dist/feedback-DGT28-Zx.js.map +0 -1
  530. package/dist/feedback-Dr7G3K_R.cjs +0 -2
  531. package/dist/feedback-Dr7G3K_R.cjs.map +0 -1
  532. package/dist/frameworkTexts-BLJcGUXz.cjs +0 -2
  533. package/dist/frameworkTexts-BLJcGUXz.cjs.map +0 -1
  534. package/dist/frameworkTexts-BTFyhWFD.js +0 -117
  535. package/dist/frameworkTexts-BTFyhWFD.js.map +0 -1
  536. package/dist/icons/MIconV2.d.ts +0 -7
  537. package/dist/icons/MIconV2Glyph.d.ts +0 -11
  538. package/dist/icons/MIconV2Scenes.d.ts +0 -41
  539. package/dist/icons/glyphs/MCalendarIconV2.d.ts +0 -2
  540. package/dist/icons/glyphs/MFlagIconsV2.d.ts +0 -19
  541. package/dist/icons/glyphs/MNavigationIconsV2.d.ts +0 -14
  542. package/dist/icons/glyphs/MSettingsIconV2.d.ts +0 -2
  543. package/dist/icons-CfpYxnfg.js.map +0 -1
  544. package/dist/icons-qCoE70hn.cjs +0 -2
  545. package/dist/icons-qCoE70hn.cjs.map +0 -1
  546. package/dist/index.cjs.map +0 -1
  547. package/dist/index.js.map +0 -1
  548. package/dist/javascript-ClV78Svx.js.map +0 -1
  549. package/dist/javascript-_Sr9cnsG.cjs.map +0 -1
  550. package/dist/json-BFetU4Pi.cjs.map +0 -1
  551. package/dist/json-Dz6EkGZR.js.map +0 -1
  552. package/dist/layout-dUrQeGc2.cjs +0 -2
  553. package/dist/layout-dUrQeGc2.cjs.map +0 -1
  554. package/dist/layout-tIq6BGQK.js +0 -711
  555. package/dist/layout-tIq6BGQK.js.map +0 -1
  556. package/dist/licensing-9sZ43Cif.cjs +0 -2
  557. package/dist/licensing-9sZ43Cif.cjs.map +0 -1
  558. package/dist/licensing-Bq78CLC_.js +0 -109
  559. package/dist/licensing-Bq78CLC_.js.map +0 -1
  560. package/dist/media-BySr5LGc.cjs +0 -2
  561. package/dist/media-BySr5LGc.cjs.map +0 -1
  562. package/dist/media-IQ4iYTs-.js +0 -391
  563. package/dist/media-IQ4iYTs-.js.map +0 -1
  564. package/dist/overlays-BabXGLEM.js +0 -392
  565. package/dist/overlays-BabXGLEM.js.map +0 -1
  566. package/dist/overlays-CTR3n21O.cjs +0 -2
  567. package/dist/overlays-CTR3n21O.cjs.map +0 -1
  568. package/dist/php-5Erp5xxI.js.map +0 -1
  569. package/dist/php-jOdR0XS8.cjs.map +0 -1
  570. package/dist/typescript-C65sNL5w.cjs.map +0 -1
  571. package/dist/typescript-wdQKWfxO.js.map +0 -1
  572. package/dist/typography-CAW17MDj.js +0 -31
  573. package/dist/typography-CAW17MDj.js.map +0 -1
  574. package/dist/typography-sbLuXqFn.cjs +0 -2
  575. package/dist/typography-sbLuXqFn.cjs.map +0 -1
  576. package/dist/utils/commandPaletteFromNavGroups.d.ts +0 -74
  577. package/dist/xml-B2okahIr.cjs.map +0 -1
  578. package/dist/xml-a3b-XevT.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"MAvatarStack-CrhkO_SO.js","names":[],"sources":["../src/components/media/MMediaLightbox/MMediaLightbox.tsx","../src/components/media/mediaPreviewRegistry.ts","../src/components/media/mediaInteraction.ts","../src/components/media/MImage/MImage.tsx","../src/components/media/MAvatarStack/MAvatarStack.tsx"],"sourcesContent":["import {useEffect, useRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport {MButton} from '../../controls'\nimport {MBadge} from '../../feedback'\nimport {MPortal} from '../../primitives'\nimport {MCloseIcon, MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MMediaLightbox.css'\n\nexport interface MMediaLightboxItem {\n src: string\n alt?: string\n caption?: string\n}\n\ninterface MMediaLightboxProps {\n open: boolean\n items: MMediaLightboxItem[]\n activeIndex: number\n onClose: () => void\n onActiveIndexChange: (index: number) => void\n}\n\nexport function MMediaLightbox({open, items, activeIndex, onClose, onActiveIndexChange}: MMediaLightboxProps) {\n const currentItem = items[activeIndex]\n const frameRef = useRef<HTMLDivElement | null>(null)\n const canGoPrev = activeIndex > 0\n const canGoNext = activeIndex < items.length - 1\n\n useEffect(() => {\n if (!open) {\n return\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onClose()\n return\n }\n\n if (event.key === 'ArrowLeft' && canGoPrev) {\n onActiveIndexChange(activeIndex - 1)\n }\n\n if (event.key === 'ArrowRight' && canGoNext) {\n onActiveIndexChange(activeIndex + 1)\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [activeIndex, canGoNext, canGoPrev, onActiveIndexChange, onClose, open])\n\n useEffect(() => {\n if (!open) {\n return\n }\n\n const previousOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n\n return () => {\n document.body.style.overflow = previousOverflow\n }\n }, [open])\n\n if (!open || !currentItem) {\n return null\n }\n\n const handleBackdropMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n const target = event.target as Node | null\n\n if (target && frameRef.current && !frameRef.current.contains(target)) {\n onClose()\n }\n }\n\n const previewLabel = currentItem.alt || currentItem.caption || 'Image preview'\n\n return (\n <MPortal>\n <div className={cn('mineral-backdrop', 'media-lightbox-backdrop')} onMouseDown={handleBackdropMouseDown}>\n <div className=\"media-lightbox-shell\" role=\"dialog\" aria-modal=\"true\" aria-label={previewLabel}>\n <div className=\"media-lightbox-stage\">\n <div ref={frameRef} className=\"media-lightbox-frame\">\n <div className=\"media-lightbox-topbar\">\n <MBadge color=\"dark\" size=\"md\" rounded className=\"media-lightbox-counter\">\n {items.length > 1 ? `${activeIndex + 1} / ${items.length}` : 'Preview'}\n </MBadge>\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"error\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-action\"\n aria-label=\"Close preview\"\n onClick={onClose}\n >\n <MCloseIcon />\n </MButton>\n </div>\n\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"primary\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-nav media-lightbox-nav-prev\"\n aria-label=\"Previous image\"\n disabled={items.length <= 1 || !canGoPrev}\n onClick={() => canGoPrev && onActiveIndexChange(activeIndex - 1)}\n >\n <MChevronLeftIcon />\n </MButton>\n\n <img className=\"media-lightbox-image\" src={currentItem.src} alt={currentItem.alt || ''} />\n\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"primary\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-nav media-lightbox-nav-next\"\n aria-label=\"Next image\"\n disabled={items.length <= 1 || !canGoNext}\n onClick={() => canGoNext && onActiveIndexChange(activeIndex + 1)}\n >\n <MChevronRightIcon />\n </MButton>\n\n {currentItem.caption || currentItem.alt ? (\n <MBadge color=\"dark\" size=\"sm\" rounded className=\"media-lightbox-caption\">\n {currentItem.caption || currentItem.alt}\n </MBadge>\n ) : null}\n </div>\n </div>\n </div>\n </div>\n </MPortal>\n )\n}\n","import type {MMediaLightboxItem} from './MMediaLightbox/MMediaLightbox'\n\ninterface MMediaPreviewRegistryItem extends MMediaLightboxItem {\n id: string\n}\n\nconst previewGroups = new Map<string, Map<string, MMediaPreviewRegistryItem>>()\n\nexport function registerMediaPreviewItem(group: string, id: string, item: MMediaLightboxItem) {\n let groupItems = previewGroups.get(group)\n\n if (!groupItems) {\n groupItems = new Map()\n previewGroups.set(group, groupItems)\n }\n\n groupItems.set(id, {id, ...item})\n\n return () => {\n const currentGroupItems = previewGroups.get(group)\n if (!currentGroupItems) {\n return\n }\n\n currentGroupItems.delete(id)\n\n if (currentGroupItems.size === 0) {\n previewGroups.delete(group)\n }\n }\n}\n\nexport function getMediaPreviewGroupItems(group: string) {\n return Array.from(previewGroups.get(group)?.values() ?? [])\n}\n","import type {MClickEffect} from '../../utils/useInteractionEffect'\n\nexport type MMediaInteractionEffect = MClickEffect | 'zoom' | 'dim' | 'zoom-ripple'\nexport type MMediaHoverEffect = 'none' | 'zoom' | 'dim' | 'zoom-dim'\n\nexport function usesRipple(effect: MMediaInteractionEffect): boolean {\n return effect === 'ripple' || effect === 'zoom-ripple'\n}\n\nexport function usesZoom(effect: MMediaInteractionEffect): boolean {\n return effect === 'zoom' || effect === 'zoom-ripple'\n}\n\nexport function usesDim(effect: MMediaInteractionEffect): boolean {\n return effect === 'dim'\n}\n\nexport function usesHoverZoom(effect: MMediaHoverEffect): boolean {\n return effect === 'zoom' || effect === 'zoom-dim'\n}\n\nexport function usesHoverDim(effect: MMediaHoverEffect): boolean {\n return effect === 'dim' || effect === 'zoom-dim'\n}\n","import {useEffect, useId, useMemo, useState} from 'react'\nimport type * as React from 'react'\nimport type {CSSProperties} from 'react'\nimport type {MImageProps, MImageSize} from './MImage.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {MSkeleton} from '../../feedback'\nimport {MMediaLightbox} from '../MMediaLightbox/MMediaLightbox'\nimport {getMediaPreviewGroupItems, registerMediaPreviewItem} from '../mediaPreviewRegistry'\nimport {usesHoverDim, usesHoverZoom} from '../mediaInteraction'\nimport './MImage.css'\n\nconst RATIO_MAP: Record<string, string> = {\n '1:1': '1 / 1',\n '4:3': '4 / 3',\n '16:9': '16 / 9',\n '21:9': '21 / 9',\n}\n\nfunction toCssSize(value: MImageSize | undefined): string | undefined {\n if (value == null) return undefined\n return typeof value === 'number' ? `${value}px` : value\n}\n\n// Render a styled image with aspect ratio, fit, and optional fallback.\nexport function MImage({\n src,\n fit = 'cover',\n ratio = 'auto',\n width,\n height,\n hidden,\n rounded = false,\n bordered = false,\n shadow = false,\n preview = false,\n previewGroup,\n hoverEffect = 'none',\n clickEffect = 'none',\n fallback,\n skeleton = false,\n className,\n style,\n alt,\n onError,\n ...rest\n}: MImageProps) {\n const [errored, setErrored] = useState(false)\n const [previewOpen, setPreviewOpen] = useState(false)\n const [previewItems, setPreviewItems] = useState<Array<{src: string; alt?: string; caption?: string}>>([])\n const [previewIndex, setPreviewIndex] = useState(0)\n const previewId = useId()\n const {effectClassName, effectLayer, handlePointerDown} = useInteractionEffect<HTMLElement>({\n effect: skeleton ? 'none' : clickEffect,\n })\n\n const handleError = (e: React.SyntheticEvent<HTMLImageElement>) => {\n if (fallback && !errored) {\n setErrored(true)\n e.currentTarget.src = fallback\n }\n onError?.(e)\n }\n\n const widthValue = toCssSize(width)\n const heightValue = toCssSize(height)\n const hasExplicitSize = widthValue != null || heightValue != null\n const hasFixedRatio = ratio !== 'auto' && !!RATIO_MAP[ratio]\n const sizeStyle: CSSProperties = {}\n if (widthValue != null) sizeStyle.width = widthValue\n if (heightValue != null) sizeStyle.height = heightValue\n const ratioStyle: CSSProperties = {\n ...style,\n ...(hasFixedRatio ? {aspectRatio: RATIO_MAP[ratio]} : null),\n ...sizeStyle,\n }\n const resolvedSrc = errored && fallback ? fallback : src\n const previewItem = useMemo(\n () => ({\n src: resolvedSrc || '',\n alt: alt ?? '',\n caption: typeof rest.title === 'string' ? rest.title : undefined,\n }),\n [alt, resolvedSrc, rest.title]\n )\n\n useEffect(() => {\n if (!preview || !previewGroup || !resolvedSrc) {\n return\n }\n\n return registerMediaPreviewItem(previewGroup, previewId, previewItem)\n }, [preview, previewGroup, previewId, previewItem, resolvedSrc])\n\n // Skeleton placeholder\n if (skeleton) {\n return (\n <MSkeleton\n variant=\"rectangle\"\n animate=\"pulse\"\n className={cn('image-skeleton', rounded && 'rounded', bordered && 'bordered', className)}\n style={ratioStyle}\n aria-label=\"Loading\"\n {...getHiddenProps(hidden)}\n />\n )\n }\n\n const openPreview = () => {\n if (!preview || !resolvedSrc) {\n return\n }\n\n if (previewGroup) {\n const groupItems = getMediaPreviewGroupItems(previewGroup)\n const currentIndex = groupItems.findIndex((item) => item.id === previewId)\n\n if (groupItems.length > 0 && currentIndex >= 0) {\n setPreviewItems(groupItems.map(({id, ...item}) => item))\n setPreviewIndex(currentIndex)\n setPreviewOpen(true)\n return\n }\n }\n\n setPreviewItems([previewItem])\n setPreviewIndex(0)\n setPreviewOpen(true)\n }\n\n const imgClassName = cn(\n 'image',\n fit,\n !effectLayer && rounded && 'rounded',\n !effectLayer && bordered && 'bordered',\n !effectLayer && shadow && 'shadow'\n )\n const usesWrapper = hasFixedRatio || hasExplicitSize || Boolean(effectLayer) || preview || hoverEffect !== 'none'\n const wrapperClassName = cn(\n 'image-wrap',\n hasFixedRatio && 'has-ratio',\n hasExplicitSize && 'has-size',\n rounded && 'rounded',\n bordered && 'bordered',\n shadow && 'shadow',\n preview && 'preview',\n usesHoverZoom(hoverEffect) && 'effect-zoom',\n usesHoverDim(hoverEffect) && 'effect-dim',\n effectClassName,\n className\n )\n const imageNode = <img className={imgClassName} onError={handleError} src={resolvedSrc} {...rest} alt={alt ?? ''} />\n\n if (usesWrapper) {\n return (\n <>\n {preview ? (\n <button\n type=\"button\"\n className={cn(wrapperClassName, 'image-button')}\n aria-label={`Preview ${alt || 'image'}`}\n onClick={openPreview}\n onPointerDown={effectLayer ? handlePointerDown : undefined}\n disabled={!resolvedSrc}\n {...getHiddenProps(hidden)}\n style={ratioStyle}\n >\n {effectLayer}\n {imageNode}\n </button>\n ) : (\n <span\n className={wrapperClassName}\n onPointerDown={effectLayer ? handlePointerDown : undefined}\n {...getHiddenProps(hidden)}\n style={ratioStyle}\n >\n {effectLayer}\n {imageNode}\n </span>\n )}\n\n <MMediaLightbox\n open={previewOpen}\n items={previewItems}\n activeIndex={previewIndex}\n onActiveIndexChange={setPreviewIndex}\n onClose={() => setPreviewOpen(false)}\n />\n </>\n )\n }\n\n return (\n <>\n <img\n className={cn(imgClassName, className)}\n style={ratioStyle}\n onError={handleError}\n src={resolvedSrc}\n {...getHiddenProps(hidden)}\n {...rest}\n alt={alt ?? ''}\n />\n\n <MMediaLightbox\n open={previewOpen}\n items={previewItems}\n activeIndex={previewIndex}\n onActiveIndexChange={setPreviewIndex}\n onClose={() => setPreviewOpen(false)}\n />\n </>\n )\n}\n","import type {CSSProperties, MouseEvent as ReactMouseEvent, ReactNode} from 'react'\nimport type {MAvatarStackItem, MAvatarStackProps} from './MAvatarStack.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {MAvatar} from '../MAvatar'\nimport {MTooltip} from '../../overlays'\nimport './MAvatarStack.css'\n\nfunction buildTooltipContent(item: MAvatarStackItem): ReactNode {\n if (item.tooltip) {\n return item.tooltip\n }\n if (!item.name && !item.description) {\n return null\n }\n return (\n <div className={'avatar-stack-tooltip'}>\n {item.name ? <strong>{item.name}</strong> : null}\n {item.description ? <span>{item.description}</span> : null}\n </div>\n )\n}\n\nexport function MAvatarStack({\n items,\n max = 5,\n size = 'sm',\n color = 'primary',\n hidden,\n overlap = 10,\n interactive = true,\n showTooltip,\n tooltipPlacement = 'top',\n tooltipDelay = 150,\n onItemClick,\n className,\n style,\n ...rest\n}: MAvatarStackProps) {\n if (!items || items.length === 0) return null\n\n const visible = items.slice(0, max)\n const overflowCount = items.length - max\n const avatarPx = typeof size === 'number' ? size : ({xs: 20, sm: 28, md: 40, lg: 56, xl: 72}[size] ?? 28)\n const tooltipsEnabled = showTooltip ?? interactive\n\n const renderAvatar = (item: MAvatarStackItem, index: number) => {\n const tooltipContent = tooltipsEnabled ? buildTooltipContent(item) : null\n const isClickable = interactive && (Boolean(item.onClick) || Boolean(item.href) || Boolean(onItemClick))\n const itemKey = item.id ?? `${item.name ?? 'avatar'}-${index}`\n\n const handleClick = (clickEvent: ReactMouseEvent<HTMLElement>) => {\n if (!isClickable) {\n return\n }\n if (item.onClick) {\n clickEvent.preventDefault()\n item.onClick(item, index)\n } else if (onItemClick && !item.href) {\n clickEvent.preventDefault()\n onItemClick(item, index)\n } else if (onItemClick) {\n onItemClick(item, index)\n }\n }\n\n const inner = (\n <MAvatar\n src={item.avatar}\n name={item.name}\n size={size}\n color={item.color ?? color}\n backgroundColor={item.backgroundColor}\n />\n )\n\n let element: ReactNode\n if (item.href) {\n element = (\n <a\n key={itemKey}\n className={cn('avatar-stack-item', interactive && 'interactive')}\n style={{zIndex: index + 1}}\n href={item.href}\n onClick={handleClick}\n >\n {inner}\n </a>\n )\n } else if (isClickable) {\n element = (\n <button\n key={itemKey}\n type={'button'}\n className={cn('avatar-stack-item', 'interactive')}\n style={{zIndex: index + 1}}\n aria-label={item.name}\n onClick={handleClick}\n >\n {inner}\n </button>\n )\n } else {\n element = (\n <span\n key={itemKey}\n className={cn('avatar-stack-item', interactive && 'interactive')}\n style={{zIndex: index + 1}}\n >\n {inner}\n </span>\n )\n }\n\n if (!tooltipContent) {\n return element\n }\n\n return (\n <MTooltip\n key={itemKey}\n placement={tooltipPlacement}\n delay={tooltipDelay}\n content={tooltipContent}\n className={'avatar-stack-tooltip-wrapper'}\n >\n {element}\n </MTooltip>\n )\n }\n\n return (\n <div\n className={cn('avatar-stack', interactive && 'interactive', className)}\n style={{'--avatar-stack-overlap': `-${overlap}px`, ...style} as CSSProperties}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {visible.map(renderAvatar)}\n {overflowCount > 0 && (\n <span\n className=\"avatar-stack-overflow\"\n style={{\n width: avatarPx,\n height: avatarPx,\n fontSize: avatarPx * 0.38,\n zIndex: visible.length + 1,\n }}\n >\n +{overflowCount}\n </span>\n )}\n </div>\n )\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- const e=require(`./theme-DsTDooyX.cjs`),t=require(`./icons-qCoE70hn.cjs`),n=require(`./cn-CU5TNITO.cjs`),r=require(`./useInteractionEffect-Bo8285cg.cjs`),i=require(`./MPortal-BIxPtFYd.cjs`),a=require(`./MButton-DFRHWHzh.cjs`),o=require(`./MSkeleton-CuYA8eN3.cjs`),s=require(`./MTooltip-Dq2vYf3G.cjs`),c=require(`./MAvatar-DzZPRbot.cjs`);require(`./core-DAox0BHy.cjs`);let l=require(`react`),u=require(`react/jsx-runtime`);function d({open:e,items:r,activeIndex:s,onClose:c,onActiveIndexChange:d}){let f=r[s],p=(0,l.useRef)(null),m=s>0,h=s<r.length-1;if((0,l.useEffect)(()=>{if(!e)return;let t=e=>{if(e.key===`Escape`){c();return}e.key===`ArrowLeft`&&m&&d(s-1),e.key===`ArrowRight`&&h&&d(s+1)};return document.addEventListener(`keydown`,t),()=>document.removeEventListener(`keydown`,t)},[s,h,m,d,c,e]),(0,l.useEffect)(()=>{if(!e)return;let t=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=t}},[e]),!e||!f)return null;let g=e=>{let t=e.target;t&&p.current&&!p.current.contains(t)&&c()},_=f.alt||f.caption||`Image preview`;return(0,u.jsx)(i.t,{children:(0,u.jsx)(`div`,{className:n.t(`mineral-backdrop`,`media-lightbox-backdrop`),onMouseDown:g,children:(0,u.jsx)(`div`,{className:`media-lightbox-shell`,role:`dialog`,"aria-modal":`true`,"aria-label":_,children:(0,u.jsx)(`div`,{className:`media-lightbox-stage`,children:(0,u.jsxs)(`div`,{ref:p,className:`media-lightbox-frame`,children:[(0,u.jsxs)(`div`,{className:`media-lightbox-topbar`,children:[(0,u.jsx)(o.s,{color:`dark`,size:`md`,rounded:!0,className:`media-lightbox-counter`,children:r.length>1?`${s+1} / ${r.length}`:`Preview`}),(0,u.jsx)(a.t,{type:`button`,variant:`ghost`,color:`error`,size:`lg`,shape:`circle`,iconOnly:!0,className:`media-lightbox-action`,"aria-label":`Close preview`,onClick:c,children:(0,u.jsx)(t.Li,{})})]}),(0,u.jsx)(a.t,{type:`button`,variant:`ghost`,color:`primary`,size:`lg`,shape:`circle`,iconOnly:!0,className:`media-lightbox-nav media-lightbox-nav-prev`,"aria-label":`Previous image`,disabled:r.length<=1||!m,onClick:()=>m&&d(s-1),children:(0,u.jsx)(t.Fi,{})}),(0,u.jsx)(`img`,{className:`media-lightbox-image`,src:f.src,alt:f.alt||``}),(0,u.jsx)(a.t,{type:`button`,variant:`ghost`,color:`primary`,size:`lg`,shape:`circle`,iconOnly:!0,className:`media-lightbox-nav media-lightbox-nav-next`,"aria-label":`Next image`,disabled:r.length<=1||!h,onClick:()=>h&&d(s+1),children:(0,u.jsx)(t.Pi,{})}),f.caption||f.alt?(0,u.jsx)(o.s,{color:`dark`,size:`sm`,rounded:!0,className:`media-lightbox-caption`,children:f.caption||f.alt}):null]})})})})})}var f=new Map;function p(e,t,n){let r=f.get(e);return r||(r=new Map,f.set(e,r)),r.set(t,{id:t,...n}),()=>{let n=f.get(e);n&&(n.delete(t),n.size===0&&f.delete(e))}}function m(e){return Array.from(f.get(e)?.values()??[])}function h(e){return e===`ripple`||e===`zoom-ripple`}function g(e){return e===`zoom`||e===`zoom-ripple`}function _(e){return e===`dim`}function v(e){return e===`zoom`||e===`zoom-dim`}function y(e){return e===`dim`||e===`zoom-dim`}var b={"1:1":`1 / 1`,"4:3":`4 / 3`,"16:9":`16 / 9`,"21:9":`21 / 9`};function x(e){if(e!=null)return typeof e==`number`?`${e}px`:e}function S({src:t,fit:i=`cover`,ratio:a=`auto`,width:s,height:c,hidden:f,rounded:h=!1,bordered:g=!1,shadow:_=!1,preview:S=!1,previewGroup:C,hoverEffect:w=`none`,clickEffect:ee=`none`,fallback:T,skeleton:E=!1,className:D,style:te,alt:O,onError:ne,...k}){let[A,j]=(0,l.useState)(!1),[M,N]=(0,l.useState)(!1),[P,F]=(0,l.useState)([]),[I,L]=(0,l.useState)(0),R=(0,l.useId)(),{effectClassName:z,effectLayer:B,handlePointerDown:V}=r.t({effect:E?`none`:ee}),H=e=>{T&&!A&&(j(!0),e.currentTarget.src=T),ne?.(e)},U=x(s),W=x(c),G=U!=null||W!=null,K=a!==`auto`&&!!b[a],q={};U!=null&&(q.width=U),W!=null&&(q.height=W);let J={...te,...K?{aspectRatio:b[a]}:null,...q},Y=A&&T?T:t,X=(0,l.useMemo)(()=>({src:Y||``,alt:O??``,caption:typeof k.title==`string`?k.title:void 0}),[O,Y,k.title]);if((0,l.useEffect)(()=>{if(!(!S||!C||!Y))return p(C,R,X)},[S,C,R,X,Y]),E)return(0,u.jsx)(o.t,{variant:`rectangle`,animate:`pulse`,className:n.t(`image-skeleton`,h&&`rounded`,g&&`bordered`,D),style:J,"aria-label":`Loading`,...e.r(f)});let re=()=>{if(!(!S||!Y)){if(C){let e=m(C),t=e.findIndex(e=>e.id===R);if(e.length>0&&t>=0){F(e.map(({id:e,...t})=>t)),L(t),N(!0);return}}F([X]),L(0),N(!0)}},Z=n.t(`image`,i,!B&&h&&`rounded`,!B&&g&&`bordered`,!B&&_&&`shadow`),ie=K||G||!!B||S||w!==`none`,Q=n.t(`image-wrap`,K&&`has-ratio`,G&&`has-size`,h&&`rounded`,g&&`bordered`,_&&`shadow`,S&&`preview`,v(w)&&`effect-zoom`,y(w)&&`effect-dim`,z,D),$=(0,u.jsx)(`img`,{className:Z,onError:H,src:Y,...k,alt:O??``});return ie?(0,u.jsxs)(u.Fragment,{children:[S?(0,u.jsxs)(`button`,{type:`button`,className:n.t(Q,`image-button`),"aria-label":`Preview ${O||`image`}`,onClick:re,onPointerDown:B?V:void 0,disabled:!Y,...e.r(f),style:J,children:[B,$]}):(0,u.jsxs)(`span`,{className:Q,onPointerDown:B?V:void 0,...e.r(f),style:J,children:[B,$]}),(0,u.jsx)(d,{open:M,items:P,activeIndex:I,onActiveIndexChange:L,onClose:()=>N(!1)})]}):(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(`img`,{className:n.t(Z,D),style:J,onError:H,src:Y,...e.r(f),...k,alt:O??``}),(0,u.jsx)(d,{open:M,items:P,activeIndex:I,onActiveIndexChange:L,onClose:()=>N(!1)})]})}function C(e){return e.tooltip?e.tooltip:!e.name&&!e.description?null:(0,u.jsxs)(`div`,{className:`avatar-stack-tooltip`,children:[e.name?(0,u.jsx)(`strong`,{children:e.name}):null,e.description?(0,u.jsx)(`span`,{children:e.description}):null]})}function w({items:t,max:r=5,size:i=`sm`,color:a=`primary`,hidden:o,overlap:l=10,interactive:d=!0,showTooltip:f,tooltipPlacement:p=`top`,tooltipDelay:m=150,onItemClick:h,className:g,style:_,...v}){if(!t||t.length===0)return null;let y=t.slice(0,r),b=t.length-r,x=typeof i==`number`?i:{xs:20,sm:28,md:40,lg:56,xl:72}[i]??28,S=f??d,w=(e,t)=>{let r=S?C(e):null,o=d&&(!!e.onClick||!!e.href||!!h),l=e.id??`${e.name??`avatar`}-${t}`,f=n=>{o&&(e.onClick?(n.preventDefault(),e.onClick(e,t)):h&&!e.href?(n.preventDefault(),h(e,t)):h&&h(e,t))},g=(0,u.jsx)(c.t,{src:e.avatar,name:e.name,size:i,color:e.color??a,backgroundColor:e.backgroundColor}),_;return _=e.href?(0,u.jsx)(`a`,{className:n.t(`avatar-stack-item`,d&&`interactive`),style:{zIndex:t+1},href:e.href,onClick:f,children:g},l):o?(0,u.jsx)(`button`,{type:`button`,className:n.t(`avatar-stack-item`,`interactive`),style:{zIndex:t+1},"aria-label":e.name,onClick:f,children:g},l):(0,u.jsx)(`span`,{className:n.t(`avatar-stack-item`,d&&`interactive`),style:{zIndex:t+1},children:g},l),r?(0,u.jsx)(s.t,{placement:p,delay:m,content:r,className:`avatar-stack-tooltip-wrapper`,children:_},l):_};return(0,u.jsxs)(`div`,{className:n.t(`avatar-stack`,d&&`interactive`,g),style:{"--avatar-stack-overlap":`-${l}px`,..._},...e.r(o),...v,children:[y.map(w),b>0&&(0,u.jsxs)(`span`,{className:`avatar-stack-overflow`,style:{width:x,height:x,fontSize:x*.38,zIndex:y.length+1},children:[`+`,b]})]})}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return w}});
2
- //# sourceMappingURL=MAvatarStack-DN79aJo1.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MAvatarStack-DN79aJo1.cjs","names":[],"sources":["../src/components/media/MMediaLightbox/MMediaLightbox.tsx","../src/components/media/mediaPreviewRegistry.ts","../src/components/media/mediaInteraction.ts","../src/components/media/MImage/MImage.tsx","../src/components/media/MAvatarStack/MAvatarStack.tsx"],"sourcesContent":["import {useEffect, useRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport {MButton} from '../../controls'\nimport {MBadge} from '../../feedback'\nimport {MPortal} from '../../primitives'\nimport {MCloseIcon, MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MMediaLightbox.css'\n\nexport interface MMediaLightboxItem {\n src: string\n alt?: string\n caption?: string\n}\n\ninterface MMediaLightboxProps {\n open: boolean\n items: MMediaLightboxItem[]\n activeIndex: number\n onClose: () => void\n onActiveIndexChange: (index: number) => void\n}\n\nexport function MMediaLightbox({open, items, activeIndex, onClose, onActiveIndexChange}: MMediaLightboxProps) {\n const currentItem = items[activeIndex]\n const frameRef = useRef<HTMLDivElement | null>(null)\n const canGoPrev = activeIndex > 0\n const canGoNext = activeIndex < items.length - 1\n\n useEffect(() => {\n if (!open) {\n return\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onClose()\n return\n }\n\n if (event.key === 'ArrowLeft' && canGoPrev) {\n onActiveIndexChange(activeIndex - 1)\n }\n\n if (event.key === 'ArrowRight' && canGoNext) {\n onActiveIndexChange(activeIndex + 1)\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [activeIndex, canGoNext, canGoPrev, onActiveIndexChange, onClose, open])\n\n useEffect(() => {\n if (!open) {\n return\n }\n\n const previousOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n\n return () => {\n document.body.style.overflow = previousOverflow\n }\n }, [open])\n\n if (!open || !currentItem) {\n return null\n }\n\n const handleBackdropMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n const target = event.target as Node | null\n\n if (target && frameRef.current && !frameRef.current.contains(target)) {\n onClose()\n }\n }\n\n const previewLabel = currentItem.alt || currentItem.caption || 'Image preview'\n\n return (\n <MPortal>\n <div className={cn('mineral-backdrop', 'media-lightbox-backdrop')} onMouseDown={handleBackdropMouseDown}>\n <div className=\"media-lightbox-shell\" role=\"dialog\" aria-modal=\"true\" aria-label={previewLabel}>\n <div className=\"media-lightbox-stage\">\n <div ref={frameRef} className=\"media-lightbox-frame\">\n <div className=\"media-lightbox-topbar\">\n <MBadge color=\"dark\" size=\"md\" rounded className=\"media-lightbox-counter\">\n {items.length > 1 ? `${activeIndex + 1} / ${items.length}` : 'Preview'}\n </MBadge>\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"error\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-action\"\n aria-label=\"Close preview\"\n onClick={onClose}\n >\n <MCloseIcon />\n </MButton>\n </div>\n\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"primary\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-nav media-lightbox-nav-prev\"\n aria-label=\"Previous image\"\n disabled={items.length <= 1 || !canGoPrev}\n onClick={() => canGoPrev && onActiveIndexChange(activeIndex - 1)}\n >\n <MChevronLeftIcon />\n </MButton>\n\n <img className=\"media-lightbox-image\" src={currentItem.src} alt={currentItem.alt || ''} />\n\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"primary\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-nav media-lightbox-nav-next\"\n aria-label=\"Next image\"\n disabled={items.length <= 1 || !canGoNext}\n onClick={() => canGoNext && onActiveIndexChange(activeIndex + 1)}\n >\n <MChevronRightIcon />\n </MButton>\n\n {currentItem.caption || currentItem.alt ? (\n <MBadge color=\"dark\" size=\"sm\" rounded className=\"media-lightbox-caption\">\n {currentItem.caption || currentItem.alt}\n </MBadge>\n ) : null}\n </div>\n </div>\n </div>\n </div>\n </MPortal>\n )\n}\n","import type {MMediaLightboxItem} from './MMediaLightbox/MMediaLightbox'\n\ninterface MMediaPreviewRegistryItem extends MMediaLightboxItem {\n id: string\n}\n\nconst previewGroups = new Map<string, Map<string, MMediaPreviewRegistryItem>>()\n\nexport function registerMediaPreviewItem(group: string, id: string, item: MMediaLightboxItem) {\n let groupItems = previewGroups.get(group)\n\n if (!groupItems) {\n groupItems = new Map()\n previewGroups.set(group, groupItems)\n }\n\n groupItems.set(id, {id, ...item})\n\n return () => {\n const currentGroupItems = previewGroups.get(group)\n if (!currentGroupItems) {\n return\n }\n\n currentGroupItems.delete(id)\n\n if (currentGroupItems.size === 0) {\n previewGroups.delete(group)\n }\n }\n}\n\nexport function getMediaPreviewGroupItems(group: string) {\n return Array.from(previewGroups.get(group)?.values() ?? [])\n}\n","import type {MClickEffect} from '../../utils/useInteractionEffect'\n\nexport type MMediaInteractionEffect = MClickEffect | 'zoom' | 'dim' | 'zoom-ripple'\nexport type MMediaHoverEffect = 'none' | 'zoom' | 'dim' | 'zoom-dim'\n\nexport function usesRipple(effect: MMediaInteractionEffect): boolean {\n return effect === 'ripple' || effect === 'zoom-ripple'\n}\n\nexport function usesZoom(effect: MMediaInteractionEffect): boolean {\n return effect === 'zoom' || effect === 'zoom-ripple'\n}\n\nexport function usesDim(effect: MMediaInteractionEffect): boolean {\n return effect === 'dim'\n}\n\nexport function usesHoverZoom(effect: MMediaHoverEffect): boolean {\n return effect === 'zoom' || effect === 'zoom-dim'\n}\n\nexport function usesHoverDim(effect: MMediaHoverEffect): boolean {\n return effect === 'dim' || effect === 'zoom-dim'\n}\n","import {useEffect, useId, useMemo, useState} from 'react'\nimport type * as React from 'react'\nimport type {CSSProperties} from 'react'\nimport type {MImageProps, MImageSize} from './MImage.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {MSkeleton} from '../../feedback'\nimport {MMediaLightbox} from '../MMediaLightbox/MMediaLightbox'\nimport {getMediaPreviewGroupItems, registerMediaPreviewItem} from '../mediaPreviewRegistry'\nimport {usesHoverDim, usesHoverZoom} from '../mediaInteraction'\nimport './MImage.css'\n\nconst RATIO_MAP: Record<string, string> = {\n '1:1': '1 / 1',\n '4:3': '4 / 3',\n '16:9': '16 / 9',\n '21:9': '21 / 9',\n}\n\nfunction toCssSize(value: MImageSize | undefined): string | undefined {\n if (value == null) return undefined\n return typeof value === 'number' ? `${value}px` : value\n}\n\n// Render a styled image with aspect ratio, fit, and optional fallback.\nexport function MImage({\n src,\n fit = 'cover',\n ratio = 'auto',\n width,\n height,\n hidden,\n rounded = false,\n bordered = false,\n shadow = false,\n preview = false,\n previewGroup,\n hoverEffect = 'none',\n clickEffect = 'none',\n fallback,\n skeleton = false,\n className,\n style,\n alt,\n onError,\n ...rest\n}: MImageProps) {\n const [errored, setErrored] = useState(false)\n const [previewOpen, setPreviewOpen] = useState(false)\n const [previewItems, setPreviewItems] = useState<Array<{src: string; alt?: string; caption?: string}>>([])\n const [previewIndex, setPreviewIndex] = useState(0)\n const previewId = useId()\n const {effectClassName, effectLayer, handlePointerDown} = useInteractionEffect<HTMLElement>({\n effect: skeleton ? 'none' : clickEffect,\n })\n\n const handleError = (e: React.SyntheticEvent<HTMLImageElement>) => {\n if (fallback && !errored) {\n setErrored(true)\n e.currentTarget.src = fallback\n }\n onError?.(e)\n }\n\n const widthValue = toCssSize(width)\n const heightValue = toCssSize(height)\n const hasExplicitSize = widthValue != null || heightValue != null\n const hasFixedRatio = ratio !== 'auto' && !!RATIO_MAP[ratio]\n const sizeStyle: CSSProperties = {}\n if (widthValue != null) sizeStyle.width = widthValue\n if (heightValue != null) sizeStyle.height = heightValue\n const ratioStyle: CSSProperties = {\n ...style,\n ...(hasFixedRatio ? {aspectRatio: RATIO_MAP[ratio]} : null),\n ...sizeStyle,\n }\n const resolvedSrc = errored && fallback ? fallback : src\n const previewItem = useMemo(\n () => ({\n src: resolvedSrc || '',\n alt: alt ?? '',\n caption: typeof rest.title === 'string' ? rest.title : undefined,\n }),\n [alt, resolvedSrc, rest.title]\n )\n\n useEffect(() => {\n if (!preview || !previewGroup || !resolvedSrc) {\n return\n }\n\n return registerMediaPreviewItem(previewGroup, previewId, previewItem)\n }, [preview, previewGroup, previewId, previewItem, resolvedSrc])\n\n // Skeleton placeholder\n if (skeleton) {\n return (\n <MSkeleton\n variant=\"rectangle\"\n animate=\"pulse\"\n className={cn('image-skeleton', rounded && 'rounded', bordered && 'bordered', className)}\n style={ratioStyle}\n aria-label=\"Loading\"\n {...getHiddenProps(hidden)}\n />\n )\n }\n\n const openPreview = () => {\n if (!preview || !resolvedSrc) {\n return\n }\n\n if (previewGroup) {\n const groupItems = getMediaPreviewGroupItems(previewGroup)\n const currentIndex = groupItems.findIndex((item) => item.id === previewId)\n\n if (groupItems.length > 0 && currentIndex >= 0) {\n setPreviewItems(groupItems.map(({id, ...item}) => item))\n setPreviewIndex(currentIndex)\n setPreviewOpen(true)\n return\n }\n }\n\n setPreviewItems([previewItem])\n setPreviewIndex(0)\n setPreviewOpen(true)\n }\n\n const imgClassName = cn(\n 'image',\n fit,\n !effectLayer && rounded && 'rounded',\n !effectLayer && bordered && 'bordered',\n !effectLayer && shadow && 'shadow'\n )\n const usesWrapper = hasFixedRatio || hasExplicitSize || Boolean(effectLayer) || preview || hoverEffect !== 'none'\n const wrapperClassName = cn(\n 'image-wrap',\n hasFixedRatio && 'has-ratio',\n hasExplicitSize && 'has-size',\n rounded && 'rounded',\n bordered && 'bordered',\n shadow && 'shadow',\n preview && 'preview',\n usesHoverZoom(hoverEffect) && 'effect-zoom',\n usesHoverDim(hoverEffect) && 'effect-dim',\n effectClassName,\n className\n )\n const imageNode = <img className={imgClassName} onError={handleError} src={resolvedSrc} {...rest} alt={alt ?? ''} />\n\n if (usesWrapper) {\n return (\n <>\n {preview ? (\n <button\n type=\"button\"\n className={cn(wrapperClassName, 'image-button')}\n aria-label={`Preview ${alt || 'image'}`}\n onClick={openPreview}\n onPointerDown={effectLayer ? handlePointerDown : undefined}\n disabled={!resolvedSrc}\n {...getHiddenProps(hidden)}\n style={ratioStyle}\n >\n {effectLayer}\n {imageNode}\n </button>\n ) : (\n <span\n className={wrapperClassName}\n onPointerDown={effectLayer ? handlePointerDown : undefined}\n {...getHiddenProps(hidden)}\n style={ratioStyle}\n >\n {effectLayer}\n {imageNode}\n </span>\n )}\n\n <MMediaLightbox\n open={previewOpen}\n items={previewItems}\n activeIndex={previewIndex}\n onActiveIndexChange={setPreviewIndex}\n onClose={() => setPreviewOpen(false)}\n />\n </>\n )\n }\n\n return (\n <>\n <img\n className={cn(imgClassName, className)}\n style={ratioStyle}\n onError={handleError}\n src={resolvedSrc}\n {...getHiddenProps(hidden)}\n {...rest}\n alt={alt ?? ''}\n />\n\n <MMediaLightbox\n open={previewOpen}\n items={previewItems}\n activeIndex={previewIndex}\n onActiveIndexChange={setPreviewIndex}\n onClose={() => setPreviewOpen(false)}\n />\n </>\n )\n}\n","import type {CSSProperties, MouseEvent as ReactMouseEvent, ReactNode} from 'react'\nimport type {MAvatarStackItem, MAvatarStackProps} from './MAvatarStack.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {MAvatar} from '../MAvatar'\nimport {MTooltip} from '../../overlays'\nimport './MAvatarStack.css'\n\nfunction buildTooltipContent(item: MAvatarStackItem): ReactNode {\n if (item.tooltip) {\n return item.tooltip\n }\n if (!item.name && !item.description) {\n return null\n }\n return (\n <div className={'avatar-stack-tooltip'}>\n {item.name ? <strong>{item.name}</strong> : null}\n {item.description ? <span>{item.description}</span> : null}\n </div>\n )\n}\n\nexport function MAvatarStack({\n items,\n max = 5,\n size = 'sm',\n color = 'primary',\n hidden,\n overlap = 10,\n interactive = true,\n showTooltip,\n tooltipPlacement = 'top',\n tooltipDelay = 150,\n onItemClick,\n className,\n style,\n ...rest\n}: MAvatarStackProps) {\n if (!items || items.length === 0) return null\n\n const visible = items.slice(0, max)\n const overflowCount = items.length - max\n const avatarPx = typeof size === 'number' ? size : ({xs: 20, sm: 28, md: 40, lg: 56, xl: 72}[size] ?? 28)\n const tooltipsEnabled = showTooltip ?? interactive\n\n const renderAvatar = (item: MAvatarStackItem, index: number) => {\n const tooltipContent = tooltipsEnabled ? buildTooltipContent(item) : null\n const isClickable = interactive && (Boolean(item.onClick) || Boolean(item.href) || Boolean(onItemClick))\n const itemKey = item.id ?? `${item.name ?? 'avatar'}-${index}`\n\n const handleClick = (clickEvent: ReactMouseEvent<HTMLElement>) => {\n if (!isClickable) {\n return\n }\n if (item.onClick) {\n clickEvent.preventDefault()\n item.onClick(item, index)\n } else if (onItemClick && !item.href) {\n clickEvent.preventDefault()\n onItemClick(item, index)\n } else if (onItemClick) {\n onItemClick(item, index)\n }\n }\n\n const inner = (\n <MAvatar\n src={item.avatar}\n name={item.name}\n size={size}\n color={item.color ?? color}\n backgroundColor={item.backgroundColor}\n />\n )\n\n let element: ReactNode\n if (item.href) {\n element = (\n <a\n key={itemKey}\n className={cn('avatar-stack-item', interactive && 'interactive')}\n style={{zIndex: index + 1}}\n href={item.href}\n onClick={handleClick}\n >\n {inner}\n </a>\n )\n } else if (isClickable) {\n element = (\n <button\n key={itemKey}\n type={'button'}\n className={cn('avatar-stack-item', 'interactive')}\n style={{zIndex: index + 1}}\n aria-label={item.name}\n onClick={handleClick}\n >\n {inner}\n </button>\n )\n } else {\n element = (\n <span\n key={itemKey}\n className={cn('avatar-stack-item', interactive && 'interactive')}\n style={{zIndex: index + 1}}\n >\n {inner}\n </span>\n )\n }\n\n if (!tooltipContent) {\n return element\n }\n\n return (\n <MTooltip\n key={itemKey}\n placement={tooltipPlacement}\n delay={tooltipDelay}\n content={tooltipContent}\n className={'avatar-stack-tooltip-wrapper'}\n >\n {element}\n </MTooltip>\n )\n }\n\n return (\n <div\n className={cn('avatar-stack', interactive && 'interactive', className)}\n style={{'--avatar-stack-overlap': `-${overlap}px`, ...style} as CSSProperties}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {visible.map(renderAvatar)}\n {overflowCount > 0 && (\n <span\n className=\"avatar-stack-overflow\"\n style={{\n width: avatarPx,\n height: avatarPx,\n fontSize: avatarPx * 0.38,\n zIndex: visible.length + 1,\n }}\n >\n +{overflowCount}\n </span>\n )}\n </div>\n )\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- var e=`mineralui-cookie-consent`,t=`mineralui-cookie-consent`,n=`localStorage`;function r(e,t){return{...e,...t}}function i(e){return[{key:`necessary`,label:e.necessaryLabel,description:e.necessaryDescription,required:!0,defaultValue:!0},{key:`preferences`,label:e.preferencesLabel,description:e.preferencesDescriptionLabel,defaultValue:!1},{key:`analytics`,label:e.analyticsLabel,description:e.analyticsDescription,defaultValue:!1},{key:`marketing`,label:e.marketingLabel,description:e.marketingDescription,defaultValue:!1}]}function a(){return[]}var o=[t,/^PHPSESSID$/i,/^JSESSIONID$/i,/^ASP\.NET_SessionId$/i,/^__Host-/i,/^__Secure-/i,/csrf/i,/xsrf/i,/session/i,/auth/i,/token/i,/^sid$/i],s={preferences:[/theme/i,/locale/i,/lang/i,/currency/i,/timezone/i,/consent/i],analytics:[/^_ga/i,/^_gid/i,/^_gat/i,/^_pk_/i,/^pk_/i,/^_hj/i,/^hj/i,/^amplitude/i,/^mp_/i,/^matomo/i],marketing:[/^_fbp$/i,/^_fbc$/i,/^_gcl_/i,/^IDE$/i,/^test_cookie$/i,/^li_/i,/^tt_/i,/^_uet/i,/^pin_utm/i]};function c(e,t){if(typeof t==`string`){let n=t.trim().toLowerCase(),r=e.trim().toLowerCase();return n.endsWith(`*`)?r.startsWith(n.slice(0,-1)):r===n}return t.test(e)}function l(e,t){return Array.isArray(t)&&t.some(t=>c(e,t))}function u(e){return e.trim()?e.split(`;`).map(e=>e.trim()).filter(Boolean).map(e=>{let t=e.indexOf(`=`);return t===-1?{name:e,value:``}:{name:e.slice(0,t).trim(),value:e.slice(t+1).trim()}}).filter(e=>e.name.length>0):[]}function d(e,t,n){if(l(e,[...o,...t]))return{category:`necessary`,required:!0,matchedBy:`required`};for(let[t,r]of Object.entries(n))if(l(e,r))return{category:t,required:!1,matchedBy:`custom`};for(let[t,n]of Object.entries(s))if(l(e,n))return{category:t,required:!1,matchedBy:`built-in`};return{category:`preferences`,required:!1,matchedBy:`fallback`}}function f({cookieString:e,requiredCookies:t=[],categoryRules:n={}}){return u(e??(typeof document<`u`?document.cookie:``)).map(e=>{let r=d(e.name,t,n);return{name:e.name,value:e.value,category:r.category,required:r.required,matchedBy:r.matchedBy,source:`document.cookie`}})}function p(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.version==`string`&&typeof t.decidedAt==`string`&&typeof t.source==`string`&&t.categories!=null&&typeof t.categories==`object`}function m(e){if(typeof document>`u`)return null;let t=`${encodeURIComponent(e)}=`;for(let e of document.cookie.split(`;`)){let n=e.trim();if(n.startsWith(t))return decodeURIComponent(n.slice(t.length))}return null}function h(e,t,n){typeof document>`u`||(document.cookie=`${encodeURIComponent(e)}=${encodeURIComponent(t)}; path=/; max-age=${Math.floor(n*24*60*60)}; samesite=lax`)}function g(e){typeof document>`u`||(document.cookie=`${encodeURIComponent(e)}=; path=/; max-age=0; samesite=lax`)}function _({storage:e,storageKey:t,cookieName:n}){try{let r=e===`cookie`?m(n):localStorage.getItem(t);if(!r)return null;let i=JSON.parse(r);return p(i)?i:null}catch{return null}}function v({storage:e,storageKey:t,cookieName:n,cookieMaxAgeDays:r},i){try{let a=JSON.stringify(i);if(e===`cookie`){h(n,a,r);return}localStorage.setItem(t,a)}catch{}}function y({storage:e,storageKey:t,cookieName:n}){try{if(e===`cookie`){g(n);return}localStorage.removeItem(t)}catch{}}var b=`mineralui:cookie-consent-change`,x=`__MINERAL_COOKIE_CONFIG__`,S=`__MINERAL_COOKIE_RUNTIME__`,C=`mineralui:cookie-runtime-ready`,w=`data-mineral-cookie-category`,T=`data-mineral-cookie-blocked`,E=`data-mineral-cookie-src`,D=`data-mineral-cookie-type`;function O(e){let t=e.replace(/[.+?^${}()|[\]\\]/g,`\\$&`).replace(/\*/g,`.*`);return RegExp(`^${t}$`,`i`)}function k(e,t){return O(t).test(e)}function A(e){return e instanceof HTMLScriptElement||e instanceof HTMLIFrameElement||e instanceof HTMLImageElement?e.getAttribute(`src`)??e.getAttribute(E)??``:``}function j(e){try{return new URL(e,window.location.href).hostname}catch{return``}}function M(e){return _({storage:e.storage??`localStorage`,storageKey:e.storageKey??`mineralui-cookie-consent`,cookieName:e.cookieName??`mineralui-cookie-consent`})}function N(e,t){return t===`necessary`?!0:e?.categories?.[t]===!0}function P(e,t){let n=e.getAttribute(w);if(n)return n;let r=A(e);if(!r)return null;let i=j(r);if(!i)return null;let a=e instanceof HTMLScriptElement?`script`:e instanceof HTMLIFrameElement?`iframe`:e instanceof HTMLImageElement?`image`:null;if(!a)return null;let o=a===`script`?t.resources?.scripts:a===`iframe`?t.resources?.iframes:t.resources?.images;if(!o)return null;for(let[t,n]of Object.entries(o))if(n.some(e=>k(i,e)||k(r,e)))return e.setAttribute(w,t),t;return null}function F(e){if(e.getAttribute(T)!==`true`){if(e instanceof HTMLScriptElement){let t=e.getAttribute(`type`)??``,n=e.getAttribute(`src`);n&&(e.setAttribute(E,n),e.removeAttribute(`src`)),e.setAttribute(D,t===`text/plain`?``:t),e.type=`text/plain`,e.setAttribute(T,`true`);return}if(e instanceof HTMLIFrameElement||e instanceof HTMLImageElement){let t=e.getAttribute(`src`);t&&(e.setAttribute(E,t),e.removeAttribute(`src`)),e.setAttribute(T,`true`)}}}function I(e){let t=e.getAttribute(E),n=document.createElement(`script`);for(let t of e.getAttributeNames())t===`type`||t===T||t===E||t===D||n.setAttribute(t,e.getAttribute(t)??``);let r=e.getAttribute(D);r&&(n.type=r),t?n.src=t:n.textContent=e.textContent,e.replaceWith(n)}function L(e){if(e instanceof HTMLScriptElement){if(!(e.getAttribute(T)===`true`||e.type===`text/plain`&&e.hasAttribute(w)))return;I(e);return}if(e instanceof HTMLIFrameElement||e instanceof HTMLImageElement){if(e.getAttribute(T)!==`true`&&!e.hasAttribute(E))return;let t=e.getAttribute(E);t&&e.setAttribute(`src`,t),e.removeAttribute(E),e.removeAttribute(T)}}function R(e){let t=[];e instanceof Element&&t.push(e);let n=Array.from(e.querySelectorAll(`script, iframe, img`));return[...t,...n]}function z(e,t,n){let r=P(e,n);if(r){if(N(t,r)){L(e);return}F(e)}}function B(e,t){for(let n of R(document))z(n,e,t)}function V(e,t){let n=Node.prototype.appendChild,r=Node.prototype.insertBefore,i=Node.prototype.replaceChild;return Node.prototype.appendChild=function(r){if(r instanceof Element)for(let n of R(r))z(n,e(),t);return n.call(this,r)},Node.prototype.insertBefore=function(n,i){if(n instanceof Element)for(let r of R(n))z(r,e(),t);return r.call(this,n,i)},Node.prototype.replaceChild=function(n,r){if(n instanceof Element)for(let r of R(n))z(r,e(),t);return i.call(this,n,r)},()=>{Node.prototype.appendChild=n,Node.prototype.insertBefore=r,Node.prototype.replaceChild=i}}function H(e,t){let n=[];try{for(let r=0;r<e.length;r+=1){let i=e.key(r);i&&n.push({kind:t,key:i,value:e.getItem(i)??``})}}catch{return[]}return n}function U(e){return e||(typeof window>`u`?null:window.__MINERAL_COOKIE_CONFIG__??null)}function W(e){if(typeof window>`u`||typeof document>`u`)return null;let t=U(e);if(!t)return null;let n=t.scan??{},r=[],i=[];n.storage!==!1&&(r.push(...H(window.localStorage,`localStorage`)),r.push(...H(window.sessionStorage,`sessionStorage`)));let a=[[n.scripts!==!1,`script[src], script[data-mineral-cookie-src]`,`script`],[n.iframes!==!1,`iframe[src], iframe[data-mineral-cookie-src]`,`iframe`],[n.images!==!1,`img[src], img[data-mineral-cookie-src]`,`image`]];for(let[e,t,n]of a)if(e)for(let e of Array.from(document.querySelectorAll(t))){let t=A(e);t&&i.push({kind:n,src:t,host:j(t),category:e.getAttribute(w)??void 0})}return{siteKey:t.siteKey,domain:t.domain??window.location.hostname,url:window.location.href,scannedAt:new Date().toISOString(),cookies:n.cookies===!1?[]:f({requiredCookies:t.requiredCookies??[],categoryRules:t.categoryRules??{}}).map(e=>({...e,matchedBy:e.matchedBy,source:e.source})),storage:r,resources:i}}async function G(e,t){let n=U(e),r=n?.scanEndpoint??n?.reportEndpoint;if(!r||typeof fetch>`u`||!n)return t??null;let i=t??W(n);return i?(await fetch(r,{method:n.reportMethod??`POST`,headers:{"content-type":`application/json`,...n.siteKey?{"x-mineral-site-key":n.siteKey}:{},...n.reportHeaders},body:JSON.stringify(i)}),i):null}function K(e){if(typeof window>`u`||typeof document>`u`)return null;let t=U(e);if(!t)return null;let n=M(t),r=null,i=null,a=()=>{r!=null&&(window.clearTimeout(r),r=null),i!=null&&(window.clearTimeout(i),i=null)},o=(e=0,n)=>{!t.scanEndpoint&&!t.reportEndpoint||(a(),r=window.setTimeout(()=>{r=null,G(t)},e),typeof n==`number`&&(i=window.setTimeout(()=>{i=null,G(t)},n)))},s=e=>{n=e===void 0?M(t):e,B(n,t)};s(n);let c=new MutationObserver(e=>{for(let r of e)for(let e of Array.from(r.addedNodes))if(e instanceof Element)for(let r of R(e))z(r,n,t)});c.observe(document.documentElement,{childList:!0,subtree:!0});let l=e=>{let t=e.detail;s(t?.state??null),o(300,1500)};window.addEventListener(b,l);let u=V(()=>n,t),d=()=>{o()};document.readyState===`complete`?d():window.addEventListener(`load`,d,{once:!0});let f={config:t,destroy:()=>{c.disconnect(),u(),a(),window.removeEventListener(`load`,d),window.removeEventListener(b,l),window.MineralCookieConsentBootstrap===f&&delete window.MineralCookieConsentBootstrap},getState:()=>n,sync:s};return window.MineralCookieConsentBootstrap=f,f}function q(){return typeof window>`u`||typeof document>`u`?null:K(U())}Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return r}});
2
- //# sourceMappingURL=MCookieBootstrap-BUqtJO3m.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MCookieBootstrap-BUqtJO3m.cjs","names":[],"sources":["../src/components/feedback/MCookie/MCookieConsentProvider/MCookieConsent.defaults.ts","../src/components/feedback/MCookie/MCookieConsentProvider/MCookieConsent.inventory.ts","../src/components/feedback/MCookie/MCookieConsentProvider/MCookieConsent.storage.ts","../src/components/feedback/MCookie/MCookieBootstrap/MCookieBootstrap.types.ts","../src/components/feedback/MCookie/MCookieBootstrap/MCookieBootstrap.ts"],"sourcesContent":["import type {MCookieConsentTexts} from '../../../../i18n/frameworkTexts'\nimport type {MCookieCategoryDefinition, MCookieConsentPersistence, MCookieDeclarationItem} from './MCookieConsent.types'\n\nexport const COOKIE_CONSENT_STORAGE_KEY = 'mineralui-cookie-consent'\nexport const COOKIE_CONSENT_COOKIE_NAME = 'mineralui-cookie-consent'\nexport const COOKIE_CONSENT_COOKIE_MAX_AGE_DAYS = 180\nexport const COOKIE_CONSENT_STORAGE: MCookieConsentPersistence = 'localStorage'\n\nexport function mergeCookieConsentTexts(\n baseTexts: MCookieConsentTexts,\n override?: Partial<MCookieConsentTexts>\n): MCookieConsentTexts {\n return {\n ...baseTexts,\n ...override,\n }\n}\n\nexport function createCookieConsentCategories(texts: MCookieConsentTexts): MCookieCategoryDefinition[] {\n return [\n {\n key: 'necessary',\n label: texts.necessaryLabel,\n description: texts.necessaryDescription,\n required: true,\n defaultValue: true,\n },\n {\n key: 'preferences',\n label: texts.preferencesLabel,\n description: texts.preferencesDescriptionLabel,\n defaultValue: false,\n },\n {\n key: 'analytics',\n label: texts.analyticsLabel,\n description: texts.analyticsDescription,\n defaultValue: false,\n },\n {\n key: 'marketing',\n label: texts.marketingLabel,\n description: texts.marketingDescription,\n defaultValue: false,\n },\n ]\n}\n\nexport function createCookieConsentDeclaration(): MCookieDeclarationItem[] {\n return []\n}\n","import {COOKIE_CONSENT_COOKIE_NAME} from './MCookieConsent.defaults'\nimport type {\n MCookieCategoryRules,\n MCookieDetectedCookie,\n MCookieDetectedCookieMatch,\n MCookieMatchRule,\n} from './MCookieConsent.types'\n\nconst INTERNAL_REQUIRED_COOKIE_RULES: MCookieMatchRule[] = [\n COOKIE_CONSENT_COOKIE_NAME,\n /^PHPSESSID$/i,\n /^JSESSIONID$/i,\n /^ASP\\.NET_SessionId$/i,\n /^__Host-/i,\n /^__Secure-/i,\n /csrf/i,\n /xsrf/i,\n /session/i,\n /auth/i,\n /token/i,\n /^sid$/i,\n]\n\nconst BUILT_IN_CATEGORY_RULES: Record<string, MCookieMatchRule[]> = {\n preferences: [/theme/i, /locale/i, /lang/i, /currency/i, /timezone/i, /consent/i],\n analytics: [/^_ga/i, /^_gid/i, /^_gat/i, /^_pk_/i, /^pk_/i, /^_hj/i, /^hj/i, /^amplitude/i, /^mp_/i, /^matomo/i],\n marketing: [/^_fbp$/i, /^_fbc$/i, /^_gcl_/i, /^IDE$/i, /^test_cookie$/i, /^li_/i, /^tt_/i, /^_uet/i, /^pin_utm/i],\n}\n\nfunction matchCookieRule(name: string, rule: MCookieMatchRule) {\n if (typeof rule === 'string') {\n const normalizedRule = rule.trim().toLowerCase()\n const normalizedName = name.trim().toLowerCase()\n\n if (normalizedRule.endsWith('*')) {\n return normalizedName.startsWith(normalizedRule.slice(0, -1))\n }\n\n return normalizedName === normalizedRule\n }\n\n return rule.test(name)\n}\n\nfunction matchCookieRules(name: string, rules?: MCookieMatchRule[]) {\n return Array.isArray(rules) && rules.some((rule) => matchCookieRule(name, rule))\n}\n\nfunction parseDocumentCookies(cookieString: string) {\n if (!cookieString.trim()) {\n return []\n }\n\n return cookieString\n .split(';')\n .map((chunk) => chunk.trim())\n .filter(Boolean)\n .map((chunk) => {\n const separatorIndex = chunk.indexOf('=')\n if (separatorIndex === -1) {\n return {\n name: chunk,\n value: '',\n }\n }\n\n return {\n name: chunk.slice(0, separatorIndex).trim(),\n value: chunk.slice(separatorIndex + 1).trim(),\n }\n })\n .filter((item) => item.name.length > 0)\n}\n\nfunction classifyCookie(\n name: string,\n requiredCookies: MCookieMatchRule[],\n categoryRules: MCookieCategoryRules\n): Pick<MCookieDetectedCookie, 'category' | 'required' | 'matchedBy'> {\n if (matchCookieRules(name, [...INTERNAL_REQUIRED_COOKIE_RULES, ...requiredCookies])) {\n return {\n category: 'necessary',\n required: true,\n matchedBy: 'required',\n }\n }\n\n for (const [category, rules] of Object.entries(categoryRules)) {\n if (matchCookieRules(name, rules)) {\n return {\n category,\n required: false,\n matchedBy: 'custom',\n }\n }\n }\n\n for (const [category, rules] of Object.entries(BUILT_IN_CATEGORY_RULES)) {\n if (matchCookieRules(name, rules)) {\n return {\n category,\n required: false,\n matchedBy: 'built-in',\n }\n }\n }\n\n return {\n category: 'preferences',\n required: false,\n matchedBy: 'fallback',\n }\n}\n\nexport function detectDocumentCookies({\n cookieString,\n requiredCookies = [],\n categoryRules = {},\n}: {\n cookieString?: string\n requiredCookies?: MCookieMatchRule[]\n categoryRules?: MCookieCategoryRules\n}) {\n const source = cookieString ?? (typeof document !== 'undefined' ? document.cookie : '')\n\n return parseDocumentCookies(source).map<MCookieDetectedCookie>((item) => {\n const classification = classifyCookie(item.name, requiredCookies, categoryRules)\n\n return {\n name: item.name,\n value: item.value,\n category: classification.category,\n required: classification.required,\n matchedBy: classification.matchedBy as MCookieDetectedCookieMatch,\n source: 'document.cookie',\n }\n })\n}\n","import type {MCookieConsentPersistence, MCookieConsentState} from './MCookieConsent.types'\n\ninterface CookieConsentStorageOptions {\n storage: MCookieConsentPersistence\n storageKey: string\n cookieName: string\n cookieMaxAgeDays: number\n}\n\nfunction isCookieConsentState(value: unknown): value is MCookieConsentState {\n if (!value || typeof value !== 'object') {\n return false\n }\n\n const candidate = value as MCookieConsentState\n\n return (\n typeof candidate.version === 'string' &&\n typeof candidate.decidedAt === 'string' &&\n typeof candidate.source === 'string' &&\n candidate.categories != null &&\n typeof candidate.categories === 'object'\n )\n}\n\nfunction readCookieValue(name: string): string | null {\n if (typeof document === 'undefined') {\n return null\n }\n\n const prefix = `${encodeURIComponent(name)}=`\n\n for (const chunk of document.cookie.split(';')) {\n const trimmed = chunk.trim()\n if (trimmed.startsWith(prefix)) {\n return decodeURIComponent(trimmed.slice(prefix.length))\n }\n }\n\n return null\n}\n\nfunction writeCookieValue(name: string, value: string, maxAgeDays: number) {\n if (typeof document === 'undefined') {\n return\n }\n\n document.cookie = `${encodeURIComponent(name)}=${encodeURIComponent(value)}; path=/; max-age=${Math.floor(\n maxAgeDays * 24 * 60 * 60\n )}; samesite=lax`\n}\n\nfunction clearCookieValue(name: string) {\n if (typeof document === 'undefined') {\n return\n }\n\n document.cookie = `${encodeURIComponent(name)}=; path=/; max-age=0; samesite=lax`\n}\n\nexport function readStoredCookieConsent({\n storage,\n storageKey,\n cookieName,\n}: Pick<CookieConsentStorageOptions, 'storage' | 'storageKey' | 'cookieName'>): MCookieConsentState | null {\n try {\n const raw = storage === 'cookie' ? readCookieValue(cookieName) : localStorage.getItem(storageKey)\n if (!raw) {\n return null\n }\n\n const parsed = JSON.parse(raw) as unknown\n return isCookieConsentState(parsed) ? parsed : null\n } catch {\n return null\n }\n}\n\nexport function writeStoredCookieConsent(\n {storage, storageKey, cookieName, cookieMaxAgeDays}: CookieConsentStorageOptions,\n state: MCookieConsentState\n) {\n try {\n const serialized = JSON.stringify(state)\n\n if (storage === 'cookie') {\n writeCookieValue(cookieName, serialized, cookieMaxAgeDays)\n return\n }\n\n localStorage.setItem(storageKey, serialized)\n } catch {\n /* noop */\n }\n}\n\nexport function clearStoredCookieConsent({\n storage,\n storageKey,\n cookieName,\n}: Pick<CookieConsentStorageOptions, 'storage' | 'storageKey' | 'cookieName'>) {\n try {\n if (storage === 'cookie') {\n clearCookieValue(cookieName)\n return\n }\n\n localStorage.removeItem(storageKey)\n } catch {\n /* noop */\n }\n}\n","import type {\n MCookieCategoryDefinition,\n MCookieConsentPersistence,\n MCookieConsentState,\n MCookieDeclarationItem,\n} from '../MCookieConsentProvider'\n\nexport const MCOOKIE_CONSENT_CHANGE_EVENT = 'mineralui:cookie-consent-change'\nexport const MCOOKIE_BOOTSTRAP_CONFIG_KEY = '__MINERAL_COOKIE_CONFIG__'\nexport const MCOOKIE_RUNTIME_KEY = '__MINERAL_COOKIE_RUNTIME__'\nexport const MCOOKIE_RUNTIME_READY_EVENT = 'mineralui:cookie-runtime-ready'\n\nexport type MCookieBootstrapResourceKind = 'script' | 'iframe' | 'image'\n\nexport interface MCookieBootstrapResourceRules {\n scripts?: Record<string, string[]>\n iframes?: Record<string, string[]>\n images?: Record<string, string[]>\n}\n\nexport interface MCookieBootstrapScanOptions {\n cookies?: boolean\n storage?: boolean\n scripts?: boolean\n iframes?: boolean\n images?: boolean\n}\n\nexport interface MCookieBootstrapConfig {\n siteKey?: string\n domain?: string\n version?: string\n storage?: MCookieConsentPersistence\n storageKey?: string\n cookieName?: string\n cookieMaxAgeDays?: number\n categories?: MCookieCategoryDefinition[]\n hideOnAccept?: boolean\n autoShow?: boolean\n reopenOnVersionChange?: boolean\n requiredCookies?: string[]\n categoryRules?: Record<string, string[]>\n resources?: MCookieBootstrapResourceRules\n scan?: MCookieBootstrapScanOptions\n configEndpoint?: string\n scanEndpoint?: string\n reportEndpoint?: string\n reportMethod?: 'POST' | 'PUT'\n reportHeaders?: Record<string, string>\n}\n\nexport interface MCookieRuntime {\n config: MCookieBootstrapConfig\n getDeclaration?: () => Promise<MCookieDeclarationItem[]>\n getConsent?: () => Promise<MCookieConsentState | null>\n saveConsent?: (state: MCookieConsentState) => void | Promise<void>\n}\n\nexport interface MCookieBootstrapChangeDetail {\n state: MCookieConsentState | null\n}\n\nexport interface MCookieScanStorageItem {\n kind: 'localStorage' | 'sessionStorage'\n key: string\n value: string\n}\n\nexport interface MCookieScanResourceItem {\n kind: MCookieBootstrapResourceKind\n src: string\n host: string\n category?: string\n}\n\nexport interface MCookieScanCookieItem {\n name: string\n value: string\n category: string\n required: boolean\n matchedBy: string\n source: string\n}\n\nexport interface MCookieScanReport {\n siteKey?: string\n domain: string\n url: string\n scannedAt: string\n cookies: MCookieScanCookieItem[]\n storage: MCookieScanStorageItem[]\n resources: MCookieScanResourceItem[]\n}\n\nexport interface MCookieBootstrapHandle {\n config: MCookieBootstrapConfig\n destroy: () => void\n getState: () => MCookieConsentState | null\n sync: (state?: MCookieConsentState | null) => void\n}\n\ndeclare global {\n interface Window {\n __MINERAL_COOKIE_CONFIG__?: MCookieBootstrapConfig\n __MINERAL_COOKIE_RUNTIME__?: MCookieRuntime\n MineralCookieConsentBootstrap?: MCookieBootstrapHandle\n }\n}\n","import {detectDocumentCookies} from '../MCookieConsentProvider/MCookieConsent.inventory'\nimport {\n COOKIE_CONSENT_COOKIE_NAME,\n COOKIE_CONSENT_STORAGE,\n COOKIE_CONSENT_STORAGE_KEY,\n} from '../MCookieConsentProvider/MCookieConsent.defaults'\nimport {readStoredCookieConsent} from '../MCookieConsentProvider/MCookieConsent.storage'\nimport type {MCookieConsentState} from '../MCookieConsentProvider'\nimport {MCOOKIE_BOOTSTRAP_CONFIG_KEY, MCOOKIE_CONSENT_CHANGE_EVENT} from './MCookieBootstrap.types'\nimport type {\n MCookieBootstrapConfig,\n MCookieBootstrapHandle,\n MCookieBootstrapResourceKind,\n MCookieScanReport,\n MCookieScanResourceItem,\n MCookieScanStorageItem,\n} from './MCookieBootstrap.types'\n\nconst CATEGORY_ATTRIBUTE = 'data-mineral-cookie-category'\nconst BLOCKED_ATTRIBUTE = 'data-mineral-cookie-blocked'\nconst SRC_ATTRIBUTE = 'data-mineral-cookie-src'\nconst TYPE_ATTRIBUTE = 'data-mineral-cookie-type'\n\nfunction toPatternRegExp(pattern: string) {\n const escaped = pattern.replace(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&').replace(/\\*/g, '.*')\n return new RegExp(`^${escaped}$`, 'i')\n}\n\nfunction matchesPattern(value: string, pattern: string) {\n return toPatternRegExp(pattern).test(value)\n}\n\nfunction getElementSource(node: Element) {\n if (node instanceof HTMLScriptElement || node instanceof HTMLIFrameElement || node instanceof HTMLImageElement) {\n return node.getAttribute('src') ?? node.getAttribute(SRC_ATTRIBUTE) ?? ''\n }\n\n return ''\n}\n\nfunction getSourceHost(src: string) {\n try {\n return new URL(src, window.location.href).hostname\n } catch {\n return ''\n }\n}\n\nfunction getConsentState(config: MCookieBootstrapConfig) {\n return readStoredCookieConsent({\n storage: config.storage ?? COOKIE_CONSENT_STORAGE,\n storageKey: config.storageKey ?? COOKIE_CONSENT_STORAGE_KEY,\n cookieName: config.cookieName ?? COOKIE_CONSENT_COOKIE_NAME,\n })\n}\n\nfunction isCategoryAllowed(state: MCookieConsentState | null, category: string) {\n if (category === 'necessary') {\n return true\n }\n\n return state?.categories?.[category] === true\n}\n\nfunction findMatchedCategory(node: Element, config: MCookieBootstrapConfig) {\n const explicitCategory = node.getAttribute(CATEGORY_ATTRIBUTE)\n if (explicitCategory) {\n return explicitCategory\n }\n\n const src = getElementSource(node)\n if (!src) {\n return null\n }\n\n const host = getSourceHost(src)\n if (!host) {\n return null\n }\n\n const kind: MCookieBootstrapResourceKind | null =\n node instanceof HTMLScriptElement\n ? 'script'\n : node instanceof HTMLIFrameElement\n ? 'iframe'\n : node instanceof HTMLImageElement\n ? 'image'\n : null\n\n if (!kind) {\n return null\n }\n\n const rules =\n kind === 'script'\n ? config.resources?.scripts\n : kind === 'iframe'\n ? config.resources?.iframes\n : config.resources?.images\n\n if (!rules) {\n return null\n }\n\n for (const [category, patterns] of Object.entries(rules)) {\n if (patterns.some((pattern) => matchesPattern(host, pattern) || matchesPattern(src, pattern))) {\n node.setAttribute(CATEGORY_ATTRIBUTE, category)\n return category\n }\n }\n\n return null\n}\n\nfunction blockNode(node: Element) {\n if (node.getAttribute(BLOCKED_ATTRIBUTE) === 'true') {\n return\n }\n\n if (node instanceof HTMLScriptElement) {\n const currentType = node.getAttribute('type') ?? ''\n const src = node.getAttribute('src')\n if (src) {\n node.setAttribute(SRC_ATTRIBUTE, src)\n node.removeAttribute('src')\n }\n\n node.setAttribute(TYPE_ATTRIBUTE, currentType === 'text/plain' ? '' : currentType)\n node.type = 'text/plain'\n node.setAttribute(BLOCKED_ATTRIBUTE, 'true')\n return\n }\n\n if (node instanceof HTMLIFrameElement || node instanceof HTMLImageElement) {\n const src = node.getAttribute('src')\n if (src) {\n node.setAttribute(SRC_ATTRIBUTE, src)\n node.removeAttribute('src')\n }\n\n node.setAttribute(BLOCKED_ATTRIBUTE, 'true')\n }\n}\n\nfunction activateScript(node: HTMLScriptElement) {\n const src = node.getAttribute(SRC_ATTRIBUTE)\n const clone = document.createElement('script')\n\n for (const attribute of node.getAttributeNames()) {\n if (\n attribute === 'type' ||\n attribute === BLOCKED_ATTRIBUTE ||\n attribute === SRC_ATTRIBUTE ||\n attribute === TYPE_ATTRIBUTE\n ) {\n continue\n }\n\n clone.setAttribute(attribute, node.getAttribute(attribute) ?? '')\n }\n\n const originalType = node.getAttribute(TYPE_ATTRIBUTE)\n if (originalType) {\n clone.type = originalType\n }\n\n if (src) {\n clone.src = src\n } else {\n clone.textContent = node.textContent\n }\n\n node.replaceWith(clone)\n}\n\nfunction activateNode(node: Element) {\n if (node instanceof HTMLScriptElement) {\n const canActivate =\n node.getAttribute(BLOCKED_ATTRIBUTE) === 'true' ||\n (node.type === 'text/plain' && node.hasAttribute(CATEGORY_ATTRIBUTE))\n\n if (!canActivate) {\n return\n }\n\n activateScript(node)\n return\n }\n\n if (node instanceof HTMLIFrameElement || node instanceof HTMLImageElement) {\n if (node.getAttribute(BLOCKED_ATTRIBUTE) !== 'true' && !node.hasAttribute(SRC_ATTRIBUTE)) {\n return\n }\n\n const src = node.getAttribute(SRC_ATTRIBUTE)\n if (src) {\n node.setAttribute('src', src)\n }\n\n node.removeAttribute(SRC_ATTRIBUTE)\n node.removeAttribute(BLOCKED_ATTRIBUTE)\n }\n}\n\nfunction collectCandidateNodes(root: ParentNode) {\n const directNodes: Element[] = []\n\n if (root instanceof Element) {\n directNodes.push(root)\n }\n\n const nestedNodes = Array.from(root.querySelectorAll('script, iframe, img'))\n return [...directNodes, ...nestedNodes]\n}\n\nfunction syncNode(node: Element, state: MCookieConsentState | null, config: MCookieBootstrapConfig) {\n const category = findMatchedCategory(node, config)\n if (!category) {\n return\n }\n\n if (isCategoryAllowed(state, category)) {\n activateNode(node)\n return\n }\n\n blockNode(node)\n}\n\nfunction syncDocument(state: MCookieConsentState | null, config: MCookieBootstrapConfig) {\n for (const node of collectCandidateNodes(document)) {\n syncNode(node, state, config)\n }\n}\n\nfunction patchDomInsertion(getState: () => MCookieConsentState | null, config: MCookieBootstrapConfig) {\n const appendChild = Node.prototype.appendChild\n const insertBefore = Node.prototype.insertBefore\n const replaceChild = Node.prototype.replaceChild\n\n Node.prototype.appendChild = function patchedAppendChild<T extends Node>(node: T) {\n if (node instanceof Element) {\n for (const element of collectCandidateNodes(node)) {\n syncNode(element, getState(), config)\n }\n }\n\n return appendChild.call(this, node) as T\n }\n\n Node.prototype.insertBefore = function patchedInsertBefore<T extends Node>(node: T, child: Node | null) {\n if (node instanceof Element) {\n for (const element of collectCandidateNodes(node)) {\n syncNode(element, getState(), config)\n }\n }\n\n return insertBefore.call(this, node, child) as T\n }\n\n Node.prototype.replaceChild = function patchedReplaceChild<T extends Node>(node: Node, child: T) {\n if (node instanceof Element) {\n for (const element of collectCandidateNodes(node)) {\n syncNode(element, getState(), config)\n }\n }\n\n return replaceChild.call(this, node, child) as T\n }\n\n return () => {\n Node.prototype.appendChild = appendChild\n Node.prototype.insertBefore = insertBefore\n Node.prototype.replaceChild = replaceChild\n }\n}\n\nfunction scanStorage(storage: Storage, kind: 'localStorage' | 'sessionStorage') {\n const items: MCookieScanStorageItem[] = []\n\n try {\n for (let index = 0; index < storage.length; index += 1) {\n const key = storage.key(index)\n if (!key) {\n continue\n }\n\n items.push({\n kind,\n key,\n value: storage.getItem(key) ?? '',\n })\n }\n } catch {\n return []\n }\n\n return items\n}\n\nexport function readMCookieBootstrapConfig(config?: MCookieBootstrapConfig | null) {\n if (config) {\n return config\n }\n\n if (typeof window === 'undefined') {\n return null\n }\n\n return window[MCOOKIE_BOOTSTRAP_CONFIG_KEY] ?? null\n}\n\nexport function scanMCookieSurface(config?: MCookieBootstrapConfig | null): MCookieScanReport | null {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return null\n }\n\n const resolvedConfig = readMCookieBootstrapConfig(config)\n if (!resolvedConfig) {\n return null\n }\n\n const scan = resolvedConfig.scan ?? {}\n const storageItems: MCookieScanStorageItem[] = []\n const resources: MCookieScanResourceItem[] = []\n\n if (scan.storage !== false) {\n storageItems.push(...scanStorage(window.localStorage, 'localStorage'))\n storageItems.push(...scanStorage(window.sessionStorage, 'sessionStorage'))\n }\n\n const resourceSelectors: Array<[boolean, string, MCookieBootstrapResourceKind]> = [\n [scan.scripts !== false, 'script[src], script[data-mineral-cookie-src]', 'script'],\n [scan.iframes !== false, 'iframe[src], iframe[data-mineral-cookie-src]', 'iframe'],\n [scan.images !== false, 'img[src], img[data-mineral-cookie-src]', 'image'],\n ]\n\n for (const [enabled, selector, kind] of resourceSelectors) {\n if (!enabled) {\n continue\n }\n\n for (const node of Array.from(document.querySelectorAll(selector))) {\n const src = getElementSource(node)\n if (!src) {\n continue\n }\n\n resources.push({\n kind,\n src,\n host: getSourceHost(src),\n category: node.getAttribute(CATEGORY_ATTRIBUTE) ?? undefined,\n })\n }\n }\n\n return {\n siteKey: resolvedConfig.siteKey,\n domain: resolvedConfig.domain ?? window.location.hostname,\n url: window.location.href,\n scannedAt: new Date().toISOString(),\n cookies:\n scan.cookies === false\n ? []\n : detectDocumentCookies({\n requiredCookies: resolvedConfig.requiredCookies ?? [],\n categoryRules: resolvedConfig.categoryRules ?? {},\n }).map((item) => ({\n ...item,\n matchedBy: item.matchedBy,\n source: item.source,\n })),\n storage: storageItems,\n resources,\n }\n}\n\nexport async function reportMCookieSurface(config?: MCookieBootstrapConfig | null, report?: MCookieScanReport | null) {\n const resolvedConfig = readMCookieBootstrapConfig(config)\n const endpoint = resolvedConfig?.scanEndpoint ?? resolvedConfig?.reportEndpoint\n\n if (!endpoint || typeof fetch === 'undefined') {\n return report ?? null\n }\n\n if (!resolvedConfig) {\n return report ?? null\n }\n\n const payload = report ?? scanMCookieSurface(resolvedConfig)\n if (!payload) {\n return null\n }\n\n await fetch(endpoint, {\n method: resolvedConfig.reportMethod ?? 'POST',\n headers: {\n 'content-type': 'application/json',\n ...(resolvedConfig.siteKey ? {'x-mineral-site-key': resolvedConfig.siteKey} : {}),\n ...resolvedConfig.reportHeaders,\n },\n body: JSON.stringify(payload),\n })\n\n return payload\n}\n\nexport function bootstrapMCookieConsent(config?: MCookieBootstrapConfig | null): MCookieBootstrapHandle | null {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return null\n }\n\n const resolvedConfig = readMCookieBootstrapConfig(config)\n if (!resolvedConfig) {\n return null\n }\n\n let state = getConsentState(resolvedConfig)\n let reportTimer: number | null = null\n let followUpReportTimer: number | null = null\n\n const clearReportTimers = () => {\n if (reportTimer != null) {\n window.clearTimeout(reportTimer)\n reportTimer = null\n }\n\n if (followUpReportTimer != null) {\n window.clearTimeout(followUpReportTimer)\n followUpReportTimer = null\n }\n }\n\n const scheduleReport = (primaryDelay = 0, followUpDelay?: number) => {\n if (!resolvedConfig.scanEndpoint && !resolvedConfig.reportEndpoint) {\n return\n }\n\n clearReportTimers()\n\n reportTimer = window.setTimeout(() => {\n reportTimer = null\n void reportMCookieSurface(resolvedConfig)\n }, primaryDelay)\n\n if (typeof followUpDelay === 'number') {\n followUpReportTimer = window.setTimeout(() => {\n followUpReportTimer = null\n void reportMCookieSurface(resolvedConfig)\n }, followUpDelay)\n }\n }\n\n const sync = (nextState?: MCookieConsentState | null) => {\n state = nextState === undefined ? getConsentState(resolvedConfig) : nextState\n syncDocument(state, resolvedConfig)\n }\n\n sync(state)\n\n const observer = new MutationObserver((records) => {\n for (const record of records) {\n for (const node of Array.from(record.addedNodes)) {\n if (!(node instanceof Element)) {\n continue\n }\n\n for (const element of collectCandidateNodes(node)) {\n syncNode(element, state, resolvedConfig)\n }\n }\n }\n })\n\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true,\n })\n\n const handleConsentChange = (event: Event) => {\n const detail = (event as CustomEvent<{state: MCookieConsentState | null}>).detail\n sync(detail?.state ?? null)\n scheduleReport(300, 1500)\n }\n\n window.addEventListener(MCOOKIE_CONSENT_CHANGE_EVENT, handleConsentChange)\n\n const restoreDom = patchDomInsertion(() => state, resolvedConfig)\n\n const handleWindowLoad = () => {\n scheduleReport()\n }\n\n if (document.readyState === 'complete') {\n handleWindowLoad()\n } else {\n window.addEventListener('load', handleWindowLoad, {once: true})\n }\n\n const handle: MCookieBootstrapHandle = {\n config: resolvedConfig,\n destroy: () => {\n observer.disconnect()\n restoreDom()\n clearReportTimers()\n window.removeEventListener('load', handleWindowLoad)\n window.removeEventListener(MCOOKIE_CONSENT_CHANGE_EVENT, handleConsentChange)\n if (window.MineralCookieConsentBootstrap === handle) {\n delete window.MineralCookieConsentBootstrap\n }\n },\n getState: () => state,\n sync,\n }\n\n window.MineralCookieConsentBootstrap = handle\n return handle\n}\n\nexport function autoBootstrapMCookieConsent() {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return null\n }\n\n return bootstrapMCookieConsent(readMCookieBootstrapConfig())\n}\n"],"mappings":"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"}