feat(import/markdown): maintain consistency with CKEditor for images

This commit is contained in:
Elian Doran 2025-03-16 13:58:31 +02:00
parent 8aaf2367e9
commit 3eaa68da23
No known key found for this signature in database
2 changed files with 14 additions and 0 deletions

View File

@ -102,4 +102,10 @@ second line 2</code></pre><ul><li>Hello</li><li>world</li></ul><ol><li>Hello</li
expect(markdownService.renderToHtml(input, "Title")).toStrictEqual(expected); expect(markdownService.renderToHtml(input, "Title")).toStrictEqual(expected);
}); });
it("imports images with same outcome as if inserted from CKEditor", () => {
const input = "![](api/attachments/YbkR3wt2zMcA/image/image)";
const expected = `<p><img src="api/attachments/YbkR3wt2zMcA/image/image"></p>`;
expect(markdownService.renderToHtml(input, "Title")).toStrictEqual(expected);
});
}); });

View File

@ -34,6 +34,11 @@ class CustomMarkdownRenderer extends Renderer {
return super.listitem(item).trimEnd(); return super.listitem(item).trimEnd();
} }
image(token: Tokens.Image): string {
return super.image(token)
.replace(` alt=""`, "");
}
blockquote({ tokens }: Tokens.Blockquote): string { blockquote({ tokens }: Tokens.Blockquote): string {
const body = renderer.parser.parse(tokens); const body = renderer.parser.parse(tokens);
@ -72,6 +77,9 @@ function renderToHtml(content: string, title: string) {
html = importUtils.handleH1(html, title); html = importUtils.handleH1(html, title);
html = htmlSanitizer.sanitize(html); html = htmlSanitizer.sanitize(html);
// Remove slash for self-closing tags to match CKEditor's approach.
html = html.replace(/<(\w+)([^>]*)\s+\/>/g, "<$1$2>");
return html; return html;
} }