@feugene/granularity 0.5.1 → 0.6.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/{adapter-K6zZTzBi.js.map → adapter-CRyH4YC8.js.map} +1 -1
- package/dist/chunks/{config-Cgk5ti-b.js.map → config-3SftO0uG.js.map} +1 -1
- package/dist/chunks/{config-BN-B2K4r.js.map → config-B44QVIge.js.map} +1 -1
- package/dist/chunks/{config-C-GVBa19.js.map → config-B8rC_K97.js.map} +1 -1
- package/dist/chunks/{config-DEv4m-ZP.js.map → config-BXffa3ta.js.map} +1 -1
- package/dist/chunks/{config-CUgvsjZx.js.map → config-BhvNm4Pp.js.map} +1 -1
- package/dist/chunks/{config-BNOf_qjD.js.map → config-C0b_3LJV.js.map} +1 -1
- package/dist/chunks/config-C0rHS1-l.js.map +1 -0
- package/dist/chunks/{config-fCcRwjIB.js.map → config-C4qAA0Sb.js.map} +1 -1
- package/dist/chunks/{config-XwI6t8cn.js.map → config-C5TN9J2Z.js.map} +1 -1
- package/dist/chunks/config-CVnluhKO.js.map +1 -0
- package/dist/chunks/{config-DUtUkSzc.js.map → config-CjEplP6D.js.map} +1 -1
- package/dist/chunks/{config-D19pyP4D.js.map → config-CtomKf-k.js.map} +1 -1
- package/dist/chunks/{config-BvuQUBtZ.js.map → config-CxCAfXZ1.js.map} +1 -1
- package/dist/chunks/{config-BDiLiqSk.js.map → config-D1DI3roo.js.map} +1 -1
- package/dist/chunks/{config-CgjOJ3aF.js.map → config-D27BL0H9.js.map} +1 -1
- package/dist/chunks/config-D32znLtV2.js.map +1 -0
- package/dist/chunks/{config-YSOeh6cy.js.map → config-D6Af6WZw.js.map} +1 -1
- package/dist/chunks/{config-BulF0Bf-.js.map → config-D98m8iyz.js.map} +1 -1
- package/dist/chunks/config-DDLoUczC.js.map +1 -0
- package/dist/chunks/{config-CFcv0hjb.js.map → config-DQOSlWvp.js.map} +1 -1
- package/dist/chunks/{config-ndXqsz5A.js.map → config-DbqFk-IW.js.map} +1 -1
- package/dist/chunks/{config-CdHY0Z7L.js.map → config-DnsISjD8.js.map} +1 -1
- package/dist/chunks/{config-BFZN9-vt.js.map → config-DudL02ag.js.map} +1 -1
- package/dist/chunks/{config-DgRJlF00.js.map → config-Dusr9jcE.js.map} +1 -1
- package/dist/chunks/{config-CWvHiaqr2.js.map → config-DxqMXzNV2.js.map} +1 -1
- package/dist/chunks/config-Mp9DJ9Mq2.js.map +1 -0
- package/dist/chunks/{config-R0jaXatX.js → config-XoANT5mU.js} +1 -1
- package/dist/chunks/{config-R0jaXatX.js.map → config-XoANT5mU.js.map} +1 -1
- package/dist/chunks/config-ZJVOVgqR.js +22 -0
- package/dist/chunks/config-ZJVOVgqR.js.map +1 -0
- package/dist/chunks/{config-CM7nbATU2.js.map → config-rxFL-6yF2.js.map} +1 -1
- package/dist/chunks/{config-bpQYM5O-.js.map → config-wo-ncgTH.js.map} +1 -1
- package/dist/chunks/{en-BeJa78lP.js.map → en-BMjJZttK.js.map} +1 -1
- package/dist/chunks/{es-BPqm7rLm.js → es-Cu_RlgIr.js} +3 -3
- package/dist/chunks/{es-BPqm7rLm.js.map → es-Cu_RlgIr.js.map} +1 -1
- package/dist/chunks/{es-axYOwwWD.js.map → es-EYCf8G_1.js.map} +1 -1
- package/dist/chunks/{grSelectStyles-daEeDlBn.js.map → grSelectStyles-DTAYNzxn.js.map} +1 -1
- package/dist/chunks/grStyle-5EMYYctb.js +19 -0
- package/dist/chunks/grStyle-5EMYYctb.js.map +1 -0
- package/dist/chunks/{granularityI18n-GCqUz_lo.js → granularityI18n-Dm4DuCS9.js} +1 -1
- package/dist/chunks/{granularityI18n-GCqUz_lo.js.map → granularityI18n-Dm4DuCS9.js.map} +1 -1
- package/dist/chunks/{ru-Dqh-2C00.js.map → ru-DKswMSdd.js.map} +1 -1
- package/dist/chunks/{shared-CyCPkimZ.js → shared-DO3Sr5FJ.js} +30 -30
- package/dist/chunks/{shared-CyCPkimZ.js.map → shared-DO3Sr5FJ.js.map} +1 -1
- package/dist/components/GrFileUpload/chunks/{GrFileUpload-u01j9S0t.js → GrFileUpload-DYRERhI2.js} +258 -37
- package/dist/components/GrFileUpload/chunks/GrFileUpload-DYRERhI2.js.map +1 -0
- package/dist/components/GrFileUpload/index.js +3 -3
- package/dist/components/GrFormField/chunks/{GrFormField-C6PfAs4u.js.map → GrFormField-C1oWTT_0.js.map} +1 -1
- package/dist/components/GrFormField/index.js +2 -2
- package/dist/components/GrFormFile/chunks/{GrFormFile-DdM8Bc2B.js.map → GrFormFile-deDPicM2.js.map} +1 -1
- package/dist/components/GrFormFile/index.js +2 -2
- package/dist/components/GrFormSection/chunks/{GrFormSection-5djEaQZQ.js.map → GrFormSection-CWBk2EUm.js.map} +1 -1
- package/dist/components/GrFormSection/index.js +2 -2
- package/dist/components/GrImageViewer/chunks/{GrImageViewer-CjSnohW7.js.map → GrImageViewer-Cpj5zyZQ.js.map} +1 -1
- package/dist/components/GrImageViewer/index.js +2 -2
- package/dist/components/GrInput/chunks/{GrInput-ghxaTf6d.js.map → GrInput-CfO2RsM-.js.map} +1 -1
- package/dist/components/GrInput/index.js +2 -2
- package/dist/components/GrInputTag/chunks/{GrInputTag-B0x4U0Yk.js → GrInputTag-G_VYJPF9.js} +1 -1
- package/dist/components/GrInputTag/chunks/{GrInputTag-B0x4U0Yk.js.map → GrInputTag-G_VYJPF9.js.map} +1 -1
- package/dist/components/GrInputTag/index.js +2 -2
- package/dist/components/GrLink/chunks/{GrLink-DvvNkP0M.js → GrLink-BLPigqij.js} +1 -1
- package/dist/components/GrLink/chunks/{GrLink-DvvNkP0M.js.map → GrLink-BLPigqij.js.map} +1 -1
- package/dist/components/GrLink/index.js +2 -2
- package/dist/components/GrList/chunks/{GrList--Ib4zLNw.js.map → GrList-BPjQf-72.js.map} +1 -1
- package/dist/components/GrList/index.js +2 -2
- package/dist/components/GrLoading/index.js +1 -1
- package/dist/components/GrModal/index.js +1 -1
- package/dist/components/GrNavbar/chunks/{GrNavbar-nIyuiVj1.js → GrNavbar-BDIKAYfN.js} +1 -1
- package/dist/components/GrNavbar/chunks/{GrNavbar-nIyuiVj1.js.map → GrNavbar-BDIKAYfN.js.map} +1 -1
- package/dist/components/GrNavbar/index.js +2 -2
- package/dist/components/GrNumberInput/chunks/{GrNumberInput-B0mPLjdv.js → GrNumberInput-ECtFCIKV.js} +1 -1
- package/dist/components/GrNumberInput/chunks/{GrNumberInput-B0mPLjdv.js.map → GrNumberInput-ECtFCIKV.js.map} +1 -1
- package/dist/components/GrNumberInput/index.js +2 -2
- package/dist/components/GrPagination/chunks/{GrPagination-C_rxGwfY.js → GrPagination-BZlH-uEd.js} +2 -2
- package/dist/components/GrPagination/chunks/{GrPagination-C_rxGwfY.js.map → GrPagination-BZlH-uEd.js.map} +1 -1
- package/dist/components/GrPagination/index.js +2 -2
- package/dist/components/GrProgressBar/chunks/{GrProgressBar-MvMnzsJl.js → GrProgressBar-hQQK8cYh.js} +1 -1
- package/dist/components/GrProgressBar/chunks/{GrProgressBar-MvMnzsJl.js.map → GrProgressBar-hQQK8cYh.js.map} +1 -1
- package/dist/components/GrProgressBar/index.js +2 -2
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-DKhbN6ji.js → GrPromptDialog-CUMW6_58.js} +2 -2
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-DKhbN6ji.js.map → GrPromptDialog-CUMW6_58.js.map} +1 -1
- package/dist/components/GrPromptDialog/index.js +2 -2
- package/dist/components/GrRadio/chunks/{GrRadio-BxBs3WHq.js → GrRadio-B_t_ZNVl.js} +1 -1
- package/dist/components/GrRadio/chunks/{GrRadio-BxBs3WHq.js.map → GrRadio-B_t_ZNVl.js.map} +1 -1
- package/dist/components/GrRadio/index.js +2 -2
- package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-CEAfJQ6A.js → GrRadioGroup-CVlgpUBr.js} +1 -1
- package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-CEAfJQ6A.js.map → GrRadioGroup-CVlgpUBr.js.map} +1 -1
- package/dist/components/GrRadioGroup/index.js +2 -2
- package/dist/components/GrSegmented/chunks/{GrSegmented-Bwn2qOY4.js → GrSegmented-BPl1koHc.js} +1 -1
- package/dist/components/GrSegmented/chunks/{GrSegmented-Bwn2qOY4.js.map → GrSegmented-BPl1koHc.js.map} +1 -1
- package/dist/components/GrSegmented/index.js +2 -2
- package/dist/components/GrSelect/chunks/{GrSelect-BMMT5MrT.js → GrSelect-C3NAfTqL.js} +2 -2
- package/dist/components/GrSelect/chunks/{GrSelect-BMMT5MrT.js.map → GrSelect-C3NAfTqL.js.map} +1 -1
- package/dist/components/GrSelect/index.js +2 -2
- package/dist/components/GrSidebar/chunks/{GrSidebar-CSZ3RpFB.js.map → GrSidebar-DVucgcfV.js.map} +1 -1
- package/dist/components/GrSidebar/index.js +2 -2
- package/dist/components/GrSkeleton/chunks/{GrSkeleton-DKXkqWDa.js.map → GrSkeleton-CDTvCSoH.js.map} +1 -1
- package/dist/components/GrSkeleton/index.js +2 -2
- package/dist/components/GrSwitch/chunks/{GrSwitch-CdBxwV3k.js → GrSwitch-Bnamgqb2.js} +1 -1
- package/dist/components/GrSwitch/chunks/{GrSwitch-CdBxwV3k.js.map → GrSwitch-Bnamgqb2.js.map} +1 -1
- package/dist/components/GrSwitch/index.js +2 -2
- package/dist/components/GrTable/index.js +1 -1
- package/dist/components/GrTabs/chunks/{GrTabs-BpF8AAUz.js.map → GrTabs-CiGmcmvm.js.map} +1 -1
- package/dist/components/GrTabs/index.js +2 -2
- package/dist/components/GrTextarea/chunks/{GrTextarea-DFS9ZkrA.js → GrTextarea-VBSc6A7D.js} +1 -1
- package/dist/components/GrTextarea/chunks/{GrTextarea-DFS9ZkrA.js.map → GrTextarea-VBSc6A7D.js.map} +1 -1
- package/dist/components/GrTextarea/index.js +2 -2
- package/dist/components/GrToaster/chunks/{GrToaster-3Mf0Moxt.js → GrToaster-I1e-zCpf.js} +1 -1
- package/dist/components/GrToaster/chunks/{GrToaster-3Mf0Moxt.js.map → GrToaster-I1e-zCpf.js.map} +1 -1
- package/dist/components/GrToaster/index.js +2 -2
- package/dist/components/GrTooltip/chunks/{GrTooltip-BvmsukLW.js.map → GrTooltip-CrV1gI_c.js.map} +1 -1
- package/dist/components/GrTooltip/index.js +2 -2
- package/dist/components/GrTree/chunks/{GrTree-C2kN-O4Q.js.map → GrTree-Dlev9oBd.js.map} +1 -1
- package/dist/components/GrTree/index.js +2 -2
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-N-oPAOFj.js → GrTreeSelect-n0CZT4Ic.js} +4 -4
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-N-oPAOFj.js.map → GrTreeSelect-n0CZT4Ic.js.map} +1 -1
- package/dist/components/GrTreeSelect/index.js +2 -2
- package/dist/directives/loading.js +15 -0
- package/dist/directives/loading.js.map +1 -1
- package/dist/granular-provider-node.js +2 -2
- package/dist/granular-provider.js +1 -1
- package/dist/i18n/all.js +1 -1
- package/dist/i18n/index.js +2 -2
- package/dist/index.js +59 -58
- package/dist/index.js.map +1 -1
- package/dist/types/src/components/GrFileUpload/GrFileUpload.vue.d.ts +58 -5
- package/dist/types/src/components/GrFileUpload/index.d.ts +4 -0
- package/dist/types/src/components/GrFileUpload/uploadState.d.ts +38 -0
- package/dist/types/src/components/GrFileUpload/uploadViaXhr.d.ts +33 -0
- package/dist/types/src/components/GrImageViewer/GrImageViewer.vue.d.ts +1 -1
- package/dist/types/src/components/GrInput/GrInput.vue.d.ts +1 -1
- package/dist/types/src/components/GrNumberInput/GrNumberInput.vue.d.ts +1 -1
- package/dist/types/src/components/GrTextarea/GrTextarea.vue.d.ts +1 -1
- package/package.json +1 -1
- package/dist/chunks/config-BGmiXpR82.js.map +0 -1
- package/dist/chunks/config-CA9XwYnZ2.js.map +0 -1
- package/dist/chunks/config-CsMIhZfM.js.map +0 -1
- package/dist/chunks/config-CwLoozAz2.js.map +0 -1
- package/dist/chunks/config-DCQO6H6h.js.map +0 -1
- package/dist/chunks/config-Da90XGsi.js +0 -38
- package/dist/chunks/config-Da90XGsi.js.map +0 -1
- package/dist/components/GrFileUpload/chunks/GrFileUpload-u01j9S0t.js.map +0 -1
- /package/dist/chunks/{adapter-K6zZTzBi.js → adapter-CRyH4YC8.js} +0 -0
- /package/dist/chunks/{config-Cgk5ti-b.js → config-3SftO0uG.js} +0 -0
- /package/dist/chunks/{config-BN-B2K4r.js → config-B44QVIge.js} +0 -0
- /package/dist/chunks/{config-C-GVBa19.js → config-B8rC_K97.js} +0 -0
- /package/dist/chunks/{config-DEv4m-ZP.js → config-BXffa3ta.js} +0 -0
- /package/dist/chunks/{config-CUgvsjZx.js → config-BhvNm4Pp.js} +0 -0
- /package/dist/chunks/{config-BNOf_qjD.js → config-C0b_3LJV.js} +0 -0
- /package/dist/chunks/{config-CA9XwYnZ2.js → config-C0rHS1-l.js} +0 -0
- /package/dist/chunks/{config-fCcRwjIB.js → config-C4qAA0Sb.js} +0 -0
- /package/dist/chunks/{config-XwI6t8cn.js → config-C5TN9J2Z.js} +0 -0
- /package/dist/chunks/{config-BGmiXpR82.js → config-CVnluhKO.js} +0 -0
- /package/dist/chunks/{config-DUtUkSzc.js → config-CjEplP6D.js} +0 -0
- /package/dist/chunks/{config-D19pyP4D.js → config-CtomKf-k.js} +0 -0
- /package/dist/chunks/{config-BvuQUBtZ.js → config-CxCAfXZ1.js} +0 -0
- /package/dist/chunks/{config-BDiLiqSk.js → config-D1DI3roo.js} +0 -0
- /package/dist/chunks/{config-CgjOJ3aF.js → config-D27BL0H9.js} +0 -0
- /package/dist/chunks/{config-DCQO6H6h.js → config-D32znLtV2.js} +0 -0
- /package/dist/chunks/{config-YSOeh6cy.js → config-D6Af6WZw.js} +0 -0
- /package/dist/chunks/{config-BulF0Bf-.js → config-D98m8iyz.js} +0 -0
- /package/dist/chunks/{config-CwLoozAz2.js → config-DDLoUczC.js} +0 -0
- /package/dist/chunks/{config-CFcv0hjb.js → config-DQOSlWvp.js} +0 -0
- /package/dist/chunks/{config-ndXqsz5A.js → config-DbqFk-IW.js} +0 -0
- /package/dist/chunks/{config-CdHY0Z7L.js → config-DnsISjD8.js} +0 -0
- /package/dist/chunks/{config-BFZN9-vt.js → config-DudL02ag.js} +0 -0
- /package/dist/chunks/{config-DgRJlF00.js → config-Dusr9jcE.js} +0 -0
- /package/dist/chunks/{config-CWvHiaqr2.js → config-DxqMXzNV2.js} +0 -0
- /package/dist/chunks/{config-CsMIhZfM.js → config-Mp9DJ9Mq2.js} +0 -0
- /package/dist/chunks/{config-CM7nbATU2.js → config-rxFL-6yF2.js} +0 -0
- /package/dist/chunks/{config-bpQYM5O-.js → config-wo-ncgTH.js} +0 -0
- /package/dist/chunks/{en-BeJa78lP.js → en-BMjJZttK.js} +0 -0
- /package/dist/chunks/{es-axYOwwWD.js → es-EYCf8G_1.js} +0 -0
- /package/dist/chunks/{grSelectStyles-daEeDlBn.js → grSelectStyles-DTAYNzxn.js} +0 -0
- /package/dist/chunks/{ru-Dqh-2C00.js → ru-DKswMSdd.js} +0 -0
- /package/dist/components/GrFormField/chunks/{GrFormField-C6PfAs4u.js → GrFormField-C1oWTT_0.js} +0 -0
- /package/dist/components/GrFormFile/chunks/{GrFormFile-DdM8Bc2B.js → GrFormFile-deDPicM2.js} +0 -0
- /package/dist/components/GrFormSection/chunks/{GrFormSection-5djEaQZQ.js → GrFormSection-CWBk2EUm.js} +0 -0
- /package/dist/components/GrImageViewer/chunks/{GrImageViewer-CjSnohW7.js → GrImageViewer-Cpj5zyZQ.js} +0 -0
- /package/dist/components/GrInput/chunks/{GrInput-ghxaTf6d.js → GrInput-CfO2RsM-.js} +0 -0
- /package/dist/components/GrList/chunks/{GrList--Ib4zLNw.js → GrList-BPjQf-72.js} +0 -0
- /package/dist/components/GrSidebar/chunks/{GrSidebar-CSZ3RpFB.js → GrSidebar-DVucgcfV.js} +0 -0
- /package/dist/components/GrSkeleton/chunks/{GrSkeleton-DKXkqWDa.js → GrSkeleton-CDTvCSoH.js} +0 -0
- /package/dist/components/GrTabs/chunks/{GrTabs-BpF8AAUz.js → GrTabs-CiGmcmvm.js} +0 -0
- /package/dist/components/GrTooltip/chunks/{GrTooltip-BvmsukLW.js → GrTooltip-CrV1gI_c.js} +0 -0
- /package/dist/components/GrTree/chunks/{GrTree-C2kN-O4Q.js → GrTree-Dlev9oBd.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"granularityI18n-
|
|
1
|
+
{"version":3,"file":"granularityI18n-Dm4DuCS9.js","names":[],"sources":["../../src/internal/granularityI18n.ts"],"sourcesContent":["import { getCurrentInstance, inject, type AppContext } from 'vue'\n\nimport { GRANULARITY_I18N_KEY, type GranularityI18nAdapter } from '../i18n/adapter'\n\nexport type GranularityI18nLike = GranularityI18nAdapter\n\nfunction isGranularityI18nLike(value: unknown): value is GranularityI18nLike {\n return typeof (value as GranularityI18nLike | null)?.t === 'function'\n}\n\nexport function resolveGranularityI18n(context?: AppContext | GranularityI18nLike | null): GranularityI18nLike | null {\n if (isGranularityI18nLike(context)) {\n return context\n }\n\n const provides = context?.provides\n\n if (provides) {\n return provides[GRANULARITY_I18N_KEY as symbol] as GranularityI18nLike | null\n }\n\n return getCurrentInstance() ? inject(GRANULARITY_I18N_KEY, null) : null\n}\n\nexport function useGranularityTranslations(context?: AppContext | GranularityI18nLike | null) {\n const i18n = resolveGranularityI18n(context)\n\n const t = (key: string, fallback: string, params?: Record<string, any>): string => {\n if (!i18n) {\n return fallback\n }\n\n const result = i18n.t(key, params)\n return result === key ? fallback : result\n }\n\n return {\n i18n,\n t,\n }\n}"],"mappings":";;;AAMA,SAAS,sBAAsB,OAA8C;AAC3E,QAAO,OAAQ,OAAsC,MAAM;;AAG7D,SAAgB,uBAAuB,SAA+E;AACpH,KAAI,sBAAsB,QAAQ,CAChC,QAAO;CAGT,MAAM,WAAW,SAAS;AAE1B,KAAI,SACF,QAAO,SAAS;AAGlB,QAAO,oBAAoB,GAAG,OAAO,sBAAsB,KAAK,GAAG;;AAGrE,SAAgB,2BAA2B,SAAmD;CAC5F,MAAM,OAAO,uBAAuB,QAAQ;CAE5C,MAAM,KAAK,KAAa,UAAkB,WAAyC;AACjF,MAAI,CAAC,KACH,QAAO;EAGT,MAAM,SAAS,KAAK,EAAE,KAAK,OAAO;AAClC,SAAO,WAAW,MAAM,WAAW;;AAGrC,QAAO;EACL;EACA;EACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ru-
|
|
1
|
+
{"version":3,"file":"ru-DKswMSdd.js","names":[],"sources":["../../src/i18n/locales/ru.json"],"sourcesContent":["{\n \"common\": {\n \"confirm\": \"Подтвердить\",\n \"cancel\": \"Отмена\",\n \"add\": \"Добавить\",\n \"clear\": \"Очистить\",\n \"close\": \"Закрыть\"\n },\n \"loading\": {\n \"defaultText\": \"Загрузка...\"\n },\n \"treeSelect\": {\n \"filterPlaceholder\": \"Поиск…\",\n \"empty\": \"Нет данных\"\n },\n \"dialog\": {\n \"confirm\": {\n \"title\": \"Подтверждение\"\n },\n \"prompt\": {\n \"title\": \"Введите значение\",\n \"label\": \"Значение\",\n \"required\": \"Введите значение.\"\n }\n },\n \"pagination\": {\n \"pageSize\": \"Размер страницы\",\n \"prev\": \"Назад\",\n \"next\": \"Вперёд\"\n },\n \"navbar\": {\n \"openMenu\": \"Открыть меню\"\n },\n \"colors\": {\n \"neutral\": \"Нейтральный\",\n \"success\": \"Успех\",\n \"warning\": \"Предупреждение\",\n \"danger\": \"Опасность\",\n \"info\": \"Инфо\",\n \"primary\": \"Primary\",\n \"slate\": \"Сланцевый\",\n \"azure\": \"Лазурный\"\n }\n}\n"],"mappings":""}
|
|
@@ -16,36 +16,36 @@ import { t as grDrawerConfig } from "./config-DxqpV-KM.js";
|
|
|
16
16
|
import { t as grDropdownConfig } from "./config-C4AlNm912.js";
|
|
17
17
|
import { t as grDropdownMenuConfig } from "./config-DDEWvph-2.js";
|
|
18
18
|
import { t as grEmptyStateConfig } from "./config-Db4BEG8Y.js";
|
|
19
|
-
import { t as grFileUploadConfig } from "./config-
|
|
20
|
-
import { t as grFormFieldConfig } from "./config-
|
|
21
|
-
import { t as grFormFileConfig } from "./config-
|
|
22
|
-
import { t as grFormSectionConfig } from "./config-
|
|
23
|
-
import { t as grImageViewerConfig } from "./config-
|
|
24
|
-
import { t as grInputConfig } from "./config-
|
|
25
|
-
import { t as grInputTagConfig } from "./config-
|
|
26
|
-
import { t as grLinkConfig } from "./config-
|
|
27
|
-
import { t as grListConfig } from "./config-
|
|
28
|
-
import { t as grLoadingConfig } from "./config-
|
|
29
|
-
import { t as grModalConfig } from "./config-
|
|
30
|
-
import { t as grNavbarConfig } from "./config-
|
|
31
|
-
import { t as grNumberInputConfig } from "./config-
|
|
32
|
-
import { t as grPaginationConfig } from "./config-
|
|
33
|
-
import { t as grProgressBarConfig } from "./config-
|
|
34
|
-
import { t as grPromptDialogConfig } from "./config-
|
|
35
|
-
import { t as grRadioConfig } from "./config-
|
|
36
|
-
import { t as grRadioGroupConfig } from "./config-
|
|
37
|
-
import { t as grSegmentedConfig } from "./config-
|
|
38
|
-
import { t as grSelectConfig } from "./config-
|
|
39
|
-
import { t as grSidebarConfig } from "./config-
|
|
40
|
-
import { t as grSkeletonConfig } from "./config-
|
|
41
|
-
import { t as grSwitchConfig } from "./config-
|
|
42
|
-
import { t as grTableConfig } from "./config-
|
|
43
|
-
import { t as grTabsConfig } from "./config-
|
|
44
|
-
import { t as grTextareaConfig } from "./config-
|
|
45
|
-
import { t as grToasterConfig } from "./config-
|
|
46
|
-
import { t as grTooltipConfig } from "./config-
|
|
47
|
-
import { t as grTreeConfig } from "./config-
|
|
48
|
-
import { t as grTreeSelectConfig } from "./config-
|
|
19
|
+
import { t as grFileUploadConfig } from "./config-CVnluhKO.js";
|
|
20
|
+
import { t as grFormFieldConfig } from "./config-3SftO0uG.js";
|
|
21
|
+
import { t as grFormFileConfig } from "./config-DbqFk-IW.js";
|
|
22
|
+
import { t as grFormSectionConfig } from "./config-D6Af6WZw.js";
|
|
23
|
+
import { t as grImageViewerConfig } from "./config-D98m8iyz.js";
|
|
24
|
+
import { t as grInputConfig } from "./config-CtomKf-k.js";
|
|
25
|
+
import { t as grInputTagConfig } from "./config-Dusr9jcE.js";
|
|
26
|
+
import { t as grLinkConfig } from "./config-CjEplP6D.js";
|
|
27
|
+
import { t as grListConfig } from "./config-C4qAA0Sb.js";
|
|
28
|
+
import { t as grLoadingConfig } from "./config-B44QVIge.js";
|
|
29
|
+
import { t as grModalConfig } from "./config-C5TN9J2Z.js";
|
|
30
|
+
import { t as grNavbarConfig } from "./config-D1DI3roo.js";
|
|
31
|
+
import { t as grNumberInputConfig } from "./config-wo-ncgTH.js";
|
|
32
|
+
import { t as grPaginationConfig } from "./config-DudL02ag.js";
|
|
33
|
+
import { t as grProgressBarConfig } from "./config-ZJVOVgqR.js";
|
|
34
|
+
import { t as grPromptDialogConfig } from "./config-B8rC_K97.js";
|
|
35
|
+
import { t as grRadioConfig } from "./config-BXffa3ta.js";
|
|
36
|
+
import { t as grRadioGroupConfig } from "./config-D27BL0H9.js";
|
|
37
|
+
import { t as grSegmentedConfig } from "./config-BhvNm4Pp.js";
|
|
38
|
+
import { t as grSelectConfig } from "./config-XoANT5mU.js";
|
|
39
|
+
import { t as grSidebarConfig } from "./config-DnsISjD8.js";
|
|
40
|
+
import { t as grSkeletonConfig } from "./config-Mp9DJ9Mq2.js";
|
|
41
|
+
import { t as grSwitchConfig } from "./config-rxFL-6yF2.js";
|
|
42
|
+
import { t as grTableConfig } from "./config-DQOSlWvp.js";
|
|
43
|
+
import { t as grTabsConfig } from "./config-DDLoUczC.js";
|
|
44
|
+
import { t as grTextareaConfig } from "./config-DxqMXzNV2.js";
|
|
45
|
+
import { t as grToasterConfig } from "./config-CxCAfXZ1.js";
|
|
46
|
+
import { t as grTooltipConfig } from "./config-C0rHS1-l.js";
|
|
47
|
+
import { t as grTreeConfig } from "./config-D32znLtV2.js";
|
|
48
|
+
import { t as grTreeSelectConfig } from "./config-C0b_3LJV.js";
|
|
49
49
|
import { defineGranularComponent, defineGranularProvider } from "@feugene/unocss-preset-granular/contract";
|
|
50
50
|
//#region src/components/GrDialog/config.ts
|
|
51
51
|
var grDialogConfig = defineGranularComponent(import.meta.url, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-CyCPkimZ.js","names":[],"sources":["../../src/components/GrDialog/config.ts","../../src/granular-provider/shared.ts"],"sourcesContent":["import {defineGranularComponent} from '@feugene/unocss-preset-granular/contract'\n\nimport { grDialogSafelist } from './safelist'\n\nexport const grDialogConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDialog',\n dependencies: ['GrButton', 'GrModal'],\n safelist: grDialogSafelist,\n})\n","// Общий код browser- и node-entry granular-provider'а.\n//\n// Оба entry (`./index.ts`, `./node.ts`) отличаются только списком\n// компонентов, у которых есть node-only вариант конфига (например,\n// `GrButton`, чей `config.node.ts` использует `tokenDefinitionsFromCssSync`\n// и тянет `node:fs`). Browser-вариант таких компонентов берёт облегчённый\n// `./config.ts`, node-вариант — `./config.node.ts`. Всё остальное — `id`,\n// `theme.*`, `packageBaseUrl` и полный список browser-safe компонентов —\n// живёт здесь.\n//\n// ВАЖНО: все `new URL('../styles/...', import.meta.url)` намеренно находятся\n// здесь — `shared.ts` лежит в той же директории, что и `index.ts` / `node.ts`,\n// поэтому относительные пути идентичны. Это ОК для браузера: бандлеры\n// транслируют такие конструкции в статические asset-URL и `node:*` в бандл\n// не утаскивают.\n//\n// Ключи записи `<Name>: ds<Name>Config` в `granularityComponentConfigs`\n// критичны для regex‑парсинга в `apps/showcase/scripts/generate-component-api.mjs`,\n// не ломайте формат.\nimport {\n defineGranularProvider,\n type GranularComponentDescriptor,\n type GranularProvider,\n} from '@feugene/unocss-preset-granular/contract'\nimport { grAlertConfig } from '../components/GrAlert/config'\nimport { grAvatarConfig } from '../components/GrAvatar/config'\nimport { grBadgeConfig } from '../components/GrBadge/config'\nimport { grBadgeWrapConfig } from '../components/GrBadgeWrap/config'\nimport { grBottomNavConfig } from '../components/GrBottomNav/config'\nimport { grButtonConfig } from '../components/GrButton/config'\nimport { grButtonGroupConfig } from '../components/GrButtonGroup/config'\nimport { grCardConfig } from '../components/GrCard/config'\nimport { grCheckboxConfig } from '../components/GrCheckbox/config'\nimport { grCollapseConfig } from '../components/GrCollapse/config'\nimport { grConfirmDialogConfig } from '../components/GrConfirmDialog/config'\nimport { grDataTableConfig } from '../components/GrDataTable/config'\nimport { grDialogConfig } from '../components/GrDialog/config'\nimport { grDrawerConfig } from '../components/GrDrawer/config'\nimport { grDropdownConfig } from '../components/GrDropdown/config'\nimport { grDropdownMenuConfig } from '../components/GrDropdownMenu/config'\nimport { grEmptyStateConfig } from '../components/GrEmptyState/config'\nimport { grFileUploadConfig } from '../components/GrFileUpload/config'\nimport { grFormFieldConfig } from '../components/GrFormField/config'\nimport { grFormFileConfig } from '../components/GrFormFile/config'\nimport { grFormSectionConfig } from '../components/GrFormSection/config'\nimport { grIconConfig } from '../components/GrIcon/config'\nimport { grImageViewerConfig } from '../components/GrImageViewer/config'\nimport { grInputConfig } from '../components/GrInput/config'\nimport { grInputTagConfig } from '../components/GrInputTag/config'\nimport { grLinkConfig } from '../components/GrLink/config'\nimport { grListConfig } from '../components/GrList/config'\nimport { grLoadingConfig } from '../components/GrLoading/config'\nimport { grModalConfig } from '../components/GrModal/config'\nimport { grNavbarConfig } from '../components/GrNavbar/config'\nimport { grNumberInputConfig } from '../components/GrNumberInput/config'\nimport { grPaginationConfig } from '../components/GrPagination/config'\nimport { grProgressBarConfig } from '../components/GrProgressBar/config'\nimport { grPromptDialogConfig } from '../components/GrPromptDialog/config'\nimport { grRadioConfig } from '../components/GrRadio/config'\nimport { grRadioGroupConfig } from '../components/GrRadioGroup/config'\nimport { grSegmentedConfig } from '../components/GrSegmented/config'\nimport { grSelectConfig } from '../components/GrSelect/config'\nimport { grSidebarConfig } from '../components/GrSidebar/config'\nimport { grSkeletonConfig } from '../components/GrSkeleton/config'\nimport { grSwitchConfig } from '../components/GrSwitch/config'\nimport { grTableConfig } from '../components/GrTable/config'\nimport { grTabsConfig } from '../components/GrTabs/config'\nimport { grTextareaConfig } from '../components/GrTextarea/config'\nimport { grToasterConfig } from '../components/GrToaster/config'\nimport { grTooltipConfig } from '../components/GrTooltip/config'\nimport { grTreeConfig } from '../components/GrTree/config'\nimport { grTreeSelectConfig } from '../components/GrTreeSelect/config'\n\n/** Идентификатор провайдера — совпадает с именем пакета. */\nexport const GRANULARITY_PROVIDER_ID = '@feugene/granularity'\n\n// runtime-concat: литерал `new URL('..', import.meta.url)` rolldown заменяет\n// на `data:`-URL, поэтому собираем корень пакета из `import.meta.url` вручную\n// (отрезая два последних сегмента: имя файла и каталог `granular-provider/`).\nconst packageBaseUrl = `${import.meta.url.slice(\n 0,\n import.meta.url.lastIndexOf('/', import.meta.url.lastIndexOf('/') - 1) + 1,\n)}`\n\n/** Встроенные темы пакета. Единственный источник правды о списке тем. */\nexport const granularityThemeNames = ['light', 'dark'] as const\nexport type GranularityThemeName = (typeof granularityThemeNames)[number]\n\n/** Темы, активные по умолчанию, если окружение не переопределяет выбор. */\nexport const granularityDefaultThemes: readonly GranularityThemeName[] = ['light']\n\nconst theme = {\n baseCssUrl: new URL('../styles/base.css', import.meta.url).href,\n tokensCssUrl: new URL('../styles/tokens.css', import.meta.url).href,\n themes: {\n light: new URL('../styles/themes/light.css', import.meta.url).href,\n dark: new URL('../styles/themes/dark.css', import.meta.url).href,\n },\n defaultThemes: granularityDefaultThemes,\n} as const\n\n/**\n * Полный реестр публичных компонентов пакета `@feugene/granularity`.\n *\n * Ключи — имена компонентов (совпадают с публичным subpath‑экспортом\n * `@feugene/granularity/components/<Name>`). Значения — browser‑safe\n * `ds<Name>Config` из `./config.ts` рядом с SFC.\n *\n * Для компонентов, у которых есть node-only вариант конфига\n * (например, `GrButton` с `tokenDefinitionsFromCssSync`), browser‑конфиг\n * остаётся здесь, а node‑вариант подставляется снаружи через\n * `createGranularityProvider(overrides)` — см. `./index.ts` (browser)\n * и `./node.ts` (node).\n *\n * Формат записи `<Name>: ds<Name>Config` критичен для regex‑парсинга\n * в `apps/showcase/scripts/generate-component-api.mjs`, не ломайте его.\n */\nexport const granularityComponentConfigs = {\n GrAlert: grAlertConfig,\n GrAvatar: grAvatarConfig,\n GrBadge: grBadgeConfig,\n GrBadgeWrap: grBadgeWrapConfig,\n GrBottomNav: grBottomNavConfig,\n GrButton: grButtonConfig,\n GrButtonGroup: grButtonGroupConfig,\n GrCard: grCardConfig,\n GrCheckbox: grCheckboxConfig,\n GrCollapse: grCollapseConfig,\n GrConfirmDialog: grConfirmDialogConfig,\n GrDataTable: grDataTableConfig,\n GrDialog: grDialogConfig,\n GrDrawer: grDrawerConfig,\n GrDropdown: grDropdownConfig,\n GrDropdownMenu: grDropdownMenuConfig,\n GrEmptyState: grEmptyStateConfig,\n GrFileUpload: grFileUploadConfig,\n GrFormField: grFormFieldConfig,\n GrFormFile: grFormFileConfig,\n GrFormSection: grFormSectionConfig,\n GrIcon: grIconConfig,\n GrImageViewer: grImageViewerConfig,\n GrInput: grInputConfig,\n GrInputTag: grInputTagConfig,\n GrLink: grLinkConfig,\n GrList: grListConfig,\n GrLoading: grLoadingConfig,\n GrModal: grModalConfig,\n GrNavbar: grNavbarConfig,\n GrNumberInput: grNumberInputConfig,\n GrPagination: grPaginationConfig,\n GrProgressBar: grProgressBarConfig,\n GrPromptDialog: grPromptDialogConfig,\n GrRadio: grRadioConfig,\n GrRadioGroup: grRadioGroupConfig,\n GrSegmented: grSegmentedConfig,\n GrSelect: grSelectConfig,\n GrSidebar: grSidebarConfig,\n GrSkeleton: grSkeletonConfig,\n GrSwitch: grSwitchConfig,\n GrTable: grTableConfig,\n GrTabs: grTabsConfig,\n GrTextarea: grTextareaConfig,\n GrToaster: grToasterConfig,\n GrTooltip: grTooltipConfig,\n GrTree: grTreeConfig,\n GrTreeSelect: grTreeSelectConfig,\n}\n\nexport type GranularityComponentName = keyof typeof granularityComponentConfigs\n\n/** Базовый (browser-safe) набор компонентов в порядке реестра. */\nconst baseComponents: readonly GranularComponentDescriptor[] = Object.values(\n granularityComponentConfigs,\n)\n\n/**\n * Собирает granular-provider пакета `@feugene/granularity`.\n *\n * Принимает массив `GranularComponentDescriptor`'ов — это компоненты,\n * у которых есть node-only вариант конфига (например, `GrButton` с\n * `tokenDefinitionsFromCssSync`). Дескрипторы с именем, которое уже\n * присутствует в базовом наборе, переопределяют его (побеждает\n * переданный снаружи), остальные — добавляются в конец списка.\n */\nexport function createGranularityProvider(\n overrides: readonly GranularComponentDescriptor[] = [],\n): GranularProvider {\n const overrideByName = new Map(\n overrides.map(component => [component.name, component]),\n )\n const components: GranularComponentDescriptor[] = [\n ...baseComponents.map(component => overrideByName.get(component.name) ?? component),\n ...overrides.filter(component => !baseComponents.some(base => base.name === component.name)),\n ]\n\n return defineGranularProvider({\n id: GRANULARITY_PROVIDER_ID,\n contractVersion: 1,\n packageBaseUrl,\n components,\n theme,\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAa,iBAAiB,wBAAwB,OAAO,KAAK,KAAK;CACrE,MAAM;CACN,cAAc,CAAC,YAAY,UAAU;CACrC,UAAU;CACX,CAAC;;;;ACkEF,IAAa,0BAA0B;AAKvC,IAAM,iBAAiB,GAAG,OAAO,KAAK,IAAI,MACxC,GACA,OAAO,KAAK,IAAI,YAAY,KAAK,OAAO,KAAK,IAAI,YAAY,IAAI,GAAG,EAAE,GAAG,EAC1E;;AAGD,IAAa,wBAAwB,CAAC,SAAS,OAAO;;AAItD,IAAa,2BAA4D,CAAC,QAAQ;AAElF,IAAM,QAAQ;CACZ,YAAY,IAAA,IAAA,i2BAAA,KAAA,OAAA,KAAA,IAA8C,CAAC;CAC3D,cAAc,IAAA,IAAA,iuKAAA,KAAA,OAAA,KAAA,IAAgD,CAAC;CAC/D,QAAQ;EACN,OAAO,IAAA,IAAA,qrGAAA,KAAA,OAAA,KAAA,IAAsD,CAAC;EAC9D,MAAM,IAAA,IAAA,qxGAAA,KAAA,OAAA,KAAA,IAAqD,CAAC;EAC7D;CACD,eAAe;CAChB;;;;;;;;;;;;;;;;;AAkBD,IAAa,8BAA8B;CACzC,SAAS;CACT,UAAU;CACV,SAAS;CACT,aAAa;CACb,aAAa;CACb,UAAU;CACV,eAAe;CACf,QAAQ;CACR,YAAY;CACZ,YAAY;CACZ,iBAAiB;CACjB,aAAa;CACb,UAAU;CACV,UAAU;CACV,YAAY;CACZ,gBAAgB;CAChB,cAAc;CACd,cAAc;CACd,aAAa;CACb,YAAY;CACZ,eAAe;CACf,QAAQ;CACR,eAAe;CACf,SAAS;CACT,YAAY;CACZ,QAAQ;CACR,QAAQ;CACR,WAAW;CACX,SAAS;CACT,UAAU;CACV,eAAe;CACf,cAAc;CACd,eAAe;CACf,gBAAgB;CAChB,SAAS;CACT,cAAc;CACd,aAAa;CACb,UAAU;CACV,WAAW;CACX,YAAY;CACZ,UAAU;CACV,SAAS;CACT,QAAQ;CACR,YAAY;CACZ,WAAW;CACX,WAAW;CACX,QAAQ;CACR,cAAc;CACf;;AAKD,IAAM,iBAAyD,OAAO,OACpE,4BACD;;;;;;;;;;AAWD,SAAgB,0BACd,YAAoD,EAAE,EACpC;CAClB,MAAM,iBAAiB,IAAI,IACzB,UAAU,KAAI,cAAa,CAAC,UAAU,MAAM,UAAU,CAAC,CACxD;AAMD,QAAO,uBAAuB;EAC5B,IAAI;EACJ,iBAAiB;EACjB;EACA,YATgD,CAChD,GAAG,eAAe,KAAI,cAAa,eAAe,IAAI,UAAU,KAAK,IAAI,UAAU,EACnF,GAAG,UAAU,QAAO,cAAa,CAAC,eAAe,MAAK,SAAQ,KAAK,SAAS,UAAU,KAAK,CAAC,CAC7F;EAOC;EACD,CAAC"}
|
|
1
|
+
{"version":3,"file":"shared-DO3Sr5FJ.js","names":[],"sources":["../../src/components/GrDialog/config.ts","../../src/granular-provider/shared.ts"],"sourcesContent":["import {defineGranularComponent} from '@feugene/unocss-preset-granular/contract'\n\nimport { grDialogSafelist } from './safelist'\n\nexport const grDialogConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDialog',\n dependencies: ['GrButton', 'GrModal'],\n safelist: grDialogSafelist,\n})\n","// Общий код browser- и node-entry granular-provider'а.\n//\n// Оба entry (`./index.ts`, `./node.ts`) отличаются только списком\n// компонентов, у которых есть node-only вариант конфига (например,\n// `GrButton`, чей `config.node.ts` использует `tokenDefinitionsFromCssSync`\n// и тянет `node:fs`). Browser-вариант таких компонентов берёт облегчённый\n// `./config.ts`, node-вариант — `./config.node.ts`. Всё остальное — `id`,\n// `theme.*`, `packageBaseUrl` и полный список browser-safe компонентов —\n// живёт здесь.\n//\n// ВАЖНО: все `new URL('../styles/...', import.meta.url)` намеренно находятся\n// здесь — `shared.ts` лежит в той же директории, что и `index.ts` / `node.ts`,\n// поэтому относительные пути идентичны. Это ОК для браузера: бандлеры\n// транслируют такие конструкции в статические asset-URL и `node:*` в бандл\n// не утаскивают.\n//\n// Ключи записи `<Name>: ds<Name>Config` в `granularityComponentConfigs`\n// критичны для regex‑парсинга в `apps/showcase/scripts/generate-component-api.mjs`,\n// не ломайте формат.\nimport {\n defineGranularProvider,\n type GranularComponentDescriptor,\n type GranularProvider,\n} from '@feugene/unocss-preset-granular/contract'\nimport { grAlertConfig } from '../components/GrAlert/config'\nimport { grAvatarConfig } from '../components/GrAvatar/config'\nimport { grBadgeConfig } from '../components/GrBadge/config'\nimport { grBadgeWrapConfig } from '../components/GrBadgeWrap/config'\nimport { grBottomNavConfig } from '../components/GrBottomNav/config'\nimport { grButtonConfig } from '../components/GrButton/config'\nimport { grButtonGroupConfig } from '../components/GrButtonGroup/config'\nimport { grCardConfig } from '../components/GrCard/config'\nimport { grCheckboxConfig } from '../components/GrCheckbox/config'\nimport { grCollapseConfig } from '../components/GrCollapse/config'\nimport { grConfirmDialogConfig } from '../components/GrConfirmDialog/config'\nimport { grDataTableConfig } from '../components/GrDataTable/config'\nimport { grDialogConfig } from '../components/GrDialog/config'\nimport { grDrawerConfig } from '../components/GrDrawer/config'\nimport { grDropdownConfig } from '../components/GrDropdown/config'\nimport { grDropdownMenuConfig } from '../components/GrDropdownMenu/config'\nimport { grEmptyStateConfig } from '../components/GrEmptyState/config'\nimport { grFileUploadConfig } from '../components/GrFileUpload/config'\nimport { grFormFieldConfig } from '../components/GrFormField/config'\nimport { grFormFileConfig } from '../components/GrFormFile/config'\nimport { grFormSectionConfig } from '../components/GrFormSection/config'\nimport { grIconConfig } from '../components/GrIcon/config'\nimport { grImageViewerConfig } from '../components/GrImageViewer/config'\nimport { grInputConfig } from '../components/GrInput/config'\nimport { grInputTagConfig } from '../components/GrInputTag/config'\nimport { grLinkConfig } from '../components/GrLink/config'\nimport { grListConfig } from '../components/GrList/config'\nimport { grLoadingConfig } from '../components/GrLoading/config'\nimport { grModalConfig } from '../components/GrModal/config'\nimport { grNavbarConfig } from '../components/GrNavbar/config'\nimport { grNumberInputConfig } from '../components/GrNumberInput/config'\nimport { grPaginationConfig } from '../components/GrPagination/config'\nimport { grProgressBarConfig } from '../components/GrProgressBar/config'\nimport { grPromptDialogConfig } from '../components/GrPromptDialog/config'\nimport { grRadioConfig } from '../components/GrRadio/config'\nimport { grRadioGroupConfig } from '../components/GrRadioGroup/config'\nimport { grSegmentedConfig } from '../components/GrSegmented/config'\nimport { grSelectConfig } from '../components/GrSelect/config'\nimport { grSidebarConfig } from '../components/GrSidebar/config'\nimport { grSkeletonConfig } from '../components/GrSkeleton/config'\nimport { grSwitchConfig } from '../components/GrSwitch/config'\nimport { grTableConfig } from '../components/GrTable/config'\nimport { grTabsConfig } from '../components/GrTabs/config'\nimport { grTextareaConfig } from '../components/GrTextarea/config'\nimport { grToasterConfig } from '../components/GrToaster/config'\nimport { grTooltipConfig } from '../components/GrTooltip/config'\nimport { grTreeConfig } from '../components/GrTree/config'\nimport { grTreeSelectConfig } from '../components/GrTreeSelect/config'\n\n/** Идентификатор провайдера — совпадает с именем пакета. */\nexport const GRANULARITY_PROVIDER_ID = '@feugene/granularity'\n\n// runtime-concat: литерал `new URL('..', import.meta.url)` rolldown заменяет\n// на `data:`-URL, поэтому собираем корень пакета из `import.meta.url` вручную\n// (отрезая два последних сегмента: имя файла и каталог `granular-provider/`).\nconst packageBaseUrl = `${import.meta.url.slice(\n 0,\n import.meta.url.lastIndexOf('/', import.meta.url.lastIndexOf('/') - 1) + 1,\n)}`\n\n/** Встроенные темы пакета. Единственный источник правды о списке тем. */\nexport const granularityThemeNames = ['light', 'dark'] as const\nexport type GranularityThemeName = (typeof granularityThemeNames)[number]\n\n/** Темы, активные по умолчанию, если окружение не переопределяет выбор. */\nexport const granularityDefaultThemes: readonly GranularityThemeName[] = ['light']\n\nconst theme = {\n baseCssUrl: new URL('../styles/base.css', import.meta.url).href,\n tokensCssUrl: new URL('../styles/tokens.css', import.meta.url).href,\n themes: {\n light: new URL('../styles/themes/light.css', import.meta.url).href,\n dark: new URL('../styles/themes/dark.css', import.meta.url).href,\n },\n defaultThemes: granularityDefaultThemes,\n} as const\n\n/**\n * Полный реестр публичных компонентов пакета `@feugene/granularity`.\n *\n * Ключи — имена компонентов (совпадают с публичным subpath‑экспортом\n * `@feugene/granularity/components/<Name>`). Значения — browser‑safe\n * `ds<Name>Config` из `./config.ts` рядом с SFC.\n *\n * Для компонентов, у которых есть node-only вариант конфига\n * (например, `GrButton` с `tokenDefinitionsFromCssSync`), browser‑конфиг\n * остаётся здесь, а node‑вариант подставляется снаружи через\n * `createGranularityProvider(overrides)` — см. `./index.ts` (browser)\n * и `./node.ts` (node).\n *\n * Формат записи `<Name>: ds<Name>Config` критичен для regex‑парсинга\n * в `apps/showcase/scripts/generate-component-api.mjs`, не ломайте его.\n */\nexport const granularityComponentConfigs = {\n GrAlert: grAlertConfig,\n GrAvatar: grAvatarConfig,\n GrBadge: grBadgeConfig,\n GrBadgeWrap: grBadgeWrapConfig,\n GrBottomNav: grBottomNavConfig,\n GrButton: grButtonConfig,\n GrButtonGroup: grButtonGroupConfig,\n GrCard: grCardConfig,\n GrCheckbox: grCheckboxConfig,\n GrCollapse: grCollapseConfig,\n GrConfirmDialog: grConfirmDialogConfig,\n GrDataTable: grDataTableConfig,\n GrDialog: grDialogConfig,\n GrDrawer: grDrawerConfig,\n GrDropdown: grDropdownConfig,\n GrDropdownMenu: grDropdownMenuConfig,\n GrEmptyState: grEmptyStateConfig,\n GrFileUpload: grFileUploadConfig,\n GrFormField: grFormFieldConfig,\n GrFormFile: grFormFileConfig,\n GrFormSection: grFormSectionConfig,\n GrIcon: grIconConfig,\n GrImageViewer: grImageViewerConfig,\n GrInput: grInputConfig,\n GrInputTag: grInputTagConfig,\n GrLink: grLinkConfig,\n GrList: grListConfig,\n GrLoading: grLoadingConfig,\n GrModal: grModalConfig,\n GrNavbar: grNavbarConfig,\n GrNumberInput: grNumberInputConfig,\n GrPagination: grPaginationConfig,\n GrProgressBar: grProgressBarConfig,\n GrPromptDialog: grPromptDialogConfig,\n GrRadio: grRadioConfig,\n GrRadioGroup: grRadioGroupConfig,\n GrSegmented: grSegmentedConfig,\n GrSelect: grSelectConfig,\n GrSidebar: grSidebarConfig,\n GrSkeleton: grSkeletonConfig,\n GrSwitch: grSwitchConfig,\n GrTable: grTableConfig,\n GrTabs: grTabsConfig,\n GrTextarea: grTextareaConfig,\n GrToaster: grToasterConfig,\n GrTooltip: grTooltipConfig,\n GrTree: grTreeConfig,\n GrTreeSelect: grTreeSelectConfig,\n}\n\nexport type GranularityComponentName = keyof typeof granularityComponentConfigs\n\n/** Базовый (browser-safe) набор компонентов в порядке реестра. */\nconst baseComponents: readonly GranularComponentDescriptor[] = Object.values(\n granularityComponentConfigs,\n)\n\n/**\n * Собирает granular-provider пакета `@feugene/granularity`.\n *\n * Принимает массив `GranularComponentDescriptor`'ов — это компоненты,\n * у которых есть node-only вариант конфига (например, `GrButton` с\n * `tokenDefinitionsFromCssSync`). Дескрипторы с именем, которое уже\n * присутствует в базовом наборе, переопределяют его (побеждает\n * переданный снаружи), остальные — добавляются в конец списка.\n */\nexport function createGranularityProvider(\n overrides: readonly GranularComponentDescriptor[] = [],\n): GranularProvider {\n const overrideByName = new Map(\n overrides.map(component => [component.name, component]),\n )\n const components: GranularComponentDescriptor[] = [\n ...baseComponents.map(component => overrideByName.get(component.name) ?? component),\n ...overrides.filter(component => !baseComponents.some(base => base.name === component.name)),\n ]\n\n return defineGranularProvider({\n id: GRANULARITY_PROVIDER_ID,\n contractVersion: 1,\n packageBaseUrl,\n components,\n theme,\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAa,iBAAiB,wBAAwB,OAAO,KAAK,KAAK;CACrE,MAAM;CACN,cAAc,CAAC,YAAY,UAAU;CACrC,UAAU;CACX,CAAC;;;;ACkEF,IAAa,0BAA0B;AAKvC,IAAM,iBAAiB,GAAG,OAAO,KAAK,IAAI,MACxC,GACA,OAAO,KAAK,IAAI,YAAY,KAAK,OAAO,KAAK,IAAI,YAAY,IAAI,GAAG,EAAE,GAAG,EAC1E;;AAGD,IAAa,wBAAwB,CAAC,SAAS,OAAO;;AAItD,IAAa,2BAA4D,CAAC,QAAQ;AAElF,IAAM,QAAQ;CACZ,YAAY,IAAA,IAAA,i2BAAA,KAAA,OAAA,KAAA,IAA8C,CAAC;CAC3D,cAAc,IAAA,IAAA,iuKAAA,KAAA,OAAA,KAAA,IAAgD,CAAC;CAC/D,QAAQ;EACN,OAAO,IAAA,IAAA,qrGAAA,KAAA,OAAA,KAAA,IAAsD,CAAC;EAC9D,MAAM,IAAA,IAAA,qxGAAA,KAAA,OAAA,KAAA,IAAqD,CAAC;EAC7D;CACD,eAAe;CAChB;;;;;;;;;;;;;;;;;AAkBD,IAAa,8BAA8B;CACzC,SAAS;CACT,UAAU;CACV,SAAS;CACT,aAAa;CACb,aAAa;CACb,UAAU;CACV,eAAe;CACf,QAAQ;CACR,YAAY;CACZ,YAAY;CACZ,iBAAiB;CACjB,aAAa;CACb,UAAU;CACV,UAAU;CACV,YAAY;CACZ,gBAAgB;CAChB,cAAc;CACd,cAAc;CACd,aAAa;CACb,YAAY;CACZ,eAAe;CACf,QAAQ;CACR,eAAe;CACf,SAAS;CACT,YAAY;CACZ,QAAQ;CACR,QAAQ;CACR,WAAW;CACX,SAAS;CACT,UAAU;CACV,eAAe;CACf,cAAc;CACd,eAAe;CACf,gBAAgB;CAChB,SAAS;CACT,cAAc;CACd,aAAa;CACb,UAAU;CACV,WAAW;CACX,YAAY;CACZ,UAAU;CACV,SAAS;CACT,QAAQ;CACR,YAAY;CACZ,WAAW;CACX,WAAW;CACX,QAAQ;CACR,cAAc;CACf;;AAKD,IAAM,iBAAyD,OAAO,OACpE,4BACD;;;;;;;;;;AAWD,SAAgB,0BACd,YAAoD,EAAE,EACpC;CAClB,MAAM,iBAAiB,IAAI,IACzB,UAAU,KAAI,cAAa,CAAC,UAAU,MAAM,UAAU,CAAC,CACxD;AAMD,QAAO,uBAAuB;EAC5B,IAAI;EACJ,iBAAiB;EACjB;EACA,YATgD,CAChD,GAAG,eAAe,KAAI,cAAa,eAAe,IAAI,UAAU,KAAK,IAAI,UAAU,EACnF,GAAG,UAAU,QAAO,cAAa,CAAC,eAAe,MAAK,SAAQ,KAAK,SAAS,UAAU,KAAK,CAAC,CAC7F;EAOC;EACD,CAAC"}
|
package/dist/components/GrFileUpload/chunks/{GrFileUpload-u01j9S0t.js → GrFileUpload-DYRERhI2.js}
RENAMED
|
@@ -1,7 +1,116 @@
|
|
|
1
1
|
import { t as GrIcon_default } from "../../GrIcon/chunks/GrIcon-BV7RBU_0.js";
|
|
2
2
|
import { t as arrow_up_default } from "../../../chunks/arrow-up-DNXrMoAI.js";
|
|
3
3
|
import { l as runFileValidators, u as FileValidationError } from "../../../chunks/fileValidation-CwJA8Vmn.js";
|
|
4
|
-
import {
|
|
4
|
+
import { t as GrProgressBar_default } from "../../GrProgressBar/chunks/GrProgressBar-hQQK8cYh.js";
|
|
5
|
+
import { Comment, Fragment, Text, computed, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, nextTick, normalizeClass, openBlock, reactive, ref, renderList, renderSlot, toDisplayString, unref, useSlots, withCtx } from "vue";
|
|
6
|
+
//#region src/components/GrFileUpload/uploadViaXhr.ts
|
|
7
|
+
var GrUploadAbortError = class extends Error {
|
|
8
|
+
constructor(message = "Upload aborted") {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = "GrUploadAbortError";
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
var GrUploadHttpError = class extends Error {
|
|
14
|
+
status;
|
|
15
|
+
payload;
|
|
16
|
+
constructor(status, payload) {
|
|
17
|
+
super(`Upload failed with status ${status}`);
|
|
18
|
+
this.name = "GrUploadHttpError";
|
|
19
|
+
this.status = status;
|
|
20
|
+
this.payload = payload;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
function appendExtraFormData(body, extraData) {
|
|
24
|
+
if (!extraData) return;
|
|
25
|
+
for (const [key, value] of Object.entries(extraData)) {
|
|
26
|
+
if (Array.isArray(value)) {
|
|
27
|
+
for (const entry of value) body.append(key, entry);
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
body.append(key, value);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function parseResponse(xhr) {
|
|
34
|
+
const contentType = xhr.getResponseHeader("content-type") ?? "";
|
|
35
|
+
const raw = xhr.responseText;
|
|
36
|
+
if (contentType.includes("application/json")) try {
|
|
37
|
+
return JSON.parse(raw);
|
|
38
|
+
} catch {
|
|
39
|
+
return raw;
|
|
40
|
+
}
|
|
41
|
+
return raw;
|
|
42
|
+
}
|
|
43
|
+
function uploadViaXhr(options) {
|
|
44
|
+
const { url, files, name, headers, withCredentials, extraData, signal, onProgress } = options;
|
|
45
|
+
return new Promise((resolve, reject) => {
|
|
46
|
+
if (signal.aborted) {
|
|
47
|
+
reject(new GrUploadAbortError());
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const body = new FormData();
|
|
51
|
+
for (const file of files) body.append(name, file);
|
|
52
|
+
appendExtraFormData(body, extraData);
|
|
53
|
+
const xhr = new XMLHttpRequest();
|
|
54
|
+
xhr.open("POST", url, true);
|
|
55
|
+
xhr.withCredentials = !!withCredentials;
|
|
56
|
+
if (headers) for (const [key, value] of Object.entries(headers)) xhr.setRequestHeader(key, value);
|
|
57
|
+
const onAbort = () => {
|
|
58
|
+
try {
|
|
59
|
+
xhr.abort();
|
|
60
|
+
} catch {}
|
|
61
|
+
};
|
|
62
|
+
signal.addEventListener("abort", onAbort);
|
|
63
|
+
const cleanup = () => {
|
|
64
|
+
signal.removeEventListener("abort", onAbort);
|
|
65
|
+
};
|
|
66
|
+
if (onProgress) xhr.upload.addEventListener("progress", (event) => {
|
|
67
|
+
const indeterminate = !event.lengthComputable;
|
|
68
|
+
const total = indeterminate ? 0 : event.total;
|
|
69
|
+
const loaded = indeterminate ? 0 : event.loaded;
|
|
70
|
+
onProgress({
|
|
71
|
+
percent: indeterminate || total === 0 ? 0 : Math.min(100, loaded / total * 100),
|
|
72
|
+
loaded,
|
|
73
|
+
total,
|
|
74
|
+
indeterminate
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
xhr.addEventListener("load", () => {
|
|
78
|
+
cleanup();
|
|
79
|
+
const payload = parseResponse(xhr);
|
|
80
|
+
const status = xhr.status;
|
|
81
|
+
if (status >= 200 && status < 300) {
|
|
82
|
+
if (onProgress) onProgress({
|
|
83
|
+
percent: 100,
|
|
84
|
+
loaded: 1,
|
|
85
|
+
total: 1,
|
|
86
|
+
indeterminate: false
|
|
87
|
+
});
|
|
88
|
+
resolve(payload);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
reject(new GrUploadHttpError(status, payload));
|
|
92
|
+
});
|
|
93
|
+
xhr.addEventListener("error", () => {
|
|
94
|
+
cleanup();
|
|
95
|
+
reject(/* @__PURE__ */ new Error("Network error during upload"));
|
|
96
|
+
});
|
|
97
|
+
xhr.addEventListener("abort", () => {
|
|
98
|
+
cleanup();
|
|
99
|
+
reject(new GrUploadAbortError());
|
|
100
|
+
});
|
|
101
|
+
xhr.send(body);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
//#endregion
|
|
105
|
+
//#region src/components/GrFileUpload/uploadState.ts
|
|
106
|
+
var GR_UPLOAD_STATE_IDLE = Object.freeze({
|
|
107
|
+
phase: "idle",
|
|
108
|
+
percent: 0,
|
|
109
|
+
indeterminate: false,
|
|
110
|
+
loaded: 0,
|
|
111
|
+
total: 0
|
|
112
|
+
});
|
|
113
|
+
//#endregion
|
|
5
114
|
//#region src/components/GrFileUpload/GrFileUpload.vue?vue&type=script&setup=true&lang.ts
|
|
6
115
|
var _hoisted_1 = [
|
|
7
116
|
"role",
|
|
@@ -43,6 +152,12 @@ var _hoisted_9 = {
|
|
|
43
152
|
};
|
|
44
153
|
var _hoisted_10 = { class: "font-600" };
|
|
45
154
|
var _hoisted_11 = { class: "text-[var(--muted-fg)]" };
|
|
155
|
+
var _hoisted_12 = ["aria-hidden"];
|
|
156
|
+
var _hoisted_13 = { class: "flex items-center gap-2" };
|
|
157
|
+
var _hoisted_14 = {
|
|
158
|
+
"data-ds-file-upload-progress-text": "",
|
|
159
|
+
class: "text-[12px] text-[var(--muted-fg)] tabular-nums min-w-[3ch] text-right"
|
|
160
|
+
};
|
|
46
161
|
//#endregion
|
|
47
162
|
//#region src/components/GrFileUpload/GrFileUpload.vue
|
|
48
163
|
var GrFileUpload_default = /* @__PURE__ */ defineComponent({
|
|
@@ -85,13 +200,21 @@ var GrFileUpload_default = /* @__PURE__ */ defineComponent({
|
|
|
85
200
|
type: Function,
|
|
86
201
|
default: void 0
|
|
87
202
|
},
|
|
88
|
-
placeholder: { default: "Drag files here or click to select" }
|
|
203
|
+
placeholder: { default: "Drag files here or click to select" },
|
|
204
|
+
showProgress: {
|
|
205
|
+
type: Boolean,
|
|
206
|
+
default: true
|
|
207
|
+
},
|
|
208
|
+
progressTone: { default: "primary" },
|
|
209
|
+
progressLabel: { default: "Upload progress" },
|
|
210
|
+
hideProgressOnSuccess: { default: 800 }
|
|
89
211
|
},
|
|
90
212
|
emits: [
|
|
91
213
|
"success",
|
|
92
214
|
"error",
|
|
93
215
|
"progress",
|
|
94
|
-
"change"
|
|
216
|
+
"change",
|
|
217
|
+
"state-change"
|
|
95
218
|
],
|
|
96
219
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
97
220
|
const props = __props;
|
|
@@ -128,7 +251,63 @@ var GrFileUpload_default = /* @__PURE__ */ defineComponent({
|
|
|
128
251
|
const isOver = ref(false);
|
|
129
252
|
let overCounter = 0;
|
|
130
253
|
const lastFiles = ref([]);
|
|
254
|
+
const state = reactive({ ...GR_UPLOAD_STATE_IDLE });
|
|
131
255
|
let activeController = null;
|
|
256
|
+
let hideSuccessTimer = null;
|
|
257
|
+
function clearHideSuccessTimer() {
|
|
258
|
+
if (hideSuccessTimer !== null) {
|
|
259
|
+
clearTimeout(hideSuccessTimer);
|
|
260
|
+
hideSuccessTimer = null;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
function assignState(next) {
|
|
264
|
+
for (const key of Object.keys(state)) delete state[key];
|
|
265
|
+
Object.assign(state, next);
|
|
266
|
+
emit("state-change", state);
|
|
267
|
+
}
|
|
268
|
+
function setStateIdle() {
|
|
269
|
+
assignState({ ...GR_UPLOAD_STATE_IDLE });
|
|
270
|
+
}
|
|
271
|
+
function setStateUploading(info) {
|
|
272
|
+
assignState({
|
|
273
|
+
phase: "uploading",
|
|
274
|
+
percent: info?.percent ?? 0,
|
|
275
|
+
indeterminate: info?.indeterminate ?? true,
|
|
276
|
+
loaded: info?.loaded ?? 0,
|
|
277
|
+
total: info?.total ?? 0
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
function setStateSuccess(info) {
|
|
281
|
+
assignState({
|
|
282
|
+
phase: "success",
|
|
283
|
+
percent: 100,
|
|
284
|
+
indeterminate: false,
|
|
285
|
+
loaded: info.loaded,
|
|
286
|
+
total: info.total
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
function setStateError(error) {
|
|
290
|
+
const prev = state;
|
|
291
|
+
assignState({
|
|
292
|
+
phase: "error",
|
|
293
|
+
percent: prev.phase === "uploading" ? prev.percent : 0,
|
|
294
|
+
indeterminate: false,
|
|
295
|
+
loaded: prev.phase === "uploading" ? prev.loaded : 0,
|
|
296
|
+
total: prev.phase === "uploading" ? prev.total : 0,
|
|
297
|
+
error
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
function handleProgress(info) {
|
|
301
|
+
if (state.phase !== "uploading") return;
|
|
302
|
+
assignState({
|
|
303
|
+
phase: "uploading",
|
|
304
|
+
percent: info.percent,
|
|
305
|
+
indeterminate: info.indeterminate,
|
|
306
|
+
loaded: info.loaded,
|
|
307
|
+
total: info.total
|
|
308
|
+
});
|
|
309
|
+
emit("progress", info.percent, info);
|
|
310
|
+
}
|
|
132
311
|
const tabIndex = computed(() => props.disabled ? -1 : 0);
|
|
133
312
|
const hiddenInputStyle = {
|
|
134
313
|
position: "fixed",
|
|
@@ -158,36 +337,18 @@ var GrFileUpload_default = /* @__PURE__ */ defineComponent({
|
|
|
158
337
|
if (limit <= 0) return void 0;
|
|
159
338
|
return Math.floor(limit);
|
|
160
339
|
}
|
|
161
|
-
function appendExtraFormData(body, extraData) {
|
|
162
|
-
if (!extraData) return;
|
|
163
|
-
for (const [key, value] of Object.entries(extraData)) {
|
|
164
|
-
if (Array.isArray(value)) {
|
|
165
|
-
for (const entry of value) body.append(key, entry);
|
|
166
|
-
continue;
|
|
167
|
-
}
|
|
168
|
-
body.append(key, value);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
340
|
async function uploadViaAction(files, signal, extraData) {
|
|
172
341
|
if (!props.action) throw new Error("GrFileUpload: either `action` or `request` must be provided");
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
method: "POST",
|
|
342
|
+
return uploadViaXhr({
|
|
343
|
+
url: props.action,
|
|
344
|
+
files,
|
|
345
|
+
name: props.name,
|
|
178
346
|
headers: props.headers,
|
|
179
|
-
|
|
347
|
+
withCredentials: props.withCredentials,
|
|
348
|
+
extraData,
|
|
180
349
|
signal,
|
|
181
|
-
|
|
350
|
+
onProgress: handleProgress
|
|
182
351
|
});
|
|
183
|
-
const payload = response.headers.get("content-type")?.includes("application/json") ? await response.json() : await response.text();
|
|
184
|
-
if (!response.ok) {
|
|
185
|
-
const error = /* @__PURE__ */ new Error(`Upload failed with status ${response.status}`);
|
|
186
|
-
error.payload = payload;
|
|
187
|
-
error.status = response.status;
|
|
188
|
-
throw error;
|
|
189
|
-
}
|
|
190
|
-
return payload;
|
|
191
352
|
}
|
|
192
353
|
async function runBeforeUpload(files) {
|
|
193
354
|
if (!props.beforeUpload) return "ok";
|
|
@@ -238,17 +399,42 @@ var GrFileUpload_default = /* @__PURE__ */ defineComponent({
|
|
|
238
399
|
return;
|
|
239
400
|
}
|
|
240
401
|
abort();
|
|
402
|
+
clearHideSuccessTimer();
|
|
241
403
|
const controller = new AbortController();
|
|
242
404
|
activeController = controller;
|
|
243
|
-
|
|
405
|
+
setStateUploading();
|
|
406
|
+
emit("progress", 0, {
|
|
407
|
+
percent: 0,
|
|
408
|
+
loaded: 0,
|
|
409
|
+
total: 0,
|
|
410
|
+
indeterminate: true
|
|
411
|
+
});
|
|
244
412
|
try {
|
|
245
|
-
|
|
413
|
+
const payload = props.request ? await props.request(valid, {
|
|
246
414
|
signal: controller.signal,
|
|
247
|
-
extraData
|
|
248
|
-
|
|
415
|
+
extraData,
|
|
416
|
+
onProgress: handleProgress
|
|
417
|
+
}) : await uploadViaAction(valid, controller.signal, extraData);
|
|
418
|
+
const finalLoaded = state.phase === "uploading" ? state.total || state.loaded : 0;
|
|
419
|
+
setStateSuccess({
|
|
420
|
+
loaded: finalLoaded,
|
|
421
|
+
total: finalLoaded
|
|
422
|
+
});
|
|
423
|
+
emit("success", payload);
|
|
249
424
|
emit("change", valid);
|
|
250
|
-
emit("progress", 100
|
|
425
|
+
emit("progress", 100, {
|
|
426
|
+
percent: 100,
|
|
427
|
+
loaded: finalLoaded,
|
|
428
|
+
total: finalLoaded,
|
|
429
|
+
indeterminate: false
|
|
430
|
+
});
|
|
431
|
+
if (props.hideProgressOnSuccess && props.hideProgressOnSuccess > 0) hideSuccessTimer = setTimeout(() => {
|
|
432
|
+
if (state.phase === "success") setStateIdle();
|
|
433
|
+
hideSuccessTimer = null;
|
|
434
|
+
}, props.hideProgressOnSuccess);
|
|
251
435
|
} catch (error) {
|
|
436
|
+
if (error instanceof GrUploadAbortError) setStateIdle();
|
|
437
|
+
else setStateError(error);
|
|
252
438
|
emit("error", error);
|
|
253
439
|
} finally {
|
|
254
440
|
if (activeController === controller) activeController = null;
|
|
@@ -306,10 +492,22 @@ var GrFileUpload_default = /* @__PURE__ */ defineComponent({
|
|
|
306
492
|
if (hasCustomUi.value) return;
|
|
307
493
|
onKeydown(event);
|
|
308
494
|
}
|
|
495
|
+
const effectiveProgressTone = computed(() => {
|
|
496
|
+
if (state.phase === "error") return "danger";
|
|
497
|
+
if (state.phase === "success") return "success";
|
|
498
|
+
return props.progressTone;
|
|
499
|
+
});
|
|
500
|
+
const progressVisible = computed(() => state.phase !== "idle");
|
|
501
|
+
const progressPercent = computed(() => state.phase === "uploading" && state.indeterminate ? 0 : state.percent);
|
|
502
|
+
const progressText = computed(() => {
|
|
503
|
+
if (state.phase === "uploading" && state.indeterminate) return "";
|
|
504
|
+
return `${Math.round(progressPercent.value)}%`;
|
|
505
|
+
});
|
|
309
506
|
__expose({
|
|
310
507
|
uploadFiles: handleFiles,
|
|
311
508
|
abort,
|
|
312
|
-
openDialog
|
|
509
|
+
openDialog,
|
|
510
|
+
state
|
|
313
511
|
});
|
|
314
512
|
return (_ctx, _cache) => {
|
|
315
513
|
return openBlock(), createElementBlock("div", {
|
|
@@ -346,7 +544,8 @@ var GrFileUpload_default = /* @__PURE__ */ defineComponent({
|
|
|
346
544
|
abort,
|
|
347
545
|
disabled: __props.disabled,
|
|
348
546
|
files: lastFiles.value,
|
|
349
|
-
isOver: isOver.value
|
|
547
|
+
isOver: isOver.value,
|
|
548
|
+
state
|
|
350
549
|
}) : (openBlock(), createElementBlock("div", _hoisted_3, [createElementVNode("div", _hoisted_4, [createVNode(GrIcon_default, { class: "h-6 w-6 text-[var(--muted-fg)]" }, {
|
|
351
550
|
default: withCtx(() => [createVNode(unref(arrow_up_default))]),
|
|
352
551
|
_: 1
|
|
@@ -359,10 +558,32 @@ var GrFileUpload_default = /* @__PURE__ */ defineComponent({
|
|
|
359
558
|
"data-ds-file-upload-item": "",
|
|
360
559
|
class: "text-[13px]"
|
|
361
560
|
}, [createElementVNode("span", _hoisted_10, toDisplayString(file.name), 1), createElementVNode("span", _hoisted_11, " · " + toDisplayString(Math.ceil(file.size / 1024)) + " KB", 1)]);
|
|
362
|
-
}), 128))])) : createCommentVNode("", true)
|
|
561
|
+
}), 128))])) : createCommentVNode("", true),
|
|
562
|
+
__props.showProgress || _ctx.$slots.progress ? renderSlot(_ctx.$slots, "progress", {
|
|
563
|
+
key: 3,
|
|
564
|
+
state,
|
|
565
|
+
percent: state.percent,
|
|
566
|
+
indeterminate: state.phase === "uploading" && state.indeterminate,
|
|
567
|
+
phase: state.phase,
|
|
568
|
+
files: lastFiles.value,
|
|
569
|
+
abort
|
|
570
|
+
}, () => [__props.showProgress ? (openBlock(), createElementBlock("div", {
|
|
571
|
+
key: 0,
|
|
572
|
+
"data-ds-file-upload-progress": "",
|
|
573
|
+
class: normalizeClass(["mt-3 transition-opacity duration-150", progressVisible.value ? "opacity-100" : "opacity-0 pointer-events-none"]),
|
|
574
|
+
"aria-hidden": !progressVisible.value
|
|
575
|
+
}, [createElementVNode("div", _hoisted_13, [createVNode(GrProgressBar_default, {
|
|
576
|
+
value: progressPercent.value,
|
|
577
|
+
tone: effectiveProgressTone.value,
|
|
578
|
+
"aria-label": __props.progressLabel
|
|
579
|
+
}, null, 8, [
|
|
580
|
+
"value",
|
|
581
|
+
"tone",
|
|
582
|
+
"aria-label"
|
|
583
|
+
]), createElementVNode("span", _hoisted_14, toDisplayString(progressText.value), 1)])], 10, _hoisted_12)) : createCommentVNode("", true)]) : createCommentVNode("", true)
|
|
363
584
|
])]))], 42, _hoisted_1);
|
|
364
585
|
};
|
|
365
586
|
}
|
|
366
587
|
});
|
|
367
588
|
//#endregion
|
|
368
|
-
export { GrFileUpload_default as t };
|
|
589
|
+
export { GrUploadHttpError as i, GR_UPLOAD_STATE_IDLE as n, GrUploadAbortError as r, GrFileUpload_default as t };
|