UNPKG

vue-cesium

Version:
1 lines 4.45 kB
{"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: 2023-10-23 17:23:48\n * @LastEditors: zouyaoji 370681295@qq.com\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 { MaybeRef } from '@vue-cesium/utils/types'\nimport { keysOf } from '@vue-cesium/utils/objects'\n\nconst globalConfig = ref<ConfigProviderContext>()\n\nexport function useGlobalConfig<K extends keyof ConfigProviderContext, D extends ConfigProviderContext[K]>(\n key: K,\n defaultValue?: D\n): Ref<Exclude<ConfigProviderContext[K], undefined> | D>\n\nexport function useGlobalConfig(): Ref<ConfigProviderContext>\nexport function useGlobalConfig(key?: keyof ConfigProviderContext, defaultValue = undefined) {\n const config = getCurrentInstance() ? inject(configProviderContextKey, globalConfig) : globalConfig\n if (key) {\n return computed(() => config.value?.[key] ?? defaultValue)\n } else {\n return config\n }\n}\n\nexport const provideGlobalConfig = (config: MaybeRef<ConfigProviderContext>, app?: App, global = false) => {\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?.value) return cfg\n return mergeConfig(oldConfig.value, cfg)\n })\n\n if (app?.provide) {\n app.provide(configProviderContextKey, context)\n } else {\n provide(configProviderContextKey, context)\n }\n\n if (global || !globalConfig.value) {\n globalConfig.value = context.value\n }\n return context\n}\n\nconst mergeConfig = (a: ConfigProviderContext, b: ConfigProviderContext): 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] ?? a[key]\n }\n return obj\n}\n"],"names":[],"mappings":";;;;;AAcA,MAAM,eAAe,GAA2B,EAAA,CAAA;AAQhC,SAAA,eAAA,CAAgB,GAAmC,EAAA,YAAA,GAAe,KAAW,CAAA,EAAA;AAC3F,EAAA,MAAM,SAAS,kBAAmB,EAAA,GAAI,MAAO,CAAA,wBAAA,EAA0B,YAAY,CAAI,GAAA,YAAA,CAAA;AACvF,EAAA,IAAI,GAAK,EAAA;AACP,IAAA,OAAO,SAAS,MAAG;AAzBvB,MAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAyB0B,MAAO,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,CAAA,KAAA,KAAP,IAAe,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,CAAA,KAAf,IAAuB,GAAA,EAAA,GAAA,YAAA,CAAA;AAAA,KAAY,CAAA,CAAA;AAAA,GACpD,MAAA;AACL,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AACF,CAAA;AAEO,MAAM,mBAAsB,GAAA,CAAC,MAAyC,EAAA,GAAA,EAAW,SAAS,KAAU,KAAA;AA/B3G,EAAA,IAAA,EAAA,CAAA;AAgCE,EAAM,MAAA,OAAA,GAAU,CAAC,CAAC,kBAAmB,EAAA,CAAA;AACrC,EAAM,MAAA,SAAA,GAAY,OAAU,GAAA,eAAA,EAAoB,GAAA,KAAA,CAAA,CAAA;AAEhD,EAAA,MAAM,SAAY,GAAA,CAAA,EAAA,GAAA,GAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAK,OAAL,KAAA,IAAA,GAAA,EAAA,GAAiB,UAAU,OAAU,GAAA,KAAA,CAAA,CAAA;AACvD,EAAA,IAAI,CAAC,SAAW,EAAA;AACd,IAAQ,OAAA,CAAA,IAAA,CAAK,uBAAuB,wDAAwD,CAAA,CAAA;AAC5F,IAAA,OAAA;AAAA,GACF;AAEA,EAAM,MAAA,OAAA,GAAU,SAAS,MAAM;AAC7B,IAAM,MAAA,GAAA,GAAM,MAAM,MAAM,CAAA,CAAA;AACxB,IAAA,IAAI,EAAC,SAAW,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAA,KAAA,CAAA;AAAO,MAAO,OAAA,GAAA,CAAA;AAC9B,IAAO,OAAA,WAAA,CAAY,SAAU,CAAA,KAAA,EAAO,GAAG,CAAA,CAAA;AAAA,GACxC,CAAA,CAAA;AAED,EAAA,IAAI,2BAAK,OAAS,EAAA;AAChB,IAAI,GAAA,CAAA,OAAA,CAAQ,0BAA0B,OAAO,CAAA,CAAA;AAAA,GACxC,MAAA;AACL,IAAA,OAAA,CAAQ,0BAA0B,OAAO,CAAA,CAAA;AAAA,GAC3C;AAEA,EAAI,IAAA,MAAA,IAAU,CAAC,YAAA,CAAa,KAAO,EAAA;AACjC,IAAA,YAAA,CAAa,QAAQ,OAAQ,CAAA,KAAA,CAAA;AAAA,GAC/B;AACA,EAAO,OAAA,OAAA,CAAA;AACT,EAAA;AAEA,MAAM,WAAA,GAAc,CAAC,CAAA,EAA0B,CAAoD,KAAA;AA3DnG,EAAA,IAAA,EAAA,CAAA;AA4DE,EAAA,MAAM,IAAO,GAAA,CAAC,mBAAG,IAAI,IAAI,CAAC,GAAG,MAAO,CAAA,CAAC,GAAG,GAAG,MAAA,CAAO,CAAC,CAAC,CAAC,CAAC,CAAA,CAAA;AACtD,EAAA,MAAM,MAA2B,EAAC,CAAA;AAClC,EAAA,KAAA,MAAW,OAAO,IAAM,EAAA;AACtB,IAAA,GAAA,CAAI,GAAG,CAAI,GAAA,CAAA,EAAA,GAAA,CAAA,CAAE,GAAG,CAAL,KAAA,IAAA,GAAA,EAAA,GAAU,EAAE,GAAG,CAAA,CAAA;AAAA,GAC5B;AACA,EAAO,OAAA,GAAA,CAAA;AACT,CAAA;;;;"}