// node_modules/orderedmap/dist/index.js
function OrderedMap(content) {
this.content = content;
}
OrderedMap.prototype = {
constructor: OrderedMap,
find: function(key) {
for (var i = 0; i < this.content.length; i += 2)
if (this.content[i] === key) return i;
return -1;
},
// :: (string) → ?any
// Retrieve the value stored under `key`, or return undefined when
// no such key exists.
get: function(key) {
var found2 = this.find(key);
return found2 == -1 ? void 0 : this.content[found2 + 1];
},
// :: (string, any, ?string) → OrderedMap
// Create a new map by replacing the value of `key` with a new
// value, or adding a binding to the end of the map. If `newKey` is
// given, the key of the binding will be replaced with that key.
update: function(key, value, newKey) {
var self2 = newKey && newKey != key ? this.remove(newKey) : this;
var found2 = self2.find(key), content = self2.content.slice();
if (found2 == -1) {
content.push(newKey || key, value);
} else {
content[found2 + 1] = value;
if (newKey) content[found2] = newKey;
}
return new OrderedMap(content);
},
// :: (string) → OrderedMap
// Return a map with the given key removed, if it existed.
remove: function(key) {
var found2 = this.find(key);
if (found2 == -1) return this;
var content = this.content.slice();
content.splice(found2, 2);
return new OrderedMap(content);
},
// :: (string, any) → OrderedMap
// Add a new key to the start of the map.
addToStart: function(key, value) {
return new OrderedMap([key, value].concat(this.remove(key).content));
},
// :: (string, any) → OrderedMap
// Add a new key to the end of the map.
addToEnd: function(key, value) {
var content = this.remove(key).content.slice();
content.push(key, value);
return new OrderedMap(content);
},
// :: (string, string, any) → OrderedMap
// Add a key after the given key. If `place` is not found, the new
// key is added to the end.
addBefore: function(place, key, value) {
var without = this.remove(key), content = without.content.slice();
var found2 = without.find(place);
content.splice(found2 == -1 ? content.length : found2, 0, key, value);
return new OrderedMap(content);
},
// :: ((key: string, value: any))
// Call the given function for each key/value pair in the map, in
// order.
forEach: function(f) {
for (var i = 0; i < this.content.length; i += 2)
f(this.content[i], this.content[i + 1]);
},
// :: (union
";
function isPositionInBox(style, offsetX, offsetY) {
var left = parseInt(style.left, 10);
var top2 = parseInt(style.top, 10);
var width = parseInt(style.width, 10) + parseInt(style.paddingLeft, 10) + parseInt(style.paddingRight, 10);
var height = parseInt(style.height, 10) + parseInt(style.paddingTop, 10) + parseInt(style.paddingBottom, 10);
return offsetX >= left && offsetX <= left + width && offsetY >= top2 && offsetY <= top2 + height;
}
var CLS_PREFIX = "toastui-editor-";
function cls() {
var names = [];
for (var _i = 0; _i < arguments.length; _i++) {
names[_i] = arguments[_i];
}
var result = [];
for (var _a = 0, names_1 = names; _a < names_1.length; _a++) {
var name_1 = names_1[_a];
var className = void 0;
if (Array.isArray(name_1)) {
className = name_1[0] ? name_1[1] : null;
} else {
className = name_1;
}
if (className) {
result.push("" + CLS_PREFIX + className);
}
}
return result.join(" ");
}
function clsWithMdPrefix() {
var names = [];
for (var _i = 0; _i < arguments.length; _i++) {
names[_i] = arguments[_i];
}
return names.map(function(className) {
return CLS_PREFIX + "md-" + className;
}).join(" ");
}
function isTextNode(node) {
return (node === null || node === void 0 ? void 0 : node.nodeType) === Node.TEXT_NODE;
}
function isElemNode(node) {
return node && node.nodeType === Node.ELEMENT_NODE;
}
function findNodes(element, selector) {
var nodeList = toArray_1(element.querySelectorAll(selector));
if (nodeList.length) {
return nodeList;
}
return [];
}
function appendNodes(node, nodesToAppend) {
nodesToAppend = isArray_1(nodesToAppend) ? toArray_1(nodesToAppend) : [nodesToAppend];
nodesToAppend.forEach(function(nodeToAppend) {
node.appendChild(nodeToAppend);
});
}
function insertBeforeNode(insertedNode, node) {
if (node.parentNode) {
node.parentNode.insertBefore(insertedNode, node);
}
}
function removeNode$1(node) {
if (node.parentNode) {
node.parentNode.removeChild(node);
}
}
function unwrapNode(node) {
var result = [];
while (node.firstChild) {
result.push(node.firstChild);
if (node.parentNode) {
node.parentNode.insertBefore(node.firstChild, node);
}
}
removeNode$1(node);
return result;
}
function toggleClass(element, className, state) {
if (isUndefined_1(state)) {
state = !hasClass_1(element, className);
}
var toggleFn = state ? addClass_1 : removeClass_1;
toggleFn(element, className);
}
function createElementWith(contents, target2) {
var container = document.createElement("div");
if (isString_1(contents)) {
container.innerHTML = contents;
} else {
container.appendChild(contents);
}
var firstChild = container.firstChild;
if (target2) {
target2.appendChild(firstChild);
}
return firstChild;
}
function getOuterWidth(el2) {
var computed = window.getComputedStyle(el2);
return ["margin-left", "margin-right"].reduce(function(acc, type) {
return acc + parseInt(computed.getPropertyValue(type), 10);
}, 0) + el2.offsetWidth;
}
function closest(node, found2) {
var condition;
if (isString_1(found2)) {
condition = function(target2) {
return matches_1(target2, found2);
};
} else {
condition = function(target2) {
return target2 === found2;
};
}
while (node && node !== document) {
if (isElemNode(node) && condition(node)) {
return node;
}
node = node.parentNode;
}
return null;
}
function getTotalOffset(el2, root) {
var offsetTop = 0;
var offsetLeft = 0;
while (el2 && el2 !== root) {
var top_1 = el2.offsetTop, left = el2.offsetLeft, offsetParent = el2.offsetParent;
offsetTop += top_1;
offsetLeft += left;
if (offsetParent === root.offsetParent) {
break;
}
el2 = el2.offsetParent;
}
return { offsetTop, offsetLeft };
}
function setAttributes(attributes, element) {
Object.keys(attributes).forEach(function(attrName) {
if (isNil(attributes[attrName])) {
element.removeAttribute(attrName);
} else {
element.setAttribute(attrName, attributes[attrName]);
}
});
}
function replaceBRWithEmptyBlock(html2) {
var replacedHTML = html2.replace(/
<\/p>/gi, "
");
var reHTMLTag2 = new RegExp(HTML_TAG, "ig");
var htmlTagMatched = replacedHTML.match(reHTMLTag2);
htmlTagMatched === null || htmlTagMatched === void 0 ? void 0 : htmlTagMatched.forEach(function(htmlTag, index2) {
if (reBR.test(htmlTag)) {
var alternativeTag = ALTERNATIVE_TAG_FOR_BR;
if (index2) {
var prevTag = htmlTagMatched[index2 - 1];
var openTagMatched = prevTag.match(OPEN_TAG);
if (openTagMatched && !/br/i.test(openTagMatched[1])) {
var tagName = openTagMatched[1];
alternativeTag = "" + tagName + "><" + tagName + ">";
}
}
replacedHTML = replacedHTML.replace(reBR, alternativeTag);
}
});
return replacedHTML;
}
function removeProseMirrorHackNodes(html2) {
var reProseMirrorImage = //g;
var reProseMirrorTrailingBreak = / class="ProseMirror-trailingBreak"/g;
var resultHTML = html2;
resultHTML = resultHTML.replace(reProseMirrorImage, "");
resultHTML = resultHTML.replace(reProseMirrorTrailingBreak, "");
return resultHTML;
}
var pluginKey$1 = new PluginKey("widget");
var MARGIN = 5;
var PopupWidget = (
/** @class */
(function() {
function PopupWidget2(view, eventEmitter) {
var _this = this;
this.popup = null;
this.removeWidget = function() {
if (_this.popup) {
_this.rootEl.removeChild(_this.popup);
_this.popup = null;
}
};
this.rootEl = view.dom.parentElement;
this.eventEmitter = eventEmitter;
this.eventEmitter.listen("blur", this.removeWidget);
this.eventEmitter.listen("loadUI", function() {
_this.rootEl = closest(view.dom.parentElement, "." + cls("defaultUI"));
});
this.eventEmitter.listen("removePopupWidget", this.removeWidget);
}
PopupWidget2.prototype.update = function(view) {
var widget = pluginKey$1.getState(view.state);
this.removeWidget();
if (widget) {
var node = widget.node, style = widget.style;
var _a = view.coordsAtPos(widget.pos), top_1 = _a.top, left = _a.left, bottom2 = _a.bottom;
var height = bottom2 - top_1;
var rect2 = this.rootEl.getBoundingClientRect();
var relTopPos = top_1 - rect2.top;
css_1(node, { opacity: "0" });
this.rootEl.appendChild(node);
css_1(node, {
position: "absolute",
left: left - rect2.left + MARGIN + "px",
top: (style === "bottom" ? relTopPos + height - MARGIN : relTopPos - height) + "px",
opacity: "1"
});
this.popup = node;
view.focus();
}
};
PopupWidget2.prototype.destroy = function() {
this.eventEmitter.removeEventHandler("blur", this.removeWidget);
};
return PopupWidget2;
})()
);
function addWidget(eventEmitter) {
return new Plugin({
key: pluginKey$1,
state: {
init: function() {
return null;
},
apply: function(tr) {
return tr.getMeta("widget");
}
},
view: function(editorView) {
return new PopupWidget(editorView, eventEmitter);
}
});
}
function addDefaultImageBlobHook(eventEmitter) {
eventEmitter.listen("addImageBlobHook", function(blob, callback) {
var reader = new FileReader();
reader.onload = function(_a) {
var target2 = _a.target;
return callback(target2.result);
};
reader.readAsDataURL(blob);
});
}
function emitImageBlobHook(eventEmitter, blob, type) {
var hook = function(imageUrl, altText) {
eventEmitter.emit("command", "addImage", {
imageUrl,
altText: altText || blob.name || "image"
});
};
eventEmitter.emit("addImageBlobHook", blob, hook, type);
}
function pasteImageOnly(items) {
var images = toArray_1(items).filter(function(_a) {
var type = _a.type;
return type.indexOf("image") !== -1;
});
if (images.length === 1) {
var item2 = images[0];
if (item2) {
return item2.getAsFile();
}
}
return null;
}
function dropImage(_a) {
var eventEmitter = _a.eventEmitter;
return new Plugin({
props: {
handleDOMEvents: {
drop: function(_, ev) {
var _a2;
var items = (_a2 = ev.dataTransfer) === null || _a2 === void 0 ? void 0 : _a2.files;
if (items) {
forEachArray_1(items, function(item2) {
if (item2.type.indexOf("image") !== -1) {
ev.preventDefault();
ev.stopPropagation();
emitImageBlobHook(eventEmitter, item2, ev.type);
return false;
}
return true;
});
}
return true;
}
}
}
});
}
var Node$2 = (
/** @class */
(function() {
function Node3() {
}
Object.defineProperty(Node3.prototype, "type", {
get: function() {
return "node";
},
enumerable: false,
configurable: true
});
Node3.prototype.setContext = function(context) {
this.context = context;
};
return Node3;
})()
);
function widgetNodeView(pmNode) {
var dom = document.createElement("span");
var node = widgetToDOM(pmNode.attrs.info, pmNode.textContent);
dom.className = "tui-widget";
dom.appendChild(node);
return { dom };
}
function isWidgetNode(pmNode) {
return pmNode.type.name === "widget";
}
var Widget = (
/** @class */
(function(_super) {
__extends$1(Widget2, _super);
function Widget2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Widget2.prototype, "name", {
get: function() {
return "widget";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Widget2.prototype, "schema", {
get: function() {
return {
attrs: {
info: { default: null }
},
group: "inline",
inline: true,
content: "text*",
selectable: false,
atom: true,
toDOM: function() {
return ["span", { class: "tui-widget" }, 0];
},
parseDOM: [
{
tag: "span.tui-widget",
getAttrs: function(dom) {
var text2 = dom.textContent;
var _a = text2.match(/\$\$(widget\d+)/), info = _a[1];
return { info };
}
}
]
};
},
enumerable: false,
configurable: true
});
return Widget2;
})(Node$2)
);
var EditorBase = (
/** @class */
(function() {
function EditorBase2(eventEmitter) {
this.timer = null;
this.el = document.createElement("div");
this.el.className = "toastui-editor";
this.eventEmitter = eventEmitter;
this.placeholder = { text: "" };
}
EditorBase2.prototype.createState = function() {
return EditorState.create({
schema: this.schema,
plugins: this.createPlugins()
});
};
EditorBase2.prototype.initEvent = function() {
var _a = this, eventEmitter = _a.eventEmitter, view = _a.view, editorType = _a.editorType;
view.dom.addEventListener("focus", function() {
return eventEmitter.emit("focus", editorType);
});
view.dom.addEventListener("blur", function() {
return eventEmitter.emit("blur", editorType);
});
};
EditorBase2.prototype.emitChangeEvent = function(tr) {
this.eventEmitter.emit("caretChange", this.editorType);
if (tr.docChanged) {
this.eventEmitter.emit("change", this.editorType);
}
};
Object.defineProperty(EditorBase2.prototype, "defaultPlugins", {
get: function() {
var rules = this.createInputRules();
var plugins = __spreadArray$1(__spreadArray$1([], this.keymaps), [
keymap(__assign$1({ "Shift-Enter": baseKeymap.Enter }, baseKeymap)),
history(),
placeholder(this.placeholder),
addWidget(this.eventEmitter),
dropImage(this.context)
]);
return rules ? plugins.concat(rules) : plugins;
},
enumerable: false,
configurable: true
});
EditorBase2.prototype.createInputRules = function() {
var widgetRules2 = getWidgetRules();
var rules = widgetRules2.map(function(_a) {
var rule = _a.rule;
return new InputRule(rule, function(state, match, start, end) {
var schema = state.schema, tr = state.tr, doc3 = state.doc;
var allMatched = match.input.match(new RegExp(rule, "g"));
var pos = doc3.resolve(start);
var parent = pos.parent;
var count = 0;
if (isWidgetNode(parent)) {
parent = pos.node(pos.depth - 1);
}
parent.forEach(function(child) {
return isWidgetNode(child) && (count += 1);
});
if (allMatched.length > count) {
var content = last$1(allMatched);
var nodes = createNodesWithWidget(content, schema);
return tr.replaceWith(end - content.length + 1, end, nodes);
}
return null;
});
});
return rules.length ? inputRules({ rules }) : null;
};
EditorBase2.prototype.clearTimer = function() {
if (this.timer) {
clearTimeout(this.timer);
this.timer = null;
}
};
EditorBase2.prototype.createSchema = function() {
return new Schema({
nodes: this.specs.nodes,
marks: this.specs.marks
});
};
EditorBase2.prototype.createKeymaps = function(useCommandShortcut) {
var _a = getDefaultCommands(), undo2 = _a.undo, redo2 = _a.redo;
var allKeymaps = this.specs.keymaps(useCommandShortcut);
var historyKeymap = {
"Mod-z": undo2(),
"Shift-Mod-z": redo2()
};
return useCommandShortcut ? allKeymaps.concat(keymap(historyKeymap)) : allKeymaps;
};
EditorBase2.prototype.createCommands = function() {
return this.specs.commands(this.view);
};
EditorBase2.prototype.createPluginProps = function() {
var _this = this;
return this.extraPlugins.map(function(plugin) {
return plugin(_this.eventEmitter);
});
};
EditorBase2.prototype.focus = function() {
var _this = this;
this.clearTimer();
this.timer = setTimeout(function() {
_this.view.focus();
_this.view.dispatch(_this.view.state.tr.scrollIntoView());
});
};
EditorBase2.prototype.blur = function() {
this.view.dom.blur();
};
EditorBase2.prototype.destroy = function() {
var _this = this;
this.clearTimer();
this.view.destroy();
Object.keys(this).forEach(function(prop2) {
delete _this[prop2];
});
};
EditorBase2.prototype.moveCursorToStart = function(focus) {
var tr = this.view.state.tr;
this.view.dispatch(tr.setSelection(createTextSelection(tr, 1)).scrollIntoView());
if (focus) {
this.focus();
}
};
EditorBase2.prototype.moveCursorToEnd = function(focus) {
var tr = this.view.state.tr;
this.view.dispatch(tr.setSelection(createTextSelection(tr, tr.doc.content.size - 1)).scrollIntoView());
if (focus) {
this.focus();
}
};
EditorBase2.prototype.setScrollTop = function(top2) {
this.view.dom.scrollTop = top2;
};
EditorBase2.prototype.getScrollTop = function() {
return this.view.dom.scrollTop;
};
EditorBase2.prototype.setPlaceholder = function(text2) {
this.placeholder.text = text2;
this.view.dispatch(this.view.state.tr.scrollIntoView());
};
EditorBase2.prototype.setHeight = function(height) {
css_1(this.el, { height: height + "px" });
};
EditorBase2.prototype.setMinHeight = function(minHeight) {
css_1(this.el, { minHeight: minHeight + "px" });
};
EditorBase2.prototype.getElement = function() {
return this.el;
};
return EditorBase2;
})()
);
function isFunction(obj) {
return obj instanceof Function;
}
var isFunction_1 = isFunction;
var defaultCommandShortcuts = [
"Enter",
"Shift-Enter",
"Mod-Enter",
"Tab",
"Shift-Tab",
"Delete",
"Backspace",
"Mod-Delete",
"Mod-Backspace",
"ArrowUp",
"ArrowDown",
"ArrowLeft",
"ArrowRight",
"Mod-d",
"Mod-D",
"Alt-ArrowUp",
"Alt-ArrowDown"
];
function execCommand(view, command, payload) {
view.focus();
return command(payload)(view.state, view.dispatch, view);
}
var SpecManager = (
/** @class */
(function() {
function SpecManager2(specs) {
this.specs = specs;
}
Object.defineProperty(SpecManager2.prototype, "nodes", {
get: function() {
return this.specs.filter(function(spec) {
return spec.type === "node";
}).reduce(function(nodes, _a) {
var _b;
var name = _a.name, schema = _a.schema;
return __assign$1(__assign$1({}, nodes), (_b = {}, _b[name] = schema, _b));
}, {});
},
enumerable: false,
configurable: true
});
Object.defineProperty(SpecManager2.prototype, "marks", {
get: function() {
return this.specs.filter(function(spec) {
return spec.type === "mark";
}).reduce(function(marks, _a) {
var _b;
var name = _a.name, schema = _a.schema;
return __assign$1(__assign$1({}, marks), (_b = {}, _b[name] = schema, _b));
}, {});
},
enumerable: false,
configurable: true
});
SpecManager2.prototype.commands = function(view, addedCommands) {
var specCommands = this.specs.filter(function(_a) {
var commands = _a.commands;
return commands;
}).reduce(function(allCommands, spec) {
var commands = {};
var specCommand = spec.commands();
if (isFunction_1(specCommand)) {
commands[spec.name] = function(payload) {
return execCommand(view, specCommand, payload);
};
} else {
Object.keys(specCommand).forEach(function(name) {
commands[name] = function(payload) {
return execCommand(view, specCommand[name], payload);
};
});
}
return __assign$1(__assign$1({}, allCommands), commands);
}, {});
var defaultCommands = getDefaultCommands();
Object.keys(defaultCommands).forEach(function(name) {
specCommands[name] = function(payload) {
return execCommand(view, defaultCommands[name], payload);
};
});
if (addedCommands) {
Object.keys(addedCommands).forEach(function(name) {
specCommands[name] = function(payload) {
return execCommand(view, addedCommands[name], payload);
};
});
}
return specCommands;
};
SpecManager2.prototype.keymaps = function(useCommandShortcut) {
var specKeymaps = this.specs.filter(function(spec) {
return spec.keymaps;
}).map(function(spec) {
return spec.keymaps();
});
return specKeymaps.map(function(keys2) {
if (!useCommandShortcut) {
Object.keys(keys2).forEach(function(key) {
if (!includes(defaultCommandShortcuts, key)) {
delete keys2[key];
}
});
}
return keymap(keys2);
});
};
SpecManager2.prototype.setContext = function(context) {
this.specs.forEach(function(spec) {
spec.setContext(context);
});
};
return SpecManager2;
})()
);
function resolveSelectionPos(selection) {
var from2 = selection.from, to = selection.to;
if (selection instanceof AllSelection) {
return [from2 + 1, to - 1];
}
return [from2, to];
}
function getMdLine(resolvedPos) {
return resolvedPos.index(0) + 1;
}
function getWidgetNodePos(node, chPos, direction) {
if (direction === void 0) {
direction = 1;
}
var additionalPos = 0;
node.forEach(function(child, pos) {
if (isWidgetNode(child) && pos + 2 < chPos) {
additionalPos += 2 * direction;
}
});
return additionalPos;
}
function getEditorToMdPos(doc3, from2, to) {
if (to === void 0) {
to = from2;
}
var collapsed = from2 === to;
var startResolvedPos = doc3.resolve(from2);
var startLine = getMdLine(startResolvedPos);
var endLine = startLine;
var startOffset = startResolvedPos.start(1);
var endOffset = startOffset;
if (!collapsed) {
var endResolvedPos = doc3.resolve(to === doc3.content.size ? to - 1 : to);
endOffset = endResolvedPos.start(1);
endLine = getMdLine(endResolvedPos);
if (endResolvedPos.pos === doc3.content.size) {
to = doc3.content.size - 2;
}
}
var startCh = Math.max(from2 - startOffset + 1, 1);
var endCh = Math.max(to - endOffset + 1, 1);
return [
[startLine, startCh + getWidgetNodePos(doc3.child(startLine - 1), startCh, -1)],
[endLine, endCh + getWidgetNodePos(doc3.child(endLine - 1), endCh, -1)]
];
}
function getStartPosListPerLine(doc3, endIndex) {
var startPosListPerLine = [];
for (var i = 0, pos = 0; i < endIndex; i += 1) {
var child = doc3.child(i);
startPosListPerLine[i] = pos;
pos += child.nodeSize;
}
return startPosListPerLine;
}
function getMdToEditorPos(doc3, startPos, endPos) {
var startPosListPerLine = getStartPosListPerLine(doc3, endPos[0]);
var startIndex = startPos[0] - 1;
var endIndex = endPos[0] - 1;
var startNode = doc3.child(startIndex);
var endNode = doc3.child(endIndex);
var from2 = startPosListPerLine[startIndex];
var to = startPosListPerLine[endIndex];
from2 += startPos[1] + getWidgetNodePos(startNode, startPos[1] - 1);
to += endPos[1] + getWidgetNodePos(endNode, endPos[1] - 1);
return [from2, Math.min(to, doc3.content.size)];
}
function getRangeInfo(selection) {
var $from = selection.$from, $to = selection.$to;
var from2 = selection.from, to = selection.to;
var doc3 = $from.doc;
if (selection instanceof AllSelection) {
$from = doc3.resolve(from2 + 1);
$to = doc3.resolve(to - 1);
}
if ($from.depth === 0) {
$from = doc3.resolve(from2 - 1);
$to = $from;
}
return {
startFromOffset: $from.start(1),
endFromOffset: $to.start(1),
startToOffset: $from.end(1),
endToOffset: $to.end(1),
startIndex: $from.index(0),
endIndex: $to.index(0),
from: $from.pos,
to: $to.pos
};
}
function getNodeContentOffsetRange(doc3, targetIndex) {
var startOffset = 1;
var endOffset = 1;
for (var i = 0, offset = 0; i < doc3.childCount; i += 1) {
var nodeSize2 = doc3.child(i).nodeSize;
startOffset = offset + 1;
endOffset = offset + nodeSize2 - 1;
if (i === targetIndex) {
break;
}
offset += nodeSize2;
}
return { startOffset, endOffset };
}
var HEADING = "heading";
var BLOCK_QUOTE = "blockQuote";
var LIST_ITEM = "listItem";
var TABLE = "table";
var TABLE_CELL = "tableCell";
var CODE_BLOCK = "codeBlock";
var THEMATIC_BREAK = "thematicBreak";
var LINK = "link";
var CODE = "code";
var META = "meta";
var DELIM = "delimiter";
var TASK_DELIM = "taskDelimiter";
var TEXT = "markedText";
var HTML = "html";
var CUSTOM_BLOCK = "customBlock";
var delimSize = {
strong: 2,
emph: 1,
strike: 2
};
function markInfo(start, end, type, attrs) {
return { start, end, spec: { type, attrs } };
}
function heading$1(_a, start, end) {
var level = _a.level, headingType = _a.headingType;
var marks = [markInfo(start, end, HEADING, { level })];
if (headingType === "atx") {
marks.push(markInfo(start, addOffsetPos(start, level), DELIM));
} else {
marks.push(markInfo(setOffsetPos(end, 0), end, HEADING, { seText: true }));
}
return marks;
}
function emphasisAndStrikethrough(_a, start, end) {
var type = _a.type;
var startDelimPos = addOffsetPos(start, delimSize[type]);
var endDelimPos = addOffsetPos(end, -delimSize[type]);
return [
markInfo(startDelimPos, endDelimPos, type),
markInfo(start, startDelimPos, DELIM),
markInfo(endDelimPos, end, DELIM)
];
}
function markLink(start, end, linkTextStart, lastChildCh) {
return [
markInfo(start, end, LINK),
markInfo(setOffsetPos(start, linkTextStart[1] + 1), setOffsetPos(end, lastChildCh), LINK, {
desc: true
}),
markInfo(setOffsetPos(end, lastChildCh + 2), addOffsetPos(end, -1), LINK, { url: true })
];
}
function image$1(_a, start, end) {
var lastChild = _a.lastChild;
var lastChildCh = lastChild ? getMdEndCh(lastChild) + 1 : 3;
var linkTextEnd = addOffsetPos(start, 1);
return __spreadArray$1([markInfo(start, linkTextEnd, META)], markLink(start, end, linkTextEnd, lastChildCh));
}
function link(_a, start, end) {
var lastChild = _a.lastChild, extendedAutolink = _a.extendedAutolink;
var lastChildCh = lastChild ? getMdEndCh(lastChild) + 1 : 2;
return extendedAutolink ? [markInfo(start, end, LINK, { desc: true })] : markLink(start, end, start, lastChildCh);
}
function code(_a, start, end) {
var tickCount = _a.tickCount;
var openDelimEnd = addOffsetPos(start, tickCount);
var closeDelimStart = addOffsetPos(end, -tickCount);
return [
markInfo(start, end, CODE),
markInfo(start, openDelimEnd, CODE, { start: true }),
markInfo(openDelimEnd, closeDelimStart, CODE, { marked: true }),
markInfo(closeDelimStart, end, CODE, { end: true })
];
}
function lineBackground(parent, start, end, prefix) {
var defaultBackground = {
start,
end,
spec: {
attrs: { className: prefix + "-line-background", codeStart: start[0], codeEnd: end[0] }
},
lineBackground: true
};
return parent.type !== "item" && parent.type !== "blockQuote" ? [
__assign$1(__assign$1({}, defaultBackground), { end: start, spec: { attrs: { className: prefix + "-line-background start" } } }),
__assign$1(__assign$1({}, defaultBackground), { start: [Math.min(start[0] + 1, end[0]), start[1]] })
] : null;
}
function codeBlock$1(node, start, end, endLine) {
var fenceOffset = node.fenceOffset, fenceLength = node.fenceLength, fenceChar = node.fenceChar, info = node.info, infoPadding = node.infoPadding, parent = node.parent;
var fenceEnd = fenceOffset + fenceLength;
var marks = [markInfo(setOffsetPos(start, 1), end, CODE_BLOCK)];
if (fenceChar) {
marks.push(markInfo(start, addOffsetPos(start, fenceEnd), DELIM));
}
if (info) {
marks.push(markInfo(addOffsetPos(start, fenceLength), addOffsetPos(start, fenceLength + infoPadding + info.length), META));
}
var codeBlockEnd = "^(\\s{0,4})(" + fenceChar + "{" + fenceLength + ",})";
var reCodeBlockEnd = new RegExp(codeBlockEnd);
if (reCodeBlockEnd.test(endLine)) {
marks.push(markInfo(setOffsetPos(end, 1), end, DELIM));
}
var lineBackgroundMarkInfo = lineBackground(parent, start, end, "code-block");
return lineBackgroundMarkInfo ? marks.concat(lineBackgroundMarkInfo) : marks;
}
function customBlock$2(node, start, end) {
var _a = node, offset = _a.offset, syntaxLength = _a.syntaxLength, info = _a.info, parent = _a.parent;
var syntaxEnd = offset + syntaxLength;
var marks = [markInfo(setOffsetPos(start, 1), end, CUSTOM_BLOCK)];
marks.push(markInfo(start, addOffsetPos(start, syntaxEnd), DELIM));
if (info) {
marks.push(markInfo(addOffsetPos(start, syntaxEnd), addOffsetPos(start, syntaxLength + info.length), META));
}
marks.push(markInfo(setOffsetPos(end, 1), end, DELIM));
var lineBackgroundMarkInfo = lineBackground(parent, start, end, "custom-block");
return lineBackgroundMarkInfo ? marks.concat(lineBackgroundMarkInfo) : marks;
}
function markListItemChildren(node, markType) {
var marks = [];
while (node) {
var type = node.type;
if (type === "paragraph" || type === "codeBlock") {
marks.push(markInfo([getMdStartLine(node), getMdStartCh(node) - 1], [getMdEndLine(node), getMdEndCh(node) + 1], markType));
}
node = node.next;
}
return marks;
}
function markParagraphInBlockQuote(node) {
var marks = [];
while (node) {
marks.push(markInfo([getMdStartLine(node), getMdStartCh(node)], [getMdEndLine(node), getMdEndCh(node) + 1], TEXT));
node = node.next;
}
return marks;
}
function blockQuote$2(node, start, end) {
var marks = node.parent && node.parent.type !== "blockQuote" ? [markInfo(start, end, BLOCK_QUOTE)] : [];
if (node.firstChild) {
var childMarks = [];
if (node.firstChild.type === "paragraph") {
childMarks = markParagraphInBlockQuote(node.firstChild.firstChild);
} else if (node.firstChild.type === "list") {
childMarks = markListItemChildren(node.firstChild, TEXT);
}
marks = __spreadArray$1(__spreadArray$1([], marks), childMarks);
}
return marks;
}
function getSpecOfListItemStyle(node) {
var depth = 0;
while (node.parent.parent && node.parent.parent.type === "item") {
node = node.parent.parent;
depth += 1;
}
var attrs = [{ odd: true }, { even: true }][depth % 2];
return [LIST_ITEM, __assign$1(__assign$1({}, attrs), { listStyle: true })];
}
function item$1(node, start) {
var _a = node.listData, padding = _a.padding, task2 = _a.task;
var spec = getSpecOfListItemStyle(node);
var marks = [markInfo.apply(void 0, __spreadArray$1([start, addOffsetPos(start, padding)], spec))];
if (task2) {
marks.push(markInfo(addOffsetPos(start, padding), addOffsetPos(start, padding + 3), TASK_DELIM));
marks.push(markInfo(addOffsetPos(start, padding + 1), addOffsetPos(start, padding + 2), META));
}
return marks.concat(markListItemChildren(node.firstChild, TEXT));
}
var markNodeFuncMap = {
heading: heading$1,
strong: emphasisAndStrikethrough,
emph: emphasisAndStrikethrough,
strike: emphasisAndStrikethrough,
link,
image: image$1,
code,
codeBlock: codeBlock$1,
blockQuote: blockQuote$2,
item: item$1,
customBlock: customBlock$2
};
var simpleMarkClassNameMap = {
thematicBreak: THEMATIC_BREAK,
table: TABLE,
tableCell: TABLE_CELL,
htmlInline: HTML
};
function getMarkInfo(node, start, end, endLine) {
var type = node.type;
if (isFunction_1(markNodeFuncMap[type])) {
return markNodeFuncMap[type](node, start, end, endLine);
}
if (simpleMarkClassNameMap[type]) {
return [markInfo(start, end, simpleMarkClassNameMap[type])];
}
return null;
}
var removingBackgroundIndexMap = {};
function syntaxHighlight(_a) {
var schema = _a.schema, toastMark = _a.toastMark;
return new Plugin({
appendTransaction: function(transactions, _, newState) {
var tr = transactions[0];
var newTr = newState.tr;
if (tr.docChanged) {
var markInfo_1 = [];
var editResult = tr.getMeta("editResult");
editResult.forEach(function(result) {
var nodes = result.nodes, removedNodeRange = result.removedNodeRange;
if (nodes.length) {
markInfo_1 = markInfo_1.concat(getMarkForRemoving(newTr, nodes));
for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {
var parent_1 = nodes_1[_i];
var walker = parent_1.walker();
var event_1 = walker.next();
while (event_1) {
var node = event_1.node, entering = event_1.entering;
if (entering) {
markInfo_1 = markInfo_1.concat(getMarkForAdding(node, toastMark));
}
event_1 = walker.next();
}
}
} else if (removedNodeRange) {
var maxIndex = newTr.doc.childCount - 1;
var _a2 = removedNodeRange.line, startLine = _a2[0], endLine = _a2[1];
var startIndex = Math.min(startLine, maxIndex);
var endIndex = Math.min(endLine, maxIndex);
for (var i = startIndex; i <= endIndex; i += 1) {
removingBackgroundIndexMap[i] = true;
}
}
});
appendMarkTr(newTr, schema, markInfo_1);
}
return newTr.setMeta("widget", tr.getMeta("widget"));
}
});
}
function isDifferentBlock(doc3, index2, attrs) {
return Object.keys(attrs).some(function(name) {
return attrs[name] !== doc3.child(index2).attrs[name];
});
}
function addLineBackground(tr, doc3, paragraph2, blockPosInfo, attrs) {
if (attrs === void 0) {
attrs = {};
}
var startIndex = blockPosInfo.startIndex, endIndex = blockPosInfo.endIndex, from2 = blockPosInfo.from, to = blockPosInfo.to;
var shouldChangeBlockType = false;
for (var i = startIndex; i <= endIndex; i += 1) {
delete removingBackgroundIndexMap[i];
shouldChangeBlockType = isDifferentBlock(doc3, i, attrs);
}
if (shouldChangeBlockType) {
tr.setBlockType(from2, to, paragraph2, attrs);
}
}
function appendMarkTr(tr, schema, marks) {
var doc3 = tr.doc;
var paragraph2 = schema.nodes.paragraph;
var startPosListPerLine = getStartPosListPerLine(doc3, doc3.childCount);
marks.forEach(function(_a) {
var start = _a.start, end = _a.end, spec = _a.spec, lineBackground2 = _a.lineBackground;
var startIndex = Math.min(start[0], doc3.childCount) - 1;
var endIndex = Math.min(end[0], doc3.childCount) - 1;
var startNode = doc3.child(startIndex);
var endNode = doc3.child(endIndex);
var from2 = startPosListPerLine[startIndex];
var to = startPosListPerLine[endIndex];
from2 += start[1] + getWidgetNodePos(startNode, start[1] - 1);
to += end[1] + getWidgetNodePos(endNode, end[1] - 1);
if (spec) {
if (lineBackground2) {
var posInfo = { from: from2, to, startIndex, endIndex };
addLineBackground(tr, doc3, paragraph2, posInfo, spec.attrs);
} else {
tr.addMark(from2, to, schema.mark(spec.type, spec.attrs));
}
} else {
tr.removeMark(from2, to);
}
});
removeBlockBackground(tr, startPosListPerLine, paragraph2);
}
function removeBlockBackground(tr, startPosListPerLine, paragraph2) {
Object.keys(removingBackgroundIndexMap).forEach(function(index2) {
var startIndex = Number(index2);
var endIndex = Math.min(Number(index2) + 1, tr.doc.childCount - 1);
var from2 = startPosListPerLine[startIndex];
var to = startPosListPerLine[endIndex] - 1;
if (startIndex === endIndex) {
to += 2;
}
tr.setBlockType(from2, to, paragraph2);
});
}
function cacheIndexToRemoveBackground(doc3, start, end) {
var skipLines = [];
removingBackgroundIndexMap = {};
for (var i = start[0] - 1; i < end[0]; i += 1) {
var node = doc3.child(i);
var codeEnd = node.attrs.codeEnd;
var codeStart = node.attrs.codeStart;
if (codeStart && codeEnd && !includes(skipLines, codeStart)) {
skipLines.push(codeStart);
codeEnd = Math.min(codeEnd, doc3.childCount);
var startIndex = codeStart - 1;
var endIndex = end[0];
for (var index2 = startIndex; index2 < endIndex; index2 += 1) {
removingBackgroundIndexMap[index2] = true;
}
}
}
}
function getMarkForRemoving(_a, nodes) {
var doc3 = _a.doc;
var start = nodes[0].sourcepos[0];
var _b = last$1(nodes).sourcepos, end = _b[1];
var startPos = [start[0], start[1]];
var endPos = [end[0], end[1] + 1];
var marks = [];
cacheIndexToRemoveBackground(doc3, start, end);
marks.push({ start: startPos, end: endPos });
return marks;
}
function getMarkForAdding(node, toastMark) {
var lineTexts = toastMark.getLineTexts();
var startPos = [getMdStartLine(node), getMdStartCh(node)];
var endPos = [getMdEndLine(node), getMdEndCh(node) + 1];
var markInfo2 = getMarkInfo(node, startPos, endPos, lineTexts[endPos[0] - 1]);
return markInfo2 !== null && markInfo2 !== void 0 ? markInfo2 : [];
}
var defaultToolbarStateKeys = [
"taskList",
"orderedList",
"bulletList",
"table",
"strong",
"emph",
"strike",
"heading",
"thematicBreak",
"blockQuote",
"code",
"codeBlock",
"indent",
"outdent"
];
function getToolbarStateType$1(mdNode) {
var type = mdNode.type;
if (isListNode$1(mdNode)) {
if (mdNode.listData.task) {
return "taskList";
}
return mdNode.listData.type === "ordered" ? "orderedList" : "bulletList";
}
if (type.indexOf("table") !== -1) {
return "table";
}
if (!includes(defaultToolbarStateKeys, type)) {
return null;
}
return type;
}
function getToolbarState$1(targetNode) {
var toolbarState = {
indent: { active: false, disabled: true },
outdent: { active: false, disabled: true }
};
var listEnabled = true;
traverseParentNodes(targetNode, function(mdNode) {
var type = getToolbarStateType$1(mdNode);
if (!type) {
return;
}
if (type === "bulletList" || type === "orderedList") {
if (listEnabled) {
toolbarState[type] = { active: true };
toolbarState.indent.disabled = false;
toolbarState.outdent.disabled = false;
listEnabled = false;
}
} else {
toolbarState[type] = { active: true };
}
});
return toolbarState;
}
function previewHighlight(_a) {
var toastMark = _a.toastMark, eventEmitter = _a.eventEmitter;
return new Plugin({
view: function() {
return {
update: function(view, prevState) {
var state = view.state;
var doc3 = state.doc, selection = state.selection;
if (prevState && prevState.doc.eq(doc3) && prevState.selection.eq(selection)) {
return;
}
var from2 = selection.from;
var startChOffset = state.doc.resolve(from2).start();
var line = state.doc.content.findIndex(from2).index + 1;
var ch = from2 - startChOffset;
if (from2 === startChOffset) {
ch += 1;
}
var cursorPos = [line, ch];
var mdNode = toastMark.findNodeAtPosition(cursorPos);
var toolbarState = getToolbarState$1(mdNode);
eventEmitter.emit("changeToolbarState", {
cursorPos,
mdNode,
toolbarState
});
eventEmitter.emit("setFocusedNode", mdNode);
}
};
}
});
}
var Doc$1 = (
/** @class */
(function(_super) {
__extends$1(Doc2, _super);
function Doc2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Doc2.prototype, "name", {
get: function() {
return "doc";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Doc2.prototype, "schema", {
get: function() {
return {
content: "block+"
};
},
enumerable: false,
configurable: true
});
return Doc2;
})(Node$2)
);
var Mark2 = (
/** @class */
(function() {
function Mark3() {
}
Object.defineProperty(Mark3.prototype, "type", {
get: function() {
return "mark";
},
enumerable: false,
configurable: true
});
Mark3.prototype.setContext = function(context) {
this.context = context;
};
return Mark3;
})()
);
function getTextByMdLine(doc3, mdLine) {
return getTextContent(doc3, mdLine - 1);
}
function getTextContent(doc3, index2) {
return doc3.child(index2).textContent;
}
var reBlockQuote = /^\s*> ?/;
var BlockQuote$1 = (
/** @class */
(function(_super) {
__extends$1(BlockQuote2, _super);
function BlockQuote2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(BlockQuote2.prototype, "name", {
get: function() {
return "blockQuote";
},
enumerable: false,
configurable: true
});
Object.defineProperty(BlockQuote2.prototype, "schema", {
get: function() {
return {
toDOM: function() {
return ["span", { class: clsWithMdPrefix("block-quote") }, 0];
}
};
},
enumerable: false,
configurable: true
});
BlockQuote2.prototype.createBlockQuoteText = function(text2, isBlockQuote) {
return isBlockQuote ? text2.replace(reBlockQuote, "").trim() : "> " + text2.trim();
};
BlockQuote2.prototype.extendBlockQuote = function() {
var _this = this;
return function(_a, dispatch) {
var selection = _a.selection, doc3 = _a.doc, tr = _a.tr, schema = _a.schema;
var _b = getRangeInfo(selection), endFromOffset = _b.endFromOffset, endToOffset = _b.endToOffset, endIndex = _b.endIndex, to = _b.to;
var textContent = getTextContent(doc3, endIndex);
var isBlockQuote = reBlockQuote.test(textContent);
if (isBlockQuote && to > endFromOffset && selection.empty) {
var isEmpty2 = !textContent.replace(reBlockQuote, "").trim();
if (isEmpty2) {
tr.deleteRange(endFromOffset, endToOffset).split(tr.mapping.map(endToOffset));
} else {
var slicedText = textContent.slice(to - endFromOffset).trim();
var node = createTextNode$1(schema, _this.createBlockQuoteText(slicedText));
splitAndExtendBlock(tr, endToOffset, slicedText, node);
}
dispatch(tr);
return true;
}
return false;
};
};
BlockQuote2.prototype.commands = function() {
var _this = this;
return function() {
return function(state, dispatch) {
var selection = state.selection, doc3 = state.doc;
var _a = getRangeInfo(selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset, startIndex = _a.startIndex, endIndex = _a.endIndex;
var isBlockQuote = reBlockQuote.test(getTextContent(doc3, startIndex));
var tr = replaceTextNode({
state,
startIndex,
endIndex,
from: startFromOffset,
createText: function(textContent) {
return _this.createBlockQuoteText(textContent, isBlockQuote);
}
});
dispatch(tr.setSelection(createTextSelection(tr, tr.mapping.map(endToOffset))));
return true;
};
};
};
BlockQuote2.prototype.keymaps = function() {
var blockQuoteCommand = this.commands()();
return {
"alt-q": blockQuoteCommand,
"alt-Q": blockQuoteCommand,
Enter: this.extendBlockQuote()
};
};
return BlockQuote2;
})(Mark2)
);
var reList = /(^\s*)([-*+] |[\d]+\. )/;
var reOrderedList = /(^\s*)([\d])+\.( \[[ xX]])? /;
var reOrderedListGroup = /^(\s*)((\d+)([.)]\s(?:\[(?:x|\s)\]\s)?))(.*)/;
var reCanBeTaskList = /(^\s*)([-*+]|[\d]+\.)( \[[ xX]])? /;
var reBulletListGroup = /^(\s*)([-*+]+(\s(?:\[(?:x|\s)\]\s)?))(.*)/;
var reTaskList = /(^\s*)([-*+] |[\d]+\. )(\[[ xX]] )/;
var reBulletTaskList = /(^\s*)([-*+])( \[[ xX]]) /;
function getListType(text2) {
return reOrderedList.test(text2) ? "ordered" : "bullet";
}
function getListDepth(mdNode) {
var depth = 0;
while (mdNode && mdNode.type !== "document") {
if (mdNode.type === "list") {
depth += 1;
}
mdNode = mdNode.parent;
}
return depth;
}
function findSameDepthList(toastMark, currentLine, depth, backward) {
var lineTexts = toastMark.getLineTexts();
var lineLen = lineTexts.length;
var result = [];
var line = currentLine;
while (backward ? line < lineLen : line > 1) {
line = backward ? line + 1 : line - 1;
var mdNode = toastMark.findFirstNodeAtLine(line);
var currentListDepth = getListDepth(mdNode);
if (currentListDepth === depth) {
result.push({ line, depth, mdNode });
} else if (currentListDepth < depth) {
break;
}
}
return result;
}
function getSameDepthItems(_a) {
var toastMark = _a.toastMark, mdNode = _a.mdNode, line = _a.line;
var depth = getListDepth(mdNode);
var forwardList = findSameDepthList(toastMark, line, depth, false).reverse();
var backwardList = findSameDepthList(toastMark, line, depth, true);
return forwardList.concat([{ line, depth, mdNode }]).concat(backwardList);
}
function textToBullet(text2) {
if (!reList.test(text2)) {
return "* " + text2;
}
var type = getListType(text2);
if (type === "bullet" && reCanBeTaskList.test(text2)) {
text2 = text2.replace(reBulletTaskList, "$1$2 ");
} else if (type === "ordered") {
text2 = text2.replace(reOrderedList, "$1* ");
}
return text2;
}
function textToOrdered(text2, ordinalNum) {
if (!reList.test(text2)) {
return ordinalNum + ". " + text2;
}
var type = getListType(text2);
if (type === "bullet" || type === "ordered" && reCanBeTaskList.test(text2)) {
text2 = text2.replace(reCanBeTaskList, "$1" + ordinalNum + ". ");
} else if (type === "ordered") {
var start = reOrderedListGroup.exec(text2)[3];
if (Number(start) !== ordinalNum) {
text2 = text2.replace(reOrderedList, "$1" + ordinalNum + ". ");
}
}
return text2;
}
function getChangedInfo(doc3, sameDepthItems, type, start) {
if (start === void 0) {
start = 0;
}
var firstIndex = Number.MAX_VALUE;
var lastIndex = 0;
var changedResults = sameDepthItems.map(function(_a, index2) {
var line = _a.line;
firstIndex = Math.min(line - 1, firstIndex);
lastIndex = Math.max(line - 1, lastIndex);
var text2 = getTextByMdLine(doc3, line);
text2 = type === "bullet" ? textToBullet(text2) : textToOrdered(text2, index2 + 1 + start);
return { text: text2, line };
});
return { changedResults, firstIndex, lastIndex };
}
function getBulletOrOrdered(type, context) {
var sameDepthListInfo = getSameDepthItems(context);
return getChangedInfo(context.doc, sameDepthListInfo, type);
}
var otherListToList = {
bullet: function(context) {
return getBulletOrOrdered("bullet", context);
},
ordered: function(context) {
return getBulletOrOrdered("ordered", context);
},
task: function(_a) {
var mdNode = _a.mdNode, doc3 = _a.doc, line = _a.line;
var text2 = getTextByMdLine(doc3, line);
if (mdNode.listData.task) {
text2 = text2.replace(reTaskList, "$1$2");
} else if (isListNode$1(mdNode)) {
text2 = text2.replace(reList, "$1$2[ ] ");
}
return { changedResults: [{ text: text2, line }] };
}
};
var otherNodeToList = {
bullet: function(_a) {
var doc3 = _a.doc, line = _a.line;
var lineText = getTextByMdLine(doc3, line);
var changedResults = [{ text: "* " + lineText, line }];
return { changedResults };
},
ordered: function(_a) {
var toastMark = _a.toastMark, doc3 = _a.doc, line = _a.line, startLine = _a.startLine;
var lineText = getTextByMdLine(doc3, line);
var firstOrderedListNum = 1;
var firstOrderedListLine = startLine;
var skipped = 0;
for (var i = startLine - 1; i > 0; i -= 1) {
var mdNode = toastMark.findFirstNodeAtLine(i);
var text2 = getTextByMdLine(doc3, i);
var canBeListNode = text2 && !!findClosestNode(mdNode, function(targetNode) {
return isListNode$1(targetNode);
});
var searchResult = reOrderedListGroup.exec(getTextByMdLine(doc3, i));
if (!searchResult && !canBeListNode) {
break;
}
if (!searchResult && canBeListNode) {
skipped += 1;
continue;
}
var _b = searchResult, indent2 = _b[1], start = _b[3];
if (!indent2) {
firstOrderedListNum = Number(start);
firstOrderedListLine = i;
break;
}
}
var ordinalNum = firstOrderedListNum + line - firstOrderedListLine - skipped;
var changedResults = [{ text: ordinalNum + ". " + lineText, line }];
return { changedResults };
},
task: function(_a) {
var doc3 = _a.doc, line = _a.line;
var lineText = getTextByMdLine(doc3, line);
var changedResults = [{ text: "* [ ] " + lineText, line }];
return { changedResults };
}
};
var extendList = {
bullet: function(_a) {
var line = _a.line, doc3 = _a.doc;
var lineText = getTextByMdLine(doc3, line);
var _b = reBulletListGroup.exec(lineText), indent2 = _b[1], delimiter = _b[2];
return { listSyntax: "" + indent2 + delimiter };
},
ordered: function(_a) {
var toastMark = _a.toastMark, line = _a.line, mdNode = _a.mdNode, doc3 = _a.doc;
var depth = getListDepth(mdNode);
var lineText = getTextByMdLine(doc3, line);
var _b = reOrderedListGroup.exec(lineText), indent2 = _b[1], start = _b[3], delimiter = _b[4];
var ordinalNum = Number(start) + 1;
var listSyntax = "" + indent2 + ordinalNum + delimiter;
var backwardList = findSameDepthList(toastMark, line, depth, true);
var filteredList = backwardList.filter(function(info) {
var searchResult = reOrderedListGroup.exec(getTextByMdLine(doc3, info.line));
return searchResult && searchResult[1].length === indent2.length && !!findClosestNode(info.mdNode, function(targetNode) {
return isOrderedListNode(targetNode);
});
});
return __assign$1({ listSyntax }, getChangedInfo(doc3, filteredList, "ordered", ordinalNum));
}
};
function getReorderedListInfo(doc3, schema, line, ordinalNum, prevIndentLength) {
var nodes = [];
var lineText = getTextByMdLine(doc3, line);
var searchResult = reOrderedListGroup.exec(lineText);
while (searchResult) {
var indent2 = searchResult[1], delimiter = searchResult[4], text2 = searchResult[5];
var indentLength = indent2.length;
if (indentLength === prevIndentLength) {
nodes.push(createTextNode$1(schema, "" + indent2 + ordinalNum + delimiter + text2));
ordinalNum += 1;
line += 1;
} else if (indentLength > prevIndentLength) {
var nestedListInfo = getReorderedListInfo(doc3, schema, line, 1, indentLength);
line = nestedListInfo.line;
nodes = nodes.concat(nestedListInfo.nodes);
}
if (indentLength < prevIndentLength || line > doc3.childCount) {
break;
}
lineText = getTextByMdLine(doc3, line);
searchResult = reOrderedListGroup.exec(lineText);
}
return { nodes, line };
}
var reStartSpace = /(^\s{1,4})(.*)/;
function isBlockUnit(from2, to, text2) {
return from2 < to || reList.test(text2) || reBlockQuote.test(text2);
}
function isInTableCellNode(doc3, schema, selection) {
var $pos = selection.$from;
if ($pos.depth === 0) {
$pos = doc3.resolve($pos.pos - 1);
}
var node = $pos.node(1);
var startOffset = $pos.start(1);
var contentSize = node.content.size;
return node.rangeHasMark(0, contentSize, schema.marks.table) && $pos.pos - startOffset !== contentSize && $pos.pos !== startOffset;
}
function createSelection(tr, posInfo) {
var from2 = posInfo.from, to = posInfo.to;
if (posInfo.type === "indent") {
var softTabLen = 4;
from2 += softTabLen;
to += (posInfo.lineLen + 1) * softTabLen;
} else {
var spaceLenList = posInfo.spaceLenList;
from2 -= spaceLenList[0];
for (var i = 0; i < spaceLenList.length; i += 1) {
to -= spaceLenList[i];
}
}
return createTextSelection(tr, from2, to);
}
var Paragraph$1 = (
/** @class */
(function(_super) {
__extends$1(Paragraph2, _super);
function Paragraph2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Paragraph2.prototype, "name", {
get: function() {
return "paragraph";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Paragraph2.prototype, "schema", {
get: function() {
return {
content: "inline*",
attrs: {
className: { default: null },
codeStart: { default: null },
codeEnd: { default: null }
},
selectable: false,
group: "block",
parseDOM: [{ tag: "div" }],
toDOM: function(_a) {
var attrs = _a.attrs;
return attrs.className ? ["div", { class: clsWithMdPrefix(attrs.className) }, 0] : ["div", 0];
}
};
},
enumerable: false,
configurable: true
});
Paragraph2.prototype.reorderList = function(startLine, endLine) {
var _a = this.context, view = _a.view, toastMark = _a.toastMark, schema = _a.schema;
var _b = view.state, tr = _b.tr, selection = _b.selection, doc3 = _b.doc;
var mdNode = toastMark.findFirstNodeAtLine(startLine);
var topListNode = mdNode;
while (mdNode && !isBulletListNode(mdNode) && mdNode.parent.type !== "document") {
mdNode = mdNode.parent;
if (isOrderedListNode(mdNode)) {
topListNode = mdNode;
break;
}
}
if (topListNode) {
startLine = topListNode.sourcepos[0][0];
}
var _c = reOrderedListGroup.exec(getTextByMdLine(doc3, startLine)), indent2 = _c[1], start = _c[3];
var indentLen = indent2.length;
var _d = getReorderedListInfo(doc3, schema, startLine, Number(start), indentLen), line = _d.line, nodes = _d.nodes;
endLine = Math.max(endLine, line - 1);
var startOffset = getNodeContentOffsetRange(doc3, startLine - 1).startOffset;
for (var i = startLine - 1; i <= endLine - 1; i += 1) {
var _e = doc3.child(i), nodeSize2 = _e.nodeSize, content = _e.content;
var mappedFrom = tr.mapping.map(startOffset);
var mappedTo = mappedFrom + content.size;
tr.replaceWith(mappedFrom, mappedTo, nodes[i - startLine + 1]);
startOffset += nodeSize2;
}
var newSelection = createTextSelection(tr, selection.from, selection.to);
view.dispatch(tr.setSelection(newSelection));
};
Paragraph2.prototype.indent = function(tabKey) {
var _this = this;
if (tabKey === void 0) {
tabKey = false;
}
return function() {
return function(state, dispatch) {
var schema = state.schema, selection = state.selection, doc3 = state.doc;
var _a = getRangeInfo(selection), from2 = _a.from, to = _a.to, startFromOffset = _a.startFromOffset, startIndex = _a.startIndex, endIndex = _a.endIndex;
if (tabKey && isInTableCellNode(doc3, schema, selection)) {
return false;
}
var startLineText = getTextContent(doc3, startIndex);
if (tabKey && isBlockUnit(from2, to, startLineText) || !tabKey && reList.test(startLineText)) {
var tr = replaceTextNode({
state,
from: startFromOffset,
startIndex,
endIndex,
createText: function(textContent) {
return " " + textContent;
}
});
var posInfo = {
type: "indent",
from: from2,
to,
lineLen: endIndex - startIndex
};
dispatch(tr.setSelection(createSelection(tr, posInfo)));
if (reOrderedListGroup.test(startLineText)) {
_this.reorderList(startIndex + 1, endIndex + 1);
}
} else if (tabKey) {
dispatch(state.tr.insert(to, createTextNode$1(schema, " ")));
}
return true;
};
};
};
Paragraph2.prototype.outdent = function(tabKey) {
var _this = this;
if (tabKey === void 0) {
tabKey = false;
}
return function() {
return function(state, dispatch) {
var selection = state.selection, doc3 = state.doc, schema = state.schema;
var _a = getRangeInfo(selection), from2 = _a.from, to = _a.to, startFromOffset = _a.startFromOffset, startIndex = _a.startIndex, endIndex = _a.endIndex;
if (tabKey && isInTableCellNode(doc3, schema, selection)) {
return false;
}
var startLineText = getTextContent(doc3, startIndex);
if (tabKey && isBlockUnit(from2, to, startLineText) || !tabKey && reList.test(startLineText)) {
var spaceLenList_1 = [];
var tr = replaceTextNode({
state,
from: startFromOffset,
startIndex,
endIndex,
createText: function(textContent) {
var searchResult = reStartSpace.exec(textContent);
spaceLenList_1.push(searchResult ? searchResult[1].length : 0);
return textContent.replace(reStartSpace, "$2");
}
});
var posInfo = { type: "outdent", from: from2, to, spaceLenList: spaceLenList_1 };
dispatch(tr.setSelection(createSelection(tr, posInfo)));
if (reOrderedListGroup.test(startLineText)) {
_this.reorderList(startIndex + 1, endIndex + 1);
}
} else if (tabKey) {
var startText = startLineText.slice(0, to - startFromOffset);
var startTextWithoutSpace = startText.replace(/\s{1,4}$/, "");
var deletStart = to - (startText.length - startTextWithoutSpace.length);
dispatch(state.tr.delete(deletStart, to));
}
return true;
};
};
};
Paragraph2.prototype.deleteLines = function() {
var _this = this;
return function(state, dispatch) {
var view = _this.context.view;
var _a = getRangeInfo(state.selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset;
var deleteRange2 = function() {
dispatch(state.tr.deleteRange(startFromOffset, endToOffset));
return true;
};
return chainCommands(deleteRange2, joinForward)(state, dispatch, view);
};
};
Paragraph2.prototype.moveDown = function() {
return function(state, dispatch) {
var doc3 = state.doc, tr = state.tr, selection = state.selection, schema = state.schema;
var _a = getRangeInfo(selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset, endIndex = _a.endIndex;
if (endIndex < doc3.content.childCount - 1) {
var _b = doc3.child(endIndex + 1), nodeSize2 = _b.nodeSize, textContent = _b.textContent;
tr.delete(endToOffset, endToOffset + nodeSize2).split(startFromOffset).insert(tr.mapping.map(startFromOffset) - 2, createTextNode$1(schema, textContent));
dispatch(tr);
return true;
}
return false;
};
};
Paragraph2.prototype.moveUp = function() {
return function(state, dispatch) {
var tr = state.tr, doc3 = state.doc, selection = state.selection, schema = state.schema;
var _a = getRangeInfo(selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset, startIndex = _a.startIndex;
if (startIndex > 0) {
var _b = doc3.child(startIndex - 1), nodeSize2 = _b.nodeSize, textContent = _b.textContent;
tr.delete(startFromOffset - nodeSize2, startFromOffset).split(tr.mapping.map(endToOffset)).insert(tr.mapping.map(endToOffset), createTextNode$1(schema, textContent));
dispatch(tr);
return true;
}
return false;
};
};
Paragraph2.prototype.commands = function() {
return {
indent: this.indent(),
outdent: this.outdent()
};
};
Paragraph2.prototype.keymaps = function() {
return {
Tab: this.indent(true)(),
"Shift-Tab": this.outdent(true)(),
"Mod-d": this.deleteLines(),
"Mod-D": this.deleteLines(),
"Alt-ArrowUp": this.moveUp(),
"Alt-ArrowDown": this.moveDown()
};
};
return Paragraph2;
})(Node$2)
);
var Text$1 = (
/** @class */
(function(_super) {
__extends$1(Text2, _super);
function Text2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Text2.prototype, "name", {
get: function() {
return "text";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Text2.prototype, "schema", {
get: function() {
return {
group: "inline"
};
},
enumerable: false,
configurable: true
});
return Text2;
})(Node$2)
);
var reHeading = /^#{1,6}\s/;
var Heading$1 = (
/** @class */
(function(_super) {
__extends$1(Heading2, _super);
function Heading2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Heading2.prototype, "name", {
get: function() {
return "heading";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Heading2.prototype, "schema", {
get: function() {
return {
attrs: {
level: { default: 1 },
seText: { default: false }
},
toDOM: function(_a) {
var attrs = _a.attrs;
var level = attrs.level, seText = attrs.seText;
var classNames = "heading|heading" + level;
if (seText) {
classNames += "|delimiter|setext";
}
return ["span", { class: clsWithMdPrefix.apply(void 0, classNames.split("|")) }, 0];
}
};
},
enumerable: false,
configurable: true
});
Heading2.prototype.createHeadingText = function(level, text2, curHeadingSyntax) {
var textContent = text2.replace(curHeadingSyntax, "").trim();
var headingText = "";
while (level > 0) {
headingText += "#";
level -= 1;
}
return headingText + " " + textContent;
};
Heading2.prototype.commands = function() {
var _this = this;
return function(payload) {
return function(state, dispatch) {
var level = payload.level;
var _a = getRangeInfo(state.selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset, startIndex = _a.startIndex, endIndex = _a.endIndex;
var tr = replaceTextNode({
state,
from: startFromOffset,
startIndex,
endIndex,
createText: function(textContent) {
var matchedHeading = textContent.match(reHeading);
var curHeadingSyntax = matchedHeading ? matchedHeading[0] : "";
return _this.createHeadingText(level, textContent, curHeadingSyntax);
}
});
dispatch(tr.setSelection(createTextSelection(tr, tr.mapping.map(endToOffset))));
return true;
};
};
};
return Heading2;
})(Mark2)
);
var fencedCodeBlockSyntax = "```";
var CodeBlock$1 = (
/** @class */
(function(_super) {
__extends$1(CodeBlock2, _super);
function CodeBlock2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(CodeBlock2.prototype, "name", {
get: function() {
return "codeBlock";
},
enumerable: false,
configurable: true
});
Object.defineProperty(CodeBlock2.prototype, "schema", {
get: function() {
return {
toDOM: function() {
return ["span", { class: clsWithMdPrefix("code-block") }, 0];
}
};
},
enumerable: false,
configurable: true
});
CodeBlock2.prototype.commands = function() {
return function() {
return function(state, dispatch) {
var selection = state.selection, schema = state.schema, tr = state.tr;
var _a = getRangeInfo(selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset;
var fencedNode = createTextNode$1(schema, fencedCodeBlockSyntax);
tr.insert(startFromOffset, fencedNode).split(startFromOffset + fencedCodeBlockSyntax.length);
tr.split(tr.mapping.map(endToOffset)).insert(tr.mapping.map(endToOffset), fencedNode);
dispatch(tr.setSelection(
// subtract fenced syntax length and open, close tag(2)
createTextSelection(tr, tr.mapping.map(endToOffset) - (fencedCodeBlockSyntax.length + 2))
));
return true;
};
};
};
CodeBlock2.prototype.keepIndentation = function() {
var _this = this;
return function(_a, dispatch) {
var selection = _a.selection, tr = _a.tr, doc3 = _a.doc, schema = _a.schema;
var toastMark = _this.context.toastMark;
var _b = getRangeInfo(selection), startFromOffset = _b.startFromOffset, endToOffset = _b.endToOffset, endIndex = _b.endIndex, from2 = _b.from, to = _b.to;
var textContent = getTextContent(doc3, endIndex);
if (from2 === to && textContent.trim()) {
var matched = textContent.match(/^\s+/);
var mdNode = toastMark.findFirstNodeAtLine(endIndex + 1);
if (isCodeBlockNode(mdNode) && matched) {
var spaces = matched[0];
var slicedText = textContent.slice(to - startFromOffset);
var node = createTextNode$1(schema, spaces + slicedText);
splitAndExtendBlock(tr, endToOffset, slicedText, node);
dispatch(tr);
return true;
}
}
return false;
};
};
CodeBlock2.prototype.keymaps = function() {
var codeBlockCommand = this.commands()();
return {
"Shift-Mod-p": codeBlockCommand,
"Shift-Mod-P": codeBlockCommand,
Enter: this.keepIndentation()
};
};
return CodeBlock2;
})(Mark2)
);
var reEmptyTable = /\||\s/g;
function createTableHeader(columnCount) {
return [createTableRow(columnCount), createTableRow(columnCount, true)];
}
function createTableBody$1(columnCount, rowCount) {
var bodyRows = [];
for (var i = 0; i < rowCount; i += 1) {
bodyRows.push(createTableRow(columnCount));
}
return bodyRows;
}
function createTableRow(columnCount, delim) {
var row = "|";
for (var i = 0; i < columnCount; i += 1) {
row += delim ? " --- |" : " |";
}
return row;
}
function createTargetTypes(moveNext) {
return moveNext ? { type: "next", parentType: "tableHead", childType: "firstChild" } : { type: "prev", parentType: "tableBody", childType: "lastChild" };
}
var Table$1 = (
/** @class */
(function(_super) {
__extends$1(Table2, _super);
function Table2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Table2.prototype, "name", {
get: function() {
return "table";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Table2.prototype, "schema", {
get: function() {
return {
toDOM: function() {
return ["span", { class: clsWithMdPrefix("table") }, 0];
}
};
},
enumerable: false,
configurable: true
});
Table2.prototype.extendTable = function() {
var _this = this;
return function(_a, dispatch) {
var selection = _a.selection, doc3 = _a.doc, tr = _a.tr, schema = _a.schema;
if (!selection.empty) {
return false;
}
var _b = getRangeInfo(selection), endFromOffset = _b.endFromOffset, endToOffset = _b.endToOffset, endIndex = _b.endIndex, to = _b.to;
var textContent = getTextContent(doc3, endIndex);
var mdPos = [endIndex + 1, to - endFromOffset + 1];
var mdNode = _this.context.toastMark.findNodeAtPosition(mdPos);
var cellNode = findClosestNode(mdNode, function(node) {
return isTableCellNode(node) && (node.parent.type === "tableDelimRow" || node.parent.parent.type === "tableBody");
});
if (cellNode) {
var isEmpty2 = !textContent.replace(reEmptyTable, "").trim();
var parent_1 = cellNode.parent;
var columnCount = parent_1.parent.parent.columns.length;
var row = createTableRow(columnCount);
if (isEmpty2) {
tr.deleteRange(endFromOffset, endToOffset).split(tr.mapping.map(endToOffset));
} else {
tr.split(endToOffset).insert(tr.mapping.map(endToOffset), createTextNode$1(schema, row)).setSelection(createTextSelection(tr, tr.mapping.map(endToOffset) - 2));
}
dispatch(tr);
return true;
}
return false;
};
};
Table2.prototype.moveTableCell = function(moveNext) {
var _this = this;
return function(_a, dispatch) {
var selection = _a.selection, tr = _a.tr;
var _b = getRangeInfo(selection), endFromOffset = _b.endFromOffset, endIndex = _b.endIndex, to = _b.to;
var mdPos = [endIndex + 1, to - endFromOffset];
var mdNode = _this.context.toastMark.findNodeAtPosition(mdPos);
var cellNode = findClosestNode(mdNode, function(node) {
return isTableCellNode(node);
});
if (cellNode) {
var parent_2 = cellNode.parent;
var _c = createTargetTypes(moveNext), type = _c.type, parentType = _c.parentType, childType = _c.childType;
var chOffset = getMdEndCh(cellNode);
if (cellNode[type]) {
chOffset = getMdEndCh(cellNode[type]) - 1;
} else {
var row = !parent_2[type] && parent_2.parent.type === parentType ? parent_2.parent[type][childType] : parent_2[type];
if (type === "next") {
var baseOffset = row ? getMdEndCh(row[childType]) : 0;
chOffset += baseOffset + 2;
} else if (type === "prev") {
chOffset = row ? -4 : 0;
}
}
dispatch(tr.setSelection(createTextSelection(tr, endFromOffset + chOffset)));
return true;
}
return false;
};
};
Table2.prototype.addTable = function() {
return function(payload) {
return function(_a, dispatch) {
var selection = _a.selection, tr = _a.tr, schema = _a.schema;
var _b = payload, columnCount = _b.columnCount, rowCount = _b.rowCount;
var endToOffset = getRangeInfo(selection).endToOffset;
var headerRows = createTableHeader(columnCount);
var bodyRows = createTableBody$1(columnCount, rowCount - 1);
var rows = __spreadArray$1(__spreadArray$1([], headerRows), bodyRows);
rows.forEach(function(row) {
tr.split(tr.mapping.map(endToOffset)).insert(tr.mapping.map(endToOffset), createTextNode$1(schema, row));
});
dispatch(tr.setSelection(createTextSelection(tr, endToOffset + 4)));
return true;
};
};
};
Table2.prototype.commands = function() {
return { addTable: this.addTable() };
};
Table2.prototype.keymaps = function() {
return {
Enter: this.extendTable(),
Tab: this.moveTableCell(true),
"Shift-Tab": this.moveTableCell(false)
};
};
return Table2;
})(Mark2)
);
var thematicBreakSyntax = "***";
var ThematicBreak$1 = (
/** @class */
(function(_super) {
__extends$1(ThematicBreak2, _super);
function ThematicBreak2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(ThematicBreak2.prototype, "name", {
get: function() {
return "thematicBreak";
},
enumerable: false,
configurable: true
});
Object.defineProperty(ThematicBreak2.prototype, "schema", {
get: function() {
return {
toDOM: function() {
return ["span", { class: clsWithMdPrefix("thematic-break") }, 0];
}
};
},
enumerable: false,
configurable: true
});
ThematicBreak2.prototype.hr = function() {
return function() {
return function(state, dispatch) {
var selection = state.selection, schema = state.schema, tr = state.tr;
var _a = getRangeInfo(selection), from2 = _a.from, to = _a.to, endToOffset = _a.endToOffset;
var node = createTextNode$1(schema, thematicBreakSyntax);
tr.split(from2).replaceWith(tr.mapping.map(from2), tr.mapping.map(to), node).split(tr.mapping.map(to)).setSelection(createTextSelection(tr, tr.mapping.map(endToOffset)));
dispatch(tr);
return true;
};
};
};
ThematicBreak2.prototype.commands = function() {
return { hr: this.hr() };
};
ThematicBreak2.prototype.keymaps = function() {
var lineCommand = this.hr()();
return { "Mod-l": lineCommand, "Mod-L": lineCommand };
};
return ThematicBreak2;
})(Mark2)
);
function cannotBeListNode(_a, line) {
var type = _a.type, sourcepos = _a.sourcepos;
var startLine = sourcepos[0][0];
return line <= startLine && (type === "codeBlock" || type === "heading" || type.match("table"));
}
var ListItem$1 = (
/** @class */
(function(_super) {
__extends$1(ListItem2, _super);
function ListItem2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(ListItem2.prototype, "name", {
get: function() {
return "listItem";
},
enumerable: false,
configurable: true
});
Object.defineProperty(ListItem2.prototype, "schema", {
get: function() {
return {
attrs: {
odd: { default: false },
even: { default: false },
listStyle: { default: false }
},
toDOM: function(_a) {
var attrs = _a.attrs;
var odd = attrs.odd, even = attrs.even, listStyle = attrs.listStyle;
var classNames = "list-item";
if (listStyle) {
classNames += "|list-item-style";
}
if (odd) {
classNames += "|list-item-odd";
}
if (even) {
classNames += "|list-item-even";
}
return ["span", { class: clsWithMdPrefix.apply(void 0, classNames.split("|")) }, 0];
}
};
},
enumerable: false,
configurable: true
});
ListItem2.prototype.extendList = function() {
var _this = this;
return function(_a, dispatch) {
var selection = _a.selection, doc3 = _a.doc, schema = _a.schema, tr = _a.tr;
var toastMark = _this.context.toastMark;
var _b = getRangeInfo(selection), to = _b.to, startFromOffset = _b.startFromOffset, endFromOffset = _b.endFromOffset, endIndex = _b.endIndex, endToOffset = _b.endToOffset;
var textContent = getTextContent(doc3, endIndex);
var isList2 = reList.test(textContent);
if (!isList2 || selection.from === startFromOffset || !selection.empty) {
return false;
}
var isEmpty2 = !textContent.replace(reCanBeTaskList, "").trim();
if (isEmpty2) {
tr.deleteRange(endFromOffset, endToOffset).split(tr.mapping.map(endToOffset));
} else {
var commandType = getListType(textContent);
var mdNode = toastMark.findFirstNodeAtLine(endIndex + 1);
var slicedText = textContent.slice(to - endFromOffset);
var context = { toastMark, mdNode, doc: doc3, line: endIndex + 1 };
var _c = extendList[commandType](context), listSyntax = _c.listSyntax, changedResults = _c.changedResults;
if (changedResults === null || changedResults === void 0 ? void 0 : changedResults.length) {
tr.split(to);
changedResults.unshift({ text: listSyntax + slicedText, line: endIndex + 1 });
_this.changeToListPerLine(tr, changedResults, {
from: to,
// don't subtract 1 because the line has increased through 'split' command.
startLine: changedResults[0].line,
endLine: last$1(changedResults).line
});
var pos = tr.mapping.map(endToOffset) - slicedText.length;
tr.setSelection(createTextSelection(tr, pos));
} else {
var node = createTextNode$1(schema, listSyntax + slicedText);
splitAndExtendBlock(tr, endToOffset, slicedText, node);
}
}
dispatch(tr);
return true;
};
};
ListItem2.prototype.toList = function(commandType) {
var _this = this;
return function() {
return function(_a, dispatch) {
var doc3 = _a.doc, tr = _a.tr, selection = _a.selection;
var toastMark = _this.context.toastMark;
var rangeInfo = getRangeInfo(selection);
var startLine = rangeInfo.startIndex + 1;
var endLine = rangeInfo.endIndex + 1;
var endToOffset = rangeInfo.endToOffset;
var skipLines = [];
for (var line = startLine; line <= endLine; line += 1) {
var mdNode = toastMark.findFirstNodeAtLine(line);
if (mdNode && cannotBeListNode(mdNode, line)) {
break;
}
if (skipLines.indexOf(line) !== -1) {
continue;
}
var context = { toastMark, mdNode, doc: doc3, line, startLine };
var changedResults = (isListNode$1(mdNode) ? otherListToList[commandType](context) : otherNodeToList[commandType](context)).changedResults;
var endOffset = _this.changeToListPerLine(tr, changedResults, {
from: getNodeContentOffsetRange(doc3, changedResults[0].line - 1).startOffset,
startLine: changedResults[0].line,
endLine: last$1(changedResults).line,
indexDiff: 1
});
endToOffset = Math.max(endOffset, endToOffset);
if (changedResults) {
skipLines = skipLines.concat(changedResults.map(function(info) {
return info.line;
}));
}
}
dispatch(tr.setSelection(createTextSelection(tr, tr.mapping.map(endToOffset))));
return true;
};
};
};
ListItem2.prototype.changeToListPerLine = function(tr, changedResults, _a) {
var from2 = _a.from, startLine = _a.startLine, endLine = _a.endLine, _b = _a.indexDiff, indexDiff = _b === void 0 ? 0 : _b;
var maxEndOffset = 0;
var _loop_1 = function(i2) {
var _c = tr.doc.child(i2), nodeSize2 = _c.nodeSize, content = _c.content;
var mappedFrom = tr.mapping.map(from2);
var mappedTo = mappedFrom + content.size;
var changedResult = changedResults.filter(function(result) {
return result.line - indexDiff === i2;
})[0];
if (changedResult) {
tr.replaceWith(mappedFrom, mappedTo, createTextNode$1(this_1.context.schema, changedResult.text));
maxEndOffset = Math.max(maxEndOffset, from2 + content.size);
}
from2 += nodeSize2;
};
var this_1 = this;
for (var i = startLine - indexDiff; i <= endLine - indexDiff; i += 1) {
_loop_1(i);
}
return maxEndOffset;
};
ListItem2.prototype.toggleTask = function() {
var _this = this;
return function(_a, dispatch) {
var selection = _a.selection, tr = _a.tr, doc3 = _a.doc, schema = _a.schema;
var toastMark = _this.context.toastMark;
var _b = getRangeInfo(selection), startIndex = _b.startIndex, endIndex = _b.endIndex;
var newTr = null;
for (var i = startIndex; i <= endIndex; i += 1) {
var mdNode = toastMark.findFirstNodeAtLine(i + 1);
if (isListNode$1(mdNode) && mdNode.listData.task) {
var _c = mdNode.listData, checked = _c.checked, padding = _c.padding;
var stateChar = checked ? " " : "x";
var mdPos = mdNode.sourcepos[0];
var startOffset = getNodeContentOffsetRange(doc3, mdPos[0] - 1).startOffset;
startOffset += mdPos[1] + padding;
newTr = tr.replaceWith(startOffset, startOffset + 1, schema.text(stateChar));
}
}
if (newTr) {
dispatch(newTr);
return true;
}
return false;
};
};
ListItem2.prototype.commands = function() {
return {
bulletList: this.toList("bullet"),
orderedList: this.toList("ordered"),
taskList: this.toList("task")
};
};
ListItem2.prototype.keymaps = function() {
var bulletCommand = this.toList("bullet")();
var orderedCommand = this.toList("ordered")();
var taskCommand = this.toList("task")();
var togleTaskCommand = this.toggleTask();
return {
"Mod-u": bulletCommand,
"Mod-U": bulletCommand,
"Mod-o": orderedCommand,
"Mod-O": orderedCommand,
"alt-t": taskCommand,
"alt-T": taskCommand,
"Shift-Ctrl-x": togleTaskCommand,
"Shift-Ctrl-X": togleTaskCommand,
Enter: this.extendList()
};
};
return ListItem2;
})(Mark2)
);
function toggleMark2(condition, syntax) {
return function() {
return function(_a, dispatch) {
var tr = _a.tr, selection = _a.selection;
var conditionFn = !isFunction_1(condition) ? function(text2) {
return condition.test(text2);
} : condition;
var syntaxLen = syntax.length;
var doc3 = tr.doc;
var _b = resolveSelectionPos(selection), from2 = _b[0], to = _b[1];
var prevPos = Math.max(from2 - syntaxLen, 1);
var nextPos = Math.min(to + syntaxLen, doc3.content.size - 1);
var slice2 = selection.content();
var textContent = slice2.content.textBetween(0, slice2.content.size, "\n");
var prevText = doc3.textBetween(prevPos, from2, "\n");
var nextText = doc3.textBetween(to, nextPos, "\n");
textContent = "" + prevText + textContent + nextText;
if (prevText && nextText && conditionFn(textContent)) {
tr.delete(nextPos - syntaxLen, nextPos).delete(prevPos, prevPos + syntaxLen);
} else {
tr.insertText(syntax, to).insertText(syntax, from2);
var newSelection = selection.empty ? createTextSelection(tr, from2 + syntaxLen) : createTextSelection(tr, from2 + syntaxLen, to + syntaxLen);
tr.setSelection(newSelection);
}
dispatch(tr);
return true;
};
};
}
var reStrong = /^(\*{2}|_{2}).*([\s\S]*)\1$/m;
var strongSyntax = "**";
var Strong$1 = (
/** @class */
(function(_super) {
__extends$1(Strong2, _super);
function Strong2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Strong2.prototype, "name", {
get: function() {
return "strong";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Strong2.prototype, "schema", {
get: function() {
return {
toDOM: function() {
return ["span", { class: clsWithMdPrefix("strong") }, 0];
}
};
},
enumerable: false,
configurable: true
});
Strong2.prototype.bold = function() {
return toggleMark2(reStrong, strongSyntax);
};
Strong2.prototype.commands = function() {
return { bold: this.bold() };
};
Strong2.prototype.keymaps = function() {
var boldCommand = this.bold()();
return { "Mod-b": boldCommand, "Mod-B": boldCommand };
};
return Strong2;
})(Mark2)
);
var reStrike = /^(~{2}).*([\s\S]*)\1$/m;
var strikeSyntax = "~~";
var Strike$1 = (
/** @class */
(function(_super) {
__extends$1(Strike2, _super);
function Strike2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Strike2.prototype, "name", {
get: function() {
return "strike";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Strike2.prototype, "schema", {
get: function() {
return {
toDOM: function() {
return ["span", { class: clsWithMdPrefix("strike") }, 0];
}
};
},
enumerable: false,
configurable: true
});
Strike2.prototype.commands = function() {
return toggleMark2(reStrike, strikeSyntax);
};
Strike2.prototype.keymaps = function() {
var strikeCommand = this.commands()();
return { "Mod-s": strikeCommand, "Mod-S": strikeCommand };
};
return Strike2;
})(Mark2)
);
var reEmph = /^(\*|_).*([\s\S]*)\1$/m;
var emphSyntax = "*";
var Emph$1 = (
/** @class */
(function(_super) {
__extends$1(Emph2, _super);
function Emph2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Emph2.prototype, "name", {
get: function() {
return "emph";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Emph2.prototype, "schema", {
get: function() {
return {
toDOM: function() {
return ["span", { class: clsWithMdPrefix("emph") }, 0];
}
};
},
enumerable: false,
configurable: true
});
Emph2.prototype.italic = function() {
return toggleMark2(reEmph, emphSyntax);
};
Emph2.prototype.commands = function() {
return { italic: this.italic() };
};
Emph2.prototype.keymaps = function() {
var italicCommand = this.italic()();
return { "Mod-i": italicCommand, "Mod-I": italicCommand };
};
return Emph2;
})(Mark2)
);
var reCode = /^(`).*([\s\S]*)\1$/m;
var codeSyntax = "`";
var Code$1 = (
/** @class */
(function(_super) {
__extends$1(Code2, _super);
function Code2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Code2.prototype, "name", {
get: function() {
return "code";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Code2.prototype, "schema", {
get: function() {
return {
attrs: {
start: { default: false },
end: { default: false },
marked: { default: false }
},
toDOM: function(mark) {
var _a = mark.attrs, start = _a.start, end = _a.end, marked = _a.marked;
var classNames = "code";
if (start) {
classNames += "|delimiter|start";
}
if (end) {
classNames += "|delimiter|end";
}
if (marked) {
classNames += "|marked-text";
}
return ["span", { class: clsWithMdPrefix.apply(void 0, classNames.split("|")) }, 0];
}
};
},
enumerable: false,
configurable: true
});
Code2.prototype.commands = function() {
return toggleMark2(reCode, codeSyntax);
};
Code2.prototype.keymaps = function() {
var codeCommand = this.commands()();
return { "Shift-Mod-c": codeCommand, "Shift-Mod-C": codeCommand };
};
return Code2;
})(Mark2)
);
var Link$1 = (
/** @class */
(function(_super) {
__extends$1(Link2, _super);
function Link2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Link2.prototype, "name", {
get: function() {
return "link";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Link2.prototype, "schema", {
get: function() {
return {
attrs: {
url: { default: false },
desc: { default: false }
},
toDOM: function(_a) {
var attrs = _a.attrs;
var url = attrs.url, desc = attrs.desc;
var classNames = "link";
if (url) {
classNames += "|link-url|marked-text";
}
if (desc) {
classNames += "|link-desc|marked-text";
}
return ["span", { class: clsWithMdPrefix.apply(void 0, classNames.split("|")) }, 0];
}
};
},
enumerable: false,
configurable: true
});
Link2.prototype.addLinkOrImage = function(commandType) {
return function(payload) {
return function(_a, dispatch) {
var selection = _a.selection, tr = _a.tr, schema = _a.schema;
var _b = resolveSelectionPos(selection), from2 = _b[0], to = _b[1];
var _c = payload, linkText = _c.linkText, altText = _c.altText, linkUrl = _c.linkUrl, imageUrl = _c.imageUrl;
var text2 = linkText;
var url = linkUrl;
var syntax = "";
if (commandType === "image") {
text2 = altText;
url = imageUrl;
syntax = "!";
}
text2 = escapeTextForLink(text2);
syntax += "[" + text2 + "](" + url + ")";
dispatch(tr.replaceWith(from2, to, createTextNode$1(schema, syntax)));
return true;
};
};
};
Link2.prototype.commands = function() {
return {
addImage: this.addLinkOrImage("image"),
addLink: this.addLinkOrImage("link")
};
};
return Link2;
})(Mark2)
);
var TaskDelimiter = (
/** @class */
(function(_super) {
__extends$1(TaskDelimiter2, _super);
function TaskDelimiter2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(TaskDelimiter2.prototype, "name", {
get: function() {
return "taskDelimiter";
},
enumerable: false,
configurable: true
});
Object.defineProperty(TaskDelimiter2.prototype, "schema", {
get: function() {
return {
toDOM: function() {
return ["span", { class: clsWithMdPrefix("delimiter", "list-item") }, 0];
}
};
},
enumerable: false,
configurable: true
});
return TaskDelimiter2;
})(Mark2)
);
var Delimiter = (
/** @class */
(function(_super) {
__extends$1(Delimiter2, _super);
function Delimiter2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Delimiter2.prototype, "name", {
get: function() {
return "delimiter";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Delimiter2.prototype, "schema", {
get: function() {
return {
toDOM: function() {
return ["span", { class: clsWithMdPrefix("delimiter") }, 0];
}
};
},
enumerable: false,
configurable: true
});
return Delimiter2;
})(Mark2)
);
var Meta = (
/** @class */
(function(_super) {
__extends$1(Meta2, _super);
function Meta2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Meta2.prototype, "name", {
get: function() {
return "meta";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Meta2.prototype, "schema", {
get: function() {
return {
toDOM: function() {
return ["span", { class: clsWithMdPrefix("meta") }, 0];
}
};
},
enumerable: false,
configurable: true
});
return Meta2;
})(Mark2)
);
var MarkedText = (
/** @class */
(function(_super) {
__extends$1(MarkedText2, _super);
function MarkedText2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(MarkedText2.prototype, "name", {
get: function() {
return "markedText";
},
enumerable: false,
configurable: true
});
Object.defineProperty(MarkedText2.prototype, "schema", {
get: function() {
return {
toDOM: function() {
return ["span", { class: clsWithMdPrefix("marked-text") }, 0];
}
};
},
enumerable: false,
configurable: true
});
return MarkedText2;
})(Mark2)
);
var TableCell = (
/** @class */
(function(_super) {
__extends$1(TableCell2, _super);
function TableCell2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(TableCell2.prototype, "name", {
get: function() {
return "tableCell";
},
enumerable: false,
configurable: true
});
Object.defineProperty(TableCell2.prototype, "schema", {
get: function() {
return {
toDOM: function() {
return ["span", { class: clsWithMdPrefix("table-cell") }, 0];
}
};
},
enumerable: false,
configurable: true
});
return TableCell2;
})(Mark2)
);
var Html = (
/** @class */
(function(_super) {
__extends$1(Html2, _super);
function Html2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Html2.prototype, "name", {
get: function() {
return "html";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Html2.prototype, "schema", {
get: function() {
return {
toDOM: function() {
return ["span", { class: clsWithMdPrefix("html") }, 0];
}
};
},
enumerable: false,
configurable: true
});
return Html2;
})(Mark2)
);
var customBlockSyntax = "$$";
var CustomBlock$1 = (
/** @class */
(function(_super) {
__extends$1(CustomBlock2, _super);
function CustomBlock2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(CustomBlock2.prototype, "name", {
get: function() {
return "customBlock";
},
enumerable: false,
configurable: true
});
Object.defineProperty(CustomBlock2.prototype, "schema", {
get: function() {
return {
toDOM: function() {
return ["span", { class: clsWithMdPrefix("custom-block") }, 0];
}
};
},
enumerable: false,
configurable: true
});
CustomBlock2.prototype.commands = function() {
return function(payload) {
return function(state, dispatch) {
var selection = state.selection, schema = state.schema, tr = state.tr;
var _a = getRangeInfo(selection), startFromOffset = _a.startFromOffset, endToOffset = _a.endToOffset;
if (!(payload === null || payload === void 0 ? void 0 : payload.info)) {
return false;
}
var customBlock2 = "" + customBlockSyntax + payload.info;
var startNode = createTextNode$1(schema, customBlock2);
var endNode = createTextNode$1(schema, customBlockSyntax);
tr.insert(startFromOffset, startNode).split(startFromOffset + customBlock2.length);
tr.split(tr.mapping.map(endToOffset)).insert(tr.mapping.map(endToOffset), endNode);
dispatch(tr.setSelection(createTextSelection(tr, tr.mapping.map(endToOffset) - (customBlockSyntax.length + 2))));
return true;
};
};
};
return CustomBlock2;
})(Mark2)
);
var reTaskMarkerKey = /x|backspace/i;
var reTaskMarker = /^\[(\s*)(x?)(\s*)\](?:\s+)/i;
function smartTask(_a) {
var schema = _a.schema, toastMark = _a.toastMark;
return new Plugin({
props: {
handleDOMEvents: {
keyup: function(view, ev) {
var _a2;
var _b = view.state, doc3 = _b.doc, tr = _b.tr, selection = _b.selection;
if (selection.empty && reTaskMarkerKey.test(ev.key)) {
var _c = getRangeInfo(selection), startIndex = _c.startIndex, startFromOffset = _c.startFromOffset, from2 = _c.from;
var mdPos = [startIndex + 1, from2 - startFromOffset + 1];
var mdNode = toastMark.findNodeAtPosition(mdPos);
var paraNode = findClosestNode(mdNode, function(node) {
var _a3;
return node.type === "paragraph" && ((_a3 = node.parent) === null || _a3 === void 0 ? void 0 : _a3.type) === "item";
});
if ((_a2 = paraNode === null || paraNode === void 0 ? void 0 : paraNode.firstChild) === null || _a2 === void 0 ? void 0 : _a2.literal) {
var firstChild = paraNode.firstChild;
var matched = firstChild.literal.match(reTaskMarker);
if (matched) {
var startMdPos = firstChild.sourcepos[0];
var startSpaces = matched[1], stateChar = matched[2], lastSpaces = matched[3];
var spaces = startSpaces.length + lastSpaces.length;
var startOffset = getNodeContentOffsetRange(doc3, startMdPos[0] - 1).startOffset;
var startPos = startMdPos[1] + startOffset;
if (stateChar) {
var addedPos = spaces ? spaces + 1 : 0;
tr.replaceWith(startPos, addedPos + startPos, schema.text(stateChar));
view.dispatch(tr);
} else if (!spaces) {
tr.insertText(" ", startPos);
view.dispatch(tr);
}
}
}
}
return false;
}
}
}
});
}
var EVENT_TYPE = "cut";
var reLineEnding$2 = /\r\n|\n|\r/;
var MdEditor = (
/** @class */
(function(_super) {
__extends$1(MdEditor2, _super);
function MdEditor2(eventEmitter, options) {
var _this = _super.call(this, eventEmitter) || this;
var toastMark = options.toastMark, _a = options.useCommandShortcut, useCommandShortcut = _a === void 0 ? true : _a, _b = options.mdPlugins, mdPlugins = _b === void 0 ? [] : _b;
_this.editorType = "markdown";
_this.el.classList.add("md-mode");
_this.toastMark = toastMark;
_this.extraPlugins = mdPlugins;
_this.specs = _this.createSpecs();
_this.schema = _this.createSchema();
_this.context = _this.createContext();
_this.keymaps = _this.createKeymaps(useCommandShortcut);
_this.view = _this.createView();
_this.commands = _this.createCommands();
_this.specs.setContext(__assign$1(__assign$1({}, _this.context), { view: _this.view }));
_this.createClipboard();
_this.eventEmitter.listen("changePreviewTabWrite", function(isMarkdownTabMounted) {
return _this.toggleActive(true, isMarkdownTabMounted);
});
_this.eventEmitter.listen("changePreviewTabPreview", function() {
return _this.toggleActive(false);
});
_this.initEvent();
return _this;
}
MdEditor2.prototype.toggleActive = function(active, isMarkdownTabMounted) {
toggleClass(this.el, "active", active);
if (active) {
if (!isMarkdownTabMounted) {
this.focus();
}
} else {
this.blur();
}
};
MdEditor2.prototype.createClipboard = function() {
var _this = this;
this.clipboard = document.createElement("textarea");
this.clipboard.className = cls("pseudo-clipboard");
this.clipboard.addEventListener("paste", function(ev) {
var clipboardData = ev.clipboardData || window.clipboardData;
var items = clipboardData && clipboardData.items;
if (items) {
var containRtfItem = toArray_1(items).some(function(item2) {
return item2.kind === "string" && item2.type === "text/rtf";
});
if (!containRtfItem) {
var imageBlob = pasteImageOnly(items);
if (imageBlob) {
ev.preventDefault();
emitImageBlobHook(_this.eventEmitter, imageBlob, ev.type);
}
}
}
});
this.clipboard.addEventListener("input", function(ev) {
var text2 = ev.target.value;
_this.replaceSelection(text2);
ev.preventDefault();
ev.target.value = "";
});
this.el.insertBefore(this.clipboard, this.view.dom);
};
MdEditor2.prototype.createContext = function() {
return {
toastMark: this.toastMark,
schema: this.schema,
eventEmitter: this.eventEmitter
};
};
MdEditor2.prototype.createSpecs = function() {
return new SpecManager([
new Doc$1(),
new Paragraph$1(),
new Widget(),
new Text$1(),
new Heading$1(),
new BlockQuote$1(),
new CodeBlock$1(),
new CustomBlock$1(),
new Table$1(),
new TableCell(),
new ThematicBreak$1(),
new ListItem$1(),
new Strong$1(),
new Strike$1(),
new Emph$1(),
new Code$1(),
new Link$1(),
new Delimiter(),
new TaskDelimiter(),
new MarkedText(),
new Meta(),
new Html()
]);
};
MdEditor2.prototype.createPlugins = function() {
return __spreadArray$1([
syntaxHighlight(this.context),
previewHighlight(this.context),
smartTask(this.context)
], this.createPluginProps()).concat(this.defaultPlugins);
};
MdEditor2.prototype.createView = function() {
var _this = this;
return new EditorView(this.el, {
state: this.createState(),
dispatchTransaction: function(tr) {
_this.updateMarkdown(tr);
var state = _this.view.state.applyTransaction(tr).state;
_this.view.updateState(state);
_this.emitChangeEvent(tr);
},
handleKeyDown: function(_, ev) {
if ((ev.metaKey || ev.ctrlKey) && ev.key.toUpperCase() === "V") {
_this.clipboard.focus();
}
_this.eventEmitter.emit("keydown", _this.editorType, ev);
return false;
},
handleDOMEvents: {
copy: function(_, ev) {
return _this.captureCopy(ev);
},
cut: function(_, ev) {
return _this.captureCopy(ev, EVENT_TYPE);
},
scroll: function() {
_this.eventEmitter.emit("scroll", "editor");
return true;
},
keyup: function(_, ev) {
_this.eventEmitter.emit("keyup", _this.editorType, ev);
return false;
}
},
nodeViews: {
widget: widgetNodeView
}
});
};
MdEditor2.prototype.createCommands = function() {
return this.specs.commands(this.view);
};
MdEditor2.prototype.captureCopy = function(ev, type) {
ev.preventDefault();
var _a = this.view.state, selection = _a.selection, tr = _a.tr;
if (selection.empty) {
return true;
}
var text2 = this.getChanged(selection.content());
if (ev.clipboardData) {
ev.clipboardData.setData("text/plain", text2);
} else {
window.clipboardData.setData("Text", text2);
}
if (type === EVENT_TYPE) {
this.view.dispatch(tr.deleteSelection().scrollIntoView().setMeta("uiEvent", EVENT_TYPE));
}
return true;
};
MdEditor2.prototype.updateMarkdown = function(tr) {
var _this = this;
if (tr.docChanged) {
tr.steps.forEach(function(step, index2) {
if (step.slice && !(step instanceof ReplaceAroundStep)) {
var doc3 = tr.docs[index2];
var _a = [step.from, step.to], from2 = _a[0], to = _a[1];
var _b = getEditorToMdPos(doc3, from2, to), startPos = _b[0], endPos = _b[1];
var changed = _this.getChanged(step.slice);
if (startPos[0] === endPos[0] && startPos[1] === endPos[1] && changed === "") {
changed = "\n";
}
var editResult = _this.toastMark.editMarkdown(startPos, endPos, changed);
_this.eventEmitter.emit("updatePreview", editResult);
tr.setMeta("editResult", editResult).scrollIntoView();
}
});
}
};
MdEditor2.prototype.getChanged = function(slice2) {
var changed = "";
var from2 = 0;
var to = slice2.content.size;
slice2.content.nodesBetween(from2, to, function(node, pos) {
if (node.isText) {
changed += node.text.slice(Math.max(from2, pos) - pos, to - pos);
} else if (node.isBlock && pos > 0) {
changed += "\n";
}
});
return changed;
};
MdEditor2.prototype.setSelection = function(start, end) {
if (end === void 0) {
end = start;
}
var tr = this.view.state.tr;
var _a = getMdToEditorPos(tr.doc, start, end), from2 = _a[0], to = _a[1];
this.view.dispatch(tr.setSelection(createTextSelection(tr, from2, to)).scrollIntoView());
};
MdEditor2.prototype.replaceSelection = function(text2, start, end) {
var newTr;
var _a = this.view.state, tr = _a.tr, schema = _a.schema, doc3 = _a.doc;
var lineTexts = text2.split(reLineEnding$2);
var nodes = lineTexts.map(function(lineText) {
return createParagraph(schema, createNodesWithWidget(lineText, schema));
});
var slice2 = new Slice(Fragment.from(nodes), 1, 1);
this.focus();
if (start && end) {
var _b = getMdToEditorPos(doc3, start, end), from2 = _b[0], to = _b[1];
newTr = tr.replaceRange(from2, to, slice2);
} else {
newTr = tr.replaceSelection(slice2);
}
this.view.dispatch(newTr.scrollIntoView());
};
MdEditor2.prototype.deleteSelection = function(start, end) {
var newTr;
var _a = this.view.state, tr = _a.tr, doc3 = _a.doc;
if (start && end) {
var _b = getMdToEditorPos(doc3, start, end), from2 = _b[0], to = _b[1];
newTr = tr.deleteRange(from2, to);
} else {
newTr = tr.deleteSelection();
}
this.view.dispatch(newTr.scrollIntoView());
};
MdEditor2.prototype.getSelectedText = function(start, end) {
var _a = this.view.state, doc3 = _a.doc, selection = _a.selection;
var from2 = selection.from, to = selection.to;
if (start && end) {
var pos = getMdToEditorPos(doc3, start, end);
from2 = pos[0];
to = pos[1];
}
return doc3.textBetween(from2, to, "\n");
};
MdEditor2.prototype.getSelection = function() {
var _a = this.view.state.selection, from2 = _a.from, to = _a.to;
return getEditorToMdPos(this.view.state.tr.doc, from2, to);
};
MdEditor2.prototype.setMarkdown = function(markdown, cursorToEnd) {
if (cursorToEnd === void 0) {
cursorToEnd = true;
}
var lineTexts = markdown.split(reLineEnding$2);
var _a = this.view.state, tr = _a.tr, doc3 = _a.doc, schema = _a.schema;
var nodes = lineTexts.map(function(lineText) {
return createParagraph(schema, createNodesWithWidget(lineText, schema));
});
this.view.dispatch(tr.replaceWith(0, doc3.content.size, nodes));
if (cursorToEnd) {
this.moveCursorToEnd(true);
}
};
MdEditor2.prototype.addWidget = function(node, style, mdPos) {
var _a = this.view.state, tr = _a.tr, doc3 = _a.doc, selection = _a.selection;
var pos = mdPos ? getMdToEditorPos(doc3, mdPos, mdPos)[0] : selection.to;
this.view.dispatch(tr.setMeta("widget", { pos, node, style }));
};
MdEditor2.prototype.replaceWithWidget = function(start, end, text2) {
var _a = this.view.state, tr = _a.tr, schema = _a.schema, doc3 = _a.doc;
var pos = getMdToEditorPos(doc3, start, end);
var nodes = createNodesWithWidget(text2, schema);
this.view.dispatch(tr.replaceWith(pos[0], pos[1], nodes));
};
MdEditor2.prototype.getRangeInfoOfNode = function(pos) {
var _a = this.view.state, doc3 = _a.doc, selection = _a.selection;
var mdPos = pos || getEditorToMdPos(doc3, selection.from)[0];
var mdNode = this.toastMark.findNodeAtPosition(mdPos);
if (mdNode.type === "text" && mdNode.parent.type !== "paragraph") {
mdNode = mdNode.parent;
}
mdNode.sourcepos[1][1] += 1;
return { range: mdNode.sourcepos, type: mdNode.type };
};
MdEditor2.prototype.getMarkdown = function() {
return this.toastMark.getLineTexts().map(function(lineText) {
return unwrapWidgetSyntax(lineText);
}).join("\n");
};
MdEditor2.prototype.getToastMark = function() {
return this.toastMark;
};
return MdEditor2;
})(EditorBase)
);
var EVENT_KEY = "_feEventKey";
function safeEvent$2(element, type) {
var events = element[EVENT_KEY];
var handlers2;
if (!events) {
events = element[EVENT_KEY] = {};
}
handlers2 = events[type];
if (!handlers2) {
handlers2 = events[type] = [];
}
return handlers2;
}
var _safeEvent = safeEvent$2;
var isString$1 = isString_1;
var forEach$1 = forEach_1;
var safeEvent$1 = _safeEvent;
function off(element, types, handler) {
if (isString$1(types)) {
forEach$1(types.split(/\s+/g), function(type) {
unbindEvent(element, type, handler);
});
return;
}
forEach$1(types, function(func, type) {
unbindEvent(element, type, func);
});
}
function unbindEvent(element, type, handler) {
var events = safeEvent$1(element, type);
var index2;
if (!handler) {
forEach$1(events, function(item2) {
removeHandler(element, type, item2.wrappedHandler);
});
events.splice(0, events.length);
} else {
forEach$1(events, function(item2, idx) {
if (handler === item2.handler) {
removeHandler(element, type, item2.wrappedHandler);
index2 = idx;
return false;
}
return true;
});
events.splice(index2, 1);
}
}
function removeHandler(element, type, handler) {
if ("removeEventListener" in element) {
element.removeEventListener(type, handler);
} else if ("detachEvent" in element) {
element.detachEvent("on" + type, handler);
}
}
var off_1 = off;
var isString = isString_1;
var forEach2 = forEach_1;
var safeEvent = _safeEvent;
function on(element, types, handler, context) {
if (isString(types)) {
forEach2(types.split(/\s+/g), function(type) {
bindEvent(element, type, handler, context);
});
return;
}
forEach2(types, function(func, type) {
bindEvent(element, type, func, handler);
});
}
function bindEvent(element, type, handler, context) {
function eventHandler(e) {
handler.call(context || element, e || window.event);
}
if ("addEventListener" in element) {
element.addEventListener(type, eventHandler);
} else if ("attachEvent" in element) {
element.attachEvent("on" + type, eventHandler);
}
memorizeHandler(element, type, handler, eventHandler);
}
function memorizeHandler(element, type, handler, wrappedHandler) {
var events = safeEvent(element, type);
var existInEvents = false;
forEach2(events, function(obj) {
if (obj.handler === handler) {
existInEvents = true;
return false;
}
return true;
});
if (!existInEvents) {
events.push({
handler,
wrappedHandler
});
}
}
var on_1 = on;
var extendStatics = function(d, b) {
extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
d2.__proto__ = b2;
} || function(d2, b2) {
for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p];
};
return extendStatics(d, b);
};
function __extends(d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
var __assign = function() {
__assign = Object.assign || function __assign2(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
function __spreadArray(to, from2, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from2.length, ar; i < l; i++) {
if (ar || !(i in from2)) {
if (!ar) ar = Array.prototype.slice.call(from2, 0, i);
ar[i] = from2[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from2));
}
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
var encodeCache = {};
function getEncodeCache(exclude) {
var i, ch, cache2 = encodeCache[exclude];
if (cache2) {
return cache2;
}
cache2 = encodeCache[exclude] = [];
for (i = 0; i < 128; i++) {
ch = String.fromCharCode(i);
if (/^[0-9a-z]$/i.test(ch)) {
cache2.push(ch);
} else {
cache2.push("%" + ("0" + i.toString(16).toUpperCase()).slice(-2));
}
}
for (i = 0; i < exclude.length; i++) {
cache2[exclude.charCodeAt(i)] = exclude[i];
}
return cache2;
}
function encode$1(string, exclude, keepEscaped) {
var i, l, code2, nextCode, cache2, result = "";
if (typeof exclude !== "string") {
keepEscaped = exclude;
exclude = encode$1.defaultChars;
}
if (typeof keepEscaped === "undefined") {
keepEscaped = true;
}
cache2 = getEncodeCache(exclude);
for (i = 0, l = string.length; i < l; i++) {
code2 = string.charCodeAt(i);
if (keepEscaped && code2 === 37 && i + 2 < l) {
if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {
result += string.slice(i, i + 3);
i += 2;
continue;
}
}
if (code2 < 128) {
result += cache2[code2];
continue;
}
if (code2 >= 55296 && code2 <= 57343) {
if (code2 >= 55296 && code2 <= 56319 && i + 1 < l) {
nextCode = string.charCodeAt(i + 1);
if (nextCode >= 56320 && nextCode <= 57343) {
result += encodeURIComponent(string[i] + string[i + 1]);
i++;
continue;
}
}
result += "%EF%BF%BD";
continue;
}
result += encodeURIComponent(string[i]);
}
return result;
}
encode$1.defaultChars = ";/?:@&=+$,-_.!~*'()#";
encode$1.componentChars = "-_.!~*'()";
var encode_1 = encode$1;
var lib = {};
var decode = {};
var Aacute$1 = "\xC1";
var aacute$1 = "\xE1";
var Abreve = "\u0102";
var abreve = "\u0103";
var ac = "\u223E";
var acd = "\u223F";
var acE = "\u223E\u0333";
var Acirc$1 = "\xC2";
var acirc$1 = "\xE2";
var acute$1 = "\xB4";
var Acy = "\u0410";
var acy = "\u0430";
var AElig$1 = "\xC6";
var aelig$1 = "\xE6";
var af = "\u2061";
var Afr = "\u{1D504}";
var afr = "\u{1D51E}";
var Agrave$1 = "\xC0";
var agrave$1 = "\xE0";
var alefsym = "\u2135";
var aleph = "\u2135";
var Alpha = "\u0391";
var alpha = "\u03B1";
var Amacr = "\u0100";
var amacr = "\u0101";
var amalg = "\u2A3F";
var amp$2 = "&";
var AMP$1 = "&";
var andand = "\u2A55";
var And = "\u2A53";
var and = "\u2227";
var andd = "\u2A5C";
var andslope = "\u2A58";
var andv = "\u2A5A";
var ang = "\u2220";
var ange = "\u29A4";
var angle = "\u2220";
var angmsdaa = "\u29A8";
var angmsdab = "\u29A9";
var angmsdac = "\u29AA";
var angmsdad = "\u29AB";
var angmsdae = "\u29AC";
var angmsdaf = "\u29AD";
var angmsdag = "\u29AE";
var angmsdah = "\u29AF";
var angmsd = "\u2221";
var angrt = "\u221F";
var angrtvb = "\u22BE";
var angrtvbd = "\u299D";
var angsph = "\u2222";
var angst = "\xC5";
var angzarr = "\u237C";
var Aogon = "\u0104";
var aogon = "\u0105";
var Aopf = "\u{1D538}";
var aopf = "\u{1D552}";
var apacir = "\u2A6F";
var ap = "\u2248";
var apE = "\u2A70";
var ape = "\u224A";
var apid = "\u224B";
var apos$1 = "'";
var ApplyFunction = "\u2061";
var approx = "\u2248";
var approxeq = "\u224A";
var Aring$1 = "\xC5";
var aring$1 = "\xE5";
var Ascr = "\u{1D49C}";
var ascr = "\u{1D4B6}";
var Assign = "\u2254";
var ast = "*";
var asymp = "\u2248";
var asympeq = "\u224D";
var Atilde$1 = "\xC3";
var atilde$1 = "\xE3";
var Auml$1 = "\xC4";
var auml$1 = "\xE4";
var awconint = "\u2233";
var awint = "\u2A11";
var backcong = "\u224C";
var backepsilon = "\u03F6";
var backprime = "\u2035";
var backsim = "\u223D";
var backsimeq = "\u22CD";
var Backslash = "\u2216";
var Barv = "\u2AE7";
var barvee = "\u22BD";
var barwed = "\u2305";
var Barwed = "\u2306";
var barwedge = "\u2305";
var bbrk = "\u23B5";
var bbrktbrk = "\u23B6";
var bcong = "\u224C";
var Bcy = "\u0411";
var bcy = "\u0431";
var bdquo = "\u201E";
var becaus = "\u2235";
var because = "\u2235";
var Because = "\u2235";
var bemptyv = "\u29B0";
var bepsi = "\u03F6";
var bernou = "\u212C";
var Bernoullis = "\u212C";
var Beta = "\u0392";
var beta = "\u03B2";
var beth = "\u2136";
var between = "\u226C";
var Bfr = "\u{1D505}";
var bfr = "\u{1D51F}";
var bigcap = "\u22C2";
var bigcirc = "\u25EF";
var bigcup = "\u22C3";
var bigodot = "\u2A00";
var bigoplus = "\u2A01";
var bigotimes = "\u2A02";
var bigsqcup = "\u2A06";
var bigstar = "\u2605";
var bigtriangledown = "\u25BD";
var bigtriangleup = "\u25B3";
var biguplus = "\u2A04";
var bigvee = "\u22C1";
var bigwedge = "\u22C0";
var bkarow = "\u290D";
var blacklozenge = "\u29EB";
var blacksquare = "\u25AA";
var blacktriangle = "\u25B4";
var blacktriangledown = "\u25BE";
var blacktriangleleft = "\u25C2";
var blacktriangleright = "\u25B8";
var blank = "\u2423";
var blk12 = "\u2592";
var blk14 = "\u2591";
var blk34 = "\u2593";
var block = "\u2588";
var bne = "=\u20E5";
var bnequiv = "\u2261\u20E5";
var bNot = "\u2AED";
var bnot = "\u2310";
var Bopf = "\u{1D539}";
var bopf = "\u{1D553}";
var bot = "\u22A5";
var bottom = "\u22A5";
var bowtie = "\u22C8";
var boxbox = "\u29C9";
var boxdl = "\u2510";
var boxdL = "\u2555";
var boxDl = "\u2556";
var boxDL = "\u2557";
var boxdr = "\u250C";
var boxdR = "\u2552";
var boxDr = "\u2553";
var boxDR = "\u2554";
var boxh = "\u2500";
var boxH = "\u2550";
var boxhd = "\u252C";
var boxHd = "\u2564";
var boxhD = "\u2565";
var boxHD = "\u2566";
var boxhu = "\u2534";
var boxHu = "\u2567";
var boxhU = "\u2568";
var boxHU = "\u2569";
var boxminus = "\u229F";
var boxplus = "\u229E";
var boxtimes = "\u22A0";
var boxul = "\u2518";
var boxuL = "\u255B";
var boxUl = "\u255C";
var boxUL = "\u255D";
var boxur = "\u2514";
var boxuR = "\u2558";
var boxUr = "\u2559";
var boxUR = "\u255A";
var boxv = "\u2502";
var boxV = "\u2551";
var boxvh = "\u253C";
var boxvH = "\u256A";
var boxVh = "\u256B";
var boxVH = "\u256C";
var boxvl = "\u2524";
var boxvL = "\u2561";
var boxVl = "\u2562";
var boxVL = "\u2563";
var boxvr = "\u251C";
var boxvR = "\u255E";
var boxVr = "\u255F";
var boxVR = "\u2560";
var bprime = "\u2035";
var breve = "\u02D8";
var Breve = "\u02D8";
var brvbar$1 = "\xA6";
var bscr = "\u{1D4B7}";
var Bscr = "\u212C";
var bsemi = "\u204F";
var bsim = "\u223D";
var bsime = "\u22CD";
var bsolb = "\u29C5";
var bsol = "\\";
var bsolhsub = "\u27C8";
var bull = "\u2022";
var bullet = "\u2022";
var bump = "\u224E";
var bumpE = "\u2AAE";
var bumpe = "\u224F";
var Bumpeq = "\u224E";
var bumpeq = "\u224F";
var Cacute = "\u0106";
var cacute = "\u0107";
var capand = "\u2A44";
var capbrcup = "\u2A49";
var capcap = "\u2A4B";
var cap = "\u2229";
var Cap = "\u22D2";
var capcup = "\u2A47";
var capdot = "\u2A40";
var CapitalDifferentialD = "\u2145";
var caps = "\u2229\uFE00";
var caret = "\u2041";
var caron = "\u02C7";
var Cayleys = "\u212D";
var ccaps = "\u2A4D";
var Ccaron = "\u010C";
var ccaron = "\u010D";
var Ccedil$1 = "\xC7";
var ccedil$1 = "\xE7";
var Ccirc = "\u0108";
var ccirc = "\u0109";
var Cconint = "\u2230";
var ccups = "\u2A4C";
var ccupssm = "\u2A50";
var Cdot = "\u010A";
var cdot = "\u010B";
var cedil$1 = "\xB8";
var Cedilla = "\xB8";
var cemptyv = "\u29B2";
var cent$1 = "\xA2";
var centerdot = "\xB7";
var CenterDot = "\xB7";
var cfr = "\u{1D520}";
var Cfr = "\u212D";
var CHcy = "\u0427";
var chcy = "\u0447";
var check = "\u2713";
var checkmark = "\u2713";
var Chi = "\u03A7";
var chi = "\u03C7";
var circ = "\u02C6";
var circeq = "\u2257";
var circlearrowleft = "\u21BA";
var circlearrowright = "\u21BB";
var circledast = "\u229B";
var circledcirc = "\u229A";
var circleddash = "\u229D";
var CircleDot = "\u2299";
var circledR = "\xAE";
var circledS = "\u24C8";
var CircleMinus = "\u2296";
var CirclePlus = "\u2295";
var CircleTimes = "\u2297";
var cir = "\u25CB";
var cirE = "\u29C3";
var cire = "\u2257";
var cirfnint = "\u2A10";
var cirmid = "\u2AEF";
var cirscir = "\u29C2";
var ClockwiseContourIntegral = "\u2232";
var CloseCurlyDoubleQuote = "\u201D";
var CloseCurlyQuote = "\u2019";
var clubs = "\u2663";
var clubsuit = "\u2663";
var colon = ":";
var Colon = "\u2237";
var Colone = "\u2A74";
var colone = "\u2254";
var coloneq = "\u2254";
var comma = ",";
var commat = "@";
var comp = "\u2201";
var compfn = "\u2218";
var complement = "\u2201";
var complexes = "\u2102";
var cong = "\u2245";
var congdot = "\u2A6D";
var Congruent = "\u2261";
var conint = "\u222E";
var Conint = "\u222F";
var ContourIntegral = "\u222E";
var copf = "\u{1D554}";
var Copf = "\u2102";
var coprod = "\u2210";
var Coproduct = "\u2210";
var copy$1 = "\xA9";
var COPY$1 = "\xA9";
var copysr = "\u2117";
var CounterClockwiseContourIntegral = "\u2233";
var crarr = "\u21B5";
var cross = "\u2717";
var Cross = "\u2A2F";
var Cscr = "\u{1D49E}";
var cscr = "\u{1D4B8}";
var csub = "\u2ACF";
var csube = "\u2AD1";
var csup = "\u2AD0";
var csupe = "\u2AD2";
var ctdot = "\u22EF";
var cudarrl = "\u2938";
var cudarrr = "\u2935";
var cuepr = "\u22DE";
var cuesc = "\u22DF";
var cularr = "\u21B6";
var cularrp = "\u293D";
var cupbrcap = "\u2A48";
var cupcap = "\u2A46";
var CupCap = "\u224D";
var cup = "\u222A";
var Cup = "\u22D3";
var cupcup = "\u2A4A";
var cupdot = "\u228D";
var cupor = "\u2A45";
var cups = "\u222A\uFE00";
var curarr = "\u21B7";
var curarrm = "\u293C";
var curlyeqprec = "\u22DE";
var curlyeqsucc = "\u22DF";
var curlyvee = "\u22CE";
var curlywedge = "\u22CF";
var curren$1 = "\xA4";
var curvearrowleft = "\u21B6";
var curvearrowright = "\u21B7";
var cuvee = "\u22CE";
var cuwed = "\u22CF";
var cwconint = "\u2232";
var cwint = "\u2231";
var cylcty = "\u232D";
var dagger = "\u2020";
var Dagger = "\u2021";
var daleth = "\u2138";
var darr = "\u2193";
var Darr = "\u21A1";
var dArr = "\u21D3";
var dash = "\u2010";
var Dashv = "\u2AE4";
var dashv = "\u22A3";
var dbkarow = "\u290F";
var dblac = "\u02DD";
var Dcaron = "\u010E";
var dcaron = "\u010F";
var Dcy = "\u0414";
var dcy = "\u0434";
var ddagger = "\u2021";
var ddarr = "\u21CA";
var DD = "\u2145";
var dd = "\u2146";
var DDotrahd = "\u2911";
var ddotseq = "\u2A77";
var deg$1 = "\xB0";
var Del = "\u2207";
var Delta = "\u0394";
var delta = "\u03B4";
var demptyv = "\u29B1";
var dfisht = "\u297F";
var Dfr = "\u{1D507}";
var dfr = "\u{1D521}";
var dHar = "\u2965";
var dharl = "\u21C3";
var dharr = "\u21C2";
var DiacriticalAcute = "\xB4";
var DiacriticalDot = "\u02D9";
var DiacriticalDoubleAcute = "\u02DD";
var DiacriticalGrave = "`";
var DiacriticalTilde = "\u02DC";
var diam = "\u22C4";
var diamond = "\u22C4";
var Diamond = "\u22C4";
var diamondsuit = "\u2666";
var diams = "\u2666";
var die = "\xA8";
var DifferentialD = "\u2146";
var digamma = "\u03DD";
var disin = "\u22F2";
var div = "\xF7";
var divide$1 = "\xF7";
var divideontimes = "\u22C7";
var divonx = "\u22C7";
var DJcy = "\u0402";
var djcy = "\u0452";
var dlcorn = "\u231E";
var dlcrop = "\u230D";
var dollar = "$";
var Dopf = "\u{1D53B}";
var dopf = "\u{1D555}";
var Dot = "\xA8";
var dot = "\u02D9";
var DotDot = "\u20DC";
var doteq = "\u2250";
var doteqdot = "\u2251";
var DotEqual = "\u2250";
var dotminus = "\u2238";
var dotplus = "\u2214";
var dotsquare = "\u22A1";
var doublebarwedge = "\u2306";
var DoubleContourIntegral = "\u222F";
var DoubleDot = "\xA8";
var DoubleDownArrow = "\u21D3";
var DoubleLeftArrow = "\u21D0";
var DoubleLeftRightArrow = "\u21D4";
var DoubleLeftTee = "\u2AE4";
var DoubleLongLeftArrow = "\u27F8";
var DoubleLongLeftRightArrow = "\u27FA";
var DoubleLongRightArrow = "\u27F9";
var DoubleRightArrow = "\u21D2";
var DoubleRightTee = "\u22A8";
var DoubleUpArrow = "\u21D1";
var DoubleUpDownArrow = "\u21D5";
var DoubleVerticalBar = "\u2225";
var DownArrowBar = "\u2913";
var downarrow = "\u2193";
var DownArrow = "\u2193";
var Downarrow = "\u21D3";
var DownArrowUpArrow = "\u21F5";
var DownBreve = "\u0311";
var downdownarrows = "\u21CA";
var downharpoonleft = "\u21C3";
var downharpoonright = "\u21C2";
var DownLeftRightVector = "\u2950";
var DownLeftTeeVector = "\u295E";
var DownLeftVectorBar = "\u2956";
var DownLeftVector = "\u21BD";
var DownRightTeeVector = "\u295F";
var DownRightVectorBar = "\u2957";
var DownRightVector = "\u21C1";
var DownTeeArrow = "\u21A7";
var DownTee = "\u22A4";
var drbkarow = "\u2910";
var drcorn = "\u231F";
var drcrop = "\u230C";
var Dscr = "\u{1D49F}";
var dscr = "\u{1D4B9}";
var DScy = "\u0405";
var dscy = "\u0455";
var dsol = "\u29F6";
var Dstrok = "\u0110";
var dstrok = "\u0111";
var dtdot = "\u22F1";
var dtri = "\u25BF";
var dtrif = "\u25BE";
var duarr = "\u21F5";
var duhar = "\u296F";
var dwangle = "\u29A6";
var DZcy = "\u040F";
var dzcy = "\u045F";
var dzigrarr = "\u27FF";
var Eacute$1 = "\xC9";
var eacute$1 = "\xE9";
var easter = "\u2A6E";
var Ecaron = "\u011A";
var ecaron = "\u011B";
var Ecirc$1 = "\xCA";
var ecirc$1 = "\xEA";
var ecir = "\u2256";
var ecolon = "\u2255";
var Ecy = "\u042D";
var ecy = "\u044D";
var eDDot = "\u2A77";
var Edot = "\u0116";
var edot = "\u0117";
var eDot = "\u2251";
var ee = "\u2147";
var efDot = "\u2252";
var Efr = "\u{1D508}";
var efr = "\u{1D522}";
var eg = "\u2A9A";
var Egrave$1 = "\xC8";
var egrave$1 = "\xE8";
var egs = "\u2A96";
var egsdot = "\u2A98";
var el = "\u2A99";
var Element$1 = "\u2208";
var elinters = "\u23E7";
var ell = "\u2113";
var els = "\u2A95";
var elsdot = "\u2A97";
var Emacr = "\u0112";
var emacr = "\u0113";
var empty2 = "\u2205";
var emptyset = "\u2205";
var EmptySmallSquare = "\u25FB";
var emptyv = "\u2205";
var EmptyVerySmallSquare = "\u25AB";
var emsp13 = "\u2004";
var emsp14 = "\u2005";
var emsp = "\u2003";
var ENG = "\u014A";
var eng = "\u014B";
var ensp = "\u2002";
var Eogon = "\u0118";
var eogon = "\u0119";
var Eopf = "\u{1D53C}";
var eopf = "\u{1D556}";
var epar = "\u22D5";
var eparsl = "\u29E3";
var eplus = "\u2A71";
var epsi = "\u03B5";
var Epsilon = "\u0395";
var epsilon = "\u03B5";
var epsiv = "\u03F5";
var eqcirc = "\u2256";
var eqcolon = "\u2255";
var eqsim = "\u2242";
var eqslantgtr = "\u2A96";
var eqslantless = "\u2A95";
var Equal = "\u2A75";
var equals = "=";
var EqualTilde = "\u2242";
var equest = "\u225F";
var Equilibrium = "\u21CC";
var equiv = "\u2261";
var equivDD = "\u2A78";
var eqvparsl = "\u29E5";
var erarr = "\u2971";
var erDot = "\u2253";
var escr = "\u212F";
var Escr = "\u2130";
var esdot = "\u2250";
var Esim = "\u2A73";
var esim = "\u2242";
var Eta = "\u0397";
var eta = "\u03B7";
var ETH$1 = "\xD0";
var eth$1 = "\xF0";
var Euml$1 = "\xCB";
var euml$1 = "\xEB";
var euro = "\u20AC";
var excl = "!";
var exist = "\u2203";
var Exists = "\u2203";
var expectation = "\u2130";
var exponentiale = "\u2147";
var ExponentialE = "\u2147";
var fallingdotseq = "\u2252";
var Fcy = "\u0424";
var fcy = "\u0444";
var female = "\u2640";
var ffilig = "\uFB03";
var fflig = "\uFB00";
var ffllig = "\uFB04";
var Ffr = "\u{1D509}";
var ffr = "\u{1D523}";
var filig = "\uFB01";
var FilledSmallSquare = "\u25FC";
var FilledVerySmallSquare = "\u25AA";
var fjlig = "fj";
var flat = "\u266D";
var fllig = "\uFB02";
var fltns = "\u25B1";
var fnof = "\u0192";
var Fopf = "\u{1D53D}";
var fopf = "\u{1D557}";
var forall = "\u2200";
var ForAll = "\u2200";
var fork = "\u22D4";
var forkv = "\u2AD9";
var Fouriertrf = "\u2131";
var fpartint = "\u2A0D";
var frac12$1 = "\xBD";
var frac13 = "\u2153";
var frac14$1 = "\xBC";
var frac15 = "\u2155";
var frac16 = "\u2159";
var frac18 = "\u215B";
var frac23 = "\u2154";
var frac25 = "\u2156";
var frac34$1 = "\xBE";
var frac35 = "\u2157";
var frac38 = "\u215C";
var frac45 = "\u2158";
var frac56 = "\u215A";
var frac58 = "\u215D";
var frac78 = "\u215E";
var frasl = "\u2044";
var frown = "\u2322";
var fscr = "\u{1D4BB}";
var Fscr = "\u2131";
var gacute = "\u01F5";
var Gamma = "\u0393";
var gamma = "\u03B3";
var Gammad = "\u03DC";
var gammad = "\u03DD";
var gap = "\u2A86";
var Gbreve = "\u011E";
var gbreve = "\u011F";
var Gcedil = "\u0122";
var Gcirc = "\u011C";
var gcirc = "\u011D";
var Gcy = "\u0413";
var gcy = "\u0433";
var Gdot = "\u0120";
var gdot = "\u0121";
var ge = "\u2265";
var gE = "\u2267";
var gEl = "\u2A8C";
var gel = "\u22DB";
var geq = "\u2265";
var geqq = "\u2267";
var geqslant = "\u2A7E";
var gescc = "\u2AA9";
var ges = "\u2A7E";
var gesdot = "\u2A80";
var gesdoto = "\u2A82";
var gesdotol = "\u2A84";
var gesl = "\u22DB\uFE00";
var gesles = "\u2A94";
var Gfr = "\u{1D50A}";
var gfr = "\u{1D524}";
var gg = "\u226B";
var Gg = "\u22D9";
var ggg = "\u22D9";
var gimel = "\u2137";
var GJcy = "\u0403";
var gjcy = "\u0453";
var gla = "\u2AA5";
var gl = "\u2277";
var glE = "\u2A92";
var glj = "\u2AA4";
var gnap = "\u2A8A";
var gnapprox = "\u2A8A";
var gne = "\u2A88";
var gnE = "\u2269";
var gneq = "\u2A88";
var gneqq = "\u2269";
var gnsim = "\u22E7";
var Gopf = "\u{1D53E}";
var gopf = "\u{1D558}";
var grave = "`";
var GreaterEqual = "\u2265";
var GreaterEqualLess = "\u22DB";
var GreaterFullEqual = "\u2267";
var GreaterGreater = "\u2AA2";
var GreaterLess = "\u2277";
var GreaterSlantEqual = "\u2A7E";
var GreaterTilde = "\u2273";
var Gscr = "\u{1D4A2}";
var gscr = "\u210A";
var gsim = "\u2273";
var gsime = "\u2A8E";
var gsiml = "\u2A90";
var gtcc = "\u2AA7";
var gtcir = "\u2A7A";
var gt$2 = ">";
var GT$1 = ">";
var Gt = "\u226B";
var gtdot = "\u22D7";
var gtlPar = "\u2995";
var gtquest = "\u2A7C";
var gtrapprox = "\u2A86";
var gtrarr = "\u2978";
var gtrdot = "\u22D7";
var gtreqless = "\u22DB";
var gtreqqless = "\u2A8C";
var gtrless = "\u2277";
var gtrsim = "\u2273";
var gvertneqq = "\u2269\uFE00";
var gvnE = "\u2269\uFE00";
var Hacek = "\u02C7";
var hairsp = "\u200A";
var half = "\xBD";
var hamilt = "\u210B";
var HARDcy = "\u042A";
var hardcy = "\u044A";
var harrcir = "\u2948";
var harr = "\u2194";
var hArr = "\u21D4";
var harrw = "\u21AD";
var Hat = "^";
var hbar = "\u210F";
var Hcirc = "\u0124";
var hcirc = "\u0125";
var hearts = "\u2665";
var heartsuit = "\u2665";
var hellip = "\u2026";
var hercon = "\u22B9";
var hfr = "\u{1D525}";
var Hfr = "\u210C";
var HilbertSpace = "\u210B";
var hksearow = "\u2925";
var hkswarow = "\u2926";
var hoarr = "\u21FF";
var homtht = "\u223B";
var hookleftarrow = "\u21A9";
var hookrightarrow = "\u21AA";
var hopf = "\u{1D559}";
var Hopf = "\u210D";
var horbar = "\u2015";
var HorizontalLine = "\u2500";
var hscr = "\u{1D4BD}";
var Hscr = "\u210B";
var hslash = "\u210F";
var Hstrok = "\u0126";
var hstrok = "\u0127";
var HumpDownHump = "\u224E";
var HumpEqual = "\u224F";
var hybull = "\u2043";
var hyphen = "\u2010";
var Iacute$1 = "\xCD";
var iacute$1 = "\xED";
var ic = "\u2063";
var Icirc$1 = "\xCE";
var icirc$1 = "\xEE";
var Icy = "\u0418";
var icy = "\u0438";
var Idot = "\u0130";
var IEcy = "\u0415";
var iecy = "\u0435";
var iexcl$1 = "\xA1";
var iff = "\u21D4";
var ifr = "\u{1D526}";
var Ifr = "\u2111";
var Igrave$1 = "\xCC";
var igrave$1 = "\xEC";
var ii = "\u2148";
var iiiint = "\u2A0C";
var iiint = "\u222D";
var iinfin = "\u29DC";
var iiota = "\u2129";
var IJlig = "\u0132";
var ijlig = "\u0133";
var Imacr = "\u012A";
var imacr = "\u012B";
var image = "\u2111";
var ImaginaryI = "\u2148";
var imagline = "\u2110";
var imagpart = "\u2111";
var imath = "\u0131";
var Im = "\u2111";
var imof = "\u22B7";
var imped = "\u01B5";
var Implies = "\u21D2";
var incare = "\u2105";
var infin = "\u221E";
var infintie = "\u29DD";
var inodot = "\u0131";
var intcal = "\u22BA";
var int = "\u222B";
var Int = "\u222C";
var integers = "\u2124";
var Integral = "\u222B";
var intercal = "\u22BA";
var Intersection = "\u22C2";
var intlarhk = "\u2A17";
var intprod = "\u2A3C";
var InvisibleComma = "\u2063";
var InvisibleTimes = "\u2062";
var IOcy = "\u0401";
var iocy = "\u0451";
var Iogon = "\u012E";
var iogon = "\u012F";
var Iopf = "\u{1D540}";
var iopf = "\u{1D55A}";
var Iota = "\u0399";
var iota = "\u03B9";
var iprod = "\u2A3C";
var iquest$1 = "\xBF";
var iscr = "\u{1D4BE}";
var Iscr = "\u2110";
var isin = "\u2208";
var isindot = "\u22F5";
var isinE = "\u22F9";
var isins = "\u22F4";
var isinsv = "\u22F3";
var isinv = "\u2208";
var it = "\u2062";
var Itilde = "\u0128";
var itilde = "\u0129";
var Iukcy = "\u0406";
var iukcy = "\u0456";
var Iuml$1 = "\xCF";
var iuml$1 = "\xEF";
var Jcirc = "\u0134";
var jcirc = "\u0135";
var Jcy = "\u0419";
var jcy = "\u0439";
var Jfr = "\u{1D50D}";
var jfr = "\u{1D527}";
var jmath = "\u0237";
var Jopf = "\u{1D541}";
var jopf = "\u{1D55B}";
var Jscr = "\u{1D4A5}";
var jscr = "\u{1D4BF}";
var Jsercy = "\u0408";
var jsercy = "\u0458";
var Jukcy = "\u0404";
var jukcy = "\u0454";
var Kappa = "\u039A";
var kappa = "\u03BA";
var kappav = "\u03F0";
var Kcedil = "\u0136";
var kcedil = "\u0137";
var Kcy = "\u041A";
var kcy = "\u043A";
var Kfr = "\u{1D50E}";
var kfr = "\u{1D528}";
var kgreen = "\u0138";
var KHcy = "\u0425";
var khcy = "\u0445";
var KJcy = "\u040C";
var kjcy = "\u045C";
var Kopf = "\u{1D542}";
var kopf = "\u{1D55C}";
var Kscr = "\u{1D4A6}";
var kscr = "\u{1D4C0}";
var lAarr = "\u21DA";
var Lacute = "\u0139";
var lacute = "\u013A";
var laemptyv = "\u29B4";
var lagran = "\u2112";
var Lambda = "\u039B";
var lambda = "\u03BB";
var lang = "\u27E8";
var Lang = "\u27EA";
var langd = "\u2991";
var langle = "\u27E8";
var lap = "\u2A85";
var Laplacetrf = "\u2112";
var laquo$1 = "\xAB";
var larrb = "\u21E4";
var larrbfs = "\u291F";
var larr = "\u2190";
var Larr = "\u219E";
var lArr = "\u21D0";
var larrfs = "\u291D";
var larrhk = "\u21A9";
var larrlp = "\u21AB";
var larrpl = "\u2939";
var larrsim = "\u2973";
var larrtl = "\u21A2";
var latail = "\u2919";
var lAtail = "\u291B";
var lat = "\u2AAB";
var late = "\u2AAD";
var lates = "\u2AAD\uFE00";
var lbarr = "\u290C";
var lBarr = "\u290E";
var lbbrk = "\u2772";
var lbrace = "{";
var lbrack = "[";
var lbrke = "\u298B";
var lbrksld = "\u298F";
var lbrkslu = "\u298D";
var Lcaron = "\u013D";
var lcaron = "\u013E";
var Lcedil = "\u013B";
var lcedil = "\u013C";
var lceil = "\u2308";
var lcub = "{";
var Lcy = "\u041B";
var lcy = "\u043B";
var ldca = "\u2936";
var ldquo = "\u201C";
var ldquor = "\u201E";
var ldrdhar = "\u2967";
var ldrushar = "\u294B";
var ldsh = "\u21B2";
var le = "\u2264";
var lE = "\u2266";
var LeftAngleBracket = "\u27E8";
var LeftArrowBar = "\u21E4";
var leftarrow = "\u2190";
var LeftArrow = "\u2190";
var Leftarrow = "\u21D0";
var LeftArrowRightArrow = "\u21C6";
var leftarrowtail = "\u21A2";
var LeftCeiling = "\u2308";
var LeftDoubleBracket = "\u27E6";
var LeftDownTeeVector = "\u2961";
var LeftDownVectorBar = "\u2959";
var LeftDownVector = "\u21C3";
var LeftFloor = "\u230A";
var leftharpoondown = "\u21BD";
var leftharpoonup = "\u21BC";
var leftleftarrows = "\u21C7";
var leftrightarrow = "\u2194";
var LeftRightArrow = "\u2194";
var Leftrightarrow = "\u21D4";
var leftrightarrows = "\u21C6";
var leftrightharpoons = "\u21CB";
var leftrightsquigarrow = "\u21AD";
var LeftRightVector = "\u294E";
var LeftTeeArrow = "\u21A4";
var LeftTee = "\u22A3";
var LeftTeeVector = "\u295A";
var leftthreetimes = "\u22CB";
var LeftTriangleBar = "\u29CF";
var LeftTriangle = "\u22B2";
var LeftTriangleEqual = "\u22B4";
var LeftUpDownVector = "\u2951";
var LeftUpTeeVector = "\u2960";
var LeftUpVectorBar = "\u2958";
var LeftUpVector = "\u21BF";
var LeftVectorBar = "\u2952";
var LeftVector = "\u21BC";
var lEg = "\u2A8B";
var leg = "\u22DA";
var leq = "\u2264";
var leqq = "\u2266";
var leqslant = "\u2A7D";
var lescc = "\u2AA8";
var les = "\u2A7D";
var lesdot = "\u2A7F";
var lesdoto = "\u2A81";
var lesdotor = "\u2A83";
var lesg = "\u22DA\uFE00";
var lesges = "\u2A93";
var lessapprox = "\u2A85";
var lessdot = "\u22D6";
var lesseqgtr = "\u22DA";
var lesseqqgtr = "\u2A8B";
var LessEqualGreater = "\u22DA";
var LessFullEqual = "\u2266";
var LessGreater = "\u2276";
var lessgtr = "\u2276";
var LessLess = "\u2AA1";
var lesssim = "\u2272";
var LessSlantEqual = "\u2A7D";
var LessTilde = "\u2272";
var lfisht = "\u297C";
var lfloor = "\u230A";
var Lfr = "\u{1D50F}";
var lfr = "\u{1D529}";
var lg = "\u2276";
var lgE = "\u2A91";
var lHar = "\u2962";
var lhard = "\u21BD";
var lharu = "\u21BC";
var lharul = "\u296A";
var lhblk = "\u2584";
var LJcy = "\u0409";
var ljcy = "\u0459";
var llarr = "\u21C7";
var ll = "\u226A";
var Ll = "\u22D8";
var llcorner = "\u231E";
var Lleftarrow = "\u21DA";
var llhard = "\u296B";
var lltri = "\u25FA";
var Lmidot = "\u013F";
var lmidot = "\u0140";
var lmoustache = "\u23B0";
var lmoust = "\u23B0";
var lnap = "\u2A89";
var lnapprox = "\u2A89";
var lne = "\u2A87";
var lnE = "\u2268";
var lneq = "\u2A87";
var lneqq = "\u2268";
var lnsim = "\u22E6";
var loang = "\u27EC";
var loarr = "\u21FD";
var lobrk = "\u27E6";
var longleftarrow = "\u27F5";
var LongLeftArrow = "\u27F5";
var Longleftarrow = "\u27F8";
var longleftrightarrow = "\u27F7";
var LongLeftRightArrow = "\u27F7";
var Longleftrightarrow = "\u27FA";
var longmapsto = "\u27FC";
var longrightarrow = "\u27F6";
var LongRightArrow = "\u27F6";
var Longrightarrow = "\u27F9";
var looparrowleft = "\u21AB";
var looparrowright = "\u21AC";
var lopar = "\u2985";
var Lopf = "\u{1D543}";
var lopf = "\u{1D55D}";
var loplus = "\u2A2D";
var lotimes = "\u2A34";
var lowast = "\u2217";
var lowbar = "_";
var LowerLeftArrow = "\u2199";
var LowerRightArrow = "\u2198";
var loz = "\u25CA";
var lozenge = "\u25CA";
var lozf = "\u29EB";
var lpar = "(";
var lparlt = "\u2993";
var lrarr = "\u21C6";
var lrcorner = "\u231F";
var lrhar = "\u21CB";
var lrhard = "\u296D";
var lrm = "\u200E";
var lrtri = "\u22BF";
var lsaquo = "\u2039";
var lscr = "\u{1D4C1}";
var Lscr = "\u2112";
var lsh = "\u21B0";
var Lsh = "\u21B0";
var lsim = "\u2272";
var lsime = "\u2A8D";
var lsimg = "\u2A8F";
var lsqb = "[";
var lsquo = "\u2018";
var lsquor = "\u201A";
var Lstrok = "\u0141";
var lstrok = "\u0142";
var ltcc = "\u2AA6";
var ltcir = "\u2A79";
var lt$2 = "<";
var LT$1 = "<";
var Lt = "\u226A";
var ltdot = "\u22D6";
var lthree = "\u22CB";
var ltimes = "\u22C9";
var ltlarr = "\u2976";
var ltquest = "\u2A7B";
var ltri = "\u25C3";
var ltrie = "\u22B4";
var ltrif = "\u25C2";
var ltrPar = "\u2996";
var lurdshar = "\u294A";
var luruhar = "\u2966";
var lvertneqq = "\u2268\uFE00";
var lvnE = "\u2268\uFE00";
var macr$1 = "\xAF";
var male = "\u2642";
var malt = "\u2720";
var maltese = "\u2720";
var map2 = "\u21A6";
var mapsto = "\u21A6";
var mapstodown = "\u21A7";
var mapstoleft = "\u21A4";
var mapstoup = "\u21A5";
var marker = "\u25AE";
var mcomma = "\u2A29";
var Mcy = "\u041C";
var mcy = "\u043C";
var mdash = "\u2014";
var mDDot = "\u223A";
var measuredangle = "\u2221";
var MediumSpace = "\u205F";
var Mellintrf = "\u2133";
var Mfr = "\u{1D510}";
var mfr = "\u{1D52A}";
var mho = "\u2127";
var micro$1 = "\xB5";
var midast = "*";
var midcir = "\u2AF0";
var mid = "\u2223";
var middot$1 = "\xB7";
var minusb = "\u229F";
var minus = "\u2212";
var minusd = "\u2238";
var minusdu = "\u2A2A";
var MinusPlus = "\u2213";
var mlcp = "\u2ADB";
var mldr = "\u2026";
var mnplus = "\u2213";
var models = "\u22A7";
var Mopf = "\u{1D544}";
var mopf = "\u{1D55E}";
var mp = "\u2213";
var mscr = "\u{1D4C2}";
var Mscr = "\u2133";
var mstpos = "\u223E";
var Mu = "\u039C";
var mu = "\u03BC";
var multimap = "\u22B8";
var mumap = "\u22B8";
var nabla = "\u2207";
var Nacute = "\u0143";
var nacute = "\u0144";
var nang = "\u2220\u20D2";
var nap = "\u2249";
var napE = "\u2A70\u0338";
var napid = "\u224B\u0338";
var napos = "\u0149";
var napprox = "\u2249";
var natural = "\u266E";
var naturals = "\u2115";
var natur = "\u266E";
var nbsp$1 = "\xA0";
var nbump = "\u224E\u0338";
var nbumpe = "\u224F\u0338";
var ncap = "\u2A43";
var Ncaron = "\u0147";
var ncaron = "\u0148";
var Ncedil = "\u0145";
var ncedil = "\u0146";
var ncong = "\u2247";
var ncongdot = "\u2A6D\u0338";
var ncup = "\u2A42";
var Ncy = "\u041D";
var ncy = "\u043D";
var ndash = "\u2013";
var nearhk = "\u2924";
var nearr = "\u2197";
var neArr = "\u21D7";
var nearrow = "\u2197";
var ne = "\u2260";
var nedot = "\u2250\u0338";
var NegativeMediumSpace = "\u200B";
var NegativeThickSpace = "\u200B";
var NegativeThinSpace = "\u200B";
var NegativeVeryThinSpace = "\u200B";
var nequiv = "\u2262";
var nesear = "\u2928";
var nesim = "\u2242\u0338";
var NestedGreaterGreater = "\u226B";
var NestedLessLess = "\u226A";
var NewLine = "\n";
var nexist = "\u2204";
var nexists = "\u2204";
var Nfr = "\u{1D511}";
var nfr = "\u{1D52B}";
var ngE = "\u2267\u0338";
var nge = "\u2271";
var ngeq = "\u2271";
var ngeqq = "\u2267\u0338";
var ngeqslant = "\u2A7E\u0338";
var nges = "\u2A7E\u0338";
var nGg = "\u22D9\u0338";
var ngsim = "\u2275";
var nGt = "\u226B\u20D2";
var ngt = "\u226F";
var ngtr = "\u226F";
var nGtv = "\u226B\u0338";
var nharr = "\u21AE";
var nhArr = "\u21CE";
var nhpar = "\u2AF2";
var ni = "\u220B";
var nis = "\u22FC";
var nisd = "\u22FA";
var niv = "\u220B";
var NJcy = "\u040A";
var njcy = "\u045A";
var nlarr = "\u219A";
var nlArr = "\u21CD";
var nldr = "\u2025";
var nlE = "\u2266\u0338";
var nle = "\u2270";
var nleftarrow = "\u219A";
var nLeftarrow = "\u21CD";
var nleftrightarrow = "\u21AE";
var nLeftrightarrow = "\u21CE";
var nleq = "\u2270";
var nleqq = "\u2266\u0338";
var nleqslant = "\u2A7D\u0338";
var nles = "\u2A7D\u0338";
var nless = "\u226E";
var nLl = "\u22D8\u0338";
var nlsim = "\u2274";
var nLt = "\u226A\u20D2";
var nlt = "\u226E";
var nltri = "\u22EA";
var nltrie = "\u22EC";
var nLtv = "\u226A\u0338";
var nmid = "\u2224";
var NoBreak = "\u2060";
var NonBreakingSpace = "\xA0";
var nopf = "\u{1D55F}";
var Nopf = "\u2115";
var Not = "\u2AEC";
var not$1 = "\xAC";
var NotCongruent = "\u2262";
var NotCupCap = "\u226D";
var NotDoubleVerticalBar = "\u2226";
var NotElement = "\u2209";
var NotEqual = "\u2260";
var NotEqualTilde = "\u2242\u0338";
var NotExists = "\u2204";
var NotGreater = "\u226F";
var NotGreaterEqual = "\u2271";
var NotGreaterFullEqual = "\u2267\u0338";
var NotGreaterGreater = "\u226B\u0338";
var NotGreaterLess = "\u2279";
var NotGreaterSlantEqual = "\u2A7E\u0338";
var NotGreaterTilde = "\u2275";
var NotHumpDownHump = "\u224E\u0338";
var NotHumpEqual = "\u224F\u0338";
var notin = "\u2209";
var notindot = "\u22F5\u0338";
var notinE = "\u22F9\u0338";
var notinva = "\u2209";
var notinvb = "\u22F7";
var notinvc = "\u22F6";
var NotLeftTriangleBar = "\u29CF\u0338";
var NotLeftTriangle = "\u22EA";
var NotLeftTriangleEqual = "\u22EC";
var NotLess = "\u226E";
var NotLessEqual = "\u2270";
var NotLessGreater = "\u2278";
var NotLessLess = "\u226A\u0338";
var NotLessSlantEqual = "\u2A7D\u0338";
var NotLessTilde = "\u2274";
var NotNestedGreaterGreater = "\u2AA2\u0338";
var NotNestedLessLess = "\u2AA1\u0338";
var notni = "\u220C";
var notniva = "\u220C";
var notnivb = "\u22FE";
var notnivc = "\u22FD";
var NotPrecedes = "\u2280";
var NotPrecedesEqual = "\u2AAF\u0338";
var NotPrecedesSlantEqual = "\u22E0";
var NotReverseElement = "\u220C";
var NotRightTriangleBar = "\u29D0\u0338";
var NotRightTriangle = "\u22EB";
var NotRightTriangleEqual = "\u22ED";
var NotSquareSubset = "\u228F\u0338";
var NotSquareSubsetEqual = "\u22E2";
var NotSquareSuperset = "\u2290\u0338";
var NotSquareSupersetEqual = "\u22E3";
var NotSubset = "\u2282\u20D2";
var NotSubsetEqual = "\u2288";
var NotSucceeds = "\u2281";
var NotSucceedsEqual = "\u2AB0\u0338";
var NotSucceedsSlantEqual = "\u22E1";
var NotSucceedsTilde = "\u227F\u0338";
var NotSuperset = "\u2283\u20D2";
var NotSupersetEqual = "\u2289";
var NotTilde = "\u2241";
var NotTildeEqual = "\u2244";
var NotTildeFullEqual = "\u2247";
var NotTildeTilde = "\u2249";
var NotVerticalBar = "\u2224";
var nparallel = "\u2226";
var npar = "\u2226";
var nparsl = "\u2AFD\u20E5";
var npart = "\u2202\u0338";
var npolint = "\u2A14";
var npr = "\u2280";
var nprcue = "\u22E0";
var nprec = "\u2280";
var npreceq = "\u2AAF\u0338";
var npre = "\u2AAF\u0338";
var nrarrc = "\u2933\u0338";
var nrarr = "\u219B";
var nrArr = "\u21CF";
var nrarrw = "\u219D\u0338";
var nrightarrow = "\u219B";
var nRightarrow = "\u21CF";
var nrtri = "\u22EB";
var nrtrie = "\u22ED";
var nsc = "\u2281";
var nsccue = "\u22E1";
var nsce = "\u2AB0\u0338";
var Nscr = "\u{1D4A9}";
var nscr = "\u{1D4C3}";
var nshortmid = "\u2224";
var nshortparallel = "\u2226";
var nsim = "\u2241";
var nsime = "\u2244";
var nsimeq = "\u2244";
var nsmid = "\u2224";
var nspar = "\u2226";
var nsqsube = "\u22E2";
var nsqsupe = "\u22E3";
var nsub = "\u2284";
var nsubE = "\u2AC5\u0338";
var nsube = "\u2288";
var nsubset = "\u2282\u20D2";
var nsubseteq = "\u2288";
var nsubseteqq = "\u2AC5\u0338";
var nsucc = "\u2281";
var nsucceq = "\u2AB0\u0338";
var nsup = "\u2285";
var nsupE = "\u2AC6\u0338";
var nsupe = "\u2289";
var nsupset = "\u2283\u20D2";
var nsupseteq = "\u2289";
var nsupseteqq = "\u2AC6\u0338";
var ntgl = "\u2279";
var Ntilde$1 = "\xD1";
var ntilde$1 = "\xF1";
var ntlg = "\u2278";
var ntriangleleft = "\u22EA";
var ntrianglelefteq = "\u22EC";
var ntriangleright = "\u22EB";
var ntrianglerighteq = "\u22ED";
var Nu = "\u039D";
var nu = "\u03BD";
var num = "#";
var numero = "\u2116";
var numsp = "\u2007";
var nvap = "\u224D\u20D2";
var nvdash = "\u22AC";
var nvDash = "\u22AD";
var nVdash = "\u22AE";
var nVDash = "\u22AF";
var nvge = "\u2265\u20D2";
var nvgt = ">\u20D2";
var nvHarr = "\u2904";
var nvinfin = "\u29DE";
var nvlArr = "\u2902";
var nvle = "\u2264\u20D2";
var nvlt = "<\u20D2";
var nvltrie = "\u22B4\u20D2";
var nvrArr = "\u2903";
var nvrtrie = "\u22B5\u20D2";
var nvsim = "\u223C\u20D2";
var nwarhk = "\u2923";
var nwarr = "\u2196";
var nwArr = "\u21D6";
var nwarrow = "\u2196";
var nwnear = "\u2927";
var Oacute$1 = "\xD3";
var oacute$1 = "\xF3";
var oast = "\u229B";
var Ocirc$1 = "\xD4";
var ocirc$1 = "\xF4";
var ocir = "\u229A";
var Ocy = "\u041E";
var ocy = "\u043E";
var odash = "\u229D";
var Odblac = "\u0150";
var odblac = "\u0151";
var odiv = "\u2A38";
var odot = "\u2299";
var odsold = "\u29BC";
var OElig = "\u0152";
var oelig = "\u0153";
var ofcir = "\u29BF";
var Ofr = "\u{1D512}";
var ofr = "\u{1D52C}";
var ogon = "\u02DB";
var Ograve$1 = "\xD2";
var ograve$1 = "\xF2";
var ogt = "\u29C1";
var ohbar = "\u29B5";
var ohm = "\u03A9";
var oint = "\u222E";
var olarr = "\u21BA";
var olcir = "\u29BE";
var olcross = "\u29BB";
var oline = "\u203E";
var olt = "\u29C0";
var Omacr = "\u014C";
var omacr = "\u014D";
var Omega = "\u03A9";
var omega = "\u03C9";
var Omicron = "\u039F";
var omicron = "\u03BF";
var omid = "\u29B6";
var ominus = "\u2296";
var Oopf = "\u{1D546}";
var oopf = "\u{1D560}";
var opar = "\u29B7";
var OpenCurlyDoubleQuote = "\u201C";
var OpenCurlyQuote = "\u2018";
var operp = "\u29B9";
var oplus = "\u2295";
var orarr = "\u21BB";
var Or = "\u2A54";
var or = "\u2228";
var ord = "\u2A5D";
var order = "\u2134";
var orderof = "\u2134";
var ordf$1 = "\xAA";
var ordm$1 = "\xBA";
var origof = "\u22B6";
var oror = "\u2A56";
var orslope = "\u2A57";
var orv = "\u2A5B";
var oS = "\u24C8";
var Oscr = "\u{1D4AA}";
var oscr = "\u2134";
var Oslash$1 = "\xD8";
var oslash$1 = "\xF8";
var osol = "\u2298";
var Otilde$1 = "\xD5";
var otilde$1 = "\xF5";
var otimesas = "\u2A36";
var Otimes = "\u2A37";
var otimes = "\u2297";
var Ouml$1 = "\xD6";
var ouml$1 = "\xF6";
var ovbar = "\u233D";
var OverBar = "\u203E";
var OverBrace = "\u23DE";
var OverBracket = "\u23B4";
var OverParenthesis = "\u23DC";
var para$1 = "\xB6";
var parallel = "\u2225";
var par = "\u2225";
var parsim = "\u2AF3";
var parsl = "\u2AFD";
var part = "\u2202";
var PartialD = "\u2202";
var Pcy = "\u041F";
var pcy = "\u043F";
var percnt = "%";
var period = ".";
var permil = "\u2030";
var perp = "\u22A5";
var pertenk = "\u2031";
var Pfr = "\u{1D513}";
var pfr = "\u{1D52D}";
var Phi = "\u03A6";
var phi = "\u03C6";
var phiv = "\u03D5";
var phmmat = "\u2133";
var phone = "\u260E";
var Pi = "\u03A0";
var pi = "\u03C0";
var pitchfork = "\u22D4";
var piv = "\u03D6";
var planck = "\u210F";
var planckh = "\u210E";
var plankv = "\u210F";
var plusacir = "\u2A23";
var plusb = "\u229E";
var pluscir = "\u2A22";
var plus = "+";
var plusdo = "\u2214";
var plusdu = "\u2A25";
var pluse = "\u2A72";
var PlusMinus = "\xB1";
var plusmn$1 = "\xB1";
var plussim = "\u2A26";
var plustwo = "\u2A27";
var pm = "\xB1";
var Poincareplane = "\u210C";
var pointint = "\u2A15";
var popf = "\u{1D561}";
var Popf = "\u2119";
var pound$1 = "\xA3";
var prap = "\u2AB7";
var Pr = "\u2ABB";
var pr = "\u227A";
var prcue = "\u227C";
var precapprox = "\u2AB7";
var prec = "\u227A";
var preccurlyeq = "\u227C";
var Precedes = "\u227A";
var PrecedesEqual = "\u2AAF";
var PrecedesSlantEqual = "\u227C";
var PrecedesTilde = "\u227E";
var preceq = "\u2AAF";
var precnapprox = "\u2AB9";
var precneqq = "\u2AB5";
var precnsim = "\u22E8";
var pre = "\u2AAF";
var prE = "\u2AB3";
var precsim = "\u227E";
var prime = "\u2032";
var Prime = "\u2033";
var primes = "\u2119";
var prnap = "\u2AB9";
var prnE = "\u2AB5";
var prnsim = "\u22E8";
var prod = "\u220F";
var Product = "\u220F";
var profalar = "\u232E";
var profline = "\u2312";
var profsurf = "\u2313";
var prop = "\u221D";
var Proportional = "\u221D";
var Proportion = "\u2237";
var propto = "\u221D";
var prsim = "\u227E";
var prurel = "\u22B0";
var Pscr = "\u{1D4AB}";
var pscr = "\u{1D4C5}";
var Psi = "\u03A8";
var psi = "\u03C8";
var puncsp = "\u2008";
var Qfr = "\u{1D514}";
var qfr = "\u{1D52E}";
var qint = "\u2A0C";
var qopf = "\u{1D562}";
var Qopf = "\u211A";
var qprime = "\u2057";
var Qscr = "\u{1D4AC}";
var qscr = "\u{1D4C6}";
var quaternions = "\u210D";
var quatint = "\u2A16";
var quest = "?";
var questeq = "\u225F";
var quot$2 = '"';
var QUOT$1 = '"';
var rAarr = "\u21DB";
var race = "\u223D\u0331";
var Racute = "\u0154";
var racute = "\u0155";
var radic = "\u221A";
var raemptyv = "\u29B3";
var rang = "\u27E9";
var Rang = "\u27EB";
var rangd = "\u2992";
var range = "\u29A5";
var rangle = "\u27E9";
var raquo$1 = "\xBB";
var rarrap = "\u2975";
var rarrb = "\u21E5";
var rarrbfs = "\u2920";
var rarrc = "\u2933";
var rarr = "\u2192";
var Rarr = "\u21A0";
var rArr = "\u21D2";
var rarrfs = "\u291E";
var rarrhk = "\u21AA";
var rarrlp = "\u21AC";
var rarrpl = "\u2945";
var rarrsim = "\u2974";
var Rarrtl = "\u2916";
var rarrtl = "\u21A3";
var rarrw = "\u219D";
var ratail = "\u291A";
var rAtail = "\u291C";
var ratio = "\u2236";
var rationals = "\u211A";
var rbarr = "\u290D";
var rBarr = "\u290F";
var RBarr = "\u2910";
var rbbrk = "\u2773";
var rbrace = "}";
var rbrack = "]";
var rbrke = "\u298C";
var rbrksld = "\u298E";
var rbrkslu = "\u2990";
var Rcaron = "\u0158";
var rcaron = "\u0159";
var Rcedil = "\u0156";
var rcedil = "\u0157";
var rceil = "\u2309";
var rcub = "}";
var Rcy = "\u0420";
var rcy = "\u0440";
var rdca = "\u2937";
var rdldhar = "\u2969";
var rdquo = "\u201D";
var rdquor = "\u201D";
var rdsh = "\u21B3";
var real = "\u211C";
var realine = "\u211B";
var realpart = "\u211C";
var reals = "\u211D";
var Re = "\u211C";
var rect = "\u25AD";
var reg$1 = "\xAE";
var REG$1 = "\xAE";
var ReverseElement = "\u220B";
var ReverseEquilibrium = "\u21CB";
var ReverseUpEquilibrium = "\u296F";
var rfisht = "\u297D";
var rfloor = "\u230B";
var rfr = "\u{1D52F}";
var Rfr = "\u211C";
var rHar = "\u2964";
var rhard = "\u21C1";
var rharu = "\u21C0";
var rharul = "\u296C";
var Rho = "\u03A1";
var rho = "\u03C1";
var rhov = "\u03F1";
var RightAngleBracket = "\u27E9";
var RightArrowBar = "\u21E5";
var rightarrow = "\u2192";
var RightArrow = "\u2192";
var Rightarrow = "\u21D2";
var RightArrowLeftArrow = "\u21C4";
var rightarrowtail = "\u21A3";
var RightCeiling = "\u2309";
var RightDoubleBracket = "\u27E7";
var RightDownTeeVector = "\u295D";
var RightDownVectorBar = "\u2955";
var RightDownVector = "\u21C2";
var RightFloor = "\u230B";
var rightharpoondown = "\u21C1";
var rightharpoonup = "\u21C0";
var rightleftarrows = "\u21C4";
var rightleftharpoons = "\u21CC";
var rightrightarrows = "\u21C9";
var rightsquigarrow = "\u219D";
var RightTeeArrow = "\u21A6";
var RightTee = "\u22A2";
var RightTeeVector = "\u295B";
var rightthreetimes = "\u22CC";
var RightTriangleBar = "\u29D0";
var RightTriangle = "\u22B3";
var RightTriangleEqual = "\u22B5";
var RightUpDownVector = "\u294F";
var RightUpTeeVector = "\u295C";
var RightUpVectorBar = "\u2954";
var RightUpVector = "\u21BE";
var RightVectorBar = "\u2953";
var RightVector = "\u21C0";
var ring = "\u02DA";
var risingdotseq = "\u2253";
var rlarr = "\u21C4";
var rlhar = "\u21CC";
var rlm = "\u200F";
var rmoustache = "\u23B1";
var rmoust = "\u23B1";
var rnmid = "\u2AEE";
var roang = "\u27ED";
var roarr = "\u21FE";
var robrk = "\u27E7";
var ropar = "\u2986";
var ropf = "\u{1D563}";
var Ropf = "\u211D";
var roplus = "\u2A2E";
var rotimes = "\u2A35";
var RoundImplies = "\u2970";
var rpar = ")";
var rpargt = "\u2994";
var rppolint = "\u2A12";
var rrarr = "\u21C9";
var Rrightarrow = "\u21DB";
var rsaquo = "\u203A";
var rscr = "\u{1D4C7}";
var Rscr = "\u211B";
var rsh = "\u21B1";
var Rsh = "\u21B1";
var rsqb = "]";
var rsquo = "\u2019";
var rsquor = "\u2019";
var rthree = "\u22CC";
var rtimes = "\u22CA";
var rtri = "\u25B9";
var rtrie = "\u22B5";
var rtrif = "\u25B8";
var rtriltri = "\u29CE";
var RuleDelayed = "\u29F4";
var ruluhar = "\u2968";
var rx = "\u211E";
var Sacute = "\u015A";
var sacute = "\u015B";
var sbquo = "\u201A";
var scap = "\u2AB8";
var Scaron = "\u0160";
var scaron = "\u0161";
var Sc = "\u2ABC";
var sc = "\u227B";
var sccue = "\u227D";
var sce = "\u2AB0";
var scE = "\u2AB4";
var Scedil = "\u015E";
var scedil = "\u015F";
var Scirc = "\u015C";
var scirc = "\u015D";
var scnap = "\u2ABA";
var scnE = "\u2AB6";
var scnsim = "\u22E9";
var scpolint = "\u2A13";
var scsim = "\u227F";
var Scy = "\u0421";
var scy = "\u0441";
var sdotb = "\u22A1";
var sdot = "\u22C5";
var sdote = "\u2A66";
var searhk = "\u2925";
var searr = "\u2198";
var seArr = "\u21D8";
var searrow = "\u2198";
var sect$1 = "\xA7";
var semi = ";";
var seswar = "\u2929";
var setminus = "\u2216";
var setmn = "\u2216";
var sext = "\u2736";
var Sfr = "\u{1D516}";
var sfr = "\u{1D530}";
var sfrown = "\u2322";
var sharp = "\u266F";
var SHCHcy = "\u0429";
var shchcy = "\u0449";
var SHcy = "\u0428";
var shcy = "\u0448";
var ShortDownArrow = "\u2193";
var ShortLeftArrow = "\u2190";
var shortmid = "\u2223";
var shortparallel = "\u2225";
var ShortRightArrow = "\u2192";
var ShortUpArrow = "\u2191";
var shy$1 = "\xAD";
var Sigma = "\u03A3";
var sigma = "\u03C3";
var sigmaf = "\u03C2";
var sigmav = "\u03C2";
var sim = "\u223C";
var simdot = "\u2A6A";
var sime = "\u2243";
var simeq = "\u2243";
var simg = "\u2A9E";
var simgE = "\u2AA0";
var siml = "\u2A9D";
var simlE = "\u2A9F";
var simne = "\u2246";
var simplus = "\u2A24";
var simrarr = "\u2972";
var slarr = "\u2190";
var SmallCircle = "\u2218";
var smallsetminus = "\u2216";
var smashp = "\u2A33";
var smeparsl = "\u29E4";
var smid = "\u2223";
var smile = "\u2323";
var smt = "\u2AAA";
var smte = "\u2AAC";
var smtes = "\u2AAC\uFE00";
var SOFTcy = "\u042C";
var softcy = "\u044C";
var solbar = "\u233F";
var solb = "\u29C4";
var sol = "/";
var Sopf = "\u{1D54A}";
var sopf = "\u{1D564}";
var spades = "\u2660";
var spadesuit = "\u2660";
var spar = "\u2225";
var sqcap = "\u2293";
var sqcaps = "\u2293\uFE00";
var sqcup = "\u2294";
var sqcups = "\u2294\uFE00";
var Sqrt = "\u221A";
var sqsub = "\u228F";
var sqsube = "\u2291";
var sqsubset = "\u228F";
var sqsubseteq = "\u2291";
var sqsup = "\u2290";
var sqsupe = "\u2292";
var sqsupset = "\u2290";
var sqsupseteq = "\u2292";
var square = "\u25A1";
var Square = "\u25A1";
var SquareIntersection = "\u2293";
var SquareSubset = "\u228F";
var SquareSubsetEqual = "\u2291";
var SquareSuperset = "\u2290";
var SquareSupersetEqual = "\u2292";
var SquareUnion = "\u2294";
var squarf = "\u25AA";
var squ = "\u25A1";
var squf = "\u25AA";
var srarr = "\u2192";
var Sscr = "\u{1D4AE}";
var sscr = "\u{1D4C8}";
var ssetmn = "\u2216";
var ssmile = "\u2323";
var sstarf = "\u22C6";
var Star = "\u22C6";
var star = "\u2606";
var starf = "\u2605";
var straightepsilon = "\u03F5";
var straightphi = "\u03D5";
var strns = "\xAF";
var sub = "\u2282";
var Sub = "\u22D0";
var subdot = "\u2ABD";
var subE = "\u2AC5";
var sube = "\u2286";
var subedot = "\u2AC3";
var submult = "\u2AC1";
var subnE = "\u2ACB";
var subne = "\u228A";
var subplus = "\u2ABF";
var subrarr = "\u2979";
var subset = "\u2282";
var Subset = "\u22D0";
var subseteq = "\u2286";
var subseteqq = "\u2AC5";
var SubsetEqual = "\u2286";
var subsetneq = "\u228A";
var subsetneqq = "\u2ACB";
var subsim = "\u2AC7";
var subsub = "\u2AD5";
var subsup = "\u2AD3";
var succapprox = "\u2AB8";
var succ = "\u227B";
var succcurlyeq = "\u227D";
var Succeeds = "\u227B";
var SucceedsEqual = "\u2AB0";
var SucceedsSlantEqual = "\u227D";
var SucceedsTilde = "\u227F";
var succeq = "\u2AB0";
var succnapprox = "\u2ABA";
var succneqq = "\u2AB6";
var succnsim = "\u22E9";
var succsim = "\u227F";
var SuchThat = "\u220B";
var sum = "\u2211";
var Sum = "\u2211";
var sung = "\u266A";
var sup1$1 = "\xB9";
var sup2$1 = "\xB2";
var sup3$1 = "\xB3";
var sup = "\u2283";
var Sup = "\u22D1";
var supdot = "\u2ABE";
var supdsub = "\u2AD8";
var supE = "\u2AC6";
var supe = "\u2287";
var supedot = "\u2AC4";
var Superset = "\u2283";
var SupersetEqual = "\u2287";
var suphsol = "\u27C9";
var suphsub = "\u2AD7";
var suplarr = "\u297B";
var supmult = "\u2AC2";
var supnE = "\u2ACC";
var supne = "\u228B";
var supplus = "\u2AC0";
var supset = "\u2283";
var Supset = "\u22D1";
var supseteq = "\u2287";
var supseteqq = "\u2AC6";
var supsetneq = "\u228B";
var supsetneqq = "\u2ACC";
var supsim = "\u2AC8";
var supsub = "\u2AD4";
var supsup = "\u2AD6";
var swarhk = "\u2926";
var swarr = "\u2199";
var swArr = "\u21D9";
var swarrow = "\u2199";
var swnwar = "\u292A";
var szlig$1 = "\xDF";
var Tab = " ";
var target = "\u2316";
var Tau = "\u03A4";
var tau = "\u03C4";
var tbrk = "\u23B4";
var Tcaron = "\u0164";
var tcaron = "\u0165";
var Tcedil = "\u0162";
var tcedil = "\u0163";
var Tcy = "\u0422";
var tcy = "\u0442";
var tdot = "\u20DB";
var telrec = "\u2315";
var Tfr = "\u{1D517}";
var tfr = "\u{1D531}";
var there4 = "\u2234";
var therefore = "\u2234";
var Therefore = "\u2234";
var Theta = "\u0398";
var theta = "\u03B8";
var thetasym = "\u03D1";
var thetav = "\u03D1";
var thickapprox = "\u2248";
var thicksim = "\u223C";
var ThickSpace = "\u205F\u200A";
var ThinSpace = "\u2009";
var thinsp = "\u2009";
var thkap = "\u2248";
var thksim = "\u223C";
var THORN$1 = "\xDE";
var thorn$1 = "\xFE";
var tilde = "\u02DC";
var Tilde = "\u223C";
var TildeEqual = "\u2243";
var TildeFullEqual = "\u2245";
var TildeTilde = "\u2248";
var timesbar = "\u2A31";
var timesb = "\u22A0";
var times$1 = "\xD7";
var timesd = "\u2A30";
var tint = "\u222D";
var toea = "\u2928";
var topbot = "\u2336";
var topcir = "\u2AF1";
var top = "\u22A4";
var Topf = "\u{1D54B}";
var topf = "\u{1D565}";
var topfork = "\u2ADA";
var tosa = "\u2929";
var tprime = "\u2034";
var trade = "\u2122";
var TRADE = "\u2122";
var triangle = "\u25B5";
var triangledown = "\u25BF";
var triangleleft = "\u25C3";
var trianglelefteq = "\u22B4";
var triangleq = "\u225C";
var triangleright = "\u25B9";
var trianglerighteq = "\u22B5";
var tridot = "\u25EC";
var trie = "\u225C";
var triminus = "\u2A3A";
var TripleDot = "\u20DB";
var triplus = "\u2A39";
var trisb = "\u29CD";
var tritime = "\u2A3B";
var trpezium = "\u23E2";
var Tscr = "\u{1D4AF}";
var tscr = "\u{1D4C9}";
var TScy = "\u0426";
var tscy = "\u0446";
var TSHcy = "\u040B";
var tshcy = "\u045B";
var Tstrok = "\u0166";
var tstrok = "\u0167";
var twixt = "\u226C";
var twoheadleftarrow = "\u219E";
var twoheadrightarrow = "\u21A0";
var Uacute$1 = "\xDA";
var uacute$1 = "\xFA";
var uarr = "\u2191";
var Uarr = "\u219F";
var uArr = "\u21D1";
var Uarrocir = "\u2949";
var Ubrcy = "\u040E";
var ubrcy = "\u045E";
var Ubreve = "\u016C";
var ubreve = "\u016D";
var Ucirc$1 = "\xDB";
var ucirc$1 = "\xFB";
var Ucy = "\u0423";
var ucy = "\u0443";
var udarr = "\u21C5";
var Udblac = "\u0170";
var udblac = "\u0171";
var udhar = "\u296E";
var ufisht = "\u297E";
var Ufr = "\u{1D518}";
var ufr = "\u{1D532}";
var Ugrave$1 = "\xD9";
var ugrave$1 = "\xF9";
var uHar = "\u2963";
var uharl = "\u21BF";
var uharr = "\u21BE";
var uhblk = "\u2580";
var ulcorn = "\u231C";
var ulcorner = "\u231C";
var ulcrop = "\u230F";
var ultri = "\u25F8";
var Umacr = "\u016A";
var umacr = "\u016B";
var uml$1 = "\xA8";
var UnderBar = "_";
var UnderBrace = "\u23DF";
var UnderBracket = "\u23B5";
var UnderParenthesis = "\u23DD";
var Union = "\u22C3";
var UnionPlus = "\u228E";
var Uogon = "\u0172";
var uogon = "\u0173";
var Uopf = "\u{1D54C}";
var uopf = "\u{1D566}";
var UpArrowBar = "\u2912";
var uparrow = "\u2191";
var UpArrow = "\u2191";
var Uparrow = "\u21D1";
var UpArrowDownArrow = "\u21C5";
var updownarrow = "\u2195";
var UpDownArrow = "\u2195";
var Updownarrow = "\u21D5";
var UpEquilibrium = "\u296E";
var upharpoonleft = "\u21BF";
var upharpoonright = "\u21BE";
var uplus = "\u228E";
var UpperLeftArrow = "\u2196";
var UpperRightArrow = "\u2197";
var upsi = "\u03C5";
var Upsi = "\u03D2";
var upsih = "\u03D2";
var Upsilon = "\u03A5";
var upsilon = "\u03C5";
var UpTeeArrow = "\u21A5";
var UpTee = "\u22A5";
var upuparrows = "\u21C8";
var urcorn = "\u231D";
var urcorner = "\u231D";
var urcrop = "\u230E";
var Uring = "\u016E";
var uring = "\u016F";
var urtri = "\u25F9";
var Uscr = "\u{1D4B0}";
var uscr = "\u{1D4CA}";
var utdot = "\u22F0";
var Utilde = "\u0168";
var utilde = "\u0169";
var utri = "\u25B5";
var utrif = "\u25B4";
var uuarr = "\u21C8";
var Uuml$1 = "\xDC";
var uuml$1 = "\xFC";
var uwangle = "\u29A7";
var vangrt = "\u299C";
var varepsilon = "\u03F5";
var varkappa = "\u03F0";
var varnothing = "\u2205";
var varphi = "\u03D5";
var varpi = "\u03D6";
var varpropto = "\u221D";
var varr = "\u2195";
var vArr = "\u21D5";
var varrho = "\u03F1";
var varsigma = "\u03C2";
var varsubsetneq = "\u228A\uFE00";
var varsubsetneqq = "\u2ACB\uFE00";
var varsupsetneq = "\u228B\uFE00";
var varsupsetneqq = "\u2ACC\uFE00";
var vartheta = "\u03D1";
var vartriangleleft = "\u22B2";
var vartriangleright = "\u22B3";
var vBar = "\u2AE8";
var Vbar = "\u2AEB";
var vBarv = "\u2AE9";
var Vcy = "\u0412";
var vcy = "\u0432";
var vdash = "\u22A2";
var vDash = "\u22A8";
var Vdash = "\u22A9";
var VDash = "\u22AB";
var Vdashl = "\u2AE6";
var veebar = "\u22BB";
var vee = "\u2228";
var Vee = "\u22C1";
var veeeq = "\u225A";
var vellip = "\u22EE";
var verbar = "|";
var Verbar = "\u2016";
var vert = "|";
var Vert = "\u2016";
var VerticalBar = "\u2223";
var VerticalLine = "|";
var VerticalSeparator = "\u2758";
var VerticalTilde = "\u2240";
var VeryThinSpace = "\u200A";
var Vfr = "\u{1D519}";
var vfr = "\u{1D533}";
var vltri = "\u22B2";
var vnsub = "\u2282\u20D2";
var vnsup = "\u2283\u20D2";
var Vopf = "\u{1D54D}";
var vopf = "\u{1D567}";
var vprop = "\u221D";
var vrtri = "\u22B3";
var Vscr = "\u{1D4B1}";
var vscr = "\u{1D4CB}";
var vsubnE = "\u2ACB\uFE00";
var vsubne = "\u228A\uFE00";
var vsupnE = "\u2ACC\uFE00";
var vsupne = "\u228B\uFE00";
var Vvdash = "\u22AA";
var vzigzag = "\u299A";
var Wcirc = "\u0174";
var wcirc = "\u0175";
var wedbar = "\u2A5F";
var wedge = "\u2227";
var Wedge = "\u22C0";
var wedgeq = "\u2259";
var weierp = "\u2118";
var Wfr = "\u{1D51A}";
var wfr = "\u{1D534}";
var Wopf = "\u{1D54E}";
var wopf = "\u{1D568}";
var wp = "\u2118";
var wr = "\u2240";
var wreath = "\u2240";
var Wscr = "\u{1D4B2}";
var wscr = "\u{1D4CC}";
var xcap = "\u22C2";
var xcirc = "\u25EF";
var xcup = "\u22C3";
var xdtri = "\u25BD";
var Xfr = "\u{1D51B}";
var xfr = "\u{1D535}";
var xharr = "\u27F7";
var xhArr = "\u27FA";
var Xi = "\u039E";
var xi = "\u03BE";
var xlarr = "\u27F5";
var xlArr = "\u27F8";
var xmap = "\u27FC";
var xnis = "\u22FB";
var xodot = "\u2A00";
var Xopf = "\u{1D54F}";
var xopf = "\u{1D569}";
var xoplus = "\u2A01";
var xotime = "\u2A02";
var xrarr = "\u27F6";
var xrArr = "\u27F9";
var Xscr = "\u{1D4B3}";
var xscr = "\u{1D4CD}";
var xsqcup = "\u2A06";
var xuplus = "\u2A04";
var xutri = "\u25B3";
var xvee = "\u22C1";
var xwedge = "\u22C0";
var Yacute$1 = "\xDD";
var yacute$1 = "\xFD";
var YAcy = "\u042F";
var yacy = "\u044F";
var Ycirc = "\u0176";
var ycirc = "\u0177";
var Ycy = "\u042B";
var ycy = "\u044B";
var yen$1 = "\xA5";
var Yfr = "\u{1D51C}";
var yfr = "\u{1D536}";
var YIcy = "\u0407";
var yicy = "\u0457";
var Yopf = "\u{1D550}";
var yopf = "\u{1D56A}";
var Yscr = "\u{1D4B4}";
var yscr = "\u{1D4CE}";
var YUcy = "\u042E";
var yucy = "\u044E";
var yuml$1 = "\xFF";
var Yuml = "\u0178";
var Zacute = "\u0179";
var zacute = "\u017A";
var Zcaron = "\u017D";
var zcaron = "\u017E";
var Zcy = "\u0417";
var zcy = "\u0437";
var Zdot = "\u017B";
var zdot = "\u017C";
var zeetrf = "\u2128";
var ZeroWidthSpace = "\u200B";
var Zeta = "\u0396";
var zeta = "\u03B6";
var zfr = "\u{1D537}";
var Zfr = "\u2128";
var ZHcy = "\u0416";
var zhcy = "\u0436";
var zigrarr = "\u21DD";
var zopf = "\u{1D56B}";
var Zopf = "\u2124";
var Zscr = "\u{1D4B5}";
var zscr = "\u{1D4CF}";
var zwj = "\u200D";
var zwnj = "\u200C";
var require$$1$1 = {
Aacute: Aacute$1,
aacute: aacute$1,
Abreve,
abreve,
ac,
acd,
acE,
Acirc: Acirc$1,
acirc: acirc$1,
acute: acute$1,
Acy,
acy,
AElig: AElig$1,
aelig: aelig$1,
af,
Afr,
afr,
Agrave: Agrave$1,
agrave: agrave$1,
alefsym,
aleph,
Alpha,
alpha,
Amacr,
amacr,
amalg,
amp: amp$2,
AMP: AMP$1,
andand,
And,
and,
andd,
andslope,
andv,
ang,
ange,
angle,
angmsdaa,
angmsdab,
angmsdac,
angmsdad,
angmsdae,
angmsdaf,
angmsdag,
angmsdah,
angmsd,
angrt,
angrtvb,
angrtvbd,
angsph,
angst,
angzarr,
Aogon,
aogon,
Aopf,
aopf,
apacir,
ap,
apE,
ape,
apid,
apos: apos$1,
ApplyFunction,
approx,
approxeq,
Aring: Aring$1,
aring: aring$1,
Ascr,
ascr,
Assign,
ast,
asymp,
asympeq,
Atilde: Atilde$1,
atilde: atilde$1,
Auml: Auml$1,
auml: auml$1,
awconint,
awint,
backcong,
backepsilon,
backprime,
backsim,
backsimeq,
Backslash,
Barv,
barvee,
barwed,
Barwed,
barwedge,
bbrk,
bbrktbrk,
bcong,
Bcy,
bcy,
bdquo,
becaus,
because,
Because,
bemptyv,
bepsi,
bernou,
Bernoullis,
Beta,
beta,
beth,
between,
Bfr,
bfr,
bigcap,
bigcirc,
bigcup,
bigodot,
bigoplus,
bigotimes,
bigsqcup,
bigstar,
bigtriangledown,
bigtriangleup,
biguplus,
bigvee,
bigwedge,
bkarow,
blacklozenge,
blacksquare,
blacktriangle,
blacktriangledown,
blacktriangleleft,
blacktriangleright,
blank,
blk12,
blk14,
blk34,
block,
bne,
bnequiv,
bNot,
bnot,
Bopf,
bopf,
bot,
bottom,
bowtie,
boxbox,
boxdl,
boxdL,
boxDl,
boxDL,
boxdr,
boxdR,
boxDr,
boxDR,
boxh,
boxH,
boxhd,
boxHd,
boxhD,
boxHD,
boxhu,
boxHu,
boxhU,
boxHU,
boxminus,
boxplus,
boxtimes,
boxul,
boxuL,
boxUl,
boxUL,
boxur,
boxuR,
boxUr,
boxUR,
boxv,
boxV,
boxvh,
boxvH,
boxVh,
boxVH,
boxvl,
boxvL,
boxVl,
boxVL,
boxvr,
boxvR,
boxVr,
boxVR,
bprime,
breve,
Breve,
brvbar: brvbar$1,
bscr,
Bscr,
bsemi,
bsim,
bsime,
bsolb,
bsol,
bsolhsub,
bull,
bullet,
bump,
bumpE,
bumpe,
Bumpeq,
bumpeq,
Cacute,
cacute,
capand,
capbrcup,
capcap,
cap,
Cap,
capcup,
capdot,
CapitalDifferentialD,
caps,
caret,
caron,
Cayleys,
ccaps,
Ccaron,
ccaron,
Ccedil: Ccedil$1,
ccedil: ccedil$1,
Ccirc,
ccirc,
Cconint,
ccups,
ccupssm,
Cdot,
cdot,
cedil: cedil$1,
Cedilla,
cemptyv,
cent: cent$1,
centerdot,
CenterDot,
cfr,
Cfr,
CHcy,
chcy,
check,
checkmark,
Chi,
chi,
circ,
circeq,
circlearrowleft,
circlearrowright,
circledast,
circledcirc,
circleddash,
CircleDot,
circledR,
circledS,
CircleMinus,
CirclePlus,
CircleTimes,
cir,
cirE,
cire,
cirfnint,
cirmid,
cirscir,
ClockwiseContourIntegral,
CloseCurlyDoubleQuote,
CloseCurlyQuote,
clubs,
clubsuit,
colon,
Colon,
Colone,
colone,
coloneq,
comma,
commat,
comp,
compfn,
complement,
complexes,
cong,
congdot,
Congruent,
conint,
Conint,
ContourIntegral,
copf,
Copf,
coprod,
Coproduct,
copy: copy$1,
COPY: COPY$1,
copysr,
CounterClockwiseContourIntegral,
crarr,
cross,
Cross,
Cscr,
cscr,
csub,
csube,
csup,
csupe,
ctdot,
cudarrl,
cudarrr,
cuepr,
cuesc,
cularr,
cularrp,
cupbrcap,
cupcap,
CupCap,
cup,
Cup,
cupcup,
cupdot,
cupor,
cups,
curarr,
curarrm,
curlyeqprec,
curlyeqsucc,
curlyvee,
curlywedge,
curren: curren$1,
curvearrowleft,
curvearrowright,
cuvee,
cuwed,
cwconint,
cwint,
cylcty,
dagger,
Dagger,
daleth,
darr,
Darr,
dArr,
dash,
Dashv,
dashv,
dbkarow,
dblac,
Dcaron,
dcaron,
Dcy,
dcy,
ddagger,
ddarr,
DD,
dd,
DDotrahd,
ddotseq,
deg: deg$1,
Del,
Delta,
delta,
demptyv,
dfisht,
Dfr,
dfr,
dHar,
dharl,
dharr,
DiacriticalAcute,
DiacriticalDot,
DiacriticalDoubleAcute,
DiacriticalGrave,
DiacriticalTilde,
diam,
diamond,
Diamond,
diamondsuit,
diams,
die,
DifferentialD,
digamma,
disin,
div,
divide: divide$1,
divideontimes,
divonx,
DJcy,
djcy,
dlcorn,
dlcrop,
dollar,
Dopf,
dopf,
Dot,
dot,
DotDot,
doteq,
doteqdot,
DotEqual,
dotminus,
dotplus,
dotsquare,
doublebarwedge,
DoubleContourIntegral,
DoubleDot,
DoubleDownArrow,
DoubleLeftArrow,
DoubleLeftRightArrow,
DoubleLeftTee,
DoubleLongLeftArrow,
DoubleLongLeftRightArrow,
DoubleLongRightArrow,
DoubleRightArrow,
DoubleRightTee,
DoubleUpArrow,
DoubleUpDownArrow,
DoubleVerticalBar,
DownArrowBar,
downarrow,
DownArrow,
Downarrow,
DownArrowUpArrow,
DownBreve,
downdownarrows,
downharpoonleft,
downharpoonright,
DownLeftRightVector,
DownLeftTeeVector,
DownLeftVectorBar,
DownLeftVector,
DownRightTeeVector,
DownRightVectorBar,
DownRightVector,
DownTeeArrow,
DownTee,
drbkarow,
drcorn,
drcrop,
Dscr,
dscr,
DScy,
dscy,
dsol,
Dstrok,
dstrok,
dtdot,
dtri,
dtrif,
duarr,
duhar,
dwangle,
DZcy,
dzcy,
dzigrarr,
Eacute: Eacute$1,
eacute: eacute$1,
easter,
Ecaron,
ecaron,
Ecirc: Ecirc$1,
ecirc: ecirc$1,
ecir,
ecolon,
Ecy,
ecy,
eDDot,
Edot,
edot,
eDot,
ee,
efDot,
Efr,
efr,
eg,
Egrave: Egrave$1,
egrave: egrave$1,
egs,
egsdot,
el,
Element: Element$1,
elinters,
ell,
els,
elsdot,
Emacr,
emacr,
empty: empty2,
emptyset,
EmptySmallSquare,
emptyv,
EmptyVerySmallSquare,
emsp13,
emsp14,
emsp,
ENG,
eng,
ensp,
Eogon,
eogon,
Eopf,
eopf,
epar,
eparsl,
eplus,
epsi,
Epsilon,
epsilon,
epsiv,
eqcirc,
eqcolon,
eqsim,
eqslantgtr,
eqslantless,
Equal,
equals,
EqualTilde,
equest,
Equilibrium,
equiv,
equivDD,
eqvparsl,
erarr,
erDot,
escr,
Escr,
esdot,
Esim,
esim,
Eta,
eta,
ETH: ETH$1,
eth: eth$1,
Euml: Euml$1,
euml: euml$1,
euro,
excl,
exist,
Exists,
expectation,
exponentiale,
ExponentialE,
fallingdotseq,
Fcy,
fcy,
female,
ffilig,
fflig,
ffllig,
Ffr,
ffr,
filig,
FilledSmallSquare,
FilledVerySmallSquare,
fjlig,
flat,
fllig,
fltns,
fnof,
Fopf,
fopf,
forall,
ForAll,
fork,
forkv,
Fouriertrf,
fpartint,
frac12: frac12$1,
frac13,
frac14: frac14$1,
frac15,
frac16,
frac18,
frac23,
frac25,
frac34: frac34$1,
frac35,
frac38,
frac45,
frac56,
frac58,
frac78,
frasl,
frown,
fscr,
Fscr,
gacute,
Gamma,
gamma,
Gammad,
gammad,
gap,
Gbreve,
gbreve,
Gcedil,
Gcirc,
gcirc,
Gcy,
gcy,
Gdot,
gdot,
ge,
gE,
gEl,
gel,
geq,
geqq,
geqslant,
gescc,
ges,
gesdot,
gesdoto,
gesdotol,
gesl,
gesles,
Gfr,
gfr,
gg,
Gg,
ggg,
gimel,
GJcy,
gjcy,
gla,
gl,
glE,
glj,
gnap,
gnapprox,
gne,
gnE,
gneq,
gneqq,
gnsim,
Gopf,
gopf,
grave,
GreaterEqual,
GreaterEqualLess,
GreaterFullEqual,
GreaterGreater,
GreaterLess,
GreaterSlantEqual,
GreaterTilde,
Gscr,
gscr,
gsim,
gsime,
gsiml,
gtcc,
gtcir,
gt: gt$2,
GT: GT$1,
Gt,
gtdot,
gtlPar,
gtquest,
gtrapprox,
gtrarr,
gtrdot,
gtreqless,
gtreqqless,
gtrless,
gtrsim,
gvertneqq,
gvnE,
Hacek,
hairsp,
half,
hamilt,
HARDcy,
hardcy,
harrcir,
harr,
hArr,
harrw,
Hat,
hbar,
Hcirc,
hcirc,
hearts,
heartsuit,
hellip,
hercon,
hfr,
Hfr,
HilbertSpace,
hksearow,
hkswarow,
hoarr,
homtht,
hookleftarrow,
hookrightarrow,
hopf,
Hopf,
horbar,
HorizontalLine,
hscr,
Hscr,
hslash,
Hstrok,
hstrok,
HumpDownHump,
HumpEqual,
hybull,
hyphen,
Iacute: Iacute$1,
iacute: iacute$1,
ic,
Icirc: Icirc$1,
icirc: icirc$1,
Icy,
icy,
Idot,
IEcy,
iecy,
iexcl: iexcl$1,
iff,
ifr,
Ifr,
Igrave: Igrave$1,
igrave: igrave$1,
ii,
iiiint,
iiint,
iinfin,
iiota,
IJlig,
ijlig,
Imacr,
imacr,
image,
ImaginaryI,
imagline,
imagpart,
imath,
Im,
imof,
imped,
Implies,
incare,
"in": "\u2208",
infin,
infintie,
inodot,
intcal,
int,
Int,
integers,
Integral,
intercal,
Intersection,
intlarhk,
intprod,
InvisibleComma,
InvisibleTimes,
IOcy,
iocy,
Iogon,
iogon,
Iopf,
iopf,
Iota,
iota,
iprod,
iquest: iquest$1,
iscr,
Iscr,
isin,
isindot,
isinE,
isins,
isinsv,
isinv,
it,
Itilde,
itilde,
Iukcy,
iukcy,
Iuml: Iuml$1,
iuml: iuml$1,
Jcirc,
jcirc,
Jcy,
jcy,
Jfr,
jfr,
jmath,
Jopf,
jopf,
Jscr,
jscr,
Jsercy,
jsercy,
Jukcy,
jukcy,
Kappa,
kappa,
kappav,
Kcedil,
kcedil,
Kcy,
kcy,
Kfr,
kfr,
kgreen,
KHcy,
khcy,
KJcy,
kjcy,
Kopf,
kopf,
Kscr,
kscr,
lAarr,
Lacute,
lacute,
laemptyv,
lagran,
Lambda,
lambda,
lang,
Lang,
langd,
langle,
lap,
Laplacetrf,
laquo: laquo$1,
larrb,
larrbfs,
larr,
Larr,
lArr,
larrfs,
larrhk,
larrlp,
larrpl,
larrsim,
larrtl,
latail,
lAtail,
lat,
late,
lates,
lbarr,
lBarr,
lbbrk,
lbrace,
lbrack,
lbrke,
lbrksld,
lbrkslu,
Lcaron,
lcaron,
Lcedil,
lcedil,
lceil,
lcub,
Lcy,
lcy,
ldca,
ldquo,
ldquor,
ldrdhar,
ldrushar,
ldsh,
le,
lE,
LeftAngleBracket,
LeftArrowBar,
leftarrow,
LeftArrow,
Leftarrow,
LeftArrowRightArrow,
leftarrowtail,
LeftCeiling,
LeftDoubleBracket,
LeftDownTeeVector,
LeftDownVectorBar,
LeftDownVector,
LeftFloor,
leftharpoondown,
leftharpoonup,
leftleftarrows,
leftrightarrow,
LeftRightArrow,
Leftrightarrow,
leftrightarrows,
leftrightharpoons,
leftrightsquigarrow,
LeftRightVector,
LeftTeeArrow,
LeftTee,
LeftTeeVector,
leftthreetimes,
LeftTriangleBar,
LeftTriangle,
LeftTriangleEqual,
LeftUpDownVector,
LeftUpTeeVector,
LeftUpVectorBar,
LeftUpVector,
LeftVectorBar,
LeftVector,
lEg,
leg,
leq,
leqq,
leqslant,
lescc,
les,
lesdot,
lesdoto,
lesdotor,
lesg,
lesges,
lessapprox,
lessdot,
lesseqgtr,
lesseqqgtr,
LessEqualGreater,
LessFullEqual,
LessGreater,
lessgtr,
LessLess,
lesssim,
LessSlantEqual,
LessTilde,
lfisht,
lfloor,
Lfr,
lfr,
lg,
lgE,
lHar,
lhard,
lharu,
lharul,
lhblk,
LJcy,
ljcy,
llarr,
ll,
Ll,
llcorner,
Lleftarrow,
llhard,
lltri,
Lmidot,
lmidot,
lmoustache,
lmoust,
lnap,
lnapprox,
lne,
lnE,
lneq,
lneqq,
lnsim,
loang,
loarr,
lobrk,
longleftarrow,
LongLeftArrow,
Longleftarrow,
longleftrightarrow,
LongLeftRightArrow,
Longleftrightarrow,
longmapsto,
longrightarrow,
LongRightArrow,
Longrightarrow,
looparrowleft,
looparrowright,
lopar,
Lopf,
lopf,
loplus,
lotimes,
lowast,
lowbar,
LowerLeftArrow,
LowerRightArrow,
loz,
lozenge,
lozf,
lpar,
lparlt,
lrarr,
lrcorner,
lrhar,
lrhard,
lrm,
lrtri,
lsaquo,
lscr,
Lscr,
lsh,
Lsh,
lsim,
lsime,
lsimg,
lsqb,
lsquo,
lsquor,
Lstrok,
lstrok,
ltcc,
ltcir,
lt: lt$2,
LT: LT$1,
Lt,
ltdot,
lthree,
ltimes,
ltlarr,
ltquest,
ltri,
ltrie,
ltrif,
ltrPar,
lurdshar,
luruhar,
lvertneqq,
lvnE,
macr: macr$1,
male,
malt,
maltese,
"Map": "\u2905",
map: map2,
mapsto,
mapstodown,
mapstoleft,
mapstoup,
marker,
mcomma,
Mcy,
mcy,
mdash,
mDDot,
measuredangle,
MediumSpace,
Mellintrf,
Mfr,
mfr,
mho,
micro: micro$1,
midast,
midcir,
mid,
middot: middot$1,
minusb,
minus,
minusd,
minusdu,
MinusPlus,
mlcp,
mldr,
mnplus,
models,
Mopf,
mopf,
mp,
mscr,
Mscr,
mstpos,
Mu,
mu,
multimap,
mumap,
nabla,
Nacute,
nacute,
nang,
nap,
napE,
napid,
napos,
napprox,
natural,
naturals,
natur,
nbsp: nbsp$1,
nbump,
nbumpe,
ncap,
Ncaron,
ncaron,
Ncedil,
ncedil,
ncong,
ncongdot,
ncup,
Ncy,
ncy,
ndash,
nearhk,
nearr,
neArr,
nearrow,
ne,
nedot,
NegativeMediumSpace,
NegativeThickSpace,
NegativeThinSpace,
NegativeVeryThinSpace,
nequiv,
nesear,
nesim,
NestedGreaterGreater,
NestedLessLess,
NewLine,
nexist,
nexists,
Nfr,
nfr,
ngE,
nge,
ngeq,
ngeqq,
ngeqslant,
nges,
nGg,
ngsim,
nGt,
ngt,
ngtr,
nGtv,
nharr,
nhArr,
nhpar,
ni,
nis,
nisd,
niv,
NJcy,
njcy,
nlarr,
nlArr,
nldr,
nlE,
nle,
nleftarrow,
nLeftarrow,
nleftrightarrow,
nLeftrightarrow,
nleq,
nleqq,
nleqslant,
nles,
nless,
nLl,
nlsim,
nLt,
nlt,
nltri,
nltrie,
nLtv,
nmid,
NoBreak,
NonBreakingSpace,
nopf,
Nopf,
Not,
not: not$1,
NotCongruent,
NotCupCap,
NotDoubleVerticalBar,
NotElement,
NotEqual,
NotEqualTilde,
NotExists,
NotGreater,
NotGreaterEqual,
NotGreaterFullEqual,
NotGreaterGreater,
NotGreaterLess,
NotGreaterSlantEqual,
NotGreaterTilde,
NotHumpDownHump,
NotHumpEqual,
notin,
notindot,
notinE,
notinva,
notinvb,
notinvc,
NotLeftTriangleBar,
NotLeftTriangle,
NotLeftTriangleEqual,
NotLess,
NotLessEqual,
NotLessGreater,
NotLessLess,
NotLessSlantEqual,
NotLessTilde,
NotNestedGreaterGreater,
NotNestedLessLess,
notni,
notniva,
notnivb,
notnivc,
NotPrecedes,
NotPrecedesEqual,
NotPrecedesSlantEqual,
NotReverseElement,
NotRightTriangleBar,
NotRightTriangle,
NotRightTriangleEqual,
NotSquareSubset,
NotSquareSubsetEqual,
NotSquareSuperset,
NotSquareSupersetEqual,
NotSubset,
NotSubsetEqual,
NotSucceeds,
NotSucceedsEqual,
NotSucceedsSlantEqual,
NotSucceedsTilde,
NotSuperset,
NotSupersetEqual,
NotTilde,
NotTildeEqual,
NotTildeFullEqual,
NotTildeTilde,
NotVerticalBar,
nparallel,
npar,
nparsl,
npart,
npolint,
npr,
nprcue,
nprec,
npreceq,
npre,
nrarrc,
nrarr,
nrArr,
nrarrw,
nrightarrow,
nRightarrow,
nrtri,
nrtrie,
nsc,
nsccue,
nsce,
Nscr,
nscr,
nshortmid,
nshortparallel,
nsim,
nsime,
nsimeq,
nsmid,
nspar,
nsqsube,
nsqsupe,
nsub,
nsubE,
nsube,
nsubset,
nsubseteq,
nsubseteqq,
nsucc,
nsucceq,
nsup,
nsupE,
nsupe,
nsupset,
nsupseteq,
nsupseteqq,
ntgl,
Ntilde: Ntilde$1,
ntilde: ntilde$1,
ntlg,
ntriangleleft,
ntrianglelefteq,
ntriangleright,
ntrianglerighteq,
Nu,
nu,
num,
numero,
numsp,
nvap,
nvdash,
nvDash,
nVdash,
nVDash,
nvge,
nvgt,
nvHarr,
nvinfin,
nvlArr,
nvle,
nvlt,
nvltrie,
nvrArr,
nvrtrie,
nvsim,
nwarhk,
nwarr,
nwArr,
nwarrow,
nwnear,
Oacute: Oacute$1,
oacute: oacute$1,
oast,
Ocirc: Ocirc$1,
ocirc: ocirc$1,
ocir,
Ocy,
ocy,
odash,
Odblac,
odblac,
odiv,
odot,
odsold,
OElig,
oelig,
ofcir,
Ofr,
ofr,
ogon,
Ograve: Ograve$1,
ograve: ograve$1,
ogt,
ohbar,
ohm,
oint,
olarr,
olcir,
olcross,
oline,
olt,
Omacr,
omacr,
Omega,
omega,
Omicron,
omicron,
omid,
ominus,
Oopf,
oopf,
opar,
OpenCurlyDoubleQuote,
OpenCurlyQuote,
operp,
oplus,
orarr,
Or,
or,
ord,
order,
orderof,
ordf: ordf$1,
ordm: ordm$1,
origof,
oror,
orslope,
orv,
oS,
Oscr,
oscr,
Oslash: Oslash$1,
oslash: oslash$1,
osol,
Otilde: Otilde$1,
otilde: otilde$1,
otimesas,
Otimes,
otimes,
Ouml: Ouml$1,
ouml: ouml$1,
ovbar,
OverBar,
OverBrace,
OverBracket,
OverParenthesis,
para: para$1,
parallel,
par,
parsim,
parsl,
part,
PartialD,
Pcy,
pcy,
percnt,
period,
permil,
perp,
pertenk,
Pfr,
pfr,
Phi,
phi,
phiv,
phmmat,
phone,
Pi,
pi,
pitchfork,
piv,
planck,
planckh,
plankv,
plusacir,
plusb,
pluscir,
plus,
plusdo,
plusdu,
pluse,
PlusMinus,
plusmn: plusmn$1,
plussim,
plustwo,
pm,
Poincareplane,
pointint,
popf,
Popf,
pound: pound$1,
prap,
Pr,
pr,
prcue,
precapprox,
prec,
preccurlyeq,
Precedes,
PrecedesEqual,
PrecedesSlantEqual,
PrecedesTilde,
preceq,
precnapprox,
precneqq,
precnsim,
pre,
prE,
precsim,
prime,
Prime,
primes,
prnap,
prnE,
prnsim,
prod,
Product,
profalar,
profline,
profsurf,
prop,
Proportional,
Proportion,
propto,
prsim,
prurel,
Pscr,
pscr,
Psi,
psi,
puncsp,
Qfr,
qfr,
qint,
qopf,
Qopf,
qprime,
Qscr,
qscr,
quaternions,
quatint,
quest,
questeq,
quot: quot$2,
QUOT: QUOT$1,
rAarr,
race,
Racute,
racute,
radic,
raemptyv,
rang,
Rang,
rangd,
range,
rangle,
raquo: raquo$1,
rarrap,
rarrb,
rarrbfs,
rarrc,
rarr,
Rarr,
rArr,
rarrfs,
rarrhk,
rarrlp,
rarrpl,
rarrsim,
Rarrtl,
rarrtl,
rarrw,
ratail,
rAtail,
ratio,
rationals,
rbarr,
rBarr,
RBarr,
rbbrk,
rbrace,
rbrack,
rbrke,
rbrksld,
rbrkslu,
Rcaron,
rcaron,
Rcedil,
rcedil,
rceil,
rcub,
Rcy,
rcy,
rdca,
rdldhar,
rdquo,
rdquor,
rdsh,
real,
realine,
realpart,
reals,
Re,
rect,
reg: reg$1,
REG: REG$1,
ReverseElement,
ReverseEquilibrium,
ReverseUpEquilibrium,
rfisht,
rfloor,
rfr,
Rfr,
rHar,
rhard,
rharu,
rharul,
Rho,
rho,
rhov,
RightAngleBracket,
RightArrowBar,
rightarrow,
RightArrow,
Rightarrow,
RightArrowLeftArrow,
rightarrowtail,
RightCeiling,
RightDoubleBracket,
RightDownTeeVector,
RightDownVectorBar,
RightDownVector,
RightFloor,
rightharpoondown,
rightharpoonup,
rightleftarrows,
rightleftharpoons,
rightrightarrows,
rightsquigarrow,
RightTeeArrow,
RightTee,
RightTeeVector,
rightthreetimes,
RightTriangleBar,
RightTriangle,
RightTriangleEqual,
RightUpDownVector,
RightUpTeeVector,
RightUpVectorBar,
RightUpVector,
RightVectorBar,
RightVector,
ring,
risingdotseq,
rlarr,
rlhar,
rlm,
rmoustache,
rmoust,
rnmid,
roang,
roarr,
robrk,
ropar,
ropf,
Ropf,
roplus,
rotimes,
RoundImplies,
rpar,
rpargt,
rppolint,
rrarr,
Rrightarrow,
rsaquo,
rscr,
Rscr,
rsh,
Rsh,
rsqb,
rsquo,
rsquor,
rthree,
rtimes,
rtri,
rtrie,
rtrif,
rtriltri,
RuleDelayed,
ruluhar,
rx,
Sacute,
sacute,
sbquo,
scap,
Scaron,
scaron,
Sc,
sc,
sccue,
sce,
scE,
Scedil,
scedil,
Scirc,
scirc,
scnap,
scnE,
scnsim,
scpolint,
scsim,
Scy,
scy,
sdotb,
sdot,
sdote,
searhk,
searr,
seArr,
searrow,
sect: sect$1,
semi,
seswar,
setminus,
setmn,
sext,
Sfr,
sfr,
sfrown,
sharp,
SHCHcy,
shchcy,
SHcy,
shcy,
ShortDownArrow,
ShortLeftArrow,
shortmid,
shortparallel,
ShortRightArrow,
ShortUpArrow,
shy: shy$1,
Sigma,
sigma,
sigmaf,
sigmav,
sim,
simdot,
sime,
simeq,
simg,
simgE,
siml,
simlE,
simne,
simplus,
simrarr,
slarr,
SmallCircle,
smallsetminus,
smashp,
smeparsl,
smid,
smile,
smt,
smte,
smtes,
SOFTcy,
softcy,
solbar,
solb,
sol,
Sopf,
sopf,
spades,
spadesuit,
spar,
sqcap,
sqcaps,
sqcup,
sqcups,
Sqrt,
sqsub,
sqsube,
sqsubset,
sqsubseteq,
sqsup,
sqsupe,
sqsupset,
sqsupseteq,
square,
Square,
SquareIntersection,
SquareSubset,
SquareSubsetEqual,
SquareSuperset,
SquareSupersetEqual,
SquareUnion,
squarf,
squ,
squf,
srarr,
Sscr,
sscr,
ssetmn,
ssmile,
sstarf,
Star,
star,
starf,
straightepsilon,
straightphi,
strns,
sub,
Sub,
subdot,
subE,
sube,
subedot,
submult,
subnE,
subne,
subplus,
subrarr,
subset,
Subset,
subseteq,
subseteqq,
SubsetEqual,
subsetneq,
subsetneqq,
subsim,
subsub,
subsup,
succapprox,
succ,
succcurlyeq,
Succeeds,
SucceedsEqual,
SucceedsSlantEqual,
SucceedsTilde,
succeq,
succnapprox,
succneqq,
succnsim,
succsim,
SuchThat,
sum,
Sum,
sung,
sup1: sup1$1,
sup2: sup2$1,
sup3: sup3$1,
sup,
Sup,
supdot,
supdsub,
supE,
supe,
supedot,
Superset,
SupersetEqual,
suphsol,
suphsub,
suplarr,
supmult,
supnE,
supne,
supplus,
supset,
Supset,
supseteq,
supseteqq,
supsetneq,
supsetneqq,
supsim,
supsub,
supsup,
swarhk,
swarr,
swArr,
swarrow,
swnwar,
szlig: szlig$1,
Tab,
target,
Tau,
tau,
tbrk,
Tcaron,
tcaron,
Tcedil,
tcedil,
Tcy,
tcy,
tdot,
telrec,
Tfr,
tfr,
there4,
therefore,
Therefore,
Theta,
theta,
thetasym,
thetav,
thickapprox,
thicksim,
ThickSpace,
ThinSpace,
thinsp,
thkap,
thksim,
THORN: THORN$1,
thorn: thorn$1,
tilde,
Tilde,
TildeEqual,
TildeFullEqual,
TildeTilde,
timesbar,
timesb,
times: times$1,
timesd,
tint,
toea,
topbot,
topcir,
top,
Topf,
topf,
topfork,
tosa,
tprime,
trade,
TRADE,
triangle,
triangledown,
triangleleft,
trianglelefteq,
triangleq,
triangleright,
trianglerighteq,
tridot,
trie,
triminus,
TripleDot,
triplus,
trisb,
tritime,
trpezium,
Tscr,
tscr,
TScy,
tscy,
TSHcy,
tshcy,
Tstrok,
tstrok,
twixt,
twoheadleftarrow,
twoheadrightarrow,
Uacute: Uacute$1,
uacute: uacute$1,
uarr,
Uarr,
uArr,
Uarrocir,
Ubrcy,
ubrcy,
Ubreve,
ubreve,
Ucirc: Ucirc$1,
ucirc: ucirc$1,
Ucy,
ucy,
udarr,
Udblac,
udblac,
udhar,
ufisht,
Ufr,
ufr,
Ugrave: Ugrave$1,
ugrave: ugrave$1,
uHar,
uharl,
uharr,
uhblk,
ulcorn,
ulcorner,
ulcrop,
ultri,
Umacr,
umacr,
uml: uml$1,
UnderBar,
UnderBrace,
UnderBracket,
UnderParenthesis,
Union,
UnionPlus,
Uogon,
uogon,
Uopf,
uopf,
UpArrowBar,
uparrow,
UpArrow,
Uparrow,
UpArrowDownArrow,
updownarrow,
UpDownArrow,
Updownarrow,
UpEquilibrium,
upharpoonleft,
upharpoonright,
uplus,
UpperLeftArrow,
UpperRightArrow,
upsi,
Upsi,
upsih,
Upsilon,
upsilon,
UpTeeArrow,
UpTee,
upuparrows,
urcorn,
urcorner,
urcrop,
Uring,
uring,
urtri,
Uscr,
uscr,
utdot,
Utilde,
utilde,
utri,
utrif,
uuarr,
Uuml: Uuml$1,
uuml: uuml$1,
uwangle,
vangrt,
varepsilon,
varkappa,
varnothing,
varphi,
varpi,
varpropto,
varr,
vArr,
varrho,
varsigma,
varsubsetneq,
varsubsetneqq,
varsupsetneq,
varsupsetneqq,
vartheta,
vartriangleleft,
vartriangleright,
vBar,
Vbar,
vBarv,
Vcy,
vcy,
vdash,
vDash,
Vdash,
VDash,
Vdashl,
veebar,
vee,
Vee,
veeeq,
vellip,
verbar,
Verbar,
vert,
Vert,
VerticalBar,
VerticalLine,
VerticalSeparator,
VerticalTilde,
VeryThinSpace,
Vfr,
vfr,
vltri,
vnsub,
vnsup,
Vopf,
vopf,
vprop,
vrtri,
Vscr,
vscr,
vsubnE,
vsubne,
vsupnE,
vsupne,
Vvdash,
vzigzag,
Wcirc,
wcirc,
wedbar,
wedge,
Wedge,
wedgeq,
weierp,
Wfr,
wfr,
Wopf,
wopf,
wp,
wr,
wreath,
Wscr,
wscr,
xcap,
xcirc,
xcup,
xdtri,
Xfr,
xfr,
xharr,
xhArr,
Xi,
xi,
xlarr,
xlArr,
xmap,
xnis,
xodot,
Xopf,
xopf,
xoplus,
xotime,
xrarr,
xrArr,
Xscr,
xscr,
xsqcup,
xuplus,
xutri,
xvee,
xwedge,
Yacute: Yacute$1,
yacute: yacute$1,
YAcy,
yacy,
Ycirc,
ycirc,
Ycy,
ycy,
yen: yen$1,
Yfr,
yfr,
YIcy,
yicy,
Yopf,
yopf,
Yscr,
yscr,
YUcy,
yucy,
yuml: yuml$1,
Yuml,
Zacute,
zacute,
Zcaron,
zcaron,
Zcy,
zcy,
Zdot,
zdot,
zeetrf,
ZeroWidthSpace,
Zeta,
zeta,
zfr,
Zfr,
ZHcy,
zhcy,
zigrarr,
zopf,
Zopf,
Zscr,
zscr,
zwj,
zwnj
};
var Aacute = "\xC1";
var aacute = "\xE1";
var Acirc = "\xC2";
var acirc = "\xE2";
var acute = "\xB4";
var AElig = "\xC6";
var aelig = "\xE6";
var Agrave = "\xC0";
var agrave = "\xE0";
var amp$1 = "&";
var AMP = "&";
var Aring = "\xC5";
var aring = "\xE5";
var Atilde = "\xC3";
var atilde = "\xE3";
var Auml = "\xC4";
var auml = "\xE4";
var brvbar = "\xA6";
var Ccedil = "\xC7";
var ccedil = "\xE7";
var cedil = "\xB8";
var cent = "\xA2";
var copy2 = "\xA9";
var COPY = "\xA9";
var curren = "\xA4";
var deg = "\xB0";
var divide = "\xF7";
var Eacute = "\xC9";
var eacute = "\xE9";
var Ecirc = "\xCA";
var ecirc = "\xEA";
var Egrave = "\xC8";
var egrave = "\xE8";
var ETH = "\xD0";
var eth = "\xF0";
var Euml = "\xCB";
var euml = "\xEB";
var frac12 = "\xBD";
var frac14 = "\xBC";
var frac34 = "\xBE";
var gt$1 = ">";
var GT = ">";
var Iacute = "\xCD";
var iacute = "\xED";
var Icirc = "\xCE";
var icirc = "\xEE";
var iexcl = "\xA1";
var Igrave = "\xCC";
var igrave = "\xEC";
var iquest = "\xBF";
var Iuml = "\xCF";
var iuml = "\xEF";
var laquo = "\xAB";
var lt$1 = "<";
var LT = "<";
var macr = "\xAF";
var micro = "\xB5";
var middot = "\xB7";
var nbsp = "\xA0";
var not = "\xAC";
var Ntilde = "\xD1";
var ntilde = "\xF1";
var Oacute = "\xD3";
var oacute = "\xF3";
var Ocirc = "\xD4";
var ocirc = "\xF4";
var Ograve = "\xD2";
var ograve = "\xF2";
var ordf = "\xAA";
var ordm = "\xBA";
var Oslash = "\xD8";
var oslash = "\xF8";
var Otilde = "\xD5";
var otilde = "\xF5";
var Ouml = "\xD6";
var ouml = "\xF6";
var para = "\xB6";
var plusmn = "\xB1";
var pound = "\xA3";
var quot$1 = '"';
var QUOT = '"';
var raquo = "\xBB";
var reg = "\xAE";
var REG = "\xAE";
var sect = "\xA7";
var shy = "\xAD";
var sup1 = "\xB9";
var sup2 = "\xB2";
var sup3 = "\xB3";
var szlig = "\xDF";
var THORN = "\xDE";
var thorn = "\xFE";
var times = "\xD7";
var Uacute = "\xDA";
var uacute = "\xFA";
var Ucirc = "\xDB";
var ucirc = "\xFB";
var Ugrave = "\xD9";
var ugrave = "\xF9";
var uml = "\xA8";
var Uuml = "\xDC";
var uuml = "\xFC";
var Yacute = "\xDD";
var yacute = "\xFD";
var yen = "\xA5";
var yuml = "\xFF";
var require$$1 = {
Aacute,
aacute,
Acirc,
acirc,
acute,
AElig,
aelig,
Agrave,
agrave,
amp: amp$1,
AMP,
Aring,
aring,
Atilde,
atilde,
Auml,
auml,
brvbar,
Ccedil,
ccedil,
cedil,
cent,
copy: copy2,
COPY,
curren,
deg,
divide,
Eacute,
eacute,
Ecirc,
ecirc,
Egrave,
egrave,
ETH,
eth,
Euml,
euml,
frac12,
frac14,
frac34,
gt: gt$1,
GT,
Iacute,
iacute,
Icirc,
icirc,
iexcl,
Igrave,
igrave,
iquest,
Iuml,
iuml,
laquo,
lt: lt$1,
LT,
macr,
micro,
middot,
nbsp,
not,
Ntilde,
ntilde,
Oacute,
oacute,
Ocirc,
ocirc,
Ograve,
ograve,
ordf,
ordm,
Oslash,
oslash,
Otilde,
otilde,
Ouml,
ouml,
para,
plusmn,
pound,
quot: quot$1,
QUOT,
raquo,
reg,
REG,
sect,
shy,
sup1,
sup2,
sup3,
szlig,
THORN,
thorn,
times,
Uacute,
uacute,
Ucirc,
ucirc,
Ugrave,
ugrave,
uml,
Uuml,
uuml,
Yacute,
yacute,
yen,
yuml
};
var amp = "&";
var apos = "'";
var gt = ">";
var lt = "<";
var quot = '"';
var require$$0$1 = {
amp,
apos,
gt,
lt,
quot
};
var decode_codepoint = {};
var require$$0 = {
"0": 65533,
"128": 8364,
"130": 8218,
"131": 402,
"132": 8222,
"133": 8230,
"134": 8224,
"135": 8225,
"136": 710,
"137": 8240,
"138": 352,
"139": 8249,
"140": 338,
"142": 381,
"145": 8216,
"146": 8217,
"147": 8220,
"148": 8221,
"149": 8226,
"150": 8211,
"151": 8212,
"152": 732,
"153": 8482,
"154": 353,
"155": 8250,
"156": 339,
"158": 382,
"159": 376
};
var __importDefault$2 = commonjsGlobal && commonjsGlobal.__importDefault || function(mod) {
return mod && mod.__esModule ? mod : { "default": mod };
};
Object.defineProperty(decode_codepoint, "__esModule", { value: true });
var decode_json_1 = __importDefault$2(require$$0);
var fromCodePoint$2 = (
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
String.fromCodePoint || function(codePoint) {
var output = "";
if (codePoint > 65535) {
codePoint -= 65536;
output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296);
codePoint = 56320 | codePoint & 1023;
}
output += String.fromCharCode(codePoint);
return output;
}
);
function decodeCodePoint(codePoint) {
if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) {
return "\uFFFD";
}
if (codePoint in decode_json_1.default) {
codePoint = decode_json_1.default[codePoint];
}
return fromCodePoint$2(codePoint);
}
decode_codepoint.default = decodeCodePoint;
var __importDefault$1 = commonjsGlobal && commonjsGlobal.__importDefault || function(mod) {
return mod && mod.__esModule ? mod : { "default": mod };
};
Object.defineProperty(decode, "__esModule", { value: true });
decode.decodeHTML = decode.decodeHTMLStrict = decode.decodeXML = void 0;
var entities_json_1$1 = __importDefault$1(require$$1$1);
var legacy_json_1 = __importDefault$1(require$$1);
var xml_json_1$1 = __importDefault$1(require$$0$1);
var decode_codepoint_1 = __importDefault$1(decode_codepoint);
var strictEntityRe = /&(?:[a-zA-Z0-9]+|#[xX][\da-fA-F]+|#\d+);/g;
decode.decodeXML = getStrictDecoder(xml_json_1$1.default);
decode.decodeHTMLStrict = getStrictDecoder(entities_json_1$1.default);
function getStrictDecoder(map3) {
var replace2 = getReplacer(map3);
return function(str) {
return String(str).replace(strictEntityRe, replace2);
};
}
var sorter = function(a, b) {
return a < b ? 1 : -1;
};
decode.decodeHTML = (function() {
var legacy = Object.keys(legacy_json_1.default).sort(sorter);
var keys2 = Object.keys(entities_json_1$1.default).sort(sorter);
for (var i = 0, j = 0; i < keys2.length; i++) {
if (legacy[j] === keys2[i]) {
keys2[i] += ";?";
j++;
} else {
keys2[i] += ";";
}
}
var re = new RegExp("&(?:" + keys2.join("|") + "|#[xX][\\da-fA-F]+;?|#\\d+;?)", "g");
var replace2 = getReplacer(entities_json_1$1.default);
function replacer(str) {
if (str.substr(-1) !== ";")
str += ";";
return replace2(str);
}
return function(str) {
return String(str).replace(re, replacer);
};
})();
function getReplacer(map3) {
return function replace2(str) {
if (str.charAt(1) === "#") {
var secondChar = str.charAt(2);
if (secondChar === "X" || secondChar === "x") {
return decode_codepoint_1.default(parseInt(str.substr(3), 16));
}
return decode_codepoint_1.default(parseInt(str.substr(2), 10));
}
return map3[str.slice(1, -1)] || str;
};
}
var encode = {};
var __importDefault = commonjsGlobal && commonjsGlobal.__importDefault || function(mod) {
return mod && mod.__esModule ? mod : { "default": mod };
};
Object.defineProperty(encode, "__esModule", { value: true });
encode.escapeUTF8 = encode.escape = encode.encodeNonAsciiHTML = encode.encodeHTML = encode.encodeXML = void 0;
var xml_json_1 = __importDefault(require$$0$1);
var inverseXML = getInverseObj(xml_json_1.default);
var xmlReplacer = getInverseReplacer(inverseXML);
encode.encodeXML = getASCIIEncoder(inverseXML);
var entities_json_1 = __importDefault(require$$1$1);
var inverseHTML = getInverseObj(entities_json_1.default);
var htmlReplacer = getInverseReplacer(inverseHTML);
encode.encodeHTML = getInverse(inverseHTML, htmlReplacer);
encode.encodeNonAsciiHTML = getASCIIEncoder(inverseHTML);
function getInverseObj(obj) {
return Object.keys(obj).sort().reduce(function(inverse, name) {
inverse[obj[name]] = "&" + name + ";";
return inverse;
}, {});
}
function getInverseReplacer(inverse) {
var single = [];
var multiple = [];
for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {
var k = _a[_i];
if (k.length === 1) {
single.push("\\" + k);
} else {
multiple.push(k);
}
}
single.sort();
for (var start = 0; start < single.length - 1; start++) {
var end = start;
while (end < single.length - 1 && single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {
end += 1;
}
var count = 1 + end - start;
if (count < 3)
continue;
single.splice(start, count, single[start] + "-" + single[end]);
}
multiple.unshift("[" + single.join("") + "]");
return new RegExp(multiple.join("|"), "g");
}
var reNonASCII = /(?:[\x80-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g;
var getCodePoint = (
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
String.prototype.codePointAt != null ? (
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
function(str) {
return str.codePointAt(0);
}
) : (
// http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
function(c) {
return (c.charCodeAt(0) - 55296) * 1024 + c.charCodeAt(1) - 56320 + 65536;
}
)
);
function singleCharReplacer(c) {
return "" + (c.length > 1 ? getCodePoint(c) : c.charCodeAt(0)).toString(16).toUpperCase() + ";";
}
function getInverse(inverse, re) {
return function(data) {
return data.replace(re, function(name) {
return inverse[name];
}).replace(reNonASCII, singleCharReplacer);
};
}
var reEscapeChars = new RegExp(xmlReplacer.source + "|" + reNonASCII.source, "g");
function escape(data) {
return data.replace(reEscapeChars, singleCharReplacer);
}
encode.escape = escape;
function escapeUTF8(data) {
return data.replace(xmlReplacer, singleCharReplacer);
}
encode.escapeUTF8 = escapeUTF8;
function getASCIIEncoder(obj) {
return function(data) {
return data.replace(reEscapeChars, function(c) {
return obj[c] || singleCharReplacer(c);
});
};
}
(function(exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.encodeHTML5 = exports.encodeHTML4 = exports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = void 0;
var decode_1 = decode;
var encode_12 = encode;
function decode$1(data, level) {
return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);
}
exports.decode = decode$1;
function decodeStrict(data, level) {
return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);
}
exports.decodeStrict = decodeStrict;
function encode$12(data, level) {
return (!level || level <= 0 ? encode_12.encodeXML : encode_12.encodeHTML)(data);
}
exports.encode = encode$12;
var encode_2 = encode;
Object.defineProperty(exports, "encodeXML", { enumerable: true, get: function() {
return encode_2.encodeXML;
} });
Object.defineProperty(exports, "encodeHTML", { enumerable: true, get: function() {
return encode_2.encodeHTML;
} });
Object.defineProperty(exports, "encodeNonAsciiHTML", { enumerable: true, get: function() {
return encode_2.encodeNonAsciiHTML;
} });
Object.defineProperty(exports, "escape", { enumerable: true, get: function() {
return encode_2.escape;
} });
Object.defineProperty(exports, "escapeUTF8", { enumerable: true, get: function() {
return encode_2.escapeUTF8;
} });
Object.defineProperty(exports, "encodeHTML4", { enumerable: true, get: function() {
return encode_2.encodeHTML;
} });
Object.defineProperty(exports, "encodeHTML5", { enumerable: true, get: function() {
return encode_2.encodeHTML;
} });
var decode_2 = decode;
Object.defineProperty(exports, "decodeXML", { enumerable: true, get: function() {
return decode_2.decodeXML;
} });
Object.defineProperty(exports, "decodeHTML", { enumerable: true, get: function() {
return decode_2.decodeHTML;
} });
Object.defineProperty(exports, "decodeHTMLStrict", { enumerable: true, get: function() {
return decode_2.decodeHTMLStrict;
} });
Object.defineProperty(exports, "decodeHTML4", { enumerable: true, get: function() {
return decode_2.decodeHTML;
} });
Object.defineProperty(exports, "decodeHTML5", { enumerable: true, get: function() {
return decode_2.decodeHTML;
} });
Object.defineProperty(exports, "decodeHTML4Strict", { enumerable: true, get: function() {
return decode_2.decodeHTMLStrict;
} });
Object.defineProperty(exports, "decodeHTML5Strict", { enumerable: true, get: function() {
return decode_2.decodeHTMLStrict;
} });
Object.defineProperty(exports, "decodeXMLStrict", { enumerable: true, get: function() {
return decode_2.decodeXML;
} });
})(lib);
var ENTITY = "&(?:#x[a-f0-9]{1,6}|#[0-9]{1,7}|[a-z][a-z0-9]{1,31});";
var C_BACKSLASH$1 = 92;
var reBackslashOrAmp = /[\\&]/;
var ESCAPABLE = "[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^_`{|}~-]";
var reEntityOrEscapedChar = new RegExp("\\\\" + ESCAPABLE + "|" + ENTITY, "gi");
var XMLSPECIAL = '[&<>"]';
var reXmlSpecial = new RegExp(XMLSPECIAL, "g");
var unescapeChar = function(s) {
if (s.charCodeAt(0) === C_BACKSLASH$1) {
return s.charAt(1);
}
return lib.decodeHTML(s);
};
function unescapeString(s) {
if (reBackslashOrAmp.test(s)) {
return s.replace(reEntityOrEscapedChar, unescapeChar);
}
return s;
}
function normalizeURI(uri) {
try {
return encode_1(uri);
} catch (err) {
return uri;
}
}
function replaceUnsafeChar(s) {
switch (s) {
case "&":
return "&";
case "<":
return "<";
case ">":
return ">";
case '"':
return """;
default:
return s;
}
}
function escapeXml(s) {
if (reXmlSpecial.test(s)) {
return s.replace(reXmlSpecial, replaceUnsafeChar);
}
return s;
}
function repeat(str, count) {
var arr = [];
for (var i = 0; i < count; i++) {
arr.push(str);
}
return arr.join("");
}
function isEmpty(str) {
if (!str) {
return true;
}
return !/[^ \t]+/.test(str);
}
var NodeWalker = (
/** @class */
(function() {
function NodeWalker2(root) {
this.current = root;
this.root = root;
this.entering = true;
}
NodeWalker2.prototype.next = function() {
var cur = this.current;
var entering = this.entering;
if (cur === null) {
return null;
}
var container = isContainer$1(cur);
if (entering && container) {
if (cur.firstChild) {
this.current = cur.firstChild;
this.entering = true;
} else {
this.entering = false;
}
} else if (cur === this.root) {
this.current = null;
} else if (cur.next === null) {
this.current = cur.parent;
this.entering = false;
} else {
this.current = cur.next;
this.entering = true;
}
return { entering, node: cur };
};
NodeWalker2.prototype.resumeAt = function(node, entering) {
this.current = node;
this.entering = entering === true;
};
return NodeWalker2;
})()
);
function isContainer$1(node) {
switch (node.type) {
case "document":
case "blockQuote":
case "list":
case "item":
case "paragraph":
case "heading":
case "emph":
case "strong":
case "strike":
case "link":
case "image":
case "table":
case "tableHead":
case "tableBody":
case "tableRow":
case "tableCell":
case "tableDelimRow":
case "customInline":
return true;
default:
return false;
}
}
var lastNodeId = 1;
var nodeMap = {};
function getNodeById(id) {
return nodeMap[id];
}
function removeNodeById(id) {
delete nodeMap[id];
}
function removeAllNode() {
nodeMap = {};
}
var Node$1 = (
/** @class */
(function() {
function Node3(nodeType, sourcepos) {
this.parent = null;
this.prev = null;
this.next = null;
this.firstChild = null;
this.lastChild = null;
this.literal = null;
if (nodeType === "document") {
this.id = -1;
} else {
this.id = lastNodeId++;
}
this.type = nodeType;
this.sourcepos = sourcepos;
nodeMap[this.id] = this;
}
Node3.prototype.isContainer = function() {
return isContainer$1(this);
};
Node3.prototype.unlink = function() {
if (this.prev) {
this.prev.next = this.next;
} else if (this.parent) {
this.parent.firstChild = this.next;
}
if (this.next) {
this.next.prev = this.prev;
} else if (this.parent) {
this.parent.lastChild = this.prev;
}
this.parent = null;
this.next = null;
this.prev = null;
};
Node3.prototype.replaceWith = function(node) {
this.insertBefore(node);
this.unlink();
};
Node3.prototype.insertAfter = function(sibling) {
sibling.unlink();
sibling.next = this.next;
if (sibling.next) {
sibling.next.prev = sibling;
}
sibling.prev = this;
this.next = sibling;
if (this.parent) {
sibling.parent = this.parent;
if (!sibling.next) {
sibling.parent.lastChild = sibling;
}
}
};
Node3.prototype.insertBefore = function(sibling) {
sibling.unlink();
sibling.prev = this.prev;
if (sibling.prev) {
sibling.prev.next = sibling;
}
sibling.next = this;
this.prev = sibling;
sibling.parent = this.parent;
if (!sibling.prev) {
sibling.parent.firstChild = sibling;
}
};
Node3.prototype.appendChild = function(child) {
child.unlink();
child.parent = this;
if (this.lastChild) {
this.lastChild.next = child;
child.prev = this.lastChild;
this.lastChild = child;
} else {
this.firstChild = child;
this.lastChild = child;
}
};
Node3.prototype.prependChild = function(child) {
child.unlink();
child.parent = this;
if (this.firstChild) {
this.firstChild.prev = child;
child.next = this.firstChild;
this.firstChild = child;
} else {
this.firstChild = child;
this.lastChild = child;
}
};
Node3.prototype.walker = function() {
return new NodeWalker(this);
};
return Node3;
})()
);
var BlockNode = (
/** @class */
(function(_super) {
__extends(BlockNode2, _super);
function BlockNode2(nodeType, sourcepos) {
var _this = _super.call(this, nodeType, sourcepos) || this;
_this.open = true;
_this.lineOffsets = null;
_this.stringContent = null;
_this.lastLineBlank = false;
_this.lastLineChecked = false;
_this.type = nodeType;
return _this;
}
return BlockNode2;
})(Node$1)
);
var ListNode = (
/** @class */
(function(_super) {
__extends(ListNode2, _super);
function ListNode2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.listData = null;
return _this;
}
return ListNode2;
})(BlockNode)
);
var HeadingNode = (
/** @class */
(function(_super) {
__extends(HeadingNode2, _super);
function HeadingNode2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.level = 0;
_this.headingType = "atx";
return _this;
}
return HeadingNode2;
})(BlockNode)
);
var CodeBlockNode = (
/** @class */
(function(_super) {
__extends(CodeBlockNode2, _super);
function CodeBlockNode2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.isFenced = false;
_this.fenceChar = null;
_this.fenceLength = 0;
_this.fenceOffset = -1;
_this.info = null;
_this.infoPadding = 0;
return _this;
}
return CodeBlockNode2;
})(BlockNode)
);
var TableNode = (
/** @class */
(function(_super) {
__extends(TableNode2, _super);
function TableNode2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.columns = [];
return _this;
}
return TableNode2;
})(BlockNode)
);
var TableCellNode = (
/** @class */
(function(_super) {
__extends(TableCellNode2, _super);
function TableCellNode2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.startIdx = 0;
_this.endIdx = 0;
_this.paddingLeft = 0;
_this.paddingRight = 0;
_this.ignored = false;
return _this;
}
return TableCellNode2;
})(BlockNode)
);
var RefDefNode = (
/** @class */
(function(_super) {
__extends(RefDefNode2, _super);
function RefDefNode2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.title = "";
_this.dest = "";
_this.label = "";
return _this;
}
return RefDefNode2;
})(BlockNode)
);
var CustomBlockNode = (
/** @class */
(function(_super) {
__extends(CustomBlockNode2, _super);
function CustomBlockNode2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.syntaxLength = 0;
_this.offset = -1;
_this.info = "";
return _this;
}
return CustomBlockNode2;
})(BlockNode)
);
var HtmlBlockNode = (
/** @class */
(function(_super) {
__extends(HtmlBlockNode2, _super);
function HtmlBlockNode2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.htmlBlockType = -1;
return _this;
}
return HtmlBlockNode2;
})(BlockNode)
);
var LinkNode = (
/** @class */
(function(_super) {
__extends(LinkNode2, _super);
function LinkNode2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.destination = null;
_this.title = null;
_this.extendedAutolink = false;
return _this;
}
return LinkNode2;
})(Node$1)
);
var CodeNode = (
/** @class */
(function(_super) {
__extends(CodeNode2, _super);
function CodeNode2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.tickCount = 0;
return _this;
}
return CodeNode2;
})(Node$1)
);
var CustomInlineNode = (
/** @class */
(function(_super) {
__extends(CustomInlineNode2, _super);
function CustomInlineNode2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.info = "";
return _this;
}
return CustomInlineNode2;
})(Node$1)
);
function createNode$1(type, sourcepos) {
switch (type) {
case "heading":
return new HeadingNode(type, sourcepos);
case "list":
case "item":
return new ListNode(type, sourcepos);
case "link":
case "image":
return new LinkNode(type, sourcepos);
case "codeBlock":
return new CodeBlockNode(type, sourcepos);
case "htmlBlock":
return new HtmlBlockNode(type, sourcepos);
case "table":
return new TableNode(type, sourcepos);
case "tableCell":
return new TableCellNode(type, sourcepos);
case "document":
case "paragraph":
case "blockQuote":
case "thematicBreak":
case "tableRow":
case "tableBody":
case "tableHead":
case "frontMatter":
return new BlockNode(type, sourcepos);
case "code":
return new CodeNode(type, sourcepos);
case "refDef":
return new RefDefNode(type, sourcepos);
case "customBlock":
return new CustomBlockNode(type, sourcepos);
case "customInline":
return new CustomInlineNode(type, sourcepos);
default:
return new Node$1(type, sourcepos);
}
}
function isCodeBlock(node) {
return node.type === "codeBlock";
}
function isHtmlBlock(node) {
return node.type === "htmlBlock";
}
function isHeading(node) {
return node.type === "heading";
}
function isList(node) {
return node.type === "list";
}
function isTable(node) {
return node.type === "table";
}
function isRefDef(node) {
return node.type === "refDef";
}
function isCustomBlock(node) {
return node.type === "customBlock";
}
function isCustomInline(node) {
return node.type === "customInline";
}
function text$1(s, sourcepos) {
var node = createNode$1("text", sourcepos);
node.literal = s;
return node;
}
var TAGNAME = "[A-Za-z][A-Za-z0-9-]*";
var ATTRIBUTENAME = "[a-zA-Z_:][a-zA-Z0-9:._-]*";
var UNQUOTEDVALUE = "[^\"'=<>`\\x00-\\x20]+";
var SINGLEQUOTEDVALUE = "'[^']*'";
var DOUBLEQUOTEDVALUE = '"[^"]*"';
var ATTRIBUTEVALUE = "(?:" + UNQUOTEDVALUE + "|" + SINGLEQUOTEDVALUE + "|" + DOUBLEQUOTEDVALUE + ")";
var ATTRIBUTEVALUESPEC = "(?:\\s*=\\s*" + ATTRIBUTEVALUE + ")";
var ATTRIBUTE = "(?:\\s+" + ATTRIBUTENAME + ATTRIBUTEVALUESPEC + "?)";
var OPENTAG = "<" + TAGNAME + ATTRIBUTE + "*\\s*/?>";
var CLOSETAG = "" + TAGNAME + "\\s*[>]";
var HTMLCOMMENT = "|";
var PROCESSINGINSTRUCTION = "[<][?].*?[?][>]";
var DECLARATION = "]*>";
var CDATA = "";
var HTMLTAG = "(?:" + OPENTAG + "|" + CLOSETAG + "|" + HTMLCOMMENT + "|" + PROCESSINGINSTRUCTION + "|" + DECLARATION + "|" + CDATA + ")";
var reHtmlTag = new RegExp("^" + HTMLTAG, "i");
var fromCodePoint;
if (String.fromCodePoint) {
fromCodePoint = function(_) {
try {
return String.fromCodePoint(_);
} catch (e) {
if (e instanceof RangeError) {
return String.fromCharCode(65533);
}
throw e;
}
};
} else {
stringFromCharCode_1 = String.fromCharCode;
floor_1 = Math.floor;
fromCodePoint = function() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var MAX_SIZE = 16384;
var codeUnits = [];
var highSurrogate;
var lowSurrogate;
var index2 = -1;
var length = args.length;
if (!length) {
return "";
}
var result = "";
while (++index2 < length) {
var codePoint = Number(args[index2]);
if (!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`
codePoint < 0 || // not a valid Unicode code point
codePoint > 1114111 || // not a valid Unicode code point
floor_1(codePoint) !== codePoint) {
return String.fromCharCode(65533);
}
if (codePoint <= 65535) {
codeUnits.push(codePoint);
} else {
codePoint -= 65536;
highSurrogate = (codePoint >> 10) + 55296;
lowSurrogate = codePoint % 1024 + 56320;
codeUnits.push(highSurrogate, lowSurrogate);
}
if (index2 + 1 === length || codeUnits.length > MAX_SIZE) {
result += stringFromCharCode_1.apply(void 0, codeUnits);
codeUnits.length = 0;
}
}
return result;
};
}
var stringFromCharCode_1;
var floor_1;
var fromCodePoint$1 = fromCodePoint;
var DOMAIN = "(?:[w-]+.)*[A-Za-z0-9-]+.[A-Za-z0-9-]+";
var PATH = "[^<\\s]*[^!.,:*_?~\\s]";
var EMAIL = "[\\w.+-]+@(?:[\\w-]+\\.)+[\\w-]+";
function trimUnmatchedTrailingParens(source) {
var trailingParen = /\)+$/.exec(source);
if (trailingParen) {
var count = 0;
for (var _i = 0, source_1 = source; _i < source_1.length; _i++) {
var ch = source_1[_i];
if (ch === "(") {
if (count < 0) {
count = 1;
} else {
count += 1;
}
} else if (ch === ")") {
count -= 1;
}
}
if (count < 0) {
var trimCount = Math.min(-count, trailingParen[0].length);
return source.substring(0, source.length - trimCount);
}
}
return source;
}
function trimTrailingEntity(source) {
return source.replace(/&[A-Za-z0-9]+;$/, "");
}
function parseEmailLink(source) {
var reEmailLink = new RegExp(EMAIL, "g");
var result = [];
var m;
while (m = reEmailLink.exec(source)) {
var text_1 = m[0];
if (!/[_-]+$/.test(text_1)) {
result.push({
text: text_1,
range: [m.index, m.index + text_1.length - 1],
url: "mailto:" + text_1
});
}
}
return result;
}
function parseUrlLink(source) {
var reWwwAutolink = new RegExp("(www|https?://)." + DOMAIN + PATH, "g");
var result = [];
var m;
while (m = reWwwAutolink.exec(source)) {
var text_2 = trimTrailingEntity(trimUnmatchedTrailingParens(m[0]));
var scheme = m[1] === "www" ? "http://" : "";
result.push({
text: text_2,
range: [m.index, m.index + text_2.length - 1],
url: "" + scheme + text_2
});
}
return result;
}
function baseAutolinkParser(source) {
return __spreadArray(__spreadArray([], parseUrlLink(source)), parseEmailLink(source)).sort(function(a, b) {
return a.range[0] - b.range[0];
});
}
function convertExtAutoLinks(walker, autolinkParser) {
if (typeof autolinkParser === "boolean") {
autolinkParser = baseAutolinkParser;
}
var event;
var _loop_1 = function() {
var entering = event.entering, node = event.node;
if (entering && node.type === "text" && node.parent.type !== "link") {
var literal = node.literal;
var linkInfos = autolinkParser(literal);
if (!linkInfos || !linkInfos.length) {
return "continue";
}
var lastIdx = 0;
var _a = node.sourcepos[0], lineNum_1 = _a[0], chPos_1 = _a[1];
var sourcepos = function(startIdx, endIdx) {
return [
[lineNum_1, chPos_1 + startIdx],
[lineNum_1, chPos_1 + endIdx]
];
};
var newNodes = [];
for (var _i = 0, linkInfos_1 = linkInfos; _i < linkInfos_1.length; _i++) {
var _b = linkInfos_1[_i], range2 = _b.range, url = _b.url, linkText = _b.text;
if (range2[0] > lastIdx) {
newNodes.push(text$1(literal.substring(lastIdx, range2[0]), sourcepos(lastIdx, range2[0] - 1)));
}
var linkNode = createNode$1("link", sourcepos.apply(void 0, range2));
linkNode.appendChild(text$1(linkText, sourcepos.apply(void 0, range2)));
linkNode.destination = url;
linkNode.extendedAutolink = true;
newNodes.push(linkNode);
lastIdx = range2[1] + 1;
}
if (lastIdx < literal.length) {
newNodes.push(text$1(literal.substring(lastIdx), sourcepos(lastIdx, literal.length - 1)));
}
for (var _c = 0, newNodes_1 = newNodes; _c < newNodes_1.length; _c++) {
var newNode = newNodes_1[_c];
node.insertBefore(newNode);
}
node.unlink();
}
};
while (event = walker.next()) {
_loop_1();
}
}
function last(arr) {
return arr[arr.length - 1];
}
function normalizeReference(str) {
return str.slice(1, str.length - 1).trim().replace(/[ \t\r\n]+/, " ").toLowerCase().toUpperCase();
}
function iterateObject(obj, iteratee) {
Object.keys(obj).forEach(function(key) {
iteratee(key, obj[key]);
});
}
function omit(obj) {
var propNames = [];
for (var _i = 1; _i < arguments.length; _i++) {
propNames[_i - 1] = arguments[_i];
}
var resultMap = __assign({}, obj);
propNames.forEach(function(key) {
delete resultMap[key];
});
return resultMap;
}
function isEmptyObj(obj) {
return !Object.keys(obj).length;
}
function clearObj(obj) {
Object.keys(obj).forEach(function(key) {
delete obj[key];
});
}
var C_NEWLINE = 10;
var C_ASTERISK = 42;
var C_UNDERSCORE = 95;
var C_BACKTICK = 96;
var C_OPEN_BRACKET$1 = 91;
var C_CLOSE_BRACKET = 93;
var C_TILDE = 126;
var C_LESSTHAN$1 = 60;
var C_BANG = 33;
var C_BACKSLASH = 92;
var C_AMPERSAND = 38;
var C_OPEN_PAREN = 40;
var C_CLOSE_PAREN = 41;
var C_COLON = 58;
var C_SINGLEQUOTE = 39;
var C_DOUBLEQUOTE = 34;
var C_DOLLAR = 36;
var ESCAPED_CHAR = "\\\\" + ESCAPABLE;
var rePunctuation = new RegExp(/[!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]/);
var reLinkTitle = new RegExp('^(?:"(' + ESCAPED_CHAR + '|[^"\\x00])*"|' + ("'(" + ESCAPED_CHAR + "|[^'\\x00])*'") + "|" + ("\\((" + ESCAPED_CHAR + "|[^()\\x00])*\\))"));
var reLinkDestinationBraces = /^(?:<(?:[^<>\n\\\x00]|\\.)*>)/;
var reEscapable = new RegExp("^" + ESCAPABLE);
var reEntityHere = new RegExp("^" + ENTITY, "i");
var reTicks = /`+/;
var reTicksHere = /^`+/;
var reEllipses = /\.\.\./g;
var reDash = /--+/g;
var reEmailAutolink = /^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/;
var reAutolink = /^<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\x00-\x20]*>/i;
var reSpnl = /^ *(?:\n *)?/;
var reWhitespaceChar = /^[ \t\n\x0b\x0c\x0d]/;
var reUnicodeWhitespaceChar = /^\s/;
var reFinalSpace = / *$/;
var reInitialSpace = /^ */;
var reSpaceAtEndOfLine = /^ *(?:\n|$)/;
var reLinkLabel = /^\[(?:[^\\\[\]]|\\.){0,1000}\]/;
var reMain = /^[^\n`\[\]\\!<&*_'"~$]+/m;
var InlineParser = (
/** @class */
(function() {
function InlineParser2(options) {
this.subject = "";
this.delimiters = null;
this.brackets = null;
this.pos = 0;
this.lineStartNum = 0;
this.lineIdx = 0;
this.lineOffsets = [0];
this.linePosOffset = 0;
this.refMap = {};
this.refLinkCandidateMap = {};
this.refDefCandidateMap = {};
this.options = options;
}
InlineParser2.prototype.sourcepos = function(start, end) {
var linePosOffset = this.linePosOffset + this.lineOffsets[this.lineIdx];
var lineNum = this.lineStartNum + this.lineIdx;
var startpos = [lineNum, start + linePosOffset];
if (typeof end === "number") {
return [startpos, [lineNum, end + linePosOffset]];
}
return startpos;
};
InlineParser2.prototype.nextLine = function() {
this.lineIdx += 1;
this.linePosOffset = -this.pos;
};
InlineParser2.prototype.match = function(re) {
var m = re.exec(this.subject.slice(this.pos));
if (m === null) {
return null;
}
this.pos += m.index + m[0].length;
return m[0];
};
InlineParser2.prototype.peek = function() {
if (this.pos < this.subject.length) {
return this.subject.charCodeAt(this.pos);
}
return -1;
};
InlineParser2.prototype.spnl = function() {
this.match(reSpnl);
return true;
};
InlineParser2.prototype.parseBackticks = function(block2) {
var startpos = this.pos + 1;
var ticks = this.match(reTicksHere);
if (ticks === null) {
return false;
}
var afterOpenTicks = this.pos;
var matched;
while ((matched = this.match(reTicks)) !== null) {
if (matched === ticks) {
var contents = this.subject.slice(afterOpenTicks, this.pos - ticks.length);
var sourcepos = this.sourcepos(startpos, this.pos);
var lines = contents.split("\n");
if (lines.length > 1) {
var lastLine = last(lines);
this.lineIdx += lines.length - 1;
this.linePosOffset = -(this.pos - lastLine.length - ticks.length);
sourcepos[1] = this.sourcepos(this.pos);
contents = lines.join(" ");
}
var node = createNode$1("code", sourcepos);
if (contents.length > 0 && contents.match(/[^ ]/) !== null && contents[0] == " " && contents[contents.length - 1] == " ") {
node.literal = contents.slice(1, contents.length - 1);
} else {
node.literal = contents;
}
node.tickCount = ticks.length;
block2.appendChild(node);
return true;
}
}
this.pos = afterOpenTicks;
block2.appendChild(text$1(ticks, this.sourcepos(startpos, this.pos - 1)));
return true;
};
InlineParser2.prototype.parseBackslash = function(block2) {
var subj = this.subject;
var node;
this.pos += 1;
var startpos = this.pos;
if (this.peek() === C_NEWLINE) {
this.pos += 1;
node = createNode$1("linebreak", this.sourcepos(this.pos - 1, this.pos));
block2.appendChild(node);
this.nextLine();
} else if (reEscapable.test(subj.charAt(this.pos))) {
block2.appendChild(text$1(subj.charAt(this.pos), this.sourcepos(startpos, this.pos)));
this.pos += 1;
} else {
block2.appendChild(text$1("\\", this.sourcepos(startpos, startpos)));
}
return true;
};
InlineParser2.prototype.parseAutolink = function(block2) {
var m;
var dest;
var node;
var startpos = this.pos + 1;
if (m = this.match(reEmailAutolink)) {
dest = m.slice(1, m.length - 1);
node = createNode$1("link", this.sourcepos(startpos, this.pos));
node.destination = normalizeURI("mailto:" + dest);
node.title = "";
node.appendChild(text$1(dest, this.sourcepos(startpos + 1, this.pos - 1)));
block2.appendChild(node);
return true;
}
if (m = this.match(reAutolink)) {
dest = m.slice(1, m.length - 1);
node = createNode$1("link", this.sourcepos(startpos, this.pos));
node.destination = normalizeURI(dest);
node.title = "";
node.appendChild(text$1(dest, this.sourcepos(startpos + 1, this.pos - 1)));
block2.appendChild(node);
return true;
}
return false;
};
InlineParser2.prototype.parseHtmlTag = function(block2) {
var startpos = this.pos + 1;
var m = this.match(reHtmlTag);
if (m === null) {
return false;
}
var node = createNode$1("htmlInline", this.sourcepos(startpos, this.pos));
node.literal = m;
block2.appendChild(node);
return true;
};
InlineParser2.prototype.scanDelims = function(cc) {
var numdelims = 0;
var startpos = this.pos;
if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {
numdelims++;
this.pos++;
} else {
while (this.peek() === cc) {
numdelims++;
this.pos++;
}
}
if (numdelims === 0 || numdelims < 2 && (cc === C_TILDE || cc === C_DOLLAR)) {
this.pos = startpos;
return null;
}
var charBefore = startpos === 0 ? "\n" : this.subject.charAt(startpos - 1);
var ccAfter = this.peek();
var charAfter;
if (ccAfter === -1) {
charAfter = "\n";
} else {
charAfter = fromCodePoint$1(ccAfter);
}
var afterIsWhitespace = reUnicodeWhitespaceChar.test(charAfter);
var afterIsPunctuation = rePunctuation.test(charAfter);
var beforeIsWhitespace = reUnicodeWhitespaceChar.test(charBefore);
var beforeIsPunctuation = rePunctuation.test(charBefore);
var leftFlanking = !afterIsWhitespace && (!afterIsPunctuation || beforeIsWhitespace || beforeIsPunctuation);
var rightFlanking = !beforeIsWhitespace && (!beforeIsPunctuation || afterIsWhitespace || afterIsPunctuation);
var canOpen;
var canClose;
if (cc === C_UNDERSCORE) {
canOpen = leftFlanking && (!rightFlanking || beforeIsPunctuation);
canClose = rightFlanking && (!leftFlanking || afterIsPunctuation);
} else if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {
canOpen = leftFlanking && !rightFlanking;
canClose = rightFlanking;
} else if (cc === C_DOLLAR) {
canOpen = !afterIsWhitespace;
canClose = !beforeIsWhitespace;
} else {
canOpen = leftFlanking;
canClose = rightFlanking;
}
this.pos = startpos;
return { numdelims, canOpen, canClose };
};
InlineParser2.prototype.handleDelim = function(cc, block2) {
var res = this.scanDelims(cc);
if (!res) {
return false;
}
var numdelims = res.numdelims;
var startpos = this.pos + 1;
var contents;
this.pos += numdelims;
if (cc === C_SINGLEQUOTE) {
contents = "\u2019";
} else if (cc === C_DOUBLEQUOTE) {
contents = "\u201C";
} else {
contents = this.subject.slice(startpos - 1, this.pos);
}
var node = text$1(contents, this.sourcepos(startpos, this.pos));
block2.appendChild(node);
if ((res.canOpen || res.canClose) && (this.options.smart || cc !== C_SINGLEQUOTE && cc !== C_DOUBLEQUOTE)) {
this.delimiters = {
cc,
numdelims,
origdelims: numdelims,
node,
previous: this.delimiters,
next: null,
canOpen: res.canOpen,
canClose: res.canClose
};
if (this.delimiters.previous) {
this.delimiters.previous.next = this.delimiters;
}
}
return true;
};
InlineParser2.prototype.removeDelimiter = function(delim) {
if (delim.previous !== null) {
delim.previous.next = delim.next;
}
if (delim.next === null) {
this.delimiters = delim.previous;
} else {
delim.next.previous = delim.previous;
}
};
InlineParser2.prototype.removeDelimitersBetween = function(bottom2, top2) {
if (bottom2.next !== top2) {
bottom2.next = top2;
top2.previous = bottom2;
}
};
InlineParser2.prototype.processEmphasis = function(stackBottom) {
var _a;
var opener;
var closer;
var oldCloser;
var openerInl, closerInl;
var openerFound;
var oddMatch = false;
var openersBottom = (_a = {}, _a[C_UNDERSCORE] = [stackBottom, stackBottom, stackBottom], _a[C_ASTERISK] = [stackBottom, stackBottom, stackBottom], _a[C_SINGLEQUOTE] = [stackBottom], _a[C_DOUBLEQUOTE] = [stackBottom], _a[C_TILDE] = [stackBottom], _a[C_DOLLAR] = [stackBottom], _a);
closer = this.delimiters;
while (closer !== null && closer.previous !== stackBottom) {
closer = closer.previous;
}
while (closer !== null) {
var closercc = closer.cc;
var closerEmph = closercc === C_UNDERSCORE || closercc === C_ASTERISK;
if (!closer.canClose) {
closer = closer.next;
} else {
opener = closer.previous;
openerFound = false;
while (opener !== null && opener !== stackBottom && opener !== openersBottom[closercc][closerEmph ? closer.origdelims % 3 : 0]) {
oddMatch = closerEmph && (closer.canOpen || opener.canClose) && closer.origdelims % 3 !== 0 && (opener.origdelims + closer.origdelims) % 3 === 0;
if (opener.cc === closer.cc && opener.canOpen && !oddMatch) {
openerFound = true;
break;
}
opener = opener.previous;
}
oldCloser = closer;
if (closerEmph || closercc === C_TILDE || closercc === C_DOLLAR) {
if (!openerFound) {
closer = closer.next;
} else if (opener) {
var useDelims = closer.numdelims >= 2 && opener.numdelims >= 2 ? 2 : 1;
var emptyDelims = closerEmph ? 0 : 1;
openerInl = opener.node;
closerInl = closer.node;
var nodeType = closerEmph ? useDelims === 1 ? "emph" : "strong" : "strike";
if (closercc === C_DOLLAR) {
nodeType = "customInline";
}
var newNode = createNode$1(nodeType);
var openerEndPos = openerInl.sourcepos[1];
var closerStartPos = closerInl.sourcepos[0];
newNode.sourcepos = [
[openerEndPos[0], openerEndPos[1] - useDelims + 1],
[closerStartPos[0], closerStartPos[1] + useDelims - 1]
];
openerInl.sourcepos[1][1] -= useDelims;
closerInl.sourcepos[0][1] += useDelims;
openerInl.literal = openerInl.literal.slice(useDelims);
closerInl.literal = closerInl.literal.slice(useDelims);
opener.numdelims -= useDelims;
closer.numdelims -= useDelims;
var tmp = openerInl.next;
var next = void 0;
while (tmp && tmp !== closerInl) {
next = tmp.next;
tmp.unlink();
newNode.appendChild(tmp);
tmp = next;
}
if (closercc === C_DOLLAR) {
var textNode = newNode.firstChild;
var literal = textNode.literal || "";
var info = literal.split(/\s/)[0];
newNode.info = info;
if (literal.length <= info.length) {
textNode.unlink();
} else {
textNode.sourcepos[0][1] += info.length;
textNode.literal = literal.replace(info + " ", "");
}
}
openerInl.insertAfter(newNode);
this.removeDelimitersBetween(opener, closer);
if (opener.numdelims <= emptyDelims) {
if (opener.numdelims === 0) {
openerInl.unlink();
}
this.removeDelimiter(opener);
}
if (closer.numdelims <= emptyDelims) {
if (closer.numdelims === 0) {
closerInl.unlink();
}
var tempstack = closer.next;
this.removeDelimiter(closer);
closer = tempstack;
}
}
} else if (closercc === C_SINGLEQUOTE) {
closer.node.literal = "\u2019";
if (openerFound) {
opener.node.literal = "\u2018";
}
closer = closer.next;
} else if (closercc === C_DOUBLEQUOTE) {
closer.node.literal = "\u201D";
if (openerFound) {
opener.node.literal = "\u201C";
}
closer = closer.next;
}
if (!openerFound) {
openersBottom[closercc][closerEmph ? oldCloser.origdelims % 3 : 0] = oldCloser.previous;
if (!oldCloser.canOpen) {
this.removeDelimiter(oldCloser);
}
}
}
}
while (this.delimiters !== null && this.delimiters !== stackBottom) {
this.removeDelimiter(this.delimiters);
}
};
InlineParser2.prototype.parseLinkTitle = function() {
var title = this.match(reLinkTitle);
if (title === null) {
return null;
}
return unescapeString(title.substr(1, title.length - 2));
};
InlineParser2.prototype.parseLinkDestination = function() {
var res = this.match(reLinkDestinationBraces);
if (res === null) {
if (this.peek() === C_LESSTHAN$1) {
return null;
}
var savepos = this.pos;
var openparens = 0;
var c = void 0;
while ((c = this.peek()) !== -1) {
if (c === C_BACKSLASH && reEscapable.test(this.subject.charAt(this.pos + 1))) {
this.pos += 1;
if (this.peek() !== -1) {
this.pos += 1;
}
} else if (c === C_OPEN_PAREN) {
this.pos += 1;
openparens += 1;
} else if (c === C_CLOSE_PAREN) {
if (openparens < 1) {
break;
} else {
this.pos += 1;
openparens -= 1;
}
} else if (reWhitespaceChar.exec(fromCodePoint$1(c)) !== null) {
break;
} else {
this.pos += 1;
}
}
if (this.pos === savepos && c !== C_CLOSE_PAREN) {
return null;
}
if (openparens !== 0) {
return null;
}
res = this.subject.substr(savepos, this.pos - savepos);
return normalizeURI(unescapeString(res));
}
return normalizeURI(unescapeString(res.substr(1, res.length - 2)));
};
InlineParser2.prototype.parseLinkLabel = function() {
var m = this.match(reLinkLabel);
if (m === null || m.length > 1001) {
return 0;
}
return m.length;
};
InlineParser2.prototype.parseOpenBracket = function(block2) {
var startpos = this.pos;
this.pos += 1;
var node = text$1("[", this.sourcepos(this.pos, this.pos));
block2.appendChild(node);
this.addBracket(node, startpos, false);
return true;
};
InlineParser2.prototype.parseBang = function(block2) {
var startpos = this.pos;
this.pos += 1;
if (this.peek() === C_OPEN_BRACKET$1) {
this.pos += 1;
var node = text$1("![", this.sourcepos(this.pos - 1, this.pos));
block2.appendChild(node);
this.addBracket(node, startpos + 1, true);
} else {
var node = text$1("!", this.sourcepos(this.pos, this.pos));
block2.appendChild(node);
}
return true;
};
InlineParser2.prototype.parseCloseBracket = function(block2) {
var dest = null;
var title = null;
var matched = false;
this.pos += 1;
var startpos = this.pos;
var opener = this.brackets;
if (opener === null) {
block2.appendChild(text$1("]", this.sourcepos(startpos, startpos)));
return true;
}
if (!opener.active) {
block2.appendChild(text$1("]", this.sourcepos(startpos, startpos)));
this.removeBracket();
return true;
}
var isImage = opener.image;
var savepos = this.pos;
if (this.peek() === C_OPEN_PAREN) {
this.pos++;
if (this.spnl() && (dest = this.parseLinkDestination()) !== null && this.spnl() && // make sure there's a space before the title:
(reWhitespaceChar.test(this.subject.charAt(this.pos - 1)) && (title = this.parseLinkTitle()) || true) && this.spnl() && this.peek() === C_CLOSE_PAREN) {
this.pos += 1;
matched = true;
} else {
this.pos = savepos;
}
}
var refLabel = "";
if (!matched) {
var beforelabel = this.pos;
var n = this.parseLinkLabel();
if (n > 2) {
refLabel = this.subject.slice(beforelabel, beforelabel + n);
} else if (!opener.bracketAfter) {
refLabel = this.subject.slice(opener.index, startpos);
}
if (n === 0) {
this.pos = savepos;
}
if (refLabel) {
refLabel = normalizeReference(refLabel);
var link2 = this.refMap[refLabel];
if (link2) {
dest = link2.destination;
title = link2.title;
matched = true;
}
}
}
if (matched) {
var node = createNode$1(isImage ? "image" : "link");
node.destination = dest;
node.title = title || "";
node.sourcepos = [opener.startpos, this.sourcepos(this.pos)];
var tmp = opener.node.next;
var next = void 0;
while (tmp) {
next = tmp.next;
tmp.unlink();
node.appendChild(tmp);
tmp = next;
}
block2.appendChild(node);
this.processEmphasis(opener.previousDelimiter);
this.removeBracket();
opener.node.unlink();
if (!isImage) {
opener = this.brackets;
while (opener !== null) {
if (!opener.image) {
opener.active = false;
}
opener = opener.previous;
}
}
if (this.options.referenceDefinition) {
this.refLinkCandidateMap[block2.id] = { node: block2, refLabel };
}
return true;
}
this.removeBracket();
this.pos = startpos;
block2.appendChild(text$1("]", this.sourcepos(startpos, startpos)));
if (this.options.referenceDefinition) {
this.refLinkCandidateMap[block2.id] = { node: block2, refLabel };
}
return true;
};
InlineParser2.prototype.addBracket = function(node, index2, image2) {
if (this.brackets !== null) {
this.brackets.bracketAfter = true;
}
this.brackets = {
node,
startpos: this.sourcepos(index2 + (image2 ? 0 : 1)),
previous: this.brackets,
previousDelimiter: this.delimiters,
index: index2,
image: image2,
active: true
};
};
InlineParser2.prototype.removeBracket = function() {
if (this.brackets) {
this.brackets = this.brackets.previous;
}
};
InlineParser2.prototype.parseEntity = function(block2) {
var m;
var startpos = this.pos + 1;
if (m = this.match(reEntityHere)) {
block2.appendChild(text$1(lib.decodeHTML(m), this.sourcepos(startpos, this.pos)));
return true;
}
return false;
};
InlineParser2.prototype.parseString = function(block2) {
var m;
var startpos = this.pos + 1;
if (m = this.match(reMain)) {
if (this.options.smart) {
var lit = m.replace(reEllipses, "\u2026").replace(reDash, function(chars) {
var enCount = 0;
var emCount = 0;
if (chars.length % 3 === 0) {
emCount = chars.length / 3;
} else if (chars.length % 2 === 0) {
enCount = chars.length / 2;
} else if (chars.length % 3 === 2) {
enCount = 1;
emCount = (chars.length - 2) / 3;
} else {
enCount = 2;
emCount = (chars.length - 4) / 3;
}
return repeat("\u2014", emCount) + repeat("\u2013", enCount);
});
block2.appendChild(text$1(lit, this.sourcepos(startpos, this.pos)));
} else {
var node = text$1(m, this.sourcepos(startpos, this.pos));
block2.appendChild(node);
}
return true;
}
return false;
};
InlineParser2.prototype.parseNewline = function(block2) {
this.pos += 1;
var lastc = block2.lastChild;
if (lastc && lastc.type === "text" && lastc.literal[lastc.literal.length - 1] === " ") {
var hardbreak = lastc.literal[lastc.literal.length - 2] === " ";
var litLen = lastc.literal.length;
lastc.literal = lastc.literal.replace(reFinalSpace, "");
var finalSpaceLen = litLen - lastc.literal.length;
lastc.sourcepos[1][1] -= finalSpaceLen;
block2.appendChild(createNode$1(hardbreak ? "linebreak" : "softbreak", this.sourcepos(this.pos - finalSpaceLen, this.pos)));
} else {
block2.appendChild(createNode$1("softbreak", this.sourcepos(this.pos, this.pos)));
}
this.nextLine();
this.match(reInitialSpace);
return true;
};
InlineParser2.prototype.parseReference = function(block2, refMap) {
if (!this.options.referenceDefinition) {
return 0;
}
this.subject = block2.stringContent;
this.pos = 0;
var title = null;
var startpos = this.pos;
var matchChars = this.parseLinkLabel();
if (matchChars === 0) {
return 0;
}
var rawlabel = this.subject.substr(0, matchChars);
if (this.peek() === C_COLON) {
this.pos++;
} else {
this.pos = startpos;
return 0;
}
this.spnl();
var dest = this.parseLinkDestination();
if (dest === null) {
this.pos = startpos;
return 0;
}
var beforetitle = this.pos;
this.spnl();
if (this.pos !== beforetitle) {
title = this.parseLinkTitle();
}
if (title === null) {
title = "";
this.pos = beforetitle;
}
var atLineEnd = true;
if (this.match(reSpaceAtEndOfLine) === null) {
if (title === "") {
atLineEnd = false;
} else {
title = "";
this.pos = beforetitle;
atLineEnd = this.match(reSpaceAtEndOfLine) !== null;
}
}
if (!atLineEnd) {
this.pos = startpos;
return 0;
}
var normalLabel = normalizeReference(rawlabel);
if (normalLabel === "") {
this.pos = startpos;
return 0;
}
var sourcepos = this.getReferenceDefSourcepos(block2);
block2.sourcepos[0][0] = sourcepos[1][0] + 1;
var node = createNode$1("refDef", sourcepos);
node.title = title;
node.dest = dest;
node.label = normalLabel;
block2.insertBefore(node);
if (!refMap[normalLabel]) {
refMap[normalLabel] = createRefDefState(node);
} else {
this.refDefCandidateMap[node.id] = node;
}
return this.pos - startpos;
};
InlineParser2.prototype.mergeTextNodes = function(walker) {
var event;
var textNodes = [];
while (event = walker.next()) {
var entering = event.entering, node = event.node;
if (entering && node.type === "text") {
textNodes.push(node);
} else if (textNodes.length === 1) {
textNodes = [];
} else if (textNodes.length > 1) {
var firstNode = textNodes[0];
var lastNode = textNodes[textNodes.length - 1];
if (firstNode.sourcepos && lastNode.sourcepos) {
firstNode.sourcepos[1] = lastNode.sourcepos[1];
}
firstNode.next = lastNode.next;
if (firstNode.next) {
firstNode.next.prev = firstNode;
}
for (var i = 1; i < textNodes.length; i += 1) {
firstNode.literal += textNodes[i].literal;
textNodes[i].unlink();
}
textNodes = [];
}
}
};
InlineParser2.prototype.getReferenceDefSourcepos = function(block2) {
var lines = block2.stringContent.split(/\n|\r\n/);
var passedUrlLine = false;
var quotationCount = 0;
var lastLineOffset = { line: 0, ch: 0 };
for (var i = 0; i < lines.length; i += 1) {
var line = lines[i];
if (reWhitespaceChar.test(line)) {
break;
}
if (/\:/.test(line) && quotationCount === 0) {
if (passedUrlLine) {
break;
}
var lineOffset = line.indexOf(":") === line.length - 1 ? i + 1 : i;
lastLineOffset = { line: lineOffset, ch: lines[lineOffset].length };
passedUrlLine = true;
}
var matched = line.match(/'|"/g);
if (matched) {
quotationCount += matched.length;
}
if (quotationCount === 2) {
lastLineOffset = { line: i, ch: line.length };
break;
}
}
return [
[block2.sourcepos[0][0], block2.sourcepos[0][1]],
[block2.sourcepos[0][0] + lastLineOffset.line, lastLineOffset.ch]
];
};
InlineParser2.prototype.parseInline = function(block2) {
var _a;
var res = false;
var c = this.peek();
if (c === -1) {
return false;
}
switch (c) {
case C_NEWLINE:
res = this.parseNewline(block2);
break;
case C_BACKSLASH:
res = this.parseBackslash(block2);
break;
case C_BACKTICK:
res = this.parseBackticks(block2);
break;
case C_ASTERISK:
case C_UNDERSCORE:
case C_TILDE:
case C_DOLLAR:
res = this.handleDelim(c, block2);
break;
case C_SINGLEQUOTE:
case C_DOUBLEQUOTE:
res = !!((_a = this.options) === null || _a === void 0 ? void 0 : _a.smart) && this.handleDelim(c, block2);
break;
case C_OPEN_BRACKET$1:
res = this.parseOpenBracket(block2);
break;
case C_BANG:
res = this.parseBang(block2);
break;
case C_CLOSE_BRACKET:
res = this.parseCloseBracket(block2);
break;
case C_LESSTHAN$1:
res = this.parseAutolink(block2) || this.parseHtmlTag(block2);
break;
case C_AMPERSAND:
if (!block2.disabledEntityParse) {
res = this.parseEntity(block2);
}
break;
default:
res = this.parseString(block2);
break;
}
if (!res) {
this.pos += 1;
block2.appendChild(text$1(fromCodePoint$1(c), this.sourcepos(this.pos, this.pos + 1)));
}
return true;
};
InlineParser2.prototype.parse = function(block2) {
this.subject = block2.stringContent.trim();
this.pos = 0;
this.delimiters = null;
this.brackets = null;
this.lineOffsets = block2.lineOffsets || [0];
this.lineIdx = 0;
this.linePosOffset = 0;
this.lineStartNum = block2.sourcepos[0][0];
if (isHeading(block2)) {
this.lineOffsets[0] += block2.level + 1;
}
while (this.parseInline(block2)) {
}
block2.stringContent = null;
this.processEmphasis(null);
this.mergeTextNodes(block2.walker());
var _a = this.options, extendedAutolinks = _a.extendedAutolinks, customParser = _a.customParser;
if (extendedAutolinks) {
convertExtAutoLinks(block2.walker(), extendedAutolinks);
}
if (customParser && block2.firstChild) {
var event_1;
var walker = block2.firstChild.walker();
while (event_1 = walker.next()) {
var node = event_1.node, entering = event_1.entering;
if (customParser[node.type]) {
customParser[node.type](node, { entering, options: this.options });
}
}
}
};
return InlineParser2;
})()
);
var reTaskListItemMarker = /^\[([ \txX])\][ \t]+/;
function taskListItemFinalize(_, block2) {
if (block2.firstChild && block2.firstChild.type === "paragraph") {
var p = block2.firstChild;
var m = p.stringContent.match(reTaskListItemMarker);
if (m) {
var mLen = m[0].length;
p.stringContent = p.stringContent.substring(mLen - 1);
p.sourcepos[0][1] += mLen;
p.lineOffsets[0] += mLen;
block2.listData.task = true;
block2.listData.checked = /[xX]/.test(m[1]);
}
}
}
var table = {
continue: function() {
return 0;
},
finalize: function() {
},
canContain: function(t) {
return t === "tableHead" || t === "tableBody";
},
acceptsLines: false
};
var tableBody$1 = {
continue: function() {
return 0;
},
finalize: function() {
},
canContain: function(t) {
return t === "tableRow";
},
acceptsLines: false
};
var tableHead$1 = {
continue: function() {
return 1;
},
finalize: function() {
},
canContain: function(t) {
return t === "tableRow" || t === "tableDelimRow";
},
acceptsLines: false
};
var tableDelimRow = {
continue: function() {
return 1;
},
finalize: function() {
},
canContain: function(t) {
return t === "tableDelimCell";
},
acceptsLines: false
};
var tableDelimCell = {
continue: function() {
return 1;
},
finalize: function() {
},
canContain: function() {
return false;
},
acceptsLines: false
};
var tableRow = {
continue: function() {
return 1;
},
finalize: function() {
},
canContain: function(t) {
return t === "tableCell";
},
acceptsLines: false
};
var tableCell = {
continue: function() {
return 1;
},
finalize: function() {
},
canContain: function() {
return false;
},
acceptsLines: false
};
var CODE_INDENT = 4;
var C_TAB = 9;
var C_GREATERTHAN = 62;
var C_LESSTHAN = 60;
var C_SPACE = 32;
var C_OPEN_BRACKET = 91;
var reNonSpace = /[^ \t\f\v\r\n]/;
var reClosingCodeFence = /^(?:`{3,}|~{3,})(?= *$)/;
function endsWithBlankLine(block2) {
var curBlock = block2;
while (curBlock) {
if (curBlock.lastLineBlank) {
return true;
}
var t = curBlock.type;
if (!curBlock.lastLineChecked && (t === "list" || t === "item")) {
curBlock.lastLineChecked = true;
curBlock = curBlock.lastChild;
} else {
curBlock.lastLineChecked = true;
break;
}
}
return false;
}
function peek(ln, pos) {
if (pos < ln.length) {
return ln.charCodeAt(pos);
}
return -1;
}
function isBlank(s) {
return !reNonSpace.test(s);
}
function isSpaceOrTab(c) {
return c === C_SPACE || c === C_TAB;
}
var reClosingCustomBlock = /^\$\$$/;
var customBlock$1 = {
continue: function(parser, container) {
var line = parser.currentLine;
var match = line.match(reClosingCustomBlock);
if (match) {
parser.lastLineLength = match[0].length;
parser.finalize(container, parser.lineNumber);
return 2;
}
var i = container.offset;
while (i > 0 && isSpaceOrTab(peek(line, parser.offset))) {
parser.advanceOffset(1, true);
i--;
}
return 0;
},
finalize: function(_, block2) {
if (block2.stringContent === null) {
return;
}
var content = block2.stringContent;
var newlinePos = content.indexOf("\n");
var firstLine = content.slice(0, newlinePos);
var rest = content.slice(newlinePos + 1);
var infoString = firstLine.match(/^(\s*)(.*)/);
block2.info = unescapeString(infoString[2].trim());
block2.literal = rest;
block2.stringContent = null;
},
canContain: function() {
return false;
},
acceptsLines: true
};
var noop = {
continue: function() {
return 1;
},
finalize: function() {
},
canContain: function() {
return false;
},
acceptsLines: true
};
var document$1 = {
continue: function() {
return 0;
},
finalize: function() {
},
canContain: function(t) {
return t !== "item";
},
acceptsLines: false
};
var list = {
continue: function() {
return 0;
},
finalize: function(_, block2) {
var item2 = block2.firstChild;
while (item2) {
if (endsWithBlankLine(item2) && item2.next) {
block2.listData.tight = false;
break;
}
var subitem = item2.firstChild;
while (subitem) {
if (endsWithBlankLine(subitem) && (item2.next || subitem.next)) {
block2.listData.tight = false;
break;
}
subitem = subitem.next;
}
item2 = item2.next;
}
},
canContain: function(t) {
return t === "item";
},
acceptsLines: false
};
var blockQuote$1 = {
continue: function(parser) {
var ln = parser.currentLine;
if (!parser.indented && peek(ln, parser.nextNonspace) === C_GREATERTHAN) {
parser.advanceNextNonspace();
parser.advanceOffset(1, false);
if (isSpaceOrTab(peek(ln, parser.offset))) {
parser.advanceOffset(1, true);
}
} else {
return 1;
}
return 0;
},
finalize: function() {
},
canContain: function(t) {
return t !== "item";
},
acceptsLines: false
};
var item = {
continue: function(parser, container) {
if (parser.blank) {
if (container.firstChild === null) {
return 1;
}
parser.advanceNextNonspace();
} else if (parser.indent >= container.listData.markerOffset + container.listData.padding) {
parser.advanceOffset(container.listData.markerOffset + container.listData.padding, true);
} else {
return 1;
}
return 0;
},
finalize: taskListItemFinalize,
canContain: function(t) {
return t !== "item";
},
acceptsLines: false
};
var heading = {
continue: function() {
return 1;
},
finalize: function() {
},
canContain: function() {
return false;
},
acceptsLines: false
};
var thematicBreak$1 = {
continue: function() {
return 1;
},
finalize: function() {
},
canContain: function() {
return false;
},
acceptsLines: false
};
var codeBlock = {
continue: function(parser, container) {
var ln = parser.currentLine;
var indent2 = parser.indent;
if (container.isFenced) {
var match = indent2 <= 3 && ln.charAt(parser.nextNonspace) === container.fenceChar && ln.slice(parser.nextNonspace).match(reClosingCodeFence);
if (match && match[0].length >= container.fenceLength) {
parser.lastLineLength = parser.offset + indent2 + match[0].length;
parser.finalize(container, parser.lineNumber);
return 2;
}
var i = container.fenceOffset;
while (i > 0 && isSpaceOrTab(peek(ln, parser.offset))) {
parser.advanceOffset(1, true);
i--;
}
} else {
if (indent2 >= CODE_INDENT) {
parser.advanceOffset(CODE_INDENT, true);
} else if (parser.blank) {
parser.advanceNextNonspace();
} else {
return 1;
}
}
return 0;
},
finalize: function(_, block2) {
var _a;
if (block2.stringContent === null) {
return;
}
if (block2.isFenced) {
var content = block2.stringContent;
var newlinePos = content.indexOf("\n");
var firstLine = content.slice(0, newlinePos);
var rest = content.slice(newlinePos + 1);
var infoString = firstLine.match(/^(\s*)(.*)/);
block2.infoPadding = infoString[1].length;
block2.info = unescapeString(infoString[2].trim());
block2.literal = rest;
} else {
block2.literal = (_a = block2.stringContent) === null || _a === void 0 ? void 0 : _a.replace(/(\n *)+$/, "\n");
}
block2.stringContent = null;
},
canContain: function() {
return false;
},
acceptsLines: true
};
var htmlBlock$1 = {
continue: function(parser, container) {
return parser.blank && (container.htmlBlockType === 6 || container.htmlBlockType === 7) ? 1 : 0;
},
finalize: function(_, block2) {
var _a;
block2.literal = ((_a = block2.stringContent) === null || _a === void 0 ? void 0 : _a.replace(/(\n *)+$/, "")) || null;
block2.stringContent = null;
},
canContain: function() {
return false;
},
acceptsLines: true
};
var paragraph = {
continue: function(parser) {
return parser.blank ? 1 : 0;
},
finalize: function(parser, block2) {
if (block2.stringContent === null) {
return;
}
var pos;
var hasReferenceDefs = false;
while (peek(block2.stringContent, 0) === C_OPEN_BRACKET && (pos = parser.inlineParser.parseReference(block2, parser.refMap))) {
block2.stringContent = block2.stringContent.slice(pos);
hasReferenceDefs = true;
}
if (hasReferenceDefs && isBlank(block2.stringContent)) {
block2.unlink();
}
},
canContain: function() {
return false;
},
acceptsLines: true
};
var refDef = noop;
var frontMatter$2 = noop;
var blockHandlers = {
document: document$1,
list,
blockQuote: blockQuote$1,
item,
heading,
thematicBreak: thematicBreak$1,
codeBlock,
htmlBlock: htmlBlock$1,
paragraph,
table,
tableBody: tableBody$1,
tableHead: tableHead$1,
tableRow,
tableCell,
tableDelimRow,
tableDelimCell,
refDef,
customBlock: customBlock$1,
frontMatter: frontMatter$2
};
function parseRowContent(content) {
var startIdx = 0;
var offset = 0;
var cells = [];
for (var i = 0; i < content.length; i += 1) {
if (content[i] === "|" && content[i - 1] !== "\\") {
var cell = content.substring(startIdx, i);
if (startIdx === 0 && isEmpty(cell)) {
offset = i + 1;
} else {
cells.push(cell);
}
startIdx = i + 1;
}
}
if (startIdx < content.length) {
var cell = content.substring(startIdx, content.length);
if (!isEmpty(cell)) {
cells.push(cell);
}
}
return [offset, cells];
}
function generateTableCells(cellType, contents, lineNum, chPos) {
var cells = [];
for (var _i = 0, contents_1 = contents; _i < contents_1.length; _i++) {
var content = contents_1[_i];
var preSpaces = content.match(/^[ \t]+/);
var paddingLeft = preSpaces ? preSpaces[0].length : 0;
var paddingRight = void 0, trimmed = void 0;
if (paddingLeft === content.length) {
paddingLeft = 0;
paddingRight = 0;
trimmed = "";
} else {
var postSpaces = content.match(/[ \t]+$/);
paddingRight = postSpaces ? postSpaces[0].length : 0;
trimmed = content.slice(paddingLeft, content.length - paddingRight);
}
var chPosStart = chPos + paddingLeft;
var tableCell2 = createNode$1(cellType, [
[lineNum, chPos],
[lineNum, chPos + content.length - 1]
]);
tableCell2.stringContent = trimmed.replace(/\\\|/g, "|");
tableCell2.startIdx = cells.length;
tableCell2.endIdx = cells.length;
tableCell2.lineOffsets = [chPosStart - 1];
tableCell2.paddingLeft = paddingLeft;
tableCell2.paddingRight = paddingRight;
cells.push(tableCell2);
chPos += content.length + 1;
}
return cells;
}
function getColumnFromDelimCell(cellNode) {
var align = null;
var content = cellNode.stringContent;
var firstCh = content[0];
var lastCh = content[content.length - 1];
if (lastCh === ":") {
align = firstCh === ":" ? "center" : "right";
} else if (firstCh === ":") {
align = "left";
}
return { align };
}
var tableHead = function(parser, container) {
var stringContent = container.stringContent;
if (container.type === "paragraph" && !parser.indented && !parser.blank) {
var lastNewLineIdx = stringContent.length - 1;
var lastLineStartIdx = stringContent.lastIndexOf("\n", lastNewLineIdx - 1) + 1;
var headerContent = stringContent.slice(lastLineStartIdx, lastNewLineIdx);
var delimContent = parser.currentLine.slice(parser.nextNonspace);
var _a = parseRowContent(headerContent), headerOffset = _a[0], headerCells = _a[1];
var _b = parseRowContent(delimContent), delimOffset = _b[0], delimCells = _b[1];
var reValidDelimCell_1 = /^[ \t]*:?-+:?[ \t]*$/;
if (
// not checking if the number of header cells and delimiter cells are the same
// to consider the case of merged-column (via plugin)
!headerCells.length || !delimCells.length || delimCells.some(function(cell) {
return !reValidDelimCell_1.test(cell);
}) || // to prevent to regard setTextHeading as tabel delim cell with 'disallowDeepHeading' option
delimCells.length === 1 && delimContent.indexOf("|") !== 0
) {
return 0;
}
var lineOffsets = container.lineOffsets;
var firstLineNum = parser.lineNumber - 1;
var firstLineStart = last(lineOffsets) + 1;
var table2 = createNode$1("table", [
[firstLineNum, firstLineStart],
[parser.lineNumber, parser.offset]
]);
table2.columns = delimCells.map(function() {
return { align: null };
});
container.insertAfter(table2);
if (lineOffsets.length === 1) {
container.unlink();
} else {
container.stringContent = stringContent.slice(0, lastLineStartIdx);
var paraLastLineStartIdx = stringContent.lastIndexOf("\n", lastLineStartIdx - 2) + 1;
var paraLastLineLen = lastLineStartIdx - paraLastLineStartIdx - 1;
parser.lastLineLength = lineOffsets[lineOffsets.length - 2] + paraLastLineLen;
parser.finalize(container, firstLineNum - 1);
}
parser.advanceOffset(parser.currentLine.length - parser.offset, false);
var tableHead_1 = createNode$1("tableHead", [
[firstLineNum, firstLineStart],
[parser.lineNumber, parser.offset]
]);
table2.appendChild(tableHead_1);
var tableHeadRow_1 = createNode$1("tableRow", [
[firstLineNum, firstLineStart],
[firstLineNum, firstLineStart + headerContent.length - 1]
]);
var tableDelimRow_1 = createNode$1("tableDelimRow", [
[parser.lineNumber, parser.nextNonspace + 1],
[parser.lineNumber, parser.offset]
]);
tableHead_1.appendChild(tableHeadRow_1);
tableHead_1.appendChild(tableDelimRow_1);
generateTableCells("tableCell", headerCells, firstLineNum, firstLineStart + headerOffset).forEach(function(cellNode) {
tableHeadRow_1.appendChild(cellNode);
});
var delimCellNodes = generateTableCells("tableDelimCell", delimCells, parser.lineNumber, parser.nextNonspace + 1 + delimOffset);
delimCellNodes.forEach(function(cellNode) {
tableDelimRow_1.appendChild(cellNode);
});
table2.columns = delimCellNodes.map(getColumnFromDelimCell);
parser.tip = table2;
return 2;
}
return 0;
};
var tableBody = function(parser, container) {
if (container.type !== "table" && container.type !== "tableBody" || !parser.blank && parser.currentLine.indexOf("|") === -1) {
return 0;
}
parser.advanceOffset(parser.currentLine.length - parser.offset, false);
if (parser.blank) {
var table_1 = container;
if (container.type === "tableBody") {
table_1 = container.parent;
parser.finalize(container, parser.lineNumber - 1);
}
parser.finalize(table_1, parser.lineNumber - 1);
return 0;
}
var tableBody2 = container;
if (container.type === "table") {
tableBody2 = parser.addChild("tableBody", parser.nextNonspace);
tableBody2.stringContent = null;
}
var tableRow2 = createNode$1("tableRow", [
[parser.lineNumber, parser.nextNonspace + 1],
[parser.lineNumber, parser.currentLine.length]
]);
tableBody2.appendChild(tableRow2);
var table2 = tableBody2.parent;
var content = parser.currentLine.slice(parser.nextNonspace);
var _a = parseRowContent(content), offset = _a[0], cellContents = _a[1];
generateTableCells("tableCell", cellContents, parser.lineNumber, parser.nextNonspace + 1 + offset).forEach(function(cellNode, idx) {
if (idx >= table2.columns.length) {
cellNode.ignored = true;
}
tableRow2.appendChild(cellNode);
});
return 2;
};
var reCustomBlock = /^(\$\$)(\s*[a-zA-Z])+/;
var reCanBeCustomInline = /^(\$\$)(\s*[a-zA-Z])+.*(\$\$)/;
var customBlock = function(parser) {
var match;
if (!parser.indented && !reCanBeCustomInline.test(parser.currentLine) && (match = parser.currentLine.match(reCustomBlock))) {
var syntaxLength = match[1].length;
parser.closeUnmatchedBlocks();
var container = parser.addChild("customBlock", parser.nextNonspace);
container.syntaxLength = syntaxLength;
container.offset = parser.indent;
parser.advanceNextNonspace();
parser.advanceOffset(syntaxLength, false);
return 2;
}
return 0;
};
var reCodeFence = /^`{3,}(?!.*`)|^~{3,}/;
var reHtmlBlockOpen = [
/./,
/^<(?:script|pre|style)(?:\s|>|$)/i,
/^/,
/\?>/,
/>/,
/\]\]>/
];
var reMaybeSpecial = /^[#`~*+_=<>0-9-;$]/;
var reLineEnding$1 = /\r\n|\n|\r/;
function document$2() {
return createNode$1("document", [
[1, 1],
[0, 0]
]);
}
var defaultOptions$1 = {
smart: false,
tagFilter: false,
extendedAutolinks: false,
disallowedHtmlBlockTags: [],
referenceDefinition: false,
disallowDeepHeading: false,
customParser: null,
frontMatter: false
};
var Parser = (
/** @class */
(function() {
function Parser2(options) {
this.options = __assign(__assign({}, defaultOptions$1), options);
this.doc = document$2();
this.tip = this.doc;
this.oldtip = this.doc;
this.lineNumber = 0;
this.offset = 0;
this.column = 0;
this.nextNonspace = 0;
this.nextNonspaceColumn = 0;
this.indent = 0;
this.currentLine = "";
this.indented = false;
this.blank = false;
this.partiallyConsumedTab = false;
this.allClosed = true;
this.lastMatchedContainer = this.doc;
this.refMap = {};
this.refLinkCandidateMap = {};
this.refDefCandidateMap = {};
this.lastLineLength = 0;
this.lines = [];
if (this.options.frontMatter) {
blockHandlers.frontMatter = frontMatter;
blockStarts.unshift(frontMatter$1);
}
this.inlineParser = new InlineParser(this.options);
}
Parser2.prototype.advanceOffset = function(count, columns) {
if (columns === void 0) {
columns = false;
}
var currentLine = this.currentLine;
var charsToTab, charsToAdvance;
var c;
while (count > 0 && (c = currentLine[this.offset])) {
if (c === " ") {
charsToTab = 4 - this.column % 4;
if (columns) {
this.partiallyConsumedTab = charsToTab > count;
charsToAdvance = charsToTab > count ? count : charsToTab;
this.column += charsToAdvance;
this.offset += this.partiallyConsumedTab ? 0 : 1;
count -= charsToAdvance;
} else {
this.partiallyConsumedTab = false;
this.column += charsToTab;
this.offset += 1;
count -= 1;
}
} else {
this.partiallyConsumedTab = false;
this.offset += 1;
this.column += 1;
count -= 1;
}
}
};
Parser2.prototype.advanceNextNonspace = function() {
this.offset = this.nextNonspace;
this.column = this.nextNonspaceColumn;
this.partiallyConsumedTab = false;
};
Parser2.prototype.findNextNonspace = function() {
var currentLine = this.currentLine;
var i = this.offset;
var cols = this.column;
var c;
while ((c = currentLine.charAt(i)) !== "") {
if (c === " ") {
i++;
cols++;
} else if (c === " ") {
i++;
cols += 4 - cols % 4;
} else {
break;
}
}
this.blank = c === "\n" || c === "\r" || c === "";
this.nextNonspace = i;
this.nextNonspaceColumn = cols;
this.indent = this.nextNonspaceColumn - this.column;
this.indented = this.indent >= CODE_INDENT;
};
Parser2.prototype.addLine = function() {
if (this.partiallyConsumedTab) {
this.offset += 1;
var charsToTab = 4 - this.column % 4;
this.tip.stringContent += repeat(" ", charsToTab);
}
if (this.tip.lineOffsets) {
this.tip.lineOffsets.push(this.offset);
} else {
this.tip.lineOffsets = [this.offset];
}
this.tip.stringContent += this.currentLine.slice(this.offset) + "\n";
};
Parser2.prototype.addChild = function(tag, offset) {
while (!blockHandlers[this.tip.type].canContain(tag)) {
this.finalize(this.tip, this.lineNumber - 1);
}
var columnNumber = offset + 1;
var newBlock = createNode$1(tag, [
[this.lineNumber, columnNumber],
[0, 0]
]);
newBlock.stringContent = "";
this.tip.appendChild(newBlock);
this.tip = newBlock;
return newBlock;
};
Parser2.prototype.closeUnmatchedBlocks = function() {
if (!this.allClosed) {
while (this.oldtip !== this.lastMatchedContainer) {
var parent_1 = this.oldtip.parent;
this.finalize(this.oldtip, this.lineNumber - 1);
this.oldtip = parent_1;
}
this.allClosed = true;
}
};
Parser2.prototype.finalize = function(block2, lineNumber) {
var above = block2.parent;
block2.open = false;
block2.sourcepos[1] = [lineNumber, this.lastLineLength];
blockHandlers[block2.type].finalize(this, block2);
this.tip = above;
};
Parser2.prototype.processInlines = function(block2) {
var event;
var customParser = this.options.customParser;
var walker = block2.walker();
this.inlineParser.refMap = this.refMap;
this.inlineParser.refLinkCandidateMap = this.refLinkCandidateMap;
this.inlineParser.refDefCandidateMap = this.refDefCandidateMap;
this.inlineParser.options = this.options;
while (event = walker.next()) {
var node = event.node, entering = event.entering;
var t = node.type;
if (customParser && customParser[t]) {
customParser[t](node, { entering, options: this.options });
}
if (!entering && (t === "paragraph" || t === "heading" || t === "tableCell" && !node.ignored)) {
this.inlineParser.parse(node);
}
}
};
Parser2.prototype.incorporateLine = function(ln) {
var container = this.doc;
this.oldtip = this.tip;
this.offset = 0;
this.column = 0;
this.blank = false;
this.partiallyConsumedTab = false;
this.lineNumber += 1;
if (ln.indexOf("\0") !== -1) {
ln = ln.replace(/\0/g, "\uFFFD");
}
this.currentLine = ln;
var allMatched = true;
var lastChild;
while ((lastChild = container.lastChild) && lastChild.open) {
container = lastChild;
this.findNextNonspace();
switch (blockHandlers[container.type]["continue"](this, container)) {
case 0:
break;
case 1:
allMatched = false;
break;
case 2:
this.lastLineLength = ln.length;
return;
default:
throw new Error("continue returned illegal value, must be 0, 1, or 2");
}
if (!allMatched) {
container = container.parent;
break;
}
}
this.allClosed = container === this.oldtip;
this.lastMatchedContainer = container;
var matchedLeaf = container.type !== "paragraph" && blockHandlers[container.type].acceptsLines;
var blockStartsLen = blockStarts.length;
while (!matchedLeaf) {
this.findNextNonspace();
if (container.type !== "table" && container.type !== "tableBody" && container.type !== "paragraph" && !this.indented && !reMaybeSpecial.test(ln.slice(this.nextNonspace))) {
this.advanceNextNonspace();
break;
}
var i = 0;
while (i < blockStartsLen) {
var res = blockStarts[i](this, container);
if (res === 1) {
container = this.tip;
break;
} else if (res === 2) {
container = this.tip;
matchedLeaf = true;
break;
} else {
i++;
}
}
if (i === blockStartsLen) {
this.advanceNextNonspace();
break;
}
}
if (!this.allClosed && !this.blank && this.tip.type === "paragraph") {
this.addLine();
} else {
this.closeUnmatchedBlocks();
if (this.blank && container.lastChild) {
container.lastChild.lastLineBlank = true;
}
var t = container.type;
var lastLineBlank = this.blank && !(t === "blockQuote" || isCodeBlock(container) && container.isFenced || t === "item" && !container.firstChild && container.sourcepos[0][0] === this.lineNumber);
var cont = container;
while (cont) {
cont.lastLineBlank = lastLineBlank;
cont = cont.parent;
}
if (blockHandlers[t].acceptsLines) {
this.addLine();
if (isHtmlBlock(container) && container.htmlBlockType >= 1 && container.htmlBlockType <= 5 && reHtmlBlockClose[container.htmlBlockType].test(this.currentLine.slice(this.offset))) {
this.lastLineLength = ln.length;
this.finalize(container, this.lineNumber);
}
} else if (this.offset < ln.length && !this.blank) {
container = this.addChild("paragraph", this.offset);
this.advanceNextNonspace();
this.addLine();
}
}
this.lastLineLength = ln.length;
};
Parser2.prototype.parse = function(input, lineTexts) {
this.doc = document$2();
this.tip = this.doc;
this.lineNumber = 0;
this.lastLineLength = 0;
this.offset = 0;
this.column = 0;
this.lastMatchedContainer = this.doc;
this.currentLine = "";
var lines = input.split(reLineEnding$1);
var len = lines.length;
this.lines = lineTexts ? lineTexts : lines;
if (this.options.referenceDefinition) {
this.clearRefMaps();
}
if (input.charCodeAt(input.length - 1) === C_NEWLINE) {
len -= 1;
}
for (var i = 0; i < len; i++) {
this.incorporateLine(lines[i]);
}
while (this.tip) {
this.finalize(this.tip, len);
}
this.processInlines(this.doc);
return this.doc;
};
Parser2.prototype.partialParseStart = function(lineNumber, lines) {
this.doc = document$2();
this.tip = this.doc;
this.lineNumber = lineNumber - 1;
this.lastLineLength = 0;
this.offset = 0;
this.column = 0;
this.lastMatchedContainer = this.doc;
this.currentLine = "";
var len = lines.length;
for (var i = 0; i < len; i++) {
this.incorporateLine(lines[i]);
}
return this.doc;
};
Parser2.prototype.partialParseExtends = function(lines) {
for (var i = 0; i < lines.length; i++) {
this.incorporateLine(lines[i]);
}
};
Parser2.prototype.partialParseFinish = function() {
while (this.tip) {
this.finalize(this.tip, this.lineNumber);
}
this.processInlines(this.doc);
};
Parser2.prototype.setRefMaps = function(refMap, refLinkCandidateMap, refDefCandidateMap) {
this.refMap = refMap;
this.refLinkCandidateMap = refLinkCandidateMap;
this.refDefCandidateMap = refDefCandidateMap;
};
Parser2.prototype.clearRefMaps = function() {
[this.refMap, this.refLinkCandidateMap, this.refDefCandidateMap].forEach(function(map3) {
clearObj(map3);
});
};
return Parser2;
})()
);
function comparePos(p1, p2) {
if (p1[0] < p2[0]) {
return 1;
}
if (p1[0] > p2[0]) {
return -1;
}
if (p1[1] < p2[1]) {
return 1;
}
if (p1[1] > p2[1]) {
return -1;
}
return 0;
}
function compareRangeAndPos(_a, pos) {
var startPos = _a[0], endPos = _a[1];
if (comparePos(endPos, pos) === 1) {
return 1;
}
if (comparePos(startPos, pos) === -1) {
return -1;
}
return 0;
}
function removeNextUntil(node, last2) {
if (node.parent !== last2.parent || node === last2) {
return;
}
var next = node.next;
while (next && next !== last2) {
var temp = next.next;
for (var _i = 0, _a = ["parent", "prev", "next"]; _i < _a.length; _i++) {
var type = _a[_i];
if (next[type]) {
removeNodeById(next[type].id);
next[type] = null;
}
}
next = temp;
}
node.next = last2.next;
if (last2.next) {
last2.next.prev = node;
} else {
node.parent.lastChild = node;
}
}
function getChildNodes(parent) {
var nodes = [];
var curr = parent.firstChild;
while (curr) {
nodes.push(curr);
curr = curr.next;
}
return nodes;
}
function insertNodesBefore(target2, nodes) {
for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {
var node = nodes_1[_i];
target2.insertBefore(node);
}
}
function prependChildNodes(parent, nodes) {
for (var i = nodes.length - 1; i >= 0; i -= 1) {
parent.prependChild(nodes[i]);
}
}
function updateNextLineNumbers(base2, diff2) {
if (!base2 || !base2.parent || diff2 === 0) {
return;
}
var walker = base2.parent.walker();
walker.resumeAt(base2, true);
var event;
while (event = walker.next()) {
var node = event.node, entering = event.entering;
if (entering) {
node.sourcepos[0][0] += diff2;
node.sourcepos[1][0] += diff2;
}
}
}
function compareRangeAndLine(_a, line) {
var startPos = _a[0], endPos = _a[1];
if (endPos[0] < line) {
return 1;
}
if (startPos[0] > line) {
return -1;
}
return 0;
}
function findChildNodeAtLine(parent, line) {
var node = parent.firstChild;
while (node) {
var comp2 = compareRangeAndLine(node.sourcepos, line);
if (comp2 === 0) {
return node;
}
if (comp2 === -1) {
return node.prev || node;
}
node = node.next;
}
return parent.lastChild;
}
function lastLeafNode(node) {
while (node.lastChild) {
node = node.lastChild;
}
return node;
}
function sameLineTopAncestor(node) {
while (node.parent && node.parent.type !== "document" && node.parent.sourcepos[0][0] === node.sourcepos[0][0]) {
node = node.parent;
}
return node;
}
function findFirstNodeAtLine(parent, line) {
var node = parent.firstChild;
var prev = null;
while (node) {
var comp2 = compareRangeAndLine(node.sourcepos, line);
if (comp2 === 0) {
if (node.sourcepos[0][0] === line || !node.firstChild) {
return node;
}
prev = node;
node = node.firstChild;
} else if (comp2 === -1) {
break;
} else {
prev = node;
node = node.next;
}
}
if (prev) {
return sameLineTopAncestor(lastLeafNode(prev));
}
return null;
}
function findNodeAtPosition(parent, pos) {
var node = parent;
var prev = null;
while (node) {
var comp2 = compareRangeAndPos(node.sourcepos, pos);
if (comp2 === 0) {
if (node.firstChild) {
prev = node;
node = node.firstChild;
} else {
return node;
}
} else if (comp2 === -1) {
return prev;
} else if (node.next) {
node = node.next;
} else {
return prev;
}
}
return node;
}
function findNodeById(id) {
return getNodeById(id) || null;
}
function invokeNextUntil(callback, start, end) {
if (end === void 0) {
end = null;
}
if (start) {
var walker = start.walker();
while (start && start !== end) {
callback(start);
var next = walker.next();
if (next) {
start = next.node;
} else {
break;
}
}
}
}
function isUnlinked(id) {
var node = findNodeById(id);
if (!node) {
return true;
}
while (node && node.type !== "document") {
if (!node.parent && !node.prev && !node.next) {
return true;
}
node = node.parent;
}
return false;
}
var reLineEnding = /\r\n|\n|\r/;
function canBeContinuedListItem(lineText) {
var spaceMatch = lineText.match(/^[ \t]+/);
if (spaceMatch && (spaceMatch[0].length >= 2 || /\t/.test(spaceMatch[0]))) {
return true;
}
var leftTrimmed = spaceMatch ? lineText.slice(spaceMatch.length) : lineText;
return reBulletListMarker.test(leftTrimmed) || reOrderedListMarker.test(leftTrimmed);
}
function canBeContinuedTableBody(lineText) {
return !isBlank(lineText) && lineText.indexOf("|") !== -1;
}
function createRefDefState(node) {
var id = node.id, title = node.title, sourcepos = node.sourcepos, dest = node.dest;
return {
id,
title,
sourcepos,
unlinked: false,
destination: dest
};
}
var ToastMark = (
/** @class */
(function() {
function ToastMark2(contents, options) {
this.refMap = {};
this.refLinkCandidateMap = {};
this.refDefCandidateMap = {};
this.referenceDefinition = !!(options === null || options === void 0 ? void 0 : options.referenceDefinition);
this.parser = new Parser(options);
this.parser.setRefMaps(this.refMap, this.refLinkCandidateMap, this.refDefCandidateMap);
this.eventHandlerMap = { change: [] };
contents = contents || "";
this.lineTexts = contents.split(reLineEnding);
this.root = this.parser.parse(contents, this.lineTexts);
}
ToastMark2.prototype.updateLineTexts = function(startPos, endPos, newText) {
var _a;
var startLine = startPos[0], startCol = startPos[1];
var endLine = endPos[0], endCol = endPos[1];
var newLines = newText.split(reLineEnding);
var newLineLen = newLines.length;
var startLineText = this.lineTexts[startLine - 1];
var endLineText = this.lineTexts[endLine - 1];
newLines[0] = startLineText.slice(0, startCol - 1) + newLines[0];
newLines[newLineLen - 1] = newLines[newLineLen - 1] + endLineText.slice(endCol - 1);
var removedLineLen = endLine - startLine + 1;
(_a = this.lineTexts).splice.apply(_a, __spreadArray([startLine - 1, removedLineLen], newLines));
return newLineLen - removedLineLen;
};
ToastMark2.prototype.updateRootNodeState = function() {
if (this.lineTexts.length === 1 && this.lineTexts[0] === "") {
this.root.lastLineBlank = true;
this.root.sourcepos = [
[1, 1],
[1, 0]
];
return;
}
if (this.root.lastChild) {
this.root.lastLineBlank = this.root.lastChild.lastLineBlank;
}
var lineTexts = this.lineTexts;
var idx = lineTexts.length - 1;
while (lineTexts[idx] === "") {
idx -= 1;
}
if (lineTexts.length - 2 > idx) {
idx += 1;
}
this.root.sourcepos[1] = [idx + 1, lineTexts[idx].length];
};
ToastMark2.prototype.replaceRangeNodes = function(startNode, endNode, newNodes) {
if (!startNode) {
if (endNode) {
insertNodesBefore(endNode, newNodes);
removeNodeById(endNode.id);
endNode.unlink();
} else {
prependChildNodes(this.root, newNodes);
}
} else {
insertNodesBefore(startNode, newNodes);
removeNextUntil(startNode, endNode);
[startNode.id, endNode.id].forEach(function(id) {
return removeNodeById(id);
});
startNode.unlink();
}
};
ToastMark2.prototype.getNodeRange = function(startPos, endPos) {
var startNode = findChildNodeAtLine(this.root, startPos[0]);
var endNode = findChildNodeAtLine(this.root, endPos[0]);
if (endNode && endNode.next && endPos[0] + 1 === endNode.next.sourcepos[0][0]) {
endNode = endNode.next;
}
return [startNode, endNode];
};
ToastMark2.prototype.trigger = function(eventName, param) {
this.eventHandlerMap[eventName].forEach(function(handler) {
handler(param);
});
};
ToastMark2.prototype.extendEndLine = function(line) {
while (this.lineTexts[line] === "") {
line += 1;
}
return line;
};
ToastMark2.prototype.parseRange = function(startNode, endNode, startLine, endLine) {
if (startNode && startNode.prev && (isList(startNode.prev) && canBeContinuedListItem(this.lineTexts[startLine - 1]) || isTable(startNode.prev) && canBeContinuedTableBody(this.lineTexts[startLine - 1]))) {
startNode = startNode.prev;
startLine = startNode.sourcepos[0][0];
}
var editedLines = this.lineTexts.slice(startLine - 1, endLine);
var root = this.parser.partialParseStart(startLine, editedLines);
var nextNode = endNode ? endNode.next : this.root.firstChild;
var lastChild = root.lastChild;
var isOpenedLastChildCodeBlock = lastChild && isCodeBlock(lastChild) && lastChild.open;
var isOpenedLastChildCustomBlock = lastChild && isCustomBlock(lastChild) && lastChild.open;
var isLastChildList = lastChild && isList(lastChild);
while ((isOpenedLastChildCodeBlock || isOpenedLastChildCustomBlock) && nextNode || isLastChildList && nextNode && (nextNode.type === "list" || nextNode.sourcepos[0][1] >= 2)) {
var newEndLine = this.extendEndLine(nextNode.sourcepos[1][0]);
this.parser.partialParseExtends(this.lineTexts.slice(endLine, newEndLine));
if (!startNode) {
startNode = endNode;
}
endNode = nextNode;
endLine = newEndLine;
nextNode = nextNode.next;
}
this.parser.partialParseFinish();
var newNodes = getChildNodes(root);
return { newNodes, extStartNode: startNode, extEndNode: endNode };
};
ToastMark2.prototype.getRemovedNodeRange = function(extStartNode, extEndNode) {
if (!extStartNode || extStartNode && isRefDef(extStartNode) || extEndNode && isRefDef(extEndNode)) {
return null;
}
return {
id: [extStartNode.id, extEndNode.id],
line: [extStartNode.sourcepos[0][0] - 1, extEndNode.sourcepos[1][0] - 1]
};
};
ToastMark2.prototype.markDeletedRefMap = function(extStartNode, extEndNode) {
var _this = this;
if (!isEmptyObj(this.refMap)) {
var markDeleted = function(node) {
if (isRefDef(node)) {
var refDefState = _this.refMap[node.label];
if (refDefState && node.id === refDefState.id) {
refDefState.unlinked = true;
}
}
};
if (extStartNode) {
invokeNextUntil(markDeleted, extStartNode.parent, extEndNode);
}
if (extEndNode) {
invokeNextUntil(markDeleted, extEndNode);
}
}
};
ToastMark2.prototype.replaceWithNewRefDefState = function(nodes) {
var _this = this;
if (!isEmptyObj(this.refMap)) {
var replaceWith_1 = function(node) {
if (isRefDef(node)) {
var label = node.label;
var refDefState = _this.refMap[label];
if (!refDefState || refDefState.unlinked) {
_this.refMap[label] = createRefDefState(node);
}
}
};
nodes.forEach(function(node) {
invokeNextUntil(replaceWith_1, node);
});
}
};
ToastMark2.prototype.replaceWithRefDefCandidate = function() {
var _this = this;
if (!isEmptyObj(this.refDefCandidateMap)) {
iterateObject(this.refDefCandidateMap, function(_, candidate) {
var label = candidate.label, sourcepos = candidate.sourcepos;
var refDefState = _this.refMap[label];
if (!refDefState || refDefState.unlinked || refDefState.sourcepos[0][0] > sourcepos[0][0]) {
_this.refMap[label] = createRefDefState(candidate);
}
});
}
};
ToastMark2.prototype.getRangeWithRefDef = function(startLine, endLine, startNode, endNode, lineDiff) {
if (this.referenceDefinition && !isEmptyObj(this.refMap)) {
var prevNode = findChildNodeAtLine(this.root, startLine - 1);
var nextNode = findChildNodeAtLine(this.root, endLine + 1);
if (prevNode && isRefDef(prevNode) && prevNode !== startNode && prevNode !== endNode) {
startNode = prevNode;
startLine = startNode.sourcepos[0][0];
}
if (nextNode && isRefDef(nextNode) && nextNode !== startNode && nextNode !== endNode) {
endNode = nextNode;
endLine = this.extendEndLine(endNode.sourcepos[1][0] + lineDiff);
}
}
return [startNode, endNode, startLine, endLine];
};
ToastMark2.prototype.parse = function(startPos, endPos, lineDiff) {
if (lineDiff === void 0) {
lineDiff = 0;
}
var range2 = this.getNodeRange(startPos, endPos);
var startNode = range2[0], endNode = range2[1];
var startLine = startNode ? Math.min(startNode.sourcepos[0][0], startPos[0]) : startPos[0];
var endLine = this.extendEndLine((endNode ? Math.max(endNode.sourcepos[1][0], endPos[0]) : endPos[0]) + lineDiff);
var parseResult = this.parseRange.apply(this, this.getRangeWithRefDef(startLine, endLine, startNode, endNode, lineDiff));
var newNodes = parseResult.newNodes, extStartNode = parseResult.extStartNode, extEndNode = parseResult.extEndNode;
var removedNodeRange = this.getRemovedNodeRange(extStartNode, extEndNode);
var nextNode = extEndNode ? extEndNode.next : this.root.firstChild;
if (this.referenceDefinition) {
this.markDeletedRefMap(extStartNode, extEndNode);
this.replaceRangeNodes(extStartNode, extEndNode, newNodes);
this.replaceWithNewRefDefState(newNodes);
} else {
this.replaceRangeNodes(extStartNode, extEndNode, newNodes);
}
return { nodes: newNodes, removedNodeRange, nextNode };
};
ToastMark2.prototype.parseRefLink = function() {
var _this = this;
var result = [];
if (!isEmptyObj(this.refMap)) {
iterateObject(this.refMap, function(label, value) {
if (value.unlinked) {
delete _this.refMap[label];
}
iterateObject(_this.refLinkCandidateMap, function(_, candidate) {
var node = candidate.node, refLabel = candidate.refLabel;
if (refLabel === label) {
result.push(_this.parse(node.sourcepos[0], node.sourcepos[1]));
}
});
});
}
return result;
};
ToastMark2.prototype.removeUnlinkedCandidate = function() {
if (!isEmptyObj(this.refDefCandidateMap)) {
[this.refLinkCandidateMap, this.refDefCandidateMap].forEach(function(candidateMap) {
iterateObject(candidateMap, function(id) {
if (isUnlinked(id)) {
delete candidateMap[id];
}
});
});
}
};
ToastMark2.prototype.editMarkdown = function(startPos, endPos, newText) {
var lineDiff = this.updateLineTexts(startPos, endPos, newText);
var parseResult = this.parse(startPos, endPos, lineDiff);
var editResult = omit(parseResult, "nextNode");
updateNextLineNumbers(parseResult.nextNode, lineDiff);
this.updateRootNodeState();
var result = [editResult];
if (this.referenceDefinition) {
this.removeUnlinkedCandidate();
this.replaceWithRefDefCandidate();
result = result.concat(this.parseRefLink());
}
this.trigger("change", result);
return result;
};
ToastMark2.prototype.getLineTexts = function() {
return this.lineTexts;
};
ToastMark2.prototype.getRootNode = function() {
return this.root;
};
ToastMark2.prototype.findNodeAtPosition = function(pos) {
var node = findNodeAtPosition(this.root, pos);
if (!node || node === this.root) {
return null;
}
return node;
};
ToastMark2.prototype.findFirstNodeAtLine = function(line) {
return findFirstNodeAtLine(this.root, line);
};
ToastMark2.prototype.on = function(eventName, callback) {
this.eventHandlerMap[eventName].push(callback);
};
ToastMark2.prototype.off = function(eventName, callback) {
var handlers2 = this.eventHandlerMap[eventName];
var idx = handlers2.indexOf(callback);
handlers2.splice(idx, 1);
};
ToastMark2.prototype.findNodeById = function(id) {
return findNodeById(id);
};
ToastMark2.prototype.removeAllNode = function() {
removeAllNode();
};
return ToastMark2;
})()
);
var disallowedTags = [
"title",
"textarea",
"style",
"xmp",
"iframe",
"noembed",
"noframes",
"script",
"plaintext"
];
var reDisallowedTag = new RegExp("<(/?(?:" + disallowedTags.join("|") + ")[^>]*>)", "ig");
function filterDisallowedTags(str) {
if (reDisallowedTag.test(str)) {
return str.replace(reDisallowedTag, function(_, group) {
return "<" + group;
});
}
return str;
}
var baseConvertors$1 = {
heading: function(node, _a) {
var entering = _a.entering;
return {
type: entering ? "openTag" : "closeTag",
tagName: "h" + node.level,
outerNewLine: true
};
},
text: function(node) {
return {
type: "text",
content: node.literal
};
},
softbreak: function(_, _a) {
var options = _a.options;
return {
type: "html",
content: options.softbreak
};
},
linebreak: function() {
return {
type: "html",
content: " \n"
};
},
emph: function(_, _a) {
var entering = _a.entering;
return {
type: entering ? "openTag" : "closeTag",
tagName: "em"
};
},
strong: function(_, _a) {
var entering = _a.entering;
return {
type: entering ? "openTag" : "closeTag",
tagName: "strong"
};
},
paragraph: function(node, _a) {
var _b;
var entering = _a.entering;
var grandparent = (_b = node.parent) === null || _b === void 0 ? void 0 : _b.parent;
if (grandparent && grandparent.type === "list") {
if (grandparent.listData.tight) {
return null;
}
}
return {
type: entering ? "openTag" : "closeTag",
tagName: "p",
outerNewLine: true
};
},
thematicBreak: function() {
return {
type: "openTag",
tagName: "hr",
outerNewLine: true,
selfClose: true
};
},
blockQuote: function(_, _a) {
var entering = _a.entering;
return {
type: entering ? "openTag" : "closeTag",
tagName: "blockquote",
outerNewLine: true,
innerNewLine: true
};
},
list: function(node, _a) {
var entering = _a.entering;
var _b = node.listData, type = _b.type, start = _b.start;
var tagName = type === "bullet" ? "ul" : "ol";
var attributes = {};
if (tagName === "ol" && start !== null && start !== 1) {
attributes.start = start.toString();
}
return {
type: entering ? "openTag" : "closeTag",
tagName,
attributes,
outerNewLine: true
};
},
item: function(_, _a) {
var entering = _a.entering;
return {
type: entering ? "openTag" : "closeTag",
tagName: "li",
outerNewLine: true
};
},
htmlInline: function(node, _a) {
var options = _a.options;
var content = options.tagFilter ? filterDisallowedTags(node.literal) : node.literal;
return { type: "html", content };
},
htmlBlock: function(node, _a) {
var options = _a.options;
var content = options.tagFilter ? filterDisallowedTags(node.literal) : node.literal;
if (options.nodeId) {
return [
{ type: "openTag", tagName: "div", outerNewLine: true },
{ type: "html", content },
{ type: "closeTag", tagName: "div", outerNewLine: true }
];
}
return { type: "html", content, outerNewLine: true };
},
code: function(node) {
return [
{ type: "openTag", tagName: "code" },
{ type: "text", content: node.literal },
{ type: "closeTag", tagName: "code" }
];
},
codeBlock: function(node) {
var infoStr = node.info;
var infoWords = infoStr ? infoStr.split(/\s+/) : [];
var codeClassNames = [];
if (infoWords.length > 0 && infoWords[0].length > 0) {
codeClassNames.push("language-" + escapeXml(infoWords[0]));
}
return [
{ type: "openTag", tagName: "pre", outerNewLine: true },
{ type: "openTag", tagName: "code", classNames: codeClassNames },
{ type: "text", content: node.literal },
{ type: "closeTag", tagName: "code" },
{ type: "closeTag", tagName: "pre", outerNewLine: true }
];
},
link: function(node, _a) {
var entering = _a.entering;
if (entering) {
var _b = node, title = _b.title, destination = _b.destination;
return {
type: "openTag",
tagName: "a",
attributes: __assign({ href: escapeXml(destination) }, title && { title: escapeXml(title) })
};
}
return { type: "closeTag", tagName: "a" };
},
image: function(node, _a) {
var getChildrenText2 = _a.getChildrenText, skipChildren = _a.skipChildren;
var _b = node, title = _b.title, destination = _b.destination;
skipChildren();
return {
type: "openTag",
tagName: "img",
selfClose: true,
attributes: __assign({ src: escapeXml(destination), alt: getChildrenText2(node) }, title && { title: escapeXml(title) })
};
},
customBlock: function(node, context, convertors2) {
var info = node.info.trim().toLowerCase();
var customConvertor = convertors2[info];
if (customConvertor) {
try {
return customConvertor(node, context);
} catch (e) {
console.warn("[@toast-ui/editor] - The error occurred when " + info + " block node was parsed in markdown renderer: " + e);
}
}
return [
{ type: "openTag", tagName: "div", outerNewLine: true },
{ type: "text", content: node.literal },
{ type: "closeTag", tagName: "div", outerNewLine: true }
];
},
frontMatter: function(node) {
return [
{
type: "openTag",
tagName: "div",
outerNewLine: true,
// Because front matter is metadata, it should not be render.
attributes: { style: "white-space: pre; display: none;" }
},
{ type: "text", content: node.literal },
{ type: "closeTag", tagName: "div", outerNewLine: true }
];
},
customInline: function(node, context, convertors2) {
var _a = node, info = _a.info, firstChild = _a.firstChild;
var nomalizedInfo = info.trim().toLowerCase();
var customConvertor = convertors2[nomalizedInfo];
var entering = context.entering;
if (customConvertor) {
try {
return customConvertor(node, context);
} catch (e) {
console.warn("[@toast-ui/editor] - The error occurred when " + nomalizedInfo + " inline node was parsed in markdown renderer: " + e);
}
}
return entering ? [
{ type: "openTag", tagName: "span" },
{ type: "text", content: "$$" + info + (firstChild ? " " : "") }
] : [
{ type: "text", content: "$$" },
{ type: "closeTag", tagName: "span" }
];
}
};
var gfmConvertors = {
strike: function(_, _a) {
var entering = _a.entering;
return {
type: entering ? "openTag" : "closeTag",
tagName: "del"
};
},
item: function(node, _a) {
var entering = _a.entering;
var _b = node.listData, checked = _b.checked, task2 = _b.task;
if (entering) {
var itemTag = {
type: "openTag",
tagName: "li",
outerNewLine: true
};
if (task2) {
return [
itemTag,
{
type: "openTag",
tagName: "input",
selfClose: true,
attributes: __assign(__assign({}, checked && { checked: "" }), { disabled: "", type: "checkbox" })
},
{
type: "text",
content: " "
}
];
}
return itemTag;
}
return {
type: "closeTag",
tagName: "li",
outerNewLine: true
};
},
table: function(_, _a) {
var entering = _a.entering;
return {
type: entering ? "openTag" : "closeTag",
tagName: "table",
outerNewLine: true
};
},
tableHead: function(_, _a) {
var entering = _a.entering;
return {
type: entering ? "openTag" : "closeTag",
tagName: "thead",
outerNewLine: true
};
},
tableBody: function(_, _a) {
var entering = _a.entering;
return {
type: entering ? "openTag" : "closeTag",
tagName: "tbody",
outerNewLine: true
};
},
tableRow: function(node, _a) {
var entering = _a.entering;
if (entering) {
return {
type: "openTag",
tagName: "tr",
outerNewLine: true
};
}
var result = [];
if (node.lastChild) {
var columnLen = node.parent.parent.columns.length;
var lastColIdx = node.lastChild.endIdx;
for (var i = lastColIdx + 1; i < columnLen; i += 1) {
result.push({
type: "openTag",
tagName: "td",
outerNewLine: true
}, {
type: "closeTag",
tagName: "td",
outerNewLine: true
});
}
}
result.push({
type: "closeTag",
tagName: "tr",
outerNewLine: true
});
return result;
},
tableCell: function(node, _a) {
var entering = _a.entering;
if (node.ignored) {
return {
type: "text",
content: ""
};
}
var tablePart = node.parent.parent;
var tagName = tablePart.type === "tableHead" ? "th" : "td";
var table2 = tablePart.parent;
var columnInfo = table2.columns[node.startIdx];
var attributes = (columnInfo === null || columnInfo === void 0 ? void 0 : columnInfo.align) ? { align: columnInfo.align } : null;
if (entering) {
return __assign({ type: "openTag", tagName, outerNewLine: true }, attributes && { attributes });
}
return {
type: "closeTag",
tagName,
outerNewLine: true
};
}
};
var defaultOptions = {
softbreak: "\n",
gfm: false,
tagFilter: false,
nodeId: false
};
function getChildrenText(node) {
var buffer = [];
var walker = node.walker();
var event = null;
while (event = walker.next()) {
var node_1 = event.node;
if (node_1.type === "text") {
buffer.push(node_1.literal);
}
}
return buffer.join("");
}
var Renderer = (
/** @class */
(function() {
function Renderer2(customOptions) {
this.buffer = [];
this.options = __assign(__assign({}, defaultOptions), customOptions);
this.convertors = this.createConvertors();
delete this.options.convertors;
}
Renderer2.prototype.createConvertors = function() {
var convertors2 = __assign({}, baseConvertors$1);
if (this.options.gfm) {
convertors2 = __assign(__assign({}, convertors2), gfmConvertors);
}
if (this.options.convertors) {
var customConvertors_1 = this.options.convertors;
var nodeTypes = Object.keys(customConvertors_1);
var defaultConvertors_1 = __assign(__assign({}, baseConvertors$1), gfmConvertors);
nodeTypes.forEach(function(nodeType) {
var orgConvertor = convertors2[nodeType];
var convertor = customConvertors_1[nodeType];
var convertorType = Object.keys(defaultConvertors_1).indexOf(nodeType) === -1 ? nodeType.toLowerCase() : nodeType;
if (orgConvertor) {
convertors2[convertorType] = function(node, context, convertors3) {
context.origin = function() {
return orgConvertor(node, context, convertors3);
};
return convertor(node, context);
};
} else {
convertors2[convertorType] = convertor;
}
});
}
return convertors2;
};
Renderer2.prototype.getConvertors = function() {
return this.convertors;
};
Renderer2.prototype.getOptions = function() {
return this.options;
};
Renderer2.prototype.render = function(rootNode) {
var _this = this;
this.buffer = [];
var walker = rootNode.walker();
var event = null;
var _loop_1 = function() {
var node = event.node, entering = event.entering;
var convertor = this_1.convertors[node.type];
if (!convertor) {
return "continue";
}
var skipped = false;
var context = {
entering,
leaf: !isContainer$1(node),
options: this_1.options,
getChildrenText,
skipChildren: function() {
skipped = true;
}
};
var converted = isCustomBlock(node) || isCustomInline(node) ? convertor(node, context, this_1.convertors) : convertor(node, context);
if (converted) {
var htmlNodes = Array.isArray(converted) ? converted : [converted];
htmlNodes.forEach(function(htmlNode, index2) {
if (htmlNode.type === "openTag" && _this.options.nodeId && index2 === 0) {
if (!htmlNode.attributes) {
htmlNode.attributes = {};
}
htmlNode.attributes["data-nodeid"] = String(node.id);
}
_this.renderHTMLNode(htmlNode);
});
if (skipped) {
walker.resumeAt(node, false);
walker.next();
}
}
};
var this_1 = this;
while (event = walker.next()) {
_loop_1();
}
this.addNewLine();
return this.buffer.join("");
};
Renderer2.prototype.renderHTMLNode = function(node) {
switch (node.type) {
case "openTag":
case "closeTag":
this.renderElementNode(node);
break;
case "text":
this.renderTextNode(node);
break;
case "html":
this.renderRawHtmlNode(node);
break;
}
};
Renderer2.prototype.generateOpenTagString = function(node) {
var _this = this;
var tagName = node.tagName, classNames = node.classNames, attributes = node.attributes;
this.buffer.push("<" + tagName);
if (classNames && classNames.length > 0) {
this.buffer.push(' class="' + classNames.join(" ") + '"');
}
if (attributes) {
Object.keys(attributes).forEach(function(attrName) {
var attrValue = attributes[attrName];
_this.buffer.push(" " + attrName + '="' + attrValue + '"');
});
}
if (node.selfClose) {
this.buffer.push(" /");
}
this.buffer.push(">");
};
Renderer2.prototype.generateCloseTagString = function(_a) {
var tagName = _a.tagName;
this.buffer.push("" + tagName + ">");
};
Renderer2.prototype.addNewLine = function() {
if (this.buffer.length && last(last(this.buffer)) !== "\n") {
this.buffer.push("\n");
}
};
Renderer2.prototype.addOuterNewLine = function(node) {
if (node.outerNewLine) {
this.addNewLine();
}
};
Renderer2.prototype.addInnerNewLine = function(node) {
if (node.innerNewLine) {
this.addNewLine();
}
};
Renderer2.prototype.renderTextNode = function(node) {
this.buffer.push(escapeXml(node.content));
};
Renderer2.prototype.renderRawHtmlNode = function(node) {
this.addOuterNewLine(node);
this.buffer.push(node.content);
this.addOuterNewLine(node);
};
Renderer2.prototype.renderElementNode = function(node) {
if (node.type === "openTag") {
this.addOuterNewLine(node);
this.generateOpenTagString(node);
if (node.selfClose) {
this.addOuterNewLine(node);
} else {
this.addInnerNewLine(node);
}
} else {
this.addInnerNewLine(node);
this.generateCloseTagString(node);
this.addOuterNewLine(node);
}
};
return Renderer2;
})()
);
function _toConsumableArray(arr) {
if (Array.isArray(arr)) {
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
arr2[i] = arr[i];
}
return arr2;
} else {
return Array.from(arr);
}
}
var hasOwnProperty = Object.hasOwnProperty;
var setPrototypeOf = Object.setPrototypeOf;
var isFrozen = Object.isFrozen;
var getPrototypeOf = Object.getPrototypeOf;
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
var freeze = Object.freeze;
var seal = Object.seal;
var create = Object.create;
var _ref = typeof Reflect !== "undefined" && Reflect;
var apply2 = _ref.apply;
var construct = _ref.construct;
if (!apply2) {
apply2 = function apply3(fun, thisValue, args) {
return fun.apply(thisValue, args);
};
}
if (!freeze) {
freeze = function freeze2(x) {
return x;
};
}
if (!seal) {
seal = function seal2(x) {
return x;
};
}
if (!construct) {
construct = function construct2(Func, args) {
return new (Function.prototype.bind.apply(Func, [null].concat(_toConsumableArray(args))))();
};
}
var arrayForEach = unapply(Array.prototype.forEach);
var arrayPop = unapply(Array.prototype.pop);
var arrayPush = unapply(Array.prototype.push);
var stringToLowerCase = unapply(String.prototype.toLowerCase);
var stringMatch = unapply(String.prototype.match);
var stringReplace = unapply(String.prototype.replace);
var stringIndexOf = unapply(String.prototype.indexOf);
var stringTrim = unapply(String.prototype.trim);
var regExpTest = unapply(RegExp.prototype.test);
var typeErrorCreate = unconstruct(TypeError);
function unapply(func) {
return function(thisArg) {
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
return apply2(func, thisArg, args);
};
}
function unconstruct(func) {
return function() {
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
return construct(func, args);
};
}
function addToSet(set, array) {
if (setPrototypeOf) {
setPrototypeOf(set, null);
}
var l = array.length;
while (l--) {
var element = array[l];
if (typeof element === "string") {
var lcElement = stringToLowerCase(element);
if (lcElement !== element) {
if (!isFrozen(array)) {
array[l] = lcElement;
}
element = lcElement;
}
}
set[element] = true;
}
return set;
}
function clone(object) {
var newObject = create(null);
var property = void 0;
for (property in object) {
if (apply2(hasOwnProperty, object, [property])) {
newObject[property] = object[property];
}
}
return newObject;
}
function lookupGetter(object, prop2) {
while (object !== null) {
var desc = getOwnPropertyDescriptor(object, prop2);
if (desc) {
if (desc.get) {
return unapply(desc.get);
}
if (typeof desc.value === "function") {
return unapply(desc.value);
}
}
object = getPrototypeOf(object);
}
function fallbackValue(element) {
console.warn("fallback value for", element);
return null;
}
return fallbackValue;
}
var html$2 = freeze(["a", "abbr", "acronym", "address", "area", "article", "aside", "audio", "b", "bdi", "bdo", "big", "blink", "blockquote", "body", "br", "button", "canvas", "caption", "center", "cite", "code", "col", "colgroup", "content", "data", "datalist", "dd", "decorator", "del", "details", "dfn", "dialog", "dir", "div", "dl", "dt", "element", "em", "fieldset", "figcaption", "figure", "font", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "img", "input", "ins", "kbd", "label", "legend", "li", "main", "map", "mark", "marquee", "menu", "menuitem", "meter", "nav", "nobr", "ol", "optgroup", "option", "output", "p", "picture", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "section", "select", "shadow", "small", "source", "spacer", "span", "strike", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "tr", "track", "tt", "u", "ul", "var", "video", "wbr"]);
var svg = freeze(["svg", "a", "altglyph", "altglyphdef", "altglyphitem", "animatecolor", "animatemotion", "animatetransform", "circle", "clippath", "defs", "desc", "ellipse", "filter", "font", "g", "glyph", "glyphref", "hkern", "image", "line", "lineargradient", "marker", "mask", "metadata", "mpath", "path", "pattern", "polygon", "polyline", "radialgradient", "rect", "stop", "style", "switch", "symbol", "text", "textpath", "title", "tref", "tspan", "view", "vkern"]);
var svgFilters = freeze(["feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence"]);
var svgDisallowed = freeze(["animate", "color-profile", "cursor", "discard", "fedropshadow", "feimage", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "foreignobject", "hatch", "hatchpath", "mesh", "meshgradient", "meshpatch", "meshrow", "missing-glyph", "script", "set", "solidcolor", "unknown", "use"]);
var mathMl = freeze(["math", "menclose", "merror", "mfenced", "mfrac", "mglyph", "mi", "mlabeledtr", "mmultiscripts", "mn", "mo", "mover", "mpadded", "mphantom", "mroot", "mrow", "ms", "mspace", "msqrt", "mstyle", "msub", "msup", "msubsup", "mtable", "mtd", "mtext", "mtr", "munder", "munderover"]);
var mathMlDisallowed = freeze(["maction", "maligngroup", "malignmark", "mlongdiv", "mscarries", "mscarry", "msgroup", "mstack", "msline", "msrow", "semantics", "annotation", "annotation-xml", "mprescripts", "none"]);
var text = freeze(["#text"]);
var html$1$1 = freeze(["accept", "action", "align", "alt", "autocapitalize", "autocomplete", "autopictureinpicture", "autoplay", "background", "bgcolor", "border", "capture", "cellpadding", "cellspacing", "checked", "cite", "class", "clear", "color", "cols", "colspan", "controls", "controlslist", "coords", "crossorigin", "datetime", "decoding", "default", "dir", "disabled", "disablepictureinpicture", "disableremoteplayback", "download", "draggable", "enctype", "enterkeyhint", "face", "for", "headers", "height", "hidden", "high", "href", "hreflang", "id", "inputmode", "integrity", "ismap", "kind", "label", "lang", "list", "loading", "loop", "low", "max", "maxlength", "media", "method", "min", "minlength", "multiple", "muted", "name", "noshade", "novalidate", "nowrap", "open", "optimum", "pattern", "placeholder", "playsinline", "poster", "preload", "pubdate", "radiogroup", "readonly", "rel", "required", "rev", "reversed", "role", "rows", "rowspan", "spellcheck", "scope", "selected", "shape", "size", "sizes", "span", "srclang", "start", "src", "srcset", "step", "style", "summary", "tabindex", "title", "translate", "type", "usemap", "valign", "value", "width", "xmlns", "slot"]);
var svg$1 = freeze(["accent-height", "accumulate", "additive", "alignment-baseline", "ascent", "attributename", "attributetype", "azimuth", "basefrequency", "baseline-shift", "begin", "bias", "by", "class", "clip", "clippathunits", "clip-path", "clip-rule", "color", "color-interpolation", "color-interpolation-filters", "color-profile", "color-rendering", "cx", "cy", "d", "dx", "dy", "diffuseconstant", "direction", "display", "divisor", "dur", "edgemode", "elevation", "end", "fill", "fill-opacity", "fill-rule", "filter", "filterunits", "flood-color", "flood-opacity", "font-family", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-variant", "font-weight", "fx", "fy", "g1", "g2", "glyph-name", "glyphref", "gradientunits", "gradienttransform", "height", "href", "id", "image-rendering", "in", "in2", "k", "k1", "k2", "k3", "k4", "kerning", "keypoints", "keysplines", "keytimes", "lang", "lengthadjust", "letter-spacing", "kernelmatrix", "kernelunitlength", "lighting-color", "local", "marker-end", "marker-mid", "marker-start", "markerheight", "markerunits", "markerwidth", "maskcontentunits", "maskunits", "max", "mask", "media", "method", "mode", "min", "name", "numoctaves", "offset", "operator", "opacity", "order", "orient", "orientation", "origin", "overflow", "paint-order", "path", "pathlength", "patterncontentunits", "patterntransform", "patternunits", "points", "preservealpha", "preserveaspectratio", "primitiveunits", "r", "rx", "ry", "radius", "refx", "refy", "repeatcount", "repeatdur", "restart", "result", "rotate", "scale", "seed", "shape-rendering", "specularconstant", "specularexponent", "spreadmethod", "startoffset", "stddeviation", "stitchtiles", "stop-color", "stop-opacity", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke", "stroke-width", "style", "surfacescale", "systemlanguage", "tabindex", "targetx", "targety", "transform", "text-anchor", "text-decoration", "text-rendering", "textlength", "type", "u1", "u2", "unicode", "values", "viewbox", "visibility", "version", "vert-adv-y", "vert-origin-x", "vert-origin-y", "width", "word-spacing", "wrap", "writing-mode", "xchannelselector", "ychannelselector", "x", "x1", "x2", "xmlns", "y", "y1", "y2", "z", "zoomandpan"]);
var mathMl$1 = freeze(["accent", "accentunder", "align", "bevelled", "close", "columnsalign", "columnlines", "columnspan", "denomalign", "depth", "dir", "display", "displaystyle", "encoding", "fence", "frame", "height", "href", "id", "largeop", "length", "linethickness", "lspace", "lquote", "mathbackground", "mathcolor", "mathsize", "mathvariant", "maxsize", "minsize", "movablelimits", "notation", "numalign", "open", "rowalign", "rowlines", "rowspacing", "rowspan", "rspace", "rquote", "scriptlevel", "scriptminsize", "scriptsizemultiplier", "selection", "separator", "separators", "stretchy", "subscriptshift", "supscriptshift", "symmetric", "voffset", "width", "xmlns"]);
var xml = freeze(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]);
var MUSTACHE_EXPR = seal(/\{\{[\s\S]*|[\s\S]*\}\}/gm);
var ERB_EXPR = seal(/<%[\s\S]*|[\s\S]*%>/gm);
var DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]/);
var ARIA_ATTR = seal(/^aria-[\-\w]+$/);
var IS_ALLOWED_URI = seal(
/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i
// eslint-disable-line no-useless-escape
);
var IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i);
var ATTR_WHITESPACE = seal(
/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g
// eslint-disable-line no-control-regex
);
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) {
return typeof obj;
} : function(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
function _toConsumableArray$1(arr) {
if (Array.isArray(arr)) {
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
arr2[i] = arr[i];
}
return arr2;
} else {
return Array.from(arr);
}
}
var getGlobal = function getGlobal2() {
return typeof window === "undefined" ? null : window;
};
var _createTrustedTypesPolicy = function _createTrustedTypesPolicy2(trustedTypes, document2) {
if ((typeof trustedTypes === "undefined" ? "undefined" : _typeof(trustedTypes)) !== "object" || typeof trustedTypes.createPolicy !== "function") {
return null;
}
var suffix = null;
var ATTR_NAME = "data-tt-policy-suffix";
if (document2.currentScript && document2.currentScript.hasAttribute(ATTR_NAME)) {
suffix = document2.currentScript.getAttribute(ATTR_NAME);
}
var policyName = "dompurify" + (suffix ? "#" + suffix : "");
try {
return trustedTypes.createPolicy(policyName, {
createHTML: function createHTML(html$$1) {
return html$$1;
}
});
} catch (_) {
console.warn("TrustedTypes policy " + policyName + " could not be created.");
return null;
}
};
function createDOMPurify() {
var window2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();
var DOMPurify = function DOMPurify2(root) {
return createDOMPurify(root);
};
DOMPurify.version = "2.3.3";
DOMPurify.removed = [];
if (!window2 || !window2.document || window2.document.nodeType !== 9) {
DOMPurify.isSupported = false;
return DOMPurify;
}
var originalDocument = window2.document;
var document2 = window2.document;
var DocumentFragment = window2.DocumentFragment, HTMLTemplateElement = window2.HTMLTemplateElement, Node3 = window2.Node, Element2 = window2.Element, NodeFilter = window2.NodeFilter, _window$NamedNodeMap = window2.NamedNodeMap, NamedNodeMap = _window$NamedNodeMap === void 0 ? window2.NamedNodeMap || window2.MozNamedAttrMap : _window$NamedNodeMap, Text2 = window2.Text, Comment = window2.Comment, DOMParser2 = window2.DOMParser, trustedTypes = window2.trustedTypes;
var ElementPrototype = Element2.prototype;
var cloneNode = lookupGetter(ElementPrototype, "cloneNode");
var getNextSibling = lookupGetter(ElementPrototype, "nextSibling");
var getChildNodes2 = lookupGetter(ElementPrototype, "childNodes");
var getParentNode2 = lookupGetter(ElementPrototype, "parentNode");
if (typeof HTMLTemplateElement === "function") {
var template = document2.createElement("template");
if (template.content && template.content.ownerDocument) {
document2 = template.content.ownerDocument;
}
}
var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);
var emptyHTML = trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML("") : "";
var _document = document2, implementation = _document.implementation, createNodeIterator = _document.createNodeIterator, createDocumentFragment = _document.createDocumentFragment, getElementsByTagName = _document.getElementsByTagName;
var importNode = originalDocument.importNode;
var documentMode = {};
try {
documentMode = clone(document2).documentMode ? document2.documentMode : {};
} catch (_) {
}
var hooks = {};
DOMPurify.isSupported = typeof getParentNode2 === "function" && implementation && typeof implementation.createHTMLDocument !== "undefined" && documentMode !== 9;
var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR, ERB_EXPR$$1 = ERB_EXPR, DATA_ATTR$$1 = DATA_ATTR, ARIA_ATTR$$1 = ARIA_ATTR, IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA, ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;
var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;
var ALLOWED_TAGS = null;
var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(html$2), _toConsumableArray$1(svg), _toConsumableArray$1(svgFilters), _toConsumableArray$1(mathMl), _toConsumableArray$1(text)));
var ALLOWED_ATTR = null;
var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray$1(html$1$1), _toConsumableArray$1(svg$1), _toConsumableArray$1(mathMl$1), _toConsumableArray$1(xml)));
var FORBID_TAGS = null;
var FORBID_ATTR = null;
var ALLOW_ARIA_ATTR = true;
var ALLOW_DATA_ATTR = true;
var ALLOW_UNKNOWN_PROTOCOLS = false;
var SAFE_FOR_TEMPLATES = false;
var WHOLE_DOCUMENT = false;
var SET_CONFIG = false;
var FORCE_BODY = false;
var RETURN_DOM = false;
var RETURN_DOM_FRAGMENT = false;
var RETURN_DOM_IMPORT = true;
var RETURN_TRUSTED_TYPE = false;
var SANITIZE_DOM = true;
var KEEP_CONTENT = true;
var IN_PLACE = false;
var USE_PROFILES = {};
var FORBID_CONTENTS = null;
var DEFAULT_FORBID_CONTENTS = addToSet({}, ["annotation-xml", "audio", "colgroup", "desc", "foreignobject", "head", "iframe", "math", "mi", "mn", "mo", "ms", "mtext", "noembed", "noframes", "noscript", "plaintext", "script", "style", "svg", "template", "thead", "title", "video", "xmp"]);
var DATA_URI_TAGS = null;
var DEFAULT_DATA_URI_TAGS = addToSet({}, ["audio", "video", "img", "source", "image", "track"]);
var URI_SAFE_ATTRIBUTES = null;
var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ["alt", "class", "for", "id", "label", "name", "pattern", "placeholder", "role", "summary", "title", "value", "style", "xmlns"]);
var MATHML_NAMESPACE = "http://www.w3.org/1998/Math/MathML";
var SVG_NAMESPACE = "http://www.w3.org/2000/svg";
var HTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
var NAMESPACE = HTML_NAMESPACE;
var IS_EMPTY_INPUT = false;
var PARSER_MEDIA_TYPE = void 0;
var SUPPORTED_PARSER_MEDIA_TYPES = ["application/xhtml+xml", "text/html"];
var DEFAULT_PARSER_MEDIA_TYPE = "text/html";
var transformCaseFunc = void 0;
var CONFIG = null;
var formElement = document2.createElement("form");
var _parseConfig = function _parseConfig2(cfg) {
if (CONFIG && CONFIG === cfg) {
return;
}
if (!cfg || (typeof cfg === "undefined" ? "undefined" : _typeof(cfg)) !== "object") {
cfg = {};
}
cfg = clone(cfg);
ALLOWED_TAGS = "ALLOWED_TAGS" in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;
ALLOWED_ATTR = "ALLOWED_ATTR" in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;
URI_SAFE_ATTRIBUTES = "ADD_URI_SAFE_ATTR" in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR) : DEFAULT_URI_SAFE_ATTRIBUTES;
DATA_URI_TAGS = "ADD_DATA_URI_TAGS" in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS) : DEFAULT_DATA_URI_TAGS;
FORBID_CONTENTS = "FORBID_CONTENTS" in cfg ? addToSet({}, cfg.FORBID_CONTENTS) : DEFAULT_FORBID_CONTENTS;
FORBID_TAGS = "FORBID_TAGS" in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};
FORBID_ATTR = "FORBID_ATTR" in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};
USE_PROFILES = "USE_PROFILES" in cfg ? cfg.USE_PROFILES : false;
ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false;
ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false;
ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false;
SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false;
WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false;
RETURN_DOM = cfg.RETURN_DOM || false;
RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false;
RETURN_DOM_IMPORT = cfg.RETURN_DOM_IMPORT !== false;
RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false;
FORCE_BODY = cfg.FORCE_BODY || false;
SANITIZE_DOM = cfg.SANITIZE_DOM !== false;
KEEP_CONTENT = cfg.KEEP_CONTENT !== false;
IN_PLACE = cfg.IN_PLACE || false;
IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;
NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;
PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes
SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE;
transformCaseFunc = PARSER_MEDIA_TYPE === "application/xhtml+xml" ? function(x) {
return x;
} : stringToLowerCase;
if (SAFE_FOR_TEMPLATES) {
ALLOW_DATA_ATTR = false;
}
if (RETURN_DOM_FRAGMENT) {
RETURN_DOM = true;
}
if (USE_PROFILES) {
ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(text)));
ALLOWED_ATTR = [];
if (USE_PROFILES.html === true) {
addToSet(ALLOWED_TAGS, html$2);
addToSet(ALLOWED_ATTR, html$1$1);
}
if (USE_PROFILES.svg === true) {
addToSet(ALLOWED_TAGS, svg);
addToSet(ALLOWED_ATTR, svg$1);
addToSet(ALLOWED_ATTR, xml);
}
if (USE_PROFILES.svgFilters === true) {
addToSet(ALLOWED_TAGS, svgFilters);
addToSet(ALLOWED_ATTR, svg$1);
addToSet(ALLOWED_ATTR, xml);
}
if (USE_PROFILES.mathMl === true) {
addToSet(ALLOWED_TAGS, mathMl);
addToSet(ALLOWED_ATTR, mathMl$1);
addToSet(ALLOWED_ATTR, xml);
}
}
if (cfg.ADD_TAGS) {
if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
ALLOWED_TAGS = clone(ALLOWED_TAGS);
}
addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);
}
if (cfg.ADD_ATTR) {
if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {
ALLOWED_ATTR = clone(ALLOWED_ATTR);
}
addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);
}
if (cfg.ADD_URI_SAFE_ATTR) {
addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);
}
if (cfg.FORBID_CONTENTS) {
if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
FORBID_CONTENTS = clone(FORBID_CONTENTS);
}
addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS);
}
if (KEEP_CONTENT) {
ALLOWED_TAGS["#text"] = true;
}
if (WHOLE_DOCUMENT) {
addToSet(ALLOWED_TAGS, ["html", "head", "body"]);
}
if (ALLOWED_TAGS.table) {
addToSet(ALLOWED_TAGS, ["tbody"]);
delete FORBID_TAGS.tbody;
}
if (freeze) {
freeze(cfg);
}
CONFIG = cfg;
};
var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ["mi", "mo", "mn", "ms", "mtext"]);
var HTML_INTEGRATION_POINTS = addToSet({}, ["foreignobject", "desc", "title", "annotation-xml"]);
var ALL_SVG_TAGS = addToSet({}, svg);
addToSet(ALL_SVG_TAGS, svgFilters);
addToSet(ALL_SVG_TAGS, svgDisallowed);
var ALL_MATHML_TAGS = addToSet({}, mathMl);
addToSet(ALL_MATHML_TAGS, mathMlDisallowed);
var _checkValidNamespace = function _checkValidNamespace2(element) {
var parent = getParentNode2(element);
if (!parent || !parent.tagName) {
parent = {
namespaceURI: HTML_NAMESPACE,
tagName: "template"
};
}
var tagName = stringToLowerCase(element.tagName);
var parentTagName = stringToLowerCase(parent.tagName);
if (element.namespaceURI === SVG_NAMESPACE) {
if (parent.namespaceURI === HTML_NAMESPACE) {
return tagName === "svg";
}
if (parent.namespaceURI === MATHML_NAMESPACE) {
return tagName === "svg" && (parentTagName === "annotation-xml" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);
}
return Boolean(ALL_SVG_TAGS[tagName]);
}
if (element.namespaceURI === MATHML_NAMESPACE) {
if (parent.namespaceURI === HTML_NAMESPACE) {
return tagName === "math";
}
if (parent.namespaceURI === SVG_NAMESPACE) {
return tagName === "math" && HTML_INTEGRATION_POINTS[parentTagName];
}
return Boolean(ALL_MATHML_TAGS[tagName]);
}
if (element.namespaceURI === HTML_NAMESPACE) {
if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {
return false;
}
if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {
return false;
}
var commonSvgAndHTMLElements = addToSet({}, ["title", "style", "font", "a", "script"]);
return !ALL_MATHML_TAGS[tagName] && (commonSvgAndHTMLElements[tagName] || !ALL_SVG_TAGS[tagName]);
}
return false;
};
var _forceRemove = function _forceRemove2(node) {
arrayPush(DOMPurify.removed, { element: node });
try {
node.parentNode.removeChild(node);
} catch (_) {
try {
node.outerHTML = emptyHTML;
} catch (_2) {
node.remove();
}
}
};
var _removeAttribute = function _removeAttribute2(name, node) {
try {
arrayPush(DOMPurify.removed, {
attribute: node.getAttributeNode(name),
from: node
});
} catch (_) {
arrayPush(DOMPurify.removed, {
attribute: null,
from: node
});
}
node.removeAttribute(name);
if (name === "is" && !ALLOWED_ATTR[name]) {
if (RETURN_DOM || RETURN_DOM_FRAGMENT) {
try {
_forceRemove(node);
} catch (_) {
}
} else {
try {
node.setAttribute(name, "");
} catch (_) {
}
}
}
};
var _initDocument = function _initDocument2(dirty) {
var doc3 = void 0;
var leadingWhitespace = void 0;
if (FORCE_BODY) {
dirty = "" + dirty;
} else {
var matches3 = stringMatch(dirty, /^[\r\n\t ]+/);
leadingWhitespace = matches3 && matches3[0];
}
if (PARSER_MEDIA_TYPE === "application/xhtml+xml") {
dirty = '' + dirty + "";
}
var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;
if (NAMESPACE === HTML_NAMESPACE) {
try {
doc3 = new DOMParser2().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);
} catch (_) {
}
}
if (!doc3 || !doc3.documentElement) {
doc3 = implementation.createDocument(NAMESPACE, "template", null);
try {
doc3.documentElement.innerHTML = IS_EMPTY_INPUT ? "" : dirtyPayload;
} catch (_) {
}
}
var body = doc3.body || doc3.documentElement;
if (dirty && leadingWhitespace) {
body.insertBefore(document2.createTextNode(leadingWhitespace), body.childNodes[0] || null);
}
if (NAMESPACE === HTML_NAMESPACE) {
return getElementsByTagName.call(doc3, WHOLE_DOCUMENT ? "html" : "body")[0];
}
return WHOLE_DOCUMENT ? doc3.documentElement : body;
};
var _createIterator = function _createIterator2(root) {
return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);
};
var _isClobbered = function _isClobbered2(elm) {
if (elm instanceof Text2 || elm instanceof Comment) {
return false;
}
if (typeof elm.nodeName !== "string" || typeof elm.textContent !== "string" || typeof elm.removeChild !== "function" || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== "function" || typeof elm.setAttribute !== "function" || typeof elm.namespaceURI !== "string" || typeof elm.insertBefore !== "function") {
return true;
}
return false;
};
var _isNode = function _isNode2(object) {
return (typeof Node3 === "undefined" ? "undefined" : _typeof(Node3)) === "object" ? object instanceof Node3 : object && (typeof object === "undefined" ? "undefined" : _typeof(object)) === "object" && typeof object.nodeType === "number" && typeof object.nodeName === "string";
};
var _executeHook = function _executeHook2(entryPoint, currentNode, data) {
if (!hooks[entryPoint]) {
return;
}
arrayForEach(hooks[entryPoint], function(hook) {
hook.call(DOMPurify, currentNode, data, CONFIG);
});
};
var _sanitizeElements = function _sanitizeElements2(currentNode) {
var content = void 0;
_executeHook("beforeSanitizeElements", currentNode, null);
if (_isClobbered(currentNode)) {
_forceRemove(currentNode);
return true;
}
if (stringMatch(currentNode.nodeName, /[\u0080-\uFFFF]/)) {
_forceRemove(currentNode);
return true;
}
var tagName = transformCaseFunc(currentNode.nodeName);
_executeHook("uponSanitizeElement", currentNode, {
tagName,
allowedTags: ALLOWED_TAGS
});
if (!_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\w]/g, currentNode.innerHTML) && regExpTest(/<[/\w]/g, currentNode.textContent)) {
_forceRemove(currentNode);
return true;
}
if (tagName === "select" && regExpTest(/= 0; --i) {
parentNode2.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));
}
}
}
_forceRemove(currentNode);
return true;
}
if (currentNode instanceof Element2 && !_checkValidNamespace(currentNode)) {
_forceRemove(currentNode);
return true;
}
if ((tagName === "noscript" || tagName === "noembed") && regExpTest(/<\/no(script|embed)/i, currentNode.innerHTML)) {
_forceRemove(currentNode);
return true;
}
if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {
content = currentNode.textContent;
content = stringReplace(content, MUSTACHE_EXPR$$1, " ");
content = stringReplace(content, ERB_EXPR$$1, " ");
if (currentNode.textContent !== content) {
arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });
currentNode.textContent = content;
}
}
_executeHook("afterSanitizeElements", currentNode, null);
return false;
};
var _isValidAttribute = function _isValidAttribute2(lcTag, lcName, value) {
if (SANITIZE_DOM && (lcName === "id" || lcName === "name") && (value in document2 || value in formElement)) {
return false;
}
if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$$1, lcName)) ;
else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$$1, lcName)) ;
else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {
return false;
} else if (URI_SAFE_ATTRIBUTES[lcName]) ;
else if (regExpTest(IS_ALLOWED_URI$$1, stringReplace(value, ATTR_WHITESPACE$$1, ""))) ;
else if ((lcName === "src" || lcName === "xlink:href" || lcName === "href") && lcTag !== "script" && stringIndexOf(value, "data:") === 0 && DATA_URI_TAGS[lcTag]) ;
else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$$1, stringReplace(value, ATTR_WHITESPACE$$1, ""))) ;
else if (!value) ;
else {
return false;
}
return true;
};
var _sanitizeAttributes = function _sanitizeAttributes2(currentNode) {
var attr = void 0;
var value = void 0;
var lcName = void 0;
var l = void 0;
_executeHook("beforeSanitizeAttributes", currentNode, null);
var attributes = currentNode.attributes;
if (!attributes) {
return;
}
var hookEvent = {
attrName: "",
attrValue: "",
keepAttr: true,
allowedAttributes: ALLOWED_ATTR
};
l = attributes.length;
while (l--) {
attr = attributes[l];
var _attr = attr, name = _attr.name, namespaceURI = _attr.namespaceURI;
value = stringTrim(attr.value);
lcName = transformCaseFunc(name);
hookEvent.attrName = lcName;
hookEvent.attrValue = value;
hookEvent.keepAttr = true;
hookEvent.forceKeepAttr = void 0;
_executeHook("uponSanitizeAttribute", currentNode, hookEvent);
value = hookEvent.attrValue;
if (hookEvent.forceKeepAttr) {
continue;
}
_removeAttribute(name, currentNode);
if (!hookEvent.keepAttr) {
continue;
}
if (regExpTest(/\/>/i, value)) {
_removeAttribute(name, currentNode);
continue;
}
if (SAFE_FOR_TEMPLATES) {
value = stringReplace(value, MUSTACHE_EXPR$$1, " ");
value = stringReplace(value, ERB_EXPR$$1, " ");
}
var lcTag = transformCaseFunc(currentNode.nodeName);
if (!_isValidAttribute(lcTag, lcName, value)) {
continue;
}
try {
if (namespaceURI) {
currentNode.setAttributeNS(namespaceURI, name, value);
} else {
currentNode.setAttribute(name, value);
}
arrayPop(DOMPurify.removed);
} catch (_) {
}
}
_executeHook("afterSanitizeAttributes", currentNode, null);
};
var _sanitizeShadowDOM = function _sanitizeShadowDOM2(fragment) {
var shadowNode = void 0;
var shadowIterator = _createIterator(fragment);
_executeHook("beforeSanitizeShadowDOM", fragment, null);
while (shadowNode = shadowIterator.nextNode()) {
_executeHook("uponSanitizeShadowNode", shadowNode, null);
if (_sanitizeElements(shadowNode)) {
continue;
}
if (shadowNode.content instanceof DocumentFragment) {
_sanitizeShadowDOM2(shadowNode.content);
}
_sanitizeAttributes(shadowNode);
}
_executeHook("afterSanitizeShadowDOM", fragment, null);
};
DOMPurify.sanitize = function(dirty, cfg) {
var body = void 0;
var importedNode = void 0;
var currentNode = void 0;
var oldNode = void 0;
var returnNode = void 0;
IS_EMPTY_INPUT = !dirty;
if (IS_EMPTY_INPUT) {
dirty = "";
}
if (typeof dirty !== "string" && !_isNode(dirty)) {
if (typeof dirty.toString !== "function") {
throw typeErrorCreate("toString is not a function");
} else {
dirty = dirty.toString();
if (typeof dirty !== "string") {
throw typeErrorCreate("dirty is not a string, aborting");
}
}
}
if (!DOMPurify.isSupported) {
if (_typeof(window2.toStaticHTML) === "object" || typeof window2.toStaticHTML === "function") {
if (typeof dirty === "string") {
return window2.toStaticHTML(dirty);
}
if (_isNode(dirty)) {
return window2.toStaticHTML(dirty.outerHTML);
}
}
return dirty;
}
if (!SET_CONFIG) {
_parseConfig(cfg);
}
DOMPurify.removed = [];
if (typeof dirty === "string") {
IN_PLACE = false;
}
if (IN_PLACE) ;
else if (dirty instanceof Node3) {
body = _initDocument("");
importedNode = body.ownerDocument.importNode(dirty, true);
if (importedNode.nodeType === 1 && importedNode.nodeName === "BODY") {
body = importedNode;
} else if (importedNode.nodeName === "HTML") {
body = importedNode;
} else {
body.appendChild(importedNode);
}
} else {
if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && // eslint-disable-next-line unicorn/prefer-includes
dirty.indexOf("<") === -1) {
return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;
}
body = _initDocument(dirty);
if (!body) {
return RETURN_DOM ? null : emptyHTML;
}
}
if (body && FORCE_BODY) {
_forceRemove(body.firstChild);
}
var nodeIterator = _createIterator(IN_PLACE ? dirty : body);
while (currentNode = nodeIterator.nextNode()) {
if (currentNode.nodeType === 3 && currentNode === oldNode) {
continue;
}
if (_sanitizeElements(currentNode)) {
continue;
}
if (currentNode.content instanceof DocumentFragment) {
_sanitizeShadowDOM(currentNode.content);
}
_sanitizeAttributes(currentNode);
oldNode = currentNode;
}
oldNode = null;
if (IN_PLACE) {
return dirty;
}
if (RETURN_DOM) {
if (RETURN_DOM_FRAGMENT) {
returnNode = createDocumentFragment.call(body.ownerDocument);
while (body.firstChild) {
returnNode.appendChild(body.firstChild);
}
} else {
returnNode = body;
}
if (RETURN_DOM_IMPORT) {
returnNode = importNode.call(originalDocument, returnNode, true);
}
return returnNode;
}
var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;
if (SAFE_FOR_TEMPLATES) {
serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$$1, " ");
serializedHTML = stringReplace(serializedHTML, ERB_EXPR$$1, " ");
}
return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;
};
DOMPurify.setConfig = function(cfg) {
_parseConfig(cfg);
SET_CONFIG = true;
};
DOMPurify.clearConfig = function() {
CONFIG = null;
SET_CONFIG = false;
};
DOMPurify.isValidAttribute = function(tag, attr, value) {
if (!CONFIG) {
_parseConfig({});
}
var lcTag = transformCaseFunc(tag);
var lcName = transformCaseFunc(attr);
return _isValidAttribute(lcTag, lcName, value);
};
DOMPurify.addHook = function(entryPoint, hookFunction) {
if (typeof hookFunction !== "function") {
return;
}
hooks[entryPoint] = hooks[entryPoint] || [];
arrayPush(hooks[entryPoint], hookFunction);
};
DOMPurify.removeHook = function(entryPoint) {
if (hooks[entryPoint]) {
arrayPop(hooks[entryPoint]);
}
};
DOMPurify.removeHooks = function(entryPoint) {
if (hooks[entryPoint]) {
hooks[entryPoint] = [];
}
};
DOMPurify.removeAllHooks = function() {
hooks = {};
};
return DOMPurify;
}
var purify = createDOMPurify();
var CAN_BE_WHITE_TAG_LIST = ["iframe", "embed"];
var whiteTagList = [];
function registerTagWhitelistIfPossible(tagName) {
if (includes(CAN_BE_WHITE_TAG_LIST, tagName)) {
whiteTagList.push(tagName.toLowerCase());
}
}
function sanitizeHTML(html2, options) {
return purify.sanitize(html2, __assign$1({ ADD_TAGS: whiteTagList, ADD_ATTR: ["rel", "target", "hreflang", "type"], FORBID_TAGS: [
"input",
"script",
"textarea",
"form",
"button",
"select",
"meta",
"style",
"link",
"title",
"object",
"base"
] }, options));
}
function getChildrenHTML(node, typeName) {
return node.literal.replace(new RegExp("(<\\s*" + typeName + "[^>]*>)|(" + typeName + "\\s*[>])", "ig"), "").trim();
}
function getHTMLAttrsByHTMLString(html2) {
html2 = html2.match(reHTMLTag)[0];
var attrs = html2.match(new RegExp(ATTRIBUTE$1, "g"));
return attrs ? attrs.reduce(function(acc, attr) {
var _a = attr.trim().split("="), name = _a[0], values = _a.slice(1);
if (values.length) {
acc[name] = values.join("=").replace(/'|"/g, "").trim();
}
return acc;
}, {}) : {};
}
function getHTMLAttrs(dom) {
return toArray_1(dom.attributes).reduce(function(acc, attr) {
acc[attr.nodeName] = attr.nodeValue;
return acc;
}, {});
}
function sanitizeDOM(node, typeName, sanitizer, wwToDOMAdaptor) {
var dom = wwToDOMAdaptor.getToDOMNode(typeName)(node);
var html2 = sanitizer(dom.outerHTML);
var container = document.createElement("div");
container.innerHTML = html2;
dom = container.firstChild;
var htmlAttrs = getHTMLAttrs(dom);
return { dom, htmlAttrs };
}
var schemaFactory = {
htmlBlock: function(typeName, sanitizeHTML2, wwToDOMAdaptor) {
return {
atom: true,
content: "block+",
group: "block",
attrs: {
htmlAttrs: { default: {} },
childrenHTML: { default: "" },
htmlBlock: { default: true }
},
parseDOM: [
{
tag: typeName,
getAttrs: function(dom) {
return {
htmlAttrs: getHTMLAttrs(dom),
childrenHTML: dom.innerHTML
};
}
}
],
toDOM: function(node) {
var _a = sanitizeDOM(node, typeName, sanitizeHTML2, wwToDOMAdaptor), dom = _a.dom, htmlAttrs = _a.htmlAttrs;
htmlAttrs.class = htmlAttrs.class ? htmlAttrs.class + " html-block" : "html-block";
return __spreadArray$1([typeName, htmlAttrs], toArray_1(dom.childNodes));
}
};
},
htmlInline: function(typeName, sanitizeHTML2, wwToDOMAdaptor) {
return {
attrs: {
htmlAttrs: { default: {} },
htmlInline: { default: true }
},
parseDOM: [
{
tag: typeName,
getAttrs: function(dom) {
return {
htmlAttrs: getHTMLAttrs(dom)
};
}
}
],
toDOM: function(node) {
var htmlAttrs = sanitizeDOM(node, typeName, sanitizeHTML2, wwToDOMAdaptor).htmlAttrs;
return [typeName, htmlAttrs, 0];
}
};
}
};
function createHTMLSchemaMap(convertorMap, sanitizeHTML2, wwToDOMAdaptor) {
var htmlSchemaMap = { nodes: {}, marks: {} };
["htmlBlock", "htmlInline"].forEach(function(htmlType) {
if (convertorMap[htmlType]) {
Object.keys(convertorMap[htmlType]).forEach(function(type) {
var targetType = htmlType === "htmlBlock" ? "nodes" : "marks";
registerTagWhitelistIfPossible(type);
htmlSchemaMap[targetType][type] = schemaFactory[htmlType](type, sanitizeHTML2, wwToDOMAdaptor);
});
}
});
return htmlSchemaMap;
}
var reCloseTag = /^\s*<\s*\//;
var baseConvertors = {
paragraph: function(_, _a) {
var entering = _a.entering, origin = _a.origin, options = _a.options;
if (options.nodeId) {
return {
type: entering ? "openTag" : "closeTag",
outerNewLine: true,
tagName: "p"
};
}
return origin();
},
softbreak: function(node) {
var isPrevNodeHTML = node.prev && node.prev.type === "htmlInline";
var isPrevBR = isPrevNodeHTML && / /.test(node.prev.literal);
var content = isPrevBR ? "\n" : " \n";
return { type: "html", content };
},
item: function(node, _a) {
var entering = _a.entering;
if (entering) {
var attributes = {};
var classNames = [];
if (node.listData.task) {
attributes["data-task"] = "";
classNames.push("task-list-item");
if (node.listData.checked) {
classNames.push("checked");
attributes["data-task-checked"] = "";
}
}
return {
type: "openTag",
tagName: "li",
classNames,
attributes,
outerNewLine: true
};
}
return {
type: "closeTag",
tagName: "li",
outerNewLine: true
};
},
code: function(node) {
var attributes = { "data-backticks": String(node.tickCount) };
return [
{ type: "openTag", tagName: "code", attributes },
{ type: "text", content: node.literal },
{ type: "closeTag", tagName: "code" }
];
},
codeBlock: function(node) {
var _a = node, fenceLength = _a.fenceLength, info = _a.info;
var infoWords = info ? info.split(/\s+/) : [];
var preClasses = [];
var codeAttrs = {};
if (fenceLength > 3) {
codeAttrs["data-backticks"] = fenceLength;
}
if (infoWords.length > 0 && infoWords[0].length > 0) {
var lang2 = infoWords[0];
preClasses.push("lang-" + lang2);
codeAttrs["data-language"] = lang2;
}
return [
{ type: "openTag", tagName: "pre", classNames: preClasses },
{ type: "openTag", tagName: "code", attributes: codeAttrs },
{ type: "text", content: node.literal },
{ type: "closeTag", tagName: "code" },
{ type: "closeTag", tagName: "pre" }
];
},
customInline: function(node, _a) {
var origin = _a.origin, entering = _a.entering, skipChildren = _a.skipChildren;
var info = node.info;
if (info.indexOf("widget") !== -1 && entering) {
skipChildren();
var content = getWidgetContent(node);
var htmlInline = widgetToDOM(info, content).outerHTML;
return [
{ type: "openTag", tagName: "span", classNames: ["tui-widget"] },
{ type: "html", content: htmlInline },
{ type: "closeTag", tagName: "span" }
];
}
return origin();
}
};
function getHTMLRenderConvertors(linkAttributes, customConvertors) {
var convertors2 = __assign$1({}, baseConvertors);
if (linkAttributes) {
convertors2.link = function(_, _a) {
var entering = _a.entering, origin = _a.origin;
var result = origin();
if (entering) {
result.attributes = __assign$1(__assign$1({}, result.attributes), linkAttributes);
}
return result;
};
}
if (customConvertors) {
Object.keys(customConvertors).forEach(function(nodeType) {
var orgConvertor = convertors2[nodeType];
var customConvertor = customConvertors[nodeType];
if (orgConvertor && isFunction_1(customConvertor)) {
convertors2[nodeType] = function(node, context) {
var newContext = __assign$1({}, context);
newContext.origin = function() {
return orgConvertor(node, context);
};
return customConvertor(node, newContext);
};
} else if (includes(["htmlBlock", "htmlInline"], nodeType) && !isFunction_1(customConvertor)) {
convertors2[nodeType] = function(node, context) {
var matched = node.literal.match(reHTMLTag);
if (matched) {
var rootHTML = matched[0], openTagName = matched[1], closeTagName = matched[3];
var typeName = (openTagName || closeTagName).toLowerCase();
var htmlConvertor = customConvertor[typeName];
var childrenHTML = getChildrenHTML(node, typeName);
if (htmlConvertor) {
var newNode = __assign$1({}, node);
newNode.attrs = getHTMLAttrsByHTMLString(rootHTML);
newNode.childrenHTML = childrenHTML;
newNode.type = typeName;
context.entering = !reCloseTag.test(node.literal);
return htmlConvertor(newNode, context);
}
}
return context.origin();
};
} else {
convertors2[nodeType] = customConvertor;
}
});
}
return convertors2;
}
var nestableTypes = ["list", "item", "blockQuote"];
var nestableTagNames = ["UL", "OL", "BLOCKQUOTE"];
function isBlankLine(doc3, index2) {
var _a;
var pmNode = doc3.child(index2);
return !pmNode.childCount || pmNode.childCount === 1 && !((_a = pmNode.firstChild.text) === null || _a === void 0 ? void 0 : _a.trim());
}
function getEditorRangeHeightInfo(doc3, mdNode, children) {
var start = getMdStartLine(mdNode) - 1;
var end = getMdEndLine(mdNode) - 1;
var rect2 = children[start].getBoundingClientRect();
var height = children[end].offsetTop - children[start].offsetTop + children[end].clientHeight;
return {
height: height <= 0 ? children[start].clientHeight : height + getBlankLinesHeight(doc3, children, Math.min(end + 1, doc3.childCount - 1)),
rect: rect2
};
}
function getBlankLinesHeight(doc3, children, start) {
var end = doc3.childCount - 1;
var height = 0;
while (start <= end && isBlankLine(doc3, start)) {
height += children[start].clientHeight;
start += 1;
}
return height;
}
function findAncestorHavingId(el2, root) {
while (!el2.getAttribute("data-nodeid") && el2.parentElement !== root) {
el2 = el2.parentElement;
}
return el2;
}
function getTotalOffsetTop(el2, root) {
var offsetTop = 0;
while (el2 && el2 !== root) {
if (!includes(nestableTagNames, el2.tagName)) {
offsetTop += el2.offsetTop;
}
if (el2.offsetParent === root.offsetParent) {
break;
}
el2 = el2.parentElement;
}
return offsetTop;
}
function findAdjacentElementToScrollTop(scrollTop, root) {
var el2 = root;
var prev = null;
while (el2) {
var firstElementChild = el2.firstElementChild;
if (!firstElementChild) {
break;
}
var lastSibling = findLastSiblingElementToScrollTop(firstElementChild, scrollTop, getTotalOffsetTop(el2, root));
prev = el2;
el2 = lastSibling;
}
var adjacentEl = el2 || prev;
return adjacentEl === root ? null : adjacentEl;
}
function findLastSiblingElementToScrollTop(el2, scrollTop, offsetTop) {
if (el2 && scrollTop > offsetTop + el2.offsetTop) {
return findLastSiblingElementToScrollTop(el2.nextElementSibling, scrollTop, offsetTop) || el2;
}
return null;
}
function getAdditionalPos(scrollTop, offsetTop, height, targetNodeHeight) {
var ratio2 = Math.min((scrollTop - offsetTop) / height, 1);
return ratio2 * targetNodeHeight;
}
function getParentNodeObj(previewContent, mdNode) {
var el2 = previewContent.querySelector('[data-nodeid="' + mdNode.id + '"]');
while (!el2 || isStyledInlineNode(mdNode)) {
mdNode = mdNode.parent;
el2 = previewContent.querySelector('[data-nodeid="' + mdNode.id + '"]');
}
return getNonNestableNodeObj({ mdNode, el: el2 });
}
function getNonNestableNodeObj(_a) {
var mdNode = _a.mdNode, el2 = _a.el;
while ((includes(nestableTypes, mdNode.type) || mdNode.type === "table") && mdNode.firstChild) {
mdNode = mdNode.firstChild;
el2 = el2.firstElementChild;
}
return { mdNode, el: el2 };
}
var offsetInfoMap = {};
function setHeight(id, height) {
offsetInfoMap[id] = offsetInfoMap[id] || {};
offsetInfoMap[id].height = height;
}
function setOffsetTop(id, offsetTop) {
offsetInfoMap[id] = offsetInfoMap[id] || {};
offsetInfoMap[id].offsetTop = offsetTop;
}
function getHeight(id) {
return offsetInfoMap[id] && offsetInfoMap[id].height;
}
function getOffsetTop(id) {
return offsetInfoMap[id] && offsetInfoMap[id].offsetTop;
}
function removeOffsetInfoByNode(node) {
if (node) {
delete offsetInfoMap[Number(node.getAttribute("data-nodeid"))];
toArray_1(node.children).forEach(function(child) {
removeOffsetInfoByNode(child);
});
}
}
function getAndSaveOffsetInfo(node, root, mdNodeId) {
var cachedHeight = getHeight(mdNodeId);
var cachedTop = getOffsetTop(mdNodeId);
var nodeHeight = cachedHeight || node.clientHeight;
var offsetTop = cachedTop || getTotalOffsetTop(node, root) || node.offsetTop;
if (!cachedHeight) {
setHeight(mdNodeId, nodeHeight);
}
if (!cachedTop) {
setOffsetTop(mdNodeId, offsetTop);
}
return { nodeHeight, offsetTop };
}
var CLASS_HIGHLIGHT = cls("md-preview-highlight");
function findTableCell(tableRow2, chOffset) {
var cell = tableRow2.firstChild;
while (cell && cell.next) {
if (getMdStartCh(cell.next) > chOffset + 1) {
break;
}
cell = cell.next;
}
return cell;
}
var MarkdownPreview = (
/** @class */
(function() {
function MarkdownPreview2(eventEmitter, options) {
var el2 = document.createElement("div");
this.el = el2;
this.eventEmitter = eventEmitter;
this.isViewer = !!options.isViewer;
this.el.className = cls("md-preview");
var linkAttributes = options.linkAttributes, customHTMLRenderer = options.customHTMLRenderer, sanitizer = options.sanitizer, _a = options.highlight, highlight = _a === void 0 ? false : _a;
this.renderer = new Renderer({
gfm: true,
nodeId: true,
convertors: getHTMLRenderConvertors(linkAttributes, customHTMLRenderer)
});
this.cursorNodeId = null;
this.sanitizer = sanitizer;
this.initEvent(highlight);
this.initContentSection();
if (this.isViewer) {
this.previewContent.style.overflowWrap = "break-word";
}
}
MarkdownPreview2.prototype.initContentSection = function() {
this.previewContent = createElementWith('');
if (!this.isViewer) {
this.el.appendChild(this.previewContent);
}
};
MarkdownPreview2.prototype.toggleActive = function(active) {
toggleClass(this.el, "active", active);
};
MarkdownPreview2.prototype.initEvent = function(highlight) {
var _this = this;
this.eventEmitter.listen("updatePreview", this.update.bind(this));
if (this.isViewer) {
return;
}
if (highlight) {
this.eventEmitter.listen("changeToolbarState", function(_a) {
var mdNode = _a.mdNode, cursorPos = _a.cursorPos;
_this.updateCursorNode(mdNode, cursorPos);
});
this.eventEmitter.listen("blur", function() {
_this.removeHighlight();
});
}
on_1(this.el, "scroll", function(event) {
_this.eventEmitter.emit("scroll", "preview", findAdjacentElementToScrollTop(event.target.scrollTop, _this.previewContent));
});
this.eventEmitter.listen("changePreviewTabPreview", function() {
return _this.toggleActive(true);
});
this.eventEmitter.listen("changePreviewTabWrite", function() {
return _this.toggleActive(false);
});
};
MarkdownPreview2.prototype.removeHighlight = function() {
if (this.cursorNodeId) {
var currentEl = this.getElementByNodeId(this.cursorNodeId);
if (currentEl) {
removeClass_1(currentEl, CLASS_HIGHLIGHT);
}
}
};
MarkdownPreview2.prototype.updateCursorNode = function(cursorNode, cursorPos) {
if (cursorNode) {
cursorNode = findClosestNode(cursorNode, function(mdNode) {
return !isInlineNode$1(mdNode);
});
if (cursorNode.type === "tableRow") {
cursorNode = findTableCell(cursorNode, cursorPos[1]);
} else if (cursorNode.type === "tableBody") {
cursorNode = null;
}
}
var cursorNodeId = cursorNode ? cursorNode.id : null;
if (this.cursorNodeId === cursorNodeId) {
return;
}
var oldEL = this.getElementByNodeId(this.cursorNodeId);
var newEL = this.getElementByNodeId(cursorNodeId);
if (oldEL) {
removeClass_1(oldEL, CLASS_HIGHLIGHT);
}
if (newEL) {
addClass_1(newEL, CLASS_HIGHLIGHT);
}
this.cursorNodeId = cursorNodeId;
};
MarkdownPreview2.prototype.getElementByNodeId = function(nodeId) {
return nodeId ? this.previewContent.querySelector('[data-nodeid="' + nodeId + '"]') : null;
};
MarkdownPreview2.prototype.update = function(changed) {
var _this = this;
changed.forEach(function(editResult) {
return _this.replaceRangeNodes(editResult);
});
this.eventEmitter.emit("afterPreviewRender", this);
};
MarkdownPreview2.prototype.replaceRangeNodes = function(editResult) {
var _this = this;
var nodes = editResult.nodes, removedNodeRange = editResult.removedNodeRange;
var contentEl = this.previewContent;
var newHtml = this.eventEmitter.emitReduce("beforePreviewRender", this.sanitizer(nodes.map(function(node) {
return _this.renderer.render(node);
}).join("")));
if (!removedNodeRange) {
contentEl.insertAdjacentHTML("afterbegin", newHtml);
} else {
var _a = removedNodeRange.id, startNodeId = _a[0], endNodeId = _a[1];
var startEl = this.getElementByNodeId(startNodeId);
var endEl = this.getElementByNodeId(endNodeId);
if (startEl) {
startEl.insertAdjacentHTML("beforebegin", newHtml);
var el2 = startEl;
while (el2 && el2 !== endEl) {
var nextEl = el2.nextElementSibling;
removeNode$1(el2);
removeOffsetInfoByNode(el2);
el2 = nextEl;
}
if (el2 === null || el2 === void 0 ? void 0 : el2.parentNode) {
removeNode$1(el2);
removeOffsetInfoByNode(el2);
}
}
}
};
MarkdownPreview2.prototype.getRenderer = function() {
return this.renderer;
};
MarkdownPreview2.prototype.destroy = function() {
off_1(this.el, "scroll");
this.el = null;
};
MarkdownPreview2.prototype.getElement = function() {
return this.el;
};
MarkdownPreview2.prototype.getHTML = function() {
return removeProseMirrorHackNodes(this.previewContent.innerHTML);
};
MarkdownPreview2.prototype.setHTML = function(html2) {
this.previewContent.innerHTML = html2;
};
MarkdownPreview2.prototype.setHeight = function(height) {
css_1(this.el, { height: height + "px" });
};
MarkdownPreview2.prototype.setMinHeight = function(minHeight) {
css_1(this.el, { minHeight: minHeight + "px" });
};
return MarkdownPreview2;
})()
);
function findNodeBy(pos, condition) {
var depth = pos.depth;
while (depth) {
var node = pos.node(depth);
if (condition(node, depth)) {
return {
node,
depth,
offset: depth > 0 ? pos.before(depth) : 0
};
}
depth -= 1;
}
return null;
}
function isInListNode(pos) {
return !!findNodeBy(pos, function(_a) {
var type = _a.type;
return type.name === "listItem" || type.name === "bulletList" || type.name === "orderedList";
});
}
function isInTableNode(pos) {
return !!findNodeBy(pos, function(_a) {
var type = _a.type;
return type.name === "tableHeadCell" || type.name === "tableBodyCell";
});
}
function findListItem(pos) {
return findNodeBy(pos, function(_a) {
var type = _a.type;
return type.name === "listItem";
});
}
function createDOMInfoParsedRawHTML(tag) {
return {
tag,
getAttrs: function(dom) {
var rawHTML = dom.getAttribute("data-raw-html");
return __assign$1({}, rawHTML && { rawHTML });
}
};
}
function createCellAttrs(attrs) {
return Object.keys(attrs).reduce(function(acc, attrName) {
if (attrName !== "rawHTML" && attrs[attrName]) {
attrName = attrName === "className" ? "class" : attrName;
acc[attrName] = attrs[attrName];
}
return acc;
}, {});
}
function createParsedCellDOM(tag) {
return {
tag,
getAttrs: function(dom) {
return ["rawHTML", "colspan", "rowspan", "extended"].reduce(function(acc, attrName) {
var attrNameInDOM = attrName === "rawHTML" ? "data-raw-html" : attrName;
var attrValue = dom.getAttribute(attrNameInDOM);
if (attrValue) {
acc[attrName] = includes(["rawHTML", "extended"], attrName) ? attrValue : Number(attrValue);
}
return acc;
}, {});
}
};
}
function getDefaultCustomAttrs() {
return {
htmlAttrs: { default: null },
classNames: { default: null }
};
}
function getCustomAttrs(attrs) {
var htmlAttrs = attrs.htmlAttrs, classNames = attrs.classNames;
return __assign$1(__assign$1({}, htmlAttrs), { class: classNames ? classNames.join(" ") : null });
}
function findWrappingOutside2(range2, type) {
var parent = range2.parent, startIndex = range2.startIndex, endIndex = range2.endIndex;
var around = parent.contentMatchAt(startIndex).findWrapping(type);
if (around) {
var outer = around.length ? around[0] : type;
return parent.canReplaceWith(startIndex, endIndex, outer) ? around : null;
}
return null;
}
function findWrappingInside2(range2, type) {
var parent = range2.parent, startIndex = range2.startIndex, endIndex = range2.endIndex;
var inner = parent.child(startIndex);
var inside = type.contentMatch.findWrapping(inner.type);
if (inside) {
var lastType = inside.length ? inside[inside.length - 1] : type;
var innerMatch = lastType.contentMatch;
for (var i = startIndex; innerMatch && i < endIndex; i += 1) {
innerMatch = innerMatch.matchType(parent.child(i).type);
}
if (innerMatch && innerMatch.validEnd) {
return inside;
}
}
return null;
}
function findWrappers(range2, innerRange, nodeType, attrs) {
var around = findWrappingOutside2(range2, nodeType);
var inner = findWrappingInside2(innerRange, nodeType);
if (around && inner) {
var aroundNodes = around.map(function(type) {
return { type };
});
var innerNodes = inner.map(function(type) {
return { type, attrs };
});
return aroundNodes.concat({ type: nodeType }).concat(innerNodes);
}
return null;
}
function wrapInList(tr, _a, wrappers, joinBefore, list2) {
var start = _a.start, end = _a.end, startIndex = _a.startIndex, endIndex = _a.endIndex, parent = _a.parent;
var content = Fragment.empty;
for (var i = wrappers.length - 1; i >= 0; i -= 1) {
content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));
}
tr.step(new ReplaceAroundStep(start - (joinBefore ? 2 : 0), end, start, end, new Slice(content, 0, 0), wrappers.length, true));
var foundListIndex = 0;
for (var i = 0; i < wrappers.length; i += 1) {
if (wrappers[i].type === list2) {
foundListIndex = i + 1;
break;
}
}
var splitDepth = wrappers.length - foundListIndex;
var splitPos = start + wrappers.length - (joinBefore ? 2 : 0);
for (var i = startIndex, len = endIndex; i < len; i += 1) {
var first = i === startIndex;
if (!first && canSplit(tr.doc, splitPos, splitDepth)) {
tr.split(splitPos, splitDepth);
splitPos += splitDepth * 2;
}
splitPos += parent.child(i).nodeSize;
}
return tr;
}
function changeToList(tr, range2, list2, attrs) {
var $from = range2.$from, $to = range2.$to, depth = range2.depth;
var outerRange = range2;
var joinBefore = false;
if (depth >= 2 && $from.node(depth - 1).type.compatibleContent(list2) && range2.startIndex === 0 && $from.index(depth - 1)) {
var start = tr.doc.resolve(range2.start - 2);
outerRange = new NodeRange(start, start, depth);
if (range2.endIndex < range2.parent.childCount) {
range2 = new NodeRange($from, tr.doc.resolve($to.end(depth)), depth);
}
joinBefore = true;
}
var wrappers = findWrappers(outerRange, range2, list2, attrs);
if (wrappers) {
return wrapInList(tr, range2, wrappers, joinBefore, list2);
}
return tr;
}
function getBeforeLineListItem(doc3, offset) {
var endListItemPos = doc3.resolve(offset);
while (endListItemPos.node().type.name !== "paragraph") {
offset -= 2;
endListItemPos = doc3.resolve(offset);
}
return findListItem(endListItemPos);
}
function toggleTaskListItems(tr, _a) {
var $from = _a.$from, $to = _a.$to;
var startListItem = findListItem($from);
var endListItem = findListItem($to);
if (startListItem && endListItem) {
while (endListItem) {
var offset = endListItem.offset, node = endListItem.node;
var attrs = { task: !node.attrs.task, checked: false };
tr.setNodeMarkup(offset, null, attrs);
if (offset === startListItem.offset) {
break;
}
endListItem = getBeforeLineListItem(tr.doc, offset);
}
}
return tr;
}
function changeListType(tr, _a, list2) {
var $from = _a.$from, $to = _a.$to;
var startListItem = findListItem($from);
var endListItem = findListItem($to);
if (startListItem && endListItem) {
while (endListItem) {
var offset = endListItem.offset, node = endListItem.node, depth = endListItem.depth;
if (node.attrs.task) {
tr.setNodeMarkup(offset, null, { task: false, checked: false });
}
var resolvedPos = tr.doc.resolve(offset);
if (resolvedPos.parent.type !== list2) {
var parentOffset = resolvedPos.before(depth - 1);
tr.setNodeMarkup(parentOffset, list2);
}
if (offset === startListItem.offset) {
break;
}
endListItem = getBeforeLineListItem(tr.doc, offset);
}
}
return tr;
}
function changeList(list2) {
return function(_a, dispatch) {
var selection = _a.selection, tr = _a.tr;
var $from = selection.$from, $to = selection.$to;
var range2 = $from.blockRange($to);
if (range2) {
var newTr = isInListNode($from) ? changeListType(tr, range2, list2) : changeToList(tr, range2, list2);
dispatch(newTr);
return true;
}
return false;
};
}
function toggleTask() {
return function(_a, dispatch) {
var selection = _a.selection, tr = _a.tr, schema = _a.schema;
var $from = selection.$from, $to = selection.$to;
var range2 = $from.blockRange($to);
if (range2) {
var newTr = isInListNode($from) ? toggleTaskListItems(tr, range2) : changeToList(tr, range2, schema.nodes.bulletList, { task: true });
dispatch(newTr);
return true;
}
return false;
};
}
function sinkListItem(listItem2) {
return function(_a, dispatch) {
var tr = _a.tr, selection = _a.selection;
var $from = selection.$from, $to = selection.$to;
var range2 = $from.blockRange($to, function(_a2) {
var childCount = _a2.childCount, firstChild = _a2.firstChild;
return !!childCount && firstChild.type === listItem2;
});
if (range2 && range2.startIndex > 0) {
var parent_1 = range2.parent;
var nodeBefore = parent_1.child(range2.startIndex - 1);
if (nodeBefore.type !== listItem2) {
return false;
}
var nestedBefore = nodeBefore.lastChild && nodeBefore.lastChild.type === parent_1.type;
var inner = nestedBefore ? Fragment.from(listItem2.create()) : null;
var slice2 = new Slice(Fragment.from(listItem2.create(null, Fragment.from(parent_1.type.create(null, inner)))), nestedBefore ? 3 : 1, 0);
var before = range2.start;
var after = range2.end;
tr.step(new ReplaceAroundStep(before - (nestedBefore ? 3 : 1), after, before, after, slice2, 1, true));
dispatch(tr);
return true;
}
return false;
};
}
function liftToOuterList(tr, range2, listItem2) {
var $from = range2.$from, $to = range2.$to, end = range2.end, depth = range2.depth, parent = range2.parent;
var endOfList = $to.end(depth);
if (end < endOfList) {
tr.step(new ReplaceAroundStep(end - 1, endOfList, end, endOfList, new Slice(Fragment.from(listItem2.create(null, parent.copy())), 1, 0), 1, true));
range2 = new NodeRange(tr.doc.resolve($from.pos), tr.doc.resolve(endOfList), depth);
}
tr.lift(range2, liftTarget(range2));
return tr;
}
function liftOutOfList(tr, range2) {
var list2 = range2.parent;
var pos = range2.end;
for (var i = range2.endIndex - 1, len = range2.startIndex; i > len; i -= 1) {
pos -= list2.child(i).nodeSize;
tr.delete(pos - 1, pos + 1);
}
var startPos = tr.doc.resolve(range2.start);
var listItem2 = startPos.nodeAfter;
var atStart = range2.startIndex === 0;
var atEnd = range2.endIndex === list2.childCount;
var parent = startPos.node(-1);
var indexBefore = startPos.index(-1);
var canReplaceParent = parent.canReplace(indexBefore + (atStart ? 0 : 1), indexBefore + 1, listItem2 === null || listItem2 === void 0 ? void 0 : listItem2.content.append(atEnd ? Fragment.empty : Fragment.from(list2)));
if (listItem2 && canReplaceParent) {
var start = startPos.pos;
var end = start + listItem2.nodeSize;
tr.step(new ReplaceAroundStep(start - (atStart ? 1 : 0), end + (atEnd ? 1 : 0), start + 1, end - 1, new Slice((atStart ? Fragment.empty : Fragment.from(list2.copy(Fragment.empty))).append(atEnd ? Fragment.empty : Fragment.from(list2.copy(Fragment.empty))), atStart ? 0 : 1, atEnd ? 0 : 1), atStart ? 0 : 1));
}
return tr;
}
function liftListItem(listItem2) {
return function(_a, dispatch) {
var tr = _a.tr, selection = _a.selection;
var $from = selection.$from, $to = selection.$to;
var range2 = $from.blockRange($to, function(_a2) {
var childCount = _a2.childCount, firstChild = _a2.firstChild;
return !!childCount && firstChild.type === listItem2;
});
if (range2) {
var topListItem = $from.node(range2.depth - 1).type === listItem2;
var newTr = topListItem ? liftToOuterList(tr, range2, listItem2) : liftOutOfList(tr, range2);
dispatch(newTr);
return true;
}
return false;
};
}
function splitListItem(listItem2) {
return function(_a, dispatch) {
var tr = _a.tr, selection = _a.selection;
var $from = selection.$from, $to = selection.$to;
if ($from.depth < 2 || !$from.sameParent($to)) {
return false;
}
var grandParent = $from.node(-1);
if (grandParent.type !== listItem2) {
return false;
}
if ($from.parent.content.size === 0 && $from.node(-1).childCount === $from.indexAfter(-1)) {
if ($from.depth === 2 || $from.node(-3).type !== listItem2 || $from.index(-2) !== $from.node(-2).childCount - 1) {
return false;
}
var keepItem = $from.index(-1) > 0;
var wrapper = Fragment.empty;
for (var depth = $from.depth - (keepItem ? 1 : 2); depth >= $from.depth - 3; depth -= 1) {
wrapper = Fragment.from($from.node(depth).copy(wrapper));
}
wrapper = wrapper.append(Fragment.from(listItem2.createAndFill()));
tr.replace(keepItem ? $from.before() : $from.before(-1), $from.after(-3), new Slice(wrapper, keepItem ? 3 : 2, 2));
tr.setSelection(Selection.near(tr.doc.resolve($from.pos + (keepItem ? 3 : 2))));
dispatch(tr);
return true;
}
var nextType = $to.pos === $from.end() ? grandParent.contentMatchAt(0).defaultType : null;
var types = nextType && [null, { type: nextType }];
tr.delete($from.pos, $to.pos);
if (canSplit(tr.doc, $from.pos, 2, types)) {
tr.split($from.pos, 2, types);
dispatch(tr);
return true;
}
return false;
};
}
function indent() {
return function() {
return function(state, dispatch) {
var selection = state.selection, schema = state.schema;
var $from = selection.$from, $to = selection.$to;
var range2 = $from.blockRange($to);
if (range2 && isInListNode($from)) {
return sinkListItem(schema.nodes.listItem)(state, dispatch);
}
return false;
};
};
}
function outdent() {
return function() {
return function(state, dispatch) {
var selection = state.selection, schema = state.schema;
var $from = selection.$from, $to = selection.$to;
var range2 = $from.blockRange($to);
if (range2 && isInListNode($from)) {
return liftListItem(schema.nodes.listItem)(state, dispatch);
}
return false;
};
};
}
function getWwCommands() {
return {
indent: indent(),
outdent: outdent()
};
}
var cache = /* @__PURE__ */ new Map();
var TableOffsetMap = (
/** @class */
(function() {
function TableOffsetMap2(table2, tableRows, tableStartPos, rowInfo) {
this.table = table2;
this.tableRows = tableRows;
this.tableStartPos = tableStartPos;
this.rowInfo = rowInfo;
}
TableOffsetMap2.create = function(cellPos) {
var table2 = findNodeBy(cellPos, function(_a) {
var type = _a.type;
return type.name === "table";
});
if (table2) {
var node = table2.node, depth = table2.depth, offset = table2.offset;
var cached = cache.get(node);
if ((cached === null || cached === void 0 ? void 0 : cached.tableStartPos) === offset + 1) {
return cached;
}
var rows_1 = [];
var tablePos = cellPos.start(depth);
var thead = node.child(0);
var tbody = node.child(1);
var theadCellInfo = createOffsetMap(thead, tablePos);
var tbodyCellInfo = createOffsetMap(tbody, tablePos + thead.nodeSize);
thead.forEach(function(row) {
return rows_1.push(row);
});
tbody.forEach(function(row) {
return rows_1.push(row);
});
var map3 = new TableOffsetMap2(node, rows_1, tablePos, theadCellInfo.concat(tbodyCellInfo));
cache.set(node, map3);
return map3;
}
return null;
};
Object.defineProperty(TableOffsetMap2.prototype, "totalRowCount", {
get: function() {
return this.rowInfo.length;
},
enumerable: false,
configurable: true
});
Object.defineProperty(TableOffsetMap2.prototype, "totalColumnCount", {
get: function() {
return this.rowInfo[0].length;
},
enumerable: false,
configurable: true
});
Object.defineProperty(TableOffsetMap2.prototype, "tableStartOffset", {
get: function() {
return this.tableStartPos;
},
enumerable: false,
configurable: true
});
Object.defineProperty(TableOffsetMap2.prototype, "tableEndOffset", {
get: function() {
return this.tableStartPos + this.table.nodeSize - 1;
},
enumerable: false,
configurable: true
});
TableOffsetMap2.prototype.getCellInfo = function(rowIdx, colIdx) {
return this.rowInfo[rowIdx][colIdx];
};
TableOffsetMap2.prototype.posAt = function(rowIdx, colIdx) {
for (var i = 0, rowStart = this.tableStartPos; ; i += 1) {
var rowEnd = rowStart + this.tableRows[i].nodeSize;
if (i === rowIdx) {
var index2 = colIdx;
while (index2 < this.totalColumnCount && this.rowInfo[i][index2].offset < rowStart) {
index2 += 1;
}
return index2 === this.totalColumnCount ? rowEnd : this.rowInfo[i][index2].offset;
}
rowStart = rowEnd;
}
};
TableOffsetMap2.prototype.getNodeAndPos = function(rowIdx, colIdx) {
var cellInfo = this.rowInfo[rowIdx][colIdx];
return {
node: this.table.nodeAt(cellInfo.offset - this.tableStartOffset),
pos: cellInfo.offset
};
};
TableOffsetMap2.prototype.extendedRowspan = function(rowIdx, colIdx) {
return false;
};
TableOffsetMap2.prototype.extendedColspan = function(rowIdx, colIdx) {
return false;
};
TableOffsetMap2.prototype.getRowspanCount = function(rowIdx, colIdx) {
return 0;
};
TableOffsetMap2.prototype.getColspanCount = function(rowIdx, colIdx) {
return 0;
};
TableOffsetMap2.prototype.decreaseColspanCount = function(rowIdx, colIdx) {
return 0;
};
TableOffsetMap2.prototype.decreaseRowspanCount = function(rowIdx, colIdx) {
return 0;
};
TableOffsetMap2.prototype.getColspanStartInfo = function(rowIdx, colIdx) {
return null;
};
TableOffsetMap2.prototype.getRowspanStartInfo = function(rowIdx, colIdx) {
return null;
};
TableOffsetMap2.prototype.getCellStartOffset = function(rowIdx, colIdx) {
var offset = this.rowInfo[rowIdx][colIdx].offset;
return this.extendedRowspan(rowIdx, colIdx) ? this.posAt(rowIdx, colIdx) : offset;
};
TableOffsetMap2.prototype.getCellEndOffset = function(rowIdx, colIdx) {
var _a = this.rowInfo[rowIdx][colIdx], offset = _a.offset, nodeSize2 = _a.nodeSize;
return this.extendedRowspan(rowIdx, colIdx) ? this.posAt(rowIdx, colIdx) : offset + nodeSize2;
};
TableOffsetMap2.prototype.getCellIndex = function(cellPos) {
for (var rowIdx = 0; rowIdx < this.totalRowCount; rowIdx += 1) {
var rowInfo = this.rowInfo[rowIdx];
for (var colIdx = 0; colIdx < this.totalColumnCount; colIdx += 1) {
if (rowInfo[colIdx].offset + 1 > cellPos.pos) {
return [rowIdx, colIdx];
}
}
}
return [0, 0];
};
TableOffsetMap2.prototype.getRectOffsets = function(startCellPos, endCellPos) {
var _a, _b, _c;
if (endCellPos === void 0) {
endCellPos = startCellPos;
}
if (startCellPos.pos > endCellPos.pos) {
_a = [endCellPos, startCellPos], startCellPos = _a[0], endCellPos = _a[1];
}
var _d = this.getCellIndex(startCellPos), startRowIdx = _d[0], startColIdx = _d[1];
var _e = this.getCellIndex(endCellPos), endRowIdx = _e[0], endColIdx = _e[1];
_b = getSortedNumPair(startRowIdx, endRowIdx), startRowIdx = _b[0], endRowIdx = _b[1];
_c = getSortedNumPair(startColIdx, endColIdx), startColIdx = _c[0], endColIdx = _c[1];
return this.getSpannedOffsets({ startRowIdx, startColIdx, endRowIdx, endColIdx });
};
TableOffsetMap2.prototype.getSpannedOffsets = function(selectionInfo) {
return selectionInfo;
};
return TableOffsetMap2;
})()
);
var createOffsetMap = function(headOrBody, startOffset) {
var cellInfoMatrix = [];
headOrBody.forEach(function(row, rowOffset) {
var rowInfo = { rowspanMap: {}, colspanMap: {}, length: 0 };
row.forEach(function(_a, cellOffset) {
var nodeSize2 = _a.nodeSize;
var colIdx = 0;
while (rowInfo[colIdx]) {
colIdx += 1;
}
rowInfo[colIdx] = {
// 2 is the sum of the front and back positions of the tag
offset: startOffset + rowOffset + cellOffset + 2,
nodeSize: nodeSize2
};
rowInfo.length += 1;
});
cellInfoMatrix.push(rowInfo);
});
return cellInfoMatrix;
};
function mixinTableOffsetMapPrototype(offsetMapMixin, createOffsetMapMixin) {
assign(TableOffsetMap.prototype, offsetMapMixin);
createOffsetMap = createOffsetMapMixin;
return TableOffsetMap;
}
function getSelectionRanges(doc3, map3, _a) {
var startRowIdx = _a.startRowIdx, startColIdx = _a.startColIdx, endRowIdx = _a.endRowIdx, endColIdx = _a.endColIdx;
var ranges = [];
for (var rowIdx = startRowIdx; rowIdx <= endRowIdx; rowIdx += 1) {
for (var colIdx = startColIdx; colIdx <= endColIdx; colIdx += 1) {
var _b = map3.getCellInfo(rowIdx, colIdx), offset = _b.offset, nodeSize2 = _b.nodeSize;
ranges.push(new SelectionRange(doc3.resolve(offset + 1), doc3.resolve(offset + nodeSize2 - 1)));
}
}
return ranges;
}
function createTableFragment(tableHead2, tableBody2) {
var fragment = [];
if (tableHead2.childCount) {
fragment.push(tableHead2);
}
if (tableBody2.childCount) {
fragment.push(tableBody2);
}
return Fragment.from(fragment);
}
var CellSelection = (
/** @class */
(function(_super) {
__extends$1(CellSelection2, _super);
function CellSelection2(startCellPos, endCellPos) {
if (endCellPos === void 0) {
endCellPos = startCellPos;
}
var _this = this;
var doc3 = startCellPos.node(0);
var map3 = TableOffsetMap.create(startCellPos);
var selectionInfo = map3.getRectOffsets(startCellPos, endCellPos);
var ranges = getSelectionRanges(doc3, map3, selectionInfo);
_this = _super.call(this, ranges[0].$from, ranges[0].$to, ranges) || this;
_this.startCell = startCellPos;
_this.endCell = endCellPos;
_this.offsetMap = map3;
_this.isCellSelection = true;
_this.visible = false;
return _this;
}
CellSelection2.prototype.map = function(doc3, mapping) {
var startPos = this.startCell.pos;
var endPos = this.endCell.pos;
var startCell = doc3.resolve(mapping.map(startPos));
var endCell = doc3.resolve(mapping.map(endPos));
var map3 = TableOffsetMap.create(startCell);
if (this.offsetMap.totalColumnCount > map3.totalColumnCount || this.offsetMap.totalRowCount > map3.totalRowCount) {
var depthMap = { tableBody: 1, tableRow: 2, tableCell: 3, paragraph: 4 };
var depthFromTable = depthMap[endCell.parent.type.name];
var tableEndPos = endCell.end(endCell.depth - depthFromTable);
var from2 = Math.min(tableEndPos - 4, endCell.pos);
return TextSelection.create(doc3, from2);
}
return new CellSelection2(startCell, endCell);
};
CellSelection2.prototype.eq = function(cell) {
return cell instanceof CellSelection2 && cell.startCell.pos === this.startCell.pos && cell.endCell.pos === this.endCell.pos;
};
CellSelection2.prototype.content = function() {
var table2 = this.startCell.node(-2);
var tableOffset = this.startCell.start(-2);
var row = table2.child(1).firstChild;
var tableHead2 = table2.child(0).type.create();
var tableBody2 = table2.child(1).type.create();
var map3 = TableOffsetMap.create(this.startCell);
var selectionInfo = map3.getRectOffsets(this.startCell, this.endCell);
var startRowIdx = selectionInfo.startRowIdx, startColIdx = selectionInfo.startColIdx, endRowIdx = selectionInfo.endRowIdx, endColIdx = selectionInfo.endColIdx;
var isTableHeadCell = false;
for (var rowIdx = startRowIdx; rowIdx <= endRowIdx; rowIdx += 1) {
var cells = [];
for (var colIdx = startColIdx; colIdx <= endColIdx; colIdx += 1) {
var offset = map3.getCellInfo(rowIdx, colIdx).offset;
var cell = table2.nodeAt(offset - tableOffset);
if (cell) {
isTableHeadCell = cell.type.name === "tableHeadCell";
if (map3.extendedRowspan(rowIdx, colIdx) || map3.extendedColspan(rowIdx, colIdx)) {
cells.push(cell.type.create({ extended: true }));
} else {
cells.push(cell.copy(cell.content));
}
}
}
var copiedRow = row.copy(Fragment.from(cells));
var targetNode = isTableHeadCell ? tableHead2 : tableBody2;
targetNode.content = targetNode.content.append(Fragment.from(copiedRow));
}
return new Slice(createTableFragment(tableHead2, tableBody2), 1, 1);
};
CellSelection2.prototype.toJSON = function() {
return JSON.stringify(this);
};
return CellSelection2;
})(Selection)
);
function createTableHeadRow(columnCount, schema, data) {
var _a = schema.nodes, tableRow2 = _a.tableRow, tableHeadCell = _a.tableHeadCell, paragraph2 = _a.paragraph;
var cells = [];
for (var index2 = 0; index2 < columnCount; index2 += 1) {
var text2 = data && data[index2];
var para2 = paragraph2.create(null, text2 ? schema.text(text2) : []);
cells.push(tableHeadCell.create(null, para2));
}
return [tableRow2.create(null, cells)];
}
function createTableBodyRows(rowCount, columnCount, schema, data) {
var _a = schema.nodes, tableRow2 = _a.tableRow, tableBodyCell = _a.tableBodyCell, paragraph2 = _a.paragraph;
var tableRows = [];
for (var rowIdx = 0; rowIdx < rowCount; rowIdx += 1) {
var cells = [];
for (var colIdx = 0; colIdx < columnCount; colIdx += 1) {
var text2 = data && data[rowIdx * columnCount + colIdx];
var para2 = paragraph2.create(null, text2 ? schema.text(text2) : []);
cells.push(tableBodyCell.create(null, para2));
}
tableRows.push(tableRow2.create(null, cells));
}
return tableRows;
}
function createDummyCells(columnCount, rowIdx, schema, attrs) {
if (attrs === void 0) {
attrs = null;
}
var _a = schema.nodes, tableHeadCell = _a.tableHeadCell, tableBodyCell = _a.tableBodyCell, paragraph2 = _a.paragraph;
var cell = rowIdx === 0 ? tableHeadCell : tableBodyCell;
var cells = [];
for (var index2 = 0; index2 < columnCount; index2 += 1) {
cells.push(cell.create(attrs, paragraph2.create()));
}
return cells;
}
function findCellElement(node, root) {
while (node && node !== root) {
if (node.nodeName === "TD" || node.nodeName === "TH") {
return node;
}
node = node.parentNode;
}
return null;
}
function findCell(pos) {
return findNodeBy(pos, function(_a) {
var type = _a.type;
return type.name === "tableHeadCell" || type.name === "tableBodyCell";
});
}
function getResolvedSelection(selection) {
if (selection instanceof TextSelection) {
var $anchor = selection.$anchor;
var foundCell = findCell($anchor);
if (foundCell) {
var anchor = $anchor.node(0).resolve($anchor.before(foundCell.depth));
return { anchor, head: anchor };
}
}
var _a = selection, startCell = _a.startCell, endCell = _a.endCell;
return { anchor: startCell, head: endCell };
}
function getTableContentFromSlice(slice2) {
var _a;
if (slice2.size) {
var content = slice2.content, openStart = slice2.openStart, openEnd = slice2.openEnd;
if (content.childCount !== 1) {
return null;
}
while (content.childCount === 1 && (openStart > 0 && openEnd > 0 || ((_a = content.firstChild) === null || _a === void 0 ? void 0 : _a.type.name) === "table")) {
openStart -= 1;
openEnd -= 1;
content = content.firstChild.content;
}
if (content.firstChild.type.name === "tableHead" || content.firstChild.type.name === "tableBody") {
return content;
}
}
return null;
}
function getRowAndColumnCount(_a) {
var startRowIdx = _a.startRowIdx, startColIdx = _a.startColIdx, endRowIdx = _a.endRowIdx, endColIdx = _a.endColIdx;
var rowCount = endRowIdx - startRowIdx + 1;
var columnCount = endColIdx - startColIdx + 1;
return { rowCount, columnCount };
}
function setAttrs(cell, attrs) {
return __assign$1(__assign$1({}, cell.attrs), attrs);
}
var pluginKey = new PluginKey("cellSelection");
var MOUSE_RIGHT_BUTTON = 2;
var TableSelection = (
/** @class */
(function() {
function TableSelection2(view) {
this.view = view;
this.handlers = {
mousedown: this.handleMousedown.bind(this),
mousemove: this.handleMousemove.bind(this),
mouseup: this.handleMouseup.bind(this)
};
this.startCellPos = null;
this.init();
}
TableSelection2.prototype.init = function() {
this.view.dom.addEventListener("mousedown", this.handlers.mousedown);
};
TableSelection2.prototype.handleMousedown = function(ev) {
var foundCell = findCellElement(ev.target, this.view.dom);
if (ev.button === MOUSE_RIGHT_BUTTON) {
ev.preventDefault();
return;
}
if (foundCell) {
var startCellPos = this.getCellPos(ev);
if (startCellPos) {
this.startCellPos = startCellPos;
}
this.bindEvent();
}
};
TableSelection2.prototype.handleMousemove = function(ev) {
var prevEndCellOffset = pluginKey.getState(this.view.state);
var endCellPos = this.getCellPos(ev);
var startCellPos = this.startCellPos;
var prevEndCellPos;
if (prevEndCellOffset) {
prevEndCellPos = this.view.state.doc.resolve(prevEndCellOffset);
} else if (startCellPos !== endCellPos) {
prevEndCellPos = startCellPos;
}
if (prevEndCellPos && startCellPos && endCellPos) {
this.setCellSelection(startCellPos, endCellPos);
}
};
TableSelection2.prototype.handleMouseup = function() {
this.startCellPos = null;
this.unbindEvent();
if (pluginKey.getState(this.view.state) !== null) {
this.view.dispatch(this.view.state.tr.setMeta(pluginKey, -1));
}
};
TableSelection2.prototype.bindEvent = function() {
var dom = this.view.dom;
dom.addEventListener("mousemove", this.handlers.mousemove);
dom.addEventListener("mouseup", this.handlers.mouseup);
};
TableSelection2.prototype.unbindEvent = function() {
var dom = this.view.dom;
dom.removeEventListener("mousemove", this.handlers.mousemove);
dom.removeEventListener("mouseup", this.handlers.mouseup);
};
TableSelection2.prototype.getCellPos = function(_a) {
var clientX = _a.clientX, clientY = _a.clientY;
var mousePos = this.view.posAtCoords({ left: clientX, top: clientY });
if (mousePos) {
var doc3 = this.view.state.doc;
var currentPos = doc3.resolve(mousePos.pos);
var foundCell = findCell(currentPos);
if (foundCell) {
var cellOffset = currentPos.before(foundCell.depth);
return doc3.resolve(cellOffset);
}
}
return null;
};
TableSelection2.prototype.setCellSelection = function(startCellPos, endCellPos) {
var _a = this.view.state, selection = _a.selection, tr = _a.tr;
var starting = pluginKey.getState(this.view.state) === null;
var cellSelection = new CellSelection(startCellPos, endCellPos);
if (starting || !selection.eq(cellSelection)) {
var newTr = tr.setSelection(cellSelection);
if (starting) {
newTr.setMeta(pluginKey, endCellPos.pos);
}
this.view.dispatch(newTr);
}
};
TableSelection2.prototype.destroy = function() {
this.view.dom.removeEventListener("mousedown", this.handlers.mousedown);
};
return TableSelection2;
})()
);
var SELECTED_CELL_CLASS_NAME = cls("cell-selected");
function drawCellSelection(_a) {
var selection = _a.selection, doc3 = _a.doc;
if (selection instanceof CellSelection) {
var cells_1 = [];
var ranges = selection.ranges;
ranges.forEach(function(_a2) {
var $from = _a2.$from, $to = _a2.$to;
cells_1.push(Decoration.node($from.pos - 1, $to.pos + 1, { class: SELECTED_CELL_CLASS_NAME }));
});
return DecorationSet.create(doc3, cells_1);
}
return null;
}
function tableSelection() {
return new Plugin({
key: pluginKey,
state: {
init: function() {
return null;
},
apply: function(tr, value) {
var cellOffset = tr.getMeta(pluginKey);
if (cellOffset) {
return cellOffset === -1 ? null : cellOffset;
}
if (isNull_1(value) || !tr.docChanged) {
return value;
}
var _a = tr.mapping.mapResult(value), deleted = _a.deleted, pos = _a.pos;
return deleted ? null : pos;
}
},
props: {
decorations: drawCellSelection,
createSelectionBetween: function(_a) {
var state = _a.state;
if (!isNull_1(pluginKey.getState(state))) {
return state.selection;
}
return null;
}
},
view: function(editorView) {
return new TableSelection(editorView);
}
});
}
var Map$1 = (
/** @class */
(function() {
function Map2() {
this.keys = [];
this.values = [];
}
Map2.prototype.getKeyIndex = function(key) {
return inArray_1(key, this.keys);
};
Map2.prototype.get = function(key) {
return this.values[this.getKeyIndex(key)];
};
Map2.prototype.set = function(key, value) {
var keyIndex = this.getKeyIndex(key);
if (keyIndex > -1) {
this.values[keyIndex] = value;
} else {
this.keys.push(key);
this.values.push(value);
}
return this;
};
Map2.prototype.has = function(key) {
return this.getKeyIndex(key) > -1;
};
Map2.prototype.delete = function(key) {
var keyIndex = this.getKeyIndex(key);
if (keyIndex > -1) {
this.keys.splice(keyIndex, 1);
this.values.splice(keyIndex, 1);
return true;
}
return false;
};
Map2.prototype.forEach = function(callback, thisArg) {
var _this = this;
if (thisArg === void 0) {
thisArg = this;
}
this.values.forEach(function(value, index2) {
if (value && _this.keys[index2]) {
callback.call(thisArg, value, _this.keys[index2], _this);
}
});
};
Map2.prototype.clear = function() {
this.keys = [];
this.values = [];
};
return Map2;
})()
);
var DEFAULT_CODE = "en-US";
var I18n = (
/** @class */
(function() {
function I18n2() {
this.code = DEFAULT_CODE;
this.langs = new Map$1();
}
I18n2.prototype.setCode = function(code2) {
this.code = code2 || DEFAULT_CODE;
};
I18n2.prototype.setLanguage = function(codes, data) {
var _this = this;
codes = [].concat(codes);
codes.forEach(function(code2) {
if (!_this.langs.has(code2)) {
_this.langs.set(code2, data);
} else {
var langData = _this.langs.get(code2);
_this.langs.set(code2, extend_1(langData, data));
}
});
};
I18n2.prototype.get = function(key, code2) {
if (!code2) {
code2 = this.code;
}
var langSet = this.langs.get(code2);
if (!langSet) {
langSet = this.langs.get(DEFAULT_CODE);
}
var text2 = langSet[key];
if (!text2) {
throw new Error('There is no text key "' + key + '" in ' + code2);
}
return text2;
};
return I18n2;
})()
);
var i18n = new I18n();
var contextMenuGroups = [
[
{
action: "Add row to up",
command: "addRowToUp",
disableInThead: true,
className: "add-row-up"
},
{
action: "Add row to down",
command: "addRowToDown",
disableInThead: true,
className: "add-row-down"
},
{ action: "Remove row", command: "removeRow", disableInThead: true, className: "remove-row" }
],
[
{ action: "Add column to left", command: "addColumnToLeft", className: "add-column-left" },
{ action: "Add column to right", command: "addColumnToRight", className: "add-column-right" },
{ action: "Remove column", command: "removeColumn", className: "remove-column" }
],
[
{
action: "Align column to left",
command: "alignColumn",
payload: { align: "left" },
className: "align-column-left"
},
{
action: "Align column to center",
command: "alignColumn",
payload: { align: "center" },
className: "align-column-center"
},
{
action: "Align column to right",
command: "alignColumn",
payload: { align: "right" },
className: "align-column-right"
}
],
[{ action: "Remove table", command: "removeTable", className: "remove-table" }]
];
function getContextMenuGroups(eventEmitter, inTableHead) {
return contextMenuGroups.map(function(contextMenuGroup) {
return contextMenuGroup.map(function(_a) {
var action = _a.action, command = _a.command, payload = _a.payload, disableInThead = _a.disableInThead, className = _a.className;
return {
label: i18n.get(action),
onClick: function() {
eventEmitter.emit("command", command, payload);
},
disabled: inTableHead && !!disableInThead,
className
};
});
}).concat();
}
function tableContextMenu(eventEmitter) {
return new Plugin({
props: {
handleDOMEvents: {
contextmenu: function(view, ev) {
var tableCell2 = findCellElement(ev.target, view.dom);
if (tableCell2) {
ev.preventDefault();
var _a = ev, clientX = _a.clientX, clientY = _a.clientY;
var _b = view.dom.parentNode.getBoundingClientRect(), left = _b.left, top_1 = _b.top;
var inTableHead = tableCell2.nodeName === "TH";
eventEmitter.emit("contextmenu", {
pos: { left: clientX - left + 10 + "px", top: clientY - top_1 + 30 + "px" },
menuGroups: getContextMenuGroups(eventEmitter, inTableHead),
tableCell: tableCell2
});
return true;
}
return false;
}
}
}
});
}
function task() {
return new Plugin({
props: {
handleDOMEvents: {
mousedown: function(view, ev) {
var _a = ev, clientX = _a.clientX, clientY = _a.clientY;
var mousePos = view.posAtCoords({ left: clientX, top: clientY });
if (mousePos) {
var _b = view.state, doc3 = _b.doc, tr = _b.tr;
var currentPos = doc3.resolve(mousePos.pos);
var listItem2 = findListItem(currentPos);
var target2 = ev.target;
var style = getComputedStyle(target2, ":before");
var _c = ev, offsetX = _c.offsetX, offsetY = _c.offsetY;
if (!listItem2 || !isPositionInBox(style, offsetX, offsetY)) {
return false;
}
ev.preventDefault();
var offset = currentPos.before(listItem2.depth);
var attrs = listItem2.node.attrs;
tr.setNodeMarkup(offset, null, __assign$1(__assign$1({}, attrs), { checked: !attrs.checked }));
view.dispatch(tr);
return true;
}
return false;
}
}
}
});
}
var EXCEPT_TYPES = ["image", "link", "customBlock", "frontMatter"];
var MARK_TYPES = ["strong", "strike", "emph", "code"];
var LIST_TYPES = ["bulletList", "orderedList", "taskList"];
function getToolbarStateType(node, parentNode2) {
var type = node.type.name;
if (type === "listItem") {
return node.attrs.task ? "taskList" : parentNode2.type.name;
}
if (type.indexOf("table") !== -1) {
return "table";
}
return type;
}
function setListNodeToolbarState(type, nodeTypeState) {
nodeTypeState[type] = { active: true };
LIST_TYPES.filter(function(listName) {
return listName !== type;
}).forEach(function(listType) {
if (nodeTypeState[listType]) {
delete nodeTypeState[listType];
}
});
}
function setMarkTypeStates(from2, to, schema, toolbarState) {
MARK_TYPES.forEach(function(type) {
var mark = schema.marks[type];
var marksAtPos = from2.marksAcross(to) || [];
var foundMark = !!mark.isInSet(marksAtPos);
if (foundMark) {
toolbarState[type] = { active: true };
}
});
}
function getToolbarState(selection, doc3, schema) {
var $from = selection.$from, $to = selection.$to, from2 = selection.from, to = selection.to;
var toolbarState = {
indent: { active: false, disabled: true },
outdent: { active: false, disabled: true }
};
doc3.nodesBetween(from2, to, function(node, _, parentNode2) {
var type = getToolbarStateType(node, parentNode2);
if (includes(EXCEPT_TYPES, type)) {
return;
}
if (includes(LIST_TYPES, type)) {
setListNodeToolbarState(type, toolbarState);
toolbarState.indent.disabled = false;
toolbarState.outdent.disabled = false;
} else if (type === "paragraph" || type === "text") {
setMarkTypeStates($from, $to, schema, toolbarState);
} else {
toolbarState[type] = { active: true };
}
});
return toolbarState;
}
function toolbarStateHighlight(eventEmitter) {
return new Plugin({
view: function() {
return {
update: function(view) {
var _a = view.state, selection = _a.selection, doc3 = _a.doc, schema = _a.schema;
eventEmitter.emit("changeToolbarState", {
toolbarState: getToolbarState(selection, doc3, schema)
});
}
};
}
});
}
var CustomBlockView = (
/** @class */
(function() {
function CustomBlockView2(node, view, getPos, toDOMAdaptor) {
var _this = this;
this.openEditor = function() {
if (_this.innerEditorView) {
throw new Error("The editor is already opened.");
}
_this.dom.draggable = false;
_this.wrapper.style.display = "none";
_this.innerViewContainer.style.display = "block";
_this.innerEditorView = new EditorView(_this.innerViewContainer, {
state: EditorState.create({
doc: _this.node,
plugins: [
keymap({
"Mod-z": function() {
return undo(_this.innerEditorView.state, _this.innerEditorView.dispatch);
},
"Shift-Mod-z": function() {
return redo(_this.innerEditorView.state, _this.innerEditorView.dispatch);
},
Tab: function(state, dispatch) {
dispatch(state.tr.insertText(" "));
return true;
},
Enter: newlineInCode,
Escape: function() {
_this.cancelEditing();
return true;
},
"Ctrl-Enter": function() {
_this.saveAndFinishEditing();
return true;
}
}),
history()
]
}),
dispatchTransaction: function(tr) {
return _this.dispatchInner(tr);
},
handleDOMEvents: {
mousedown: function() {
if (_this.editorView.hasFocus()) {
_this.innerEditorView.focus();
}
return true;
},
blur: function() {
_this.saveAndFinishEditing();
return true;
}
}
});
_this.innerEditorView.focus();
};
this.node = node;
this.editorView = view;
this.getPos = getPos;
this.toDOMAdaptor = toDOMAdaptor;
this.innerEditorView = null;
this.canceled = false;
this.dom = document.createElement("div");
this.dom.className = cls("custom-block");
this.wrapper = document.createElement("div");
this.wrapper.className = cls("custom-block-view");
this.createInnerViewContainer();
this.renderCustomBlock();
this.dom.appendChild(this.innerViewContainer);
this.dom.appendChild(this.wrapper);
}
CustomBlockView2.prototype.renderToolArea = function() {
var _this = this;
var tool = document.createElement("div");
var span = document.createElement("span");
var button = document.createElement("button");
tool.className = "tool";
span.textContent = this.node.attrs.info;
span.className = "info";
button.type = "button";
button.addEventListener("click", function() {
return _this.openEditor();
});
tool.appendChild(span);
tool.appendChild(button);
this.wrapper.appendChild(tool);
};
CustomBlockView2.prototype.renderCustomBlock = function() {
var toDOMNode = this.toDOMAdaptor.getToDOMNode(this.node.attrs.info);
if (toDOMNode) {
var node = toDOMNode(this.node);
while (this.wrapper.hasChildNodes()) {
this.wrapper.removeChild(this.wrapper.lastChild);
}
if (node) {
this.wrapper.appendChild(node);
}
this.renderToolArea();
}
};
CustomBlockView2.prototype.createInnerViewContainer = function() {
this.innerViewContainer = document.createElement("div");
this.innerViewContainer.className = cls("custom-block-editor");
this.innerViewContainer.style.display = "none";
};
CustomBlockView2.prototype.closeEditor = function() {
if (this.innerEditorView) {
this.innerEditorView.destroy();
this.innerEditorView = null;
this.innerViewContainer.style.display = "none";
}
this.wrapper.style.display = "block";
};
CustomBlockView2.prototype.saveAndFinishEditing = function() {
var to = this.editorView.state.selection.to;
var outerState = this.editorView.state;
this.editorView.dispatch(outerState.tr.setSelection(createTextSelection(outerState.tr, to)));
this.editorView.focus();
this.renderCustomBlock();
this.closeEditor();
};
CustomBlockView2.prototype.cancelEditing = function() {
var undoableCount = undoDepth(this.innerEditorView.state);
this.canceled = true;
while (undoableCount--) {
undo(this.innerEditorView.state, this.innerEditorView.dispatch);
undo(this.editorView.state, this.editorView.dispatch);
}
this.canceled = false;
var to = this.editorView.state.selection.to;
var outerState = this.editorView.state;
this.editorView.dispatch(outerState.tr.setSelection(TextSelection.create(outerState.doc, to)));
this.editorView.focus();
this.closeEditor();
};
CustomBlockView2.prototype.dispatchInner = function(tr) {
var _a = this.innerEditorView.state.applyTransaction(tr), state = _a.state, transactions = _a.transactions;
this.innerEditorView.updateState(state);
if (!this.canceled && isFunction_1(this.getPos)) {
var outerTr = this.editorView.state.tr;
var offsetMap = StepMap.offset(this.getPos() + 1);
for (var i = 0; i < transactions.length; i += 1) {
var steps = transactions[i].steps;
for (var j = 0; j < steps.length; j += 1) {
outerTr.step(steps[j].map(offsetMap));
}
}
if (outerTr.docChanged) {
this.editorView.dispatch(outerTr);
}
}
};
CustomBlockView2.prototype.update = function(node) {
if (!node.sameMarkup(this.node)) {
return false;
}
this.node = node;
if (!this.innerEditorView) {
this.renderCustomBlock();
}
return true;
};
CustomBlockView2.prototype.stopEvent = function(event) {
return !!this.innerEditorView && !!event.target && this.innerEditorView.dom.contains(event.target);
};
CustomBlockView2.prototype.ignoreMutation = function() {
return true;
};
CustomBlockView2.prototype.destroy = function() {
this.dom.removeEventListener("dblclick", this.openEditor);
this.closeEditor();
};
return CustomBlockView2;
})()
);
var IMAGE_LINK_CLASS_NAME = "image-link";
var ImageView = (
/** @class */
(function() {
function ImageView2(node, view, getPos, eventEmitter) {
var _this = this;
var _a;
this.handleMousedown = function(ev) {
ev.preventDefault();
var target2 = ev.target, offsetX = ev.offsetX, offsetY = ev.offsetY;
if (_this.imageLink && isFunction_1(_this.getPos) && hasClass_1(target2, IMAGE_LINK_CLASS_NAME)) {
var style = getComputedStyle(target2, ":before");
ev.stopPropagation();
if (isPositionInBox(style, offsetX, offsetY)) {
var tr = _this.view.state.tr;
var pos = _this.getPos();
tr.setSelection(createTextSelection(tr, pos, pos + 1));
_this.view.dispatch(tr);
_this.eventEmitter.emit("openPopup", "link", _this.imageLink.attrs);
}
}
};
this.node = node;
this.view = view;
this.getPos = getPos;
this.eventEmitter = eventEmitter;
this.imageLink = (_a = node.marks.filter(function(_a2) {
var type = _a2.type;
return type.name === "link";
})[0]) !== null && _a !== void 0 ? _a : null;
this.dom = this.createElement();
this.bindEvent();
}
ImageView2.prototype.createElement = function() {
var image2 = this.createImageElement(this.node);
if (this.imageLink) {
var wrapper = document.createElement("span");
wrapper.className = IMAGE_LINK_CLASS_NAME;
wrapper.appendChild(image2);
return wrapper;
}
return image2;
};
ImageView2.prototype.createImageElement = function(node) {
var image2 = document.createElement("img");
var _a = node.attrs, imageUrl = _a.imageUrl, altText = _a.altText;
var attrs = getCustomAttrs(node.attrs);
image2.src = imageUrl;
if (altText) {
image2.alt = altText;
}
setAttributes(attrs, image2);
return image2;
};
ImageView2.prototype.bindEvent = function() {
if (this.imageLink) {
this.dom.addEventListener("mousedown", this.handleMousedown);
}
};
ImageView2.prototype.stopEvent = function() {
return true;
};
ImageView2.prototype.destroy = function() {
if (this.imageLink) {
this.dom.removeEventListener("mousedown", this.handleMousedown);
}
};
return ImageView2;
})()
);
var WRAPPER_CLASS_NAME = "toastui-editor-ww-code-block";
var CODE_BLOCK_LANG_CLASS_NAME = "toastui-editor-ww-code-block-language";
var CodeBlockView = (
/** @class */
(function() {
function CodeBlockView2(node, view, getPos, eventEmitter) {
var _this = this;
this.contentDOM = null;
this.input = null;
this.timer = null;
this.handleMousedown = function(ev) {
var target2 = ev.target;
var style = getComputedStyle(target2, ":after");
if (style.backgroundImage !== "none" && isFunction_1(_this.getPos)) {
var _a = _this.view.coordsAtPos(_this.getPos()), top_1 = _a.top, right = _a.right;
_this.createLanguageEditor({ top: top_1, right });
}
};
this.handleKeydown = function(ev) {
if (ev.key === "Enter" && _this.input) {
ev.preventDefault();
_this.changeLanguage();
}
};
this.node = node;
this.view = view;
this.getPos = getPos;
this.eventEmitter = eventEmitter;
this.createElement();
this.bindDOMEvent();
this.bindEvent();
}
CodeBlockView2.prototype.createElement = function() {
var language = this.node.attrs.language;
var wrapper = document.createElement("div");
wrapper.setAttribute("data-language", language || "text");
wrapper.className = WRAPPER_CLASS_NAME;
var pre2 = this.createCodeBlockElement();
var code2 = pre2.firstChild;
wrapper.appendChild(pre2);
this.dom = wrapper;
this.contentDOM = code2;
};
CodeBlockView2.prototype.createCodeBlockElement = function() {
var pre2 = document.createElement("pre");
var code2 = document.createElement("code");
var language = this.node.attrs.language;
var attrs = getCustomAttrs(this.node.attrs);
if (language) {
code2.setAttribute("data-language", language);
}
setAttributes(attrs, pre2);
pre2.appendChild(code2);
return pre2;
};
CodeBlockView2.prototype.createLanguageEditor = function(_a) {
var _this = this;
var top2 = _a.top, right = _a.right;
var wrapper = document.createElement("span");
wrapper.className = CODE_BLOCK_LANG_CLASS_NAME;
var input = document.createElement("input");
input.type = "text";
input.value = this.node.attrs.language;
wrapper.appendChild(input);
this.view.dom.parentElement.appendChild(wrapper);
var wrpperWidth = wrapper.clientWidth;
css_1(wrapper, {
top: top2 + 10 + "px",
left: right - wrpperWidth - 10 + "px",
width: wrpperWidth + "px"
});
this.input = input;
this.input.addEventListener("blur", function() {
return _this.changeLanguage();
});
this.input.addEventListener("keydown", this.handleKeydown);
this.clearTimer();
this.timer = setTimeout(function() {
_this.input.focus();
});
};
CodeBlockView2.prototype.bindDOMEvent = function() {
if (this.dom) {
this.dom.addEventListener("click", this.handleMousedown);
}
};
CodeBlockView2.prototype.bindEvent = function() {
var _this = this;
this.eventEmitter.listen("scroll", function() {
if (_this.input) {
_this.reset();
}
});
};
CodeBlockView2.prototype.changeLanguage = function() {
if (this.input && isFunction_1(this.getPos)) {
var value = this.input.value;
this.reset();
var pos = this.getPos();
var tr = this.view.state.tr;
tr.setNodeMarkup(pos, null, { language: value });
this.view.dispatch(tr);
}
};
CodeBlockView2.prototype.reset = function() {
var _a;
if ((_a = this.input) === null || _a === void 0 ? void 0 : _a.parentElement) {
var parent_1 = this.input.parentElement;
this.input = null;
removeNode$1(parent_1);
}
};
CodeBlockView2.prototype.clearTimer = function() {
if (this.timer) {
clearTimeout(this.timer);
this.timer = null;
}
};
CodeBlockView2.prototype.stopEvent = function() {
return true;
};
CodeBlockView2.prototype.update = function(node) {
if (!node.sameMarkup(this.node)) {
return false;
}
this.node = node;
return true;
};
CodeBlockView2.prototype.destroy = function() {
this.reset();
this.clearTimer();
if (this.dom) {
this.dom.removeEventListener("click", this.handleMousedown);
}
};
return CodeBlockView2;
})()
);
var reMSOListClassName = /MsoListParagraph/;
var reMSOStylePrefix = /style=(.|\n)*mso-/;
var reMSOListStyle = /mso-list:(.*)/;
var reMSOTagName = /O:P/;
var reMSOListBullet = /^(n|u|l)/;
var MSO_CLASS_NAME_LIST_PARA = "p.MsoListParagraph";
function isFromMso(html2) {
return reMSOStylePrefix.test(html2);
}
function getListItemContents(para2) {
var removedNodes = [];
var walker = document.createTreeWalker(para2, 1, null, false);
while (walker.nextNode()) {
var node = walker.currentNode;
if (isElemNode(node)) {
var _a = node, outerHTML = _a.outerHTML, textContent = _a.textContent;
var msoSpan = reMSOStylePrefix.test(outerHTML);
var bulletSpan = reMSOListStyle.test(outerHTML);
if (msoSpan && !bulletSpan && textContent) {
removedNodes.push([node, true]);
} else if (reMSOTagName.test(node.nodeName) || msoSpan && !textContent || bulletSpan) {
removedNodes.push([node, false]);
}
}
}
removedNodes.forEach(function(_a2) {
var node2 = _a2[0], isUnwrap = _a2[1];
if (isUnwrap) {
unwrapNode(node2);
} else {
removeNode$1(node2);
}
});
return para2.innerHTML.trim();
}
function createListItemDataFromParagraph(para2, index2) {
var styleAttr = para2.getAttribute("style");
if (styleAttr) {
var _a = styleAttr.match(reMSOListStyle), listItemInfo = _a[1];
var _b = listItemInfo.trim().split(" "), levelStr = _b[1];
var level = parseInt(levelStr.replace("level", ""), 10);
var unordered = reMSOListBullet.test(para2.textContent || "");
return {
id: index2,
level,
prev: null,
parent: null,
children: [],
unordered,
contents: getListItemContents(para2)
};
}
return null;
}
function addListItemDetailData(data, prevData) {
if (prevData.level < data.level) {
prevData.children.push(data);
data.parent = prevData;
} else {
while (prevData) {
if (prevData.level === data.level) {
break;
}
prevData = prevData.parent;
}
if (prevData) {
data.prev = prevData;
data.parent = prevData.parent;
if (data.parent) {
data.parent.children.push(data);
}
}
}
}
function createListData(paras) {
var listData = [];
paras.forEach(function(para2, index2) {
var prevListItemData = listData[index2 - 1];
var listItemData = createListItemDataFromParagraph(para2, index2);
if (listItemData) {
if (prevListItemData) {
addListItemDetailData(listItemData, prevListItemData);
}
listData.push(listItemData);
}
});
return listData;
}
function makeList(listData) {
var listTagName = listData[0].unordered ? "ul" : "ol";
var list2 = document.createElement(listTagName);
listData.forEach(function(data) {
var children = data.children, contents = data.contents;
var listItem2 = document.createElement("li");
listItem2.innerHTML = contents;
list2.appendChild(listItem2);
if (children.length) {
list2.appendChild(makeList(children));
}
});
return list2;
}
function makeListFromParagraphs(paras) {
var listData = createListData(paras);
var rootChildren = listData.filter(function(_a) {
var parent = _a.parent;
return !parent;
});
return makeList(rootChildren);
}
function isMsoListParagraphEnd(node) {
while (node) {
if (isElemNode(node)) {
break;
}
node = node.nextSibling;
}
return node ? !reMSOListClassName.test(node.className) : true;
}
function convertMsoParagraphsToList(html2) {
var container = document.createElement("div");
container.innerHTML = html2;
var paras = [];
var foundParas = findNodes(container, MSO_CLASS_NAME_LIST_PARA);
foundParas.forEach(function(para2) {
var msoListParaEnd = isMsoListParagraphEnd(para2.nextSibling);
paras.push(para2);
if (msoListParaEnd) {
var list2 = makeListFromParagraphs(paras);
var nextSibling = para2.nextSibling;
if (nextSibling) {
insertBeforeNode(list2, nextSibling);
} else {
appendNodes(container, list2);
}
paras = [];
}
removeNode$1(para2);
});
var extraHTML = foundParas.length ? "" : "";
return "" + extraHTML + container.innerHTML;
}
var START_FRAGMENT_COMMENT = "";
var END_FRAGMENT_COMMENT = "";
function getContentBetweenFragmentComments(html2) {
var startFragmentIndex = html2.indexOf(START_FRAGMENT_COMMENT);
var endFragmentIndex = html2.lastIndexOf(END_FRAGMENT_COMMENT);
if (startFragmentIndex > -1 && endFragmentIndex > -1) {
html2 = html2.slice(startFragmentIndex + START_FRAGMENT_COMMENT.length, endFragmentIndex);
}
return html2.replace(/ ]*>/g, ALTERNATIVE_TAG_FOR_BR);
}
function convertMsoTableToCompletedTable(html2) {
if (/<\/td>((?!<\/tr>)[\s\S])*$/i.test(html2)) {
html2 = "
" + html2 + "
";
}
if (/<\/tr>((?!<\/table>)[\s\S])*$/i.test(html2)) {
html2 = "
" + html2 + "
";
}
return html2;
}
function changePastedHTML(html2) {
html2 = getContentBetweenFragmentComments(html2);
html2 = convertMsoTableToCompletedTable(html2);
if (isFromMso(html2)) {
html2 = convertMsoParagraphsToList(html2);
}
return html2;
}
function getMaxColumnCount(rows) {
var row = rows.reduce(function(prevRow, currentRow) {
return prevRow.childCount > currentRow.childCount ? prevRow : currentRow;
});
return row.childCount;
}
function createCells(orgRow, maxColumnCount, cell) {
var cells = [];
var cellCount = orgRow.childCount;
for (var colIdx = 0; colIdx < cellCount; colIdx += 1) {
if (!orgRow.child(colIdx).attrs.extended) {
var copiedCell = colIdx < cellCount ? cell.create(orgRow.child(colIdx).attrs, orgRow.child(colIdx).content) : cell.createAndFill();
cells.push(copiedCell);
}
}
return cells;
}
function copyTableHeadRow(orgRow, maxColumnCount, schema) {
var _a = schema.nodes, tableRow2 = _a.tableRow, tableHeadCell = _a.tableHeadCell;
var cells = createCells(orgRow, maxColumnCount, tableHeadCell);
return tableRow2.create(null, cells);
}
function copyTableBodyRow(orgRow, maxColumnCount, schema) {
var _a = schema.nodes, tableRow2 = _a.tableRow, tableBodyCell = _a.tableBodyCell;
var cells = createCells(orgRow, maxColumnCount, tableBodyCell);
return tableRow2.create(null, cells);
}
function creatTableBodyDummyRow(columnCount, schema) {
var _a = schema.nodes, tableRow2 = _a.tableRow, tableBodyCell = _a.tableBodyCell;
var cells = [];
for (var columnIndex = 0; columnIndex < columnCount; columnIndex += 1) {
var dummyCell = tableBodyCell.createAndFill();
cells.push(dummyCell);
}
return tableRow2.create({ dummyRowForPasting: true }, cells);
}
function createRowsFromPastingTable(tableContent) {
var tableHeadRows = [];
var tableBodyRows = [];
if (tableContent.firstChild.type.name === "tableHead") {
var tableHead2 = tableContent.firstChild;
tableHead2.forEach(function(row) {
return tableHeadRows.push(row);
});
}
if (tableContent.lastChild.type.name === "tableBody") {
var tableBody2 = tableContent.lastChild;
tableBody2.forEach(function(row) {
return tableBodyRows.push(row);
});
}
return __spreadArray$1(__spreadArray$1([], tableHeadRows), tableBodyRows);
}
function createTableHead(tableHeadRow, maxColumnCount, schema) {
var copiedRow = copyTableHeadRow(tableHeadRow, maxColumnCount, schema);
return schema.nodes.tableHead.create(null, copiedRow);
}
function createTableBody(tableBodyRows, maxColumnCount, schema) {
var copiedRows = tableBodyRows.map(function(tableBodyRow) {
return copyTableBodyRow(tableBodyRow, maxColumnCount, schema);
});
if (!tableBodyRows.length) {
var dummyTableRow = creatTableBodyDummyRow(maxColumnCount, schema);
copiedRows.push(dummyTableRow);
}
return schema.nodes.tableBody.create(null, copiedRows);
}
function createTableFromPastingTable(rows, schema, startFromBody, isInTable) {
var columnCount = getMaxColumnCount(rows);
if (startFromBody && isInTable) {
return schema.nodes.table.create(null, [createTableBody(rows, columnCount, schema)]);
}
var tableHeadRow = rows[0];
var tableBodyRows = rows.slice(1);
var nodes = [createTableHead(tableHeadRow, columnCount, schema)];
if (tableBodyRows.length) {
nodes.push(createTableBody(tableBodyRows, columnCount, schema));
}
return schema.nodes.table.create(null, nodes);
}
function changePastedSlice(slice2, schema, isInTable) {
var nodes = [];
var content = slice2.content, openStart = slice2.openStart, openEnd = slice2.openEnd;
content.forEach(function(node) {
if (node.type.name === "table") {
var tableContent = getTableContentFromSlice(new Slice(Fragment.from(node), 0, 0));
if (tableContent) {
var rows = createRowsFromPastingTable(tableContent);
var startFromBody = tableContent.firstChild.type.name === "tableBody";
var table2 = createTableFromPastingTable(rows, schema, startFromBody, isInTable);
nodes.push(table2);
}
} else {
nodes.push(node);
}
});
return new Slice(Fragment.from(nodes), openStart, openEnd);
}
var DUMMY_CELL_SIZE = 4;
var TR_NODES_SIZE = 2;
function getDummyCellSize(dummyCellCount) {
return dummyCellCount * DUMMY_CELL_SIZE;
}
function createPastingCells(tableContent, curSelectionInfo, schema) {
var pastingRows = [];
var pastingTableRows = createRowsFromPastingTable(tableContent);
var columnCount = pastingTableRows[0].childCount;
var rowCount = pastingTableRows.length;
var startToTableHead = curSelectionInfo.startRowIdx === 0;
var slicedRows = pastingTableRows.slice(0, rowCount);
if (startToTableHead) {
var tableHeadRow = slicedRows.shift();
if (tableHeadRow) {
var content = copyTableHeadRow(tableHeadRow, columnCount, schema).content;
pastingRows.push(content);
}
}
slicedRows.forEach(function(tableBodyRow) {
if (!tableBodyRow.attrs.dummyRowForPasting) {
var content2 = copyTableBodyRow(tableBodyRow, columnCount, schema).content;
pastingRows.push(content2);
}
});
return pastingRows;
}
function getPastingRangeInfo(map3, _a, pastingCells) {
var startRowIdx = _a.startRowIdx, startColIdx = _a.startColIdx;
var pastingRowCount = pastingCells.length;
var pastingColumnCount = 0;
var _loop_1 = function(i2) {
var columnCount = pastingCells[i2].childCount;
pastingCells[i2].forEach(function(_a2) {
var attrs = _a2.attrs;
var colspan = attrs.colspan;
if (colspan > 1) {
columnCount += colspan - 1;
}
});
pastingColumnCount = Math.max(pastingColumnCount, columnCount);
};
for (var i = 0; i < pastingRowCount; i += 1) {
_loop_1(i);
}
var endRowIdx = startRowIdx + pastingRowCount - 1;
var endColIdx = startColIdx + pastingColumnCount - 1;
var addedRowCount = Math.max(endRowIdx + 1 - map3.totalRowCount, 0);
var addedColumnCount = Math.max(endColIdx + 1 - map3.totalColumnCount, 0);
return {
startRowIdx,
startColIdx,
endRowIdx,
endColIdx,
addedRowCount,
addedColumnCount
};
}
function addReplacedOffsets(_a, cellsOffsets) {
var startRowIdx = _a.startRowIdx, startColIdx = _a.startColIdx, endRowIdx = _a.endRowIdx, endColIdx = _a.endColIdx, addedRowCount = _a.addedRowCount, addedColumnCount = _a.addedColumnCount;
for (var rowIdx = startRowIdx; rowIdx <= endRowIdx - addedRowCount; rowIdx += 1) {
cellsOffsets.push({
rowIdx,
startColIdx,
endColIdx: endColIdx - addedColumnCount
});
}
}
function expandColumns(tr, schema, map3, _a, cellsOffsets) {
var startRowIdx = _a.startRowIdx, startColIdx = _a.startColIdx, endRowIdx = _a.endRowIdx, endColIdx = _a.endColIdx, addedRowCount = _a.addedRowCount, addedColumnCount = _a.addedColumnCount;
var totalRowCount = map3.totalRowCount;
var index2 = 0;
for (var rowIdx = 0; rowIdx < totalRowCount; rowIdx += 1) {
var _b = map3.getCellInfo(rowIdx, endColIdx - addedColumnCount), offset = _b.offset, nodeSize2 = _b.nodeSize;
var insertOffset = tr.mapping.map(offset + nodeSize2);
var cells = createDummyCells(addedColumnCount, rowIdx, schema);
tr.insert(insertOffset, cells);
if (rowIdx >= startRowIdx && rowIdx <= endRowIdx - addedRowCount) {
var cellInfo = map3.getCellInfo(rowIdx, endColIdx - addedColumnCount);
var startCellOffset = tr.mapping.map(cellInfo.offset);
var endCellOffset = insertOffset + getDummyCellSize(addedColumnCount);
cellsOffsets[index2] = {
rowIdx,
startColIdx,
endColIdx,
dummyOffsets: [startCellOffset, endCellOffset]
};
index2 += 1;
}
}
}
function expandRows(tr, schema, map3, _a, cellsOffsets) {
var addedRowCount = _a.addedRowCount, addedColumnCount = _a.addedColumnCount, startColIdx = _a.startColIdx, endColIdx = _a.endColIdx;
var mapStart = tr.mapping.maps.length;
var tableEndPos = map3.tableEndOffset - 2;
var rows = createTableBodyRows(addedRowCount, map3.totalColumnCount + addedColumnCount, schema);
var startOffset = tableEndPos;
tr.insert(tr.mapping.slice(mapStart).map(startOffset), rows);
for (var rowIndex = 0; rowIndex < addedRowCount; rowIndex += 1) {
var startCellOffset = startOffset + getDummyCellSize(startColIdx) + 1;
var endCellOffset = startOffset + getDummyCellSize(endColIdx + 1) + 1;
var nextCellOffset = startOffset + getDummyCellSize(map3.totalColumnCount + addedColumnCount) + TR_NODES_SIZE;
cellsOffsets.push({
rowIdx: rowIndex + map3.totalRowCount,
startColIdx,
endColIdx,
dummyOffsets: [startCellOffset, endCellOffset]
});
startOffset = nextCellOffset;
}
}
function replaceCells(tr, pastingRows, cellsOffsets, map3) {
var mapStart = tr.mapping.maps.length;
cellsOffsets.forEach(function(offsets, index2) {
var rowIdx = offsets.rowIdx, startColIdx = offsets.startColIdx, endColIdx = offsets.endColIdx, dummyOffsets = offsets.dummyOffsets;
var mapping = tr.mapping.slice(mapStart);
var cells = new Slice(pastingRows[index2], 0, 0);
var from2 = dummyOffsets ? dummyOffsets[0] : map3.getCellStartOffset(rowIdx, startColIdx);
var to = dummyOffsets ? dummyOffsets[1] : map3.getCellEndOffset(rowIdx, endColIdx);
tr.replace(mapping.map(from2), mapping.map(to), cells);
});
}
function pasteToTable(view, slice2) {
var _a = view.state, selection = _a.selection, schema = _a.schema, tr = _a.tr;
var _b = getResolvedSelection(selection), anchor = _b.anchor, head = _b.head;
if (anchor && head) {
var tableContent = getTableContentFromSlice(slice2);
if (!tableContent) {
return false;
}
var map3 = TableOffsetMap.create(anchor);
var curSelectionInfo = map3.getRectOffsets(anchor, head);
var pastingCells = createPastingCells(tableContent, curSelectionInfo, schema);
var pastingInfo = getPastingRangeInfo(map3, curSelectionInfo, pastingCells);
var cellsOffsets = [];
if (canMerge(map3, pastingInfo)) {
addReplacedOffsets(pastingInfo, cellsOffsets);
if (pastingInfo.addedColumnCount) {
expandColumns(tr, schema, map3, pastingInfo, cellsOffsets);
}
if (pastingInfo.addedRowCount) {
expandRows(tr, schema, map3, pastingInfo, cellsOffsets);
}
replaceCells(tr, pastingCells, cellsOffsets, map3);
view.dispatch(tr);
setSelection(view, cellsOffsets, map3.getCellInfo(0, 0).offset);
}
return true;
}
return false;
}
function setSelection(view, cellsOffsets, pos) {
var _a = view.state, tr = _a.tr, doc3 = _a.doc;
var map3 = TableOffsetMap.create(doc3.resolve(pos));
var _b = cellsOffsets[0], startRowIdx = _b.rowIdx, startColIdx = _b.startColIdx;
var _c = last$1(cellsOffsets), endRowIdx = _c.rowIdx, endColIdx = _c.endColIdx;
var startOffset = map3.getCellInfo(startRowIdx, startColIdx).offset;
var endOffset = map3.getCellInfo(endRowIdx, endColIdx).offset;
view.dispatch(tr.setSelection(new CellSelection(doc3.resolve(startOffset), doc3.resolve(endOffset))));
}
function canMerge(map3, pastingInfo) {
var ranges = map3.getSpannedOffsets(pastingInfo);
var _a = getRowAndColumnCount(ranges), rowCount = _a.rowCount, columnCount = _a.columnCount;
var _b = getRowAndColumnCount(pastingInfo), pastingRowCount = _b.rowCount, pastingColumnCount = _b.columnCount;
return rowCount === pastingRowCount && columnCount === pastingColumnCount;
}
var Doc = (
/** @class */
(function(_super) {
__extends$1(Doc2, _super);
function Doc2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Doc2.prototype, "name", {
get: function() {
return "doc";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Doc2.prototype, "schema", {
get: function() {
return {
content: "block+"
};
},
enumerable: false,
configurable: true
});
return Doc2;
})(Node$2)
);
var Paragraph = (
/** @class */
(function(_super) {
__extends$1(Paragraph2, _super);
function Paragraph2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Paragraph2.prototype, "name", {
get: function() {
return "paragraph";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Paragraph2.prototype, "schema", {
get: function() {
return {
content: "inline*",
group: "block",
attrs: __assign$1({}, getDefaultCustomAttrs()),
parseDOM: [{ tag: "p" }],
toDOM: function(_a) {
var attrs = _a.attrs;
return ["p", getCustomAttrs(attrs), 0];
}
};
},
enumerable: false,
configurable: true
});
return Paragraph2;
})(Node$2)
);
var reSoftTabLen = /\s{1,4}$/;
var Text = (
/** @class */
(function(_super) {
__extends$1(Text2, _super);
function Text2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Text2.prototype, "name", {
get: function() {
return "text";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Text2.prototype, "schema", {
get: function() {
return {
group: "inline"
};
},
enumerable: false,
configurable: true
});
Text2.prototype.addSpaces = function() {
return function(_a, dispatch) {
var selection = _a.selection, tr = _a.tr;
var $from = selection.$from, $to = selection.$to;
var range2 = $from.blockRange($to);
if (range2 && !isInListNode($from) && !isInTableNode($from)) {
dispatch(tr.insertText(" ", $from.pos, $to.pos));
return true;
}
return false;
};
};
Text2.prototype.removeSpaces = function() {
return function(_a, dispatch) {
var selection = _a.selection, tr = _a.tr;
var $from = selection.$from, $to = selection.$to, from2 = selection.from;
var range2 = $from.blockRange($to);
if (range2 && !isInListNode($from) && !isInTableNode($from)) {
var nodeBefore = $from.nodeBefore;
if (nodeBefore && nodeBefore.isText) {
var text2 = nodeBefore.text;
var removedSpaceText = text2.replace(reSoftTabLen, "");
var spaces = text2.length - removedSpaceText.length;
dispatch(tr.delete(from2 - spaces, from2));
return true;
}
}
return false;
};
};
Text2.prototype.keymaps = function() {
return {
Tab: this.addSpaces(),
"Shift-Tab": this.removeSpaces()
};
};
return Text2;
})(Node$2)
);
var Heading = (
/** @class */
(function(_super) {
__extends$1(Heading2, _super);
function Heading2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Heading2.prototype, "name", {
get: function() {
return "heading";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Heading2.prototype, "levels", {
get: function() {
return [1, 2, 3, 4, 5, 6];
},
enumerable: false,
configurable: true
});
Object.defineProperty(Heading2.prototype, "schema", {
get: function() {
var parseDOM = this.levels.map(function(level) {
return {
tag: "h" + level,
getAttrs: function(dom) {
var rawHTML = dom.getAttribute("data-raw-html");
return __assign$1({ level }, rawHTML && { rawHTML });
}
};
});
return {
attrs: __assign$1({ level: { default: 1 }, headingType: { default: "atx" }, rawHTML: { default: null } }, getDefaultCustomAttrs()),
content: "inline*",
group: "block",
defining: true,
parseDOM,
toDOM: function(_a) {
var attrs = _a.attrs;
return ["h" + attrs.level, getCustomAttrs(attrs), 0];
}
};
},
enumerable: false,
configurable: true
});
Heading2.prototype.commands = function() {
return function(payload) {
return function(state, dispatch) {
var nodeType = state.schema.nodes[payload.level ? "heading" : "paragraph"];
return setBlockType2(nodeType, payload)(state, dispatch);
};
};
};
return Heading2;
})(Node$2)
);
var CodeBlock = (
/** @class */
(function(_super) {
__extends$1(CodeBlock2, _super);
function CodeBlock2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(CodeBlock2.prototype, "name", {
get: function() {
return "codeBlock";
},
enumerable: false,
configurable: true
});
Object.defineProperty(CodeBlock2.prototype, "schema", {
get: function() {
return {
content: "text*",
group: "block",
attrs: __assign$1({ language: { default: null }, rawHTML: { default: null } }, getDefaultCustomAttrs()),
code: true,
defining: true,
marks: "",
parseDOM: [
{
tag: "pre",
preserveWhitespace: "full",
getAttrs: function(dom) {
var rawHTML = dom.getAttribute("data-raw-html");
var child = dom.firstElementChild;
return __assign$1({ language: (child === null || child === void 0 ? void 0 : child.getAttribute("data-language")) || null }, rawHTML && { rawHTML });
}
}
],
toDOM: function(_a) {
var attrs = _a.attrs;
return [
attrs.rawHTML || "pre",
["code", __assign$1({ "data-language": attrs.language }, getCustomAttrs(attrs)), 0]
];
}
};
},
enumerable: false,
configurable: true
});
CodeBlock2.prototype.commands = function() {
return function() {
return function(state, dispatch) {
return setBlockType2(state.schema.nodes.codeBlock)(state, dispatch);
};
};
};
CodeBlock2.prototype.moveCursor = function(direction) {
var _this = this;
return function(state, dispatch) {
var tr = state.tr, doc3 = state.doc, schema = state.schema;
var $from = state.selection.$from;
var view = _this.context.view;
if (view.endOfTextblock(direction) && $from.node().type.name === "codeBlock") {
var lines = $from.parent.textContent.split("\n");
var offset = direction === "up" ? $from.start() : $from.end();
var range2 = direction === "up" ? [offset, lines[0].length + offset] : [offset - last$1(lines).length, offset];
var pos = doc3.resolve(direction === "up" ? $from.before() : $from.after());
var node = direction === "up" ? pos.nodeBefore : pos.nodeAfter;
if (between$1($from.pos, range2[0], range2[1]) && !node) {
var newTr = addParagraph(tr, pos, schema);
if (newTr) {
dispatch(newTr);
return true;
}
}
}
return false;
};
};
CodeBlock2.prototype.keymaps = function() {
var codeCommand = this.commands()();
return {
"Shift-Mod-p": codeCommand,
"Shift-Mod-P": codeCommand,
ArrowUp: this.moveCursor("up"),
ArrowDown: this.moveCursor("down")
};
};
return CodeBlock2;
})(Node$2)
);
var BulletList = (
/** @class */
(function(_super) {
__extends$1(BulletList2, _super);
function BulletList2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(BulletList2.prototype, "name", {
get: function() {
return "bulletList";
},
enumerable: false,
configurable: true
});
Object.defineProperty(BulletList2.prototype, "schema", {
get: function() {
return {
content: "listItem+",
group: "block",
attrs: __assign$1({ rawHTML: { default: null } }, getDefaultCustomAttrs()),
parseDOM: [createDOMInfoParsedRawHTML("ul")],
toDOM: function(_a) {
var attrs = _a.attrs;
return ["ul", getCustomAttrs(attrs), 0];
}
};
},
enumerable: false,
configurable: true
});
BulletList2.prototype.changeList = function() {
return function(state, dispatch) {
return changeList(state.schema.nodes.bulletList)(state, dispatch);
};
};
BulletList2.prototype.commands = function() {
return {
bulletList: this.changeList,
taskList: toggleTask
};
};
BulletList2.prototype.keymaps = function() {
var bulletListCommand = this.changeList();
var _a = getWwCommands(), indent2 = _a.indent, outdent2 = _a.outdent;
return {
"Mod-u": bulletListCommand,
"Mod-U": bulletListCommand,
Tab: indent2(),
"Shift-Tab": outdent2()
};
};
return BulletList2;
})(Node$2)
);
var OrderedList = (
/** @class */
(function(_super) {
__extends$1(OrderedList2, _super);
function OrderedList2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(OrderedList2.prototype, "name", {
get: function() {
return "orderedList";
},
enumerable: false,
configurable: true
});
Object.defineProperty(OrderedList2.prototype, "schema", {
get: function() {
return {
content: "listItem+",
group: "block",
attrs: __assign$1({ order: { default: 1 }, rawHTML: { default: null } }, getDefaultCustomAttrs()),
parseDOM: [
{
tag: "ol",
getAttrs: function(dom) {
var start = dom.getAttribute("start");
var rawHTML = dom.getAttribute("data-raw-html");
return __assign$1({ order: dom.hasAttribute("start") ? Number(start) : 1 }, rawHTML && { rawHTML });
}
}
],
toDOM: function(_a) {
var attrs = _a.attrs;
return [
attrs.rawHTML || "ol",
__assign$1({ start: attrs.order === 1 ? null : attrs.order }, getCustomAttrs(attrs)),
0
];
}
};
},
enumerable: false,
configurable: true
});
OrderedList2.prototype.commands = function() {
return function() {
return function(state, dispatch) {
return changeList(state.schema.nodes.orderedList)(state, dispatch);
};
};
};
OrderedList2.prototype.keymaps = function() {
var orderedListCommand = this.commands()();
var _a = getWwCommands(), indent2 = _a.indent, outdent2 = _a.outdent;
return {
"Mod-o": orderedListCommand,
"Mod-O": orderedListCommand,
Tab: indent2(),
"Shift-Tab": outdent2()
};
};
return OrderedList2;
})(Node$2)
);
var ListItem = (
/** @class */
(function(_super) {
__extends$1(ListItem2, _super);
function ListItem2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(ListItem2.prototype, "name", {
get: function() {
return "listItem";
},
enumerable: false,
configurable: true
});
Object.defineProperty(ListItem2.prototype, "schema", {
get: function() {
return {
content: "paragraph block*",
selectable: false,
attrs: {
task: { default: false },
checked: { default: false },
rawHTML: { default: null }
},
defining: true,
parseDOM: [
{
tag: "li",
getAttrs: function(dom) {
var rawHTML = dom.getAttribute("data-raw-html");
return __assign$1({ task: dom.hasAttribute("data-task"), checked: dom.hasAttribute("data-task-checked") }, rawHTML && { rawHTML });
}
}
],
toDOM: function(_a) {
var attrs = _a.attrs;
var task2 = attrs.task, checked = attrs.checked;
if (!task2) {
return [attrs.rawHTML || "li", 0];
}
var classNames = ["task-list-item"];
if (checked) {
classNames.push("checked");
}
return [
attrs.rawHTML || "li",
__assign$1({ class: classNames.join(" "), "data-task": task2 }, checked && { "data-task-checked": checked }),
0
];
}
};
},
enumerable: false,
configurable: true
});
ListItem2.prototype.liftToPrevListItem = function() {
return function(state, dispatch) {
var selection = state.selection, tr = state.tr, schema = state.schema;
var $from = selection.$from, empty3 = selection.empty;
var listItem2 = schema.nodes.listItem;
var parent = $from.parent;
var listItemParent = $from.node(-1);
if (empty3 && !parent.childCount && listItemParent.type === listItem2) {
if ($from.index(-2) >= 1) {
tr.delete($from.start(-1) - 1, $from.end(-1));
dispatch(tr);
return true;
}
var grandParentListItem = $from.node(-3);
if (grandParentListItem.type === listItem2) {
tr.delete($from.start(-2) - 1, $from.end(-1));
dispatch(tr);
return true;
}
}
return false;
};
};
ListItem2.prototype.keymaps = function() {
var split2 = function(state, dispatch) {
return splitListItem(state.schema.nodes.listItem)(state, dispatch);
};
return {
Backspace: this.liftToPrevListItem(),
Enter: split2
};
};
return ListItem2;
})(Node$2)
);
var BlockQuote = (
/** @class */
(function(_super) {
__extends$1(BlockQuote2, _super);
function BlockQuote2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(BlockQuote2.prototype, "name", {
get: function() {
return "blockQuote";
},
enumerable: false,
configurable: true
});
Object.defineProperty(BlockQuote2.prototype, "schema", {
get: function() {
return {
attrs: __assign$1({ rawHTML: { default: null } }, getDefaultCustomAttrs()),
content: "block+",
group: "block",
parseDOM: [createDOMInfoParsedRawHTML("blockquote")],
toDOM: function(_a) {
var attrs = _a.attrs;
return ["blockquote", getCustomAttrs(attrs), 0];
}
};
},
enumerable: false,
configurable: true
});
BlockQuote2.prototype.commands = function() {
return function() {
return function(state, dispatch) {
return wrapIn(state.schema.nodes.blockQuote)(state, dispatch);
};
};
};
BlockQuote2.prototype.keymaps = function() {
var blockQutoeCommand = this.commands()();
return {
"Alt-q": blockQutoeCommand,
"Alt-Q": blockQutoeCommand
};
};
return BlockQuote2;
})(Node$2)
);
var cellOffsetFnMap = {
left: getLeftCellOffset,
right: getRightCellOffset,
up: getUpCellOffset,
down: getDownCellOffset
};
function isInFirstListItem(pos, doc3, _a) {
var paraDepth = _a[0], listDepth = _a[1];
var listItemNode = doc3.resolve(pos.before(paraDepth - 1));
return listDepth === paraDepth && !listItemNode.nodeBefore;
}
function isInLastListItem(pos) {
var _a;
var depth = pos.depth;
var parentNode2;
while (depth) {
parentNode2 = pos.node(depth);
if (parentNode2.type.name === "tableBodyCell") {
break;
}
if (parentNode2.type.name === "listItem") {
var grandParent = pos.node(depth - 1);
var lastListItem = grandParent.lastChild === parentNode2;
var hasChildren = ((_a = parentNode2.lastChild) === null || _a === void 0 ? void 0 : _a.type.name) !== "paragraph";
if (!lastListItem) {
return false;
}
return !hasChildren;
}
depth -= 1;
}
return false;
}
function canMoveToBeforeCell(direction, _a, from2, doc3, inList) {
var paraDepth = _a[0], listDepth = _a[1], curDepth = _a[2];
if (direction === "left" || direction === "up") {
if (inList && !isInFirstListItem(from2, doc3, [paraDepth, listDepth])) {
return false;
}
var endOffset = from2.before(curDepth);
var nodeBefore = doc3.resolve(endOffset).nodeBefore;
if (nodeBefore) {
return false;
}
}
return true;
}
function canMoveToAfterCell(direction, curDepth, from2, doc3, inList) {
if (direction === "right" || direction === "down") {
if (inList && !isInLastListItem(from2)) {
return false;
}
var endOffset = from2.after(curDepth);
var nodeAfter = doc3.resolve(endOffset).nodeAfter;
if (nodeAfter) {
return false;
}
}
return true;
}
function canMoveBetweenCells(direction, _a, from2, doc3) {
var cellDepth = _a[0], paraDepth = _a[1];
var listDepth = cellDepth + 3;
var inList = paraDepth >= listDepth;
var curDepth = inList ? cellDepth + 1 : paraDepth;
var moveBeforeCell = canMoveToBeforeCell(direction, [paraDepth, listDepth, curDepth], from2, doc3, inList);
var moveAfterCell = canMoveToAfterCell(direction, curDepth, from2, doc3, inList);
return moveBeforeCell && moveAfterCell;
}
function canBeOutOfTable(direction, map3, _a) {
var rowIdx = _a[0], colIdx = _a[1];
var rowspanInfo = map3.getRowspanStartInfo(rowIdx, colIdx);
var inFirstRow = direction === "up" && rowIdx === 0;
var inLastRow = direction === "down" && ((rowspanInfo === null || rowspanInfo === void 0 ? void 0 : rowspanInfo.count) > 1 ? rowIdx + rowspanInfo.count - 1 : rowIdx) === map3.totalRowCount - 1;
return inFirstRow || inLastRow;
}
function addParagraphBeforeTable(tr, map3, schema) {
var tableStartPos = tr.doc.resolve(map3.tableStartOffset - 1);
if (!tableStartPos.nodeBefore) {
return addParagraph(tr, tableStartPos, schema);
}
return tr.setSelection(Selection.near(tableStartPos, -1));
}
function addParagraphAfterTable(tr, map3, schema, forcedAddtion) {
if (forcedAddtion === void 0) {
forcedAddtion = false;
}
var tableEndPos = tr.doc.resolve(map3.tableEndOffset);
if (forcedAddtion || !tableEndPos.nodeAfter) {
return addParagraph(tr, tableEndPos, schema);
}
return tr.setSelection(Selection.near(tableEndPos, 1));
}
function getRightCellOffset(_a, map3) {
var rowIdx = _a[0], colIdx = _a[1];
var totalRowCount = map3.totalRowCount, totalColumnCount = map3.totalColumnCount;
var lastCellInRow = colIdx === totalColumnCount - 1;
var lastCellInTable = rowIdx === totalRowCount - 1 && lastCellInRow;
if (!lastCellInTable) {
var nextColIdx = colIdx + 1;
var colspanInfo = map3.getColspanStartInfo(rowIdx, colIdx);
if ((colspanInfo === null || colspanInfo === void 0 ? void 0 : colspanInfo.count) > 1) {
nextColIdx += colspanInfo.count - 1;
}
if (lastCellInRow || nextColIdx === totalColumnCount) {
rowIdx += 1;
nextColIdx = 0;
}
var offset = map3.getCellInfo(rowIdx, nextColIdx).offset;
return offset + 2;
}
return null;
}
function getLeftCellOffset(_a, map3) {
var rowIdx = _a[0], colIdx = _a[1];
var totalColumnCount = map3.totalColumnCount;
var firstCellInRow = colIdx === 0;
var firstCellInTable = rowIdx === 0 && firstCellInRow;
if (!firstCellInTable) {
colIdx -= 1;
if (firstCellInRow) {
rowIdx -= 1;
colIdx = totalColumnCount - 1;
}
var _b = map3.getCellInfo(rowIdx, colIdx), offset = _b.offset, nodeSize2 = _b.nodeSize;
return offset + nodeSize2 - 2;
}
return null;
}
function getUpCellOffset(_a, map3) {
var rowIdx = _a[0], colIdx = _a[1];
if (rowIdx > 0) {
var _b = map3.getCellInfo(rowIdx - 1, colIdx), offset = _b.offset, nodeSize2 = _b.nodeSize;
return offset + nodeSize2 - 2;
}
return null;
}
function getDownCellOffset(_a, map3) {
var rowIdx = _a[0], colIdx = _a[1];
var totalRowCount = map3.totalRowCount;
if (rowIdx < totalRowCount - 1) {
var nextRowIdx = rowIdx + 1;
var rowspanInfo = map3.getRowspanStartInfo(rowIdx, colIdx);
if ((rowspanInfo === null || rowspanInfo === void 0 ? void 0 : rowspanInfo.count) > 1) {
nextRowIdx += rowspanInfo.count - 1;
}
var offset = map3.getCellInfo(nextRowIdx, colIdx).offset;
return offset + 2;
}
return null;
}
function moveToCell(direction, tr, cellIndex, map3) {
var cellOffsetFn = cellOffsetFnMap[direction];
var offset = cellOffsetFn(cellIndex, map3);
if (offset) {
var dir = direction === "right" || direction === "down" ? 1 : -1;
return tr.setSelection(Selection.near(tr.doc.resolve(offset), dir));
}
return null;
}
function canSelectTableNode(direction, map3, _a) {
var rowIdx = _a[0], colIdx = _a[1];
if (direction === "up" || direction === "down") {
return false;
}
var tableStartOffset = map3.tableStartOffset, tableEndOffset = map3.tableEndOffset;
var _b = map3.getCellInfo(rowIdx, colIdx), offset = _b.offset, nodeSize2 = _b.nodeSize;
var pos = direction === "left" ? tableStartOffset : tableEndOffset;
var curPos = direction === "left" ? offset - 2 : offset + nodeSize2 + 3;
return pos === curPos;
}
function selectNode(tr, pos, depth) {
var tablePos = tr.doc.resolve(pos.before(depth - 3));
return tr.setSelection(new NodeSelection(tablePos));
}
function getTargetRowInfo(direction, map3, selectionInfo) {
var targetRowIdx;
var insertColIdx;
var nodeSize2;
if (direction === "up") {
targetRowIdx = selectionInfo.startRowIdx;
insertColIdx = 0;
nodeSize2 = -1;
} else {
targetRowIdx = selectionInfo.endRowIdx;
insertColIdx = map3.totalColumnCount - 1;
nodeSize2 = map3.getCellInfo(targetRowIdx, insertColIdx).nodeSize + 1;
}
return { targetRowIdx, insertColIdx, nodeSize: nodeSize2 };
}
function getRowRanges(map3, rowIdx, totalColumnCount) {
var startOffset = map3.getCellInfo(rowIdx, 0).offset;
var _a = map3.getCellInfo(rowIdx, totalColumnCount - 1), offset = _a.offset, nodeSize2 = _a.nodeSize;
return { from: startOffset, to: offset + nodeSize2 };
}
var Table = (
/** @class */
(function(_super) {
__extends$1(Table2, _super);
function Table2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Table2.prototype, "name", {
get: function() {
return "table";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Table2.prototype, "schema", {
get: function() {
return {
content: "tableHead{1} tableBody{1}",
group: "block",
attrs: __assign$1({ rawHTML: { default: null } }, getDefaultCustomAttrs()),
parseDOM: [createDOMInfoParsedRawHTML("table")],
toDOM: function(_a) {
var attrs = _a.attrs;
return ["table", getCustomAttrs(attrs), 0];
}
};
},
enumerable: false,
configurable: true
});
Table2.prototype.addTable = function() {
return function(payload) {
if (payload === void 0) {
payload = { rowCount: 2, columnCount: 1, data: [] };
}
return function(state, dispatch) {
var rowCount = payload.rowCount, columnCount = payload.columnCount, data = payload.data;
var schema = state.schema, selection = state.selection, tr = state.tr;
var from2 = selection.from, to = selection.to, $from = selection.$from;
var collapsed = from2 === to;
if (collapsed && !isInTableNode($from)) {
var _a = schema.nodes, tableHead2 = _a.tableHead, tableBody2 = _a.tableBody;
var theadData = data === null || data === void 0 ? void 0 : data.slice(0, columnCount);
var tbodyData = data === null || data === void 0 ? void 0 : data.slice(columnCount, data.length);
var tableHeadRow = createTableHeadRow(columnCount, schema, theadData);
var tableBodyRows = createTableBodyRows(rowCount - 1, columnCount, schema, tbodyData);
var table2 = schema.nodes.table.create(null, [
tableHead2.create(null, tableHeadRow),
tableBody2.create(null, tableBodyRows)
]);
dispatch(tr.replaceSelectionWith(table2));
return true;
}
return false;
};
};
};
Table2.prototype.removeTable = function() {
return function() {
return function(state, dispatch) {
var selection = state.selection, tr = state.tr;
var map3 = TableOffsetMap.create(selection.$anchor);
if (map3) {
var tableStartOffset = map3.tableStartOffset, tableEndOffset = map3.tableEndOffset;
var startOffset = tableStartOffset - 1;
var cursorPos = createTextSelection(tr.delete(startOffset, tableEndOffset), startOffset);
dispatch(tr.setSelection(cursorPos));
return true;
}
return false;
};
};
};
Table2.prototype.addColumn = function(direction) {
return function() {
return function(state, dispatch) {
var selection = state.selection, tr = state.tr, schema = state.schema;
var _a = getResolvedSelection(selection), anchor = _a.anchor, head = _a.head;
if (anchor && head) {
var map3 = TableOffsetMap.create(anchor);
var selectionInfo = map3.getRectOffsets(anchor, head);
var targetColIdx = direction === "left" ? selectionInfo.startColIdx : selectionInfo.endColIdx + 1;
var columnCount = getRowAndColumnCount(selectionInfo).columnCount;
var totalRowCount = map3.totalRowCount;
for (var rowIdx = 0; rowIdx < totalRowCount; rowIdx += 1) {
var cells = createDummyCells(columnCount, rowIdx, schema);
tr.insert(tr.mapping.map(map3.posAt(rowIdx, targetColIdx)), cells);
}
dispatch(tr);
return true;
}
return false;
};
};
};
Table2.prototype.removeColumn = function() {
return function() {
return function(state, dispatch) {
var selection = state.selection, tr = state.tr;
var _a = getResolvedSelection(selection), anchor = _a.anchor, head = _a.head;
if (anchor && head) {
var map3 = TableOffsetMap.create(anchor);
var selectionInfo = map3.getRectOffsets(anchor, head);
var totalColumnCount = map3.totalColumnCount, totalRowCount = map3.totalRowCount;
var columnCount = getRowAndColumnCount(selectionInfo).columnCount;
var selectedAllColumn = columnCount === totalColumnCount;
if (selectedAllColumn) {
return false;
}
var startColIdx = selectionInfo.startColIdx, endColIdx = selectionInfo.endColIdx;
var mapStart = tr.mapping.maps.length;
for (var rowIdx = 0; rowIdx < totalRowCount; rowIdx += 1) {
for (var colIdx = endColIdx; colIdx >= startColIdx; colIdx -= 1) {
var _b = map3.getCellInfo(rowIdx, colIdx), offset = _b.offset, nodeSize2 = _b.nodeSize;
var from2 = tr.mapping.slice(mapStart).map(offset);
var to = from2 + nodeSize2;
tr.delete(from2, to);
}
}
dispatch(tr);
return true;
}
return false;
};
};
};
Table2.prototype.addRow = function(direction) {
return function() {
return function(state, dispatch) {
var selection = state.selection, schema = state.schema, tr = state.tr;
var _a = getResolvedSelection(selection), anchor = _a.anchor, head = _a.head;
if (anchor && head) {
var map3 = TableOffsetMap.create(anchor);
var totalColumnCount = map3.totalColumnCount;
var selectionInfo = map3.getRectOffsets(anchor, head);
var rowCount = getRowAndColumnCount(selectionInfo).rowCount;
var _b = getTargetRowInfo(direction, map3, selectionInfo), targetRowIdx = _b.targetRowIdx, insertColIdx = _b.insertColIdx, nodeSize2 = _b.nodeSize;
var selectedThead = targetRowIdx === 0;
if (!selectedThead) {
var rows = [];
var from2 = tr.mapping.map(map3.posAt(targetRowIdx, insertColIdx)) + nodeSize2;
var cells = [];
for (var colIdx = 0; colIdx < totalColumnCount; colIdx += 1) {
cells = cells.concat(createDummyCells(1, targetRowIdx, schema));
}
for (var i = 0; i < rowCount; i += 1) {
rows.push(schema.nodes.tableRow.create(null, cells));
}
dispatch(tr.insert(from2, rows));
return true;
}
}
return false;
};
};
};
Table2.prototype.removeRow = function() {
return function() {
return function(state, dispatch) {
var selection = state.selection, tr = state.tr;
var _a = getResolvedSelection(selection), anchor = _a.anchor, head = _a.head;
if (anchor && head) {
var map3 = TableOffsetMap.create(anchor);
var totalRowCount = map3.totalRowCount, totalColumnCount = map3.totalColumnCount;
var selectionInfo = map3.getRectOffsets(anchor, head);
var rowCount = getRowAndColumnCount(selectionInfo).rowCount;
var startRowIdx = selectionInfo.startRowIdx, endRowIdx = selectionInfo.endRowIdx;
var selectedThead = startRowIdx === 0;
var selectedAllTbodyRow = rowCount === totalRowCount - 1;
if (selectedAllTbodyRow || selectedThead) {
return false;
}
for (var rowIdx = endRowIdx; rowIdx >= startRowIdx; rowIdx -= 1) {
var _b = getRowRanges(map3, rowIdx, totalColumnCount), from2 = _b.from, to = _b.to;
tr.delete(from2 - 1, to + 1);
}
dispatch(tr);
return true;
}
return false;
};
};
};
Table2.prototype.alignColumn = function() {
return function(payload) {
if (payload === void 0) {
payload = { align: "center" };
}
return function(state, dispatch) {
var align = payload.align;
var selection = state.selection, tr = state.tr;
var _a = getResolvedSelection(selection), anchor = _a.anchor, head = _a.head;
if (anchor && head) {
var map3 = TableOffsetMap.create(anchor);
var totalRowCount = map3.totalRowCount;
var selectionInfo = map3.getRectOffsets(anchor, head);
var startColIdx = selectionInfo.startColIdx, endColIdx = selectionInfo.endColIdx;
for (var rowIdx = 0; rowIdx < totalRowCount; rowIdx += 1) {
for (var colIdx = startColIdx; colIdx <= endColIdx; colIdx += 1) {
if (!map3.extendedRowspan(rowIdx, colIdx) && !map3.extendedColspan(rowIdx, colIdx)) {
var _b = map3.getNodeAndPos(rowIdx, colIdx), node = _b.node, pos = _b.pos;
var attrs = setAttrs(node, { align });
tr.setNodeMarkup(pos, null, attrs);
}
}
}
dispatch(tr);
return true;
}
return false;
};
};
};
Table2.prototype.moveToCell = function(direction) {
return function(state, dispatch) {
var selection = state.selection, tr = state.tr, schema = state.schema;
var _a = getResolvedSelection(selection), anchor = _a.anchor, head = _a.head;
if (anchor && head) {
var map3 = TableOffsetMap.create(anchor);
var cellIndex = map3.getCellIndex(anchor);
var newTr = void 0;
if (canBeOutOfTable(direction, map3, cellIndex)) {
newTr = addParagraphAfterTable(tr, map3, schema);
} else {
newTr = moveToCell(direction, tr, cellIndex, map3);
}
if (newTr) {
dispatch(newTr);
return true;
}
}
return false;
};
};
Table2.prototype.moveInCell = function(direction) {
var _this = this;
return function(state, dispatch) {
var selection = state.selection, tr = state.tr, doc3 = state.doc, schema = state.schema;
var $from = selection.$from;
var view = _this.context.view;
if (!view.endOfTextblock(direction)) {
return false;
}
var cell = findNodeBy($from, function(_a) {
var type = _a.type;
return type.name === "tableHeadCell" || type.name === "tableBodyCell";
});
if (cell) {
var para2 = findNodeBy($from, function(_a) {
var type = _a.type;
return type.name === "paragraph";
});
var cellDepth = cell.depth;
if (para2 && canMoveBetweenCells(direction, [cellDepth, para2.depth], $from, doc3)) {
var anchor = getResolvedSelection(selection).anchor;
var map3 = TableOffsetMap.create(anchor);
var cellIndex = map3.getCellIndex(anchor);
var newTr = void 0;
if (canSelectTableNode(direction, map3, cellIndex)) {
newTr = selectNode(tr, $from, cellDepth);
} else if (canBeOutOfTable(direction, map3, cellIndex)) {
if (direction === "up") {
newTr = addParagraphBeforeTable(tr, map3, schema);
} else if (direction === "down") {
newTr = addParagraphAfterTable(tr, map3, schema);
}
} else {
newTr = moveToCell(direction, tr, cellIndex, map3);
}
if (newTr) {
dispatch(newTr);
return true;
}
}
}
return false;
};
};
Table2.prototype.deleteCells = function() {
return function(state, dispatch) {
var schema = state.schema, selection = state.selection, tr = state.tr;
var _a = getResolvedSelection(selection), anchor = _a.anchor, head = _a.head;
var textSelection = selection instanceof TextSelection;
if (anchor && head && !textSelection) {
var map3 = TableOffsetMap.create(anchor);
var _b = map3.getRectOffsets(anchor, head), startRowIdx = _b.startRowIdx, startColIdx = _b.startColIdx, endRowIdx = _b.endRowIdx, endColIdx = _b.endColIdx;
for (var rowIdx = startRowIdx; rowIdx <= endRowIdx; rowIdx += 1) {
for (var colIdx = startColIdx; colIdx <= endColIdx; colIdx += 1) {
if (!map3.extendedRowspan(rowIdx, colIdx) && !map3.extendedColspan(rowIdx, colIdx)) {
var _c = map3.getNodeAndPos(rowIdx, colIdx), node = _c.node, pos = _c.pos;
var cells = createDummyCells(1, rowIdx, schema, node.attrs);
tr.replaceWith(tr.mapping.map(pos), tr.mapping.map(pos + node.nodeSize), cells);
}
}
}
dispatch(tr);
return true;
}
return false;
};
};
Table2.prototype.exitTable = function() {
return function(state, dispatch) {
var selection = state.selection, tr = state.tr, schema = state.schema;
var $from = selection.$from;
var cell = findNodeBy($from, function(_a) {
var type = _a.type;
return type.name === "tableHeadCell" || type.name === "tableBodyCell";
});
if (cell) {
var para2 = findNodeBy($from, function(_a) {
var type = _a.type;
return type.name === "paragraph";
});
if (para2) {
var anchor = getResolvedSelection(selection).anchor;
var map3 = TableOffsetMap.create(anchor);
dispatch(addParagraphAfterTable(tr, map3, schema, true));
return true;
}
}
return false;
};
};
Table2.prototype.commands = function() {
return {
addTable: this.addTable(),
removeTable: this.removeTable(),
addColumnToLeft: this.addColumn(
"left"
/* LEFT */
),
addColumnToRight: this.addColumn(
"right"
/* RIGHT */
),
removeColumn: this.removeColumn(),
addRowToUp: this.addRow(
"up"
/* UP */
),
addRowToDown: this.addRow(
"down"
/* DOWN */
),
removeRow: this.removeRow(),
alignColumn: this.alignColumn()
};
};
Table2.prototype.keymaps = function() {
var deleteCellContent = this.deleteCells();
return {
Tab: this.moveToCell(
"right"
/* RIGHT */
),
"Shift-Tab": this.moveToCell(
"left"
/* LEFT */
),
ArrowUp: this.moveInCell(
"up"
/* UP */
),
ArrowDown: this.moveInCell(
"down"
/* DOWN */
),
ArrowLeft: this.moveInCell(
"left"
/* LEFT */
),
ArrowRight: this.moveInCell(
"right"
/* RIGHT */
),
Backspace: deleteCellContent,
"Mod-Backspace": deleteCellContent,
Delete: deleteCellContent,
"Mod-Delete": deleteCellContent,
"Mod-Enter": this.exitTable()
};
};
return Table2;
})(Node$2)
);
var TableHead = (
/** @class */
(function(_super) {
__extends$1(TableHead2, _super);
function TableHead2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(TableHead2.prototype, "name", {
get: function() {
return "tableHead";
},
enumerable: false,
configurable: true
});
Object.defineProperty(TableHead2.prototype, "schema", {
get: function() {
return {
content: "tableRow{1}",
attrs: __assign$1({ rawHTML: { default: null } }, getDefaultCustomAttrs()),
parseDOM: [createDOMInfoParsedRawHTML("thead")],
toDOM: function(_a) {
var attrs = _a.attrs;
return ["thead", getCustomAttrs(attrs), 0];
}
};
},
enumerable: false,
configurable: true
});
return TableHead2;
})(Node$2)
);
var TableBody = (
/** @class */
(function(_super) {
__extends$1(TableBody2, _super);
function TableBody2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(TableBody2.prototype, "name", {
get: function() {
return "tableBody";
},
enumerable: false,
configurable: true
});
Object.defineProperty(TableBody2.prototype, "schema", {
get: function() {
return {
content: "tableRow+",
attrs: __assign$1({ rawHTML: { default: null } }, getDefaultCustomAttrs()),
parseDOM: [
{
tag: "tbody",
getAttrs: function(dom) {
var rows = dom.querySelectorAll("tr");
var columns = rows[0].children.length;
var rawHTML = dom.getAttribute("data-raw-html");
if (!columns) {
return false;
}
return __assign$1({}, rawHTML && { rawHTML });
}
}
],
toDOM: function(_a) {
var attrs = _a.attrs;
return ["tbody", getCustomAttrs(attrs), 0];
}
};
},
enumerable: false,
configurable: true
});
return TableBody2;
})(Node$2)
);
var TableRow = (
/** @class */
(function(_super) {
__extends$1(TableRow2, _super);
function TableRow2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(TableRow2.prototype, "name", {
get: function() {
return "tableRow";
},
enumerable: false,
configurable: true
});
Object.defineProperty(TableRow2.prototype, "schema", {
get: function() {
return {
content: "(tableHeadCell | tableBodyCell)*",
attrs: __assign$1({ rawHTML: { default: null } }, getDefaultCustomAttrs()),
parseDOM: [
{
tag: "tr",
getAttrs: function(dom) {
var columns = dom.children.length;
var rawHTML = dom.getAttribute("data-raw-html");
if (!columns) {
return false;
}
return __assign$1({}, rawHTML && { rawHTML });
}
}
],
toDOM: function(_a) {
var attrs = _a.attrs;
return ["tr", getCustomAttrs(attrs), 0];
}
};
},
enumerable: false,
configurable: true
});
return TableRow2;
})(Node$2)
);
var TableHeadCell = (
/** @class */
(function(_super) {
__extends$1(TableHeadCell2, _super);
function TableHeadCell2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(TableHeadCell2.prototype, "name", {
get: function() {
return "tableHeadCell";
},
enumerable: false,
configurable: true
});
Object.defineProperty(TableHeadCell2.prototype, "schema", {
get: function() {
return {
content: "paragraph+",
attrs: __assign$1({ align: { default: null }, className: { default: null }, rawHTML: { default: null }, colspan: { default: null }, extended: { default: null } }, getDefaultCustomAttrs()),
isolating: true,
parseDOM: [createParsedCellDOM("th")],
toDOM: function(_a) {
var attrs = _a.attrs;
var cellAttrs = createCellAttrs(attrs);
return ["th", __assign$1(__assign$1({}, cellAttrs), getCustomAttrs(attrs)), 0];
}
};
},
enumerable: false,
configurable: true
});
return TableHeadCell2;
})(Node$2)
);
var TableBodyCell = (
/** @class */
(function(_super) {
__extends$1(TableBodyCell2, _super);
function TableBodyCell2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(TableBodyCell2.prototype, "name", {
get: function() {
return "tableBodyCell";
},
enumerable: false,
configurable: true
});
Object.defineProperty(TableBodyCell2.prototype, "schema", {
get: function() {
return {
content: "(paragraph | bulletList | orderedList)+",
attrs: {
align: { default: null },
className: { default: null },
rawHTML: { default: null },
colspan: { default: null },
rowspan: { default: null },
extended: { default: null }
},
isolating: true,
parseDOM: [createParsedCellDOM("td")],
toDOM: function(_a) {
var attrs = _a.attrs;
var cellAttrs = createCellAttrs(attrs);
return ["td", cellAttrs, 0];
}
};
},
enumerable: false,
configurable: true
});
return TableBodyCell2;
})(Node$2)
);
var Image = (
/** @class */
(function(_super) {
__extends$1(Image2, _super);
function Image2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Image2.prototype, "name", {
get: function() {
return "image";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Image2.prototype, "schema", {
get: function() {
return {
inline: true,
attrs: __assign$1({ imageUrl: { default: "" }, altText: { default: null }, rawHTML: { default: null } }, getDefaultCustomAttrs()),
group: "inline",
selectable: false,
parseDOM: [
{
tag: "img[src]",
getAttrs: function(dom) {
var sanitizedDOM = sanitizeHTML(dom, { RETURN_DOM_FRAGMENT: true }).firstChild;
var imageUrl = sanitizedDOM.getAttribute("src") || "";
var rawHTML = sanitizedDOM.getAttribute("data-raw-html");
var altText = sanitizedDOM.getAttribute("alt");
return __assign$1({
imageUrl,
altText
}, rawHTML && { rawHTML });
}
}
],
toDOM: function(_a) {
var attrs = _a.attrs;
return [
attrs.rawHTML || "img",
__assign$1(__assign$1({ src: escapeXml$1(attrs.imageUrl) }, attrs.altText && { alt: attrs.altText }), getCustomAttrs(attrs))
];
}
};
},
enumerable: false,
configurable: true
});
Image2.prototype.addImage = function() {
return function(payload) {
return function(_a, dispatch) {
var schema = _a.schema, tr = _a.tr;
var _b = payload, imageUrl = _b.imageUrl, altText = _b.altText;
if (!imageUrl) {
return false;
}
var node = schema.nodes.image.createAndFill(__assign$1({ imageUrl }, altText && { altText }));
dispatch(tr.replaceSelectionWith(node).scrollIntoView());
return true;
};
};
};
Image2.prototype.commands = function() {
return {
addImage: this.addImage()
};
};
return Image2;
})(Node$2)
);
var ROOT_BLOCK_DEPTH = 1;
var ThematicBreak = (
/** @class */
(function(_super) {
__extends$1(ThematicBreak2, _super);
function ThematicBreak2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(ThematicBreak2.prototype, "name", {
get: function() {
return "thematicBreak";
},
enumerable: false,
configurable: true
});
Object.defineProperty(ThematicBreak2.prototype, "schema", {
get: function() {
return {
attrs: __assign$1({ rawHTML: { default: null } }, getDefaultCustomAttrs()),
group: "block",
parseDOM: [{ tag: "hr" }],
selectable: false,
toDOM: function(_a) {
var attrs = _a.attrs;
return ["div", getCustomAttrs(attrs), [attrs.rawHTML || "hr"]];
}
};
},
enumerable: false,
configurable: true
});
ThematicBreak2.prototype.hr = function() {
var _this = this;
return function() {
return function(state, dispatch) {
var _a;
var _b = state.selection, $from = _b.$from, $to = _b.$to;
if ($from === $to) {
var doc3 = state.doc;
var _c = state.schema.nodes, thematicBreak2 = _c.thematicBreak, paragraph2 = _c.paragraph;
var nodes = [thematicBreak2.create()];
var rootBlock = $from.node(ROOT_BLOCK_DEPTH);
var lastBlock = doc3.child(doc3.childCount - 1) === rootBlock;
var blockEnd = doc3.resolve($from.after(ROOT_BLOCK_DEPTH));
var nextHr = ((_a = $from.nodeAfter) === null || _a === void 0 ? void 0 : _a.type.name) === _this.name;
if (lastBlock || nextHr) {
nodes.push(paragraph2.create());
}
dispatch(state.tr.insert(blockEnd.pos, nodes).scrollIntoView());
return true;
}
return false;
};
};
};
ThematicBreak2.prototype.commands = function() {
return { hr: this.hr() };
};
ThematicBreak2.prototype.keymaps = function() {
var hrCommand = this.hr()();
return {
"Mod-l": hrCommand,
"Mod-L": hrCommand
};
};
return ThematicBreak2;
})(Node$2)
);
var Strong = (
/** @class */
(function(_super) {
__extends$1(Strong2, _super);
function Strong2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Strong2.prototype, "name", {
get: function() {
return "strong";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Strong2.prototype, "schema", {
get: function() {
var parseDOM = ["b", "strong"].map(function(tag) {
return {
tag,
getAttrs: function(dom) {
var rawHTML = dom.getAttribute("data-raw-html");
return __assign$1({}, rawHTML && { rawHTML });
}
};
});
return {
attrs: __assign$1({ rawHTML: { default: null } }, getDefaultCustomAttrs()),
parseDOM,
toDOM: function(_a) {
var attrs = _a.attrs;
return [attrs.rawHTML || "strong", getCustomAttrs(attrs)];
}
};
},
enumerable: false,
configurable: true
});
Strong2.prototype.bold = function() {
return function() {
return function(state, dispatch) {
return toggleMark(state.schema.marks.strong)(state, dispatch);
};
};
};
Strong2.prototype.commands = function() {
return { bold: this.bold() };
};
Strong2.prototype.keymaps = function() {
var boldCommand = this.bold()();
return {
"Mod-b": boldCommand,
"Mod-B": boldCommand
};
};
return Strong2;
})(Mark2)
);
var Emph = (
/** @class */
(function(_super) {
__extends$1(Emph2, _super);
function Emph2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Emph2.prototype, "name", {
get: function() {
return "emph";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Emph2.prototype, "schema", {
get: function() {
var parseDOM = ["i", "em"].map(function(tag) {
return {
tag,
getAttrs: function(dom) {
var rawHTML = dom.getAttribute("data-raw-html");
return __assign$1({}, rawHTML && { rawHTML });
}
};
});
return {
attrs: __assign$1({ rawHTML: { default: null } }, getDefaultCustomAttrs()),
parseDOM,
toDOM: function(_a) {
var attrs = _a.attrs;
return [attrs.rawHTML || "em", getCustomAttrs(attrs)];
}
};
},
enumerable: false,
configurable: true
});
Emph2.prototype.italic = function() {
return function() {
return function(state, dispatch) {
return toggleMark(state.schema.marks.emph)(state, dispatch);
};
};
};
Emph2.prototype.commands = function() {
return { italic: this.italic() };
};
Emph2.prototype.keymaps = function() {
var italicCommand = this.italic()();
return {
"Mod-i": italicCommand,
"Mod-I": italicCommand
};
};
return Emph2;
})(Mark2)
);
var Strike = (
/** @class */
(function(_super) {
__extends$1(Strike2, _super);
function Strike2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Strike2.prototype, "name", {
get: function() {
return "strike";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Strike2.prototype, "schema", {
get: function() {
var parseDOM = ["s", "del"].map(function(tag) {
return {
tag,
getAttrs: function(dom) {
var rawHTML = dom.getAttribute("data-raw-html");
return __assign$1({}, rawHTML && { rawHTML });
}
};
});
return {
attrs: __assign$1({ rawHTML: { default: null } }, getDefaultCustomAttrs()),
parseDOM,
toDOM: function(_a) {
var attrs = _a.attrs;
return [attrs.rawHTML || "del", getCustomAttrs(attrs)];
}
};
},
enumerable: false,
configurable: true
});
Strike2.prototype.commands = function() {
return function() {
return function(state, dispatch) {
return toggleMark(state.schema.marks.strike)(state, dispatch);
};
};
};
Strike2.prototype.keymaps = function() {
var strikeCommand = this.commands()();
return {
"Mod-s": strikeCommand,
"Mod-S": strikeCommand
};
};
return Strike2;
})(Mark2)
);
var Link = (
/** @class */
(function(_super) {
__extends$1(Link2, _super);
function Link2(linkAttributes) {
var _this = _super.call(this) || this;
_this.linkAttributes = linkAttributes;
return _this;
}
Object.defineProperty(Link2.prototype, "name", {
get: function() {
return "link";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Link2.prototype, "schema", {
get: function() {
var _this = this;
return {
attrs: __assign$1({ linkUrl: { default: "" }, title: { default: null }, rawHTML: { default: null } }, getDefaultCustomAttrs()),
inclusive: false,
parseDOM: [
{
tag: "a[href]",
getAttrs: function(dom) {
var sanitizedDOM = sanitizeHTML(dom, { RETURN_DOM_FRAGMENT: true }).firstChild;
var href = sanitizedDOM.getAttribute("href") || "";
var title = sanitizedDOM.getAttribute("title") || "";
var rawHTML = sanitizedDOM.getAttribute("data-raw-html");
return __assign$1({ linkUrl: href, title }, rawHTML && { rawHTML });
}
}
],
toDOM: function(_a) {
var attrs = _a.attrs;
return [
attrs.rawHTML || "a",
__assign$1(__assign$1({ href: escapeXml$1(attrs.linkUrl) }, _this.linkAttributes), getCustomAttrs(attrs))
];
}
};
},
enumerable: false,
configurable: true
});
Link2.prototype.addLink = function() {
return function(payload) {
return function(state, dispatch) {
var _a = payload, linkUrl = _a.linkUrl, _b = _a.linkText, linkText = _b === void 0 ? "" : _b;
var schema = state.schema, tr = state.tr, selection = state.selection;
var empty3 = selection.empty, from2 = selection.from, to = selection.to;
if (from2 && to && linkUrl) {
var attrs = { linkUrl };
var mark = schema.mark("link", attrs);
if (empty3 && linkText) {
var node = createTextNode$1(schema, linkText, mark);
tr.replaceRangeWith(from2, to, node);
} else {
tr.addMark(from2, to, mark);
}
dispatch(tr.scrollIntoView());
return true;
}
return false;
};
};
};
Link2.prototype.toggleLink = function() {
return function(payload) {
return function(state, dispatch) {
return toggleMark(state.schema.marks.link, payload)(state, dispatch);
};
};
};
Link2.prototype.commands = function() {
return {
addLink: this.addLink(),
toggleLink: this.toggleLink()
};
};
return Link2;
})(Mark2)
);
var Code = (
/** @class */
(function(_super) {
__extends$1(Code2, _super);
function Code2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(Code2.prototype, "name", {
get: function() {
return "code";
},
enumerable: false,
configurable: true
});
Object.defineProperty(Code2.prototype, "schema", {
get: function() {
return {
attrs: __assign$1({ rawHTML: { default: null } }, getDefaultCustomAttrs()),
parseDOM: [
{
tag: "code",
getAttrs: function(dom) {
var rawHTML = dom.getAttribute("data-raw-html");
return __assign$1({}, rawHTML && { rawHTML });
}
}
],
toDOM: function(_a) {
var attrs = _a.attrs;
return [attrs.rawHTML || "code", getCustomAttrs(attrs)];
}
};
},
enumerable: false,
configurable: true
});
Code2.prototype.commands = function() {
return function() {
return function(state, dispatch) {
return toggleMark(state.schema.marks.code)(state, dispatch);
};
};
};
Code2.prototype.keymaps = function() {
var codeCommand = this.commands()();
return {
"Shift-Mod-c": codeCommand,
"Shift-Mod-C": codeCommand
};
};
return Code2;
})(Mark2)
);
var CustomBlock = (
/** @class */
(function(_super) {
__extends$1(CustomBlock2, _super);
function CustomBlock2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(CustomBlock2.prototype, "name", {
get: function() {
return "customBlock";
},
enumerable: false,
configurable: true
});
Object.defineProperty(CustomBlock2.prototype, "schema", {
get: function() {
return {
content: "text*",
group: "block",
attrs: {
info: { default: null }
},
atom: true,
code: true,
defining: true,
parseDOM: [
{
tag: "div[data-custom-info]",
getAttrs: function(dom) {
var info = dom.getAttribute("data-custom-info");
return { info };
}
}
],
toDOM: function(_a) {
var attrs = _a.attrs;
return ["div", { "data-custom-info": attrs.info || null }, 0];
}
};
},
enumerable: false,
configurable: true
});
CustomBlock2.prototype.commands = function() {
return function(payload) {
return function(state, dispatch) {
return (payload === null || payload === void 0 ? void 0 : payload.info) ? setBlockType2(state.schema.nodes.customBlock, payload)(state, dispatch) : false;
};
};
};
return CustomBlock2;
})(Node$2)
);
var FrontMatter = (
/** @class */
(function(_super) {
__extends$1(FrontMatter2, _super);
function FrontMatter2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(FrontMatter2.prototype, "name", {
get: function() {
return "frontMatter";
},
enumerable: false,
configurable: true
});
Object.defineProperty(FrontMatter2.prototype, "schema", {
get: function() {
return {
content: "text*",
group: "block",
code: true,
defining: true,
parseDOM: [
{
preserveWhitespace: "full",
tag: "div[data-front-matter]"
}
],
toDOM: function() {
return ["div", { "data-front-matter": "true" }, 0];
}
};
},
enumerable: false,
configurable: true
});
FrontMatter2.prototype.commands = function() {
return function() {
return function(state, dispatch, view) {
var $from = state.selection.$from;
if (view.endOfTextblock("down") && $from.node().type.name === "frontMatter") {
return exitCode(state, dispatch);
}
return false;
};
};
};
FrontMatter2.prototype.keymaps = function() {
return {
Enter: this.commands()()
};
};
return FrontMatter2;
})(Node$2)
);
var HTMLComment = (
/** @class */
(function(_super) {
__extends$1(HTMLComment2, _super);
function HTMLComment2() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(HTMLComment2.prototype, "name", {
get: function() {
return "htmlComment";
},
enumerable: false,
configurable: true
});
Object.defineProperty(HTMLComment2.prototype, "schema", {
get: function() {
return {
content: "text*",
group: "block",
code: true,
defining: true,
parseDOM: [{ preserveWhitespace: "full", tag: "div[data-html-comment]" }],
toDOM: function() {
return ["div", { "data-html-comment": "true" }, 0];
}
};
},
enumerable: false,
configurable: true
});
HTMLComment2.prototype.commands = function() {
return function() {
return function(state, dispatch, view) {
var $from = state.selection.$from;
if (view.endOfTextblock("down") && $from.node().type.name === "htmlComment") {
return exitCode(state, dispatch);
}
return false;
};
};
};
HTMLComment2.prototype.keymaps = function() {
return {
Enter: this.commands()()
};
};
return HTMLComment2;
})(Node$2)
);
function createSpecs(linkAttributes) {
return new SpecManager([
new Doc(),
new Paragraph(),
new Text(),
new Heading(),
new CodeBlock(),
new BulletList(),
new OrderedList(),
new ListItem(),
new BlockQuote(),
new Table(),
new TableHead(),
new TableBody(),
new TableRow(),
new TableHeadCell(),
new TableBodyCell(),
new Image(),
new ThematicBreak(),
new Strong(),
new Emph(),
new Strike(),
new Link(linkAttributes),
new Code(),
new CustomBlock(),
new FrontMatter(),
new Widget(),
new HTMLComment()
]);
}
var CONTENTS_CLASS_NAME = cls("contents");
var WysiwygEditor = (
/** @class */
(function(_super) {
__extends$1(WysiwygEditor2, _super);
function WysiwygEditor2(eventEmitter, options) {
var _this = _super.call(this, eventEmitter) || this;
var toDOMAdaptor = options.toDOMAdaptor, _a = options.htmlSchemaMap, htmlSchemaMap = _a === void 0 ? {} : _a, _b = options.linkAttributes, linkAttributes = _b === void 0 ? {} : _b, _c = options.useCommandShortcut, useCommandShortcut = _c === void 0 ? true : _c, _d = options.wwPlugins, wwPlugins = _d === void 0 ? [] : _d, _e = options.wwNodeViews, wwNodeViews = _e === void 0 ? {} : _e;
_this.editorType = "wysiwyg";
_this.el.classList.add("ww-mode");
_this.toDOMAdaptor = toDOMAdaptor;
_this.linkAttributes = linkAttributes;
_this.extraPlugins = wwPlugins;
_this.pluginNodeViews = wwNodeViews;
_this.specs = _this.createSpecs();
_this.schema = _this.createSchema(htmlSchemaMap);
_this.context = _this.createContext();
_this.keymaps = _this.createKeymaps(useCommandShortcut);
_this.view = _this.createView();
_this.commands = _this.createCommands();
_this.specs.setContext(__assign$1(__assign$1({}, _this.context), { view: _this.view }));
_this.initEvent();
return _this;
}
WysiwygEditor2.prototype.createSpecs = function() {
return createSpecs(this.linkAttributes);
};
WysiwygEditor2.prototype.createContext = function() {
return {
schema: this.schema,
eventEmitter: this.eventEmitter
};
};
WysiwygEditor2.prototype.createSchema = function(htmlSchemaMap) {
return new Schema({
nodes: __assign$1(__assign$1({}, this.specs.nodes), htmlSchemaMap.nodes),
marks: __assign$1(__assign$1({}, this.specs.marks), htmlSchemaMap.marks)
});
};
WysiwygEditor2.prototype.createPlugins = function() {
return __spreadArray$1([
tableSelection(),
tableContextMenu(this.eventEmitter),
task(),
toolbarStateHighlight(this.eventEmitter)
], this.createPluginProps()).concat(this.defaultPlugins);
};
WysiwygEditor2.prototype.createPluginNodeViews = function() {
var _a = this, eventEmitter = _a.eventEmitter, pluginNodeViews = _a.pluginNodeViews;
var pluginNodeViewMap = {};
if (pluginNodeViews) {
Object.keys(pluginNodeViews).forEach(function(key) {
pluginNodeViewMap[key] = function(node, view, getPos) {
return pluginNodeViews[key](node, view, getPos, eventEmitter);
};
});
}
return pluginNodeViewMap;
};
WysiwygEditor2.prototype.createView = function() {
var _this = this;
var _a = this, toDOMAdaptor = _a.toDOMAdaptor, eventEmitter = _a.eventEmitter;
return new EditorView(this.el, {
state: this.createState(),
attributes: {
class: CONTENTS_CLASS_NAME
},
nodeViews: __assign$1({
customBlock: function(node, view, getPos) {
return new CustomBlockView(node, view, getPos, toDOMAdaptor);
},
image: function(node, view, getPos) {
return new ImageView(node, view, getPos, eventEmitter);
},
codeBlock: function(node, view, getPos) {
return new CodeBlockView(node, view, getPos, eventEmitter);
},
widget: widgetNodeView
}, this.createPluginNodeViews()),
dispatchTransaction: function(tr) {
var state = _this.view.state.applyTransaction(tr).state;
_this.view.updateState(state);
_this.emitChangeEvent(tr.scrollIntoView());
_this.eventEmitter.emit("setFocusedNode", state.selection.$from.node(1));
},
transformPastedHTML: changePastedHTML,
transformPasted: function(slice2) {
return changePastedSlice(slice2, _this.schema, isInTableNode(_this.view.state.selection.$from));
},
handlePaste: function(view, _, slice2) {
return pasteToTable(view, slice2);
},
handleKeyDown: function(_, ev) {
_this.eventEmitter.emit("keydown", _this.editorType, ev);
return false;
},
handleDOMEvents: {
paste: function(_, ev) {
var clipboardData = ev.clipboardData || window.clipboardData;
var items = clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.items;
if (items) {
var containRtfItem = toArray_1(items).some(function(item2) {
return item2.kind === "string" && item2.type === "text/rtf";
});
if (!containRtfItem) {
var imageBlob = pasteImageOnly(items);
if (imageBlob) {
ev.preventDefault();
emitImageBlobHook(_this.eventEmitter, imageBlob, ev.type);
}
}
}
return false;
},
keyup: function(_, ev) {
_this.eventEmitter.emit("keyup", _this.editorType, ev);
return false;
},
scroll: function() {
_this.eventEmitter.emit("scroll", "editor");
return true;
}
}
});
};
WysiwygEditor2.prototype.createCommands = function() {
return this.specs.commands(this.view, getWwCommands());
};
WysiwygEditor2.prototype.getHTML = function() {
return removeProseMirrorHackNodes(this.view.dom.innerHTML);
};
WysiwygEditor2.prototype.getModel = function() {
return this.view.state.doc;
};
WysiwygEditor2.prototype.getSelection = function() {
var _a = this.view.state.selection, from2 = _a.from, to = _a.to;
return [from2, to];
};
WysiwygEditor2.prototype.getSchema = function() {
return this.view.state.schema;
};
WysiwygEditor2.prototype.replaceSelection = function(text2, start, end) {
var _a = this.view.state, schema = _a.schema, tr = _a.tr;
var lineTexts = text2.split("\n");
var paras = lineTexts.map(function(lineText) {
return createParagraph(schema, createNodesWithWidget(lineText, schema));
});
var slice2 = new Slice(Fragment.from(paras), 1, 1);
var newTr = isNumber_1(start) && isNumber_1(end) ? tr.replaceRange(start, end, slice2) : tr.replaceSelection(slice2);
this.view.dispatch(newTr);
this.focus();
};
WysiwygEditor2.prototype.deleteSelection = function(start, end) {
var tr = this.view.state.tr;
var newTr = isNumber_1(start) && isNumber_1(end) ? tr.deleteRange(start, end) : tr.deleteSelection();
this.view.dispatch(newTr.scrollIntoView());
};
WysiwygEditor2.prototype.getSelectedText = function(start, end) {
var _a = this.view.state, doc3 = _a.doc, selection = _a.selection;
var from2 = selection.from, to = selection.to;
if (isNumber_1(start) && isNumber_1(end)) {
from2 = start;
to = end;
}
return doc3.textBetween(from2, to, "\n");
};
WysiwygEditor2.prototype.setModel = function(newDoc, cursorToEnd) {
if (cursorToEnd === void 0) {
cursorToEnd = false;
}
var _a = this.view.state, tr = _a.tr, doc3 = _a.doc;
this.view.dispatch(tr.replaceWith(0, doc3.content.size, newDoc));
if (cursorToEnd) {
this.moveCursorToEnd(true);
}
};
WysiwygEditor2.prototype.setSelection = function(start, end) {
if (end === void 0) {
end = start;
}
var tr = this.view.state.tr;
var selection = createTextSelection(tr, start, end);
this.view.dispatch(tr.setSelection(selection).scrollIntoView());
};
WysiwygEditor2.prototype.addWidget = function(node, style, pos) {
var _a = this.view, dispatch = _a.dispatch, state = _a.state;
dispatch(state.tr.setMeta("widget", { pos: pos !== null && pos !== void 0 ? pos : state.selection.to, node, style }));
};
WysiwygEditor2.prototype.replaceWithWidget = function(start, end, text2) {
var _a = this.view.state, tr = _a.tr, schema = _a.schema;
var nodes = createNodesWithWidget(text2, schema);
this.view.dispatch(tr.replaceWith(start, end, nodes));
};
WysiwygEditor2.prototype.getRangeInfoOfNode = function(pos) {
var _a = this.view.state, doc3 = _a.doc, selection = _a.selection;
var $pos = pos ? doc3.resolve(pos) : selection.$from;
var marks = $pos.marks();
var node = $pos.node();
var start = $pos.start();
var end = $pos.end();
var type = node.type.name;
if (marks.length || type === "paragraph") {
var mark_1 = marks[marks.length - 1];
var maybeHasMark_1 = function(nodeMarks) {
return nodeMarks.length ? includes(nodeMarks, mark_1) : true;
};
type = mark_1 ? mark_1.type.name : "text";
node.forEach(function(child, offset) {
var isText = child.isText, nodeSize2 = child.nodeSize, nodeMarks = child.marks;
var startOffset = $pos.pos - start;
if (isText && offset <= startOffset && offset + nodeSize2 >= startOffset && maybeHasMark_1(nodeMarks)) {
start = start + offset;
end = start + nodeSize2;
}
});
}
return { range: [start, end], type };
};
return WysiwygEditor2;
})(EditorBase)
);
var isUndefined = isUndefined_1;
var isNull = isNull_1;
function isExisty$1(param) {
return !isUndefined(param) && !isNull(param);
}
var isExisty_1 = isExisty$1;
var isExisty = isExisty_1;
function isTruthy$1(obj) {
return isExisty(obj) && obj !== false;
}
var isTruthy_1 = isTruthy$1;
var isTruthy = isTruthy_1;
function isFalsy(obj) {
return !isTruthy(obj);
}
var isFalsy_1 = isFalsy;
var eventTypeList = [
"afterPreviewRender",
"updatePreview",
"changeMode",
"needChangeMode",
"command",
"changePreviewStyle",
"changePreviewTabPreview",
"changePreviewTabWrite",
"scroll",
"contextmenu",
"show",
"hide",
"changeLanguage",
"changeToolbarState",
"toggleScrollSync",
"mixinTableOffsetMapPrototype",
"setFocusedNode",
"removePopupWidget",
"query",
// provide event for user
"openPopup",
"closePopup",
"addImageBlobHook",
"beforePreviewRender",
"beforeConvertWysiwygToMarkdown",
"load",
"loadUI",
"change",
"caretChange",
"destroy",
"focus",
"blur",
"keydown",
"keyup"
];
var EventEmitter = (
/** @class */
(function() {
function EventEmitter2() {
var _this = this;
this.events = new Map$1();
this.eventTypes = eventTypeList.reduce(function(types, type) {
return __assign$1(__assign$1({}, types), { type });
}, {});
this.hold = false;
eventTypeList.forEach(function(eventType) {
_this.addEventType(eventType);
});
}
EventEmitter2.prototype.listen = function(type, handler) {
var typeInfo = this.getTypeInfo(type);
var eventHandlers = this.events.get(typeInfo.type) || [];
if (!this.hasEventType(typeInfo.type)) {
throw new Error("There is no event type " + typeInfo.type);
}
if (typeInfo.namespace) {
handler.namespace = typeInfo.namespace;
}
eventHandlers.push(handler);
this.events.set(typeInfo.type, eventHandlers);
};
EventEmitter2.prototype.emit = function(type) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
var typeInfo = this.getTypeInfo(type);
var eventHandlers = this.events.get(typeInfo.type);
var results = [];
if (!this.hold && eventHandlers) {
eventHandlers.forEach(function(handler) {
var result = handler.apply(void 0, args);
if (!isUndefined_1(result)) {
results.push(result);
}
});
}
return results;
};
EventEmitter2.prototype.emitReduce = function(type, source) {
var args = [];
for (var _i = 2; _i < arguments.length; _i++) {
args[_i - 2] = arguments[_i];
}
var eventHandlers = this.events.get(type);
if (!this.hold && eventHandlers) {
eventHandlers.forEach(function(handler) {
var result = handler.apply(void 0, __spreadArray$1([source], args));
if (!isFalsy_1(result)) {
source = result;
}
});
}
return source;
};
EventEmitter2.prototype.getTypeInfo = function(type) {
var splited = type.split(".");
return {
type: splited[0],
namespace: splited[1]
};
};
EventEmitter2.prototype.hasEventType = function(type) {
return !isUndefined_1(this.eventTypes[this.getTypeInfo(type).type]);
};
EventEmitter2.prototype.addEventType = function(type) {
if (this.hasEventType(type)) {
throw new Error("There is already have event type " + type);
}
this.eventTypes[type] = type;
};
EventEmitter2.prototype.removeEventHandler = function(eventType, handler) {
var _this = this;
var _a = this.getTypeInfo(eventType), type = _a.type, namespace = _a.namespace;
if (type && handler) {
this.removeEventHandlerWithHandler(type, handler);
} else if (type && !namespace) {
this.events.delete(type);
} else if (!type && namespace) {
this.events.forEach(function(_, evtType) {
_this.removeEventHandlerWithTypeInfo(evtType, namespace);
});
} else if (type && namespace) {
this.removeEventHandlerWithTypeInfo(type, namespace);
}
};
EventEmitter2.prototype.removeEventHandlerWithHandler = function(type, handler) {
var eventHandlers = this.events.get(type);
if (eventHandlers) {
var handlerIndex = eventHandlers.indexOf(handler);
if (eventHandlers.indexOf(handler) >= 0) {
eventHandlers.splice(handlerIndex, 1);
}
}
};
EventEmitter2.prototype.removeEventHandlerWithTypeInfo = function(type, namespace) {
var handlersToSurvive = [];
var eventHandlers = this.events.get(type);
if (!eventHandlers) {
return;
}
eventHandlers.map(function(handler) {
if (handler.namespace !== namespace) {
handlersToSurvive.push(handler);
}
return null;
});
this.events.set(type, handlersToSurvive);
};
EventEmitter2.prototype.getEvents = function() {
return this.events;
};
EventEmitter2.prototype.holdEventInvoke = function(fn) {
this.hold = true;
fn();
this.hold = false;
};
return EventEmitter2;
})()
);
var CommandManager = (
/** @class */
(function() {
function CommandManager2(eventEmitter, mdCommands, wwCommands, getEditorType) {
this.eventEmitter = eventEmitter;
this.mdCommands = mdCommands;
this.wwCommands = wwCommands;
this.getEditorType = getEditorType;
this.initEvent();
}
CommandManager2.prototype.initEvent = function() {
var _this = this;
this.eventEmitter.listen("command", function(command, payload) {
_this.exec(command, payload);
});
};
CommandManager2.prototype.addCommand = function(type, name, command) {
if (type === "markdown") {
this.mdCommands[name] = command;
} else {
this.wwCommands[name] = command;
}
};
CommandManager2.prototype.deleteCommand = function(type, name) {
if (type === "markdown") {
delete this.mdCommands[name];
} else {
delete this.wwCommands[name];
}
};
CommandManager2.prototype.exec = function(name, payload) {
var type = this.getEditorType();
if (type === "markdown") {
this.mdCommands[name](payload);
} else {
this.wwCommands[name](payload);
}
};
return CommandManager2;
})()
);
function getTextWithoutTrailingNewline(text2) {
return text2[text2.length - 1] === "\n" ? text2.slice(0, text2.length - 1) : text2;
}
function isCustomHTMLInlineNode(_a, node) {
var schema = _a.schema;
var html2 = node.literal;
var matched = html2.match(reHTMLTag);
if (matched) {
var openTagName = matched[1], closeTagName = matched[3];
var typeName = (openTagName || closeTagName).toLowerCase();
return node.type === "htmlInline" && !!(schema.marks[typeName] || schema.nodes[typeName]);
}
return false;
}
function isInlineNode(_a) {
var type = _a.type;
return includes(["text", "strong", "emph", "strike", "image", "link", "code"], type);
}
function isSoftbreak(mdNode) {
return (mdNode === null || mdNode === void 0 ? void 0 : mdNode.type) === "softbreak";
}
function isListNode(_a) {
var type = _a.type, literal = _a.literal;
var matched = type === "htmlInline" && literal.match(reHTMLTag);
if (matched) {
var openTagName = matched[1], closeTagName = matched[3];
var tagName = openTagName || closeTagName;
if (tagName) {
return includes(["ul", "ol", "li"], tagName.toLowerCase());
}
}
return false;
}
function getListItemAttrs(_a) {
var literal = _a.literal;
var task2 = /data-task/.test(literal);
var checked = /data-task-checked/.test(literal);
return { task: task2, checked };
}
function getMatchedAttributeValue(rawHTML) {
var attrNames = [];
for (var _i = 1; _i < arguments.length; _i++) {
attrNames[_i - 1] = arguments[_i];
}
var wrapper = document.createElement("div");
wrapper.innerHTML = sanitizeHTML(rawHTML);
var el2 = wrapper.firstChild;
return attrNames.map(function(attrName) {
return el2.getAttribute(attrName) || "";
});
}
function createConvertors(convertors2) {
var convertorMap = {};
Object.keys(convertors2).forEach(function(key) {
var tagNames = key.split(", ");
tagNames.forEach(function(tagName) {
var name = tagName.toLowerCase();
convertorMap[name] = convertors2[key];
});
});
return convertorMap;
}
var convertors = {
"b, strong": function(state, _, openTagName) {
var strong = state.schema.marks.strong;
if (openTagName) {
state.openMark(strong.create({ rawHTML: openTagName }));
} else {
state.closeMark(strong);
}
},
"i, em": function(state, _, openTagName) {
var emph = state.schema.marks.emph;
if (openTagName) {
state.openMark(emph.create({ rawHTML: openTagName }));
} else {
state.closeMark(emph);
}
},
"s, del": function(state, _, openTagName) {
var strike = state.schema.marks.strike;
if (openTagName) {
state.openMark(strike.create({ rawHTML: openTagName }));
} else {
state.closeMark(strike);
}
},
code: function(state, _, openTagName) {
var code2 = state.schema.marks.code;
if (openTagName) {
state.openMark(code2.create({ rawHTML: openTagName }));
} else {
state.closeMark(code2);
}
},
a: function(state, node, openTagName) {
var tag = node.literal;
var link2 = state.schema.marks.link;
if (openTagName) {
var linkUrl = getMatchedAttributeValue(tag, "href")[0];
state.openMark(link2.create({
linkUrl,
rawHTML: openTagName
}));
} else {
state.closeMark(link2);
}
},
img: function(state, node, openTagName) {
var tag = node.literal;
if (openTagName) {
var _a = getMatchedAttributeValue(tag, "src", "alt"), imageUrl = _a[0], altText = _a[1];
var image2 = state.schema.nodes.image;
state.addNode(image2, __assign$1({ rawHTML: openTagName, imageUrl }, altText && { altText }));
}
},
hr: function(state, _, openTagName) {
state.addNode(state.schema.nodes.thematicBreak, { rawHTML: openTagName });
},
br: function(state, node) {
var paragraph2 = state.schema.nodes.paragraph;
var parent = node.parent, prev = node.prev, next = node.next;
if ((parent === null || parent === void 0 ? void 0 : parent.type) === "paragraph") {
if (isSoftbreak(prev)) {
state.openNode(paragraph2);
}
if (isSoftbreak(next)) {
state.closeNode();
} else if (next) {
state.closeNode();
state.openNode(paragraph2);
}
} else if ((parent === null || parent === void 0 ? void 0 : parent.type) === "tableCell") {
if (prev && (isInlineNode(prev) || isCustomHTMLInlineNode(state, prev))) {
state.closeNode();
}
if (next && (isInlineNode(next) || isCustomHTMLInlineNode(state, next))) {
state.openNode(paragraph2);
}
}
},
pre: function(state, node, openTagName) {
var _a, _b;
var container = document.createElement("div");
container.innerHTML = node.literal;
var literal = (_b = (_a = container.firstChild) === null || _a === void 0 ? void 0 : _a.firstChild) === null || _b === void 0 ? void 0 : _b.textContent;
state.openNode(state.schema.nodes.codeBlock, { rawHTML: openTagName });
state.addText(getTextWithoutTrailingNewline(literal));
state.closeNode();
},
"ul, ol": function(state, node, openTagName) {
if (node.parent.type === "tableCell") {
var _a = state.schema.nodes, bulletList = _a.bulletList, orderedList = _a.orderedList, paragraph2 = _a.paragraph;
var list2 = openTagName === "ul" ? bulletList : orderedList;
if (openTagName) {
if (node.prev && !isListNode(node.prev)) {
state.closeNode();
}
state.openNode(list2, { rawHTML: openTagName });
} else {
state.closeNode();
if (node.next && !isListNode(node.next)) {
state.openNode(paragraph2);
}
}
}
},
li: function(state, node, openTagName) {
var _a;
if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.type) === "tableCell") {
var _b = state.schema.nodes, listItem2 = _b.listItem, paragraph2 = _b.paragraph;
if (openTagName) {
var attrs = getListItemAttrs(node);
if (node.prev && !isListNode(node.prev)) {
state.closeNode();
}
state.openNode(listItem2, __assign$1({ rawHTML: openTagName }, attrs));
if (node.next && !isListNode(node.next)) {
state.openNode(paragraph2);
}
} else {
if (node.prev && !isListNode(node.prev)) {
state.closeNode();
}
state.closeNode();
}
}
}
};
var htmlToWwConvertors = createConvertors(convertors);
function isBRTag(node) {
return node.type === "htmlInline" && reBR.test(node.literal);
}
function addRawHTMLAttributeToDOM(parent) {
toArray_1(parent.childNodes).forEach(function(child) {
if (isElemNode(child)) {
var openTagName = child.nodeName.toLowerCase();
child.setAttribute("data-raw-html", openTagName);
if (child.childNodes) {
addRawHTMLAttributeToDOM(child);
}
}
});
}
var toWwConvertors = {
text: function(state, node) {
state.addText(node.literal || "");
},
paragraph: function(state, node, _a, customAttrs) {
var _b;
var entering = _a.entering;
if (entering) {
var paragraph2 = state.schema.nodes.paragraph;
if (((_b = node.prev) === null || _b === void 0 ? void 0 : _b.type) === "paragraph") {
state.openNode(paragraph2, customAttrs);
state.closeNode();
}
state.openNode(paragraph2, customAttrs);
} else {
state.closeNode();
}
},
heading: function(state, node, _a, customAttrs) {
var entering = _a.entering;
if (entering) {
var _b = node, level = _b.level, headingType = _b.headingType;
state.openNode(state.schema.nodes.heading, __assign$1({ level, headingType }, customAttrs));
} else {
state.closeNode();
}
},
codeBlock: function(state, node, customAttrs) {
var codeBlock2 = state.schema.nodes.codeBlock;
var _a = node, info = _a.info, literal = _a.literal;
state.openNode(codeBlock2, __assign$1({ language: info }, customAttrs));
state.addText(getTextWithoutTrailingNewline(literal || ""));
state.closeNode();
},
list: function(state, node, _a, customAttrs) {
var entering = _a.entering;
if (entering) {
var _b = state.schema.nodes, bulletList = _b.bulletList, orderedList = _b.orderedList;
var _c = node.listData, type = _c.type, start = _c.start;
if (type === "bullet") {
state.openNode(bulletList, customAttrs);
} else {
state.openNode(orderedList, __assign$1({ order: start }, customAttrs));
}
} else {
state.closeNode();
}
},
item: function(state, node, _a, customAttrs) {
var entering = _a.entering;
var listItem2 = state.schema.nodes.listItem;
var _b = node.listData, task2 = _b.task, checked = _b.checked;
if (entering) {
var attrs = __assign$1(__assign$1(__assign$1({}, task2 && { task: task2 }), checked && { checked }), customAttrs);
state.openNode(listItem2, attrs);
} else {
state.closeNode();
}
},
blockQuote: function(state, _, _a, customAttrs) {
var entering = _a.entering;
if (entering) {
state.openNode(state.schema.nodes.blockQuote, customAttrs);
} else {
state.closeNode();
}
},
image: function(state, node, _a, customAttrs) {
var entering = _a.entering, skipChildren = _a.skipChildren;
var image2 = state.schema.nodes.image;
var _b = node, destination = _b.destination, firstChild = _b.firstChild;
if (entering && skipChildren) {
skipChildren();
}
state.addNode(image2, __assign$1(__assign$1({ imageUrl: destination }, firstChild && { altText: firstChild.literal }), customAttrs));
},
thematicBreak: function(state, node, _, customAttrs) {
state.addNode(state.schema.nodes.thematicBreak, customAttrs);
},
strong: function(state, _, _a, customAttrs) {
var entering = _a.entering;
var strong = state.schema.marks.strong;
if (entering) {
state.openMark(strong.create(customAttrs));
} else {
state.closeMark(strong);
}
},
emph: function(state, _, _a, customAttrs) {
var entering = _a.entering;
var emph = state.schema.marks.emph;
if (entering) {
state.openMark(emph.create(customAttrs));
} else {
state.closeMark(emph);
}
},
link: function(state, node, _a, customAttrs) {
var entering = _a.entering;
var link2 = state.schema.marks.link;
var _b = node, destination = _b.destination, title = _b.title;
if (entering) {
var attrs = __assign$1({ linkUrl: destination, title }, customAttrs);
state.openMark(link2.create(attrs));
} else {
state.closeMark(link2);
}
},
softbreak: function(state, node) {
if (node.parent.type === "paragraph") {
var prev = node.prev, next = node.next;
if (prev && !isBRTag(prev)) {
state.closeNode();
}
if (next && !isBRTag(next)) {
state.openNode(state.schema.nodes.paragraph);
}
}
},
// GFM specifications node
table: function(state, _, _a, customAttrs) {
var entering = _a.entering;
if (entering) {
state.openNode(state.schema.nodes.table, customAttrs);
} else {
state.closeNode();
}
},
tableHead: function(state, _, _a, customAttrs) {
var entering = _a.entering;
if (entering) {
state.openNode(state.schema.nodes.tableHead, customAttrs);
} else {
state.closeNode();
}
},
tableBody: function(state, _, _a, customAttrs) {
var entering = _a.entering;
if (entering) {
state.openNode(state.schema.nodes.tableBody, customAttrs);
} else {
state.closeNode();
}
},
tableRow: function(state, _, _a, customAttrs) {
var entering = _a.entering;
if (entering) {
state.openNode(state.schema.nodes.tableRow, customAttrs);
} else {
state.closeNode();
}
},
tableCell: function(state, node, _a) {
var entering = _a.entering;
if (!node.ignored) {
var hasParaNode = function(childNode) {
return childNode && (isInlineNode(childNode) || isCustomHTMLInlineNode(state, childNode));
};
if (entering) {
var _b = state.schema.nodes, tableHeadCell = _b.tableHeadCell, tableBodyCell = _b.tableBodyCell, paragraph2 = _b.paragraph;
var tablePart = node.parent.parent;
var cell = tablePart.type === "tableHead" ? tableHeadCell : tableBodyCell;
var table2 = tablePart.parent;
var align = (table2.columns[node.startIdx] || {}).align;
var attrs = __assign$1({}, node.attrs);
if (align) {
attrs.align = align;
}
state.openNode(cell, attrs);
if (hasParaNode(node.firstChild)) {
state.openNode(paragraph2);
}
} else {
if (hasParaNode(node.lastChild)) {
state.closeNode();
}
state.closeNode();
}
}
},
strike: function(state, _, _a, customAttrs) {
var entering = _a.entering;
var strike = state.schema.marks.strike;
if (entering) {
state.openMark(strike.create(customAttrs));
} else {
state.closeMark(strike);
}
},
code: function(state, node, _, customAttrs) {
var code2 = state.schema.marks.code;
state.openMark(code2.create(customAttrs));
state.addText(getTextWithoutTrailingNewline(node.literal || ""));
state.closeMark(code2);
},
customBlock: function(state, node) {
var _a = state.schema.nodes, customBlock2 = _a.customBlock, paragraph2 = _a.paragraph;
var _b = node, info = _b.info, literal = _b.literal;
state.openNode(customBlock2, { info });
state.addText(getTextWithoutTrailingNewline(literal || ""));
state.closeNode();
if (!node.next) {
state.openNode(paragraph2);
state.closeNode();
}
},
frontMatter: function(state, node) {
state.openNode(state.schema.nodes.frontMatter);
state.addText(node.literal);
state.closeNode();
},
htmlInline: function(state, node) {
var html2 = node.literal;
var matched = html2.match(reHTMLTag);
var openTagName = matched[1], closeTagName = matched[3];
var typeName = (openTagName || closeTagName).toLowerCase();
var markType = state.schema.marks[typeName];
var sanitizedHTML = sanitizeHTML(html2);
if (markType === null || markType === void 0 ? void 0 : markType.spec.attrs.htmlInline) {
if (openTagName) {
var htmlAttrs = getHTMLAttrsByHTMLString(sanitizedHTML);
state.openMark(markType.create({ htmlAttrs }));
} else {
state.closeMark(markType);
}
} else {
var htmlToWwConvertor = htmlToWwConvertors[typeName];
if (htmlToWwConvertor) {
htmlToWwConvertor(state, node, openTagName);
}
}
},
htmlBlock: function(state, node) {
var html2 = node.literal;
var container = document.createElement("div");
var isHTMLComment = reHTMLComment.test(html2);
if (isHTMLComment) {
state.openNode(state.schema.nodes.htmlComment);
state.addText(node.literal);
state.closeNode();
} else {
var matched = html2.match(reHTMLTag);
var openTagName = matched[1], closeTagName = matched[3];
var typeName = (openTagName || closeTagName).toLowerCase();
var nodeType = state.schema.nodes[typeName];
var sanitizedHTML = sanitizeHTML(html2);
if (nodeType === null || nodeType === void 0 ? void 0 : nodeType.spec.attrs.htmlBlock) {
var htmlAttrs = getHTMLAttrsByHTMLString(sanitizedHTML);
var childrenHTML = getChildrenHTML(node, typeName);
state.addNode(nodeType, { htmlAttrs, childrenHTML });
} else {
container.innerHTML = sanitizedHTML;
addRawHTMLAttributeToDOM(container);
state.convertByDOMParser(container);
}
}
},
customInline: function(state, node, _a) {
var entering = _a.entering, skipChildren = _a.skipChildren;
var _b = node, info = _b.info, firstChild = _b.firstChild;
var schema = state.schema;
if (info.indexOf("widget") !== -1 && entering) {
var content = getWidgetContent(node);
skipChildren();
state.addNode(schema.nodes.widget, { info }, [
schema.text(createWidgetContent(info, content))
]);
} else {
var text2 = "$$";
if (entering) {
text2 += firstChild ? info + " " : info;
}
state.addText(text2);
}
}
};
function createWwConvertors(customConvertors) {
var customConvertorTypes = Object.keys(customConvertors);
var convertors2 = __assign$1({}, toWwConvertors);
var renderer = new Renderer({
gfm: true,
nodeId: true,
convertors: customConvertors
});
var orgConvertors = renderer.getConvertors();
customConvertorTypes.forEach(function(type) {
var wwConvertor = toWwConvertors[type];
if (wwConvertor && !includes(["htmlBlock", "htmlInline"], type)) {
convertors2[type] = function(state, node, context) {
context.origin = function() {
return orgConvertors[type](node, context, orgConvertors);
};
var tokens = customConvertors[type](node, context);
var attrs;
if (tokens) {
var _a = Array.isArray(tokens) ? tokens[0] : tokens, htmlAttrs = _a.attributes, classNames = _a.classNames;
attrs = { htmlAttrs, classNames };
}
wwConvertor(state, node, context, attrs);
};
}
});
return convertors2;
}
function mergeMarkText(a, b) {
if (a.isText && b.isText && Mark.sameSet(a.marks, b.marks)) {
return a.withText(a.text + b.text);
}
return false;
}
var ToWwConvertorState = (
/** @class */
(function() {
function ToWwConvertorState2(schema, convertors2) {
this.schema = schema;
this.convertors = convertors2;
this.stack = [{ type: this.schema.topNodeType, attrs: null, content: [] }];
this.marks = Mark.none;
}
ToWwConvertorState2.prototype.top = function() {
return last$1(this.stack);
};
ToWwConvertorState2.prototype.push = function(node) {
if (this.stack.length) {
this.top().content.push(node);
}
};
ToWwConvertorState2.prototype.addText = function(text2) {
if (text2) {
var nodes = this.top().content;
var lastNode = last$1(nodes);
var node = this.schema.text(text2, this.marks);
var merged = lastNode && mergeMarkText(lastNode, node);
if (merged) {
nodes[nodes.length - 1] = merged;
} else {
nodes.push(node);
}
}
};
ToWwConvertorState2.prototype.openMark = function(mark) {
this.marks = mark.addToSet(this.marks);
};
ToWwConvertorState2.prototype.closeMark = function(mark) {
this.marks = mark.removeFromSet(this.marks);
};
ToWwConvertorState2.prototype.addNode = function(type, attrs, content) {
var node = type.createAndFill(attrs, content, this.marks);
if (node) {
this.push(node);
return node;
}
return null;
};
ToWwConvertorState2.prototype.openNode = function(type, attrs) {
this.stack.push({ type, attrs, content: [] });
};
ToWwConvertorState2.prototype.closeNode = function() {
if (this.marks.length) {
this.marks = Mark.none;
}
var _a = this.stack.pop(), type = _a.type, attrs = _a.attrs, content = _a.content;
return this.addNode(type, attrs, content);
};
ToWwConvertorState2.prototype.convertByDOMParser = function(root) {
var _this = this;
var doc3 = DOMParser.fromSchema(this.schema).parse(root);
doc3.content.forEach(function(node) {
return _this.push(node);
});
};
ToWwConvertorState2.prototype.closeUnmatchedHTMLInline = function(node, entering) {
var _a;
if (!entering && node.type !== "htmlInline") {
var length_1 = this.stack.length - 1;
for (var i = length_1; i >= 0; i -= 1) {
var nodeInfo = this.stack[i];
if ((_a = nodeInfo.attrs) === null || _a === void 0 ? void 0 : _a.rawHTML) {
if (nodeInfo.content.length) {
this.closeNode();
} else {
this.stack.pop();
}
} else {
break;
}
}
}
};
ToWwConvertorState2.prototype.convert = function(mdNode, infoForPosSync) {
var walker = mdNode.walker();
var event = walker.next();
var _loop_1 = function() {
var node = event.node, entering = event.entering;
var convertor = this_1.convertors[node.type];
var skipped = false;
if (convertor) {
var context = {
entering,
leaf: !isContainer$2(node),
getChildrenText: getChildrenText$1,
options: { gfm: true, nodeId: false, tagFilter: false, softbreak: "\n" },
skipChildren: function() {
skipped = true;
}
};
this_1.closeUnmatchedHTMLInline(node, entering);
convertor(this_1, node, context);
if ((infoForPosSync === null || infoForPosSync === void 0 ? void 0 : infoForPosSync.node) === node) {
var pos = this_1.stack.reduce(function(nodeSize2, stackItem) {
return nodeSize2 + stackItem.content.reduce(function(contentSize, pmNode) {
return contentSize + pmNode.nodeSize;
}, 0);
}, 0) + 1;
infoForPosSync.setMappedPos(pos);
}
}
if (skipped) {
walker.resumeAt(node, false);
walker.next();
}
event = walker.next();
};
var this_1 = this;
while (event) {
_loop_1();
}
};
ToWwConvertorState2.prototype.convertNode = function(mdNode, infoForPosSync) {
this.convert(mdNode, infoForPosSync);
if (this.stack.length) {
return this.closeNode();
}
return null;
};
return ToWwConvertorState2;
})()
);
function convertToRawHTMLHavingInlines(state, node, _a) {
var openTag = _a[0], closeTag = _a[1];
state.write(openTag);
state.convertInline(node);
state.write(closeTag);
}
function convertToRawHTMLHavingBlocks(state, _a, _b) {
var node = _a.node, parent = _a.parent;
var openTag = _b[0], closeTag = _b[1];
state.stopNewline = true;
state.write(openTag);
state.convertNode(node);
state.write(closeTag);
if ((parent === null || parent === void 0 ? void 0 : parent.type.name) === "doc") {
state.closeBlock(node);
state.stopNewline = false;
}
}
function createTableHeadDelim(textContent, columnAlign) {
var textLen = textContent.length;
var leftDelim = "";
var rightDelim = "";
if (columnAlign === "left") {
leftDelim = ":";
textLen -= 1;
} else if (columnAlign === "right") {
rightDelim = ":";
textLen -= 1;
} else if (columnAlign === "center") {
leftDelim = ":";
rightDelim = ":";
textLen -= 2;
}
return "" + leftDelim + repeat$1("-", Math.max(textLen, 3)) + rightDelim;
}
var nodeTypeWriters = {
text: function(state, _a) {
var _b;
var node = _a.node;
var text2 = (_b = node.text) !== null && _b !== void 0 ? _b : "";
if ((node.marks || []).some(function(mark) {
return mark.type.name === "link";
})) {
state.text(escapeTextForLink(text2), false);
} else {
state.text(text2);
}
},
paragraph: function(state, _a) {
var node = _a.node, parent = _a.parent, _b = _a.index, index2 = _b === void 0 ? 0 : _b;
if (state.stopNewline) {
state.convertInline(node);
} else {
var firstChildNode = index2 === 0;
var prevNode = !firstChildNode && parent.child(index2 - 1);
var prevEmptyNode = prevNode && prevNode.childCount === 0;
var nextNode = index2 < parent.childCount - 1 && parent.child(index2 + 1);
var nextParaNode = nextNode && nextNode.type.name === "paragraph";
var emptyNode = node.childCount === 0;
if (emptyNode && prevEmptyNode) {
state.write(" \n");
} else if (emptyNode && !prevEmptyNode && !firstChildNode) {
if ((parent === null || parent === void 0 ? void 0 : parent.type.name) === "listItem") {
var prevDelim = state.getDelim();
state.setDelim("");
state.write(" ");
state.setDelim(prevDelim);
}
state.write("\n");
} else {
state.convertInline(node);
if (nextParaNode) {
state.write("\n");
} else {
state.closeBlock(node);
}
}
}
},
heading: function(state, _a, _b) {
var node = _a.node;
var delim = _b.delim;
var headingType = node.attrs.headingType;
if (headingType === "atx") {
state.write(delim + " ");
state.convertInline(node);
state.closeBlock(node);
} else {
state.convertInline(node);
state.ensureNewLine();
state.write(delim);
state.closeBlock(node);
}
},
codeBlock: function(state, _a, _b) {
var node = _a.node;
var delim = _b.delim, text2 = _b.text;
var _c = delim, openDelim = _c[0], closeDelim = _c[1];
state.write(openDelim);
state.ensureNewLine();
state.text(text2, false);
state.ensureNewLine();
state.write(closeDelim);
state.closeBlock(node);
},
blockQuote: function(state, _a, _b) {
var node = _a.node, parent = _a.parent;
var delim = _b.delim;
if ((parent === null || parent === void 0 ? void 0 : parent.type.name) === node.type.name) {
state.flushClose(1);
}
state.wrapBlock(delim, null, node, function() {
return state.convertNode(node);
});
},
bulletList: function(state, _a, _b) {
var node = _a.node;
var delim = _b.delim;
state.convertList(node, repeat$1(" ", 4), function() {
return delim + " ";
});
},
orderedList: function(state, _a) {
var node = _a.node;
var start = node.attrs.order || 1;
state.convertList(node, repeat$1(" ", 4), function(index2) {
var orderedNum = String(start + index2);
return orderedNum + ". ";
});
},
listItem: function(state, _a) {
var node = _a.node;
var _b = node.attrs, task2 = _b.task, checked = _b.checked;
if (task2) {
state.write("[" + (checked ? "x" : " ") + "] ");
}
state.convertNode(node);
},
image: function(state, _, _a) {
var attrs = _a.attrs;
state.write(" + ")");
},
thematicBreak: function(state, _a, _b) {
var node = _a.node;
var delim = _b.delim;
state.write(delim);
state.closeBlock(node);
},
table: function(state, _a) {
var node = _a.node;
state.convertNode(node);
state.closeBlock(node);
},
tableHead: function(state, _a, _b) {
var node = _a.node;
var delim = _b.delim;
var row = node.firstChild;
state.convertNode(node);
var result = delim !== null && delim !== void 0 ? delim : "";
if (!delim && row) {
row.forEach(function(_a2) {
var textContent = _a2.textContent, attrs = _a2.attrs;
var headDelim = createTableHeadDelim(textContent, attrs.align);
result += "| " + headDelim + " ";
});
}
state.write(result + "|");
state.ensureNewLine();
},
tableBody: function(state, _a) {
var node = _a.node;
state.convertNode(node);
},
tableRow: function(state, _a) {
var node = _a.node;
state.convertNode(node);
state.write("|");
state.ensureNewLine();
},
tableHeadCell: function(state, _a, _b) {
var node = _a.node;
var _c = _b.delim, delim = _c === void 0 ? "| " : _c;
state.write(delim);
state.convertTableCell(node);
state.write(" ");
},
tableBodyCell: function(state, _a, _b) {
var node = _a.node;
var _c = _b.delim, delim = _c === void 0 ? "| " : _c;
state.write(delim);
state.convertTableCell(node);
state.write(" ");
},
customBlock: function(state, _a, _b) {
var node = _a.node;
var delim = _b.delim, text2 = _b.text;
var _c = delim, openDelim = _c[0], closeDelim = _c[1];
state.write(openDelim);
state.ensureNewLine();
state.text(text2, false);
state.ensureNewLine();
state.write(closeDelim);
state.closeBlock(node);
},
frontMatter: function(state, _a, _b) {
var node = _a.node;
var text2 = _b.text;
state.text(text2, false);
state.closeBlock(node);
},
widget: function(state, _, _a) {
var text2 = _a.text;
state.write(text2);
},
html: function(state, _a, _b) {
var node = _a.node;
var text2 = _b.text;
state.write(text2);
if (node.attrs.htmlBlock) {
state.closeBlock(node);
}
},
htmlComment: function(state, _a, _b) {
var node = _a.node;
var text2 = _b.text;
state.write(text2);
state.closeBlock(node);
}
};
function write(type, _a) {
var state = _a.state, nodeInfo = _a.nodeInfo, params = _a.params;
var rawHTML = params.rawHTML;
if (rawHTML) {
if (inArray_1(type, ["heading", "codeBlock"]) > -1) {
convertToRawHTMLHavingInlines(state, nodeInfo.node, rawHTML);
} else if (inArray_1(type, ["image", "thematicBreak"]) > -1) {
state.write(rawHTML);
} else {
convertToRawHTMLHavingBlocks(state, nodeInfo, rawHTML);
}
} else {
nodeTypeWriters[type](state, nodeInfo, params);
}
}
function addBackticks(node, side) {
var text2 = node.text;
var ticks = /`+/g;
var len = 0;
if (node.isText && text2) {
var matched = ticks.exec(text2);
while (matched) {
len = Math.max(len, matched[0].length);
matched = ticks.exec(text2);
}
}
var result = len > 0 && side > 0 ? " `" : "`";
for (var i = 0; i < len; i += 1) {
result += "`";
}
if (len > 0 && side < 0) {
result += " ";
}
return result;
}
function getPairRawHTML(rawHTML) {
return rawHTML ? ["<" + rawHTML + ">", "" + rawHTML + ">"] : null;
}
function getOpenRawHTML(rawHTML) {
return rawHTML ? "<" + rawHTML + ">" : null;
}
function getCloseRawHTML(rawHTML) {
return rawHTML ? "" + rawHTML + ">" : null;
}
var toMdConvertors = {
heading: function(_a) {
var node = _a.node;
var attrs = node.attrs;
var level = attrs.level;
var delim = repeat$1("#", level);
if (attrs.headingType === "setext") {
delim = level === 1 ? "===" : "---";
}
return {
delim,
rawHTML: getPairRawHTML(attrs.rawHTML)
};
},
codeBlock: function(_a) {
var node = _a.node;
var _b = node, attrs = _b.attrs, textContent = _b.textContent;
return {
delim: ["```" + (attrs.language || ""), "```"],
rawHTML: getPairRawHTML(attrs.rawHTML),
text: textContent
};
},
blockQuote: function(_a) {
var node = _a.node;
return {
delim: "> ",
rawHTML: getPairRawHTML(node.attrs.rawHTML)
};
},
bulletList: function(_a, _b) {
var node = _a.node;
var inTable = _b.inTable;
var rawHTML = node.attrs.rawHTML;
if (inTable) {
rawHTML = rawHTML || "ul";
}
return {
delim: "*",
rawHTML: getPairRawHTML(rawHTML)
};
},
orderedList: function(_a, _b) {
var node = _a.node;
var inTable = _b.inTable;
var rawHTML = node.attrs.rawHTML;
if (inTable) {
rawHTML = rawHTML || "ol";
}
return {
rawHTML: getPairRawHTML(rawHTML)
};
},
listItem: function(_a, _b) {
var node = _a.node;
var inTable = _b.inTable;
var _c = node.attrs, task2 = _c.task, checked = _c.checked;
var rawHTML = node.attrs.rawHTML;
if (inTable) {
rawHTML = rawHTML || "li";
}
var className = task2 ? ' class="task-list-item' + (checked ? " checked" : "") + '"' : "";
var dataset = task2 ? " data-task" + (checked ? " data-task-checked" : "") : "";
return {
rawHTML: rawHTML ? ["<" + rawHTML + className + dataset + ">", "" + rawHTML + ">"] : null
};
},
table: function(_a) {
var node = _a.node;
return {
rawHTML: getPairRawHTML(node.attrs.rawHTML)
};
},
tableHead: function(_a) {
var node = _a.node;
return {
rawHTML: getPairRawHTML(node.attrs.rawHTML)
};
},
tableBody: function(_a) {
var node = _a.node;
return {
rawHTML: getPairRawHTML(node.attrs.rawHTML)
};
},
tableRow: function(_a) {
var node = _a.node;
return {
rawHTML: getPairRawHTML(node.attrs.rawHTML)
};
},
tableHeadCell: function(_a) {
var node = _a.node;
return {
rawHTML: getPairRawHTML(node.attrs.rawHTML)
};
},
tableBodyCell: function(_a) {
var node = _a.node;
return {
rawHTML: getPairRawHTML(node.attrs.rawHTML)
};
},
image: function(_a) {
var node = _a.node;
var attrs = node.attrs;
var rawHTML = attrs.rawHTML, altText = attrs.altText;
var imageUrl = attrs.imageUrl.replace(/&/g, "&");
var altAttr = altText ? ' alt="' + escapeXml$1(altText) + '"' : "";
return {
rawHTML: rawHTML ? "<" + rawHTML + ' src="' + escapeXml$1(imageUrl) + '"' + altAttr + ">" : null,
attrs: {
altText: escapeTextForLink(altText || ""),
imageUrl
}
};
},
thematicBreak: function(_a) {
var node = _a.node;
return {
delim: "***",
rawHTML: getOpenRawHTML(node.attrs.rawHTML)
};
},
customBlock: function(_a) {
var node = _a.node;
var _b = node, attrs = _b.attrs, textContent = _b.textContent;
return {
delim: ["$$" + attrs.info, "$$"],
text: textContent
};
},
frontMatter: function(_a) {
var node = _a.node;
return {
text: node.textContent
};
},
widget: function(_a) {
var node = _a.node;
return {
text: node.textContent
};
},
strong: function(_a, _b) {
var node = _a.node;
var entering = _b.entering;
var rawHTML = node.attrs.rawHTML;
return {
delim: "**",
rawHTML: entering ? getOpenRawHTML(rawHTML) : getCloseRawHTML(rawHTML)
};
},
emph: function(_a, _b) {
var node = _a.node;
var entering = _b.entering;
var rawHTML = node.attrs.rawHTML;
return {
delim: "*",
rawHTML: entering ? getOpenRawHTML(rawHTML) : getCloseRawHTML(rawHTML)
};
},
strike: function(_a, _b) {
var node = _a.node;
var entering = _b.entering;
var rawHTML = node.attrs.rawHTML;
return {
delim: "~~",
rawHTML: entering ? getOpenRawHTML(rawHTML) : getCloseRawHTML(rawHTML)
};
},
link: function(_a, _b) {
var node = _a.node;
var entering = _b.entering;
var attrs = node.attrs;
var title = attrs.title, rawHTML = attrs.rawHTML;
var linkUrl = attrs.linkUrl.replace(/&/g, "&");
var titleAttr = title ? ' title="' + escapeXml$1(title) + '"' : "";
if (entering) {
return {
delim: "[",
rawHTML: rawHTML ? "<" + rawHTML + ' href="' + escapeXml$1(linkUrl) + '"' + titleAttr + ">" : null
};
}
return {
delim: "](" + linkUrl + (title ? " " + quote(escapeTextForLink(title)) : "") + ")",
rawHTML: getCloseRawHTML(rawHTML)
};
},
code: function(_a, _b) {
var node = _a.node, parent = _a.parent, _c = _a.index, index2 = _c === void 0 ? 0 : _c;
var entering = _b.entering;
var delim = entering ? addBackticks(parent.child(index2), -1) : addBackticks(parent.child(index2 - 1), 1);
var rawHTML = entering ? getOpenRawHTML(node.attrs.rawHTML) : getCloseRawHTML(node.attrs.rawHTML);
return {
delim,
rawHTML
};
},
htmlComment: function(_a) {
var node = _a.node;
return {
text: node.textContent
};
},
// html inline node, html block node
html: function(_a, _b) {
var node = _a.node;
var entering = _b.entering;
var tagName = node.type.name;
var attrs = node.attrs.htmlAttrs;
var openTag = "<" + tagName;
var closeTag = "" + tagName + ">";
Object.keys(attrs).forEach(function(attrName) {
openTag += " " + attrName + '="' + attrs[attrName].replace(/"/g, "'") + '"';
});
openTag += ">";
if (node.attrs.htmlInline) {
return {
rawHTML: entering ? openTag : closeTag
};
}
return {
text: "" + openTag + node.attrs.childrenHTML + closeTag
};
}
};
var markTypeOptions = {
strong: {
mixable: true,
removedEnclosingWhitespace: true
},
emph: {
mixable: true,
removedEnclosingWhitespace: true
},
strike: {
mixable: true,
removedEnclosingWhitespace: true
},
code: {
escape: false
},
link: null,
html: null
};
function createNodeTypeConvertors(convertors2) {
var nodeTypeConvertors = {};
var nodeTypes = Object.keys(nodeTypeWriters);
nodeTypes.forEach(function(type) {
nodeTypeConvertors[type] = function(state, nodeInfo) {
var writer = nodeTypeWriters[type];
if (writer) {
var convertor = convertors2[type];
var params = convertor ? convertor(nodeInfo, {
inTable: state.inTable
}) : {};
write(type, { state, nodeInfo, params });
}
};
});
return nodeTypeConvertors;
}
function createMarkTypeConvertors(convertors2) {
var markTypeConvertors = {};
var markTypes = Object.keys(markTypeOptions);
markTypes.forEach(function(type) {
markTypeConvertors[type] = function(nodeInfo, entering) {
var markOption = markTypeOptions[type];
var convertor = convertors2[type];
var runConvertor = convertor && nodeInfo && !isUndefined_1(entering);
var params = runConvertor ? convertor(nodeInfo, { entering }) : {};
return __assign$1(__assign$1({}, params), markOption);
};
});
return markTypeConvertors;
}
function createMdConvertors(customConvertors) {
var customConvertorTypes = Object.keys(customConvertors);
customConvertorTypes.forEach(function(type) {
var baseConvertor = toMdConvertors[type];
var customConvertor = customConvertors[type];
if (baseConvertor) {
toMdConvertors[type] = function(nodeInfo, context) {
context.origin = function() {
return baseConvertor(nodeInfo, context);
};
return customConvertor(nodeInfo, context);
};
} else {
toMdConvertors[type] = customConvertor;
}
delete customConvertors[type];
});
var nodeTypeConvertors = createNodeTypeConvertors(toMdConvertors);
var markTypeConvertors = createMarkTypeConvertors(toMdConvertors);
return {
nodeTypeConvertors,
markTypeConvertors
};
}
var ToMdConvertorState = (
/** @class */
(function() {
function ToMdConvertorState2(_a) {
var nodeTypeConvertors = _a.nodeTypeConvertors, markTypeConvertors = _a.markTypeConvertors;
this.nodeTypeConvertors = nodeTypeConvertors;
this.markTypeConvertors = markTypeConvertors;
this.delim = "";
this.result = "";
this.closed = false;
this.tightList = false;
this.stopNewline = false;
this.inTable = false;
}
ToMdConvertorState2.prototype.getMarkConvertor = function(mark) {
var type = mark.attrs.htmlInline ? "html" : mark.type.name;
return this.markTypeConvertors[type];
};
ToMdConvertorState2.prototype.isInBlank = function() {
return /(^|\n)$/.test(this.result);
};
ToMdConvertorState2.prototype.markText = function(mark, entering, parent, index2) {
var convertor = this.getMarkConvertor(mark);
if (convertor) {
var _a = convertor({ node: mark, parent, index: index2 }, entering), delim = _a.delim, rawHTML = _a.rawHTML;
return rawHTML || delim;
}
return "";
};
ToMdConvertorState2.prototype.setDelim = function(delim) {
this.delim = delim;
};
ToMdConvertorState2.prototype.getDelim = function() {
return this.delim;
};
ToMdConvertorState2.prototype.flushClose = function(size) {
if (!this.stopNewline && this.closed) {
if (!this.isInBlank()) {
this.result += "\n";
}
if (!size) {
size = 2;
}
if (size > 1) {
var delimMin = this.delim;
var trim = /\s+$/.exec(delimMin);
if (trim) {
delimMin = delimMin.slice(0, delimMin.length - trim[0].length);
}
for (var i = 1; i < size; i += 1) {
this.result += delimMin + "\n";
}
}
this.closed = false;
}
};
ToMdConvertorState2.prototype.wrapBlock = function(delim, firstDelim, node, fn) {
var old = this.getDelim();
this.write(firstDelim || delim);
this.setDelim(this.getDelim() + delim);
fn();
this.setDelim(old);
this.closeBlock(node);
};
ToMdConvertorState2.prototype.ensureNewLine = function() {
if (!this.isInBlank()) {
this.result += "\n";
}
};
ToMdConvertorState2.prototype.write = function(content) {
if (content === void 0) {
content = "";
}
this.flushClose();
if (this.delim && this.isInBlank()) {
this.result += this.delim;
}
if (content) {
this.result += content;
}
};
ToMdConvertorState2.prototype.closeBlock = function(node) {
this.closed = node;
};
ToMdConvertorState2.prototype.text = function(text2, escaped) {
if (escaped === void 0) {
escaped = true;
}
var lines = text2.split("\n");
for (var i = 0; i < lines.length; i += 1) {
this.write();
this.result += escaped ? escape$1(lines[i]) : lines[i];
if (i !== lines.length - 1) {
this.result += "\n";
}
}
};
ToMdConvertorState2.prototype.convertBlock = function(node, parent, index2) {
var type = node.type.name;
var convertor = this.nodeTypeConvertors[type];
var nodeInfo = { node, parent, index: index2 };
if (node.attrs.htmlBlock) {
this.nodeTypeConvertors.html(this, nodeInfo);
} else if (convertor) {
convertor(this, nodeInfo);
}
};
ToMdConvertorState2.prototype.convertInline = function(parent) {
var _this = this;
var active = [];
var trailing = "";
var progress = function(node, _, index2) {
var marks = node ? node.marks : [];
var leading = trailing;
trailing = "";
var removedWhitespace = node && node.isText && marks.some(function(mark2) {
var markConvertor2 = _this.getMarkConvertor(mark2);
var info = markConvertor2 && markConvertor2();
return info && info.removedEnclosingWhitespace;
});
if (removedWhitespace && node && node.text) {
var _a = /^(\s*)(.*?)(\s*)$/m.exec(node.text), lead = _a[1], mark = _a[2], trail = _a[3];
leading += lead;
trailing = trail;
if (lead || trail) {
node = mark ? node.withText(mark) : null;
if (!node) {
marks = active;
}
}
}
var lastMark = marks.length && last$1(marks);
var markConvertor = lastMark && _this.getMarkConvertor(lastMark);
var markType = markConvertor && markConvertor();
var noEscape = markType && markType.escape === false;
var len = marks.length - (noEscape ? 1 : 0);
for (var i = 0; i < len; i += 1) {
var mark = marks[i];
if (markType && !markType.mixable) {
break;
}
for (var j = 0; j < active.length; j += 1) {
var other = active[j];
if (markType && !markType.mixable) {
break;
}
if (mark.eq(other)) {
if (i > j) {
marks = marks.slice(0, j).concat(mark).concat(marks.slice(j, i)).concat(marks.slice(i + 1, len));
} else if (j > i) {
marks = marks.slice(0, i).concat(marks.slice(i + 1, j)).concat(mark).concat(marks.slice(j, len));
}
break;
}
}
}
var keep = 0;
while (keep < Math.min(active.length, len) && marks[keep].eq(active[keep])) {
keep += 1;
}
while (keep < active.length) {
var activedMark = active.pop();
if (activedMark) {
_this.text(_this.markText(activedMark, false, parent, index2), false);
}
}
if (leading) {
_this.text(leading);
}
if (node) {
while (active.length < len) {
var mark = marks[active.length];
active.push(mark);
_this.text(_this.markText(mark, true, parent, index2), false);
}
if (noEscape && node.isText) {
_this.text(_this.markText(lastMark, true, parent, index2) + node.text + _this.markText(lastMark, false, parent, index2 + 1), false);
} else {
_this.convertBlock(node, parent, index2);
}
}
};
parent.forEach(progress);
progress(null, null, parent.childCount);
};
ToMdConvertorState2.prototype.convertList = function(node, delim, firstDelimFn) {
var _this = this;
var _a;
if (this.closed && this.closed.type === node.type) {
this.flushClose(3);
} else if (this.tightList) {
this.flushClose(1);
}
var tight = (_a = node.attrs.tight) !== null && _a !== void 0 ? _a : true;
var prevTight = this.tightList;
this.tightList = tight;
node.forEach(function(child, _, index2) {
if (index2 && tight) {
_this.flushClose(1);
}
_this.wrapBlock(delim, firstDelimFn(index2), node, function() {
return _this.convertBlock(child, node, index2);
});
});
this.tightList = prevTight;
};
ToMdConvertorState2.prototype.convertTableCell = function(node) {
var _this = this;
this.stopNewline = true;
this.inTable = true;
node.forEach(function(child, _, index2) {
if (includes(["bulletList", "orderedList"], child.type.name)) {
_this.convertBlock(child, node, index2);
_this.closed = false;
} else {
_this.convertInline(child);
if (index2 < node.childCount - 1) {
var nextChild = node.child(index2 + 1);
if (nextChild.type.name === "paragraph") {
_this.write(" ");
}
}
}
});
this.stopNewline = false;
this.inTable = false;
};
ToMdConvertorState2.prototype.convertNode = function(parent, infoForPosSync) {
var _this = this;
parent.forEach(function(node, _, index2) {
_this.convertBlock(node, parent, index2);
if ((infoForPosSync === null || infoForPosSync === void 0 ? void 0 : infoForPosSync.node) === node) {
var lineTexts = _this.result.split("\n");
infoForPosSync.setMappedPos([lineTexts.length, last$1(lineTexts).length + 1]);
}
});
return this.result;
};
return ToMdConvertorState2;
})()
);
var Convertor = (
/** @class */
(function() {
function Convertor2(schema, toMdConvertors2, toHTMLConvertors, eventEmitter) {
var _this = this;
this.setMappedPos = function(pos) {
_this.mappedPosWhenConverting = pos;
};
this.schema = schema;
this.eventEmitter = eventEmitter;
this.focusedNode = null;
this.mappedPosWhenConverting = null;
this.toWwConvertors = createWwConvertors(toHTMLConvertors);
this.toMdConvertors = createMdConvertors(toMdConvertors2 || {});
this.eventEmitter.listen("setFocusedNode", function(node) {
return _this.focusedNode = node;
});
}
Convertor2.prototype.getMappedPos = function() {
return this.mappedPosWhenConverting;
};
Convertor2.prototype.getInfoForPosSync = function() {
return { node: this.focusedNode, setMappedPos: this.setMappedPos };
};
Convertor2.prototype.toWysiwygModel = function(mdNode) {
var state = new ToWwConvertorState(this.schema, this.toWwConvertors);
return state.convertNode(mdNode, this.getInfoForPosSync());
};
Convertor2.prototype.toMarkdownText = function(wwNode) {
var state = new ToMdConvertorState(this.toMdConvertors);
var markdownText = state.convertNode(wwNode, this.getInfoForPosSync());
markdownText = this.eventEmitter.emitReduce("beforeConvertWysiwygToMarkdown", markdownText);
return markdownText;
};
return Convertor2;
})()
);
function execPlugin(pluginInfo) {
var plugin = pluginInfo.plugin, eventEmitter = pluginInfo.eventEmitter, usageStatistics = pluginInfo.usageStatistics, instance = pluginInfo.instance;
var pmState = { Plugin, PluginKey, Selection, TextSelection };
var pmView = { Decoration, DecorationSet };
var pmModel = { Fragment };
var pmRules = { InputRule, inputRules, undoInputRule };
var pmKeymap = { keymap };
var context = {
eventEmitter,
usageStatistics,
instance,
pmState,
pmView,
pmModel,
pmRules,
pmKeymap,
i18n
};
if (isArray_1(plugin)) {
var pluginFn = plugin[0], _a = plugin[1], options = _a === void 0 ? {} : _a;
return pluginFn(context, options);
}
return plugin(context);
}
function getPluginInfo(pluginsInfo) {
var plugins = pluginsInfo.plugins, eventEmitter = pluginsInfo.eventEmitter, usageStatistics = pluginsInfo.usageStatistics, instance = pluginsInfo.instance;
eventEmitter.listen("mixinTableOffsetMapPrototype", mixinTableOffsetMapPrototype);
return (plugins !== null && plugins !== void 0 ? plugins : []).reduce(function(acc, plugin) {
var pluginInfoResult = execPlugin({
plugin,
eventEmitter,
usageStatistics,
instance
});
if (!pluginInfoResult) {
throw new Error("The return value of the executed plugin is empty.");
}
var markdownParsers = pluginInfoResult.markdownParsers, toHTMLRenderers = pluginInfoResult.toHTMLRenderers, toMarkdownRenderers = pluginInfoResult.toMarkdownRenderers, markdownPlugins = pluginInfoResult.markdownPlugins, wysiwygPlugins = pluginInfoResult.wysiwygPlugins, wysiwygNodeViews = pluginInfoResult.wysiwygNodeViews, markdownCommands = pluginInfoResult.markdownCommands, wysiwygCommands = pluginInfoResult.wysiwygCommands, toolbarItems = pluginInfoResult.toolbarItems;
if (toHTMLRenderers) {
acc.toHTMLRenderers = deepMergedCopy(acc.toHTMLRenderers, toHTMLRenderers);
}
if (toMarkdownRenderers) {
acc.toMarkdownRenderers = deepMergedCopy(acc.toMarkdownRenderers, toMarkdownRenderers);
}
if (markdownPlugins) {
acc.mdPlugins = acc.mdPlugins.concat(markdownPlugins);
}
if (wysiwygPlugins) {
acc.wwPlugins = acc.wwPlugins.concat(wysiwygPlugins);
}
if (wysiwygNodeViews) {
acc.wwNodeViews = __assign$1(__assign$1({}, acc.wwNodeViews), wysiwygNodeViews);
}
if (markdownCommands) {
acc.mdCommands = __assign$1(__assign$1({}, acc.mdCommands), markdownCommands);
}
if (wysiwygCommands) {
acc.wwCommands = __assign$1(__assign$1({}, acc.wwCommands), wysiwygCommands);
}
if (toolbarItems) {
acc.toolbarItems = acc.toolbarItems.concat(toolbarItems);
}
if (markdownParsers) {
acc.markdownParsers = __assign$1(__assign$1({}, acc.markdownParsers), markdownParsers);
}
return acc;
}, {
toHTMLRenderers: {},
toMarkdownRenderers: {},
mdPlugins: [],
wwPlugins: [],
wwNodeViews: {},
mdCommands: {},
wwCommands: {},
toolbarItems: [],
markdownParsers: {}
});
}
var TASK_ATTR_NAME = "data-task";
var DISABLED_TASK_ATTR_NAME = "data-task-disabled";
var TASK_CHECKED_CLASS_NAME = "checked";
function registerHTMLTagToWhitelist(convertorMap) {
["htmlBlock", "htmlInline"].forEach(function(htmlType) {
if (convertorMap[htmlType]) {
Object.keys(convertorMap[htmlType]).forEach(function(type) {
return registerTagWhitelistIfPossible(type);
});
}
});
}
var ToastUIEditorViewer = (
/** @class */
(function() {
function ToastUIEditorViewer2(options) {
var _this = this;
this.options = extend_1({
linkAttributes: null,
extendedAutolinks: false,
customHTMLRenderer: null,
referenceDefinition: false,
customHTMLSanitizer: null,
frontMatter: false,
usageStatistics: true,
theme: "light"
}, options);
this.eventEmitter = new EventEmitter();
var linkAttributes = sanitizeLinkAttribute(this.options.linkAttributes);
var _a = getPluginInfo({
plugins: this.options.plugins,
eventEmitter: this.eventEmitter,
usageStatistics: this.options.usageStatistics,
instance: this
}) || {}, toHTMLRenderers = _a.toHTMLRenderers, markdownParsers = _a.markdownParsers;
var _b = this.options, customHTMLRenderer = _b.customHTMLRenderer, extendedAutolinks = _b.extendedAutolinks, referenceDefinition = _b.referenceDefinition, frontMatter2 = _b.frontMatter, customHTMLSanitizer = _b.customHTMLSanitizer;
var rendererOptions = {
linkAttributes,
customHTMLRenderer: __assign$1(__assign$1({}, toHTMLRenderers), customHTMLRenderer),
extendedAutolinks,
referenceDefinition,
frontMatter: frontMatter2,
sanitizer: customHTMLSanitizer || sanitizeHTML
};
registerHTMLTagToWhitelist(rendererOptions.customHTMLRenderer);
if (this.options.events) {
forEachOwnProperties_1(this.options.events, function(fn, key) {
_this.on(key, fn);
});
}
var _c = this.options, el2 = _c.el, initialValue = _c.initialValue, theme = _c.theme;
var existingHTML = el2.innerHTML;
if (theme !== "light") {
el2.classList.add(cls(theme));
}
el2.innerHTML = "";
this.toastMark = new ToastMark("", {
disallowedHtmlBlockTags: ["br", "img"],
extendedAutolinks,
referenceDefinition,
disallowDeepHeading: true,
frontMatter: frontMatter2,
customParser: markdownParsers
});
this.preview = new MarkdownPreview(this.eventEmitter, __assign$1(__assign$1({}, rendererOptions), { isViewer: true }));
on_1(this.preview.previewContent, "mousedown", this.toggleTask.bind(this));
if (initialValue) {
this.setMarkdown(initialValue);
} else if (existingHTML) {
this.preview.setHTML(existingHTML);
}
el2.appendChild(this.preview.previewContent);
this.eventEmitter.emit("load", this);
}
ToastUIEditorViewer2.prototype.toggleTask = function(ev) {
var element = ev.target;
var style = getComputedStyle(element, ":before");
if (!element.hasAttribute(DISABLED_TASK_ATTR_NAME) && element.hasAttribute(TASK_ATTR_NAME) && isPositionInBox(style, ev.offsetX, ev.offsetY)) {
toggleClass(element, TASK_CHECKED_CLASS_NAME);
this.eventEmitter.emit("change", {
source: "viewer",
date: ev
});
}
};
ToastUIEditorViewer2.prototype.setMarkdown = function(markdown) {
var lineTexts = this.toastMark.getLineTexts();
var length = lineTexts.length;
var lastLine = last$1(lineTexts);
var endSourcepos = [length, lastLine.length + 1];
var editResult = this.toastMark.editMarkdown([1, 1], endSourcepos, markdown || "");
this.eventEmitter.emit("updatePreview", editResult);
};
ToastUIEditorViewer2.prototype.on = function(type, handler) {
this.eventEmitter.listen(type, handler);
};
ToastUIEditorViewer2.prototype.off = function(type) {
this.eventEmitter.removeEventHandler(type);
};
ToastUIEditorViewer2.prototype.addHook = function(type, handler) {
this.eventEmitter.removeEventHandler(type);
this.eventEmitter.listen(type, handler);
};
ToastUIEditorViewer2.prototype.destroy = function() {
off_1(this.preview.el, "mousedown", this.toggleTask.bind(this));
this.preview.destroy();
this.eventEmitter.emit("destroy");
};
ToastUIEditorViewer2.prototype.isViewer = function() {
return true;
};
ToastUIEditorViewer2.prototype.isMarkdownMode = function() {
return false;
};
ToastUIEditorViewer2.prototype.isWysiwygMode = function() {
return false;
};
return ToastUIEditorViewer2;
})()
);
function isPmNode(node) {
return node instanceof Node2;
}
function isContainer(type) {
var containerTypes = [
"document",
"blockQuote",
"bulletList",
"orderedList",
"listItem",
"paragraph",
"heading",
"emph",
"strong",
"strike",
"link",
"image",
"table",
"tableHead",
"tableBody",
"tableRow",
"tableHeadCell",
"tableBodyCell"
];
return includes(containerTypes, type);
}
function createMdLikeNode(node) {
var attrs = node.attrs, type = node.type;
var nodeType = type.name;
var mdLikeNode = {
type: nodeType,
wysiwygNode: true,
literal: !isContainer(nodeType) && isPmNode(node) ? node.textContent : null
};
var nodeTypeMap = {
heading: { level: attrs.level },
link: { destination: attrs.linkUrl, title: attrs.title },
image: { destination: attrs.imageUrl },
codeBlock: { info: attrs.language },
bulletList: { type: "list", listData: { type: "bullet" } },
orderedList: { type: "list", listData: { type: "ordered", start: attrs.order } },
listItem: { type: "item", listData: { task: attrs.task, checked: attrs.checked } },
tableHeadCell: { type: "tableCell", cellType: "head", align: attrs.align },
tableBodyCell: { type: "tableCell", cellType: "body", align: attrs.align },
customBlock: { info: attrs.info }
};
var nodeInfo = nodeTypeMap[nodeType];
var attributes = __assign$1(__assign$1({}, mdLikeNode), nodeInfo);
var _a = node.attrs, htmlAttrs = _a.htmlAttrs, childrenHTML = _a.childrenHTML;
if (htmlAttrs) {
return __assign$1(__assign$1({}, attributes), { attrs: htmlAttrs, childrenHTML });
}
return attributes;
}
var tokenToDOMNode = {
openTag: function(token, stack) {
var _a = token, tagName = _a.tagName, classNames = _a.classNames, attributes = _a.attributes;
var el2 = document.createElement(tagName);
var attrs = {};
if (classNames) {
el2.className = classNames.join(" ");
}
if (attributes) {
attrs = __assign$1(__assign$1({}, attrs), attributes);
}
setAttributes(attrs, el2);
stack.push(el2);
},
closeTag: function(_, stack) {
if (stack.length > 1) {
var el2 = stack.pop();
last$1(stack).appendChild(el2);
}
},
html: function(token, stack) {
last$1(stack).insertAdjacentHTML("beforeend", token.content);
},
text: function(token, stack) {
var textNode = document.createTextNode(token.content);
last$1(stack).appendChild(textNode);
}
};
var WwToDOMAdaptor = (
/** @class */
(function() {
function WwToDOMAdaptor2(linkAttributes, customRenderer) {
var convertors2 = getHTMLRenderConvertors(linkAttributes, customRenderer);
var customHTMLConvertor = __assign$1(__assign$1({}, customRenderer.htmlBlock), customRenderer.htmlInline);
this.customConvertorKeys = Object.keys(customRenderer).concat(Object.keys(customHTMLConvertor));
this.renderer = new Renderer({
gfm: true,
convertors: __assign$1(__assign$1({}, convertors2), customHTMLConvertor)
});
this.convertors = this.renderer.getConvertors();
}
WwToDOMAdaptor2.prototype.generateTokens = function(node) {
var mdLikeNode = createMdLikeNode(node);
var context = {
entering: true,
leaf: isPmNode(node) ? node.isLeaf : false,
options: this.renderer.getOptions(),
getChildrenText: function() {
return isPmNode(node) ? node.textContent : "";
},
skipChildren: function() {
return false;
}
};
var convertor = this.convertors[node.type.name];
var converted = convertor(mdLikeNode, context, this.convertors);
var tokens = isArray_1(converted) ? converted : [converted];
if (isContainer(node.type.name) || node.attrs.htmlInline) {
context.entering = false;
tokens.push({ type: "text", content: isPmNode(node) ? node.textContent : "" });
tokens = tokens.concat(convertor(mdLikeNode, context, this.convertors));
}
return tokens;
};
WwToDOMAdaptor2.prototype.toDOMNode = function(node) {
var tokens = this.generateTokens(node);
var stack = [];
tokens.forEach(function(token) {
return tokenToDOMNode[token.type](token, stack);
});
return stack[0];
};
WwToDOMAdaptor2.prototype.getToDOMNode = function(name) {
if (includes(this.customConvertorKeys, name)) {
return this.toDOMNode.bind(this);
}
return null;
};
return WwToDOMAdaptor2;
})()
);
var ANIMATION_TIME = 100;
var SCROLL_BLOCKING_RESET_DELAY = 15;
var currentTimeoutId = null;
var releaseTimer = null;
function run2(deltaScrollTop, _a) {
var syncScrollTop = _a.syncScrollTop, releaseEventBlock = _a.releaseEventBlock;
if (releaseTimer) {
clearTimeout(releaseTimer);
}
syncScrollTop(deltaScrollTop);
releaseTimer = setTimeout(function() {
releaseEventBlock();
}, SCROLL_BLOCKING_RESET_DELAY);
}
function animate(curScrollTop, targetScrollTop, syncCallbacks) {
var diff2 = targetScrollTop - curScrollTop;
var startTime = Date.now();
var step = function() {
var stepTime = Date.now();
var progress = (stepTime - startTime) / ANIMATION_TIME;
var deltaValue;
if (currentTimeoutId) {
clearTimeout(currentTimeoutId);
}
if (progress < 1) {
deltaValue = curScrollTop + diff2 * Math.cos((1 - progress) * Math.PI / 2);
run2(Math.ceil(deltaValue), syncCallbacks);
currentTimeoutId = setTimeout(step, 1);
} else {
run2(targetScrollTop, syncCallbacks);
currentTimeoutId = null;
}
};
step();
}
var EDITOR_BOTTOM_PADDING = 18;
var ScrollSync = (
/** @class */
(function() {
function ScrollSync2(mdEditor, preview, eventEmitter) {
this.latestEditorScrollTop = null;
this.latestPreviewScrollTop = null;
this.blockedScroll = null;
this.active = true;
this.timer = null;
var previewRoot = preview.previewContent, previewEl = preview.el;
this.previewRoot = previewRoot;
this.previewEl = previewEl;
this.mdEditor = mdEditor;
this.editorView = mdEditor.view;
this.toastMark = mdEditor.getToastMark();
this.eventEmitter = eventEmitter;
this.addScrollSyncEvent();
}
ScrollSync2.prototype.addScrollSyncEvent = function() {
var _this = this;
this.eventEmitter.listen("afterPreviewRender", function() {
_this.clearTimer();
_this.timer = setTimeout(function() {
_this.syncPreviewScrollTop(true);
}, 200);
});
this.eventEmitter.listen("scroll", function(type, data) {
if (_this.active) {
if (type === "editor" && _this.blockedScroll !== "editor") {
_this.syncPreviewScrollTop();
} else if (type === "preview" && _this.blockedScroll !== "preview") {
_this.syncEditorScrollTop(data);
}
}
});
this.eventEmitter.listen("toggleScrollSync", function(active) {
_this.active = active;
});
};
ScrollSync2.prototype.getMdNodeAtPos = function(doc3, posInfo) {
var indexInfo = doc3.content.findIndex(posInfo.pos);
var line = indexInfo.index;
return this.toastMark.findFirstNodeAtLine(line + 1);
};
ScrollSync2.prototype.getScrollTopByCaretPos = function() {
var pos = this.mdEditor.getSelection();
var firstMdNode = this.toastMark.findFirstNodeAtLine(pos[0][0]);
var previewHeight = this.previewEl.clientHeight;
var el2 = getParentNodeObj(this.previewRoot, firstMdNode).el;
var totalOffsetTop = getTotalOffsetTop(el2, this.previewRoot) || el2.offsetTop;
var nodeHeight = el2.clientHeight;
var targetScrollTop = totalOffsetTop + nodeHeight - previewHeight * 0.5;
this.latestEditorScrollTop = null;
var diff2 = el2.getBoundingClientRect().top - this.previewEl.getBoundingClientRect().top;
return diff2 < previewHeight ? null : targetScrollTop;
};
ScrollSync2.prototype.syncPreviewScrollTop = function(editing) {
if (editing === void 0) {
editing = false;
}
var _a = this, editorView = _a.editorView, previewEl = _a.previewEl, previewRoot = _a.previewRoot;
var _b = editorView.dom.getBoundingClientRect(), left = _b.left, top2 = _b.top;
var posInfo = editorView.posAtCoords({ left, top: top2 });
var doc3 = editorView.state.doc;
var firstMdNode = this.getMdNodeAtPos(doc3, posInfo);
if (!firstMdNode || isHTMLNode(firstMdNode)) {
return;
}
var curScrollTop = previewEl.scrollTop;
var _c = editorView.dom, scrollTop = _c.scrollTop, scrollHeight = _c.scrollHeight, clientHeight = _c.clientHeight, children = _c.children;
var isBottomPos = scrollHeight - scrollTop <= clientHeight + EDITOR_BOTTOM_PADDING;
var targetScrollTop = isBottomPos ? previewEl.scrollHeight : 0;
if (scrollTop && !isBottomPos) {
if (editing) {
var scrollTopByEditing = this.getScrollTopByCaretPos();
if (!scrollTopByEditing) {
return;
}
targetScrollTop = scrollTopByEditing;
} else {
var _d = getParentNodeObj(this.previewRoot, firstMdNode), el2 = _d.el, mdNode = _d.mdNode;
var _e = getEditorRangeHeightInfo(doc3, mdNode, children), height = _e.height, rect2 = _e.rect;
var totalOffsetTop = getTotalOffsetTop(el2, previewRoot) || el2.offsetTop;
var nodeHeight = el2.clientHeight;
var ratio2 = top2 > rect2.top ? Math.min((top2 - rect2.top) / height, 1) : 0;
targetScrollTop = totalOffsetTop + nodeHeight * ratio2;
}
targetScrollTop = this.getResolvedScrollTop("editor", scrollTop, targetScrollTop, curScrollTop);
this.latestEditorScrollTop = scrollTop;
}
if (targetScrollTop !== curScrollTop) {
this.run("editor", targetScrollTop, curScrollTop);
}
};
ScrollSync2.prototype.syncEditorScrollTop = function(targetNode) {
var _a = this, toastMark = _a.toastMark, editorView = _a.editorView, previewRoot = _a.previewRoot, previewEl = _a.previewEl;
var dom = editorView.dom, state = editorView.state;
var scrollTop = previewEl.scrollTop, clientHeight = previewEl.clientHeight, scrollHeight = previewEl.scrollHeight;
var isBottomPos = scrollHeight - scrollTop <= clientHeight;
var curScrollTop = dom.scrollTop;
var targetScrollTop = isBottomPos ? dom.scrollHeight : 0;
if (scrollTop && targetNode && !isBottomPos) {
targetNode = findAncestorHavingId(targetNode, previewRoot);
if (!targetNode.getAttribute("data-nodeid")) {
return;
}
var children = dom.children;
var mdNodeId = Number(targetNode.getAttribute("data-nodeid"));
var _b = getParentNodeObj(this.previewRoot, toastMark.findNodeById(mdNodeId)), mdNode = _b.mdNode, el2 = _b.el;
var mdNodeStartLine = getMdStartLine(mdNode);
targetScrollTop = children[mdNodeStartLine - 1].offsetTop;
var height = getEditorRangeHeightInfo(state.doc, mdNode, children).height;
var _c = getAndSaveOffsetInfo(el2, previewRoot, mdNodeId), nodeHeight = _c.nodeHeight, offsetTop = _c.offsetTop;
targetScrollTop += getAdditionalPos(scrollTop, offsetTop, nodeHeight, height);
targetScrollTop = this.getResolvedScrollTop("preview", scrollTop, targetScrollTop, curScrollTop);
this.latestPreviewScrollTop = scrollTop;
}
if (targetScrollTop !== curScrollTop) {
this.run("preview", targetScrollTop, curScrollTop);
}
};
ScrollSync2.prototype.getResolvedScrollTop = function(from2, scrollTop, targetScrollTop, curScrollTop) {
var latestScrollTop = from2 === "editor" ? this.latestEditorScrollTop : this.latestPreviewScrollTop;
if (latestScrollTop === null) {
return targetScrollTop;
}
return latestScrollTop < scrollTop ? Math.max(targetScrollTop, curScrollTop) : Math.min(targetScrollTop, curScrollTop);
};
ScrollSync2.prototype.run = function(from2, targetScrollTop, curScrollTop) {
var _this = this;
var scrollTarget;
if (from2 === "editor") {
scrollTarget = this.previewEl;
this.blockedScroll = "preview";
} else {
scrollTarget = this.editorView.dom;
this.blockedScroll = "editor";
}
var syncCallbacks = {
syncScrollTop: function(scrollTop) {
return scrollTarget.scrollTop = scrollTop;
},
releaseEventBlock: function() {
return _this.blockedScroll = null;
}
};
animate(curScrollTop, targetScrollTop, syncCallbacks);
};
ScrollSync2.prototype.clearTimer = function() {
if (this.timer) {
clearTimeout(this.timer);
this.timer = null;
}
};
ScrollSync2.prototype.destroy = function() {
this.clearTimer();
this.eventEmitter.removeEventHandler("scroll");
this.eventEmitter.removeEventHandler("afterPreviewRender");
};
return ScrollSync2;
})()
);
var queryMap = {
getPopupInitialValues: function(editor, payload) {
var popupName = payload.popupName;
return popupName === "link" ? { linkText: editor.getSelectedText() } : {};
}
};
function buildQuery(editor) {
editor.eventEmitter.listen("query", function(query, payload) {
return queryMap[query](editor, payload);
});
}
var ToastUIEditorCore = (
/** @class */
(function() {
function ToastUIEditorCore2(options) {
var _this = this;
this.initialHTML = options.el.innerHTML;
options.el.innerHTML = "";
this.options = extend_1({
previewStyle: "tab",
previewHighlight: true,
initialEditType: "markdown",
height: "300px",
minHeight: "200px",
language: "en-US",
useCommandShortcut: true,
usageStatistics: true,
toolbarItems: [
["heading", "bold", "italic", "strike"],
["hr", "quote"],
["ul", "ol", "task", "indent", "outdent"],
["table", "image", "link"],
["code", "codeblock"],
["scrollSync"]
],
hideModeSwitch: false,
linkAttributes: null,
extendedAutolinks: false,
customHTMLRenderer: null,
customMarkdownRenderer: null,
referenceDefinition: false,
customHTMLSanitizer: null,
frontMatter: false,
widgetRules: [],
theme: "light",
autofocus: true
}, options);
var _a = this.options, customHTMLRenderer = _a.customHTMLRenderer, extendedAutolinks = _a.extendedAutolinks, referenceDefinition = _a.referenceDefinition, frontMatter2 = _a.frontMatter, customMarkdownRenderer = _a.customMarkdownRenderer, useCommandShortcut = _a.useCommandShortcut, initialEditType = _a.initialEditType, widgetRules2 = _a.widgetRules, customHTMLSanitizer = _a.customHTMLSanitizer;
this.mode = initialEditType || "markdown";
this.mdPreviewStyle = this.options.previewStyle;
this.i18n = i18n;
this.i18n.setCode(this.options.language);
this.eventEmitter = new EventEmitter();
setWidgetRules(widgetRules2);
var linkAttributes = sanitizeLinkAttribute(this.options.linkAttributes);
this.pluginInfo = getPluginInfo({
plugins: this.options.plugins,
eventEmitter: this.eventEmitter,
usageStatistics: this.options.usageStatistics,
instance: this
});
var _b = this.pluginInfo, toHTMLRenderers = _b.toHTMLRenderers, toMarkdownRenderers = _b.toMarkdownRenderers, mdPlugins = _b.mdPlugins, wwPlugins = _b.wwPlugins, wwNodeViews = _b.wwNodeViews, mdCommands = _b.mdCommands, wwCommands = _b.wwCommands, markdownParsers = _b.markdownParsers;
var rendererOptions = {
linkAttributes,
customHTMLRenderer: deepMergedCopy(toHTMLRenderers, customHTMLRenderer),
extendedAutolinks,
referenceDefinition,
frontMatter: frontMatter2,
sanitizer: customHTMLSanitizer || sanitizeHTML
};
var wwToDOMAdaptor = new WwToDOMAdaptor(linkAttributes, rendererOptions.customHTMLRenderer);
var htmlSchemaMap = createHTMLSchemaMap(rendererOptions.customHTMLRenderer, rendererOptions.sanitizer, wwToDOMAdaptor);
this.toastMark = new ToastMark("", {
disallowedHtmlBlockTags: ["br", "img"],
extendedAutolinks,
referenceDefinition,
disallowDeepHeading: true,
frontMatter: frontMatter2,
customParser: markdownParsers
});
this.mdEditor = new MdEditor(this.eventEmitter, {
toastMark: this.toastMark,
useCommandShortcut,
mdPlugins
});
this.preview = new MarkdownPreview(this.eventEmitter, __assign$1(__assign$1({}, rendererOptions), { isViewer: false, highlight: this.options.previewHighlight }));
this.wwEditor = new WysiwygEditor(this.eventEmitter, {
toDOMAdaptor: wwToDOMAdaptor,
useCommandShortcut,
htmlSchemaMap,
linkAttributes,
wwPlugins,
wwNodeViews
});
this.convertor = new Convertor(this.wwEditor.getSchema(), __assign$1(__assign$1({}, toMarkdownRenderers), customMarkdownRenderer), getHTMLRenderConvertors(linkAttributes, rendererOptions.customHTMLRenderer), this.eventEmitter);
this.setMinHeight(this.options.minHeight);
this.setHeight(this.options.height);
this.setMarkdown(this.options.initialValue, false);
if (this.options.placeholder) {
this.setPlaceholder(this.options.placeholder);
}
if (!this.options.initialValue) {
this.setHTML(this.initialHTML, false);
}
this.commandManager = new CommandManager(this.eventEmitter, this.mdEditor.commands, this.wwEditor.commands, function() {
return _this.mode;
});
if (this.options.usageStatistics) {
sendHostName();
}
this.scrollSync = new ScrollSync(this.mdEditor, this.preview, this.eventEmitter);
this.addInitEvent();
this.addInitCommand(mdCommands, wwCommands);
buildQuery(this);
if (this.options.hooks) {
forEachOwnProperties_1(this.options.hooks, function(fn, key) {
return _this.addHook(key, fn);
});
}
if (this.options.events) {
forEachOwnProperties_1(this.options.events, function(fn, key) {
return _this.on(key, fn);
});
}
this.eventEmitter.emit("load", this);
this.moveCursorToStart(this.options.autofocus);
}
ToastUIEditorCore2.prototype.addInitEvent = function() {
var _this = this;
this.on("needChangeMode", this.changeMode.bind(this));
this.on("loadUI", function() {
if (_this.height !== "auto") {
var minHeight = Math.min(parseInt(_this.minHeight, 10), parseInt(_this.height, 10) - 75) + "px";
_this.setMinHeight(minHeight);
}
});
addDefaultImageBlobHook(this.eventEmitter);
};
ToastUIEditorCore2.prototype.addInitCommand = function(mdCommands, wwCommands) {
var _this = this;
var addPluginCommands = function(type, commandMap) {
Object.keys(commandMap).forEach(function(name) {
_this.addCommand(type, name, commandMap[name]);
});
};
this.addCommand("markdown", "toggleScrollSync", function(payload) {
_this.eventEmitter.emit("toggleScrollSync", payload.active);
return true;
});
addPluginCommands("markdown", mdCommands);
addPluginCommands("wysiwyg", wwCommands);
};
ToastUIEditorCore2.prototype.getCurrentModeEditor = function() {
return this.isMarkdownMode() ? this.mdEditor : this.wwEditor;
};
ToastUIEditorCore2.factory = function(options) {
return options.viewer ? new ToastUIEditorViewer(options) : new ToastUIEditorCore2(options);
};
ToastUIEditorCore2.setLanguage = function(code2, data) {
i18n.setLanguage(code2, data);
};
ToastUIEditorCore2.prototype.changePreviewStyle = function(style) {
if (this.mdPreviewStyle !== style) {
this.mdPreviewStyle = style;
this.eventEmitter.emit("changePreviewStyle", style);
}
};
ToastUIEditorCore2.prototype.exec = function(name, payload) {
this.commandManager.exec(name, payload);
};
ToastUIEditorCore2.prototype.addCommand = function(type, name, command) {
var _this = this;
var commandHoc = function(paylaod) {
if (paylaod === void 0) {
paylaod = {};
}
var view = (type === "markdown" ? _this.mdEditor : _this.wwEditor).view;
command(paylaod, view.state, view.dispatch, view);
};
this.commandManager.addCommand(type, name, commandHoc);
};
ToastUIEditorCore2.prototype.on = function(type, handler) {
this.eventEmitter.listen(type, handler);
};
ToastUIEditorCore2.prototype.off = function(type) {
this.eventEmitter.removeEventHandler(type);
};
ToastUIEditorCore2.prototype.addHook = function(type, handler) {
this.eventEmitter.removeEventHandler(type);
this.eventEmitter.listen(type, handler);
};
ToastUIEditorCore2.prototype.removeHook = function(type) {
this.eventEmitter.removeEventHandler(type);
};
ToastUIEditorCore2.prototype.focus = function() {
this.getCurrentModeEditor().focus();
};
ToastUIEditorCore2.prototype.blur = function() {
this.getCurrentModeEditor().blur();
};
ToastUIEditorCore2.prototype.moveCursorToEnd = function(focus) {
if (focus === void 0) {
focus = true;
}
this.getCurrentModeEditor().moveCursorToEnd(focus);
};
ToastUIEditorCore2.prototype.moveCursorToStart = function(focus) {
if (focus === void 0) {
focus = true;
}
this.getCurrentModeEditor().moveCursorToStart(focus);
};
ToastUIEditorCore2.prototype.setMarkdown = function(markdown, cursorToEnd) {
if (markdown === void 0) {
markdown = "";
}
if (cursorToEnd === void 0) {
cursorToEnd = true;
}
this.mdEditor.setMarkdown(markdown, cursorToEnd);
if (this.isWysiwygMode()) {
var mdNode = this.toastMark.getRootNode();
var wwNode = this.convertor.toWysiwygModel(mdNode);
this.wwEditor.setModel(wwNode, cursorToEnd);
}
};
ToastUIEditorCore2.prototype.setHTML = function(html2, cursorToEnd) {
if (html2 === void 0) {
html2 = "";
}
if (cursorToEnd === void 0) {
cursorToEnd = true;
}
var container = document.createElement("div");
container.innerHTML = replaceBRWithEmptyBlock(html2);
var wwNode = DOMParser.fromSchema(this.wwEditor.schema).parse(container);
if (this.isMarkdownMode()) {
this.mdEditor.setMarkdown(this.convertor.toMarkdownText(wwNode), cursorToEnd);
} else {
this.wwEditor.setModel(wwNode, cursorToEnd);
}
};
ToastUIEditorCore2.prototype.getMarkdown = function() {
if (this.isMarkdownMode()) {
return this.mdEditor.getMarkdown();
}
return this.convertor.toMarkdownText(this.wwEditor.getModel());
};
ToastUIEditorCore2.prototype.getHTML = function() {
var _this = this;
this.eventEmitter.holdEventInvoke(function() {
if (_this.isMarkdownMode()) {
var mdNode = _this.toastMark.getRootNode();
var wwNode = _this.convertor.toWysiwygModel(mdNode);
_this.wwEditor.setModel(wwNode);
}
});
var html2 = removeProseMirrorHackNodes(this.wwEditor.view.dom.innerHTML);
if (this.placeholder) {
var rePlaceholder = new RegExp('", "i");
return html2.replace(rePlaceholder, "");
}
return html2;
};
ToastUIEditorCore2.prototype.insertText = function(text2) {
this.getCurrentModeEditor().replaceSelection(text2);
};
ToastUIEditorCore2.prototype.setSelection = function(start, end) {
this.getCurrentModeEditor().setSelection(start, end);
};
ToastUIEditorCore2.prototype.replaceSelection = function(text2, start, end) {
this.getCurrentModeEditor().replaceSelection(text2, start, end);
};
ToastUIEditorCore2.prototype.deleteSelection = function(start, end) {
this.getCurrentModeEditor().deleteSelection(start, end);
};
ToastUIEditorCore2.prototype.getSelectedText = function(start, end) {
return this.getCurrentModeEditor().getSelectedText(start, end);
};
ToastUIEditorCore2.prototype.getRangeInfoOfNode = function(pos) {
return this.getCurrentModeEditor().getRangeInfoOfNode(pos);
};
ToastUIEditorCore2.prototype.addWidget = function(node, style, pos) {
this.getCurrentModeEditor().addWidget(node, style, pos);
};
ToastUIEditorCore2.prototype.replaceWithWidget = function(start, end, text2) {
this.getCurrentModeEditor().replaceWithWidget(start, end, text2);
};
ToastUIEditorCore2.prototype.setHeight = function(height) {
var el2 = this.options.el;
if (isString_1(height)) {
if (height === "auto") {
addClass_1(el2, "auto-height");
} else {
removeClass_1(el2, "auto-height");
}
this.setMinHeight(this.getMinHeight());
}
css_1(el2, { height });
this.height = height;
};
ToastUIEditorCore2.prototype.getHeight = function() {
return this.height;
};
ToastUIEditorCore2.prototype.setMinHeight = function(minHeight) {
if (minHeight !== this.minHeight) {
var height = this.height || this.options.height;
if (height !== "auto" && this.options.el.querySelector("." + cls("main"))) {
minHeight = Math.min(parseInt(minHeight, 10), parseInt(height, 10) - 75) + "px";
}
var minHeightNum = parseInt(minHeight, 10);
this.minHeight = minHeight;
this.wwEditor.setMinHeight(minHeightNum);
this.mdEditor.setMinHeight(minHeightNum);
this.preview.setMinHeight(minHeightNum);
}
};
ToastUIEditorCore2.prototype.getMinHeight = function() {
return this.minHeight;
};
ToastUIEditorCore2.prototype.isMarkdownMode = function() {
return this.mode === "markdown";
};
ToastUIEditorCore2.prototype.isWysiwygMode = function() {
return this.mode === "wysiwyg";
};
ToastUIEditorCore2.prototype.isViewer = function() {
return false;
};
ToastUIEditorCore2.prototype.getCurrentPreviewStyle = function() {
return this.mdPreviewStyle;
};
ToastUIEditorCore2.prototype.changeMode = function(mode, withoutFocus) {
if (this.mode === mode) {
return;
}
this.mode = mode;
if (this.isWysiwygMode()) {
var mdNode = this.toastMark.getRootNode();
var wwNode = this.convertor.toWysiwygModel(mdNode);
this.wwEditor.setModel(wwNode);
} else {
var wwNode = this.wwEditor.getModel();
this.mdEditor.setMarkdown(this.convertor.toMarkdownText(wwNode), !withoutFocus);
}
this.eventEmitter.emit("removePopupWidget");
this.eventEmitter.emit("changeMode", mode);
if (!withoutFocus) {
var pos = this.convertor.getMappedPos();
this.focus();
if (this.isWysiwygMode() && isNumber_1(pos)) {
this.wwEditor.setSelection(pos);
} else if (Array.isArray(pos)) {
this.mdEditor.setSelection(pos);
}
}
};
ToastUIEditorCore2.prototype.destroy = function() {
var _this = this;
this.wwEditor.destroy();
this.mdEditor.destroy();
this.preview.destroy();
this.scrollSync.destroy();
this.eventEmitter.emit("destroy");
this.eventEmitter.getEvents().forEach(function(_, type) {
return _this.off(type);
});
};
ToastUIEditorCore2.prototype.hide = function() {
this.eventEmitter.emit("hide");
};
ToastUIEditorCore2.prototype.show = function() {
this.eventEmitter.emit("show");
};
ToastUIEditorCore2.prototype.setScrollTop = function(value) {
this.getCurrentModeEditor().setScrollTop(value);
};
ToastUIEditorCore2.prototype.getScrollTop = function() {
return this.getCurrentModeEditor().getScrollTop();
};
ToastUIEditorCore2.prototype.reset = function() {
this.wwEditor.setModel([]);
this.mdEditor.setMarkdown("");
};
ToastUIEditorCore2.prototype.getSelection = function() {
return this.getCurrentModeEditor().getSelection();
};
ToastUIEditorCore2.prototype.setPlaceholder = function(placeholder2) {
this.placeholder = placeholder2;
this.mdEditor.setPlaceholder(placeholder2);
this.wwEditor.setPlaceholder(placeholder2);
};
ToastUIEditorCore2.prototype.getEditorElements = function() {
return {
mdEditor: this.mdEditor.getElement(),
mdPreview: this.preview.getElement(),
wwEditor: this.wwEditor.getElement()
};
};
ToastUIEditorCore2.prototype.convertPosToMatchEditorMode = function(start, end, mode) {
var _a, _b;
if (end === void 0) {
end = start;
}
if (mode === void 0) {
mode = this.mode;
}
var doc3 = this.mdEditor.view.state.doc;
var isFromArray = Array.isArray(start);
var isToArray = Array.isArray(end);
var convertedFrom = start;
var convertedTo = end;
if (isFromArray !== isToArray) {
throw new Error("Types of arguments must be same");
}
if (mode === "markdown" && !isFromArray && !isToArray) {
_a = getEditorToMdPos(doc3, start, end), convertedFrom = _a[0], convertedTo = _a[1];
} else if (mode === "wysiwyg" && isFromArray && isToArray) {
_b = getMdToEditorPos(doc3, start, end), convertedFrom = _b[0], convertedTo = _b[1];
}
return [convertedFrom, convertedTo];
};
return ToastUIEditorCore2;
})()
);
function html$1(n) {
for (var l, e, s = arguments, t = 1, r = "", u = "", a = [0], c = function(n2) {
t === 1 && (n2 || (r = r.replace(/^\s*\n\s*|\s*\n\s*$/g, ""))) ? a.push(n2 ? s[n2] : r) : t === 3 && (n2 || r) ? (a[1] = n2 ? s[n2] : r, t = 2) : t === 2 && r === "..." && n2 ? a[2] = assign(a[2] || {}, s[n2]) : t === 2 && r && !n2 ? (a[2] = a[2] || {})[r] = true : t >= 5 && (t === 5 ? ((a[2] = a[2] || {})[e] = n2 ? r ? r + s[n2] : s[n2] : r, t = 6) : (n2 || r) && (a[2][e] += n2 ? r + s[n2] : r)), r = "";
}, h2 = 0; h2 < n.length; h2++) {
h2 && (t === 1 && c(), c(h2));
for (let i = 0; i < n[h2].length; i++)
l = n[h2][i], t === 1 ? l === "<" ? (c(), a = [a, "", null], t = 3) : r += l : t === 4 ? r === "--" && l === ">" ? (t = 1, r = "") : r = l + r[0] : u ? l === u ? u = "" : r += l : l === '"' || l === "'" ? u = l : l === ">" ? (c(), t = 1) : t && (l === "=" ? (t = 5, e = r, r = "") : l === "/" && (t < 5 || n[h2][i + 1] === ">") ? (c(), t === 3 && (a = a[0]), t = a, (a = a[0]).push(this.apply(null, t.slice(1))), t = 0) : l === " " || l === " " || l === "\n" || l === "\r" ? (c(), t = 2) : r += l), t === 3 && r === "!--" && (t = 4, a = a[0]);
}
return c(), a.length > 2 ? a.slice(1) : a[1];
}
function isBoolean(obj) {
return typeof obj === "boolean" || obj instanceof Boolean;
}
var isBoolean_1 = isBoolean;
var VNodeWalker = (
/** @class */
(function() {
function VNodeWalker2(current) {
this.current = current;
this.root = current;
this.entering = true;
}
VNodeWalker2.prototype.walk = function() {
var _a = this, entering = _a.entering, cur = _a.current;
if (!cur) {
return null;
}
if (entering) {
if (cur.firstChild) {
this.current = cur.firstChild;
this.entering = true;
} else {
this.entering = false;
}
} else if (cur === this.root) {
this.current = null;
} else if (cur.next) {
this.current = cur.next;
this.entering = true;
} else {
this.current = cur.parent;
this.entering = false;
}
return { vnode: cur, entering };
};
return VNodeWalker2;
})()
);
var VNode = (
/** @class */
(function() {
function VNode2(type, props, children) {
this.parent = null;
this.old = null;
this.firstChild = null;
this.next = null;
this.skip = false;
this.type = type;
this.props = props;
this.children = children;
this.props.children = children;
if (props.ref) {
this.ref = props.ref;
delete props.ref;
}
if (props.key) {
this.key = props.key;
delete props.key;
}
}
VNode2.prototype.walker = function() {
return new VNodeWalker(this);
};
VNode2.removalNodes = [];
return VNode2;
})()
);
function createTextNode(text2) {
return new VNode("TEXT_NODE", { nodeValue: text2 }, []);
}
function excludeUnnecessaryChild(child, flatted) {
var vnode = child;
if (isBoolean_1(child) || child == null) {
vnode = null;
} else if (isString_1(child) || isNumber_1(child)) {
vnode = createTextNode(String(child));
}
if (vnode) {
flatted.push(vnode);
}
}
function h(type, props) {
var children = [];
for (var _i = 2; _i < arguments.length; _i++) {
children[_i - 2] = arguments[_i];
}
var flatted = [];
children.forEach(function(child) {
if (Array.isArray(child)) {
child.forEach(function(vnode) {
excludeUnnecessaryChild(vnode, flatted);
});
} else {
excludeUnnecessaryChild(child, flatted);
}
});
return new VNode(type, props || {}, flatted);
}
var html = html$1.bind(h);
function isObject(obj) {
return obj === Object(obj);
}
var isObject_1 = isObject;
function createNode(vnode) {
var node;
if (vnode.type === "TEXT_NODE") {
node = document.createTextNode(vnode.props.nodeValue);
} else {
node = document.createElement(vnode.type);
setProps(node, {}, vnode.props);
}
return node;
}
function removeNode(vnode, parentNode2) {
if (vnode.node) {
parentNode2.removeChild(vnode.node);
} else {
removeNode(vnode.firstChild, parentNode2);
}
}
function innerDiff(node, prevProps, nextProps) {
Object.keys(prevProps).forEach(function(propName) {
if (/^on/.test(propName)) {
if (!nextProps[propName] || prevProps[propName] !== nextProps[propName]) {
var eventName = propName.slice(2).toLowerCase();
node.removeEventListener(eventName, prevProps[propName]);
}
} else if (propName !== "children" && !nextProps[propName] && !isTextNode(node)) {
node.removeAttribute(propName);
}
});
setProps(node, prevProps, nextProps, function(propName) {
return !shallowEqual(prevProps[propName], nextProps[propName]);
});
}
var reNonDimension = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;
function setProps(node, prevProps, props, condition) {
Object.keys(props).forEach(function(propName) {
if (!condition || condition(propName)) {
if (/^on/.test(propName)) {
var eventName = propName.slice(2).toLowerCase();
node.addEventListener(eventName, props[propName]);
} else if (propName === "nodeValue") {
node[propName] = props[propName];
} else if (propName === "style" && isObject_1(props[propName])) {
setStyleProps(node, prevProps[propName], props[propName]);
} else if (propName !== "children") {
if (props[propName] === false) {
node.removeAttribute(propName);
} else {
node.setAttribute(propName, props[propName]);
}
}
}
});
}
function setStyleProps(node, prevStyleProps, styleProps) {
if (prevStyleProps) {
Object.keys(prevStyleProps).forEach(function(styleProp) {
node.style[styleProp] = "";
});
}
Object.keys(styleProps).forEach(function(styleProp) {
var value = styleProps[styleProp];
node.style[styleProp] = isNumber_1(value) && !reNonDimension.test(styleProp) ? value + "px" : value;
});
}
function commit(vnode) {
VNode.removalNodes.forEach(function(removalNode) {
return diff(removalNode);
});
if (vnode) {
var next = void 0;
var walker = vnode.walker();
while (next = walker.walk()) {
vnode = next.vnode;
if (next.entering) {
diff(vnode);
} else if (isFunction_1(vnode.type)) {
var comp2 = vnode.component;
if (!vnode.old && comp2.mounted) {
comp2.mounted();
}
if (vnode.old && comp2.updated) {
var prevProps = comp2.prevProps || {};
comp2.updated(prevProps);
}
}
}
}
}
function getParentNode(vnode) {
var parent = vnode.parent;
while (!parent.node) {
parent = parent.parent;
}
return parent.node;
}
function diff(vnode) {
if (!vnode || !vnode.parent) {
return;
}
if (vnode.node) {
var parentNode2 = getParentNode(vnode);
if (vnode.effect === "A") {
parentNode2.appendChild(vnode.node);
} else if (vnode.effect === "U") {
innerDiff(vnode.node, vnode.old.props, vnode.props);
}
}
if (vnode.effect === "D") {
var next = void 0;
var walker = vnode.walker();
while (next = walker.walk()) {
vnode = next.vnode;
if (!next.entering) {
if (isFunction_1(vnode.type)) {
var comp2 = vnode.component;
if (comp2.beforeDestroy) {
comp2.beforeDestroy();
}
} else {
var parentNode2 = getParentNode(vnode);
removeNode(vnode, parentNode2);
}
}
}
}
if (vnode.ref) {
if (vnode.component) {
vnode.ref(vnode.component);
} else if (vnode.node) {
vnode.ref(vnode.node);
}
}
}
function createComponent(Comp, vnode) {
var props = vnode.props, component = vnode.component;
if (component) {
component.prevProps = component.props;
component.props = vnode.props;
return component;
}
return new Comp(props);
}
function buildVNode(vnode) {
var root = vnode;
while (vnode && !vnode.skip) {
if (isFunction_1(vnode.type)) {
var instance = createComponent(vnode.type, vnode);
instance.vnode = vnode;
vnode.component = instance;
vnode.props.children = vnode.children = [instance.render()];
buildChildrenVNode(vnode);
} else {
if (!vnode.node) {
vnode.node = createNode(vnode);
}
buildChildrenVNode(vnode);
}
if (vnode.firstChild) {
vnode = vnode.firstChild;
} else {
while (vnode && vnode.parent && !vnode.next) {
vnode = vnode.parent;
if (vnode === root) {
break;
}
}
vnode = vnode.next;
}
}
}
function isSameType(old, vnode) {
return old && vnode && vnode.type === old.type && (!vnode.key || vnode.key === old.key);
}
function buildChildrenVNode(parent) {
var children = parent.children;
var old = parent.old ? parent.old.firstChild : null;
var prev = null;
children.forEach(function(vnode, index2) {
var sameType = isSameType(old, vnode);
if (sameType) {
vnode.old = old;
vnode.parent = parent;
vnode.node = old.node;
vnode.component = old.component;
vnode.effect = "U";
}
if (vnode && !sameType) {
vnode.old = null;
vnode.parent = parent;
vnode.node = null;
vnode.effect = "A";
}
if (old && !sameType) {
VNode.removalNodes.push(old);
old.effect = "D";
}
if (old) {
old = old.next;
}
if (index2 === 0) {
parent.firstChild = vnode;
} else if (vnode) {
prev.next = vnode;
}
prev = vnode;
});
var lastChild = last$1(children);
if (!children.length) {
while (old) {
VNode.removalNodes.push(old);
old.effect = "D";
old = old.next;
}
}
while (old && lastChild) {
if (old && lastChild.old !== old) {
VNode.removalNodes.push(old);
old.effect = "D";
old = old.next;
}
}
}
function destroy(vnode) {
vnode.effect = "D";
VNode.removalNodes = [vnode];
commit();
VNode.removalNodes = [];
}
function rerender(comp2) {
var root = comp2.vnode;
root.effect = "U";
root.old = root;
if (root.next) {
root.next.skip = true;
}
VNode.removalNodes = [];
buildVNode(root);
commit(root);
if (root.next) {
root.next.skip = false;
}
}
function render(container, vnode) {
var root = new VNode(container.tagName.toLowerCase(), {}, [vnode]);
root.node = container;
VNode.removalNodes = [];
buildVNode(root);
commit(root);
return function() {
return destroy(root.firstChild);
};
}
var Component = (
/** @class */
(function() {
function Component2(props) {
this.props = props;
this.state = {};
this.refs = {};
}
Component2.prototype.setState = function(state) {
var newState = __assign$1(__assign$1({}, this.state), state);
if (!shallowEqual(this.state, newState)) {
this.state = newState;
rerender(this);
}
};
return Component2;
})()
);
var Switch = (
/** @class */
(function(_super) {
__extends$1(Switch2, _super);
function Switch2(props) {
var _this = _super.call(this, props) || this;
_this.state = {
hide: false
};
return _this;
}
Switch2.prototype.show = function() {
this.setState({ hide: false });
};
Switch2.prototype.hide = function() {
this.setState({ hide: true });
};
Switch2.prototype.render = function() {
var _a = this.props, editorType = _a.editorType, eventEmitter = _a.eventEmitter;
return html(templateObject_1$h || (templateObject_1$h = __makeTemplateObject(['\n
\n
\n
\n
\n
0;
};
return ResizeObserverSPI2;
})()
);
var observers = typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : new MapShim();
var ResizeObserver = (
/** @class */
/* @__PURE__ */ (function() {
function ResizeObserver2(callback) {
if (!(this instanceof ResizeObserver2)) {
throw new TypeError("Cannot call a class as a function.");
}
if (!arguments.length) {
throw new TypeError("1 argument required, but only 0 present.");
}
var controller = ResizeObserverController.getInstance();
var observer = new ResizeObserverSPI(callback, controller, this);
observers.set(this, observer);
}
return ResizeObserver2;
})()
);
[
"observe",
"unobserve",
"disconnect"
].forEach(function(method) {
ResizeObserver.prototype[method] = function() {
var _a;
return (_a = observers.get(this))[method].apply(_a, arguments);
};
});
var index = (function() {
if (typeof global$1.ResizeObserver !== "undefined") {
return global$1.ResizeObserver;
}
return ResizeObserver;
})();
var HeadingPopupBody = (
/** @class */
(function(_super) {
__extends$1(HeadingPopupBody2, _super);
function HeadingPopupBody2() {
return _super !== null && _super.apply(this, arguments) || this;
}
HeadingPopupBody2.prototype.execCommand = function(ev) {
var el2 = closest(ev.target, "li");
this.props.execCommand("heading", {
level: Number(el2.getAttribute("data-level"))
});
};
HeadingPopupBody2.prototype.render = function() {
var _this = this;
return html(templateObject_2$8 || (templateObject_2$8 = __makeTemplateObject(["\n