diff --git a/src/lang/cn.ts b/src/lang/cn.ts index dd14b6a5..d45ddab8 100644 --- a/src/lang/cn.ts +++ b/src/lang/cn.ts @@ -304,6 +304,8 @@ export const languageChinese = { tags: "标签", copied: "已复制", useChatCopy: "使用聊天复制", + useChatSticker: "使用聊天贴纸", + useAdditionalAssetsPreview: "使用附加资源预览", autoTranslateInput: "使用自动翻译输入", enterMessageForTranslateToEnglish: "输入要翻译为英语的消息", recent: '最新', diff --git a/src/lang/en.ts b/src/lang/en.ts index 51317e85..a960c1c0 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -308,6 +308,8 @@ export const languageEnglish = { backgroundHTML: "Background Embedding", copied: "Copied", useChatCopy: "Use Chat Message Copy", + useChatSticker: "Use Chat Sticker", + useAdditionalAssetsPreview: "Use Additional Assets Preview", autoTranslateInput: "Auto Translate Input", enterMessageForTranslateToEnglish: "Enter Message for Translate to English", recent: 'Recent', diff --git a/src/lang/ko.ts b/src/lang/ko.ts index 266ff153..295ca49c 100644 --- a/src/lang/ko.ts +++ b/src/lang/ko.ts @@ -280,6 +280,8 @@ export const languageKorean = { backgroundHTML: "백그라운드 임베딩", copied: "복사됨", useChatCopy: "채팅 메시지 복사 사용", + useChatSticker: "채팅 스티커 사용", + useAdditionalAssetsPreview: "추가 에셋 미리보기 사용", autoTranslateInput: "입력 자동 번역", enterMessageForTranslateToEnglish: "영어로 번역할 메시지를 입력해주세요", imageCompression: "이미지 압축", diff --git a/src/lib/ChatScreens/AssetInput.svelte b/src/lib/ChatScreens/AssetInput.svelte new file mode 100644 index 00000000..0bf4d097 --- /dev/null +++ b/src/lib/ChatScreens/AssetInput.svelte @@ -0,0 +1,75 @@ + +{#if currentCharacter.type ==='character'} + + {#if currentCharacter.additionalAssets} + {#each currentCharacter.additionalAssets as additionalAsset, i} + + {/each} + {/if} +{/if} \ No newline at end of file diff --git a/src/lib/ChatScreens/Chat.svelte b/src/lib/ChatScreens/Chat.svelte index fb6e37bc..be0bf967 100644 --- a/src/lib/ChatScreens/Chat.svelte +++ b/src/lib/ChatScreens/Chat.svelte @@ -8,6 +8,7 @@ import { selectedCharID } from "../../ts/stores"; import { translate } from "../../ts/translator/translator"; import { replacePlaceholders } from "../../ts/util"; + export let message = '' export let name = '' export let isLastMemory:boolean @@ -17,6 +18,7 @@ export let onReroll = () => {} export let unReroll = () => {} export let character:character|groupChat|null = null + let md:string let translating = false let editMode = false let statusMessage:string = '' @@ -24,7 +26,8 @@ let msgDisplay = '' let msgTranslated = '' - let translated = false; + let translated = false + async function rm(){ const rm = $DataBase.askRemoval ? await alertConfirm(language.removeChat) : true if(rm){ @@ -53,7 +56,7 @@ $DataBase.characters[$selectedCharID].chats[$DataBase.characters[$selectedCharID].chatPage].message = msg } - async function displaya(message:string){ + async function displaya(message:string, isStreaming:boolean = false){ if($DataBase.autoTranslate && $DataBase.translator !== ''){ if(msgTranslated==='') msgDisplay = replacePlaceholders(message, name) @@ -64,6 +67,12 @@ else{ msgDisplay = replacePlaceholders(message, name) } + + if(!md || !isStreaming || isStreaming && idx === $DataBase.characters[$selectedCharID].chats[$DataBase.characters[$selectedCharID].chatPage].message.length - 1) { + ParseMarkdown(msgDisplay, character, 'normal').then(mdNew=>{ + md = mdNew + }) + } } const setStatusMessage = (message:string, timeout:number = 0)=>{ @@ -74,7 +83,7 @@ }, timeout) } - $: displaya(message) + $: displaya(message, $DataBase.characters[$selectedCharID].chats[$DataBase.characters[$selectedCharID].chatPage].isStreaming)
@@ -161,19 +170,17 @@
{#if editMode} - {:else} - {#await ParseMarkdown(msgDisplay, character) then md} - - { - if($DataBase.clickToEdit && idx > -1){ - editMode = true - msgTranslated = "" - } - }} - style:font-size="{0.875 * ($DataBase.zoomsize / 100)}rem" - style:line-height="{1.25 * ($DataBase.zoomsize / 100)}rem" - >{@html md} - {/await} + {:else if md} + + { + if($DataBase.clickToEdit && idx > -1){ + editMode = true + msgTranslated = "" + } + }} + style:font-size="{0.875 * ($DataBase.zoomsize / 100)}rem" + style:line-height="{1.25 * ($DataBase.zoomsize / 100)}rem" + >{@html md} {/if} diff --git a/src/lib/ChatScreens/DefaultChatScreen.svelte b/src/lib/ChatScreens/DefaultChatScreen.svelte index 30db6bee..8a63394e 100644 --- a/src/lib/ChatScreens/DefaultChatScreen.svelte +++ b/src/lib/ChatScreens/DefaultChatScreen.svelte @@ -1,9 +1,9 @@
{ @@ -234,6 +241,12 @@ } }}>
+ {#if $DataBase.useChatSticker && currentCharacter.type !== 'group'} +
{toggleStickers = !toggleStickers}} + class={"ml-4 bg-gray-500 flex justify-center items-center w-12 h-12 rounded-md hover:bg-green-500 transition-colors "+(toggleStickers ? 'text-green-500':'text-white')}> + +
+ {/if}