UNPKG

ant-design-vue

Version:

An enterprise-class UI design language and Vue-based implementation

30 lines (29 loc) 1.64 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useTheme; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _internal = require("../../theme/internal"); var _vue = require("vue"); function useTheme(theme, parentTheme) { const themeConfig = (0, _vue.computed)(() => (theme === null || theme === void 0 ? void 0 : theme.value) || {}); const parentThemeConfig = (0, _vue.computed)(() => themeConfig.value.inherit === false || !(parentTheme === null || parentTheme === void 0 ? void 0 : parentTheme.value) ? _internal.defaultConfig : parentTheme.value); const mergedTheme = (0, _vue.computed)(() => { if (!(theme === null || theme === void 0 ? void 0 : theme.value)) { return parentTheme === null || parentTheme === void 0 ? void 0 : parentTheme.value; } // Override const mergedComponents = (0, _extends2.default)({}, parentThemeConfig.value.components); Object.keys(theme.value.components || {}).forEach(componentName => { mergedComponents[componentName] = (0, _extends2.default)((0, _extends2.default)({}, mergedComponents[componentName]), theme.value.components[componentName]); }); // Base token return (0, _extends2.default)((0, _extends2.default)((0, _extends2.default)({}, parentThemeConfig.value), themeConfig.value), { token: (0, _extends2.default)((0, _extends2.default)({}, parentThemeConfig.value.token), themeConfig.value.token), components: mergedComponents }); }); return mergedTheme; }