UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 4.31 kB
{"version":3,"file":"useConfig.mjs","sources":["../../src/config-provider/useConfig.tsx"],"sourcesContent":["import { computed, h, inject, getCurrentInstance, ref, provide } from 'vue';\nimport isFunction from 'lodash/isFunction';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isString from 'lodash/isString';\n\nimport { defaultGlobalConfig, configProviderInjectKey, mergeWith } from './context';\nimport { GlobalConfigProvider } from './type';\nimport type { ConfigProviderProps } from './config-provider';\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>(componentName?: T) {\n const injectGlobalConfig = getCurrentInstance() ? inject(configProviderInjectKey, null) : globalConfigCopy;\n const mergedGlobalConfig = computed(() => injectGlobalConfig?.value || (defaultGlobalConfig as GlobalConfigProvider));\n const globalConfig = computed(() => mergedGlobalConfig.value[componentName]);\n\n // console.warn('---------componentName -----', componentName)\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 {ConfigProviderProps} props\n * @returns {ComputedRef<GlobalConfigProvider>}\n */\nexport const provideConfig = (props: ConfigProviderProps) => {\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":["args","isString","isFunction","t","global","globalConfig","classPrefix","cloneDeep","provide","globalConfigCopy"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,IAAA,gBAAA,GAAA,GAAA,EAAA,CAAA;AAUO,SAAA,SAAA,CAAA,aAAA,EAAA;AACL,EAAA,IAAA,kBAAA,GAAA,kBAAA,EAAA,GAAA,MAAA,CAAA,uBAAA,EAAA,IAAA,CAAA,GAAA,gBAAA,CAAA;;;;;AAE8B,IAAA,OAAA,kBAAA,CAAA,KAAA,CAAA,aAAA,CAAA,CAAA;;AAIxB,EAAA,IAAA,WAAA,GAAA,QAAA,CAAA,YAAA;AACJ,IAAA,OAAA,kBAAA,CAAA,KAAA,CAAA,WAAA,CAAA;AACF,GAAA,CAAA,CAAA;AAGM,EAAA,IAAA,CAAA,GAAA,SAAA,CAAA,CAAA,OAAA,EAAA;;AAAgCA,MAAAA,IAAAA,CAAAA,IAAAA,GAAAA,CAAAA,CAAAA,GAAAA,SAAAA,CAAAA,IAAAA,CAAAA,CAAAA;AAAa,KAAA;;AAE7C,IAAA,IAAAC,UAAA,CAAA,OAAA,CAAA,EAAA;AACF,MAAA,IAAA,CAAA,IAAA,EAAA,OAAA,OAAA,CAAA;;AAEA,MAAA,IAAA,UAAA,GAAA,OAAA,CAAA,OAAA,CAAA,OAAA,EAAA,UAAA,KAAA,EAAA,GAAA,EAAA;AACE,QAAA,IAAA,IAAA,EAAA;AACS,UAAA,OAAA,MAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,CAAA;AACT,SAAA;AACO,QAAA,OAAA,EAAA,CAAA;AACT,OAAA,CAAA,CAAA;AACO,MAAA,OAAA,UAAA,CAAA;AACT,KAAA;AACI,IAAA,IAAAC,YAAA,CAAA,OAAA,CAAA,EAAA;;AAGK,MAAA,OAAA,OAAA,CAAA,KAAA,CAAA,KAAA,CAAA,EAAA,IAAA,CAAA,CAAA;AACT,KAAA;AACO,IAAA,OAAA,EAAA,CAAA;;;AAIPC,IAAAA,CAAAA,EAAAA,CAAAA;AACAC,IAAAA,MAAAA,EAAAA,YAAAA;AACAC,IAAAA,YAAAA,EAAAA,YAAAA;AACAC,IAAAA,WAAAA,EAAAA,WAAAA;;AAEJ,CAAA;AAOO,IAAA,aAAA,GAAA,SAAA,aAAA,CAAA,KAAA,EAAA;AACC,EAAA,IAAA,WAAA,GAAAC,WAAA,CAAA,mBAAA,CAAA,CAAA;;AAC8B,IAAA,OAAA,SAAA,CAAA,WAAA,EAAA,KAAA,CAAA,YAAA,CAAA,CAAA;;AAEpCC,EAAAA,OAAAA,CAAAA,uBAAAA,EAAAA,kBAAAA,CAAAA,CAAAA;AAEI,EAAA,IAAA,CAAA,gBAAA,CAAA,KAAA,EAAA;AACFC,IAAAA,gBAAAA,CAAAA,KAAAA,GAAAA,kBAAAA,CAAAA,KAAAA,CAAAA;AACF,GAAA;AAEO,EAAA,OAAA,kBAAA,CAAA;AACT;;;;"}