diff --git a/public/app.js b/public/app.js index 1df069d..a5c85e1 100644 --- a/public/app.js +++ b/public/app.js @@ -1170,13 +1170,16 @@ function togglePreview() { const contentWithTags = makeTagsClickable(htmlContent); notePreviewContent.innerHTML = contentWithTags; + // Применяем текущую тему к предпросмотру + applyThemeToPreview(); + // Инициализируем lazy loading для изображений в превью setTimeout(() => { initLazyLoading(); }, 0); } else { notePreviewContent.innerHTML = - '
Нет содержимого для предпросмотра
'; + 'Нет содержимого для предпросмотра
'; } // Меняем иконку кнопки @@ -1194,6 +1197,98 @@ function togglePreview() { } } +// Функция применения темы к предпросмотру +function applyThemeToPreview() { + if (!notePreviewContainer || notePreviewContainer.style.display === "none") { + return; + } + + const currentTheme = document.documentElement.getAttribute("data-theme"); + + // Применяем тему к контейнеру предпросмотра + if (currentTheme === "dark") { + notePreviewContainer.setAttribute("data-theme", "dark"); + } else { + notePreviewContainer.removeAttribute("data-theme"); + } + + // Обновляем стили для элементов внутри предпросмотра + const previewElements = notePreviewContent.querySelectorAll("*"); + previewElements.forEach((element) => { + // Применяем тему к элементам кода + if (element.tagName === "CODE" || element.tagName === "PRE") { + if (currentTheme === "dark") { + element.style.backgroundColor = "var(--bg-quaternary)"; + element.style.color = "#e6e6e6"; + element.style.border = "1px solid var(--border-primary)"; + } else { + element.style.backgroundColor = "var(--bg-quaternary)"; + element.style.color = "var(--text-primary)"; + element.style.border = "1px solid var(--border-primary)"; + } + } + + // Применяем тему к цитатам + if (element.tagName === "BLOCKQUOTE") { + if (currentTheme === "dark") { + element.style.backgroundColor = "var(--bg-tertiary)"; + element.style.borderLeftColor = "var(--accent-color, #4a9eff)"; + element.style.color = "var(--text-secondary)"; + } else { + element.style.backgroundColor = "var(--bg-tertiary)"; + element.style.borderLeftColor = "var(--accent-color, #007bff)"; + element.style.color = "var(--text-secondary)"; + } + } + }); +} + +// Функция применения темы к предпросмотру в режиме редактирования +function applyThemeToEditPreview(editPreviewContainer, editPreviewContent) { + if (!editPreviewContainer || editPreviewContainer.style.display === "none") { + return; + } + + const currentTheme = document.documentElement.getAttribute("data-theme"); + + // Применяем тему к контейнеру предпросмотра редактирования + if (currentTheme === "dark") { + editPreviewContainer.setAttribute("data-theme", "dark"); + } else { + editPreviewContainer.removeAttribute("data-theme"); + } + + // Обновляем стили для элементов внутри предпросмотра редактирования + const previewElements = editPreviewContent.querySelectorAll("*"); + previewElements.forEach((element) => { + // Применяем тему к элементам кода + if (element.tagName === "CODE" || element.tagName === "PRE") { + if (currentTheme === "dark") { + element.style.backgroundColor = "var(--bg-quaternary)"; + element.style.color = "#e6e6e6"; + element.style.border = "1px solid var(--border-primary)"; + } else { + element.style.backgroundColor = "var(--bg-quaternary)"; + element.style.color = "var(--text-primary)"; + element.style.border = "1px solid var(--border-primary)"; + } + } + + // Применяем тему к цитатам + if (element.tagName === "BLOCKQUOTE") { + if (currentTheme === "dark") { + element.style.backgroundColor = "var(--bg-tertiary)"; + element.style.borderLeftColor = "var(--accent-color, #4a9eff)"; + element.style.color = "var(--text-secondary)"; + } else { + element.style.backgroundColor = "var(--bg-tertiary)"; + element.style.borderLeftColor = "var(--accent-color, #007bff)"; + element.style.color = "var(--text-secondary)"; + } + } + }); +} + // Обработчик выбора файлов imageInput.addEventListener("change", function (event) { const files = Array.from(event.target.files); @@ -2566,13 +2661,19 @@ function addNoteEventListeners() { const contentWithTags = makeTagsClickable(htmlContent); editPreviewContent.innerHTML = contentWithTags; + // Применяем текущую тему к предпросмотру редактирования + applyThemeToEditPreview( + editPreviewContainer, + editPreviewContent + ); + // Инициализируем lazy loading для изображений в превью setTimeout(() => { initLazyLoading(); }, 0); } else { editPreviewContent.innerHTML = - 'Нет содержимого для предпросмотра
'; + 'Нет содержимого для предпросмотра
'; } // Меняем иконку кнопки @@ -4068,6 +4169,11 @@ function applyTheme(theme) { ); } } + + // Применяем тему к предпросмотру, если он открыт + if (isPreviewMode) { + applyThemeToPreview(); + } } // Инициализируем переключатель темы при загрузке страницы diff --git a/public/profile.html b/public/profile.html index 1b3e81e..672d57d 100644 --- a/public/profile.html +++ b/public/profile.html @@ -189,6 +189,61 @@ + ++ Удаление аккаунта - это необратимое действие. Все ваши заметки, + изображения и данные будут удалены навсегда. +
+ + + + + +