All files / web/src/components/toys/euclid/render buildFinalStates.ts

0% Statements 0/22
0% Branches 0/1
0% Functions 0/1
0% Lines 0/22

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                                             
import { replayConstruction } from '../engine/replayConstruction'
import type { ReplayResult } from '../engine/replayConstruction'
import { PROP_REGISTRY } from '../propositions/registry'
import type { ConstructionState } from '../types'
import type { FactStore } from '../engine/factStore'

export interface FinalStateResult {
  state: ConstructionState
  factStore: FactStore
}

/**
 * Replay a proposition's construction steps to produce the final state
 * and fact store. Uses the generic replayConstruction engine which handles
 * all step types (compass, straightedge, intersection, extend, macro).
 */
export function buildFinalState(propId: number): FinalStateResult | null {
  const prop = PROP_REGISTRY[propId]
  if (!prop || prop.steps.length === 0) return null
  const result = replayConstruction(prop.givenElements, prop.steps, prop)
  return { state: result.state, factStore: result.factStore }
}