graphein 0.20.0 → 0.22.0

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.
Files changed (319) hide show
  1. package/dist/animation/animate.d.ts +6 -1
  2. package/dist/animation/animate.d.ts.map +1 -1
  3. package/dist/animation/animate.js +2 -2
  4. package/dist/animation/animate.js.map +2 -2
  5. package/dist/animation/env.d.ts +5 -0
  6. package/dist/animation/env.d.ts.map +1 -1
  7. package/dist/animation/env.js +4 -0
  8. package/dist/animation/env.js.map +2 -2
  9. package/dist/animation/index.d.ts +1 -0
  10. package/dist/animation/index.d.ts.map +1 -1
  11. package/dist/animation/index.js +1 -0
  12. package/dist/animation/index.js.map +2 -2
  13. package/dist/animation/stagger.d.ts +13 -0
  14. package/dist/animation/stagger.d.ts.map +1 -0
  15. package/dist/animation/stagger.js +13 -0
  16. package/dist/animation/stagger.js.map +7 -0
  17. package/dist/axes/draw.d.ts +5 -1
  18. package/dist/axes/draw.d.ts.map +1 -1
  19. package/dist/axes/draw.js +13 -1
  20. package/dist/axes/draw.js.map +2 -2
  21. package/dist/axes/morph.d.ts +111 -0
  22. package/dist/axes/morph.d.ts.map +1 -0
  23. package/dist/axes/morph.js +207 -0
  24. package/dist/axes/morph.js.map +7 -0
  25. package/dist/axes/overlay.d.ts.map +1 -1
  26. package/dist/axes/overlay.js +88 -25
  27. package/dist/axes/overlay.js.map +2 -2
  28. package/dist/axes/text.d.ts +2 -0
  29. package/dist/axes/text.d.ts.map +1 -1
  30. package/dist/axes/text.js +1 -0
  31. package/dist/axes/text.js.map +2 -2
  32. package/dist/axes/tickLabels.d.ts +2 -0
  33. package/dist/axes/tickLabels.d.ts.map +1 -1
  34. package/dist/axes/tickLabels.js +2 -2
  35. package/dist/axes/tickLabels.js.map +2 -2
  36. package/dist/charts/annotations.d.ts +9 -3
  37. package/dist/charts/annotations.d.ts.map +1 -1
  38. package/dist/charts/annotations.js +82 -27
  39. package/dist/charts/annotations.js.map +2 -2
  40. package/dist/charts/area.d.ts +37 -1
  41. package/dist/charts/area.d.ts.map +1 -1
  42. package/dist/charts/area.js +35 -17
  43. package/dist/charts/area.js.map +2 -2
  44. package/dist/charts/bar.d.ts +53 -0
  45. package/dist/charts/bar.d.ts.map +1 -1
  46. package/dist/charts/bar.js +117 -83
  47. package/dist/charts/bar.js.map +2 -2
  48. package/dist/charts/box.d.ts +31 -0
  49. package/dist/charts/box.d.ts.map +1 -1
  50. package/dist/charts/box.js +93 -70
  51. package/dist/charts/box.js.map +2 -2
  52. package/dist/charts/bubbleMap.d.ts +20 -0
  53. package/dist/charts/bubbleMap.d.ts.map +1 -0
  54. package/dist/charts/bubbleMap.js +951 -0
  55. package/dist/charts/bubbleMap.js.map +7 -0
  56. package/dist/charts/bullet.d.ts.map +1 -1
  57. package/dist/charts/bullet.js +69 -51
  58. package/dist/charts/bullet.js.map +2 -2
  59. package/dist/charts/calendarHeatmap.d.ts.map +1 -1
  60. package/dist/charts/calendarHeatmap.js +56 -19
  61. package/dist/charts/calendarHeatmap.js.map +2 -2
  62. package/dist/charts/candlestick.d.ts +40 -0
  63. package/dist/charts/candlestick.d.ts.map +1 -0
  64. package/dist/charts/candlestick.js +325 -0
  65. package/dist/charts/candlestick.js.map +7 -0
  66. package/dist/charts/choropleth.d.ts.map +1 -1
  67. package/dist/charts/choropleth.js +46 -67
  68. package/dist/charts/choropleth.js.map +2 -2
  69. package/dist/charts/combo.d.ts.map +1 -1
  70. package/dist/charts/combo.js +127 -27
  71. package/dist/charts/combo.js.map +3 -3
  72. package/dist/charts/dumbbell.d.ts.map +1 -1
  73. package/dist/charts/dumbbell.js +100 -31
  74. package/dist/charts/dumbbell.js.map +2 -2
  75. package/dist/charts/funnel.d.ts.map +1 -1
  76. package/dist/charts/funnel.js +93 -28
  77. package/dist/charts/funnel.js.map +3 -3
  78. package/dist/charts/gantt.d.ts +22 -0
  79. package/dist/charts/gantt.d.ts.map +1 -0
  80. package/dist/charts/gantt.js +564 -0
  81. package/dist/charts/gantt.js.map +7 -0
  82. package/dist/charts/gauge.d.ts.map +1 -1
  83. package/dist/charts/gauge.js +30 -4
  84. package/dist/charts/gauge.js.map +2 -2
  85. package/dist/charts/geo.d.ts +87 -0
  86. package/dist/charts/geo.d.ts.map +1 -0
  87. package/dist/charts/geo.js +140 -0
  88. package/dist/charts/geo.js.map +7 -0
  89. package/dist/charts/geometry.d.ts +20 -0
  90. package/dist/charts/geometry.d.ts.map +1 -0
  91. package/dist/charts/geometry.js +25 -0
  92. package/dist/charts/geometry.js.map +7 -0
  93. package/dist/charts/heatmap.d.ts.map +1 -1
  94. package/dist/charts/heatmap.js +58 -49
  95. package/dist/charts/heatmap.js.map +2 -2
  96. package/dist/charts/histogram.d.ts +1 -1
  97. package/dist/charts/histogram.d.ts.map +1 -1
  98. package/dist/charts/histogram.js +49 -31
  99. package/dist/charts/histogram.js.map +2 -2
  100. package/dist/charts/index.d.ts +35 -1
  101. package/dist/charts/index.d.ts.map +1 -1
  102. package/dist/charts/index.js +12 -0
  103. package/dist/charts/index.js.map +2 -2
  104. package/dist/charts/legibility.d.ts +38 -0
  105. package/dist/charts/legibility.d.ts.map +1 -0
  106. package/dist/charts/legibility.js +72 -0
  107. package/dist/charts/legibility.js.map +7 -0
  108. package/dist/charts/line.d.ts +39 -1
  109. package/dist/charts/line.d.ts.map +1 -1
  110. package/dist/charts/line.js +48 -16
  111. package/dist/charts/line.js.map +2 -2
  112. package/dist/charts/matrix.d.ts +2 -1
  113. package/dist/charts/matrix.d.ts.map +1 -1
  114. package/dist/charts/matrix.js +481 -319
  115. package/dist/charts/matrix.js.map +3 -3
  116. package/dist/charts/morphFrame.d.ts +83 -0
  117. package/dist/charts/morphFrame.d.ts.map +1 -0
  118. package/dist/charts/morphFrame.js +128 -0
  119. package/dist/charts/morphFrame.js.map +7 -0
  120. package/dist/charts/pie.d.ts.map +1 -1
  121. package/dist/charts/pie.js +89 -26
  122. package/dist/charts/pie.js.map +2 -2
  123. package/dist/charts/pieState.d.ts +27 -0
  124. package/dist/charts/pieState.d.ts.map +1 -0
  125. package/dist/charts/pieState.js +55 -0
  126. package/dist/charts/pieState.js.map +7 -0
  127. package/dist/charts/radar.d.ts +62 -0
  128. package/dist/charts/radar.d.ts.map +1 -0
  129. package/dist/charts/radar.js +912 -0
  130. package/dist/charts/radar.js.map +7 -0
  131. package/dist/charts/radialBar.d.ts +60 -0
  132. package/dist/charts/radialBar.d.ts.map +1 -0
  133. package/dist/charts/radialBar.js +708 -0
  134. package/dist/charts/radialBar.js.map +7 -0
  135. package/dist/charts/sankey.d.ts.map +1 -1
  136. package/dist/charts/sankey.js +223 -57
  137. package/dist/charts/sankey.js.map +3 -3
  138. package/dist/charts/scatter.d.ts +31 -0
  139. package/dist/charts/scatter.d.ts.map +1 -1
  140. package/dist/charts/scatter.js +48 -12
  141. package/dist/charts/scatter.js.map +2 -2
  142. package/dist/charts/slope.d.ts.map +1 -1
  143. package/dist/charts/slope.js +55 -3
  144. package/dist/charts/slope.js.map +2 -2
  145. package/dist/charts/sunburst.d.ts +14 -0
  146. package/dist/charts/sunburst.d.ts.map +1 -0
  147. package/dist/charts/sunburst.js +885 -0
  148. package/dist/charts/sunburst.js.map +7 -0
  149. package/dist/charts/table.d.ts +2 -1
  150. package/dist/charts/table.d.ts.map +1 -1
  151. package/dist/charts/table.js +214 -224
  152. package/dist/charts/table.js.map +3 -3
  153. package/dist/charts/tableView/canvas.d.ts +16 -1
  154. package/dist/charts/tableView/canvas.d.ts.map +1 -1
  155. package/dist/charts/tableView/canvas.js +361 -252
  156. package/dist/charts/tableView/canvas.js.map +3 -3
  157. package/dist/charts/tableView/conditional.d.ts +66 -40
  158. package/dist/charts/tableView/conditional.d.ts.map +1 -1
  159. package/dist/charts/tableView/conditional.js +163 -256
  160. package/dist/charts/tableView/conditional.js.map +3 -3
  161. package/dist/charts/tableView/dom.d.ts +26 -2
  162. package/dist/charts/tableView/dom.d.ts.map +1 -1
  163. package/dist/charts/tableView/dom.js +609 -269
  164. package/dist/charts/tableView/dom.js.map +3 -3
  165. package/dist/charts/tableView/layout.d.ts +22 -0
  166. package/dist/charts/tableView/layout.d.ts.map +1 -0
  167. package/dist/charts/tableView/layout.js +246 -0
  168. package/dist/charts/tableView/layout.js.map +7 -0
  169. package/dist/charts/tableView/sketch.d.ts +3 -2
  170. package/dist/charts/tableView/sketch.d.ts.map +1 -1
  171. package/dist/charts/tableView/sketch.js +2 -2
  172. package/dist/charts/tableView/sketch.js.map +2 -2
  173. package/dist/charts/tableView/sketchBar.d.ts +7 -0
  174. package/dist/charts/tableView/sketchBar.d.ts.map +1 -0
  175. package/dist/charts/tableView/sketchBar.js +32 -0
  176. package/dist/charts/tableView/sketchBar.js.map +7 -0
  177. package/dist/charts/tableView/sort.d.ts +9 -0
  178. package/dist/charts/tableView/sort.d.ts.map +1 -0
  179. package/dist/charts/tableView/sort.js +70 -0
  180. package/dist/charts/tableView/sort.js.map +7 -0
  181. package/dist/charts/tableView/sparkline.d.ts +30 -0
  182. package/dist/charts/tableView/sparkline.d.ts.map +1 -0
  183. package/dist/charts/tableView/sparkline.js +63 -0
  184. package/dist/charts/tableView/sparkline.js.map +7 -0
  185. package/dist/charts/tableView/style.d.ts +67 -0
  186. package/dist/charts/tableView/style.d.ts.map +1 -0
  187. package/dist/charts/tableView/style.js +131 -0
  188. package/dist/charts/tableView/style.js.map +7 -0
  189. package/dist/charts/tableView/types.d.ts +69 -46
  190. package/dist/charts/tableView/types.d.ts.map +1 -1
  191. package/dist/charts/tableView/types.js +22 -87
  192. package/dist/charts/tableView/types.js.map +2 -2
  193. package/dist/charts/tableView.d.ts +10 -5
  194. package/dist/charts/tableView.d.ts.map +1 -1
  195. package/dist/charts/tableView.js +12 -8
  196. package/dist/charts/tableView.js.map +2 -2
  197. package/dist/charts/treemap.d.ts.map +1 -1
  198. package/dist/charts/treemap.js +177 -68
  199. package/dist/charts/treemap.js.map +3 -3
  200. package/dist/charts/trendline.d.ts +13 -5
  201. package/dist/charts/trendline.d.ts.map +1 -1
  202. package/dist/charts/trendline.js +205 -56
  203. package/dist/charts/trendline.js.map +2 -2
  204. package/dist/charts/waterfall.d.ts.map +1 -1
  205. package/dist/charts/waterfall.js +76 -5
  206. package/dist/charts/waterfall.js.map +2 -2
  207. package/dist/index.d.ts +1 -1
  208. package/dist/index.js +1 -1
  209. package/dist/index.js.map +1 -1
  210. package/dist/interaction/cartesian.d.ts +4 -1
  211. package/dist/interaction/cartesian.d.ts.map +1 -1
  212. package/dist/interaction/cartesian.js +104 -34
  213. package/dist/interaction/cartesian.js.map +2 -2
  214. package/dist/interaction/controller.d.ts +29 -1
  215. package/dist/interaction/controller.d.ts.map +1 -1
  216. package/dist/interaction/controller.js +131 -8
  217. package/dist/interaction/controller.js.map +2 -2
  218. package/dist/interaction/focus.d.ts +23 -0
  219. package/dist/interaction/focus.d.ts.map +1 -0
  220. package/dist/interaction/focus.js +65 -0
  221. package/dist/interaction/focus.js.map +7 -0
  222. package/dist/interaction/tooltip.d.ts +6 -0
  223. package/dist/interaction/tooltip.d.ts.map +1 -1
  224. package/dist/interaction/tooltip.js +41 -16
  225. package/dist/interaction/tooltip.js.map +2 -2
  226. package/dist/interaction/types.d.ts +19 -0
  227. package/dist/interaction/types.d.ts.map +1 -1
  228. package/dist/interaction/veil.d.ts +25 -0
  229. package/dist/interaction/veil.d.ts.map +1 -0
  230. package/dist/interaction/veil.js +35 -0
  231. package/dist/interaction/veil.js.map +7 -0
  232. package/dist/pivot/pivot.d.ts +18 -0
  233. package/dist/pivot/pivot.d.ts.map +1 -1
  234. package/dist/pivot/pivot.js +46 -34
  235. package/dist/pivot/pivot.js.map +2 -2
  236. package/dist/render/chromeMotion.d.ts +65 -0
  237. package/dist/render/chromeMotion.d.ts.map +1 -0
  238. package/dist/render/chromeMotion.js +79 -0
  239. package/dist/render/chromeMotion.js.map +7 -0
  240. package/dist/render/pathSample.d.ts +24 -0
  241. package/dist/render/pathSample.d.ts.map +1 -0
  242. package/dist/render/pathSample.js +76 -0
  243. package/dist/render/pathSample.js.map +7 -0
  244. package/dist/render/transient.d.ts +18 -0
  245. package/dist/render/transient.d.ts.map +1 -0
  246. package/dist/render/transient.js +19 -0
  247. package/dist/render/transient.js.map +7 -0
  248. package/dist/runtime/candlestick.d.ts +112 -0
  249. package/dist/runtime/candlestick.d.ts.map +1 -0
  250. package/dist/runtime/candlestick.js +531 -0
  251. package/dist/runtime/candlestick.js.map +7 -0
  252. package/dist/runtime/cartesian.d.ts +14 -3
  253. package/dist/runtime/cartesian.d.ts.map +1 -1
  254. package/dist/runtime/cartesian.js.map +2 -2
  255. package/dist/runtime/chartAnimation.d.ts +54 -7
  256. package/dist/runtime/chartAnimation.d.ts.map +1 -1
  257. package/dist/runtime/chartAnimation.js +146 -28
  258. package/dist/runtime/chartAnimation.js.map +2 -2
  259. package/dist/runtime/chartRuntime.d.ts +42 -0
  260. package/dist/runtime/chartRuntime.d.ts.map +1 -1
  261. package/dist/runtime/chartRuntime.js +196 -30
  262. package/dist/runtime/chartRuntime.js.map +2 -2
  263. package/dist/runtime/dashboardDom.d.ts.map +1 -1
  264. package/dist/runtime/dashboardDom.js +45 -0
  265. package/dist/runtime/dashboardDom.js.map +2 -2
  266. package/dist/runtime/facet.d.ts +1 -1
  267. package/dist/runtime/facet.d.ts.map +1 -1
  268. package/dist/runtime/gantt.d.ts +137 -0
  269. package/dist/runtime/gantt.d.ts.map +1 -0
  270. package/dist/runtime/gantt.js +647 -0
  271. package/dist/runtime/gantt.js.map +7 -0
  272. package/dist/runtime/morph.d.ts +33 -0
  273. package/dist/runtime/morph.d.ts.map +1 -0
  274. package/dist/runtime/morph.js +332 -0
  275. package/dist/runtime/morph.js.map +7 -0
  276. package/dist/runtime/radar.d.ts +75 -0
  277. package/dist/runtime/radar.d.ts.map +1 -0
  278. package/dist/runtime/radar.js +201 -0
  279. package/dist/runtime/radar.js.map +7 -0
  280. package/dist/runtime/radialBar.d.ts +81 -0
  281. package/dist/runtime/radialBar.d.ts.map +1 -0
  282. package/dist/runtime/radialBar.js +125 -0
  283. package/dist/runtime/radialBar.js.map +7 -0
  284. package/dist/runtime/report/constants.d.ts +2 -2
  285. package/dist/runtime/report/constants.d.ts.map +1 -1
  286. package/dist/runtime/runtimeShared.d.ts +3 -3
  287. package/dist/runtime/runtimeShared.d.ts.map +1 -1
  288. package/dist/runtime/sunburst.d.ts +74 -0
  289. package/dist/runtime/sunburst.d.ts.map +1 -0
  290. package/dist/runtime/sunburst.js +150 -0
  291. package/dist/runtime/sunburst.js.map +7 -0
  292. package/dist/runtime/wire.d.ts.map +1 -1
  293. package/dist/runtime/wire.js +3 -1
  294. package/dist/runtime/wire.js.map +2 -2
  295. package/dist/shape/arc.d.ts +15 -2
  296. package/dist/shape/arc.d.ts.map +1 -1
  297. package/dist/shape/arc.js +204 -32
  298. package/dist/shape/arc.js.map +2 -2
  299. package/dist/spec/chartDefinitions.d.ts +6 -0
  300. package/dist/spec/chartDefinitions.d.ts.map +1 -1
  301. package/dist/spec/chartDefinitions.js +7 -1
  302. package/dist/spec/chartDefinitions.js.map +2 -2
  303. package/dist/spec/templates.d.ts.map +1 -1
  304. package/dist/spec/templates.js +177 -2
  305. package/dist/spec/templates.js.map +2 -2
  306. package/dist/spec/types.d.ts +258 -6
  307. package/dist/spec/types.d.ts.map +1 -1
  308. package/dist/spec/types.js +6 -0
  309. package/dist/spec/types.js.map +2 -2
  310. package/dist/spec/validate/charts.js +147 -15
  311. package/dist/spec/validate/charts.js.map +2 -2
  312. package/dist/spec/validate/common.d.ts +6 -0
  313. package/dist/spec/validate/common.d.ts.map +1 -1
  314. package/dist/spec/validate/overlays.js +2 -2
  315. package/dist/spec/validate/overlays.js.map +2 -2
  316. package/dist/spec/validate.data.d.ts.map +1 -1
  317. package/dist/spec/validate.data.js +8 -3
  318. package/dist/spec/validate.data.js.map +2 -2
  319. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/charts/tableView/canvas.ts"],
