@k2b/ui 0.50.0 → 0.51.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 (294) hide show
  1. package/dist/base.css +32 -1
  2. package/dist/browser/actions/Button.js.map +1 -1
  3. package/dist/browser/actions/CommandList.js +861 -0
  4. package/dist/browser/actions/CommandList.js.map +1 -0
  5. package/dist/browser/actions/CommandMenu.js +237 -0
  6. package/dist/browser/actions/CommandMenu.js.map +1 -0
  7. package/dist/browser/actions/Dropdown.js +43 -10
  8. package/dist/browser/actions/Dropdown.js.map +1 -1
  9. package/dist/browser/actions/command-dock.js +47 -0
  10. package/dist/browser/actions/command-dock.js.map +1 -0
  11. package/dist/browser/actions/command-items.js +84 -0
  12. package/dist/browser/actions/command-items.js.map +1 -0
  13. package/dist/browser/actions/command-messages.js +42 -0
  14. package/dist/browser/actions/command-messages.js.map +1 -0
  15. package/dist/browser/actions/index.js +1 -0
  16. package/dist/browser/actions/index.js.map +1 -1
  17. package/dist/browser/charts/core/area.js +3 -5
  18. package/dist/browser/charts/core/area.js.map +1 -1
  19. package/dist/browser/charts/core/calendar.js +1 -1
  20. package/dist/browser/charts/core/calendar.js.map +1 -1
  21. package/dist/browser/charts/core/chart-messages.js +17 -0
  22. package/dist/browser/charts/core/chart-messages.js.map +1 -0
  23. package/dist/browser/charts/core/hbar-layout.js +118 -0
  24. package/dist/browser/charts/core/hbar-layout.js.map +1 -0
  25. package/dist/browser/charts/core/hbar.js +39 -0
  26. package/dist/browser/charts/core/hbar.js.map +1 -0
  27. package/dist/browser/charts/core/index.js +7 -2
  28. package/dist/browser/charts/core/index.js.map +1 -1
  29. package/dist/browser/charts/core/map.js +116 -0
  30. package/dist/browser/charts/core/map.js.map +1 -0
  31. package/dist/browser/charts/core/registry.js +22 -15
  32. package/dist/browser/charts/core/registry.js.map +1 -1
  33. package/dist/browser/charts/core/render-size.js +13 -0
  34. package/dist/browser/charts/core/render-size.js.map +1 -0
  35. package/dist/browser/charts/core/render.js +20 -10
  36. package/dist/browser/charts/core/render.js.map +1 -1
  37. package/dist/browser/charts/core/snapshot.js +3 -3
  38. package/dist/browser/charts/core/snapshot.js.map +1 -1
  39. package/dist/browser/charts/core/svg-renderers.js +2406 -0
  40. package/dist/browser/charts/core/svg-renderers.js.map +1 -0
  41. package/dist/browser/charts/core/svg.js +4 -2525
  42. package/dist/browser/charts/core/svg.js.map +1 -1
  43. package/dist/browser/charts/core/types.js +0 -2
  44. package/dist/browser/charts/core/types.js.map +1 -1
  45. package/dist/browser/charts/core/waterfall.js +162 -0
  46. package/dist/browser/charts/core/waterfall.js.map +1 -0
  47. package/dist/browser/charts/description.js +2 -0
  48. package/dist/browser/charts/description.js.map +1 -0
  49. package/dist/browser/charts.js.map +1 -1
  50. package/dist/browser/content/Chart.js +14 -628
  51. package/dist/browser/content/Chart.js.map +1 -1
  52. package/dist/browser/content/ChartRoot.js +632 -0
  53. package/dist/browser/content/ChartRoot.js.map +1 -0
  54. package/dist/browser/content/ChartSparkline.js +24 -0
  55. package/dist/browser/content/ChartSparkline.js.map +1 -0
  56. package/dist/browser/content/FileView.js +111 -61
  57. package/dist/browser/content/FileView.js.map +1 -1
  58. package/dist/browser/content/Lightbox.js +8 -8
  59. package/dist/browser/content/Lightbox.js.map +1 -1
  60. package/dist/browser/content/MapView.js +30 -28
  61. package/dist/browser/content/MapView.js.map +1 -1
  62. package/dist/browser/content/PdfPreview.js +84 -52
  63. package/dist/browser/content/PdfPreview.js.map +1 -1
  64. package/dist/browser/content/PdfViewer.js +588 -0
  65. package/dist/browser/content/PdfViewer.js.map +1 -0
  66. package/dist/browser/content/chart-bar.js +246 -16
  67. package/dist/browser/content/chart-bar.js.map +1 -1
  68. package/dist/browser/content/chart-inspection-core.js +22 -21
  69. package/dist/browser/content/chart-inspection-core.js.map +1 -1
  70. package/dist/browser/content/chart-line-gaps.js +1 -1
  71. package/dist/browser/content/chart-line-gaps.js.map +1 -1
  72. package/dist/browser/content/chart-message-catalog.js +10 -0
  73. package/dist/browser/content/chart-message-catalog.js.map +1 -1
  74. package/dist/browser/content/chart-state-timeline.js +1 -1
  75. package/dist/browser/content/chart-state-timeline.js.map +1 -1
  76. package/dist/browser/content/chart-svg.js +2 -1
  77. package/dist/browser/content/chart-svg.js.map +1 -1
  78. package/dist/browser/content/index.js +1 -0
  79. package/dist/browser/content/index.js.map +1 -1
  80. package/dist/browser/content/pdf-document.js +29 -0
  81. package/dist/browser/content/pdf-document.js.map +1 -0
  82. package/dist/browser/content/pdf-limits.js +31 -0
  83. package/dist/browser/content/pdf-limits.js.map +1 -0
  84. package/dist/browser/content/pdf-messages.js +34 -2
  85. package/dist/browser/content/pdf-messages.js.map +1 -1
  86. package/dist/browser/content/pdf-viewer-engine.js +57 -0
  87. package/dist/browser/content/pdf-viewer-worker.js +28 -0
  88. package/dist/browser/inputs/ChoiceInputs.js +94 -51
  89. package/dist/browser/inputs/ChoiceInputs.js.map +1 -1
  90. package/dist/browser/inputs/ChoiceSlider.js +75 -58
  91. package/dist/browser/inputs/ChoiceSlider.js.map +1 -1
  92. package/dist/browser/inputs/DatePicker.js +113 -98
  93. package/dist/browser/inputs/DatePicker.js.map +1 -1
  94. package/dist/browser/inputs/PeriodPicker.js +874 -0
  95. package/dist/browser/inputs/PeriodPicker.js.map +1 -0
  96. package/dist/browser/inputs/index.js +4 -1
  97. package/dist/browser/inputs/index.js.map +1 -1
  98. package/dist/browser/inputs/input-messages.js +8 -2
  99. package/dist/browser/inputs/input-messages.js.map +1 -1
  100. package/dist/browser/inputs/markdown/MarkdownEditor.js +14 -10
  101. package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
  102. package/dist/browser/inputs/markdown/SlashCommands.js +402 -0
  103. package/dist/browser/inputs/markdown/SlashCommands.js.map +1 -0
  104. package/dist/browser/inputs/period-picker-messages.js +71 -0
  105. package/dist/browser/inputs/period-picker-messages.js.map +1 -0
  106. package/dist/browser/inputs/period.js +263 -0
  107. package/dist/browser/inputs/period.js.map +1 -0
  108. package/dist/browser/layout/DetailPanel.js +147 -120
  109. package/dist/browser/layout/DetailPanel.js.map +1 -1
  110. package/dist/browser/layout/Discussion.js +101 -108
  111. package/dist/browser/layout/Discussion.js.map +1 -1
  112. package/dist/browser/layout/index.js.map +1 -1
  113. package/dist/browser/surfaces/DescriptionList.js +5 -2
  114. package/dist/browser/surfaces/DescriptionList.js.map +1 -1
  115. package/dist/browser/surfaces/StatCell.js +19 -14
  116. package/dist/browser/surfaces/StatCell.js.map +1 -1
  117. package/dist/browser/surfaces/delta-badge.js +16 -2
  118. package/dist/browser/surfaces/delta-badge.js.map +1 -1
  119. package/dist/browser/widgets/DashboardFrame.js +310 -0
  120. package/dist/browser/widgets/DashboardFrame.js.map +1 -0
  121. package/dist/browser/widgets/index.js +1 -0
  122. package/dist/browser/widgets/index.js.map +1 -1
  123. package/dist/licenses/pdfjs-dist.txt +177 -0
  124. package/dist/ssr/actions/Button.js.map +1 -1
  125. package/dist/ssr/actions/CommandList.js +638 -0
  126. package/dist/ssr/actions/CommandList.js.map +1 -0
  127. package/dist/ssr/actions/CommandMenu.js +197 -0
  128. package/dist/ssr/actions/CommandMenu.js.map +1 -0
  129. package/dist/ssr/actions/Dropdown.js +43 -10
  130. package/dist/ssr/actions/Dropdown.js.map +1 -1
  131. package/dist/ssr/actions/command-dock.js +47 -0
  132. package/dist/ssr/actions/command-dock.js.map +1 -0
  133. package/dist/ssr/actions/command-items.js +84 -0
  134. package/dist/ssr/actions/command-items.js.map +1 -0
  135. package/dist/ssr/actions/command-messages.js +42 -0
  136. package/dist/ssr/actions/command-messages.js.map +1 -0
  137. package/dist/ssr/actions/index.js +1 -0
  138. package/dist/ssr/actions/index.js.map +1 -1
  139. package/dist/ssr/charts/core/area.js +3 -5
  140. package/dist/ssr/charts/core/area.js.map +1 -1
  141. package/dist/ssr/charts/core/calendar.js +1 -1
  142. package/dist/ssr/charts/core/calendar.js.map +1 -1
  143. package/dist/ssr/charts/core/chart-messages.js +17 -0
  144. package/dist/ssr/charts/core/chart-messages.js.map +1 -0
  145. package/dist/ssr/charts/core/hbar-layout.js +118 -0
  146. package/dist/ssr/charts/core/hbar-layout.js.map +1 -0
  147. package/dist/ssr/charts/core/hbar.js +39 -0
  148. package/dist/ssr/charts/core/hbar.js.map +1 -0
  149. package/dist/ssr/charts/core/index.js +7 -2
  150. package/dist/ssr/charts/core/index.js.map +1 -1
  151. package/dist/ssr/charts/core/map.js +116 -0
  152. package/dist/ssr/charts/core/map.js.map +1 -0
  153. package/dist/ssr/charts/core/registry.js +22 -15
  154. package/dist/ssr/charts/core/registry.js.map +1 -1
  155. package/dist/ssr/charts/core/render-size.js +13 -0
  156. package/dist/ssr/charts/core/render-size.js.map +1 -0
  157. package/dist/ssr/charts/core/render.js +20 -10
  158. package/dist/ssr/charts/core/render.js.map +1 -1
  159. package/dist/ssr/charts/core/snapshot.js +3 -3
  160. package/dist/ssr/charts/core/snapshot.js.map +1 -1
  161. package/dist/ssr/charts/core/svg-renderers.js +2406 -0
  162. package/dist/ssr/charts/core/svg-renderers.js.map +1 -0
  163. package/dist/ssr/charts/core/svg.js +4 -2525
  164. package/dist/ssr/charts/core/svg.js.map +1 -1
  165. package/dist/ssr/charts/core/types.js +0 -2
  166. package/dist/ssr/charts/core/types.js.map +1 -1
  167. package/dist/ssr/charts/core/waterfall.js +162 -0
  168. package/dist/ssr/charts/core/waterfall.js.map +1 -0
  169. package/dist/ssr/charts/description.js +2 -0
  170. package/dist/ssr/charts/description.js.map +1 -0
  171. package/dist/ssr/charts.js.map +1 -1
  172. package/dist/ssr/content/Chart.js +14 -471
  173. package/dist/ssr/content/Chart.js.map +1 -1
  174. package/dist/ssr/content/ChartRoot.js +475 -0
  175. package/dist/ssr/content/ChartRoot.js.map +1 -0
  176. package/dist/ssr/content/ChartSparkline.js +24 -0
  177. package/dist/ssr/content/ChartSparkline.js.map +1 -0
  178. package/dist/ssr/content/FileView.js +56 -7
  179. package/dist/ssr/content/FileView.js.map +1 -1
  180. package/dist/ssr/content/Lightbox.js +8 -8
  181. package/dist/ssr/content/Lightbox.js.map +1 -1
  182. package/dist/ssr/content/MapView.js +9 -9
  183. package/dist/ssr/content/MapView.js.map +1 -1
  184. package/dist/ssr/content/PdfPreview.js +49 -20
  185. package/dist/ssr/content/PdfPreview.js.map +1 -1
  186. package/dist/ssr/content/PdfViewer.js +484 -0
  187. package/dist/ssr/content/PdfViewer.js.map +1 -0
  188. package/dist/ssr/content/chart-bar.js +246 -16
  189. package/dist/ssr/content/chart-bar.js.map +1 -1
  190. package/dist/ssr/content/chart-inspection-core.js +22 -21
  191. package/dist/ssr/content/chart-inspection-core.js.map +1 -1
  192. package/dist/ssr/content/chart-line-gaps.js +1 -1
  193. package/dist/ssr/content/chart-line-gaps.js.map +1 -1
  194. package/dist/ssr/content/chart-message-catalog.js +10 -0
  195. package/dist/ssr/content/chart-message-catalog.js.map +1 -1
  196. package/dist/ssr/content/chart-state-timeline.js +1 -1
  197. package/dist/ssr/content/chart-state-timeline.js.map +1 -1
  198. package/dist/ssr/content/chart-svg.js +2 -1
  199. package/dist/ssr/content/chart-svg.js.map +1 -1
  200. package/dist/ssr/content/index.js +1 -0
  201. package/dist/ssr/content/index.js.map +1 -1
  202. package/dist/ssr/content/pdf-document.js +29 -0
  203. package/dist/ssr/content/pdf-document.js.map +1 -0
  204. package/dist/ssr/content/pdf-limits.js +31 -0
  205. package/dist/ssr/content/pdf-limits.js.map +1 -0
  206. package/dist/ssr/content/pdf-messages.js +34 -2
  207. package/dist/ssr/content/pdf-messages.js.map +1 -1
  208. package/dist/ssr/inputs/ChoiceInputs.js +49 -12
  209. package/dist/ssr/inputs/ChoiceInputs.js.map +1 -1
  210. package/dist/ssr/inputs/ChoiceSlider.js +17 -12
  211. package/dist/ssr/inputs/ChoiceSlider.js.map +1 -1
  212. package/dist/ssr/inputs/DatePicker.js +14 -9
  213. package/dist/ssr/inputs/DatePicker.js.map +1 -1
  214. package/dist/ssr/inputs/PeriodPicker.js +598 -0
  215. package/dist/ssr/inputs/PeriodPicker.js.map +1 -0
  216. package/dist/ssr/inputs/index.js +4 -1
  217. package/dist/ssr/inputs/index.js.map +1 -1
  218. package/dist/ssr/inputs/input-messages.js +8 -2
  219. package/dist/ssr/inputs/input-messages.js.map +1 -1
  220. package/dist/ssr/inputs/markdown/MarkdownEditor.js +3 -2
  221. package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
  222. package/dist/ssr/inputs/markdown/SlashCommands.js +339 -0
  223. package/dist/ssr/inputs/markdown/SlashCommands.js.map +1 -0
  224. package/dist/ssr/inputs/period-picker-messages.js +71 -0
  225. package/dist/ssr/inputs/period-picker-messages.js.map +1 -0
  226. package/dist/ssr/inputs/period.js +263 -0
  227. package/dist/ssr/inputs/period.js.map +1 -0
  228. package/dist/ssr/layout/DetailPanel.js +27 -4
  229. package/dist/ssr/layout/DetailPanel.js.map +1 -1
  230. package/dist/ssr/layout/Discussion.js +16 -2
  231. package/dist/ssr/layout/Discussion.js.map +1 -1
  232. package/dist/ssr/layout/index.js.map +1 -1
  233. package/dist/ssr/surfaces/DescriptionList.js +1 -1
  234. package/dist/ssr/surfaces/DescriptionList.js.map +1 -1
  235. package/dist/ssr/surfaces/StatCell.js +4 -5
  236. package/dist/ssr/surfaces/StatCell.js.map +1 -1
  237. package/dist/ssr/surfaces/delta-badge.js +16 -2
  238. package/dist/ssr/surfaces/delta-badge.js.map +1 -1
  239. package/dist/ssr/widgets/DashboardFrame.js +200 -0
  240. package/dist/ssr/widgets/DashboardFrame.js.map +1 -0
  241. package/dist/ssr/widgets/index.js +1 -0
  242. package/dist/ssr/widgets/index.js.map +1 -1
  243. package/dist/styles.css +1 -1
  244. package/dist/types/actions/Button.d.ts +1 -1
  245. package/dist/types/actions/CommandList.d.ts +120 -0
  246. package/dist/types/actions/CommandMenu.d.ts +39 -0
  247. package/dist/types/actions/Dropdown.d.ts +17 -0
  248. package/dist/types/actions/command-dock.d.ts +8 -0
  249. package/dist/types/actions/command-items.d.ts +134 -0
  250. package/dist/types/actions/command-messages.d.ts +19 -0
  251. package/dist/types/actions/index.d.ts +3 -0
  252. package/dist/types/charts/core/calendar.d.ts +1 -1
  253. package/dist/types/charts/core/chart-messages.d.ts +5 -0
  254. package/dist/types/charts/core/hbar-layout.d.ts +74 -0
  255. package/dist/types/charts/core/hbar.d.ts +13 -0
  256. package/dist/types/charts/core/index.d.ts +7 -2
  257. package/dist/types/charts/core/map.d.ts +3 -0
  258. package/dist/types/charts/core/registry.d.ts +17 -11
  259. package/dist/types/charts/core/render-size.d.ts +7 -0
  260. package/dist/types/charts/core/render.d.ts +1 -4
  261. package/dist/types/charts/core/snapshot.d.ts +2 -2
  262. package/dist/types/charts/core/svg-renderers.d.ts +722 -0
  263. package/dist/types/charts/core/svg.d.ts +4 -698
  264. package/dist/types/charts/core/types.d.ts +1 -12
  265. package/dist/types/charts/core/waterfall.d.ts +68 -0
  266. package/dist/types/charts/description.d.ts +226 -0
  267. package/dist/types/charts.d.ts +1 -0
  268. package/dist/types/content/Chart.d.ts +3 -91
  269. package/dist/types/content/ChartRoot.d.ts +92 -0
  270. package/dist/types/content/ChartSparkline.d.ts +5 -0
  271. package/dist/types/content/PdfViewer.d.ts +32 -0
  272. package/dist/types/content/chart-bar.d.ts +95 -2
  273. package/dist/types/content/index.d.ts +2 -0
  274. package/dist/types/content/pdf-document.d.ts +5 -0
  275. package/dist/types/content/pdf-engine.d.ts +9 -0
  276. package/dist/types/content/pdf-limits.d.ts +43 -0
  277. package/dist/types/content/pdf-messages.d.ts +16 -0
  278. package/dist/types/inputs/ChoiceInputs.d.ts +4 -0
  279. package/dist/types/inputs/ChoiceSlider.d.ts +12 -0
  280. package/dist/types/inputs/DatePicker.d.ts +22 -0
  281. package/dist/types/inputs/PeriodPicker.d.ts +24 -0
  282. package/dist/types/inputs/index.d.ts +8 -2
  283. package/dist/types/inputs/input-messages.d.ts +3 -0
  284. package/dist/types/inputs/markdown/MarkdownEditor.d.ts +5 -0
  285. package/dist/types/inputs/markdown/SlashCommands.d.ts +20 -0
  286. package/dist/types/inputs/period-picker-messages.d.ts +34 -0
  287. package/dist/types/inputs/period.d.ts +134 -0
  288. package/dist/types/layout/DetailPanel.d.ts +12 -0
  289. package/dist/types/layout/index.d.ts +1 -1
  290. package/dist/types/surfaces/DescriptionList.d.ts +5 -0
  291. package/dist/types/surfaces/StatCell.d.ts +6 -1
  292. package/dist/types/widgets/DashboardFrame.d.ts +58 -0
  293. package/dist/types/widgets/index.d.ts +1 -0
  294. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["charts/core/types.ts"],"sourcesContent":["import type { chartRenderers } from \"./registry\";\n\n/** UI-owned kind union, derived from the renderer registry. */\nexport type ChartKind = keyof typeof chartRenderers;\nexport const chartDatumRoles = [\"point\", \"item\", \"bin\", \"box\", \"outlier\", \"value\", \"cell\", \"interval\"] as const;\nexport type ChartDatumRole = (typeof chartDatumRoles)[number];\n\n/** Renderer metadata. Anchors use the containing SVG's coordinate space. */\nexport type ChartDatum = {\n index: number;\n seriesIndex?: number;\n role: ChartDatumRole;\n label?: string;\n anchor: [number, number];\n grid?: [number, number];\n values: { key: string; value: string | number; formatted?: string }[];\n};\n\n/** Serializable number presentation, compatible with the editor's NumberFormat contract. */\nexport type ChartNumberFormat = {\n style?: \"number\" | \"percent\" | \"currency\";\n currency?: string;\n unit?: string;\n decimals?: number;\n compact?: boolean;\n};\nexport type ChartDateFormat = { date: \"day\" | \"minute\" | \"second\" };\nexport type ChartFormat = ChartNumberFormat | ChartDateFormat;\n"],"mappings":"AAEA;;AAEA,OAAO,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAU;;AAG/G;;AAWA","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["charts/core/types.ts"],"sourcesContent":["import type { chartRenderers } from \"./registry\";\n\n/** UI-owned kind union, derived from the renderer registry. */\nexport type ChartKind = keyof typeof chartRenderers;\nexport const chartDatumRoles = [\"point\", \"item\", \"bin\", \"box\", \"outlier\", \"value\", \"cell\", \"interval\"] as const;\nexport type ChartDatumRole = (typeof chartDatumRoles)[number];\n\n/** Renderer metadata. Anchors use the containing SVG's coordinate space. */\nexport type ChartDatum = {\n index: number;\n seriesIndex?: number;\n role: ChartDatumRole;\n label?: string;\n anchor: [number, number];\n grid?: [number, number];\n values: { key: string; value: string | number; formatted?: string }[];\n};\n\nexport type { ChartDateFormat, ChartFormat, ChartNumberFormat } from \"../description\";\n"],"mappings":"AAEA;;AAEA,OAAO,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAU;;AAG/G","ignoreList":[]}
