forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			30 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { VariableUiElement } from "../Base/VariableUIElement"
 | 
						|
import { Store } 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"
 | 
						|
 | 
						|
export class MapillaryLink extends VariableUiElement {
 | 
						|
    constructor(state: { readonly locationControl: Store<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([t.openMapillary.SetClass("font-bold"), t.mapillaryHelp]).SetClass(
 | 
						|
                        "flex flex-col link-no-underline"
 | 
						|
                    ),
 | 
						|
                    {
 | 
						|
                        url: mapillaryLink,
 | 
						|
                        newTab: true,
 | 
						|
                    }
 | 
						|
                )
 | 
						|
            })
 | 
						|
        )
 | 
						|
    }
 | 
						|
}
 |