import type OlFeature from 'ol/Feature.js'; import GirafeDraggableElement from '../../base/GirafeDraggableElement.js'; import type { GridDataById } from '../../tools/featuretogriddatabyid.js'; /** * Represents a Feature displayed in the SelectionWindowComponent. */ interface WindowFeature { id: string; feature: OlFeature; notOlProperties: Record; } interface Layer { id: string; label: string; } /** * Represents a draggable and resizable selection window component. * Display itself when it should be visible and have selected features. * To be visible, it has to be the defined selectionComponent. */ declare class SelectionWindowComponent extends GirafeDraggableElement { templateUrl: null; styleUrls: null; template: () => import("uhtml").Hole; private readonly eventsCallbacks; private isVisibleComponentSetup; private readonly debounceOnFeaturesSelected; private resizeWindow; private readonly featureToGridData; private windowFeatures; private windowLayers; visible: boolean; focusedIndex: number; maxIndex: number; iconCenter: any; private csvManager; displayedProperties: [string, unknown][]; showDropdown: boolean; private columnAliasHelper; showDirectionsProviderDropdown: boolean; constructor(); protected connectedCallback(): void; /** * Render the component regarding its visibility. */ render(): void; /** * @returns The WindowFeature at the currently focused index. */ getWindowFeature(): WindowFeature; /** * Recenter the map view based on the current feature. */ recenter(): void; /** * Toggles the visibility of the layers dropdown. */ openDropdown(): void; /** * Gets the list of layers to export. * @returns The list of layers to export. */ getLayersList(): Layer[]; /** * Generates a CSV file with the properties of the currently focused feature. * @param layer The layer to export. */ generateCSV(layer: string): void; /** * Ignores undefined values in the data. */ ignoreUndefinedValues(data: Record): void; /** * Closes the window and deselect the selected features. */ protected closeWindow(): void; onFocusWindowFeatureChecked(event: Event): void; /** * Sets the focus on a specific feature. */ onFocusWindowFeature(index: number): void; /** * Renders the component by calling the necessary methods. * @private */ private renderComponent; /** * Sets up the components state and side-kicks. * This must be called once at the first (visible) rendering. * @private */ private setupVisibleComponent; /** * Render a placeholder, not visible component on hide. * Removes event registration. * @private */ private renderEmptyComponent; /** * Event about visibility that must be always listened by this component, even hidden. * @private */ private registerVisibilityEvents; /** * Listen events that must be listened if the component is visible. * @private */ private registerEvents; /** * Sets the selected features in the window and updates the window state to display the first feature. * @private */ private onFeaturesSelected; /** * Selects a window feature by its first valid index. * Out of bound index loops back to the first valid index. * @returns The selected window feature. * @private */ private selectedWindowFeature; /** * Toggles the panel visibility. If visible, tries to display a grid with selected feature. * Can only be visible if the component is the wanted selection component. * @private */ private togglePanel; /** * Creates an array of WindowFeature objects based on the provided GridDataById object. * Using gridDataById orders by feature id the WindowFeatures. * @returns An array of WindowFeature objects. * @static */ static createWindowFeatures(gridDataById: GridDataById): WindowFeature[]; } export default SelectionWindowComponent;