import Combine from "../Base/Combine" import Attribution from "./Attribution" import Img from "../Base/Img" import ImageProvider from "../../Logic/ImageProviders/ImageProvider" import BaseUIElement from "../BaseUIElement" import { Mapillary } from "../../Logic/ImageProviders/Mapillary" import { UIEventSource } from "../../Logic/UIEventSource" export class AttributedImage extends Combine { constructor(imageInfo: { url: string; provider?: ImageProvider; date?: Date }) { let img: BaseUIElement img = new Img(imageInfo.url, false, { fallbackImage: imageInfo.provider === Mapillary.singleton ? "./assets/svg/blocked.svg" : undefined, }) let attr: BaseUIElement = undefined if (imageInfo.provider !== undefined) { attr = new Attribution( UIEventSource.FromPromise(imageInfo.provider?.DownloadAttribution(imageInfo.url)), imageInfo.provider?.SourceIcon(), imageInfo.date ) } super([img, attr]) this.SetClass("block relative h-full") } }