@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
@@ -47,7 +47,8 @@ export function selectedChartSvg(svg, selected) {
47
47
  if (!matches) return attribute;
48
48
  const children = svg.slice(offset, svg.indexOf("</g>", offset));
49
49
  const palette = Number(children.match(/stdlib-chart-series-(\d+)/)?.[1] ?? matches.seriesIndex ?? 0) % 8 + 1;
50
- const paint = `--k2b-chart-selection-color:color-mix(in srgb,var(--stdlib-chart-c${palette}) 72%,var(--k2b-chart-highlight-mix))`;
50
+ const markPaint = children.match(/class="k2b-waterfall-bar"[^>]* fill="([^"]+)"/)?.[1] ?? `var(--stdlib-chart-c${palette})`;
51
+ const paint = `--k2b-chart-selection-color:color-mix(in srgb,${markPaint} 72%,var(--k2b-chart-highlight-mix))`;
51
52
  const opening = attribute.includes('style="') ? attribute.replace(/style="([^"]*)"/, (_match, style) => `style="${style};${paint}"`) : attribute.replace(">", ` style="${paint}">`);
52
53
  return opening.replace(">", " data-selected>");
53
54
  });
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["content/chart-svg.ts"],"sourcesContent":["import type { MapViewport } from \"../charts/core/svg\";\n\n/** Give maps a CSS-sized viewport while retaining the renderer's projection.\n * The outer SVG uses pixels for headers/legend; the nested geographic viewport\n * keeps one fitted scale across zoom levels and clips only at the plot edges.\n */\nexport function responsiveMapSvg(svg: string, width: number, height: number, viewport: MapViewport): string {\n if (!svg.includes('class=\"stdlib-chart-map-viewport\"')) return svg;\n const zoomScale = 2 ** viewport.zoom;\n return svg\n .replace(/<text class=\"stdlib-chart-(title|subtitle|map-empty)\"[^>]*>/g, (tag) => {\n const centered = tag.replace(/x=\"[^\"]*\"/, 'x=\"50%\"');\n return tag.includes(\"map-empty\") ? centered.replace(/y=\"[^\"]*\"/, 'y=\"50%\"') : centered;\n })\n .replace(/^(<svg\\b[^>]*?) viewBox=\"[^\"]*\"/, \"$1\")\n .replace(/<svg class=\"stdlib-chart-map-viewport\"[^>]*>/, (tag) => {\n const mapWidth = Number(tag.match(/\\bwidth=\"([^\"]+)\"/)?.[1]);\n const mapHeight = Number(tag.match(/\\bheight=\"([^\"]+)\"/)?.[1]);\n const inverse = `calc(max(tan(atan2(${mapWidth}px, ${(mapWidth / width) * 100}cqw)), tan(atan2(${mapHeight}px, ${(mapHeight / height) * 100}cqh))) / ${zoomScale})`;\n const translateX = mapWidth / 2 - ((viewport.longitude + 180) / 360) * mapWidth * zoomScale;\n const translateY = mapHeight / 2 - ((90 - viewport.latitude) / 180) * mapHeight * zoomScale;\n return tag\n .replace(\n /\\b(x|y|width|height)=\"([\\d.]+)\"/g,\n (_match, name: string, value: string) =>\n `${name}=\"${(Number(value) / (name === \"x\" || name === \"width\" ? width : height)) * 100}%\"`,\n )\n .replace(\n \">\",\n ` preserveAspectRatio=\"xMidYMid meet\" style=\"--k2b-map-inverse-scale:${inverse}\"><g class=\"k2b-chart-map-camera\" transform=\"translate(${translateX} ${translateY}) scale(${zoomScale})\">`,\n );\n })\n .replace(\"</svg>\", \"</g></svg>\");\n}\n\n/** Adapt our generated SVGs to a CSS-sized box without rebuilding their geometry.\n * Only stdlib and the local timeline renderer supply this markup; this is not a\n * parser for arbitrary SVG. The viewBox remains the interaction coordinate space.\n */\nexport function responsiveChartSvg(svg: string): string {\n return svg.replace(\"<svg \", '<svg preserveAspectRatio=\"none\" ').replace(/<text\\b[^>]*>/g, (tag) => {\n const x = tag.match(/\\bx=\"(-?[\\d.]+)\"/)?.[1];\n const y = tag.match(/\\by=\"(-?[\\d.]+)\"/)?.[1];\n if (x === undefined || y === undefined) return tag;\n const rotation = tag.match(/\\btransform=\"rotate\\((-?[\\d.]+) [^\\\"]+\\)\"/)?.[1];\n // Individual CSS scale precedes rotation. Use the same text anchor as\n // transform-origin, and avoid applying the SVG rotation pivot twice.\n const origin = `transform-origin:${x}px ${y}px${rotation ? `;transform:rotate(${rotation}deg)` : \"\"}`;\n return tag.includes('style=\"')\n ? tag.replace(/style=\"([^\"]*)\"/, (_match, style: string) => `style=\"${style};${origin}\"`)\n : tag.replace(/>$/, ` style=\"${origin}\">`);\n });\n}\n\n/** Add initial controlled selection to our own renderer metadata during SSR. */\nexport function selectedChartSvg(\n svg: string,\n selected:\n | { role: string; index: number; seriesIndex?: number }\n | readonly { role: string; index: number; seriesIndex?: number }[]\n | null\n | undefined,\n): string {\n if (!selected) return svg;\n const targets = \"role\" in selected ? [selected] : selected;\n return svg.replace(/<g\\b[^>]*\\bdata-chart-datum=\"([^\"]*)\"[^>]*>/g, (attribute, encoded: string, offset: number) => {\n const raw = encoded\n .replace(/&quot;/g, '\"')\n .replace(/&apos;|&#39;/g, \"'\")\n .replace(/&lt;/g, \"<\")\n .replace(/&gt;/g, \">\")\n .replace(/&amp;/g, \"&\");\n const value: unknown = JSON.parse(raw);\n if (typeof value !== \"object\" || value === null || !(\"role\" in value) || !(\"index\" in value)) return attribute;\n const matches = targets.find(\n (target) =>\n value.role === target.role &&\n value.index === target.index &&\n (\"seriesIndex\" in value ? value.seriesIndex : undefined) === target.seriesIndex,\n );\n if (!matches) return attribute;\n const children = svg.slice(offset, svg.indexOf(\"</g>\", offset));\n const palette = (Number(children.match(/stdlib-chart-series-(\\d+)/)?.[1] ?? matches.seriesIndex ?? 0) % 8) + 1;\n const paint = `--k2b-chart-selection-color:color-mix(in srgb,var(--stdlib-chart-c${palette}) 72%,var(--k2b-chart-highlight-mix))`;\n const opening = attribute.includes('style=\"')\n ? attribute.replace(/style=\"([^\"]*)\"/, (_match: string, style: string) => `style=\"${style};${paint}\"`)\n : attribute.replace(\">\", ` style=\"${paint}\">`);\n return opening.replace(\">\", \" data-selected>\");\n });\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["content/chart-svg.ts"],"sourcesContent":["import type { MapViewport } from \"../charts/core/svg\";\n\n/** Give maps a CSS-sized viewport while retaining the renderer's projection.\n * The outer SVG uses pixels for headers/legend; the nested geographic viewport\n * keeps one fitted scale across zoom levels and clips only at the plot edges.\n */\nexport function responsiveMapSvg(svg: string, width: number, height: number, viewport: MapViewport): string {\n if (!svg.includes('class=\"stdlib-chart-map-viewport\"')) return svg;\n const zoomScale = 2 ** viewport.zoom;\n return svg\n .replace(/<text class=\"stdlib-chart-(title|subtitle|map-empty)\"[^>]*>/g, (tag) => {\n const centered = tag.replace(/x=\"[^\"]*\"/, 'x=\"50%\"');\n return tag.includes(\"map-empty\") ? centered.replace(/y=\"[^\"]*\"/, 'y=\"50%\"') : centered;\n })\n .replace(/^(<svg\\b[^>]*?) viewBox=\"[^\"]*\"/, \"$1\")\n .replace(/<svg class=\"stdlib-chart-map-viewport\"[^>]*>/, (tag) => {\n const mapWidth = Number(tag.match(/\\bwidth=\"([^\"]+)\"/)?.[1]);\n const mapHeight = Number(tag.match(/\\bheight=\"([^\"]+)\"/)?.[1]);\n const inverse = `calc(max(tan(atan2(${mapWidth}px, ${(mapWidth / width) * 100}cqw)), tan(atan2(${mapHeight}px, ${(mapHeight / height) * 100}cqh))) / ${zoomScale})`;\n const translateX = mapWidth / 2 - ((viewport.longitude + 180) / 360) * mapWidth * zoomScale;\n const translateY = mapHeight / 2 - ((90 - viewport.latitude) / 180) * mapHeight * zoomScale;\n return tag\n .replace(\n /\\b(x|y|width|height)=\"([\\d.]+)\"/g,\n (_match, name: string, value: string) =>\n `${name}=\"${(Number(value) / (name === \"x\" || name === \"width\" ? width : height)) * 100}%\"`,\n )\n .replace(\n \">\",\n ` preserveAspectRatio=\"xMidYMid meet\" style=\"--k2b-map-inverse-scale:${inverse}\"><g class=\"k2b-chart-map-camera\" transform=\"translate(${translateX} ${translateY}) scale(${zoomScale})\">`,\n );\n })\n .replace(\"</svg>\", \"</g></svg>\");\n}\n\n/** Adapt our generated SVGs to a CSS-sized box without rebuilding their geometry.\n * Only stdlib and the local timeline renderer supply this markup; this is not a\n * parser for arbitrary SVG. The viewBox remains the interaction coordinate space.\n */\nexport function responsiveChartSvg(svg: string): string {\n return svg.replace(\"<svg \", '<svg preserveAspectRatio=\"none\" ').replace(/<text\\b[^>]*>/g, (tag) => {\n const x = tag.match(/\\bx=\"(-?[\\d.]+)\"/)?.[1];\n const y = tag.match(/\\by=\"(-?[\\d.]+)\"/)?.[1];\n if (x === undefined || y === undefined) return tag;\n const rotation = tag.match(/\\btransform=\"rotate\\((-?[\\d.]+) [^\\\"]+\\)\"/)?.[1];\n // Individual CSS scale precedes rotation. Use the same text anchor as\n // transform-origin, and avoid applying the SVG rotation pivot twice.\n const origin = `transform-origin:${x}px ${y}px${rotation ? `;transform:rotate(${rotation}deg)` : \"\"}`;\n return tag.includes('style=\"')\n ? tag.replace(/style=\"([^\"]*)\"/, (_match, style: string) => `style=\"${style};${origin}\"`)\n : tag.replace(/>$/, ` style=\"${origin}\">`);\n });\n}\n\n/** Add initial controlled selection to our own renderer metadata during SSR. */\nexport function selectedChartSvg(\n svg: string,\n selected:\n | { role: string; index: number; seriesIndex?: number }\n | readonly { role: string; index: number; seriesIndex?: number }[]\n | null\n | undefined,\n): string {\n if (!selected) return svg;\n const targets = \"role\" in selected ? [selected] : selected;\n return svg.replace(/<g\\b[^>]*\\bdata-chart-datum=\"([^\"]*)\"[^>]*>/g, (attribute, encoded: string, offset: number) => {\n const raw = encoded\n .replace(/&quot;/g, '\"')\n .replace(/&apos;|&#39;/g, \"'\")\n .replace(/&lt;/g, \"<\")\n .replace(/&gt;/g, \">\")\n .replace(/&amp;/g, \"&\");\n const value: unknown = JSON.parse(raw);\n if (typeof value !== \"object\" || value === null || !(\"role\" in value) || !(\"index\" in value)) return attribute;\n const matches = targets.find(\n (target) =>\n value.role === target.role &&\n value.index === target.index &&\n (\"seriesIndex\" in value ? value.seriesIndex : undefined) === target.seriesIndex,\n );\n if (!matches) return attribute;\n const children = svg.slice(offset, svg.indexOf(\"</g>\", offset));\n const palette = (Number(children.match(/stdlib-chart-series-(\\d+)/)?.[1] ?? matches.seriesIndex ?? 0) % 8) + 1;\n const markPaint = children.match(/class=\"k2b-waterfall-bar\"[^>]* fill=\"([^\"]+)\"/)?.[1] ?? `var(--stdlib-chart-c${palette})`;\n const paint = `--k2b-chart-selection-color:color-mix(in srgb,${markPaint} 72%,var(--k2b-chart-highlight-mix))`;\n const opening = attribute.includes('style=\"')\n ? attribute.replace(/style=\"([^\"]*)\"/, (_match: string, style: string) => `style=\"${style};${paint}\"`)\n : attribute.replace(\">\", ` style=\"${paint}\">`);\n return opening.replace(\">\", \" data-selected>\");\n });\n}\n"],"mappings":"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","ignoreList":[]}
@@ -38,11 +38,13 @@ export { MARKDOWN_CALLOUT_CLASSES, MARKDOWN_CALLOUT_ICON_ATTRIBUTES, markdownInf
38
38
  export { markdownLinkReference, markdownReferenceIcon, markdownReferenceType, markdownReferenceTypeLabel, markStandaloneLinks, renderMarkdownLink } from "./markdown-links";
39
39
  export { Pagination } from "./Pagination";
40
40
  export { default as PdfPreview } from "./PdfPreview";
41
+ export { default as PdfViewer } from "./PdfViewer";
41
42
  export { default as RangePicker } from "./RangePicker";
42
43
  export { ReactionBar } from "./ReactionBar";
43
44
  export { REFERENCE_CHIP_MAX_CHARACTERS, ReferenceChip, truncateMiddle } from "./ReferenceChip";
44
45
  export { Steps } from "./Steps";
45
46
  export { default as StructuredDataPreview, isStructuredDataValue } from "./StructuredDataPreview";
47
+ export { ThumbnailStrip } from "./ThumbnailStrip";
46
48
  export { default as Timeline } from "./Timeline";
47
49
  export { VideoPlayer } from "./VideoPlayer";
48
50
  export { VirtualFeed } from "./VirtualFeed";
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["content/index.ts"],"sourcesContent":["export type { ChartDateFormat, ChartDatum, ChartDatumRole, ChartFormat, ChartNumberFormat } from \"../charts/core\";\nexport { BalanceSummary, type BalanceSummaryProps } from \"./BalanceSummary\";\nexport type {\n CalendarAttendee,\n CalendarCommand,\n CalendarController,\n CalendarCustomView,\n CalendarDayBadge,\n CalendarEvent,\n CalendarEventColor,\n CalendarEventLink,\n CalendarEventRenderContext,\n CalendarEventTimeChange,\n CalendarExternalDrag,\n CalendarLabels,\n CalendarProps,\n CalendarQuickCreateControls,\n CalendarRange,\n CalendarRecurrence,\n CalendarResource,\n CalendarSelectionControls,\n CalendarView,\n} from \"./Calendar\";\nexport { default as Calendar } from \"./Calendar\";\n\nexport type { ChartKind, ChartKindProps, ChartLabels, ChartProps, ChartRenderOptions } from \"./Chart\";\nexport { default as Chart } from \"./Chart\";\nexport type { ChartExplorerColumn, ChartExplorerProps, ChartFrameRequest, ChartLegendEntry } from \"./ChartExplorer\";\nexport { ChartExplorer } from \"./ChartExplorer\";\nexport type { ChartExplorerControlsProps } from \"./ChartExplorerControls\";\nexport { ChartExplorerControls } from \"./ChartExplorerControls\";\nexport { ChartFilterControls, type ChartFilterControlsProps } from \"./ChartFilterControls\";\nexport { ChartSnapshotView } from \"./ChartSnapshotView\";\nexport type { CodeDisplayLanguage, CodeDisplayProps } from \"./CodeDisplay\";\nexport { default as CodeDisplay } from \"./CodeDisplay\";\nexport { type ChartCursor, createChartCursor } from \"./chart-cursor\";\nexport type {\n ChartExplorerCharts,\n ChartExplorerController,\n ChartExplorerData,\n ChartExplorerOptions,\n ChartExplorerRequest,\n ChartExplorerRow,\n ChartExplorerSnapshot,\n} from \"./chart-explorer\";\nexport { createChartExplorer } from \"./chart-explorer\";\nexport type { ChartDatumRef, ChartSelection, ChartTooltip, ChartTooltipFormatter } from \"./chart-inspection-core\";\nexport type { ChartSnapshot } from \"./chart-snapshot\";\nexport { prepareChartSnapshot } from \"./chart-snapshot\";\nexport type {\n StateTimelineChartOptions,\n StateTimelineDomain,\n StateTimelineInterval,\n StateTimelineRow,\n StateTimelineState,\n} from \"./chart-state-timeline\";\nexport type { ChartTimeAxis } from \"./chart-time-axis\";\nexport { highlightSql } from \"./code-highlight\";\nexport { type CollectionSelection, createCollectionSelection, type SelectionModifiers } from \"./collection-selection\";\nexport type {\n DataTableColumn,\n DataTableControlsProps,\n DataTableFooter,\n DataTableHeaderProps,\n DataTablePanelFooterProps,\n DataTablePanelProps,\n DataTableProps,\n DataTableRenderCell,\n DataTableRenderHeader,\n DataTableSort,\n} from \"./DataTable\";\nexport { default as DataTable } from \"./DataTable\";\nexport type { DataTableToolsProps, DataTableView, DataTableViewOptions } from \"./DataTableTools\";\nexport { createDataTableView, DataTableTools } from \"./DataTableTools\";\nexport type { DocCodeHighlighter, DocCodeProps, DocConcept, DocNoteVariant, DocRow } from \"./Docs\";\nexport { DocCode, DocConceptGrid, DocInlineCode, DocLead, DocNote, DocPage, DocRows, DocSection } from \"./Docs\";\nexport type {\n DataTableColumnType,\n DataTableNumberFormat,\n DataTableStatusState,\n DataTableTypedColumn,\n} from \"./data-table-columns\";\nexport { filterRows, sortRows } from \"./data-table-columns\";\nexport { FileBrowserPanel, type FileBrowserPanelProps, type FileSource, openFileBrowser } from \"./FileBrowser\";\nexport { FileGrid, type FileGridGroup, type FileGridOpenProps, type FileGridProps, type FileGridSelectableProps } from \"./FileGrid\";\nexport { default as FileTree, type FileTreeActions, type FileTreeEntry, type FileTreeProps } from \"./FileTree\";\nexport { type FileType, FileTypeIcon, type FileTypeIconProps, fileKindLabel, fileTypeOf } from \"./FileTypeIcon\";\nexport {\n canPreviewFile,\n default as FileView,\n type FileViewContent,\n type FileViewFile,\n type FileViewPreviewKind,\n type FileViewProps,\n type FileViewRenderer,\n type FileViewRendererProps,\n formatFileViewSize,\n getFileViewPreviewKind,\n} from \"./FileView\";\nexport { FlowAmount, type FlowAmountDirection, type FlowAmountProps, flowDirection } from \"./FlowAmount\";\nexport type { KbdProps } from \"./Kbd\";\nexport { Kbd } from \"./Kbd\";\nexport type { LabelChipProps } from \"./LabelChip\";\nexport { LabelChip } from \"./LabelChip\";\nexport type { LightboxAction, LightboxImage } from \"./Lightbox\";\nexport { default as Lightbox } from \"./Lightbox\";\nexport type { LogTableEntry } from \"./LogEntriesTable\";\nexport { default as LogEntriesTable } from \"./LogEntriesTable\";\nexport { MapAttribution } from \"./MapAttribution\";\nexport { MapView } from \"./MapView\";\nexport { MapViewFrame } from \"./MapViewFrame\";\nexport { default as MarkdownView, type MarkdownRenderOptions, type MarkdownViewProps, renderSafeMarkdown } from \"./MarkdownView\";\nexport { type MatchRange, MatchText, type MatchTextProps, matchParts } from \"./MatchText\";\nexport type {\n MessageEventGroupProps,\n MessageEventRowProps,\n MessageGroupEntry,\n MessageRowAction,\n MessageRowAttachment,\n MessageRowAuthor,\n MessageRowFile,\n MessageRowMedia,\n MessageRowOrigin,\n MessageRowProgress,\n MessageRowProps,\n MessageRowQuote,\n MessageRowReaction,\n MessageRowStatus,\n MessageRowThread,\n MessageSystemRowProps,\n} from \"./MessageRow\";\nexport { MessageEventGroup, MessageEventRow, MessageRow, MessageSystemRow, startsMessageGroup } from \"./MessageRow\";\nexport { type MapPaletteColors, type MapTheme, mapPalette } from \"./map-palette\";\nexport { type MapStyleOptions, mapAttribution, mapStyle } from \"./map-style\";\nexport { MAP_SNAPSHOT_MAX_PIXELS, MapSnapshotError, type MapSnapshotErrorCode } from \"./map-view-snapshot\";\nexport type {\n MapViewArea,\n MapViewFit,\n MapViewFrameProps,\n MapViewHandle,\n MapViewLine,\n MapViewLineTone,\n MapViewMarker,\n MapViewOwnLocation,\n MapViewPoint,\n MapViewProps,\n MapViewSnapshot,\n MapViewSnapshotOptions,\n MapViewStyle,\n MapViewStyleSource,\n MapViewTone,\n} from \"./map-view-types\";\nexport {\n MARKDOWN_CALLOUT_CLASSES,\n MARKDOWN_CALLOUT_ICON_ATTRIBUTES,\n type MarkdownInfoBlock,\n type MarkdownInfoBlockRenderInput,\n type MarkdownInfoBlockType,\n markdownInfoBlocks,\n renderMarkdownInfoBlock,\n scanMarkdownInfoBlock,\n} from \"./markdown-info-blocks\";\nexport {\n type MarkdownLinkInput,\n type MarkdownReference,\n type MarkdownReferenceKind,\n type MarkdownReferenceType,\n markdownLinkReference,\n markdownReferenceIcon,\n markdownReferenceType,\n markdownReferenceTypeLabel,\n markStandaloneLinks,\n renderMarkdownLink,\n} from \"./markdown-links\";\nexport { Pagination, type PaginationProps } from \"./Pagination\";\nexport type { PdfPreviewProps, PdfPreviewRequest } from \"./PdfPreview\";\nexport { default as PdfPreview } from \"./PdfPreview\";\nexport type { RangeOption, RangePickerProps } from \"./RangePicker\";\nexport { default as RangePicker } from \"./RangePicker\";\nexport { ReactionBar, type ReactionBarItem, type ReactionBarProps } from \"./ReactionBar\";\nexport type {\n ReferenceChipObjectProps,\n ReferenceChipPersonProps,\n ReferenceChipProps,\n ReferenceChipTimeProps,\n} from \"./ReferenceChip\";\nexport { REFERENCE_CHIP_MAX_CHARACTERS, ReferenceChip, truncateMiddle } from \"./ReferenceChip\";\nexport type { StepsProps } from \"./Steps\";\nexport { Steps } from \"./Steps\";\nexport type { StructuredDataPreviewMode, StructuredDataPreviewProps, StructuredDataValue } from \"./StructuredDataPreview\";\nexport { default as StructuredDataPreview, isStructuredDataValue } from \"./StructuredDataPreview\";\nexport type { TimelineColor, TimelineController, TimelineItem, TimelineProps } from \"./Timeline\";\nexport { default as Timeline } from \"./Timeline\";\nexport { VideoPlayer, type VideoPlayerProps } from \"./VideoPlayer\";\nexport type { VirtualFeedController, VirtualFeedProps, VirtualFeedScrollOptions } from \"./VirtualFeed\";\nexport { VirtualFeed } from \"./VirtualFeed\";\nexport type { ZoomPanAction, ZoomPanFullscreen, ZoomPanViewportProps } from \"./ZoomPanViewport\";\nexport { ZoomPanViewport } from \"./ZoomPanViewport\";\n"],"mappings":"AACA,SAAS,cAAc,QAAkC,kBAAkB;AAsB3E,SAAS,OAAO,IAAI,QAAQ,QAAQ,YAAY;AAGhD,SAAS,OAAO,IAAI,KAAK,QAAQ,SAAS;AAE1C,SAAS,aAAa,QAAQ,iBAAiB;AAE/C,SAAS,qBAAqB,QAAQ,yBAAyB;AAC/D,SAAS,mBAAmB,QAAuC,uBAAuB;AAC1F,SAAS,iBAAiB,QAAQ,qBAAqB;AAEvD,SAAS,OAAO,IAAI,WAAW,QAAQ,eAAe;AACtD,SAA2B,iBAAiB,QAAQ,gBAAgB;AAUpE,SAAS,mBAAmB,QAAQ,kBAAkB;AAGtD,SAAS,oBAAoB,QAAQ,kBAAkB;AASvD,SAAS,YAAY,QAAQ,kBAAkB;AAC/C,SAAmC,yBAAyB,QAAiC,wBAAwB;AAarH,SAAS,OAAO,IAAI,SAAS,QAAQ,aAAa;AAElD,SAAS,mBAAmB,EAAE,cAAc,QAAQ,kBAAkB;AAEtE,SAAS,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,QAAQ,QAAQ;AAO/G,SAAS,UAAU,EAAE,QAAQ,QAAQ,sBAAsB;AAC3D,SAAS,gBAAgB,EAA+C,eAAe,QAAQ,eAAe;AAC9G,SAAS,QAAQ,QAAsG,YAAY;AACnI,SAAS,OAAO,IAAI,QAAQ,QAAsE,YAAY;AAC9G,SAAwB,YAAY,EAA0B,aAAa,EAAE,UAAU,QAAQ,gBAAgB;AAC/G,SACE,cAAc,EACd,OAAO,IAAI,QAAQ,EAOnB,kBAAkB,EAClB,sBAAsB,QACjB,YAAY;AACnB,SAAS,UAAU,EAAkD,aAAa,QAAQ,cAAc;AAExG,SAAS,GAAG,QAAQ,OAAO;AAE3B,SAAS,SAAS,QAAQ,aAAa;AAEvC,SAAS,OAAO,IAAI,QAAQ,QAAQ,YAAY;AAEhD,SAAS,OAAO,IAAI,eAAe,QAAQ,mBAAmB;AAC9D,SAAS,cAAc,QAAQ,kBAAkB;AACjD,SAAS,OAAO,QAAQ,WAAW;AACnC,SAAS,YAAY,QAAQ,gBAAgB;AAC7C,SAAS,OAAO,IAAI,YAAY,EAAsD,kBAAkB,QAAQ,gBAAgB;AAChI,SAA0B,SAAS,EAAuB,UAAU,QAAQ,aAAa;AAmBzF,SAAS,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,QAAQ,cAAc;AACnH,SAA+C,UAAU,QAAQ,eAAe;AAChF,SAA+B,cAAc,EAAE,QAAQ,QAAQ,aAAa;AAC5E,SAAS,uBAAuB,EAAE,gBAAgB,QAAmC,qBAAqB;AAkB1G,SACE,wBAAwB,EACxB,gCAAgC,EAIhC,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,QAChB,wBAAwB;AAC/B,SAKE,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,QACb,kBAAkB;AACzB,SAAS,UAAU,QAA8B,cAAc;AAE/D,SAAS,OAAO,IAAI,UAAU,QAAQ,cAAc;AAEpD,SAAS,OAAO,IAAI,WAAW,QAAQ,eAAe;AACtD,SAAS,WAAW,QAAqD,eAAe;AAOxF,SAAS,6BAA6B,EAAE,aAAa,EAAE,cAAc,QAAQ,iBAAiB;AAE9F,SAAS,KAAK,QAAQ,SAAS;AAE/B,SAAS,OAAO,IAAI,qBAAqB,EAAE,qBAAqB,QAAQ,yBAAyB;AAEjG,SAAS,OAAO,IAAI,QAAQ,QAAQ,YAAY;AAChD,SAAS,WAAW,QAA+B,eAAe;AAElE,SAAS,WAAW,QAAQ,eAAe;AAE3C,SAAS,eAAe,QAAQ,mBAAmB","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["content/index.ts"],"sourcesContent":["export type { ChartDateFormat, ChartDatum, ChartDatumRole, ChartFormat, ChartNumberFormat } from \"../charts/core\";\nexport { BalanceSummary, type BalanceSummaryProps } from \"./BalanceSummary\";\nexport type {\n CalendarAttendee,\n CalendarCommand,\n CalendarController,\n CalendarCustomView,\n CalendarDayBadge,\n CalendarEvent,\n CalendarEventColor,\n CalendarEventLink,\n CalendarEventRenderContext,\n CalendarEventTimeChange,\n CalendarExternalDrag,\n CalendarLabels,\n CalendarProps,\n CalendarQuickCreateControls,\n CalendarRange,\n CalendarRecurrence,\n CalendarResource,\n CalendarSelectionControls,\n CalendarView,\n} from \"./Calendar\";\nexport { default as Calendar } from \"./Calendar\";\n\nexport type { ChartKind, ChartKindProps, ChartLabels, ChartProps, ChartRenderOptions } from \"./Chart\";\nexport { default as Chart } from \"./Chart\";\nexport type { ChartExplorerColumn, ChartExplorerProps, ChartFrameRequest, ChartLegendEntry } from \"./ChartExplorer\";\nexport { ChartExplorer } from \"./ChartExplorer\";\nexport type { ChartExplorerControlsProps } from \"./ChartExplorerControls\";\nexport { ChartExplorerControls } from \"./ChartExplorerControls\";\nexport { ChartFilterControls, type ChartFilterControlsProps } from \"./ChartFilterControls\";\nexport { ChartSnapshotView } from \"./ChartSnapshotView\";\nexport type { CodeDisplayLanguage, CodeDisplayProps } from \"./CodeDisplay\";\nexport { default as CodeDisplay } from \"./CodeDisplay\";\nexport { type ChartCursor, createChartCursor } from \"./chart-cursor\";\nexport type {\n ChartExplorerCharts,\n ChartExplorerController,\n ChartExplorerData,\n ChartExplorerOptions,\n ChartExplorerRequest,\n ChartExplorerRow,\n ChartExplorerSnapshot,\n} from \"./chart-explorer\";\nexport { createChartExplorer } from \"./chart-explorer\";\nexport type { ChartDatumRef, ChartSelection, ChartTooltip, ChartTooltipFormatter } from \"./chart-inspection-core\";\nexport type { ChartSnapshot } from \"./chart-snapshot\";\nexport { prepareChartSnapshot } from \"./chart-snapshot\";\nexport type {\n StateTimelineChartOptions,\n StateTimelineDomain,\n StateTimelineInterval,\n StateTimelineRow,\n StateTimelineState,\n} from \"./chart-state-timeline\";\nexport type { ChartTimeAxis } from \"./chart-time-axis\";\nexport { highlightSql } from \"./code-highlight\";\nexport { type CollectionSelection, createCollectionSelection, type SelectionModifiers } from \"./collection-selection\";\nexport type {\n DataTableColumn,\n DataTableControlsProps,\n DataTableFooter,\n DataTableHeaderProps,\n DataTablePanelFooterProps,\n DataTablePanelProps,\n DataTableProps,\n DataTableRenderCell,\n DataTableRenderHeader,\n DataTableSort,\n} from \"./DataTable\";\nexport { default as DataTable } from \"./DataTable\";\nexport type { DataTableToolsProps, DataTableView, DataTableViewOptions } from \"./DataTableTools\";\nexport { createDataTableView, DataTableTools } from \"./DataTableTools\";\nexport type { DocCodeHighlighter, DocCodeProps, DocConcept, DocNoteVariant, DocRow } from \"./Docs\";\nexport { DocCode, DocConceptGrid, DocInlineCode, DocLead, DocNote, DocPage, DocRows, DocSection } from \"./Docs\";\nexport type {\n DataTableColumnType,\n DataTableNumberFormat,\n DataTableStatusState,\n DataTableTypedColumn,\n} from \"./data-table-columns\";\nexport { filterRows, sortRows } from \"./data-table-columns\";\nexport { FileBrowserPanel, type FileBrowserPanelProps, type FileSource, openFileBrowser } from \"./FileBrowser\";\nexport { FileGrid, type FileGridGroup, type FileGridOpenProps, type FileGridProps, type FileGridSelectableProps } from \"./FileGrid\";\nexport { default as FileTree, type FileTreeActions, type FileTreeEntry, type FileTreeProps } from \"./FileTree\";\nexport { type FileType, FileTypeIcon, type FileTypeIconProps, fileKindLabel, fileTypeOf } from \"./FileTypeIcon\";\nexport {\n canPreviewFile,\n default as FileView,\n type FileViewContent,\n type FileViewFile,\n type FileViewPreviewKind,\n type FileViewProps,\n type FileViewRenderer,\n type FileViewRendererProps,\n formatFileViewSize,\n getFileViewPreviewKind,\n} from \"./FileView\";\nexport { FlowAmount, type FlowAmountDirection, type FlowAmountProps, flowDirection } from \"./FlowAmount\";\nexport type { KbdProps } from \"./Kbd\";\nexport { Kbd } from \"./Kbd\";\nexport type { LabelChipProps } from \"./LabelChip\";\nexport { LabelChip } from \"./LabelChip\";\nexport type { LightboxAction, LightboxImage } from \"./Lightbox\";\nexport { default as Lightbox } from \"./Lightbox\";\nexport type { LogTableEntry } from \"./LogEntriesTable\";\nexport { default as LogEntriesTable } from \"./LogEntriesTable\";\nexport { MapAttribution } from \"./MapAttribution\";\nexport { MapView } from \"./MapView\";\nexport { MapViewFrame } from \"./MapViewFrame\";\nexport { default as MarkdownView, type MarkdownRenderOptions, type MarkdownViewProps, renderSafeMarkdown } from \"./MarkdownView\";\nexport { type MatchRange, MatchText, type MatchTextProps, matchParts } from \"./MatchText\";\nexport type {\n MessageEventGroupProps,\n MessageEventRowProps,\n MessageGroupEntry,\n MessageRowAction,\n MessageRowAttachment,\n MessageRowAuthor,\n MessageRowFile,\n MessageRowMedia,\n MessageRowOrigin,\n MessageRowProgress,\n MessageRowProps,\n MessageRowQuote,\n MessageRowReaction,\n MessageRowStatus,\n MessageRowThread,\n MessageSystemRowProps,\n} from \"./MessageRow\";\nexport { MessageEventGroup, MessageEventRow, MessageRow, MessageSystemRow, startsMessageGroup } from \"./MessageRow\";\nexport { type MapPaletteColors, type MapTheme, mapPalette } from \"./map-palette\";\nexport { type MapStyleOptions, mapAttribution, mapStyle } from \"./map-style\";\nexport { MAP_SNAPSHOT_MAX_PIXELS, MapSnapshotError, type MapSnapshotErrorCode } from \"./map-view-snapshot\";\nexport type {\n MapViewArea,\n MapViewFit,\n MapViewFrameProps,\n MapViewHandle,\n MapViewLine,\n MapViewLineTone,\n MapViewMarker,\n MapViewOwnLocation,\n MapViewPoint,\n MapViewProps,\n MapViewSnapshot,\n MapViewSnapshotOptions,\n MapViewStyle,\n MapViewStyleSource,\n MapViewTone,\n} from \"./map-view-types\";\nexport {\n MARKDOWN_CALLOUT_CLASSES,\n MARKDOWN_CALLOUT_ICON_ATTRIBUTES,\n type MarkdownInfoBlock,\n type MarkdownInfoBlockRenderInput,\n type MarkdownInfoBlockType,\n markdownInfoBlocks,\n renderMarkdownInfoBlock,\n scanMarkdownInfoBlock,\n} from \"./markdown-info-blocks\";\nexport {\n type MarkdownLinkInput,\n type MarkdownReference,\n type MarkdownReferenceKind,\n type MarkdownReferenceType,\n markdownLinkReference,\n markdownReferenceIcon,\n markdownReferenceType,\n markdownReferenceTypeLabel,\n markStandaloneLinks,\n renderMarkdownLink,\n} from \"./markdown-links\";\nexport { Pagination, type PaginationProps } from \"./Pagination\";\nexport type { PdfPreviewProps, PdfPreviewRequest } from \"./PdfPreview\";\nexport { default as PdfPreview } from \"./PdfPreview\";\nexport type { PdfViewerProps } from \"./PdfViewer\";\nexport { default as PdfViewer } from \"./PdfViewer\";\nexport type { RangeOption, RangePickerProps } from \"./RangePicker\";\nexport { default as RangePicker } from \"./RangePicker\";\nexport { ReactionBar, type ReactionBarItem, type ReactionBarProps } from \"./ReactionBar\";\nexport type {\n ReferenceChipObjectProps,\n ReferenceChipPersonProps,\n ReferenceChipProps,\n ReferenceChipTimeProps,\n} from \"./ReferenceChip\";\nexport { REFERENCE_CHIP_MAX_CHARACTERS, ReferenceChip, truncateMiddle } from \"./ReferenceChip\";\nexport type { StepsProps } from \"./Steps\";\nexport { Steps } from \"./Steps\";\nexport type { StructuredDataPreviewMode, StructuredDataPreviewProps, StructuredDataValue } from \"./StructuredDataPreview\";\nexport { default as StructuredDataPreview, isStructuredDataValue } from \"./StructuredDataPreview\";\nexport { ThumbnailStrip, type ThumbnailStripItem, type ThumbnailStripProps } from \"./ThumbnailStrip\";\nexport type { TimelineColor, TimelineController, TimelineItem, TimelineProps } from \"./Timeline\";\nexport { default as Timeline } from \"./Timeline\";\nexport { VideoPlayer, type VideoPlayerProps } from \"./VideoPlayer\";\nexport type { VirtualFeedController, VirtualFeedProps, VirtualFeedScrollOptions } from \"./VirtualFeed\";\nexport { VirtualFeed } from \"./VirtualFeed\";\nexport type { ZoomPanAction, ZoomPanFullscreen, ZoomPanViewportProps } from \"./ZoomPanViewport\";\nexport { ZoomPanViewport } from \"./ZoomPanViewport\";\n"],"mappings":"AACA,SAAS,cAAc,QAAkC,kBAAkB;AAsB3E,SAAS,OAAO,IAAI,QAAQ,QAAQ,YAAY;AAGhD,SAAS,OAAO,IAAI,KAAK,QAAQ,SAAS;AAE1C,SAAS,aAAa,QAAQ,iBAAiB;AAE/C,SAAS,qBAAqB,QAAQ,yBAAyB;AAC/D,SAAS,mBAAmB,QAAuC,uBAAuB;AAC1F,SAAS,iBAAiB,QAAQ,qBAAqB;AAEvD,SAAS,OAAO,IAAI,WAAW,QAAQ,eAAe;AACtD,SAA2B,iBAAiB,QAAQ,gBAAgB;AAUpE,SAAS,mBAAmB,QAAQ,kBAAkB;AAGtD,SAAS,oBAAoB,QAAQ,kBAAkB;AASvD,SAAS,YAAY,QAAQ,kBAAkB;AAC/C,SAAmC,yBAAyB,QAAiC,wBAAwB;AAarH,SAAS,OAAO,IAAI,SAAS,QAAQ,aAAa;AAElD,SAAS,mBAAmB,EAAE,cAAc,QAAQ,kBAAkB;AAEtE,SAAS,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,QAAQ,QAAQ;AAO/G,SAAS,UAAU,EAAE,QAAQ,QAAQ,sBAAsB;AAC3D,SAAS,gBAAgB,EAA+C,eAAe,QAAQ,eAAe;AAC9G,SAAS,QAAQ,QAAsG,YAAY;AACnI,SAAS,OAAO,IAAI,QAAQ,QAAsE,YAAY;AAC9G,SAAwB,YAAY,EAA0B,aAAa,EAAE,UAAU,QAAQ,gBAAgB;AAC/G,SACE,cAAc,EACd,OAAO,IAAI,QAAQ,EAOnB,kBAAkB,EAClB,sBAAsB,QACjB,YAAY;AACnB,SAAS,UAAU,EAAkD,aAAa,QAAQ,cAAc;AAExG,SAAS,GAAG,QAAQ,OAAO;AAE3B,SAAS,SAAS,QAAQ,aAAa;AAEvC,SAAS,OAAO,IAAI,QAAQ,QAAQ,YAAY;AAEhD,SAAS,OAAO,IAAI,eAAe,QAAQ,mBAAmB;AAC9D,SAAS,cAAc,QAAQ,kBAAkB;AACjD,SAAS,OAAO,QAAQ,WAAW;AACnC,SAAS,YAAY,QAAQ,gBAAgB;AAC7C,SAAS,OAAO,IAAI,YAAY,EAAsD,kBAAkB,QAAQ,gBAAgB;AAChI,SAA0B,SAAS,EAAuB,UAAU,QAAQ,aAAa;AAmBzF,SAAS,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,QAAQ,cAAc;AACnH,SAA+C,UAAU,QAAQ,eAAe;AAChF,SAA+B,cAAc,EAAE,QAAQ,QAAQ,aAAa;AAC5E,SAAS,uBAAuB,EAAE,gBAAgB,QAAmC,qBAAqB;AAkB1G,SACE,wBAAwB,EACxB,gCAAgC,EAIhC,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,QAChB,wBAAwB;AAC/B,SAKE,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,QACb,kBAAkB;AACzB,SAAS,UAAU,QAA8B,cAAc;AAE/D,SAAS,OAAO,IAAI,UAAU,QAAQ,cAAc;AAEpD,SAAS,OAAO,IAAI,SAAS,QAAQ,aAAa;AAElD,SAAS,OAAO,IAAI,WAAW,QAAQ,eAAe;AACtD,SAAS,WAAW,QAAqD,eAAe;AAOxF,SAAS,6BAA6B,EAAE,aAAa,EAAE,cAAc,QAAQ,iBAAiB;AAE9F,SAAS,KAAK,QAAQ,SAAS;AAE/B,SAAS,OAAO,IAAI,qBAAqB,EAAE,qBAAqB,QAAQ,yBAAyB;AACjG,SAAS,cAAc,QAA2D,kBAAkB;AAEpG,SAAS,OAAO,IAAI,QAAQ,QAAQ,YAAY;AAChD,SAAS,WAAW,QAA+B,eAAe;AAElE,SAAS,WAAW,QAAQ,eAAe;AAE3C,SAAS,eAAe,QAAQ,mBAAmB","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Loads the PDF engine behind `PdfViewer`. The engine is pdf.js with a little glue, bundled once by the @k2b/ui build
3
+ * into its own module next to the pdf.js worker. A host's bundler copies both as files and never bundles pdf.js
4
+ * itself, so no page or script carries it until a document opens.
5
+ */
6
+ /// <reference path="./pdf-worker.d.ts" />
7
+ // The build points these at its prebuilt `pdf-viewer-engine.js` and the worker copy `pdf-viewer-worker.js`.
8
+ const workerUrl = "";
9
+ // @ts-expect-error TypeScript reads a `type: "file"` import as a module import; the engine module has no default export.
10
+ const engineUrl = "";
11
+ import { PDF_LIMITS, pdfTooLarge } from "./pdf-limits";
12
+ export { PDF_LIMITS, PDF_TOO_LARGE, pageImageWidth } from "./pdf-limits";
13
+ const isEngine = value => typeof value === "object" && value !== null && typeof Reflect.get(value, "openPdf") === "function";
14
+
15
+ /** Opens a PDF; `null` after an abort. Throws `PDF_TOO_LARGE` past `PDF_LIMITS`, or pdf.js's error for a broken file. */
16
+ export const openPdfDocument = async (data, signal) => {
17
+ const size = data instanceof Blob ? data.size : data.byteLength;
18
+ if (size > PDF_LIMITS.maxBytes) throw pdfTooLarge(`PDF is larger than ${PDF_LIMITS.maxBytes} bytes`);
19
+ // pdf.js hands its bytes to the worker, which detaches them: a caller's ArrayBuffer stays theirs as a copy.
20
+ const bytes = data instanceof Blob ? await data.arrayBuffer() : data.slice(0);
21
+ if (signal.aborted) return null;
22
+ // A relative address resolves against this module, where the bundler put the engine file.
23
+ const engine = await import(/* @vite-ignore */engineUrl);
24
+ if (!isEngine(engine)) throw new Error("The PDF engine could not be loaded");
25
+ // Closed while the engine loaded: parse nothing.
26
+ if (signal.aborted) return null;
27
+ return engine.openPdf(bytes, signal, workerUrl);
28
+ };
29
+ //# sourceMappingURL=pdf-document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["content/pdf-document.ts"],"sourcesContent":["/**\n * Loads the PDF engine behind `PdfViewer`. The engine is pdf.js with a little glue, bundled once by the @k2b/ui build\n * into its own module next to the pdf.js worker. A host's bundler copies both as files and never bundles pdf.js\n * itself, so no page or script carries it until a document opens.\n */\n/// <reference path=\"./pdf-worker.d.ts\" />\n// The build points these at its prebuilt `pdf-viewer-engine.js` and the worker copy `pdf-viewer-worker.js`.\nimport workerUrl from \"pdfjs-dist/legacy/build/pdf.worker.min.mjs\" with { type: \"file\" };\n// @ts-expect-error TypeScript reads a `type: \"file\"` import as a module import; the engine module has no default export.\nimport engineUrl from \"./pdf-engine.ts\" with { type: \"file\" };\nimport { PDF_LIMITS, type PdfDocumentHandle, pdfTooLarge } from \"./pdf-limits\";\n\nexport type { PdfDocumentHandle, PdfPageImage, PdfPageSize } from \"./pdf-limits\";\nexport { PDF_LIMITS, PDF_TOO_LARGE, pageImageWidth } from \"./pdf-limits\";\n\ntype PdfEngine = {\n openPdf: (data: ArrayBuffer, signal: AbortSignal, workerUrl: string) => Promise<PdfDocumentHandle | null>;\n};\n\nconst isEngine = (value: unknown): value is PdfEngine =>\n typeof value === \"object\" && value !== null && typeof Reflect.get(value, \"openPdf\") === \"function\";\n\n/** Opens a PDF; `null` after an abort. Throws `PDF_TOO_LARGE` past `PDF_LIMITS`, or pdf.js's error for a broken file. */\nexport const openPdfDocument = async (data: Blob | ArrayBuffer, signal: AbortSignal): Promise<PdfDocumentHandle | null> => {\n const size = data instanceof Blob ? data.size : data.byteLength;\n if (size > PDF_LIMITS.maxBytes) throw pdfTooLarge(`PDF is larger than ${PDF_LIMITS.maxBytes} bytes`);\n // pdf.js hands its bytes to the worker, which detaches them: a caller's ArrayBuffer stays theirs as a copy.\n const bytes = data instanceof Blob ? await data.arrayBuffer() : data.slice(0);\n if (signal.aborted) return null;\n // A relative address resolves against this module, where the bundler put the engine file.\n const engine: unknown = await import(/* @vite-ignore */ engineUrl);\n if (!isEngine(engine)) throw new Error(\"The PDF engine could not be loaded\");\n // Closed while the engine loaded: parse nothing.\n if (signal.aborted) return null;\n return engine.openPdf(bytes, signal, workerUrl);\n};\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAAS,MAAM,4CAA4C,QAAQ,IAAI,EAAE,MAAM;AACtF;AACA,OAAO,SAAS,MAAM,iBAAiB,QAAQ,IAAI,EAAE,MAAM;AAC3D,SAAS,UAAU,EAA0B,WAAW,QAAQ,cAAc;AAG9E,SAAS,UAAU,EAAE,aAAa,EAAE,cAAc,QAAQ,cAAc;AAMxE,MAAM,QAAQ,GAAI,KAAc,IAC9B,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,UAAU;;AAEpG;AACA,OAAO,MAAM,eAAe,GAAG,OAAO,IAAwB,EAAE,MAAmB,KAAwC;EACzH,MAAM,IAAI,GAAG,IAAI,YAAY,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU;EAC/D,IAAI,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,WAAW,CAAC,sBAAsB,UAAU,CAAC,QAAQ,QAAQ,CAAC;EACpG;EACA,MAAM,KAAK,GAAG,IAAI,YAAY,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAC7E,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI;EAC/B;EACA,MAAM,MAAe,GAAG,MAAM,OAAO,kBAAmB,SAAS,CAAC;EAClE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;EAC5E;EACA,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI;EAC/B,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC;AACjD,CAAC","ignoreList":[]}
@@ -0,0 +1,31 @@
1
+ /** Shapes and bounds shared by `PdfViewer`, its loader, and the pdf.js engine. */
2
+
3
+ /** A page's size in PDF points at scale 1. */
4
+
5
+ /** One drawn page: an object URL the caller revokes, and its size in pixels. */
6
+
7
+ /**
8
+ * Bounds for one document. Bytes and pages bound parsing work and memory; a larger document falls back to the
9
+ * browser's own viewer. Canvas pixels stay below the size Safari still draws (larger canvases come out blank).
10
+ */
11
+ export const PDF_LIMITS = {
12
+ maxBytes: 100 * 1024 * 1024,
13
+ maxPages: 2000,
14
+ maxCanvasPixels: 16_000_000,
15
+ maxImageWidth: 4096
16
+ };
17
+
18
+ /** The name of the error a document past `PDF_LIMITS` raises; the host shows the browser's viewer instead. */
19
+ export const PDF_TOO_LARGE = "PdfTooLargeError";
20
+ export const pdfTooLarge = message => Object.assign(new Error(message), {
21
+ name: PDF_TOO_LARGE
22
+ });
23
+
24
+ /**
25
+ * Pixel width for a page image shown `displayWidth` CSS pixels wide: display width times the device pixel ratio
26
+ * (at most 2), at least 400 px where the page allows it, at most `PDF_LIMITS.maxImageWidth`, and always small enough
27
+ * that the canvas stays under `PDF_LIMITS.maxCanvasPixels` for the page's height-to-width `ratio`, also for a very
28
+ * tall page. Very deep zoom turns slightly soft, never blank.
29
+ */
30
+ export const pageImageWidth = (displayWidth, pixelRatio, ratio) => Math.max(1, Math.floor(Math.min(Math.max(400, displayWidth * Math.min(Math.max(pixelRatio, 1), 2)), PDF_LIMITS.maxImageWidth, Math.sqrt(PDF_LIMITS.maxCanvasPixels / Math.max(ratio, 0.1)))));
31
+ //# sourceMappingURL=pdf-limits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["content/pdf-limits.ts"],"sourcesContent":["/** Shapes and bounds shared by `PdfViewer`, its loader, and the pdf.js engine. */\n\n/** A page's size in PDF points at scale 1. */\nexport type PdfPageSize = { width: number; height: number };\n\n/** One drawn page: an object URL the caller revokes, and its size in pixels. */\nexport type PdfPageImage = { url: string; width: number; height: number };\n\nexport type PdfDocumentHandle = {\n pages: readonly PdfPageSize[];\n /** Draws one page `widthPx` wide; `null` after an abort. The caller revokes the returned URL. */\n draw: (index: number, widthPx: number, signal: AbortSignal) => Promise<PdfPageImage | null>;\n /**\n * Lays the selectable, searchable text of one page into `container`. Positions are relative to the page; the font\n * follows `--total-scale-factor` (CSS pixels per point) on the container or above, so zoom changes only that value.\n */\n textLayer: (index: number, container: HTMLElement, signal: AbortSignal) => Promise<void>;\n close: () => Promise<void>;\n};\n\n/**\n * Bounds for one document. Bytes and pages bound parsing work and memory; a larger document falls back to the\n * browser's own viewer. Canvas pixels stay below the size Safari still draws (larger canvases come out blank).\n */\nexport const PDF_LIMITS = {\n maxBytes: 100 * 1024 * 1024,\n maxPages: 2000,\n maxCanvasPixels: 16_000_000,\n maxImageWidth: 4096,\n} as const;\n\n/** The name of the error a document past `PDF_LIMITS` raises; the host shows the browser's viewer instead. */\nexport const PDF_TOO_LARGE = \"PdfTooLargeError\";\n\nexport const pdfTooLarge = (message: string): Error => Object.assign(new Error(message), { name: PDF_TOO_LARGE });\n\n/**\n * Pixel width for a page image shown `displayWidth` CSS pixels wide: display width times the device pixel ratio\n * (at most 2), at least 400 px where the page allows it, at most `PDF_LIMITS.maxImageWidth`, and always small enough\n * that the canvas stays under `PDF_LIMITS.maxCanvasPixels` for the page's height-to-width `ratio`, also for a very\n * tall page. Very deep zoom turns slightly soft, never blank.\n */\nexport const pageImageWidth = (displayWidth: number, pixelRatio: number, ratio: number): number =>\n Math.max(\n 1,\n Math.floor(\n Math.min(\n Math.max(400, displayWidth * Math.min(Math.max(pixelRatio, 1), 2)),\n PDF_LIMITS.maxImageWidth,\n Math.sqrt(PDF_LIMITS.maxCanvasPixels / Math.max(ratio, 0.1)),\n ),\n ),\n );\n"],"mappings":"AAAA;;AAEA;;AAGA;;AAeA;AACA;AACA;AACA;AACA,OAAO,MAAM,UAAU,GAAG;EACxB,QAAQ,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;EAC3B,QAAQ,EAAE,IAAI;EACd,eAAe,EAAE,UAAU;EAC3B,aAAa,EAAE;AACjB,CAAU;;AAEV;AACA,OAAO,MAAM,aAAa,GAAG,kBAAkB;AAE/C,OAAO,MAAM,WAAW,GAAI,OAAe,IAAY,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;EAAE,IAAI,EAAE;AAAc,CAAC,CAAC;;AAEjH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAM,cAAc,GAAG,CAAC,YAAoB,EAAE,UAAkB,EAAE,KAAa,KACpF,IAAI,CAAC,GAAG,CACN,CAAC,EACD,IAAI,CAAC,KAAK,CACR,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAClE,UAAU,CAAC,aAAa,EACxB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAC7D,CACF,CACF,CAAC","ignoreList":[]}
@@ -14,7 +14,23 @@ const pdfMessages = i18n.define({
14
14
  pdfPreviewNoViewerDescription: "Your browser cannot show PDFs inside a page. Open the document to view it.",
15
15
  pdfPreviewRendering: "Rendering PDF preview…",
16
16
  previewPdf: "Preview PDF",
17
- renderPdfPreview: "Render a PDF preview to see the final output."
17
+ renderPdfPreview: "Render a PDF preview to see the final output.",
18
+ pdfPage: ({
19
+ number,
20
+ total
21
+ }) => `Page ${number} of ${total}`,
22
+ pdfPageShort: ({
23
+ number,
24
+ total
25
+ }) => `${number} / ${total}`,
26
+ pdfZoom: "Zoom",
27
+ pdfZoomOut: "Zoom out",
28
+ pdfZoomIn: "Zoom in",
29
+ pdfZoomPercent: ({
30
+ value
31
+ }) => `${value}%`,
32
+ pdfFitWidth: "Width",
33
+ pdfFitWidthLabel: "Fit to width"
18
34
  },
19
35
  de: {
20
36
  openPreview: "Vorschau öffnen",
@@ -27,7 +43,23 @@ const pdfMessages = i18n.define({
27
43
  pdfPreviewNoViewerDescription: "Dein Browser kann PDFs nicht innerhalb einer Seite anzeigen. Öffne das Dokument, um es anzusehen.",
28
44
  pdfPreviewRendering: "PDF-Vorschau wird erstellt…",
29
45
  previewPdf: "PDF anzeigen",
30
- renderPdfPreview: "Erzeuge eine PDF-Vorschau, um das Endergebnis zu sehen."
46
+ renderPdfPreview: "Erzeuge eine PDF-Vorschau, um das Endergebnis zu sehen.",
47
+ pdfPage: ({
48
+ number,
49
+ total
50
+ }) => `Seite ${number} von ${total}`,
51
+ pdfPageShort: ({
52
+ number,
53
+ total
54
+ }) => `${number} / ${total}`,
55
+ pdfZoom: "Zoom",
56
+ pdfZoomOut: "Verkleinern",
57
+ pdfZoomIn: "Vergrößern",
58
+ pdfZoomPercent: ({
59
+ value
60
+ }) => `${value} %`,
61
+ pdfFitWidth: "Breite",
62
+ pdfFitWidthLabel: "An die Breite anpassen"
31
63
  }
32
64
  }
33
65
  });
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["content/pdf-messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\nimport { useLocale } from \"../intl/locale\";\n\nconst pdfMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n openPreview: \"Open preview\",\n pdfPreview: \"PDF preview\",\n pdfPreviewHttpError: ({ status }: { status: number }) => `PDF preview failed with HTTP ${status}`,\n pdfPreviewTabBlocked: \"The browser blocked the new tab. Allow pop-ups and try again.\",\n pdfPreviewNoViewer: \"This PDF cannot be shown here\",\n pdfPreviewNoViewerDescription: \"Your browser cannot show PDFs inside a page. Open the document to view it.\",\n pdfPreviewRendering: \"Rendering PDF preview…\",\n previewPdf: \"Preview PDF\",\n renderPdfPreview: \"Render a PDF preview to see the final output.\",\n },\n de: {\n openPreview: \"Vorschau öffnen\",\n pdfPreview: \"PDF-Vorschau\",\n pdfPreviewHttpError: ({ status }) => `PDF-Vorschau ist mit HTTP ${status} fehlgeschlagen`,\n pdfPreviewTabBlocked: \"Der Browser hat den neuen Tab blockiert. Erlaube Pop-ups und versuche es erneut.\",\n pdfPreviewNoViewer: \"Dieses PDF kann hier nicht angezeigt werden\",\n pdfPreviewNoViewerDescription: \"Dein Browser kann PDFs nicht innerhalb einer Seite anzeigen. Öffne das Dokument, um es anzusehen.\",\n pdfPreviewRendering: \"PDF-Vorschau wird erstellt…\",\n previewPdf: \"PDF anzeigen\",\n renderPdfPreview: \"Erzeuge eine PDF-Vorschau, um das Endergebnis zu sehen.\",\n },\n },\n});\n\nexport type PdfMessages = ReturnType<(typeof pdfMessages)[\"resolve\"]>[\"t\"];\n\n/** Resolved from the inherited render locale. */\nexport const usePdfMessages = (): (() => PdfMessages) => {\n const locale = useLocale();\n return () => pdfMessages.resolve([locale()]).t;\n};\n\n/** Imperative UI inherits the document locale when no locale is supplied. */\nexport const resolvePdfMessages = (locale?: string): PdfMessages =>\n pdfMessages.resolve([locale ?? (typeof document === \"undefined\" ? pdfMessages.baseLocale : document.documentElement.lang)]).t;\n\nexport const checkPdfMessages = () => pdfMessages.check();\n"],"mappings":"AAAA,SAAS,IAAI,QAAQ,aAAa;AAClC,SAAS,SAAS,QAAQ,gBAAgB;AAE1C,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;EAC9B,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE;IACR,EAAE,EAAE;MACF,WAAW,EAAE,cAAc;MAC3B,UAAU,EAAE,aAAa;MACzB,mBAAmB,EAAE,CAAC;QAAE;MAA2B,CAAC,KAAK,gCAAgC,MAAM,EAAE;MACjG,oBAAoB,EAAE,+DAA+D;MACrF,kBAAkB,EAAE,+BAA+B;MACnD,6BAA6B,EAAE,4EAA4E;MAC3G,mBAAmB,EAAE,wBAAwB;MAC7C,UAAU,EAAE,aAAa;MACzB,gBAAgB,EAAE;IACpB,CAAC;IACD,EAAE,EAAE;MACF,WAAW,EAAE,iBAAiB;MAC9B,UAAU,EAAE,cAAc;MAC1B,mBAAmB,EAAE,CAAC;QAAE;MAAO,CAAC,KAAK,6BAA6B,MAAM,iBAAiB;MACzF,oBAAoB,EAAE,kFAAkF;MACxG,kBAAkB,EAAE,6CAA6C;MACjE,6BAA6B,EAAE,mGAAmG;MAClI,mBAAmB,EAAE,6BAA6B;MAClD,UAAU,EAAE,cAAc;MAC1B,gBAAgB,EAAE;IACpB;EACF;AACF,CAAC,CAAC;AAIF;AACA,OAAO,MAAM,cAAc,GAAG,MAA2B;EACvD,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;EAC1B,OAAO,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;;AAED;AACA,OAAO,MAAM,kBAAkB,GAAI,MAAe,IAChD,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,OAAO,QAAQ,KAAK,WAAW,GAAG,WAAW,CAAC,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/H,OAAO,MAAM,gBAAgB,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["content/pdf-messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\nimport { useLocale } from \"../intl/locale\";\n\nconst pdfMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n openPreview: \"Open preview\",\n pdfPreview: \"PDF preview\",\n pdfPreviewHttpError: ({ status }: { status: number }) => `PDF preview failed with HTTP ${status}`,\n pdfPreviewTabBlocked: \"The browser blocked the new tab. Allow pop-ups and try again.\",\n pdfPreviewNoViewer: \"This PDF cannot be shown here\",\n pdfPreviewNoViewerDescription: \"Your browser cannot show PDFs inside a page. Open the document to view it.\",\n pdfPreviewRendering: \"Rendering PDF preview…\",\n previewPdf: \"Preview PDF\",\n renderPdfPreview: \"Render a PDF preview to see the final output.\",\n pdfPage: ({ number, total }: { number: number; total: number }) => `Page ${number} of ${total}`,\n pdfPageShort: ({ number, total }: { number: number; total: number }) => `${number} / ${total}`,\n pdfZoom: \"Zoom\",\n pdfZoomOut: \"Zoom out\",\n pdfZoomIn: \"Zoom in\",\n pdfZoomPercent: ({ value }: { value: number }) => `${value}%`,\n pdfFitWidth: \"Width\",\n pdfFitWidthLabel: \"Fit to width\",\n },\n de: {\n openPreview: \"Vorschau öffnen\",\n pdfPreview: \"PDF-Vorschau\",\n pdfPreviewHttpError: ({ status }) => `PDF-Vorschau ist mit HTTP ${status} fehlgeschlagen`,\n pdfPreviewTabBlocked: \"Der Browser hat den neuen Tab blockiert. Erlaube Pop-ups und versuche es erneut.\",\n pdfPreviewNoViewer: \"Dieses PDF kann hier nicht angezeigt werden\",\n pdfPreviewNoViewerDescription: \"Dein Browser kann PDFs nicht innerhalb einer Seite anzeigen. Öffne das Dokument, um es anzusehen.\",\n pdfPreviewRendering: \"PDF-Vorschau wird erstellt…\",\n previewPdf: \"PDF anzeigen\",\n renderPdfPreview: \"Erzeuge eine PDF-Vorschau, um das Endergebnis zu sehen.\",\n pdfPage: ({ number, total }) => `Seite ${number} von ${total}`,\n pdfPageShort: ({ number, total }) => `${number} / ${total}`,\n pdfZoom: \"Zoom\",\n pdfZoomOut: \"Verkleinern\",\n pdfZoomIn: \"Vergrößern\",\n pdfZoomPercent: ({ value }) => `${value} %`,\n pdfFitWidth: \"Breite\",\n pdfFitWidthLabel: \"An die Breite anpassen\",\n },\n },\n});\n\nexport type PdfMessages = ReturnType<(typeof pdfMessages)[\"resolve\"]>[\"t\"];\n\n/** Resolved from the inherited render locale. */\nexport const usePdfMessages = (): (() => PdfMessages) => {\n const locale = useLocale();\n return () => pdfMessages.resolve([locale()]).t;\n};\n\n/** Imperative UI inherits the document locale when no locale is supplied. */\nexport const resolvePdfMessages = (locale?: string): PdfMessages =>\n pdfMessages.resolve([locale ?? (typeof document === \"undefined\" ? pdfMessages.baseLocale : document.documentElement.lang)]).t;\n\nexport const checkPdfMessages = () => pdfMessages.check();\n"],"mappings":"AAAA,SAAS,IAAI,QAAQ,aAAa;AAClC,SAAS,SAAS,QAAQ,gBAAgB;AAE1C,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;EAC9B,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE;IACR,EAAE,EAAE;MACF,WAAW,EAAE,cAAc;MAC3B,UAAU,EAAE,aAAa;MACzB,mBAAmB,EAAE,CAAC;QAAE;MAA2B,CAAC,KAAK,gCAAgC,MAAM,EAAE;MACjG,oBAAoB,EAAE,+DAA+D;MACrF,kBAAkB,EAAE,+BAA+B;MACnD,6BAA6B,EAAE,4EAA4E;MAC3G,mBAAmB,EAAE,wBAAwB;MAC7C,UAAU,EAAE,aAAa;MACzB,gBAAgB,EAAE,+CAA+C;MACjE,OAAO,EAAE,CAAC;QAAE,MAAM;QAAE;MAAyC,CAAC,KAAK,QAAQ,MAAM,OAAO,KAAK,EAAE;MAC/F,YAAY,EAAE,CAAC;QAAE,MAAM;QAAE;MAAyC,CAAC,KAAK,GAAG,MAAM,MAAM,KAAK,EAAE;MAC9F,OAAO,EAAE,MAAM;MACf,UAAU,EAAE,UAAU;MACtB,SAAS,EAAE,SAAS;MACpB,cAAc,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,GAAG,KAAK,GAAG;MAC7D,WAAW,EAAE,OAAO;MACpB,gBAAgB,EAAE;IACpB,CAAC;IACD,EAAE,EAAE;MACF,WAAW,EAAE,iBAAiB;MAC9B,UAAU,EAAE,cAAc;MAC1B,mBAAmB,EAAE,CAAC;QAAE;MAAO,CAAC,KAAK,6BAA6B,MAAM,iBAAiB;MACzF,oBAAoB,EAAE,kFAAkF;MACxG,kBAAkB,EAAE,6CAA6C;MACjE,6BAA6B,EAAE,mGAAmG;MAClI,mBAAmB,EAAE,6BAA6B;MAClD,UAAU,EAAE,cAAc;MAC1B,gBAAgB,EAAE,yDAAyD;MAC3E,OAAO,EAAE,CAAC;QAAE,MAAM;QAAE;MAAM,CAAC,KAAK,SAAS,MAAM,QAAQ,KAAK,EAAE;MAC9D,YAAY,EAAE,CAAC;QAAE,MAAM;QAAE;MAAM,CAAC,KAAK,GAAG,MAAM,MAAM,KAAK,EAAE;MAC3D,OAAO,EAAE,MAAM;MACf,UAAU,EAAE,aAAa;MACzB,SAAS,EAAE,YAAY;MACvB,cAAc,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,GAAG,KAAK,IAAI;MAC3C,WAAW,EAAE,QAAQ;MACrB,gBAAgB,EAAE;IACpB;EACF;AACF,CAAC,CAAC;AAIF;AACA,OAAO,MAAM,cAAc,GAAG,MAA2B;EACvD,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;EAC1B,OAAO,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;;AAED;AACA,OAAO,MAAM,kBAAkB,GAAI,MAAe,IAChD,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,OAAO,QAAQ,KAAK,WAAW,GAAG,WAAW,CAAC,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/H,OAAO,MAAM,gBAAgB,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ import { i18n } from "@k2b/stdlib";
2
+ import { useLocale } from "../intl/locale";
3
+ const thumbnailStripMessages = i18n.define({
4
+ baseLocale: "en",
5
+ messages: {
6
+ en: {
7
+ thumbnailCurrent: "current",
8
+ thumbnailUnsaved: "unsaved changes",
9
+ thumbnailAdd: "Add images"
10
+ },
11
+ de: {
12
+ thumbnailCurrent: "aktuell",
13
+ thumbnailUnsaved: "ungespeicherte Änderungen",
14
+ thumbnailAdd: "Bilder hinzufügen"
15
+ }
16
+ }
17
+ });
18
+ /** Resolved from the inherited render locale. */
19
+ export const useThumbnailStripMessages = () => {
20
+ const locale = useLocale();
21
+ return () => thumbnailStripMessages.resolve([locale()]).t;
22
+ };
23
+ export const checkThumbnailStripMessages = () => thumbnailStripMessages.check();
24
+ //# sourceMappingURL=thumbnail-strip-messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["content/thumbnail-strip-messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\nimport { useLocale } from \"../intl/locale\";\n\nconst thumbnailStripMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n thumbnailCurrent: \"current\",\n thumbnailUnsaved: \"unsaved changes\",\n thumbnailAdd: \"Add images\",\n },\n de: {\n thumbnailCurrent: \"aktuell\",\n thumbnailUnsaved: \"ungespeicherte Änderungen\",\n thumbnailAdd: \"Bilder hinzufügen\",\n },\n },\n});\n\nexport type ThumbnailStripMessages = ReturnType<(typeof thumbnailStripMessages)[\"resolve\"]>[\"t\"];\n\n/** Resolved from the inherited render locale. */\nexport const useThumbnailStripMessages = (): (() => ThumbnailStripMessages) => {\n const locale = useLocale();\n return () => thumbnailStripMessages.resolve([locale()]).t;\n};\n\nexport const checkThumbnailStripMessages = () => thumbnailStripMessages.check();\n"],"mappings":"AAAA,SAAS,IAAI,QAAQ,aAAa;AAClC,SAAS,SAAS,QAAQ,gBAAgB;AAE1C,MAAM,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC;EACzC,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE;IACR,EAAE,EAAE;MACF,gBAAgB,EAAE,SAAS;MAC3B,gBAAgB,EAAE,iBAAiB;MACnC,YAAY,EAAE;IAChB,CAAC;IACD,EAAE,EAAE;MACF,gBAAgB,EAAE,SAAS;MAC3B,gBAAgB,EAAE,2BAA2B;MAC7C,YAAY,EAAE;IAChB;EACF;AACF,CAAC,CAAC;AAIF;AACA,OAAO,MAAM,yBAAyB,GAAG,MAAsC;EAC7E,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;EAC1B,OAAO,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,OAAO,MAAM,2BAA2B,GAAG,MAAM,sBAAsB,CAAC,KAAK,CAAC,CAAC","ignoreList":[]}
@@ -9,13 +9,16 @@ import { createComponent as _$createComponent } from "solid-js/web";
9
9
  var _tmpl$ = ["<input class=\"k2b-control k2b-pin-input__digit\"", " inputmode=\"numeric\" autocomplete=\"off\" pattern=\"[0-9]\" maxlength=\"1\"", "", "", ">"],
