"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useTheme; var _useMemo = _interopRequireDefault(require("rc-util/lib/hooks/useMemo")); var _isEqual = _interopRequireDefault(require("rc-util/lib/isEqual")); var _internal = require("../../theme/internal"); function useTheme(theme, parentTheme) { const themeConfig = theme || {}; const parentThemeConfig = themeConfig.inherit === false || !parentTheme ? _internal.defaultConfig : parentTheme; return (0, _useMemo.default)(() => { if (!theme) { return parentTheme; } // Override const mergedComponents = Object.assign({}, parentThemeConfig.components); Object.keys(theme.components || {}).forEach(componentName => { mergedComponents[componentName] = Object.assign(Object.assign({}, mergedComponents[componentName]), theme.components[componentName]); }); // Base token return Object.assign(Object.assign(Object.assign({}, parentThemeConfig), themeConfig), { token: Object.assign(Object.assign({}, parentThemeConfig.token), themeConfig.token), components: mergedComponents }); }, [themeConfig, parentThemeConfig], (prev, next) => prev.some((prevTheme, index) => { const nextTheme = next[index]; return !(0, _isEqual.default)(prevTheme, nextTheme, true); })); }