{ openMenu = false }}> {#if $selectedCharID < 0} {#if $PlaygroundStore === 0} {:else} {/if} {:else}
{#if isInitialLoading}

{language.loading}

{/if}
{#if DBState.db.useChatSticker && currentCharacter.type !== 'group'}
{toggleStickers = !toggleStickers}} class={"ml-4 bg-textcolor2 flex justify-center items-center w-12 h-12 rounded-md hover:bg-green-500 transition-colors "+(toggleStickers ? 'text-green-500':'text-textcolor')}>
{/if} {#if !DBState.db.useAdvancedEditor} {:else} {/if} {#if $doingChat || doingChatInputTranslate} {:else} {/if} {#if DBState.db.characters[$selectedCharID]?.chaId !== '§playground'} {:else}
{ DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message.push({ role: 'char', data: '' }) DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage] = DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage] }} class="peer-focus:border-textcolor mr-2 flex border-y border-r border-darkborderc justify-center items-center text-gray-100 p-3 rounded-r-md hover:bg-blue-500 transition-colors" style:height={inputHeight} >
{/if}
{#if DBState.db.useAutoTranslateInput && !DBState.db.useAdvancedEditor && DBState.db.characters[$selectedCharID]?.chaId !== '§playground'}
{/if} {#if fileInput.length > 0}
{#each fileInput as file, i} {#await getInlayAsset(file) then inlayAsset}
{#if inlayAsset.type === 'image'} Inlay {:else if inlayAsset.type === 'video'} {:else if inlayAsset.type === 'audio'} {:else}
{file}
{/if}
{/await} {/each}
{/if} {#if toggleStickers}
{ let fileType = 'img' if(additionalAsset.length > 2 && additionalAsset[2]) { const fileExtension = additionalAsset[2] if(fileExtension === 'mp4' || fileExtension === 'webm') fileType = 'video' else if(fileExtension === 'mp3' || fileExtension === 'wav') fileType = 'audio' } messageInput += `{{${fileType}::${additionalAsset[0]}}} *${additionalAsset[0]} added*` updateInputSizeAll() }}/>
{/if} {#if DBState.db.useAutoSuggestions} messageInput=( (DBState.db.subModel === "textgen_webui" || DBState.db.subModel === "mancer" || DBState.db.subModel.startsWith('local_')) && DBState.db.autoSuggestClean ? msg.replace(/ +\(.+?\) *$| - [^"'*]*?$/, '') : msg )} {send}/> {/if} {#key loadPages} {#each messageForm(DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message, loadPages) as chat, i} {#if !isScrolling || i < 20} {#if chat.role === 'char'} {#if DBState.db.characters[$selectedCharID].type !== 'group'} {:else} {/if} {:else} {/if} {:else}
{/if} {/each} {/key} {#if DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message.length <= loadPages} {#if DBState.db.characters[$selectedCharID].type !== 'group' } 0} largePortrait={DBState.db.characters[$selectedCharID].largePortrait} firstMessage={true} onReroll={() => { const cha = DBState.db.characters[$selectedCharID] const chat = DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage] if(cha.type !== 'group'){ if (chat.fmIndex >= (cha.alternateGreetings.length - 1)){ chat.fmIndex = -1 } else{ chat.fmIndex += 1 } } DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage] = chat }} unReroll={() => { const cha = DBState.db.characters[$selectedCharID] const chat = DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage] if(cha.type !== 'group'){ if (chat.fmIndex === -1){ chat.fmIndex = (cha.alternateGreetings.length - 1) } else{ chat.fmIndex -= 1 } } DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage] = chat }} isLastMemory={false} /> {#if !DBState.db.characters[$selectedCharID].removedQuotes && DBState.db.characters[$selectedCharID].creatorNotes.length >= 2} { const cha = DBState.db.characters[$selectedCharID] if(cha.type !== 'group'){ cha.removedQuotes = true } DBState.db.characters[$selectedCharID] = cha }} /> {/if} {/if} {/if} {#if openMenu}
{ e.stopPropagation() }}> {#if DBState.db.characters[$selectedCharID].type === 'group'}
{language.autoMode}
{/if} {#if DBState.db.characters[$selectedCharID].ttsMode === 'webspeech' || DBState.db.characters[$selectedCharID].ttsMode === 'elevenlab'}
{ stopTTS() }}> {language.ttsStop}
{/if}
{ if((DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message.length < 2) || (DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message[DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message.length - 1].role !== 'char')){ return } sendContinue(); }} > {language.continueResponse}
{#if DBState.db.showMenuChatList}
{ openChatList = true openMenu = false }}> {language.chatList}
{/if} {#if DBState.db.translator !== ''}
{ DBState.db.useAutoTranslateInput = !DBState.db.useAutoTranslateInput }}> {language.autoTranslateInput}
{/if}
{ screenShot() }}> {language.screenshot}
{ const res = await postChatFile(messageInput) if(res?.type === 'asset'){ fileInput.push(res.data) updateInputSizeAll() } if(res?.type === 'text'){ messageInput += `{{file::${res.name}::${res.data}}}` updateInputSizeAll() } }}> {language.postFile}
{ DBState.db.useAutoSuggestions = !DBState.db.useAutoSuggestions }}> {language.autoSuggest}
{ DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].modules ??= [] openModuleList = true openMenu = false }}> {language.modules}
{#if DBState.db.sideMenuRerollButton}
{language.reroll}
{/if}
{/if}
{/if}