@flanksource/clicky-ui 0.3.34 → 0.3.36

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 (733) hide show
  1. package/README.md +4 -0
  2. package/dist/ai.cjs +4 -0
  3. package/dist/ai.cjs.map +1 -1
  4. package/dist/ai.js +4 -0
  5. package/dist/ai.js.map +1 -1
  6. package/dist/comments/CommentCard.d.ts +1 -1
  7. package/dist/comments/CommentProvider.d.ts +1 -1
  8. package/dist/comments/CommentThread.d.ts +1 -1
  9. package/dist/comments/CommentThreadList.d.ts +1 -1
  10. package/dist/comments/MentionTextarea.d.ts +1 -1
  11. package/dist/comments/comment-context.d.ts +4 -4
  12. package/dist/comments/comment-fixtures.d.ts +1 -1
  13. package/dist/comments/comment-types.d.ts +1 -1
  14. package/dist/components/AccordionList.d.ts +1 -1
  15. package/dist/components/ComboboxControl.d.ts +1 -1
  16. package/dist/components/ComboboxMenu.d.ts +2 -2
  17. package/dist/components/ComboboxTags.cjs +41 -11
  18. package/dist/components/ComboboxTags.cjs.map +1 -1
  19. package/dist/components/ComboboxTags.d.ts +6 -0
  20. package/dist/components/ComboboxTags.d.ts.map +1 -1
  21. package/dist/components/ComboboxTags.js +41 -11
  22. package/dist/components/ComboboxTags.js.map +1 -1
  23. package/dist/components/DateField.d.ts +3 -3
  24. package/dist/components/DatePicker.d.ts +3 -3
  25. package/dist/components/DateTimePicker.d.ts +3 -3
  26. package/dist/components/ErrorWrapper.d.ts +2 -2
  27. package/dist/components/Field.d.ts +1 -1
  28. package/dist/components/FilterBar.d.ts +1 -1
  29. package/dist/components/FormLookupProvider.d.ts +1 -1
  30. package/dist/components/FormatOptionsDropdown.d.ts +1 -1
  31. package/dist/components/IconButton.d.ts +3 -3
  32. package/dist/components/InputField.d.ts +2 -2
  33. package/dist/components/ItemActions.d.ts +1 -1
  34. package/dist/components/JsonSchemaForm.cjs +17 -36
  35. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  36. package/dist/components/JsonSchemaForm.d.ts +1 -1
  37. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  38. package/dist/components/JsonSchemaForm.js +17 -36
  39. package/dist/components/JsonSchemaForm.js.map +1 -1
  40. package/dist/components/ListMenu.d.ts +1 -1
  41. package/dist/components/MultiSelect.d.ts +1 -1
  42. package/dist/components/SearchInput.d.ts +1 -1
  43. package/dist/components/SegmentedControl.d.ts +1 -1
  44. package/dist/components/SplitButton.d.ts +1 -1
  45. package/dist/components/Switch.d.ts +1 -1
  46. package/dist/components/TreePickerField.cjs +11 -2
  47. package/dist/components/TreePickerField.cjs.map +1 -1
  48. package/dist/components/TreePickerField.d.ts +13 -4
  49. package/dist/components/TreePickerField.d.ts.map +1 -1
  50. package/dist/components/TreePickerField.js +11 -2
  51. package/dist/components/TreePickerField.js.map +1 -1
  52. package/dist/components/UnitStepControls.d.ts +1 -1
  53. package/dist/components/button.d.ts +3 -3
  54. package/dist/components/combobox-types.d.ts +1 -1
  55. package/dist/components/density-switcher.d.ts +1 -1
  56. package/dist/components/filter-bar-context.d.ts +1 -1
  57. package/dist/components/filter-bar-field-utils.d.ts +2 -2
  58. package/dist/components/form-lookup-context.d.ts +1 -1
  59. package/dist/components/icon-menu-picker.d.ts +1 -1
  60. package/dist/components/json-schema-form-accordion-array.cjs +44 -21
  61. package/dist/components/json-schema-form-accordion-array.cjs.map +1 -1
  62. package/dist/components/json-schema-form-accordion-array.d.ts.map +1 -1
  63. package/dist/components/json-schema-form-accordion-array.js +47 -24
  64. package/dist/components/json-schema-form-accordion-array.js.map +1 -1
  65. package/dist/components/json-schema-form-array.cjs +53 -30
  66. package/dist/components/json-schema-form-array.cjs.map +1 -1
  67. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  68. package/dist/components/json-schema-form-array.js +54 -31
  69. package/dist/components/json-schema-form-array.js.map +1 -1
  70. package/dist/components/json-schema-form-cards-array.cjs +32 -22
  71. package/dist/components/json-schema-form-cards-array.cjs.map +1 -1
  72. package/dist/components/json-schema-form-cards-array.d.ts.map +1 -1
  73. package/dist/components/json-schema-form-cards-array.js +33 -23
  74. package/dist/components/json-schema-form-cards-array.js.map +1 -1
  75. package/dist/components/json-schema-form-collection-layouts.fixtures.d.ts +44 -0
  76. package/dist/components/json-schema-form-collection-layouts.fixtures.d.ts.map +1 -0
  77. package/dist/components/json-schema-form-discriminator.d.ts +1 -1
  78. package/dist/components/json-schema-form-errors.cjs +5 -1
  79. package/dist/components/json-schema-form-errors.cjs.map +1 -1
  80. package/dist/components/json-schema-form-errors.d.ts +2 -1
  81. package/dist/components/json-schema-form-errors.d.ts.map +1 -1
  82. package/dist/components/json-schema-form-errors.js +6 -2
  83. package/dist/components/json-schema-form-errors.js.map +1 -1
  84. package/dist/components/json-schema-form-extensions.d.ts +1 -1
  85. package/dist/components/json-schema-form-filter-input.cjs +50 -0
  86. package/dist/components/json-schema-form-filter-input.cjs.map +1 -0
  87. package/dist/components/json-schema-form-filter-input.d.ts +5 -0
  88. package/dist/components/json-schema-form-filter-input.d.ts.map +1 -0
  89. package/dist/components/json-schema-form-filter-input.js +50 -0
  90. package/dist/components/json-schema-form-filter-input.js.map +1 -0
  91. package/dist/components/json-schema-form-filter.cjs +49 -0
  92. package/dist/components/json-schema-form-filter.cjs.map +1 -0
  93. package/dist/components/json-schema-form-filter.d.ts +8 -0
  94. package/dist/components/json-schema-form-filter.d.ts.map +1 -0
  95. package/dist/components/json-schema-form-filter.js +49 -0
  96. package/dist/components/json-schema-form-filter.js.map +1 -0
  97. package/dist/components/json-schema-form-layout.cjs +84 -17
  98. package/dist/components/json-schema-form-layout.cjs.map +1 -1
  99. package/dist/components/json-schema-form-layout.d.ts +1 -1
  100. package/dist/components/json-schema-form-layout.d.ts.map +1 -1
  101. package/dist/components/json-schema-form-layout.js +84 -17
  102. package/dist/components/json-schema-form-layout.js.map +1 -1
  103. package/dist/components/json-schema-form-list-array.cjs +16 -5
  104. package/dist/components/json-schema-form-list-array.cjs.map +1 -1
  105. package/dist/components/json-schema-form-list-array.d.ts +2 -1
  106. package/dist/components/json-schema-form-list-array.d.ts.map +1 -1
  107. package/dist/components/json-schema-form-list-array.js +16 -5
  108. package/dist/components/json-schema-form-list-array.js.map +1 -1
  109. package/dist/components/json-schema-form-object.cjs +239 -85
  110. package/dist/components/json-schema-form-object.cjs.map +1 -1
  111. package/dist/components/json-schema-form-object.d.ts +2 -2
  112. package/dist/components/json-schema-form-object.d.ts.map +1 -1
  113. package/dist/components/json-schema-form-object.js +241 -87
  114. package/dist/components/json-schema-form-object.js.map +1 -1
  115. package/dist/components/json-schema-form-preferences.cjs +1 -1
  116. package/dist/components/json-schema-form-preferences.cjs.map +1 -1
  117. package/dist/components/json-schema-form-preferences.d.ts +1 -1
  118. package/dist/components/json-schema-form-preferences.d.ts.map +1 -1
  119. package/dist/components/json-schema-form-preferences.js +1 -1
  120. package/dist/components/json-schema-form-preferences.js.map +1 -1
  121. package/dist/components/json-schema-form-properties-errors.fixtures.d.ts +14 -0
  122. package/dist/components/json-schema-form-properties-errors.fixtures.d.ts.map +1 -0
  123. package/dist/components/json-schema-form-properties-size.cjs +19 -0
  124. package/dist/components/json-schema-form-properties-size.cjs.map +1 -0
  125. package/dist/components/json-schema-form-properties-size.d.ts +4 -0
  126. package/dist/components/json-schema-form-properties-size.d.ts.map +1 -0
  127. package/dist/components/json-schema-form-properties-size.js +19 -0
  128. package/dist/components/json-schema-form-properties-size.js.map +1 -0
  129. package/dist/components/json-schema-form-properties.cjs +305 -0
  130. package/dist/components/json-schema-form-properties.cjs.map +1 -0
  131. package/dist/components/json-schema-form-properties.d.ts +20 -0
  132. package/dist/components/json-schema-form-properties.d.ts.map +1 -0
  133. package/dist/components/json-schema-form-properties.fixtures.d.ts +157 -0
  134. package/dist/components/json-schema-form-properties.fixtures.d.ts.map +1 -0
  135. package/dist/components/json-schema-form-properties.js +305 -0
  136. package/dist/components/json-schema-form-properties.js.map +1 -0
  137. package/dist/components/json-schema-form-property-actions-context.cjs +6 -0
  138. package/dist/components/json-schema-form-property-actions-context.cjs.map +1 -0
  139. package/dist/components/json-schema-form-property-actions-context.d.ts +2 -0
  140. package/dist/components/json-schema-form-property-actions-context.d.ts.map +1 -0
  141. package/dist/components/json-schema-form-property-actions-context.js +6 -0
  142. package/dist/components/json-schema-form-property-actions-context.js.map +1 -0
  143. package/dist/components/json-schema-form-property-collection.cjs +31 -0
  144. package/dist/components/json-schema-form-property-collection.cjs.map +1 -0
  145. package/dist/components/json-schema-form-property-collection.d.ts +6 -0
  146. package/dist/components/json-schema-form-property-collection.d.ts.map +1 -0
  147. package/dist/components/json-schema-form-property-collection.js +31 -0
  148. package/dist/components/json-schema-form-property-collection.js.map +1 -0
  149. package/dist/components/json-schema-form-property-draft.cjs +45 -0
  150. package/dist/components/json-schema-form-property-draft.cjs.map +1 -0
  151. package/dist/components/json-schema-form-property-draft.d.ts +8 -0
  152. package/dist/components/json-schema-form-property-draft.d.ts.map +1 -0
  153. package/dist/components/json-schema-form-property-draft.js +45 -0
  154. package/dist/components/json-schema-form-property-draft.js.map +1 -0
  155. package/dist/components/json-schema-form-property-preview.cjs +68 -0
  156. package/dist/components/json-schema-form-property-preview.cjs.map +1 -0
  157. package/dist/components/json-schema-form-property-preview.d.ts +7 -0
  158. package/dist/components/json-schema-form-property-preview.d.ts.map +1 -0
  159. package/dist/components/json-schema-form-property-preview.js +68 -0
  160. package/dist/components/json-schema-form-property-preview.js.map +1 -0
  161. package/dist/components/json-schema-form-property-selection.cjs +89 -0
  162. package/dist/components/json-schema-form-property-selection.cjs.map +1 -0
  163. package/dist/components/json-schema-form-property-selection.d.ts +6 -0
  164. package/dist/components/json-schema-form-property-selection.d.ts.map +1 -0
  165. package/dist/components/json-schema-form-property-selection.js +89 -0
  166. package/dist/components/json-schema-form-property-selection.js.map +1 -0
  167. package/dist/components/json-schema-form-render.cjs +41 -4
  168. package/dist/components/json-schema-form-render.cjs.map +1 -1
  169. package/dist/components/json-schema-form-render.d.ts +1 -1
  170. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  171. package/dist/components/json-schema-form-render.js +42 -5
  172. package/dist/components/json-schema-form-render.js.map +1 -1
  173. package/dist/components/json-schema-form-resolve.cjs +2 -0
  174. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  175. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  176. package/dist/components/json-schema-form-resolve.js +2 -0
  177. package/dist/components/json-schema-form-resolve.js.map +1 -1
  178. package/dist/components/json-schema-form-runtime-types.d.ts +222 -0
  179. package/dist/components/json-schema-form-runtime-types.d.ts.map +1 -0
  180. package/dist/components/json-schema-form-table-array.cjs +82 -51
  181. package/dist/components/json-schema-form-table-array.cjs.map +1 -1
  182. package/dist/components/json-schema-form-table-array.d.ts.map +1 -1
  183. package/dist/components/json-schema-form-table-array.js +84 -53
  184. package/dist/components/json-schema-form-table-array.js.map +1 -1
  185. package/dist/components/json-schema-form-template-menu.d.ts +1 -1
  186. package/dist/components/json-schema-form-template.d.ts +1 -1
  187. package/dist/components/json-schema-form-types.d.ts +7 -179
  188. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  189. package/dist/components/json-schema-form-utils.cjs +10 -9
  190. package/dist/components/json-schema-form-utils.cjs.map +1 -1
  191. package/dist/components/json-schema-form-utils.d.ts +11 -1
  192. package/dist/components/json-schema-form-utils.d.ts.map +1 -1
  193. package/dist/components/json-schema-form-utils.js +10 -9
  194. package/dist/components/json-schema-form-utils.js.map +1 -1
  195. package/dist/components/loading.d.ts +4 -4
  196. package/dist/components/mdx-editor-callout.d.ts +1 -1
  197. package/dist/components/mdx-editor-options.d.ts +1 -1
  198. package/dist/components/select.d.ts +3 -3
  199. package/dist/components/theme-switcher.d.ts +1 -1
  200. package/dist/components/use-list-menu-selection.d.ts +1 -1
  201. package/dist/components/useComboboxLayout.d.ts +1 -1
  202. package/dist/components/workload-picker-utils.d.ts +1 -1
  203. package/dist/data/Avatar.d.ts +1 -1
  204. package/dist/data/AvatarBadge.d.ts +1 -1
  205. package/dist/data/Badge.d.ts +1 -1
  206. package/dist/data/Callout.d.ts +1 -1
  207. package/dist/data/DataTable.cjs +575 -435
  208. package/dist/data/DataTable.cjs.map +1 -1
  209. package/dist/data/DataTable.d.ts +21 -13
  210. package/dist/data/DataTable.d.ts.map +1 -1
  211. package/dist/data/DataTable.grouping.d.ts +1 -1
  212. package/dist/data/DataTable.js +575 -435
  213. package/dist/data/DataTable.js.map +1 -1
  214. package/dist/data/ExecutionTree.d.ts +1 -1
  215. package/dist/data/FilterPill.d.ts +1 -1
  216. package/dist/data/FixtureEditor/RawFenceEditor.d.ts +1 -1
  217. package/dist/data/FixtureEditor/types.d.ts +1 -1
  218. package/dist/data/Gauge.d.ts +1 -1
  219. package/dist/data/GaugeHoverCard.d.ts +1 -1
  220. package/dist/data/Icon.d.ts +1 -1
  221. package/dist/data/KeyValueList.d.ts +1 -1
  222. package/dist/data/MarkdownEditor.d.ts +1 -1
  223. package/dist/data/MatrixTable.d.ts +1 -1
  224. package/dist/data/ObjectGraph.d.ts +1 -1
  225. package/dist/data/ProgressBars.d.ts +1 -1
  226. package/dist/data/Properties.cjs +86 -35
  227. package/dist/data/Properties.cjs.map +1 -1
  228. package/dist/data/Properties.d.ts +2 -2
  229. package/dist/data/Properties.d.ts.map +1 -1
  230. package/dist/data/Properties.js +87 -36
  231. package/dist/data/Properties.js.map +1 -1
  232. package/dist/data/RadialGauge.d.ts +1 -1
  233. package/dist/data/SchemaViewer.d.ts +1 -1
  234. package/dist/data/SortableHeader.d.ts +1 -1
  235. package/dist/data/StatStrip.d.ts +1 -1
  236. package/dist/data/StatusBreakdown.d.ts +1 -1
  237. package/dist/data/TabButton.d.ts +1 -1
  238. package/dist/data/TaskHeaderExtras.cjs +35 -0
  239. package/dist/data/TaskHeaderExtras.cjs.map +1 -0
  240. package/dist/data/TaskHeaderExtras.d.ts +27 -0
  241. package/dist/data/TaskHeaderExtras.d.ts.map +1 -0
  242. package/dist/data/TaskHeaderExtras.js +35 -0
  243. package/dist/data/TaskHeaderExtras.js.map +1 -0
  244. package/dist/data/TaskManager.cjs +27 -23
  245. package/dist/data/TaskManager.cjs.map +1 -1
  246. package/dist/data/TaskManager.d.ts +13 -1
  247. package/dist/data/TaskManager.d.ts.map +1 -1
  248. package/dist/data/TaskManager.js +27 -23
  249. package/dist/data/TaskManager.js.map +1 -1
  250. package/dist/data/TaskManagerButton.cjs +17 -34
  251. package/dist/data/TaskManagerButton.cjs.map +1 -1
  252. package/dist/data/TaskManagerButton.d.ts.map +1 -1
  253. package/dist/data/TaskManagerButton.js +18 -35
  254. package/dist/data/TaskManagerButton.js.map +1 -1
  255. package/dist/data/TaskProcessDetails.cjs +7 -25
  256. package/dist/data/TaskProcessDetails.cjs.map +1 -1
  257. package/dist/data/TaskProcessDetails.d.ts +2 -1
  258. package/dist/data/TaskProcessDetails.d.ts.map +1 -1
  259. package/dist/data/TaskProcessDetails.js +7 -25
  260. package/dist/data/TaskProcessDetails.js.map +1 -1
  261. package/dist/data/TaskProcessMetadata.cjs +50 -0
  262. package/dist/data/TaskProcessMetadata.cjs.map +1 -0
  263. package/dist/data/TaskProcessMetadata.d.ts +20 -0
  264. package/dist/data/TaskProcessMetadata.d.ts.map +1 -0
  265. package/dist/data/TaskProcessMetadata.js +50 -0
  266. package/dist/data/TaskProcessMetadata.js.map +1 -0
  267. package/dist/data/TaskProgress.cjs +41 -41
  268. package/dist/data/TaskProgress.cjs.map +1 -1
  269. package/dist/data/TaskProgress.d.ts +15 -1
  270. package/dist/data/TaskProgress.d.ts.map +1 -1
  271. package/dist/data/TaskProgress.js +41 -41
  272. package/dist/data/TaskProgress.js.map +1 -1
  273. package/dist/data/TaskResourceReadings.cjs +42 -0
  274. package/dist/data/TaskResourceReadings.cjs.map +1 -0
  275. package/dist/data/TaskResourceReadings.d.ts +6 -0
  276. package/dist/data/TaskResourceReadings.d.ts.map +1 -0
  277. package/dist/data/TaskResourceReadings.js +42 -0
  278. package/dist/data/TaskResourceReadings.js.map +1 -0
  279. package/dist/data/TaskSnapshot.cjs.map +1 -1
  280. package/dist/data/TaskSnapshot.d.ts +36 -1
  281. package/dist/data/TaskSnapshot.d.ts.map +1 -1
  282. package/dist/data/TaskSnapshot.js.map +1 -1
  283. package/dist/data/TaskStreamTabs.cjs +78 -0
  284. package/dist/data/TaskStreamTabs.cjs.map +1 -0
  285. package/dist/data/TaskStreamTabs.d.ts +35 -0
  286. package/dist/data/TaskStreamTabs.d.ts.map +1 -0
  287. package/dist/data/TaskStreamTabs.js +78 -0
  288. package/dist/data/TaskStreamTabs.js.map +1 -0
  289. package/dist/data/Timeline.d.ts +1 -1
  290. package/dist/data/Tree.d.ts +1 -1
  291. package/dist/data/TreeGroupHeader.d.ts +1 -1
  292. package/dist/data/TreeNode.d.ts +1 -1
  293. package/dist/data/Version.d.ts +3 -3
  294. package/dist/data/ai/ChatWindow.cjs +22 -12
  295. package/dist/data/ai/ChatWindow.cjs.map +1 -1
  296. package/dist/data/ai/ChatWindow.d.ts.map +1 -1
  297. package/dist/data/ai/ChatWindow.js +22 -12
  298. package/dist/data/ai/ChatWindow.js.map +1 -1
  299. package/dist/data/ai/ChatWindow.test-utils.d.ts +4 -2
  300. package/dist/data/ai/ChatWindow.test-utils.d.ts.map +1 -1
  301. package/dist/data/ai/ChatWindow.types.d.ts +1 -1
  302. package/dist/data/ai/ChatWindowManager.cjs +2 -0
  303. package/dist/data/ai/ChatWindowManager.cjs.map +1 -1
  304. package/dist/data/ai/ChatWindowManager.d.ts +1 -1
  305. package/dist/data/ai/ChatWindowManager.d.ts.map +1 -1
  306. package/dist/data/ai/ChatWindowManager.js +2 -0
  307. package/dist/data/ai/ChatWindowManager.js.map +1 -1
  308. package/dist/data/ai/PolicyTree.d.ts +1 -1
  309. package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts +1 -1
  310. package/dist/data/ai/PromptCatalog/types.d.ts +1 -1
  311. package/dist/data/ai/PromptRunEditor/index.cjs +4 -0
  312. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  313. package/dist/data/ai/PromptRunEditor/index.d.ts +5 -2
  314. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  315. package/dist/data/ai/PromptRunEditor/index.js +4 -0
  316. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  317. package/dist/data/ai/SessionChatComposer.d.ts +1 -1
  318. package/dist/data/ai/SessionInspector.approvals-model.cjs +9 -0
  319. package/dist/data/ai/SessionInspector.approvals-model.cjs.map +1 -0
  320. package/dist/data/ai/SessionInspector.approvals-model.d.ts +17 -0
  321. package/dist/data/ai/SessionInspector.approvals-model.d.ts.map +1 -0
  322. package/dist/data/ai/SessionInspector.approvals-model.js +9 -0
  323. package/dist/data/ai/SessionInspector.approvals-model.js.map +1 -0
  324. package/dist/data/ai/SessionInspector.approvals.cjs +143 -0
  325. package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -0
  326. package/dist/data/ai/SessionInspector.approvals.d.ts +13 -0
  327. package/dist/data/ai/SessionInspector.approvals.d.ts.map +1 -0
  328. package/dist/data/ai/SessionInspector.approvals.js +143 -0
  329. package/dist/data/ai/SessionInspector.approvals.js.map +1 -0
  330. package/dist/data/ai/SessionInspector.cjs +21 -8
  331. package/dist/data/ai/SessionInspector.cjs.map +1 -1
  332. package/dist/data/ai/SessionInspector.d.ts +6 -2
  333. package/dist/data/ai/SessionInspector.d.ts.map +1 -1
  334. package/dist/data/ai/SessionInspector.hierarchy.d.ts +1 -1
  335. package/dist/data/ai/SessionInspector.js +21 -8
  336. package/dist/data/ai/SessionInspector.js.map +1 -1
  337. package/dist/data/ai/SessionInspector.panel-parts.cjs +34 -0
  338. package/dist/data/ai/SessionInspector.panel-parts.cjs.map +1 -0
  339. package/dist/data/ai/SessionInspector.panel-parts.d.ts +19 -0
  340. package/dist/data/ai/SessionInspector.panel-parts.d.ts.map +1 -0
  341. package/dist/data/ai/SessionInspector.panel-parts.js +34 -0
  342. package/dist/data/ai/SessionInspector.panel-parts.js.map +1 -0
  343. package/dist/data/ai/SessionInspector.panel-values.cjs +18 -0
  344. package/dist/data/ai/SessionInspector.panel-values.cjs.map +1 -0
  345. package/dist/data/ai/SessionInspector.panel-values.d.ts +13 -0
  346. package/dist/data/ai/SessionInspector.panel-values.d.ts.map +1 -0
  347. package/dist/data/ai/SessionInspector.panel-values.js +18 -0
  348. package/dist/data/ai/SessionInspector.panel-values.js.map +1 -0
  349. package/dist/data/ai/SessionInspector.panels.cjs +41 -99
  350. package/dist/data/ai/SessionInspector.panels.cjs.map +1 -1
  351. package/dist/data/ai/SessionInspector.panels.d.ts +3 -1
  352. package/dist/data/ai/SessionInspector.panels.d.ts.map +1 -1
  353. package/dist/data/ai/SessionInspector.panels.js +13 -71
  354. package/dist/data/ai/SessionInspector.panels.js.map +1 -1
  355. package/dist/data/ai/SessionViewer.d.ts +1 -1
  356. package/dist/data/ai/SessionViewer.rows.d.ts +1 -1
  357. package/dist/data/ai/SessionViewer.tool-details.d.ts +1 -1
  358. package/dist/data/ai/SessionViewer.unified.d.ts +23 -0
  359. package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
  360. package/dist/data/ai/SpecRuntimeEditor/Footer.d.ts +1 -1
  361. package/dist/data/ai/SpecRuntimeEditor/Rail.d.ts +1 -1
  362. package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts +1 -1
  363. package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs +3 -1
  364. package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs.map +1 -1
  365. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts +3 -1
  366. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts.map +1 -1
  367. package/dist/data/ai/SpecRuntimeEditor/VerifySection.js +3 -1
  368. package/dist/data/ai/SpecRuntimeEditor/VerifySection.js.map +1 -1
  369. package/dist/data/ai/SpecRuntimeEditor/fields.d.ts +1 -1
  370. package/dist/data/ai/SpecRuntimeEditor/index.cjs +3 -1
  371. package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
  372. package/dist/data/ai/SpecRuntimeEditor/index.d.ts +5 -2
  373. package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
  374. package/dist/data/ai/SpecRuntimeEditor/index.js +3 -1
  375. package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
  376. package/dist/data/ai/chat-window-context.cjs +1 -0
  377. package/dist/data/ai/chat-window-context.cjs.map +1 -1
  378. package/dist/data/ai/chat-window-context.d.ts +13 -5
  379. package/dist/data/ai/chat-window-context.d.ts.map +1 -1
  380. package/dist/data/ai/chat-window-context.js +1 -0
  381. package/dist/data/ai/chat-window-context.js.map +1 -1
  382. package/dist/data/ai/index.d.ts +3 -1
  383. package/dist/data/ai/index.d.ts.map +1 -1
  384. package/dist/data/ai/use-session-scroll.d.ts +1 -1
  385. package/dist/data/cache-browser/adapter.d.ts +1 -1
  386. package/dist/data/cells/CellFilterActions.d.ts +1 -1
  387. package/dist/data/cells/EntityCell.d.ts +1 -1
  388. package/dist/data/cells/tag-utils.d.ts +1 -1
  389. package/dist/data/chat/Chat.cjs +42 -46
  390. package/dist/data/chat/Chat.cjs.map +1 -1
  391. package/dist/data/chat/Chat.d.ts +16 -5
  392. package/dist/data/chat/Chat.d.ts.map +1 -1
  393. package/dist/data/chat/Chat.js +43 -47
  394. package/dist/data/chat/Chat.js.map +1 -1
  395. package/dist/data/chat/ModelSelector.d.ts +1 -1
  396. package/dist/data/chat/PromptInput.cjs +13 -0
  397. package/dist/data/chat/PromptInput.cjs.map +1 -1
  398. package/dist/data/chat/PromptInput.d.ts +8 -2
  399. package/dist/data/chat/PromptInput.d.ts.map +1 -1
  400. package/dist/data/chat/PromptInput.js +14 -1
  401. package/dist/data/chat/PromptInput.js.map +1 -1
  402. package/dist/data/chat/tool-render/ToolArgs.d.ts +1 -1
  403. package/dist/data/chat/tool-render/ToolParams.d.ts +1 -1
  404. package/dist/data/chat/tool-render/ToolValue.d.ts +1 -1
  405. package/dist/data/chat/tool-render/adapter.d.ts +1 -1
  406. package/dist/data/chat/tool-render/context.d.ts +1 -1
  407. package/dist/data/chat/tool-render/defaults.d.ts +1 -1
  408. package/dist/data/chat/tool-render/known-tool-views.d.ts +1 -1
  409. package/dist/data/chat/tool-render/summary.d.ts +1 -1
  410. package/dist/data/chat/types.d.ts +1 -1
  411. package/dist/data/clicky-export/useClickyExport.d.ts +1 -1
  412. package/dist/data/data-table-server-filters.d.ts +1 -1
  413. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts +1 -1
  414. package/dist/data/diagnostics/ErrorDetails.d.ts +1 -1
  415. package/dist/data/diagnostics/StackFrameRow.d.ts +1 -1
  416. package/dist/data/git/GitChangeList.d.ts +1 -1
  417. package/dist/data/icon-fallback.d.ts +1 -1
  418. package/dist/data/properties-context.cjs +6 -0
  419. package/dist/data/properties-context.cjs.map +1 -0
  420. package/dist/data/properties-context.d.ts +7 -0
  421. package/dist/data/properties-context.d.ts.map +1 -0
  422. package/dist/data/properties-context.js +6 -0
  423. package/dist/data/properties-context.js.map +1 -0
  424. package/dist/data/query-browser/QueryBrowser.types.d.ts +1 -1
  425. package/dist/data/runtime/RuntimeBar.cjs +7 -3
  426. package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
  427. package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
  428. package/dist/data/runtime/RuntimeBar.js +7 -3
  429. package/dist/data/runtime/RuntimeBar.js.map +1 -1
  430. package/dist/data/task-copy.cjs +1 -1
  431. package/dist/data/task-copy.cjs.map +1 -1
  432. package/dist/data/task-copy.js +1 -1
  433. package/dist/data/task-copy.js.map +1 -1
  434. package/dist/data/task-metadata.cjs +36 -0
  435. package/dist/data/task-metadata.cjs.map +1 -0
  436. package/dist/data/task-metadata.d.ts +39 -0
  437. package/dist/data/task-metadata.d.ts.map +1 -0
  438. package/dist/data/task-metadata.js +36 -0
  439. package/dist/data/task-metadata.js.map +1 -0
  440. package/dist/data/task-resource-summary.cjs +30 -0
  441. package/dist/data/task-resource-summary.cjs.map +1 -0
  442. package/dist/data/task-resource-summary.d.ts +15 -0
  443. package/dist/data/task-resource-summary.d.ts.map +1 -0
  444. package/dist/data/task-resource-summary.js +30 -0
  445. package/dist/data/task-resource-summary.js.map +1 -0
  446. package/dist/data/task-status.cjs +8 -2
  447. package/dist/data/task-status.cjs.map +1 -1
  448. package/dist/data/task-status.d.ts +3 -0
  449. package/dist/data/task-status.d.ts.map +1 -1
  450. package/dist/data/task-status.js +8 -2
  451. package/dist/data/task-status.js.map +1 -1
  452. package/dist/data/task-streams.cjs +39 -0
  453. package/dist/data/task-streams.cjs.map +1 -0
  454. package/dist/data/task-streams.d.ts +60 -0
  455. package/dist/data/task-streams.d.ts.map +1 -0
  456. package/dist/data/task-streams.js +39 -0
  457. package/dist/data/task-streams.js.map +1 -0
  458. package/dist/data/task-work-progress.cjs +24 -0
  459. package/dist/data/task-work-progress.cjs.map +1 -0
  460. package/dist/data/task-work-progress.d.ts +21 -0
  461. package/dist/data/task-work-progress.d.ts.map +1 -0
  462. package/dist/data/task-work-progress.js +24 -0
  463. package/dist/data/task-work-progress.js.map +1 -0
  464. package/dist/data/test-runner/TestRunner.d.ts +1 -1
  465. package/dist/data/test-runner/adapter.d.ts +1 -1
  466. package/dist/data/test-runner/context.d.ts +1 -1
  467. package/dist/data/use-data-table-virtual.cjs +73 -0
  468. package/dist/data/use-data-table-virtual.cjs.map +1 -0
  469. package/dist/data/use-data-table-virtual.d.ts +40 -0
  470. package/dist/data/use-data-table-virtual.d.ts.map +1 -0
  471. package/dist/data/use-data-table-virtual.js +73 -0
  472. package/dist/data/use-data-table-virtual.js.map +1 -0
  473. package/dist/data/verification/VerificationResults.d.ts +1 -1
  474. package/dist/data/version-info.cjs +3 -3
  475. package/dist/data/version-info.js +3 -3
  476. package/dist/data.cjs +14 -0
  477. package/dist/data.cjs.map +1 -1
  478. package/dist/data.d.ts +6 -1
  479. package/dist/data.d.ts.map +1 -1
  480. package/dist/data.js +14 -0
  481. package/dist/data.js.map +1 -1
  482. package/dist/expressions/lang/attributes.cjs +56 -0
  483. package/dist/expressions/lang/attributes.cjs.map +1 -0
  484. package/dist/expressions/lang/attributes.d.ts +22 -0
  485. package/dist/expressions/lang/attributes.d.ts.map +1 -0
  486. package/dist/expressions/lang/attributes.js +56 -0
  487. package/dist/expressions/lang/attributes.js.map +1 -0
  488. package/dist/expressions/lang/completion.cjs +164 -0
  489. package/dist/expressions/lang/completion.cjs.map +1 -0
  490. package/dist/expressions/lang/completion.d.ts +29 -0
  491. package/dist/expressions/lang/completion.d.ts.map +1 -0
  492. package/dist/expressions/lang/completion.js +164 -0
  493. package/dist/expressions/lang/completion.js.map +1 -0
  494. package/dist/expressions/lang/environment.cjs +115 -0
  495. package/dist/expressions/lang/environment.cjs.map +1 -0
  496. package/dist/expressions/lang/environment.d.ts +54 -0
  497. package/dist/expressions/lang/environment.d.ts.map +1 -0
  498. package/dist/expressions/lang/environment.js +115 -0
  499. package/dist/expressions/lang/environment.js.map +1 -0
  500. package/dist/expressions/lang/generated/conformance.json.d.ts +4962 -0
  501. package/dist/expressions/lang/generated/index.cjs +18 -0
  502. package/dist/expressions/lang/generated/index.cjs.map +1 -0
  503. package/dist/expressions/lang/generated/index.d.ts +9 -0
  504. package/dist/expressions/lang/generated/index.d.ts.map +1 -0
  505. package/dist/expressions/lang/generated/index.js +18 -0
  506. package/dist/expressions/lang/generated/index.js.map +1 -0
  507. package/dist/expressions/lang/generated/languages.json.cjs +18 -0
  508. package/dist/expressions/lang/generated/languages.json.cjs.map +1 -0
  509. package/dist/expressions/lang/generated/languages.json.d.ts +2305 -0
  510. package/dist/expressions/lang/generated/languages.json.js +18 -0
  511. package/dist/expressions/lang/generated/languages.json.js.map +1 -0
  512. package/dist/expressions/lang/generated/spec.json.cjs +12 -0
  513. package/dist/expressions/lang/generated/spec.json.cjs.map +1 -0
  514. package/dist/expressions/lang/generated/spec.json.d.ts +6260 -0
  515. package/dist/expressions/lang/generated/spec.json.js +12 -0
  516. package/dist/expressions/lang/generated/spec.json.js.map +1 -0
  517. package/dist/expressions/lang/hover.cjs +106 -0
  518. package/dist/expressions/lang/hover.cjs.map +1 -0
  519. package/dist/expressions/lang/hover.d.ts +54 -0
  520. package/dist/expressions/lang/hover.d.ts.map +1 -0
  521. package/dist/expressions/lang/hover.js +106 -0
  522. package/dist/expressions/lang/hover.js.map +1 -0
  523. package/dist/expressions/lang/index.cjs +87 -0
  524. package/dist/expressions/lang/index.cjs.map +1 -0
  525. package/dist/expressions/lang/index.d.ts +65 -0
  526. package/dist/expressions/lang/index.d.ts.map +1 -0
  527. package/dist/expressions/lang/index.js +90 -0
  528. package/dist/expressions/lang/index.js.map +1 -0
  529. package/dist/expressions/lang/merge.cjs +52 -0
  530. package/dist/expressions/lang/merge.cjs.map +1 -0
  531. package/dist/expressions/lang/merge.d.ts +12 -0
  532. package/dist/expressions/lang/merge.d.ts.map +1 -0
  533. package/dist/expressions/lang/merge.js +52 -0
  534. package/dist/expressions/lang/merge.js.map +1 -0
  535. package/dist/expressions/lang/prefix.cjs +91 -0
  536. package/dist/expressions/lang/prefix.cjs.map +1 -0
  537. package/dist/expressions/lang/prefix.d.ts +36 -0
  538. package/dist/expressions/lang/prefix.d.ts.map +1 -0
  539. package/dist/expressions/lang/prefix.js +91 -0
  540. package/dist/expressions/lang/prefix.js.map +1 -0
  541. package/dist/expressions/lang/spec.d.ts +13 -0
  542. package/dist/expressions/lang/spec.d.ts.map +1 -0
  543. package/dist/expressions/lang/theme.cjs +97 -0
  544. package/dist/expressions/lang/theme.cjs.map +1 -0
  545. package/dist/expressions/lang/theme.d.ts +6 -0
  546. package/dist/expressions/lang/theme.d.ts.map +1 -0
  547. package/dist/expressions/lang/theme.js +97 -0
  548. package/dist/expressions/lang/theme.js.map +1 -0
  549. package/dist/expressions/lang/types.d.ts +81 -0
  550. package/dist/expressions/lang/types.d.ts.map +1 -0
  551. package/dist/expressions/playground/ExpressionPlayground.cjs +308 -0
  552. package/dist/expressions/playground/ExpressionPlayground.cjs.map +1 -0
  553. package/dist/expressions/playground/ExpressionPlayground.d.ts +42 -0
  554. package/dist/expressions/playground/ExpressionPlayground.d.ts.map +1 -0
  555. package/dist/expressions/playground/ExpressionPlayground.js +291 -0
  556. package/dist/expressions/playground/ExpressionPlayground.js.map +1 -0
  557. package/dist/expressions/playground/RunControls.cjs +51 -0
  558. package/dist/expressions/playground/RunControls.cjs.map +1 -0
  559. package/dist/expressions/playground/RunControls.d.ts +7 -0
  560. package/dist/expressions/playground/RunControls.d.ts.map +1 -0
  561. package/dist/expressions/playground/RunControls.js +51 -0
  562. package/dist/expressions/playground/RunControls.js.map +1 -0
  563. package/dist/expressions/playground/VerticalSplit.cjs +109 -0
  564. package/dist/expressions/playground/VerticalSplit.cjs.map +1 -0
  565. package/dist/expressions/playground/VerticalSplit.d.ts +23 -0
  566. package/dist/expressions/playground/VerticalSplit.d.ts.map +1 -0
  567. package/dist/expressions/playground/VerticalSplit.js +109 -0
  568. package/dist/expressions/playground/VerticalSplit.js.map +1 -0
  569. package/dist/expressions/playground/api.cjs +49 -0
  570. package/dist/expressions/playground/api.cjs.map +1 -0
  571. package/dist/expressions/playground/api.d.ts +53 -0
  572. package/dist/expressions/playground/api.d.ts.map +1 -0
  573. package/dist/expressions/playground/api.js +49 -0
  574. package/dist/expressions/playground/api.js.map +1 -0
  575. package/dist/expressions/playground/languages.cjs +88 -0
  576. package/dist/expressions/playground/languages.cjs.map +1 -0
  577. package/dist/expressions/playground/languages.d.ts +43 -0
  578. package/dist/expressions/playground/languages.d.ts.map +1 -0
  579. package/dist/expressions/playground/languages.js +88 -0
  580. package/dist/expressions/playground/languages.js.map +1 -0
  581. package/dist/expressions/playground/panels/GraphPanel.cjs +72 -0
  582. package/dist/expressions/playground/panels/GraphPanel.cjs.map +1 -0
  583. package/dist/expressions/playground/panels/GraphPanel.d.ts +19 -0
  584. package/dist/expressions/playground/panels/GraphPanel.d.ts.map +1 -0
  585. package/dist/expressions/playground/panels/GraphPanel.js +72 -0
  586. package/dist/expressions/playground/panels/GraphPanel.js.map +1 -0
  587. package/dist/expressions/playground/panels/ResultPanel.cjs +82 -0
  588. package/dist/expressions/playground/panels/ResultPanel.cjs.map +1 -0
  589. package/dist/expressions/playground/panels/ResultPanel.d.ts +11 -0
  590. package/dist/expressions/playground/panels/ResultPanel.d.ts.map +1 -0
  591. package/dist/expressions/playground/panels/ResultPanel.js +82 -0
  592. package/dist/expressions/playground/panels/ResultPanel.js.map +1 -0
  593. package/dist/expressions/playground/panels/SpecPanel.cjs +76 -0
  594. package/dist/expressions/playground/panels/SpecPanel.cjs.map +1 -0
  595. package/dist/expressions/playground/panels/SpecPanel.d.ts +18 -0
  596. package/dist/expressions/playground/panels/SpecPanel.d.ts.map +1 -0
  597. package/dist/expressions/playground/panels/SpecPanel.js +76 -0
  598. package/dist/expressions/playground/panels/SpecPanel.js.map +1 -0
  599. package/dist/expressions/playground/panels/TokensPanel.cjs +89 -0
  600. package/dist/expressions/playground/panels/TokensPanel.cjs.map +1 -0
  601. package/dist/expressions/playground/panels/TokensPanel.d.ts +15 -0
  602. package/dist/expressions/playground/panels/TokensPanel.d.ts.map +1 -0
  603. package/dist/expressions/playground/panels/TokensPanel.js +72 -0
  604. package/dist/expressions/playground/panels/TokensPanel.js.map +1 -0
  605. package/dist/expressions/playground/panels/graphNodes.cjs +35 -0
  606. package/dist/expressions/playground/panels/graphNodes.cjs.map +1 -0
  607. package/dist/expressions/playground/panels/graphNodes.d.ts +19 -0
  608. package/dist/expressions/playground/panels/graphNodes.d.ts.map +1 -0
  609. package/dist/expressions/playground/panels/graphNodes.js +35 -0
  610. package/dist/expressions/playground/panels/graphNodes.js.map +1 -0
  611. package/dist/expressions/playground/runAction.cjs +12 -0
  612. package/dist/expressions/playground/runAction.cjs.map +1 -0
  613. package/dist/expressions/playground/runAction.d.ts +15 -0
  614. package/dist/expressions/playground/runAction.d.ts.map +1 -0
  615. package/dist/expressions/playground/runAction.js +12 -0
  616. package/dist/expressions/playground/runAction.js.map +1 -0
  617. package/dist/expressions/playground/runShortcut.cjs +9 -0
  618. package/dist/expressions/playground/runShortcut.cjs.map +1 -0
  619. package/dist/expressions/playground/runShortcut.d.ts +2 -0
  620. package/dist/expressions/playground/runShortcut.d.ts.map +1 -0
  621. package/dist/expressions/playground/runShortcut.js +9 -0
  622. package/dist/expressions/playground/runShortcut.js.map +1 -0
  623. package/dist/expressions/playground/useEditorTheme.cjs +40 -0
  624. package/dist/expressions/playground/useEditorTheme.cjs.map +1 -0
  625. package/dist/expressions/playground/useEditorTheme.d.ts +16 -0
  626. package/dist/expressions/playground/useEditorTheme.d.ts.map +1 -0
  627. package/dist/expressions/playground/useEditorTheme.js +23 -0
  628. package/dist/expressions/playground/useEditorTheme.js.map +1 -0
  629. package/dist/expressions/playground/useEvaluator.cjs +72 -0
  630. package/dist/expressions/playground/useEvaluator.cjs.map +1 -0
  631. package/dist/expressions/playground/useEvaluator.d.ts +25 -0
  632. package/dist/expressions/playground/useEvaluator.d.ts.map +1 -0
  633. package/dist/expressions/playground/useEvaluator.js +72 -0
  634. package/dist/expressions/playground/useEvaluator.js.map +1 -0
  635. package/dist/expressions/playground/useParsedInput.cjs +22 -0
  636. package/dist/expressions/playground/useParsedInput.cjs.map +1 -0
  637. package/dist/expressions/playground/useParsedInput.d.ts +20 -0
  638. package/dist/expressions/playground/useParsedInput.d.ts.map +1 -0
  639. package/dist/expressions/playground/useParsedInput.js +22 -0
  640. package/dist/expressions/playground/useParsedInput.js.map +1 -0
  641. package/dist/expressions/playground/verticalSplitModel.cjs +11 -0
  642. package/dist/expressions/playground/verticalSplitModel.cjs.map +1 -0
  643. package/dist/expressions/playground/verticalSplitModel.d.ts +3 -0
  644. package/dist/expressions/playground/verticalSplitModel.d.ts.map +1 -0
  645. package/dist/expressions/playground/verticalSplitModel.js +11 -0
  646. package/dist/expressions/playground/verticalSplitModel.js.map +1 -0
  647. package/dist/expressions/playground.cjs +18 -0
  648. package/dist/expressions/playground.cjs.map +1 -0
  649. package/dist/expressions/playground.d.ts +18 -0
  650. package/dist/expressions/playground.d.ts.map +1 -0
  651. package/dist/expressions/playground.js +18 -0
  652. package/dist/expressions/playground.js.map +1 -0
  653. package/dist/expressions.cjs +28 -0
  654. package/dist/expressions.cjs.map +1 -0
  655. package/dist/expressions.d.ts +10 -0
  656. package/dist/expressions.d.ts.map +1 -0
  657. package/dist/expressions.js +28 -0
  658. package/dist/expressions.js.map +1 -0
  659. package/dist/hooks/density-provider.d.ts +1 -1
  660. package/dist/hooks/theme-provider.d.ts +1 -1
  661. package/dist/hooks/use-density.d.ts +1 -1
  662. package/dist/hooks/use-resource-clock.cjs +14 -0
  663. package/dist/hooks/use-resource-clock.cjs.map +1 -0
  664. package/dist/hooks/use-resource-clock.d.ts +2 -0
  665. package/dist/hooks/use-resource-clock.d.ts.map +1 -0
  666. package/dist/hooks/use-resource-clock.js +14 -0
  667. package/dist/hooks/use-resource-clock.js.map +1 -0
  668. package/dist/hooks/use-task-run.cjs +25 -18
  669. package/dist/hooks/use-task-run.cjs.map +1 -1
  670. package/dist/hooks/use-task-run.d.ts.map +1 -1
  671. package/dist/hooks/use-task-run.js +26 -19
  672. package/dist/hooks/use-task-run.js.map +1 -1
  673. package/dist/hooks/use-theme.d.ts +1 -1
  674. package/dist/icons/registry.d.ts +1 -1
  675. package/dist/icons/types.d.ts +1 -1
  676. package/dist/index.cjs +14 -0
  677. package/dist/index.cjs.map +1 -1
  678. package/dist/index.js +14 -0
  679. package/dist/index.js.map +1 -1
  680. package/dist/layout/AppShell.d.ts +1 -1
  681. package/dist/layout/AppShell.nav.drag.d.ts +1 -1
  682. package/dist/layout/AppSidebar.d.ts +1 -1
  683. package/dist/layout/Panel.d.ts +1 -1
  684. package/dist/layout/PanelFrame.d.ts +1 -1
  685. package/dist/layout/Section.d.ts +1 -1
  686. package/dist/layout/SplitPane.d.ts +1 -1
  687. package/dist/layout/Tabs.d.ts +1 -1
  688. package/dist/layout/Workspace.d.ts +1 -1
  689. package/dist/layout/Workspace.model.d.ts +1 -1
  690. package/dist/lib/combobox-values.d.ts +1 -1
  691. package/dist/monaco/MonacoEditor.cjs +3 -3
  692. package/dist/monaco/MonacoEditor.cjs.map +1 -1
  693. package/dist/monaco/MonacoEditor.js +2 -2
  694. package/dist/monaco/MonacoEditor.js.map +1 -1
  695. package/dist/monaco/types.d.ts +1 -1
  696. package/dist/monaco/use-monaco-worker.d.ts +1 -1
  697. package/dist/overlay/CellActions.d.ts +1 -1
  698. package/dist/overlay/CommandPalette.d.ts +2 -2
  699. package/dist/overlay/CommandPalette.model.d.ts +1 -1
  700. package/dist/overlay/CommandPaletteList.d.ts +1 -1
  701. package/dist/overlay/DropdownMenu.d.ts +1 -1
  702. package/dist/overlay/HoverCard.d.ts +1 -1
  703. package/dist/overlay/Modal.d.ts +2 -2
  704. package/dist/overlay/Toast.d.ts +1 -1
  705. package/dist/overlay/TourCard.d.ts +1 -1
  706. package/dist/overlay/TourProvider.d.ts +1 -1
  707. package/dist/overlay/dropdownMenuContext.d.ts +1 -1
  708. package/dist/overlay/toast-context.d.ts +2 -2
  709. package/dist/overlay/tour-context.d.ts +1 -1
  710. package/dist/overlay/tour-types.d.ts +1 -1
  711. package/dist/profiles/connections/connectionBrowserModel.d.ts +1 -1
  712. package/dist/profiles/connections/connectionQueryWorkspace.d.ts +1 -1
  713. package/dist/profiles/editor/profileBuilder.d.ts +1 -1
  714. package/dist/profiles/elasticsearch/esParamOperandExtension.d.ts +1 -1
  715. package/dist/profiles/fields/profileFieldControls.d.ts +1 -1
  716. package/dist/profiles/fields/profileFieldIcons.d.ts +1 -1
  717. package/dist/profiles/fields/profileFieldState.d.ts +1 -1
  718. package/dist/profiles/query/jsonPathSample.d.ts +1 -1
  719. package/dist/profiles/query/jsonPathSampleRow.d.ts +1 -1
  720. package/dist/profiles/query/prometheusResults.d.ts +2 -2
  721. package/dist/rpc/EndpointList.d.ts +1 -1
  722. package/dist/rpc/EntityExplorerApp.d.ts +1 -1
  723. package/dist/rpc/OperationCatalog.d.ts +1 -1
  724. package/dist/rpc/OperationEntityContextPicker.d.ts +1 -1
  725. package/dist/rpc/OperationEntityPage.d.ts +1 -1
  726. package/dist/rpc/OperationResultView.d.ts +1 -1
  727. package/dist/rpc/RouterProvider.d.ts +1 -1
  728. package/dist/rpc/SchemaActionForm.d.ts +1 -1
  729. package/dist/rpc/formMetadata.d.ts +1 -1
  730. package/dist/rpc/router.d.ts +1 -1
  731. package/dist/rpc/rpc-story.fixtures.d.ts +1 -1
  732. package/dist/styles.css +1 -1
  733. package/package.json +21 -2
