@feugene/granularity 0.19.0 → 0.21.0
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 +8 -0
- package/dist/chunks/config-8Pcutu1j.js.map +1 -0
- package/dist/chunks/config-B4w5gBD0.js +89 -0
- package/dist/chunks/config-B4w5gBD0.js.map +1 -0
- package/dist/chunks/config-BC8d_smz.js +156 -0
- package/dist/chunks/config-BC8d_smz.js.map +1 -0
- package/dist/chunks/config-BDfTXHo1.js.map +1 -0
- package/dist/chunks/config-BE6n20np.js.map +1 -0
- package/dist/chunks/config-BEVBsvni2.js +197 -0
- package/dist/chunks/config-BEVBsvni2.js.map +1 -0
- package/dist/chunks/config-BKvX0q10.js.map +1 -0
- package/dist/chunks/config-BTCOJO5z.js +37 -0
- package/dist/chunks/config-BTCOJO5z.js.map +1 -0
- package/dist/chunks/config-B_qi4Fma2.js +92 -0
- package/dist/chunks/config-B_qi4Fma2.js.map +1 -0
- package/dist/chunks/config-Baj7Wvx-2.js.map +1 -0
- package/dist/chunks/config-BfsBepkH2.js +83 -0
- package/dist/chunks/config-BfsBepkH2.js.map +1 -0
- package/dist/chunks/config-Bm_Sovla.js +59 -0
- package/dist/chunks/config-Bm_Sovla.js.map +1 -0
- package/dist/chunks/config-Bsh948nP.js +85 -0
- package/dist/chunks/config-Bsh948nP.js.map +1 -0
- package/dist/chunks/config-CDat1wXf.js.map +1 -0
- package/dist/chunks/config-CY0_6cMi.js.map +1 -0
- package/dist/chunks/config-D94Z9po5.js.map +1 -0
- package/dist/chunks/config-DAX8Deh12.js.map +1 -0
- package/dist/chunks/config-DBQQT-WP.js +66 -0
- package/dist/chunks/config-DBQQT-WP.js.map +1 -0
- package/dist/chunks/config-DU2DNSRx.js.map +1 -0
- package/dist/chunks/config-DWN4x6_e.js +159 -0
- package/dist/chunks/config-DWN4x6_e.js.map +1 -0
- package/dist/chunks/config-Dgj1Q6JY.js +26 -0
- package/dist/chunks/config-Dgj1Q6JY.js.map +1 -0
- package/dist/chunks/config-Dguto_6o.js +108 -0
- package/dist/chunks/config-Dguto_6o.js.map +1 -0
- package/dist/chunks/config-QJ54_fcM.js +61 -0
- package/dist/chunks/config-QJ54_fcM.js.map +1 -0
- package/dist/chunks/config-QaIc_gRa2.js.map +1 -0
- package/dist/chunks/config-ScuvHw6k.js.map +1 -0
- package/dist/chunks/config-WTNhdh6T.js.map +1 -0
- package/dist/chunks/config-eXB87DOi2.js.map +1 -0
- package/dist/chunks/config-jyZq8XKL.js +58 -0
- package/dist/chunks/config-jyZq8XKL.js.map +1 -0
- package/dist/chunks/config-vSji8w90.js +85 -0
- package/dist/chunks/config-vSji8w90.js.map +1 -0
- package/dist/chunks/context-CTbuwcYs.js +133 -0
- package/dist/chunks/context-CTbuwcYs.js.map +1 -0
- package/dist/chunks/en-CwAr3C_x.js +358 -0
- package/dist/chunks/en-CwAr3C_x.js.map +1 -0
- package/dist/chunks/es-Do1q9_SF.js +20 -0
- package/dist/chunks/es-Do1q9_SF.js.map +1 -0
- package/dist/chunks/es-TR4g2I4A.js +360 -0
- package/dist/chunks/es-TR4g2I4A.js.map +1 -0
- package/dist/chunks/generated-Do60Aq2I.js +3368 -0
- package/dist/chunks/generated-Do60Aq2I.js.map +1 -0
- package/dist/chunks/grRadioStyles-BTjGNhtU.js +96 -0
- package/dist/chunks/grRadioStyles-BTjGNhtU.js.map +1 -0
- package/dist/chunks/granular-provider-BW2uopTG.js +203 -0
- package/dist/chunks/granular-provider-BW2uopTG.js.map +1 -0
- package/dist/chunks/ru-Bm-zWJ3F.js +362 -0
- package/dist/chunks/ru-Bm-zWJ3F.js.map +1 -0
- package/dist/chunks/trending-up-Bf9AQmoq.js +42 -0
- package/dist/chunks/trending-up-Bf9AQmoq.js.map +1 -0
- package/dist/chunks/useModalOverlay-Cv5hF63W.js +212 -0
- package/dist/chunks/useModalOverlay-Cv5hF63W.js.map +1 -0
- package/dist/chunks/usePortalTarget-C0p-mhaM.js +77 -0
- package/dist/chunks/usePortalTarget-C0p-mhaM.js.map +1 -0
- package/dist/chunks/validation-DauXRIkL.js +178 -0
- package/dist/chunks/validation-DauXRIkL.js.map +1 -0
- package/dist/components/GrAlert/chunks/GrAlert-B21QGele.js +258 -0
- package/dist/components/GrAlert/chunks/GrAlert-B21QGele.js.map +1 -0
- package/dist/components/GrAlert/index.js +2 -2
- package/dist/components/GrAutocomplete/chunks/GrAutocomplete-DsevPtiS.js +860 -0
- package/dist/components/GrAutocomplete/chunks/GrAutocomplete-DsevPtiS.js.map +1 -0
- package/dist/components/GrAutocomplete/index.js +1 -1
- package/dist/components/GrAvatar/chunks/GrAvatar-BbdKRX8i.js +222 -0
- package/dist/components/GrAvatar/chunks/GrAvatar-BbdKRX8i.js.map +1 -0
- package/dist/components/GrAvatar/index.js +3 -3
- package/dist/components/GrBadge/chunks/GrBadge-u2ZdS7CN.js +40 -0
- package/dist/components/GrBadge/chunks/GrBadge-u2ZdS7CN.js.map +1 -0
- package/dist/components/GrBadge/index.js +1 -1
- package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-DDoFQscR.js +97 -0
- package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-DDoFQscR.js.map +1 -0
- package/dist/components/GrBadgeWrap/index.js +3 -3
- package/dist/components/GrBottomNav/chunks/GrBottomNav-JUu4ylYv.js +117 -0
- package/dist/components/GrBottomNav/chunks/GrBottomNav-JUu4ylYv.js.map +1 -0
- package/dist/components/GrBottomNav/index.js +3 -3
- package/dist/components/GrBreadcrumbs/chunks/GrBreadcrumbs-CQ44iU2o.js +267 -0
- package/dist/components/GrBreadcrumbs/chunks/GrBreadcrumbs-CQ44iU2o.js.map +1 -0
- package/dist/components/GrBreadcrumbs/index.js +1 -1
- package/dist/components/GrButton/chunks/GrButton-Bw2AH4uX.js +153 -0
- package/dist/components/GrButton/chunks/GrButton-Bw2AH4uX.js.map +1 -0
- package/dist/components/GrButton/index.js +2 -3
- package/dist/components/GrCard/chunks/GrCard-Bc7nRfbe.js +144 -0
- package/dist/components/GrCard/chunks/GrCard-Bc7nRfbe.js.map +1 -0
- package/dist/components/GrCard/index.js +2 -2
- package/dist/components/GrCheckbox/chunks/GrCheckbox-CEcHIsXM.js +262 -0
- package/dist/components/GrCheckbox/chunks/GrCheckbox-CEcHIsXM.js.map +1 -0
- package/dist/components/GrCheckbox/index.js +2 -2
- package/dist/components/GrCheckboxGroup/chunks/GrCheckboxGroup-BOwrVcFr.js +140 -0
- package/dist/components/GrCheckboxGroup/chunks/GrCheckboxGroup-BOwrVcFr.js.map +1 -0
- package/dist/components/GrCheckboxGroup/index.js +1 -1
- package/dist/components/GrCodeBlock/chunks/GrCodeBlock-CW3zY1ee.js +341 -0
- package/dist/components/GrCodeBlock/chunks/GrCodeBlock-CW3zY1ee.js.map +1 -0
- package/dist/components/GrCodeBlock/index.js +3 -0
- package/dist/components/GrCodeBlock/styles.css +1 -0
- package/dist/components/GrCollapse/chunks/GrCollapse-C1rCfbc0.js +294 -0
- package/dist/components/GrCollapse/chunks/GrCollapse-C1rCfbc0.js.map +1 -0
- package/dist/components/GrCollapse/index.js +3 -3
- package/dist/components/GrColorPicker/chunks/GrColorPicker-qQdoEPHF.js +584 -0
- package/dist/components/GrColorPicker/chunks/GrColorPicker-qQdoEPHF.js.map +1 -0
- package/dist/components/GrColorPicker/index.js +2 -2
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-BFcMf4Pn.js +591 -0
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-BFcMf4Pn.js.map +1 -0
- package/dist/components/GrCommandPalette/index.js +2 -2
- package/dist/components/GrConfigProvider/chunks/GrConfigProvider-UP-EaoAf.js +144 -0
- package/dist/components/GrConfigProvider/chunks/GrConfigProvider-UP-EaoAf.js.map +1 -0
- package/dist/components/GrConfigProvider/index.js +3 -3
- package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-rRtMScJX.js +200 -0
- package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-rRtMScJX.js.map +1 -0
- package/dist/components/GrConfirmDialog/index.js +1 -1
- package/dist/components/GrDataTable/chunks/GrDataTable-B5MmZFUg.js +1117 -0
- package/dist/components/GrDataTable/chunks/GrDataTable-B5MmZFUg.js.map +1 -0
- package/dist/components/GrDataTable/index.js +3 -3
- package/dist/components/GrDelta/chunks/GrDelta-BMmpYz8K.js +0 -0
- package/dist/components/GrDelta/chunks/GrDelta-BMmpYz8K.js.map +1 -0
- package/dist/components/GrDelta/index.js +3 -0
- package/dist/components/GrDescriptionList/chunks/GrDescriptionList-pXh1LZEe.js +103 -0
- package/dist/components/GrDescriptionList/chunks/GrDescriptionList-pXh1LZEe.js.map +1 -0
- package/dist/components/GrDescriptionList/index.js +3 -0
- package/dist/components/GrDialog/chunks/GrDialog-D0U5iRqV.js +255 -0
- package/dist/components/GrDialog/chunks/GrDialog-D0U5iRqV.js.map +1 -0
- package/dist/components/GrDialog/index.js +2 -3
- package/dist/components/GrDialogService/chunks/GrDialogService-CrwA4aJq.js +656 -0
- package/dist/components/GrDialogService/chunks/GrDialogService-CrwA4aJq.js.map +1 -0
- package/dist/components/GrDialogService/index.js +2 -2
- package/dist/components/GrDivider/chunks/GrDivider-CAhm9jbE.js +109 -0
- package/dist/components/GrDivider/chunks/GrDivider-CAhm9jbE.js.map +1 -0
- package/dist/components/GrDivider/index.js +2 -2
- package/dist/components/GrDrawer/chunks/GrDrawer-C3zAg2tG.js +251 -0
- package/dist/components/GrDrawer/chunks/GrDrawer-C3zAg2tG.js.map +1 -0
- package/dist/components/GrDrawer/index.js +2 -2
- package/dist/components/GrDropdown/chunks/GrDropdown-BSfFOcDx.js +300 -0
- package/dist/components/GrDropdown/chunks/GrDropdown-BSfFOcDx.js.map +1 -0
- package/dist/components/GrDropdown/index.js +1 -1
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-LOaFSCyd.js +421 -0
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-LOaFSCyd.js.map +1 -0
- package/dist/components/GrDropdownMenu/index.js +3 -3
- package/dist/components/GrEmptyState/chunks/GrEmptyState-CS9do8eM.js +86 -0
- package/dist/components/GrEmptyState/chunks/GrEmptyState-CS9do8eM.js.map +1 -0
- package/dist/components/GrEmptyState/index.js +3 -3
- package/dist/components/GrFilePreview/chunks/GrFilePreview-rbE3zL9w.js +315 -0
- package/dist/components/GrFilePreview/chunks/GrFilePreview-rbE3zL9w.js.map +1 -0
- package/dist/components/GrFilePreview/index.js +3 -0
- package/dist/components/GrFileUpload/chunks/GrFileUpload-D3-vC-ap.js +1080 -0
- package/dist/components/GrFileUpload/chunks/GrFileUpload-D3-vC-ap.js.map +1 -0
- package/dist/components/GrFileUpload/index.js +3 -3
- package/dist/components/GrForm/chunks/GrForm-B_Qq_13k.js +333 -0
- package/dist/components/GrForm/chunks/GrForm-B_Qq_13k.js.map +1 -0
- package/dist/components/GrForm/index.js +4 -4
- package/dist/components/GrFormField/chunks/GrFormField-kqfVY30N.js +190 -0
- package/dist/components/GrFormField/chunks/GrFormField-kqfVY30N.js.map +1 -0
- package/dist/components/GrFormField/index.js +3 -3
- package/dist/components/GrFormFile/chunks/GrFormFile-D722xHn8.js +452 -0
- package/dist/components/GrFormFile/chunks/GrFormFile-D722xHn8.js.map +1 -0
- package/dist/components/GrFormFile/index.js +1 -1
- package/dist/components/GrFormSection/chunks/GrFormSection-CdGWvzXO.js +63 -0
- package/dist/components/GrFormSection/chunks/GrFormSection-CdGWvzXO.js.map +1 -0
- package/dist/components/GrFormSection/index.js +3 -3
- package/dist/components/GrIcon/chunks/GrIcon-bQwtZtYT.js +57 -0
- package/dist/components/GrIcon/chunks/GrIcon-bQwtZtYT.js.map +1 -0
- package/dist/components/GrIcon/index.js +1 -1
- package/dist/components/GrImageViewer/chunks/GrImageViewer-ng7el4wn.js +1128 -0
- package/dist/components/GrImageViewer/chunks/GrImageViewer-ng7el4wn.js.map +1 -0
- package/dist/components/GrImageViewer/index.js +1 -1
- package/dist/components/GrInput/chunks/GrInput-Bb_pxqpT.js +348 -0
- package/dist/components/GrInput/chunks/GrInput-Bb_pxqpT.js.map +1 -0
- package/dist/components/GrInput/index.js +1 -1
- package/dist/components/GrInputTag/chunks/GrInputTag-C7QVPijj.js +512 -0
- package/dist/components/GrInputTag/chunks/GrInputTag-C7QVPijj.js.map +1 -0
- package/dist/components/GrInputTag/index.js +1 -1
- package/dist/components/GrKbd/chunks/GrKbd-BXbhsH0M.js +358 -0
- package/dist/components/GrKbd/chunks/GrKbd-BXbhsH0M.js.map +1 -0
- package/dist/components/GrKbd/index.js +1 -1
- package/dist/components/GrLink/chunks/GrLink-BQb7U4so.js +163 -0
- package/dist/components/GrLink/chunks/GrLink-BQb7U4so.js.map +1 -0
- package/dist/components/GrLink/index.js +1 -1
- package/dist/components/GrList/chunks/GrList-BUzFRa8-.js +277 -0
- package/dist/components/GrList/chunks/GrList-BUzFRa8-.js.map +1 -0
- package/dist/components/GrList/index.js +1 -1
- package/dist/components/GrLoading/chunks/GrLoading-C3DZSSuh.js +101 -0
- package/dist/components/GrLoading/chunks/GrLoading-C3DZSSuh.js.map +1 -0
- package/dist/components/GrLoading/index.js +1 -1
- package/dist/components/GrModal/chunks/GrModal-CPz7SWD_.js +313 -0
- package/dist/components/GrModal/chunks/GrModal-CPz7SWD_.js.map +1 -0
- package/dist/components/GrModal/index.js +1 -1
- package/dist/components/GrNavbar/chunks/GrNavbar-DWaaoV7n.js +104 -0
- package/dist/components/GrNavbar/chunks/GrNavbar-DWaaoV7n.js.map +1 -0
- package/dist/components/GrNavbar/index.js +1 -1
- package/dist/components/GrNumberInput/chunks/GrNumberInput-BotnzW77.js +659 -0
- package/dist/components/GrNumberInput/chunks/GrNumberInput-BotnzW77.js.map +1 -0
- package/dist/components/GrNumberInput/index.js +1 -1
- package/dist/components/GrPagination/chunks/GrPagination-GtGtSMJG.js +283 -0
- package/dist/components/GrPagination/chunks/GrPagination-GtGtSMJG.js.map +1 -0
- package/dist/components/GrPagination/index.js +1 -1
- package/dist/components/GrPopover/chunks/GrPopover-b70bIlQ9.js +216 -0
- package/dist/components/GrPopover/chunks/GrPopover-b70bIlQ9.js.map +1 -0
- package/dist/components/GrPopover/index.js +1 -1
- package/dist/components/GrProgressBar/chunks/GrProgressBar-hszUOC8f.js +90 -0
- package/dist/components/GrProgressBar/chunks/GrProgressBar-hszUOC8f.js.map +1 -0
- package/dist/components/GrProgressBar/index.js +1 -1
- package/dist/components/GrProgressCircle/chunks/GrProgressCircle-BeUx1g1f.js +202 -0
- package/dist/components/GrProgressCircle/chunks/GrProgressCircle-BeUx1g1f.js.map +1 -0
- package/dist/components/GrProgressCircle/index.js +2 -2
- package/dist/components/GrPromptDialog/chunks/GrPromptDialog-CEI8bf-t.js +348 -0
- package/dist/components/GrPromptDialog/chunks/GrPromptDialog-CEI8bf-t.js.map +1 -0
- package/dist/components/GrPromptDialog/index.js +1 -1
- package/dist/components/GrRadio/chunks/GrRadio-BdhknbO8.js +253 -0
- package/dist/components/GrRadio/chunks/GrRadio-BdhknbO8.js.map +1 -0
- package/dist/components/GrRadio/index.js +3 -3
- package/dist/components/GrRadioGroup/chunks/GrRadioGroup-BVmjKXcv.js +196 -0
- package/dist/components/GrRadioGroup/chunks/GrRadioGroup-BVmjKXcv.js.map +1 -0
- package/dist/components/GrRadioGroup/index.js +2 -2
- package/dist/components/GrRating/chunks/GrRating-BiAVT9H7.js +316 -0
- package/dist/components/GrRating/chunks/GrRating-BiAVT9H7.js.map +1 -0
- package/dist/components/GrRating/index.js +2 -2
- package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-CZONq8uT.js +777 -0
- package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-CZONq8uT.js.map +1 -0
- package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-CgfAwlg3.js +224 -0
- package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-CgfAwlg3.js.map +1 -0
- package/dist/components/GrResponseErrorBanner/index.js +3 -3
- package/dist/components/GrSegmented/chunks/GrSegmented-D1mjxF_O.js +388 -0
- package/dist/components/GrSegmented/chunks/GrSegmented-D1mjxF_O.js.map +1 -0
- package/dist/components/GrSegmented/index.js +3 -3
- package/dist/components/GrSelect/chunks/GrSelect-CaGuyvtb.js +1384 -0
- package/dist/components/GrSelect/chunks/GrSelect-CaGuyvtb.js.map +1 -0
- package/dist/components/GrSelect/index.js +1 -1
- package/dist/components/GrSelect/styles.css +1 -1
- package/dist/components/GrSidebar/chunks/GrSidebar-D7WxRtIu.js +264 -0
- package/dist/components/GrSidebar/chunks/GrSidebar-D7WxRtIu.js.map +1 -0
- package/dist/components/GrSidebar/index.js +3 -3
- package/dist/components/GrSkeleton/chunks/GrSkeleton-CgfXxPQ2.js +78 -0
- package/dist/components/GrSkeleton/chunks/GrSkeleton-CgfXxPQ2.js.map +1 -0
- package/dist/components/GrSkeleton/index.js +3 -3
- package/dist/components/GrSlider/chunks/GrSlider-s99yAyz6.js +379 -0
- package/dist/components/GrSlider/chunks/GrSlider-s99yAyz6.js.map +1 -0
- package/dist/components/GrSlider/index.js +1 -1
- package/dist/components/GrSortableList/chunks/GrSortableList-DPjxilmN.js +277 -0
- package/dist/components/GrSortableList/chunks/GrSortableList-DPjxilmN.js.map +1 -0
- package/dist/components/GrSortableList/index.js +2 -2
- package/dist/components/GrSplitter/chunks/GrSplitter-B9_JrT7q.js +259 -0
- package/dist/components/GrSplitter/chunks/GrSplitter-B9_JrT7q.js.map +1 -0
- package/dist/components/GrSplitter/index.js +3 -3
- package/dist/components/GrStatistic/chunks/GrStatistic-DkzWUAw1.js +333 -0
- package/dist/components/GrStatistic/chunks/GrStatistic-DkzWUAw1.js.map +1 -0
- package/dist/components/GrStatistic/index.js +1 -1
- package/dist/components/GrSwitch/chunks/GrSwitch-x_vQQ6ao.js +183 -0
- package/dist/components/GrSwitch/chunks/GrSwitch-x_vQQ6ao.js.map +1 -0
- package/dist/components/GrSwitch/index.js +1 -1
- package/dist/components/GrTabPanels/chunks/GrTabPanels-AJt1w1XC.js +81 -0
- package/dist/components/GrTabPanels/chunks/GrTabPanels-AJt1w1XC.js.map +1 -0
- package/dist/components/GrTabPanels/index.js +3 -3
- package/dist/components/GrTable/chunks/GrTable-f3qCWa99.js +169 -0
- package/dist/components/GrTable/chunks/GrTable-f3qCWa99.js.map +1 -0
- package/dist/components/GrTable/index.js +2 -2
- package/dist/components/GrTabs/chunks/GrTabs-CBHZkOFY.js +262 -0
- package/dist/components/GrTabs/chunks/GrTabs-CBHZkOFY.js.map +1 -0
- package/dist/components/GrTabs/index.js +3 -3
- package/dist/components/GrTextarea/chunks/GrTextarea-CNnkcIG1.js +241 -0
- package/dist/components/GrTextarea/chunks/GrTextarea-CNnkcIG1.js.map +1 -0
- package/dist/components/GrTextarea/index.js +2 -2
- package/dist/components/GrTimeline/chunks/GrTimeline-Ch9sHzwL.js +274 -0
- package/dist/components/GrTimeline/chunks/GrTimeline-Ch9sHzwL.js.map +1 -0
- package/dist/components/GrTimeline/index.js +2 -2
- package/dist/components/GrTimeline/styles.css +1 -1
- package/dist/components/GrToaster/chunks/GrToaster-DJUzx3sR.js +373 -0
- package/dist/components/GrToaster/chunks/GrToaster-DJUzx3sR.js.map +1 -0
- package/dist/components/GrToaster/index.js +2 -2
- package/dist/components/GrTooltip/chunks/GrTooltip-B6AwE_UX.js +185 -0
- package/dist/components/GrTooltip/chunks/GrTooltip-B6AwE_UX.js.map +1 -0
- package/dist/components/GrTooltip/index.js +1 -1
- package/dist/components/GrTree/chunks/GrTree-BvOeQ3xJ.js +1376 -0
- package/dist/components/GrTree/chunks/GrTree-BvOeQ3xJ.js.map +1 -0
- package/dist/components/GrTree/index.js +2 -2
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-_LjTRR7X.js +633 -0
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-_LjTRR7X.js.map +1 -0
- package/dist/components/GrTreeSelect/index.js +1 -1
- package/dist/composables/useGrComponentConfig.js +1 -1
- package/dist/composables/usePortalTarget.js +1 -1
- package/dist/composables/useToast.js +14 -2
- package/dist/composables/useToast.js.map +1 -1
- package/dist/directives/loading.js +1 -1
- package/dist/granular-provider-node.js +1 -1
- package/dist/granular-provider.js +1 -1
- package/dist/i18n/all.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/index.js +110 -103
- package/dist/testing.js +33 -2
- package/dist/testing.js.map +1 -1
- package/dist/theme.js +1 -1
- package/dist/tokens.js +1 -1
- package/dist/types/components/GrAlert/index.d.ts +7 -0
- package/dist/types/components/GrAvatar/index.d.ts +9 -0
- package/dist/types/components/GrBadgeWrap/index.d.ts +7 -0
- package/dist/types/components/GrBottomNav/index.d.ts +8 -0
- package/dist/types/components/GrButton/GrButton.vue.d.ts +117 -0
- package/dist/types/components/GrButton/index.d.ts +10 -0
- package/dist/types/components/GrCard/GrCard.vue.d.ts +109 -0
- package/dist/types/components/GrCard/defaults.d.ts +16 -0
- package/dist/types/components/GrCard/grCardStyles.d.ts +32 -0
- package/dist/types/components/GrCard/index.d.ts +8 -0
- package/dist/types/components/GrCheckbox/index.d.ts +12 -0
- package/dist/types/components/GrCodeBlock/GrCodeBlock.vue.d.ts +79 -0
- package/dist/types/components/GrCodeBlock/config.d.ts +1 -0
- package/dist/types/components/GrCodeBlock/defaults.d.ts +21 -0
- package/dist/types/components/GrCodeBlock/grCodeBlockStyles.d.ts +53 -0
- package/dist/types/components/GrCodeBlock/index.d.ts +6 -0
- package/dist/types/components/GrCodeBlock/safelist.d.ts +1 -0
- package/dist/types/components/GrCodeBlock/serializeCode.d.ts +19 -0
- package/dist/types/components/GrCodeBlock/tokenizeJson.d.ts +24 -0
- package/dist/types/components/GrCollapse/GrCollapse.vue.d.ts +115 -0
- package/dist/types/components/GrCollapse/index.d.ts +8 -0
- package/dist/types/components/GrColorPicker/index.d.ts +11 -0
- package/dist/types/components/GrCommandPalette/GrCommandPalette.vue.d.ts +163 -0
- package/dist/types/components/GrCommandPalette/index.d.ts +9 -0
- package/dist/types/components/GrConfigProvider/index.d.ts +6 -0
- package/dist/types/components/GrDataTable/GrDataTable.vue.d.ts +250 -0
- package/dist/types/components/GrDataTable/grDataTableStyles.d.ts +74 -0
- package/dist/types/components/GrDataTable/index.d.ts +12 -0
- package/dist/types/components/GrDelta/GrDelta.vue.d.ts +84 -0
- package/dist/types/components/GrDelta/config.d.ts +1 -0
- package/dist/types/components/GrDelta/defaults.d.ts +22 -0
- package/dist/types/components/GrDelta/deltaTone.d.ts +24 -0
- package/dist/types/components/GrDelta/grDeltaStyles.d.ts +38 -0
- package/dist/types/components/GrDelta/index.d.ts +6 -0
- package/dist/types/components/GrDelta/safelist.d.ts +1 -0
- package/dist/types/components/GrDescriptionList/GrDescriptionList.vue.d.ts +107 -0
- package/dist/types/components/GrDescriptionList/config.d.ts +1 -0
- package/dist/types/components/GrDescriptionList/defaults.d.ts +21 -0
- package/dist/types/components/GrDescriptionList/grDescriptionListStyles.d.ts +25 -0
- package/dist/types/components/GrDescriptionList/index.d.ts +6 -0
- package/dist/types/components/GrDescriptionList/safelist.d.ts +1 -0
- package/dist/types/components/GrDialog/index.d.ts +12 -0
- package/dist/types/components/GrDialogService/index.d.ts +6 -0
- package/dist/types/components/GrDropdownMenu/index.d.ts +21 -0
- package/dist/types/components/GrEmptyState/index.d.ts +7 -0
- package/dist/types/components/GrFilePreview/GrFilePreview.vue.d.ts +100 -0
- package/dist/types/components/GrFilePreview/config.d.ts +1 -0
- package/dist/types/components/GrFilePreview/defaults.d.ts +20 -0
- package/dist/types/components/GrFilePreview/fileKindOf.d.ts +14 -0
- package/dist/types/components/GrFilePreview/grFilePreviewStyles.d.ts +37 -0
- package/dist/types/components/GrFilePreview/index.d.ts +6 -0
- package/dist/types/components/GrFilePreview/safelist.d.ts +1 -0
- package/dist/types/components/GrFileUpload/index.d.ts +17 -0
- package/dist/types/components/GrForm/GrForm.vue.d.ts +90 -0
- package/dist/types/components/GrForm/index.d.ts +10 -0
- package/dist/types/components/GrFormField/GrFormField.vue.d.ts +122 -0
- package/dist/types/components/GrFormField/index.d.ts +8 -0
- package/dist/types/components/GrFormSection/index.d.ts +7 -0
- package/dist/types/components/GrImageViewer/GrImageViewer.vue.d.ts +271 -0
- package/dist/types/components/GrInput/GrInput.vue.d.ts +207 -0
- package/dist/types/components/GrInputTag/GrInputTag.vue.d.ts +216 -0
- package/dist/types/components/GrNumberInput/GrNumberInput.vue.d.ts +223 -0
- package/dist/types/components/GrProgressCircle/index.d.ts +10 -0
- package/dist/types/components/GrRadio/index.d.ts +8 -0
- package/dist/types/components/GrRating/GrRating.vue.d.ts +178 -0
- package/dist/types/components/GrResponseErrorBanner/index.d.ts +15 -0
- package/dist/types/components/GrSegmented/GrSegmented.vue.d.ts +122 -0
- package/dist/types/components/GrSegmented/index.d.ts +11 -0
- package/dist/types/components/GrSelect/GrSelect.vue.d.ts +199 -0
- package/dist/types/components/GrSidebar/index.d.ts +9 -0
- package/dist/types/components/GrSkeleton/index.d.ts +4 -0
- package/dist/types/components/GrSplitter/index.d.ts +11 -0
- package/dist/types/components/GrStatistic/GrStatistic.vue.d.ts +168 -0
- package/dist/types/components/GrSwitch/GrSwitch.vue.d.ts +130 -0
- package/dist/types/components/GrTabPanels/index.d.ts +7 -0
- package/dist/types/components/GrTable/GrTable.vue.d.ts +177 -0
- package/dist/types/components/GrTabs/GrTabs.vue.d.ts +121 -0
- package/dist/types/components/GrTabs/index.d.ts +8 -0
- package/dist/types/components/GrTimeline/GrTimelineItem.vue.d.ts +84 -0
- package/dist/types/components/GrTimeline/index.d.ts +10 -0
- package/dist/types/components/GrTreeSelect/GrTreeSelect.vue.d.ts +63 -0
- package/dist/types/components/shared/sizes.d.ts +34 -0
- package/dist/types/composables/useToast.d.ts +100 -0
- package/dist/types/granular-provider/shared.d.ts +94 -0
- package/dist/types/i18n/messages/en.d.ts +690 -0
- package/dist/types/i18n/messages/es.d.ts +687 -0
- package/dist/types/i18n/messages/ru.d.ts +691 -0
- package/dist/types/index.d.ts +107 -0
- package/dist/types/testing/index.d.ts +13 -0
- package/dist/types/testing/keyboard.d.ts +32 -0
- package/dist/web-types.json +556 -147
- package/package.json +126 -106
- package/dist/chunks/config-06SQjBx0.js +0 -96
- package/dist/chunks/config-06SQjBx0.js.map +0 -1
- package/dist/chunks/config-8Pcutu1j2.js.map +0 -1
- package/dist/chunks/config-B-iNaGdw.js +0 -199
- package/dist/chunks/config-B-iNaGdw.js.map +0 -1
- package/dist/chunks/config-BDfTXHo12.js.map +0 -1
- package/dist/chunks/config-BE6n20np2.js.map +0 -1
- package/dist/chunks/config-BJ7Bv_G2.js +0 -148
- package/dist/chunks/config-BJ7Bv_G2.js.map +0 -1
- package/dist/chunks/config-BKvX0q102.js.map +0 -1
- package/dist/chunks/config-Baj7Wvx-.js.map +0 -1
- package/dist/chunks/config-BqFjr3tN.js +0 -131
- package/dist/chunks/config-BqFjr3tN.js.map +0 -1
- package/dist/chunks/config-CDat1wXf2.js.map +0 -1
- package/dist/chunks/config-CY0_6cMi2.js.map +0 -1
- package/dist/chunks/config-D3_g2KIn.js +0 -120
- package/dist/chunks/config-D3_g2KIn.js.map +0 -1
- package/dist/chunks/config-D94Z9po52.js.map +0 -1
- package/dist/chunks/config-DAX8Deh1.js.map +0 -1
- package/dist/chunks/config-DP7eseR1.js +0 -92
- package/dist/chunks/config-DP7eseR1.js.map +0 -1
- package/dist/chunks/config-DU2DNSRx2.js.map +0 -1
- package/dist/chunks/config-DhHbU3zO.js +0 -37
- package/dist/chunks/config-DhHbU3zO.js.map +0 -1
- package/dist/chunks/config-DvQIb4kb.js +0 -98
- package/dist/chunks/config-DvQIb4kb.js.map +0 -1
- package/dist/chunks/config-QaIc_gRa.js.map +0 -1
- package/dist/chunks/config-Rw9OyW702.js +0 -87
- package/dist/chunks/config-Rw9OyW702.js.map +0 -1
- package/dist/chunks/config-ScuvHw6k2.js.map +0 -1
- package/dist/chunks/config-WTNhdh6T2.js.map +0 -1
- package/dist/chunks/config-_qPUfb6-2.js +0 -165
- package/dist/chunks/config-_qPUfb6-2.js.map +0 -1
- package/dist/chunks/config-eXB87DOi.js.map +0 -1
- package/dist/chunks/config-gwro_7yn.js +0 -55
- package/dist/chunks/config-gwro_7yn.js.map +0 -1
- package/dist/chunks/context-BSYR7RZs.js +0 -152
- package/dist/chunks/context-BSYR7RZs.js.map +0 -1
- package/dist/chunks/en-COdzxgAX.js +0 -352
- package/dist/chunks/en-COdzxgAX.js.map +0 -1
- package/dist/chunks/es-ClqJ-4hr.js +0 -354
- package/dist/chunks/es-ClqJ-4hr.js.map +0 -1
- package/dist/chunks/es-DGMHwknJ.js +0 -20
- package/dist/chunks/es-DGMHwknJ.js.map +0 -1
- package/dist/chunks/generated-BRkbhyxk.js +0 -3270
- package/dist/chunks/generated-BRkbhyxk.js.map +0 -1
- package/dist/chunks/granular-provider-C6uAujdJ.js +0 -195
- package/dist/chunks/granular-provider-C6uAujdJ.js.map +0 -1
- package/dist/chunks/ru-9z8ix45c.js +0 -356
- package/dist/chunks/ru-9z8ix45c.js.map +0 -1
- package/dist/chunks/useModalOverlay-DrQVYwwA.js +0 -212
- package/dist/chunks/useModalOverlay-DrQVYwwA.js.map +0 -1
- package/dist/chunks/usePortalTarget-Cn-Wiz5d.js +0 -77
- package/dist/chunks/usePortalTarget-Cn-Wiz5d.js.map +0 -1
- package/dist/chunks/validation-5HhpanPP.js +0 -178
- package/dist/chunks/validation-5HhpanPP.js.map +0 -1
- package/dist/components/GrAlert/chunks/GrAlert-BC1lplbY.js +0 -272
- package/dist/components/GrAlert/chunks/GrAlert-BC1lplbY.js.map +0 -1
- package/dist/components/GrAutocomplete/chunks/GrAutocomplete-gY4Xopza.js +0 -860
- package/dist/components/GrAutocomplete/chunks/GrAutocomplete-gY4Xopza.js.map +0 -1
- package/dist/components/GrAvatar/chunks/GrAvatar-CVUujLmn.js +0 -222
- package/dist/components/GrAvatar/chunks/GrAvatar-CVUujLmn.js.map +0 -1
- package/dist/components/GrBadge/chunks/GrBadge-B1tgqfGQ.js +0 -40
- package/dist/components/GrBadge/chunks/GrBadge-B1tgqfGQ.js.map +0 -1
- package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-C-E9betg.js +0 -97
- package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-C-E9betg.js.map +0 -1
- package/dist/components/GrBottomNav/chunks/GrBottomNav-9GH7Dd9E.js +0 -117
- package/dist/components/GrBottomNav/chunks/GrBottomNav-9GH7Dd9E.js.map +0 -1
- package/dist/components/GrBreadcrumbs/chunks/GrBreadcrumbs-DS_-PBVt.js +0 -267
- package/dist/components/GrBreadcrumbs/chunks/GrBreadcrumbs-DS_-PBVt.js.map +0 -1
- package/dist/components/GrButton/chunks/GrButton-D0m_z0XW.js +0 -153
- package/dist/components/GrButton/chunks/GrButton-D0m_z0XW.js.map +0 -1
- package/dist/components/GrCard/chunks/GrCard-DOrGHf2x.js +0 -89
- package/dist/components/GrCard/chunks/GrCard-DOrGHf2x.js.map +0 -1
- package/dist/components/GrCheckbox/chunks/GrCheckbox-BLOp8452.js +0 -262
- package/dist/components/GrCheckbox/chunks/GrCheckbox-BLOp8452.js.map +0 -1
- package/dist/components/GrCheckboxGroup/chunks/GrCheckboxGroup-CXTx2Z5H.js +0 -140
- package/dist/components/GrCheckboxGroup/chunks/GrCheckboxGroup-CXTx2Z5H.js.map +0 -1
- package/dist/components/GrCollapse/chunks/GrCollapse-Kk0DE8tb.js +0 -308
- package/dist/components/GrCollapse/chunks/GrCollapse-Kk0DE8tb.js.map +0 -1
- package/dist/components/GrColorPicker/chunks/GrColorPicker-CkBTzkqn.js +0 -584
- package/dist/components/GrColorPicker/chunks/GrColorPicker-CkBTzkqn.js.map +0 -1
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-BugTlGdj.js +0 -591
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-BugTlGdj.js.map +0 -1
- package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BA6JO7V6.js +0 -144
- package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BA6JO7V6.js.map +0 -1
- package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-Ds5T0GiR.js +0 -200
- package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-Ds5T0GiR.js.map +0 -1
- package/dist/components/GrDataTable/chunks/GrDataTable-CYe2A2WA.js +0 -1055
- package/dist/components/GrDataTable/chunks/GrDataTable-CYe2A2WA.js.map +0 -1
- package/dist/components/GrDialog/chunks/GrDialog-C3tYaA8v.js +0 -255
- package/dist/components/GrDialog/chunks/GrDialog-C3tYaA8v.js.map +0 -1
- package/dist/components/GrDialogService/chunks/GrDialogService-CTBiiJDI.js +0 -656
- package/dist/components/GrDialogService/chunks/GrDialogService-CTBiiJDI.js.map +0 -1
- package/dist/components/GrDivider/chunks/GrDivider-xxq1_fIl.js +0 -109
- package/dist/components/GrDivider/chunks/GrDivider-xxq1_fIl.js.map +0 -1
- package/dist/components/GrDrawer/chunks/GrDrawer-BSSuiNHU.js +0 -251
- package/dist/components/GrDrawer/chunks/GrDrawer-BSSuiNHU.js.map +0 -1
- package/dist/components/GrDropdown/chunks/GrDropdown-Bh6UK2M5.js +0 -300
- package/dist/components/GrDropdown/chunks/GrDropdown-Bh6UK2M5.js.map +0 -1
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-LyfEFUbg.js +0 -421
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-LyfEFUbg.js.map +0 -1
- package/dist/components/GrEmptyState/chunks/GrEmptyState-W7Irx3vc.js +0 -86
- package/dist/components/GrEmptyState/chunks/GrEmptyState-W7Irx3vc.js.map +0 -1
- package/dist/components/GrFileUpload/chunks/GrFileUpload-DuDzC43S.js +0 -1080
- package/dist/components/GrFileUpload/chunks/GrFileUpload-DuDzC43S.js.map +0 -1
- package/dist/components/GrForm/chunks/GrForm-BCHCfIMv.js +0 -326
- package/dist/components/GrForm/chunks/GrForm-BCHCfIMv.js.map +0 -1
- package/dist/components/GrFormField/chunks/GrFormField-CL5rcgj6.js +0 -190
- package/dist/components/GrFormField/chunks/GrFormField-CL5rcgj6.js.map +0 -1
- package/dist/components/GrFormFile/chunks/GrFormFile-BikSD7bg.js +0 -452
- package/dist/components/GrFormFile/chunks/GrFormFile-BikSD7bg.js.map +0 -1
- package/dist/components/GrFormSection/chunks/GrFormSection-BEh5n4jF.js +0 -63
- package/dist/components/GrFormSection/chunks/GrFormSection-BEh5n4jF.js.map +0 -1
- package/dist/components/GrIcon/chunks/GrIcon-BvA2ZGXP.js +0 -57
- package/dist/components/GrIcon/chunks/GrIcon-BvA2ZGXP.js.map +0 -1
- package/dist/components/GrImageViewer/chunks/GrImageViewer-DfD4euH5.js +0 -1128
- package/dist/components/GrImageViewer/chunks/GrImageViewer-DfD4euH5.js.map +0 -1
- package/dist/components/GrInput/chunks/GrInput-2wd7Crs0.js +0 -348
- package/dist/components/GrInput/chunks/GrInput-2wd7Crs0.js.map +0 -1
- package/dist/components/GrInputTag/chunks/GrInputTag-CyV2eY7Z.js +0 -512
- package/dist/components/GrInputTag/chunks/GrInputTag-CyV2eY7Z.js.map +0 -1
- package/dist/components/GrKbd/chunks/GrKbd-DU2lBkRV.js +0 -358
- package/dist/components/GrKbd/chunks/GrKbd-DU2lBkRV.js.map +0 -1
- package/dist/components/GrLink/chunks/GrLink-D-cgUMXW.js +0 -163
- package/dist/components/GrLink/chunks/GrLink-D-cgUMXW.js.map +0 -1
- package/dist/components/GrList/chunks/GrList-4YU1NZtM.js +0 -277
- package/dist/components/GrList/chunks/GrList-4YU1NZtM.js.map +0 -1
- package/dist/components/GrLoading/chunks/GrLoading-CH95CFzS.js +0 -101
- package/dist/components/GrLoading/chunks/GrLoading-CH95CFzS.js.map +0 -1
- package/dist/components/GrModal/chunks/GrModal-CbMMr6W1.js +0 -313
- package/dist/components/GrModal/chunks/GrModal-CbMMr6W1.js.map +0 -1
- package/dist/components/GrNavbar/chunks/GrNavbar-CF0KbM_6.js +0 -104
- package/dist/components/GrNavbar/chunks/GrNavbar-CF0KbM_6.js.map +0 -1
- package/dist/components/GrNumberInput/chunks/GrNumberInput-B5CHZDBj.js +0 -659
- package/dist/components/GrNumberInput/chunks/GrNumberInput-B5CHZDBj.js.map +0 -1
- package/dist/components/GrPagination/chunks/GrPagination-BM4FrD6Q.js +0 -283
- package/dist/components/GrPagination/chunks/GrPagination-BM4FrD6Q.js.map +0 -1
- package/dist/components/GrPopover/chunks/GrPopover-DMH4Jjst.js +0 -216
- package/dist/components/GrPopover/chunks/GrPopover-DMH4Jjst.js.map +0 -1
- package/dist/components/GrProgressBar/chunks/GrProgressBar-xwbNM9QB.js +0 -90
- package/dist/components/GrProgressBar/chunks/GrProgressBar-xwbNM9QB.js.map +0 -1
- package/dist/components/GrProgressCircle/chunks/GrProgressCircle-B8olXRo5.js +0 -210
- package/dist/components/GrProgressCircle/chunks/GrProgressCircle-B8olXRo5.js.map +0 -1
- package/dist/components/GrPromptDialog/chunks/GrPromptDialog-Pwr9NPxK.js +0 -348
- package/dist/components/GrPromptDialog/chunks/GrPromptDialog-Pwr9NPxK.js.map +0 -1
- package/dist/components/GrRadio/chunks/GrRadio-DWiRaMzt.js +0 -253
- package/dist/components/GrRadio/chunks/GrRadio-DWiRaMzt.js.map +0 -1
- package/dist/components/GrRadioGroup/chunks/GrRadioGroup-DIuBw0wk.js +0 -196
- package/dist/components/GrRadioGroup/chunks/GrRadioGroup-DIuBw0wk.js.map +0 -1
- package/dist/components/GrRating/chunks/GrRating-DVFH3lYu.js +0 -316
- package/dist/components/GrRating/chunks/GrRating-DVFH3lYu.js.map +0 -1
- package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-C7W9mgYN.js +0 -777
- package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-C7W9mgYN.js.map +0 -1
- package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-DhX4jjay.js +0 -224
- package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-DhX4jjay.js.map +0 -1
- package/dist/components/GrSegmented/chunks/GrSegmented-CQw3ijqa.js +0 -388
- package/dist/components/GrSegmented/chunks/GrSegmented-CQw3ijqa.js.map +0 -1
- package/dist/components/GrSelect/chunks/GrSelect-B-Voni7D.js +0 -1386
- package/dist/components/GrSelect/chunks/GrSelect-B-Voni7D.js.map +0 -1
- package/dist/components/GrSidebar/chunks/GrSidebar-i7AxjhY_.js +0 -258
- package/dist/components/GrSidebar/chunks/GrSidebar-i7AxjhY_.js.map +0 -1
- package/dist/components/GrSkeleton/chunks/GrSkeleton-DEvNE3bC.js +0 -84
- package/dist/components/GrSkeleton/chunks/GrSkeleton-DEvNE3bC.js.map +0 -1
- package/dist/components/GrSlider/chunks/GrSlider-CyhVsNKn.js +0 -379
- package/dist/components/GrSlider/chunks/GrSlider-CyhVsNKn.js.map +0 -1
- package/dist/components/GrSortableList/chunks/GrSortableList-XB7mXM1W.js +0 -277
- package/dist/components/GrSortableList/chunks/GrSortableList-XB7mXM1W.js.map +0 -1
- package/dist/components/GrSplitter/chunks/GrSplitter-BzxVQwbY.js +0 -268
- package/dist/components/GrSplitter/chunks/GrSplitter-BzxVQwbY.js.map +0 -1
- package/dist/components/GrStatistic/chunks/GrStatistic-DOsM6s5V.js +0 -366
- package/dist/components/GrStatistic/chunks/GrStatistic-DOsM6s5V.js.map +0 -1
- package/dist/components/GrSwitch/chunks/GrSwitch-DpyvVrZG.js +0 -183
- package/dist/components/GrSwitch/chunks/GrSwitch-DpyvVrZG.js.map +0 -1
- package/dist/components/GrTabPanels/chunks/GrTabPanels-BVe1CZdJ.js +0 -81
- package/dist/components/GrTabPanels/chunks/GrTabPanels-BVe1CZdJ.js.map +0 -1
- package/dist/components/GrTable/chunks/GrTable-BfqgwETQ.js +0 -169
- package/dist/components/GrTable/chunks/GrTable-BfqgwETQ.js.map +0 -1
- package/dist/components/GrTabs/chunks/GrTabs-f3-oQenu.js +0 -262
- package/dist/components/GrTabs/chunks/GrTabs-f3-oQenu.js.map +0 -1
- package/dist/components/GrTextarea/chunks/GrTextarea-DSvd1nSy.js +0 -241
- package/dist/components/GrTextarea/chunks/GrTextarea-DSvd1nSy.js.map +0 -1
- package/dist/components/GrTimeline/chunks/GrTimeline-B-h2Yanw.js +0 -285
- package/dist/components/GrTimeline/chunks/GrTimeline-B-h2Yanw.js.map +0 -1
- package/dist/components/GrToaster/chunks/GrToaster-Dqja0Lf9.js +0 -373
- package/dist/components/GrToaster/chunks/GrToaster-Dqja0Lf9.js.map +0 -1
- package/dist/components/GrTooltip/chunks/GrTooltip-Cn08heWz.js +0 -185
- package/dist/components/GrTooltip/chunks/GrTooltip-Cn08heWz.js.map +0 -1
- package/dist/components/GrTree/chunks/GrTree-BR9a2pay.js +0 -1376
- package/dist/components/GrTree/chunks/GrTree-BR9a2pay.js.map +0 -1
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect--muUeB0v.js +0 -637
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect--muUeB0v.js.map +0 -1
- package/dist/types/src/components/GrAlert/index.d.ts +0 -8
- package/dist/types/src/components/GrAvatar/index.d.ts +0 -10
- package/dist/types/src/components/GrBadgeWrap/index.d.ts +0 -7
- package/dist/types/src/components/GrBottomNav/index.d.ts +0 -9
- package/dist/types/src/components/GrButton/GrButton.vue.d.ts +0 -117
- package/dist/types/src/components/GrButton/index.d.ts +0 -11
- package/dist/types/src/components/GrCard/GrCard.vue.d.ts +0 -90
- package/dist/types/src/components/GrCard/defaults.d.ts +0 -15
- package/dist/types/src/components/GrCard/grCardStyles.d.ts +0 -24
- package/dist/types/src/components/GrCard/index.d.ts +0 -8
- package/dist/types/src/components/GrCheckbox/index.d.ts +0 -13
- package/dist/types/src/components/GrCollapse/GrCollapse.vue.d.ts +0 -115
- package/dist/types/src/components/GrCollapse/index.d.ts +0 -9
- package/dist/types/src/components/GrColorPicker/index.d.ts +0 -11
- package/dist/types/src/components/GrCommandPalette/GrCommandPalette.vue.d.ts +0 -163
- package/dist/types/src/components/GrCommandPalette/index.d.ts +0 -10
- package/dist/types/src/components/GrConfigProvider/index.d.ts +0 -6
- package/dist/types/src/components/GrDataTable/GrDataTable.vue.d.ts +0 -213
- package/dist/types/src/components/GrDataTable/grDataTableStyles.d.ts +0 -67
- package/dist/types/src/components/GrDataTable/index.d.ts +0 -13
- package/dist/types/src/components/GrDialog/index.d.ts +0 -12
- package/dist/types/src/components/GrDialogService/index.d.ts +0 -6
- package/dist/types/src/components/GrDropdownMenu/index.d.ts +0 -22
- package/dist/types/src/components/GrEmptyState/index.d.ts +0 -8
- package/dist/types/src/components/GrFileUpload/index.d.ts +0 -18
- package/dist/types/src/components/GrForm/GrForm.vue.d.ts +0 -129
- package/dist/types/src/components/GrForm/index.d.ts +0 -10
- package/dist/types/src/components/GrFormField/GrFormField.vue.d.ts +0 -122
- package/dist/types/src/components/GrFormField/index.d.ts +0 -8
- package/dist/types/src/components/GrFormSection/index.d.ts +0 -8
- package/dist/types/src/components/GrImageViewer/GrImageViewer.vue.d.ts +0 -271
- package/dist/types/src/components/GrInput/GrInput.vue.d.ts +0 -207
- package/dist/types/src/components/GrInputTag/GrInputTag.vue.d.ts +0 -216
- package/dist/types/src/components/GrNumberInput/GrNumberInput.vue.d.ts +0 -223
- package/dist/types/src/components/GrProgressCircle/index.d.ts +0 -11
- package/dist/types/src/components/GrRadio/index.d.ts +0 -9
- package/dist/types/src/components/GrRating/GrRating.vue.d.ts +0 -178
- package/dist/types/src/components/GrResponseErrorBanner/index.d.ts +0 -16
- package/dist/types/src/components/GrSegmented/GrSegmented.vue.d.ts +0 -122
- package/dist/types/src/components/GrSegmented/index.d.ts +0 -11
- package/dist/types/src/components/GrSelect/GrSelect.vue.d.ts +0 -205
- package/dist/types/src/components/GrSidebar/index.d.ts +0 -10
- package/dist/types/src/components/GrSkeleton/index.d.ts +0 -4
- package/dist/types/src/components/GrSplitter/index.d.ts +0 -11
- package/dist/types/src/components/GrStatistic/GrStatistic.vue.d.ts +0 -168
- package/dist/types/src/components/GrSwitch/GrSwitch.vue.d.ts +0 -130
- package/dist/types/src/components/GrTabPanels/index.d.ts +0 -8
- package/dist/types/src/components/GrTable/GrTable.vue.d.ts +0 -177
- package/dist/types/src/components/GrTabs/GrTabs.vue.d.ts +0 -121
- package/dist/types/src/components/GrTabs/index.d.ts +0 -9
- package/dist/types/src/components/GrTimeline/GrTimelineItem.vue.d.ts +0 -84
- package/dist/types/src/components/GrTimeline/index.d.ts +0 -12
- package/dist/types/src/components/GrTreeSelect/GrTreeSelect.vue.d.ts +0 -69
- package/dist/types/src/components/shared/sizes.d.ts +0 -30
- package/dist/types/src/composables/useToast.d.ts +0 -89
- package/dist/types/src/granular-provider/shared.d.ts +0 -90
- package/dist/types/src/i18n/messages/en.d.ts +0 -680
- package/dist/types/src/i18n/messages/es.d.ts +0 -677
- package/dist/types/src/i18n/messages/ru.d.ts +0 -681
- package/dist/types/src/index.d.ts +0 -103
- package/dist/types/src/testing/index.d.ts +0 -12
- /package/dist/chunks/{config-8Pcutu1j2.js → config-8Pcutu1j.js} +0 -0
- /package/dist/chunks/{config-BDfTXHo12.js → config-BDfTXHo1.js} +0 -0
- /package/dist/chunks/{config-BE6n20np2.js → config-BE6n20np.js} +0 -0
- /package/dist/chunks/{config-BKvX0q102.js → config-BKvX0q10.js} +0 -0
- /package/dist/chunks/{config-Baj7Wvx-.js → config-Baj7Wvx-2.js} +0 -0
- /package/dist/chunks/{config-CDat1wXf2.js → config-CDat1wXf.js} +0 -0
- /package/dist/chunks/{config-CY0_6cMi2.js → config-CY0_6cMi.js} +0 -0
- /package/dist/chunks/{config-D94Z9po52.js → config-D94Z9po5.js} +0 -0
- /package/dist/chunks/{config-DAX8Deh1.js → config-DAX8Deh12.js} +0 -0
- /package/dist/chunks/{config-DU2DNSRx2.js → config-DU2DNSRx.js} +0 -0
- /package/dist/chunks/{config-QaIc_gRa.js → config-QaIc_gRa2.js} +0 -0
- /package/dist/chunks/{config-ScuvHw6k2.js → config-ScuvHw6k.js} +0 -0
- /package/dist/chunks/{config-WTNhdh6T2.js → config-WTNhdh6T.js} +0 -0
- /package/dist/chunks/{config-eXB87DOi.js → config-eXB87DOi2.js} +0 -0
- /package/dist/types/{src/components → components}/GrAlert/GrAlert.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrAlert/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrAlert/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrAlert/grAlertStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrAutocomplete/GrAutocomplete.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrAutocomplete/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrAutocomplete/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrAutocomplete/grAutocompleteStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrAutocomplete/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrAutocomplete/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrAvatar/GrAvatar.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrAvatar/GrAvatarGroup.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrAvatar/avatarContext.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrAvatar/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrAvatar/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrAvatar/grAvatarStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrAvatar/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBadge/GrBadge.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBadge/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBadge/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBadge/grBadgeStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBadge/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBadge/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBadgeWrap/GrBadgeWrap.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBadgeWrap/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBadgeWrap/grBadgeWrapStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBadgeWrap/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBottomNav/GrBottomNav.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBottomNav/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBottomNav/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBottomNav/grBottomNavStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBottomNav/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBreadcrumbs/GrBreadcrumbs.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBreadcrumbs/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBreadcrumbs/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBreadcrumbs/grBreadcrumbsStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBreadcrumbs/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrBreadcrumbs/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrButton/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrButton/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrButton/grButtonStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrButton/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrButtonGroup/GrButtonGroup.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrButtonGroup/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrButtonGroup/context.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrButtonGroup/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCard/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCard/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCheckbox/GrCheckbox.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCheckbox/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCheckbox/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCheckbox/grCheckboxGroupContext.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCheckbox/grCheckboxStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCheckbox/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCheckboxGroup/GrCheckboxGroup.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCheckboxGroup/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCheckboxGroup/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCheckboxGroup/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCollapse/GrCollapseItem.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCollapse/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCollapse/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCollapse/grCollapseContext.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCollapse/grCollapseStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCollapse/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrColorPicker/GrColorPicker.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrColorPicker/color.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrColorPicker/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrColorPicker/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrColorPicker/grColorPickerStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrColorPicker/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCommandPalette/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCommandPalette/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCommandPalette/filtering.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCommandPalette/grCommandPaletteStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrCommandPalette/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrConfigProvider/GrConfigProvider.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrConfigProvider/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrConfigProvider/context.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrConfigProvider/zIndexScale.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrConfirmDialog/GrConfirmDialog.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrConfirmDialog/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrConfirmDialog/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrConfirmDialog/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDataTable/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDataTable/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDataTable/grDataTableSort.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDataTable/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDialog/GrDialog.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDialog/GrDialogCloseButton.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDialog/GrDialogFooter.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDialog/GrDialogHeader.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDialog/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDialog/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDialog/dialogShared.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDialog/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDialogService/GrDialogServiceHost.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDialogService/GrDialogServiceItem.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDialogService/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDialogService/store.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDialogService/types.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDialogService/useDialogService.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDivider/GrDivider.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDivider/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDivider/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDivider/grDividerStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDivider/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDivider/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDrawer/GrDrawer.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDrawer/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDrawer/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDrawer/grDrawerStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDrawer/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDrawer/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDropdown/GrDropdown.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDropdown/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDropdown/grDropdownStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDropdown/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDropdown/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDropdownMenu/GrDropdownMenu.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDropdownMenu/GrDropdownMenuColumn.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDropdownMenu/GrDropdownMenuColumns.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDropdownMenu/GrDropdownMenuDivider.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDropdownMenu/GrDropdownMenuGroup.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDropdownMenu/GrDropdownMenuHeader.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDropdownMenu/GrDropdownMenuItem.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDropdownMenu/GrDropdownMenuList.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDropdownMenu/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDropdownMenu/grDropdownMenuStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDropdownMenu/menuModel.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrDropdownMenu/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrEmptyState/GrEmptyState.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrEmptyState/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrEmptyState/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrEmptyState/grEmptyStateStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrEmptyState/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFileUpload/FileValidationError.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFileUpload/GrFileUpload.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFileUpload/acceptValidator.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFileUpload/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFileUpload/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFileUpload/fileEntry.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFileUpload/grFileUploadStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFileUpload/matchAccept.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFileUpload/maxFileSize.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFileUpload/runFileValidators.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFileUpload/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFileUpload/types.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFileUpload/uploadState.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFileUpload/uploadViaXhr.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFileUpload/useDropZone.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFileUpload/usePerFileUpload.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFileUpload/useUploadState.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrForm/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrForm/context.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrForm/fileRule.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrForm/modelSnapshot.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrForm/validation.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFormField/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFormField/context.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFormField/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFormField/grFormFieldStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFormField/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFormFile/GrFormFile.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFormFile/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFormFile/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFormFile/grFormFileStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFormFile/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFormFile/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFormSection/GrFormSection.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFormSection/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFormSection/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFormSection/grFormSectionStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrFormSection/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrIcon/GrIcon.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrIcon/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrIcon/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrIcon/grIconStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrIcon/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrIcon/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrImageViewer/composables/usePointerGestures.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrImageViewer/composables/useViewerKeyboard.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrImageViewer/composables/useWheelGesture.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrImageViewer/composables/useZoomPan.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrImageViewer/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrImageViewer/grImageViewerStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrImageViewer/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrImageViewer/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrInput/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrInput/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrInput/grInputStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrInput/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrInput/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrInputTag/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrInputTag/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrInputTag/grInputTagStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrInputTag/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrInputTag/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrKbd/GrKbd.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrKbd/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrKbd/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrKbd/grKbdStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrKbd/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrKbd/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrLink/GrLink.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrLink/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrLink/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrLink/grLinkStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrLink/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrLink/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrList/GrList.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrList/GrListItem.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrList/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrList/grListStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrList/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrList/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrLoading/GrLoading.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrLoading/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrLoading/grLoadingStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrLoading/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrLoading/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrModal/GrModal.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrModal/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrModal/context.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrModal/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrModal/grModalStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrModal/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrModal/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrNavbar/GrNavbar.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrNavbar/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrNavbar/grNavbarStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrNavbar/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrNavbar/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrNumberInput/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrNumberInput/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrNumberInput/grNumberInputStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrNumberInput/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrNumberInput/numberInputMath.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrNumberInput/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrPagination/GrPagination.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrPagination/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrPagination/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrPagination/grPaginationStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrPagination/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrPagination/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrPopover/GrPopover.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrPopover/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrPopover/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrPopover/grPopoverStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrPopover/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrPopover/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrProgressBar/GrProgressBar.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrProgressBar/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrProgressBar/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrProgressBar/grStyle.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrProgressBar/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrProgressBar/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrProgressCircle/GrProgressCircle.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrProgressCircle/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrProgressCircle/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrProgressCircle/geometry.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrProgressCircle/grProgressCircleStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrProgressCircle/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrPromptDialog/GrPromptDialog.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrPromptDialog/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrPromptDialog/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrPromptDialog/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrRadio/GrRadio.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrRadio/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrRadio/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrRadio/grRadioGroupContext.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrRadio/grRadioStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrRadio/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrRadioGroup/GrRadioGroup.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrRadioGroup/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrRadioGroup/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrRadioGroup/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrRating/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrRating/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrRating/grRatingStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrRating/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrRating/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrResponseErrorBanner/GrFormErrorBanner.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrResponseErrorBanner/GrResponseErrorBanner.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrResponseErrorBanner/GrUploadErrorBanner.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrResponseErrorBanner/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/abortErrorParser.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/createResponseErrorClassifier.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/fileValidationParser.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/httpStatusParser.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/jsonApiErrorParser.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/laravelValidationParser.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/networkErrorParser.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/normalizeError.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/plainMessageParser.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrResponseErrorBanner/parsers/problemDetailsParser.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrResponseErrorBanner/responseError.defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrResponseErrorBanner/responseError.types.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrResponseErrorBanner/useResponseError.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSegmented/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSegmented/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSegmented/grSegmentedStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSegmented/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSelect/composables/useSelectNavigation.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSelect/composables/useSelectPanelItems.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSelect/composables/useSelectValues.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSelect/composables/useSelectVirtualization.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSelect/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSelect/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSelect/grSelectStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSelect/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSelect/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSelect/selectValue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSidebar/GrSidebar.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSidebar/GrSidebarGroup.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSidebar/GrSidebarItem.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSidebar/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSidebar/grSidebarStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSidebar/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSidebar/sidebarContext.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSkeleton/GrSkeleton.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSkeleton/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSkeleton/grSkeletonStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSlider/GrSlider.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSlider/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSlider/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSlider/grSliderStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSlider/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSlider/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSortableList/GrSortableList.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSortableList/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSortableList/grSortableListStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSortableList/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSortableList/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSplitter/GrSplitter.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSplitter/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSplitter/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSplitter/grSplitterStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSplitter/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSplitter/splitterGeometry.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrStatistic/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrStatistic/countUp.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrStatistic/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrStatistic/formatStatisticValue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrStatistic/grStatisticStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrStatistic/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrStatistic/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSwitch/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSwitch/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSwitch/grSwitchStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSwitch/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrSwitch/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTabPanels/GrTabPanel.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTabPanels/GrTabPanels.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTabPanels/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTabPanels/context.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTable/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTable/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTable/grTableStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTable/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTable/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTabs/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTabs/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTabs/grTabsStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTabs/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTextarea/GrTextarea.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTextarea/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTextarea/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTextarea/grTextareaStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTextarea/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTextarea/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTimeline/GrTimeline.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTimeline/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTimeline/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTimeline/grTimelineContext.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTimeline/grTimelineStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTimeline/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTimeline/timelineGroups.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrToaster/GrToaster.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrToaster/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrToaster/grToasterStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrToaster/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrToaster/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTooltip/GrTooltip.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTooltip/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTooltip/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTooltip/grTooltipStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTooltip/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTooltip/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTree/GrTree.vue.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTree/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTree/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTree/grTreeChecking.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTree/grTreeDataAdapter.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTree/grTreeInteractionContext.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTree/grTreeProps.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTree/grTreeStore.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTree/grTreeStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTree/grTreeTypes.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTree/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTree/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTreeSelect/config.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTreeSelect/defaults.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTreeSelect/grTreeSelectStyles.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTreeSelect/grTreeSelectTypes.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTreeSelect/index.d.ts +0 -0
- /package/dist/types/{src/components → components}/GrTreeSelect/safelist.d.ts +0 -0
- /package/dist/types/{src/components → components}/shared/classTokens.d.ts +0 -0
- /package/dist/types/{src/components → components}/shared/hotkey.d.ts +0 -0
- /package/dist/types/{src/components → components}/shared/hotkeyTokens.d.ts +0 -0
- /package/dist/types/{src/components → components}/shared/icon.d.ts +0 -0
- /package/dist/types/{src/components → components}/shared/instance.d.ts +0 -0
- /package/dist/types/{src/components → components}/shared/optionFilter.d.ts +0 -0
- /package/dist/types/{src/components → components}/shared/slotNodes.d.ts +0 -0
- /package/dist/types/{src/components → components}/shared/tones.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/internal/dragSortGeometry.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/internal/focusables.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/internal/inert.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/internal/overlayStack.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/internal/portalRoot.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/internal/useAddonMeasurement.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/internal/useControlAddons.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/internal/useControlledOpen.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/internal/useFilePreviews.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/internal/useFocusWithin.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/internal/useInertOthers.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/internal/useModalOverlay.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/internal/useOverlayPresence.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/internal/useScrollLock.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/internal/useTeleportEnabled.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/useAnnouncer.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/useComboboxNavigation.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/useDismissible.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/useDragGesture.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/useDragSort.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/useFloating.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/useFocusTrap.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/useGrComponentConfig.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/useGrFormControl.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/useGranularityTranslations.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/useOverlayLayer.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/usePortalTarget.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/useRovingFocus.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/useTheme.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/useVirtualList.d.ts +0 -0
- /package/dist/types/{src/directives → directives}/autofocus.d.ts +0 -0
- /package/dist/types/{src/directives → directives}/autosize.d.ts +0 -0
- /package/dist/types/{src/directives → directives}/clickOutside.d.ts +0 -0
- /package/dist/types/{src/directives → directives}/dropzone.d.ts +0 -0
- /package/dist/types/{src/directives → directives}/globalDirectives.d.ts +0 -0
- /package/dist/types/{src/directives → directives}/hotkey.d.ts +0 -0
- /package/dist/types/{src/directives → directives}/index.d.ts +0 -0
- /package/dist/types/{src/directives → directives}/loading.d.ts +0 -0
- /package/dist/types/{src/fileValidation → fileValidation}/FileValidationError.d.ts +0 -0
- /package/dist/types/{src/fileValidation → fileValidation}/acceptValidator.d.ts +0 -0
- /package/dist/types/{src/fileValidation → fileValidation}/allowedExtensionsValidator.d.ts +0 -0
- /package/dist/types/{src/fileValidation → fileValidation}/allowedMimeTypesValidator.d.ts +0 -0
- /package/dist/types/{src/fileValidation → fileValidation}/i18n.d.ts +0 -0
- /package/dist/types/{src/fileValidation → fileValidation}/index.d.ts +0 -0
- /package/dist/types/{src/fileValidation → fileValidation}/matchAccept.d.ts +0 -0
- /package/dist/types/{src/fileValidation → fileValidation}/maxCountValidator.d.ts +0 -0
- /package/dist/types/{src/fileValidation → fileValidation}/maxFileSize.d.ts +0 -0
- /package/dist/types/{src/fileValidation → fileValidation}/maxTotalSizeBytesValidator.d.ts +0 -0
- /package/dist/types/{src/fileValidation → fileValidation}/runFileValidators.d.ts +0 -0
- /package/dist/types/{src/fileValidation → fileValidation}/types.d.ts +0 -0
- /package/dist/types/{src/granular-provider → granular-provider}/index.d.ts +0 -0
- /package/dist/types/{src/granular-provider → granular-provider}/node.d.ts +0 -0
- /package/dist/types/{src/i18n → i18n}/adapter.d.ts +0 -0
- /package/dist/types/{src/i18n → i18n}/all.d.ts +0 -0
- /package/dist/types/{src/i18n → i18n}/index.d.ts +0 -0
- /package/dist/types/{src/i18n → i18n}/messages/const.d.ts +0 -0
- /package/dist/types/{src/i18n → i18n}/messages/index.d.ts +0 -0
- /package/dist/types/{src/internal → internal}/granularityFormat.d.ts +0 -0
- /package/dist/types/{src/internal → internal}/granularityI18n.d.ts +0 -0
- /package/dist/types/{src/internal → internal}/keyboard.d.ts +0 -0
- /package/dist/types/{src/testing → testing}/announcer.d.ts +0 -0
- /package/dist/types/{src/testing → testing}/context.d.ts +0 -0
- /package/dist/types/{src/testing → testing}/env.d.ts +0 -0
- /package/dist/types/{src/testing → testing}/geometry.d.ts +0 -0
- /package/dist/types/{src/testing → testing}/pointer.d.ts +0 -0
- /package/dist/types/{src/theme → theme}/apply.d.ts +0 -0
- /package/dist/types/{src/theme → theme}/color.d.ts +0 -0
- /package/dist/types/{src/theme → theme}/extendTheme.d.ts +0 -0
- /package/dist/types/{src/theme → theme}/index.d.ts +0 -0
- /package/dist/types/{src/theme → theme}/roles.d.ts +0 -0
- /package/dist/types/{src/theme → theme}/tone.d.ts +0 -0
- /package/dist/types/{src/theme → theme}/validate.d.ts +0 -0
- /package/dist/types/{src/tokens → tokens}/generated.d.ts +0 -0
- /package/dist/types/{src/tokens → tokens}/index.d.ts +0 -0
- /package/dist/types/{src/tokens → tokens}/types.d.ts +0 -0
- /package/dist/types/{src/vue → vue}/index.d.ts +0 -0
- /package/dist/types/{src/vue → vue}/plugin.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GrTreeSelect-_LjTRR7X.js","names":["$slots"],"sources":["../../../../src/components/GrTreeSelect/GrTreeSelect.vue","../../../../src/components/GrTreeSelect/GrTreeSelect.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T extends Record<string, any> = any\">\nimport { computed, nextTick, ref, useId, useSlots, watch } from 'vue'\n\nimport { usePortalTarget } from '../../composables/usePortalTarget'\n\nimport { vClickOutside } from '../../directives'\nimport { useFloating } from '../../composables/useFloating'\nimport { useOverlayLayer } from '../../composables/useOverlayLayer'\nimport { useControlAddons } from '../../composables/internal/useControlAddons'\nimport { useControlledOpen } from '../../composables/internal/useControlledOpen'\nimport { useGrComponentSize, useGrThemeAttrs } from '../GrConfigProvider/context'\nimport { useGrFormControl } from '../../composables/useGrFormControl'\nimport { useFocusWithin } from '../../composables/internal/useFocusWithin'\nimport { useGrFormFieldContext } from '../GrFormField/context'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport GrInput from '../GrInput/GrInput.vue'\nimport GrTree, {\n type GrTreeInstance,\n type GrTreeKey,\n type GrTreeNode,\n} from '../GrTree'\nimport type { GrInputSize } from '../GrInput/GrInput.vue'\nimport type { GrTreeSelectModelValue, GrTreeSelectProps } from './grTreeSelectTypes'\nimport { grTreeSelectClass, grTreeSelectPanelClass, grTreeSelectStateClass, paddingX, trailingZoneWidth } from './grTreeSelectStyles'\n\nimport IconCheck from '~icons/lucide/check'\nimport IconChevronDown from '~icons/lucide/chevron-down'\nimport IconLoaderCircle from '~icons/lucide/loader-circle'\nimport IconX from '~icons/lucide/x'\n\nexport interface GrTreeSelectEmits<T extends Record<string, any> = any> {\n (e: 'update:modelValue', value: GrTreeSelectModelValue): void\n (e: 'change', value: GrTreeSelectModelValue): void\n /** Панель открылась/закрылась (`v-model:open`). */\n (e: 'update:open', value: boolean): void\n (e: 'clear'): void\n (e: 'nodeClick', data: T, node: GrTreeNode<T>): void\n (e: 'focus', event: FocusEvent): void\n (e: 'blur', event: FocusEvent): void\n}\n\nconst props = withDefaults(\n defineProps<GrTreeSelectProps<T>>(),\n {\n props: () => ({\n children: 'children',\n label: 'label',\n }),\n nodeKey: 'id' as any,\n defaultExpandedKeys: () => [],\n disabled: false,\n placeholder: undefined,\n size: undefined,\n loading: false,\n invalid: false,\n readonly: false,\n required: false,\n ariaLabel: undefined,\n state: 'default',\n multiple: false,\n showCheckbox: false,\n checkStrictly: false,\n clearable: false,\n open: undefined,\n name: undefined,\n valueDisplay: 'label',\n filterable: false,\n filterPlaceholder: undefined,\n filterInputmode: undefined,\n filterNodeMethod: undefined,\n closeOnSelect: undefined,\n dropdownMaxHeight: 320,\n virtual: false,\n prefixMinWidth: undefined,\n prefixMaxWidth: undefined,\n suffixMinWidth: undefined,\n suffixMaxWidth: undefined,\n prefixFixed: false,\n suffixFixed: false,\n },\n)\n\nconst { t } = useGranularityTranslations()\n\nconst emit = defineEmits<GrTreeSelectEmits<T>>()\n\ndefineSlots<{\n /** Рендер значения внутри триггера (вместо дефолтного текста). */\n value?: (props: { value: GrTreeSelectModelValue; labels: string[]; displayValue: string; pathLabels?: string[] }) => any\n /** Рендер строки дерева. */\n node?: (props: { node: GrTreeNode<T>; data: T; selected: boolean }) => any\n /** Содержимое пустого состояния (когда нет данных). */\n empty?: () => any\n /** Содержимое панели, пока данные едут. */\n loading?: () => any\n /** Аддон слева от значения: иконка, код валюты, метка. */\n prefix?: () => any\n /** Аддон справа от значения, перед крестиком и шевроном. */\n suffix?: () => any\n}>()\n\nconst rootEl = ref<HTMLElement | null>(null)\nconst triggerEl = ref<HTMLInputElement | null>(null)\nconst treeId = `gr-tree-select-tree-${useId()}`\n\n// Контекст `GrFormField` + общий контракт форм-контрола.\nconst field = useGrFormFieldContext()\nconst fieldId = computed(() => field?.id.value)\nconst describedBy = computed(() => field?.describedById.value)\nconst {\n disabled: isDisabled,\n invalid: isInvalid, required: isRequired, readonly: isReadonly } = useGrFormControl(() => props)\n\nfunction focus(): void {\n triggerEl.value?.focus()\n}\n\nfunction blur(): void {\n triggerEl.value?.blur()\n}\n\ndefineExpose({ focus, blur })\nconst filterInputRef = ref<InstanceType<typeof GrInput> | null>(null)\nconst treeRef = ref<GrTreeInstance | null>(null)\nconst panelEl = ref<HTMLElement | null>(null)\n\n// Панель телепортирована в `body`, то есть лежит вне корня, но для пользователя\n// она часть контрола: без неё уход фокуса в панель читался бы как `blur`.\nconst { onFocusIn, onFocusOut } = useFocusWithin(rootEl, {\n enter: event => emit('focus', event),\n leave: event => emit('blur', event),\n containers: () => [panelEl.value],\n})\n\nconst clickOutsideExclude = [() => panelEl.value]\n\nlet hadPointerDownOnTrigger = false\n\n// Имя `open` сохранено: читатели работают с computed-Ref.\nconst { open, setOpen: setOpenState } = useControlledOpen(\n () => props.open,\n next => emit('update:open', next),\n)\nconst filterValue = ref('')\n\nconst { floatingStyle } = useFloating(rootEl, panelEl, open, {\n placement: 'bottom-start',\n matchWidth: true,\n zIndexVar: '--gr-z-dropdown',\n})\n\nconst closeOnSelectResolved = computed(() => {\n return props.closeOnSelect ?? !props.multiple\n})\n\nfunction getChildrenKey() {\n return props.props.children ?? 'children'\n}\n\nfunction getLabelKey() {\n return props.props.label ?? 'label'\n}\n\nfunction nodeLabel(data: T): string {\n const key = getLabelKey() as keyof T\n const v = data[key]\n return v == null ? '' : String(v)\n}\n\nfunction nodeChildren(data: T): T[] {\n const key = getChildrenKey() as keyof T\n const v = data[key]\n return Array.isArray(v) ? (v as any) : []\n}\n\nfunction nodeKeyOf(data: T, index: number, parentKey: GrTreeKey | undefined): GrTreeKey {\n const keyName = props.nodeKey as keyof T\n const v = data[keyName]\n if (v != null)\n return v as GrTreeKey\n\n return parentKey == null ? index : `${String(parentKey)}:${index}`\n}\n\nconst labelByKey = computed(() => {\n const map = new Map<GrTreeKey, string>()\n\n const walk = (items: T[], parentKey: GrTreeKey | undefined) => {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const key = nodeKeyOf(item, i, parentKey)\n map.set(key, nodeLabel(item))\n walk(nodeChildren(item), key)\n }\n }\n\n walk(props.data ?? [], undefined)\n return map\n})\n\nconst pathLabelsByKey = computed(() => {\n const map = new Map<GrTreeKey, string[]>()\n\n const walk = (items: T[], parentKey: GrTreeKey | undefined, parentPath: string[]) => {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const key = nodeKeyOf(item, i, parentKey)\n const label = nodeLabel(item)\n const path = [...parentPath, label]\n map.set(key, path)\n walk(nodeChildren(item), key, path)\n }\n }\n\n walk(props.data ?? [], undefined, [])\n return map\n})\n\nconst selectedKeys = computed<GrTreeKey[]>(() => {\n if (props.multiple) {\n return Array.isArray(props.modelValue) ? props.modelValue : []\n }\n\n const v = props.modelValue\n if (v == null || Array.isArray(v))\n return []\n return [v]\n})\n\nconst selectedKeySet = computed(() => new Set(selectedKeys.value))\n\nconst selectedLabels = computed(() => {\n const map = labelByKey.value\n return selectedKeys.value.map((k) => map.get(k) ?? String(k))\n})\n\nconst selectedPathLabels = computed<string[] | undefined>(() => {\n if (props.multiple)\n return undefined\n\n const key = selectedKeys.value[0]\n if (key == null)\n return undefined\n\n const path = pathLabelsByKey.value.get(key)\n if (path?.length)\n return path\n\n const labels = selectedLabels.value\n return labels.length ? [labels[0]] : undefined\n})\n\nconst displayValue = computed(() => {\n const labels = selectedLabels.value\n if (labels.length === 0)\n return ''\n\n if (!props.multiple) {\n if (props.valueDisplay === 'path') {\n const path = selectedPathLabels.value\n if (path?.length)\n return path.join(' / ')\n }\n return labels[0]\n }\n\n if (labels.length === 1)\n return labels[0]\n return `${labels[0]} +${labels.length - 1}`\n})\n\nconst hasSelection = computed(() => selectedKeys.value.length > 0)\n\n/** Дерево рендерится только когда есть что показать — ссылаться иначе не на что. */\nconst hasTree = computed(() => !props.loading && (props.data?.length ?? 0) > 0)\n\nconst resolvedFilterPlaceholder = computed(() => {\n return props.filterPlaceholder ?? t('gr.treeSelect.filterPlaceholder', 'Search…')\n})\n\nconst resolvedSize = useGrComponentSize(() => props.size, { component: 'GrTreeSelect' })\n\nconst className = computed(() => {\n return grTreeSelectClass({\n size: resolvedSize.value,\n state: props.state,\n invalid: isInvalid.value,\n disabled: isDisabled.value,\n })\n})\n\nconst panelClasses = computed(() => {\n return grTreeSelectPanelClass\n})\n\nconst ADDON_MIN_WIDTH_BY_SIZE: Record<GrInputSize, string> = {\n xs: '2rem',\n sm: '2.25rem',\n md: '2.5rem',\n lg: '3rem',\n}\n\nconst slots = useSlots()\n\nconst {\n hasPrefix,\n hasSuffix,\n prefixEl,\n suffixEl,\n prefixStyle,\n suffixStyle,\n fieldPadding: triggerStyle,\n} = useControlAddons(() => props, {\n defaultMinWidth: () => ADDON_MIN_WIDTH_BY_SIZE[resolvedSize.value],\n paddingX: () => paddingX[resolvedSize.value],\n // Место под крестик и шеврон уже отдано классом `pr-9`, но инлайн-паддинг\n // перекрывает класс целиком — с суффиксом эту зону приходится вернуть числом.\n trailingReserve: () => (slots.suffix ? trailingZoneWidth : '0px'),\n})\n\n// Слот `value` рисуется поверх поля и обязан жить в тех же границах, что и\n// текст под ним. Без аддонов границы задаёт класс — стиль остаётся пустым.\nconst valueOverlayStyle = computed(() => ({\n left: hasPrefix.value ? triggerStyle.value.paddingLeft : undefined,\n right: hasSuffix.value ? triggerStyle.value.paddingRight : undefined,\n}))\n\nfunction setOpen(next: boolean) {\n if (isDisabled.value || isReadonly.value)\n return\n\n setOpenState(next)\n}\n\nfunction onClickOutside(): void {\n setOpen(false)\n}\n\nfunction openDropdown(): void {\n setOpen(true)\n}\n\n/**\n * Стек слоёв возвращает фокус на триггер сразу после закрытия, а у триггера\n * открытие висит на `focus`. Без флага `Escape` из дерева закрывал бы панель и\n * тем же движением открывал её заново.\n */\nlet suppressFocusOpen = false\n\nfunction closeDropdown(): void {\n suppressFocusOpen = true\n setOpen(false)\n setTimeout(() => {\n suppressFocusOpen = false\n }, 0)\n}\n\nfunction toggleDropdown(): void {\n setOpen(!open.value)\n}\n\n// Клик по триггеру сам переключает панель через `@click`; флаг гасит открытие\n// по приходящему следом `focus`, иначе один клик открыл бы и тут же закрыл.\nfunction onTriggerPointerDown(): void {\n hadPointerDownOnTrigger = true\n setTimeout(() => {\n hadPointerDownOnTrigger = false\n }, 0)\n}\n\nfunction onTriggerFocus(): void {\n if (hadPointerDownOnTrigger || suppressFocusOpen)\n return\n openDropdown()\n}\n\n// Возврат фокуса на триггер — из контракта слоя, а не руками через `nextTick`.\nuseOverlayLayer(open, closeDropdown, { root: panelEl })\n\nwatch(\n open,\n async (isOpen) => {\n if (!isOpen) {\n if (filterValue.value.trim().length > 0)\n filterValue.value = ''\n return\n }\n\n // Подсветка дерева идёт за значением: панель могли открыть после того, как\n // значение сменили снаружи.\n if (!props.multiple) {\n const v = props.modelValue\n if (v != null && !Array.isArray(v))\n treeRef.value?.setCurrentKey(v)\n }\n\n if (props.filterable) {\n await nextTick()\n filterInputRef.value?.focus()\n }\n },\n { immediate: true },\n)\n\nwatch(\n () => props.modelValue,\n (v) => {\n if (props.multiple)\n return\n if (v == null || Array.isArray(v)) {\n treeRef.value?.setCurrentKey(undefined)\n return\n }\n treeRef.value?.setCurrentKey(v)\n },\n)\n\nwatch(\n filterValue,\n (v) => {\n treeRef.value?.filter(v)\n },\n)\n\nfunction emitModel(next: GrTreeSelectModelValue) {\n emit('update:modelValue', next)\n emit('change', next)\n}\n\nfunction clear(): void {\n if (isDisabled.value || isReadonly.value)\n return\n\n const next: GrTreeSelectModelValue = props.multiple ? [] : null\n emitModel(next)\n emit('clear')\n if (!props.multiple)\n treeRef.value?.setCurrentKey(undefined)\n}\n\n/**\n * Отдаёт клавиатуру дереву. Панель под `v-show`, поэтому дерево уже в DOM, но\n * скрытый элемент сфокусировать нельзя — сначала открытие, потом кадр, потом\n * фокус. Дальше работают клавиши `GrTree`, а `Escape` возвращает фокус на\n * триггер силами общего стека слоёв.\n */\nasync function focusTree(): Promise<boolean> {\n if (!open.value)\n return false\n\n await nextTick()\n return treeRef.value?.focus() ?? false\n}\n\nfunction onTriggerKeydown(e: KeyboardEvent): void {\n if (isDisabled.value)\n return\n\n if (e.key === 'Escape') {\n e.preventDefault()\n closeDropdown()\n return\n }\n\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n openDropdown()\n\n // При `filterable` фокус уходит в поле поиска (см. watch на `open`), и\n // дальше в дерево ведёт стрелка уже оттуда.\n if (!props.filterable)\n void focusTree()\n }\n}\n\n/** Стрелка из поля поиска — единственный путь из фильтра в дерево. */\nfunction onFilterKeydown(e: KeyboardEvent): void {\n if (e.key !== 'ArrowDown' && e.key !== 'ArrowUp')\n return\n\n e.preventDefault()\n void focusTree()\n}\n\n/** `Tab` уводит из панели — оставлять её открытой за спиной незачем. */\nfunction onPanelKeydown(e: KeyboardEvent): void {\n if (e.key === 'Tab')\n closeDropdown()\n}\n\n// Чекбоксы осмысленны только в множественном выборе: одиночный уже подсвечен\n// текущим узлом.\nconst checkboxMode = computed(() => props.multiple && props.showCheckbox)\n\n// В режиме чекбоксов каскад по родителям и детям считает `GrTree`, а не копия\n// его логики здесь: значение приходит обратно одним `update:checkedKeys`.\nfunction onCheckedKeys(keys: GrTreeKey[]): void {\n if (isDisabled.value || isReadonly.value)\n return\n\n emitModel([...keys])\n}\n\nfunction onNodeClick(data: T, node: GrTreeNode<T>): void {\n emit('nodeClick', data, node)\n\n if (isDisabled.value)\n return\n\n if (checkboxMode.value) {\n // Клик по строке — тот же переключатель отметки, что и сам чекбокс;\n // значение придёт через `update:checkedKeys`, поэтому здесь не эмитим.\n treeRef.value?.setChecked(node.key, !selectedKeySet.value.has(node.key))\n return\n }\n\n if (props.multiple) {\n const next = new Set(selectedKeySet.value)\n if (next.has(node.key))\n next.delete(node.key)\n else\n next.add(node.key)\n emitModel([...next])\n\n if (closeOnSelectResolved.value) {\n closeDropdown()\n }\n return\n }\n\n emitModel(node.key)\n if (closeOnSelectResolved.value) {\n closeDropdown()\n }\n}\n\n// Телепорт включается только ПОСЛЕ монтирования: иначе первый клиентский\n// рендер не совпадает с серверным и ломается гидрация (см. композабл).\nconst { target: portalTarget, enabled: teleportEnabled } = usePortalTarget()\n\n// Тема поддерева на телепортированную панель: в DOM она уезжает в `body`, то\n// есть вне обёртки провайдера, и `data-theme` с неё не наследуется. В дереве\n// компонентов панель остаётся внутри — `inject` доходит, и тему она ставит себе\n// сама.\nconst themeAttrs = useGrThemeAttrs()\n</script>\n\n<template>\n <div\n ref=\"rootEl\"\n v-click-outside=\"{ handler: onClickOutside, enabled: open, exclude: clickOutsideExclude }\"\n data-gr-tree-select\n class=\"relative\"\n @focusin=\"onFocusIn\"\n @focusout=\"onFocusOut\"\n >\n <!-- Нативная форма: hidden на каждый выбранный ключ. -->\n <template v-if=\"name\">\n <input\n v-for=\"key in selectedKeys\"\n :key=\"`hidden-${String(key)}`\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"String(key)\"\n >\n </template>\n <div class=\"relative\">\n <div\n v-if=\"hasPrefix\"\n ref=\"prefixEl\"\n data-gr-tree-select-prefix\n class=\"absolute inset-y-px left-px flex items-center justify-center rounded-l-[var(--gr-radius-control)] border-r border-[var(--gr-brd)] px-2 text-[var(--gr-muted-fg)] pointer-events-none select-none truncate\"\n :style=\"prefixStyle\"\n aria-hidden=\"true\"\n >\n <slot name=\"prefix\" />\n </div>\n\n <input\n :id=\"fieldId\"\n ref=\"triggerEl\"\n data-testid=\"gr-tree-select-trigger\"\n data-gr-tree-select-trigger\n type=\"text\"\n :value=\"displayValue\"\n :placeholder=\"placeholder\"\n :disabled=\"isDisabled\"\n readonly\n role=\"combobox\"\n aria-readonly=\"true\"\n aria-haspopup=\"tree\"\n :aria-expanded=\"open ? 'true' : 'false'\"\n :aria-controls=\"open && hasTree ? treeId : undefined\"\n :aria-invalid=\"isInvalid ? 'true' : undefined\"\n :aria-required=\"isRequired ? 'true' : undefined\"\n :aria-describedby=\"describedBy\"\n :aria-label=\"ariaLabel\"\n class=\"w-full rounded-[var(--gr-radius-control)] border placeholder:text-[var(--gr-muted-fg)] transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]\"\n :class=\"[className, $slots.value ? 'text-transparent placeholder:text-transparent' : '']\"\n :style=\"triggerStyle\"\n @pointerdown=\"onTriggerPointerDown\"\n @click=\"toggleDropdown\"\n @focus=\"onTriggerFocus\"\n @keydown=\"onTriggerKeydown\"\n >\n\n <button\n v-if=\"clearable && hasSelection && !disabled && !isReadonly\"\n data-testid=\"gr-tree-select-clear\"\n data-gr-tree-select-clear\n type=\"button\"\n class=\"absolute top-1/2 -translate-y-1/2 right-3 h-6 w-6 inline-flex items-center justify-center rounded-[var(--gr-radius-control)] text-[var(--gr-muted-fg)] hover:text-[var(--gr-fg)] hover:bg-[color-mix(in_srgb,var(--gr-muted)_25%,transparent)]\"\n :aria-label=\"t('gr.common.clear', 'Clear')\"\n @click.stop=\"clear\"\n >\n <IconX class=\"inline-block h-4 w-4\" aria-hidden=\"true\" />\n </button>\n\n <span\n v-else\n data-testid=\"gr-tree-select-chevron\"\n data-gr-tree-select-chevron\n class=\"absolute top-1/2 -translate-y-1/2 right-3 text-[var(--gr-muted-fg)] pointer-events-none\"\n >\n <IconChevronDown\n class=\"inline-block h-4 w-4 transition-transform duration-[var(--gr-duration-fast)]\"\n :class=\"open ? 'rotate-180' : ''\"\n aria-hidden=\"true\"\n />\n </span>\n\n <div\n v-if=\"hasSuffix\"\n ref=\"suffixEl\"\n data-gr-tree-select-suffix\n class=\"absolute inset-y-px right-9 flex items-center justify-center border-l border-[var(--gr-brd)] px-2 text-[var(--gr-muted-fg)] pointer-events-none select-none truncate\"\n :class=\"suffixFixed ? '[direction:rtl]' : ''\"\n :style=\"suffixStyle\"\n aria-hidden=\"true\"\n >\n <slot name=\"suffix\" />\n </div>\n\n <div\n v-if=\"$slots.value\"\n class=\"absolute inset-y-0 left-3 right-9 flex items-center pointer-events-none\"\n :style=\"valueOverlayStyle\"\n >\n <slot\n name=\"value\"\n :value=\"modelValue\"\n :labels=\"selectedLabels\"\n :display-value=\"displayValue\"\n :path-labels=\"selectedPathLabels\"\n />\n </div>\n </div>\n\n <teleport :to=\"portalTarget\" :disabled=\"!teleportEnabled\">\n <transition\n enter-active-class=\"transition ease-[var(--gr-ease-out)] duration-[var(--gr-duration-fast)]\"\n enter-from-class=\"transform opacity-0 scale-95\"\n enter-to-class=\"transform opacity-100 scale-100\"\n leave-active-class=\"transition ease-[var(--gr-ease-in)] duration-[var(--gr-duration-fast)]\"\n leave-from-class=\"transform opacity-100 scale-100\"\n leave-to-class=\"transform opacity-0 scale-95\"\n >\n <div\n v-show=\"open\"\n ref=\"panelEl\"\n data-testid=\"gr-tree-select-panel\"\n v-bind=\"themeAttrs\"\n data-gr-tree-select-panel\n data-gr-overlay-root\n :style=\"floatingStyle\"\n @keydown=\"onPanelKeydown\"\n >\n <div :class=\"panelClasses\">\n <div v-if=\"filterable\" class=\"p-2 border-b border-[var(--gr-brd)]\">\n <GrInput\n ref=\"filterInputRef\"\n v-model=\"filterValue\"\n data-testid=\"gr-tree-select-filter\"\n data-gr-tree-select-filter\n type=\"search\"\n :inputmode=\"filterInputmode\"\n :placeholder=\"resolvedFilterPlaceholder\"\n size=\"sm\"\n @keydown=\"onFilterKeydown\"\n />\n </div>\n\n <!--\n Скроллер один. При виртуализации его берёт на себя дерево: своя\n высота нужна ему, чтобы посчитать окно, а вложенный скроллер поверх\n дал бы вторую полосу прокрутки на том же списке.\n -->\n <div\n class=\"p-1\"\n :class=\"virtual ? '' : 'overflow-auto'\"\n :style=\"virtual ? undefined : { maxHeight: `${dropdownMaxHeight}px` }\"\n >\n <div\n v-if=\"loading\"\n data-gr-tree-select-loading\n role=\"status\"\n :class=\"grTreeSelectStateClass\"\n >\n <slot name=\"loading\">\n <IconLoaderCircle class=\"block h-4 w-4 animate-spin\" aria-hidden=\"true\" />\n <span>{{ t('gr.treeSelect.loading', 'Loading…') }}</span>\n </slot>\n </div>\n\n <div v-else-if=\"(data?.length ?? 0) === 0\" :class=\"grTreeSelectStateClass\">\n <slot name=\"empty\">\n {{ t('gr.treeSelect.empty', 'No data') }}\n </slot>\n </div>\n\n <GrTree\n v-else\n :id=\"treeId\"\n ref=\"treeRef\"\n :size=\"resolvedSize\"\n :data=\"data\"\n :props=\"props.props\"\n :node-key=\"nodeKey as any\"\n :default-expanded-keys=\"defaultExpandedKeys\"\n :filter-node-method=\"filterNodeMethod\"\n :highlight-current=\"!multiple\"\n :virtual=\"virtual\"\n :max-height=\"dropdownMaxHeight\"\n :show-checkbox=\"checkboxMode\"\n :check-strictly=\"checkStrictly\"\n :checked-keys=\"selectedKeys\"\n @node-click=\"onNodeClick\"\n @update:checked-keys=\"onCheckedKeys\"\n >\n <template #default=\"{ node, data }\">\n <slot\n name=\"node\"\n :node=\"node\"\n :data=\"data\"\n :selected=\"selectedKeySet.has(node.key)\"\n >\n <div class=\"flex items-center gap-2 min-w-0\">\n <!-- Чекбокс дерева уже показывает отметку: вторая галочка\n рядом читалась бы как ошибка. -->\n <span\n v-if=\"!checkboxMode\"\n data-gr-tree-select-check\n class=\"inline-block h-4 w-4 shrink-0\"\n aria-hidden=\"true\"\n >\n <IconCheck v-if=\"selectedKeySet.has(node.key)\" class=\"block h-4 w-4 text-[var(--gr-primary)]\" />\n </span>\n <span class=\"truncate\">{{ node.label }}</span>\n </div>\n </slot>\n </template>\n </GrTree>\n </div>\n </div>\n </div>\n </transition>\n </teleport>\n </div>\n</template>\n","<script setup lang=\"ts\" generic=\"T extends Record<string, any> = any\">\nimport { computed, nextTick, ref, useId, useSlots, watch } from 'vue'\n\nimport { usePortalTarget } from '../../composables/usePortalTarget'\n\nimport { vClickOutside } from '../../directives'\nimport { useFloating } from '../../composables/useFloating'\nimport { useOverlayLayer } from '../../composables/useOverlayLayer'\nimport { useControlAddons } from '../../composables/internal/useControlAddons'\nimport { useControlledOpen } from '../../composables/internal/useControlledOpen'\nimport { useGrComponentSize, useGrThemeAttrs } from '../GrConfigProvider/context'\nimport { useGrFormControl } from '../../composables/useGrFormControl'\nimport { useFocusWithin } from '../../composables/internal/useFocusWithin'\nimport { useGrFormFieldContext } from '../GrFormField/context'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport GrInput from '../GrInput/GrInput.vue'\nimport GrTree, {\n type GrTreeInstance,\n type GrTreeKey,\n type GrTreeNode,\n} from '../GrTree'\nimport type { GrInputSize } from '../GrInput/GrInput.vue'\nimport type { GrTreeSelectModelValue, GrTreeSelectProps } from './grTreeSelectTypes'\nimport { grTreeSelectClass, grTreeSelectPanelClass, grTreeSelectStateClass, paddingX, trailingZoneWidth } from './grTreeSelectStyles'\n\nimport IconCheck from '~icons/lucide/check'\nimport IconChevronDown from '~icons/lucide/chevron-down'\nimport IconLoaderCircle from '~icons/lucide/loader-circle'\nimport IconX from '~icons/lucide/x'\n\nexport interface GrTreeSelectEmits<T extends Record<string, any> = any> {\n (e: 'update:modelValue', value: GrTreeSelectModelValue): void\n (e: 'change', value: GrTreeSelectModelValue): void\n /** Панель открылась/закрылась (`v-model:open`). */\n (e: 'update:open', value: boolean): void\n (e: 'clear'): void\n (e: 'nodeClick', data: T, node: GrTreeNode<T>): void\n (e: 'focus', event: FocusEvent): void\n (e: 'blur', event: FocusEvent): void\n}\n\nconst props = withDefaults(\n defineProps<GrTreeSelectProps<T>>(),\n {\n props: () => ({\n children: 'children',\n label: 'label',\n }),\n nodeKey: 'id' as any,\n defaultExpandedKeys: () => [],\n disabled: false,\n placeholder: undefined,\n size: undefined,\n loading: false,\n invalid: false,\n readonly: false,\n required: false,\n ariaLabel: undefined,\n state: 'default',\n multiple: false,\n showCheckbox: false,\n checkStrictly: false,\n clearable: false,\n open: undefined,\n name: undefined,\n valueDisplay: 'label',\n filterable: false,\n filterPlaceholder: undefined,\n filterInputmode: undefined,\n filterNodeMethod: undefined,\n closeOnSelect: undefined,\n dropdownMaxHeight: 320,\n virtual: false,\n prefixMinWidth: undefined,\n prefixMaxWidth: undefined,\n suffixMinWidth: undefined,\n suffixMaxWidth: undefined,\n prefixFixed: false,\n suffixFixed: false,\n },\n)\n\nconst { t } = useGranularityTranslations()\n\nconst emit = defineEmits<GrTreeSelectEmits<T>>()\n\ndefineSlots<{\n /** Рендер значения внутри триггера (вместо дефолтного текста). */\n value?: (props: { value: GrTreeSelectModelValue; labels: string[]; displayValue: string; pathLabels?: string[] }) => any\n /** Рендер строки дерева. */\n node?: (props: { node: GrTreeNode<T>; data: T; selected: boolean }) => any\n /** Содержимое пустого состояния (когда нет данных). */\n empty?: () => any\n /** Содержимое панели, пока данные едут. */\n loading?: () => any\n /** Аддон слева от значения: иконка, код валюты, метка. */\n prefix?: () => any\n /** Аддон справа от значения, перед крестиком и шевроном. */\n suffix?: () => any\n}>()\n\nconst rootEl = ref<HTMLElement | null>(null)\nconst triggerEl = ref<HTMLInputElement | null>(null)\nconst treeId = `gr-tree-select-tree-${useId()}`\n\n// Контекст `GrFormField` + общий контракт форм-контрола.\nconst field = useGrFormFieldContext()\nconst fieldId = computed(() => field?.id.value)\nconst describedBy = computed(() => field?.describedById.value)\nconst {\n disabled: isDisabled,\n invalid: isInvalid, required: isRequired, readonly: isReadonly } = useGrFormControl(() => props)\n\nfunction focus(): void {\n triggerEl.value?.focus()\n}\n\nfunction blur(): void {\n triggerEl.value?.blur()\n}\n\ndefineExpose({ focus, blur })\nconst filterInputRef = ref<InstanceType<typeof GrInput> | null>(null)\nconst treeRef = ref<GrTreeInstance | null>(null)\nconst panelEl = ref<HTMLElement | null>(null)\n\n// Панель телепортирована в `body`, то есть лежит вне корня, но для пользователя\n// она часть контрола: без неё уход фокуса в панель читался бы как `blur`.\nconst { onFocusIn, onFocusOut } = useFocusWithin(rootEl, {\n enter: event => emit('focus', event),\n leave: event => emit('blur', event),\n containers: () => [panelEl.value],\n})\n\nconst clickOutsideExclude = [() => panelEl.value]\n\nlet hadPointerDownOnTrigger = false\n\n// Имя `open` сохранено: читатели работают с computed-Ref.\nconst { open, setOpen: setOpenState } = useControlledOpen(\n () => props.open,\n next => emit('update:open', next),\n)\nconst filterValue = ref('')\n\nconst { floatingStyle } = useFloating(rootEl, panelEl, open, {\n placement: 'bottom-start',\n matchWidth: true,\n zIndexVar: '--gr-z-dropdown',\n})\n\nconst closeOnSelectResolved = computed(() => {\n return props.closeOnSelect ?? !props.multiple\n})\n\nfunction getChildrenKey() {\n return props.props.children ?? 'children'\n}\n\nfunction getLabelKey() {\n return props.props.label ?? 'label'\n}\n\nfunction nodeLabel(data: T): string {\n const key = getLabelKey() as keyof T\n const v = data[key]\n return v == null ? '' : String(v)\n}\n\nfunction nodeChildren(data: T): T[] {\n const key = getChildrenKey() as keyof T\n const v = data[key]\n return Array.isArray(v) ? (v as any) : []\n}\n\nfunction nodeKeyOf(data: T, index: number, parentKey: GrTreeKey | undefined): GrTreeKey {\n const keyName = props.nodeKey as keyof T\n const v = data[keyName]\n if (v != null)\n return v as GrTreeKey\n\n return parentKey == null ? index : `${String(parentKey)}:${index}`\n}\n\nconst labelByKey = computed(() => {\n const map = new Map<GrTreeKey, string>()\n\n const walk = (items: T[], parentKey: GrTreeKey | undefined) => {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const key = nodeKeyOf(item, i, parentKey)\n map.set(key, nodeLabel(item))\n walk(nodeChildren(item), key)\n }\n }\n\n walk(props.data ?? [], undefined)\n return map\n})\n\nconst pathLabelsByKey = computed(() => {\n const map = new Map<GrTreeKey, string[]>()\n\n const walk = (items: T[], parentKey: GrTreeKey | undefined, parentPath: string[]) => {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const key = nodeKeyOf(item, i, parentKey)\n const label = nodeLabel(item)\n const path = [...parentPath, label]\n map.set(key, path)\n walk(nodeChildren(item), key, path)\n }\n }\n\n walk(props.data ?? [], undefined, [])\n return map\n})\n\nconst selectedKeys = computed<GrTreeKey[]>(() => {\n if (props.multiple) {\n return Array.isArray(props.modelValue) ? props.modelValue : []\n }\n\n const v = props.modelValue\n if (v == null || Array.isArray(v))\n return []\n return [v]\n})\n\nconst selectedKeySet = computed(() => new Set(selectedKeys.value))\n\nconst selectedLabels = computed(() => {\n const map = labelByKey.value\n return selectedKeys.value.map((k) => map.get(k) ?? String(k))\n})\n\nconst selectedPathLabels = computed<string[] | undefined>(() => {\n if (props.multiple)\n return undefined\n\n const key = selectedKeys.value[0]\n if (key == null)\n return undefined\n\n const path = pathLabelsByKey.value.get(key)\n if (path?.length)\n return path\n\n const labels = selectedLabels.value\n return labels.length ? [labels[0]] : undefined\n})\n\nconst displayValue = computed(() => {\n const labels = selectedLabels.value\n if (labels.length === 0)\n return ''\n\n if (!props.multiple) {\n if (props.valueDisplay === 'path') {\n const path = selectedPathLabels.value\n if (path?.length)\n return path.join(' / ')\n }\n return labels[0]\n }\n\n if (labels.length === 1)\n return labels[0]\n return `${labels[0]} +${labels.length - 1}`\n})\n\nconst hasSelection = computed(() => selectedKeys.value.length > 0)\n\n/** Дерево рендерится только когда есть что показать — ссылаться иначе не на что. */\nconst hasTree = computed(() => !props.loading && (props.data?.length ?? 0) > 0)\n\nconst resolvedFilterPlaceholder = computed(() => {\n return props.filterPlaceholder ?? t('gr.treeSelect.filterPlaceholder', 'Search…')\n})\n\nconst resolvedSize = useGrComponentSize(() => props.size, { component: 'GrTreeSelect' })\n\nconst className = computed(() => {\n return grTreeSelectClass({\n size: resolvedSize.value,\n state: props.state,\n invalid: isInvalid.value,\n disabled: isDisabled.value,\n })\n})\n\nconst panelClasses = computed(() => {\n return grTreeSelectPanelClass\n})\n\nconst ADDON_MIN_WIDTH_BY_SIZE: Record<GrInputSize, string> = {\n xs: '2rem',\n sm: '2.25rem',\n md: '2.5rem',\n lg: '3rem',\n}\n\nconst slots = useSlots()\n\nconst {\n hasPrefix,\n hasSuffix,\n prefixEl,\n suffixEl,\n prefixStyle,\n suffixStyle,\n fieldPadding: triggerStyle,\n} = useControlAddons(() => props, {\n defaultMinWidth: () => ADDON_MIN_WIDTH_BY_SIZE[resolvedSize.value],\n paddingX: () => paddingX[resolvedSize.value],\n // Место под крестик и шеврон уже отдано классом `pr-9`, но инлайн-паддинг\n // перекрывает класс целиком — с суффиксом эту зону приходится вернуть числом.\n trailingReserve: () => (slots.suffix ? trailingZoneWidth : '0px'),\n})\n\n// Слот `value` рисуется поверх поля и обязан жить в тех же границах, что и\n// текст под ним. Без аддонов границы задаёт класс — стиль остаётся пустым.\nconst valueOverlayStyle = computed(() => ({\n left: hasPrefix.value ? triggerStyle.value.paddingLeft : undefined,\n right: hasSuffix.value ? triggerStyle.value.paddingRight : undefined,\n}))\n\nfunction setOpen(next: boolean) {\n if (isDisabled.value || isReadonly.value)\n return\n\n setOpenState(next)\n}\n\nfunction onClickOutside(): void {\n setOpen(false)\n}\n\nfunction openDropdown(): void {\n setOpen(true)\n}\n\n/**\n * Стек слоёв возвращает фокус на триггер сразу после закрытия, а у триггера\n * открытие висит на `focus`. Без флага `Escape` из дерева закрывал бы панель и\n * тем же движением открывал её заново.\n */\nlet suppressFocusOpen = false\n\nfunction closeDropdown(): void {\n suppressFocusOpen = true\n setOpen(false)\n setTimeout(() => {\n suppressFocusOpen = false\n }, 0)\n}\n\nfunction toggleDropdown(): void {\n setOpen(!open.value)\n}\n\n// Клик по триггеру сам переключает панель через `@click`; флаг гасит открытие\n// по приходящему следом `focus`, иначе один клик открыл бы и тут же закрыл.\nfunction onTriggerPointerDown(): void {\n hadPointerDownOnTrigger = true\n setTimeout(() => {\n hadPointerDownOnTrigger = false\n }, 0)\n}\n\nfunction onTriggerFocus(): void {\n if (hadPointerDownOnTrigger || suppressFocusOpen)\n return\n openDropdown()\n}\n\n// Возврат фокуса на триггер — из контракта слоя, а не руками через `nextTick`.\nuseOverlayLayer(open, closeDropdown, { root: panelEl })\n\nwatch(\n open,\n async (isOpen) => {\n if (!isOpen) {\n if (filterValue.value.trim().length > 0)\n filterValue.value = ''\n return\n }\n\n // Подсветка дерева идёт за значением: панель могли открыть после того, как\n // значение сменили снаружи.\n if (!props.multiple) {\n const v = props.modelValue\n if (v != null && !Array.isArray(v))\n treeRef.value?.setCurrentKey(v)\n }\n\n if (props.filterable) {\n await nextTick()\n filterInputRef.value?.focus()\n }\n },\n { immediate: true },\n)\n\nwatch(\n () => props.modelValue,\n (v) => {\n if (props.multiple)\n return\n if (v == null || Array.isArray(v)) {\n treeRef.value?.setCurrentKey(undefined)\n return\n }\n treeRef.value?.setCurrentKey(v)\n },\n)\n\nwatch(\n filterValue,\n (v) => {\n treeRef.value?.filter(v)\n },\n)\n\nfunction emitModel(next: GrTreeSelectModelValue) {\n emit('update:modelValue', next)\n emit('change', next)\n}\n\nfunction clear(): void {\n if (isDisabled.value || isReadonly.value)\n return\n\n const next: GrTreeSelectModelValue = props.multiple ? [] : null\n emitModel(next)\n emit('clear')\n if (!props.multiple)\n treeRef.value?.setCurrentKey(undefined)\n}\n\n/**\n * Отдаёт клавиатуру дереву. Панель под `v-show`, поэтому дерево уже в DOM, но\n * скрытый элемент сфокусировать нельзя — сначала открытие, потом кадр, потом\n * фокус. Дальше работают клавиши `GrTree`, а `Escape` возвращает фокус на\n * триггер силами общего стека слоёв.\n */\nasync function focusTree(): Promise<boolean> {\n if (!open.value)\n return false\n\n await nextTick()\n return treeRef.value?.focus() ?? false\n}\n\nfunction onTriggerKeydown(e: KeyboardEvent): void {\n if (isDisabled.value)\n return\n\n if (e.key === 'Escape') {\n e.preventDefault()\n closeDropdown()\n return\n }\n\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n openDropdown()\n\n // При `filterable` фокус уходит в поле поиска (см. watch на `open`), и\n // дальше в дерево ведёт стрелка уже оттуда.\n if (!props.filterable)\n void focusTree()\n }\n}\n\n/** Стрелка из поля поиска — единственный путь из фильтра в дерево. */\nfunction onFilterKeydown(e: KeyboardEvent): void {\n if (e.key !== 'ArrowDown' && e.key !== 'ArrowUp')\n return\n\n e.preventDefault()\n void focusTree()\n}\n\n/** `Tab` уводит из панели — оставлять её открытой за спиной незачем. */\nfunction onPanelKeydown(e: KeyboardEvent): void {\n if (e.key === 'Tab')\n closeDropdown()\n}\n\n// Чекбоксы осмысленны только в множественном выборе: одиночный уже подсвечен\n// текущим узлом.\nconst checkboxMode = computed(() => props.multiple && props.showCheckbox)\n\n// В режиме чекбоксов каскад по родителям и детям считает `GrTree`, а не копия\n// его логики здесь: значение приходит обратно одним `update:checkedKeys`.\nfunction onCheckedKeys(keys: GrTreeKey[]): void {\n if (isDisabled.value || isReadonly.value)\n return\n\n emitModel([...keys])\n}\n\nfunction onNodeClick(data: T, node: GrTreeNode<T>): void {\n emit('nodeClick', data, node)\n\n if (isDisabled.value)\n return\n\n if (checkboxMode.value) {\n // Клик по строке — тот же переключатель отметки, что и сам чекбокс;\n // значение придёт через `update:checkedKeys`, поэтому здесь не эмитим.\n treeRef.value?.setChecked(node.key, !selectedKeySet.value.has(node.key))\n return\n }\n\n if (props.multiple) {\n const next = new Set(selectedKeySet.value)\n if (next.has(node.key))\n next.delete(node.key)\n else\n next.add(node.key)\n emitModel([...next])\n\n if (closeOnSelectResolved.value) {\n closeDropdown()\n }\n return\n }\n\n emitModel(node.key)\n if (closeOnSelectResolved.value) {\n closeDropdown()\n }\n}\n\n// Телепорт включается только ПОСЛЕ монтирования: иначе первый клиентский\n// рендер не совпадает с серверным и ломается гидрация (см. композабл).\nconst { target: portalTarget, enabled: teleportEnabled } = usePortalTarget()\n\n// Тема поддерева на телепортированную панель: в DOM она уезжает в `body`, то\n// есть вне обёртки провайдера, и `data-theme` с неё не наследуется. В дереве\n// компонентов панель остаётся внутри — `inject` доходит, и тему она ставит себе\n// сама.\nconst themeAttrs = useGrThemeAttrs()\n</script>\n\n<template>\n <div\n ref=\"rootEl\"\n v-click-outside=\"{ handler: onClickOutside, enabled: open, exclude: clickOutsideExclude }\"\n data-gr-tree-select\n class=\"relative\"\n @focusin=\"onFocusIn\"\n @focusout=\"onFocusOut\"\n >\n <!-- Нативная форма: hidden на каждый выбранный ключ. -->\n <template v-if=\"name\">\n <input\n v-for=\"key in selectedKeys\"\n :key=\"`hidden-${String(key)}`\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"String(key)\"\n >\n </template>\n <div class=\"relative\">\n <div\n v-if=\"hasPrefix\"\n ref=\"prefixEl\"\n data-gr-tree-select-prefix\n class=\"absolute inset-y-px left-px flex items-center justify-center rounded-l-[var(--gr-radius-control)] border-r border-[var(--gr-brd)] px-2 text-[var(--gr-muted-fg)] pointer-events-none select-none truncate\"\n :style=\"prefixStyle\"\n aria-hidden=\"true\"\n >\n <slot name=\"prefix\" />\n </div>\n\n <input\n :id=\"fieldId\"\n ref=\"triggerEl\"\n data-testid=\"gr-tree-select-trigger\"\n data-gr-tree-select-trigger\n type=\"text\"\n :value=\"displayValue\"\n :placeholder=\"placeholder\"\n :disabled=\"isDisabled\"\n readonly\n role=\"combobox\"\n aria-readonly=\"true\"\n aria-haspopup=\"tree\"\n :aria-expanded=\"open ? 'true' : 'false'\"\n :aria-controls=\"open && hasTree ? treeId : undefined\"\n :aria-invalid=\"isInvalid ? 'true' : undefined\"\n :aria-required=\"isRequired ? 'true' : undefined\"\n :aria-describedby=\"describedBy\"\n :aria-label=\"ariaLabel\"\n class=\"w-full rounded-[var(--gr-radius-control)] border placeholder:text-[var(--gr-muted-fg)] transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]\"\n :class=\"[className, $slots.value ? 'text-transparent placeholder:text-transparent' : '']\"\n :style=\"triggerStyle\"\n @pointerdown=\"onTriggerPointerDown\"\n @click=\"toggleDropdown\"\n @focus=\"onTriggerFocus\"\n @keydown=\"onTriggerKeydown\"\n >\n\n <button\n v-if=\"clearable && hasSelection && !disabled && !isReadonly\"\n data-testid=\"gr-tree-select-clear\"\n data-gr-tree-select-clear\n type=\"button\"\n class=\"absolute top-1/2 -translate-y-1/2 right-3 h-6 w-6 inline-flex items-center justify-center rounded-[var(--gr-radius-control)] text-[var(--gr-muted-fg)] hover:text-[var(--gr-fg)] hover:bg-[color-mix(in_srgb,var(--gr-muted)_25%,transparent)]\"\n :aria-label=\"t('gr.common.clear', 'Clear')\"\n @click.stop=\"clear\"\n >\n <IconX class=\"inline-block h-4 w-4\" aria-hidden=\"true\" />\n </button>\n\n <span\n v-else\n data-testid=\"gr-tree-select-chevron\"\n data-gr-tree-select-chevron\n class=\"absolute top-1/2 -translate-y-1/2 right-3 text-[var(--gr-muted-fg)] pointer-events-none\"\n >\n <IconChevronDown\n class=\"inline-block h-4 w-4 transition-transform duration-[var(--gr-duration-fast)]\"\n :class=\"open ? 'rotate-180' : ''\"\n aria-hidden=\"true\"\n />\n </span>\n\n <div\n v-if=\"hasSuffix\"\n ref=\"suffixEl\"\n data-gr-tree-select-suffix\n class=\"absolute inset-y-px right-9 flex items-center justify-center border-l border-[var(--gr-brd)] px-2 text-[var(--gr-muted-fg)] pointer-events-none select-none truncate\"\n :class=\"suffixFixed ? '[direction:rtl]' : ''\"\n :style=\"suffixStyle\"\n aria-hidden=\"true\"\n >\n <slot name=\"suffix\" />\n </div>\n\n <div\n v-if=\"$slots.value\"\n class=\"absolute inset-y-0 left-3 right-9 flex items-center pointer-events-none\"\n :style=\"valueOverlayStyle\"\n >\n <slot\n name=\"value\"\n :value=\"modelValue\"\n :labels=\"selectedLabels\"\n :display-value=\"displayValue\"\n :path-labels=\"selectedPathLabels\"\n />\n </div>\n </div>\n\n <teleport :to=\"portalTarget\" :disabled=\"!teleportEnabled\">\n <transition\n enter-active-class=\"transition ease-[var(--gr-ease-out)] duration-[var(--gr-duration-fast)]\"\n enter-from-class=\"transform opacity-0 scale-95\"\n enter-to-class=\"transform opacity-100 scale-100\"\n leave-active-class=\"transition ease-[var(--gr-ease-in)] duration-[var(--gr-duration-fast)]\"\n leave-from-class=\"transform opacity-100 scale-100\"\n leave-to-class=\"transform opacity-0 scale-95\"\n >\n <div\n v-show=\"open\"\n ref=\"panelEl\"\n data-testid=\"gr-tree-select-panel\"\n v-bind=\"themeAttrs\"\n data-gr-tree-select-panel\n data-gr-overlay-root\n :style=\"floatingStyle\"\n @keydown=\"onPanelKeydown\"\n >\n <div :class=\"panelClasses\">\n <div v-if=\"filterable\" class=\"p-2 border-b border-[var(--gr-brd)]\">\n <GrInput\n ref=\"filterInputRef\"\n v-model=\"filterValue\"\n data-testid=\"gr-tree-select-filter\"\n data-gr-tree-select-filter\n type=\"search\"\n :inputmode=\"filterInputmode\"\n :placeholder=\"resolvedFilterPlaceholder\"\n size=\"sm\"\n @keydown=\"onFilterKeydown\"\n />\n </div>\n\n <!--\n Скроллер один. При виртуализации его берёт на себя дерево: своя\n высота нужна ему, чтобы посчитать окно, а вложенный скроллер поверх\n дал бы вторую полосу прокрутки на том же списке.\n -->\n <div\n class=\"p-1\"\n :class=\"virtual ? '' : 'overflow-auto'\"\n :style=\"virtual ? undefined : { maxHeight: `${dropdownMaxHeight}px` }\"\n >\n <div\n v-if=\"loading\"\n data-gr-tree-select-loading\n role=\"status\"\n :class=\"grTreeSelectStateClass\"\n >\n <slot name=\"loading\">\n <IconLoaderCircle class=\"block h-4 w-4 animate-spin\" aria-hidden=\"true\" />\n <span>{{ t('gr.treeSelect.loading', 'Loading…') }}</span>\n </slot>\n </div>\n\n <div v-else-if=\"(data?.length ?? 0) === 0\" :class=\"grTreeSelectStateClass\">\n <slot name=\"empty\">\n {{ t('gr.treeSelect.empty', 'No data') }}\n </slot>\n </div>\n\n <GrTree\n v-else\n :id=\"treeId\"\n ref=\"treeRef\"\n :size=\"resolvedSize\"\n :data=\"data\"\n :props=\"props.props\"\n :node-key=\"nodeKey as any\"\n :default-expanded-keys=\"defaultExpandedKeys\"\n :filter-node-method=\"filterNodeMethod\"\n :highlight-current=\"!multiple\"\n :virtual=\"virtual\"\n :max-height=\"dropdownMaxHeight\"\n :show-checkbox=\"checkboxMode\"\n :check-strictly=\"checkStrictly\"\n :checked-keys=\"selectedKeys\"\n @node-click=\"onNodeClick\"\n @update:checked-keys=\"onCheckedKeys\"\n >\n <template #default=\"{ node, data }\">\n <slot\n name=\"node\"\n :node=\"node\"\n :data=\"data\"\n :selected=\"selectedKeySet.has(node.key)\"\n >\n <div class=\"flex items-center gap-2 min-w-0\">\n <!-- Чекбокс дерева уже показывает отметку: вторая галочка\n рядом читалась бы как ошибка. -->\n <span\n v-if=\"!checkboxMode\"\n data-gr-tree-select-check\n class=\"inline-block h-4 w-4 shrink-0\"\n aria-hidden=\"true\"\n >\n <IconCheck v-if=\"selectedKeySet.has(node.key)\" class=\"block h-4 w-4 text-[var(--gr-primary)]\" />\n </span>\n <span class=\"truncate\">{{ node.label }}</span>\n </div>\n </slot>\n </template>\n </GrTree>\n </div>\n </div>\n </div>\n </transition>\n </teleport>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCA,MAAM,QAAQ;EAyCd,MAAM,EAAE,MAAM,2BAA2B;EAEzC,MAAM,OAAO;EAiBb,MAAM,SAAS,IAAwB,IAAI;EAC3C,MAAM,YAAY,IAA6B,IAAI;EACnD,MAAM,SAAS,uBAAuB,MAAM;EAG5C,MAAM,QAAQ,sBAAsB;EACpC,MAAM,UAAU,eAAe,OAAO,GAAG,KAAK;EAC9C,MAAM,cAAc,eAAe,OAAO,cAAc,KAAK;EAC7D,MAAM,EACJ,UAAU,YACV,SAAS,WAAW,UAAU,YAAY,UAAU,eAAe,uBAAuB,KAAK;EAEjG,SAAS,QAAc;GACrB,UAAU,OAAO,MAAM;EACzB;EAEA,SAAS,OAAa;GACpB,UAAU,OAAO,KAAK;EACxB;EAEA,SAAa;GAAE;GAAO;EAAK,CAAC;EAC5B,MAAM,iBAAiB,IAAyC,IAAI;EACpE,MAAM,UAAU,IAA2B,IAAI;EAC/C,MAAM,UAAU,IAAwB,IAAI;EAI5C,MAAM,EAAE,WAAW,eAAe,eAAe,QAAQ;GACvD,QAAO,UAAS,KAAK,SAAS,KAAK;GACnC,QAAO,UAAS,KAAK,QAAQ,KAAK;GAClC,kBAAkB,CAAC,QAAQ,KAAK;EAClC,CAAC;EAED,MAAM,sBAAsB,OAAO,QAAQ,KAAK;EAEhD,IAAI,0BAA0B;EAG9B,MAAM,EAAE,MAAM,SAAS,iBAAiB,wBAChC,MAAM,OACZ,SAAQ,KAAK,eAAe,IAAI,CAClC;EACA,MAAM,cAAc,IAAI,EAAE;EAE1B,MAAM,EAAE,kBAAkB,YAAY,QAAQ,SAAS,MAAM;GAC3D,WAAW;GACX,YAAY;GACZ,WAAW;EACb,CAAC;EAED,MAAM,wBAAwB,eAAe;GAC3C,OAAO,MAAM,iBAAiB,CAAC,MAAM;EACvC,CAAC;EAED,SAAS,iBAAiB;GACxB,OAAO,MAAM,MAAM,YAAY;EACjC;EAEA,SAAS,cAAc;GACrB,OAAO,MAAM,MAAM,SAAS;EAC9B;EAEA,SAAS,UAAU,MAAiB;GAElC,MAAM,IAAI,KADE,YACG;GACf,OAAO,KAAK,OAAO,KAAK,OAAO,CAAC;EAClC;EAEA,SAAS,aAAa,MAAc;GAElC,MAAM,IAAI,KADE,eACG;GACf,OAAO,MAAM,QAAQ,CAAC,IAAK,IAAY,CAAC;EAC1C;EAEA,SAAS,UAAU,MAAS,OAAe,WAA6C;GAEtF,MAAM,IAAI,KADM,MAAM;GAEtB,IAAI,KAAK,MACP,OAAO;GAET,OAAO,aAAa,OAAO,QAAQ,GAAG,OAAO,SAAS,EAAE,GAAG;EAC7D;EAEA,MAAM,aAAa,eAAe;GAChC,MAAM,sBAAM,IAAI,IAAuB;GAEvC,MAAM,QAAQ,OAAY,cAAqC;IAC7D,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;KACrC,MAAM,OAAO,MAAM;KACnB,MAAM,MAAM,UAAU,MAAM,GAAG,SAAS;KACxC,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC;KAC5B,KAAK,aAAa,IAAI,GAAG,GAAG;IAC9B;GACF;GAEA,KAAK,MAAM,QAAQ,CAAC,GAAG,KAAA,CAAS;GAChC,OAAO;EACT,CAAC;EAED,MAAM,kBAAkB,eAAe;GACrC,MAAM,sBAAM,IAAI,IAAyB;GAEzC,MAAM,QAAQ,OAAY,WAAkC,eAAyB;IACnF,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;KACrC,MAAM,OAAO,MAAM;KACnB,MAAM,MAAM,UAAU,MAAM,GAAG,SAAS;KACxC,MAAM,QAAQ,UAAU,IAAI;KAC5B,MAAM,OAAO,CAAC,GAAG,YAAY,KAAK;KAClC,IAAI,IAAI,KAAK,IAAI;KACjB,KAAK,aAAa,IAAI,GAAG,KAAK,IAAI;IACpC;GACF;GAEA,KAAK,MAAM,QAAQ,CAAC,GAAG,KAAA,GAAW,CAAC,CAAC;GACpC,OAAO;EACT,CAAC;EAED,MAAM,eAAe,eAA4B;GAC/C,IAAI,MAAM,UACR,OAAO,MAAM,QAAQ,MAAM,UAAU,IAAI,MAAM,aAAa,CAAC;GAG/D,MAAM,IAAI,MAAM;GAChB,IAAI,KAAK,QAAQ,MAAM,QAAQ,CAAC,GAC9B,OAAO,CAAC;GACV,OAAO,CAAC,CAAC;EACX,CAAC;EAED,MAAM,iBAAiB,eAAe,IAAI,IAAI,aAAa,KAAK,CAAC;EAEjE,MAAM,iBAAiB,eAAe;GACpC,MAAM,MAAM,WAAW;GACvB,OAAO,aAAa,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC;EAC9D,CAAC;EAED,MAAM,qBAAqB,eAAqC;GAC9D,IAAI,MAAM,UACR,OAAO,KAAA;GAET,MAAM,MAAM,aAAa,MAAM;GAC/B,IAAI,OAAO,MACT,OAAO,KAAA;GAET,MAAM,OAAO,gBAAgB,MAAM,IAAI,GAAG;GAC1C,IAAI,MAAM,QACR,OAAO;GAET,MAAM,SAAS,eAAe;GAC9B,OAAO,OAAO,SAAS,CAAC,OAAO,EAAE,IAAI,KAAA;EACvC,CAAC;EAED,MAAM,eAAe,eAAe;GAClC,MAAM,SAAS,eAAe;GAC9B,IAAI,OAAO,WAAW,GACpB,OAAO;GAET,IAAI,CAAC,MAAM,UAAU;IACnB,IAAI,MAAM,iBAAiB,QAAQ;KACjC,MAAM,OAAO,mBAAmB;KAChC,IAAI,MAAM,QACR,OAAO,KAAK,KAAK,KAAK;IAC1B;IACA,OAAO,OAAO;GAChB;GAEA,IAAI,OAAO,WAAW,GACpB,OAAO,OAAO;GAChB,OAAO,GAAG,OAAO,GAAG,IAAI,OAAO,SAAS;EAC1C,CAAC;EAED,MAAM,eAAe,eAAe,aAAa,MAAM,SAAS,CAAC;;EAGjE,MAAM,UAAU,eAAe,CAAC,MAAM,YAAY,MAAM,MAAM,UAAU,KAAK,CAAC;EAE9E,MAAM,4BAA4B,eAAe;GAC/C,OAAO,MAAM,qBAAqB,EAAE,mCAAmC,SAAS;EAClF,CAAC;EAED,MAAM,eAAe,yBAAyB,MAAM,MAAM,EAAE,WAAW,eAAe,CAAC;EAEvF,MAAM,YAAY,eAAe;GAC/B,OAAO,kBAAkB;IACvB,MAAM,aAAa;IACnB,OAAO,MAAM;IACb,SAAS,UAAU;IACnB,UAAU,WAAW;GACvB,CAAC;EACH,CAAC;EAED,MAAM,eAAe,eAAe;GAClC,OAAO;EACT,CAAC;EAED,MAAM,0BAAuD;GAC3D,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;EACN;EAEA,MAAM,QAAQ,SAAS;EAEvB,MAAM,EACJ,WACA,WACA,UACA,UACA,aACA,aACA,cAAc,iBACZ,uBAAuB,OAAO;GAChC,uBAAuB,wBAAwB,aAAa;GAC5D,gBAAgB,SAAS,aAAa;GAGtC,uBAAwB,MAAM,SAAS,oBAAoB;EAC7D,CAAC;EAID,MAAM,oBAAoB,gBAAgB;GACxC,MAAM,UAAU,QAAQ,aAAa,MAAM,cAAc,KAAA;GACzD,OAAO,UAAU,QAAQ,aAAa,MAAM,eAAe,KAAA;EAC7D,EAAE;EAEF,SAAS,QAAQ,MAAe;GAC9B,IAAI,WAAW,SAAS,WAAW,OACjC;GAEF,aAAa,IAAI;EACnB;EAEA,SAAS,iBAAuB;GAC9B,QAAQ,KAAK;EACf;EAEA,SAAS,eAAqB;GAC5B,QAAQ,IAAI;EACd;;;;;;EAOA,IAAI,oBAAoB;EAExB,SAAS,gBAAsB;GAC7B,oBAAoB;GACpB,QAAQ,KAAK;GACb,iBAAiB;IACf,oBAAoB;GACtB,GAAG,CAAC;EACN;EAEA,SAAS,iBAAuB;GAC9B,QAAQ,CAAC,KAAK,KAAK;EACrB;EAIA,SAAS,uBAA6B;GACpC,0BAA0B;GAC1B,iBAAiB;IACf,0BAA0B;GAC5B,GAAG,CAAC;EACN;EAEA,SAAS,iBAAuB;GAC9B,IAAI,2BAA2B,mBAC7B;GACF,aAAa;EACf;EAGA,gBAAgB,MAAM,eAAe,EAAE,MAAM,QAAQ,CAAC;EAEtD,MACE,MACA,OAAO,WAAW;GAChB,IAAI,CAAC,QAAQ;IACX,IAAI,YAAY,MAAM,KAAK,CAAC,CAAC,SAAS,GACpC,YAAY,QAAQ;IACtB;GACF;GAIA,IAAI,CAAC,MAAM,UAAU;IACnB,MAAM,IAAI,MAAM;IAChB,IAAI,KAAK,QAAQ,CAAC,MAAM,QAAQ,CAAC,GAC/B,QAAQ,OAAO,cAAc,CAAC;GAClC;GAEA,IAAI,MAAM,YAAY;IACpB,MAAM,SAAS;IACf,eAAe,OAAO,MAAM;GAC9B;EACF,GACA,EAAE,WAAW,KAAK,CACpB;EAEA,YACQ,MAAM,aACX,MAAM;GACL,IAAI,MAAM,UACR;GACF,IAAI,KAAK,QAAQ,MAAM,QAAQ,CAAC,GAAG;IACjC,QAAQ,OAAO,cAAc,KAAA,CAAS;IACtC;GACF;GACA,QAAQ,OAAO,cAAc,CAAC;EAChC,CACF;EAEA,MACE,cACC,MAAM;GACL,QAAQ,OAAO,OAAO,CAAC;EACzB,CACF;EAEA,SAAS,UAAU,MAA8B;GAC/C,KAAK,qBAAqB,IAAI;GAC9B,KAAK,UAAU,IAAI;EACrB;EAEA,SAAS,QAAc;GACrB,IAAI,WAAW,SAAS,WAAW,OACjC;GAGF,UADqC,MAAM,WAAW,CAAC,IAAI,IAC7C;GACd,KAAK,OAAO;GACZ,IAAI,CAAC,MAAM,UACT,QAAQ,OAAO,cAAc,KAAA,CAAS;EAC1C;;;;;;;EAQA,eAAe,YAA8B;GAC3C,IAAI,CAAC,KAAK,OACR,OAAO;GAET,MAAM,SAAS;GACf,OAAO,QAAQ,OAAO,MAAM,KAAK;EACnC;EAEA,SAAS,iBAAiB,GAAwB;GAChD,IAAI,WAAW,OACb;GAEF,IAAI,EAAE,QAAQ,UAAU;IACtB,EAAE,eAAe;IACjB,cAAc;IACd;GACF;GAEA,IAAI,EAAE,QAAQ,eAAe,EAAE,QAAQ,aAAa,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;IACtF,EAAE,eAAe;IACjB,aAAa;IAIb,IAAI,CAAC,MAAM,YACT,UAAe;GACnB;EACF;;EAGA,SAAS,gBAAgB,GAAwB;GAC/C,IAAI,EAAE,QAAQ,eAAe,EAAE,QAAQ,WACrC;GAEF,EAAE,eAAe;GACjB,UAAe;EACjB;;EAGA,SAAS,eAAe,GAAwB;GAC9C,IAAI,EAAE,QAAQ,OACZ,cAAc;EAClB;EAIA,MAAM,eAAe,eAAe,MAAM,YAAY,MAAM,YAAY;EAIxE,SAAS,cAAc,MAAyB;GAC9C,IAAI,WAAW,SAAS,WAAW,OACjC;GAEF,UAAU,CAAC,GAAG,IAAI,CAAC;EACrB;EAEA,SAAS,YAAY,MAAS,MAA2B;GACvD,KAAK,aAAa,MAAM,IAAI;GAE5B,IAAI,WAAW,OACb;GAEF,IAAI,aAAa,OAAO;IAGtB,QAAQ,OAAO,WAAW,KAAK,KAAK,CAAC,eAAe,MAAM,IAAI,KAAK,GAAG,CAAC;IACvE;GACF;GAEA,IAAI,MAAM,UAAU;IAClB,MAAM,OAAO,IAAI,IAAI,eAAe,KAAK;IACzC,IAAI,KAAK,IAAI,KAAK,GAAG,GACnB,KAAK,OAAO,KAAK,GAAG;SAEpB,KAAK,IAAI,KAAK,GAAG;IACnB,UAAU,CAAC,GAAG,IAAI,CAAC;IAEnB,IAAI,sBAAsB,OACxB,cAAc;IAEhB;GACF;GAEA,UAAU,KAAK,GAAG;GAClB,IAAI,sBAAsB,OACxB,cAAc;EAElB;EAIA,MAAM,EAAE,QAAQ,cAAc,SAAS,oBAAoB,gBAAgB;EAM3E,MAAM,aAAa,gBAAgB;;uCAIjC,mBA2NM,OAAA;aA1NA;IAAJ,KAAI;IAEJ,uBAAA;IACA,OAAM;IACJ,WAAO,OAAA,OAAA,OAAA,MAAA,GAAA,SAAE,MAAA,SAAA,KAAA,MAAA,SAAA,CAAA,CAAA,GAAA,IAAA;IACV,YAAQ,OAAA,OAAA,OAAA,MAAA,GAAA,SAAE,MAAA,UAAA,KAAA,MAAA,UAAA,CAAA,CAAA,GAAA,IAAA;;IAGK,QAAA,QAAA,UAAA,IAAA,GACd,mBAMC,UAAA,EAAA,KAAA,EAAA,GAAA,WALe,aAAA,QAAP,QAAG;yBADZ,mBAMC,SAAA;MAJE,KAAG,UAAY,OAAO,GAAG;MAC1B,MAAK;MACJ,MAAM,QAAA;MACN,OAAO,OAAO,GAAG;;;IAGtB,mBA0FM,OA1FN,YA0FM;KAxFI,MAAA,SAAA,KAAA,UAAA,GADR,mBASM,OAAA;;eAPA;MAAJ,KAAI;MACJ,8BAAA;MACA,OAAM;MACL,OAAK,eAAE,MAAA,WAAA,CAAW;MACnB,eAAY;SAEZ,WAAsB,KAAA,QAAA,QAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA;KAGxB,mBA0BC,SAAA;MAzBE,IAAI,QAAA;eACD;MAAJ,KAAI;MACJ,eAAY;MACZ,+BAAA;MACA,MAAK;MACJ,OAAO,aAAA;MACP,aAAa,QAAA;MACb,UAAU,MAAA,UAAA;MACX,UAAA;MACA,MAAK;MACL,iBAAc;MACd,iBAAc;MACb,iBAAe,MAAA,IAAA,IAAI,SAAA;MACnB,iBAAe,MAAA,IAAA,KAAQ,QAAA,QAAU,SAAS,KAAA;MAC1C,gBAAc,MAAA,SAAA,IAAS,SAAY,KAAA;MACnC,iBAAe,MAAA,UAAA,IAAU,SAAY,KAAA;MACrC,oBAAkB,YAAA;MAClB,cAAY,QAAA;MACb,OAAK,eAAA,CAAC,2NAAyN,CACtN,UAAA,OAAWA,KAAAA,OAAO,QAAK,kDAAA,EAAA,CAAA,CAAA;MAC/B,OAAK,eAAE,MAAA,YAAA,CAAY;MACnB,eAAa;MACb,SAAO;MACP,SAAO;MACP,WAAS;;KAIJ,QAAA,aAAa,aAAA,SAAY,CAAK,QAAA,YAAQ,CAAK,MAAA,UAAA,KAAA,UAAA,GADnD,mBAUS,UAAA;;MARP,eAAY;MACZ,6BAAA;MACA,MAAK;MACL,OAAM;MACL,cAAY,MAAA,CAAA,CAAC,CAAA,mBAAA,OAAA;MACb,SAAK,cAAO,OAAK,CAAA,MAAA,CAAA;SAElB,YAAyD,MAAA,SAAA,GAAA;MAAlD,OAAM;MAAuB,eAAY;0CAGlD,mBAWO,QAXP,YAWO,CALL,YAIE,MAAA,oBAAA,GAAA;MAHA,OAAK,eAAA,CAAC,gFACE,MAAA,IAAA,IAAI,eAAA,EAAA,CAAA;MACZ,eAAY;;KAKR,MAAA,SAAA,KAAA,UAAA,GADR,mBAUM,OAAA;;eARA;MAAJ,KAAI;MACJ,8BAAA;MACA,OAAK,eAAA,CAAC,wKACE,QAAA,cAAW,oBAAA,EAAA,CAAA;MAClB,OAAK,eAAE,MAAA,WAAA,CAAW;MACnB,eAAY;SAEZ,WAAsB,KAAA,QAAA,QAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA;KAIhBA,KAAAA,OAAO,SAAA,UAAA,GADf,mBAYM,OAAA;;MAVJ,OAAM;MACL,OAAK,eAAE,kBAAA,KAAiB;SAEzB,WAME,KAAA,QAAA,SAAA;MAJC,OAAO,QAAA;MACP,QAAQ,eAAA;MACR,cAAe,aAAA;MACf,YAAa,mBAAA;;;kBAKpB,YA4GW,UAAA;KA5GA,IAAI,MAAA,YAAA;KAAe,UAAQ,CAAG,MAAA,eAAA;QACvC,YA0Ga,YAAA;KAzGX,sBAAmB;KACnB,oBAAiB;KACjB,kBAAe;KACf,sBAAmB;KACnB,oBAAiB;KACjB,kBAAe;;4BAmGT,CAAA,eAjGN,mBAiGM,OAjGN,WAiGM;eA/FA;MAAJ,KAAI;MACJ,eAAY;QACJ,MAAA,UAAA,GAAU;MAClB,6BAAA;MACA,wBAAA;MACC,OAAO,MAAA,aAAA;MACP,WAAS;UAEV,mBAsFI,OAAA,EAtFE,OAAK,eAAE,aAAA,KAAY,EAAA,GAAA,CACd,QAAA,cAAA,UAAA,GAAX,mBAYM,OAZN,YAYM,CAXJ,YAUE,iBAAA;eATI;MAAJ,KAAI;kBACK,YAAA;+EAAW,QAAA;MACpB,eAAY;MACZ,8BAAA;MACA,MAAK;MACJ,WAAW,QAAA;MACX,aAAa,0BAAA;MACd,MAAK;MACJ,WAAS;;;;;2CASd,mBAiEM,OAAA;MAhEJ,OAAK,eAAA,CAAC,OACE,QAAA,UAAO,KAAA,eAAA,CAAA;MACd,OAAK,eAAE,QAAA,UAAU,KAAA,IAAS,EAAA,WAAA,GAAmB,QAAA,kBAAiB,IAAA,CAAA;SAGvD,QAAA,WAAA,UAAA,GADR,mBAUM,OAAA;;MARJ,+BAAA;MACA,MAAK;MACJ,OAAK,eAAE,MAAA,sBAAA,CAAsB;SAE9B,WAGO,KAAA,QAAA,WAAA,CAAA,SAAA,CAFL,YAA0E,MAAA,qBAAA,GAAA;MAAxD,OAAM;MAA6B,eAAY;SACjE,mBAAyD,QAAA,MAAA,gBAAhD,MAAA,CAAA,CAAC,CAAA,yBAAA,UAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,MAIG,QAAA,MAAM,UAAM,OAAA,KAAA,UAAA,GAA7B,mBAIM,OAAA;;MAJsC,OAAK,eAAE,MAAA,sBAAA,CAAsB;SACvE,WAEO,KAAA,QAAA,SAAA,CAAA,SAAA,CAAA,gBAAA,gBADF,MAAA,CAAA,CAAC,CAAA,uBAAA,SAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,MAAA,UAAA,GAIR,YAyCS,MAAA,cAAA,GAAA;;MAvCN,IAAI;eACD;MAAJ,KAAI;MACH,MAAM,MAAA,YAAA;MACN,MAAM,QAAA;MACN,OAAO,MAAM;MACb,YAAU,QAAA;MACV,yBAAuB,QAAA;MACvB,sBAAoB,QAAA;MACpB,qBAAiB,CAAG,QAAA;MACpB,SAAS,QAAA;MACT,cAAY,QAAA;MACZ,iBAAe,aAAA;MACf,kBAAgB,QAAA;MAChB,gBAAc,aAAA;MACF;MACZ,wBAAqB;;MAEX,SAAO,SAoBT,EApBa,MAAM,WAAI,CAC9B,WAmBO,KAAA,QAAA,QAAA;OAjBE;OACA;OACN,UAAU,eAAA,MAAe,IAAI,KAAK,GAAG;eAejC,CAbL,mBAYM,OAZN,YAYM,CAAA,CARK,aAAA,SAAA,UAAA,GADT,mBAOO,QAPP,YAOO,CADY,eAAA,MAAe,IAAI,KAAK,GAAG,KAAA,UAAA,GAA5C,YAAgG,MAAA,aAAA,GAAA;;OAAjD,OAAM;4EAEvD,mBAA8C,QAA9C,YAA8C,gBAApB,KAAK,KAAK,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;mCAzFtC,MAAA,IAAA,CAAI,CAAA,CAAA,CAAA,CAAA;;;;aAtHU;IAAc,SAAW,MAAA,IAAA;IAAI,SAAW;GAAmB,CAAA,CAAA,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { n as grTreeSelectSafelist, t as grTreeSelectConfig } from "../../chunks/config-DCFvmHEv.js";
|
|
2
|
-
import { t as GrTreeSelect_default } from "./chunks/GrTreeSelect
|
|
2
|
+
import { t as GrTreeSelect_default } from "./chunks/GrTreeSelect-_LjTRR7X.js";
|
|
3
3
|
export { GrTreeSelect_default as GrTreeSelect, GrTreeSelect_default as default, grTreeSelectConfig, grTreeSelectSafelist };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as
|
|
1
|
+
import { a as useGrComponentSize, i as useGrComponentProp, n as resolveGrConfig, o as useGrConfig, r as useGrComponentDefaults, s as useGrThemeAttrs } from "../chunks/context-CTbuwcYs.js";
|
|
2
2
|
export { resolveGrConfig, useGrComponentDefaults, useGrComponentProp, useGrComponentSize, useGrConfig, useGrThemeAttrs };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as usePortalTarget } from "../chunks/usePortalTarget-
|
|
1
|
+
import { t as usePortalTarget } from "../chunks/usePortalTarget-C0p-mhaM.js";
|
|
2
2
|
export { usePortalTarget };
|
|
@@ -78,8 +78,19 @@ function useToast() {
|
|
|
78
78
|
state.timers.delete(id);
|
|
79
79
|
}
|
|
80
80
|
function push(input) {
|
|
81
|
-
const id = makeId();
|
|
82
81
|
const timeout = input.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
82
|
+
if (input.dedupeKey !== void 0) {
|
|
83
|
+
const existing = state.toasts.find((item) => item.dedupeKey === input.dedupeKey);
|
|
84
|
+
if (existing) {
|
|
85
|
+
applyStage(existing.id, {
|
|
86
|
+
...input,
|
|
87
|
+
tone: input.tone ?? "info",
|
|
88
|
+
timeoutMs: timeout
|
|
89
|
+
});
|
|
90
|
+
return existing.id;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const id = makeId();
|
|
83
94
|
const toast = {
|
|
84
95
|
id,
|
|
85
96
|
title: input.title,
|
|
@@ -87,7 +98,8 @@ function useToast() {
|
|
|
87
98
|
tone: input.tone ?? "info",
|
|
88
99
|
timeoutMs: timeout > 0 ? timeout : 0,
|
|
89
100
|
action: input.action,
|
|
90
|
-
actions: input.actions
|
|
101
|
+
actions: input.actions,
|
|
102
|
+
dedupeKey: input.dedupeKey
|
|
91
103
|
};
|
|
92
104
|
state.toasts.unshift(toast);
|
|
93
105
|
trimQueue();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useToast.js","names":[],"sources":["../../src/composables/useToast.ts"],"sourcesContent":["import { computed, hasInjectionContext, inject, reactive } from 'vue'\nimport type { App, InjectionKey } from 'vue'\n\nimport type { GrButtonSize, GrButtonVariant } from '../components/GrButton/grButtonStyles'\nimport type { GrTone } from '../components/shared/tones'\n\nexport type GrToastTone = GrTone\n\n/**\n * Опциональная action-кнопка тоста: `label` — текст, `onClick` — обработчик.\n * По клику вызывается `onClick`, затем тост закрывается (если `dismissOnClick`\n * не установлен в `false`). `size`/`variant` настраивают вид кнопки.\n */\nexport type ToastAction = {\n label: string\n onClick: () => void\n /** Закрывать ли тост после клика по действию. По умолчанию `true`. */\n dismissOnClick?: boolean\n /** Размер кнопки действия. По умолчанию `sm`. */\n size?: GrButtonSize\n /** Вариант кнопки действия. По умолчанию `outline`. */\n variant?: GrButtonVariant\n}\n\nexport type ToastInput = {\n title: string\n message?: string\n tone?: GrToastTone\n /**\n * Автозакрытие через N мс. `0` или отрицательное значение — «навсегда»\n * (до явного вызова `dismiss(id)` / `clear()`). По умолчанию: `3500`.\n */\n timeoutMs?: number\n /** Одна action-кнопка в теле тоста (шорткат для `actions: [action]`). */\n action?: ToastAction\n /** Несколько action-кнопок в теле тоста. Рендерятся после `action`. */\n actions?: ToastAction[]\n}\n\n/**\n * Сообщения для `promise`. Строка — шорткат для `{ title }`; функция получает\n * результат промиса (или причину отказа), чтобы подставить его в текст.\n */\nexport type ToastPromiseMessages<T> = {\n loading: string | ToastInput\n success: string | ToastInput | ((value: T) => string | ToastInput)\n error: string | ToastInput | ((reason: unknown) => string | ToastInput)\n}\n\nexport type Toast = {\n id: string\n title: string\n message?: string\n tone: GrToastTone\n /** Исходный таймаут автозакрытия, мс (`0` — без автозакрытия). Нужен для progress-бара. */\n timeoutMs: number\n /** Одна action-кнопка в теле тоста. */\n action?: ToastAction\n /** Несколько action-кнопок в теле тоста. */\n actions?: ToastAction[]\n}\n\nconst DEFAULT_TIMEOUT_MS = 3500\nconst IS_SERVER = typeof window === 'undefined'\n\n// Метаданные таймера автозакрытия с поддержкой pause/resume (WCAG 2.2.1: под\n// курсором/фокусом отсчёт должен останавливаться).\ntype ToastTimer = {\n handle: number | null\n /** Сколько мс осталось до автозакрытия на момент последней паузы/старта. */\n remaining: number\n /** `performance.now()` момента запуска текущего отрезка (для вычисления остатка). */\n startedAt: number\n}\n\nexport type ToastState = {\n toasts: Toast[]\n timers: Map<string, ToastTimer>\n /** Потолок очереди: сверх него самые старые тосты вытесняются. */\n maxToasts: number\n}\n\n/**\n * Потолок очереди по умолчанию. `maxVisible` у `GrToaster` режет только видимые,\n * поэтому без него поток событий (переподключение сокета, цикл ошибок) копил бы\n * очередь и вываливал её на пользователя, когда стек освободится.\n */\nconst DEFAULT_MAX_TOASTS = 20\n\nexport type GranularityToastPluginOptions = {\n /** Потолок очереди. По умолчанию `20`. */\n maxToasts?: number\n}\n\nfunction createToastState(maxToasts = DEFAULT_MAX_TOASTS): ToastState {\n return {\n toasts: reactive<Toast[]>([]),\n timers: new Map<string, ToastTimer>(),\n maxToasts: Math.max(1, Math.trunc(maxToasts)),\n }\n}\n\n/** Ключ provide/inject для app-scoped состояния тостов (устанавливает плагин ниже). */\nexport const GRANULARITY_TOAST_STATE: InjectionKey<ToastState> = Symbol.for('@feugene/granularity/toast-state')\n\n/**\n * Vue-плагин: даёт каждому приложению собственное изолированное состояние тостов\n * через `app.provide`. Обязателен для (а) нескольких Vue-приложений на одной\n * странице (микрофронтенды — иначе делят один стек тостов) и (б) SSR (иначе\n * модульное состояние течёт между запросами).\n *\n * ```ts\n * app.use(granularityToastPlugin)\n * app.use(granularityToastPlugin, { maxToasts: 50 })\n * ```\n */\n// Где-то на странице установлен плагин: фолбэк в синглтон для такого приложения —\n// почти наверняка ошибка вызова, а не осознанный выбор.\nlet appScopedToastProvided = false\nlet contextFallbackWarned = false\n\nexport const granularityToastPlugin = {\n install(app: App, options: GranularityToastPluginOptions = {}) {\n appScopedToastProvided = true\n app.provide(GRANULARITY_TOAST_STATE, createToastState(options.maxToasts))\n },\n}\n\n// Ленивый модульный синглтон — канонический фолбэк для простых SPA без плагина.\nlet moduleToastState: ToastState | null = null\n\n/** Сброс dev-предупреждения о фолбэке. Внутреннее API — нужно тестам. */\nexport function resetToastContextWarning(): void {\n contextFallbackWarned = false\n}\n\nfunction resolveToastState(): ToastState {\n // App-scoped состояние (provide через плагин): setup-контекст ИЛИ\n // `app.runWithContext(() => useToast())` — `hasInjectionContext` покрывает оба,\n // поэтому вызов из router guard / интерцептора достаёт состояние приложения.\n if (hasInjectionContext()) {\n const provided = inject(GRANULARITY_TOAST_STATE, null)\n if (provided) return provided\n }\n\n // В SSR модульный фолбэк запрещён: одно mutable-состояние на модуль утекало бы\n // между запросами. Требуем установленный плагин (app.provide).\n if (IS_SERVER) {\n throw new Error(\n '[granularity] useToast requires `app.use(granularityToastPlugin)` during SSR — '\n + 'the module-singleton fallback is disabled server-side to avoid state leaking between requests.',\n )\n }\n\n // Дедуп и текст — инлайном под dev-гардом: бандлер потребителя сворачивает\n // условие в `false` и выкидывает сообщение из продакшн-сборки.\n if (\n appScopedToastProvided && !contextFallbackWarned\n && typeof process !== 'undefined' && process.env.NODE_ENV !== 'production'\n ) {\n contextFallbackWarned = true\n console.warn(\n '[granularity] useToast() вызван вне setup/inject-контекста: app-scoped состояние '\n + 'granularityToastPlugin недоступно, использован модульный синглтон — эти тосты не попадут '\n + 'в GrToaster приложения. Оберните вызов: app.runWithContext(() => useToast()).',\n )\n }\n\n if (!moduleToastState)\n moduleToastState = createToastState()\n\n return moduleToastState\n}\n\nfunction now(): number {\n return typeof performance !== 'undefined' ? performance.now() : Date.now()\n}\n\nfunction makeId(): string {\n return `${Date.now()}-${Math.random().toString(16).slice(2)}`\n}\n\nexport function useToast() {\n const state = resolveToastState()\n const list = computed(() => state.toasts)\n\n function armTimer(id: string, timer: ToastTimer): void {\n if (timer.remaining <= 0 || typeof window === 'undefined') return\n timer.startedAt = now()\n timer.handle = window.setTimeout(() => {\n state.timers.delete(id)\n dismiss(id)\n }, timer.remaining)\n }\n\n function clearTimer(id: string): void {\n const timer = state.timers.get(id)\n if (timer?.handle != null) {\n clearTimeout(timer.handle)\n timer.handle = null\n }\n state.timers.delete(id)\n }\n\n function push(input: ToastInput): string {\n const id = makeId()\n const timeout = input.timeoutMs ?? DEFAULT_TIMEOUT_MS\n const toast: Toast = {\n id,\n title: input.title,\n message: input.message,\n tone: input.tone ?? 'info',\n timeoutMs: timeout > 0 ? timeout : 0,\n action: input.action,\n actions: input.actions,\n }\n\n state.toasts.unshift(toast)\n trimQueue()\n\n if (toast.timeoutMs > 0) {\n const timer: ToastTimer = { handle: null, remaining: toast.timeoutMs, startedAt: now() }\n state.timers.set(id, timer)\n armTimer(id, timer)\n }\n\n return id\n }\n\n // Вытесняем с хвоста — там самые старые: при потоке событий устаревшее\n // уведомление менее ценно, чем свежее. Таймеры снимаем, иначе остались бы\n // висящие `setTimeout` на тосты, которых больше нет.\n //\n // Это флуд-защита уровня состояния, а не очередь показа (`GrToaster` держит\n // видимыми старейших): при переполнении потолка вытеснен может быть и тост,\n // который сейчас на экране, — осознанный компромисс.\n function trimQueue(): void {\n while (state.toasts.length > state.maxToasts) {\n const dropped = state.toasts.pop()\n if (dropped)\n clearTimer(dropped.id)\n }\n }\n\n /**\n * Меняет показанный тост на месте. `timeoutMs` в патче перезапускает таймер\n * (`0` — снова «навсегда»), поэтому «вечный» loading может стать\n * самозакрывающимся success.\n *\n * Возвращает `false`, если тоста уже нет: пользователь мог закрыть его руками,\n * и воскрешать его нельзя.\n */\n function update(id: string, patch: Partial<ToastInput>): boolean {\n const toast = state.toasts.find(item => item.id === id)\n if (!toast) return false\n\n if (patch.title !== undefined) toast.title = patch.title\n if (patch.message !== undefined) toast.message = patch.message\n if (patch.tone !== undefined) toast.tone = patch.tone\n if (patch.action !== undefined) toast.action = patch.action\n if (patch.actions !== undefined) toast.actions = patch.actions\n\n if (patch.timeoutMs !== undefined)\n toast.timeoutMs = rearmTimer(id, patch.timeoutMs)\n\n return true\n }\n\n /** Перезапускает автозакрытие с нового таймаута; `0` и меньше — «навсегда». */\n function rearmTimer(id: string, timeoutMs: number): number {\n clearTimer(id)\n const next = timeoutMs > 0 ? timeoutMs : 0\n\n if (next > 0) {\n const timer: ToastTimer = { handle: null, remaining: next, startedAt: now() }\n state.timers.set(id, timer)\n armTimer(id, timer)\n }\n\n return next\n }\n\n /**\n * Полная замена стадии для `promise()`. В отличие от `update`, поле без\n * значения очищается: успех не должен донашивать `message` и action-кнопки\n * загрузки — патч-семантика оставляла бы их в тосте навсегда.\n */\n function applyStage(id: string, stage: ToastInput & { tone: GrToastTone, timeoutMs: number }): void {\n const toast = state.toasts.find(item => item.id === id)\n if (!toast) return\n\n toast.title = stage.title\n toast.message = stage.message\n toast.tone = stage.tone\n toast.action = stage.action\n toast.actions = stage.actions\n toast.timeoutMs = rearmTimer(id, stage.timeoutMs)\n }\n\n /**\n * Один тост на весь жизненный цикл промиса: «загружаем» переписывается в\n * успех или ошибку, а не закрывается ради нового — стек не дёргается.\n *\n * Каждая стадия **заменяет** предыдущую целиком: поле, не заданное в\n * success/error, очищается, а не наследуется от loading.\n *\n * Возвращает исходный промис и **не глотает отказ**: тост не заменяет\n * обработку ошибки, вызывающий по-прежнему обязан её обработать.\n */\n function promise<T>(input: Promise<T>, messages: ToastPromiseMessages<T>): Promise<T> {\n const id = push({ tone: 'info', ...toToastInput(messages.loading), timeoutMs: 0 })\n\n input.then(\n (value) => {\n const stage = resolveMessage(messages.success, value)\n applyStage(id, { ...stage, tone: stage.tone ?? 'success', timeoutMs: stage.timeoutMs ?? DEFAULT_TIMEOUT_MS })\n },\n (reason: unknown) => {\n const stage = resolveMessage(messages.error, reason)\n applyStage(id, { ...stage, tone: stage.tone ?? 'danger', timeoutMs: stage.timeoutMs ?? DEFAULT_TIMEOUT_MS })\n },\n )\n\n return input\n }\n\n /** Останавливает отсчёт автозакрытия, сохраняя остаток (идемпотентно). */\n function pause(id: string): void {\n const timer = state.timers.get(id)\n if (!timer || timer.handle == null) return\n\n clearTimeout(timer.handle)\n timer.handle = null\n timer.remaining = Math.max(0, timer.remaining - (now() - timer.startedAt))\n }\n\n /** Возобновляет отсчёт с сохранённого остатка (идемпотентно). */\n function resume(id: string): void {\n const timer = state.timers.get(id)\n if (!timer || timer.handle != null) return\n\n armTimer(id, timer)\n }\n\n function dismiss(id: string): void {\n clearTimer(id)\n const index = state.toasts.findIndex(toast => toast.id === id)\n if (index >= 0)\n state.toasts.splice(index, 1)\n }\n\n function clear(): void {\n for (const id of [...state.timers.keys()]) clearTimer(id)\n state.toasts.splice(0, state.toasts.length)\n }\n\n return {\n list,\n push,\n update,\n promise,\n dismiss,\n clear,\n pause,\n resume,\n }\n}\n\nfunction toToastInput(message: string | ToastInput): ToastInput {\n return typeof message === 'string' ? { title: message } : message\n}\n\nfunction resolveMessage<T>(\n message: string | ToastInput | ((value: T) => string | ToastInput),\n value: T,\n): ToastInput {\n return toToastInput(typeof message === 'function' ? message(value) : message)\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useToast.js","names":[],"sources":["../../src/composables/useToast.ts"],"sourcesContent":["import { computed, hasInjectionContext, inject, reactive } from 'vue'\nimport type { App, InjectionKey } from 'vue'\n\nimport type { GrButtonSize, GrButtonVariant } from '../components/GrButton/grButtonStyles'\nimport type { GrTone } from '../components/shared/tones'\n\nexport type GrToastTone = GrTone\n\n/**\n * Опциональная action-кнопка тоста: `label` — текст, `onClick` — обработчик.\n * По клику вызывается `onClick`, затем тост закрывается (если `dismissOnClick`\n * не установлен в `false`). `size`/`variant` настраивают вид кнопки.\n */\nexport type ToastAction = {\n label: string\n onClick: () => void\n /** Закрывать ли тост после клика по действию. По умолчанию `true`. */\n dismissOnClick?: boolean\n /** Размер кнопки действия. По умолчанию `sm`. */\n size?: GrButtonSize\n /** Вариант кнопки действия. По умолчанию `outline`. */\n variant?: GrButtonVariant\n}\n\nexport type ToastInput = {\n title: string\n message?: string\n tone?: GrToastTone\n /**\n * Автозакрытие через N мс. `0` или отрицательное значение — «навсегда»\n * (до явного вызова `dismiss(id)` / `clear()`). По умолчанию: `3500`.\n */\n timeoutMs?: number\n /** Одна action-кнопка в теле тоста (шорткат для `actions: [action]`). */\n action?: ToastAction\n /** Несколько action-кнопок в теле тоста. Рендерятся после `action`. */\n actions?: ToastAction[]\n /**\n * Схлопывать повтор: `push` с уже занятым ключом обновляет **живой** тост\n * и перезапускает его автозакрытие вместо того, чтобы завести второй.\n *\n * Ключ действует только пока тост на экране. Это не то же самое, что помнить\n * последнее показанное: повтор действия с тем же текстом обязан показаться\n * снова, иначе второе «Сохранено» пропадёт молча.\n */\n dedupeKey?: string\n}\n\n/**\n * Сообщения для `promise`. Строка — шорткат для `{ title }`; функция получает\n * результат промиса (или причину отказа), чтобы подставить его в текст.\n */\nexport type ToastPromiseMessages<T> = {\n loading: string | ToastInput\n success: string | ToastInput | ((value: T) => string | ToastInput)\n error: string | ToastInput | ((reason: unknown) => string | ToastInput)\n}\n\nexport type Toast = {\n id: string\n title: string\n message?: string\n tone: GrToastTone\n /** Исходный таймаут автозакрытия, мс (`0` — без автозакрытия). Нужен для progress-бара. */\n timeoutMs: number\n /** Одна action-кнопка в теле тоста. */\n action?: ToastAction\n /** Несколько action-кнопок в теле тоста. */\n actions?: ToastAction[]\n /** Ключ схлопывания повторов, если тост создан с ним. */\n dedupeKey?: string\n}\n\nconst DEFAULT_TIMEOUT_MS = 3500\nconst IS_SERVER = typeof window === 'undefined'\n\n// Метаданные таймера автозакрытия с поддержкой pause/resume (WCAG 2.2.1: под\n// курсором/фокусом отсчёт должен останавливаться).\ntype ToastTimer = {\n handle: number | null\n /** Сколько мс осталось до автозакрытия на момент последней паузы/старта. */\n remaining: number\n /** `performance.now()` момента запуска текущего отрезка (для вычисления остатка). */\n startedAt: number\n}\n\nexport type ToastState = {\n toasts: Toast[]\n timers: Map<string, ToastTimer>\n /** Потолок очереди: сверх него самые старые тосты вытесняются. */\n maxToasts: number\n}\n\n/**\n * Потолок очереди по умолчанию. `maxVisible` у `GrToaster` режет только видимые,\n * поэтому без него поток событий (переподключение сокета, цикл ошибок) копил бы\n * очередь и вываливал её на пользователя, когда стек освободится.\n */\nconst DEFAULT_MAX_TOASTS = 20\n\nexport type GranularityToastPluginOptions = {\n /** Потолок очереди. По умолчанию `20`. */\n maxToasts?: number\n}\n\nfunction createToastState(maxToasts = DEFAULT_MAX_TOASTS): ToastState {\n return {\n toasts: reactive<Toast[]>([]),\n timers: new Map<string, ToastTimer>(),\n maxToasts: Math.max(1, Math.trunc(maxToasts)),\n }\n}\n\n/** Ключ provide/inject для app-scoped состояния тостов (устанавливает плагин ниже). */\nexport const GRANULARITY_TOAST_STATE: InjectionKey<ToastState> = Symbol.for('@feugene/granularity/toast-state')\n\n/**\n * Vue-плагин: даёт каждому приложению собственное изолированное состояние тостов\n * через `app.provide`. Обязателен для (а) нескольких Vue-приложений на одной\n * странице (микрофронтенды — иначе делят один стек тостов) и (б) SSR (иначе\n * модульное состояние течёт между запросами).\n *\n * ```ts\n * app.use(granularityToastPlugin)\n * app.use(granularityToastPlugin, { maxToasts: 50 })\n * ```\n */\n// Где-то на странице установлен плагин: фолбэк в синглтон для такого приложения —\n// почти наверняка ошибка вызова, а не осознанный выбор.\nlet appScopedToastProvided = false\nlet contextFallbackWarned = false\n\nexport const granularityToastPlugin = {\n install(app: App, options: GranularityToastPluginOptions = {}) {\n appScopedToastProvided = true\n app.provide(GRANULARITY_TOAST_STATE, createToastState(options.maxToasts))\n },\n}\n\n// Ленивый модульный синглтон — канонический фолбэк для простых SPA без плагина.\nlet moduleToastState: ToastState | null = null\n\n/** Сброс dev-предупреждения о фолбэке. Внутреннее API — нужно тестам. */\nexport function resetToastContextWarning(): void {\n contextFallbackWarned = false\n}\n\nfunction resolveToastState(): ToastState {\n // App-scoped состояние (provide через плагин): setup-контекст ИЛИ\n // `app.runWithContext(() => useToast())` — `hasInjectionContext` покрывает оба,\n // поэтому вызов из router guard / интерцептора достаёт состояние приложения.\n if (hasInjectionContext()) {\n const provided = inject(GRANULARITY_TOAST_STATE, null)\n if (provided) return provided\n }\n\n // В SSR модульный фолбэк запрещён: одно mutable-состояние на модуль утекало бы\n // между запросами. Требуем установленный плагин (app.provide).\n if (IS_SERVER) {\n throw new Error(\n '[granularity] useToast requires `app.use(granularityToastPlugin)` during SSR — '\n + 'the module-singleton fallback is disabled server-side to avoid state leaking between requests.',\n )\n }\n\n // Дедуп и текст — инлайном под dev-гардом: бандлер потребителя сворачивает\n // условие в `false` и выкидывает сообщение из продакшн-сборки.\n if (\n appScopedToastProvided && !contextFallbackWarned\n && typeof process !== 'undefined' && process.env.NODE_ENV !== 'production'\n ) {\n contextFallbackWarned = true\n console.warn(\n '[granularity] useToast() вызван вне setup/inject-контекста: app-scoped состояние '\n + 'granularityToastPlugin недоступно, использован модульный синглтон — эти тосты не попадут '\n + 'в GrToaster приложения. Оберните вызов: app.runWithContext(() => useToast()).',\n )\n }\n\n if (!moduleToastState)\n moduleToastState = createToastState()\n\n return moduleToastState\n}\n\nfunction now(): number {\n return typeof performance !== 'undefined' ? performance.now() : Date.now()\n}\n\nfunction makeId(): string {\n return `${Date.now()}-${Math.random().toString(16).slice(2)}`\n}\n\nexport function useToast() {\n const state = resolveToastState()\n const list = computed(() => state.toasts)\n\n function armTimer(id: string, timer: ToastTimer): void {\n if (timer.remaining <= 0 || typeof window === 'undefined') return\n timer.startedAt = now()\n timer.handle = window.setTimeout(() => {\n state.timers.delete(id)\n dismiss(id)\n }, timer.remaining)\n }\n\n function clearTimer(id: string): void {\n const timer = state.timers.get(id)\n if (timer?.handle != null) {\n clearTimeout(timer.handle)\n timer.handle = null\n }\n state.timers.delete(id)\n }\n\n function push(input: ToastInput): string {\n const timeout = input.timeoutMs ?? DEFAULT_TIMEOUT_MS\n\n // Схлопывание ищет тост только среди живых. Помнить последний показанный\n // ключ нельзя: тогда повтор того же действия («Сохранено» второй раз)\n // не показался бы вообще — тост уже ушёл, а ключ ещё занят.\n if (input.dedupeKey !== undefined) {\n const existing = state.toasts.find(item => item.dedupeKey === input.dedupeKey)\n if (existing) {\n // Замена целиком, а не патч: повторный `push` — это законченное\n // высказывание, и `message` от прошлого раза донашивать он не должен.\n applyStage(existing.id, { ...input, tone: input.tone ?? 'info', timeoutMs: timeout })\n return existing.id\n }\n }\n\n const id = makeId()\n const toast: Toast = {\n id,\n title: input.title,\n message: input.message,\n tone: input.tone ?? 'info',\n timeoutMs: timeout > 0 ? timeout : 0,\n action: input.action,\n actions: input.actions,\n dedupeKey: input.dedupeKey,\n }\n\n state.toasts.unshift(toast)\n trimQueue()\n\n if (toast.timeoutMs > 0) {\n const timer: ToastTimer = { handle: null, remaining: toast.timeoutMs, startedAt: now() }\n state.timers.set(id, timer)\n armTimer(id, timer)\n }\n\n return id\n }\n\n // Вытесняем с хвоста — там самые старые: при потоке событий устаревшее\n // уведомление менее ценно, чем свежее. Таймеры снимаем, иначе остались бы\n // висящие `setTimeout` на тосты, которых больше нет.\n //\n // Это флуд-защита уровня состояния, а не очередь показа (`GrToaster` держит\n // видимыми старейших): при переполнении потолка вытеснен может быть и тост,\n // который сейчас на экране, — осознанный компромисс.\n function trimQueue(): void {\n while (state.toasts.length > state.maxToasts) {\n const dropped = state.toasts.pop()\n if (dropped)\n clearTimer(dropped.id)\n }\n }\n\n /**\n * Меняет показанный тост на месте. `timeoutMs` в патче перезапускает таймер\n * (`0` — снова «навсегда»), поэтому «вечный» loading может стать\n * самозакрывающимся success.\n *\n * Возвращает `false`, если тоста уже нет: пользователь мог закрыть его руками,\n * и воскрешать его нельзя.\n */\n function update(id: string, patch: Partial<ToastInput>): boolean {\n const toast = state.toasts.find(item => item.id === id)\n if (!toast) return false\n\n if (patch.title !== undefined) toast.title = patch.title\n if (patch.message !== undefined) toast.message = patch.message\n if (patch.tone !== undefined) toast.tone = patch.tone\n if (patch.action !== undefined) toast.action = patch.action\n if (patch.actions !== undefined) toast.actions = patch.actions\n\n if (patch.timeoutMs !== undefined)\n toast.timeoutMs = rearmTimer(id, patch.timeoutMs)\n\n return true\n }\n\n /** Перезапускает автозакрытие с нового таймаута; `0` и меньше — «навсегда». */\n function rearmTimer(id: string, timeoutMs: number): number {\n clearTimer(id)\n const next = timeoutMs > 0 ? timeoutMs : 0\n\n if (next > 0) {\n const timer: ToastTimer = { handle: null, remaining: next, startedAt: now() }\n state.timers.set(id, timer)\n armTimer(id, timer)\n }\n\n return next\n }\n\n /**\n * Полная замена стадии для `promise()`. В отличие от `update`, поле без\n * значения очищается: успех не должен донашивать `message` и action-кнопки\n * загрузки — патч-семантика оставляла бы их в тосте навсегда.\n */\n function applyStage(id: string, stage: ToastInput & { tone: GrToastTone, timeoutMs: number }): void {\n const toast = state.toasts.find(item => item.id === id)\n if (!toast) return\n\n toast.title = stage.title\n toast.message = stage.message\n toast.tone = stage.tone\n toast.action = stage.action\n toast.actions = stage.actions\n toast.timeoutMs = rearmTimer(id, stage.timeoutMs)\n }\n\n /**\n * Один тост на весь жизненный цикл промиса: «загружаем» переписывается в\n * успех или ошибку, а не закрывается ради нового — стек не дёргается.\n *\n * Каждая стадия **заменяет** предыдущую целиком: поле, не заданное в\n * success/error, очищается, а не наследуется от loading.\n *\n * Возвращает исходный промис и **не глотает отказ**: тост не заменяет\n * обработку ошибки, вызывающий по-прежнему обязан её обработать.\n */\n function promise<T>(input: Promise<T>, messages: ToastPromiseMessages<T>): Promise<T> {\n const id = push({ tone: 'info', ...toToastInput(messages.loading), timeoutMs: 0 })\n\n input.then(\n (value) => {\n const stage = resolveMessage(messages.success, value)\n applyStage(id, { ...stage, tone: stage.tone ?? 'success', timeoutMs: stage.timeoutMs ?? DEFAULT_TIMEOUT_MS })\n },\n (reason: unknown) => {\n const stage = resolveMessage(messages.error, reason)\n applyStage(id, { ...stage, tone: stage.tone ?? 'danger', timeoutMs: stage.timeoutMs ?? DEFAULT_TIMEOUT_MS })\n },\n )\n\n return input\n }\n\n /** Останавливает отсчёт автозакрытия, сохраняя остаток (идемпотентно). */\n function pause(id: string): void {\n const timer = state.timers.get(id)\n if (!timer || timer.handle == null) return\n\n clearTimeout(timer.handle)\n timer.handle = null\n timer.remaining = Math.max(0, timer.remaining - (now() - timer.startedAt))\n }\n\n /** Возобновляет отсчёт с сохранённого остатка (идемпотентно). */\n function resume(id: string): void {\n const timer = state.timers.get(id)\n if (!timer || timer.handle != null) return\n\n armTimer(id, timer)\n }\n\n function dismiss(id: string): void {\n clearTimer(id)\n const index = state.toasts.findIndex(toast => toast.id === id)\n if (index >= 0)\n state.toasts.splice(index, 1)\n }\n\n function clear(): void {\n for (const id of [...state.timers.keys()]) clearTimer(id)\n state.toasts.splice(0, state.toasts.length)\n }\n\n return {\n list,\n push,\n update,\n promise,\n dismiss,\n clear,\n pause,\n resume,\n }\n}\n\nfunction toToastInput(message: string | ToastInput): ToastInput {\n return typeof message === 'string' ? { title: message } : message\n}\n\nfunction resolveMessage<T>(\n message: string | ToastInput | ((value: T) => string | ToastInput),\n value: T,\n): ToastInput {\n return toToastInput(typeof message === 'function' ? message(value) : message)\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as ensurePortalRoot } from "../chunks/portalRoot-CVhCgdG6.js";
|
|
2
2
|
import { n as markInert, t as inertableOutside } from "../chunks/inert-DIHCCn_1.js";
|
|
3
|
-
import { t as GrLoading_default } from "../components/GrLoading/chunks/GrLoading-
|
|
3
|
+
import { t as GrLoading_default } from "../components/GrLoading/chunks/GrLoading-C3DZSSuh.js";
|
|
4
4
|
import { createVNode, render } from "vue";
|
|
5
5
|
//#region src/directives/loading.ts
|
|
6
6
|
function isHTMLElement(value) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as granularityDefaultThemes, i as granularityComponentConfigs, n as GRANULARITY_PROVIDER_ID, o as granularityThemeNames, r as createGranularityProvider, t as granularityProvider } from "./chunks/granular-provider-
|
|
1
|
+
import { a as granularityDefaultThemes, i as granularityComponentConfigs, n as GRANULARITY_PROVIDER_ID, o as granularityThemeNames, r as createGranularityProvider, t as granularityProvider } from "./chunks/granular-provider-BW2uopTG.js";
|
|
2
2
|
export { GRANULARITY_PROVIDER_ID, createGranularityProvider, granularityProvider as default, granularityProvider, granularityComponentConfigs, granularityDefaultThemes, granularityThemeNames };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as granularityDefaultThemes, i as granularityComponentConfigs, n as GRANULARITY_PROVIDER_ID, o as granularityThemeNames, r as createGranularityProvider, t as granularityProvider } from "./chunks/granular-provider-
|
|
1
|
+
import { a as granularityDefaultThemes, i as granularityComponentConfigs, n as GRANULARITY_PROVIDER_ID, o as granularityThemeNames, r as createGranularityProvider, t as granularityProvider } from "./chunks/granular-provider-BW2uopTG.js";
|
|
2
2
|
export { GRANULARITY_PROVIDER_ID, createGranularityProvider, granularityProvider as default, granularityProvider, granularityComponentConfigs, granularityDefaultThemes, granularityThemeNames };
|
package/dist/i18n/all.js
CHANGED
package/dist/i18n/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { t as GRANULARITY_I18N_KEY } from "../chunks/adapter-CAOxmn2G.js";
|
|
2
|
-
import { i as GRANULARITY_I18N_BLOCK, n as ru, r as en, t as es } from "../chunks/es-
|
|
2
|
+
import { i as GRANULARITY_I18N_BLOCK, n as ru, r as en, t as es } from "../chunks/es-Do1q9_SF.js";
|
|
3
3
|
export { GRANULARITY_I18N_BLOCK, GRANULARITY_I18N_KEY, en, es, ru };
|