@flanksource/clicky-ui 0.3.27 → 0.3.29

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 (1438) hide show
  1. package/NOTICE.md +14 -0
  2. package/dist/ai.cjs +52 -6
  3. package/dist/ai.cjs.map +1 -1
  4. package/dist/ai.js +53 -7
  5. package/dist/ai.js.map +1 -1
  6. package/dist/comments/CommentAuthor.d.ts +1 -1
  7. package/dist/comments/CommentAuthor.d.ts.map +1 -1
  8. package/dist/comments/CommentCard.cjs +24 -39
  9. package/dist/comments/CommentCard.cjs.map +1 -1
  10. package/dist/comments/CommentCard.d.ts +11 -4
  11. package/dist/comments/CommentCard.d.ts.map +1 -1
  12. package/dist/comments/CommentCard.js +24 -39
  13. package/dist/comments/CommentCard.js.map +1 -1
  14. package/dist/comments/CommentComposer.d.ts +1 -1
  15. package/dist/comments/CommentComposer.d.ts.map +1 -1
  16. package/dist/comments/CommentFilterBar.d.ts +1 -1
  17. package/dist/comments/CommentFilterBar.d.ts.map +1 -1
  18. package/dist/comments/CommentMarkdown.d.ts +1 -1
  19. package/dist/comments/CommentMarkdown.d.ts.map +1 -1
  20. package/dist/comments/CommentProgress.d.ts +1 -1
  21. package/dist/comments/CommentProgress.d.ts.map +1 -1
  22. package/dist/comments/CommentProvider.cjs +4 -3
  23. package/dist/comments/CommentProvider.cjs.map +1 -1
  24. package/dist/comments/CommentProvider.d.ts +7 -2
  25. package/dist/comments/CommentProvider.d.ts.map +1 -1
  26. package/dist/comments/CommentProvider.js +4 -3
  27. package/dist/comments/CommentProvider.js.map +1 -1
  28. package/dist/comments/CommentSidePanel.cjs +65 -52
  29. package/dist/comments/CommentSidePanel.cjs.map +1 -1
  30. package/dist/comments/CommentSidePanel.d.ts +1 -1
  31. package/dist/comments/CommentSidePanel.d.ts.map +1 -1
  32. package/dist/comments/CommentSidePanel.js +67 -54
  33. package/dist/comments/CommentSidePanel.js.map +1 -1
  34. package/dist/comments/CommentThread.cjs +2 -2
  35. package/dist/comments/CommentThread.cjs.map +1 -1
  36. package/dist/comments/CommentThread.d.ts +4 -4
  37. package/dist/comments/CommentThread.d.ts.map +1 -1
  38. package/dist/comments/CommentThread.js +2 -2
  39. package/dist/comments/CommentThread.js.map +1 -1
  40. package/dist/comments/CommentThreadList.cjs +85 -37
  41. package/dist/comments/CommentThreadList.cjs.map +1 -1
  42. package/dist/comments/CommentThreadList.d.ts +4 -4
  43. package/dist/comments/CommentThreadList.d.ts.map +1 -1
  44. package/dist/comments/CommentThreadList.js +86 -38
  45. package/dist/comments/CommentThreadList.js.map +1 -1
  46. package/dist/comments/GroupedComments.d.ts +1 -1
  47. package/dist/comments/GroupedComments.d.ts.map +1 -1
  48. package/dist/comments/MentionTextarea.d.ts +1 -1
  49. package/dist/comments/comment-context.d.ts +4 -4
  50. package/dist/comments/comment-fixtures.d.ts +1 -1
  51. package/dist/comments/comment-types.d.ts +1 -1
  52. package/dist/comments/comment-utils.cjs +26 -0
  53. package/dist/comments/comment-utils.cjs.map +1 -1
  54. package/dist/comments/comment-utils.d.ts +11 -0
  55. package/dist/comments/comment-utils.d.ts.map +1 -1
  56. package/dist/comments/comment-utils.js +26 -0
  57. package/dist/comments/comment-utils.js.map +1 -1
  58. package/dist/comments.cjs +2 -0
  59. package/dist/comments.cjs.map +1 -1
  60. package/dist/comments.js +3 -1
  61. package/dist/components/AccordionList.cjs +3 -0
  62. package/dist/components/AccordionList.cjs.map +1 -1
  63. package/dist/components/AccordionList.d.ts +4 -2
  64. package/dist/components/AccordionList.d.ts.map +1 -1
  65. package/dist/components/AccordionList.js +3 -0
  66. package/dist/components/AccordionList.js.map +1 -1
  67. package/dist/components/Combobox.cjs +6 -6
  68. package/dist/components/Combobox.cjs.map +1 -1
  69. package/dist/components/Combobox.d.ts +1 -1
  70. package/dist/components/Combobox.d.ts.map +1 -1
  71. package/dist/components/Combobox.js +2 -2
  72. package/dist/components/Combobox.js.map +1 -1
  73. package/dist/components/ComboboxActions.d.ts +1 -1
  74. package/dist/components/ComboboxActions.d.ts.map +1 -1
  75. package/dist/components/ComboboxControl.cjs +3 -2
  76. package/dist/components/ComboboxControl.cjs.map +1 -1
  77. package/dist/components/ComboboxControl.d.ts +5 -5
  78. package/dist/components/ComboboxControl.d.ts.map +1 -1
  79. package/dist/components/ComboboxControl.js +2 -1
  80. package/dist/components/ComboboxControl.js.map +1 -1
  81. package/dist/components/ComboboxMenu.cjs +154 -134
  82. package/dist/components/ComboboxMenu.cjs.map +1 -1
  83. package/dist/components/ComboboxMenu.d.ts +4 -4
  84. package/dist/components/ComboboxMenu.d.ts.map +1 -1
  85. package/dist/components/ComboboxMenu.js +154 -134
  86. package/dist/components/ComboboxMenu.js.map +1 -1
  87. package/dist/components/ComboboxTags.d.ts +1 -1
  88. package/dist/components/ComboboxTags.d.ts.map +1 -1
  89. package/dist/components/ConnectionLoggingPolicy.d.ts +1 -1
  90. package/dist/components/ConnectionLoggingPolicy.d.ts.map +1 -1
  91. package/dist/components/CopyButton.cjs +35 -0
  92. package/dist/components/CopyButton.cjs.map +1 -0
  93. package/dist/components/CopyButton.d.ts +20 -0
  94. package/dist/components/CopyButton.d.ts.map +1 -0
  95. package/dist/components/CopyButton.js +35 -0
  96. package/dist/components/CopyButton.js.map +1 -0
  97. package/dist/components/CountryFlag.d.ts +1 -1
  98. package/dist/components/CountryFlag.d.ts.map +1 -1
  99. package/dist/components/CountryPicker.d.ts +1 -1
  100. package/dist/components/CountryPicker.d.ts.map +1 -1
  101. package/dist/components/DaemonSetIcon.d.ts +1 -1
  102. package/dist/components/DaemonSetIcon.d.ts.map +1 -1
  103. package/dist/components/DateField.d.ts +3 -3
  104. package/dist/components/DatePicker.d.ts +3 -3
  105. package/dist/components/DateTimePicker.d.ts +3 -3
  106. package/dist/components/DimensionField.d.ts +1 -1
  107. package/dist/components/DimensionField.d.ts.map +1 -1
  108. package/dist/components/EndpointSelector.d.ts +1 -1
  109. package/dist/components/EndpointSelector.d.ts.map +1 -1
  110. package/dist/components/ErrorWrapper.d.ts +2 -2
  111. package/dist/components/Field.d.ts +2 -2
  112. package/dist/components/Field.d.ts.map +1 -1
  113. package/dist/components/FilterBar.cjs +129 -91
  114. package/dist/components/FilterBar.cjs.map +1 -1
  115. package/dist/components/FilterBar.d.ts +13 -4
  116. package/dist/components/FilterBar.d.ts.map +1 -1
  117. package/dist/components/FilterBar.js +130 -92
  118. package/dist/components/FilterBar.js.map +1 -1
  119. package/dist/components/FormLookupProvider.d.ts +2 -2
  120. package/dist/components/FormLookupProvider.d.ts.map +1 -1
  121. package/dist/components/FormatOptionsDropdown.d.ts +2 -2
  122. package/dist/components/FormatOptionsDropdown.d.ts.map +1 -1
  123. package/dist/components/IconButton.d.ts +3 -3
  124. package/dist/components/InputField.d.ts +2 -2
  125. package/dist/components/ItemActions.d.ts +2 -2
  126. package/dist/components/ItemActions.d.ts.map +1 -1
  127. package/dist/components/JSONPathField.d.ts +1 -1
  128. package/dist/components/JSONPathField.d.ts.map +1 -1
  129. package/dist/components/JSONPathPlayground.d.ts +1 -1
  130. package/dist/components/JSONPathPlayground.d.ts.map +1 -1
  131. package/dist/components/JsonSchemaForm.d.ts +1 -1
  132. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  133. package/dist/components/ListMenu.cjs +4 -1
  134. package/dist/components/ListMenu.cjs.map +1 -1
  135. package/dist/components/ListMenu.d.ts +10 -6
  136. package/dist/components/ListMenu.d.ts.map +1 -1
  137. package/dist/components/ListMenu.js +4 -1
  138. package/dist/components/ListMenu.js.map +1 -1
  139. package/dist/components/MdxEditorCallout.d.ts +2 -2
  140. package/dist/components/MdxEditorCallout.d.ts.map +1 -1
  141. package/dist/components/MdxEditorField.d.ts +1 -1
  142. package/dist/components/MdxEditorField.d.ts.map +1 -1
  143. package/dist/components/MdxEditorToolbar.d.ts +1 -1
  144. package/dist/components/MdxEditorToolbar.d.ts.map +1 -1
  145. package/dist/components/MultiSelect.d.ts +2 -2
  146. package/dist/components/MultiSelect.d.ts.map +1 -1
  147. package/dist/components/NamespacePicker.d.ts +1 -1
  148. package/dist/components/NamespacePicker.d.ts.map +1 -1
  149. package/dist/components/OnePasswordSelector.d.ts +1 -1
  150. package/dist/components/OnePasswordSelector.d.ts.map +1 -1
  151. package/dist/components/RangeSlider.d.ts +1 -1
  152. package/dist/components/RangeSlider.d.ts.map +1 -1
  153. package/dist/components/SearchInput.d.ts +2 -2
  154. package/dist/components/SearchInput.d.ts.map +1 -1
  155. package/dist/components/SecretFormField.d.ts +1 -1
  156. package/dist/components/SecretFormField.d.ts.map +1 -1
  157. package/dist/components/SecretKeySelector.d.ts +1 -1
  158. package/dist/components/SecretKeySelector.d.ts.map +1 -1
  159. package/dist/components/SegmentedControl.cjs +4 -2
  160. package/dist/components/SegmentedControl.cjs.map +1 -1
  161. package/dist/components/SegmentedControl.d.ts +6 -2
  162. package/dist/components/SegmentedControl.d.ts.map +1 -1
  163. package/dist/components/SegmentedControl.js +4 -2
  164. package/dist/components/SegmentedControl.js.map +1 -1
  165. package/dist/components/SplitButton.d.ts +2 -2
  166. package/dist/components/SplitButton.d.ts.map +1 -1
  167. package/dist/components/Switch.d.ts +2 -2
  168. package/dist/components/Switch.d.ts.map +1 -1
  169. package/dist/components/TimeRange.d.ts +1 -1
  170. package/dist/components/TimeRange.d.ts.map +1 -1
  171. package/dist/components/TreePickerField.d.ts +2 -2
  172. package/dist/components/TreePickerField.d.ts.map +1 -1
  173. package/dist/components/TriStateToggle.d.ts +1 -1
  174. package/dist/components/TriStateToggle.d.ts.map +1 -1
  175. package/dist/components/UnitStepControls.d.ts +2 -2
  176. package/dist/components/UnitStepControls.d.ts.map +1 -1
  177. package/dist/components/WorkloadPicker.d.ts +1 -1
  178. package/dist/components/WorkloadPicker.d.ts.map +1 -1
  179. package/dist/components/button.d.ts +3 -3
  180. package/dist/components/clipboard.cjs +60 -0
  181. package/dist/components/clipboard.cjs.map +1 -0
  182. package/dist/components/clipboard.d.ts +13 -0
  183. package/dist/components/clipboard.d.ts.map +1 -0
  184. package/dist/components/clipboard.js +60 -0
  185. package/dist/components/clipboard.js.map +1 -0
  186. package/dist/components/combobox-types.d.ts +1 -1
  187. package/dist/components/density-switcher.d.ts +1 -1
  188. package/dist/components/filter-bar-context.d.ts +1 -1
  189. package/dist/components/filter-bar-field-utils.d.ts +2 -2
  190. package/dist/components/filter-bar-field-utils.js +1 -1
  191. package/dist/components/filter-bar-multi.d.ts +3 -3
  192. package/dist/components/filter-bar-multi.d.ts.map +1 -1
  193. package/dist/components/form-lookup-context.d.ts +1 -1
  194. package/dist/components/icon-menu-picker.cjs.map +1 -1
  195. package/dist/components/icon-menu-picker.d.ts +2 -2
  196. package/dist/components/icon-menu-picker.d.ts.map +1 -1
  197. package/dist/components/icon-menu-picker.js.map +1 -1
  198. package/dist/components/jotai-bindings.d.ts +2 -2
  199. package/dist/components/jotai-bindings.d.ts.map +1 -1
  200. package/dist/components/json-schema-form-accordion-array.d.ts +1 -1
  201. package/dist/components/json-schema-form-accordion-array.d.ts.map +1 -1
  202. package/dist/components/json-schema-form-array.cjs +15 -1
  203. package/dist/components/json-schema-form-array.cjs.map +1 -1
  204. package/dist/components/json-schema-form-array.d.ts +1 -1
  205. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  206. package/dist/components/json-schema-form-array.js +15 -1
  207. package/dist/components/json-schema-form-array.js.map +1 -1
  208. package/dist/components/json-schema-form-cards-array.d.ts +1 -1
  209. package/dist/components/json-schema-form-cards-array.d.ts.map +1 -1
  210. package/dist/components/json-schema-form-discriminator.d.ts +1 -1
  211. package/dist/components/json-schema-form-error-display.d.ts +3 -3
  212. package/dist/components/json-schema-form-error-display.d.ts.map +1 -1
  213. package/dist/components/json-schema-form-extensions.d.ts +1 -1
  214. package/dist/components/json-schema-form-fields.d.ts +12 -12
  215. package/dist/components/json-schema-form-fields.d.ts.map +1 -1
  216. package/dist/components/json-schema-form-grid.d.ts +1 -1
  217. package/dist/components/json-schema-form-grid.d.ts.map +1 -1
  218. package/dist/components/json-schema-form-item-row.d.ts +4 -4
  219. package/dist/components/json-schema-form-item-row.d.ts.map +1 -1
  220. package/dist/components/json-schema-form-layout.d.ts +6 -6
  221. package/dist/components/json-schema-form-layout.d.ts.map +1 -1
  222. package/dist/components/json-schema-form-list-array.cjs +113 -0
  223. package/dist/components/json-schema-form-list-array.cjs.map +1 -0
  224. package/dist/components/json-schema-form-list-array.d.ts +7 -0
  225. package/dist/components/json-schema-form-list-array.d.ts.map +1 -0
  226. package/dist/components/json-schema-form-list-array.js +113 -0
  227. package/dist/components/json-schema-form-list-array.js.map +1 -0
  228. package/dist/components/json-schema-form-lookup-tree.d.ts +1 -1
  229. package/dist/components/json-schema-form-lookup-tree.d.ts.map +1 -1
  230. package/dist/components/json-schema-form-object.d.ts +2 -2
  231. package/dist/components/json-schema-form-object.d.ts.map +1 -1
  232. package/dist/components/json-schema-form-render.d.ts +1 -1
  233. package/dist/components/json-schema-form-resolve.cjs +1 -1
  234. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  235. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  236. package/dist/components/json-schema-form-resolve.js +1 -1
  237. package/dist/components/json-schema-form-resolve.js.map +1 -1
  238. package/dist/components/json-schema-form-table-array.d.ts +1 -1
  239. package/dist/components/json-schema-form-table-array.d.ts.map +1 -1
  240. package/dist/components/json-schema-form-tags-combobox.cjs +2 -2
  241. package/dist/components/json-schema-form-tags-combobox.cjs.map +1 -1
  242. package/dist/components/json-schema-form-tags-combobox.d.ts +1 -1
  243. package/dist/components/json-schema-form-tags-combobox.d.ts.map +1 -1
  244. package/dist/components/json-schema-form-tags-combobox.js +1 -1
  245. package/dist/components/json-schema-form-tags-combobox.js.map +1 -1
  246. package/dist/components/json-schema-form-template-menu.d.ts +2 -2
  247. package/dist/components/json-schema-form-template-menu.d.ts.map +1 -1
  248. package/dist/components/json-schema-form-template.d.ts +1 -1
  249. package/dist/components/json-schema-form-types.d.ts +2 -2
  250. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  251. package/dist/components/loading.d.ts +4 -4
  252. package/dist/components/mdx-editor-callout.d.ts +1 -1
  253. package/dist/components/mdx-editor-options.d.ts +1 -1
  254. package/dist/components/select.d.ts +3 -3
  255. package/dist/components/theme-switcher.d.ts +1 -1
  256. package/dist/components/use-list-menu-selection.d.ts +1 -1
  257. package/dist/components/useComboboxLayout.cjs +37 -27
  258. package/dist/components/useComboboxLayout.cjs.map +1 -1
  259. package/dist/components/useComboboxLayout.d.ts +4 -4
  260. package/dist/components/useComboboxLayout.d.ts.map +1 -1
  261. package/dist/components/useComboboxLayout.js +38 -28
  262. package/dist/components/useComboboxLayout.js.map +1 -1
  263. package/dist/components/workload-picker-utils.d.ts +1 -1
  264. package/dist/components.cjs +5 -0
  265. package/dist/components.cjs.map +1 -1
  266. package/dist/components.d.ts +3 -0
  267. package/dist/components.d.ts.map +1 -1
  268. package/dist/components.js +5 -0
  269. package/dist/components.js.map +1 -1
  270. package/dist/data/AnsiHtml.d.ts +1 -1
  271. package/dist/data/AnsiHtml.d.ts.map +1 -1
  272. package/dist/data/Avatar.d.ts +2 -2
  273. package/dist/data/Avatar.d.ts.map +1 -1
  274. package/dist/data/AvatarBadge.d.ts +2 -2
  275. package/dist/data/AvatarBadge.d.ts.map +1 -1
  276. package/dist/data/Badge.d.ts +2 -2
  277. package/dist/data/Badge.d.ts.map +1 -1
  278. package/dist/data/Callout.d.ts +2 -2
  279. package/dist/data/Callout.d.ts.map +1 -1
  280. package/dist/data/Clicky.cjs +4 -1
  281. package/dist/data/Clicky.cjs.map +1 -1
  282. package/dist/data/Clicky.d.ts +3 -3
  283. package/dist/data/Clicky.d.ts.map +1 -1
  284. package/dist/data/Clicky.js +4 -1
  285. package/dist/data/Clicky.js.map +1 -1
  286. package/dist/data/CodeBlock.cjs +1 -1
  287. package/dist/data/CodeBlock.cjs.map +1 -1
  288. package/dist/data/CodeBlock.d.ts +1 -1
  289. package/dist/data/CodeBlock.d.ts.map +1 -1
  290. package/dist/data/CodeBlock.js +1 -1
  291. package/dist/data/CodeBlock.js.map +1 -1
  292. package/dist/data/CodeDiff.d.ts +1 -1
  293. package/dist/data/CodeDiff.d.ts.map +1 -1
  294. package/dist/data/DataTable.cjs +256 -58
  295. package/dist/data/DataTable.cjs.map +1 -1
  296. package/dist/data/DataTable.d.ts +174 -5
  297. package/dist/data/DataTable.d.ts.map +1 -1
  298. package/dist/data/DataTable.grouping.d.ts +1 -1
  299. package/dist/data/DataTable.js +256 -58
  300. package/dist/data/DataTable.js.map +1 -1
  301. package/dist/data/DataTableGroupingControls.d.ts +1 -1
  302. package/dist/data/DataTableGroupingControls.d.ts.map +1 -1
  303. package/dist/data/ExecutionTree.d.ts +2 -2
  304. package/dist/data/ExecutionTree.d.ts.map +1 -1
  305. package/dist/data/FilterPill.d.ts +4 -4
  306. package/dist/data/FilterPill.d.ts.map +1 -1
  307. package/dist/data/FixtureEditor/FenceForm.d.ts +1 -1
  308. package/dist/data/FixtureEditor/FenceForm.d.ts.map +1 -1
  309. package/dist/data/FixtureEditor/FixtureEditor.d.ts +1 -1
  310. package/dist/data/FixtureEditor/FixtureEditor.d.ts.map +1 -1
  311. package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.d.ts +1 -1
  312. package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.d.ts.map +1 -1
  313. package/dist/data/FixtureEditor/FixtureFrontmatterDialog.cjs +1 -1
  314. package/dist/data/FixtureEditor/FixtureFrontmatterDialog.cjs.map +1 -1
  315. package/dist/data/FixtureEditor/FixtureFrontmatterDialog.d.ts +1 -1
  316. package/dist/data/FixtureEditor/FixtureFrontmatterDialog.d.ts.map +1 -1
  317. package/dist/data/FixtureEditor/FixtureFrontmatterDialog.js +1 -1
  318. package/dist/data/FixtureEditor/FixtureFrontmatterDialog.js.map +1 -1
  319. package/dist/data/FixtureEditor/RawFenceEditor.d.ts +2 -2
  320. package/dist/data/FixtureEditor/RawFenceEditor.d.ts.map +1 -1
  321. package/dist/data/FixtureEditor/fixture-frontmatter.cjs +8 -10
  322. package/dist/data/FixtureEditor/fixture-frontmatter.cjs.map +1 -1
  323. package/dist/data/FixtureEditor/fixture-frontmatter.d.ts.map +1 -1
  324. package/dist/data/FixtureEditor/fixture-frontmatter.js +8 -10
  325. package/dist/data/FixtureEditor/fixture-frontmatter.js.map +1 -1
  326. package/dist/data/FixtureEditor/types.d.ts +1 -1
  327. package/dist/data/Gauge.d.ts +2 -2
  328. package/dist/data/Gauge.d.ts.map +1 -1
  329. package/dist/data/GaugeHoverCard.d.ts +2 -2
  330. package/dist/data/GaugeHoverCard.d.ts.map +1 -1
  331. package/dist/data/HighlightedTokens.d.ts +1 -1
  332. package/dist/data/HighlightedTokens.d.ts.map +1 -1
  333. package/dist/data/Icon.cjs.map +1 -1
  334. package/dist/data/Icon.d.ts +3 -3
  335. package/dist/data/Icon.d.ts.map +1 -1
  336. package/dist/data/Icon.js.map +1 -1
  337. package/dist/data/JsonView.d.ts +1 -1
  338. package/dist/data/JsonView.d.ts.map +1 -1
  339. package/dist/data/KeyValueList.d.ts +2 -2
  340. package/dist/data/KeyValueList.d.ts.map +1 -1
  341. package/dist/data/LogDetails.d.ts +1 -1
  342. package/dist/data/LogDetails.d.ts.map +1 -1
  343. package/dist/data/LogViewer.d.ts +1 -1
  344. package/dist/data/LogViewer.d.ts.map +1 -1
  345. package/dist/data/LogsTable.d.ts +1 -1
  346. package/dist/data/LogsTable.d.ts.map +1 -1
  347. package/dist/data/Markdown.d.ts +1 -1
  348. package/dist/data/Markdown.d.ts.map +1 -1
  349. package/dist/data/MarkdownEditor.d.ts +2 -2
  350. package/dist/data/MarkdownEditor.d.ts.map +1 -1
  351. package/dist/data/MatrixTable.d.ts +2 -2
  352. package/dist/data/MatrixTable.d.ts.map +1 -1
  353. package/dist/data/MethodBadge.d.ts +1 -1
  354. package/dist/data/MethodBadge.d.ts.map +1 -1
  355. package/dist/data/ObjectGraph.d.ts +2 -2
  356. package/dist/data/ObjectGraph.d.ts.map +1 -1
  357. package/dist/data/ProgressBar.d.ts +1 -1
  358. package/dist/data/ProgressBar.d.ts.map +1 -1
  359. package/dist/data/ProgressBars.d.ts +2 -2
  360. package/dist/data/ProgressBars.d.ts.map +1 -1
  361. package/dist/data/PromptBanner.d.ts +1 -1
  362. package/dist/data/PromptBanner.d.ts.map +1 -1
  363. package/dist/data/PromptDialog.d.ts +1 -1
  364. package/dist/data/PromptDialog.d.ts.map +1 -1
  365. package/dist/data/Properties.d.ts +2 -2
  366. package/dist/data/Properties.d.ts.map +1 -1
  367. package/dist/data/RadialGauge.d.ts +2 -2
  368. package/dist/data/RadialGauge.d.ts.map +1 -1
  369. package/dist/data/SchemaViewer.d.ts +4 -4
  370. package/dist/data/SchemaViewer.d.ts.map +1 -1
  371. package/dist/data/SelectionActionBar.cjs +242 -0
  372. package/dist/data/SelectionActionBar.cjs.map +1 -0
  373. package/dist/data/SelectionActionBar.d.ts +28 -0
  374. package/dist/data/SelectionActionBar.d.ts.map +1 -0
  375. package/dist/data/SelectionActionBar.js +242 -0
  376. package/dist/data/SelectionActionBar.js.map +1 -0
  377. package/dist/data/ServerTimingBadge.d.ts +1 -1
  378. package/dist/data/ServerTimingBadge.d.ts.map +1 -1
  379. package/dist/data/SignedDeltaBar.d.ts +1 -1
  380. package/dist/data/SignedDeltaBar.d.ts.map +1 -1
  381. package/dist/data/SortableHeader.d.ts +2 -2
  382. package/dist/data/SortableHeader.d.ts.map +1 -1
  383. package/dist/data/StatStrip.d.ts +2 -2
  384. package/dist/data/StatStrip.d.ts.map +1 -1
  385. package/dist/data/StatusBreakdown.d.ts +3 -3
  386. package/dist/data/StatusBreakdown.d.ts.map +1 -1
  387. package/dist/data/TabButton.d.ts +2 -2
  388. package/dist/data/TabButton.d.ts.map +1 -1
  389. package/dist/data/TaskExecDetails.d.ts +2 -2
  390. package/dist/data/TaskExecDetails.d.ts.map +1 -1
  391. package/dist/data/TaskManager.cjs +34 -12
  392. package/dist/data/TaskManager.cjs.map +1 -1
  393. package/dist/data/TaskManager.d.ts +1 -1
  394. package/dist/data/TaskManager.d.ts.map +1 -1
  395. package/dist/data/TaskManager.js +34 -12
  396. package/dist/data/TaskManager.js.map +1 -1
  397. package/dist/data/TaskManagerButton.cjs +11 -7
  398. package/dist/data/TaskManagerButton.cjs.map +1 -1
  399. package/dist/data/TaskManagerButton.d.ts +1 -1
  400. package/dist/data/TaskManagerButton.d.ts.map +1 -1
  401. package/dist/data/TaskManagerButton.js +11 -7
  402. package/dist/data/TaskManagerButton.js.map +1 -1
  403. package/dist/data/TaskProcessDetails.d.ts +1 -1
  404. package/dist/data/TaskProcessDetails.d.ts.map +1 -1
  405. package/dist/data/TaskProgress.cjs +55 -11
  406. package/dist/data/TaskProgress.cjs.map +1 -1
  407. package/dist/data/TaskProgress.d.ts +1 -1
  408. package/dist/data/TaskProgress.d.ts.map +1 -1
  409. package/dist/data/TaskProgress.js +53 -9
  410. package/dist/data/TaskProgress.js.map +1 -1
  411. package/dist/data/Timeline.d.ts +2 -2
  412. package/dist/data/Timeline.d.ts.map +1 -1
  413. package/dist/data/TimeseriesCoreBars.d.ts +1 -1
  414. package/dist/data/TimeseriesCoreBars.d.ts.map +1 -1
  415. package/dist/data/TimeseriesGauge.d.ts +1 -1
  416. package/dist/data/TimeseriesGauge.d.ts.map +1 -1
  417. package/dist/data/TimeseriesPanel.d.ts +1 -1
  418. package/dist/data/TimeseriesPanel.d.ts.map +1 -1
  419. package/dist/data/Tree.d.ts +2 -2
  420. package/dist/data/Tree.d.ts.map +1 -1
  421. package/dist/data/TreeGroupHeader.d.ts +2 -2
  422. package/dist/data/TreeGroupHeader.d.ts.map +1 -1
  423. package/dist/data/TreeNode.d.ts +2 -2
  424. package/dist/data/TreeNode.d.ts.map +1 -1
  425. package/dist/data/Version.d.ts +3 -3
  426. package/dist/data/WorkloadCard.d.ts +1 -1
  427. package/dist/data/WorkloadCard.d.ts.map +1 -1
  428. package/dist/data/ai/AdvancedChatConfig.d.ts +1 -1
  429. package/dist/data/ai/AdvancedChatConfig.d.ts.map +1 -1
  430. package/dist/data/ai/AdvancedCostsPanel.d.ts +1 -1
  431. package/dist/data/ai/AdvancedCostsPanel.d.ts.map +1 -1
  432. package/dist/data/ai/ChatButton.d.ts +1 -1
  433. package/dist/data/ai/ChatButton.d.ts.map +1 -1
  434. package/dist/data/ai/ChatFab.d.ts +1 -1
  435. package/dist/data/ai/ChatFab.d.ts.map +1 -1
  436. package/dist/data/ai/ChatWindow.cjs +2 -4
  437. package/dist/data/ai/ChatWindow.cjs.map +1 -1
  438. package/dist/data/ai/ChatWindow.d.ts +2 -2
  439. package/dist/data/ai/ChatWindow.d.ts.map +1 -1
  440. package/dist/data/ai/ChatWindow.js +2 -4
  441. package/dist/data/ai/ChatWindow.js.map +1 -1
  442. package/dist/data/ai/ChatWindow.runtime.cjs +1 -2
  443. package/dist/data/ai/ChatWindow.runtime.cjs.map +1 -1
  444. package/dist/data/ai/ChatWindow.runtime.d.ts.map +1 -1
  445. package/dist/data/ai/ChatWindow.runtime.js +1 -2
  446. package/dist/data/ai/ChatWindow.runtime.js.map +1 -1
  447. package/dist/data/ai/ChatWindow.test-utils.d.ts +1 -1
  448. package/dist/data/ai/ChatWindow.thread-status.d.ts +1 -1
  449. package/dist/data/ai/ChatWindow.thread-status.d.ts.map +1 -1
  450. package/dist/data/ai/ChatWindow.types.d.ts +1 -1
  451. package/dist/data/ai/ChatWindowManager.d.ts +2 -2
  452. package/dist/data/ai/ChatWindowManager.d.ts.map +1 -1
  453. package/dist/data/ai/ContextBadges.d.ts +2 -2
  454. package/dist/data/ai/ContextBadges.d.ts.map +1 -1
  455. package/dist/data/ai/PolicyTree.d.ts +2 -2
  456. package/dist/data/ai/PolicyTree.d.ts.map +1 -1
  457. package/dist/data/ai/PromptCatalog/PromptCatalogTable.cjs +262 -0
  458. package/dist/data/ai/PromptCatalog/PromptCatalogTable.cjs.map +1 -0
  459. package/dist/data/ai/PromptCatalog/PromptCatalogTable.d.ts +16 -0
  460. package/dist/data/ai/PromptCatalog/PromptCatalogTable.d.ts.map +1 -0
  461. package/dist/data/ai/PromptCatalog/PromptCatalogTable.js +262 -0
  462. package/dist/data/ai/PromptCatalog/PromptCatalogTable.js.map +1 -0
  463. package/dist/data/ai/PromptCatalog/PromptLayerStrip.cjs +77 -0
  464. package/dist/data/ai/PromptCatalog/PromptLayerStrip.cjs.map +1 -0
  465. package/dist/data/ai/PromptCatalog/PromptLayerStrip.d.ts +8 -0
  466. package/dist/data/ai/PromptCatalog/PromptLayerStrip.d.ts.map +1 -0
  467. package/dist/data/ai/PromptCatalog/PromptLayerStrip.js +77 -0
  468. package/dist/data/ai/PromptCatalog/PromptLayerStrip.js.map +1 -0
  469. package/dist/data/ai/PromptCatalog/PromptPage.cjs +332 -0
  470. package/dist/data/ai/PromptCatalog/PromptPage.cjs.map +1 -0
  471. package/dist/data/ai/PromptCatalog/PromptPage.d.ts +17 -0
  472. package/dist/data/ai/PromptCatalog/PromptPage.d.ts.map +1 -0
  473. package/dist/data/ai/PromptCatalog/PromptPage.js +332 -0
  474. package/dist/data/ai/PromptCatalog/PromptPage.js.map +1 -0
  475. package/dist/data/ai/PromptCatalog/PromptPageEditor.cjs +102 -0
  476. package/dist/data/ai/PromptCatalog/PromptPageEditor.cjs.map +1 -0
  477. package/dist/data/ai/PromptCatalog/PromptPageEditor.d.ts +16 -0
  478. package/dist/data/ai/PromptCatalog/PromptPageEditor.d.ts.map +1 -0
  479. package/dist/data/ai/PromptCatalog/PromptPageEditor.js +102 -0
  480. package/dist/data/ai/PromptCatalog/PromptPageEditor.js.map +1 -0
  481. package/dist/data/ai/PromptCatalog/PromptPageHeader.cjs +102 -0
  482. package/dist/data/ai/PromptCatalog/PromptPageHeader.cjs.map +1 -0
  483. package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts +10 -0
  484. package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts.map +1 -0
  485. package/dist/data/ai/PromptCatalog/PromptPageHeader.js +102 -0
  486. package/dist/data/ai/PromptCatalog/PromptPageHeader.js.map +1 -0
  487. package/dist/data/ai/PromptCatalog/PromptPagePreview.cjs +90 -0
  488. package/dist/data/ai/PromptCatalog/PromptPagePreview.cjs.map +1 -0
  489. package/dist/data/ai/PromptCatalog/PromptPagePreview.d.ts +8 -0
  490. package/dist/data/ai/PromptCatalog/PromptPagePreview.d.ts.map +1 -0
  491. package/dist/data/ai/PromptCatalog/PromptPagePreview.js +90 -0
  492. package/dist/data/ai/PromptCatalog/PromptPagePreview.js.map +1 -0
  493. package/dist/data/ai/PromptCatalog/PromptPageSaveBar.cjs +168 -0
  494. package/dist/data/ai/PromptCatalog/PromptPageSaveBar.cjs.map +1 -0
  495. package/dist/data/ai/PromptCatalog/PromptPageSaveBar.d.ts +17 -0
  496. package/dist/data/ai/PromptCatalog/PromptPageSaveBar.d.ts.map +1 -0
  497. package/dist/data/ai/PromptCatalog/PromptPageSaveBar.js +168 -0
  498. package/dist/data/ai/PromptCatalog/PromptPageSaveBar.js.map +1 -0
  499. package/dist/data/ai/PromptCatalog/PromptSourceBadge.cjs +36 -0
  500. package/dist/data/ai/PromptCatalog/PromptSourceBadge.cjs.map +1 -0
  501. package/dist/data/ai/PromptCatalog/PromptSourceBadge.d.ts +7 -0
  502. package/dist/data/ai/PromptCatalog/PromptSourceBadge.d.ts.map +1 -0
  503. package/dist/data/ai/PromptCatalog/PromptSourceBadge.js +36 -0
  504. package/dist/data/ai/PromptCatalog/PromptSourceBadge.js.map +1 -0
  505. package/dist/data/ai/PromptCatalog/index.d.ts +9 -0
  506. package/dist/data/ai/PromptCatalog/index.d.ts.map +1 -0
  507. package/dist/data/ai/PromptCatalog/prompt-catalog-model.cjs +137 -0
  508. package/dist/data/ai/PromptCatalog/prompt-catalog-model.cjs.map +1 -0
  509. package/dist/data/ai/PromptCatalog/prompt-catalog-model.d.ts +28 -0
  510. package/dist/data/ai/PromptCatalog/prompt-catalog-model.d.ts.map +1 -0
  511. package/dist/data/ai/PromptCatalog/prompt-catalog-model.js +137 -0
  512. package/dist/data/ai/PromptCatalog/prompt-catalog-model.js.map +1 -0
  513. package/dist/data/ai/PromptCatalog/prompt-page-model.cjs +114 -0
  514. package/dist/data/ai/PromptCatalog/prompt-page-model.cjs.map +1 -0
  515. package/dist/data/ai/PromptCatalog/prompt-page-model.d.ts +45 -0
  516. package/dist/data/ai/PromptCatalog/prompt-page-model.d.ts.map +1 -0
  517. package/dist/data/ai/PromptCatalog/prompt-page-model.js +114 -0
  518. package/dist/data/ai/PromptCatalog/prompt-page-model.js.map +1 -0
  519. package/dist/data/ai/PromptCatalog/types.d.ts +70 -0
  520. package/dist/data/ai/PromptCatalog/types.d.ts.map +1 -0
  521. package/dist/data/ai/PromptPicker/PromptPicker.cjs +9 -12
  522. package/dist/data/ai/PromptPicker/PromptPicker.cjs.map +1 -1
  523. package/dist/data/ai/PromptPicker/PromptPicker.d.ts +2 -2
  524. package/dist/data/ai/PromptPicker/PromptPicker.d.ts.map +1 -1
  525. package/dist/data/ai/PromptPicker/PromptPicker.js +9 -12
  526. package/dist/data/ai/PromptPicker/PromptPicker.js.map +1 -1
  527. package/dist/data/ai/PromptPicker/PromptSourceRepair.d.ts +1 -1
  528. package/dist/data/ai/PromptPicker/PromptSourceRepair.d.ts.map +1 -1
  529. package/dist/data/ai/PromptPicker/index.d.ts +1 -1
  530. package/dist/data/ai/PromptPicker/index.d.ts.map +1 -1
  531. package/dist/data/ai/PromptPicker/types.cjs.map +1 -1
  532. package/dist/data/ai/PromptPicker/types.d.ts +9 -0
  533. package/dist/data/ai/PromptPicker/types.d.ts.map +1 -1
  534. package/dist/data/ai/PromptPicker/types.js.map +1 -1
  535. package/dist/data/ai/PromptRunEditor/index.cjs +2 -2
  536. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  537. package/dist/data/ai/PromptRunEditor/index.d.ts +2 -2
  538. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  539. package/dist/data/ai/PromptRunEditor/index.js +3 -3
  540. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  541. package/dist/data/ai/PromptRunEditor/model.cjs +0 -1
  542. package/dist/data/ai/PromptRunEditor/model.cjs.map +1 -1
  543. package/dist/data/ai/PromptRunEditor/model.d.ts +1 -1
  544. package/dist/data/ai/PromptRunEditor/model.d.ts.map +1 -1
  545. package/dist/data/ai/PromptRunEditor/model.js +0 -1
  546. package/dist/data/ai/PromptRunEditor/model.js.map +1 -1
  547. package/dist/data/ai/RuntimeModePicker.cjs +15 -6
  548. package/dist/data/ai/RuntimeModePicker.cjs.map +1 -1
  549. package/dist/data/ai/RuntimeModePicker.d.ts +1 -1
  550. package/dist/data/ai/RuntimeModePicker.d.ts.map +1 -1
  551. package/dist/data/ai/RuntimeModePicker.js +17 -8
  552. package/dist/data/ai/RuntimeModePicker.js.map +1 -1
  553. package/dist/data/ai/SandboxConnectionsSection.d.ts +1 -1
  554. package/dist/data/ai/SandboxConnectionsSection.d.ts.map +1 -1
  555. package/dist/data/ai/SandboxCreateWizard.d.ts +1 -1
  556. package/dist/data/ai/SandboxCreateWizard.d.ts.map +1 -1
  557. package/dist/data/ai/SessionChatComposer.d.ts +2 -2
  558. package/dist/data/ai/SessionChatComposer.d.ts.map +1 -1
  559. package/dist/data/ai/SessionInspector.collection-types.d.ts +1 -1
  560. package/dist/data/ai/SessionInspector.collection-types.d.ts.map +1 -1
  561. package/dist/data/ai/SessionInspector.collection.cjs +3 -3
  562. package/dist/data/ai/SessionInspector.collection.cjs.map +1 -1
  563. package/dist/data/ai/SessionInspector.collection.js +3 -3
  564. package/dist/data/ai/SessionInspector.collection.js.map +1 -1
  565. package/dist/data/ai/SessionInspector.d.ts +2 -2
  566. package/dist/data/ai/SessionInspector.d.ts.map +1 -1
  567. package/dist/data/ai/SessionInspector.files.d.ts +1 -1
  568. package/dist/data/ai/SessionInspector.files.d.ts.map +1 -1
  569. package/dist/data/ai/SessionInspector.hierarchy.cjs +1 -1
  570. package/dist/data/ai/SessionInspector.hierarchy.cjs.map +1 -1
  571. package/dist/data/ai/SessionInspector.hierarchy.d.ts +2 -2
  572. package/dist/data/ai/SessionInspector.hierarchy.d.ts.map +1 -1
  573. package/dist/data/ai/SessionInspector.hierarchy.js +1 -1
  574. package/dist/data/ai/SessionInspector.hierarchy.js.map +1 -1
  575. package/dist/data/ai/SessionInspector.model.cjs +3 -3
  576. package/dist/data/ai/SessionInspector.model.cjs.map +1 -1
  577. package/dist/data/ai/SessionInspector.model.d.ts +1 -1
  578. package/dist/data/ai/SessionInspector.model.d.ts.map +1 -1
  579. package/dist/data/ai/SessionInspector.model.js +3 -3
  580. package/dist/data/ai/SessionInspector.model.js.map +1 -1
  581. package/dist/data/ai/SessionInspector.panels.cjs +1 -1
  582. package/dist/data/ai/SessionInspector.panels.cjs.map +1 -1
  583. package/dist/data/ai/SessionInspector.panels.d.ts +1 -1
  584. package/dist/data/ai/SessionInspector.panels.d.ts.map +1 -1
  585. package/dist/data/ai/SessionInspector.panels.js +1 -1
  586. package/dist/data/ai/SessionInspector.panels.js.map +1 -1
  587. package/dist/data/ai/SessionInspector.plan.d.ts +1 -1
  588. package/dist/data/ai/SessionInspector.plan.d.ts.map +1 -1
  589. package/dist/data/ai/SessionInspector.summary.cjs +3 -3
  590. package/dist/data/ai/SessionInspector.summary.cjs.map +1 -1
  591. package/dist/data/ai/SessionInspector.summary.d.ts +2 -2
  592. package/dist/data/ai/SessionInspector.summary.d.ts.map +1 -1
  593. package/dist/data/ai/SessionInspector.summary.js +3 -3
  594. package/dist/data/ai/SessionInspector.summary.js.map +1 -1
  595. package/dist/data/ai/SessionInspector.transcript.d.ts +1 -1
  596. package/dist/data/ai/SessionInspector.transcript.d.ts.map +1 -1
  597. package/dist/data/ai/SessionInspector.turns.d.ts +2 -2
  598. package/dist/data/ai/SessionInspector.turns.d.ts.map +1 -1
  599. package/dist/data/ai/SessionViewer.d.ts +2 -2
  600. package/dist/data/ai/SessionViewer.d.ts.map +1 -1
  601. package/dist/data/ai/SessionViewer.fixtures.d.ts.map +1 -1
  602. package/dist/data/ai/SessionViewer.header.d.ts +2 -2
  603. package/dist/data/ai/SessionViewer.header.d.ts.map +1 -1
  604. package/dist/data/ai/SessionViewer.row-metadata.d.ts +3 -3
  605. package/dist/data/ai/SessionViewer.row-metadata.d.ts.map +1 -1
  606. package/dist/data/ai/SessionViewer.rows.d.ts +3 -3
  607. package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
  608. package/dist/data/ai/SessionViewer.tool-details.d.ts +5 -5
  609. package/dist/data/ai/SessionViewer.tool-details.d.ts.map +1 -1
  610. package/dist/data/ai/SessionViewer.tool-row.d.ts +1 -1
  611. package/dist/data/ai/SessionViewer.tool-row.d.ts.map +1 -1
  612. package/dist/data/ai/SessionViewer.unified.d.ts +3 -2
  613. package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
  614. package/dist/data/ai/SessionViewerMenu.d.ts +1 -1
  615. package/dist/data/ai/SessionViewerMenu.d.ts.map +1 -1
  616. package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.d.ts +1 -1
  617. package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.d.ts.map +1 -1
  618. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +18 -30
  619. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -1
  620. package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts +1 -1
  621. package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -1
  622. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +19 -31
  623. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -1
  624. package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.cjs +71 -86
  625. package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.cjs.map +1 -1
  626. package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.d.ts +2 -2
  627. package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.d.ts.map +1 -1
  628. package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.js +72 -87
  629. package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.js.map +1 -1
  630. package/dist/data/ai/SpecRuntimeEditor/Footer.d.ts +2 -2
  631. package/dist/data/ai/SpecRuntimeEditor/Footer.d.ts.map +1 -1
  632. package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.cjs +99 -0
  633. package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.cjs.map +1 -0
  634. package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.d.ts +13 -0
  635. package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.d.ts.map +1 -0
  636. package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.js +99 -0
  637. package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.js.map +1 -0
  638. package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +34 -23
  639. package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -1
  640. package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts +8 -4
  641. package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -1
  642. package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +35 -24
  643. package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -1
  644. package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.cjs +114 -0
  645. package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.cjs.map +1 -0
  646. package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.d.ts +10 -0
  647. package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.d.ts.map +1 -0
  648. package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.js +114 -0
  649. package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.js.map +1 -0
  650. package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.cjs +160 -0
  651. package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.cjs.map +1 -0
  652. package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.d.ts +9 -0
  653. package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.d.ts.map +1 -0
  654. package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.js +160 -0
  655. package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.js.map +1 -0
  656. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.cjs +27 -241
  657. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.cjs.map +1 -1
  658. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.d.ts +6 -7
  659. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.d.ts.map +1 -1
  660. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.js +25 -239
  661. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.js.map +1 -1
  662. package/dist/data/ai/SpecRuntimeEditor/PresetCards.d.ts +1 -1
  663. package/dist/data/ai/SpecRuntimeEditor/PresetCards.d.ts.map +1 -1
  664. package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs +21 -8
  665. package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs.map +1 -1
  666. package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts +6 -3
  667. package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts.map +1 -1
  668. package/dist/data/ai/SpecRuntimeEditor/PromptSection.js +22 -9
  669. package/dist/data/ai/SpecRuntimeEditor/PromptSection.js.map +1 -1
  670. package/dist/data/ai/SpecRuntimeEditor/Rail.d.ts +2 -2
  671. package/dist/data/ai/SpecRuntimeEditor/Rail.d.ts.map +1 -1
  672. package/dist/data/ai/SpecRuntimeEditor/SandboxSection.cjs +207 -164
  673. package/dist/data/ai/SpecRuntimeEditor/SandboxSection.cjs.map +1 -1
  674. package/dist/data/ai/SpecRuntimeEditor/SandboxSection.d.ts +5 -4
  675. package/dist/data/ai/SpecRuntimeEditor/SandboxSection.d.ts.map +1 -1
  676. package/dist/data/ai/SpecRuntimeEditor/SandboxSection.js +210 -167
  677. package/dist/data/ai/SpecRuntimeEditor/SandboxSection.js.map +1 -1
  678. package/dist/data/ai/SpecRuntimeEditor/SectionCard.cjs +15 -15
  679. package/dist/data/ai/SpecRuntimeEditor/SectionCard.cjs.map +1 -1
  680. package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts +2 -2
  681. package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts.map +1 -1
  682. package/dist/data/ai/SpecRuntimeEditor/SectionCard.js +15 -15
  683. package/dist/data/ai/SpecRuntimeEditor/SectionCard.js.map +1 -1
  684. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts +1 -1
  685. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts.map +1 -1
  686. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs +120 -42
  687. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs.map +1 -1
  688. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts +5 -2
  689. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts.map +1 -1
  690. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js +123 -45
  691. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js.map +1 -1
  692. package/dist/data/ai/SpecRuntimeEditor/env-model.cjs.map +1 -1
  693. package/dist/data/ai/SpecRuntimeEditor/env-model.d.ts.map +1 -1
  694. package/dist/data/ai/SpecRuntimeEditor/env-model.js.map +1 -1
  695. package/dist/data/ai/SpecRuntimeEditor/fields.d.ts +12 -12
  696. package/dist/data/ai/SpecRuntimeEditor/fields.d.ts.map +1 -1
  697. package/dist/data/ai/SpecRuntimeEditor/index.cjs +136 -48
  698. package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
  699. package/dist/data/ai/SpecRuntimeEditor/index.d.ts +14 -4
  700. package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
  701. package/dist/data/ai/SpecRuntimeEditor/index.js +137 -49
  702. package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
  703. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.cjs +93 -0
  704. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.cjs.map +1 -0
  705. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.d.ts +6 -0
  706. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.d.ts.map +1 -0
  707. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.js +93 -0
  708. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.js.map +1 -0
  709. package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.cjs +35 -0
  710. package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.cjs.map +1 -0
  711. package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.d.ts +5 -0
  712. package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.d.ts.map +1 -0
  713. package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.js +35 -0
  714. package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.js.map +1 -0
  715. package/dist/data/ai/SpecRuntimeEditor/presets.cjs +2 -9
  716. package/dist/data/ai/SpecRuntimeEditor/presets.cjs.map +1 -1
  717. package/dist/data/ai/SpecRuntimeEditor/presets.d.ts +1 -2
  718. package/dist/data/ai/SpecRuntimeEditor/presets.d.ts.map +1 -1
  719. package/dist/data/ai/SpecRuntimeEditor/presets.js +2 -9
  720. package/dist/data/ai/SpecRuntimeEditor/presets.js.map +1 -1
  721. package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -1
  722. package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts +1 -1
  723. package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -1
  724. package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -1
  725. package/dist/data/ai/SpecRuntimeEditor/types.cjs +2 -7
  726. package/dist/data/ai/SpecRuntimeEditor/types.cjs.map +1 -1
  727. package/dist/data/ai/SpecRuntimeEditor/types.d.ts +0 -1
  728. package/dist/data/ai/SpecRuntimeEditor/types.d.ts.map +1 -1
  729. package/dist/data/ai/SpecRuntimeEditor/types.js +3 -8
  730. package/dist/data/ai/SpecRuntimeEditor/types.js.map +1 -1
  731. package/dist/data/ai/SpecRuntimeEditor/update.cjs +43 -33
  732. package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -1
  733. package/dist/data/ai/SpecRuntimeEditor/update.d.ts +7 -13
  734. package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -1
  735. package/dist/data/ai/SpecRuntimeEditor/update.js +43 -33
  736. package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -1
  737. package/dist/data/ai/SpecRuntimeEditor.model.cjs +33 -49
  738. package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
  739. package/dist/data/ai/SpecRuntimeEditor.model.d.ts +52 -29
  740. package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
  741. package/dist/data/ai/SpecRuntimeEditor.model.js +33 -48
  742. package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
  743. package/dist/data/ai/SpecRuntimeEditor.sandbox-model.cjs +276 -0
  744. package/dist/data/ai/SpecRuntimeEditor.sandbox-model.cjs.map +1 -0
  745. package/dist/data/ai/SpecRuntimeEditor.sandbox-model.d.ts +58 -0
  746. package/dist/data/ai/SpecRuntimeEditor.sandbox-model.d.ts.map +1 -0
  747. package/dist/data/ai/SpecRuntimeEditor.sandbox-model.js +276 -0
  748. package/dist/data/ai/SpecRuntimeEditor.sandbox-model.js.map +1 -0
  749. package/dist/data/ai/ThreadPicker.cjs +55 -42
  750. package/dist/data/ai/ThreadPicker.cjs.map +1 -1
  751. package/dist/data/ai/ThreadPicker.d.ts +1 -1
  752. package/dist/data/ai/ThreadPicker.d.ts.map +1 -1
  753. package/dist/data/ai/ThreadPicker.js +56 -43
  754. package/dist/data/ai/ThreadPicker.js.map +1 -1
  755. package/dist/data/ai/ToolPreferences.cjs +9 -1
  756. package/dist/data/ai/ToolPreferences.cjs.map +1 -1
  757. package/dist/data/ai/ToolPreferences.d.ts +1 -1
  758. package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
  759. package/dist/data/ai/ToolPreferences.js +9 -1
  760. package/dist/data/ai/ToolPreferences.js.map +1 -1
  761. package/dist/data/ai/ToolPreferencesList.d.ts +2 -2
  762. package/dist/data/ai/ToolPreferencesList.d.ts.map +1 -1
  763. package/dist/data/ai/ToolSchemaBrowser.cjs +41 -487
  764. package/dist/data/ai/ToolSchemaBrowser.cjs.map +1 -1
  765. package/dist/data/ai/ToolSchemaBrowser.d.ts +7 -2
  766. package/dist/data/ai/ToolSchemaBrowser.d.ts.map +1 -1
  767. package/dist/data/ai/ToolSchemaBrowser.detail.cjs +238 -0
  768. package/dist/data/ai/ToolSchemaBrowser.detail.cjs.map +1 -0
  769. package/dist/data/ai/ToolSchemaBrowser.detail.d.ts +8 -0
  770. package/dist/data/ai/ToolSchemaBrowser.detail.d.ts.map +1 -0
  771. package/dist/data/ai/ToolSchemaBrowser.detail.js +238 -0
  772. package/dist/data/ai/ToolSchemaBrowser.detail.js.map +1 -0
  773. package/dist/data/ai/ToolSchemaBrowser.directory-header.cjs +57 -0
  774. package/dist/data/ai/ToolSchemaBrowser.directory-header.cjs.map +1 -0
  775. package/dist/data/ai/ToolSchemaBrowser.directory-header.d.ts +9 -0
  776. package/dist/data/ai/ToolSchemaBrowser.directory-header.d.ts.map +1 -0
  777. package/dist/data/ai/ToolSchemaBrowser.directory-header.js +57 -0
  778. package/dist/data/ai/ToolSchemaBrowser.directory-header.js.map +1 -0
  779. package/dist/data/ai/ToolSchemaBrowser.js +42 -488
  780. package/dist/data/ai/ToolSchemaBrowser.js.map +1 -1
  781. package/dist/data/ai/ToolSchemaBrowser.model.cjs +130 -0
  782. package/dist/data/ai/ToolSchemaBrowser.model.cjs.map +1 -0
  783. package/dist/data/ai/ToolSchemaBrowser.model.d.ts +35 -0
  784. package/dist/data/ai/ToolSchemaBrowser.model.d.ts.map +1 -0
  785. package/dist/data/ai/ToolSchemaBrowser.model.js +130 -0
  786. package/dist/data/ai/ToolSchemaBrowser.model.js.map +1 -0
  787. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.cjs +57 -0
  788. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.cjs.map +1 -0
  789. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.d.ts +7 -0
  790. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.d.ts.map +1 -0
  791. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.js +57 -0
  792. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.js.map +1 -0
  793. package/dist/data/ai/ToolSchemaBrowser.sidebar.cjs +389 -0
  794. package/dist/data/ai/ToolSchemaBrowser.sidebar.cjs.map +1 -0
  795. package/dist/data/ai/ToolSchemaBrowser.sidebar.d.ts +23 -0
  796. package/dist/data/ai/ToolSchemaBrowser.sidebar.d.ts.map +1 -0
  797. package/dist/data/ai/ToolSchemaBrowser.sidebar.js +389 -0
  798. package/dist/data/ai/ToolSchemaBrowser.sidebar.js.map +1 -0
  799. package/dist/data/ai/agent-action-icons.cjs +14 -6
  800. package/dist/data/ai/agent-action-icons.cjs.map +1 -1
  801. package/dist/data/ai/agent-action-icons.d.ts.map +1 -1
  802. package/dist/data/ai/agent-action-icons.js +14 -6
  803. package/dist/data/ai/agent-action-icons.js.map +1 -1
  804. package/dist/data/ai/chat-window-context.d.ts +1 -1
  805. package/dist/data/ai/examples/sessions/claude-complete.cjs +17 -9
  806. package/dist/data/ai/examples/sessions/claude-complete.cjs.map +1 -1
  807. package/dist/data/ai/examples/sessions/claude-complete.d.ts.map +1 -1
  808. package/dist/data/ai/examples/sessions/claude-complete.js +17 -9
  809. package/dist/data/ai/examples/sessions/claude-complete.js.map +1 -1
  810. package/dist/data/ai/examples/sessions/claude.cjs +7 -4
  811. package/dist/data/ai/examples/sessions/claude.cjs.map +1 -1
  812. package/dist/data/ai/examples/sessions/claude.d.ts.map +1 -1
  813. package/dist/data/ai/examples/sessions/claude.js +7 -4
  814. package/dist/data/ai/examples/sessions/claude.js.map +1 -1
  815. package/dist/data/ai/examples/sessions/codex-complete.cjs +17 -10
  816. package/dist/data/ai/examples/sessions/codex-complete.cjs.map +1 -1
  817. package/dist/data/ai/examples/sessions/codex-complete.d.ts.map +1 -1
  818. package/dist/data/ai/examples/sessions/codex-complete.js +17 -10
  819. package/dist/data/ai/examples/sessions/codex-complete.js.map +1 -1
  820. package/dist/data/ai/examples/sessions/codex.cjs +7 -4
  821. package/dist/data/ai/examples/sessions/codex.cjs.map +1 -1
  822. package/dist/data/ai/examples/sessions/codex.d.ts.map +1 -1
  823. package/dist/data/ai/examples/sessions/codex.js +7 -4
  824. package/dist/data/ai/examples/sessions/codex.js.map +1 -1
  825. package/dist/data/ai/index.d.ts +6 -3
  826. package/dist/data/ai/index.d.ts.map +1 -1
  827. package/dist/data/ai/runtime-profile.cjs +93 -0
  828. package/dist/data/ai/runtime-profile.cjs.map +1 -0
  829. package/dist/data/ai/runtime-profile.d.ts +73 -0
  830. package/dist/data/ai/runtime-profile.d.ts.map +1 -0
  831. package/dist/data/ai/runtime-profile.js +93 -0
  832. package/dist/data/ai/runtime-profile.js.map +1 -0
  833. package/dist/data/ai/sandbox-kind-meta.cjs +38 -4
  834. package/dist/data/ai/sandbox-kind-meta.cjs.map +1 -1
  835. package/dist/data/ai/sandbox-kind-meta.d.ts +3 -0
  836. package/dist/data/ai/sandbox-kind-meta.d.ts.map +1 -1
  837. package/dist/data/ai/sandbox-kind-meta.js +38 -4
  838. package/dist/data/ai/sandbox-kind-meta.js.map +1 -1
  839. package/dist/data/ai/use-session-scroll.d.ts +1 -1
  840. package/dist/data/cache-browser/CacheBrowser.d.ts +1 -1
  841. package/dist/data/cache-browser/CacheBrowser.d.ts.map +1 -1
  842. package/dist/data/cache-browser/CacheDetailPanel.d.ts +1 -1
  843. package/dist/data/cache-browser/CacheDetailPanel.d.ts.map +1 -1
  844. package/dist/data/cache-browser/CacheStatsOverview.d.ts +1 -1
  845. package/dist/data/cache-browser/CacheStatsOverview.d.ts.map +1 -1
  846. package/dist/data/cache-browser/CacheTree.d.ts +2 -2
  847. package/dist/data/cache-browser/CacheTree.d.ts.map +1 -1
  848. package/dist/data/cache-browser/CacheValue.d.ts +1 -1
  849. package/dist/data/cache-browser/CacheValue.d.ts.map +1 -1
  850. package/dist/data/cache-browser/adapter.d.ts +1 -1
  851. package/dist/data/cells/CellFilterActions.d.ts +2 -2
  852. package/dist/data/cells/CellFilterActions.d.ts.map +1 -1
  853. package/dist/data/cells/EntityCell.d.ts +2 -2
  854. package/dist/data/cells/EntityCell.d.ts.map +1 -1
  855. package/dist/data/cells/StatusDot.d.ts +1 -1
  856. package/dist/data/cells/StatusDot.d.ts.map +1 -1
  857. package/dist/data/cells/TagList.d.ts +3 -3
  858. package/dist/data/cells/TagList.d.ts.map +1 -1
  859. package/dist/data/cells/Timestamp.d.ts +1 -1
  860. package/dist/data/cells/Timestamp.d.ts.map +1 -1
  861. package/dist/data/cells/tag-utils.d.ts +1 -1
  862. package/dist/data/chat/Attachment.d.ts +2 -2
  863. package/dist/data/chat/Attachment.d.ts.map +1 -1
  864. package/dist/data/chat/Chat.cjs +13 -3
  865. package/dist/data/chat/Chat.cjs.map +1 -1
  866. package/dist/data/chat/Chat.d.ts +1 -1
  867. package/dist/data/chat/Chat.d.ts.map +1 -1
  868. package/dist/data/chat/Chat.fixtures.cjs +3 -3
  869. package/dist/data/chat/Chat.fixtures.cjs.map +1 -1
  870. package/dist/data/chat/Chat.fixtures.js +3 -3
  871. package/dist/data/chat/Chat.fixtures.js.map +1 -1
  872. package/dist/data/chat/Chat.js +14 -4
  873. package/dist/data/chat/Chat.js.map +1 -1
  874. package/dist/data/chat/Chat.runtime.cjs +4 -9
  875. package/dist/data/chat/Chat.runtime.cjs.map +1 -1
  876. package/dist/data/chat/Chat.runtime.d.ts.map +1 -1
  877. package/dist/data/chat/Chat.runtime.js +4 -9
  878. package/dist/data/chat/Chat.runtime.js.map +1 -1
  879. package/dist/data/chat/ChatRuntimeToolbar.cjs +5 -5
  880. package/dist/data/chat/ChatRuntimeToolbar.cjs.map +1 -1
  881. package/dist/data/chat/ChatRuntimeToolbar.d.ts +1 -1
  882. package/dist/data/chat/ChatRuntimeToolbar.d.ts.map +1 -1
  883. package/dist/data/chat/ChatRuntimeToolbar.js +5 -5
  884. package/dist/data/chat/ChatRuntimeToolbar.js.map +1 -1
  885. package/dist/data/chat/ContextMeter.cjs +3 -3
  886. package/dist/data/chat/ContextMeter.cjs.map +1 -1
  887. package/dist/data/chat/ContextMeter.d.ts +3 -3
  888. package/dist/data/chat/ContextMeter.d.ts.map +1 -1
  889. package/dist/data/chat/ContextMeter.js +3 -3
  890. package/dist/data/chat/ContextMeter.js.map +1 -1
  891. package/dist/data/chat/Conversation.d.ts +1 -1
  892. package/dist/data/chat/Conversation.d.ts.map +1 -1
  893. package/dist/data/chat/Message.d.ts +1 -1
  894. package/dist/data/chat/Message.d.ts.map +1 -1
  895. package/dist/data/chat/MessageActions.d.ts +1 -1
  896. package/dist/data/chat/MessageActions.d.ts.map +1 -1
  897. package/dist/data/chat/ModelSelector.d.ts +5 -5
  898. package/dist/data/chat/ModelSelector.d.ts.map +1 -1
  899. package/dist/data/chat/PromptInput.d.ts +2 -2
  900. package/dist/data/chat/PromptInput.d.ts.map +1 -1
  901. package/dist/data/chat/Reasoning.d.ts +1 -1
  902. package/dist/data/chat/Reasoning.d.ts.map +1 -1
  903. package/dist/data/chat/Suggestion.d.ts +1 -1
  904. package/dist/data/chat/Suggestion.d.ts.map +1 -1
  905. package/dist/data/chat/ToolCall.d.ts +1 -1
  906. package/dist/data/chat/ToolCall.d.ts.map +1 -1
  907. package/dist/data/chat/approval.cjs.map +1 -1
  908. package/dist/data/chat/approval.d.ts +21 -1
  909. package/dist/data/chat/approval.d.ts.map +1 -1
  910. package/dist/data/chat/approval.js.map +1 -1
  911. package/dist/data/chat/clickyOperationsToTools.cjs +5 -0
  912. package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -1
  913. package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -1
  914. package/dist/data/chat/clickyOperationsToTools.js +5 -0
  915. package/dist/data/chat/clickyOperationsToTools.js.map +1 -1
  916. package/dist/data/chat/tool-render/ToolArgs.d.ts +1 -1
  917. package/dist/data/chat/tool-render/ToolParams.d.ts +1 -1
  918. package/dist/data/chat/tool-render/ToolValue.d.ts +1 -1
  919. package/dist/data/chat/tool-render/adapter.d.ts +1 -1
  920. package/dist/data/chat/tool-render/context.d.ts +1 -1
  921. package/dist/data/chat/tool-render/defaults.d.ts +1 -1
  922. package/dist/data/chat/tool-render/known-tool-views.d.ts +1 -1
  923. package/dist/data/chat/tool-render/summary.d.ts +1 -1
  924. package/dist/data/chat/types.cjs.map +1 -1
  925. package/dist/data/chat/types.d.ts +8 -6
  926. package/dist/data/chat/types.d.ts.map +1 -1
  927. package/dist/data/chat/types.js.map +1 -1
  928. package/dist/data/chat/usage-snapshot.cjs +21 -1
  929. package/dist/data/chat/usage-snapshot.cjs.map +1 -1
  930. package/dist/data/chat/usage-snapshot.d.ts +2 -0
  931. package/dist/data/chat/usage-snapshot.d.ts.map +1 -1
  932. package/dist/data/chat/usage-snapshot.js +22 -2
  933. package/dist/data/chat/usage-snapshot.js.map +1 -1
  934. package/dist/data/clicky-export/ClickyExportDialog.d.ts +1 -1
  935. package/dist/data/clicky-export/ClickyExportDialog.d.ts.map +1 -1
  936. package/dist/data/clicky-export/useClickyExport.d.ts +1 -1
  937. package/dist/data/code-block-actions.d.ts +1 -1
  938. package/dist/data/code-block-actions.d.ts.map +1 -1
  939. package/dist/data/data-table-server-filters.d.ts +1 -1
  940. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts +2 -2
  941. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts.map +1 -1
  942. package/dist/data/diagnostics/DiagnosticsTree.d.ts +1 -1
  943. package/dist/data/diagnostics/DiagnosticsTree.d.ts.map +1 -1
  944. package/dist/data/diagnostics/ErrorDetails.d.ts +4 -4
  945. package/dist/data/diagnostics/ErrorDetails.d.ts.map +1 -1
  946. package/dist/data/diagnostics/FrameSourceWindow.d.ts +1 -1
  947. package/dist/data/diagnostics/FrameSourceWindow.d.ts.map +1 -1
  948. package/dist/data/diagnostics/GoroutineCard.d.ts +1 -1
  949. package/dist/data/diagnostics/GoroutineCard.d.ts.map +1 -1
  950. package/dist/data/diagnostics/JvmStackTrace.d.ts +1 -1
  951. package/dist/data/diagnostics/JvmStackTrace.d.ts.map +1 -1
  952. package/dist/data/diagnostics/RenderedStackTrace.d.ts +1 -1
  953. package/dist/data/diagnostics/RenderedStackTrace.d.ts.map +1 -1
  954. package/dist/data/diagnostics/StackFrameRow.d.ts +2 -2
  955. package/dist/data/diagnostics/StackFrameRow.d.ts.map +1 -1
  956. package/dist/data/diagnostics/ThreadCard.d.ts +1 -1
  957. package/dist/data/diagnostics/ThreadCard.d.ts.map +1 -1
  958. package/dist/data/git/GitChangeList.d.ts +5 -5
  959. package/dist/data/git/GitChangeList.d.ts.map +1 -1
  960. package/dist/data/har/HarPanel.d.ts +1 -1
  961. package/dist/data/har/HarPanel.d.ts.map +1 -1
  962. package/dist/data/icon-fallback.d.ts +1 -1
  963. package/dist/data/query-browser/QueryBrowser.d.ts +1 -1
  964. package/dist/data/query-browser/QueryBrowser.d.ts.map +1 -1
  965. package/dist/data/query-browser/QueryBrowser.types.d.ts +1 -1
  966. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.d.ts +1 -1
  967. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.d.ts.map +1 -1
  968. package/dist/data/query-browser/QueryBrowserResults.d.ts +1 -1
  969. package/dist/data/query-browser/QueryBrowserResults.d.ts.map +1 -1
  970. package/dist/data/runtime/ProviderStatusPanel.d.ts +1 -1
  971. package/dist/data/runtime/ProviderStatusPanel.d.ts.map +1 -1
  972. package/dist/data/runtime/RuntimeBar.cjs +29 -16
  973. package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
  974. package/dist/data/runtime/RuntimeBar.d.ts +10 -2
  975. package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
  976. package/dist/data/runtime/RuntimeBar.js +31 -18
  977. package/dist/data/runtime/RuntimeBar.js.map +1 -1
  978. package/dist/data/runtime/RuntimeBar.model.cjs +10 -20
  979. package/dist/data/runtime/RuntimeBar.model.cjs.map +1 -1
  980. package/dist/data/runtime/RuntimeBar.model.d.ts +2 -2
  981. package/dist/data/runtime/RuntimeBar.model.d.ts.map +1 -1
  982. package/dist/data/runtime/RuntimeBar.model.js +11 -21
  983. package/dist/data/runtime/RuntimeBar.model.js.map +1 -1
  984. package/dist/data/runtime/RuntimeBarCombo.cjs +11 -6
  985. package/dist/data/runtime/RuntimeBarCombo.cjs.map +1 -1
  986. package/dist/data/runtime/RuntimeBarCombo.d.ts +3 -1
  987. package/dist/data/runtime/RuntimeBarCombo.d.ts.map +1 -1
  988. package/dist/data/runtime/RuntimeBarCombo.js +11 -6
  989. package/dist/data/runtime/RuntimeBarCombo.js.map +1 -1
  990. package/dist/data/runtime/RuntimeBarSegments.cjs +7 -5
  991. package/dist/data/runtime/RuntimeBarSegments.cjs.map +1 -1
  992. package/dist/data/runtime/RuntimeBarSegments.d.ts +4 -2
  993. package/dist/data/runtime/RuntimeBarSegments.d.ts.map +1 -1
  994. package/dist/data/runtime/RuntimeBarSegments.js +7 -5
  995. package/dist/data/runtime/RuntimeBarSegments.js.map +1 -1
  996. package/dist/data/runtime/model-capabilities.cjs +0 -3
  997. package/dist/data/runtime/model-capabilities.cjs.map +1 -1
  998. package/dist/data/runtime/model-capabilities.d.ts +0 -1
  999. package/dist/data/runtime/model-capabilities.d.ts.map +1 -1
  1000. package/dist/data/runtime/model-capabilities.js +0 -3
  1001. package/dist/data/runtime/model-capabilities.js.map +1 -1
  1002. package/dist/data/runtime/provider-status.cjs +1 -1
  1003. package/dist/data/runtime/provider-status.cjs.map +1 -1
  1004. package/dist/data/runtime/provider-status.js +1 -1
  1005. package/dist/data/runtime/provider-status.js.map +1 -1
  1006. package/dist/data/runtime/runtime-field-support.cjs +63 -0
  1007. package/dist/data/runtime/runtime-field-support.cjs.map +1 -0
  1008. package/dist/data/runtime/runtime-field-support.d.ts +13 -0
  1009. package/dist/data/runtime/runtime-field-support.d.ts.map +1 -0
  1010. package/dist/data/runtime/runtime-field-support.js +63 -0
  1011. package/dist/data/runtime/runtime-field-support.js.map +1 -0
  1012. package/dist/data/runtime/runtime-mode.cjs +158 -116
  1013. package/dist/data/runtime/runtime-mode.cjs.map +1 -1
  1014. package/dist/data/runtime/runtime-mode.d.ts +57 -19
  1015. package/dist/data/runtime/runtime-mode.d.ts.map +1 -1
  1016. package/dist/data/runtime/runtime-mode.js +158 -116
  1017. package/dist/data/runtime/runtime-mode.js.map +1 -1
  1018. package/dist/data/selectionActionSplit.cjs +33 -0
  1019. package/dist/data/selectionActionSplit.cjs.map +1 -0
  1020. package/dist/data/selectionActionSplit.d.ts +36 -0
  1021. package/dist/data/selectionActionSplit.d.ts.map +1 -0
  1022. package/dist/data/selectionActionSplit.js +33 -0
  1023. package/dist/data/selectionActionSplit.js.map +1 -0
  1024. package/dist/data/task-copy.cjs +76 -0
  1025. package/dist/data/task-copy.cjs.map +1 -0
  1026. package/dist/data/task-copy.d.ts +12 -0
  1027. package/dist/data/task-copy.d.ts.map +1 -0
  1028. package/dist/data/task-copy.js +76 -0
  1029. package/dist/data/task-copy.js.map +1 -0
  1030. package/dist/data/test-runner/TestDetailPanel.d.ts +1 -1
  1031. package/dist/data/test-runner/TestDetailPanel.d.ts.map +1 -1
  1032. package/dist/data/test-runner/TestFailureDetail.d.ts +3 -3
  1033. package/dist/data/test-runner/TestFailureDetail.d.ts.map +1 -1
  1034. package/dist/data/test-runner/TestFilterBar.d.ts +1 -1
  1035. package/dist/data/test-runner/TestFilterBar.d.ts.map +1 -1
  1036. package/dist/data/test-runner/TestRunSummary.d.ts +1 -1
  1037. package/dist/data/test-runner/TestRunSummary.d.ts.map +1 -1
  1038. package/dist/data/test-runner/TestRunner.d.ts +2 -2
  1039. package/dist/data/test-runner/TestRunner.d.ts.map +1 -1
  1040. package/dist/data/test-runner/TestTree.d.ts +1 -1
  1041. package/dist/data/test-runner/TestTree.d.ts.map +1 -1
  1042. package/dist/data/test-runner/TestTreeNode.cjs +16 -11
  1043. package/dist/data/test-runner/TestTreeNode.cjs.map +1 -1
  1044. package/dist/data/test-runner/TestTreeNode.d.ts +1 -1
  1045. package/dist/data/test-runner/TestTreeNode.d.ts.map +1 -1
  1046. package/dist/data/test-runner/TestTreeNode.js +16 -11
  1047. package/dist/data/test-runner/TestTreeNode.js.map +1 -1
  1048. package/dist/data/test-runner/adapter.d.ts +1 -1
  1049. package/dist/data/test-runner/context.d.ts +1 -1
  1050. package/dist/data/version-info.cjs +3 -3
  1051. package/dist/data/version-info.js +3 -3
  1052. package/dist/data.cjs +34 -0
  1053. package/dist/data.cjs.map +1 -1
  1054. package/dist/data.d.ts +4 -1
  1055. package/dist/data.d.ts.map +1 -1
  1056. package/dist/data.js +34 -0
  1057. package/dist/data.js.map +1 -1
  1058. package/dist/devtools/DebugConsole.d.ts +1 -1
  1059. package/dist/devtools/DebugConsole.d.ts.map +1 -1
  1060. package/dist/devtools/DebugConsoleButton.d.ts +1 -1
  1061. package/dist/devtools/DebugConsoleButton.d.ts.map +1 -1
  1062. package/dist/devtools/DebugConsoleDock.d.ts +1 -1
  1063. package/dist/devtools/DebugConsoleDock.d.ts.map +1 -1
  1064. package/dist/devtools/ExecutionDetail.d.ts +1 -1
  1065. package/dist/devtools/ExecutionDetail.d.ts.map +1 -1
  1066. package/dist/devtools/tabs/ConsoleTab.d.ts +1 -1
  1067. package/dist/devtools/tabs/ConsoleTab.d.ts.map +1 -1
  1068. package/dist/devtools/tabs/InspectionCaches.d.ts +1 -1
  1069. package/dist/devtools/tabs/InspectionCaches.d.ts.map +1 -1
  1070. package/dist/devtools/tabs/InspectionTab.d.ts +1 -1
  1071. package/dist/devtools/tabs/InspectionTab.d.ts.map +1 -1
  1072. package/dist/devtools/tabs/NetworkTab.d.ts +1 -1
  1073. package/dist/devtools/tabs/NetworkTab.d.ts.map +1 -1
  1074. package/dist/devtools/tabs/QueriesTab.d.ts +1 -1
  1075. package/dist/devtools/tabs/QueriesTab.d.ts.map +1 -1
  1076. package/dist/hooks/density-provider.d.ts +3 -3
  1077. package/dist/hooks/density-provider.d.ts.map +1 -1
  1078. package/dist/hooks/theme-provider.d.ts +2 -2
  1079. package/dist/hooks/theme-provider.d.ts.map +1 -1
  1080. package/dist/hooks/use-density.d.ts +1 -1
  1081. package/dist/hooks/use-task-run.cjs +24 -17
  1082. package/dist/hooks/use-task-run.cjs.map +1 -1
  1083. package/dist/hooks/use-task-run.d.ts +3 -1
  1084. package/dist/hooks/use-task-run.d.ts.map +1 -1
  1085. package/dist/hooks/use-task-run.js +25 -18
  1086. package/dist/hooks/use-task-run.js.map +1 -1
  1087. package/dist/hooks/use-theme.d.ts +1 -1
  1088. package/dist/icons/components/UiCalendarCheck.cjs +15 -0
  1089. package/dist/icons/components/UiCalendarCheck.cjs.map +1 -0
  1090. package/dist/icons/components/UiCalendarCheck.d.ts +15 -0
  1091. package/dist/icons/components/UiCalendarCheck.d.ts.map +1 -0
  1092. package/dist/icons/components/UiCalendarCheck.js +15 -0
  1093. package/dist/icons/components/UiCalendarCheck.js.map +1 -0
  1094. package/dist/icons/components/UiChartLineUp.cjs +15 -0
  1095. package/dist/icons/components/UiChartLineUp.cjs.map +1 -0
  1096. package/dist/icons/components/UiChartLineUp.d.ts +15 -0
  1097. package/dist/icons/components/UiChartLineUp.d.ts.map +1 -0
  1098. package/dist/icons/components/UiChartLineUp.js +15 -0
  1099. package/dist/icons/components/UiChartLineUp.js.map +1 -0
  1100. package/dist/icons/components/UiClockCountdown.cjs +15 -0
  1101. package/dist/icons/components/UiClockCountdown.cjs.map +1 -0
  1102. package/dist/icons/components/UiClockCountdown.d.ts +15 -0
  1103. package/dist/icons/components/UiClockCountdown.d.ts.map +1 -0
  1104. package/dist/icons/components/UiClockCountdown.js +15 -0
  1105. package/dist/icons/components/UiClockCountdown.js.map +1 -0
  1106. package/dist/icons/components/UiFactory.cjs +15 -0
  1107. package/dist/icons/components/UiFactory.cjs.map +1 -0
  1108. package/dist/icons/components/UiFactory.d.ts +15 -0
  1109. package/dist/icons/components/UiFactory.d.ts.map +1 -0
  1110. package/dist/icons/components/UiFactory.js +15 -0
  1111. package/dist/icons/components/UiFactory.js.map +1 -0
  1112. package/dist/icons/components/UiHandCoins.cjs +15 -0
  1113. package/dist/icons/components/UiHandCoins.cjs.map +1 -0
  1114. package/dist/icons/components/UiHandCoins.d.ts +15 -0
  1115. package/dist/icons/components/UiHandCoins.d.ts.map +1 -0
  1116. package/dist/icons/components/UiHandCoins.js +15 -0
  1117. package/dist/icons/components/UiHandCoins.js.map +1 -0
  1118. package/dist/icons/components/UiInvoice.cjs +15 -0
  1119. package/dist/icons/components/UiInvoice.cjs.map +1 -0
  1120. package/dist/icons/components/UiInvoice.d.ts +15 -0
  1121. package/dist/icons/components/UiInvoice.d.ts.map +1 -0
  1122. package/dist/icons/components/UiInvoice.js +15 -0
  1123. package/dist/icons/components/UiInvoice.js.map +1 -0
  1124. package/dist/icons/components/UiTax.cjs +15 -0
  1125. package/dist/icons/components/UiTax.cjs.map +1 -0
  1126. package/dist/icons/components/UiTax.d.ts +15 -0
  1127. package/dist/icons/components/UiTax.d.ts.map +1 -0
  1128. package/dist/icons/components/UiTax.js +15 -0
  1129. package/dist/icons/components/UiTax.js.map +1 -0
  1130. package/dist/icons/index.d.ts +14 -0
  1131. package/dist/icons/index.d.ts.map +1 -1
  1132. package/dist/icons/registry.cjs +14 -0
  1133. package/dist/icons/registry.cjs.map +1 -1
  1134. package/dist/icons/registry.d.ts +1 -1
  1135. package/dist/icons/registry.d.ts.map +1 -1
  1136. package/dist/icons/registry.js +14 -0
  1137. package/dist/icons/registry.js.map +1 -1
  1138. package/dist/icons/types.d.ts +1 -1
  1139. package/dist/icons.cjs +21 -0
  1140. package/dist/icons.cjs.map +1 -1
  1141. package/dist/icons.js +21 -0
  1142. package/dist/icons.js.map +1 -1
  1143. package/dist/index.cjs +43 -0
  1144. package/dist/index.cjs.map +1 -1
  1145. package/dist/index.js +44 -1
  1146. package/dist/index.js.map +1 -1
  1147. package/dist/layout/AppShell.cjs +17 -3
  1148. package/dist/layout/AppShell.cjs.map +1 -1
  1149. package/dist/layout/AppShell.d.ts +10 -2
  1150. package/dist/layout/AppShell.d.ts.map +1 -1
  1151. package/dist/layout/AppShell.debug.d.ts +1 -1
  1152. package/dist/layout/AppShell.debug.d.ts.map +1 -1
  1153. package/dist/layout/AppShell.js +17 -3
  1154. package/dist/layout/AppShell.js.map +1 -1
  1155. package/dist/layout/AppShell.nav.cjs +133 -76
  1156. package/dist/layout/AppShell.nav.cjs.map +1 -1
  1157. package/dist/layout/AppShell.nav.d.ts +1 -1
  1158. package/dist/layout/AppShell.nav.d.ts.map +1 -1
  1159. package/dist/layout/AppShell.nav.drag.cjs +86 -0
  1160. package/dist/layout/AppShell.nav.drag.cjs.map +1 -0
  1161. package/dist/layout/AppShell.nav.drag.d.ts +52 -0
  1162. package/dist/layout/AppShell.nav.drag.d.ts.map +1 -0
  1163. package/dist/layout/AppShell.nav.drag.js +86 -0
  1164. package/dist/layout/AppShell.nav.drag.js.map +1 -0
  1165. package/dist/layout/AppShell.nav.js +133 -76
  1166. package/dist/layout/AppShell.nav.js.map +1 -1
  1167. package/dist/layout/AppSidebar.d.ts +3 -3
  1168. package/dist/layout/AppSidebar.d.ts.map +1 -1
  1169. package/dist/layout/Panel.d.ts +2 -2
  1170. package/dist/layout/Panel.d.ts.map +1 -1
  1171. package/dist/layout/PanelFrame.d.ts +2 -2
  1172. package/dist/layout/PanelFrame.d.ts.map +1 -1
  1173. package/dist/layout/Section.d.ts +3 -3
  1174. package/dist/layout/Section.d.ts.map +1 -1
  1175. package/dist/layout/SplitPane.d.ts +2 -2
  1176. package/dist/layout/SplitPane.d.ts.map +1 -1
  1177. package/dist/layout/Tabs.d.ts +2 -2
  1178. package/dist/layout/Tabs.d.ts.map +1 -1
  1179. package/dist/layout/Workspace.d.ts +2 -2
  1180. package/dist/layout/Workspace.d.ts.map +1 -1
  1181. package/dist/layout/Workspace.model.d.ts +1 -1
  1182. package/dist/layout/Workspace.regions.d.ts +2 -2
  1183. package/dist/layout/Workspace.regions.d.ts.map +1 -1
  1184. package/dist/{components/combobox-utils.cjs → lib/combobox-values.cjs} +1 -5
  1185. package/dist/lib/combobox-values.cjs.map +1 -0
  1186. package/dist/{components/combobox-utils.d.ts → lib/combobox-values.d.ts} +3 -13
  1187. package/dist/lib/combobox-values.d.ts.map +1 -0
  1188. package/dist/{components/combobox-utils.js → lib/combobox-values.js} +1 -5
  1189. package/dist/lib/combobox-values.js.map +1 -0
  1190. package/dist/lib/combobox.cjs +93 -0
  1191. package/dist/lib/combobox.cjs.map +1 -0
  1192. package/dist/lib/combobox.d.ts +20 -0
  1193. package/dist/lib/combobox.d.ts.map +1 -0
  1194. package/dist/lib/combobox.js +93 -0
  1195. package/dist/lib/combobox.js.map +1 -0
  1196. package/dist/monaco/MonacoEditor.d.ts +1 -1
  1197. package/dist/monaco/MonacoEditor.d.ts.map +1 -1
  1198. package/dist/monaco/MonacoProvider.d.ts +1 -1
  1199. package/dist/monaco/MonacoProvider.d.ts.map +1 -1
  1200. package/dist/monaco/MonacoSchemaEditor.cjs +4 -4
  1201. package/dist/monaco/MonacoSchemaEditor.cjs.map +1 -1
  1202. package/dist/monaco/MonacoSchemaEditor.d.ts +1 -1
  1203. package/dist/monaco/MonacoSchemaEditor.d.ts.map +1 -1
  1204. package/dist/monaco/MonacoSchemaEditor.js +4 -4
  1205. package/dist/monaco/MonacoSchemaEditor.js.map +1 -1
  1206. package/dist/monaco/types.d.ts +1 -1
  1207. package/dist/monaco/use-monaco-worker.d.ts +1 -1
  1208. package/dist/overlay/CellActions.d.ts +3 -3
  1209. package/dist/overlay/CellActions.d.ts.map +1 -1
  1210. package/dist/overlay/CommandPalette.d.ts +2 -2
  1211. package/dist/overlay/CommandPalette.model.d.ts +1 -1
  1212. package/dist/overlay/CommandPaletteList.cjs.map +1 -1
  1213. package/dist/overlay/CommandPaletteList.d.ts +3 -3
  1214. package/dist/overlay/CommandPaletteList.d.ts.map +1 -1
  1215. package/dist/overlay/CommandPaletteList.js.map +1 -1
  1216. package/dist/overlay/CommandPaletteTrigger.d.ts +1 -1
  1217. package/dist/overlay/CommandPaletteTrigger.d.ts.map +1 -1
  1218. package/dist/overlay/ContextMenu.d.ts +1 -1
  1219. package/dist/overlay/ContextMenu.d.ts.map +1 -1
  1220. package/dist/overlay/DropdownMenu.cjs +46 -35
  1221. package/dist/overlay/DropdownMenu.cjs.map +1 -1
  1222. package/dist/overlay/DropdownMenu.d.ts +2 -2
  1223. package/dist/overlay/DropdownMenu.d.ts.map +1 -1
  1224. package/dist/overlay/DropdownMenu.js +46 -35
  1225. package/dist/overlay/DropdownMenu.js.map +1 -1
  1226. package/dist/overlay/DropdownMenuSubmenu.d.ts +1 -1
  1227. package/dist/overlay/DropdownMenuSubmenu.d.ts.map +1 -1
  1228. package/dist/overlay/HoverCard.d.ts +2 -2
  1229. package/dist/overlay/HoverCard.d.ts.map +1 -1
  1230. package/dist/overlay/Modal.cjs +105 -18
  1231. package/dist/overlay/Modal.cjs.map +1 -1
  1232. package/dist/overlay/Modal.d.ts +2 -2
  1233. package/dist/overlay/Modal.d.ts.map +1 -1
  1234. package/dist/overlay/Modal.js +105 -18
  1235. package/dist/overlay/Modal.js.map +1 -1
  1236. package/dist/overlay/Toast.d.ts +2 -2
  1237. package/dist/overlay/Toast.d.ts.map +1 -1
  1238. package/dist/overlay/Tour.d.ts +1 -1
  1239. package/dist/overlay/Tour.d.ts.map +1 -1
  1240. package/dist/overlay/TourCard.d.ts +2 -2
  1241. package/dist/overlay/TourCard.d.ts.map +1 -1
  1242. package/dist/overlay/TourProvider.d.ts +2 -2
  1243. package/dist/overlay/TourProvider.d.ts.map +1 -1
  1244. package/dist/overlay/TourSpotlight.d.ts +1 -1
  1245. package/dist/overlay/TourSpotlight.d.ts.map +1 -1
  1246. package/dist/overlay/dropdownMenuContext.d.ts +1 -1
  1247. package/dist/overlay/toast-context.d.ts +2 -2
  1248. package/dist/overlay/tour-context.d.ts +1 -1
  1249. package/dist/overlay/tour-types.d.ts +1 -1
  1250. package/dist/profiles/cel/celEditor.d.ts +4 -4
  1251. package/dist/profiles/cel/celEditor.d.ts.map +1 -1
  1252. package/dist/profiles/connections/catalogTree.d.ts +1 -1
  1253. package/dist/profiles/connections/catalogTree.d.ts.map +1 -1
  1254. package/dist/profiles/connections/connectionBrowserModel.d.ts +1 -1
  1255. package/dist/profiles/connections/connectionQueryWorkspace.d.ts +2 -2
  1256. package/dist/profiles/connections/connectionQueryWorkspace.d.ts.map +1 -1
  1257. package/dist/profiles/connections/inspectionStatus.d.ts +1 -1
  1258. package/dist/profiles/connections/inspectionStatus.d.ts.map +1 -1
  1259. package/dist/profiles/editor/profileBuilder.d.ts +3 -3
  1260. package/dist/profiles/editor/profileBuilder.d.ts.map +1 -1
  1261. package/dist/profiles/editor/profileBuilderWorkspace.d.ts +1 -1
  1262. package/dist/profiles/editor/profileBuilderWorkspace.d.ts.map +1 -1
  1263. package/dist/profiles/editor/profileEditor.d.ts +1 -1
  1264. package/dist/profiles/editor/profileEditor.d.ts.map +1 -1
  1265. package/dist/profiles/editor/profileEditorPreview.d.ts +1 -1
  1266. package/dist/profiles/editor/profileEditorPreview.d.ts.map +1 -1
  1267. package/dist/profiles/editor/profileEditorRail.d.ts +1 -1
  1268. package/dist/profiles/editor/profileEditorRail.d.ts.map +1 -1
  1269. package/dist/profiles/editor/profileEditorRaw.d.ts +1 -1
  1270. package/dist/profiles/editor/profileEditorRaw.d.ts.map +1 -1
  1271. package/dist/profiles/editor/profileEditorSections.d.ts +3 -3
  1272. package/dist/profiles/editor/profileEditorSections.d.ts.map +1 -1
  1273. package/dist/profiles/elasticsearch/esParamMappingPill.d.ts +1 -1
  1274. package/dist/profiles/elasticsearch/esParamMappingPill.d.ts.map +1 -1
  1275. package/dist/profiles/elasticsearch/esParamOperandExtension.d.ts +1 -1
  1276. package/dist/profiles/elasticsearch/esQueryBuilder.d.ts +2 -2
  1277. package/dist/profiles/elasticsearch/esQueryBuilder.d.ts.map +1 -1
  1278. package/dist/profiles/elasticsearch/esQueryClauseGroup.d.ts +1 -1
  1279. package/dist/profiles/elasticsearch/esQueryClauseGroup.d.ts.map +1 -1
  1280. package/dist/profiles/elasticsearch/esQueryConditionRow.d.ts +1 -1
  1281. package/dist/profiles/elasticsearch/esQueryConditionRow.d.ts.map +1 -1
  1282. package/dist/profiles/elasticsearch/esQueryOperandEditors.d.ts +2 -2
  1283. package/dist/profiles/elasticsearch/esQueryOperandEditors.d.ts.map +1 -1
  1284. package/dist/profiles/elasticsearch/esQueryOutputEditor.d.ts +1 -1
  1285. package/dist/profiles/elasticsearch/esQueryOutputEditor.d.ts.map +1 -1
  1286. package/dist/profiles/elasticsearch/esQueryPreview.d.ts +1 -1
  1287. package/dist/profiles/elasticsearch/esQueryPreview.d.ts.map +1 -1
  1288. package/dist/profiles/elasticsearch/esQuerySortEditor.d.ts +1 -1
  1289. package/dist/profiles/elasticsearch/esQuerySortEditor.d.ts.map +1 -1
  1290. package/dist/profiles/elasticsearch/esValueCombobox.d.ts +2 -2
  1291. package/dist/profiles/elasticsearch/esValueCombobox.d.ts.map +1 -1
  1292. package/dist/profiles/fields/profileColumnPicker.d.ts +1 -1
  1293. package/dist/profiles/fields/profileColumnPicker.d.ts.map +1 -1
  1294. package/dist/profiles/fields/profileFieldControls.d.ts +3 -3
  1295. package/dist/profiles/fields/profileFieldControls.d.ts.map +1 -1
  1296. package/dist/profiles/fields/profileFieldEditor.d.ts +3 -3
  1297. package/dist/profiles/fields/profileFieldEditor.d.ts.map +1 -1
  1298. package/dist/profiles/fields/profileFieldFilterEditor.d.ts +1 -1
  1299. package/dist/profiles/fields/profileFieldFilterEditor.d.ts.map +1 -1
  1300. package/dist/profiles/fields/profileFieldIcons.d.ts +1 -1
  1301. package/dist/profiles/fields/profileFieldList.d.ts +2 -2
  1302. package/dist/profiles/fields/profileFieldList.d.ts.map +1 -1
  1303. package/dist/profiles/fields/profileFieldManager.d.ts +1 -1
  1304. package/dist/profiles/fields/profileFieldManager.d.ts.map +1 -1
  1305. package/dist/profiles/fields/profileFieldState.d.ts +1 -1
  1306. package/dist/profiles/processor/processorPipeline.d.ts +1 -1
  1307. package/dist/profiles/processor/processorPipeline.d.ts.map +1 -1
  1308. package/dist/profiles/processor/processorPipelineEditor.d.ts +1 -1
  1309. package/dist/profiles/processor/processorPipelineEditor.d.ts.map +1 -1
  1310. package/dist/profiles/processor/processorPreviewTable.d.ts +1 -1
  1311. package/dist/profiles/processor/processorPreviewTable.d.ts.map +1 -1
  1312. package/dist/profiles/query/jsonPathSample.d.ts +1 -1
  1313. package/dist/profiles/query/jsonPathSampleRow.d.ts +2 -2
  1314. package/dist/profiles/query/jsonPathSampleRow.d.ts.map +1 -1
  1315. package/dist/profiles/query/kubernetesWorkloadTargetPicker.d.ts +1 -1
  1316. package/dist/profiles/query/kubernetesWorkloadTargetPicker.d.ts.map +1 -1
  1317. package/dist/profiles/query/prometheusResults.d.ts +2 -2
  1318. package/dist/profiles/query/prometheusResults.d.ts.map +1 -1
  1319. package/dist/profiles/query/queryRowLimits.d.ts +1 -1
  1320. package/dist/profiles/query/queryRowLimits.d.ts.map +1 -1
  1321. package/dist/profiles/query/queryTargetPicker.d.ts +1 -1
  1322. package/dist/profiles/query/queryTargetPicker.d.ts.map +1 -1
  1323. package/dist/profiles/wizard/profileWizard.d.ts +1 -1
  1324. package/dist/profiles/wizard/profileWizard.d.ts.map +1 -1
  1325. package/dist/profiles/wizard/profileWizardQueryStep.d.ts +1 -1
  1326. package/dist/profiles/wizard/profileWizardQueryStep.d.ts.map +1 -1
  1327. package/dist/profiles/wizard/profileWizardSteps.d.ts +4 -4
  1328. package/dist/profiles/wizard/profileWizardSteps.d.ts.map +1 -1
  1329. package/dist/rpc/ChatLayer.d.ts +1 -1
  1330. package/dist/rpc/ChatLayer.d.ts.map +1 -1
  1331. package/dist/rpc/CommandForm.d.ts +1 -1
  1332. package/dist/rpc/CommandForm.d.ts.map +1 -1
  1333. package/dist/rpc/CommandOutput.d.ts +1 -1
  1334. package/dist/rpc/CommandOutput.d.ts.map +1 -1
  1335. package/dist/rpc/EndpointList.d.ts +2 -2
  1336. package/dist/rpc/EndpointList.d.ts.map +1 -1
  1337. package/dist/rpc/EntityExplorerApp.d.ts +2 -2
  1338. package/dist/rpc/EntityExplorerApp.d.ts.map +1 -1
  1339. package/dist/rpc/ExecutionResult.d.ts +1 -1
  1340. package/dist/rpc/ExecutionResult.d.ts.map +1 -1
  1341. package/dist/rpc/FilterForm.cjs +26 -11
  1342. package/dist/rpc/FilterForm.cjs.map +1 -1
  1343. package/dist/rpc/FilterForm.d.ts +4 -1
  1344. package/dist/rpc/FilterForm.d.ts.map +1 -1
  1345. package/dist/rpc/FilterForm.js +26 -11
  1346. package/dist/rpc/FilterForm.js.map +1 -1
  1347. package/dist/rpc/FilterFormFields.cjs +3 -2
  1348. package/dist/rpc/FilterFormFields.cjs.map +1 -1
  1349. package/dist/rpc/FilterFormFields.d.ts +2 -1
  1350. package/dist/rpc/FilterFormFields.d.ts.map +1 -1
  1351. package/dist/rpc/FilterFormFields.js +3 -2
  1352. package/dist/rpc/FilterFormFields.js.map +1 -1
  1353. package/dist/rpc/InlineError.d.ts +1 -1
  1354. package/dist/rpc/InlineError.d.ts.map +1 -1
  1355. package/dist/rpc/OperationActionBar.cjs +81 -17
  1356. package/dist/rpc/OperationActionBar.cjs.map +1 -1
  1357. package/dist/rpc/OperationActionBar.d.ts +8 -3
  1358. package/dist/rpc/OperationActionBar.d.ts.map +1 -1
  1359. package/dist/rpc/OperationActionBar.js +82 -18
  1360. package/dist/rpc/OperationActionBar.js.map +1 -1
  1361. package/dist/rpc/OperationActionDialog.d.ts +1 -1
  1362. package/dist/rpc/OperationActionDialog.d.ts.map +1 -1
  1363. package/dist/rpc/OperationCatalog.cjs +129 -76
  1364. package/dist/rpc/OperationCatalog.cjs.map +1 -1
  1365. package/dist/rpc/OperationCatalog.d.ts +6 -2
  1366. package/dist/rpc/OperationCatalog.d.ts.map +1 -1
  1367. package/dist/rpc/OperationCatalog.js +130 -77
  1368. package/dist/rpc/OperationCatalog.js.map +1 -1
  1369. package/dist/rpc/OperationCatalogActions.cjs +100 -0
  1370. package/dist/rpc/OperationCatalogActions.cjs.map +1 -0
  1371. package/dist/rpc/OperationCatalogActions.d.ts +22 -0
  1372. package/dist/rpc/OperationCatalogActions.d.ts.map +1 -0
  1373. package/dist/rpc/OperationCatalogActions.js +100 -0
  1374. package/dist/rpc/OperationCatalogActions.js.map +1 -0
  1375. package/dist/rpc/OperationCommandPage.d.ts +1 -1
  1376. package/dist/rpc/OperationCommandPage.d.ts.map +1 -1
  1377. package/dist/rpc/OperationEntityContextPicker.cjs +129 -116
  1378. package/dist/rpc/OperationEntityContextPicker.cjs.map +1 -1
  1379. package/dist/rpc/OperationEntityContextPicker.d.ts +18 -1
  1380. package/dist/rpc/OperationEntityContextPicker.d.ts.map +1 -1
  1381. package/dist/rpc/OperationEntityContextPicker.js +130 -117
  1382. package/dist/rpc/OperationEntityContextPicker.js.map +1 -1
  1383. package/dist/rpc/OperationEntityPage.d.ts +2 -2
  1384. package/dist/rpc/OperationEntityPage.d.ts.map +1 -1
  1385. package/dist/rpc/OperationResultView.cjs +7 -4
  1386. package/dist/rpc/OperationResultView.cjs.map +1 -1
  1387. package/dist/rpc/OperationResultView.d.ts +5 -3
  1388. package/dist/rpc/OperationResultView.d.ts.map +1 -1
  1389. package/dist/rpc/OperationResultView.js +7 -4
  1390. package/dist/rpc/OperationResultView.js.map +1 -1
  1391. package/dist/rpc/RouterProvider.d.ts +2 -2
  1392. package/dist/rpc/RouterProvider.d.ts.map +1 -1
  1393. package/dist/rpc/SchemaActionForm.d.ts +2 -2
  1394. package/dist/rpc/SchemaActionForm.d.ts.map +1 -1
  1395. package/dist/rpc/actionIconMap.cjs +11 -0
  1396. package/dist/rpc/actionIconMap.cjs.map +1 -0
  1397. package/dist/rpc/actionIconMap.d.ts +3 -0
  1398. package/dist/rpc/actionIconMap.d.ts.map +1 -0
  1399. package/dist/rpc/actionIconMap.js +11 -0
  1400. package/dist/rpc/actionIconMap.js.map +1 -0
  1401. package/dist/rpc/formMetadata.d.ts +1 -1
  1402. package/dist/rpc/operationCatalogUrl.cjs +28 -0
  1403. package/dist/rpc/operationCatalogUrl.cjs.map +1 -0
  1404. package/dist/rpc/operationCatalogUrl.d.ts +3 -0
  1405. package/dist/rpc/operationCatalogUrl.d.ts.map +1 -0
  1406. package/dist/rpc/operationCatalogUrl.js +28 -0
  1407. package/dist/rpc/operationCatalogUrl.js.map +1 -0
  1408. package/dist/rpc/operationErrorDiagnostics.d.ts +1 -1
  1409. package/dist/rpc/operationErrorDiagnostics.d.ts.map +1 -1
  1410. package/dist/rpc/router.d.ts +1 -1
  1411. package/dist/rpc/rowNavigation.cjs +4 -3
  1412. package/dist/rpc/rowNavigation.cjs.map +1 -1
  1413. package/dist/rpc/rowNavigation.d.ts +1 -1
  1414. package/dist/rpc/rowNavigation.d.ts.map +1 -1
  1415. package/dist/rpc/rowNavigation.js +4 -3
  1416. package/dist/rpc/rowNavigation.js.map +1 -1
  1417. package/dist/rpc/rpc-story.fixtures.d.ts +1 -1
  1418. package/dist/rpc/types.cjs.map +1 -1
  1419. package/dist/rpc/types.d.ts +2 -2
  1420. package/dist/rpc/types.d.ts.map +1 -1
  1421. package/dist/rpc/types.js.map +1 -1
  1422. package/dist/rpc.cjs +2 -0
  1423. package/dist/rpc.cjs.map +1 -1
  1424. package/dist/rpc.d.ts +2 -1
  1425. package/dist/rpc.d.ts.map +1 -1
  1426. package/dist/rpc.js +2 -0
  1427. package/dist/rpc.js.map +1 -1
  1428. package/dist/runtime-profile.cjs +7 -0
  1429. package/dist/runtime-profile.cjs.map +1 -0
  1430. package/dist/runtime-profile.d.ts +2 -0
  1431. package/dist/runtime-profile.d.ts.map +1 -0
  1432. package/dist/runtime-profile.js +7 -0
  1433. package/dist/runtime-profile.js.map +1 -0
  1434. package/dist/styles.css +1 -1
  1435. package/package.json +8 -3
  1436. package/dist/components/combobox-utils.cjs.map +0 -1
  1437. package/dist/components/combobox-utils.d.ts.map +0 -1
  1438. package/dist/components/combobox-utils.js.map +0 -1
