@k2b/ui 0.50.0 → 0.52.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 (420) hide show
  1. package/dist/base.css +35 -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/Toolbar.js +8 -2
  10. package/dist/browser/actions/Toolbar.js.map +1 -1
  11. package/dist/browser/actions/command-dock.js +47 -0
  12. package/dist/browser/actions/command-dock.js.map +1 -0
  13. package/dist/browser/actions/command-items.js +84 -0
  14. package/dist/browser/actions/command-items.js.map +1 -0
  15. package/dist/browser/actions/command-messages.js +42 -0
  16. package/dist/browser/actions/command-messages.js.map +1 -0
  17. package/dist/browser/actions/index.js +1 -0
  18. package/dist/browser/actions/index.js.map +1 -1
  19. package/dist/browser/charts/core/area.js +3 -5
  20. package/dist/browser/charts/core/area.js.map +1 -1
  21. package/dist/browser/charts/core/bar-labels.js +5 -0
  22. package/dist/browser/charts/core/bar-labels.js.map +1 -0
  23. package/dist/browser/charts/core/bubble.js +166 -0
  24. package/dist/browser/charts/core/bubble.js.map +1 -0
  25. package/dist/browser/charts/core/calendar.js +1 -1
  26. package/dist/browser/charts/core/calendar.js.map +1 -1
  27. package/dist/browser/charts/core/chart-messages.js +17 -0
  28. package/dist/browser/charts/core/chart-messages.js.map +1 -0
  29. package/dist/browser/charts/core/default-styles.js +83 -0
  30. package/dist/browser/charts/core/default-styles.js.map +1 -0
  31. package/dist/browser/charts/core/funnel-layout.js +79 -0
  32. package/dist/browser/charts/core/funnel-layout.js.map +1 -0
  33. package/dist/browser/charts/core/funnel.js +27 -0
  34. package/dist/browser/charts/core/funnel.js.map +1 -0
  35. package/dist/browser/charts/core/hbar-layout.js +118 -0
  36. package/dist/browser/charts/core/hbar-layout.js.map +1 -0
  37. package/dist/browser/charts/core/hbar.js +39 -0
  38. package/dist/browser/charts/core/hbar.js.map +1 -0
  39. package/dist/browser/charts/core/index.js +12 -2
  40. package/dist/browser/charts/core/index.js.map +1 -1
  41. package/dist/browser/charts/core/map.js +116 -0
  42. package/dist/browser/charts/core/map.js.map +1 -0
  43. package/dist/browser/charts/core/pareto.js +120 -0
  44. package/dist/browser/charts/core/pareto.js.map +1 -0
  45. package/dist/browser/charts/core/radar.js +101 -0
  46. package/dist/browser/charts/core/radar.js.map +1 -0
  47. package/dist/browser/charts/core/registry.js +33 -16
  48. package/dist/browser/charts/core/registry.js.map +1 -1
  49. package/dist/browser/charts/core/render-size.js +15 -0
  50. package/dist/browser/charts/core/render-size.js.map +1 -0
  51. package/dist/browser/charts/core/render.js +39 -10
  52. package/dist/browser/charts/core/render.js.map +1 -1
  53. package/dist/browser/charts/core/snapshot.js +4 -4
  54. package/dist/browser/charts/core/snapshot.js.map +1 -1
  55. package/dist/browser/charts/core/svg-barGauge.js +67 -0
  56. package/dist/browser/charts/core/svg-barGauge.js.map +1 -0
  57. package/dist/browser/charts/core/svg-boxplot.js +127 -0
  58. package/dist/browser/charts/core/svg-boxplot.js.map +1 -0
  59. package/dist/browser/charts/core/svg-common.js +1065 -0
  60. package/dist/browser/charts/core/svg-common.js.map +1 -0
  61. package/dist/browser/charts/core/svg-gauge.js +185 -0
  62. package/dist/browser/charts/core/svg-gauge.js.map +1 -0
  63. package/dist/browser/charts/core/svg-heatmap.js +80 -0
  64. package/dist/browser/charts/core/svg-heatmap.js.map +1 -0
  65. package/dist/browser/charts/core/svg-histogram.js +73 -0
  66. package/dist/browser/charts/core/svg-histogram.js.map +1 -0
  67. package/dist/browser/charts/core/svg-renderers.js +638 -0
  68. package/dist/browser/charts/core/svg-renderers.js.map +1 -0
  69. package/dist/browser/charts/core/svg-scatter.js +114 -0
  70. package/dist/browser/charts/core/svg-scatter.js.map +1 -0
  71. package/dist/browser/charts/core/svg.js +4 -2525
  72. package/dist/browser/charts/core/svg.js.map +1 -1
  73. package/dist/browser/charts/core/treemap.js +138 -0
  74. package/dist/browser/charts/core/treemap.js.map +1 -0
  75. package/dist/browser/charts/core/types.js +0 -2
  76. package/dist/browser/charts/core/types.js.map +1 -1
  77. package/dist/browser/charts/core/waterfall.js +162 -0
  78. package/dist/browser/charts/core/waterfall.js.map +1 -0
  79. package/dist/browser/charts/description.js +2 -0
  80. package/dist/browser/charts/description.js.map +1 -0
  81. package/dist/browser/charts.js.map +1 -1
  82. package/dist/browser/content/Chart.js +14 -628
  83. package/dist/browser/content/Chart.js.map +1 -1
  84. package/dist/browser/content/ChartRoot.js +646 -0
  85. package/dist/browser/content/ChartRoot.js.map +1 -0
  86. package/dist/browser/content/ChartSnapshotView.js +4 -1
  87. package/dist/browser/content/ChartSnapshotView.js.map +1 -1
  88. package/dist/browser/content/ChartSparkline.js +24 -0
  89. package/dist/browser/content/ChartSparkline.js.map +1 -0
  90. package/dist/browser/content/DataTable.js +186 -193
  91. package/dist/browser/content/DataTable.js.map +1 -1
  92. package/dist/browser/content/FileView.js +111 -61
  93. package/dist/browser/content/FileView.js.map +1 -1
  94. package/dist/browser/content/Lightbox.js +62 -30
  95. package/dist/browser/content/Lightbox.js.map +1 -1
  96. package/dist/browser/content/MapView.js +30 -28
  97. package/dist/browser/content/MapView.js.map +1 -1
  98. package/dist/browser/content/PdfPreview.js +84 -52
  99. package/dist/browser/content/PdfPreview.js.map +1 -1
  100. package/dist/browser/content/PdfViewer.js +588 -0
  101. package/dist/browser/content/PdfViewer.js.map +1 -0
  102. package/dist/browser/content/ThumbnailStrip.js +174 -0
  103. package/dist/browser/content/ThumbnailStrip.js.map +1 -0
  104. package/dist/browser/content/chart-bar.js +344 -16
  105. package/dist/browser/content/chart-bar.js.map +1 -1
  106. package/dist/browser/content/chart-inspection-core.js +50 -29
  107. package/dist/browser/content/chart-inspection-core.js.map +1 -1
  108. package/dist/browser/content/chart-line-gaps.js +1 -1
  109. package/dist/browser/content/chart-line-gaps.js.map +1 -1
  110. package/dist/browser/content/chart-message-catalog.js +28 -0
  111. package/dist/browser/content/chart-message-catalog.js.map +1 -1
  112. package/dist/browser/content/chart-state-timeline.js +1 -1
  113. package/dist/browser/content/chart-state-timeline.js.map +1 -1
  114. package/dist/browser/content/chart-svg.js +2 -1
  115. package/dist/browser/content/chart-svg.js.map +1 -1
  116. package/dist/browser/content/index.js +2 -0
  117. package/dist/browser/content/index.js.map +1 -1
  118. package/dist/browser/content/pdf-document.js +29 -0
  119. package/dist/browser/content/pdf-document.js.map +1 -0
  120. package/dist/browser/content/pdf-limits.js +31 -0
  121. package/dist/browser/content/pdf-limits.js.map +1 -0
  122. package/dist/browser/content/pdf-messages.js +34 -2
  123. package/dist/browser/content/pdf-messages.js.map +1 -1
  124. package/dist/browser/content/pdf-viewer-engine.js +57 -0
  125. package/dist/browser/content/pdf-viewer-worker.js +28 -0
  126. package/dist/browser/content/thumbnail-strip-messages.js +24 -0
  127. package/dist/browser/content/thumbnail-strip-messages.js.map +1 -0
  128. package/dist/browser/inputs/ChoiceInputs.js +150 -76
  129. package/dist/browser/inputs/ChoiceInputs.js.map +1 -1
  130. package/dist/browser/inputs/ChoiceSlider.js +75 -58
  131. package/dist/browser/inputs/ChoiceSlider.js.map +1 -1
  132. package/dist/browser/inputs/DatePicker.js +113 -98
  133. package/dist/browser/inputs/DatePicker.js.map +1 -1
  134. package/dist/browser/inputs/PeriodPicker.js +874 -0
  135. package/dist/browser/inputs/PeriodPicker.js.map +1 -0
  136. package/dist/browser/inputs/index.js +5 -1
  137. package/dist/browser/inputs/index.js.map +1 -1
  138. package/dist/browser/inputs/input-messages.js +8 -2
  139. package/dist/browser/inputs/input-messages.js.map +1 -1
  140. package/dist/browser/inputs/markdown/MarkdownEditor.js +14 -10
  141. package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
  142. package/dist/browser/inputs/markdown/MarkdownSelectionToolbar.js +330 -0
  143. package/dist/browser/inputs/markdown/MarkdownSelectionToolbar.js.map +1 -0
  144. package/dist/browser/inputs/markdown/SlashCommands.js +402 -0
  145. package/dist/browser/inputs/markdown/SlashCommands.js.map +1 -0
  146. package/dist/browser/inputs/period-picker-messages.js +71 -0
  147. package/dist/browser/inputs/period-picker-messages.js.map +1 -0
  148. package/dist/browser/inputs/period.js +263 -0
  149. package/dist/browser/inputs/period.js.map +1 -0
  150. package/dist/browser/internal/field.js +96 -77
  151. package/dist/browser/internal/field.js.map +1 -1
  152. package/dist/browser/layout/AppWorkspace.js +7 -5
  153. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  154. package/dist/browser/layout/DetailPanel.js +147 -120
  155. package/dist/browser/layout/DetailPanel.js.map +1 -1
  156. package/dist/browser/layout/Discussion.js +101 -108
  157. package/dist/browser/layout/Discussion.js.map +1 -1
  158. package/dist/browser/layout/PanelDialog.js +92 -68
  159. package/dist/browser/layout/PanelDialog.js.map +1 -1
  160. package/dist/browser/layout/index.js.map +1 -1
  161. package/dist/browser/surfaces/DescriptionList.js +5 -2
  162. package/dist/browser/surfaces/DescriptionList.js.map +1 -1
  163. package/dist/browser/surfaces/StatCell.js +95 -78
  164. package/dist/browser/surfaces/StatCell.js.map +1 -1
  165. package/dist/browser/surfaces/delta-badge.js +16 -2
  166. package/dist/browser/surfaces/delta-badge.js.map +1 -1
  167. package/dist/browser/surfaces/stat-cell-messages.js +4 -2
  168. package/dist/browser/surfaces/stat-cell-messages.js.map +1 -1
  169. package/dist/browser/widgets/DashboardFrame.js +315 -0
  170. package/dist/browser/widgets/DashboardFrame.js.map +1 -0
  171. package/dist/browser/widgets/index.js +1 -0
  172. package/dist/browser/widgets/index.js.map +1 -1
  173. package/dist/licenses/pdfjs-dist.txt +177 -0
  174. package/dist/ssr/actions/Button.js.map +1 -1
  175. package/dist/ssr/actions/CommandList.js +638 -0
  176. package/dist/ssr/actions/CommandList.js.map +1 -0
  177. package/dist/ssr/actions/CommandMenu.js +197 -0
  178. package/dist/ssr/actions/CommandMenu.js.map +1 -0
  179. package/dist/ssr/actions/Dropdown.js +43 -10
  180. package/dist/ssr/actions/Dropdown.js.map +1 -1
  181. package/dist/ssr/actions/Toolbar.js +8 -2
  182. package/dist/ssr/actions/Toolbar.js.map +1 -1
  183. package/dist/ssr/actions/command-dock.js +47 -0
  184. package/dist/ssr/actions/command-dock.js.map +1 -0
  185. package/dist/ssr/actions/command-items.js +84 -0
  186. package/dist/ssr/actions/command-items.js.map +1 -0
  187. package/dist/ssr/actions/command-messages.js +42 -0
  188. package/dist/ssr/actions/command-messages.js.map +1 -0
  189. package/dist/ssr/actions/index.js +1 -0
  190. package/dist/ssr/actions/index.js.map +1 -1
  191. package/dist/ssr/charts/core/area.js +3 -5
  192. package/dist/ssr/charts/core/area.js.map +1 -1
  193. package/dist/ssr/charts/core/bar-labels.js +5 -0
  194. package/dist/ssr/charts/core/bar-labels.js.map +1 -0
  195. package/dist/ssr/charts/core/bubble.js +166 -0
  196. package/dist/ssr/charts/core/bubble.js.map +1 -0
  197. package/dist/ssr/charts/core/calendar.js +1 -1
  198. package/dist/ssr/charts/core/calendar.js.map +1 -1
  199. package/dist/ssr/charts/core/chart-messages.js +17 -0
  200. package/dist/ssr/charts/core/chart-messages.js.map +1 -0
  201. package/dist/ssr/charts/core/default-styles.js +83 -0
  202. package/dist/ssr/charts/core/default-styles.js.map +1 -0
  203. package/dist/ssr/charts/core/funnel-layout.js +79 -0
  204. package/dist/ssr/charts/core/funnel-layout.js.map +1 -0
  205. package/dist/ssr/charts/core/funnel.js +27 -0
  206. package/dist/ssr/charts/core/funnel.js.map +1 -0
  207. package/dist/ssr/charts/core/hbar-layout.js +118 -0
  208. package/dist/ssr/charts/core/hbar-layout.js.map +1 -0
  209. package/dist/ssr/charts/core/hbar.js +39 -0
  210. package/dist/ssr/charts/core/hbar.js.map +1 -0
  211. package/dist/ssr/charts/core/index.js +12 -2
  212. package/dist/ssr/charts/core/index.js.map +1 -1
  213. package/dist/ssr/charts/core/map.js +116 -0
  214. package/dist/ssr/charts/core/map.js.map +1 -0
  215. package/dist/ssr/charts/core/pareto.js +120 -0
  216. package/dist/ssr/charts/core/pareto.js.map +1 -0
  217. package/dist/ssr/charts/core/radar.js +101 -0
  218. package/dist/ssr/charts/core/radar.js.map +1 -0
  219. package/dist/ssr/charts/core/registry.js +33 -16
  220. package/dist/ssr/charts/core/registry.js.map +1 -1
  221. package/dist/ssr/charts/core/render-size.js +15 -0
  222. package/dist/ssr/charts/core/render-size.js.map +1 -0
  223. package/dist/ssr/charts/core/render.js +39 -10
  224. package/dist/ssr/charts/core/render.js.map +1 -1
  225. package/dist/ssr/charts/core/snapshot.js +4 -4
  226. package/dist/ssr/charts/core/snapshot.js.map +1 -1
  227. package/dist/ssr/charts/core/svg-barGauge.js +67 -0
  228. package/dist/ssr/charts/core/svg-barGauge.js.map +1 -0
  229. package/dist/ssr/charts/core/svg-boxplot.js +127 -0
  230. package/dist/ssr/charts/core/svg-boxplot.js.map +1 -0
  231. package/dist/ssr/charts/core/svg-common.js +1065 -0
  232. package/dist/ssr/charts/core/svg-common.js.map +1 -0
  233. package/dist/ssr/charts/core/svg-gauge.js +185 -0
  234. package/dist/ssr/charts/core/svg-gauge.js.map +1 -0
  235. package/dist/ssr/charts/core/svg-heatmap.js +80 -0
  236. package/dist/ssr/charts/core/svg-heatmap.js.map +1 -0
  237. package/dist/ssr/charts/core/svg-histogram.js +73 -0
  238. package/dist/ssr/charts/core/svg-histogram.js.map +1 -0
  239. package/dist/ssr/charts/core/svg-renderers.js +638 -0
  240. package/dist/ssr/charts/core/svg-renderers.js.map +1 -0
  241. package/dist/ssr/charts/core/svg-scatter.js +114 -0
  242. package/dist/ssr/charts/core/svg-scatter.js.map +1 -0
  243. package/dist/ssr/charts/core/svg.js +4 -2525
  244. package/dist/ssr/charts/core/svg.js.map +1 -1
  245. package/dist/ssr/charts/core/treemap.js +138 -0
  246. package/dist/ssr/charts/core/treemap.js.map +1 -0
  247. package/dist/ssr/charts/core/types.js +0 -2
  248. package/dist/ssr/charts/core/types.js.map +1 -1
  249. package/dist/ssr/charts/core/waterfall.js +162 -0
  250. package/dist/ssr/charts/core/waterfall.js.map +1 -0
  251. package/dist/ssr/charts/description.js +2 -0
  252. package/dist/ssr/charts/description.js.map +1 -0
  253. package/dist/ssr/charts.js.map +1 -1
  254. package/dist/ssr/content/Chart.js +14 -471
  255. package/dist/ssr/content/Chart.js.map +1 -1
  256. package/dist/ssr/content/ChartRoot.js +489 -0
  257. package/dist/ssr/content/ChartRoot.js.map +1 -0
  258. package/dist/ssr/content/ChartSnapshotView.js +1 -0
  259. package/dist/ssr/content/ChartSnapshotView.js.map +1 -1
  260. package/dist/ssr/content/ChartSparkline.js +24 -0
  261. package/dist/ssr/content/ChartSparkline.js.map +1 -0
  262. package/dist/ssr/content/DataTable.js +12 -16
  263. package/dist/ssr/content/DataTable.js.map +1 -1
  264. package/dist/ssr/content/FileView.js +56 -7
  265. package/dist/ssr/content/FileView.js.map +1 -1
  266. package/dist/ssr/content/Lightbox.js +39 -10
  267. package/dist/ssr/content/Lightbox.js.map +1 -1
  268. package/dist/ssr/content/MapView.js +9 -9
  269. package/dist/ssr/content/MapView.js.map +1 -1
  270. package/dist/ssr/content/PdfPreview.js +49 -20
  271. package/dist/ssr/content/PdfPreview.js.map +1 -1
  272. package/dist/ssr/content/PdfViewer.js +484 -0
  273. package/dist/ssr/content/PdfViewer.js.map +1 -0
  274. package/dist/ssr/content/ThumbnailStrip.js +103 -0
  275. package/dist/ssr/content/ThumbnailStrip.js.map +1 -0
  276. package/dist/ssr/content/chart-bar.js +344 -16
  277. package/dist/ssr/content/chart-bar.js.map +1 -1
  278. package/dist/ssr/content/chart-inspection-core.js +50 -29
  279. package/dist/ssr/content/chart-inspection-core.js.map +1 -1
  280. package/dist/ssr/content/chart-line-gaps.js +1 -1
  281. package/dist/ssr/content/chart-line-gaps.js.map +1 -1
  282. package/dist/ssr/content/chart-message-catalog.js +28 -0
  283. package/dist/ssr/content/chart-message-catalog.js.map +1 -1
  284. package/dist/ssr/content/chart-state-timeline.js +1 -1
  285. package/dist/ssr/content/chart-state-timeline.js.map +1 -1
  286. package/dist/ssr/content/chart-svg.js +2 -1
  287. package/dist/ssr/content/chart-svg.js.map +1 -1
  288. package/dist/ssr/content/index.js +2 -0
  289. package/dist/ssr/content/index.js.map +1 -1
  290. package/dist/ssr/content/pdf-document.js +29 -0
  291. package/dist/ssr/content/pdf-document.js.map +1 -0
  292. package/dist/ssr/content/pdf-limits.js +31 -0
  293. package/dist/ssr/content/pdf-limits.js.map +1 -0
  294. package/dist/ssr/content/pdf-messages.js +34 -2
  295. package/dist/ssr/content/pdf-messages.js.map +1 -1
  296. package/dist/ssr/content/thumbnail-strip-messages.js +24 -0
  297. package/dist/ssr/content/thumbnail-strip-messages.js.map +1 -0
  298. package/dist/ssr/inputs/ChoiceInputs.js +69 -17
  299. package/dist/ssr/inputs/ChoiceInputs.js.map +1 -1
  300. package/dist/ssr/inputs/ChoiceSlider.js +17 -12
  301. package/dist/ssr/inputs/ChoiceSlider.js.map +1 -1
  302. package/dist/ssr/inputs/DatePicker.js +14 -9
  303. package/dist/ssr/inputs/DatePicker.js.map +1 -1
  304. package/dist/ssr/inputs/PeriodPicker.js +598 -0
  305. package/dist/ssr/inputs/PeriodPicker.js.map +1 -0
  306. package/dist/ssr/inputs/index.js +5 -1
  307. package/dist/ssr/inputs/index.js.map +1 -1
  308. package/dist/ssr/inputs/input-messages.js +8 -2
  309. package/dist/ssr/inputs/input-messages.js.map +1 -1
  310. package/dist/ssr/inputs/markdown/MarkdownEditor.js +3 -2
  311. package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
  312. package/dist/ssr/inputs/markdown/MarkdownSelectionToolbar.js +293 -0
  313. package/dist/ssr/inputs/markdown/MarkdownSelectionToolbar.js.map +1 -0
  314. package/dist/ssr/inputs/markdown/SlashCommands.js +339 -0
  315. package/dist/ssr/inputs/markdown/SlashCommands.js.map +1 -0
  316. package/dist/ssr/inputs/period-picker-messages.js +71 -0
  317. package/dist/ssr/inputs/period-picker-messages.js.map +1 -0
  318. package/dist/ssr/inputs/period.js +263 -0
  319. package/dist/ssr/inputs/period.js.map +1 -0
  320. package/dist/ssr/internal/field.js +36 -24
  321. package/dist/ssr/internal/field.js.map +1 -1
  322. package/dist/ssr/layout/AppWorkspace.js +5 -1
  323. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  324. package/dist/ssr/layout/DetailPanel.js +27 -4
  325. package/dist/ssr/layout/DetailPanel.js.map +1 -1
  326. package/dist/ssr/layout/Discussion.js +16 -2
  327. package/dist/ssr/layout/Discussion.js.map +1 -1
  328. package/dist/ssr/layout/PanelDialog.js +40 -26
  329. package/dist/ssr/layout/PanelDialog.js.map +1 -1
  330. package/dist/ssr/layout/index.js.map +1 -1
  331. package/dist/ssr/surfaces/DescriptionList.js +1 -1
  332. package/dist/ssr/surfaces/DescriptionList.js.map +1 -1
  333. package/dist/ssr/surfaces/StatCell.js +31 -21
  334. package/dist/ssr/surfaces/StatCell.js.map +1 -1
  335. package/dist/ssr/surfaces/delta-badge.js +16 -2
  336. package/dist/ssr/surfaces/delta-badge.js.map +1 -1
  337. package/dist/ssr/surfaces/stat-cell-messages.js +4 -2
  338. package/dist/ssr/surfaces/stat-cell-messages.js.map +1 -1
  339. package/dist/ssr/widgets/DashboardFrame.js +195 -0
  340. package/dist/ssr/widgets/DashboardFrame.js.map +1 -0
  341. package/dist/ssr/widgets/index.js +1 -0
  342. package/dist/ssr/widgets/index.js.map +1 -1
  343. package/dist/styles.css +1 -1
  344. package/dist/types/actions/Button.d.ts +1 -1
  345. package/dist/types/actions/CommandList.d.ts +120 -0
  346. package/dist/types/actions/CommandMenu.d.ts +39 -0
  347. package/dist/types/actions/Dropdown.d.ts +17 -0
  348. package/dist/types/actions/Toolbar.d.ts +2 -0
  349. package/dist/types/actions/command-dock.d.ts +8 -0
  350. package/dist/types/actions/command-items.d.ts +134 -0
  351. package/dist/types/actions/command-messages.d.ts +19 -0
  352. package/dist/types/actions/index.d.ts +3 -0
  353. package/dist/types/charts/core/bar-labels.d.ts +1 -0
  354. package/dist/types/charts/core/bubble.d.ts +66 -0
  355. package/dist/types/charts/core/calendar.d.ts +1 -1
  356. package/dist/types/charts/core/chart-messages.d.ts +5 -0
  357. package/dist/types/charts/core/default-styles.d.ts +1 -0
  358. package/dist/types/charts/core/funnel-layout.d.ts +43 -0
  359. package/dist/types/charts/core/funnel.d.ts +13 -0
  360. package/dist/types/charts/core/hbar-layout.d.ts +74 -0
  361. package/dist/types/charts/core/hbar.d.ts +13 -0
  362. package/dist/types/charts/core/index.d.ts +12 -2
  363. package/dist/types/charts/core/map.d.ts +3 -0
  364. package/dist/types/charts/core/pareto.d.ts +40 -0
  365. package/dist/types/charts/core/radar.d.ts +47 -0
  366. package/dist/types/charts/core/registry.d.ts +27 -11
  367. package/dist/types/charts/core/render-size.d.ts +7 -0
  368. package/dist/types/charts/core/render.d.ts +1 -4
  369. package/dist/types/charts/core/snapshot.d.ts +2 -2
  370. package/dist/types/charts/core/svg-barGauge.d.ts +3 -0
  371. package/dist/types/charts/core/svg-boxplot.d.ts +18 -0
  372. package/dist/types/charts/core/svg-common.d.ts +612 -0
  373. package/dist/types/charts/core/svg-gauge.d.ts +6 -0
  374. package/dist/types/charts/core/svg-heatmap.d.ts +6 -0
  375. package/dist/types/charts/core/svg-histogram.d.ts +16 -0
  376. package/dist/types/charts/core/svg-renderers.d.ts +118 -0
  377. package/dist/types/charts/core/svg-scatter.d.ts +23 -0
  378. package/dist/types/charts/core/svg.d.ts +4 -698
  379. package/dist/types/charts/core/treemap.d.ts +45 -0
  380. package/dist/types/charts/core/types.d.ts +1 -12
  381. package/dist/types/charts/core/waterfall.d.ts +68 -0
  382. package/dist/types/charts/description.d.ts +289 -0
  383. package/dist/types/charts.d.ts +1 -0
  384. package/dist/types/content/Chart.d.ts +3 -91
  385. package/dist/types/content/ChartRoot.d.ts +92 -0
  386. package/dist/types/content/ChartSparkline.d.ts +5 -0
  387. package/dist/types/content/Lightbox.d.ts +2 -0
  388. package/dist/types/content/PdfViewer.d.ts +32 -0
  389. package/dist/types/content/ThumbnailStrip.d.ts +29 -0
  390. package/dist/types/content/chart-bar.d.ts +131 -2
  391. package/dist/types/content/chart-inspection-core.d.ts +7 -0
  392. package/dist/types/content/chart-inspection.d.ts +1 -0
  393. package/dist/types/content/chart-message-catalog.d.ts +8 -0
  394. package/dist/types/content/index.d.ts +3 -0
  395. package/dist/types/content/pdf-document.d.ts +5 -0
  396. package/dist/types/content/pdf-engine.d.ts +9 -0
  397. package/dist/types/content/pdf-limits.d.ts +43 -0
  398. package/dist/types/content/pdf-messages.d.ts +16 -0
  399. package/dist/types/content/thumbnail-strip-messages.d.ts +10 -0
  400. package/dist/types/inputs/ChoiceInputs.d.ts +6 -0
  401. package/dist/types/inputs/ChoiceSlider.d.ts +12 -0
  402. package/dist/types/inputs/DatePicker.d.ts +22 -0
  403. package/dist/types/inputs/PeriodPicker.d.ts +24 -0
  404. package/dist/types/inputs/index.d.ts +10 -2
  405. package/dist/types/inputs/input-messages.d.ts +3 -0
  406. package/dist/types/inputs/markdown/MarkdownEditor.d.ts +5 -0
  407. package/dist/types/inputs/markdown/MarkdownSelectionToolbar.d.ts +19 -0
  408. package/dist/types/inputs/markdown/SlashCommands.d.ts +20 -0
  409. package/dist/types/inputs/period-picker-messages.d.ts +34 -0
  410. package/dist/types/inputs/period.d.ts +134 -0
  411. package/dist/types/internal/field.d.ts +2 -0
  412. package/dist/types/layout/DetailPanel.d.ts +12 -0
  413. package/dist/types/layout/PanelDialog.d.ts +5 -0
  414. package/dist/types/layout/index.d.ts +1 -1
  415. package/dist/types/surfaces/DescriptionList.d.ts +5 -0
  416. package/dist/types/surfaces/StatCell.d.ts +6 -1
  417. package/dist/types/surfaces/stat-cell-messages.d.ts +1 -0
  418. package/dist/types/widgets/DashboardFrame.d.ts +61 -0
  419. package/dist/types/widgets/index.d.ts +1 -0
  420. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["charts/core/index.ts"],"sourcesContent":["/** Portable chart contracts. This entry never imports Solid or browser APIs. */\n\nexport { type BarChartOptions, barChartLayout, renderBarChartSvg } from \"../../content/chart-bar\";\nexport {\n renderStateTimelineSvg,\n type StateTimelineChartOptions,\n type StateTimelineDomain,\n stateTimelineDomain,\n stateTimelineHeight,\n} from \"../../content/chart-state-timeline\";\nexport { type ChartTimeAxis } from \"../../content/chart-time-axis\";\nexport { type AreaOptions, areaLayout, renderAreaSvg } from \"./area\";\nexport * from \"./calendar\";\nexport * from \"./inspection\";\nexport * from \"./render\";\nexport * from \"./snapshot\";\nexport {\n type AxisOptions,\n arcPathD,\n autoBin,\n type BarItem,\n bar,\n barGauge,\n boxplot,\n type ChartOptions,\n chartDatumSvg,\n charts,\n computeBoxStats,\n computeDomain,\n donut,\n escapeXml,\n extendDomainToNice,\n gauge,\n heatmap,\n histogram,\n type LineStyle,\n line,\n linearRegression,\n linePathD,\n type MapOptions,\n type MapPoint,\n type MapSeries,\n type MapViewport,\n type MarkerShape,\n map,\n mapLog,\n mapRange,\n markerPath,\n niceLogTicks,\n niceStep,\n normalizePadding,\n type Padding,\n type Point,\n pie,\n type ReferenceLine,\n type Series,\n type SliceItem,\n scatter,\n smoothPathD,\n sparkline,\n stat,\n stateTimeline,\n stepPathD,\n svgRoot,\n} from \"./svg\";\nexport {\n type ChartDateFormat,\n type ChartDatum,\n type ChartDatumRole,\n type ChartFormat,\n type ChartKind,\n type ChartNumberFormat,\n chartDatumRoles,\n} from \"./types\";\n"],"mappings":"AAAA;;AAEA,SAA+B,cAAc,EAAE,iBAAiB,QAAQ,yBAAyB;AACjG,SACE,sBAAsB,EAGtB,mBAAmB,EACnB,mBAAmB,QACd,oCAAoC;AAE3C,SAA2B,UAAU,EAAE,aAAa,QAAQ,QAAQ;AACpE,cAAc,YAAY;AAC1B,cAAc,cAAc;AAC5B,cAAc,UAAU;AACxB,cAAc,YAAY;AAC1B,SAEE,QAAQ,EACR,OAAO,EAEP,GAAG,EACH,QAAQ,EACR,OAAO,EAEP,aAAa,EACb,MAAM,EACN,eAAe,EACf,aAAa,EACb,KAAK,EACL,SAAS,EACT,kBAAkB,EAClB,KAAK,EACL,OAAO,EACP,SAAS,EAET,IAAI,EACJ,gBAAgB,EAChB,SAAS,EAMT,GAAG,EACH,MAAM,EACN,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAGhB,GAAG,EAIH,OAAO,EACP,WAAW,EACX,SAAS,EACT,IAAI,EACJ,aAAa,EACb,SAAS,EACT,OAAO,QACF,OAAO;AACd,SAOE,eAAe,QACV,SAAS","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["charts/core/index.ts"],"sourcesContent":["/** Portable chart contracts. This entry never imports Solid or browser APIs. */\n\nexport {\n type BarChartLayout,\n type BarChartOptions,\n barChartLayout,\n rankedBarLayout,\n renderBarChartSvg,\n seriesBarLayout,\n} from \"../../content/chart-bar\";\nexport {\n renderStateTimelineSvg,\n type StateTimelineChartOptions,\n type StateTimelineDomain,\n stateTimelineDomain,\n stateTimelineHeight,\n} from \"../../content/chart-state-timeline\";\nexport { type ChartTimeAxis } from \"../../content/chart-time-axis\";\nexport { type AreaOptions, areaLayout, renderAreaSvg } from \"./area\";\nexport * from \"./bubble\";\nexport * from \"./calendar\";\nexport { type FunnelLayout, type FunnelOptions, funnelLayout, renderFunnelLayoutSvg, renderFunnelSvg } from \"./funnel\";\nexport { type HorizontalBarLayout, type HorizontalBarOptions, hbarLayout, renderHbarLayoutSvg, renderHbarSvg } from \"./hbar\";\nexport * from \"./inspection\";\nexport { map } from \"./map\";\nexport * from \"./pareto\";\n\nexport * from \"./radar\";\nexport * from \"./render\";\nexport { chartRenderHeight, preservesAspectRatio } from \"./render-size\";\nexport * from \"./snapshot\";\nexport { charts } from \"./svg\";\nexport {\n type AxisOptions,\n arcPathD,\n autoBin,\n type BarItem,\n bar,\n barGauge,\n boxplot,\n type ChartOptions,\n chartDatumSvg,\n computeBoxStats,\n computeDomain,\n donut,\n escapeXml,\n extendDomainToNice,\n gauge,\n heatmap,\n histogram,\n type LineStyle,\n line,\n linearRegression,\n linePathD,\n type MapOptions,\n type MapPoint,\n type MapSeries,\n type MapViewport,\n type MarkerShape,\n mapLog,\n mapRange,\n markerPath,\n niceLogTicks,\n niceStep,\n normalizePadding,\n type Padding,\n type Point,\n pie,\n type ReferenceLine,\n type Series,\n type SliceItem,\n scatter,\n smoothPathD,\n sparkline,\n stat,\n stateTimeline,\n stepPathD,\n svgRoot,\n} from \"./svg-renderers\";\nexport * from \"./treemap\";\nexport {\n type ChartDateFormat,\n type ChartDatum,\n type ChartDatumRole,\n type ChartFormat,\n type ChartKind,\n type ChartNumberFormat,\n chartDatumRoles,\n} from \"./types\";\n\nexport { renderWaterfallLayoutSvg, renderWaterfallSvg, type WaterfallLayout, type WaterfallOptions, waterfallLayout } from \"./waterfall\";\n"],"mappings":"AAAA;;AAEA,SAGE,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,eAAe,QACV,yBAAyB;AAChC,SACE,sBAAsB,EAGtB,mBAAmB,EACnB,mBAAmB,QACd,oCAAoC;AAE3C,SAA2B,UAAU,EAAE,aAAa,QAAQ,QAAQ;AACpE,cAAc,UAAU;AACxB,cAAc,YAAY;AAC1B,SAAgD,YAAY,EAAE,qBAAqB,EAAE,eAAe,QAAQ,UAAU;AACtH,SAA8D,UAAU,EAAE,mBAAmB,EAAE,aAAa,QAAQ,QAAQ;AAC5H,cAAc,cAAc;AAC5B,SAAS,GAAG,QAAQ,OAAO;AAC3B,cAAc,UAAU;AAExB,cAAc,SAAS;AACvB,cAAc,UAAU;AACxB,SAAS,iBAAiB,EAAE,oBAAoB,QAAQ,eAAe;AACvE,cAAc,YAAY;AAC1B,SAAS,MAAM,QAAQ,OAAO;AAC9B,SAEE,QAAQ,EACR,OAAO,EAEP,GAAG,EACH,QAAQ,EACR,OAAO,EAEP,aAAa,EACb,eAAe,EACf,aAAa,EACb,KAAK,EACL,SAAS,EACT,kBAAkB,EAClB,KAAK,EACL,OAAO,EACP,SAAS,EAET,IAAI,EACJ,gBAAgB,EAChB,SAAS,EAMT,MAAM,EACN,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAGhB,GAAG,EAIH,OAAO,EACP,WAAW,EACX,SAAS,EACT,IAAI,EACJ,aAAa,EACb,SAAS,EACT,OAAO,QACF,iBAAiB;AACxB,cAAc,WAAW;AACzB,SAOE,eAAe,QACV,SAAS;AAEhB,SAAS,wBAAwB,EAAE,kBAAkB,EAA+C,eAAe,QAAQ,aAAa","ignoreList":[]}
