diff --git a/src/lib/components/chat/Messages/CodeBlock.svelte b/src/lib/components/chat/Messages/CodeBlock.svelte index ba6d6fc06..7c64e7446 100644 --- a/src/lib/components/chat/Messages/CodeBlock.svelte +++ b/src/lib/components/chat/Messages/CodeBlock.svelte @@ -5,14 +5,16 @@ import { v4 as uuidv4 } from 'uuid'; - import { getContext, getAllContexts, onMount } from 'svelte'; + import { getContext, getAllContexts, onMount, tick, createEventDispatcher } from 'svelte'; import { copyToClipboard } from '$lib/utils'; import 'highlight.js/styles/github-dark.min.css'; import PyodideWorker from '$lib/workers/pyodide.worker?worker'; + import CodeEditor from '$lib/components/common/CodeEditor.svelte'; const i18n = getContext('i18n'); + const dispatch = createEventDispatcher(); export let id = ''; @@ -20,6 +22,15 @@ export let lang = ''; export let code = ''; + let _code = ''; + $: if (code) { + updateCode(); + } + + const updateCode = () => { + _code = code; + }; + let _token = null; let mermaidHtml = null; @@ -32,6 +43,18 @@ let result = null; let copied = false; + let saved = false; + + const saveCode = () => { + saved = true; + + code = _code; + dispatch('save', code); + + setTimeout(() => { + saved = false; + }, 1000); + }; const copyCode = async () => { copied = true; @@ -233,22 +256,11 @@ __builtins__.input = input`); (async () => { await drawMermaidDiagram(); })(); - } else { - // Function to perform the code highlighting - const highlightCode = () => { - highlightedCode = hljs.highlightAuto(code, hljs.getLanguage(lang)?.aliases).value || code; - }; - - // Clear the previous timeout if it exists - clearTimeout(debounceTimeout); - // Set a new timeout to debounce the code highlighting - debounceTimeout = setTimeout(highlightCode, 10); } }; $: if (token) { if (JSON.stringify(token) !== JSON.stringify(_token)) { - console.log('hi'); _token = token; } } @@ -295,28 +307,50 @@ __builtins__.input = input`); {:else} {/if} {/if} + + + -
+			 {
+					saveCode();
+				}}
+				on:change={(e) => {
+					_code = e.detail.value;
+				}}
+			/>
+		
+
+		
 
 		
- + { + dispatch('update', e.detail); + }} + />
{#if floatingButtons} diff --git a/src/lib/components/chat/Messages/Markdown.svelte b/src/lib/components/chat/Messages/Markdown.svelte index e5373d39d..cdf0d5f5a 100644 --- a/src/lib/components/chat/Messages/Markdown.svelte +++ b/src/lib/components/chat/Messages/Markdown.svelte @@ -7,6 +7,9 @@ import markedKatexExtension from '$lib/utils/marked/katex-extension'; import MarkdownTokens from './Markdown/MarkdownTokens.svelte'; + import { createEventDispatcher } from 'svelte'; + + const dispatch = createEventDispatcher(); export let id; export let content; @@ -31,5 +34,11 @@ {#key id} - + { + dispatch('update', e.detail); + }} + /> {/key} diff --git a/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte b/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte index a1df4b67e..931dea598 100644 --- a/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte +++ b/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte @@ -1,16 +1,18 @@ -
+
diff --git a/src/lib/components/workspace/Functions/FunctionEditor.svelte b/src/lib/components/workspace/Functions/FunctionEditor.svelte index 074d0bbe6..3f85c9f2a 100644 --- a/src/lib/components/workspace/Functions/FunctionEditor.svelte +++ b/src/lib/components/workspace/Functions/FunctionEditor.svelte @@ -21,6 +21,15 @@ description: '' }; export let content = ''; + let _content = ''; + + $: if (content) { + updateContent(); + } + + const updateContent = () => { + _content = content; + }; $: if (name && !edit && !clone) { id = name.replace(/\s+/g, '_').toLowerCase(); @@ -336,10 +345,14 @@ class Pipe: