The React children to be wrapped by the provider.
The debug context provider with value for consumers.
export function DebugProvider({ children }: { children: React.ReactNode }) {
const [isDebugEnabled, setIsDebugEnabled] = useState(false);
// Load debug state from localStorage on initialization
useEffect(() => {
try {
const savedDebugState = localStorage.getItem(DEBUG_STORAGE_KEY);
if (savedDebugState !== null) {
setIsDebugEnabled(JSON.parse(savedDebugState));
}
} catch (error) {
console.error("Failed to load debug state from localStorage:", error);
}
}, []);
// Save debug state to localStorage whenever it changes
const setDebugEnabled = useCallback((enabled: boolean) => {
setIsDebugEnabled(enabled);
try {
localStorage.setItem(DEBUG_STORAGE_KEY, JSON.stringify(enabled));
} catch (error) {
console.error("Failed to save debug state to localStorage:", error);
}
}, []);
const toggleDebug = useCallback(() => {
setDebugEnabled(!isDebugEnabled);
}, [isDebugEnabled, setDebugEnabled]);
const value: DebugContextType = {
isDebugEnabled,
toggleDebug,
setDebugEnabled,
};
return (
<DebugContext.Provider value={value}>{children}</DebugContext.Provider>
);
}
Provides debug context to its children, managing debug state and persistence.