@atlaskit/editor-common
Version:
A package that contains common classes and components for editor and renderer
72 lines (64 loc) • 2.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
// File has been copied to packages/editor/editor-plugin-ai/src/provider/markdown-transformer/md/paragraph-md-plugin.ts
// If changes are made to this file, please make the same update in the linked file.
// ED-15363: modified version of the original paragraph plugin
// https://github.com/markdown-it/markdown-it/blob/master/lib/rules_block/paragraph.js
var paragraph = function paragraph(state, startLine) {
var content,
terminate,
i,
l,
token,
oldParentType,
nextLine = startLine + 1,
terminatorRules = state.md.block.ruler.getRules('paragraph'),
endLine = state.lineMax;
oldParentType = state.parentType;
state.parentType = 'paragraph';
// jump line-by-line until empty one or EOF
for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {
// this would be a code block normally, but after paragraph
// it's considered a lazy continuation regardless of what's there
if (state.sCount[nextLine] - state.blkIndent > 3) {
continue;
}
// quirk for blockquotes, this line should already be checked by that rule
if (state.sCount[nextLine] < 0) {
continue;
}
// Some tags can terminate paragraph without empty line.
terminate = false;
for (i = 0, l = terminatorRules.length; i < l; i++) {
if (terminatorRules[i](state, nextLine, endLine, true)) {
terminate = true;
break;
}
}
if (terminate) {
break;
}
}
// ED-15363: We removed .trim() from this logic from the original library to
// preserve leading whitespaces at the beginning and end of paragraph blocks
// when pasting plain text (to preserve whitespace-based indentation, at the
// beginning and end of paragraphs).
// content = state.getLines(startLine, nextLine, state.blkIndent, false) .trim()
content = state.getLines(startLine, nextLine, state.blkIndent, false);
state.line = nextLine;
token = state.push('paragraph_open', 'p', 1);
token.map = [startLine, state.line];
token = state.push('inline', '', 0);
token.content = content;
token.map = [startLine, state.line];
token.children = [];
token = state.push('paragraph_close', 'p', -1);
state.parentType = oldParentType;
return true;
};
var _default = exports.default = function _default(md) {
return md.block.ruler.at('paragraph', paragraph);
};