y-markdown
Version:
render markdown in browser
71 lines (51 loc) • 2.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
var _marked = require("marked");
var _marked2 = _interopRequireDefault(_marked);
var _highlight = require("highlight.js");
var _highlight2 = _interopRequireDefault(_highlight);
var _clsx = require("clsx");
var _clsx2 = _interopRequireDefault(_clsx);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
_marked2.default.setOptions({
renderer: new _marked2.default.Renderer(),
highlight: function highlight(code) {
return _highlight2.default.highlight('javascript', code).value;
},
// highlight: (code)=>hljs.highlightAuto(code).value, //高亮语言不明确时的方案
gfm: true, //是否允许 Git Hub标准的markdown.
tables: true, //是否允许支持表格语法。该选项要求 gfm 为true
breaks: false, //是否允许回车换行。该选项要求 gfm 为true
pedantic: false, //是否尽可能地兼容 markdown.pl的晦涩部分。不纠正原始模型任何的不良行为和错误。
sanitize: false, //是否对输出进行过滤(清理),将忽略任何已经输入的html代码(标签)
smartLists: true, //是否使用比原生markdown更时髦的列表。 旧的列表将可能被作为pedantic的处理内容过滤掉.
smartypants: false //是否使用更为时髦的标点,比如在引用语法中加入破折号。
});
function Markdown(_ref) {
var children = _ref.children,
className = _ref.className,
style = _ref.style,
onMarked = _ref.onMarked;
var innerHTML = (0, _react.useMemo)(function () {
return (0, _marked2.default)(children);
}, [children]);
(0, _react.useEffect)(function () {
if (onMarked && innerHTML) onMarked(innerHTML);
}, [onMarked, innerHTML]);
return _react2.default.createElement("div", { dangerouslySetInnerHTML: { __html: innerHTML }, className: (0, _clsx2.default)('y-markdown', className), style: style });
}
var _default = Markdown;
exports.default = _default;
;
var _temp = function () {
if (typeof __REACT_HOT_LOADER__ === 'undefined') {
return;
}
__REACT_HOT_LOADER__.register(Markdown, "Markdown", "entry/component/Markdown.js");
__REACT_HOT_LOADER__.register(_default, "default", "entry/component/Markdown.js");
}();
;