import { createMemo, createSignal, Show } from 'solid-js'; import { sourceText } from 'source-region'; import type { CodePointSpan, SourceRegion, SourceText } from 'source-region'; import { parseDocument } from '../parser'; import type { ParseError } from '../parser'; import type { ConcreteSyntax } from '../syntax'; import { spanLabel } from './format'; import { PaneHeader, PaneSplitter } from './Pane'; import { SourceGrid } from './SourceGrid'; import type { SourceGridAnnotation } from './SourceGrid'; import { ErrorList, ExpressionList } from './SyntaxPane'; import type { HoverTarget } from './types'; type ParsedDocument = { source: SourceText; region: SourceRegion; values: ConcreteSyntax[]; errors: ParseError[]; }; const SAMPLE_INPUT = `(define square (_ x) (mul x x)) (add 1 2) (define pyth (_ x y) (+ (square x) (square y))) foo ) @@@ (bar 1) (nested (list 123 abc_9 name-with-dash))`; export function App() { const [input, setInput] = createSignal(SAMPLE_INPUT); const [hovered, setHovered] = createSignal(); const [leftWidth, setLeftWidth] = createSignal(420); const [middleWidth, setMiddleWidth] = createSignal(420); const parsed = createMemo(() => { const source = sourceText(input()); const region = source.fullRegion(); const result = parseDocument(region); return { source, region, values: result.values, errors: result.errors }; }); return (