import {InputElement} from "./InputElement"; import {UIEventSource} from "../../Logic/UIEventSource"; import BaseUIElement from "../BaseUIElement"; import {VariableUiElement} from "../Base/VariableUIElement"; export default class VariableInputElement extends InputElement { public readonly IsSelected: UIEventSource; private readonly value: UIEventSource; private readonly element: BaseUIElement private readonly upstream: UIEventSource>; constructor(upstream: UIEventSource>) { super() this.upstream = upstream; this.value = upstream.bind(v => v.GetValue()) this.element = new VariableUiElement(upstream) this.IsSelected = upstream.bind(v => v.IsSelected) } GetValue(): UIEventSource { return this.value; } IsValid(t: T): boolean { return this.upstream.data.IsValid(t); } protected InnerConstructElement(): HTMLElement { return this.element.ConstructElement(); } }