From aa755ffc34ef9f802876daeb192aefbd42cc8142 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Sat, 18 May 2024 10:54:36 -0400 Subject: [PATCH] fix: Images in lists on shared documents sometimes render as code blocks --- shared/editor/lib/markdown/serializer.ts | 1 + shared/editor/nodes/Image.tsx | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/shared/editor/lib/markdown/serializer.ts b/shared/editor/lib/markdown/serializer.ts index c453e173e..bda4c8651 100644 --- a/shared/editor/lib/markdown/serializer.ts +++ b/shared/editor/lib/markdown/serializer.ts @@ -62,6 +62,7 @@ export class MarkdownSerializer { // node and mark serialization methods (see `toMarkdown`). export class MarkdownSerializerState { inTable = false; + inList = false; inTightList = false; closed = false; delim = ""; diff --git a/shared/editor/nodes/Image.tsx b/shared/editor/nodes/Image.tsx index 99daa9240..d67efc302 100644 --- a/shared/editor/nodes/Image.tsx +++ b/shared/editor/nodes/Image.tsx @@ -297,8 +297,12 @@ export default class Image extends SimpleImage { ); toMarkdown(state: MarkdownSerializerState, node: ProsemirrorNode) { - let markdown = - " ![" + + // Skip the preceding space for images at the start of a list item or Markdown parsers may + // render them as code blocks + let markdown = state.inList ? "" : " "; + + markdown += + "![" + state.esc((node.attrs.alt || "").replace("\n", "") || "", false) + "](" + state.esc(node.attrs.src || "", false);