From 3eaa68da23aa28a0456c631db575733878874829 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 16 Mar 2025 13:58:31 +0200 Subject: [PATCH] feat(import/markdown): maintain consistency with CKEditor for images --- src/services/import/markdown.spec.ts | 6 ++++++ src/services/import/markdown.ts | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/src/services/import/markdown.spec.ts b/src/services/import/markdown.spec.ts index 18b11037b..297b68e2f 100644 --- a/src/services/import/markdown.spec.ts +++ b/src/services/import/markdown.spec.ts @@ -102,4 +102,10 @@ second line 2
  1. Hello
  2. { + const input = "![](api/attachments/YbkR3wt2zMcA/image/image)"; + const expected = `

    `; + expect(markdownService.renderToHtml(input, "Title")).toStrictEqual(expected); + }); + }); diff --git a/src/services/import/markdown.ts b/src/services/import/markdown.ts index c0677b5f1..8f4973082 100644 --- a/src/services/import/markdown.ts +++ b/src/services/import/markdown.ts @@ -34,6 +34,11 @@ class CustomMarkdownRenderer extends Renderer { return super.listitem(item).trimEnd(); } + image(token: Tokens.Image): string { + return super.image(token) + .replace(` alt=""`, ""); + } + blockquote({ tokens }: Tokens.Blockquote): string { const body = renderer.parser.parse(tokens); @@ -72,6 +77,9 @@ function renderToHtml(content: string, title: string) { html = importUtils.handleH1(html, title); 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; }