{"version":3,"file":"use-global-config.mjs","sources":["../../../../../../../packages/components/config-provider/src/hooks/use-global-config.ts"],"sourcesContent":["import { computed, getCurrentInstance, inject, provide, ref, unref } from 'vue'\nimport { debugWarn, keysOf } from '@element-plus/utils'\nimport {\n  SIZE_INJECTION_KEY,\n  defaultInitialZIndex,\n  defaultNamespace,\n  emptyValuesContextKey,\n  localeContextKey,\n  namespaceContextKey,\n  useLocale,\n  useNamespace,\n  useZIndex,\n  zIndexContextKey,\n} from '@element-plus/hooks'\nimport { configProviderContextKey } from '../constants'\n\nimport type { MaybeRef } from '@vueuse/core'\nimport type { App, Ref } from 'vue'\nimport type { ConfigProviderContext } from '../constants'\n\n// this is meant to fix global methods like `ElMessage(opts)`, this way we can inject current locale\n// into the component as default injection value.\n// refer to: https://github.com/element-plus/element-plus/issues/2610#issuecomment-887965266\nconst globalConfig = ref<ConfigProviderContext>()\n\nexport function useGlobalConfig<\n  K extends keyof ConfigProviderContext,\n  D extends ConfigProviderContext[K],\n>(\n  key: K,\n  defaultValue?: D\n): Ref<Exclude<ConfigProviderContext[K], undefined> | D>\nexport function useGlobalConfig(): Ref<ConfigProviderContext>\nexport function useGlobalConfig(\n  key?: keyof ConfigProviderContext,\n  defaultValue = undefined\n) {\n  const config = getCurrentInstance()\n    ? inject(configProviderContextKey, globalConfig)\n    : globalConfig\n  if (key) {\n    return computed(() => config.value?.[key] ?? defaultValue)\n  } else {\n    return config\n  }\n}\n\n// for components like `ElMessage` `ElNotification` `ElMessageBox`.\nexport function useGlobalComponentSettings(\n  block: string,\n  sizeFallback?: MaybeRef<ConfigProviderContext['size']>\n) {\n  const config = useGlobalConfig()\n\n  const ns = useNamespace(\n    block,\n    computed(() => config.value?.namespace || defaultNamespace)\n  )\n\n  const locale = useLocale(computed(() => config.value?.locale))\n  const zIndex = useZIndex(\n    computed(() => config.value?.zIndex || defaultInitialZIndex)\n  )\n  const size = computed(() => unref(sizeFallback) || config.value?.size || '')\n  provideGlobalConfig(computed(() => unref(config) || {}))\n\n  return {\n    ns,\n    locale,\n    zIndex,\n    size,\n  }\n}\n\nexport const provideGlobalConfig = (\n  config: MaybeRef<ConfigProviderContext>,\n  app?: App,\n  global = false\n) => {\n  const inSetup = !!getCurrentInstance()\n  const oldConfig = inSetup ? useGlobalConfig() : undefined\n\n  const provideFn = app?.provide ?? (inSetup ? provide : undefined)\n  if (!provideFn) {\n    debugWarn(\n      'provideGlobalConfig',\n      'provideGlobalConfig() can only be used inside setup().'\n    )\n    return\n  }\n\n  const context = computed(() => {\n    const cfg = unref(config)\n    if (!oldConfig?.value) return cfg\n    return mergeConfig(oldConfig.value, cfg)\n  })\n  provideFn(configProviderContextKey, context)\n  provideFn(\n    localeContextKey,\n    computed(() => context.value.locale)\n  )\n  provideFn(\n    namespaceContextKey,\n    computed(() => context.value.namespace)\n  )\n  provideFn(\n    zIndexContextKey,\n    computed(() => context.value.zIndex)\n  )\n\n  provideFn(SIZE_INJECTION_KEY, {\n    size: computed(() => context.value.size || ''),\n  })\n\n  provideFn(\n    emptyValuesContextKey,\n    computed(() => ({\n      emptyValues: context.value.emptyValues,\n      valueOnClear: context.value.valueOnClear,\n    }))\n  )\n\n  if (global || !globalConfig.value) {\n    globalConfig.value = context.value\n  }\n  return context\n}\n\nconst mergeConfig = (\n  a: ConfigProviderContext,\n  b: ConfigProviderContext\n): ConfigProviderContext => {\n  const keys = [...new Set([...keysOf(a), ...keysOf(b)])]\n  const obj: Record<string, any> = {}\n  for (const key of keys) {\n    obj[key] = b[key] !== undefined ? b[key] : a[key]\n  }\n  return obj\n}\n"],"names":[],"mappings":"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"}