@@ -6,6 +6,6 @@ export declare const sampleComments: Comment[];
6
6
  export declare function useDemoCommentStore(initial?: Comment[]): {
7
7
  comments: Comment[];
8
8
  callbacks: CommentCallbacks;
9
- setComments: import('react').Dispatch<import('react').SetStateAction<Comment[]>>;
9
+ setComments: import('../../../../node_modules/@types/react/index.d.ts').Dispatch<import('../../../../node_modules/@types/react/index.d.ts').SetStateAction<Comment[]>>;
10
10
  };
11
11
  //# sourceMappingURL=comment-fixtures.d.ts.map
@@ -1,4 +1,4 @@
1
- import { ReactNode } from 'react';
1
+ import { ReactNode } from '../../../../node_modules/@types/react/index.d.ts';
2
2
  import { StaticIconComponent } from '../data/Icon';
3
3
  /** Semantic tone driving a status/facet color (maps onto Badge tones). */
4
4
  export type CommentTone = "default" | "info" | "success" | "warning" | "danger" | "neutral";
@@ -51,6 +51,30 @@ function buildReplyMap(comments) {
51
51
  }
52
52
  return map;
53
53
  }
54
+ function selectAnchorThreads(comments, anchor) {
55
+ const roots = comments.filter(
56
+ (c) => !c.parentId && (c.anchor ?? commentTypes.DOCUMENT_ANCHOR) === anchor
57
+ );
58
+ const ids = new Set(roots.map((c) => String(c.id)));
59
+ const descendants = [];
60
+ for (let grew = true; grew; ) {
61
+ grew = false;
62
+ for (const c of comments) {
63
+ if (!c.parentId || ids.has(String(c.id))) continue;
64
+ if (!ids.has(String(c.parentId))) continue;
65
+ ids.add(String(c.id));
66
+ descendants.push(c);
67
+ grew = true;
68
+ }
69
+ }
70
+ return [...roots, ...descendants];
71
+ }
72
+ function selectUnresolvedThreads(comments, config) {
73
+ const keep = new Set(
74
+ getRoots(comments).filter((root) => root.status == null || isUnresolved(config, root.status)).map((root) => String(root.id))
75
+ );
76
+ return comments.filter((c) => keep.has(String(c.parentId ?? c.id)));
77
+ }
54
78
  function sortReplies(replies) {
55
79
  return [...replies].sort((a, b) => {
56
80
  if (a.createdAt !== b.createdAt)
@@ -210,6 +234,8 @@ exports.matchMentionsInBody = matchMentionsInBody;
210
234
  exports.nextChecklistStatus = nextChecklistStatus;
211
235
  exports.resolveFacetOption = resolveFacetOption;
212
236
  exports.resolveStatusConfig = resolveStatusConfig;
237
+ exports.selectAnchorThreads = selectAnchorThreads;
238
+ exports.selectUnresolvedThreads = selectUnresolvedThreads;
213
239
  exports.sortReplies = sortReplies;
214
240
  exports.toneToBadgeTone = toneToBadgeTone;
215
241
  exports.truncatePlain = truncatePlain;
@@ -1 +1 @@
1
- {"version":3,"file":"comment-utils.cjs","sources":["../../src/comments/comment-utils.ts"],"sourcesContent":["import type { BadgeTone } from \"../data/Badge\";\nimport {\n DEFAULT_CHECKLIST_CYCLE,\n type Comment,\n type CommentAnchor,\n type CommentAnchorMeta,\n type CommentAuthor,\n type CommentCallbacks,\n type CommentConfig,\n type CommentFacet,\n type CommentFacetOption,\n type CommentFilters,\n type CommentMention,\n type CommentMentionable,\n type CommentMentionKind,\n type CommentStatusConfig,\n type CommentTone,\n DOCUMENT_ANCHOR,\n} from \"./comment-types\";\n\n/** Human-readable name for an author, falling back to \"Unknown\". */\nexport function authorDisplayName(author: CommentAuthor | null): string {\n return author?.name?.trim() || \"Unknown\";\n}\n\n/** Maps a CommentTone onto the Badge component's tone vocabulary. */\nexport function toneToBadgeTone(tone: CommentTone | undefined): BadgeTone {\n switch (tone) {\n case \"success\":\n return \"success\";\n case \"danger\":\n return \"danger\";\n case \"warning\":\n return \"warning\";\n case \"info\":\n return \"info\";\n case \"neutral\":\n case \"default\":\n default:\n return \"neutral\";\n }\n}\n\n/** Looks up the status config for a stored status value. */\nexport function resolveStatusConfig(\n config: CommentConfig,\n value: string | undefined,\n): CommentStatusConfig | undefined {\n if (value == null) return undefined;\n return config.statuses.find((s) => s.value === value);\n}\n\n/** Looks up a facet option for a stored facet value. */\nexport function resolveFacetOption(\n facet: CommentFacet,\n value: string | undefined,\n): CommentFacetOption | undefined {\n if (value == null) return undefined;\n return facet.options.find((o) => o.value === value);\n}\n\n/** The default status value for new comments: first unresolved, else first. */\nexport function defaultStatusValue(config: CommentConfig): string | undefined {\n const unresolved = config.statuses.find((s) => s.unresolved);\n return (unresolved ?? config.statuses[0])?.value;\n}\n\n/** Whether a stored status counts as unresolved/open. */\nexport function isUnresolved(\n config: CommentConfig,\n status: string | undefined,\n): boolean {\n return resolveStatusConfig(config, status)?.unresolved ?? false;\n}\n\n/** Returns the root (non-reply) comments in input order. */\nexport function getRoots(comments: Comment[]): Comment[] {\n return comments.filter((c) => !c.parentId);\n}\n\n/** Indexes replies by their parent id. */\nexport function buildReplyMap(comments: Comment[]): Map<string, Comment[]> {\n const map = new Map<string, Comment[]>();\n for (const reply of comments) {\n if (!reply.parentId) continue;\n const items = map.get(reply.parentId) ?? [];\n items.push(reply);\n map.set(reply.parentId, items);\n }\n return map;\n}\n\n/** Stable reply ordering: by creation time, then id. */\nexport function sortReplies(replies: Comment[]): Comment[] {\n return [...replies].sort((a, b) => {\n if (a.createdAt !== b.createdAt)\n return a.createdAt.localeCompare(b.createdAt);\n return String(a.id).localeCompare(String(b.id));\n });\n}\n\n/** Groups root comments by the value of a facet key (missing → \"\"). */\nexport function groupByFacet(\n comments: Comment[],\n facetKey: string,\n): Map<string, Comment[]> {\n const map = new Map<string, Comment[]>();\n for (const root of getRoots(comments)) {\n const key = root.facets?.[facetKey] ?? \"\";\n const items = map.get(key) ?? [];\n items.push(root);\n map.set(key, items);\n }\n return map;\n}\n\n/** Per-anchor comment counts derived from the list (document-level → DOCUMENT_ANCHOR). */\nexport function deriveAnchorCounts(\n comments: Comment[],\n): Record<CommentAnchor, number> {\n const counts: Record<CommentAnchor, number> = {};\n for (const c of comments) {\n const key = c.anchor ?? DOCUMENT_ANCHOR;\n counts[key] = (counts[key] ?? 0) + 1;\n }\n return counts;\n}\n\n/** Per-anchor aggregate metadata (count, distinct authors, latest status). */\nexport function deriveAnchorMeta(\n comments: Comment[],\n): Record<CommentAnchor, CommentAnchorMeta> {\n const grouped: Record<CommentAnchor, Comment[]> = {};\n for (const c of comments) {\n const key = c.anchor ?? DOCUMENT_ANCHOR;\n (grouped[key] ??= []).push(c);\n }\n const meta: Record<CommentAnchor, CommentAnchorMeta> = {};\n for (const [anchor, items] of Object.entries(grouped)) {\n const authors = [\n ...new Set(\n items.map((c) => c.author?.name).filter((n): n is string => !!n),\n ),\n ];\n const latest = items.reduce((a, b) =>\n (a.updatedAt ?? a.createdAt) > (b.updatedAt ?? b.createdAt) ? a : b,\n );\n meta[anchor] = {\n count: items.length,\n authors,\n ...(latest.status != null ? { latestStatus: latest.status } : {}),\n };\n }\n return meta;\n}\n\n/** Sums counts for an anchor and its descendants under a separator-delimited prefix. */\nexport function commentCountForPrefix(\n counts: Record<string, number>,\n prefix: string,\n separator = \".\",\n): number {\n let total = 0;\n for (const [key, count] of Object.entries(counts)) {\n if (key === prefix || key.startsWith(prefix + separator)) total += count;\n }\n return total;\n}\n\n/** Advances a checklist status to the next in the cycle (wrapping). */\nexport function nextChecklistStatus(\n current: string,\n cycle = DEFAULT_CHECKLIST_CYCLE,\n): string {\n const idx = cycle.indexOf(current);\n if (idx === -1) return cycle[0] ?? current;\n return cycle[(idx + 1) % cycle.length] ?? current;\n}\n\n/** Strips inline markdown punctuation and truncates to a plain preview. */\nexport function truncatePlain(body: string, max = 80): string {\n const plain = body.replace(/[#*_`~>[\\]()!]/g, \"\").trim();\n return plain.length > max ? `${plain.slice(0, max)}…` : plain;\n}\n\nfunction authorKindOf(comment: Comment): CommentMentionKind {\n return comment.author?.kind ?? \"user\";\n}\n\n/**\n * Filters a comment list by status / facets / author kind while keeping threads\n * intact: a reply survives iff its root survives. An empty status set or empty\n * per-facet set means \"no constraint\" for that axis.\n */\nexport function applyCommentFilters(\n comments: Comment[],\n filters: CommentFilters,\n config: CommentConfig,\n): Comment[] {\n const facetKeys = (config.facets ?? []).map((f) => f.key);\n const passingRootIds = new Set<string>();\n\n for (const root of getRoots(comments)) {\n if (\n filters.statuses.size > 0 &&\n (root.status == null || !filters.statuses.has(root.status))\n ) {\n continue;\n }\n if (\n filters.authorKind &&\n filters.authorKind !== \"all\" &&\n authorKindOf(root) !== filters.authorKind\n ) {\n continue;\n }\n const facetsPass = facetKeys.every((key) => {\n const selected = filters.facets[key];\n if (!selected || selected.size === 0) return true;\n const value = root.facets?.[key];\n return value != null && selected.has(value);\n });\n if (!facetsPass) continue;\n passingRootIds.add(root.id);\n }\n\n return comments.filter((c) =>\n c.parentId ? passingRootIds.has(c.parentId) : passingRootIds.has(c.id),\n );\n}\n\n/** True when any filter axis constrains the result. */\nexport function hasActiveFilters(filters: CommentFilters): boolean {\n if (filters.statuses.size > 0) return true;\n if (filters.authorKind && filters.authorKind !== \"all\") return true;\n return Object.values(filters.facets).some((set) => set.size > 0);\n}\n\n/** An empty filter state. */\nexport function emptyCommentFilters(): CommentFilters {\n return { statuses: new Set(), facets: {}, authorKind: \"all\" };\n}\n\n/** Finds mentionables whose `@name` token appears in a body (case-insensitive). */\nexport function matchMentionsInBody(\n body: string,\n mentionables: CommentMentionable[],\n): CommentMention[] {\n const lower = body.toLowerCase();\n return mentionables\n .filter((m) => lower.includes(`@${m.name.toLowerCase()}`))\n .map((m) => ({ id: m.id, name: m.name, kind: m.kind }));\n}\n\n/** Per-id handlers consumed by CommentThreadList. */\nexport type ThreadListHandlers = {\n onUpdateStatus?: (id: string, status: string) => void;\n onChecklistToggle?: (id: string, index: number) => void;\n onDelete?: (id: string) => void;\n onReply?: (parent: Comment, body: string) => void | Promise<void>;\n};\n\n/**\n * Adapts high-level {@link CommentCallbacks} into the id-keyed handlers a\n * {@link CommentThreadList} consumes: resolves the next checklist status from the\n * cycle and extracts mentions from a reply body. Shared by `CommentThread` and\n * `CommentSidePanel` so the adaptation lives in one place.\n */\nexport function buildThreadListHandlers(\n comments: Comment[],\n config: CommentConfig,\n cb: CommentCallbacks,\n): ThreadListHandlers {\n const handlers: ThreadListHandlers = {};\n if (cb.onUpdateStatus) handlers.onUpdateStatus = cb.onUpdateStatus;\n if (cb.onDelete) handlers.onDelete = cb.onDelete;\n if (cb.onChecklistToggle) {\n const toggle = cb.onChecklistToggle;\n handlers.onChecklistToggle = (id, index) => {\n const item = comments.find((c) => c.id === id)?.checklist?.[index];\n if (!item) return;\n void toggle(\n id,\n index,\n nextChecklistStatus(item.status, config.checklistStatusCycle),\n );\n };\n }\n if (cb.onReply) {\n const reply = cb.onReply;\n const onMention = cb.onMention;\n handlers.onReply = async (parent, body) => {\n const mentions = matchMentionsInBody(body, config.mentionables ?? []);\n await reply({\n parentId: parent.id,\n body,\n anchor: parent.anchor ?? null,\n ...(mentions.length > 0 ? { mentions } : {}),\n });\n for (const mention of mentions) onMention?.(mention, { body });\n };\n }\n return handlers;\n}\n"],"names":["DOCUMENT_ANCHOR","DEFAULT_CHECKLIST_CYCLE"],"mappings":"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"}
1
+ {"version":3,"file":"comment-utils.cjs","sources":["../../src/comments/comment-utils.ts"],"sourcesContent":["import type { BadgeTone } from \"../data/Badge\";\nimport {\n DEFAULT_CHECKLIST_CYCLE,\n type Comment,\n type CommentAnchor,\n type CommentAnchorMeta,\n type CommentAuthor,\n type CommentCallbacks,\n type CommentConfig,\n type CommentFacet,\n type CommentFacetOption,\n type CommentFilters,\n type CommentMention,\n type CommentMentionable,\n type CommentMentionKind,\n type CommentStatusConfig,\n type CommentTone,\n DOCUMENT_ANCHOR,\n} from \"./comment-types\";\n\n/** Human-readable name for an author, falling back to \"Unknown\". */\nexport function authorDisplayName(author: CommentAuthor | null): string {\n return author?.name?.trim() || \"Unknown\";\n}\n\n/** Maps a CommentTone onto the Badge component's tone vocabulary. */\nexport function toneToBadgeTone(tone: CommentTone | undefined): BadgeTone {\n switch (tone) {\n case \"success\":\n return \"success\";\n case \"danger\":\n return \"danger\";\n case \"warning\":\n return \"warning\";\n case \"info\":\n return \"info\";\n case \"neutral\":\n case \"default\":\n default:\n return \"neutral\";\n }\n}\n\n/** Looks up the status config for a stored status value. */\nexport function resolveStatusConfig(\n config: CommentConfig,\n value: string | undefined,\n): CommentStatusConfig | undefined {\n if (value == null) return undefined;\n return config.statuses.find((s) => s.value === value);\n}\n\n/** Looks up a facet option for a stored facet value. */\nexport function resolveFacetOption(\n facet: CommentFacet,\n value: string | undefined,\n): CommentFacetOption | undefined {\n if (value == null) return undefined;\n return facet.options.find((o) => o.value === value);\n}\n\n/** The default status value for new comments: first unresolved, else first. */\nexport function defaultStatusValue(config: CommentConfig): string | undefined {\n const unresolved = config.statuses.find((s) => s.unresolved);\n return (unresolved ?? config.statuses[0])?.value;\n}\n\n/** Whether a stored status counts as unresolved/open. */\nexport function isUnresolved(\n config: CommentConfig,\n status: string | undefined,\n): boolean {\n return resolveStatusConfig(config, status)?.unresolved ?? false;\n}\n\n/** Returns the root (non-reply) comments in input order. */\nexport function getRoots(comments: Comment[]): Comment[] {\n return comments.filter((c) => !c.parentId);\n}\n\n/** Indexes replies by their parent id. */\nexport function buildReplyMap(comments: Comment[]): Map<string, Comment[]> {\n const map = new Map<string, Comment[]>();\n for (const reply of comments) {\n if (!reply.parentId) continue;\n const items = map.get(reply.parentId) ?? [];\n items.push(reply);\n map.set(reply.parentId, items);\n }\n return map;\n}\n\n/**\n * Comments forming the threads rooted at `anchor`: matching roots plus their\n * descendants. Replies carry no anchor of their own — they belong to a thread,\n * not to a location — so selecting by anchor equality alone would drop them.\n */\nexport function selectAnchorThreads(\n comments: Comment[],\n anchor: CommentAnchor,\n): Comment[] {\n const roots = comments.filter(\n (c) => !c.parentId && (c.anchor ?? DOCUMENT_ANCHOR) === anchor,\n );\n const ids = new Set(roots.map((c) => String(c.id)));\n const descendants: Comment[] = [];\n // Fixed point, so a reply to a reply is kept when replies are not flattened.\n for (let grew = true; grew; ) {\n grew = false;\n for (const c of comments) {\n if (!c.parentId || ids.has(String(c.id))) continue;\n if (!ids.has(String(c.parentId))) continue;\n ids.add(String(c.id));\n descendants.push(c);\n grew = true;\n }\n }\n return [...roots, ...descendants];\n}\n\n/**\n * Threads whose root is not yet resolved. A root carrying no status has not\n * been acted on, so it counts as unresolved; replies follow their root.\n */\nexport function selectUnresolvedThreads(\n comments: Comment[],\n config: CommentConfig,\n): Comment[] {\n const keep = new Set(\n getRoots(comments)\n .filter((root) => root.status == null || isUnresolved(config, root.status))\n .map((root) => String(root.id)),\n );\n return comments.filter((c) => keep.has(String(c.parentId ?? c.id)));\n}\n\n/** Stable reply ordering: by creation time, then id. */\nexport function sortReplies(replies: Comment[]): Comment[] {\n return [...replies].sort((a, b) => {\n if (a.createdAt !== b.createdAt)\n return a.createdAt.localeCompare(b.createdAt);\n return String(a.id).localeCompare(String(b.id));\n });\n}\n\n/** Groups root comments by the value of a facet key (missing → \"\"). */\nexport function groupByFacet(\n comments: Comment[],\n facetKey: string,\n): Map<string, Comment[]> {\n const map = new Map<string, Comment[]>();\n for (const root of getRoots(comments)) {\n const key = root.facets?.[facetKey] ?? \"\";\n const items = map.get(key) ?? [];\n items.push(root);\n map.set(key, items);\n }\n return map;\n}\n\n/** Per-anchor comment counts derived from the list (document-level → DOCUMENT_ANCHOR). */\nexport function deriveAnchorCounts(\n comments: Comment[],\n): Record<CommentAnchor, number> {\n const counts: Record<CommentAnchor, number> = {};\n for (const c of comments) {\n const key = c.anchor ?? DOCUMENT_ANCHOR;\n counts[key] = (counts[key] ?? 0) + 1;\n }\n return counts;\n}\n\n/** Per-anchor aggregate metadata (count, distinct authors, latest status). */\nexport function deriveAnchorMeta(\n comments: Comment[],\n): Record<CommentAnchor, CommentAnchorMeta> {\n const grouped: Record<CommentAnchor, Comment[]> = {};\n for (const c of comments) {\n const key = c.anchor ?? DOCUMENT_ANCHOR;\n (grouped[key] ??= []).push(c);\n }\n const meta: Record<CommentAnchor, CommentAnchorMeta> = {};\n for (const [anchor, items] of Object.entries(grouped)) {\n const authors = [\n ...new Set(\n items.map((c) => c.author?.name).filter((n): n is string => !!n),\n ),\n ];\n const latest = items.reduce((a, b) =>\n (a.updatedAt ?? a.createdAt) > (b.updatedAt ?? b.createdAt) ? a : b,\n );\n meta[anchor] = {\n count: items.length,\n authors,\n ...(latest.status != null ? { latestStatus: latest.status } : {}),\n };\n }\n return meta;\n}\n\n/** Sums counts for an anchor and its descendants under a separator-delimited prefix. */\nexport function commentCountForPrefix(\n counts: Record<string, number>,\n prefix: string,\n separator = \".\",\n): number {\n let total = 0;\n for (const [key, count] of Object.entries(counts)) {\n if (key === prefix || key.startsWith(prefix + separator)) total += count;\n }\n return total;\n}\n\n/** Advances a checklist status to the next in the cycle (wrapping). */\nexport function nextChecklistStatus(\n current: string,\n cycle = DEFAULT_CHECKLIST_CYCLE,\n): string {\n const idx = cycle.indexOf(current);\n if (idx === -1) return cycle[0] ?? current;\n return cycle[(idx + 1) % cycle.length] ?? current;\n}\n\n/** Strips inline markdown punctuation and truncates to a plain preview. */\nexport function truncatePlain(body: string, max = 80): string {\n const plain = body.replace(/[#*_`~>[\\]()!]/g, \"\").trim();\n return plain.length > max ? `${plain.slice(0, max)}…` : plain;\n}\n\nfunction authorKindOf(comment: Comment): CommentMentionKind {\n return comment.author?.kind ?? \"user\";\n}\n\n/**\n * Filters a comment list by status / facets / author kind while keeping threads\n * intact: a reply survives iff its root survives. An empty status set or empty\n * per-facet set means \"no constraint\" for that axis.\n */\nexport function applyCommentFilters(\n comments: Comment[],\n filters: CommentFilters,\n config: CommentConfig,\n): Comment[] {\n const facetKeys = (config.facets ?? []).map((f) => f.key);\n const passingRootIds = new Set<string>();\n\n for (const root of getRoots(comments)) {\n if (\n filters.statuses.size > 0 &&\n (root.status == null || !filters.statuses.has(root.status))\n ) {\n continue;\n }\n if (\n filters.authorKind &&\n filters.authorKind !== \"all\" &&\n authorKindOf(root) !== filters.authorKind\n ) {\n continue;\n }\n const facetsPass = facetKeys.every((key) => {\n const selected = filters.facets[key];\n if (!selected || selected.size === 0) return true;\n const value = root.facets?.[key];\n return value != null && selected.has(value);\n });\n if (!facetsPass) continue;\n passingRootIds.add(root.id);\n }\n\n return comments.filter((c) =>\n c.parentId ? passingRootIds.has(c.parentId) : passingRootIds.has(c.id),\n );\n}\n\n/** True when any filter axis constrains the result. */\nexport function hasActiveFilters(filters: CommentFilters): boolean {\n if (filters.statuses.size > 0) return true;\n if (filters.authorKind && filters.authorKind !== \"all\") return true;\n return Object.values(filters.facets).some((set) => set.size > 0);\n}\n\n/** An empty filter state. */\nexport function emptyCommentFilters(): CommentFilters {\n return { statuses: new Set(), facets: {}, authorKind: \"all\" };\n}\n\n/** Finds mentionables whose `@name` token appears in a body (case-insensitive). */\nexport function matchMentionsInBody(\n body: string,\n mentionables: CommentMentionable[],\n): CommentMention[] {\n const lower = body.toLowerCase();\n return mentionables\n .filter((m) => lower.includes(`@${m.name.toLowerCase()}`))\n .map((m) => ({ id: m.id, name: m.name, kind: m.kind }));\n}\n\n/** Per-id handlers consumed by CommentThreadList. */\nexport type ThreadListHandlers = {\n onUpdateStatus?: (id: string, status: string) => void;\n onChecklistToggle?: (id: string, index: number) => void;\n onDelete?: (id: string) => void;\n onReply?: (parent: Comment, body: string) => void | Promise<void>;\n};\n\n/**\n * Adapts high-level {@link CommentCallbacks} into the id-keyed handlers a\n * {@link CommentThreadList} consumes: resolves the next checklist status from the\n * cycle and extracts mentions from a reply body. Shared by `CommentThread` and\n * `CommentSidePanel` so the adaptation lives in one place.\n */\nexport function buildThreadListHandlers(\n comments: Comment[],\n config: CommentConfig,\n cb: CommentCallbacks,\n): ThreadListHandlers {\n const handlers: ThreadListHandlers = {};\n if (cb.onUpdateStatus) handlers.onUpdateStatus = cb.onUpdateStatus;\n if (cb.onDelete) handlers.onDelete = cb.onDelete;\n if (cb.onChecklistToggle) {\n const toggle = cb.onChecklistToggle;\n handlers.onChecklistToggle = (id, index) => {\n const item = comments.find((c) => c.id === id)?.checklist?.[index];\n if (!item) return;\n void toggle(\n id,\n index,\n nextChecklistStatus(item.status, config.checklistStatusCycle),\n );\n };\n }\n if (cb.onReply) {\n const reply = cb.onReply;\n const onMention = cb.onMention;\n handlers.onReply = async (parent, body) => {\n const mentions = matchMentionsInBody(body, config.mentionables ?? []);\n await reply({\n parentId: parent.id,\n body,\n anchor: parent.anchor ?? null,\n ...(mentions.length > 0 ? { mentions } : {}),\n });\n for (const mention of mentions) onMention?.(mention, { body });\n };\n }\n return handlers;\n}\n"],"names":["DOCUMENT_ANCHOR","DEFAULT_CHECKLIST_CYCLE"],"mappings":"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"}
@@ -16,6 +16,17 @@ export declare function isUnresolved(config: CommentConfig, status: string | und
16
16
  export declare function getRoots(comments: Comment[]): Comment[];
17
17
  /** Indexes replies by their parent id. */
18
18
  export declare function buildReplyMap(comments: Comment[]): Map<string, Comment[]>;
19
+ /**
20
+ * Comments forming the threads rooted at `anchor`: matching roots plus their
21
+ * descendants. Replies carry no anchor of their own — they belong to a thread,
22
+ * not to a location — so selecting by anchor equality alone would drop them.
23
+ */
24
+ export declare function selectAnchorThreads(comments: Comment[], anchor: CommentAnchor): Comment[];
25
+ /**
26
+ * Threads whose root is not yet resolved. A root carrying no status has not
27
+ * been acted on, so it counts as unresolved; replies follow their root.
28
+ */
29
+ export declare function selectUnresolvedThreads(comments: Comment[], config: CommentConfig): Comment[];
19
30
  /** Stable reply ordering: by creation time, then id. */
20
31
  export declare function sortReplies(replies: Comment[]): Comment[];
21
32
  /** Groups root comments by the value of a facet key (missing → ""). */
@@ -1 +1 @@
1
- {"version":3,"file":"comment-utils.d.ts","sourceRoot":"","sources":["../../src/comments/comment-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EAEvB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAEjB,MAAM,iBAAiB,CAAC;AAEzB,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,GAAG,MAAM,CAEtE;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAexE;AAED,4DAA4D;AAC5D,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,mBAAmB,GAAG,SAAS,CAGjC;AAED,wDAAwD;AACxD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,kBAAkB,GAAG,SAAS,CAGhC;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAG5E;AAED,yDAAyD;AACzD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAET;AAED,4DAA4D;AAC5D,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAEvD;AAED,0CAA0C;AAC1C,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CASzE;AAED,wDAAwD;AACxD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAMzD;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,OAAO,EAAE,EACnB,QAAQ,EAAE,MAAM,GACf,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CASxB;AAED,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,OAAO,EAAE,GAClB,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAO/B;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,OAAO,EAAE,GAClB,MAAM,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAuB1C;AAED,wFAAwF;AACxF,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,MAAM,EAAE,MAAM,EACd,SAAS,SAAM,GACd,MAAM,CAMR;AAED,uEAAuE;AACvE,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,KAAK,WAA0B,GAC9B,MAAM,CAIR;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAK,GAAG,MAAM,CAG5D;AAMD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,aAAa,GACpB,OAAO,EAAE,CA+BX;AAED,uDAAuD;AACvD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAIjE;AAED,6BAA6B;AAC7B,wBAAgB,mBAAmB,IAAI,cAAc,CAEpD;AAED,mFAAmF;AACnF,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,kBAAkB,EAAE,GACjC,cAAc,EAAE,CAKlB;AAED,qDAAqD;AACrD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,gBAAgB,GACnB,kBAAkB,CA+BpB"}
1
+ {"version":3,"file":"comment-utils.d.ts","sourceRoot":"","sources":["../../src/comments/comment-utils.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,30 @@ function buildReplyMap(comments) {
49
49
  }
50
50
  return map;
51
51
  }
52
+ function selectAnchorThreads(comments, anchor) {
53
+ const roots = comments.filter(
54
+ (c) => !c.parentId && (c.anchor ?? DOCUMENT_ANCHOR) === anchor
55
+ );
56
+ const ids = new Set(roots.map((c) => String(c.id)));
57
+ const descendants = [];
58
+ for (let grew = true; grew; ) {
59
+ grew = false;
60
+ for (const c of comments) {
61
+ if (!c.parentId || ids.has(String(c.id))) continue;
62
+ if (!ids.has(String(c.parentId))) continue;
63
+ ids.add(String(c.id));
64
+ descendants.push(c);
65
+ grew = true;
66
+ }
67
+ }
68
+ return [...roots, ...descendants];
69
+ }
70
+ function selectUnresolvedThreads(comments, config) {
71
+ const keep = new Set(
72
+ getRoots(comments).filter((root) => root.status == null || isUnresolved(config, root.status)).map((root) => String(root.id))
73
+ );
74
+ return comments.filter((c) => keep.has(String(c.parentId ?? c.id)));
75
+ }
52
76
  function sortReplies(replies) {
53
77
  return [...replies].sort((a, b) => {
54
78
  if (a.createdAt !== b.createdAt)
@@ -209,6 +233,8 @@ export {
209
233
  nextChecklistStatus,
210
234
  resolveFacetOption,
211
235
  resolveStatusConfig,
236
+ selectAnchorThreads,
237
+ selectUnresolvedThreads,
212
238
  sortReplies,
213
239
  toneToBadgeTone,
214
240
  truncatePlain
@@ -1 +1 @@
1
- {"version":3,"file":"comment-utils.js","sources":["../../src/comments/comment-utils.ts"],"sourcesContent":["import type { BadgeTone } from \"../data/Badge\";\nimport {\n DEFAULT_CHECKLIST_CYCLE,\n type Comment,\n type CommentAnchor,\n type CommentAnchorMeta,\n type CommentAuthor,\n type CommentCallbacks,\n type CommentConfig,\n type CommentFacet,\n type CommentFacetOption,\n type CommentFilters,\n type CommentMention,\n type CommentMentionable,\n type CommentMentionKind,\n type CommentStatusConfig,\n type CommentTone,\n DOCUMENT_ANCHOR,\n} from \"./comment-types\";\n\n/** Human-readable name for an author, falling back to \"Unknown\". */\nexport function authorDisplayName(author: CommentAuthor | null): string {\n return author?.name?.trim() || \"Unknown\";\n}\n\n/** Maps a CommentTone onto the Badge component's tone vocabulary. */\nexport function toneToBadgeTone(tone: CommentTone | undefined): BadgeTone {\n switch (tone) {\n case \"success\":\n return \"success\";\n case \"danger\":\n return \"danger\";\n case \"warning\":\n return \"warning\";\n case \"info\":\n return \"info\";\n case \"neutral\":\n case \"default\":\n default:\n return \"neutral\";\n }\n}\n\n/** Looks up the status config for a stored status value. */\nexport function resolveStatusConfig(\n config: CommentConfig,\n value: string | undefined,\n): CommentStatusConfig | undefined {\n if (value == null) return undefined;\n return config.statuses.find((s) => s.value === value);\n}\n\n/** Looks up a facet option for a stored facet value. */\nexport function resolveFacetOption(\n facet: CommentFacet,\n value: string | undefined,\n): CommentFacetOption | undefined {\n if (value == null) return undefined;\n return facet.options.find((o) => o.value === value);\n}\n\n/** The default status value for new comments: first unresolved, else first. */\nexport function defaultStatusValue(config: CommentConfig): string | undefined {\n const unresolved = config.statuses.find((s) => s.unresolved);\n return (unresolved ?? config.statuses[0])?.value;\n}\n\n/** Whether a stored status counts as unresolved/open. */\nexport function isUnresolved(\n config: CommentConfig,\n status: string | undefined,\n): boolean {\n return resolveStatusConfig(config, status)?.unresolved ?? false;\n}\n\n/** Returns the root (non-reply) comments in input order. */\nexport function getRoots(comments: Comment[]): Comment[] {\n return comments.filter((c) => !c.parentId);\n}\n\n/** Indexes replies by their parent id. */\nexport function buildReplyMap(comments: Comment[]): Map<string, Comment[]> {\n const map = new Map<string, Comment[]>();\n for (const reply of comments) {\n if (!reply.parentId) continue;\n const items = map.get(reply.parentId) ?? [];\n items.push(reply);\n map.set(reply.parentId, items);\n }\n return map;\n}\n\n/** Stable reply ordering: by creation time, then id. */\nexport function sortReplies(replies: Comment[]): Comment[] {\n return [...replies].sort((a, b) => {\n if (a.createdAt !== b.createdAt)\n return a.createdAt.localeCompare(b.createdAt);\n return String(a.id).localeCompare(String(b.id));\n });\n}\n\n/** Groups root comments by the value of a facet key (missing → \"\"). */\nexport function groupByFacet(\n comments: Comment[],\n facetKey: string,\n): Map<string, Comment[]> {\n const map = new Map<string, Comment[]>();\n for (const root of getRoots(comments)) {\n const key = root.facets?.[facetKey] ?? \"\";\n const items = map.get(key) ?? [];\n items.push(root);\n map.set(key, items);\n }\n return map;\n}\n\n/** Per-anchor comment counts derived from the list (document-level → DOCUMENT_ANCHOR). */\nexport function deriveAnchorCounts(\n comments: Comment[],\n): Record<CommentAnchor, number> {\n const counts: Record<CommentAnchor, number> = {};\n for (const c of comments) {\n const key = c.anchor ?? DOCUMENT_ANCHOR;\n counts[key] = (counts[key] ?? 0) + 1;\n }\n return counts;\n}\n\n/** Per-anchor aggregate metadata (count, distinct authors, latest status). */\nexport function deriveAnchorMeta(\n comments: Comment[],\n): Record<CommentAnchor, CommentAnchorMeta> {\n const grouped: Record<CommentAnchor, Comment[]> = {};\n for (const c of comments) {\n const key = c.anchor ?? DOCUMENT_ANCHOR;\n (grouped[key] ??= []).push(c);\n }\n const meta: Record<CommentAnchor, CommentAnchorMeta> = {};\n for (const [anchor, items] of Object.entries(grouped)) {\n const authors = [\n ...new Set(\n items.map((c) => c.author?.name).filter((n): n is string => !!n),\n ),\n ];\n const latest = items.reduce((a, b) =>\n (a.updatedAt ?? a.createdAt) > (b.updatedAt ?? b.createdAt) ? a : b,\n );\n meta[anchor] = {\n count: items.length,\n authors,\n ...(latest.status != null ? { latestStatus: latest.status } : {}),\n };\n }\n return meta;\n}\n\n/** Sums counts for an anchor and its descendants under a separator-delimited prefix. */\nexport function commentCountForPrefix(\n counts: Record<string, number>,\n prefix: string,\n separator = \".\",\n): number {\n let total = 0;\n for (const [key, count] of Object.entries(counts)) {\n if (key === prefix || key.startsWith(prefix + separator)) total += count;\n }\n return total;\n}\n\n/** Advances a checklist status to the next in the cycle (wrapping). */\nexport function nextChecklistStatus(\n current: string,\n cycle = DEFAULT_CHECKLIST_CYCLE,\n): string {\n const idx = cycle.indexOf(current);\n if (idx === -1) return cycle[0] ?? current;\n return cycle[(idx + 1) % cycle.length] ?? current;\n}\n\n/** Strips inline markdown punctuation and truncates to a plain preview. */\nexport function truncatePlain(body: string, max = 80): string {\n const plain = body.replace(/[#*_`~>[\\]()!]/g, \"\").trim();\n return plain.length > max ? `${plain.slice(0, max)}…` : plain;\n}\n\nfunction authorKindOf(comment: Comment): CommentMentionKind {\n return comment.author?.kind ?? \"user\";\n}\n\n/**\n * Filters a comment list by status / facets / author kind while keeping threads\n * intact: a reply survives iff its root survives. An empty status set or empty\n * per-facet set means \"no constraint\" for that axis.\n */\nexport function applyCommentFilters(\n comments: Comment[],\n filters: CommentFilters,\n config: CommentConfig,\n): Comment[] {\n const facetKeys = (config.facets ?? []).map((f) => f.key);\n const passingRootIds = new Set<string>();\n\n for (const root of getRoots(comments)) {\n if (\n filters.statuses.size > 0 &&\n (root.status == null || !filters.statuses.has(root.status))\n ) {\n continue;\n }\n if (\n filters.authorKind &&\n filters.authorKind !== \"all\" &&\n authorKindOf(root) !== filters.authorKind\n ) {\n continue;\n }\n const facetsPass = facetKeys.every((key) => {\n const selected = filters.facets[key];\n if (!selected || selected.size === 0) return true;\n const value = root.facets?.[key];\n return value != null && selected.has(value);\n });\n if (!facetsPass) continue;\n passingRootIds.add(root.id);\n }\n\n return comments.filter((c) =>\n c.parentId ? passingRootIds.has(c.parentId) : passingRootIds.has(c.id),\n );\n}\n\n/** True when any filter axis constrains the result. */\nexport function hasActiveFilters(filters: CommentFilters): boolean {\n if (filters.statuses.size > 0) return true;\n if (filters.authorKind && filters.authorKind !== \"all\") return true;\n return Object.values(filters.facets).some((set) => set.size > 0);\n}\n\n/** An empty filter state. */\nexport function emptyCommentFilters(): CommentFilters {\n return { statuses: new Set(), facets: {}, authorKind: \"all\" };\n}\n\n/** Finds mentionables whose `@name` token appears in a body (case-insensitive). */\nexport function matchMentionsInBody(\n body: string,\n mentionables: CommentMentionable[],\n): CommentMention[] {\n const lower = body.toLowerCase();\n return mentionables\n .filter((m) => lower.includes(`@${m.name.toLowerCase()}`))\n .map((m) => ({ id: m.id, name: m.name, kind: m.kind }));\n}\n\n/** Per-id handlers consumed by CommentThreadList. */\nexport type ThreadListHandlers = {\n onUpdateStatus?: (id: string, status: string) => void;\n onChecklistToggle?: (id: string, index: number) => void;\n onDelete?: (id: string) => void;\n onReply?: (parent: Comment, body: string) => void | Promise<void>;\n};\n\n/**\n * Adapts high-level {@link CommentCallbacks} into the id-keyed handlers a\n * {@link CommentThreadList} consumes: resolves the next checklist status from the\n * cycle and extracts mentions from a reply body. Shared by `CommentThread` and\n * `CommentSidePanel` so the adaptation lives in one place.\n */\nexport function buildThreadListHandlers(\n comments: Comment[],\n config: CommentConfig,\n cb: CommentCallbacks,\n): ThreadListHandlers {\n const handlers: ThreadListHandlers = {};\n if (cb.onUpdateStatus) handlers.onUpdateStatus = cb.onUpdateStatus;\n if (cb.onDelete) handlers.onDelete = cb.onDelete;\n if (cb.onChecklistToggle) {\n const toggle = cb.onChecklistToggle;\n handlers.onChecklistToggle = (id, index) => {\n const item = comments.find((c) => c.id === id)?.checklist?.[index];\n if (!item) return;\n void toggle(\n id,\n index,\n nextChecklistStatus(item.status, config.checklistStatusCycle),\n );\n };\n }\n if (cb.onReply) {\n const reply = cb.onReply;\n const onMention = cb.onMention;\n handlers.onReply = async (parent, body) => {\n const mentions = matchMentionsInBody(body, config.mentionables ?? []);\n await reply({\n parentId: parent.id,\n body,\n anchor: parent.anchor ?? null,\n ...(mentions.length > 0 ? { mentions } : {}),\n });\n for (const mention of mentions) onMention?.(mention, { body });\n };\n }\n return handlers;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"comment-utils.js","sources":["../../src/comments/comment-utils.ts"],"sourcesContent":["import type { BadgeTone } from \"../data/Badge\";\nimport {\n DEFAULT_CHECKLIST_CYCLE,\n type Comment,\n type CommentAnchor,\n type CommentAnchorMeta,\n type CommentAuthor,\n type CommentCallbacks,\n type CommentConfig,\n type CommentFacet,\n type CommentFacetOption,\n type CommentFilters,\n type CommentMention,\n type CommentMentionable,\n type CommentMentionKind,\n type CommentStatusConfig,\n type CommentTone,\n DOCUMENT_ANCHOR,\n} from \"./comment-types\";\n\n/** Human-readable name for an author, falling back to \"Unknown\". */\nexport function authorDisplayName(author: CommentAuthor | null): string {\n return author?.name?.trim() || \"Unknown\";\n}\n\n/** Maps a CommentTone onto the Badge component's tone vocabulary. */\nexport function toneToBadgeTone(tone: CommentTone | undefined): BadgeTone {\n switch (tone) {\n case \"success\":\n return \"success\";\n case \"danger\":\n return \"danger\";\n case \"warning\":\n return \"warning\";\n case \"info\":\n return \"info\";\n case \"neutral\":\n case \"default\":\n default:\n return \"neutral\";\n }\n}\n\n/** Looks up the status config for a stored status value. */\nexport function resolveStatusConfig(\n config: CommentConfig,\n value: string | undefined,\n): CommentStatusConfig | undefined {\n if (value == null) return undefined;\n return config.statuses.find((s) => s.value === value);\n}\n\n/** Looks up a facet option for a stored facet value. */\nexport function resolveFacetOption(\n facet: CommentFacet,\n value: string | undefined,\n): CommentFacetOption | undefined {\n if (value == null) return undefined;\n return facet.options.find((o) => o.value === value);\n}\n\n/** The default status value for new comments: first unresolved, else first. */\nexport function defaultStatusValue(config: CommentConfig): string | undefined {\n const unresolved = config.statuses.find((s) => s.unresolved);\n return (unresolved ?? config.statuses[0])?.value;\n}\n\n/** Whether a stored status counts as unresolved/open. */\nexport function isUnresolved(\n config: CommentConfig,\n status: string | undefined,\n): boolean {\n return resolveStatusConfig(config, status)?.unresolved ?? false;\n}\n\n/** Returns the root (non-reply) comments in input order. */\nexport function getRoots(comments: Comment[]): Comment[] {\n return comments.filter((c) => !c.parentId);\n}\n\n/** Indexes replies by their parent id. */\nexport function buildReplyMap(comments: Comment[]): Map<string, Comment[]> {\n const map = new Map<string, Comment[]>();\n for (const reply of comments) {\n if (!reply.parentId) continue;\n const items = map.get(reply.parentId) ?? [];\n items.push(reply);\n map.set(reply.parentId, items);\n }\n return map;\n}\n\n/**\n * Comments forming the threads rooted at `anchor`: matching roots plus their\n * descendants. Replies carry no anchor of their own — they belong to a thread,\n * not to a location — so selecting by anchor equality alone would drop them.\n */\nexport function selectAnchorThreads(\n comments: Comment[],\n anchor: CommentAnchor,\n): Comment[] {\n const roots = comments.filter(\n (c) => !c.parentId && (c.anchor ?? DOCUMENT_ANCHOR) === anchor,\n );\n const ids = new Set(roots.map((c) => String(c.id)));\n const descendants: Comment[] = [];\n // Fixed point, so a reply to a reply is kept when replies are not flattened.\n for (let grew = true; grew; ) {\n grew = false;\n for (const c of comments) {\n if (!c.parentId || ids.has(String(c.id))) continue;\n if (!ids.has(String(c.parentId))) continue;\n ids.add(String(c.id));\n descendants.push(c);\n grew = true;\n }\n }\n return [...roots, ...descendants];\n}\n\n/**\n * Threads whose root is not yet resolved. A root carrying no status has not\n * been acted on, so it counts as unresolved; replies follow their root.\n */\nexport function selectUnresolvedThreads(\n comments: Comment[],\n config: CommentConfig,\n): Comment[] {\n const keep = new Set(\n getRoots(comments)\n .filter((root) => root.status == null || isUnresolved(config, root.status))\n .map((root) => String(root.id)),\n );\n return comments.filter((c) => keep.has(String(c.parentId ?? c.id)));\n}\n\n/** Stable reply ordering: by creation time, then id. */\nexport function sortReplies(replies: Comment[]): Comment[] {\n return [...replies].sort((a, b) => {\n if (a.createdAt !== b.createdAt)\n return a.createdAt.localeCompare(b.createdAt);\n return String(a.id).localeCompare(String(b.id));\n });\n}\n\n/** Groups root comments by the value of a facet key (missing → \"\"). */\nexport function groupByFacet(\n comments: Comment[],\n facetKey: string,\n): Map<string, Comment[]> {\n const map = new Map<string, Comment[]>();\n for (const root of getRoots(comments)) {\n const key = root.facets?.[facetKey] ?? \"\";\n const items = map.get(key) ?? [];\n items.push(root);\n map.set(key, items);\n }\n return map;\n}\n\n/** Per-anchor comment counts derived from the list (document-level → DOCUMENT_ANCHOR). */\nexport function deriveAnchorCounts(\n comments: Comment[],\n): Record<CommentAnchor, number> {\n const counts: Record<CommentAnchor, number> = {};\n for (const c of comments) {\n const key = c.anchor ?? DOCUMENT_ANCHOR;\n counts[key] = (counts[key] ?? 0) + 1;\n }\n return counts;\n}\n\n/** Per-anchor aggregate metadata (count, distinct authors, latest status). */\nexport function deriveAnchorMeta(\n comments: Comment[],\n): Record<CommentAnchor, CommentAnchorMeta> {\n const grouped: Record<CommentAnchor, Comment[]> = {};\n for (const c of comments) {\n const key = c.anchor ?? DOCUMENT_ANCHOR;\n (grouped[key] ??= []).push(c);\n }\n const meta: Record<CommentAnchor, CommentAnchorMeta> = {};\n for (const [anchor, items] of Object.entries(grouped)) {\n const authors = [\n ...new Set(\n items.map((c) => c.author?.name).filter((n): n is string => !!n),\n ),\n ];\n const latest = items.reduce((a, b) =>\n (a.updatedAt ?? a.createdAt) > (b.updatedAt ?? b.createdAt) ? a : b,\n );\n meta[anchor] = {\n count: items.length,\n authors,\n ...(latest.status != null ? { latestStatus: latest.status } : {}),\n };\n }\n return meta;\n}\n\n/** Sums counts for an anchor and its descendants under a separator-delimited prefix. */\nexport function commentCountForPrefix(\n counts: Record<string, number>,\n prefix: string,\n separator = \".\",\n): number {\n let total = 0;\n for (const [key, count] of Object.entries(counts)) {\n if (key === prefix || key.startsWith(prefix + separator)) total += count;\n }\n return total;\n}\n\n/** Advances a checklist status to the next in the cycle (wrapping). */\nexport function nextChecklistStatus(\n current: string,\n cycle = DEFAULT_CHECKLIST_CYCLE,\n): string {\n const idx = cycle.indexOf(current);\n if (idx === -1) return cycle[0] ?? current;\n return cycle[(idx + 1) % cycle.length] ?? current;\n}\n\n/** Strips inline markdown punctuation and truncates to a plain preview. */\nexport function truncatePlain(body: string, max = 80): string {\n const plain = body.replace(/[#*_`~>[\\]()!]/g, \"\").trim();\n return plain.length > max ? `${plain.slice(0, max)}…` : plain;\n}\n\nfunction authorKindOf(comment: Comment): CommentMentionKind {\n return comment.author?.kind ?? \"user\";\n}\n\n/**\n * Filters a comment list by status / facets / author kind while keeping threads\n * intact: a reply survives iff its root survives. An empty status set or empty\n * per-facet set means \"no constraint\" for that axis.\n */\nexport function applyCommentFilters(\n comments: Comment[],\n filters: CommentFilters,\n config: CommentConfig,\n): Comment[] {\n const facetKeys = (config.facets ?? []).map((f) => f.key);\n const passingRootIds = new Set<string>();\n\n for (const root of getRoots(comments)) {\n if (\n filters.statuses.size > 0 &&\n (root.status == null || !filters.statuses.has(root.status))\n ) {\n continue;\n }\n if (\n filters.authorKind &&\n filters.authorKind !== \"all\" &&\n authorKindOf(root) !== filters.authorKind\n ) {\n continue;\n }\n const facetsPass = facetKeys.every((key) => {\n const selected = filters.facets[key];\n if (!selected || selected.size === 0) return true;\n const value = root.facets?.[key];\n return value != null && selected.has(value);\n });\n if (!facetsPass) continue;\n passingRootIds.add(root.id);\n }\n\n return comments.filter((c) =>\n c.parentId ? passingRootIds.has(c.parentId) : passingRootIds.has(c.id),\n );\n}\n\n/** True when any filter axis constrains the result. */\nexport function hasActiveFilters(filters: CommentFilters): boolean {\n if (filters.statuses.size > 0) return true;\n if (filters.authorKind && filters.authorKind !== \"all\") return true;\n return Object.values(filters.facets).some((set) => set.size > 0);\n}\n\n/** An empty filter state. */\nexport function emptyCommentFilters(): CommentFilters {\n return { statuses: new Set(), facets: {}, authorKind: \"all\" };\n}\n\n/** Finds mentionables whose `@name` token appears in a body (case-insensitive). */\nexport function matchMentionsInBody(\n body: string,\n mentionables: CommentMentionable[],\n): CommentMention[] {\n const lower = body.toLowerCase();\n return mentionables\n .filter((m) => lower.includes(`@${m.name.toLowerCase()}`))\n .map((m) => ({ id: m.id, name: m.name, kind: m.kind }));\n}\n\n/** Per-id handlers consumed by CommentThreadList. */\nexport type ThreadListHandlers = {\n onUpdateStatus?: (id: string, status: string) => void;\n onChecklistToggle?: (id: string, index: number) => void;\n onDelete?: (id: string) => void;\n onReply?: (parent: Comment, body: string) => void | Promise<void>;\n};\n\n/**\n * Adapts high-level {@link CommentCallbacks} into the id-keyed handlers a\n * {@link CommentThreadList} consumes: resolves the next checklist status from the\n * cycle and extracts mentions from a reply body. Shared by `CommentThread` and\n * `CommentSidePanel` so the adaptation lives in one place.\n */\nexport function buildThreadListHandlers(\n comments: Comment[],\n config: CommentConfig,\n cb: CommentCallbacks,\n): ThreadListHandlers {\n const handlers: ThreadListHandlers = {};\n if (cb.onUpdateStatus) handlers.onUpdateStatus = cb.onUpdateStatus;\n if (cb.onDelete) handlers.onDelete = cb.onDelete;\n if (cb.onChecklistToggle) {\n const toggle = cb.onChecklistToggle;\n handlers.onChecklistToggle = (id, index) => {\n const item = comments.find((c) => c.id === id)?.checklist?.[index];\n if (!item) return;\n void toggle(\n id,\n index,\n nextChecklistStatus(item.status, config.checklistStatusCycle),\n );\n };\n }\n if (cb.onReply) {\n const reply = cb.onReply;\n const onMention = cb.onMention;\n handlers.onReply = async (parent, body) => {\n const mentions = matchMentionsInBody(body, config.mentionables ?? []);\n await reply({\n parentId: parent.id,\n body,\n anchor: parent.anchor ?? null,\n ...(mentions.length > 0 ? { mentions } : {}),\n });\n for (const mention of mentions) onMention?.(mention, { body });\n };\n }\n return handlers;\n}\n"],"names":[],"mappings":";AAqBO,SAAS,kBAAkB,QAAsC;;AACtE,WAAO,sCAAQ,SAAR,mBAAc,WAAU;AACjC;AAGO,SAAS,gBAAgB,MAA0C;AACxE,UAAQ,MAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL;AACE,aAAO;AAAA,EAAA;AAEb;AAGO,SAAS,oBACd,QACA,OACiC;AACjC,MAAI,SAAS,KAAM,QAAO;AAC1B,SAAO,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,UAAU,KAAK;AACtD;AAGO,SAAS,mBACd,OACA,OACgC;AAChC,MAAI,SAAS,KAAM,QAAO;AAC1B,SAAO,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,UAAU,KAAK;AACpD;AAGO,SAAS,mBAAmB,QAA2C;;AAC5E,QAAM,aAAa,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,UAAU;AAC3D,UAAQ,mBAAc,OAAO,SAAS,CAAC,MAA/B,mBAAmC;AAC7C;AAGO,SAAS,aACd,QACA,QACS;;AACT,WAAO,yBAAoB,QAAQ,MAAM,MAAlC,mBAAqC,eAAc;AAC5D;AAGO,SAAS,SAAS,UAAgC;AACvD,SAAO,SAAS,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ;AAC3C;AAGO,SAAS,cAAc,UAA6C;AACzE,QAAM,0BAAU,IAAA;AAChB,aAAW,SAAS,UAAU;AAC5B,QAAI,CAAC,MAAM,SAAU;AACrB,UAAM,QAAQ,IAAI,IAAI,MAAM,QAAQ,KAAK,CAAA;AACzC,UAAM,KAAK,KAAK;AAChB,QAAI,IAAI,MAAM,UAAU,KAAK;AAAA,EAC/B;AACA,SAAO;AACT;AAOO,SAAS,oBACd,UACA,QACW;AACX,QAAM,QAAQ,SAAS;AAAA,IACrB,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,UAAU,qBAAqB;AAAA,EAAA;AAE1D,QAAM,MAAM,IAAI,IAAI,MAAM,IAAI,CAAC,MAAM,OAAO,EAAE,EAAE,CAAC,CAAC;AAClD,QAAM,cAAyB,CAAA;AAE/B,WAAS,OAAO,MAAM,QAAQ;AAC5B,WAAO;AACP,eAAW,KAAK,UAAU;AACxB,UAAI,CAAC,EAAE,YAAY,IAAI,IAAI,OAAO,EAAE,EAAE,CAAC,EAAG;AAC1C,UAAI,CAAC,IAAI,IAAI,OAAO,EAAE,QAAQ,CAAC,EAAG;AAClC,UAAI,IAAI,OAAO,EAAE,EAAE,CAAC;AACpB,kBAAY,KAAK,CAAC;AAClB,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO,CAAC,GAAG,OAAO,GAAG,WAAW;AAClC;AAMO,SAAS,wBACd,UACA,QACW;AACX,QAAM,OAAO,IAAI;AAAA,IACf,SAAS,QAAQ,EACd,OAAO,CAAC,SAAS,KAAK,UAAU,QAAQ,aAAa,QAAQ,KAAK,MAAM,CAAC,EACzE,IAAI,CAAC,SAAS,OAAO,KAAK,EAAE,CAAC;AAAA,EAAA;AAElC,SAAO,SAAS,OAAO,CAAC,MAAM,KAAK,IAAI,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;AACpE;AAGO,SAAS,YAAY,SAA+B;AACzD,SAAO,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM;AACjC,QAAI,EAAE,cAAc,EAAE;AACpB,aAAO,EAAE,UAAU,cAAc,EAAE,SAAS;AAC9C,WAAO,OAAO,EAAE,EAAE,EAAE,cAAc,OAAO,EAAE,EAAE,CAAC;AAAA,EAChD,CAAC;AACH;AAGO,SAAS,aACd,UACA,UACwB;;AACxB,QAAM,0BAAU,IAAA;AAChB,aAAW,QAAQ,SAAS,QAAQ,GAAG;AACrC,UAAM,QAAM,UAAK,WAAL,mBAAc,cAAa;AACvC,UAAM,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAA;AAC9B,UAAM,KAAK,IAAI;AACf,QAAI,IAAI,KAAK,KAAK;AAAA,EACpB;AACA,SAAO;AACT;AAGO,SAAS,mBACd,UAC+B;AAC/B,QAAM,SAAwC,CAAA;AAC9C,aAAW,KAAK,UAAU;AACxB,UAAM,MAAM,EAAE,UAAU;AACxB,WAAO,GAAG,KAAK,OAAO,GAAG,KAAK,KAAK;AAAA,EACrC;AACA,SAAO;AACT;AAGO,SAAS,iBACd,UAC0C;AAC1C,QAAM,UAA4C,CAAA;AAClD,aAAW,KAAK,UAAU;AACxB,UAAM,MAAM,EAAE,UAAU;AACxB,KAAC,gCAAiB,CAAA,IAAI,KAAK,CAAC;AAAA,EAC9B;AACA,QAAM,OAAiD,CAAA;AACvD,aAAW,CAAC,QAAQ,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG;AACrD,UAAM,UAAU;AAAA,MACd,GAAG,IAAI;AAAA,QACL,MAAM,IAAI,CAAC,MAAA;;AAAM,yBAAE,WAAF,mBAAU;AAAA,SAAI,EAAE,OAAO,CAAC,MAAmB,CAAC,CAAC,CAAC;AAAA,MAAA;AAAA,IACjE;AAEF,UAAM,SAAS,MAAM;AAAA,MAAO,CAAC,GAAG,OAC7B,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,IAAI;AAAA,IAAA;AAEpE,SAAK,MAAM,IAAI;AAAA,MACb,OAAO,MAAM;AAAA,MACb;AAAA,MACA,GAAI,OAAO,UAAU,OAAO,EAAE,cAAc,OAAO,WAAW,CAAA;AAAA,IAAC;AAAA,EAEnE;AACA,SAAO;AACT;AAGO,SAAS,sBACd,QACA,QACA,YAAY,KACJ;AACR,MAAI,QAAQ;AACZ,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AACjD,QAAI,QAAQ,UAAU,IAAI,WAAW,SAAS,SAAS,EAAG,UAAS;AAAA,EACrE;AACA,SAAO;AACT;AAGO,SAAS,oBACd,SACA,QAAQ,yBACA;AACR,QAAM,MAAM,MAAM,QAAQ,OAAO;AACjC,MAAI,QAAQ,GAAI,QAAO,MAAM,CAAC,KAAK;AACnC,SAAO,OAAO,MAAM,KAAK,MAAM,MAAM,KAAK;AAC5C;AAGO,SAAS,cAAc,MAAc,MAAM,IAAY;AAC5D,QAAM,QAAQ,KAAK,QAAQ,mBAAmB,EAAE,EAAE,KAAA;AAClD,SAAO,MAAM,SAAS,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM;AAC1D;AAEA,SAAS,aAAa,SAAsC;;AAC1D,WAAO,aAAQ,WAAR,mBAAgB,SAAQ;AACjC;AAOO,SAAS,oBACd,UACA,SACA,QACW;AACX,QAAM,aAAa,OAAO,UAAU,CAAA,GAAI,IAAI,CAAC,MAAM,EAAE,GAAG;AACxD,QAAM,qCAAqB,IAAA;AAE3B,aAAW,QAAQ,SAAS,QAAQ,GAAG;AACrC,QACE,QAAQ,SAAS,OAAO,MACvB,KAAK,UAAU,QAAQ,CAAC,QAAQ,SAAS,IAAI,KAAK,MAAM,IACzD;AACA;AAAA,IACF;AACA,QACE,QAAQ,cACR,QAAQ,eAAe,SACvB,aAAa,IAAI,MAAM,QAAQ,YAC/B;AACA;AAAA,IACF;AACA,UAAM,aAAa,UAAU,MAAM,CAAC,QAAQ;;AAC1C,YAAM,WAAW,QAAQ,OAAO,GAAG;AACnC,UAAI,CAAC,YAAY,SAAS,SAAS,EAAG,QAAO;AAC7C,YAAM,SAAQ,UAAK,WAAL,mBAAc;AAC5B,aAAO,SAAS,QAAQ,SAAS,IAAI,KAAK;AAAA,IAC5C,CAAC;AACD,QAAI,CAAC,WAAY;AACjB,mBAAe,IAAI,KAAK,EAAE;AAAA,EAC5B;AAEA,SAAO,SAAS;AAAA,IAAO,CAAC,MACtB,EAAE,WAAW,eAAe,IAAI,EAAE,QAAQ,IAAI,eAAe,IAAI,EAAE,EAAE;AAAA,EAAA;AAEzE;AAGO,SAAS,iBAAiB,SAAkC;AACjE,MAAI,QAAQ,SAAS,OAAO,EAAG,QAAO;AACtC,MAAI,QAAQ,cAAc,QAAQ,eAAe,MAAO,QAAO;AAC/D,SAAO,OAAO,OAAO,QAAQ,MAAM,EAAE,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC;AACjE;AAGO,SAAS,sBAAsC;AACpD,SAAO,EAAE,UAAU,oBAAI,IAAA,GAAO,QAAQ,CAAA,GAAI,YAAY,MAAA;AACxD;AAGO,SAAS,oBACd,MACA,cACkB;AAClB,QAAM,QAAQ,KAAK,YAAA;AACnB,SAAO,aACJ,OAAO,CAAC,MAAM,MAAM,SAAS,IAAI,EAAE,KAAK,YAAA,CAAa,EAAE,CAAC,EACxD,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,EAAE,KAAA,EAAO;AAC1D;AAgBO,SAAS,wBACd,UACA,QACA,IACoB;AACpB,QAAM,WAA+B,CAAA;AACrC,MAAI,GAAG,eAAgB,UAAS,iBAAiB,GAAG;AACpD,MAAI,GAAG,SAAU,UAAS,WAAW,GAAG;AACxC,MAAI,GAAG,mBAAmB;AACxB,UAAM,SAAS,GAAG;AAClB,aAAS,oBAAoB,CAAC,IAAI,UAAU;;AAC1C,YAAM,QAAO,oBAAS,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,MAAhC,mBAAmC,cAAnC,mBAA+C;AAC5D,UAAI,CAAC,KAAM;AACX,WAAK;AAAA,QACH;AAAA,QACA;AAAA,QACA,oBAAoB,KAAK,QAAQ,OAAO,oBAAoB;AAAA,MAAA;AAAA,IAEhE;AAAA,EACF;AACA,MAAI,GAAG,SAAS;AACd,UAAM,QAAQ,GAAG;AACjB,UAAM,YAAY,GAAG;AACrB,aAAS,UAAU,OAAO,QAAQ,SAAS;AACzC,YAAM,WAAW,oBAAoB,MAAM,OAAO,gBAAgB,CAAA,CAAE;AACpE,YAAM,MAAM;AAAA,QACV,UAAU,OAAO;AAAA,QACjB;AAAA,QACA,QAAQ,OAAO,UAAU;AAAA,QACzB,GAAI,SAAS,SAAS,IAAI,EAAE,SAAA,IAAa,CAAA;AAAA,MAAC,CAC3C;AACD,iBAAW,WAAW,SAAU,wCAAY,SAAS,EAAE;IACzD;AAAA,EACF;AACA,SAAO;AACT;"}
package/dist/comments.cjs CHANGED
@@ -35,6 +35,8 @@ exports.matchMentionsInBody = commentUtils.matchMentionsInBody;
35
35
  exports.nextChecklistStatus = commentUtils.nextChecklistStatus;
36
36
  exports.resolveFacetOption = commentUtils.resolveFacetOption;
37
37
  exports.resolveStatusConfig = commentUtils.resolveStatusConfig;
38
+ exports.selectAnchorThreads = commentUtils.selectAnchorThreads;
39
+ exports.selectUnresolvedThreads = commentUtils.selectUnresolvedThreads;
38
40
  exports.sortReplies = commentUtils.sortReplies;
39
41
  exports.toneToBadgeTone = commentUtils.toneToBadgeTone;
40
42
  exports.truncatePlain = commentUtils.truncatePlain;
@@ -1 +1 @@
1
- {"version":3,"file":"comments.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"comments.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/comments.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { DEFAULT_CHECKLIST_CYCLE, DEFAULT_COMMENT_STATUSES, DOCUMENT_ANCHOR } from "./comments/comment-types.js";
2
- import { applyCommentFilters, authorDisplayName, buildReplyMap, buildThreadListHandlers, commentCountForPrefix, defaultStatusValue, deriveAnchorCounts, deriveAnchorMeta, emptyCommentFilters, getRoots, groupByFacet, hasActiveFilters, isUnresolved, matchMentionsInBody, nextChecklistStatus, resolveFacetOption, resolveStatusConfig, sortReplies, toneToBadgeTone, truncatePlain } from "./comments/comment-utils.js";
2
+ import { applyCommentFilters, authorDisplayName, buildReplyMap, buildThreadListHandlers, commentCountForPrefix, defaultStatusValue, deriveAnchorCounts, deriveAnchorMeta, emptyCommentFilters, getRoots, groupByFacet, hasActiveFilters, isUnresolved, matchMentionsInBody, nextChecklistStatus, resolveFacetOption, resolveStatusConfig, selectAnchorThreads, selectUnresolvedThreads, sortReplies, toneToBadgeTone, truncatePlain } from "./comments/comment-utils.js";
3
3
  import { CommentMarkdown } from "./comments/CommentMarkdown.js";
4
4
  import { CommentAuthorAvatar } from "./comments/CommentAuthor.js";
5
5
  import { MentionTextarea } from "./comments/MentionTextarea.js";
@@ -48,6 +48,8 @@ export {
48
48
  nextChecklistStatus,
49
49
  resolveFacetOption,
50
50
  resolveStatusConfig,
51
+ selectAnchorThreads,
52
+ selectUnresolvedThreads,
51
53
  sortReplies,
52
54
  strictAnchorResolver,
53
55
  toneToBadgeTone,
@@ -18,6 +18,7 @@ function AccordionList({
18
18
  renderHeader,
19
19
  renderBody,
20
20
  renderActions,
21
+ renderMeta,
21
22
  summary,
22
23
  itemLabel,
23
24
  allowReorder = false,
@@ -157,6 +158,7 @@ function AccordionList({
157
158
  };
158
159
  const label = (itemLabel == null ? void 0 : itemLabel({ item, index: i })) ?? `Item ${i + 1}`;
159
160
  const actions = renderActions == null ? void 0 : renderActions(slotCtx);
161
+ const meta = renderMeta == null ? void 0 : renderMeta(slotCtx);
160
162
  const dragEnabled = allowDrag && !readOnly && ((canDrag == null ? void 0 : canDrag({ item, index: i })) ?? true);
161
163
  const droppable = dragEnabled && dragFrom !== null && dragFrom !== i;
162
164
  const edge = droppable ? dropEdge(i) : null;
@@ -239,6 +241,7 @@ function AccordionList({
239
241
  ]
240
242
  }
241
243
  ),
244
+ meta,
242
245
  !readOnly && (allowReorder || allowDuplicate || allowRemove || actions) && /* @__PURE__ */ jsxRuntime.jsx(
243
246
  ItemActions.ItemActions,
244
247
  {
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionList.cjs","sources":["../../src/components/AccordionList.tsx"],"sourcesContent":["import {\n useEffect,\n useRef,\n useState,\n type KeyboardEvent,\n type MutableRefObject,\n type ReactNode,\n} from \"react\";\nimport { duplicateIndex, moveItem, removeIndex, setIndex } from \"../lib/collections\";\nimport type { SizeToken } from \"../lib/size\";\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../data/Icon\";\nimport { UiAdd, UiChevronDown, UiChevronRight, UiDotsVertical } from \"../icons\";\nimport { ItemActions } from \"./ItemActions\";\nimport { labelSizeClass } from \"./json-schema-form-size\";\n\n// AccordionList renders a list of items as one-line rows, expanding one at a\n// time into that item's own editor. It exists because a ten-field item stacked\n// in full costs ~700px of screen each, and a column of them says nothing about\n// which item is which.\n//\n// It knows nothing about what an item IS: `renderHeader` fills the collapsed\n// row, `renderBody` fills the open panel, and everything structural — the\n// disclosure, the aria pairing, roving arrow-key focus, the mutation buttons,\n// the add row — belongs to the list. Every editing capability is opt-in, so the\n// same component serves a read-only summary list and a full editor.\n//\n// \"Add\" is the list's own last row rather than a button beside it: the\n// affordance sits exactly where the next item will appear, and at zero items\n// that same row IS the empty state — one control, no separate screen.\n\n/** Handed to every slot, describing one row. */\nexport interface AccordionListItemContext<T> {\n item: T;\n index: number;\n open: boolean;\n /** Replaces this item in place, committing the whole list through `onChange`. */\n onChange: (next: T) => void;\n /** The ids the disclosure/panel pair is wired with. */\n headerId: string;\n panelId: string;\n}\n\nexport interface AccordionListProps<T> {\n items: T[];\n /** Receives the whole next list for every add, remove, duplicate, move or item edit. */\n onChange?: (next: T[]) => void;\n\n /** Row content, rendered inside the disclosure button after the chevron. */\n renderHeader: (ctx: AccordionListItemContext<T>) => ReactNode;\n /** Panel content. Rendered only while the row is open — never hidden with CSS. */\n renderBody: (ctx: AccordionListItemContext<T>) => ReactNode;\n /** Extra per-row actions, rendered before the built-in ones. */\n renderActions?: (ctx: AccordionListItemContext<T>) => ReactNode;\n /** Content above the list — typically the item count. */\n summary?: ReactNode;\n /** Names an item in its actions' accessible labels. Defaults to `Item <n>`. */\n itemLabel?: (ctx: { item: T; index: number }) => string;\n\n /** Offer the up/down reorder buttons. */\n allowReorder?: boolean;\n /**\n * Offer a grab handle at the head of every row, and drag-to-reorder across\n * the list. Arrow keys on a focused handle move the row too, so the gesture\n * is not mouse-only.\n */\n allowDrag?: boolean;\n /**\n * Whether a row takes part in dragging — as a source and as a destination.\n * Defaults to every row. A list holding rows that have no position of their\n * own (a filtered-out item, a soft-deleted one) says so here.\n */\n canDrag?: (ctx: { item: T; index: number }) => boolean;\n /**\n * Commits a completed drag or handle keypress. Defaults to the same move the\n * reorder buttons perform; a list whose order lives outside `items` (a\n * filtered view of a longer list) reorders the source through this instead.\n */\n onReorder?: (from: number, to: number) => void;\n /** Offer the duplicate button. */\n allowDuplicate?: boolean;\n /** Offer the remove button. */\n allowRemove?: boolean;\n /** Copy override for duplicate. Defaults to a one-level clone. */\n cloneItem?: (item: T) => T;\n /**\n * Reveal the per-row actions on hover/focus (the default). Pass false where an\n * action carries state the row has to show at rest — a visibility toggle whose\n * glyph says whether the item is hidden answers a question, not just offers a\n * click.\n */\n revealActions?: boolean;\n\n /** Seeds a new item. Supplying it is what adds the trailing add row. */\n onCreate?: () => T;\n /** Add-row text. Defaults to \"Add item\". */\n addLabel?: string;\n /** Add-row copy; grows into the empty state at zero items. */\n addDescription?: string;\n\n /** Controlled open row — an index, or null for none. */\n expanded?: number | null;\n /** Initially open row for uncontrolled usage. Defaults to none. */\n defaultExpanded?: number | null;\n onExpandedChange?: (index: number | null) => void;\n\n /** Hides the add row and every per-row action. Rows still open. */\n readOnly?: boolean;\n size?: SizeToken;\n /** Stem for the generated header/panel ids. */\n idPrefix?: string;\n /** Overrides the per-row id stem (e.g. with a JSON-Pointer instance path). */\n itemId?: (index: number) => string;\n /** Selector focused inside a freshly added row's panel. */\n focusSelector?: string;\n className?: string;\n listClassName?: string;\n rowClassName?: string;\n bodyClassName?: string;\n}\n\nconst DEFAULT_FOCUS_SELECTOR = \"[data-autofocus], input, select, textarea\";\n\nexport function AccordionList<T>({\n items,\n onChange,\n renderHeader,\n renderBody,\n renderActions,\n summary,\n itemLabel,\n allowReorder = false,\n allowDrag = false,\n canDrag,\n onReorder,\n allowDuplicate = false,\n allowRemove = false,\n revealActions = true,\n cloneItem,\n onCreate,\n addLabel = \"Add item\",\n addDescription,\n expanded: expandedProp,\n defaultExpanded = null,\n onExpandedChange,\n readOnly = false,\n size = \"md\",\n idPrefix = \"accordion\",\n itemId,\n focusSelector = DEFAULT_FOCUS_SELECTOR,\n className,\n listClassName,\n rowClassName,\n bodyClassName,\n}: AccordionListProps<T>) {\n // Which row is open is transient view state, deliberately local and never\n // persisted. The INDEX is the key, not the item: an editor typically replaces\n // the item object on every keystroke, so any identity-based map would die on\n // the first character typed. That makes it the mutators' job to keep this\n // pointing at the same row.\n const isControlled = expandedProp !== undefined;\n const [innerExpanded, setInnerExpanded] = useState<number | null>(defaultExpanded);\n const expanded = isControlled ? expandedProp : innerExpanded;\n\n // The in-flight drag: the row being dragged and the row the pointer is over.\n const [dragFrom, setDragFrom] = useState<number | null>(null);\n const [dragOver, setDragOver] = useState<number | null>(null);\n\n const rowRefs = useRef<Array<HTMLButtonElement | null>>([]);\n const addRef = useRef<HTMLButtonElement | null>(null);\n const pendingFocus = useRef<{ kind: \"panel\" | \"row\" | \"add\"; index: number } | null>(null);\n\n useEffect(() => {\n const pending = pendingFocus.current;\n if (!pending) return;\n pendingFocus.current = null;\n if (pending.kind === \"add\") {\n addRef.current?.focus();\n return;\n }\n const row = rowRefs.current[pending.index];\n if (pending.kind === \"row\") {\n row?.focus();\n return;\n }\n // Land in the new item's first editable control, so adding an item leaves\n // the caret where the author is about to type.\n const panel = document.getElementById(panelId(pending.index));\n (panel?.querySelector<HTMLElement>(focusSelector) ?? row)?.focus();\n });\n\n function rowId(index: number): string {\n return itemId ? itemId(index) : `${idPrefix}-${index}`;\n }\n function panelId(index: number): string {\n return `${rowId(index)}-panel`;\n }\n function headerId(index: number): string {\n return `${rowId(index)}-header`;\n }\n\n function expand(next: number | null) {\n if (!isControlled) setInnerExpanded(next);\n onExpandedChange?.(next);\n }\n // A mutator moves the open row without the caller having asked to expand\n // anything, so it maps the current index rather than setting an absolute one.\n function reindexExpanded(map: (open: number | null) => number | null) {\n const next = map(expanded);\n if (next !== expanded) expand(next);\n }\n\n function commit(next: T[]) {\n onChange?.(next);\n }\n\n function add() {\n if (!onCreate) return;\n pendingFocus.current = { kind: \"panel\", index: items.length };\n expand(items.length);\n commit([...items, onCreate()]);\n }\n\n function remove(index: number) {\n reindexExpanded((open) =>\n open === index ? null : open !== null && open > index ? open - 1 : open,\n );\n pendingFocus.current =\n items.length === 1\n ? { kind: \"add\", index: 0 }\n : { kind: \"row\", index: Math.max(index - 1, 0) };\n commit(removeIndex(items, index));\n }\n\n function duplicate(index: number) {\n reindexExpanded((open) => (open !== null && open > index ? open + 1 : open));\n pendingFocus.current = { kind: \"row\", index: index + 1 };\n commit(duplicateIndex(items, index, cloneItem));\n }\n\n /** Where a drag would land, so the row can draw the insertion line. */\n function dropEdge(index: number): \"top\" | \"bottom\" | null {\n if (dragFrom === null || dragOver !== index || dragFrom === index) return null;\n return dragFrom < index ? \"bottom\" : \"top\";\n }\n\n function endDrag() {\n setDragFrom(null);\n setDragOver(null);\n }\n\n function reorder(from: number, to: number) {\n if (from === to) return;\n if (onReorder) onReorder(from, to);\n else move(from, to);\n }\n\n function move(index: number, to: number) {\n if (to < 0 || to >= items.length) return;\n // Follow the item, not the slot — otherwise moving an open row silently\n // expands whichever row took its place.\n reindexExpanded((open) => (open === index ? to : open === to ? index : open));\n pendingFocus.current = { kind: \"row\", index: to };\n commit(moveItem(items, index, to));\n }\n\n // Roving focus across the headers, with the add row as the final stop.\n function handleKeyDown(e: KeyboardEvent<HTMLButtonElement>, index: number) {\n const stops = rowRefs.current.length;\n const focusAt = (i: number) => {\n e.preventDefault();\n (i >= stops ? addRef.current : rowRefs.current[i])?.focus();\n };\n if (e.key === \"ArrowDown\") focusAt(Math.min(index + 1, stops));\n else if (e.key === \"ArrowUp\" && index > 0) focusAt(index - 1);\n else if (e.key === \"Home\") focusAt(0);\n else if (e.key === \"End\") focusAt(stops);\n }\n\n return (\n <div className={cn(\"flex flex-col gap-2\", className)}>\n {summary !== undefined && (\n <p className={cn(\"text-muted-foreground\", labelSizeClass[size])}>{summary}</p>\n )}\n <div\n className={cn(\"divide-y divide-border rounded-lg border border-border\", listClassName)}\n >\n {items.map((item, i) => {\n const open = expanded === i;\n const slotCtx: AccordionListItemContext<T> = {\n item,\n index: i,\n open,\n onChange: (next) => commit(setIndex(items, i, next)),\n headerId: headerId(i),\n panelId: panelId(i),\n };\n const label = itemLabel?.({ item, index: i }) ?? `Item ${i + 1}`;\n const actions = renderActions?.(slotCtx);\n const dragEnabled = allowDrag && !readOnly && (canDrag?.({ item, index: i }) ?? true);\n const droppable = dragEnabled && dragFrom !== null && dragFrom !== i;\n const edge = droppable ? dropEdge(i) : null;\n return (\n <div key={i} className=\"group\">\n {/* The row is a plain element, NOT a button: the actions beside it\n are buttons, and nesting interactive content is invalid DOM\n with undefined click targeting. Only the disclosure toggles. */}\n <div\n data-accordion-row\n data-drop-edge={edge ?? undefined}\n onDragOver={(e) => {\n if (!droppable) return;\n e.preventDefault();\n e.dataTransfer.dropEffect = \"move\";\n setDragOver(i);\n }}\n onDrop={(e) => {\n if (!droppable || dragFrom === null) return;\n e.preventDefault();\n reorder(dragFrom, i);\n endDrag();\n }}\n className={cn(\n \"flex w-full items-center gap-2 px-3 py-2 hover:bg-accent/40\",\n i % 2 === 0 ? \"bg-card\" : \"bg-muted/20\",\n open && \"bg-accent/30\",\n dragFrom === i && \"opacity-40\",\n edge === \"top\" && \"shadow-[inset_0_2px_0_0_var(--color-primary)]\",\n edge === \"bottom\" && \"shadow-[inset_0_-2px_0_0_var(--color-primary)]\",\n rowClassName,\n )}\n >\n {allowDrag && !readOnly && (\n <button\n type=\"button\"\n aria-label={`Reorder ${label}`}\n title={`Reorder ${label}`}\n disabled={!dragEnabled}\n draggable={dragEnabled}\n onDragStart={(e) => {\n e.dataTransfer.effectAllowed = \"move\";\n e.dataTransfer.setData(\"text/plain\", String(i));\n // Drag the row, not the handle glyph the pointer grabbed.\n const row = e.currentTarget.closest(\"[data-accordion-row]\");\n if (row instanceof HTMLElement) e.dataTransfer.setDragImage(row, 12, 12);\n setDragFrom(i);\n }}\n onDragEnd={endDrag}\n onKeyDown={(e) => {\n const to = e.key === \"ArrowUp\" ? i - 1 : e.key === \"ArrowDown\" ? i + 1 : i;\n if (to === i || to < 0 || to >= items.length) return;\n e.preventDefault();\n reorder(i, to);\n }}\n className=\"shrink-0 cursor-grab rounded text-muted-foreground hover:text-foreground active:cursor-grabbing disabled:cursor-default disabled:opacity-30\"\n >\n <Icon icon={UiDotsVertical} className=\"text-sm\" />\n </button>\n )}\n <button\n type=\"button\"\n id={headerId(i)}\n aria-expanded={open}\n aria-controls={panelId(i)}\n ref={(el) => {\n rowRefs.current[i] = el;\n }}\n onKeyDown={(e) => handleKeyDown(e, i)}\n onClick={() => expand(open ? null : i)}\n className=\"flex min-w-0 flex-1 items-center gap-2 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <Icon\n icon={open ? UiChevronDown : UiChevronRight}\n className=\"shrink-0 text-sm text-muted-foreground\"\n />\n {renderHeader(slotCtx)}\n </button>\n {!readOnly && (allowReorder || allowDuplicate || allowRemove || actions) && (\n <ItemActions\n label={label}\n index={i}\n count={items.length}\n size={size}\n reveal={revealActions}\n {...(actions ? { leading: actions } : {})}\n {...(allowReorder ? { onMove: (to: number) => move(i, to) } : {})}\n {...(allowDuplicate ? { onDuplicate: () => duplicate(i) } : {})}\n {...(allowRemove ? { onRemove: () => remove(i) } : {})}\n />\n )}\n </div>\n {open && (\n <div\n id={panelId(i)}\n role=\"region\"\n aria-labelledby={headerId(i)}\n className={cn(\"border-t border-border bg-muted/20 p-3\", bodyClassName)}\n >\n {renderBody(slotCtx)}\n </div>\n )}\n </div>\n );\n })}\n {!readOnly && onCreate && (\n <AddItemRow\n buttonRef={addRef}\n label={addLabel}\n empty={items.length === 0}\n onAdd={add}\n onKeyDown={(e) => handleKeyDown(e, items.length)}\n {...(addDescription ? { copy: addDescription } : {})}\n />\n )}\n </div>\n </div>\n );\n}\n\n// AddItemRow is the list's own final row. At zero items it grows to carry the\n// explanation of what an item is — so the empty state is the same control the\n// author will use, not a separate screen they have to leave.\nfunction AddItemRow({\n label,\n copy,\n empty,\n onAdd,\n onKeyDown,\n buttonRef,\n}: {\n label: string;\n copy?: string;\n empty: boolean;\n onAdd: () => void;\n onKeyDown: (e: KeyboardEvent<HTMLButtonElement>) => void;\n buttonRef: MutableRefObject<HTMLButtonElement | null>;\n}) {\n return (\n <button\n type=\"button\"\n ref={(el) => {\n buttonRef.current = el;\n }}\n onClick={onAdd}\n onKeyDown={onKeyDown}\n className={cn(\n \"group/add flex w-full items-center gap-2 px-3 py-2 text-left text-muted-foreground hover:bg-accent/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring\",\n empty && \"items-start py-5\",\n )}\n >\n {/* Holds the chevron column, so this row lines up with the ones above it. */}\n <Icon icon={UiChevronRight} className=\"shrink-0 text-sm opacity-0\" />\n <span className=\"inline-flex size-6 shrink-0 items-center justify-center rounded-md border border-dashed border-border text-foreground/60 group-hover/add:border-primary group-hover/add:text-primary\">\n <Icon icon={UiAdd} className=\"text-[13px]\" />\n </span>\n <span className=\"flex min-w-0 flex-col gap-0.5\">\n <span className=\"text-sm font-medium text-foreground\">{label}</span>\n {copy && (\n <span className={cn(\"text-xs\", empty ? \"max-w-xl leading-snug\" : \"truncate\")}>{copy}</span>\n )}\n </span>\n </button>\n );\n}\n"],"names":["useState","useRef","useEffect","removeIndex","duplicateIndex","moveItem","cn","jsx","labelSizeClass","jsxs","setIndex","Icon","UiDotsVertical","UiChevronDown","UiChevronRight","ItemActions","UiAdd"],"mappings":";;;;;;;;;;;;;AAyHA,MAAM,yBAAyB;AAExB,SAAS,cAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,UAAU;AAAA,EACV,kBAAkB;AAAA,EAClB;AAAA,EACA,WAAW;AAAA,EACX,OAAO;AAAA,EACP,WAAW;AAAA,EACX;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA0B;AAMxB,QAAM,eAAe,iBAAiB;AACtC,QAAM,CAAC,eAAe,gBAAgB,IAAIA,MAAAA,SAAwB,eAAe;AACjF,QAAM,WAAW,eAAe,eAAe;AAG/C,QAAM,CAAC,UAAU,WAAW,IAAIA,MAAAA,SAAwB,IAAI;AAC5D,QAAM,CAAC,UAAU,WAAW,IAAIA,MAAAA,SAAwB,IAAI;AAE5D,QAAM,UAAUC,MAAAA,OAAwC,EAAE;AAC1D,QAAM,SAASA,MAAAA,OAAiC,IAAI;AACpD,QAAM,eAAeA,MAAAA,OAAgE,IAAI;AAEzFC,QAAAA,UAAU,MAAM;;AACd,UAAM,UAAU,aAAa;AAC7B,QAAI,CAAC,QAAS;AACd,iBAAa,UAAU;AACvB,QAAI,QAAQ,SAAS,OAAO;AAC1B,mBAAO,YAAP,mBAAgB;AAChB;AAAA,IACF;AACA,UAAM,MAAM,QAAQ,QAAQ,QAAQ,KAAK;AACzC,QAAI,QAAQ,SAAS,OAAO;AAC1B,iCAAK;AACL;AAAA,IACF;AAGA,UAAM,QAAQ,SAAS,eAAe,QAAQ,QAAQ,KAAK,CAAC;AAC5D,KAAC,qCAAO,cAA2B,mBAAkB,QAApD,mBAA0D;AAAA,EAC7D,CAAC;AAED,WAAS,MAAM,OAAuB;AACpC,WAAO,SAAS,OAAO,KAAK,IAAI,GAAG,QAAQ,IAAI,KAAK;AAAA,EACtD;AACA,WAAS,QAAQ,OAAuB;AACtC,WAAO,GAAG,MAAM,KAAK,CAAC;AAAA,EACxB;AACA,WAAS,SAAS,OAAuB;AACvC,WAAO,GAAG,MAAM,KAAK,CAAC;AAAA,EACxB;AAEA,WAAS,OAAO,MAAqB;AACnC,QAAI,CAAC,aAAc,kBAAiB,IAAI;AACxC,yDAAmB;AAAA,EACrB;AAGA,WAAS,gBAAgB,KAA6C;AACpE,UAAM,OAAO,IAAI,QAAQ;AACzB,QAAI,SAAS,SAAU,QAAO,IAAI;AAAA,EACpC;AAEA,WAAS,OAAO,MAAW;AACzB,yCAAW;AAAA,EACb;AAEA,WAAS,MAAM;AACb,QAAI,CAAC,SAAU;AACf,iBAAa,UAAU,EAAE,MAAM,SAAS,OAAO,MAAM,OAAA;AACrD,WAAO,MAAM,MAAM;AACnB,WAAO,CAAC,GAAG,OAAO,SAAA,CAAU,CAAC;AAAA,EAC/B;AAEA,WAAS,OAAO,OAAe;AAC7B;AAAA,MAAgB,CAAC,SACf,SAAS,QAAQ,OAAO,SAAS,QAAQ,OAAO,QAAQ,OAAO,IAAI;AAAA,IAAA;AAErE,iBAAa,UACX,MAAM,WAAW,IACb,EAAE,MAAM,OAAO,OAAO,EAAA,IACtB,EAAE,MAAM,OAAO,OAAO,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAA;AACjD,WAAOC,YAAAA,YAAY,OAAO,KAAK,CAAC;AAAA,EAClC;AAEA,WAAS,UAAU,OAAe;AAChC,oBAAgB,CAAC,SAAU,SAAS,QAAQ,OAAO,QAAQ,OAAO,IAAI,IAAK;AAC3E,iBAAa,UAAU,EAAE,MAAM,OAAO,OAAO,QAAQ,EAAA;AACrD,WAAOC,YAAAA,eAAe,OAAO,OAAO,SAAS,CAAC;AAAA,EAChD;AAGA,WAAS,SAAS,OAAwC;AACxD,QAAI,aAAa,QAAQ,aAAa,SAAS,aAAa,MAAO,QAAO;AAC1E,WAAO,WAAW,QAAQ,WAAW;AAAA,EACvC;AAEA,WAAS,UAAU;AACjB,gBAAY,IAAI;AAChB,gBAAY,IAAI;AAAA,EAClB;AAEA,WAAS,QAAQ,MAAc,IAAY;AACzC,QAAI,SAAS,GAAI;AACjB,QAAI,UAAW,WAAU,MAAM,EAAE;AAAA,QAC5B,MAAK,MAAM,EAAE;AAAA,EACpB;AAEA,WAAS,KAAK,OAAe,IAAY;AACvC,QAAI,KAAK,KAAK,MAAM,MAAM,OAAQ;AAGlC,oBAAgB,CAAC,SAAU,SAAS,QAAQ,KAAK,SAAS,KAAK,QAAQ,IAAK;AAC5E,iBAAa,UAAU,EAAE,MAAM,OAAO,OAAO,GAAA;AAC7C,WAAOC,YAAAA,SAAS,OAAO,OAAO,EAAE,CAAC;AAAA,EACnC;AAGA,WAAS,cAAc,GAAqC,OAAe;AACzE,UAAM,QAAQ,QAAQ,QAAQ;AAC9B,UAAM,UAAU,CAAC,MAAc;;AAC7B,QAAE,eAAA;AACF,OAAC,UAAK,QAAQ,OAAO,UAAU,QAAQ,QAAQ,CAAC,MAA/C,mBAAmD;AAAA,IACtD;AACA,QAAI,EAAE,QAAQ,YAAa,SAAQ,KAAK,IAAI,QAAQ,GAAG,KAAK,CAAC;AAAA,aACpD,EAAE,QAAQ,aAAa,QAAQ,EAAG,SAAQ,QAAQ,CAAC;AAAA,aACnD,EAAE,QAAQ,OAAQ,SAAQ,CAAC;AAAA,aAC3B,EAAE,QAAQ,MAAO,SAAQ,KAAK;AAAA,EACzC;AAEA,yCACG,OAAA,EAAI,WAAWC,MAAAA,GAAG,uBAAuB,SAAS,GAChD,UAAA;AAAA,IAAA,YAAY,UACXC,2BAAAA,IAAC,KAAA,EAAE,WAAWD,MAAAA,GAAG,yBAAyBE,mBAAAA,eAAe,IAAI,CAAC,GAAI,UAAA,QAAA,CAAQ;AAAA,IAE5EC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWH,MAAAA,GAAG,0DAA0D,aAAa;AAAA,QAEpF,UAAA;AAAA,UAAA,MAAM,IAAI,CAAC,MAAM,MAAM;AACtB,kBAAM,OAAO,aAAa;AAC1B,kBAAM,UAAuC;AAAA,cAC3C;AAAA,cACA,OAAO;AAAA,cACP;AAAA,cACA,UAAU,CAAC,SAAS,OAAOI,YAAAA,SAAS,OAAO,GAAG,IAAI,CAAC;AAAA,cACnD,UAAU,SAAS,CAAC;AAAA,cACpB,SAAS,QAAQ,CAAC;AAAA,YAAA;AAEpB,kBAAM,SAAQ,uCAAY,EAAE,MAAM,OAAO,SAAQ,QAAQ,IAAI,CAAC;AAC9D,kBAAM,UAAU,+CAAgB;AAChC,kBAAM,cAAc,aAAa,CAAC,cAAa,mCAAU,EAAE,MAAM,OAAO,SAAQ;AAChF,kBAAM,YAAY,eAAe,aAAa,QAAQ,aAAa;AACnE,kBAAM,OAAO,YAAY,SAAS,CAAC,IAAI;AACvC,mBACED,2BAAAA,KAAC,OAAA,EAAY,WAAU,SAIrB,UAAA;AAAA,cAAAA,2BAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,sBAAkB;AAAA,kBAClB,kBAAgB,QAAQ;AAAA,kBACxB,YAAY,CAAC,MAAM;AACjB,wBAAI,CAAC,UAAW;AAChB,sBAAE,eAAA;AACF,sBAAE,aAAa,aAAa;AAC5B,gCAAY,CAAC;AAAA,kBACf;AAAA,kBACA,QAAQ,CAAC,MAAM;AACb,wBAAI,CAAC,aAAa,aAAa,KAAM;AACrC,sBAAE,eAAA;AACF,4BAAQ,UAAU,CAAC;AACnB,4BAAA;AAAA,kBACF;AAAA,kBACA,WAAWH,MAAAA;AAAAA,oBACT;AAAA,oBACA,IAAI,MAAM,IAAI,YAAY;AAAA,oBAC1B,QAAQ;AAAA,oBACR,aAAa,KAAK;AAAA,oBAClB,SAAS,SAAS;AAAA,oBAClB,SAAS,YAAY;AAAA,oBACrB;AAAA,kBAAA;AAAA,kBAGD,UAAA;AAAA,oBAAA,aAAa,CAAC,YACbC,2BAAAA;AAAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,MAAK;AAAA,wBACL,cAAY,WAAW,KAAK;AAAA,wBAC5B,OAAO,WAAW,KAAK;AAAA,wBACvB,UAAU,CAAC;AAAA,wBACX,WAAW;AAAA,wBACX,aAAa,CAAC,MAAM;AAClB,4BAAE,aAAa,gBAAgB;AAC/B,4BAAE,aAAa,QAAQ,cAAc,OAAO,CAAC,CAAC;AAE9C,gCAAM,MAAM,EAAE,cAAc,QAAQ,sBAAsB;AAC1D,8BAAI,eAAe,YAAa,GAAE,aAAa,aAAa,KAAK,IAAI,EAAE;AACvE,sCAAY,CAAC;AAAA,wBACf;AAAA,wBACA,WAAW;AAAA,wBACX,WAAW,CAAC,MAAM;AAChB,gCAAM,KAAK,EAAE,QAAQ,YAAY,IAAI,IAAI,EAAE,QAAQ,cAAc,IAAI,IAAI;AACzE,8BAAI,OAAO,KAAK,KAAK,KAAK,MAAM,MAAM,OAAQ;AAC9C,4BAAE,eAAA;AACF,kCAAQ,GAAG,EAAE;AAAA,wBACf;AAAA,wBACA,WAAU;AAAA,wBAEV,UAAAA,2BAAAA,IAACI,WAAA,EAAK,MAAMC,eAAAA,gBAAgB,WAAU,UAAA,CAAU;AAAA,sBAAA;AAAA,oBAAA;AAAA,oBAGpDH,2BAAAA;AAAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,MAAK;AAAA,wBACL,IAAI,SAAS,CAAC;AAAA,wBACd,iBAAe;AAAA,wBACf,iBAAe,QAAQ,CAAC;AAAA,wBACxB,KAAK,CAAC,OAAO;AACX,kCAAQ,QAAQ,CAAC,IAAI;AAAA,wBACvB;AAAA,wBACA,WAAW,CAAC,MAAM,cAAc,GAAG,CAAC;AAAA,wBACpC,SAAS,MAAM,OAAO,OAAO,OAAO,CAAC;AAAA,wBACrC,WAAU;AAAA,wBAEV,UAAA;AAAA,0BAAAF,2BAAAA;AAAAA,4BAACI,KAAAA;AAAAA,4BAAA;AAAA,8BACC,MAAM,OAAOE,cAAAA,gBAAgBC,eAAAA;AAAAA,8BAC7B,WAAU;AAAA,4BAAA;AAAA,0BAAA;AAAA,0BAEX,aAAa,OAAO;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBAAA;AAAA,oBAEtB,CAAC,aAAa,gBAAgB,kBAAkB,eAAe,YAC9DP,2BAAAA;AAAAA,sBAACQ,YAAAA;AAAAA,sBAAA;AAAA,wBACC;AAAA,wBACA,OAAO;AAAA,wBACP,OAAO,MAAM;AAAA,wBACb;AAAA,wBACA,QAAQ;AAAA,wBACP,GAAI,UAAU,EAAE,SAAS,QAAA,IAAY,CAAA;AAAA,wBACrC,GAAI,eAAe,EAAE,QAAQ,CAAC,OAAe,KAAK,GAAG,EAAE,EAAA,IAAM,CAAA;AAAA,wBAC7D,GAAI,iBAAiB,EAAE,aAAa,MAAM,UAAU,CAAC,EAAA,IAAM,CAAA;AAAA,wBAC3D,GAAI,cAAc,EAAE,UAAU,MAAM,OAAO,CAAC,EAAA,IAAM,CAAA;AAAA,sBAAC;AAAA,oBAAA;AAAA,kBACtD;AAAA,gBAAA;AAAA,cAAA;AAAA,cAGH,QACCR,2BAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,IAAI,QAAQ,CAAC;AAAA,kBACb,MAAK;AAAA,kBACL,mBAAiB,SAAS,CAAC;AAAA,kBAC3B,WAAWD,MAAAA,GAAG,0CAA0C,aAAa;AAAA,kBAEpE,qBAAW,OAAO;AAAA,gBAAA;AAAA,cAAA;AAAA,YACrB,EAAA,GAhGM,CAkGV;AAAA,UAEJ,CAAC;AAAA,UACA,CAAC,YAAY,YACZC,2BAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW;AAAA,cACX,OAAO;AAAA,cACP,OAAO,MAAM,WAAW;AAAA,cACxB,OAAO;AAAA,cACP,WAAW,CAAC,MAAM,cAAc,GAAG,MAAM,MAAM;AAAA,cAC9C,GAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAAA,YAAC;AAAA,UAAA;AAAA,QACpD;AAAA,MAAA;AAAA,IAAA;AAAA,EAEJ,GACF;AAEJ;AAKA,SAAS,WAAW;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOG;AACD,SACEE,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,KAAK,CAAC,OAAO;AACX,kBAAU,UAAU;AAAA,MACtB;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA,WAAWH,MAAAA;AAAAA,QACT;AAAA,QACA,SAAS;AAAA,MAAA;AAAA,MAIX,UAAA;AAAA,QAAAC,2BAAAA,IAACI,KAAAA,MAAA,EAAK,MAAMG,eAAAA,gBAAgB,WAAU,8BAA6B;AAAA,QACnEP,2BAAAA,IAAC,QAAA,EAAK,WAAU,wLACd,UAAAA,2BAAAA,IAACI,aAAK,MAAMK,MAAAA,OAAO,WAAU,cAAA,CAAc,EAAA,CAC7C;AAAA,QACAP,2BAAAA,KAAC,QAAA,EAAK,WAAU,iCACd,UAAA;AAAA,UAAAF,2BAAAA,IAAC,QAAA,EAAK,WAAU,uCAAuC,UAAA,OAAM;AAAA,UAC5D,QACCA,2BAAAA,IAAC,QAAA,EAAK,WAAWD,MAAAA,GAAG,WAAW,QAAQ,0BAA0B,UAAU,GAAI,UAAA,KAAA,CAAK;AAAA,QAAA,EAAA,CAExF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;;"}
1
+ {"version":3,"file":"AccordionList.cjs","sources":["../../src/components/AccordionList.tsx"],"sourcesContent":["import {\n useEffect,\n useRef,\n useState,\n type KeyboardEvent,\n type MutableRefObject,\n type ReactNode,\n} from \"react\";\nimport { duplicateIndex, moveItem, removeIndex, setIndex } from \"../lib/collections\";\nimport type { SizeToken } from \"../lib/size\";\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../data/Icon\";\nimport { UiAdd, UiChevronDown, UiChevronRight, UiDotsVertical } from \"../icons\";\nimport { ItemActions } from \"./ItemActions\";\nimport { labelSizeClass } from \"./json-schema-form-size\";\n\n// AccordionList renders a list of items as one-line rows, expanding one at a\n// time into that item's own editor. It exists because a ten-field item stacked\n// in full costs ~700px of screen each, and a column of them says nothing about\n// which item is which.\n//\n// It knows nothing about what an item IS: `renderHeader` fills the collapsed\n// row, `renderBody` fills the open panel, and everything structural — the\n// disclosure, the aria pairing, roving arrow-key focus, the mutation buttons,\n// the add row — belongs to the list. Every editing capability is opt-in, so the\n// same component serves a read-only summary list and a full editor.\n//\n// \"Add\" is the list's own last row rather than a button beside it: the\n// affordance sits exactly where the next item will appear, and at zero items\n// that same row IS the empty state — one control, no separate screen.\n\n/** Handed to every slot, describing one row. */\nexport interface AccordionListItemContext<T> {\n item: T;\n index: number;\n open: boolean;\n /** Replaces this item in place, committing the whole list through `onChange`. */\n onChange: (next: T) => void;\n /** The ids the disclosure/panel pair is wired with. */\n headerId: string;\n panelId: string;\n}\n\nexport interface AccordionListProps<T> {\n items: T[];\n /** Receives the whole next list for every add, remove, duplicate, move or item edit. */\n onChange?: (next: T[]) => void;\n\n /** Row content, rendered inside the disclosure button after the chevron. */\n renderHeader: (ctx: AccordionListItemContext<T>) => ReactNode;\n /** Panel content. Rendered only while the row is open — never hidden with CSS. */\n renderBody: (ctx: AccordionListItemContext<T>) => ReactNode;\n /** Extra per-row actions, rendered before the built-in ones. */\n renderActions?: (ctx: AccordionListItemContext<T>) => ReactNode;\n /** Persistent row metadata rendered between the disclosure and actions. */\n renderMeta?: (ctx: AccordionListItemContext<T>) => ReactNode;\n /** Content above the list — typically the item count. */\n summary?: ReactNode;\n /** Names an item in its actions' accessible labels. Defaults to `Item <n>`. */\n itemLabel?: (ctx: { item: T; index: number }) => string;\n\n /** Offer the up/down reorder buttons. */\n allowReorder?: boolean;\n /**\n * Offer a grab handle at the head of every row, and drag-to-reorder across\n * the list. Arrow keys on a focused handle move the row too, so the gesture\n * is not mouse-only.\n */\n allowDrag?: boolean;\n /**\n * Whether a row takes part in dragging — as a source and as a destination.\n * Defaults to every row. A list holding rows that have no position of their\n * own (a filtered-out item, a soft-deleted one) says so here.\n */\n canDrag?: (ctx: { item: T; index: number }) => boolean;\n /**\n * Commits a completed drag or handle keypress. Defaults to the same move the\n * reorder buttons perform; a list whose order lives outside `items` (a\n * filtered view of a longer list) reorders the source through this instead.\n */\n onReorder?: (from: number, to: number) => void;\n /** Offer the duplicate button. */\n allowDuplicate?: boolean;\n /** Offer the remove button. */\n allowRemove?: boolean;\n /** Copy override for duplicate. Defaults to a one-level clone. */\n cloneItem?: (item: T) => T;\n /**\n * Reveal the per-row actions on hover/focus (the default). Pass false where an\n * action carries state the row has to show at rest — a visibility toggle whose\n * glyph says whether the item is hidden answers a question, not just offers a\n * click.\n */\n revealActions?: boolean;\n\n /** Seeds a new item. Supplying it is what adds the trailing add row. */\n onCreate?: () => T;\n /** Add-row text. Defaults to \"Add item\". */\n addLabel?: string;\n /** Add-row copy; grows into the empty state at zero items. */\n addDescription?: string;\n\n /** Controlled open row — an index, or null for none. */\n expanded?: number | null;\n /** Initially open row for uncontrolled usage. Defaults to none. */\n defaultExpanded?: number | null;\n onExpandedChange?: (index: number | null) => void;\n\n /** Hides the add row and every per-row action. Rows still open. */\n readOnly?: boolean;\n size?: SizeToken;\n /** Stem for the generated header/panel ids. */\n idPrefix?: string;\n /** Overrides the per-row id stem (e.g. with a JSON-Pointer instance path). */\n itemId?: (index: number) => string;\n /** Selector focused inside a freshly added row's panel. */\n focusSelector?: string;\n className?: string;\n listClassName?: string;\n rowClassName?: string;\n bodyClassName?: string;\n}\n\nconst DEFAULT_FOCUS_SELECTOR = \"[data-autofocus], input, select, textarea\";\n\nexport function AccordionList<T>({\n items,\n onChange,\n renderHeader,\n renderBody,\n renderActions,\n renderMeta,\n summary,\n itemLabel,\n allowReorder = false,\n allowDrag = false,\n canDrag,\n onReorder,\n allowDuplicate = false,\n allowRemove = false,\n revealActions = true,\n cloneItem,\n onCreate,\n addLabel = \"Add item\",\n addDescription,\n expanded: expandedProp,\n defaultExpanded = null,\n onExpandedChange,\n readOnly = false,\n size = \"md\",\n idPrefix = \"accordion\",\n itemId,\n focusSelector = DEFAULT_FOCUS_SELECTOR,\n className,\n listClassName,\n rowClassName,\n bodyClassName,\n}: AccordionListProps<T>) {\n // Which row is open is transient view state, deliberately local and never\n // persisted. The INDEX is the key, not the item: an editor typically replaces\n // the item object on every keystroke, so any identity-based map would die on\n // the first character typed. That makes it the mutators' job to keep this\n // pointing at the same row.\n const isControlled = expandedProp !== undefined;\n const [innerExpanded, setInnerExpanded] = useState<number | null>(defaultExpanded);\n const expanded = isControlled ? expandedProp : innerExpanded;\n\n // The in-flight drag: the row being dragged and the row the pointer is over.\n const [dragFrom, setDragFrom] = useState<number | null>(null);\n const [dragOver, setDragOver] = useState<number | null>(null);\n\n const rowRefs = useRef<Array<HTMLButtonElement | null>>([]);\n const addRef = useRef<HTMLButtonElement | null>(null);\n const pendingFocus = useRef<{ kind: \"panel\" | \"row\" | \"add\"; index: number } | null>(null);\n\n useEffect(() => {\n const pending = pendingFocus.current;\n if (!pending) return;\n pendingFocus.current = null;\n if (pending.kind === \"add\") {\n addRef.current?.focus();\n return;\n }\n const row = rowRefs.current[pending.index];\n if (pending.kind === \"row\") {\n row?.focus();\n return;\n }\n // Land in the new item's first editable control, so adding an item leaves\n // the caret where the author is about to type.\n const panel = document.getElementById(panelId(pending.index));\n (panel?.querySelector<HTMLElement>(focusSelector) ?? row)?.focus();\n });\n\n function rowId(index: number): string {\n return itemId ? itemId(index) : `${idPrefix}-${index}`;\n }\n function panelId(index: number): string {\n return `${rowId(index)}-panel`;\n }\n function headerId(index: number): string {\n return `${rowId(index)}-header`;\n }\n\n function expand(next: number | null) {\n if (!isControlled) setInnerExpanded(next);\n onExpandedChange?.(next);\n }\n // A mutator moves the open row without the caller having asked to expand\n // anything, so it maps the current index rather than setting an absolute one.\n function reindexExpanded(map: (open: number | null) => number | null) {\n const next = map(expanded);\n if (next !== expanded) expand(next);\n }\n\n function commit(next: T[]) {\n onChange?.(next);\n }\n\n function add() {\n if (!onCreate) return;\n pendingFocus.current = { kind: \"panel\", index: items.length };\n expand(items.length);\n commit([...items, onCreate()]);\n }\n\n function remove(index: number) {\n reindexExpanded((open) =>\n open === index ? null : open !== null && open > index ? open - 1 : open,\n );\n pendingFocus.current =\n items.length === 1\n ? { kind: \"add\", index: 0 }\n : { kind: \"row\", index: Math.max(index - 1, 0) };\n commit(removeIndex(items, index));\n }\n\n function duplicate(index: number) {\n reindexExpanded((open) => (open !== null && open > index ? open + 1 : open));\n pendingFocus.current = { kind: \"row\", index: index + 1 };\n commit(duplicateIndex(items, index, cloneItem));\n }\n\n /** Where a drag would land, so the row can draw the insertion line. */\n function dropEdge(index: number): \"top\" | \"bottom\" | null {\n if (dragFrom === null || dragOver !== index || dragFrom === index) return null;\n return dragFrom < index ? \"bottom\" : \"top\";\n }\n\n function endDrag() {\n setDragFrom(null);\n setDragOver(null);\n }\n\n function reorder(from: number, to: number) {\n if (from === to) return;\n if (onReorder) onReorder(from, to);\n else move(from, to);\n }\n\n function move(index: number, to: number) {\n if (to < 0 || to >= items.length) return;\n // Follow the item, not the slot — otherwise moving an open row silently\n // expands whichever row took its place.\n reindexExpanded((open) => (open === index ? to : open === to ? index : open));\n pendingFocus.current = { kind: \"row\", index: to };\n commit(moveItem(items, index, to));\n }\n\n // Roving focus across the headers, with the add row as the final stop.\n function handleKeyDown(e: KeyboardEvent<HTMLButtonElement>, index: number) {\n const stops = rowRefs.current.length;\n const focusAt = (i: number) => {\n e.preventDefault();\n (i >= stops ? addRef.current : rowRefs.current[i])?.focus();\n };\n if (e.key === \"ArrowDown\") focusAt(Math.min(index + 1, stops));\n else if (e.key === \"ArrowUp\" && index > 0) focusAt(index - 1);\n else if (e.key === \"Home\") focusAt(0);\n else if (e.key === \"End\") focusAt(stops);\n }\n\n return (\n <div className={cn(\"flex flex-col gap-2\", className)}>\n {summary !== undefined && (\n <p className={cn(\"text-muted-foreground\", labelSizeClass[size])}>{summary}</p>\n )}\n <div\n className={cn(\"divide-y divide-border rounded-lg border border-border\", listClassName)}\n >\n {items.map((item, i) => {\n const open = expanded === i;\n const slotCtx: AccordionListItemContext<T> = {\n item,\n index: i,\n open,\n onChange: (next) => commit(setIndex(items, i, next)),\n headerId: headerId(i),\n panelId: panelId(i),\n };\n const label = itemLabel?.({ item, index: i }) ?? `Item ${i + 1}`;\n const actions = renderActions?.(slotCtx);\n const meta = renderMeta?.(slotCtx);\n const dragEnabled = allowDrag && !readOnly && (canDrag?.({ item, index: i }) ?? true);\n const droppable = dragEnabled && dragFrom !== null && dragFrom !== i;\n const edge = droppable ? dropEdge(i) : null;\n return (\n <div key={i} className=\"group\">\n {/* The row is a plain element, NOT a button: the actions beside it\n are buttons, and nesting interactive content is invalid DOM\n with undefined click targeting. Only the disclosure toggles. */}\n <div\n data-accordion-row\n data-drop-edge={edge ?? undefined}\n onDragOver={(e) => {\n if (!droppable) return;\n e.preventDefault();\n e.dataTransfer.dropEffect = \"move\";\n setDragOver(i);\n }}\n onDrop={(e) => {\n if (!droppable || dragFrom === null) return;\n e.preventDefault();\n reorder(dragFrom, i);\n endDrag();\n }}\n className={cn(\n \"flex w-full items-center gap-2 px-3 py-2 hover:bg-accent/40\",\n i % 2 === 0 ? \"bg-card\" : \"bg-muted/20\",\n open && \"bg-accent/30\",\n dragFrom === i && \"opacity-40\",\n edge === \"top\" && \"shadow-[inset_0_2px_0_0_var(--color-primary)]\",\n edge === \"bottom\" && \"shadow-[inset_0_-2px_0_0_var(--color-primary)]\",\n rowClassName,\n )}\n >\n {allowDrag && !readOnly && (\n <button\n type=\"button\"\n aria-label={`Reorder ${label}`}\n title={`Reorder ${label}`}\n disabled={!dragEnabled}\n draggable={dragEnabled}\n onDragStart={(e) => {\n e.dataTransfer.effectAllowed = \"move\";\n e.dataTransfer.setData(\"text/plain\", String(i));\n // Drag the row, not the handle glyph the pointer grabbed.\n const row = e.currentTarget.closest(\"[data-accordion-row]\");\n if (row instanceof HTMLElement) e.dataTransfer.setDragImage(row, 12, 12);\n setDragFrom(i);\n }}\n onDragEnd={endDrag}\n onKeyDown={(e) => {\n const to = e.key === \"ArrowUp\" ? i - 1 : e.key === \"ArrowDown\" ? i + 1 : i;\n if (to === i || to < 0 || to >= items.length) return;\n e.preventDefault();\n reorder(i, to);\n }}\n className=\"shrink-0 cursor-grab rounded text-muted-foreground hover:text-foreground active:cursor-grabbing disabled:cursor-default disabled:opacity-30\"\n >\n <Icon icon={UiDotsVertical} className=\"text-sm\" />\n </button>\n )}\n <button\n type=\"button\"\n id={headerId(i)}\n aria-expanded={open}\n aria-controls={panelId(i)}\n ref={(el) => {\n rowRefs.current[i] = el;\n }}\n onKeyDown={(e) => handleKeyDown(e, i)}\n onClick={() => expand(open ? null : i)}\n className=\"flex min-w-0 flex-1 items-center gap-2 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <Icon\n icon={open ? UiChevronDown : UiChevronRight}\n className=\"shrink-0 text-sm text-muted-foreground\"\n />\n {renderHeader(slotCtx)}\n </button>\n {meta}\n {!readOnly && (allowReorder || allowDuplicate || allowRemove || actions) && (\n <ItemActions\n label={label}\n index={i}\n count={items.length}\n size={size}\n reveal={revealActions}\n {...(actions ? { leading: actions } : {})}\n {...(allowReorder ? { onMove: (to: number) => move(i, to) } : {})}\n {...(allowDuplicate ? { onDuplicate: () => duplicate(i) } : {})}\n {...(allowRemove ? { onRemove: () => remove(i) } : {})}\n />\n )}\n </div>\n {open && (\n <div\n id={panelId(i)}\n role=\"region\"\n aria-labelledby={headerId(i)}\n className={cn(\"border-t border-border bg-muted/20 p-3\", bodyClassName)}\n >\n {renderBody(slotCtx)}\n </div>\n )}\n </div>\n );\n })}\n {!readOnly && onCreate && (\n <AddItemRow\n buttonRef={addRef}\n label={addLabel}\n empty={items.length === 0}\n onAdd={add}\n onKeyDown={(e) => handleKeyDown(e, items.length)}\n {...(addDescription ? { copy: addDescription } : {})}\n />\n )}\n </div>\n </div>\n );\n}\n\n// AddItemRow is the list's own final row. At zero items it grows to carry the\n// explanation of what an item is — so the empty state is the same control the\n// author will use, not a separate screen they have to leave.\nfunction AddItemRow({\n label,\n copy,\n empty,\n onAdd,\n onKeyDown,\n buttonRef,\n}: {\n label: string;\n copy?: string;\n empty: boolean;\n onAdd: () => void;\n onKeyDown: (e: KeyboardEvent<HTMLButtonElement>) => void;\n buttonRef: MutableRefObject<HTMLButtonElement | null>;\n}) {\n return (\n <button\n type=\"button\"\n ref={(el) => {\n buttonRef.current = el;\n }}\n onClick={onAdd}\n onKeyDown={onKeyDown}\n className={cn(\n \"group/add flex w-full items-center gap-2 px-3 py-2 text-left text-muted-foreground hover:bg-accent/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring\",\n empty && \"items-start py-5\",\n )}\n >\n {/* Holds the chevron column, so this row lines up with the ones above it. */}\n <Icon icon={UiChevronRight} className=\"shrink-0 text-sm opacity-0\" />\n <span className=\"inline-flex size-6 shrink-0 items-center justify-center rounded-md border border-dashed border-border text-foreground/60 group-hover/add:border-primary group-hover/add:text-primary\">\n <Icon icon={UiAdd} className=\"text-[13px]\" />\n </span>\n <span className=\"flex min-w-0 flex-col gap-0.5\">\n <span className=\"text-sm font-medium text-foreground\">{label}</span>\n {copy && (\n <span className={cn(\"text-xs\", empty ? \"max-w-xl leading-snug\" : \"truncate\")}>{copy}</span>\n )}\n </span>\n </button>\n );\n}\n"],"names":["useState","useRef","useEffect","removeIndex","duplicateIndex","moveItem","cn","jsx","labelSizeClass","jsxs","setIndex","Icon","UiDotsVertical","UiChevronDown","UiChevronRight","ItemActions","UiAdd"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ReactNode } from 'react';
1
+ import { ReactNode } from '../../../../node_modules/@types/react/index.d.ts';
2
2
  import { SizeToken } from '../lib/size';
3
3
  /** Handed to every slot, describing one row. */
4
4
  export interface AccordionListItemContext<T> {
@@ -21,6 +21,8 @@ export interface AccordionListProps<T> {
21
21
  renderBody: (ctx: AccordionListItemContext<T>) => ReactNode;
22
22
  /** Extra per-row actions, rendered before the built-in ones. */
23
23
  renderActions?: (ctx: AccordionListItemContext<T>) => ReactNode;
24
+ /** Persistent row metadata rendered between the disclosure and actions. */
25
+ renderMeta?: (ctx: AccordionListItemContext<T>) => ReactNode;
24
26
  /** Content above the list — typically the item count. */
25
27
  summary?: ReactNode;
26
28
  /** Names an item in its actions' accessible labels. Defaults to `Item <n>`. */
@@ -89,5 +91,5 @@ export interface AccordionListProps<T> {
89
91
  rowClassName?: string;
90
92
  bodyClassName?: string;
91
93
  }
92
- export declare function AccordionList<T>({ items, onChange, renderHeader, renderBody, renderActions, summary, itemLabel, allowReorder, allowDrag, canDrag, onReorder, allowDuplicate, allowRemove, revealActions, cloneItem, onCreate, addLabel, addDescription, expanded: expandedProp, defaultExpanded, onExpandedChange, readOnly, size, idPrefix, itemId, focusSelector, className, listClassName, rowClassName, bodyClassName, }: AccordionListProps<T>): import("react/jsx-runtime").JSX.Element;
94
+ export declare function AccordionList<T>({ items, onChange, renderHeader, renderBody, renderActions, renderMeta, summary, itemLabel, allowReorder, allowDrag, canDrag, onReorder, allowDuplicate, allowRemove, revealActions, cloneItem, onCreate, addLabel, addDescription, expanded: expandedProp, defaultExpanded, onExpandedChange, readOnly, size, idPrefix, itemId, focusSelector, className, listClassName, rowClassName, bodyClassName, }: AccordionListProps<T>): import("react").JSX.Element;
93
95
  //# sourceMappingURL=AccordionList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionList.d.ts","sourceRoot":"","sources":["../../src/components/AccordionList.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AccordionList.d.ts","sourceRoot":"","sources":["../../src/components/AccordionList.tsx"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ function AccordionList({
16
16
  renderHeader,
17
17
  renderBody,
18
18
  renderActions,
19
+ renderMeta,
19
20
  summary,
20
21
  itemLabel,
21
22
  allowReorder = false,
@@ -155,6 +156,7 @@ function AccordionList({
155
156
  };
156
157
  const label = (itemLabel == null ? void 0 : itemLabel({ item, index: i })) ?? `Item ${i + 1}`;
157
158
  const actions = renderActions == null ? void 0 : renderActions(slotCtx);
159
+ const meta = renderMeta == null ? void 0 : renderMeta(slotCtx);
158
160
  const dragEnabled = allowDrag && !readOnly && ((canDrag == null ? void 0 : canDrag({ item, index: i })) ?? true);
159
161
  const droppable = dragEnabled && dragFrom !== null && dragFrom !== i;
160
162
  const edge = droppable ? dropEdge(i) : null;
@@ -237,6 +239,7 @@ function AccordionList({
237
239
  ]
238
240
  }
239
241
  ),
242
+ meta,
240
243
  !readOnly && (allowReorder || allowDuplicate || allowRemove || actions) && /* @__PURE__ */ jsx(
241
244
  ItemActions,
242
245
  {