import { type TopoFilterType } from "../../rendering/id-picking.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; /** Set the panel title (e.g. "Distance" or "Distance (mesh based)"). */ protected setHeader(text: string): 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; /** * The current topo filter the GPU id picker reads. `[TopoFilter.none]` means * "no filter" (all topos eligible). */ currentFilter: TopoFilterType[]; /** * Initialize a new filter drop down menu. */ constructor(display: DisplayLike); 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 };