<script lang="ts"> import { getContext, onMount } from 'svelte'; import { formatFileSize, getLineCount } from '$lib/utils'; const i18n = getContext('i18n'); import Modal from './Modal.svelte'; import XMark from '../icons/XMark.svelte'; import Info from '../icons/Info.svelte'; import Switch from './Switch.svelte'; import Tooltip from './Tooltip.svelte'; export let item; export let show = false; export let edit = false; let enableFullContent = false; onMount(() => { console.log(item); if (item?.context === 'full') { enableFullContent = true; } }); </script> <Modal bind:show size="lg"> <div class="font-primary px-6 py-5 w-full flex flex-col justify-center dark:text-gray-400"> <div class=" pb-2"> <div class="flex items-start justify-between"> <div> <div class=" font-medium text-lg dark:text-gray-100"> <a href={item.url ? (item.type === 'file' ? `${item.url}/content` : `${item.url}`) : '#'} target="_blank" class="hover:underline line-clamp-1" > {item?.name ?? 'File'} </a> </div> </div> <div> <button on:click={() => { show = false; }} > <XMark /> </button> </div> </div> <div> <div class="flex flex-col items-center md:flex-row gap-1 justify-between w-full"> <div class=" flex flex-wrap text-sm gap-1 text-gray-500"> {#if item.size} <div class="capitalize shrink-0">{formatFileSize(item.size)}</div> • {/if} {#if item?.file?.data?.content} <div class="capitalize shrink-0"> {getLineCount(item?.file?.data?.content ?? '')} extracted lines </div> <div class="flex items-center gap-1 shrink-0"> <Info /> Formatting may be inconsistent from source. </div> {/if} </div> {#if edit} <div> <Tooltip content={enableFullContent ? 'Inject the entire document as context for comprehensive processing, this is recommended for complex queries.' : 'Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.'} > <div class="flex items-center gap-1.5 text-xs"> {#if enableFullContent} Using Entire Document {:else} Using Focused Retrieval {/if} <Switch bind:state={enableFullContent} on:change={(e) => { item.context = e.detail ? 'full' : undefined; }} /> </div> </Tooltip> </div> {/if} </div> </div> </div> <div class="max-h-96 overflow-scroll scrollbar-hidden text-xs whitespace-pre-wrap"> {item?.file?.data?.content ?? 'No content'} </div> </div> </Modal>