All files / web/src/arcade-games/know-your-world/features/interaction index.ts

100% Statements 66/66
100% Branches 0/0
100% Functions 0/0
100% Lines 66/66

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 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 671x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x  
/**
 * Interaction Feature Module
 *
 * This module handles user interaction state management for the Know Your World game:
 * - Desktop mouse interactions (hover, drag, click, pointer lock)
 * - Mobile touch interactions (tap, pan, pinch-to-zoom)
 * - Explicit state machine to replace scattered boolean flags
 *
 * ## Usage
 *
 * ```tsx
 * import { useInteractionStateMachine } from '../features/interaction'
 *
 * function MapRenderer() {
 *   const interaction = useInteractionStateMachine({
 *     initialMode: isTouchDevice ? 'mobile' : 'desktop'
 *   })
 *
 *   // Use derived state instead of boolean flags
 *   if (interaction.isPointerLocked) { ... }
 *   if (interaction.isDragging) { ... }
 *
 *   // Dispatch events from handlers
 *   const handleMouseDown = (e: MouseEvent) => {
 *     interaction.dispatch({
 *       type: 'MOUSE_DOWN',
 *       position: { x: e.clientX, y: e.clientY }
 *     })
 *   }
 * }
 * ```
 */
 
// ============================================================================
// State Machine Hook
// ============================================================================
 
export type {
  DesktopPhase,
  InteractionEvent,
  InteractionState,
  MobilePhase,
  Point,
  UseInteractionStateMachineOptions,
  UseInteractionStateMachineReturn,
} from './useInteractionStateMachine'
 
export { useInteractionStateMachine } from './useInteractionStateMachine'
 
// ============================================================================
// Pointer Lock Utilities
// ============================================================================
 
export type {
  PointerLockBounds,
  PointerLockMovementInput,
  PointerLockMovementResult,
} from './pointerLockMovement'
 
export {
  calculatePointerLockMovement,
  checkDragThreshold,
  DAMPEN_ZONE,
  ESCAPE_THRESHOLD,
  SQUISH_ZONE,
} from './pointerLockMovement'