UNPKG

vue-admin-core

Version:
1 lines 4.31 kB
{"version":3,"file":"use-global-config.mjs","sources":["../../../../../../../package/components/config-provider/src/hooks/use-global-config.ts"],"sourcesContent":["import { computed, getCurrentInstance, inject, provide, ref, unref } from \"vue\";\nimport { keysOf } from \"element-plus/es/utils/objects\";\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\nexport const globalConfig = ref<ConfigProviderContext>();\n\nexport function useGlobalConfig<\n K extends keyof ConfigProviderContext,\n D extends ConfigProviderContext[K]\n>(key: K, defaultValue?: D): Ref<Exclude<ConfigProviderContext[K], undefined> | D>;\nexport function useGlobalConfig(): Ref<ConfigProviderContext>;\nexport function useGlobalConfig(key?: keyof ConfigProviderContext, defaultValue = undefined) {\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\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(\"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 // @ts-ignore\n provideFn(configProviderContextKey, context);\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":";;;;AAWO,MAAM,eAAe,GAA2B,GAAA;AAOvC,SAAA,eAAA,CAAgB,GAAmC,EAAA,YAAA,GAAe,KAAW,CAAA,EAAA;AAC3F,EAAA,MAAM,SAAS,kBAAmB,EAAA,GAC9B,MAAO,CAAA,wBAAA,EAA0B,YAAY,CAC7C,GAAA,YAAA,CAAA;AACJ,EAAA,IAAI,GAAK,EAAA;AACP,IAAA,OAAO,SAAS,MAAG;AAvBvB,MAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAuB0B,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,CACjC,MACA,EAAA,GAAA,EACA,SAAS,KACN,KAAA;AAjCL,EAAA,IAAA,EAAA,CAAA;AAkCE,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;AAEd,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,SAAA,CAAU,0BAA0B,OAAO,CAAA,CAAA;AAE3C,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;AAzDnG,EAAA,IAAA,EAAA,CAAA;AA0DE,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;;;;"}