fix(es/react): Respect import_source in new jsx (#7128)

**Related issue:**

 - Closes https://github.com/swc-project/swc/issues/6987.
This commit is contained in:
magic-akari 2023-03-23 11:58:28 +08:00 committed by GitHub
parent aaaa9caafc
commit 5d7acfd9cb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 59 additions and 4 deletions

View File

@ -7,14 +7,14 @@ Object.defineProperty(exports, "__esModule", {
var _objectSpread = require("@swc/helpers/lib/_object_spread.js").default;
var _objectSpreadProps = require("@swc/helpers/lib/_object_spread_props.js").default;
var _jsxRuntime = require("preact/jsx-runtime");
var _react = require("react");
var _preact = require("preact");
var props = {
answer: 42
};
var a = /*#__PURE__*/ (0, _jsxRuntime.jsx)("div", _objectSpreadProps(_objectSpread({}, props), {
children: "text"
}), "foo");
var b = /*#__PURE__*/ (0, _react.createElement)("div", _objectSpreadProps(_objectSpread({}, props), {
var b = /*#__PURE__*/ (0, _preact.createElement)("div", _objectSpreadProps(_objectSpread({}, props), {
key: "bar"
}), "text");
//// [react.tsx]

View File

@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
value: !0
});
var _objectSpread = require("@swc/helpers/lib/_object_spread.js").default, _objectSpreadProps = require("@swc/helpers/lib/_object_spread_props.js").default;
require("preact/jsx-runtime"), require("react");
require("preact/jsx-runtime"), require("preact");
var props = {
answer: 42
};

View File

@ -993,7 +993,7 @@ where
src: Str {
span: DUMMY_SP,
raw: None,
value: "react".into(),
value: self.import_source.clone(),
}
.into(),
type_only: Default::default(),

View File

@ -0,0 +1,24 @@
import { isValidElement, Children } from "react";
import * as styles from "./CheckmarkList.styles";
const CheckmarkList = ({ children}) => {
const listItems = () =>
Children.map(children, (child, index) => {
if (!isValidElement(child)) {
return null;
}
const { children: liChildren, css: liCss, ...otherProps } = child.props;
return (
<li {...otherProps} key={`checkmark-list-item-${index}`} css={[styles.listItem, liCss]}>
{liChildren}
</li>
);
});
return <ul css={styles.list}>{listItems()}</ul>;
};
export { CheckmarkList };

View File

@ -0,0 +1,6 @@
{
"runtime": "automatic",
"importSource": "@emotion/react",
"pragma": "React.createElement",
"pragmaFrag": "React.Fragment"
}

View File

@ -0,0 +1,25 @@
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
import { createElement as _createElement } from "@emotion/react";
import { isValidElement, Children } from "react";
import * as styles from "./CheckmarkList.styles";
const CheckmarkList = ({ children })=>{
const listItems = ()=>Children.map(children, (child, index)=>{
if (!/*#__PURE__*/ isValidElement(child)) {
return null;
}
const { children: liChildren , css: liCss , ...otherProps } = child.props;
return /*#__PURE__*/ _createElement("li", {
...otherProps,
key: `checkmark-list-item-${index}`,
css: [
styles.listItem,
liCss
]
}, liChildren);
});
return /*#__PURE__*/ _jsx("ul", {
css: styles.list,
children: listItems()
});
};
export { CheckmarkList };