@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
@@ -1 +1 @@
1
- {"version":3,"file":"json-schema-form-resolve.js","sources":["../../src/components/json-schema-form-resolve.ts"],"sourcesContent":["import { createElement, type ReactNode } from \"react\";\nimport type {\n ArrayDisplay,\n EnumDisplay,\n FieldControl,\n FieldOption,\n HelpDisplay,\n JsonSchemaObject,\n JsonSchemaProperty,\n LookupDescriptor,\n ScalarItemType,\n} from \"./json-schema-form-types\";\nimport { isPlainObject } from \"../lib/collections\";\nimport { LabelIcon } from \"../data/Icon\";\nimport { resolveItemSpec } from \"./json-schema-form-item-summary\";\nimport { isFieldTone } from \"./json-schema-form-tone\";\n\n// isOpenStringMap reports whether a property is an object whose entries are\n// described by a sub-schema in `additionalProperties` (a typed key/value map) or\n// by `patternProperties` (a per-key-pattern value map). Either makes it an\n// editable key/value control rather than a fixed-property sub-form.\nexport function isOpenStringMap(prop: JsonSchemaProperty): boolean {\n if (!schemaRendersAsObject(prop)) return false;\n if (\n typeof prop.additionalProperties === \"object\" &&\n prop.additionalProperties !== null\n ) {\n return true;\n }\n return (\n !!prop.patternProperties && Object.keys(prop.patternProperties).length > 0\n );\n}\n\n// patternSchemasOf compiles a schema's `patternProperties` into the ordered\n// {pattern, schema} list the string-map control matches keys against.\nfunction patternSchemasOf(\n prop: JsonSchemaProperty,\n): { pattern: string; schema: JsonSchemaProperty }[] | undefined {\n const pp = prop.patternProperties;\n if (!pp || Object.keys(pp).length === 0) return undefined;\n return Object.entries(pp).map(([pattern, schema]) => ({ pattern, schema }));\n}\n\nfunction schemaHasType(prop: JsonSchemaProperty, type: string): boolean {\n if (Array.isArray(prop.type)) return prop.type.includes(type as never);\n return prop.type === type;\n}\n\n// schemaRendersAsObject accepts schemas that omit `type` but use object-only\n// keywords, including composed schemas whose local refs were rehydrated into\n// unconditional allOf members. An explicit incompatible type always wins.\nexport function schemaRendersAsObject(prop: JsonSchemaProperty): boolean {\n if (schemaHasType(prop, \"object\")) return true;\n if (prop.type !== undefined) return false;\n if (\n prop.properties !== undefined ||\n prop.required !== undefined ||\n prop.additionalProperties !== undefined ||\n prop.patternProperties !== undefined ||\n prop.propertyNames !== undefined ||\n prop.unevaluatedProperties !== undefined\n ) {\n return true;\n }\n return (\n prop.allOf?.some(\n (clause) =>\n clause.if === undefined &&\n clause.then === undefined &&\n schemaRendersAsObject(clause as JsonSchemaProperty),\n ) ?? false\n );\n}\n\nfunction enumOptions(prop: JsonSchemaProperty): FieldOption[] {\n const labels = prop[\"x-enum-labels\"];\n const icons = prop[\"x-enum-icons\"];\n const descriptions = prop[\"x-enum-descriptions\"];\n const tones = prop[\"x-enum-tones\"];\n return (prop.enum ?? []).map((v) => {\n const value = String(v);\n const desc = labels?.[value];\n const icon = icons?.[value];\n const description = descriptions?.[value];\n const tone = tones?.[value];\n return {\n value,\n label:\n typeof desc === \"string\" && desc && desc !== value\n ? `${desc} (${value})`\n : value,\n ...(typeof icon === \"string\" && icon ? { icon } : {}),\n ...(typeof description === \"string\" && description\n ? { description }\n : {}),\n ...(isFieldTone(tone) ? { tone } : {}),\n };\n });\n}\n\n// enumDisplay resolves how an enum should render: an explicit `x-enum-display`\n// wins; otherwise an enum carrying `x-enum-icons` defaults to the icon grid.\n// Returns undefined to keep the combobox default.\nfunction enumDisplay(prop: JsonSchemaProperty): EnumDisplay | undefined {\n const d = prop[\"x-enum-display\"];\n if (d === \"combobox\" || d === \"radio\" || d === \"grid\" || d === \"segmented\")\n return d;\n const icons = prop[\"x-enum-icons\"];\n if (icons && Object.keys(icons).length > 0) return \"grid\";\n return undefined;\n}\n\nfunction arrayDisplay(prop: JsonSchemaProperty): ArrayDisplay | undefined {\n const d = prop[\"x-array-display\"];\n return d === \"filter-pills\" ||\n d === \"accordion\" ||\n d === \"cards\" ||\n d === \"stacked\" ||\n d === \"list\"\n ? d\n : undefined;\n}\n\n// helpDisplay reads the per-field `x-help-display` override. Returns undefined\n// to defer to the form-level FormLayout.help.\nfunction helpDisplay(prop: JsonSchemaProperty): HelpDisplay | undefined {\n const d = prop[\"x-help-display\"];\n return d === \"inline\" || d === \"hover\" ? d : undefined;\n}\n\nexport function schemaHelper(prop: JsonSchemaProperty): string | undefined {\n const description =\n typeof prop.description === \"string\" ? prop.description.trim() : \"\";\n const help = prop[\"x-help\"];\n const helpBody =\n isPlainObject(help) && typeof help.body === \"string\"\n ? help.body.trim()\n : \"\";\n\n if (description && helpBody && helpBody !== description) {\n return `${description} ${helpBody}`;\n }\n return description || helpBody || undefined;\n}\n\n// adornmentNode builds a prefix/suffix node from the x-input-*[-icon] extensions:\n// a runtime icon name wins, else static text. Returns undefined when neither set.\nfunction adornmentNode(iconName: unknown, text: unknown): ReactNode {\n if (typeof iconName === \"string\" && iconName) {\n // Match the library's InputField field-icon convention (16px, muted/70) so a\n // schema-driven field lines up with a hand-built one.\n return createElement(LabelIcon, {\n icon: iconName,\n className: \"size-4 text-muted-foreground/70\",\n });\n }\n if (typeof text === \"string\" && text) {\n return createElement(\n \"span\",\n { className: \"text-sm text-muted-foreground\" },\n text,\n );\n }\n return undefined;\n}\n\n// enumBranch returns the first anyOf/oneOf member carrying a non-empty `enum`,\n// for a union of \"an enum value OR a free-form string\" (e.g. a value-or-token\n// field). It lets such a union render as a dropdown. Returns undefined when no\n// branch enumerates values.\nexport function enumBranch(\n prop: JsonSchemaProperty,\n): JsonSchemaProperty | undefined {\n for (const branch of [...(prop.anyOf ?? []), ...(prop.oneOf ?? [])]) {\n if (Array.isArray(branch.enum) && branch.enum.length > 0) return branch;\n }\n return undefined;\n}\n\n// lookupDescriptor reads the `x-clicky-lookup` extension into a LookupDescriptor,\n// returning undefined when the keyword is absent or lacks its required url/filter.\nfunction lookupDescriptor(\n prop: JsonSchemaProperty,\n): LookupDescriptor | undefined {\n const raw = prop[\"x-clicky-lookup\"];\n if (!raw || typeof raw !== \"object\") return undefined;\n const d = raw as Record<string, unknown>;\n if (typeof d.url !== \"string\" || typeof d.filter !== \"string\")\n return undefined;\n return raw as LookupDescriptor;\n}\n\nexport interface ResolveControlArgs {\n key: string;\n prop: JsonSchemaProperty;\n required: boolean;\n value: unknown;\n onChange: (next: unknown) => void;\n}\n\n// resolveControl infers a base, render-ready FieldControl from a property\n// schema. It keys off schema keywords only — never the field name: ascode/token\n// heuristics are layered on by consumer pre-extensions. The one exception is the\n// standard `format: date`/`date-time` keyword, which is a schema-declared signal\n// (not a name guess) and so drives a date control directly. First match wins.\nexport function resolveControl(args: ResolveControlArgs): FieldControl {\n const { key, prop, required, value, onChange } = args;\n const labelIcon = prop[\"x-icon\"];\n const xLayout = prop[\"x-layout\"];\n const explicitLayout =\n xLayout === \"inline\" || xLayout === \"stack\" || xLayout === \"table\"\n ? xLayout\n : undefined;\n // `x-label-position` is a friendlier alias over the same per-field layout knob:\n // \"top\" stacks the label above the value; \"left\" forces inline. `x-layout` wins.\n const labelPosition = prop[\"x-label-position\"];\n const layout =\n explicitLayout ??\n (labelPosition === \"top\"\n ? \"stack\"\n : labelPosition === \"left\"\n ? \"inline\"\n : undefined);\n const prefix = adornmentNode(\n prop[\"x-input-prefix-icon\"],\n prop[\"x-input-prefix\"],\n );\n const suffix = adornmentNode(\n prop[\"x-input-suffix-icon\"],\n prop[\"x-input-suffix\"],\n );\n const labelClassName =\n typeof prop[\"x-label-classes\"] === \"string\"\n ? prop[\"x-label-classes\"]\n : undefined;\n const inputClassName =\n typeof prop[\"x-input-classes\"] === \"string\"\n ? prop[\"x-input-classes\"]\n : undefined;\n const colSpan =\n prop[\"x-col-span\"] === \"full\"\n ? (\"full\" as const)\n : typeof prop[\"x-col-span\"] === \"number\" &&\n Number.isFinite(prop[\"x-col-span\"])\n ? prop[\"x-col-span\"]\n : undefined;\n const keyOptions = keyOptionsFor(prop);\n const helper = schemaHelper(prop);\n const helpMode = helpDisplay(prop);\n const base: FieldControl = {\n key,\n kind: \"string\",\n label: typeof prop.title === \"string\" && prop.title ? prop.title : key,\n required,\n schema: prop,\n value,\n onChange,\n ...(prop.readOnly === true ? { readOnly: true } : {}),\n ...(typeof prop.description === \"string\"\n ? { description: prop.description }\n : {}),\n ...(helper ? { helper } : {}),\n ...(helpMode ? { helpDisplay: helpMode } : {}),\n ...(labelIcon != null && labelIcon !== \"\"\n ? { labelIcon: labelIcon as FieldControl[\"labelIcon\"] }\n : {}),\n ...(layout ? { layout } : {}),\n ...(prefix ? { prefix } : {}),\n ...(suffix ? { suffix } : {}),\n ...(labelClassName ? { labelClassName } : {}),\n ...(inputClassName ? { inputClassName } : {}),\n ...(colSpan != null ? { colSpan } : {}),\n };\n\n // An `x-clicky-lookup` field is an async entity-reference picker: options load\n // lazily from another entity's list endpoint. Single-select also allows\n // free-form entry so a typed value outside the option set still commits.\n const lookup = lookupDescriptor(prop);\n if (lookup) {\n return {\n ...base,\n kind: \"lookup\",\n lookup,\n options: [],\n allowCustomValue: lookup.multi !== true,\n };\n }\n if (Array.isArray(prop.enum) && prop.enum.length > 0) {\n const display = enumDisplay(prop);\n return {\n ...base,\n kind: \"enum\",\n options: enumOptions(prop),\n ...(display ? { display } : {}),\n };\n }\n // A value-or-template union: the enum lives in an anyOf/oneOf branch alongside\n // free-form branches. Render it as a dropdown using that branch's enum; the\n // free-form branches are honoured via a consumer's allowCustomValue pre-ext.\n const branch = enumBranch(prop);\n if (branch) {\n return { ...base, kind: \"enum\", options: enumOptions(branch) };\n }\n // A schema-declared date/date-time string renders as a date control.\n if (prop.format === \"date\" || prop.format === \"date-time\") {\n return { ...base, kind: \"date\", dateFormat: prop.format };\n }\n // A long-form string declares `format: textarea` to render a multi-line box.\n if (prop.format === \"textarea\" && schemaHasType(prop, \"string\")) {\n return { ...base, kind: \"textarea\" };\n }\n // A markdown string declares `format: md` to render the MDXEditor-backed\n // editor. Plugin toggles live under `x-md-editor` so schema authors can keep\n // the format signal standard-sized and the editor behavior explicit.\n if (prop.format === \"md\" && schemaHasType(prop, \"string\")) {\n const markdownOptions = prop[\"x-md-editor\"];\n return {\n ...base,\n kind: \"markdown\",\n ...(isPlainObject(markdownOptions) ? { markdownOptions } : {}),\n };\n }\n if (schemaHasType(prop, \"boolean\")) {\n return { ...base, kind: \"boolean\" };\n }\n if (schemaHasType(prop, \"integer\") || schemaHasType(prop, \"number\")) {\n return {\n ...base,\n kind: \"number\",\n coerceNumber: true,\n // A percent number carries a static \"%\" unit shown inside the input.\n ...(prop.format === \"percent\" ? { unit: \"%\" } : {}),\n ...(typeof prop.minimum === \"number\" ? { minimum: prop.minimum } : {}),\n };\n }\n if (schemaHasType(prop, \"array\")) {\n const display = arrayDisplay(prop);\n const itemSchema = prop.items;\n return {\n ...base,\n kind: \"array\",\n ...(itemSchema ? { itemSchema } : {}),\n ...(display ? { arrayDisplay: display } : {}),\n ...(display === \"accordion\" ? { itemSpec: resolveItemSpec(prop, itemSchema) } : {}),\n // An accordion reuses the array's description as the zero-item copy in its\n // add row, so a paragraph of the same sentence directly above would be a\n // literal duplicate. The schema can still say otherwise.\n ...(display === \"accordion\" && !helpMode ? { helpDisplay: \"hover\" as const } : {}),\n // An enum item schema makes the whole array a list of choices, whichever\n // display renders it (tags by default, filter pills on request), so the\n // options — labels, icons, tones and all — always resolve.\n ...(itemSchema && Array.isArray(itemSchema.enum)\n ? { options: enumOptions(itemSchema) }\n : {}),\n ...(layout ? { layout } : {}),\n };\n }\n // An open map: object whose entries are described by an additionalProperties\n // sub-schema and/or per-key patternProperties. Renders as editable key/value\n // rows (+ any known properties), with the value form resolved per key.\n if (isOpenStringMap(prop)) {\n const addl =\n typeof prop.additionalProperties === \"object\" &&\n prop.additionalProperties !== null\n ? (prop.additionalProperties as JsonSchemaProperty)\n : undefined;\n const patterns = patternSchemasOf(prop);\n // A constrained picker (propertyNames enum) or patternProperties still lets\n // the author ADD keys — the additions are limited to the allowed set, not\n // free-form — so `additionalProperties: false` doesn't disable \"Add field\"\n // in that case. It only closes a plain open map with no key constraints.\n const allowExtraKeys =\n keyOptions || patterns ? true : prop.additionalProperties !== false;\n return {\n ...base,\n kind: \"string-map\",\n ...(addl ? { valueSchema: addl } : {}),\n ...(patterns ? { valuePatternSchemas: patterns } : {}),\n ...(prop.properties ? { knownProperties: prop.properties } : {}),\n allowExtraKeys,\n ...(keyOptions ? { keyOptions } : {}),\n ...(layout ? { layout } : {}),\n };\n }\n // A structured object: fixed `properties`, not an open map. Renders as a\n // nested sub-form (labels, required, if/then) — recursed into by the renderer.\n if (schemaRendersAsObject(prop)) {\n const valueObject = isPlainObject(value) ? value : {};\n const objectFields = effectiveProperties(\n prop as JsonSchemaObject,\n valueObject,\n );\n if (Object.keys(objectFields.properties).length > 0 || prop.properties) {\n return {\n ...base,\n kind: \"object\",\n objectProperties: objectFields.properties,\n ...(objectFields.required.length > 0\n ? { objectRequired: objectFields.required }\n : {}),\n ...(layout ? { layout } : {}),\n };\n }\n }\n // A bare object with neither properties nor an additionalProperties schema:\n // treat as an open string map unless explicitly closed.\n if (schemaRendersAsObject(prop)) {\n return {\n ...base,\n kind: \"string-map\",\n allowExtraKeys: prop.additionalProperties !== false,\n ...(keyOptions ? { keyOptions } : {}),\n ...(layout ? { layout } : {}),\n };\n }\n return base;\n}\n\n// keyOptionsFor resolves the strict map-key picker options from a map schema's\n// `propertyNames.enum` (e.g. an AsCode-constrained key set). Returns undefined\n// when the keys are unconstrained, so the key stays free-text.\nfunction keyOptionsFor(prop: JsonSchemaProperty): FieldOption[] | undefined {\n const pn = prop.propertyNames as JsonSchemaProperty | undefined;\n if (!pn || !Array.isArray(pn.enum) || pn.enum.length === 0) return undefined;\n return enumOptions(pn);\n}\n\n// scalarItemsType returns the scalar type an array's items hold — the case the\n// array renders as ONE tag list rather than a control per item — or undefined\n// when the items need a real per-item control. Anything carrying an\n// enum/const/properties/items/additionalProperties/allOf has a richer shape (an\n// enum array is a list of choices, and takes the option-backed branch instead).\nexport function scalarItemsType(\n items: JsonSchemaProperty | undefined,\n): ScalarItemType | undefined {\n if (!items) return \"string\"; // untyped items default to string tags\n if (\n items.enum !== undefined ||\n items.const !== undefined ||\n items.properties !== undefined ||\n items.items !== undefined ||\n items.additionalProperties !== undefined ||\n items.allOf !== undefined\n ) {\n return undefined;\n }\n if (items.type === undefined || schemaHasType(items, \"string\")) return \"string\";\n if (schemaHasType(items, \"integer\")) return \"integer\";\n if (schemaHasType(items, \"number\")) return \"number\";\n return undefined;\n}\n\n// matchesIf reports whether the `if` sub-schema holds for the current value:\n// every `if.required` key is present AND every `if.properties[k].const` equals\n// value[k].\nexport function matchesIf(\n ifSchema: JsonSchemaProperty | undefined,\n value: Record<string, unknown>,\n): boolean {\n if (!ifSchema) return false;\n for (const k of ifSchema.required ?? []) {\n if (!(k in value)) return false;\n }\n for (const [k, sub] of Object.entries(ifSchema.properties ?? {})) {\n if (\"const\" in sub && value[k] !== sub.const) return false;\n }\n return true;\n}\n\nexport interface EffectiveProperties {\n properties: Record<string, JsonSchemaProperty>;\n required: string[];\n}\n\n// applySchemaDefaults fills missing values from JSON Schema `default` keywords.\n// It walks fixed object properties recursively and re-evaluates `if`/`then`\n// branches after each pass, so a defaulted discriminator can activate defaults\n// in its selected branch. Existing values, including null and empty strings, are\n// never replaced. The original value is returned when no defaults apply.\nexport function applySchemaDefaults(\n schema: JsonSchemaObject,\n value: Record<string, unknown>,\n): Record<string, unknown> {\n return applyObjectDefaults(schema, value, new Set());\n}\n\nfunction applyObjectDefaults(\n schema: JsonSchemaObject,\n value: Record<string, unknown>,\n ancestors: Set<JsonSchemaObject>,\n): Record<string, unknown> {\n // Recursive schemas may point back to an ancestor after refs are hydrated.\n if (ancestors.has(schema)) return value;\n const nextAncestors = new Set(ancestors).add(schema);\n let next = value;\n\n // A default can select another conditional branch, so allow enough passes for\n // a chain of discriminator defaults while keeping malformed schemas bounded.\n const maxPasses = Math.min(\n 100,\n Object.keys(schema.properties ?? {}).length +\n (schema.allOf?.length ?? 0) +\n 2,\n );\n for (let pass = 0; pass < maxPasses; pass += 1) {\n const { properties } = effectiveProperties(schema, next);\n let passChanged = false;\n let passValue = next;\n\n for (const [key, propertySchema] of Object.entries(properties)) {\n const existing = passValue[key];\n let fieldValue = existing;\n let fieldChanged = false;\n\n if (existing === undefined && propertySchema.default !== undefined) {\n fieldValue = cloneSchemaDefault(propertySchema.default);\n fieldChanged = true;\n }\n\n const structuredObject = schemaRendersAsObject(propertySchema);\n if (structuredObject && !isOpenStringMap(propertySchema)) {\n const objectValue = isPlainObject(fieldValue)\n ? (fieldValue as Record<string, unknown>)\n : {};\n const defaultedObject = applyObjectDefaults(\n propertySchema as JsonSchemaObject,\n objectValue,\n nextAncestors,\n );\n if (defaultedObject !== objectValue) {\n fieldValue = defaultedObject;\n fieldChanged = true;\n }\n }\n\n if (fieldChanged) {\n if (!passChanged) passValue = { ...next };\n passValue[key] = fieldValue;\n passChanged = true;\n }\n }\n\n if (!passChanged) break;\n next = passValue;\n }\n return next;\n}\n\nfunction cloneSchemaDefault(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(cloneSchemaDefault);\n if (isPlainObject(value)) {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>).map(([key, entry]) => [\n key,\n cloneSchemaDefault(entry),\n ]),\n );\n }\n return value;\n}\n\n// effectiveProperties merges the schema's base `properties` with each `allOf`\n// member's contribution. An `if`/`then` member contributes `then.properties`\n// only when its `if` matches the current value; an unconditional member (e.g.\n// an inlined `$ref` composition, which carries its own `properties` and no\n// `if`) always contributes. Later members win on key collision; required is the\n// union. Pure and idempotent.\nexport function effectiveProperties(\n schema: JsonSchemaObject,\n value: Record<string, unknown>,\n): EffectiveProperties {\n const properties: Record<string, JsonSchemaProperty> = {\n ...schema.properties,\n };\n const required = new Set(schema.required ?? []);\n for (const clause of schema.allOf ?? []) {\n // Unconditional composition member: merge its own properties/required.\n if (clause.if === undefined && clause.then === undefined) {\n for (const [k, sub] of Object.entries(clause.properties ?? {})) {\n properties[k] = sub;\n }\n for (const k of clause.required ?? []) required.add(k);\n continue;\n }\n if (!matchesIf(clause.if, value)) continue;\n const then = clause.then ?? {};\n for (const [k, sub] of Object.entries(then.properties ?? {})) {\n properties[k] = sub;\n }\n for (const k of then.required ?? []) required.add(k);\n }\n return { properties, required: [...required] };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json-schema-form-resolve.js","sources":["../../src/components/json-schema-form-resolve.ts"],"sourcesContent":["import { createElement, type ReactNode } from \"react\";\nimport type {\n ArrayDisplay,\n EnumDisplay,\n FieldControl,\n FieldOption,\n HelpDisplay,\n JsonSchemaObject,\n JsonSchemaProperty,\n LookupDescriptor,\n ScalarItemType,\n} from \"./json-schema-form-types\";\nimport { isPlainObject } from \"../lib/collections\";\nimport { LabelIcon } from \"../data/Icon\";\nimport { resolveItemSpec } from \"./json-schema-form-item-summary\";\nimport { isFieldTone } from \"./json-schema-form-tone\";\n\n// isOpenStringMap reports whether a property is an object whose entries are\n// described by a sub-schema in `additionalProperties` (a typed key/value map) or\n// by `patternProperties` (a per-key-pattern value map). Either makes it an\n// editable key/value control rather than a fixed-property sub-form.\nexport function isOpenStringMap(prop: JsonSchemaProperty): boolean {\n if (!schemaRendersAsObject(prop)) return false;\n if (\n typeof prop.additionalProperties === \"object\" &&\n prop.additionalProperties !== null\n ) {\n return true;\n }\n return (\n !!prop.patternProperties && Object.keys(prop.patternProperties).length > 0\n );\n}\n\n// patternSchemasOf compiles a schema's `patternProperties` into the ordered\n// {pattern, schema} list the string-map control matches keys against.\nfunction patternSchemasOf(\n prop: JsonSchemaProperty,\n): { pattern: string; schema: JsonSchemaProperty }[] | undefined {\n const pp = prop.patternProperties;\n if (!pp || Object.keys(pp).length === 0) return undefined;\n return Object.entries(pp).map(([pattern, schema]) => ({ pattern, schema }));\n}\n\nfunction schemaHasType(prop: JsonSchemaProperty, type: string): boolean {\n if (Array.isArray(prop.type)) return prop.type.includes(type as never);\n return prop.type === type;\n}\n\n// schemaRendersAsObject accepts schemas that omit `type` but use object-only\n// keywords, including composed schemas whose local refs were rehydrated into\n// unconditional allOf members. An explicit incompatible type always wins.\nexport function schemaRendersAsObject(prop: JsonSchemaProperty): boolean {\n if (schemaHasType(prop, \"object\")) return true;\n if (prop.type !== undefined) return false;\n if (\n prop.properties !== undefined ||\n prop.required !== undefined ||\n prop.additionalProperties !== undefined ||\n prop.patternProperties !== undefined ||\n prop.propertyNames !== undefined ||\n prop.unevaluatedProperties !== undefined\n ) {\n return true;\n }\n return (\n prop.allOf?.some(\n (clause) =>\n clause.if === undefined &&\n clause.then === undefined &&\n schemaRendersAsObject(clause as JsonSchemaProperty),\n ) ?? false\n );\n}\n\nfunction enumOptions(prop: JsonSchemaProperty): FieldOption[] {\n const labels = prop[\"x-enum-labels\"];\n const icons = prop[\"x-enum-icons\"];\n const descriptions = prop[\"x-enum-descriptions\"];\n const tones = prop[\"x-enum-tones\"];\n return (prop.enum ?? []).map((v) => {\n const value = String(v);\n const desc = labels?.[value];\n const icon = icons?.[value];\n const description = descriptions?.[value];\n const tone = tones?.[value];\n return {\n value,\n label:\n typeof desc === \"string\" && desc && desc !== value\n ? `${desc} (${value})`\n : value,\n ...(typeof icon === \"string\" && icon ? { icon } : {}),\n ...(typeof description === \"string\" && description\n ? { description }\n : {}),\n ...(isFieldTone(tone) ? { tone } : {}),\n };\n });\n}\n\n// enumDisplay resolves how an enum should render: an explicit `x-enum-display`\n// wins; otherwise an enum carrying `x-enum-icons` defaults to the icon grid.\n// Returns undefined to keep the combobox default.\nfunction enumDisplay(prop: JsonSchemaProperty): EnumDisplay | undefined {\n const d = prop[\"x-enum-display\"];\n if (d === \"combobox\" || d === \"radio\" || d === \"grid\" || d === \"segmented\")\n return d;\n const icons = prop[\"x-enum-icons\"];\n if (icons && Object.keys(icons).length > 0) return \"grid\";\n return undefined;\n}\n\nfunction arrayDisplay(prop: JsonSchemaProperty): ArrayDisplay | undefined {\n const d = prop[\"x-array-display\"];\n return d === \"filter-pills\" ||\n d === \"accordion\" ||\n d === \"cards\" ||\n d === \"stacked\" ||\n d === \"list\"\n ? d\n : undefined;\n}\n\n// helpDisplay reads the per-field `x-help-display` override. Returns undefined\n// to defer to the form-level FormLayout.help.\nfunction helpDisplay(prop: JsonSchemaProperty): HelpDisplay | undefined {\n const d = prop[\"x-help-display\"];\n return d === \"inline\" || d === \"hover\" ? d : undefined;\n}\n\nexport function schemaHelper(prop: JsonSchemaProperty): string | undefined {\n const description =\n typeof prop.description === \"string\" ? prop.description.trim() : \"\";\n const help = prop[\"x-help\"];\n const helpBody =\n isPlainObject(help) && typeof help.body === \"string\"\n ? help.body.trim()\n : \"\";\n\n if (description && helpBody && helpBody !== description) {\n return `${description} ${helpBody}`;\n }\n return description || helpBody || undefined;\n}\n\n// adornmentNode builds a prefix/suffix node from the x-input-*[-icon] extensions:\n// a runtime icon name wins, else static text. Returns undefined when neither set.\nfunction adornmentNode(iconName: unknown, text: unknown): ReactNode {\n if (typeof iconName === \"string\" && iconName) {\n // Match the library's InputField field-icon convention (16px, muted/70) so a\n // schema-driven field lines up with a hand-built one.\n return createElement(LabelIcon, {\n icon: iconName,\n className: \"size-4 text-muted-foreground/70\",\n });\n }\n if (typeof text === \"string\" && text) {\n return createElement(\n \"span\",\n { className: \"text-sm text-muted-foreground\" },\n text,\n );\n }\n return undefined;\n}\n\n// enumBranch returns the first anyOf/oneOf member carrying a non-empty `enum`,\n// for a union of \"an enum value OR a free-form string\" (e.g. a value-or-token\n// field). It lets such a union render as a dropdown. Returns undefined when no\n// branch enumerates values.\nexport function enumBranch(\n prop: JsonSchemaProperty,\n): JsonSchemaProperty | undefined {\n for (const branch of [...(prop.anyOf ?? []), ...(prop.oneOf ?? [])]) {\n if (Array.isArray(branch.enum) && branch.enum.length > 0) return branch;\n }\n return undefined;\n}\n\n// lookupDescriptor reads the `x-clicky-lookup` extension into a LookupDescriptor,\n// returning undefined when the keyword is absent or lacks its required url/filter.\nfunction lookupDescriptor(\n prop: JsonSchemaProperty,\n): LookupDescriptor | undefined {\n const raw = prop[\"x-clicky-lookup\"];\n if (!raw || typeof raw !== \"object\") return undefined;\n const d = raw as Record<string, unknown>;\n if (typeof d.url !== \"string\" || typeof d.filter !== \"string\")\n return undefined;\n return raw as LookupDescriptor;\n}\n\nexport interface ResolveControlArgs {\n key: string;\n prop: JsonSchemaProperty;\n required: boolean;\n value: unknown;\n onChange: (next: unknown) => void;\n}\n\n// resolveControl infers a base, render-ready FieldControl from a property\n// schema. It keys off schema keywords only — never the field name: ascode/token\n// heuristics are layered on by consumer pre-extensions. The one exception is the\n// standard `format: date`/`date-time` keyword, which is a schema-declared signal\n// (not a name guess) and so drives a date control directly. First match wins.\nexport function resolveControl(args: ResolveControlArgs): FieldControl {\n const { key, prop, required, value, onChange } = args;\n const labelIcon = prop[\"x-icon\"];\n const xLayout = prop[\"x-layout\"];\n const explicitLayout =\n xLayout === \"inline\" || xLayout === \"stack\" || xLayout === \"table\"\n ? xLayout\n : undefined;\n // `x-label-position` is a friendlier alias over the same per-field layout knob:\n // \"top\" stacks the label above the value; \"left\" forces inline. `x-layout` wins.\n const labelPosition = prop[\"x-label-position\"];\n const layout =\n explicitLayout ??\n (labelPosition === \"top\"\n ? \"stack\"\n : labelPosition === \"left\"\n ? \"inline\"\n : undefined);\n const prefix = adornmentNode(\n prop[\"x-input-prefix-icon\"],\n prop[\"x-input-prefix\"],\n );\n const suffix = adornmentNode(\n prop[\"x-input-suffix-icon\"],\n prop[\"x-input-suffix\"],\n );\n const labelClassName =\n typeof prop[\"x-label-classes\"] === \"string\"\n ? prop[\"x-label-classes\"]\n : undefined;\n const inputClassName =\n typeof prop[\"x-input-classes\"] === \"string\"\n ? prop[\"x-input-classes\"]\n : undefined;\n const colSpan =\n prop[\"x-col-span\"] === \"full\"\n ? (\"full\" as const)\n : typeof prop[\"x-col-span\"] === \"number\" &&\n Number.isFinite(prop[\"x-col-span\"])\n ? prop[\"x-col-span\"]\n : undefined;\n const keyOptions = keyOptionsFor(prop);\n const helper = schemaHelper(prop);\n const helpMode = helpDisplay(prop);\n const base: FieldControl = {\n key,\n kind: \"string\",\n label: typeof prop.title === \"string\" && prop.title ? prop.title : key,\n required,\n schema: prop,\n value,\n onChange,\n ...(prop.readOnly === true ? { readOnly: true } : {}),\n ...(typeof prop.description === \"string\"\n ? { description: prop.description }\n : {}),\n ...(helper ? { helper } : {}),\n ...(helpMode ? { helpDisplay: helpMode } : {}),\n ...(labelIcon != null && labelIcon !== \"\"\n ? { labelIcon: labelIcon as FieldControl[\"labelIcon\"] }\n : {}),\n ...(layout ? { layout } : {}),\n ...(prefix ? { prefix } : {}),\n ...(suffix ? { suffix } : {}),\n ...(labelClassName ? { labelClassName } : {}),\n ...(inputClassName ? { inputClassName } : {}),\n ...(colSpan != null ? { colSpan } : {}),\n };\n\n // An `x-clicky-lookup` field is an async entity-reference picker: options load\n // lazily from another entity's list endpoint. Single-select also allows\n // free-form entry so a typed value outside the option set still commits.\n const lookup = lookupDescriptor(prop);\n if (lookup) {\n return {\n ...base,\n kind: \"lookup\",\n lookup,\n options: [],\n allowCustomValue: lookup.multi !== true,\n };\n }\n if (Array.isArray(prop.enum) && prop.enum.length > 0) {\n const display = enumDisplay(prop);\n return {\n ...base,\n kind: \"enum\",\n options: enumOptions(prop),\n ...(display ? { display } : {}),\n };\n }\n // A value-or-template union: the enum lives in an anyOf/oneOf branch alongside\n // free-form branches. Render it as a dropdown using that branch's enum; the\n // free-form branches are honoured via a consumer's allowCustomValue pre-ext.\n const branch = enumBranch(prop);\n if (branch) {\n return { ...base, kind: \"enum\", options: enumOptions(branch) };\n }\n // A schema-declared date/date-time string renders as a date control.\n if (prop.format === \"date\" || prop.format === \"date-time\") {\n return { ...base, kind: \"date\", dateFormat: prop.format };\n }\n // A long-form string declares `format: textarea` to render a multi-line box.\n if (prop.format === \"textarea\" && schemaHasType(prop, \"string\")) {\n return { ...base, kind: \"textarea\" };\n }\n // A markdown string declares `format: md` to render the MDXEditor-backed\n // editor. Plugin toggles live under `x-md-editor` so schema authors can keep\n // the format signal standard-sized and the editor behavior explicit.\n if (prop.format === \"md\" && schemaHasType(prop, \"string\")) {\n const markdownOptions = prop[\"x-md-editor\"];\n return {\n ...base,\n kind: \"markdown\",\n ...(isPlainObject(markdownOptions) ? { markdownOptions } : {}),\n };\n }\n if (schemaHasType(prop, \"boolean\")) {\n return { ...base, kind: \"boolean\" };\n }\n if (schemaHasType(prop, \"integer\") || schemaHasType(prop, \"number\")) {\n return {\n ...base,\n kind: \"number\",\n coerceNumber: true,\n // A percent number carries a static \"%\" unit shown inside the input.\n ...(prop.format === \"percent\" ? { unit: \"%\" } : {}),\n ...(typeof prop.minimum === \"number\" ? { minimum: prop.minimum } : {}),\n };\n }\n if (schemaHasType(prop, \"array\")) {\n const display = arrayDisplay(prop);\n const itemSchema = prop.items;\n return {\n ...base,\n kind: \"array\",\n ...(itemSchema ? { itemSchema } : {}),\n ...(typeof prop.minItems === \"number\" ? { minItems: prop.minItems } : {}),\n ...(typeof prop.maxItems === \"number\" ? { maxItems: prop.maxItems } : {}),\n ...(display ? { arrayDisplay: display } : {}),\n ...(display === \"accordion\" ? { itemSpec: resolveItemSpec(prop, itemSchema) } : {}),\n // An accordion reuses the array's description as the zero-item copy in its\n // add row, so a paragraph of the same sentence directly above would be a\n // literal duplicate. The schema can still say otherwise.\n ...(display === \"accordion\" && !helpMode ? { helpDisplay: \"hover\" as const } : {}),\n // An enum item schema makes the whole array a list of choices, whichever\n // display renders it (tags by default, filter pills on request), so the\n // options — labels, icons, tones and all — always resolve.\n ...(itemSchema && Array.isArray(itemSchema.enum)\n ? { options: enumOptions(itemSchema) }\n : {}),\n ...(layout ? { layout } : {}),\n };\n }\n // An open map: object whose entries are described by an additionalProperties\n // sub-schema and/or per-key patternProperties. Renders as editable key/value\n // rows (+ any known properties), with the value form resolved per key.\n if (isOpenStringMap(prop)) {\n const addl =\n typeof prop.additionalProperties === \"object\" &&\n prop.additionalProperties !== null\n ? (prop.additionalProperties as JsonSchemaProperty)\n : undefined;\n const patterns = patternSchemasOf(prop);\n // A constrained picker (propertyNames enum) or patternProperties still lets\n // the author ADD keys — the additions are limited to the allowed set, not\n // free-form — so `additionalProperties: false` doesn't disable \"Add field\"\n // in that case. It only closes a plain open map with no key constraints.\n const allowExtraKeys =\n keyOptions || patterns ? true : prop.additionalProperties !== false;\n return {\n ...base,\n kind: \"string-map\",\n ...(addl ? { valueSchema: addl } : {}),\n ...(patterns ? { valuePatternSchemas: patterns } : {}),\n ...(prop.properties ? { knownProperties: prop.properties } : {}),\n allowExtraKeys,\n ...(keyOptions ? { keyOptions } : {}),\n ...(layout ? { layout } : {}),\n };\n }\n // A structured object: fixed `properties`, not an open map. Renders as a\n // nested sub-form (labels, required, if/then) — recursed into by the renderer.\n if (schemaRendersAsObject(prop)) {\n const valueObject = isPlainObject(value) ? value : {};\n const objectFields = effectiveProperties(\n prop as JsonSchemaObject,\n valueObject,\n );\n if (Object.keys(objectFields.properties).length > 0 || prop.properties) {\n return {\n ...base,\n kind: \"object\",\n objectProperties: objectFields.properties,\n ...(objectFields.required.length > 0\n ? { objectRequired: objectFields.required }\n : {}),\n ...(layout ? { layout } : {}),\n };\n }\n }\n // A bare object with neither properties nor an additionalProperties schema:\n // treat as an open string map unless explicitly closed.\n if (schemaRendersAsObject(prop)) {\n return {\n ...base,\n kind: \"string-map\",\n allowExtraKeys: prop.additionalProperties !== false,\n ...(keyOptions ? { keyOptions } : {}),\n ...(layout ? { layout } : {}),\n };\n }\n return base;\n}\n\n// keyOptionsFor resolves the strict map-key picker options from a map schema's\n// `propertyNames.enum` (e.g. an AsCode-constrained key set). Returns undefined\n// when the keys are unconstrained, so the key stays free-text.\nfunction keyOptionsFor(prop: JsonSchemaProperty): FieldOption[] | undefined {\n const pn = prop.propertyNames as JsonSchemaProperty | undefined;\n if (!pn || !Array.isArray(pn.enum) || pn.enum.length === 0) return undefined;\n return enumOptions(pn);\n}\n\n// scalarItemsType returns the scalar type an array's items hold — the case the\n// array renders as ONE tag list rather than a control per item — or undefined\n// when the items need a real per-item control. Anything carrying an\n// enum/const/properties/items/additionalProperties/allOf has a richer shape (an\n// enum array is a list of choices, and takes the option-backed branch instead).\nexport function scalarItemsType(\n items: JsonSchemaProperty | undefined,\n): ScalarItemType | undefined {\n if (!items) return \"string\"; // untyped items default to string tags\n if (\n items.enum !== undefined ||\n items.const !== undefined ||\n items.properties !== undefined ||\n items.items !== undefined ||\n items.additionalProperties !== undefined ||\n items.allOf !== undefined\n ) {\n return undefined;\n }\n if (items.type === undefined || schemaHasType(items, \"string\")) return \"string\";\n if (schemaHasType(items, \"integer\")) return \"integer\";\n if (schemaHasType(items, \"number\")) return \"number\";\n return undefined;\n}\n\n// matchesIf reports whether the `if` sub-schema holds for the current value:\n// every `if.required` key is present AND every `if.properties[k].const` equals\n// value[k].\nexport function matchesIf(\n ifSchema: JsonSchemaProperty | undefined,\n value: Record<string, unknown>,\n): boolean {\n if (!ifSchema) return false;\n for (const k of ifSchema.required ?? []) {\n if (!(k in value)) return false;\n }\n for (const [k, sub] of Object.entries(ifSchema.properties ?? {})) {\n if (\"const\" in sub && value[k] !== sub.const) return false;\n }\n return true;\n}\n\nexport interface EffectiveProperties {\n properties: Record<string, JsonSchemaProperty>;\n required: string[];\n}\n\n// applySchemaDefaults fills missing values from JSON Schema `default` keywords.\n// It walks fixed object properties recursively and re-evaluates `if`/`then`\n// branches after each pass, so a defaulted discriminator can activate defaults\n// in its selected branch. Existing values, including null and empty strings, are\n// never replaced. The original value is returned when no defaults apply.\nexport function applySchemaDefaults(\n schema: JsonSchemaObject,\n value: Record<string, unknown>,\n): Record<string, unknown> {\n return applyObjectDefaults(schema, value, new Set());\n}\n\nfunction applyObjectDefaults(\n schema: JsonSchemaObject,\n value: Record<string, unknown>,\n ancestors: Set<JsonSchemaObject>,\n): Record<string, unknown> {\n // Recursive schemas may point back to an ancestor after refs are hydrated.\n if (ancestors.has(schema)) return value;\n const nextAncestors = new Set(ancestors).add(schema);\n let next = value;\n\n // A default can select another conditional branch, so allow enough passes for\n // a chain of discriminator defaults while keeping malformed schemas bounded.\n const maxPasses = Math.min(\n 100,\n Object.keys(schema.properties ?? {}).length +\n (schema.allOf?.length ?? 0) +\n 2,\n );\n for (let pass = 0; pass < maxPasses; pass += 1) {\n const { properties } = effectiveProperties(schema, next);\n let passChanged = false;\n let passValue = next;\n\n for (const [key, propertySchema] of Object.entries(properties)) {\n const existing = passValue[key];\n let fieldValue = existing;\n let fieldChanged = false;\n\n if (existing === undefined && propertySchema.default !== undefined) {\n fieldValue = cloneSchemaDefault(propertySchema.default);\n fieldChanged = true;\n }\n\n const structuredObject = schemaRendersAsObject(propertySchema);\n if (structuredObject && !isOpenStringMap(propertySchema)) {\n const objectValue = isPlainObject(fieldValue)\n ? (fieldValue as Record<string, unknown>)\n : {};\n const defaultedObject = applyObjectDefaults(\n propertySchema as JsonSchemaObject,\n objectValue,\n nextAncestors,\n );\n if (defaultedObject !== objectValue) {\n fieldValue = defaultedObject;\n fieldChanged = true;\n }\n }\n\n if (fieldChanged) {\n if (!passChanged) passValue = { ...next };\n passValue[key] = fieldValue;\n passChanged = true;\n }\n }\n\n if (!passChanged) break;\n next = passValue;\n }\n return next;\n}\n\nfunction cloneSchemaDefault(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(cloneSchemaDefault);\n if (isPlainObject(value)) {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>).map(([key, entry]) => [\n key,\n cloneSchemaDefault(entry),\n ]),\n );\n }\n return value;\n}\n\n// effectiveProperties merges the schema's base `properties` with each `allOf`\n// member's contribution. An `if`/`then` member contributes `then.properties`\n// only when its `if` matches the current value; an unconditional member (e.g.\n// an inlined `$ref` composition, which carries its own `properties` and no\n// `if`) always contributes. Later members win on key collision; required is the\n// union. Pure and idempotent.\nexport function effectiveProperties(\n schema: JsonSchemaObject,\n value: Record<string, unknown>,\n): EffectiveProperties {\n const properties: Record<string, JsonSchemaProperty> = {\n ...schema.properties,\n };\n const required = new Set(schema.required ?? []);\n for (const clause of schema.allOf ?? []) {\n // Unconditional composition member: merge its own properties/required.\n if (clause.if === undefined && clause.then === undefined) {\n for (const [k, sub] of Object.entries(clause.properties ?? {})) {\n properties[k] = sub;\n }\n for (const k of clause.required ?? []) required.add(k);\n continue;\n }\n if (!matchesIf(clause.if, value)) continue;\n const then = clause.then ?? {};\n for (const [k, sub] of Object.entries(then.properties ?? {})) {\n properties[k] = sub;\n }\n for (const k of then.required ?? []) required.add(k);\n }\n return { properties, required: [...required] };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,222 @@
1
+ import { ReactNode } from 'react';
2
+ import { FieldInstancePath, FormErrorContext, FormErrorProps } from './json-schema-form-error-types';
3
+ import { FormSize } from './json-schema-form-size';
4
+ import { SortMode, LayoutMode } from './json-schema-form-preferences';
5
+ import { FieldControl, FieldOption, JsonSchemaProperty, JsonSchemaObject, HelpDisplay } from './json-schema-form-types';
6
+ export interface LookupDescriptor {
7
+ url: string;
8
+ filter: string;
9
+ searchParam?: string;
10
+ multi?: boolean;
11
+ scope?: LookupScope;
12
+ hierarchy?: LookupHierarchy;
13
+ }
14
+ export interface LookupHierarchy {
15
+ delimiters: string;
16
+ }
17
+ export interface LookupScope {
18
+ param: string;
19
+ from: string;
20
+ map?: Record<string, string[]>;
21
+ join?: string;
22
+ }
23
+ export type LookupFetcher = (args: {
24
+ descriptor: LookupDescriptor;
25
+ query: string;
26
+ rootValue?: Record<string, unknown>;
27
+ }) => Promise<FieldOption[]>;
28
+ export interface PreExtensionContext {
29
+ key: string;
30
+ prop: JsonSchemaProperty;
31
+ value: unknown;
32
+ rootValue?: Record<string, unknown>;
33
+ onRootChange?: (next: Record<string, unknown>) => void;
34
+ }
35
+ export type PreExtension = (field: FieldControl, ctx: PreExtensionContext) => FieldControl | null;
36
+ export interface PostExtensionContext {
37
+ rootValue?: Record<string, unknown>;
38
+ onRootChange?: (next: Record<string, unknown>) => void;
39
+ /**
40
+ * RFC 6901 pointer to the field being rendered, e.g. `/columns/3/jsonpath`.
41
+ *
42
+ * With `rootValue` and `onRootChange` it is what lets an extension write a
43
+ * *sibling* of its own field — a control whose value only means something
44
+ * paired with another one has to be able to set both, rather than rendering
45
+ * an instruction telling the author to go and finish the job by hand.
46
+ */
47
+ instancePath?: string;
48
+ }
49
+ export type PostExtension = (field: FieldControl, nodes: {
50
+ label: ReactNode;
51
+ value: ReactNode;
52
+ }, ctx?: PostExtensionContext) => {
53
+ label: ReactNode;
54
+ value: ReactNode;
55
+ };
56
+ export interface FieldArgs extends FieldInstancePath {
57
+ key: string;
58
+ prop: JsonSchemaProperty;
59
+ required: boolean;
60
+ value: unknown;
61
+ onChange: (next: unknown) => void;
62
+ }
63
+ export interface RenderApi {
64
+ renderFieldNodes(args: FieldArgs, ctx: RenderContext): {
65
+ label: ReactNode;
66
+ value: ReactNode;
67
+ } | null;
68
+ renderFieldRow(args: FieldArgs, ctx: RenderContext, opts?: {
69
+ labelOverride?: string;
70
+ }): ReactNode | null;
71
+ renderObjectFields(schema: JsonSchemaObject, value: Record<string, unknown>, onChange: (next: Record<string, unknown>) => void, ctx: RenderContext, opts?: {
72
+ hiddenKeys?: string[];
73
+ }): ReactNode[];
74
+ }
75
+ export interface RenderContext extends FormErrorContext {
76
+ readOnly: boolean;
77
+ /** Render value content only, including descendants of a properties preview. */
78
+ presentation?: boolean;
79
+ hideReadOnlyFields: boolean;
80
+ hideEmpty: boolean;
81
+ autoSave: boolean;
82
+ layout: FormLayout;
83
+ size: FormSize;
84
+ idPrefix?: string;
85
+ sortMode: SortMode;
86
+ fieldFilter?: string;
87
+ pre: PreExtension[];
88
+ post: PostExtension[];
89
+ rootValue?: Record<string, unknown>;
90
+ onRootChange?: (next: Record<string, unknown>) => void;
91
+ depth: number;
92
+ render: RenderApi;
93
+ }
94
+ export interface FormLayout {
95
+ /** "properties" = click-to-edit table; "inline" = label/value; "stacked" = label above value. */
96
+ mode: LayoutMode;
97
+ /**
98
+ * Inline only: the label column shrinks to fit its widest label and is capped
99
+ * at this width, truncating longer labels with an ellipsis. Default "40ch".
100
+ */
101
+ labelMaxWidth?: string;
102
+ /**
103
+ * Max width of the value column (inline) or the whole label+value stack
104
+ * (stacked), as a CSS length. Default "600px". Keeps controls readable on
105
+ * wide viewports instead of stretching edge to edge.
106
+ */
107
+ valueMaxWidth?: string;
108
+ /**
109
+ * How every field's description is presented. "inline" (default) keeps
110
+ * today's paragraph under the control; "hover" moves it behind a `?` beside
111
+ * the label, which costs no vertical space. A field's own `x-help-display`
112
+ * wins over this.
113
+ */
114
+ help?: HelpDisplay;
115
+ }
116
+ export interface JsonSchemaFormProps extends FormErrorProps {
117
+ schema: JsonSchemaObject;
118
+ value: Record<string, unknown>;
119
+ onChange: (next: Record<string, unknown>) => void;
120
+ readOnly?: boolean;
121
+ /**
122
+ * Shorthand for `layout: { mode: "inline" }` (2-column label/value); stacked
123
+ * when false (default). Ignored when `layout` is provided.
124
+ */
125
+ inline?: boolean;
126
+ /**
127
+ * Form-level layout. Takes precedence over `inline`. Inline mode shrinks the
128
+ * label column to fit (capped/truncated at 40ch) and caps the value column at
129
+ * 600px. Properties mode renders a table with indented nested labels and
130
+ * click-to-edit values. The inline check saves the edit; cancel discards it.
131
+ * Leaving the field parks the edit instead — the row shows the pending value
132
+ * with the check and cancel still offered. See `autoSave` to commit instead.
133
+ */
134
+ layout?: FormLayout;
135
+ /**
136
+ * Scales every input and label form-wide. One of "xs" | "sm" | "md" | "lg" |
137
+ * "xl"; defaults to "md" (the original fixed sizing). Applies at every depth.
138
+ */
139
+ size?: FormSize;
140
+ /**
141
+ * Namespaces generated input/label ids (`jsf-<idPrefix>-<key>`). Set this when
142
+ * more than one form renders on the same page so their ids don't collide,
143
+ * which would otherwise break label/input focus association.
144
+ */
145
+ idPrefix?: string;
146
+ /**
147
+ * Omit fields whose schema declares `readOnly: true` entirely, instead of
148
+ * rendering them as read-only value displays. Applies at every depth.
149
+ */
150
+ hideReadOnlyFields?: boolean;
151
+ /**
152
+ * Omit fields the value says nothing about, at every depth. For a record that
153
+ * is finished being edited — an audit view of a submitted form — the blanks
154
+ * are noise: they say only that a field existed, and a schema wide enough to
155
+ * describe many records can leave far more blank than filled.
156
+ *
157
+ * Empty means `undefined`, `null`, `""`, `[]` or `{}`. `false` and `0` are
158
+ * answers and always render. An object whose fields are all empty is itself
159
+ * empty and goes with them.
160
+ *
161
+ * For an editable form this is usually wrong: there, a blank field is the
162
+ * question.
163
+ */
164
+ hideEmpty?: boolean;
165
+ /**
166
+ * Drop the properties layout's per-field confirm step: leaving a field or
167
+ * pressing Enter commits it through `onChange`, and no check/cancel pair is
168
+ * rendered. Escape still reverts to the saved value.
169
+ *
170
+ * Use it when the form already sits behind a save of its own, so confirming
171
+ * each field twice buys nothing. Left off, an edit that loses focus is parked
172
+ * on the row — shown, unsaved, and waiting for the check.
173
+ *
174
+ * Only the `properties` layout has a draft to commit; `stacked` and `inline`
175
+ * send every keystroke straight to `onChange`, so this does nothing there.
176
+ */
177
+ autoSave?: boolean;
178
+ /** Property keys to omit from rendering. */
179
+ hiddenKeys?: string[];
180
+ /**
181
+ * Render required fields before optional ones at every object level. The sort
182
+ * is stable: required keys keep their relative order, then optional keys keep
183
+ * theirs. Defaults to false (schema property order is preserved).
184
+ */
185
+ requiredFirst?: boolean;
186
+ title?: string;
187
+ pre?: PreExtension[];
188
+ post?: PostExtension[];
189
+ /**
190
+ * Resolves options for `x-clicky-lookup` fields (async entity-reference
191
+ * pickers). When set, the form provides it to its lookup controls via context.
192
+ * Hosts typically build it from the operations api client's lookup endpoint.
193
+ */
194
+ lookupFetcher?: LookupFetcher;
195
+ /**
196
+ * Show the top-right three-dot display-options menu (size, layout, and sort).
197
+ * Defaults to true. The menu controls only this form's appearance — never
198
+ * global page density or field values. When false the form renders exactly as
199
+ * before and performs no preference reads/writes.
200
+ */
201
+ showPreferencesMenu?: boolean;
202
+ /**
203
+ * Show a persistent name/value filter above the form. Defaults to true for
204
+ * properties layout when display options are enabled, false otherwise.
205
+ * Matching nested content keeps its top-level group intact. Password values
206
+ * are excluded. Filtering never modifies the submitted values.
207
+ */
208
+ showFilter?: boolean;
209
+ /**
210
+ * Persist menu selections to localStorage so they survive remounts. Defaults
211
+ * to true. When false the menu still adjusts the current instance, but nothing
212
+ * is read from or written to localStorage.
213
+ */
214
+ persistPreferences?: boolean;
215
+ /**
216
+ * localStorage key the display preferences are stored under. Defaults to a
217
+ * shared key, so by default every form shares one set of preferences; pass a
218
+ * distinct key to isolate a screen or form.
219
+ */
220
+ preferencesStorageKey?: string;
221
+ }
222
+ //# sourceMappingURL=json-schema-form-runtime-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema-form-runtime-types.d.ts","sourceRoot":"","sources":["../../src/components/json-schema-form-runtime-types.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,7 @@ function TableArray({
25
25
  itemSchema["x-order"]
26
26
  );
27
27
  const childCtx = { ...ctx, readOnly, depth: ctx.depth + 1 };
28
+ const removable = !readOnly && jsonSchemaFormUtils.canRemoveItem(field, items.length);
28
29
  function cell(item, rowIndex, col, prop) {
29
30
  const obj = collections.isPlainObject(item) ? item : {};
30
31
  const nodes = ctx.render.renderFieldNodes(
@@ -41,59 +42,89 @@ function TableArray({
41
42
  },
42
43
  childCtx
43
44
  );
44
- return (nodes == null ? void 0 : nodes.value) ?? null;
45
- }
46
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "overflow-x-auto rounded-md border border-input", children: [
47
- /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "w-full text-sm", children: [
48
- /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "border-b border-input bg-muted/40 text-left", children: [
49
- columns.map(([col, prop]) => /* @__PURE__ */ jsxRuntime.jsx(
50
- "th",
51
- {
52
- className: "px-2 py-1 text-xs font-medium text-muted-foreground",
53
- children: /* @__PURE__ */ jsxRuntime.jsx(TableColumnHeader, { name: col, schema: prop })
54
- },
55
- col
56
- )),
57
- !readOnly && /* @__PURE__ */ jsxRuntime.jsx("th", { className: "w-10 px-2 py-1" })
58
- ] }) }),
59
- /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs(
60
- "tr",
61
- {
62
- className: "border-b border-input last:border-b-0 align-top",
63
- children: [
64
- columns.map(([col, prop]) => /* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-2 py-1", children: cell(item, i, col, prop) }, col)),
65
- !readOnly && /* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-2 py-1", children: /* @__PURE__ */ jsxRuntime.jsx(
66
- "button",
67
- {
68
- type: "button",
69
- "aria-label": `Remove item ${i + 1}`,
70
- className: utils.cn(
71
- "inline-flex aspect-square items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground",
72
- jsonSchemaFormSize.controlHeightClass[ctx.size]
73
- ),
74
- onClick: () => field.onChange(collections.removeIndex(items, i)),
75
- children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiTrash.UiTrash, className: "text-sm" })
76
- }
77
- ) })
78
- ]
79
- },
80
- i
81
- )) })
82
- ] }),
83
- !readOnly && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-2", children: /* @__PURE__ */ jsxRuntime.jsxs(
84
- button.Button,
45
+ return ctx.presentation ? /* @__PURE__ */ jsxRuntime.jsx(
46
+ "div",
85
47
  {
86
- type: "button",
87
- variant: "outline",
88
- className: utils.cn("gap-1.5", jsonSchemaFormSize.inputSizeClass[ctx.size]),
89
- onClick: () => field.onChange([...items, jsonSchemaFormUtils.seedFromSchema(itemSchema)]),
90
- children: [
91
- /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiAdd.UiAdd, className: "text-sm" }),
92
- "Add item"
93
- ]
48
+ className: utils.cn(
49
+ "flex min-w-0 items-center [overflow-wrap:anywhere] [&_span[data-jsf-readonly]]:h-auto [&_span[data-jsf-readonly]]:min-w-0",
50
+ jsonSchemaFormSize.controlMinHeightClass[ctx.size]
51
+ ),
52
+ children: nodes == null ? void 0 : nodes.value
94
53
  }
