forked from MapComplete/MapComplete
		
	
		
			
	
	
		
			31 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			31 lines
		
	
	
	
		
			1.2 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) | ||
|  |         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" | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  | } |