diff --git a/src/lib/components/common/RichTextInput.svelte b/src/lib/components/common/RichTextInput.svelte index 19ff586df..885e14e72 100644 --- a/src/lib/components/common/RichTextInput.svelte +++ b/src/lib/components/common/RichTextInput.svelte @@ -56,6 +56,16 @@ }); } + function unescapeMarkdown(text: string): string { + return text + .replace(/\\([\\`*{}[\]()#+\-.!_>])/g, '$1') // unescape backslashed characters + .replace(/&/g, '&') + .replace(/</g, '<') + .replace(/>/g, '>') + .replace(/"/g, '"') + .replace(/'/g, "'"); + } + // Method to convert markdown content to ProseMirror-compatible document function markdownToProseMirrorDoc(markdown: string) { return defaultMarkdownParser.parse(value || ''); @@ -63,7 +73,8 @@ // Utility function to convert ProseMirror content back to markdown text function serializeEditorContent(doc) { - return defaultMarkdownSerializer.serialize(doc); + const markdown = defaultMarkdownSerializer.serialize(doc); + return unescapeMarkdown(markdown); } // ---- Input Rules ----