import type { Layer } from "../layer.js"; import type { Orihon, ControlPosition } from "../map.js"; import { type OrihonLocale, type LocaleInput } from "./locale.js"; export interface ControlOptions { position?: ControlPosition; prefix?: string; locale?: LocaleInput; className?: string; } export declare class Control { options: TOptions & { position: ControlPosition; }; map: Orihon | null; el: HTMLDivElement | null; locale: OrihonLocale; protected _unsub: Array<() => void>; constructor(options?: TOptions); addTo(map: Orihon): this; remove(): this; onAdd(map: Orihon): void; onRemove(): void; render(): void; getPosition(): ControlPosition; setPosition(position: ControlPosition): this; getContainer(): HTMLDivElement | null; } export interface ZoomControlOptions extends ControlOptions { zoomInTitle?: string; zoomOutTitle?: string; } export declare class ZoomControl extends Control { zoomInButton: HTMLButtonElement | null; zoomOutButton: HTMLButtonElement | null; onAdd(map: Orihon): void; onRemove(): void; render(): void; } export interface ScaleControlOptions extends ControlOptions { maxWidth?: number; units?: "metric" | "imperial" | "both"; } export declare class ScaleControl extends Control { #private; metricLine: HTMLDivElement | null; imperialLine: HTMLDivElement | null; constructor(options?: ScaleControlOptions); onAdd(map: Orihon): void; onRemove(): void; render(): void; } export interface GeolocationControlOptions extends ControlOptions, PositionOptions { zoom?: number; } export declare class GeolocationControl extends Control { #private; button: HTMLButtonElement | null; private _active; onAdd(map: Orihon): void; onRemove(): void; render(): void; } export interface AttributionOptions extends ControlOptions { prefix?: string; } export declare class AttributionControl extends Control { constructor(options?: AttributionOptions); onAdd(map: Orihon): void; render(): void; } export interface LayersControlOptions extends ControlOptions { collapsed?: boolean; } interface LayerEntry { layer: Layer; name: string; overlay: boolean; } export declare class LayersControl extends Control { #private; readonly entries: LayerEntry[]; readonly groupName: string; form: HTMLDivElement | null; toggleButton: HTMLButtonElement | null; expanded: boolean; readonly inputUnsub: Array<() => void>; constructor(baseLayers?: Record, overlays?: Record, options?: LayersControlOptions); onAdd(map: Orihon): void; onRemove(): void; addBaseLayer(layer: Layer, name: string): this; addOverlay(layer: Layer, name: string): this; removeLayer(layer: Layer): this; expand(): this; collapse(): this; render(): void; } export type CustomControlContent = string | number | Node | ((map: Orihon) => string | number | Node); export interface CustomControlOptions extends ControlOptions { ariaLabel?: string; onRemove?: (map: Orihon) => void; } export declare class CustomControl extends Control { #private; private content; private contentHost; constructor(content: CustomControlContent, options?: CustomControlOptions); onAdd(map: Orihon): void; onRemove(): void; setContent(content: CustomControlContent): this; getContent(): CustomControlContent; } export declare function zoomControl(options?: ZoomControlOptions): ZoomControl; export declare function scaleControl(options?: ScaleControlOptions): ScaleControl; export declare function geolocationControl(options?: GeolocationControlOptions): GeolocationControl; export declare function attributionControl(options?: AttributionOptions): AttributionControl; export declare function layersControl(baseLayers?: Record, overlays?: Record, options?: LayersControlOptions): LayersControl; export declare function customControl(content: CustomControlContent, options?: CustomControlOptions): CustomControl; export {}; //# sourceMappingURL=control.d.ts.map