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(): 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()" } }