|
|
import { create } from 'zustand'; |
|
|
import { devtools, persist } from 'zustand/middleware'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export const useDebugUMAPStore = create( |
|
|
devtools( |
|
|
persist( |
|
|
(set, get) => ({ |
|
|
|
|
|
configs: [], |
|
|
currentConfigIndex: 0, |
|
|
loading: false, |
|
|
error: null, |
|
|
|
|
|
|
|
|
useCategoryColors: true, |
|
|
baseGlyphSize: 0.25, |
|
|
darkMode: false, |
|
|
showCentroids: true, |
|
|
|
|
|
|
|
|
currentFonts: [], |
|
|
mappingFunctions: { mapX: null, mapY: null }, |
|
|
glyphsLoaded: false, |
|
|
|
|
|
|
|
|
setConfigs: (configs) => set({ configs }), |
|
|
setCurrentConfigIndex: (index) => set({ currentConfigIndex: index }), |
|
|
setLoading: (loading) => set({ loading }), |
|
|
setError: (error) => set({ error }), |
|
|
|
|
|
|
|
|
setUseCategoryColors: (useCategoryColors) => set({ useCategoryColors }), |
|
|
setBaseGlyphSize: (baseGlyphSize) => set({ baseGlyphSize }), |
|
|
setDarkMode: (darkMode) => set({ darkMode }), |
|
|
setShowCentroids: (showCentroids) => set({ showCentroids }), |
|
|
|
|
|
|
|
|
setCurrentFonts: (fonts) => set({ currentFonts: fonts }), |
|
|
setMappingFunctions: (functions) => set({ mappingFunctions: functions }), |
|
|
setGlyphsLoaded: (loaded) => set({ glyphsLoaded: loaded }), |
|
|
|
|
|
|
|
|
resetToDefaults: () => set({ |
|
|
currentConfigIndex: 0, |
|
|
useCategoryColors: true, |
|
|
baseGlyphSize: 0.25, |
|
|
darkMode: false, |
|
|
showCentroids: true, |
|
|
currentFonts: [], |
|
|
mappingFunctions: { mapX: null, mapY: null }, |
|
|
glyphsLoaded: false, |
|
|
error: null |
|
|
}), |
|
|
|
|
|
|
|
|
saveToLocalStorage: () => { |
|
|
try { |
|
|
const state = get(); |
|
|
const persistData = { |
|
|
currentConfigIndex: state.currentConfigIndex, |
|
|
useCategoryColors: state.useCategoryColors, |
|
|
baseGlyphSize: state.baseGlyphSize, |
|
|
darkMode: state.darkMode, |
|
|
showCentroids: state.showCentroids, |
|
|
timestamp: Date.now() |
|
|
}; |
|
|
|
|
|
console.log('useDebugUMAPStore: Sauvegarde de la configuration:', persistData); |
|
|
localStorage.setItem('debug-umap-config', JSON.stringify(persistData)); |
|
|
console.log('useDebugUMAPStore: ✅ Configuration sauvegardée avec succès'); |
|
|
} catch (error) { |
|
|
console.error('useDebugUMAPStore: ❌ Erreur lors de la sauvegarde:', error); |
|
|
} |
|
|
}, |
|
|
|
|
|
loadFromLocalStorage: () => { |
|
|
try { |
|
|
console.log('useDebugUMAPStore: Recherche de la configuration dans localStorage...'); |
|
|
const saved = localStorage.getItem('debug-umap-config'); |
|
|
|
|
|
if (saved) { |
|
|
console.log('useDebugUMAPStore: Données trouvées:', saved); |
|
|
const persistData = JSON.parse(saved); |
|
|
console.log('useDebugUMAPStore: Configuration parsée:', persistData); |
|
|
|
|
|
|
|
|
const newState = { |
|
|
currentConfigIndex: persistData.currentConfigIndex || 0, |
|
|
useCategoryColors: persistData.useCategoryColors !== undefined ? persistData.useCategoryColors : true, |
|
|
baseGlyphSize: persistData.baseGlyphSize || 0.25, |
|
|
darkMode: persistData.darkMode !== undefined ? persistData.darkMode : false, |
|
|
showCentroids: persistData.showCentroids !== undefined ? persistData.showCentroids : true, |
|
|
}; |
|
|
|
|
|
console.log('useDebugUMAPStore: Application de la configuration:', newState); |
|
|
set(newState); |
|
|
|
|
|
return true; |
|
|
} else { |
|
|
console.log('useDebugUMAPStore: Aucune donnée trouvée dans localStorage'); |
|
|
} |
|
|
} catch (error) { |
|
|
console.error('useDebugUMAPStore: Erreur lors du chargement:', error); |
|
|
} |
|
|
return false; |
|
|
}, |
|
|
|
|
|
|
|
|
getCurrentConfig: () => { |
|
|
const { configs, currentConfigIndex } = get(); |
|
|
return configs[currentConfigIndex] || null; |
|
|
}, |
|
|
|
|
|
getTotalConfigs: () => { |
|
|
const { configs } = get(); |
|
|
return configs.length; |
|
|
} |
|
|
}), |
|
|
{ |
|
|
name: 'debug-umap-persist', |
|
|
|
|
|
partialize: (state) => ({ |
|
|
currentConfigIndex: state.currentConfigIndex, |
|
|
useCategoryColors: state.useCategoryColors, |
|
|
baseGlyphSize: state.baseGlyphSize, |
|
|
darkMode: state.darkMode, |
|
|
showCentroids: state.showCentroids, |
|
|
}), |
|
|
} |
|
|
), |
|
|
{ |
|
|
name: 'debug-umap-store', |
|
|
} |
|
|
) |
|
|
); |
|
|
|
|
|
|
|
|
|