tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 5.53 kB
Source Map (JSON)
{"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/**\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 // 处理正则表达式\n 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 if (data) {\n return String(data[key]);\n }\n return '';\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 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","useConfig","componentName","arguments","length","undefined","componentLocale","injectGlobalConfig","getCurrentInstance","inject","configProviderInjectKey","mergedGlobalConfig","computed","value","defaultGlobalConfig","globalConfig","Object","assign","classPrefix","t","pattern","_len","args","Array","_key","data","isString","regular","translated","replace","match","key","String","isFunction","h","apply","global","provideConfig","props","defaultData","cloneDeep","_objectSpread","mergeWith","provide"],"mappings":"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"}