diff --git a/src/lib/components/chat/Artifacts.svelte b/src/lib/components/chat/Artifacts.svelte
index 180ed7277..4dafea55e 100644
--- a/src/lib/components/chat/Artifacts.svelte
+++ b/src/lib/components/chat/Artifacts.svelte
@@ -5,12 +5,14 @@
const dispatch = createEventDispatcher();
import { artifactCode, chatId, settings, showArtifacts, showControls } from '$lib/stores';
- import XMark from '../icons/XMark.svelte';
import { copyToClipboard, createMessagesList } from '$lib/utils';
+
+ import XMark from '../icons/XMark.svelte';
import ArrowsPointingOut from '../icons/ArrowsPointingOut.svelte';
import Tooltip from '../common/Tooltip.svelte';
import SvgPanZoom from '../common/SVGPanZoom.svelte';
import ArrowLeft from '../icons/ArrowLeft.svelte';
+ import ArrowDownTray from '../icons/ArrowDownTray.svelte';
export let overlay = false;
export let history;
@@ -180,6 +182,18 @@
}
};
+ const downloadArtifact = () => {
+ const blob = new Blob([contents[selectedContentIdx].content], { type: 'text/html' });
+ const url = URL.createObjectURL(blob);
+ const a = document.createElement('a');
+ a.href = url;
+ a.download = `artifact-${$chatId}-${selectedContentIdx}.html`;
+ document.body.appendChild(a);
+ a.click();
+ document.body.removeChild(a);
+ URL.revokeObjectURL(url);
+ };
+
onMount(() => {
artifactCode.subscribe((value) => {
if (contents) {
@@ -205,7 +219,7 @@