( nodes: RefractorNode[], className: string[] = [], )
| 20 | } |
| 21 | |
| 22 | function parseNodes( |
| 23 | nodes: RefractorNode[], |
| 24 | className: string[] = [], |
| 25 | ): { text: string; classes: string[] }[] { |
| 26 | return nodes.flatMap((node) => { |
| 27 | const classes = [ |
| 28 | ...className, |
| 29 | ...(node.properties ? node.properties.className : []), |
| 30 | ]; |
| 31 | |
| 32 | if (node.children) { |
| 33 | return parseNodes(node.children, classes); |
| 34 | } |
| 35 | |
| 36 | return { |
| 37 | text: node.value ?? '', |
| 38 | classes, |
| 39 | }; |
| 40 | }); |
| 41 | } |
| 42 | |
| 43 | function getHighlightNodes(html: string) { |
| 44 | return fromHtml(html, { fragment: true }).children; |