mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-02-26 08:58:09 +01:00
Merge branch 'SillyTavern:staging' into staging
This commit is contained in:
commit
29f045636a
3
.github/readme-zh_cn.md
vendored
3
.github/readme-zh_cn.md
vendored
@ -2,7 +2,7 @@
|
||||
|
||||

|
||||
|
||||
移动设备界面友好,多种人工智能服务或模型支持(KoboldAI/CPP, Horde, NovelAI, Ooba, OpenAI, OpenRouter, Claude, Scale),类似 Galgame 的 老 婆 模 式,Horde SD,文本系统语音生成,世界信息(Lorebooks),可定制的界面,自动翻译,和比你所需要的更多的 Prompt。附带扩展服务,支持文本绘画生成与语音生成和基于向量数据库 ChromaDB 的聊天信息总结。
|
||||
移动设备界面友好,多种人工智能服务或模型支持(KoboldAI/CPP, Horde, NovelAI, Ooba, OpenAI, OpenRouter, Claude, Scale),类似 Galgame 的 老 婆 模 式,Horde SD,文本系统语音生成,世界信息(Lorebooks),可定制的界面,自动翻译,和比你所需要的更多的 Prompt。附带扩展服务,支持文本绘画生成与语音生成和基于向量数据库 的聊天信息总结。
|
||||
|
||||
基于 TavernAI 1.2.8 的分叉版本
|
||||
|
||||
@ -81,7 +81,6 @@ SillyTavern 支持扩展服务,一些额外的人工智能模块可通过 [Sil
|
||||
* 在聊天窗口发送图片,并由人工智能解释图片内容
|
||||
* 文本图像生成(5 预设,以及 "自由模式")
|
||||
* 聊天信息的文字转语音(通过 ElevenLabs、Silero 或操作系统的语音生成)
|
||||
* ChromaDB 向量数据库,用于更智能的聊天 Prompt
|
||||
|
||||
扩展服务的完整功能介绍和使用教程,请参阅 [Docs](https://docs.sillytavern.app/extras/extensions/)。
|
||||
|
||||
|
3
.github/readme.md
vendored
3
.github/readme.md
vendored
@ -2,7 +2,7 @@ English | [中文](readme-zh_cn.md)
|
||||
|
||||

|
||||
|
||||
Mobile-friendly, Multi-API (KoboldAI/CPP, Horde, NovelAI, Ooba, OpenAI, OpenRouter, Claude, Scale), VN-like Waifu Mode, Horde SD, System TTS, WorldInfo (lorebooks), customizable UI, auto-translate, and more prompt options than you'd ever want or need. Optional Extras server for more SD/TTS options + ChromaDB/Summarize.
|
||||
Mobile-friendly layout, Multi-API (KoboldAI/CPP, Horde, NovelAI, Ooba, OpenAI, OpenRouter, Claude, Scale), VN-like Waifu Mode, Stable Diffusion, TTS, WorldInfo (lorebooks), customizable UI, auto-translate, and more prompt options than you'd ever want or need + ability to install third-party extensions.
|
||||
|
||||
Based on a fork of TavernAI 1.2.8
|
||||
|
||||
@ -80,7 +80,6 @@ SillyTavern has extensibility support, with some additional AI modules hosted vi
|
||||
* Sending images to chat, and the AI interpreting the content
|
||||
* Stable Diffusion image generation (5 chat-related presets plus 'free mode')
|
||||
* Text-to-speech for AI response messages (via ElevenLabs, Silero, or the OS's System TTS)
|
||||
* ChromaDB vector storage for smarter chat prompt formatting
|
||||
|
||||
A full list of included extensions and tutorials on how to use them can be found in the [Docs](https://docs.sillytavern.app/extras/extensions/).
|
||||
|
||||
|
@ -70,7 +70,7 @@
|
||||
"#@markdown * ckpt/sd15 - base SD 1.5\n",
|
||||
"#@markdown * stabilityai/stable-diffusion-2-1-base - base SD 2.1\n",
|
||||
"extras_enable_chromadb = True #@param {type:\"boolean\"}\n",
|
||||
"#@markdown Enables ChromaDB for Infinity Context plugin\n",
|
||||
"#@markdown Enables ChromaDB module\n",
|
||||
"\n",
|
||||
"import subprocess\n",
|
||||
"import secrets\n",
|
||||
|
@ -328,9 +328,7 @@ body.movingUI .drawer-content,
|
||||
body.movingUI #expression-holder,
|
||||
body.movingUI .zoomed_avatar,
|
||||
body.movingUI .draggable,
|
||||
body.movingUI #floatingPrompt,
|
||||
body.movingUI #groupMemberListPopout,
|
||||
body.movingUI #summaryExtensionPopout {
|
||||
body.movingUI #floatingPrompt {
|
||||
resize: both;
|
||||
}
|
||||
|
||||
|
@ -122,11 +122,11 @@
|
||||
<div class="flex-container" id="ai_response_configuration">
|
||||
<div id="respective-presets-block" class="width100p">
|
||||
<div id="kobold_api-presets">
|
||||
<h3><span data-i18n="kobldpresets">Kobold Presets</span>
|
||||
<h4 class="margin0"><span data-i18n="kobldpresets">Kobold Presets</span>
|
||||
<a href="https://docs.sillytavern.app/usage/api-connections/koboldai/" class="notes-link" target="_blank">
|
||||
<span class="note-link-span">?</span>
|
||||
</a>
|
||||
</h3>
|
||||
</h4>
|
||||
<div class="preset_buttons">
|
||||
<select id="settings_perset" data-preset-manager-for="kobold">
|
||||
<option value="gui" data-i18n="guikoboldaisettings">GUI KoboldAI Settings</option>
|
||||
@ -140,12 +140,12 @@
|
||||
</div>
|
||||
</div>
|
||||
<div id="novel_api-presets">
|
||||
<h3>
|
||||
<h4 class="margin0">
|
||||
<span data-i18n="novelaipreserts">NovelAI Presets</span>
|
||||
<a href="https://docs.sillytavern.app/usage/api-connections/novelai/" class="notes-link" target="_blank">
|
||||
<span class="note-link-span">?</span>
|
||||
</a>
|
||||
</h3>
|
||||
</h4>
|
||||
<div class="preset_buttons">
|
||||
<select id="settings_perset_novel" data-preset-manager-for="novel">
|
||||
<option value="gui" data-i18n="default">Default</option>
|
||||
@ -160,7 +160,7 @@
|
||||
</div>
|
||||
<div id="openai_api-presets">
|
||||
<div>
|
||||
<h4><span data-i18n="openaipresets">Chat Completion Presets</span></h4>
|
||||
<h4 class="margin0"><span data-i18n="openaipresets">Chat Completion Presets</span></h4>
|
||||
<div class="openai_preset_buttons">
|
||||
<select id="settings_perset_openai">
|
||||
<option value="gui" data-i18n="default">Default</option>
|
||||
@ -175,8 +175,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div id="textgenerationwebui_api-presets">
|
||||
<h3><span data-i18n="Text Gen WebUI (ooba/Mancer) presets">Text Gen WebUI (ooba/Mancer) presets</span>
|
||||
</h3>
|
||||
<h4 class="margin0"><span data-i18n="Text Gen WebUI (ooba/Mancer) presets">Text Gen WebUI (ooba/Mancer) presets</span></h4>
|
||||
<div class="preset_buttons">
|
||||
<select id="settings_preset_textgenerationwebui" data-preset-manager-for="textgenerationwebui">
|
||||
</select>
|
||||
@ -1755,7 +1754,7 @@
|
||||
<div id="API-status-top" class="drawer-icon fa-solid fa-plug-circle-exclamation closedIcon" title="API Connections" data-i18n="[title]API Connections"></div>
|
||||
</div>
|
||||
<div id="rm_api_block" class="drawer-content closedDrawer">
|
||||
<h3 id="title_api">API</h3>
|
||||
<h3 class="margin0" id="title_api">API</h3>
|
||||
<div class="flex-container flexFlowColumn">
|
||||
<div id="main-API-selector-block">
|
||||
<select id="main_api">
|
||||
@ -1967,9 +1966,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<div id="openai_api" style="display: none;position: relative;">
|
||||
<h3 data-i18n="Chat Completion Source">
|
||||
<h4 class="margin0" data-i18n="Chat Completion Source">
|
||||
Chat Completion Source
|
||||
</h3>
|
||||
</h4>
|
||||
<select id="chat_completion_source">
|
||||
<option value="openai">OpenAI</option>
|
||||
<option value="windowai">Window AI</option>
|
||||
@ -2237,7 +2236,7 @@
|
||||
<div class="drawer-icon fa-solid fa-font closedIcon" title="AI Response Formatting" data-i18n="[title]AI Response Formatting"></div>
|
||||
</div>
|
||||
<div class="drawer-content">
|
||||
<h3 data-i18n="Advanced Formatting">Advanced Formatting
|
||||
<h3 class="margin0" data-i18n="Advanced Formatting">Advanced Formatting
|
||||
<a href="https://docs.sillytavern.app/usage/core-concepts/advancedformatting/" class="notes-link" target="_blank">
|
||||
<span class="note-link-span">?</span>
|
||||
</a>
|
||||
@ -2620,7 +2619,7 @@
|
||||
<div class="unchecked fa-solid fa-unlock "></div>
|
||||
<div class="checked fa-solid fa-lock "></div>
|
||||
</label>
|
||||
<h3>
|
||||
<h3 class="margin0">
|
||||
<span data-i18n="Worlds/Lorebooks">Worlds/Lorebooks</span>
|
||||
<a href="https://docs.sillytavern.app/usage/core-concepts/worldinfo/" class="notes-link" target="_blank">
|
||||
<span class="note-link-span">?</span>
|
||||
@ -2797,7 +2796,7 @@
|
||||
<div name="userSettingsRowOne" class="flex-container flexFlowRow alignitemscenter spaceBetween">
|
||||
<div class="flex-container">
|
||||
<div class="flex-container flexnowrap alignitemscenter">
|
||||
<h3><span data-i18n="User Settings">User Settings</span></h3>
|
||||
<h3 class="margin0"><span data-i18n="User Settings">User Settings</span></h3>
|
||||
<select id="ui_mode_select" class="margin0 widthNatural">
|
||||
<option value="0" data-i18n="Simple">Simple</option>
|
||||
<option value="1" data-i18n="Advanced">Advanced</option>
|
||||
@ -3273,7 +3272,7 @@
|
||||
</div>
|
||||
<div class="drawer-content closedDrawer">
|
||||
<div class="flex-container wide100p alignitemscenter spaceBetween">
|
||||
<h3><span data-i18n="Persona Management">Persona Management</span></h3>
|
||||
<h3 class="margin0"><span data-i18n="Persona Management">Persona Management</span></h3>
|
||||
<a href="https://docs.sillytavern.app/usage/core-concepts/personas/" target="_blank" data-i18n="How do I use this?">How do I use this?</a>
|
||||
<div id="persona-management-block" class="flex-container wide100p">
|
||||
<div class="flex1">
|
||||
@ -3674,7 +3673,7 @@
|
||||
<div id="dialogue_popup">
|
||||
<div id="dialogue_popup_holder">
|
||||
<div id="dialogue_popup_text">
|
||||
<h3>text</h3>
|
||||
<h3 class="margin0">text</h3>
|
||||
</div>
|
||||
<textarea id="dialogue_popup_input" class="text_pole" rows="1"></textarea>
|
||||
<div id="dialogue_popup_controls">
|
||||
@ -3687,7 +3686,7 @@
|
||||
<div id="character_popup" class="flex-container flexFlowColumn flexNoGap">
|
||||
|
||||
<div id="character_popup_text">
|
||||
<h3 id="character_popup_text_h3"></h3> <span data-i18n="Advanced Defininitions">- Advanced
|
||||
<h3 id="character_popup_text_h3" class="margin0"></h3> <span data-i18n="Advanced Defininitions">- Advanced
|
||||
Definitions</span>
|
||||
</div>
|
||||
<hr class="margin-bot-10px">
|
||||
@ -3868,7 +3867,7 @@
|
||||
<div id="scenario_override_template" class="template_element">
|
||||
<div class="scenario_override range-block flexFlowColumn flex-container">
|
||||
<div class="range-block-title title_restorable">
|
||||
<h3><span data-i18n="Chat Scenario Override">Chat Scenario Override</span></h3>
|
||||
<h3><span data-i18n="Chat Scenario Override" class="margin0">Chat Scenario Override</span></h3>
|
||||
<div title="Remove" data-i18n="[title]Remove" class="menu_button fa-solid fa-trash-can remove_scenario_override"></div>
|
||||
</div>
|
||||
<div class="range-block-counter justifyLeft flex-container flexFlowColumn">
|
||||
@ -4781,6 +4780,7 @@
|
||||
|
||||
<template id="generic_draggable_template">
|
||||
<div class="draggable">
|
||||
<div class="dragTitle"></div>
|
||||
<div class="panelControlBar flex-container">
|
||||
<div class="fa-solid fa-grip drag-grabber"></div>
|
||||
<div class="fa-solid fa-circle-xmark dragClose"></div>
|
||||
@ -4838,4 +4838,4 @@
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
</html>
|
@ -123,8 +123,7 @@ function downloadAssetsList(url) {
|
||||
|
||||
$(`<i></i>`)
|
||||
.append(element)
|
||||
.append(`<span>${displayName}</span>`)
|
||||
.append(`<span>${description}</span>`)
|
||||
.append(`<div class="flex-container flexFlowColumn"><span>${displayName}</span><span>${description}</span></div>`)
|
||||
.appendTo(assetTypeMenu);
|
||||
}
|
||||
assetTypeMenu.appendTo("#assets_menu");
|
||||
|
@ -5,7 +5,7 @@ import {
|
||||
getRequestHeaders,
|
||||
} from "../../../script.js";
|
||||
import { selected_group } from "../../group-chats.js";
|
||||
import { loadFileToDocument } from "../../utils.js";
|
||||
import { loadFileToDocument, delay } from "../../utils.js";
|
||||
import { loadMovingUIState } from '../../power-user.js';
|
||||
import { dragElement } from '../../RossAscends-mods.js';
|
||||
import { registerSlashCommand } from "../../slash-commands.js";
|
||||
@ -109,6 +109,13 @@ async function initGallery(items, url) {
|
||||
let file = e.originalEvent.dataTransfer.files[0];
|
||||
uploadFile(file, url); // Added url parameter to know where to upload
|
||||
});
|
||||
|
||||
//let images populate first
|
||||
await delay(100)
|
||||
//unset the height (which must be getting set by the gallery library at some point)
|
||||
$("#dragGallery").css('height', 'unset');
|
||||
//force a resize to make images display correctly
|
||||
jQuery("#dragGallery").nanogallery2('resize');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -247,14 +254,16 @@ $(document).ready(function () {
|
||||
* The cloned element has its attributes set, a new child div appended, and is made visible on the body.
|
||||
* Additionally, it sets up the element to prevent dragging on its images.
|
||||
*/
|
||||
function makeMovable(id="gallery"){
|
||||
function makeMovable(id = "gallery") {
|
||||
|
||||
console.debug('making new container from template')
|
||||
const template = $('#generic_draggable_template').html();
|
||||
const newElement = $(template);
|
||||
newElement.css('background-color', 'var(--SmartThemeBlurTintColor)');
|
||||
newElement.attr('forChar', id);
|
||||
newElement.attr('id', `${id}`);
|
||||
newElement.find('.drag-grabber').attr('id', `${id}header`);
|
||||
newElement.find('.dragTitle').text('Image Gallery')
|
||||
//add a div for the gallery
|
||||
newElement.append(`<div id="dragGallery"></div>`);
|
||||
// add no-scrollbar class to this element
|
||||
@ -326,6 +335,8 @@ function makeDragImg(id, url) {
|
||||
|
||||
// Ensure that the newly added element is displayed as block
|
||||
draggableElem.style.display = 'block';
|
||||
//and has no padding unlike other non-zoomed-avatar draggables
|
||||
draggableElem.style.padding = '0';
|
||||
|
||||
// Add an id to the close button
|
||||
// If the close button exists, set related-id
|
||||
@ -375,11 +386,11 @@ function makeDragImg(id, url) {
|
||||
* @param {string} id - The ID to be sanitized.
|
||||
* @returns {string} - The sanitized ID.
|
||||
*/
|
||||
function sanitizeHTMLId(id){
|
||||
function sanitizeHTMLId(id) {
|
||||
// Replace spaces and non-word characters
|
||||
id = id.replace(/\s+/g, '-')
|
||||
.replace(/[^\x00-\x7F]/g, '-')
|
||||
.replace(/\W/g, '');
|
||||
.replace(/[^\x00-\x7F]/g, '-')
|
||||
.replace(/\W/g, '');
|
||||
|
||||
return id;
|
||||
}
|
||||
|
@ -571,12 +571,13 @@ function doPopout(e) {
|
||||
const template = $('#zoomed_avatar_template').html();
|
||||
const controlBarHtml = `<div class="panelControlBar flex-container">
|
||||
<div id="summaryExtensionPopoutheader" class="fa-solid fa-grip drag-grabber hoverglow"></div>
|
||||
<div id="summaryExtensionPopoutClose" class="fa-solid fa-circle-xmark hoverglow"></div>
|
||||
<div id="summaryExtensionPopoutClose" class="fa-solid fa-circle-xmark hoverglow dragClose"></div>
|
||||
</div>`
|
||||
const newElement = $(template);
|
||||
newElement.attr('id', 'summaryExtensionPopout');
|
||||
newElement.removeClass('zoomed_avatar')
|
||||
newElement.empty()
|
||||
newElement.attr('id', 'summaryExtensionPopout')
|
||||
.removeClass('zoomed_avatar')
|
||||
.addClass('draggable')
|
||||
.empty()
|
||||
const prevSummaryBoxContents = $('#memory_contents').val(); //copy summary box before emptying
|
||||
originalElement.empty();
|
||||
originalElement.html(`<div class="flex-container alignitemscenter justifyCenter wide100p"><small>Currently popped out</small></div>`)
|
||||
|
@ -1555,11 +1555,14 @@ function doCurMemberListPopout() {
|
||||
<div id="groupMemberListPopoutClose" class="fa-solid fa-circle-xmark hoverglow"></div>
|
||||
</div>`
|
||||
const newElement = $(template);
|
||||
newElement.attr('id', 'groupMemberListPopout');
|
||||
newElement.removeClass('zoomed_avatar')
|
||||
newElement.empty()
|
||||
|
||||
newElement.append(controlBarHtml).append(memberListClone)
|
||||
newElement.attr('id', 'groupMemberListPopout')
|
||||
.removeClass('zoomed_avatar')
|
||||
.addClass('draggable')
|
||||
.empty()
|
||||
.append(controlBarHtml)
|
||||
.append(memberListClone)
|
||||
|
||||
$('body').append(newElement);
|
||||
loadMovingUIState();
|
||||
$("#groupMemberListPopout").fadeIn(250)
|
||||
|
@ -1413,12 +1413,14 @@ async function resetMovablePanels(type) {
|
||||
'floatingPrompt',
|
||||
'expression-holder',
|
||||
'groupMemberListPopout',
|
||||
'summaryExtensionPopout'
|
||||
'summaryExtensionPopout',
|
||||
'gallery'
|
||||
];
|
||||
|
||||
const panelStyles = ['top', 'left', 'right', 'bottom', 'height', 'width', 'margin',];
|
||||
|
||||
panelIds.forEach((id) => {
|
||||
console.log(id)
|
||||
const panel = document.getElementById(id);
|
||||
|
||||
if (panel) {
|
||||
|
101
public/style.css
101
public/style.css
@ -351,6 +351,7 @@ hr {
|
||||
height: 1px;
|
||||
min-height: 1px;
|
||||
border: 0;
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
#bg1,
|
||||
@ -389,7 +390,7 @@ hr {
|
||||
display: inline-block;
|
||||
height: var(--bottomFormBlockSize);
|
||||
position: absolute;
|
||||
border-bottom: 1px solid var(--SmartThemeBorderColor);
|
||||
/* border-bottom: 1px solid var(--SmartThemeBorderColor); */
|
||||
box-shadow: 0 2px 20px 0 var(--black70a);
|
||||
backdrop-filter: blur(var(--SmartThemeBlurStrength));
|
||||
background-color: var(--SmartThemeBlurTintColor);
|
||||
@ -421,23 +422,25 @@ hr {
|
||||
|
||||
.drag-grabber {
|
||||
position: absolute;
|
||||
width: 20px !important;
|
||||
height: 20px !important;
|
||||
/* width: 20px !important;
|
||||
height: 20px !important; */
|
||||
margin: 0px 5px;
|
||||
color: var(--SmartThemeBodyColor);
|
||||
z-index: 2000;
|
||||
text-align: center;
|
||||
border-radius: 5px;
|
||||
/* border-radius: 5px; */
|
||||
vertical-align: middle;
|
||||
right: 0px;
|
||||
top: 0px;
|
||||
opacity: 0.5;
|
||||
cursor: grab;
|
||||
border: 1px solid var(--SmartThemeBorderColor);
|
||||
/* border: 1px solid var(--SmartThemeBorderColor); */
|
||||
cursor: -moz-grab;
|
||||
cursor: -webkit-grab;
|
||||
display: none;
|
||||
filter: drop-shadow(0px 0px 0px black);
|
||||
transition: all 250ms;
|
||||
font-size: calc(var(--mainFontSize)*1.3);
|
||||
}
|
||||
|
||||
.drag-grabber:hover {
|
||||
@ -480,9 +483,9 @@ hr {
|
||||
overflow-y: scroll;
|
||||
display: flex;
|
||||
bottom: 10px;
|
||||
border-bottom: 1px solid var(--SmartThemeBorderColor);
|
||||
/* border-bottom: 1px solid var(--SmartThemeBorderColor);
|
||||
border-left: 1px solid var(--SmartThemeBorderColor);
|
||||
border-right: 1px solid var(--SmartThemeBorderColor);
|
||||
border-right: 1px solid var(--SmartThemeBorderColor); */
|
||||
backdrop-filter: blur(var(--SmartThemeBlurStrength));
|
||||
background-color: var(--SmartThemeChatTintColor);
|
||||
-webkit-backdrop-filter: blur(var(--SmartThemeBlurStrength));
|
||||
@ -959,10 +962,10 @@ select {
|
||||
#character_cross,
|
||||
#select_chat_cross {
|
||||
position: absolute;
|
||||
right: 15px;
|
||||
top: 15px;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
right: 5px;
|
||||
top: 5px;
|
||||
/* width: 20px;
|
||||
height: 20px; */
|
||||
cursor: pointer;
|
||||
opacity: 0.6;
|
||||
font-size: 24px;
|
||||
@ -1251,9 +1254,11 @@ input[type="file"] {
|
||||
.dragClose {
|
||||
height: 15px;
|
||||
aspect-ratio: 1 / 1;
|
||||
font-size: 20px;
|
||||
font-size: calc(var(--mainFontSize)*1.3);
|
||||
opacity: 0.5;
|
||||
transition: all 250ms;
|
||||
filter: drop-shadow(0px 0px 2px black);
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.dragClose:hover {
|
||||
@ -1604,11 +1609,6 @@ input[type=search]:focus::-webkit-search-cancel-button {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
#user-settings-block h4,
|
||||
#user-settings-block h3 {
|
||||
margin: 5px 0;
|
||||
}
|
||||
|
||||
#avatar-and-name-block {
|
||||
justify-content: space-between;
|
||||
display: flex;
|
||||
@ -3409,51 +3409,38 @@ a {
|
||||
color: var(--SmartThemeBodyColor);
|
||||
}
|
||||
|
||||
.zoomed_avatar,
|
||||
#groupMemberListPopout,
|
||||
#summaryExtensionPopout {
|
||||
min-width: 100px;
|
||||
min-height: 100px;
|
||||
max-height: 90vh;
|
||||
max-width: 90vh;
|
||||
width: clamp(100px, 400px, calc((100vw - var(--sheldWidth)) /2));
|
||||
/* width: calc((100vw - var(--sheldWidth)) /2); */
|
||||
position: absolute;
|
||||
padding: 0;
|
||||
/* filter: drop-shadow(2px 2px 2px var(--grey7070a)); */
|
||||
box-shadow: 1px 2px 2px var(--black30a);
|
||||
z-index: 29;
|
||||
overflow: hidden;
|
||||
display: none;
|
||||
bottom: 0;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.zoomed_avatar {
|
||||
aspect-ratio: 2 / 3;
|
||||
}
|
||||
|
||||
#groupMemberListPopout,
|
||||
#summaryExtensionPopout {
|
||||
border: 1px solid var(--SmartThemeBorderColor);
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.draggable {
|
||||
min-width: 100px;
|
||||
min-height: 100px;
|
||||
max-height: 90vh;
|
||||
max-width: 90vh;
|
||||
width: clamp(100px, 400px, calc((100vw - var(--sheldWidth)) /2));
|
||||
max-width: 90vw;
|
||||
width: calc((100vw - var(--sheldWidth)) /2);
|
||||
position: absolute;
|
||||
padding: 0;
|
||||
filter: drop-shadow(2px 2px 2px var(--grey7070a));
|
||||
filter: drop-shadow(1px 1px 2px var(--black50a));
|
||||
z-index: 29;
|
||||
overflow: hidden;
|
||||
display: none;
|
||||
bottom: 0;
|
||||
aspect-ratio: 2 / 3;
|
||||
border-radius: 10px;
|
||||
border: 1px solid var(--SmartThemeBorderColor);
|
||||
aspect-ratio: unset;
|
||||
backdrop-filter: blur(var(--SmartThemeBlurStrength));
|
||||
background-color: var(--SmartThemeBlurTintColor);
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.zoomed_avatar {
|
||||
aspect-ratio: 2 / 3;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.zoomed_avatar img {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
vertical-align: bottom;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
/* Hide scrollbar for Chrome, Safari and Opera */
|
||||
@ -3477,13 +3464,13 @@ a {
|
||||
transition: all 250ms;
|
||||
}
|
||||
|
||||
#groupMemberListPopout,
|
||||
/* #groupMemberListPopout,
|
||||
#summaryExtensionPopout {
|
||||
aspect-ratio: unset;
|
||||
backdrop-filter: blur(var(--SmartThemeBlurStrength));
|
||||
background-color: var(--SmartThemeBlurTintColor);
|
||||
overflow: auto;
|
||||
}
|
||||
} */
|
||||
|
||||
#groupMemberListPopout {
|
||||
padding: 0;
|
||||
@ -3497,13 +3484,7 @@ a {
|
||||
|
||||
}
|
||||
|
||||
.zoomed_avatar img {
|
||||
border-radius: 20px;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
vertical-align: bottom;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
|
||||
.timestamp {
|
||||
font-size: calc(var(--mainFontSize) * 0.7);
|
||||
|
Loading…
x
Reference in New Issue
Block a user