Browse Source

enh: copy table

Timothy Jaeryang Baek 3 months ago
parent
commit
9df8d5b204
1 changed files with 15 additions and 2 deletions
  1. 15 2
      src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte

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

@@ -8,7 +8,7 @@
 	const { saveAs } = fileSaver;
 
 	import { marked, type Token } from 'marked';
-	import { unescapeHtml } from '$lib/utils';
+	import { copyToClipboard, unescapeHtml } from '$lib/utils';
 
 	import { WEBUI_BASE_URL } from '$lib/constants';
 	import { settings } from '$lib/stores';
@@ -23,6 +23,7 @@
 
 	import Source from './Source.svelte';
 	import HtmlToken from './HTMLToken.svelte';
+	import Clipboard from '$lib/components/icons/Clipboard.svelte';
 
 	export let id: string;
 	export let tokens: Token[];
@@ -182,7 +183,19 @@
 				</table>
 			</div>
 
-			<div class=" absolute top-1 right-1.5 z-20 invisible group-hover:visible">
+			<div class=" absolute top-1 right-1.5 z-20 invisible group-hover:visible flex gap-0.5">
+				<Tooltip content={$i18n.t('Copy')}>
+					<button
+						class="p-1 rounded-lg bg-transparent transition"
+						on:click={(e) => {
+							e.stopPropagation();
+							copyToClipboard(token.raw.trim());
+						}}
+					>
+						<Clipboard className=" size-3.5" strokeWidth="1.5" />
+					</button>
+				</Tooltip>
+
 				<Tooltip content={$i18n.t('Export to CSV')}>
 					<button
 						class="p-1 rounded-lg bg-transparent transition"