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