diff --git a/app/appearance/themes/midnight/theme.css b/app/appearance/themes/midnight/theme.css index d9e2ad95f..139183e30 100644 --- a/app/appearance/themes/midnight/theme.css +++ b/app/appearance/themes/midnight/theme.css @@ -153,11 +153,6 @@ } /* PDF */ -.pdfViewer .page canvas, -.thumbnailImage { - filter: grayscale(0%) invert(100%) contrast(100%) brightness(100%) hue-rotate(180deg); -} - .textLayer, .pdf__resize { mix-blend-mode: screen; diff --git a/app/src/asset/index.ts b/app/src/asset/index.ts index c0d2b82c2..e77572936 100644 --- a/app/src/asset/index.ts +++ b/app/src/asset/index.ts @@ -167,6 +167,15 @@ export class Asset extends Model {
+ + +
-
-
`; + const localPDF = JSON.parse(localStorage.getItem(Constants.LOCAL_PDFTHEME) || "{}"); + let pdfTheme + if (window.siyuan.config.appearance.mode === 0) { + pdfTheme = localPDF.light || "light" + } else { + pdfTheme = localPDF.dark || "dark" + } + const darkElement = this.element.querySelector("#pdfDark") + const lightElement = this.element.querySelector("#pdfLight") + if (pdfTheme === "dark") { + this.element.firstElementChild.classList.add("pdf__outer--dark"); + lightElement.classList.remove("toggled") + darkElement.classList.add("toggled") + } else { + lightElement.classList.add("toggled") + darkElement.classList.remove("toggled") + } + lightElement.addEventListener("click", () => { + if (window.siyuan.config.appearance.mode === 0) { + localPDF.light = "light" + } else { + localPDF.dark = "light" + } + this.element.firstElementChild.classList.remove("pdf__outer--dark"); + localStorage.setItem(Constants.LOCAL_PDFTHEME, JSON.stringify(localPDF)); + lightElement.classList.add("toggled") + darkElement.classList.remove("toggled") + }) + darkElement.addEventListener("click", () => { + if (window.siyuan.config.appearance.mode === 0) { + localPDF.light = "dark" + } else { + localPDF.dark = "dark" + } + this.element.firstElementChild.classList.add("pdf__outer--dark"); + localStorage.setItem(Constants.LOCAL_PDFTHEME, JSON.stringify(localPDF)); + lightElement.classList.remove("toggled") + darkElement.classList.add("toggled") + }) // 初始化完成后需等待页签是否显示设置完成,才可以判断 pdf 是否能进行渲染 setTimeout(() => { if (this.element.clientWidth === 0) { diff --git a/app/src/assets/scss/pdf/_pdf.scss b/app/src/assets/scss/pdf/_pdf.scss index 1a6e07a8a..94635ecb3 100644 --- a/app/src/assets/scss/pdf/_pdf.scss +++ b/app/src/assets/scss/pdf/_pdf.scss @@ -75,6 +75,10 @@ } } +.pdf__outer--dark .pdfViewer .page canvas, +.pdf__outer--dark .thumbnailImage { + filter: grayscale(0%) invert(100%) contrast(100%) brightness(100%) hue-rotate(180deg); +} .annotationLayer section:not(.linkAnnotation) { display: none; } @@ -303,7 +307,7 @@ #secondaryToolbarButtonContainer { max-width: 220px; - max-height: 400px; + max-height: 60vh; } #secondaryToolbarButtonContainer.hiddenScrollModeButtons > .scrollModeButtons, diff --git a/app/src/block/popover.ts b/app/src/block/popover.ts index 2128d71e8..dec31f493 100644 --- a/app/src/block/popover.ts +++ b/app/src/block/popover.ts @@ -9,6 +9,9 @@ export const initBlockPopover = () => { let timeoutHide: number; // 编辑器内容块引用/backlinks/tag/bookmark/套娃中使用 document.addEventListener("mouseover", (event: MouseEvent & { target: HTMLElement }) => { + if (!window.siyuan.config) { + return; + } const aElement = hasClosestByAttribute(event.target, "data-type", "a", true) || hasClosestByAttribute(event.target, "data-type", "tab-header") || hasClosestByClassName(event.target, "emojis__item") || @@ -35,7 +38,6 @@ export const initBlockPopover = () => { } else if (!aElement) { hideTooltip(); } - if (window.siyuan.config.editor.floatWindowMode === 1) { clearTimeout(timeoutHide); timeoutHide = window.setTimeout(() => { diff --git a/app/src/constants.ts b/app/src/constants.ts index 62d106e00..87bf17f0e 100644 --- a/app/src/constants.ts +++ b/app/src/constants.ts @@ -69,6 +69,7 @@ export abstract class Constants { public static readonly LOCAL_EXPORTPDF = "local-exportpdf"; public static readonly LOCAL_EXPORTWORD = "local-exportword"; public static readonly LOCAL_BAZAAR = "local-bazaar"; + public static readonly LOCAL_PDFTHEME = "local-pdftheme"; // timeout public static readonly TIMEOUT_DBLCLICK = 190; diff --git a/app/src/util/assets.ts b/app/src/util/assets.ts index be15119ff..c1e8482ae 100644 --- a/app/src/util/assets.ts +++ b/app/src/util/assets.ts @@ -53,6 +53,26 @@ export const loadAssets = (data: IAppearance) => { getAllModels().graph.forEach(item => { item.searchGraph(false); }); + const localPDF = JSON.parse(localStorage.getItem(Constants.LOCAL_PDFTHEME) || "{}"); + let pdfTheme: string + if (window.siyuan.config.appearance.mode === 0) { + pdfTheme = localPDF.light || "light" + } else { + pdfTheme = localPDF.dark || "dark" + } + document.querySelectorAll(".pdf__outer").forEach(item => { + const darkElement = item.querySelector("#pdfDark") + const lightElement = item.querySelector("#pdfLight") + if (pdfTheme === "dark") { + item.classList.add("pdf__outer--dark"); + lightElement.classList.remove("toggled") + darkElement.classList.add("toggled") + } else { + item.classList.remove("pdf__outer--dark"); + lightElement.classList.add("toggled") + darkElement.classList.remove("toggled") + } + }) /// #endif setCodeTheme();