10
10
  _tmpl$2 = ["<input type=\"hidden\"", ">"],
11
11
  _tmpl$3 = ["<output", ">", "</output>"],
12
- _tmpl$4 = ["<div class=\"k2b-slider\">", "", "</div>"],
13
- _tmpl$5 = ["<span class=\"k2b-color-input k2b-color-input--compact\">", "<input", " class=\"k2b-color-input__native\" type=\"color\"", "", "></span>"],
14
- _tmpl$6 = ["<span class=\"k2b-color-input__swatch\"", " style=\"", "\"></span>"],
15
- _tmpl$7 = ["<code>", "</code>"],
16
- _tmpl$8 = ["<button type=\"button\" class=\"k2b-color-input__transparent\"", "", "><i class=\"ti ti-grid-dots\" aria-hidden=\"true\"></i></button>"],
17
- _tmpl$9 = ["<div class=\"k2b-color-input\"", ">", "", "<input", " class=\"k2b-color-input__native\" type=\"color\"", "", "></div>"];
12
+ _tmpl$4 = "<i class=\"ti ti-arrow-back-up\" aria-hidden=\"true\"></i>",
13
+ _tmpl$5 = ["<div class=\"k2b-slider\"", ">", "", "</div>"],
14
+ _tmpl$6 = ["<div class=\"k2b-slider__value\"", ">", "", "</div>"],
15
+ _tmpl$7 = ["<span class=\"k2b-color-input k2b-color-input--compact\">", "<input", " class=\"k2b-color-input__native\" type=\"color\"", "", "></span>"],
16
+ _tmpl$8 = ["<span class=\"k2b-color-input__swatch\"", " style=\"", "\"></span>"],
17
+ _tmpl$9 = ["<code>", "</code>"],
18
+ _tmpl$0 = ["<button type=\"button\" class=\"k2b-color-input__transparent\"", "", "><i class=\"ti ti-grid-dots\" aria-hidden=\"true\"></i></button>"],
19
+ _tmpl$1 = ["<div class=\"k2b-color-input\"", ">", "", "<input", " class=\"k2b-color-input__native\" type=\"color\"", "", "></div>"];
18
20
  import { For, Show, splitProps } from "solid-js";
