import { PartitionConfig , PartitionLayout , RecursivePartial , Theme } from '@elastic/charts' ; import { LabelPositions , PieVisParams , PieContainerDimensions } from '../../common/types' ; const MAX_SIZE = 1000 ; export const getConfig = ( visParams , chartTheme , dimensions ? , rescaleFactor = 1 ) : RecursivePartial < PartitionConfig > => { const isSplitChart = Boolean ( visParams . dimensions . splitColumn || visParams . dimensions . splitRow ) ; const usingMargin = dimensions && ! isSplitChart ? { margin : { top : ( 1 - Math . min ( 1 , MAX_SIZE / dimensions ?. height ) ) / 2 , bottom : ( 1 - Math . min ( 1 , MAX_SIZE / dimensions ?. height ) ) / 2 , left : ( 1 - Math . min ( 1 , MAX_SIZE / dimensions ?. width ) ) / 2 , right : ( 1 - Math . min ( 1 , MAX_SIZE / dimensions ?. width ) ) / 2 , } , } : null ; const usingOuterSizeRatio = dimensions && ! isSplitChart ? { outerSizeRatio : rescaleFactor * Math . min ( MAX_SIZE / Math . min ( dimensions ?. width , dimensions ?. height ) , 1 ) , } : null ; const config = { partitionLayout : PartitionLayout . sunburst , fontFamily : chartTheme . barSeriesStyle ?. displayValue ?. fontFamily , ... usingOuterSizeRatio , specialFirstInnermostSector : false , minFontSize : 10 , maxFontSize : 16 , linkLabel : { maxCount : 5 , fontSize : 11 , textColor : chartTheme . axes ?. axisTitle ?. fill , maxTextLength : visParams . labels . truncate ?? undefined , } , sectorLineStroke : chartTheme . lineSeriesStyle ?. point ?. fill , sectorLineWidth : 1.5 , circlePadding : 4 , emptySizeRatio : visParams . isDonut ? visParams . emptySizeRatio : 0 , ... usingMargin , } ; if ( ! visParams . labels . show ) { config . linkLabel = { maxCount : 0 , maximumSection : Number . POSITIVE_INFINITY } ; } if ( visParams . labels . last_level && visParams . labels . show ) { config . linkLabel = { maxCount : Number . POSITIVE_INFINITY , maximumSection : Number . POSITIVE_INFINITY , maxTextLength : visParams . labels . truncate ?? undefined , } ; } if ( ( visParams . labels . position === LabelPositions . INSIDE || isSplitChart ) && visParams . labels . show ) { config . linkLabel = { maxCount : 0 } ; } return config ; } ;