4
- "sourcesContent": ["import { paintCanvasText } from '../../render/overlayText';\nimport { fontString, measureText, ellipsize } from '../../render/text';\nimport { RoughPen } from '../../rough';\nimport { roundedRect } from '../../shape';\nimport { recordCanvasLabel, type LabelRole } from '../../render/labelLedger';\nimport { CanvasTableOptions, HeaderCell, ViewColumn, densityMetrics, normalizedHeaderRows, sumWidths, computeFittedWidths, MIN_COL_WIDTH, FILL_EPS, formatDisplayValue } from './types';\nimport { canvasRowBackground, negativeTextColor, resolveCanvasConditional, paintDataBar } from './conditional';\nexport function paintTableCanvas(opts: CanvasTableOptions): void {\n const { ctx, rect, tokens } = opts;\n const metrics = densityMetrics(opts.density);\n const available = Math.max(0, rect.width - 2);\n // Static exports cannot scroll: fit readable columns, then disclose the\n // remaining viewport instead of painting half-visible cell text.\n const minimum = Math.min(MIN_COL_WIDTH, Math.max(48, tokens.font.size.small * 3 + metrics.paddingX * 2));\n let widths = available > FILL_EPS ? computeFittedWidths(opts.columns, available, minimum) : [];\n if (sumWidths(widths) > available + FILL_EPS) {\n let used = 0;\n let visible = 0;\n for (const width of widths) {\n const needed = Math.min(width, minimum);\n if (visible > 0 && used + needed > available) break;\n used += needed;\n visible++;\n }\n widths = computeFittedWidths(opts.columns.slice(0, visible), available, Math.min(minimum, available));\n }\n const hiddenColumns = opts.columns.length - widths.length;\n opts.widths = widths;\n const pen = opts.sketch ? new RoughPen(ctx, opts.sketch) : null;\n const w = Math.max(0, rect.width);\n const h = Math.max(0, rect.height);\n\n ctx.save();\n ctx.beginPath();\n if (pen) {\n // A plain-rect clip keeps content contained; the wobbly frame is stroked\n // on top after `restore()` so its outer wobble isn't clipped away.\n ctx.rect(rect.x, rect.y, w, h);\n ctx.fillStyle = tokens.color.background;\n ctx.fill();\n } else {\n roundedRect(ctx, rect.x, rect.y, w, h, tokens.radius.sm);\n ctx.fillStyle = tokens.color.background;\n ctx.fill();\n ctx.lineWidth = 1;\n ctx.strokeStyle = tokens.color.border;\n ctx.stroke();\n }\n ctx.clip();\n\n const headerRows = normalizedHeaderRows(opts);\n const headerHeight = headerRows.length * metrics.headerHeight;\n const footerHeight = opts.footerRow ? metrics.rowHeight : 0;\n const bodyTop = rect.y + headerHeight;\n const bodyBottom = rect.y + rect.height - footerHeight;\n const bodyHeight = Math.max(0, bodyBottom - bodyTop);\n const rowCapacity = Math.max(0, Math.floor(bodyHeight / metrics.rowHeight));\n const clipped = rowCapacity < opts.rowCount || hiddenColumns > 0;\n const cueReserve = clipped && opts.clippedCue !== false && rowCapacity > 1 ? metrics.rowHeight : 0;\n const rowsToDraw = Math.max(0, Math.min(opts.rowCount, rowCapacity - (cueReserve > 0 ? 1 : 0)));\n opts.labels?.omit({ role: 'data-label', reason: 'static-viewport', required: true,\n count: (opts.rowCount - rowsToDraw) * opts.columns.length + rowsToDraw * hiddenColumns, path: '/dimensions' });\n if (opts.dataRepresentation === 'rows') opts.evidence?.data(opts.columns.length ? rowsToDraw : 0);\n else if (opts.dataRepresentation === 'aggregate') {\n opts.evidence?.data(opts.sourceRepresentedRows ?? opts.evidence.snapshot().data.inputRows, 'aggregate');\n }\n\n paintHeaderCanvas(opts, widths, headerRows, metrics, pen);\n for (let rowIndex = 0; rowIndex < rowsToDraw; rowIndex += 1) {\n paintBodyRowCanvas(opts, widths, rowIndex, bodyTop + rowIndex * metrics.rowHeight, metrics, pen);\n }\n if (cueReserve > 0) {\n paintClippedCueCanvas(opts, bodyTop + rowsToDraw * metrics.rowHeight, metrics, opts.rowCount - rowsToDraw, hiddenColumns);\n } else if (clipped && opts.clippedCue !== false) {\n opts.labels?.omit({ role: 'other', reason: 'space', required: false,\n example: 'Additional rows or columns', path: '/dimensions' });\n }\n if (opts.footerRow) {\n paintFooterCanvas(opts, widths, rect.y + rect.height - metrics.rowHeight, metrics, pen);\n }\n\n ctx.restore();\n\n if (pen) pen.rect(rect.x, rect.y, w, h, { stroke: tokens.color.border });\n}\nfunction paintHeaderCanvas(\n opts: CanvasTableOptions,\n widths: readonly number[],\n rows: HeaderCell[][],\n metrics: ReturnType<typeof densityMetrics>,\n pen?: RoughPen | null,\n): void {\n rows.forEach((row, rowIndex) => {\n let cursor = 0;\n for (const cell of row) {\n const start = cell.colIndex ?? cursor;\n const colSpan = Math.max(1, cell.colSpan ?? 1);\n const rowSpan = Math.max(1, cell.rowSpan ?? 1);\n if (start >= widths.length) {\n opts.labels?.omit({ role: 'axis-label', reason: 'static-viewport', required: true,\n example: cell.title, path: '/columns' });\n cursor = start + colSpan;\n continue;\n }\n const x = opts.rect.x + sumWidths(widths.slice(0, start));\n const y = opts.rect.y + rowIndex * metrics.headerHeight;\n const w = sumWidths(widths.slice(start, start + colSpan));\n const h = metrics.headerHeight * rowSpan;\n paintCellBox(opts.ctx, x, y, w, h, opts.tokens.color.surface, opts.tokens.color.border, false, pen);\n paintCellText(opts, {\n x,\n y,\n width: w,\n height: h,\n text: cell.title,\n align: cell.align ?? 'left',\n color: opts.tokens.color.text,\n weight: opts.tokens.font.weight.bold,\n paddingX: metrics.paddingX,\n background: opts.tokens.color.surface,\n role: 'axis-label',\n });\n cursor = start + colSpan;\n }\n });\n}\n\nfunction paintBodyRowCanvas(\n opts: CanvasTableOptions,\n widths: readonly number[],\n rowIndex: number,\n y: number,\n metrics: ReturnType<typeof densityMetrics>,\n pen?: RoughPen | null,\n): void {\n const cls = opts.rowClass?.(rowIndex) ?? 'normal';\n let x = opts.rect.x;\n for (let colIndex = 0; colIndex < widths.length; colIndex += 1) {\n const column = opts.columns[colIndex] as ViewColumn;\n const width = widths[colIndex] ?? 0;\n const cell = opts.getCell(rowIndex, colIndex);\n const baseBg = canvasRowBackground(opts, rowIndex, cls);\n const conditional = resolveCanvasConditional(opts, column, colIndex, cell, baseBg);\n const bg = conditional.background ?? baseBg;\n paintCellBox(opts.ctx, x, y, width, metrics.rowHeight, bg, opts.tokens.color.border, false, pen);\n if (conditional.bar) paintDataBar(opts, x, y, width, metrics.rowHeight, conditional.bar, pen);\n const indent = opts.cellIndent?.(rowIndex, colIndex) ?? 0;\n const text = conditional.showValue === false ? '' : formatDisplayValue(cell.value, column);\n const color = negativeTextColor(cell.value, column, conditional.color ?? opts.tokens.color.text);\n if (opts.dataRepresentation !== 'aggregate' ||\n (colIndex >= (opts.rowHeaderSpan ?? 0) && cell.raw != null && Number.isFinite(cell.raw))) {\n opts.evidence?.mark('cell', x, y, width, metrics.rowHeight, color, 1, opts.rect, 1, bg);\n }\n const weight = conditional.weight ?? (cls === 'normal' ? opts.tokens.font.weight.normal : opts.tokens.font.weight.bold);\n paintCellValueWithIcon(opts, {\n x,\n y,\n width,\n height: metrics.rowHeight,\n text,\n align: column.align,\n color,\n weight,\n paddingX: metrics.paddingX + indent,\n icon: conditional.icon,\n iconColor: conditional.iconColor,\n iconPosition: conditional.iconPosition,\n background: bg,\n });\n x += width;\n }\n}\n\nfunction paintFooterCanvas(\n opts: CanvasTableOptions,\n widths: readonly number[],\n y: number,\n metrics: ReturnType<typeof densityMetrics>,\n pen?: RoughPen | null,\n): void {\n let x = opts.rect.x;\n for (let colIndex = 0; colIndex < widths.length; colIndex += 1) {\n const column = opts.columns[colIndex] as ViewColumn;\n const width = widths[colIndex] ?? 0;\n const cell = opts.footerRow?.cells[colIndex] ?? { value: null, raw: null };\n paintCellBox(opts.ctx, x, y, width, metrics.rowHeight, opts.tokens.color.surface, opts.tokens.color.border, true, pen);\n paintCellText(opts, {\n x,\n y,\n width,\n height: metrics.rowHeight,\n text: cell.label ? String(cell.value ?? '') : formatDisplayValue(cell.value, column),\n align: column.align,\n color: negativeTextColor(cell.value, column, opts.tokens.color.text),\n weight: opts.tokens.font.weight.bold,\n paddingX: metrics.paddingX,\n });\n x += width;\n }\n}\n\nfunction paintClippedCueCanvas(\n opts: CanvasTableOptions,\n y: number,\n metrics: ReturnType<typeof densityMetrics>,\n remaining: number,\n hiddenColumns = 0,\n): void {\n paintCellBox(opts.ctx, opts.rect.x, y, opts.rect.width, metrics.rowHeight, opts.tokens.color.background, opts.tokens.color.border);\n paintCellText(opts, {\n x: opts.rect.x,\n y,\n width: opts.rect.width,\n height: metrics.rowHeight,\n text: hiddenColumns\n ? `\u2026${remaining ? `${remaining} more rows \u00B7 ` : ''}${hiddenColumns} more columns`\n : `\u2026${remaining} more`,\n align: 'center',\n color: opts.tokens.color.textMuted,\n weight: opts.tokens.font.weight.medium,\n paddingX: metrics.paddingX,\n });\n}\n\nfunction paintCellBox(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n width: number,\n height: number,\n background: string,\n border: string,\n topBorder = false,\n pen?: RoughPen | null,\n): void {\n ctx.save();\n ctx.fillStyle = background;\n ctx.fillRect(x, y, width, height);\n if (pen) {\n // Flat fill (above) keeps stripes / conditional color-scales unchanged; only\n // the separators are hand-drawn. An \"L\" through the right + bottom edges is\n // one doubled wobbly stroke per cell (shared edges drawn once by each cell).\n pen.polyline(\n [\n { x: x + width, y },\n { x: x + width, y: y + height },\n { x, y: y + height },\n ],\n { stroke: border, strokeWidth: 1 },\n );\n if (topBorder) {\n pen.polyline([{ x, y }, { x: x + width, y }], { stroke: border, strokeWidth: 1 });\n }\n ctx.restore();\n return;\n }\n ctx.strokeStyle = border;\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.moveTo(x + width, y);\n ctx.lineTo(x + width, y + height);\n ctx.moveTo(x, y + height);\n ctx.lineTo(x + width, y + height);\n if (topBorder) {\n ctx.moveTo(x, y);\n ctx.lineTo(x + width, y);\n }\n ctx.stroke();\n ctx.restore();\n}\nfunction paintCellValueWithIcon(\n opts: CanvasTableOptions,\n input: {\n x: number;\n y: number;\n width: number;\n height: number;\n text: string;\n align: 'left' | 'center' | 'right';\n color: string;\n weight: number | string;\n paddingX: number;\n icon?: string;\n iconColor?: string;\n iconPosition?: 'left' | 'right';\n background?: string;\n },\n): void {\n const font = fontString(opts.tokens.font.size.small, opts.tokens.font.family, input.weight);\n const gap = input.icon ? 6 : 0;\n const iconFont = fontString(opts.tokens.font.size.small, opts.tokens.font.family, opts.tokens.font.weight.bold);\n const iconW = input.icon ? measureText(input.icon, iconFont).width : 0;\n const textMax = Math.max(0, input.width - input.paddingX * 2 - iconW - gap);\n const text = ellipsize(input.text, textMax, font);\n const textW = measureText(text, font).width;\n const groupW = textW + iconW + gap;\n let start = input.x + input.paddingX;\n if (input.align === 'right') start = input.x + input.width - input.paddingX - groupW;\n else if (input.align === 'center') start = input.x + (input.width - groupW) / 2;\n const midY = input.y + input.height / 2;\n const iconFirst = input.icon && input.iconPosition !== 'right';\n const iconX = iconFirst ? start : start + textW + gap;\n const textX = iconFirst ? start + iconW + gap : start;\n recordCanvasLabel(opts.labels, {\n x: textX, y: midY, text, font, color: input.color, size: opts.tokens.font.size.small, baseline: 'middle',\n }, { fullText: input.text, budget: textMax, background: input.background, clip: opts.rect });\n if (!text && input.text) opts.labels?.omit({ role: 'data-label', reason: 'space', required: false });\n\n if (input.icon) {\n recordCanvasLabel(opts.labels, {\n x: iconX, y: midY, text: input.icon, font: iconFont, color: input.iconColor ?? input.color,\n size: opts.tokens.font.size.small, baseline: 'middle',\n }, { background: input.background, clip: opts.rect });\n paintCanvasText(opts.ctx, {\n x: iconX,\n y: midY,\n text: input.icon,\n font: iconFont,\n color: input.iconColor ?? input.color,\n size: opts.tokens.font.size.small,\n baseline: 'middle',\n });\n }\n paintRawCellText(opts, textX, midY, text, font, input.color, opts.tokens.font.size.small);\n}\n\nfunction paintCellText(\n opts: CanvasTableOptions,\n input: {\n x: number;\n y: number;\n width: number;\n height: number;\n text: string;\n align: 'left' | 'center' | 'right';\n color: string;\n weight: number | string;\n paddingX: number;\n background?: string;\n role?: LabelRole;\n },\n): void {\n const font = fontString(opts.tokens.font.size.small, opts.tokens.font.family, input.weight);\n const maxWidth = Math.max(0, input.width - input.paddingX * 2);\n const text = ellipsize(input.text, maxWidth, font);\n const x =\n input.align === 'right'\n ? input.x + input.width - input.paddingX\n : input.align === 'center'\n ? input.x + input.width / 2\n : input.x + input.paddingX;\n recordCanvasLabel(opts.labels, {\n x, y: input.y + input.height / 2, text, font, color: input.color, size: opts.tokens.font.size.small,\n align: input.align, baseline: 'middle',\n }, { fullText: input.text, budget: maxWidth, background: input.background, role: input.role, clip: opts.rect });\n if (!text && input.text) opts.labels?.omit({ role: input.role ?? 'data-label', reason: 'space', required: input.role === 'axis-label' });\n paintRawCellText(opts, x, input.y + input.height / 2, text, font, input.color, opts.tokens.font.size.small, input.align);\n}\n\nfunction paintRawCellText(\n opts: CanvasTableOptions,\n x: number,\n y: number,\n text: string,\n font: string,\n color: string,\n size: number,\n align: CanvasTextAlign = 'left',\n): void {\n if (!text) return;\n paintCanvasText(opts.ctx, {\n x,\n y,\n text,\n font,\n color,\n size,\n align,\n baseline: 'middle',\n });\n}\n"],
5
- "mappings": "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",
6
- "names": []
4
+ "sourcesContent": ["import { paintCanvasText } from '../../render/overlayText';\nimport { ellipsize, measureText } from '../../render/text';\nimport { RoughPen } from '../../rough';\nimport { roundedRect } from '../../shape';\nimport { recordCanvasLabel, type LabelRole } from '../../render/labelLedger';\nimport {\n BAR_GAP,\n BAR_LANE_ALPHA,\n BAR_OVERLAY_ALPHA,\n barFill,\n barTrack,\n buildColumnFormatter,\n negativeTextColor,\n type CellPaint,\n type ColumnFormatter,\n} from './conditional';\nimport { layoutColumns } from './layout';\nimport { sparklineGeometry } from './sparkline';\nimport { fontFor, resolveTableStyle, rowBackground, type TableStyle } from './style';\nimport {\n cellText,\n defaultRowInfo,\n normalizedHeaderRows,\n sumWidths,\n type HeaderCell,\n type RowKind,\n type TableViewInput,\n type ViewCell,\n type ViewRowInfo,\n} from './types';\n\nexport type CanvasTableOptions = TableViewInput & {\n ctx: CanvasRenderingContext2D;\n /** Disclose rows/columns that a static export cannot show (default true). */\n clippedCue?: boolean;\n /** Rows the table measures for column widths (all hierarchy rows of a matrix). */\n measure?: Pick<TableViewInput, 'rowCount' | 'getCell' | 'rowInfo'>;\n};\n\nconst DEFAULT_FORMAT_KINDS: readonly RowKind[] = ['leaf'];\n\ninterface Frame {\n o: CanvasTableOptions;\n ctx: CanvasRenderingContext2D;\n style: TableStyle;\n widths: number[];\n valueWidths: number[];\n formatters: Array<ColumnFormatter | null>;\n pen: RoughPen | null;\n x0: number;\n width: number;\n}\n\n/**\n * Paint a table into a canvas \u2014 the static (headless/PNG) counterpart of the\n * DOM table, sharing its layout, styling and conditional formatting. A static\n * snapshot cannot scroll, so rows and columns that do not fit are counted,\n * disclosed in a continuation row, and recorded as suppressed labels.\n */\nexport function paintTableCanvas(opts: CanvasTableOptions): void {\n const { ctx, rect, tokens } = opts;\n const style = resolveTableStyle(tokens, opts.density, opts.gridlines);\n const m = style.metrics;\n const formatters = opts.formatters ?? opts.columns.map((column, i) =>\n buildColumnFormatter(column.conditionalFormat, opts.conditionalDomains?.[i] ?? null, tokens, style.color.background));\n const available = Math.max(0, rect.width - 2);\n const layout = layoutColumns(opts.measure ? { ...opts, ...opts.measure } : opts, style, formatters, available, 'static');\n const widths = layout.widths.slice(0, layout.visibleCount);\n const hiddenColumns = opts.columns.length - widths.length;\n opts.widths = widths;\n\n const headerRows = normalizedHeaderRows(opts);\n const headerHeight = headerRows.length * m.headerHeight;\n const footerHeight = opts.footerRow ? m.rowHeight : 0;\n const capacity = Math.max(0, Math.floor((rect.height - 2 - headerHeight - footerHeight) / m.rowHeight));\n const clipped = capacity < opts.rowCount || hiddenColumns > 0;\n const cue = clipped && opts.clippedCue !== false && capacity > 1;\n const rowsToDraw = Math.max(0, Math.min(opts.rowCount, capacity - (cue ? 1 : 0)));\n const bodyRows = rowsToDraw + (cue ? 1 : 0);\n const frameHeight = Math.max(0, Math.min(rect.height, headerHeight + bodyRows * m.rowHeight + footerHeight + 2));\n const frameWidth = Math.max(0, Math.min(rect.width, sumWidths(widths) + 2));\n\n opts.labels?.omit({ role: 'data-label', reason: 'static-viewport', required: true,\n count: (opts.rowCount - rowsToDraw) * opts.columns.length + rowsToDraw * hiddenColumns, path: '/dimensions' });\n if (opts.dataRepresentation === 'rows') opts.evidence?.data(opts.columns.length ? rowsToDraw : 0);\n else if (opts.dataRepresentation === 'aggregate') {\n opts.evidence?.data(opts.sourceRepresentedRows ?? opts.evidence.snapshot().data.inputRows, 'aggregate');\n }\n\n const pen = opts.sketch ? new RoughPen(ctx, opts.sketch) : null;\n const f: Frame = { o: opts, ctx, style, widths, valueWidths: layout.valueWidths, formatters, pen, x0: rect.x + 1, width: frameWidth };\n\n ctx.save();\n ctx.beginPath();\n if (pen) ctx.rect(rect.x, rect.y, frameWidth, frameHeight);\n else roundedRect(ctx, rect.x, rect.y, frameWidth, frameHeight, style.radius);\n ctx.fillStyle = style.color.background;\n ctx.fill();\n ctx.clip();\n\n paintHeader(f, headerRows);\n const info = opts.rowInfo ?? defaultRowInfo;\n const bodyTop = rect.y + 1 + headerHeight;\n for (let row = 0; row < rowsToDraw; row++) paintRow(f, row, info(row), bodyTop + row * m.rowHeight);\n if (cue) {\n paintCue(f, bodyTop + rowsToDraw * m.rowHeight, opts.rowCount - rowsToDraw, hiddenColumns);\n } else if (clipped && opts.clippedCue !== false) {\n opts.labels?.omit({ role: 'other', reason: 'space', required: false, example: 'Additional rows or columns', path: '/dimensions' });\n }\n if (opts.footerRow) paintFooter(f, bodyTop + bodyRows * m.rowHeight);\n const rulesBottom = bodyTop + rowsToDraw * m.rowHeight;\n paintVerticalRules(f, bodyTop - headerHeight, rulesBottom, headerRows.length);\n if (opts.footerRow) paintVerticalRules(f, bodyTop + bodyRows * m.rowHeight, bodyTop + bodyRows * m.rowHeight + footerHeight, 0);\n ctx.restore();\n\n if (pen) pen.rect(rect.x, rect.y, frameWidth, frameHeight, { stroke: tokens.color.border });\n else {\n ctx.save();\n ctx.beginPath();\n roundedRect(ctx, rect.x + 0.5, rect.y + 0.5, Math.max(0, frameWidth - 1), Math.max(0, frameHeight - 1), style.radius);\n ctx.lineWidth = 1;\n ctx.strokeStyle = tokens.color.border;\n ctx.stroke();\n ctx.restore();\n }\n}\n\nfunction colX(f: Frame, col: number): number {\n return f.x0 + sumWidths(f.widths, 0, col);\n}\n\nfunction paintHeader(f: Frame, rows: HeaderCell[][]): void {\n const { o, style } = f;\n const m = style.metrics;\n const top = o.rect.y + 1;\n fillRect(f, f.x0, top, f.width - 2, rows.length * m.headerHeight, style.color.headerBg);\n rows.forEach((row, rowIndex) => {\n let cursor = 0;\n for (const cell of row) {\n const start = cell.colIndex ?? cursor;\n const span = Math.max(1, cell.colSpan ?? 1);\n cursor = start + span;\n if (start >= f.widths.length) {\n o.labels?.omit({ role: 'axis-label', reason: 'static-viewport', required: true, example: cell.title, path: '/columns' });\n continue;\n }\n const x = colX(f, start);\n const w = sumWidths(f.widths, start, Math.min(f.widths.length, start + span));\n const y = top + rowIndex * m.headerHeight;\n const h = m.headerHeight * Math.max(1, cell.rowSpan ?? 1);\n const band = cell.colIndex == null && span > 1;\n const sorted = cell.colIndex != null && o.sortState?.col === cell.colIndex;\n const arrow = sorted ? (o.sortState?.dir === 'desc' ? '\u2193' : '\u2191') : '';\n const align = cell.align ?? 'left';\n const arrowRoom = arrow ? 14 : 0;\n paintText(f, {\n x: align === 'right' ? x + arrowRoom : x, y, width: w - arrowRoom, height: h, text: cell.title, align,\n color: sorted ? style.color.text : style.color.headerText, weight: style.weight.bold,\n background: style.color.headerBg, role: 'axis-label', padLeft: m.paddingX, padRight: m.paddingX,\n });\n if (arrow) {\n const font = fontFor(style, style.weight.bold);\n const label = Math.min(measureText(cell.title, font).width, w - m.paddingX * 2 - arrowRoom);\n const ax = align === 'right' ? x + w - m.paddingX - label - 12 : align === 'center' ? x + (w + label) / 2 + 3 : x + m.paddingX + label + 3;\n paintCanvasText(f.ctx, { x: ax, y: y + h / 2, text: arrow, font, color: style.color.accent, size: m.fontSize, baseline: 'middle' });\n }\n hRule(f, x, x + w, y + h, band ? style.color.rule : style.color.ruleStrong);\n if (start > 0 && o.columns[start]?.groupStart) vRule(f, x, y, y + h, style.color.rule);\n }\n });\n}\n\nfunction paintRow(f: Frame, row: number, info: ViewRowInfo, y: number): void {\n const { o, style } = f;\n const m = style.metrics;\n const stripe = o.striped === true && row % 2 === 1 && info.kind === 'leaf';\n const rowBg = o.highlighted?.(row) ? style.color.highlight : rowBackground(style, info.kind, stripe);\n fillRect(f, f.x0, y, f.width - 2, m.rowHeight, rowBg);\n const kinds = o.formatKinds ?? DEFAULT_FORMAT_KINDS;\n const rowFormatters = o.rowFormatters ? o.rowFormatters(row) : kinds.includes(info.kind) ? f.formatters : null;\n for (let col = 0; col < f.widths.length; col++) {\n const cell = o.getCell(row, col);\n const formatter = rowFormatters?.[col] ?? null;\n const paint = formatter ? formatter(cell) : null;\n paintCell(f, row, col, info, cell, paint, y, rowBg);\n }\n if (info.kind === 'subtotal') hRule(f, f.x0, f.x0 + f.width - 2, y, style.color.rule);\n if (style.gridlines === 'horizontal' || style.gridlines === 'both') hRule(f, f.x0, f.x0 + f.width - 2, y + m.rowHeight, style.color.rule);\n}\n\nfunction paintCell(\n f: Frame, row: number, col: number, info: ViewRowInfo, cell: ViewCell, paint: CellPaint | null, y: number, rowBg: string,\n): void {\n const { o, style } = f;\n const m = style.metrics;\n const column = o.columns[col];\n const x = colX(f, col);\n const w = f.widths[col];\n const bg = paint?.background ?? rowBg;\n if (paint?.background) fillRect(f, x, y, w, m.rowHeight, paint.background);\n const strong = info.kind !== 'leaf';\n const weight = paint?.weight ?? (strong || column.total ? style.weight.bold : style.weight.normal);\n const color = paint?.color ?? negativeTextColor(cell.value, column, style.color.text, style.color.negative);\n const text = paint?.showValue === false ? '' : cellText(cell, column);\n if (countsAsMark(o, col, cell)) o.evidence?.mark('cell', x, y, w, m.rowHeight, color, 1, o.rect, 1, bg);\n if (column.rowHeader) {\n const indent = info.depth * m.indent;\n const toggleX = x + m.paddingX + indent;\n if (info.expandable) paintChevron(f, toggleX, y + m.rowHeight / 2, info.expanded !== false);\n const hierarchy = info.expandable || hasHierarchy(o);\n const left = m.paddingX + indent + (hierarchy ? m.toggle + 4 : 0);\n paintText(f, { x, y, width: w, height: m.rowHeight, text, align: 'left', color, weight, background: bg, padLeft: left, padRight: m.paddingX });\n return;\n }\n if (column.sparkline && Array.isArray(cell.value)) {\n paintSparkline(f, cell.value, column.sparkline, x + m.paddingX, y + 6, Math.max(0, w - m.paddingX * 2), m.rowHeight - 12);\n return;\n }\n if (paint?.bar) {\n const track = barTrack(w, m.paddingX, f.valueWidths[col] ?? 0, column.align, paint.showValue !== false);\n paintBar(f, x + track.left, y, track.width, paint, track.overlay);\n }\n const iconFont = fontFor(style, style.weight.bold);\n const iconW = paint?.icon ? measureText(paint.icon, iconFont).width : 0;\n const gap = paint?.icon ? 6 : 0;\n const font = fontFor(style, weight);\n const budget = Math.max(0, w - m.paddingX * 2 - iconW - gap);\n const shown = ellipsize(text, budget, font);\n const textW = measureText(shown, font).width;\n const group = textW + iconW + gap;\n const start = column.align === 'right' ? x + w - m.paddingX - group : column.align === 'center' ? x + (w - group) / 2 : x + m.paddingX;\n const iconFirst = paint?.icon && paint.iconPosition !== 'right';\n const textX = iconFirst ? start + iconW + gap : start;\n const midY = y + m.rowHeight / 2;\n if (paint?.icon) {\n const iconX = iconFirst ? start : start + textW + gap;\n const command = { x: iconX, y: midY, text: paint.icon, font: iconFont, color: paint.iconColor ?? color, size: m.fontSize, baseline: 'middle' as const };\n recordCanvasLabel(o.labels, command, { background: bg, clip: o.rect });\n paintCanvasText(f.ctx, command);\n }\n if (!text) return;\n const command = { x: textX, y: midY, text: shown, font, color, size: m.fontSize, baseline: 'middle' as const };\n recordCanvasLabel(o.labels, command, { fullText: text, budget, background: bg, clip: o.rect });\n if (!shown) o.labels?.omit({ role: 'data-label', reason: 'space', required: false });\n else paintCanvasText(f.ctx, command);\n}\n\nfunction hasHierarchy(o: CanvasTableOptions): boolean {\n const source = o.measure ?? o;\n const info = source.rowInfo;\n if (!info) return false;\n for (let i = 0; i < Math.min(source.rowCount, 200); i++) if (info(i).expandable) return true;\n return false;\n}\n\nfunction paintBar(f: Frame, left: number, y: number, track: number, paint: CellPaint, overlay: boolean): void {\n const { ctx, style } = f;\n const m = style.metrics;\n const bar = paint.bar!;\n const bx = left + bar.from * track;\n const bw = Math.max(0, (bar.to - bar.from) * track);\n const by = y + (m.rowHeight - m.barHeight) / 2;\n const fill = barFill(bar.color, overlay ? BAR_OVERLAY_ALPHA : BAR_LANE_ALPHA);\n if (bar.zero !== undefined) {\n const zx = Math.round(left + bar.zero * track) + 0.5;\n ctx.save();\n ctx.strokeStyle = style.color.ruleStrong;\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.moveTo(zx, by - 2);\n ctx.lineTo(zx, by + m.barHeight + 2);\n ctx.stroke();\n ctx.restore();\n }\n if (bw <= 0) return;\n if (f.pen) {\n f.pen.rect(bx, by, bw, m.barHeight, { stroke: fill, fill, fillAlpha: 0.9, strokeAlpha: 0.9 });\n return;\n }\n ctx.save();\n ctx.beginPath();\n roundedRect(ctx, bx, by, bw, m.barHeight, Math.min(2, bw / 2));\n ctx.fillStyle = fill;\n ctx.fill();\n ctx.restore();\n}\n\nfunction paintSparkline(f: Frame, values: unknown[], spark: NonNullable<CanvasTableOptions['columns'][number]['sparkline']>, x: number, y: number, w: number, h: number): void {\n if (w <= 2 || h <= 2) return;\n const shape = sparklineGeometry(values, spark, w, h);\n if (!shape.points.length) return;\n const ctx = f.ctx;\n const color = spark.color ?? f.o.tokens.color.accent;\n ctx.save();\n ctx.translate(x, y);\n if (spark.type === 'bar') {\n ctx.fillStyle = barFill(color, 0.85);\n for (const p of shape.points) ctx.fillRect(p.x - shape.barWidth / 2, Math.min(p.y, p.base), shape.barWidth, Math.max(0.5, Math.abs(p.base - p.y)));\n } else {\n if (spark.type === 'area') {\n ctx.fillStyle = barFill(color, 0.18);\n for (const run of shape.runs) {\n if (run.length < 2) continue;\n ctx.beginPath();\n ctx.moveTo(run[0].x, run[0].base);\n for (const p of run) ctx.lineTo(p.x, p.y);\n ctx.lineTo(run[run.length - 1].x, run[run.length - 1].base);\n ctx.closePath();\n ctx.fill();\n }\n }\n ctx.strokeStyle = color;\n ctx.lineWidth = 1.5;\n ctx.lineJoin = 'round';\n ctx.lineCap = 'round';\n for (const run of shape.runs) {\n ctx.beginPath();\n run.forEach((p, i) => (i ? ctx.lineTo(p.x, p.y) : ctx.moveTo(p.x, p.y)));\n if (run.length === 1) ctx.lineTo(run[0].x + 0.01, run[0].y);\n ctx.stroke();\n }\n }\n ctx.restore();\n f.o.evidence?.segments(shape.points.length);\n}\n\nfunction paintChevron(f: Frame, x: number, cy: number, expanded: boolean): void {\n const { ctx, style } = f;\n const box = style.metrics.toggle;\n const cx = x + box / 2;\n ctx.save();\n ctx.strokeStyle = style.color.textMuted;\n ctx.lineWidth = 1.6;\n ctx.lineCap = 'round';\n ctx.lineJoin = 'round';\n ctx.beginPath();\n if (expanded) {\n ctx.moveTo(cx - 3, cy - 1.5);\n ctx.lineTo(cx, cy + 1.5);\n ctx.lineTo(cx + 3, cy - 1.5);\n } else {\n ctx.moveTo(cx - 1.5, cy - 3);\n ctx.lineTo(cx + 1.5, cy);\n ctx.lineTo(cx - 1.5, cy + 3);\n }\n ctx.stroke();\n ctx.restore();\n}\n\nfunction paintFooter(f: Frame, y: number): void {\n const { o, style } = f;\n const m = style.metrics;\n const kind: RowKind = o.footerRow?.kind === 'grandtotal' ? 'grandtotal' : 'subtotal';\n fillRect(f, f.x0, y, f.width - 2, m.rowHeight, style.color.totalBg);\n hRule(f, f.x0, f.x0 + f.width - 2, y, style.color.ruleStrong);\n for (let col = 0; col < f.widths.length; col++) {\n const cell = o.footerRow?.cells[col] ?? { value: null, raw: null };\n const info: ViewRowInfo = { kind, depth: 0 };\n if (o.dataRepresentation === 'aggregate' || o.columns[col]?.rowHeader) {\n paintCell(f, -1, col, info, cell, null, y, style.color.totalBg);\n continue;\n }\n const column = o.columns[col];\n const color = negativeTextColor(cell.value, column, style.color.text, style.color.negative);\n paintText(f, {\n x: colX(f, col), y, width: f.widths[col], height: m.rowHeight, text: cellText(cell, column), align: column.align,\n color, weight: style.weight.bold, background: style.color.totalBg, padLeft: m.paddingX, padRight: m.paddingX,\n });\n }\n}\n\nfunction paintCue(f: Frame, y: number, remaining: number, hiddenColumns: number): void {\n const { style } = f;\n const m = style.metrics;\n fillRect(f, f.x0, y, f.width - 2, m.rowHeight, style.color.background);\n paintText(f, {\n x: f.x0, y, width: f.width - 2, height: m.rowHeight,\n text: hiddenColumns\n ? `\u2026${remaining ? `${remaining} more rows \u00B7 ` : ''}${hiddenColumns} more columns`\n : `\u2026${remaining} more`,\n align: 'center', color: style.color.textMuted, weight: style.weight.medium,\n background: style.color.background, padLeft: m.paddingX, padRight: m.paddingX,\n });\n}\n\nfunction paintVerticalRules(f: Frame, top: number, bottom: number, headerRowCount: number): void {\n const { o, style } = f;\n const all = style.gridlines === 'vertical' || style.gridlines === 'both';\n const bodyTop = top + headerRowCount * style.metrics.headerHeight;\n for (let col = 1; col < f.widths.length; col++) {\n const x = colX(f, col);\n if (all) vRule(f, x, top, bottom, style.color.rule);\n else if (o.columns[col]?.groupStart) vRule(f, x, bodyTop, bottom, style.color.rule);\n if (col === (o.frozenColumns ?? 0) && col > 0 && !all) vRule(f, x, bodyTop, bottom, style.color.ruleStrong);\n }\n}\n\nfunction fillRect(f: Frame, x: number, y: number, w: number, h: number, color: string): void {\n f.ctx.fillStyle = color;\n f.ctx.fillRect(x, y, w, h);\n}\n\nfunction hRule(f: Frame, x1: number, x2: number, y: number, color: string): void {\n if (f.pen) {\n f.pen.polyline([{ x: x1, y }, { x: x2, y }], { stroke: f.o.tokens.color.border, strokeWidth: 1 });\n return;\n }\n const yy = Math.round(y) - 0.5;\n f.ctx.save();\n f.ctx.strokeStyle = color;\n f.ctx.lineWidth = 1;\n f.ctx.beginPath();\n f.ctx.moveTo(x1, yy);\n f.ctx.lineTo(x2, yy);\n f.ctx.stroke();\n f.ctx.restore();\n}\n\nfunction vRule(f: Frame, x: number, y1: number, y2: number, color: string): void {\n if (f.pen) {\n f.pen.polyline([{ x, y: y1 }, { x, y: y2 }], { stroke: f.o.tokens.color.border, strokeWidth: 1 });\n return;\n }\n const xx = Math.round(x) + 0.5;\n f.ctx.save();\n f.ctx.strokeStyle = color;\n f.ctx.lineWidth = 1;\n f.ctx.beginPath();\n f.ctx.moveTo(xx, y1);\n f.ctx.lineTo(xx, y2);\n f.ctx.stroke();\n f.ctx.restore();\n}\n\ninterface TextInput {\n x: number;\n y: number;\n width: number;\n height: number;\n text: string;\n align: 'left' | 'center' | 'right';\n color: string;\n weight: number;\n background: string;\n padLeft: number;\n padRight: number;\n role?: LabelRole;\n}\n\nfunction paintText(f: Frame, input: TextInput): void {\n const { o, style } = f;\n const font = fontFor(style, input.weight);\n const budget = Math.max(0, input.width - input.padLeft - input.padRight);\n const text = ellipsize(input.text, budget, font);\n const x = input.align === 'right'\n ? input.x + input.width - input.padRight\n : input.align === 'center'\n ? input.x + input.padLeft + budget / 2\n : input.x + input.padLeft;\n const command = { x, y: input.y + input.height / 2, text, font, color: input.color, size: style.metrics.fontSize, align: input.align, baseline: 'middle' as const };\n recordCanvasLabel(o.labels, command, { fullText: input.text, budget, background: input.background, role: input.role, clip: o.rect });\n if (!text && input.text) o.labels?.omit({ role: input.role ?? 'data-label', reason: 'space', required: input.role === 'axis-label' });\n if (text) paintCanvasText(f.ctx, command);\n}\n\nfunction countsAsMark(o: TableViewInput, col: number, cell: ViewCell): boolean {\n if (o.dataRepresentation !== 'aggregate') return true;\n return !o.columns[col]?.rowHeader && typeof cell.raw === 'number' && Number.isFinite(cell.raw);\n}\n\nexport { BAR_GAP };\n"],
5
+ "mappings": "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",
6
+ "names": ["command"]
7
7
  }
