import { UnifiedSearchItem, NoaaLidarState } from '../core/types'; import { ColormapName, ColorRangeConfig } from 'maplibre-gl-lidar'; /** * Callbacks for panel interactions */ export interface PanelCallbacks { onSearchByExtent: () => void; onStartDrawing: () => void; onStopDrawing: () => void; onSearchByDrawn: () => void; onClearDrawn: () => void; onItemSelect: (item: UnifiedSearchItem) => void; onItemLoad: (item: UnifiedSearchItem) => void; onLoadSelected: () => void; onCopySignedUrls: () => void; onDownloadSelected: () => void; onClearResults: () => void; onUnloadItem: (itemId: string) => void; onClearLoaded: () => void; onPointSizeChange: (size: number) => void; onOpacityChange: (opacity: number) => void; onColorSchemeChange: (scheme: string) => void; onZOffsetChange: (offset: number) => void; onPickableChange: (pickable: boolean) => void; onElevationRangeChange: (range: [number, number] | null) => void; onClassificationToggle: (classificationCode: number, visible: boolean) => void; onClassificationShowAll: () => void; onClassificationHideAll: () => void; onColormapChange: (colormap: ColormapName) => void; onColorRangeChange: (config: ColorRangeConfig) => void; onShowMetadata?: (itemId: string) => void; onCrossSectionPanel?: () => HTMLElement | null; onRebuildIndex?: (onProgress: (progress: number, total: number) => void) => Promise; getIndexInfo?: () => { source: string; itemCount: number; generatedAt?: string; }; } /** * Builds and manages the control panel UI. */ export declare class PanelBuilder { private _callbacks; private _state; private _container; private _searchSection; private _resultsSection; private _loadedSection; private _vizSection; private _crossSectionSection; private _pickableCheckbox; private _elevationCheckbox; private _elevationSliderContainer; private _elevationRangeValue; private _elevationMinInput; private _elevationMaxInput; private _elevationTrackFill; private _classificationLegendContainer; private _classificationCheckboxes; private _colormapContainer; private _colormapSelect; private _colorbarCanvas; private _colorbarMinLabel; private _colorbarMaxLabel; private _colorRangeModePercentile; private _colorRangeModeAbsolute; private _percentileLowSlider; private _percentileHighSlider; private _absoluteMinSlider; private _absoluteMaxSlider; private _percentileRangeValue; private _absoluteRangeValue; private _percentileTrackFill; private _absoluteTrackFill; private _percentileSliderContainer; private _absoluteSliderContainer; private _currentColormap; private _currentColorRangeConfig; private _dataBounds; private _computedBounds; constructor(callbacks: PanelCallbacks, state: NoaaLidarState); /** * Builds and returns the panel content element. */ build(): HTMLElement; /** * Updates the panel with new state. */ updateState(state: NoaaLidarState): void; private _buildSearchSection; private _updateSearchSection; private _buildResultsSection; private _updateResultsSection; private _buildLoadedSection; private _updateLoadedSection; private _updateVisualizationSection; private _buildVisualizationSection; /** * Shows/hides the visualization section. */ showVisualizationSection(show: boolean): void; /** * Builds the cross-section section that embeds the panel from LidarControl. * This may return null if the LidarControl hasn't been initialized yet. */ private _buildCrossSectionSection; /** * Builds the point picking checkbox. */ private _buildPickableCheckbox; /** * Builds the elevation filter controls with checkbox and dual-thumb range slider. */ private _buildElevationFilter; /** * Updates the elevation range slider track fill position. */ private _updateElevationTrackFill; /** * Gets elevation bounds from loaded point clouds. */ private _getElevationBounds; /** * Builds the classification legend with toggleable visibility. */ private _buildClassificationLegend; /** * Rebuilds the classification list items. */ private _rebuildClassificationList; /** * Updates visibility of the classification legend based on color scheme. */ private _updateClassificationLegendVisibility; /** * Updates the classification legend checkboxes. */ updateClassificationLegend(): void; /** * Builds the colormap section with dropdown, colorbar, and color range controls. */ private _buildColormapSection; /** * Builds the color range controls with mode toggle and sliders. */ private _buildColorRangeControls; /** * Builds the percentile range sliders. */ private _buildPercentileSliders; /** * Builds the absolute range sliders. */ private _buildAbsoluteSliders; /** * Updates colormap section visibility based on color scheme. */ private _updateColormapVisibility; /** * Updates data bounds based on the current color scheme. */ private _updateDataBoundsForScheme; /** * Gets intensity bounds from loaded point clouds. * Intensity values are normalized to 0-1 range during loading in maplibre-gl-lidar. */ private _getIntensityBounds; /** * Updates the absolute slider bounds. * This sets the min/max range of the sliders and initializes values based on computed bounds or percentile. */ private _updateAbsoluteSliderBounds; /** * Updates the absolute slider range label based on current slider values. */ private _updateAbsoluteRangeLabel; /** * Updates the colorbar min/max labels based on current config. */ private _updateColorbarLabels; /** * Formats a value for display based on the data range (not the value itself). * This matches the maplibre-gl-lidar behavior. */ private _formatValue; /** * Updates the colorbar canvas with the current colormap gradient. */ private _updateColorbar; /** * Handles color range mode change (percentile/absolute toggle). */ private _onColorRangeModeChange; /** * Handles percentile slider input changes. */ private _onPercentileSliderChange; /** * Handles absolute slider input changes. */ private _onAbsoluteSliderChange; /** * Updates the percentile slider track fill position. */ private _updatePercentileTrackFill; /** * Updates the absolute slider track fill position. */ private _updateAbsoluteTrackFill; /** * Emits the current color range configuration. */ private _emitColorRangeChange; /** * Resets color range to default percentile 2-98%. */ private _resetColorRange; /** * Sets the colormap dropdown value. * * @param colormap - Colormap name */ setColormap(colormap: ColormapName): void; /** * Sets the color range configuration. * * @param config - Color range config */ setColorRangeConfig(config: ColorRangeConfig): void; } //# sourceMappingURL=PanelBuilder.d.ts.map