diff --git a/src/lib/components/chat/FileNav/FilePreview.svelte b/src/lib/components/chat/FileNav/FilePreview.svelte
index 11c00c6aa2..4dd9bb98ee 100644
--- a/src/lib/components/chat/FileNav/FilePreview.svelte
+++ b/src/lib/components/chat/FileNav/FilePreview.svelte
@@ -1,11 +1,10 @@
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/chat/Messages/CodeBlock.svelte b/src/lib/components/chat/Messages/CodeBlock.svelte
index 56831ebaf7..41eb74f85c 100644
--- a/src/lib/components/chat/Messages/CodeBlock.svelte
+++ b/src/lib/components/chat/Messages/CodeBlock.svelte
@@ -30,7 +30,9 @@
import Tooltip from '$lib/components/common/Tooltip.svelte';
const i18n = getContext>('i18n');
- const markdown = getContext<{ allowRemoteContent: boolean } | undefined>('markdown');
+ const markdown = getContext<{ allowRemoteContent: boolean; document?: boolean } | undefined>(
+ 'markdown'
+ );
export let id = '';
export let edit = true;
@@ -370,7 +372,10 @@
const render = async () => {
onUpdate(token, id);
if (markdown?.allowRemoteContent === false) return;
- if (lang === 'mermaid' && (token?.raw ?? '').slice(-4).includes('```')) {
+ if (
+ lang === 'mermaid' &&
+ (markdown?.document || (token?.raw ?? '').slice(-4).includes('```'))
+ ) {
try {
renderHTML = await renderMermaid(code);
} catch (error) {
@@ -381,7 +386,7 @@
}
} else if (
(lang === 'vega' || lang === 'vega-lite') &&
- (token?.raw ?? '').slice(-4).includes('```')
+ (markdown?.document || (token?.raw ?? '').slice(-4).includes('```'))
) {
try {
renderHTML = await renderVegaVisualization(code, lang);
diff --git a/src/lib/components/chat/Messages/Markdown/AlertRenderer.svelte b/src/lib/components/chat/Messages/Markdown/AlertRenderer.svelte
index 1470e63634..6402b666b6 100644
--- a/src/lib/components/chat/Messages/Markdown/AlertRenderer.svelte
+++ b/src/lib/components/chat/Messages/Markdown/AlertRenderer.svelte
@@ -43,7 +43,10 @@
}
};
- export function alertComponent(token: Token): AlertData | false {
+ export function alertComponent(
+ token: Token,
+ lexer: (source: string) => Token[] = marked.lexer
+ ): AlertData | false {
const regExpStr = `^(?:\\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\\])\\s*?\n*`;
const regExp = new RegExp(regExpStr);
const matches = token.text?.match(regExp);
@@ -51,7 +54,7 @@
if (matches && matches.length) {
const alertType = matches[1] as AlertType;
const newText = token.text.replace(regExp, '');
- const newTokens = marked.lexer(newText);
+ const newTokens = lexer(newText);
return {
type: alertType,
text: newText,
diff --git a/src/lib/components/chat/Messages/Markdown/HTMLToken.svelte b/src/lib/components/chat/Messages/Markdown/HTMLToken.svelte
index a3a949e7a4..784244ad31 100644
--- a/src/lib/components/chat/Messages/Markdown/HTMLToken.svelte
+++ b/src/lib/components/chat/Messages/Markdown/HTMLToken.svelte
@@ -7,6 +7,7 @@
import { settings } from '$lib/stores';
const i18n: any = getContext('i18n');
+ const markdown = getContext<{ document?: boolean } | undefined>('markdown');
export let id: string;
export let token: Token;
@@ -18,7 +19,9 @@
{#if token.type === 'html'}
- {#if html && html.includes('