@k2b/ui 0.2.0 → 0.3.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 (366) hide show
  1. package/dist/browser/actions/Button.js +11 -2
  2. package/dist/browser/actions/Button.js.map +1 -1
  3. package/dist/browser/actions/Disclosure.js +11 -8
  4. package/dist/browser/actions/Disclosure.js.map +1 -1
  5. package/dist/browser/actions/Dropdown.js +4 -1
  6. package/dist/browser/actions/Dropdown.js.map +1 -1
  7. package/dist/browser/actions/FilterChip.js +16 -2
  8. package/dist/browser/actions/FilterChip.js.map +1 -1
  9. package/dist/browser/actions/SplitButton.js +69 -22
  10. package/dist/browser/actions/SplitButton.js.map +1 -1
  11. package/dist/browser/actions/SpotlightSearch.js +3 -7
  12. package/dist/browser/actions/SpotlightSearch.js.map +1 -1
  13. package/dist/browser/actions/Tabs.js +132 -47
  14. package/dist/browser/actions/Tabs.js.map +1 -1
  15. package/dist/browser/actions/index.js +1 -1
  16. package/dist/browser/actions/index.js.map +1 -1
  17. package/dist/browser/chat/ChatComposer.js +751 -423
  18. package/dist/browser/chat/ChatComposer.js.map +1 -1
  19. package/dist/browser/chat/ChatContextPopup.js +123 -0
  20. package/dist/browser/chat/ChatContextPopup.js.map +1 -0
  21. package/dist/browser/chat/ChatPrimitives.js +141 -78
  22. package/dist/browser/chat/ChatPrimitives.js.map +1 -1
  23. package/dist/browser/chat/ChatTasks.js +112 -0
  24. package/dist/browser/chat/ChatTasks.js.map +1 -0
  25. package/dist/browser/chat/ChatTimeline.js +31 -14
  26. package/dist/browser/chat/ChatTimeline.js.map +1 -1
  27. package/dist/browser/chat/chat-behavior.js +0 -5
  28. package/dist/browser/chat/chat-behavior.js.map +1 -1
  29. package/dist/browser/chat/composer-document.js +55 -0
  30. package/dist/browser/chat/composer-document.js.map +1 -0
  31. package/dist/browser/chat/index.js +6 -1
  32. package/dist/browser/chat/index.js.map +1 -1
  33. package/dist/browser/chat/types.js.map +1 -1
  34. package/dist/browser/content/Chart.js +148 -239
  35. package/dist/browser/content/Chart.js.map +1 -1
  36. package/dist/browser/content/ChartExplorer.js +324 -0
  37. package/dist/browser/content/ChartExplorer.js.map +1 -0
  38. package/dist/browser/content/ChartExplorerControls.js +153 -0
  39. package/dist/browser/content/ChartExplorerControls.js.map +1 -0
  40. package/dist/browser/content/ChartFilterControls.js +200 -0
  41. package/dist/browser/content/ChartFilterControls.js.map +1 -0
  42. package/dist/browser/content/ChartSnapshotView.js +113 -0
  43. package/dist/browser/content/ChartSnapshotView.js.map +1 -0
  44. package/dist/browser/content/DataTable.js +48 -32
  45. package/dist/browser/content/DataTable.js.map +1 -1
  46. package/dist/browser/content/FileBrowser.js +3 -0
  47. package/dist/browser/content/FileBrowser.js.map +1 -1
  48. package/dist/browser/content/FileGrid.js +93 -0
  49. package/dist/browser/content/FileGrid.js.map +1 -0
  50. package/dist/browser/content/FileTree.js +2 -2
  51. package/dist/browser/content/FileTree.js.map +1 -1
  52. package/dist/browser/content/FileView.js +507 -162
  53. package/dist/browser/content/FileView.js.map +1 -1
  54. package/dist/browser/content/MarkdownView.js +6 -0
  55. package/dist/browser/content/MarkdownView.js.map +1 -1
  56. package/dist/browser/content/PdfPreview.js +107 -90
  57. package/dist/browser/content/PdfPreview.js.map +1 -1
  58. package/dist/browser/content/chart-cursor.js +33 -0
  59. package/dist/browser/content/chart-cursor.js.map +1 -0
  60. package/dist/browser/content/chart-explorer.js +147 -0
  61. package/dist/browser/content/chart-explorer.js.map +1 -0
  62. package/dist/browser/content/chart-inspection.js +447 -0
  63. package/dist/browser/content/chart-inspection.js.map +1 -0
  64. package/dist/browser/content/chart-line-gaps.js +53 -0
  65. package/dist/browser/content/chart-line-gaps.js.map +1 -0
  66. package/dist/browser/content/chart-map-viewport.js +5 -1
  67. package/dist/browser/content/chart-map-viewport.js.map +1 -1
  68. package/dist/browser/content/chart-snapshot.js +63 -0
  69. package/dist/browser/content/chart-snapshot.js.map +1 -0
  70. package/dist/browser/content/chart-state-timeline.js +32 -4
  71. package/dist/browser/content/chart-state-timeline.js.map +1 -1
  72. package/dist/browser/content/chart-svg.js +54 -0
  73. package/dist/browser/content/chart-svg.js.map +1 -0
  74. package/dist/browser/content/collection-selection.js +109 -0
  75. package/dist/browser/content/collection-selection.js.map +1 -0
  76. package/dist/browser/content/delimited-preferences.js +21 -0
  77. package/dist/browser/content/delimited-preferences.js.map +1 -0
  78. package/dist/browser/content/file-tree.js.map +1 -1
  79. package/dist/browser/content/file-view-preview.js +11 -7
  80. package/dist/browser/content/file-view-preview.js.map +1 -1
  81. package/dist/browser/content/index.js +9 -0
  82. package/dist/browser/content/index.js.map +1 -1
  83. package/dist/browser/feedback/InlineGuidance.js +17 -3
  84. package/dist/browser/feedback/InlineGuidance.js.map +1 -1
  85. package/dist/browser/feedback/dialog-core.js +81 -7
  86. package/dist/browser/feedback/dialog-core.js.map +1 -1
  87. package/dist/browser/feedback/prompts.js +6 -0
  88. package/dist/browser/feedback/prompts.js.map +1 -1
  89. package/dist/browser/feedback/toast.js +29 -6
  90. package/dist/browser/feedback/toast.js.map +1 -1
  91. package/dist/browser/inputs/SelectChip.js +3 -2
  92. package/dist/browser/inputs/SelectChip.js.map +1 -1
  93. package/dist/browser/inputs/TextInput.js +7 -1
  94. package/dist/browser/inputs/TextInput.js.map +1 -1
  95. package/dist/browser/inputs/markdown/MarkdownEditor.js +61 -37
  96. package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
  97. package/dist/browser/intl/Format.js +89 -16
  98. package/dist/browser/intl/Format.js.map +1 -1
  99. package/dist/browser/intl/index.js.map +1 -1
  100. package/dist/browser/intl/messages.js +130 -2
  101. package/dist/browser/intl/messages.js.map +1 -1
  102. package/dist/browser/layout/AppWorkspace.js +712 -624
  103. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  104. package/dist/browser/layout/BottomSheet.js +95 -0
  105. package/dist/browser/layout/BottomSheet.js.map +1 -0
  106. package/dist/browser/layout/DetailPanel.js +56 -44
  107. package/dist/browser/layout/DetailPanel.js.map +1 -1
  108. package/dist/browser/layout/Navigation.js +278 -0
  109. package/dist/browser/layout/Navigation.js.map +1 -0
  110. package/dist/browser/layout/PanelDialog.js +219 -71
  111. package/dist/browser/layout/PanelDialog.js.map +1 -1
  112. package/dist/browser/layout/ScrollArea.js +21 -1
  113. package/dist/browser/layout/ScrollArea.js.map +1 -1
  114. package/dist/browser/layout/Settings.js.map +1 -1
  115. package/dist/browser/layout/SidebarItemPreview.js +183 -0
  116. package/dist/browser/layout/SidebarItemPreview.js.map +1 -0
  117. package/dist/browser/layout/app-workspace-controller.js +3 -0
  118. package/dist/browser/layout/app-workspace-controller.js.map +1 -1
  119. package/dist/browser/layout/index.js +3 -0
  120. package/dist/browser/layout/index.js.map +1 -1
  121. package/dist/browser/layout/navigation-model.js +23 -0
  122. package/dist/browser/layout/navigation-model.js.map +1 -0
  123. package/dist/browser/layout/scroll-fade.js +100 -0
  124. package/dist/browser/layout/scroll-fade.js.map +1 -0
  125. package/dist/browser/surfaces/DescriptionList.js.map +1 -1
  126. package/dist/browser/surfaces/StatusBadge.js +2 -1
  127. package/dist/browser/surfaces/StatusBadge.js.map +1 -1
  128. package/dist/fonts/ibm-plex-mono-cyrillic-400-italic-4aded3f2f2a7d27d.woff2 +0 -0
  129. package/dist/fonts/ibm-plex-mono-cyrillic-400-normal-7635422bd10ddbbc.woff2 +0 -0
  130. package/dist/fonts/ibm-plex-mono-cyrillic-500-normal-1d89462e86cb8e87.woff2 +0 -0
  131. package/dist/fonts/ibm-plex-mono-cyrillic-600-normal-2b05a8695c7f9f4a.woff2 +0 -0
  132. package/dist/fonts/ibm-plex-mono-cyrillic-ext-400-italic-a0b3b8cbe5a516e7.woff2 +0 -0
  133. package/dist/fonts/ibm-plex-mono-cyrillic-ext-400-normal-f8c22ec1804bd696.woff2 +0 -0
  134. package/dist/fonts/ibm-plex-mono-cyrillic-ext-500-normal-3febe5c7f22e4b07.woff2 +0 -0
  135. package/dist/fonts/ibm-plex-mono-cyrillic-ext-600-normal-83109cdd4f8665b4.woff2 +0 -0
  136. package/dist/fonts/ibm-plex-mono-latin-400-italic-0840095faae86403.woff2 +0 -0
  137. package/dist/fonts/ibm-plex-mono-latin-400-normal-08949f728dc52d52.woff2 +0 -0
  138. package/dist/fonts/ibm-plex-mono-latin-500-normal-01d285447409c8a5.woff2 +0 -0
  139. package/dist/fonts/ibm-plex-mono-latin-600-normal-0d1f0b8d0722224e.woff2 +0 -0
  140. package/dist/fonts/ibm-plex-mono-latin-ext-400-italic-1b07eee6df7d26b3.woff2 +0 -0
  141. package/dist/fonts/ibm-plex-mono-latin-ext-400-normal-6bc0f226a5b7884a.woff2 +0 -0
  142. package/dist/fonts/ibm-plex-mono-latin-ext-500-normal-6bb06407c97584b0.woff2 +0 -0
  143. package/dist/fonts/ibm-plex-mono-latin-ext-600-normal-32057cf50dd14bdb.woff2 +0 -0
  144. package/dist/fonts/ibm-plex-mono-vietnamese-400-italic-a6bab38af4f9c761.woff2 +0 -0
  145. package/dist/fonts/ibm-plex-mono-vietnamese-400-normal-62632b6375305e70.woff2 +0 -0
  146. package/dist/fonts/ibm-plex-mono-vietnamese-500-normal-781633d95de88040.woff2 +0 -0
  147. package/dist/fonts/ibm-plex-mono-vietnamese-600-normal-51b74d53e106ba8a.woff2 +0 -0
  148. package/dist/fonts/ibm-plex-sans-cyrillic-400-italic-e8731a7e2b00fc4f.woff2 +0 -0
  149. package/dist/fonts/ibm-plex-sans-cyrillic-400-normal-69afad88a0740b6e.woff2 +0 -0
  150. package/dist/fonts/ibm-plex-sans-cyrillic-500-normal-200be3a2a6b1789f.woff2 +0 -0
  151. package/dist/fonts/ibm-plex-sans-cyrillic-600-normal-730becc6f005c18c.woff2 +0 -0
  152. package/dist/fonts/ibm-plex-sans-cyrillic-700-normal-40540598b4c9eb2c.woff2 +0 -0
  153. package/dist/fonts/ibm-plex-sans-cyrillic-ext-400-italic-4ffb25726a7ce4cc.woff2 +0 -0
  154. package/dist/fonts/ibm-plex-sans-cyrillic-ext-400-normal-e2580ad78906551e.woff2 +0 -0
  155. package/dist/fonts/ibm-plex-sans-cyrillic-ext-500-normal-08578d906af6d986.woff2 +0 -0
  156. package/dist/fonts/ibm-plex-sans-cyrillic-ext-600-normal-d60d3d0b182753d5.woff2 +0 -0
  157. package/dist/fonts/ibm-plex-sans-cyrillic-ext-700-normal-d07dd53642480097.woff2 +0 -0
  158. package/dist/fonts/ibm-plex-sans-greek-400-italic-1bc10b01688ba9fa.woff2 +0 -0
  159. package/dist/fonts/ibm-plex-sans-greek-400-normal-02296067bc904d2a.woff2 +0 -0
  160. package/dist/fonts/ibm-plex-sans-greek-500-normal-8cb6e20b4dbbaa5f.woff2 +0 -0
  161. package/dist/fonts/ibm-plex-sans-greek-600-normal-0a9ebd9019415ee9.woff2 +0 -0
  162. package/dist/fonts/ibm-plex-sans-greek-700-normal-c949641d10a3bebc.woff2 +0 -0
  163. package/dist/fonts/ibm-plex-sans-latin-400-italic-6de912e531b6c980.woff2 +0 -0
  164. package/dist/fonts/ibm-plex-sans-latin-400-normal-3b646991d30055a9.woff2 +0 -0
  165. package/dist/fonts/ibm-plex-sans-latin-500-normal-0717336fb31fcdcd.woff2 +0 -0
  166. package/dist/fonts/ibm-plex-sans-latin-600-normal-8960851d691c054e.woff2 +0 -0
  167. package/dist/fonts/ibm-plex-sans-latin-700-normal-42e7b0c143c19df9.woff2 +0 -0
  168. package/dist/fonts/ibm-plex-sans-latin-ext-400-italic-c5c00e8a32022dfe.woff2 +0 -0
  169. package/dist/fonts/ibm-plex-sans-latin-ext-400-normal-c93d2a12aaa280f6.woff2 +0 -0
  170. package/dist/fonts/ibm-plex-sans-latin-ext-500-normal-2846035d85100f84.woff2 +0 -0
  171. package/dist/fonts/ibm-plex-sans-latin-ext-600-normal-b25dfd4f979e442a.woff2 +0 -0
  172. package/dist/fonts/ibm-plex-sans-latin-ext-700-normal-92f0392bd74fa395.woff2 +0 -0
  173. package/dist/fonts/ibm-plex-sans-vietnamese-400-italic-675d4bace127bffb.woff2 +0 -0
  174. package/dist/fonts/ibm-plex-sans-vietnamese-400-normal-771538f7f26551bd.woff2 +0 -0
  175. package/dist/fonts/ibm-plex-sans-vietnamese-500-normal-85ba3d9c2488a813.woff2 +0 -0
  176. package/dist/fonts/ibm-plex-sans-vietnamese-600-normal-5d34b803637befe3.woff2 +0 -0
  177. package/dist/fonts/ibm-plex-sans-vietnamese-700-normal-b79d0c4b68b85007.woff2 +0 -0
  178. package/dist/plex.css +1 -1
  179. package/dist/ssr/actions/Button.js +11 -2
  180. package/dist/ssr/actions/Button.js.map +1 -1
  181. package/dist/ssr/actions/Disclosure.js +2 -2
  182. package/dist/ssr/actions/Disclosure.js.map +1 -1
  183. package/dist/ssr/actions/Dropdown.js +4 -1
  184. package/dist/ssr/actions/Dropdown.js.map +1 -1
  185. package/dist/ssr/actions/FilterChip.js +16 -2
  186. package/dist/ssr/actions/FilterChip.js.map +1 -1
  187. package/dist/ssr/actions/SplitButton.js +69 -22
  188. package/dist/ssr/actions/SplitButton.js.map +1 -1
  189. package/dist/ssr/actions/SpotlightSearch.js +3 -7
  190. package/dist/ssr/actions/SpotlightSearch.js.map +1 -1
  191. package/dist/ssr/actions/Tabs.js +58 -11
  192. package/dist/ssr/actions/Tabs.js.map +1 -1
  193. package/dist/ssr/actions/index.js +1 -1
  194. package/dist/ssr/actions/index.js.map +1 -1
  195. package/dist/ssr/chat/ChatComposer.js +366 -134
  196. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  197. package/dist/ssr/chat/ChatContextPopup.js +86 -0
  198. package/dist/ssr/chat/ChatContextPopup.js.map +1 -0
  199. package/dist/ssr/chat/ChatPrimitives.js +49 -11
  200. package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
  201. package/dist/ssr/chat/ChatTasks.js +48 -0
  202. package/dist/ssr/chat/ChatTasks.js.map +1 -0
  203. package/dist/ssr/chat/ChatTimeline.js +14 -4
  204. package/dist/ssr/chat/ChatTimeline.js.map +1 -1
  205. package/dist/ssr/chat/chat-behavior.js +0 -5
  206. package/dist/ssr/chat/chat-behavior.js.map +1 -1
  207. package/dist/ssr/chat/composer-document.js +55 -0
  208. package/dist/ssr/chat/composer-document.js.map +1 -0
  209. package/dist/ssr/chat/index.js +6 -1
  210. package/dist/ssr/chat/index.js.map +1 -1
  211. package/dist/ssr/chat/types.js.map +1 -1
  212. package/dist/ssr/content/Chart.js +121 -219
  213. package/dist/ssr/content/Chart.js.map +1 -1
  214. package/dist/ssr/content/ChartExplorer.js +257 -0
  215. package/dist/ssr/content/ChartExplorer.js.map +1 -0
  216. package/dist/ssr/content/ChartExplorerControls.js +105 -0
  217. package/dist/ssr/content/ChartExplorerControls.js.map +1 -0
  218. package/dist/ssr/content/ChartFilterControls.js +139 -0
  219. package/dist/ssr/content/ChartFilterControls.js.map +1 -0
  220. package/dist/ssr/content/ChartSnapshotView.js +57 -0
  221. package/dist/ssr/content/ChartSnapshotView.js.map +1 -0
  222. package/dist/ssr/content/DataTable.js +13 -9
  223. package/dist/ssr/content/DataTable.js.map +1 -1
  224. package/dist/ssr/content/FileBrowser.js +3 -0
  225. package/dist/ssr/content/FileBrowser.js.map +1 -1
  226. package/dist/ssr/content/FileGrid.js +38 -0
  227. package/dist/ssr/content/FileGrid.js.map +1 -0
  228. package/dist/ssr/content/FileTree.js +2 -2
  229. package/dist/ssr/content/FileTree.js.map +1 -1
  230. package/dist/ssr/content/FileView.js +352 -75
  231. package/dist/ssr/content/FileView.js.map +1 -1
  232. package/dist/ssr/content/MarkdownView.js +6 -0
  233. package/dist/ssr/content/MarkdownView.js.map +1 -1
  234. package/dist/ssr/content/PdfPreview.js +37 -24
  235. package/dist/ssr/content/PdfPreview.js.map +1 -1
  236. package/dist/ssr/content/chart-cursor.js +33 -0
  237. package/dist/ssr/content/chart-cursor.js.map +1 -0
  238. package/dist/ssr/content/chart-explorer.js +147 -0
  239. package/dist/ssr/content/chart-explorer.js.map +1 -0
  240. package/dist/ssr/content/chart-inspection.js +447 -0
  241. package/dist/ssr/content/chart-inspection.js.map +1 -0
  242. package/dist/ssr/content/chart-line-gaps.js +53 -0
  243. package/dist/ssr/content/chart-line-gaps.js.map +1 -0
  244. package/dist/ssr/content/chart-map-viewport.js +5 -1
  245. package/dist/ssr/content/chart-map-viewport.js.map +1 -1
  246. package/dist/ssr/content/chart-snapshot.js +63 -0
  247. package/dist/ssr/content/chart-snapshot.js.map +1 -0
  248. package/dist/ssr/content/chart-state-timeline.js +32 -4
  249. package/dist/ssr/content/chart-state-timeline.js.map +1 -1
  250. package/dist/ssr/content/chart-svg.js +54 -0
  251. package/dist/ssr/content/chart-svg.js.map +1 -0
  252. package/dist/ssr/content/collection-selection.js +109 -0
  253. package/dist/ssr/content/collection-selection.js.map +1 -0
  254. package/dist/ssr/content/delimited-preferences.js +21 -0
  255. package/dist/ssr/content/delimited-preferences.js.map +1 -0
  256. package/dist/ssr/content/file-tree.js.map +1 -1
  257. package/dist/ssr/content/file-view-preview.js +11 -7
  258. package/dist/ssr/content/file-view-preview.js.map +1 -1
  259. package/dist/ssr/content/index.js +9 -0
  260. package/dist/ssr/content/index.js.map +1 -1
  261. package/dist/ssr/feedback/InlineGuidance.js +17 -3
  262. package/dist/ssr/feedback/InlineGuidance.js.map +1 -1
  263. package/dist/ssr/feedback/dialog-core.js +81 -7
  264. package/dist/ssr/feedback/dialog-core.js.map +1 -1
  265. package/dist/ssr/feedback/prompts.js +6 -0
  266. package/dist/ssr/feedback/prompts.js.map +1 -1
  267. package/dist/ssr/feedback/toast.js +29 -6
  268. package/dist/ssr/feedback/toast.js.map +1 -1
  269. package/dist/ssr/inputs/SelectChip.js +3 -3
  270. package/dist/ssr/inputs/SelectChip.js.map +1 -1
  271. package/dist/ssr/inputs/TextInput.js.map +1 -1
  272. package/dist/ssr/inputs/markdown/MarkdownEditor.js +19 -11
  273. package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
  274. package/dist/ssr/intl/Format.js +61 -0
  275. package/dist/ssr/intl/Format.js.map +1 -1
  276. package/dist/ssr/intl/index.js.map +1 -1
  277. package/dist/ssr/intl/messages.js +130 -2
  278. package/dist/ssr/intl/messages.js.map +1 -1
  279. package/dist/ssr/layout/AppWorkspace.js +368 -275
  280. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  281. package/dist/ssr/layout/BottomSheet.js +43 -0
  282. package/dist/ssr/layout/BottomSheet.js.map +1 -0
  283. package/dist/ssr/layout/DetailPanel.js +11 -4
  284. package/dist/ssr/layout/DetailPanel.js.map +1 -1
  285. package/dist/ssr/layout/Navigation.js +181 -0
  286. package/dist/ssr/layout/Navigation.js.map +1 -0
  287. package/dist/ssr/layout/PanelDialog.js +111 -26
  288. package/dist/ssr/layout/PanelDialog.js.map +1 -1
  289. package/dist/ssr/layout/ScrollArea.js +16 -1
  290. package/dist/ssr/layout/ScrollArea.js.map +1 -1
  291. package/dist/ssr/layout/Settings.js.map +1 -1
  292. package/dist/ssr/layout/SidebarItemPreview.js +133 -0
  293. package/dist/ssr/layout/SidebarItemPreview.js.map +1 -0
  294. package/dist/ssr/layout/app-workspace-controller.js +3 -0
  295. package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
  296. package/dist/ssr/layout/index.js +3 -0
  297. package/dist/ssr/layout/index.js.map +1 -1
  298. package/dist/ssr/layout/navigation-model.js +23 -0
  299. package/dist/ssr/layout/navigation-model.js.map +1 -0
  300. package/dist/ssr/layout/scroll-fade.js +100 -0
  301. package/dist/ssr/layout/scroll-fade.js.map +1 -0
  302. package/dist/ssr/surfaces/DescriptionList.js.map +1 -1
  303. package/dist/ssr/surfaces/StatusBadge.js +2 -1
  304. package/dist/ssr/surfaces/StatusBadge.js.map +1 -1
  305. package/dist/styles.css +1 -1
  306. package/dist/tabler.css +1 -1
  307. package/dist/types/actions/Button.d.ts +4 -0
  308. package/dist/types/actions/Disclosure.d.ts +1 -0
  309. package/dist/types/actions/FilterChip.d.ts +4 -0
  310. package/dist/types/actions/SplitButton.d.ts +6 -0
  311. package/dist/types/actions/SpotlightSearch.d.ts +0 -4
  312. package/dist/types/actions/Tabs.d.ts +4 -0
  313. package/dist/types/actions/index.d.ts +1 -1
  314. package/dist/types/chat/ChatComposer.d.ts +20 -2
  315. package/dist/types/chat/ChatContextPopup.d.ts +6 -0
  316. package/dist/types/chat/ChatPrimitives.d.ts +4 -0
  317. package/dist/types/chat/ChatTasks.d.ts +15 -0
  318. package/dist/types/chat/ChatTimeline.d.ts +2 -0
  319. package/dist/types/chat/chat-behavior.d.ts +0 -3
  320. package/dist/types/chat/composer-document.d.ts +14 -0
  321. package/dist/types/chat/index.d.ts +8 -1
  322. package/dist/types/chat/types.d.ts +7 -0
  323. package/dist/types/content/Chart.d.ts +42 -23
  324. package/dist/types/content/ChartExplorer.d.ts +34 -0
  325. package/dist/types/content/ChartExplorerControls.d.ts +10 -0
  326. package/dist/types/content/ChartFilterControls.d.ts +21 -0
  327. package/dist/types/content/ChartSnapshotView.d.ts +11 -0
  328. package/dist/types/content/DataTable.d.ts +4 -0
  329. package/dist/types/content/FileBrowser.d.ts +1 -0
  330. package/dist/types/content/FileGrid.d.ts +21 -0
  331. package/dist/types/content/FileView.d.ts +20 -0
  332. package/dist/types/content/PdfPreview.d.ts +8 -1
  333. package/dist/types/content/chart-cursor.d.ts +15 -0
  334. package/dist/types/content/chart-explorer.d.ts +48 -0
  335. package/dist/types/content/chart-inspection.d.ts +40 -0
  336. package/dist/types/content/chart-line-gaps.d.ts +5 -0
  337. package/dist/types/content/chart-map-viewport.d.ts +1 -1
  338. package/dist/types/content/chart-snapshot.d.ts +26 -0
  339. package/dist/types/content/chart-svg.d.ts +21 -0
  340. package/dist/types/content/collection-selection.d.ts +24 -0
  341. package/dist/types/content/delimited-preferences.d.ts +11 -0
  342. package/dist/types/content/file-tree.d.ts +2 -0
  343. package/dist/types/content/file-view-preview.d.ts +4 -1
  344. package/dist/types/content/index.d.ts +15 -1
  345. package/dist/types/feedback/InlineGuidance.d.ts +1 -0
  346. package/dist/types/feedback/dialog-core.d.ts +11 -0
  347. package/dist/types/feedback/prompts.d.ts +2 -0
  348. package/dist/types/feedback/toast.d.ts +7 -1
  349. package/dist/types/inputs/markdown/MarkdownEditor.d.ts +5 -1
  350. package/dist/types/intl/Format.d.ts +9 -0
  351. package/dist/types/intl/index.d.ts +1 -1
  352. package/dist/types/intl/messages.d.ts +31 -1
  353. package/dist/types/layout/AppWorkspace.d.ts +35 -18
  354. package/dist/types/layout/BottomSheet.d.ts +23 -0
  355. package/dist/types/layout/DetailPanel.d.ts +1 -0
  356. package/dist/types/layout/Navigation.d.ts +8 -0
  357. package/dist/types/layout/PanelDialog.d.ts +14 -1
  358. package/dist/types/layout/ScrollArea.d.ts +4 -0
  359. package/dist/types/layout/Settings.d.ts +1 -1
  360. package/dist/types/layout/SidebarItemPreview.d.ts +11 -0
  361. package/dist/types/layout/index.d.ts +4 -1
  362. package/dist/types/layout/navigation-model.d.ts +48 -0
  363. package/dist/types/layout/scroll-fade.d.ts +3 -0
  364. package/dist/types/surfaces/DescriptionList.d.ts +1 -1
  365. package/dist/types/surfaces/StatusBadge.d.ts +1 -1
  366. package/package.json +5 -5
