@ant-design/x-markdown
Version:
placeholder for @ant-design/x-markdown
66 lines (62 loc) • 2.02 kB
JavaScript
;
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;