File size: 1,435 Bytes
6bda4a6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import { useEffect } from 'react';
import { useDebugUMAPStore } from '../store';

/**
 * Hook pour gérer l'état visuel de l'application avec Zustand
 */
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);

  // Écouter les changements de préférence système
  useEffect(() => {
    const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
    
    const handleChange = (e) => {
      setDarkMode(e.matches);
    };
    
    mediaQuery.addEventListener('change', handleChange);
    
    return () => {
      mediaQuery.removeEventListener('change', handleChange);
    };
  }, []); // Pas de dépendances pour éviter la boucle infinie

  return {
    useCategoryColors,
    setUseCategoryColors,
    baseGlyphSize,
    setBaseGlyphSize,
    darkMode,
    setDarkMode,
    showCentroids,
    setShowCentroids
  };
}