@@ -4,12 +4,14 @@ import { Icon } from "../data/Icon.js";
4
4
  import { Button } from "./button.js";
5
5
  import { InputField } from "./InputField.js";
6
6
  import { ListMenu, ListMenuItem } from "./ListMenu.js";
7
+ import { cn } from "../lib/utils.js";
7
8
  import { UiClose } from "../icons/components/UiClose.js";
8
9
  import { UiAdd } from "../icons/components/UiAdd.js";
9
10
  function CompactListArray({
10
11
  field,
11
12
  fieldId,
12
- readOnly
13
+ readOnly,
14
+ presentation = false
13
15
  }) {
14
16
  const [draft, setDraft] = useState("");
15
17
  const rawItems = Array.isArray(field.value) ? field.value : [];
@@ -33,8 +35,11 @@ function CompactListArray({
33
35
  {
34
36
  role: "list",
35
37
  "aria-label": field.label,
36
- className: "overflow-hidden rounded-md border border-input bg-background",
37
- "data-jsf-input": true,
38
+ className: cn(
39
+ "overflow-hidden",
40
+ !presentation && "rounded-md border border-input bg-background"
41
+ ),
42
+ "data-jsf-input": presentation ? void 0 : true,
38
43
  children: [
39
44
  items.map((item, index) => /* @__PURE__ */ jsx(
40
45
  ListMenuItem,
@@ -49,7 +54,11 @@ function CompactListArray({
49
54
  id: `${fieldId}-${index}`,
50
55
  "aria-label": `${field.label} ${index + 1}`,
51
56
  value: item,
52
- onChange: (next) => field.onChange(items.map((value, itemIndex) => itemIndex === index ? next : value)),
57
+ onChange: (next) => field.onChange(
58
+ items.map(
59
+ (value, itemIndex) => itemIndex === index ? next : value
60
+ )
61
+ ),
53
62
  className: "h-7 border-0 bg-transparent px-0 shadow-none focus-within:ring-0",
54
63
  inputClassName: "font-mono text-xs",
55
64
  suffix: /* @__PURE__ */ jsx(
@@ -60,7 +69,9 @@ function CompactListArray({
60
69
  size: "icon",
61
70
  className: "size-6 p-0 text-muted-foreground hover:text-foreground",
62
71
  "aria-label": `Remove ${item}`,
63
- onClick: () => field.onChange(items.filter((_, itemIndex) => itemIndex !== index)),
72
+ onClick: () => field.onChange(
73
+ items.filter((_, itemIndex) => itemIndex !== index)
74
+ ),
64
75
  children: /* @__PURE__ */ jsx(Icon, { icon: UiClose, className: "size-3.5" })
65
76
  }
66
77
  )
@@ -1 +1 @@
1
- {"version":3,"file":"json-schema-form-list-array.js","sources":["../../src/components/json-schema-form-list-array.tsx"],"sourcesContent":["import { useState, type KeyboardEvent } from \"react\";\nimport { Icon } from \"../data/Icon\";\nimport { UiAdd, UiClose } from \"../icons\";\nimport { Button } from \"./button\";\nimport { InputField } from \"./InputField\";\nimport { ListMenu, ListMenuItem } from \"./ListMenu\";\nimport type { FieldControl } from \"./json-schema-form-types\";\n\nexport function CompactListArray({\n field,\n fieldId,\n readOnly,\n}: {\n field: FieldControl;\n fieldId: string;\n readOnly: boolean;\n}) {\n const [draft, setDraft] = useState(\"\");\n const rawItems = Array.isArray(field.value) ? field.value : [];\n if (rawItems.some((item) => typeof item !== \"string\")) {\n throw new Error(`${field.key} compact list received a non-string value`);\n }\n const items = rawItems as string[];\n\n const addDraft = () => {\n const next = draft.trim();\n if (!next) return;\n field.onChange([...items, next]);\n setDraft(\"\");\n };\n\n const addOnEnter = (event: KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n if (event.key !== \"Enter\") return;\n event.preventDefault();\n addDraft();\n };\n\n return (\n <ListMenu\n role=\"list\"\n aria-label={field.label}\n className=\"overflow-hidden rounded-md border border-input bg-background\"\n data-jsf-input\n >\n {items.map((item, index) => (\n <ListMenuItem\n key={`${item}-${index}`}\n role=\"listitem\"\n variant=\"compact\"\n interactive={false}\n className=\"border-l-0\"\n >\n {readOnly ? (\n <span className=\"block truncate py-1 font-mono text-foreground\">{item}</span>\n ) : (\n <InputField\n id={`${fieldId}-${index}`}\n aria-label={`${field.label} ${index + 1}`}\n value={item}\n onChange={(next) =>\n field.onChange(items.map((value, itemIndex) => (itemIndex === index ? next : value)))\n }\n className=\"h-7 border-0 bg-transparent px-0 shadow-none focus-within:ring-0\"\n inputClassName=\"font-mono text-xs\"\n suffix={\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-6 p-0 text-muted-foreground hover:text-foreground\"\n aria-label={`Remove ${item}`}\n onClick={() => field.onChange(items.filter((_, itemIndex) => itemIndex !== index))}\n >\n <Icon icon={UiClose} className=\"size-3.5\" />\n </Button>\n }\n />\n )}\n </ListMenuItem>\n ))}\n {!readOnly && (\n <ListMenuItem\n role=\"listitem\"\n variant=\"compact\"\n interactive={false}\n className=\"border-l-0 bg-muted/20\"\n >\n <InputField\n id={fieldId}\n aria-label={`Add ${field.label}`}\n value={draft}\n onChange={setDraft}\n onKeyDown={addOnEnter}\n prefix={<Icon icon={UiAdd} className=\"size-3.5 text-muted-foreground\" />}\n suffix={\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 px-2\"\n disabled={!draft.trim()}\n onClick={addDraft}\n >\n Add\n </Button>\n }\n className=\"h-7 border-0 bg-transparent px-0 shadow-none focus-within:ring-0\"\n inputClassName=\"font-mono text-xs\"\n />\n </ListMenuItem>\n )}\n </ListMenu>\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAQO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AACrC,QAAM,WAAW,MAAM,QAAQ,MAAM,KAAK,IAAI,MAAM,QAAQ,CAAA;AAC5D,MAAI,SAAS,KAAK,CAAC,SAAS,OAAO,SAAS,QAAQ,GAAG;AACrD,UAAM,IAAI,MAAM,GAAG,MAAM,GAAG,2CAA2C;AAAA,EACzE;AACA,QAAM,QAAQ;AAEd,QAAM,WAAW,MAAM;AACrB,UAAM,OAAO,MAAM,KAAA;AACnB,QAAI,CAAC,KAAM;AACX,UAAM,SAAS,CAAC,GAAG,OAAO,IAAI,CAAC;AAC/B,aAAS,EAAE;AAAA,EACb;AAEA,QAAM,aAAa,CAAC,UAAiE;AACnF,QAAI,MAAM,QAAQ,QAAS;AAC3B,UAAM,eAAA;AACN,aAAA;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAY,MAAM;AAAA,MAClB,WAAU;AAAA,MACV,kBAAc;AAAA,MAEb,UAAA;AAAA,QAAA,MAAM,IAAI,CAAC,MAAM,UAChB;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,MAAK;AAAA,YACL,SAAQ;AAAA,YACR,aAAa;AAAA,YACb,WAAU;AAAA,YAET,qBACC,oBAAC,QAAA,EAAK,WAAU,iDAAiD,gBAAK,IAEtE;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,IAAI,GAAG,OAAO,IAAI,KAAK;AAAA,gBACvB,cAAY,GAAG,MAAM,KAAK,IAAI,QAAQ,CAAC;AAAA,gBACvC,OAAO;AAAA,gBACP,UAAU,CAAC,SACT,MAAM,SAAS,MAAM,IAAI,CAAC,OAAO,cAAe,cAAc,QAAQ,OAAO,KAAM,CAAC;AAAA,gBAEtF,WAAU;AAAA,gBACV,gBAAe;AAAA,gBACf,QACE;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,MAAK;AAAA,oBACL,WAAU;AAAA,oBACV,cAAY,UAAU,IAAI;AAAA,oBAC1B,SAAS,MAAM,MAAM,SAAS,MAAM,OAAO,CAAC,GAAG,cAAc,cAAc,KAAK,CAAC;AAAA,oBAEjF,UAAA,oBAAC,MAAA,EAAK,MAAM,SAAS,WAAU,WAAA,CAAW;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAC5C;AAAA,YAAA;AAAA,UAEJ;AAAA,UA9BG,GAAG,IAAI,IAAI,KAAK;AAAA,QAAA,CAiCxB;AAAA,QACA,CAAC,YACA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAQ;AAAA,YACR,aAAa;AAAA,YACb,WAAU;AAAA,YAEV,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,IAAI;AAAA,gBACJ,cAAY,OAAO,MAAM,KAAK;AAAA,gBAC9B,OAAO;AAAA,gBACP,UAAU;AAAA,gBACV,WAAW;AAAA,gBACX,QAAQ,oBAAC,MAAA,EAAK,MAAM,OAAO,WAAU,kCAAiC;AAAA,gBACtE,QACE;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,MAAK;AAAA,oBACL,WAAU;AAAA,oBACV,UAAU,CAAC,MAAM,KAAA;AAAA,oBACjB,SAAS;AAAA,oBACV,UAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAIH,WAAU;AAAA,gBACV,gBAAe;AAAA,cAAA;AAAA,YAAA;AAAA,UACjB;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAIR;"}
1
+ {"version":3,"file":"json-schema-form-list-array.js","sources":["../../src/components/json-schema-form-list-array.tsx"],"sourcesContent":["import { useState, type KeyboardEvent } from \"react\";\nimport { Icon } from \"../data/Icon\";\nimport { UiAdd, UiClose } from \"../icons\";\nimport { Button } from \"./button\";\nimport { InputField } from \"./InputField\";\nimport { ListMenu, ListMenuItem } from \"./ListMenu\";\nimport { cn } from \"../lib/utils\";\nimport type { FieldControl } from \"./json-schema-form-types\";\n\nexport function CompactListArray({\n field,\n fieldId,\n readOnly,\n presentation = false,\n}: {\n field: FieldControl;\n fieldId: string;\n readOnly: boolean;\n presentation?: boolean;\n}) {\n const [draft, setDraft] = useState(\"\");\n const rawItems = Array.isArray(field.value) ? field.value : [];\n if (rawItems.some((item) => typeof item !== \"string\")) {\n throw new Error(`${field.key} compact list received a non-string value`);\n }\n const items = rawItems as string[];\n\n const addDraft = () => {\n const next = draft.trim();\n if (!next) return;\n field.onChange([...items, next]);\n setDraft(\"\");\n };\n\n const addOnEnter = (\n event: KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>,\n ) => {\n if (event.key !== \"Enter\") return;\n event.preventDefault();\n addDraft();\n };\n\n return (\n <ListMenu\n role=\"list\"\n aria-label={field.label}\n className={cn(\n \"overflow-hidden\",\n !presentation && \"rounded-md border border-input bg-background\",\n )}\n data-jsf-input={presentation ? undefined : true}\n >\n {items.map((item, index) => (\n <ListMenuItem\n key={`${item}-${index}`}\n role=\"listitem\"\n variant=\"compact\"\n interactive={false}\n className=\"border-l-0\"\n >\n {readOnly ? (\n <span className=\"block truncate py-1 font-mono text-foreground\">\n {item}\n </span>\n ) : (\n <InputField\n id={`${fieldId}-${index}`}\n aria-label={`${field.label} ${index + 1}`}\n value={item}\n onChange={(next) =>\n field.onChange(\n items.map((value, itemIndex) =>\n itemIndex === index ? next : value,\n ),\n )\n }\n className=\"h-7 border-0 bg-transparent px-0 shadow-none focus-within:ring-0\"\n inputClassName=\"font-mono text-xs\"\n suffix={\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-6 p-0 text-muted-foreground hover:text-foreground\"\n aria-label={`Remove ${item}`}\n onClick={() =>\n field.onChange(\n items.filter((_, itemIndex) => itemIndex !== index),\n )\n }\n >\n <Icon icon={UiClose} className=\"size-3.5\" />\n </Button>\n }\n />\n )}\n </ListMenuItem>\n ))}\n {!readOnly && (\n <ListMenuItem\n role=\"listitem\"\n variant=\"compact\"\n interactive={false}\n className=\"border-l-0 bg-muted/20\"\n >\n <InputField\n id={fieldId}\n aria-label={`Add ${field.label}`}\n value={draft}\n onChange={setDraft}\n onKeyDown={addOnEnter}\n prefix={\n <Icon icon={UiAdd} className=\"size-3.5 text-muted-foreground\" />\n }\n suffix={\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 px-2\"\n disabled={!draft.trim()}\n onClick={addDraft}\n >\n Add\n </Button>\n }\n className=\"h-7 border-0 bg-transparent px-0 shadow-none focus-within:ring-0\"\n inputClassName=\"font-mono text-xs\"\n />\n </ListMenuItem>\n )}\n </ListMenu>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -9,11 +9,16 @@ const button = require("./button.cjs");
9
9
  const Combobox = require("./Combobox.cjs");
10
10
  const jsonSchemaFormUtils = require("./json-schema-form-utils.cjs");
11
11
  const jsonSchemaFormLayout = require("./json-schema-form-layout.cjs");
12
+ const jsonSchemaFormProperties = require("./json-schema-form-properties.cjs");
13
+ const jsonSchemaFormPropertiesSize = require("./json-schema-form-properties-size.cjs");
12
14
  const jsonSchemaFormErrors = require("./json-schema-form-errors.cjs");
13
15
  const jsonSchemaFormSize = require("./json-schema-form-size.cjs");
14
16
  const UiTrash = require("../icons/components/UiTrash.cjs");
15
17
  const UiAdd = require("../icons/components/UiAdd.cjs");
16
- function ObjectControl({ field, ctx }) {
18
+ function ObjectControl({
19
+ field,
20
+ ctx
21
+ }) {
17
22
  const obj = collections.isPlainObject(field.value) ? field.value : {};
18
23
  const subSchema = {
19
24
  type: "object",
@@ -35,24 +40,36 @@ function ObjectControl({ field, ctx }) {
35
40
  layout: ctx.layout,
36
41
  size: ctx.size,
37
42
  columns: jsonSchemaFormUtils.normalizeColumns(subSchema["x-columns"]),
38
- columnMinWidth: jsonSchemaFormUtils.cssLength(subSchema["x-column-min-width"], jsonSchemaFormUtils.DEFAULT_COLUMN_MIN_WIDTH),
43
+ columnMinWidth: jsonSchemaFormUtils.cssLength(
44
+ subSchema["x-column-min-width"],
45
+ jsonSchemaFormUtils.DEFAULT_COLUMN_MIN_WIDTH
46
+ ),
39
47
  ...typeof subSchema["x-columns-max-width"] === "string" ? { columnsMaxWidth: subSchema["x-columns-max-width"] } : {},
40
48
  ...typeof subSchema["x-classes"] === "string" ? { className: subSchema["x-classes"] } : {},
41
- children: ctx.render.renderObjectFields(subSchema, obj, (next) => field.onChange(next), {
42
- ...ctx,
43
- readOnly: ctx.readOnly || field.readOnly === true,
44
- depth: ctx.depth + 1
45
- })
49
+ children: ctx.render.renderObjectFields(
50
+ subSchema,
51
+ obj,
52
+ (next) => field.onChange(next),
53
+ {
54
+ ...ctx,
55
+ readOnly: ctx.readOnly || field.readOnly === true,
56
+ depth: ctx.depth + 1
57
+ }
58
+ )
46
59
  }
47
60
  );
48
61
  }
49
- function StringMapControl({ field, ctx }) {
62
+ function StringMapControl({
63
+ field,
64
+ ctx
65
+ }) {
50
66
  const readOnly = ctx.readOnly || field.readOnly === true;
51
67
  const map = collections.isPlainObject(field.value) ? field.value : {};
52
68
  const known = field.knownProperties ?? {};
53
69
  const knownKeys = Object.keys(known);
54
70
  const extraKeys = Object.keys(map).filter((k) => !(k in known));
55
71
  const childCtx = { ...ctx, readOnly, depth: ctx.depth + 1 };
72
+ const properties = ctx.layout.mode === "properties";
56
73
  const pn = field.schema.propertyNames;
57
74
  const keyTitle = typeof (pn == null ? void 0 : pn.title) === "string" && pn.title ? pn.title : void 0;
58
75
  function valueSchemaForKey(key) {
@@ -76,7 +93,8 @@ function StringMapControl({ field, ctx }) {
76
93
  function renameEntry(oldKey, newKey) {
77
94
  if (newKey === oldKey) return;
78
95
  const next = {};
79
- for (const [k, v] of Object.entries(map)) next[k === oldKey ? newKey : k] = v;
96
+ for (const [k, v] of Object.entries(map))
97
+ next[k === oldKey ? newKey : k] = v;
80
98
  field.onChange(next);
81
99
  }
82
100
  function removeEntry(key) {
@@ -105,85 +123,221 @@ function StringMapControl({ field, ctx }) {
105
123
  function valueControlForKey(key) {
106
124
  return valueControlFor(key, valueSchemaForKey(key));
107
125
  }
108
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: utils.cn("flex flex-col rounded-md border border-input p-2", jsonSchemaFormSize.fieldInnerGapClass[childCtx.size]), children: [
109
- knownKeys.map((key) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[10rem_1fr] items-center gap-2", children: [
110
- /* @__PURE__ */ jsxRuntime.jsx(
111
- "label",
112
- {
113
- htmlFor: jsonSchemaFormUtils.fieldInputId(jsonSchemaFormErrors.appendInstancePath(ctx.instancePath, key), childCtx.idPrefix),
114
- className: "truncate text-xs text-muted-foreground",
115
- title: key,
116
- children: key
117
- }
118
- ),
119
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0", children: valueControlFor(key, known[key] ?? { type: "string" }) })
120
- ] }, `known-${key}`)),
121
- extraKeys.map((key) => {
122
- const keyControl = field.keyOptions ? /* @__PURE__ */ jsxRuntime.jsx(
123
- Combobox.Combobox,
124
- {
125
- options: jsonSchemaFormUtils.keyPickerOptions(field.keyOptions, extraKeys, key),
126
- value: key,
127
- disabled: readOnly,
128
- size: childCtx.size,
129
- allowCustomValue: false,
130
- onChange: (next) => renameEntry(key, next),
131
- placeholder: "Select…"
132
- }
133
- ) : /* @__PURE__ */ jsxRuntime.jsx(
134
- "input",
135
- {
136
- type: "text",
137
- "aria-label": "Field name",
138
- className: utils.cn(jsonSchemaFormUtils.inputClass(childCtx.size), "font-mono"),
139
- value: key,
140
- disabled: readOnly,
141
- onChange: (e) => renameEntry(key, e.target.value)
142
- }
143
- );
144
- const removeButton = !readOnly ? /* @__PURE__ */ jsxRuntime.jsx(
145
- "button",
146
- {
147
- type: "button",
148
- "aria-label": `Remove ${key}`,
149
- className: utils.cn(
150
- "inline-flex aspect-square shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground",
151
- jsonSchemaFormSize.controlHeightClass[childCtx.size]
152
- ),
153
- onClick: () => removeEntry(key),
154
- children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiTrash.UiTrash, className: "text-sm" })
155
- }
156
- ) : null;
157
- if (entryIsStacked(key)) {
158
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5 rounded-md border border-input p-2", children: [
159
- keyTitle && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-xs font-medium text-muted-foreground", children: keyTitle }),
160
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
161
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 flex-1", children: keyControl }),
162
- removeButton
163
- ] }),
164
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0", children: valueControlForKey(key) })
165
- ] }, `extra-${key}`);
126
+ function keyEditor({
127
+ key,
128
+ value,
129
+ onChange
130
+ }) {
131
+ const size = properties ? jsonSchemaFormPropertiesSize.propertyControlSize[ctx.size] : ctx.size;
132
+ return field.keyOptions ? /* @__PURE__ */ jsxRuntime.jsx(
133
+ Combobox.Combobox,
134
+ {
135
+ options: jsonSchemaFormUtils.keyPickerOptions(
136
+ field.keyOptions,
137
+ [...knownKeys, ...extraKeys],
138
+ key
139
+ ),
140
+ value,
141
+ disabled: readOnly,
142
+ size,
143
+ allowCustomValue: false,
144
+ onChange,
145
+ placeholder: "Select…"
166
146
  }
167
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[10rem_1fr_auto] items-center gap-2", children: [
168
- keyControl,
169
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0", children: valueControlForKey(key) }),
170
- removeButton
171
- ] }, `extra-${key}`);
172
- }),
173
- !readOnly && field.allowExtraKeys !== false && /* @__PURE__ */ jsxRuntime.jsxs(
174
- button.Button,
147
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
148
+ "input",
175
149
  {
176
- type: "button",
177
- variant: "outline",
178
- onClick: addEntry,
179
- className: utils.cn("gap-1.5", jsonSchemaFormSize.inputSizeClass[childCtx.size]),
180
- children: [
181
- /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiAdd.UiAdd, className: "text-sm" }),
182
- "Add field"
183
- ]
150
+ type: "text",
151
+ "aria-label": "Field name",
152
+ className: utils.cn(jsonSchemaFormUtils.inputClass(size), "font-mono"),
153
+ value,
154
+ disabled: readOnly,
155
+ onChange: (event) => onChange(event.target.value)
184
156
  }
185
- )
186
- ] });
157
+ );
158
+ }
159
+ return /* @__PURE__ */ jsxRuntime.jsxs(
160
+ "div",
161
+ {
162
+ className: utils.cn(
163
+ properties ? "col-span-full grid grid-cols-subgrid" : "flex flex-col",
164
+ !properties && !ctx.presentation && "rounded-md border border-input p-2",
165
+ !properties && jsonSchemaFormSize.fieldInnerGapClass[childCtx.size]
166
+ ),
167
+ children: [
168
+ knownKeys.map(
169
+ (key) => properties ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "contents", children: ctx.render.renderFieldRow(
170
+ {
171
+ key,
172
+ prop: known[key],
173
+ required: Array.isArray(field.schema.required) && field.schema.required.includes(key),
174
+ value: map[key],
175
+ onChange: (next) => setEntry(key, next),
176
+ instancePath: jsonSchemaFormErrors.appendInstancePath(ctx.instancePath, key)
177
+ },
178
+ childCtx
179
+ ) }, `known-${key}`) : /* @__PURE__ */ jsxRuntime.jsxs(
180
+ "div",
181
+ {
182
+ className: "grid grid-cols-[10rem_1fr] items-center gap-2",
183
+ children: [
184
+ /* @__PURE__ */ jsxRuntime.jsx(
185
+ "label",
186
+ {
187
+ htmlFor: jsonSchemaFormUtils.fieldInputId(
188
+ jsonSchemaFormErrors.appendInstancePath(ctx.instancePath, key),
189
+ childCtx.idPrefix
190
+ ),
191
+ className: "truncate text-xs text-muted-foreground",
192
+ title: key,
193
+ children: key
194
+ }
195
+ ),
196
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0", children: valueControlFor(key, known[key] ?? { type: "string" }) })
197
+ ]
198
+ },
199
+ `known-${key}`
200
+ )
201
+ ),
202
+ extraKeys.map((key) => {
203
+ var _a, _b, _c, _d;
204
+ const keyControl = ctx.presentation ? /* @__PURE__ */ jsxRuntime.jsx(
205
+ "span",
206
+ {
207
+ className: utils.cn(
208
+ "flex min-w-0 items-center break-words text-xs",
209
+ jsonSchemaFormSize.controlHeightClass[childCtx.size],
210
+ field.keyOptions ? "text-foreground" : "font-mono text-muted-foreground"
211
+ ),
212
+ children: ((_b = (_a = field.keyOptions) == null ? void 0 : _a.find((option) => option.value === key)) == null ? void 0 : _b.label) ?? key
213
+ }
214
+ ) : keyEditor({
215
+ key,
216
+ value: key,
217
+ onChange: (next) => renameEntry(key, next)
218
+ });
219
+ const removeButton = !readOnly ? /* @__PURE__ */ jsxRuntime.jsx(
220
+ "button",
221
+ {
222
+ type: "button",
223
+ "aria-label": `Remove ${key}`,
224
+ className: utils.cn(
225
+ "inline-flex aspect-square shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground",
226
+ jsonSchemaFormSize.controlHeightClass[childCtx.size]
227
+ ),
228
+ onClick: () => removeEntry(key),
229
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiTrash.UiTrash, className: "text-sm" })
230
+ }
231
+ ) : null;
232
+ if (properties) {
233
+ const instancePath = jsonSchemaFormErrors.appendInstancePath(ctx.instancePath, key);
234
+ const keyLabel = ((_d = (_c = field.keyOptions) == null ? void 0 : _c.find((option) => option.value === key)) == null ? void 0 : _d.label) ?? (key || "New field");
235
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "contents", children: ctx.render.renderFieldRow(
236
+ {
237
+ key,
238
+ prop: { ...valueSchemaForKey(key), title: keyLabel },
239
+ required: false,
240
+ value: map[key],
241
+ onChange: (next) => setEntry(key, next),
242
+ instancePath
243
+ },
244
+ {
245
+ ...childCtx,
246
+ post: [
247
+ ...childCtx.post,
248
+ (entry, nodes, postCtx) => (postCtx == null ? void 0 : postCtx.instancePath) !== instancePath ? nodes : {
249
+ ...nodes,
250
+ label: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
251
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: nodes.label }),
252
+ /* @__PURE__ */ jsxRuntime.jsx(
253
+ jsonSchemaFormProperties.PropertyValueEditor,
254
+ {
255
+ actionsPlacement: "row",
256
+ field: {
257
+ ...entry,
258
+ kind: "string",
259
+ label: `${keyLabel} key`,
260
+ value: key,
261
+ onChange: (next) => renameEntry(key, String(next))
262
+ },
263
+ fieldId: `${jsonSchemaFormUtils.fieldInputId(instancePath, ctx.idPrefix)}-key`,
264
+ ctx: {
265
+ ...childCtx,
266
+ size: jsonSchemaFormPropertiesSize.propertyControlSize[ctx.size]
267
+ },
268
+ renderPreview: (previewField) => /* @__PURE__ */ jsxRuntime.jsx("span", { children: String(previewField.value) }),
269
+ renderEditor: (draft) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 items-center gap-1", children: [
270
+ keyEditor({
271
+ key,
272
+ value: String(draft.value),
273
+ onChange: draft.onChange
274
+ }),
275
+ removeButton
276
+ ] })
277
+ }
278
+ )
279
+ ] })
280
+ }
281
+ ]
282
+ }
283
+ ) }, `extra-${key}`);
284
+ }
285
+ if (entryIsStacked(key)) {
286
+ return /* @__PURE__ */ jsxRuntime.jsxs(
287
+ "div",
288
+ {
289
+ className: utils.cn(
290
+ "space-y-1.5",
291
+ !ctx.presentation && "rounded-md border border-input p-2"
292
+ ),
293
+ children: [
294
+ keyTitle && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-xs font-medium text-muted-foreground", children: keyTitle }),
295
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
296
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 flex-1", children: keyControl }),
297
+ removeButton
298
+ ] }),
299
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0", children: valueControlForKey(key) })
300
+ ]
301
+ },
302
+ `extra-${key}`
303
+ );
304
+ }
305
+ return /* @__PURE__ */ jsxRuntime.jsxs(
306
+ "div",
307
+ {
308
+ className: utils.cn(
309
+ "grid items-center gap-2",
310
+ ctx.presentation ? "grid-cols-[minmax(0,10rem)_minmax(0,1fr)]" : "grid-cols-[10rem_1fr_auto]"
311
+ ),
312
+ children: [
313
+ keyControl,
314
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0", children: valueControlForKey(key) }),
315
+ removeButton
316
+ ]
317
+ },
318
+ `extra-${key}`
319
+ );
320
+ }),
321
+ !readOnly && field.allowExtraKeys !== false && /* @__PURE__ */ jsxRuntime.jsxs(
322
+ button.Button,
323
+ {
324
+ type: "button",
325
+ variant: properties ? "ghost" : "outline",
326
+ onClick: addEntry,
327
+ className: utils.cn(
328
+ "gap-1.5",
329
+ properties && "col-span-full justify-self-start m-1",
330
+ jsonSchemaFormSize.inputSizeClass[properties ? jsonSchemaFormPropertiesSize.propertyControlSize[ctx.size] : childCtx.size]
331
+ ),
332
+ children: [
333
+ /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiAdd.UiAdd, className: "text-sm" }),
334
+ "Add field"
335
+ ]
336
+ }
337
+ )
338
+ ]
339
+ }
340
+ );
187
341
  }
