|
@@ -1657,6 +1657,7 @@
|
|
|
updateNightModeButton(enabled);
|
|
updateNightModeButton(enabled);
|
|
|
localStorage.setItem(NIGHT_MODE_STORAGE_KEY, enabled ? '1' : '0');
|
|
localStorage.setItem(NIGHT_MODE_STORAGE_KEY, enabled ? '1' : '0');
|
|
|
syncPdfJsNightPreferences(enabled);
|
|
syncPdfJsNightPreferences(enabled);
|
|
|
|
|
+ applyPdfNightMode(enabled);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function syncPdfJsNightPreferences(enabled) {
|
|
function syncPdfJsNightPreferences(enabled) {
|
|
@@ -1680,6 +1681,55 @@
|
|
|
setNightMode(enabled);
|
|
setNightMode(enabled);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ function applyPdfNightMode(enabled) {
|
|
|
|
|
+ const app = window.PDFViewerApplication;
|
|
|
|
|
+ const options = window.PDFViewerApplicationOptions;
|
|
|
|
|
+ const pdfViewer = app?.pdfViewer;
|
|
|
|
|
+ const pdfThumbnailViewer = app?.pdfThumbnailViewer;
|
|
|
|
|
+ const renderingQueue = app?.pdfRenderingQueue;
|
|
|
|
|
+
|
|
|
|
|
+ if (!options || !pdfViewer?.pdfDocument) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const pageColors = enabled
|
|
|
|
|
+ ? { background: '#0b0b0b', foreground: '#f5f5f5' }
|
|
|
|
|
+ : null;
|
|
|
|
|
+
|
|
|
|
|
+ options.set('forcePageColors', enabled);
|
|
|
|
|
+ options.set('pageColorsBackground', '#0b0b0b');
|
|
|
|
|
+ options.set('pageColorsForeground', '#f5f5f5');
|
|
|
|
|
+
|
|
|
|
|
+ pdfViewer.pageColors = pageColors;
|
|
|
|
|
+ if (pdfViewer.viewer) {
|
|
|
|
|
+ if (pageColors?.background) {
|
|
|
|
|
+ pdfViewer.viewer.style.setProperty('--page-bg-color', pageColors.background);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ pdfViewer.viewer.style.removeProperty('--page-bg-color');
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ for (let i = 0; i < pdfViewer.pagesCount; i++) {
|
|
|
|
|
+ const pageView = pdfViewer.getPageView(i);
|
|
|
|
|
+ if (!pageView) continue;
|
|
|
|
|
+ pageView.pageColors = pageColors;
|
|
|
|
|
+ pageView.reset();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (pdfThumbnailViewer) {
|
|
|
|
|
+ pdfThumbnailViewer.pageColors = pageColors;
|
|
|
|
|
+ for (let i = 0; i < pdfViewer.pagesCount; i++) {
|
|
|
|
|
+ const thumbnail = pdfThumbnailViewer.getThumbnail(i);
|
|
|
|
|
+ if (!thumbnail) continue;
|
|
|
|
|
+ thumbnail.pageColors = pageColors;
|
|
|
|
|
+ thumbnail.reset();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ pdfViewer.update();
|
|
|
|
|
+ renderingQueue?.renderHighestPriority();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
function getFullscreenElement() {
|
|
function getFullscreenElement() {
|
|
|
return document.fullscreenElement ||
|
|
return document.fullscreenElement ||
|
|
|
document.webkitFullscreenElement ||
|
|
document.webkitFullscreenElement ||
|
|
@@ -1777,7 +1827,6 @@
|
|
|
nightModeButton.addEventListener('click', function () {
|
|
nightModeButton.addEventListener('click', function () {
|
|
|
const nextEnabled = !document.body.classList.contains('night-reading-mode');
|
|
const nextEnabled = !document.body.classList.contains('night-reading-mode');
|
|
|
setNightMode(nextEnabled);
|
|
setNightMode(nextEnabled);
|
|
|
- window.location.reload();
|
|
|
|
|
});
|
|
});
|
|
|
browserFullscreenButton.addEventListener('click', () => {
|
|
browserFullscreenButton.addEventListener('click', () => {
|
|
|
toggleBrowserFullscreen();
|
|
toggleBrowserFullscreen();
|