diff --git a/src/renderer/components/markdown/TheMarkdown.vue b/src/renderer/components/markdown/TheMarkdown.vue index e7ae2f61..4de69cf9 100644 --- a/src/renderer/components/markdown/TheMarkdown.vue +++ b/src/renderer/components/markdown/TheMarkdown.vue @@ -29,7 +29,7 @@ const snippetStore = useSnippetStore() const forceRefresh = ref() const init = () => { - const renderer = { + const renderer: marked.RendererObject = { code (code: string, lang: string) { if (lang === 'mermaid') { return `
${code}

` @@ -66,7 +66,71 @@ onMounted(() => { const getRenderer = () => { const raw = marked.parse(props.value) const html = sanitizeHtml(raw, { - allowedTags: false, + allowedTags: [ + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'h7', + 'h8', + 'br', + 'b', + 'i', + 'strong', + 'em', + 'a', + 'pre', + 'code', + 'img', + 'tt', + 'div', + 'ins', + 'del', + 'sup', + 'sub', + 'p', + 'ol', + 'ul', + 'table', + 'thead', + 'tbody', + 'tfoot', + 'blockquote', + 'dl', + 'dt', + 'dd', + 'kbd', + 'q', + 'samp', + 'var', + 'hr', + 'ruby', + 'rt', + 'rp', + 'li', + 'tr', + 'td', + 'th', + 's', + 'strike', + 'summary', + 'details', + 'caption', + 'figure', + 'figcaption', + 'abbr', + 'bdo', + 'cite', + 'dfn', + 'mark', + 'small', + 'span', + 'time', + 'wbr', + 'input' + ], allowedAttributes: { '*': [ 'align', @@ -77,7 +141,10 @@ const getRenderer = () => { 'src', 'target', 'width', - 'class' + 'class', + 'type', + 'checked', + 'disabled' ] } })