{"version":3,"file":"index.mjs","sources":["../../../../../packages/composables/use-global-config/index.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-02-09 16:19:57\n * @LastEditTime: 2022-02-09 16:49:56\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-global-config\\index.ts\n */\nimport { ConfigProviderContext, configProviderContextKey } from '@vue-cesium/utils/config'\nimport { inject, ref, computed, unref, provide, getCurrentInstance } from 'vue'\nimport type { Ref, App } from 'vue'\nimport { hasOwn, isObject, merge } from '@vue-cesium/utils/util'\nimport { MaybeRef } from '@vue-cesium/utils/types'\n\nconst cache = ref<ConfigProviderContext>({})\n\nexport function useGlobalConfig<K extends keyof ConfigProviderContext>(key: K): Ref<ConfigProviderContext[K]>\nexport function useGlobalConfig(): Ref<ConfigProviderContext>\nexport function useGlobalConfig(key?: keyof ConfigProviderContext) {\n  const config = inject(configProviderContextKey, cache)\n  if (key) {\n    return isObject(config.value) && hasOwn(config.value, key) ? computed(() => config.value[key]) : ref(undefined)\n  } else {\n    return config\n  }\n}\n\nexport const provideGlobalConfig = (config: MaybeRef<ConfigProviderContext>, app?: App) => {\n  const inSetup = !!getCurrentInstance()\n  const oldConfig = inSetup ? useGlobalConfig() : undefined\n\n  const provideFn = app?.provide ?? (inSetup ? provide : undefined)\n  if (!provideFn) {\n    console.warn('provideGlobalConfig', 'provideGlobalConfig() can only be used inside setup().')\n    return\n  }\n\n  const context = computed(() => {\n    const cfg = unref(config)\n    if (!oldConfig) return cfg\n    return merge(oldConfig.value, cfg)\n  })\n  provideFn(configProviderContextKey, context)\n  cache.value = context.value\n  return context\n}\n"],"names":[],"mappings":";;;;;AAGA,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACf,SAAS,eAAe,CAAC,GAAG,EAAE;AACrC,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;AACzD,EAAE,IAAI,GAAG,EAAE;AACX,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACjH,GAAG,MAAM;AACT,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH,CAAC;AACW,MAAC,mBAAmB,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK;AACpD,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,MAAM,OAAO,GAAG,CAAC,CAAC,kBAAkB,EAAE,CAAC;AACzC,EAAE,MAAM,SAAS,GAAG,OAAO,GAAG,eAAe,EAAE,GAAG,KAAK,CAAC,CAAC;AACzD,EAAE,MAAM,SAAS,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,GAAG,EAAE,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC;AACxG,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,IAAI,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,wDAAwD,CAAC,CAAC;AAClG,IAAI,OAAO;AACX,GAAG;AACH,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM;AACjC,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,SAAS;AAClB,MAAM,OAAO,GAAG,CAAC;AACjB,IAAI,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACvC,GAAG,CAAC,CAAC;AACL,EAAE,SAAS,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;AAC/C,EAAE,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC9B,EAAE,OAAO,OAAO,CAAC;AACjB;;;;"}