import ExtraLinkConfigJson from "./Json/ExtraLinkConfigJson" import { Translation } from "../../UI/i18n/Translation" import Translations from "../../UI/i18n/Translations" export default class ExtraLinkConfig { public readonly icon?: string public readonly text?: Translation public readonly href: string public readonly newTab?: false | boolean public readonly requirements?: Set< "iframe" | "no-iframe" | "welcome-message" | "no-welcome-message" > constructor(configJson: ExtraLinkConfigJson, context) { this.icon = configJson.icon this.text = Translations.T(configJson.text, "themes:" + context + ".text") this.href = configJson.href this.newTab = configJson.newTab this.requirements = new Set(configJson.requirements) for (let requirement of configJson.requirements) { if (this.requirements.has(("no-" + requirement))) { throw ( "Conflicting requirements found for " + context + ".extraLink: both '" + requirement + "' and 'no-" + requirement + "' found" ) } } if (this.icon === undefined && this.text === undefined) { throw ( "At " + context + ".extraLink: define at least an icon or a text to show. Both are undefined, this is not allowed" ) } } }