mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
* Update transforms to handle ES modules
* Update Jest to handle ES modules
* Convert react package to ES modules
* Convert react-art package to ES Modules
* Convert react-call-return package to ES Modules
* Convert react-test-renderer package to ES Modules
* Convert react-cs-renderer package to ES Modules
* Convert react-rt-renderer package to ES Modules
* Convert react-noop-renderer package to ES Modules
* Convert react-dom/server to ES modules
* Convert react-dom/{client,events,test-utils} to ES modules
* Convert react-dom/shared to ES modules
* Convert react-native-renderer to ES modules
* Convert react-reconciler to ES modules
* Convert events to ES modules
* Convert shared to ES modules
* Remove CommonJS support from transforms
* Move ReactDOMFB entry point code into react-dom/src
This is clearer because we can use ES imports in it.
* Fix Rollup shim configuration to work with ESM
* Fix incorrect comment
* Exclude external imports without side effects
* Fix ReactDOM FB build
* Remove TODOs I don’t intend to fix yet
122 lines
3.1 KiB
JavaScript
122 lines
3.1 KiB
JavaScript
/**
|
|
* Copyright (c) 2013-present, Facebook, Inc.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
import emptyFunction from 'fbjs/lib/emptyFunction';
|
|
import camelizeStyleName from 'fbjs/lib/camelizeStyleName';
|
|
import warning from 'fbjs/lib/warning';
|
|
|
|
var warnValidStyle = emptyFunction;
|
|
|
|
if (__DEV__) {
|
|
// 'msTransform' is correct, but the other prefixes should be capitalized
|
|
var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;
|
|
|
|
// style values shouldn't contain a semicolon
|
|
var badStyleValueWithSemicolonPattern = /;\s*$/;
|
|
|
|
var warnedStyleNames = {};
|
|
var warnedStyleValues = {};
|
|
var warnedForNaNValue = false;
|
|
var warnedForInfinityValue = false;
|
|
|
|
var warnHyphenatedStyleName = function(name, getStack) {
|
|
if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
|
|
return;
|
|
}
|
|
|
|
warnedStyleNames[name] = true;
|
|
warning(
|
|
false,
|
|
'Unsupported style property %s. Did you mean %s?%s',
|
|
name,
|
|
camelizeStyleName(name),
|
|
getStack(),
|
|
);
|
|
};
|
|
|
|
var warnBadVendoredStyleName = function(name, getStack) {
|
|
if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
|
|
return;
|
|
}
|
|
|
|
warnedStyleNames[name] = true;
|
|
warning(
|
|
false,
|
|
'Unsupported vendor-prefixed style property %s. Did you mean %s?%s',
|
|
name,
|
|
name.charAt(0).toUpperCase() + name.slice(1),
|
|
getStack(),
|
|
);
|
|
};
|
|
|
|
var warnStyleValueWithSemicolon = function(name, value, getStack) {
|
|
if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {
|
|
return;
|
|
}
|
|
|
|
warnedStyleValues[value] = true;
|
|
warning(
|
|
false,
|
|
"Style property values shouldn't contain a semicolon. " +
|
|
'Try "%s: %s" instead.%s',
|
|
name,
|
|
value.replace(badStyleValueWithSemicolonPattern, ''),
|
|
getStack(),
|
|
);
|
|
};
|
|
|
|
var warnStyleValueIsNaN = function(name, value, getStack) {
|
|
if (warnedForNaNValue) {
|
|
return;
|
|
}
|
|
|
|
warnedForNaNValue = true;
|
|
warning(
|
|
false,
|
|
'`NaN` is an invalid value for the `%s` css style property.%s',
|
|
name,
|
|
getStack(),
|
|
);
|
|
};
|
|
|
|
var warnStyleValueIsInfinity = function(name, value, getStack) {
|
|
if (warnedForInfinityValue) {
|
|
return;
|
|
}
|
|
|
|
warnedForInfinityValue = true;
|
|
warning(
|
|
false,
|
|
'`Infinity` is an invalid value for the `%s` css style property.%s',
|
|
name,
|
|
getStack(),
|
|
);
|
|
};
|
|
|
|
warnValidStyle = function(name, value, getStack) {
|
|
if (name.indexOf('-') > -1) {
|
|
warnHyphenatedStyleName(name, getStack);
|
|
} else if (badVendoredStyleNamePattern.test(name)) {
|
|
warnBadVendoredStyleName(name, getStack);
|
|
} else if (badStyleValueWithSemicolonPattern.test(value)) {
|
|
warnStyleValueWithSemicolon(name, value, getStack);
|
|
}
|
|
|
|
if (typeof value === 'number') {
|
|
if (isNaN(value)) {
|
|
warnStyleValueIsNaN(name, value, getStack);
|
|
} else if (!isFinite(value)) {
|
|
warnStyleValueIsInfinity(name, value, getStack);
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
export default warnValidStyle;
|