188
342
  exports.ObjectControl = ObjectControl;
189
343
  exports.StringMapControl = StringMapControl;
@@ -1 +1 @@
1
- {"version":3,"file":"json-schema-form-object.cjs","sources":["../../src/components/json-schema-form-object.tsx"],"sourcesContent":["import { type ReactNode } from \"react\";\nimport { isPlainObject } from \"../lib/collections\";\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../data/Icon\";\nimport { UiAdd, UiTrash } from \"../icons\";\nimport { Button } from \"./button\";\nimport { Combobox } from \"./Combobox\";\nimport type { FieldControl, JsonSchemaObject, JsonSchemaProperty, RenderContext } from \"./json-schema-form-types\";\nimport {\n cssLength,\n DEFAULT_COLUMN_MIN_WIDTH,\n fieldInputId,\n inputClass,\n keyPickerOptions,\n normalizeColumns,\n} from \"./json-schema-form-utils\";\nimport { FieldsGrid } from \"./json-schema-form-layout\";\nimport { appendInstancePath } from \"./json-schema-form-errors\";\nimport { controlHeightClass, fieldInnerGapClass, inputSizeClass } from \"./json-schema-form-size\";\n\n// ObjectControl renders a nested structured object as a sub-form: its own\n// properties, required markers, if/then, soft errors — all via the shared\n// recursive renderer (ctx.render), so pre/post extensions apply at this depth too.\nexport function ObjectControl({ field, ctx }: { field: FieldControl; ctx: RenderContext }) {\n const obj = isPlainObject(field.value) ? (field.value as Record<string, unknown>) : {};\n const subSchema: JsonSchemaObject = {\n type: \"object\",\n properties: field.objectProperties ?? {},\n ...(field.objectRequired ? { required: field.objectRequired } : {}),\n ...(Array.isArray(field.schema.allOf) ? { allOf: field.schema.allOf } : {}),\n ...(Array.isArray(field.schema[\"x-order\"]) ? { \"x-order\": field.schema[\"x-order\"] } : {}),\n // Every object-level layout keyword must be copied here or it works at the\n // top level and silently dies one level down — which is exactly where these\n // matter (an array item's body is a nested object).\n ...(typeof field.schema[\"x-columns\"] === \"number\" || field.schema[\"x-columns\"] === \"auto\"\n ? { \"x-columns\": field.schema[\"x-columns\"] }\n : {}),\n ...(typeof field.schema[\"x-column-min-width\"] === \"string\"\n ? { \"x-column-min-width\": field.schema[\"x-column-min-width\"] }\n : {}),\n ...(typeof field.schema[\"x-columns-max-width\"] === \"string\"\n ? { \"x-columns-max-width\": field.schema[\"x-columns-max-width\"] }\n : {}),\n ...(typeof field.schema[\"x-classes\"] === \"string\" ? { \"x-classes\": field.schema[\"x-classes\"] } : {}),\n };\n // No border/box: nested objects render as flat headed sections (see\n // ObjectSection in renderFieldRow) rather than progressively indented\n // sub-forms, so deep schemas stay readable as a single column.\n // A read-only object marks its whole subtree non-editable: recurse with\n // form-level readOnly on so child inputs are disabled (and any child the\n // schema marks readOnly still renders as a value span).\n return (\n <FieldsGrid\n layout={ctx.layout}\n size={ctx.size}\n columns={normalizeColumns(subSchema[\"x-columns\"])}\n columnMinWidth={cssLength(subSchema[\"x-column-min-width\"], DEFAULT_COLUMN_MIN_WIDTH)}\n {...(typeof subSchema[\"x-columns-max-width\"] === \"string\"\n ? { columnsMaxWidth: subSchema[\"x-columns-max-width\"] }\n : {})}\n {...(typeof subSchema[\"x-classes\"] === \"string\" ? { className: subSchema[\"x-classes\"] } : {})}\n >\n {ctx.render.renderObjectFields(subSchema, obj, (next) => field.onChange(next), {\n ...ctx,\n readOnly: ctx.readOnly || field.readOnly === true,\n depth: ctx.depth + 1,\n })}\n </FieldsGrid>\n );\n}\n\n// StringMapControl edits an object as key/value rows. Known properties (from the\n// schema) render first with derived value controls; unknown keys render as\n// editable key/value pairs. \"Add field\" appears when extra keys are allowed.\n// Values recurse through the shared pipeline, so a value that is itself an object\n// or array renders structurally and pre/post extensions apply to it.\nexport function StringMapControl({ field, ctx }: { field: FieldControl; ctx: RenderContext }) {\n // A read-only map marks its whole subtree non-editable: no rename/remove/add\n // and value inputs disabled.\n const readOnly = ctx.readOnly || field.readOnly === true;\n const map = isPlainObject(field.value) ? (field.value as Record<string, unknown>) : {};\n const known = field.knownProperties ?? {};\n const knownKeys = Object.keys(known);\n const extraKeys = Object.keys(map).filter((k) => !(k in known));\n const childCtx: RenderContext = { ...ctx, readOnly, depth: ctx.depth + 1 };\n // What the map key IS (e.g. \"Address Role\"), from the key-constraint schema.\n const pn = field.schema.propertyNames as JsonSchemaProperty | undefined;\n const keyTitle = typeof pn?.title === \"string\" && pn.title ? pn.title : undefined;\n\n // valueSchemaForKey picks an entry's value schema: the first patternProperties\n // entry whose regex matches the key, else the `additionalProperties` schema,\n // else a bare string. Lets the value form vary by key (e.g. House vs Apartment).\n function valueSchemaForKey(key: string): JsonSchemaProperty {\n for (const { pattern, schema } of field.valuePatternSchemas ?? []) {\n let re: RegExp | undefined;\n try {\n re = new RegExp(pattern);\n } catch {\n re = undefined; // a malformed pattern simply never matches\n }\n if (re?.test(key)) return schema;\n }\n return field.valueSchema ?? { type: \"string\" };\n }\n\n // When the entry value opts into a stacked layout (`x-layout: \"stack\"`), the\n // key+value render as one full-width stacked unit instead of a key column\n // beside the value. Resolved per key, since pattern schemas may differ.\n function entryIsStacked(key: string): boolean {\n return valueSchemaForKey(key)[\"x-layout\"] === \"stack\";\n }\n\n function setEntry(key: string, next: unknown) {\n field.onChange({ ...map, [key]: next });\n }\n function renameEntry(oldKey: string, newKey: string) {\n if (newKey === oldKey) return;\n const next: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(map)) next[k === oldKey ? newKey : k] = v;\n field.onChange(next);\n }\n function removeEntry(key: string) {\n const next = { ...map };\n delete next[key];\n field.onChange(next);\n }\n function addEntry() {\n if (\"\" in map) return;\n field.onChange({ ...map, \"\": \"\" });\n }\n\n function valueControlFor(key: string, valueSchema: JsonSchemaProperty): ReactNode {\n const nodes = ctx.render.renderFieldNodes(\n {\n key,\n prop: valueSchema,\n required: false,\n value: map[key] ?? \"\",\n onChange: (next) => setEntry(key, next),\n instancePath: appendInstancePath(ctx.instancePath, key),\n },\n childCtx,\n );\n return nodes?.value ?? null;\n }\n\n // valueControlForKey resolves the per-key value schema (patternProperties /\n // additionalProperties) before rendering, so the form varies by key.\n function valueControlForKey(key: string): ReactNode {\n return valueControlFor(key, valueSchemaForKey(key));\n }\n\n return (\n <div className={cn(\"flex flex-col rounded-md border border-input p-2\", fieldInnerGapClass[childCtx.size])}>\n {knownKeys.map((key) => (\n <div key={`known-${key}`} className=\"grid grid-cols-[10rem_1fr] items-center gap-2\">\n <label\n htmlFor={fieldInputId(appendInstancePath(ctx.instancePath, key), childCtx.idPrefix)}\n className=\"truncate text-xs text-muted-foreground\"\n title={key}\n >\n {key}\n </label>\n <div className=\"min-w-0\">{valueControlFor(key, known[key] ?? { type: \"string\" })}</div>\n </div>\n ))}\n {extraKeys.map((key) => {\n const keyControl = field.keyOptions ? (\n <Combobox\n options={keyPickerOptions(field.keyOptions, extraKeys, key)}\n value={key}\n disabled={readOnly}\n size={childCtx.size}\n allowCustomValue={false}\n onChange={(next) => renameEntry(key, next)}\n placeholder=\"Select…\"\n />\n ) : (\n <input\n type=\"text\"\n aria-label=\"Field name\"\n className={cn(inputClass(childCtx.size), \"font-mono\")}\n value={key}\n disabled={readOnly}\n onChange={(e) => renameEntry(key, e.target.value)}\n />\n );\n const removeButton = !readOnly ? (\n <button\n type=\"button\"\n aria-label={`Remove ${key}`}\n className={cn(\n \"inline-flex aspect-square shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground\",\n controlHeightClass[childCtx.size],\n )}\n onClick={() => removeEntry(key)}\n >\n <Icon icon={UiTrash} className=\"text-sm\" />\n </button>\n ) : null;\n // When the value is stacked (`x-layout: \"stack\"` on the entry schema),\n // the key joins the stack: it sits full-width above its value as one\n // unit, rather than cramped in a fixed key column beside it. The key\n // picker is labelled from `propertyNames.title` so a constrained key\n // (e.g. an AsCode role) says what it is.\n if (entryIsStacked(key)) {\n return (\n <div key={`extra-${key}`} className=\"space-y-1.5 rounded-md border border-input p-2\">\n {keyTitle && <span className=\"block text-xs font-medium text-muted-foreground\">{keyTitle}</span>}\n <div className=\"flex items-center gap-2\">\n <div className=\"min-w-0 flex-1\">{keyControl}</div>\n {removeButton}\n </div>\n <div className=\"min-w-0\">{valueControlForKey(key)}</div>\n </div>\n );\n }\n return (\n <div key={`extra-${key}`} className=\"grid grid-cols-[10rem_1fr_auto] items-center gap-2\">\n {keyControl}\n <div className=\"min-w-0\">{valueControlForKey(key)}</div>\n {removeButton}\n </div>\n );\n })}\n {!readOnly && field.allowExtraKeys !== false && (\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={addEntry}\n className={cn(\"gap-1.5\", inputSizeClass[childCtx.size])}\n >\n <Icon icon={UiAdd} className=\"text-sm\" />\n Add field\n </Button>\n )}\n </div>\n );\n}\n"],"names":["isPlainObject","jsx","FieldsGrid","normalizeColumns","cssLength","DEFAULT_COLUMN_MIN_WIDTH","appendInstancePath","jsxs","cn","fieldInnerGapClass","fieldInputId","Combobox","keyPickerOptions","inputClass","controlHeightClass","Icon","UiTrash","Button","inputSizeClass","UiAdd"],"mappings":"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"}
1
+ {"version":3,"file":"json-schema-form-object.cjs","sources":["../../src/components/json-schema-form-object.tsx"],"sourcesContent":["import { type ReactNode } from \"react\";\nimport { isPlainObject } from \"../lib/collections\";\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../data/Icon\";\nimport { UiAdd, UiTrash } from \"../icons\";\nimport { Button } from \"./button\";\nimport { Combobox } from \"./Combobox\";\nimport type {\n FieldControl,\n JsonSchemaObject,\n JsonSchemaProperty,\n RenderContext,\n} from \"./json-schema-form-types\";\nimport {\n cssLength,\n DEFAULT_COLUMN_MIN_WIDTH,\n fieldInputId,\n inputClass,\n keyPickerOptions,\n normalizeColumns,\n} from \"./json-schema-form-utils\";\nimport { FieldsGrid } from \"./json-schema-form-layout\";\nimport { PropertyValueEditor } from \"./json-schema-form-properties\";\nimport { propertyControlSize } from \"./json-schema-form-properties-size\";\nimport { appendInstancePath } from \"./json-schema-form-errors\";\nimport {\n controlHeightClass,\n fieldInnerGapClass,\n inputSizeClass,\n} from \"./json-schema-form-size\";\n\n// ObjectControl renders a nested structured object as a sub-form: its own\n// properties, required markers, if/then, soft errors — all via the shared\n// recursive renderer (ctx.render), so pre/post extensions apply at this depth too.\nexport function ObjectControl({\n field,\n ctx,\n}: {\n field: FieldControl;\n ctx: RenderContext;\n}) {\n const obj = isPlainObject(field.value)\n ? (field.value as Record<string, unknown>)\n : {};\n const subSchema: JsonSchemaObject = {\n type: \"object\",\n properties: field.objectProperties ?? {},\n ...(field.objectRequired ? { required: field.objectRequired } : {}),\n ...(Array.isArray(field.schema.allOf) ? { allOf: field.schema.allOf } : {}),\n ...(Array.isArray(field.schema[\"x-order\"])\n ? { \"x-order\": field.schema[\"x-order\"] }\n : {}),\n // Every object-level layout keyword must be copied here or it works at the\n // top level and silently dies one level down — which is exactly where these\n // matter (an array item's body is a nested object).\n ...(typeof field.schema[\"x-columns\"] === \"number\" ||\n field.schema[\"x-columns\"] === \"auto\"\n ? { \"x-columns\": field.schema[\"x-columns\"] }\n : {}),\n ...(typeof field.schema[\"x-column-min-width\"] === \"string\"\n ? { \"x-column-min-width\": field.schema[\"x-column-min-width\"] }\n : {}),\n ...(typeof field.schema[\"x-columns-max-width\"] === \"string\"\n ? { \"x-columns-max-width\": field.schema[\"x-columns-max-width\"] }\n : {}),\n ...(typeof field.schema[\"x-classes\"] === \"string\"\n ? { \"x-classes\": field.schema[\"x-classes\"] }\n : {}),\n };\n // No border/box: nested objects render as flat headed sections (see\n // ObjectSection in renderFieldRow) rather than progressively indented\n // sub-forms, so deep schemas stay readable as a single column.\n // A read-only object marks its whole subtree non-editable: recurse with\n // form-level readOnly on so child inputs are disabled (and any child the\n // schema marks readOnly still renders as a value span).\n return (\n <FieldsGrid\n layout={ctx.layout}\n size={ctx.size}\n columns={normalizeColumns(subSchema[\"x-columns\"])}\n columnMinWidth={cssLength(\n subSchema[\"x-column-min-width\"],\n DEFAULT_COLUMN_MIN_WIDTH,\n )}\n {...(typeof subSchema[\"x-columns-max-width\"] === \"string\"\n ? { columnsMaxWidth: subSchema[\"x-columns-max-width\"] }\n : {})}\n {...(typeof subSchema[\"x-classes\"] === \"string\"\n ? { className: subSchema[\"x-classes\"] }\n : {})}\n >\n {ctx.render.renderObjectFields(\n subSchema,\n obj,\n (next) => field.onChange(next),\n {\n ...ctx,\n readOnly: ctx.readOnly || field.readOnly === true,\n depth: ctx.depth + 1,\n },\n )}\n </FieldsGrid>\n );\n}\n\n// StringMapControl edits an object as key/value rows. Known properties (from the\n// schema) render first with derived value controls; unknown keys render as\n// editable key/value pairs. \"Add field\" appears when extra keys are allowed.\n// Values recurse through the shared pipeline, so a value that is itself an object\n// or array renders structurally and pre/post extensions apply to it.\nexport function StringMapControl({\n field,\n ctx,\n}: {\n field: FieldControl;\n ctx: RenderContext;\n}) {\n // A read-only map marks its whole subtree non-editable: no rename/remove/add\n // and value inputs disabled.\n const readOnly = ctx.readOnly || field.readOnly === true;\n const map = isPlainObject(field.value)\n ? (field.value as Record<string, unknown>)\n : {};\n const known = field.knownProperties ?? {};\n const knownKeys = Object.keys(known);\n const extraKeys = Object.keys(map).filter((k) => !(k in known));\n const childCtx: RenderContext = { ...ctx, readOnly, depth: ctx.depth + 1 };\n const properties = ctx.layout.mode === \"properties\";\n // What the map key IS (e.g. \"Address Role\"), from the key-constraint schema.\n const pn = field.schema.propertyNames as JsonSchemaProperty | undefined;\n const keyTitle =\n typeof pn?.title === \"string\" && pn.title ? pn.title : undefined;\n\n // valueSchemaForKey picks an entry's value schema: the first patternProperties\n // entry whose regex matches the key, else the `additionalProperties` schema,\n // else a bare string. Lets the value form vary by key (e.g. House vs Apartment).\n function valueSchemaForKey(key: string): JsonSchemaProperty {\n for (const { pattern, schema } of field.valuePatternSchemas ?? []) {\n let re: RegExp | undefined;\n try {\n re = new RegExp(pattern);\n } catch {\n re = undefined; // a malformed pattern simply never matches\n }\n if (re?.test(key)) return schema;\n }\n return field.valueSchema ?? { type: \"string\" };\n }\n\n // When the entry value opts into a stacked layout (`x-layout: \"stack\"`), the\n // key+value render as one full-width stacked unit instead of a key column\n // beside the value. Resolved per key, since pattern schemas may differ.\n function entryIsStacked(key: string): boolean {\n return valueSchemaForKey(key)[\"x-layout\"] === \"stack\";\n }\n\n function setEntry(key: string, next: unknown) {\n field.onChange({ ...map, [key]: next });\n }\n function renameEntry(oldKey: string, newKey: string) {\n if (newKey === oldKey) return;\n const next: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(map))\n next[k === oldKey ? newKey : k] = v;\n field.onChange(next);\n }\n function removeEntry(key: string) {\n const next = { ...map };\n delete next[key];\n field.onChange(next);\n }\n function addEntry() {\n if (\"\" in map) return;\n field.onChange({ ...map, \"\": \"\" });\n }\n\n function valueControlFor(\n key: string,\n valueSchema: JsonSchemaProperty,\n ): ReactNode {\n const nodes = ctx.render.renderFieldNodes(\n {\n key,\n prop: valueSchema,\n required: false,\n value: map[key] ?? \"\",\n onChange: (next) => setEntry(key, next),\n instancePath: appendInstancePath(ctx.instancePath, key),\n },\n childCtx,\n );\n return nodes?.value ?? null;\n }\n\n // valueControlForKey resolves the per-key value schema (patternProperties /\n // additionalProperties) before rendering, so the form varies by key.\n function valueControlForKey(key: string): ReactNode {\n return valueControlFor(key, valueSchemaForKey(key));\n }\n\n function keyEditor({\n key,\n value,\n onChange,\n }: {\n key: string;\n value: string;\n onChange: (next: string) => void;\n }) {\n const size = properties ? propertyControlSize[ctx.size] : ctx.size;\n return field.keyOptions ? (\n <Combobox\n options={keyPickerOptions(\n field.keyOptions,\n [...knownKeys, ...extraKeys],\n key,\n )}\n value={value}\n disabled={readOnly}\n size={size}\n allowCustomValue={false}\n onChange={onChange}\n placeholder=\"Select…\"\n />\n ) : (\n <input\n type=\"text\"\n aria-label=\"Field name\"\n className={cn(inputClass(size), \"font-mono\")}\n value={value}\n disabled={readOnly}\n onChange={(event) => onChange(event.target.value)}\n />\n );\n }\n\n return (\n <div\n className={cn(\n properties ? \"col-span-full grid grid-cols-subgrid\" : \"flex flex-col\",\n !properties &&\n !ctx.presentation &&\n \"rounded-md border border-input p-2\",\n !properties && fieldInnerGapClass[childCtx.size],\n )}\n >\n {knownKeys.map((key) =>\n properties ? (\n <div key={`known-${key}`} className=\"contents\">\n {ctx.render.renderFieldRow(\n {\n key,\n prop: known[key]!,\n required:\n Array.isArray(field.schema.required) &&\n field.schema.required.includes(key),\n value: map[key],\n onChange: (next) => setEntry(key, next),\n instancePath: appendInstancePath(ctx.instancePath, key),\n },\n childCtx,\n )}\n </div>\n ) : (\n <div\n key={`known-${key}`}\n className=\"grid grid-cols-[10rem_1fr] items-center gap-2\"\n >\n <label\n htmlFor={fieldInputId(\n appendInstancePath(ctx.instancePath, key),\n childCtx.idPrefix,\n )}\n className=\"truncate text-xs text-muted-foreground\"\n title={key}\n >\n {key}\n </label>\n <div className=\"min-w-0\">\n {valueControlFor(key, known[key] ?? { type: \"string\" })}\n </div>\n </div>\n ),\n )}\n {extraKeys.map((key) => {\n const keyControl = ctx.presentation ? (\n <span\n className={cn(\n \"flex min-w-0 items-center break-words text-xs\",\n controlHeightClass[childCtx.size],\n field.keyOptions\n ? \"text-foreground\"\n : \"font-mono text-muted-foreground\",\n )}\n >\n {field.keyOptions?.find((option) => option.value === key)?.label ??\n key}\n </span>\n ) : (\n keyEditor({\n key,\n value: key,\n onChange: (next) => renameEntry(key, next),\n })\n );\n const removeButton = !readOnly ? (\n <button\n type=\"button\"\n aria-label={`Remove ${key}`}\n className={cn(\n \"inline-flex aspect-square shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground\",\n controlHeightClass[childCtx.size],\n )}\n onClick={() => removeEntry(key)}\n >\n <Icon icon={UiTrash} className=\"text-sm\" />\n </button>\n ) : null;\n if (properties) {\n const instancePath = appendInstancePath(ctx.instancePath, key);\n const keyLabel =\n field.keyOptions?.find((option) => option.value === key)?.label ??\n (key || \"New field\");\n return (\n <div key={`extra-${key}`} className=\"contents\">\n {ctx.render.renderFieldRow(\n {\n key,\n prop: { ...valueSchemaForKey(key), title: keyLabel },\n required: false,\n value: map[key],\n onChange: (next) => setEntry(key, next),\n instancePath,\n },\n {\n ...childCtx,\n post: [\n ...childCtx.post,\n (entry, nodes, postCtx) =>\n postCtx?.instancePath !== instancePath\n ? nodes\n : {\n ...nodes,\n label: (\n <>\n <span className=\"sr-only\">{nodes.label}</span>\n <PropertyValueEditor\n actionsPlacement=\"row\"\n field={{\n ...entry,\n kind: \"string\",\n label: `${keyLabel} key`,\n value: key,\n onChange: (next) =>\n renameEntry(key, String(next)),\n }}\n fieldId={`${fieldInputId(instancePath, ctx.idPrefix)}-key`}\n ctx={{\n ...childCtx,\n size: propertyControlSize[ctx.size],\n }}\n renderPreview={(previewField) => (\n <span>{String(previewField.value)}</span>\n )}\n renderEditor={(draft) => (\n <div className=\"flex min-w-0 items-center gap-1\">\n {keyEditor({\n key,\n value: String(draft.value),\n onChange: draft.onChange,\n })}\n {removeButton}\n </div>\n )}\n />\n </>\n ),\n },\n ],\n },\n )}\n </div>\n );\n }\n // When the value is stacked (`x-layout: \"stack\"` on the entry schema),\n // the key joins the stack: it sits full-width above its value as one\n // unit, rather than cramped in a fixed key column beside it. The key\n // picker is labelled from `propertyNames.title` so a constrained key\n // (e.g. an AsCode role) says what it is.\n if (entryIsStacked(key)) {\n return (\n <div\n key={`extra-${key}`}\n className={cn(\n \"space-y-1.5\",\n !ctx.presentation && \"rounded-md border border-input p-2\",\n )}\n >\n {keyTitle && (\n <span className=\"block text-xs font-medium text-muted-foreground\">\n {keyTitle}\n </span>\n )}\n <div className=\"flex items-center gap-2\">\n <div className=\"min-w-0 flex-1\">{keyControl}</div>\n {removeButton}\n </div>\n <div className=\"min-w-0\">{valueControlForKey(key)}</div>\n </div>\n );\n }\n return (\n <div\n key={`extra-${key}`}\n className={cn(\n \"grid items-center gap-2\",\n ctx.presentation\n ? \"grid-cols-[minmax(0,10rem)_minmax(0,1fr)]\"\n : \"grid-cols-[10rem_1fr_auto]\",\n )}\n >\n {keyControl}\n <div className=\"min-w-0\">{valueControlForKey(key)}</div>\n {removeButton}\n </div>\n );\n })}\n {!readOnly && field.allowExtraKeys !== false && (\n <Button\n type=\"button\"\n variant={properties ? \"ghost\" : \"outline\"}\n onClick={addEntry}\n className={cn(\n \"gap-1.5\",\n properties && \"col-span-full justify-self-start m-1\",\n inputSizeClass[\n properties ? propertyControlSize[ctx.size] : childCtx.size\n ],\n )}\n >\n <Icon icon={UiAdd} className=\"text-sm\" />\n Add field\n </Button>\n )}\n </div>\n );\n}\n"],"names":["isPlainObject","jsx","FieldsGrid","normalizeColumns","cssLength","DEFAULT_COLUMN_MIN_WIDTH","appendInstancePath","propertyControlSize","Combobox","keyPickerOptions","cn","inputClass","jsxs","fieldInnerGapClass","fieldInputId","controlHeightClass","Icon","UiTrash","Fragment","PropertyValueEditor","Button","inputSizeClass","UiAdd"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { FieldControl, RenderContext } from './json-schema-form-types';
2
- export declare function ObjectControl({ field, ctx }: {
2
+ export declare function ObjectControl({ field, ctx, }: {
3
3
  field: FieldControl;
4
4
  ctx: RenderContext;
5
5
  }): import("react").JSX.Element;
6
- export declare function StringMapControl({ field, ctx }: {
6
+ export declare function StringMapControl({ field, ctx, }: {
7
7
  field: FieldControl;
8
8
  ctx: RenderContext;
9
9
  }): import("react").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"json-schema-form-object.d.ts","sourceRoot":"","sources":["../../src/components/json-schema-form-object.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAwC,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAgBlH,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,GAAG,EAAE,aAAa,CAAA;CAAE,+BA8CxF;AAOD,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,GAAG,EAAE,aAAa,CAAA;CAAE,+BAkK3F"}
1
+ {"version":3,"file":"json-schema-form-object.d.ts","sourceRoot":"","sources":["../../src/components/json-schema-form-object.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,YAAY,EAGZ,aAAa,EACd,MAAM,0BAA0B,CAAC;AAsBlC,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,GAAG,GACJ,EAAE;IACD,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,EAAE,aAAa,CAAC;CACpB,+BA+DA;AAOD,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,GAAG,GACJ,EAAE;IACD,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,EAAE,aAAa,CAAC;CACpB,+BA0UA"}