Timothy J. Baek 9 月之前
父節點
當前提交
a140d319fe

+ 16 - 2
src/lib/components/chat/Messages/MarkdownTokens.svelte → src/lib/components/chat/Messages/Markdown.svelte

@@ -1,14 +1,28 @@
 <script lang="ts">
 <script lang="ts">
+	import { onMount } from 'svelte';
+	import { marked } from 'marked';
 	import type { Token } from 'marked';
 	import type { Token } from 'marked';
-	import { revertSanitizedResponseContent, unescapeHtml } from '$lib/utils';
+
+	import {
+		replaceTokens,
+		revertSanitizedResponseContent,
+		sanitizeResponseContent,
+		unescapeHtml
+	} from '$lib/utils';
 	import CodeBlock from '$lib/components/chat/Messages/CodeBlock.svelte';
 	import CodeBlock from '$lib/components/chat/Messages/CodeBlock.svelte';
-	import { onMount } from 'svelte';
 	import MarkdownInlineTokens from '$lib/components/chat/Messages/MarkdownInlineTokens.svelte';
 	import MarkdownInlineTokens from '$lib/components/chat/Messages/MarkdownInlineTokens.svelte';
+	import { user } from '$lib/stores';
 
 
 	export let id: string;
 	export let id: string;
 	export let tokens: Token[];
 	export let tokens: Token[];
+	export let model = null;
+	export let content = '';
 	export let top = true;
 	export let top = true;
 
 
+	$: tokens = marked.lexer(
+		replaceTokens(sanitizeResponseContent(content), model?.name, $user?.name)
+	);
+
 	const headerComponent = (depth: number) => {
 	const headerComponent = (depth: number) => {
 		return 'h' + depth;
 		return 'h' + depth;
 	};
 	};

+ 3 - 8
src/lib/components/chat/Messages/ResponseMessage.svelte

@@ -1,7 +1,6 @@
 <script lang="ts">
 <script lang="ts">
 	import { toast } from 'svelte-sonner';
 	import { toast } from 'svelte-sonner';
 	import dayjs from 'dayjs';
 	import dayjs from 'dayjs';
-	import { marked } from 'marked';
 	import tippy from 'tippy.js';
 	import tippy from 'tippy.js';
 	import auto_render from 'katex/dist/contrib/auto-render.mjs';
 	import auto_render from 'katex/dist/contrib/auto-render.mjs';
 	import 'katex/dist/katex.min.css';
 	import 'katex/dist/katex.min.css';
@@ -38,7 +37,7 @@
 	import Spinner from '$lib/components/common/Spinner.svelte';
 	import Spinner from '$lib/components/common/Spinner.svelte';
 	import WebSearchResults from './ResponseMessage/WebSearchResults.svelte';
 	import WebSearchResults from './ResponseMessage/WebSearchResults.svelte';
 	import Sparkles from '$lib/components/icons/Sparkles.svelte';
 	import Sparkles from '$lib/components/icons/Sparkles.svelte';
-	import MarkdownTokens from './MarkdownTokens.svelte';
+	import Markdown from './Markdown.svelte';
 
 
 	export let message;
 	export let message;
 	export let siblings;
 	export let siblings;
@@ -77,10 +76,6 @@
 
 
 	let selectedCitation = null;
 	let selectedCitation = null;
 
 
-	$: tokens = marked.lexer(
-		replaceTokens(sanitizeResponseContent(message?.content), model?.name, $user?.name)
-	);
-
 	$: if (message) {
 	$: if (message) {
 		renderStyling();
 		renderStyling();
 	}
 	}
@@ -500,8 +495,8 @@
 									<!-- always show message contents even if there's an error -->
 									<!-- always show message contents even if there's an error -->
 									<!-- unless message.error === true which is legacy error handling, where the error message is stored in message.content -->
 									<!-- unless message.error === true which is legacy error handling, where the error message is stored in message.content -->
 
 
-									{#key tokens}
-										<MarkdownTokens id={message.id} {tokens} />
+									{#key message.id}
+										<Markdown id={message.id} {model} content={message.content} />
 									{/key}
 									{/key}
 								{/if}
 								{/if}