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 67 | 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 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'
|