forked from MapComplete/MapComplete
		
	
		
			
	
	
		
			29 lines
		
	
	
	
		
			802 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			29 lines
		
	
	
	
		
			802 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								import {UIEventSource} from "../UIEventSource";
							 | 
						||
| 
								 | 
							
								import {LicenseInfo} from "./Wikimedia";
							 | 
						||
| 
								 | 
							
								import BaseUIElement from "../../UI/BaseUIElement";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export default abstract class ImageAttributionSource {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    private _cache = new Map<string, UIEventSource<LicenseInfo>>()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    GetAttributionFor(url: string): UIEventSource<LicenseInfo> {
							 | 
						||
| 
								 | 
							
								        const cached = this._cache.get(url);
							 | 
						||
| 
								 | 
							
								        if (cached !== undefined) {
							 | 
						||
| 
								 | 
							
								            return cached;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        const src = this.DownloadAttribution(url)
							 | 
						||
| 
								 | 
							
								        this._cache.set(url, src)
							 | 
						||
| 
								 | 
							
								        return src;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    public abstract SourceIcon(backlinkSource?: string) : BaseUIElement;
							 | 
						||
| 
								 | 
							
								    protected abstract DownloadAttribution(url: string): UIEventSource<LicenseInfo>;
							 | 
						||
| 
								 | 
							
								    public PrepareUrl(value: string): string{
							 | 
						||
| 
								 | 
							
								        return value;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 |