{"version":3,"file":"index3.mjs","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":";;;;AAOA,MAAMA,IAAeC,EAA2B,GAE1CC,IAAc,CAClBC,GACAC,MAC0B;;AAC1B,QAAMC,IAAO,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAGC,EAAOH,CAAC,GAAG,GAAGG,EAAOF,CAAC,CAAC,CAAC,CAAC,GAChDG,IAA2B,CAAA;AACjC,aAAWC,KAAOH;AAAU,IAAAE,EAAAC,MAAOC,IAAAL,EAAEI,OAAF,OAAAC,IAAUN,EAAEK;AAExC,SAAAD;AACT;AAUgB,SAAAG,EACdF,GACAG,IAAe,QACf;AACA,QAAMC,IAASC,MACXC,EAAOC,GAA0Bf,CAAY,IAC7CA;AACA,SAAAQ,IAAYQ,EAAS,MAAA;;AAAM,YAAAC,KAAAR,IAAAG,EAAO,UAAP,gBAAAH,EAAeD,OAAf,OAAAS,IAAuBN;AAAA,GAAY,IACtDC;AACd;AAEO,MAAMM,IAAsB,CACjCN,GACAO,GACAC,IAAS,OACN;;AACG,QAAAC,IAAU,CAAC,CAACR,KACZS,IAAYD,IAAUX,EAAoB,IAAA,QAE1Ca,KAAYd,IAAAU,KAAA,gBAAAA,EAAK,YAAL,OAAAV,IAAiBY,IAAUG,IAAU;AACvD,MAAI,CAACD,GAAW;AACd,IAAAE;AAAA,MACE;AAAA,MACA;AAAA,IAAA;AAEF;AAAA,EACF;AAEM,QAAAC,IAAUV,EAAS,MAAM;AACvB,UAAAW,IAAMC,EAAMhB,CAAM;AACxB,WAAKU,KAAA,QAAAA,EAAW,QACTpB,EAAYoB,EAAU,OAAOK,CAAG,IADTA;AAAA,EACS,CACxC;AACD,SAAAJ,EAAUR,GAA0BW,CAAO,IACvCN,KAAU,CAACpB,EAAa,WAAOA,EAAa,QAAQ0B,EAAQ,QAEzDA;AACT;"}