import { Map as SDKMap, MapOptions } from '../Map'; import { ControlPosition, CustomLayerInterface, FillLayerSpecification, FilterSpecification, IControl, LayerSpecification, LineLayerSpecification, SourceSpecification, StyleOptions, StyleSetterOptions, StyleSpecification, StyleSwapOptions } from 'maplibre-gl'; import { MapStyleVariant, ReferenceMapStyle } from '@maptiler/client'; export interface ParentRect { lineLayout: LineLayerSpecification["layout"]; linePaint: LineLayerSpecification["paint"]; fillPaint: FillLayerSpecification["paint"]; } export interface MinimapOptionsInput { /** * Style of the map. Can be: * - a full style URL (possibly with API key) * - a shorthand with only the MapTIler style name (eg. `"streets-v2"`) * - a longer form with the prefix `"maptiler://"` (eg. `"maptiler://streets-v2"`) */ style?: ReferenceMapStyle | MapStyleVariant | StyleSpecification | string; /** * Set the zoom difference between the parent and the minimap * If the parent is zoomed to 10 and the minimap is zoomed to 8, the zoomAdjust should be 2 * Default: -4 */ zoomAdjust?: number; /** Set a zoom of the minimap and don't allow any future changes */ lockZoom?: number; /** Adjust the pitch only if the user requests */ pitchAdjust?: boolean; /** Set CSS properties of the container using object key-values */ containerStyle?: Record; /** Set the position of the minimap at either "top-left", "top-right", "bottom-left", or "bottom-right" */ position?: ControlPosition; /** Set the parentRect fill and/or line options */ parentRect?: ParentRect; } export interface MinimapOptions extends Omit { zoomAdjust: number; pitchAdjust: boolean; containerStyle: Record; parentRect?: ParentRect; } export default class Minimap implements IControl { #private; map: SDKMap; constructor(options: MinimapOptionsInput, mapOptions: MapOptions); setStyle(style: null | ReferenceMapStyle | MapStyleVariant | StyleSpecification | string, options?: StyleSwapOptions & StyleOptions): void; addLayer(layer: (LayerSpecification & { source?: string | SourceSpecification; }) | CustomLayerInterface, beforeId?: string): SDKMap; moveLayer(id: string, beforeId?: string): SDKMap; removeLayer(id: string): this; setLayerZoomRange(layerId: string, minzoom: number, maxzoom: number): this; setFilter(layerId: string, filter?: FilterSpecification | null, options?: StyleSetterOptions): this; setPaintProperty(layerId: string, name: string, value: any, options?: StyleSetterOptions): this; setLayoutProperty(layerId: string, name: string, value: any, options?: StyleSetterOptions): this; setGlyphs(glyphsUrl: string | null, options?: StyleSetterOptions): this; onAdd(parentMap: SDKMap): HTMLElement; onRemove(): void; }