import { useMemo, useCallback } from 'react'; import { calculatePositions } from '../utils/fontUtils'; /** * Hook spécialisé pour la gestion du positionnement des polices * Séparation claire de la logique de calcul des positions */ export const usePositioning = (fonts, width, height, dilationFactor) => { // Mémoriser le calcul des positions pour éviter les recalculs inutiles const positions = useMemo(() => { if (!fonts.length || width <= 0 || height <= 0) { return []; } console.log('usePositioning: Calculating positions for', fonts.length, 'fonts'); return calculatePositions(fonts, width, height, dilationFactor); }, [fonts, width, height, dilationFactor]); // Fonction pour recalculer les positions si nécessaire const recalculatePositions = useCallback(() => { if (!fonts.length || width <= 0 || height <= 0) { return []; } return calculatePositions(fonts, width, height, dilationFactor); }, [fonts, width, height, dilationFactor]); // Fonction pour obtenir la position d'une police spécifique const getFontPosition = useCallback((fontName) => { return positions.find(p => p.name === fontName); }, [positions]); return { positions, recalculatePositions, getFontPosition, hasPositions: positions.length > 0 }; };