import {InputElement} from "./InputElement"; import {UIEventSource} from "../../Logic/UIEventSource"; import BaseUIElement from "../BaseUIElement"; import {Translation} from "../i18n/Translation"; import {SubstitutedTranslation} from "../SubstitutedTranslation"; import FeaturePipelineState from "../../Logic/State/FeaturePipelineState"; export default class InputElementWrapper extends InputElement { private readonly _inputElement: InputElement; private readonly _renderElement: BaseUIElement constructor(inputElement: InputElement, translation: Translation, key: string, tags: UIEventSource, state: FeaturePipelineState) { super() this._inputElement = inputElement; const mapping = new Map() mapping.set(key, inputElement) // Bit of a hack: the SubstitutedTranslation expects a special rendering, but those are formatted '{key()}' instead of '{key}', so we substitute it first translation = translation.OnEveryLanguage((txt) => txt.replace("{" + key + "}", "{" + key + "()}")) this._renderElement = new SubstitutedTranslation(translation, tags, state, mapping) } GetValue(): UIEventSource { return this._inputElement.GetValue(); } IsValid(t: T): boolean { return this._inputElement.IsValid(t); } protected InnerConstructElement(): HTMLElement { return this._renderElement.ConstructElement(); } }