import { RGBATupleToString } from '../../../../common/color_library_wrappers' ; import { Colors } from '../../../../common/colors' ; import { TooltipInfo } from '../../../../components/tooltip/types' ; import { createCustomCachedSelector } from '../../../../state/create_selector' ; import { getSpecOrNull } from './heatmap_spec' ; import { getPickedShapes } from './picked_shapes' ; const EMPTY_TOOLTIP = Object . freeze ( { header : null , values : [ ] , } ) ; internal export const getTooltipInfoSelector = createCustomCachedSelector ( [ getSpecOrNull , getPickedShapes ] , ( spec , pickedShapes ) : TooltipInfo => { if ( ! spec ) { return EMPTY_TOOLTIP ; } const tooltipInfo = { header : null , values : [ ] , } ; if ( Array . isArray ( pickedShapes ) ) { pickedShapes . filter ( ( { visible } ) => visible ) . forEach ( ( shape ) => { tooltipInfo . values . push ( { label : spec . xAxisLabelName , color : Colors . Transparent . keyword , isHighlighted : false , isVisible : true , seriesIdentifier : { specId : spec . id , key : spec . id , } , value : `${ shape . datum . x }` , formattedValue : spec . xAxisLabelFormatter ( shape . datum . x ) , datum : shape . datum , } ) ; tooltipInfo . values . push ( { label : spec . yAxisLabelName , color : Colors . Transparent . keyword , isHighlighted : false , isVisible : true , seriesIdentifier : { specId : spec . id , key : spec . id , } , value : `${ shape . datum . y }` , formattedValue : spec . yAxisLabelFormatter ( shape . datum . y ) , datum : shape . datum , } ) ; tooltipInfo . values . push ( { label : spec . name ?? spec . id , color : RGBATupleToString ( shape . fill . color ) , isHighlighted : false , isVisible : true , seriesIdentifier : { specId : spec . id , key : spec . id , } , value : `${ shape . value }` , formattedValue : `${ shape . formatted }` , datum : shape . datum , } ) ; } ) ; } else { tooltipInfo . values . push ( { label : '' , color : Colors . Transparent . keyword , isHighlighted : false , isVisible : true , seriesIdentifier : { specId : spec . id , key : spec . id , } , value : `${ pickedShapes . value }` , formattedValue : `${ pickedShapes . value }` , datum : pickedShapes . value , } ) ; } return tooltipInfo ; } ) ;