import BaseUIElement from "../BaseUIElement" import Loc from "../../Models/Loc" import BaseLayer from "../../Models/BaseLayer" import { UIEventSource } from "../../Logic/UIEventSource" import { BBox } from "../../Logic/BBox" export interface MinimapOptions { background?: UIEventSource location?: UIEventSource bounds?: UIEventSource allowMoving?: boolean leafletOptions?: any attribution?: BaseUIElement | boolean onFullyLoaded?: (leaflet: L.Map) => void leafletMap?: UIEventSource lastClickLocation?: UIEventSource<{ lat: number; lon: number }> addLayerControl?: boolean | false } export interface MinimapObj { readonly leafletMap: UIEventSource readonly location: UIEventSource readonly bounds: UIEventSource installBounds(factor: number | BBox, showRange?: boolean): void TakeScreenshot(format): Promise TakeScreenshot(format: "image"): Promise TakeScreenshot(format: "blob"): Promise TakeScreenshot(format?: "image" | "blob"): Promise } export default class Minimap { /** * A stub implementation. The actual implementation is injected later on, but only in the browser. * importing leaflet crashes node-ts, which is pretty annoying considering the fact that a lot of scripts use it */ private constructor() {} /** * Construct a minimap */ public static createMiniMap: (options?: MinimapOptions) => BaseUIElement & MinimapObj = (_) => { throw "CreateMinimap hasn't been initialized yet. Please call MinimapImplementation.initialize()" } }