diff --git a/src/lib/components/chat/Messages/ResponseMessage.svelte b/src/lib/components/chat/Messages/ResponseMessage.svelte index 5aee1edfcd..6924fc755c 100644 --- a/src/lib/components/chat/Messages/ResponseMessage.svelte +++ b/src/lib/components/chat/Messages/ResponseMessage.svelte @@ -166,7 +166,7 @@ text = `${text}\n\n${$config?.ui?.response_watermark}`; } - const res = await _copyToClipboard(text, $settings?.copyFormatted ?? false); + const res = await _copyToClipboard(text, null, $settings?.copyFormatted ?? false); if (res) { toast.success($i18n.t('Copying to clipboard was successful!')); } diff --git a/src/lib/components/notes/NoteEditor.svelte b/src/lib/components/notes/NoteEditor.svelte index 9382ccc1d1..769ca57879 100644 --- a/src/lib/components/notes/NoteEditor.svelte +++ b/src/lib/components/notes/NoteEditor.svelte @@ -1082,7 +1082,11 @@ Provide the enhanced notes in markdown format. Use markdown syntax for headings, } }} onCopyToClipboard={async () => { - const res = await copyToClipboard(note.data.content.md).catch((error) => { + const res = await copyToClipboard( + note.data.content.md, + note.data.content.html, + true + ).catch((error) => { toast.error(`${error}`); return null; }); diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index 4b7262f2ef..6fe6f0a2fb 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -384,23 +384,25 @@ export const formatDate = (inputDate) => { } }; -export const copyToClipboard = async (text, formatted = false) => { +export const copyToClipboard = async (text, html = null, formatted = false) => { if (formatted) { - const options = { - throwOnError: false, - highlight: function (code, lang) { - const language = hljs.getLanguage(lang) ? lang : 'plaintext'; - return hljs.highlight(code, { language }).value; - } - }; - marked.use(markedKatexExtension(options)); - marked.use(markedExtension(options)); - // DEVELOPER NOTE: Go to `$lib/components/chat/Messages/Markdown.svelte` to add extra markdown extensions for rendering. + let styledHtml = ''; + if (!html) { + const options = { + throwOnError: false, + highlight: function (code, lang) { + const language = hljs.getLanguage(lang) ? lang : 'plaintext'; + return hljs.highlight(code, { language }).value; + } + }; + marked.use(markedKatexExtension(options)); + marked.use(markedExtension(options)); + // DEVELOPER NOTE: Go to `$lib/components/chat/Messages/Markdown.svelte` to add extra markdown extensions for rendering. - const htmlContent = marked.parse(text); + const htmlContent = marked.parse(text); - // Add basic styling to make the content look better when pasted - const styledHtml = ` + // Add basic styling to make the content look better when pasted + styledHtml = `