Merge pull request #465 from kaalibro/confirm-page-unload

feat: Confirm page unload
pull/466/head
CanisMinor 2023-11-23 01:07:12 +08:00 committed by GitHub
commit e2d39379b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 127 additions and 96 deletions

File diff suppressed because one or more lines are too long

View File

@ -21,6 +21,8 @@
"setting": "Setting",
"settingButtonReset": "Reset",
"settingButtonSubmit": "Apply and Restart Interface",
"settingConfirmPageUnload": "Confirmation on page leaving",
"settingConfirmPageUnloadDesc": "Helps prevent loss of unsaved data",
"settingCustomFont": "Load Custom Font",
"settingCustomFontDesc": "When enabled, it will automatically load a webfont to enhance the display of text in Chinese, English, and code",
"settingCustomLogo": "Custom Logo",

View File

@ -1,80 +1,82 @@
{
"appInitializing": "StableDiffusion/LobeTheme se está inicializando, espere...",
"community": "Comunidad",
"custom": "Personalizado",
"extraNetwork": "Red Adicional",
"feedback": "Comentarios",
"fixed": "Fijado",
"float": "Flotante",
"help": "Ayuda",
"kitchen": "Kitchen",
"loadPrompt": "Cargar Prompt",
"lobe": "Lobe",
"moreProducts": "Más Productos",
"negative": "Negativo",
"positive": "Positivo",
"quickSetting": "Configuración Rápida",
"resizable": "Redimensionable",
"resources": "Recursos",
"scroll": "Desplazarse",
"setPrompt": "Establecer Prompt",
"setting": "Configuración",
"settingButtonReset": "Reiniciar",
"settingButtonSubmit": "Aplicar y reiniciar la interfaz",
"settingCustomFont": "Cargar fuente personalizada",
"settingCustomFontDesc": "Cuando esté habilitado, cargará automáticamente una fuente web para mejorar la visualización del texto en chino, inglés y código",
"settingCustomLogo": "Logo personalizado",
"settingCustomLogoDesc": "URL de soporte/Base64/símbolos Emoji",
"settingCustomTitle": "Título personalizado",
"settingCustomTitleDesc": "Título del logo personalizado",
"settingExtraNetworkSidebarDefaultCardSize": "Tamaño de portada del modelo",
"settingExtraNetworkSidebarDefaultCardSizeDesc": "Valor predeterminado del tamaño de la cubierta del modelo al iniciar",
"settingExtraNetworkSidebarDefaultExpand": "Expansión predeterminada",
"settingExtraNetworkSidebarDefaultExpandDesc": "Si se expande la barra lateral de forma predeterminada al iniciar",
"settingExtraNetworkSidebarDefaultWidth": "Ancho predeterminado",
"settingExtraNetworkSidebarDefaultWidthDesc": "Ancho predeterminado de la barra lateral al iniciar",
"settingExtraNetworkSidebarDisplayMode": "Modo de visualización",
"settingExtraNetworkSidebarDisplayModeDesc": "Fijo a modo de cuadrícula para visualización constante, se expande automáticamente cuando el mouse se mueve hacia un lado en modo flotante",
"settingExtraNetworkSidebarEnable": "Habilitar",
"settingExtraNetworkSidebarEnableDesc": "Habilita la barra lateral de red adicional en el lado derecho",
"settingGroupExtraNetworkSidebar": "Barra lateral de red adicional",
"settingGroupLayout": "Ajustes de diseño",
"settingGroupPromptTextarea": "Cuadro de texto del Prompt",
"settingGroupQuickSettingSidebar": "Barra lateral de configuración rápida",
"settingGroupTheme": "Configuración del tema",
"settingHideFooter": "Ocultar pie de página",
"settingHideFooterDesc": "Ocultar el pie de página del tema y mostrar solo el pie de página predeterminado de la webui de stable diffusion webui",
"settingLanguage": "Idioma",
"settingLanguageDesc": "Idioma del tema Lobe",
"settingLogoPreview": "Vista previa",
"settingLogoType": "Tipo de Logo",
"settingLogoTypeDesc": "Tipo de logo",
"settingNeutralColor": "Color Neutro",
"settingNeutralColorDesc": "Personaliza diferentes tonos de gris con diferentes tendencias de color, el segundo es el color neutro original del tema Kitchen",
"settingPrimaryColor": "Color primario",
"settingPrimaryColorDesc": "Color primario personalizado, el segundo es el color original del tema Kitchen",
"settingPromptDisplayMode": "Modo de Visualización",
"settingPromptDisplayModeDesc": "Altura fija o altura automática con soporte para cambio de tamaño arrastrable",
"settingPromptEditor": "Editor de Prompts",
"settingPromptEditorDesc": "Proporciona un editor de Prompts sencillo en la parte superior de la barra lateral de configuración rápida",
"settingPromptHighlight": "Resaltar sintaxis del Prompt",
"settingPromptHighlightDesc": "Colorear automáticamente la visualización del prompt de acuerdo con las reglas de sintaxis de Stable Diffusion",
"settingQuickSettingSidebarDefaultExpand": "Expansión predeterminada",
"settingQuickSettingSidebarDefaultExpandDesc": "Si se expande la barra lateral de forma predeterminada al iniciar",
"settingQuickSettingSidebarDefaultWidth": "Ancho predeterminado",
"settingQuickSettingSidebarDefaultWidthDesc": "Ancho predeterminado de la barra lateral al iniciar",
"settingQuickSettingSidebarDisplayMode": "Modo de Visualización",
"settingQuickSettingSidebarDisplayModeDesc": "Fijo como modo de cuadrícula para visualización constante, se expande automáticamente cuando el mouse se mueve hacia un lado en el modo flotante",
"settingQuickSettingSidebarEnable": "Habilitar",
"settingQuickSettingSidebarEnableDesc": "Habilita la barra lateral de configuración rápida en el lado izquierdo",
"settingReduceAnimation": "Reducir animación",
"settingReduceAnimationDesc": "Reduce el efecto de desenfoque y el color del flujo de fondo, lo que puede mejorar la suavidad y ahorrar uso de CPU",
"settingSplitPreviewer": "Vista Previa Dividida",
"settingSplitPreviewerDesc": "Coloque el cuadro de entrada de solicitud a la izquierda y el botón generar a la derecha, asegurándose de que la imagen generada siempre se muestre en la parte superior al desplazarse (experimental)",
"settingSvgIcons": "Usar Iconos SVG",
"settingSvgIconsDesc": "Reemplazar globalmente todos los íconos Emoji en la interfaz de Stable Diffusion con íconos SVG",
"switchTheme": "Cambiar Tema Claro/Oscuro",
"sync": "Sincronizar con la configuración Webui",
"themeFeedback": "Comentarios del Tema",
"themeSetting": "Configuración del Tema"
"appInitializing": "StableDiffusion/LobeTheme se está inicializando, espere...",
"community": "Comunidad",
"custom": "Personalizado",
"extraNetwork": "Red Adicional",
"feedback": "Comentarios",
"fixed": "Fijado",
"float": "Flotante",
"help": "Ayuda",
"kitchen": "Kitchen",
"loadPrompt": "Cargar Prompt",
"lobe": "Lobe",
"moreProducts": "Más Productos",
"negative": "Negativo",
"positive": "Positivo",
"quickSetting": "Configuración Rápida",
"resizable": "Redimensionable",
"resources": "Recursos",
"scroll": "Desplazarse",
"setPrompt": "Establecer Prompt",
"setting": "Configuración",
"settingButtonReset": "Reiniciar",
"settingButtonSubmit": "Aplicar y reiniciar la interfaz",
"settingConfirmPageUnload": "Confirma el cierre de la página",
"settingConfirmPageUnloadDesc": "Ayuda a evitar la pérdida de datos no guardados",
"settingCustomFont": "Cargar fuente personalizada",
"settingCustomFontDesc": "Cuando esté habilitado, cargará automáticamente una fuente web para mejorar la visualización del texto en chino, inglés y código",
"settingCustomLogo": "Logo personalizado",
"settingCustomLogoDesc": "URL de soporte/Base64/símbolos Emoji",
"settingCustomTitle": "Título personalizado",
"settingCustomTitleDesc": "Título del logo personalizado",
"settingExtraNetworkSidebarDefaultCardSize": "Tamaño de portada del modelo",
"settingExtraNetworkSidebarDefaultCardSizeDesc": "Valor predeterminado del tamaño de la cubierta del modelo al iniciar",
"settingExtraNetworkSidebarDefaultExpand": "Expansión predeterminada",
"settingExtraNetworkSidebarDefaultExpandDesc": "Si se expande la barra lateral de forma predeterminada al iniciar",
"settingExtraNetworkSidebarDefaultWidth": "Ancho predeterminado",
"settingExtraNetworkSidebarDefaultWidthDesc": "Ancho predeterminado de la barra lateral al iniciar",
"settingExtraNetworkSidebarDisplayMode": "Modo de visualización",
"settingExtraNetworkSidebarDisplayModeDesc": "Fijo a modo de cuadrícula para visualización constante, se expande automáticamente cuando el mouse se mueve hacia un lado en modo flotante",
"settingExtraNetworkSidebarEnable": "Habilitar",
"settingExtraNetworkSidebarEnableDesc": "Habilita la barra lateral de red adicional en el lado derecho",
"settingGroupExtraNetworkSidebar": "Barra lateral de red adicional",
"settingGroupLayout": "Ajustes de diseño",
"settingGroupPromptTextarea": "Cuadro de texto del Prompt",
"settingGroupQuickSettingSidebar": "Barra lateral de configuración rápida",
"settingGroupTheme": "Configuración del tema",
"settingHideFooter": "Ocultar pie de página",
"settingHideFooterDesc": "Ocultar el pie de página del tema y mostrar solo el pie de página predeterminado de la webui de stable diffusion webui",
"settingLanguage": "Idioma",
"settingLanguageDesc": "Idioma del tema Lobe",
"settingLogoPreview": "Vista previa",
"settingLogoType": "Tipo de Logo",
"settingLogoTypeDesc": "Tipo de logo",
"settingNeutralColor": "Color Neutro",
"settingNeutralColorDesc": "Personaliza diferentes tonos de gris con diferentes tendencias de color, el segundo es el color neutro original del tema Kitchen",
"settingPrimaryColor": "Color primario",
"settingPrimaryColorDesc": "Color primario personalizado, el segundo es el color original del tema Kitchen",
"settingPromptDisplayMode": "Modo de Visualización",
"settingPromptDisplayModeDesc": "Altura fija o altura automática con soporte para cambio de tamaño arrastrable",
"settingPromptEditor": "Editor de Prompts",
"settingPromptEditorDesc": "Proporciona un editor de Prompts sencillo en la parte superior de la barra lateral de configuración rápida",
"settingPromptHighlight": "Resaltar sintaxis del Prompt",
"settingPromptHighlightDesc": "Colorear automáticamente la visualización del prompt de acuerdo con las reglas de sintaxis de Stable Diffusion",
"settingQuickSettingSidebarDefaultExpand": "Expansión predeterminada",
"settingQuickSettingSidebarDefaultExpandDesc": "Si se expande la barra lateral de forma predeterminada al iniciar",
"settingQuickSettingSidebarDefaultWidth": "Ancho predeterminado",
"settingQuickSettingSidebarDefaultWidthDesc": "Ancho predeterminado de la barra lateral al iniciar",
"settingQuickSettingSidebarDisplayMode": "Modo de Visualización",
"settingQuickSettingSidebarDisplayModeDesc": "Fijo como modo de cuadrícula para visualización constante, se expande automáticamente cuando el mouse se mueve hacia un lado en el modo flotante",
"settingQuickSettingSidebarEnable": "Habilitar",
"settingQuickSettingSidebarEnableDesc": "Habilita la barra lateral de configuración rápida en el lado izquierdo",
"settingReduceAnimation": "Reducir animación",
"settingReduceAnimationDesc": "Reduce el efecto de desenfoque y el color del flujo de fondo, lo que puede mejorar la suavidad y ahorrar uso de CPU",
"settingSplitPreviewer": "Vista Previa Dividida",
"settingSplitPreviewerDesc": "Coloque el cuadro de entrada de solicitud a la izquierda y el botón generar a la derecha, asegurándose de que la imagen generada siempre se muestre en la parte superior al desplazarse (experimental)",
"settingSvgIcons": "Usar Iconos SVG",
"settingSvgIconsDesc": "Reemplazar globalmente todos los íconos Emoji en la interfaz de Stable Diffusion con íconos SVG",
"switchTheme": "Cambiar Tema Claro/Oscuro",
"sync": "Sincronizar con la configuración Webui",
"themeFeedback": "Comentarios del Tema",
"themeSetting": "Configuración del Tema"
}

