diff --git a/src/lib/components/workspace/Prompts/PromptEditor.svelte b/src/lib/components/workspace/Prompts/PromptEditor.svelte index fb774e778..a870f31b0 100644 --- a/src/lib/components/workspace/Prompts/PromptEditor.svelte +++ b/src/lib/components/workspace/Prompts/PromptEditor.svelte @@ -5,9 +5,11 @@ import { toast } from 'svelte-sonner'; import Tooltip from '$lib/components/common/Tooltip.svelte'; import LockClosed from '$lib/components/icons/LockClosed.svelte'; + import Clipboard from '$lib/components/icons/Clipboard.svelte'; + import Check from '$lib/components/icons/Check.svelte'; import AccessControlModal from '../common/AccessControlModal.svelte'; import { user } from '$lib/stores'; - import { slugify, formatDate } from '$lib/utils'; + import { slugify, formatDate, copyToClipboard } from '$lib/utils'; import Spinner from '$lib/components/common/Spinner.svelte'; import Modal from '$lib/components/common/Modal.svelte'; import XMark from '$lib/components/icons/XMark.svelte'; @@ -49,6 +51,7 @@ let selectedHistoryEntry: any = null; let historyOffset = 0; let historyHasMore = true; + let contentCopied = false; const HISTORY_PAGE_SIZE = 20; $: if (!edit && !hasManualEdit) { @@ -143,6 +146,17 @@ } }; + const copyContent = async () => { + const textToCopy = selectedHistoryEntry?.snapshot?.content || content; + const success = await copyToClipboard(textToCopy); + if (success) { + contentCopied = true; + setTimeout(() => { + contentCopied = false; + }, 2000); + } + }; + const setAsProduction = async (historyEntry: any) => { if (disabled) { toast.error($i18n.t('You do not have permission to edit this prompt.')); @@ -364,9 +378,19 @@ {/if}
{selectedHistoryEntry?.snapshot
+
+ {selectedHistoryEntry?.snapshot
?.content || content}