transone-chart 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1,18 +1,19 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../lib/types.ts", "../lib/core/canvas.ts", "../lib/core/scale.ts", "../lib/core/layout.ts", "../lib/core/text.ts", "../lib/core/axis.ts", "../lib/core/legend.ts", "../lib/core/chart.ts", "../lib/charts/line.ts", "../lib/charts/bar.ts", "../lib/charts/pie.ts", "../lib/charts/radar.ts", "../lib/adapters/types.ts", "../lib/adapters/miniprogram.ts", "../lib/adapters/web.ts", "../lib/factory.ts", "../lib/adapters/native.ts", "../../transone/lib/core/vnode.ts", "../../transone/lib/core/reactive/types.ts", "../../transone/lib/core/reactive/scheduler.ts", "../../transone/lib/core/reactive.ts", "../../transone/lib/core/model.ts", "../../transone/lib/style/units.ts", "../../transone/lib/core/renderer/props.ts", "../../transone/lib/style/StyleManager.ts", "../../transone/lib/core/template.ts", "../../transone/lib/core/component/base.ts", "../../transone/lib/router/instance.ts", "../../transone/lib/core/renderer/element-strategy.ts", "../../transone/lib/core/renderer.ts", "../../transone/lib/request/errors.ts", "../../transone/lib/request/helpers.ts", "../../transone/lib/request/adapters/fetch.ts", "../../transone/lib/request/adapters/platform.ts", "../../transone/lib/request/adapters/mp.ts", "../../transone/lib/request/adapters/index.ts", "../../transone/lib/request/interceptors.ts", "../../transone/lib/request/request.ts", "../../transone/lib/request/index.ts", "../lib/component.ts"],
3
+ "sources": ["../lib/types.ts", "../lib/core/canvas.ts", "../lib/core/scale.ts", "../lib/core/layout.ts", "../lib/core/debounce.ts", "../lib/core/text.ts", "../lib/core/axis.ts", "../lib/core/legend.ts", "../lib/core/chart.ts", "../lib/charts/line.ts", "../lib/charts/bar.ts", "../lib/charts/pie.ts", "../lib/charts/radar.ts", "../lib/adapters/types.ts", "../lib/adapters/miniprogram.ts", "../lib/adapters/web.ts", "../lib/factory.ts", "../lib/adapters/native.ts", "../../transone/lib/core/vnode.ts", "../../transone/lib/core/reactive/types.ts", "../../transone/lib/core/reactive/scheduler.ts", "../../transone/lib/core/reactive.ts", "../../transone/lib/core/model.ts", "../../transone/lib/style/units.ts", "../../transone/lib/core/renderer/props.ts", "../../transone/lib/style/StyleManager.ts", "../../transone/lib/core/template.ts", "../../transone/lib/core/component/base.ts", "../../transone/lib/router/instance.ts", "../../transone/lib/core/renderer/element-strategy.ts", "../../transone/lib/core/renderer.ts", "../../transone/lib/request/errors.ts", "../../transone/lib/request/helpers.ts", "../../transone/lib/request/adapters/fetch.ts", "../../transone/lib/request/adapters/platform.ts", "../../transone/lib/request/adapters/mp.ts", "../../transone/lib/request/adapters/index.ts", "../../transone/lib/request/interceptors.ts", "../../transone/lib/request/request.ts", "../../transone/lib/request/index.ts", "../lib/component.ts"],
4
4
  "sourcesContent": [
5
- "/**\n * transone-chart 公共类型定义。\n *\n * 所有图表共用一份 Option 风格配置(对齐 ECharts 心智:xAxis / yAxis /\n * series / legend / title),但实现零依赖、纯 Canvas 2D 绘制。\n */\n\n/** 一期支持的图表类型。 */\nexport type ChartType = 'line' | 'bar' | 'pie' | 'radar';\n\n/** 默认主题色板(与 transone-ui 主色一致,可按需覆盖)。 */\nexport const DEFAULT_PALETTE: readonly string[] = [\n '#1677ff',\n '#00b578',\n '#ff8f1f',\n '#ff3141',\n '#eb2f96',\n '#722ed1',\n '#13c2c2',\n '#faad14',\n '#2f54eb',\n '#a0d911',\n];\n\nexport const DEFAULT_TEXT_COLOR = '#323233';\nexport const DEFAULT_AXIS_COLOR = '#c8c9cc';\nexport const DEFAULT_GRID_COLOR = '#ebedf0';\nexport const DEFAULT_FONT_FAMILY =\n \"-apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'PingFang SC', 'Microsoft YaHei', sans-serif\";\n\n/** 标题配置。 */\nexport interface TitleOption {\n text: string;\n fontSize?: number;\n color?: string;\n /** 标题与绘图区之间的留白,默认 16。 */\n padding?: number;\n}\n\n/** 图例配置。 */\nexport interface LegendOption {\n show?: boolean;\n /** 图例位置:顶部横向 / 底部横向 / 右侧纵向。 */\n position?: 'top' | 'bottom' | 'right';\n fontSize?: number;\n color?: string;\n /** 图例色块边长(正方形),默认 12。 */\n markerSize?: number;\n /** 图例项之间的水平间距,默认 16。 */\n itemGap?: number;\n}\n\n/** 数值轴(y 轴/雷达数值)配置。 */\nexport interface ValueAxisOption {\n /** 显式最小值;缺省自动 nice。 */\n min?: number;\n /** 显式最大值;缺省自动 nice。 */\n max?: number;\n /** 刻度分段数,默认 5。 */\n splitCount?: number;\n labelFontSize?: number;\n labelColor?: string;\n gridColor?: string;\n gridLineWidth?: number;\n /** 网格虚线,如 [4, 4];默认实线。 */\n gridLineDash?: number[];\n /** 是否显示网格,默认 true。 */\n showGrid?: boolean;\n /** 刻度标签格式化。 */\n format?: (value: number) => string;\n}\n\n/** 类目轴(x 轴/雷达指标)配置。 */\nexport interface CategoryAxisOption {\n labels: readonly string[];\n labelFontSize?: number;\n labelColor?: string;\n gridColor?: string;\n gridLineWidth?: number;\n /** 是否显示类目网格竖线,默认 false。 */\n showGrid?: boolean;\n}\n\n/** —— 折线图 —— */\n\nexport interface LineSeries {\n name?: string;\n data: readonly number[];\n color?: string;\n /** 平滑曲线(三次贝塞尔插值),默认 false。 */\n smooth?: boolean;\n /** 是否填充系列与数值轴之间的面积,默认 false。 */\n area?: boolean;\n /** 是否绘制数据点标记,默认 true。 */\n showSymbol?: boolean;\n lineWidth?: number;\n}\n\nexport interface LineChartOption {\n type: 'line';\n title?: TitleOption;\n legend?: LegendOption;\n xAxis: CategoryAxisOption;\n yAxis?: ValueAxisOption;\n series: readonly LineSeries[];\n /** 数值轴是否从 0 开始(数据全为正时强制含 0),默认 false(按数据范围紧凑显示)。 */\n startFromZero?: boolean;\n /** 背景色(如 'rgba(22,119,255,0.06)'),默认无。 */\n backgroundColor?: string;\n}\n\n/** —— 柱状图 —— */\n\nexport interface BarSeries {\n name?: string;\n data: readonly number[];\n color?: string;\n /** 堆叠组名;同名系列纵向堆叠。 */\n stack?: string;\n /** 柱体宽度(px),缺省按类目带自动计算。 */\n barWidth?: number;\n /** 柱体圆角,默认 0。 */\n borderRadius?: number;\n}\n\nexport interface BarChartOption {\n type: 'bar';\n title?: TitleOption;\n legend?: LegendOption;\n xAxis: CategoryAxisOption;\n yAxis?: ValueAxisOption;\n series: readonly BarSeries[];\n /** 横向柱状图(类目轴转纵向、数值轴转横向),默认 false。 */\n horizontal?: boolean;\n backgroundColor?: string;\n}\n\n/** —— 饼图 —— */\n\nexport interface PieDatum {\n name: string;\n value: number;\n color?: string;\n}\n\nexport interface PieChartOption {\n type: 'pie';\n data: readonly PieDatum[];\n title?: TitleOption;\n legend?: LegendOption;\n /** 外半径:数字(px)或百分比字符串(相对 min(width, height) / 2),默认 '60%'。 */\n radius?: number | string;\n /** 内半径:0 为饼图;>0 为环形图,默认 0。 */\n innerRadius?: number | string;\n /** 是否显示扇区标签(名称 + 百分比),默认 true。 */\n showLabel?: boolean;\n labelFontSize?: number;\n labelColor?: string;\n /** 起始角(弧度),默认 -Math.PI / 2(12 点方向),顺时针。 */\n startAngle?: number;\n backgroundColor?: string;\n}\n\n/** —— 雷达图 —— */\n\nexport interface RadarIndicator {\n name: string;\n /** 指标最大值;缺省取所有系列该指标的最大值。 */\n max?: number;\n}\n\nexport interface RadarSeries {\n name?: string;\n data: readonly number[];\n color?: string;\n /** 是否填充多边形区域,默认 true。 */\n area?: boolean;\n lineWidth?: number;\n}\n\nexport interface RadarChartOption {\n type: 'radar';\n indicators: readonly RadarIndicator[];\n series: readonly RadarSeries[];\n title?: TitleOption;\n legend?: LegendOption;\n /** 网格层数,默认 5。 */\n splitCount?: number;\n gridColor?: string;\n gridLineWidth?: number;\n labelFontSize?: number;\n labelColor?: string;\n /** 雷达中心半径(px),缺省取 min(width, height) / 2 的 60%。 */\n radius?: number;\n /** 起始角(弧度),默认 -Math.PI / 2(12 点方向),顺时针。 */\n startAngle?: number;\n backgroundColor?: string;\n}\n\nexport type ChartOption =\n | LineChartOption\n | BarChartOption\n | PieChartOption\n | RadarChartOption;\n\n/** 图表渲染上下文(适配器解析后的产物)。 */\nexport interface ChartRenderContext {\n /** 跨端 Canvas 2D 上下文。 */\n ctx: import('./core/canvas').ICanvas2D;\n /** 逻辑宽度(CSS px)。 */\n width: number;\n /** 逻辑高度(CSS px)。 */\n height: number;\n /** 设备像素比。 */\n dpr: number;\n /** 自定义色板,缺省使用 DEFAULT_PALETTE。 */\n palette?: readonly string[];\n}\n",
5
+ "/**\n * transone-chart 公共类型定义。\n *\n * 所有图表共用一份 Option 风格配置(对齐 ECharts 心智:xAxis / yAxis /\n * series / legend / title),但实现零依赖、纯 Canvas 2D 绘制。\n */\n\n/** 一期支持的图表类型。 */\nexport type ChartType = 'line' | 'bar' | 'pie' | 'radar';\n\n/** 默认主题色板(与 transone-ui 主色一致,可按需覆盖)。 */\nexport const DEFAULT_PALETTE: readonly string[] = [\n '#1677ff',\n '#00b578',\n '#ff8f1f',\n '#ff3141',\n '#eb2f96',\n '#722ed1',\n '#13c2c2',\n '#faad14',\n '#2f54eb',\n '#a0d911',\n];\n\nexport const DEFAULT_TEXT_COLOR = '#323233';\nexport const DEFAULT_AXIS_COLOR = '#c8c9cc';\nexport const DEFAULT_GRID_COLOR = '#ebedf0';\nexport const DEFAULT_FONT_FAMILY =\n \"-apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'PingFang SC', 'Microsoft YaHei', sans-serif\";\n\n/** 标题配置。 */\nexport interface TitleOption {\n text: string;\n fontSize?: number;\n color?: string;\n /** 标题与绘图区之间的留白,默认 16。 */\n padding?: number;\n}\n\n/** 图例配置。 */\nexport interface LegendOption {\n show?: boolean;\n /** 图例位置:顶部横向 / 底部横向 / 右侧纵向。 */\n position?: 'top' | 'bottom' | 'right';\n fontSize?: number;\n color?: string;\n /** 图例色块边长(正方形),默认 12。 */\n markerSize?: number;\n /** 图例项之间的水平间距,默认 16。 */\n itemGap?: number;\n}\n\n/** 数值轴(y 轴/雷达数值)配置。 */\nexport interface ValueAxisOption {\n /** 显式最小值;缺省自动 nice。 */\n min?: number;\n /** 显式最大值;缺省自动 nice。 */\n max?: number;\n /** 刻度分段数,默认 5。 */\n splitCount?: number;\n labelFontSize?: number;\n labelColor?: string;\n gridColor?: string;\n gridLineWidth?: number;\n /** 网格虚线,如 [4, 4];默认实线。 */\n gridLineDash?: number[];\n /** 是否显示网格,默认 true。 */\n showGrid?: boolean;\n /** 刻度标签格式化。 */\n format?: (value: number) => string;\n}\n\n/** 类目轴(x 轴/雷达指标)配置。 */\nexport interface CategoryAxisOption {\n labels: readonly string[];\n labelFontSize?: number;\n labelColor?: string;\n gridColor?: string;\n gridLineWidth?: number;\n /** 是否显示类目网格竖线,默认 false。 */\n showGrid?: boolean;\n}\n\n/** —— 折线图 —— */\n\nexport interface LineSeries {\n name?: string;\n data: readonly number[];\n color?: string;\n /** 平滑曲线(三次贝塞尔插值),默认 false。 */\n smooth?: boolean;\n /** 是否填充系列与数值轴之间的面积,默认 false。 */\n area?: boolean;\n /** 是否绘制数据点标记,默认 true。 */\n showSymbol?: boolean;\n lineWidth?: number;\n}\n\nexport interface LineChartOption {\n type: 'line';\n title?: TitleOption;\n legend?: LegendOption;\n xAxis: CategoryAxisOption;\n yAxis?: ValueAxisOption;\n series: readonly LineSeries[];\n /** 数值轴是否从 0 开始(数据全为正时强制含 0),默认 false(按数据范围紧凑显示)。 */\n startFromZero?: boolean;\n /** 背景色(如 'rgba(22,119,255,0.06)'),默认无。 */\n backgroundColor?: string;\n}\n\n/** —— 柱状图 —— */\n\nexport interface BarSeries {\n name?: string;\n data: readonly number[];\n color?: string;\n /** 堆叠组名;同名系列纵向堆叠。 */\n stack?: string;\n /** 柱体宽度(px),缺省按类目带自动计算。 */\n barWidth?: number;\n /** 柱体圆角,默认 0。 */\n borderRadius?: number;\n}\n\nexport interface BarChartOption {\n type: 'bar';\n title?: TitleOption;\n legend?: LegendOption;\n xAxis: CategoryAxisOption;\n yAxis?: ValueAxisOption;\n series: readonly BarSeries[];\n /** 横向柱状图(类目轴转纵向、数值轴转横向),默认 false。 */\n horizontal?: boolean;\n backgroundColor?: string;\n}\n\n/** —— 饼图 —— */\n\nexport interface PieDatum {\n name: string;\n value: number;\n color?: string;\n}\n\nexport interface PieChartOption {\n type: 'pie';\n data: readonly PieDatum[];\n title?: TitleOption;\n legend?: LegendOption;\n /** 外半径:数字(px)或百分比字符串(相对 min(width, height) / 2),默认 '60%'。 */\n radius?: number | string;\n /** 内半径:0 为饼图;>0 为环形图,默认 0。 */\n innerRadius?: number | string;\n /** 是否显示扇区标签(名称 + 百分比),默认 true。 */\n showLabel?: boolean;\n /** 标签位置:'inside' 画在扇区内(默认,白字);'outside' 画在扇区外并带引线(适合小扇区 / 长名称)。 */\n labelPosition?: 'inside' | 'outside';\n /** 外部标签引线沿平分线的长度(px),仅 labelPosition: 'outside' 生效,默认 14。 */\n labelLineLength?: number;\n /** 外部标签与引线端点的水平间距(px),仅 labelPosition: 'outside' 生效,默认 6。 */\n labelGap?: number;\n /** 外部标签引线颜色,默认 '#c0c4cc'。 */\n labelLineColor?: string;\n labelFontSize?: number;\n labelColor?: string;\n /** 起始角(弧度),默认 -Math.PI / 2(12 点方向),顺时针。 */\n startAngle?: number;\n backgroundColor?: string;\n}\n\n/** —— 雷达图 —— */\n\nexport interface RadarIndicator {\n name: string;\n /** 指标最大值;缺省取所有系列该指标的最大值。 */\n max?: number;\n}\n\nexport interface RadarSeries {\n name?: string;\n data: readonly number[];\n color?: string;\n /** 是否填充多边形区域,默认 true。 */\n area?: boolean;\n lineWidth?: number;\n}\n\nexport interface RadarChartOption {\n type: 'radar';\n indicators: readonly RadarIndicator[];\n series: readonly RadarSeries[];\n title?: TitleOption;\n legend?: LegendOption;\n /** 网格层数,默认 5。 */\n splitCount?: number;\n gridColor?: string;\n gridLineWidth?: number;\n labelFontSize?: number;\n labelColor?: string;\n /** 雷达中心半径(px),缺省取 min(width, height) / 2 的 60%。 */\n radius?: number;\n /** 起始角(弧度),默认 -Math.PI / 2(12 点方向),顺时针。 */\n startAngle?: number;\n backgroundColor?: string;\n}\n\nexport type ChartOption =\n | LineChartOption\n | BarChartOption\n | PieChartOption\n | RadarChartOption;\n\n/** 图表渲染上下文(适配器解析后的产物)。 */\nexport interface ChartRenderContext {\n /** 跨端 Canvas 2D 上下文。 */\n ctx: import('./core/canvas').ICanvas2D;\n /** 逻辑宽度(CSS px)。 */\n width: number;\n /** 逻辑高度(CSS px)。 */\n height: number;\n /** 设备像素比。 */\n dpr: number;\n /** 自定义色板,缺省使用 DEFAULT_PALETTE。 */\n palette?: readonly string[];\n}\n",
6
6
  "/**\n * 跨端 Canvas 2D 契约(ICanvas2D)。\n *\n * 这是 transone-chart 与平台解耦的唯一边界:\n * - Web:HTMLCanvasElement.getContext('2d') 天然满足,适配器薄封装\n * - 小程序:微信 / 阿里 / 字节的 Canvas 2D(type=\"2d\")节点上下文与 Web 接口基本对齐\n * - 未来原生 App:Skia / ArkUI 等原生 canvas 只需实现本接口即可接入同一套引擎\n *\n * 接口刻意收敛为图表实际需要的最小真子集,避免依赖平台各自的扩展 API;\n * 绘制一律使用「beginPath → 路径命令 → fill()/stroke() 无参」形式,\n * 不依赖 Path2D 等小程序端可能缺失的高级对象。\n */\n\nexport interface IGradient {\n addColorStop(offset: number, color: string): void;\n}\n\nexport type CanvasLineCap = 'butt' | 'round' | 'square';\nexport type CanvasLineJoin = 'bevel' | 'round' | 'miter';\nexport type CanvasTextAlign =\n | 'left'\n | 'right'\n | 'center'\n | 'start'\n | 'end';\nexport type CanvasTextBaseline =\n | 'top'\n | 'hanging'\n | 'middle'\n | 'alphabetic'\n | 'ideographic'\n | 'bottom';\n\nexport interface ICanvas2D {\n /* —— 状态管理 —— */\n save(): void;\n restore(): void;\n translate(x: number, y: number): void;\n scale(x: number, y: number): void;\n rotate(angle: number): void;\n\n /* —— 样式属性 —— */\n fillStyle: string | IGradient;\n strokeStyle: string | IGradient;\n lineWidth: number;\n lineCap: CanvasLineCap;\n lineJoin: CanvasLineJoin;\n globalAlpha: number;\n font: string;\n textAlign: CanvasTextAlign;\n textBaseline: CanvasTextBaseline;\n\n /* —— 路径 —— */\n beginPath(): void;\n closePath(): void;\n moveTo(x: number, y: number): void;\n lineTo(x: number, y: number): void;\n bezierCurveTo(\n cp1x: number,\n cp1y: number,\n cp2x: number,\n cp2y: number,\n x: number,\n y: number\n ): void;\n arc(\n x: number,\n y: number,\n radius: number,\n startAngle: number,\n endAngle: number,\n counterclockwise?: boolean\n ): void;\n arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void;\n rect(x: number, y: number, width: number, height: number): void;\n ellipse(\n x: number,\n y: number,\n radiusX: number,\n radiusY: number,\n rotation: number,\n startAngle: number,\n endAngle: number,\n counterclockwise?: boolean\n ): void;\n\n /* —— 绘制 —— */\n fill(): void;\n stroke(): void;\n fillRect(x: number, y: number, width: number, height: number): void;\n clearRect(x: number, y: number, width: number, height: number): void;\n clip(): void;\n setLineDash(segments: readonly number[]): void;\n\n /* —— 渐变 —— */\n createLinearGradient(\n x0: number,\n y0: number,\n x1: number,\n y1: number\n ): IGradient;\n createRadialGradient(\n x0: number,\n y0: number,\n r0: number,\n x1: number,\n y1: number,\n r1: number\n ): IGradient;\n\n /* —— 文字 —— */\n fillText(text: string, x: number, y: number, maxWidth?: number): void;\n measureText(text: string): { width: number };\n}\n\n/**\n * ICanvas2D 的便捷判断:任意对象只要实现了最小方法集即视为满足契约。\n * 用于适配器防御与测试 mock 的类型断言,不承担运行时校验。\n */\nexport function isCanvas2DLike(value: unknown): value is ICanvas2D {\n return (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as ICanvas2D).save === 'function' &&\n typeof (value as ICanvas2D).beginPath === 'function' &&\n typeof (value as ICanvas2D).fill === 'function' &&\n typeof (value as ICanvas2D).stroke === 'function' &&\n typeof (value as ICanvas2D).fillText === 'function'\n );\n}\n",
7
7
  "/**\n * 比例尺:把数据域(domain)映射到像素范围(range)。\n *\n * - LinearScale:数值 → 像素,自动 nice 刻度(0.5 / 1 / 2 / 5 步进)\n * - CategoryScale:类目索引 → 像素带(band),供柱状图计算柱宽\n *\n * 纯函数与轻量类实现,零平台依赖,便于单元测试。\n */\n\n/** 数值域映射接口。 */\nexport interface LinearScaleOptions {\n /** 数据最小值(未指定则按数据自动 nice)。 */\n min?: number;\n /** 数据最大值(未指定则按数据自动 nice)。 */\n max?: number;\n /** 期望刻度分段数,默认 5。 */\n splitCount?: number;\n}\n\nexport interface ScaleResult {\n /** 映射后的像素坐标(已夹取到 range 内)。 */\n scale(value: number): number;\n /** nice 后的实际最小值。 */\n min: number;\n /** nice 后的实际最大值。 */\n max: number;\n /** 刻度值数组(含 min/max)。 */\n ticks: number[];\n}\n\n/**\n * 计算 nice 刻度:把任意 [min, max] 数据范围规整为\"美观\"范围与刻度。\n * 步进从 1 / 2 / 5 × 10^n 中选择,保证刻度间距整齐。\n */\nexport function niceTicks(\n rawMin: number,\n rawMax: number,\n splitCount = 5\n): { min: number; max: number; step: number; ticks: number[] } {\n let min = rawMin;\n let max = rawMax;\n\n if (!Number.isFinite(min) || !Number.isFinite(max)) {\n throw new Error('niceTicks: domain must be finite numbers');\n }\n if (min === max) {\n // 常量数据:人为撑开一个单位区间,避免除以零\n const pad = Math.abs(min) > 1 ? Math.abs(min) * 0.1 : 1;\n min -= pad;\n max += pad;\n }\n if (min > max) {\n [min, max] = [max, min];\n }\n\n const span = max - min;\n const roughStep = span / Math.max(1, splitCount);\n const step = niceStep(roughStep);\n\n const niceMin = Math.floor(min / step) * step;\n const niceMax = Math.ceil(max / step) * step;\n\n const ticks: number[] = [];\n for (let v = niceMin; v <= niceMax + step * 1e-9; v += step) {\n // 浮点误差收敛:四舍五入到 step 的小数位数\n ticks.push(roundToStep(v, step));\n }\n\n return { min: niceMin, max: niceMax, step, ticks };\n}\n\nfunction niceStep(rough: number): number {\n const power = Math.pow(10, Math.floor(Math.log10(rough)));\n const fraction = rough / power;\n let niceFraction: number;\n if (fraction <= 1) {\n niceFraction = 1;\n } else if (fraction <= 2) {\n niceFraction = 2;\n } else if (fraction <= 5) {\n niceFraction = 5;\n } else {\n niceFraction = 10;\n }\n return niceFraction * power;\n}\n\nfunction roundToStep(value: number, step: number): number {\n const decimals = Math.max(0, -Math.floor(Math.log10(step)) + 1);\n return Number(value.toFixed(decimals));\n}\n\n/** 线性比例尺:domain → [rangeStart, rangeEnd],自动 nice。 */\nexport class LinearScale {\n public readonly min: number;\n public readonly max: number;\n public readonly ticks: number[];\n public readonly step: number;\n\n private readonly rangeStart: number;\n private readonly rangeEnd: number;\n\n public constructor(\n dataMin: number,\n dataMax: number,\n rangeStart: number,\n rangeEnd: number,\n options: LinearScaleOptions = {}\n ) {\n const { min: explicitMin, max: explicitMax, splitCount = 5 } = options;\n\n let min = explicitMin;\n let max = explicitMax;\n\n if (min === undefined || max === undefined) {\n const auto = niceTicks(dataMin, dataMax, splitCount);\n min = min ?? auto.min;\n max = max ?? auto.max;\n this.ticks = auto.ticks;\n this.step = auto.step;\n } else {\n this.step = (max - min) / Math.max(1, splitCount);\n this.ticks = [];\n for (let i = 0; i <= splitCount; i += 1) {\n this.ticks.push(min + i * this.step);\n }\n }\n\n this.min = min;\n this.max = max;\n this.rangeStart = rangeStart;\n this.rangeEnd = rangeEnd;\n }\n\n /** 数值 → 像素坐标(反向轴传 rangeEnd > rangeStart 即自然反转)。 */\n public scale(value: number): number {\n const ratio = (value - this.min) / (this.max - this.min);\n return this.rangeStart + ratio * (this.rangeEnd - this.rangeStart);\n }\n}\n\n/** 类目比例尺:N 个类目 → range 内均分带(band)。 */\nexport class CategoryScale {\n /** 每个类目带的像素宽度。 */\n public readonly bandWidth: number;\n /** 类目带之间的间距占比(0~1),默认 0.35。 */\n public readonly innerGapRatio: number;\n\n private readonly rangeStart: number;\n\n public constructor(\n public readonly categories: readonly unknown[],\n rangeStart: number,\n rangeEnd: number,\n innerGapRatio = 0.35\n ) {\n this.innerGapRatio = innerGapRatio;\n this.rangeStart = rangeStart;\n const count = Math.max(1, categories.length);\n this.bandWidth = (rangeEnd - rangeStart) / count;\n }\n\n /** 第 index 个类目的带起始(绝对像素坐标)。 */\n public bandStart(index: number): number {\n return this.rangeStart + this.bandWidth * index;\n }\n\n /** 第 index 个类目的带中心(绝对像素坐标)。 */\n public center(index: number): number {\n return this.bandStart(index) + this.bandWidth / 2;\n }\n\n /** 可用绘图宽度 = 带宽 × (1 - innerGapRatio)。 */\n public innerWidth(): number {\n return this.bandWidth * (1 - this.innerGapRatio);\n }\n\n /** 每组(多系列)子柱宽度:按系列数均分可用宽度,并预留 20% 间隙。 */\n public groupInnerWidth(groupCount: number): number {\n const usable = this.innerWidth();\n return usable / Math.max(1, groupCount) * 0.8;\n }\n}\n",
8
8
  "/**\n * 图表布局计算:在给定画布尺寸内,按 title / legend / 坐标轴标签区\n * 逐层扣除,得到最终绘图区(plot)。\n *\n * 布局只依赖注入的文本测量函数,不接触 Canvas 上下文本身,\n * 保持纯逻辑可测。\n */\n\nimport type { LegendOption, TitleOption } from '../types';\n\nexport interface Box {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface Padding {\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\nexport interface LayoutInput {\n width: number;\n height: number;\n title?: TitleOption;\n /** 图例配置(已解析 show/position)。 */\n legend?: LegendOption;\n /** 图例项名称列表(用于测量总宽度)。 */\n legendItems?: readonly string[];\n /** 数值轴刻度标签(测量最大宽度)。 */\n valueLabels?: readonly string[];\n /** 类目轴标签(测量最大宽度/高度)。 */\n categoryLabels?: readonly string[];\n /** 横向布局(横向柱状图):类目轴占左侧、数值轴占底部。 */\n horizontal?: boolean;\n /** 基础内边距,默认 { top: 12, right: 16, bottom: 12, left: 16 }。 */\n basePadding?: Partial<Padding>;\n}\n\nexport interface LayoutResult {\n /** 绘图区(含网格与数据系列)。 */\n plot: Box;\n /** 数值轴标签区(横轴图中在左侧,横向图中在底部)。 */\n valueAxisBox: Box;\n /** 类目轴标签区(横轴图中在底部,横向图中在左侧)。 */\n categoryAxisBox: Box;\n /** 标题占用区(若存在)。 */\n titleBox: Box | null;\n /** 图例占用区(若存在)。 */\n legendBox: Box | null;\n padding: Padding;\n}\n\nexport type MeasureTextFn = (text: string) => number;\n\nconst DEFAULT_PADDING: Padding = { top: 12, right: 16, bottom: 12, left: 16 };\nconst TITLE_PADDING = 16;\nconst AXIS_LABEL_PADDING = 8;\nconst LEGEND_PADDING = 12;\n\n/** 计算图例占用的行高(top/bottom 单行)或列宽(right 纵向)。 */\nfunction measureLegend(\n input: LayoutInput,\n measure: MeasureTextFn\n): { width: number; height: number } {\n const { legend } = input;\n const items = input.legendItems ?? [];\n const fontSize = legend?.fontSize ?? 12;\n const itemGap = legend?.itemGap ?? 16;\n const markerSize = legend?.markerSize ?? 12;\n\n if (legend?.position === 'right') {\n // 纵向:宽度 = 最宽项(色块 + 间距 + 文本),高度 = 项数 × 行高\n let maxWidth = 0;\n for (const item of items) {\n const w = markerSize + 6 + measure(item);\n if (w > maxWidth) {\n maxWidth = w;\n }\n }\n return {\n width: maxWidth + LEGEND_PADDING,\n height: Math.max(items.length * (fontSize + 8) + LEGEND_PADDING, 0),\n };\n }\n\n // 横向:单行居中,总宽 = 各项宽之和\n let totalWidth = 0;\n for (const item of items) {\n totalWidth += markerSize + 6 + measure(item) + itemGap;\n }\n if (totalWidth > 0) {\n totalWidth -= itemGap;\n }\n return { width: totalWidth, height: fontSize + LEGEND_PADDING + 4 };\n}\n\n/**\n * 计算完整布局。规则:\n * - title 固定顶部\n * - legend:top → title 之下;bottom → 底部;right → 最右侧\n * - 数值轴标签区与类目轴标签区按 horizontal 互换左右/底部\n */\nexport function computeLayout(\n input: LayoutInput,\n measure: MeasureTextFn\n): LayoutResult {\n const padding: Padding = { ...DEFAULT_PADDING, ...input.basePadding };\n\n let top = padding.top;\n let bottom = padding.bottom;\n let left = padding.left;\n let right = padding.right;\n\n let titleBox: Box | null = null;\n if (input.title?.text) {\n const fontSize = input.title.fontSize ?? 16;\n titleBox = { x: 0, y: 0, width: input.width, height: fontSize };\n top += fontSize + (input.title.padding ?? TITLE_PADDING);\n }\n\n let legendBox: Box | null = null;\n const legend = input.legend;\n if (legend && legend.show !== false && (input.legendItems?.length ?? 0) > 0) {\n const size = measureLegend(input, measure);\n const position = legend.position ?? 'top';\n if (position === 'top') {\n legendBox = {\n x: 0,\n y: titleBox ? titleBox.height : 0,\n width: input.width,\n height: size.height,\n };\n top += size.height;\n } else if (position === 'bottom') {\n legendBox = {\n x: 0,\n y: input.height - size.height,\n width: input.width,\n height: size.height,\n };\n bottom += size.height;\n } else {\n legendBox = {\n x: input.width - size.width,\n y: top,\n width: size.width,\n height: Math.max(0, input.height - top - bottom),\n };\n right += size.width;\n }\n }\n\n // 坐标轴标签区\n const labelFontSize = 11;\n let valueAxisWidth = 0;\n let categoryAxisHeight = 0;\n let valueAxisHeight = 0;\n let categoryAxisWidth = 0;\n\n const valueLabels = input.valueLabels ?? [];\n const categoryLabels = input.categoryLabels ?? [];\n\n if (input.horizontal) {\n // 横向图:类目轴在左侧(列宽),数值轴在底部(行高)\n if (categoryLabels.length > 0) {\n for (const label of categoryLabels) {\n const w = measure(label);\n if (w > categoryAxisWidth) {\n categoryAxisWidth = w;\n }\n }\n categoryAxisWidth += AXIS_LABEL_PADDING * 2;\n left += categoryAxisWidth;\n }\n if (valueLabels.length > 0) {\n valueAxisHeight = labelFontSize + AXIS_LABEL_PADDING * 2;\n bottom += valueAxisHeight;\n }\n } else {\n if (valueLabels.length > 0) {\n for (const label of valueLabels) {\n const w = measure(label);\n if (w > valueAxisWidth) {\n valueAxisWidth = w;\n }\n }\n valueAxisWidth += AXIS_LABEL_PADDING * 2;\n left += valueAxisWidth;\n }\n if (categoryLabels.length > 0) {\n categoryAxisHeight = labelFontSize + AXIS_LABEL_PADDING * 2;\n bottom += categoryAxisHeight;\n }\n }\n\n const plotWidth = Math.max(0, input.width - left - right);\n const plotHeight = Math.max(0, input.height - top - bottom);\n\n const plot: Box = { x: left, y: top, width: plotWidth, height: plotHeight };\n\n const valueAxisBox: Box = input.horizontal\n ? { x: plot.x, y: plot.y + plot.height, width: plotWidth, height: valueAxisHeight }\n : { x: plot.x - valueAxisWidth, y: top, width: valueAxisWidth, height: plotHeight };\n\n const categoryAxisBox: Box = input.horizontal\n ? { x: plot.x - categoryAxisWidth, y: top, width: categoryAxisWidth, height: plotHeight }\n : { x: left, y: plot.y + plotHeight, width: plotWidth, height: categoryAxisHeight };\n\n return {\n plot,\n valueAxisBox,\n categoryAxisBox,\n titleBox,\n legendBox,\n padding,\n };\n}\n",
9
+ "/**\n * 零依赖防抖工具。\n *\n * 用于高频触发场景(如窗口 / 容器尺寸变化)的合并调度:\n * 连续调用只会在停止触发 delay 毫秒后执行一次。\n */\n\nexport interface Debounced<T extends (...args: never[]) => unknown> {\n /** 触发一次;若已有待执行调用则重置计时器(合并连续触发)。 */\n run: (...args: Parameters<T>) => void;\n /** 取消尚未执行的调用。 */\n cancel: () => void;\n /** 是否已有待执行的调用。 */\n pending: () => boolean;\n}\n\ntype AnyFunction = (...args: any[]) => unknown;\n\nexport function debounce<T extends AnyFunction>(\n fn: T,\n delay: number\n): Debounced<T> {\n let timer: ReturnType<typeof setTimeout> | null = null;\n let lastArgs: Parameters<T> | null = null;\n\n return {\n run(...args: Parameters<T>): void {\n lastArgs = args;\n if (timer !== null) {\n clearTimeout(timer);\n }\n timer = setTimeout(() => {\n timer = null;\n if (lastArgs !== null) {\n const runArgs = lastArgs;\n lastArgs = null;\n fn(...runArgs);\n }\n }, delay);\n },\n cancel(): void {\n if (timer !== null) {\n clearTimeout(timer);\n timer = null;\n }\n lastArgs = null;\n },\n pending(): boolean {\n return timer !== null;\n },\n };\n}\n",
9
10
  "/**\n * 文字辅助:统一的 font 字符串拼接与文本测量。\n * 所有测量都走 ICanvas2D.measureText,保证跨端一致。\n */\n\nimport type { ICanvas2D } from './canvas';\nimport { DEFAULT_FONT_FAMILY } from '../types';\n\nexport interface TextStyle {\n fontSize?: number;\n family?: string;\n}\n\n/** 构造 canvas font 字符串(小程序与 Web 语义一致)。 */\nexport function toFont(size: number, family = DEFAULT_FONT_FAMILY): string {\n return `${size}px ${family}`;\n}\n\n/** 设置当前文字样式并返回 font 字符串。 */\nexport function applyFont(\n ctx: ICanvas2D,\n size: number,\n family = DEFAULT_FONT_FAMILY\n): string {\n const font = toFont(size, family);\n ctx.font = font;\n return font;\n}\n\n/** 测量文本宽度(自动设置 font)。 */\nexport function measureWidth(\n ctx: ICanvas2D,\n text: string,\n fontSize: number,\n family = DEFAULT_FONT_FAMILY\n): number {\n applyFont(ctx, fontSize, family);\n return ctx.measureText(text).width;\n}\n\n/**\n * 截断文本到指定像素宽度(超宽加省略号)。\n * 用于类目轴标签过长时避免溢出绘图区。\n */\nexport function truncate(\n ctx: ICanvas2D,\n text: string,\n maxWidth: number,\n fontSize: number,\n family = DEFAULT_FONT_FAMILY\n): string {\n if (maxWidth <= 0 || measureWidth(ctx, text, fontSize, family) <= maxWidth) {\n return text;\n }\n const ellipsis = '…';\n let lo = 0;\n let hi = text.length;\n let result = text;\n while (lo < hi) {\n const mid = Math.ceil((lo + hi) / 2);\n const candidate = text.slice(0, mid) + ellipsis;\n if (measureWidth(ctx, candidate, fontSize, family) <= maxWidth) {\n result = candidate;\n lo = mid;\n } else {\n hi = mid - 1;\n }\n }\n return result;\n}\n",
10
11
  "/**\n * 坐标轴绘制:数值轴(默认纵向居左、横向图居底)与类目轴(默认横向居底、\n * 横向图居左)。网格线与刻度标签统一在这里绘制,数据系列只画在 plot 内。\n *\n * 位置计算全部基于布局结果与比例尺,与平台无关。\n */\n\nimport type { ICanvas2D } from './canvas';\nimport type { Box } from './layout';\nimport { CategoryScale, LinearScale } from './scale';\nimport { applyFont } from './text';\nimport {\n DEFAULT_AXIS_COLOR,\n DEFAULT_GRID_COLOR,\n DEFAULT_TEXT_COLOR,\n} from '../types';\n\nexport interface ValueAxisDrawOptions {\n /** 绘图区。 */\n plot: Box;\n /** 数值比例尺:纵向图 range=[plot.bottom, plot.top],横向图 range=[plot.left, plot.right]。 */\n scale: LinearScale;\n /** 刻度标签(长度需与 scale.ticks 一致)。 */\n labels: readonly string[];\n /** 横向图:数值轴位于底部。 */\n horizontal?: boolean;\n axisColor?: string;\n labelFontSize?: number;\n labelColor?: string;\n gridColor?: string;\n gridLineWidth?: number;\n gridLineDash?: readonly number[];\n showGrid?: boolean;\n}\n\nexport interface CategoryAxisDrawOptions {\n plot: Box;\n scale: CategoryScale;\n labels: readonly string[];\n /** 横向图:类目轴位于左侧。 */\n horizontal?: boolean;\n axisColor?: string;\n labelFontSize?: number;\n labelColor?: string;\n gridColor?: string;\n gridLineWidth?: number;\n showGrid?: boolean;\n}\n\nexport class AxisDrawer {\n public constructor(private readonly ctx: ICanvas2D) {}\n\n /** 绘制数值轴:网格横线(或纵向图时) + 刻度标签。 */\n public drawValueAxis(options: ValueAxisDrawOptions): void {\n const {\n plot,\n scale,\n labels,\n horizontal = false,\n labelFontSize = 11,\n labelColor = DEFAULT_TEXT_COLOR,\n gridColor = DEFAULT_GRID_COLOR,\n gridLineWidth = 1,\n gridLineDash,\n showGrid = true,\n } = options;\n\n const ticks = scale.ticks;\n const { ctx } = this;\n\n for (let i = 0; i < ticks.length; i += 1) {\n const pos = scale.scale(ticks[i]);\n const label = labels[i] ?? String(ticks[i]);\n\n if (showGrid) {\n ctx.save();\n ctx.strokeStyle = gridColor;\n ctx.lineWidth = gridLineWidth;\n if (gridLineDash && gridLineDash.length > 0) {\n ctx.setLineDash(gridLineDash);\n }\n ctx.beginPath();\n if (horizontal) {\n ctx.moveTo(plot.x, pos);\n ctx.lineTo(plot.x + plot.width, pos);\n } else {\n ctx.moveTo(plot.x, pos);\n ctx.lineTo(plot.x + plot.width, pos);\n }\n ctx.stroke();\n ctx.restore();\n }\n\n applyFont(ctx, labelFontSize);\n ctx.fillStyle = labelColor;\n ctx.textBaseline = 'middle';\n if (horizontal) {\n ctx.textAlign = 'center';\n ctx.fillText(label, pos, plot.y + plot.height + 8);\n } else {\n ctx.textAlign = 'right';\n ctx.fillText(label, plot.x - 8, pos);\n }\n }\n }\n\n /** 绘制类目轴:轴线 + 类目标签(可选竖网格)。 */\n public drawCategoryAxis(options: CategoryAxisDrawOptions): void {\n const {\n plot,\n scale,\n labels,\n horizontal = false,\n axisColor = DEFAULT_AXIS_COLOR,\n labelFontSize = 11,\n labelColor = DEFAULT_TEXT_COLOR,\n gridColor = DEFAULT_GRID_COLOR,\n gridLineWidth = 1,\n showGrid = false,\n } = options;\n\n const { ctx } = this;\n const count = labels.length;\n\n if (showGrid) {\n ctx.save();\n ctx.strokeStyle = gridColor;\n ctx.lineWidth = gridLineWidth;\n ctx.beginPath();\n for (let i = 0; i < count; i += 1) {\n const pos = scale.center(i);\n if (horizontal) {\n ctx.moveTo(plot.x, pos);\n ctx.lineTo(plot.x + plot.width, pos);\n } else {\n ctx.moveTo(pos, plot.y);\n ctx.lineTo(pos, plot.y + plot.height);\n }\n }\n ctx.stroke();\n ctx.restore();\n }\n\n applyFont(ctx, labelFontSize);\n ctx.fillStyle = labelColor;\n ctx.textBaseline = 'middle';\n\n for (let i = 0; i < count; i += 1) {\n const pos = scale.center(i);\n if (horizontal) {\n ctx.textAlign = 'right';\n ctx.fillText(labels[i], plot.x - 8, pos);\n } else {\n ctx.textAlign = 'center';\n ctx.fillText(labels[i], pos, plot.y + plot.height + 8);\n }\n }\n\n // 轴线\n ctx.save();\n ctx.strokeStyle = axisColor;\n ctx.lineWidth = 1;\n ctx.beginPath();\n if (horizontal) {\n ctx.moveTo(plot.x, plot.y);\n ctx.lineTo(plot.x, plot.y + plot.height);\n } else {\n ctx.moveTo(plot.x, plot.y + plot.height);\n ctx.lineTo(plot.x + plot.width, plot.y + plot.height);\n }\n ctx.stroke();\n ctx.restore();\n }\n}\n",
11
12
  "/**\n * 图例绘制:色块 + 文本。\n * - top / bottom:横向单行居中排布\n * - right:纵向排布\n */\n\nimport type { ICanvas2D } from './canvas';\nimport type { Box } from './layout';\nimport { applyFont, measureWidth } from './text';\nimport { DEFAULT_TEXT_COLOR } from '../types';\n\nexport interface LegendItem {\n name: string;\n color: string;\n}\n\nexport interface LegendDrawOptions {\n box: Box;\n items: readonly LegendItem[];\n position?: 'top' | 'bottom' | 'right';\n fontSize?: number;\n color?: string;\n markerSize?: number;\n itemGap?: number;\n}\n\nexport class LegendDrawer {\n public constructor(private readonly ctx: ICanvas2D) {}\n\n public draw(options: LegendDrawOptions): void {\n const {\n box,\n items,\n position = 'top',\n fontSize = 12,\n color = DEFAULT_TEXT_COLOR,\n markerSize = 12,\n itemGap = 16,\n } = options;\n\n if (items.length === 0) {\n return;\n }\n\n const { ctx } = this;\n applyFont(ctx, fontSize);\n\n if (position === 'right') {\n // 纵向:从顶部开始逐项排列\n let y = box.y + fontSize / 2 + 4;\n for (const item of items) {\n this.drawItem(item, box.x, y, fontSize, markerSize, color);\n y += fontSize + 8;\n }\n return;\n }\n\n // 横向:居中排布\n let totalWidth = 0;\n for (const item of items) {\n totalWidth += markerSize + 6 + measureWidth(ctx, item.name, fontSize) + itemGap;\n }\n totalWidth -= itemGap;\n\n let x = box.x + (box.width - totalWidth) / 2;\n const y = box.y + box.height / 2;\n\n for (const item of items) {\n this.drawItem(item, x, y, fontSize, markerSize, color);\n x += markerSize + 6 + measureWidth(ctx, item.name, fontSize) + itemGap;\n }\n }\n\n private drawItem(\n item: LegendItem,\n x: number,\n centerY: number,\n _fontSize: number,\n markerSize: number,\n color: string\n ): void {\n const { ctx } = this;\n // 色块\n ctx.fillStyle = item.color;\n ctx.beginPath();\n ctx.rect(x, centerY - markerSize / 2, markerSize, markerSize);\n ctx.fill();\n // 文本\n ctx.fillStyle = color;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n ctx.fillText(item.name, x + markerSize + 6, centerY);\n }\n}\n",
12
- "/**\n * ChartBase:所有图表的抽象基类,负责统一渲染管线。\n *\n * 渲染管线(render):\n * save → scale(dpr) → clear → 背景 → 布局计算\n * → 标题 → 图例 → 笛卡尔坐标轴(折线/柱状)\n * → drawSeries(子类策略) → restore\n *\n * 生命周期:setOption 增量更新 → render;resize 改逻辑尺寸 → render;\n * destroy 释放。所有坐标均为逻辑像素(CSS px),DPR 由管线统一缩放。\n */\n\nimport type { ICanvas2D } from './canvas';\nimport { AxisDrawer } from './axis';\nimport {\n computeLayout,\n type LayoutInput,\n type LayoutResult,\n} from './layout';\nimport { LegendDrawer, type LegendItem } from './legend';\nimport { CategoryScale, LinearScale } from './scale';\nimport { applyFont, measureWidth } from './text';\nimport {\n DEFAULT_PALETTE,\n type CategoryAxisOption,\n type ChartOption,\n type ChartRenderContext,\n type LegendOption,\n type TitleOption,\n type ValueAxisOption,\n} from '../types';\n\nexport interface CartesianScales {\n value: LinearScale;\n category: CategoryScale;\n}\n\n/**\n * 子类需要实现的钩子:\n * - drawSeries:绘制数据系列(核心策略)\n * - hasCartesianAxis:是否需要坐标轴(饼图/雷达返回 false)\n * - getValueDomain:数值轴数据域(有轴时)\n * - getCategoryLabels:类目轴标签(有轴时)\n * - isHorizontal:横向布局(横向柱状图)\n */\nexport abstract class ChartBase<T extends ChartOption> {\n protected readonly ctx: ICanvas2D;\n protected option: T;\n protected width: number;\n protected height: number;\n protected dpr: number;\n protected readonly palette: readonly string[];\n\n /** 每次 render 构建的笛卡尔比例尺,供 drawSeries 读取。 */\n protected cartesian: CartesianScales | null = null;\n\n private destroyed = false;\n\n public constructor(context: ChartRenderContext, option: T) {\n this.ctx = context.ctx;\n this.option = option;\n this.width = context.width;\n this.height = context.height;\n this.dpr = context.dpr;\n this.palette = context.palette ?? DEFAULT_PALETTE;\n }\n\n /* —— 生命周期 —— */\n\n public setOption(option: Partial<T>): this {\n this.option = { ...this.option, ...option };\n return this;\n }\n\n public resize(width: number, height: number): this {\n this.width = Math.max(0, width);\n this.height = Math.max(0, height);\n return this;\n }\n\n public render(): this {\n if (this.destroyed) {\n return this;\n }\n const { ctx, width, height, dpr } = this;\n\n ctx.save();\n ctx.scale(dpr, dpr);\n ctx.clearRect(0, 0, width, height);\n\n const background = this.getBackgroundColor();\n if (background) {\n ctx.fillStyle = background;\n ctx.fillRect(0, 0, width, height);\n }\n\n const layout = this.computeLayout();\n this.drawTitle(layout);\n this.drawLegend(layout);\n\n if (this.hasCartesianAxis()) {\n this.cartesian = this.buildCartesianScales(layout);\n this.drawCartesianAxis(layout);\n } else {\n this.cartesian = null;\n }\n\n this.drawSeries(ctx, layout, this.option);\n\n ctx.restore();\n return this;\n }\n\n public destroy(): void {\n this.destroyed = true;\n }\n\n public isDestroyed(): boolean {\n return this.destroyed;\n }\n\n /* —— 子类策略钩子 —— */\n\n protected abstract drawSeries(\n ctx: ICanvas2D,\n layout: LayoutResult,\n option: T\n ): void;\n\n protected hasCartesianAxis(): boolean {\n return true;\n }\n\n protected getValueDomain(): { min: number; max: number } {\n return { min: 0, max: 1 };\n }\n\n protected getCategoryLabels(): readonly string[] {\n return [];\n }\n\n protected isHorizontal(): boolean {\n return false;\n }\n\n /* —— 可覆盖的配置来源 —— */\n\n protected getBackgroundColor(): string | undefined {\n return (this.option as { backgroundColor?: string }).backgroundColor;\n }\n\n protected getTitle(): TitleOption | undefined {\n return (this.option as { title?: TitleOption }).title;\n }\n\n protected getLegend(): LegendOption | undefined {\n const legend = (this.option as { legend?: LegendOption }).legend;\n if (legend) {\n return legend;\n }\n // 未显式配置图例但存在命名系列/扇区时,默认在顶部显示\n return this.getLegendItems().length > 0 ? { position: 'top' } : undefined;\n }\n\n protected getLegendItems(): LegendItem[] {\n return [];\n }\n\n protected getValueAxis(): ValueAxisOption | undefined {\n return (this.option as { yAxis?: ValueAxisOption }).yAxis;\n }\n\n protected getCategoryAxis(): CategoryAxisOption | undefined {\n return (this.option as { xAxis?: CategoryAxisOption }).xAxis;\n }\n\n /* —— 渲染管线内部 —— */\n\n protected computeLayout(): LayoutResult {\n const input = this.buildLayoutInput();\n const measure = (text: string): number =>\n measureWidth(this.ctx, text, 11);\n return computeLayout(input, measure);\n }\n\n protected buildLayoutInput(): LayoutInput {\n // 轴标签区需要知道刻度标签宽度,而刻度与布局无关(仅依赖数据域),\n // 因此用占位 range 预计算刻度 → 布局 → 最终 scale 两阶段完成。\n const horizontal = this.isHorizontal();\n const hasAxis = this.hasCartesianAxis();\n return {\n width: this.width,\n height: this.height,\n title: this.getTitle(),\n legend: this.getLegend(),\n legendItems: this.getLegendItems().map((item) => item.name),\n valueLabels: hasAxis && !horizontal ? this.computeValueLabels() : undefined,\n categoryLabels: hasAxis ? this.getCategoryLabels() : undefined,\n horizontal,\n };\n }\n\n /** 用占位 range 预计算数值刻度标签(仅用于测量,不参与最终映射)。 */\n protected computeValueLabels(): string[] {\n const domain = this.getValueDomain();\n const valueAxis = this.getValueAxis();\n const probe = new LinearScale(domain.min, domain.max, 0, 1, {\n min: valueAxis?.min,\n max: valueAxis?.max,\n splitCount: valueAxis?.splitCount,\n });\n return probe.ticks.map((tick) =>\n valueAxis?.format ? valueAxis.format(tick) : String(tick)\n );\n }\n\n protected drawTitle(layout: LayoutResult): void {\n const title = this.getTitle();\n if (!title?.text || !layout.titleBox) {\n return;\n }\n const { ctx } = this;\n applyFont(ctx, title.fontSize ?? 16);\n ctx.fillStyle = title.color ?? '#323233';\n ctx.textAlign = 'center';\n ctx.textBaseline = 'top';\n ctx.fillText(title.text, this.width / 2, layout.titleBox.y);\n }\n\n protected drawLegend(layout: LayoutResult): void {\n const legend = this.getLegend();\n if (legend?.show === false || !layout.legendBox) {\n return;\n }\n const items = this.getLegendItems();\n if (items.length === 0) {\n return;\n }\n new LegendDrawer(this.ctx).draw({\n box: layout.legendBox,\n items,\n position: legend?.position ?? 'top',\n fontSize: legend?.fontSize,\n color: legend?.color,\n markerSize: legend?.markerSize,\n itemGap: legend?.itemGap,\n });\n }\n\n protected buildCartesianScales(layout: LayoutResult): CartesianScales {\n const { plot } = layout;\n const horizontal = this.isHorizontal();\n const domain = this.getValueDomain();\n const categories = this.getCategoryLabels();\n const valueAxis = this.getValueAxis();\n\n const value = new LinearScale(\n domain.min,\n domain.max,\n horizontal ? plot.x : plot.y + plot.height,\n horizontal ? plot.x + plot.width : plot.y,\n { min: valueAxis?.min, max: valueAxis?.max, splitCount: valueAxis?.splitCount }\n );\n\n const category = new CategoryScale(\n categories,\n horizontal ? plot.y : plot.x,\n horizontal ? plot.y + plot.height : plot.x + plot.width\n );\n\n return { value, category };\n }\n\n protected drawCartesianAxis(layout: LayoutResult): void {\n const scales = this.cartesian;\n if (!scales) {\n return;\n }\n const { ctx } = this;\n const { plot } = layout;\n const horizontal = this.isHorizontal();\n const valueAxis = this.getValueAxis();\n const categoryAxis = this.getCategoryAxis();\n const categories = this.getCategoryLabels();\n\n const drawer = new AxisDrawer(ctx);\n\n const valueLabels = scales.value.ticks.map((tick) =>\n valueAxis?.format ? valueAxis.format(tick) : String(tick)\n );\n\n drawer.drawValueAxis({\n plot,\n scale: scales.value,\n labels: valueLabels,\n horizontal,\n labelFontSize: valueAxis?.labelFontSize,\n labelColor: valueAxis?.labelColor,\n gridColor: valueAxis?.gridColor,\n gridLineWidth: valueAxis?.gridLineWidth,\n gridLineDash: valueAxis?.gridLineDash,\n showGrid: valueAxis?.showGrid ?? true,\n });\n\n drawer.drawCategoryAxis({\n plot,\n scale: scales.category,\n labels: categories,\n horizontal,\n labelFontSize: categoryAxis?.labelFontSize,\n labelColor: categoryAxis?.labelColor,\n gridColor: categoryAxis?.gridColor,\n gridLineWidth: categoryAxis?.gridLineWidth,\n showGrid: categoryAxis?.showGrid ?? false,\n });\n }\n\n /** 系列取色:显式 color 优先,否则按索引取色板。 */\n protected seriesColor(index: number, color?: string): string {\n return color ?? this.palette[index % this.palette.length];\n }\n}\n",
13
+ "/**\n * ChartBase:所有图表的抽象基类,负责统一渲染管线。\n *\n * 渲染管线(render):\n * save → scale(dpr) → clear → 背景 → 布局计算\n * → 标题 → 图例 → 笛卡尔坐标轴(折线/柱状)\n * → drawSeries(子类策略) → restore\n *\n * 生命周期:setOption 增量更新 → render;resize 改逻辑尺寸 → render;\n * destroy 释放。所有坐标均为逻辑像素(CSS px),DPR 由管线统一缩放。\n */\n\nimport type { ICanvas2D } from './canvas';\nimport { AxisDrawer } from './axis';\nimport {\n computeLayout,\n type LayoutInput,\n type LayoutResult,\n} from './layout';\nimport { LegendDrawer, type LegendItem } from './legend';\nimport { CategoryScale, LinearScale } from './scale';\nimport { applyFont, measureWidth } from './text';\nimport {\n DEFAULT_PALETTE,\n type CategoryAxisOption,\n type ChartOption,\n type ChartRenderContext,\n type LegendOption,\n type TitleOption,\n type ValueAxisOption,\n} from '../types';\n\nexport interface CartesianScales {\n value: LinearScale;\n category: CategoryScale;\n}\n\n/**\n * 子类需要实现的钩子:\n * - drawSeries:绘制数据系列(核心策略)\n * - hasCartesianAxis:是否需要坐标轴(饼图/雷达返回 false)\n * - getValueDomain:数值轴数据域(有轴时)\n * - getCategoryLabels:类目轴标签(有轴时)\n * - isHorizontal:横向布局(横向柱状图)\n */\nexport abstract class ChartBase<T extends ChartOption> {\n protected readonly ctx: ICanvas2D;\n protected option: T;\n protected width: number;\n protected height: number;\n protected dpr: number;\n protected readonly palette: readonly string[];\n\n /** 每次 render 构建的笛卡尔比例尺,供 drawSeries 读取。 */\n protected cartesian: CartesianScales | null = null;\n\n private destroyed = false;\n\n public constructor(context: ChartRenderContext, option: T) {\n this.ctx = context.ctx;\n this.option = option;\n this.width = context.width;\n this.height = context.height;\n this.dpr = context.dpr;\n this.palette = context.palette ?? DEFAULT_PALETTE;\n }\n\n /* —— 生命周期 —— */\n\n public setOption(option: Partial<T>): this {\n this.option = { ...this.option, ...option };\n return this;\n }\n\n public resize(width: number, height: number, dpr?: number): this {\n this.width = Math.max(0, width);\n this.height = Math.max(0, height);\n // dpr 变化(如窗口跨屏移动)时同步更新,绘制管线按新 dpr 缩放\n if (dpr !== undefined && Number.isFinite(dpr) && dpr > 0) {\n this.dpr = dpr;\n }\n return this;\n }\n\n public render(): this {\n if (this.destroyed) {\n return this;\n }\n const { ctx, width, height, dpr } = this;\n\n ctx.save();\n ctx.scale(dpr, dpr);\n ctx.clearRect(0, 0, width, height);\n\n const background = this.getBackgroundColor();\n if (background) {\n ctx.fillStyle = background;\n ctx.fillRect(0, 0, width, height);\n }\n\n const layout = this.computeLayout();\n this.drawTitle(layout);\n this.drawLegend(layout);\n\n if (this.hasCartesianAxis()) {\n this.cartesian = this.buildCartesianScales(layout);\n this.drawCartesianAxis(layout);\n } else {\n this.cartesian = null;\n }\n\n this.drawSeries(ctx, layout, this.option);\n\n ctx.restore();\n return this;\n }\n\n public destroy(): void {\n this.destroyed = true;\n }\n\n public isDestroyed(): boolean {\n return this.destroyed;\n }\n\n /* —— 子类策略钩子 —— */\n\n protected abstract drawSeries(\n ctx: ICanvas2D,\n layout: LayoutResult,\n option: T\n ): void;\n\n protected hasCartesianAxis(): boolean {\n return true;\n }\n\n protected getValueDomain(): { min: number; max: number } {\n return { min: 0, max: 1 };\n }\n\n protected getCategoryLabels(): readonly string[] {\n return [];\n }\n\n protected isHorizontal(): boolean {\n return false;\n }\n\n /* —— 可覆盖的配置来源 —— */\n\n protected getBackgroundColor(): string | undefined {\n return (this.option as { backgroundColor?: string }).backgroundColor;\n }\n\n protected getTitle(): TitleOption | undefined {\n return (this.option as { title?: TitleOption }).title;\n }\n\n protected getLegend(): LegendOption | undefined {\n const legend = (this.option as { legend?: LegendOption }).legend;\n if (legend) {\n return legend;\n }\n // 未显式配置图例但存在命名系列/扇区时,默认在顶部显示\n return this.getLegendItems().length > 0 ? { position: 'top' } : undefined;\n }\n\n protected getLegendItems(): LegendItem[] {\n return [];\n }\n\n protected getValueAxis(): ValueAxisOption | undefined {\n return (this.option as { yAxis?: ValueAxisOption }).yAxis;\n }\n\n protected getCategoryAxis(): CategoryAxisOption | undefined {\n return (this.option as { xAxis?: CategoryAxisOption }).xAxis;\n }\n\n /* —— 渲染管线内部 —— */\n\n protected computeLayout(): LayoutResult {\n const input = this.buildLayoutInput();\n const measure = (text: string): number =>\n measureWidth(this.ctx, text, 11);\n return computeLayout(input, measure);\n }\n\n protected buildLayoutInput(): LayoutInput {\n // 轴标签区需要知道刻度标签宽度,而刻度与布局无关(仅依赖数据域),\n // 因此用占位 range 预计算刻度 → 布局 → 最终 scale 两阶段完成。\n const horizontal = this.isHorizontal();\n const hasAxis = this.hasCartesianAxis();\n return {\n width: this.width,\n height: this.height,\n title: this.getTitle(),\n legend: this.getLegend(),\n legendItems: this.getLegendItems().map((item) => item.name),\n valueLabels: hasAxis && !horizontal ? this.computeValueLabels() : undefined,\n categoryLabels: hasAxis ? this.getCategoryLabels() : undefined,\n horizontal,\n };\n }\n\n /** 用占位 range 预计算数值刻度标签(仅用于测量,不参与最终映射)。 */\n protected computeValueLabels(): string[] {\n const domain = this.getValueDomain();\n const valueAxis = this.getValueAxis();\n const probe = new LinearScale(domain.min, domain.max, 0, 1, {\n min: valueAxis?.min,\n max: valueAxis?.max,\n splitCount: valueAxis?.splitCount,\n });\n return probe.ticks.map((tick) =>\n valueAxis?.format ? valueAxis.format(tick) : String(tick)\n );\n }\n\n protected drawTitle(layout: LayoutResult): void {\n const title = this.getTitle();\n if (!title?.text || !layout.titleBox) {\n return;\n }\n const { ctx } = this;\n applyFont(ctx, title.fontSize ?? 16);\n ctx.fillStyle = title.color ?? '#323233';\n ctx.textAlign = 'center';\n ctx.textBaseline = 'top';\n ctx.fillText(title.text, this.width / 2, layout.titleBox.y);\n }\n\n protected drawLegend(layout: LayoutResult): void {\n const legend = this.getLegend();\n if (legend?.show === false || !layout.legendBox) {\n return;\n }\n const items = this.getLegendItems();\n if (items.length === 0) {\n return;\n }\n new LegendDrawer(this.ctx).draw({\n box: layout.legendBox,\n items,\n position: legend?.position ?? 'top',\n fontSize: legend?.fontSize,\n color: legend?.color,\n markerSize: legend?.markerSize,\n itemGap: legend?.itemGap,\n });\n }\n\n protected buildCartesianScales(layout: LayoutResult): CartesianScales {\n const { plot } = layout;\n const horizontal = this.isHorizontal();\n const domain = this.getValueDomain();\n const categories = this.getCategoryLabels();\n const valueAxis = this.getValueAxis();\n\n const value = new LinearScale(\n domain.min,\n domain.max,\n horizontal ? plot.x : plot.y + plot.height,\n horizontal ? plot.x + plot.width : plot.y,\n { min: valueAxis?.min, max: valueAxis?.max, splitCount: valueAxis?.splitCount }\n );\n\n const category = new CategoryScale(\n categories,\n horizontal ? plot.y : plot.x,\n horizontal ? plot.y + plot.height : plot.x + plot.width\n );\n\n return { value, category };\n }\n\n protected drawCartesianAxis(layout: LayoutResult): void {\n const scales = this.cartesian;\n if (!scales) {\n return;\n }\n const { ctx } = this;\n const { plot } = layout;\n const horizontal = this.isHorizontal();\n const valueAxis = this.getValueAxis();\n const categoryAxis = this.getCategoryAxis();\n const categories = this.getCategoryLabels();\n\n const drawer = new AxisDrawer(ctx);\n\n const valueLabels = scales.value.ticks.map((tick) =>\n valueAxis?.format ? valueAxis.format(tick) : String(tick)\n );\n\n drawer.drawValueAxis({\n plot,\n scale: scales.value,\n labels: valueLabels,\n horizontal,\n labelFontSize: valueAxis?.labelFontSize,\n labelColor: valueAxis?.labelColor,\n gridColor: valueAxis?.gridColor,\n gridLineWidth: valueAxis?.gridLineWidth,\n gridLineDash: valueAxis?.gridLineDash,\n showGrid: valueAxis?.showGrid ?? true,\n });\n\n drawer.drawCategoryAxis({\n plot,\n scale: scales.category,\n labels: categories,\n horizontal,\n labelFontSize: categoryAxis?.labelFontSize,\n labelColor: categoryAxis?.labelColor,\n gridColor: categoryAxis?.gridColor,\n gridLineWidth: categoryAxis?.gridLineWidth,\n showGrid: categoryAxis?.showGrid ?? false,\n });\n }\n\n /** 系列取色:显式 color 优先,否则按索引取色板。 */\n protected seriesColor(index: number, color?: string): string {\n return color ?? this.palette[index % this.palette.length];\n }\n}\n",
13
14
  "/**\n * 折线图:多系列 / 平滑曲线 / 面积填充 / 数据点标记。\n * 类目 x 轴 + 数值 y 轴,复用 ChartBase 的笛卡尔管线。\n */\n\nimport type { ICanvas2D } from '../core/canvas';\nimport { ChartBase } from '../core/chart';\nimport type { LayoutResult } from '../core/layout';\nimport type { LegendItem } from '../core/legend';\nimport type { LineChartOption } from '../types';\n\ninterface Point {\n x: number;\n y: number;\n}\n\nexport class LineChart extends ChartBase<LineChartOption> {\n protected getValueDomain(): { min: number; max: number } {\n const { series, yAxis, startFromZero = false } = this.option;\n let min = Infinity;\n let max = -Infinity;\n for (const s of series) {\n for (const value of s.data) {\n if (value < min) {\n min = value;\n }\n if (value > max) {\n max = value;\n }\n }\n }\n if (!Number.isFinite(min) || !Number.isFinite(max)) {\n return { min: 0, max: 1 };\n }\n if (startFromZero && min > 0) {\n min = 0;\n }\n if (yAxis?.min !== undefined) {\n min = Math.min(min, yAxis.min);\n }\n if (yAxis?.max !== undefined) {\n max = Math.max(max, yAxis.max);\n }\n return { min, max };\n }\n\n protected getCategoryLabels(): readonly string[] {\n return this.option.xAxis.labels;\n }\n\n protected getLegendItems(): LegendItem[] {\n return this.option.series\n .filter((s) => s.name)\n .map((s, i) => ({\n name: s.name as string,\n color: this.seriesColor(i, s.color),\n }));\n }\n\n protected drawSeries(\n ctx: ICanvas2D,\n layout: LayoutResult,\n option: LineChartOption\n ): void {\n const scales = this.cartesian;\n if (!scales) {\n return;\n }\n const { plot } = layout;\n const { value, category } = scales;\n\n const pointsPerSeries: Point[][] = option.series.map((series) =>\n series.data.map((d, i) => ({\n x: category.center(i),\n y: value.scale(d),\n }))\n );\n\n option.series.forEach((series, index) => {\n const points = pointsPerSeries[index];\n if (points.length === 0) {\n return;\n }\n const color = this.seriesColor(index, series.color);\n const lineWidth = series.lineWidth ?? 2;\n\n // 面积填充(先画,保证在折线之下)\n if (series.area) {\n ctx.save();\n ctx.fillStyle = color;\n ctx.globalAlpha = 0.15;\n ctx.beginPath();\n this.tracePath(ctx, points, series.smooth ?? false);\n ctx.lineTo(points[points.length - 1].x, plot.y + plot.height);\n ctx.lineTo(points[0].x, plot.y + plot.height);\n ctx.closePath();\n ctx.fill();\n ctx.restore();\n }\n\n // 折线\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.lineJoin = 'round';\n ctx.lineCap = 'round';\n ctx.beginPath();\n this.tracePath(ctx, points, series.smooth ?? false);\n ctx.stroke();\n ctx.restore();\n\n // 数据点标记\n if (series.showSymbol !== false) {\n ctx.save();\n ctx.fillStyle = color;\n for (const p of points) {\n ctx.beginPath();\n ctx.arc(p.x, p.y, Math.max(2.5, lineWidth + 0.5), 0, Math.PI * 2);\n ctx.fill();\n }\n ctx.restore();\n }\n });\n }\n\n /** 折线路径:直线或 Catmull-Rom 平滑插值(三次贝塞尔)。 */\n private tracePath(ctx: ICanvas2D, points: readonly Point[], smooth: boolean): void {\n if (points.length === 0) {\n return;\n }\n ctx.moveTo(points[0].x, points[0].y);\n if (!smooth || points.length < 3) {\n for (let i = 1; i < points.length; i += 1) {\n ctx.lineTo(points[i].x, points[i].y);\n }\n return;\n }\n\n for (let i = 0; i < points.length - 1; i += 1) {\n const p0 = points[Math.max(0, i - 1)];\n const p1 = points[i];\n const p2 = points[i + 1];\n const p3 = points[Math.min(points.length - 1, i + 2)];\n\n const cp1x = p1.x + (p2.x - p0.x) / 6;\n const cp1y = p1.y + (p2.y - p0.y) / 6;\n const cp2x = p2.x - (p3.x - p1.x) / 6;\n const cp2y = p2.y - (p3.y - p1.y) / 6;\n\n ctx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, p2.x, p2.y);\n }\n }\n}\n",
14
- "/**\n * 柱状图:纵向 / 横向,支持多系列分组与 stack 堆叠。\n *\n * 几何规则:\n * - 分组:同一类目内多个系列并排,子柱宽 = 类目带宽 × (1 - gap) / 系列数 × 0.8\n * - 堆叠:同名 stack 系列共用一根柱,后一个系列从前一个的顶端继续累加\n * - 数值轴强制包含 0(柱形高度必须从零线起算才有意义)\n */\n\nimport type { ICanvas2D } from '../core/canvas';\nimport { ChartBase } from '../core/chart';\nimport type { LayoutResult } from '../core/layout';\nimport type { LegendItem } from '../core/legend';\nimport type { BarChartOption, BarSeries } from '../types';\n\n/** 柱体在类目带内的水平偏移与宽度(纵向)或垂直偏移与高度(横向)。 */\ninterface Slot {\n offset: number;\n size: number;\n}\n\nexport class BarChart extends ChartBase<BarChartOption> {\n protected isHorizontal(): boolean {\n return this.option.horizontal ?? false;\n }\n\n protected getValueDomain(): { min: number; max: number } {\n const { series, yAxis } = this.option;\n let max = 0;\n let min = 0;\n\n // 堆叠:按 stack 组在类目上累加正负\n const stackGroups = groupStacks(series);\n const categoryCount = Math.max(\n 0,\n ...series.map((s) => s.data.length)\n );\n\n for (let i = 0; i < categoryCount; i += 1) {\n for (const group of stackGroups) {\n let positive = 0;\n let negative = 0;\n for (const s of group) {\n const v = s.data[i] ?? 0;\n if (v >= 0) {\n positive += v;\n } else {\n negative += v;\n }\n }\n if (positive > max) {\n max = positive;\n }\n if (negative < min) {\n min = negative;\n }\n }\n }\n\n if (yAxis?.min !== undefined) {\n min = Math.min(min, yAxis.min);\n }\n if (yAxis?.max !== undefined) {\n max = Math.max(max, yAxis.max);\n }\n return { min, max };\n }\n\n protected getCategoryLabels(): readonly string[] {\n return this.option.xAxis.labels;\n }\n\n protected getLegendItems(): LegendItem[] {\n return this.option.series\n .filter((s) => s.name)\n .map((s, i) => ({\n name: s.name as string,\n color: this.seriesColor(i, s.color),\n }));\n }\n\n protected drawSeries(\n ctx: ICanvas2D,\n layout: LayoutResult,\n option: BarChartOption\n ): void {\n const scales = this.cartesian;\n if (!scales) {\n return;\n }\n void layout; // 柱体几何全部由比例尺绝对坐标决定,无需 plot 引用\n const { value, category } = scales;\n const horizontal = option.horizontal ?? false;\n\n const stackGroups = groupStacks(option.series);\n const categoryCount = option.xAxis.labels.length;\n\n for (let i = 0; i < categoryCount; i += 1) {\n // 每个类目带内:无堆叠时按系列分组并排;有堆叠时按 stack 组并排\n const groups = stackGroups;\n const seriesCount = groups.length;\n const explicitWidth = option.series\n .map((s) => s.barWidth)\n .find((w) => w !== undefined && w > 0);\n const slot = this.computeSlot(category, seriesCount, explicitWidth);\n\n groups.forEach((group, groupIndex) => {\n const slotOffset = slot.offset + groupIndex * slot.size;\n let cursor = 0; // 堆叠游标(绝对值累加)\n\n group.forEach((series) => {\n const raw = series.data[i] ?? 0;\n const color = this.seriesColor(\n option.series.indexOf(series),\n series.color\n );\n\n if (horizontal) {\n const x0 = value.scale(0);\n const x1 = value.scale(cursor + raw);\n const base = Math.min(x0, x1);\n const width = Math.abs(x1 - x0);\n const y = category.bandStart(i) + slotOffset;\n this.drawBar(ctx, {\n x: base,\n y,\n width,\n height: slot.size,\n radius: series.borderRadius ?? 0,\n color,\n roundSide: raw >= 0 ? 'right' : 'left',\n });\n } else {\n const y0 = value.scale(cursor);\n const y1 = value.scale(cursor + raw);\n const top = Math.min(y0, y1);\n const height = Math.abs(y1 - y0);\n const x = category.bandStart(i) + slotOffset;\n this.drawBar(ctx, {\n x,\n y: top,\n width: slot.size,\n height,\n radius: series.borderRadius ?? 0,\n color,\n roundSide: raw >= 0 ? 'top' : 'bottom',\n });\n }\n\n cursor += raw;\n });\n });\n }\n }\n\n private computeSlot(\n category: { bandStart(index: number): number; innerWidth(): number },\n groupCount: number,\n explicitWidth?: number\n ): Slot {\n if (explicitWidth !== undefined) {\n // 显式柱宽:组内居中\n return {\n offset: (category.innerWidth() - explicitWidth) / 2,\n size: explicitWidth,\n };\n }\n const size = category.innerWidth() / Math.max(1, groupCount) * 0.8;\n const gap = (category.innerWidth() - size * groupCount) / 2;\n return { offset: gap, size };\n }\n\n private drawBar(\n ctx: ICanvas2D,\n bar: {\n x: number;\n y: number;\n width: number;\n height: number;\n radius: number;\n color: string;\n roundSide: 'top' | 'bottom' | 'right' | 'left';\n }\n ): void {\n if (bar.width <= 0 || bar.height <= 0) {\n return;\n }\n ctx.save();\n ctx.fillStyle = bar.color;\n ctx.beginPath();\n roundRectPath(ctx, bar, bar.radius, bar.roundSide);\n ctx.fill();\n ctx.restore();\n }\n}\n\n/** 按 stack 分组:无 stack 的系列各自成组;同名 stack 合并为一组。 */\nfunction groupStacks(series: readonly BarSeries[]): BarSeries[][] {\n const groups: BarSeries[][] = [];\n const stackMap = new Map<string, BarSeries[]>();\n\n for (const s of series) {\n if (s.stack) {\n let group = stackMap.get(s.stack);\n if (!group) {\n group = [];\n stackMap.set(s.stack, group);\n groups.push(group);\n }\n group.push(s);\n } else {\n groups.push([s]);\n }\n }\n return groups;\n}\n\n/**\n * 圆角柱体路径:仅 roundSide 指示的一侧(两个角)圆角。\n * - 纵向柱:'top' 顶部两角 / 'bottom' 底部两角\n * - 横向柱:'right' 右侧两角 / 'left' 左侧两角\n */\nfunction roundRectPath(\n ctx: ICanvas2D,\n bar: { x: number; y: number; width: number; height: number },\n radius: number,\n roundSide: 'top' | 'bottom' | 'right' | 'left'\n): void {\n const { x, y, width, height } = bar;\n const r = Math.min(radius, width / 2, height / 2);\n if (r <= 0) {\n ctx.rect(x, y, width, height);\n return;\n }\n\n const roundTopLeft = roundSide === 'top' || roundSide === 'left';\n const roundTopRight = roundSide === 'top' || roundSide === 'right';\n const roundBottomLeft = roundSide === 'bottom' || roundSide === 'left';\n const roundBottomRight = roundSide === 'bottom' || roundSide === 'right';\n\n ctx.moveTo(x + (roundTopLeft ? r : 0), y);\n ctx.lineTo(x + width - (roundTopRight ? r : 0), y);\n if (roundTopRight) {\n ctx.arcTo(x + width, y, x + width, y + r, r);\n } else {\n ctx.lineTo(x + width, y);\n }\n\n ctx.lineTo(x + width, y + height - (roundBottomRight ? r : 0));\n if (roundBottomRight) {\n ctx.arcTo(x + width, y + height, x + width - r, y + height, r);\n } else {\n ctx.lineTo(x + width, y + height);\n }\n\n ctx.lineTo(x + (roundBottomLeft ? r : 0), y + height);\n if (roundBottomLeft) {\n ctx.arcTo(x, y + height, x, y + height - r, r);\n } else {\n ctx.lineTo(x, y + height);\n }\n\n ctx.lineTo(x, y + (roundTopLeft ? r : 0));\n if (roundTopLeft) {\n ctx.arcTo(x, y, x + r, y, r);\n } else {\n ctx.lineTo(x, y);\n }\n ctx.closePath();\n}\n",
15
- "/**\n * 饼图 / 环形图:扇区绘制、百分比标签、图例。\n * 无笛卡尔坐标轴,全部几何在绘图区内按极坐标计算。\n */\n\nimport type { ICanvas2D } from '../core/canvas';\nimport { ChartBase } from '../core/chart';\nimport type { LayoutResult } from '../core/layout';\nimport type { LegendItem } from '../core/legend';\nimport { applyFont } from '../core/text';\nimport type { PieChartOption } from '../types';\n\nconst TWO_PI = Math.PI * 2;\n\nexport class PieChart extends ChartBase<PieChartOption> {\n protected hasCartesianAxis(): boolean {\n return false;\n }\n\n protected getLegendItems(): LegendItem[] {\n return this.option.data.map((d, i) => ({\n name: d.name,\n color: d.color ?? this.seriesColor(i),\n }));\n }\n\n protected drawSeries(\n ctx: ICanvas2D,\n layout: LayoutResult,\n option: PieChartOption\n ): void {\n const { plot } = layout;\n const centerX = plot.x + plot.width / 2;\n const centerY = plot.y + plot.height / 2;\n\n const maxRadius =\n Math.min(plot.width, plot.height) / 2;\n const outerRadius = resolveRadius(option.radius ?? '60%', maxRadius);\n const innerRadius = resolveRadius(option.innerRadius ?? 0, maxRadius);\n const startAngle = option.startAngle ?? -Math.PI / 2;\n\n const data = option.data.filter((d) => d.value > 0);\n const total = data.reduce((sum, d) => sum + d.value, 0);\n if (total <= 0 || outerRadius <= 0) {\n return;\n }\n\n let angle = startAngle;\n\n data.forEach((d, index) => {\n const sweep = (d.value / total) * TWO_PI;\n const color = d.color ?? this.seriesColor(index);\n\n ctx.save();\n ctx.fillStyle = color;\n ctx.beginPath();\n if (innerRadius > 0) {\n // 环形:外弧 → 内弧(反向)闭合\n ctx.arc(centerX, centerY, outerRadius, angle, angle + sweep);\n ctx.arc(\n centerX,\n centerY,\n innerRadius,\n angle + sweep,\n angle,\n true\n );\n } else {\n ctx.arc(centerX, centerY, outerRadius, angle, angle + sweep);\n ctx.lineTo(centerX, centerY);\n }\n ctx.closePath();\n ctx.fill();\n // 扇区间分隔线\n ctx.strokeStyle = '#ffffff';\n ctx.lineWidth = 1;\n ctx.stroke();\n ctx.restore();\n\n // 扇区标签:名称 + 百分比,画在扇区角平分线上\n if (option.showLabel !== false) {\n const midAngle = angle + sweep / 2;\n const labelRadius = (outerRadius + (innerRadius > 0 ? innerRadius : 0)) / 2 * 0.85;\n const labelX = centerX + Math.cos(midAngle) * labelRadius;\n const labelY = centerY + Math.sin(midAngle) * labelRadius;\n const percent = total > 0 ? Math.round((d.value / total) * 100) : 0;\n\n applyFont(ctx, option.labelFontSize ?? 10);\n ctx.fillStyle = option.labelColor ?? '#ffffff';\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillText(`${d.name} ${percent}%`, labelX, labelY);\n }\n\n angle += sweep;\n });\n }\n}\n\n/** 解析半径:数字为像素;'60%' 形式按最大半径百分比。 */\nfunction resolveRadius(value: number | string, maxRadius: number): number {\n if (typeof value === 'number') {\n return Math.max(0, value);\n }\n const match = /^(\\d+(?:\\.\\d+)?)%$/.exec(value);\n if (!match) {\n return maxRadius;\n }\n return (Number(match[1]) / 100) * maxRadius;\n}\n",
15
+ "/**\n * 柱状图:纵向 / 横向,支持多系列分组与 stack 堆叠。\n *\n * 几何规则:\n * - 分组:同一类目内多个系列并排,子柱宽 = 类目带宽 × (1 - gap) / 系列数 × 0.8\n * - 堆叠:同名 stack 系列共用一根柱,后一个系列从前一个的顶端继续累加\n * - 数值轴强制包含 0(柱形高度必须从零线起算才有意义)\n */\n\nimport type { ICanvas2D } from '../core/canvas';\nimport { ChartBase } from '../core/chart';\nimport type { CategoryScale } from '../core/scale';\nimport type { LayoutResult } from '../core/layout';\nimport type { LegendItem } from '../core/legend';\nimport type { BarChartOption, BarSeries } from '../types';\n\n/** 柱体在类目带内的水平偏移与宽度(纵向)或垂直偏移与高度(横向)。 */\ninterface Slot {\n offset: number;\n size: number;\n}\n\nexport class BarChart extends ChartBase<BarChartOption> {\n protected isHorizontal(): boolean {\n return this.option.horizontal ?? false;\n }\n\n protected getValueDomain(): { min: number; max: number } {\n const { series, yAxis } = this.option;\n let max = 0;\n let min = 0;\n\n // 堆叠:按 stack 组在类目上累加正负\n const stackGroups = groupStacks(series);\n const categoryCount = Math.max(\n 0,\n ...series.map((s) => s.data.length)\n );\n\n for (let i = 0; i < categoryCount; i += 1) {\n for (const group of stackGroups) {\n let positive = 0;\n let negative = 0;\n for (const s of group) {\n const v = s.data[i] ?? 0;\n if (v >= 0) {\n positive += v;\n } else {\n negative += v;\n }\n }\n if (positive > max) {\n max = positive;\n }\n if (negative < min) {\n min = negative;\n }\n }\n }\n\n if (yAxis?.min !== undefined) {\n min = Math.min(min, yAxis.min);\n }\n if (yAxis?.max !== undefined) {\n max = Math.max(max, yAxis.max);\n }\n return { min, max };\n }\n\n protected getCategoryLabels(): readonly string[] {\n return this.option.xAxis.labels;\n }\n\n protected getLegendItems(): LegendItem[] {\n return this.option.series\n .filter((s) => s.name)\n .map((s, i) => ({\n name: s.name as string,\n color: this.seriesColor(i, s.color),\n }));\n }\n\n protected drawSeries(\n ctx: ICanvas2D,\n layout: LayoutResult,\n option: BarChartOption\n ): void {\n const scales = this.cartesian;\n if (!scales) {\n return;\n }\n void layout; // 柱体几何全部由比例尺绝对坐标决定,无需 plot 引用\n const { value, category } = scales;\n const horizontal = option.horizontal ?? false;\n\n const stackGroups = groupStacks(option.series);\n const categoryCount = option.xAxis.labels.length;\n\n for (let i = 0; i < categoryCount; i += 1) {\n // 每个类目带内:无堆叠时按系列分组并排;有堆叠时按 stack 组并排\n const groups = stackGroups;\n const seriesCount = groups.length;\n const explicitWidth = option.series\n .map((s) => s.barWidth)\n .find((w) => w !== undefined && w > 0);\n const slot = this.computeSlot(category, seriesCount, explicitWidth);\n\n groups.forEach((group, groupIndex) => {\n const slotOffset = slot.offset + groupIndex * slot.size;\n let cursor = 0; // 堆叠游标(绝对值累加)\n\n group.forEach((series) => {\n const raw = series.data[i] ?? 0;\n const color = this.seriesColor(\n option.series.indexOf(series),\n series.color\n );\n\n if (horizontal) {\n const x0 = value.scale(0);\n const x1 = value.scale(cursor + raw);\n const base = Math.min(x0, x1);\n const width = Math.abs(x1 - x0);\n const y = category.bandStart(i) + slotOffset;\n this.drawBar(ctx, {\n x: base,\n y,\n width,\n height: slot.size,\n radius: series.borderRadius ?? 0,\n color,\n roundSide: raw >= 0 ? 'right' : 'left',\n });\n } else {\n const y0 = value.scale(cursor);\n const y1 = value.scale(cursor + raw);\n const top = Math.min(y0, y1);\n const height = Math.abs(y1 - y0);\n const x = category.bandStart(i) + slotOffset;\n this.drawBar(ctx, {\n x,\n y: top,\n width: slot.size,\n height,\n radius: series.borderRadius ?? 0,\n color,\n roundSide: raw >= 0 ? 'top' : 'bottom',\n });\n }\n\n cursor += raw;\n });\n });\n }\n }\n\n private computeSlot(\n category: CategoryScale,\n groupCount: number,\n explicitWidth?: number\n ): Slot {\n const band = category.bandWidth;\n const inner = category.innerWidth();\n if (explicitWidth !== undefined) {\n // 显式柱宽:整组在类目带内居中\n return {\n offset: (band - explicitWidth * groupCount) / 2,\n size: explicitWidth,\n };\n }\n const size = (inner / Math.max(1, groupCount)) * 0.8;\n // 柱区(size × groupCount)先在 inner 内居中,再随 inner 在类目带内居中,\n // 保证整组柱中心落在类目中心(与轴标签 center(i) 对齐)。\n const bandSide = (band - inner) / 2;\n const innerSide = (inner - size * groupCount) / 2;\n return { offset: bandSide + innerSide, size };\n }\n\n private drawBar(\n ctx: ICanvas2D,\n bar: {\n x: number;\n y: number;\n width: number;\n height: number;\n radius: number;\n color: string;\n roundSide: 'top' | 'bottom' | 'right' | 'left';\n }\n ): void {\n if (bar.width <= 0 || bar.height <= 0) {\n return;\n }\n ctx.save();\n ctx.fillStyle = bar.color;\n ctx.beginPath();\n roundRectPath(ctx, bar, bar.radius, bar.roundSide);\n ctx.fill();\n ctx.restore();\n }\n}\n\n/** 按 stack 分组:无 stack 的系列各自成组;同名 stack 合并为一组。 */\nfunction groupStacks(series: readonly BarSeries[]): BarSeries[][] {\n const groups: BarSeries[][] = [];\n const stackMap = new Map<string, BarSeries[]>();\n\n for (const s of series) {\n if (s.stack) {\n let group = stackMap.get(s.stack);\n if (!group) {\n group = [];\n stackMap.set(s.stack, group);\n groups.push(group);\n }\n group.push(s);\n } else {\n groups.push([s]);\n }\n }\n return groups;\n}\n\n/**\n * 圆角柱体路径:仅 roundSide 指示的一侧(两个角)圆角。\n * - 纵向柱:'top' 顶部两角 / 'bottom' 底部两角\n * - 横向柱:'right' 右侧两角 / 'left' 左侧两角\n */\nfunction roundRectPath(\n ctx: ICanvas2D,\n bar: { x: number; y: number; width: number; height: number },\n radius: number,\n roundSide: 'top' | 'bottom' | 'right' | 'left'\n): void {\n const { x, y, width, height } = bar;\n const r = Math.min(radius, width / 2, height / 2);\n if (r <= 0) {\n ctx.rect(x, y, width, height);\n return;\n }\n\n const roundTopLeft = roundSide === 'top' || roundSide === 'left';\n const roundTopRight = roundSide === 'top' || roundSide === 'right';\n const roundBottomLeft = roundSide === 'bottom' || roundSide === 'left';\n const roundBottomRight = roundSide === 'bottom' || roundSide === 'right';\n\n ctx.moveTo(x + (roundTopLeft ? r : 0), y);\n ctx.lineTo(x + width - (roundTopRight ? r : 0), y);\n if (roundTopRight) {\n ctx.arcTo(x + width, y, x + width, y + r, r);\n } else {\n ctx.lineTo(x + width, y);\n }\n\n ctx.lineTo(x + width, y + height - (roundBottomRight ? r : 0));\n if (roundBottomRight) {\n ctx.arcTo(x + width, y + height, x + width - r, y + height, r);\n } else {\n ctx.lineTo(x + width, y + height);\n }\n\n ctx.lineTo(x + (roundBottomLeft ? r : 0), y + height);\n if (roundBottomLeft) {\n ctx.arcTo(x, y + height, x, y + height - r, r);\n } else {\n ctx.lineTo(x, y + height);\n }\n\n ctx.lineTo(x, y + (roundTopLeft ? r : 0));\n if (roundTopLeft) {\n ctx.arcTo(x, y, x + r, y, r);\n } else {\n ctx.lineTo(x, y);\n }\n ctx.closePath();\n}\n",
16
+ "/**\n * 饼图 / 环形图:扇区绘制、百分比标签、图例。\n * 无笛卡尔坐标轴,全部几何在绘图区内按极坐标计算。\n */\n\nimport type { ICanvas2D } from '../core/canvas';\nimport { ChartBase } from '../core/chart';\nimport type { LayoutResult } from '../core/layout';\nimport type { LegendItem } from '../core/legend';\nimport { applyFont } from '../core/text';\nimport type { PieChartOption } from '../types';\n\nconst TWO_PI = Math.PI * 2;\n\nexport class PieChart extends ChartBase<PieChartOption> {\n protected hasCartesianAxis(): boolean {\n return false;\n }\n\n protected getLegendItems(): LegendItem[] {\n return this.option.data.map((d, i) => ({\n name: d.name,\n color: d.color ?? this.seriesColor(i),\n }));\n }\n\n protected drawSeries(\n ctx: ICanvas2D,\n layout: LayoutResult,\n option: PieChartOption\n ): void {\n const { plot } = layout;\n const centerX = plot.x + plot.width / 2;\n const centerY = plot.y + plot.height / 2;\n\n const maxRadius =\n Math.min(plot.width, plot.height) / 2;\n const outerRadius = resolveRadius(option.radius ?? '60%', maxRadius);\n const innerRadius = resolveRadius(option.innerRadius ?? 0, maxRadius);\n const startAngle = option.startAngle ?? -Math.PI / 2;\n\n const data = option.data.filter((d) => d.value > 0);\n const total = data.reduce((sum, d) => sum + d.value, 0);\n if (total <= 0 || outerRadius <= 0) {\n return;\n }\n\n let angle = startAngle;\n\n data.forEach((d, index) => {\n const sweep = (d.value / total) * TWO_PI;\n const color = d.color ?? this.seriesColor(index);\n\n ctx.save();\n ctx.fillStyle = color;\n ctx.beginPath();\n if (innerRadius > 0) {\n // 环形:外弧 → 内弧(反向)闭合\n ctx.arc(centerX, centerY, outerRadius, angle, angle + sweep);\n ctx.arc(\n centerX,\n centerY,\n innerRadius,\n angle + sweep,\n angle,\n true\n );\n } else {\n ctx.arc(centerX, centerY, outerRadius, angle, angle + sweep);\n ctx.lineTo(centerX, centerY);\n }\n ctx.closePath();\n ctx.fill();\n // 扇区间分隔线\n ctx.strokeStyle = '#ffffff';\n ctx.lineWidth = 1;\n ctx.stroke();\n ctx.restore();\n\n // 扇区标签:名称 + 百分比\n // - inside(默认):画在扇区角平分线上(白字)\n // - outside:引线把文字引到扇区外(右半区左对齐、左半区右对齐,避免文字跨越中线)\n if (option.showLabel !== false) {\n const midAngle = angle + sweep / 2;\n const percent = total > 0 ? Math.round((d.value / total) * 100) : 0;\n const text = `${d.name} ${percent}%`;\n\n if (option.labelPosition === 'outside') {\n const lineLength = option.labelLineLength ?? 14;\n const gap = option.labelGap ?? 6;\n const dirX = Math.cos(midAngle);\n const dirY = Math.sin(midAngle);\n // 引线第一段:扇区边缘沿平分线向外\n const edgeX = centerX + dirX * outerRadius;\n const edgeY = centerY + dirY * outerRadius;\n const bendX = centerX + dirX * (outerRadius + lineLength);\n const bendY = centerY + dirY * (outerRadius + lineLength);\n // 第二段:水平延伸到文字锚点(右半向右、左半向左)\n const horizontal = dirX >= 0 ? 1 : -1;\n const textX = bendX + horizontal * gap;\n const textY = bendY;\n\n ctx.save();\n ctx.strokeStyle = option.labelLineColor ?? '#c0c4cc';\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.moveTo(edgeX, edgeY);\n ctx.lineTo(bendX, bendY);\n ctx.lineTo(textX, textY);\n ctx.stroke();\n ctx.restore();\n\n applyFont(ctx, option.labelFontSize ?? 10);\n ctx.fillStyle = option.labelColor ?? '#323233';\n ctx.textAlign = horizontal > 0 ? 'left' : 'right';\n ctx.textBaseline = 'middle';\n ctx.fillText(text, textX, textY);\n } else {\n const labelRadius =\n ((outerRadius + (innerRadius > 0 ? innerRadius : 0)) / 2) * 0.85;\n const labelX = centerX + Math.cos(midAngle) * labelRadius;\n const labelY = centerY + Math.sin(midAngle) * labelRadius;\n\n applyFont(ctx, option.labelFontSize ?? 10);\n ctx.fillStyle = option.labelColor ?? '#ffffff';\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillText(text, labelX, labelY);\n }\n }\n\n angle += sweep;\n });\n }\n}\n\n/** 解析半径:数字为像素;'60%' 形式按最大半径百分比。 */\nfunction resolveRadius(value: number | string, maxRadius: number): number {\n if (typeof value === 'number') {\n return Math.max(0, value);\n }\n const match = /^(\\d+(?:\\.\\d+)?)%$/.exec(value);\n if (!match) {\n return maxRadius;\n }\n return (Number(match[1]) / 100) * maxRadius;\n}\n",
16
17
  "/**\n * 雷达图:多边形网格 + 指标轴 + 多系列区域/折线。\n * 指标刻度按各 indicator.max(缺省取所有系列该指标最大值)归一化。\n */\n\nimport type { ICanvas2D } from '../core/canvas';\nimport { ChartBase } from '../core/chart';\nimport type { LayoutResult } from '../core/layout';\nimport type { LegendItem } from '../core/legend';\nimport { applyFont } from '../core/text';\nimport type { RadarChartOption } from '../types';\n\ninterface PolarPoint {\n x: number;\n y: number;\n}\n\nexport class RadarChart extends ChartBase<RadarChartOption> {\n protected hasCartesianAxis(): boolean {\n return false;\n }\n\n protected getLegendItems(): LegendItem[] {\n return this.option.series\n .filter((s) => s.name)\n .map((s, i) => ({\n name: s.name as string,\n color: this.seriesColor(i, s.color),\n }));\n }\n\n protected drawSeries(\n ctx: ICanvas2D,\n layout: LayoutResult,\n option: RadarChartOption\n ): void {\n const { plot } = layout;\n const centerX = plot.x + plot.width / 2;\n const centerY = plot.y + plot.height / 2;\n const radius =\n option.radius ?? Math.min(plot.width, plot.height) / 2 * 0.6;\n const count = option.indicators.length;\n if (count === 0 || radius <= 0) {\n return;\n }\n\n const startAngle = option.startAngle ?? -Math.PI / 2;\n const step = TWO_PI / count;\n const splitCount = Math.max(1, option.splitCount ?? 5);\n const gridColor = option.gridColor ?? '#ebedf0';\n const gridLineWidth = option.gridLineWidth ?? 1;\n\n const vertexAngle = (index: number): number =>\n startAngle + index * step;\n\n const polarPoint = (angle: number, r: number): PolarPoint => ({\n x: centerX + Math.cos(angle) * r,\n y: centerY + Math.sin(angle) * r,\n });\n\n // 网格层:同心多边形\n for (let layer = 1; layer <= splitCount; layer += 1) {\n const r = (radius * layer) / splitCount;\n ctx.save();\n ctx.strokeStyle = gridColor;\n ctx.lineWidth = gridLineWidth;\n ctx.beginPath();\n for (let i = 0; i < count; i += 1) {\n const p = polarPoint(vertexAngle(i), r);\n if (i === 0) {\n ctx.moveTo(p.x, p.y);\n } else {\n ctx.lineTo(p.x, p.y);\n }\n }\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n }\n\n // 指标轴线\n ctx.save();\n ctx.strokeStyle = gridColor;\n ctx.lineWidth = gridLineWidth;\n ctx.beginPath();\n for (let i = 0; i < count; i += 1) {\n const p = polarPoint(vertexAngle(i), radius);\n ctx.moveTo(centerX, centerY);\n ctx.lineTo(p.x, p.y);\n }\n ctx.stroke();\n ctx.restore();\n\n // 指标标签(顶点外侧)\n const labelFontSize = option.labelFontSize ?? 11;\n applyFont(ctx, labelFontSize);\n ctx.fillStyle = option.labelColor ?? '#323233';\n for (let i = 0; i < count; i += 1) {\n const p = polarPoint(vertexAngle(i), radius + 12);\n ctx.textAlign = Math.abs(p.x - centerX) < 1 ? 'center' : p.x > centerX ? 'left' : 'right';\n ctx.textBaseline =\n Math.abs(p.y - centerY) < 1\n ? 'middle'\n : p.y > centerY\n ? 'top'\n : 'bottom';\n ctx.fillText(option.indicators[i].name, p.x, p.y);\n }\n\n // 系列区域 / 折线\n option.series.forEach((series, seriesIndex) => {\n const color = this.seriesColor(seriesIndex, series.color);\n const points: PolarPoint[] = option.indicators.map((indicator, i) => {\n const max =\n indicator.max ?? this.indicatorMax(option, i);\n const value = series.data[i] ?? 0;\n const ratio = max > 0 ? Math.max(0, Math.min(1, value / max)) : 0;\n return polarPoint(vertexAngle(i), radius * ratio);\n });\n\n if (series.area !== false) {\n ctx.save();\n ctx.fillStyle = color;\n ctx.globalAlpha = 0.2;\n ctx.beginPath();\n this.tracePolygon(ctx, points);\n ctx.closePath();\n ctx.fill();\n ctx.restore();\n }\n\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = series.lineWidth ?? 2;\n ctx.lineJoin = 'round';\n ctx.beginPath();\n this.tracePolygon(ctx, points);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n });\n }\n\n private indicatorMax(option: RadarChartOption, index: number): number {\n let max = 0;\n for (const series of option.series) {\n const v = series.data[index] ?? 0;\n if (v > max) {\n max = v;\n }\n }\n return max;\n }\n\n private tracePolygon(ctx: ICanvas2D, points: readonly PolarPoint[]): void {\n if (points.length === 0) {\n return;\n }\n ctx.moveTo(points[0].x, points[0].y);\n for (let i = 1; i < points.length; i += 1) {\n ctx.lineTo(points[i].x, points[i].y);\n }\n }\n}\n\nconst TWO_PI = Math.PI * 2;\n",
17
18
  "/**\n * 平台适配层:把各端 Canvas 2D 上下文解析为统一渲染上下文\n * (ICanvas2D + 逻辑尺寸 + DPR)。\n *\n * 适配器只负责三件事:\n * 1. 拿到上下文(HTMLCanvasElement / 小程序 canvas node / 未来原生 canvas)\n * 2. 计算设备像素比并设置物理画布尺寸\n * 3. 返回引擎需要的 ChartRenderContext\n *\n * 引擎代码永远不直接接触 DOM / wx / native API。\n */\n\nimport type { ChartRenderContext } from '../types';\n\nexport interface ResolveCanvasOptions {\n /** 逻辑宽度(CSS px);缺省取节点实际尺寸。 */\n width?: number;\n /** 逻辑高度(CSS px);缺省取节点实际尺寸。 */\n height?: number;\n /** 设备像素比;缺省自动探测。 */\n dpr?: number;\n /** 自定义色板。 */\n palette?: readonly string[];\n}\n\nexport interface ResolvedCanvas {\n context: ChartRenderContext;\n}\n\n/** 通用探测设备像素比(web 与小程序可用 globalThis 访问)。 */\nexport function detectPixelRatio(): number {\n const host = getHost();\n if (typeof host.devicePixelRatio === 'number' && host.devicePixelRatio > 0) {\n return host.devicePixelRatio;\n }\n return 1;\n}\n\nfunction getHost(): Record<string, unknown> {\n if (typeof globalThis !== 'undefined') {\n return globalThis as unknown as Record<string, unknown>;\n }\n return {};\n}\n",
18
19
  "/**\n * 小程序适配器:微信 / 阿里 / 字节的 Canvas 2D 节点 → ChartRenderContext。\n *\n * 获取流程(各端一致,仅全局名不同):\n * canvas type=\"2d\" → 节点 node → node.getContext('2d') → ICanvas2D\n *\n * 节点获取依赖 SelectorQuery,属于组件生命周期职责,由\n * getMiniProgramCanvasNode() 提供;本文件只负责「节点 → 上下文」,\n * 以及 DPR 探测(pixelRatio 从各端系统信息接口读取)。\n */\n\nimport type { ChartRenderContext } from '../types';\nimport type { ICanvas2D } from '../core/canvas';\nimport { detectPixelRatio, type ResolveCanvasOptions } from './types';\n\n/** 小程序 Canvas 2D 节点(各端 node 的公共形状)。 */\nexport interface MiniProgramCanvasNode {\n getContext(type: '2d'): unknown;\n width: number;\n height: number;\n}\n\nexport type MiniProgramGlobal = 'wx' | 'my' | 'tt';\n\n/** 安全读取小程序全局(避免与官方类型定义冲突,模式同 transone request)。 */\nexport function getMiniProgramGlobal(\n name: MiniProgramGlobal\n): Record<string, unknown> | null {\n const host = getHost();\n const api = host[name];\n return typeof api === 'object' && api !== null\n ? (api as Record<string, unknown>)\n : null;\n}\n\n/**\n * 通过 SelectorQuery 获取 Canvas 2D 节点(组件/页面内调用)。\n * 各端 API 形状一致:createSelectorQuery().in(instance).select(selector)\n * .fields({ node: true, size: true }).exec(callback)\n */\nexport function getMiniProgramCanvasNode(options: {\n /** 端标识,缺省自动探测(wx → my → tt)。 */\n platform?: MiniProgramGlobal;\n /** 组件/页面实例(.in() 入参)。 */\n instance?: unknown;\n /** canvas 选择器,如 '#chart'。 */\n selector: string;\n}): Promise<MiniProgramCanvasNode> {\n const platform =\n options.platform ?? detectMiniProgramGlobal() ?? 'wx';\n const api = getMiniProgramGlobal(platform);\n const queryFn = api?.createSelectorQuery;\n if (typeof queryFn !== 'function') {\n return Promise.reject(\n new Error(`getMiniProgramCanvasNode: ${platform}.createSelectorQuery is not available`)\n );\n }\n\n return new Promise((resolve, reject) => {\n let query = queryFn.call(api);\n if (options.instance && typeof query.in === 'function') {\n query = query.in(options.instance);\n }\n if (typeof query.select !== 'function') {\n reject(new Error(`${platform}.createSelectorQuery().select is not available`));\n return;\n }\n query\n .select(options.selector)\n .fields({ node: true, size: true })\n .exec((res: unknown) => {\n const first = Array.isArray(res) ? res[0] : undefined;\n const node = first?.node as MiniProgramCanvasNode | undefined;\n if (!node || typeof node.getContext !== 'function') {\n reject(\n new Error(\n `getMiniProgramCanvasNode: canvas node not found for \"${options.selector}\"`\n )\n );\n return;\n }\n resolve(node);\n });\n });\n}\n\n/** 探测当前小程序全局(wx → my → tt),均不存在返回 null。 */\nexport function detectMiniProgramGlobal(): MiniProgramGlobal | null {\n if (getMiniProgramGlobal('wx')) {\n return 'wx';\n }\n if (getMiniProgramGlobal('my')) {\n return 'my';\n }\n if (getMiniProgramGlobal('tt')) {\n return 'tt';\n }\n return null;\n}\n\n/** 读取各端设备像素比(wx.getSystemInfoSync / my.getSystemInfoSync / tt.getSystemInfoSync)。 */\nexport function detectMiniProgramPixelRatio(platform?: MiniProgramGlobal): number {\n const name = platform ?? detectMiniProgramGlobal() ?? 'wx';\n const api = getMiniProgramGlobal(name);\n const sync = api?.getSystemInfoSync;\n if (typeof sync === 'function') {\n try {\n const info = sync.call(api) as { pixelRatio?: number };\n if (typeof info.pixelRatio === 'number' && info.pixelRatio > 0) {\n return info.pixelRatio;\n }\n } catch {\n // 探测失败回退通用探测\n }\n }\n return detectPixelRatio();\n}\n\n/**\n * 从 Canvas 2D 节点解析渲染上下文。\n * 物理画布尺寸由节点自身管理(width/height 已在平台侧按像素比设置),\n * 此处只做归一化返回。\n */\nexport function resolveMiniProgramCanvas(\n node: MiniProgramCanvasNode,\n options: ResolveCanvasOptions = {}\n): ChartRenderContext {\n const ctx2d = node.getContext('2d');\n if (!ctx2d) {\n throw new Error('resolveMiniProgramCanvas: 2d context is not available');\n }\n\n const dpr = options.dpr ?? detectMiniProgramPixelRatio();\n const width = options.width ?? node.width;\n const height = options.height ?? node.height;\n const ctx = ctx2d as unknown as ICanvas2D;\n\n return { ctx, width, height, dpr, palette: options.palette };\n}\n\nfunction getHost(): Record<string, unknown> {\n if (typeof globalThis !== 'undefined') {\n return globalThis as unknown as Record<string, unknown>;\n }\n return {};\n}\n",
@@ -41,9 +42,9 @@
41
42
  "import type {\n InterceptorFulfilled,\n InterceptorHandler,\n InterceptorRejected,\n} from './types';\n\n/**\n * 拦截器管理器:维护同类型(请求 / 响应)拦截器列表。\n * - use 注册并返回 id,eject 按 id 移除(软删除,保留占位)\n * - forEach 跳过已移除的项\n */\nexport class InterceptorManager<T> {\n private readonly handlers: Array<InterceptorHandler<T> | null> = [];\n\n public use(\n onFulfilled?: InterceptorFulfilled<T>,\n onRejected?: InterceptorRejected\n ): number {\n this.handlers.push({ onFulfilled, onRejected });\n return this.handlers.length - 1;\n }\n\n public eject(id: number): void {\n if (this.handlers[id] !== undefined) {\n this.handlers[id] = null;\n }\n }\n\n public clear(): void {\n this.handlers.length = 0;\n }\n\n public forEach(\n fn: (handler: InterceptorHandler<T>, id: number) => void\n ): void {\n this.handlers.forEach((handler, id) => {\n if (handler !== null) {\n fn(handler, id);\n }\n });\n }\n}\n",
42
43
  "import { resolveAdapter } from './adapters';\nimport { RequestError } from './errors';\nimport { mergeHeaders, normalizeMethod } from './helpers';\nimport { InterceptorManager } from './interceptors';\nimport type {\n RequestAdapter,\n RequestConfig,\n RequestOptions,\n RequestResponse,\n} from './types';\n\ntype ChainStep = (value: unknown) => unknown;\n\n/**\n * 统一请求客户端:跨端请求入口。\n *\n * 职责:\n * - 实例级默认值(baseURL / headers / timeout / platform 等)与单次配置合并\n * - 请求拦截器(注册顺序)→ 平台适配器 → 响应拦截器(后注册先执行)的链路编排\n * - 目标端解析:config.platform > 实例 adapter > 实例 platform > 运行时探测\n *\n * 用法:\n * ```ts\n * const http = createRequest({ baseURL: '/api', timeout: 10000 });\n * http.interceptors.request.use((config) => {\n * config.headers.Authorization = `Bearer ${token}`;\n * return config;\n * });\n * const res = await http.get<{ list: Item[] }>('/items');\n * ```\n */\nexport class Request {\n /** 请求 / 响应拦截器管理器 */\n public readonly interceptors: {\n request: InterceptorManager<RequestConfig>;\n response: InterceptorManager<RequestResponse>;\n } = {\n request: new InterceptorManager<RequestConfig>(),\n response: new InterceptorManager<RequestResponse>(),\n };\n\n private readonly instanceDefaults: RequestOptions;\n private readonly instanceAdapter?: RequestOptions['adapter'];\n private readonly instancePlatform?: RequestOptions['platform'];\n\n public constructor(options: RequestOptions = {}) {\n const {\n adapter: instanceAdapter,\n platform: instancePlatform,\n ...rest\n } = options;\n this.instanceAdapter = instanceAdapter;\n this.instancePlatform = instancePlatform;\n this.instanceDefaults = { ...rest };\n }\n\n /** 发起请求:合并配置 → 请求拦截器 → 适配器 → 响应拦截器 */\n public request<T = unknown>(\n config: RequestConfig<T>\n ): Promise<RequestResponse<T>> {\n let merged: RequestConfig<T>;\n try {\n merged = this.mergeConfig(config);\n } catch (error) {\n // 配置非法统一走 rejected promise,调用方用 .catch / try-await 即可处理\n return Promise.reject(error);\n }\n\n // 拦截器链:请求拦截器按注册顺序在最前,适配器居中进行实际请求,\n // 响应拦截器后注册的先执行(离调用方最近,最外层)。\n // 链以 (fulfilled, rejected) 成对消费;onRejected 捕获的是其之前链路的错误。\n const chain: Array<ChainStep | undefined> = [];\n this.interceptors.request.forEach((handler) => {\n chain.push(\n handler.onFulfilled as unknown as ChainStep,\n handler.onRejected as ChainStep | undefined\n );\n });\n chain.push(\n (value: unknown) => this.dispatch(value as RequestConfig<T>),\n undefined\n );\n const responseHandlers: Array<{\n onFulfilled?: ChainStep;\n onRejected?: ChainStep | undefined;\n }> = [];\n this.interceptors.response.forEach((handler) => {\n responseHandlers.push({\n onFulfilled: handler.onFulfilled as unknown as ChainStep,\n onRejected: handler.onRejected as ChainStep | undefined,\n });\n });\n for (let index = responseHandlers.length - 1; index >= 0; index -= 1) {\n const handler = responseHandlers[index];\n chain.push(handler.onFulfilled, handler.onRejected);\n }\n\n let promise: Promise<unknown> = Promise.resolve(merged);\n while (chain.length > 0) {\n const fulfilled = chain.shift();\n const rejected = chain.shift();\n promise = promise.then(\n fulfilled as ((value: unknown) => unknown) | undefined,\n rejected as ((reason: unknown) => unknown) | undefined\n );\n }\n return promise as Promise<RequestResponse<T>>;\n }\n\n public get<T = unknown>(\n url: string,\n config?: Omit<RequestConfig, 'url' | 'method'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'GET' });\n }\n\n public delete<T = unknown>(\n url: string,\n config?: Omit<RequestConfig, 'url' | 'method'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'DELETE' });\n }\n\n public head<T = unknown>(\n url: string,\n config?: Omit<RequestConfig, 'url' | 'method'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'HEAD' });\n }\n\n public options<T = unknown>(\n url: string,\n config?: Omit<RequestConfig, 'url' | 'method'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'OPTIONS' });\n }\n\n public post<T = unknown>(\n url: string,\n data?: T,\n config?: Omit<RequestConfig<T>, 'url' | 'method' | 'data'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'POST', data });\n }\n\n public put<T = unknown>(\n url: string,\n data?: T,\n config?: Omit<RequestConfig<T>, 'url' | 'method' | 'data'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'PUT', data });\n }\n\n public patch<T = unknown>(\n url: string,\n data?: T,\n config?: Omit<RequestConfig<T>, 'url' | 'method' | 'data'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'PATCH', data });\n }\n\n private dispatch<T>(config: RequestConfig<T>): Promise<RequestResponse<T>> {\n return resolveAdapter(\n config,\n this.instanceAdapter,\n this.instancePlatform\n ).then((adapter: RequestAdapter) => adapter.request<T>(config));\n }\n\n /** 合并实例级默认值与单次配置,并校验 url / method */\n private mergeConfig<T>(config: RequestConfig<T>): RequestConfig<T> {\n if (!config || typeof config !== 'object') {\n throw new RequestError({\n code: 'BAD_REQUEST',\n message: 'Request config must be an object',\n config: config as RequestConfig,\n });\n }\n\n const merged: RequestConfig = {\n ...this.instanceDefaults,\n ...config,\n headers: mergeHeaders(this.instanceDefaults.headers, config.headers),\n params: { ...this.instanceDefaults.params, ...config.params },\n };\n\n if (typeof merged.url !== 'string' || merged.url.length === 0) {\n throw new RequestError({\n code: 'BAD_REQUEST',\n message: 'Request url is required',\n config: merged,\n });\n }\n\n try {\n merged.method = normalizeMethod(merged.method);\n } catch (cause) {\n throw new RequestError({\n code: 'BAD_REQUEST',\n message: (cause as Error).message,\n config: merged,\n cause,\n });\n }\n\n return merged as RequestConfig<T>;\n }\n}\n",
43
44
  "import { Request } from './request';\nimport type { RequestOptions } from './types';\n\n/** 创建独立请求实例;不传配置时等价于使用默认实例 */\nexport function createRequest(options: RequestOptions = {}): Request {\n return new Request(options);\n}\n\n/**\n * 全局默认请求实例:直接使用无需创建。\n * ```ts\n * import { request } from 'transone/request';\n * const res = await request.get('/api/items');\n * ```\n */\nexport const request: Request = new Request();\n\nexport { Request } from './request';\nexport { InterceptorManager } from './interceptors';\nexport { RequestError, isRequestError } from './errors';\nexport type { RequestErrorCode, RequestErrorOptions } from './errors';\nexport {\n adapters,\n createAdapter,\n detectPlatform,\n resolveAdapter,\n} from './adapters';\nexport type { MiniProgramDialect, MiniProgramRequestApi } from './adapters';\nexport type {\n DetectedPlatform,\n HeaderValue,\n HttpMethod,\n InterceptorFulfilled,\n InterceptorHandler,\n InterceptorRejected,\n RequestAdapter,\n RequestAdapterResolver,\n RequestConfig,\n RequestDataType,\n RequestOptions,\n RequestPlatform,\n RequestResponse,\n RequestResponseType,\n} from './types';\n",
44
- "/**\n * 可选集成:基于 transone Component 的声明式图表组件 TcChart。\n *\n * 与 transone 组件系统集成,一份源码同时编译 Web 与小程序:\n * - Web:canvas 元素由组件渲染,onMounted 后自动解析并渲染\n * - 小程序:canvas 编译为 <canvas type=\"2d\">,通过 SelectorQuery 获取节点\n * - 未来原生:通过 resolve 注入自定义解析器\n *\n * 组件本身是薄壳:状态由父级以 option 传入(完全受控),\n * 数据变化时自动 setOption + render。\n */\n\nimport {\n Component,\n h,\n type VNode,\n} from 'transone';\nimport type { ChartRenderContext, ChartOption } from './types';\nimport type { ChartBase } from './core/chart';\nimport { createChart } from './factory';\nimport {\n detectMiniProgramGlobal,\n getMiniProgramCanvasNode,\n resolveMiniProgramCanvas,\n} from './adapters/miniprogram';\nimport { resolveWebCanvas } from './adapters/web';\n\nexport interface TcChartProps {\n /** 图表配置(line / bar / pie / radar)。 */\n option: ChartOption;\n /** 自定义解析器:把 canvas 元素/节点解析为渲染上下文。 */\n resolve?: (\n element: unknown\n ) => Promise<ChartRenderContext> | ChartRenderContext;\n className?: string;\n}\n\ninterface TcChartState {\n canvasId: string;\n}\n\n/** canvas 元素 id:Web 端仅作 DOM 属性;小程序端配合 SelectorQuery .in(实例) 隔离查询,多实例共存不冲突。 */\nconst CANVAS_ID = 'tc-chart-canvas';\n\nexport class TcChart extends Component<TcChartProps, TcChartState> {\n private chart: ChartBase<ChartOption> | null = null;\n private destroyed = false;\n\n protected initState(): TcChartState {\n return { canvasId: CANVAS_ID };\n }\n\n protected initStyles(): void {\n this.styleManager.addStyle('tc-chart-canvas', {\n selector: '.tc-chart__canvas',\n properties: {\n display: 'block',\n height: '100%',\n width: '100%',\n },\n });\n }\n\n protected render(): VNode {\n return h('canvas', {\n id: this.state.canvasId,\n className: `tc-chart__canvas${this.props.className ? ` ${this.props.className}` : ''}`,\n type: '2d',\n });\n }\n\n protected onMounted(): void {\n this.attachChart();\n }\n\n protected onUpdated(): void {\n if (this.chart && !this.destroyed) {\n this.chart.setOption(this.props.option).render();\n } else if (!this.chart && !this.destroyed) {\n this.attachChart();\n }\n }\n\n protected onUnmounted(): void {\n this.destroyed = true;\n this.chart?.destroy();\n this.chart = null;\n }\n\n /** 对外暴露图表实例(高级用法:手动 resize / 订阅事件)。 */\n public getChart(): ChartBase<ChartOption> | null {\n return this.chart;\n }\n\n private attachChart(): void {\n if (this.destroyed) {\n return;\n }\n this.resolveContext()\n .then((context) => {\n if (this.destroyed) {\n return;\n }\n this.chart = createChart(context, this.props.option);\n this.chart.render();\n })\n .catch((error: unknown) => {\n console.error('[TcChart] attach failed:', error);\n });\n }\n\n /** 组件根元素(canvas)。Web 端用于解析渲染上下文;小程序端经 SelectorQuery .in(实例) 查询,不依赖此方法。 */\n public getElement(): HTMLCanvasElement | null {\n return super.getElement() as HTMLCanvasElement | null;\n }\n\n private resolveContext(): Promise<ChartRenderContext> {\n if (this.props.resolve) {\n return Promise.resolve(this.props.resolve(this.getElement()));\n }\n\n const platform = detectMiniProgramGlobal();\n if (platform) {\n // 小程序:SelectorQuery 查询节点(组件可能尚未渲染完,有限重试)\n const selector = `#${this.state.canvasId}`;\n const attempt = (left: number): Promise<ChartRenderContext> =>\n getMiniProgramCanvasNode({\n platform,\n instance: this,\n selector,\n })\n .then((node) => resolveMiniProgramCanvas(node))\n .catch((error: unknown) => {\n if (left <= 0) {\n throw error;\n }\n return new Promise((resolve) => setTimeout(resolve, 50)).then(() =>\n attempt(left - 1)\n );\n });\n return attempt(5);\n }\n\n // Web:canvas 元素即 HTMLCanvasElement\n return Promise.resolve(\n resolveWebCanvas(this.getElement() as unknown as HTMLCanvasElement)\n );\n }\n}\n"
45
+ "/**\n * 可选集成:基于 transone Component 的声明式图表组件 TcChart。\n *\n * 与 transone 组件系统集成,一份源码同时编译 Web 与小程序:\n * - Web:canvas 元素由组件渲染,onMounted 后自动解析并渲染\n * - 小程序:canvas 编译为 <canvas type=\"2d\">,通过 SelectorQuery 获取节点\n * - 未来原生:通过 resolve 注入自定义解析器\n *\n * 组件本身是薄壳:状态由父级以 option 传入(完全受控),\n * 数据变化时自动 setOption + render;\n * 容器 / 窗口尺寸变化时防抖(150ms)自动重绘:\n * - Web:ResizeObserver 观察 canvas,重测 clientWidth/Height 后增量 resize + render\n * - 小程序:平台窗口尺寸回调触发后重建图表(SelectorQuery 取最新节点尺寸)\n */\n\nimport {\n Component,\n h,\n type VNode,\n} from 'transone';\nimport type { ChartRenderContext, ChartOption } from './types';\nimport type { ChartBase } from './core/chart';\nimport { debounce, type Debounced } from './core/debounce';\nimport { createChart } from './factory';\nimport {\n detectMiniProgramGlobal,\n getMiniProgramCanvasNode,\n getMiniProgramGlobal,\n resolveMiniProgramCanvas,\n} from './adapters/miniprogram';\nimport { detectPixelRatio } from './adapters/types';\nimport { resolveWebCanvas } from './adapters/web';\n\nexport interface TcChartProps {\n /** 图表配置(line / bar / pie / radar)。 */\n option: ChartOption;\n /** 自定义解析器:把 canvas 元素/节点解析为渲染上下文。 */\n resolve?: (\n element: unknown\n ) => Promise<ChartRenderContext> | ChartRenderContext;\n className?: string;\n}\n\ninterface TcChartState {\n canvasId: string;\n}\n\n/** canvas 元素 id:Web 端仅作 DOM 属性;小程序端配合 SelectorQuery .in(实例) 隔离查询,多实例共存不冲突。 */\nconst CANVAS_ID = 'tc-chart-canvas';\n\n/** 尺寸变化自动重绘的防抖窗口(毫秒)。连续 resize 事件只在此窗口后重绘一次。 */\nconst RESIZE_DEBOUNCE_MS = 150;\n\ninterface MpWindowResizeApi {\n onWindowResize?: (callback: () => void) => unknown;\n offWindowResize?: (callback: () => void) => unknown;\n}\n\nexport class TcChart extends Component<TcChartProps, TcChartState> {\n private chart: ChartBase<ChartOption> | null = null;\n private destroyed = false;\n private resizeDebounced: Debounced<() => void> | null = null;\n private resizeObserver: ResizeObserver | null = null;\n private mpResizeHandler: (() => void) | null = null;\n\n protected initState(): TcChartState {\n return { canvasId: CANVAS_ID };\n }\n\n protected initStyles(): void {\n this.styleManager.addStyle('tc-chart-canvas', {\n selector: '.tc-chart__canvas',\n properties: {\n display: 'block',\n height: '100%',\n width: '100%',\n },\n });\n }\n\n protected render(): VNode {\n return h('canvas', {\n id: this.state.canvasId,\n className: `tc-chart__canvas${this.props.className ? ` ${this.props.className}` : ''}`,\n type: '2d',\n });\n }\n\n protected onMounted(): void {\n this.attachChart();\n this.setupAutoResize();\n }\n\n protected onUpdated(): void {\n if (this.chart && !this.destroyed) {\n this.chart.setOption(this.props.option).render();\n } else if (!this.chart && !this.destroyed) {\n this.attachChart();\n }\n }\n\n protected onUnmounted(): void {\n this.teardownAutoResize();\n this.destroyed = true;\n this.chart?.destroy();\n this.chart = null;\n }\n\n /** 对外暴露图表实例(高级用法:手动 resize / 订阅事件)。 */\n public getChart(): ChartBase<ChartOption> | null {\n return this.chart;\n }\n\n private attachChart(): void {\n if (this.destroyed) {\n return;\n }\n this.resolveContext()\n .then((context) => {\n if (this.destroyed || !context) {\n // 非浏览器环境(SSR / 构建期静态渲染)或显式跳过:渲染交给客户端水合阶段。\n return;\n }\n this.chart = createChart(context, this.props.option);\n this.chart.render();\n })\n .catch((error: unknown) => {\n console.error('[TcChart] attach failed:', error);\n });\n }\n\n /** 组件根元素(canvas)。Web 端用于解析渲染上下文;小程序端经 SelectorQuery .in(实例) 查询,不依赖此方法。 */\n public getElement(): HTMLCanvasElement | null {\n return super.getElement() as HTMLCanvasElement | null;\n }\n\n /* —— 自动重绘:容器 / 窗口尺寸变化时防抖重绘 —— */\n\n private setupAutoResize(): void {\n if (this.destroyed || this.resizeDebounced) {\n return;\n }\n this.resizeDebounced = debounce(() => this.handleResize(), RESIZE_DEBOUNCE_MS);\n\n const platform = detectMiniProgramGlobal();\n if (platform) {\n // 小程序:各平台均有窗口尺寸回调(横竖屏切换 / 分屏等场景)\n const mp = getMiniProgramGlobal(platform) as MpWindowResizeApi | null;\n if (mp && typeof mp.onWindowResize === 'function') {\n this.mpResizeHandler = () => this.resizeDebounced!.run();\n mp.onWindowResize(this.mpResizeHandler);\n }\n return;\n }\n\n // Web:ResizeObserver 观察 canvas 自身(CSS 宽高 100%,容器变化即触发)。\n // SSR / 构建期无真实元素与 ResizeObserver,跳过。\n const element = this.getElement();\n if (\n element &&\n typeof element.getContext === 'function' &&\n typeof ResizeObserver === 'function'\n ) {\n this.resizeObserver = new ResizeObserver(() => this.resizeDebounced!.run());\n this.resizeObserver.observe(element);\n }\n }\n\n private teardownAutoResize(): void {\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n this.resizeDebounced?.cancel();\n this.resizeDebounced = null;\n if (this.mpResizeHandler) {\n const platform = detectMiniProgramGlobal();\n const mp = platform\n ? (getMiniProgramGlobal(platform) as MpWindowResizeApi | null)\n : null;\n if (mp && typeof mp.offWindowResize === 'function') {\n mp.offWindowResize(this.mpResizeHandler);\n }\n this.mpResizeHandler = null;\n }\n }\n\n private handleResize(): void {\n if (this.destroyed) {\n return;\n }\n if (detectMiniProgramGlobal()) {\n // 小程序:窗口尺寸变化后 SelectorQuery 取到的节点尺寸已更新,\n // 重建图表即可拿到最新尺寸(上下文持有节点实测宽高与 pixelRatio)。\n this.chart?.destroy();\n this.chart = null;\n this.attachChart();\n return;\n }\n const element = this.getElement() as HTMLCanvasElement | null;\n if (!element || typeof element.getContext !== 'function') {\n return;\n }\n const width = element.clientWidth || 0;\n const height = element.clientHeight || 0;\n if (width <= 0 || height <= 0) {\n return;\n }\n if (!this.chart) {\n this.attachChart();\n return;\n }\n // 更新物理像素缓冲(逻辑尺寸 × DPR),并增量重绘(保留图表状态)\n const dpr = detectPixelRatio();\n element.width = Math.round(width * dpr);\n element.height = Math.round(height * dpr);\n this.chart.resize(width, height, dpr).render();\n }\n\n private resolveContext(): Promise<ChartRenderContext | null> {\n if (this.props.resolve) {\n return Promise.resolve(this.props.resolve(this.getElement()));\n }\n\n const platform = detectMiniProgramGlobal();\n if (platform) {\n // 小程序:SelectorQuery 查询节点(组件可能尚未渲染完,有限重试)\n const selector = `#${this.state.canvasId}`;\n const attempt = (left: number): Promise<ChartRenderContext> =>\n getMiniProgramCanvasNode({\n platform,\n instance: this,\n selector,\n })\n .then((node) => resolveMiniProgramCanvas(node))\n .catch((error: unknown) => {\n if (left <= 0) {\n throw error;\n }\n return new Promise((resolve) => setTimeout(resolve, 50)).then(() =>\n attempt(left - 1)\n );\n });\n return attempt(5);\n }\n\n // Web:canvas 元素即 HTMLCanvasElement。SSR / 构建期静态渲染环境下\n // 元素没有真实 2d context(如 projectDom),返回 null 跳过渲染,\n // 由客户端水合阶段(真实浏览器)完成绘制。\n const element = this.getElement() as HTMLCanvasElement | null;\n if (!element || typeof element.getContext !== 'function') {\n return Promise.resolve(null);\n }\n return Promise.resolve(\n resolveWebCanvas(element)\n );\n }\n}\n"
45
46
  ],
46
- "mappings": "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",
47
- "debugId": "71613FE96B28FF3C64756E2164756E21",
47
+ "mappings": "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",
48
+ "debugId": "C0BA9A665096526164756E2164756E21",
48
49
  "names": []
49
50
  }