From 00dc7284cc8c20b8d2b0d1592c8d6443c7eee251 Mon Sep 17 00:00:00 2001 From: RossAscends <124905043+RossAscends@users.noreply.github.com> Date: Wed, 12 Apr 2023 18:05:18 +0900 Subject: [PATCH] blur strength slider added --- public/index.html | 2 +- public/scripts/power-user.js | 32 +++++++++++++++++ public/style.css | 66 ++++++++++++++++++++---------------- 3 files changed, 70 insertions(+), 30 deletions(-) diff --git a/public/index.html b/public/index.html index d435c49d2..40c64209e 100644 --- a/public/index.html +++ b/public/index.html @@ -1186,7 +1186,7 @@ Blur Strength
- +
WIP diff --git a/public/scripts/power-user.js b/public/scripts/power-user.js index 6420612dd..cd4d6baa3 100644 --- a/public/scripts/power-user.js +++ b/public/scripts/power-user.js @@ -44,6 +44,7 @@ let power_user = { sort_field: 'name', sort_order: 'asc', font_scale: 1, + blur_strength: 10, main_text_color: `${getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeBodyColor').trim()}`, italics_text_color: `${getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeEmColor').trim()}`, @@ -71,6 +72,7 @@ const storage_keys = { italics_text_color: "TavernAI_italics_text_color", fastui_bg_color: "TavernAI_fastui_bg_color", blur_tint_color: "TavernAI_blur_tint_color", + blur_strength: "TavernAI_blur_strength", }; const chat = document.getElementById('chat'); @@ -162,6 +164,23 @@ async function applyThemeColor(type) { chat.style.transition = chatTransition; } +async function applyBlurStrength() { + power_user.blur_strength = Number(localStorage.getItem(storage_keys.blur_strength) ?? 1); + + // temporarily unset transition from chat to not make the browser calculate the animation + chat.style.transition = 'unset'; + + // now apply the blur strength to the document + document.documentElement.style.setProperty('--blurStrength', power_user.blur_strength); + $("#blur_strength_counter").text(power_user.blur_strength); + + // a small delay to let the browser do the layout redraw + await delay(1); + // set transition back to chat + chat.style.transition = chatTransition; +} + + async function applyFontScale() { power_user.font_scale = Number(localStorage.getItem(storage_keys.font_scale) ?? 1); @@ -183,6 +202,7 @@ switchUiMode(); applyChatDisplay(); applySheldWidth(); applyFontScale(); +applyBlurStrength(); applyThemeColor(); // TODO delete in next release @@ -214,6 +234,7 @@ function loadPowerUserSettings(settings) { power_user.chat_display = Number(localStorage.getItem(storage_keys.chat_display) ?? chat_styles.DEFAULT); power_user.sheld_width = Number(localStorage.getItem(storage_keys.sheld_width) ?? sheld_width.DEFAULT); power_user.font_scale = Number(localStorage.getItem(storage_keys.font_scale) ?? 1); + power_user.blur_strength = Number(localStorage.getItem(storage_keys.blur_strength) ?? 10); $("#force-pygmalion-formatting-checkbox").prop("checked", power_user.force_pygmalion_formatting); $("#collapse-newlines-checkbox").prop("checked", power_user.collapse_newlines); @@ -233,11 +254,15 @@ function loadPowerUserSettings(settings) { $("#font_scale").val(power_user.font_scale); $("#font_scale_counter").html(power_user.font_scale); + $("#blur_strength").val(power_user.blur_strength); + $("#blur_strength_counter").html(power_user.blur_strength); + $("#main-text-color-picker").attr('color', power_user.main_text_color); $("#italics-color-picker").attr('color', power_user.italics_text_color); $("#fastui-bg-color-picker").attr('color', power_user.fastui_bg_color); $("#blur-tint-color-picker").attr('color', power_user.blur_tint_color); + $(`#character_sort_order option[data-order="${power_user.sort_order}"][data-field="${power_user.sort_field}"]`).prop("selected", true); sortCharactersList(); } @@ -339,6 +364,13 @@ $(document).ready(() => { applyFontScale(); }); + $(`input[name="blur_strength"]`).on('input', function (e) { + power_user.blur_strength = Number(e.target.value); + $("#blur_strength_counter").text(power_user.blur_strength); + localStorage.setItem(storage_keys.blur_strength, power_user.blur_strength); + applyBlurStrength(); + }); + $("#main-text-color-picker").on('change', (evt) => { power_user.main_text_color = evt.detail.rgba; applyThemeColor('main'); diff --git a/public/style.css b/public/style.css index 8ac3863c4..a555e6c2f 100644 --- a/public/style.css +++ b/public/style.css @@ -41,12 +41,18 @@ --SmartThemeEmColor: rgb(175, 175, 175); --SmartThemeFastUIBGColor: rgba(0, 0, 0, 0.9); --SmartThemeBlurTintColor: rgba(0, 0, 0, 0.5); + --SmartThemeBlurStrength: calc(var(--blurStrength) * 1px); --sheldWidth: 800px; /*base variable calculated in rems*/ --fontScale: 1; --mainFontSize: calc(var(--fontScale) * 1rem); + /* base variable for blur strength slider calculations */ + --blurStrength: 10; + + + /*styles for the color picker*/ --tool-cool-color-picker-btn-bg: transparent; --tool-cool-color-picker-btn-border-color: transparent; @@ -182,10 +188,10 @@ code { color: var(--black30a); border-bottom: 1px solid var(--black70a); box-shadow: 0 2px 20px 0 var(--black70a); - backdrop-filter: blur(10px); + backdrop-filter: blur(var(--SmartThemeBlurStrength)); background-color: var(--SmartThemeBlurTintColor); /* border-radius: 0 0 20px 20px; */ - -webkit-backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(var(--SmartThemeBlurStrength)); z-index: 3000; } @@ -214,9 +220,9 @@ code { border-bottom: 1px solid var(--grey30a); border-left: 1px solid var(--grey30a); border-right: 1px solid var(--grey30a); - backdrop-filter: blur(10px); + backdrop-filter: blur(var(--SmartThemeBlurStrength)); background-color: var(--SmartThemeBlurTintColor); - -webkit-backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(var(--SmartThemeBlurStrength)); text-shadow: #000 0 0 3px; scrollbar-width: thin; transition: all 1s ease-in-out; @@ -241,7 +247,7 @@ code { border-radius: 0 0 20px 20px; background-color: var(--crimson70a); - backdrop-filter: blur(10px); + backdrop-filter: blur(var(--SmartThemeBlurStrength)); } #send_but_sheld { @@ -1145,9 +1151,9 @@ input[type=search]:focus::-webkit-search-cancel-button { margin-top: 36svh; box-shadow: 0 0 2px var(--black50a); padding: 4px; - backdrop-filter: blur(10px); + backdrop-filter: blur(var(--SmartThemeBlurStrength)); background-color: var(--black70a); - -webkit-backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(var(--SmartThemeBlurStrength)); border-radius: 10px; } @@ -1254,8 +1260,8 @@ input[type=search]:focus::-webkit-search-cancel-button { } #shadow_popup { - backdrop-filter: blur(10px); - -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(calc(var(--SmartThemeBlurStrength) * 2)); + -webkit-backdrop-filter: blur(calc(var(--SmartThemeBlurStrength) * 2)); display: none; opacity: 0.0; position: absolute; @@ -1267,8 +1273,8 @@ input[type=search]:focus::-webkit-search-cancel-button { #colab_shadow_popup { - backdrop-filter: blur(10px); - -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(var(--SmartThemeBlurStrength)); + -webkit-backdrop-filter: blur(var(--SmartThemeBlurStrength)); display: none; opacity: 1.0; position: absolute; @@ -1377,8 +1383,8 @@ input[type=search]:focus::-webkit-search-cancel-button { #world_popup { display: none; - background-color: var(--black30a); - backdrop-filter: blur(50px); + background-color: var(--SmartThemeBlurTintColor); + backdrop-filter: blur(calc(var(--SmartThemeBlurStrength) * 2)); max-width: var(--sheldWidth); height: calc(100% - 40px); position: absolute; @@ -1803,9 +1809,9 @@ input[type="range"]::-webkit-slider-thumb { margin-top: 15vh; box-shadow: 5px 5px var(--black30a); padding: 4px; - backdrop-filter: blur(10px); + backdrop-filter: blur(var(--SmartThemeBlurStrength)); background-color: var(--black70a); - -webkit-backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(var(--SmartThemeBlurStrength)); border-radius: 10px; padding-top: 30px; } @@ -1913,9 +1919,9 @@ input[type="range"]::-webkit-slider-thumb { } #shadow_character_popup { - backdrop-filter: blur(10px); + backdrop-filter: blur(var(--SmartThemeBlurStrength)); background-color: var(--black70a); - -webkit-backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(var(--SmartThemeBlurStrength)); display: none; opacity: 1.0; position: absolute; @@ -1927,8 +1933,8 @@ input[type="range"]::-webkit-slider-thumb { #character_popup { display: none; background-color: var(--black30a); - backdrop-filter: blur(50px); - -webkit-backdrop-filter: blur(30px); + backdrop-filter: blur(var(--SmartThemeBlurStrength)); + -webkit-backdrop-filter: blur(var(--SmartThemeBlurStrength)); grid-template-rows: 50px 1fr 1fr 1fr 5fr; grid-gap: 10px; max-width: var(--sheldWidth); @@ -2007,9 +2013,9 @@ h5 { height: 40px; margin-top: 15px; margin-left: 36px; - backdrop-filter: blur(10px); + backdrop-filter: blur(var(--SmartThemeBlurStrength)); background-color: var(--black70a); - -webkit-backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(var(--SmartThemeBlurStrength)); width: 110px; text-align: center; } @@ -2022,8 +2028,8 @@ h5 { height: 100svh; z-index: 3001; top: 0; - backdrop-filter: blur(10px); - -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(var(--SmartThemeBlurStrength)); + -webkit-backdrop-filter: blur(var(--SmartThemeBlurStrength)); } #select_chat_popup { @@ -2692,9 +2698,9 @@ a { left: auto; padding: 0; margin-bottom: 5px; - backdrop-filter: blur(10px); + backdrop-filter: blur(calc(var(--SmartThemeBlurStrength))); background-color: var(--SmartThemeBlurTintColor); - -webkit-backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(calc(var(--SmartThemeBlurStrength))); z-index: 3000; border: 0; border-left: 1px solid var(--grey30a); @@ -2895,7 +2901,8 @@ label[for="extensions_autoconnect"] { .drawer-icon.openIcon { /* background-image: url('img/circle-chevron-up-solid.svg'); */ - filter: invert(1) brightness(200%); + filter: invert(1) brightness(200%) drop-shadow(0px 0px 2px black); + ; transition: all 0.275s; } @@ -2905,7 +2912,8 @@ label[for="extensions_autoconnect"] { .drawer-icon.closedIcon { /* background-image: url('img/circle-chevron-down-solid.svg'); */ - filter: invert(1); + filter: invert(1) drop-shadow(0px 0px 2px black); + ; opacity: 0.3; transition: all 0.275s; } @@ -2965,8 +2973,8 @@ label[for="extensions_autoconnect"] { width: min-content; max-width: var(--sheldWidth); margin: 35px auto 0 auto; - backdrop-filter: blur(20px); - -webkit-backdrop-filter: blur(20px); + backdrop-filter: blur(calc(var(--SmartThemeBlurStrength))); + -webkit-backdrop-filter: blur(calc(var(--SmartThemeBlurStrength))); } .fillRight,