@@ -16,21 +16,24 @@ var _tmpl$ = /*#__PURE__*/_$template(`<button type=button class=k2b-content-file
16
16
  _tmpl$3 = /*#__PURE__*/_$template(`<div class=k2b-content-file-view__overlay>`),
17
17
  _tmpl$4 = /*#__PURE__*/_$template(`<div class=k2b-content-file-view__panel><div class=k2b-content-file-view__preview></div><!$><!/>`),
18
18
  _tmpl$5 = /*#__PURE__*/_$template(`<button type=button class=k2b-markdown-editor__tool tabindex=-1><i>`),
19
- _tmpl$6 = /*#__PURE__*/_$template(`<div class=k2b-content-file-view__document>`),
20
- _tmpl$7 = /*#__PURE__*/_$template(`<div class=k2b-content-file-view__editor>`),
21
- _tmpl$8 = /*#__PURE__*/_$template(`<div class=k2b-content-file-view__editor><div class=k2b-markdown-editor data-fill=true role=group><div class="k2b-markdown-editor__toolbar k2b-content-file-view__code-toolbar"><span class=k2b-content-file-view__code-language></span><span class=k2b-markdown-editor__trailing><!$><!/><!$><!/></span></div><div class=k2b-markdown-editor__surface><textarea class=k2b-content-file-view__code-input>`),
22
- _tmpl$9 = /*#__PURE__*/_$template(`<a class=k2b-markdown-editor__tool><i class="ti ti-download">`),
23
- _tmpl$0 = /*#__PURE__*/_$template(`<p class=k2b-content-file-view__truncated>`),
24
- _tmpl$1 = /*#__PURE__*/_$template(`<div class=k2b-content-file-view__sheet><table class=k2b-content-file-view__table><thead><tr></tr></thead><tbody></tbody></table><!$><!/>`),
25
- _tmpl$10 = /*#__PURE__*/_$template(`<th scope=col><span>`),
26
- _tmpl$11 = /*#__PURE__*/_$template(`<tr>`),
27
- _tmpl$12 = /*#__PURE__*/_$template(`<td>`),
28
- _tmpl$13 = /*#__PURE__*/_$template(`<div class=k2b-content-file-view__media><img>`),
29
- _tmpl$14 = /*#__PURE__*/_$template(`<object type=application/pdf class=k2b-content-file-view__pdf>`),
30
- _tmpl$15 = /*#__PURE__*/_$template(`<div class=k2b-content-file-view__media data-kind=audio><audio controls preload=metadata>`),
31
- _tmpl$16 = /*#__PURE__*/_$template(`<div class=k2b-content-file-view__media data-kind=video><video controls preload=metadata playsinline>`),
32
- _tmpl$17 = /*#__PURE__*/_$template(`<a class=k2b-button data-variant=secondary data-size=sm download><i class="ti ti-download"aria-hidden=true></i><!$><!/>`),
33
- _tmpl$18 = /*#__PURE__*/_$template(`<div>`);
19
+ _tmpl$6 = /*#__PURE__*/_$template(`<div class=k2b-content-file-view__truncated>`),
20
+ _tmpl$7 = /*#__PURE__*/_$template(`<span>`),
21
+ _tmpl$8 = /*#__PURE__*/_$template(`<div>`),
22
+ _tmpl$9 = /*#__PURE__*/_$template(`<div class=k2b-content-file-view__document>`),
23
+ _tmpl$0 = /*#__PURE__*/_$template(`<div class=k2b-content-file-view__editor>`),
24
+ _tmpl$1 = /*#__PURE__*/_$template(`<div class=k2b-content-file-view__editor><div class=k2b-markdown-editor data-fill=true role=group><div class="k2b-markdown-editor__toolbar k2b-content-file-view__code-toolbar"><span class=k2b-content-file-view__code-language></span><span class=k2b-markdown-editor__trailing><!$><!/><!$><!/></span></div><div class=k2b-markdown-editor__surface><textarea class=k2b-content-file-view__code-input>`),
25
+ _tmpl$10 = /*#__PURE__*/_$template(`<a class=k2b-markdown-editor__tool><i class="ti ti-download">`),
26
+ _tmpl$11 = /*#__PURE__*/_$template(`<div class=k2b-content-file-view__settings><!$><!/><!$><!/><!$><!/>`),
27
+ _tmpl$12 = /*#__PURE__*/_$template(`<div class=k2b-content-file-view__sheet><table class=k2b-content-file-view__table><thead><tr></tr></thead><tbody></tbody></table><!$><!/><!$><!/>`),
28
+ _tmpl$13 = /*#__PURE__*/_$template(`<th scope=col><span>`),
29
+ _tmpl$14 = /*#__PURE__*/_$template(`<tr>`),
30
+ _tmpl$15 = /*#__PURE__*/_$template(`<td>`),
31
+ _tmpl$16 = /*#__PURE__*/_$template(`<div class=k2b-content-file-view__pagination><!$><!/><span><!$><!/>–<!$><!/> / <!$><!/></span><!$><!/>`),
32
+ _tmpl$17 = /*#__PURE__*/_$template(`<div class=k2b-content-file-view__media><img>`),
33
+ _tmpl$18 = /*#__PURE__*/_$template(`<object type=application/pdf class=k2b-content-file-view__pdf>`),
34
+ _tmpl$19 = /*#__PURE__*/_$template(`<div class=k2b-content-file-view__media data-kind=audio><audio controls preload=metadata>`),
35
+ _tmpl$20 = /*#__PURE__*/_$template(`<div class=k2b-content-file-view__media data-kind=video><video controls preload=metadata playsinline>`),
36
+ _tmpl$21 = /*#__PURE__*/_$template(`<a class=k2b-button data-variant=secondary data-size=sm download><i class="ti ti-download"aria-hidden=true></i><!$><!/>`);
34
37
  /**
35
38
  * FileView — renders one file through a small renderer registry keyed by
36
39
  * media type / path. Editing is enabled purely by the presence of `save`;
@@ -42,12 +45,16 @@ var _tmpl$ = /*#__PURE__*/_$template(`<button type=button class=k2b-content-file
42
45
  */
43
46
 
44
47
  import { mutation } from "@k2b/stdlib/solid";
45
- import { createEffect, createMemo, createResource, createSignal, For, Match, onCleanup, Show, Switch, untrack } from "solid-js";
48
+ import { createEffect, createMemo, createResource, createSignal, For, Match, onCleanup, onMount, Show, Switch, untrack } from "solid-js";
49
+ import { prompts } from "../feedback/prompts";
46
50
  import { toast } from "../feedback/toast";
47
51
  import { MarkdownEditor } from "../inputs/markdown/MarkdownEditor";
52
+ import { Button } from "../actions/Button";
53
+ import { Select } from "../inputs/Select";
48
54
  import { useUiMessages } from "../intl/messages";
49
55
  import Placeholder from "../surfaces/Placeholder";
50
56
  import CodeDisplay from "./CodeDisplay";
57
+ import { decodeDelimitedContent, readDelimitedPreferences } from "./delimited-preferences";
51
58
  import { fileViewExtension, getFileViewPreviewKind, parseDelimitedText } from "./file-view-preview";
52
59
  import MarkdownView from "./MarkdownView";
53
60
  import StructuredDataPreview from "./StructuredDataPreview";
@@ -202,6 +209,84 @@ function EditorToolButton(props) {
202
209
 
203
210
  // ── Built-in renderers ──────────────────────────────────────────────────────
204
211
 
212
+ function MoreLines(props) {
213
+ const messages = useUiMessages();
214
+ return _$createComponent(Show, {
215
+ get when() {
216
+ return props.count > 0;
217
+ },
218
+ get children() {
219
+ var _el$11 = _$getNextElement(_tmpl$6);
220
+ _$insert(_el$11, _$createComponent(Show, {
221
+ get when() {
222
+ return props.onClick;
223
+ },
224
+ get fallback() {
225
+ return (() => {
226
+ var _el$12 = _$getNextElement(_tmpl$7);
227
+ _$insert(_el$12, () => messages().previewMoreLines(props.count));
228
+ return _el$12;
229
+ })();
230
+ },
231
+ get children() {
232
+ return _$createComponent(Button, {
233
+ size: "sm",
234
+ variant: "ghost",
235
+ get onClick() {
236
+ return props.onClick;
237
+ },
238
+ get children() {
239
+ return messages().previewMoreLines(props.count);
240
+ }
241
+ });
242
+ }
243
+ }));
244
+ return _el$11;
245
+ }
246
+ });
247
+ }
248
+ function TextExcerpt(props) {
249
+ const lines = createMemo(() => props.text.replace(/\r\n?/g, "\n").replace(/\n$/, "").split("\n"));
250
+ const limit = () => props.renderer.previewLines === undefined ? lines().length : Math.max(1, props.renderer.previewLines);
251
+ const text = () => lines().slice(0, limit()).join("\n");
252
+ return [(() => {
253
+ var _el$13 = _$getNextElement(_tmpl$8);
254
+ _$insert(_el$13, _$createComponent(Show, {
255
+ get when() {
256
+ return props.markdown;
257
+ },
258
+ get fallback() {
259
+ return _$createComponent(CodeDisplay, {
260
+ get code() {
261
+ return text();
262
+ },
263
+ get language() {
264
+ return codeLanguage(props.renderer.file.path);
265
+ }
266
+ });
267
+ },
268
+ get children() {
269
+ return _$createComponent(MarkdownView, {
270
+ get markdown() {
271
+ return text();
272
+ },
273
+ get headingScale() {
274
+ return props.renderer.headingScale ?? "compact";
275
+ }
276
+ });
277
+ }
278
+ }));
279
+ _$effect(() => _el$13.classList.toggle("k2b-content-file-view__excerpt", !!(props.renderer.previewLines !== undefined)));
280
+ return _el$13;
281
+ })(), _$createComponent(MoreLines, {
282
+ get count() {
283
+ return lines().length - limit();
284
+ },
285
+ get onClick() {
286
+ return props.renderer.onExpandPreview;
287
+ }
288
+ })];
289
+ }
205
290
  function MarkdownRenderer(props) {
206
291
  const messages = useUiMessages();
207
292
  const [editing, setEditing] = createSignal(false);
@@ -228,22 +313,23 @@ function MarkdownRenderer(props) {
228
313
  }), _$createComponent(DownloadAction, props)];
229
314
  },
