@k2b/ui 0.2.0 → 0.4.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 (378) 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 +2 -2
  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 +114 -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 +511 -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/Pagination.js.map +1 -1
  57. package/dist/browser/content/PdfPreview.js +107 -90
  58. package/dist/browser/content/PdfPreview.js.map +1 -1
  59. package/dist/browser/content/chart-cursor.js +33 -0
  60. package/dist/browser/content/chart-cursor.js.map +1 -0
  61. package/dist/browser/content/chart-explorer.js +147 -0
  62. package/dist/browser/content/chart-explorer.js.map +1 -0
  63. package/dist/browser/content/chart-inspection.js +447 -0
  64. package/dist/browser/content/chart-inspection.js.map +1 -0
  65. package/dist/browser/content/chart-line-gaps.js +53 -0
  66. package/dist/browser/content/chart-line-gaps.js.map +1 -0
  67. package/dist/browser/content/chart-map-viewport.js +5 -1
  68. package/dist/browser/content/chart-map-viewport.js.map +1 -1
  69. package/dist/browser/content/chart-snapshot.js +63 -0
  70. package/dist/browser/content/chart-snapshot.js.map +1 -0
  71. package/dist/browser/content/chart-state-timeline.js +32 -4
  72. package/dist/browser/content/chart-state-timeline.js.map +1 -1
  73. package/dist/browser/content/chart-svg.js +54 -0
  74. package/dist/browser/content/chart-svg.js.map +1 -0
  75. package/dist/browser/content/collection-selection.js +109 -0
  76. package/dist/browser/content/collection-selection.js.map +1 -0
  77. package/dist/browser/content/delimited-preferences.js +21 -0
  78. package/dist/browser/content/delimited-preferences.js.map +1 -0
  79. package/dist/browser/content/file-tree.js.map +1 -1
  80. package/dist/browser/content/file-view-preview.js +11 -7
  81. package/dist/browser/content/file-view-preview.js.map +1 -1
  82. package/dist/browser/content/index.js +9 -0
  83. package/dist/browser/content/index.js.map +1 -1
  84. package/dist/browser/feedback/InlineGuidance.js +17 -3
  85. package/dist/browser/feedback/InlineGuidance.js.map +1 -1
  86. package/dist/browser/feedback/dialog-core.js +81 -7
  87. package/dist/browser/feedback/dialog-core.js.map +1 -1
  88. package/dist/browser/feedback/prompts.js +6 -0
  89. package/dist/browser/feedback/prompts.js.map +1 -1
  90. package/dist/browser/feedback/toast.js +29 -6
  91. package/dist/browser/feedback/toast.js.map +1 -1
  92. package/dist/browser/inputs/ChoiceGroups.js.map +1 -1
  93. package/dist/browser/inputs/Select.js.map +1 -1
  94. package/dist/browser/inputs/SelectChip.js +3 -2
  95. package/dist/browser/inputs/SelectChip.js.map +1 -1
  96. package/dist/browser/inputs/TextInput.js +7 -1
  97. package/dist/browser/inputs/TextInput.js.map +1 -1
  98. package/dist/browser/inputs/markdown/MarkdownEditor.js +61 -37
  99. package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
  100. package/dist/browser/inputs/markdown/behaviors.js +1 -1
  101. package/dist/browser/inputs/markdown/behaviors.js.map +1 -1
  102. package/dist/browser/intl/Format.js +89 -16
  103. package/dist/browser/intl/Format.js.map +1 -1
  104. package/dist/browser/intl/index.js.map +1 -1
  105. package/dist/browser/intl/messages.js +130 -2
  106. package/dist/browser/intl/messages.js.map +1 -1
  107. package/dist/browser/layout/AppWorkspace.js +712 -624
  108. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  109. package/dist/browser/layout/BottomSheet.js +95 -0
  110. package/dist/browser/layout/BottomSheet.js.map +1 -0
  111. package/dist/browser/layout/DetailPanel.js +56 -44
  112. package/dist/browser/layout/DetailPanel.js.map +1 -1
  113. package/dist/browser/layout/Navigation.js +278 -0
  114. package/dist/browser/layout/Navigation.js.map +1 -0
  115. package/dist/browser/layout/PanelDialog.js +219 -71
  116. package/dist/browser/layout/PanelDialog.js.map +1 -1
  117. package/dist/browser/layout/ScrollArea.js +21 -1
  118. package/dist/browser/layout/ScrollArea.js.map +1 -1
  119. package/dist/browser/layout/Settings.js.map +1 -1
  120. package/dist/browser/layout/SidebarItemPreview.js +183 -0
  121. package/dist/browser/layout/SidebarItemPreview.js.map +1 -0
  122. package/dist/browser/layout/app-workspace-controller.js +3 -0
  123. package/dist/browser/layout/app-workspace-controller.js.map +1 -1
  124. package/dist/browser/layout/app-workspace-state.js.map +1 -1
  125. package/dist/browser/layout/index.js +3 -0
  126. package/dist/browser/layout/index.js.map +1 -1
  127. package/dist/browser/layout/navigation-model.js +23 -0
  128. package/dist/browser/layout/navigation-model.js.map +1 -0
  129. package/dist/browser/layout/scroll-fade.js +100 -0
  130. package/dist/browser/layout/scroll-fade.js.map +1 -0
  131. package/dist/browser/surfaces/DescriptionList.js.map +1 -1
  132. package/dist/browser/surfaces/StatusBadge.js +2 -1
  133. package/dist/browser/surfaces/StatusBadge.js.map +1 -1
  134. package/dist/fonts/ibm-plex-mono-cyrillic-400-italic-4aded3f2f2a7d27d.woff2 +0 -0
  135. package/dist/fonts/ibm-plex-mono-cyrillic-400-normal-7635422bd10ddbbc.woff2 +0 -0
  136. package/dist/fonts/ibm-plex-mono-cyrillic-500-normal-1d89462e86cb8e87.woff2 +0 -0
  137. package/dist/fonts/ibm-plex-mono-cyrillic-600-normal-2b05a8695c7f9f4a.woff2 +0 -0
  138. package/dist/fonts/ibm-plex-mono-cyrillic-ext-400-italic-a0b3b8cbe5a516e7.woff2 +0 -0
  139. package/dist/fonts/ibm-plex-mono-cyrillic-ext-400-normal-f8c22ec1804bd696.woff2 +0 -0
  140. package/dist/fonts/ibm-plex-mono-cyrillic-ext-500-normal-3febe5c7f22e4b07.woff2 +0 -0
  141. package/dist/fonts/ibm-plex-mono-cyrillic-ext-600-normal-83109cdd4f8665b4.woff2 +0 -0
  142. package/dist/fonts/ibm-plex-mono-latin-400-italic-0840095faae86403.woff2 +0 -0
  143. package/dist/fonts/ibm-plex-mono-latin-400-normal-08949f728dc52d52.woff2 +0 -0
  144. package/dist/fonts/ibm-plex-mono-latin-500-normal-01d285447409c8a5.woff2 +0 -0
  145. package/dist/fonts/ibm-plex-mono-latin-600-normal-0d1f0b8d0722224e.woff2 +0 -0
  146. package/dist/fonts/ibm-plex-mono-latin-ext-400-italic-1b07eee6df7d26b3.woff2 +0 -0
  147. package/dist/fonts/ibm-plex-mono-latin-ext-400-normal-6bc0f226a5b7884a.woff2 +0 -0
  148. package/dist/fonts/ibm-plex-mono-latin-ext-500-normal-6bb06407c97584b0.woff2 +0 -0
  149. package/dist/fonts/ibm-plex-mono-latin-ext-600-normal-32057cf50dd14bdb.woff2 +0 -0
  150. package/dist/fonts/ibm-plex-mono-vietnamese-400-italic-a6bab38af4f9c761.woff2 +0 -0
  151. package/dist/fonts/ibm-plex-mono-vietnamese-400-normal-62632b6375305e70.woff2 +0 -0
  152. package/dist/fonts/ibm-plex-mono-vietnamese-500-normal-781633d95de88040.woff2 +0 -0
  153. package/dist/fonts/ibm-plex-mono-vietnamese-600-normal-51b74d53e106ba8a.woff2 +0 -0
  154. package/dist/fonts/ibm-plex-sans-cyrillic-400-italic-e8731a7e2b00fc4f.woff2 +0 -0
  155. package/dist/fonts/ibm-plex-sans-cyrillic-400-normal-69afad88a0740b6e.woff2 +0 -0
  156. package/dist/fonts/ibm-plex-sans-cyrillic-500-normal-200be3a2a6b1789f.woff2 +0 -0
  157. package/dist/fonts/ibm-plex-sans-cyrillic-600-normal-730becc6f005c18c.woff2 +0 -0
  158. package/dist/fonts/ibm-plex-sans-cyrillic-700-normal-40540598b4c9eb2c.woff2 +0 -0
  159. package/dist/fonts/ibm-plex-sans-cyrillic-ext-400-italic-4ffb25726a7ce4cc.woff2 +0 -0
  160. package/dist/fonts/ibm-plex-sans-cyrillic-ext-400-normal-e2580ad78906551e.woff2 +0 -0
  161. package/dist/fonts/ibm-plex-sans-cyrillic-ext-500-normal-08578d906af6d986.woff2 +0 -0
  162. package/dist/fonts/ibm-plex-sans-cyrillic-ext-600-normal-d60d3d0b182753d5.woff2 +0 -0
  163. package/dist/fonts/ibm-plex-sans-cyrillic-ext-700-normal-d07dd53642480097.woff2 +0 -0
  164. package/dist/fonts/ibm-plex-sans-greek-400-italic-1bc10b01688ba9fa.woff2 +0 -0
  165. package/dist/fonts/ibm-plex-sans-greek-400-normal-02296067bc904d2a.woff2 +0 -0
  166. package/dist/fonts/ibm-plex-sans-greek-500-normal-8cb6e20b4dbbaa5f.woff2 +0 -0
  167. package/dist/fonts/ibm-plex-sans-greek-600-normal-0a9ebd9019415ee9.woff2 +0 -0
  168. package/dist/fonts/ibm-plex-sans-greek-700-normal-c949641d10a3bebc.woff2 +0 -0
  169. package/dist/fonts/ibm-plex-sans-latin-400-italic-6de912e531b6c980.woff2 +0 -0
  170. package/dist/fonts/ibm-plex-sans-latin-400-normal-3b646991d30055a9.woff2 +0 -0
  171. package/dist/fonts/ibm-plex-sans-latin-500-normal-0717336fb31fcdcd.woff2 +0 -0
  172. package/dist/fonts/ibm-plex-sans-latin-600-normal-8960851d691c054e.woff2 +0 -0
  173. package/dist/fonts/ibm-plex-sans-latin-700-normal-42e7b0c143c19df9.woff2 +0 -0
  174. package/dist/fonts/ibm-plex-sans-latin-ext-400-italic-c5c00e8a32022dfe.woff2 +0 -0
  175. package/dist/fonts/ibm-plex-sans-latin-ext-400-normal-c93d2a12aaa280f6.woff2 +0 -0
  176. package/dist/fonts/ibm-plex-sans-latin-ext-500-normal-2846035d85100f84.woff2 +0 -0
  177. package/dist/fonts/ibm-plex-sans-latin-ext-600-normal-b25dfd4f979e442a.woff2 +0 -0
  178. package/dist/fonts/ibm-plex-sans-latin-ext-700-normal-92f0392bd74fa395.woff2 +0 -0
  179. package/dist/fonts/ibm-plex-sans-vietnamese-400-italic-675d4bace127bffb.woff2 +0 -0
  180. package/dist/fonts/ibm-plex-sans-vietnamese-400-normal-771538f7f26551bd.woff2 +0 -0
  181. package/dist/fonts/ibm-plex-sans-vietnamese-500-normal-85ba3d9c2488a813.woff2 +0 -0
  182. package/dist/fonts/ibm-plex-sans-vietnamese-600-normal-5d34b803637befe3.woff2 +0 -0
  183. package/dist/fonts/ibm-plex-sans-vietnamese-700-normal-b79d0c4b68b85007.woff2 +0 -0
  184. package/dist/plex.css +1 -1
  185. package/dist/ssr/actions/Button.js +11 -2
  186. package/dist/ssr/actions/Button.js.map +1 -1
  187. package/dist/ssr/actions/Disclosure.js +2 -2
  188. package/dist/ssr/actions/Disclosure.js.map +1 -1
  189. package/dist/ssr/actions/Dropdown.js +4 -1
  190. package/dist/ssr/actions/Dropdown.js.map +1 -1
  191. package/dist/ssr/actions/FilterChip.js +16 -2
  192. package/dist/ssr/actions/FilterChip.js.map +1 -1
  193. package/dist/ssr/actions/SplitButton.js +69 -22
  194. package/dist/ssr/actions/SplitButton.js.map +1 -1
  195. package/dist/ssr/actions/SpotlightSearch.js +3 -7
  196. package/dist/ssr/actions/SpotlightSearch.js.map +1 -1
  197. package/dist/ssr/actions/Tabs.js +58 -11
  198. package/dist/ssr/actions/Tabs.js.map +1 -1
  199. package/dist/ssr/actions/index.js +2 -2
  200. package/dist/ssr/actions/index.js.map +1 -1
  201. package/dist/ssr/chat/ChatComposer.js +366 -134
  202. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  203. package/dist/ssr/chat/ChatContextPopup.js +86 -0
  204. package/dist/ssr/chat/ChatContextPopup.js.map +1 -0
  205. package/dist/ssr/chat/ChatPrimitives.js +49 -11
  206. package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
  207. package/dist/ssr/chat/ChatTasks.js +48 -0
  208. package/dist/ssr/chat/ChatTasks.js.map +1 -0
  209. package/dist/ssr/chat/ChatTimeline.js +14 -4
  210. package/dist/ssr/chat/ChatTimeline.js.map +1 -1
  211. package/dist/ssr/chat/chat-behavior.js +0 -5
  212. package/dist/ssr/chat/chat-behavior.js.map +1 -1
  213. package/dist/ssr/chat/composer-document.js +55 -0
  214. package/dist/ssr/chat/composer-document.js.map +1 -0
  215. package/dist/ssr/chat/index.js +6 -1
  216. package/dist/ssr/chat/index.js.map +1 -1
  217. package/dist/ssr/chat/types.js.map +1 -1
  218. package/dist/ssr/content/Chart.js +121 -219
  219. package/dist/ssr/content/Chart.js.map +1 -1
  220. package/dist/ssr/content/ChartExplorer.js +257 -0
  221. package/dist/ssr/content/ChartExplorer.js.map +1 -0
  222. package/dist/ssr/content/ChartExplorerControls.js +105 -0
  223. package/dist/ssr/content/ChartExplorerControls.js.map +1 -0
  224. package/dist/ssr/content/ChartFilterControls.js +139 -0
  225. package/dist/ssr/content/ChartFilterControls.js.map +1 -0
  226. package/dist/ssr/content/ChartSnapshotView.js +58 -0
  227. package/dist/ssr/content/ChartSnapshotView.js.map +1 -0
  228. package/dist/ssr/content/DataTable.js +13 -9
  229. package/dist/ssr/content/DataTable.js.map +1 -1
  230. package/dist/ssr/content/FileBrowser.js +3 -0
  231. package/dist/ssr/content/FileBrowser.js.map +1 -1
  232. package/dist/ssr/content/FileGrid.js +38 -0
  233. package/dist/ssr/content/FileGrid.js.map +1 -0
  234. package/dist/ssr/content/FileTree.js +2 -2
  235. package/dist/ssr/content/FileTree.js.map +1 -1
  236. package/dist/ssr/content/FileView.js +356 -75
  237. package/dist/ssr/content/FileView.js.map +1 -1
  238. package/dist/ssr/content/MarkdownView.js +6 -0
  239. package/dist/ssr/content/MarkdownView.js.map +1 -1
  240. package/dist/ssr/content/Pagination.js.map +1 -1
  241. package/dist/ssr/content/PdfPreview.js +37 -24
  242. package/dist/ssr/content/PdfPreview.js.map +1 -1
  243. package/dist/ssr/content/chart-cursor.js +33 -0
  244. package/dist/ssr/content/chart-cursor.js.map +1 -0
  245. package/dist/ssr/content/chart-explorer.js +147 -0
  246. package/dist/ssr/content/chart-explorer.js.map +1 -0
  247. package/dist/ssr/content/chart-inspection.js +447 -0
  248. package/dist/ssr/content/chart-inspection.js.map +1 -0
  249. package/dist/ssr/content/chart-line-gaps.js +53 -0
  250. package/dist/ssr/content/chart-line-gaps.js.map +1 -0
  251. package/dist/ssr/content/chart-map-viewport.js +5 -1
  252. package/dist/ssr/content/chart-map-viewport.js.map +1 -1
  253. package/dist/ssr/content/chart-snapshot.js +63 -0
  254. package/dist/ssr/content/chart-snapshot.js.map +1 -0
  255. package/dist/ssr/content/chart-state-timeline.js +32 -4
  256. package/dist/ssr/content/chart-state-timeline.js.map +1 -1
  257. package/dist/ssr/content/chart-svg.js +54 -0
  258. package/dist/ssr/content/chart-svg.js.map +1 -0
  259. package/dist/ssr/content/collection-selection.js +109 -0
  260. package/dist/ssr/content/collection-selection.js.map +1 -0
  261. package/dist/ssr/content/delimited-preferences.js +21 -0
  262. package/dist/ssr/content/delimited-preferences.js.map +1 -0
  263. package/dist/ssr/content/file-tree.js.map +1 -1
  264. package/dist/ssr/content/file-view-preview.js +11 -7
  265. package/dist/ssr/content/file-view-preview.js.map +1 -1
  266. package/dist/ssr/content/index.js +9 -0
  267. package/dist/ssr/content/index.js.map +1 -1
  268. package/dist/ssr/feedback/InlineGuidance.js +17 -3
  269. package/dist/ssr/feedback/InlineGuidance.js.map +1 -1
  270. package/dist/ssr/feedback/dialog-core.js +81 -7
  271. package/dist/ssr/feedback/dialog-core.js.map +1 -1
  272. package/dist/ssr/feedback/prompts.js +6 -0
  273. package/dist/ssr/feedback/prompts.js.map +1 -1
  274. package/dist/ssr/feedback/toast.js +29 -6
  275. package/dist/ssr/feedback/toast.js.map +1 -1
  276. package/dist/ssr/inputs/ChoiceGroups.js.map +1 -1
  277. package/dist/ssr/inputs/Select.js.map +1 -1
  278. package/dist/ssr/inputs/SelectChip.js +3 -3
  279. package/dist/ssr/inputs/SelectChip.js.map +1 -1
  280. package/dist/ssr/inputs/TextInput.js.map +1 -1
  281. package/dist/ssr/inputs/markdown/MarkdownEditor.js +19 -11
  282. package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
  283. package/dist/ssr/inputs/markdown/behaviors.js +1 -1
  284. package/dist/ssr/inputs/markdown/behaviors.js.map +1 -1
  285. package/dist/ssr/intl/Format.js +61 -0
  286. package/dist/ssr/intl/Format.js.map +1 -1
  287. package/dist/ssr/intl/index.js.map +1 -1
  288. package/dist/ssr/intl/messages.js +130 -2
  289. package/dist/ssr/intl/messages.js.map +1 -1
  290. package/dist/ssr/layout/AppWorkspace.js +368 -275
  291. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  292. package/dist/ssr/layout/BottomSheet.js +43 -0
  293. package/dist/ssr/layout/BottomSheet.js.map +1 -0
  294. package/dist/ssr/layout/DetailPanel.js +11 -4
  295. package/dist/ssr/layout/DetailPanel.js.map +1 -1
  296. package/dist/ssr/layout/Navigation.js +181 -0
  297. package/dist/ssr/layout/Navigation.js.map +1 -0
  298. package/dist/ssr/layout/PanelDialog.js +111 -26
  299. package/dist/ssr/layout/PanelDialog.js.map +1 -1
  300. package/dist/ssr/layout/ScrollArea.js +16 -1
  301. package/dist/ssr/layout/ScrollArea.js.map +1 -1
  302. package/dist/ssr/layout/Settings.js.map +1 -1
  303. package/dist/ssr/layout/SidebarItemPreview.js +133 -0
  304. package/dist/ssr/layout/SidebarItemPreview.js.map +1 -0
  305. package/dist/ssr/layout/app-workspace-controller.js +3 -0
  306. package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
  307. package/dist/ssr/layout/app-workspace-state.js.map +1 -1
  308. package/dist/ssr/layout/index.js +3 -0
  309. package/dist/ssr/layout/index.js.map +1 -1
  310. package/dist/ssr/layout/navigation-model.js +23 -0
  311. package/dist/ssr/layout/navigation-model.js.map +1 -0
  312. package/dist/ssr/layout/scroll-fade.js +100 -0
  313. package/dist/ssr/layout/scroll-fade.js.map +1 -0
  314. package/dist/ssr/surfaces/DescriptionList.js.map +1 -1
  315. package/dist/ssr/surfaces/StatusBadge.js +2 -1
  316. package/dist/ssr/surfaces/StatusBadge.js.map +1 -1
  317. package/dist/styles.css +1 -1
  318. package/dist/tabler.css +1 -1
  319. package/dist/types/actions/Button.d.ts +4 -0
  320. package/dist/types/actions/Disclosure.d.ts +1 -0
  321. package/dist/types/actions/FilterChip.d.ts +4 -0
  322. package/dist/types/actions/SplitButton.d.ts +6 -0
  323. package/dist/types/actions/SpotlightSearch.d.ts +0 -4
  324. package/dist/types/actions/Tabs.d.ts +4 -0
  325. package/dist/types/actions/index.d.ts +4 -4
  326. package/dist/types/chat/ChatComposer.d.ts +20 -2
  327. package/dist/types/chat/ChatContextPopup.d.ts +6 -0
  328. package/dist/types/chat/ChatPrimitives.d.ts +4 -0
  329. package/dist/types/chat/ChatTasks.d.ts +15 -0
  330. package/dist/types/chat/ChatTimeline.d.ts +2 -0
  331. package/dist/types/chat/chat-behavior.d.ts +0 -3
  332. package/dist/types/chat/composer-document.d.ts +14 -0
  333. package/dist/types/chat/index.d.ts +8 -1
  334. package/dist/types/chat/types.d.ts +7 -0
  335. package/dist/types/content/Chart.d.ts +42 -23
  336. package/dist/types/content/ChartExplorer.d.ts +34 -0
  337. package/dist/types/content/ChartExplorerControls.d.ts +10 -0
  338. package/dist/types/content/ChartFilterControls.d.ts +21 -0
  339. package/dist/types/content/ChartSnapshotView.d.ts +11 -0
  340. package/dist/types/content/DataTable.d.ts +4 -0
  341. package/dist/types/content/FileBrowser.d.ts +1 -0
  342. package/dist/types/content/FileGrid.d.ts +21 -0
  343. package/dist/types/content/FileView.d.ts +20 -0
  344. package/dist/types/content/PdfPreview.d.ts +8 -1
  345. package/dist/types/content/chart-cursor.d.ts +15 -0
  346. package/dist/types/content/chart-explorer.d.ts +48 -0
  347. package/dist/types/content/chart-inspection.d.ts +40 -0
  348. package/dist/types/content/chart-line-gaps.d.ts +5 -0
  349. package/dist/types/content/chart-map-viewport.d.ts +1 -1
  350. package/dist/types/content/chart-snapshot.d.ts +26 -0
  351. package/dist/types/content/chart-svg.d.ts +21 -0
  352. package/dist/types/content/collection-selection.d.ts +24 -0
  353. package/dist/types/content/delimited-preferences.d.ts +11 -0
  354. package/dist/types/content/file-tree.d.ts +2 -0
  355. package/dist/types/content/file-view-preview.d.ts +4 -1
  356. package/dist/types/content/index.d.ts +16 -2
  357. package/dist/types/feedback/InlineGuidance.d.ts +1 -0
  358. package/dist/types/feedback/dialog-core.d.ts +11 -0
  359. package/dist/types/feedback/prompts.d.ts +2 -0
  360. package/dist/types/feedback/toast.d.ts +7 -1
  361. package/dist/types/inputs/markdown/MarkdownEditor.d.ts +5 -1
  362. package/dist/types/intl/Format.d.ts +9 -0
  363. package/dist/types/intl/index.d.ts +1 -1
  364. package/dist/types/intl/messages.d.ts +31 -1
  365. package/dist/types/layout/AppWorkspace.d.ts +35 -18
  366. package/dist/types/layout/BottomSheet.d.ts +23 -0
  367. package/dist/types/layout/DetailPanel.d.ts +1 -0
  368. package/dist/types/layout/Navigation.d.ts +8 -0
  369. package/dist/types/layout/PanelDialog.d.ts +14 -1
  370. package/dist/types/layout/ScrollArea.d.ts +4 -0
  371. package/dist/types/layout/Settings.d.ts +1 -1
  372. package/dist/types/layout/SidebarItemPreview.d.ts +11 -0
  373. package/dist/types/layout/index.d.ts +4 -1
  374. package/dist/types/layout/navigation-model.d.ts +48 -0
  375. package/dist/types/layout/scroll-fade.d.ts +3 -0
  376. package/dist/types/surfaces/DescriptionList.d.ts +1 -1
  377. package/dist/types/surfaces/StatusBadge.d.ts +1 -1
  378. package/package.json +5 -7
