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
|
|
|
|
|
2022-09-12 20:14:03 +02:00
|
|
|
TakeScreenshot(format): Promise<string>
|
|
|
|
TakeScreenshot(format: "image"): Promise<string>
|
2022-10-27 01:50:41 +02:00
|
|
|
TakeScreenshot(format: "blob"): Promise<Blob>
|
2022-09-12 20:14:03 +02:00
|
|
|
TakeScreenshot(format?: "image" | "blob"): Promise<string | Blob>
|
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()"
|
|
|
|
}
|
2021-06-23 02:15:28 +02:00
|
|
|
}
|