/**
 * ldesign v0.4.2
 * (c) 2023 ldesign
 * @license MIT
 */

import { ref, getCurrentInstance, inject, computed, h, provide } from 'vue';
import { c as cloneDeep_1 } from '../_chunks/dep-44417261.mjs';
import { i as isFunction_1 } from '../_chunks/dep-6b22dd27.mjs';
import { i as isString_1 } from '../_chunks/dep-1cf2b129.mjs';
import { c as configProviderInjectKey, d as defaultGlobalConfig, a as mergeWith } from '../_chunks/dep-99920870.mjs';
import './type.mjs';
import '../_chunks/dep-a0b4a044.mjs';
import '../_chunks/dep-bf74f1c2.mjs';
import '../_chunks/dep-79821ff2.mjs';
import '../_chunks/dep-0bfbf721.mjs';
import '../_chunks/dep-39cc276d.mjs';
import '../_chunks/dep-8f777748.mjs';
import '../_chunks/dep-c959a6fb.mjs';
import '../_chunks/dep-b4041200.mjs';
import '../_chunks/dep-0f0c89ff.mjs';
import '../_chunks/dep-ae357f26.mjs';
import '../_chunks/dep-352691c2.mjs';
import '../_chunks/dep-2cfd5b3a.mjs';
import '../_chunks/dep-05fa17c9.mjs';
import '../_chunks/dep-c31e1d9e.mjs';
import '../_chunks/dep-e3b14d70.mjs';
import '../_chunks/dep-66d6733b.mjs';
import '../_chunks/dep-a9c8a5d5.mjs';
import '../_chunks/dep-10085c61.mjs';
import '../_chunks/dep-1b058de3.mjs';
import '../_chunks/dep-c852a61a.mjs';
import '../_chunks/dep-92e7085e.mjs';
import '../_chunks/dep-44f056cd.mjs';
import '../_chunks/dep-23a0f453.mjs';
import '../_chunks/dep-c7e9ce16.mjs';
import '../_chunks/dep-3afa94cf.mjs';
import '../_chunks/dep-ba3c0b2e.mjs';
import '../_chunks/dep-ee57d235.mjs';
import '../_common/js/global-config/default-config.mjs';
import '../_common/js/global-config/locale/zh_CN.mjs';
import '../_chunks/dep-6b4aa943.mjs';
import '../_chunks/dep-d52291a9.mjs';

var globalConfigCopy = ref();
function useConfig(componentName) {
  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 mergedGlobalConfig.value[componentName];
  });
  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_1(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_1(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_1(defaultGlobalConfig);
  var mergedGlobalConfig = computed(function () {
    return mergeWith(defaultData, props.globalConfig);
  });
  provide(configProviderInjectKey, mergedGlobalConfig);
  if (!globalConfigCopy.value) globalConfigCopy.value = mergedGlobalConfig.value;
  return mergedGlobalConfig;
};

export { provideConfig, useConfig };
//# sourceMappingURL=useConfig.mjs.map
