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 {UIEventSource} from "../../Logic/UIEventSource";
|
2021-09-28 17:30:48 +02:00
|
|
|
import {BBox} from "../../Logic/BBox";
|
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>,
|
2021-11-21 02:44:35 +01:00
|
|
|
lastClickLocation?: UIEventSource<{ lat: number, lon: number }>,
|
|
|
|
addLayerControl?: boolean | false
|
2021-09-21 02:10:42 +02:00
|
|
|
}
|
|
|
|
|
2021-09-22 05:02:09 +02:00
|
|
|
export interface MinimapObj {
|
2021-11-07 16:34:51 +01:00
|
|
|
readonly leafletMap: UIEventSource<any>,
|
2022-01-19 20:34:04 +01:00
|
|
|
readonly location: UIEventSource<Loc>;
|
|
|
|
readonly bounds: UIEventSource<BBox>;
|
2021-11-07 16:34:51 +01:00
|
|
|
|
|
|
|
installBounds(factor: number | BBox, showRange?: boolean): void
|
|
|
|
|
2021-11-03 00:44:53 +01:00
|
|
|
TakeScreenshot(): Promise<any>;
|
2022-01-19 20:34:04 +01:00
|
|
|
|
2021-09-22 05:02:09 +02:00
|
|
|
}
|
|
|
|
|
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
|
|
|
|
*/
|
|
|
|
|
2022-01-26 21:40:38 +01:00
|
|
|
private constructor() {
|
|
|
|
}
|
|
|
|
|
2021-09-21 02:10:42 +02:00
|
|
|
/**
|
|
|
|
* Construct a minimap
|
|
|
|
*/
|
2022-01-21 01:57:16 +01:00
|
|
|
public static createMiniMap: (options?: MinimapOptions) => (BaseUIElement & MinimapObj) = (_) => {
|
2021-09-27 15:38:12 +02:00
|
|
|
throw "CreateMinimap hasn't been initialized yet. Please call MinimapImplementation.initialize()"
|
|
|
|
}
|
2022-01-18 18:52:42 +01:00
|
|
|
|
2021-09-03 13:48:04 +02:00
|
|
|
|
2021-06-23 02:15:28 +02:00
|
|
|
}
|