Skip to content

Commit ed39883

Browse files
author
Brendan Dahl
committed
For mozcentral use Firefox color theme instead of system theme.
See: https://bugzilla.mozilla.org/show_bug.cgi?id=1701691
1 parent d10da90 commit ed39883

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed

external/builder/builder.js

+6
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,12 @@ function preprocessCSS(mode, source, destination) {
269269
content = expandImports(content, source);
270270
if (mode === "mozcentral") {
271271
content = removePrefixed(content, hasPrefixedMozcentral);
272+
// In the mozcentral version the color theme should be based on the Firefox
273+
// theme instead of the system theme.
274+
content = content.replace(
275+
"prefers-color-scheme",
276+
"-moz-toolbar-prefers-color-scheme"
277+
);
272278
}
273279
fs.writeFileSync(destination, content);
274280
}

web/app.js

+10-7
Original file line numberDiff line numberDiff line change
@@ -424,20 +424,23 @@ const PDFViewerApplication = {
424424
try {
425425
const styleSheet = document.styleSheets[0];
426426
const cssRules = styleSheet?.cssRules || [];
427+
let mediaMatcher = "prefers-color-scheme";
428+
if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) {
429+
mediaMatcher = "-moz-toolbar-prefers-color-scheme";
430+
}
431+
const mediaRule = `(${mediaMatcher}: dark)`;
432+
const mediaRegex = new RegExp(
433+
`^@media \\(${mediaMatcher}: dark\\) {\\n\\s*([\\w\\s-.,:;/\\\\{}()]+)\\n}$`
434+
);
427435
for (let i = 0, ii = cssRules.length; i < ii; i++) {
428436
const rule = cssRules[i];
429-
if (
430-
rule instanceof CSSMediaRule &&
431-
rule.media?.[0] === "(prefers-color-scheme: dark)"
432-
) {
437+
if (rule instanceof CSSMediaRule && rule.media?.[0] === mediaRule) {
433438
if (cssTheme === ViewerCssTheme.LIGHT) {
434439
styleSheet.deleteRule(i);
435440
return;
436441
}
437442
// cssTheme === ViewerCssTheme.DARK
438-
const darkRules = /^@media \(prefers-color-scheme: dark\) {\n\s*([\w\s-.,:;/\\{}()]+)\n}$/.exec(
439-
rule.cssText
440-
);
443+
const darkRules = mediaRegex.exec(rule.cssText);
441444
if (darkRules?.[1]) {
442445
styleSheet.deleteRule(i);
443446
styleSheet.insertRule(darkRules[1], i);

0 commit comments

Comments
 (0)