@@ -1,51 +1,77 @@
1
- import type { ResolvedSketch } from '../../spec/sketch.js';
1
+ import type { ConditionalFormat } from '../../spec/types.js';
2
2
  import type { ThemeTokens } from '../../theme/index.js';
3
- import { RoughPen } from '../../rough/index.js';
4
- import { BuildTableOptions, CanvasTableOptions, ViewColumn } from './types.js';
5
- export declare function applyConditionalFormatting(td: HTMLTableCellElement, opts: BuildTableOptions, column: ViewColumn, colIndex: number, cell: {
6
- value: unknown;
7
- raw: number | string | null;
8
- }, rowBg: string, rowIndex?: number): void;
9
- /**
10
- * Build a hand-drawn data-bar as an embedded canvas positioned inside its cell.
11
- * Geometry mirrors the headless `paintDataBar` (4px inset each side) so the DOM
12
- * and PNG sketch bars are identical; a small pad keeps the outer wobble from
13
- * being clipped at the canvas edge.
14
- */
15
- export declare function buildSketchDataBar(sketch: ResolvedSketch, color: string, colWidth: number, rowHeight: number, leftRatio: number, widthRatio: number, seed: number): HTMLCanvasElement | null;
16
- export declare function setCellBaseStyles(cell: HTMLTableCellElement, tokens: ThemeTokens, align: 'left' | 'center' | 'right', sticky: boolean, padding?: string, borderColor?: string): void;
17
- /**
18
- * Grid line color for the DOM table. In sketch mode the clean 1px borders are
19
- * made transparent so they don't double up with the hand-drawn grid overlay
20
- * (see `paintSketchGridOverlay`); the layout-reserving 1px is kept.
21
- */
22
- export declare function gridBorderColor(opts: BuildTableOptions): string;
23
- export declare function applyNegativeStyle(el: HTMLElement, value: unknown, column: Pick<ViewColumn, 'negativeStyle'>): void;
24
- interface CanvasConditional {
3
+ import type { RGBA } from '../../types.js';
4
+ import { type Interpolator } from '../../color/index.js';
5
+ /** How a single cell is painted beyond its plain formatted value. */
6
+ export interface CellPaint {
25
7
  background?: string;
26
8
  color?: string;
27
- weight?: number | string;
9
+ weight?: number;
28
10
  icon?: string;
29
11
  iconColor?: string;
30
12
  iconPosition?: 'left' | 'right';
13
+ /** False hides the formatted value (bar-only cells). */
31
14
  showValue?: boolean;
32
- bar?: {
33
- leftRatio: number;
34
- widthRatio: number;
35
- color: string;
36
- };
15
+ bar?: BarPaint;
16
+ }
17
+ /** A data bar as fractions of its column's bar track. */
18
+ export interface BarPaint {
19
+ from: number;
20
+ to: number;
21
+ /** Zero baseline for diverging bars (fraction of the track). */
22
+ zero?: number;
23
+ color: string;
37
24
  }
38
- export declare function resolveCanvasConditional(opts: CanvasTableOptions, column: ViewColumn, colIndex: number, cell: {
25
+ export interface FormatCell {
39
26
  value: unknown;
40
27
  raw: number | string | null;
41
- }, rowBg: string): CanvasConditional;
42
- export declare function paintDataBar(opts: CanvasTableOptions, x: number, y: number, width: number, height: number, bar: {
43
- leftRatio: number;
44
- widthRatio: number;
45
- color: string;
46
- }, pen?: RoughPen | null): void;
47
- export declare function canvasRowBackground(opts: CanvasTableOptions, rowIndex: number, cls: 'normal' | 'subtotal' | 'grandtotal'): string;
48
- export declare function negativeTextColor(value: unknown, column: Pick<ViewColumn, 'negativeStyle'>, fallback: string): string;
49
- export declare function rowBackground(opts: BuildTableOptions, rowIndex: number, cls: 'normal' | 'subtotal' | 'grandtotal'): string;
50
- export {};
28
+ }
29
+ export type ColumnFormatter = (cell: FormatCell) => CellPaint | null;
30
+ /** Fill alpha for bars that sit beside their value, and for bars drawn under text in narrow columns. */
31
+ export declare const BAR_LANE_ALPHA = 0.88;
32
+ export declare const BAR_OVERLAY_ALPHA = 0.26;
33
+ /** Narrowest bar track worth drawing beside the value; below it the bar sits under the text. */
34
+ export declare const MIN_BAR_LANE = 28;
35
+ export declare const BAR_GAP = 8;
36
+ export declare function resolveConditionalDomain(conditionalFormat: ConditionalFormat | undefined, values: readonly (number | null | undefined)[]): [number, number] | null;
37
+ /**
38
+ * Compile a column's conditional format once: color ramps, domains and theme
39
+ * adaptations are resolved here so each visible cell only maps its value.
40
+ */
41
+ export declare function buildColumnFormatter(cf: ConditionalFormat | undefined, domain: [number, number] | null, tokens: ThemeTokens, background: string): ColumnFormatter | null;
42
+ /** Bar track geometry inside a cell, relative to the cell's left edge. */
43
+ export interface BarTrack {
44
+ left: number;
45
+ width: number;
46
+ /** True when the bar sits under the value text (narrow columns). */
47
+ overlay: boolean;
48
+ }
49
+ export declare function barTrack(cellWidth: number, paddingX: number, valueWidth: number, align: 'left' | 'center' | 'right', showValue: boolean): BarTrack;
50
+ /**
51
+ * On dark surfaces a ramp whose neutral end is near-white glares, and its most
52
+ * intense end is darkest. Mirror lightness (keeping hue/chroma) so "more" reads
53
+ * brighter and the neutral end sinks toward the background.
54
+ */
55
+ export declare function adaptRampForDark(interpolator: Interpolator, neutralAt: number): Interpolator;
56
+ /** Nudge a text color's lightness until it reaches `min` contrast on `bg`. */
57
+ export declare function ensureContrast(color: RGBA, bg: RGBA, min: number): RGBA;
58
+ export declare function semanticTonePalette(tokens: {
59
+ dark?: boolean;
60
+ color: {
61
+ positive: string;
62
+ negative: string;
63
+ };
64
+ }): {
65
+ up: string;
66
+ mid: string;
67
+ down: string;
68
+ };
69
+ export declare function isNegative(value: unknown): boolean;
70
+ /** Text color for a value whose column paints negatives red. */
71
+ export declare function negativeTextColor(value: unknown, column: {
72
+ negativeStyle?: 'sign' | 'parens' | 'red' | 'parens-red';
73
+ }, fallback: string, negative: string): string;
74
+ /** Translucent CSS color for a bar fill. */
75
+ export declare function barFill(color: string, alpha: number): string;
76
+ export declare function normalized(value: number, domain: [number, number]): number;
51
77
  //# sourceMappingURL=conditional.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conditional.d.ts","sourceRoot":"","sources":["../../../src/charts/tableView/conditional.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conditional.d.ts","sourceRoot":"","sources":["../../../src/charts/tableView/conditional.ts"],"names":[],"mappings":"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"}