@@ -0,0 +1,116 @@
1
+ import { WORLD_LAND_PATH, WORLD_MAP_HEIGHT, WORLD_MAP_WIDTH } from "./chart-map-data";
2
+ import { chartDatumSvg, clamp, computePlotArea, escapeXml, fmt, mapRange, measureLegendHeight, normalizePadding, renderHeader, renderLegend, svgRoot } from "./svg-renderers";
3
+ const isMapPoint = point => Number.isFinite(point.latitude) && Number.isFinite(point.longitude) && point.latitude >= -90 && point.latitude <= 90 && point.longitude >= -180 && point.longitude <= 180;
4
+ const MAP_MIN_ZOOM = 0;
5
+ const MAP_MAX_ZOOM = 5;
6
+ const normalizeMapViewport = viewport => {
7
+ const zoom = clamp(viewport && Number.isFinite(viewport.zoom) ? viewport.zoom : MAP_MIN_ZOOM, MAP_MIN_ZOOM, MAP_MAX_ZOOM);
8
+ const zoomScale = 2 ** zoom;
9
+ const latitudeLimit = 90 - 90 / zoomScale;
10
+ const longitudeLimit = 180 - 180 / zoomScale;
11
+ return {
12
+ latitude: clamp(viewport && Number.isFinite(viewport.latitude) ? viewport.latitude : 0, -latitudeLimit, latitudeLimit),
13
+ longitude: clamp(viewport && Number.isFinite(viewport.longitude) ? viewport.longitude : 0, -longitudeLimit, longitudeLimit),
14
+ zoom
15
+ };
16
+ };
17
+
18
+ /** Render geographic point series over a dependency-free world land map. */
19
+ export function map(opts) {
20
+ const width = opts.width ?? 640;
21
+ const height = opts.height ?? 340;
22
+ const padding = normalizePadding(opts.padding ?? {
23
+ top: 12,
24
+ right: 16,
25
+ bottom: 12,
26
+ left: 16
27
+ });
28
+ const header = renderHeader(width, opts.title, opts.subtitle);
29
+ const legendItems = opts.legend ? opts.series.map((series, index) => ({
30
+ label: series.label && series.label.length > 0 ? series.label : `Series ${index + 1}`,
31
+ seriesIndex: index
32
+ })) : [];
33
+ const legendHeight = measureLegendHeight(legendItems, width);
34
+ const area = computePlotArea(width, height, padding, false, false, header.height, legendHeight);
35
+ const availableWidth = Math.max(0, area.x1 - area.x0);
36
+ const availableHeight = Math.max(0, area.y1 - area.y0);
37
+ const scale = Math.max(0, Math.min(availableWidth / WORLD_MAP_WIDTH, availableHeight / WORLD_MAP_HEIGHT));
38
+ const mapWidth = WORLD_MAP_WIDTH * scale;
39
+ const mapHeight = WORLD_MAP_HEIGHT * scale;
40
+ const mapX = area.x0 + (availableWidth - mapWidth) / 2;
41
+ const mapY = area.y0 + (availableHeight - mapHeight) / 2;
42
+ const viewport = normalizeMapViewport(opts.viewport);
43
+ const zoomScale = 2 ** viewport.zoom;
44
+ const projectedScale = scale * zoomScale;
45
+ const centerWorldX = (viewport.longitude + 180) / 360 * WORLD_MAP_WIDTH;
46
+ const centerWorldY = (90 - viewport.latitude) / 180 * WORLD_MAP_HEIGHT;
47
+ const finitePoints = opts.series.flatMap((series, seriesIndex) => series.data.map((point, index) => ({
48
+ point,
49
+ seriesIndex,
50
+ index
51
+ })).filter(({
52
+ point
53
+ }) => isMapPoint(point)));
54
+ let sizeMin = Number.POSITIVE_INFINITY;
55
+ let sizeMax = Number.NEGATIVE_INFINITY;
56
+ for (const {
57
+ point
58
+ } of finitePoints) {
59
+ if (typeof point.size !== "number" || !Number.isFinite(point.size) || point.size < 0) {
60
+ continue;
61
+ }
62
+ if (point.size < sizeMin) sizeMin = point.size;
63
+ if (point.size > sizeMax) sizeMax = point.size;
64
+ }
65
+ const hasSizes = Number.isFinite(sizeMin) && Number.isFinite(sizeMax);
66
+ const requestedSizeRange = opts.sizeRange ?? [3, 12];
67
+ const firstRadius = Number.isFinite(requestedSizeRange[0]) ? Math.max(0, requestedSizeRange[0]) : 3;
68
+ const secondRadius = Number.isFinite(requestedSizeRange[1]) ? Math.max(0, requestedSizeRange[1]) : 12;
69
+ const radiusRange = firstRadius <= secondRadius ? [firstRadius, secondRadius] : [secondRadius, firstRadius];
70
+ const body = [header.svg];
71
+ if (scale > 0) {
72
+ body.push(`<svg class="stdlib-chart-map-viewport" x="${fmt(mapX)}" y="${fmt(mapY)}" width="${fmt(mapWidth)}" height="${fmt(mapHeight)}" viewBox="0 0 ${fmt(mapWidth)} ${fmt(mapHeight)}" overflow="hidden">`, `<path class="stdlib-chart-map-land" fill-rule="evenodd" transform="translate(${fmt(mapWidth / 2)} ${fmt(mapHeight / 2)}) scale(${fmt(projectedScale)}) translate(${fmt(-centerWorldX)} ${fmt(-centerWorldY)})" d="${WORLD_LAND_PATH}"/>`);
73
+ for (const {
74
+ point,
75
+ seriesIndex,
76
+ index
77
+ } of finitePoints) {
78
+ const pointWorldX = (point.longitude + 180) / 360 * WORLD_MAP_WIDTH;
79
+ const pointWorldY = (90 - point.latitude) / 180 * WORLD_MAP_HEIGHT;
80
+ const x = mapWidth / 2 + (pointWorldX - centerWorldX) * projectedScale;
81
+ const y = mapHeight / 2 + (pointWorldY - centerWorldY) * projectedScale;
82
+ const radius = hasSizes && typeof point.size === "number" && Number.isFinite(point.size) && point.size >= 0 ? sizeMin === sizeMax ? (radiusRange[0] + radiusRange[1]) / 2 : mapRange(point.size, [sizeMin, sizeMax], radiusRange) : 4;
83
+ const title = point.label && point.label.length > 0 ? `<title>${escapeXml(point.label)}</title>` : "";
84
+ body.push(chartDatumSvg(`<circle class="stdlib-chart-map-point stdlib-chart-series-${seriesIndex % 8}" cx="${fmt(x)}" cy="${fmt(y)}" r="${fmt(radius)}">${title}</circle>`, {
85
+ index,
86
+ seriesIndex,
87
+ role: "point",
88
+ label: point.label ?? opts.series[seriesIndex]?.label,
89
+ anchor: [x, y],
90
+ values: [{
91
+ key: "latitude",
92
+ value: point.latitude
93
+ }, {
94
+ key: "longitude",
95
+ value: point.longitude
96
+ }, ...(point.size !== undefined && Number.isFinite(point.size) ? [{
97
+ key: "size",
98
+ value: point.size
99
+ }] : [])]
100
+ }, opts.inspect && x >= 0 && y >= 0 && x <= mapWidth && y <= mapHeight));
101
+ }
102
+ body.push("</svg>");
103
+ }
104
+ if (finitePoints.length === 0) {
105
+ body.push(`<text class="stdlib-chart-map-empty" x="${fmt(area.x0 + availableWidth / 2)}" y="${fmt(area.y0 + availableHeight / 2)}" text-anchor="middle" dominant-baseline="middle">No data</text>`);
106
+ }
107
+ if (legendItems.length > 0) {
108
+ body.push(renderLegend(legendItems, width, height - legendHeight).svg);
109
+ }
110
+ return svgRoot({
111
+ width,
112
+ height,
113
+ className: opts.className
114
+ }, body.join(""));
115
+ }
116
+ //# sourceMappingURL=map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["charts/core/map.ts"],"sourcesContent":["import { WORLD_LAND_PATH, WORLD_MAP_HEIGHT, WORLD_MAP_WIDTH } from \"./chart-map-data\";\nimport {\n chartDatumSvg,\n clamp,\n computePlotArea,\n escapeXml,\n fmt,\n type MapOptions,\n type MapPoint,\n type MapViewport,\n mapRange,\n measureLegendHeight,\n normalizePadding,\n renderHeader,\n renderLegend,\n svgRoot,\n} from \"./svg-renderers\";\n\nconst isMapPoint = (point: MapPoint): boolean =>\n Number.isFinite(point.latitude) &&\n Number.isFinite(point.longitude) &&\n point.latitude >= -90 &&\n point.latitude <= 90 &&\n point.longitude >= -180 &&\n point.longitude <= 180;\n\nconst MAP_MIN_ZOOM = 0;\nconst MAP_MAX_ZOOM = 5;\n\nconst normalizeMapViewport = (viewport: MapViewport | undefined): MapViewport => {\n const zoom = clamp(viewport && Number.isFinite(viewport.zoom) ? viewport.zoom : MAP_MIN_ZOOM, MAP_MIN_ZOOM, MAP_MAX_ZOOM);\n const zoomScale = 2 ** zoom;\n const latitudeLimit = 90 - 90 / zoomScale;\n const longitudeLimit = 180 - 180 / zoomScale;\n\n return {\n latitude: clamp(viewport && Number.isFinite(viewport.latitude) ? viewport.latitude : 0, -latitudeLimit, latitudeLimit),\n longitude: clamp(viewport && Number.isFinite(viewport.longitude) ? viewport.longitude : 0, -longitudeLimit, longitudeLimit),\n zoom,\n };\n};\n\n/** Render geographic point series over a dependency-free world land map. */\nexport function map(opts: MapOptions): string {\n const width = opts.width ?? 640;\n const height = opts.height ?? 340;\n const padding = normalizePadding(opts.padding ?? { top: 12, right: 16, bottom: 12, left: 16 });\n const header = renderHeader(width, opts.title, opts.subtitle);\n const legendItems = opts.legend\n ? opts.series.map((series, index) => ({\n label: series.label && series.label.length > 0 ? series.label : `Series ${index + 1}`,\n seriesIndex: index,\n }))\n : [];\n const legendHeight = measureLegendHeight(legendItems, width);\n const area = computePlotArea(width, height, padding, false, false, header.height, legendHeight);\n const availableWidth = Math.max(0, area.x1 - area.x0);\n const availableHeight = Math.max(0, area.y1 - area.y0);\n const scale = Math.max(0, Math.min(availableWidth / WORLD_MAP_WIDTH, availableHeight / WORLD_MAP_HEIGHT));\n const mapWidth = WORLD_MAP_WIDTH * scale;\n const mapHeight = WORLD_MAP_HEIGHT * scale;\n const mapX = area.x0 + (availableWidth - mapWidth) / 2;\n const mapY = area.y0 + (availableHeight - mapHeight) / 2;\n const viewport = normalizeMapViewport(opts.viewport);\n const zoomScale = 2 ** viewport.zoom;\n const projectedScale = scale * zoomScale;\n const centerWorldX = ((viewport.longitude + 180) / 360) * WORLD_MAP_WIDTH;\n const centerWorldY = ((90 - viewport.latitude) / 180) * WORLD_MAP_HEIGHT;\n\n const finitePoints = opts.series.flatMap((series, seriesIndex) =>\n series.data.map((point, index) => ({ point, seriesIndex, index })).filter(({ point }) => isMapPoint(point)),\n );\n\n let sizeMin = Number.POSITIVE_INFINITY;\n let sizeMax = Number.NEGATIVE_INFINITY;\n for (const { point } of finitePoints) {\n if (typeof point.size !== \"number\" || !Number.isFinite(point.size) || point.size < 0) {\n continue;\n }\n if (point.size < sizeMin) sizeMin = point.size;\n if (point.size > sizeMax) sizeMax = point.size;\n }\n const hasSizes = Number.isFinite(sizeMin) && Number.isFinite(sizeMax);\n const requestedSizeRange = opts.sizeRange ?? [3, 12];\n const firstRadius = Number.isFinite(requestedSizeRange[0]) ? Math.max(0, requestedSizeRange[0]) : 3;\n const secondRadius = Number.isFinite(requestedSizeRange[1]) ? Math.max(0, requestedSizeRange[1]) : 12;\n const radiusRange: [number, number] = firstRadius <= secondRadius ? [firstRadius, secondRadius] : [secondRadius, firstRadius];\n\n const body: string[] = [header.svg];\n if (scale > 0) {\n body.push(\n `<svg class=\"stdlib-chart-map-viewport\" x=\"${fmt(mapX)}\" y=\"${fmt(mapY)}\" width=\"${fmt(mapWidth)}\" height=\"${fmt(mapHeight)}\" viewBox=\"0 0 ${fmt(mapWidth)} ${fmt(mapHeight)}\" overflow=\"hidden\">`,\n `<path class=\"stdlib-chart-map-land\" fill-rule=\"evenodd\" transform=\"translate(${fmt(mapWidth / 2)} ${fmt(mapHeight / 2)}) scale(${fmt(projectedScale)}) translate(${fmt(-centerWorldX)} ${fmt(-centerWorldY)})\" d=\"${WORLD_LAND_PATH}\"/>`,\n );\n\n for (const { point, seriesIndex, index } of finitePoints) {\n const pointWorldX = ((point.longitude + 180) / 360) * WORLD_MAP_WIDTH;\n const pointWorldY = ((90 - point.latitude) / 180) * WORLD_MAP_HEIGHT;\n const x = mapWidth / 2 + (pointWorldX - centerWorldX) * projectedScale;\n const y = mapHeight / 2 + (pointWorldY - centerWorldY) * projectedScale;\n const radius =\n hasSizes && typeof point.size === \"number\" && Number.isFinite(point.size) && point.size >= 0\n ? sizeMin === sizeMax\n ? (radiusRange[0] + radiusRange[1]) / 2\n : mapRange(point.size, [sizeMin, sizeMax], radiusRange)\n : 4;\n const title = point.label && point.label.length > 0 ? `<title>${escapeXml(point.label)}</title>` : \"\";\n body.push(\n chartDatumSvg(\n `<circle class=\"stdlib-chart-map-point stdlib-chart-series-${seriesIndex % 8}\" cx=\"${fmt(x)}\" cy=\"${fmt(y)}\" r=\"${fmt(radius)}\">${title}</circle>`,\n {\n index,\n seriesIndex,\n role: \"point\",\n label: point.label ?? opts.series[seriesIndex]?.label,\n anchor: [x, y],\n values: [\n { key: \"latitude\", value: point.latitude },\n { key: \"longitude\", value: point.longitude },\n ...(point.size !== undefined && Number.isFinite(point.size) ? [{ key: \"size\", value: point.size }] : []),\n ],\n },\n opts.inspect && x >= 0 && y >= 0 && x <= mapWidth && y <= mapHeight,\n ),\n );\n }\n body.push(\"</svg>\");\n }\n\n if (finitePoints.length === 0) {\n body.push(\n `<text class=\"stdlib-chart-map-empty\" x=\"${fmt(area.x0 + availableWidth / 2)}\" y=\"${fmt(area.y0 + availableHeight / 2)}\" text-anchor=\"middle\" dominant-baseline=\"middle\">No data</text>`,\n );\n }\n if (legendItems.length > 0) {\n body.push(renderLegend(legendItems, width, height - legendHeight).svg);\n }\n\n return svgRoot({ width, height, className: opts.className }, body.join(\"\"));\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,120 @@
1
+ import { chartDatumSvg, escapeXml, niceStep, renderHeader, svgRoot } from "./svg";
2
+ export function paretoLayout(spec, size = {
3
+ width: spec.width ?? 480,
4
+ height: spec.height ?? 280
5
+ }) {
6
+ const width = spec.displayWidth ?? size.width,
7
+ header = renderHeader(width, spec.title, spec.subtitle),
8
+ top = header.height + 24,
9
+ bottom = 48,
10
+ height = Math.max(size.height, spec.data.length * 34 + top + bottom);
11
+ const data = spec.data.map((d, index) => {
12
+ if (![d.value, d.prev].every(v => Number.isFinite(v) && v >= 0)) throw new RangeError("Pareto values must be finite and nonnegative.");
13
+ return {
14
+ ...d,
15
+ index
16
+ };
17
+ }).sort((a, b) => Number(a.label.toLowerCase() === "rest") - Number(b.label.toLowerCase() === "rest") || b.value - a.value);
18
+ const total = data.reduce((s, d) => s + d.value, 0),
19
+ rawMax = Math.max(0, ...data.flatMap(d => [d.value, d.prev])) || 1;
20
+ const step = niceStep(rawMax, 3),
21
+ roundedMax = Math.ceil(rawMax / step) * step;
22
+ const max = Number.isFinite(roundedMax) && roundedMax > 0 ? roundedMax : rawMax;
23
+ const ticks = Number.isFinite(step) && step > 0 && max / step <= 6 ? Array.from({
24
+ length: Math.round(max / step) + 1
25
+ }, (_, i) => i * step) : [0, max / 2, max];
26
+ if (!Number.isFinite(total)) throw new RangeError("Pareto total must be finite.");
27
+ const left = Math.min(112, width * 0.25),
28
+ plot = width - left - 30,
29
+ rowHeight = (height - top - bottom) / Math.max(1, data.length);
30
+ let sum = 0;
31
+ return {
32
+ width,
33
+ height,
34
+ total,
35
+ max,
36
+ ticks,
37
+ left,
38
+ plot,
39
+ rowHeight,
40
+ header,
41
+ top,
42
+ bottom,
43
+ rows: data.map((d, index) => {
44
+ sum += d.value;
45
+ return {
46
+ ...d,
47
+ y: top + rowHeight * (index + 0.5),
48
+ cumulative: total ? sum / total : 0
49
+ };
50
+ })
51
+ };
52
+ }
53
+ export function renderParetoSvg(spec) {
54
+ const s = paretoLayout(spec);
55
+ const number = spec.format ?? new Intl.NumberFormat(spec.locale ?? "en", {
56
+ maximumSignificantDigits: 15
57
+ }).format;
58
+ const percent = new Intl.NumberFormat(spec.locale ?? "en", {
59
+ style: "percent",
60
+ maximumFractionDigits: 1
61
+ });
62
+ const color = "var(--stdlib-chart-c1,#3b82f6)";
63
+ const body = [s.header.svg.replace(/<text class="stdlib-chart-title"/g, '<text fill="var(--k2b-text,#27272a)" font-size="14" class="stdlib-chart-title"').replace(/<text class="stdlib-chart-subtitle"/g, '<text fill="var(--k2b-text-muted,#45454e)" font-size="11" class="stdlib-chart-subtitle"')];
64
+ const axisNumber = spec.format ?? new Intl.NumberFormat(spec.locale ?? "en", {
65
+ maximumFractionDigits: 2,
66
+ notation: s.max >= 1e9 || s.max < 0.001 ? "scientific" : "standard"
67
+ }).format;
68
+ for (const tick of s.ticks) body.push(`<line x1="${s.left + tick / s.max * s.plot}" x2="${s.left + tick / s.max * s.plot}" y1="${s.top}" y2="${s.height - s.bottom}" stroke="var(--k2b-border,#e4e4e7)" stroke-opacity="0.5" pointer-events="none"/><text x="${s.left + tick / s.max * s.plot}" y="${s.top - 8}" text-anchor="${tick === s.max ? "end" : tick === 0 ? "start" : "middle"}" font-size="11" fill="var(--k2b-text-muted,#45454e)">${escapeXml(axisNumber(tick))}</text>`);
69
+ let line = `${s.left},${s.top}`;
70
+ for (const row of s.rows) {
71
+ const change = row.prev ? row.value / row.prev - 1 : Number.NaN;
72
+ const bh = Math.min(s.rowHeight * 0.36, 12),
73
+ valueWidth = row.value / s.max * s.plot,
74
+ prevWidth = row.prev / s.max * s.plot;
75
+ const hatch = `<path class="k2b-chart-pareto-hatch" d="${Array.from({
76
+ length: Math.floor(prevWidth / 5)
77
+ }, (_, i) => `M${s.left + i * 5},${row.y + 1 + bh}l${Math.min(4, prevWidth - i * 5)},-${bh}`).join(" ")}" fill="none" stroke="${color}" stroke-width="1" pointer-events="none"/>`;
78
+ body.push(chartDatumSvg(`<rect class="k2b-chart-pareto-current" x="${s.left}" y="${row.y - bh - 1}" width="${valueWidth}" height="${bh}" rx="2" fill="${color}" stroke="none"/><rect class="k2b-chart-pareto-previous" x="${s.left}" y="${row.y + 1}" width="${prevWidth}" height="${bh}" rx="2" fill="${color}" fill-opacity="0.14" stroke="${color}" stroke-width="0.8"/>${hatch}<rect class="k2b-chart-category-band" x="0" y="${row.y - s.rowHeight / 2}" width="${s.width}" height="${s.rowHeight}" fill="transparent" pointer-events="none"/><text x="${s.left - 8}" y="${row.y + 4}" text-anchor="end" font-size="12" fill="var(--k2b-text,#27272a)">${escapeXml(row.label.length > Math.floor(s.left * (spec.displayWidth ?? 296) / s.width / 7) - 1 ? row.label.slice(0, Math.max(1, Math.floor(s.left * (spec.displayWidth ?? 296) / s.width / 7) - 2)) + "…" : row.label)}</text>`, {
79
+ role: "item",
80
+ index: row.index,
81
+ label: row.label,
82
+ anchor: [s.left + valueWidth, row.y],
83
+ grid: [0, s.rows.indexOf(row)],
84
+ values: [{
85
+ key: "value",
86
+ value: row.value,
87
+ formatted: number(row.value)
88
+ }, {
89
+ key: "previous",
90
+ value: row.prev,
91
+ formatted: number(row.prev)
92
+ }, {
93
+ key: "change",
94
+ value: Number.isFinite(change) ? change : 0,
95
+ formatted: Number.isFinite(change) ? percent.format(change) : "–"
96
+ }, {
97
+ key: "cumulative",
98
+ value: row.cumulative,
99
+ formatted: s.total ? percent.format(row.cumulative) : "–"
100
+ }]
101
+ }, spec.inspect));
102
+ line += ` ${s.left + row.cumulative * s.plot},${row.y}`;
103
+ }
104
+ body.push(`<line x1="${s.left + 0.8 * s.plot}" x2="${s.left + 0.8 * s.plot}" y1="${s.top}" y2="${s.height - s.bottom}" stroke="var(--k2b-warning-text,#92400e)" stroke-dasharray="5 4"/><text x="${s.left + 0.8 * s.plot + 4}" y="${s.height - s.bottom - 4}" font-size="11" fill="var(--k2b-warning-text,#92400e)">80 %</text><polyline points="${line}" fill="none" stroke="var(--k2b-text-muted,#45454e)" stroke-width="1.5" pointer-events="none"/>`);
105
+ for (let p = 0; p <= 5; p++) body.push(`<text x="${s.left + p / 5 * s.plot}" y="${s.height - s.bottom + 17}" text-anchor="middle" font-size="11" fill="var(--k2b-text-muted,#45454e)">${escapeXml(percent.format(p / 5))}</text>`);
106
+ for (const row of s.rows) body.push(`<circle cx="${s.left + row.cumulative * s.plot}" cy="${row.y}" r="3" fill="var(--k2b-surface,#fff)" stroke="var(--k2b-text-muted,#45454e)" stroke-width="1.5" pointer-events="none"/>`);
107
+ const names = [...spec.labels, (spec.locale ?? "en").startsWith("de") ? "Kumuliert" : "Cumulative"];
108
+ let lx = 0;
109
+ names.forEach((name, index) => {
110
+ const x = lx;
111
+ lx += Math.min(s.width / 3, name.length * 12 + 32);
112
+ const display = name.slice(0, Math.max(1, Math.floor(((spec.displayWidth ?? 296) / 3 - 28) / 7)));
113
+ body.push(`${index === 2 ? `<line x1="${x}" x2="${x + 12}" y1="${s.height - 10}" y2="${s.height - 10}" stroke="var(--k2b-text-muted,#45454e)"/>` : `<rect x="${x}" y="${s.height - 15}" width="10" height="10" rx="2" fill="${color}" fill-opacity="${index === 1 ? 0.2 : 1}"/>${index === 1 ? `<path d="M${x},${s.height - 6}l8,-8" stroke="${color}"/>` : ""}`}<text x="${x + 16}" y="${s.height - 6}" font-size="11" fill="var(--k2b-text-muted,#45454e)">${escapeXml(display)}</text>`);
114
+ });
115
+ return svgRoot({
116
+ ...s,
117
+ className: spec.className
118
+ }, body.join(""));
119
+ }
120
+ //# sourceMappingURL=pareto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["charts/core/pareto.ts"],"sourcesContent":["import { type ChartOptions, chartDatumSvg, escapeXml, niceStep, renderHeader, svgRoot } from \"./svg\";\nexport type ParetoOptions = ChartOptions & {\n labels: [string, string];\n data: { label: string; value: number; prev: number }[];\n locale?: string;\n format?: (value: number) => string;\n displayWidth?: number;\n};\nexport function paretoLayout(spec: ParetoOptions, size = { width: spec.width ?? 480, height: spec.height ?? 280 }) {\n const width = spec.displayWidth ?? size.width,\n header = renderHeader(width, spec.title, spec.subtitle),\n top = header.height + 24,\n bottom = 48,\n height = Math.max(size.height, spec.data.length * 34 + top + bottom);\n const data = spec.data\n .map((d, index) => {\n if (![d.value, d.prev].every((v) => Number.isFinite(v) && v >= 0))\n throw new RangeError(\"Pareto values must be finite and nonnegative.\");\n return { ...d, index };\n })\n .sort((a, b) => Number(a.label.toLowerCase() === \"rest\") - Number(b.label.toLowerCase() === \"rest\") || b.value - a.value);\n const total = data.reduce((s, d) => s + d.value, 0),\n rawMax = Math.max(0, ...data.flatMap((d) => [d.value, d.prev])) || 1;\n const step = niceStep(rawMax, 3),\n roundedMax = Math.ceil(rawMax / step) * step;\n const max = Number.isFinite(roundedMax) && roundedMax > 0 ? roundedMax : rawMax;\n const ticks =\n Number.isFinite(step) && step > 0 && max / step <= 6\n ? Array.from({ length: Math.round(max / step) + 1 }, (_, i) => i * step)\n : [0, max / 2, max];\n if (!Number.isFinite(total)) throw new RangeError(\"Pareto total must be finite.\");\n const left = Math.min(112, width * 0.25),\n plot = width - left - 30,\n rowHeight = (height - top - bottom) / Math.max(1, data.length);\n let sum = 0;\n return {\n width,\n height,\n total,\n max,\n ticks,\n left,\n plot,\n rowHeight,\n header,\n top,\n bottom,\n rows: data.map((d, index) => {\n sum += d.value;\n return { ...d, y: top + rowHeight * (index + 0.5), cumulative: total ? sum / total : 0 };\n }),\n };\n}\nexport function renderParetoSvg(spec: ParetoOptions): string {\n const s = paretoLayout(spec);\n const number = spec.format ?? new Intl.NumberFormat(spec.locale ?? \"en\", { maximumSignificantDigits: 15 }).format;\n const percent = new Intl.NumberFormat(spec.locale ?? \"en\", { style: \"percent\", maximumFractionDigits: 1 });\n const color = \"var(--stdlib-chart-c1,#3b82f6)\";\n const body: string[] = [\n s.header.svg\n .replace(/<text class=\"stdlib-chart-title\"/g, '<text fill=\"var(--k2b-text,#27272a)\" font-size=\"14\" class=\"stdlib-chart-title\"')\n .replace(\n /<text class=\"stdlib-chart-subtitle\"/g,\n '<text fill=\"var(--k2b-text-muted,#45454e)\" font-size=\"11\" class=\"stdlib-chart-subtitle\"',\n ),\n ];\n const axisNumber =\n spec.format ??\n new Intl.NumberFormat(spec.locale ?? \"en\", {\n maximumFractionDigits: 2,\n notation: s.max >= 1e9 || s.max < 0.001 ? \"scientific\" : \"standard\",\n }).format;\n for (const tick of s.ticks)\n body.push(\n `<line x1=\"${s.left + (tick / s.max) * s.plot}\" x2=\"${s.left + (tick / s.max) * s.plot}\" y1=\"${s.top}\" y2=\"${s.height - s.bottom}\" stroke=\"var(--k2b-border,#e4e4e7)\" stroke-opacity=\"0.5\" pointer-events=\"none\"/><text x=\"${s.left + (tick / s.max) * s.plot}\" y=\"${s.top - 8}\" text-anchor=\"${tick === s.max ? \"end\" : tick === 0 ? \"start\" : \"middle\"}\" font-size=\"11\" fill=\"var(--k2b-text-muted,#45454e)\">${escapeXml(axisNumber(tick))}</text>`,\n );\n let line = `${s.left},${s.top}`;\n for (const row of s.rows) {\n const change = row.prev ? row.value / row.prev - 1 : Number.NaN;\n const bh = Math.min(s.rowHeight * 0.36, 12),\n valueWidth = (row.value / s.max) * s.plot,\n prevWidth = (row.prev / s.max) * s.plot;\n const hatch = `<path class=\"k2b-chart-pareto-hatch\" d=\"${Array.from({ length: Math.floor(prevWidth / 5) }, (_, i) => `M${s.left + i * 5},${row.y + 1 + bh}l${Math.min(4, prevWidth - i * 5)},-${bh}`).join(\" \")}\" fill=\"none\" stroke=\"${color}\" stroke-width=\"1\" pointer-events=\"none\"/>`;\n body.push(\n chartDatumSvg(\n `<rect class=\"k2b-chart-pareto-current\" x=\"${s.left}\" y=\"${row.y - bh - 1}\" width=\"${valueWidth}\" height=\"${bh}\" rx=\"2\" fill=\"${color}\" stroke=\"none\"/><rect class=\"k2b-chart-pareto-previous\" x=\"${s.left}\" y=\"${row.y + 1}\" width=\"${prevWidth}\" height=\"${bh}\" rx=\"2\" fill=\"${color}\" fill-opacity=\"0.14\" stroke=\"${color}\" stroke-width=\"0.8\"/>${hatch}<rect class=\"k2b-chart-category-band\" x=\"0\" y=\"${row.y - s.rowHeight / 2}\" width=\"${s.width}\" height=\"${s.rowHeight}\" fill=\"transparent\" pointer-events=\"none\"/><text x=\"${s.left - 8}\" y=\"${row.y + 4}\" text-anchor=\"end\" font-size=\"12\" fill=\"var(--k2b-text,#27272a)\">${escapeXml(row.label.length > Math.floor((s.left * (spec.displayWidth ?? 296)) / s.width / 7) - 1 ? row.label.slice(0, Math.max(1, Math.floor((s.left * (spec.displayWidth ?? 296)) / s.width / 7) - 2)) + \"…\" : row.label)}</text>`,\n {\n role: \"item\",\n index: row.index,\n label: row.label,\n anchor: [s.left + valueWidth, row.y],\n grid: [0, s.rows.indexOf(row)],\n values: [\n { key: \"value\", value: row.value, formatted: number(row.value) },\n { key: \"previous\", value: row.prev, formatted: number(row.prev) },\n {\n key: \"change\",\n value: Number.isFinite(change) ? change : 0,\n formatted: Number.isFinite(change) ? percent.format(change) : \"–\",\n },\n { key: \"cumulative\", value: row.cumulative, formatted: s.total ? percent.format(row.cumulative) : \"–\" },\n ],\n },\n spec.inspect,\n ),\n );\n line += ` ${s.left + row.cumulative * s.plot},${row.y}`;\n }\n body.push(\n `<line x1=\"${s.left + 0.8 * s.plot}\" x2=\"${s.left + 0.8 * s.plot}\" y1=\"${s.top}\" y2=\"${s.height - s.bottom}\" stroke=\"var(--k2b-warning-text,#92400e)\" stroke-dasharray=\"5 4\"/><text x=\"${s.left + 0.8 * s.plot + 4}\" y=\"${s.height - s.bottom - 4}\" font-size=\"11\" fill=\"var(--k2b-warning-text,#92400e)\">80 %</text><polyline points=\"${line}\" fill=\"none\" stroke=\"var(--k2b-text-muted,#45454e)\" stroke-width=\"1.5\" pointer-events=\"none\"/>`,\n );\n for (let p = 0; p <= 5; p++)\n body.push(\n `<text x=\"${s.left + (p / 5) * s.plot}\" y=\"${s.height - s.bottom + 17}\" text-anchor=\"middle\" font-size=\"11\" fill=\"var(--k2b-text-muted,#45454e)\">${escapeXml(percent.format(p / 5))}</text>`,\n );\n for (const row of s.rows)\n body.push(\n `<circle cx=\"${s.left + row.cumulative * s.plot}\" cy=\"${row.y}\" r=\"3\" fill=\"var(--k2b-surface,#fff)\" stroke=\"var(--k2b-text-muted,#45454e)\" stroke-width=\"1.5\" pointer-events=\"none\"/>`,\n );\n const names = [...spec.labels, (spec.locale ?? \"en\").startsWith(\"de\") ? \"Kumuliert\" : \"Cumulative\"];\n let lx = 0;\n names.forEach((name, index) => {\n const x = lx;\n lx += Math.min(s.width / 3, name.length * 12 + 32);\n const display = name.slice(0, Math.max(1, Math.floor(((spec.displayWidth ?? 296) / 3 - 28) / 7)));\n body.push(\n `${index === 2 ? `<line x1=\"${x}\" x2=\"${x + 12}\" y1=\"${s.height - 10}\" y2=\"${s.height - 10}\" stroke=\"var(--k2b-text-muted,#45454e)\"/>` : `<rect x=\"${x}\" y=\"${s.height - 15}\" width=\"10\" height=\"10\" rx=\"2\" fill=\"${color}\" fill-opacity=\"${index === 1 ? 0.2 : 1}\"/>${index === 1 ? `<path d=\"M${x},${s.height - 6}l8,-8\" stroke=\"${color}\"/>` : \"\"}`}<text x=\"${x + 16}\" y=\"${s.height - 6}\" font-size=\"11\" fill=\"var(--k2b-text-muted,#45454e)\">${escapeXml(display)}</text>`,\n );\n });\n return svgRoot({ ...s, className: spec.className }, body.join(\"\"));\n}\n"],"mappings":"AAAA,SAA4B,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,QAAQ,OAAO;AAQpG,OAAO,SAAS,YAAY,CAAC,IAAmB,EAAE,IAAI,GAAG;EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,GAAG;EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI;AAAI,CAAC,EAAE;EACjH,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK;IAC3C,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;IACvD,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,EAAE;IACxB,MAAM,GAAG,EAAE;IACX,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;EACtE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CACnB,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK;IACjB,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAE,CAAC,IAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAC/D,MAAM,IAAI,UAAU,CAAC,+CAA+C,CAAC;IACvE,OAAO;MAAE,GAAG,CAAC;MAAE;IAAM,CAAC;EACxB,CAAC,CAAC,CACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;EAC3H,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACjD,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAE,CAAC,IAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;EACtE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9B,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI;EAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,GAAG,UAAU,GAAG,MAAM;EAC/E,MAAM,KAAK,GACT,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,GAChD,KAAK,CAAC,IAAI,CAAC;IAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GACtE,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC;EACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,UAAU,CAAC,8BAA8B,CAAC;EACjF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CAAC;IACtC,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,EAAE;IACxB,SAAS,GAAG,CAAC,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;EAChE,IAAI,GAAG,GAAG,CAAC;EACX,OAAO;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,GAAG;IACH,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,SAAS;IACT,MAAM;IACN,GAAG;IACH,MAAM;IACN,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK;MAC3B,GAAG,IAAI,CAAC,CAAC,KAAK;MACd,OAAO;QAAE,GAAG,CAAC;QAAE,CAAC,EAAE,GAAG,GAAG,SAAS,IAAI,KAAK,GAAG,GAAG,CAAC;QAAE,UAAU,EAAE,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG;MAAE,CAAC;IAC1F,CAAC;EACH,CAAC;AACH;AACA,OAAO,SAAS,eAAe,CAAC,IAAmB,EAAU;EAC3D,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC;EAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;IAAE,wBAAwB,EAAE;EAAG,CAAC,CAAC,CAAC,MAAM;EACjH,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;IAAE,KAAK,EAAE,SAAS;IAAE,qBAAqB,EAAE;EAAE,CAAC,CAAC;EAC1G,MAAM,KAAK,GAAG,gCAAgC;EAC9C,MAAM,IAAc,GAAG,CACrB,CAAC,CAAC,MAAM,CAAC,GAAG,CACT,OAAO,CAAC,mCAAmC,EAAE,gFAAgF,CAAC,CAC9H,OAAO,CACN,sCAAsC,EACtC,yFACF,CAAC,CACJ;EACD,MAAM,UAAU,GACd,IAAI,CAAC,MAAM,IACX,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;IACzC,qBAAqB,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,KAAK,GAAG,YAAY,GAAG;EAC3D,CAAC,CAAC,CAAC,MAAM;EACX,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,KAAK,EACxB,IAAI,CAAC,IAAI,CACP,aAAa,CAAC,CAAC,IAAI,GAAI,IAAI,GAAG,CAAC,CAAC,GAAG,GAAI,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,GAAI,IAAI,GAAG,CAAC,CAAC,GAAG,GAAI,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,6FAA6F,CAAC,CAAC,IAAI,GAAI,IAAI,GAAG,CAAC,CAAC,GAAG,GAAI,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,kBAAkB,IAAI,KAAK,CAAC,CAAC,GAAG,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,OAAO,GAAG,QAAQ,yDAAyD,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAC9a,CAAC;EACH,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE;EAC/B,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE;IACxB,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG;IAC/D,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,EAAE,EAAE,CAAC;MACzC,UAAU,GAAI,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAI,CAAC,CAAC,IAAI;MACzC,SAAS,GAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAI,CAAC,CAAC,IAAI;IACzC,MAAM,KAAK,GAAG,2CAA2C,KAAK,CAAC,IAAI,CAAC;MAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC;IAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB,KAAK,4CAA4C;IACzR,IAAI,CAAC,IAAI,CACP,aAAa,CACX,6CAA6C,CAAC,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,YAAY,UAAU,aAAa,EAAE,kBAAkB,KAAK,+DAA+D,CAAC,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,SAAS,aAAa,EAAE,kBAAkB,KAAK,iCAAiC,KAAK,yBAAyB,KAAK,kDAAkD,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,SAAS,wDAAwD,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,qEAAqE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,GAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,GAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,EACz0B;MACE,IAAI,EAAE,MAAM;MACZ,KAAK,EAAE,GAAG,CAAC,KAAK;MAChB,KAAK,EAAE,GAAG,CAAC,KAAK;MAChB,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;MACpC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;MAC9B,MAAM,EAAE,CACN;QAAE,GAAG,EAAE,OAAO;QAAE,KAAK,EAAE,GAAG,CAAC,KAAK;QAAE,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK;MAAE,CAAC,EAChE;QAAE,GAAG,EAAE,UAAU;QAAE,KAAK,EAAE,GAAG,CAAC,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI;MAAE,CAAC,EACjE;QACE,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC;QAC3C,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG;MAChE,CAAC,EACD;QAAE,GAAG,EAAE,YAAY;QAAE,KAAK,EAAE,GAAG,CAAC,UAAU;QAAE,SAAS,EAAE,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG;MAAI,CAAC;IAE3G,CAAC,EACD,IAAI,CAAC,OACP,CACF,CAAC;IACD,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE;EACzD;EACA,IAAI,CAAC,IAAI,CACP,aAAa,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,+EAA+E,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,wFAAwF,IAAI,iGAC/U,CAAC;EACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EACzB,IAAI,CAAC,IAAI,CACP,YAAY,CAAC,CAAC,IAAI,GAAI,CAAC,GAAG,CAAC,GAAI,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,EAAE,8EAA8E,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SACrL,CAAC;EACH,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,EACtB,IAAI,CAAC,IAAI,CACP,eAAe,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC,0HAC/D,CAAC;EACH,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,WAAW,GAAG,YAAY,CAAC;EACnG,IAAI,EAAE,GAAG,CAAC;EACV,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;IAC7B,MAAM,CAAC,GAAG,EAAE;IACZ,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACjG,IAAI,CAAC,IAAI,CACP,GAAG,KAAK,KAAK,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,MAAM,GAAG,EAAE,SAAS,CAAC,CAAC,MAAM,GAAG,EAAE,4CAA4C,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,EAAE,yCAAyC,KAAK,mBAAmB,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,kBAAkB,KAAK,KAAK,GAAG,EAAE,EAAE,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,yDAAyD,SAAS,CAAC,OAAO,CAAC,SACzc,CAAC;EACH,CAAC,CAAC;EACF,OAAO,OAAO,CAAC;IAAE,GAAG,CAAC;IAAE,SAAS,EAAE,IAAI,CAAC;EAAU,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpE","ignoreList":[]}
@@ -0,0 +1,101 @@
1
+ import { chartDatumSvg, escapeXml, renderHeader, svgRoot } from "./svg";
2
+ const palette = ["#3b82f6", "#10b981", "#f59e0b", "#8b5cf6"];
3
+ const color = index => `var(--stdlib-chart-c${index + 1},${palette[index]})`;
4
+ export function radarLayout(spec, size = {
5
+ width: spec.width ?? 480,
6
+ height: spec.height ?? 280
7
+ }) {
8
+ if (spec.axes.length < 3 || spec.axes.length > 8 || !Number.isFinite(spec.max) || spec.max <= 0 || spec.series.length > 4) throw new RangeError("Radar needs 3 to 8 axes, at most 4 series and one positive maximum.");
9
+ for (const series of spec.series) if (series.data.length !== spec.axes.length || series.data.some(value => !Number.isFinite(value) || value < 0 || value > spec.max)) throw new RangeError("Radar series need one value per axis, between zero and the common maximum.");
10
+ const width = spec.displayWidth ?? Math.min(size.width, 296),
11
+ height = size.height,
12
+ header = renderHeader(width, spec.title, spec.subtitle);
13
+ const legend = [];
14
+ let lx = 0,
15
+ row = 0;
16
+ if (spec.legend !== false) spec.series.forEach((series, index) => {
17
+ const space = Math.min(width, series.label.length * 12 + 28);
18
+ if (lx && lx + space > width) {
19
+ lx = 0;
20
+ row++;
21
+ }
22
+ legend.push({
23
+ label: series.label,
24
+ index,
25
+ x: lx,
26
+ row
27
+ });
28
+ lx += space;
29
+ });
30
+ const bottom = legend.length ? (row + 1) * 20 + 4 : 4,
31
+ plotHeight = height - header.height - bottom,
32
+ cx = width / 2,
33
+ cy = header.height + plotHeight / 2;
34
+ const labelRoom = Math.min(width * 0.28, Math.max(0, ...spec.axes.map((label, index) => Math.abs(Math.cos(-Math.PI / 2 + index * Math.PI * 2 / spec.axes.length)) > 0.2 ? label.length * 7 : 0))) + 18;
35
+ const radius = Math.max(0, Math.min(width / 2 - labelRoom, plotHeight / 2 - 24));
36
+ const point = (axis, value) => {
37
+ const angle = -Math.PI / 2 + axis * Math.PI * 2 / spec.axes.length;
38
+ return [cx + Math.cos(angle) * radius * (value / spec.max), cy + Math.sin(angle) * radius * (value / spec.max)];
39
+ };
40
+ const axes = spec.axes.map((label, index) => {
41
+ const angle = -Math.PI / 2 + index * Math.PI * 2 / spec.axes.length,
42
+ c = Math.cos(angle),
43
+ x = cx + (radius + 12) * c,
44
+ y = cy + (radius + 12) * Math.sin(angle) + 4,
45
+ anchor = Math.abs(c) < 0.2 ? "middle" : c > 0 ? "start" : "end";
46
+ const room = anchor === "middle" ? width - 16 : anchor === "start" ? width - x - 6 : x - 6;
47
+ const length = Math.max(1, Math.floor(room / 7));
48
+ return {
49
+ label,
50
+ index,
51
+ x,
52
+ y,
53
+ anchor,
54
+ text: label.length > length ? label.slice(0, Math.max(1, length - 1)) + "…" : label,
55
+ end: point(index, spec.max),
56
+ points: spec.series.map(series => point(index, series.data[index]))
57
+ };
58
+ });
59
+ return {
60
+ width,
61
+ height,
62
+ header,
63
+ cx,
64
+ cy,
65
+ radius,
66
+ axes,
67
+ point,
68
+ legend,
69
+ bottom
70
+ };
71
+ }
72
+ export function renderRadarSvg(spec) {
73
+ const s = radarLayout(spec),
74
+ number = spec.format ?? new Intl.NumberFormat(spec.locale ?? "en", {
75
+ maximumSignificantDigits: 15
76
+ }).format;
77
+ const text = "var(--k2b-text-muted,#45454e)",
78
+ border = "var(--k2b-border,#e4e4e7)";
79
+ const body = [s.header.svg.replace(/<text class="stdlib-chart-title"/g, '<text fill="var(--k2b-text,#27272a)" font-size="14" class="stdlib-chart-title"').replace(/<text class="stdlib-chart-subtitle"/g, '<text fill="var(--k2b-text-muted,#45454e)" font-size="11" class="stdlib-chart-subtitle"')];
80
+ for (let ring = 1; ring <= 4; ring++) body.push(`<polygon points="${s.axes.map(axis => s.point(axis.index, spec.max * (ring / 4)).join(",")).join(" ")}" fill="none" stroke="${border}"/>`);
81
+ for (const axis of s.axes) body.push(`<line x1="${s.cx}" y1="${s.cy}" x2="${axis.end[0]}" y2="${axis.end[1]}" stroke="${border}"/><text class="k2b-chart-radar-label" x="${axis.x}" y="${axis.y}" text-anchor="${axis.anchor}" font-size="12" fill="${text}">${escapeXml(axis.text)}</text>`);
82
+ body.push(`<text x="${s.cx + 5}" y="${s.cy - s.radius + 13}" font-size="10" fill="${text}">${escapeXml(number(spec.max))}${spec.unit ? " " + escapeXml(spec.unit) : ""}</text>`);
83
+ spec.series.forEach((series, index) => body.push(`<polygon points="${series.data.map((value, axis) => s.point(axis, value).join(",")).join(" ")}" fill="${color(index)}" fill-opacity="0.18" stroke="${color(index)}" stroke-width="2" stroke-linejoin="round"/>`));
84
+ for (const axis of s.axes) body.push(chartDatumSvg(axis.points.map((point, index) => `<circle cx="${point[0]}" cy="${point[1]}" r="3" fill="${color(index)}" style="--k2b-chart-inspection-color:${color(index)};--k2b-chart-selection-color:${color(index)}" stroke="none"/>`).join("") + `<path pointer-events="stroke" class="k2b-chart-category-band k2b-chart-radar-axis" d="M${s.cx},${s.cy}L${axis.end[0]},${axis.end[1]}" fill="none" stroke="transparent" stroke-width="16"/>`, {
85
+ role: "item",
86
+ index: axis.index,
87
+ label: axis.label,
88
+ anchor: axis.end,
89
+ values: spec.series.map((series, index) => ({
90
+ key: `series:${index}`,
91
+ value: series.data[axis.index],
92
+ formatted: `${number(series.data[axis.index])} / ${number(spec.max)}${spec.unit ? " " + spec.unit : ""}`
93
+ }))
94
+ }, spec.inspect));
95
+ for (const item of s.legend) body.push(`<rect x="${item.x}" y="${s.height - (s.legend.at(-1).row - item.row) * 20 - 14}" width="8" height="8" rx="2" fill="${color(item.index)}"/><text x="${item.x + 13}" y="${s.height - (s.legend.at(-1).row - item.row) * 20 - 6}" font-size="11" fill="${text}">${escapeXml(item.label.slice(0, Math.floor((s.width - 28) / 12)))}</text>`);
96
+ return svgRoot({
97
+ ...s,
98
+ className: spec.className
99
+ }, body.join(""));
100
+ }
101
+ //# sourceMappingURL=radar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["charts/core/radar.ts"],"sourcesContent":["import { type ChartOptions, chartDatumSvg, escapeXml, renderHeader, svgRoot } from \"./svg\";\nexport type RadarOptions = ChartOptions & {\n axes: string[];\n max: number;\n unit?: string;\n series: { label: string; data: number[] }[];\n legend?: boolean;\n locale?: string;\n format?: (value: number) => string;\n displayWidth?: number;\n};\nconst palette = [\"#3b82f6\", \"#10b981\", \"#f59e0b\", \"#8b5cf6\"];\nconst color = (index: number) => `var(--stdlib-chart-c${index + 1},${palette[index]})`;\nexport function radarLayout(spec: RadarOptions, size = { width: spec.width ?? 480, height: spec.height ?? 280 }) {\n if (spec.axes.length < 3 || spec.axes.length > 8 || !Number.isFinite(spec.max) || spec.max <= 0 || spec.series.length > 4)\n throw new RangeError(\"Radar needs 3 to 8 axes, at most 4 series and one positive maximum.\");\n for (const series of spec.series)\n if (series.data.length !== spec.axes.length || series.data.some((value) => !Number.isFinite(value) || value < 0 || value > spec.max))\n throw new RangeError(\"Radar series need one value per axis, between zero and the common maximum.\");\n const width = spec.displayWidth ?? Math.min(size.width, 296),\n height = size.height,\n header = renderHeader(width, spec.title, spec.subtitle);\n const legend: { label: string; index: number; x: number; row: number }[] = [];\n let lx = 0,\n row = 0;\n if (spec.legend !== false)\n spec.series.forEach((series, index) => {\n const space = Math.min(width, series.label.length * 12 + 28);\n if (lx && lx + space > width) {\n lx = 0;\n row++;\n }\n legend.push({ label: series.label, index, x: lx, row });\n lx += space;\n });\n const bottom = legend.length ? (row + 1) * 20 + 4 : 4,\n plotHeight = height - header.height - bottom,\n cx = width / 2,\n cy = header.height + plotHeight / 2;\n const labelRoom =\n Math.min(\n width * 0.28,\n Math.max(\n 0,\n ...spec.axes.map((label, index) =>\n Math.abs(Math.cos(-Math.PI / 2 + (index * Math.PI * 2) / spec.axes.length)) > 0.2 ? label.length * 7 : 0,\n ),\n ),\n ) + 18;\n const radius = Math.max(0, Math.min(width / 2 - labelRoom, plotHeight / 2 - 24));\n const point = (axis: number, value: number) => {\n const angle = -Math.PI / 2 + (axis * Math.PI * 2) / spec.axes.length;\n return [cx + Math.cos(angle) * radius * (value / spec.max), cy + Math.sin(angle) * radius * (value / spec.max)] as [number, number];\n };\n const axes = spec.axes.map((label, index) => {\n const angle = -Math.PI / 2 + (index * Math.PI * 2) / spec.axes.length,\n c = Math.cos(angle),\n x = cx + (radius + 12) * c,\n y = cy + (radius + 12) * Math.sin(angle) + 4,\n anchor = Math.abs(c) < 0.2 ? \"middle\" : c > 0 ? \"start\" : \"end\";\n const room = anchor === \"middle\" ? width - 16 : anchor === \"start\" ? width - x - 6 : x - 6;\n const length = Math.max(1, Math.floor(room / 7));\n return {\n label,\n index,\n x,\n y,\n anchor,\n text: label.length > length ? label.slice(0, Math.max(1, length - 1)) + \"…\" : label,\n end: point(index, spec.max),\n points: spec.series.map((series) => point(index, series.data[index]!)),\n };\n });\n return { width, height, header, cx, cy, radius, axes, point, legend, bottom };\n}\nexport function renderRadarSvg(spec: RadarOptions): string {\n const s = radarLayout(spec),\n number = spec.format ?? new Intl.NumberFormat(spec.locale ?? \"en\", { maximumSignificantDigits: 15 }).format;\n const text = \"var(--k2b-text-muted,#45454e)\",\n border = \"var(--k2b-border,#e4e4e7)\";\n const body = [\n s.header.svg\n .replace(/<text class=\"stdlib-chart-title\"/g, '<text fill=\"var(--k2b-text,#27272a)\" font-size=\"14\" class=\"stdlib-chart-title\"')\n .replace(\n /<text class=\"stdlib-chart-subtitle\"/g,\n '<text fill=\"var(--k2b-text-muted,#45454e)\" font-size=\"11\" class=\"stdlib-chart-subtitle\"',\n ),\n ];\n for (let ring = 1; ring <= 4; ring++)\n body.push(\n `<polygon points=\"${s.axes.map((axis) => s.point(axis.index, spec.max * (ring / 4)).join(\",\")).join(\" \")}\" fill=\"none\" stroke=\"${border}\"/>`,\n );\n for (const axis of s.axes)\n body.push(\n `<line x1=\"${s.cx}\" y1=\"${s.cy}\" x2=\"${axis.end[0]}\" y2=\"${axis.end[1]}\" stroke=\"${border}\"/><text class=\"k2b-chart-radar-label\" x=\"${axis.x}\" y=\"${axis.y}\" text-anchor=\"${axis.anchor}\" font-size=\"12\" fill=\"${text}\">${escapeXml(axis.text)}</text>`,\n );\n body.push(\n `<text x=\"${s.cx + 5}\" y=\"${s.cy - s.radius + 13}\" font-size=\"10\" fill=\"${text}\">${escapeXml(number(spec.max))}${spec.unit ? \" \" + escapeXml(spec.unit) : \"\"}</text>`,\n );\n spec.series.forEach((series, index) =>\n body.push(\n `<polygon points=\"${series.data.map((value, axis) => s.point(axis, value).join(\",\")).join(\" \")}\" fill=\"${color(index)}\" fill-opacity=\"0.18\" stroke=\"${color(index)}\" stroke-width=\"2\" stroke-linejoin=\"round\"/>`,\n ),\n );\n for (const axis of s.axes)\n body.push(\n chartDatumSvg(\n axis.points\n .map(\n (point, index) =>\n `<circle cx=\"${point[0]}\" cy=\"${point[1]}\" r=\"3\" fill=\"${color(index)}\" style=\"--k2b-chart-inspection-color:${color(index)};--k2b-chart-selection-color:${color(index)}\" stroke=\"none\"/>`,\n )\n .join(\"\") +\n `<path pointer-events=\"stroke\" class=\"k2b-chart-category-band k2b-chart-radar-axis\" d=\"M${s.cx},${s.cy}L${axis.end[0]},${axis.end[1]}\" fill=\"none\" stroke=\"transparent\" stroke-width=\"16\"/>`,\n {\n role: \"item\",\n index: axis.index,\n label: axis.label,\n anchor: axis.end,\n values: spec.series.map((series, index) => ({\n key: `series:${index}`,\n value: series.data[axis.index]!,\n formatted: `${number(series.data[axis.index]!)} / ${number(spec.max)}${spec.unit ? \" \" + spec.unit : \"\"}`,\n })),\n },\n spec.inspect,\n ),\n );\n for (const item of s.legend)\n body.push(\n `<rect x=\"${item.x}\" y=\"${s.height - (s.legend.at(-1)!.row - item.row) * 20 - 14}\" width=\"8\" height=\"8\" rx=\"2\" fill=\"${color(item.index)}\"/><text x=\"${item.x + 13}\" y=\"${s.height - (s.legend.at(-1)!.row - item.row) * 20 - 6}\" font-size=\"11\" fill=\"${text}\">${escapeXml(item.label.slice(0, Math.floor((s.width - 28) / 12)))}</text>`,\n );\n return svgRoot({ ...s, className: spec.className }, body.join(\"\"));\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,28 +1,45 @@
1
1
  import { renderBarChartSvg } from "../../content/chart-bar";
