68 lines
2.6 KiB
JavaScript
68 lines
2.6 KiB
JavaScript
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
|
|
/**
|
|
* Copyright (c) Nicolas Gallagher.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
*
|
|
*/
|
|
import normalizeValueWithProperty from './normalizeValueWithProperty';
|
|
import resolveShadowValue from './resolveShadowValue';
|
|
var defaultOffset = {
|
|
height: 0,
|
|
width: 0
|
|
};
|
|
|
|
function boxShadowReducer(resolvedStyle, style) {
|
|
var boxShadow = style.boxShadow;
|
|
var shadow = resolveShadowValue(style);
|
|
|
|
if (shadow != null) {
|
|
resolvedStyle.boxShadow = boxShadow ? boxShadow + ", " + shadow : shadow;
|
|
}
|
|
}
|
|
|
|
function textShadowReducer(resolvedStyle, style) {
|
|
var textShadowColor = style.textShadowColor,
|
|
textShadowOffset = style.textShadowOffset,
|
|
textShadowRadius = style.textShadowRadius;
|
|
|
|
var _ref = textShadowOffset || defaultOffset,
|
|
height = _ref.height,
|
|
width = _ref.width;
|
|
|
|
var radius = textShadowRadius || 0;
|
|
var offsetX = normalizeValueWithProperty(width);
|
|
var offsetY = normalizeValueWithProperty(height);
|
|
var blurRadius = normalizeValueWithProperty(radius);
|
|
var color = normalizeValueWithProperty(textShadowColor, 'textShadowColor');
|
|
|
|
if (color && (height !== 0 || width !== 0 || radius !== 0) && offsetX != null && offsetY != null && blurRadius != null) {
|
|
resolvedStyle.textShadow = offsetX + " " + offsetY + " " + blurRadius + " " + color;
|
|
}
|
|
}
|
|
|
|
var createCompileableStyle = function createCompileableStyle(styles) {
|
|
var shadowColor = styles.shadowColor,
|
|
shadowOffset = styles.shadowOffset,
|
|
shadowOpacity = styles.shadowOpacity,
|
|
shadowRadius = styles.shadowRadius,
|
|
textShadowColor = styles.textShadowColor,
|
|
textShadowOffset = styles.textShadowOffset,
|
|
textShadowRadius = styles.textShadowRadius,
|
|
nextStyles = _objectWithoutPropertiesLoose(styles, ["shadowColor", "shadowOffset", "shadowOpacity", "shadowRadius", "textShadowColor", "textShadowOffset", "textShadowRadius"]);
|
|
|
|
if (shadowColor != null || shadowOffset != null || shadowOpacity != null || shadowRadius != null) {
|
|
boxShadowReducer(nextStyles, styles);
|
|
}
|
|
|
|
if (textShadowColor != null || textShadowOffset != null || textShadowRadius != null) {
|
|
textShadowReducer(nextStyles, styles);
|
|
}
|
|
|
|
return nextStyles;
|
|
};
|
|
|
|
export default createCompileableStyle; |