import { IRScope } from '@retikz/core'; import { DataFieldTypeMap, ExternalRow } from '@retikz/data'; import { AnyChannelDefinition, AnyMarkDefinition, AnyScaleDefinition } from '../../contract'; import { resolvePlotTheme, ScaleDescriptor } from '../../providers'; import { IRPlotLegendGuide, IRPlotSpec } from '../../schemas'; import { LegendReserve, Rect } from '../../shared'; import { MarkDataView } from './types'; /** * 收集所有 mark 在某非位置通道上的字段 descriptor(size / opacity / shape) * @description resolver 双产出的 descriptor 注册到 channel → descriptor 表;同通道多 mark 取首个有 descriptor 的 * legend 据 scale name 消歧;未具名的默认 scale 用 channel/field/type 签名区分 */ export declare const collectChannelDescriptors: (node: IRPlotSpec, channelCtx: { node: IRPlotSpec; rows: Array; fieldTypes: DataFieldTypeMap; scaleRegistry: ReadonlyMap; resolveColorScheme: (name: string) => (t: number) => string; palette: ReturnType["palette"]; }, channelRegistry: ReadonlyMap, markRegistry: ReadonlyMap, defaultColor: string, markDataViews?: ReadonlyArray) => Array; /** * 据 legend guide 估算各边 legend 预留带宽(同侧多个 legend 累加) * @description 喂 computePlotArea 在对应边收窄 plotArea;估算式占位、不测量。 */ export declare const legendReserveOf: (legendGuides: Array) => LegendReserve; /** * 为每个 legend 计算预留带矩形(落在 plotArea 旁的预留 gutter 内;同侧按声明序堆叠) * @description gutter 由 computePlotArea 在对应边按 legendReserveOf 让出;此处把每个 legend 摆进其所在边的带。 */ export declare const reserveLegendBands: (legendGuides: Array, width: number, height: number, plotArea: Rect) => Array; /** * 解析所有 legend guide → core legend scope(据通道 + 绑定 scale 类型选 swatch / ramp / 分箱 / 梯度符号) * @description color descriptor 从 PlotSpec.scales 具名 color scale 取(多于一个且未消歧 → fail-loud); * 其它通道从 resolver descriptor 与 channel definition 取值。形态由 definition.legend 决定,标签复用 axis formatter 链。 * 每个 legend 下沉成归属当前 plot owner 的稳定 id 独立 scope,落在传入的预留带内。 */ export declare const buildLegendLayers: (node: IRPlotSpec, channelDescriptors: ReadonlyArray, legendGuides: Array, fontSize: number, bands: Array, channelRegistry: ReadonlyMap, scaleRegistry: ReadonlyMap, resolvedTheme: ReturnType) => Array; //# sourceMappingURL=legend.d.ts.map