UNPKG

@mkljczk/lexical-remark

Version:

This package contains Markdown helpers and functionality for Lexical using remark-parse.

19 lines (18 loc) 959 B
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; };