From 3b35868a0641f1c10cc1433f0bd8c3b4bf75ea93 Mon Sep 17 00:00:00 2001 From: Niek van der Maas Date: Mon, 6 Mar 2023 14:15:52 +0100 Subject: [PATCH] Switch to `svelte-markdown` --- package-lock.json | 34 +++++++++++++++++++++++++++++++++- package.json | 3 ++- src/lib/Chat.svelte | 31 +++++++++++++++++++++++++------ src/lib/Code.svelte | 23 +++++++++++++++++++++++ 4 files changed, 83 insertions(+), 8 deletions(-) create mode 100644 src/lib/Code.svelte diff --git a/package-lock.json b/package-lock.json index 034f199..f87a50a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,12 +14,13 @@ "@tsconfig/svelte": "^3.0.0", "@types/marked": "^4.0.8", "bulma": "^0.9.4", - "marked": "^4.2.12", "postcss": "^8.4.21", "sass": "^1.58.3", "svelte": "^3.55.1", "svelte-check": "^3.0.4", + "svelte-highlight": "^7.2.0", "svelte-local-storage-store": "^0.4.0", + "svelte-markdown": "^0.2.3", "tslib": "^2.5.0", "typescript": "^4.9.3", "vite": "^4.1.0" @@ -828,6 +829,15 @@ "node": ">= 0.4.0" } }, + "node_modules/highlight.js": { + "version": "11.7.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.7.0.tgz", + "integrity": "sha512-1rRqesRFhMO/PRF+G86evnyJkCgaZFOI+Z6kdj15TA18funfoqJXvgPCLSf0SWq3SRfg1j3HlDs8o4s3EGq1oQ==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/immutable": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.4.tgz", @@ -1438,6 +1448,15 @@ "svelte": "^3.55.0" } }, + "node_modules/svelte-highlight": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/svelte-highlight/-/svelte-highlight-7.2.0.tgz", + "integrity": "sha512-mOJltSmozHNuaIE4tglrOBQ9X/8sKoQMJfqm+YZUuHvzfAcefWtZVDFml2oUrEv8iehM79mdA9+0orhUWIrxWw==", + "dev": true, + "dependencies": { + "highlight.js": "11.7.0" + } + }, "node_modules/svelte-hmr": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", @@ -1462,6 +1481,19 @@ "svelte": "^3.48.0" } }, + "node_modules/svelte-markdown": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/svelte-markdown/-/svelte-markdown-0.2.3.tgz", + "integrity": "sha512-2h680NzTXnAD0CXhxe3GeHl6W+ayG4iKQRl+BIDRw+R0mUE0OiNxP1Vt8Rn+aWevB/LBiBIPCAwvL+0BkG057A==", + "dev": true, + "dependencies": { + "@types/marked": "^4.0.1", + "marked": "^4.0.10" + }, + "peerDependencies": { + "svelte": "^3.0.0" + } + }, "node_modules/svelte-preprocess": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.1.tgz", diff --git a/package.json b/package.json index f78864f..b50cf1f 100644 --- a/package.json +++ b/package.json @@ -17,12 +17,13 @@ "@tsconfig/svelte": "^3.0.0", "@types/marked": "^4.0.8", "bulma": "^0.9.4", - "marked": "^4.2.12", "postcss": "^8.4.21", "sass": "^1.58.3", "svelte": "^3.55.1", "svelte-check": "^3.0.4", + "svelte-highlight": "^7.2.0", "svelte-local-storage-store": "^0.4.0", + "svelte-markdown": "^0.2.3", "tslib": "^2.5.0", "typescript": "^4.9.3", "vite": "^4.1.0" diff --git a/src/lib/Chat.svelte b/src/lib/Chat.svelte index 7e47f94..7a74a8a 100644 --- a/src/lib/Chat.svelte +++ b/src/lib/Chat.svelte @@ -4,8 +4,8 @@ import { apiKeyStorage, chatsStorage, addMessage, clearMessages } from "./Storage.svelte"; import type { Response, Message } from "./Types.svelte"; - import { marked } from "marked"; import { afterUpdate, onMount } from "svelte"; + import SvelteMarkdown from "svelte-markdown"; export let chatId: number; let updating: boolean = false; @@ -24,10 +24,11 @@ input.focus(); }); - marked.setOptions({ + // Marked options + const markedownOptions = { gfm: true, breaks: true, - }); + }; const send = async () => { // Compose the input message @@ -159,17 +160,35 @@ > ✏️ - {@html marked(message.content)} + {:else if message.role === "system"}
-
{@html marked(message.content)}
+
{:else}
- {@html marked(message.content)} + {#if message.usage}

This message was generated using {message.usage.total_tokens} diff --git a/src/lib/Code.svelte b/src/lib/Code.svelte new file mode 100644 index 0000000..a843903 --- /dev/null +++ b/src/lib/Code.svelte @@ -0,0 +1,23 @@ + + + + {@html style} + + +