230
315
  get children() {
231
- var _el$11 = _$getNextElement(_tmpl$6);
232
- _$insert(_el$11, _$createComponent(MarkdownView, {
233
- get markdown() {
316
+ var _el$14 = _$getNextElement(_tmpl$9);
317
+ _$insert(_el$14, _$createComponent(TextExcerpt, {
318
+ renderer: props,
319
+ get text() {
234
320
  return stripFrontmatter(props.editor?.draft() ?? props.content.content);
235
321
  },
236
- headingScale: "compact"
322
+ markdown: true
237
323
  }));
238
- return _el$11;
324
+ return _el$14;
239
325
  }
240
326
  });
241
327
  },
242
328
  children: _ => {
243
329
  const editor = props.editor;
244
330
  return (() => {
245
- var _el$12 = _$getNextElement(_tmpl$7);
246
- _$insert(_el$12, _$createComponent(MarkdownEditor, {
331
+ var _el$15 = _$getNextElement(_tmpl$0);
332
+ _$insert(_el$15, _$createComponent(MarkdownEditor, {
247
333
  "class": "k2b-content-file-view__markdown-field",
248
334
  get ["aria-label"]() {
249
335
  return `Edit ${props.file.path.slice(props.file.path.lastIndexOf("/") + 1)}`;
@@ -273,7 +359,7 @@ function MarkdownRenderer(props) {
273
359
  });
274
360
  }
275
361
  }));
276
- return _el$12;
362
+ return _el$15;
277
363
  })();
278
364
  }
279
365
  });
@@ -290,12 +376,10 @@ function TextRenderer(props) {
290
376
  return _$createComponent(DownloadAction, props);
291
377
  },
292
378
  get children() {
293
- return _$createComponent(CodeDisplay, {
294
- get code() {
379
+ return _$createComponent(TextExcerpt, {
380
+ renderer: props,
381
+ get text() {
295
382
  return props.content.content;
296
- },
297
- get language() {
298
- return codeLanguage(props.file.path);
299
383
  }
300
384
  });
301
385
  }
@@ -304,39 +388,39 @@ function TextRenderer(props) {
304
388
  children: editor => // Same chrome as the markdown editor — literally the same classes, so
305
389
  // border, radius, focus ring, toolbar height and text metrics cannot drift.
306
390
  (() => {
307
- var _el$13 = _$getNextElement(_tmpl$8),
308
- _el$14 = _el$13.firstChild,
309
- _el$15 = _el$14.firstChild,
310
- _el$16 = _el$15.firstChild,
311
- _el$17 = _el$16.nextSibling,
391
+ var _el$16 = _$getNextElement(_tmpl$1),
392
+ _el$17 = _el$16.firstChild,
312
393
  _el$18 = _el$17.firstChild,
313
- [_el$19, _co$2] = _$getNextMarker(_el$18.nextSibling),
394
+ _el$19 = _el$18.firstChild,
314
395
  _el$20 = _el$19.nextSibling,
315
- [_el$21, _co$3] = _$getNextMarker(_el$20.nextSibling),
316
- _el$22 = _el$15.nextSibling,
317
- _el$23 = _el$22.firstChild;
318
- _el$14.$$keydown = event => {
396
+ _el$21 = _el$20.firstChild,
397
+ [_el$22, _co$2] = _$getNextMarker(_el$21.nextSibling),
398
+ _el$23 = _el$22.nextSibling,
399
+ [_el$24, _co$3] = _$getNextMarker(_el$23.nextSibling),
400
+ _el$25 = _el$18.nextSibling,
401
+ _el$26 = _el$25.firstChild;
402
+ _el$17.$$keydown = event => {
319
403
  if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === "s") {
320
404
  event.preventDefault();
321
405
  if (editor().dirty() && !editor().saving()) void editor().save();
322
406
  }
323
407
  };
324
- _$insert(_el$16, () => codeLanguage(props.file.path));
325
- _$insert(_el$17, _$createComponent(Show, {
408
+ _$insert(_el$19, () => codeLanguage(props.file.path));
409
+ _$insert(_el$20, _$createComponent(Show, {
326
410
  get when() {
327
411
  return props.downloadHref;
328
412
  },
329
413
  children: href => (() => {
330
- var _el$24 = _$getNextElement(_tmpl$9);
414
+ var _el$27 = _$getNextElement(_tmpl$10);
331
415
  _$effect(_p$ => {
332
416
  var _v$11 = href(),
333
417
  _v$12 = props.file.path.slice(props.file.path.lastIndexOf("/") + 1),
334
418
  _v$13 = messages().download,
335
419
  _v$14 = messages().download;
336
- _v$11 !== _p$.e && _$setAttribute(_el$24, "href", _p$.e = _v$11);
337
- _v$12 !== _p$.t && _$setAttribute(_el$24, "download", _p$.t = _v$12);
338
- _v$13 !== _p$.a && _$setAttribute(_el$24, "title", _p$.a = _v$13);
339
- _v$14 !== _p$.o && _$setAttribute(_el$24, "aria-label", _p$.o = _v$14);
420
+ _v$11 !== _p$.e && _$setAttribute(_el$27, "href", _p$.e = _v$11);
421
+ _v$12 !== _p$.t && _$setAttribute(_el$27, "download", _p$.t = _v$12);
422
+ _v$13 !== _p$.a && _$setAttribute(_el$27, "title", _p$.a = _v$13);
423
+ _v$14 !== _p$.o && _$setAttribute(_el$27, "aria-label", _p$.o = _v$14);
340
424
  return _p$;
341
425
  }, {
342
426
  e: undefined,
@@ -344,10 +428,10 @@ function TextRenderer(props) {
344
428
  a: undefined,
345
429
  o: undefined
346
430
  });
347
- return _el$24;
431
+ return _el$27;
348
432
  })()
349
- }), _el$19, _co$2);
350
- _$insert(_el$17, _$createComponent(EditorToolButton, {
433
+ }), _el$22, _co$2);
434
+ _$insert(_el$20, _$createComponent(EditorToolButton, {
351
435
  get icon() {
352
436
  return editor().saving() ? "ti ti-loader-2 k2b-spin" : "ti ti-device-floppy";
353
437
  },
@@ -358,13 +442,13 @@ function TextRenderer(props) {
358
442
  return !editor().dirty() || editor().saving();
359
443
  },
360
444
  onClick: () => void editor().save()
361
- }), _el$21, _co$3);
362
- _el$23.$$input = event => editor().setDraft(event.currentTarget.value);
363
- _$setAttribute(_el$23, "spellcheck", false);
364
- _$effect(() => _$setAttribute(_el$14, "aria-label", messages().textEditor));
365
- _$effect(() => _$setProperty(_el$23, "value", editor().draft()));
445
+ }), _el$24, _co$3);
446
+ _el$26.$$input = event => editor().setDraft(event.currentTarget.value);
447
+ _$setAttribute(_el$26, "spellcheck", false);
448
+ _$effect(() => _$setAttribute(_el$17, "aria-label", messages().textEditor));
449
+ _$effect(() => _$setProperty(_el$26, "value", editor().draft()));
366
450
  _$runHydrationEvents();
367
- return _el$13;
451
+ return _el$16;
368
452
  })()
369
453
  });
370
454
  }
@@ -390,109 +474,328 @@ function JsonRenderer(props) {
390
474
  return _$createComponent(DownloadAction, props);
391
475
  },
392
476
  get children() {
393
- var _el$25 = _$getNextElement(_tmpl$6);
394
- _$insert(_el$25, _$createComponent(Show, {
477
+ var _el$28 = _$getNextElement(_tmpl$9);
478
+ _$insert(_el$28, _$createComponent(Show, {
395
479
  get when() {
396
480
  return parsed().ok;
397
481
  },
398
482
  get fallback() {
399
- return _$createComponent(CodeDisplay, {
400
- get code() {
483
+ return _$createComponent(TextExcerpt, {
484
+ renderer: props,
485
+ get text() {
401
486
  return props.content.content;
402
- },
403
- language: "text"
487
+ }
404
488
  });
405
489
  },
406
490
  get children() {
407
- return _$createComponent(StructuredDataPreview, {
408
- get data() {
409
- return parsedValue();
491
+ return _$createComponent(Show, {
492
+ get when() {
493
+ return props.previewLines === undefined;
410
494
  },
411
- maxRows: 200
495
+ get fallback() {
496
+ return _$createComponent(TextExcerpt, {
497
+ renderer: props,
498
+ get text() {
499
+ return JSON.stringify(parsedValue(), null, 2);
500
+ }
501
+ });
502
+ },
503
+ get children() {
504
+ return _$createComponent(StructuredDataPreview, {
505
+ get data() {
506
+ return parsedValue();
507
+ },
508
+ maxRows: 200
509
+ });
510
+ }
412
511
  });
413
512
  }
414
513
  }));
415
- return _el$25;
514
+ return _el$28;
416
515
  }
417
516
  });
418
517
  }
419
518
  function DelimitedTextRenderer(props) {
420
519
  const messages = useUiMessages();
421
- const delimiter = () => fileViewExtension(props.file.path) === "tsv" || props.content.mediaType === "text/tab-separated-values" ? "\t" : ",";
422
- const preview = createMemo(() => parseDelimitedText(props.content.content, delimiter()));
520
+ const [preferences, setPreferences] = createSignal({
521
+ encoding: "utf-8",
522
+ delimiter: "auto",
523
+ view: "table"
524
+ });
525
+ onMount(() => {
526
+ if (!props.previewPreferencesKey) return;
527
+ try {
528
+ setPreferences(readDelimitedPreferences(localStorage.getItem(props.previewPreferencesKey)));
529
+ } catch {/* Storage may be disabled. */}
530
+ });
531
+ const update = patch => {
532
+ const next = {
533
+ ...preferences(),
534
+ ...patch
535
+ };
536
+ setPreferences(next);
537
+ if (props.previewPreferencesKey) {
538
+ try {
539
+ localStorage.setItem(props.previewPreferencesKey, JSON.stringify(next));
540
+ } catch {/* Keep the local selection. */}
541
+ }
542
+ };
543
+ const text = createMemo(() => decodeDelimitedContent(props.content, preferences().encoding));
544
+ const delimiter = () => preferences().delimiter === "auto" ? fileViewExtension(props.file.path) === "tsv" || props.content.mediaType === "text/tab-separated-values" ? "\t" : "," : preferences().delimiter;
545
+ const [page, setPage] = createSignal(0);
546
+ createEffect(() => {
547
+ text();
548
+ delimiter();
549
+ props.previewLines;
550
+ setPage(0);
551
+ });
552
+ const pageSize = () => props.previewLines === undefined ? 200 : Math.max(1, props.previewLines);
553
+ const preview = createMemo(() => parseDelimitedText(text(), delimiter(), {
554
+ rows: pageSize() + 1,
555
+ offset: page() * pageSize()
556
+ }));
557
+ const settings = () => prompts.dialog(() => (() => {
558
+ var _el$29 = _$getNextElement(_tmpl$11),
559
+ _el$30 = _el$29.firstChild,
560
+ [_el$31, _co$4] = _$getNextMarker(_el$30.nextSibling),
561
+ _el$32 = _el$31.nextSibling,
562
+ [_el$33, _co$5] = _$getNextMarker(_el$32.nextSibling),
563
+ _el$34 = _el$33.nextSibling,
564
+ [_el$35, _co$6] = _$getNextMarker(_el$34.nextSibling);
565
+ _$insert(_el$29, _$createComponent(Select, {
566
+ get label() {
567
+ return messages().csvEncoding;
568
+ },
569
+ get value() {
570
+ return preferences().encoding;
571
+ },
572
+ get disabled() {
573
+ return props.content.encoding !== "base64";
574
+ },
575
+ options: ["utf-8", "windows-1252", "utf-16le", "utf-16be"],
576
+ onValueChange: value => {
577
+ if (value) update({
578
+ encoding: value
579
+ });
580
+ }
581
+ }), _el$31, _co$4);
582
+ _$insert(_el$29, _$createComponent(Select, {
583
+ get label() {
584
+ return messages().csvSeparator;
585
+ },
586
+ get value() {
587
+ return preferences().delimiter;
588
+ },
589
+ get options() {
590
+ return [{
591
+ value: "auto",
592
+ label: messages().csvDefaultSeparator
593
+ }, {
594
+ value: ",",
595
+ label: messages().csvComma
596
+ }, {
597
+ value: ";",
598
+ label: messages().csvSemicolon
599
+ }, {
600
+ value: "\t",
601
+ label: messages().csvTab
602
+ }, {
603
+ value: "|",
604
+ label: "|"
605
+ }];
606
+ },
607
+ onValueChange: value => {
608
+ if (value) update({
609
+ delimiter: value
610
+ });
611
+ }
612
+ }), _el$33, _co$5);
613
+ _$insert(_el$29, _$createComponent(Select, {
614
+ get label() {
615
+ return messages().csvView;
616
+ },
617
+ get value() {
618
+ return preferences().view;
619
+ },
620
+ get options() {
621
+ return [{
622
+ value: "table",
623
+ label: messages().dataTable
624
+ }, {
625
+ value: "raw",
626
+ label: messages().csvRaw
627
+ }];
628
+ },
629
+ onValueChange: value => {
630
+ if (value === "table" || value === "raw") update({
631
+ view: value
632
+ });
633
+ }
634
+ }), _el$35, _co$6);
635
+ return _el$29;
636
+ })(), {
637
+ title: messages().csvSettings
638
+ });
423
639
  const headers = createMemo(() => preview().rows[0] ?? []);
424
640
  const rows = createMemo(() => preview().rows.slice(1));
425
641
  return _$createComponent(OverlayPanel, {
426
642
  get actions() {
427
- return _$createComponent(DownloadAction, props);
643
+ return [_$createComponent(OverlayAction, {
644
+ icon: "ti-adjustments-horizontal",
645
+ get title() {
646
+ return messages().csvSettings;
647
+ },
648
+ onClick: () => void settings()
649
+ }), _$createComponent(DownloadAction, props)];
428
650
  },
429
651
  get children() {
430
652
  return _$createComponent(Show, {
431
653
  get when() {
432
- return headers().length > 0;
654
+ return preferences().view === "table";
433
655
  },
434
656
  get fallback() {
435
- return _$createComponent(Placeholder, {
436
- icon: "ti ti-table",
437
- get title() {
438
- return messages().emptyFile;
439
- },
440
- get description() {
441
- return messages().delimitedFileEmpty;
657
+ return _$createComponent(TextExcerpt, {
658
+ renderer: props,
659
+ get text() {
660
+ return text();
442
661
  }
443
662
  });
444
663
  },
445
664
  get children() {
446
- var _el$26 = _$getNextElement(_tmpl$1),
447
- _el$27 = _el$26.firstChild,
448
- _el$28 = _el$27.firstChild,
449
- _el$29 = _el$28.firstChild,
450
- _el$30 = _el$28.nextSibling,
451
- _el$32 = _el$27.nextSibling,
452
- [_el$33, _co$4] = _$getNextMarker(_el$32.nextSibling);
453
- _$insert(_el$29, _$createComponent(For, {
454
- get each() {
455
- return headers();
665
+ return _$createComponent(Show, {
666
+ get when() {
667
+ return headers().length > 0;
456
668
  },
457
- children: (header, index) => (() => {
458
- var _el$34 = _$getNextElement(_tmpl$10),
459
- _el$35 = _el$34.firstChild;
460
- _$insert(_el$35, () => header || messages().column({
461
- number: index() + 1
462
- }));
463
- return _el$34;
464
- })()
465
- }));
466
- _$insert(_el$30, _$createComponent(For, {
467
- get each() {
468
- return rows();
669
+ get fallback() {
670
+ return _$createComponent(Placeholder, {
671
+ icon: "ti ti-table",
672
+ get title() {
673
+ return messages().emptyFile;
674
+ },
675
+ get description() {
676
+ return messages().delimitedFileEmpty;
677
+ }
678
+ });
469
679
  },
470
- children: row => (() => {
471
- var _el$36 = _$getNextElement(_tmpl$11);
472
- _$insert(_el$36, _$createComponent(For, {
680
+ get children() {
681
+ var _el$36 = _$getNextElement(_tmpl$12),
682
+ _el$37 = _el$36.firstChild,
683
+ _el$38 = _el$37.firstChild,
684
+ _el$39 = _el$38.firstChild,
685
+ _el$40 = _el$38.nextSibling,
686
+ _el$42 = _el$37.nextSibling,
687
+ [_el$43, _co$7] = _$getNextMarker(_el$42.nextSibling),
688
+ _el$44 = _el$43.nextSibling,
689
+ [_el$45, _co$8] = _$getNextMarker(_el$44.nextSibling);
690
+ _$insert(_el$39, _$createComponent(For, {
473
691
  get each() {
474
692
  return headers();
475
693
  },
476
- children: (_, index) => (() => {
477
- var _el$37 = _$getNextElement(_tmpl$12);
478
- _$insert(_el$37, () => row[index()] ?? "");
479
- return _el$37;
694
+ children: (header, index) => (() => {
695
+ var _el$46 = _$getNextElement(_tmpl$13),
696
+ _el$47 = _el$46.firstChild;
697
+ _$insert(_el$47, () => header || messages().column({
698
+ number: index() + 1
699
+ }));
700
+ return _el$46;
480
701
  })()
481
702
  }));
703
+ _$insert(_el$40, _$createComponent(For, {
704
+ get each() {
705
+ return rows();
706
+ },
707
+ children: row => (() => {
708
+ var _el$48 = _$getNextElement(_tmpl$14);
709
+ _$insert(_el$48, _$createComponent(For, {
710
+ get each() {
711
+ return headers();
712
+ },
713
+ children: (_, index) => (() => {
714
+ var _el$49 = _$getNextElement(_tmpl$15);
715
+ _$insert(_el$49, () => row[index()] ?? "");
716
+ return _el$49;
717
+ })()
718
+ }));
719
+ return _el$48;
720
+ })()
721
+ }));
722
+ _$insert(_el$36, _$createComponent(Show, {
723
+ get when() {
724
+ return preview().columnsTruncated;
725
+ },
726
+ get children() {
727
+ var _el$41 = _$getNextElement(_tmpl$6);
728
+ _$insert(_el$41, () => messages().previewColumnsLimited);
729
+ return _el$41;
730
+ }
731
+ }), _el$43, _co$7);
732
+ _$insert(_el$36, _$createComponent(Show, {
733
+ get when() {
734
+ return props.previewLines !== undefined;
735
+ },
736
+ get fallback() {
737
+ return _$createComponent(Show, {
738
+ get when() {
739
+ return preview().totalRows > 201;
740
+ },
741
+ get children() {
742
+ var _el$50 = _$getNextElement(_tmpl$16),
743
+ _el$60 = _el$50.firstChild,
744
+ [_el$61, _co$10] = _$getNextMarker(_el$60.nextSibling),
745
+ _el$51 = _el$61.nextSibling,
746
+ _el$54 = _el$51.firstChild,
747
+ [_el$55, _co$9] = _$getNextMarker(_el$54.nextSibling),
748
+ _el$52 = _el$55.nextSibling,
749
+ _el$56 = _el$52.nextSibling,
750
+ [_el$57, _co$0] = _$getNextMarker(_el$56.nextSibling),
751
+ _el$53 = _el$57.nextSibling,
752
+ _el$58 = _el$53.nextSibling,
753
+ [_el$59, _co$1] = _$getNextMarker(_el$58.nextSibling),
754
+ _el$62 = _el$51.nextSibling,
755
+ [_el$63, _co$11] = _$getNextMarker(_el$62.nextSibling);
756
+ _$insert(_el$50, _$createComponent(Button, {
757
+ size: "sm",
758
+ variant: "ghost",
759
+ get disabled() {
760
+ return page() === 0;
761
+ },
762
+ onClick: () => setPage(page() - 1),
763
+ get children() {
764
+ return messages().previous;
765
+ }
766
+ }), _el$61, _co$10);
767
+ _$insert(_el$51, () => page() * pageSize() + 1, _el$55, _co$9);
768
+ _$insert(_el$51, () => Math.min((page() + 1) * pageSize(), preview().totalRows - 1), _el$57, _co$0);
769
+ _$insert(_el$51, () => preview().totalRows - 1, _el$59, _co$1);
770
+ _$insert(_el$50, _$createComponent(Button, {
771
+ size: "sm",
772
+ variant: "ghost",
773
+ get disabled() {
774
+ return (page() + 1) * pageSize() >= preview().totalRows - 1;
775
+ },
776
+ onClick: () => setPage(page() + 1),
777
+ get children() {
778
+ return messages().next;
779
+ }
780
+ }), _el$63, _co$11);
781
+ return _el$50;
782
+ }
783
+ });
784
+ },
785
+ get children() {
786
+ return _$createComponent(MoreLines, {
787
+ get count() {
788
+ return preview().totalRows - rows().length - 1;
789
+ },
790
+ get onClick() {
791
+ return props.onExpandPreview;
792
+ }
793
+ });
794
+ }
795
+ }), _el$45, _co$8);
482
796
  return _el$36;
483
- })()
484
- }));
485
- _$insert(_el$26, _$createComponent(Show, {
486
- get when() {
487
- return preview().truncated;
488
- },
489
- get children() {
490
- var _el$31 = _$getNextElement(_tmpl$0);
491
- _$insert(_el$31, () => messages().previewLimited);
492
- return _el$31;
493
797
  }
494
- }), _el$33, _co$4);
495
- return _el$26;
798
+ });
496
799
  }
497
800
  });
498
801
  }
@@ -505,19 +808,23 @@ function ImageRenderer(props) {
505
808
  return _$createComponent(DownloadAction, props);
506
809
  },
507
810
  get children() {
508
- var _el$38 = _$getNextElement(_tmpl$13),
509
- _el$39 = _el$38.firstChild;
811
+ var _el$64 = _$getNextElement(_tmpl$17),
812
+ _el$65 = _el$64.firstChild;
813
+ _$addEventListener(_el$65, "error", props.onPreviewError);
510
814
  _$effect(_p$ => {
511
- var _v$15 = mediaSource(props),
512
- _v$16 = props.file.path;
513
- _v$15 !== _p$.e && _$setAttribute(_el$39, "src", _p$.e = _v$15);
514
- _v$16 !== _p$.t && _$setAttribute(_el$39, "alt", _p$.t = _v$16);
815
+ var _v$15 = props.crossOrigin,
816
+ _v$16 = mediaSource(props),
817
+ _v$17 = props.file.path;
818
+ _v$15 !== _p$.e && _$setAttribute(_el$65, "crossorigin", _p$.e = _v$15);
819
+ _v$16 !== _p$.t && _$setAttribute(_el$65, "src", _p$.t = _v$16);
820
+ _v$17 !== _p$.a && _$setAttribute(_el$65, "alt", _p$.a = _v$17);
515
821
  return _p$;
516
822
  }, {
517
823
  e: undefined,
518
- t: undefined
824
+ t: undefined,
825
+ a: undefined
519
826
  });
520
- return _el$38;
827
+ return _el$64;
521
828
  }
522
829
  });
523
830
  }
@@ -538,18 +845,18 @@ function PdfRenderer(props) {
538
845
  });
539
846
  },
540
847
  children: href => (() => {
541
- var _el$40 = _$getNextElement(_tmpl$14);
848
+ var _el$66 = _$getNextElement(_tmpl$18);
542
849
  _$effect(_p$ => {
543
- var _v$17 = href(),
544
- _v$18 = props.file.path;
545
- _v$17 !== _p$.e && _$setAttribute(_el$40, "data", _p$.e = _v$17);
546
- _v$18 !== _p$.t && _$setAttribute(_el$40, "aria-label", _p$.t = _v$18);
850
+ var _v$18 = href(),
851
+ _v$19 = props.file.path;
852
+ _v$18 !== _p$.e && _$setAttribute(_el$66, "data", _p$.e = _v$18);
853
+ _v$19 !== _p$.t && _$setAttribute(_el$66, "aria-label", _p$.t = _v$19);
547
854
  return _p$;
548
855
  }, {
549
856
  e: undefined,
550
857
  t: undefined
551
858
  });
552
- return _el$40;
859
+ return _el$66;
553
860
  })()
554
861
  });
555
862
  }
@@ -560,20 +867,24 @@ function AudioRenderer(props) {
560
867
  return _$createComponent(DownloadAction, props);
561
868
  },
562
869
  get children() {
563
- var _el$41 = _$getNextElement(_tmpl$15),
564
- _el$42 = _el$41.firstChild;
565
- _$insert(_el$42, () => messages().audioUnsupported);
870
+ var _el$67 = _$getNextElement(_tmpl$19),
871
+ _el$68 = _el$67.firstChild;
872
+ _$addEventListener(_el$68, "error", props.onPreviewError);
873
+ _$insert(_el$68, () => messages().audioUnsupported);
566
874
  _$effect(_p$ => {
567
- var _v$19 = mediaSource(props),
568
- _v$20 = props.file.path;
569
- _v$19 !== _p$.e && _$setAttribute(_el$42, "src", _p$.e = _v$19);
570
- _v$20 !== _p$.t && _$setAttribute(_el$42, "aria-label", _p$.t = _v$20);
875
+ var _v$20 = props.crossOrigin,
876
+ _v$21 = mediaSource(props),
877
+ _v$22 = props.file.path;
878
+ _v$20 !== _p$.e && _$setAttribute(_el$68, "crossorigin", _p$.e = _v$20);
879
+ _v$21 !== _p$.t && _$setAttribute(_el$68, "src", _p$.t = _v$21);
880
+ _v$22 !== _p$.a && _$setAttribute(_el$68, "aria-label", _p$.a = _v$22);
571
881
  return _p$;
572
882
  }, {
573
883
  e: undefined,
574
- t: undefined
884
+ t: undefined,
885
+ a: undefined
575
886
  });
576
- return _el$41;
887
+ return _el$67;
577
888
  }
578
889
  });
579
890
  }
@@ -584,20 +895,24 @@ function VideoRenderer(props) {
584
895
  return _$createComponent(DownloadAction, props);
585
896
  },
586
897
  get children() {
587
- var _el$43 = _$getNextElement(_tmpl$16),
588
- _el$44 = _el$43.firstChild;
589
- _$insert(_el$44, () => messages().videoUnsupported);
898
+ var _el$69 = _$getNextElement(_tmpl$20),
899
+ _el$70 = _el$69.firstChild;
900
+ _$addEventListener(_el$70, "error", props.onPreviewError);
901
+ _$insert(_el$70, () => messages().videoUnsupported);
590
902
  _$effect(_p$ => {
591
- var _v$21 = mediaSource(props),
592
- _v$22 = props.file.path;
593
- _v$21 !== _p$.e && _$setAttribute(_el$44, "src", _p$.e = _v$21);
594
- _v$22 !== _p$.t && _$setAttribute(_el$44, "aria-label", _p$.t = _v$22);
903
+ var _v$23 = props.crossOrigin,
904
+ _v$24 = mediaSource(props),
905
+ _v$25 = props.file.path;
906
+ _v$23 !== _p$.e && _$setAttribute(_el$70, "crossorigin", _p$.e = _v$23);
907
+ _v$24 !== _p$.t && _$setAttribute(_el$70, "src", _p$.t = _v$24);
908
+ _v$25 !== _p$.a && _$setAttribute(_el$70, "aria-label", _p$.a = _v$25);
595
909
  return _p$;
596
910
  }, {
597
911
  e: undefined,
598
- t: undefined
912
+ t: undefined,
913
+ a: undefined
599
914
  });
600
- return _el$43;
915
+ return _el$69;
601
916
  }
602
917
  });
603
918
  }
@@ -617,13 +932,13 @@ function BinaryRenderer(props) {
617
932
  return props.downloadHref;
618
933
  },
619
934
  children: href => (() => {
620
- var _el$45 = _$getNextElement(_tmpl$17),
621
- _el$46 = _el$45.firstChild,
622
- _el$47 = _el$46.nextSibling,
623
- [_el$48, _co$5] = _$getNextMarker(_el$47.nextSibling);
624
- _$insert(_el$45, () => messages().download, _el$48, _co$5);
625
- _$effect(() => _$setAttribute(_el$45, "href", href()));
626
- return _el$45;
935
+ var _el$71 = _$getNextElement(_tmpl$21),
936
+ _el$72 = _el$71.firstChild,
937
+ _el$73 = _el$72.nextSibling,
938
+ [_el$74, _co$12] = _$getNextMarker(_el$73.nextSibling);
939
+ _$insert(_el$71, () => messages().download, _el$74, _co$12);
940
+ _$effect(() => _$setAttribute(_el$71, "href", href()));
941
+ return _el$71;
627
942
  })()
628
943
  });
629
944
  }
@@ -657,7 +972,7 @@ const BUILTIN_RENDERERS = [{
657
972
  component: JsonRenderer
658
973
  }, {
659
974
  id: "delimited-text",
660
- match: (file, content) => content.encoding === "utf8" && getFileViewPreviewKind({
975
+ match: (file, content) => getFileViewPreviewKind({
661
976
  ...file,
662
977
  mediaType: content.mediaType || file.mediaType
663
978
  }) === "delimited-text",
@@ -777,8 +1092,8 @@ export default function FileView(props) {
777
1092
  save
778
1093
  } : null;
779
1094
  return (() => {
780
- var _el$49 = _$getNextElement(_tmpl$18);
781
- _$insert(_el$49, _$createComponent(Switch, {
1095
+ var _el$75 = _$getNextElement(_tmpl$8);
1096
+ _$insert(_el$75, _$createComponent(Switch, {
782
1097
  get children() {
783
1098
  return [_$createComponent(Match, {
784
1099
  get when() {
@@ -814,6 +1129,18 @@ export default function FileView(props) {
814
1129
  children: active => {
815
1130
  const Renderer = active().component;
816
1131
  return _$createComponent(Renderer, {
1132
+ get previewLines() {
1133
+ return props.previewLines;
1134
+ },
1135
+ get onExpandPreview() {
1136
+ return props.onExpandPreview;
1137
+ },
1138
+ get headingScale() {
1139
+ return props.headingScale;
1140
+ },
1141
+ get previewPreferencesKey() {
1142
+ return props.previewPreferencesKey;
1143
+ },
817
1144
  get file() {
818
1145
  return props.file;
819
1146
  },
@@ -823,6 +1150,12 @@ export default function FileView(props) {
823
1150
  get previewHref() {
824
1151
  return nativePreviewHref();
825
1152
  },
1153
+ get crossOrigin() {
1154
+ return props.crossOrigin;
1155
+ },
1156
+ get onPreviewError() {
1157
+ return props.onPreviewError;
1158
+ },
826
1159
  get downloadHref() {
827
1160
  return props.downloadHref ?? null;
828
1161
  },
@@ -834,8 +1167,20 @@ export default function FileView(props) {
834
1167
  })];
835
1168
  }
836
1169
  }));
837
- _$effect(() => _$className(_el$49, `k2b-content-file-view ${props.class ?? ""}`));
838
- return _el$49;
1170
+ _$effect(_p$ => {
1171
+ var _v$26 = `k2b-content-file-view ${props.class ?? ""}`,
1172
+ _v$27 = props.variant,
1173
+ _v$28 = props.previewLines !== undefined ? "true" : undefined;
1174
+ _v$26 !== _p$.e && _$className(_el$75, _p$.e = _v$26);
1175
+ _v$27 !== _p$.t && _$setAttribute(_el$75, "data-variant", _p$.t = _v$27);
1176
+ _v$28 !== _p$.a && _$setAttribute(_el$75, "data-excerpt", _p$.a = _v$28);
1177
+ return _p$;
1178
+ }, {
1179
+ e: undefined,
1180
+ t: undefined,
1181
+ a: undefined
1182
+ });
1183
+ return _el$75;
839
1184
  })();
840
1185
  }
841
1186
  _$delegateEvents(["click", "mousedown", "keydown", "input"]);