@@ -0,0 +1,162 @@
1
+ import { chartDatumSvg, escapeXml, niceStep } from "./svg-renderers";
2
+ /** Totals rest on zero; each change starts at the previous running balance. */
3
+ export function waterfallLayout(spec, size) {
4
+ if (![size.width, size.height].every(value => Number.isFinite(value) && value > 0)) throw new RangeError("Invalid waterfall size");
5
+ let balance = spec.start.value;
6
+ if (!Number.isFinite(balance)) throw new RangeError("Waterfall values must be finite");
7
+ const bars = [{
8
+ ...spec.start,
9
+ from: 0,
10
+ to: balance,
11
+ total: true
12
+ }];
13
+ for (const step of spec.steps) {
14
+ const from = balance;
15
+ balance += step.value;
16
+ if (!Number.isFinite(step.value) || !Number.isFinite(balance)) throw new RangeError("Waterfall balances must be finite");
17
+ bars.push({
18
+ ...step,
19
+ from,
20
+ to: balance,
21
+ total: false
22
+ });
23
+ }
24
+ bars.push({
25
+ ...spec.end,
26
+ value: balance,
27
+ from: 0,
28
+ to: balance,
29
+ total: true
30
+ });
31
+ let lo = 0,
32
+ hi = 0;
33
+ for (const bar of bars) {
34
+ lo = Math.min(lo, bar.from, bar.to);
35
+ hi = Math.max(hi, bar.from, bar.to);
36
+ }
37
+ if (!Number.isFinite(hi - lo)) throw new RangeError("Waterfall range must be finite");
38
+ if (lo === hi) hi = lo + 1;
39
+ const step = niceStep(hi - lo, 5);
40
+ const lower = Math.floor(lo / step) * step;
41
+ const upper = Math.ceil(hi / step) * step;
42
+ if (!(step > 0) || ![step, lower, upper, upper - lower].every(Number.isFinite) || lower >= upper) throw new RangeError("Waterfall values cannot form a finite axis; rescale them first");
43
+ // Integer tick indices cannot stall when adjacent floats are large. The five-interval nice step bounds their count.
44
+ const scale = {
45
+ domain: [lower, upper],
46
+ ticks: Array.from({
47
+ length: Math.round((upper - lower) / step) + 1
48
+ }, (_, i) => lower + i * step)
49
+ };
50
+ const format = spec.format ?? new Intl.NumberFormat(spec.locale ?? "en", {
51
+ maximumFractionDigits: 2
52
+ }).format;
53
+ const displayWidth = spec.displayWidth ?? size.width;
54
+ if (!Number.isFinite(displayWidth) || displayWidth <= 0) throw new RangeError("Invalid waterfall display width");
55
+ const ratio = size.width / displayWidth;
56
+ const left = Math.min(size.width * 0.6, Math.max(48, ...scale.ticks.map(v => format(v).length * 7 + 12)) * ratio);
57
+ const top = spec.title || spec.subtitle ? 58 : 24;
58
+ const bottom = Math.max(top + 1, size.height - 30);
59
+ const right = size.width - 10;
60
+ const slot = (right - left) / bars.length;
61
+ const project = value => bottom - (value - scale.domain[0]) / (scale.domain[1] - scale.domain[0]) * (bottom - top);
62
+ const amount = bar => `${bar.total ? "" : bar.value > 0 ? "↙ " : bar.value < 0 ? "↗ " : "= "}${format(bar.total ? bar.value : Math.abs(bar.value))}`;
63
+ const datum = (bar, index, center, formattedAmount) => ({
64
+ role: "item",
65
+ index,
66
+ label: bar.label,
67
+ anchor: [center, top],
68
+ values: bar.total ? [{
69
+ key: "balance",
70
+ value: bar.to,
71
+ formatted: format(bar.to)
72
+ }] : [{
73
+ key: "before",
74
+ value: bar.from,
75
+ formatted: format(bar.from)
76
+ }, {
77
+ key: bar.value > 0 ? "inflow" : bar.value < 0 ? "outflow" : "change",
78
+ value: bar.value,
79
+ formatted: formattedAmount
80
+ }, {
81
+ key: "after",
82
+ value: bar.to,
83
+ formatted: format(bar.to)
84
+ }]
85
+ });
86
+ return {
87
+ bars,
88
+ balance,
89
+ scale,
90
+ left,
91
+ right,
92
+ top,
93
+ bottom,
94
+ slot,
95
+ ratio,
96
+ project,
97
+ format,
98
+ amount,
99
+ datum
100
+ };
101
+ }
102
+ const f = value => String(Math.round(value * 100) / 100);
103
+ const text = (x, y, value, anchor = "middle", extra = "") => `<text x="${f(x)}" y="${f(y)}" text-anchor="${anchor}" fill="currentColor" stroke="none" font-family="var(--k2b-font-sans, sans-serif)" font-size="11" ${extra}>${escapeXml(value)}</text>`;
104
+
105
+ /** Pure SVG, including presentation attributes for PDF and hosts outside .k2b-ui. */
106
+ export function renderWaterfallSvg(spec, responsive = false) {
107
+ return renderWaterfallLayoutSvg(spec, waterfallLayout(spec, spec), responsive);
108
+ }
109
+
110
+ /** Draw the geometry already reserved by a host before its drawing module loads. */
111
+ export function renderWaterfallLayoutSvg(spec, g, responsive = false) {
112
+ const parts = [];
113
+ // The Solid host stretches a stable viewBox. Container queries use its drawn CSS width on the first frame,
114
+ // rather than freezing the labels to the phone fallback or measuring and redrawing after hydration.
115
+ const visibility = minimumWidth => {
116
+ if (!responsive || minimumWidth <= 0) return "";
117
+ const threshold = f(minimumWidth);
118
+ parts.push(`<style>@container (max-width: ${f(minimumWidth - 0.01)}px) { .k2b-waterfall [data-waterfall-min-width="${threshold}"] { display: none; } }</style>`);
119
+ return ` data-waterfall-min-width="${threshold}"`;
120
+ };
121
+ if (spec.title) parts.push(text(spec.width / 2, 16, spec.title));
122
+ if (spec.subtitle) parts.push(text(spec.width / 2, spec.title ? 34 : 16, spec.subtitle));
123
+ parts.push(`<line class="stdlib-chart-axis" x1="${f(g.left)}" x2="${f(g.right)}" y1="${f(g.bottom)}" y2="${f(g.bottom)}" stroke="currentColor" stroke-opacity="0.2"/>`);
124
+ parts.push(`<line class="stdlib-chart-axis" x1="${f(g.left)}" x2="${f(g.left)}" y1="${f(g.top)}" y2="${f(g.bottom)}" stroke="none"/>`);
125
+ for (const tick of g.scale.ticks) {
126
+ const y = g.project(tick);
127
+ parts.push(`<line x1="${f(g.left)}" x2="${f(g.right)}" y1="${f(y)}" y2="${f(y)}" stroke="currentColor" stroke-opacity="${tick === 0 ? ".25" : ".09"}"/>`);
128
+ parts.push(text(g.left - 8, y + 4, g.format(tick), "end", 'class="stdlib-chart-tick-label"'));
129
+ }
130
+ const cssSlot = g.slot / g.ratio;
131
+ const longest = Math.max(1, ...g.bars.map(b => Math.min(18, b.label.length))) * 6;
132
+ const stride = Math.max(1, Math.ceil((longest + 8) / Math.max(1, cssSlot)));
133
+ const endLimit = Math.max(1, Math.min(18, Math.floor((g.right - g.left) / g.ratio / 12) - 1));
134
+ const endLength = Math.min(endLimit, spec.end.label.length);
135
+ g.bars.forEach((bar, index) => {
136
+ const center = g.left + (index + 0.5) * g.slot;
137
+ const width = Math.min(56, g.slot * 0.62);
138
+ const top = Math.min(g.project(bar.from), g.project(bar.to));
139
+ const height = Math.abs(g.project(bar.from) - g.project(bar.to));
140
+ const color = bar.total ? "color-mix(in srgb, var(--k2b-text-muted, #8b8b93) 55%, transparent)" : bar.value > 0 ? "var(--k2b-flow-in-mark, #0891b2)" : bar.value < 0 ? "var(--k2b-flow-out-mark, #8b5cf6)" : "color-mix(in srgb, var(--k2b-text-muted, #8b8b93) 55%, transparent)";
141
+ const amount = g.amount(bar);
142
+ const band = `<rect class="k2b-chart-category-band" x="${f(center - g.slot / 2)}" y="${f(g.top)}" width="${f(g.slot)}" height="${f(g.bottom - g.top)}" fill="currentColor" fill-opacity="0" stroke="none"/>`;
143
+ const mark = `<rect class="k2b-waterfall-bar" x="${f(center - width / 2)}" y="${f(top)}" width="${f(width)}" height="${f(Math.max(height, 1))}" rx="3" fill="${color}" stroke="none"/>`;
144
+ const valueWidth = Math.max(46 * spec.width / width, (amount.length * 6 + 8) * spec.width / g.slot);
145
+ const value = responsive || width / g.ratio >= 46 && amount.length * 6 + 8 <= cssSlot ? text(center, Math.max(g.top - 8, top - 6), amount, "middle", `class="k2b-waterfall-value" font-weight="600"${visibility(valueWidth)}`).replace('fill="currentColor"', 'fill="var(--k2b-text-secondary, #52525b)"') : "";
146
+ parts.push(chartDatumSvg(band + mark + value, g.datum(bar, index, center, amount), spec.inspect ?? false));
147
+ if (index < g.bars.length - 1) parts.push(`<line class="k2b-waterfall-connector" x1="${f(center + width / 2)}" x2="${f(center + g.slot - width / 2)}" y1="${f(g.project(bar.to))}" y2="${f(g.project(bar.to))}" stroke="currentColor" stroke-opacity=".3" stroke-dasharray="3 3"/>`);
148
+ const ending = index === g.bars.length - 1;
149
+ const endClearance = (Math.min(18, bar.label.length) * 3 + endLength * 6 + 8) / Math.max(1, g.right - center);
150
+ if (ending || responsive || index % stride === 0 && (index === 0 || endClearance * g.ratio <= 1)) {
151
+ // Power-of-two subsets keep adjacent labels at least one visible slot apart at every container width.
152
+ let spacing = 1;
153
+ if (index > 0) while (index % (spacing * 2) === 0) spacing *= 2;
154
+ const minimumWidth = index === 0 || ending ? 0 : Math.max((longest + 8) * spec.width / (g.slot * spacing), endClearance * spec.width);
155
+ const limit = ending ? endLimit : responsive ? 18 : Math.max(1, Math.floor(Math.min(cssSlot * stride - 8, 2 * Math.min(center, spec.width - center) / g.ratio) / 6) - 1);
156
+ const label = bar.label.length > limit ? `${bar.label.slice(0, Math.max(0, limit - 1))}…` : bar.label;
157
+ parts.push(text(ending ? g.right : center, g.bottom + 20, label, ending ? "end" : "middle", `class="stdlib-chart-tick-label stdlib-chart-category-label "${visibility(minimumWidth)}`));
158
+ }
159
+ });
160
+ return `<svg xmlns="http://www.w3.org/2000/svg" class="stdlib-chart k2b-waterfall ${escapeXml(spec.className ?? "")}" width="${spec.width}" height="${spec.height}" viewBox="0 0 ${spec.width} ${spec.height}" aria-hidden="true" focusable="false">${parts.join("")}</svg>`;
161
+ }
162
+ //# sourceMappingURL=waterfall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["charts/core/waterfall.ts"],"sourcesContent":["import { chartDatumSvg, escapeXml, niceStep } from \"./svg-renderers\";\nimport type { ChartDatum } from \"./types\";\n\nexport type WaterfallOptions = {\n start: { label: string; value: number };\n steps: { label: string; value: number }[];\n end: { label: string };\n title?: string;\n subtitle?: string;\n className?: string;\n /** Formats balances and absolute changes. */\n format?: (value: number) => string;\n locale?: string;\n /** Displayed width in CSS pixels; defaults to the SVG width. Stretching hosts pass their layout width. */\n displayWidth?: number;\n};\n\nexport type WaterfallBar = { label: string; value: number; from: number; to: number; total: boolean };\n\n/** Totals rest on zero; each change starts at the previous running balance. */\nexport function waterfallLayout(spec: WaterfallOptions, size: { width: number; height: number }) {\n if (![size.width, size.height].every((value) => Number.isFinite(value) && value > 0)) throw new RangeError(\"Invalid waterfall size\");\n let balance = spec.start.value;\n if (!Number.isFinite(balance)) throw new RangeError(\"Waterfall values must be finite\");\n const bars: WaterfallBar[] = [{ ...spec.start, from: 0, to: balance, total: true }];\n for (const step of spec.steps) {\n const from = balance;\n balance += step.value;\n if (!Number.isFinite(step.value) || !Number.isFinite(balance)) throw new RangeError(\"Waterfall balances must be finite\");\n bars.push({ ...step, from, to: balance, total: false });\n }\n bars.push({ ...spec.end, value: balance, from: 0, to: balance, total: true });\n let lo = 0,\n hi = 0;\n for (const bar of bars) {\n lo = Math.min(lo, bar.from, bar.to);\n hi = Math.max(hi, bar.from, bar.to);\n }\n if (!Number.isFinite(hi - lo)) throw new RangeError(\"Waterfall range must be finite\");\n if (lo === hi) hi = lo + 1;\n const step = niceStep(hi - lo, 5);\n const lower = Math.floor(lo / step) * step;\n const upper = Math.ceil(hi / step) * step;\n if (!(step > 0) || ![step, lower, upper, upper - lower].every(Number.isFinite) || lower >= upper)\n throw new RangeError(\"Waterfall values cannot form a finite axis; rescale them first\");\n // Integer tick indices cannot stall when adjacent floats are large. The five-interval nice step bounds their count.\n const scale = {\n domain: [lower, upper] as [number, number],\n ticks: Array.from({ length: Math.round((upper - lower) / step) + 1 }, (_, i) => lower + i * step),\n };\n const format = spec.format ?? new Intl.NumberFormat(spec.locale ?? \"en\", { maximumFractionDigits: 2 }).format;\n const displayWidth = spec.displayWidth ?? size.width;\n if (!Number.isFinite(displayWidth) || displayWidth <= 0) throw new RangeError(\"Invalid waterfall display width\");\n const ratio = size.width / displayWidth;\n const left = Math.min(size.width * 0.6, Math.max(48, ...scale.ticks.map((v) => format(v).length * 7 + 12)) * ratio);\n const top = spec.title || spec.subtitle ? 58 : 24;\n const bottom = Math.max(top + 1, size.height - 30);\n const right = size.width - 10;\n const slot = (right - left) / bars.length;\n const project = (value: number) => bottom - ((value - scale.domain[0]) / (scale.domain[1] - scale.domain[0])) * (bottom - top);\n const amount = (bar: WaterfallBar) =>\n `${bar.total ? \"\" : bar.value > 0 ? \"↙ \" : bar.value < 0 ? \"↗ \" : \"= \"}${format(bar.total ? bar.value : Math.abs(bar.value))}`;\n const datum = (bar: WaterfallBar, index: number, center: number, formattedAmount: string): ChartDatum => ({\n role: \"item\",\n index,\n label: bar.label,\n anchor: [center, top],\n values: bar.total\n ? [{ key: \"balance\", value: bar.to, formatted: format(bar.to) }]\n : [\n { key: \"before\", value: bar.from, formatted: format(bar.from) },\n { key: bar.value > 0 ? \"inflow\" : bar.value < 0 ? \"outflow\" : \"change\", value: bar.value, formatted: formattedAmount },\n { key: \"after\", value: bar.to, formatted: format(bar.to) },\n ],\n });\n return { bars, balance, scale, left, right, top, bottom, slot, ratio, project, format, amount, datum };\n}\n\nexport type WaterfallLayout = ReturnType<typeof waterfallLayout>;\n\nconst f = (value: number) => String(Math.round(value * 100) / 100);\nconst text = (x: number, y: number, value: string, anchor = \"middle\", extra = \"\") =>\n `<text x=\"${f(x)}\" y=\"${f(y)}\" text-anchor=\"${anchor}\" fill=\"currentColor\" stroke=\"none\" font-family=\"var(--k2b-font-sans, sans-serif)\" font-size=\"11\" ${extra}>${escapeXml(value)}</text>`;\n\n/** Pure SVG, including presentation attributes for PDF and hosts outside .k2b-ui. */\nexport function renderWaterfallSvg(\n spec: WaterfallOptions & { width: number; height: number; inspect?: boolean },\n responsive = false,\n): string {\n return renderWaterfallLayoutSvg(spec, waterfallLayout(spec, spec), responsive);\n}\n\n/** Draw the geometry already reserved by a host before its drawing module loads. */\nexport function renderWaterfallLayoutSvg(\n spec: WaterfallOptions & { width: number; height: number; inspect?: boolean },\n g: WaterfallLayout,\n responsive = false,\n): string {\n const parts: string[] = [];\n // The Solid host stretches a stable viewBox. Container queries use its drawn CSS width on the first frame,\n // rather than freezing the labels to the phone fallback or measuring and redrawing after hydration.\n const visibility = (minimumWidth: number) => {\n if (!responsive || minimumWidth <= 0) return \"\";\n const threshold = f(minimumWidth);\n parts.push(\n `<style>@container (max-width: ${f(minimumWidth - 0.01)}px) { .k2b-waterfall [data-waterfall-min-width=\"${threshold}\"] { display: none; } }</style>`,\n );\n return ` data-waterfall-min-width=\"${threshold}\"`;\n };\n if (spec.title) parts.push(text(spec.width / 2, 16, spec.title));\n if (spec.subtitle) parts.push(text(spec.width / 2, spec.title ? 34 : 16, spec.subtitle));\n parts.push(\n `<line class=\"stdlib-chart-axis\" x1=\"${f(g.left)}\" x2=\"${f(g.right)}\" y1=\"${f(g.bottom)}\" y2=\"${f(g.bottom)}\" stroke=\"currentColor\" stroke-opacity=\"0.2\"/>`,\n );\n parts.push(`<line class=\"stdlib-chart-axis\" x1=\"${f(g.left)}\" x2=\"${f(g.left)}\" y1=\"${f(g.top)}\" y2=\"${f(g.bottom)}\" stroke=\"none\"/>`);\n for (const tick of g.scale.ticks) {\n const y = g.project(tick);\n parts.push(\n `<line x1=\"${f(g.left)}\" x2=\"${f(g.right)}\" y1=\"${f(y)}\" y2=\"${f(y)}\" stroke=\"currentColor\" stroke-opacity=\"${tick === 0 ? \".25\" : \".09\"}\"/>`,\n );\n parts.push(text(g.left - 8, y + 4, g.format(tick), \"end\", 'class=\"stdlib-chart-tick-label\"'));\n }\n const cssSlot = g.slot / g.ratio;\n const longest = Math.max(1, ...g.bars.map((b) => Math.min(18, b.label.length))) * 6;\n const stride = Math.max(1, Math.ceil((longest + 8) / Math.max(1, cssSlot)));\n const endLimit = Math.max(1, Math.min(18, Math.floor((g.right - g.left) / g.ratio / 12) - 1));\n const endLength = Math.min(endLimit, spec.end.label.length);\n g.bars.forEach((bar, index) => {\n const center = g.left + (index + 0.5) * g.slot;\n const width = Math.min(56, g.slot * 0.62);\n const top = Math.min(g.project(bar.from), g.project(bar.to));\n const height = Math.abs(g.project(bar.from) - g.project(bar.to));\n const color = bar.total\n ? \"color-mix(in srgb, var(--k2b-text-muted, #8b8b93) 55%, transparent)\"\n : bar.value > 0\n ? \"var(--k2b-flow-in-mark, #0891b2)\"\n : bar.value < 0\n ? \"var(--k2b-flow-out-mark, #8b5cf6)\"\n : \"color-mix(in srgb, var(--k2b-text-muted, #8b8b93) 55%, transparent)\";\n const amount = g.amount(bar);\n const band = `<rect class=\"k2b-chart-category-band\" x=\"${f(center - g.slot / 2)}\" y=\"${f(g.top)}\" width=\"${f(g.slot)}\" height=\"${f(g.bottom - g.top)}\" fill=\"currentColor\" fill-opacity=\"0\" stroke=\"none\"/>`;\n const mark = `<rect class=\"k2b-waterfall-bar\" x=\"${f(center - width / 2)}\" y=\"${f(top)}\" width=\"${f(width)}\" height=\"${f(Math.max(height, 1))}\" rx=\"3\" fill=\"${color}\" stroke=\"none\"/>`;\n const valueWidth = Math.max((46 * spec.width) / width, ((amount.length * 6 + 8) * spec.width) / g.slot);\n const value =\n responsive || (width / g.ratio >= 46 && amount.length * 6 + 8 <= cssSlot)\n ? text(\n center,\n Math.max(g.top - 8, top - 6),\n amount,\n \"middle\",\n `class=\"k2b-waterfall-value\" font-weight=\"600\"${visibility(valueWidth)}`,\n ).replace('fill=\"currentColor\"', 'fill=\"var(--k2b-text-secondary, #52525b)\"')\n : \"\";\n parts.push(chartDatumSvg(band + mark + value, g.datum(bar, index, center, amount), spec.inspect ?? false));\n if (index < g.bars.length - 1)\n parts.push(\n `<line class=\"k2b-waterfall-connector\" x1=\"${f(center + width / 2)}\" x2=\"${f(center + g.slot - width / 2)}\" y1=\"${f(g.project(bar.to))}\" y2=\"${f(g.project(bar.to))}\" stroke=\"currentColor\" stroke-opacity=\".3\" stroke-dasharray=\"3 3\"/>`,\n );\n const ending = index === g.bars.length - 1;\n const endClearance = (Math.min(18, bar.label.length) * 3 + endLength * 6 + 8) / Math.max(1, g.right - center);\n if (ending || responsive || (index % stride === 0 && (index === 0 || endClearance * g.ratio <= 1))) {\n // Power-of-two subsets keep adjacent labels at least one visible slot apart at every container width.\n let spacing = 1;\n if (index > 0) while (index % (spacing * 2) === 0) spacing *= 2;\n const minimumWidth =\n index === 0 || ending ? 0 : Math.max(((longest + 8) * spec.width) / (g.slot * spacing), endClearance * spec.width);\n const limit = ending\n ? endLimit\n : responsive\n ? 18\n : Math.max(1, Math.floor(Math.min(cssSlot * stride - 8, (2 * Math.min(center, spec.width - center)) / g.ratio) / 6) - 1);\n const label = bar.label.length > limit ? `${bar.label.slice(0, Math.max(0, limit - 1))}…` : bar.label;\n parts.push(\n text(\n ending ? g.right : center,\n g.bottom + 20,\n label,\n ending ? \"end\" : \"middle\",\n `class=\"stdlib-chart-tick-label stdlib-chart-category-label \"${visibility(minimumWidth)}`,\n ),\n );\n }\n });\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"stdlib-chart k2b-waterfall ${escapeXml(spec.className ?? \"\")}\" width=\"${spec.width}\" height=\"${spec.height}\" viewBox=\"0 0 ${spec.width} ${spec.height}\" aria-hidden=\"true\" focusable=\"false\">${parts.join(\"\")}</svg>`;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=description.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["charts/description.ts"],"sourcesContent":["/** JSON number formatting. Functions belong to the rendering host, never the saved description. */\nexport type ChartNumberFormat = {\n style?: \"number\" | \"percent\" | \"currency\";\n currency?: string;\n unit?: string;\n decimals?: number;\n compact?: boolean;\n};\nexport type ChartDateFormat = { date: \"day\" | \"minute\" | \"second\" };\nexport type ChartFormat = ChartNumberFormat | ChartDateFormat;\nexport type ChartLimits = { maxSeries: number; maxValues: number; maxMarks: number };\nexport type ChartDescriptionAxis = {\n label?: string;\n domain?: number[];\n ticks?: number;\n scale?: \"linear\" | \"log\";\n format?: ChartFormat;\n};\ntype Reference = {\n value: number | string;\n axis?: \"x\" | \"y\";\n label?: string;\n style?: \"solid\" | \"dashed\" | \"dotted\";\n tone?: \"neutral\" | \"info\" | \"success\" | \"warning\" | \"danger\";\n};\ntype Threshold = { value: number; label?: string };\ntype Series<N> = { label?: string; data: { x: N | string; y: N }[]; role?: \"reference\" };\ntype Common = { title: string; subtitle?: string; tooltip?: { label?: string; format?: ChartNumberFormat } };\ntype Variants<N> =\n | {\n kind: \"waterfall\";\n start: { label: string; value: number };\n steps: { label: string; value: number }[];\n end: { label: string };\n format?: ChartNumberFormat;\n }\n | {\n kind: \"area\";\n layout: \"stacked\";\n normalize?: boolean;\n x: (number | string)[];\n series: { label: string; data: (number | null)[] }[];\n legend?: boolean;\n format?: ChartNumberFormat;\n }\n | {\n kind: \"bar\";\n data: { label: string; value: N }[];\n x?: string[];\n series?: { label: string; data: (number | null)[] }[];\n layout?: \"columns\" | \"rows\" | \"grouped\" | \"stacked\";\n normalize?: boolean;\n compare?: { label: string; data: (number | null)[] };\n xAxis?: Pick<ChartDescriptionAxis, \"label\"> & { ordered?: boolean };\n yAxis?: ChartDescriptionAxis;\n colorByBar?: boolean;\n showValues?: boolean;\n legend?: boolean;\n references?: Reference[];\n }\n | {\n kind: \"hbar\";\n series: string[];\n rows: { group?: string; label: string; values: (number | null)[] }[];\n legend?: boolean;\n format?: ChartNumberFormat;\n }\n | {\n kind: \"line\";\n series: (Series<N> & { style?: \"solid\" | \"dashed\" | \"dotted\" })[];\n xAxis?: ChartDescriptionAxis;\n yAxis?: ChartDescriptionAxis;\n legend?: boolean;\n area?: boolean;\n smooth?: boolean;\n references?: Reference[];\n }\n | {\n kind: \"scatter\";\n series: Series<N>[];\n xAxis?: ChartDescriptionAxis;\n yAxis?: ChartDescriptionAxis;\n legend?: boolean;\n references?: Reference[];\n }\n | { kind: \"pie\" | \"donut\"; data: { label: string; value: N }[]; legend?: boolean; showLabels?: boolean; format?: ChartNumberFormat }\n | { kind: \"histogram\"; data: N[]; bins?: number | number[]; references?: Reference[] }\n | {\n kind: \"gauge\";\n value: N;\n min?: number;\n max?: number;\n label?: string;\n unit?: string;\n format?: ChartNumberFormat;\n thresholds?: Threshold[];\n }\n | { kind: \"sparkline\"; data: N[]; area?: boolean }\n | { kind: \"boxplot\"; data: { label: string; values: N[] }[]; yAxis?: ChartDescriptionAxis; references?: Reference[] }\n | {\n kind: \"heatmap\";\n layout: \"calendar\";\n data: [string, N | null][];\n scale: \"sequential\" | \"diverging\";\n label?: string;\n format?: ChartNumberFormat;\n locale?: string;\n }\n | {\n kind: \"heatmap\";\n layout?: undefined;\n data: { x: string; y: string; value: N }[];\n format?: ChartNumberFormat;\n showValues?: boolean;\n min?: number;\n max?: number;\n }\n | {\n kind: \"barGauge\";\n data: { label: string; value: N; min?: number; max?: number }[];\n min?: number;\n max?: number;\n unit?: string;\n format?: ChartNumberFormat;\n thresholds?: Threshold[];\n }\n | { kind: \"stat\"; value: N; format?: ChartNumberFormat; unit?: string; delta?: N; better?: \"up\" | \"down\"; sparkline?: N[] };\n\n/** Portable chart node. Dates are ISO text and missing observations are null, never zero. */\nexport type ChartDescription = Common &\n (\n | Exclude<Variants<number | null>, { kind: \"bar\" }>\n // Aligned series omit flat data; the validator supplies an empty array.\n | (Omit<Extract<Variants<number | null>, { kind: \"bar\" }>, \"data\"> & { data?: { label: string; value: number | null }[] })\n );\n/** Validated renderer input. The portable validator normalizes null gaps to non-finite numbers for drawing. */\nexport type ChartInput = Common &\n (\n | Exclude<Variants<number>, { kind: \"stat\" }>\n | (Omit<Extract<Variants<number>, { kind: \"stat\" }>, \"delta\"> & { delta: number | undefined })\n );\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["charts.ts"],"sourcesContent":["/**\n * Drawing helpers and portable chart contracts. Import the Solid Chart component from `@k2b/ui`.\n */\n\nexport * from \"./charts/core\";\nexport type { ChartKindProps, ChartLabels, ChartProps, ChartRenderOptions } from \"./content/Chart\";\nexport { type BarChartLayout, type BarChartOptions, barChartLayout, renderBarChartSvg } from \"./content/chart-bar\";\n\nexport { calendarInspectionNavigation, mountCalendarScroll } from \"./content/chart-calendar\";\n"],"mappings":"AAAA;AACA;AACA;;AAEA,cAAc,eAAe;AAE7B,SAAoD,cAAc,EAAE,iBAAiB,QAAQ,qBAAqB;AAElH,SAAS,4BAA4B,EAAE,mBAAmB,QAAQ,0BAA0B","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["charts.ts"],"sourcesContent":["/**\n * Drawing helpers and portable chart contracts. Import the Solid Chart component from `@k2b/ui`.\n */\n\nexport * from \"./charts/core\";\nexport type * from \"./charts/description\";\nexport type { ChartKindProps, ChartLabels, ChartProps, ChartRenderOptions } from \"./content/Chart\";\nexport { type BarChartLayout, type BarChartOptions, barChartLayout, renderBarChartSvg } from \"./content/chart-bar\";\n\nexport { calendarInspectionNavigation, mountCalendarScroll } from \"./content/chart-calendar\";\n"],"mappings":"AAAA;AACA;AACA;;AAEA,cAAc,eAAe;AAG7B,SAAoD,cAAc,EAAE,iBAAiB,QAAQ,qBAAqB;AAElH,SAAS,4BAA4B,EAAE,mBAAmB,QAAQ,0BAA0B","ignoreList":[]}