From c36e1d8fff70ab6a817e00aa053b996342554681 Mon Sep 17 00:00:00 2001
From: Alexander Sohn <39831045+Sohn123@users.noreply.github.com>
Date: Fri, 18 Nov 2022 14:46:04 +0000
Subject: [PATCH] fix: move theme class to root node to prevent white flash (#392)

---
 assets/js/anatole-theme-switcher.js |   28 +++++++++++++---------------
 1 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/assets/js/anatole-theme-switcher.js b/assets/js/anatole-theme-switcher.js
index cccb905..f3940f7 100644
--- a/assets/js/anatole-theme-switcher.js
+++ b/assets/js/anatole-theme-switcher.js
@@ -1,11 +1,11 @@
 const getStoredThemeStyle = () => localStorage.getItem('theme');
 
 const setThemeClass = (style) => {
-  const body = document.body;
-  const prevTheme = [...body.classList].find((c) => c.match(/theme--(light|dark)/));
+  const html = document.documentElement;
+  const prevTheme = [...html.classList].find((c) => c.match(/theme--(light|dark)/));
   if (!prevTheme) return;
-  body.classList.remove(prevTheme);
-  body.classList.add(`theme--${style}`);
+  html.classList.remove(prevTheme);
+  html.classList.add(`theme--${style}`);
 };
 
 const setThemeStyle = (style) => {
@@ -28,16 +28,6 @@
   }
 };
 
-const initTheme = () => {
-  const currThemeStyle = getStoredThemeStyle();
-  if (currThemeStyle) {
-    setThemeStyle(currThemeStyle);
-    return;
-  }
-  const userPrefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
-  if (!userPrefersDark) return;
-  setThemeStyle('dark');
-};
 
 document.addEventListener(
   'DOMContentLoaded',
@@ -50,4 +40,12 @@
 
 window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', switchTheme, false);
 
-document.addEventListener('DOMContentLoaded', () => initTheme());
+const currThemeStyle = getStoredThemeStyle();
+if (currThemeStyle) {
+  setThemeStyle(currThemeStyle);
+} else {
+  const userPrefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
+  if (userPrefersDark) {
+    setThemeStyle('dark');
+  }
+}
\ No newline at end of file

--
Gitblit v1.10.0