UNPKG

tdesign-mobile-vue

Version:
1 lines 5.38 kB
{"version":3,"file":"useConfig.mjs","sources":["../../src/config-provider/useConfig.ts"],"sourcesContent":["import { computed, h, inject, getCurrentInstance, ref, provide } from 'vue';\nimport { cloneDeep, isFunction, isString } from 'lodash-es';\n\nimport { defaultGlobalConfig, configProviderInjectKey, mergeWith } from './context';\nimport { GlobalConfigProvider } from './type';\nimport type { TdConfigProviderProps } from './type';\n\n// 这是为了解决在非component里调用useConfig hook时发出的警告\n// https://github.com/Tencent/tdesign-vue-next/issues/2025\nconst globalConfigCopy = ref<GlobalConfigProvider>();\n\nexport * from './type';\n\n// 处理正则表达式\nexport const t = function <T>(pattern: T, ...args: any[]) {\n const [data] = args;\n if (isString(pattern)) {\n if (!data) return pattern;\n const regular = /\\{\\s*([\\w-]+)\\s*\\}/g;\n const translated = pattern.replace(regular, (match, key) => {\n return String(data[key]);\n });\n return translated;\n }\n if (isFunction(pattern)) {\n // 重要:组件的渲染必须存在参数 h,不能移除\n if (!args.length) return pattern(h);\n return pattern(...args);\n }\n return '';\n};\n\n/**\n * component globalConfig\n * @param componentName\n * @returns {t, globalConfig}\n * useConfig('pagination')\n */\nexport function useConfig<T extends keyof GlobalConfigProvider>(\n componentName: T = undefined,\n componentLocale?: GlobalConfigProvider[T],\n) {\n const injectGlobalConfig = getCurrentInstance() ? inject(configProviderInjectKey, null) : globalConfigCopy;\n const mergedGlobalConfig = computed(() => injectGlobalConfig?.value || defaultGlobalConfig);\n // eslint-disable-next-line\n const globalConfig = computed(() => Object.assign({}, mergedGlobalConfig.value[componentName], componentLocale));\n\n const classPrefix = computed(() => {\n return mergedGlobalConfig.value.classPrefix;\n });\n\n return {\n t,\n global: globalConfig,\n globalConfig,\n classPrefix,\n };\n}\n\n/**\n * provide globalConfig\n * @param {TdConfigProviderProps} props\n * @returns {ComputedRef<GlobalConfigProvider>}\n */\nexport const provideConfig = (props: TdConfigProviderProps) => {\n const defaultData = cloneDeep(defaultGlobalConfig);\n const mergedGlobalConfig = computed(() => ({ ...mergeWith(defaultData, props.globalConfig) }));\n\n provide(configProviderInjectKey, mergedGlobalConfig);\n\n if (!globalConfigCopy.value) {\n globalConfigCopy.value = mergedGlobalConfig.value;\n }\n\n return mergedGlobalConfig;\n};\n"],"names":["globalConfigCopy","ref","t","pattern","_len","arguments","length","args","Array","_key","data","isString","regular","translated","replace","match","key","String","isFunction","h","apply","useConfig","componentName","undefined","componentLocale","injectGlobalConfig","getCurrentInstance","inject","configProviderInjectKey","mergedGlobalConfig","computed","value","defaultGlobalConfig","globalConfig","Object","assign","classPrefix","global","provideConfig","props","defaultData","cloneDeep","_objectSpread","mergeWith","provide"],"mappings":";;;;;;;;;;;;;;;;;;;;;AASA,IAAMA,mBAAmBC,GAA0B,EAAA,CAAA;IAKtCC,CAAA,GAAI,SAAJA,CAAAA,CAAiBC,OAAA,EAA4B;EAAA,KAAAC,IAAAA,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAbC,IAAa,OAAAC,KAAA,CAAAJ,IAAA,GAAAA,CAAAA,GAAAA,IAAA,WAAAK,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,EAAA,EAAA;AAAbF,IAAAA,IAAa,CAAAE,IAAA,GAAAJ,CAAAA,CAAAA,GAAAA,SAAA,CAAAI,IAAA,CAAA,CAAA;AAAA,GAAA;EAClD,IAACC,IAAI,GAAIH,IAAA,CAAA,CAAA,CAAA,CAAA;AACX,EAAA,IAAAI,QAAA,CAASR,OAAO,CAAG,EAAA;AACrB,IAAA,IAAI,CAACO,IAAA,EAAa,OAAAP,OAAA,CAAA;IAClB,IAAMS,OAAU,GAAA,qBAAA,CAAA;AAChB,IAAA,IAAMC,aAAaV,OAAQ,CAAAW,OAAA,CAAQF,OAAS,EAAA,UAACG,OAAOC,GAAQ,EAAA;AACnD,MAAA,OAAAC,MAAA,CAAOP,KAAKM,GAAI,CAAA,CAAA,CAAA;AACzB,KAAC,CAAA,CAAA;AACM,IAAA,OAAAH,UAAA,CAAA;AACT,GAAA;AACI,EAAA,IAAAK,UAAA,CAAWf,OAAO,CAAG,EAAA;IAEvB,IAAI,CAACI,IAAK,CAAAD,MAAA,EAAQ,OAAOH,QAAQgB,CAAC,CAAA,CAAA;AAC3B,IAAA,OAAAhB,OAAA,CAAAiB,KAAA,CAAA,KAAA,CAAA,EAAWb,IAAI,CAAA,CAAA;AACxB,GAAA;AACO,EAAA,OAAA,EAAA,CAAA;AACT,EAAA;AAQgB,SAAAc,SAAAA,GAGd;AAAA,EAAA,IAFAC,aAAmB,GAAAjB,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAkB,SAAA,GAAAlB,SAAA,CAAA,CAAA,CAAA,GAAA,KAAA,CAAA,CAAA;EAAA,IACnBmB,eACA,GAAAnB,SAAA,CAAAC,MAAA,GAAAD,CAAAA,GAAAA,SAAA,MAAAkB,SAAA,CAAA;AACA,EAAA,IAAME,qBAAqBC,kBAAmB,EAAA,GAAIC,MAAO,CAAAC,uBAAA,EAAyB,IAAI,CAAI,GAAA5B,gBAAA,CAAA;EAC1F,IAAM6B,kBAAqB,GAAAC,QAAA,CAAS,YAAA;IAAA,OAAM,CAAAL,kBAAA,KAAAA,IAAAA,IAAAA,kBAAA,uBAAAA,kBAAA,CAAoBM,UAASC,mBAAmB,CAAA;GAAA,CAAA,CAAA;EAEpF,IAAAC,YAAA,GAAeH,QAAS,CAAA,YAAA;AAAA,IAAA,OAAMI,MAAO,CAAAC,MAAA,CAAO,EAAC,EAAGN,kBAAmB,CAAAE,KAAA,CAAMT,aAAgB,CAAA,EAAAE,eAAe,CAAC,CAAA;GAAA,CAAA,CAAA;AAEzG,EAAA,IAAAY,WAAA,GAAcN,SAAS,YAAM;AACjC,IAAA,OAAOD,mBAAmBE,KAAM,CAAAK,WAAA,CAAA;AAClC,GAAC,CAAA,CAAA;EAEM,OAAA;AACLlC,IAAAA,CAAA,EAAAA,CAAA;AACAmC,IAAAA,MAAQ,EAAAJ,YAAA;AACRA,IAAAA,YAAA,EAAAA,YAAA;AACAG,IAAAA,WAAA,EAAAA,WAAAA;GACF,CAAA;AACF,CAAA;IAOaE,aAAA,GAAgB,SAAhBA,aAAAA,CAAiBC,KAAiC,EAAA;AACvD,EAAA,IAAAC,WAAA,GAAcC,UAAUT,mBAAmB,CAAA,CAAA;EAC3C,IAAAH,kBAAA,GAAqBC,QAAS,CAAA,YAAA;IAAA,OAAAY,aAAA,KAAYC,UAAUH,WAAa,EAAAD,KAAA,CAAMN,YAAY,CAAA,CAAA,CAAA;AAAA,GAAI,CAAA,CAAA;AAE7FW,EAAAA,OAAA,CAAQhB,yBAAyBC,kBAAkB,CAAA,CAAA;AAE/C,EAAA,IAAA,CAAC7B,iBAAiB+B,KAAO,EAAA;AAC3B/B,IAAAA,gBAAA,CAAiB+B,QAAQF,kBAAmB,CAAAE,KAAA,CAAA;AAC9C,GAAA;AAEO,EAAA,OAAAF,kBAAA,CAAA;AACT;;;;"}