enh: text fade in effect

This commit is contained in:
Timothy Jaeryang Baek 2025-07-18 16:38:43 +04:00
parent dcb1c0a146
commit 853cf82ed8
6 changed files with 45 additions and 3 deletions

View file

@ -20,6 +20,7 @@
export let history;
export let selectedModels = [];
export let done = true;
export let model = null;
export let sources = null;
@ -133,6 +134,7 @@
{model}
{save}
{preview}
{done}
sourceIds={(sources ?? []).reduce((acc, s) => {
let ids = [];
s.document.forEach((document, index) => {

View file

@ -10,6 +10,7 @@
export let id = '';
export let content;
export let done = true;
export let model = null;
export let save = false;
export let preview = false;
@ -47,6 +48,7 @@
<MarkdownTokens
{tokens}
{id}
{done}
{save}
{preview}
{onTaskClick}

View file

@ -14,8 +14,10 @@
import KatexRenderer from './KatexRenderer.svelte';
import Source from './Source.svelte';
import HtmlToken from './HTMLToken.svelte';
import TextToken from './MarkdownInlineTokens/TextToken.svelte';
export let id: string;
export let done = true;
export let tokens: Token[];
export let onSourceClick: Function = () => {};
</script>
@ -66,6 +68,6 @@
onload="this.style.height=(this.contentWindow.document.body.scrollHeight+20)+'px';"
></iframe>
{:else if token.type === 'text'}
{token.raw}
<TextToken {token} {done} />
{/if}
{/each}

View file

@ -0,0 +1,19 @@
<script lang="ts">
import { fade } from 'svelte/transition';
export let token;
export let done = true;
let texts = [];
$: texts = (token?.raw ?? '').split(' ');
</script>
{#if done}
{token?.raw}
{:else}
{#each texts as text}
<span class="" transition:fade>
{text}
</span>
{/each}
{/if}

View file

@ -28,6 +28,8 @@
export let top = true;
export let attributes = {};
export let done = true;
export let save = false;
export let preview = false;
@ -85,7 +87,12 @@
<hr class=" border-gray-100 dark:border-gray-850" />
{:else if token.type === 'heading'}
<svelte:element this={headerComponent(token.depth)} dir="auto">
<MarkdownInlineTokens id={`${id}-${tokenIdx}-h`} tokens={token.tokens} {onSourceClick} />
<MarkdownInlineTokens
id={`${id}-${tokenIdx}-h`}
tokens={token.tokens}
{done}
{onSourceClick}
/>
</svelte:element>
{:else if token.type === 'code'}
{#if token.raw.includes('```')}
@ -132,6 +139,7 @@
<MarkdownInlineTokens
id={`${id}-${tokenIdx}-header-${headerIdx}`}
tokens={header.tokens}
{done}
{onSourceClick}
/>
</div>
@ -152,6 +160,7 @@
<MarkdownInlineTokens
id={`${id}-${tokenIdx}-row-${rowIdx}-${cellIdx}`}
tokens={cell.tokens}
{done}
{onSourceClick}
/>
</div>
@ -295,6 +304,7 @@
<MarkdownInlineTokens
id={`${id}-${tokenIdx}-p`}
tokens={token.tokens ?? []}
{done}
{onSourceClick}
/>
</p>
@ -302,7 +312,12 @@
{#if top}
<p>
{#if token.tokens}
<MarkdownInlineTokens id={`${id}-${tokenIdx}-t`} tokens={token.tokens} {onSourceClick} />
<MarkdownInlineTokens
id={`${id}-${tokenIdx}-t`}
tokens={token.tokens}
{done}
{onSourceClick}
/>
{:else}
{unescapeHtml(token.text)}
{/if}
@ -311,6 +326,7 @@
<MarkdownInlineTokens
id={`${id}-${tokenIdx}-p`}
tokens={token.tokens ?? []}
{done}
{onSourceClick}
/>
{:else}

View file

@ -804,6 +804,7 @@
floatingButtons={message?.done && !readOnly}
save={!readOnly}
preview={!readOnly}
done={message?.done ?? false}
{model}
onTaskClick={async (e) => {
console.log(e);