diff --git a/packages/babel-helper-module-imports/src/import-injector.js b/packages/babel-helper-module-imports/src/import-injector.js index 81acd472aee5..1da9e1f821c1 100644 --- a/packages/babel-helper-module-imports/src/import-injector.js +++ b/packages/babel-helper-module-imports/src/import-injector.js @@ -89,6 +89,13 @@ export type ImportOptions = { * * false - No particular requirements for context of the access. (Default) */ ensureNoContext: boolean, + + /** + * Define whether the import should be loaded before or after the existing imports. + * "after" is only allowed inside ECMAScript modules, since it's not possible to + * reliably pick the location _after_ require() calls but _before_ other code in CJS. + */ + importPosition: "before" | "after", }; /** @@ -120,6 +127,7 @@ export default class ImportInjector { importingInterop: "babel", ensureLiveReference: false, ensureNoContext: false, + importPosition: "before", }; constructor(path, importedSource, opts) { @@ -200,9 +208,11 @@ export default class ImportInjector { ensureLiveReference, ensureNoContext, nameHint, + importPosition, // Not meant for public usage. Allows code that absolutely must control // ordering to set a specific hoist value on the import nodes. + // This is ignored when "importPosition" is "after". blockHoist, } = opts; @@ -215,6 +225,10 @@ export default class ImportInjector { const isModuleForNode = isMod && importingInterop === "node"; const isModuleForBabel = isMod && importingInterop === "babel"; + if (importPosition === "after" && !isMod) { + throw new Error(`"importPosition": "after" is only supported in modules`); + } + const builder = new ImportBuilder( importedSource, this._programScope, @@ -397,7 +411,7 @@ export default class ImportInjector { const { statements, resultName } = builder.done(); - this._insertStatements(statements, blockHoist); + this._insertStatements(statements, importPosition, blockHoist); if ( (isDefault || isNamed) && @@ -409,20 +423,32 @@ export default class ImportInjector { return resultName; } - _insertStatements(statements, blockHoist = 3) { - statements.forEach(node => { - node._blockHoist = blockHoist; - }); - - const targetPath = this._programPath.get("body").find(p => { - const val = p.node._blockHoist; - return Number.isFinite(val) && val < 4; - }); + _insertStatements(statements, importPosition = "before", blockHoist = 3) { + const body = this._programPath.get("body"); - if (targetPath) { - targetPath.insertBefore(statements); + if (importPosition === "after") { + for (let i = body.length - 1; i >= 0; i--) { + if (body[i].isImportDeclaration()) { + body[i].insertAfter(statements); + return; + } + } } else { - this._programPath.unshiftContainer("body", statements); + statements.forEach(node => { + node._blockHoist = blockHoist; + }); + + const targetPath = body.find(p => { + const val = p.node._blockHoist; + return Number.isFinite(val) && val < 4; + }); + + if (targetPath) { + targetPath.insertBefore(statements); + return; + } } + + this._programPath.unshiftContainer("body", statements); } } diff --git a/packages/babel-helper-module-imports/test/index.js b/packages/babel-helper-module-imports/test/index.js index ada1a24cfd38..7f6a2206c16d 100644 --- a/packages/babel-helper-module-imports/test/index.js +++ b/packages/babel-helper-module-imports/test/index.js @@ -2,18 +2,24 @@ import * as babel from "@babel/core"; import { ImportInjector } from "../"; -function test(sourceType, opts, initializer, expectedCode) { +function test(sourceType, opts, initializer, inputCode, expectedCode) { if (typeof opts === "function") { - expectedCode = initializer; + expectedCode = inputCode; + inputCode = initializer; initializer = opts; opts = null; } + if (expectedCode === undefined) { + expectedCode = inputCode; + inputCode = ""; + } - const result = babel.transform("", { + const result = babel.transform(inputCode, { cwd: __dirname, sourceType, filename: "example" + (sourceType === "module" ? ".mjs" : ".js"), babelrc: false, + configFile: false, plugins: [ function ({ types: t }) { return { @@ -1103,4 +1109,35 @@ describe("@babel/helper-module-imports", () => { }); }); }); + + describe("importPosition: after", () => { + it("works in ES modules", () => { + testModule( + { importPosition: "after" }, + m => m.addNamed("read", "source"), + ` + import f from "foo"; + f(); + import b from "bar"; + b(); + `, + ` + import f from "foo"; + f(); + import b from "bar"; + import { read as _read } from "source"; + b(); + _read; + `, + ); + }); + + it("is disallowed in CJS modules", () => { + expect(() => + testScript({ importPosition: "after" }, m => + m.addNamed("read", "source"), + ), + ).toThrow(`"importPosition": "after" is only supported in modules`); + }); + }); }); diff --git a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/auto-import-dev/output.mjs b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/auto-import-dev/output.mjs index 6d22b1515d23..c6023e66a7ca 100644 --- a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/auto-import-dev/output.mjs +++ b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/auto-import-dev/output.mjs @@ -1,7 +1,7 @@ -import { Fragment as _Fragment } from "react/jsx-dev-runtime"; -import { createElement as _createElement } from "react"; -import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime"; var _jsxFileName = "/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/auto-import-dev/input.js"; +import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime"; +import { createElement as _createElement } from "react"; +import { Fragment as _Fragment } from "react/jsx-dev-runtime"; var x = /*#__PURE__*/_jsxDEV(_Fragment, { children: /*#__PURE__*/_jsxDEV("div", { diff --git a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/self-inside-arrow/output.mjs b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/self-inside-arrow/output.mjs index a7d8f61fd51a..15cd41e5c15e 100644 --- a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/self-inside-arrow/output.mjs +++ b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/self-inside-arrow/output.mjs @@ -1,8 +1,8 @@ -import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime"; - var _jsxFileName = "/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/self-inside-arrow/input.mjs", _this = this; +import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime"; + /*#__PURE__*/ _jsxDEV("div", {}, void 0, false, { fileName: _jsxFileName, diff --git a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/auto-import-dev-windows/output.mjs b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/auto-import-dev-windows/output.mjs index 29953eb85bd7..caf7ad4dc1cb 100644 --- a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/auto-import-dev-windows/output.mjs +++ b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/auto-import-dev-windows/output.mjs @@ -1,7 +1,7 @@ -import { Fragment as _Fragment } from "react/jsx-dev-runtime"; -import { createElement as _createElement } from "react"; -import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime"; var _jsxFileName = "\\packages\\babel-plugin-transform-react-jsx-development\\test\\fixtures\\windows\\auto-import-dev-windows\\input.js"; +import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime"; +import { createElement as _createElement } from "react"; +import { Fragment as _Fragment } from "react/jsx-dev-runtime"; var x = /*#__PURE__*/_jsxDEV(_Fragment, { children: /*#__PURE__*/_jsxDEV("div", { diff --git a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/self-inside-arrow-windows/output.mjs b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/self-inside-arrow-windows/output.mjs index 67fb4e780593..3a3b79db38e5 100644 --- a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/self-inside-arrow-windows/output.mjs +++ b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/self-inside-arrow-windows/output.mjs @@ -1,8 +1,8 @@ -import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime"; - var _jsxFileName = "\\packages\\babel-plugin-transform-react-jsx-development\\test\\fixtures\\windows\\self-inside-arrow-windows\\input.mjs", _this = this; +import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime"; + /*#__PURE__*/ _jsxDEV("div", {}, void 0, false, { fileName: _jsxFileName, diff --git a/packages/babel-plugin-transform-react-jsx/src/create-plugin.js b/packages/babel-plugin-transform-react-jsx/src/create-plugin.js index 14fc82e20dd3..7485cc86b0ba 100644 --- a/packages/babel-plugin-transform-react-jsx/src/create-plugin.js +++ b/packages/babel-plugin-transform-react-jsx/src/create-plugin.js @@ -638,6 +638,7 @@ You can set \`throwIfNamespace: false\` to bypass this warning.`, reference = addNamed(path, importName, actualSource, { importedInterop: "uncompiled", + importPosition: "after", }); set(pass, `imports/${importName}`, reference); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-2/input.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-2/input.mjs new file mode 100644 index 000000000000..f8f6561b2e4c --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-2/input.mjs @@ -0,0 +1,11 @@ +// https://github.com/babel/babel/issues/12522 + +ReactDOM.render( +

Hello, World!

, + document.getElementById('root') +); + +// Imports are hoisted, so this is still ok +import 'react-app-polyfill/ie11'; +import 'react-app-polyfill/stable'; +import ReactDOM from 'react-dom'; diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-2/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-2/output.mjs new file mode 100644 index 000000000000..111ddd3ba39c --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-2/output.mjs @@ -0,0 +1,9 @@ +// https://github.com/babel/babel/issues/12522 +ReactDOM.render( /*#__PURE__*/_jsx("p", { + children: "Hello, World!" +}), document.getElementById('root')); // Imports are hoisted, so this is still ok + +import 'react-app-polyfill/ie11'; +import 'react-app-polyfill/stable'; +import ReactDOM from 'react-dom'; +import { jsx as _jsx } from "react/jsx-runtime"; diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-compiled-to-cjs/input.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-compiled-to-cjs/input.mjs new file mode 100644 index 000000000000..645daee448bf --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-compiled-to-cjs/input.mjs @@ -0,0 +1,10 @@ +// https://github.com/babel/babel/issues/12522 + +import 'react-app-polyfill/ie11'; +import 'react-app-polyfill/stable'; +import ReactDOM from 'react-dom'; + +ReactDOM.render( +

Hello, World!

, + document.getElementById('root') +); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-compiled-to-cjs/options.json b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-compiled-to-cjs/options.json new file mode 100644 index 000000000000..2a211cc5482e --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-compiled-to-cjs/options.json @@ -0,0 +1,7 @@ +{ + "plugins": [ + ["transform-react-jsx", { "runtime": "automatic" }], + "transform-modules-commonjs" + ], + "sourceType": "module" +} diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-compiled-to-cjs/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-compiled-to-cjs/output.js new file mode 100644 index 000000000000..d6fc30116cf9 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-compiled-to-cjs/output.js @@ -0,0 +1,16 @@ +"use strict"; + +require("react-app-polyfill/ie11"); + +require("react-app-polyfill/stable"); + +var _reactDom = _interopRequireDefault(require("react-dom")); + +var _jsxRuntime = require("react/jsx-runtime"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// https://github.com/babel/babel/issues/12522 +_reactDom.default.render( /*#__PURE__*/(0, _jsxRuntime.jsx)("p", { + children: "Hello, World!" +}), document.getElementById('root')); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-script-not-supported/input.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-script-not-supported/input.js new file mode 100644 index 000000000000..2e9a28fc925c --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-script-not-supported/input.js @@ -0,0 +1,10 @@ +// https://github.com/babel/babel/issues/12522 + +require('react-app-polyfill/ie11'); +require('react-app-polyfill/stable'); +const ReactDOM = require('react-dom'); + +ReactDOM.render( +

Hello, World!

, + document.getElementById('root') +); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-script-not-supported/options.json b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-script-not-supported/options.json new file mode 100644 index 000000000000..0ab40c5a69df --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-script-not-supported/options.json @@ -0,0 +1,4 @@ +{ + "plugins": [["transform-react-jsx", { "runtime": "automatic" }]], + "sourceType": "script" +} diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-script-not-supported/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-script-not-supported/output.js new file mode 100644 index 000000000000..40333e930ef3 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills-script-not-supported/output.js @@ -0,0 +1,12 @@ +var _reactJsxRuntime = require("react/jsx-runtime"); + +// https://github.com/babel/babel/issues/12522 +require('react-app-polyfill/ie11'); + +require('react-app-polyfill/stable'); + +const ReactDOM = require('react-dom'); + +ReactDOM.render( /*#__PURE__*/_reactJsxRuntime.jsx("p", { + children: "Hello, World!" +}), document.getElementById('root')); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills/input.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills/input.mjs new file mode 100644 index 000000000000..645daee448bf --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills/input.mjs @@ -0,0 +1,10 @@ +// https://github.com/babel/babel/issues/12522 + +import 'react-app-polyfill/ie11'; +import 'react-app-polyfill/stable'; +import ReactDOM from 'react-dom'; + +ReactDOM.render( +

Hello, World!

, + document.getElementById('root') +); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills/output.mjs new file mode 100644 index 000000000000..dce91bef3b67 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/after-polyfills/output.mjs @@ -0,0 +1,8 @@ +// https://github.com/babel/babel/issues/12522 +import 'react-app-polyfill/ie11'; +import 'react-app-polyfill/stable'; +import ReactDOM from 'react-dom'; +import { jsx as _jsx } from "react/jsx-runtime"; +ReactDOM.render( /*#__PURE__*/_jsx("p", { + children: "Hello, World!" +}), document.getElementById('root')); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/auto-import-react-source-type-module/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/auto-import-react-source-type-module/output.mjs index 3e6a79e53a23..0d5facec86d4 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/auto-import-react-source-type-module/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/auto-import-react-source-type-module/output.mjs @@ -1,7 +1,7 @@ -import { Fragment as _Fragment } from "react/jsx-runtime"; -import { jsxs as _jsxs } from "react/jsx-runtime"; -import { createElement as _createElement } from "react"; import { jsx as _jsx } from "react/jsx-runtime"; +import { createElement as _createElement } from "react"; +import { jsxs as _jsxs } from "react/jsx-runtime"; +import { Fragment as _Fragment } from "react/jsx-runtime"; var x = /*#__PURE__*/_jsx(_Fragment, { children: /*#__PURE__*/_jsxs("div", { diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/react-defined/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/react-defined/output.mjs index bcbd701ce128..1ab24316d881 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/react-defined/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/autoImport/react-defined/output.mjs @@ -1,7 +1,7 @@ -import { jsxs as _jsxs } from "react/jsx-runtime"; -import { createElement as _createElement } from "react"; -import { jsx as _jsx } from "react/jsx-runtime"; import * as react from "react"; +import { jsx as _jsx } from "react/jsx-runtime"; +import { createElement as _createElement } from "react"; +import { jsxs as _jsxs } from "react/jsx-runtime"; var y = react.createElement("div", { foo: 1 }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/concatenates-adjacent-string-literals/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/concatenates-adjacent-string-literals/output.mjs index 9e87d3113349..303129243f5e 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/concatenates-adjacent-string-literals/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/concatenates-adjacent-string-literals/output.mjs @@ -1,5 +1,5 @@ -import { jsxs as _jsxs } from "react/jsx-runtime"; import { jsx as _jsx } from "react/jsx-runtime"; +import { jsxs as _jsxs } from "react/jsx-runtime"; var x = /*#__PURE__*/_jsxs("div", { children: ["foo", "bar", "baz", /*#__PURE__*/_jsx("div", { diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/does-not-add-source-self-automatic/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/does-not-add-source-self-automatic/output.mjs index 3e6a79e53a23..0d5facec86d4 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/does-not-add-source-self-automatic/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/does-not-add-source-self-automatic/output.mjs @@ -1,7 +1,7 @@ -import { Fragment as _Fragment } from "react/jsx-runtime"; -import { jsxs as _jsxs } from "react/jsx-runtime"; -import { createElement as _createElement } from "react"; import { jsx as _jsx } from "react/jsx-runtime"; +import { createElement as _createElement } from "react"; +import { jsxs as _jsxs } from "react/jsx-runtime"; +import { Fragment as _Fragment } from "react/jsx-runtime"; var x = /*#__PURE__*/_jsx(_Fragment, { children: /*#__PURE__*/_jsxs("div", { diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/handle-fragments-with-key/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/handle-fragments-with-key/output.mjs index 93d0763c4e17..6ee47bc2d663 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/handle-fragments-with-key/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/handle-fragments-with-key/output.mjs @@ -1,4 +1,4 @@ -import { jsx as _jsx } from "react/jsx-runtime"; import * as React from "react"; +import { jsx as _jsx } from "react/jsx-runtime"; var x = /*#__PURE__*/_jsx(React.Fragment, {}, "foo"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/handle-fragments-with-no-children/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/handle-fragments-with-no-children/output.mjs index a749832fa170..6a2569fa9d5a 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/handle-fragments-with-no-children/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/handle-fragments-with-no-children/output.mjs @@ -1,4 +1,4 @@ -import { jsx as _jsx } from "react/jsx-runtime"; import { Fragment as _Fragment } from "react/jsx-runtime"; +import { jsx as _jsx } from "react/jsx-runtime"; var x = /*#__PURE__*/_jsx(_Fragment, {}); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/handle-fragments/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/handle-fragments/output.mjs index 3c5c87e94a88..b34f1fa72cf7 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/handle-fragments/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/handle-fragments/output.mjs @@ -1,5 +1,5 @@ -import { Fragment as _Fragment } from "react/jsx-runtime"; import { jsx as _jsx } from "react/jsx-runtime"; +import { Fragment as _Fragment } from "react/jsx-runtime"; var x = /*#__PURE__*/_jsx(_Fragment, { children: /*#__PURE__*/_jsx("div", {}) diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/handle-static-children/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/handle-static-children/output.mjs index 2a1f5868d6d1..b1451ada1901 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/handle-static-children/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/handle-static-children/output.mjs @@ -1,5 +1,5 @@ -import { jsxs as _jsxs } from "react/jsx-runtime"; import { jsx as _jsx } from "react/jsx-runtime"; +import { jsxs as _jsxs } from "react/jsx-runtime"; var x = /*#__PURE__*/_jsxs("div", { children: [/*#__PURE__*/_jsx("span", {}), [/*#__PURE__*/_jsx("span", {}, '0'), /*#__PURE__*/_jsx("span", {}, '1')]] diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/should-allow-nested-fragments/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/should-allow-nested-fragments/output.mjs index 89cc0c22a809..520e6cfe5683 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/should-allow-nested-fragments/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/should-allow-nested-fragments/output.mjs @@ -1,6 +1,6 @@ -import { jsxs as _jsxs } from "react/jsx-runtime"; -import { Fragment as _Fragment } from "react/jsx-runtime"; import { jsx as _jsx } from "react/jsx-runtime"; +import { Fragment as _Fragment } from "react/jsx-runtime"; +import { jsxs as _jsxs } from "react/jsx-runtime"; /*#__PURE__*/ _jsx("div", { diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/should-escape-xhtml-jsxtext/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/should-escape-xhtml-jsxtext/output.mjs index 32cb47cd42ed..4c325c34bd4d 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/should-escape-xhtml-jsxtext/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/should-escape-xhtml-jsxtext/output.mjs @@ -1,5 +1,5 @@ -import { jsxs as _jsxs } from "react/jsx-runtime"; import { jsx as _jsx } from "react/jsx-runtime"; +import { jsxs as _jsxs } from "react/jsx-runtime"; /*#__PURE__*/ _jsx("div", { diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/should-handle-attributed-elements/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/should-handle-attributed-elements/output.mjs index 27287d025dae..a68bb9c1600a 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/should-handle-attributed-elements/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/should-handle-attributed-elements/output.mjs @@ -1,5 +1,5 @@ -import { jsx as _jsx } from "react/jsx-runtime"; import { jsxs as _jsxs } from "react/jsx-runtime"; +import { jsx as _jsx } from "react/jsx-runtime"; var HelloMessage = React.createClass({ displayName: "HelloMessage", render: function () { diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/should-have-correct-comma-in-nested-children/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/should-have-correct-comma-in-nested-children/output.mjs index 616150d3cc8b..ffb137dfab63 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/should-have-correct-comma-in-nested-children/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/should-have-correct-comma-in-nested-children/output.mjs @@ -1,5 +1,5 @@ -import { jsxs as _jsxs } from "react/jsx-runtime"; import { jsx as _jsx } from "react/jsx-runtime"; +import { jsxs as _jsxs } from "react/jsx-runtime"; var x = /*#__PURE__*/_jsxs("div", { children: [/*#__PURE__*/_jsx("div", { diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/should-properly-handle-keys/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/should-properly-handle-keys/output.mjs index 38c7fc736826..3b72b3dc762e 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/should-properly-handle-keys/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react-automatic/should-properly-handle-keys/output.mjs @@ -1,5 +1,5 @@ -import { jsxs as _jsxs } from "react/jsx-runtime"; import { jsx as _jsx } from "react/jsx-runtime"; +import { jsxs as _jsxs } from "react/jsx-runtime"; var x = /*#__PURE__*/_jsxs("div", { children: [/*#__PURE__*/_jsx("div", {}, "1"), /*#__PURE__*/_jsx("div", {