fuc-new/doc/node_modules/@vuepress/helper/lib/client/composables/useDarkMode.js
hellcat 6adbc04d4b 1
2025-10-03 17:17:08 +08:00

24 lines
786 B
JavaScript

import { inject, readonly, ref } from 'vue';
import { getDarkMode } from '../utils/index.js';
export const darkModeSymbol = Symbol(__VUEPRESS_DEV__ ? 'darkMode' : '');
const darkmode = ref(false);
// Ensure darkmode is initialized only once in client-side
if (typeof document !== 'undefined') {
darkmode.value = getDarkMode();
const mutationObserver = new MutationObserver(() => {
darkmode.value = getDarkMode();
});
mutationObserver.observe(document.documentElement, {
attributeFilter: ['data-theme'],
attributes: true,
});
}
/**
* Get darkmode status
*
* 获取暗色模式状态
*
* @returns Readonly darkmode ref / 只读的暗色模式响应式引用
*/
export const useDarkMode = () => readonly(inject(darkModeSymbol, darkmode));