forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			43 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
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(<any>("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"
 | 
						|
            )
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |