import { createContext, useContext, ReactNode, useCallback, useRef } from 'react'; type TCodeBlockContext = { getNextIndex: (skip: boolean) => number; resetCounter: () => void; }; export const CodeBlockContext = createContext({} as TCodeBlockContext); export const useCodeBlockContext = () => useContext(CodeBlockContext); export function CodeBlockProvider({ children }: { children: ReactNode }) { const counterRef = useRef(0); const getNextIndex = useCallback((skip: boolean) => { if (skip) { return counterRef.current; } const nextIndex = counterRef.current; counterRef.current += 1; return nextIndex; }, []); const resetCounter = useCallback(() => { counterRef.current = 0; }, []); return ( {children} ); }