@feugene/granularity 0.4.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/_plugin-vue_export-helper-BG_EqiDU.js +8 -0
- package/dist/chunks/adapter-K6zZTzBi.js +4 -0
- package/dist/chunks/adapter-K6zZTzBi.js.map +1 -0
- package/dist/chunks/arrow-up-DNXrMoAI.js +23 -0
- package/dist/chunks/arrow-up-DNXrMoAI.js.map +1 -0
- package/dist/chunks/classTokens-BPeBXNzu.js +6 -0
- package/dist/chunks/classTokens-BPeBXNzu.js.map +1 -0
- package/dist/chunks/config-1I95Zy4V.js +14 -0
- package/dist/chunks/config-1I95Zy4V.js.map +1 -0
- package/dist/chunks/config-2wgwWaAB.js +8 -0
- package/dist/chunks/config-2wgwWaAB.js.map +1 -0
- package/dist/chunks/config-BA0BWYzs.js +8 -0
- package/dist/chunks/config-BA0BWYzs.js.map +1 -0
- package/dist/chunks/config-BCPyma1I.js +8 -0
- package/dist/chunks/config-BCPyma1I.js.map +1 -0
- package/dist/chunks/config-BDlh6iNz.js +24 -0
- package/dist/chunks/config-BDlh6iNz.js.map +1 -0
- package/dist/chunks/config-BKRmlivc.js +8 -0
- package/dist/chunks/config-BKRmlivc.js.map +1 -0
- package/dist/chunks/config-BN-B2K4r.js +17 -0
- package/dist/chunks/config-BN-B2K4r.js.map +1 -0
- package/dist/chunks/config-BNOf_qjD.js +40 -0
- package/dist/chunks/config-BNOf_qjD.js.map +1 -0
- package/dist/chunks/config-BaMO9dQh.js +20 -0
- package/dist/chunks/config-BaMO9dQh.js.map +1 -0
- package/dist/chunks/config-Bv2G0OU6.js +8 -0
- package/dist/chunks/config-Bv2G0OU6.js.map +1 -0
- package/dist/chunks/config-BvuQUBtZ.js +21 -0
- package/dist/chunks/config-BvuQUBtZ.js.map +1 -0
- package/dist/chunks/config-BzZGpWsj.js +9 -0
- package/dist/chunks/config-BzZGpWsj.js.map +1 -0
- package/dist/chunks/config-C0j836dC.js +8 -0
- package/dist/chunks/config-C0j836dC.js.map +1 -0
- package/dist/chunks/config-C2iI7_QX.js +9 -0
- package/dist/chunks/config-C2iI7_QX.js.map +1 -0
- package/dist/chunks/config-C4AlNm912.js +13 -0
- package/dist/chunks/config-C4AlNm912.js.map +1 -0
- package/dist/chunks/config-C5SJXHQ4.js +9 -0
- package/dist/chunks/config-C5SJXHQ4.js.map +1 -0
- package/dist/chunks/config-C6SBJxcH.js +8 -0
- package/dist/chunks/config-C6SBJxcH.js.map +1 -0
- package/dist/chunks/config-CByfsV-z2.js +9 -0
- package/dist/chunks/config-CByfsV-z2.js.map +1 -0
- package/dist/chunks/config-CM7nbATU2.js +78 -0
- package/dist/chunks/config-CM7nbATU2.js.map +1 -0
- package/dist/chunks/config-CMZE2fu0.js +9 -0
- package/dist/chunks/config-CMZE2fu0.js.map +1 -0
- package/dist/chunks/config-CU_CBd0k.js +22 -0
- package/dist/chunks/config-CU_CBd0k.js.map +1 -0
- package/dist/chunks/config-CUgvsjZx.js +171 -0
- package/dist/chunks/config-CUgvsjZx.js.map +1 -0
- package/dist/chunks/config-CWvHiaqr2.js +23 -0
- package/dist/chunks/config-CWvHiaqr2.js.map +1 -0
- package/dist/chunks/config-Cf0J6wCX.js +58 -0
- package/dist/chunks/config-Cf0J6wCX.js.map +1 -0
- package/dist/chunks/config-CgAY2WP9.js +9 -0
- package/dist/chunks/config-CgAY2WP9.js.map +1 -0
- package/dist/chunks/config-Cgc-D1K4.js +9 -0
- package/dist/chunks/config-Cgc-D1K4.js.map +1 -0
- package/dist/chunks/config-D19pyP4D.js +35 -0
- package/dist/chunks/config-D19pyP4D.js.map +1 -0
- package/dist/chunks/config-DCQO6H6h.js +11 -0
- package/dist/chunks/config-DCQO6H6h.js.map +1 -0
- package/dist/chunks/config-DEv4m-ZP.js +58 -0
- package/dist/chunks/config-DEv4m-ZP.js.map +1 -0
- package/dist/chunks/config-DFRYOcrP.js +9 -0
- package/dist/chunks/config-DFRYOcrP.js.map +1 -0
- package/dist/chunks/config-DTpwUHgF.js +9 -0
- package/dist/chunks/config-DTpwUHgF.js.map +1 -0
- package/dist/chunks/config-DW_RqmUp.js +8 -0
- package/dist/chunks/config-DW_RqmUp.js.map +1 -0
- package/dist/chunks/config-Da90XGsi.js +38 -0
- package/dist/chunks/config-Da90XGsi.js.map +1 -0
- package/dist/chunks/config-DgRJlF00.js +53 -0
- package/dist/chunks/config-DgRJlF00.js.map +1 -0
- package/dist/chunks/config-Dkq0HeLe.js +9 -0
- package/dist/chunks/config-Dkq0HeLe.js.map +1 -0
- package/dist/chunks/config-DmI1IQvI2.js +8 -0
- package/dist/chunks/config-DmI1IQvI2.js.map +1 -0
- package/dist/chunks/config-Dnu4VuO0.js +8 -0
- package/dist/chunks/config-Dnu4VuO0.js.map +1 -0
- package/dist/chunks/config-DxqpV-KM.js +45 -0
- package/dist/chunks/config-DxqpV-KM.js.map +1 -0
- package/dist/chunks/config-TyzU6gLf.js +8 -0
- package/dist/chunks/config-TyzU6gLf.js.map +1 -0
- package/dist/chunks/config-XwI6t8cn.js +39 -0
- package/dist/chunks/config-XwI6t8cn.js.map +1 -0
- package/dist/chunks/config-bpQYM5O-.js +44 -0
- package/dist/chunks/config-bpQYM5O-.js.map +1 -0
- package/dist/chunks/config-etXh7Bsr2.js +9 -0
- package/dist/chunks/config-etXh7Bsr2.js.map +1 -0
- package/dist/chunks/config-fCcRwjIB.js +13 -0
- package/dist/chunks/config-fCcRwjIB.js.map +1 -0
- package/dist/chunks/config-nfOMJXVs.js +9 -0
- package/dist/chunks/config-nfOMJXVs.js.map +1 -0
- package/dist/chunks/config-qJXIIY1E.js +8 -0
- package/dist/chunks/config-qJXIIY1E.js.map +1 -0
- package/dist/chunks/config-r6hzn2Bn2.js +9 -0
- package/dist/chunks/config-r6hzn2Bn2.js.map +1 -0
- package/dist/chunks/config-rQlbnEKn.js +8 -0
- package/dist/chunks/config-rQlbnEKn.js.map +1 -0
- package/dist/chunks/dialogShared-BtXUk6Zc.js +32 -0
- package/dist/chunks/dialogShared-BtXUk6Zc.js.map +1 -0
- package/dist/chunks/en-BeJa78lP.js +48 -0
- package/dist/chunks/en-BeJa78lP.js.map +1 -0
- package/dist/chunks/es-BPqm7rLm.js +20 -0
- package/dist/chunks/es-BPqm7rLm.js.map +1 -0
- package/dist/chunks/es-axYOwwWD.js +48 -0
- package/dist/chunks/es-axYOwwWD.js.map +1 -0
- package/dist/chunks/fileValidation-CwJA8Vmn.js +219 -0
- package/dist/chunks/fileValidation-CwJA8Vmn.js.map +1 -0
- package/dist/chunks/{grBadgeStyles-Bu4H8bFc.js → grBadgeStyles-pqqbVgLk.js} +18 -13
- package/dist/chunks/grBadgeStyles-pqqbVgLk.js.map +1 -0
- package/dist/chunks/{grButtonStyles-C5k0bN2e.js → grButtonStyles-BxZW2x0-.js} +60 -52
- package/dist/chunks/grButtonStyles-BxZW2x0-.js.map +1 -0
- package/dist/chunks/{grDropdownStyles-149X1NeB.js → grDropdownStyles-DMp7RrI9.js} +10 -9
- package/dist/chunks/grDropdownStyles-DMp7RrI9.js.map +1 -0
- package/dist/chunks/grLoadingStyles-CrxZHFL0.js +17 -0
- package/dist/chunks/grLoadingStyles-CrxZHFL0.js.map +1 -0
- package/dist/chunks/{grModalStyles-Dmd4havY.js → grModalStyles-Dv2NXBKi.js} +20 -11
- package/dist/chunks/grModalStyles-Dv2NXBKi.js.map +1 -0
- package/dist/chunks/grSelectStyles-B7doeAQp.js +50 -0
- package/dist/chunks/grSelectStyles-B7doeAQp.js.map +1 -0
- package/dist/chunks/granularityI18n-GCqUz_lo.js +26 -0
- package/dist/chunks/granularityI18n-GCqUz_lo.js.map +1 -0
- package/dist/chunks/info-C0bHmdZq.js +26 -0
- package/dist/chunks/info-C0bHmdZq.js.map +1 -0
- package/dist/chunks/loader-circle-B2rWDk5u.js +23 -0
- package/dist/chunks/loader-circle-B2rWDk5u.js.map +1 -0
- package/dist/chunks/ru-Dqh-2C00.js +48 -0
- package/dist/chunks/ru-Dqh-2C00.js.map +1 -0
- package/dist/chunks/safelist-BF822K15.js +13 -0
- package/dist/chunks/safelist-BF822K15.js.map +1 -0
- package/dist/chunks/safelist-BY7z8fOl.js +24 -0
- package/dist/chunks/safelist-BY7z8fOl.js.map +1 -0
- package/dist/chunks/{shared-BqUqjuxn.js → shared-Cu5QkNmt.js} +149 -111
- package/dist/chunks/shared-Cu5QkNmt.js.map +1 -0
- package/dist/chunks/transition-mJ3PZCHH.js +1692 -0
- package/dist/chunks/transition-mJ3PZCHH.js.map +1 -0
- package/dist/chunks/x-Pa6C2hwi.js +23 -0
- package/dist/chunks/x-Pa6C2hwi.js.map +1 -0
- package/dist/chunks/x-circle-DQSlBLmX.js +67 -0
- package/dist/chunks/x-circle-DQSlBLmX.js.map +1 -0
- package/dist/components/GrAlert/chunks/GrAlert-BjerGcU8.js +146 -0
- package/dist/components/GrAlert/chunks/GrAlert-BjerGcU8.js.map +1 -0
- package/dist/components/GrAlert/index.js +3 -3
- package/dist/components/GrAvatar/chunks/GrAvatar-BjnPKNAL.js +41 -0
- package/dist/components/GrAvatar/chunks/GrAvatar-BjnPKNAL.js.map +1 -0
- package/dist/components/GrAvatar/index.js +3 -3
- package/dist/components/GrBadge/chunks/GrBadge-wuIb4_2K.js +32 -0
- package/dist/components/GrBadge/chunks/GrBadge-wuIb4_2K.js.map +1 -0
- package/dist/components/GrBadge/index.js +3 -3
- package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-CxtamOZ-.js +33 -0
- package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-CxtamOZ-.js.map +1 -0
- package/dist/components/GrBadgeWrap/index.js +3 -3
- package/dist/components/GrBottomNav/chunks/GrBottomNav-CsmQ7mTJ.js +31 -0
- package/dist/components/GrBottomNav/chunks/GrBottomNav-CsmQ7mTJ.js.map +1 -0
- package/dist/components/GrBottomNav/index.js +3 -3
- package/dist/components/GrButton/chunks/GrButton-BmGdp8-4.js +83 -0
- package/dist/components/GrButton/chunks/GrButton-BmGdp8-4.js.map +1 -0
- package/dist/components/GrButton/index.js +5 -5
- package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CBj4tpms.js +21 -0
- package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CBj4tpms.js.map +1 -0
- package/dist/components/GrButtonGroup/index.js +3 -3
- package/dist/components/GrCard/chunks/GrCard-xtDcXBr7.js +11 -0
- package/dist/components/GrCard/chunks/GrCard-xtDcXBr7.js.map +1 -0
- package/dist/components/GrCard/index.js +3 -3
- package/dist/components/GrCheckbox/chunks/GrCheckbox-Bt3d7ckE.js +134 -0
- package/dist/components/GrCheckbox/chunks/GrCheckbox-Bt3d7ckE.js.map +1 -0
- package/dist/components/GrCheckbox/index.js +3 -3
- package/dist/components/GrCollapse/chunks/GrCollapse-HU20VTVn.js +205 -0
- package/dist/components/GrCollapse/chunks/GrCollapse-HU20VTVn.js.map +1 -0
- package/dist/components/GrCollapse/index.js +3 -3
- package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-DjGOX9Hd.js +131 -0
- package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-DjGOX9Hd.js.map +1 -0
- package/dist/components/GrConfirmDialog/index.js +3 -3
- package/dist/components/GrDataTable/chunks/GrDataTable-QDOJWmdY.js +179 -0
- package/dist/components/GrDataTable/chunks/GrDataTable-QDOJWmdY.js.map +1 -0
- package/dist/components/GrDataTable/index.js +3 -3
- package/dist/components/GrDialog/chunks/GrDialog-gObmaVEl.js +221 -0
- package/dist/components/GrDialog/chunks/GrDialog-gObmaVEl.js.map +1 -0
- package/dist/components/GrDialog/index.js +4 -4
- package/dist/components/GrDrawer/chunks/GrDrawer-BJL_gTxI.js +156 -0
- package/dist/components/GrDrawer/chunks/GrDrawer-BJL_gTxI.js.map +1 -0
- package/dist/components/GrDrawer/index.js +3 -3
- package/dist/components/GrDropdown/chunks/GrDropdown-BkACCXdp.js +151 -0
- package/dist/components/GrDropdown/chunks/GrDropdown-BkACCXdp.js.map +1 -0
- package/dist/components/GrDropdown/index.js +3 -3
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-BEenXrJw.js +309 -0
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-BEenXrJw.js.map +1 -0
- package/dist/components/GrDropdownMenu/index.js +3 -3
- package/dist/components/GrEmptyState/chunks/GrEmptyState-BLbMJFW-.js +62 -0
- package/dist/components/GrEmptyState/chunks/GrEmptyState-BLbMJFW-.js.map +1 -0
- package/dist/components/GrEmptyState/index.js +3 -3
- package/dist/components/GrFileUpload/chunks/GrFileUpload-u01j9S0t.js +368 -0
- package/dist/components/GrFileUpload/chunks/GrFileUpload-u01j9S0t.js.map +1 -0
- package/dist/components/GrFileUpload/index.js +4 -4
- package/dist/components/GrFormField/chunks/GrFormField-C6PfAs4u.js +35 -0
- package/dist/components/GrFormField/chunks/GrFormField-C6PfAs4u.js.map +1 -0
- package/dist/components/GrFormField/index.js +3 -3
- package/dist/components/GrFormFile/chunks/GrFormFile-DdM8Bc2B.js +313 -0
- package/dist/components/GrFormFile/chunks/GrFormFile-DdM8Bc2B.js.map +1 -0
- package/dist/components/GrFormFile/index.js +3 -3
- package/dist/components/GrFormSection/chunks/GrFormSection-5djEaQZQ.js +35 -0
- package/dist/components/GrFormSection/chunks/GrFormSection-5djEaQZQ.js.map +1 -0
- package/dist/components/GrFormSection/index.js +3 -3
- package/dist/components/GrIcon/chunks/GrIcon-BV7RBU_0.js +32 -0
- package/dist/components/GrIcon/chunks/GrIcon-BV7RBU_0.js.map +1 -0
- package/dist/components/GrIcon/index.js +3 -3
- package/dist/components/GrImageViewer/chunks/GrImageViewer-CjSnohW7.js +397 -0
- package/dist/components/GrImageViewer/chunks/GrImageViewer-CjSnohW7.js.map +1 -0
- package/dist/components/GrImageViewer/index.js +3 -3
- package/dist/components/GrInput/chunks/GrInput-ghxaTf6d.js +211 -0
- package/dist/components/GrInput/chunks/GrInput-ghxaTf6d.js.map +1 -0
- package/dist/components/GrInput/index.js +3 -3
- package/dist/components/GrInputTag/chunks/GrInputTag-B0x4U0Yk.js +257 -0
- package/dist/components/GrInputTag/chunks/GrInputTag-B0x4U0Yk.js.map +1 -0
- package/dist/components/GrInputTag/index.js +3 -3
- package/dist/components/GrLink/chunks/GrLink-C7-Y1u88.js +80 -0
- package/dist/components/GrLink/chunks/GrLink-C7-Y1u88.js.map +1 -0
- package/dist/components/GrLink/index.js +3 -3
- package/dist/components/GrList/chunks/GrList--Ib4zLNw.js +77 -0
- package/dist/components/GrList/chunks/GrList--Ib4zLNw.js.map +1 -0
- package/dist/components/GrList/index.js +3 -3
- package/dist/components/GrLoading/chunks/GrLoading-C3QZKwE-.js +69 -0
- package/dist/components/GrLoading/chunks/GrLoading-C3QZKwE-.js.map +1 -0
- package/dist/components/GrLoading/index.js +3 -3
- package/dist/components/GrModal/chunks/GrModal-gvfvlp7k.js +168 -0
- package/dist/components/GrModal/chunks/GrModal-gvfvlp7k.js.map +1 -0
- package/dist/components/GrModal/index.js +4 -4
- package/dist/components/GrNavbar/chunks/GrNavbar-nIyuiVj1.js +75 -0
- package/dist/components/GrNavbar/chunks/GrNavbar-nIyuiVj1.js.map +1 -0
- package/dist/components/GrNavbar/index.js +3 -3
- package/dist/components/GrNumberInput/chunks/GrNumberInput-B0mPLjdv.js +397 -0
- package/dist/components/GrNumberInput/chunks/GrNumberInput-B0mPLjdv.js.map +1 -0
- package/dist/components/GrNumberInput/index.js +3 -3
- package/dist/components/GrPagination/chunks/GrPagination-BSTO6flk.js +114 -0
- package/dist/components/GrPagination/chunks/GrPagination-BSTO6flk.js.map +1 -0
- package/dist/components/GrPagination/index.js +3 -3
- package/dist/components/GrProgressBar/chunks/GrProgressBar-MvMnzsJl.js +39 -0
- package/dist/components/GrProgressBar/chunks/GrProgressBar-MvMnzsJl.js.map +1 -0
- package/dist/components/GrProgressBar/index.js +3 -3
- package/dist/components/GrPromptDialog/chunks/GrPromptDialog-DKhbN6ji.js +190 -0
- package/dist/components/GrPromptDialog/chunks/GrPromptDialog-DKhbN6ji.js.map +1 -0
- package/dist/components/GrPromptDialog/index.js +3 -3
- package/dist/components/GrRadio/chunks/GrRadio-BxBs3WHq.js +184 -0
- package/dist/components/GrRadio/chunks/GrRadio-BxBs3WHq.js.map +1 -0
- package/dist/components/GrRadio/index.js +3 -3
- package/dist/components/GrRadioGroup/chunks/GrRadioGroup-CEAfJQ6A.js +80 -0
- package/dist/components/GrRadioGroup/chunks/GrRadioGroup-CEAfJQ6A.js.map +1 -0
- package/dist/components/GrRadioGroup/index.js +3 -3
- package/dist/components/GrSegmented/chunks/GrSegmented-Bwn2qOY4.js +323 -0
- package/dist/components/GrSegmented/chunks/GrSegmented-Bwn2qOY4.js.map +1 -0
- package/dist/components/GrSegmented/index.js +3 -3
- package/dist/components/GrSelect/chunks/GrSelect-9wRWAu2R.js +443 -0
- package/dist/components/GrSelect/chunks/GrSelect-9wRWAu2R.js.map +1 -0
- package/dist/components/GrSelect/index.js +3 -3
- package/dist/components/GrSidebar/chunks/GrSidebar-CSZ3RpFB.js +44 -0
- package/dist/components/GrSidebar/chunks/GrSidebar-CSZ3RpFB.js.map +1 -0
- package/dist/components/GrSidebar/index.js +3 -3
- package/dist/components/GrSkeleton/chunks/GrSkeleton-DKXkqWDa.js +33 -0
- package/dist/components/GrSkeleton/chunks/GrSkeleton-DKXkqWDa.js.map +1 -0
- package/dist/components/GrSkeleton/index.js +3 -3
- package/dist/components/GrSwitch/chunks/GrSwitch-CdBxwV3k.js +79 -0
- package/dist/components/GrSwitch/chunks/GrSwitch-CdBxwV3k.js.map +1 -0
- package/dist/components/GrSwitch/index.js +3 -3
- package/dist/components/GrTable/chunks/GrTable-CyQ9uw8A.js +57 -0
- package/dist/components/GrTable/chunks/GrTable-CyQ9uw8A.js.map +1 -0
- package/dist/components/GrTable/index.js +3 -3
- package/dist/components/GrTabs/chunks/GrTabs-BpF8AAUz.js +118 -0
- package/dist/components/GrTabs/chunks/GrTabs-BpF8AAUz.js.map +1 -0
- package/dist/components/GrTabs/index.js +3 -3
- package/dist/components/GrTextarea/chunks/GrTextarea-DFS9ZkrA.js +71 -0
- package/dist/components/GrTextarea/chunks/GrTextarea-DFS9ZkrA.js.map +1 -0
- package/dist/components/GrTextarea/index.js +3 -3
- package/dist/components/GrToaster/chunks/GrToaster-3Mf0Moxt.js +171 -0
- package/dist/components/GrToaster/chunks/GrToaster-3Mf0Moxt.js.map +1 -0
- package/dist/components/GrToaster/index.js +3 -3
- package/dist/components/GrTooltip/chunks/GrTooltip-BvmsukLW.js +55 -0
- package/dist/components/GrTooltip/chunks/GrTooltip-BvmsukLW.js.map +1 -0
- package/dist/components/GrTooltip/index.js +3 -3
- package/dist/components/GrTree/chunks/GrTree-C2kN-O4Q.js +734 -0
- package/dist/components/GrTree/chunks/GrTree-C2kN-O4Q.js.map +1 -0
- package/dist/components/GrTree/index.js +3 -3
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-Da-CpRqm.js +454 -0
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-Da-CpRqm.js.map +1 -0
- package/dist/components/GrTreeSelect/index.js +3 -3
- package/dist/composables/useTheme.js +39 -30
- package/dist/composables/useTheme.js.map +1 -0
- package/dist/composables/useToast.js +41 -34
- package/dist/composables/useToast.js.map +1 -0
- package/dist/directives/autofocus.js +55 -0
- package/dist/directives/autofocus.js.map +1 -0
- package/dist/directives/autosize.js +117 -0
- package/dist/directives/autosize.js.map +1 -0
- package/dist/directives/clickOutside.js +96 -0
- package/dist/directives/clickOutside.js.map +1 -0
- package/dist/directives/dropzone.js +164 -0
- package/dist/directives/dropzone.js.map +1 -0
- package/dist/directives/hotkey.js +138 -0
- package/dist/directives/hotkey.js.map +1 -0
- package/dist/directives/index.js +7 -2
- package/dist/directives/loading.js +163 -0
- package/dist/directives/loading.js.map +1 -0
- package/dist/fileValidation/index.js +2 -2
- package/dist/granular-provider-node.js +23 -14
- package/dist/granular-provider-node.js.map +1 -0
- package/dist/granular-provider.js +3 -3
- package/dist/granular-provider.js.map +1 -0
- package/dist/i18n/all.js +6 -6
- package/dist/i18n/all.js.map +1 -0
- package/dist/i18n/index.js +3 -3
- package/dist/index.js +110 -105
- package/dist/vue/index.js +64 -26
- package/dist/vue/index.js.map +1 -0
- package/package.json +25 -1
- package/dist/chunks/_plugin-vue_export-helper-CHO2XVys.js +0 -8
- package/dist/chunks/adapter-D5uYoOZj.js +0 -4
- package/dist/chunks/arrow-up-Dv3dC3hu.js +0 -23
- package/dist/chunks/classTokens-CT1tqF2j.js +0 -6
- package/dist/chunks/config-B5JCvHys.js +0 -13
- package/dist/chunks/config-BDXa5Sna2.js +0 -9
- package/dist/chunks/config-BG5_FuZ-.js +0 -34
- package/dist/chunks/config-BMYKG1oB.js +0 -10
- package/dist/chunks/config-BQREEXFD.js +0 -8
- package/dist/chunks/config-BUZtbeTr.js +0 -40
- package/dist/chunks/config-BVXycfiO.js +0 -9
- package/dist/chunks/config-BZW-RL6E.js +0 -14
- package/dist/chunks/config-BhbfV-Is.js +0 -48
- package/dist/chunks/config-BmYFupZh.js +0 -8
- package/dist/chunks/config-BsZc_QQ-2.js +0 -20
- package/dist/chunks/config-C1Sn7mn-.js +0 -27
- package/dist/chunks/config-C4_REX-3.js +0 -9
- package/dist/chunks/config-CBFllZZ4.js +0 -9
- package/dist/chunks/config-CDyD_fCt.js +0 -8
- package/dist/chunks/config-CJeG727i.js +0 -149
- package/dist/chunks/config-CLawBqde.js +0 -21
- package/dist/chunks/config-CMz46RPG.js +0 -8
- package/dist/chunks/config-CO-7HRZd2.js +0 -8
- package/dist/chunks/config-CS7E7LME.js +0 -9
- package/dist/chunks/config-CVy124Xj.js +0 -8
- package/dist/chunks/config-CcixQGaN.js +0 -47
- package/dist/chunks/config-CiVXZxyQ.js +0 -9
- package/dist/chunks/config-CoMQmunP.js +0 -8
- package/dist/chunks/config-Cq6ufYtp.js +0 -9
- package/dist/chunks/config-D8CIEWcb.js +0 -8
- package/dist/chunks/config-D8hKc39m.js +0 -18
- package/dist/chunks/config-D9MxGwCJ.js +0 -8
- package/dist/chunks/config-DBXTZE36.js +0 -15
- package/dist/chunks/config-DK9C8O7L.js +0 -9
- package/dist/chunks/config-DTegOmx2.js +0 -8
- package/dist/chunks/config-DYI8XADo.js +0 -47
- package/dist/chunks/config-DlidGf7P.js +0 -8
- package/dist/chunks/config-DtNe7EIX.js +0 -35
- package/dist/chunks/config-EdWeK_ge.js +0 -17
- package/dist/chunks/config-FGAkxHFh.js +0 -8
- package/dist/chunks/config-M76gNxd2.js +0 -37
- package/dist/chunks/config-NuqoO_Of.js +0 -33
- package/dist/chunks/config-QsovJrku2.js +0 -66
- package/dist/chunks/config-R6F6zRJk.js +0 -9
- package/dist/chunks/config-SLwkDc4Q2.js +0 -9
- package/dist/chunks/config-aJ7sb62Y.js +0 -8
- package/dist/chunks/config-b9nc87Oc.js +0 -9
- package/dist/chunks/config-dSI8RttH2.js +0 -8
- package/dist/chunks/config-im2VHeSM.js +0 -9
- package/dist/chunks/config-vKeQ035f.js +0 -9
- package/dist/chunks/config-vMcxHlWi.js +0 -14
- package/dist/chunks/dialogShared-CONROtU2.js +0 -26
- package/dist/chunks/directives-Dr5NPOT8.js +0 -530
- package/dist/chunks/en-j3simI0h.js +0 -41
- package/dist/chunks/es-CIT9s_vo.js +0 -4
- package/dist/chunks/es-CLpJj7KP.js +0 -41
- package/dist/chunks/fileValidation-LFD-vwil.js +0 -193
- package/dist/chunks/grLoadingStyles-Bjo7ylmq.js +0 -15
- package/dist/chunks/grSelectStyles-C3QKIn1J.js +0 -40
- package/dist/chunks/granularityI18n-8_v1B11L.js +0 -24
- package/dist/chunks/info-CNJnuTYC.js +0 -26
- package/dist/chunks/loader-circle-C5vCCMfB.js +0 -23
- package/dist/chunks/ru-CiOZPnBu.js +0 -41
- package/dist/chunks/safelist-Bq32hAXc.js +0 -13
- package/dist/chunks/safelist-CLcTRYB-.js +0 -22
- package/dist/chunks/transition-BJXMi52x.js +0 -1617
- package/dist/chunks/x--kxrj3ez.js +0 -23
- package/dist/chunks/x-circle-ChJ87u1v.js +0 -61
- package/dist/components/GrAlert/chunks/GrAlert-DLHkusb-.js +0 -129
- package/dist/components/GrAvatar/chunks/GrAvatar-BFYH3HJw.js +0 -32
- package/dist/components/GrBadge/chunks/GrBadge-D_AoqGrn.js +0 -27
- package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-C_N0QJfA.js +0 -26
- package/dist/components/GrBottomNav/chunks/GrBottomNav-Chpu3SVd.js +0 -21
- package/dist/components/GrButton/chunks/GrButton-BXVVt6Od.js +0 -67
- package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CmnYHVH7.js +0 -16
- package/dist/components/GrCard/chunks/GrCard-DEpN6Ptf.js +0 -10
- package/dist/components/GrCheckbox/chunks/GrCheckbox-DF3vJApB.js +0 -111
- package/dist/components/GrCollapse/chunks/GrCollapse-D7QYRqNa.js +0 -150
- package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-C7Eh8-Vn.js +0 -111
- package/dist/components/GrDataTable/chunks/GrDataTable-Dxsg1NMP.js +0 -142
- package/dist/components/GrDialog/chunks/GrDialog-BSd4-uP5.js +0 -169
- package/dist/components/GrDrawer/chunks/GrDrawer-DBBSwe1s.js +0 -135
- package/dist/components/GrDropdown/chunks/GrDropdown-BELyRP4A.js +0 -110
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-B8fuk7iP.js +0 -233
- package/dist/components/GrEmptyState/chunks/GrEmptyState-BPGoafJI.js +0 -49
- package/dist/components/GrFileUpload/chunks/GrFileUpload-BPzx3LEM.js +0 -294
- package/dist/components/GrFormField/chunks/GrFormField-Cn8g9eFP.js +0 -28
- package/dist/components/GrFormFile/chunks/GrFormFile-DfinD5Iv.js +0 -248
- package/dist/components/GrFormSection/chunks/GrFormSection-dKpQw-vh.js +0 -27
- package/dist/components/GrIcon/chunks/GrIcon-CXIHuG7L.js +0 -25
- package/dist/components/GrImageViewer/chunks/GrImageViewer-CQSNx-D7.js +0 -322
- package/dist/components/GrInput/chunks/GrInput-CLKX1inm.js +0 -158
- package/dist/components/GrInputTag/chunks/GrInputTag-BAtLody2.js +0 -214
- package/dist/components/GrLink/chunks/GrLink-BpXnly-Y.js +0 -59
- package/dist/components/GrList/chunks/GrList-BrFc7VdS.js +0 -55
- package/dist/components/GrLoading/chunks/GrLoading-dFuoryMY.js +0 -53
- package/dist/components/GrModal/chunks/GrModal-uaWXH08K.js +0 -136
- package/dist/components/GrNavbar/chunks/GrNavbar-KzLHgdjX.js +0 -62
- package/dist/components/GrNumberInput/chunks/GrNumberInput-rENn1802.js +0 -315
- package/dist/components/GrPagination/chunks/GrPagination-DP0x3rx6.js +0 -93
- package/dist/components/GrProgressBar/chunks/GrProgressBar-DpW93sOi.js +0 -29
- package/dist/components/GrPromptDialog/chunks/GrPromptDialog-ASfBwyzQ.js +0 -158
- package/dist/components/GrRadio/chunks/GrRadio-8BOo97XV.js +0 -147
- package/dist/components/GrRadioGroup/chunks/GrRadioGroup-BymbUmqI.js +0 -66
- package/dist/components/GrSegmented/chunks/GrSegmented-CK5C_lN7.js +0 -250
- package/dist/components/GrSelect/chunks/GrSelect-BMfc1-vs.js +0 -314
- package/dist/components/GrSidebar/chunks/GrSidebar-C4SXXhfO.js +0 -29
- package/dist/components/GrSkeleton/chunks/GrSkeleton-QlieOdpY.js +0 -25
- package/dist/components/GrSwitch/chunks/GrSwitch-Cefiutzu.js +0 -64
- package/dist/components/GrTable/chunks/GrTable-k_FUiJQk.js +0 -44
- package/dist/components/GrTabs/chunks/GrTabs-B46P-lUc.js +0 -98
- package/dist/components/GrTextarea/chunks/GrTextarea-BX7L1MJk.js +0 -57
- package/dist/components/GrToaster/chunks/GrToaster-C4l_BjOh.js +0 -139
- package/dist/components/GrTooltip/chunks/GrTooltip-BqRAzuLT.js +0 -37
- package/dist/components/GrTree/chunks/GrTree-C2CXR_vW.js +0 -614
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-DAAay-QB.js +0 -353
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { l as runFileValidators, u as FileValidationError } from "../chunks/fileValidation-CwJA8Vmn.js";
|
|
2
|
+
//#region src/directives/dropzone.ts
|
|
3
|
+
function normalize(value) {
|
|
4
|
+
if (typeof value === "function") return {
|
|
5
|
+
enabled: true,
|
|
6
|
+
multiple: true,
|
|
7
|
+
validators: void 0,
|
|
8
|
+
preventDefault: true,
|
|
9
|
+
stopPropagation: false,
|
|
10
|
+
onFiles: value,
|
|
11
|
+
onError: void 0,
|
|
12
|
+
onStateChange: void 0,
|
|
13
|
+
overClass: "ds-dropzone--over"
|
|
14
|
+
};
|
|
15
|
+
if (value && typeof value === "object") return {
|
|
16
|
+
enabled: value.enabled ?? true,
|
|
17
|
+
multiple: value.multiple ?? true,
|
|
18
|
+
validators: value.validators,
|
|
19
|
+
preventDefault: value.preventDefault ?? true,
|
|
20
|
+
stopPropagation: value.stopPropagation ?? false,
|
|
21
|
+
onFiles: value.onFiles,
|
|
22
|
+
onError: value.onError,
|
|
23
|
+
onStateChange: value.onStateChange,
|
|
24
|
+
overClass: value.overClass ?? "ds-dropzone--over"
|
|
25
|
+
};
|
|
26
|
+
return {
|
|
27
|
+
enabled: false,
|
|
28
|
+
multiple: true,
|
|
29
|
+
validators: void 0,
|
|
30
|
+
preventDefault: true,
|
|
31
|
+
stopPropagation: false,
|
|
32
|
+
onFiles: void 0,
|
|
33
|
+
onError: void 0,
|
|
34
|
+
onStateChange: void 0,
|
|
35
|
+
overClass: "ds-dropzone--over"
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
var states = /* @__PURE__ */ new WeakMap();
|
|
39
|
+
function setOver(el, next) {
|
|
40
|
+
const state = states.get(el);
|
|
41
|
+
if (!state) return;
|
|
42
|
+
const wasDomOver = el.dataset.grDropzoneOver === "true";
|
|
43
|
+
const prev = state.isOver;
|
|
44
|
+
state.isOver = next;
|
|
45
|
+
if (next) {
|
|
46
|
+
el.classList.add(state.options.overClass);
|
|
47
|
+
el.dataset.grDropzoneOver = "true";
|
|
48
|
+
} else {
|
|
49
|
+
el.classList.remove(state.options.overClass);
|
|
50
|
+
delete el.dataset.grDropzoneOver;
|
|
51
|
+
}
|
|
52
|
+
if (prev !== next || wasDomOver !== next) state.options.onStateChange?.({ isOver: next });
|
|
53
|
+
}
|
|
54
|
+
function unbind(el) {
|
|
55
|
+
const state = states.get(el);
|
|
56
|
+
if (!state) return;
|
|
57
|
+
state.overCounter = 0;
|
|
58
|
+
setOver(el, false);
|
|
59
|
+
delete el.dataset.grDropzone;
|
|
60
|
+
el.removeEventListener("dragenter", state.onDragEnter);
|
|
61
|
+
el.removeEventListener("dragover", state.onDragOver);
|
|
62
|
+
el.removeEventListener("dragleave", state.onDragLeave);
|
|
63
|
+
el.removeEventListener("drop", state.onDrop);
|
|
64
|
+
states.delete(el);
|
|
65
|
+
}
|
|
66
|
+
function bind(el, value) {
|
|
67
|
+
const state = {
|
|
68
|
+
options: normalize(value),
|
|
69
|
+
overCounter: 0,
|
|
70
|
+
isOver: false,
|
|
71
|
+
onDragEnter(event) {
|
|
72
|
+
const current = states.get(el);
|
|
73
|
+
if (!current?.options.enabled) return;
|
|
74
|
+
if (current.options.preventDefault) event.preventDefault();
|
|
75
|
+
if (current.options.stopPropagation) event.stopPropagation();
|
|
76
|
+
current.overCounter += 1;
|
|
77
|
+
setOver(el, true);
|
|
78
|
+
},
|
|
79
|
+
onDragOver(event) {
|
|
80
|
+
const current = states.get(el);
|
|
81
|
+
if (!current?.options.enabled) return;
|
|
82
|
+
if (current.options.preventDefault) event.preventDefault();
|
|
83
|
+
if (current.options.stopPropagation) event.stopPropagation();
|
|
84
|
+
if (event.dataTransfer) event.dataTransfer.dropEffect = "copy";
|
|
85
|
+
},
|
|
86
|
+
onDragLeave(event) {
|
|
87
|
+
const current = states.get(el);
|
|
88
|
+
if (!current?.options.enabled) return;
|
|
89
|
+
if (current.options.preventDefault) event.preventDefault();
|
|
90
|
+
if (current.options.stopPropagation) event.stopPropagation();
|
|
91
|
+
current.overCounter = Math.max(0, current.overCounter - 1);
|
|
92
|
+
if (current.overCounter === 0) setOver(el, false);
|
|
93
|
+
},
|
|
94
|
+
onDrop(event) {
|
|
95
|
+
const current = states.get(el);
|
|
96
|
+
if (!current?.options.enabled) return;
|
|
97
|
+
if (current.options.preventDefault) event.preventDefault();
|
|
98
|
+
if (current.options.stopPropagation) event.stopPropagation();
|
|
99
|
+
current.overCounter = 0;
|
|
100
|
+
setOver(el, false);
|
|
101
|
+
const dt = event.dataTransfer;
|
|
102
|
+
const files = dt?.files ? Array.prototype.slice.call(dt.files) : [];
|
|
103
|
+
if (!files.length) return;
|
|
104
|
+
(async () => {
|
|
105
|
+
try {
|
|
106
|
+
const { files: picked, issues } = await runFileValidators(files, current.options.validators ?? [], {
|
|
107
|
+
source: "drop",
|
|
108
|
+
multiple: current.options.multiple
|
|
109
|
+
});
|
|
110
|
+
if (issues.length > 0) {
|
|
111
|
+
current.options.onError?.(new FileValidationError(issues, picked));
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (!picked.length) return;
|
|
115
|
+
await current.options.onFiles?.(picked, event);
|
|
116
|
+
} catch (error) {
|
|
117
|
+
current.options.onError?.(error);
|
|
118
|
+
}
|
|
119
|
+
})();
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
states.set(el, state);
|
|
123
|
+
el.dataset.grDropzone = "true";
|
|
124
|
+
el.addEventListener("dragenter", state.onDragEnter);
|
|
125
|
+
el.addEventListener("dragover", state.onDragOver);
|
|
126
|
+
el.addEventListener("dragleave", state.onDragLeave);
|
|
127
|
+
el.addEventListener("drop", state.onDrop);
|
|
128
|
+
}
|
|
129
|
+
function update(el, value) {
|
|
130
|
+
const state = states.get(el);
|
|
131
|
+
if (!state) {
|
|
132
|
+
bind(el, value);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const prevOverClass = state.options.overClass;
|
|
136
|
+
const nextOptions = normalize(value);
|
|
137
|
+
state.options = nextOptions;
|
|
138
|
+
if (prevOverClass !== nextOptions.overClass) {
|
|
139
|
+
el.classList.remove(prevOverClass);
|
|
140
|
+
if (state.isOver) el.classList.add(nextOptions.overClass);
|
|
141
|
+
}
|
|
142
|
+
if (!nextOptions.enabled) {
|
|
143
|
+
state.overCounter = 0;
|
|
144
|
+
setOver(el, false);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* `v-dropzone` — декларативная DnD-зона для файлов (перетаскивание + drop).
|
|
149
|
+
*
|
|
150
|
+
* Директива не делает загрузку сама — только нормализует события и отдаёт `File[]`.
|
|
151
|
+
*/
|
|
152
|
+
var vDropzone = {
|
|
153
|
+
mounted(el, binding) {
|
|
154
|
+
bind(el, binding.value);
|
|
155
|
+
},
|
|
156
|
+
updated(el, binding) {
|
|
157
|
+
update(el, binding.value);
|
|
158
|
+
},
|
|
159
|
+
unmounted(el) {
|
|
160
|
+
unbind(el);
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
//#endregion
|
|
164
|
+
export { vDropzone };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropzone.js","names":[],"sources":["../../src/directives/dropzone.ts"],"sourcesContent":["import type { Directive } from 'vue'\n\nimport type { FileValidator } from '../fileValidation'\n\nimport { FileValidationError, runFileValidators } from '../fileValidation'\n\nexport type DropzoneOnFiles = (files: File[], event: DragEvent) => void | Promise<void>\n\nexport type DropzoneBindingValue =\n | DropzoneOnFiles\n | {\n onFiles: DropzoneOnFiles\n /** По умолчанию `true`. */\n enabled?: boolean\n /** По умолчанию `true`. */\n multiple?: boolean\n\n /** Валидаторы, которые будут запущены перед `onFiles`. */\n validators?: FileValidator[]\n /** По умолчанию `true` (предотвращаем дефолтное поведение браузера при drop). */\n preventDefault?: boolean\n /** По умолчанию `false`. */\n stopPropagation?: boolean\n /** Вызывается, если валидация файлов не прошла. */\n onError?: (error: unknown) => void\n /** Вызывается при изменении состояния drag-over. */\n onStateChange?: (state: { isOver: boolean }) => void\n /** CSS-класс, который навешивается на элемент, пока курсор с файлами над зоной. */\n overClass?: string\n }\n\ntype NormalizedOptions = {\n enabled: boolean\n multiple: boolean\n validators: FileValidator[] | undefined\n preventDefault: boolean\n stopPropagation: boolean\n onFiles: DropzoneOnFiles | undefined\n onError: ((error: unknown) => void) | undefined\n onStateChange: ((state: { isOver: boolean }) => void) | undefined\n overClass: string\n}\n\nfunction normalize(value: DropzoneBindingValue | undefined): NormalizedOptions {\n if (typeof value === 'function') {\n return {\n enabled: true,\n multiple: true,\n validators: undefined,\n preventDefault: true,\n stopPropagation: false,\n onFiles: value,\n onError: undefined,\n onStateChange: undefined,\n overClass: 'ds-dropzone--over',\n }\n }\n\n if (value && typeof value === 'object') {\n return {\n enabled: value.enabled ?? true,\n multiple: value.multiple ?? true,\n validators: value.validators,\n preventDefault: value.preventDefault ?? true,\n stopPropagation: value.stopPropagation ?? false,\n onFiles: value.onFiles,\n onError: value.onError,\n onStateChange: value.onStateChange,\n overClass: value.overClass ?? 'ds-dropzone--over',\n }\n }\n\n return {\n enabled: false,\n multiple: true,\n validators: undefined,\n preventDefault: true,\n stopPropagation: false,\n onFiles: undefined,\n onError: undefined,\n onStateChange: undefined,\n overClass: 'ds-dropzone--over',\n }\n}\n\ntype InternalState = {\n options: NormalizedOptions\n overCounter: number\n isOver: boolean\n onDragEnter: (event: DragEvent) => void\n onDragOver: (event: DragEvent) => void\n onDragLeave: (event: DragEvent) => void\n onDrop: (event: DragEvent) => void\n}\n\nconst states = new WeakMap<HTMLElement, InternalState>()\n\nfunction setOver(el: HTMLElement, next: boolean) {\n const state = states.get(el)\n if (!state) return\n\n // `state.isOver` может рассинхронизироваться с DOM (например, при обновлениях\n // компонента/директивы во время drag-over). Поэтому DOM-состояние всегда\n // приводим к `next`, а коллбек вызываем только при фактическом изменении.\n const wasDomOver = el.dataset.grDropzoneOver === 'true'\n const prev = state.isOver\n\n state.isOver = next\n\n if (next) {\n el.classList.add(state.options.overClass)\n el.dataset.grDropzoneOver = 'true'\n } else {\n el.classList.remove(state.options.overClass)\n delete el.dataset.grDropzoneOver\n }\n\n if (prev !== next || wasDomOver !== next) {\n state.options.onStateChange?.({ isOver: next })\n }\n}\n\nfunction unbind(el: HTMLElement) {\n const state = states.get(el)\n if (!state) return\n\n // Гарантированно очищаем визуальное состояние и счётчики.\n // Это важно, если директива обновлялась/перебиндилась во время DnD.\n state.overCounter = 0\n setOver(el, false)\n\n delete el.dataset.grDropzone\n\n el.removeEventListener('dragenter', state.onDragEnter)\n el.removeEventListener('dragover', state.onDragOver)\n el.removeEventListener('dragleave', state.onDragLeave)\n el.removeEventListener('drop', state.onDrop)\n\n states.delete(el)\n}\n\nfunction bind(el: HTMLElement, value: DropzoneBindingValue | undefined) {\n const options = normalize(value)\n\n const state: InternalState = {\n options,\n overCounter: 0,\n isOver: false,\n onDragEnter(event) {\n const current = states.get(el)\n if (!current?.options.enabled) return\n\n if (current.options.preventDefault) event.preventDefault()\n if (current.options.stopPropagation) event.stopPropagation()\n\n current.overCounter += 1\n setOver(el, true)\n },\n onDragOver(event) {\n const current = states.get(el)\n if (!current?.options.enabled) return\n\n if (current.options.preventDefault) event.preventDefault()\n if (current.options.stopPropagation) event.stopPropagation()\n\n if (event.dataTransfer) event.dataTransfer.dropEffect = 'copy'\n },\n onDragLeave(event) {\n const current = states.get(el)\n if (!current?.options.enabled) return\n\n if (current.options.preventDefault) event.preventDefault()\n if (current.options.stopPropagation) event.stopPropagation()\n\n current.overCounter = Math.max(0, current.overCounter - 1)\n if (current.overCounter === 0) setOver(el, false)\n },\n onDrop(event) {\n const current = states.get(el)\n if (!current?.options.enabled) return\n\n if (current.options.preventDefault) event.preventDefault()\n if (current.options.stopPropagation) event.stopPropagation()\n\n current.overCounter = 0\n setOver(el, false)\n\n const dt = event.dataTransfer\n const files = dt?.files ? Array.prototype.slice.call(dt.files) as File[] : []\n if (!files.length) return\n\n void (async () => {\n try {\n const validators = current.options.validators ?? []\n\n const { files: picked, issues } = await runFileValidators(files, validators, {\n source: 'drop',\n multiple: current.options.multiple,\n })\n\n if (issues.length > 0) {\n current.options.onError?.(new FileValidationError(issues, picked))\n return\n }\n\n if (!picked.length) return\n await current.options.onFiles?.(picked, event)\n } catch (error) {\n current.options.onError?.(error)\n }\n })()\n },\n }\n\n states.set(el, state)\n\n // Base marker.\n el.dataset.grDropzone = 'true'\n\n el.addEventListener('dragenter', state.onDragEnter)\n el.addEventListener('dragover', state.onDragOver)\n el.addEventListener('dragleave', state.onDragLeave)\n el.addEventListener('drop', state.onDrop)\n}\n\nfunction update(el: HTMLElement, value: DropzoneBindingValue | undefined) {\n const state = states.get(el)\n if (!state) {\n bind(el, value)\n return\n }\n\n const prevOverClass = state.options.overClass\n const nextOptions = normalize(value)\n\n state.options = nextOptions\n\n // Если поменялся `overClass`, синхронизируем DOM.\n if (prevOverClass !== nextOptions.overClass) {\n el.classList.remove(prevOverClass)\n if (state.isOver) el.classList.add(nextOptions.overClass)\n }\n\n // Если директива выключена — сбрасываем состояние.\n if (!nextOptions.enabled) {\n state.overCounter = 0\n setOver(el, false)\n }\n}\n\n/**\n * `v-dropzone` — декларативная DnD-зона для файлов (перетаскивание + drop).\n *\n * Директива не делает загрузку сама — только нормализует события и отдаёт `File[]`.\n */\nexport const vDropzone: Directive<HTMLElement, DropzoneBindingValue> = {\n mounted(el, binding) {\n bind(el, binding.value)\n },\n updated(el, binding) {\n update(el, binding.value)\n },\n unmounted(el) {\n unbind(el)\n },\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
//#region src/directives/hotkey.ts
|
|
2
|
+
var states = /* @__PURE__ */ new WeakMap();
|
|
3
|
+
function isEditableTarget(target) {
|
|
4
|
+
if (!(target instanceof HTMLElement)) return false;
|
|
5
|
+
if (target.isContentEditable) return true;
|
|
6
|
+
const tag = target.tagName;
|
|
7
|
+
return tag === "INPUT" || tag === "TEXTAREA" || tag === "SELECT";
|
|
8
|
+
}
|
|
9
|
+
function normalizeBinding(value) {
|
|
10
|
+
if (!value) return {
|
|
11
|
+
enabled: false,
|
|
12
|
+
handlers: {}
|
|
13
|
+
};
|
|
14
|
+
if ("handlers" in value) {
|
|
15
|
+
const v = value;
|
|
16
|
+
return {
|
|
17
|
+
enabled: v.enabled ?? true,
|
|
18
|
+
handlers: v.handlers ?? {}
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
enabled: true,
|
|
23
|
+
handlers: value
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function normalizeKeyToken(token) {
|
|
27
|
+
const t = token.trim().toLowerCase();
|
|
28
|
+
if (t === "esc") return "Escape";
|
|
29
|
+
if (t === "escape") return "Escape";
|
|
30
|
+
if (t === "space") return " ";
|
|
31
|
+
if (t.length === 1) return t;
|
|
32
|
+
return token.trim();
|
|
33
|
+
}
|
|
34
|
+
function parseHotkeys(map) {
|
|
35
|
+
const parsed = [];
|
|
36
|
+
for (const [combo, entry] of Object.entries(map)) {
|
|
37
|
+
const parts = combo.split("+").map((p) => p.trim()).filter(Boolean);
|
|
38
|
+
if (!parts.length) continue;
|
|
39
|
+
let ctrl = false;
|
|
40
|
+
let meta = false;
|
|
41
|
+
let alt = false;
|
|
42
|
+
let shift = false;
|
|
43
|
+
const keyToken = parts.at(-1);
|
|
44
|
+
if (!keyToken) continue;
|
|
45
|
+
for (const p of parts.slice(0, -1)) {
|
|
46
|
+
const t = p.toLowerCase();
|
|
47
|
+
if (t === "ctrl" || t === "control") ctrl = true;
|
|
48
|
+
else if (t === "meta" || t === "cmd" || t === "command" || t === "⌘") meta = true;
|
|
49
|
+
else if (t === "alt" || t === "option") alt = true;
|
|
50
|
+
else if (t === "shift") shift = true;
|
|
51
|
+
}
|
|
52
|
+
const key = normalizeKeyToken(keyToken);
|
|
53
|
+
parsed.push({
|
|
54
|
+
original: combo,
|
|
55
|
+
key,
|
|
56
|
+
ctrl,
|
|
57
|
+
meta,
|
|
58
|
+
alt,
|
|
59
|
+
shift,
|
|
60
|
+
entry
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return parsed;
|
|
64
|
+
}
|
|
65
|
+
function matchKey(expected, eventKey) {
|
|
66
|
+
if (expected === " ") return eventKey === " " || eventKey === "Spacebar";
|
|
67
|
+
if (expected.length === 1) return expected.toLowerCase() === eventKey.toLowerCase();
|
|
68
|
+
return expected === eventKey;
|
|
69
|
+
}
|
|
70
|
+
function resolveEntry(entry) {
|
|
71
|
+
if (typeof entry === "function") return {
|
|
72
|
+
handler: entry,
|
|
73
|
+
preventDefault: void 0,
|
|
74
|
+
stopPropagation: false,
|
|
75
|
+
allowInEditable: false
|
|
76
|
+
};
|
|
77
|
+
return {
|
|
78
|
+
handler: entry.handler,
|
|
79
|
+
preventDefault: entry.preventDefault,
|
|
80
|
+
stopPropagation: entry.stopPropagation ?? false,
|
|
81
|
+
allowInEditable: entry.allowInEditable ?? false
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* `v-hotkey` — горячие клавиши на компонент/страницу.
|
|
86
|
+
*
|
|
87
|
+
* Пример:
|
|
88
|
+
* ```vue
|
|
89
|
+
* <div v-hotkey="{ 'Escape': close, 'Ctrl+K': openSearch }" />
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
var vHotkey = {
|
|
93
|
+
mounted(el, binding) {
|
|
94
|
+
if (typeof window === "undefined") return;
|
|
95
|
+
const { enabled, handlers } = normalizeBinding(binding.value);
|
|
96
|
+
const state = {
|
|
97
|
+
enabled,
|
|
98
|
+
hotkeys: parseHotkeys(handlers),
|
|
99
|
+
listener: (event) => {
|
|
100
|
+
const current = states.get(el);
|
|
101
|
+
if (!current?.enabled) return;
|
|
102
|
+
if (!el.isConnected) return;
|
|
103
|
+
const editable = isEditableTarget(event.target);
|
|
104
|
+
for (const hk of current.hotkeys) {
|
|
105
|
+
if (hk.ctrl !== event.ctrlKey) continue;
|
|
106
|
+
if (hk.meta !== event.metaKey) continue;
|
|
107
|
+
if (hk.alt !== event.altKey) continue;
|
|
108
|
+
if (hk.shift !== event.shiftKey) continue;
|
|
109
|
+
if (!matchKey(hk.key, event.key)) continue;
|
|
110
|
+
const entry = resolveEntry(hk.entry);
|
|
111
|
+
const hasModifier = hk.ctrl || hk.meta || hk.alt || hk.shift;
|
|
112
|
+
if (editable && !entry.allowInEditable && !hasModifier && hk.key !== "Escape") continue;
|
|
113
|
+
if (entry.preventDefault ?? (hk.ctrl || hk.meta || hk.alt)) event.preventDefault();
|
|
114
|
+
if (entry.stopPropagation) event.stopPropagation();
|
|
115
|
+
entry.handler(event);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
states.set(el, state);
|
|
121
|
+
window.addEventListener("keydown", state.listener);
|
|
122
|
+
},
|
|
123
|
+
updated(el, binding) {
|
|
124
|
+
const state = states.get(el);
|
|
125
|
+
if (!state) return;
|
|
126
|
+
const next = normalizeBinding(binding.value);
|
|
127
|
+
state.enabled = next.enabled;
|
|
128
|
+
state.hotkeys = parseHotkeys(next.handlers);
|
|
129
|
+
},
|
|
130
|
+
unmounted(el) {
|
|
131
|
+
const state = states.get(el);
|
|
132
|
+
if (!state) return;
|
|
133
|
+
window.removeEventListener("keydown", state.listener);
|
|
134
|
+
states.delete(el);
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
//#endregion
|
|
138
|
+
export { vHotkey };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hotkey.js","names":[],"sources":["../../src/directives/hotkey.ts"],"sourcesContent":["import type { Directive } from 'vue'\n\nexport type HotkeyHandler = (event: KeyboardEvent) => void\n\nexport type HotkeyEntry =\n | HotkeyHandler\n | {\n handler: HotkeyHandler\n /** По умолчанию: `true` для комбинаций с Ctrl/Meta/Alt, иначе `false`. */\n preventDefault?: boolean\n /** По умолчанию `false`. */\n stopPropagation?: boolean\n /** Разрешить срабатывать, когда фокус в `input/textarea/[contenteditable]`. */\n allowInEditable?: boolean\n }\n\nexport type HotkeyMap = Record<string, HotkeyEntry>\n\nexport type HotkeyBindingValue =\n | HotkeyMap\n | {\n handlers: HotkeyMap\n enabled?: boolean\n }\n\ntype ParsedHotkey = {\n original: string\n key: string\n ctrl: boolean\n meta: boolean\n alt: boolean\n shift: boolean\n entry: HotkeyEntry\n}\n\ntype InternalState = {\n enabled: boolean\n hotkeys: ParsedHotkey[]\n listener: (event: KeyboardEvent) => void\n}\n\nconst states = new WeakMap<HTMLElement, InternalState>()\n\nfunction isEditableTarget(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) return false\n if (target.isContentEditable) return true\n\n const tag = target.tagName\n return tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT'\n}\n\nfunction normalizeBinding(value: HotkeyBindingValue | undefined) {\n if (!value) return { enabled: false, handlers: {} as HotkeyMap }\n if ('handlers' in (value as any)) {\n const v = value as { handlers: HotkeyMap; enabled?: boolean }\n return { enabled: v.enabled ?? true, handlers: v.handlers ?? {} }\n }\n return { enabled: true, handlers: value as HotkeyMap }\n}\n\nfunction normalizeKeyToken(token: string): string {\n const t = token.trim().toLowerCase()\n if (t === 'esc') return 'Escape'\n if (t === 'escape') return 'Escape'\n if (t === 'space') return ' '\n if (t.length === 1) return t\n return token.trim()\n}\n\nfunction parseHotkeys(map: HotkeyMap): ParsedHotkey[] {\n const parsed: ParsedHotkey[] = []\n\n for (const [combo, entry] of Object.entries(map)) {\n const parts = combo\n .split('+')\n .map(p => p.trim())\n .filter(Boolean)\n\n if (!parts.length) continue\n\n let ctrl = false\n let meta = false\n let alt = false\n let shift = false\n\n const keyToken = parts.at(-1)\n if (!keyToken) continue\n for (const p of parts.slice(0, -1)) {\n const t = p.toLowerCase()\n if (t === 'ctrl' || t === 'control') ctrl = true\n else if (t === 'meta' || t === 'cmd' || t === 'command' || t === '⌘') meta = true\n else if (t === 'alt' || t === 'option') alt = true\n else if (t === 'shift') shift = true\n }\n\n const key = normalizeKeyToken(keyToken)\n parsed.push({ original: combo, key, ctrl, meta, alt, shift, entry })\n }\n\n return parsed\n}\n\nfunction matchKey(expected: string, eventKey: string): boolean {\n if (expected === ' ') return eventKey === ' ' || eventKey === 'Spacebar'\n if (expected.length === 1) return expected.toLowerCase() === eventKey.toLowerCase()\n return expected === eventKey\n}\n\nfunction resolveEntry(entry: HotkeyEntry) {\n if (typeof entry === 'function') {\n return {\n handler: entry,\n preventDefault: undefined as boolean | undefined,\n stopPropagation: false,\n allowInEditable: false,\n }\n }\n\n return {\n handler: entry.handler,\n preventDefault: entry.preventDefault,\n stopPropagation: entry.stopPropagation ?? false,\n allowInEditable: entry.allowInEditable ?? false,\n }\n}\n\n/**\n * `v-hotkey` — горячие клавиши на компонент/страницу.\n *\n * Пример:\n * ```vue\n * <div v-hotkey=\"{ 'Escape': close, 'Ctrl+K': openSearch }\" />\n * ```\n */\nexport const vHotkey: Directive<HTMLElement, HotkeyBindingValue> = {\n mounted(el, binding) {\n if (typeof window === 'undefined') return\n\n const { enabled, handlers } = normalizeBinding(binding.value)\n\n const state: InternalState = {\n enabled,\n hotkeys: parseHotkeys(handlers),\n listener: (event: KeyboardEvent) => {\n const current = states.get(el)\n if (!current?.enabled) return\n if (!el.isConnected) return\n\n const editable = isEditableTarget(event.target)\n\n for (const hk of current.hotkeys) {\n if (hk.ctrl !== event.ctrlKey) continue\n if (hk.meta !== event.metaKey) continue\n if (hk.alt !== event.altKey) continue\n if (hk.shift !== event.shiftKey) continue\n if (!matchKey(hk.key, event.key)) continue\n\n const entry = resolveEntry(hk.entry)\n\n // По умолчанию не перехватываем \"простые\" клавиши во время ввода.\n const hasModifier = hk.ctrl || hk.meta || hk.alt || hk.shift\n if (editable && !entry.allowInEditable && !hasModifier && hk.key !== 'Escape') {\n continue\n }\n\n const preventDefault = entry.preventDefault ?? (hk.ctrl || hk.meta || hk.alt)\n if (preventDefault) event.preventDefault()\n if (entry.stopPropagation) event.stopPropagation()\n\n entry.handler(event)\n return\n }\n },\n }\n\n states.set(el, state)\n window.addEventListener('keydown', state.listener)\n },\n updated(el, binding) {\n const state = states.get(el)\n if (!state) return\n\n const next = normalizeBinding(binding.value)\n state.enabled = next.enabled\n state.hotkeys = parseHotkeys(next.handlers)\n },\n unmounted(el) {\n const state = states.get(el)\n if (!state) return\n window.removeEventListener('keydown', state.listener)\n states.delete(el)\n },\n}\n"],"mappings":"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"}
|
package/dist/directives/index.js
CHANGED
|
@@ -1,2 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { vAutofocus } from "./autofocus.js";
|
|
2
|
+
import { vAutosize } from "./autosize.js";
|
|
3
|
+
import { vClickOutside } from "./clickOutside.js";
|
|
4
|
+
import { vDropzone } from "./dropzone.js";
|
|
5
|
+
import { vHotkey } from "./hotkey.js";
|
|
6
|
+
import { createLoading, vLoading } from "./loading.js";
|
|
7
|
+
export { createLoading, vAutofocus, vAutosize, vClickOutside, vDropzone, vHotkey, vLoading };
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { t as GrLoading_default } from "../components/GrLoading/chunks/GrLoading-C3QZKwE-.js";
|
|
2
|
+
import { createVNode, render } from "vue";
|
|
3
|
+
//#region src/directives/loading.ts
|
|
4
|
+
function isHTMLElement(value) {
|
|
5
|
+
return typeof value === "object" && value !== null && value.nodeType === 1;
|
|
6
|
+
}
|
|
7
|
+
function resolveTarget(input, fallback) {
|
|
8
|
+
if (!input) return fallback;
|
|
9
|
+
if (typeof input === "string") {
|
|
10
|
+
const root = fallback.getRootNode?.() ?? document;
|
|
11
|
+
const foundInRoot = typeof root.querySelector === "function" ? root.querySelector(input) : null;
|
|
12
|
+
if (isHTMLElement(foundInRoot)) return foundInRoot;
|
|
13
|
+
const foundInDocument = document.querySelector(input);
|
|
14
|
+
if (isHTMLElement(foundInDocument)) return foundInDocument;
|
|
15
|
+
return fallback;
|
|
16
|
+
}
|
|
17
|
+
if (isHTMLElement(input)) return input;
|
|
18
|
+
return fallback;
|
|
19
|
+
}
|
|
20
|
+
function resolveFullscreen(options, target) {
|
|
21
|
+
if (options.fullscreen != null) return options.fullscreen;
|
|
22
|
+
return target === document.body;
|
|
23
|
+
}
|
|
24
|
+
function ensurePositionedContainer(target, fullscreen) {
|
|
25
|
+
if (fullscreen) return () => {};
|
|
26
|
+
const prevInline = target.style.position;
|
|
27
|
+
const computed = window.getComputedStyle(target);
|
|
28
|
+
if (computed.position === "static" || !computed.position) {
|
|
29
|
+
target.style.position = "relative";
|
|
30
|
+
return () => {
|
|
31
|
+
target.style.position = prevInline;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
return () => {};
|
|
35
|
+
}
|
|
36
|
+
function parseBinding(value) {
|
|
37
|
+
if (value === true || value === false) return {
|
|
38
|
+
loading: value,
|
|
39
|
+
options: {}
|
|
40
|
+
};
|
|
41
|
+
if (value && typeof value === "object") {
|
|
42
|
+
const { loading, ...rest } = value;
|
|
43
|
+
return {
|
|
44
|
+
loading: loading ?? true,
|
|
45
|
+
options: rest
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
loading: false,
|
|
50
|
+
options: {}
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
var STATE_KEY = Symbol("grLoadingState");
|
|
54
|
+
function getState(el) {
|
|
55
|
+
return el[STATE_KEY] ??= {};
|
|
56
|
+
}
|
|
57
|
+
function createLoading(options = {}, fallbackTarget) {
|
|
58
|
+
const initialTarget = resolveTarget(options.target, fallbackTarget ?? document.body);
|
|
59
|
+
const fullscreen = resolveFullscreen(options, initialTarget);
|
|
60
|
+
const target = fullscreen ? document.body : initialTarget;
|
|
61
|
+
const appContext = options.appContext;
|
|
62
|
+
const restorePosition = ensurePositionedContainer(target, fullscreen);
|
|
63
|
+
const mountEl = document.createElement("div");
|
|
64
|
+
mountEl.setAttribute("data-ds-loading-host", "");
|
|
65
|
+
target.appendChild(mountEl);
|
|
66
|
+
target.setAttribute("aria-busy", "true");
|
|
67
|
+
let current = { ...options };
|
|
68
|
+
let disposed = false;
|
|
69
|
+
function doRender() {
|
|
70
|
+
if (disposed) return;
|
|
71
|
+
const vnode = createVNode(GrLoading_default, {
|
|
72
|
+
text: current.text,
|
|
73
|
+
spinner: current.spinner,
|
|
74
|
+
spinnerClass: current.spinnerClass,
|
|
75
|
+
animated: current.animated,
|
|
76
|
+
background: current.background,
|
|
77
|
+
customClass: current.customClass,
|
|
78
|
+
zIndex: current.zIndex,
|
|
79
|
+
fullscreen
|
|
80
|
+
});
|
|
81
|
+
if (appContext) vnode.appContext = appContext;
|
|
82
|
+
render(vnode, mountEl);
|
|
83
|
+
}
|
|
84
|
+
function close() {
|
|
85
|
+
if (disposed) return;
|
|
86
|
+
disposed = true;
|
|
87
|
+
render(null, mountEl);
|
|
88
|
+
mountEl.remove();
|
|
89
|
+
restorePosition();
|
|
90
|
+
target.removeAttribute("aria-busy");
|
|
91
|
+
}
|
|
92
|
+
function setOptions(next) {
|
|
93
|
+
current = {
|
|
94
|
+
...current,
|
|
95
|
+
...next
|
|
96
|
+
};
|
|
97
|
+
doRender();
|
|
98
|
+
}
|
|
99
|
+
function setText(text) {
|
|
100
|
+
setOptions({ text });
|
|
101
|
+
}
|
|
102
|
+
doRender();
|
|
103
|
+
return {
|
|
104
|
+
close,
|
|
105
|
+
setOptions,
|
|
106
|
+
setText,
|
|
107
|
+
get target() {
|
|
108
|
+
return target;
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
function sync(el, value, appContext) {
|
|
113
|
+
const { loading, options } = parseBinding(value);
|
|
114
|
+
const state = getState(el);
|
|
115
|
+
if (!loading) {
|
|
116
|
+
state.controller?.close();
|
|
117
|
+
state.controller = void 0;
|
|
118
|
+
state.target = void 0;
|
|
119
|
+
state.fullscreen = void 0;
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const target = resolveTarget(options.target, el);
|
|
123
|
+
const fullscreen = resolveFullscreen(options, target);
|
|
124
|
+
const normalizedTarget = fullscreen ? document.body : target;
|
|
125
|
+
if (!state.controller || state.target !== normalizedTarget || state.fullscreen !== fullscreen) {
|
|
126
|
+
state.controller?.close();
|
|
127
|
+
state.controller = createLoading({
|
|
128
|
+
...options,
|
|
129
|
+
fullscreen,
|
|
130
|
+
target: normalizedTarget,
|
|
131
|
+
appContext
|
|
132
|
+
}, el);
|
|
133
|
+
state.target = normalizedTarget;
|
|
134
|
+
state.fullscreen = fullscreen;
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
const controller = state.controller;
|
|
138
|
+
if (!controller) return;
|
|
139
|
+
controller.setOptions({
|
|
140
|
+
...options,
|
|
141
|
+
fullscreen,
|
|
142
|
+
target: normalizedTarget
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
var vLoading = {
|
|
146
|
+
mounted(el, binding) {
|
|
147
|
+
const appContext = binding.instance?.$?.appContext;
|
|
148
|
+
sync(el, binding.value, appContext);
|
|
149
|
+
},
|
|
150
|
+
updated(el, binding) {
|
|
151
|
+
const appContext = binding.instance?.$?.appContext;
|
|
152
|
+
sync(el, binding.value, appContext);
|
|
153
|
+
},
|
|
154
|
+
unmounted(el) {
|
|
155
|
+
const state = getState(el);
|
|
156
|
+
state.controller?.close();
|
|
157
|
+
state.controller = void 0;
|
|
158
|
+
state.target = void 0;
|
|
159
|
+
state.fullscreen = void 0;
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
//#endregion
|
|
163
|
+
export { createLoading, vLoading };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loading.js","names":[],"sources":["../../src/directives/loading.ts"],"sourcesContent":["import type { AppContext, Component, Directive } from 'vue'\nimport { createVNode, render } from 'vue'\n\nimport GrLoading from '../components/GrLoading/GrLoading.vue'\n\nexport type LoadingTarget = string | HTMLElement\n\nexport type LoadingOptions = {\n /**\n * Контейнер, куда будет вставлен оверлей.\n * - если не задано, то для директивы используется сам `el`\n * - для ручного вызова (`createLoading`) по умолчанию используется `document.body`\n */\n target?: LoadingTarget\n\n /**\n * Полноэкранный лоадер (рендерится в `document.body`).\n * По умолчанию включается, если `target` = `document.body`.\n */\n fullscreen?: boolean\n\n text?: string\n spinner?: Component\n spinnerClass?: string\n animated?: boolean\n background?: string\n zIndex?: number\n customClass?: string\n\n /**\n * Внутренний контекст Vue-приложения.\n * Нужен, чтобы кастомный `spinner` мог использовать `inject()` даже при ручном `render()`.\n */\n appContext?: AppContext\n}\n\nexport type LoadingController = {\n close: () => void\n setText: (text?: string) => void\n setOptions: (next: Partial<LoadingOptions>) => void\n readonly target: HTMLElement\n}\n\nexport type LoadingBindingValue =\n | boolean\n | (Omit<LoadingOptions, 'appContext'> & {\n loading?: boolean\n })\n\nfunction isHTMLElement(value: unknown): value is HTMLElement {\n return typeof value === 'object' && value !== null && (value as any).nodeType === 1\n}\n\nfunction resolveTarget(input: LoadingTarget | undefined, fallback: HTMLElement): HTMLElement {\n if (!input) return fallback\n\n if (typeof input === 'string') {\n // Prefer searching within the same root (document / document fragment / shadow root)\n // to support components that are not attached to `document` yet (e.g. in unit tests).\n const root = fallback.getRootNode?.() ?? document\n const foundInRoot =\n typeof (root as any).querySelector === 'function' ? ((root as any).querySelector(input) as Element | null) : null\n if (isHTMLElement(foundInRoot)) return foundInRoot\n\n const foundInDocument = document.querySelector(input)\n if (isHTMLElement(foundInDocument)) return foundInDocument\n\n return fallback\n }\n\n if (isHTMLElement(input)) {\n return input\n }\n\n return fallback\n}\n\nfunction resolveFullscreen(options: LoadingOptions, target: HTMLElement): boolean {\n if (options.fullscreen != null) return options.fullscreen\n return target === document.body\n}\n\nfunction ensurePositionedContainer(target: HTMLElement, fullscreen: boolean): () => void {\n if (fullscreen) return () => {}\n\n const prevInline = target.style.position\n const computed = window.getComputedStyle(target)\n const isStatic = computed.position === 'static' || !computed.position\n\n if (isStatic) {\n target.style.position = 'relative'\n return () => {\n target.style.position = prevInline\n }\n }\n\n return () => {}\n}\n\nfunction parseBinding(value: LoadingBindingValue | undefined): { loading: boolean; options: LoadingOptions } {\n if (value === true || value === false) {\n return { loading: value, options: {} }\n }\n\n if (value && typeof value === 'object') {\n const { loading, ...rest } = value as any\n return { loading: loading ?? true, options: rest }\n }\n\n return { loading: false, options: {} }\n}\n\ntype InternalLoadingState = {\n controller?: LoadingController\n target?: HTMLElement\n fullscreen?: boolean\n}\n\nconst STATE_KEY: unique symbol = Symbol('grLoadingState')\n\nfunction getState(el: HTMLElement): InternalLoadingState {\n return ((el as any)[STATE_KEY] ??= {}) as InternalLoadingState\n}\n\nexport function createLoading(options: LoadingOptions = {}, fallbackTarget?: HTMLElement): LoadingController {\n const initialTarget = resolveTarget(options.target, fallbackTarget ?? document.body)\n const fullscreen = resolveFullscreen(options, initialTarget)\n const target = fullscreen ? document.body : initialTarget\n\n const appContext = options.appContext\n\n const restorePosition = ensurePositionedContainer(target, fullscreen)\n const mountEl = document.createElement('div')\n mountEl.setAttribute('data-ds-loading-host', '')\n target.appendChild(mountEl)\n target.setAttribute('aria-busy', 'true')\n\n let current: LoadingOptions = { ...options }\n let disposed = false\n\n function doRender(): void {\n if (disposed) return\n\n const vnode = createVNode(GrLoading as any, {\n text: current.text,\n spinner: current.spinner,\n spinnerClass: current.spinnerClass,\n animated: current.animated,\n background: current.background,\n customClass: current.customClass,\n zIndex: current.zIndex,\n fullscreen,\n })\n\n if (appContext) {\n ;(vnode as any).appContext = appContext\n }\n\n render(vnode, mountEl)\n }\n\n function close(): void {\n if (disposed) return\n disposed = true\n\n render(null, mountEl)\n mountEl.remove()\n restorePosition()\n target.removeAttribute('aria-busy')\n }\n\n function setOptions(next: Partial<LoadingOptions>): void {\n current = {\n ...current,\n ...next,\n }\n doRender()\n }\n\n function setText(text?: string): void {\n setOptions({ text })\n }\n\n doRender()\n\n return {\n close,\n setOptions,\n setText,\n get target() {\n return target\n },\n }\n}\n\nfunction sync(el: HTMLElement, value: LoadingBindingValue | undefined, appContext?: AppContext): void {\n const { loading, options } = parseBinding(value)\n const state = getState(el)\n\n if (!loading) {\n state.controller?.close()\n state.controller = undefined\n state.target = undefined\n state.fullscreen = undefined\n return\n }\n\n const target = resolveTarget(options.target, el)\n const fullscreen = resolveFullscreen(options, target)\n const normalizedTarget = fullscreen ? document.body : target\n\n const shouldRecreate =\n !state.controller\n || state.target !== normalizedTarget\n || state.fullscreen !== fullscreen\n\n if (shouldRecreate) {\n state.controller?.close()\n state.controller = createLoading({ ...options, fullscreen, target: normalizedTarget, appContext }, el)\n state.target = normalizedTarget\n state.fullscreen = fullscreen\n return\n }\n\n const controller = state.controller\n if (!controller) return\n controller.setOptions({ ...options, fullscreen, target: normalizedTarget })\n}\n\nexport const vLoading: Directive<HTMLElement, LoadingBindingValue> = {\n mounted(el, binding) {\n const appContext = (binding.instance as any)?.$?.appContext as AppContext | undefined\n sync(el, binding.value, appContext)\n },\n updated(el, binding) {\n const appContext = (binding.instance as any)?.$?.appContext as AppContext | undefined\n sync(el, binding.value, appContext)\n },\n unmounted(el) {\n const state = getState(el)\n state.controller?.close()\n state.controller = undefined\n state.target = undefined\n state.fullscreen = undefined\n },\n}\n"],"mappings":";;;AAiDA,SAAS,cAAc,OAAsC;AAC3D,QAAO,OAAO,UAAU,YAAY,UAAU,QAAS,MAAc,aAAa;;AAGpF,SAAS,cAAc,OAAkC,UAAoC;AAC3F,KAAI,CAAC,MAAO,QAAO;AAEnB,KAAI,OAAO,UAAU,UAAU;EAG7B,MAAM,OAAO,SAAS,eAAe,IAAI;EACzC,MAAM,cACJ,OAAQ,KAAa,kBAAkB,aAAe,KAAa,cAAc,MAAM,GAAsB;AAC/G,MAAI,cAAc,YAAY,CAAE,QAAO;EAEvC,MAAM,kBAAkB,SAAS,cAAc,MAAM;AACrD,MAAI,cAAc,gBAAgB,CAAE,QAAO;AAE3C,SAAO;;AAGT,KAAI,cAAc,MAAM,CACtB,QAAO;AAGT,QAAO;;AAGT,SAAS,kBAAkB,SAAyB,QAA8B;AAChF,KAAI,QAAQ,cAAc,KAAM,QAAO,QAAQ;AAC/C,QAAO,WAAW,SAAS;;AAG7B,SAAS,0BAA0B,QAAqB,YAAiC;AACvF,KAAI,WAAY,cAAa;CAE7B,MAAM,aAAa,OAAO,MAAM;CAChC,MAAM,WAAW,OAAO,iBAAiB,OAAO;AAGhD,KAFiB,SAAS,aAAa,YAAY,CAAC,SAAS,UAE/C;AACZ,SAAO,MAAM,WAAW;AACxB,eAAa;AACX,UAAO,MAAM,WAAW;;;AAI5B,cAAa;;AAGf,SAAS,aAAa,OAAuF;AAC3G,KAAI,UAAU,QAAQ,UAAU,MAC9B,QAAO;EAAE,SAAS;EAAO,SAAS,EAAE;EAAE;AAGxC,KAAI,SAAS,OAAO,UAAU,UAAU;EACtC,MAAM,EAAE,SAAS,GAAG,SAAS;AAC7B,SAAO;GAAE,SAAS,WAAW;GAAM,SAAS;GAAM;;AAGpD,QAAO;EAAE,SAAS;EAAO,SAAS,EAAE;EAAE;;AASxC,IAAM,YAA2B,OAAO,iBAAiB;AAEzD,SAAS,SAAS,IAAuC;AACvD,QAAQ,GAAY,eAAe,EAAE;;AAGvC,SAAgB,cAAc,UAA0B,EAAE,EAAE,gBAAiD;CAC3G,MAAM,gBAAgB,cAAc,QAAQ,QAAQ,kBAAkB,SAAS,KAAK;CACpF,MAAM,aAAa,kBAAkB,SAAS,cAAc;CAC5D,MAAM,SAAS,aAAa,SAAS,OAAO;CAE5C,MAAM,aAAa,QAAQ;CAE3B,MAAM,kBAAkB,0BAA0B,QAAQ,WAAW;CACrE,MAAM,UAAU,SAAS,cAAc,MAAM;AAC7C,SAAQ,aAAa,wBAAwB,GAAG;AAChD,QAAO,YAAY,QAAQ;AAC3B,QAAO,aAAa,aAAa,OAAO;CAExC,IAAI,UAA0B,EAAE,GAAG,SAAS;CAC5C,IAAI,WAAW;CAEf,SAAS,WAAiB;AACxB,MAAI,SAAU;EAEd,MAAM,QAAQ,YAAY,mBAAkB;GAC1C,MAAM,QAAQ;GACd,SAAS,QAAQ;GACjB,cAAc,QAAQ;GACtB,UAAU,QAAQ;GAClB,YAAY,QAAQ;GACpB,aAAa,QAAQ;GACrB,QAAQ,QAAQ;GAChB;GACD,CAAC;AAEF,MAAI,WACA,OAAc,aAAa;AAG/B,SAAO,OAAO,QAAQ;;CAGxB,SAAS,QAAc;AACrB,MAAI,SAAU;AACd,aAAW;AAEX,SAAO,MAAM,QAAQ;AACrB,UAAQ,QAAQ;AAChB,mBAAiB;AACjB,SAAO,gBAAgB,YAAY;;CAGrC,SAAS,WAAW,MAAqC;AACvD,YAAU;GACR,GAAG;GACH,GAAG;GACJ;AACD,YAAU;;CAGZ,SAAS,QAAQ,MAAqB;AACpC,aAAW,EAAE,MAAM,CAAC;;AAGtB,WAAU;AAEV,QAAO;EACL;EACA;EACA;EACA,IAAI,SAAS;AACX,UAAO;;EAEV;;AAGH,SAAS,KAAK,IAAiB,OAAwC,YAA+B;CACpG,MAAM,EAAE,SAAS,YAAY,aAAa,MAAM;CAChD,MAAM,QAAQ,SAAS,GAAG;AAE1B,KAAI,CAAC,SAAS;AACZ,QAAM,YAAY,OAAO;AACzB,QAAM,aAAa,KAAA;AACnB,QAAM,SAAS,KAAA;AACf,QAAM,aAAa,KAAA;AACnB;;CAGF,MAAM,SAAS,cAAc,QAAQ,QAAQ,GAAG;CAChD,MAAM,aAAa,kBAAkB,SAAS,OAAO;CACrD,MAAM,mBAAmB,aAAa,SAAS,OAAO;AAOtD,KAJE,CAAC,MAAM,cACJ,MAAM,WAAW,oBACjB,MAAM,eAAe,YAEN;AAClB,QAAM,YAAY,OAAO;AACzB,QAAM,aAAa,cAAc;GAAE,GAAG;GAAS;GAAY,QAAQ;GAAkB;GAAY,EAAE,GAAG;AACtG,QAAM,SAAS;AACf,QAAM,aAAa;AACnB;;CAGF,MAAM,aAAa,MAAM;AACzB,KAAI,CAAC,WAAY;AACjB,YAAW,WAAW;EAAE,GAAG;EAAS;EAAY,QAAQ;EAAkB,CAAC;;AAG7E,IAAa,WAAwD;CACnE,QAAQ,IAAI,SAAS;EACnB,MAAM,aAAc,QAAQ,UAAkB,GAAG;AACjD,OAAK,IAAI,QAAQ,OAAO,WAAW;;CAErC,QAAQ,IAAI,SAAS;EACnB,MAAM,aAAc,QAAQ,UAAkB,GAAG;AACjD,OAAK,IAAI,QAAQ,OAAO,WAAW;;CAErC,UAAU,IAAI;EACZ,MAAM,QAAQ,SAAS,GAAG;AAC1B,QAAM,YAAY,OAAO;AACzB,QAAM,aAAa,KAAA;AACnB,QAAM,SAAS,KAAA;AACf,QAAM,aAAa,KAAA;;CAEtB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as
|
|
2
|
-
export {
|
|
1
|
+
import { a as allowedExtensionsValidator, c as normalizeFiles, i as allowedMimeTypesValidator, l as runFileValidators, n as maxSizeMbValidator, o as acceptValidator, r as maxFileSizeBytesValidator, s as matchAccept, t as maxTotalSizeBytesValidator, u as FileValidationError } from "../chunks/fileValidation-CwJA8Vmn.js";
|
|
2
|
+
export { FileValidationError, acceptValidator, allowedExtensionsValidator, allowedMimeTypesValidator, matchAccept, maxFileSizeBytesValidator, maxSizeMbValidator, maxTotalSizeBytesValidator, normalizeFiles, runFileValidators };
|
|
@@ -1,23 +1,32 @@
|
|
|
1
|
-
import { n as
|
|
2
|
-
import { n as
|
|
3
|
-
import { a as
|
|
4
|
-
import { defineGranularComponent
|
|
5
|
-
import { tokenDefinitionsFromCssSync
|
|
1
|
+
import { n as grButtonSafelist } from "./chunks/safelist-BY7z8fOl.js";
|
|
2
|
+
import { n as grProgressBarSafelist } from "./chunks/config-Da90XGsi.js";
|
|
3
|
+
import { a as granularityThemeNames, i as granularityDefaultThemes, n as createGranularityProvider, r as granularityComponentConfigs, t as GRANULARITY_PROVIDER_ID } from "./chunks/shared-Cu5QkNmt.js";
|
|
4
|
+
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
5
|
+
import { tokenDefinitionsFromCssSync } from "@feugene/unocss-preset-granular/node";
|
|
6
6
|
//#region src/components/GrButton/config.node.ts
|
|
7
|
-
var
|
|
7
|
+
var lightCssUrl$1 = new URL("data:text/css;base64,OnJvb3QgewogIC0tZHMtYnV0dG9uLXByaW1hcnktYmc6IHZhcigtLXByaW1hcnkpOwogIC0tZHMtYnV0dG9uLXByaW1hcnktYmctaG92ZXI6IHZhcigtLXByaW1hcnktaG92ZXIpOwogIC0tZHMtYnV0dG9uLXByaW1hcnktYmctYWN0aXZlOiB2YXIoLS1wcmltYXJ5LWFjdGl2ZSk7CiAgLS1kcy1idXR0b24tcHJpbWFyeS1mZzogdmFyKC0tcHJpbWFyeS1mZyk7CiAgLS1kcy1idXR0b24tcHJpbWFyeS1zb2Z0LWJnOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcHJpbWFyeSkgMTQlLCB2YXIoLS1iZykpOwogIC0tZHMtYnV0dG9uLXByaW1hcnktc29mdC1iZy1ob3ZlcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXByaW1hcnkpIDE4JSwgdmFyKC0tYmcpKTsKICAtLWRzLWJ1dHRvbi1wcmltYXJ5LXNvZnQtYmctYWN0aXZlOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcHJpbWFyeSkgMjQlLCB2YXIoLS1iZykpOwoKICAtLWRzLWJ1dHRvbi1zdWNjZXNzLWJnOiAjMDQ3ODU3OwogIC0tZHMtYnV0dG9uLXN1Y2Nlc3MtYmctaG92ZXI6ICMwMzZjNGQ7CiAgLS1kcy1idXR0b24tc3VjY2Vzcy1iZy1hY3RpdmU6ICMwMjVmNDQ7CiAgLS1kcy1idXR0b24tc3VjY2Vzcy1mZzogdmFyKC0tZHMtc3VjY2Vzcy1mZyk7CiAgLS1kcy1idXR0b24tc3VjY2Vzcy1zb2Z0LWJnOiB2YXIoLS1kcy1zdWNjZXNzLWxpZ2h0KTsKICAtLWRzLWJ1dHRvbi1zdWNjZXNzLXNvZnQtYmctaG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1kcy1zdWNjZXNzKSAyMCUsIHZhcigtLWJnKSk7CiAgLS1kcy1idXR0b24tc3VjY2Vzcy1zb2Z0LWJnLWFjdGl2ZTogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRzLXN1Y2Nlc3MpIDI2JSwgdmFyKC0tYmcpKTsKCiAgLS1kcy1idXR0b24td2FybmluZy1iZzogI2MyNDEwYzsKICAtLWRzLWJ1dHRvbi13YXJuaW5nLWJnLWhvdmVyOiAjYjUzYjBhOwogIC0tZHMtYnV0dG9uLXdhcm5pbmctYmctYWN0aXZlOiAjOWYzMzA3OwogIC0tZHMtYnV0dG9uLXdhcm5pbmctZmc6IHZhcigtLWRzLXdhcm5pbmctZmcpOwogIC0tZHMtYnV0dG9uLXdhcm5pbmctc29mdC1iZzogdmFyKC0tZHMtd2FybmluZy1saWdodCk7CiAgLS1kcy1idXR0b24td2FybmluZy1zb2Z0LWJnLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZHMtd2FybmluZykgMjAlLCB2YXIoLS1iZykpOwogIC0tZHMtYnV0dG9uLXdhcm5pbmctc29mdC1iZy1hY3RpdmU6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1kcy13YXJuaW5nKSAyNiUsIHZhcigtLWJnKSk7CgogIC0tZHMtYnV0dG9uLWRhbmdlci1iZzogdmFyKC0tZHMtZGFuZ2VyKTsKICAtLWRzLWJ1dHRvbi1kYW5nZXItYmctaG92ZXI6IHZhcigtLWRzLWRhbmdlci1ob3Zlcik7CiAgLS1kcy1idXR0b24tZGFuZ2VyLWJnLWFjdGl2ZTogdmFyKC0tZHMtZGFuZ2VyLWFjdGl2ZSk7CiAgLS1kcy1idXR0b24tZGFuZ2VyLWZnOiB2YXIoLS1kcy1kYW5nZXItZmcpOwogIC0tZHMtYnV0dG9uLWRhbmdlci1zb2Z0LWJnOiB2YXIoLS1kcy1kYW5nZXItbGlnaHQpOwogIC0tZHMtYnV0dG9uLWRhbmdlci1zb2Z0LWJnLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZHMtZGFuZ2VyKSAyMCUsIHZhcigtLWJnKSk7CiAgLS1kcy1idXR0b24tZGFuZ2VyLXNvZnQtYmctYWN0aXZlOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZHMtZGFuZ2VyKSAyNiUsIHZhcigtLWJnKSk7CgogIC0tZHMtYnV0dG9uLWluZm8tYmc6IHZhcigtLWRzLWluZm8pOwogIC0tZHMtYnV0dG9uLWluZm8tYmctaG92ZXI6IHZhcigtLWRzLWluZm8taG92ZXIpOwogIC0tZHMtYnV0dG9uLWluZm8tYmctYWN0aXZlOiB2YXIoLS1kcy1pbmZvLWFjdGl2ZSk7CiAgLS1kcy1idXR0b24taW5mby1mZzogdmFyKC0tZHMtaW5mby1mZyk7CiAgLS1kcy1idXR0b24taW5mby1zb2Z0LWJnOiB2YXIoLS1kcy1pbmZvLWxpZ2h0KTsKICAtLWRzLWJ1dHRvbi1pbmZvLXNvZnQtYmctaG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1kcy1pbmZvKSAyMCUsIHZhcigtLWJnKSk7CiAgLS1kcy1idXR0b24taW5mby1zb2Z0LWJnLWFjdGl2ZTogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRzLWluZm8pIDI2JSwgdmFyKC0tYmcpKTsKCiAgLS1kcy1idXR0b24tc2xhdGUtYmc6IHZhcigtLWRzLXNsYXRlKTsKICAtLWRzLWJ1dHRvbi1zbGF0ZS1iZy1ob3ZlcjogdmFyKC0tZHMtc2xhdGUtaG92ZXIpOwogIC0tZHMtYnV0dG9uLXNsYXRlLWJnLWFjdGl2ZTogdmFyKC0tZHMtc2xhdGUtYWN0aXZlKTsKICAtLWRzLWJ1dHRvbi1zbGF0ZS1mZzogdmFyKC0tZHMtc2xhdGUtZmcpOwogIC0tZHMtYnV0dG9uLXNsYXRlLXNvZnQtYmc6IHZhcigtLWRzLXNsYXRlLWxpZ2h0KTsKICAtLWRzLWJ1dHRvbi1zbGF0ZS1zb2Z0LWJnLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZHMtc2xhdGUpIDIwJSwgdmFyKC0tYmcpKTsKICAtLWRzLWJ1dHRvbi1zbGF0ZS1zb2Z0LWJnLWFjdGl2ZTogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRzLXNsYXRlKSAyNiUsIHZhcigtLWJnKSk7CgogIC0tZHMtYnV0dG9uLWF6dXJlLWJnOiAjMDM2OWExOwogIC0tZHMtYnV0dG9uLWF6dXJlLWJnLWhvdmVyOiAjMDc1OTg1OwogIC0tZHMtYnV0dG9uLWF6dXJlLWJnLWFjdGl2ZTogIzBjNGE2ZTsKICAtLWRzLWJ1dHRvbi1henVyZS1mZzogI2ZmZmZmZjsKICAtLWRzLWJ1dHRvbi1henVyZS1zb2Z0LWJnOiB2YXIoLS1kcy1henVyZS1saWdodCk7CiAgLS1kcy1idXR0b24tYXp1cmUtc29mdC1iZy1ob3ZlcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRzLWF6dXJlKSAyMCUsIHZhcigtLWJnKSk7CiAgLS1kcy1idXR0b24tYXp1cmUtc29mdC1iZy1hY3RpdmU6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1kcy1henVyZSkgMjYlLCB2YXIoLS1iZykpOwp9", "" + import.meta.url).href;
|
|
8
|
+
var darkCssUrl$1 = new URL("data:text/css;base64,Ci50aGVtZS1kYXJrLAouZGFyaywKW2RhdGEtdGhlbWU9J2RhcmsnXSB7CiAgLS1kcy1idXR0b24tcHJpbWFyeS1iZzogIzU5NWNlNjsKICAtLWRzLWJ1dHRvbi1wcmltYXJ5LWJnLWhvdmVyOiAjNTA1M2RkOwogIC0tZHMtYnV0dG9uLXByaW1hcnktYmctYWN0aXZlOiAjNDc0YWNmOwogIC0tZHMtYnV0dG9uLXByaW1hcnktZmc6ICNmZmZmZmY7CgogIC0tZHMtYnV0dG9uLXN1Y2Nlc3MtYmc6ICMwNDc4NTc7CiAgLS1kcy1idXR0b24tc3VjY2Vzcy1iZy1ob3ZlcjogIzAzNmM0ZDsKICAtLWRzLWJ1dHRvbi1zdWNjZXNzLWJnLWFjdGl2ZTogIzAyNWY0NDsKICAtLWRzLWJ1dHRvbi1zdWNjZXNzLWZnOiAjZjhmYWZjOwoKICAtLWRzLWJ1dHRvbi13YXJuaW5nLWJnOiAjYzI0MTBjOwogIC0tZHMtYnV0dG9uLXdhcm5pbmctYmctaG92ZXI6ICNiNTNiMGE7CiAgLS1kcy1idXR0b24td2FybmluZy1iZy1hY3RpdmU6ICM5ZjMzMDc7CiAgLS1kcy1idXR0b24td2FybmluZy1mZzogI2Y4ZmFmYzsKCiAgLS1kcy1idXR0b24tZGFuZ2VyLWJnOiAjYjkxYzFjOwogIC0tZHMtYnV0dG9uLWRhbmdlci1iZy1ob3ZlcjogI2E5MTkxOTsKICAtLWRzLWJ1dHRvbi1kYW5nZXItYmctYWN0aXZlOiAjOTMxNTE1OwogIC0tZHMtYnV0dG9uLWRhbmdlci1mZzogI2Y4ZmFmYzsKCiAgLS1kcy1idXR0b24taW5mby1iZzogIzQzMzhjYTsKICAtLWRzLWJ1dHRvbi1pbmZvLWJnLWhvdmVyOiAjM2QzM2JiOwogIC0tZHMtYnV0dG9uLWluZm8tYmctYWN0aXZlOiAjMzYyZGE4OwogIC0tZHMtYnV0dG9uLWluZm8tZmc6ICNmOGZhZmM7CgogIC0tZHMtYnV0dG9uLXNsYXRlLWJnOiAjNDc1NTY5OwogIC0tZHMtYnV0dG9uLXNsYXRlLWJnLWhvdmVyOiAjMzM0MTU1OwogIC0tZHMtYnV0dG9uLXNsYXRlLWJnLWFjdGl2ZTogIzFlMjkzYjsKICAtLWRzLWJ1dHRvbi1zbGF0ZS1mZzogI2Y4ZmFmYzsKCiAgLS1kcy1idXR0b24tYXp1cmUtYmc6ICMwMzY5YTE7CiAgLS1kcy1idXR0b24tYXp1cmUtYmctaG92ZXI6ICMwNzU5ODU7CiAgLS1kcy1idXR0b24tYXp1cmUtYmctYWN0aXZlOiAjMGM0YTZlOwogIC0tZHMtYnV0dG9uLWF6dXJlLWZnOiAjZjhmYWZjOwp9", "" + import.meta.url).href;
|
|
9
|
+
var grButtonConfig = defineGranularComponent(import.meta.url, {
|
|
8
10
|
name: "GrButton",
|
|
9
|
-
safelist:
|
|
11
|
+
safelist: grButtonSafelist,
|
|
10
12
|
tokenDefinitions: {
|
|
11
|
-
light:
|
|
12
|
-
dark:
|
|
13
|
+
light: tokenDefinitionsFromCssSync(lightCssUrl$1, { selector: ":root" }),
|
|
14
|
+
dark: tokenDefinitionsFromCssSync(darkCssUrl$1, { as: ".dark, [data-theme=\"dark\"]" })
|
|
13
15
|
}
|
|
14
|
-
})
|
|
16
|
+
});
|
|
17
|
+
//#endregion
|
|
18
|
+
//#region src/components/GrProgressBar/config.node.ts
|
|
19
|
+
var lightCssUrl = new URL("data:text/css;base64,OnJvb3QgewogIC0tcGItYmc6IHZhcigtLXByaW1hcnkpOwogIC0tcGItbmV1dHJhbC1iZzogdmFyKC0tc2Vjb25kYXJ5KTsKICAtLXBiLXN1Y2Nlc3MtYmc6IHZhcigtLWRzLXN1Y2Nlc3MpOwogIC0tcGItd2FybmluZy1iZzogdmFyKC0tZHMtd2FybmluZyk7CiAgLS1wYi1kYW5nZXItYmc6IHZhcigtLWRzLWRhbmdlcik7CiAgLS1wYi1pbmZvLWJnOiB2YXIoLS1kcy1pbmZvKTsKICAtLXBiLXNsYXRlLWJnOiB2YXIoLS1kcy1zbGF0ZSk7CiAgLS1wYi1henVyZS1iZzogdmFyKC0tZHMtYXp1cmUpOwp9Cg==", "" + import.meta.url).href;
|
|
20
|
+
var darkCssUrl = new URL("data:text/css;base64,LnRoZW1lLWRhcmssCi5kYXJrLApbZGF0YS10aGVtZT0nZGFyayddIHsKICAtLXBiLWJnOiB2YXIoLS1wcmltYXJ5KTsKICAtLXBiLW5ldXRyYWwtYmc6IHZhcigtLXNlY29uZGFyeSk7CiAgLS1wYi1zdWNjZXNzLWJnOiB2YXIoLS1kcy1zdWNjZXNzKTsKICAtLXBiLXdhcm5pbmctYmc6IHZhcigtLWRzLXdhcm5pbmcpOwogIC0tcGItZGFuZ2VyLWJnOiB2YXIoLS1kcy1kYW5nZXIpOwogIC0tcGItaW5mby1iZzogdmFyKC0tZHMtaW5mbyk7CiAgLS1wYi1zbGF0ZS1iZzogdmFyKC0tZHMtc2xhdGUpOwogIC0tcGItYXp1cmUtYmc6IHZhcigtLWRzLWF6dXJlKTsKfQ==", "" + import.meta.url).href;
|
|
21
|
+
//#endregion
|
|
22
|
+
//#region src/granular-provider/node.ts
|
|
23
|
+
var granularityProvider = createGranularityProvider([grButtonConfig, defineGranularComponent(import.meta.url, {
|
|
15
24
|
name: "GrProgressBar",
|
|
16
|
-
safelist:
|
|
25
|
+
safelist: grProgressBarSafelist,
|
|
17
26
|
tokenDefinitions: {
|
|
18
|
-
light:
|
|
19
|
-
dark:
|
|
27
|
+
light: tokenDefinitionsFromCssSync(lightCssUrl, { selector: ":root" }),
|
|
28
|
+
dark: tokenDefinitionsFromCssSync(darkCssUrl, { as: ".dark, [data-theme=\"dark\"]" })
|
|
20
29
|
}
|
|
21
30
|
})]);
|
|
22
31
|
//#endregion
|
|
23
|
-
export {
|
|
32
|
+
export { GRANULARITY_PROVIDER_ID, createGranularityProvider, granularityProvider as default, granularityProvider, granularityComponentConfigs, granularityDefaultThemes, granularityThemeNames };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"granular-provider-node.js","names":[],"sources":["../src/components/GrButton/config.node.ts","../src/components/GrProgressBar/config.node.ts","../src/granular-provider/node.ts"],"sourcesContent":["import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\nimport { tokenDefinitionsFromCssSync } from '@feugene/unocss-preset-granular/node'\nimport { grButtonSafelist } from './safelist'\n\nconst lightCssUrl = new URL('./themes/light.css', import.meta.url).href\nconst darkCssUrl = new URL('./themes/dark.css', import.meta.url).href\n\nexport const grButtonConfig = defineGranularComponent(import.meta.url, {\n name: 'GrButton',\n safelist: grButtonSafelist,\n tokenDefinitions: {\n light: tokenDefinitionsFromCssSync(lightCssUrl, { selector: ':root' }),\n dark: tokenDefinitionsFromCssSync(darkCssUrl, { as: '.dark, [data-theme=\"dark\"]' }),\n },\n})\n","import {defineGranularComponent} from '@feugene/unocss-preset-granular/contract'\n\nimport { grProgressBarSafelist } from './safelist'\nimport {tokenDefinitionsFromCssSync} from \"@feugene/unocss-preset-granular/node\";\n\nconst lightCssUrl = new URL('./themes/light.css', import.meta.url).href\nconst darkCssUrl = new URL('./themes/dark.css', import.meta.url).href\n\nexport const grProgressBarConfig = defineGranularComponent(import.meta.url, {\n name: 'GrProgressBar',\n safelist: grProgressBarSafelist,\n tokenDefinitions: {\n light: tokenDefinitionsFromCssSync(lightCssUrl, { selector: ':root' }),\n dark: tokenDefinitionsFromCssSync(darkCssUrl, { as: '.dark, [data-theme=\"dark\"]' }),\n },\n})","// Node-entry granular-provider'а `@feugene/granularity`.\n//\n// От browser-варианта (`./index.ts`) отличается только тем, что для\n// `GrButton` используется `config.node.ts` с `tokenDefinitions`,\n// собранными через `tokenDefinitionsFromCssSync` (требует `node:fs`).\n// Всё остальное — id, `theme.*`, список компонентов, `packageBaseUrl` —\n// приходит из общей фабрики `./shared`.\nimport { grButtonConfig } from '../components/GrButton/config.node'\nimport { grProgressBarConfig } from '../components/GrProgressBar/config.node'\nimport { createGranularityProvider } from './shared'\n\nexport * from './shared'\n\nexport const granularityProvider = createGranularityProvider([grButtonConfig, grProgressBarConfig])\n\nexport default granularityProvider\n"],"mappings":";;;;;;AAIA,IAAM,gBAAc,IAAA,IAAA,q0HAAA,KAAA,OAAA,KAAA,IAA8C,CAAC;AACnE,IAAM,eAAa,IAAA,IAAA,q8CAAA,KAAA,OAAA,KAAA,IAA6C,CAAC;AAEjE,IAAa,iBAAiB,wBAAwB,OAAO,KAAK,KAAK;CACrE,MAAM;CACN,UAAU;CACV,kBAAkB;EAChB,OAAO,4BAA4B,eAAa,EAAE,UAAU,SAAS,CAAC;EACtE,MAAM,4BAA4B,cAAY,EAAE,IAAI,gCAA8B,CAAA;;CAErF,CAAC;;;ACTF,IAAM,cAAc,IAAA,IAAA,yZAAA,KAAA,OAAA,KAAA,IAA8C,CAAC;AACnE,IAAM,aAAa,IAAA,IAAA,qcAAA,KAAA,OAAA,KAAA,IAA6C,CAAC;;;ACOjE,IAAa,sBAAsB,0BAA0B,CAAC,gBDL3B,wBAAwB,OAAO,KAAK,KAAK;CAC1E,MAAM;CACN,UAAU;CACV,kBAAkB;EAChB,OAAO,4BAA4B,aAAa,EAAE,UAAU,SAAS,CAAC;EACtE,MAAM,4BAA4B,YAAY,EAAE,IAAI,gCAA8B,CAAA;;CAErF,CAAA,CCFiG,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as
|
|
1
|
+
import { a as granularityThemeNames, i as granularityDefaultThemes, n as createGranularityProvider, r as granularityComponentConfigs, t as GRANULARITY_PROVIDER_ID } from "./chunks/shared-Cu5QkNmt.js";
|
|
2
2
|
//#region src/granular-provider/index.ts
|
|
3
|
-
var
|
|
3
|
+
var granularityProvider = createGranularityProvider();
|
|
4
4
|
//#endregion
|
|
5
|
-
export {
|
|
5
|
+
export { GRANULARITY_PROVIDER_ID, createGranularityProvider, granularityProvider as default, granularityProvider, granularityComponentConfigs, granularityDefaultThemes, granularityThemeNames };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"granular-provider.js","names":[],"sources":["../src/granular-provider/index.ts"],"sourcesContent":["// Browser-entry granular-provider'а `@feugene/granularity`.\n//\n// Использует облегчённый `GrButton/config.ts` без `tokenDefinitionsFromCssSync`,\n// поэтому при сборке клиентских приложений из этого модуля не протягиваются\n// `node:fs`/`node:url`/`node:path`.\n//\n// Для node-сборок UnoCSS, где нужны точечные token overrides из CSS-файлов\n// тем, используйте `./node.ts` — там в `GrButton` подставляется\n// `config.node.ts` с `tokenDefinitionsFromCssSync`.\nimport {createGranularityProvider} from './shared'\n\nexport * from './shared'\n\nexport const granularityProvider = createGranularityProvider()\n\nexport default granularityProvider\n"],"mappings":";;AAaA,IAAa,sBAAsB,2BAA2B"}
|