From d98df9cb4fb14f54acb85c59fcff90800be73e01 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Thu, 29 Aug 2024 14:26:06 +0200 Subject: [PATCH] common: separate javascript include to set styles Expect future feature expansion, which should be cached between pages even if slightly slower for an initial visit (though optional, especially while unconfigured). --- common.inc.plp | 14 +------------- prefer.js | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 13 deletions(-) create mode 100644 prefer.js diff --git a/common.inc.plp b/common.inc.plp index ff84a9a..14ff204 100644 --- a/common.inc.plp +++ b/common.inc.plp @@ -178,19 +178,7 @@ sub Html { say ''; say for map { @{$_} } $meta->{raw} || (); say '' if $Dev; - say "" for join($/, - "docroot = document.documentElement;", - "if (docroot.className == '') {", - "new Map([", - "['s-mono','(monochrome)'],", - "['s-dark','(prefers-color-scheme: dark)'],", - "['s-circus','(prefers-contrast: more)'],", - "]).forEach((q,c) => {", - "if (m = window.matchMedia(q))", - "(m.onchange = e => docroot.classList.toggle(c, e.matches))(m)", - "})", - "}", - ); + say ''; say ''; say ''; say sprintf '', $file; diff --git a/prefer.js b/prefer.js new file mode 100644 index 0000000..2bf092b --- /dev/null +++ b/prefer.js @@ -0,0 +1,14 @@ +(function prefstyle() { + docroot = document.documentElement; + if (docroot.className) { + return; + } + new Map([ + ['s-mono', '(monochrome)'], + ['s-dark', '(prefers-color-scheme: dark)'], + ['s-circus', '(prefers-contrast: more)'], + ]).forEach((q,c) => { + if (m = window.matchMedia(q)) + (m.onchange = e => docroot.classList.toggle(c, e.matches))(m); + }); +})(); -- 2.30.2