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 | 'use client' import type React from 'react' import { MarkedText } from '@/lib/character/MarkedText' import { stripEntityMarkers } from '@/lib/character/parseEntityMarkers' import { EUCLID_ENTITY_MARKERS } from '../euclidEntityMarkers' import type { EuclidEntityRef } from '../chat/parseGeometricEntities' interface ProofInstructionProps { text: string renderEntity?: (entity: EuclidEntityRef, displayText: string, index: number) => React.ReactNode onHighlight?: (entity: EuclidEntityRef | null) => void style?: React.CSSProperties } /** * Renders instruction text with optional entity markup highlighting. * * When `renderEntity` is provided, renders via MarkedText with EUCLID_ENTITY_MARKERS. * When absent, strips markers and renders plain text. */ export function ProofInstruction({ text, renderEntity, onHighlight, style, }: ProofInstructionProps) { if (!renderEntity) { return <span style={style}>{stripEntityMarkers(text, EUCLID_ENTITY_MARKERS)}</span> } return ( <span style={style}> <MarkedText text={text} markers={EUCLID_ENTITY_MARKERS} onHighlight={onHighlight ?? (() => {})} renderEntity={renderEntity} /> </span> ) } |