From 93cba968b523a0d780e9514eac9e6b542efddc47 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Sun, 26 May 2024 08:15:45 +0900 Subject: [PATCH] feat: add syntax highlighting --- package.json | 1 + pnpm-lock.yaml | 17 ++ src/lib/SideBars/CharConfig.svelte | 29 +- src/lib/SideBars/LoreBook/LoreBookData.svelte | 2 +- src/lib/SideBars/Scripts/RegexData.svelte | 3 +- src/lib/SideBars/Scripts/TriggerData.svelte | 14 +- .../UI/GUI/SyntaxHightlightedTextarea.svelte | 0 src/lib/UI/GUI/TextAreaInput.svelte | 101 ++++--- src/lib/UI/PromptDataItem.svelte | 4 +- src/styles.css | 25 ++ src/ts/characters.ts | 3 + src/ts/gui/highlight.ts | 261 ++++++++++++++++++ 12 files changed, 402 insertions(+), 58 deletions(-) create mode 100644 src/lib/UI/GUI/SyntaxHightlightedTextarea.svelte create mode 100644 src/ts/gui/highlight.ts diff --git a/package.json b/package.json index 5fd152ef..df6bde22 100644 --- a/package.json +++ b/package.json @@ -80,6 +80,7 @@ "@tauri-apps/cli": "1.5.11", "@tsconfig/svelte": "^3.0.0", "@types/blueimp-md5": "^2.18.2", + "@types/codemirror": "^5.60.15", "@types/dompurify": "^3.0.5", "@types/libsodium-wrappers-sumo": "^0.7.8", "@types/lodash": "^4.14.202", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 347aebf3..7fd688d1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -195,6 +195,9 @@ importers: '@types/blueimp-md5': specifier: ^2.18.2 version: 2.18.2 + '@types/codemirror': + specifier: ^5.60.15 + version: 5.60.15 '@types/dompurify': specifier: ^3.0.5 version: 3.0.5 @@ -983,6 +986,9 @@ packages: '@types/blueimp-md5@2.18.2': resolution: {integrity: sha512-dJ9yRry9Olt5GAWlgCtE5dK9d/Dfhn/V7hna86eEO2Pn76+E8Y0S0n61iEUEGhWXXgtKtHxtZLVNwL8X+vLHzg==} + '@types/codemirror@5.60.15': + resolution: {integrity: sha512-dTOvwEQ+ouKJ/rE9LT1Ue2hmP6H1mZv5+CCnNWu2qtiOe2LQa9lCprEY20HxiDmV/Bxh+dXjywmy5aKvoGjULA==} + '@types/dompurify@3.0.5': resolution: {integrity: sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==} @@ -1040,6 +1046,9 @@ packages: '@types/streamsaver@2.0.4': resolution: {integrity: sha512-XxpGYIaBP+2NgZ5+4YeG7hI3wYAyOX8QB92xlPpNvStIAvlniml1th+D0bes1lUZz52IWkPlXMf88wy8NzFkbA==} + '@types/tern@0.23.9': + resolution: {integrity: sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==} + '@types/three@0.154.0': resolution: {integrity: sha512-IioqpGhch6FdLDh4zazRn3rXHj6Vn2nVOziJdXVbJFi9CaI65LtP9qqUtpzbsHK2Ezlox8NtsLNHSw3AQzucjA==} @@ -4388,6 +4397,10 @@ snapshots: '@types/blueimp-md5@2.18.2': {} + '@types/codemirror@5.60.15': + dependencies: + '@types/tern': 0.23.9 + '@types/dompurify@3.0.5': dependencies: '@types/trusted-types': 2.0.7 @@ -4436,6 +4449,10 @@ snapshots: '@types/streamsaver@2.0.4': {} + '@types/tern@0.23.9': + dependencies: + '@types/estree': 1.0.5 + '@types/three@0.154.0': dependencies: '@tweenjs/tween.js': 18.6.4 diff --git a/src/lib/SideBars/CharConfig.svelte b/src/lib/SideBars/CharConfig.svelte index 0715018c..0da9a0bc 100644 --- a/src/lib/SideBars/CharConfig.svelte +++ b/src/lib/SideBars/CharConfig.svelte @@ -178,10 +178,10 @@ {#if currentChar.type !== 'group' && licensed !== 'private'} {language.description} - + {tokens.desc} {language.tokens} {language.firstMessage} - + {tokens.firstMsg} {language.tokens} {:else if licensed !== 'private' && currentChar.type === 'group'} @@ -239,6 +239,7 @@ margin="both" autocomplete="off" bind:value={currentChar.data.chats[currentChar.data.chatPage].note} + highlight placeholder={getAuthorNoteDefaultText()} /> {tokens.localNote} {language.tokens} @@ -468,7 +469,7 @@ {#if currentChar.data.inlayViewScreen} {language.imgGenInstructions} - + {/if} { @@ -488,11 +489,11 @@ {language.emotionWarn} {language.imgGenPrompt} - + {language.imgGenNegatives} - + {language.imgGenInstructions} - + { if(currentChar.type === 'character'){ @@ -727,7 +728,7 @@

{language.advancedSettings}

{#if currentChar.type !== 'group'} {language.exampleMessage} - + {language.creatorNotes} { @@ -735,25 +736,25 @@ }}> {language.systemPrompt} - + {language.replaceGlobalNote} - + {language.additionalText} - + {#if $DataBase.showUnrecommended || currentChar.data.personality.length > 3} {language.personality} - + {/if} {#if $DataBase.showUnrecommended || currentChar.data.scenario.length > 3} {language.scenario} - + {/if} {language.backgroundHTML} - + {language.creator} @@ -795,7 +796,7 @@ {#each currentChar.data.alternateGreetings as bias, i} - +