@banzamel/mineralui 2.4.0 → 2.4.1

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 (227) hide show
  1. package/README.md +1 -1
  2. package/dist/{MAvatar-xI5aZ-bP.cjs → MAvatar-Capz5Gbc.cjs} +2 -2
  3. package/dist/{MAvatar-xI5aZ-bP.cjs.map → MAvatar-Capz5Gbc.cjs.map} +1 -1
  4. package/dist/{MButton-CMbmWmMI.cjs → MButton-sTKnano6.cjs} +2 -2
  5. package/dist/{MButton-CMbmWmMI.cjs.map → MButton-sTKnano6.cjs.map} +1 -1
  6. package/dist/{MButtonGroup-agnKWUPy.cjs → MButtonGroup-iPv14c0V.cjs} +2 -2
  7. package/dist/{MButtonGroup-agnKWUPy.cjs.map → MButtonGroup-iPv14c0V.cjs.map} +1 -1
  8. package/dist/{MCard-CADu7UUA.cjs → MCard-DK-_FkpE.cjs} +2 -2
  9. package/dist/{MCard-CADu7UUA.cjs.map → MCard-DK-_FkpE.cjs.map} +1 -1
  10. package/dist/{MCheckbox-stBujis6.cjs → MCheckbox-CIX7wp41.cjs} +2 -2
  11. package/dist/{MCheckbox-stBujis6.cjs.map → MCheckbox-CIX7wp41.cjs.map} +1 -1
  12. package/dist/{MConflictIllustration-Drsm8_8C.js → MConflictIllustration-3K0lCAsD.js} +3 -3
  13. package/dist/MConflictIllustration-3K0lCAsD.js.map +1 -0
  14. package/dist/MConflictIllustration-BuK6cSsc.cjs +2 -0
  15. package/dist/MConflictIllustration-BuK6cSsc.cjs.map +1 -0
  16. package/dist/{MDetailList-CQ2sJ7Jl.cjs → MDetailList-Ce7KzUKC.cjs} +2 -2
  17. package/dist/{MDetailList-CQ2sJ7Jl.cjs.map → MDetailList-Ce7KzUKC.cjs.map} +1 -1
  18. package/dist/{MDropdownMenu-DAzieAOs.cjs → MDropdownMenu-B_QWQhxy.cjs} +2 -2
  19. package/dist/{MDropdownMenu-DAzieAOs.cjs.map → MDropdownMenu-B_QWQhxy.cjs.map} +1 -1
  20. package/dist/{MDropdownMenu-B7RR8d8x.js → MDropdownMenu-C4CuKMRZ.js} +1 -1
  21. package/dist/{MDropdownMenu-B7RR8d8x.js.map → MDropdownMenu-C4CuKMRZ.js.map} +1 -1
  22. package/dist/{MGrid-LHi7TY5J.cjs → MGrid-fTx6wFq_.cjs} +2 -2
  23. package/dist/{MGrid-LHi7TY5J.cjs.map → MGrid-fTx6wFq_.cjs.map} +1 -1
  24. package/dist/{MHeading-7yt1C6oS.cjs → MHeading-KDSpnCof.cjs} +2 -2
  25. package/dist/{MHeading-7yt1C6oS.cjs.map → MHeading-KDSpnCof.cjs.map} +1 -1
  26. package/dist/{MI18nProvider-Cx4ZaFtv.cjs → MI18nProvider-DXRbB0VY.cjs} +2 -2
  27. package/dist/{MI18nProvider-Cx4ZaFtv.cjs.map → MI18nProvider-DXRbB0VY.cjs.map} +1 -1
  28. package/dist/{MInput-BSeWCsPi.cjs → MInput-CGl2Q-rM.cjs} +2 -2
  29. package/dist/{MInput-BSeWCsPi.cjs.map → MInput-CGl2Q-rM.cjs.map} +1 -1
  30. package/dist/{MInputCVC-CtHPCx_r.js → MInputCVC-Blv5PeyS.js} +2 -2
  31. package/dist/{MInputCVC-CtHPCx_r.js.map → MInputCVC-Blv5PeyS.js.map} +1 -1
  32. package/dist/{MInputCVC-rNs8w4gH.cjs → MInputCVC-lAFKTV6y.cjs} +2 -2
  33. package/dist/{MInputCVC-rNs8w4gH.cjs.map → MInputCVC-lAFKTV6y.cjs.map} +1 -1
  34. package/dist/{MInputSearch-BfPPgEGZ.cjs → MInputSearch-BZDnbFB4.cjs} +2 -2
  35. package/dist/{MInputSearch-BfPPgEGZ.cjs.map → MInputSearch-BZDnbFB4.cjs.map} +1 -1
  36. package/dist/{MKbd-C6XHWlmE.cjs → MKbd-DqMnZ7Iv.cjs} +2 -2
  37. package/dist/{MKbd-C6XHWlmE.cjs.map → MKbd-DqMnZ7Iv.cjs.map} +1 -1
  38. package/dist/{MLink-CbaDlP5I.cjs → MLink-U24G6KJj.cjs} +2 -2
  39. package/dist/{MLink-CbaDlP5I.cjs.map → MLink-U24G6KJj.cjs.map} +1 -1
  40. package/dist/{MLoader-DELAIhz5.cjs → MLoader-CvFIvytw.cjs} +2 -2
  41. package/dist/{MLoader-DELAIhz5.cjs.map → MLoader-CvFIvytw.cjs.map} +1 -1
  42. package/dist/{MPagination-CgmNEAZX.js → MPagination-BkvOEZpp.js} +1 -1
  43. package/dist/{MPagination-CgmNEAZX.js.map → MPagination-BkvOEZpp.js.map} +1 -1
  44. package/dist/{MPagination-C2lpvPqC.cjs → MPagination-DgQta29Q.cjs} +2 -2
  45. package/dist/{MPagination-C2lpvPqC.cjs.map → MPagination-DgQta29Q.cjs.map} +1 -1
  46. package/dist/{MPopover-DI_7niwe.cjs → MPopover-C-e1CoV0.cjs} +2 -2
  47. package/dist/{MPopover-DI_7niwe.cjs.map → MPopover-C-e1CoV0.cjs.map} +1 -1
  48. package/dist/{MPortal-C9Ucq8Um.cjs → MPortal-DUSIuINN.cjs} +2 -2
  49. package/dist/{MPortal-C9Ucq8Um.cjs.map → MPortal-DUSIuINN.cjs.map} +1 -1
  50. package/dist/{MSimpleGrid-K-8Qg9em.cjs → MSimpleGrid-BzlIitcJ.cjs} +2 -2
  51. package/dist/{MSimpleGrid-K-8Qg9em.cjs.map → MSimpleGrid-BzlIitcJ.cjs.map} +1 -1
  52. package/dist/{MSkeleton-DgU8aktI.cjs → MSkeleton-BoFpowFU.cjs} +2 -2
  53. package/dist/{MSkeleton-DgU8aktI.cjs.map → MSkeleton-BoFpowFU.cjs.map} +1 -1
  54. package/dist/{MSlider-0ApojrDC.cjs → MSlider-BTDBqF8t.cjs} +2 -2
  55. package/dist/{MSlider-0ApojrDC.cjs.map → MSlider-BTDBqF8t.cjs.map} +1 -1
  56. package/dist/{MStack-BOOciEts.cjs → MStack-B3Ldqsc-.cjs} +2 -2
  57. package/dist/{MStack-BOOciEts.cjs.map → MStack-B3Ldqsc-.cjs.map} +1 -1
  58. package/dist/{MSubText-WixraICV.cjs → MSubText-47PsgE8T.cjs} +2 -2
  59. package/dist/{MSubText-WixraICV.cjs.map → MSubText-47PsgE8T.cjs.map} +1 -1
  60. package/dist/{MSurface-CF8BFFn4.cjs → MSurface-QYEygc_0.cjs} +2 -2
  61. package/dist/{MSurface-CF8BFFn4.cjs.map → MSurface-QYEygc_0.cjs.map} +1 -1
  62. package/dist/{MTag-CgXh2PQC.cjs → MTag-BjV-dXkk.cjs} +2 -2
  63. package/dist/{MTag-CgXh2PQC.cjs.map → MTag-BjV-dXkk.cjs.map} +1 -1
  64. package/dist/{MText-CDDEGjBx.cjs → MText-Dni707tS.cjs} +2 -2
  65. package/dist/{MText-CDDEGjBx.cjs.map → MText-Dni707tS.cjs.map} +1 -1
  66. package/dist/{MTooltip-BWqyv6QU.cjs → MTooltip-ChvuN4Ow.cjs} +2 -2
  67. package/dist/{MTooltip-BWqyv6QU.cjs.map → MTooltip-ChvuN4Ow.cjs.map} +1 -1
  68. package/dist/{MTooltip-BTJkzOah.js → MTooltip-H3we0a7w.js} +1 -1
  69. package/dist/{MTooltip-BTJkzOah.js.map → MTooltip-H3we0a7w.js.map} +1 -1
  70. package/dist/{MTreeView-BcVw0Bgz.cjs → MTreeView-VYp0eErQ.cjs} +2 -2
  71. package/dist/{MTreeView-BcVw0Bgz.cjs.map → MTreeView-VYp0eErQ.cjs.map} +1 -1
  72. package/dist/{arduino-Bedph8hQ.cjs → arduino-BdpdaLwK.cjs} +1 -1
  73. package/dist/{arduino-Bedph8hQ.cjs.map → arduino-BdpdaLwK.cjs.map} +1 -1
  74. package/dist/{arduino-BHobW-W2.js → arduino-DDDlP9Yt.js} +1 -1
  75. package/dist/{arduino-BHobW-W2.js.map → arduino-DDDlP9Yt.js.map} +1 -1
  76. package/dist/{bash-oKnFbgn1.js → bash-D8WbAmuA.js} +1 -1
  77. package/dist/{bash-oKnFbgn1.js.map → bash-D8WbAmuA.js.map} +1 -1
  78. package/dist/{bash-CK4DSkpy.cjs → bash-eOUFh3S1.cjs} +1 -1
  79. package/dist/{bash-CK4DSkpy.cjs.map → bash-eOUFh3S1.cjs.map} +1 -1
  80. package/dist/{c-9Uw9QchT.cjs → c-Bur7Mn-u.cjs} +1 -1
  81. package/dist/{c-9Uw9QchT.cjs.map → c-Bur7Mn-u.cjs.map} +1 -1
  82. package/dist/{c-Bjn-r6WZ.js → c-CTKNfUJI.js} +1 -1
  83. package/dist/{c-Bjn-r6WZ.js.map → c-CTKNfUJI.js.map} +1 -1
  84. package/dist/calendar-P7MwKfWS.cjs +2 -0
  85. package/dist/{calendar-BFfeWRa0.cjs.map → calendar-P7MwKfWS.cjs.map} +1 -1
  86. package/dist/{calendar-DhRP5_mS.js → calendar-bzeZRst9.js} +59 -58
  87. package/dist/{calendar-DhRP5_mS.js.map → calendar-bzeZRst9.js.map} +1 -1
  88. package/dist/calendar.cjs +1 -1
  89. package/dist/calendar.js +1 -1
  90. package/dist/calendarDates-AnlGcvZM.cjs +2 -0
  91. package/dist/calendarDates-AnlGcvZM.cjs.map +1 -0
  92. package/dist/calendarDates-CYkJqcnp.js +50 -0
  93. package/dist/calendarDates-CYkJqcnp.js.map +1 -0
  94. package/dist/{cards-Dus8TmSD.js → cards-CFDJsdxR.js} +4 -4
  95. package/dist/{cards-Dus8TmSD.js.map → cards-CFDJsdxR.js.map} +1 -1
  96. package/dist/{cards-Bwos44EP.cjs → cards-DeA7I2KC.cjs} +2 -2
  97. package/dist/{cards-Bwos44EP.cjs.map → cards-DeA7I2KC.cjs.map} +1 -1
  98. package/dist/cards.cjs +1 -1
  99. package/dist/cards.js +1 -1
  100. package/dist/components/data/MWeekGrid/MWeekGrid.types.d.ts +9 -4
  101. package/dist/{controls-CeHdKaQv.cjs → controls-KK-TyUTT.cjs} +2 -2
  102. package/dist/{controls-CeHdKaQv.cjs.map → controls-KK-TyUTT.cjs.map} +1 -1
  103. package/dist/controls.cjs +1 -1
  104. package/dist/{core-CMHNXulE.js → core-D5-SQcs8.js} +1 -1
  105. package/dist/{core-CMHNXulE.js.map → core-D5-SQcs8.js.map} +1 -1
  106. package/dist/{core-CLRD6sG4.cjs → core-D66c1_Wo.cjs} +1 -1
  107. package/dist/{core-CLRD6sG4.cjs.map → core-D66c1_Wo.cjs.map} +1 -1
  108. package/dist/{cpp-BWqMcMeX.cjs → cpp-BMULAf-B.cjs} +1 -1
  109. package/dist/{cpp-BWqMcMeX.cjs.map → cpp-BMULAf-B.cjs.map} +1 -1
  110. package/dist/{cpp-b3FmFTKl.js → cpp-DAzz2TpY.js} +1 -1
  111. package/dist/{cpp-b3FmFTKl.js.map → cpp-DAzz2TpY.js.map} +1 -1
  112. package/dist/{css-B4MkxW0b.cjs → css-9M03GzKO.cjs} +1 -1
  113. package/dist/{css-B4MkxW0b.cjs.map → css-9M03GzKO.cjs.map} +1 -1
  114. package/dist/{css-8EzLAJKV.js → css-EGOXTWIl.js} +1 -1
  115. package/dist/{css-8EzLAJKV.js.map → css-EGOXTWIl.js.map} +1 -1
  116. package/dist/{data-Dh3C_VTi.js → data-CgLutFxU.js} +245 -230
  117. package/dist/data-CgLutFxU.js.map +1 -0
  118. package/dist/data-DFrkJTlF.cjs +2 -0
  119. package/dist/data-DFrkJTlF.cjs.map +1 -0
  120. package/dist/data.cjs +1 -1
  121. package/dist/data.js +1 -1
  122. package/dist/{display-DU9E_18w.cjs → display--E7rI0tk.cjs} +2 -2
  123. package/dist/{display-DU9E_18w.cjs.map → display--E7rI0tk.cjs.map} +1 -1
  124. package/dist/{display-CYC1AImx.js → display-BnkHKW1n.js} +12 -12
  125. package/dist/{display-CYC1AImx.js.map → display-BnkHKW1n.js.map} +1 -1
  126. package/dist/display.cjs +1 -1
  127. package/dist/display.js +1 -1
  128. package/dist/dropdowns-DGYg9zIh.cjs +2 -0
  129. package/dist/{dropdowns-vaj6vhl6.cjs.map → dropdowns-DGYg9zIh.cjs.map} +1 -1
  130. package/dist/{dropdowns-ByDu8Wbt.js → dropdowns-Dq-xAplH.js} +12 -11
  131. package/dist/{dropdowns-ByDu8Wbt.js.map → dropdowns-Dq-xAplH.js.map} +1 -1
  132. package/dist/dropdowns.cjs +1 -1
  133. package/dist/dropdowns.js +1 -1
  134. package/dist/{feedback-CUGuh4QZ.cjs → feedback-CA77ShtB.cjs} +2 -2
  135. package/dist/{feedback-CUGuh4QZ.cjs.map → feedback-CA77ShtB.cjs.map} +1 -1
  136. package/dist/feedback.cjs +1 -1
  137. package/dist/{form-Dri4AzY9.js → form-CAFcvmUS.js} +1 -1
  138. package/dist/{form-Dri4AzY9.js.map → form-CAFcvmUS.js.map} +1 -1
  139. package/dist/{form-DICGXS6_.cjs → form-DpfzLUOn.cjs} +2 -2
  140. package/dist/{form-DICGXS6_.cjs.map → form-DpfzLUOn.cjs.map} +1 -1
  141. package/dist/form.cjs +1 -1
  142. package/dist/form.js +1 -1
  143. package/dist/{frameworkTexts-C1yvIVm4.js → frameworkTexts-DH0Xp-Vx.js} +30 -61
  144. package/dist/frameworkTexts-DH0Xp-Vx.js.map +1 -0
  145. package/dist/frameworkTexts-iDXhcW6k.cjs +2 -0
  146. package/dist/frameworkTexts-iDXhcW6k.cjs.map +1 -0
  147. package/dist/i18n/frameworkTexts.d.ts +13 -0
  148. package/dist/i18n.cjs +1 -1
  149. package/dist/{icons-BxurYyW-.cjs → icons-D_NB67he.cjs} +2 -2
  150. package/dist/{icons-BxurYyW-.cjs.map → icons-D_NB67he.cjs.map} +1 -1
  151. package/dist/icons.cjs +1 -1
  152. package/dist/illustrations.cjs +1 -1
  153. package/dist/illustrations.js +1 -1
  154. package/dist/index.cjs +1 -1
  155. package/dist/index.js +13 -13
  156. package/dist/{inputs-GCUfD923.cjs → inputs-Clenc4Rm.cjs} +2 -2
  157. package/dist/{inputs-GCUfD923.cjs.map → inputs-Clenc4Rm.cjs.map} +1 -1
  158. package/dist/inputs.cjs +1 -1
  159. package/dist/inputs.js +1 -1
  160. package/dist/{javascript-CH9YvIk2.js → javascript-CHSg4NGc.js} +1 -1
  161. package/dist/{javascript-CH9YvIk2.js.map → javascript-CHSg4NGc.js.map} +1 -1
  162. package/dist/{javascript-BGrveJJw.cjs → javascript-CastOQF5.cjs} +1 -1
  163. package/dist/{javascript-BGrveJJw.cjs.map → javascript-CastOQF5.cjs.map} +1 -1
  164. package/dist/{json-CPWARxtL.js → json-Bejy9Rlg.js} +1 -1
  165. package/dist/{json-CPWARxtL.js.map → json-Bejy9Rlg.js.map} +1 -1
  166. package/dist/{json-D6oa0Lra.cjs → json-DCkJ-m-p.cjs} +1 -1
  167. package/dist/{json-D6oa0Lra.cjs.map → json-DCkJ-m-p.cjs.map} +1 -1
  168. package/dist/{layout-Gr99WWTA.cjs → layout-CNoZdeXw.cjs} +2 -2
  169. package/dist/{layout-Gr99WWTA.cjs.map → layout-CNoZdeXw.cjs.map} +1 -1
  170. package/dist/{layout-CS_dHOLM.js → layout-DsE4zfpg.js} +3 -3
  171. package/dist/{layout-CS_dHOLM.js.map → layout-DsE4zfpg.js.map} +1 -1
  172. package/dist/layout.cjs +1 -1
  173. package/dist/layout.js +2 -2
  174. package/dist/{licensing-DXCHcZd1.cjs → licensing-DGIdtfNg.cjs} +2 -2
  175. package/dist/{licensing-DXCHcZd1.cjs.map → licensing-DGIdtfNg.cjs.map} +1 -1
  176. package/dist/{locale-BGLDTJSi.cjs → locale-DRRl_s5-.cjs} +2 -2
  177. package/dist/{locale-BGLDTJSi.cjs.map → locale-DRRl_s5-.cjs.map} +1 -1
  178. package/dist/{media-CE59IEdY.cjs → media-DRTBXDnn.cjs} +2 -2
  179. package/dist/{media-CE59IEdY.cjs.map → media-DRTBXDnn.cjs.map} +1 -1
  180. package/dist/media.cjs +1 -1
  181. package/dist/{overlays-DCXP_KsX.js → overlays-BKk_ZXue.js} +2 -2
  182. package/dist/{overlays-DCXP_KsX.js.map → overlays-BKk_ZXue.js.map} +1 -1
  183. package/dist/{overlays--Pe-H5TW.cjs → overlays-Qbp4d596.cjs} +2 -2
  184. package/dist/{overlays--Pe-H5TW.cjs.map → overlays-Qbp4d596.cjs.map} +1 -1
  185. package/dist/overlays.cjs +1 -1
  186. package/dist/overlays.js +3 -3
  187. package/dist/{php-DJ1nTQpr.cjs → php-BdVXegqn.cjs} +1 -1
  188. package/dist/{php-DJ1nTQpr.cjs.map → php-BdVXegqn.cjs.map} +1 -1
  189. package/dist/{php-DeBdikHj.js → php-Cb_S1hXT.js} +1 -1
  190. package/dist/{php-DeBdikHj.js.map → php-Cb_S1hXT.js.map} +1 -1
  191. package/dist/primitives.cjs +1 -1
  192. package/dist/style-runtime.cjs +1 -1
  193. package/dist/style-runtime.js +1 -1
  194. package/dist/styles.css +1 -1
  195. package/dist/{theme-Bjs11y3s.cjs → theme-DgaM4CjM.cjs} +2 -2
  196. package/dist/{theme-Bjs11y3s.cjs.map → theme-DgaM4CjM.cjs.map} +1 -1
  197. package/dist/theme.cjs +1 -1
  198. package/dist/{typescript-B5GRzMtL.js → typescript-0VHxrxf2.js} +1 -1
  199. package/dist/{typescript-B5GRzMtL.js.map → typescript-0VHxrxf2.js.map} +1 -1
  200. package/dist/{typescript-qNh_eaB0.cjs → typescript-CcGBfzlS.cjs} +1 -1
  201. package/dist/{typescript-qNh_eaB0.cjs.map → typescript-CcGBfzlS.cjs.map} +1 -1
  202. package/dist/{typography-D4PUdtMV.cjs → typography-C4_O8len.cjs} +2 -2
  203. package/dist/{typography-D4PUdtMV.cjs.map → typography-C4_O8len.cjs.map} +1 -1
  204. package/dist/typography.cjs +1 -1
  205. package/dist/{useGhostText-BTPneo4u.cjs → useGhostText-Dlemg1vw.cjs} +2 -2
  206. package/dist/{useGhostText-BTPneo4u.cjs.map → useGhostText-Dlemg1vw.cjs.map} +1 -1
  207. package/dist/{useInteractionEffect-q_9csNj7.cjs → useInteractionEffect-CFwDX5UF.cjs} +2 -2
  208. package/dist/{useInteractionEffect-q_9csNj7.cjs.map → useInteractionEffect-CFwDX5UF.cjs.map} +1 -1
  209. package/dist/{useKeyboardNav-D_OwIEZp.cjs → useKeyboardNav-Bm-dxVq-.cjs} +2 -2
  210. package/dist/{useKeyboardNav-D_OwIEZp.cjs.map → useKeyboardNav-Bm-dxVq-.cjs.map} +1 -1
  211. package/dist/utils.cjs +1 -1
  212. package/dist/{xml-BTZ6XeQ9.js → xml-8GjNy8SM.js} +1 -1
  213. package/dist/{xml-BTZ6XeQ9.js.map → xml-8GjNy8SM.js.map} +1 -1
  214. package/dist/{xml-_Z3NZw2H.cjs → xml-Dbm3mobK.cjs} +1 -1
  215. package/dist/{xml-_Z3NZw2H.cjs.map → xml-Dbm3mobK.cjs.map} +1 -1
  216. package/package.json +1 -1
  217. package/dist/MConflictIllustration-CWWnskbi.cjs +0 -2
  218. package/dist/MConflictIllustration-CWWnskbi.cjs.map +0 -1
  219. package/dist/MConflictIllustration-Drsm8_8C.js.map +0 -1
  220. package/dist/calendar-BFfeWRa0.cjs +0 -2
  221. package/dist/data-Dh3C_VTi.js.map +0 -1
  222. package/dist/data-Dl6U8Uct.cjs +0 -2
  223. package/dist/data-Dl6U8Uct.cjs.map +0 -1
  224. package/dist/dropdowns-vaj6vhl6.cjs +0 -2
  225. package/dist/frameworkTexts-C1yvIVm4.js.map +0 -1
  226. package/dist/frameworkTexts-D3wbwWCu.cjs +0 -2
  227. package/dist/frameworkTexts-D3wbwWCu.cjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"frameworkTexts-D3wbwWCu.cjs","names":[],"sources":["../src/utils/calendarDates.ts","../src/i18n/frameworkTexts.ts"],"sourcesContent":["/**\n * Internal date helpers shared by the calendar family (MCalendarBoard, MTimelineBoard,\n * MMiniCalendar, MScheduler) and MDatePicker. Basic-safe: no Pro imports, not re-exported\n * from the package root. Every helper works in the browser's local time zone.\n */\n\nexport const MS_PER_MINUTE = 60_000\nexport const MS_PER_HOUR = 3_600_000\nexport const MS_PER_DAY = 24 * MS_PER_HOUR\n\nexport type CalendarWeekStart = 0 | 1\n\nexport function toDate(value: Date | string): Date {\n return value instanceof Date ? value : new Date(value)\n}\n\nexport function isValidDate(value: Date): boolean {\n return !Number.isNaN(value.getTime())\n}\n\nexport function parseHmToMinutes(value?: string): number | null {\n if (!value) {\n return null\n }\n const match = /^(\\d{1,2}):(\\d{2})$/.exec(value)\n if (!match) {\n return null\n }\n return Number(match[1]) * 60 + Number(match[2])\n}\n\nexport function startOfDay(date: Date): Date {\n const next = new Date(date)\n next.setHours(0, 0, 0, 0)\n return next\n}\n\nexport function stripTime(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate())\n}\n\nexport function normalizeDate(value?: Date | string | null): Date | null {\n if (!value) {\n return null\n }\n const parsed = toDate(value)\n if (!isValidDate(parsed)) {\n return null\n }\n return stripTime(parsed)\n}\n\n/** Adds calendar days (DST-safe, keeps the wall-clock time). */\nexport function addDays(date: Date, amount: number): Date {\n const next = new Date(date)\n next.setDate(next.getDate() + amount)\n return next\n}\n\nexport function addMinutes(date: Date, amount: number): Date {\n return new Date(date.getTime() + amount * MS_PER_MINUTE)\n}\n\nexport function startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1)\n}\n\n/** First day of the month `amount` months away from `date`. */\nexport function addMonthsToMonth(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + amount, 1)\n}\n\n/** Same day of month `amount` months away, clamped to the target month length. */\nexport function addMonthsClamped(date: Date, amount: number): Date {\n const target = new Date(date.getFullYear(), date.getMonth() + amount, 1)\n const lastDay = new Date(target.getFullYear(), target.getMonth() + 1, 0).getDate()\n target.setDate(Math.min(date.getDate(), lastDay))\n return target\n}\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate()\n}\n\nexport function isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth()\n}\n\nexport function clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value))\n}\n\nexport function startOfWeek(date: Date, weekStartsOn: CalendarWeekStart = 1): Date {\n const safeDate = stripTime(date)\n const delta = (safeDate.getDay() - weekStartsOn + 7) % 7\n return stripTime(addDays(safeDate, -delta))\n}\n\nexport function getDateKey(date: Date): string {\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n return `${year}-${month}-${day}`\n}\n\nexport function isWeekend(date: Date): boolean {\n const day = date.getDay()\n return day === 0 || day === 6\n}\n\n/** Minutes elapsed since local midnight. */\nexport function minutesOfDay(date: Date): number {\n return date.getHours() * 60 + date.getMinutes() + date.getSeconds() / 60\n}\n\n/** Whole calendar days between two dates (b - a), ignoring the time of day. */\nexport function diffCalendarDays(a: Date, b: Date): number {\n return Math.round((stripTime(b).getTime() - stripTime(a).getTime()) / MS_PER_DAY)\n}\n\n/** The 6 x 7 month grid starting on `weekStartsOn`, outside days included. */\nexport function getMonthMatrix(month: Date, weekStartsOn: CalendarWeekStart = 1): Date[] {\n const gridStart = startOfWeek(startOfMonth(month), weekStartsOn)\n return Array.from({length: 42}, (_, index) => stripTime(addDays(gridStart, index)))\n}\n\n/** Localised short weekday names, ordered from `weekStartsOn`. */\nexport function getWeekdayLabels(\n locale: string,\n weekStartsOn: CalendarWeekStart = 1,\n format: 'narrow' | 'short' | 'long' = 'short'\n): string[] {\n const formatter = new Intl.DateTimeFormat(locale, {weekday: format})\n // 2023-01-01 was a Sunday.\n return Array.from({length: 7}, (_, index) => formatter.format(new Date(2023, 0, 1 + ((index + weekStartsOn) % 7))))\n}\n\nexport function formatHourLabel(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale, {hour: '2-digit', minute: '2-digit', hour12: false}).format(date)\n}\n\nexport function formatDayLabel(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale, {weekday: 'short', day: '2-digit', month: 'short'}).format(date)\n}\n\nexport function formatShortWeekday(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale, {weekday: 'short'}).format(date)\n}\n\nexport function formatRangeLabel(start: Date, end: Date, locale: string): string {\n return `${formatHourLabel(start, locale)} – ${formatHourLabel(end, locale)}`\n}\n\nexport function formatFullDate(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale, {weekday: 'long', day: 'numeric', month: 'long', year: 'numeric'}).format(\n date\n )\n}\n\nexport function formatMonthTitle(date: Date, locale: string, withYear = true): string {\n return new Intl.DateTimeFormat(locale, withYear ? {month: 'long', year: 'numeric'} : {month: 'long'}).format(date)\n}\n\ntype RangeFormatter = Intl.DateTimeFormat & {formatRange?: (start: Date, end: Date) => string}\n\n/** \"21 – 27 September 2026\", \"28 September – 4 October 2026\", with a plain fallback. */\nexport function formatDateRange(start: Date, endInclusive: Date, locale: string): string {\n const formatter = new Intl.DateTimeFormat(locale, {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }) as RangeFormatter\n if (isSameDay(start, endInclusive)) {\n return formatter.format(start)\n }\n if (typeof formatter.formatRange === 'function') {\n return formatter.formatRange(start, endInclusive)\n }\n return `${formatter.format(start)} – ${formatter.format(endInclusive)}`\n}\n\nexport type CalendarPeriodView = 'week' | 'day' | 'timeline' | 'month' | 'agenda'\n\n/**\n * Toolbar title for a period. `end` is exclusive. Month uses the month that holds the\n * middle of the range, so a 6-week grid still reads \"September 2026\".\n */\nexport function formatPeriodTitle(view: CalendarPeriodView, start: Date, end: Date, locale: string): string {\n if (view === 'month') {\n const middle = new Date((start.getTime() + end.getTime()) / 2)\n return formatMonthTitle(middle, locale)\n }\n if (view === 'day' || view === 'timeline') {\n return formatFullDate(start, locale)\n }\n const lastDay = addDays(end, -1)\n return formatDateRange(start, lastDay, locale)\n}\n","import {useCallback, useMemo} from 'react'\nimport {useOptionalMI18n} from './MI18nProvider'\n\nfunction useTranslate() {\n const i18n = useOptionalMI18n()\n\n return useCallback((key: string, fallback: string) => i18n?.t(key, fallback) ?? fallback, [i18n])\n}\n\nexport interface MDatePickerTexts {\n today: string\n clear: string\n previousMonth: string\n nextMonth: string\n}\n\nexport interface MDateRangePickerTexts extends MDatePickerTexts {\n rangeSubtitle: string\n defaultRangePlaceholder: string\n presets: {\n today: string\n days2: string\n days3: string\n days7: string\n days14: string\n days31: string\n thisMonth: string\n previousMonth: string\n months2: string\n months3: string\n months6: string\n year1: string\n }\n}\n\nexport interface MCalendarBoardTexts {\n monthView: string\n weekView: string\n previousWeek: string\n nextWeek: string\n emptyStateText: string\n timelineTitle: string\n timelineEmptyState: string\n allDay: string\n allDayTab: string\n timelineTab: string\n itemsCount: (count: number) => string\n}\n\nexport interface MFileManagerTexts {\n home: string\n searchPlaceholder: string\n emptyText: string\n folders: string\n noFoldersAvailable: string\n currentFolder: string\n filteredBy: (query: string) => string\n listView: string\n gridView: string\n folder: string\n file: string\n preview: string\n path: string\n selectItemToInspect: string\n itemsCount: (count: number) => string\n rename: string\n moveTo: string\n delete: string\n download: string\n newFolder: string\n}\n\nexport function useMDatePickerTexts(): MDatePickerTexts {\n const t = useTranslate()\n\n return useMemo(\n () => ({\n today: t('mineralui.datePicker.today', 'Today'),\n clear: t('mineralui.datePicker.clear', 'Clear'),\n previousMonth: t('mineralui.datePicker.previousMonth', 'Previous month'),\n nextMonth: t('mineralui.datePicker.nextMonth', 'Next month'),\n }),\n [t]\n )\n}\n\nexport function useMDateRangePickerTexts(): MDateRangePickerTexts {\n const t = useTranslate()\n\n return useMemo(\n () => ({\n today: t('mineralui.dateRangePicker.today', 'Today'),\n clear: t('mineralui.dateRangePicker.clear', 'Clear'),\n previousMonth: t('mineralui.dateRangePicker.previousMonth', 'Previous month'),\n nextMonth: t('mineralui.dateRangePicker.nextMonth', 'Next month'),\n rangeSubtitle: t('mineralui.dateRangePicker.rangeSubtitle', 'Select start and end dates in one panel.'),\n defaultRangePlaceholder: t('mineralui.dateRangePicker.defaultRangePlaceholder', 'Select date range...'),\n presets: {\n today: t('mineralui.dateRangePicker.presets.today', 'Today'),\n days2: t('mineralui.dateRangePicker.presets.days2', '2 days'),\n days3: t('mineralui.dateRangePicker.presets.days3', '3 days'),\n days7: t('mineralui.dateRangePicker.presets.days7', '7 days'),\n days14: t('mineralui.dateRangePicker.presets.days14', '14 days'),\n days31: t('mineralui.dateRangePicker.presets.days31', '31 days'),\n thisMonth: t('mineralui.dateRangePicker.presets.thisMonth', 'This month'),\n previousMonth: t('mineralui.dateRangePicker.presets.previousMonth', 'Previous month'),\n months2: t('mineralui.dateRangePicker.presets.months2', '2 months'),\n months3: t('mineralui.dateRangePicker.presets.months3', '3 months'),\n months6: t('mineralui.dateRangePicker.presets.months6', '6 months'),\n year1: t('mineralui.dateRangePicker.presets.year1', '1 year'),\n },\n }),\n [t]\n )\n}\n\nexport function useMCalendarBoardTexts(): MCalendarBoardTexts {\n const t = useTranslate()\n\n return useMemo(\n () => ({\n monthView: t('mineralui.calendarBoard.monthView', 'Month'),\n weekView: t('mineralui.calendarBoard.weekView', 'Week'),\n previousWeek: t('mineralui.calendarBoard.previousWeek', 'Previous week'),\n nextWeek: t('mineralui.calendarBoard.nextWeek', 'Next week'),\n emptyStateText: t('mineralui.calendarBoard.emptyStateText', 'No events for the selected day.'),\n timelineTitle: t('mineralui.calendarBoard.timelineTitle', 'Daily timeline'),\n timelineEmptyState: t('mineralui.calendarBoard.timelineEmptyState', 'No events in this hour.'),\n allDay: t('mineralui.calendarBoard.allDay', 'All day'),\n allDayTab: t('mineralui.calendarBoard.allDayTab', 'All day'),\n timelineTab: t('mineralui.calendarBoard.timelineTab', 'Hourly timeline'),\n itemsCount: (count) =>\n t('mineralui.calendarBoard.itemsCount', '{count} items').replace('{count}', String(count)),\n }),\n [t]\n )\n}\n\nexport function useMFileManagerTexts(): MFileManagerTexts {\n const t = useTranslate()\n\n return useMemo(\n () => ({\n home: t('mineralui.fileManager.home', 'Home'),\n searchPlaceholder: t('mineralui.fileManager.searchPlaceholder', 'Search in folder...'),\n emptyText: t('mineralui.fileManager.emptyText', 'This folder is empty.'),\n folders: t('mineralui.fileManager.folders', 'Folders'),\n noFoldersAvailable: t('mineralui.fileManager.noFoldersAvailable', 'No folders available.'),\n currentFolder: t('mineralui.fileManager.currentFolder', 'Current folder'),\n filteredBy: (query) =>\n t('mineralui.fileManager.filteredBy', 'Filtered by \"{query}\"').replace('{query}', query),\n listView: t('mineralui.fileManager.listView', 'List'),\n gridView: t('mineralui.fileManager.gridView', 'Grid'),\n folder: t('mineralui.fileManager.folder', 'Folder'),\n file: t('mineralui.fileManager.file', 'File'),\n preview: t('mineralui.fileManager.preview', 'Preview'),\n path: t('mineralui.fileManager.path', 'Path'),\n selectItemToInspect: t(\n 'mineralui.fileManager.selectItemToInspect',\n 'Select a file or folder to inspect its details.'\n ),\n itemsCount: (count) =>\n t('mineralui.fileManager.itemsCount', '{count} items').replace('{count}', String(count)),\n rename: t('mineralui.fileManager.rename', 'Rename'),\n moveTo: t('mineralui.fileManager.moveTo', 'Move to...'),\n delete: t('mineralui.fileManager.delete', 'Delete'),\n download: t('mineralui.fileManager.download', 'Download'),\n newFolder: t('mineralui.fileManager.newFolder', 'New folder'),\n }),\n [t]\n )\n}\n\n// Cookie-consent texts moved to @banzamel/honey in mineralui-pro 2.0.0.\n// Consumers that need to retheme cookie copy now pass `texts` directly to\n// `<CookieConsentProvider>` from `@banzamel/honey`.\n\n/** Count-bearing texts accept a `{count}` template or a function, so apps can pluralise. */\nexport type MSchedulerCountText = string | ((count: number) => string)\n\nexport interface MSchedulerTexts {\n today: string\n previous: string\n next: string\n chooseDate: string\n add: string\n viewLabel: string\n viewWeek: string\n viewDay: string\n viewMonth: string\n viewAgenda: string\n showWeekends: string\n filters: string\n filtersActive: MSchedulerCountText\n clearFilters: string\n allOption: string\n searchPlaceholder: string\n noOptions: string\n allDay: string\n more: MSchedulerCountText\n /** `{count}` and `{date}` placeholders. */\n moreAria: string\n eventCount: MSchedulerCountText\n emptyState: string\n loading: string\n now: string\n recurring: string\n cancelled: string\n conflict: string\n eventDetails: string\n eventActions: string\n close: string\n participants: MSchedulerCountText\n /** `{count}` and `{capacity}` placeholders. */\n participantsCapacity: string\n location: string\n /** `{title}` placeholder, announced on every period change. */\n periodAnnouncement: string\n /** `{date}` placeholder — label of a day-number button. */\n openDay: string\n viewTimeline: string\n /** `{view}` and `{set}` placeholders — view-menu entry of a resource set. */\n viewWithSet: string\n move: string\n resize: string\n moveInstructions: string\n /** Announced when the keyboard move mode starts in the month view. */\n moveInstructionsMonth: string\n /** Appended to the native tooltip of a draggable event. */\n dragHint: string\n /** `{title}` and `{when}` placeholders. */\n moved: string\n /** `{title}` and `{time}` placeholders. */\n resized: string\n moveRefused: string\n moveCancelled: string\n unavailable: string\n blocked: string\n /** Caption above the leader row in the event details. */\n leader: string\n /** Visible label of the \"open this day\" action in the month \"+N more\" popover. */\n openDayView: string\n /** Toolbar button shown in the day view after a drill-down from the month view. */\n backToMonth: string\n}\n\nfunction polishPlural(count: number, one: string, few: string, many: string): string {\n const mod10 = count % 10\n const mod100 = count % 100\n if (count === 1) {\n return one\n }\n if (mod10 >= 2 && mod10 <= 4 && (mod100 < 12 || mod100 > 14)) {\n return few\n }\n return many\n}\n\nexport const mineralSchedulerTextsEn: MSchedulerTexts = {\n today: 'Today',\n previous: 'Previous period',\n next: 'Next period',\n chooseDate: 'Choose date',\n add: 'Add',\n viewLabel: 'View',\n viewWeek: 'Week',\n viewDay: 'Day',\n viewMonth: 'Month',\n viewAgenda: 'Agenda',\n showWeekends: 'Show weekends',\n filters: 'Filters',\n filtersActive: 'Filters ({count})',\n clearFilters: 'Clear filters',\n allOption: 'All',\n searchPlaceholder: 'Search…',\n noOptions: 'No results',\n allDay: 'All day',\n more: '+{count} more',\n moreAria: 'Show {count} more events on {date}',\n eventCount: (count) => (count === 1 ? '1 event' : `${count} events`),\n emptyState: 'No events to display',\n loading: 'Loading events',\n now: 'Now',\n recurring: 'Recurring',\n cancelled: 'Cancelled',\n conflict: 'Conflict',\n eventDetails: 'Event details',\n eventActions: 'Event actions',\n close: 'Close',\n participants: 'Participants ({count})',\n participantsCapacity: 'Participants ({count} / {capacity})',\n location: 'Location',\n periodAnnouncement: '{title}',\n openDay: 'Open {date}',\n viewTimeline: 'Timeline',\n viewWithSet: '{view} – {set}',\n move: 'Move',\n resize: 'Resize',\n moveInstructions: 'Arrows move, Shift+arrows move by an hour, Enter drops, Escape cancels.',\n moveInstructionsMonth: 'Left and right arrows move by a day, up and down by a week, Enter drops, Escape cancels.',\n dragHint: 'Drag to move',\n moved: '{title} moved to {when}',\n resized: '{title} now ends at {time}',\n moveRefused: 'Cannot move here',\n moveCancelled: 'Move cancelled',\n unavailable: 'Unavailable',\n blocked: 'Blocked',\n leader: 'Leader',\n openDayView: 'Open day',\n backToMonth: 'Back to month',\n}\n\nexport const mineralSchedulerTextsPl: MSchedulerTexts = {\n today: 'Dzisiaj',\n previous: 'Poprzedni okres',\n next: 'Następny okres',\n chooseDate: 'Wybierz datę',\n add: 'Dodaj',\n viewLabel: 'Widok',\n viewWeek: 'Tydzień',\n viewDay: 'Dzień',\n viewMonth: 'Miesiąc',\n viewAgenda: 'Lista',\n showWeekends: 'Pokaż weekendy',\n filters: 'Filtry',\n filtersActive: 'Filtry ({count})',\n clearFilters: 'Wyczyść filtry',\n allOption: 'Wszystkie',\n searchPlaceholder: 'Szukaj…',\n noOptions: 'Brak wyników',\n allDay: 'Cały dzień',\n more: '+{count} więcej',\n moreAria: 'Pokaż {count} więcej wydarzeń w dniu {date}',\n eventCount: (count) => `${count} ${polishPlural(count, 'wydarzenie', 'wydarzenia', 'wydarzeń')}`,\n emptyState: 'Brak wydarzeń do wyświetlenia',\n loading: 'Wczytywanie wydarzeń',\n now: 'Teraz',\n recurring: 'Cykliczne',\n cancelled: 'Odwołane',\n conflict: 'Konflikt',\n eventDetails: 'Szczegóły wydarzenia',\n eventActions: 'Akcje wydarzenia',\n close: 'Zamknij',\n participants: 'Uczestnicy ({count})',\n participantsCapacity: 'Uczestnicy ({count} / {capacity})',\n location: 'Miejsce',\n periodAnnouncement: '{title}',\n openDay: 'Otwórz {date}',\n viewTimeline: 'Oś czasu',\n viewWithSet: '{view} – {set}',\n move: 'Przenieś',\n resize: 'Zmień długość',\n moveInstructions: 'Strzałki przesuwają, Shift+strzałki o godzinę, Enter upuszcza, Escape anuluje.',\n moveInstructionsMonth:\n 'Strzałki w lewo i w prawo przesuwają o dzień, w górę i w dół o tydzień, Enter upuszcza, Escape anuluje.',\n dragHint: 'Przeciągnij, aby przenieść',\n moved: '{title} przeniesiono na {when}',\n resized: '{title} kończy się o {time}',\n moveRefused: 'Nie można tu przenieść',\n moveCancelled: 'Anulowano przenoszenie',\n unavailable: 'Niedostępne',\n blocked: 'Zablokowane',\n leader: 'Prowadzący',\n openDayView: 'Otwórz dzień',\n backToMonth: 'Wróć do miesiąca',\n}\n\n/** Fills `{name}` placeholders. */\nexport function formatMText(template: string, values: Record<string, string | number>): string {\n return template.replace(/\\{(\\w+)\\}/g, (match, key: string) => (key in values ? String(values[key]) : match))\n}\n\n/** Resolves a count text (template or function) for `count`. */\nexport function formatMCountText(text: MSchedulerCountText, count: number): string {\n return typeof text === 'function' ? text(count) : formatMText(text, {count})\n}\n\nfunction isPolishLocale(locale?: string): boolean {\n return Boolean(locale && locale.toLowerCase().startsWith('pl'))\n}\n\n/**\n * Scheduler texts. Resolution per key: `overrides` → MI18nProvider key\n * `mineralui.scheduler.<key>` → built-in default for `locale` (Polish or English).\n */\nexport function useMSchedulerTexts(locale?: string, overrides?: Partial<MSchedulerTexts>): MSchedulerTexts {\n const t = useTranslate()\n\n return useMemo(() => {\n const defaults = isPolishLocale(locale) ? mineralSchedulerTextsPl : mineralSchedulerTextsEn\n const resolved = {} as Record<keyof MSchedulerTexts, MSchedulerTexts[keyof MSchedulerTexts]>\n ;(Object.keys(defaults) as Array<keyof MSchedulerTexts>).forEach((key) => {\n const override = overrides?.[key]\n if (override !== undefined) {\n resolved[key] = override\n return\n }\n const fallback = defaults[key]\n const i18nKey = `mineralui.scheduler.${key}`\n const translated = t(i18nKey, typeof fallback === 'string' ? fallback : i18nKey)\n resolved[key] = typeof fallback === 'function' && translated === i18nKey ? fallback : translated\n })\n return resolved as MSchedulerTexts\n }, [t, locale, overrides])\n}\n\nexport interface MMiniCalendarTexts {\n previousMonth: string\n nextMonth: string\n}\n\nexport function useMMiniCalendarTexts(locale?: string, overrides?: Partial<MMiniCalendarTexts>): MMiniCalendarTexts {\n const t = useTranslate()\n\n return useMemo(() => {\n const polish = isPolishLocale(locale)\n return {\n previousMonth:\n overrides?.previousMonth ??\n t('mineralui.miniCalendar.previousMonth', polish ? 'Poprzedni miesiąc' : 'Previous month'),\n nextMonth:\n overrides?.nextMonth ??\n t('mineralui.miniCalendar.nextMonth', polish ? 'Następny miesiąc' : 'Next month'),\n }\n }, [t, locale, overrides])\n}\n"],"mappings":"sGAYA,SAAgB,EAAO,EAA4B,CAC/C,OAAO,aAAiB,KAAO,EAAQ,IAAI,KAAK,EAAM,CAG1D,SAAgB,EAAY,EAAsB,CAC9C,MAAO,CAAC,OAAO,MAAM,EAAM,SAAS,CAAC,CAoBzC,SAAgB,EAAU,EAAkB,CACxC,OAAO,IAAI,KAAK,EAAK,aAAa,CAAE,EAAK,UAAU,CAAE,EAAK,SAAS,CAAC,CAGxE,SAAgB,EAAc,EAA2C,CACrE,GAAI,CAAC,EACD,OAAO,KAEX,IAAM,EAAS,EAAO,EAAM,CAI5B,OAHK,EAAY,EAAO,CAGjB,EAAU,EAAO,CAFb,KAMf,SAAgB,EAAQ,EAAY,EAAsB,CACtD,IAAM,EAAO,IAAI,KAAK,EAAK,CAE3B,OADA,EAAK,QAAQ,EAAK,SAAS,CAAG,EAAO,CAC9B,EAOX,SAAgB,EAAa,EAAkB,CAC3C,OAAO,IAAI,KAAK,EAAK,aAAa,CAAE,EAAK,UAAU,CAAE,EAAE,CAS3D,SAAgB,EAAiB,EAAY,EAAsB,CAC/D,IAAM,EAAS,IAAI,KAAK,EAAK,aAAa,CAAE,EAAK,UAAU,CAAG,EAAQ,EAAE,CAClE,EAAU,IAAI,KAAK,EAAO,aAAa,CAAE,EAAO,UAAU,CAAG,EAAG,EAAE,CAAC,SAAS,CAElF,OADA,EAAO,QAAQ,KAAK,IAAI,EAAK,SAAS,CAAE,EAAQ,CAAC,CAC1C,EAGX,SAAgB,EAAU,EAAS,EAAkB,CACjD,OAAO,EAAE,aAAa,GAAK,EAAE,aAAa,EAAI,EAAE,UAAU,GAAK,EAAE,UAAU,EAAI,EAAE,SAAS,GAAK,EAAE,SAAS,CAG9G,SAAgB,EAAY,EAAS,EAAkB,CACnD,OAAO,EAAE,aAAa,GAAK,EAAE,aAAa,EAAI,EAAE,UAAU,GAAK,EAAE,UAAU,CAO/E,SAAgB,EAAY,EAAY,EAAkC,EAAS,CAC/E,IAAM,EAAW,EAAU,EAAK,CAEhC,OAAO,EAAU,EAAQ,EAAU,GADpB,EAAS,QAAQ,CAAG,EAAe,GAAK,GACb,CAAC,CAG/C,SAAgB,EAAW,EAAoB,CAI3C,MAAO,GAHM,EAAK,aAAa,CAGhB,GAFD,OAAO,EAAK,UAAU,CAAG,EAAE,CAAC,SAAS,EAAG,IAAI,CAElC,GADZ,OAAO,EAAK,SAAS,CAAC,CAAC,SAAS,EAAG,IAAI,GAoBvD,SAAgB,EAAe,EAAa,EAAkC,EAAW,CACrF,IAAM,EAAY,EAAY,EAAa,EAAM,CAAE,EAAa,CAChE,OAAO,MAAM,KAAK,CAAC,OAAQ,GAAG,EAAG,EAAG,IAAU,EAAU,EAAQ,EAAW,EAAM,CAAC,CAAC,CAIvF,SAAgB,EACZ,EACA,EAAkC,EAClC,EAAsC,QAC9B,CACR,IAAM,EAAY,IAAI,KAAK,eAAe,EAAQ,CAAC,QAAS,EAAO,CAAC,CAEpE,OAAO,MAAM,KAAK,CAAC,OAAQ,EAAE,EAAG,EAAG,IAAU,EAAU,OAAO,IAAI,KAAK,KAAM,EAAG,GAAM,EAAQ,GAAgB,EAAG,CAAC,CAAC,CCnIvH,SAAS,GAAe,CACpB,IAAM,EAAO,EAAA,GAAkB,CAE/B,OAAA,EAAA,EAAA,cAAoB,EAAa,IAAqB,GAAM,EAAE,EAAK,EAAS,EAAI,EAAU,CAAC,EAAK,CAAC,CAkErG,SAAgB,GAAwC,CACpD,IAAM,EAAI,GAAc,CAExB,OAAA,EAAA,EAAA,cACW,CACH,MAAO,EAAE,6BAA8B,QAAQ,CAC/C,MAAO,EAAE,6BAA8B,QAAQ,CAC/C,cAAe,EAAE,qCAAsC,iBAAiB,CACxE,UAAW,EAAE,iCAAkC,aAAa,CAC/D,EACD,CAAC,EAAE,CACN,CAGL,SAAgB,GAAkD,CAC9D,IAAM,EAAI,GAAc,CAExB,OAAA,EAAA,EAAA,cACW,CACH,MAAO,EAAE,kCAAmC,QAAQ,CACpD,MAAO,EAAE,kCAAmC,QAAQ,CACpD,cAAe,EAAE,0CAA2C,iBAAiB,CAC7E,UAAW,EAAE,sCAAuC,aAAa,CACjE,cAAe,EAAE,0CAA2C,2CAA2C,CACvG,wBAAyB,EAAE,oDAAqD,uBAAuB,CACvG,QAAS,CACL,MAAO,EAAE,0CAA2C,QAAQ,CAC5D,MAAO,EAAE,0CAA2C,SAAS,CAC7D,MAAO,EAAE,0CAA2C,SAAS,CAC7D,MAAO,EAAE,0CAA2C,SAAS,CAC7D,OAAQ,EAAE,2CAA4C,UAAU,CAChE,OAAQ,EAAE,2CAA4C,UAAU,CAChE,UAAW,EAAE,8CAA+C,aAAa,CACzE,cAAe,EAAE,kDAAmD,iBAAiB,CACrF,QAAS,EAAE,4CAA6C,WAAW,CACnE,QAAS,EAAE,4CAA6C,WAAW,CACnE,QAAS,EAAE,4CAA6C,WAAW,CACnE,MAAO,EAAE,0CAA2C,SAAS,CAChE,CACJ,EACD,CAAC,EAAE,CACN,CAwQL,SAAS,EAAe,EAA0B,CAC9C,MAAO,GAAQ,GAAU,EAAO,aAAa,CAAC,WAAW,KAAK,EAiClE,SAAgB,EAAsB,EAAiB,EAA6D,CAChH,IAAM,EAAI,GAAc,CAExB,OAAA,EAAA,EAAA,aAAqB,CACjB,IAAM,EAAS,EAAe,EAAO,CACrC,MAAO,CACH,cACI,GAAW,eACX,EAAE,uCAAwC,EAAS,oBAAsB,iBAAiB,CAC9F,UACI,GAAW,WACX,EAAE,mCAAoC,EAAS,mBAAqB,aAAa,CACxF,EACF,CAAC,EAAG,EAAQ,EAAU,CAAC"}