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