devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
68 lines (66 loc) • 2.64 kB
JavaScript
/**
* DevExtreme (cjs/ui/html_editor/converters/markdown.js)
* Version: 23.2.6
* Build date: Wed May 01 2024
*
* Copyright (c) 2012 - 2024 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
exports.default = void 0;
var _turndown = _interopRequireDefault(require("turndown"));
var _showdown = _interopRequireDefault(require("showdown"));
var _window = require("../../../core/utils/window");
var _ui = _interopRequireDefault(require("../../widget/ui.errors"));
var _converterController = _interopRequireDefault(require("../converterController"));
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
}
}
let MarkdownConverter = function() {
function MarkdownConverter() {
var _this$_html2Markdown;
const window = (0, _window.getWindow)();
const turndown = window && window.TurndownService || _turndown.default;
const showdown = window && window.showdown || _showdown.default;
if (!turndown) {
throw _ui.default.Error("E1041", "Turndown")
}
if (!showdown) {
throw _ui.default.Error("E1041", "Showdown")
}
this._html2Markdown = new turndown;
if (null !== (_this$_html2Markdown = this._html2Markdown) && void 0 !== _this$_html2Markdown && _this$_html2Markdown.addRule) {
this._html2Markdown.addRule("emptyLine", {
filter: element => "p" === element.nodeName.toLowerCase() && "<br>" === element.innerHTML,
replacement: function() {
return "<br>"
}
});
this._html2Markdown.keep(["table"])
}
this._markdown2Html = new showdown.Converter({
simpleLineBreaks: true,
strikethrough: true,
tables: true
})
}
var _proto = MarkdownConverter.prototype;
_proto.toMarkdown = function(htmlMarkup) {
return this._html2Markdown.turndown(htmlMarkup || "")
};
_proto.toHtml = function(markdownMarkup) {
let markup = this._markdown2Html.makeHtml(markdownMarkup);
if (markup) {
markup = markup.replace(new RegExp("\\r?\\n", "g"), "")
}
return markup
};
return MarkdownConverter
}();
_converterController.default.addConverter("markdown", MarkdownConverter);
var _default = MarkdownConverter;
exports.default = _default;
module.exports = exports.default;
module.exports.default = exports.default;