import { createEffect, createSignal, Signal } from "solid-js"; import { Parser, RichTextAST } from "./parser"; export interface Source { readonly in: Signal; readonly out: Signal; } export function createSource(inParser: TIn, outParser: TOut, initalValue: string): Source { const [inValue, setIn] = createSignal(initalValue); const [outValue, setOut] = createSignal(''); const [ast, setAst] = createSignal(); createEffect(() => { setAst(inParser.parse(inValue())); }); createEffect(() => { setAst(outParser.parse(outValue())); }); return { get in() { return [inValue, setIn] as Signal; }, get out() { return [outValue, setOut] as Signal; }, }; }