useTheme.js 1.6 KB

123456789101112131415161718192021222324252627282930
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = useTheme;
  7. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  8. var _internal = require("../../theme/internal");
  9. var _vue = require("vue");
  10. function useTheme(theme, parentTheme) {
  11. const themeConfig = (0, _vue.computed)(() => (theme === null || theme === void 0 ? void 0 : theme.value) || {});
  12. const parentThemeConfig = (0, _vue.computed)(() => themeConfig.value.inherit === false || !(parentTheme === null || parentTheme === void 0 ? void 0 : parentTheme.value) ? _internal.defaultConfig : parentTheme.value);
  13. const mergedTheme = (0, _vue.computed)(() => {
  14. if (!(theme === null || theme === void 0 ? void 0 : theme.value)) {
  15. return parentTheme === null || parentTheme === void 0 ? void 0 : parentTheme.value;
  16. }
  17. // Override
  18. const mergedComponents = (0, _extends2.default)({}, parentThemeConfig.value.components);
  19. Object.keys(theme.value.components || {}).forEach(componentName => {
  20. mergedComponents[componentName] = (0, _extends2.default)((0, _extends2.default)({}, mergedComponents[componentName]), theme.value.components[componentName]);
  21. });
  22. // Base token
  23. return (0, _extends2.default)((0, _extends2.default)((0, _extends2.default)({}, parentThemeConfig.value), themeConfig.value), {
  24. token: (0, _extends2.default)((0, _extends2.default)({}, parentThemeConfig.value.token), themeConfig.value.token),
  25. components: mergedComponents
  26. });
  27. });
  28. return mergedTheme;
  29. }