import * as React from "react";
import HighLight from "@ali-i18n-fe/intl-comp-high-lighter";
import "./index.scss";
import { jsonToJSX } from "./utils";
import { USAGE_DEFAULT_TAB } from "../../constants";
// @ts-ignore
const { Tabs } = window.antd;
export function getReactContent({
isLibraryComponent,
componentProps,
packageName,
componentName,
}) {
let imports = "";
imports += `import ${
isLibraryComponent ? "Components" : "Component"
} from '${packageName}';\n`;
imports += `import React from 'react';\n`;
imports += `import ReactDOM from 'react-dom';\n`;
imports += `\n`;
imports += `// import '${packageName}/dist/index.css';\n`;
imports += `\n`;
if (isLibraryComponent) {
imports += `const Component = Components['${componentName}'];\n`;
}
imports += `\n`;
const { children, ...restProps } = componentProps;
const jsx = jsonToJSX({ type: "Component", props: restProps, children });
imports += `ReactDOM.render(${jsx}, mountNode);\n`;
return imports;
}
export function Usage({
packageName,
isLibraryComponent,
docsRender,
componentName,
componentProps,
}) {
if (!docsRender) {
return null;
}
delete componentProps.itemData;
const dadaSchema = {
uiType: componentName,
...componentProps,
};
const dataSource = [
{
type: "React",
lang: "jsx",
content: getReactContent({
isLibraryComponent,
packageName,
componentProps,
componentName,
}),
},
{
type: "DadaSchema",
lang: "json",
content: JSON.stringify(dadaSchema, null, 2),
},
];
const defaultActiveKey = localStorage.getItem(USAGE_DEFAULT_TAB) || "1";
return (
<>
Usage
{
localStorage.setItem(USAGE_DEFAULT_TAB, tab);
}}
defaultActiveKey={defaultActiveKey}
size="small"
className="usage-container"
>
{dataSource.map(({ lang, type, content }, index) => (
{content}
))}
>
);
}