View File

@ -21,6 +21,8 @@
"setting": "設定",
"settingButtonReset": "リセット",
"settingButtonSubmit": "適用して再起動",
"settingConfirmPageUnload": "ページのクローズ確認",
"settingConfirmPageUnloadDesc": "未保存のデータの損失を防ぐ",
"settingCustomFont": "カスタムフォントの読み込み",
"settingCustomFontDesc": "有効にすると、Webフォントを自動的に読み込んで、英語、中国語、およびコードの表示効果を最適化します",
"settingCustomLogo": "カスタムロゴ",

View File

@ -21,6 +21,8 @@
"setting": "설정",
"settingButtonReset": "재설정",
"settingButtonSubmit": "적용 및 인터페이스 재시작",
"settingConfirmPageUnload": "페이지 닫기 확인",
"settingConfirmPageUnloadDesc": "저장되지 않은 데이터 손실 방지",
"settingCustomFont": "폰트 로드",
"settingCustomFontDesc": "이 기능을 사용하면 웹 폰트를 자동으로 로드하여 영문, 한글 및 코드 표시 효과를 최적화합니다",
"settingCustomLogo": "사용자 정의 로고",

View File

@ -21,6 +21,8 @@
"setting": "Настройки",
"settingButtonReset": "Сбросить",
"settingButtonSubmit": "Применить и перезапустить интерфейс",
"settingConfirmPageUnload": "Подтверждать закрытие страницы",
"settingConfirmPageUnloadDesc": "Помогает предотвратить потерю несохраненных данных",
"settingCustomFont": "Загружать спец. шрифт",
"settingCustomFontDesc": "Когда он включен, он автоматически загружает веб-шрифт для улучшения отображения текста на китайском, английском и кодовом языках.",
"settingCustomLogo": "Пользовательский логотип",

