import type { ColumnDataMap } from "../../data/view-reader"; import type { WebGLContextManager } from "../../webgl/context-manager"; import { TreeChartBase } from "../common/tree-chart"; import { type BreadcrumbRegion } from "./treemap-layout"; export interface TreemapLocations { u_resolution: WebGLUniformLocation | null; a_position: number; a_color: number; } /** * Treemap chart. Shares tree storage + streaming-pipeline + color-mode * state with `TreeChartBase`; adds rectangular layout + WebGL quad * rendering + drill / tooltip interactions. */ export declare class TreemapChart extends TreeChartBase { _program: WebGLProgram | null; _locations: TreemapLocations | null; _positionBuffer: WebGLBuffer | null; _colorBuffer: WebGLBuffer | null; _vertexCount: number; _hoveredNodeId: number; _pinnedNodeId: number; _breadcrumbRegions: BreadcrumbRegion[]; _chromeCache: ImageBitmap | null; _chromeCacheDirty: boolean; /** * Monotonic generation counter bumped every time the static chrome * content changes (a new `drawStaticChrome` call). The async * `createImageBitmap` callback captures the current gen at kickoff * and only installs the resulting bitmap if its gen is still the * most-recent one. Without this, out-of-order bitmap resolutions * can store a stale bitmap in `_chromeCache` — any subsequent * hover-only overlay call then blits that stale snapshot over the * fresh chart, producing "leftover labels / cells" artefacts. */ _chromeCacheGen: number; /** * Per-facet drill roots in split_by mode. Key is the facet label * (the top-level child of `_rootId`); value is the currently drilled * node inside that facet's subtree. Missing keys mean the facet * shows its full subtree. */ _facetDrillRoots: Map; _facetGrid: import("../../layout/facet-grid").FacetGrid | null; /** When `false`, branch nodes at relDepth=1 render as a centered * overlay (same style as relDepth=2) and no top-of-rect label * reservation is made in `squarify`. Default `true` preserves the * legacy title-bar look. */ _showBranchHeader: boolean; /** * Parallel to `_visibleNodeIds`. Each entry stores the depth of the * drill root that owns the corresponding visible node, so render * paths can compute `relDepth` uniformly without knowing whether * faceting is active. Populated in `renderTreemapFrame` during * layout. */ _visibleBaseDepths: Int32Array | null; /** * Parallel to `_visibleNodeIds`. The drill-root node id that owns * each visible node (= `_currentRootId` in non-facet mode, per- * facet drill root in facet mode). Used by hit-testing and chrome * to skip the drill-root itself without a separate equality check. */ _visibleRootIds: Int32Array | null; protected tooltipCallbacks(): { onHover: (mx: number, my: number) => void; onLeave: () => void; onClickPre: (mx: number, my: number) => boolean; onDblClick: (mx: number, my: number) => void; }; uploadAndRender(glManager: WebGLContextManager, columns: ColumnDataMap, startRow: number, _endRow: number): Promise; _fullRender(glManager: WebGLContextManager): void; protected destroyInternal(): void; }