{"version":3,"file":"index3.cjs","sources":["../../../src/hooks/use-global-config.ts"],"sourcesContent":["import { computed, getCurrentInstance, inject, provide, ref, unref } from 'vue'\nimport { debugWarn, keysOf } from '../utils'\nimport { configProviderContextKey } from '../components/config-provider/context'\nimport type { MaybeRef } from '@vueuse/core'\nimport type { App, Ref } from 'vue'\nimport type { ConfigProviderContext } from '../components/config-provider/context'\n\nconst globalConfig = ref<ConfigProviderContext>()\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) obj[key] = b[key] ?? a[key]\n\n  return obj\n}\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) return computed(() => config.value?.[key] ?? defaultValue)\n  else return config\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  if (global || !globalConfig.value) globalConfig.value = context.value\n\n  return context\n}\n"],"names":["globalConfig","ref","mergeConfig","a","b","keys","keysOf","obj","key","_a","useGlobalConfig","defaultValue","config","getCurrentInstance","inject","configProviderContextKey","computed","_b","provideGlobalConfig","app","global","inSetup","oldConfig","provideFn","provide","debugWarn","context","cfg","unref"],"mappings":"iQAOMA,EAAeC,EAA2B,IAAA,EAE1CC,EAAc,CAClBC,EACAC,IAC0B,OAC1B,MAAMC,EAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAGC,EAAAA,OAAOH,CAAC,EAAG,GAAGG,EAAA,OAAOF,CAAC,CAAC,CAAC,CAAC,EAChDG,EAA2B,CAAA,EACjC,UAAWC,KAAOH,EAAUE,EAAAC,IAAOC,EAAAL,EAAEI,KAAF,KAAAC,EAAUN,EAAEK,GAExC,OAAAD,CACT,EAUgB,SAAAG,EACdF,EACAG,EAAe,OACf,CACA,MAAMC,EAASC,EAAAA,qBACXC,EAAAA,OAAOC,EAAAA,yBAA0Bf,CAAY,EAC7CA,EACA,OAAAQ,EAAYQ,EAAAA,SAAS,IAAA,SAAM,OAAAC,GAAAR,EAAAG,EAAO,QAAP,YAAAH,EAAeD,KAAf,KAAAS,EAAuBN,EAAY,EACtDC,CACd,CAEO,MAAMM,EAAsB,CACjCN,EACAO,EACAC,EAAS,KACN,OACG,MAAAC,EAAU,CAAC,CAACR,EAAAA,qBACZS,EAAYD,EAAUX,EAAoB,EAAA,OAE1Ca,GAAYd,EAAAU,GAAA,YAAAA,EAAK,UAAL,KAAAV,EAAiBY,EAAUG,EAAU,QAAA,OACvD,GAAI,CAACD,EAAW,CACdE,EAAA,UACE,sBACA,wDAAA,EAEF,MACF,CAEM,MAAAC,EAAUV,EAAAA,SAAS,IAAM,CACvB,MAAAW,EAAMC,QAAMhB,CAAM,EACxB,OAAKU,GAAA,MAAAA,EAAW,MACTpB,EAAYoB,EAAU,MAAOK,CAAG,EADTA,CACS,CACxC,EACD,OAAAJ,EAAUR,EAAAA,yBAA0BW,CAAO,GACvCN,GAAU,CAACpB,EAAa,SAAOA,EAAa,MAAQ0B,EAAQ,OAEzDA,CACT"}