@flanksource/clicky-ui 0.3.55 → 0.3.56

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 (991) hide show
  1. package/NOTICE.md +6 -0
  2. package/dist/ai.cjs +6 -0
  3. package/dist/ai.js +3 -1
  4. package/dist/chat.cjs +2 -0
  5. package/dist/chat.d.ts +1 -0
  6. package/dist/chat.d.ts.map +1 -1
  7. package/dist/chat.js +2 -1
  8. package/dist/comments/CommentCard.cjs +37 -7
  9. package/dist/comments/CommentCard.cjs.map +1 -1
  10. package/dist/comments/CommentCard.d.ts +11 -1
  11. package/dist/comments/CommentCard.d.ts.map +1 -1
  12. package/dist/comments/CommentCard.js +37 -7
  13. package/dist/comments/CommentCard.js.map +1 -1
  14. package/dist/comments/CommentCardParts.cjs +9 -4
  15. package/dist/comments/CommentCardParts.cjs.map +1 -1
  16. package/dist/comments/CommentCardParts.d.ts.map +1 -1
  17. package/dist/comments/CommentCardParts.js +9 -4
  18. package/dist/comments/CommentCardParts.js.map +1 -1
  19. package/dist/comments/CommentComposer.cjs +8 -8
  20. package/dist/comments/CommentComposer.cjs.map +1 -1
  21. package/dist/comments/CommentComposer.d.ts.map +1 -1
  22. package/dist/comments/CommentComposer.js +8 -8
  23. package/dist/comments/CommentComposer.js.map +1 -1
  24. package/dist/comments/CommentProvider.cjs +5 -1
  25. package/dist/comments/CommentProvider.cjs.map +1 -1
  26. package/dist/comments/CommentProvider.d.ts +1 -1
  27. package/dist/comments/CommentProvider.d.ts.map +1 -1
  28. package/dist/comments/CommentProvider.js +5 -1
  29. package/dist/comments/CommentProvider.js.map +1 -1
  30. package/dist/comments/CommentSidePanel.cjs +17 -11
  31. package/dist/comments/CommentSidePanel.cjs.map +1 -1
  32. package/dist/comments/CommentSidePanel.d.ts +6 -0
  33. package/dist/comments/CommentSidePanel.d.ts.map +1 -1
  34. package/dist/comments/CommentSidePanel.js +17 -11
  35. package/dist/comments/CommentSidePanel.js.map +1 -1
  36. package/dist/comments/CommentThread.cjs +4 -1
  37. package/dist/comments/CommentThread.cjs.map +1 -1
  38. package/dist/comments/CommentThread.d.ts +4 -1
  39. package/dist/comments/CommentThread.d.ts.map +1 -1
  40. package/dist/comments/CommentThread.js +4 -1
  41. package/dist/comments/CommentThread.js.map +1 -1
  42. package/dist/comments/CommentThreadList.cjs +6 -3
  43. package/dist/comments/CommentThreadList.cjs.map +1 -1
  44. package/dist/comments/CommentThreadList.d.ts +7 -2
  45. package/dist/comments/CommentThreadList.d.ts.map +1 -1
  46. package/dist/comments/CommentThreadList.js +6 -3
  47. package/dist/comments/CommentThreadList.js.map +1 -1
  48. package/dist/comments/MentionTextarea.cjs +1 -1
  49. package/dist/comments/MentionTextarea.cjs.map +1 -1
  50. package/dist/comments/MentionTextarea.d.ts.map +1 -1
  51. package/dist/comments/MentionTextarea.js +1 -1
  52. package/dist/comments/MentionTextarea.js.map +1 -1
  53. package/dist/comments/comment-assign.cjs +68 -0
  54. package/dist/comments/comment-assign.cjs.map +1 -0
  55. package/dist/comments/comment-assign.d.ts +31 -0
  56. package/dist/comments/comment-assign.d.ts.map +1 -0
  57. package/dist/comments/comment-assign.js +67 -0
  58. package/dist/comments/comment-assign.js.map +1 -0
  59. package/dist/comments/comment-types.cjs.map +1 -1
  60. package/dist/comments/comment-types.d.ts +39 -0
  61. package/dist/comments/comment-types.d.ts.map +1 -1
  62. package/dist/comments/comment-types.js.map +1 -1
  63. package/dist/comments/comment-utils.cjs +2 -0
  64. package/dist/comments/comment-utils.cjs.map +1 -1
  65. package/dist/comments/comment-utils.d.ts +2 -0
  66. package/dist/comments/comment-utils.d.ts.map +1 -1
  67. package/dist/comments/comment-utils.js +2 -0
  68. package/dist/comments/comment-utils.js.map +1 -1
  69. package/dist/comments.cjs +3 -0
  70. package/dist/comments.d.ts +1 -0
  71. package/dist/comments.d.ts.map +1 -1
  72. package/dist/comments.js +2 -1
  73. package/dist/components/ComboboxMenu.cjs +23 -13
  74. package/dist/components/ComboboxMenu.cjs.map +1 -1
  75. package/dist/components/ComboboxMenu.d.ts.map +1 -1
  76. package/dist/components/ComboboxMenu.js +23 -13
  77. package/dist/components/ComboboxMenu.js.map +1 -1
  78. package/dist/components/FilterBar.cjs +29 -6
  79. package/dist/components/FilterBar.cjs.map +1 -1
  80. package/dist/components/FilterBar.d.ts +3 -1
  81. package/dist/components/FilterBar.d.ts.map +1 -1
  82. package/dist/components/FilterBar.js +29 -6
  83. package/dist/components/FilterBar.js.map +1 -1
  84. package/dist/components/ItemActions.cjs +1 -1
  85. package/dist/components/ItemActions.cjs.map +1 -1
  86. package/dist/components/ItemActions.js +1 -1
  87. package/dist/components/ItemActions.js.map +1 -1
  88. package/dist/components/ListMenu.cjs +33 -3
  89. package/dist/components/ListMenu.cjs.map +1 -1
  90. package/dist/components/ListMenu.d.ts +4 -1
  91. package/dist/components/ListMenu.d.ts.map +1 -1
  92. package/dist/components/ListMenu.js +33 -3
  93. package/dist/components/ListMenu.js.map +1 -1
  94. package/dist/components/ListMenuItems.cjs +80 -0
  95. package/dist/components/ListMenuItems.cjs.map +1 -0
  96. package/dist/components/ListMenuItems.d.ts +8 -0
  97. package/dist/components/ListMenuItems.d.ts.map +1 -0
  98. package/dist/components/ListMenuItems.js +80 -0
  99. package/dist/components/ListMenuItems.js.map +1 -0
  100. package/dist/components/LocalPathPicker.cjs +182 -0
  101. package/dist/components/LocalPathPicker.cjs.map +1 -0
  102. package/dist/components/LocalPathPicker.d.ts +11 -0
  103. package/dist/components/LocalPathPicker.d.ts.map +1 -0
  104. package/dist/components/LocalPathPicker.js +182 -0
  105. package/dist/components/LocalPathPicker.js.map +1 -0
  106. package/dist/components/LocalPathTree.cjs +89 -0
  107. package/dist/components/LocalPathTree.cjs.map +1 -0
  108. package/dist/components/LocalPathTree.d.ts +9 -0
  109. package/dist/components/LocalPathTree.d.ts.map +1 -0
  110. package/dist/components/LocalPathTree.js +89 -0
  111. package/dist/components/LocalPathTree.js.map +1 -0
  112. package/dist/components/RangeSlider.cjs +10 -30
  113. package/dist/components/RangeSlider.cjs.map +1 -1
  114. package/dist/components/RangeSlider.d.ts.map +1 -1
  115. package/dist/components/RangeSlider.js +4 -24
  116. package/dist/components/RangeSlider.js.map +1 -1
  117. package/dist/components/Slider.cjs +79 -0
  118. package/dist/components/Slider.cjs.map +1 -0
  119. package/dist/components/Slider.d.ts +23 -0
  120. package/dist/components/Slider.d.ts.map +1 -0
  121. package/dist/components/Slider.js +79 -0
  122. package/dist/components/Slider.js.map +1 -0
  123. package/dist/components/combobox-types.d.ts +4 -1
  124. package/dist/components/combobox-types.d.ts.map +1 -1
  125. package/dist/components/filter-bar-field-utils.cjs +3 -5
  126. package/dist/components/filter-bar-field-utils.cjs.map +1 -1
  127. package/dist/components/filter-bar-field-utils.d.ts.map +1 -1
  128. package/dist/components/filter-bar-field-utils.js +3 -5
  129. package/dist/components/filter-bar-field-utils.js.map +1 -1
  130. package/dist/components/filter-bar-tree-model.cjs +22 -0
  131. package/dist/components/filter-bar-tree-model.cjs.map +1 -0
  132. package/dist/components/filter-bar-tree-model.d.ts +33 -0
  133. package/dist/components/filter-bar-tree-model.d.ts.map +1 -0
  134. package/dist/components/filter-bar-tree-model.js +21 -0
  135. package/dist/components/filter-bar-tree-model.js.map +1 -0
  136. package/dist/components/filter-bar-tree.cjs +84 -0
  137. package/dist/components/filter-bar-tree.cjs.map +1 -0
  138. package/dist/components/filter-bar-tree.d.ts +7 -0
  139. package/dist/components/filter-bar-tree.d.ts.map +1 -0
  140. package/dist/components/filter-bar-tree.js +84 -0
  141. package/dist/components/filter-bar-tree.js.map +1 -0
  142. package/dist/components/json-schema-form-debug-glyph-map.cjs +2 -0
  143. package/dist/components/json-schema-form-debug-glyph-map.cjs.map +1 -1
  144. package/dist/components/json-schema-form-debug-glyph-map.d.ts.map +1 -1
  145. package/dist/components/json-schema-form-debug-glyph-map.js +2 -0
  146. package/dist/components/json-schema-form-debug-glyph-map.js.map +1 -1
  147. package/dist/components/json-schema-form-help-links.cjs +18 -0
  148. package/dist/components/json-schema-form-help-links.cjs.map +1 -0
  149. package/dist/components/json-schema-form-help-links.d.ts +5 -0
  150. package/dist/components/json-schema-form-help-links.d.ts.map +1 -0
  151. package/dist/components/json-schema-form-help-links.js +18 -0
  152. package/dist/components/json-schema-form-help-links.js.map +1 -0
  153. package/dist/components/json-schema-form-help-model.cjs +7 -0
  154. package/dist/components/json-schema-form-help-model.cjs.map +1 -0
  155. package/dist/components/json-schema-form-help-model.d.ts +3 -0
  156. package/dist/components/json-schema-form-help-model.d.ts.map +1 -0
  157. package/dist/components/json-schema-form-help-model.js +7 -0
  158. package/dist/components/json-schema-form-help-model.js.map +1 -0
  159. package/dist/components/json-schema-form-json.cjs +48 -0
  160. package/dist/components/json-schema-form-json.cjs.map +1 -0
  161. package/dist/components/json-schema-form-json.d.ts +7 -0
  162. package/dist/components/json-schema-form-json.d.ts.map +1 -0
  163. package/dist/components/json-schema-form-json.js +48 -0
  164. package/dist/components/json-schema-form-json.js.map +1 -0
  165. package/dist/components/json-schema-form-layout.cjs +7 -5
  166. package/dist/components/json-schema-form-layout.cjs.map +1 -1
  167. package/dist/components/json-schema-form-layout.d.ts +2 -2
  168. package/dist/components/json-schema-form-layout.d.ts.map +1 -1
  169. package/dist/components/json-schema-form-layout.js +7 -5
  170. package/dist/components/json-schema-form-layout.js.map +1 -1
  171. package/dist/components/json-schema-form-object.cjs +2 -13
  172. package/dist/components/json-schema-form-object.cjs.map +1 -1
  173. package/dist/components/json-schema-form-object.d.ts.map +1 -1
  174. package/dist/components/json-schema-form-object.js +2 -13
  175. package/dist/components/json-schema-form-object.js.map +1 -1
  176. package/dist/components/json-schema-form-refs.cjs +1 -1
  177. package/dist/components/json-schema-form-refs.cjs.map +1 -1
  178. package/dist/components/json-schema-form-refs.d.ts.map +1 -1
  179. package/dist/components/json-schema-form-refs.js +1 -1
  180. package/dist/components/json-schema-form-refs.js.map +1 -1
  181. package/dist/components/json-schema-form-render.cjs +20 -6
  182. package/dist/components/json-schema-form-render.cjs.map +1 -1
  183. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  184. package/dist/components/json-schema-form-render.js +20 -6
  185. package/dist/components/json-schema-form-render.js.map +1 -1
  186. package/dist/components/json-schema-form-resolve.cjs +22 -2
  187. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  188. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  189. package/dist/components/json-schema-form-resolve.js +22 -2
  190. package/dist/components/json-schema-form-resolve.js.map +1 -1
  191. package/dist/components/json-schema-form-types.d.ts +5 -1
  192. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  193. package/dist/components/json-schema-form-union-model.cjs +46 -0
  194. package/dist/components/json-schema-form-union-model.cjs.map +1 -0
  195. package/dist/components/json-schema-form-union-model.d.ts +6 -0
  196. package/dist/components/json-schema-form-union-model.d.ts.map +1 -0
  197. package/dist/components/json-schema-form-union-model.js +43 -0
  198. package/dist/components/json-schema-form-union-model.js.map +1 -0
  199. package/dist/components/json-schema-form-union.cjs +52 -0
  200. package/dist/components/json-schema-form-union.cjs.map +1 -0
  201. package/dist/components/json-schema-form-union.d.ts +7 -0
  202. package/dist/components/json-schema-form-union.d.ts.map +1 -0
  203. package/dist/components/json-schema-form-union.js +52 -0
  204. package/dist/components/json-schema-form-union.js.map +1 -0
  205. package/dist/components/list-menu-virtual.cjs +5 -0
  206. package/dist/components/list-menu-virtual.cjs.map +1 -0
  207. package/dist/components/list-menu-virtual.d.ts +12 -0
  208. package/dist/components/list-menu-virtual.d.ts.map +1 -0
  209. package/dist/components/list-menu-virtual.js +6 -0
  210. package/dist/components/list-menu-virtual.js.map +1 -0
  211. package/dist/components/local-path.cjs +12 -0
  212. package/dist/components/local-path.cjs.map +1 -0
  213. package/dist/components/local-path.d.ts +14 -0
  214. package/dist/components/local-path.d.ts.map +1 -0
  215. package/dist/components/local-path.js +12 -0
  216. package/dist/components/local-path.js.map +1 -0
  217. package/dist/components/slider-shared.cjs +32 -0
  218. package/dist/components/slider-shared.cjs.map +1 -0
  219. package/dist/components/slider-shared.d.ts +18 -0
  220. package/dist/components/slider-shared.d.ts.map +1 -0
  221. package/dist/components/slider-shared.js +27 -0
  222. package/dist/components/slider-shared.js.map +1 -0
  223. package/dist/components.cjs +8 -0
  224. package/dist/components.d.ts +6 -1
  225. package/dist/components.d.ts.map +1 -1
  226. package/dist/components.js +5 -1
  227. package/dist/connections/ConnectionsPage.cjs +51 -19
  228. package/dist/connections/ConnectionsPage.cjs.map +1 -1
  229. package/dist/connections/ConnectionsPage.d.ts +9 -1
  230. package/dist/connections/ConnectionsPage.d.ts.map +1 -1
  231. package/dist/connections/ConnectionsPage.js +52 -20
  232. package/dist/connections/ConnectionsPage.js.map +1 -1
  233. package/dist/connections/connectionDashboard.cjs +13 -8
  234. package/dist/connections/connectionDashboard.cjs.map +1 -1
  235. package/dist/connections/connectionDashboard.d.ts +8 -3
  236. package/dist/connections/connectionDashboard.d.ts.map +1 -1
  237. package/dist/connections/connectionDashboard.js +14 -9
  238. package/dist/connections/connectionDashboard.js.map +1 -1
  239. package/dist/connections/connectionDashboardModel.cjs.map +1 -1
  240. package/dist/connections/connectionDashboardModel.d.ts +4 -0
  241. package/dist/connections/connectionDashboardModel.d.ts.map +1 -1
  242. package/dist/connections/connectionDashboardModel.js.map +1 -1
  243. package/dist/connections/connectionDashboardRow.cjs +75 -55
  244. package/dist/connections/connectionDashboardRow.cjs.map +1 -1
  245. package/dist/connections/connectionDashboardRow.d.ts +3 -2
  246. package/dist/connections/connectionDashboardRow.d.ts.map +1 -1
  247. package/dist/connections/connectionDashboardRow.js +75 -55
  248. package/dist/connections/connectionDashboardRow.js.map +1 -1
  249. package/dist/connections/connectionNamespaceField.cjs +17 -0
  250. package/dist/connections/connectionNamespaceField.cjs.map +1 -0
  251. package/dist/connections/connectionNamespaceField.d.ts +10 -0
  252. package/dist/connections/connectionNamespaceField.d.ts.map +1 -0
  253. package/dist/connections/connectionNamespaceField.js +17 -0
  254. package/dist/connections/connectionNamespaceField.js.map +1 -0
  255. package/dist/connections/connectionSchemaFormExtensions.cjs +98 -0
  256. package/dist/connections/connectionSchemaFormExtensions.cjs.map +1 -0
  257. package/dist/connections/connectionSchemaFormExtensions.d.ts +41 -0
  258. package/dist/connections/connectionSchemaFormExtensions.d.ts.map +1 -0
  259. package/dist/connections/connectionSchemaFormExtensions.js +96 -0
  260. package/dist/connections/connectionSchemaFormExtensions.js.map +1 -0
  261. package/dist/connections/connectionsPageModel.cjs +11 -0
  262. package/dist/connections/connectionsPageModel.cjs.map +1 -1
  263. package/dist/connections/connectionsPageModel.d.ts +5 -0
  264. package/dist/connections/connectionsPageModel.d.ts.map +1 -1
  265. package/dist/connections/connectionsPageModel.js +11 -1
  266. package/dist/connections/connectionsPageModel.js.map +1 -1
  267. package/dist/connections.cjs +5 -0
  268. package/dist/connections.d.ts +2 -1
  269. package/dist/connections.d.ts.map +1 -1
  270. package/dist/connections.js +3 -2
  271. package/dist/data/AvatarBadge.cjs +3 -3
  272. package/dist/data/AvatarBadge.cjs.map +1 -1
  273. package/dist/data/AvatarBadge.js +3 -3
  274. package/dist/data/AvatarBadge.js.map +1 -1
  275. package/dist/data/CodeDiff.cjs +2 -0
  276. package/dist/data/CodeDiff.cjs.map +1 -1
  277. package/dist/data/CodeDiff.js +2 -0
  278. package/dist/data/CodeDiff.js.map +1 -1
  279. package/dist/data/DataTable.cjs +3 -2
  280. package/dist/data/DataTable.cjs.map +1 -1
  281. package/dist/data/DataTable.d.ts.map +1 -1
  282. package/dist/data/DataTable.js +3 -2
  283. package/dist/data/DataTable.js.map +1 -1
  284. package/dist/data/Gauge.cjs +1 -1
  285. package/dist/data/Gauge.cjs.map +1 -1
  286. package/dist/data/Gauge.js +1 -1
  287. package/dist/data/Gauge.js.map +1 -1
  288. package/dist/data/HighlightedTokens.cjs +2 -10
  289. package/dist/data/HighlightedTokens.cjs.map +1 -1
  290. package/dist/data/HighlightedTokens.d.ts.map +1 -1
  291. package/dist/data/HighlightedTokens.js +1 -9
  292. package/dist/data/HighlightedTokens.js.map +1 -1
  293. package/dist/data/Markdown.cjs +38 -11
  294. package/dist/data/Markdown.cjs.map +1 -1
  295. package/dist/data/Markdown.d.ts +9 -1
  296. package/dist/data/Markdown.d.ts.map +1 -1
  297. package/dist/data/Markdown.js +39 -12
  298. package/dist/data/Markdown.js.map +1 -1
  299. package/dist/data/MultiGaugeBar.cjs +157 -0
  300. package/dist/data/MultiGaugeBar.cjs.map +1 -0
  301. package/dist/data/MultiGaugeBar.d.ts +29 -0
  302. package/dist/data/MultiGaugeBar.d.ts.map +1 -0
  303. package/dist/data/MultiGaugeBar.js +157 -0
  304. package/dist/data/MultiGaugeBar.js.map +1 -0
  305. package/dist/data/OpenInFilesLink.cjs +27 -0
  306. package/dist/data/OpenInFilesLink.cjs.map +1 -0
  307. package/dist/data/OpenInFilesLink.d.ts +15 -0
  308. package/dist/data/OpenInFilesLink.d.ts.map +1 -0
  309. package/dist/data/OpenInFilesLink.js +27 -0
  310. package/dist/data/OpenInFilesLink.js.map +1 -0
  311. package/dist/data/ProgressBar.cjs +5 -3
  312. package/dist/data/ProgressBar.cjs.map +1 -1
  313. package/dist/data/ProgressBar.d.ts +5 -1
  314. package/dist/data/ProgressBar.d.ts.map +1 -1
  315. package/dist/data/ProgressBar.js +5 -3
  316. package/dist/data/ProgressBar.js.map +1 -1
  317. package/dist/data/ProgressBars.cjs +13 -5
  318. package/dist/data/ProgressBars.cjs.map +1 -1
  319. package/dist/data/ProgressBars.d.ts +6 -1
  320. package/dist/data/ProgressBars.d.ts.map +1 -1
  321. package/dist/data/ProgressBars.js +13 -5
  322. package/dist/data/ProgressBars.js.map +1 -1
  323. package/dist/data/Properties.cjs +3 -3
  324. package/dist/data/Properties.cjs.map +1 -1
  325. package/dist/data/Properties.js +3 -3
  326. package/dist/data/Properties.js.map +1 -1
  327. package/dist/data/TaskProgress.cjs +14 -6
  328. package/dist/data/TaskProgress.cjs.map +1 -1
  329. package/dist/data/TaskProgress.d.ts +3 -1
  330. package/dist/data/TaskProgress.d.ts.map +1 -1
  331. package/dist/data/TaskProgress.js +14 -6
  332. package/dist/data/TaskProgress.js.map +1 -1
  333. package/dist/data/TaskPrompts.cjs +96 -0
  334. package/dist/data/TaskPrompts.cjs.map +1 -0
  335. package/dist/data/TaskPrompts.d.ts +6 -0
  336. package/dist/data/TaskPrompts.d.ts.map +1 -0
  337. package/dist/data/TaskPrompts.js +96 -0
  338. package/dist/data/TaskPrompts.js.map +1 -0
  339. package/dist/data/TaskSnapshot.cjs.map +1 -1
  340. package/dist/data/TaskSnapshot.d.ts +3 -0
  341. package/dist/data/TaskSnapshot.d.ts.map +1 -1
  342. package/dist/data/TaskSnapshot.js.map +1 -1
  343. package/dist/data/TimeseriesCoreBars.cjs +7 -3
  344. package/dist/data/TimeseriesCoreBars.cjs.map +1 -1
  345. package/dist/data/TimeseriesCoreBars.d.ts.map +1 -1
  346. package/dist/data/TimeseriesCoreBars.js +8 -4
  347. package/dist/data/TimeseriesCoreBars.js.map +1 -1
  348. package/dist/data/TimeseriesGauge.cjs +12 -5
  349. package/dist/data/TimeseriesGauge.cjs.map +1 -1
  350. package/dist/data/TimeseriesGauge.d.ts.map +1 -1
  351. package/dist/data/TimeseriesGauge.js +13 -6
  352. package/dist/data/TimeseriesGauge.js.map +1 -1
  353. package/dist/data/TimeseriesPanel.cjs +10 -9
  354. package/dist/data/TimeseriesPanel.cjs.map +1 -1
  355. package/dist/data/TimeseriesPanel.d.ts +1 -1
  356. package/dist/data/TimeseriesPanel.d.ts.map +1 -1
  357. package/dist/data/TimeseriesPanel.js +11 -10
  358. package/dist/data/TimeseriesPanel.js.map +1 -1
  359. package/dist/data/TimeseriesPanel.model.cjs +62 -10
  360. package/dist/data/TimeseriesPanel.model.cjs.map +1 -1
  361. package/dist/data/TimeseriesPanel.model.d.ts +40 -1
  362. package/dist/data/TimeseriesPanel.model.d.ts.map +1 -1
  363. package/dist/data/TimeseriesPanel.model.js +62 -11
  364. package/dist/data/TimeseriesPanel.model.js.map +1 -1
  365. package/dist/data/WorkloadCard.cjs +7 -3
  366. package/dist/data/WorkloadCard.cjs.map +1 -1
  367. package/dist/data/WorkloadCard.d.ts +3 -1
  368. package/dist/data/WorkloadCard.d.ts.map +1 -1
  369. package/dist/data/WorkloadCard.js +7 -3
  370. package/dist/data/WorkloadCard.js.map +1 -1
  371. package/dist/data/WorkloadCard.model.cjs.map +1 -1
  372. package/dist/data/WorkloadCard.model.d.ts +2 -0
  373. package/dist/data/WorkloadCard.model.d.ts.map +1 -1
  374. package/dist/data/WorkloadCard.model.js.map +1 -1
  375. package/dist/data/ai/ChatWindow.placement.cjs +2 -1
  376. package/dist/data/ai/ChatWindow.placement.cjs.map +1 -1
  377. package/dist/data/ai/ChatWindow.placement.d.ts +1 -1
  378. package/dist/data/ai/ChatWindow.placement.d.ts.map +1 -1
  379. package/dist/data/ai/ChatWindow.placement.js +2 -1
  380. package/dist/data/ai/ChatWindow.placement.js.map +1 -1
  381. package/dist/data/ai/SpecRuntimeBar.cjs +2 -2
  382. package/dist/data/ai/SpecRuntimeBar.cjs.map +1 -1
  383. package/dist/data/ai/SpecRuntimeBar.d.ts +4 -1
  384. package/dist/data/ai/SpecRuntimeBar.d.ts.map +1 -1
  385. package/dist/data/ai/SpecRuntimeBar.js +2 -2
  386. package/dist/data/ai/SpecRuntimeBar.js.map +1 -1
  387. package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs +1 -1
  388. package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs.map +1 -1
  389. package/dist/data/ai/SpecRuntimeEditor/PromptSection.js +1 -1
  390. package/dist/data/ai/SpecRuntimeEditor/PromptSection.js.map +1 -1
  391. package/dist/data/ai/SpecRuntimeEditor.model.cjs +2 -2
  392. package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
  393. package/dist/data/ai/SpecRuntimeEditor.model.d.ts +2 -2
  394. package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
  395. package/dist/data/ai/SpecRuntimeEditor.model.js +2 -2
  396. package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
  397. package/dist/data/ai/ThreadPicker.cjs +2 -2
  398. package/dist/data/ai/ThreadPicker.cjs.map +1 -1
  399. package/dist/data/ai/ThreadPicker.js +2 -2
  400. package/dist/data/ai/ThreadPicker.js.map +1 -1
  401. package/dist/data/ai/index.d.ts +2 -0
  402. package/dist/data/ai/index.d.ts.map +1 -1
  403. package/dist/data/ai/use-prompt-run-stream.cjs +126 -0
  404. package/dist/data/ai/use-prompt-run-stream.cjs.map +1 -0
  405. package/dist/data/ai/use-prompt-run-stream.d.ts +52 -0
  406. package/dist/data/ai/use-prompt-run-stream.d.ts.map +1 -0
  407. package/dist/data/ai/use-prompt-run-stream.js +126 -0
  408. package/dist/data/ai/use-prompt-run-stream.js.map +1 -0
  409. package/dist/data/cache-browser/CacheBrowser.cjs +1 -0
  410. package/dist/data/cache-browser/CacheBrowser.cjs.map +1 -1
  411. package/dist/data/cache-browser/CacheBrowser.d.ts.map +1 -1
  412. package/dist/data/cache-browser/CacheBrowser.js +1 -0
  413. package/dist/data/cache-browser/CacheBrowser.js.map +1 -1
  414. package/dist/data/charts/BarChart.cjs +194 -0
  415. package/dist/data/charts/BarChart.cjs.map +1 -0
  416. package/dist/data/charts/BarChart.d.ts +19 -0
  417. package/dist/data/charts/BarChart.d.ts.map +1 -0
  418. package/dist/data/charts/BarChart.js +194 -0
  419. package/dist/data/charts/BarChart.js.map +1 -0
  420. package/dist/data/charts/ChartLegend.cjs +54 -0
  421. package/dist/data/charts/ChartLegend.cjs.map +1 -0
  422. package/dist/data/charts/ChartLegend.d.ts +17 -0
  423. package/dist/data/charts/ChartLegend.d.ts.map +1 -0
  424. package/dist/data/charts/ChartLegend.js +54 -0
  425. package/dist/data/charts/ChartLegend.js.map +1 -0
  426. package/dist/data/charts/Sparkline.cjs +56 -0
  427. package/dist/data/charts/Sparkline.cjs.map +1 -0
  428. package/dist/data/charts/Sparkline.d.ts +15 -0
  429. package/dist/data/charts/Sparkline.d.ts.map +1 -0
  430. package/dist/data/charts/Sparkline.js +56 -0
  431. package/dist/data/charts/Sparkline.js.map +1 -0
  432. package/dist/data/charts/StackedBarChart.cjs +241 -0
  433. package/dist/data/charts/StackedBarChart.cjs.map +1 -0
  434. package/dist/data/charts/StackedBarChart.d.ts +20 -0
  435. package/dist/data/charts/StackedBarChart.d.ts.map +1 -0
  436. package/dist/data/charts/StackedBarChart.js +241 -0
  437. package/dist/data/charts/StackedBarChart.js.map +1 -0
  438. package/dist/data/charts/TrendChart.cjs +157 -0
  439. package/dist/data/charts/TrendChart.cjs.map +1 -0
  440. package/dist/data/charts/TrendChart.d.ts +20 -0
  441. package/dist/data/charts/TrendChart.d.ts.map +1 -0
  442. package/dist/data/charts/TrendChart.js +157 -0
  443. package/dist/data/charts/TrendChart.js.map +1 -0
  444. package/dist/data/charts/chart-marks.cjs +115 -0
  445. package/dist/data/charts/chart-marks.cjs.map +1 -0
  446. package/dist/data/charts/chart-marks.d.ts +39 -0
  447. package/dist/data/charts/chart-marks.d.ts.map +1 -0
  448. package/dist/data/charts/chart-marks.js +112 -0
  449. package/dist/data/charts/chart-marks.js.map +1 -0
  450. package/dist/data/charts/chart-palette.cjs +74 -0
  451. package/dist/data/charts/chart-palette.cjs.map +1 -0
  452. package/dist/data/charts/chart-palette.d.ts +58 -0
  453. package/dist/data/charts/chart-palette.d.ts.map +1 -0
  454. package/dist/data/charts/chart-palette.js +72 -0
  455. package/dist/data/charts/chart-palette.js.map +1 -0
  456. package/dist/data/charts/chart-scale.cjs +115 -0
  457. package/dist/data/charts/chart-scale.cjs.map +1 -0
  458. package/dist/data/charts/chart-scale.d.ts +41 -0
  459. package/dist/data/charts/chart-scale.d.ts.map +1 -0
  460. package/dist/data/charts/chart-scale.js +104 -0
  461. package/dist/data/charts/chart-scale.js.map +1 -0
  462. package/dist/data/charts/chart.test-utils.d.ts +7 -0
  463. package/dist/data/charts/chart.test-utils.d.ts.map +1 -0
  464. package/dist/data/charts/index.d.ts +7 -0
  465. package/dist/data/charts/index.d.ts.map +1 -0
  466. package/dist/data/chat/MessageActions.cjs +1 -1
  467. package/dist/data/chat/MessageActions.cjs.map +1 -1
  468. package/dist/data/chat/MessageActions.js +1 -1
  469. package/dist/data/chat/MessageActions.js.map +1 -1
  470. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs +1 -1
  471. package/dist/data/diagnostics/DiagnosticsDetailPanel.js +1 -1
  472. package/dist/data/diagnostics/DiagnosticsTree.cjs +1 -1
  473. package/dist/data/diagnostics/DiagnosticsTree.cjs.map +1 -1
  474. package/dist/data/diagnostics/DiagnosticsTree.js +1 -1
  475. package/dist/data/diagnostics/DiagnosticsTree.js.map +1 -1
  476. package/dist/data/diagnostics/FrameSourceWindow.cjs +9 -2
  477. package/dist/data/diagnostics/FrameSourceWindow.cjs.map +1 -1
  478. package/dist/data/diagnostics/FrameSourceWindow.d.ts +1 -1
  479. package/dist/data/diagnostics/FrameSourceWindow.d.ts.map +1 -1
  480. package/dist/data/diagnostics/FrameSourceWindow.js +9 -2
  481. package/dist/data/diagnostics/FrameSourceWindow.js.map +1 -1
  482. package/dist/data/diagnostics/ProblemActions.cjs +37 -0
  483. package/dist/data/diagnostics/ProblemActions.cjs.map +1 -0
  484. package/dist/data/diagnostics/ProblemActions.d.ts +6 -0
  485. package/dist/data/diagnostics/ProblemActions.d.ts.map +1 -0
  486. package/dist/data/diagnostics/ProblemActions.js +37 -0
  487. package/dist/data/diagnostics/ProblemActions.js.map +1 -0
  488. package/dist/data/diagnostics/ProblemFacet.cjs +33 -0
  489. package/dist/data/diagnostics/ProblemFacet.cjs.map +1 -0
  490. package/dist/data/diagnostics/ProblemFacet.d.ts +9 -0
  491. package/dist/data/diagnostics/ProblemFacet.d.ts.map +1 -0
  492. package/dist/data/diagnostics/ProblemFacet.js +33 -0
  493. package/dist/data/diagnostics/ProblemFacet.js.map +1 -0
  494. package/dist/data/diagnostics/ProblemRow.cjs +62 -0
  495. package/dist/data/diagnostics/ProblemRow.cjs.map +1 -0
  496. package/dist/data/diagnostics/ProblemRow.d.ts +14 -0
  497. package/dist/data/diagnostics/ProblemRow.d.ts.map +1 -0
  498. package/dist/data/diagnostics/ProblemRow.js +62 -0
  499. package/dist/data/diagnostics/ProblemRow.js.map +1 -0
  500. package/dist/data/diagnostics/ProblemViewOptions.cjs +18 -0
  501. package/dist/data/diagnostics/ProblemViewOptions.cjs.map +1 -0
  502. package/dist/data/diagnostics/ProblemViewOptions.d.ts +6 -0
  503. package/dist/data/diagnostics/ProblemViewOptions.d.ts.map +1 -0
  504. package/dist/data/diagnostics/ProblemViewOptions.js +18 -0
  505. package/dist/data/diagnostics/ProblemViewOptions.js.map +1 -0
  506. package/dist/data/diagnostics/StackFrameRow.cjs +1 -1
  507. package/dist/data/diagnostics/StackFrameRow.cjs.map +1 -1
  508. package/dist/data/diagnostics/StackFrameRow.js +1 -1
  509. package/dist/data/diagnostics/StackFrameRow.js.map +1 -1
  510. package/dist/data/diagnostics/diagnostic-identity.cjs +14 -0
  511. package/dist/data/diagnostics/diagnostic-identity.cjs.map +1 -0
  512. package/dist/data/diagnostics/diagnostic-identity.d.ts +3 -0
  513. package/dist/data/diagnostics/diagnostic-identity.d.ts.map +1 -0
  514. package/dist/data/diagnostics/diagnostic-identity.js +14 -0
  515. package/dist/data/diagnostics/diagnostic-identity.js.map +1 -0
  516. package/dist/data/diagnostics/use-problem-expansion.cjs +16 -0
  517. package/dist/data/diagnostics/use-problem-expansion.cjs.map +1 -0
  518. package/dist/data/diagnostics/use-problem-expansion.d.ts +3 -0
  519. package/dist/data/diagnostics/use-problem-expansion.d.ts.map +1 -0
  520. package/dist/data/diagnostics/use-problem-expansion.js +16 -0
  521. package/dist/data/diagnostics/use-problem-expansion.js.map +1 -0
  522. package/dist/data/git/GitChangeList.cjs +9 -6
  523. package/dist/data/git/GitChangeList.cjs.map +1 -1
  524. package/dist/data/git/GitChangeList.d.ts +6 -0
  525. package/dist/data/git/GitChangeList.d.ts.map +1 -1
  526. package/dist/data/git/GitChangeList.js +9 -6
  527. package/dist/data/git/GitChangeList.js.map +1 -1
  528. package/dist/data/git/pickers/GitPickersDemo.d.ts.map +1 -1
  529. package/dist/data/git/pickers/ReferencePicker.cjs +1 -0
  530. package/dist/data/git/pickers/ReferencePicker.cjs.map +1 -1
  531. package/dist/data/git/pickers/ReferencePicker.js +1 -0
  532. package/dist/data/git/pickers/ReferencePicker.js.map +1 -1
  533. package/dist/data/lint/LintDetail.cjs +230 -189
  534. package/dist/data/lint/LintDetail.cjs.map +1 -1
  535. package/dist/data/lint/LintDetail.d.ts +25 -3
  536. package/dist/data/lint/LintDetail.d.ts.map +1 -1
  537. package/dist/data/lint/LintDetail.js +231 -192
  538. package/dist/data/lint/LintDetail.js.map +1 -1
  539. package/dist/data/lint/LintFilterBar.cjs +78 -83
  540. package/dist/data/lint/LintFilterBar.cjs.map +1 -1
  541. package/dist/data/lint/LintFilterBar.d.ts +23 -6
  542. package/dist/data/lint/LintFilterBar.d.ts.map +1 -1
  543. package/dist/data/lint/LintFilterBar.js +78 -85
  544. package/dist/data/lint/LintFilterBar.js.map +1 -1
  545. package/dist/data/lint/LintIgnoreMenu.cjs +59 -0
  546. package/dist/data/lint/LintIgnoreMenu.cjs.map +1 -0
  547. package/dist/data/lint/LintIgnoreMenu.d.ts +20 -0
  548. package/dist/data/lint/LintIgnoreMenu.d.ts.map +1 -0
  549. package/dist/data/lint/LintIgnoreMenu.js +58 -0
  550. package/dist/data/lint/LintIgnoreMenu.js.map +1 -0
  551. package/dist/data/lint/LintResults.cjs +59 -14
  552. package/dist/data/lint/LintResults.cjs.map +1 -1
  553. package/dist/data/lint/LintResults.d.ts +25 -1
  554. package/dist/data/lint/LintResults.d.ts.map +1 -1
  555. package/dist/data/lint/LintResults.fixtures.d.ts +19 -0
  556. package/dist/data/lint/LintResults.fixtures.d.ts.map +1 -1
  557. package/dist/data/lint/LintResults.js +60 -15
  558. package/dist/data/lint/LintResults.js.map +1 -1
  559. package/dist/data/lint/LintTable.cjs +156 -0
  560. package/dist/data/lint/LintTable.cjs.map +1 -0
  561. package/dist/data/lint/LintTable.d.ts +13 -0
  562. package/dist/data/lint/LintTable.d.ts.map +1 -0
  563. package/dist/data/lint/LintTable.js +156 -0
  564. package/dist/data/lint/LintTable.js.map +1 -0
  565. package/dist/data/lint/LintTreeNode.cjs +42 -19
  566. package/dist/data/lint/LintTreeNode.cjs.map +1 -1
  567. package/dist/data/lint/LintTreeNode.d.ts +7 -2
  568. package/dist/data/lint/LintTreeNode.d.ts.map +1 -1
  569. package/dist/data/lint/LintTreeNode.js +44 -21
  570. package/dist/data/lint/LintTreeNode.js.map +1 -1
  571. package/dist/data/lint/ViolationSnippet.cjs +113 -0
  572. package/dist/data/lint/ViolationSnippet.cjs.map +1 -0
  573. package/dist/data/lint/ViolationSnippet.d.ts +20 -0
  574. package/dist/data/lint/ViolationSnippet.d.ts.map +1 -0
  575. package/dist/data/lint/ViolationSnippet.js +112 -0
  576. package/dist/data/lint/ViolationSnippet.js.map +1 -0
  577. package/dist/data/lint/actions.cjs +44 -16
  578. package/dist/data/lint/actions.cjs.map +1 -1
  579. package/dist/data/lint/actions.d.ts +7 -3
  580. package/dist/data/lint/actions.d.ts.map +1 -1
  581. package/dist/data/lint/actions.js +44 -16
  582. package/dist/data/lint/actions.js.map +1 -1
  583. package/dist/data/lint/grouping.cjs +105 -8
  584. package/dist/data/lint/grouping.cjs.map +1 -1
  585. package/dist/data/lint/grouping.d.ts +21 -1
  586. package/dist/data/lint/grouping.d.ts.map +1 -1
  587. package/dist/data/lint/grouping.js +105 -10
  588. package/dist/data/lint/grouping.js.map +1 -1
  589. package/dist/data/lint/ignore-menu-items.cjs +18 -0
  590. package/dist/data/lint/ignore-menu-items.cjs.map +1 -0
  591. package/dist/data/lint/ignore-menu-items.d.ts +6 -0
  592. package/dist/data/lint/ignore-menu-items.d.ts.map +1 -0
  593. package/dist/data/lint/ignore-menu-items.js +17 -0
  594. package/dist/data/lint/ignore-menu-items.js.map +1 -0
  595. package/dist/data/lint/index.d.ts +7 -5
  596. package/dist/data/lint/index.d.ts.map +1 -1
  597. package/dist/data/lint/stats.cjs +19 -4
  598. package/dist/data/lint/stats.cjs.map +1 -1
  599. package/dist/data/lint/stats.d.ts +13 -3
  600. package/dist/data/lint/stats.d.ts.map +1 -1
  601. package/dist/data/lint/stats.js +17 -5
  602. package/dist/data/lint/stats.js.map +1 -1
  603. package/dist/data/lint/types.cjs +8 -0
  604. package/dist/data/lint/types.cjs.map +1 -1
  605. package/dist/data/lint/types.d.ts +47 -0
  606. package/dist/data/lint/types.d.ts.map +1 -1
  607. package/dist/data/lint/types.js +8 -1
  608. package/dist/data/lint/types.js.map +1 -1
  609. package/dist/data/lint/violation-menu-items.cjs +31 -0
  610. package/dist/data/lint/violation-menu-items.cjs.map +1 -0
  611. package/dist/data/lint/violation-menu-items.d.ts +12 -0
  612. package/dist/data/lint/violation-menu-items.d.ts.map +1 -0
  613. package/dist/data/lint/violation-menu-items.js +31 -0
  614. package/dist/data/lint/violation-menu-items.js.map +1 -0
  615. package/dist/data/markdown-source-blocks.cjs +38 -0
  616. package/dist/data/markdown-source-blocks.cjs.map +1 -0
  617. package/dist/data/markdown-source-blocks.d.ts +32 -0
  618. package/dist/data/markdown-source-blocks.d.ts.map +1 -0
  619. package/dist/data/markdown-source-blocks.js +35 -0
  620. package/dist/data/markdown-source-blocks.js.map +1 -0
  621. package/dist/data/test-runner/FilterFacet.cjs +52 -0
  622. package/dist/data/test-runner/FilterFacet.cjs.map +1 -0
  623. package/dist/data/test-runner/FilterFacet.d.ts +13 -0
  624. package/dist/data/test-runner/FilterFacet.d.ts.map +1 -0
  625. package/dist/data/test-runner/FilterFacet.js +52 -0
  626. package/dist/data/test-runner/FilterFacet.js.map +1 -0
  627. package/dist/data/test-runner/MatrixMarks.cjs +19 -29
  628. package/dist/data/test-runner/MatrixMarks.cjs.map +1 -1
  629. package/dist/data/test-runner/MatrixMarks.d.ts +4 -4
  630. package/dist/data/test-runner/MatrixMarks.d.ts.map +1 -1
  631. package/dist/data/test-runner/MatrixMarks.js +19 -29
  632. package/dist/data/test-runner/MatrixMarks.js.map +1 -1
  633. package/dist/data/test-runner/TestAttemptDetail.cjs +1 -1
  634. package/dist/data/test-runner/TestAttemptDetail.js +1 -1
  635. package/dist/data/test-runner/TestDetailPanel.cjs +11 -0
  636. package/dist/data/test-runner/TestDetailPanel.cjs.map +1 -1
  637. package/dist/data/test-runner/TestDetailPanel.d.ts.map +1 -1
  638. package/dist/data/test-runner/TestDetailPanel.js +11 -0
  639. package/dist/data/test-runner/TestDetailPanel.js.map +1 -1
  640. package/dist/data/test-runner/TestFilterBar.cjs +3 -44
  641. package/dist/data/test-runner/TestFilterBar.cjs.map +1 -1
  642. package/dist/data/test-runner/TestFilterBar.d.ts.map +1 -1
  643. package/dist/data/test-runner/TestFilterBar.js +3 -44
  644. package/dist/data/test-runner/TestFilterBar.js.map +1 -1
  645. package/dist/data/test-runner/TestRunner.cjs +3 -1
  646. package/dist/data/test-runner/TestRunner.cjs.map +1 -1
  647. package/dist/data/test-runner/TestRunner.d.ts +7 -1
  648. package/dist/data/test-runner/TestRunner.d.ts.map +1 -1
  649. package/dist/data/test-runner/TestRunner.js +3 -1
  650. package/dist/data/test-runner/TestRunner.js.map +1 -1
  651. package/dist/data/test-runner/context.cjs.map +1 -1
  652. package/dist/data/test-runner/context.d.ts +3 -0
  653. package/dist/data/test-runner/context.d.ts.map +1 -1
  654. package/dist/data/test-runner/context.js.map +1 -1
  655. package/dist/data/test-runner/types.d.ts +2 -0
  656. package/dist/data/test-runner/types.d.ts.map +1 -1
  657. package/dist/data/timeseries-query.cjs +98 -2
  658. package/dist/data/timeseries-query.cjs.map +1 -1
  659. package/dist/data/timeseries-query.d.ts +31 -5
  660. package/dist/data/timeseries-query.d.ts.map +1 -1
  661. package/dist/data/timeseries-query.js +98 -3
  662. package/dist/data/timeseries-query.js.map +1 -1
  663. package/dist/data/timeseries-stream-provider.cjs +38 -0
  664. package/dist/data/timeseries-stream-provider.cjs.map +1 -0
  665. package/dist/data/timeseries-stream-provider.d.ts +26 -0
  666. package/dist/data/timeseries-stream-provider.d.ts.map +1 -0
  667. package/dist/data/timeseries-stream-provider.js +38 -0
  668. package/dist/data/timeseries-stream-provider.js.map +1 -0
  669. package/dist/data/timeseries-stream.cjs +304 -0
  670. package/dist/data/timeseries-stream.cjs.map +1 -0
  671. package/dist/data/timeseries-stream.d.ts +81 -0
  672. package/dist/data/timeseries-stream.d.ts.map +1 -0
  673. package/dist/data/timeseries-stream.fixtures.d.ts +36 -0
  674. package/dist/data/timeseries-stream.fixtures.d.ts.map +1 -0
  675. package/dist/data/timeseries-stream.js +296 -0
  676. package/dist/data/timeseries-stream.js.map +1 -0
  677. package/dist/data/token-style.cjs +13 -0
  678. package/dist/data/token-style.cjs.map +1 -0
  679. package/dist/data/token-style.d.ts +4 -0
  680. package/dist/data/token-style.d.ts.map +1 -0
  681. package/dist/data/token-style.js +13 -0
  682. package/dist/data/token-style.js.map +1 -0
  683. package/dist/data/traces/ProcessTraceDetail.cjs +1 -1
  684. package/dist/data/traces/ProcessTraceDetail.js +1 -1
  685. package/dist/data/traces/index.d.ts +1 -1
  686. package/dist/data/traces/index.d.ts.map +1 -1
  687. package/dist/data/use-data-table-virtual.d.ts +1 -1
  688. package/dist/data/version-info.cjs +3 -3
  689. package/dist/data/version-info.js +3 -3
  690. package/dist/data/workload-panel/MemoryStack.cjs +49 -0
  691. package/dist/data/workload-panel/MemoryStack.cjs.map +1 -0
  692. package/dist/data/workload-panel/MemoryStack.d.ts +11 -0
  693. package/dist/data/workload-panel/MemoryStack.d.ts.map +1 -0
  694. package/dist/data/workload-panel/MemoryStack.js +48 -0
  695. package/dist/data/workload-panel/MemoryStack.js.map +1 -0
  696. package/dist/data/workload-panel/Metrics.cjs +197 -0
  697. package/dist/data/workload-panel/Metrics.cjs.map +1 -0
  698. package/dist/data/workload-panel/Metrics.d.ts +11 -0
  699. package/dist/data/workload-panel/Metrics.d.ts.map +1 -0
  700. package/dist/data/workload-panel/Metrics.js +196 -0
  701. package/dist/data/workload-panel/Metrics.js.map +1 -0
  702. package/dist/data/workload-panel/WorkloadPanel.cjs +66 -0
  703. package/dist/data/workload-panel/WorkloadPanel.cjs.map +1 -0
  704. package/dist/data/workload-panel/WorkloadPanel.d.ts +3 -0
  705. package/dist/data/workload-panel/WorkloadPanel.d.ts.map +1 -0
  706. package/dist/data/workload-panel/WorkloadPanel.js +66 -0
  707. package/dist/data/workload-panel/WorkloadPanel.js.map +1 -0
  708. package/dist/data/workload-panel/fixtures.d.ts +60 -0
  709. package/dist/data/workload-panel/fixtures.d.ts.map +1 -0
  710. package/dist/data/workload-panel/model.cjs +137 -0
  711. package/dist/data/workload-panel/model.cjs.map +1 -0
  712. package/dist/data/workload-panel/model.d.ts +53 -0
  713. package/dist/data/workload-panel/model.d.ts.map +1 -0
  714. package/dist/data/workload-panel/model.js +133 -0
  715. package/dist/data/workload-panel/model.js.map +1 -0
  716. package/dist/data/workload-panel/types.d.ts +56 -0
  717. package/dist/data/workload-panel/types.d.ts.map +1 -0
  718. package/dist/data.cjs +57 -6
  719. package/dist/data.d.ts +9 -1
  720. package/dist/data.d.ts.map +1 -1
  721. package/dist/data.js +27 -10
  722. package/dist/file-findings/AnnotatedCode.cjs +243 -0
  723. package/dist/file-findings/AnnotatedCode.cjs.map +1 -0
  724. package/dist/file-findings/AnnotatedCode.d.ts +30 -0
  725. package/dist/file-findings/AnnotatedCode.d.ts.map +1 -0
  726. package/dist/file-findings/AnnotatedCode.js +243 -0
  727. package/dist/file-findings/AnnotatedCode.js.map +1 -0
  728. package/dist/file-findings/FileFindingsView.cjs +213 -0
  729. package/dist/file-findings/FileFindingsView.cjs.map +1 -0
  730. package/dist/file-findings/FileFindingsView.d.ts +35 -0
  731. package/dist/file-findings/FileFindingsView.d.ts.map +1 -0
  732. package/dist/file-findings/FileFindingsView.js +213 -0
  733. package/dist/file-findings/FileFindingsView.js.map +1 -0
  734. package/dist/file-findings/LazyAnnotatedCode.cjs +22 -0
  735. package/dist/file-findings/LazyAnnotatedCode.cjs.map +1 -0
  736. package/dist/file-findings/LazyAnnotatedCode.d.ts +5 -0
  737. package/dist/file-findings/LazyAnnotatedCode.d.ts.map +1 -0
  738. package/dist/file-findings/LazyAnnotatedCode.js +22 -0
  739. package/dist/file-findings/LazyAnnotatedCode.js.map +1 -0
  740. package/dist/file-findings/adapters.cjs +155 -0
  741. package/dist/file-findings/adapters.cjs.map +1 -0
  742. package/dist/file-findings/adapters.d.ts +24 -0
  743. package/dist/file-findings/adapters.d.ts.map +1 -0
  744. package/dist/file-findings/adapters.js +153 -0
  745. package/dist/file-findings/adapters.js.map +1 -0
  746. package/dist/file-findings/file-review/CommentDraft.cjs +97 -0
  747. package/dist/file-findings/file-review/CommentDraft.cjs.map +1 -0
  748. package/dist/file-findings/file-review/CommentDraft.d.ts +25 -0
  749. package/dist/file-findings/file-review/CommentDraft.d.ts.map +1 -0
  750. package/dist/file-findings/file-review/CommentDraft.js +97 -0
  751. package/dist/file-findings/file-review/CommentDraft.js.map +1 -0
  752. package/dist/file-findings/file-review/FileReview.cjs +863 -0
  753. package/dist/file-findings/file-review/FileReview.cjs.map +1 -0
  754. package/dist/file-findings/file-review/FileReview.d.ts +79 -0
  755. package/dist/file-findings/file-review/FileReview.d.ts.map +1 -0
  756. package/dist/file-findings/file-review/FileReview.fixtures.d.ts +25 -0
  757. package/dist/file-findings/file-review/FileReview.fixtures.d.ts.map +1 -0
  758. package/dist/file-findings/file-review/FileReview.js +863 -0
  759. package/dist/file-findings/file-review/FileReview.js.map +1 -0
  760. package/dist/file-findings/file-review/InlineAuthors.cjs +77 -0
  761. package/dist/file-findings/file-review/InlineAuthors.cjs.map +1 -0
  762. package/dist/file-findings/file-review/InlineAuthors.d.ts +9 -0
  763. package/dist/file-findings/file-review/InlineAuthors.d.ts.map +1 -0
  764. package/dist/file-findings/file-review/InlineAuthors.js +77 -0
  765. package/dist/file-findings/file-review/InlineAuthors.js.map +1 -0
  766. package/dist/file-findings/file-review/InlineThread.cjs +77 -0
  767. package/dist/file-findings/file-review/InlineThread.cjs.map +1 -0
  768. package/dist/file-findings/file-review/InlineThread.d.ts +27 -0
  769. package/dist/file-findings/file-review/InlineThread.d.ts.map +1 -0
  770. package/dist/file-findings/file-review/InlineThread.js +77 -0
  771. package/dist/file-findings/file-review/InlineThread.js.map +1 -0
  772. package/dist/file-findings/file-review/ProblemsList.cjs +164 -0
  773. package/dist/file-findings/file-review/ProblemsList.cjs.map +1 -0
  774. package/dist/file-findings/file-review/ProblemsList.d.ts +15 -0
  775. package/dist/file-findings/file-review/ProblemsList.d.ts.map +1 -0
  776. package/dist/file-findings/file-review/ProblemsList.js +164 -0
  777. package/dist/file-findings/file-review/ProblemsList.js.map +1 -0
  778. package/dist/file-findings/file-review/SourceView.cjs +179 -0
  779. package/dist/file-findings/file-review/SourceView.cjs.map +1 -0
  780. package/dist/file-findings/file-review/SourceView.d.ts +29 -0
  781. package/dist/file-findings/file-review/SourceView.d.ts.map +1 -0
  782. package/dist/file-findings/file-review/SourceView.js +179 -0
  783. package/dist/file-findings/file-review/SourceView.js.map +1 -0
  784. package/dist/file-findings/file-review/blame.cjs +35 -0
  785. package/dist/file-findings/file-review/blame.cjs.map +1 -0
  786. package/dist/file-findings/file-review/blame.d.ts +28 -0
  787. package/dist/file-findings/file-review/blame.d.ts.map +1 -0
  788. package/dist/file-findings/file-review/blame.js +33 -0
  789. package/dist/file-findings/file-review/blame.js.map +1 -0
  790. package/dist/file-findings/file-review/geometry.cjs +101 -0
  791. package/dist/file-findings/file-review/geometry.cjs.map +1 -0
  792. package/dist/file-findings/file-review/geometry.d.ts +45 -0
  793. package/dist/file-findings/file-review/geometry.d.ts.map +1 -0
  794. package/dist/file-findings/file-review/geometry.js +98 -0
  795. package/dist/file-findings/file-review/geometry.js.map +1 -0
  796. package/dist/file-findings/file-review/hooks.cjs +101 -0
  797. package/dist/file-findings/file-review/hooks.cjs.map +1 -0
  798. package/dist/file-findings/file-review/hooks.d.ts +22 -0
  799. package/dist/file-findings/file-review/hooks.d.ts.map +1 -0
  800. package/dist/file-findings/file-review/hooks.js +99 -0
  801. package/dist/file-findings/file-review/hooks.js.map +1 -0
  802. package/dist/file-findings/file-review/marks.cjs +52 -0
  803. package/dist/file-findings/file-review/marks.cjs.map +1 -0
  804. package/dist/file-findings/file-review/marks.d.ts +23 -0
  805. package/dist/file-findings/file-review/marks.d.ts.map +1 -0
  806. package/dist/file-findings/file-review/marks.js +47 -0
  807. package/dist/file-findings/file-review/marks.js.map +1 -0
  808. package/dist/file-findings/file-review/problem-filters.cjs +14 -0
  809. package/dist/file-findings/file-review/problem-filters.cjs.map +1 -0
  810. package/dist/file-findings/file-review/problem-filters.d.ts +10 -0
  811. package/dist/file-findings/file-review/problem-filters.d.ts.map +1 -0
  812. package/dist/file-findings/file-review/problem-filters.js +13 -0
  813. package/dist/file-findings/file-review/problem-filters.js.map +1 -0
  814. package/dist/file-findings/file-review/quote-anchor.cjs +234 -0
  815. package/dist/file-findings/file-review/quote-anchor.cjs.map +1 -0
  816. package/dist/file-findings/file-review/quote-anchor.d.ts +54 -0
  817. package/dist/file-findings/file-review/quote-anchor.d.ts.map +1 -0
  818. package/dist/file-findings/file-review/quote-anchor.js +226 -0
  819. package/dist/file-findings/file-review/quote-anchor.js.map +1 -0
  820. package/dist/file-findings/file-review/source-anchor.cjs +104 -0
  821. package/dist/file-findings/file-review/source-anchor.cjs.map +1 -0
  822. package/dist/file-findings/file-review/source-anchor.d.ts +27 -0
  823. package/dist/file-findings/file-review/source-anchor.d.ts.map +1 -0
  824. package/dist/file-findings/file-review/source-anchor.js +99 -0
  825. package/dist/file-findings/file-review/source-anchor.js.map +1 -0
  826. package/dist/file-findings/file-review/source-marks.cjs +71 -0
  827. package/dist/file-findings/file-review/source-marks.cjs.map +1 -0
  828. package/dist/file-findings/file-review/source-marks.d.ts +27 -0
  829. package/dist/file-findings/file-review/source-marks.d.ts.map +1 -0
  830. package/dist/file-findings/file-review/source-marks.js +68 -0
  831. package/dist/file-findings/file-review/source-marks.js.map +1 -0
  832. package/dist/file-findings/findings-comments.cjs +136 -0
  833. package/dist/file-findings/findings-comments.cjs.map +1 -0
  834. package/dist/file-findings/findings-comments.d.ts +28 -0
  835. package/dist/file-findings/findings-comments.d.ts.map +1 -0
  836. package/dist/file-findings/findings-comments.js +131 -0
  837. package/dist/file-findings/findings-comments.js.map +1 -0
  838. package/dist/file-findings/findings-languages.cjs +53 -0
  839. package/dist/file-findings/findings-languages.cjs.map +1 -0
  840. package/dist/file-findings/findings-languages.d.ts +11 -0
  841. package/dist/file-findings/findings-languages.d.ts.map +1 -0
  842. package/dist/file-findings/findings-languages.js +53 -0
  843. package/dist/file-findings/findings-languages.js.map +1 -0
  844. package/dist/file-findings/mdx-source.cjs +48 -0
  845. package/dist/file-findings/mdx-source.cjs.map +1 -0
  846. package/dist/file-findings/mdx-source.d.ts +7 -0
  847. package/dist/file-findings/mdx-source.d.ts.map +1 -0
  848. package/dist/file-findings/mdx-source.js +48 -0
  849. package/dist/file-findings/mdx-source.js.map +1 -0
  850. package/dist/file-findings/monaco-language.cjs +73 -0
  851. package/dist/file-findings/monaco-language.cjs.map +1 -0
  852. package/dist/file-findings/monaco-language.d.ts +11 -0
  853. package/dist/file-findings/monaco-language.d.ts.map +1 -0
  854. package/dist/file-findings/monaco-language.js +72 -0
  855. package/dist/file-findings/monaco-language.js.map +1 -0
  856. package/dist/file-findings/severity-counts.cjs +20 -0
  857. package/dist/file-findings/severity-counts.cjs.map +1 -0
  858. package/dist/file-findings/severity-counts.d.ts +5 -0
  859. package/dist/file-findings/severity-counts.d.ts.map +1 -0
  860. package/dist/file-findings/severity-counts.js +19 -0
  861. package/dist/file-findings/severity-counts.js.map +1 -0
  862. package/dist/file-findings/types.cjs +12 -0
  863. package/dist/file-findings/types.cjs.map +1 -0
  864. package/dist/file-findings/types.d.ts +43 -0
  865. package/dist/file-findings/types.d.ts.map +1 -0
  866. package/dist/file-findings/types.js +11 -0
  867. package/dist/file-findings/types.js.map +1 -0
  868. package/dist/file-findings.cjs +47 -0
  869. package/dist/file-findings.d.ts +15 -0
  870. package/dist/file-findings.d.ts.map +1 -0
  871. package/dist/file-findings.js +15 -0
  872. package/dist/hooks/event-hub.cjs +22 -8
  873. package/dist/hooks/event-hub.cjs.map +1 -1
  874. package/dist/hooks/event-hub.d.ts.map +1 -1
  875. package/dist/hooks/event-hub.js +22 -8
  876. package/dist/hooks/event-hub.js.map +1 -1
  877. package/dist/icons/components/UiBrowser.cjs +51 -0
  878. package/dist/icons/components/UiBrowser.cjs.map +1 -0
  879. package/dist/icons/components/UiBrowser.d.ts +15 -0
  880. package/dist/icons/components/UiBrowser.d.ts.map +1 -0
  881. package/dist/icons/components/UiBrowser.js +48 -0
  882. package/dist/icons/components/UiBrowser.js.map +1 -0
  883. package/dist/icons/components/UiCreditCard.cjs +51 -0
  884. package/dist/icons/components/UiCreditCard.cjs.map +1 -0
  885. package/dist/icons/components/UiCreditCard.d.ts +15 -0
  886. package/dist/icons/components/UiCreditCard.d.ts.map +1 -0
  887. package/dist/icons/components/UiCreditCard.js +48 -0
  888. package/dist/icons/components/UiCreditCard.js.map +1 -0
  889. package/dist/icons/components/UiShoppingCart.cjs +51 -0
  890. package/dist/icons/components/UiShoppingCart.cjs.map +1 -0
  891. package/dist/icons/components/UiShoppingCart.d.ts +15 -0
  892. package/dist/icons/components/UiShoppingCart.d.ts.map +1 -0
  893. package/dist/icons/components/UiShoppingCart.js +48 -0
  894. package/dist/icons/components/UiShoppingCart.js.map +1 -0
  895. package/dist/icons/index.d.ts +6 -0
  896. package/dist/icons/index.d.ts.map +1 -1
  897. package/dist/icons/registry.cjs +6 -0
  898. package/dist/icons/registry.cjs.map +1 -1
  899. package/dist/icons/registry.d.ts.map +1 -1
  900. package/dist/icons/registry.js +6 -0
  901. package/dist/icons/registry.js.map +1 -1
  902. package/dist/icons.cjs +9 -0
  903. package/dist/icons.js +4 -1
  904. package/dist/index.cjs +75 -7
  905. package/dist/index.d.ts +1 -0
  906. package/dist/index.d.ts.map +1 -1
  907. package/dist/index.js +35 -12
  908. package/dist/layout/AppShell.cjs +37 -21
  909. package/dist/layout/AppShell.cjs.map +1 -1
  910. package/dist/layout/AppShell.d.ts +13 -2
  911. package/dist/layout/AppShell.d.ts.map +1 -1
  912. package/dist/layout/AppShell.js +37 -21
  913. package/dist/layout/AppShell.js.map +1 -1
  914. package/dist/layout/AppShell.nav.cjs +7 -6
  915. package/dist/layout/AppShell.nav.cjs.map +1 -1
  916. package/dist/layout/AppShell.nav.d.ts.map +1 -1
  917. package/dist/layout/AppShell.nav.js +7 -6
  918. package/dist/layout/AppShell.nav.js.map +1 -1
  919. package/dist/layout/SplitPane.cjs +16 -6
  920. package/dist/layout/SplitPane.cjs.map +1 -1
  921. package/dist/layout/SplitPane.d.ts +12 -2
  922. package/dist/layout/SplitPane.d.ts.map +1 -1
  923. package/dist/layout/SplitPane.js +16 -6
  924. package/dist/layout/SplitPane.js.map +1 -1
  925. package/dist/layout/Workspace.cjs +37 -33
  926. package/dist/layout/Workspace.cjs.map +1 -1
  927. package/dist/layout/Workspace.d.ts.map +1 -1
  928. package/dist/layout/Workspace.js +37 -33
  929. package/dist/layout/Workspace.js.map +1 -1
  930. package/dist/layout/Workspace.regions.cjs +3 -3
  931. package/dist/layout/Workspace.regions.cjs.map +1 -1
  932. package/dist/layout/Workspace.regions.js +3 -3
  933. package/dist/layout/Workspace.regions.js.map +1 -1
  934. package/dist/lib/breakpoints.cjs +102 -0
  935. package/dist/lib/breakpoints.cjs.map +1 -0
  936. package/dist/lib/breakpoints.d.ts +36 -0
  937. package/dist/lib/breakpoints.d.ts.map +1 -0
  938. package/dist/lib/breakpoints.js +99 -0
  939. package/dist/lib/breakpoints.js.map +1 -0
  940. package/dist/lib/combobox.cjs +2 -1
  941. package/dist/lib/combobox.cjs.map +1 -1
  942. package/dist/lib/combobox.d.ts +1 -1
  943. package/dist/lib/combobox.d.ts.map +1 -1
  944. package/dist/lib/combobox.js +2 -1
  945. package/dist/lib/combobox.js.map +1 -1
  946. package/dist/lib/path-tree.cjs +21 -0
  947. package/dist/lib/path-tree.cjs.map +1 -1
  948. package/dist/lib/path-tree.d.ts +15 -0
  949. package/dist/lib/path-tree.d.ts.map +1 -1
  950. package/dist/lib/path-tree.js +21 -1
  951. package/dist/lib/path-tree.js.map +1 -1
  952. package/dist/overlay/Modal.cjs +2 -1
  953. package/dist/overlay/Modal.cjs.map +1 -1
  954. package/dist/overlay/Modal.d.ts.map +1 -1
  955. package/dist/overlay/Modal.js +2 -1
  956. package/dist/overlay/Modal.js.map +1 -1
  957. package/dist/overlay/dropdownMenuContext.d.ts +1 -1
  958. package/dist/profiles/editor/profileEditor.cjs +1 -1
  959. package/dist/profiles/editor/profileEditor.cjs.map +1 -1
  960. package/dist/profiles/editor/profileEditor.js +1 -1
  961. package/dist/profiles/editor/profileEditor.js.map +1 -1
  962. package/dist/profiles/editor/profileEditorSections.cjs +2 -2
  963. package/dist/profiles/editor/profileEditorSections.cjs.map +1 -1
  964. package/dist/profiles/editor/profileEditorSections.js +2 -2
  965. package/dist/profiles/editor/profileEditorSections.js.map +1 -1
  966. package/dist/profiles/query/prometheusResults.cjs +24 -36
  967. package/dist/profiles/query/prometheusResults.cjs.map +1 -1
  968. package/dist/profiles/query/prometheusResults.d.ts.map +1 -1
  969. package/dist/profiles/query/prometheusResults.js +24 -36
  970. package/dist/profiles/query/prometheusResults.js.map +1 -1
  971. package/dist/rpc/CommandForm.cjs +1 -1
  972. package/dist/rpc/CommandForm.cjs.map +1 -1
  973. package/dist/rpc/CommandForm.js +1 -1
  974. package/dist/rpc/CommandForm.js.map +1 -1
  975. package/dist/rpc/classify.cjs +1 -1
  976. package/dist/rpc/classify.cjs.map +1 -1
  977. package/dist/rpc/classify.d.ts.map +1 -1
  978. package/dist/rpc/classify.js +1 -1
  979. package/dist/rpc/classify.js.map +1 -1
  980. package/dist/rpc/useOperations.d.ts +24 -24
  981. package/dist/rpc.cjs +0 -2
  982. package/dist/rpc.d.ts +0 -1
  983. package/dist/rpc.d.ts.map +1 -1
  984. package/dist/rpc.js +1 -2
  985. package/dist/styles.css +1 -1
  986. package/dist/utils.cjs +6 -0
  987. package/dist/utils.d.ts +2 -1
  988. package/dist/utils.d.ts.map +1 -1
  989. package/dist/utils.js +3 -2
  990. package/package.json +9 -3
  991. package/schemas/json-schema-form.schema.json +9 -1