95
- ) })
96
- ] });
54
+ ) : (nodes == null ? void 0 : nodes.value) ?? null;
55
+ }
56
+ return /* @__PURE__ */ jsxRuntime.jsxs(
57
+ "div",
58
+ {
59
+ className: utils.cn(
60
+ "overflow-x-auto",
61
+ !ctx.presentation && "rounded-md border border-input"
62
+ ),
63
+ children: [
64
+ /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "w-full text-sm", children: [
65
+ /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsxs(
66
+ "tr",
67
+ {
68
+ className: utils.cn(
69
+ "border-b bg-muted/40 text-left",
70
+ ctx.presentation ? "border-border" : "border-input"
71
+ ),
72
+ children: [
73
+ columns.map(([col, prop]) => /* @__PURE__ */ jsxRuntime.jsx(
74
+ "th",
75
+ {
76
+ className: "px-2 py-1 text-xs font-medium text-muted-foreground [overflow-wrap:anywhere]",
77
+ children: ctx.presentation ? prop.title || col : /* @__PURE__ */ jsxRuntime.jsx(TableColumnHeader, { name: col, schema: prop })
78
+ },
79
+ col
80
+ )),
81
+ removable && /* @__PURE__ */ jsxRuntime.jsx("th", { className: "w-10 px-2 py-1" })
82
+ ]
83
+ }
84
+ ) }),
85
+ /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs(
86
+ "tr",
87
+ {
88
+ className: utils.cn(
89
+ "border-b last:border-b-0 align-top",
90
+ ctx.presentation ? "border-border" : "border-input"
91
+ ),
92
+ children: [
93
+ columns.map(([col, prop]) => /* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-2 py-1", children: cell(item, i, col, prop) }, col)),
94
+ removable && /* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-2 py-1", children: /* @__PURE__ */ jsxRuntime.jsx(
95
+ "button",
96
+ {
97
+ type: "button",
98
+ "aria-label": `Remove item ${i + 1}`,
99
+ className: utils.cn(
100
+ "inline-flex aspect-square items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground",
101
+ jsonSchemaFormSize.controlHeightClass[ctx.size]
102
+ ),
103
+ onClick: () => field.onChange(collections.removeIndex(items, i)),
104
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiTrash.UiTrash, className: "text-sm" })
105
+ }
106
+ ) })
107
+ ]
108
+ },
109
+ i
110
+ )) })
111
+ ] }),
112
+ !readOnly && jsonSchemaFormUtils.canAddItem(field, items.length) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-2", children: /* @__PURE__ */ jsxRuntime.jsxs(
113
+ button.Button,
114
+ {
115
+ type: "button",
116
+ variant: "outline",
117
+ className: utils.cn("gap-1.5", jsonSchemaFormSize.inputSizeClass[ctx.size]),
118
+ onClick: () => field.onChange([...items, jsonSchemaFormUtils.seedFromSchema(itemSchema)]),
119
+ children: [
120
+ /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiAdd.UiAdd, className: "text-sm" }),
121
+ "Add item"
122
+ ]
123
+ }
124
+ ) })
125
+ ]
126
+ }
127
+ );
97
128
  }
