From 06b9a53a90287dabf9183fc67b5b7e30f91d9cb1 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Thu, 18 May 2023 23:16:46 +0900 Subject: [PATCH] [fix] added strikethrough, tables, youtube iframe support --- src/ts/parser.ts | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/ts/parser.ts b/src/ts/parser.ts index b6a0f002..ad651437 100644 --- a/src/ts/parser.ts +++ b/src/ts/parser.ts @@ -1,12 +1,26 @@ import DOMPurify from 'isomorphic-dompurify'; import showdown from 'showdown'; -const convertor = new showdown.Converter() -convertor.setOption('simpleLineBreaks', true); +const convertor = new showdown.Converter({ + simpleLineBreaks: true, + strikethrough: true, + tables: true +}) + + +DOMPurify.addHook("uponSanitizeElement", (node: HTMLElement, data) => { + if (data.tagName === "iframe") { + const src = node.getAttribute("src") || ""; + if (!src.startsWith("https://www.youtube.com/embed/")) { + return node.parentNode.removeChild(node); + } + } +}); export function ParseMarkdown(data:string) { return DOMPurify.sanitize(convertor.makeHtml(data), { - FORBID_TAGS: [] + ADD_TAGS: ["iframe"], + ADD_ATTR: ["allow", "allowfullscreen", "frameborder", "scrolling"], }) }