UNPKG

@xcritical/theme

Version:
227 lines (205 loc) 7.05 kB
import get from 'lodash.get'; import isEmpty from 'lodash.isempty'; import memoize from 'micro-memoize'; import { shallowEqual } from 'fast-equals'; import { css } from 'styled-components'; import { mergeDeep } from 'utilitify'; var WHITE = '#FFFFFF'; var BLUE = '#0078FF'; var TEAL_BLUE = '#00CAFF'; var ORANGE = '#FF8F00'; var ROSE_MADDER = '#E71D36'; var GREEN = '#2DD070'; var JUNGLE_GREEN = '#1B998B'; var PORTLAND_ORANGE = '#F46036'; var VERDIGRIS = '#5ABCB9'; var GOLDENROD = '#D5A021'; var PURPLE = '#5A51DE'; var BDAZZLED_BLUE = '#2F6690'; var PINK = '#FF004F'; var RED = '#E3111A'; var BRONZE = '#C67C3B'; var TIFFANY = '#1ACEB3'; var YELLOW = '#FFC800'; var ORCHID = '#B959FF'; var BLACK = ' #000'; var BLACK_RAISIN = '#212734'; var DEFAULT = '#212734'; var BLACK_CHAROCOAL = '#31394C'; var CHAROCOAL = BLACK_CHAROCOAL; var PAYNES_GRAY = '#3D465E'; var GRAY = '#F0F0F0'; var GRAY_BLUE = '#5a6268'; var DARK_LIME = '#28a745'; var BRIGHT_RED = '#dc3545'; var VIVID_YELLOW = '#ffc107'; var STRONG_CYAN = '#17a2b8'; var GRAY_LIGHT = '#f8f9fa'; var PRIMARY = BLUE; var SECONDARY = GRAY_BLUE; var SUCCESS = DARK_LIME; var DANGER = BRIGHT_RED; var WARNING = VIVID_YELLOW; var INFO = STRONG_CYAN; var DARK = PAYNES_GRAY; var LIGHT = GRAY_LIGHT; var colors = { WHITE: WHITE, BLUE: BLUE, TEAL_BLUE: TEAL_BLUE, ORANGE: ORANGE, ROSE_MADDER: ROSE_MADDER, GREEN: GREEN, JUNGLE_GREEN: JUNGLE_GREEN, PORTLAND_ORANGE: PORTLAND_ORANGE, VERDIGRIS: VERDIGRIS, GOLDENROD: GOLDENROD, PURPLE: PURPLE, BDAZZLED_BLUE: BDAZZLED_BLUE, PINK: PINK, RED: RED, BRONZE: BRONZE, TIFFANY: TIFFANY, YELLOW: YELLOW, ORCHID: ORCHID, BLACK: BLACK, BLACK_RAISIN: BLACK_RAISIN, DEFAULT: DEFAULT, BLACK_CHAROCOAL: BLACK_CHAROCOAL, CHAROCOAL: CHAROCOAL, PAYNES_GRAY: PAYNES_GRAY, GRAY: GRAY, GRAY_BLUE: GRAY_BLUE, DARK_LIME: DARK_LIME, BRIGHT_RED: BRIGHT_RED, VIVID_YELLOW: VIVID_YELLOW, STRONG_CYAN: STRONG_CYAN, GRAY_LIGHT: GRAY_LIGHT, PRIMARY: PRIMARY, SECONDARY: SECONDARY, SUCCESS: SUCCESS, DANGER: DANGER, WARNING: WARNING, INFO: INFO, DARK: DARK, LIGHT: LIGHT }; function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _taggedTemplateLiteralLoose(strings, raw) { if (!raw) { raw = strings.slice(0); } strings.raw = raw; return strings; } var _templateObject; var getAppearancePath = function getAppearancePath(appearanceName, propertyPath // eslint-disable-next-line function-paren-newline ) { if (appearanceName === void 0) { appearanceName = 'default'; } var res = ['appearance', appearanceName].concat(Array.isArray(propertyPath) ? propertyPath : [propertyPath]).filter(function (item) { return !!item; }); return res; }; var mergeBaseTheme = /*#__PURE__*/memoize(function (namespace, defaultTheme, theme) { return namespace && theme[namespace] && !isEmpty(theme[namespace]) ? mergeDeep(defaultTheme, theme[namespace]) : defaultTheme; }, { isEqual: shallowEqual }); var getThemedState = function getThemedState(namespace, defaultTheme) { return memoize(function (theme, propertyPath) { if (theme === void 0) { theme = {}; } var componentTheme = mergeBaseTheme(namespace, defaultTheme, theme); return propertyPath ? get(componentTheme, propertyPath) : componentTheme; }, { isEqual: shallowEqual }); }; var compileAppearanceTheme = /*#__PURE__*/memoize(function (namespace, defaultTheme, theme, appearanceName, baseAppearanceName) { var themeExtractor = getThemedState(namespace, defaultTheme); if (appearanceName !== baseAppearanceName) { return mergeDeep(themeExtractor(theme, getAppearancePath(baseAppearanceName)) || {}, themeExtractor(theme, getAppearancePath(appearanceName)) || {}); } return themeExtractor(theme, getAppearancePath(appearanceName)) || {}; }, { isEqual: shallowEqual }); function getStatesTheme(theme, stateName, baseState) { if (baseState === void 0) { baseState = 'default'; } var merged = mergeDeep(get(theme, baseState, {}), get(theme, stateName, {})); return function (propertyPath, defaultValue) { return propertyPath ? get(merged, propertyPath, defaultValue) : merged; }; } function getAppearanceTheme(namespace, defaultTheme) { return memoize(function (theme, appearanceName, propertyPath, baseAppearanceName) { var themeExtractor = getThemedState(namespace, defaultTheme); var compiledTheme = compileAppearanceTheme(namespace, defaultTheme, theme, appearanceName, baseAppearanceName != null ? baseAppearanceName : 'default'); if (propertyPath) { return get(compiledTheme, propertyPath) || themeExtractor(theme, propertyPath); } return compiledTheme; }, { isEqual: shallowEqual }); } var getFontStyle = function getFontStyle(_ref) { var size = _ref.size, weight = _ref.weight, lineHeight = _ref.lineHeight, _ref$lineHeightRatio = _ref.lineHeightRatio, lineHeightRatio = _ref$lineHeightRatio === void 0 ? 1.69 : _ref$lineHeightRatio; return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n ", ";\n ", ";\n"])), weight ? "font-weight: " + weight : null, size ? "font-size: " + size + "px; line-height: " + (lineHeight != null ? lineHeight : lineHeightRatio) + ";" : null); }; var getFontObj = function getFontObj(_temp) { var _ref2 = _temp === void 0 ? {} : _temp, size = _ref2.size, weight = _ref2.weight, lineHeight = _ref2.lineHeight, _ref2$lineHeightRatio = _ref2.lineHeightRatio, lineHeightRatio = _ref2$lineHeightRatio === void 0 ? 1.69 : _ref2$lineHeightRatio; return _extends({}, weight && { fontWeight: weight }, size && { fontSize: size + "px", lineHeight: lineHeight != null ? lineHeight : lineHeightRatio }); }; var rtlSide = function rtlSide(isRTL, property) { if (isRTL) { if (property === 'left') { return 'right'; } if (property === 'right') { return 'left'; } } return property; }; var rtlSwapper = function rtlSwapper(isRTL, left, right) { if (isRTL) { return [right, left]; } return [left, right]; }; export { BDAZZLED_BLUE, BLACK, BLACK_CHAROCOAL, BLACK_RAISIN, BLUE, BRIGHT_RED, BRONZE, CHAROCOAL, DANGER, DARK, DARK_LIME, DEFAULT, GOLDENROD, GRAY, GRAY_BLUE, GRAY_LIGHT, GREEN, INFO, JUNGLE_GREEN, LIGHT, ORANGE, ORCHID, PAYNES_GRAY, PINK, PORTLAND_ORANGE, PRIMARY, PURPLE, RED, ROSE_MADDER, SECONDARY, STRONG_CYAN, SUCCESS, TEAL_BLUE, TIFFANY, VERDIGRIS, VIVID_YELLOW, WARNING, WHITE, YELLOW, colors, compileAppearanceTheme, getAppearancePath, getAppearanceTheme, getFontObj, getFontStyle, getStatesTheme, getThemedState, mergeBaseTheme, rtlSide, rtlSwapper }; //# sourceMappingURL=theme.esm.js.map