index.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. require('../../tokens/index.js');
  5. require('../../utils/index.js');
  6. var configProvider = require('../../tokens/config-provider.js');
  7. var error = require('../../utils/error.js');
  8. var objects = require('../../utils/objects.js');
  9. const globalConfig = vue.ref();
  10. function useGlobalConfig(key, defaultValue = void 0) {
  11. const config = vue.getCurrentInstance() ? vue.inject(configProvider.configProviderContextKey, globalConfig) : globalConfig;
  12. if (key) {
  13. return vue.computed(() => {
  14. var _a, _b;
  15. return (_b = (_a = config.value) == null ? void 0 : _a[key]) != null ? _b : defaultValue;
  16. });
  17. } else {
  18. return config;
  19. }
  20. }
  21. const provideGlobalConfig = (config, app, global = false) => {
  22. var _a;
  23. const inSetup = !!vue.getCurrentInstance();
  24. const oldConfig = inSetup ? useGlobalConfig() : void 0;
  25. const provideFn = (_a = app == null ? void 0 : app.provide) != null ? _a : inSetup ? vue.provide : void 0;
  26. if (!provideFn) {
  27. error.debugWarn("provideGlobalConfig", "provideGlobalConfig() can only be used inside setup().");
  28. return;
  29. }
  30. const context = vue.computed(() => {
  31. const cfg = vue.unref(config);
  32. if (!(oldConfig == null ? void 0 : oldConfig.value))
  33. return cfg;
  34. return mergeConfig(oldConfig.value, cfg);
  35. });
  36. provideFn(configProvider.configProviderContextKey, context);
  37. if (global || !globalConfig.value) {
  38. globalConfig.value = context.value;
  39. }
  40. return context;
  41. };
  42. const mergeConfig = (a, b) => {
  43. var _a;
  44. const keys = [.../* @__PURE__ */ new Set([...objects.keysOf(a), ...objects.keysOf(b)])];
  45. const obj = {};
  46. for (const key of keys) {
  47. obj[key] = (_a = b[key]) != null ? _a : a[key];
  48. }
  49. return obj;
  50. };
  51. exports.provideGlobalConfig = provideGlobalConfig;
  52. exports.useGlobalConfig = useGlobalConfig;
  53. //# sourceMappingURL=index.js.map