@mdxeditor/editor
Version:
React component for rich text markdown editing
29 lines (28 loc) • 1.02 kB
JavaScript
import { $isListItemNode, $isListNode } from "@lexical/list";
const LexicalListItemVisitor = {
testLexicalNode: $isListItemNode,
visitLexicalNode: ({ lexicalNode, mdastParent, actions }) => {
const children = lexicalNode.getChildren();
const firstChild = children[0];
if (children.length === 1 && $isListNode(firstChild)) {
const prevListItemNode = mdastParent.children.at(-1);
if (!prevListItemNode) {
actions.visitChildren(firstChild, mdastParent);
} else {
actions.visitChildren(lexicalNode, prevListItemNode);
}
} else {
const parentList = lexicalNode.getParent();
const listItem = actions.appendToParent(mdastParent, {
type: "listItem",
checked: parentList.getListType() === "check" ? Boolean(lexicalNode.getChecked()) : void 0,
spread: false,
children: [{ type: "paragraph", children: [] }]
});
actions.visitChildren(lexicalNode, listItem.children[0]);
}
}
};
export {
LexicalListItemVisitor
};