@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,638 @@
1
+ import { ssr as _$ssr } from "solid-js/web";
2
+ import { memo as _$memo } from "solid-js/web";
3
+ import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
4
+ import { escape as _$escape } from "solid-js/web";
5
+ import { createComponent as _$createComponent } from "solid-js/web";
6
+ var _tmpl$ = ["<p class=\"k2b-dropdown__empty\">", "</p>"],
7
+ _tmpl$2 = ["<p class=\"k2b-command-list__state\"><i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\"></i><span>", "</span></p>"],
8
+ _tmpl$3 = ["<div", " role=\"listbox\"", " class=\"k2b-command-list\">", "", "", "", "</div>"],
9
+ _tmpl$4 = ["<span class=\"k2b-sr-only\" role=\"status\">", "</span>"],
10
+ _tmpl$5 = ["<span class=\"k2b-sr-only\" role=\"alert\">", "</span>"],
11
+ _tmpl$6 = ["<span class=\"k2b-command-list__step-hint\">", "</span>"],
12
+ _tmpl$7 = ["<div class=\"k2b-command-list__step\"><button type=\"button\" class=\"k2b-command-list__back\" tabindex=\"-1\"", "><i class=\"ti ti-chevron-left\" aria-hidden=\"true\"></i><span>", "</span></button>", "</div>"],
13
+ _tmpl$8 = ["<div", " class=\"k2b-dropdown__label\">", "</div>"],
14
+ _tmpl$9 = ["<div class=\"k2b-dropdown__section\" role=\"group\"", ">", "", "</div>"],
15
+ _tmpl$0 = "<i class=\"ti ti-chevron-right k2b-command-list__next\" aria-hidden=\"true\"></i>",
16
+ _tmpl$1 = ["<div", " role=\"option\" class=\"k2b-dropdown__item\"", ">", "<span class=\"k2b-dropdown__copy k2b-command-list__text\"><span>", "</span>", "</span>", "", "</div>"],
17
+ _tmpl$10 = "<i class=\"ti ti-loader-2 k2b-spin k2b-command-list__busy\" aria-hidden=\"true\"></i>",
18
+ _tmpl$11 = ["<span class=\"k2b-command-list__leading\" aria-hidden=\"true\">", "</span>"],
19
+ _tmpl$12 = ["<small class=\"k2b-command-list__description\">", "</small>"],
20
+ _tmpl$13 = ["<span class=\"k2b-command-list__hint\" aria-hidden=\"true\">", "</span>"],
21
+ _tmpl$14 = ["<p class=\"k2b-command-list__state\" data-error><i class=\"ti ti-alert-circle\" aria-hidden=\"true\"></i><span>", "</span><button type=\"button\" tabindex=\"-1\">", "</button></p>"],
22
+ _tmpl$15 = ["<button type=\"button\" class=\"k2b-command-outcome__close\"", "><i class=\"ti ti-x\" aria-hidden=\"true\"></i></button>"],
23
+ _tmpl$16 = ["<div class=\"k2b-command-outcome\"", " tabindex=\"-1\"><i aria-hidden=\"true\"", "></i><span class=\"k2b-command-outcome__text\"", " aria-hidden=\"true\">", "</span>", "", "</div>"],
24
+ _tmpl$17 = ["<button type=\"button\">", "</button>"],
25
+ _tmpl$18 = ["<i", " aria-hidden=\"true\"></i>"],
26
+ _tmpl$19 = ["<span class=\"k2b-command-list__image\" aria-hidden=\"true\">", "</span>"],
27
+ _tmpl$20 = ["<img", " alt width=\"16\" height=\"16\" decoding=\"async\">"],
28
+ _tmpl$21 = ["<img class=\"k2b-command-list__image-light\"", " alt width=\"16\" height=\"16\" decoding=\"async\">"],
29
+ _tmpl$22 = ["<img class=\"k2b-command-list__image-dark\"", " alt width=\"16\" height=\"16\" decoding=\"async\">"];
30
+ import { createEffect, createMemo, createSignal, For, onCleanup, Show, untrack } from "solid-js";
31
+ import { useUiMessages } from "../intl/messages";
32
+ import { commandKey, filterCommandItems, groupCommandItems } from "./command-items";
33
+ import { useCommandMessages } from "./command-messages";
34
+
35
+ /** The state of one open command list: its steps, the shown entries, and the marked one. */
36
+
37
+ /** The context without what the list adds itself: the query, the path, the signal, and the reports. */
38
+
39
+ /** A list whose entries come from a promise: pending, or failed with the message of its rejection. */
40
+
41
+ /** A command that returned a promise, busy while it runs. */
42
+
43
+ /**
44
+ * What a finished command reported, shown in the list's place: a confirmation, an error (with a way to try again when
45
+ * the command threw or rejected), or the command running again after a retry.
46
+ */
47
+
48
+ /** A confirmation or an error stays at least this long, even when the person types on at once. */
49
+ export const COMMAND_OUTCOME_MIN_MS = 1200;
50
+ /** A confirmation goes by itself after this long; an error stays until the person types, retries, or presses Escape. */
51
+ export const COMMAND_OUTCOME_SUCCESS_MS = 4000;
52
+ const ignoreReport = () => {};
53
+
54
+ /**
55
+ * Keeps the steps, the marked entry, and the running command of a command list. The host owns the query and the
56
+ * effects: `onText` places an entry's text; for an entry with `onSelect`, `beforeRun` lets the host remove its query,
57
+ * `context` describes the text the command acts on, and `afterRun` closes the list once the command finished.
58
+ * `onStep` runs after a further list opened or closed, with the new depth, so the host clears its query.
59
+ */
60
+ export const createCommandNavigator = options => {
61
+ const [status, setStatus] = createSignal();
62
+ const [outcome, setOutcome] = createSignal();
63
+ let shownAt = 0;
64
+ let outcomeTimer;
65
+ const clearOutcome = () => {
66
+ clearTimeout(outcomeTimer);
67
+ outcomeTimer = undefined;
68
+ setOutcome(undefined);
69
+ };
70
+ const showOutcome = next => {
71
+ clearTimeout(outcomeTimer);
72
+ outcomeTimer = undefined;
73
+ setOutcome(next);
74
+ shownAt = Date.now();
75
+ if (next.state === "success") outcomeTimer = setTimeout(clearOutcome, COMMAND_OUTCOME_SUCCESS_MS);
76
+ };
77
+ let running;
78
+ // A list that goes away forgets its run, as `reset` does: a late result reports nothing and starts no timer.
79
+ onCleanup(() => {
80
+ clearTimeout(outcomeTimer);
81
+ running = undefined;
82
+ });
83
+ const run = (item, path, again = false) => {
84
+ const controller = new AbortController();
85
+ running = controller;
86
+ const key = commandKey(item);
87
+ setStatus(undefined);
88
+ if (!again) options.beforeRun?.();
89
+ // What the command reported before it finished; a stopped command's report never shows.
90
+ let report;
91
+ const reporting = () => running === controller && !controller.signal.aborted;
92
+ const settle = failure => {
93
+ if (!reporting()) return;
94
+ running = undefined;
95
+ setStatus(undefined);
96
+ const next = failure ? {
97
+ state: "error",
98
+ message: failure.error instanceof Error && failure.error.message ? failure.error.message : undefined,
99
+ retry: () => runAgain(item, path)
100
+ } : report;
101
+ // The outcome takes its place before the host closes the list, so the container and its live regions stay and
102
+ // their text changes, which is what a screen reader announces.
103
+ if (next) showOutcome(next);else clearOutcome();
104
+ options.afterRun(next !== undefined);
105
+ };
106
+ let result;
107
+ try {
108
+ const base = options.context();
109
+ result = item.onSelect?.({
110
+ ...base,
111
+ // A command the person stopped writes nothing more.
112
+ insert: text => {
113
+ if (!controller.signal.aborted) base.insert(text);
114
+ },
115
+ success: message => {
116
+ report = {
117
+ state: "success",
118
+ message
119
+ };
120
+ },
121
+ error: message => {
122
+ report = {
123
+ state: "error",
124
+ message
125
+ };
126
+ },
127
+ query: options.query(),
128
+ path,
129
+ signal: controller.signal
130
+ });
131
+ } catch (error) {
132
+ settle({
133
+ error
134
+ });
135
+ return;
136
+ }
137
+ if (!(result instanceof Promise)) return settle();
138
+ // A first run shows on its row; a retry runs where its error was.
139
+ if (again) showOutcome({
140
+ state: "running",
141
+ message: item.label
142
+ });else setStatus({
143
+ key,
144
+ label: item.label,
145
+ state: "running"
146
+ });
147
+ result.then(() => settle(), error => settle({
148
+ error
149
+ }));
150
+ };
151
+ // The error stays until the retry's own state replaces it, so a host never sees the outcome go in between.
152
+ const runAgain = (item, path) => run(item, path, true);
153
+ const [steps, setSteps] = createSignal([]);
154
+ const step = () => steps().at(-1);
155
+ // A source that returns a promise: each request has a token, and only the latest one's result reaches the list. A new
156
+ // request aborts the previous one's signal, so stale results are discarded where they are made.
157
+ const [retries, setRetries] = createSignal(0);
158
+ const [settled, setSettled] = createSignal();
159
+ let pending;
160
+ // Where the list is, compared by value: only a new place, query, or path asks a source again, not every selection event.
161
+ const place = createMemo(() => options.context(), undefined, {
162
+ equals: (a, b) => a.text === b.text && a.before === b.before && a.atStart === b.atStart && a.lineStart === b.lineStart && a.selection.start === b.selection.start && a.selection.end === b.selection.end
163
+ });
164
+ const request = createMemo(() => {
165
+ retries();
166
+ pending?.abort();
167
+ pending = undefined;
168
+ if (!options.active()) return {
169
+ items: []
170
+ };
171
+ const source = step()?.next?.items ?? options.items();
172
+ if (typeof source !== "function") return {
173
+ items: filterCommandItems(source, options.query())
174
+ };
175
+ const controller = new AbortController();
176
+ const context = {
177
+ ...place(),
178
+ query: options.query(),
179
+ path: steps(),
180
+ signal: controller.signal,
181
+ success: ignoreReport,
182
+ error: ignoreReport
183
+ };
184
+ let result;
185
+ try {
186
+ result = untrack(() => source(context));
187
+ } catch (error) {
188
+ return {
189
+ error
190
+ };
191
+ }
192
+ if (!(result instanceof Promise)) return {
193
+ items: filterCommandItems(result, context.query)
194
+ };
195
+ pending = controller;
196
+ const token = {};
197
+ result.then(items => {
198
+ if (pending === controller) setSettled({
199
+ token,
200
+ items: filterCommandItems(items, context.query)
201
+ });
202
+ }, error => {
203
+ if (pending === controller && !controller.signal.aborted) setSettled({
204
+ token,
205
+ error
206
+ });
207
+ });
208
+ return {
209
+ token
210
+ };
211
+ });
212
+ /** Pending, failed, or ready; while a new query loads, the step's previous entries stay in place. */
213
+ const load = createMemo(() => {
214
+ const current = request();
215
+ const result = current.token ? settled()?.token === current.token ? settled() : undefined : current;
216
+ if (!result) return {
217
+ state: "loading"
218
+ };
219
+ if (result.error !== undefined) {
220
+ const message = result.error instanceof Error && result.error.message ? result.error.message : undefined;
221
+ return {
222
+ state: "failed",
223
+ message
224
+ };
225
+ }
226
+ return {
227
+ state: "ready"
228
+ };
229
+ });
230
+ // Only entries of the same step stay while a query loads: a further list never shows the list it came from.
231
+ const shown = createMemo(previous => {
232
+ const current = request();
233
+ const at = step();
234
+ if (!current.token) return {
235
+ step: at,
236
+ items: current.items ?? []
237
+ };
238
+ const result = settled();
239
+ if (result?.token === current.token) return {
240
+ step: at,
241
+ items: result.items ?? []
242
+ };
243
+ return {
244
+ step: at,
245
+ items: previous.step === at ? previous.items : []
246
+ };
247
+ }, {
248
+ step: undefined,
249
+ items: []
250
+ });
251
+ const entries = () => shown().items;
252
+ const groups = createMemo(() => groupCommandItems(entries()));
253
+ const ordered = createMemo(() => groups().flatMap(group => group.entries.map(entry => entry.item)));
254
+ // The marked entry is remembered for the query and step it was marked in; a new query marks the first entry again.
255
+ const [wanted, setWanted] = createSignal();
256
+ const active = createMemo(() => {
257
+ const list = ordered();
258
+ const mark = wanted();
259
+ if (mark && mark.query === options.query() && mark.step === step()) {
260
+ const index = list.findIndex(item => commandKey(item) === mark.key);
261
+ if (index >= 0) return index;
262
+ }
263
+ const enabled = list.findIndex(item => !item.disabled);
264
+ return enabled >= 0 ? enabled : 0;
265
+ });
266
+ const setActive = index => {
267
+ const list = ordered();
268
+ const item = list[(index + list.length) % Math.max(1, list.length)];
269
+ if (item && !item.disabled) setWanted({
270
+ key: commandKey(item),
271
+ query: options.query(),
272
+ step: step()
273
+ });
274
+ };
275
+ /** The next entry that can be chosen from `from` in `direction`, wrapping; unavailable entries are passed over. */
276
+ const nextEnabled = (from, direction) => {
277
+ const list = ordered();
278
+ for (let step = 1; step <= list.length; step++) {
279
+ const index = ((from + direction * step) % list.length + list.length) % list.length;
280
+ if (!list[index]?.disabled) return index;
281
+ }
282
+ return from;
283
+ };
284
+ /** Chooses the marked entry or the one at `index`. An unavailable entry, or any while a command runs, does nothing. */
285
+ const choose = (index = active()) => {
286
+ const item = ordered()[index];
287
+ if (!item || item.disabled || status()?.state === "running") return;
288
+ if (item.next) changeStep([...steps(), item]);else if (item.text !== undefined) options.onText(item);else run(item, steps());
289
+ };
290
+ const changeStep = next => {
291
+ setSteps(next);
292
+ setWanted(undefined);
293
+ options.onStep?.(next.length);
294
+ };
295
+ // Enter while entries load waits for that query's entries and takes the first that can be chosen; a new query or no
296
+ // match chooses nothing.
297
+ const [awaiting, setAwaiting] = createSignal();
298
+ createEffect(() => {
299
+ const query = awaiting();
300
+ if (query === undefined) return;
301
+ if (query !== options.query()) return setAwaiting(undefined);
302
+ const state = load().state;
303
+ if (state === "loading") return;
304
+ setAwaiting(undefined);
305
+ if (state !== "ready") return;
306
+ const index = ordered().findIndex(item => !item.disabled);
307
+ if (index >= 0) untrack(() => choose(index));
308
+ });
309
+ return {
310
+ query: options.query,
311
+ step,
312
+ groups,
313
+ entries: ordered,
314
+ active,
315
+ setActive,
316
+ /** Marks the next or previous entry, wrapping; unavailable entries are passed over, as in a searchable menu. */
317
+ move: delta => setActive(nextEnabled(active(), delta)),
318
+ edge: which => setActive(which === "first" ? nextEnabled(-1, 1) : nextEnabled(ordered().length, -1)),
319
+ status,
320
+ load,
321
+ /** Asks a source whose promise failed again. */
322
+ retry: () => setRetries(value => value + 1),
323
+ /** Whether a command's promise is pending; the list then waits for it. */
324
+ busy: () => status()?.state === "running",
325
+ choose: index => choose(index),
326
+ /** Enter while entries load: chooses the first entry of this query once it arrives. */
327
+ chooseWhenLoaded: () => setAwaiting(options.query()),
328
+ /** Whether a choice waits for entries on their way. */
329
+ awaitingChoice: () => awaiting() !== undefined,
330
+ /** Stops a running command: its signal aborts, and its result no longer reaches the list. */
331
+ abort: () => {
332
+ running?.abort();
333
+ running = undefined;
334
+ setStatus(undefined);
335
+ if (outcome()?.state === "running") clearOutcome();
336
+ },
337
+ /** What the last command reported, shown in the list's place until it clears. */
338
+ outcome,
339
+ /** The person typed on: the outcome clears, but not before it showed for `COMMAND_OUTCOME_MIN_MS`. */
340
+ typedOn: () => {
341
+ const current = outcome();
342
+ if (!current || current.state === "running") return;
343
+ const left = COMMAND_OUTCOME_MIN_MS - (Date.now() - shownAt);
344
+ if (left <= 0) return clearOutcome();
345
+ clearTimeout(outcomeTimer);
346
+ outcomeTimer = setTimeout(clearOutcome, left);
347
+ },
348
+ /** Clears the outcome at once, for Escape or a new list; a retry still running is stopped. */
349
+ clearOutcome: () => {
350
+ if (outcome()?.state === "running") {
351
+ running?.abort();
352
+ running = undefined;
353
+ }
354
+ clearOutcome();
355
+ },
356
+ /** Leaves the second list; `false` when the first list shows. */
357
+ back: () => {
358
+ if (steps().length === 0) return false;
359
+ changeStep(steps().slice(0, -1));
360
+ return true;
361
+ },
362
+ /**
363
+ * Forgets steps, mark, and status. A running command goes on, but its result no longer reaches the list, so a
364
+ * retry's running line goes too; a reported outcome stays until it clears.
365
+ */
366
+ reset: () => {
367
+ if (outcome()?.state === "running") clearOutcome();
368
+ running = undefined;
369
+ pending?.abort();
370
+ pending = undefined;
371
+ setSteps([]);
372
+ setWanted(undefined);
373
+ setStatus(undefined);
374
+ }
375
+ };
376
+ };
377
+ export const commandOptionId = (listId, index) => `${listId}-${index}`;
378
+
379
+ /**
380
+ * The rows of a command list as a list box, with the menu's own rows and headings. The focus stays in the host's
381
+ * field, which points at the marked row as its active descendant; the rows only answer the pointer.
382
+ */
383
+ export function CommandList(props) {
384
+ const messages = useUiMessages();
385
+ const commandMessages = useCommandMessages();
386
+ const nav = props.navigator;
387
+ const matches = () => nav.entries().filter(item => !item.disabled).length;
388
+ // The focus stays in the field, so the marked row scrolls into view itself.
389
+ createEffect(() => {
390
+ if (nav.entries().length === 0) return;
391
+ document.getElementById(commandOptionId(props.id, nav.active()))?.scrollIntoView?.({
392
+ block: "nearest"
393
+ });
394
+ });
395
+ const statusOf = item => {
396
+ const current = nav.status();
397
+ return current?.key === commandKey(item) ? current : undefined;
398
+ };
399
+ const runningLabel = () => {
400
+ const current = nav.status();
401
+ return current?.state === "running" ? commandMessages().running({
402
+ label: current.label
403
+ }) : "";
404
+ };
405
+ const loadFailure = () => {
406
+ const current = nav.load();
407
+ return current.state === "failed" ? current.message ?? commandMessages().loadFailed : "";
408
+ };
409
+ /** The outcome as one line of text: the report, or for an error without one, that it did not work. */
410
+ const outcomeText = outcome => outcome.state === "running" ? commandMessages().running({
411
+ label: outcome.message
412
+ }) : outcome.message ?? (outcome.state === "error" ? commandMessages().failed : commandMessages().done);
413
+ const outcomeError = () => {
414
+ const current = nav.outcome();
415
+ return current?.state === "error" ? outcomeText(current) : "";
416
+ };
417
+ const status = () => {
418
+ const current = nav.outcome();
419
+ if (current) return current.state === "error" ? "" : outcomeText(current);
420
+ if (runningLabel()) return runningLabel();
421
+ const step = nav.step()?.next;
422
+ const count = props.query().trim() || step ? messages().searchMatches({
423
+ count: matches()
424
+ }) : "";
425
+ return step && count ? `${step.label}, ${count}` : count;
426
+ };
427
+ return [_$createComponent(Show, {
428
+ get when() {
429
+ return !nav.outcome();
430
+ },
431
+ get fallback() {
432
+ return _$createComponent(CommandOutcomeLine, {
433
+ navigator: nav,
434
+ text: outcomeText,
435
+ get onAction() {
436
+ return props.onOutcomeAction;
437
+ }
438
+ });
439
+ },
440
+ get children() {
441
+ return [_$createComponent(Show, {
442
+ get when() {
443
+ return nav.step();
444
+ },
445
+ children: item => _$ssr(_tmpl$7, _$ssrAttribute("aria-label", _$escape(commandMessages().back({
446
+ label: item().label
447
+ }), true), false), _$escape(item().label), _$escape(_$createComponent(Show, {
448
+ get when() {
449
+ return props.stepHint;
450
+ },
451
+ get children() {
452
+ return _$ssr(_tmpl$6, _$escape(item().next?.label));
453
+ }
454
+ })))
455
+ }), props.header, _$ssr(_tmpl$3, _$ssrAttribute("id", _$escape(props.id, true), false), _$ssrAttribute("aria-label", _$escape(nav.step()?.next?.label ?? props.label, true), false) + _$ssrAttribute("aria-busy", nav.load().state === "loading" ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(For, {
456
+ get each() {
457
+ return nav.groups();
458
+ },
459
+ children: group => {
460
+ const headingId = `${props.id}-group-${group.entries[0]?.index ?? 0}`;
461
+ return _$ssr(_tmpl$9, _$ssrAttribute("aria-labelledby", group.label ? _$escape(headingId, true) : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
462
+ get when() {
463
+ return group.label;
464
+ },
465
+ get children() {
466
+ return _$ssr(_tmpl$8, _$ssrAttribute("id", _$escape(headingId, true), false), _$escape(group.label));
467
+ }
468
+ })), _$escape(_$createComponent(For, {
469
+ get each() {
470
+ return group.entries;
471
+ },
472
+ children: entry => // biome-ignore lint/a11y/useKeyWithClickEvents: the host's field handles the keys through aria-activedescendant.
473
+ _$ssr(_tmpl$1, _$ssrAttribute("id", _$escape(commandOptionId(props.id, entry.index), true), false), _$ssrAttribute("aria-selected", _$escape(entry.index, true) === _$escape(nav.active(), true), false) + _$ssrAttribute("aria-disabled", entry.item.disabled ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("aria-busy", statusOf(entry.item)?.state === "running" ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-active", entry.index === nav.active() && !entry.item.disabled ? "" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
474
+ get when() {
475
+ return statusOf(entry.item)?.state !== "running";
476
+ },
477
+ get fallback() {
478
+ return _$ssr(_tmpl$10);
479
+ },
480
+ get children() {
481
+ return _$createComponent(Show, {
482
+ get when() {
483
+ return entry.item.leading;
484
+ },
485
+ get fallback() {
486
+ return _$createComponent(CommandVisual, {
487
+ get item() {
488
+ return entry.item;
489
+ }
490
+ });
491
+ },
492
+ children: leading => _$ssr(_tmpl$11, _$escape(leading()()))
493
+ });
494
+ }
495
+ })), _$escape(entry.item.label), _$escape(_$createComponent(Show, {
496
+ get when() {
497
+ return entry.item.disabled ?? entry.item.description;
498
+ },
499
+ children: text => _$ssr(_tmpl$12, _$escape(text()))
500
+ })), _$escape(_$createComponent(Show, {
501
+ get when() {
502
+ return entry.item.hint;
503
+ },
504
+ children: hint => _$ssr(_tmpl$13, _$escape(hint()))
505
+ })), _$escape(_$createComponent(Show, {
506
+ get when() {
507
+ return entry.item.next;
508
+ },
509
+ get children() {
510
+ return _$ssr(_tmpl$0);
511
+ }
512
+ })))
513
+ })));
514
+ }
515
+ })), _$escape(_$createComponent(Show, {
516
+ get when() {
517
+ return _$memo(() => nav.entries().length === 0)() && nav.load().state === "ready";
518
+ },
519
+ get children() {
520
+ return _$ssr(_tmpl$, _$escape(messages().noResults));
521
+ }
522
+ })), _$escape(_$createComponent(Show, {
523
+ get when() {
524
+ return nav.load().state === "loading";
525
+ },
526
+ get children() {
527
+ return _$ssr(_tmpl$2, nav.awaitingChoice() ? _$escape(commandMessages().loadingChoice) : _$escape(commandMessages().loading));
528
+ }
529
+ })), _$escape(_$createComponent(Show, {
530
+ get when() {
531
+ return _$memo(() => nav.load().state === "failed")() ? nav.load() : undefined;
532
+ },
533
+ children: failed => _$ssr(_tmpl$14, _$escape(failed().message ?? commandMessages().loadFailed), _$escape(messages().retry))
534
+ })))];
535
+ }
536
+ }), _$ssr(_tmpl$4, _$escape(status())), _$ssr(_tmpl$5, _$escape(outcomeError() || loadFailure()))];
537
+ }
538
+
539
+ /**
540
+ * A command's outcome in the list's place, one line: a confirmation in the status green, an error in the status red
541
+ * with Retry when the command threw or rejected, or a retry running. The live regions of the list announce its text,
542
+ * so the text is hidden here; its buttons are ordinary buttons, since the list it replaced is gone.
543
+ */
544
+ function CommandOutcomeLine(props) {
545
+ const messages = useUiMessages();
546
+ const outcome = () => props.navigator.outcome();
547
+ return _$createComponent(Show, {
548
+ get when() {
549
+ return outcome();
550
+ },
551
+ children: current => // biome-ignore lint/a11y/noStaticElementInteractions: it holds the focus only when a menu without a target has nowhere else to keep it.
552
+ _$ssr(_tmpl$16, _$ssrAttribute("data-state", _$escape(current().state, true), false), _$ssrAttribute("class", current().state === "success" ? "ti ti-circle-check" : current().state === "error" ? "ti ti-alert-circle" : "ti ti-loader-2 k2b-spin", false), _$ssrAttribute("title", _$escape(props.text(current()), true), false), _$escape(props.text(current())), _$escape(_$createComponent(Show, {
553
+ get when() {
554
+ return _$memo(() => current().state === "error")() ? current().retry : undefined;
555
+ },
556
+ children: retry => _$ssr(_tmpl$17, _$escape(messages().retry))
557
+ })), _$escape(_$createComponent(Show, {
558
+ get when() {
559
+ return current().state === "error";
560
+ },
561
+ get children() {
562
+ return _$ssr(_tmpl$15, _$ssrAttribute("aria-label", _$escape(messages().close, true), false));
563
+ }
564
+ })))
565
+ });
566
+ }
567
+
568
+ /** An entry's image, one per theme when it has two, at icon size; or its icon. */
569
+ function CommandVisual(props) {
570
+ const image = () => props.item.image;
571
+ return _$createComponent(Show, {
572
+ get when() {
573
+ return image();
574
+ },
575
+ get fallback() {
576
+ return _$createComponent(Show, {
577
+ get when() {
578
+ return props.item.icon;
579
+ },
580
+ children: icon => _$ssr(_tmpl$18, _$ssrAttribute("class", _$escape(icon(), true), false))
581
+ });
582
+ },
583
+ children: source => _$ssr(_tmpl$19, _$escape(_$createComponent(Show, {
584
+ get when() {
585
+ return _$memo(() => typeof source() === "object")() ? source() : undefined;
586
+ },
587
+ get fallback() {
588
+ return _$ssr(_tmpl$20, _$ssrAttribute("src", _$escape(source(), true), false));
589
+ },
590
+ children: pair => [_$ssr(_tmpl$21, _$ssrAttribute("src", _$escape(pair().light, true), false)), _$ssr(_tmpl$22, _$ssrAttribute("src", _$escape(pair().dark, true), false))]
591
+ })))
592
+ });
593
+ }
594
+
595
+ /**
596
+ * The keys of a command list in its host's field: Up, Down, Home, and End mark; Enter and Tab choose; Escape and
597
+ * Backspace on an empty query leave a second list. Returns whether the key was used; Escape in the first list is left
598
+ * to the host, which closes.
599
+ */
600
+ export const commandListKey = (nav, event, query) => {
601
+ if (event.isComposing || event.metaKey || event.ctrlKey || event.altKey) return false;
602
+ switch (event.key) {
603
+ case "ArrowDown":
604
+ case "ArrowUp":
605
+ if (nav.entries().length === 0) return false;
606
+ nav.move(event.key === "ArrowDown" ? 1 : -1);
607
+ return true;
608
+ case "Home":
609
+ case "End":
610
+ if (event.shiftKey || nav.entries().length === 0) return false;
611
+ nav.edge(event.key === "Home" ? "first" : "last");
612
+ return true;
613
+ case "Enter":
614
+ case "Tab":
615
+ // Enter while entries load takes the first entry of exactly this query once it arrives, never a stale one.
616
+ if (event.key === "Enter" && !event.shiftKey && nav.load().state === "loading") {
617
+ nav.chooseWhenLoaded();
618
+ return true;
619
+ }
620
+ // Enter asks a list that could not load again.
621
+ if (event.key === "Enter" && !event.shiftKey && nav.load().state === "failed" && nav.entries().length === 0) {
622
+ nav.retry();
623
+ return true;
624
+ }
625
+ if (event.shiftKey || nav.entries().length === 0) return false;
626
+ nav.choose();
627
+ return true;
628
+ case "Escape":
629
+ // A running command is stopped by the host, before any back.
630
+ if (nav.busy()) return false;
631
+ return nav.back();
632
+ case "Backspace":
633
+ return query === "" && nav.back();
634
+ default:
635
+ return false;
636
+ }
637
+ };
638
+ //# sourceMappingURL=CommandList.js.map