@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
@@ -0,0 +1,646 @@
1
+ import { template as _$template } from "solid-js/web";
2
+ import { delegateEvents as _$delegateEvents } from "solid-js/web";
3
+ import { memo as _$memo } from "solid-js/web";
4
+ import { setProperty as _$setProperty } from "solid-js/web";
5
+ import { setStyleProperty as _$setStyleProperty } from "solid-js/web";
6
+ import { style as _$style } from "solid-js/web";
7
+ import { runHydrationEvents as _$runHydrationEvents } from "solid-js/web";
8
+ import { getNextMarker as _$getNextMarker } from "solid-js/web";
9
+ import { setAttribute as _$setAttribute } from "solid-js/web";
10
+ import { effect as _$effect } from "solid-js/web";
11
+ import { insert as _$insert } from "solid-js/web";
12
+ import { addEventListener as _$addEventListener } from "solid-js/web";
13
+ import { use as _$use } from "solid-js/web";
14
+ import { createComponent as _$createComponent } from "solid-js/web";
15
+ import { getNextElement as _$getNextElement } from "solid-js/web";
16
+ import { className as _$className } from "solid-js/web";
17
+ var _tmpl$ = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
18
+ _tmpl$2 = /*#__PURE__*/_$template(`<div class=k2b-chart__legend role=group tabindex=0>`),
19
+ _tmpl$3 = /*#__PURE__*/_$template(`<div class=k2b-chart__controls><!$><!/><!$><!/><!$><!/>`),
20
+ _tmpl$4 = /*#__PURE__*/_$template(`<div data-interactive=true role=group tabindex=0><!$><!/><div class=k2b-chart__svg></div><span class=k2b-chart__anchor aria-hidden=true></span><span role=tooltip popover=manual data-instant=true class="k2b-tooltip k2b-chart__tooltip"></span><!$><!/>`),
21
+ _tmpl$5 = /*#__PURE__*/_$template(`<div>`),
22
+ _tmpl$6 = /*#__PURE__*/_$template(`<b data-chart-legend-value>`),
23
+ _tmpl$7 = /*#__PURE__*/_$template(`<span class=k2b-chart__legend-item><svg viewBox="0 0 10 10"width=10 height=10 aria-hidden=true><rect x=1 y=1 width=8 height=8 rx=2 stroke=none></rect></svg><span></span><!$><!/>`);
24
+ import { createEffect, createMemo, createSignal, createUniqueId, For, onCleanup, onMount, Show, splitProps, untrack } from "solid-js";
25
+ import { isServer } from "solid-js/web";
26
+ import { IconButton } from "../actions/Button";
27
+ import { calendarLayout } from "../charts/core/calendar";
28
+ import { chartRenderHeight, preservesAspectRatio } from "../charts/core/render-size";
29
+ import { suppressTextSelection } from "../internal/text-selection";
30
+ import { useLocale } from "../intl/locale";
31
+ import { useUiMessages } from "../intl/messages";
32
+ import { calendarInspectionNavigation, mountCalendarScroll } from "./chart-calendar";
33
+ import { createChartInspection } from "./chart-inspection";
34
+ import { closeChartInspectionOnOutside } from "./chart-inspection-core";
35
+ import { DEFAULT_MAP_VIEWPORT, normalizeMapViewport, panMapViewport, zoomMapViewport } from "./chart-map-viewport";
36
+ import { resolveChartMessages, useChartMessages } from "./chart-messages";
37
+ import { panStateTimelineViewport, stateTimelineDomain, stateTimelineHeight, zoomStateTimelineViewport } from "./chart-state-timeline";
38
+ import { selectedChartSvg } from "./chart-svg";
39
+ import { useViewportMessages } from "./viewport-messages";
40
+
41
+ /**
42
+ * Chart — Solid interaction and sizing around the portable UI chart core.
43
+ *
44
+ * **Live-update story.** `charts.<kind>(opts)` returns an SVG string;
45
+ * Solid's `innerHTML` is reactive, so any time a prop (signal, store
46
+ * slice, derived value) changes, the SVG re-renders. No manual
47
+ * subscription, no imperative DOM patching. Trade-off: every change
48
+ * is a full SVG re-build, not a diff — fine for dashboard cadences
49
+ * (poll, websocket, store updates). Don't use this for 60fps streaming.
50
+ *
51
+ * **Sizing.** The server and browser render the same logical viewBox. CSS
52
+ * fits Cartesian plots to the container and preserves text/marker sizes;
53
+ * maps fit the whole world and zoom uniformly across the full plot; pies, donuts and gauges retain
54
+ * their aspect ratio. No measurement
55
+ * or hydration redraw is needed. The caller sizes the wrapper, for example
56
+ * `style={{ height: "14rem" }}`. State timelines derive their default height
57
+ * from the row count and legend via `stateTimelineHeight()`.
58
+ *
59
+ * **Why so thin.** The props are a discriminated union over each
60
+ * registered core chart renderer — `kind: "line"` brings in exactly the params
61
+ * `charts.line` expects, `kind: "bar"` brings in `charts.bar`'s, etc.
62
+ * Options stay aligned with the core renderer without renaming. Every chart provides
63
+ * renderer-owned inspection, tooltips and optional selection by default.
64
+ * `interactive` adds bounded pan / zoom and reset controls to maps and state timelines.
65
+ * When a core renderer gains an option, it is automatically available at every
66
+ * callsite.
67
+ *
68
+ * **Theming.** The core renderers use `currentColor` for axes / ticks /
69
+ * tick labels — set the wrapping element's `color` and everything
70
+ * inherits. Series colors come from `--stdlib-chart-c1..c8` CSS
71
+ * custom properties; override on the parent for per-chart palettes.
72
+ *
73
+ * ```tsx
74
+ * <Chart kind="line" style={{ height: "12rem" }}
75
+ * series={[{ data: points() }]}
76
+ * yAxis={{ format: v => `€${v}k` }} />
77
+ *
78
+ * <Chart kind="donut" style={{ height: "12rem" }} data={slices()} />
79
+ *
80
+ * <Chart kind="sparkline" style={{ width: "6rem", height: "1.5rem" }} data={trend()} />
81
+ *
82
+ * <Chart kind="map" style={{ height: "16rem" }} series={locations()} interactive />
83
+ * ```
84
+ */
85
+
86
+ /** All registered chart kinds. */
87
+
88
+ /**
89
+ * Per-kind props: `kind` discriminator + the exact options that
90
+ * `charts.<kind>` accepts, **minus** `width` / `height` (the wrapper
91
+ * owns those — CSS fits a stable coordinate space to the box). Solid's
92
+ * component model handles discriminated unions natively, so callsites
93
+ * get full type safety.
94
+ */
95
+
96
+ /** Empty-data short-circuit. Kept per-kind because each renderer's payload
97
+ * key differs (series vs data vs groups). We're conservative: only
98
+ * block on truly empty inputs; partially-filled series get rendered
99
+ * as-is and the core handles the gaps. */
100
+ const isEmpty = props => {
101
+ if (props.kind === "treemap" || props.kind === "pareto") return !props.data.length;
102
+ if (props.kind === "bubble") return !props.data.length;
103
+ if (props.kind === "radar") return !props.series.length;
104
+ if (props.kind === "area") return !props.x.length || !props.series.length || props.x.every((_, i) => props.series.some(s => s.data[i] === null) || props.normalize && props.series.every(s => s.data[i] === 0));
105
+ if (props.kind === "line" || props.kind === "scatter") {
106
+ return !props.series?.length || props.series.every(s => !s.data.length);
107
+ }
108
+ if (props.kind === "funnel") return !props.data.length;
109
+ if (props.kind === "hbar") return !props.rows.length;
110
+ if (props.kind === "bar") return props.series ? !props.x?.length || !props.series.some(s => s.data.some(v => v !== null && Number.isFinite(v))) : !props.data?.length;
111
+ if (props.kind === "donut" || props.kind === "pie") {
112
+ return !props.data?.length;
113
+ }
114
+ if (props.kind === "histogram" || props.kind === "sparkline") {
115
+ return !props.data?.length;
116
+ }
117
+ if (props.kind === "boxplot") {
118
+ return !props.groups?.length;
119
+ }
120
+ if (props.kind === "stateTimeline") {
121
+ return !props.rows?.length || props.rows.every(row => !row.intervals.length);
122
+ }
123
+ return false;
124
+ };
125
+ export const renderChartRoot = (props, renderChartSvg) => {
126
+ const drawingProps = () => {
127
+ // Pareto's labels name its two measures; other kinds use labels only for host controls.
128
+ if (props.kind === "pareto") return props;
129
+ const [, drawing] = splitProps(props, ["class", "style", "labels", "interactive", "selected", "onSelect", "tooltip", "cursor"]);
130
+ return drawing;
131
+ };
132
+ const messages = useUiMessages();
133
+ const chartMessages = useChartMessages();
134
+ const viewportMessages = useViewportMessages();
135
+ const locale = useLocale();
136
+ let containerRef;
137
+ let chartTooltipRef;
138
+ let lineAnchorRef;
139
+ // One deterministic coordinate space on the server and client. CSS fits the
140
+ // SVG to its box; hydration must never replace it with measured geometry.
141
+ const calendar = () => props.kind === "heatmap" && props.layout === "calendar" ? calendarLayout({
142
+ ...props,
143
+ locale: props.locale ?? locale()
144
+ }) : undefined;
145
+ const size = () => ({
146
+ width: calendar()?.width ?? 480,
147
+ height: chartRenderHeight(props)
148
+ });
149
+ const topLegend = () => props.kind === "area" ? props.legend !== false : props.kind === "line" && props.legend === true && props.legendPlacement === "top-start";
150
+ const legendSeries = () => props.kind === "line" || props.kind === "area" ? props.series : [];
151
+ const legendValue = index => {
152
+ if (props.kind !== "area") return "";
153
+ const last = props.x.length - 1;
154
+ const amount = props.series[index]?.data[last];
155
+ const values = props.series.map(s => s.data[last]);
156
+ const total = values.reduce((sum, value) => sum + (value ?? 0), 0);
157
+ if (amount == null || values.some(v => v == null) || props.normalize && total === 0) return "—";
158
+ return props.normalize ? new Intl.NumberFormat(locale(), {
159
+ style: "percent",
160
+ minimumFractionDigits: 1,
161
+ maximumFractionDigits: 1
162
+ }).format(amount / total) : props.format?.(amount) ?? new Intl.NumberFormat(locale(), {
163
+ maximumFractionDigits: 2
164
+ }).format(amount);
165
+ };
166
+ const dimensions = () => containerRef?.getBoundingClientRect() ?? size();
167
+ const initialMapViewport = props.kind === "map" ? normalizeMapViewport(props.viewport) : DEFAULT_MAP_VIEWPORT;
168
+ const [mapViewport, setMapViewport] = createSignal(initialMapViewport);
169
+ const initialTimelineViewport = props.kind === "stateTimeline" ? stateTimelineDomain(props.rows, props.domain) : [0, 1];
170
+ const [timelineViewport, setTimelineViewport] = createSignal(initialTimelineViewport);
171
+ const [dragging, setDragging] = createSignal(false);
172
+ const chartTooltipId = `k2b-chart-tooltip-${createUniqueId()}`;
173
+ let timelineViewportLocallyChanged = false;
174
+ let drag;
175
+ let timelineDrag;
176
+ let pointerFrame;
177
+ let pendingPointer;
178
+ const interactiveMap = () => props.kind === "map" && props.interactive === true;
179
+ const interactiveTimeline = () => props.kind === "stateTimeline" && props.interactive === true;
180
+ const draggable = () => interactiveMap() || interactiveTimeline();
181
+ const labels = () => props.kind === "pareto" ? {} : props.labels ?? {};
182
+ const accessibleName = () => {
183
+ const override = props.kind === "map" ? labels().interactiveMap : props.kind === "stateTimeline" ? labels().interactiveTimeline : props.kind === "line" ? labels().interactiveLine : labels().interactiveChart;
184
+ const title = "title" in props && typeof props.title === "string" && props.title.trim() ? props.title : undefined;
185
+ const valueLabel = (props.kind === "stat" || props.kind === "gauge") && props.label?.trim() ? props.label : undefined;
186
+ const fallback = props.kind === "map" ? chartMessages().interactiveMap : props.kind === "stateTimeline" ? chartMessages().interactiveTimeline : props.kind === "line" ? chartMessages().interactiveLineChart : chartMessages().interactiveChart;
187
+ return override ?? title ?? valueLabel ?? fallback;
188
+ };
189
+ const timelineFullDomain = () => props.kind === "stateTimeline" ? stateTimelineDomain(props.rows, props.domain) : [0, 1];
190
+ createEffect(() => {
191
+ if (props.kind === "map") {
192
+ setMapViewport(normalizeMapViewport(props.viewport));
193
+ }
194
+ });
195
+ createEffect(() => {
196
+ if (props.kind === "stateTimeline" && !timelineViewportLocallyChanged) {
197
+ setTimelineViewport(timelineFullDomain());
198
+ }
199
+ });
200
+ const updateTimelineViewport = update => {
201
+ timelineViewportLocallyChanged = true;
202
+ setTimelineViewport(update);
203
+ };
204
+ const mapDimensions = () => {
205
+ const viewportElement = containerRef?.querySelector(".stdlib-chart-map-viewport");
206
+ const matrix = viewportElement?.getScreenCTM?.();
207
+ const box = viewportElement?.viewBox?.baseVal;
208
+ if (matrix && box?.width && box.height) {
209
+ return {
210
+ width: box.width * Math.hypot(matrix.a, matrix.b),
211
+ height: box.height * Math.hypot(matrix.c, matrix.d)
212
+ };
213
+ }
214
+ const rect = viewportElement?.getBoundingClientRect();
215
+ if (rect && rect.width > 0 && rect.height > 0) {
216
+ return {
217
+ width: rect.width,
218
+ height: rect.height
219
+ };
220
+ }
221
+ return dimensions();
222
+ };
223
+ const zoom = delta => {
224
+ closeChartTooltip();
225
+ if (interactiveMap()) {
226
+ setMapViewport(current => zoomMapViewport(current, delta, props.kind === "map" ? props.zoomFocus : undefined));
227
+ } else if (interactiveTimeline()) {
228
+ updateTimelineViewport(current => zoomStateTimelineViewport(current, timelineFullDomain(), delta));
229
+ }
230
+ };
231
+ const reset = () => {
232
+ closeChartTooltip();
233
+ if (interactiveMap() && props.kind === "map") {
234
+ setMapViewport(normalizeMapViewport(props.viewport));
235
+ }
236
+ if (interactiveTimeline()) {
237
+ timelineViewportLocallyChanged = false;
238
+ setTimelineViewport(timelineFullDomain());
239
+ }
240
+ };
241
+ const handlePointerDown = event => {
242
+ inspection.down(event);
243
+ if (!draggable() || event.button !== 0 || event.target.closest("button, a")) {
244
+ return;
245
+ }
246
+ closeChartTooltip();
247
+ // The pointer's own pointerup or pointercancel ends the hold.
248
+ suppressTextSelection(event.pointerId);
249
+ if (interactiveTimeline()) {
250
+ timelineDrag = {
251
+ pointerId: event.pointerId,
252
+ x: event.clientX,
253
+ width: Math.max(1, event.currentTarget.getBoundingClientRect().width),
254
+ viewport: timelineViewport()
255
+ };
256
+ event.currentTarget.setPointerCapture(event.pointerId);
257
+ setDragging(true);
258
+ return;
259
+ }
260
+ const dimensions = mapDimensions();
261
+ drag = {
262
+ pointerId: event.pointerId,
263
+ x: event.clientX,
264
+ y: event.clientY,
265
+ width: dimensions.width,
266
+ height: dimensions.height,
267
+ viewport: mapViewport()
268
+ };
269
+ event.currentTarget.setPointerCapture(event.pointerId);
270
+ setDragging(true);
271
+ };
272
+ const flushPointerMove = () => {
273
+ if (pointerFrame !== undefined) {
274
+ cancelAnimationFrame(pointerFrame);
275
+ pointerFrame = undefined;
276
+ }
277
+ const sample = pendingPointer;
278
+ pendingPointer = undefined;
279
+ if (!sample) return;
280
+ const start = timelineDrag ?? drag;
281
+ if (start && Math.hypot(sample.clientX - start.x, sample.clientY - ("y" in start ? start.y : sample.clientY)) <= 6) return;
282
+ const activeTimelineDrag = timelineDrag;
283
+ if (activeTimelineDrag?.pointerId === sample.pointerId) {
284
+ updateTimelineViewport(() => panStateTimelineViewport(activeTimelineDrag.viewport, timelineFullDomain(), sample.clientX - activeTimelineDrag.x, activeTimelineDrag.width));
285
+ return;
286
+ }
287
+ if (!drag || drag.pointerId !== sample.pointerId) return;
288
+ setMapViewport(panMapViewport(drag.viewport, sample.clientX - drag.x, sample.clientY - drag.y, drag.width, drag.height));
289
+ };
290
+ const handlePointerMove = event => {
291
+ inspection.move(event);
292
+ if (timelineDrag?.pointerId !== event.pointerId && drag?.pointerId !== event.pointerId) return;
293
+ pendingPointer = {
294
+ pointerId: event.pointerId,
295
+ clientX: event.clientX,
296
+ clientY: event.clientY
297
+ };
298
+ if (pointerFrame !== undefined) return;
299
+ pointerFrame = requestAnimationFrame(flushPointerMove);
300
+ };
301
+ const stopDragging = event => {
302
+ inspection.up();
303
+ if (pendingPointer?.pointerId === event.pointerId) flushPointerMove();
304
+ if (timelineDrag?.pointerId === event.pointerId) {
305
+ if (event.currentTarget.hasPointerCapture(event.pointerId)) {
306
+ event.currentTarget.releasePointerCapture(event.pointerId);
307
+ }
308
+ timelineDrag = undefined;
309
+ setDragging(false);
310
+ return;
311
+ }
312
+ if (!drag || drag.pointerId !== event.pointerId) return;
313
+ if (event.currentTarget.hasPointerCapture(event.pointerId)) {
314
+ event.currentTarget.releasePointerCapture(event.pointerId);
315
+ }
316
+ drag = undefined;
317
+ setDragging(false);
318
+ };
319
+ const handleWheel = event => {
320
+ if (interactiveMap() && (event.ctrlKey || event.metaKey)) {
321
+ event.preventDefault();
322
+ zoom(event.deltaY < 0 ? 1 : -1);
323
+ return;
324
+ }
325
+ if (!interactiveTimeline()) return;
326
+ if (event.ctrlKey || event.metaKey) {
327
+ event.preventDefault();
328
+ const rect = event.currentTarget.getBoundingClientRect();
329
+ const anchor = rect.width > 0 ? (event.clientX - rect.left) / rect.width : 0.5;
330
+ updateTimelineViewport(current => zoomStateTimelineViewport(current, timelineFullDomain(), event.deltaY < 0 ? 1 : -1, anchor));
331
+ } else if (event.shiftKey) {
332
+ event.preventDefault();
333
+ updateTimelineViewport(current => panStateTimelineViewport(current, timelineFullDomain(), -event.deltaY, event.currentTarget.getBoundingClientRect().width));
334
+ }
335
+ };
336
+ const handleKeyDown = event => {
337
+ if (inspection.key(event)) return;
338
+ if (!draggable() || event.target !== containerRef) return;
339
+ if (event.key === "+" || event.key === "=") {
340
+ event.preventDefault();
341
+ zoom(1);
342
+ return;
343
+ }
344
+ if (event.key === "-" || event.key === "_") {
345
+ event.preventDefault();
346
+ zoom(-1);
347
+ return;
348
+ }
349
+ if (event.key === "0" || event.key === "Home") {
350
+ event.preventDefault();
351
+ reset();
352
+ return;
353
+ }
354
+ if (interactiveTimeline() && (event.key === "ArrowLeft" || event.key === "ArrowRight")) {
355
+ event.preventDefault();
356
+ updateTimelineViewport(current => panStateTimelineViewport(current, timelineFullDomain(), event.key === "ArrowLeft" ? 80 : -80, event.currentTarget.getBoundingClientRect().width));
357
+ return;
358
+ }
359
+ const delta = {
360
+ ArrowLeft: [40, 0],
361
+ ArrowRight: [-40, 0],
362
+ ArrowUp: [0, 40],
363
+ ArrowDown: [0, -40]
364
+ }[event.key];
365
+ if (!delta) return;
366
+ event.preventDefault();
367
+ const dimensions = mapDimensions();
368
+ setMapViewport(current => panMapViewport(current, delta[0], delta[1], dimensions.width, dimensions.height));
369
+ };
370
+ const inspection = createChartInspection({
371
+ container: () => containerRef,
372
+ locale,
373
+ cursor: () => props.cursor,
374
+ tooltip: () => chartTooltipRef,
375
+ anchor: () => lineAnchorRef,
376
+ kind: () => props.kind,
377
+ nav: () => props.kind === "heatmap" && props.layout === "calendar" ? calendarInspectionNavigation : undefined,
378
+ enabled: () => !isEmpty(props),
379
+ select: selection => props.onSelect?.(selection),
380
+ format: selection => {
381
+ if (props.tooltip) return props.tooltip(selection);
382
+ const fields = props.kind === "bubble" || props.kind === "radar" || props.kind === "treemap" || props.kind === "pareto" || props.kind === "heatmap" && props.layout === "calendar" ? resolveChartMessages(props.locale ?? locale()).chartFields : chartMessages().chartFields;
383
+ if (selection.kind === "area" && props.kind === "area") {
384
+ const amount = selection.datum.values.find(f => f.key === "value");
385
+ const share = selection.datum.values.find(f => f.key === "percent");
386
+ return {
387
+ title: selection.datum.values.find(f => f.key === "x")?.formatted ?? "",
388
+ rows: [{
389
+ label: selection.datum.label ?? chartMessages().series,
390
+ value: `${share ? `${share.formatted} · ` : ""}${amount.formatted}`
391
+ }]
392
+ };
393
+ }
394
+ const format = new Intl.NumberFormat(locale(), {
395
+ maximumFractionDigits: 6
396
+ });
397
+ return {
398
+ title: selection.datum.label ?? (selection.datum.seriesIndex !== undefined ? `${labels().series ?? chartMessages().series} ${selection.datum.seriesIndex + 1}` : undefined),
399
+ rows: selection.datum.values.filter(field => selection.kind !== "waterfall" || field.key !== "before").map(field => ({
400
+ label: props.kind === "bubble" && field.key === "x" ? props.xLabel : props.kind === "bubble" && field.key === "y" ? props.yLabel : props.kind === "bubble" && field.key === "size" ? props.sizeLabel ?? fields({
401
+ key: "size"
402
+ }) : props.kind === "radar" && field.key.startsWith("series:") ? props.series[Number(field.key.slice(7))]?.label ?? fields({
403
+ key: "series"
404
+ }) : props.kind === "pareto" && (field.key === "value" || field.key === "previous") ? props.labels[field.key === "value" ? 0 : 1] : props.kind === "heatmap" && props.layout === "calendar" && field.key === "value" && props.label ? props.label : selection.kind === "line" && field.key === "y" ? selection.datum.label ?? labels().series ?? chartMessages().series : (props.kind === "bar" || props.kind === "hbar") && field.key.startsWith("series:") ? (props.kind === "hbar" ? props.series[Number(field.key.slice(7))] : props.series?.[Number(field.key.slice(7))]?.label) ?? fields({
405
+ key: field.key
406
+ }) : props.kind === "bar" && field.key === "previous" ? props.compare?.label ?? fields({
407
+ key: field.key
408
+ }) : fields({
409
+ key: field.key
410
+ }),
411
+ value: field.formatted ?? (field.key === "upperInclusive" ? field.value === "true" ? messages().yes : messages().no : typeof field.value === "number" ? `${format.format(field.value)}${field.key === "percent" ? "%" : ""}` : field.value)
412
+ }))
413
+ };
414
+ }
415
+ });
416
+ const closeChartTooltip = () => inspection.close();
417
+ const svgMarkup = createMemo(() => renderChartSvg(props.kind === "bubble" || props.kind === "radar" || props.kind === "treemap" || props.kind === "pareto" || props.kind === "heatmap" && props.layout === "calendar" ? {
418
+ ...props,
419
+ locale: props.locale ?? locale()
420
+ } : {
421
+ ...drawingProps(),
422
+ ...(props.kind === "bar" || props.kind === "hbar" || props.kind === "funnel" ? {
423
+ locale: locale()
424
+ } : {})
425
+ }, size().width, size().height, interactiveMap() ? mapViewport() : undefined, interactiveTimeline() ? timelineViewport() : undefined, locale()));
426
+ createEffect(() => {
427
+ svgMarkup();
428
+ inspection.invalidate();
429
+ untrack(() => inspection.selectDatum(props.selected));
430
+ });
431
+ createEffect(() => inspection.selectDatum(props.selected));
432
+ onCleanup(() => {
433
+ inspection.close();
434
+ if (pointerFrame !== undefined) cancelAnimationFrame(pointerFrame);
435
+ pointerFrame = undefined;
436
+ pendingPointer = undefined;
437
+ });
438
+ onMount(() => {
439
+ if (!containerRef) return;
440
+ if (props.kind === "heatmap" && props.layout === "calendar") onCleanup(mountCalendarScroll(containerRef));
441
+ onCleanup(closeChartInspectionOnOutside({
442
+ container: () => containerRef,
443
+ tooltip: () => chartTooltipRef,
444
+ scroll: inspection.scroll,
445
+ close: closeChartTooltip,
446
+ keepScroll: () => props.kind === "heatmap" && props.layout === "calendar"
447
+ }));
448
+ });
449
+ const chartStyle = () => props.style ?? (props.kind === "stateTimeline" ? {
450
+ height: `${stateTimelineHeight(props.rows.length, props.legend !== false)}px`
451
+ } : undefined);
452
+ const control = (label, shortcut, icon, action) => _$createComponent(IconButton, {
453
+ variant: "secondary",
454
+ label: label,
455
+ tooltip: `${label} (${shortcut})`,
456
+ onClick: action,
457
+ get children() {
458
+ var _el$ = _$getNextElement(_tmpl$);
459
+ _$className(_el$, `ti ${icon}`);
460
+ return _el$;
461
+ }
462
+ });
463
+ return _$createComponent(Show, {
464
+ get when() {
465
+ return !isEmpty(props);
466
+ },
467
+ get fallback() {
468
+ return (() => {
469
+ var _el$16 = _$getNextElement(_tmpl$5);
470
+ var _ref$4 = containerRef;
471
+ typeof _ref$4 === "function" ? _$use(_ref$4, _el$16) : containerRef = _el$16;
472
+ _$insert(_el$16, () => labels().empty ?? messages().noData);
473
+ _$effect(_p$ => {
474
+ var _v$13 = `k2b-chart k2b-chart__empty ${props.class ?? ""}`,
475
+ _v$14 = chartStyle();
476
+ _v$13 !== _p$.e && _$className(_el$16, _p$.e = _v$13);
477
+ _p$.t = _$style(_el$16, _v$14, _p$.t);
478
+ return _p$;
479
+ }, {
480
+ e: undefined,
481
+ t: undefined
482
+ });
483
+ return _el$16;
484
+ })();
485
+ },
486
+ get children() {
487
+ var _el$2 = _$getNextElement(_tmpl$4),
488
+ _el$12 = _el$2.firstChild,
489
+ [_el$13, _co$4] = _$getNextMarker(_el$12.nextSibling),
490
+ _el$4 = _el$13.nextSibling,
491
+ _el$5 = _el$4.nextSibling,
492
+ _el$6 = _el$5.nextSibling,
493
+ _el$14 = _el$6.nextSibling,
494
+ [_el$15, _co$5] = _$getNextMarker(_el$14.nextSibling);
495
+ _el$2.$$keydown = handleKeyDown;
496
+ _el$2.addEventListener("wheel", handleWheel);
497
+ _el$2.$$focusout = closeChartTooltip;
498
+ _$addEventListener(_el$2, "focusin", inspection.focus, true);
499
+ _$addEventListener(_el$2, "pointerleave", inspection.leave);
500
+ _$addEventListener(_el$2, "click", inspection.click, true);
501
+ _el$2.addEventListener("pointercancel", stopDragging);
502
+ _el$2.$$pointerup = stopDragging;
503
+ _el$2.$$pointermove = handlePointerMove;
504
+ _el$2.$$pointerdown = handlePointerDown;
505
+ var _ref$ = containerRef;
506
+ typeof _ref$ === "function" ? _$use(_ref$, _el$2) : containerRef = _el$2;
507
+ _$insert(_el$2, _$createComponent(Show, {
508
+ get when() {
509
+ return topLegend();
510
+ },
511
+ get children() {
512
+ var _el$3 = _$getNextElement(_tmpl$2);
513
+ _$insert(_el$3, _$createComponent(For, {
514
+ get each() {
515
+ return legendSeries();
516
+ },
517
+ children: (series, index) => (() => {
518
+ var _el$17 = _$getNextElement(_tmpl$7),
519
+ _el$18 = _el$17.firstChild,
520
+ _el$19 = _el$18.firstChild,
521
+ _el$20 = _el$18.nextSibling,
522
+ _el$22 = _el$20.nextSibling,
523
+ [_el$23, _co$6] = _$getNextMarker(_el$22.nextSibling);
524
+ _$insert(_el$20, (() => {
525
+ var _c$ = _$memo(() => !!(series.label && series.label.length > 0));
526
+ return () => _c$() ? series.label : `${chartMessages().series} ${index() + 1}`;
527
+ })());
528
+ _$insert(_el$17, _$createComponent(Show, {
529
+ get when() {
530
+ return props.kind === "area";
531
+ },
532
+ get children() {
533
+ var _el$21 = _$getNextElement(_tmpl$6);
534
+ _$insert(_el$21, () => legendValue(index()));
535
+ _$effect(_p$ => {
536
+ var _v$15 = index(),
537
+ _v$16 = props.kind === "area" && props.normalize ? "percent" : "value",
538
+ _v$17 = legendValue(index());
539
+ _v$15 !== _p$.e && _$setAttribute(_el$21, "data-series-index", _p$.e = _v$15);
540
+ _v$16 !== _p$.t && _$setAttribute(_el$21, "data-field", _p$.t = _v$16);
541
+ _v$17 !== _p$.a && _$setAttribute(_el$21, "data-default", _p$.a = _v$17);
542
+ return _p$;
543
+ }, {
544
+ e: undefined,
545
+ t: undefined,
546
+ a: undefined
547
+ });
548
+ return _el$21;
549
+ }
550
+ }), _el$23, _co$6);
551
+ _$effect(_p$ => {
552
+ var _v$18 = `stdlib-chart k2b-chart__legend-swatch ${props.kind === "line" ? props.className ?? "" : ""}`,
553
+ _v$19 = `stdlib-chart-series-${index() % 8}`,
554
+ _v$20 = `var(--stdlib-chart-c${index() % 8 + 1}, ${["#2563eb", "#16a34a", "#d97706", "#dc2626", "#a855f7", "#0891b2", "#db2777", "#65a30d"][index() % 8]})`;
555
+ _v$18 !== _p$.e && _$setAttribute(_el$18, "class", _p$.e = _v$18);
556
+ _v$19 !== _p$.t && _$setAttribute(_el$19, "class", _p$.t = _v$19);
557
+ _v$20 !== _p$.a && _$setAttribute(_el$19, "fill", _p$.a = _v$20);
558
+ return _p$;
559
+ }, {
560
+ e: undefined,
561
+ t: undefined,
562
+ a: undefined
563
+ });
564
+ return _el$17;
565
+ })()
566
+ }));
567
+ _$effect(() => _$setAttribute(_el$3, "aria-label", chartMessages().chartLegend));
568
+ return _el$3;
569
+ }
570
+ }), _el$13, _co$4);
571
+ var _ref$2 = lineAnchorRef;
572
+ typeof _ref$2 === "function" ? _$use(_ref$2, _el$5) : lineAnchorRef = _el$5;
573
+ var _ref$3 = chartTooltipRef;
574
+ typeof _ref$3 === "function" ? _$use(_ref$3, _el$6) : chartTooltipRef = _el$6;
575
+ _$setAttribute(_el$6, "id", chartTooltipId);
576
+ _$insert(_el$2, _$createComponent(Show, {
577
+ get when() {
578
+ return draggable();
579
+ },
580
+ get children() {
581
+ var _el$7 = _$getNextElement(_tmpl$3),
582
+ _el$8 = _el$7.firstChild,
583
+ [_el$9, _co$] = _$getNextMarker(_el$8.nextSibling),
584
+ _el$0 = _el$9.nextSibling,
585
+ [_el$1, _co$2] = _$getNextMarker(_el$0.nextSibling),
586
+ _el$10 = _el$1.nextSibling,
587
+ [_el$11, _co$3] = _$getNextMarker(_el$10.nextSibling);
588
+ _$insert(_el$7, () => control(labels().zoomIn ?? viewportMessages().zoomIn, "+", "ti-plus", () => zoom(1)), _el$9, _co$);
589
+ _$insert(_el$7, () => control(labels().zoomOut ?? viewportMessages().zoomOut, "-", "ti-minus", () => zoom(-1)), _el$1, _co$2);
590
+ _$insert(_el$7, () => control(interactiveMap() ? labels().resetMap ?? chartMessages().resetMapView : labels().resetTimeline ?? chartMessages().resetTimelineView, "0", "ti-focus-centered", reset), _el$11, _co$3);
591
+ return _el$7;
592
+ }
593
+ }), _el$15, _co$5);
594
+ _$effect(_p$ => {
595
+ var _v$ = `k2b-chart ${props.class ?? ""}`,
596
+ _v$2 = props.kind,
597
+ _v$3 = topLegend() ? "top-start" : undefined,
598
+ _v$4 = draggable() ? dragging() ? "active" : "idle" : undefined,
599
+ _v$5 = !draggable() && props.kind === "line" ? "true" : undefined,
600
+ _v$6 = chartStyle(),
601
+ _v$7 = accessibleName(),
602
+ _v$8 = accessibleName() !== chartMessages().interactiveChart ? chartMessages().interactiveChart : undefined,
603
+ _v$9 = !calendar() && !preservesAspectRatio(props.kind) ? "true" : undefined,
604
+ _v$0 = calendar() ? `${calendar().minWidth}px` : undefined,
605
+ _v$1 = `${size().width}px`,
606
+ _v$10 = `${size().height}px`,
607
+ _v$11 = `${size().width} / ${size().height}`,
608
+ _v$12 = isServer ? selectedChartSvg(svgMarkup(), props.selected) : svgMarkup();
609
+ _v$ !== _p$.e && _$className(_el$2, _p$.e = _v$);
610
+ _v$2 !== _p$.t && _$setAttribute(_el$2, "data-chart-kind", _p$.t = _v$2);
611
+ _v$3 !== _p$.a && _$setAttribute(_el$2, "data-legend-placement", _p$.a = _v$3);
612
+ _v$4 !== _p$.o && _$setAttribute(_el$2, "data-drag", _p$.o = _v$4);
613
+ _v$5 !== _p$.i && _$setAttribute(_el$2, "data-crosshair", _p$.i = _v$5);
614
+ _p$.n = _$style(_el$2, _v$6, _p$.n);
615
+ _v$7 !== _p$.s && _$setAttribute(_el$2, "aria-label", _p$.s = _v$7);
616
+ _v$8 !== _p$.h && _$setAttribute(_el$2, "aria-description", _p$.h = _v$8);
617
+ _v$9 !== _p$.r && _$setAttribute(_el$4, "data-stretch", _p$.r = _v$9);
618
+ _v$0 !== _p$.d && _$setStyleProperty(_el$4, "min-width", _p$.d = _v$0);
619
+ _v$1 !== _p$.l && _$setStyleProperty(_el$4, "--k2b-chart-width", _p$.l = _v$1);
620
+ _v$10 !== _p$.u && _$setStyleProperty(_el$4, "--k2b-chart-height", _p$.u = _v$10);
621
+ _v$11 !== _p$.c && _$setStyleProperty(_el$4, "aspect-ratio", _p$.c = _v$11);
622
+ _v$12 !== _p$.w && _$setProperty(_el$4, "innerHTML", _p$.w = _v$12);
623
+ return _p$;
624
+ }, {
625
+ e: undefined,
626
+ t: undefined,
627
+ a: undefined,
628
+ o: undefined,
629
+ i: undefined,
630
+ n: undefined,
631
+ s: undefined,
632
+ h: undefined,
633
+ r: undefined,
634
+ d: undefined,
635
+ l: undefined,
636
+ u: undefined,
637
+ c: undefined,
638
+ w: undefined
639
+ });
640
+ _$runHydrationEvents();
641
+ return _el$2;
642
+ }
643
+ });
644
+ };
645
+ _$delegateEvents(["pointerdown", "pointermove", "pointerup", "click", "focusin", "focusout", "keydown"]);
646
+ //# sourceMappingURL=ChartRoot.js.map