@@ -1 +1 @@
1
- {"version":3,"names":["mutation","createEffect","createMemo","createResource","createSignal","For","Match","onCleanup","Show","Switch","untrack","toast","MarkdownEditor","useUiMessages","Placeholder","CodeDisplay","fileViewExtension","getFileViewPreviewKind","parseDelimitedText","MarkdownView","StructuredDataPreview","canPreviewFile","codeLanguage","path","extension","isMarkdown","file","content","encoding","mediaType","stripFrontmatter","text","match","exec","trimStart","slice","length","OverlayAction","props","classes","_$createComponent","when","href","fallback","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_$addEventListener","onClick","_$effect","_p$","_v$","title","_v$2","_v$3","icon","e","_$setAttribute","t","a","_$className","undefined","_$runHydrationEvents","children","_el$3","_tmpl$2","_el$4","_el$5","nextSibling","_$insert","_v$4","_v$5","download","_v$6","_v$7","_v$8","o","i","OverlayPanel","_el$6","_tmpl$4","_el$7","_el$9","_el$0","_co$","_$getNextMarker","actions","_el$8","_tmpl$3","DownloadAction","messages","downloadHref","lastIndexOf","EditorToolButton","_el$1","_tmpl$5","_el$10","$$mousedown","preventDefault","_v$9","_v$0","_v$1","disabled","_v$10","_$setProperty","MarkdownRenderer","editing","setEditing","_$memo","editor","edit","_el$11","_tmpl$6","markdown","draft","headingScale","_","_el$12","_tmpl$7","aria-label","fill","value","onValueChange","setDraft","showStats","onSave","save","saveDisabled","dirty","saving","toolbarTrailing","preview","TextRenderer","code","language","_el$13","_tmpl$8","_el$14","_el$15","_el$16","_el$17","_el$18","_el$19","_co$2","_el$20","_el$21","_co$3","_el$22","_el$23","$$keydown","event","metaKey","ctrlKey","key","toLowerCase","_el$24","_tmpl$9","_v$11","_v$12","_v$13","_v$14","saveShortcut","$$input","currentTarget","textEditor","JsonRenderer","parsed","ok","JSON","parse","parsedValue","result","_el$25","data","maxRows","DelimitedTextRenderer","delimiter","headers","rows","emptyFile","description","delimitedFileEmpty","_el$26","_tmpl$1","_el$27","_el$28","_el$29","_el$30","_el$32","_el$33","_co$4","each","header","index","_el$34","_tmpl$10","_el$35","column","number","row","_el$36","_tmpl$11","_el$37","_tmpl$12","truncated","_el$31","_tmpl$0","previewLimited","mediaSource","previewHref","ImageRenderer","_el$38","_tmpl$13","_el$39","_v$15","_v$16","PdfRenderer","noInlinePreview","_el$40","_tmpl$14","_v$17","_v$18","AudioRenderer","_el$41","_tmpl$15","_el$42","audioUnsupported","_v$19","_v$20","VideoRenderer","_el$43","_tmpl$16","_el$44","videoUnsupported","_v$21","_v$22","BinaryRenderer","noPreview","binaryFile","action","_el$45","_tmpl$17","_el$46","_el$47","_el$48","_co$5","BUILTIN_RENDERERS","id","component","editable","_file","formatFileViewSize","bytes","toFixed","FileView","savedDraft","setSavedDraft","nativeRevision","setNativeRevision","instanceRenderers","renderers","saveMutation","create","input","onSuccess","saved","success","fileSaved","onError","error","message","nativePreviewHref","kind","separator","includes","browserPreviewContent","candidate","some","renderer","refetch","revision","abort","loaded","load","loadedDraft","registerRefresh","unregister","resolvedContent","find","onDirtyChange","loading","mutate","_el$49","_tmpl$18","failedLoadFile","String","active","Renderer","class","_$delegateEvents"],"sources":["content/FileView.tsx"],"sourcesContent":["/**\n * FileView — renders one file through a small renderer registry keyed by\n * media type / path. Editing is enabled purely by the presence of `save`;\n * without it every renderer is read-only. IDE-style chrome: editors reuse\n * the markdown editor's surface (toolbar with an in-toolbar save, Ctrl/Cmd+S),\n * previews are quiet paper panels with icon-only actions overlaid top-right.\n * Custom renderers are passed per instance, which keeps SSR requests and\n * independently mounted applications isolated.\n */\n\nimport { mutation } from \"@k2b/stdlib/solid\";\nimport {\n type Component,\n createEffect,\n createMemo,\n createResource,\n createSignal,\n For,\n type JSX,\n Match,\n onCleanup,\n Show,\n Switch,\n untrack,\n} from \"solid-js\";\nimport { toast } from \"../feedback/toast\";\nimport { MarkdownEditor } from \"../inputs/markdown/MarkdownEditor\";\nimport { useUiMessages } from \"../intl/messages\";\nimport Placeholder from \"../surfaces/Placeholder\";\nimport CodeDisplay, { type CodeDisplayLanguage } from \"./CodeDisplay\";\nimport { type FileViewFile, fileViewExtension, getFileViewPreviewKind, parseDelimitedText } from \"./file-view-preview\";\nimport MarkdownView from \"./MarkdownView\";\nimport StructuredDataPreview, { type StructuredDataValue } from \"./StructuredDataPreview\";\n\nexport type { FileViewFile, FileViewPreviewKind } from \"./file-view-preview\";\nexport { canPreviewFile, getFileViewPreviewKind } from \"./file-view-preview\";\nexport type FileViewContent = { encoding: \"utf8\" | \"base64\"; content: string; mediaType: string };\n\nexport type FileViewProps = {\n file: FileViewFile;\n load: () => Promise<FileViewContent>;\n /** Refetch the current path when this host-owned revision changes. */\n revision?: unknown;\n /** Register an awaitable refresh for the currently visible preview. */\n registerRefresh?: (refresh: () => Promise<void>) => void | (() => void);\n /** Presence enables editing for text-based renderers. */\n save?: (content: string) => Promise<void>;\n /** Authenticated inline URL used by browser-native image, PDF, audio, and video previews. */\n previewHref?: string | null;\n downloadHref?: string | null;\n /** App-specific renderers matched before the built-ins for this instance. */\n renderers?: readonly FileViewRenderer[];\n /** Reports local edit state so a parent browser can guard navigation. */\n onDirtyChange?: (dirty: boolean) => void;\n class?: string;\n};\n\nexport type FileViewRendererProps = {\n file: FileViewFile;\n content: FileViewContent;\n previewHref: string | null;\n downloadHref: string | null;\n /** Null when the file is read-only. */\n editor: {\n draft: () => string;\n setDraft: (value: string) => void;\n dirty: () => boolean;\n saving: () => boolean;\n save: () => Promise<void>;\n } | null;\n};\n\nexport type FileViewRenderer = {\n id: string;\n match: (file: FileViewFile, content: FileViewContent) => boolean;\n component: Component<FileViewRendererProps>;\n /** Text renderers that support the edit affordance when `save` is present. */\n editable?: boolean;\n};\n\nconst codeLanguage = (path: string): CodeDisplayLanguage => {\n const extension = fileViewExtension(path);\n if (extension === \"ts\" || extension === \"mts\" || extension === \"cts\") return \"ts\";\n if (extension === \"tsx\") return \"tsx\";\n if (extension === \"js\" || extension === \"mjs\" || extension === \"cjs\") return \"js\";\n if (extension === \"jsx\") return \"jsx\";\n if (extension === \"md\" || extension === \"markdown\") return \"md\";\n return \"text\";\n};\n\nconst isMarkdown = (file: FileViewFile, content: FileViewContent) =>\n content.encoding === \"utf8\" && getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"markdown\";\n\n/** Rendered previews hide a leading YAML frontmatter block — it's metadata, not content. */\nconst stripFrontmatter = (text: string): string => {\n const match = /^---\\r?\\n[\\s\\S]*?\\r?\\n---\\r?\\n?/.exec(text.trimStart());\n return match ? text.trimStart().slice(match[0].length) : text;\n};\n\n/** Icon-only action, IDE style — sits in the floating top-right cluster of previews. */\nfunction OverlayAction(props: { icon: string; title: string; onClick?: () => void; href?: string; download?: string }) {\n const classes = \"k2b-content-file-view__action\";\n return (\n <Show\n when={props.href}\n fallback={\n <button type=\"button\" class={classes} title={props.title} aria-label={props.title} onClick={props.onClick}>\n <i class={`ti ${props.icon}`} aria-hidden=\"true\" />\n </button>\n }\n >\n {(href) => (\n <a class={classes} href={href()} download={props.download ?? \"\"} title={props.title} aria-label={props.title}>\n <i class={`ti ${props.icon}`} aria-hidden=\"true\" />\n <span class=\"k2b-sr-only\">{props.title}</span>\n </a>\n )}\n </Show>\n );\n}\n\n/** Scrollable preview panel with the floating action cluster overlaid top-right. */\nfunction OverlayPanel(props: { actions?: JSX.Element; children: JSX.Element }) {\n return (\n <div class=\"k2b-content-file-view__panel\">\n <div class=\"k2b-content-file-view__preview\">{props.children}</div>\n <Show when={props.actions}>\n <div class=\"k2b-content-file-view__overlay\">{props.actions}</div>\n </Show>\n </div>\n );\n}\n\nconst DownloadAction = (props: FileViewRendererProps): JSX.Element => {\n const messages = useUiMessages();\n return (\n <Show when={props.downloadHref}>\n {(href) => (\n <OverlayAction\n icon=\"ti-download\"\n title={messages().download}\n href={href()}\n download={props.file.path.slice(props.file.path.lastIndexOf(\"/\") + 1)}\n />\n )}\n </Show>\n );\n};\n\n/** Toolbar-styled icon button — reuses the package markdown-editor tool primitive. */\nfunction EditorToolButton(props: { icon: string; title: string; onClick: () => void; disabled?: boolean }) {\n return (\n <button\n type=\"button\"\n class=\"k2b-markdown-editor__tool\"\n title={props.title}\n aria-label={props.title}\n tabIndex={-1}\n disabled={props.disabled}\n onMouseDown={(e) => e.preventDefault()}\n onClick={props.onClick}\n >\n <i class={props.icon} />\n </button>\n );\n}\n\n// ── Built-in renderers ──────────────────────────────────────────────────────\n\nfunction MarkdownRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n const [editing, setEditing] = createSignal(false);\n return (\n <Show\n when={props.editor && editing()}\n fallback={\n <OverlayPanel\n actions={\n <>\n <Show when={props.editor}>\n <OverlayAction icon=\"ti-pencil\" title={messages().edit} onClick={() => setEditing(true)} />\n </Show>\n <DownloadAction {...props} />\n </>\n }\n >\n <div class=\"k2b-content-file-view__document\">\n <MarkdownView markdown={stripFrontmatter(props.editor?.draft() ?? props.content.content)} headingScale=\"compact\" />\n </div>\n </OverlayPanel>\n }\n >\n {(_) => {\n const editor = props.editor!;\n return (\n <div class=\"k2b-content-file-view__editor\">\n <MarkdownEditor\n class=\"k2b-content-file-view__markdown-field\"\n aria-label={`Edit ${props.file.path.slice(props.file.path.lastIndexOf(\"/\") + 1)}`}\n fill\n value={editor.draft()}\n onValueChange={editor.setDraft}\n showStats={false}\n onSave={() => void editor.save()}\n saveDisabled={!editor.dirty()}\n saving={editor.saving()}\n toolbarTrailing={<EditorToolButton icon=\"ti ti-eye\" title={messages().preview} onClick={() => setEditing(false)} />}\n />\n </div>\n );\n }}\n </Show>\n );\n}\n\nfunction TextRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n return (\n <Show\n when={props.editor}\n fallback={\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <CodeDisplay code={props.content.content} language={codeLanguage(props.file.path)} />\n </OverlayPanel>\n }\n >\n {(editor) => (\n // Same chrome as the markdown editor — literally the same classes, so\n // border, radius, focus ring, toolbar height and text metrics cannot drift.\n <div class=\"k2b-content-file-view__editor\">\n <div\n class=\"k2b-markdown-editor\"\n data-fill=\"true\"\n role=\"group\"\n aria-label={messages().textEditor}\n onKeyDown={(event) => {\n if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === \"s\") {\n event.preventDefault();\n if (editor().dirty() && !editor().saving()) void editor().save();\n }\n }}\n >\n {/* No formatting tools here — the divider under an actions-only bar reads lost. */}\n <div class=\"k2b-markdown-editor__toolbar k2b-content-file-view__code-toolbar\">\n <span class=\"k2b-content-file-view__code-language\">{codeLanguage(props.file.path)}</span>\n <span class=\"k2b-markdown-editor__trailing\">\n <Show when={props.downloadHref}>\n {(href) => (\n <a\n class=\"k2b-markdown-editor__tool\"\n href={href()}\n download={props.file.path.slice(props.file.path.lastIndexOf(\"/\") + 1)}\n title={messages().download}\n aria-label={messages().download}\n >\n <i class=\"ti ti-download\" />\n </a>\n )}\n </Show>\n <EditorToolButton\n icon={editor().saving() ? \"ti ti-loader-2 k2b-spin\" : \"ti ti-device-floppy\"}\n title={messages().saveShortcut}\n disabled={!editor().dirty() || editor().saving()}\n onClick={() => void editor().save()}\n />\n </span>\n </div>\n <div class=\"k2b-markdown-editor__surface\">\n <textarea\n class=\"k2b-content-file-view__code-input\"\n value={editor().draft()}\n spellcheck={false}\n onInput={(event) => editor().setDraft(event.currentTarget.value)}\n />\n </div>\n </div>\n </div>\n )}\n </Show>\n );\n}\n\nfunction JsonRenderer(props: FileViewRendererProps) {\n const parsed = createMemo(() => {\n try {\n return { ok: true as const, value: JSON.parse(props.content.content) as StructuredDataValue };\n } catch {\n return { ok: false as const };\n }\n });\n const parsedValue = (): StructuredDataValue => {\n const result = parsed();\n return result.ok ? result.value : null;\n };\n\n return (\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <div class=\"k2b-content-file-view__document\">\n <Show when={parsed().ok} fallback={<CodeDisplay code={props.content.content} language=\"text\" />}>\n <StructuredDataPreview data={parsedValue()} maxRows={200} />\n </Show>\n </div>\n </OverlayPanel>\n );\n}\n\nfunction DelimitedTextRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n const delimiter = () =>\n fileViewExtension(props.file.path) === \"tsv\" || props.content.mediaType === \"text/tab-separated-values\" ? \"\\t\" : \",\";\n const preview = createMemo(() => parseDelimitedText(props.content.content, delimiter()));\n const headers = createMemo(() => preview().rows[0] ?? []);\n const rows = createMemo(() => preview().rows.slice(1));\n\n return (\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <Show\n when={headers().length > 0}\n fallback={<Placeholder icon=\"ti ti-table\" title={messages().emptyFile} description={messages().delimitedFileEmpty} />}\n >\n <div class=\"k2b-content-file-view__sheet\">\n <table class=\"k2b-content-file-view__table\">\n <thead>\n <tr>\n <For each={headers()}>\n {(header, index) => (\n <th scope=\"col\">\n <span>{header || messages().column({ number: index() + 1 })}</span>\n </th>\n )}\n </For>\n </tr>\n </thead>\n <tbody>\n <For each={rows()}>\n {(row) => (\n <tr>\n <For each={headers()}>{(_, index) => <td>{row[index()] ?? \"\"}</td>}</For>\n </tr>\n )}\n </For>\n </tbody>\n </table>\n <Show when={preview().truncated}>\n <p class=\"k2b-content-file-view__truncated\">{messages().previewLimited}</p>\n </Show>\n </div>\n </Show>\n </OverlayPanel>\n );\n}\n\nconst mediaSource = (props: FileViewRendererProps): string =>\n props.previewHref ?? `data:${props.content.mediaType};base64,${props.content.content}`;\n\nfunction ImageRenderer(props: FileViewRendererProps) {\n return (\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <div class=\"k2b-content-file-view__media\">\n <img src={mediaSource(props)} alt={props.file.path} />\n </div>\n </OverlayPanel>\n );\n}\n\nfunction PdfRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n const href = () => props.previewHref ?? props.downloadHref;\n return (\n <Show when={href()} fallback={<Placeholder icon=\"ti ti-file-type-pdf\" title=\"PDF\" description={messages().noInlinePreview} />}>\n {(href) => <object data={href()} type=\"application/pdf\" class=\"k2b-content-file-view__pdf\" aria-label={props.file.path} />}\n </Show>\n );\n}\n\nfunction AudioRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n return (\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <div class=\"k2b-content-file-view__media\" data-kind=\"audio\">\n <audio controls preload=\"metadata\" src={mediaSource(props)} aria-label={props.file.path}>\n {messages().audioUnsupported}\n </audio>\n </div>\n </OverlayPanel>\n );\n}\n\nfunction VideoRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n return (\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <div class=\"k2b-content-file-view__media\" data-kind=\"video\">\n <video controls preload=\"metadata\" playsinline src={mediaSource(props)} aria-label={props.file.path}>\n {messages().videoUnsupported}\n </video>\n </div>\n </OverlayPanel>\n );\n}\n\nfunction BinaryRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n return (\n <Placeholder\n icon=\"ti ti-file-unknown\"\n title={messages().noPreview}\n description={props.content.mediaType || messages().binaryFile}\n action={\n <Show when={props.downloadHref}>\n {(href) => (\n <a class=\"k2b-button\" data-variant=\"secondary\" data-size=\"sm\" href={href()} download=\"\">\n <i class=\"ti ti-download\" aria-hidden=\"true\" />\n {messages().download}\n </a>\n )}\n </Show>\n }\n />\n );\n}\n\nconst BUILTIN_RENDERERS: FileViewRenderer[] = [\n { id: \"markdown\", match: isMarkdown, component: MarkdownRenderer, editable: true },\n {\n id: \"image\",\n match: (file, content) => getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"image\",\n component: ImageRenderer,\n },\n {\n id: \"pdf\",\n match: (file, content) => getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"pdf\",\n component: PdfRenderer,\n },\n {\n id: \"json\",\n match: (file, content) =>\n content.encoding === \"utf8\" && getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"json\",\n component: JsonRenderer,\n },\n {\n id: \"delimited-text\",\n match: (file, content) =>\n content.encoding === \"utf8\" &&\n getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"delimited-text\",\n component: DelimitedTextRenderer,\n },\n {\n id: \"audio\",\n match: (file, content) => getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"audio\",\n component: AudioRenderer,\n },\n {\n id: \"video\",\n match: (file, content) => getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"video\",\n component: VideoRenderer,\n },\n { id: \"text\", match: (_file, content) => content.encoding === \"utf8\", component: TextRenderer, editable: true },\n { id: \"binary\", match: () => true, component: BinaryRenderer },\n];\n\n// ── Component ───────────────────────────────────────────────────────────────\n\nexport const formatFileViewSize = (bytes: number): string => {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n};\n\nexport default function FileView(props: FileViewProps) {\n const messages = useUiMessages();\n const [draft, setDraft] = createSignal(\"\");\n const [savedDraft, setSavedDraft] = createSignal(\"\");\n const [nativeRevision, setNativeRevision] = createSignal(0);\n const dirty = createMemo(() => draft() !== savedDraft());\n const instanceRenderers = () => props.renderers ?? [];\n const saveMutation = mutation.create<{ path: string; content: string }, { path: string; content: string }>({\n mutation: async (input) => {\n await props.save!(input.content);\n return input;\n },\n onSuccess: (saved) => {\n if (props.file.path === saved.path) setSavedDraft(saved.content);\n toast.success(messages().fileSaved);\n },\n onError: (error) => toast.error(error.message),\n });\n const nativePreviewHref = createMemo(() => {\n const kind = getFileViewPreviewKind(props.file);\n const href = props.previewHref ?? (kind === \"pdf\" ? props.downloadHref : null);\n if (!href) return null;\n const separator = href.includes(\"?\") ? \"&\" : \"?\";\n return `${href}${separator}preview-revision=${nativeRevision()}`;\n });\n const browserPreviewContent = createMemo<FileViewContent | null>(() => {\n const kind = getFileViewPreviewKind(props.file);\n if (kind !== \"image\" && kind !== \"pdf\" && kind !== \"audio\" && kind !== \"video\") return null;\n const href = nativePreviewHref();\n if (!href) return null;\n\n const candidate: FileViewContent = {\n encoding: \"base64\",\n content: \"\",\n mediaType: props.file.mediaType ?? \"application/octet-stream\",\n };\n return instanceRenderers().some((renderer) => renderer.match(props.file, candidate)) ? null : candidate;\n });\n const [content, { refetch }] = createResource(\n () => (browserPreviewContent() ? null : { path: props.file.path, revision: props.revision }),\n async () => {\n saveMutation.abort();\n // `load` is an imperative source adapter. Host signal reads inside it\n // must not turn this resource into a hidden reactive feedback loop.\n const loaded = await untrack(() => props.load());\n const loadedDraft = loaded.encoding === \"utf8\" ? loaded.content : \"\";\n setDraft(loadedDraft);\n setSavedDraft(loadedDraft);\n return loaded;\n },\n );\n createEffect(() => {\n if (!props.registerRefresh) return;\n const unregister = props.registerRefresh(async () => {\n if (browserPreviewContent()) setNativeRevision((value) => value + 1);\n else await refetch();\n });\n if (unregister) onCleanup(unregister);\n });\n const resolvedContent = createMemo(() => browserPreviewContent() ?? content());\n\n const renderer = createMemo(() => {\n const loaded = resolvedContent();\n if (!loaded) return null;\n return [...instanceRenderers(), ...BUILTIN_RENDERERS].find((candidate) => candidate.match(props.file, loaded)) ?? null;\n });\n\n createEffect(() => {\n props.onDirtyChange?.(dirty());\n });\n\n const save = async () => {\n if (!props.save || saveMutation.loading()) return;\n await saveMutation.mutate({ path: props.file.path, content: draft() });\n };\n\n const editor = () =>\n props.save && renderer()?.editable && resolvedContent()?.encoding === \"utf8\"\n ? {\n draft,\n setDraft,\n dirty,\n saving: saveMutation.loading,\n save,\n }\n : null;\n\n return (\n <div class={`k2b-content-file-view ${props.class ?? \"\"}`}>\n <Switch>\n <Match when={content.loading && content() === undefined}>\n <Placeholder icon=\"ti ti-loader-2\" title={messages().loading} />\n </Match>\n <Match when={content.error}>\n <Placeholder icon=\"ti ti-alert-circle\" title={messages().failedLoadFile} description={String(content.error?.message ?? \"\")} />\n </Match>\n <Match when={resolvedContent() && renderer()}>\n {(active) => {\n const Renderer = active().component;\n return (\n <Renderer\n file={props.file}\n content={resolvedContent()!}\n previewHref={nativePreviewHref()}\n downloadHref={props.downloadHref ?? null}\n editor={editor()}\n />\n );\n }}\n </Match>\n </Switch>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["mutation","createEffect","createMemo","createResource","createSignal","For","Match","onCleanup","onMount","Show","Switch","untrack","Button","prompts","toast","MarkdownEditor","Select","useUiMessages","Placeholder","CodeDisplay","decodeDelimitedContent","readDelimitedPreferences","fileViewExtension","getFileViewPreviewKind","parseDelimitedText","MarkdownView","StructuredDataPreview","canPreviewFile","codeLanguage","path","extension","isMarkdown","file","content","encoding","mediaType","stripFrontmatter","text","match","exec","trimStart","slice","length","OverlayAction","props","classes","_$createComponent","when","href","fallback","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_$addEventListener","onClick","_$effect","_p$","_v$","title","_v$2","_v$3","icon","e","_$setAttribute","t","a","_$className","undefined","_$runHydrationEvents","children","_el$3","_tmpl$2","_el$4","_el$5","nextSibling","_$insert","_v$4","_v$5","download","_v$6","_v$7","_v$8","o","i","OverlayPanel","_el$6","_tmpl$4","_el$7","_el$9","_el$0","_co$","_$getNextMarker","actions","_el$8","_tmpl$3","DownloadAction","messages","downloadHref","lastIndexOf","EditorToolButton","_el$1","_tmpl$5","_el$10","$$mousedown","preventDefault","_v$9","_v$0","_v$1","disabled","_v$10","_$setProperty","MoreLines","count","_el$11","_tmpl$6","_el$12","_tmpl$7","previewMoreLines","size","variant","TextExcerpt","lines","replace","split","limit","renderer","previewLines","Math","max","join","_el$13","_tmpl$8","markdown","code","language","headingScale","classList","toggle","onExpandPreview","MarkdownRenderer","editing","setEditing","_$memo","editor","edit","_el$14","_tmpl$9","draft","_","_el$15","_tmpl$0","aria-label","fill","value","onValueChange","setDraft","showStats","onSave","save","saveDisabled","dirty","saving","toolbarTrailing","preview","TextRenderer","_el$16","_tmpl$1","_el$17","_el$18","_el$19","_el$20","_el$21","_el$22","_co$2","_el$23","_el$24","_co$3","_el$25","_el$26","$$keydown","event","metaKey","ctrlKey","key","toLowerCase","_el$27","_tmpl$10","_v$11","_v$12","_v$13","_v$14","saveShortcut","$$input","currentTarget","textEditor","JsonRenderer","parsed","ok","JSON","parse","parsedValue","result","_el$28","stringify","data","maxRows","DelimitedTextRenderer","preferences","setPreferences","delimiter","view","previewPreferencesKey","localStorage","getItem","update","patch","next","setItem","page","setPage","pageSize","rows","offset","settings","dialog","_el$29","_tmpl$11","_el$30","_el$31","_co$4","_el$32","_el$33","_co$5","_el$34","_el$35","_co$6","label","csvEncoding","options","csvSeparator","csvDefaultSeparator","csvComma","csvSemicolon","csvTab","csvView","dataTable","csvRaw","csvSettings","headers","emptyFile","description","delimitedFileEmpty","_el$36","_tmpl$12","_el$37","_el$38","_el$39","_el$40","_el$42","_el$43","_co$7","_el$44","_el$45","_co$8","each","header","index","_el$46","_tmpl$13","_el$47","column","number","row","_el$48","_tmpl$14","_el$49","_tmpl$15","columnsTruncated","_el$41","previewColumnsLimited","totalRows","_el$50","_tmpl$16","_el$60","_el$61","_co$10","_el$51","_el$54","_el$55","_co$9","_el$52","_el$56","_el$57","_co$0","_el$53","_el$58","_el$59","_co$1","_el$62","_el$63","_co$11","previous","min","mediaSource","previewHref","ImageRenderer","_el$64","_tmpl$17","_el$65","onPreviewError","_v$15","crossOrigin","_v$16","_v$17","PdfRenderer","noInlinePreview","_el$66","_tmpl$18","_v$18","_v$19","AudioRenderer","_el$67","_tmpl$19","_el$68","audioUnsupported","_v$20","_v$21","_v$22","VideoRenderer","_el$69","_tmpl$20","_el$70","videoUnsupported","_v$23","_v$24","_v$25","BinaryRenderer","noPreview","binaryFile","action","_el$71","_tmpl$21","_el$72","_el$73","_el$74","_co$12","BUILTIN_RENDERERS","id","component","editable","_file","formatFileViewSize","bytes","toFixed","FileView","savedDraft","setSavedDraft","nativeRevision","setNativeRevision","instanceRenderers","renderers","saveMutation","create","input","onSuccess","saved","success","fileSaved","onError","error","message","nativePreviewHref","kind","separator","includes","browserPreviewContent","candidate","some","refetch","revision","abort","loaded","load","loadedDraft","registerRefresh","unregister","resolvedContent","find","onDirtyChange","loading","mutate","_el$75","failedLoadFile","String","active","Renderer","_v$26","class","_v$27","_v$28","_$delegateEvents"],"sources":["content/FileView.tsx"],"sourcesContent":["/**\n * FileView — renders one file through a small renderer registry keyed by\n * media type / path. Editing is enabled purely by the presence of `save`;\n * without it every renderer is read-only. IDE-style chrome: editors reuse\n * the markdown editor's surface (toolbar with an in-toolbar save, Ctrl/Cmd+S),\n * previews are quiet paper panels with icon-only actions overlaid top-right.\n * Custom renderers are passed per instance, which keeps SSR requests and\n * independently mounted applications isolated.\n */\n\nimport { mutation } from \"@k2b/stdlib/solid\";\nimport {\n type Component,\n createEffect,\n createMemo,\n createResource,\n createSignal,\n For,\n type JSX,\n Match,\n onCleanup,\n onMount,\n Show,\n Switch,\n untrack,\n} from \"solid-js\";\nimport { Button } from \"../actions/Button\";\nimport { prompts } from \"../feedback/prompts\";\nimport { toast } from \"../feedback/toast\";\nimport { MarkdownEditor } from \"../inputs/markdown/MarkdownEditor\";\nimport { Select } from \"../inputs/Select\";\nimport { useUiMessages } from \"../intl/messages\";\nimport Placeholder from \"../surfaces/Placeholder\";\nimport CodeDisplay, { type CodeDisplayLanguage } from \"./CodeDisplay\";\nimport { type DelimitedPreferences, decodeDelimitedContent, readDelimitedPreferences } from \"./delimited-preferences\";\nimport { type FileViewFile, fileViewExtension, getFileViewPreviewKind, parseDelimitedText } from \"./file-view-preview\";\nimport MarkdownView from \"./MarkdownView\";\nimport StructuredDataPreview, { type StructuredDataValue } from \"./StructuredDataPreview\";\n\nexport type { FileViewFile, FileViewPreviewKind } from \"./file-view-preview\";\nexport { canPreviewFile, getFileViewPreviewKind } from \"./file-view-preview\";\nexport type FileViewContent = { encoding: \"utf8\" | \"base64\"; content: string; mediaType: string };\n\nexport type FileViewProps = {\n /** Plain previews inherit the surrounding surface without a frame or inset padding. */\n variant?: \"default\" | \"plain\";\n /** Read-only excerpt limit; omitted renders the complete preview. */\n previewLines?: number;\n onExpandPreview?: () => void;\n headingScale?: \"compact\" | \"normal\" | \"large\";\n /** Optional browser-local preference scope, owned by the host. */\n previewPreferencesKey?: string;\n file: FileViewFile;\n load: () => Promise<FileViewContent>;\n /** Refetch the current path when this host-owned revision changes. */\n revision?: unknown;\n /** Register an awaitable refresh for the currently visible preview. */\n registerRefresh?: (refresh: () => Promise<void>) => void | (() => void);\n /** Presence enables editing for text-based renderers. */\n save?: (content: string) => Promise<void>;\n /** Authenticated inline URL used by browser-native image, PDF, audio, and video previews. */\n previewHref?: string | null;\n /** CORS mode for native image/audio/video previews. Omit to preserve browser defaults. */\n crossOrigin?: \"anonymous\" | \"use-credentials\";\n /** Native media failed to load; the host can renew a signed URL and offer retry. */\n onPreviewError?: () => void;\n downloadHref?: string | null;\n /** App-specific renderers matched before the built-ins for this instance. */\n renderers?: readonly FileViewRenderer[];\n /** Reports local edit state so a parent browser can guard navigation. */\n onDirtyChange?: (dirty: boolean) => void;\n class?: string;\n};\n\nexport type FileViewRendererProps = {\n /** Read-only excerpt limit; omitted renders the complete preview. */\n previewLines?: number;\n onExpandPreview?: () => void;\n headingScale?: \"compact\" | \"normal\" | \"large\";\n /** Optional browser-local preference scope, owned by the host. */\n previewPreferencesKey?: string;\n file: FileViewFile;\n content: FileViewContent;\n previewHref: string | null;\n crossOrigin?: \"anonymous\" | \"use-credentials\";\n onPreviewError?: () => void;\n downloadHref: string | null;\n /** Null when the file is read-only. */\n editor: {\n draft: () => string;\n setDraft: (value: string) => void;\n dirty: () => boolean;\n saving: () => boolean;\n save: () => Promise<void>;\n } | null;\n};\n\nexport type FileViewRenderer = {\n id: string;\n match: (file: FileViewFile, content: FileViewContent) => boolean;\n component: Component<FileViewRendererProps>;\n /** Text renderers that support the edit affordance when `save` is present. */\n editable?: boolean;\n};\n\nconst codeLanguage = (path: string): CodeDisplayLanguage => {\n const extension = fileViewExtension(path);\n if (extension === \"ts\" || extension === \"mts\" || extension === \"cts\") return \"ts\";\n if (extension === \"tsx\") return \"tsx\";\n if (extension === \"js\" || extension === \"mjs\" || extension === \"cjs\") return \"js\";\n if (extension === \"jsx\") return \"jsx\";\n if (extension === \"md\" || extension === \"markdown\") return \"md\";\n return \"text\";\n};\n\nconst isMarkdown = (file: FileViewFile, content: FileViewContent) =>\n content.encoding === \"utf8\" && getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"markdown\";\n\n/** Rendered previews hide a leading YAML frontmatter block — it's metadata, not content. */\nconst stripFrontmatter = (text: string): string => {\n const match = /^---\\r?\\n[\\s\\S]*?\\r?\\n---\\r?\\n?/.exec(text.trimStart());\n return match ? text.trimStart().slice(match[0].length) : text;\n};\n\n/** Icon-only action, IDE style — sits in the floating top-right cluster of previews. */\nfunction OverlayAction(props: { icon: string; title: string; onClick?: () => void; href?: string; download?: string }) {\n const classes = \"k2b-content-file-view__action\";\n return (\n <Show\n when={props.href}\n fallback={\n <button type=\"button\" class={classes} title={props.title} aria-label={props.title} onClick={props.onClick}>\n <i class={`ti ${props.icon}`} aria-hidden=\"true\" />\n </button>\n }\n >\n {(href) => (\n <a class={classes} href={href()} download={props.download ?? \"\"} title={props.title} aria-label={props.title}>\n <i class={`ti ${props.icon}`} aria-hidden=\"true\" />\n <span class=\"k2b-sr-only\">{props.title}</span>\n </a>\n )}\n </Show>\n );\n}\n\n/** Scrollable preview panel with the floating action cluster overlaid top-right. */\nfunction OverlayPanel(props: { actions?: JSX.Element; children: JSX.Element }) {\n return (\n <div class=\"k2b-content-file-view__panel\">\n <div class=\"k2b-content-file-view__preview\">{props.children}</div>\n <Show when={props.actions}>\n <div class=\"k2b-content-file-view__overlay\">{props.actions}</div>\n </Show>\n </div>\n );\n}\n\nconst DownloadAction = (props: FileViewRendererProps): JSX.Element => {\n const messages = useUiMessages();\n return (\n <Show when={props.downloadHref}>\n {(href) => (\n <OverlayAction\n icon=\"ti-download\"\n title={messages().download}\n href={href()}\n download={props.file.path.slice(props.file.path.lastIndexOf(\"/\") + 1)}\n />\n )}\n </Show>\n );\n};\n\n/** Toolbar-styled icon button — reuses the package markdown-editor tool primitive. */\nfunction EditorToolButton(props: { icon: string; title: string; onClick: () => void; disabled?: boolean }) {\n return (\n <button\n type=\"button\"\n class=\"k2b-markdown-editor__tool\"\n title={props.title}\n aria-label={props.title}\n tabIndex={-1}\n disabled={props.disabled}\n onMouseDown={(e) => e.preventDefault()}\n onClick={props.onClick}\n >\n <i class={props.icon} />\n </button>\n );\n}\n\n// ── Built-in renderers ──────────────────────────────────────────────────────\n\nfunction MoreLines(props: { count: number; onClick?: () => void }) {\n const messages = useUiMessages();\n return (\n <Show when={props.count > 0}>\n <div class=\"k2b-content-file-view__truncated\">\n <Show when={props.onClick} fallback={<span>{messages().previewMoreLines(props.count)}</span>}>\n <Button size=\"sm\" variant=\"ghost\" onClick={props.onClick}>\n {messages().previewMoreLines(props.count)}\n </Button>\n </Show>\n </div>\n </Show>\n );\n}\nfunction TextExcerpt(props: { renderer: FileViewRendererProps; text: string; markdown?: boolean }) {\n const lines = createMemo(() => props.text.replace(/\\r\\n?/g, \"\\n\").replace(/\\n$/, \"\").split(\"\\n\"));\n const limit = () => (props.renderer.previewLines === undefined ? lines().length : Math.max(1, props.renderer.previewLines));\n const text = () => lines().slice(0, limit()).join(\"\\n\");\n return (\n <>\n <div classList={{ \"k2b-content-file-view__excerpt\": props.renderer.previewLines !== undefined }}>\n <Show when={props.markdown} fallback={<CodeDisplay code={text()} language={codeLanguage(props.renderer.file.path)} />}>\n <MarkdownView markdown={text()} headingScale={props.renderer.headingScale ?? \"compact\"} />\n </Show>\n </div>\n <MoreLines count={lines().length - limit()} onClick={props.renderer.onExpandPreview} />\n </>\n );\n}\n\nfunction MarkdownRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n const [editing, setEditing] = createSignal(false);\n return (\n <Show\n when={props.editor && editing()}\n fallback={\n <OverlayPanel\n actions={\n <>\n <Show when={props.editor}>\n <OverlayAction icon=\"ti-pencil\" title={messages().edit} onClick={() => setEditing(true)} />\n </Show>\n <DownloadAction {...props} />\n </>\n }\n >\n <div class=\"k2b-content-file-view__document\">\n <TextExcerpt renderer={props} text={stripFrontmatter(props.editor?.draft() ?? props.content.content)} markdown />\n </div>\n </OverlayPanel>\n }\n >\n {(_) => {\n const editor = props.editor!;\n return (\n <div class=\"k2b-content-file-view__editor\">\n <MarkdownEditor\n class=\"k2b-content-file-view__markdown-field\"\n aria-label={`Edit ${props.file.path.slice(props.file.path.lastIndexOf(\"/\") + 1)}`}\n fill\n value={editor.draft()}\n onValueChange={editor.setDraft}\n showStats={false}\n onSave={() => void editor.save()}\n saveDisabled={!editor.dirty()}\n saving={editor.saving()}\n toolbarTrailing={<EditorToolButton icon=\"ti ti-eye\" title={messages().preview} onClick={() => setEditing(false)} />}\n />\n </div>\n );\n }}\n </Show>\n );\n}\n\nfunction TextRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n return (\n <Show\n when={props.editor}\n fallback={\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <TextExcerpt renderer={props} text={props.content.content} />\n </OverlayPanel>\n }\n >\n {(editor) => (\n // Same chrome as the markdown editor — literally the same classes, so\n // border, radius, focus ring, toolbar height and text metrics cannot drift.\n <div class=\"k2b-content-file-view__editor\">\n <div\n class=\"k2b-markdown-editor\"\n data-fill=\"true\"\n role=\"group\"\n aria-label={messages().textEditor}\n onKeyDown={(event) => {\n if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === \"s\") {\n event.preventDefault();\n if (editor().dirty() && !editor().saving()) void editor().save();\n }\n }}\n >\n {/* No formatting tools here — the divider under an actions-only bar reads lost. */}\n <div class=\"k2b-markdown-editor__toolbar k2b-content-file-view__code-toolbar\">\n <span class=\"k2b-content-file-view__code-language\">{codeLanguage(props.file.path)}</span>\n <span class=\"k2b-markdown-editor__trailing\">\n <Show when={props.downloadHref}>\n {(href) => (\n <a\n class=\"k2b-markdown-editor__tool\"\n href={href()}\n download={props.file.path.slice(props.file.path.lastIndexOf(\"/\") + 1)}\n title={messages().download}\n aria-label={messages().download}\n >\n <i class=\"ti ti-download\" />\n </a>\n )}\n </Show>\n <EditorToolButton\n icon={editor().saving() ? \"ti ti-loader-2 k2b-spin\" : \"ti ti-device-floppy\"}\n title={messages().saveShortcut}\n disabled={!editor().dirty() || editor().saving()}\n onClick={() => void editor().save()}\n />\n </span>\n </div>\n <div class=\"k2b-markdown-editor__surface\">\n <textarea\n class=\"k2b-content-file-view__code-input\"\n value={editor().draft()}\n spellcheck={false}\n onInput={(event) => editor().setDraft(event.currentTarget.value)}\n />\n </div>\n </div>\n </div>\n )}\n </Show>\n );\n}\n\nfunction JsonRenderer(props: FileViewRendererProps) {\n const parsed = createMemo(() => {\n try {\n return { ok: true as const, value: JSON.parse(props.content.content) as StructuredDataValue };\n } catch {\n return { ok: false as const };\n }\n });\n const parsedValue = (): StructuredDataValue => {\n const result = parsed();\n return result.ok ? result.value : null;\n };\n\n return (\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <div class=\"k2b-content-file-view__document\">\n <Show when={parsed().ok} fallback={<TextExcerpt renderer={props} text={props.content.content} />}>\n <Show\n when={props.previewLines === undefined}\n fallback={<TextExcerpt renderer={props} text={JSON.stringify(parsedValue(), null, 2)} />}\n >\n <StructuredDataPreview data={parsedValue()} maxRows={200} />\n </Show>\n </Show>\n </div>\n </OverlayPanel>\n );\n}\n\nfunction DelimitedTextRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n const [preferences, setPreferences] = createSignal<DelimitedPreferences>({ encoding: \"utf-8\", delimiter: \"auto\", view: \"table\" });\n onMount(() => {\n if (!props.previewPreferencesKey) return;\n try {\n setPreferences(readDelimitedPreferences(localStorage.getItem(props.previewPreferencesKey)));\n } catch {\n /* Storage may be disabled. */\n }\n });\n const update = (patch: Partial<DelimitedPreferences>) => {\n const next = { ...preferences(), ...patch };\n setPreferences(next);\n if (props.previewPreferencesKey) {\n try {\n localStorage.setItem(props.previewPreferencesKey, JSON.stringify(next));\n } catch {\n /* Keep the local selection. */\n }\n }\n };\n const text = createMemo(() => decodeDelimitedContent(props.content, preferences().encoding));\n const delimiter = () =>\n preferences().delimiter === \"auto\"\n ? fileViewExtension(props.file.path) === \"tsv\" || props.content.mediaType === \"text/tab-separated-values\"\n ? \"\\t\"\n : \",\"\n : preferences().delimiter;\n const [page, setPage] = createSignal(0);\n createEffect(() => {\n text();\n delimiter();\n props.previewLines;\n setPage(0);\n });\n const pageSize = () => (props.previewLines === undefined ? 200 : Math.max(1, props.previewLines));\n const preview = createMemo(() => parseDelimitedText(text(), delimiter(), { rows: pageSize() + 1, offset: page() * pageSize() }));\n const settings = () =>\n prompts.dialog(\n () => (\n <div class=\"k2b-content-file-view__settings\">\n <Select\n label={messages().csvEncoding}\n value={preferences().encoding}\n disabled={props.content.encoding !== \"base64\"}\n options={[\"utf-8\", \"windows-1252\", \"utf-16le\", \"utf-16be\"]}\n onValueChange={(value) => {\n if (value) update({ encoding: value });\n }}\n />\n <Select\n label={messages().csvSeparator}\n value={preferences().delimiter}\n options={[\n { value: \"auto\", label: messages().csvDefaultSeparator },\n { value: \",\", label: messages().csvComma },\n { value: \";\", label: messages().csvSemicolon },\n { value: \"\\t\", label: messages().csvTab },\n { value: \"|\", label: \"|\" },\n ]}\n onValueChange={(value) => {\n if (value) update({ delimiter: value });\n }}\n />\n <Select\n label={messages().csvView}\n value={preferences().view}\n options={[\n { value: \"table\", label: messages().dataTable },\n { value: \"raw\", label: messages().csvRaw },\n ]}\n onValueChange={(value) => {\n if (value === \"table\" || value === \"raw\") update({ view: value });\n }}\n />\n </div>\n ),\n { title: messages().csvSettings },\n );\n const headers = createMemo(() => preview().rows[0] ?? []);\n const rows = createMemo(() => preview().rows.slice(1));\n\n return (\n <OverlayPanel\n actions={\n <>\n <OverlayAction icon=\"ti-adjustments-horizontal\" title={messages().csvSettings} onClick={() => void settings()} />\n <DownloadAction {...props} />\n </>\n }\n >\n <Show when={preferences().view === \"table\"} fallback={<TextExcerpt renderer={props} text={text()} />}>\n <Show\n when={headers().length > 0}\n fallback={<Placeholder icon=\"ti ti-table\" title={messages().emptyFile} description={messages().delimitedFileEmpty} />}\n >\n <div class=\"k2b-content-file-view__sheet\">\n <table class=\"k2b-content-file-view__table\">\n <thead>\n <tr>\n <For each={headers()}>\n {(header, index) => (\n <th scope=\"col\">\n <span>{header || messages().column({ number: index() + 1 })}</span>\n </th>\n )}\n </For>\n </tr>\n </thead>\n <tbody>\n <For each={rows()}>\n {(row) => (\n <tr>\n <For each={headers()}>{(_, index) => <td>{row[index()] ?? \"\"}</td>}</For>\n </tr>\n )}\n </For>\n </tbody>\n </table>\n <Show when={preview().columnsTruncated}>\n <div class=\"k2b-content-file-view__truncated\">{messages().previewColumnsLimited}</div>\n </Show>\n <Show\n when={props.previewLines !== undefined}\n fallback={\n <Show when={preview().totalRows > 201}>\n <div class=\"k2b-content-file-view__pagination\">\n <Button size=\"sm\" variant=\"ghost\" disabled={page() === 0} onClick={() => setPage(page() - 1)}>\n {messages().previous}\n </Button>\n <span>\n {page() * pageSize() + 1}–{Math.min((page() + 1) * pageSize(), preview().totalRows - 1)} / {preview().totalRows - 1}\n </span>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n disabled={(page() + 1) * pageSize() >= preview().totalRows - 1}\n onClick={() => setPage(page() + 1)}\n >\n {messages().next}\n </Button>\n </div>\n </Show>\n }\n >\n <MoreLines count={preview().totalRows - rows().length - 1} onClick={props.onExpandPreview} />\n </Show>\n </div>\n </Show>\n </Show>\n </OverlayPanel>\n );\n}\n\nconst mediaSource = (props: FileViewRendererProps): string =>\n props.previewHref ?? `data:${props.content.mediaType};base64,${props.content.content}`;\n\nfunction ImageRenderer(props: FileViewRendererProps) {\n return (\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <div class=\"k2b-content-file-view__media\">\n <img crossOrigin={props.crossOrigin} onError={props.onPreviewError} src={mediaSource(props)} alt={props.file.path} />\n </div>\n </OverlayPanel>\n );\n}\n\nfunction PdfRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n const href = () => props.previewHref ?? props.downloadHref;\n return (\n <Show when={href()} fallback={<Placeholder icon=\"ti ti-file-type-pdf\" title=\"PDF\" description={messages().noInlinePreview} />}>\n {(href) => <object data={href()} type=\"application/pdf\" class=\"k2b-content-file-view__pdf\" aria-label={props.file.path} />}\n </Show>\n );\n}\n\nfunction AudioRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n return (\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <div class=\"k2b-content-file-view__media\" data-kind=\"audio\">\n <audio\n crossOrigin={props.crossOrigin}\n onError={props.onPreviewError}\n controls\n preload=\"metadata\"\n src={mediaSource(props)}\n aria-label={props.file.path}\n >\n {messages().audioUnsupported}\n </audio>\n </div>\n </OverlayPanel>\n );\n}\n\nfunction VideoRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n return (\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <div class=\"k2b-content-file-view__media\" data-kind=\"video\">\n <video\n crossOrigin={props.crossOrigin}\n onError={props.onPreviewError}\n controls\n preload=\"metadata\"\n playsinline\n src={mediaSource(props)}\n aria-label={props.file.path}\n >\n {messages().videoUnsupported}\n </video>\n </div>\n </OverlayPanel>\n );\n}\n\nfunction BinaryRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n return (\n <Placeholder\n icon=\"ti ti-file-unknown\"\n title={messages().noPreview}\n description={props.content.mediaType || messages().binaryFile}\n action={\n <Show when={props.downloadHref}>\n {(href) => (\n <a class=\"k2b-button\" data-variant=\"secondary\" data-size=\"sm\" href={href()} download=\"\">\n <i class=\"ti ti-download\" aria-hidden=\"true\" />\n {messages().download}\n </a>\n )}\n </Show>\n }\n />\n );\n}\n\nconst BUILTIN_RENDERERS: FileViewRenderer[] = [\n { id: \"markdown\", match: isMarkdown, component: MarkdownRenderer, editable: true },\n {\n id: \"image\",\n match: (file, content) => getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"image\",\n component: ImageRenderer,\n },\n {\n id: \"pdf\",\n match: (file, content) => getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"pdf\",\n component: PdfRenderer,\n },\n {\n id: \"json\",\n match: (file, content) =>\n content.encoding === \"utf8\" && getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"json\",\n component: JsonRenderer,\n },\n {\n id: \"delimited-text\",\n match: (file, content) => getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"delimited-text\",\n component: DelimitedTextRenderer,\n },\n {\n id: \"audio\",\n match: (file, content) => getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"audio\",\n component: AudioRenderer,\n },\n {\n id: \"video\",\n match: (file, content) => getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"video\",\n component: VideoRenderer,\n },\n { id: \"text\", match: (_file, content) => content.encoding === \"utf8\", component: TextRenderer, editable: true },\n { id: \"binary\", match: () => true, component: BinaryRenderer },\n];\n\n// ── Component ───────────────────────────────────────────────────────────────\n\nexport const formatFileViewSize = (bytes: number): string => {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n};\n\nexport default function FileView(props: FileViewProps) {\n const messages = useUiMessages();\n const [draft, setDraft] = createSignal(\"\");\n const [savedDraft, setSavedDraft] = createSignal(\"\");\n const [nativeRevision, setNativeRevision] = createSignal(0);\n const dirty = createMemo(() => draft() !== savedDraft());\n const instanceRenderers = () => props.renderers ?? [];\n const saveMutation = mutation.create<{ path: string; content: string }, { path: string; content: string }>({\n mutation: async (input) => {\n await props.save!(input.content);\n return input;\n },\n onSuccess: (saved) => {\n if (props.file.path === saved.path) setSavedDraft(saved.content);\n toast.success(messages().fileSaved);\n },\n onError: (error) => toast.error(error.message),\n });\n const nativePreviewHref = createMemo(() => {\n const kind = getFileViewPreviewKind(props.file);\n const href = props.previewHref ?? (kind === \"pdf\" ? props.downloadHref : null);\n if (!href) return null;\n const separator = href.includes(\"?\") ? \"&\" : \"?\";\n return `${href}${separator}preview-revision=${nativeRevision()}`;\n });\n const browserPreviewContent = createMemo<FileViewContent | null>(() => {\n const kind = getFileViewPreviewKind(props.file);\n if (kind !== \"image\" && kind !== \"pdf\" && kind !== \"audio\" && kind !== \"video\") return null;\n const href = nativePreviewHref();\n if (!href) return null;\n\n const candidate: FileViewContent = {\n encoding: \"base64\",\n content: \"\",\n mediaType: props.file.mediaType ?? \"application/octet-stream\",\n };\n return instanceRenderers().some((renderer) => renderer.match(props.file, candidate)) ? null : candidate;\n });\n const [content, { refetch }] = createResource(\n () => (browserPreviewContent() ? null : { path: props.file.path, revision: props.revision }),\n async () => {\n saveMutation.abort();\n // `load` is an imperative source adapter. Host signal reads inside it\n // must not turn this resource into a hidden reactive feedback loop.\n const loaded = await untrack(() => props.load());\n const loadedDraft = loaded.encoding === \"utf8\" ? loaded.content : \"\";\n setDraft(loadedDraft);\n setSavedDraft(loadedDraft);\n return loaded;\n },\n );\n createEffect(() => {\n if (!props.registerRefresh) return;\n const unregister = props.registerRefresh(async () => {\n if (browserPreviewContent()) setNativeRevision((value) => value + 1);\n else await refetch();\n });\n if (unregister) onCleanup(unregister);\n });\n const resolvedContent = createMemo(() => browserPreviewContent() ?? content());\n\n const renderer = createMemo(() => {\n const loaded = resolvedContent();\n if (!loaded) return null;\n return [...instanceRenderers(), ...BUILTIN_RENDERERS].find((candidate) => candidate.match(props.file, loaded)) ?? null;\n });\n\n createEffect(() => {\n props.onDirtyChange?.(dirty());\n });\n\n const save = async () => {\n if (!props.save || saveMutation.loading()) return;\n await saveMutation.mutate({ path: props.file.path, content: draft() });\n };\n\n const editor = () =>\n props.save && renderer()?.editable && resolvedContent()?.encoding === \"utf8\"\n ? {\n draft,\n setDraft,\n dirty,\n saving: saveMutation.loading,\n save,\n }\n : null;\n\n return (\n <div\n class={`k2b-content-file-view ${props.class ?? \"\"}`}\n data-variant={props.variant}\n data-excerpt={props.previewLines !== undefined ? \"true\" : undefined}\n >\n <Switch>\n <Match when={content.loading && content() === undefined}>\n <Placeholder icon=\"ti ti-loader-2\" title={messages().loading} />\n </Match>\n <Match when={content.error}>\n <Placeholder icon=\"ti ti-alert-circle\" title={messages().failedLoadFile} description={String(content.error?.message ?? \"\")} />\n </Match>\n <Match when={resolvedContent() && renderer()}>\n {(active) => {\n const Renderer = active().component;\n return (\n <Renderer\n previewLines={props.previewLines}\n onExpandPreview={props.onExpandPreview}\n headingScale={props.headingScale}\n previewPreferencesKey={props.previewPreferencesKey}\n file={props.file}\n content={resolvedContent()!}\n previewHref={nativePreviewHref()}\n crossOrigin={props.crossOrigin}\n onPreviewError={props.onPreviewError}\n downloadHref={props.downloadHref ?? null}\n editor={editor()}\n />\n );\n }}\n </Match>\n </Switch>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,QAAQ,QAAQ,mBAAmB;AAC5C,SAEEC,YAAY,EACZC,UAAU,EACVC,cAAc,EACdC,YAAY,EACZC,GAAG,EAEHC,KAAK,EACLC,SAAS,EACTC,OAAO,EACPC,IAAI,EACJC,MAAM,EACNC,OAAO,QACF,UAAU;AACjB,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,OAAO,QAAQ,qBAAqB;AAC7C,SAASC,KAAK,QAAQ,mBAAmB;AACzC,SAASC,cAAc,QAAQ,mCAAmC;AAClE,SAASC,MAAM,QAAQ,kBAAkB;AACzC,SAASC,aAAa,QAAQ,kBAAkB;AAChD,OAAOC,WAAW,MAAM,yBAAyB;AACjD,OAAOC,WAAW,MAAoC,eAAe;AACrE,SAAoCC,sBAAsB,EAAEC,wBAAwB,QAAQ,yBAAyB;AACrH,SAA4BC,iBAAiB,EAAEC,sBAAsB,EAAEC,kBAAkB,QAAQ,qBAAqB;AACtH,OAAOC,YAAY,MAAM,gBAAgB;AACzC,OAAOC,qBAAqB,MAAoC,yBAAyB;AAGzF,SAASC,cAAc,EAAEJ,sBAAsB,QAAQ,qBAAqB;AAiE5E,MAAMK,YAAY,GAAIC,IAAY,IAA0B;EAC1D,MAAMC,SAAS,GAAGR,iBAAiB,CAACO,IAAI,CAAC;EACzC,IAAIC,SAAS,KAAK,IAAI,IAAIA,SAAS,KAAK,KAAK,IAAIA,SAAS,KAAK,KAAK,EAAE,OAAO,IAAI;EACjF,IAAIA,SAAS,KAAK,KAAK,EAAE,OAAO,KAAK;EACrC,IAAIA,SAAS,KAAK,IAAI,IAAIA,SAAS,KAAK,KAAK,IAAIA,SAAS,KAAK,KAAK,EAAE,OAAO,IAAI;EACjF,IAAIA,SAAS,KAAK,KAAK,EAAE,OAAO,KAAK;EACrC,IAAIA,SAAS,KAAK,IAAI,IAAIA,SAAS,KAAK,UAAU,EAAE,OAAO,IAAI;EAC/D,OAAO,MAAM;AACf,CAAC;AAED,MAAMC,UAAU,GAAGA,CAACC,IAAkB,EAAEC,OAAwB,KAC9DA,OAAO,CAACC,QAAQ,KAAK,MAAM,IAAIX,sBAAsB,CAAC;EAAE,GAAGS,IAAI;EAAEG,SAAS,EAAEF,OAAO,CAACE,SAAS,IAAIH,IAAI,CAACG;AAAU,CAAC,CAAC,KAAK,UAAU;;AAEnI;AACA,MAAMC,gBAAgB,GAAIC,IAAY,IAAa;EACjD,MAAMC,KAAK,GAAG,iCAAiC,CAACC,IAAI,CAACF,IAAI,CAACG,SAAS,CAAC,CAAC,CAAC;EACtE,OAAOF,KAAK,GAAGD,IAAI,CAACG,SAAS,CAAC,CAAC,CAACC,KAAK,CAACH,KAAK,CAAC,CAAC,CAAC,CAACI,MAAM,CAAC,GAAGL,IAAI;AAC/D,CAAC;;AAED;AACA,SAASM,aAAaA,CAACC,KAA8F,EAAE;EACrH,MAAMC,OAAO,GAAG,+BAA+B;EAC/C,OAAAC,iBAAA,CACGrC,IAAI;IAAA,IACHsC,IAAIA,CAAA;MAAA,OAAEH,KAAK,CAACI,IAAI;IAAA;IAAA,IAChBC,QAAQA,CAAA;MAAA;QAAA,IAAAC,IAAA,GAAAC,gBAAA,CAAAC,MAAA;UAAAC,KAAA,GAAAH,IAAA,CAAAI,UAAA;QAAAC,kBAAA,CAAAL,IAAA,WACsFN,KAAK,CAACY,OAAO;QAAAC,QAAA,CAAAC,GAAA;UAAA,IAAAC,GAAA,GAA5Df,KAAK,CAACgB,KAAK;YAAAC,IAAA,GAAcjB,KAAK,CAACgB,KAAK;YAAAE,IAAA,GACrE,MAAMlB,KAAK,CAACmB,IAAI,EAAE;UAAAJ,GAAA,KAAAD,GAAA,CAAAM,CAAA,IAAAC,cAAA,CAAAf,IAAA,WAAAQ,GAAA,CAAAM,CAAA,GAAAL,GAAA;UAAAE,IAAA,KAAAH,GAAA,CAAAQ,CAAA,IAAAD,cAAA,CAAAf,IAAA,gBAAAQ,GAAA,CAAAQ,CAAA,GAAAL,IAAA;UAAAC,IAAA,KAAAJ,GAAA,CAAAS,CAAA,IAAAC,WAAA,CAAAf,KAAA,EAAAK,GAAA,CAAAS,CAAA,GAAAL,IAAA;UAAA,OAAAJ,GAAA;QAAA;UAAAM,CAAA,EAAAK,SAAA;UAAAH,CAAA,EAAAG,SAAA;UAAAF,CAAA,EAAAE;QAAA;QAAAC,oBAAA;QAAA,OAAApB,IAAA;MAAA;IAAA;IAAAqB,QAAA,EAI9BvB,IAAI;MAAA,IAAAwB,KAAA,GAAArB,gBAAA,CAAAsB,OAAA;QAAAC,KAAA,GAAAF,KAAA,CAAAlB,UAAA;QAAAqB,KAAA,GAAAD,KAAA,CAAAE,WAAA;MAAAC,QAAA,CAAAF,KAAA,QAGyB/B,KAAK,CAACgB,KAAK;MAAAH,QAAA,CAAAC,GAAA;QAAA,IAAAoB,IAAA,GAFf9B,IAAI,CAAC,CAAC;UAAA+B,IAAA,GAAYnC,KAAK,CAACoC,QAAQ,IAAI,EAAE;UAAAC,IAAA,GAASrC,KAAK,CAACgB,KAAK;UAAAsB,IAAA,GAActC,KAAK,CAACgB,KAAK;UAAAuB,IAAA,GAChG,MAAMvC,KAAK,CAACmB,IAAI,EAAE;QAAAe,IAAA,KAAApB,GAAA,CAAAM,CAAA,IAAAC,cAAA,CAAAO,KAAA,UAAAd,GAAA,CAAAM,CAAA,GAAAc,IAAA;QAAAC,IAAA,KAAArB,GAAA,CAAAQ,CAAA,IAAAD,cAAA,CAAAO,KAAA,cAAAd,GAAA,CAAAQ,CAAA,GAAAa,IAAA;QAAAE,IAAA,KAAAvB,GAAA,CAAAS,CAAA,IAAAF,cAAA,CAAAO,KAAA,WAAAd,GAAA,CAAAS,CAAA,GAAAc,IAAA;QAAAC,IAAA,KAAAxB,GAAA,CAAA0B,CAAA,IAAAnB,cAAA,CAAAO,KAAA,gBAAAd,GAAA,CAAA0B,CAAA,GAAAF,IAAA;QAAAC,IAAA,KAAAzB,GAAA,CAAA2B,CAAA,IAAAjB,WAAA,CAAAM,KAAA,EAAAhB,GAAA,CAAA2B,CAAA,GAAAF,IAAA;QAAA,OAAAzB,GAAA;MAAA;QAAAM,CAAA,EAAAK,SAAA;QAAAH,CAAA,EAAAG,SAAA;QAAAF,CAAA,EAAAE,SAAA;QAAAe,CAAA,EAAAf,SAAA;QAAAgB,CAAA,EAAAhB;MAAA;MAAA,OAAAG,KAAA;IAAA;EAG/B;AAGP;;AAEA;AACA,SAASc,YAAYA,CAAC1C,KAAuD,EAAE;EAC7E;IAAA,IAAA2C,KAAA,GAAApC,gBAAA,CAAAqC,OAAA;MAAAC,KAAA,GAAAF,KAAA,CAAAjC,UAAA;MAAAoC,KAAA,GAAAD,KAAA,CAAAb,WAAA;MAAA,CAAAe,KAAA,EAAAC,IAAA,IAAAC,eAAA,CAAAH,KAAA,CAAAd,WAAA;IAAAC,QAAA,CAAAY,KAAA,QAEiD7C,KAAK,CAAC2B,QAAQ;IAAAM,QAAA,CAAAU,KAAA,EAAAzC,iBAAA,CAC1DrC,IAAI;MAAA,IAACsC,IAAIA,CAAA;QAAA,OAAEH,KAAK,CAACkD,OAAO;MAAA;MAAA,IAAAvB,SAAA;QAAA,IAAAwB,KAAA,GAAA5C,gBAAA,CAAA6C,OAAA;QAAAnB,QAAA,CAAAkB,KAAA,QACsBnD,KAAK,CAACkD,OAAO;QAAA,OAAAC,KAAA;MAAA;IAAA,IAAAJ,KAAA,EAAAC,IAAA;IAAA,OAAAL,KAAA;EAAA;AAIlE;AAEA,MAAMU,cAAc,GAAIrD,KAA4B,IAAkB;EACpE,MAAMsD,QAAQ,GAAGjF,aAAa,CAAC,CAAC;EAChC,OAAA6B,iBAAA,CACGrC,IAAI;IAAA,IAACsC,IAAIA,CAAA;MAAA,OAAEH,KAAK,CAACuD,YAAY;IAAA;IAAA5B,QAAA,EAC1BvB,IAAI,IAAAF,iBAAA,CACHH,aAAa;MACZoB,IAAI;MAAA,IACJH,KAAKA,CAAA;QAAA,OAAEsC,QAAQ,CAAC,CAAC,CAAClB,QAAQ;MAAA;MAAA,IAC1BhC,IAAIA,CAAA;QAAA,OAAEA,IAAI,CAAC,CAAC;MAAA;MAAA,IACZgC,QAAQA,CAAA;QAAA,OAAEpC,KAAK,CAACZ,IAAI,CAACH,IAAI,CAACY,KAAK,CAACG,KAAK,CAACZ,IAAI,CAACH,IAAI,CAACuE,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;MAAA;IAAA;EAExE;AAGP,CAAC;;AAED;AACA,SAASC,gBAAgBA,CAACzD,KAA+E,EAAE;EACzG;IAAA,IAAA0D,KAAA,GAAAnD,gBAAA,CAAAoD,OAAA;MAAAC,MAAA,GAAAF,KAAA,CAAAhD,UAAA;IAAAC,kBAAA,CAAA+C,KAAA,WASa1D,KAAK,CAACY,OAAO;IAAA8C,KAAA,CAAAG,WAAA,GADRzC,CAAC,IAAKA,CAAC,CAAC0C,cAAc,CAAC,CAAC;IAAAjD,QAAA,CAAAC,GAAA;MAAA,IAAAiD,IAAA,GAJ/B/D,KAAK,CAACgB,KAAK;QAAAgD,IAAA,GACNhE,KAAK,CAACgB,KAAK;QAAAiD,IAAA,GAEbjE,KAAK,CAACkE,QAAQ;QAAAC,KAAA,GAIdnE,KAAK,CAACmB,IAAI;MAAA4C,IAAA,KAAAjD,GAAA,CAAAM,CAAA,IAAAC,cAAA,CAAAqC,KAAA,WAAA5C,GAAA,CAAAM,CAAA,GAAA2C,IAAA;MAAAC,IAAA,KAAAlD,GAAA,CAAAQ,CAAA,IAAAD,cAAA,CAAAqC,KAAA,gBAAA5C,GAAA,CAAAQ,CAAA,GAAA0C,IAAA;MAAAC,IAAA,KAAAnD,GAAA,CAAAS,CAAA,IAAA6C,aAAA,CAAAV,KAAA,cAAA5C,GAAA,CAAAS,CAAA,GAAA0C,IAAA;MAAAE,KAAA,KAAArD,GAAA,CAAA0B,CAAA,IAAAhB,WAAA,CAAAoC,MAAA,EAAA9C,GAAA,CAAA0B,CAAA,GAAA2B,KAAA;MAAA,OAAArD,GAAA;IAAA;MAAAM,CAAA,EAAAK,SAAA;MAAAH,CAAA,EAAAG,SAAA;MAAAF,CAAA,EAAAE,SAAA;MAAAe,CAAA,EAAAf;IAAA;IAAAC,oBAAA;IAAA,OAAAgC,KAAA;EAAA;AAG1B;;AAEA;;AAEA,SAASW,SAASA,CAACrE,KAA8C,EAAE;EACjE,MAAMsD,QAAQ,GAAGjF,aAAa,CAAC,CAAC;EAChC,OAAA6B,iBAAA,CACGrC,IAAI;IAAA,IAACsC,IAAIA,CAAA;MAAA,OAAEH,KAAK,CAACsE,KAAK,GAAG,CAAC;IAAA;IAAA,IAAA3C,SAAA;MAAA,IAAA4C,MAAA,GAAAhE,gBAAA,CAAAiE,OAAA;MAAAvC,QAAA,CAAAsC,MAAA,EAAArE,iBAAA,CAEtBrC,IAAI;QAAA,IAACsC,IAAIA,CAAA;UAAA,OAAEH,KAAK,CAACY,OAAO;QAAA;QAAA,IAAEP,QAAQA,CAAA;UAAA;YAAA,IAAAoE,MAAA,GAAAlE,gBAAA,CAAAmE,OAAA;YAAAzC,QAAA,CAAAwC,MAAA,QAASnB,QAAQ,CAAC,CAAC,CAACqB,gBAAgB,CAAC3E,KAAK,CAACsE,KAAK,CAAC;YAAA,OAAAG,MAAA;UAAA;QAAA;QAAA,IAAA9C,SAAA;UAAA,OAAAzB,iBAAA,CACjFlC,MAAM;YAAC4G,IAAI;YAAMC,OAAO;YAAA,IAASjE,OAAOA,CAAA;cAAA,OAAEZ,KAAK,CAACY,OAAO;YAAA;YAAA,IAAAe,SAAA;cAAA,OACrD2B,QAAQ,CAAC,CAAC,CAACqB,gBAAgB,CAAC3E,KAAK,CAACsE,KAAK,CAAC;YAAA;UAAA;QAAA;MAAA;MAAA,OAAAC,MAAA;IAAA;EAAA;AAMrD;AACA,SAASO,WAAWA,CAAC9E,KAA4E,EAAE;EACjG,MAAM+E,KAAK,GAAGzH,UAAU,CAAC,MAAM0C,KAAK,CAACP,IAAI,CAACuF,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAACA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAACC,KAAK,CAAC,IAAI,CAAC,CAAC;EACjG,MAAMC,KAAK,GAAGA,CAAA,KAAOlF,KAAK,CAACmF,QAAQ,CAACC,YAAY,KAAK3D,SAAS,GAAGsD,KAAK,CAAC,CAAC,CAACjF,MAAM,GAAGuF,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEtF,KAAK,CAACmF,QAAQ,CAACC,YAAY,CAAE;EAC3H,MAAM3F,IAAI,GAAGA,CAAA,KAAMsF,KAAK,CAAC,CAAC,CAAClF,KAAK,CAAC,CAAC,EAAEqF,KAAK,CAAC,CAAC,CAAC,CAACK,IAAI,CAAC,IAAI,CAAC;EACvD;IAAA,IAAAC,MAAA,GAAAjF,gBAAA,CAAAkF,OAAA;IAAAxD,QAAA,CAAAuD,MAAA,EAAAtF,iBAAA,CAGOrC,IAAI;MAAA,IAACsC,IAAIA,CAAA;QAAA,OAAEH,KAAK,CAAC0F,QAAQ;MAAA;MAAA,IAAErF,QAAQA,CAAA;QAAA,OAAAH,iBAAA,CAAG3B,WAAW;UAAA,IAACoH,IAAIA,CAAA;YAAA,OAAElG,IAAI,CAAC,CAAC;UAAA;UAAA,IAAEmG,QAAQA,CAAA;YAAA,OAAE5G,YAAY,CAACgB,KAAK,CAACmF,QAAQ,CAAC/F,IAAI,CAACH,IAAI,CAAC;UAAA;QAAA;MAAA;MAAA,IAAA0C,SAAA;QAAA,OAAAzB,iBAAA,CAC9GrB,YAAY;UAAA,IAAC6G,QAAQA,CAAA;YAAA,OAAEjG,IAAI,CAAC,CAAC;UAAA;UAAA,IAAEoG,YAAYA,CAAA;YAAA,OAAE7F,KAAK,CAACmF,QAAQ,CAACU,YAAY,IAAI,SAAS;UAAA;QAAA;MAAA;IAAA;IAAAhF,QAAA,OAAA2E,MAAA,CAAAM,SAAA,CAAAC,MAAA,sCAFtC/F,KAAK,CAACmF,QAAQ,CAACC,YAAY,KAAK3D,SAAS;IAAA,OAAA+D,MAAA;EAAA,MAAAtF,iBAAA,CAK5FmE,SAAS;IAAA,IAACC,KAAKA,CAAA;MAAA,OAAES,KAAK,CAAC,CAAC,CAACjF,MAAM,GAAGoF,KAAK,CAAC,CAAC;IAAA;IAAA,IAAEtE,OAAOA,CAAA;MAAA,OAAEZ,KAAK,CAACmF,QAAQ,CAACa,eAAe;IAAA;EAAA;AAGzF;AAEA,SAASC,gBAAgBA,CAACjG,KAA4B,EAAE;EACtD,MAAMsD,QAAQ,GAAGjF,aAAa,CAAC,CAAC;EAChC,MAAM,CAAC6H,OAAO,EAAEC,UAAU,CAAC,GAAG3I,YAAY,CAAC,KAAK,CAAC;EACjD,OAAA0C,iBAAA,CACGrC,IAAI;IAAA,IACHsC,IAAIA,CAAA;MAAA,OAAEiG,MAAA,SAAApG,KAAK,CAACqG,MAAM,OAAIH,OAAO,CAAC,CAAC;IAAA;IAAA,IAC/B7F,QAAQA,CAAA;MAAA,OAAAH,iBAAA,CACLwC,YAAY;QAAA,IACXQ,OAAOA,CAAA;UAAA,QAAAhD,iBAAA,CAEFrC,IAAI;YAAA,IAACsC,IAAIA,CAAA;cAAA,OAAEH,KAAK,CAACqG,MAAM;YAAA;YAAA,IAAA1E,SAAA;cAAA,OAAAzB,iBAAA,CACrBH,aAAa;gBAACoB,IAAI;gBAAA,IAAaH,KAAKA,CAAA;kBAAA,OAAEsC,QAAQ,CAAC,CAAC,CAACgD,IAAI;gBAAA;gBAAE1F,OAAO,EAAEA,CAAA,KAAMuF,UAAU,CAAC,IAAI;cAAC;YAAA;UAAA,IAAAjG,iBAAA,CAExFmD,cAAc,EAAKrD,KAAK;QAAA;QAAA,IAAA2B,SAAA;UAAA,IAAA4E,MAAA,GAAAhG,gBAAA,CAAAiG,OAAA;UAAAvE,QAAA,CAAAsE,MAAA,EAAArG,iBAAA,CAK1B4E,WAAW;YAACK,QAAQ,EAAEnF,KAAK;YAAA,IAAEP,IAAIA,CAAA;cAAA,OAAED,gBAAgB,CAACQ,KAAK,CAACqG,MAAM,EAAEI,KAAK,CAAC,CAAC,IAAIzG,KAAK,CAACX,OAAO,CAACA,OAAO,CAAC;YAAA;YAAEqG,QAAQ;UAAA;UAAA,OAAAa,MAAA;QAAA;MAAA;IAAA;IAAA5E,QAAA,EAKlH+E,CAAC,IAAK;MACN,MAAML,MAAM,GAAGrG,KAAK,CAACqG,MAAO;MAC5B;QAAA,IAAAM,MAAA,GAAApG,gBAAA,CAAAqG,OAAA;QAAA3E,QAAA,CAAA0E,MAAA,EAAAzG,iBAAA,CAEK/B,cAAc;UAAA;UAAA,kBAAA0I,CAAA;YAAA,OAED,QAAQ7G,KAAK,CAACZ,IAAI,CAACH,IAAI,CAACY,KAAK,CAACG,KAAK,CAACZ,IAAI,CAACH,IAAI,CAACuE,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;UAAA;UACjFsD,IAAI;UAAA,IACJC,KAAKA,CAAA;YAAA,OAAEV,MAAM,CAACI,KAAK,CAAC,CAAC;UAAA;UAAA,IACrBO,aAAaA,CAAA;YAAA,OAAEX,MAAM,CAACY,QAAQ;UAAA;UAC9BC,SAAS,EAAE,KAAK;UAChBC,MAAM,EAAEA,CAAA,KAAM,KAAKd,MAAM,CAACe,IAAI,CAAC,CAAC;UAAA,IAChCC,YAAYA,CAAA;YAAA,OAAE,CAAChB,MAAM,CAACiB,KAAK,CAAC,CAAC;UAAA;UAAA,IAC7BC,MAAMA,CAAA;YAAA,OAAElB,MAAM,CAACkB,MAAM,CAAC,CAAC;UAAA;UAAA,IACvBC,eAAeA,CAAA;YAAA,OAAAtH,iBAAA,CAAGuD,gBAAgB;cAACtC,IAAI;cAAA,IAAaH,KAAKA,CAAA;gBAAA,OAAEsC,QAAQ,CAAC,CAAC,CAACmE,OAAO;cAAA;cAAE7G,OAAO,EAAEA,CAAA,KAAMuF,UAAU,CAAC,KAAK;YAAC;UAAA;QAAA;QAAA,OAAAQ,MAAA;MAAA;IAIvH;EAAC;AAGP;AAEA,SAASe,YAAYA,CAAC1H,KAA4B,EAAE;EAClD,MAAMsD,QAAQ,GAAGjF,aAAa,CAAC,CAAC;EAChC,OAAA6B,iBAAA,CACGrC,IAAI;IAAA,IACHsC,IAAIA,CAAA;MAAA,OAAEH,KAAK,CAACqG,MAAM;IAAA;IAAA,IAClBhG,QAAQA,CAAA;MAAA,OAAAH,iBAAA,CACLwC,YAAY;QAAA,IAACQ,OAAOA,CAAA;UAAA,OAAAhD,iBAAA,CAAGmD,cAAc,EAAKrD,KAAK;QAAA;QAAA,IAAA2B,SAAA;UAAA,OAAAzB,iBAAA,CAC7C4E,WAAW;YAACK,QAAQ,EAAEnF,KAAK;YAAA,IAAEP,IAAIA,CAAA;cAAA,OAAEO,KAAK,CAACX,OAAO,CAACA,OAAO;YAAA;UAAA;QAAA;MAAA;IAAA;IAAAsC,QAAA,EAI3D0E,MAAM,IACN;IACA;IAAA;MAAA,IAAAsB,MAAA,GAAApH,gBAAA,CAAAqH,OAAA;QAAAC,MAAA,GAAAF,MAAA,CAAAjH,UAAA;QAAAoH,MAAA,GAAAD,MAAA,CAAAnH,UAAA;QAAAqH,MAAA,GAAAD,MAAA,CAAApH,UAAA;QAAAsH,MAAA,GAAAD,MAAA,CAAA/F,WAAA;QAAAiG,MAAA,GAAAD,MAAA,CAAAtH,UAAA;QAAA,CAAAwH,MAAA,EAAAC,KAAA,IAAAlF,eAAA,CAAAgF,MAAA,CAAAjG,WAAA;QAAAoG,MAAA,GAAAF,MAAA,CAAAlG,WAAA;QAAA,CAAAqG,MAAA,EAAAC,KAAA,IAAArF,eAAA,CAAAmF,MAAA,CAAApG,WAAA;QAAAuG,MAAA,GAAAT,MAAA,CAAA9F,WAAA;QAAAwG,MAAA,GAAAD,MAAA,CAAA7H,UAAA;MAAAmH,MAAA,CAAAY,SAAA,GAOgBC,KAAK,IAAK;QACpB,IAAI,CAACA,KAAK,CAACC,OAAO,IAAID,KAAK,CAACE,OAAO,KAAKF,KAAK,CAACG,GAAG,CAACC,WAAW,CAAC,CAAC,KAAK,GAAG,EAAE;UACvEJ,KAAK,CAAC5E,cAAc,CAAC,CAAC;UACtB,IAAIuC,MAAM,CAAC,CAAC,CAACiB,KAAK,CAAC,CAAC,IAAI,CAACjB,MAAM,CAAC,CAAC,CAACkB,MAAM,CAAC,CAAC,EAAE,KAAKlB,MAAM,CAAC,CAAC,CAACe,IAAI,CAAC,CAAC;QAClE;MACF,CAAC;MAAAnF,QAAA,CAAA8F,MAAA,QAIqD/I,YAAY,CAACgB,KAAK,CAACZ,IAAI,CAACH,IAAI,CAAC;MAAAgD,QAAA,CAAA+F,MAAA,EAAA9H,iBAAA,CAE9ErC,IAAI;QAAA,IAACsC,IAAIA,CAAA;UAAA,OAAEH,KAAK,CAACuD,YAAY;QAAA;QAAA5B,QAAA,EAC1BvB,IAAI;UAAA,IAAA2I,MAAA,GAAAxI,gBAAA,CAAAyI,QAAA;UAAAnI,QAAA,CAAAC,GAAA;YAAA,IAAAmI,KAAA,GAGI7I,IAAI,CAAC,CAAC;cAAA8I,KAAA,GACFlJ,KAAK,CAACZ,IAAI,CAACH,IAAI,CAACY,KAAK,CAACG,KAAK,CAACZ,IAAI,CAACH,IAAI,CAACuE,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;cAAA2F,KAAA,GAC9D7F,QAAQ,CAAC,CAAC,CAAClB,QAAQ;cAAAgH,KAAA,GACd9F,QAAQ,CAAC,CAAC,CAAClB,QAAQ;YAAA6G,KAAA,KAAAnI,GAAA,CAAAM,CAAA,IAAAC,cAAA,CAAA0H,MAAA,UAAAjI,GAAA,CAAAM,CAAA,GAAA6H,KAAA;YAAAC,KAAA,KAAApI,GAAA,CAAAQ,CAAA,IAAAD,cAAA,CAAA0H,MAAA,cAAAjI,GAAA,CAAAQ,CAAA,GAAA4H,KAAA;YAAAC,KAAA,KAAArI,GAAA,CAAAS,CAAA,IAAAF,cAAA,CAAA0H,MAAA,WAAAjI,GAAA,CAAAS,CAAA,GAAA4H,KAAA;YAAAC,KAAA,KAAAtI,GAAA,CAAA0B,CAAA,IAAAnB,cAAA,CAAA0H,MAAA,gBAAAjI,GAAA,CAAA0B,CAAA,GAAA4G,KAAA;YAAA,OAAAtI,GAAA;UAAA;YAAAM,CAAA,EAAAK,SAAA;YAAAH,CAAA,EAAAG,SAAA;YAAAF,CAAA,EAAAE,SAAA;YAAAe,CAAA,EAAAf;UAAA;UAAA,OAAAsH,MAAA;QAAA;MAIlC,IAAAb,MAAA,EAAAC,KAAA;MAAAlG,QAAA,CAAA+F,MAAA,EAAA9H,iBAAA,CAEFuD,gBAAgB;QAAA,IACftC,IAAIA,CAAA;UAAA,OAAEkF,MAAM,CAAC,CAAC,CAACkB,MAAM,CAAC,CAAC,GAAG,yBAAyB,GAAG,qBAAqB;QAAA;QAAA,IAC3EvG,KAAKA,CAAA;UAAA,OAAEsC,QAAQ,CAAC,CAAC,CAAC+F,YAAY;QAAA;QAAA,IAC9BnF,QAAQA,CAAA;UAAA,OAAE,CAACmC,MAAM,CAAC,CAAC,CAACiB,KAAK,CAAC,CAAC,IAAIjB,MAAM,CAAC,CAAC,CAACkB,MAAM,CAAC,CAAC;QAAA;QAChD3G,OAAO,EAAEA,CAAA,KAAM,KAAKyF,MAAM,CAAC,CAAC,CAACe,IAAI,CAAC;MAAC,IAAAiB,MAAA,EAAAC,KAAA;MAAAE,MAAA,CAAAc,OAAA,GAS3BZ,KAAK,IAAKrC,MAAM,CAAC,CAAC,CAACY,QAAQ,CAACyB,KAAK,CAACa,aAAa,CAACxC,KAAK,CAAC;MAAA1F,cAAA,CAAAmH,MAAA,gBADpD,KAAK;MAAA3H,QAAA,OAAAQ,cAAA,CAAAwG,MAAA,gBArCTvE,QAAQ,CAAC,CAAC,CAACkG,UAAU;MAAA3I,QAAA,OAAAuD,aAAA,CAAAoE,MAAA,WAoCtBnC,MAAM,CAAC,CAAC,CAACI,KAAK,CAAC,CAAC;MAAA/E,oBAAA;MAAA,OAAAiG,MAAA;IAAA;EAOhC;AAGP;AAEA,SAAS8B,YAAYA,CAACzJ,KAA4B,EAAE;EAClD,MAAM0J,MAAM,GAAGpM,UAAU,CAAC,MAAM;IAC9B,IAAI;MACF,OAAO;QAAEqM,EAAE,EAAE,IAAa;QAAE5C,KAAK,EAAE6C,IAAI,CAACC,KAAK,CAAC7J,KAAK,CAACX,OAAO,CAACA,OAAO;MAAyB,CAAC;IAC/F,CAAC,CAAC,MAAM;MACN,OAAO;QAAEsK,EAAE,EAAE;MAAe,CAAC;IAC/B;EACF,CAAC,CAAC;EACF,MAAMG,WAAW,GAAGA,CAAA,KAA2B;IAC7C,MAAMC,MAAM,GAAGL,MAAM,CAAC,CAAC;IACvB,OAAOK,MAAM,CAACJ,EAAE,GAAGI,MAAM,CAAChD,KAAK,GAAG,IAAI;EACxC,CAAC;EAED,OAAA7G,iBAAA,CACGwC,YAAY;IAAA,IAACQ,OAAOA,CAAA;MAAA,OAAAhD,iBAAA,CAAGmD,cAAc,EAAKrD,KAAK;IAAA;IAAA,IAAA2B,SAAA;MAAA,IAAAqI,MAAA,GAAAzJ,gBAAA,CAAAiG,OAAA;MAAAvE,QAAA,CAAA+H,MAAA,EAAA9J,iBAAA,CAE3CrC,IAAI;QAAA,IAACsC,IAAIA,CAAA;UAAA,OAAEuJ,MAAM,CAAC,CAAC,CAACC,EAAE;QAAA;QAAA,IAAEtJ,QAAQA,CAAA;UAAA,OAAAH,iBAAA,CAAG4E,WAAW;YAACK,QAAQ,EAAEnF,KAAK;YAAA,IAAEP,IAAIA,CAAA;cAAA,OAAEO,KAAK,CAACX,OAAO,CAACA,OAAO;YAAA;UAAA;QAAA;QAAA,IAAAsC,SAAA;UAAA,OAAAzB,iBAAA,CACzFrC,IAAI;YAAA,IACHsC,IAAIA,CAAA;cAAA,OAAEH,KAAK,CAACoF,YAAY,KAAK3D,SAAS;YAAA;YAAA,IACtCpB,QAAQA,CAAA;cAAA,OAAAH,iBAAA,CAAG4E,WAAW;gBAACK,QAAQ,EAAEnF,KAAK;gBAAA,IAAEP,IAAIA,CAAA;kBAAA,OAAEmK,IAAI,CAACK,SAAS,CAACH,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAAA;cAAA;YAAA;YAAA,IAAAnI,SAAA;cAAA,OAAAzB,iBAAA,CAEnFpB,qBAAqB;gBAAA,IAACoL,IAAIA,CAAA;kBAAA,OAAEJ,WAAW,CAAC,CAAC;gBAAA;gBAAEK,OAAO,EAAE;cAAG;YAAA;UAAA;QAAA;MAAA;MAAA,OAAAH,MAAA;IAAA;EAAA;AAMpE;AAEA,SAASI,qBAAqBA,CAACpK,KAA4B,EAAE;EAC3D,MAAMsD,QAAQ,GAAGjF,aAAa,CAAC,CAAC;EAChC,MAAM,CAACgM,WAAW,EAAEC,cAAc,CAAC,GAAG9M,YAAY,CAAuB;IAAE8B,QAAQ,EAAE,OAAO;IAAEiL,SAAS,EAAE,MAAM;IAAEC,IAAI,EAAE;EAAQ,CAAC,CAAC;EACjI5M,OAAO,CAAC,MAAM;IACZ,IAAI,CAACoC,KAAK,CAACyK,qBAAqB,EAAE;IAClC,IAAI;MACFH,cAAc,CAAC7L,wBAAwB,CAACiM,YAAY,CAACC,OAAO,CAAC3K,KAAK,CAACyK,qBAAqB,CAAC,CAAC,CAAC;IAC7F,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ,CAAC,CAAC;EACF,MAAMG,MAAM,GAAIC,KAAoC,IAAK;IACvD,MAAMC,IAAI,GAAG;MAAE,GAAGT,WAAW,CAAC,CAAC;MAAE,GAAGQ;IAAM,CAAC;IAC3CP,cAAc,CAACQ,IAAI,CAAC;IACpB,IAAI9K,KAAK,CAACyK,qBAAqB,EAAE;MAC/B,IAAI;QACFC,YAAY,CAACK,OAAO,CAAC/K,KAAK,CAACyK,qBAAqB,EAAEb,IAAI,CAACK,SAAS,CAACa,IAAI,CAAC,CAAC;MACzE,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ;EACF,CAAC;EACD,MAAMrL,IAAI,GAAGnC,UAAU,CAAC,MAAMkB,sBAAsB,CAACwB,KAAK,CAACX,OAAO,EAAEgL,WAAW,CAAC,CAAC,CAAC/K,QAAQ,CAAC,CAAC;EAC5F,MAAMiL,SAAS,GAAGA,CAAA,KAChBF,WAAW,CAAC,CAAC,CAACE,SAAS,KAAK,MAAM,GAC9B7L,iBAAiB,CAACsB,KAAK,CAACZ,IAAI,CAACH,IAAI,CAAC,KAAK,KAAK,IAAIe,KAAK,CAACX,OAAO,CAACE,SAAS,KAAK,2BAA2B,GACrG,IAAI,GACJ,GAAG,GACL8K,WAAW,CAAC,CAAC,CAACE,SAAS;EAC7B,MAAM,CAACS,IAAI,EAAEC,OAAO,CAAC,GAAGzN,YAAY,CAAC,CAAC,CAAC;EACvCH,YAAY,CAAC,MAAM;IACjBoC,IAAI,CAAC,CAAC;IACN8K,SAAS,CAAC,CAAC;IACXvK,KAAK,CAACoF,YAAY;IAClB6F,OAAO,CAAC,CAAC,CAAC;EACZ,CAAC,CAAC;EACF,MAAMC,QAAQ,GAAGA,CAAA,KAAOlL,KAAK,CAACoF,YAAY,KAAK3D,SAAS,GAAG,GAAG,GAAG4D,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEtF,KAAK,CAACoF,YAAY,CAAE;EACjG,MAAMqC,OAAO,GAAGnK,UAAU,CAAC,MAAMsB,kBAAkB,CAACa,IAAI,CAAC,CAAC,EAAE8K,SAAS,CAAC,CAAC,EAAE;IAAEY,IAAI,EAAED,QAAQ,CAAC,CAAC,GAAG,CAAC;IAAEE,MAAM,EAAEJ,IAAI,CAAC,CAAC,GAAGE,QAAQ,CAAC;EAAE,CAAC,CAAC,CAAC;EAChI,MAAMG,QAAQ,GAAGA,CAAA,KACfpN,OAAO,CAACqN,MAAM,CACZ;IAAA,IAAAC,MAAA,GAAAhL,gBAAA,CAAAiL,QAAA;MAAAC,MAAA,GAAAF,MAAA,CAAA7K,UAAA;MAAA,CAAAgL,MAAA,EAAAC,KAAA,IAAA1I,eAAA,CAAAwI,MAAA,CAAAzJ,WAAA;MAAA4J,MAAA,GAAAF,MAAA,CAAA1J,WAAA;MAAA,CAAA6J,MAAA,EAAAC,KAAA,IAAA7I,eAAA,CAAA2I,MAAA,CAAA5J,WAAA;MAAA+J,MAAA,GAAAF,MAAA,CAAA7J,WAAA;MAAA,CAAAgK,MAAA,EAAAC,KAAA,IAAAhJ,eAAA,CAAA8I,MAAA,CAAA/J,WAAA;IAAAC,QAAA,CAAAsJ,MAAA,EAAArL,iBAAA,CAEK9B,MAAM;MAAA,IACL8N,KAAKA,CAAA;QAAA,OAAE5I,QAAQ,CAAC,CAAC,CAAC6I,WAAW;MAAA;MAAA,IAC7BpF,KAAKA,CAAA;QAAA,OAAEsD,WAAW,CAAC,CAAC,CAAC/K,QAAQ;MAAA;MAAA,IAC7B4E,QAAQA,CAAA;QAAA,OAAElE,KAAK,CAACX,OAAO,CAACC,QAAQ,KAAK,QAAQ;MAAA;MAC7C8M,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC;MAC1DpF,aAAa,EAAGD,KAAK,IAAK;QACxB,IAAIA,KAAK,EAAE6D,MAAM,CAAC;UAAEtL,QAAQ,EAAEyH;QAAM,CAAC,CAAC;MACxC;IAAC,IAAA2E,MAAA,EAAAC,KAAA;IAAA1J,QAAA,CAAAsJ,MAAA,EAAArL,iBAAA,CAEF9B,MAAM;MAAA,IACL8N,KAAKA,CAAA;QAAA,OAAE5I,QAAQ,CAAC,CAAC,CAAC+I,YAAY;MAAA;MAAA,IAC9BtF,KAAKA,CAAA;QAAA,OAAEsD,WAAW,CAAC,CAAC,CAACE,SAAS;MAAA;MAAA,IAC9B6B,OAAOA,CAAA;QAAA,OAAE,CACP;UAAErF,KAAK,EAAE,MAAM;UAAEmF,KAAK,EAAE5I,QAAQ,CAAC,CAAC,CAACgJ;QAAoB,CAAC,EACxD;UAAEvF,KAAK,EAAE,GAAG;UAAEmF,KAAK,EAAE5I,QAAQ,CAAC,CAAC,CAACiJ;QAAS,CAAC,EAC1C;UAAExF,KAAK,EAAE,GAAG;UAAEmF,KAAK,EAAE5I,QAAQ,CAAC,CAAC,CAACkJ;QAAa,CAAC,EAC9C;UAAEzF,KAAK,EAAE,IAAI;UAAEmF,KAAK,EAAE5I,QAAQ,CAAC,CAAC,CAACmJ;QAAO,CAAC,EACzC;UAAE1F,KAAK,EAAE,GAAG;UAAEmF,KAAK,EAAE;QAAI,CAAC,CAC3B;MAAA;MACDlF,aAAa,EAAGD,KAAK,IAAK;QACxB,IAAIA,KAAK,EAAE6D,MAAM,CAAC;UAAEL,SAAS,EAAExD;QAAM,CAAC,CAAC;MACzC;IAAC,IAAA8E,MAAA,EAAAC,KAAA;IAAA7J,QAAA,CAAAsJ,MAAA,EAAArL,iBAAA,CAEF9B,MAAM;MAAA,IACL8N,KAAKA,CAAA;QAAA,OAAE5I,QAAQ,CAAC,CAAC,CAACoJ,OAAO;MAAA;MAAA,IACzB3F,KAAKA,CAAA;QAAA,OAAEsD,WAAW,CAAC,CAAC,CAACG,IAAI;MAAA;MAAA,IACzB4B,OAAOA,CAAA;QAAA,OAAE,CACP;UAAErF,KAAK,EAAE,OAAO;UAAEmF,KAAK,EAAE5I,QAAQ,CAAC,CAAC,CAACqJ;QAAU,CAAC,EAC/C;UAAE5F,KAAK,EAAE,KAAK;UAAEmF,KAAK,EAAE5I,QAAQ,CAAC,CAAC,CAACsJ;QAAO,CAAC,CAC3C;MAAA;MACD5F,aAAa,EAAGD,KAAK,IAAK;QACxB,IAAIA,KAAK,KAAK,OAAO,IAAIA,KAAK,KAAK,KAAK,EAAE6D,MAAM,CAAC;UAAEJ,IAAI,EAAEzD;QAAM,CAAC,CAAC;MACnE;IAAC,IAAAiF,MAAA,EAAAC,KAAA;IAAA,OAAAV,MAAA;EAAA,IAGN,EACD;IAAEvK,KAAK,EAAEsC,QAAQ,CAAC,CAAC,CAACuJ;EAAY,CAClC,CAAC;EACH,MAAMC,OAAO,GAAGxP,UAAU,CAAC,MAAMmK,OAAO,CAAC,CAAC,CAAC0D,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;EACzD,MAAMA,IAAI,GAAG7N,UAAU,CAAC,MAAMmK,OAAO,CAAC,CAAC,CAAC0D,IAAI,CAACtL,KAAK,CAAC,CAAC,CAAC,CAAC;EAEtD,OAAAK,iBAAA,CACGwC,YAAY;IAAA,IACXQ,OAAOA,CAAA;MAAA,QAAAhD,iBAAA,CAEFH,aAAa;QAACoB,IAAI;QAAA,IAA6BH,KAAKA,CAAA;UAAA,OAAEsC,QAAQ,CAAC,CAAC,CAACuJ,WAAW;QAAA;QAAEjM,OAAO,EAAEA,CAAA,KAAM,KAAKyK,QAAQ,CAAC;MAAC,IAAAnL,iBAAA,CAC5GmD,cAAc,EAAKrD,KAAK;IAAA;IAAA,IAAA2B,SAAA;MAAA,OAAAzB,iBAAA,CAI5BrC,IAAI;QAAA,IAACsC,IAAIA,CAAA;UAAA,OAAEkK,WAAW,CAAC,CAAC,CAACG,IAAI,KAAK,OAAO;QAAA;QAAA,IAAEnK,QAAQA,CAAA;UAAA,OAAAH,iBAAA,CAAG4E,WAAW;YAACK,QAAQ,EAAEnF,KAAK;YAAA,IAAEP,IAAIA,CAAA;cAAA,OAAEA,IAAI,CAAC,CAAC;YAAA;UAAA;QAAA;QAAA,IAAAkC,SAAA;UAAA,OAAAzB,iBAAA,CAC7FrC,IAAI;YAAA,IACHsC,IAAIA,CAAA;cAAA,OAAE2M,OAAO,CAAC,CAAC,CAAChN,MAAM,GAAG,CAAC;YAAA;YAAA,IAC1BO,QAAQA,CAAA;cAAA,OAAAH,iBAAA,CAAG5B,WAAW;gBAAC6C,IAAI;gBAAA,IAAeH,KAAKA,CAAA;kBAAA,OAAEsC,QAAQ,CAAC,CAAC,CAACyJ,SAAS;gBAAA;gBAAA,IAAEC,WAAWA,CAAA;kBAAA,OAAE1J,QAAQ,CAAC,CAAC,CAAC2J,kBAAkB;gBAAA;cAAA;YAAA;YAAA,IAAAtL,SAAA;cAAA,IAAAuL,MAAA,GAAA3M,gBAAA,CAAA4M,QAAA;gBAAAC,MAAA,GAAAF,MAAA,CAAAxM,UAAA;gBAAA2M,MAAA,GAAAD,MAAA,CAAA1M,UAAA;gBAAA4M,MAAA,GAAAD,MAAA,CAAA3M,UAAA;gBAAA6M,MAAA,GAAAF,MAAA,CAAArL,WAAA;gBAAAwL,MAAA,GAAAJ,MAAA,CAAApL,WAAA;gBAAA,CAAAyL,MAAA,EAAAC,KAAA,IAAAzK,eAAA,CAAAuK,MAAA,CAAAxL,WAAA;gBAAA2L,MAAA,GAAAF,MAAA,CAAAzL,WAAA;gBAAA,CAAA4L,MAAA,EAAAC,KAAA,IAAA5K,eAAA,CAAA0K,MAAA,CAAA3L,WAAA;cAAAC,QAAA,CAAAqL,MAAA,EAAApN,iBAAA,CAMxGzC,GAAG;gBAAA,IAACqQ,IAAIA,CAAA;kBAAA,OAAEhB,OAAO,CAAC,CAAC;gBAAA;gBAAAnL,QAAA,EACjBA,CAACoM,MAAM,EAAEC,KAAK;kBAAA,IAAAC,MAAA,GAAA1N,gBAAA,CAAA2N,QAAA;oBAAAC,MAAA,GAAAF,MAAA,CAAAvN,UAAA;kBAAAuB,QAAA,CAAAkM,MAAA,QAEJJ,MAAM,IAAIzK,QAAQ,CAAC,CAAC,CAAC8K,MAAM,CAAC;oBAAEC,MAAM,EAAEL,KAAK,CAAC,CAAC,GAAG;kBAAE,CAAC,CAAC;kBAAA,OAAAC,MAAA;gBAAA;cAE9D;cAAAhM,QAAA,CAAAsL,MAAA,EAAArN,iBAAA,CAKJzC,GAAG;gBAAA,IAACqQ,IAAIA,CAAA;kBAAA,OAAE3C,IAAI,CAAC,CAAC;gBAAA;gBAAAxJ,QAAA,EACb2M,GAAG;kBAAA,IAAAC,MAAA,GAAAhO,gBAAA,CAAAiO,QAAA;kBAAAvM,QAAA,CAAAsM,MAAA,EAAArO,iBAAA,CAEAzC,GAAG;oBAAA,IAACqQ,IAAIA,CAAA;sBAAA,OAAEhB,OAAO,CAAC,CAAC;oBAAA;oBAAAnL,QAAA,EAAGA,CAAC+E,CAAC,EAAEsH,KAAK;sBAAA,IAAAS,MAAA,GAAAlO,gBAAA,CAAAmO,QAAA;sBAAAzM,QAAA,CAAAwM,MAAA,QAAUH,GAAG,CAACN,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;sBAAA,OAAAS,MAAA;oBAAA;kBAAM;kBAAA,OAAAF,MAAA;gBAAA;cAErE;cAAAtM,QAAA,CAAAiL,MAAA,EAAAhN,iBAAA,CAINrC,IAAI;gBAAA,IAACsC,IAAIA,CAAA;kBAAA,OAAEsH,OAAO,CAAC,CAAC,CAACkH,gBAAgB;gBAAA;gBAAA,IAAAhN,SAAA;kBAAA,IAAAiN,MAAA,GAAArO,gBAAA,CAAAiE,OAAA;kBAAAvC,QAAA,CAAA2M,MAAA,QACWtL,QAAQ,CAAC,CAAC,CAACuL,qBAAqB;kBAAA,OAAAD,MAAA;gBAAA;cAAA,IAAAnB,MAAA,EAAAC,KAAA;cAAAzL,QAAA,CAAAiL,MAAA,EAAAhN,iBAAA,CAEhFrC,IAAI;gBAAA,IACHsC,IAAIA,CAAA;kBAAA,OAAEH,KAAK,CAACoF,YAAY,KAAK3D,SAAS;gBAAA;gBAAA,IACtCpB,QAAQA,CAAA;kBAAA,OAAAH,iBAAA,CACLrC,IAAI;oBAAA,IAACsC,IAAIA,CAAA;sBAAA,OAAEsH,OAAO,CAAC,CAAC,CAACqH,SAAS,GAAG,GAAG;oBAAA;oBAAA,IAAAnN,SAAA;sBAAA,IAAAoN,MAAA,GAAAxO,gBAAA,CAAAyO,QAAA;wBAAAC,MAAA,GAAAF,MAAA,CAAArO,UAAA;wBAAA,CAAAwO,MAAA,EAAAC,MAAA,IAAAlM,eAAA,CAAAgM,MAAA,CAAAjN,WAAA;wBAAAoN,MAAA,GAAAF,MAAA,CAAAlN,WAAA;wBAAAqN,MAAA,GAAAD,MAAA,CAAA1O,UAAA;wBAAA,CAAA4O,MAAA,EAAAC,KAAA,IAAAtM,eAAA,CAAAoM,MAAA,CAAArN,WAAA;wBAAAwN,MAAA,GAAAF,MAAA,CAAAtN,WAAA;wBAAAyN,MAAA,GAAAD,MAAA,CAAAxN,WAAA;wBAAA,CAAA0N,MAAA,EAAAC,KAAA,IAAA1M,eAAA,CAAAwM,MAAA,CAAAzN,WAAA;wBAAA4N,MAAA,GAAAF,MAAA,CAAA1N,WAAA;wBAAA6N,MAAA,GAAAD,MAAA,CAAA5N,WAAA;wBAAA,CAAA8N,MAAA,EAAAC,KAAA,IAAA9M,eAAA,CAAA4M,MAAA,CAAA7N,WAAA;wBAAAgO,MAAA,GAAAZ,MAAA,CAAApN,WAAA;wBAAA,CAAAiO,MAAA,EAAAC,MAAA,IAAAjN,eAAA,CAAA+M,MAAA,CAAAhO,WAAA;sBAAAC,QAAA,CAAA8M,MAAA,EAAA7O,iBAAA,CAEhClC,MAAM;wBAAC4G,IAAI;wBAAMC,OAAO;wBAAA,IAASX,QAAQA,CAAA;0BAAA,OAAE8G,IAAI,CAAC,CAAC,KAAK,CAAC;wBAAA;wBAAEpK,OAAO,EAAEA,CAAA,KAAMqK,OAAO,CAACD,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;wBAAA,IAAArJ,SAAA;0BAAA,OACzF2B,QAAQ,CAAC,CAAC,CAAC6M,QAAQ;wBAAA;sBAAA,IAAAjB,MAAA,EAAAC,MAAA;sBAAAlN,QAAA,CAAAmN,MAAA,QAGnBpE,IAAI,CAAC,CAAC,GAAGE,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAAoE,MAAA,EAAAC,KAAA;sBAAAtN,QAAA,CAAAmN,MAAA,QAAG/J,IAAI,CAAC+K,GAAG,CAAC,CAACpF,IAAI,CAAC,CAAC,GAAG,CAAC,IAAIE,QAAQ,CAAC,CAAC,EAAEzD,OAAO,CAAC,CAAC,CAACqH,SAAS,GAAG,CAAC,CAAC,EAAAY,MAAA,EAAAC,KAAA;sBAAA1N,QAAA,CAAAmN,MAAA,QAAK3H,OAAO,CAAC,CAAC,CAACqH,SAAS,GAAG,CAAC,EAAAgB,MAAA,EAAAC,KAAA;sBAAA9N,QAAA,CAAA8M,MAAA,EAAA7O,iBAAA,CAEpHlC,MAAM;wBACL4G,IAAI;wBACJC,OAAO;wBAAA,IACPX,QAAQA,CAAA;0BAAA,OAAE,CAAC8G,IAAI,CAAC,CAAC,GAAG,CAAC,IAAIE,QAAQ,CAAC,CAAC,IAAIzD,OAAO,CAAC,CAAC,CAACqH,SAAS,GAAG,CAAC;wBAAA;wBAC9DlO,OAAO,EAAEA,CAAA,KAAMqK,OAAO,CAACD,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;wBAAA,IAAArJ,SAAA;0BAAA,OAEjC2B,QAAQ,CAAC,CAAC,CAACwH,IAAI;wBAAA;sBAAA,IAAAmF,MAAA,EAAAC,MAAA;sBAAA,OAAAnB,MAAA;oBAAA;kBAAA;gBAAA;gBAAA,IAAApN,SAAA;kBAAA,OAAAzB,iBAAA,CAMvBmE,SAAS;oBAAA,IAACC,KAAKA,CAAA;sBAAA,OAAEmD,OAAO,CAAC,CAAC,CAACqH,SAAS,GAAG3D,IAAI,CAAC,CAAC,CAACrL,MAAM,GAAG,CAAC;oBAAA;oBAAA,IAAEc,OAAOA,CAAA;sBAAA,OAAEZ,KAAK,CAACgG,eAAe;oBAAA;kBAAA;gBAAA;cAAA,IAAA4H,MAAA,EAAAC,KAAA;cAAA,OAAAX,MAAA;YAAA;UAAA;QAAA;MAAA;IAAA;EAAA;AAOvG;AAEA,MAAMmD,WAAW,GAAIrQ,KAA4B,IAC/CA,KAAK,CAACsQ,WAAW,IAAI,QAAQtQ,KAAK,CAACX,OAAO,CAACE,SAAS,WAAWS,KAAK,CAACX,OAAO,CAACA,OAAO,EAAE;AAExF,SAASkR,aAAaA,CAACvQ,KAA4B,EAAE;EACnD,OAAAE,iBAAA,CACGwC,YAAY;IAAA,IAACQ,OAAOA,CAAA;MAAA,OAAAhD,iBAAA,CAAGmD,cAAc,EAAKrD,KAAK;IAAA;IAAA,IAAA2B,SAAA;MAAA,IAAA6O,MAAA,GAAAjQ,gBAAA,CAAAkQ,QAAA;QAAAC,MAAA,GAAAF,MAAA,CAAA9P,UAAA;MAAAC,kBAAA,CAAA+P,MAAA,WAEE1Q,KAAK,CAAC2Q,cAAc;MAAA9P,QAAA,CAAAC,GAAA;QAAA,IAAA8P,KAAA,GAAhD5Q,KAAK,CAAC6Q,WAAW;UAAAC,KAAA,GAAsCT,WAAW,CAACrQ,KAAK,CAAC;UAAA+Q,KAAA,GAAO/Q,KAAK,CAACZ,IAAI,CAACH,IAAI;QAAA2R,KAAA,KAAA9P,GAAA,CAAAM,CAAA,IAAAC,cAAA,CAAAqP,MAAA,iBAAA5P,GAAA,CAAAM,CAAA,GAAAwP,KAAA;QAAAE,KAAA,KAAAhQ,GAAA,CAAAQ,CAAA,IAAAD,cAAA,CAAAqP,MAAA,SAAA5P,GAAA,CAAAQ,CAAA,GAAAwP,KAAA;QAAAC,KAAA,KAAAjQ,GAAA,CAAAS,CAAA,IAAAF,cAAA,CAAAqP,MAAA,SAAA5P,GAAA,CAAAS,CAAA,GAAAwP,KAAA;QAAA,OAAAjQ,GAAA;MAAA;QAAAM,CAAA,EAAAK,SAAA;QAAAH,CAAA,EAAAG,SAAA;QAAAF,CAAA,EAAAE;MAAA;MAAA,OAAA+O,MAAA;IAAA;EAAA;AAIzH;AAEA,SAASQ,WAAWA,CAAChR,KAA4B,EAAE;EACjD,MAAMsD,QAAQ,GAAGjF,aAAa,CAAC,CAAC;EAChC,MAAM+B,IAAI,GAAGA,CAAA,KAAMJ,KAAK,CAACsQ,WAAW,IAAItQ,KAAK,CAACuD,YAAY;EAC1D,OAAArD,iBAAA,CACGrC,IAAI;IAAA,IAACsC,IAAIA,CAAA;MAAA,OAAEC,IAAI,CAAC,CAAC;IAAA;IAAA,IAAEC,QAAQA,CAAA;MAAA,OAAAH,iBAAA,CAAG5B,WAAW;QAAC6C,IAAI;QAAuBH,KAAK;QAAA,IAAOgM,WAAWA,CAAA;UAAA,OAAE1J,QAAQ,CAAC,CAAC,CAAC2N,eAAe;QAAA;MAAA;IAAA;IAAAtP,QAAA,EACrHvB,IAAI;MAAA,IAAA8Q,MAAA,GAAA3Q,gBAAA,CAAA4Q,QAAA;MAAAtQ,QAAA,CAAAC,GAAA;QAAA,IAAAsQ,KAAA,GAAmBhR,IAAI,CAAC,CAAC;UAAAiR,KAAA,GAAwErR,KAAK,CAACZ,IAAI,CAACH,IAAI;QAAAmS,KAAA,KAAAtQ,GAAA,CAAAM,CAAA,IAAAC,cAAA,CAAA6P,MAAA,UAAApQ,GAAA,CAAAM,CAAA,GAAAgQ,KAAA;QAAAC,KAAA,KAAAvQ,GAAA,CAAAQ,CAAA,IAAAD,cAAA,CAAA6P,MAAA,gBAAApQ,GAAA,CAAAQ,CAAA,GAAA+P,KAAA;QAAA,OAAAvQ,GAAA;MAAA;QAAAM,CAAA,EAAAK,SAAA;QAAAH,CAAA,EAAAG;MAAA;MAAA,OAAAyP,MAAA;IAAA;EAAI;AAGhI;AAEA,SAASI,aAAaA,CAACtR,KAA4B,EAAE;EACnD,MAAMsD,QAAQ,GAAGjF,aAAa,CAAC,CAAC;EAChC,OAAA6B,iBAAA,CACGwC,YAAY;IAAA,IAACQ,OAAOA,CAAA;MAAA,OAAAhD,iBAAA,CAAGmD,cAAc,EAAKrD,KAAK;IAAA;IAAA,IAAA2B,SAAA;MAAA,IAAA4P,MAAA,GAAAhR,gBAAA,CAAAiR,QAAA;QAAAC,MAAA,GAAAF,MAAA,CAAA7Q,UAAA;MAAAC,kBAAA,CAAA8Q,MAAA,WAIjCzR,KAAK,CAAC2Q,cAAc;MAAA1O,QAAA,CAAAwP,MAAA,QAM5BnO,QAAQ,CAAC,CAAC,CAACoO,gBAAgB;MAAA7Q,QAAA,CAAAC,GAAA;QAAA,IAAA6Q,KAAA,GAPf3R,KAAK,CAAC6Q,WAAW;UAAAe,KAAA,GAIzBvB,WAAW,CAACrQ,KAAK,CAAC;UAAA6R,KAAA,GACX7R,KAAK,CAACZ,IAAI,CAACH,IAAI;QAAA0S,KAAA,KAAA7Q,GAAA,CAAAM,CAAA,IAAAC,cAAA,CAAAoQ,MAAA,iBAAA3Q,GAAA,CAAAM,CAAA,GAAAuQ,KAAA;QAAAC,KAAA,KAAA9Q,GAAA,CAAAQ,CAAA,IAAAD,cAAA,CAAAoQ,MAAA,SAAA3Q,GAAA,CAAAQ,CAAA,GAAAsQ,KAAA;QAAAC,KAAA,KAAA/Q,GAAA,CAAAS,CAAA,IAAAF,cAAA,CAAAoQ,MAAA,gBAAA3Q,GAAA,CAAAS,CAAA,GAAAsQ,KAAA;QAAA,OAAA/Q,GAAA;MAAA;QAAAM,CAAA,EAAAK,SAAA;QAAAH,CAAA,EAAAG,SAAA;QAAAF,CAAA,EAAAE;MAAA;MAAA,OAAA8P,MAAA;IAAA;EAAA;AAOrC;AAEA,SAASO,aAAaA,CAAC9R,KAA4B,EAAE;EACnD,MAAMsD,QAAQ,GAAGjF,aAAa,CAAC,CAAC;EAChC,OAAA6B,iBAAA,CACGwC,YAAY;IAAA,IAACQ,OAAOA,CAAA;MAAA,OAAAhD,iBAAA,CAAGmD,cAAc,EAAKrD,KAAK;IAAA;IAAA,IAAA2B,SAAA;MAAA,IAAAoQ,MAAA,GAAAxR,gBAAA,CAAAyR,QAAA;QAAAC,MAAA,GAAAF,MAAA,CAAArR,UAAA;MAAAC,kBAAA,CAAAsR,MAAA,WAIjCjS,KAAK,CAAC2Q,cAAc;MAAA1O,QAAA,CAAAgQ,MAAA,QAO5B3O,QAAQ,CAAC,CAAC,CAAC4O,gBAAgB;MAAArR,QAAA,CAAAC,GAAA;QAAA,IAAAqR,KAAA,GARfnS,KAAK,CAAC6Q,WAAW;UAAAuB,KAAA,GAKzB/B,WAAW,CAACrQ,KAAK,CAAC;UAAAqS,KAAA,GACXrS,KAAK,CAACZ,IAAI,CAACH,IAAI;QAAAkT,KAAA,KAAArR,GAAA,CAAAM,CAAA,IAAAC,cAAA,CAAA4Q,MAAA,iBAAAnR,GAAA,CAAAM,CAAA,GAAA+Q,KAAA;QAAAC,KAAA,KAAAtR,GAAA,CAAAQ,CAAA,IAAAD,cAAA,CAAA4Q,MAAA,SAAAnR,GAAA,CAAAQ,CAAA,GAAA8Q,KAAA;QAAAC,KAAA,KAAAvR,GAAA,CAAAS,CAAA,IAAAF,cAAA,CAAA4Q,MAAA,gBAAAnR,GAAA,CAAAS,CAAA,GAAA8Q,KAAA;QAAA,OAAAvR,GAAA;MAAA;QAAAM,CAAA,EAAAK,SAAA;QAAAH,CAAA,EAAAG,SAAA;QAAAF,CAAA,EAAAE;MAAA;MAAA,OAAAsQ,MAAA;IAAA;EAAA;AAOrC;AAEA,SAASO,cAAcA,CAACtS,KAA4B,EAAE;EACpD,MAAMsD,QAAQ,GAAGjF,aAAa,CAAC,CAAC;EAChC,OAAA6B,iBAAA,CACG5B,WAAW;IACV6C,IAAI;IAAA,IACJH,KAAKA,CAAA;MAAA,OAAEsC,QAAQ,CAAC,CAAC,CAACiP,SAAS;IAAA;IAAA,IAC3BvF,WAAWA,CAAA;MAAA,OAAEhN,KAAK,CAACX,OAAO,CAACE,SAAS,IAAI+D,QAAQ,CAAC,CAAC,CAACkP,UAAU;IAAA;IAAA,IAC7DC,MAAMA,CAAA;MAAA,OAAAvS,iBAAA,CACHrC,IAAI;QAAA,IAACsC,IAAIA,CAAA;UAAA,OAAEH,KAAK,CAACuD,YAAY;QAAA;QAAA5B,QAAA,EAC1BvB,IAAI;UAAA,IAAAsS,MAAA,GAAAnS,gBAAA,CAAAoS,QAAA;YAAAC,MAAA,GAAAF,MAAA,CAAAhS,UAAA;YAAAmS,MAAA,GAAAD,MAAA,CAAA5Q,WAAA;YAAA,CAAA8Q,MAAA,EAAAC,MAAA,IAAA9P,eAAA,CAAA4P,MAAA,CAAA7Q,WAAA;UAAAC,QAAA,CAAAyQ,MAAA,QAGDpP,QAAQ,CAAC,CAAC,CAAClB,QAAQ,EAAA0Q,MAAA,EAAAC,MAAA;UAAAlS,QAAA,OAAAQ,cAAA,CAAAqR,MAAA,UAF8CtS,IAAI,CAAC,CAAC;UAAA,OAAAsS,MAAA;QAAA;MAI3E;IAAA;EAAA;AAKX;AAEA,MAAMM,iBAAqC,GAAG,CAC5C;EAAEC,EAAE,EAAE,UAAU;EAAEvT,KAAK,EAAEP,UAAU;EAAE+T,SAAS,EAAEjN,gBAAgB;EAAEkN,QAAQ,EAAE;AAAK,CAAC,EAClF;EACEF,EAAE,EAAE,OAAO;EACXvT,KAAK,EAAEA,CAACN,IAAI,EAAEC,OAAO,KAAKV,sBAAsB,CAAC;IAAE,GAAGS,IAAI;IAAEG,SAAS,EAAEF,OAAO,CAACE,SAAS,IAAIH,IAAI,CAACG;EAAU,CAAC,CAAC,KAAK,OAAO;EACzH2T,SAAS,EAAE3C;AACb,CAAC,EACD;EACE0C,EAAE,EAAE,KAAK;EACTvT,KAAK,EAAEA,CAACN,IAAI,EAAEC,OAAO,KAAKV,sBAAsB,CAAC;IAAE,GAAGS,IAAI;IAAEG,SAAS,EAAEF,OAAO,CAACE,SAAS,IAAIH,IAAI,CAACG;EAAU,CAAC,CAAC,KAAK,KAAK;EACvH2T,SAAS,EAAElC;AACb,CAAC,EACD;EACEiC,EAAE,EAAE,MAAM;EACVvT,KAAK,EAAEA,CAACN,IAAI,EAAEC,OAAO,KACnBA,OAAO,CAACC,QAAQ,KAAK,MAAM,IAAIX,sBAAsB,CAAC;IAAE,GAAGS,IAAI;IAAEG,SAAS,EAAEF,OAAO,CAACE,SAAS,IAAIH,IAAI,CAACG;EAAU,CAAC,CAAC,KAAK,MAAM;EAC/H2T,SAAS,EAAEzJ;AACb,CAAC,EACD;EACEwJ,EAAE,EAAE,gBAAgB;EACpBvT,KAAK,EAAEA,CAACN,IAAI,EAAEC,OAAO,KAAKV,sBAAsB,CAAC;IAAE,GAAGS,IAAI;IAAEG,SAAS,EAAEF,OAAO,CAACE,SAAS,IAAIH,IAAI,CAACG;EAAU,CAAC,CAAC,KAAK,gBAAgB;EAClI2T,SAAS,EAAE9I;AACb,CAAC,EACD;EACE6I,EAAE,EAAE,OAAO;EACXvT,KAAK,EAAEA,CAACN,IAAI,EAAEC,OAAO,KAAKV,sBAAsB,CAAC;IAAE,GAAGS,IAAI;IAAEG,SAAS,EAAEF,OAAO,CAACE,SAAS,IAAIH,IAAI,CAACG;EAAU,CAAC,CAAC,KAAK,OAAO;EACzH2T,SAAS,EAAE5B;AACb,CAAC,EACD;EACE2B,EAAE,EAAE,OAAO;EACXvT,KAAK,EAAEA,CAACN,IAAI,EAAEC,OAAO,KAAKV,sBAAsB,CAAC;IAAE,GAAGS,IAAI;IAAEG,SAAS,EAAEF,OAAO,CAACE,SAAS,IAAIH,IAAI,CAACG;EAAU,CAAC,CAAC,KAAK,OAAO;EACzH2T,SAAS,EAAEpB;AACb,CAAC,EACD;EAAEmB,EAAE,EAAE,MAAM;EAAEvT,KAAK,EAAEA,CAAC0T,KAAK,EAAE/T,OAAO,KAAKA,OAAO,CAACC,QAAQ,KAAK,MAAM;EAAE4T,SAAS,EAAExL,YAAY;EAAEyL,QAAQ,EAAE;AAAK,CAAC,EAC/G;EAAEF,EAAE,EAAE,QAAQ;EAAEvT,KAAK,EAAEA,CAAA,KAAM,IAAI;EAAEwT,SAAS,EAAEZ;AAAe,CAAC,CAC/D;;AAED;;AAEA,OAAO,MAAMe,kBAAkB,GAAIC,KAAa,IAAa;EAC3D,IAAIA,KAAK,GAAG,IAAI,EAAE,OAAO,GAAGA,KAAK,IAAI;EACrC,IAAIA,KAAK,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,GAAG,CAACA,KAAK,GAAG,IAAI,EAAEC,OAAO,CAAC,CAAC,CAAC,KAAK;EACjE,OAAO,GAAG,CAACD,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,EAAEC,OAAO,CAAC,CAAC,CAAC,KAAK;AACnD,CAAC;AAED,eAAe,SAASC,QAAQA,CAACxT,KAAoB,EAAE;EACrD,MAAMsD,QAAQ,GAAGjF,aAAa,CAAC,CAAC;EAChC,MAAM,CAACoI,KAAK,EAAEQ,QAAQ,CAAC,GAAGzJ,YAAY,CAAC,EAAE,CAAC;EAC1C,MAAM,CAACiW,UAAU,EAAEC,aAAa,CAAC,GAAGlW,YAAY,CAAC,EAAE,CAAC;EACpD,MAAM,CAACmW,cAAc,EAAEC,iBAAiB,CAAC,GAAGpW,YAAY,CAAC,CAAC,CAAC;EAC3D,MAAM8J,KAAK,GAAGhK,UAAU,CAAC,MAAMmJ,KAAK,CAAC,CAAC,KAAKgN,UAAU,CAAC,CAAC,CAAC;EACxD,MAAMI,iBAAiB,GAAGA,CAAA,KAAM7T,KAAK,CAAC8T,SAAS,IAAI,EAAE;EACrD,MAAMC,YAAY,GAAG3W,QAAQ,CAAC4W,MAAM,CAAuE;IACzG5W,QAAQ,EAAE,MAAO6W,KAAK,IAAK;MACzB,MAAMjU,KAAK,CAACoH,IAAI,CAAE6M,KAAK,CAAC5U,OAAO,CAAC;MAChC,OAAO4U,KAAK;IACd,CAAC;IACDC,SAAS,EAAGC,KAAK,IAAK;MACpB,IAAInU,KAAK,CAACZ,IAAI,CAACH,IAAI,KAAKkV,KAAK,CAAClV,IAAI,EAAEyU,aAAa,CAACS,KAAK,CAAC9U,OAAO,CAAC;MAChEnB,KAAK,CAACkW,OAAO,CAAC9Q,QAAQ,CAAC,CAAC,CAAC+Q,SAAS,CAAC;IACrC,CAAC;IACDC,OAAO,EAAGC,KAAK,IAAKrW,KAAK,CAACqW,KAAK,CAACA,KAAK,CAACC,OAAO;EAC/C,CAAC,CAAC;EACF,MAAMC,iBAAiB,GAAGnX,UAAU,CAAC,MAAM;IACzC,MAAMoX,IAAI,GAAG/V,sBAAsB,CAACqB,KAAK,CAACZ,IAAI,CAAC;IAC/C,MAAMgB,IAAI,GAAGJ,KAAK,CAACsQ,WAAW,KAAKoE,IAAI,KAAK,KAAK,GAAG1U,KAAK,CAACuD,YAAY,GAAG,IAAI,CAAC;IAC9E,IAAI,CAACnD,IAAI,EAAE,OAAO,IAAI;IACtB,MAAMuU,SAAS,GAAGvU,IAAI,CAACwU,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG;IAChD,OAAO,GAAGxU,IAAI,GAAGuU,SAAS,oBAAoBhB,cAAc,CAAC,CAAC,EAAE;EAClE,CAAC,CAAC;EACF,MAAMkB,qBAAqB,GAAGvX,UAAU,CAAyB,MAAM;IACrE,MAAMoX,IAAI,GAAG/V,sBAAsB,CAACqB,KAAK,CAACZ,IAAI,CAAC;IAC/C,IAAIsV,IAAI,KAAK,OAAO,IAAIA,IAAI,KAAK,KAAK,IAAIA,IAAI,KAAK,OAAO,IAAIA,IAAI,KAAK,OAAO,EAAE,OAAO,IAAI;IAC3F,MAAMtU,IAAI,GAAGqU,iBAAiB,CAAC,CAAC;IAChC,IAAI,CAACrU,IAAI,EAAE,OAAO,IAAI;IAEtB,MAAM0U,SAA0B,GAAG;MACjCxV,QAAQ,EAAE,QAAQ;MAClBD,OAAO,EAAE,EAAE;MACXE,SAAS,EAAES,KAAK,CAACZ,IAAI,CAACG,SAAS,IAAI;IACrC,CAAC;IACD,OAAOsU,iBAAiB,CAAC,CAAC,CAACkB,IAAI,CAAE5P,QAAQ,IAAKA,QAAQ,CAACzF,KAAK,CAACM,KAAK,CAACZ,IAAI,EAAE0V,SAAS,CAAC,CAAC,GAAG,IAAI,GAAGA,SAAS;EACzG,CAAC,CAAC;EACF,MAAM,CAACzV,OAAO,EAAE;IAAE2V;EAAQ,CAAC,CAAC,GAAGzX,cAAc,CAC3C,MAAOsX,qBAAqB,CAAC,CAAC,GAAG,IAAI,GAAG;IAAE5V,IAAI,EAAEe,KAAK,CAACZ,IAAI,CAACH,IAAI;IAAEgW,QAAQ,EAAEjV,KAAK,CAACiV;EAAS,CAAE,EAC5F,YAAY;IACVlB,YAAY,CAACmB,KAAK,CAAC,CAAC;IACpB;IACA;IACA,MAAMC,MAAM,GAAG,MAAMpX,OAAO,CAAC,MAAMiC,KAAK,CAACoV,IAAI,CAAC,CAAC,CAAC;IAChD,MAAMC,WAAW,GAAGF,MAAM,CAAC7V,QAAQ,KAAK,MAAM,GAAG6V,MAAM,CAAC9V,OAAO,GAAG,EAAE;IACpE4H,QAAQ,CAACoO,WAAW,CAAC;IACrB3B,aAAa,CAAC2B,WAAW,CAAC;IAC1B,OAAOF,MAAM;EACf,CACF,CAAC;EACD9X,YAAY,CAAC,MAAM;IACjB,IAAI,CAAC2C,KAAK,CAACsV,eAAe,EAAE;IAC5B,MAAMC,UAAU,GAAGvV,KAAK,CAACsV,eAAe,CAAC,YAAY;MACnD,IAAIT,qBAAqB,CAAC,CAAC,EAAEjB,iBAAiB,CAAE7M,KAAK,IAAKA,KAAK,GAAG,CAAC,CAAC,CAAC,KAChE,MAAMiO,OAAO,CAAC,CAAC;IACtB,CAAC,CAAC;IACF,IAAIO,UAAU,EAAE5X,SAAS,CAAC4X,UAAU,CAAC;EACvC,CAAC,CAAC;EACF,MAAMC,eAAe,GAAGlY,UAAU,CAAC,MAAMuX,qBAAqB,CAAC,CAAC,IAAIxV,OAAO,CAAC,CAAC,CAAC;EAE9E,MAAM8F,QAAQ,GAAG7H,UAAU,CAAC,MAAM;IAChC,MAAM6X,MAAM,GAAGK,eAAe,CAAC,CAAC;IAChC,IAAI,CAACL,MAAM,EAAE,OAAO,IAAI;IACxB,OAAO,CAAC,GAAGtB,iBAAiB,CAAC,CAAC,EAAE,GAAGb,iBAAiB,CAAC,CAACyC,IAAI,CAAEX,SAAS,IAAKA,SAAS,CAACpV,KAAK,CAACM,KAAK,CAACZ,IAAI,EAAE+V,MAAM,CAAC,CAAC,IAAI,IAAI;EACxH,CAAC,CAAC;EAEF9X,YAAY,CAAC,MAAM;IACjB2C,KAAK,CAAC0V,aAAa,GAAGpO,KAAK,CAAC,CAAC,CAAC;EAChC,CAAC,CAAC;EAEF,MAAMF,IAAI,GAAG,MAAAA,CAAA,KAAY;IACvB,IAAI,CAACpH,KAAK,CAACoH,IAAI,IAAI2M,YAAY,CAAC4B,OAAO,CAAC,CAAC,EAAE;IAC3C,MAAM5B,YAAY,CAAC6B,MAAM,CAAC;MAAE3W,IAAI,EAAEe,KAAK,CAACZ,IAAI,CAACH,IAAI;MAAEI,OAAO,EAAEoH,KAAK,CAAC;IAAE,CAAC,CAAC;EACxE,CAAC;EAED,MAAMJ,MAAM,GAAGA,CAAA,KACbrG,KAAK,CAACoH,IAAI,IAAIjC,QAAQ,CAAC,CAAC,EAAEgO,QAAQ,IAAIqC,eAAe,CAAC,CAAC,EAAElW,QAAQ,KAAK,MAAM,GACxE;IACEmH,KAAK;IACLQ,QAAQ;IACRK,KAAK;IACLC,MAAM,EAAEwM,YAAY,CAAC4B,OAAO;IAC5BvO;EACF,CAAC,GACD,IAAI;EAEV;IAAA,IAAAyO,MAAA,GAAAtV,gBAAA,CAAAkF,OAAA;IAAAxD,QAAA,CAAA4T,MAAA,EAAA3V,iBAAA,CAMKpC,MAAM;MAAA,IAAA6D,SAAA;QAAA,QAAAzB,iBAAA,CACJxC,KAAK;UAAA,IAACyC,IAAIA,CAAA;YAAA,OAAEiG,MAAA,SAAA/G,OAAO,CAACsW,OAAO,OAAItW,OAAO,CAAC,CAAC,KAAKoC,SAAS;UAAA;UAAA,IAAAE,SAAA;YAAA,OAAAzB,iBAAA,CACpD5B,WAAW;cAAC6C,IAAI;cAAA,IAAkBH,KAAKA,CAAA;gBAAA,OAAEsC,QAAQ,CAAC,CAAC,CAACqS,OAAO;cAAA;YAAA;UAAA;QAAA,IAAAzV,iBAAA,CAE7DxC,KAAK;UAAA,IAACyC,IAAIA,CAAA;YAAA,OAAEd,OAAO,CAACkV,KAAK;UAAA;UAAA,IAAA5S,SAAA;YAAA,OAAAzB,iBAAA,CACvB5B,WAAW;cAAC6C,IAAI;cAAA,IAAsBH,KAAKA,CAAA;gBAAA,OAAEsC,QAAQ,CAAC,CAAC,CAACwS,cAAc;cAAA;cAAA,IAAE9I,WAAWA,CAAA;gBAAA,OAAE+I,MAAM,CAAC1W,OAAO,CAACkV,KAAK,EAAEC,OAAO,IAAI,EAAE,CAAC;cAAA;YAAA;UAAA;QAAA,IAAAtU,iBAAA,CAE3HxC,KAAK;UAAA,IAACyC,IAAIA,CAAA;YAAA,OAAEiG,MAAA,SAAAoP,eAAe,CAAC,CAAC,OAAIrQ,QAAQ,CAAC,CAAC;UAAA;UAAAxD,QAAA,EACxCqU,MAAM,IAAK;YACX,MAAMC,QAAQ,GAAGD,MAAM,CAAC,CAAC,CAAC9C,SAAS;YACnC,OAAAhT,iBAAA,CACG+V,QAAQ;cAAA,IACP7Q,YAAYA,CAAA;gBAAA,OAAEpF,KAAK,CAACoF,YAAY;cAAA;cAAA,IAChCY,eAAeA,CAAA;gBAAA,OAAEhG,KAAK,CAACgG,eAAe;cAAA;cAAA,IACtCH,YAAYA,CAAA;gBAAA,OAAE7F,KAAK,CAAC6F,YAAY;cAAA;cAAA,IAChC4E,qBAAqBA,CAAA;gBAAA,OAAEzK,KAAK,CAACyK,qBAAqB;cAAA;cAAA,IAClDrL,IAAIA,CAAA;gBAAA,OAAEY,KAAK,CAACZ,IAAI;cAAA;cAAA,IAChBC,OAAOA,CAAA;gBAAA,OAAEmW,eAAe,CAAC,CAAC;cAAA;cAAA,IAC1BlF,WAAWA,CAAA;gBAAA,OAAEmE,iBAAiB,CAAC,CAAC;cAAA;cAAA,IAChC5D,WAAWA,CAAA;gBAAA,OAAE7Q,KAAK,CAAC6Q,WAAW;cAAA;cAAA,IAC9BF,cAAcA,CAAA;gBAAA,OAAE3Q,KAAK,CAAC2Q,cAAc;cAAA;cAAA,IACpCpN,YAAYA,CAAA;gBAAA,OAAEvD,KAAK,CAACuD,YAAY,IAAI,IAAI;cAAA;cAAA,IACxC8C,MAAMA,CAAA;gBAAA,OAAEA,MAAM,CAAC,CAAC;cAAA;YAAA;UAGtB;QAAC;MAAA;IAAA;IAAAxF,QAAA,CAAAC,GAAA;MAAA,IAAAoV,KAAA,GA7BE,yBAAyBlW,KAAK,CAACmW,KAAK,IAAI,EAAE,EAAE;QAAAC,KAAA,GACrCpW,KAAK,CAAC6E,OAAO;QAAAwR,KAAA,GACbrW,KAAK,CAACoF,YAAY,KAAK3D,SAAS,GAAG,MAAM,GAAGA,SAAS;MAAAyU,KAAA,KAAApV,GAAA,CAAAM,CAAA,IAAAI,WAAA,CAAAqU,MAAA,EAAA/U,GAAA,CAAAM,CAAA,GAAA8U,KAAA;MAAAE,KAAA,KAAAtV,GAAA,CAAAQ,CAAA,IAAAD,cAAA,CAAAwU,MAAA,kBAAA/U,GAAA,CAAAQ,CAAA,GAAA8U,KAAA;MAAAC,KAAA,KAAAvV,GAAA,CAAAS,CAAA,IAAAF,cAAA,CAAAwU,MAAA,kBAAA/U,GAAA,CAAAS,CAAA,GAAA8U,KAAA;MAAA,OAAAvV,GAAA;IAAA;MAAAM,CAAA,EAAAK,SAAA;MAAAH,CAAA,EAAAG,SAAA;MAAAF,CAAA,EAAAE;IAAA;IAAA,OAAAoU,MAAA;EAAA;AAgCzE;AAACS,gBAAA","ignoreList":[]}
@@ -25,6 +25,12 @@ const createSafeRenderer = (options = {}) => {
25
25
  const renderer = new Renderer();
26
26
  const inlineTokens = normalizeInlineTokens(options.inlineTokens);
27
27
  const renderText = renderer.text.bind(renderer);
28
+ const renderTable = renderer.table.bind(renderer);
29
+ renderer.table = token => {
30
+ const table = renderTable(token);
31
+ const content = token.header.every(cell => !cell.text.trim()) ? table.replace(/<thead>[\s\S]*?<\/thead>\n?/, "") : table;
32
+ return `<div class="k2b-content-markdown__table" tabindex="0">${content}</div>`;
33
+ };
28
34
  renderer.html = ({
29
35
  text
30
36
  }) => escapeHtml(text);
@@ -1 +1 @@
1
- {"version":3,"names":["marked","Renderer","escapeHtml","value","replaceAll","safeUrl","normalized","trim","replace","test","normalizeInlineTokens","tokens","Set","filter","Boolean","sort","left","right","length","isStandaloneInlineToken","text","start","before","end","after","createSafeRenderer","options","renderer","inlineTokens","renderText","bind","html","link","href","title","body","parser","parseInline","url","linkProtocols","includes","URL","protocol","titleAttribute","target","linkTarget","image","allowImages","token","type","parts","plainStart","cursor","inlineToken","find","candidate","startsWith","slice","push","raw","join","renderSafeMarkdown","markdown","parse","async","MarkdownView","props","undefined","trustedHtml","_el$","_$getNextElement","_tmpl$","_$effect","_p$","_v$","class","_v$2","headingScale","_v$3","e","_$className","t","_$setAttribute","a","_$setProperty"],"sources":["content/MarkdownView.tsx"],"sourcesContent":["import { marked, Renderer, type Tokens } from \"marked\";\n\ntype CommonProps = MarkdownRenderOptions & {\n /** Optional additional CSS classes */\n class?: string;\n /**\n * Visual heading scale. Markdown heading levels and document structure stay\n * unchanged.\n */\n headingScale?: \"compact\" | \"normal\" | \"large\";\n};\n\nexport type MarkdownViewProps = CommonProps &\n (\n | {\n /** Untrusted Markdown. Raw HTML and unsafe link protocols are escaped. */\n markdown: string;\n /** Exact standalone text tokens to emphasize without changing Markdown parsing or trusted-HTML boundaries. */\n inlineTokens?: readonly string[];\n trustedHtml?: never;\n }\n | {\n /** Explicitly trusted, already-rendered HTML. The caller owns sanitization. */\n trustedHtml: string;\n markdown?: never;\n inlineTokens?: never;\n }\n );\n\nexport type MarkdownRenderOptions = {\n inlineTokens?: readonly string[];\n /** Whether to render images. False renders alt text without resource requests. Defaults to true. */\n allowImages?: boolean;\n /** Optional protocol allowlist, including trailing colons. Relative URLs resolve as HTTPS. */\n linkProtocols?: readonly string[];\n linkTarget?: \"_blank\";\n};\n\nconst escapeHtml = (value: string): string =>\n value.replaceAll(\"&\", \"&amp;\").replaceAll(\"<\", \"&lt;\").replaceAll(\">\", \"&gt;\").replaceAll('\"', \"&quot;\").replaceAll(\"'\", \"&#39;\");\n\nconst safeUrl = (value: string): string | null => {\n const normalized = value.trim().replace(/[\\u0000-\\u001f\\u007f-\\u009f\\s]+/g, \"\");\n if (/^(?:javascript|vbscript|data):/i.test(normalized)) return null;\n return value;\n};\n\nconst normalizeInlineTokens = (tokens: readonly string[] | undefined): string[] =>\n [...new Set(tokens?.filter(Boolean) ?? [])].sort((left, right) => right.length - left.length);\n\nconst isStandaloneInlineToken = (text: string, start: number, value: string): boolean => {\n const before = text[start - 1];\n if (before && /[a-zA-Z0-9_.%+\\-]/.test(before)) return false;\n const end = start + value.length;\n const after = text[end];\n if (after && /[a-zA-Z0-9_@]/.test(after)) return false;\n return !(after === \".\" && /[a-zA-Z0-9_]/.test(text[end + 1] ?? \"\"));\n};\n\nconst createSafeRenderer = (options: MarkdownRenderOptions = {}): Renderer => {\n const renderer = new Renderer();\n const inlineTokens = normalizeInlineTokens(options.inlineTokens);\n const renderText = renderer.text.bind(renderer);\n renderer.html = ({ text }: Tokens.HTML | Tokens.Tag) => escapeHtml(text);\n renderer.link = function ({ href, title, tokens }: Tokens.Link) {\n const body = this.parser.parseInline(tokens);\n const url = safeUrl(href);\n if (!url) return body;\n if (options.linkProtocols) {\n try {\n if (!options.linkProtocols.includes(new URL(url, \"https://markdown.invalid/\").protocol)) return body;\n } catch {\n return body;\n }\n }\n const titleAttribute = title ? ` title=\"${escapeHtml(title)}\"` : \"\";\n const target = options.linkTarget === \"_blank\" ? ' target=\"_blank\" rel=\"noopener noreferrer\"' : \"\";\n return `<a href=\"${escapeHtml(url)}\"${titleAttribute}${target}>${body}</a>`;\n };\n renderer.image = ({ href, title, text }: Tokens.Image) => {\n const url = safeUrl(href);\n if (!url || options.allowImages === false) return escapeHtml(text);\n const titleAttribute = title ? ` title=\"${escapeHtml(title)}\"` : \"\";\n return `<img src=\"${escapeHtml(url)}\" alt=\"${escapeHtml(text)}\"${titleAttribute}>`;\n };\n renderer.text = (token) => {\n if (inlineTokens.length === 0 || token.type === \"escape\" || (\"tokens\" in token && token.tokens)) return renderText(token);\n const parts: string[] = [];\n let plainStart = 0;\n let cursor = 0;\n while (cursor < token.text.length) {\n const inlineToken = inlineTokens.find(\n (candidate) => token.text.startsWith(candidate, cursor) && isStandaloneInlineToken(token.text, cursor, candidate),\n );\n if (!inlineToken) {\n cursor += 1;\n continue;\n }\n if (plainStart < cursor) {\n const text = token.text.slice(plainStart, cursor);\n parts.push(renderText({ ...token, raw: text, text }));\n }\n parts.push(\n `<span class=\"k2b-content-markdown__inline-token\">${renderText({ ...token, raw: inlineToken, text: inlineToken })}</span>`,\n );\n cursor += inlineToken.length;\n plainStart = cursor;\n }\n if (plainStart === 0) return renderText(token);\n if (plainStart < token.text.length) {\n const text = token.text.slice(plainStart);\n parts.push(renderText({ ...token, raw: text, text }));\n }\n return parts.join(\"\");\n };\n return renderer;\n};\n\nexport const renderSafeMarkdown = (markdown: string, options: MarkdownRenderOptions = {}): string =>\n marked.parse(markdown, {\n async: false,\n renderer: createSafeRenderer(options),\n }) as string;\n\n/**\n * Markdown View Component (SSR)\n *\n * Renders untrusted Markdown safely by default. Raw HTML and unsafe link\n * protocols are escaped. Already-rendered HTML requires the deliberately named\n * `trustedHtml` boundary; the caller owns sanitization in that mode.\n *\n * @example\n * ```tsx\n * import { MarkdownView } from \"@k2b/ui\";\n *\n * <MarkdownView markdown={source} />;\n * ```\n *\n * @example Compact headings, e.g. inside comments or file previews:\n * ```tsx\n * <MarkdownView markdown={source} headingScale=\"compact\" />;\n * ```\n */\nexport default function MarkdownView(props: MarkdownViewProps) {\n const html = () =>\n props.markdown !== undefined\n ? renderSafeMarkdown(props.markdown, {\n inlineTokens: props.inlineTokens,\n allowImages: props.allowImages,\n linkProtocols: props.linkProtocols,\n linkTarget: props.linkTarget,\n })\n : props.trustedHtml;\n return (\n <div\n class={`k2b-content-markdown ${props.class ?? \"\"}`}\n data-heading-scale={props.headingScale && props.headingScale !== \"normal\" ? props.headingScale : undefined}\n innerHTML={html()}\n />\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["marked","Renderer","escapeHtml","value","replaceAll","safeUrl","normalized","trim","replace","test","normalizeInlineTokens","tokens","Set","filter","Boolean","sort","left","right","length","isStandaloneInlineToken","text","start","before","end","after","createSafeRenderer","options","renderer","inlineTokens","renderText","bind","renderTable","table","token","content","header","every","cell","html","link","href","title","body","parser","parseInline","url","linkProtocols","includes","URL","protocol","titleAttribute","target","linkTarget","image","allowImages","type","parts","plainStart","cursor","inlineToken","find","candidate","startsWith","slice","push","raw","join","renderSafeMarkdown","markdown","parse","async","MarkdownView","props","undefined","trustedHtml","_el$","_$getNextElement","_tmpl$","_$effect","_p$","_v$","class","_v$2","headingScale","_v$3","e","_$className","t","_$setAttribute","a","_$setProperty"],"sources":["content/MarkdownView.tsx"],"sourcesContent":["import { marked, Renderer, type Tokens } from \"marked\";\n\ntype CommonProps = MarkdownRenderOptions & {\n /** Optional additional CSS classes */\n class?: string;\n /**\n * Visual heading scale. Markdown heading levels and document structure stay\n * unchanged.\n */\n headingScale?: \"compact\" | \"normal\" | \"large\";\n};\n\nexport type MarkdownViewProps = CommonProps &\n (\n | {\n /** Untrusted Markdown. Raw HTML and unsafe link protocols are escaped. */\n markdown: string;\n /** Exact standalone text tokens to emphasize without changing Markdown parsing or trusted-HTML boundaries. */\n inlineTokens?: readonly string[];\n trustedHtml?: never;\n }\n | {\n /** Explicitly trusted, already-rendered HTML. The caller owns sanitization. */\n trustedHtml: string;\n markdown?: never;\n inlineTokens?: never;\n }\n );\n\nexport type MarkdownRenderOptions = {\n inlineTokens?: readonly string[];\n /** Whether to render images. False renders alt text without resource requests. Defaults to true. */\n allowImages?: boolean;\n /** Optional protocol allowlist, including trailing colons. Relative URLs resolve as HTTPS. */\n linkProtocols?: readonly string[];\n linkTarget?: \"_blank\";\n};\n\nconst escapeHtml = (value: string): string =>\n value.replaceAll(\"&\", \"&amp;\").replaceAll(\"<\", \"&lt;\").replaceAll(\">\", \"&gt;\").replaceAll('\"', \"&quot;\").replaceAll(\"'\", \"&#39;\");\n\nconst safeUrl = (value: string): string | null => {\n const normalized = value.trim().replace(/[\\u0000-\\u001f\\u007f-\\u009f\\s]+/g, \"\");\n if (/^(?:javascript|vbscript|data):/i.test(normalized)) return null;\n return value;\n};\n\nconst normalizeInlineTokens = (tokens: readonly string[] | undefined): string[] =>\n [...new Set(tokens?.filter(Boolean) ?? [])].sort((left, right) => right.length - left.length);\n\nconst isStandaloneInlineToken = (text: string, start: number, value: string): boolean => {\n const before = text[start - 1];\n if (before && /[a-zA-Z0-9_.%+\\-]/.test(before)) return false;\n const end = start + value.length;\n const after = text[end];\n if (after && /[a-zA-Z0-9_@]/.test(after)) return false;\n return !(after === \".\" && /[a-zA-Z0-9_]/.test(text[end + 1] ?? \"\"));\n};\n\nconst createSafeRenderer = (options: MarkdownRenderOptions = {}): Renderer => {\n const renderer = new Renderer();\n const inlineTokens = normalizeInlineTokens(options.inlineTokens);\n const renderText = renderer.text.bind(renderer);\n const renderTable = renderer.table.bind(renderer);\n renderer.table = (token: Tokens.Table) => {\n const table = renderTable(token);\n const content = token.header.every((cell) => !cell.text.trim()) ? table.replace(/<thead>[\\s\\S]*?<\\/thead>\\n?/, \"\") : table;\n return `<div class=\"k2b-content-markdown__table\" tabindex=\"0\">${content}</div>`;\n };\n renderer.html = ({ text }: Tokens.HTML | Tokens.Tag) => escapeHtml(text);\n renderer.link = function ({ href, title, tokens }: Tokens.Link) {\n const body = this.parser.parseInline(tokens);\n const url = safeUrl(href);\n if (!url) return body;\n if (options.linkProtocols) {\n try {\n if (!options.linkProtocols.includes(new URL(url, \"https://markdown.invalid/\").protocol)) return body;\n } catch {\n return body;\n }\n }\n const titleAttribute = title ? ` title=\"${escapeHtml(title)}\"` : \"\";\n const target = options.linkTarget === \"_blank\" ? ' target=\"_blank\" rel=\"noopener noreferrer\"' : \"\";\n return `<a href=\"${escapeHtml(url)}\"${titleAttribute}${target}>${body}</a>`;\n };\n renderer.image = ({ href, title, text }: Tokens.Image) => {\n const url = safeUrl(href);\n if (!url || options.allowImages === false) return escapeHtml(text);\n const titleAttribute = title ? ` title=\"${escapeHtml(title)}\"` : \"\";\n return `<img src=\"${escapeHtml(url)}\" alt=\"${escapeHtml(text)}\"${titleAttribute}>`;\n };\n renderer.text = (token) => {\n if (inlineTokens.length === 0 || token.type === \"escape\" || (\"tokens\" in token && token.tokens)) return renderText(token);\n const parts: string[] = [];\n let plainStart = 0;\n let cursor = 0;\n while (cursor < token.text.length) {\n const inlineToken = inlineTokens.find(\n (candidate) => token.text.startsWith(candidate, cursor) && isStandaloneInlineToken(token.text, cursor, candidate),\n );\n if (!inlineToken) {\n cursor += 1;\n continue;\n }\n if (plainStart < cursor) {\n const text = token.text.slice(plainStart, cursor);\n parts.push(renderText({ ...token, raw: text, text }));\n }\n parts.push(\n `<span class=\"k2b-content-markdown__inline-token\">${renderText({ ...token, raw: inlineToken, text: inlineToken })}</span>`,\n );\n cursor += inlineToken.length;\n plainStart = cursor;\n }\n if (plainStart === 0) return renderText(token);\n if (plainStart < token.text.length) {\n const text = token.text.slice(plainStart);\n parts.push(renderText({ ...token, raw: text, text }));\n }\n return parts.join(\"\");\n };\n return renderer;\n};\n\nexport const renderSafeMarkdown = (markdown: string, options: MarkdownRenderOptions = {}): string =>\n marked.parse(markdown, {\n async: false,\n renderer: createSafeRenderer(options),\n }) as string;\n\n/**\n * Markdown View Component (SSR)\n *\n * Renders untrusted Markdown safely by default. Raw HTML and unsafe link\n * protocols are escaped. Already-rendered HTML requires the deliberately named\n * `trustedHtml` boundary; the caller owns sanitization in that mode.\n *\n * @example\n * ```tsx\n * import { MarkdownView } from \"@k2b/ui\";\n *\n * <MarkdownView markdown={source} />;\n * ```\n *\n * @example Compact headings, e.g. inside comments or file previews:\n * ```tsx\n * <MarkdownView markdown={source} headingScale=\"compact\" />;\n * ```\n */\nexport default function MarkdownView(props: MarkdownViewProps) {\n const html = () =>\n props.markdown !== undefined\n ? renderSafeMarkdown(props.markdown, {\n inlineTokens: props.inlineTokens,\n allowImages: props.allowImages,\n linkProtocols: props.linkProtocols,\n linkTarget: props.linkTarget,\n })\n : props.trustedHtml;\n return (\n <div\n class={`k2b-content-markdown ${props.class ?? \"\"}`}\n data-heading-scale={props.headingScale && props.headingScale !== \"normal\" ? props.headingScale : undefined}\n innerHTML={html()}\n />\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["Link","createMemo","For","Show","useUiMessages","PaginationLink","props","onNavigate","_$createComponent","href","rel","scroll","class","aria-label","label","children","_el$","_$getNextElement","_tmpl$","_$insert","_$effect","_p$","_v$","_v$2","_v$3","_v$4","e","_$setAttribute","t","a","_$className","o","undefined","Pagination","messages","totalPages","Math","max","floor","Number","isFinite","currentPage","min","page","baseUrl","visiblePages","Set","filter","sort","left","right","when","_el$2","_tmpl$4","_el$3","firstChild","_el$4","nextSibling","_el$7","_el$8","_co$","_$getNextMarker","_el$9","_el$0","_co$2","_el$1","_el$10","_co$3","pageOf","total","previousPage","_tmpl$2","each","index","hasGap","isCurrent","mobileVisible","_tmpl$5","fallback","goToPage","_el$12","_tmpl$6","nextPage","_tmpl$3","pagination"],"sources":["content/Pagination.tsx"],"sourcesContent":["import { Link, type LinkNavigateEvent } from \"@k2b/ssr/nav\";\nimport { createMemo, For, type JSX, Show } from \"solid-js\";\nimport { useUiMessages } from \"../intl/messages\";\n\nexport type PaginationProps = {\n currentPage: number;\n totalPages: number;\n baseUrl: string;\n onNavigate?: (event: LinkNavigateEvent) => void | Promise<void>;\n};\n\ntype PaginationLinkProps = {\n href: string;\n label: string;\n rel?: \"prev\" | \"next\";\n class?: string;\n onNavigate?: PaginationProps[\"onNavigate\"];\n children: JSX.Element;\n};\n\nconst PaginationLink = (props: PaginationLinkProps) =>\n props.onNavigate ? (\n <Link\n href={props.href}\n rel={props.rel}\n scroll=\"top\"\n onNavigate={props.onNavigate}\n class={`k2b-pagination__page ${props.class ?? \"\"}`}\n aria-label={props.label}\n >\n {props.children}\n </Link>\n ) : (\n <a href={props.href} rel={props.rel} class={`k2b-pagination__page ${props.class ?? \"\"}`} aria-label={props.label}>\n {props.children}\n </a>\n );\n\n/** Link-based pagination with directional navigation and compact mobile disclosure. */\nexport const Pagination = (props: PaginationProps): JSX.Element => {\n const messages = useUiMessages();\n const totalPages = createMemo(() => Math.max(1, Math.floor(Number.isFinite(props.totalPages) ? props.totalPages : 1)));\n const currentPage = createMemo(() =>\n Math.min(totalPages(), Math.max(1, Math.floor(Number.isFinite(props.currentPage) ? props.currentPage : 1))),\n );\n const href = (page: number) => `${props.baseUrl}${page}`;\n const visiblePages = createMemo(() =>\n [...new Set([1, currentPage() - 1, currentPage(), currentPage() + 1, totalPages()])]\n .filter((page) => page >= 1 && page <= totalPages())\n .sort((left, right) => left - right),\n );\n\n return (\n <Show when={totalPages() > 1}>\n <nav class=\"k2b-pagination\" aria-label={messages().pagination}>\n <span class=\"k2b-sr-only\">\n {messages().pageOf({ page: currentPage(), total: totalPages() })}\n </span>\n <div class=\"k2b-pagination__pages\">\n <Show when={currentPage() > 1}>\n <PaginationLink href={href(currentPage() - 1)} rel=\"prev\" label={messages().previousPage} onNavigate={props.onNavigate}>\n <i class=\"ti ti-chevron-left\" aria-hidden=\"true\" />\n </PaginationLink>\n </Show>\n\n <For each={visiblePages()}>\n {(page, index) => {\n const previousPage = () => visiblePages()[index() - 1];\n const hasGap = () => previousPage() !== undefined && page - previousPage()! > 1;\n const isCurrent = () => page === currentPage();\n const mobileVisible = () => page === 1 || page === totalPages() || isCurrent();\n\n return (\n <>\n <Show when={hasGap()}>\n <span class=\"k2b-pagination__ellipsis\" aria-hidden=\"true\">\n …\n </span>\n </Show>\n <Show\n when={isCurrent()}\n fallback={\n <PaginationLink\n href={href(page)}\n label={messages().goToPage({ page })}\n class={mobileVisible() ? \"\" : \"k2b-pagination__page--wide-only\"}\n onNavigate={props.onNavigate}\n >\n {page}\n </PaginationLink>\n }\n >\n <span class=\"k2b-pagination__page is-current\" aria-current=\"page\">\n {page}\n </span>\n </Show>\n </>\n );\n }}\n </For>\n\n <Show when={currentPage() < totalPages()}>\n <PaginationLink href={href(currentPage() + 1)} rel=\"next\" label={messages().nextPage} onNavigate={props.onNavigate}>\n <i class=\"ti ti-chevron-right\" aria-hidden=\"true\" />\n </PaginationLink>\n </Show>\n </div>\n </nav>\n </Show>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Link","createMemo","For","Show","useUiMessages","PaginationLink","props","onNavigate","_$createComponent","href","rel","scroll","class","aria-label","label","children","_el$","_$getNextElement","_tmpl$","_$insert","_$effect","_p$","_v$","_v$2","_v$3","_v$4","e","_$setAttribute","t","a","_$className","o","undefined","Pagination","messages","totalPages","Math","max","floor","Number","isFinite","currentPage","min","page","baseUrl","visiblePages","Set","filter","sort","left","right","when","_el$2","_tmpl$4","_el$3","firstChild","_el$4","nextSibling","_el$7","_el$8","_co$","_$getNextMarker","_el$9","_el$0","_co$2","_el$1","_el$10","_co$3","pageOf","total","previousPage","_tmpl$2","each","index","hasGap","isCurrent","mobileVisible","_tmpl$5","fallback","goToPage","_el$12","_tmpl$6","nextPage","_tmpl$3","pagination"],"sources":["content/Pagination.tsx"],"sourcesContent":["import { Link, type LinkNavigateEvent } from \"@k2b/ssr/nav\";\nimport { createMemo, For, type JSX, Show } from \"solid-js\";\nimport { useUiMessages } from \"../intl/messages\";\n\nexport type PaginationProps = {\n currentPage: number;\n totalPages: number;\n baseUrl: string;\n onNavigate?: (event: LinkNavigateEvent) => void | Promise<void>;\n};\n\ntype PaginationLinkProps = {\n href: string;\n label: string;\n rel?: \"prev\" | \"next\";\n class?: string;\n onNavigate?: PaginationProps[\"onNavigate\"];\n children: JSX.Element;\n};\n\nconst PaginationLink = (props: PaginationLinkProps) =>\n props.onNavigate ? (\n <Link\n href={props.href}\n rel={props.rel}\n scroll=\"top\"\n onNavigate={props.onNavigate}\n class={`k2b-pagination__page ${props.class ?? \"\"}`}\n aria-label={props.label}\n >\n {props.children}\n </Link>\n ) : (\n <a href={props.href} rel={props.rel} class={`k2b-pagination__page ${props.class ?? \"\"}`} aria-label={props.label}>\n {props.children}\n </a>\n );\n\n/** Link-based pagination with directional navigation and compact mobile disclosure. */\nexport const Pagination = (props: PaginationProps): JSX.Element => {\n const messages = useUiMessages();\n const totalPages = createMemo(() => Math.max(1, Math.floor(Number.isFinite(props.totalPages) ? props.totalPages : 1)));\n const currentPage = createMemo(() =>\n Math.min(totalPages(), Math.max(1, Math.floor(Number.isFinite(props.currentPage) ? props.currentPage : 1))),\n );\n const href = (page: number) => `${props.baseUrl}${page}`;\n const visiblePages = createMemo(() =>\n [...new Set([1, currentPage() - 1, currentPage(), currentPage() + 1, totalPages()])]\n .filter((page) => page >= 1 && page <= totalPages())\n .sort((left, right) => left - right),\n );\n\n return (\n <Show when={totalPages() > 1}>\n <nav class=\"k2b-pagination\" aria-label={messages().pagination}>\n <span class=\"k2b-sr-only\">{messages().pageOf({ page: currentPage(), total: totalPages() })}</span>\n <div class=\"k2b-pagination__pages\">\n <Show when={currentPage() > 1}>\n <PaginationLink href={href(currentPage() - 1)} rel=\"prev\" label={messages().previousPage} onNavigate={props.onNavigate}>\n <i class=\"ti ti-chevron-left\" aria-hidden=\"true\" />\n </PaginationLink>\n </Show>\n\n <For each={visiblePages()}>\n {(page, index) => {\n const previousPage = () => visiblePages()[index() - 1];\n const hasGap = () => previousPage() !== undefined && page - previousPage()! > 1;\n const isCurrent = () => page === currentPage();\n const mobileVisible = () => page === 1 || page === totalPages() || isCurrent();\n\n return (\n <>\n <Show when={hasGap()}>\n <span class=\"k2b-pagination__ellipsis\" aria-hidden=\"true\">\n …\n </span>\n </Show>\n <Show\n when={isCurrent()}\n fallback={\n <PaginationLink\n href={href(page)}\n label={messages().goToPage({ page })}\n class={mobileVisible() ? \"\" : \"k2b-pagination__page--wide-only\"}\n onNavigate={props.onNavigate}\n >\n {page}\n </PaginationLink>\n }\n >\n <span class=\"k2b-pagination__page is-current\" aria-current=\"page\">\n {page}\n </span>\n </Show>\n </>\n );\n }}\n </For>\n\n <Show when={currentPage() < totalPages()}>\n <PaginationLink href={href(currentPage() + 1)} rel=\"next\" label={messages().nextPage} onNavigate={props.onNavigate}>\n <i class=\"ti ti-chevron-right\" aria-hidden=\"true\" />\n </PaginationLink>\n </Show>\n </div>\n </nav>\n </Show>\n );\n};\n"],"mappings":"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","ignoreList":[]}