UNPKG

@ant-design/x-markdown

Version:

placeholder for @ant-design/x-markdown

66 lines (62 loc) 2.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _classnames = _interopRequireDefault(require("classnames")); var _react = _interopRequireDefault(require("react")); var _useXProviderContext = _interopRequireDefault(require("../hooks/use-x-provider-context")); var _core = require("./core"); var _hooks = require("./hooks"); require("./index.less"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const XMarkdown = props => { const { streaming, config, components, paragraphTag, content, children, rootClassName, prefixCls: customizePrefixCls, className, style, openLinksInNewTab, dompurifyConfig } = props; // ============================ style ============================ const { direction: contextDirection, getPrefixCls } = (0, _useXProviderContext.default)(); const prefixCls = getPrefixCls('x-markdown', customizePrefixCls); const mergedCls = (0, _classnames.default)(prefixCls, 'x-markdown', rootClassName, className); const mergedStyle = { direction: contextDirection === 'rtl' ? 'rtl' : 'ltr', ...style }; // ============================ Streaming ============================ const displayContent = (0, _hooks.useStreaming)(content || children || '', streaming); // ============================ Render ============================ if (!displayContent) return null; const parser = new _core.Parser({ markedConfig: config, paragraphTag, openLinksInNewTab }); const renderer = new _core.Renderer({ components: components, dompurifyConfig, streaming }); const htmlString = parser.parse(displayContent); return /*#__PURE__*/_react.default.createElement("div", { className: mergedCls, style: mergedStyle }, renderer.render(htmlString)); }; if (process.env.NODE_ENV !== 'production') { XMarkdown.displayName = 'XMarkdown'; } var _default = exports.default = XMarkdown;