69 lines
1.7 KiB
JavaScript
69 lines
1.7 KiB
JavaScript
/**
|
|
* 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 warning from 'fbjs/lib/warning';
|
|
var invalidShortforms = {
|
|
background: true,
|
|
borderBottom: true,
|
|
borderLeft: true,
|
|
borderRight: true,
|
|
borderTop: true,
|
|
font: true,
|
|
grid: true,
|
|
outline: true,
|
|
textDecoration: true
|
|
};
|
|
|
|
function error(message) {
|
|
warning(false, message);
|
|
}
|
|
|
|
export default function validate(key, styles) {
|
|
var obj = styles[key];
|
|
|
|
for (var k in obj) {
|
|
var prop = k.trim();
|
|
var value = obj[prop];
|
|
var isInvalid = false;
|
|
|
|
if (value === null) {
|
|
continue;
|
|
}
|
|
|
|
if (typeof value === 'string' && value.indexOf('!important') > -1) {
|
|
error("Invalid style declaration \"" + prop + ":" + value + "\". Values cannot include \"!important\"");
|
|
isInvalid = true;
|
|
} else {
|
|
var suggestion = '';
|
|
|
|
if (prop === 'animation' || prop === 'animationName') {
|
|
suggestion = 'Did you mean "animationKeyframes"?'; // } else if (prop === 'boxShadow') {
|
|
// suggestion = 'Did you mean "shadow{Color,Offset,Opacity,Radius}"?';
|
|
|
|
isInvalid = true;
|
|
} else if (prop === 'direction') {
|
|
suggestion = 'Did you mean "writingDirection"?';
|
|
isInvalid = true;
|
|
} else if (prop === 'verticalAlign') {
|
|
suggestion = 'Did you mean "textAlignVertical"?';
|
|
isInvalid = true;
|
|
} else if (invalidShortforms[prop]) {
|
|
suggestion = 'Please use long-form properties.';
|
|
isInvalid = true;
|
|
}
|
|
|
|
if (suggestion !== '') {
|
|
error("Invalid style property of \"" + prop + "\". " + suggestion);
|
|
}
|
|
}
|
|
|
|
if (isInvalid) {
|
|
delete obj[k];
|
|
}
|
|
}
|
|
} |