Spaces:
Build error
Build error
<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> | |