import * as React from 'react'; import BaseComponent from '../_base/baseComponent'; import MarkdownRenderFoundation, { MarkdownRenderAdapter, MarkdownRenderBaseProps, MarkdownRenderBaseState, } from '@douyinfe/semi-foundation/markdownRender/foundation'; import "@douyinfe/semi-foundation/markdownRender/markdownRender.scss"; import { CSSProperties } from 'react'; import * as runtime from 'react/jsx-runtime'; import { cssClasses } from '@douyinfe/semi-foundation/markdownRender/constants'; import * as SemiMarkdownComponents from "./components"; import cls from "classnames"; import PropTypes from 'prop-types'; import { getDefaultPropsFromGlobalConfig } from '../_utils'; export interface MarkdownRenderProps extends MarkdownRenderBaseProps{ style?: CSSProperties; className?: string } export interface MarkdownRenderState extends MarkdownRenderBaseState{ } class MarkdownRender extends BaseComponent { foundation = new MarkdownRenderFoundation(this.adapter) constructor(props: MarkdownRenderProps) { super(props); this.state = { MDXContentComponent: this.foundation.evaluateSync(this.props.raw) }; } static propTypes = { className: PropTypes.string, style: PropTypes.object, format: PropTypes.string, components: PropTypes.any, raw: PropTypes.string, remarkPlugins: PropTypes.arrayOf(PropTypes.object), rehypePlugins: PropTypes.arrayOf(PropTypes.object), remarkGfm: PropTypes.bool, } static __SemiComponentName__ = "MarkdownRender"; static defaultProps = getDefaultPropsFromGlobalConfig(MarkdownRender.__SemiComponentName__, { format: "mdx", remarkGfm: true, }) componentDidUpdate(prevProps: Readonly, prevState: Readonly, snapshot?: any) { if (prevProps.raw !== this.props.raw) { this.setState({ MDXContentComponent: this.foundation.evaluateSync(this.props.raw) }); } } get adapter(): MarkdownRenderAdapter { return { ...super.adapter, getRuntime: () => runtime }; } render() { const ComponentConstructor = this.state.MDXContentComponent; return
; } static defaultComponents = SemiMarkdownComponents; } export default MarkdownRender;