UNPKG

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.38 kB
{"version":3,"file":"useGlobalConfig.mjs","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","ref","vue2GlobalConfig","keysOf","arr","useGlobalConfig","key","defaultValue","config","getCurrentInstance","inject","computed","_a","mergeConfig","a","b","keys","obj","provideGlobalConfig","app","global","inSetup","oldConfig","provideFn","provide","context","cfg","unref"],"mappings":";AAGA,MAAAA,IAAA,kBAEAC,IAAAC,EAAA,CAAA,CAAA;AAEA,IAAAC,IAAA,CAAA;AAEO,MAAAC,IAAA,CAAAC,MAAA,OAAA,KAAAA,CAAA;AAES,SAAAC,EAAAC,GAAAC,IAAA,QAAA;AACd,QAAAC,IAAAC,EAAA,IAAAC,EAAAX,GAAAC,CAAA,IAAAA;AAGA,SAAAM,IACEK,EAAA,MAAA;;AAAA,aAAAC,IAAAJ,EAAA,UAAA,gBAAAI,EAAAN,OAAAC;AAAA,GAAA,IAGAC;AAEJ;AAEA,SAAAK,EAAAC,GAAAC,GAAA;AACE,QAAAC,IAAA,CAAA,GAAA,oBAAA,IAAA,CAAA,GAAAb,EAAAW,CAAA,GAAA,GAAAX,EAAAY,CAAA,CAAA,CAAA,CAAA,GACAE,IAAA,CAAA;AACA,aAAAX,KAAAU;AACE,IAAAC,EAAAX,CAAA,IAAAS,EAAAT,CAAA,KAAAQ,EAAAR,CAAA;AAEF,SAAAW;AACF;AAEO,SAAAC,EAAAV,GAAAW,GAAAC,IAAA,IAAA;AACL,QAAAC,IAAA,CAAA,CAAAZ,EAAA,GACAa,IAAAD,IAAAhB,EAAA,IAAA;AAEA,EAAAH,IAAAM;AAEA,QAAAe,KAAAJ,KAAA,gBAAAA,EAAA,aAAAE,IAAAG,IAAA;AACA,MAAA,CAAAD;AAKE;AAGF,QAAAE,IAAAd,EAAA,MAAA;AACE,UAAAe,IAAAC,EAAAnB,CAAA;AACA,WAAAc,KAAA,QAAAA,EAAA,QAEAT,EAAAS,EAAA,OAAAI,CAAA,IADEA;AAAA,EACqC,CAAA;AAGzC,SAAAH,EAAAxB,GAAA0B,CAAA,GACAF;AAAA,IAAA;AAAA,IACEZ,EAAA,MAAAc,EAAA,MAAA,MAAA;AAAA,EACmC,GAGrCF,EAAA,QAAA;AAAA,IAAkB,MAAAZ,EAAA,MAAAc,EAAA,MAAA,QAAA,EAAA;AAAA,EAC6B,CAAA,IAG/CL,KAAA,CAAApB,EAAA,WACEA,EAAA,QAAAyB,EAAA,QAEFA;AACF;"}