UNPKG

vuepress-theme-aurora

Version:

A vuepress-based animation blog theme, simple, beautiful, multi-color, multiple custom functions, providing article poster sharing, talk, photo album, comment and other features 一个基于vuepress的动漫类博客主题,简洁,漂亮,多色彩,多种自定义功能,提供文章海报分享,说说,相册,评论等特色功�?

28 lines (27 loc) 1.22 kB
import { onMounted, onUnmounted, ref, watch } from 'vue'; export const useDarkMode = () => { const isDarkMode = ref(false); const updateDarkModeClass = (value = isDarkMode.value) => { // set `class="dark"` on `<html>` element const htmlEl = window === null || window === void 0 ? void 0 : window.document.querySelector('html'); htmlEl === null || htmlEl === void 0 ? void 0 : htmlEl.classList.toggle('dark', value); }; const mediaQuery = ref(null); const onMediaQueryChange = (event) => { isDarkMode.value = event.matches; }; onMounted(() => { // get `prefers-color-scheme` media query and set the initial mode mediaQuery.value = window.matchMedia('(prefers-color-scheme: dark)'); isDarkMode.value = mediaQuery.value.matches; // watch changes mediaQuery.value.addEventListener('change', onMediaQueryChange); watch(isDarkMode, updateDarkModeClass, { immediate: true }); }); onUnmounted(() => { var _a; (_a = mediaQuery.value) === null || _a === void 0 ? void 0 : _a.removeEventListener('change', onMediaQueryChange); updateDarkModeClass(false); }); return isDarkMode; };