import type { D3InterpolateName } from '../../../colors'; import type { Vec2 } from '../../../math'; import type ColorBar from '../components/ColorBar.svelte'; import type { Sides } from '../layout'; import type { LegendConfig, LegendItem } from '../types'; import type { ColorBarSide } from './hierarchy-chart'; import type { OtherBucketInfo, PositionedArc, SunburstLabelText, SunburstLayoutOptions, SunburstNode, SunburstNodeHandlerProps, SunburstSort, SunburstValueMode } from './hierarchy-layout'; import type { ComponentProps, Snippet } from 'svelte'; import { SvelteSet } from 'svelte/reactivity'; type Point = { x: number; y: number; }; type NodeProps> = SunburstNodeHandlerProps; export interface HierarchyChartProps> { data?: SunburstNode | SunburstNode[]; value_mode?: SunburstValueMode; sort?: SunburstSort; level_lighten?: number; min_fraction?: number; max_children?: number; other_label?: string | ((bucket: OtherBucketInfo) => string); max_depth?: number; show_labels?: boolean; label_text?: SunburstLabelText; zoom_on_click?: boolean; zoom_root_id?: string | number | null; show_breadcrumbs?: boolean; color_values?: (node: PositionedArc) => number | null; color_scale?: D3InterpolateName; color_range?: Vec2; color_bar?: ComponentProps | null; color_bar_side?: ColorBarSide; export_buttons?: boolean; export_filename?: string; value_format?: string; padding?: Sides; legend?: LegendConfig | null; show_legend?: boolean; tooltip?: Snippet<[NodeProps]>; on_node_click?: (data: NodeProps & { event: MouseEvent | KeyboardEvent; }) => void; on_node_hover?: (data: (NodeProps & { event: MouseEvent | FocusEvent; }) | null) => void; on_zoom?: (data: { root: NodeProps | null; }) => void; header_controls?: Snippet<[{ height: number; width: number; fullscreen: boolean; }]>; controls_extra?: Snippet<[{ zoom_root_id: string | number | null; }]>; } interface HierarchyChartOptions> { readonly chart: `sunburst` | `treemap`; readonly uid: string; readonly default_padding: Required; readonly dblclick_ignore?: string; readonly data: () => SunburstNode | SunburstNode[]; readonly layout_options: () => SunburstLayoutOptions; readonly label_text: () => SunburstLabelText; readonly value_format: () => string; readonly width: () => number; readonly height: () => number; readonly padding: () => Sides; readonly color_values: () => ((arc: PositionedArc) => number | null) | undefined; readonly color_scale: () => D3InterpolateName; readonly color_range: () => Vec2 | undefined; readonly color_bar: () => ComponentProps | null; readonly color_bar_side: () => ColorBarSide; readonly legend: () => LegendConfig | null; readonly show_legend: () => boolean | undefined; readonly zoom_on_click: () => boolean; readonly export_filename: () => string; readonly clickable?: (arc: PositionedArc) => boolean; readonly zoom_root_id: () => string | number | null; readonly set_zoom_root_id: (value: string | number | null) => void; readonly set_hovered: (value: boolean) => void; readonly fullscreen: () => boolean; readonly set_fullscreen: (value: boolean) => void; readonly on_node_click: NonNullable[`on_node_click`]>; readonly on_node_hover: NonNullable[`on_node_hover`]>; readonly on_zoom: NonNullable[`on_zoom`]>; readonly visible: (idx: number) => boolean; readonly node_center: (idx: number) => Point | null; readonly legend_points: () => Point[]; readonly focus_after_zoom: () => void; } export declare class HierarchyChartState = Record> { #private; readonly chart: `sunburst` | `treemap`; readonly node_attr: string; readonly hatch_pattern_id: string; readonly muted_ids: SvelteSet; svg_element: SVGSVGElement | null; wrapper: HTMLDivElement | undefined; hovered_idx: number | null; hover_info: NodeProps | null; hover_pos: Point; expanded_parents: SvelteSet; hover_at_pointer: boolean; focused_idx: number | null; colorbar_size: { width: number; height: number; }; constructor(opts: HierarchyChartOptions); layout: import("./hierarchy-layout").SunburstLayoutResult; arcs: PositionedArc[]; zoom_root: PositionedArc | null; zoomed: boolean; breadcrumb_arcs: PositionedArc[]; pad: Required; cbar: { side: ColorBarSide; is_vertical: boolean; tick_side: `primary` | `secondary` | `inside`; tick_padding: string; inner_width: number; inner_height: number; plot_left: number; offset_px: number; }; inner_width: number; inner_height: number; plot_left: number; metric: { range: Vec2; colors: string[]; } | null; color_for: (arc: PositionedArc) => string; node_dim: { opacity: number; label_opacity: number | undefined; }[]; label_font: import("../text-metrics").FontSpec; node_infos: import("./hierarchy-chart").HierarchyNodeInfo[]; depth1_arcs: PositionedArc[]; legend_visible: boolean; legend_items: LegendItem[]; width: number; height: number; value_format: string; color_bar: (import("svelte/elements").HTMLAttributes & { title?: string; scale?: import("../types").ColorBarScale; title_side?: `left` | `right` | `top` | `bottom`; bar_style?: string; title_style?: string; wrapper_style?: string; tick_labels?: (string | number)[] | number; tick_format?: string; range?: Vec2; tick_side?: `primary` | `secondary` | `inside`; orientation?: import("../types").Orientation; snap_ticks?: boolean; steps?: number; nice_range?: Vec2; scale_type?: import("../types").ScaleType; property_options?: import("../types").AxisOption[]; selected_property_key?: string; data_loader?: import("../types").ColorBarDataLoaderFn; on_property_change?: (key: string, range: Vec2) => void; color_scale_options?: import("../types").ColorScaleOption[]; selected_color_scale_key?: string; on_color_scale_change?: (key: string) => void; backdrop?: string; }) | null; color_scale: D3InterpolateName; legend: LegendConfig | null; get fullscreen(): boolean; set fullscreen(value: boolean); legend_points: () => Point[]; set_hover(idx: number | null, event?: MouseEvent | FocusEvent): void; clear_hover: () => void; handle_hover_event: (event: MouseEvent | FocusEvent) => void; zoom_to: (arc: PositionedArc | null) => void; zoom_out: (event?: Event) => void; handle_click: (event: MouseEvent | KeyboardEvent) => void; handle_dblclick: (event: MouseEvent) => void; focus_node: (idx: number | null) => void; handle_keydown: (event: KeyboardEvent) => void; handle_escape: (event: KeyboardEvent) => void; toggle_category: (series_idx: number) => void; legend_hover: (item: { series_idx: number; } | null) => void; export_chart: (format: `svg` | `png`) => void; } export {};