2
2
  import { renderStateTimelineSvg } from "../../content/chart-state-timeline";
3
3
  import { renderAreaSvg } from "./area";
4
+ import { renderBubbleSvg } from "./bubble";
4
5
  import { renderHeatmapSvg } from "./calendar";
5
- import { charts } from "./svg";
6
+ import { renderFunnelSvg } from "./funnel";
7
+ import { renderHbarSvg } from "./hbar";
8
+ import { map } from "./map";
9
+ import { renderParetoSvg } from "./pareto";
10
+ import { renderRadarSvg } from "./radar";
11
+ import { barGauge, boxplot, donut, gauge, histogram, line, pie, scatter, sparkline, stat } from "./svg-renderers";
12
+ import { renderTreemapSvg } from "./treemap";
13
+ import { renderWaterfallSvg } from "./waterfall";
6
14
 
7
15
  // Add one renderer here: its key defines the discriminator, ChartKind and the capitalized Chart namespace member.
8
16
  // Keep kind-specific adaptations in renderChartSvg and add a fixture to the namespace parity test.
9
- export const chartRenderers = {
17
+ const createChartRenderers = () => ({
18
+ waterfall: renderWaterfallSvg,
10
19
  area: renderAreaSvg,
11
- line: charts.line,
20
+ line: line,
12
21
  bar: renderBarChartSvg,
13
- pie: charts.pie,
14
- donut: charts.donut,
15
- scatter: charts.scatter,
16
- sparkline: charts.sparkline,
17
- histogram: charts.histogram,
18
- boxplot: charts.boxplot,
19
- gauge: charts.gauge,
20
- barGauge: charts.barGauge,
21
- stat: charts.stat,
22
+ hbar: renderHbarSvg,
23
+ funnel: renderFunnelSvg,
24
+ pie: pie,
25
+ donut: donut,
26
+ scatter: scatter,
27
+ sparkline: sparkline,
28
+ histogram: histogram,
29
+ boxplot: boxplot,
30
+ gauge: gauge,
31
+ barGauge: barGauge,
32
+ stat: stat,
22
33
  heatmap: renderHeatmapSvg,
23
- map: charts.map,
24
- stateTimeline: renderStateTimelineSvg
25
- };
34
+ map: map,
35
+ stateTimeline: renderStateTimelineSvg,
36
+ treemap: renderTreemapSvg,
37
+ pareto: renderParetoSvg,
38
+ bubble: renderBubbleSvg,
39
+ radar: renderRadarSvg
40
+ });
41
+ export const chartRenderers = /* @__PURE__ */createChartRenderers();
26
42
  // Object.entries loses literal keys; names are constructed from those same keys here.
