import React from 'react'; import { Viewport } from '@deck.gl/core'; import type { Selection } from '../../../shared/models/models.selections'; import type { MapFeature } from '../../../shared/models/models.mapFeature'; import { TooltipAttribute } from '../../../shared/models/models.tooltip'; import { TooltipType } from '../../../shared/models/models.tooltip'; export interface LayerTooltipParams { /** Tooltip visual/config settings coming from layer definition. */ tooltipSettings: { offsetX?: number; offsetY?: number; attributes: TooltipAttribute[]; /** * Tooltip strategy: * - TooltipType.Native – let DeckGL handle it, or MapTooltip if CustomTooltip=false * - TooltipType.Hover – show tooltip for hovered feature * - TooltipType.Click – show tooltip for clicked feature * - TooltipType.Selection– show tooltip for currently selected feature */ type?: TooltipType.Native | TooltipType.Hover | TooltipType.Click | TooltipType.Selection; }; /** Info about the currently hovered/clicked feature (screen position + feature). */ featureInfo?: { feature: MapFeature; x: number; y: number; } | null; pixelInfo?: { values: number[]; x: number; y: number; currentChannelIndex: number; } | null; /** Features used for selection-based tooltips (typically all rendered features). */ data?: MapFeature[]; /** Active selection state for the layer (may be null if not selectable). */ selection?: Selection | null; /** Current DeckGL viewport used for projecting [lng, lat] to screen coords. */ viewport?: Viewport | null; /** Optional custom tooltip React component; when false, MapTooltip is used. */ CustomTooltip?: React.ElementType | boolean; /** * Layer-specific function that returns a flat [lng, lat] coordinate * for a given feature (e.g. centroid for polygons, position for points). */ getCoordinates?: (feature: MapFeature) => [number, number] | undefined; } /** * Shared logic for rendering hover/click/selection tooltips for map layers. * * - Uses `featureInfo` for hover/click tooltips (screen-space x/y already known). * - Uses `selection.featureKeys` (potentially multiple) + `viewport` + `getCoordinates` * for selection tooltips, rendering one tooltip per selected feature. * - Falls back to "native" tooltips when requested and no CustomTooltip is provided. * * @param params Tooltip configuration and layer state. * @returns Tooltip React node or null if no tooltip should be rendered. */ export declare function getLayerTooltip({ tooltipSettings, featureInfo, pixelInfo, data, selection, viewport, CustomTooltip, getCoordinates, }: LayerTooltipParams): React.ReactNode;