From de46827be7bef5c235d5045669f7359090d51ddc Mon Sep 17 00:00:00 2001 From: Andrew Levine Date: Mon, 24 Oct 2016 09:23:43 -0500 Subject: [PATCH] Handle remapping of JSXIdentifier to MemberExpression in CommonJS transform. Closes #3728 (#4763) --- .../src/index.js | 3 +++ .../fixtures/inline-elements/member-expression/actual.js | 2 ++ .../inline-elements/member-expression/expected.js | 9 +++++++++ .../inline-elements/member-expression/options.json | 9 +++++++++ 4 files changed, 23 insertions(+) create mode 100644 packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/member-expression/actual.js create mode 100644 packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/member-expression/expected.js create mode 100644 packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/member-expression/options.json diff --git a/packages/babel-plugin-transform-es2015-modules-commonjs/src/index.js b/packages/babel-plugin-transform-es2015-modules-commonjs/src/index.js index 238077610f..8d3351bfa9 100644 --- a/packages/babel-plugin-transform-es2015-modules-commonjs/src/index.js +++ b/packages/babel-plugin-transform-es2015-modules-commonjs/src/index.js @@ -59,6 +59,9 @@ export default function () { if (path.parentPath.isCallExpression({ callee: path.node })) { path.replaceWith(t.sequenceExpression([t.numericLiteral(0), remap])); + } else if (path.isJSXIdentifier() && t.isMemberExpression(remap)) { + const { object, property } = remap; + path.replaceWith(t.JSXMemberExpression(t.JSXIdentifier(object.name), t.JSXIdentifier(property.name))); } else { path.replaceWith(remap); } diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/member-expression/actual.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/member-expression/actual.js new file mode 100644 index 0000000000..322b407c90 --- /dev/null +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/member-expression/actual.js @@ -0,0 +1,2 @@ +import { Modal } from "react-bootstrap"; +export default CustomModal = () => foobar; diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/member-expression/expected.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/member-expression/expected.js new file mode 100644 index 0000000000..6ef0c7a8e7 --- /dev/null +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/member-expression/expected.js @@ -0,0 +1,9 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _reactBootstrap = require("react-bootstrap"); + +exports.default = CustomModal = () => babelHelpers.jsx(_reactBootstrap.Modal.Header, {}, void 0, "foobar"); \ No newline at end of file diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/member-expression/options.json b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/member-expression/options.json new file mode 100644 index 0000000000..64873e2e87 --- /dev/null +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/member-expression/options.json @@ -0,0 +1,9 @@ +{ + "plugins": [ + "external-helpers", + "syntax-jsx", + "transform-react-inline-elements", + "transform-react-jsx", + "transform-es2015-modules-commonjs" + ] +}