forked from MapComplete/MapComplete
		
	
		
			
	
	
		
			24 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			24 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | import {VariableUiElement} from "../Base/VariableUIElement"; | ||
|  | import {UIEventSource} from "../../Logic/UIEventSource"; | ||
|  | import Loc from "../../Models/Loc"; | ||
|  | import Translations from "../i18n/Translations"; | ||
|  | import {SubtleButton} from "../Base/SubtleButton"; | ||
|  | import Svg from "../../Svg"; | ||
|  | import Combine from "../Base/Combine"; | ||
|  | import Title from "../Base/Title"; | ||
|  | 
 | ||
|  | export class MapillaryLink extends VariableUiElement { | ||
|  |     constructor(state: { locationControl: UIEventSource<Loc> }, iconStyle?: string) { | ||
|  |         const t = Translations.t.general.attribution | ||
|  |         super(state.locationControl.map(location => { | ||
|  |             const mapillaryLink = `https://www.mapillary.com/app/?focus=map&lat=${location?.lat ?? 0}&lng=${location?.lon ?? 0}&z=${Math.max((location?.zoom ?? 2) - 1, 1)}` | ||
|  |             return new SubtleButton(Svg.mapillary_black_ui().SetStyle(iconStyle), | ||
|  |                 new Combine([ | ||
|  |                     new Title(t.openMapillary,3), | ||
|  |                     t.mapillaryHelp]), { | ||
|  |                     url: mapillaryLink, | ||
|  |                     newTab: true | ||
|  |                 }).SetClass("flex flex-col link-no-underline") | ||
|  |         })) | ||
|  |     } | ||
|  | } |