import { AriaAttributes, FunctionComponent, MouseEvent, MouseEventHandler } from 'react'; import { SpringValues } from '@react-spring/web'; import { Box, Dimensions, ValueFormat, PropertyAccessor, MotionProps, SvgDefsAndFill } from '@nivo/core'; import { PartialTheme } from '@nivo/theming'; import { InheritedColorConfig, OrdinalColorScaleConfig, DatumIdentityAccessor } from '@nivo/colors'; import { TileType } from './tiling'; export interface DefaultTreeMapDatum { id: string; value?: number; children?: DefaultTreeMapDatum[]; } export interface ComputedNode { id: string; path: string; pathComponents: string[]; data: Omit; x: number; y: number; width: number; height: number; value: number; formattedValue: number | string; treeDepth: number; treeHeight: number; isParent: boolean; isLeaf: boolean; label: string | number; parentLabel: string | number; color: string; fill?: string; opacity: number; borderColor: string; labelTextColor: string; labelRotation: number; parentLabelTextColor: string; parentLabelX: number; parentLabelY: number; parentLabelRotation: number; } export type ComputedNodeWithoutStyles = Omit, 'color' | 'opacity' | 'borderColor' | 'labelTextColor' | 'parentLabelTextColor'>; export interface ComputedNodeWithHandlers extends ComputedNode { onMouseEnter?: MouseEventHandler; onMouseMove?: MouseEventHandler; onMouseLeave?: MouseEventHandler; onClick?: MouseEventHandler; } export type NodeAnimatedProps = { x: number; y: number; width: number; height: number; color: string; labelX: number; labelY: number; labelRotation: number; labelOpacity: number; parentLabelX: number; parentLabelY: number; parentLabelRotation: number; parentLabelOpacity: number; }; export interface NodeProps { node: ComputedNodeWithHandlers; animatedProps: SpringValues; borderWidth: TreeMapCommonProps['borderWidth']; enableLabel: TreeMapCommonProps['enableLabel']; labelSkipSize: TreeMapCommonProps['labelSkipSize']; enableParentLabel: TreeMapCommonProps['enableParentLabel']; } export type NodeComponent = FunctionComponent>; export interface TooltipProps { node: ComputedNode; } export type TooltipComponent = FunctionComponent>; export type LayerId = 'nodes'; export interface CustomLayerProps { nodes: ComputedNode[]; } export type CustomSvgLayer = FunctionComponent>; export type CustomHtmlLayer = FunctionComponent>; export type CustomCanvasLayer = (ctx: CanvasRenderingContext2D, props: CustomLayerProps) => void; export type NodeMouseEventHandler = (node: ComputedNode, event: MouseEvent) => void; export interface TreeMapDataProps { data: Datum; } export type TreeMapCommonProps = { margin: Box; identity: PropertyAccessor; value: PropertyAccessor; valueFormat: ValueFormat; tile: TileType; leavesOnly: boolean; innerPadding: number; outerPadding: number; enableLabel: boolean; label: PropertyAccessor, 'label' | 'parentLabel'>, string>; labelFormat: ValueFormat; labelSkipSize: number; labelTextColor: InheritedColorConfig & { color: ComputedNode['color']; }>; orientLabel: boolean; enableParentLabel: boolean; parentLabel: PropertyAccessor, 'parentLabel'>, string>; parentLabelSize: number; parentLabelPosition: 'top' | 'right' | 'bottom' | 'left'; parentLabelPadding: number; parentLabelTextColor: InheritedColorConfig & { color: ComputedNode['color']; }>; theme: PartialTheme; colors: OrdinalColorScaleConfig>; colorBy: string | DatumIdentityAccessor>; nodeOpacity: number; borderWidth: number; borderColor: InheritedColorConfig & { color: ComputedNode['color']; }>; isInteractive: boolean; onMouseEnter: NodeMouseEventHandler; onMouseMove: NodeMouseEventHandler; onMouseLeave: NodeMouseEventHandler; onClick: NodeMouseEventHandler; tooltip: TooltipComponent; renderWrapper: boolean; role: string; ariaLabel: AriaAttributes['aria-label']; ariaLabelledBy: AriaAttributes['aria-labelledby']; ariaDescribedBy: AriaAttributes['aria-describedby']; } & MotionProps; export type TreeMapSvgProps = Partial> & TreeMapDataProps & Dimensions & SvgDefsAndFill> & { nodeComponent?: NodeComponent; layers?: (LayerId | CustomSvgLayer)[]; }; export type TreeMapHtmlProps = Partial> & TreeMapDataProps & Dimensions & { nodeComponent?: NodeComponent; layers?: (LayerId | CustomHtmlLayer)[]; }; export type TreeMapCanvasProps = Partial, 'enableParentLabel' | 'parentLabel' | 'parentLabelSize' | 'parentLabelPosition' | 'parentLabelPadding' | 'parentLabelTextColor' | 'onMouseEnter' | 'onMouseLeave'>> & TreeMapDataProps & Dimensions & { layers?: (LayerId | CustomCanvasLayer)[]; pixelRatio?: number; }; //# sourceMappingURL=types.d.ts.map