From 953a8285f7552c2d4c3fbfd078c1a3144419823a Mon Sep 17 00:00:00 2001 From: "Timothy J. Baek" Date: Sat, 19 Oct 2024 16:18:14 -0700 Subject: [PATCH] refac --- .../chat/MessageInput/Commands.svelte | 2 +- .../components/common/RichTextInput.svelte | 28 ++++++++++------- src/lib/components/layout/Navbar.svelte | 2 +- src/lib/utils/index.ts | 31 ++++++++++++++----- 4 files changed, 42 insertions(+), 21 deletions(-) diff --git a/src/lib/components/chat/MessageInput/Commands.svelte b/src/lib/components/chat/MessageInput/Commands.svelte index c6feea1d1..09a2f819c 100644 --- a/src/lib/components/chat/MessageInput/Commands.svelte +++ b/src/lib/components/chat/MessageInput/Commands.svelte @@ -25,7 +25,7 @@ }; let command = ''; - $: command = prompt.split(' ')?.at(-1) ?? ''; + $: command = prompt?.split('\n').pop()?.split(' ')?.pop() ?? ''; {#if ['/', '#', '@'].includes(command?.charAt(0)) || '\\#' === command.slice(0, 2)} diff --git a/src/lib/components/common/RichTextInput.svelte b/src/lib/components/common/RichTextInput.svelte index b4d91089d..ce68cf577 100644 --- a/src/lib/components/common/RichTextInput.svelte +++ b/src/lib/components/common/RichTextInput.svelte @@ -17,7 +17,7 @@ import { splitListItem, liftListItem, sinkListItem } from 'prosemirror-schema-list'; // Import from prosemirror-schema-list import { keymap } from 'prosemirror-keymap'; import { baseKeymap, chainCommands } from 'prosemirror-commands'; - import { DOMParser, DOMSerializer, Schema } from 'prosemirror-model'; + import { DOMParser, DOMSerializer, Schema, Fragment } from 'prosemirror-model'; import { marked } from 'marked'; // Import marked for markdown parsing import { dev } from '$app/environment'; @@ -69,7 +69,10 @@ // Method to convert markdown content to ProseMirror-compatible document function markdownToProseMirrorDoc(markdown: string) { - return defaultMarkdownParser.parse(value || ''); + console.log('Markdown:', markdown); + // Parse the Markdown content into a ProseMirror document + let doc = defaultMarkdownParser.parse(markdown || ''); + return doc; } // Utility function to convert ProseMirror content back to markdown text @@ -399,6 +402,7 @@ // Reinitialize the editor if the value is externally changed (i.e. when `value` is updated) $: if (view && value !== serializeEditorContent(view.state.doc)) { const newDoc = markdownToProseMirrorDoc(value || ''); + const newState = EditorState.create({ doc: newDoc, schema, @@ -407,15 +411,17 @@ }); view.updateState(newState); - // After updating the state, try to find and select the next template - setTimeout(() => { - const templateFound = selectNextTemplate(view.state, view.dispatch); - if (!templateFound) { - // If no template found, set cursor at the end - const endPos = view.state.doc.content.size; - view.dispatch(view.state.tr.setSelection(TextSelection.create(view.state.doc, endPos))); - } - }, 0); + if (value !== '') { + // After updating the state, try to find and select the next template + setTimeout(() => { + const templateFound = selectNextTemplate(view.state, view.dispatch); + if (!templateFound) { + // If no template found, set cursor at the end + const endPos = view.state.doc.content.size; + view.dispatch(view.state.tr.setSelection(TextSelection.create(view.state.doc, endPos))); + } + }, 0); + } } // Destroy ProseMirror instance on unmount diff --git a/src/lib/components/layout/Navbar.svelte b/src/lib/components/layout/Navbar.svelte index 954f99c38..c7ea0de65 100644 --- a/src/lib/components/layout/Navbar.svelte +++ b/src/lib/components/layout/Navbar.svelte @@ -47,7 +47,7 @@ class=" bg-gradient-to-b via-50% from-white via-white to-transparent dark:from-gray-900 dark:via-gray-900 dark:to-transparent pointer-events-none absolute inset-0 -bottom-7 z-[-1] blur" > -
+