]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/blob
30e84812aaa2b97c583c0aec890fdce003a5ffd0
[pkg/ggml/sources/llama.cpp] /
1 <script lang="ts">
2 import type { ChatAttachmentDisplayItem } from '$lib/types';
3 import { Image, Music, Video, FileText, FileIcon } from '@lucide/svelte';
4 import ChatAttachmentsPreviewCurrentItemPdf from './ChatAttachmentsPreviewCurrentItemPdf.svelte';
5 import ChatAttachmentsPreviewCurrentItemImage from './ChatAttachmentsPreviewCurrentItemImage.svelte';
6 import ChatAttachmentsPreviewCurrentItemAudio from './ChatAttachmentsPreviewCurrentItemAudio.svelte';
7 import ChatAttachmentsPreviewCurrentItemVideo from './ChatAttachmentsPreviewCurrentItemVideo.svelte';
8 import ChatAttachmentsPreviewCurrentItemText from './ChatAttachmentsPreviewCurrentItemText.svelte';
9 import ChatAttachmentsPreviewCurrentItemUnavailable from './ChatAttachmentsPreviewCurrentItemUnavailable.svelte';
10
11 interface Props {
12 currentItem: ChatAttachmentDisplayItem | null;
13 isImage: boolean;
14 isAudio: boolean;
15 isVideo: boolean;
16 isPdf: boolean;
17 isText: boolean;
18 displayPreview: string | undefined;
19 displayTextContent: string | undefined;
20 audioSrc: string | null;
21 videoSrc: string | null;
22 language: string;
23 hasVisionModality: boolean;
24 activeModelId?: string;
25 }
26
27 let {
28 currentItem,
29 isImage,
30 isAudio,
31 isVideo,
32 isPdf,
33 isText,
34 displayPreview,
35 displayTextContent,
36 audioSrc,
37 videoSrc,
38 language,
39 hasVisionModality,
40 activeModelId
41 }: Props = $props();
42
43 let IconComponent = $derived(
44 isImage ? Image : isText || isPdf ? FileText : isAudio ? Music : isVideo ? Video : FileIcon
45 );
46
47 let isUnavailable = $derived(
48 !isPdf && !isImage && !(isText && displayTextContent) && !isAudio && !isVideo
49 );
50 </script>
51
52 {#if currentItem}
53 {#key currentItem.id}
54 {#if isPdf}
55 <ChatAttachmentsPreviewCurrentItemPdf
56 {currentItem}
57 displayName={currentItem.name}
58 {displayTextContent}
59 {hasVisionModality}
60 {activeModelId}
61 />
62 {:else if isImage}
63 <ChatAttachmentsPreviewCurrentItemImage {currentItem} {displayPreview} />
64 {:else if isText && displayTextContent}
65 <ChatAttachmentsPreviewCurrentItemText {displayTextContent} {language} />
66 {:else if isAudio}
67 <ChatAttachmentsPreviewCurrentItemAudio {currentItem} {audioSrc} />
68 {:else if isVideo}
69 <ChatAttachmentsPreviewCurrentItemVideo {currentItem} {videoSrc} />
70 {:else if isUnavailable}
71 <ChatAttachmentsPreviewCurrentItemUnavailable {IconComponent} />
72 {/if}
73 {/key}
74 {/if}