@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.
- package/README.md +1 -1
- package/dist/{MAvatar-xI5aZ-bP.cjs → MAvatar-Capz5Gbc.cjs} +2 -2
- package/dist/{MAvatar-xI5aZ-bP.cjs.map → MAvatar-Capz5Gbc.cjs.map} +1 -1
- package/dist/{MButton-CMbmWmMI.cjs → MButton-sTKnano6.cjs} +2 -2
- package/dist/{MButton-CMbmWmMI.cjs.map → MButton-sTKnano6.cjs.map} +1 -1
- package/dist/{MButtonGroup-agnKWUPy.cjs → MButtonGroup-iPv14c0V.cjs} +2 -2
- package/dist/{MButtonGroup-agnKWUPy.cjs.map → MButtonGroup-iPv14c0V.cjs.map} +1 -1
- package/dist/{MCard-CADu7UUA.cjs → MCard-DK-_FkpE.cjs} +2 -2
- package/dist/{MCard-CADu7UUA.cjs.map → MCard-DK-_FkpE.cjs.map} +1 -1
- package/dist/{MCheckbox-stBujis6.cjs → MCheckbox-CIX7wp41.cjs} +2 -2
- package/dist/{MCheckbox-stBujis6.cjs.map → MCheckbox-CIX7wp41.cjs.map} +1 -1
- package/dist/{MConflictIllustration-Drsm8_8C.js → MConflictIllustration-3K0lCAsD.js} +3 -3
- package/dist/MConflictIllustration-3K0lCAsD.js.map +1 -0
- package/dist/MConflictIllustration-BuK6cSsc.cjs +2 -0
- package/dist/MConflictIllustration-BuK6cSsc.cjs.map +1 -0
- package/dist/{MDetailList-CQ2sJ7Jl.cjs → MDetailList-Ce7KzUKC.cjs} +2 -2
- package/dist/{MDetailList-CQ2sJ7Jl.cjs.map → MDetailList-Ce7KzUKC.cjs.map} +1 -1
- package/dist/{MDropdownMenu-DAzieAOs.cjs → MDropdownMenu-B_QWQhxy.cjs} +2 -2
- package/dist/{MDropdownMenu-DAzieAOs.cjs.map → MDropdownMenu-B_QWQhxy.cjs.map} +1 -1
- package/dist/{MDropdownMenu-B7RR8d8x.js → MDropdownMenu-C4CuKMRZ.js} +1 -1
- package/dist/{MDropdownMenu-B7RR8d8x.js.map → MDropdownMenu-C4CuKMRZ.js.map} +1 -1
- package/dist/{MGrid-LHi7TY5J.cjs → MGrid-fTx6wFq_.cjs} +2 -2
- package/dist/{MGrid-LHi7TY5J.cjs.map → MGrid-fTx6wFq_.cjs.map} +1 -1
- package/dist/{MHeading-7yt1C6oS.cjs → MHeading-KDSpnCof.cjs} +2 -2
- package/dist/{MHeading-7yt1C6oS.cjs.map → MHeading-KDSpnCof.cjs.map} +1 -1
- package/dist/{MI18nProvider-Cx4ZaFtv.cjs → MI18nProvider-DXRbB0VY.cjs} +2 -2
- package/dist/{MI18nProvider-Cx4ZaFtv.cjs.map → MI18nProvider-DXRbB0VY.cjs.map} +1 -1
- package/dist/{MInput-BSeWCsPi.cjs → MInput-CGl2Q-rM.cjs} +2 -2
- package/dist/{MInput-BSeWCsPi.cjs.map → MInput-CGl2Q-rM.cjs.map} +1 -1
- package/dist/{MInputCVC-CtHPCx_r.js → MInputCVC-Blv5PeyS.js} +2 -2
- package/dist/{MInputCVC-CtHPCx_r.js.map → MInputCVC-Blv5PeyS.js.map} +1 -1
- package/dist/{MInputCVC-rNs8w4gH.cjs → MInputCVC-lAFKTV6y.cjs} +2 -2
- package/dist/{MInputCVC-rNs8w4gH.cjs.map → MInputCVC-lAFKTV6y.cjs.map} +1 -1
- package/dist/{MInputSearch-BfPPgEGZ.cjs → MInputSearch-BZDnbFB4.cjs} +2 -2
- package/dist/{MInputSearch-BfPPgEGZ.cjs.map → MInputSearch-BZDnbFB4.cjs.map} +1 -1
- package/dist/{MKbd-C6XHWlmE.cjs → MKbd-DqMnZ7Iv.cjs} +2 -2
- package/dist/{MKbd-C6XHWlmE.cjs.map → MKbd-DqMnZ7Iv.cjs.map} +1 -1
- package/dist/{MLink-CbaDlP5I.cjs → MLink-U24G6KJj.cjs} +2 -2
- package/dist/{MLink-CbaDlP5I.cjs.map → MLink-U24G6KJj.cjs.map} +1 -1
- package/dist/{MLoader-DELAIhz5.cjs → MLoader-CvFIvytw.cjs} +2 -2
- package/dist/{MLoader-DELAIhz5.cjs.map → MLoader-CvFIvytw.cjs.map} +1 -1
- package/dist/{MPagination-CgmNEAZX.js → MPagination-BkvOEZpp.js} +1 -1
- package/dist/{MPagination-CgmNEAZX.js.map → MPagination-BkvOEZpp.js.map} +1 -1
- package/dist/{MPagination-C2lpvPqC.cjs → MPagination-DgQta29Q.cjs} +2 -2
- package/dist/{MPagination-C2lpvPqC.cjs.map → MPagination-DgQta29Q.cjs.map} +1 -1
- package/dist/{MPopover-DI_7niwe.cjs → MPopover-C-e1CoV0.cjs} +2 -2
- package/dist/{MPopover-DI_7niwe.cjs.map → MPopover-C-e1CoV0.cjs.map} +1 -1
- package/dist/{MPortal-C9Ucq8Um.cjs → MPortal-DUSIuINN.cjs} +2 -2
- package/dist/{MPortal-C9Ucq8Um.cjs.map → MPortal-DUSIuINN.cjs.map} +1 -1
- package/dist/{MSimpleGrid-K-8Qg9em.cjs → MSimpleGrid-BzlIitcJ.cjs} +2 -2
- package/dist/{MSimpleGrid-K-8Qg9em.cjs.map → MSimpleGrid-BzlIitcJ.cjs.map} +1 -1
- package/dist/{MSkeleton-DgU8aktI.cjs → MSkeleton-BoFpowFU.cjs} +2 -2
- package/dist/{MSkeleton-DgU8aktI.cjs.map → MSkeleton-BoFpowFU.cjs.map} +1 -1
- package/dist/{MSlider-0ApojrDC.cjs → MSlider-BTDBqF8t.cjs} +2 -2
- package/dist/{MSlider-0ApojrDC.cjs.map → MSlider-BTDBqF8t.cjs.map} +1 -1
- package/dist/{MStack-BOOciEts.cjs → MStack-B3Ldqsc-.cjs} +2 -2
- package/dist/{MStack-BOOciEts.cjs.map → MStack-B3Ldqsc-.cjs.map} +1 -1
- package/dist/{MSubText-WixraICV.cjs → MSubText-47PsgE8T.cjs} +2 -2
- package/dist/{MSubText-WixraICV.cjs.map → MSubText-47PsgE8T.cjs.map} +1 -1
- package/dist/{MSurface-CF8BFFn4.cjs → MSurface-QYEygc_0.cjs} +2 -2
- package/dist/{MSurface-CF8BFFn4.cjs.map → MSurface-QYEygc_0.cjs.map} +1 -1
- package/dist/{MTag-CgXh2PQC.cjs → MTag-BjV-dXkk.cjs} +2 -2
- package/dist/{MTag-CgXh2PQC.cjs.map → MTag-BjV-dXkk.cjs.map} +1 -1
- package/dist/{MText-CDDEGjBx.cjs → MText-Dni707tS.cjs} +2 -2
- package/dist/{MText-CDDEGjBx.cjs.map → MText-Dni707tS.cjs.map} +1 -1
- package/dist/{MTooltip-BWqyv6QU.cjs → MTooltip-ChvuN4Ow.cjs} +2 -2
- package/dist/{MTooltip-BWqyv6QU.cjs.map → MTooltip-ChvuN4Ow.cjs.map} +1 -1
- package/dist/{MTooltip-BTJkzOah.js → MTooltip-H3we0a7w.js} +1 -1
- package/dist/{MTooltip-BTJkzOah.js.map → MTooltip-H3we0a7w.js.map} +1 -1
- package/dist/{MTreeView-BcVw0Bgz.cjs → MTreeView-VYp0eErQ.cjs} +2 -2
- package/dist/{MTreeView-BcVw0Bgz.cjs.map → MTreeView-VYp0eErQ.cjs.map} +1 -1
- package/dist/{arduino-Bedph8hQ.cjs → arduino-BdpdaLwK.cjs} +1 -1
- package/dist/{arduino-Bedph8hQ.cjs.map → arduino-BdpdaLwK.cjs.map} +1 -1
- package/dist/{arduino-BHobW-W2.js → arduino-DDDlP9Yt.js} +1 -1
- package/dist/{arduino-BHobW-W2.js.map → arduino-DDDlP9Yt.js.map} +1 -1
- package/dist/{bash-oKnFbgn1.js → bash-D8WbAmuA.js} +1 -1
- package/dist/{bash-oKnFbgn1.js.map → bash-D8WbAmuA.js.map} +1 -1
- package/dist/{bash-CK4DSkpy.cjs → bash-eOUFh3S1.cjs} +1 -1
- package/dist/{bash-CK4DSkpy.cjs.map → bash-eOUFh3S1.cjs.map} +1 -1
- package/dist/{c-9Uw9QchT.cjs → c-Bur7Mn-u.cjs} +1 -1
- package/dist/{c-9Uw9QchT.cjs.map → c-Bur7Mn-u.cjs.map} +1 -1
- package/dist/{c-Bjn-r6WZ.js → c-CTKNfUJI.js} +1 -1
- package/dist/{c-Bjn-r6WZ.js.map → c-CTKNfUJI.js.map} +1 -1
- package/dist/calendar-P7MwKfWS.cjs +2 -0
- package/dist/{calendar-BFfeWRa0.cjs.map → calendar-P7MwKfWS.cjs.map} +1 -1
- package/dist/{calendar-DhRP5_mS.js → calendar-bzeZRst9.js} +59 -58
- package/dist/{calendar-DhRP5_mS.js.map → calendar-bzeZRst9.js.map} +1 -1
- package/dist/calendar.cjs +1 -1
- package/dist/calendar.js +1 -1
- package/dist/calendarDates-AnlGcvZM.cjs +2 -0
- package/dist/calendarDates-AnlGcvZM.cjs.map +1 -0
- package/dist/calendarDates-CYkJqcnp.js +50 -0
- package/dist/calendarDates-CYkJqcnp.js.map +1 -0
- package/dist/{cards-Dus8TmSD.js → cards-CFDJsdxR.js} +4 -4
- package/dist/{cards-Dus8TmSD.js.map → cards-CFDJsdxR.js.map} +1 -1
- package/dist/{cards-Bwos44EP.cjs → cards-DeA7I2KC.cjs} +2 -2
- package/dist/{cards-Bwos44EP.cjs.map → cards-DeA7I2KC.cjs.map} +1 -1
- package/dist/cards.cjs +1 -1
- package/dist/cards.js +1 -1
- package/dist/components/data/MWeekGrid/MWeekGrid.types.d.ts +9 -4
- package/dist/{controls-CeHdKaQv.cjs → controls-KK-TyUTT.cjs} +2 -2
- package/dist/{controls-CeHdKaQv.cjs.map → controls-KK-TyUTT.cjs.map} +1 -1
- package/dist/controls.cjs +1 -1
- package/dist/{core-CMHNXulE.js → core-D5-SQcs8.js} +1 -1
- package/dist/{core-CMHNXulE.js.map → core-D5-SQcs8.js.map} +1 -1
- package/dist/{core-CLRD6sG4.cjs → core-D66c1_Wo.cjs} +1 -1
- package/dist/{core-CLRD6sG4.cjs.map → core-D66c1_Wo.cjs.map} +1 -1
- package/dist/{cpp-BWqMcMeX.cjs → cpp-BMULAf-B.cjs} +1 -1
- package/dist/{cpp-BWqMcMeX.cjs.map → cpp-BMULAf-B.cjs.map} +1 -1
- package/dist/{cpp-b3FmFTKl.js → cpp-DAzz2TpY.js} +1 -1
- package/dist/{cpp-b3FmFTKl.js.map → cpp-DAzz2TpY.js.map} +1 -1
- package/dist/{css-B4MkxW0b.cjs → css-9M03GzKO.cjs} +1 -1
- package/dist/{css-B4MkxW0b.cjs.map → css-9M03GzKO.cjs.map} +1 -1
- package/dist/{css-8EzLAJKV.js → css-EGOXTWIl.js} +1 -1
- package/dist/{css-8EzLAJKV.js.map → css-EGOXTWIl.js.map} +1 -1
- package/dist/{data-Dh3C_VTi.js → data-CgLutFxU.js} +245 -230
- package/dist/data-CgLutFxU.js.map +1 -0
- package/dist/data-DFrkJTlF.cjs +2 -0
- package/dist/data-DFrkJTlF.cjs.map +1 -0
- package/dist/data.cjs +1 -1
- package/dist/data.js +1 -1
- package/dist/{display-DU9E_18w.cjs → display--E7rI0tk.cjs} +2 -2
- package/dist/{display-DU9E_18w.cjs.map → display--E7rI0tk.cjs.map} +1 -1
- package/dist/{display-CYC1AImx.js → display-BnkHKW1n.js} +12 -12
- package/dist/{display-CYC1AImx.js.map → display-BnkHKW1n.js.map} +1 -1
- package/dist/display.cjs +1 -1
- package/dist/display.js +1 -1
- package/dist/dropdowns-DGYg9zIh.cjs +2 -0
- package/dist/{dropdowns-vaj6vhl6.cjs.map → dropdowns-DGYg9zIh.cjs.map} +1 -1
- package/dist/{dropdowns-ByDu8Wbt.js → dropdowns-Dq-xAplH.js} +12 -11
- package/dist/{dropdowns-ByDu8Wbt.js.map → dropdowns-Dq-xAplH.js.map} +1 -1
- package/dist/dropdowns.cjs +1 -1
- package/dist/dropdowns.js +1 -1
- package/dist/{feedback-CUGuh4QZ.cjs → feedback-CA77ShtB.cjs} +2 -2
- package/dist/{feedback-CUGuh4QZ.cjs.map → feedback-CA77ShtB.cjs.map} +1 -1
- package/dist/feedback.cjs +1 -1
- package/dist/{form-Dri4AzY9.js → form-CAFcvmUS.js} +1 -1
- package/dist/{form-Dri4AzY9.js.map → form-CAFcvmUS.js.map} +1 -1
- package/dist/{form-DICGXS6_.cjs → form-DpfzLUOn.cjs} +2 -2
- package/dist/{form-DICGXS6_.cjs.map → form-DpfzLUOn.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{frameworkTexts-C1yvIVm4.js → frameworkTexts-DH0Xp-Vx.js} +30 -61
- package/dist/frameworkTexts-DH0Xp-Vx.js.map +1 -0
- package/dist/frameworkTexts-iDXhcW6k.cjs +2 -0
- package/dist/frameworkTexts-iDXhcW6k.cjs.map +1 -0
- package/dist/i18n/frameworkTexts.d.ts +13 -0
- package/dist/i18n.cjs +1 -1
- package/dist/{icons-BxurYyW-.cjs → icons-D_NB67he.cjs} +2 -2
- package/dist/{icons-BxurYyW-.cjs.map → icons-D_NB67he.cjs.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/illustrations.cjs +1 -1
- package/dist/illustrations.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +13 -13
- package/dist/{inputs-GCUfD923.cjs → inputs-Clenc4Rm.cjs} +2 -2
- package/dist/{inputs-GCUfD923.cjs.map → inputs-Clenc4Rm.cjs.map} +1 -1
- package/dist/inputs.cjs +1 -1
- package/dist/inputs.js +1 -1
- package/dist/{javascript-CH9YvIk2.js → javascript-CHSg4NGc.js} +1 -1
- package/dist/{javascript-CH9YvIk2.js.map → javascript-CHSg4NGc.js.map} +1 -1
- package/dist/{javascript-BGrveJJw.cjs → javascript-CastOQF5.cjs} +1 -1
- package/dist/{javascript-BGrveJJw.cjs.map → javascript-CastOQF5.cjs.map} +1 -1
- package/dist/{json-CPWARxtL.js → json-Bejy9Rlg.js} +1 -1
- package/dist/{json-CPWARxtL.js.map → json-Bejy9Rlg.js.map} +1 -1
- package/dist/{json-D6oa0Lra.cjs → json-DCkJ-m-p.cjs} +1 -1
- package/dist/{json-D6oa0Lra.cjs.map → json-DCkJ-m-p.cjs.map} +1 -1
- package/dist/{layout-Gr99WWTA.cjs → layout-CNoZdeXw.cjs} +2 -2
- package/dist/{layout-Gr99WWTA.cjs.map → layout-CNoZdeXw.cjs.map} +1 -1
- package/dist/{layout-CS_dHOLM.js → layout-DsE4zfpg.js} +3 -3
- package/dist/{layout-CS_dHOLM.js.map → layout-DsE4zfpg.js.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +2 -2
- package/dist/{licensing-DXCHcZd1.cjs → licensing-DGIdtfNg.cjs} +2 -2
- package/dist/{licensing-DXCHcZd1.cjs.map → licensing-DGIdtfNg.cjs.map} +1 -1
- package/dist/{locale-BGLDTJSi.cjs → locale-DRRl_s5-.cjs} +2 -2
- package/dist/{locale-BGLDTJSi.cjs.map → locale-DRRl_s5-.cjs.map} +1 -1
- package/dist/{media-CE59IEdY.cjs → media-DRTBXDnn.cjs} +2 -2
- package/dist/{media-CE59IEdY.cjs.map → media-DRTBXDnn.cjs.map} +1 -1
- package/dist/media.cjs +1 -1
- package/dist/{overlays-DCXP_KsX.js → overlays-BKk_ZXue.js} +2 -2
- package/dist/{overlays-DCXP_KsX.js.map → overlays-BKk_ZXue.js.map} +1 -1
- package/dist/{overlays--Pe-H5TW.cjs → overlays-Qbp4d596.cjs} +2 -2
- package/dist/{overlays--Pe-H5TW.cjs.map → overlays-Qbp4d596.cjs.map} +1 -1
- package/dist/overlays.cjs +1 -1
- package/dist/overlays.js +3 -3
- package/dist/{php-DJ1nTQpr.cjs → php-BdVXegqn.cjs} +1 -1
- package/dist/{php-DJ1nTQpr.cjs.map → php-BdVXegqn.cjs.map} +1 -1
- package/dist/{php-DeBdikHj.js → php-Cb_S1hXT.js} +1 -1
- package/dist/{php-DeBdikHj.js.map → php-Cb_S1hXT.js.map} +1 -1
- package/dist/primitives.cjs +1 -1
- package/dist/style-runtime.cjs +1 -1
- package/dist/style-runtime.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/{theme-Bjs11y3s.cjs → theme-DgaM4CjM.cjs} +2 -2
- package/dist/{theme-Bjs11y3s.cjs.map → theme-DgaM4CjM.cjs.map} +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/{typescript-B5GRzMtL.js → typescript-0VHxrxf2.js} +1 -1
- package/dist/{typescript-B5GRzMtL.js.map → typescript-0VHxrxf2.js.map} +1 -1
- package/dist/{typescript-qNh_eaB0.cjs → typescript-CcGBfzlS.cjs} +1 -1
- package/dist/{typescript-qNh_eaB0.cjs.map → typescript-CcGBfzlS.cjs.map} +1 -1
- package/dist/{typography-D4PUdtMV.cjs → typography-C4_O8len.cjs} +2 -2
- package/dist/{typography-D4PUdtMV.cjs.map → typography-C4_O8len.cjs.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/{useGhostText-BTPneo4u.cjs → useGhostText-Dlemg1vw.cjs} +2 -2
- package/dist/{useGhostText-BTPneo4u.cjs.map → useGhostText-Dlemg1vw.cjs.map} +1 -1
- package/dist/{useInteractionEffect-q_9csNj7.cjs → useInteractionEffect-CFwDX5UF.cjs} +2 -2
- package/dist/{useInteractionEffect-q_9csNj7.cjs.map → useInteractionEffect-CFwDX5UF.cjs.map} +1 -1
- package/dist/{useKeyboardNav-D_OwIEZp.cjs → useKeyboardNav-Bm-dxVq-.cjs} +2 -2
- package/dist/{useKeyboardNav-D_OwIEZp.cjs.map → useKeyboardNav-Bm-dxVq-.cjs.map} +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/{xml-BTZ6XeQ9.js → xml-8GjNy8SM.js} +1 -1
- package/dist/{xml-BTZ6XeQ9.js.map → xml-8GjNy8SM.js.map} +1 -1
- package/dist/{xml-_Z3NZw2H.cjs → xml-Dbm3mobK.cjs} +1 -1
- package/dist/{xml-_Z3NZw2H.cjs.map → xml-Dbm3mobK.cjs.map} +1 -1
- package/package.json +1 -1
- package/dist/MConflictIllustration-CWWnskbi.cjs +0 -2
- package/dist/MConflictIllustration-CWWnskbi.cjs.map +0 -1
- package/dist/MConflictIllustration-Drsm8_8C.js.map +0 -1
- package/dist/calendar-BFfeWRa0.cjs +0 -2
- package/dist/data-Dh3C_VTi.js.map +0 -1
- package/dist/data-Dl6U8Uct.cjs +0 -2
- package/dist/data-Dl6U8Uct.cjs.map +0 -1
- package/dist/dropdowns-vaj6vhl6.cjs +0 -2
- package/dist/frameworkTexts-C1yvIVm4.js.map +0 -1
- package/dist/frameworkTexts-D3wbwWCu.cjs +0 -2
- package/dist/frameworkTexts-D3wbwWCu.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar-DhRP5_mS.js","names":[],"sources":["../src/utils/useControllableState.ts","../src/components/calendar/MMiniCalendar/MMiniCalendar.tsx"],"sourcesContent":["import {useCallback, useRef, useState} from 'react'\n\n/**\n * Generic controlled/uncontrolled state. The value is controlled when `value !== undefined`\n * (React convention). `onChange` fires for every requested change, controlled or not.\n */\nexport function useControllableState<T>(\n value: T | undefined,\n defaultValue: T | (() => T),\n onChange?: (next: T) => void\n): [T, (next: T) => void] {\n const [inner, setInner] = useState<T>(defaultValue)\n const controlled = value !== undefined\n const current = controlled ? (value as T) : inner\n const onChangeRef = useRef(onChange)\n onChangeRef.current = onChange\n const currentRef = useRef(current)\n currentRef.current = current\n\n const setValue = useCallback(\n (next: T) => {\n if (!controlled) {\n setInner(next)\n }\n if (!Object.is(next, currentRef.current)) {\n onChangeRef.current?.(next)\n }\n },\n [controlled]\n )\n\n return [current, setValue]\n}\n","import {useEffect, useMemo, useRef, useState} from 'react'\nimport type {CSSProperties, KeyboardEvent} from 'react'\nimport {cn} from '../../../utils/cn'\nimport {useDocumentLocale} from '../../../utils/locale'\nimport {useControllableState} from '../../../utils/useControllableState'\nimport {\n addDays,\n addMonthsClamped,\n getDateKey,\n getMonthMatrix,\n getWeekdayLabels,\n isSameDay,\n isSameMonth,\n normalizeDate,\n startOfMonth,\n startOfWeek,\n stripTime,\n} from '../../../utils/calendarDates'\nimport {useMMiniCalendarTexts} from '../../../i18n/frameworkTexts'\nimport {MButton} from '../../controls'\nimport {MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport type {MMiniCalendarMarker, MMiniCalendarProps} from './MMiniCalendar.types'\nimport './MMiniCalendar.css'\n\nconst COLOR_FAMILIES = new Set(['primary', 'neutral', 'success', 'error', 'warning', 'info', 'light', 'dark', 'news'])\n\nfunction markerColor(color?: string): string {\n if (!color) {\n return 'var(--mineral-primary)'\n }\n return COLOR_FAMILIES.has(color) ? `var(--mineral-${color})` : color\n}\n\nfunction toMarkerList(value: MMiniCalendarMarker | MMiniCalendarMarker[] | null | undefined): MMiniCalendarMarker[] {\n if (!value) {\n return []\n }\n return Array.isArray(value) ? value : [value]\n}\n\n/**\n * Compact month grid with WAI-ARIA date-grid keyboard support: arrows move by day or week,\n * PageUp/PageDown by month (Shift: year), Home/End to the week edges, Enter/Space selects.\n */\nexport function MMiniCalendar({\n value,\n defaultValue = null,\n onChange,\n month,\n defaultMonth,\n onMonthChange,\n min,\n max,\n disabledDates,\n weekStartsOn = 1,\n locale: localeProp,\n highlightRange,\n markers,\n showOutsideDays = true,\n size = 'md',\n color = 'primary',\n texts: textsProp,\n autoFocus = false,\n className,\n style,\n ...rest\n}: MMiniCalendarProps) {\n const locale = useDocumentLocale(localeProp)\n const texts = useMMiniCalendarTexts(locale, textsProp)\n const [selected, setSelected] = useControllableState<Date | null>(value, defaultValue, (next) => {\n if (next) {\n onChange?.(next)\n }\n })\n const today = stripTime(new Date())\n const [visibleMonth, setVisibleMonth] = useControllableState<Date>(\n month ? startOfMonth(month) : undefined,\n () => startOfMonth(defaultMonth ?? value ?? defaultValue ?? today),\n onMonthChange\n )\n const [focusDate, setFocusDate] = useState<Date>(() => stripTime(value ?? defaultValue ?? today))\n const gridRef = useRef<HTMLDivElement>(null)\n const shouldFocusRef = useRef(autoFocus)\n\n const minDate = useMemo(() => normalizeDate(min ?? null), [min])\n const maxDate = useMemo(() => normalizeDate(max ?? null), [max])\n\n const isDisabled = (date: Date) => {\n if (minDate && date < minDate) {\n return true\n }\n if (maxDate && date > maxDate) {\n return true\n }\n if (typeof disabledDates === 'function') {\n return disabledDates(date)\n }\n return Boolean(disabledDates?.some((item) => isSameDay(item, date)))\n }\n\n // Keep the roving focus target inside the displayed month.\n useEffect(() => {\n if (!isSameMonth(focusDate, visibleMonth)) {\n const candidate = selected && isSameMonth(selected, visibleMonth) ? selected : visibleMonth\n setFocusDate(stripTime(candidate))\n }\n }, [visibleMonth])\n\n useEffect(() => {\n if (!shouldFocusRef.current) {\n return\n }\n shouldFocusRef.current = false\n const node = gridRef.current?.querySelector<HTMLButtonElement>(`[data-date=\"${getDateKey(focusDate)}\"]`)\n node?.focus()\n }, [focusDate])\n\n const days = useMemo(() => getMonthMatrix(visibleMonth, weekStartsOn), [visibleMonth, weekStartsOn])\n const weeks = useMemo(() => Array.from({length: 6}, (_, index) => days.slice(index * 7, index * 7 + 7)), [days])\n const weekdayLabels = useMemo(() => getWeekdayLabels(locale, weekStartsOn, 'short'), [locale, weekStartsOn])\n const weekdayLong = useMemo(() => getWeekdayLabels(locale, weekStartsOn, 'long'), [locale, weekStartsOn])\n const monthTitle = new Intl.DateTimeFormat(locale, {month: 'long', year: 'numeric'}).format(visibleMonth)\n const dayLabelFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, {weekday: 'long', day: 'numeric', month: 'long', year: 'numeric'}),\n [locale]\n )\n\n const rangeStart = highlightRange ? stripTime(highlightRange.start) : null\n const rangeEnd = highlightRange ? stripTime(highlightRange.end) : null\n\n const moveFocus = (next: Date) => {\n const target = stripTime(next)\n shouldFocusRef.current = true\n setFocusDate(target)\n if (!isSameMonth(target, visibleMonth)) {\n setVisibleMonth(startOfMonth(target))\n }\n }\n\n const select = (date: Date) => {\n if (isDisabled(date)) {\n return\n }\n setSelected(date)\n setFocusDate(date)\n if (!isSameMonth(date, visibleMonth)) {\n setVisibleMonth(startOfMonth(date))\n }\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const current = focusDate\n let next: Date | null = null\n switch (event.key) {\n case 'ArrowLeft':\n next = addDays(current, -1)\n break\n case 'ArrowRight':\n next = addDays(current, 1)\n break\n case 'ArrowUp':\n next = addDays(current, -7)\n break\n case 'ArrowDown':\n next = addDays(current, 7)\n break\n case 'PageUp':\n next = addMonthsClamped(current, event.shiftKey ? -12 : -1)\n break\n case 'PageDown':\n next = addMonthsClamped(current, event.shiftKey ? 12 : 1)\n break\n case 'Home':\n next = startOfWeek(current, weekStartsOn)\n break\n case 'End':\n next = addDays(startOfWeek(current, weekStartsOn), 6)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n select(current)\n return\n default:\n return\n }\n event.preventDefault()\n moveFocus(next)\n }\n\n const goMonth = (amount: number) => {\n const nextMonth = startOfMonth(addMonthsClamped(visibleMonth, amount))\n setVisibleMonth(nextMonth)\n }\n\n return (\n <div\n className={cn('mineral-mini-calendar', `mineral-mini-calendar--${size}`, className)}\n style={\n {\n ['--mineral-mini-calendar-accent' as string]: `var(--mineral-${color})`,\n ['--mineral-mini-calendar-accent-contrast' as string]: `var(--mineral-${color}-contrast)`,\n ...style,\n } as CSSProperties\n }\n {...rest}\n >\n <div className={'mineral-mini-calendar__header'}>\n <MButton\n size={'sm'}\n variant={'ghost'}\n color={color}\n iconOnly\n aria-label={texts.previousMonth}\n startIcon={<MChevronLeftIcon size={16} />}\n onClick={() => goMonth(-1)}\n />\n <span className={'mineral-mini-calendar__title'} aria-live={'polite'}>\n {monthTitle}\n </span>\n <MButton\n size={'sm'}\n variant={'ghost'}\n color={color}\n iconOnly\n aria-label={texts.nextMonth}\n startIcon={<MChevronRightIcon size={16} />}\n onClick={() => goMonth(1)}\n />\n </div>\n <div\n ref={gridRef}\n className={'mineral-mini-calendar__grid'}\n role={'grid'}\n aria-label={monthTitle}\n onKeyDown={handleKeyDown}\n >\n <div className={'mineral-mini-calendar__row'} role={'row'}>\n {weekdayLabels.map((label, index) => (\n <span\n key={label + index}\n className={'mineral-mini-calendar__weekday'}\n role={'columnheader'}\n aria-label={weekdayLong[index]}\n >\n {label}\n </span>\n ))}\n </div>\n {weeks.map((week) => (\n <div key={getDateKey(week[0])} className={'mineral-mini-calendar__row'} role={'row'}>\n {week.map((day) => {\n const outside = !isSameMonth(day, visibleMonth)\n if (outside && !showOutsideDays) {\n return (\n <span\n key={getDateKey(day)}\n className={'mineral-mini-calendar__cell'}\n role={'gridcell'}\n />\n )\n }\n const disabled = isDisabled(day)\n const isSelected = Boolean(selected && isSameDay(selected, day))\n const isToday = isSameDay(today, day)\n const inRange = Boolean(rangeStart && rangeEnd && day >= rangeStart && day <= rangeEnd)\n const dayMarkers = markers ? toMarkerList(markers(day)) : []\n const markerText = dayMarkers\n .map((marker) => marker.label)\n .filter(Boolean)\n .join(', ')\n return (\n <span\n key={getDateKey(day)}\n className={'mineral-mini-calendar__cell'}\n role={'gridcell'}\n aria-selected={isSelected}\n >\n <button\n type={'button'}\n data-date={getDateKey(day)}\n className={cn(\n 'mineral-mini-calendar__day',\n outside && 'mineral-mini-calendar__day--outside',\n isToday && 'mineral-mini-calendar__day--today',\n isSelected && 'mineral-mini-calendar__day--selected',\n inRange && 'mineral-mini-calendar__day--in-range',\n disabled && 'mineral-mini-calendar__day--disabled'\n )}\n tabIndex={isSameDay(day, focusDate) ? 0 : -1}\n disabled={disabled}\n aria-current={isToday ? 'date' : undefined}\n aria-label={\n markerText\n ? `${dayLabelFormatter.format(day)}, ${markerText}`\n : dayLabelFormatter.format(day)\n }\n onClick={() => select(day)}\n onFocus={() => {\n if (!isSameDay(day, focusDate)) {\n setFocusDate(day)\n }\n }}\n >\n <span className={'mineral-mini-calendar__number'}>{day.getDate()}</span>\n {dayMarkers.length > 0 ? (\n <span className={'mineral-mini-calendar__markers'} aria-hidden={'true'}>\n {dayMarkers.slice(0, 3).map((marker, index) => (\n <span\n key={index}\n className={'mineral-mini-calendar__marker'}\n style={{background: markerColor(marker.color)}}\n />\n ))}\n </span>\n ) : null}\n </button>\n </span>\n )\n })}\n </div>\n ))}\n </div>\n </div>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"calendar-bzeZRst9.js","names":[],"sources":["../src/utils/useControllableState.ts","../src/components/calendar/MMiniCalendar/MMiniCalendar.tsx"],"sourcesContent":["import {useCallback, useRef, useState} from 'react'\n\n/**\n * Generic controlled/uncontrolled state. The value is controlled when `value !== undefined`\n * (React convention). `onChange` fires for every requested change, controlled or not.\n */\nexport function useControllableState<T>(\n value: T | undefined,\n defaultValue: T | (() => T),\n onChange?: (next: T) => void\n): [T, (next: T) => void] {\n const [inner, setInner] = useState<T>(defaultValue)\n const controlled = value !== undefined\n const current = controlled ? (value as T) : inner\n const onChangeRef = useRef(onChange)\n onChangeRef.current = onChange\n const currentRef = useRef(current)\n currentRef.current = current\n\n const setValue = useCallback(\n (next: T) => {\n if (!controlled) {\n setInner(next)\n }\n if (!Object.is(next, currentRef.current)) {\n onChangeRef.current?.(next)\n }\n },\n [controlled]\n )\n\n return [current, setValue]\n}\n","import {useEffect, useMemo, useRef, useState} from 'react'\nimport type {CSSProperties, KeyboardEvent} from 'react'\nimport {cn} from '../../../utils/cn'\nimport {useDocumentLocale} from '../../../utils/locale'\nimport {useControllableState} from '../../../utils/useControllableState'\nimport {\n addDays,\n addMonthsClamped,\n getDateKey,\n getMonthMatrix,\n getWeekdayLabels,\n isSameDay,\n isSameMonth,\n normalizeDate,\n startOfMonth,\n startOfWeek,\n stripTime,\n} from '../../../utils/calendarDates'\nimport {useMMiniCalendarTexts} from '../../../i18n/frameworkTexts'\nimport {MButton} from '../../controls'\nimport {MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport type {MMiniCalendarMarker, MMiniCalendarProps} from './MMiniCalendar.types'\nimport './MMiniCalendar.css'\n\nconst COLOR_FAMILIES = new Set(['primary', 'neutral', 'success', 'error', 'warning', 'info', 'light', 'dark', 'news'])\n\nfunction markerColor(color?: string): string {\n if (!color) {\n return 'var(--mineral-primary)'\n }\n return COLOR_FAMILIES.has(color) ? `var(--mineral-${color})` : color\n}\n\nfunction toMarkerList(value: MMiniCalendarMarker | MMiniCalendarMarker[] | null | undefined): MMiniCalendarMarker[] {\n if (!value) {\n return []\n }\n return Array.isArray(value) ? value : [value]\n}\n\n/**\n * Compact month grid with WAI-ARIA date-grid keyboard support: arrows move by day or week,\n * PageUp/PageDown by month (Shift: year), Home/End to the week edges, Enter/Space selects.\n */\nexport function MMiniCalendar({\n value,\n defaultValue = null,\n onChange,\n month,\n defaultMonth,\n onMonthChange,\n min,\n max,\n disabledDates,\n weekStartsOn = 1,\n locale: localeProp,\n highlightRange,\n markers,\n showOutsideDays = true,\n size = 'md',\n color = 'primary',\n texts: textsProp,\n autoFocus = false,\n className,\n style,\n ...rest\n}: MMiniCalendarProps) {\n const locale = useDocumentLocale(localeProp)\n const texts = useMMiniCalendarTexts(locale, textsProp)\n const [selected, setSelected] = useControllableState<Date | null>(value, defaultValue, (next) => {\n if (next) {\n onChange?.(next)\n }\n })\n const today = stripTime(new Date())\n const [visibleMonth, setVisibleMonth] = useControllableState<Date>(\n month ? startOfMonth(month) : undefined,\n () => startOfMonth(defaultMonth ?? value ?? defaultValue ?? today),\n onMonthChange\n )\n const [focusDate, setFocusDate] = useState<Date>(() => stripTime(value ?? defaultValue ?? today))\n const gridRef = useRef<HTMLDivElement>(null)\n const shouldFocusRef = useRef(autoFocus)\n\n const minDate = useMemo(() => normalizeDate(min ?? null), [min])\n const maxDate = useMemo(() => normalizeDate(max ?? null), [max])\n\n const isDisabled = (date: Date) => {\n if (minDate && date < minDate) {\n return true\n }\n if (maxDate && date > maxDate) {\n return true\n }\n if (typeof disabledDates === 'function') {\n return disabledDates(date)\n }\n return Boolean(disabledDates?.some((item) => isSameDay(item, date)))\n }\n\n // Keep the roving focus target inside the displayed month.\n useEffect(() => {\n if (!isSameMonth(focusDate, visibleMonth)) {\n const candidate = selected && isSameMonth(selected, visibleMonth) ? selected : visibleMonth\n setFocusDate(stripTime(candidate))\n }\n }, [visibleMonth])\n\n useEffect(() => {\n if (!shouldFocusRef.current) {\n return\n }\n shouldFocusRef.current = false\n const node = gridRef.current?.querySelector<HTMLButtonElement>(`[data-date=\"${getDateKey(focusDate)}\"]`)\n node?.focus()\n }, [focusDate])\n\n const days = useMemo(() => getMonthMatrix(visibleMonth, weekStartsOn), [visibleMonth, weekStartsOn])\n const weeks = useMemo(() => Array.from({length: 6}, (_, index) => days.slice(index * 7, index * 7 + 7)), [days])\n const weekdayLabels = useMemo(() => getWeekdayLabels(locale, weekStartsOn, 'short'), [locale, weekStartsOn])\n const weekdayLong = useMemo(() => getWeekdayLabels(locale, weekStartsOn, 'long'), [locale, weekStartsOn])\n const monthTitle = new Intl.DateTimeFormat(locale, {month: 'long', year: 'numeric'}).format(visibleMonth)\n const dayLabelFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, {weekday: 'long', day: 'numeric', month: 'long', year: 'numeric'}),\n [locale]\n )\n\n const rangeStart = highlightRange ? stripTime(highlightRange.start) : null\n const rangeEnd = highlightRange ? stripTime(highlightRange.end) : null\n\n const moveFocus = (next: Date) => {\n const target = stripTime(next)\n shouldFocusRef.current = true\n setFocusDate(target)\n if (!isSameMonth(target, visibleMonth)) {\n setVisibleMonth(startOfMonth(target))\n }\n }\n\n const select = (date: Date) => {\n if (isDisabled(date)) {\n return\n }\n setSelected(date)\n setFocusDate(date)\n if (!isSameMonth(date, visibleMonth)) {\n setVisibleMonth(startOfMonth(date))\n }\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const current = focusDate\n let next: Date | null = null\n switch (event.key) {\n case 'ArrowLeft':\n next = addDays(current, -1)\n break\n case 'ArrowRight':\n next = addDays(current, 1)\n break\n case 'ArrowUp':\n next = addDays(current, -7)\n break\n case 'ArrowDown':\n next = addDays(current, 7)\n break\n case 'PageUp':\n next = addMonthsClamped(current, event.shiftKey ? -12 : -1)\n break\n case 'PageDown':\n next = addMonthsClamped(current, event.shiftKey ? 12 : 1)\n break\n case 'Home':\n next = startOfWeek(current, weekStartsOn)\n break\n case 'End':\n next = addDays(startOfWeek(current, weekStartsOn), 6)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n select(current)\n return\n default:\n return\n }\n event.preventDefault()\n moveFocus(next)\n }\n\n const goMonth = (amount: number) => {\n const nextMonth = startOfMonth(addMonthsClamped(visibleMonth, amount))\n setVisibleMonth(nextMonth)\n }\n\n return (\n <div\n className={cn('mineral-mini-calendar', `mineral-mini-calendar--${size}`, className)}\n style={\n {\n ['--mineral-mini-calendar-accent' as string]: `var(--mineral-${color})`,\n ['--mineral-mini-calendar-accent-contrast' as string]: `var(--mineral-${color}-contrast)`,\n ...style,\n } as CSSProperties\n }\n {...rest}\n >\n <div className={'mineral-mini-calendar__header'}>\n <MButton\n size={'sm'}\n variant={'ghost'}\n color={color}\n iconOnly\n aria-label={texts.previousMonth}\n startIcon={<MChevronLeftIcon size={16} />}\n onClick={() => goMonth(-1)}\n />\n <span className={'mineral-mini-calendar__title'} aria-live={'polite'}>\n {monthTitle}\n </span>\n <MButton\n size={'sm'}\n variant={'ghost'}\n color={color}\n iconOnly\n aria-label={texts.nextMonth}\n startIcon={<MChevronRightIcon size={16} />}\n onClick={() => goMonth(1)}\n />\n </div>\n <div\n ref={gridRef}\n className={'mineral-mini-calendar__grid'}\n role={'grid'}\n aria-label={monthTitle}\n onKeyDown={handleKeyDown}\n >\n <div className={'mineral-mini-calendar__row'} role={'row'}>\n {weekdayLabels.map((label, index) => (\n <span\n key={label + index}\n className={'mineral-mini-calendar__weekday'}\n role={'columnheader'}\n aria-label={weekdayLong[index]}\n >\n {label}\n </span>\n ))}\n </div>\n {weeks.map((week) => (\n <div key={getDateKey(week[0])} className={'mineral-mini-calendar__row'} role={'row'}>\n {week.map((day) => {\n const outside = !isSameMonth(day, visibleMonth)\n if (outside && !showOutsideDays) {\n return (\n <span\n key={getDateKey(day)}\n className={'mineral-mini-calendar__cell'}\n role={'gridcell'}\n />\n )\n }\n const disabled = isDisabled(day)\n const isSelected = Boolean(selected && isSameDay(selected, day))\n const isToday = isSameDay(today, day)\n const inRange = Boolean(rangeStart && rangeEnd && day >= rangeStart && day <= rangeEnd)\n const dayMarkers = markers ? toMarkerList(markers(day)) : []\n const markerText = dayMarkers\n .map((marker) => marker.label)\n .filter(Boolean)\n .join(', ')\n return (\n <span\n key={getDateKey(day)}\n className={'mineral-mini-calendar__cell'}\n role={'gridcell'}\n aria-selected={isSelected}\n >\n <button\n type={'button'}\n data-date={getDateKey(day)}\n className={cn(\n 'mineral-mini-calendar__day',\n outside && 'mineral-mini-calendar__day--outside',\n isToday && 'mineral-mini-calendar__day--today',\n isSelected && 'mineral-mini-calendar__day--selected',\n inRange && 'mineral-mini-calendar__day--in-range',\n disabled && 'mineral-mini-calendar__day--disabled'\n )}\n tabIndex={isSameDay(day, focusDate) ? 0 : -1}\n disabled={disabled}\n aria-current={isToday ? 'date' : undefined}\n aria-label={\n markerText\n ? `${dayLabelFormatter.format(day)}, ${markerText}`\n : dayLabelFormatter.format(day)\n }\n onClick={() => select(day)}\n onFocus={() => {\n if (!isSameDay(day, focusDate)) {\n setFocusDate(day)\n }\n }}\n >\n <span className={'mineral-mini-calendar__number'}>{day.getDate()}</span>\n {dayMarkers.length > 0 ? (\n <span className={'mineral-mini-calendar__markers'} aria-hidden={'true'}>\n {dayMarkers.slice(0, 3).map((marker, index) => (\n <span\n key={index}\n className={'mineral-mini-calendar__marker'}\n style={{background: markerColor(marker.color)}}\n />\n ))}\n </span>\n ) : null}\n </button>\n </span>\n )\n })}\n </div>\n ))}\n </div>\n </div>\n )\n}\n"],"mappings":"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"}
|
package/dist/calendar.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
const {ensureStyles}=require('./style-runtime.cjs')
|
|
2
2
|
ensureStyles()
|
|
3
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./calendar-
|
|
3
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./calendar-P7MwKfWS.cjs`);exports.MMiniCalendar=e.t;
|
package/dist/calendar.js
CHANGED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function e(e){return e instanceof Date?e:new Date(e)}function t(e){return!Number.isNaN(e.getTime())}function n(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())}function r(r){if(!r)return null;let i=e(r);return t(i)?n(i):null}function i(e,t){let n=new Date(e);return n.setDate(n.getDate()+t),n}function a(e){return new Date(e.getFullYear(),e.getMonth(),1)}function o(e,t){let n=new Date(e.getFullYear(),e.getMonth()+t,1),r=new Date(n.getFullYear(),n.getMonth()+1,0).getDate();return n.setDate(Math.min(e.getDate(),r)),n}function s(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function c(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()}function l(e,t=1){let r=n(e);return n(i(r,-((r.getDay()-t+7)%7)))}function u(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function d(e,t=1){let r=l(a(e),t);return Array.from({length:42},(e,t)=>n(i(r,t)))}function f(e,t=1,n=`short`){let r=new Intl.DateTimeFormat(e,{weekday:n});return Array.from({length:7},(e,n)=>r.format(new Date(2023,0,1+(n+t)%7)))}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return l}});
|
|
2
|
+
//# sourceMappingURL=calendarDates-AnlGcvZM.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendarDates-AnlGcvZM.cjs","names":[],"sources":["../src/utils/calendarDates.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"],"mappings":"AAYA,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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
function e(e) {
|
|
2
|
+
return e instanceof Date ? e : new Date(e);
|
|
3
|
+
}
|
|
4
|
+
function t(e) {
|
|
5
|
+
return !Number.isNaN(e.getTime());
|
|
6
|
+
}
|
|
7
|
+
function n(e) {
|
|
8
|
+
return new Date(e.getFullYear(), e.getMonth(), e.getDate());
|
|
9
|
+
}
|
|
10
|
+
function r(r) {
|
|
11
|
+
if (!r) return null;
|
|
12
|
+
let i = e(r);
|
|
13
|
+
return t(i) ? n(i) : null;
|
|
14
|
+
}
|
|
15
|
+
function i(e, t) {
|
|
16
|
+
let n = new Date(e);
|
|
17
|
+
return n.setDate(n.getDate() + t), n;
|
|
18
|
+
}
|
|
19
|
+
function a(e) {
|
|
20
|
+
return new Date(e.getFullYear(), e.getMonth(), 1);
|
|
21
|
+
}
|
|
22
|
+
function o(e, t) {
|
|
23
|
+
let n = new Date(e.getFullYear(), e.getMonth() + t, 1), r = new Date(n.getFullYear(), n.getMonth() + 1, 0).getDate();
|
|
24
|
+
return n.setDate(Math.min(e.getDate(), r)), n;
|
|
25
|
+
}
|
|
26
|
+
function s(e, t) {
|
|
27
|
+
return e.getFullYear() === t.getFullYear() && e.getMonth() === t.getMonth() && e.getDate() === t.getDate();
|
|
28
|
+
}
|
|
29
|
+
function c(e, t) {
|
|
30
|
+
return e.getFullYear() === t.getFullYear() && e.getMonth() === t.getMonth();
|
|
31
|
+
}
|
|
32
|
+
function l(e, t = 1) {
|
|
33
|
+
let r = n(e);
|
|
34
|
+
return n(i(r, -((r.getDay() - t + 7) % 7)));
|
|
35
|
+
}
|
|
36
|
+
function u(e) {
|
|
37
|
+
return `${e.getFullYear()}-${String(e.getMonth() + 1).padStart(2, "0")}-${String(e.getDate()).padStart(2, "0")}`;
|
|
38
|
+
}
|
|
39
|
+
function d(e, t = 1) {
|
|
40
|
+
let r = l(a(e), t);
|
|
41
|
+
return Array.from({ length: 42 }, (e, t) => n(i(r, t)));
|
|
42
|
+
}
|
|
43
|
+
function f(e, t = 1, n = "short") {
|
|
44
|
+
let r = new Intl.DateTimeFormat(e, { weekday: n });
|
|
45
|
+
return Array.from({ length: 7 }, (e, n) => r.format(new Date(2023, 0, 1 + (n + t) % 7)));
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
export { f as a, r as c, n as d, d as i, a as l, o as n, s as o, u as r, c as s, i as t, l as u };
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=calendarDates-CYkJqcnp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendarDates-CYkJqcnp.js","names":[],"sources":["../src/utils/calendarDates.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"],"mappings":"AAYA,SAAgB,EAAO,GAA4B;AAC/C,QAAO,aAAiB,OAAO,IAAQ,IAAI,KAAK,EAAM;;AAG1D,SAAgB,EAAY,GAAsB;AAC9C,QAAO,CAAC,OAAO,MAAM,EAAM,SAAS,CAAC;;AAoBzC,SAAgB,EAAU,GAAkB;AACxC,QAAO,IAAI,KAAK,EAAK,aAAa,EAAE,EAAK,UAAU,EAAE,EAAK,SAAS,CAAC;;AAGxE,SAAgB,EAAc,GAA2C;AACrE,KAAI,CAAC,EACD,QAAO;CAEX,IAAM,IAAS,EAAO,EAAM;AAI5B,QAHK,EAAY,EAAO,GAGjB,EAAU,EAAO,GAFb;;AAMf,SAAgB,EAAQ,GAAY,GAAsB;CACtD,IAAM,IAAO,IAAI,KAAK,EAAK;AAE3B,QADA,EAAK,QAAQ,EAAK,SAAS,GAAG,EAAO,EAC9B;;AAOX,SAAgB,EAAa,GAAkB;AAC3C,QAAO,IAAI,KAAK,EAAK,aAAa,EAAE,EAAK,UAAU,EAAE,EAAE;;AAS3D,SAAgB,EAAiB,GAAY,GAAsB;CAC/D,IAAM,IAAS,IAAI,KAAK,EAAK,aAAa,EAAE,EAAK,UAAU,GAAG,GAAQ,EAAE,EAClE,IAAU,IAAI,KAAK,EAAO,aAAa,EAAE,EAAO,UAAU,GAAG,GAAG,EAAE,CAAC,SAAS;AAElF,QADA,EAAO,QAAQ,KAAK,IAAI,EAAK,SAAS,EAAE,EAAQ,CAAC,EAC1C;;AAGX,SAAgB,EAAU,GAAS,GAAkB;AACjD,QAAO,EAAE,aAAa,KAAK,EAAE,aAAa,IAAI,EAAE,UAAU,KAAK,EAAE,UAAU,IAAI,EAAE,SAAS,KAAK,EAAE,SAAS;;AAG9G,SAAgB,EAAY,GAAS,GAAkB;AACnD,QAAO,EAAE,aAAa,KAAK,EAAE,aAAa,IAAI,EAAE,UAAU,KAAK,EAAE,UAAU;;AAO/E,SAAgB,EAAY,GAAY,IAAkC,GAAS;CAC/E,IAAM,IAAW,EAAU,EAAK;AAEhC,QAAO,EAAU,EAAQ,GAAU,GADpB,EAAS,QAAQ,GAAG,IAAe,KAAK,GACb,CAAC;;AAG/C,SAAgB,EAAW,GAAoB;AAI3C,QAAO,GAHM,EAAK,aAAa,CAGhB,GAFD,OAAO,EAAK,UAAU,GAAG,EAAE,CAAC,SAAS,GAAG,IAAI,CAElC,GADZ,OAAO,EAAK,SAAS,CAAC,CAAC,SAAS,GAAG,IAAI;;AAoBvD,SAAgB,EAAe,GAAa,IAAkC,GAAW;CACrF,IAAM,IAAY,EAAY,EAAa,EAAM,EAAE,EAAa;AAChE,QAAO,MAAM,KAAK,EAAC,QAAQ,IAAG,GAAG,GAAG,MAAU,EAAU,EAAQ,GAAW,EAAM,CAAC,CAAC;;AAIvF,SAAgB,EACZ,GACA,IAAkC,GAClC,IAAsC,SAC9B;CACR,IAAM,IAAY,IAAI,KAAK,eAAe,GAAQ,EAAC,SAAS,GAAO,CAAC;AAEpE,QAAO,MAAM,KAAK,EAAC,QAAQ,GAAE,GAAG,GAAG,MAAU,EAAU,OAAO,IAAI,KAAK,MAAM,GAAG,KAAM,IAAQ,KAAgB,EAAG,CAAC,CAAC"}
|
|
@@ -14,13 +14,13 @@ import { t as C } from "./MLoader-CnvWqFtA.js";
|
|
|
14
14
|
import { r as w, t as T } from "./MGrid-CYL3cbUI.js";
|
|
15
15
|
import { t as E } from "./MStack-CSCw6to2.js";
|
|
16
16
|
import { a as D, i as O, n as k, r as A, t as j } from "./MCard-azpp4YVD.js";
|
|
17
|
-
import { n as M, t as N } from "./MInputCVC-
|
|
17
|
+
import { n as M, t as N } from "./MInputCVC-Blv5PeyS.js";
|
|
18
18
|
import { t as P } from "./MAvatar-DtJCj3dD.js";
|
|
19
19
|
import { n as F, t as I } from "./MDetailList-fDhVyhm7.js";
|
|
20
20
|
import { t as ee } from "./MInputSearch-BM8gLlJ1.js";
|
|
21
21
|
import { t as L } from "./MTreeView-B1J7uqd1.js";
|
|
22
|
-
import { i as te, r as ne } from "./MDropdownMenu-
|
|
23
|
-
import { t as re } from "./MPagination-
|
|
22
|
+
import { i as te, r as ne } from "./MDropdownMenu-C4CuKMRZ.js";
|
|
23
|
+
import { t as re } from "./MPagination-BkvOEZpp.js";
|
|
24
24
|
import { Children as ie, Fragment as R, cloneElement as z, isValidElement as B, useCallback as V, useEffect as H, useMemo as ae, useRef as oe, useState as U } from "react";
|
|
25
25
|
import { Fragment as se, jsx as W, jsxs as G } from "react/jsx-runtime";
|
|
26
26
|
//#region src/components/cards/shared/MCardColor.utils.tsx
|
|
@@ -1223,4 +1223,4 @@ function we({ title: e = "Documents", description: t, color: n = "primary", item
|
|
|
1223
1223
|
//#endregion
|
|
1224
1224
|
export { ge as a, pe as c, ue as d, Y as f, ye as i, fe as l, Ce as n, he as o, ce as p, Se as r, me as s, we as t, de as u };
|
|
1225
1225
|
|
|
1226
|
-
//# sourceMappingURL=cards-
|
|
1226
|
+
//# sourceMappingURL=cards-CFDJsdxR.js.map
|