2021-06-23 02:15:28 +02:00
|
|
|
import BaseUIElement from "../BaseUIElement";
|
|
|
|
import Loc from "../../Models/Loc";
|
|
|
|
import BaseLayer from "../../Models/BaseLayer";
|
2021-09-21 02:10:42 +02:00
|
|
|
import {BBox} from "../../Logic/GeoOperations";
|
|
|
|
import {UIEventSource} from "../../Logic/UIEventSource";
|
2021-09-03 13:48:04 +02:00
|
|
|
|
2021-09-21 02:10:42 +02:00
|
|
|
export interface MinimapOptions {
|
|
|
|
background?: UIEventSource<BaseLayer>,
|
|
|
|
location?: UIEventSource<Loc>,
|
|
|
|
bounds?: UIEventSource<BBox>,
|
|
|
|
allowMoving?: boolean,
|
|
|
|
leafletOptions?: any,
|
|
|
|
attribution?: BaseUIElement | boolean,
|
|
|
|
onFullyLoaded?: (leaflet: L.Map) => void,
|
|
|
|
leafletMap?: UIEventSource<any>,
|
|
|
|
lastClickLocation?: UIEventSource<{ lat: number, lon: number }>
|
|
|
|
}
|
|
|
|
|
2021-09-22 05:02:09 +02:00
|
|
|
export interface MinimapObj {
|
|
|
|
readonly leafletMap: UIEventSource<any>,
|
|
|
|
installBounds(factor: number | BBox, showRange?: boolean) : void
|
|
|
|
}
|
|
|
|
|
2021-09-21 02:10:42 +02:00
|
|
|
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
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Construct a minimap
|
|
|
|
*/
|
2021-09-27 15:38:12 +02:00
|
|
|
public static createMiniMap: (options: MinimapOptions) => (BaseUIElement & MinimapObj) = (_) => {
|
|
|
|
throw "CreateMinimap hasn't been initialized yet. Please call MinimapImplementation.initialize()"
|
|
|
|
}
|
2021-09-03 13:48:04 +02:00
|
|
|
|
2021-06-23 02:15:28 +02:00
|
|
|
}
|