* Add JSX Fragments to babel-types * Support JSX fragments in the transform-react-jsx plugin * Add tests JSX fragments * Update helper-builder and transform plugin documentations for jsx fragment * Add generator for jsx fragments * Add test for jsx fragment generator * Split jsx transform example into normal and fragment examples * Remove unnecessary fields from ElementState in babel-helper-builder-react-jsx * inline [skip ci]
30 lines
681 B
JavaScript
30 lines
681 B
JavaScript
import helper from "@babel/helper-builder-react-jsx";
|
|
|
|
export default function({ types: t }) {
|
|
return {
|
|
manipulateOptions(opts, parserOpts) {
|
|
parserOpts.plugins.push("jsx");
|
|
},
|
|
|
|
visitor: helper({
|
|
pre(state) {
|
|
state.callee = state.tagExpr;
|
|
},
|
|
|
|
post(state) {
|
|
if (t.react.isCompatTag(state.tagName)) {
|
|
state.call = t.callExpression(
|
|
t.memberExpression(
|
|
t.memberExpression(t.identifier("React"), t.identifier("DOM")),
|
|
state.tagExpr,
|
|
t.isLiteral(state.tagExpr),
|
|
),
|
|
state.args,
|
|
);
|
|
}
|
|
},
|
|
compat: true,
|
|
}),
|
|
};
|
|
}
|