From d12d58b15a3ce1d4f9bd2658e162a147b8304866 Mon Sep 17 00:00:00 2001 From: landaiqing Date: Sun, 16 Nov 2025 15:22:49 +0800 Subject: [PATCH] :bug: Fixed markdown preview issue --- .../editor/extensions/markdownPreview/panel.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/frontend/src/views/editor/extensions/markdownPreview/panel.ts b/frontend/src/views/editor/extensions/markdownPreview/panel.ts index 125b44b..18844fe 100644 --- a/frontend/src/views/editor/extensions/markdownPreview/panel.ts +++ b/frontend/src/views/editor/extensions/markdownPreview/panel.ts @@ -6,6 +6,10 @@ import MarkdownIt from 'markdown-it'; import * as runtime from "@wailsio/runtime"; import {previewPanelState} from "./state"; import {createMarkdownRenderer} from "./markdownRenderer"; +import {updateMermaidTheme} from "@/common/markdown-it/plugins/markdown-it-mermaid"; +import {useThemeStore} from "@/stores/themeStore"; +import {usePanelStore} from "@/stores/panelStore"; +import {watch} from "vue"; import {createDebounce} from "@/common/utils/debounce"; import {morphHTML} from "@/common/utils/domDiff"; @@ -18,6 +22,7 @@ export class MarkdownPreviewPanel { private readonly resizeHandle: HTMLDivElement; private readonly content: HTMLDivElement; private view: EditorView; + private themeUnwatch?: () => void; private lastRenderedContent: string = ""; private readonly debouncedUpdate: ReturnType; private isDestroyed: boolean = false; // 标记面板是否已销毁 @@ -31,6 +36,14 @@ export class MarkdownPreviewPanel { this.updateContentInternal(); }, { delay: 500 }); + // 监听主题变化 + const themeStore = useThemeStore(); + this.themeUnwatch = watch(() => themeStore.isDarkMode, (isDark) => { + const newTheme = isDark ? "dark" : "default"; + updateMermaidTheme(newTheme); + this.lastRenderedContent = ""; // 清空缓存,强制重新渲染 + }); + // 创建 DOM 结构 this.dom = document.createElement("div"); this.dom.className = "cm-markdown-preview-panel";