View File

@ -21,6 +21,8 @@
"setting": "设置",
"settingButtonReset": "重置",
"settingButtonSubmit": "应用并重启界面",
"settingConfirmPageUnload": "确认离开页面",
"settingConfirmPageUnloadDesc": "有助于防止丢失未保存的数据",
"settingCustomFont": "加载字体美化",
"settingCustomFontDesc": "开启后会自动加载 Webfont 美化字体,优化中英文和代码显示效果",
"settingCustomLogo": "自定义 Logo",

View File

@ -21,6 +21,8 @@
"setting": "設置",
"settingButtonReset": "重置",
"settingButtonSubmit": "應用並重啟界面",
"settingConfirmPageUnload": "確認離開頁面",
"settingConfirmPageUnloadDesc": "有助於防止遺失未保存的數據",
"settingCustomFont": "載入字型美化",
"settingCustomFontDesc": "開啟後會自動載入 Webfont 美化字型,優化中英文和程式碼顯示效果",
"settingCustomLogo": "自定義 Logo",

View File

@ -163,6 +163,13 @@ const SettingForm = memo(() => {
name: 'enableWebFont',
valuePropName: 'checked',
},
{
children: <Switch />,
desc: t('settingConfirmPageUnloadDesc'),
label: t('settingConfirmPageUnload'),
name: 'confirmPageUnload',
valuePropName: 'checked',
},
],
icon: Palette,
title: t('settingGroupTheme'),

View File

@ -19,6 +19,14 @@ const Footer = memo<DivProps>(({ className, ...props }) => {
console.time('🤯 [layout] inject - Footer');
const footer = gradioApp().querySelector('#footer');
if (footer) footerReference.current?.append(footer);
if (setting.confirmPageUnload) {
window.addEventListener('beforeunload', (event) => {
if (footer?.isConnected) {
event.preventDefault();
return (event.returnValue = '');
}
});
}
console.timeEnd('🤯 [layout] inject - Footer');
}, []);
return (

View File

@ -5,6 +5,7 @@ import { DEFAULT_LOCALE_OPTIONS, DEFAULT_VERSION } from '@/store/api';
import type { I18n } from '@/types';
export interface WebuiSetting {
confirmPageUnload: boolean;
enableExtraNetworkSidebar: boolean;
enableHighlight: boolean;
enableSidebar: boolean;
@ -33,6 +34,7 @@ export interface WebuiSetting {
export type WebuiSettingKeys = keyof WebuiSetting;
export const DEFAULT_SETTING: WebuiSetting = {
confirmPageUnload: false,
enableExtraNetworkSidebar: true,
enableHighlight: false,
enableSidebar: true,