@banzamel/mineralui 2.4.3 → 2.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/MAvatar-CvQuiGvT.cjs +2 -0
- package/dist/MAvatar-CvQuiGvT.cjs.map +1 -0
- package/dist/MAvatar-EkOBrEtS.js +73 -0
- package/dist/MAvatar-EkOBrEtS.js.map +1 -0
- package/dist/MButton-BxEky3xQ.cjs +2 -0
- package/dist/MButton-BxEky3xQ.cjs.map +1 -0
- package/dist/MButton-KELyyBw1.js +123 -0
- package/dist/MButton-KELyyBw1.js.map +1 -0
- package/dist/{MButtonGroup-BEJxXZ8u.js → MButtonGroup-DDnn8Wfy.js} +3 -3
- package/dist/{MButtonGroup-BEJxXZ8u.js.map → MButtonGroup-DDnn8Wfy.js.map} +1 -1
- package/dist/{MButtonGroup-DO1Tq3Za.cjs → MButtonGroup-Dz8Fm-oA.cjs} +2 -2
- package/dist/{MButtonGroup-DO1Tq3Za.cjs.map → MButtonGroup-Dz8Fm-oA.cjs.map} +1 -1
- package/dist/{MCard-P8OoswWM.cjs → MCard-Bqm4BjK_.cjs} +2 -2
- package/dist/MCard-Bqm4BjK_.cjs.map +1 -0
- package/dist/{MCard-BqSkGAgf.js → MCard-CqZYGaS2.js} +4 -4
- package/dist/MCard-CqZYGaS2.js.map +1 -0
- package/dist/MCheckbox-CaWgyUn5.js +72 -0
- package/dist/MCheckbox-CaWgyUn5.js.map +1 -0
- package/dist/MCheckbox-DpKJpnFF.cjs +2 -0
- package/dist/MCheckbox-DpKJpnFF.cjs.map +1 -0
- package/dist/{MConflictIllustration-znC7ijmP.js → MConflictIllustration-dwZS44ye.js} +1517 -1515
- package/dist/MConflictIllustration-dwZS44ye.js.map +1 -0
- package/dist/MConflictIllustration-vfHs-jad.cjs +2 -0
- package/dist/MConflictIllustration-vfHs-jad.cjs.map +1 -0
- package/dist/MDetailList-C3othNs3.js +127 -0
- package/dist/MDetailList-C3othNs3.js.map +1 -0
- package/dist/MDetailList-DkDHLdJ8.cjs +2 -0
- package/dist/MDetailList-DkDHLdJ8.cjs.map +1 -0
- package/dist/MDropdownMenu-C4-r7UZM.cjs +2 -0
- package/dist/MDropdownMenu-C4-r7UZM.cjs.map +1 -0
- package/dist/MDropdownMenu-Dvg9UsHB.js +219 -0
- package/dist/MDropdownMenu-Dvg9UsHB.js.map +1 -0
- package/dist/MGrid-CQqT8nHi.js +271 -0
- package/dist/MGrid-CQqT8nHi.js.map +1 -0
- package/dist/MGrid-tBsqShLG.cjs +2 -0
- package/dist/MGrid-tBsqShLG.cjs.map +1 -0
- package/dist/MHeading-DQSQ8c7L.js +21 -0
- package/dist/MHeading-DQSQ8c7L.js.map +1 -0
- package/dist/MHeading-DiGYs1FJ.cjs +2 -0
- package/dist/MHeading-DiGYs1FJ.cjs.map +1 -0
- package/dist/MInput-BeEGufZG.cjs +2 -0
- package/dist/MInput-BeEGufZG.cjs.map +1 -0
- package/dist/MInput-QnQV9L8U.js +190 -0
- package/dist/MInput-QnQV9L8U.js.map +1 -0
- package/dist/MInputCVC-CCNRAqHw.cjs +2 -0
- package/dist/MInputCVC-CCNRAqHw.cjs.map +1 -0
- package/dist/MInputCVC-IXIYZwex.js +410 -0
- package/dist/MInputCVC-IXIYZwex.js.map +1 -0
- package/dist/MInputSearch-BSIc6m2P.cjs +2 -0
- package/dist/MInputSearch-BSIc6m2P.cjs.map +1 -0
- package/dist/MInputSearch-CNuTAbYs.js +44 -0
- package/dist/MInputSearch-CNuTAbYs.js.map +1 -0
- package/dist/{MKbd-BR1GX5oK.cjs → MKbd-CnW3NUIu.cjs} +2 -2
- package/dist/{MKbd-BR1GX5oK.cjs.map → MKbd-CnW3NUIu.cjs.map} +1 -1
- package/dist/{MKbd-COb7oh_k.js → MKbd-DjfGyajR.js} +2 -2
- package/dist/{MKbd-COb7oh_k.js.map → MKbd-DjfGyajR.js.map} +1 -1
- package/dist/MLink-C6uwA6db.cjs +2 -0
- package/dist/MLink-C6uwA6db.cjs.map +1 -0
- package/dist/MLink-ixg0xFFI.js +31 -0
- package/dist/MLink-ixg0xFFI.js.map +1 -0
- package/dist/MLoader-CViA3zBo.js +44 -0
- package/dist/MLoader-CViA3zBo.js.map +1 -0
- package/dist/MLoader-DUOoOoNE.cjs +2 -0
- package/dist/MLoader-DUOoOoNE.cjs.map +1 -0
- package/dist/MPagination-BTGenxWW.js +122 -0
- package/dist/MPagination-BTGenxWW.js.map +1 -0
- package/dist/MPagination-DitmdtCc.cjs +2 -0
- package/dist/MPagination-DitmdtCc.cjs.map +1 -0
- package/dist/MPopover-CBDbUOW6.js +183 -0
- package/dist/MPopover-CBDbUOW6.js.map +1 -0
- package/dist/MPopover-ZeoU9hb5.cjs +2 -0
- package/dist/MPopover-ZeoU9hb5.cjs.map +1 -0
- package/dist/{MSimpleGrid-Ui8cI0ho.js → MSimpleGrid-C_QvLmck.js} +3 -3
- package/dist/MSimpleGrid-C_QvLmck.js.map +1 -0
- package/dist/MSimpleGrid-wgvjnxwM.cjs +2 -0
- package/dist/MSimpleGrid-wgvjnxwM.cjs.map +1 -0
- package/dist/{MSkeleton-Dhu-loDO.js → MSkeleton-BpcpBBJq.js} +12 -10
- package/dist/MSkeleton-BpcpBBJq.js.map +1 -0
- package/dist/MSkeleton-DuAN8Vcv.cjs +2 -0
- package/dist/MSkeleton-DuAN8Vcv.cjs.map +1 -0
- package/dist/MSlider-CLASUc2H.js +134 -0
- package/dist/MSlider-CLASUc2H.js.map +1 -0
- package/dist/MSlider-hONQBulE.cjs +2 -0
- package/dist/MSlider-hONQBulE.cjs.map +1 -0
- package/dist/MStack-BwAFeGGg.js +39 -0
- package/dist/MStack-BwAFeGGg.js.map +1 -0
- package/dist/MStack-CGII4A-q.cjs +2 -0
- package/dist/MStack-CGII4A-q.cjs.map +1 -0
- package/dist/MSubText-BeZk-fhz.js +17 -0
- package/dist/MSubText-BeZk-fhz.js.map +1 -0
- package/dist/MSubText-Dl1PfToZ.cjs +2 -0
- package/dist/MSubText-Dl1PfToZ.cjs.map +1 -0
- package/dist/MSurface-B_QnRLr5.js +74 -0
- package/dist/MSurface-B_QnRLr5.js.map +1 -0
- package/dist/MSurface-BrFo-JMJ.cjs +2 -0
- package/dist/MSurface-BrFo-JMJ.cjs.map +1 -0
- package/dist/MTag-BZrKN_DS.js +41 -0
- package/dist/MTag-BZrKN_DS.js.map +1 -0
- package/dist/MTag-DCE1vRJM.cjs +2 -0
- package/dist/MTag-DCE1vRJM.cjs.map +1 -0
- package/dist/MText-BUWQPoBM.js +45 -0
- package/dist/MText-BUWQPoBM.js.map +1 -0
- package/dist/MText-nsvLFsSv.cjs +2 -0
- package/dist/MText-nsvLFsSv.cjs.map +1 -0
- package/dist/MTooltip-BRSPJ3RY.js +100 -0
- package/dist/MTooltip-BRSPJ3RY.js.map +1 -0
- package/dist/MTooltip-Cj2Fxmzc.cjs +2 -0
- package/dist/MTooltip-Cj2Fxmzc.cjs.map +1 -0
- package/dist/MTreeView-BWCTlsU-.cjs +2 -0
- package/dist/MTreeView-BWCTlsU-.cjs.map +1 -0
- package/dist/MTreeView-CWcMwE-Z.js +554 -0
- package/dist/MTreeView-CWcMwE-Z.js.map +1 -0
- package/dist/calendar-2yhnCkGW.cjs +2 -0
- package/dist/calendar-2yhnCkGW.cjs.map +1 -0
- package/dist/calendar-DcNYDTVb.js +195 -0
- package/dist/calendar-DcNYDTVb.js.map +1 -0
- package/dist/calendar.cjs +1 -1
- package/dist/calendar.js +1 -1
- package/dist/{calendarDates-M_Dawj0j.js → calendarDates-Bpw_G_QR.js} +30 -19
- package/dist/calendarDates-Bpw_G_QR.js.map +1 -0
- package/dist/calendarDates-Cg0nm69Y.cjs +2 -0
- package/dist/calendarDates-Cg0nm69Y.cjs.map +1 -0
- package/dist/cards-Bp886TRb.cjs +2 -0
- package/dist/cards-Bp886TRb.cjs.map +1 -0
- package/dist/cards-BvER6Gx0.js +1277 -0
- package/dist/cards-BvER6Gx0.js.map +1 -0
- package/dist/cards.cjs +1 -1
- package/dist/cards.js +2 -2
- package/dist/{cn-YER3QsV1.js → cn-CUSXNnjF.js} +1 -1
- package/dist/{cn-YER3QsV1.js.map → cn-CUSXNnjF.js.map} +1 -1
- package/dist/{cn-CU5TNITO.cjs → cn-DYFxgzi2.cjs} +1 -1
- package/dist/{cn-CU5TNITO.cjs.map → cn-DYFxgzi2.cjs.map} +1 -1
- package/dist/components/cards/MCardDaySchedule/MCardDaySchedule.d.ts +1 -1
- package/dist/components/cards/MCardDocumentTree/MCardDocumentTree.d.ts +1 -1
- package/dist/components/cards/MCardGrid/MCardGrid.d.ts +1 -1
- package/dist/components/cards/MCardPayment/MCardPayment.d.ts +1 -1
- package/dist/components/cards/MCardPayment/MCardPayment.types.d.ts +4 -0
- package/dist/components/cards/MCardPaymentMethod/MCardPaymentMethod.d.ts +1 -1
- package/dist/components/cards/MStatCard/MStatCard.d.ts +1 -1
- package/dist/components/controls/MCheckbox/MCheckbox.types.d.ts +6 -0
- package/dist/components/controls/MLoadMore/MLoadMore.d.ts +1 -1
- package/dist/components/controls/MSlider/MSlider.d.ts +1 -1
- package/dist/components/controls/MSlider/MSlider.types.d.ts +5 -0
- package/dist/components/data/MTreeView/MTreeView.d.ts +1 -1
- package/dist/components/data/MTreeView/MTreeView.types.d.ts +6 -0
- package/dist/components/data/MWeekGrid/MWeekGrid.d.ts +1 -1
- package/dist/components/data/MWeekGrid/MWeekGrid.types.d.ts +9 -3
- package/dist/components/display/MCodeBlock/MCodeBlock.d.ts +1 -1
- package/dist/components/dropdowns/MAutocomplete/MAutocomplete.d.ts +1 -1
- package/dist/components/dropdowns/MAutocomplete/MAutocomplete.types.d.ts +8 -2
- package/dist/components/dropdowns/MSelect/MSelect.d.ts +1 -1
- package/dist/components/dropdowns/shared/TimeColumnListbox.d.ts +20 -0
- package/dist/components/feedback/MAlert/MAlert.d.ts +1 -1
- package/dist/components/feedback/MBadge/MBadge.d.ts +1 -1
- package/dist/components/feedback/MBanner/MBanner.d.ts +1 -1
- package/dist/components/feedback/MLoader/MLoader.d.ts +1 -1
- package/dist/components/feedback/MSpinner/MSpinner.d.ts +1 -1
- package/dist/components/feedback/MTag/MTag.d.ts +1 -1
- package/dist/components/inputs/MInput/MInput.types.d.ts +6 -1
- package/dist/components/inputs/MInput/useFormatCaret.d.ts +8 -0
- package/dist/components/layout/MCanvasGrid/MCanvasGrid.types.d.ts +5 -0
- package/dist/components/layout/MContainer/MContainer.d.ts +1 -1
- package/dist/components/layout/MDivider/MDivider.d.ts +1 -1
- package/dist/components/layout/MFooter/MFooter.d.ts +1 -1
- package/dist/components/layout/MHeader/MHeader.d.ts +1 -1
- package/dist/components/layout/MInline/MInline.d.ts +1 -1
- package/dist/components/layout/MNavbar/MNavbar.d.ts +1 -1
- package/dist/components/layout/MNavbar/MNavbar.types.d.ts +2 -0
- package/dist/components/layout/MSection/MSection.d.ts +1 -1
- package/dist/components/layout/MStack/MStack.d.ts +1 -1
- package/dist/components/layout/MStickyPanel/MStickyPanel.types.d.ts +4 -0
- package/dist/components/layout/MSurface/MSurface.d.ts +1 -1
- package/dist/components/media/MAvatar/MAvatar.d.ts +1 -1
- package/dist/components/media/MAvatar/MAvatar.types.d.ts +10 -0
- package/dist/components/media/MCarousel/MCarousel.d.ts +1 -1
- package/dist/components/media/MImage/MImage.d.ts +1 -1
- package/dist/components/media/carouselA11y.d.ts +9 -0
- package/dist/components/overlays/MCommandPalette/MCommandPalette.d.ts +1 -1
- package/dist/components/overlays/MDropdownMenu/MDropdownMenu.d.ts +4 -2
- package/dist/components/overlays/MDropdownMenu/MDropdownMenu.types.d.ts +3 -1
- package/dist/components/overlays/MPopconfirm/MPopconfirm.d.ts +1 -1
- package/dist/components/overlays/scrollLock.d.ts +14 -0
- package/dist/components/primitives/MPopover/MPopover.d.ts +1 -1
- package/dist/components/primitives/MPopover/MPopover.types.d.ts +32 -1
- package/dist/components/primitives/MPopover/popoverStack.d.ts +6 -0
- package/dist/components/typography/MHeading/MHeading.d.ts +2 -3
- package/dist/components/typography/MSubText/MSubText.d.ts +1 -1
- package/dist/components/typography/MText/MText.d.ts +1 -1
- package/dist/controls-B4Dxaab4.js +491 -0
- package/dist/controls-B4Dxaab4.js.map +1 -0
- package/dist/controls-CyXEIOXD.cjs +2 -0
- package/dist/controls-CyXEIOXD.cjs.map +1 -0
- package/dist/controls.cjs +1 -1
- package/dist/controls.js +5 -5
- package/dist/creditCards-Bo2mrc53.cjs +2 -0
- package/dist/creditCards-Bo2mrc53.cjs.map +1 -0
- package/dist/{creditCards-D_iWmtG6.js → creditCards-DmDOyvcw.js} +20 -31
- package/dist/creditCards-DmDOyvcw.js.map +1 -0
- package/dist/data-BM3KG8oN.cjs +2 -0
- package/dist/data-BM3KG8oN.cjs.map +1 -0
- package/dist/data-qnR8OBmj.js +808 -0
- package/dist/data-qnR8OBmj.js.map +1 -0
- package/dist/data.cjs +1 -1
- package/dist/data.js +2 -2
- package/dist/{dateUtils-CUY6CRCf.js → dateUtils-B-ToNZq_.js} +5 -6
- package/dist/dateUtils-B-ToNZq_.js.map +1 -0
- package/dist/dateUtils-z2L7ZaxA.cjs +2 -0
- package/dist/dateUtils-z2L7ZaxA.cjs.map +1 -0
- package/dist/display-BLMOBofj.cjs +3 -0
- package/dist/display-BLMOBofj.cjs.map +1 -0
- package/dist/display-Dlb79lkA.js +968 -0
- package/dist/display-Dlb79lkA.js.map +1 -0
- package/dist/display.cjs +1 -1
- package/dist/display.js +2 -2
- package/dist/dropdowns-2_7VMEDo.js +2009 -0
- package/dist/dropdowns-2_7VMEDo.js.map +1 -0
- package/dist/dropdowns-DN7j8J-V.cjs +2 -0
- package/dist/dropdowns-DN7j8J-V.cjs.map +1 -0
- package/dist/dropdowns.cjs +1 -1
- package/dist/dropdowns.js +1 -1
- package/dist/feedback-CECayytY.js +335 -0
- package/dist/feedback-CECayytY.js.map +1 -0
- package/dist/feedback-paV8Ls-h.cjs +2 -0
- package/dist/feedback-paV8Ls-h.cjs.map +1 -0
- package/dist/feedback.cjs +1 -1
- package/dist/feedback.js +5 -5
- package/dist/form-Br56h5EF.cjs +2 -0
- package/dist/form-Br56h5EF.cjs.map +1 -0
- package/dist/form-CJmMZgsH.js +165 -0
- package/dist/form-CJmMZgsH.js.map +1 -0
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{formatters-CNjg_h7-.cjs → formatters-CauWlsnM.cjs} +1 -1
- package/dist/{formatters-CNjg_h7-.cjs.map → formatters-CauWlsnM.cjs.map} +1 -1
- package/dist/{formatters-T0vvjMtB.js → formatters-Doqdu_w1.js} +1 -1
- package/dist/{formatters-T0vvjMtB.js.map → formatters-Doqdu_w1.js.map} +1 -1
- package/dist/frameworkTexts-CaqdiKHW.cjs +2 -0
- package/dist/frameworkTexts-CaqdiKHW.cjs.map +1 -0
- package/dist/frameworkTexts-o43FqY1A.js +505 -0
- package/dist/frameworkTexts-o43FqY1A.js.map +1 -0
- package/dist/i18n/MI18nProvider.d.ts +6 -1
- package/dist/i18n/frameworkTexts.d.ts +511 -0
- package/dist/i18n/index.d.ts +1 -0
- package/dist/i18n.cjs +1 -1
- package/dist/i18n.js +2 -2
- package/dist/icons-Bp8bB9TP.cjs +2 -0
- package/dist/icons-Bp8bB9TP.cjs.map +1 -0
- package/dist/{icons-CBMl-kOM.js → icons-IqEBmGh3.js} +1223 -1220
- package/dist/icons-IqEBmGh3.js.map +1 -0
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/illustrations.cjs +1 -1
- package/dist/illustrations.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.js +56 -56
- package/dist/inputs-C0BJzlA-.js +1923 -0
- package/dist/inputs-C0BJzlA-.js.map +1 -0
- package/dist/inputs-CvNBBLFA.cjs +2 -0
- package/dist/inputs-CvNBBLFA.cjs.map +1 -0
- package/dist/inputs.cjs +1 -1
- package/dist/inputs.js +4 -4
- package/dist/layout-BSFqGXLZ.js +1101 -0
- package/dist/layout-BSFqGXLZ.js.map +1 -0
- package/dist/layout-MKqvUkPv.cjs +2 -0
- package/dist/layout-MKqvUkPv.cjs.map +1 -0
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +6 -6
- package/dist/{layoutProps-Ck4VtGm9.cjs → layoutProps-B8y2XwHy.cjs} +1 -1
- package/dist/{layoutProps-Ck4VtGm9.cjs.map → layoutProps-B8y2XwHy.cjs.map} +1 -1
- package/dist/{layoutProps-Cl6d1KmH.js → layoutProps-CE5-ghKw.js} +1 -1
- package/dist/{layoutProps-Cl6d1KmH.js.map → layoutProps-CE5-ghKw.js.map} +1 -1
- package/dist/{licensing-f5KYVz7D.js → licensing-BKmoAdfr.js} +5 -4
- package/dist/licensing-BKmoAdfr.js.map +1 -0
- package/dist/licensing-DVgjkw-s.cjs +2 -0
- package/dist/licensing-DVgjkw-s.cjs.map +1 -0
- package/dist/media-fiasAbBv.js +485 -0
- package/dist/media-fiasAbBv.js.map +1 -0
- package/dist/media-tr1s386v.cjs +2 -0
- package/dist/media-tr1s386v.cjs.map +1 -0
- package/dist/media.cjs +1 -1
- package/dist/media.js +2 -2
- package/dist/overlays-Df-NpmkW.cjs +2 -0
- package/dist/overlays-Df-NpmkW.cjs.map +1 -0
- package/dist/overlays-W0WW3fn7.js +607 -0
- package/dist/overlays-W0WW3fn7.js.map +1 -0
- package/dist/overlays.cjs +1 -1
- package/dist/overlays.js +3 -3
- package/dist/primitives.cjs +1 -1
- package/dist/primitives.js +2 -2
- package/dist/radioGroupKeys-Bm-Qeh8G.js +28 -0
- package/dist/radioGroupKeys-Bm-Qeh8G.js.map +1 -0
- package/dist/radioGroupKeys-COL8uXbH.cjs +2 -0
- package/dist/radioGroupKeys-COL8uXbH.cjs.map +1 -0
- package/dist/{relativeTime-Cr-NVzij.js → relativeTime-BqCuaBqb.js} +1 -1
- package/dist/{relativeTime-Cr-NVzij.js.map → relativeTime-BqCuaBqb.js.map} +1 -1
- package/dist/{relativeTime-DgYBUaVm.cjs → relativeTime-DUbW4O44.cjs} +1 -1
- package/dist/{relativeTime-DgYBUaVm.cjs.map → relativeTime-DUbW4O44.cjs.map} +1 -1
- package/dist/scrollLock-C9P9o6wH.cjs +2 -0
- package/dist/scrollLock-C9P9o6wH.cjs.map +1 -0
- package/dist/scrollLock-D27VmgPV.js +14 -0
- package/dist/scrollLock-D27VmgPV.js.map +1 -0
- package/dist/style-runtime.cjs +1 -1
- package/dist/style-runtime.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/theme/MThemeProvider.d.ts +18 -1
- package/dist/theme/index.d.ts +2 -2
- package/dist/{theme-DAOU1aPs.js → theme-B_juOenJ.js} +71 -61
- package/dist/theme-B_juOenJ.js.map +1 -0
- package/dist/theme-ByPZH0dh.cjs +2 -0
- package/dist/theme-ByPZH0dh.cjs.map +1 -0
- package/dist/theme.cjs +1 -1
- package/dist/theme.js +2 -2
- package/dist/{typography-C806GYT4.js → typography-DNcB8dOy.js} +3 -3
- package/dist/{typography-C806GYT4.js.map → typography-DNcB8dOy.js.map} +1 -1
- package/dist/{typography-4v01oNWx.cjs → typography-I7aeG8pH.cjs} +2 -2
- package/dist/{typography-4v01oNWx.cjs.map → typography-I7aeG8pH.cjs.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +6 -6
- package/dist/useGhostText-CKsb8Ufa.js +240 -0
- package/dist/useGhostText-CKsb8Ufa.js.map +1 -0
- package/dist/useGhostText-DO-tfxS0.cjs +2 -0
- package/dist/useGhostText-DO-tfxS0.cjs.map +1 -0
- package/dist/useModalLayer-CpOPSDbf.js +128 -0
- package/dist/useModalLayer-CpOPSDbf.js.map +1 -0
- package/dist/useModalLayer-Cyt93Prs.cjs +2 -0
- package/dist/useModalLayer-Cyt93Prs.cjs.map +1 -0
- package/dist/utils/calendarDates.d.ts +5 -0
- package/dist/utils/radioGroupKeys.d.ts +9 -0
- package/dist/utils/useDateGridNav.d.ts +39 -0
- package/dist/utils/useGhostText.d.ts +2 -1
- package/dist/utils/useKeyboardNav.d.ts +51 -5
- package/dist/utils/useModalLayer.d.ts +4 -0
- package/dist/utils/useRovingToolbar.d.ts +26 -0
- package/dist/utils/validationMessages.d.ts +15 -0
- package/dist/utils.cjs +1 -1
- package/dist/utils.entry.d.ts +3 -1
- package/dist/utils.js +11 -11
- package/dist/validationMessages-BFimXxlT.js +23 -0
- package/dist/validationMessages-BFimXxlT.js.map +1 -0
- package/dist/validationMessages-iHu7apWr.cjs +2 -0
- package/dist/validationMessages-iHu7apWr.cjs.map +1 -0
- package/dist/validators-SZmLxnir.cjs +2 -0
- package/dist/validators-SZmLxnir.cjs.map +1 -0
- package/dist/{validators-DVYOtFnw.js → validators-ULebNme2.js} +107 -106
- package/dist/validators-ULebNme2.js.map +1 -0
- package/package.json +1 -1
- package/dist/MAvatar-DHNB3829.cjs +0 -2
- package/dist/MAvatar-DHNB3829.cjs.map +0 -1
- package/dist/MAvatar-GeRL-CNO.js +0 -63
- package/dist/MAvatar-GeRL-CNO.js.map +0 -1
- package/dist/MButton-CEwo8lUB.js +0 -115
- package/dist/MButton-CEwo8lUB.js.map +0 -1
- package/dist/MButton-CnAr77Za.cjs +0 -2
- package/dist/MButton-CnAr77Za.cjs.map +0 -1
- package/dist/MCard-BqSkGAgf.js.map +0 -1
- package/dist/MCard-P8OoswWM.cjs.map +0 -1
- package/dist/MCheckbox-BxFBADcE.js +0 -59
- package/dist/MCheckbox-BxFBADcE.js.map +0 -1
- package/dist/MCheckbox-DozwF2ai.cjs +0 -2
- package/dist/MCheckbox-DozwF2ai.cjs.map +0 -1
- package/dist/MConflictIllustration-2QL-BHYv.cjs +0 -2
- package/dist/MConflictIllustration-2QL-BHYv.cjs.map +0 -1
- package/dist/MConflictIllustration-znC7ijmP.js.map +0 -1
- package/dist/MDetailList-CThQvoyf.cjs +0 -2
- package/dist/MDetailList-CThQvoyf.cjs.map +0 -1
- package/dist/MDetailList-Cx9H81xT.js +0 -98
- package/dist/MDetailList-Cx9H81xT.js.map +0 -1
- package/dist/MDropdownMenu-DnKcCyW6.cjs +0 -2
- package/dist/MDropdownMenu-DnKcCyW6.cjs.map +0 -1
- package/dist/MDropdownMenu-DxbKN7Ui.js +0 -172
- package/dist/MDropdownMenu-DxbKN7Ui.js.map +0 -1
- package/dist/MGrid-BkRSGN2t.cjs +0 -2
- package/dist/MGrid-BkRSGN2t.cjs.map +0 -1
- package/dist/MGrid-CIz-2i6X.js +0 -265
- package/dist/MGrid-CIz-2i6X.js.map +0 -1
- package/dist/MHeading-AYQ8_GFP.cjs +0 -2
- package/dist/MHeading-AYQ8_GFP.cjs.map +0 -1
- package/dist/MHeading-DcGxUMwC.js +0 -21
- package/dist/MHeading-DcGxUMwC.js.map +0 -1
- package/dist/MI18nProvider-CqAwaswx.cjs +0 -2
- package/dist/MI18nProvider-CqAwaswx.cjs.map +0 -1
- package/dist/MI18nProvider-VH14CI8u.js +0 -72
- package/dist/MI18nProvider-VH14CI8u.js.map +0 -1
- package/dist/MInput-BYj2BdUe.cjs +0 -2
- package/dist/MInput-BYj2BdUe.cjs.map +0 -1
- package/dist/MInput-nodE-CZF.js +0 -188
- package/dist/MInput-nodE-CZF.js.map +0 -1
- package/dist/MInputCVC-9XWryaTz.cjs +0 -2
- package/dist/MInputCVC-9XWryaTz.cjs.map +0 -1
- package/dist/MInputCVC-CrDTaUXm.js +0 -321
- package/dist/MInputCVC-CrDTaUXm.js.map +0 -1
- package/dist/MInputSearch-BMgCHjFk.js +0 -43
- package/dist/MInputSearch-BMgCHjFk.js.map +0 -1
- package/dist/MInputSearch-BiVI1jNc.cjs +0 -2
- package/dist/MInputSearch-BiVI1jNc.cjs.map +0 -1
- package/dist/MLink-CAl6N6_z.js +0 -31
- package/dist/MLink-CAl6N6_z.js.map +0 -1
- package/dist/MLink-Dk_ReE6i.cjs +0 -2
- package/dist/MLink-Dk_ReE6i.cjs.map +0 -1
- package/dist/MLoader-CYp0OJU_.js +0 -41
- package/dist/MLoader-CYp0OJU_.js.map +0 -1
- package/dist/MLoader-DvmFle31.cjs +0 -2
- package/dist/MLoader-DvmFle31.cjs.map +0 -1
- package/dist/MPagination-E7IixIeo.js +0 -113
- package/dist/MPagination-E7IixIeo.js.map +0 -1
- package/dist/MPagination-reDU9xTW.cjs +0 -2
- package/dist/MPagination-reDU9xTW.cjs.map +0 -1
- package/dist/MPopover-8gYD3Ogq.js +0 -118
- package/dist/MPopover-8gYD3Ogq.js.map +0 -1
- package/dist/MPopover-B3npyAkL.cjs +0 -2
- package/dist/MPopover-B3npyAkL.cjs.map +0 -1
- package/dist/MPortal-Ba2Sxset.js +0 -10
- package/dist/MPortal-Ba2Sxset.js.map +0 -1
- package/dist/MPortal-CuBXhhl_.cjs +0 -2
- package/dist/MPortal-CuBXhhl_.cjs.map +0 -1
- package/dist/MSimpleGrid-BchGYPMi.cjs +0 -2
- package/dist/MSimpleGrid-BchGYPMi.cjs.map +0 -1
- package/dist/MSimpleGrid-Ui8cI0ho.js.map +0 -1
- package/dist/MSkeleton-DPa_G_2X.cjs +0 -2
- package/dist/MSkeleton-DPa_G_2X.cjs.map +0 -1
- package/dist/MSkeleton-Dhu-loDO.js.map +0 -1
- package/dist/MSlider-BRjhyBSc.js +0 -75
- package/dist/MSlider-BRjhyBSc.js.map +0 -1
- package/dist/MSlider-w5214a-W.cjs +0 -2
- package/dist/MSlider-w5214a-W.cjs.map +0 -1
- package/dist/MStack-Dt-rWvg3.js +0 -39
- package/dist/MStack-Dt-rWvg3.js.map +0 -1
- package/dist/MStack-nc6Y_9K3.cjs +0 -2
- package/dist/MStack-nc6Y_9K3.cjs.map +0 -1
- package/dist/MSubText-B0tXiuAp.js +0 -17
- package/dist/MSubText-B0tXiuAp.js.map +0 -1
- package/dist/MSubText-C6v6Exa2.cjs +0 -2
- package/dist/MSubText-C6v6Exa2.cjs.map +0 -1
- package/dist/MSurface-BjE-mL1L.cjs +0 -2
- package/dist/MSurface-BjE-mL1L.cjs.map +0 -1
- package/dist/MSurface-CpDJCdb5.js +0 -74
- package/dist/MSurface-CpDJCdb5.js.map +0 -1
- package/dist/MTag-BgOxiahL.cjs +0 -2
- package/dist/MTag-BgOxiahL.cjs.map +0 -1
- package/dist/MTag-cw3cIGHX.js +0 -41
- package/dist/MTag-cw3cIGHX.js.map +0 -1
- package/dist/MText-BDI4mdw8.cjs +0 -2
- package/dist/MText-BDI4mdw8.cjs.map +0 -1
- package/dist/MText-DhbAjtUE.js +0 -45
- package/dist/MText-DhbAjtUE.js.map +0 -1
- package/dist/MTooltip-BAgHlv5I.cjs +0 -2
- package/dist/MTooltip-BAgHlv5I.cjs.map +0 -1
- package/dist/MTooltip-CJxvlkOX.js +0 -92
- package/dist/MTooltip-CJxvlkOX.js.map +0 -1
- package/dist/MTreeView-DsBnYQMT.js +0 -315
- package/dist/MTreeView-DsBnYQMT.js.map +0 -1
- package/dist/MTreeView-LiJ5o-zy.cjs +0 -2
- package/dist/MTreeView-LiJ5o-zy.cjs.map +0 -1
- package/dist/calendar-Bq6NMNnS.js +0 -193
- package/dist/calendar-Bq6NMNnS.js.map +0 -1
- package/dist/calendar-C57BH8Nd.cjs +0 -2
- package/dist/calendar-C57BH8Nd.cjs.map +0 -1
- package/dist/calendarDates-M_Dawj0j.js.map +0 -1
- package/dist/calendarDates-qm047RW2.cjs +0 -2
- package/dist/calendarDates-qm047RW2.cjs.map +0 -1
- package/dist/cards-D4xJVd4q.js +0 -1227
- package/dist/cards-D4xJVd4q.js.map +0 -1
- package/dist/cards-Du6dbZSQ.cjs +0 -2
- package/dist/cards-Du6dbZSQ.cjs.map +0 -1
- package/dist/controls-BKoc_yel.js +0 -475
- package/dist/controls-BKoc_yel.js.map +0 -1
- package/dist/controls-Ck-PMt__.cjs +0 -2
- package/dist/controls-Ck-PMt__.cjs.map +0 -1
- package/dist/creditCards-D_HwRUBz.cjs +0 -2
- package/dist/creditCards-D_HwRUBz.cjs.map +0 -1
- package/dist/creditCards-D_iWmtG6.js.map +0 -1
- package/dist/data-CdQximqm.js +0 -689
- package/dist/data-CdQximqm.js.map +0 -1
- package/dist/data-PS4ygCyj.cjs +0 -2
- package/dist/data-PS4ygCyj.cjs.map +0 -1
- package/dist/dateUtils-CUY6CRCf.js.map +0 -1
- package/dist/dateUtils-Dq1vaA-D.cjs +0 -2
- package/dist/dateUtils-Dq1vaA-D.cjs.map +0 -1
- package/dist/display-YC1fVpXA.js +0 -782
- package/dist/display-YC1fVpXA.js.map +0 -1
- package/dist/display-slIo1bQI.cjs +0 -3
- package/dist/display-slIo1bQI.cjs.map +0 -1
- package/dist/dropdowns-DFbUoZ8Q.cjs +0 -2
- package/dist/dropdowns-DFbUoZ8Q.cjs.map +0 -1
- package/dist/dropdowns-nW3MY5XG.js +0 -1715
- package/dist/dropdowns-nW3MY5XG.js.map +0 -1
- package/dist/feedback-6MNb2Xyk.cjs +0 -2
- package/dist/feedback-6MNb2Xyk.cjs.map +0 -1
- package/dist/feedback-CPwJaQHY.js +0 -259
- package/dist/feedback-CPwJaQHY.js.map +0 -1
- package/dist/form-CMsZo6Dm.cjs +0 -2
- package/dist/form-CMsZo6Dm.cjs.map +0 -1
- package/dist/form-WU6DcQGD.js +0 -164
- package/dist/form-WU6DcQGD.js.map +0 -1
- package/dist/frameworkTexts-BSXUtXOp.cjs +0 -2
- package/dist/frameworkTexts-BSXUtXOp.cjs.map +0 -1
- package/dist/frameworkTexts-DP5RUl19.js +0 -131
- package/dist/frameworkTexts-DP5RUl19.js.map +0 -1
- package/dist/icons-CBMl-kOM.js.map +0 -1
- package/dist/icons-D3n9-919.cjs +0 -2
- package/dist/icons-D3n9-919.cjs.map +0 -1
- package/dist/inputs-B7rGMLMr.js +0 -1753
- package/dist/inputs-B7rGMLMr.js.map +0 -1
- package/dist/inputs-BiN62hgH.cjs +0 -2
- package/dist/inputs-BiN62hgH.cjs.map +0 -1
- package/dist/layout-BMggJ_qO.cjs +0 -2
- package/dist/layout-BMggJ_qO.cjs.map +0 -1
- package/dist/layout-DBYHyCTr.js +0 -883
- package/dist/layout-DBYHyCTr.js.map +0 -1
- package/dist/licensing-Be3g-PJt.cjs +0 -2
- package/dist/licensing-Be3g-PJt.cjs.map +0 -1
- package/dist/licensing-f5KYVz7D.js.map +0 -1
- package/dist/media-BPzMgzqE.js +0 -405
- package/dist/media-BPzMgzqE.js.map +0 -1
- package/dist/media-D63hxCAJ.cjs +0 -2
- package/dist/media-D63hxCAJ.cjs.map +0 -1
- package/dist/overlays-CCeYD6hT.js +0 -555
- package/dist/overlays-CCeYD6hT.js.map +0 -1
- package/dist/overlays-CsRN5OG8.cjs +0 -2
- package/dist/overlays-CsRN5OG8.cjs.map +0 -1
- package/dist/popoverStack--0r2oJCD.js +0 -44
- package/dist/popoverStack--0r2oJCD.js.map +0 -1
- package/dist/popoverStack-BmMk-VZJ.cjs +0 -2
- package/dist/popoverStack-BmMk-VZJ.cjs.map +0 -1
- package/dist/theme-CJuqObWL.cjs +0 -2
- package/dist/theme-CJuqObWL.cjs.map +0 -1
- package/dist/theme-DAOU1aPs.js.map +0 -1
- package/dist/useGhostText-DG0bzcao.js +0 -68
- package/dist/useGhostText-DG0bzcao.js.map +0 -1
- package/dist/useGhostText-mibV4s1-.cjs +0 -2
- package/dist/useGhostText-mibV4s1-.cjs.map +0 -1
- package/dist/useKeyboardNav-CCUoRMgm.cjs +0 -2
- package/dist/useKeyboardNav-CCUoRMgm.cjs.map +0 -1
- package/dist/useKeyboardNav-iEXOdEMB.js +0 -43
- package/dist/useKeyboardNav-iEXOdEMB.js.map +0 -1
- package/dist/useModalLayer-Bf4TcEz-.js +0 -58
- package/dist/useModalLayer-Bf4TcEz-.js.map +0 -1
- package/dist/useModalLayer-DxYhhgRO.cjs +0 -2
- package/dist/useModalLayer-DxYhhgRO.cjs.map +0 -1
- package/dist/utils/proActivationWarning.d.ts +0 -7
- package/dist/validators-B6yWdsu2.cjs +0 -2
- package/dist/validators-B6yWdsu2.cjs.map +0 -1
- package/dist/validators-DVYOtFnw.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlays-W0WW3fn7.js","names":[],"sources":["../src/components/overlays/MModal/MModal.tsx","../src/components/overlays/MSheet/MSheet.tsx","../src/components/overlays/MCommandPalette/MCommandPalette.tsx","../src/components/overlays/MDrawer/MDrawer.tsx","../src/components/overlays/MPopconfirm/MPopconfirm.tsx"],"sourcesContent":["import {useEffect, useId, useState, useRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport type {MModalProps} from './MModal.types'\nimport {MCard, MCardBody, MCardFooter, MCardHeader} from '../../cards'\nimport {MPortal} from '../../primitives'\nimport {cn} from '../../../utils/cn'\nimport {useModalLayer} from '../../../utils/useModalLayer'\nimport {lockBodyScroll} from '../scrollLock'\nimport './MModal.css'\n\nconst EXIT_DURATION = 540\n\n// Render blocking overlay content for dense details and mobile-friendly dialogs.\nexport function MModal({\n open,\n onClose,\n title,\n description,\n footer,\n size = 'md',\n closeOnBackdrop = true,\n closeOnEscape = true,\n className,\n children,\n ...rest\n}: MModalProps) {\n const titleId = useId()\n const [mounted, setMounted] = useState(false)\n const [closing, setClosing] = useState(false)\n const backdropRef = useRef<HTMLDivElement>(null)\n\n useModalLayer({active: open && mounted, containerRef: backdropRef, onEscape: closeOnEscape ? onClose : undefined})\n\n // Open → mount immediately\n useEffect(() => {\n if (open) {\n setMounted(true)\n setClosing(false)\n }\n }, [open])\n\n // Close → animate out, then unmount\n useEffect(() => {\n if (!open && mounted) {\n setClosing(true)\n const timer = setTimeout(() => {\n setMounted(false)\n setClosing(false)\n }, EXIT_DURATION)\n return () => clearTimeout(timer)\n }\n }, [open, mounted])\n\n useEffect(() => {\n if (!mounted) return\n return lockBodyScroll()\n }, [mounted])\n\n if (!mounted) return null\n\n const handleBackdropClick = (event: MouseEvent<HTMLDivElement>) => {\n if (!closeOnBackdrop) return\n if (event.target === event.currentTarget) onClose()\n }\n\n return (\n <MPortal>\n <div\n ref={backdropRef}\n className={cn('mineral-backdrop', 'modal-backdrop', closing && 'closing')}\n onMouseDown={handleBackdropClick}\n >\n <div className={'modal-shell'}>\n <MCard\n className={cn('modal', size, className)}\n role={'dialog'}\n aria-modal={'true'}\n aria-labelledby={title ? titleId : undefined}\n {...rest}\n >\n {(title || description) && (\n <MCardHeader>\n {title && (\n <div id={titleId} className={'modal-title'}>\n {title}\n </div>\n )}\n {description && <div className={'modal-description'}>{description}</div>}\n </MCardHeader>\n )}\n <MCardBody>{children}</MCardBody>\n {footer && <MCardFooter>{footer}</MCardFooter>}\n </MCard>\n </div>\n </div>\n </MPortal>\n )\n}\n","import {useEffect, useId, useRef, useState} from 'react'\nimport type {PointerEvent as ReactPointerEvent, MouseEvent} from 'react'\nimport type {MSheetProps, MSheetSize} from './MSheet.types'\nimport {MCard, MCardBody, MCardFooter, MCardHeader} from '../../cards'\nimport {MButton} from '../../controls'\nimport {MPortal} from '../../primitives'\nimport {MCloseIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport {useModalLayer} from '../../../utils/useModalLayer'\nimport {lockBodyScroll} from '../scrollLock'\nimport './MSheet.css'\nimport {useMCommonTexts} from '../../../i18n/frameworkTexts'\n\nconst EXIT_DURATION = 540\nconst CLOSE_DRAG_THRESHOLD = 72\n\nconst SHEET_HEIGHTS: Record<MSheetSize, string> = {\n sm: '32vh',\n md: '52vh',\n lg: '72vh',\n full: '92vh',\n}\n\nexport function MSheet({\n open,\n onClose,\n title,\n description,\n footer,\n size = 'md',\n closeOnBackdrop = true,\n closeOnEscape = true,\n className,\n children,\n style,\n ...rest\n}: MSheetProps) {\n const texts = useMCommonTexts()\n const titleId = useId()\n const [mounted, setMounted] = useState(false)\n const [closing, setClosing] = useState(false)\n const [dragOffset, setDragOffset] = useState(0)\n\n const dragStateRef = useRef<{pointerId: number; startY: number} | null>(null)\n const dragOffsetRef = useRef(0)\n const backdropRef = useRef<HTMLDivElement>(null)\n\n useModalLayer({active: open && mounted, containerRef: backdropRef, onEscape: closeOnEscape ? onClose : undefined})\n\n useEffect(() => {\n if (open) {\n setMounted(true)\n setClosing(false)\n setDragOffset(0)\n dragOffsetRef.current = 0\n }\n }, [open])\n\n useEffect(() => {\n if (!open && mounted) {\n setClosing(true)\n const timer = window.setTimeout(() => {\n setMounted(false)\n setClosing(false)\n }, EXIT_DURATION)\n return () => window.clearTimeout(timer)\n }\n }, [open, mounted])\n\n useEffect(() => {\n if (!mounted) return\n return lockBodyScroll()\n }, [mounted])\n\n function handleBackdropClick(event: MouseEvent<HTMLDivElement>) {\n if (closeOnBackdrop && event.target === event.currentTarget) {\n onClose()\n }\n }\n\n function handleHandlePointerDown(event: ReactPointerEvent<HTMLButtonElement>) {\n event.preventDefault()\n event.currentTarget.setPointerCapture(event.pointerId)\n\n dragStateRef.current = {\n pointerId: event.pointerId,\n startY: event.clientY,\n }\n setDragOffset(0)\n dragOffsetRef.current = 0\n }\n\n function handleHandlePointerMove(event: ReactPointerEvent<HTMLButtonElement>) {\n const dragState = dragStateRef.current\n if (!dragState || dragState.pointerId !== event.pointerId) {\n return\n }\n\n const nextOffset = Math.max(event.clientY - dragState.startY, 0)\n dragOffsetRef.current = nextOffset\n setDragOffset(nextOffset)\n }\n\n function finishDrag(pointerId: number) {\n const dragState = dragStateRef.current\n if (!dragState || dragState.pointerId !== pointerId) {\n return\n }\n\n dragStateRef.current = null\n\n if (dragOffsetRef.current > CLOSE_DRAG_THRESHOLD) {\n setDragOffset(0)\n dragOffsetRef.current = 0\n onClose()\n return\n }\n\n setDragOffset(0)\n dragOffsetRef.current = 0\n }\n\n if (!mounted) return null\n\n const resolvedHeight = SHEET_HEIGHTS[size]\n const transformStyle = dragOffset > 0 ? `translateY(${dragOffset}px)` : undefined\n\n return (\n <MPortal>\n <div\n ref={backdropRef}\n className={cn('mineral-backdrop', 'sheet-backdrop', closing && 'closing')}\n onMouseDown={handleBackdropClick}\n >\n <div className=\"sheet-shell\" style={{transform: transformStyle}}>\n <MCard\n className={cn('sheet', `size-${size}`, className)}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? titleId : undefined}\n style={{\n ...style,\n height: size === 'full' ? resolvedHeight : undefined,\n maxHeight: resolvedHeight,\n }}\n {...rest}\n >\n <button\n type=\"button\"\n className=\"sheet-grabber\"\n onPointerDown={handleHandlePointerDown}\n onPointerMove={handleHandlePointerMove}\n onPointerUp={(event) => finishDrag(event.pointerId)}\n onPointerCancel={(event) => finishDrag(event.pointerId)}\n // Enter / Space on the grabber produce a click with `detail === 0`;\n // keyboard users get the same \"close\" the drag gesture offers.\n // Pointer clicks (detail >= 1) stay drag-only.\n onClick={(event) => {\n if (event.detail === 0) onClose()\n }}\n aria-label={texts.dragToClose}\n >\n <span className=\"sheet-handle\" />\n </button>\n\n {(title || description) && (\n <MCardHeader className=\"sheet-header\">\n <div className=\"sheet-copy\">\n {title && (\n <div id={titleId} className=\"sheet-title\">\n {title}\n </div>\n )}\n {description && <div className=\"sheet-description\">{description}</div>}\n </div>\n <MButton\n variant=\"link\"\n color=\"neutral\"\n iconOnly\n size=\"sm\"\n onClick={onClose}\n aria-label={texts.close}\n className=\"sheet-close\"\n >\n <MCloseIcon />\n </MButton>\n </MCardHeader>\n )}\n\n <MCardBody className=\"sheet-body\">{children}</MCardBody>\n\n {footer && <MCardFooter className=\"sheet-footer\">{footer}</MCardFooter>}\n </MCard>\n </div>\n </div>\n </MPortal>\n )\n}\n","import {useEffect, useId, useMemo, useRef, useState} from 'react'\nimport type {KeyboardEvent as ReactKeyboardEvent, ReactNode} from 'react'\nimport type {MCommandPaletteItem, MCommandPaletteProps} from './MCommandPalette.types'\nimport {MButton} from '../../controls'\nimport {MInputSearch} from '../../inputs'\nimport {MCard, MCardBody, MCardHeader} from '../../cards'\nimport {MInline, MSimpleGrid, MStack} from '../../layout'\nimport {MSheet} from '../MSheet'\nimport {MTooltip} from '../MTooltip'\nimport {MBadge} from '../../feedback'\nimport {MLinkIcon, MSearchIcon} from '../../../icons'\nimport {MKbd, MHeading, MText} from '../../typography'\nimport {cn} from '../../../utils/cn'\nimport {useKeyboardNav} from '../../../utils/useKeyboardNav'\nimport {formatMText, useMCommandPaletteTexts} from '../../../i18n/frameworkTexts'\nimport './MCommandPalette.css'\n\nfunction normalizeText(value: ReactNode) {\n if (typeof value === 'string' || typeof value === 'number') {\n return value.toString()\n }\n\n return ''\n}\n\nfunction matchesShortcut(event: KeyboardEvent, shortcut: string) {\n const normalized = shortcut.toLowerCase().replace(/\\s+/g, '')\n const parts = normalized.split('+')\n const key = parts[parts.length - 1]\n\n if (!key) {\n return false\n }\n\n const expectsCtrl = parts.includes('ctrl')\n const expectsMeta = parts.includes('meta') || parts.includes('cmd')\n const expectsShift = parts.includes('shift')\n const expectsAlt = parts.includes('alt') || parts.includes('option')\n\n return (\n event.key.toLowerCase() === key &&\n !!expectsCtrl === event.ctrlKey &&\n !!expectsMeta === event.metaKey &&\n !!expectsShift === event.shiftKey &&\n !!expectsAlt === event.altKey\n )\n}\n\nfunction filterItems(items: MCommandPaletteItem[], query: string) {\n if (!query.trim()) {\n return items\n }\n\n const normalizedQuery = query.trim().toLowerCase()\n\n return items.filter((item) =>\n [\n normalizeText(item.title),\n normalizeText(item.description),\n normalizeText(item.group),\n normalizeText(item.actionLabel),\n ...(item.keywords ?? []),\n ].some((value) => value.toLowerCase().includes(normalizedQuery))\n )\n}\n\nfunction groupItems(items: MCommandPaletteItem[], generalLabel: string) {\n const groups = new Map<string, {label: ReactNode; items: MCommandPaletteItem[]}>()\n\n items.forEach((item) => {\n const key = normalizeText(item.group) || 'General'\n const current = groups.get(key) ?? {label: item.group ?? generalLabel, items: []}\n current.items.push(item)\n groups.set(key, current)\n })\n\n return Array.from(groups.values())\n}\n\nexport function MCommandPalette({\n items,\n featuredItems = [],\n open,\n defaultOpen = false,\n onOpenChange,\n onSelect,\n title: titleProp,\n description,\n trigger,\n shortcut = 'ctrl+k',\n placeholder: placeholderProp,\n emptyLabel: emptyLabelProp,\n footer,\n size = 'lg',\n closeOnSelect = true,\n}: MCommandPaletteProps) {\n const texts = useMCommandPaletteTexts()\n const title = titleProp ?? texts.title\n const placeholder = placeholderProp ?? texts.placeholder\n const emptyLabel = emptyLabelProp ?? texts.empty\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [query, setQuery] = useState('')\n const isControlled = open !== undefined\n const isOpen = isControlled ? open : internalOpen\n const inputRef = useRef<HTMLInputElement>(null)\n const baseId = useId()\n const listboxId = `${baseId}-listbox`\n\n function setOpenState(nextOpen: boolean) {\n if (!isControlled) {\n setInternalOpen(nextOpen)\n }\n\n onOpenChange?.(nextOpen)\n }\n\n const filteredItems = useMemo(() => filterItems(items, query), [items, query])\n const groupedItems = useMemo(\n () => groupItems(filteredItems, texts.generalGroup),\n [filteredItems, texts.generalGroup]\n )\n const flattenedItems = useMemo(() => groupedItems.flatMap((group) => group.items), [groupedItems])\n const featured = useMemo(() => (featuredItems.length ? featuredItems : items.slice(0, 6)), [featuredItems, items])\n\n function executeItem(item: MCommandPaletteItem) {\n item.onSelect?.()\n onSelect?.(item)\n\n if (!item.onSelect && item.href) {\n window.location.assign(item.href)\n }\n\n if (closeOnSelect) {\n setOpenState(false)\n setQuery('')\n resetIndex()\n }\n }\n\n // APG combobox: focus stays in the search field, the highlighted option is exposed\n // through aria-activedescendant.\n const {activeIndex, setActiveIndex, resetIndex, onKeyDown, activeDescendantId, getItemProps} = useKeyboardNav({\n itemCount: flattenedItems.length,\n isOpen,\n mode: 'activedescendant',\n onClose: () => setOpenState(false),\n onSelect: (index) => {\n const item = flattenedItems[index]\n\n if (item) {\n executeItem(item)\n }\n },\n })\n\n useEffect(() => {\n const handleKeydown = (event: KeyboardEvent) => {\n if (matchesShortcut(event, shortcut)) {\n event.preventDefault()\n setOpenState(true)\n }\n }\n\n window.addEventListener('keydown', handleKeydown)\n\n return () => {\n window.removeEventListener('keydown', handleKeydown)\n }\n }, [shortcut])\n\n useEffect(() => {\n if (!isOpen) {\n resetIndex()\n return\n }\n\n queueMicrotask(() => inputRef.current?.focus())\n }, [isOpen, resetIndex])\n\n const activeItemId = flattenedItems[activeIndex]?.id ?? null\n\n function handleSearchKeyDown(event: ReactKeyboardEvent<HTMLInputElement>) {\n // Home / End keep moving the caret inside the text field (APG combobox).\n if (event.key === 'Home' || event.key === 'End') return\n onKeyDown(event)\n }\n\n const hasResults = groupedItems.length > 0\n\n return (\n <>\n {trigger ?? (\n <MButton\n variant={'filled'}\n size={'sm'}\n color={'primary'}\n iconOnly\n startIcon={<MSearchIcon />}\n aria-label={typeof title === 'string' ? title : texts.open}\n onClick={() => setOpenState(true)}\n />\n )}\n\n <MSheet\n open={isOpen}\n onClose={() => setOpenState(false)}\n title={title}\n description={description}\n size={size}\n footer={footer}\n >\n <div className=\"command-palette-body\">\n <div className=\"command-palette-search\">\n <MInputSearch\n ref={inputRef}\n value={query}\n onChange={(event) => {\n setQuery(event.target.value)\n setActiveIndex(-1)\n }}\n onKeyDown={handleSearchKeyDown}\n placeholder={placeholder}\n clearable\n fullWidth\n inputProps={{\n role: 'combobox',\n 'aria-label': texts.searchLabel,\n 'aria-autocomplete': 'list',\n 'aria-expanded': hasResults,\n 'aria-controls': hasResults ? listboxId : undefined,\n 'aria-activedescendant': activeDescendantId,\n }}\n />\n <span className=\"command-palette-sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {query.trim() ? formatMText(texts.resultsAnnouncement, {count: flattenedItems.length}) : ''}\n </span>\n </div>\n\n <div className=\"command-palette-grid\">\n <MCard stretch={false}>\n <MCardHeader>\n <MHeading level={4}>{texts.featured}</MHeading>\n <MText size={'sm'} tone={'muted'}>\n {texts.featuredDescription}\n </MText>\n </MCardHeader>\n <MCardBody>\n <MSimpleGrid columns={4}>\n {featured.map((item) => {\n const label = item.actionLabel ?? item.title\n const ariaLabel = typeof label === 'string' ? label : normalizeText(label)\n\n return (\n <MTooltip key={item.id} content={label}>\n <MButton\n variant={'ghost'}\n color={'primary'}\n component={item.component}\n to={item.to}\n href={item.href}\n target={item.target}\n rel={item.rel}\n startIcon={item.icon ?? <MLinkIcon />}\n iconOnly\n aria-label={ariaLabel || undefined}\n onClick={() => executeItem(item)}\n />\n </MTooltip>\n )\n })}\n </MSimpleGrid>\n </MCardBody>\n </MCard>\n\n <MCard stretch={false}>\n <MCardHeader>\n <MHeading level={4}>{texts.results}</MHeading>\n <MInline align={'center'} padding={'xs'}>\n <MText size={'sm'} tone={'muted'}>\n {formatMText(texts.resultsCount, {count: flattenedItems.length})}\n </MText>\n <MKbd>{shortcut.toUpperCase()}</MKbd>\n </MInline>\n </MCardHeader>\n <MCardBody>\n {hasResults ? (\n <MStack\n padding={'xs'}\n className=\"command-palette-results\"\n id={listboxId}\n role=\"listbox\"\n aria-label={texts.results}\n >\n {groupedItems.map((group, groupIndex) => (\n <MStack\n key={normalizeText(group.label) || 'general'}\n padding={'xs'}\n role=\"group\"\n aria-labelledby={`${listboxId}-group-${groupIndex}`}\n >\n <MText\n size={'sm'}\n tone={'muted'}\n id={`${listboxId}-group-${groupIndex}`}\n role=\"presentation\"\n >\n {group.label}\n </MText>\n {group.items.map((item) => {\n const index = flattenedItems.indexOf(item)\n const {id: optionId, ref: optionRef} = getItemProps(index)\n\n return (\n <button\n key={item.id}\n id={optionId}\n ref={optionRef}\n type=\"button\"\n role=\"option\"\n aria-selected={activeItemId === item.id}\n tabIndex={-1}\n className={cn(\n 'command-palette-item',\n activeItemId === item.id && 'active'\n )}\n // Keep focus in the search field so typing and arrows keep working.\n onMouseDown={(event) => event.preventDefault()}\n onMouseEnter={() => setActiveIndex(index)}\n onClick={() => executeItem(item)}\n >\n <span className=\"command-palette-item-icon\">\n {item.icon ?? <MLinkIcon />}\n </span>\n <span className=\"command-palette-item-copy\">\n <span className=\"command-palette-item-title\">\n {item.title}\n </span>\n {item.description && (\n <span className=\"command-palette-item-description\">\n {item.description}\n </span>\n )}\n </span>\n {item.badge && (\n <span className=\"command-palette-item-badge\">\n <MBadge color={'primary'} size={'sm'}>\n {item.badge}\n </MBadge>\n </span>\n )}\n </button>\n )\n })}\n </MStack>\n ))}\n </MStack>\n ) : (\n <MText tone={'muted'}>{emptyLabel}</MText>\n )}\n </MCardBody>\n </MCard>\n </div>\n </div>\n </MSheet>\n </>\n )\n}\n","import {Children, isValidElement, useEffect, useId, useState, useRef} from 'react'\nimport type {MouseEvent, ReactElement, ReactNode} from 'react'\nimport type {MDrawerProps, MDrawerSectionProps} from './MDrawer.types'\nimport {MPortal} from '../../primitives'\nimport {MButton} from '../../controls'\nimport {MCloseIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport {useModalLayer} from '../../../utils/useModalLayer'\nimport {lockBodyScroll} from '../scrollLock'\nimport './MDrawer.css'\nimport {useMCommonTexts} from '../../../i18n/frameworkTexts'\n\nconst EXIT_DURATION = 600\n\ntype DrawerSlotElement = ReactElement<MDrawerSectionProps>\n\nfunction isDrawerHeader(child: ReactNode): child is DrawerSlotElement {\n return isValidElement(child) && !!(child.type as any).__drawerHeader\n}\n\nfunction isDrawerBody(child: ReactNode): child is DrawerSlotElement {\n return isValidElement(child) && !!(child.type as any).__drawerBody\n}\n\nfunction isDrawerFooter(child: ReactNode): child is DrawerSlotElement {\n return isValidElement(child) && !!(child.type as any).__drawerFooter\n}\n\nexport function MDrawerHeader({children}: MDrawerSectionProps) {\n return <>{children}</>\n}\n;(MDrawerHeader as any).__drawerHeader = true\n\nexport function MDrawerBody({children}: MDrawerSectionProps) {\n return <>{children}</>\n}\n;(MDrawerBody as any).__drawerBody = true\n\nexport function MDrawerFooter({children}: MDrawerSectionProps) {\n return <>{children}</>\n}\n;(MDrawerFooter as any).__drawerFooter = true\n\nexport function MDrawer({\n open,\n onClose,\n side = 'right',\n size = 'md',\n overlay = true,\n closeOnBackdrop = true,\n closeOnEscape = true,\n className,\n children,\n ...rest\n}: MDrawerProps) {\n const texts = useMCommonTexts()\n const [mounted, setMounted] = useState(false)\n const [closing, setClosing] = useState(false)\n const backdropRef = useRef<HTMLDivElement>(null)\n const drawerRef = useRef<HTMLDivElement>(null)\n const titleId = useId()\n\n useModalLayer({active: open && mounted, containerRef: backdropRef, onEscape: closeOnEscape ? onClose : undefined})\n\n useEffect(() => {\n if (open) {\n setMounted(true)\n setClosing(false)\n }\n }, [open])\n\n useEffect(() => {\n if (!open && mounted) {\n setClosing(true)\n const timer = setTimeout(() => {\n setMounted(false)\n setClosing(false)\n }, EXIT_DURATION)\n return () => clearTimeout(timer)\n }\n }, [open, mounted])\n\n // A drawer without an overlay is non-modal: the page beside it stays usable,\n // so it neither locks scrolling nor blocks clicks.\n useEffect(() => {\n if (!mounted || !overlay) return\n return lockBodyScroll()\n }, [mounted, overlay])\n\n // Without an overlay the backdrop lets clicks through (`pointer-events: none`),\n // so \"click outside closes\" is detected on the document instead.\n const onCloseRef = useRef(onClose)\n useEffect(() => {\n onCloseRef.current = onClose\n }, [onClose])\n useEffect(() => {\n if (!open || !mounted || overlay || !closeOnBackdrop) return\n\n const handlePointerDown = (event: globalThis.MouseEvent) => {\n const target = event.target\n if (!(target instanceof Element)) return\n if (drawerRef.current?.contains(target)) return\n // Popovers, menus and other overlays opened from the drawer portal outside it.\n if (target.closest('.popover, .mineral-backdrop')) return\n onCloseRef.current()\n }\n\n document.addEventListener('mousedown', handlePointerDown)\n return () => document.removeEventListener('mousedown', handlePointerDown)\n }, [open, mounted, overlay, closeOnBackdrop])\n\n if (!mounted) return null\n\n const handleBackdropClick = (e: MouseEvent<HTMLDivElement>) => {\n if (closeOnBackdrop && e.target === e.currentTarget) onClose()\n }\n\n let header: ReactNode = null\n let headerProps: MDrawerSectionProps | null = null\n let bodyProps: MDrawerSectionProps | null = null\n let footer: ReactNode = null\n let footerProps: MDrawerSectionProps | null = null\n const body: ReactNode[] = []\n\n Children.forEach(children, (child) => {\n if (isDrawerHeader(child)) {\n header = child.props.children\n headerProps = child.props\n return\n }\n\n if (isDrawerBody(child)) {\n bodyProps = child.props\n body.push(child.props.children)\n return\n }\n\n if (isDrawerFooter(child)) {\n footer = child.props.children\n footerProps = child.props\n return\n }\n\n body.push(child)\n })\n\n const headerSection = headerProps ?? ({children: undefined} as MDrawerSectionProps)\n const bodySection = bodyProps ?? ({children: undefined} as MDrawerSectionProps)\n const footerSection = footerProps ?? ({children: undefined} as MDrawerSectionProps)\n const {\n children: _headerChildren,\n className: headerClassName,\n bordered: headerBordered = false,\n ...headerRest\n } = headerSection\n const {children: _bodyChildren, className: bodyClassName, ...bodyRest} = bodySection\n const {\n children: _footerChildren,\n className: footerClassName,\n bordered: footerBordered = false,\n ...footerRest\n } = footerSection\n\n return (\n <MPortal>\n <div\n ref={backdropRef}\n className={cn('mineral-backdrop', 'drawer-backdrop', !overlay && 'no-overlay', closing && 'closing')}\n onMouseDown={handleBackdropClick}\n >\n <div\n ref={drawerRef}\n className={cn('drawer', side, size, className)}\n role=\"dialog\"\n aria-modal={overlay ? 'true' : undefined}\n aria-labelledby={header ? titleId : undefined}\n {...rest}\n >\n {header && (\n <div\n {...headerRest}\n className={cn('drawer-header', headerBordered && 'bordered', headerClassName)}\n >\n <div id={titleId} className=\"drawer-title\">\n {header}\n </div>\n <MButton\n variant=\"link\"\n color=\"neutral\"\n iconOnly\n size=\"sm\"\n onClick={onClose}\n aria-label={texts.close}\n className=\"close\"\n >\n <MCloseIcon />\n </MButton>\n </div>\n )}\n <div {...bodyRest} className={cn('drawer-body', bodyClassName)}>\n {body}\n </div>\n {footer && (\n <div\n {...footerRest}\n className={cn('drawer-footer', footerBordered && 'bordered', footerClassName)}\n >\n {footer}\n </div>\n )}\n </div>\n </div>\n </MPortal>\n )\n}\n","import {useCallback, useId, useRef} from 'react'\nimport type {KeyboardEvent as ReactKeyboardEvent} from 'react'\nimport type {MPopconfirmProps} from './MPopconfirm.types'\nimport {MPopover} from '../../primitives'\nimport {MButton} from '../../controls'\nimport {cn} from '../../../utils/cn'\nimport {getTabbable} from '../../../utils/useModalLayer'\nimport {useMPopconfirmTexts} from '../../../i18n/frameworkTexts'\nimport './MPopconfirm.css'\n\nexport function MPopconfirm({\n title,\n description,\n onConfirm,\n onCancel,\n confirmText: confirmTextProp,\n cancelText: cancelTextProp,\n color = 'warning',\n icon,\n placement = 'top-start',\n open,\n onOpenChange,\n anchorRef,\n className,\n}: MPopconfirmProps) {\n const texts = useMPopconfirmTexts()\n const confirmText = confirmTextProp ?? texts.confirm\n const cancelText = cancelTextProp ?? texts.cancel\n const baseId = useId()\n const titleId = `${baseId}-title`\n const descriptionId = `${baseId}-description`\n // APG alertdialog: focus starts on the least destructive action.\n const cancelRef = useRef<HTMLElement>(null)\n\n const handleCancel = useCallback(() => {\n onOpenChange(false)\n onCancel?.()\n }, [onOpenChange, onCancel])\n\n const handleConfirm = useCallback(() => {\n onOpenChange(false)\n onConfirm()\n }, [onOpenChange, onConfirm])\n\n // Keep Tab / Shift+Tab cycling inside the confirmation while it is open.\n const handleKeyDown = useCallback((e: ReactKeyboardEvent<HTMLDivElement>) => {\n if (e.key !== 'Tab') return\n const layer = e.currentTarget.closest<HTMLElement>('.popconfirm')\n if (!layer) return\n const focusable = getTabbable(layer)\n if (focusable.length === 0) return\n const first = focusable[0]\n const last = focusable[focusable.length - 1]\n const active = document.activeElement\n if (e.shiftKey && (active === first || active === layer)) {\n e.preventDefault()\n last.focus()\n } else if (!e.shiftKey && active === last) {\n e.preventDefault()\n first.focus()\n }\n }, [])\n\n return (\n <MPopover\n open={open}\n anchorRef={anchorRef}\n onClose={handleCancel}\n placement={placement}\n className={cn('popconfirm', `color-${color}`, className)}\n role=\"alertdialog\"\n aria-labelledby={titleId}\n aria-describedby={description ? descriptionId : undefined}\n initialFocus={cancelRef}\n >\n <div className=\"body\" onKeyDown={handleKeyDown}>\n {icon && <div className=\"icon\">{icon}</div>}\n <div className=\"content\">\n <div id={titleId} className=\"title\">\n {title}\n </div>\n {description && (\n <div id={descriptionId} className=\"description\">\n {description}\n </div>\n )}\n </div>\n </div>\n <div className=\"actions\" onKeyDown={handleKeyDown}>\n <MButton ref={cancelRef} variant=\"ghost\" size=\"sm\" color=\"neutral\" onClick={handleCancel}>\n {cancelText}\n </MButton>\n <MButton variant=\"ghost\" size=\"sm\" color={color} onClick={handleConfirm}>\n {confirmText}\n </MButton>\n </div>\n </MPopover>\n )\n}\n"],"mappings":"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"}
|
package/dist/overlays.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(`./overlays-
|
|
3
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./overlays-Df-NpmkW.cjs`),t=require(`./MTooltip-Cj2Fxmzc.cjs`),n=require(`./MDropdownMenu-C4-r7UZM.cjs`);exports.MCommandPalette=e.o,exports.MDrawer=e.n,exports.MDrawerBody=e.r,exports.MDrawerFooter=e.i,exports.MDrawerHeader=e.a,exports.MDropdownDivider=n.t,exports.MDropdownGroup=n.n,exports.MDropdownItem=n.r,exports.MDropdownMenu=n.i,exports.MModal=e.c,exports.MPopconfirm=e.t,exports.MSheet=e.s,exports.MTooltip=t.t;
|
package/dist/overlays.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {ensureStyles} from './style-runtime.js'
|
|
2
2
|
ensureStyles()
|
|
3
|
-
import { a as e, c as t, i as n, n as r, o as i, r as a, s as o, t as s } from "./overlays-
|
|
4
|
-
import { t as c } from "./MTooltip-
|
|
5
|
-
import { i as l, n as u, r as d, t as f } from "./MDropdownMenu-
|
|
3
|
+
import { a as e, c as t, i as n, n as r, o as i, r as a, s as o, t as s } from "./overlays-W0WW3fn7.js";
|
|
4
|
+
import { t as c } from "./MTooltip-BRSPJ3RY.js";
|
|
5
|
+
import { i as l, n as u, r as d, t as f } from "./MDropdownMenu-Dvg9UsHB.js";
|
|
6
6
|
export { i as MCommandPalette, r as MDrawer, a as MDrawerBody, n as MDrawerFooter, e as MDrawerHeader, f as MDropdownDivider, u as MDropdownGroup, d as MDropdownItem, l as MDropdownMenu, t as MModal, s as MPopconfirm, o as MSheet, c as MTooltip };
|
package/dist/primitives.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(`./
|
|
3
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./useModalLayer-Cyt93Prs.cjs`),t=require(`./MPopover-ZeoU9hb5.cjs`);exports.MPopover=t.t,exports.MPortal=e.c;
|
package/dist/primitives.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {ensureStyles} from './style-runtime.js'
|
|
2
2
|
ensureStyles()
|
|
3
|
-
import {
|
|
4
|
-
import { t } from "./MPopover-
|
|
3
|
+
import { c as e } from "./useModalLayer-CpOPSDbf.js";
|
|
4
|
+
import { t } from "./MPopover-CBDbUOW6.js";
|
|
5
5
|
export { t as MPopover, e as MPortal };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
//#region src/utils/radioGroupKeys.ts
|
|
2
|
+
function e(e, t, n, r = !1) {
|
|
3
|
+
if (n <= 0) return null;
|
|
4
|
+
let i = e;
|
|
5
|
+
switch (r && e === "ArrowRight" ? i = "ArrowLeft" : r && e === "ArrowLeft" && (i = "ArrowRight"), i) {
|
|
6
|
+
case "ArrowRight":
|
|
7
|
+
case "ArrowDown": return t < 0 ? 0 : (t + 1) % n;
|
|
8
|
+
case "ArrowLeft":
|
|
9
|
+
case "ArrowUp": return t < 0 ? n - 1 : (t - 1 + n) % n;
|
|
10
|
+
case "Home": return 0;
|
|
11
|
+
case "End": return n - 1;
|
|
12
|
+
default: return null;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function t(e) {
|
|
16
|
+
if (!e || typeof window > "u") return !1;
|
|
17
|
+
let t = e.closest("[dir]");
|
|
18
|
+
if (t) return t.getAttribute("dir")?.toLowerCase() === "rtl";
|
|
19
|
+
try {
|
|
20
|
+
return window.getComputedStyle(e).direction === "rtl";
|
|
21
|
+
} catch {
|
|
22
|
+
return !1;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { t as n, e as t };
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=radioGroupKeys-Bm-Qeh8G.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radioGroupKeys-Bm-Qeh8G.js","names":[],"sources":["../src/utils/radioGroupKeys.ts"],"sourcesContent":["/**\n * Arrow-key target for an APG radio group (roving tabindex, selection follows focus).\n * ArrowRight / ArrowDown move forward, ArrowLeft / ArrowUp move back, both wrap; Home / End jump\n * to the ends. In right-to-left layouts ArrowLeft / ArrowRight are flipped. Returns `null` for\n * keys the group does not handle. Internal helper, not re-exported.\n */\nexport function getRadioGroupTarget(key: string, index: number, count: number, rtl = false): number | null {\n if (count <= 0) return null\n let effective = key\n if (rtl && key === 'ArrowRight') effective = 'ArrowLeft'\n else if (rtl && key === 'ArrowLeft') effective = 'ArrowRight'\n\n switch (effective) {\n case 'ArrowRight':\n case 'ArrowDown':\n return index < 0 ? 0 : (index + 1) % count\n case 'ArrowLeft':\n case 'ArrowUp':\n return index < 0 ? count - 1 : (index - 1 + count) % count\n case 'Home':\n return 0\n case 'End':\n return count - 1\n default:\n return null\n }\n}\n\n/** True when the element is laid out right-to-left. */\nexport function isRtlElement(element: Element | null): boolean {\n if (!element || typeof window === 'undefined') return false\n const dirHost = element.closest('[dir]')\n if (dirHost) return dirHost.getAttribute('dir')?.toLowerCase() === 'rtl'\n try {\n return window.getComputedStyle(element).direction === 'rtl'\n } catch {\n return false\n }\n}\n"],"mappings":";AAMA,SAAgB,EAAoB,GAAa,GAAe,GAAe,IAAM,IAAsB;AACvG,KAAI,KAAS,EAAG,QAAO;CACvB,IAAI,IAAY;AAIhB,SAHI,KAAO,MAAQ,eAAc,IAAY,cACpC,KAAO,MAAQ,gBAAa,IAAY,eAEzC,GAAR;EACI,KAAK;EACL,KAAK,YACD,QAAO,IAAQ,IAAI,KAAK,IAAQ,KAAK;EACzC,KAAK;EACL,KAAK,UACD,QAAO,IAAQ,IAAI,IAAQ,KAAK,IAAQ,IAAI,KAAS;EACzD,KAAK,OACD,QAAO;EACX,KAAK,MACD,QAAO,IAAQ;EACnB,QACI,QAAO;;;AAKnB,SAAgB,EAAa,GAAkC;AAC3D,KAAI,CAAC,KAAW,OAAO,SAAW,IAAa,QAAO;CACtD,IAAM,IAAU,EAAQ,QAAQ,QAAQ;AACxC,KAAI,EAAS,QAAO,EAAQ,aAAa,MAAM,EAAE,aAAa,KAAK;AACnE,KAAI;AACA,SAAO,OAAO,iBAAiB,EAAQ,CAAC,cAAc;SAClD;AACJ,SAAO"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function e(e,t,n,r=!1){if(n<=0)return null;let i=e;switch(r&&e===`ArrowRight`?i=`ArrowLeft`:r&&e===`ArrowLeft`&&(i=`ArrowRight`),i){case`ArrowRight`:case`ArrowDown`:return t<0?0:(t+1)%n;case`ArrowLeft`:case`ArrowUp`:return t<0?n-1:(t-1+n)%n;case`Home`:return 0;case`End`:return n-1;default:return null}}function t(e){if(!e||typeof window>`u`)return!1;let t=e.closest(`[dir]`);if(t)return t.getAttribute(`dir`)?.toLowerCase()===`rtl`;try{return window.getComputedStyle(e).direction===`rtl`}catch{return!1}}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return e}});
|
|
2
|
+
//# sourceMappingURL=radioGroupKeys-COL8uXbH.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radioGroupKeys-COL8uXbH.cjs","names":[],"sources":["../src/utils/radioGroupKeys.ts"],"sourcesContent":["/**\n * Arrow-key target for an APG radio group (roving tabindex, selection follows focus).\n * ArrowRight / ArrowDown move forward, ArrowLeft / ArrowUp move back, both wrap; Home / End jump\n * to the ends. In right-to-left layouts ArrowLeft / ArrowRight are flipped. Returns `null` for\n * keys the group does not handle. Internal helper, not re-exported.\n */\nexport function getRadioGroupTarget(key: string, index: number, count: number, rtl = false): number | null {\n if (count <= 0) return null\n let effective = key\n if (rtl && key === 'ArrowRight') effective = 'ArrowLeft'\n else if (rtl && key === 'ArrowLeft') effective = 'ArrowRight'\n\n switch (effective) {\n case 'ArrowRight':\n case 'ArrowDown':\n return index < 0 ? 0 : (index + 1) % count\n case 'ArrowLeft':\n case 'ArrowUp':\n return index < 0 ? count - 1 : (index - 1 + count) % count\n case 'Home':\n return 0\n case 'End':\n return count - 1\n default:\n return null\n }\n}\n\n/** True when the element is laid out right-to-left. */\nexport function isRtlElement(element: Element | null): boolean {\n if (!element || typeof window === 'undefined') return false\n const dirHost = element.closest('[dir]')\n if (dirHost) return dirHost.getAttribute('dir')?.toLowerCase() === 'rtl'\n try {\n return window.getComputedStyle(element).direction === 'rtl'\n } catch {\n return false\n }\n}\n"],"mappings":"AAMA,SAAgB,EAAoB,EAAa,EAAe,EAAe,EAAM,GAAsB,CACvG,GAAI,GAAS,EAAG,OAAO,KACvB,IAAI,EAAY,EAIhB,OAHI,GAAO,IAAQ,aAAc,EAAY,YACpC,GAAO,IAAQ,cAAa,EAAY,cAEzC,EAAR,CACI,IAAK,aACL,IAAK,YACD,OAAO,EAAQ,EAAI,GAAK,EAAQ,GAAK,EACzC,IAAK,YACL,IAAK,UACD,OAAO,EAAQ,EAAI,EAAQ,GAAK,EAAQ,EAAI,GAAS,EACzD,IAAK,OACD,MAAO,GACX,IAAK,MACD,OAAO,EAAQ,EACnB,QACI,OAAO,MAKnB,SAAgB,EAAa,EAAkC,CAC3D,GAAI,CAAC,GAAW,OAAO,OAAW,IAAa,MAAO,GACtD,IAAM,EAAU,EAAQ,QAAQ,QAAQ,CACxC,GAAI,EAAS,OAAO,EAAQ,aAAa,MAAM,EAAE,aAAa,GAAK,MACnE,GAAI,CACA,OAAO,OAAO,iBAAiB,EAAQ,CAAC,YAAc,WAClD,CACJ,MAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relativeTime-
|
|
1
|
+
{"version":3,"file":"relativeTime-BqCuaBqb.js","names":[],"sources":["../src/utils/relativeTime.ts"],"sourcesContent":["export type RelativeTimeUnit = Intl.RelativeTimeFormatUnit\n\nexport type RelativeTimeFallbackFormat = 'date' | 'datetime'\n\nexport interface RelativeTimeValue {\n value: number\n unit: RelativeTimeUnit\n}\n\nexport interface FormatRelativeTimeOptions {\n locale?: string\n now?: Date | number\n}\n\nconst SECOND = 1000\nconst MINUTE = 60 * SECOND\nconst HOUR = 60 * MINUTE\nconst DAY = 24 * HOUR\nconst WEEK = 7 * DAY\nconst MONTH = Math.round(30.44 * DAY)\nconst YEAR = Math.round(365.25 * DAY)\n\nconst thresholdMap = {\n s: SECOND,\n m: MINUTE,\n h: HOUR,\n d: DAY,\n w: WEEK,\n mo: MONTH,\n y: YEAR,\n} as const\n\nexport function toDate(value: Date | string | number): Date | null {\n const date = value instanceof Date ? value : new Date(value)\n return Number.isNaN(date.getTime()) ? null : date\n}\n\nexport function parseRelativeThreshold(value?: string | number | null): number | null {\n if (value == null) return null\n if (typeof value === 'number') return value >= 0 ? value : null\n\n const match = value.trim().match(/^(\\d+)\\s*(mo|[smhdwy])$/i)\n if (!match) return null\n\n const amount = Number(match[1])\n const unit = match[2].toLowerCase() as keyof typeof thresholdMap\n\n return amount * thresholdMap[unit]\n}\n\nexport function getRelativeTimeValue(\n value: Date | string | number,\n now: Date | number = Date.now()\n): RelativeTimeValue | null {\n const date = toDate(value)\n const current = toDate(now)\n\n if (!date || !current) return null\n\n const diff = date.getTime() - current.getTime()\n const abs = Math.abs(diff)\n\n if (abs < MINUTE) {\n return {value: Math.round(diff / SECOND), unit: 'second'}\n }\n\n if (abs < HOUR) {\n return {value: Math.round(diff / MINUTE), unit: 'minute'}\n }\n\n if (abs < DAY) {\n return {value: Math.round(diff / HOUR), unit: 'hour'}\n }\n\n if (abs < WEEK) {\n return {value: Math.round(diff / DAY), unit: 'day'}\n }\n\n if (abs < MONTH) {\n return {value: Math.round(diff / WEEK), unit: 'week'}\n }\n\n if (abs < YEAR) {\n return {value: Math.round(diff / MONTH), unit: 'month'}\n }\n\n return {value: Math.round(diff / YEAR), unit: 'year'}\n}\n\nexport function formatRelativeTime(\n value: Date | string | number,\n {locale = 'en', now = Date.now()}: FormatRelativeTimeOptions = {}\n): string | null {\n const relative = getRelativeTimeValue(value, now)\n\n if (!relative) return null\n\n let formatter: Intl.RelativeTimeFormat\n\n try {\n formatter = new Intl.RelativeTimeFormat(locale, {\n numeric: 'auto',\n style: 'long',\n })\n } catch {\n formatter = new Intl.RelativeTimeFormat('en', {\n numeric: 'auto',\n style: 'long',\n })\n }\n\n return formatter.format(relative.value, relative.unit)\n}\n\nexport function formatAbsoluteTime(\n value: Date | string | number,\n locale: string = 'en',\n fallbackFormat: RelativeTimeFallbackFormat = 'date'\n): string | null {\n const date = toDate(value)\n\n if (!date) return null\n\n let formatter: Intl.DateTimeFormat\n\n try {\n formatter = new Intl.DateTimeFormat(locale, {\n dateStyle: 'medium',\n ...(fallbackFormat === 'datetime' ? {timeStyle: 'short'} : {}),\n })\n } catch {\n formatter = new Intl.DateTimeFormat('en', {\n dateStyle: 'medium',\n ...(fallbackFormat === 'datetime' ? {timeStyle: 'short'} : {}),\n })\n }\n\n return formatter.format(date)\n}\n\nexport function getAutoUpdateInterval(value: Date | string | number, now: Date | number = Date.now()): number {\n const date = toDate(value)\n const current = toDate(now)\n\n if (!date || !current) return HOUR\n\n const diff = Math.abs(date.getTime() - current.getTime())\n\n if (diff < MINUTE) return SECOND\n if (diff < HOUR) return MINUTE\n if (diff < DAY) return HOUR\n return DAY\n}\n"],"mappings":";AAcA,IAAM,IAAS,KACT,IAAS,KAAK,GACd,IAAO,KAAK,GACZ,IAAM,KAAK,GACX,IAAO,IAAI,GACX,IAAQ,KAAK,MAAM,QAAQ,EAAI,EAC/B,IAAO,KAAK,MAAM,SAAS,EAAI,EAE/B,IAAe;CACjB,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,GAAG;CACN;AAED,SAAgB,EAAO,GAA4C;CAC/D,IAAM,IAAO,aAAiB,OAAO,IAAQ,IAAI,KAAK,EAAM;AAC5D,QAAO,OAAO,MAAM,EAAK,SAAS,CAAC,GAAG,OAAO;;AAGjD,SAAgB,EAAuB,GAA+C;AAClF,KAAI,KAAS,KAAM,QAAO;AAC1B,KAAI,OAAO,KAAU,SAAU,QAAO,KAAS,IAAI,IAAQ;CAE3D,IAAM,IAAQ,EAAM,MAAM,CAAC,MAAM,2BAA2B;AAM5D,QALK,IAEU,OAAO,EAAM,GAAG,GAGf,EAFH,EAAM,GAAG,aAAa,IAHhB;;AAQvB,SAAgB,EACZ,GACA,IAAqB,KAAK,KAAK,EACP;CACxB,IAAM,IAAO,EAAO,EAAM,EACpB,IAAU,EAAO,EAAI;AAE3B,KAAI,CAAC,KAAQ,CAAC,EAAS,QAAO;CAE9B,IAAM,IAAO,EAAK,SAAS,GAAG,EAAQ,SAAS,EACzC,IAAM,KAAK,IAAI,EAAK;AA0B1B,QAxBI,IAAM,IACC;EAAC,OAAO,KAAK,MAAM,IAAO,EAAO;EAAE,MAAM;EAAS,GAGzD,IAAM,IACC;EAAC,OAAO,KAAK,MAAM,IAAO,EAAO;EAAE,MAAM;EAAS,GAGzD,IAAM,IACC;EAAC,OAAO,KAAK,MAAM,IAAO,EAAK;EAAE,MAAM;EAAO,GAGrD,IAAM,IACC;EAAC,OAAO,KAAK,MAAM,IAAO,EAAI;EAAE,MAAM;EAAM,GAGnD,IAAM,IACC;EAAC,OAAO,KAAK,MAAM,IAAO,EAAK;EAAE,MAAM;EAAO,GAGrD,IAAM,IACC;EAAC,OAAO,KAAK,MAAM,IAAO,EAAM;EAAE,MAAM;EAAQ,GAGpD;EAAC,OAAO,KAAK,MAAM,IAAO,EAAK;EAAE,MAAM;EAAO;;AAGzD,SAAgB,EACZ,GACA,EAAC,YAAS,MAAM,SAAM,KAAK,KAAK,KAA+B,EAAE,EACpD;CACb,IAAM,IAAW,EAAqB,GAAO,EAAI;AAEjD,KAAI,CAAC,EAAU,QAAO;CAEtB,IAAI;AAEJ,KAAI;AACA,MAAY,IAAI,KAAK,mBAAmB,GAAQ;GAC5C,SAAS;GACT,OAAO;GACV,CAAC;SACE;AACJ,MAAY,IAAI,KAAK,mBAAmB,MAAM;GAC1C,SAAS;GACT,OAAO;GACV,CAAC;;AAGN,QAAO,EAAU,OAAO,EAAS,OAAO,EAAS,KAAK;;AAG1D,SAAgB,EACZ,GACA,IAAiB,MACjB,IAA6C,QAChC;CACb,IAAM,IAAO,EAAO,EAAM;AAE1B,KAAI,CAAC,EAAM,QAAO;CAElB,IAAI;AAEJ,KAAI;AACA,MAAY,IAAI,KAAK,eAAe,GAAQ;GACxC,WAAW;GACX,GAAI,MAAmB,aAAa,EAAC,WAAW,SAAQ,GAAG,EAAE;GAChE,CAAC;SACE;AACJ,MAAY,IAAI,KAAK,eAAe,MAAM;GACtC,WAAW;GACX,GAAI,MAAmB,aAAa,EAAC,WAAW,SAAQ,GAAG,EAAE;GAChE,CAAC;;AAGN,QAAO,EAAU,OAAO,EAAK;;AAGjC,SAAgB,EAAsB,GAA+B,IAAqB,KAAK,KAAK,EAAU;CAC1G,IAAM,IAAO,EAAO,EAAM,EACpB,IAAU,EAAO,EAAI;AAE3B,KAAI,CAAC,KAAQ,CAAC,EAAS,QAAO;CAE9B,IAAM,IAAO,KAAK,IAAI,EAAK,SAAS,GAAG,EAAQ,SAAS,CAAC;AAKzD,QAHI,IAAO,IAAe,IACtB,IAAO,IAAa,IACpB,IAAO,IAAY,IAChB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
var e=1e3,t=60*e,n=60*t,r=24*n,i=7*r,a=Math.round(30.44*r),o=Math.round(365.25*r),s={s:e,m:t,h:n,d:r,w:i,mo:a,y:o};function c(e){let t=e instanceof Date?e:new Date(e);return Number.isNaN(t.getTime())?null:t}function l(e){if(e==null)return null;if(typeof e==`number`)return e>=0?e:null;let t=e.trim().match(/^(\d+)\s*(mo|[smhdwy])$/i);return t?Number(t[1])*s[t[2].toLowerCase()]:null}function u(s,l=Date.now()){let u=c(s),d=c(l);if(!u||!d)return null;let f=u.getTime()-d.getTime(),p=Math.abs(f);return p<t?{value:Math.round(f/e),unit:`second`}:p<n?{value:Math.round(f/t),unit:`minute`}:p<r?{value:Math.round(f/n),unit:`hour`}:p<i?{value:Math.round(f/r),unit:`day`}:p<a?{value:Math.round(f/i),unit:`week`}:p<o?{value:Math.round(f/a),unit:`month`}:{value:Math.round(f/o),unit:`year`}}function d(e,{locale:t=`en`,now:n=Date.now()}={}){let r=u(e,n);if(!r)return null;let i;try{i=new Intl.RelativeTimeFormat(t,{numeric:`auto`,style:`long`})}catch{i=new Intl.RelativeTimeFormat(`en`,{numeric:`auto`,style:`long`})}return i.format(r.value,r.unit)}function f(e,t=`en`,n=`date`){let r=c(e);if(!r)return null;let i;try{i=new Intl.DateTimeFormat(t,{dateStyle:`medium`,...n===`datetime`?{timeStyle:`short`}:{}})}catch{i=new Intl.DateTimeFormat(`en`,{dateStyle:`medium`,...n===`datetime`?{timeStyle:`short`}:{}})}return i.format(r)}function p(i,a=Date.now()){let o=c(i),s=c(a);if(!o||!s)return n;let l=Math.abs(o.getTime()-s.getTime());return l<t?e:l<n?t:l<r?n:r}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return f}});
|
|
2
|
-
//# sourceMappingURL=relativeTime-
|
|
2
|
+
//# sourceMappingURL=relativeTime-DUbW4O44.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relativeTime-
|
|
1
|
+
{"version":3,"file":"relativeTime-DUbW4O44.cjs","names":[],"sources":["../src/utils/relativeTime.ts"],"sourcesContent":["export type RelativeTimeUnit = Intl.RelativeTimeFormatUnit\n\nexport type RelativeTimeFallbackFormat = 'date' | 'datetime'\n\nexport interface RelativeTimeValue {\n value: number\n unit: RelativeTimeUnit\n}\n\nexport interface FormatRelativeTimeOptions {\n locale?: string\n now?: Date | number\n}\n\nconst SECOND = 1000\nconst MINUTE = 60 * SECOND\nconst HOUR = 60 * MINUTE\nconst DAY = 24 * HOUR\nconst WEEK = 7 * DAY\nconst MONTH = Math.round(30.44 * DAY)\nconst YEAR = Math.round(365.25 * DAY)\n\nconst thresholdMap = {\n s: SECOND,\n m: MINUTE,\n h: HOUR,\n d: DAY,\n w: WEEK,\n mo: MONTH,\n y: YEAR,\n} as const\n\nexport function toDate(value: Date | string | number): Date | null {\n const date = value instanceof Date ? value : new Date(value)\n return Number.isNaN(date.getTime()) ? null : date\n}\n\nexport function parseRelativeThreshold(value?: string | number | null): number | null {\n if (value == null) return null\n if (typeof value === 'number') return value >= 0 ? value : null\n\n const match = value.trim().match(/^(\\d+)\\s*(mo|[smhdwy])$/i)\n if (!match) return null\n\n const amount = Number(match[1])\n const unit = match[2].toLowerCase() as keyof typeof thresholdMap\n\n return amount * thresholdMap[unit]\n}\n\nexport function getRelativeTimeValue(\n value: Date | string | number,\n now: Date | number = Date.now()\n): RelativeTimeValue | null {\n const date = toDate(value)\n const current = toDate(now)\n\n if (!date || !current) return null\n\n const diff = date.getTime() - current.getTime()\n const abs = Math.abs(diff)\n\n if (abs < MINUTE) {\n return {value: Math.round(diff / SECOND), unit: 'second'}\n }\n\n if (abs < HOUR) {\n return {value: Math.round(diff / MINUTE), unit: 'minute'}\n }\n\n if (abs < DAY) {\n return {value: Math.round(diff / HOUR), unit: 'hour'}\n }\n\n if (abs < WEEK) {\n return {value: Math.round(diff / DAY), unit: 'day'}\n }\n\n if (abs < MONTH) {\n return {value: Math.round(diff / WEEK), unit: 'week'}\n }\n\n if (abs < YEAR) {\n return {value: Math.round(diff / MONTH), unit: 'month'}\n }\n\n return {value: Math.round(diff / YEAR), unit: 'year'}\n}\n\nexport function formatRelativeTime(\n value: Date | string | number,\n {locale = 'en', now = Date.now()}: FormatRelativeTimeOptions = {}\n): string | null {\n const relative = getRelativeTimeValue(value, now)\n\n if (!relative) return null\n\n let formatter: Intl.RelativeTimeFormat\n\n try {\n formatter = new Intl.RelativeTimeFormat(locale, {\n numeric: 'auto',\n style: 'long',\n })\n } catch {\n formatter = new Intl.RelativeTimeFormat('en', {\n numeric: 'auto',\n style: 'long',\n })\n }\n\n return formatter.format(relative.value, relative.unit)\n}\n\nexport function formatAbsoluteTime(\n value: Date | string | number,\n locale: string = 'en',\n fallbackFormat: RelativeTimeFallbackFormat = 'date'\n): string | null {\n const date = toDate(value)\n\n if (!date) return null\n\n let formatter: Intl.DateTimeFormat\n\n try {\n formatter = new Intl.DateTimeFormat(locale, {\n dateStyle: 'medium',\n ...(fallbackFormat === 'datetime' ? {timeStyle: 'short'} : {}),\n })\n } catch {\n formatter = new Intl.DateTimeFormat('en', {\n dateStyle: 'medium',\n ...(fallbackFormat === 'datetime' ? {timeStyle: 'short'} : {}),\n })\n }\n\n return formatter.format(date)\n}\n\nexport function getAutoUpdateInterval(value: Date | string | number, now: Date | number = Date.now()): number {\n const date = toDate(value)\n const current = toDate(now)\n\n if (!date || !current) return HOUR\n\n const diff = Math.abs(date.getTime() - current.getTime())\n\n if (diff < MINUTE) return SECOND\n if (diff < HOUR) return MINUTE\n if (diff < DAY) return HOUR\n return DAY\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=0,t=``;function n(){if(typeof document>`u`)return()=>{};e===0&&(t=document.body.style.overflow,document.body.style.overflow=`hidden`),e+=1;let n=!1;return()=>{n||(n=!0,e=Math.max(0,e-1),e===0&&(document.body.style.overflow=t))}}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return n}});
|
|
2
|
+
//# sourceMappingURL=scrollLock-C9P9o6wH.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scrollLock-C9P9o6wH.cjs","names":[],"sources":["../src/components/overlays/scrollLock.ts"],"sourcesContent":["/**\n * Reference-counted body scroll lock shared by blocking overlays (MModal, MDrawer, MSheet).\n *\n * Each overlay used to save `body.style.overflow`, set it to `hidden` and restore the\n * saved value on close. With nested overlays closed in the \"wrong\" order (the outer one\n * first) the inner one restored `hidden` after the outer one had already unlocked, or the\n * outer one unlocked while the inner one was still open. A shared counter keeps the page\n * locked while ANY overlay holds a lock and restores the original value once the last\n * one releases it.\n */\n\nlet lockCount = 0\nlet savedOverflow = ''\n\n/** Locks body scrolling and returns an idempotent release function. */\nexport function lockBodyScroll(): () => void {\n if (typeof document === 'undefined') return () => {}\n\n if (lockCount === 0) {\n savedOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n }\n lockCount += 1\n\n let released = false\n return () => {\n if (released) return\n released = true\n lockCount = Math.max(0, lockCount - 1)\n if (lockCount === 0) {\n document.body.style.overflow = savedOverflow\n }\n }\n}\n\n/** Test-only helper — the counter is module state that outlives a render. */\nexport function __resetBodyScrollLock(): void {\n lockCount = 0\n savedOverflow = ''\n}\n"],"mappings":"AAWA,IAAI,EAAY,EACZ,EAAgB,GAGpB,SAAgB,GAA6B,CACzC,GAAI,OAAO,SAAa,IAAa,UAAa,GAE9C,IAAc,IACd,EAAgB,SAAS,KAAK,MAAM,SACpC,SAAS,KAAK,MAAM,SAAW,UAEnC,GAAa,EAEb,IAAI,EAAW,GACf,UAAa,CACL,IACJ,EAAW,GACX,EAAY,KAAK,IAAI,EAAG,EAAY,EAAE,CAClC,IAAc,IACd,SAAS,KAAK,MAAM,SAAW"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/components/overlays/scrollLock.ts
|
|
2
|
+
var e = 0, t = "";
|
|
3
|
+
function n() {
|
|
4
|
+
if (typeof document > "u") return () => {};
|
|
5
|
+
e === 0 && (t = document.body.style.overflow, document.body.style.overflow = "hidden"), e += 1;
|
|
6
|
+
let n = !1;
|
|
7
|
+
return () => {
|
|
8
|
+
n || (n = !0, e = Math.max(0, e - 1), e === 0 && (document.body.style.overflow = t));
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { n as t };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=scrollLock-D27VmgPV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scrollLock-D27VmgPV.js","names":[],"sources":["../src/components/overlays/scrollLock.ts"],"sourcesContent":["/**\n * Reference-counted body scroll lock shared by blocking overlays (MModal, MDrawer, MSheet).\n *\n * Each overlay used to save `body.style.overflow`, set it to `hidden` and restore the\n * saved value on close. With nested overlays closed in the \"wrong\" order (the outer one\n * first) the inner one restored `hidden` after the outer one had already unlocked, or the\n * outer one unlocked while the inner one was still open. A shared counter keeps the page\n * locked while ANY overlay holds a lock and restores the original value once the last\n * one releases it.\n */\n\nlet lockCount = 0\nlet savedOverflow = ''\n\n/** Locks body scrolling and returns an idempotent release function. */\nexport function lockBodyScroll(): () => void {\n if (typeof document === 'undefined') return () => {}\n\n if (lockCount === 0) {\n savedOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n }\n lockCount += 1\n\n let released = false\n return () => {\n if (released) return\n released = true\n lockCount = Math.max(0, lockCount - 1)\n if (lockCount === 0) {\n document.body.style.overflow = savedOverflow\n }\n }\n}\n\n/** Test-only helper — the counter is module state that outlives a render. */\nexport function __resetBodyScrollLock(): void {\n lockCount = 0\n savedOverflow = ''\n}\n"],"mappings":";AAWA,IAAI,IAAY,GACZ,IAAgB;AAGpB,SAAgB,IAA6B;AACzC,KAAI,OAAO,WAAa,IAAa,cAAa;AAMlD,CAJI,MAAc,MACd,IAAgB,SAAS,KAAK,MAAM,UACpC,SAAS,KAAK,MAAM,WAAW,WAEnC,KAAa;CAEb,IAAI,IAAW;AACf,cAAa;AACL,QACJ,IAAW,IACX,IAAY,KAAK,IAAI,GAAG,IAAY,EAAE,EAClC,MAAc,MACd,SAAS,KAAK,MAAM,WAAW"}
|