From 15cbccc8f5bd64d66faf3e07713e5d7f21213055 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 3 Mar 2025 21:10:15 -0800 Subject: [PATCH] enh: code block collapse --- .../components/chat/Messages/CodeBlock.svelte | 150 +++++++++++------- src/lib/components/chat/Placeholder.svelte | 2 +- 2 files changed, 98 insertions(+), 54 deletions(-) diff --git a/src/lib/components/chat/Messages/CodeBlock.svelte b/src/lib/components/chat/Messages/CodeBlock.svelte index f92c66210..64fa1d973 100644 --- a/src/lib/components/chat/Messages/CodeBlock.svelte +++ b/src/lib/components/chat/Messages/CodeBlock.svelte @@ -14,6 +14,9 @@ import { config } from '$lib/stores'; import { executeCode } from '$lib/apis/utils'; import { toast } from 'svelte-sonner'; + import ChevronUp from '$lib/components/icons/ChevronUp.svelte'; + import ChevronUpDown from '$lib/components/icons/ChevronUpDown.svelte'; + import CommandLine from '$lib/components/icons/CommandLine.svelte'; const i18n = getContext('i18n'); @@ -57,9 +60,14 @@ let result = null; let files = null; + let collapsed = false; let copied = false; let saved = false; + const collapseCodeBlock = () => { + collapsed = !collapsed; + }; + const saveCode = () => { saved = true; @@ -418,18 +426,39 @@ class="sticky {stickyButtonsClassName} mb-1 py-1 pr-2.5 flex items-center justify-end z-10 text-xs text-black dark:text-white" >
+ + {#if lang.toLowerCase() === 'python' || lang.toLowerCase() === 'py' || (lang === '' && checkPythonCode(code))} {#if executing}
Running
{:else if run} +
+ +
+ +
+ {$i18n.t('Run')} +
+ {/if} {/if} @@ -457,65 +486,80 @@ : 'rounded-b-lg'} overflow-hidden" >
- { - saveCode(); - }} - onChange={(value) => { - _code = value; - }} - /> + + {#if !collapsed} + { + saveCode(); + }} + onChange={(value) => { + _code = value; + }} + /> + {:else} +
+ + {$i18n.t('{{COUNT}} hidden lines', { + COUNT: code.split('\n').length + })} + +
+ {/if}
-
- - {#if executing || stdout || stderr || result || files} + {#if !collapsed}
- {#if executing} -
-
STDOUT/STDERR
-
Running...
-
- {:else} - {#if stdout || stderr} + id="plt-canvas-{id}" + class="bg-gray-50 dark:bg-[#202123] dark:text-white max-w-full overflow-x-auto scrollbar-hidden" + /> + + {#if executing || stdout || stderr || result || files} +
+ {#if executing}
STDOUT/STDERR
-
- {stdout || stderr} -
+
Running...
- {/if} - {#if result || files} -
-
RESULT
- {#if result} -
{`${JSON.stringify(result)}`}
- {/if} - {#if files} -
- {#each files as file} - {#if file.type.startsWith('image')} - Output - {/if} - {/each} + {:else} + {#if stdout || stderr} +
+
STDOUT/STDERR
+
+ {stdout || stderr}
- {/if} -
+
+ {/if} + {#if result || files} +
+
RESULT
+ {#if result} +
{`${JSON.stringify(result)}`}
+ {/if} + {#if files} +
+ {#each files as file} + {#if file.type.startsWith('image')} + Output + {/if} + {/each} +
+ {/if} +
+ {/if} {/if} - {/if} -
+
+ {/if} {/if} {/if}
diff --git a/src/lib/components/chat/Placeholder.svelte b/src/lib/components/chat/Placeholder.svelte index 74d6cd9fc..f56988d11 100644 --- a/src/lib/components/chat/Placeholder.svelte +++ b/src/lib/components/chat/Placeholder.svelte @@ -102,7 +102,7 @@ {/if}