From 0f02f8b33641398217d794d3b18fc2eb0ef4ed25 Mon Sep 17 00:00:00 2001
From: weru <onewesh@gmail.com>
Date: Wed, 21 Oct 2020 19:45:40 +0000
Subject: [PATCH] clean up & refactor
---
assets/js/index.js | 41 +++++++++++++++++++++++++++++++++++++++--
1 files changed, 39 insertions(+), 2 deletions(-)
diff --git a/assets/js/index.js b/assets/js/index.js
index b2c1c66..7d0b823 100644
--- a/assets/js/index.js
+++ b/assets/js/index.js
@@ -207,13 +207,25 @@
}
})();
- const light = 'lit';
- const dark = 'dim';
+ const light = 'light';
+ const dark = 'dark';
const storageKey = 'colorMode';
const key = '--color-mode';
const data = 'data-mode';
const bank = window.localStorage;
+ function prefersColor(mode){
+ return `(prefers-color-scheme: ${mode})`;
+ }
+
+ function systemMode() {
+ if (window.matchMedia) {
+ const prefers = prefersColor(dark);
+ return window.matchMedia(prefers).matches ? dark : light;
+ }
+ return light;
+ }
+
function currentMode() {
let acceptableChars = light + dark;
acceptableChars = [...acceptableChars];
@@ -249,6 +261,24 @@
lazyLoadMedia('img');
})();
+ function pickModePicture(user, system, context) {
+ const pictures = elems('picture');
+ if(pictures) {
+ pictures.forEach(function(picture){
+ let source = picture.firstElementChild;
+ if(user == system) {
+ context ? source.media = prefersColor(dark) : false;
+ } else {
+ if(system == light) {
+ source.media = (user === dark) ? prefersColor(light) : prefersColor(dark) ;
+ } else {
+ source.media = (user === dark) ? prefersColor(dark) : prefersColor(light) ;
+ }
+ }
+ });
+ }
+ }
+
function setUserColorMode(mode = false) {
const isDarkMode = currentMode() == dark;
const storedMode = bank.getItem(storageKey);
@@ -263,6 +293,12 @@
changeMode(isDarkMode)
}
}
+ const sysMode = systemMode();
+ const userMode = doc.dataset.mode;
+ doc.dataset.systemmode = sysMode;
+ if(userMode) {
+ pickModePicture(userMode,sysMode,mode);
+ }
}
setUserColorMode();
@@ -275,6 +311,7 @@
setUserColorMode(true);
}
});
+
}
window.addEventListener('load', loadActions());
--
Gitblit v1.10.0