feat: publish HoloLake model-native living system source
This commit is contained in:
parent
6ad10edde1
commit
c395dd3a99
2467 changed files with 615073 additions and 0 deletions
|
|
@ -0,0 +1,33 @@
|
|||
import { useSyncExternalStore } from 'react'
|
||||
import {
|
||||
DEFAULT_THEME_MODE,
|
||||
normalizeResolvedThemeMode,
|
||||
type ResolvedThemeMode,
|
||||
} from '../lib/themeMode'
|
||||
|
||||
function readDocumentThemeMode(): ResolvedThemeMode {
|
||||
if (typeof document === 'undefined') return DEFAULT_THEME_MODE
|
||||
return normalizeResolvedThemeMode(document.documentElement.getAttribute('data-theme')) ?? DEFAULT_THEME_MODE
|
||||
}
|
||||
|
||||
function subscribeDocumentThemeMode(onChange: () => void): () => void {
|
||||
if (typeof document === 'undefined' || typeof MutationObserver === 'undefined') {
|
||||
return () => {}
|
||||
}
|
||||
|
||||
const observer = new MutationObserver(onChange)
|
||||
observer.observe(document.documentElement, {
|
||||
attributeFilter: ['class', 'data-theme'],
|
||||
attributes: true,
|
||||
})
|
||||
|
||||
return () => observer.disconnect()
|
||||
}
|
||||
|
||||
export function useDocumentThemeMode(): ResolvedThemeMode {
|
||||
return useSyncExternalStore(
|
||||
subscribeDocumentThemeMode,
|
||||
readDocumentThemeMode,
|
||||
() => DEFAULT_THEME_MODE,
|
||||
)
|
||||
}
|
||||
Loading…
Reference in a new issue