Mark transpiled JSX elements as pure (#11126)
* Mark transpiled JSX elements as pure * Avoid duble annotation * Add "pure" option to the React preset * Fix generator indentation * Update tests * Add tests for the "pure" option * Update windows fixtures
This commit is contained in:
@@ -4,6 +4,8 @@ import { declare } from "@babel/helper-plugin-utils";
|
||||
import { types as t } from "@babel/core";
|
||||
|
||||
export default declare((api, options) => {
|
||||
const PURE_ANNOTATION = options.pure;
|
||||
|
||||
const visitor = helper(api, {
|
||||
pre(state) {
|
||||
const tagName = state.tagName;
|
||||
@@ -20,6 +22,9 @@ export default declare((api, options) => {
|
||||
state.createElementCallee = pass.get(
|
||||
"@babel/plugin-react-jsx/createElementIdentifier",
|
||||
)();
|
||||
|
||||
state.pure =
|
||||
PURE_ANNOTATION ?? !pass.get("@babel/plugin-react-jsx/pragmaSet");
|
||||
} else {
|
||||
state.jsxCallee = pass.get("@babel/plugin-react-jsx/jsxIdentifier")();
|
||||
state.jsxStaticCallee = pass.get(
|
||||
@@ -28,6 +33,10 @@ export default declare((api, options) => {
|
||||
state.createElementCallee = pass.get(
|
||||
"@babel/plugin-react-jsx/createElementIdentifier",
|
||||
)();
|
||||
|
||||
state.pure =
|
||||
PURE_ANNOTATION ??
|
||||
!pass.get("@babel/plugin-react-jsx/importSourceSet");
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user