Browse Source

refac: unescape rich text input

Timothy J. Baek 8 months ago
parent
commit
f6e7af346e
1 changed files with 12 additions and 1 deletions
  1. 12 1
      src/lib/components/common/RichTextInput.svelte

+ 12 - 1
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(/&quot;/g, '"')
+			.replace(/&#39;/g, "'");
+	}
+
 	// Method to convert markdown content to ProseMirror-compatible document
 	// Method to convert markdown content to ProseMirror-compatible document
 	function markdownToProseMirrorDoc(markdown: string) {
 	function markdownToProseMirrorDoc(markdown: string) {
 		return defaultMarkdownParser.parse(value || '');
 		return defaultMarkdownParser.parse(value || '');
@@ -63,7 +73,8 @@
 
 
 	// Utility function to convert ProseMirror content back to markdown text
 	// Utility function to convert ProseMirror content back to markdown text
 	function serializeEditorContent(doc) {
 	function serializeEditorContent(doc) {
-		return defaultMarkdownSerializer.serialize(doc);
+		const markdown = defaultMarkdownSerializer.serialize(doc);
+		return unescapeMarkdown(markdown);
 	}
 	}
 
 
 	// ---- Input Rules ----
 	// ---- Input Rules ----