@@ -0,0 +1,29 @@
1
+ import { DropdownMenuItem } from '../../overlay/DropdownMenu.js';
2
+ import { HighlightedLine } from '../../data/code-highlight.js';
3
+ import { Comment } from '../../comments/comment-types.js';
4
+ import { FileFinding } from '../types.js';
5
+ import { BlameLine } from './blame.js';
6
+ import { SourceMark } from './source-marks.js';
7
+ /**
8
+ * The source with line numbers, syntax colours when `tokens` are given, and a
9
+ * blame column when `blame` is; a line with findings carries its worst
10
+ * severity's rail icon, squiggle and messages. Picking a message selects its
11
+ * finding. With `showFindings` off only the selected line lists its messages,
12
+ * and the rail icon picks a line, the way a comment highlight opens its thread.
13
+ * People's comments highlight their quote and list under the line that ends
14
+ * it; picking one opens its thread there.
15
+ */
16
+ export declare function SourceView({ source, tokens, blame, findings, showFindings, marks, comments, selected, onSelect, onFocus, getFindingActions, }: {
17
+ source: string;
18
+ tokens: readonly HighlightedLine[] | null;
19
+ blame: ReadonlyMap<number, BlameLine> | null;
20
+ findings: readonly FileFinding[];
21
+ showFindings: boolean;
22
+ marks: readonly SourceMark[];
23
+ comments: Comment[];
24
+ selected: string | null;
25
+ onSelect: (finding: FileFinding) => void;
26
+ onFocus: (anchor: string | null) => void;
27
+ getFindingActions?: ((finding: FileFinding) => DropdownMenuItem[]) | undefined;
28
+ }): import("react").JSX.Element;
29
+ //# sourceMappingURL=SourceView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SourceView.d.ts","sourceRoot":"","sources":["../../../src/file-findings/file-review/SourceView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAKjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAG5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAElE,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAgC/D;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,MAAM,EACN,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,iBAAiB,GAClB,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,eAAe,EAAE,GAAG,IAAI,CAAC;IAC1C,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC;IAC7C,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,iBAAiB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW,KAAK,gBAAgB,EAAE,CAAC,GAAG,SAAS,CAAC;CAChF,+BAsGA"}
@@ -0,0 +1,179 @@
1
+ import { cn } from "../../lib/utils.js";
2
+ import { getRoots, selectAnchorThreads } from "../../comments/comment-utils.js";
3
+ import { Icon } from "../../data/Icon.js";
4
+ import { tokenStyle } from "../../data/token-style.js";
5
+ import { ProblemActions } from "../../data/diagnostics/ProblemActions.js";
6
+ import { CommentAuthorAvatar } from "../../comments/CommentAuthor.js";
7
+ import { lineAnchor } from "../findings-comments.js";
8
+ import { SEVERITY_MARK, bySeverityThenLine, severityOf, squiggleUnder } from "./marks.js";
9
+ import { blameAge, isUncommitted } from "./blame.js";
10
+ import { lineSegments } from "./source-marks.js";
11
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
12
+ // src/file-findings/file-review/SourceView.tsx
13
+ /** One line's blame cell: the commit where its range opens, and an age bar on every line of the range. */
14
+ function BlameCell({ blame }) {
15
+ if (!blame) return /* @__PURE__ */ jsx("span", {});
16
+ const { commit, first, recency } = blame;
17
+ const uncommitted = isUncommitted(commit);
18
+ return /* @__PURE__ */ jsxs("span", {
19
+ "data-blame-sha": first ? commit.sha : void 0,
20
+ title: uncommitted ? "Not committed yet" : `${commit.sha.slice(0, 12)} · ${commit.author} · ${commit.date.slice(0, 10)}\n${commit.summary}`,
21
+ className: cn("relative flex min-w-0 items-start gap-1.5 pl-2 pr-2 font-sans text-[11px] text-muted-foreground", first && "border-t border-border/60"),
22
+ children: [/* @__PURE__ */ jsx("span", {
23
+ "aria-hidden": true,
24
+ className: cn("absolute inset-y-0 left-0 w-[3px]", uncommitted ? "bg-amber-500" : "bg-sky-500"),
25
+ style: { opacity: uncommitted ? 1 : .15 + .85 * recency }
26
+ }), first && (uncommitted ? /* @__PURE__ */ jsx("span", {
27
+ className: "italic",
28
+ children: "Uncommitted"
29
+ }) : /* @__PURE__ */ jsxs(Fragment, { children: [
30
+ /* @__PURE__ */ jsx("span", {
31
+ className: "shrink-0 font-mono text-foreground/70",
32
+ children: commit.sha.slice(0, 7)
33
+ }),
34
+ /* @__PURE__ */ jsx("span", {
35
+ className: "min-w-0 flex-1 truncate",
36
+ children: commit.author
37
+ }),
38
+ /* @__PURE__ */ jsx("span", {
39
+ className: "shrink-0 tabular-nums",
40
+ children: blameAge(commit.date)
41
+ })
42
+ ] }))]
43
+ });
44
+ }
45
+ /**
46
+ * The source with line numbers, syntax colours when `tokens` are given, and a
47
+ * blame column when `blame` is; a line with findings carries its worst
48
+ * severity's rail icon, squiggle and messages. Picking a message selects its
49
+ * finding. With `showFindings` off only the selected line lists its messages,
50
+ * and the rail icon picks a line, the way a comment highlight opens its thread.
51
+ * People's comments highlight their quote and list under the line that ends
52
+ * it; picking one opens its thread there.
53
+ */
54
+ function SourceView({ source, tokens, blame, findings, showFindings, marks, comments, selected, onSelect, onFocus, getFindingActions }) {
55
+ return /* @__PURE__ */ jsx("ol", {
56
+ className: "py-2 font-mono text-xs leading-5",
57
+ children: source.split("\n").map((text, i) => {
58
+ const line = i + 1;
59
+ const here = findings.filter((f) => f.line === line).sort(bySeverityThenLine);
60
+ const worst = here[0] ? SEVERITY_MARK[severityOf(here[0].severity)] : null;
61
+ const threads = marks.filter((m) => m.spans.at(-1)?.line === line);
62
+ const listed = showFindings || selected === lineAnchor(line) ? here : [];
63
+ return /* @__PURE__ */ jsxs("li", {
64
+ "data-source-line": line,
65
+ className: cn("grid pr-3", blame ? "grid-cols-[13rem_1.25rem_2.5rem_1fr]" : "grid-cols-[1.25rem_2.5rem_1fr]"),
66
+ children: [
67
+ blame && /* @__PURE__ */ jsx(BlameCell, { blame: blame.get(line) }),
68
+ worst && !showFindings ? /* @__PURE__ */ jsx("button", {
69
+ type: "button",
70
+ "data-source-mark": line,
71
+ "aria-label": `${here.length} ${here.length === 1 ? "finding" : "findings"} on line ${line}`,
72
+ "aria-pressed": selected === lineAnchor(line),
73
+ onClick: () => selected === lineAnchor(line) ? onFocus(null) : onSelect(here[0]),
74
+ className: cn("flex h-5 items-center justify-center rounded-sm hover:bg-muted", worst.tone),
75
+ children: /* @__PURE__ */ jsx(Icon, {
76
+ icon: worst.icon,
77
+ className: "text-[13px]"
78
+ })
79
+ }) : /* @__PURE__ */ jsx("span", {
80
+ className: cn("flex h-5 items-center justify-center", worst?.tone),
81
+ children: worst && /* @__PURE__ */ jsx(Icon, {
82
+ icon: worst.icon,
83
+ className: "text-[13px]"
84
+ })
85
+ }),
86
+ /* @__PURE__ */ jsx("span", {
87
+ className: "select-none pr-3 text-right text-muted-foreground tabular-nums",
88
+ children: line
89
+ }),
90
+ /* @__PURE__ */ jsxs("span", {
91
+ className: "min-w-0 whitespace-pre-wrap break-words",
92
+ children: [
93
+ /* @__PURE__ */ jsx("span", {
94
+ "data-source-text": line,
95
+ style: worst ? squiggleUnder(worst.stroke) : void 0,
96
+ children: text ? lineSegments(text, line, marks, tokens?.[i]).map((seg) => {
97
+ const style = seg.token ? tokenStyle(seg.token) : void 0;
98
+ return seg.anchors.length === 0 ? /* @__PURE__ */ jsx("span", {
99
+ style,
100
+ children: seg.text
101
+ }, seg.start) : /* @__PURE__ */ jsx("mark", {
102
+ "data-source-comment": JSON.stringify(seg.anchors),
103
+ onClick: () => window.getSelection()?.isCollapsed && onFocus(seg.anchors[0]),
104
+ style,
105
+ className: cn("cursor-pointer rounded-sm text-inherit", seg.anchors.includes(selected ?? "") ? "bg-amber-300 [[data-theme=dark]_&]:bg-amber-400/50" : "bg-amber-200/60 [[data-theme=dark]_&]:bg-amber-400/25"),
106
+ children: seg.text
107
+ }, seg.start);
108
+ }) : " "
109
+ }),
110
+ threads.map(({ anchor }) => {
111
+ const thread = selectAnchorThreads(comments, anchor);
112
+ const root = getRoots(thread)[0];
113
+ if (!root) return null;
114
+ return /* @__PURE__ */ jsxs("button", {
115
+ type: "button",
116
+ "data-source-thread": anchor,
117
+ onClick: () => onFocus(anchor),
118
+ className: "flex w-full items-center gap-1.5 text-left font-sans text-[11px] text-amber-600 hover:underline [[data-theme=dark]_&]:text-amber-400",
119
+ children: [
120
+ /* @__PURE__ */ jsx(CommentAuthorAvatar, {
121
+ author: root.author ?? null,
122
+ size: "xs",
123
+ bare: true
124
+ }),
125
+ /* @__PURE__ */ jsx("span", {
126
+ className: "shrink-0 font-medium text-foreground",
127
+ children: root.author?.name
128
+ }),
129
+ /* @__PURE__ */ jsx("span", {
130
+ className: "truncate text-muted-foreground",
131
+ children: root.body
132
+ }),
133
+ thread.length > 1 && /* @__PURE__ */ jsxs("span", {
134
+ className: "shrink-0 text-muted-foreground",
135
+ children: [
136
+ "· ",
137
+ thread.length - 1,
138
+ " ",
139
+ thread.length === 2 ? "reply" : "replies"
140
+ ]
141
+ })
142
+ ]
143
+ }, anchor);
144
+ }),
145
+ listed.map((f) => /* @__PURE__ */ jsxs("span", {
146
+ "data-source-finding": f.line,
147
+ className: "flex items-center gap-2",
148
+ children: [/* @__PURE__ */ jsxs("button", {
149
+ type: "button",
150
+ "aria-pressed": selected === lineAnchor(f.line),
151
+ onClick: () => onSelect(f),
152
+ className: cn("flex min-w-0 flex-1 items-center gap-1.5 text-left font-sans text-[11px] hover:underline aria-pressed:font-semibold aria-pressed:underline", SEVERITY_MARK[severityOf(f.severity)].tone),
153
+ children: [
154
+ /* @__PURE__ */ jsx(Icon, { icon: SEVERITY_MARK[severityOf(f.severity)].icon }),
155
+ /* @__PURE__ */ jsx("span", {
156
+ className: "text-foreground",
157
+ children: f.message
158
+ }),
159
+ /* @__PURE__ */ jsxs("span", {
160
+ className: "text-muted-foreground",
161
+ children: [
162
+ f.source,
163
+ " ",
164
+ f.rule
165
+ ]
166
+ })
167
+ ]
168
+ }), getFindingActions && /* @__PURE__ */ jsx(ProblemActions, { items: getFindingActions(f) })]
169
+ }, `${f.rule}:${f.message}`))
170
+ ]
171
+ })
172
+ ]
173
+ }, line);
174
+ })
175
+ });
176
+ }
177
+ export { SourceView };
178
+
179
+ //# sourceMappingURL=SourceView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SourceView.js","names":["_Fragment"],"sources":["../../../src/file-findings/file-review/SourceView.tsx"],"sourcesContent":["import type { DropdownMenuItem } from \"../../overlay/DropdownMenu\";\nimport { ProblemActions } from \"../../data/diagnostics/ProblemActions\";\nimport type { HighlightedLine } from \"../../data/code-highlight\";\nimport { Icon } from \"../../data/Icon\";\nimport { tokenStyle } from \"../../data/token-style\";\nimport { cn } from \"../../lib/utils\";\nimport { CommentAuthorAvatar } from \"../../comments/CommentAuthor\";\nimport type { Comment } from \"../../comments/comment-types\";\nimport { getRoots, selectAnchorThreads } from \"../../comments/comment-utils\";\nimport { lineAnchor } from \"../findings-comments\";\nimport type { FileFinding } from \"../types\";\nimport { blameAge, isUncommitted, type BlameLine } from \"./blame\";\nimport { SEVERITY_MARK, bySeverityThenLine, severityOf, squiggleUnder } from \"./marks\";\nimport { lineSegments, type SourceMark } from \"./source-marks\";\n\n/** One line's blame cell: the commit where its range opens, and an age bar on every line of the range. */\nfunction BlameCell({ blame }: { blame: BlameLine | undefined }) {\n if (!blame) return <span />;\n const { commit, first, recency } = blame;\n const uncommitted = isUncommitted(commit);\n return (\n <span\n data-blame-sha={first ? commit.sha : undefined}\n title={uncommitted ? \"Not committed yet\" : `${commit.sha.slice(0, 12)} · ${commit.author} · ${commit.date.slice(0, 10)}\\n${commit.summary}`}\n className={cn(\"relative flex min-w-0 items-start gap-1.5 pl-2 pr-2 font-sans text-[11px] text-muted-foreground\", first && \"border-t border-border/60\")}\n >\n <span\n aria-hidden\n className={cn(\"absolute inset-y-0 left-0 w-[3px]\", uncommitted ? \"bg-amber-500\" : \"bg-sky-500\")}\n style={{ opacity: uncommitted ? 1 : 0.15 + 0.85 * recency }}\n />\n {first &&\n (uncommitted ? (\n <span className=\"italic\">Uncommitted</span>\n ) : (\n <>\n <span className=\"shrink-0 font-mono text-foreground/70\">{commit.sha.slice(0, 7)}</span>\n <span className=\"min-w-0 flex-1 truncate\">{commit.author}</span>\n <span className=\"shrink-0 tabular-nums\">{blameAge(commit.date)}</span>\n </>\n ))}\n </span>\n );\n}\n\n/**\n * The source with line numbers, syntax colours when `tokens` are given, and a\n * blame column when `blame` is; a line with findings carries its worst\n * severity's rail icon, squiggle and messages. Picking a message selects its\n * finding. With `showFindings` off only the selected line lists its messages,\n * and the rail icon picks a line, the way a comment highlight opens its thread.\n * People's comments highlight their quote and list under the line that ends\n * it; picking one opens its thread there.\n */\nexport function SourceView({\n source,\n tokens,\n blame,\n findings,\n showFindings,\n marks,\n comments,\n selected,\n onSelect,\n onFocus,\n getFindingActions,\n}: {\n source: string;\n tokens: readonly HighlightedLine[] | null;\n blame: ReadonlyMap<number, BlameLine> | null;\n findings: readonly FileFinding[];\n showFindings: boolean;\n marks: readonly SourceMark[];\n comments: Comment[];\n selected: string | null;\n onSelect: (finding: FileFinding) => void;\n onFocus: (anchor: string | null) => void;\n getFindingActions?: ((finding: FileFinding) => DropdownMenuItem[]) | undefined;\n}) {\n return (\n <ol className=\"py-2 font-mono text-xs leading-5\">\n {source.split(\"\\n\").map((text, i) => {\n const line = i + 1;\n const here = findings.filter((f) => f.line === line).sort(bySeverityThenLine);\n const worst = here[0] ? SEVERITY_MARK[severityOf(here[0].severity)] : null;\n const threads = marks.filter((m) => m.spans.at(-1)?.line === line);\n const listed = showFindings || selected === lineAnchor(line) ? here : [];\n return (\n <li\n key={line}\n data-source-line={line}\n className={cn(\"grid pr-3\", blame ? \"grid-cols-[13rem_1.25rem_2.5rem_1fr]\" : \"grid-cols-[1.25rem_2.5rem_1fr]\")}\n >\n {blame && <BlameCell blame={blame.get(line)} />}\n {worst && !showFindings ? (\n <button\n type=\"button\"\n data-source-mark={line}\n aria-label={`${here.length} ${here.length === 1 ? \"finding\" : \"findings\"} on line ${line}`}\n aria-pressed={selected === lineAnchor(line)}\n onClick={() => (selected === lineAnchor(line) ? onFocus(null) : onSelect(here[0]!))}\n className={cn(\"flex h-5 items-center justify-center rounded-sm hover:bg-muted\", worst.tone)}\n >\n <Icon icon={worst.icon} className=\"text-[13px]\" />\n </button>\n ) : (\n <span className={cn(\"flex h-5 items-center justify-center\", worst?.tone)}>{worst && <Icon icon={worst.icon} className=\"text-[13px]\" />}</span>\n )}\n <span className=\"select-none pr-3 text-right text-muted-foreground tabular-nums\">{line}</span>\n <span className=\"min-w-0 whitespace-pre-wrap break-words\">\n <span data-source-text={line} style={worst ? squiggleUnder(worst.stroke) : undefined}>\n {text\n ? lineSegments(text, line, marks, tokens?.[i]).map((seg) => {\n const style = seg.token ? tokenStyle(seg.token) : undefined;\n return seg.anchors.length === 0 ? (\n <span key={seg.start} style={style}>\n {seg.text}\n </span>\n ) : (\n <mark\n key={seg.start}\n data-source-comment={JSON.stringify(seg.anchors)}\n onClick={() => window.getSelection()?.isCollapsed && onFocus(seg.anchors[0]!)}\n style={style}\n className={cn(\n \"cursor-pointer rounded-sm text-inherit\",\n seg.anchors.includes(selected ?? \"\")\n ? \"bg-amber-300 [[data-theme=dark]_&]:bg-amber-400/50\"\n : \"bg-amber-200/60 [[data-theme=dark]_&]:bg-amber-400/25\",\n )}\n >\n {seg.text}\n </mark>\n );\n })\n : \" \"}\n </span>\n {threads.map(({ anchor }) => {\n const thread = selectAnchorThreads(comments, anchor);\n const root = getRoots(thread)[0];\n if (!root) return null;\n return (\n <button\n key={anchor}\n type=\"button\"\n data-source-thread={anchor}\n onClick={() => onFocus(anchor)}\n className=\"flex w-full items-center gap-1.5 text-left font-sans text-[11px] text-amber-600 hover:underline [[data-theme=dark]_&]:text-amber-400\"\n >\n <CommentAuthorAvatar author={root.author ?? null} size=\"xs\" bare />\n <span className=\"shrink-0 font-medium text-foreground\">{root.author?.name}</span>\n <span className=\"truncate text-muted-foreground\">{root.body}</span>\n {thread.length > 1 && <span className=\"shrink-0 text-muted-foreground\">· {thread.length - 1} {thread.length === 2 ? \"reply\" : \"replies\"}</span>}\n </button>\n );\n })}\n {listed.map((f) => (\n <span key={`${f.rule}:${f.message}`} data-source-finding={f.line} className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n aria-pressed={selected === lineAnchor(f.line)}\n onClick={() => onSelect(f)}\n className={cn(\n \"flex min-w-0 flex-1 items-center gap-1.5 text-left font-sans text-[11px] hover:underline aria-pressed:font-semibold aria-pressed:underline\",\n SEVERITY_MARK[severityOf(f.severity)].tone,\n )}\n >\n <Icon icon={SEVERITY_MARK[severityOf(f.severity)].icon} />\n <span className=\"text-foreground\">{f.message}</span>\n <span className=\"text-muted-foreground\">{f.source} {f.rule}</span>\n </button>\n {getFindingActions && <ProblemActions items={getFindingActions(f)} />}\n </span>\n ))}\n </span>\n </li>\n );\n })}\n </ol>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ // src/file-findings/file-review/blame.ts
2
+ /** git blames lines not yet committed on an all-zero sha. */
3
+ var isUncommitted = (commit) => /^0+$/.test(commit.sha);
4
+ /** Each line's blame; throws when a range falls outside the source, since the blame then belongs to another revision. */
5
+ function blameLines(ranges, lineCount) {
6
+ const times = ranges.map((range) => Date.parse(range.commit.date));
7
+ const oldest = Math.min(...times);
8
+ const span = Math.max(...times) - oldest;
9
+ const lines = /* @__PURE__ */ new Map();
10
+ ranges.forEach((range, i) => {
11
+ const last = range.startLine + range.lineCount - 1;
12
+ if (range.startLine < 1 || range.lineCount < 1 || last > lineCount) throw new Error(`blame covers lines ${range.startLine}-${last} but the source has ${lineCount} lines`);
13
+ const recency = span > 0 ? (times[i] - oldest) / span : 1;
14
+ for (let line = range.startLine; line <= last; line++) lines.set(line, {
15
+ commit: range.commit,
16
+ first: line === range.startLine,
17
+ recency
18
+ });
19
+ });
20
+ return lines;
21
+ }
22
+ var DAY_MS = 864e5;
23
+ /** A commit's age at a glance: "today", "5d", "3mo", "2y". */
24
+ function blameAge(iso, now = /* @__PURE__ */ new Date()) {
25
+ const days = Math.floor((now.getTime() - Date.parse(iso)) / DAY_MS);
26
+ if (days < 1) return "today";
27
+ if (days < 30) return `${days}d`;
28
+ if (days < 365) return `${Math.floor(days / 30)}mo`;
29
+ return `${Math.floor(days / 365)}y`;
30
+ }
31
+ exports.blameAge = blameAge;
32
+ exports.blameLines = blameLines;
33
+ exports.isUncommitted = isUncommitted;
34
+
35
+ //# sourceMappingURL=blame.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blame.cjs","names":[],"sources":["../../../src/file-findings/file-review/blame.ts"],"sourcesContent":["/** The commit that last changed a run of lines, as `git blame` reports it. */\nexport type BlameCommit = {\n sha: string;\n author: string;\n /** ISO 8601 author date. */\n date: string;\n /** First line of the commit message. */\n summary: string;\n};\n\n/** Consecutive lines (1-based `startLine`) last changed by one commit. */\nexport type BlameRange = { startLine: number; lineCount: number; commit: BlameCommit };\n\n/** A line's blame: its range's commit, whether it opens the range, and its age from 0 (oldest in the file) to 1 (newest). */\nexport type BlameLine = { commit: BlameCommit; first: boolean; recency: number };\n\n/** git blames lines not yet committed on an all-zero sha. */\nexport const isUncommitted = (commit: BlameCommit) => /^0+$/.test(commit.sha);\n\n/** Each line's blame; throws when a range falls outside the source, since the blame then belongs to another revision. */\nexport function blameLines(ranges: readonly BlameRange[], lineCount: number): Map<number, BlameLine> {\n const times = ranges.map((range) => Date.parse(range.commit.date));\n const oldest = Math.min(...times);\n const span = Math.max(...times) - oldest;\n const lines = new Map<number, BlameLine>();\n ranges.forEach((range, i) => {\n const last = range.startLine + range.lineCount - 1;\n if (range.startLine < 1 || range.lineCount < 1 || last > lineCount) {\n throw new Error(`blame covers lines ${range.startLine}-${last} but the source has ${lineCount} lines`);\n }\n const recency = span > 0 ? (times[i]! - oldest) / span : 1;\n for (let line = range.startLine; line <= last; line++) {\n lines.set(line, { commit: range.commit, first: line === range.startLine, recency });\n }\n });\n return lines;\n}\n\nconst DAY_MS = 86_400_000;\n\n/** A commit's age at a glance: \"today\", \"5d\", \"3mo\", \"2y\". */\nexport function blameAge(iso: string, now: Date = new Date()): string {\n const days = Math.floor((now.getTime() - Date.parse(iso)) / DAY_MS);\n if (days < 1) return \"today\";\n if (days < 30) return `${days}d`;\n if (days < 365) return `${Math.floor(days / 30)}mo`;\n return `${Math.floor(days / 365)}y`;\n}\n"],"mappings":";;AAiBA,IAAa,iBAAiB,WAAwB,OAAO,KAAK,OAAO,GAAG;;AAG5E,SAAgB,WAAW,QAA+B,WAA2C;CACnG,MAAM,QAAQ,OAAO,KAAK,UAAU,KAAK,MAAM,MAAM,OAAO,IAAI,CAAC;CACjE,MAAM,SAAS,KAAK,IAAI,GAAG,KAAK;CAChC,MAAM,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI;CAClC,MAAM,wBAAQ,IAAI,IAAuB;CACzC,OAAO,SAAS,OAAO,MAAM;EAC3B,MAAM,OAAO,MAAM,YAAY,MAAM,YAAY;EACjD,IAAI,MAAM,YAAY,KAAK,MAAM,YAAY,KAAK,OAAO,WACvD,MAAM,IAAI,MAAM,sBAAsB,MAAM,UAAU,GAAG,KAAK,sBAAsB,UAAU,OAAO;EAEvG,MAAM,UAAU,OAAO,KAAK,MAAM,KAAM,UAAU,OAAO;EACzD,KAAK,IAAI,OAAO,MAAM,WAAW,QAAQ,MAAM,QAC7C,MAAM,IAAI,MAAM;GAAE,QAAQ,MAAM;GAAQ,OAAO,SAAS,MAAM;GAAW;EAAQ,CAAC;CAEtF,CAAC;CACD,OAAO;AACT;AAEA,IAAM,SAAS;;AAGf,SAAgB,SAAS,KAAa,sBAAY,IAAI,KAAK,GAAW;CACpE,MAAM,OAAO,KAAK,OAAO,IAAI,QAAQ,IAAI,KAAK,MAAM,GAAG,KAAK,MAAM;CAClE,IAAI,OAAO,GAAG,OAAO;CACrB,IAAI,OAAO,IAAI,OAAO,GAAG,KAAK;CAC9B,IAAI,OAAO,KAAK,OAAO,GAAG,KAAK,MAAM,OAAO,EAAE,EAAE;CAChD,OAAO,GAAG,KAAK,MAAM,OAAO,GAAG,EAAE;AACnC"}
@@ -0,0 +1,28 @@
1
+ /** The commit that last changed a run of lines, as `git blame` reports it. */
2
+ export type BlameCommit = {
3
+ sha: string;
4
+ author: string;
5
+ /** ISO 8601 author date. */
6
+ date: string;
7
+ /** First line of the commit message. */
8
+ summary: string;
9
+ };
10
+ /** Consecutive lines (1-based `startLine`) last changed by one commit. */
11
+ export type BlameRange = {
12
+ startLine: number;
13
+ lineCount: number;
14
+ commit: BlameCommit;
15
+ };
16
+ /** A line's blame: its range's commit, whether it opens the range, and its age from 0 (oldest in the file) to 1 (newest). */
17
+ export type BlameLine = {
18
+ commit: BlameCommit;
19
+ first: boolean;
20
+ recency: number;
21
+ };
22
+ /** git blames lines not yet committed on an all-zero sha. */
23
+ export declare const isUncommitted: (commit: BlameCommit) => boolean;
24
+ /** Each line's blame; throws when a range falls outside the source, since the blame then belongs to another revision. */
25
+ export declare function blameLines(ranges: readonly BlameRange[], lineCount: number): Map<number, BlameLine>;
26
+ /** A commit's age at a glance: "today", "5d", "3mo", "2y". */
27
+ export declare function blameAge(iso: string, now?: Date): string;
28
+ //# sourceMappingURL=blame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blame.d.ts","sourceRoot":"","sources":["../../../src/file-findings/file-review/blame.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,0EAA0E;AAC1E,MAAM,MAAM,UAAU,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC;AAEvF,6HAA6H;AAC7H,MAAM,MAAM,SAAS,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjF,6DAA6D;AAC7D,eAAO,MAAM,aAAa,GAAI,QAAQ,WAAW,YAA4B,CAAC;AAE9E,yHAAyH;AACzH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAgBnG;AAID,8DAA8D;AAC9D,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CAMpE"}
@@ -0,0 +1,33 @@
1
+ // src/file-findings/file-review/blame.ts
2
+ /** git blames lines not yet committed on an all-zero sha. */
3
+ var isUncommitted = (commit) => /^0+$/.test(commit.sha);
4
+ /** Each line's blame; throws when a range falls outside the source, since the blame then belongs to another revision. */
5
+ function blameLines(ranges, lineCount) {
6
+ const times = ranges.map((range) => Date.parse(range.commit.date));
7
+ const oldest = Math.min(...times);
8
+ const span = Math.max(...times) - oldest;
9
+ const lines = /* @__PURE__ */ new Map();
10
+ ranges.forEach((range, i) => {
11
+ const last = range.startLine + range.lineCount - 1;
12
+ if (range.startLine < 1 || range.lineCount < 1 || last > lineCount) throw new Error(`blame covers lines ${range.startLine}-${last} but the source has ${lineCount} lines`);
13
+ const recency = span > 0 ? (times[i] - oldest) / span : 1;
14
+ for (let line = range.startLine; line <= last; line++) lines.set(line, {
15
+ commit: range.commit,
16
+ first: line === range.startLine,
17
+ recency
18
+ });
19
+ });
20
+ return lines;
21
+ }
22
+ var DAY_MS = 864e5;
23
+ /** A commit's age at a glance: "today", "5d", "3mo", "2y". */
24
+ function blameAge(iso, now = /* @__PURE__ */ new Date()) {
25
+ const days = Math.floor((now.getTime() - Date.parse(iso)) / DAY_MS);
26
+ if (days < 1) return "today";
27
+ if (days < 30) return `${days}d`;
28
+ if (days < 365) return `${Math.floor(days / 30)}mo`;
29
+ return `${Math.floor(days / 365)}y`;
30
+ }
31
+ export { blameAge, blameLines, isUncommitted };
32
+
33
+ //# sourceMappingURL=blame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blame.js","names":[],"sources":["../../../src/file-findings/file-review/blame.ts"],"sourcesContent":["/** The commit that last changed a run of lines, as `git blame` reports it. */\nexport type BlameCommit = {\n sha: string;\n author: string;\n /** ISO 8601 author date. */\n date: string;\n /** First line of the commit message. */\n summary: string;\n};\n\n/** Consecutive lines (1-based `startLine`) last changed by one commit. */\nexport type BlameRange = { startLine: number; lineCount: number; commit: BlameCommit };\n\n/** A line's blame: its range's commit, whether it opens the range, and its age from 0 (oldest in the file) to 1 (newest). */\nexport type BlameLine = { commit: BlameCommit; first: boolean; recency: number };\n\n/** git blames lines not yet committed on an all-zero sha. */\nexport const isUncommitted = (commit: BlameCommit) => /^0+$/.test(commit.sha);\n\n/** Each line's blame; throws when a range falls outside the source, since the blame then belongs to another revision. */\nexport function blameLines(ranges: readonly BlameRange[], lineCount: number): Map<number, BlameLine> {\n const times = ranges.map((range) => Date.parse(range.commit.date));\n const oldest = Math.min(...times);\n const span = Math.max(...times) - oldest;\n const lines = new Map<number, BlameLine>();\n ranges.forEach((range, i) => {\n const last = range.startLine + range.lineCount - 1;\n if (range.startLine < 1 || range.lineCount < 1 || last > lineCount) {\n throw new Error(`blame covers lines ${range.startLine}-${last} but the source has ${lineCount} lines`);\n }\n const recency = span > 0 ? (times[i]! - oldest) / span : 1;\n for (let line = range.startLine; line <= last; line++) {\n lines.set(line, { commit: range.commit, first: line === range.startLine, recency });\n }\n });\n return lines;\n}\n\nconst DAY_MS = 86_400_000;\n\n/** A commit's age at a glance: \"today\", \"5d\", \"3mo\", \"2y\". */\nexport function blameAge(iso: string, now: Date = new Date()): string {\n const days = Math.floor((now.getTime() - Date.parse(iso)) / DAY_MS);\n if (days < 1) return \"today\";\n if (days < 30) return `${days}d`;\n if (days < 365) return `${Math.floor(days / 30)}mo`;\n return `${Math.floor(days / 365)}y`;\n}\n"],"mappings":";;AAiBA,IAAa,iBAAiB,WAAwB,OAAO,KAAK,OAAO,GAAG;;AAG5E,SAAgB,WAAW,QAA+B,WAA2C;CACnG,MAAM,QAAQ,OAAO,KAAK,UAAU,KAAK,MAAM,MAAM,OAAO,IAAI,CAAC;CACjE,MAAM,SAAS,KAAK,IAAI,GAAG,KAAK;CAChC,MAAM,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI;CAClC,MAAM,wBAAQ,IAAI,IAAuB;CACzC,OAAO,SAAS,OAAO,MAAM;EAC3B,MAAM,OAAO,MAAM,YAAY,MAAM,YAAY;EACjD,IAAI,MAAM,YAAY,KAAK,MAAM,YAAY,KAAK,OAAO,WACvD,MAAM,IAAI,MAAM,sBAAsB,MAAM,UAAU,GAAG,KAAK,sBAAsB,UAAU,OAAO;EAEvG,MAAM,UAAU,OAAO,KAAK,MAAM,KAAM,UAAU,OAAO;EACzD,KAAK,IAAI,OAAO,MAAM,WAAW,QAAQ,MAAM,QAC7C,MAAM,IAAI,MAAM;GAAE,QAAQ,MAAM;GAAQ,OAAO,SAAS,MAAM;GAAW;EAAQ,CAAC;CAEtF,CAAC;CACD,OAAO;AACT;AAEA,IAAM,SAAS;;AAGf,SAAgB,SAAS,KAAa,sBAAY,IAAI,KAAK,GAAW;CACpE,MAAM,OAAO,KAAK,OAAO,IAAI,QAAQ,IAAI,KAAK,MAAM,GAAG,KAAK,MAAM;CAClE,IAAI,OAAO,GAAG,OAAO;CACrB,IAAI,OAAO,IAAI,OAAO,GAAG,KAAK;CAC9B,IAAI,OAAO,KAAK,OAAO,GAAG,KAAK,MAAM,OAAO,EAAE,EAAE;CAChD,OAAO,GAAG,KAAK,MAAM,OAAO,GAAG,EAAE;AACnC"}
@@ -0,0 +1,101 @@
1
+ const require_findings_comments = require("../findings-comments.cjs");
2
+ const require_quote_anchor = require("./quote-anchor.cjs");
3
+ // src/file-findings/file-review/geometry.ts
4
+ var SOURCE_BLOCK = "[data-source-start]";
5
+ /** The rendered source block holding `node`, if any. */
6
+ function sourceBlockOf(node) {
7
+ return (node instanceof Element ? node : node?.parentElement ?? null)?.closest(SOURCE_BLOCK) ?? null;
8
+ }
9
+ /**
10
+ * Boxes for each anchor, relative to `origin`. A `q:` anchor finds its quote in
11
+ * `markdown` through its section and context words; a `line:N` anchor resolves to its block like a line finding's
12
+ * does. An anchor that no longer finds its target is left out. Entries come
13
+ * in document order.
14
+ */
15
+ function measureAnchors({ origin, markdown, anchors, mode }) {
16
+ const base = origin.getBoundingClientRect();
17
+ const rel = (rect) => ({
18
+ top: rect.top - base.top,
19
+ left: rect.left - base.left,
20
+ width: rect.width,
21
+ height: rect.height
22
+ });
23
+ const blocks = /* @__PURE__ */ new Map();
24
+ for (const el of markdown.querySelectorAll(SOURCE_BLOCK)) {
25
+ const key = require_findings_comments.blockAnchor(Number(el.dataset.sourceStart), Number(el.dataset.sourceEnd));
26
+ if (!blocks.has(key)) blocks.set(key, el);
27
+ }
28
+ const found = [];
29
+ for (const anchor of anchors) {
30
+ if (anchor.startsWith("q:")) {
31
+ const range = require_quote_anchor.resolveQuote(markdown, require_quote_anchor.parseQuoteAnchor(anchor));
32
+ if (!range) continue;
33
+ const text = [...range.getClientRects()].filter((rect) => rect.width > 0).map(rel);
34
+ const block = sourceBlockOf(range.startContainer);
35
+ const boxes = mode === "text" ? text : block ? [rel(block.getBoundingClientRect())] : [];
36
+ if (boxes.length > 0) found.push({
37
+ anchor,
38
+ boxes,
39
+ at: text[0]?.top ?? boxes[0].top
40
+ });
41
+ continue;
42
+ }
43
+ const key = require_findings_comments.lineRangeAnchorResolver(anchor, [...blocks.keys()]);
44
+ const block = key ? blocks.get(key) : void 0;
45
+ if (block) {
46
+ const range = document.createRange();
47
+ range.selectNodeContents(block);
48
+ const lines = textLines([...range.getClientRects()].filter((rect) => rect.width > 0).map(rel));
49
+ const boxes = lines.length > 0 ? lines : [rel(block.getBoundingClientRect())];
50
+ found.push({
51
+ anchor,
52
+ boxes,
53
+ at: boxes[0].top
54
+ });
55
+ }
56
+ }
57
+ return new Map(found.sort((a, b) => a.at - b.at).map(({ anchor, boxes }) => [anchor, boxes]));
58
+ }
59
+ /**
60
+ * One box per visual line: text rects that overlap vertically merge into their
61
+ * horizontal union, so a finding's squiggle runs under each rendered line.
62
+ */
63
+ function textLines(rects) {
64
+ const lines = [];
65
+ for (const rect of [...rects].sort((a, b) => a.top - b.top || a.left - b.left)) {
66
+ const line = lines.find((l) => rect.top < l.top + l.height && rect.top + rect.height > l.top);
67
+ if (!line) {
68
+ lines.push({ ...rect });
69
+ continue;
70
+ }
71
+ const right = Math.max(line.left + line.width, rect.left + rect.width);
72
+ const bottom = Math.max(line.top + line.height, rect.top + rect.height);
73
+ line.left = Math.min(line.left, rect.left);
74
+ line.top = Math.min(line.top, rect.top);
75
+ line.width = right - line.left;
76
+ line.height = bottom - line.top;
77
+ }
78
+ return lines;
79
+ }
80
+ /**
81
+ * Margin layout in the style of Google Docs: each card wants the top of its
82
+ * anchor; the focused card gets exactly that, cards above it are pushed up and
83
+ * cards below it pushed down so none overlap.
84
+ */
85
+ function layoutCards({ cards, focused, gap = 8 }) {
86
+ const sorted = [...cards].sort((a, b) => a.desired - b.desired || a.order - b.order);
87
+ const tops = sorted.map((card) => card.desired);
88
+ const pivot = sorted.findIndex((card) => card.anchor === focused);
89
+ if (pivot >= 0) for (let i = pivot - 1; i >= 0; i--) tops[i] = Math.min(tops[i], tops[i + 1] - gap - sorted[i].height);
90
+ for (let i = 0; i < sorted.length; i++) {
91
+ const floor = i === 0 ? 0 : tops[i - 1] + sorted[i - 1].height + gap;
92
+ tops[i] = Math.max(tops[i], floor);
93
+ }
94
+ return new Map(sorted.map((card, i) => [card.anchor, tops[i]]));
95
+ }
96
+ exports.layoutCards = layoutCards;
97
+ exports.measureAnchors = measureAnchors;
98
+ exports.sourceBlockOf = sourceBlockOf;
99
+ exports.textLines = textLines;
100
+
101
+ //# sourceMappingURL=geometry.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry.cjs","names":["blockAnchor","resolveQuote","parseQuoteAnchor","lineRangeAnchorResolver"],"sources":["../../../src/file-findings/file-review/geometry.ts"],"sourcesContent":["import { blockAnchor, lineRangeAnchorResolver } from \"../findings-comments\";\n\nimport { QUOTE_PREFIX, parseQuoteAnchor, resolveQuote } from \"./quote-anchor\";\n\n/** A rectangle relative to the annotated document's top-left corner. */\nexport type Box = { top: number; left: number; width: number; height: number };\n\n/** How a quote anchor is drawn: its exact text, or the whole block holding it. */\nexport type AnchorMode = \"text\" | \"block\";\n\nconst SOURCE_BLOCK = \"[data-source-start]\";\n\n/** The rendered source block holding `node`, if any. */\nexport function sourceBlockOf(node: Node | null): Element | null {\n const element = node instanceof Element ? node : (node?.parentElement ?? null);\n return element?.closest(SOURCE_BLOCK) ?? null;\n}\n\n/**\n * Boxes for each anchor, relative to `origin`. A `q:` anchor finds its quote in\n * `markdown` through its section and context words; a `line:N` anchor resolves to its block like a line finding's\n * does. An anchor that no longer finds its target is left out. Entries come\n * in document order.\n */\nexport function measureAnchors({\n origin,\n markdown,\n anchors,\n mode,\n}: {\n origin: Element;\n markdown: Element;\n anchors: readonly string[];\n mode: AnchorMode;\n}): Map<string, Box[]> {\n const base = origin.getBoundingClientRect();\n const rel = (rect: DOMRect): Box => ({\n top: rect.top - base.top,\n left: rect.left - base.left,\n width: rect.width,\n height: rect.height,\n });\n const blocks = new Map<string, Element>();\n for (const el of markdown.querySelectorAll<HTMLElement>(SOURCE_BLOCK)) {\n const key = blockAnchor(Number(el.dataset.sourceStart), Number(el.dataset.sourceEnd));\n if (!blocks.has(key)) blocks.set(key, el);\n }\n\n // `at` is where the anchored text itself starts, so anchors sharing a block keep document order.\n const found: { anchor: string; boxes: Box[]; at: number }[] = [];\n for (const anchor of anchors) {\n if (anchor.startsWith(QUOTE_PREFIX)) {\n const range = resolveQuote(markdown, parseQuoteAnchor(anchor));\n if (!range) continue;\n const text = [...range.getClientRects()].filter((rect) => rect.width > 0).map(rel);\n const block = sourceBlockOf(range.startContainer);\n const boxes = mode === \"text\" ? text : block ? [rel(block.getBoundingClientRect())] : [];\n if (boxes.length > 0) found.push({ anchor, boxes, at: text[0]?.top ?? boxes[0]!.top });\n continue;\n }\n const key = lineRangeAnchorResolver(anchor, [...blocks.keys()]);\n const block = key ? blocks.get(key) : undefined;\n if (block) {\n const range = document.createRange();\n range.selectNodeContents(block);\n const lines = textLines([...range.getClientRects()].filter((rect) => rect.width > 0).map(rel));\n const boxes = lines.length > 0 ? lines : [rel(block.getBoundingClientRect())];\n found.push({ anchor, boxes, at: boxes[0]!.top });\n }\n }\n return new Map(found.sort((a, b) => a.at - b.at).map(({ anchor, boxes }) => [anchor, boxes]));\n}\n\n/**\n * One box per visual line: text rects that overlap vertically merge into their\n * horizontal union, so a finding's squiggle runs under each rendered line.\n */\nexport function textLines(rects: readonly Box[]): Box[] {\n const lines: Box[] = [];\n for (const rect of [...rects].sort((a, b) => a.top - b.top || a.left - b.left)) {\n const line = lines.find((l) => rect.top < l.top + l.height && rect.top + rect.height > l.top);\n if (!line) {\n lines.push({ ...rect });\n continue;\n }\n const right = Math.max(line.left + line.width, rect.left + rect.width);\n const bottom = Math.max(line.top + line.height, rect.top + rect.height);\n line.left = Math.min(line.left, rect.left);\n line.top = Math.min(line.top, rect.top);\n line.width = right - line.left;\n line.height = bottom - line.top;\n }\n return lines;\n}\n\n/**\n * Margin layout in the style of Google Docs: each card wants the top of its\n * anchor; the focused card gets exactly that, cards above it are pushed up and\n * cards below it pushed down so none overlap.\n */\nexport function layoutCards({\n cards,\n focused,\n gap = 8,\n}: {\n /** `order` breaks ties between cards that want the same top, e.g. two quotes in one block. */\n cards: readonly { anchor: string; desired: number; order: number; height: number }[];\n focused: string | null;\n gap?: number;\n}): Map<string, number> {\n const sorted = [...cards].sort((a, b) => a.desired - b.desired || a.order - b.order);\n const tops = sorted.map((card) => card.desired);\n const pivot = sorted.findIndex((card) => card.anchor === focused);\n if (pivot >= 0) {\n for (let i = pivot - 1; i >= 0; i--) {\n tops[i] = Math.min(tops[i]!, tops[i + 1]! - gap - sorted[i]!.height);\n }\n }\n // Cards pushed above the top, and everything below the pivot, flow downward.\n for (let i = 0; i < sorted.length; i++) {\n const floor = i === 0 ? 0 : tops[i - 1]! + sorted[i - 1]!.height + gap;\n tops[i] = Math.max(tops[i]!, floor);\n }\n return new Map(sorted.map((card, i) => [card.anchor, tops[i]!]));\n}\n"],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /** A rectangle relative to the annotated document's top-left corner. */
2
+ export type Box = {
3
+ top: number;
4
+ left: number;
5
+ width: number;
6
+ height: number;
7
+ };
8
+ /** How a quote anchor is drawn: its exact text, or the whole block holding it. */
9
+ export type AnchorMode = "text" | "block";
10
+ /** The rendered source block holding `node`, if any. */
11
+ export declare function sourceBlockOf(node: Node | null): Element | null;
12
+ /**
13
+ * Boxes for each anchor, relative to `origin`. A `q:` anchor finds its quote in
14
+ * `markdown` through its section and context words; a `line:N` anchor resolves to its block like a line finding's
15
+ * does. An anchor that no longer finds its target is left out. Entries come
16
+ * in document order.
17
+ */
18
+ export declare function measureAnchors({ origin, markdown, anchors, mode, }: {
19
+ origin: Element;
20
+ markdown: Element;
21
+ anchors: readonly string[];
22
+ mode: AnchorMode;
23
+ }): Map<string, Box[]>;
24
+ /**
25
+ * One box per visual line: text rects that overlap vertically merge into their
26
+ * horizontal union, so a finding's squiggle runs under each rendered line.
27
+ */
28
+ export declare function textLines(rects: readonly Box[]): Box[];
29
+ /**
30
+ * Margin layout in the style of Google Docs: each card wants the top of its
31
+ * anchor; the focused card gets exactly that, cards above it are pushed up and
32
+ * cards below it pushed down so none overlap.
33
+ */
34
+ export declare function layoutCards({ cards, focused, gap, }: {
35
+ /** `order` breaks ties between cards that want the same top, e.g. two quotes in one block. */
36
+ cards: readonly {
37
+ anchor: string;
38
+ desired: number;
39
+ order: number;
40
+ height: number;
41
+ }[];
42
+ focused: string | null;
43
+ gap?: number;
44
+ }): Map<string, number>;
45
+ //# sourceMappingURL=geometry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../../src/file-findings/file-review/geometry.ts"],"names":[],"mappings":"AAIA,wEAAwE;AACxE,MAAM,MAAM,GAAG,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/E,kFAAkF;AAClF,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AAI1C,wDAAwD;AACxD,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,CAG/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,QAAQ,EACR,OAAO,EACP,IAAI,GACL,EAAE;IACD,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,IAAI,EAAE,UAAU,CAAC;CAClB,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAqCrB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,CAgBtD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,OAAO,EACP,GAAO,GACR,EAAE;IACD,8FAA8F;IAC9F,KAAK,EAAE,SAAS;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAetB"}
@@ -0,0 +1,98 @@
1
+ import { blockAnchor, lineRangeAnchorResolver } from "../findings-comments.js";
2
+ import { parseQuoteAnchor, resolveQuote } from "./quote-anchor.js";
3
+ // src/file-findings/file-review/geometry.ts
4
+ var SOURCE_BLOCK = "[data-source-start]";
5
+ /** The rendered source block holding `node`, if any. */
6
+ function sourceBlockOf(node) {
7
+ return (node instanceof Element ? node : node?.parentElement ?? null)?.closest(SOURCE_BLOCK) ?? null;
8
+ }
9
+ /**
10
+ * Boxes for each anchor, relative to `origin`. A `q:` anchor finds its quote in
11
+ * `markdown` through its section and context words; a `line:N` anchor resolves to its block like a line finding's
12
+ * does. An anchor that no longer finds its target is left out. Entries come
13
+ * in document order.
14
+ */
15
+ function measureAnchors({ origin, markdown, anchors, mode }) {
16
+ const base = origin.getBoundingClientRect();
17
+ const rel = (rect) => ({
18
+ top: rect.top - base.top,
19
+ left: rect.left - base.left,
20
+ width: rect.width,
21
+ height: rect.height
22
+ });
23
+ const blocks = /* @__PURE__ */ new Map();
24
+ for (const el of markdown.querySelectorAll(SOURCE_BLOCK)) {
25
+ const key = blockAnchor(Number(el.dataset.sourceStart), Number(el.dataset.sourceEnd));
26
+ if (!blocks.has(key)) blocks.set(key, el);
27
+ }
28
+ const found = [];
29
+ for (const anchor of anchors) {
30
+ if (anchor.startsWith("q:")) {
31
+ const range = resolveQuote(markdown, parseQuoteAnchor(anchor));
32
+ if (!range) continue;
33
+ const text = [...range.getClientRects()].filter((rect) => rect.width > 0).map(rel);
34
+ const block = sourceBlockOf(range.startContainer);
35
+ const boxes = mode === "text" ? text : block ? [rel(block.getBoundingClientRect())] : [];
36
+ if (boxes.length > 0) found.push({
37
+ anchor,
38
+ boxes,
39
+ at: text[0]?.top ?? boxes[0].top
40
+ });
41
+ continue;
42
+ }
43
+ const key = lineRangeAnchorResolver(anchor, [...blocks.keys()]);
44
+ const block = key ? blocks.get(key) : void 0;
45
+ if (block) {
46
+ const range = document.createRange();
47
+ range.selectNodeContents(block);
48
+ const lines = textLines([...range.getClientRects()].filter((rect) => rect.width > 0).map(rel));
49
+ const boxes = lines.length > 0 ? lines : [rel(block.getBoundingClientRect())];
50
+ found.push({
51
+ anchor,
52
+ boxes,
53
+ at: boxes[0].top
54
+ });
55
+ }
56
+ }
57
+ return new Map(found.sort((a, b) => a.at - b.at).map(({ anchor, boxes }) => [anchor, boxes]));
58
+ }
59
+ /**
60
+ * One box per visual line: text rects that overlap vertically merge into their
61
+ * horizontal union, so a finding's squiggle runs under each rendered line.
62
+ */
63
+ function textLines(rects) {
64
+ const lines = [];
65
+ for (const rect of [...rects].sort((a, b) => a.top - b.top || a.left - b.left)) {
66
+ const line = lines.find((l) => rect.top < l.top + l.height && rect.top + rect.height > l.top);
67
+ if (!line) {
68
+ lines.push({ ...rect });
69
+ continue;
70
+ }
71
+ const right = Math.max(line.left + line.width, rect.left + rect.width);
72
+ const bottom = Math.max(line.top + line.height, rect.top + rect.height);
73
+ line.left = Math.min(line.left, rect.left);
74
+ line.top = Math.min(line.top, rect.top);
75
+ line.width = right - line.left;
76
+ line.height = bottom - line.top;
77
+ }
78
+ return lines;
79
+ }
80
+ /**
81
+ * Margin layout in the style of Google Docs: each card wants the top of its
82
+ * anchor; the focused card gets exactly that, cards above it are pushed up and
83
+ * cards below it pushed down so none overlap.
84
+ */
85
+ function layoutCards({ cards, focused, gap = 8 }) {
86
+ const sorted = [...cards].sort((a, b) => a.desired - b.desired || a.order - b.order);
87
+ const tops = sorted.map((card) => card.desired);
88
+ const pivot = sorted.findIndex((card) => card.anchor === focused);
89
+ if (pivot >= 0) for (let i = pivot - 1; i >= 0; i--) tops[i] = Math.min(tops[i], tops[i + 1] - gap - sorted[i].height);
90
+ for (let i = 0; i < sorted.length; i++) {
91
+ const floor = i === 0 ? 0 : tops[i - 1] + sorted[i - 1].height + gap;
92
+ tops[i] = Math.max(tops[i], floor);
93
+ }
94
+ return new Map(sorted.map((card, i) => [card.anchor, tops[i]]));
95
+ }
96
+ export { layoutCards, measureAnchors, sourceBlockOf, textLines };
97
+
98
+ //# sourceMappingURL=geometry.js.map