Add persona and preset hotkey

This commit is contained in:
kwaroran
2024-08-24 18:46:49 +09:00
parent d38a9f3d85
commit b1d98741e8
7 changed files with 66 additions and 20 deletions

View File

@@ -1,6 +1,6 @@
<script lang="ts"> <script lang="ts">
import Sidebar from './lib/SideBars/Sidebar.svelte'; import Sidebar from './lib/SideBars/Sidebar.svelte';
import { DynamicGUI, settingsOpen, sideBarStore, ShowRealmFrameStore } from './ts/stores'; import { DynamicGUI, settingsOpen, sideBarStore, ShowRealmFrameStore, openPresetList, openPersonaList } from './ts/stores';
import { DataBase, loadedStore } from './ts/storage/database'; import { DataBase, loadedStore } from './ts/storage/database';
import ChatScreen from './lib/ChatScreens/ChatScreen.svelte'; import ChatScreen from './lib/ChatScreens/ChatScreen.svelte';
import AlertComp from './lib/Others/AlertComp.svelte'; import AlertComp from './lib/Others/AlertComp.svelte';
@@ -15,6 +15,8 @@
import AccountWarningComp from './lib/Others/AccountWarningComp.svelte'; import AccountWarningComp from './lib/Others/AccountWarningComp.svelte';
import { isLite } from './ts/lite'; import { isLite } from './ts/lite';
import LiteMain from './LiteMain.svelte'; import LiteMain from './LiteMain.svelte';
import Botpreset from './lib/Setting/botpreset.svelte';
import ListedPersona from './lib/Setting/listedPersona.svelte';
let didFirstSetup: boolean = false let didFirstSetup: boolean = false
let gridOpen = false let gridOpen = false
@@ -73,4 +75,10 @@
{#if $AccountWarning} {#if $AccountWarning}
<AccountWarningComp /> <AccountWarningComp />
{/if} {/if}
{#if $openPresetList}
<Botpreset close={() => {$openPresetList = false}} />
{/if}
{#if $openPersonaList}
<ListedPersona close={() => {$openPersonaList = false}} />
{/if}
</main> </main>

View File

@@ -25,6 +25,7 @@
import OpenrouterSettings from "./OpenrouterSettings.svelte"; import OpenrouterSettings from "./OpenrouterSettings.svelte";
import ChatFormatSettings from "./ChatFormatSettings.svelte"; import ChatFormatSettings from "./ChatFormatSettings.svelte";
import PromptSettings from "./PromptSettings.svelte"; import PromptSettings from "./PromptSettings.svelte";
import { openPresetList } from "src/ts/stores";
let tokens = { let tokens = {
mainPrompt: 0, mainPrompt: 0,
@@ -32,7 +33,6 @@
globalNote: 0, globalNote: 0,
} }
export let openPresetList =false
export let goPromptTemplate = () => {} export let goPromptTemplate = () => {}
async function loadTokenize(){ async function loadTokenize(){
@@ -564,7 +564,7 @@
{/if} {/if}
</Arcodion> </Arcodion>
{#if submenu !== -1} {#if submenu !== -1}
<Button on:click={() => {openPresetList = true}} className="mt-4">{language.presets}</Button> <Button on:click={() => {$openPresetList = true}} className="mt-4">{language.presets}</Button>
{/if} {/if}
{/if} {/if}
@@ -596,5 +596,5 @@
</div> </div>
{/if} {/if}
{#if submenu === -1} {#if submenu === -1}
<Button on:click={() => {openPresetList = true}} className="mt-4">{language.presets}</Button> <Button on:click={() => {$openPresetList = true}} className="mt-4">{language.presets}</Button>
{/if} {/if}

View File

@@ -21,7 +21,6 @@
import ThanksPage from "./Pages/ThanksPage.svelte"; import ThanksPage from "./Pages/ThanksPage.svelte";
import ModuleSettings from "./Pages/Module/ModuleSettings.svelte"; import ModuleSettings from "./Pages/Module/ModuleSettings.svelte";
let openPresetList = false
let openLoreList = false let openLoreList = false
if(window.innerWidth >= 900 && $SettingsMenuIndex === -1){ if(window.innerWidth >= 900 && $SettingsMenuIndex === -1){
$SettingsMenuIndex = 1 $SettingsMenuIndex = 1
@@ -146,7 +145,7 @@
{#if $SettingsMenuIndex === 0} {#if $SettingsMenuIndex === 0}
<UserSettings /> <UserSettings />
{:else if $SettingsMenuIndex === 1} {:else if $SettingsMenuIndex === 1}
<BotSettings bind:openPresetList goPromptTemplate={() => { <BotSettings goPromptTemplate={() => {
$SettingsMenuIndex = 13 $SettingsMenuIndex = 13
}} /> }} />
{:else if $SettingsMenuIndex === 2} {:else if $SettingsMenuIndex === 2}
@@ -195,9 +194,6 @@
{/if} {/if}
</div> </div>
</div> </div>
{#if openPresetList}
<Botpreset close={() => {openPresetList = false}} />
{/if}
{#if openLoreList} {#if openLoreList}
<Lorepreset close={() => {openLoreList = false}} /> <Lorepreset close={() => {openLoreList = false}} />
{/if} {/if}

View File

@@ -0,0 +1,38 @@
<script lang="ts">
import { XIcon } from "lucide-svelte";
import { language } from "../../lang";
import { DataBase } from "../../ts/storage/database";
import { changeUserPersona } from "src/ts/persona";
export let close = () => {}
</script>
<div class="absolute w-full h-full z-40 bg-black bg-opacity-50 flex justify-center items-center">
<div class="bg-darkbg p-4 break-any rounded-md flex flex-col max-w-3xl w-96 max-h-full overflow-y-auto">
<div class="flex items-center text-textcolor mb-4">
<h2 class="mt-0 mb-0">{language.persona}</h2>
<div class="flex-grow flex justify-end">
<button class="text-textcolor2 hover:text-green-500 mr-2 cursor-pointer items-center" on:click={close}>
<XIcon size={24}/>
</button>
</div>
</div>
{#each $DataBase.personas as persona, i}
<button on:click={() => {
changeUserPersona(i)
close()
}} class="flex items-center text-textcolor border-t-1 border-solid border-0 border-darkborderc p-2 cursor-pointer" class:bg-selected={i === $DataBase.selectedPersona}>
<span>{persona.name}</span>
</button>
{/each}
</div>
</div>
<style>
.break-any{
word-break: normal;
overflow-wrap: anywhere;
}
</style>

View File

@@ -52,7 +52,6 @@
import SideChatList from "./SideChatList.svelte"; import SideChatList from "./SideChatList.svelte";
import { joinMultiuserRoom } from "src/ts/sync/multiuser"; import { joinMultiuserRoom } from "src/ts/sync/multiuser";
import { sideBarSize } from "src/ts/gui/guisize"; import { sideBarSize } from "src/ts/gui/guisize";
let openPresetList = false;
let sideBarMode = 0; let sideBarMode = 0;
let editMode = false; let editMode = false;
let menuMode = 0; let menuMode = 0;
@@ -703,14 +702,6 @@
{/if} {/if}
</div> </div>
{#if openPresetList}
<Botpreset
close={() => {
openPresetList = false;
}}
/>
{/if}
{#if $DynamicGUI} {#if $DynamicGUI}
<div class="flex-grow h-full min-w-12" class:hidden={hidden} on:click={() => { <div class="flex-grow h-full min-w-12" class:hidden={hidden} on:click={() => {
if($sideBarClosing){ if($sideBarClosing){

View File

@@ -1,7 +1,7 @@
import { get } from "svelte/store" import { get } from "svelte/store"
import { alertToast, doingAlert } from "./alert" import { alertToast, doingAlert } from "./alert"
import { DataBase, changeToPreset as changeToPreset2 } from "./storage/database" import { DataBase, changeToPreset as changeToPreset2 } from "./storage/database"
import { selectedCharID, settingsOpen } from "./stores" import { openPersonaList, openPresetList, selectedCharID, settingsOpen } from "./stores"
export function initHotkey(){ export function initHotkey(){
document.addEventListener('keydown', (ev) => { document.addEventListener('keydown', (ev) => {
@@ -73,6 +73,18 @@ export function initHotkey(){
ev.stopPropagation() ev.stopPropagation()
break break
} }
case 'p':{
openPresetList.set(!get(openPresetList))
ev.preventDefault()
ev.stopPropagation()
break
}
case 'e':{
openPersonaList.set(!get(openPersonaList))
ev.preventDefault()
ev.stopPropagation()
break
}
} }
} }
if(ev.key === 'Escape'){ if(ev.key === 'Escape'){

View File

@@ -26,7 +26,8 @@ export const ViewBoxsize = writable({ width: 12 * 16, height: 12 * 16 }); // Def
export const settingsOpen = writable(false) export const settingsOpen = writable(false)
export const botMakerMode = writable(false) export const botMakerMode = writable(false)
export const moduleBackgroundEmbedding = writable('') export const moduleBackgroundEmbedding = writable('')
export const openPresetList = writable(false)
export const openPersonaList = writable(false)
//optimization //optimization
export const CurrentCharacter = writable(null) as Writable<character | groupChat> export const CurrentCharacter = writable(null) as Writable<character | groupChat>