27
- export const chartKinds = Object.fromEntries(Object.keys(chartRenderers).map(kind => [kind[0].toUpperCase() + kind.slice(1), kind]));
43
+ const kinds = () => Object.fromEntries(Object.keys(chartRenderers).map(kind => [kind[0].toUpperCase() + kind.slice(1), kind]));
44
+ export const chartKinds = /* @__PURE__ */kinds();
28
45
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["charts/core/registry.ts"],"sourcesContent":["import { renderBarChartSvg } from \"../../content/chart-bar\";\nimport { renderStateTimelineSvg } from \"../../content/chart-state-timeline\";\nimport { renderAreaSvg } from \"./area\";\nimport { renderHeatmapSvg } from \"./calendar\";\nimport { charts } from \"./svg\";\n\n// Add one renderer here: its key defines the discriminator, ChartKind and the capitalized Chart namespace member.\n// Keep kind-specific adaptations in renderChartSvg and add a fixture to the namespace parity test.\nexport const chartRenderers = {\n area: renderAreaSvg,\n line: charts.line,\n bar: renderBarChartSvg,\n pie: charts.pie,\n donut: charts.donut,\n scatter: charts.scatter,\n sparkline: charts.sparkline,\n histogram: charts.histogram,\n boxplot: charts.boxplot,\n gauge: charts.gauge,\n barGauge: charts.barGauge,\n stat: charts.stat,\n heatmap: renderHeatmapSvg,\n map: charts.map,\n stateTimeline: renderStateTimelineSvg,\n};\ntype Kind = keyof typeof chartRenderers;\ntype ChartKinds = { [K in Kind as Capitalize<K>]: K };\n// Object.entries loses literal keys; names are constructed from those same keys here.\nexport const chartKinds = Object.fromEntries(\n Object.keys(chartRenderers).map((kind) => [kind[0]!.toUpperCase() + kind.slice(1), kind]),\n) as ChartKinds;\n"],"mappings":"AAAA,SAAS,iBAAiB,QAAQ,yBAAyB;AAC3D,SAAS,sBAAsB,QAAQ,oCAAoC;AAC3E,SAAS,aAAa,QAAQ,QAAQ;AACtC,SAAS,gBAAgB,QAAQ,YAAY;AAC7C,SAAS,MAAM,QAAQ,OAAO;;AAE9B;AACA;AACA,OAAO,MAAM,cAAc,GAAG;EAC5B,IAAI,EAAE,aAAa;EACnB,IAAI,EAAE,MAAM,CAAC,IAAI;EACjB,GAAG,EAAE,iBAAiB;EACtB,GAAG,EAAE,MAAM,CAAC,GAAG;EACf,KAAK,EAAE,MAAM,CAAC,KAAK;EACnB,OAAO,EAAE,MAAM,CAAC,OAAO;EACvB,SAAS,EAAE,MAAM,CAAC,SAAS;EAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;EAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;EACvB,KAAK,EAAE,MAAM,CAAC,KAAK;EACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;EACzB,IAAI,EAAE,MAAM,CAAC,IAAI;EACjB,OAAO,EAAE,gBAAgB;EACzB,GAAG,EAAE,MAAM,CAAC,GAAG;EACf,aAAa,EAAE;AACjB,CAAC;AAGD;AACA,OAAO,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAC1C,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAE,IAAI,IAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAC1F,CAAe","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["charts/core/registry.ts"],"sourcesContent":["import { renderBarChartSvg } from \"../../content/chart-bar\";\nimport { renderStateTimelineSvg } from \"../../content/chart-state-timeline\";\nimport { renderAreaSvg } from \"./area\";\nimport { renderBubbleSvg } from \"./bubble\";\nimport { renderHeatmapSvg } from \"./calendar\";\nimport { renderFunnelSvg } from \"./funnel\";\nimport { renderHbarSvg } from \"./hbar\";\nimport { map } from \"./map\";\nimport { renderParetoSvg } from \"./pareto\";\n\nimport { renderRadarSvg } from \"./radar\";\nimport { barGauge, boxplot, donut, gauge, histogram, line, pie, scatter, sparkline, stat } from \"./svg-renderers\";\nimport { renderTreemapSvg } from \"./treemap\";\nimport { renderWaterfallSvg } from \"./waterfall\";\n\n// Add one renderer here: its key defines the discriminator, ChartKind and the capitalized Chart namespace member.\n// Keep kind-specific adaptations in renderChartSvg and add a fixture to the namespace parity test.\nconst createChartRenderers = () => ({\n waterfall: renderWaterfallSvg,\n area: renderAreaSvg,\n line: line,\n bar: renderBarChartSvg,\n hbar: renderHbarSvg,\n funnel: renderFunnelSvg,\n pie: pie,\n donut: donut,\n scatter: scatter,\n sparkline: sparkline,\n histogram: histogram,\n boxplot: boxplot,\n gauge: gauge,\n barGauge: barGauge,\n stat: stat,\n heatmap: renderHeatmapSvg,\n map: map,\n stateTimeline: renderStateTimelineSvg,\n treemap: renderTreemapSvg,\n pareto: renderParetoSvg,\n\n bubble: renderBubbleSvg,\n radar: renderRadarSvg,\n});\nexport const chartRenderers = /* @__PURE__ */ createChartRenderers();\ntype Kind = keyof typeof chartRenderers;\ntype ChartKinds = { [K in Kind as Capitalize<K>]: K };\n// Object.entries loses literal keys; names are constructed from those same keys here.\nconst kinds = () =>\n Object.fromEntries(Object.keys(chartRenderers).map((kind) => [kind[0]!.toUpperCase() + kind.slice(1), kind])) as ChartKinds;\nexport const chartKinds = /* @__PURE__ */ kinds();\n"],"mappings":"AAAA,SAAS,iBAAiB,QAAQ,yBAAyB;AAC3D,SAAS,sBAAsB,QAAQ,oCAAoC;AAC3E,SAAS,aAAa,QAAQ,QAAQ;AACtC,SAAS,eAAe,QAAQ,UAAU;AAC1C,SAAS,gBAAgB,QAAQ,YAAY;AAC7C,SAAS,eAAe,QAAQ,UAAU;AAC1C,SAAS,aAAa,QAAQ,QAAQ;AACtC,SAAS,GAAG,QAAQ,OAAO;AAC3B,SAAS,eAAe,QAAQ,UAAU;AAE1C,SAAS,cAAc,QAAQ,SAAS;AACxC,SAAS,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,QAAQ,iBAAiB;AACjH,SAAS,gBAAgB,QAAQ,WAAW;AAC5C,SAAS,kBAAkB,QAAQ,aAAa;;AAEhD;AACA;AACA,MAAM,oBAAoB,GAAG,OAAO;EAClC,SAAS,EAAE,kBAAkB;EAC7B,IAAI,EAAE,aAAa;EACnB,IAAI,EAAE,IAAI;EACV,GAAG,EAAE,iBAAiB;EACtB,IAAI,EAAE,aAAa;EACnB,MAAM,EAAE,eAAe;EACvB,GAAG,EAAE,GAAG;EACR,KAAK,EAAE,KAAK;EACZ,OAAO,EAAE,OAAO;EAChB,SAAS,EAAE,SAAS;EACpB,SAAS,EAAE,SAAS;EACpB,OAAO,EAAE,OAAO;EAChB,KAAK,EAAE,KAAK;EACZ,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,IAAI;EACV,OAAO,EAAE,gBAAgB;EACzB,GAAG,EAAE,GAAG;EACR,aAAa,EAAE,sBAAsB;EACrC,OAAO,EAAE,gBAAgB;EACzB,MAAM,EAAE,eAAe;EAEvB,MAAM,EAAE,eAAe;EACvB,KAAK,EAAE;AACT,CAAC,CAAC;AACF,OAAO,MAAM,cAAc,GAAG,eAAgB,oBAAoB,CAAC,CAAC;AAGpE;AACA,MAAM,KAAK,GAAG,MACZ,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAE,IAAI,IAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAe;AAC7H,OAAO,MAAM,UAAU,GAAG,eAAgB,KAAK,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ import { barChartLayout } from "../../content/chart-bar";
2
+ import { stateTimelineHeight } from "../../content/chart-state-timeline";
3
+ import { hbarLayout } from "./hbar";
4
+ import { renderHeader } from "./svg-renderers";
5
+ /** Standard logical height, or compact bar-gauge rows for a host without an explicit height. */
6
+ export const chartRenderHeight = (props, sizing = {}) => {
7
+ if (props.kind === "stateTimeline") return stateTimelineHeight(props.rows.length, props.legend !== false);
8
+ if (props.kind === "pareto") return Math.max(280, props.data.length * 34 + renderHeader(480, props.title, props.subtitle).height + 72);
9
+ if (props.kind === "bar") return barChartLayout(props).height;
10
+ if (props.kind === "hbar") return hbarLayout(props).height;
11
+ if (props.kind === "barGauge") return Math.max(sizing.contentHeight ? 80 : 280, (props.title || props.subtitle ? 42 : 16) + props.data.length * 28 + 14);
12
+ return 280;
13
+ };
14
+ export const preservesAspectRatio = kind => kind === "map" || kind === "pie" || kind === "donut" || kind === "gauge" || kind === "radar";
15
+ //# sourceMappingURL=render-size.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["charts/core/render-size.ts"],"sourcesContent":["import { barChartLayout } from \"../../content/chart-bar\";\nimport { stateTimelineHeight } from \"../../content/chart-state-timeline\";\nimport { hbarLayout } from \"./hbar\";\nimport type { ChartRenderOptions } from \"./render\";\nimport { renderHeader } from \"./svg-renderers\";\nimport type { ChartKind } from \"./types\";\n\n/** Standard logical height, or compact bar-gauge rows for a host without an explicit height. */\nexport const chartRenderHeight = (props: ChartRenderOptions, sizing: { contentHeight?: boolean } = {}): number => {\n if (props.kind === \"stateTimeline\") return stateTimelineHeight(props.rows.length, props.legend !== false);\n if (props.kind === \"pareto\") return Math.max(280, props.data.length * 34 + renderHeader(480, props.title, props.subtitle).height + 72);\n if (props.kind === \"bar\") return barChartLayout(props).height;\n if (props.kind === \"hbar\") return hbarLayout(props).height;\n if (props.kind === \"barGauge\")\n return Math.max(sizing.contentHeight ? 80 : 280, (props.title || props.subtitle ? 42 : 16) + props.data.length * 28 + 14);\n return 280;\n};\n\nexport const preservesAspectRatio = (kind: ChartKind) =>\n kind === \"map\" || kind === \"pie\" || kind === \"donut\" || kind === \"gauge\" || kind === \"radar\";\n"],"mappings":"AAAA,SAAS,cAAc,QAAQ,yBAAyB;AACxD,SAAS,mBAAmB,QAAQ,oCAAoC;AACxE,SAAS,UAAU,QAAQ,QAAQ;AAEnC,SAAS,YAAY,QAAQ,iBAAiB;AAG9C;AACA,OAAO,MAAM,iBAAiB,GAAG,CAAC,KAAyB,EAAE,MAAmC,GAAG,CAAC,CAAC,KAAa;EAChH,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,OAAO,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC;EACzG,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC;EACtI,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM;EAC7D,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM;EAC1D,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;EAC3H,OAAO,GAAG;AACZ,CAAC;AAED,OAAO,MAAM,oBAAoB,GAAI,IAAe,IAClD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO","ignoreList":[]}