import { Raycaster } from "../../rendering/raycast.js"; import type { DisplayLike } from "./tools.js"; interface CallbackEntry { callback: EventListener; type: string; } declare abstract class Panel { display: DisplayLike; html: HTMLElement; finished: boolean; callbacks: CallbackEntry[]; constructor(display: DisplayLike); private removeTable; protected resetTable(): void; protected abstract getHtmlElement(): HTMLElement; /** * Show or hide the panel */ show: (flag: boolean) => void; /** * Get status of the panel */ isVisible: () => boolean; /** * Sets the position of the panel (with the top left corner at the specified coordinates) */ relocate: (x: number | null, y: number | null) => void; /** * Register a callback for a specific event type */ registerCallback(eventType: string, callback: EventListener): void; dispose(): void; } interface DistanceResponseData { result?: Record[]; groups?: Record[]; refpoint1?: number[]; refpoint2?: number[]; [key: string]: unknown; } declare class DistancePanel extends Panel { constructor(display: DisplayLike); protected getHtmlElement(): HTMLElement; createTable(properties: DistanceResponseData): void; } interface PropertiesResponseData { result?: Record[]; groups?: Record[]; shape_type?: string; geom_type?: string; refpoint?: number[]; [key: string]: unknown; } declare class PropertiesPanel extends Panel { constructor(display: DisplayLike); protected getHtmlElement(): HTMLElement; private setSubHeader; createTable(properties: PropertiesResponseData): void; } declare class FilterByDropDownMenu { private display; private elements; private raycaster; /** * Initialize a new filter drop down menu, it needs the raycast to update interactively the filter mode */ constructor(display: DisplayLike); /** * Set the raycaster to update the filter mode */ setRaycaster(raycaster: Raycaster): void; private setValue; private toggleDropdown; private closeDropdown; private handleSelection; reset: () => void; private keybindSelect; private getOptionElements; /** * Show or hide the drop down menu */ show(flag: boolean): void; } export { FilterByDropDownMenu, DistancePanel, PropertiesPanel }; export type { DistanceResponseData, PropertiesResponseData };