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 const newTranslations = {} for (const lang in translation.translations) { newTranslations[lang] = translation.translations[lang].replace("{" + key + "}", "{" + key + "()}") } this._renderElement = new SubstitutedTranslation(new Translation(newTranslations), 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(); } }