From 3ff46c1fbbe9bbc4de466e3a825d681e4aeb91aa Mon Sep 17 00:00:00 2001 From: Artem Butusov Date: Sat, 30 Mar 2019 18:13:32 -0400 Subject: [PATCH 1/2] Added es3 backward compatibility for react helper code --- packages/babel-helpers/src/helpers.js | 3 ++- .../test/fixtures/constant-elements/inline-elements/output.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/babel-helpers/src/helpers.js b/packages/babel-helpers/src/helpers.js index 7faa28a6262e..a7055f0ce025 100644 --- a/packages/babel-helpers/src/helpers.js +++ b/packages/babel-helpers/src/helpers.js @@ -26,13 +26,14 @@ helpers.typeof = helper("7.0.0-beta.0")` } `; +// "for" is reserved keyword in es3 so escapting it here for backward compatibility helpers.jsx = helper("7.0.0-beta.0")` var REACT_ELEMENT_TYPE; export default function _createRawReactElement(type, props, key, children) { if (!REACT_ELEMENT_TYPE) { REACT_ELEMENT_TYPE = ( - typeof Symbol === "function" && Symbol.for && Symbol.for("react.element") + typeof Symbol === "function" && Symbol["for"] && Symbol["for"]("react.element") ) || 0xeac7; } diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/inline-elements/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/inline-elements/output.js index 3ae20e546c19..27a2ad4df045 100644 --- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/inline-elements/output.js +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/inline-elements/output.js @@ -1,6 +1,6 @@ var REACT_ELEMENT_TYPE; -function _jsx(type, props, key, children) { if (!REACT_ELEMENT_TYPE) { REACT_ELEMENT_TYPE = typeof Symbol === "function" && Symbol.for && Symbol.for("react.element") || 0xeac7; } var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = { children: void 0 }; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = new Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; } +function _jsx(type, props, key, children) { if (!REACT_ELEMENT_TYPE) { REACT_ELEMENT_TYPE = typeof Symbol === "function" && Symbol["for"] && Symbol["for"]("react.element") || 0xeac7; } var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = { children: void 0 }; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = new Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; } var _ref = /*#__PURE__*/ From 6baceac7900a0c223791d57193b108b3ec30f250 Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Wed, 3 Jul 2019 09:38:00 -0500 Subject: [PATCH 2/2] tweak comment [skip ci] --- packages/babel-helpers/src/helpers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/babel-helpers/src/helpers.js b/packages/babel-helpers/src/helpers.js index a7055f0ce025..d569fdb8a4cd 100644 --- a/packages/babel-helpers/src/helpers.js +++ b/packages/babel-helpers/src/helpers.js @@ -26,7 +26,7 @@ helpers.typeof = helper("7.0.0-beta.0")` } `; -// "for" is reserved keyword in es3 so escapting it here for backward compatibility +// "for" is a reserved keyword in ES3 so escaping it here for backward compatibility helpers.jsx = helper("7.0.0-beta.0")` var REACT_ELEMENT_TYPE;