Files
outline/server/utils/turndown/sanitizeLists.ts
2024-02-17 22:44:33 -05:00

39 lines
1008 B
TypeScript

import TurndownService from "turndown";
import { inHtmlContext } from "./utils";
/**
* A turndown plugin for removing incompatible nodes from lists.
*
* @param turndownService The TurndownService instance.
*/
export default function sanitizeLists(turndownService: TurndownService) {
turndownService.addRule("headingsInLists", {
filter(node) {
return (
["H1", "H2", "H3", "H4", "H5", "H6"].includes(node.nodeName) &&
inHtmlContext(node, "LI")
);
},
replacement(content, node, options) {
if (!content.trim()) {
return "";
}
return options.strongDelimiter + content + options.strongDelimiter;
},
});
turndownService.addRule("strongInHeadings", {
filter(node) {
return (
(node.nodeName === "STRONG" || node.nodeName === "B") &&
["H1", "H2", "H3", "H4", "H5", "H6"].some((tag) =>
inHtmlContext(node, tag)
)
);
},
replacement(content) {
return content;
},
});
}