ideaz-element
Version:
<p align="center"> <a href="" target="_blank" rel="noopener noreferrer"> <img src="./docs/public/logo.svg" alt="Ideaz Element" width="180" style="width: 180px;" /> </a> </p>
1 lines • 3.33 kB
Source Map (JSON)
{"version":3,"file":"useGlobalConfig.cjs","sources":["../../../packages/hooks/useGlobalConfig.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport type { App } from 'vue'\n\nconst configProviderContextKey = 'globalProvider'\n\nconst globalConfig = ref<any>({})\n// eslint-disable-next-line import/no-mutable-exports\nlet vue2GlobalConfig = {}\n\nexport const keysOf = <T>(arr: T) => Object.keys(arr) as Array<keyof T>\n\nexport function useGlobalConfig(key?: any, defaultValue = undefined) {\n const config = getCurrentInstance()\n ? inject(configProviderContextKey, globalConfig)\n : globalConfig\n if (key) {\n return computed(() => config.value?.[key] ?? defaultValue)\n }\n else {\n return config\n }\n}\n\nfunction mergeConfig(a: any, b: any): any {\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\nexport function provideGlobalConfig(config: any, app?: App, global = false) {\n const inSetup = !!getCurrentInstance()\n const oldConfig = inSetup ? useGlobalConfig() : undefined\n console.log(config, 'app')\n vue2GlobalConfig = config\n\n const provideFn = app?.provide ?? (inSetup ? provide : undefined) as any\n if (!provideFn) {\n console.log(\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)\n return cfg\n return mergeConfig(oldConfig.value, cfg)\n })\n\n provideFn(configProviderContextKey, context)\n provideFn(\n 'locale',\n computed(() => context.value.locale),\n )\n\n provideFn('size', {\n size: computed(() => context.value.size || ''),\n })\n\n if (global || !globalConfig.value) {\n globalConfig.value = context.value\n }\n return context\n}\n\nexport { vue2GlobalConfig }\n"],"names":["configProviderContextKey","globalConfig","vue","vue2GlobalConfig","keysOf","arr","useGlobalConfig","key","defaultValue","config","_a","mergeConfig","a","b","keys","obj","provideGlobalConfig","app","global","inSetup","oldConfig","provideFn","context","cfg"],"mappings":"uGAGAA,EAAA,iBAEAC,EAAAC,EAAA,IAAA,CAAA,CAAA,EAEIC,QAAAA,iBAAAA,CAAAA,EAEG,MAAAC,EAAAC,GAAA,OAAA,KAAAA,CAAA,EAES,SAAAC,EAAAC,EAAAC,EAAA,OAAA,CACd,MAAAC,EAAAP,EAAA,mBAAA,EAAAA,EAAA,OAAAF,EAAAC,CAAA,EAAAA,EAGA,OAAAM,EACEL,EAAA,SAAA,IAAA,OAAA,QAAAQ,EAAAD,EAAA,QAAA,YAAAC,EAAAH,KAAAC,EAAA,EAGAC,CAEJ,CAEA,SAAAE,EAAAC,EAAAC,EAAA,CACE,MAAAC,EAAA,CAAA,GAAA,IAAA,IAAA,CAAA,GAAAV,EAAAQ,CAAA,EAAA,GAAAR,EAAAS,CAAA,CAAA,CAAA,CAAA,EACAE,EAAA,CAAA,EACA,UAAAR,KAAAO,EACEC,EAAAR,CAAA,EAAAM,EAAAN,CAAA,GAAAK,EAAAL,CAAA,EAEF,OAAAQ,CACF,CAEO,SAAAC,EAAAP,EAAAQ,EAAAC,EAAA,GAAA,CACL,MAAAC,EAAA,CAAA,CAAAjB,EAAA,mBAAA,EACAkB,EAAAD,EAAAb,EAAA,EAAA,OAEA,QAAA,iBAAAG,EAEA,MAAAY,GAAAJ,GAAA,YAAAA,EAAA,WAAAE,EAAAjB,EAAA,QAAA,QACA,GAAA,CAAAmB,EAKE,OAGF,MAAAC,EAAApB,EAAA,SAAA,IAAA,CACE,MAAAqB,EAAArB,EAAA,MAAAO,CAAA,EACA,OAAAW,GAAA,MAAAA,EAAA,MAEAT,EAAAS,EAAA,MAAAG,CAAA,EADEA,CACqC,CAAA,EAGzC,OAAAF,EAAArB,EAAAsB,CAAA,EACAD,EAAA,SACEnB,EAAA,SAAA,IAAAoB,EAAA,MAAA,MAAA,CACmC,EAGrCD,EAAA,OAAA,CAAkB,KAAAnB,EAAA,SAAA,IAAAoB,EAAA,MAAA,MAAA,EAAA,CAC6B,CAAA,GAG/CJ,GAAA,CAAAjB,EAAA,SACEA,EAAA,MAAAqB,EAAA,OAEFA,CACF"}