All files / web/src/contexts SpectatorModeContext.tsx

90.47% Statements 19/21
100% Branches 1/1
50% Functions 1/2
90.47% Lines 19/21

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 221x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x     1x 1x 31x 31x  
'use client'
 
import { createContext, useContext } from 'react'
 
/**
 * When true, the game is being rendered in read-only spectator mode.
 * Components should skip ALL interaction setup:
 * - No pointer lock requests
 * - No window/document-level keyboard listeners
 * - No mouse move handlers that dispatch state changes
 * - No sending moves or cursor updates
 */
const SpectatorModeContext = createContext(false)
 
export function SpectatorModeProvider({ children }: { children: React.ReactNode }) {
  return <SpectatorModeContext.Provider value={true}>{children}</SpectatorModeContext.Provider>
}
 
export function useIsSpectator(): boolean {
  return useContext(SpectatorModeContext)
}