tdesign-vue-next
Version:
TDesign Component for vue-next
72 lines (68 loc) • 2.46 kB
JavaScript
/**
* tdesign v1.11.5
* (c) 2025 tdesign
* @license MIT
*/
import { ref, getCurrentInstance, inject, computed, provide, h } from 'vue';
import { cloneDeep, isString, isFunction } from 'lodash-es';
import { configProviderInjectKey, defaultGlobalConfig, mergeWith } from '../utils/context.js';
import '../../_chunks/dep-c75b9b8e.js';
import '@babel/runtime/helpers/typeof';
import '../../_chunks/dep-caecb55d.js';
import 'dayjs';
var globalConfigCopy = ref();
function useConfig() {
var componentName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : void 0;
var componentLocale = arguments.length > 1 ? arguments[1] : undefined;
var injectGlobalConfig = getCurrentInstance() ? inject(configProviderInjectKey, null) : globalConfigCopy;
var mergedGlobalConfig = computed(function () {
return (injectGlobalConfig === null || injectGlobalConfig === void 0 ? void 0 : injectGlobalConfig.value) || defaultGlobalConfig;
});
var globalConfig = computed(function () {
return Object.assign({}, mergedGlobalConfig.value[componentName], componentLocale);
});
var classPrefix = computed(function () {
return mergedGlobalConfig.value.classPrefix;
});
var t = function t(pattern) {
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
var data = args[0];
if (isString(pattern)) {
if (!data) return pattern;
var regular = /\{\s*([\w-]+)\s*\}/g;
var translated = pattern.replace(regular, function (match, key) {
if (data) {
return String(data[key]);
}
return "";
});
return translated;
}
if (isFunction(pattern)) {
if (!args.length) return pattern(h);
return pattern.apply(void 0, args);
}
return "";
};
return {
t: t,
global: globalConfig,
globalConfig: globalConfig,
classPrefix: classPrefix
};
}
var provideConfig = function provideConfig(props) {
var defaultData = cloneDeep(defaultGlobalConfig);
var mergedGlobalConfig = computed(function () {
return Object.assign({}, mergeWith(defaultData, props.globalConfig));
});
provide(configProviderInjectKey, mergedGlobalConfig);
if (!globalConfigCopy.value) {
globalConfigCopy.value = mergedGlobalConfig.value;
}
return mergedGlobalConfig;
};
export { provideConfig, useConfig };
//# sourceMappingURL=useConfig.js.map