@xcritical/theme
Version:
227 lines (205 loc) • 7.05 kB
JavaScript
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