|
|
import { useEffect } from 'react'; |
|
|
import { useDebugUMAPStore } from '../store'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export function useVisualState() { |
|
|
const useCategoryColors = useDebugUMAPStore((state) => state.useCategoryColors); |
|
|
const baseGlyphSize = useDebugUMAPStore((state) => state.baseGlyphSize); |
|
|
const darkMode = useDebugUMAPStore((state) => state.darkMode); |
|
|
const showCentroids = useDebugUMAPStore((state) => state.showCentroids); |
|
|
const setUseCategoryColors = useDebugUMAPStore((state) => state.setUseCategoryColors); |
|
|
const setBaseGlyphSize = useDebugUMAPStore((state) => state.setBaseGlyphSize); |
|
|
const setDarkMode = useDebugUMAPStore((state) => state.setDarkMode); |
|
|
const setShowCentroids = useDebugUMAPStore((state) => state.setShowCentroids); |
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)'); |
|
|
|
|
|
const handleChange = (e) => { |
|
|
setDarkMode(e.matches); |
|
|
}; |
|
|
|
|
|
mediaQuery.addEventListener('change', handleChange); |
|
|
|
|
|
return () => { |
|
|
mediaQuery.removeEventListener('change', handleChange); |
|
|
}; |
|
|
}, []); |
|
|
|
|
|
return { |
|
|
useCategoryColors, |
|
|
setUseCategoryColors, |
|
|
baseGlyphSize, |
|
|
setBaseGlyphSize, |
|
|
darkMode, |
|
|
setDarkMode, |
|
|
showCentroids, |
|
|
setShowCentroids |
|
|
}; |
|
|
} |
|
|
|