All files / web/src/components/toys/number-line/constants/demos demoOverlayRegistry.ts

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

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 461x 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  
/**
 * Registry mapping constant IDs to their canvas overlay render functions.
 *
 * All demo overlays share the same signature:
 *   (ctx, state, cssWidth, cssHeight, isDark, revealProgress, opacity) => void
 *
 * Extracted from NumberLine.tsx to collapse 9 identical if-blocks into a lookup.
 */
 
import type { NumberLineState } from '../../types'
import { renderPiOverlay } from './piDemo'
import { renderTauOverlay } from './tauDemo'
import { renderEOverlay } from './eDemo'
import { renderGammaOverlay } from './gammaDemo'
import { renderSqrt2Overlay } from './sqrt2Demo'
import { renderSqrt3Overlay } from './sqrt3Demo'
import { renderLn2Overlay } from './ln2Demo'
import { renderRamanujanOverlay } from './ramanujanDemo'
import { renderFeigenbaumOverlay } from './feigenbaumDemo'
 
export type DemoOverlayRenderer = (
  ctx: CanvasRenderingContext2D,
  state: NumberLineState,
  cssWidth: number,
  cssHeight: number,
  isDark: boolean,
  revealProgress: number,
  opacity: number
) => void
 
/**
 * Map from constant ID to its overlay render function.
 * Golden ratio (phi) is handled separately due to special centering/image logic.
 */
export const DEMO_OVERLAY_RENDERERS: Record<string, DemoOverlayRenderer> = {
  pi: renderPiOverlay,
  tau: renderTauOverlay,
  e: renderEOverlay,
  gamma: renderGammaOverlay,
  sqrt2: renderSqrt2Overlay,
  sqrt3: renderSqrt3Overlay,
  ln2: renderLn2Overlay,
  ramanujan: renderRamanujanOverlay,
  feigenbaum: renderFeigenbaumOverlay,
}