21
+ import { IconButton } from "../actions/Button";
19
22
  import { createFieldMeta, Field, fieldControlAria } from "../internal/field";
20
23
  import { commitFieldValue, resolveMaybeAccessor } from "./field-contract";
21
24
  import { useInputMessages } from "./input-messages";
@@ -126,7 +129,7 @@ export function PinInput(props) {
126
129
  });
127
130
  }
128
131
  export function Slider(props) {
129
- const [local, rest] = splitProps(props, ["aria-describedby", "aria-label", "center", "class", "defaultValue", "description", "error", "id", "label", "onValueChange", "onValueCommit", "required", "showValue", "value", "formatValue"]);
132
+ const [local, rest] = splitProps(props, ["aria-describedby", "aria-label", "center", "class", "defaultValue", "description", "error", "id", "label", "onValueChange", "onValueCommit", "required", "showValue", "valuePlacement", "value", "formatValue"]);
130
133
  const meta = createFieldMeta(local.id);
131
134
  const min = () => Number(rest.min ?? 0);
132
135
  const max = () => Number(rest.max ?? 100);
@@ -138,14 +141,60 @@ export function Slider(props) {
138
141
  };
139
142
  const track = () => {
140
143
  const position = percentage();
144
+ const fill = rest.disabled ? "var(--k2b-text-muted)" : "var(--k2b-action)";
141
145
  if (local.center) {
142
146
  const low = Math.min(50, position);
143
147
  const high = Math.max(50, position);
144
- return `linear-gradient(to right, var(--k2b-surface-muted) 0 ${low}%, var(--k2b-action) ${low}% ${high}%, var(--k2b-surface-muted) ${high}% 100%)`;
148
+ return `linear-gradient(to right, var(--k2b-surface-muted) 0 ${low}%, ${fill} ${low}% ${high}%, var(--k2b-surface-muted) ${high}% 100%)`;
145
149
  }
146
- return `linear-gradient(to right, var(--k2b-action) 0 ${position}%, var(--k2b-surface-muted) ${position}% 100%)`;
150
+ return `linear-gradient(to right, ${fill} 0 ${position}%, var(--k2b-surface-muted) ${position}% 100%)`;
147
151
  };
148
152
  const resetValue = () => local.defaultValue ?? (local.center ? (min() + max()) / 2 : min());
153
+ const changed = () => local.defaultValue !== undefined && value() !== local.defaultValue;
154
+ const inputMessages = useInputMessages();
155
+ // Names the value it returns to, formatted as the slider shows it: "Reset to 100%".
156
+ const resetLabel = () => inputMessages().resetTo({
157
+ value: local.formatValue?.(resetValue()) ?? String(resetValue())
158
+ });
159
+ let input;
160
+ const reset = () => {
161
+ commitFieldValue(local, resetValue());
162
+ // The button hides once the value is back, so focus returns to the slider it belongs to.
163
+ input?.focus();
164
+ };
165
+ const inLabel = () => local.valuePlacement === "label" && !!local.label;
166
+ const Value = () => _$createComponent(Show, {
167
+ get when() {
168
+ return local.showValue ?? true;
169
+ },
170
+ get children() {
171
+ return _$ssr(_tmpl$3, _$ssrAttribute("for", _$escape(meta.controlId, true), false), _$escape(local.formatValue?.(value()) ?? value()));
172
+ }
173
+ });
174
+ const Reset = () => _$createComponent(Show, {
175
+ get when() {
176
+ return local.defaultValue !== undefined;
177
+ },
178
+ get children() {
179
+ return _$createComponent(IconButton, {
180
+ "class": "k2b-slider__reset",
181
+ size: "xs",
182
+ get label() {
183
+ return resetLabel();
184
+ },
185
+ get ["aria-describedby"]() {
186
+ return _$memo(() => !!local.label)() ? meta.labelId : undefined;
187
+ },
188
+ get disabled() {
189
+ return rest.disabled || !changed();
190
+ },
191
+ onClick: reset,
192
+ get children() {
193
+ return _$ssr(_tmpl$4);
194
+ }
195
+ });
196
+ }
197
+ });
149
198
  return _$createComponent(Field, {
150
199
  get ["class"]() {
151
200
  return local.class;
@@ -153,6 +202,9 @@ export function Slider(props) {
153
202
  get label() {
154
203
  return local.label;
155
204
  },
205
+ get labelEnd() {
206
+ return _$memo(() => !!inLabel())() ? _$ssr(_tmpl$6, _$ssrAttribute("data-changed", changed() ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Reset, {})), _$escape(_$createComponent(Value, {}))) : undefined;
207
+ },
156
208
  get description() {
157
209
  return local.description;
158
210
  },
@@ -167,7 +219,7 @@ export function Slider(props) {
167
219
  return rest.disabled;
168
220
  },
169
221
  get children() {
170
- return _$ssr(_tmpl$4, _$ssrElement("input", _$mergeProps(rest, {
222
+ return _$ssr(_tmpl$5, _$ssrAttribute("data-changed", changed() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-value-placement", inLabel() ? "label" : _$escape(undefined, true), false), _$ssrElement("input", _$mergeProps(rest, {
171
223
  get id() {
172
224
  return meta.controlId;
173
225
  },
@@ -182,10 +234,10 @@ export function Slider(props) {
182
234
  }
183
235
  }, () => fieldControlAria(meta, local)), undefined, false), _$escape(_$createComponent(Show, {
184
236
  get when() {
185
- return local.showValue ?? true;
237
+ return !inLabel();
186
238
  },
187
239
  get children() {
188
- return _$ssr(_tmpl$3, _$ssrAttribute("for", _$escape(meta.controlId, true), false), _$escape(local.formatValue?.(value()) ?? value()));
240
+ return [_$createComponent(Value, {}), _$createComponent(Reset, {})];
189
241
  }
190
242
  })));
191
243
  }
@@ -199,7 +251,7 @@ export function ColorInput(props) {
199
251
  const error = () => resolveMaybeAccessor(props.error);
200
252
  const compact = () => props.compact ?? !props.label;
201
253
  let picker;
202
- const control = () => compact() ? _$ssr(_tmpl$5, _$ssrElement("button", _$mergeProps({
254
+ const control = () => compact() ? _$ssr(_tmpl$7, _$ssrElement("button", _$mergeProps({
203
255
  type: "button",
204
256
  "class": "k2b-color-input__swatch",
205
257
  get style() {
@@ -210,20 +262,20 @@ export function ColorInput(props) {
210
262
  get disabled() {
211
263
  return props.disabled;
212
264
  }
213
- }, () => fieldControlAria(meta, props)), undefined, false), _$ssrAttribute("id", _$escape(meta.controlId, true), false), _$ssrAttribute("name", _$escape(props.name, true), false) + _$ssrAttribute("value", _$escape(currentColor(), true), false), _$ssrAttribute("disabled", props.disabled, true)) : _$ssr(_tmpl$9, _$ssrAttribute("data-disabled", props.disabled || isTransparent() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-invalid", error() ? "true" : _$escape(undefined, true), false), _$ssrElement("button", _$mergeProps({
265
+ }, () => fieldControlAria(meta, props)), undefined, false), _$ssrAttribute("id", _$escape(meta.controlId, true), false), _$ssrAttribute("name", _$escape(props.name, true), false) + _$ssrAttribute("value", _$escape(currentColor(), true), false), _$ssrAttribute("disabled", props.disabled, true)) : _$ssr(_tmpl$1, _$ssrAttribute("data-disabled", props.disabled || isTransparent() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-invalid", error() ? "true" : _$escape(undefined, true), false), _$ssrElement("button", _$mergeProps({
214
266
  type: "button",
215
267
  "class": "k2b-color-input__value",
216
268
  get disabled() {
217
269
  return props.disabled || isTransparent();
218
270
  }
219
- }, () => fieldControlAria(meta, props)), [_$ssr(_tmpl$6, _$ssrAttribute("data-transparent", isTransparent() ? "true" : _$escape(undefined, true), false), _$ssrStyle(isTransparent() ? undefined : {
271
+ }, () => fieldControlAria(meta, props)), [_$ssr(_tmpl$8, _$ssrAttribute("data-transparent", isTransparent() ? "true" : _$escape(undefined, true), false), _$ssrStyle(isTransparent() ? undefined : {
220
272
  "background-color": currentColor()
221
- })), _$ssr(_tmpl$7, isTransparent() ? "transparent" : _$escape(currentColor().toUpperCase()))], false), _$escape(_$createComponent(Show, {
273
+ })), _$ssr(_tmpl$9, isTransparent() ? "transparent" : _$escape(currentColor().toUpperCase()))], false), _$escape(_$createComponent(Show, {
222
274
  get when() {
223
275
  return props.transparent;
224
276
  },
225
277
  get children() {
226
- return _$ssr(_tmpl$8, _$ssrAttribute("aria-label", isTransparent() ? _$escape(inputMessages().useColor, true) : _$escape(inputMessages().useTransparent, true), false) + _$ssrAttribute("aria-pressed", _$escape(isTransparent(), true), false), _$ssrAttribute("disabled", props.disabled, true));
278
+ return _$ssr(_tmpl$0, _$ssrAttribute("aria-label", isTransparent() ? _$escape(inputMessages().useColor, true) : _$escape(inputMessages().useTransparent, true), false) + _$ssrAttribute("aria-pressed", _$escape(isTransparent(), true), false), _$ssrAttribute("disabled", props.disabled, true));
227
279
  }
228
280
  })), _$ssrAttribute("id", _$escape(meta.controlId, true), false), _$ssrAttribute("name", _$escape(props.name, true), false) + _$ssrAttribute("value", _$escape(currentColor(), true), false), _$ssrAttribute("disabled", props.disabled || isTransparent(), true));
229
281
  return _$createComponent(Field, {
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["inputs/ChoiceInputs.tsx"],"sourcesContent":["import { For, type JSX, Show, splitProps } from \"solid-js\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport type { FieldProps, MaybeAccessor, ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\nimport { useInputMessages } from \"./input-messages\";\n\nexport type PinInputProps = ValueFieldProps<string> & {\n length?: number;\n name?: string;\n stretch?: boolean;\n password?: boolean;\n readOnly?: boolean;\n onSubmit?: () => void;\n};\n\nexport function PinInput(props: PinInputProps): JSX.Element {\n const inputMessages = useInputMessages();\n const meta = createFieldMeta(props.id);\n const length = () => Math.max(1, props.length ?? 6);\n let inputs: HTMLInputElement[] = [];\n const digits = () => (resolveMaybeAccessor(props.value) ?? \"\").replace(/\\D/g, \"\").slice(0, length());\n const error = () => resolveMaybeAccessor(props.error);\n const emit = (value: string) => {\n props.onValueChange?.(value);\n if (value.length === length()) props.onValueCommit?.(value);\n };\n\n const updateDigit = (index: number, input: string) => {\n if (props.disabled || props.readOnly) return;\n const digit = input.replace(/\\D/g, \"\").slice(-1);\n const current = digits();\n emit(`${current.slice(0, index)}${digit}${current.slice(index + 1)}`);\n if (digit && index < length() - 1) {\n inputs[index + 1]?.focus();\n inputs[index + 1]?.select();\n }\n };\n\n const handleKeyDown = (index: number, event: KeyboardEvent) => {\n if (props.disabled || props.readOnly) return;\n if (event.key === \"Enter\" && props.onSubmit && !event.shiftKey && !event.metaKey) {\n event.preventDefault();\n props.onSubmit();\n } else if (event.key === \"ArrowLeft\" && index > 0) {\n event.preventDefault();\n inputs[index - 1]?.focus();\n inputs[index - 1]?.select();\n } else if (event.key === \"ArrowRight\" && index < length() - 1) {\n event.preventDefault();\n inputs[index + 1]?.focus();\n inputs[index + 1]?.select();\n } else if (event.key === \"Backspace\" && !digits()[index] && index > 0) {\n event.preventDefault();\n const current = digits();\n emit(`${current.slice(0, index - 1)}${current.slice(index)}`);\n inputs[index - 1]?.focus();\n inputs[index - 1]?.select();\n }\n };\n\n const handlePaste = (event: ClipboardEvent) => {\n if (props.disabled || props.readOnly) return;\n const pasted = event.clipboardData?.getData(\"text\").replace(/\\D/g, \"\");\n if (!pasted) return;\n event.preventDefault();\n const focused = inputs.indexOf(document.activeElement as HTMLInputElement);\n const start = focused >= 0 ? focused : 0;\n const insert = pasted.slice(0, length() - start);\n const current = digits();\n emit(`${current.slice(0, start)}${insert}${current.slice(start + insert.length)}`.slice(0, length()));\n const next = Math.min(start + insert.length, length() - 1);\n inputs[next]?.focus();\n inputs[next]?.select();\n };\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n labelFor={false}\n required={props.required}\n disabled={props.disabled}\n >\n <div\n class=\"k2b-pin-input\"\n id={meta.controlId}\n data-stretch={props.stretch ? \"true\" : undefined}\n role=\"group\"\n {...fieldControlAria(meta, props)}\n onPaste={handlePaste}\n >\n <For each={Array.from({ length: length() })}>\n {(_, index) => (\n <input\n ref={(element) => {\n inputs[index()] = element;\n }}\n class=\"k2b-control k2b-pin-input__digit\"\n data-filled={digits()[index()] ? \"true\" : undefined}\n type={props.password ? \"password\" : \"text\"}\n inputmode=\"numeric\"\n autocomplete=\"off\"\n pattern=\"[0-9]\"\n maxlength={1}\n value={digits()[index()] ?? \"\"}\n required={props.required}\n disabled={props.disabled}\n readOnly={props.readOnly}\n aria-label={inputMessages().pinDigit({ index: index() + 1, total: length() })}\n onInput={(event) => updateDigit(index(), event.currentTarget.value)}\n onKeyDown={(event) => handleKeyDown(index(), event)}\n onFocus={(event) => event.currentTarget.select()}\n />\n )}\n </For>\n </div>\n <Show when={props.name}>{(name) => <input type=\"hidden\" name={name()} value={digits()} />}</Show>\n </Field>\n );\n}\n\nexport type SliderProps = FieldProps &\n Omit<JSX.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"value\" | \"onInput\" | \"onChange\" | keyof FieldProps> &\n ValueFieldProps<number> & {\n value: MaybeAccessor<number>;\n formatValue?: (value: number) => string;\n showValue?: boolean;\n center?: boolean;\n defaultValue?: number;\n };\n\nexport function Slider(props: SliderProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"aria-describedby\",\n \"aria-label\",\n \"center\",\n \"class\",\n \"defaultValue\",\n \"description\",\n \"error\",\n \"id\",\n \"label\",\n \"onValueChange\",\n \"onValueCommit\",\n \"required\",\n \"showValue\",\n \"value\",\n \"formatValue\",\n ]);\n const meta = createFieldMeta(local.id);\n const min = () => Number(rest.min ?? 0);\n const max = () => Number(rest.max ?? 100);\n const value = () => resolveMaybeAccessor(local.value) ?? min();\n const error = () => resolveMaybeAccessor(local.error);\n const percentage = () => {\n const span = max() - min();\n return span <= 0 ? 0 : Math.min(100, Math.max(0, ((value() - min()) / span) * 100));\n };\n const track = () => {\n const position = percentage();\n if (local.center) {\n const low = Math.min(50, position);\n const high = Math.max(50, position);\n return `linear-gradient(to right, var(--k2b-surface-muted) 0 ${low}%, var(--k2b-action) ${low}% ${high}%, var(--k2b-surface-muted) ${high}% 100%)`;\n }\n return `linear-gradient(to right, var(--k2b-action) 0 ${position}%, var(--k2b-surface-muted) ${position}% 100%)`;\n };\n const resetValue = () => local.defaultValue ?? (local.center ? (min() + max()) / 2 : min());\n\n return (\n <Field\n class={local.class}\n label={local.label}\n description={local.description}\n error={error()}\n meta={meta}\n required={local.required}\n disabled={rest.disabled}\n >\n <div class=\"k2b-slider\">\n <input\n {...rest}\n id={meta.controlId}\n type=\"range\"\n value={value()}\n style={{ background: track() }}\n {...fieldControlAria(meta, local)}\n onInput={(event) => local.onValueChange?.(event.currentTarget.valueAsNumber)}\n onChange={(event) => local.onValueCommit?.(event.currentTarget.valueAsNumber)}\n onDblClick={() => {\n const next = resetValue();\n commitFieldValue(local, next);\n }}\n />\n <Show when={local.showValue ?? true}>\n <output for={meta.controlId}>{local.formatValue?.(value()) ?? value()}</output>\n </Show>\n </div>\n </Field>\n );\n}\n\nexport type ColorInputProps = ValueFieldProps<string> & {\n name?: string;\n compact?: boolean;\n transparent?: boolean;\n transparentValue?: MaybeAccessor<boolean>;\n onTransparentValueChange?: (value: boolean) => void;\n};\n\nexport function ColorInput(props: ColorInputProps): JSX.Element {\n const inputMessages = useInputMessages();\n const meta = createFieldMeta(props.id);\n const currentColor = () => resolveMaybeAccessor(props.value) || \"#3b82f6\";\n const isTransparent = () => resolveMaybeAccessor(props.transparentValue) ?? false;\n const error = () => resolveMaybeAccessor(props.error);\n const compact = () => props.compact ?? !props.label;\n let picker: HTMLInputElement | undefined;\n\n const control = () =>\n compact() ? (\n <span class=\"k2b-color-input k2b-color-input--compact\">\n <button\n type=\"button\"\n class=\"k2b-color-input__swatch\"\n style={{ \"background-color\": currentColor() }}\n disabled={props.disabled}\n {...fieldControlAria(meta, props)}\n onClick={() => picker?.click()}\n />\n <input\n ref={picker}\n id={meta.controlId}\n class=\"k2b-color-input__native\"\n type=\"color\"\n name={props.name}\n value={currentColor()}\n disabled={props.disabled}\n onInput={(event) => props.onValueChange?.(event.currentTarget.value)}\n onChange={(event) => props.onValueCommit?.(event.currentTarget.value)}\n />\n </span>\n ) : (\n <div\n class=\"k2b-color-input\"\n data-disabled={props.disabled || isTransparent() ? \"true\" : undefined}\n data-invalid={error() ? \"true\" : undefined}\n >\n <button\n type=\"button\"\n class=\"k2b-color-input__value\"\n disabled={props.disabled || isTransparent()}\n {...fieldControlAria(meta, props)}\n onClick={() => picker?.click()}\n >\n <span\n class=\"k2b-color-input__swatch\"\n data-transparent={isTransparent() ? \"true\" : undefined}\n style={isTransparent() ? undefined : { \"background-color\": currentColor() }}\n />\n <code>{isTransparent() ? \"transparent\" : currentColor().toUpperCase()}</code>\n </button>\n <Show when={props.transparent}>\n <button\n type=\"button\"\n class=\"k2b-color-input__transparent\"\n aria-label={isTransparent() ? inputMessages().useColor : inputMessages().useTransparent}\n aria-pressed={isTransparent()}\n disabled={props.disabled}\n onClick={() => props.onTransparentValueChange?.(!isTransparent())}\n >\n <i class=\"ti ti-grid-dots\" aria-hidden=\"true\" />\n </button>\n </Show>\n <input\n ref={picker}\n id={meta.controlId}\n class=\"k2b-color-input__native\"\n type=\"color\"\n name={props.name}\n value={currentColor()}\n disabled={props.disabled || isTransparent()}\n onInput={(event) => props.onValueChange?.(event.currentTarget.value)}\n onChange={(event) => props.onValueCommit?.(event.currentTarget.value)}\n />\n </div>\n );\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n required={props.required}\n disabled={props.disabled}\n >\n {control()}\n </Field>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["inputs/ChoiceInputs.tsx"],"sourcesContent":["import { For, type JSX, Show, splitProps } from \"solid-js\";\nimport { IconButton } from \"../actions/Button\";\nimport { createFieldMeta, Field, fieldControlAria } from \"../internal/field\";\nimport type { FieldProps, MaybeAccessor, ValueFieldProps } from \"./field-contract\";\nimport { commitFieldValue, resolveMaybeAccessor } from \"./field-contract\";\nimport { useInputMessages } from \"./input-messages\";\n\nexport type PinInputProps = ValueFieldProps<string> & {\n length?: number;\n name?: string;\n stretch?: boolean;\n password?: boolean;\n readOnly?: boolean;\n onSubmit?: () => void;\n};\n\nexport function PinInput(props: PinInputProps): JSX.Element {\n const inputMessages = useInputMessages();\n const meta = createFieldMeta(props.id);\n const length = () => Math.max(1, props.length ?? 6);\n let inputs: HTMLInputElement[] = [];\n const digits = () => (resolveMaybeAccessor(props.value) ?? \"\").replace(/\\D/g, \"\").slice(0, length());\n const error = () => resolveMaybeAccessor(props.error);\n const emit = (value: string) => {\n props.onValueChange?.(value);\n if (value.length === length()) props.onValueCommit?.(value);\n };\n\n const updateDigit = (index: number, input: string) => {\n if (props.disabled || props.readOnly) return;\n const digit = input.replace(/\\D/g, \"\").slice(-1);\n const current = digits();\n emit(`${current.slice(0, index)}${digit}${current.slice(index + 1)}`);\n if (digit && index < length() - 1) {\n inputs[index + 1]?.focus();\n inputs[index + 1]?.select();\n }\n };\n\n const handleKeyDown = (index: number, event: KeyboardEvent) => {\n if (props.disabled || props.readOnly) return;\n if (event.key === \"Enter\" && props.onSubmit && !event.shiftKey && !event.metaKey) {\n event.preventDefault();\n props.onSubmit();\n } else if (event.key === \"ArrowLeft\" && index > 0) {\n event.preventDefault();\n inputs[index - 1]?.focus();\n inputs[index - 1]?.select();\n } else if (event.key === \"ArrowRight\" && index < length() - 1) {\n event.preventDefault();\n inputs[index + 1]?.focus();\n inputs[index + 1]?.select();\n } else if (event.key === \"Backspace\" && !digits()[index] && index > 0) {\n event.preventDefault();\n const current = digits();\n emit(`${current.slice(0, index - 1)}${current.slice(index)}`);\n inputs[index - 1]?.focus();\n inputs[index - 1]?.select();\n }\n };\n\n const handlePaste = (event: ClipboardEvent) => {\n if (props.disabled || props.readOnly) return;\n const pasted = event.clipboardData?.getData(\"text\").replace(/\\D/g, \"\");\n if (!pasted) return;\n event.preventDefault();\n const focused = inputs.indexOf(document.activeElement as HTMLInputElement);\n const start = focused >= 0 ? focused : 0;\n const insert = pasted.slice(0, length() - start);\n const current = digits();\n emit(`${current.slice(0, start)}${insert}${current.slice(start + insert.length)}`.slice(0, length()));\n const next = Math.min(start + insert.length, length() - 1);\n inputs[next]?.focus();\n inputs[next]?.select();\n };\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n labelFor={false}\n required={props.required}\n disabled={props.disabled}\n >\n <div\n class=\"k2b-pin-input\"\n id={meta.controlId}\n data-stretch={props.stretch ? \"true\" : undefined}\n role=\"group\"\n {...fieldControlAria(meta, props)}\n onPaste={handlePaste}\n >\n <For each={Array.from({ length: length() })}>\n {(_, index) => (\n <input\n ref={(element) => {\n inputs[index()] = element;\n }}\n class=\"k2b-control k2b-pin-input__digit\"\n data-filled={digits()[index()] ? \"true\" : undefined}\n type={props.password ? \"password\" : \"text\"}\n inputmode=\"numeric\"\n autocomplete=\"off\"\n pattern=\"[0-9]\"\n maxlength={1}\n value={digits()[index()] ?? \"\"}\n required={props.required}\n disabled={props.disabled}\n readOnly={props.readOnly}\n aria-label={inputMessages().pinDigit({ index: index() + 1, total: length() })}\n onInput={(event) => updateDigit(index(), event.currentTarget.value)}\n onKeyDown={(event) => handleKeyDown(index(), event)}\n onFocus={(event) => event.currentTarget.select()}\n />\n )}\n </For>\n </div>\n <Show when={props.name}>{(name) => <input type=\"hidden\" name={name()} value={digits()} />}</Show>\n </Field>\n );\n}\n\nexport type SliderProps = FieldProps &\n Omit<JSX.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"value\" | \"onInput\" | \"onChange\" | keyof FieldProps> &\n ValueFieldProps<number> & {\n value: MaybeAccessor<number>;\n formatValue?: (value: number) => string;\n showValue?: boolean;\n /** Place the value and reset beside the label. Without a label, they stay beside the track. */\n valuePlacement?: \"control\" | \"label\";\n center?: boolean;\n /**\n * The value the setting starts from. With it, a changed value shows in the accent color and a reset button\n * appears in a slot the slider always keeps, so nothing moves. Double-click resets too.\n */\n defaultValue?: number;\n };\n\nexport function Slider(props: SliderProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"aria-describedby\",\n \"aria-label\",\n \"center\",\n \"class\",\n \"defaultValue\",\n \"description\",\n \"error\",\n \"id\",\n \"label\",\n \"onValueChange\",\n \"onValueCommit\",\n \"required\",\n \"showValue\",\n \"valuePlacement\",\n \"value\",\n \"formatValue\",\n ]);\n const meta = createFieldMeta(local.id);\n const min = () => Number(rest.min ?? 0);\n const max = () => Number(rest.max ?? 100);\n const value = () => resolveMaybeAccessor(local.value) ?? min();\n const error = () => resolveMaybeAccessor(local.error);\n const percentage = () => {\n const span = max() - min();\n return span <= 0 ? 0 : Math.min(100, Math.max(0, ((value() - min()) / span) * 100));\n };\n const track = () => {\n const position = percentage();\n const fill = rest.disabled ? \"var(--k2b-text-muted)\" : \"var(--k2b-action)\";\n if (local.center) {\n const low = Math.min(50, position);\n const high = Math.max(50, position);\n return `linear-gradient(to right, var(--k2b-surface-muted) 0 ${low}%, ${fill} ${low}% ${high}%, var(--k2b-surface-muted) ${high}% 100%)`;\n }\n return `linear-gradient(to right, ${fill} 0 ${position}%, var(--k2b-surface-muted) ${position}% 100%)`;\n };\n const resetValue = () => local.defaultValue ?? (local.center ? (min() + max()) / 2 : min());\n const changed = () => local.defaultValue !== undefined && value() !== local.defaultValue;\n const inputMessages = useInputMessages();\n // Names the value it returns to, formatted as the slider shows it: \"Reset to 100%\".\n const resetLabel = () => inputMessages().resetTo({ value: local.formatValue?.(resetValue()) ?? String(resetValue()) });\n let input: HTMLInputElement | undefined;\n const reset = () => {\n commitFieldValue(local, resetValue());\n // The button hides once the value is back, so focus returns to the slider it belongs to.\n input?.focus();\n };\n const inLabel = () => local.valuePlacement === \"label\" && !!local.label;\n const Value = () => (\n <Show when={local.showValue ?? true}>\n <output for={meta.controlId}>{local.formatValue?.(value()) ?? value()}</output>\n </Show>\n );\n const Reset = () => (\n <Show when={local.defaultValue !== undefined}>\n <IconButton\n class=\"k2b-slider__reset\"\n size=\"xs\"\n label={resetLabel()}\n aria-describedby={local.label ? meta.labelId : undefined}\n disabled={rest.disabled || !changed()}\n onClick={reset}\n >\n <i class=\"ti ti-arrow-back-up\" aria-hidden=\"true\" />\n </IconButton>\n </Show>\n );\n\n return (\n <Field\n class={local.class}\n label={local.label}\n labelEnd={\n inLabel() ? (\n <div class=\"k2b-slider__value\" data-changed={changed() ? \"true\" : undefined}>\n <Reset />\n <Value />\n </div>\n ) : undefined\n }\n description={local.description}\n error={error()}\n meta={meta}\n required={local.required}\n disabled={rest.disabled}\n >\n <div class=\"k2b-slider\" data-changed={changed() ? \"true\" : undefined} data-value-placement={inLabel() ? \"label\" : undefined}>\n <input\n {...rest}\n ref={input}\n id={meta.controlId}\n type=\"range\"\n value={value()}\n style={{ background: track() }}\n {...fieldControlAria(meta, local)}\n onInput={(event) => local.onValueChange?.(event.currentTarget.valueAsNumber)}\n onChange={(event) => local.onValueCommit?.(event.currentTarget.valueAsNumber)}\n onDblClick={() => {\n const next = resetValue();\n commitFieldValue(local, next);\n }}\n />\n <Show when={!inLabel()}>\n <Value />\n <Reset />\n </Show>\n </div>\n </Field>\n );\n}\n\nexport type ColorInputProps = ValueFieldProps<string> & {\n name?: string;\n compact?: boolean;\n transparent?: boolean;\n transparentValue?: MaybeAccessor<boolean>;\n onTransparentValueChange?: (value: boolean) => void;\n};\n\nexport function ColorInput(props: ColorInputProps): JSX.Element {\n const inputMessages = useInputMessages();\n const meta = createFieldMeta(props.id);\n const currentColor = () => resolveMaybeAccessor(props.value) || \"#3b82f6\";\n const isTransparent = () => resolveMaybeAccessor(props.transparentValue) ?? false;\n const error = () => resolveMaybeAccessor(props.error);\n const compact = () => props.compact ?? !props.label;\n let picker: HTMLInputElement | undefined;\n\n const control = () =>\n compact() ? (\n <span class=\"k2b-color-input k2b-color-input--compact\">\n <button\n type=\"button\"\n class=\"k2b-color-input__swatch\"\n style={{ \"background-color\": currentColor() }}\n disabled={props.disabled}\n {...fieldControlAria(meta, props)}\n onClick={() => picker?.click()}\n />\n <input\n ref={picker}\n id={meta.controlId}\n class=\"k2b-color-input__native\"\n type=\"color\"\n name={props.name}\n value={currentColor()}\n disabled={props.disabled}\n onInput={(event) => props.onValueChange?.(event.currentTarget.value)}\n onChange={(event) => props.onValueCommit?.(event.currentTarget.value)}\n />\n </span>\n ) : (\n <div\n class=\"k2b-color-input\"\n data-disabled={props.disabled || isTransparent() ? \"true\" : undefined}\n data-invalid={error() ? \"true\" : undefined}\n >\n <button\n type=\"button\"\n class=\"k2b-color-input__value\"\n disabled={props.disabled || isTransparent()}\n {...fieldControlAria(meta, props)}\n onClick={() => picker?.click()}\n >\n <span\n class=\"k2b-color-input__swatch\"\n data-transparent={isTransparent() ? \"true\" : undefined}\n style={isTransparent() ? undefined : { \"background-color\": currentColor() }}\n />\n <code>{isTransparent() ? \"transparent\" : currentColor().toUpperCase()}</code>\n </button>\n <Show when={props.transparent}>\n <button\n type=\"button\"\n class=\"k2b-color-input__transparent\"\n aria-label={isTransparent() ? inputMessages().useColor : inputMessages().useTransparent}\n aria-pressed={isTransparent()}\n disabled={props.disabled}\n onClick={() => props.onTransparentValueChange?.(!isTransparent())}\n >\n <i class=\"ti ti-grid-dots\" aria-hidden=\"true\" />\n </button>\n </Show>\n <input\n ref={picker}\n id={meta.controlId}\n class=\"k2b-color-input__native\"\n type=\"color\"\n name={props.name}\n value={currentColor()}\n disabled={props.disabled || isTransparent()}\n onInput={(event) => props.onValueChange?.(event.currentTarget.value)}\n onChange={(event) => props.onValueCommit?.(event.currentTarget.value)}\n />\n </div>\n );\n\n return (\n <Field\n class={props.class}\n label={props.label}\n description={props.description}\n error={error()}\n meta={meta}\n required={props.required}\n disabled={props.disabled}\n >\n {control()}\n </Field>\n );\n}\n"],"mappings":"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","ignoreList":[]}