diff --git a/src/components/remark42-embed.svelte b/src/components/remark42-embed.svelte index 8fda99b..07f3a73 100644 --- a/src/components/remark42-embed.svelte +++ b/src/components/remark42-embed.svelte @@ -5,6 +5,16 @@ let pagePath = `/posts/${slug}/`; + function getTheme() { + return localStorage.getItem("color-theme") === "dark" ? "dark" : "light"; + } + + function syncRemark42Theme() { + if (window.REMARK42?.changeTheme) { + window.REMARK42.changeTheme(getTheme()); + } + } + onMount(() => { const scriptId = "remark42-script"; @@ -13,28 +23,46 @@ site_id: "cloverta-blog", components: ["embed"], show_rss_subscription: false, - theme: localStorage.getItem("color-theme") ?? "light", + theme: getTheme(), url: pagePath, page_id: pagePath, }; - if (document.getElementById(scriptId)) return; + if (!document.getElementById(scriptId)) { + const script = document.createElement("script"); + script.id = scriptId; + script.async = true; + script.innerHTML = ` + !function(e,n){ + for(var o=0;o { + syncRemark42Theme(); + }); + + observer.observe(document.documentElement, { + attributes: true, + attributeFilter: ["class"], + }); + + window.addEventListener("storage", syncRemark42Theme); + + return () => { + observer.disconnect(); + window.removeEventListener("storage", syncRemark42Theme); + }; });