@mdxeditor/editor
Version:
React component for rich text markdown editing
22 lines (21 loc) • 1.03 kB
JavaScript
import { $createLineBreakNode, $createParagraphNode } from "lexical";
const lexicalTypesThatShouldSkipParagraphs = ["listitem", "admonition"];
const MdastParagraphVisitor = {
testNode: "paragraph",
visitNode: function({ mdastNode, mdastParent, lexicalParent, actions }) {
const parentType = lexicalParent.getType();
if (lexicalTypesThatShouldSkipParagraphs.includes(parentType)) {
const mdastNodeIndex = (mdastParent == null ? void 0 : mdastParent.children.indexOf(mdastNode)) ?? -1;
const previousMdastSibling = mdastNodeIndex > 0 ? mdastParent == null ? void 0 : mdastParent.children.at(mdastNodeIndex - 1) : void 0;
if (parentType === "listitem" && (previousMdastSibling == null ? void 0 : previousMdastSibling.type) === "paragraph") {
lexicalParent.append($createLineBreakNode(), $createLineBreakNode());
}
actions.visitChildren(mdastNode, lexicalParent);
} else {
actions.addAndStepInto($createParagraphNode());
}
}
};
export {
MdastParagraphVisitor
};