@vuesax-alpha/nightly
Version:
A Component Library for Vue 3
1 lines • 6.24 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-global-config/index.ts"],"sourcesContent":["// @ts-nocheck\nimport { computed, getCurrentInstance, inject, provide, ref, unref } from 'vue'\nimport { debugWarn, keysOf } from '@vuesax-alpha/utils'\nimport { configProviderContextKey } from '@vuesax-alpha/tokens'\n\nimport { localeContextKey, useLocale } from '../use-locale'\nimport {\n defaultNamespace,\n namespaceContextKey,\n useNamespace,\n} from '../use-namespace'\nimport {\n defaultInitialZIndex,\n useZIndex,\n zIndexContextKey,\n} from '../use-z-index'\nimport type { MaybeRef } from '@vuesax-alpha/utils'\nimport type { App, Ref } from 'vue'\nimport type { ConfigProviderContext } from '@vuesax-alpha/tokens'\n\n// this is meant to fix global methods like `VsNotification(opts)`\nconst globalConfig = ref<ConfigProviderContext>()\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) {\n return computed(() => config.value?.[key] ?? defaultValue)\n } else {\n return config\n }\n}\n\n// for components like `VsNotification`.\nexport const useGlobalComponentSettings = (block: string) => {\n const config = useGlobalConfig()\n\n const ns = useNamespace(\n block,\n computed(() => config.value?.namespace || defaultNamespace)\n )\n\n const locale = useLocale(computed(() => config.value?.locale))\n const zIndex = useZIndex(\n computed(() => config.value?.zIndex || defaultInitialZIndex)\n )\n\n return {\n ns,\n locale,\n zIndex,\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(\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\n provideFn(configProviderContextKey, context)\n provideFn(\n localeContextKey,\n computed(() => context.value.locale)\n )\n provideFn(\n namespaceContextKey,\n computed(() => context.value.namespace)\n )\n provideFn(\n zIndexContextKey,\n computed(() => context.value.zIndex)\n )\n\n if (global || !globalConfig.value) {\n globalConfig.value = context.value\n }\n return context\n}\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) {\n obj[key] = b[key] ?? a[key]\n }\n return obj\n}\n"],"names":[],"mappings":"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"}