98
129
  function TableColumnHeader({
99
130
  name,
@@ -1 +1 @@
1
- {"version":3,"file":"json-schema-form-table-array.cjs","sources":["../../src/components/json-schema-form-table-array.tsx"],"sourcesContent":["import { type ReactNode } from \"react\";\nimport { isPlainObject, removeIndex, setIndex } from \"../lib/collections\";\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../data/Icon\";\nimport { UiAdd, UiTrash } from \"../icons\";\nimport { HoverCard } from \"../overlay/HoverCard\";\nimport { Button } from \"./button\";\nimport {\n controlHeightClass,\n inputSizeClass,\n} from \"./json-schema-form-size\";\nimport { schemaHelper } from \"./json-schema-form-resolve\";\nimport { appendInstancePath } from \"./json-schema-form-errors\";\nimport {\n orderByClickyOrder,\n orderByXOrder,\n seedFromSchema,\n} from \"./json-schema-form-utils\";\nimport type {\n FieldControl,\n JsonSchemaProperty,\n RenderContext,\n} from \"./json-schema-form-types\";\n\n// TableArray renders an object-item array as a table: a header row of the item's\n// property names and one row per item with value-only controls, plus per-row\n// remove and an add button. Driven by `x-layout: table`.\nexport function TableArray({\n field,\n ctx,\n readOnly,\n}: {\n field: FieldControl;\n ctx: RenderContext;\n readOnly: boolean;\n}) {\n const items = Array.isArray(field.value) ? field.value : [];\n const itemSchema = field.itemSchema ?? { type: \"object\" };\n // The item schema's explicit `x-order` is the authority for the keys it names:\n // per-property `x-clicky-order` sorts first (so it still orders everything\n // `x-order` leaves out, and composes across merged sources), then `x-order`\n // pulls its listed columns to the front in its own sequence.\n const columns = orderByXOrder(\n orderByClickyOrder(Object.entries(itemSchema.properties ?? {})),\n itemSchema[\"x-order\"],\n );\n const childCtx: RenderContext = { ...ctx, readOnly, depth: ctx.depth + 1 };\n\n function cell(\n item: unknown,\n rowIndex: number,\n col: string,\n prop: JsonSchemaProperty,\n ): ReactNode {\n const obj = isPlainObject(item) ? item : {};\n const nodes = ctx.render.renderFieldNodes(\n {\n key: `${field.key}[${rowIndex}].${col}`,\n prop,\n required: false,\n value: obj[col],\n onChange: (next) =>\n field.onChange(setIndex(items, rowIndex, { ...obj, [col]: next })),\n instancePath: appendInstancePath(\n appendInstancePath(ctx.instancePath, rowIndex),\n col,\n ),\n },\n childCtx,\n );\n return nodes?.value ?? null;\n }\n\n return (\n <div className=\"overflow-x-auto rounded-md border border-input\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b border-input bg-muted/40 text-left\">\n {columns.map(([col, prop]) => (\n <th\n key={col}\n className=\"px-2 py-1 text-xs font-medium text-muted-foreground\"\n >\n <TableColumnHeader name={col} schema={prop} />\n </th>\n ))}\n {!readOnly && <th className=\"w-10 px-2 py-1\" />}\n </tr>\n </thead>\n <tbody>\n {items.map((item, i) => (\n <tr\n key={i}\n className=\"border-b border-input last:border-b-0 align-top\"\n >\n {columns.map(([col, prop]) => (\n <td key={col} className=\"px-2 py-1\">\n {cell(item, i, col, prop)}\n </td>\n ))}\n {!readOnly && (\n <td className=\"px-2 py-1\">\n <button\n type=\"button\"\n aria-label={`Remove item ${i + 1}`}\n className={cn(\n \"inline-flex aspect-square items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground\",\n controlHeightClass[ctx.size],\n )}\n onClick={() => field.onChange(removeIndex(items, i))}\n >\n <Icon icon={UiTrash} className=\"text-sm\" />\n </button>\n </td>\n )}\n </tr>\n ))}\n </tbody>\n </table>\n {!readOnly && (\n <div className=\"p-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n className={cn(\"gap-1.5\", inputSizeClass[ctx.size])}\n onClick={() =>\n field.onChange([...items, seedFromSchema(itemSchema)])\n }\n >\n <Icon icon={UiAdd} className=\"text-sm\" />\n Add item\n </Button>\n </div>\n )}\n </div>\n );\n}\n\nfunction TableColumnHeader({\n name,\n schema,\n}: {\n name: string;\n schema: JsonSchemaProperty;\n}) {\n const label =\n typeof schema.title === \"string\" && schema.title ? schema.title : name;\n const helper = schemaHelper(schema);\n if (!helper) return label;\n\n return (\n <HoverCard\n placement=\"bottom\"\n trigger={\n <button\n type=\"button\"\n aria-label={`${label} help`}\n className=\"cursor-help border-b border-dotted border-current text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n {label}\n </button>\n }\n cardClassName=\"max-w-xs whitespace-normal text-left font-normal text-foreground\"\n >\n {helper}\n </HoverCard>\n );\n}\n"],"names":["orderByXOrder","orderByClickyOrder","isPlainObject","setIndex","appendInstancePath","jsxs","jsx","cn","controlHeightClass","removeIndex","Icon","UiTrash","Button","inputSizeClass","seedFromSchema","UiAdd","schemaHelper","HoverCard"],"mappings":"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"}
1
+ {"version":3,"file":"json-schema-form-table-array.cjs","sources":["../../src/components/json-schema-form-table-array.tsx"],"sourcesContent":["import { type ReactNode } from \"react\";\nimport { isPlainObject, removeIndex, setIndex } from \"../lib/collections\";\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../data/Icon\";\nimport { UiAdd, UiTrash } from \"../icons\";\nimport { HoverCard } from \"../overlay/HoverCard\";\nimport { Button } from \"./button\";\nimport {\n controlHeightClass,\n controlMinHeightClass,\n inputSizeClass,\n} from \"./json-schema-form-size\";\nimport { schemaHelper } from \"./json-schema-form-resolve\";\nimport { appendInstancePath } from \"./json-schema-form-errors\";\nimport {\n canAddItem,\n canRemoveItem,\n orderByClickyOrder,\n orderByXOrder,\n seedFromSchema,\n} from \"./json-schema-form-utils\";\nimport type {\n FieldControl,\n JsonSchemaProperty,\n RenderContext,\n} from \"./json-schema-form-types\";\n\n// TableArray renders an object-item array as a table: a header row of the item's\n// property names and one row per item with value-only controls, plus per-row\n// remove and an add button. Driven by `x-layout: table`.\nexport function TableArray({\n field,\n ctx,\n readOnly,\n}: {\n field: FieldControl;\n ctx: RenderContext;\n readOnly: boolean;\n}) {\n const items = Array.isArray(field.value) ? field.value : [];\n const itemSchema = field.itemSchema ?? { type: \"object\" };\n // The item schema's explicit `x-order` is the authority for the keys it names:\n // per-property `x-clicky-order` sorts first (so it still orders everything\n // `x-order` leaves out, and composes across merged sources), then `x-order`\n // pulls its listed columns to the front in its own sequence.\n const columns = orderByXOrder(\n orderByClickyOrder(Object.entries(itemSchema.properties ?? {})),\n itemSchema[\"x-order\"],\n );\n const childCtx: RenderContext = { ...ctx, readOnly, depth: ctx.depth + 1 };\n // The trash column disappears with the buttons that would have filled it, so\n // an array of a fixed length reads as a table rather than one with a blank\n // gutter down the side.\n const removable = !readOnly && canRemoveItem(field, items.length);\n\n function cell(\n item: unknown,\n rowIndex: number,\n col: string,\n prop: JsonSchemaProperty,\n ): ReactNode {\n const obj = isPlainObject(item) ? item : {};\n const nodes = ctx.render.renderFieldNodes(\n {\n key: `${field.key}[${rowIndex}].${col}`,\n prop,\n required: false,\n value: obj[col],\n onChange: (next) =>\n field.onChange(setIndex(items, rowIndex, { ...obj, [col]: next })),\n instancePath: appendInstancePath(\n appendInstancePath(ctx.instancePath, rowIndex),\n col,\n ),\n },\n childCtx,\n );\n return ctx.presentation ? (\n <div\n className={cn(\n \"flex min-w-0 items-center [overflow-wrap:anywhere] [&_span[data-jsf-readonly]]:h-auto [&_span[data-jsf-readonly]]:min-w-0\",\n controlMinHeightClass[ctx.size],\n )}\n >\n {nodes?.value}\n </div>\n ) : (\n (nodes?.value ?? null)\n );\n }\n\n return (\n <div\n className={cn(\n \"overflow-x-auto\",\n !ctx.presentation && \"rounded-md border border-input\",\n )}\n >\n <table className=\"w-full text-sm\">\n <thead>\n <tr\n className={cn(\n \"border-b bg-muted/40 text-left\",\n ctx.presentation ? \"border-border\" : \"border-input\",\n )}\n >\n {columns.map(([col, prop]) => (\n <th\n key={col}\n className=\"px-2 py-1 text-xs font-medium text-muted-foreground [overflow-wrap:anywhere]\"\n >\n {ctx.presentation ? (\n prop.title || col\n ) : (\n <TableColumnHeader name={col} schema={prop} />\n )}\n </th>\n ))}\n {removable && <th className=\"w-10 px-2 py-1\" />}\n </tr>\n </thead>\n <tbody>\n {items.map((item, i) => (\n <tr\n key={i}\n className={cn(\n \"border-b last:border-b-0 align-top\",\n ctx.presentation ? \"border-border\" : \"border-input\",\n )}\n >\n {columns.map(([col, prop]) => (\n <td key={col} className=\"px-2 py-1\">\n {cell(item, i, col, prop)}\n </td>\n ))}\n {removable && (\n <td className=\"px-2 py-1\">\n <button\n type=\"button\"\n aria-label={`Remove item ${i + 1}`}\n className={cn(\n \"inline-flex aspect-square items-center justify-center rounded text-muted-foreground hover:bg-accent hover:text-foreground\",\n controlHeightClass[ctx.size],\n )}\n onClick={() => field.onChange(removeIndex(items, i))}\n >\n <Icon icon={UiTrash} className=\"text-sm\" />\n </button>\n </td>\n )}\n </tr>\n ))}\n </tbody>\n </table>\n {!readOnly && canAddItem(field, items.length) && (\n <div className=\"p-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n className={cn(\"gap-1.5\", inputSizeClass[ctx.size])}\n onClick={() =>\n field.onChange([...items, seedFromSchema(itemSchema)])\n }\n >\n <Icon icon={UiAdd} className=\"text-sm\" />\n Add item\n </Button>\n </div>\n )}\n </div>\n );\n}\n\nfunction TableColumnHeader({\n name,\n schema,\n}: {\n name: string;\n schema: JsonSchemaProperty;\n}) {\n const label =\n typeof schema.title === \"string\" && schema.title ? schema.title : name;\n const helper = schemaHelper(schema);\n if (!helper) return label;\n\n return (\n <HoverCard\n placement=\"bottom\"\n trigger={\n <button\n type=\"button\"\n aria-label={`${label} help`}\n className=\"cursor-help border-b border-dotted border-current text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n {label}\n </button>\n }\n cardClassName=\"max-w-xs whitespace-normal text-left font-normal text-foreground\"\n >\n {helper}\n </HoverCard>\n );\n}\n"],"names":["orderByXOrder","orderByClickyOrder","canRemoveItem","isPlainObject","setIndex","appendInstancePath","jsx","cn","controlMinHeightClass","jsxs","controlHeightClass","removeIndex","Icon","UiTrash","canAddItem","Button","inputSizeClass","seedFromSchema","UiAdd","schemaHelper","HoverCard"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"json-schema-form-table-array.d.ts","sourceRoot":"","sources":["../../src/components/json-schema-form-table-array.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACV,YAAY,EAEZ,aAAa,EACd,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,GAAG,EACH,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,EAAE,aAAa,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB,+BAqGA"}
1
+ {"version":3,"file":"json-schema-form-table-array.d.ts","sourceRoot":"","sources":["../../src/components/json-schema-form-table-array.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,YAAY,EAEZ,aAAa,EACd,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,GAAG,EACH,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,EAAE,aAAa,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB,+BAqIA"}