@mkljczk/lexical-remark
Version:
This package contains Markdown helpers and functionality for Lexical using remark-parse.
19 lines (18 loc) • 959 B
JavaScript
import { CollapsibleContentNode } from '../../extensions/collapsible/content/node.js';
import { CollapsibleTitleNode } from '../../extensions/collapsible/title/node.js';
import { serializeFromRemark } from '../RemarkExport.js';
export const collapsibleContainer = (node, { rootHandler }) => {
const [titleChild, contentChild] = node.getChildren();
const titleText = titleChild instanceof CollapsibleTitleNode ? titleChild.getChildren()[0]?.getTextContent() ?? '' : '';
const contentNodes = contentChild instanceof CollapsibleContentNode ? contentChild.getChildren() : [];
const remarkNodes = contentNodes.map((n) => rootHandler(n, { rootHandler })).filter((n) => !!n);
const contentText = serializeFromRemark({
children: remarkNodes,
type: 'root',
});
const remarkNode = {
type: 'html',
value: `<details><summary>${titleText}</summary>\n${contentText}\n</details>`,
};
return remarkNode;
};