@flanksource/clicky-ui 0.3.34 → 0.3.35

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 (680) hide show
  1. package/README.md +4 -0
  2. package/dist/ai.cjs +3 -0
  3. package/dist/ai.cjs.map +1 -1
  4. package/dist/ai.js +3 -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/TaskManager.cjs +9 -17
  239. package/dist/data/TaskManager.cjs.map +1 -1
  240. package/dist/data/TaskManager.d.ts.map +1 -1
  241. package/dist/data/TaskManager.js +9 -17
  242. package/dist/data/TaskManager.js.map +1 -1
  243. package/dist/data/TaskManagerButton.cjs +17 -34
  244. package/dist/data/TaskManagerButton.cjs.map +1 -1
  245. package/dist/data/TaskManagerButton.d.ts.map +1 -1
  246. package/dist/data/TaskManagerButton.js +18 -35
  247. package/dist/data/TaskManagerButton.js.map +1 -1
  248. package/dist/data/TaskProcessDetails.cjs +5 -26
  249. package/dist/data/TaskProcessDetails.cjs.map +1 -1
  250. package/dist/data/TaskProcessDetails.d.ts +2 -1
  251. package/dist/data/TaskProcessDetails.d.ts.map +1 -1
  252. package/dist/data/TaskProcessDetails.js +5 -26
  253. package/dist/data/TaskProcessDetails.js.map +1 -1
  254. package/dist/data/TaskProgress.cjs +24 -15
  255. package/dist/data/TaskProgress.cjs.map +1 -1
  256. package/dist/data/TaskProgress.d.ts +2 -1
  257. package/dist/data/TaskProgress.d.ts.map +1 -1
  258. package/dist/data/TaskProgress.js +24 -15
  259. package/dist/data/TaskProgress.js.map +1 -1
  260. package/dist/data/TaskResourceReadings.cjs +42 -0
  261. package/dist/data/TaskResourceReadings.cjs.map +1 -0
  262. package/dist/data/TaskResourceReadings.d.ts +6 -0
  263. package/dist/data/TaskResourceReadings.d.ts.map +1 -0
  264. package/dist/data/TaskResourceReadings.js +42 -0
  265. package/dist/data/TaskResourceReadings.js.map +1 -0
  266. package/dist/data/TaskSnapshot.cjs.map +1 -1
  267. package/dist/data/TaskSnapshot.d.ts +14 -1
  268. package/dist/data/TaskSnapshot.d.ts.map +1 -1
  269. package/dist/data/TaskSnapshot.js.map +1 -1
  270. package/dist/data/Timeline.d.ts +1 -1
  271. package/dist/data/Tree.d.ts +1 -1
  272. package/dist/data/TreeGroupHeader.d.ts +1 -1
  273. package/dist/data/TreeNode.d.ts +1 -1
  274. package/dist/data/Version.d.ts +3 -3
  275. package/dist/data/ai/ChatWindow.cjs +22 -12
  276. package/dist/data/ai/ChatWindow.cjs.map +1 -1
  277. package/dist/data/ai/ChatWindow.d.ts.map +1 -1
  278. package/dist/data/ai/ChatWindow.js +22 -12
  279. package/dist/data/ai/ChatWindow.js.map +1 -1
  280. package/dist/data/ai/ChatWindow.test-utils.d.ts +4 -2
  281. package/dist/data/ai/ChatWindow.test-utils.d.ts.map +1 -1
  282. package/dist/data/ai/ChatWindow.types.d.ts +1 -1
  283. package/dist/data/ai/ChatWindowManager.cjs +2 -0
  284. package/dist/data/ai/ChatWindowManager.cjs.map +1 -1
  285. package/dist/data/ai/ChatWindowManager.d.ts +1 -1
  286. package/dist/data/ai/ChatWindowManager.d.ts.map +1 -1
  287. package/dist/data/ai/ChatWindowManager.js +2 -0
  288. package/dist/data/ai/ChatWindowManager.js.map +1 -1
  289. package/dist/data/ai/PolicyTree.d.ts +1 -1
  290. package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts +1 -1
  291. package/dist/data/ai/PromptCatalog/types.d.ts +1 -1
  292. package/dist/data/ai/PromptRunEditor/index.cjs +4 -0
  293. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  294. package/dist/data/ai/PromptRunEditor/index.d.ts +5 -2
  295. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  296. package/dist/data/ai/PromptRunEditor/index.js +4 -0
  297. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  298. package/dist/data/ai/SessionChatComposer.d.ts +1 -1
  299. package/dist/data/ai/SessionInspector.approvals.cjs +147 -0
  300. package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -0
  301. package/dist/data/ai/SessionInspector.approvals.d.ts +21 -0
  302. package/dist/data/ai/SessionInspector.approvals.d.ts.map +1 -0
  303. package/dist/data/ai/SessionInspector.approvals.js +147 -0
  304. package/dist/data/ai/SessionInspector.approvals.js.map +1 -0
  305. package/dist/data/ai/SessionInspector.cjs +21 -8
  306. package/dist/data/ai/SessionInspector.cjs.map +1 -1
  307. package/dist/data/ai/SessionInspector.d.ts +6 -2
  308. package/dist/data/ai/SessionInspector.d.ts.map +1 -1
  309. package/dist/data/ai/SessionInspector.hierarchy.d.ts +1 -1
  310. package/dist/data/ai/SessionInspector.js +21 -8
  311. package/dist/data/ai/SessionInspector.js.map +1 -1
  312. package/dist/data/ai/SessionInspector.panel-parts.cjs +47 -0
  313. package/dist/data/ai/SessionInspector.panel-parts.cjs.map +1 -0
  314. package/dist/data/ai/SessionInspector.panel-parts.d.ts +20 -0
  315. package/dist/data/ai/SessionInspector.panel-parts.d.ts.map +1 -0
  316. package/dist/data/ai/SessionInspector.panel-parts.js +47 -0
  317. package/dist/data/ai/SessionInspector.panel-parts.js.map +1 -0
  318. package/dist/data/ai/SessionInspector.panels.cjs +40 -99
  319. package/dist/data/ai/SessionInspector.panels.cjs.map +1 -1
  320. package/dist/data/ai/SessionInspector.panels.d.ts +3 -1
  321. package/dist/data/ai/SessionInspector.panels.d.ts.map +1 -1
  322. package/dist/data/ai/SessionInspector.panels.js +12 -71
  323. package/dist/data/ai/SessionInspector.panels.js.map +1 -1
  324. package/dist/data/ai/SessionViewer.d.ts +1 -1
  325. package/dist/data/ai/SessionViewer.rows.d.ts +1 -1
  326. package/dist/data/ai/SessionViewer.tool-details.d.ts +1 -1
  327. package/dist/data/ai/SessionViewer.unified.d.ts +23 -0
  328. package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
  329. package/dist/data/ai/SpecRuntimeEditor/Footer.d.ts +1 -1
  330. package/dist/data/ai/SpecRuntimeEditor/Rail.d.ts +1 -1
  331. package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts +1 -1
  332. package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs +3 -1
  333. package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs.map +1 -1
  334. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts +3 -1
  335. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts.map +1 -1
  336. package/dist/data/ai/SpecRuntimeEditor/VerifySection.js +3 -1
  337. package/dist/data/ai/SpecRuntimeEditor/VerifySection.js.map +1 -1
  338. package/dist/data/ai/SpecRuntimeEditor/fields.d.ts +1 -1
  339. package/dist/data/ai/SpecRuntimeEditor/index.cjs +3 -1
  340. package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
  341. package/dist/data/ai/SpecRuntimeEditor/index.d.ts +5 -2
  342. package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
  343. package/dist/data/ai/SpecRuntimeEditor/index.js +3 -1
  344. package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
  345. package/dist/data/ai/chat-window-context.cjs +1 -0
  346. package/dist/data/ai/chat-window-context.cjs.map +1 -1
  347. package/dist/data/ai/chat-window-context.d.ts +13 -5
  348. package/dist/data/ai/chat-window-context.d.ts.map +1 -1
  349. package/dist/data/ai/chat-window-context.js +1 -0
  350. package/dist/data/ai/chat-window-context.js.map +1 -1
  351. package/dist/data/ai/index.d.ts +2 -1
  352. package/dist/data/ai/index.d.ts.map +1 -1
  353. package/dist/data/ai/use-session-scroll.d.ts +1 -1
  354. package/dist/data/cache-browser/adapter.d.ts +1 -1
  355. package/dist/data/cells/CellFilterActions.d.ts +1 -1
  356. package/dist/data/cells/EntityCell.d.ts +1 -1
  357. package/dist/data/cells/tag-utils.d.ts +1 -1
  358. package/dist/data/chat/Chat.cjs +42 -46
  359. package/dist/data/chat/Chat.cjs.map +1 -1
  360. package/dist/data/chat/Chat.d.ts +16 -5
  361. package/dist/data/chat/Chat.d.ts.map +1 -1
  362. package/dist/data/chat/Chat.js +43 -47
  363. package/dist/data/chat/Chat.js.map +1 -1
  364. package/dist/data/chat/ModelSelector.d.ts +1 -1
  365. package/dist/data/chat/PromptInput.cjs +13 -0
  366. package/dist/data/chat/PromptInput.cjs.map +1 -1
  367. package/dist/data/chat/PromptInput.d.ts +8 -2
  368. package/dist/data/chat/PromptInput.d.ts.map +1 -1
  369. package/dist/data/chat/PromptInput.js +14 -1
  370. package/dist/data/chat/PromptInput.js.map +1 -1
  371. package/dist/data/chat/tool-render/ToolArgs.d.ts +1 -1
  372. package/dist/data/chat/tool-render/ToolParams.d.ts +1 -1
  373. package/dist/data/chat/tool-render/ToolValue.d.ts +1 -1
  374. package/dist/data/chat/tool-render/adapter.d.ts +1 -1
  375. package/dist/data/chat/tool-render/context.d.ts +1 -1
  376. package/dist/data/chat/tool-render/defaults.d.ts +1 -1
  377. package/dist/data/chat/tool-render/known-tool-views.d.ts +1 -1
  378. package/dist/data/chat/tool-render/summary.d.ts +1 -1
  379. package/dist/data/chat/types.d.ts +1 -1
  380. package/dist/data/clicky-export/useClickyExport.d.ts +1 -1
  381. package/dist/data/data-table-server-filters.d.ts +1 -1
  382. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts +1 -1
  383. package/dist/data/diagnostics/ErrorDetails.d.ts +1 -1
  384. package/dist/data/diagnostics/StackFrameRow.d.ts +1 -1
  385. package/dist/data/git/GitChangeList.d.ts +1 -1
  386. package/dist/data/icon-fallback.d.ts +1 -1
  387. package/dist/data/properties-context.cjs +6 -0
  388. package/dist/data/properties-context.cjs.map +1 -0
  389. package/dist/data/properties-context.d.ts +7 -0
  390. package/dist/data/properties-context.d.ts.map +1 -0
  391. package/dist/data/properties-context.js +6 -0
  392. package/dist/data/properties-context.js.map +1 -0
  393. package/dist/data/query-browser/QueryBrowser.types.d.ts +1 -1
  394. package/dist/data/runtime/RuntimeBar.cjs +7 -3
  395. package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
  396. package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
  397. package/dist/data/runtime/RuntimeBar.js +7 -3
  398. package/dist/data/runtime/RuntimeBar.js.map +1 -1
  399. package/dist/data/task-copy.cjs +1 -1
  400. package/dist/data/task-copy.cjs.map +1 -1
  401. package/dist/data/task-copy.js +1 -1
  402. package/dist/data/task-copy.js.map +1 -1
  403. package/dist/data/task-resource-summary.cjs +30 -0
  404. package/dist/data/task-resource-summary.cjs.map +1 -0
  405. package/dist/data/task-resource-summary.d.ts +15 -0
  406. package/dist/data/task-resource-summary.d.ts.map +1 -0
  407. package/dist/data/task-resource-summary.js +30 -0
  408. package/dist/data/task-resource-summary.js.map +1 -0
  409. package/dist/data/task-status.cjs +8 -2
  410. package/dist/data/task-status.cjs.map +1 -1
  411. package/dist/data/task-status.d.ts +3 -0
  412. package/dist/data/task-status.d.ts.map +1 -1
  413. package/dist/data/task-status.js +8 -2
  414. package/dist/data/task-status.js.map +1 -1
  415. package/dist/data/task-work-progress.cjs +24 -0
  416. package/dist/data/task-work-progress.cjs.map +1 -0
  417. package/dist/data/task-work-progress.d.ts +21 -0
  418. package/dist/data/task-work-progress.d.ts.map +1 -0
  419. package/dist/data/task-work-progress.js +24 -0
  420. package/dist/data/task-work-progress.js.map +1 -0
  421. package/dist/data/test-runner/TestRunner.d.ts +1 -1
  422. package/dist/data/test-runner/adapter.d.ts +1 -1
  423. package/dist/data/test-runner/context.d.ts +1 -1
  424. package/dist/data/use-data-table-virtual.cjs +73 -0
  425. package/dist/data/use-data-table-virtual.cjs.map +1 -0
  426. package/dist/data/use-data-table-virtual.d.ts +40 -0
  427. package/dist/data/use-data-table-virtual.d.ts.map +1 -0
  428. package/dist/data/use-data-table-virtual.js +73 -0
  429. package/dist/data/use-data-table-virtual.js.map +1 -0
  430. package/dist/data/verification/VerificationResults.d.ts +1 -1
  431. package/dist/data/version-info.cjs +3 -3
  432. package/dist/data/version-info.js +3 -3
  433. package/dist/expressions/lang/attributes.cjs +56 -0
  434. package/dist/expressions/lang/attributes.cjs.map +1 -0
  435. package/dist/expressions/lang/attributes.d.ts +22 -0
  436. package/dist/expressions/lang/attributes.d.ts.map +1 -0
  437. package/dist/expressions/lang/attributes.js +56 -0
  438. package/dist/expressions/lang/attributes.js.map +1 -0
  439. package/dist/expressions/lang/completion.cjs +164 -0
  440. package/dist/expressions/lang/completion.cjs.map +1 -0
  441. package/dist/expressions/lang/completion.d.ts +29 -0
  442. package/dist/expressions/lang/completion.d.ts.map +1 -0
  443. package/dist/expressions/lang/completion.js +164 -0
  444. package/dist/expressions/lang/completion.js.map +1 -0
  445. package/dist/expressions/lang/environment.cjs +115 -0
  446. package/dist/expressions/lang/environment.cjs.map +1 -0
  447. package/dist/expressions/lang/environment.d.ts +54 -0
  448. package/dist/expressions/lang/environment.d.ts.map +1 -0
  449. package/dist/expressions/lang/environment.js +115 -0
  450. package/dist/expressions/lang/environment.js.map +1 -0
  451. package/dist/expressions/lang/generated/conformance.json.d.ts +4962 -0
  452. package/dist/expressions/lang/generated/index.cjs +18 -0
  453. package/dist/expressions/lang/generated/index.cjs.map +1 -0
  454. package/dist/expressions/lang/generated/index.d.ts +9 -0
  455. package/dist/expressions/lang/generated/index.d.ts.map +1 -0
  456. package/dist/expressions/lang/generated/index.js +18 -0
  457. package/dist/expressions/lang/generated/index.js.map +1 -0
  458. package/dist/expressions/lang/generated/languages.json.cjs +18 -0
  459. package/dist/expressions/lang/generated/languages.json.cjs.map +1 -0
  460. package/dist/expressions/lang/generated/languages.json.d.ts +2305 -0
  461. package/dist/expressions/lang/generated/languages.json.js +18 -0
  462. package/dist/expressions/lang/generated/languages.json.js.map +1 -0
  463. package/dist/expressions/lang/generated/spec.json.cjs +12 -0
  464. package/dist/expressions/lang/generated/spec.json.cjs.map +1 -0
  465. package/dist/expressions/lang/generated/spec.json.d.ts +6260 -0
  466. package/dist/expressions/lang/generated/spec.json.js +12 -0
  467. package/dist/expressions/lang/generated/spec.json.js.map +1 -0
  468. package/dist/expressions/lang/hover.cjs +106 -0
  469. package/dist/expressions/lang/hover.cjs.map +1 -0
  470. package/dist/expressions/lang/hover.d.ts +54 -0
  471. package/dist/expressions/lang/hover.d.ts.map +1 -0
  472. package/dist/expressions/lang/hover.js +106 -0
  473. package/dist/expressions/lang/hover.js.map +1 -0
  474. package/dist/expressions/lang/index.cjs +87 -0
  475. package/dist/expressions/lang/index.cjs.map +1 -0
  476. package/dist/expressions/lang/index.d.ts +65 -0
  477. package/dist/expressions/lang/index.d.ts.map +1 -0
  478. package/dist/expressions/lang/index.js +90 -0
  479. package/dist/expressions/lang/index.js.map +1 -0
  480. package/dist/expressions/lang/merge.cjs +52 -0
  481. package/dist/expressions/lang/merge.cjs.map +1 -0
  482. package/dist/expressions/lang/merge.d.ts +12 -0
  483. package/dist/expressions/lang/merge.d.ts.map +1 -0
  484. package/dist/expressions/lang/merge.js +52 -0
  485. package/dist/expressions/lang/merge.js.map +1 -0
  486. package/dist/expressions/lang/prefix.cjs +91 -0
  487. package/dist/expressions/lang/prefix.cjs.map +1 -0
  488. package/dist/expressions/lang/prefix.d.ts +36 -0
  489. package/dist/expressions/lang/prefix.d.ts.map +1 -0
  490. package/dist/expressions/lang/prefix.js +91 -0
  491. package/dist/expressions/lang/prefix.js.map +1 -0
  492. package/dist/expressions/lang/spec.d.ts +13 -0
  493. package/dist/expressions/lang/spec.d.ts.map +1 -0
  494. package/dist/expressions/lang/theme.cjs +97 -0
  495. package/dist/expressions/lang/theme.cjs.map +1 -0
  496. package/dist/expressions/lang/theme.d.ts +6 -0
  497. package/dist/expressions/lang/theme.d.ts.map +1 -0
  498. package/dist/expressions/lang/theme.js +97 -0
  499. package/dist/expressions/lang/theme.js.map +1 -0
  500. package/dist/expressions/lang/types.d.ts +81 -0
  501. package/dist/expressions/lang/types.d.ts.map +1 -0
  502. package/dist/expressions/playground/ExpressionPlayground.cjs +308 -0
  503. package/dist/expressions/playground/ExpressionPlayground.cjs.map +1 -0
  504. package/dist/expressions/playground/ExpressionPlayground.d.ts +42 -0
  505. package/dist/expressions/playground/ExpressionPlayground.d.ts.map +1 -0
  506. package/dist/expressions/playground/ExpressionPlayground.js +291 -0
  507. package/dist/expressions/playground/ExpressionPlayground.js.map +1 -0
  508. package/dist/expressions/playground/RunControls.cjs +51 -0
  509. package/dist/expressions/playground/RunControls.cjs.map +1 -0
  510. package/dist/expressions/playground/RunControls.d.ts +7 -0
  511. package/dist/expressions/playground/RunControls.d.ts.map +1 -0
  512. package/dist/expressions/playground/RunControls.js +51 -0
  513. package/dist/expressions/playground/RunControls.js.map +1 -0
  514. package/dist/expressions/playground/VerticalSplit.cjs +109 -0
  515. package/dist/expressions/playground/VerticalSplit.cjs.map +1 -0
  516. package/dist/expressions/playground/VerticalSplit.d.ts +23 -0
  517. package/dist/expressions/playground/VerticalSplit.d.ts.map +1 -0
  518. package/dist/expressions/playground/VerticalSplit.js +109 -0
  519. package/dist/expressions/playground/VerticalSplit.js.map +1 -0
  520. package/dist/expressions/playground/api.cjs +49 -0
  521. package/dist/expressions/playground/api.cjs.map +1 -0
  522. package/dist/expressions/playground/api.d.ts +53 -0
  523. package/dist/expressions/playground/api.d.ts.map +1 -0
  524. package/dist/expressions/playground/api.js +49 -0
  525. package/dist/expressions/playground/api.js.map +1 -0
  526. package/dist/expressions/playground/languages.cjs +88 -0
  527. package/dist/expressions/playground/languages.cjs.map +1 -0
  528. package/dist/expressions/playground/languages.d.ts +43 -0
  529. package/dist/expressions/playground/languages.d.ts.map +1 -0
  530. package/dist/expressions/playground/languages.js +88 -0
  531. package/dist/expressions/playground/languages.js.map +1 -0
  532. package/dist/expressions/playground/panels/GraphPanel.cjs +72 -0
  533. package/dist/expressions/playground/panels/GraphPanel.cjs.map +1 -0
  534. package/dist/expressions/playground/panels/GraphPanel.d.ts +19 -0
  535. package/dist/expressions/playground/panels/GraphPanel.d.ts.map +1 -0
  536. package/dist/expressions/playground/panels/GraphPanel.js +72 -0
  537. package/dist/expressions/playground/panels/GraphPanel.js.map +1 -0
  538. package/dist/expressions/playground/panels/ResultPanel.cjs +82 -0
  539. package/dist/expressions/playground/panels/ResultPanel.cjs.map +1 -0
  540. package/dist/expressions/playground/panels/ResultPanel.d.ts +11 -0
  541. package/dist/expressions/playground/panels/ResultPanel.d.ts.map +1 -0
  542. package/dist/expressions/playground/panels/ResultPanel.js +82 -0
  543. package/dist/expressions/playground/panels/ResultPanel.js.map +1 -0
  544. package/dist/expressions/playground/panels/SpecPanel.cjs +76 -0
  545. package/dist/expressions/playground/panels/SpecPanel.cjs.map +1 -0
  546. package/dist/expressions/playground/panels/SpecPanel.d.ts +18 -0
  547. package/dist/expressions/playground/panels/SpecPanel.d.ts.map +1 -0
  548. package/dist/expressions/playground/panels/SpecPanel.js +76 -0
  549. package/dist/expressions/playground/panels/SpecPanel.js.map +1 -0
  550. package/dist/expressions/playground/panels/TokensPanel.cjs +89 -0
  551. package/dist/expressions/playground/panels/TokensPanel.cjs.map +1 -0
  552. package/dist/expressions/playground/panels/TokensPanel.d.ts +15 -0
  553. package/dist/expressions/playground/panels/TokensPanel.d.ts.map +1 -0
  554. package/dist/expressions/playground/panels/TokensPanel.js +72 -0
  555. package/dist/expressions/playground/panels/TokensPanel.js.map +1 -0
  556. package/dist/expressions/playground/panels/graphNodes.cjs +35 -0
  557. package/dist/expressions/playground/panels/graphNodes.cjs.map +1 -0
  558. package/dist/expressions/playground/panels/graphNodes.d.ts +19 -0
  559. package/dist/expressions/playground/panels/graphNodes.d.ts.map +1 -0
  560. package/dist/expressions/playground/panels/graphNodes.js +35 -0
  561. package/dist/expressions/playground/panels/graphNodes.js.map +1 -0
  562. package/dist/expressions/playground/runAction.cjs +12 -0
  563. package/dist/expressions/playground/runAction.cjs.map +1 -0
  564. package/dist/expressions/playground/runAction.d.ts +15 -0
  565. package/dist/expressions/playground/runAction.d.ts.map +1 -0
  566. package/dist/expressions/playground/runAction.js +12 -0
  567. package/dist/expressions/playground/runAction.js.map +1 -0
  568. package/dist/expressions/playground/runShortcut.cjs +9 -0
  569. package/dist/expressions/playground/runShortcut.cjs.map +1 -0
  570. package/dist/expressions/playground/runShortcut.d.ts +2 -0
  571. package/dist/expressions/playground/runShortcut.d.ts.map +1 -0
  572. package/dist/expressions/playground/runShortcut.js +9 -0
  573. package/dist/expressions/playground/runShortcut.js.map +1 -0
  574. package/dist/expressions/playground/useEditorTheme.cjs +40 -0
  575. package/dist/expressions/playground/useEditorTheme.cjs.map +1 -0
  576. package/dist/expressions/playground/useEditorTheme.d.ts +16 -0
  577. package/dist/expressions/playground/useEditorTheme.d.ts.map +1 -0
  578. package/dist/expressions/playground/useEditorTheme.js +23 -0
  579. package/dist/expressions/playground/useEditorTheme.js.map +1 -0
  580. package/dist/expressions/playground/useEvaluator.cjs +72 -0
  581. package/dist/expressions/playground/useEvaluator.cjs.map +1 -0
  582. package/dist/expressions/playground/useEvaluator.d.ts +25 -0
  583. package/dist/expressions/playground/useEvaluator.d.ts.map +1 -0
  584. package/dist/expressions/playground/useEvaluator.js +72 -0
  585. package/dist/expressions/playground/useEvaluator.js.map +1 -0
  586. package/dist/expressions/playground/useParsedInput.cjs +22 -0
  587. package/dist/expressions/playground/useParsedInput.cjs.map +1 -0
  588. package/dist/expressions/playground/useParsedInput.d.ts +20 -0
  589. package/dist/expressions/playground/useParsedInput.d.ts.map +1 -0
  590. package/dist/expressions/playground/useParsedInput.js +22 -0
  591. package/dist/expressions/playground/useParsedInput.js.map +1 -0
  592. package/dist/expressions/playground/verticalSplitModel.cjs +11 -0
  593. package/dist/expressions/playground/verticalSplitModel.cjs.map +1 -0
  594. package/dist/expressions/playground/verticalSplitModel.d.ts +3 -0
  595. package/dist/expressions/playground/verticalSplitModel.d.ts.map +1 -0
  596. package/dist/expressions/playground/verticalSplitModel.js +11 -0
  597. package/dist/expressions/playground/verticalSplitModel.js.map +1 -0
  598. package/dist/expressions/playground.cjs +18 -0
  599. package/dist/expressions/playground.cjs.map +1 -0
  600. package/dist/expressions/playground.d.ts +18 -0
  601. package/dist/expressions/playground.d.ts.map +1 -0
  602. package/dist/expressions/playground.js +18 -0
  603. package/dist/expressions/playground.js.map +1 -0
  604. package/dist/expressions.cjs +28 -0
  605. package/dist/expressions.cjs.map +1 -0
  606. package/dist/expressions.d.ts +10 -0
  607. package/dist/expressions.d.ts.map +1 -0
  608. package/dist/expressions.js +28 -0
  609. package/dist/expressions.js.map +1 -0
  610. package/dist/hooks/density-provider.d.ts +1 -1
  611. package/dist/hooks/theme-provider.d.ts +1 -1
  612. package/dist/hooks/use-density.d.ts +1 -1
  613. package/dist/hooks/use-resource-clock.cjs +14 -0
  614. package/dist/hooks/use-resource-clock.cjs.map +1 -0
  615. package/dist/hooks/use-resource-clock.d.ts +2 -0
  616. package/dist/hooks/use-resource-clock.d.ts.map +1 -0
  617. package/dist/hooks/use-resource-clock.js +14 -0
  618. package/dist/hooks/use-resource-clock.js.map +1 -0
  619. package/dist/hooks/use-task-run.cjs +12 -3
  620. package/dist/hooks/use-task-run.cjs.map +1 -1
  621. package/dist/hooks/use-task-run.d.ts.map +1 -1
  622. package/dist/hooks/use-task-run.js +12 -3
  623. package/dist/hooks/use-task-run.js.map +1 -1
  624. package/dist/hooks/use-theme.d.ts +1 -1
  625. package/dist/icons/registry.d.ts +1 -1
  626. package/dist/icons/types.d.ts +1 -1
  627. package/dist/layout/AppShell.d.ts +1 -1
  628. package/dist/layout/AppShell.nav.drag.d.ts +1 -1
  629. package/dist/layout/AppSidebar.d.ts +1 -1
  630. package/dist/layout/Panel.d.ts +1 -1
  631. package/dist/layout/PanelFrame.d.ts +1 -1
  632. package/dist/layout/Section.d.ts +1 -1
  633. package/dist/layout/SplitPane.d.ts +1 -1
  634. package/dist/layout/Tabs.d.ts +1 -1
  635. package/dist/layout/Workspace.d.ts +1 -1
  636. package/dist/layout/Workspace.model.d.ts +1 -1
  637. package/dist/lib/combobox-values.d.ts +1 -1
  638. package/dist/monaco/MonacoEditor.cjs +3 -3
  639. package/dist/monaco/MonacoEditor.cjs.map +1 -1
  640. package/dist/monaco/MonacoEditor.js +2 -2
  641. package/dist/monaco/MonacoEditor.js.map +1 -1
  642. package/dist/monaco/types.d.ts +1 -1
  643. package/dist/monaco/use-monaco-worker.d.ts +1 -1
  644. package/dist/overlay/CellActions.d.ts +1 -1
  645. package/dist/overlay/CommandPalette.d.ts +2 -2
  646. package/dist/overlay/CommandPalette.model.d.ts +1 -1
  647. package/dist/overlay/CommandPaletteList.d.ts +1 -1
  648. package/dist/overlay/DropdownMenu.d.ts +1 -1
  649. package/dist/overlay/HoverCard.d.ts +1 -1
  650. package/dist/overlay/Modal.d.ts +2 -2
  651. package/dist/overlay/Toast.d.ts +1 -1
  652. package/dist/overlay/TourCard.d.ts +1 -1
  653. package/dist/overlay/TourProvider.d.ts +1 -1
  654. package/dist/overlay/dropdownMenuContext.d.ts +1 -1
  655. package/dist/overlay/toast-context.d.ts +2 -2
  656. package/dist/overlay/tour-context.d.ts +1 -1
  657. package/dist/overlay/tour-types.d.ts +1 -1
  658. package/dist/profiles/connections/connectionBrowserModel.d.ts +1 -1
  659. package/dist/profiles/connections/connectionQueryWorkspace.d.ts +1 -1
  660. package/dist/profiles/editor/profileBuilder.d.ts +1 -1
  661. package/dist/profiles/elasticsearch/esParamOperandExtension.d.ts +1 -1
  662. package/dist/profiles/fields/profileFieldControls.d.ts +1 -1
  663. package/dist/profiles/fields/profileFieldIcons.d.ts +1 -1
  664. package/dist/profiles/fields/profileFieldState.d.ts +1 -1
  665. package/dist/profiles/query/jsonPathSample.d.ts +1 -1
  666. package/dist/profiles/query/jsonPathSampleRow.d.ts +1 -1
  667. package/dist/profiles/query/prometheusResults.d.ts +2 -2
  668. package/dist/rpc/EndpointList.d.ts +1 -1
  669. package/dist/rpc/EntityExplorerApp.d.ts +1 -1
  670. package/dist/rpc/OperationCatalog.d.ts +1 -1
  671. package/dist/rpc/OperationEntityContextPicker.d.ts +1 -1
  672. package/dist/rpc/OperationEntityPage.d.ts +1 -1
  673. package/dist/rpc/OperationResultView.d.ts +1 -1
  674. package/dist/rpc/RouterProvider.d.ts +1 -1
  675. package/dist/rpc/SchemaActionForm.d.ts +1 -1
  676. package/dist/rpc/formMetadata.d.ts +1 -1
  677. package/dist/rpc/router.d.ts +1 -1
  678. package/dist/rpc/rpc-story.fixtures.d.ts +1 -1
  679. package/dist/styles.css +1 -1
  680. package/package.json +21 -2
@@ -0,0 +1,19 @@
1
+ interface GraphPanelProps {
2
+ /** The parsed input document, or undefined when there is nothing to show. */
3
+ document: unknown;
4
+ /** Monaco language id, which decides the syntax a click inserts. */
5
+ languageId: string;
6
+ /** Writes an expression at the source editor's cursor. */
7
+ onInsert: (expression: string) => void;
8
+ }
9
+ /**
10
+ * The shape of the document being evaluated against.
11
+ *
12
+ * The input pane shows the document as text; this shows it as paths. Clicking a
13
+ * row writes that path into the expression, in the syntax of the language being
14
+ * written, which is the step that otherwise means reading YAML and retyping it
15
+ * by hand.
16
+ */
17
+ export declare function GraphPanel({ document, languageId, onInsert, }: GraphPanelProps): import("react").JSX.Element;
18
+ export {};
19
+ //# sourceMappingURL=GraphPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphPanel.d.ts","sourceRoot":"","sources":["../../../../src/expressions/playground/panels/GraphPanel.tsx"],"names":[],"mappings":"AAYA,UAAU,eAAe;IACvB,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,UAAU,EACV,QAAQ,GACT,EAAE,eAAe,+BAyEjB"}
@@ -0,0 +1,72 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useState, useMemo } from "react";
3
+ import { createLazyJSONPathTree, literalSegments } from "../../../components/jsonPathTree.js";
4
+ import { ObjectGraph } from "../../../data/ObjectGraph.js";
5
+ import { toGraphNode } from "./graphNodes.js";
6
+ import { pathExpression } from "../../lang/environment.js";
7
+ function GraphPanel({
8
+ document,
9
+ languageId,
10
+ onInsert
11
+ }) {
12
+ const [selectedId, setSelectedId] = useState();
13
+ const [note, setNote] = useState();
14
+ const tree = useMemo(
15
+ () => document === void 0 || document === null ? null : createLazyJSONPathTree(document, { keyPrefix: "input" }),
16
+ [document]
17
+ );
18
+ const roots = useMemo(
19
+ () => tree ? tree.roots.map(toGraphNode) : [],
20
+ [tree]
21
+ );
22
+ if (!tree) {
23
+ return /* @__PURE__ */ jsx("div", { className: "flex h-full items-center justify-center p-6 text-center text-sm text-muted-foreground", children: "Nothing to show yet — write a YAML or JSON document in the input pane and its shape appears here." });
24
+ }
25
+ const select = (node) => {
26
+ setSelectedId(node.id);
27
+ const segments = node.path ? literalSegments(node.path) : void 0;
28
+ if (!segments) {
29
+ setNote("That row has no addressable path.");
30
+ return;
31
+ }
32
+ const expression = pathExpression(languageId, segments);
33
+ if (expression === null) {
34
+ setNote(
35
+ "A go template reaches a list element or a non-identifier key through `index`, which is a call rather than a path — so there is nothing to insert."
36
+ );
37
+ return;
38
+ }
39
+ if (expression === "") {
40
+ setNote(
41
+ "The whole document has no name in this language — pick a key under it."
42
+ );
43
+ return;
44
+ }
45
+ setNote(void 0);
46
+ onInsert(expression);
47
+ };
48
+ return /* @__PURE__ */ jsxs("div", { className: "flex h-full min-h-0 flex-col", children: [
49
+ /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-auto p-2", children: /* @__PURE__ */ jsx(
50
+ ObjectGraph,
51
+ {
52
+ roots,
53
+ showControls: true,
54
+ defaultOpenDepth: 2,
55
+ ...selectedId ? { selectedId } : {},
56
+ onNodeSelect: select,
57
+ loadChildren: async (node) => {
58
+ var _a;
59
+ const source = (_a = node.metadata) == null ? void 0 : _a.node;
60
+ if (!source) return [];
61
+ return (await tree.loadChildren(source)).map(toGraphNode);
62
+ },
63
+ empty: "The document is empty."
64
+ }
65
+ ) }),
66
+ /* @__PURE__ */ jsx("footer", { className: "shrink-0 border-t border-border px-4 py-2 text-xs text-muted-foreground", children: note ?? "Click a key to insert its path at the cursor." })
67
+ ] });
68
+ }
69
+ export {
70
+ GraphPanel
71
+ };
72
+ //# sourceMappingURL=GraphPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphPanel.js","sources":["../../../../src/expressions/playground/panels/GraphPanel.tsx"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport {\n createLazyJSONPathTree,\n literalSegments,\n type JSONPathNode,\n type LazyJSONPathTree,\n} from \"../../../components/jsonPathTree\";\nimport { ObjectGraph } from \"../../../data/ObjectGraph\";\nimport { pathExpression } from \"../../lang/index.ts\";\nimport { toGraphNode } from \"./graphNodes.ts\";\nimport type { GraphNode } from \"./graphNodes.ts\";\n\ninterface GraphPanelProps {\n /** The parsed input document, or undefined when there is nothing to show. */\n document: unknown;\n /** Monaco language id, which decides the syntax a click inserts. */\n languageId: string;\n /** Writes an expression at the source editor's cursor. */\n onInsert: (expression: string) => void;\n}\n\n/**\n * The shape of the document being evaluated against.\n *\n * The input pane shows the document as text; this shows it as paths. Clicking a\n * row writes that path into the expression, in the syntax of the language being\n * written, which is the step that otherwise means reading YAML and retyping it\n * by hand.\n */\nexport function GraphPanel({\n document,\n languageId,\n onInsert,\n}: GraphPanelProps) {\n const [selectedId, setSelectedId] = useState<string>();\n const [note, setNote] = useState<string>();\n\n const tree = useMemo<LazyJSONPathTree | null>(\n () =>\n document === undefined || document === null\n ? null\n : createLazyJSONPathTree(document, { keyPrefix: \"input\" }),\n [document],\n );\n\n const roots = useMemo(\n () => (tree ? tree.roots.map(toGraphNode) : []),\n [tree],\n );\n\n if (!tree) {\n return (\n <div className=\"flex h-full items-center justify-center p-6 text-center text-sm text-muted-foreground\">\n Nothing to show yet — write a YAML or JSON document in the input pane\n and its shape appears here.\n </div>\n );\n }\n\n const select = (node: GraphNode) => {\n setSelectedId(node.id);\n const segments = node.path ? literalSegments(node.path) : undefined;\n if (!segments) {\n setNote(\"That row has no addressable path.\");\n return;\n }\n const expression = pathExpression(languageId, segments);\n if (expression === null) {\n setNote(\n \"A go template reaches a list element or a non-identifier key through `index`, \" +\n \"which is a call rather than a path — so there is nothing to insert.\",\n );\n return;\n }\n if (expression === \"\") {\n setNote(\n \"The whole document has no name in this language — pick a key under it.\",\n );\n return;\n }\n setNote(undefined);\n onInsert(expression);\n };\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n <div className=\"min-h-0 flex-1 overflow-auto p-2\">\n <ObjectGraph\n roots={roots}\n showControls\n defaultOpenDepth={2}\n {...(selectedId ? { selectedId } : {})}\n onNodeSelect={select}\n loadChildren={async (node) => {\n const source = node.metadata?.node as JSONPathNode | undefined;\n if (!source) return [];\n return (await tree.loadChildren(source)).map(toGraphNode);\n }}\n empty=\"The document is empty.\"\n />\n </div>\n <footer className=\"shrink-0 border-t border-border px-4 py-2 text-xs text-muted-foreground\">\n {note ?? \"Click a key to insert its path at the cursor.\"}\n </footer>\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;AA6BO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AACF,GAAoB;AAClB,QAAM,CAAC,YAAY,aAAa,IAAI,SAAA;AACpC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAA;AAExB,QAAM,OAAO;AAAA,IACX,MACE,aAAa,UAAa,aAAa,OACnC,OACA,uBAAuB,UAAU,EAAE,WAAW,SAAS;AAAA,IAC7D,CAAC,QAAQ;AAAA,EAAA;AAGX,QAAM,QAAQ;AAAA,IACZ,MAAO,OAAO,KAAK,MAAM,IAAI,WAAW,IAAI,CAAA;AAAA,IAC5C,CAAC,IAAI;AAAA,EAAA;AAGP,MAAI,CAAC,MAAM;AACT,WACE,oBAAC,OAAA,EAAI,WAAU,yFAAwF,UAAA,qGAGvG;AAAA,EAEJ;AAEA,QAAM,SAAS,CAAC,SAAoB;AAClC,kBAAc,KAAK,EAAE;AACrB,UAAM,WAAW,KAAK,OAAO,gBAAgB,KAAK,IAAI,IAAI;AAC1D,QAAI,CAAC,UAAU;AACb,cAAQ,mCAAmC;AAC3C;AAAA,IACF;AACA,UAAM,aAAa,eAAe,YAAY,QAAQ;AACtD,QAAI,eAAe,MAAM;AACvB;AAAA,QACE;AAAA,MAAA;AAGF;AAAA,IACF;AACA,QAAI,eAAe,IAAI;AACrB;AAAA,QACE;AAAA,MAAA;AAEF;AAAA,IACF;AACA,YAAQ,MAAS;AACjB,aAAS,UAAU;AAAA,EACrB;AAEA,SACE,qBAAC,OAAA,EAAI,WAAU,gCACb,UAAA;AAAA,IAAA,oBAAC,OAAA,EAAI,WAAU,oCACb,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,cAAY;AAAA,QACZ,kBAAkB;AAAA,QACjB,GAAI,aAAa,EAAE,WAAA,IAAe,CAAA;AAAA,QACnC,cAAc;AAAA,QACd,cAAc,OAAO,SAAS;;AAC5B,gBAAM,UAAS,UAAK,aAAL,mBAAe;AAC9B,cAAI,CAAC,OAAQ,QAAO,CAAA;AACpB,kBAAQ,MAAM,KAAK,aAAa,MAAM,GAAG,IAAI,WAAW;AAAA,QAC1D;AAAA,QACA,OAAM;AAAA,MAAA;AAAA,IAAA,GAEV;AAAA,IACA,oBAAC,UAAA,EAAO,WAAU,2EACf,kBAAQ,gDAAA,CACX;AAAA,EAAA,GACF;AAEJ;"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const button = require("../../../components/button.cjs");
5
+ const Badge = require("../../../data/Badge.cjs");
6
+ const CodeBlock = require("../../../data/CodeBlock.cjs");
7
+ const JsonView = require("../../../data/JsonView.cjs");
8
+ const runShortcut = require("../runShortcut.cjs");
9
+ function ResultPanel({
10
+ response,
11
+ pending,
12
+ stale,
13
+ onRun
14
+ }) {
15
+ if (!response) {
16
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4", children: [
17
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: pending ? "Evaluating…" : "Type an expression, then run it." }),
18
+ stale && !pending ? /* @__PURE__ */ jsxRuntime.jsxs(button.Button, { onClick: onRun, size: "sm", className: "mt-3", children: [
19
+ "Run (",
20
+ runShortcut.RUN_SHORTCUT_LABEL,
21
+ ")"
22
+ ] }) : null
23
+ ] });
24
+ }
25
+ if (response.error) {
26
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-md border border-destructive/40 bg-destructive/5 p-3", children: [
27
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-xs font-medium uppercase tracking-wide text-destructive", children: response.error.line ? `Error at line ${response.error.line}, column ${response.error.column}` : "Error" }),
28
+ /* @__PURE__ */ jsxRuntime.jsx(CodeBlock.CodeBlock, { source: response.error.message, bare: true })
29
+ ] }) });
30
+ }
31
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col", children: [
32
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 border-b border-border px-4 py-2 text-xs text-muted-foreground", children: [
33
+ /* @__PURE__ */ jsxRuntime.jsxs(Badge.Badge, { variant: "outline", children: [
34
+ response.durationMs.toFixed(2),
35
+ " ms"
36
+ ] }),
37
+ response.type ? /* @__PURE__ */ jsxRuntime.jsx(Badge.Badge, { variant: "outline", children: response.type }) : null,
38
+ stale ? /* @__PURE__ */ jsxRuntime.jsx(
39
+ "button",
40
+ {
41
+ type: "button",
42
+ onClick: onRun,
43
+ className: "ml-auto rounded border border-amber-500/40 bg-amber-500/10 px-2 py-0.5 text-amber-700 hover:bg-amber-500/20 dark:text-amber-400",
44
+ title: `Run (${runShortcut.RUN_SHORTCUT_LABEL})`,
45
+ children: "Out of date — run again"
46
+ }
47
+ ) : null
48
+ ] }),
49
+ /* @__PURE__ */ jsxRuntime.jsx(
50
+ "div",
51
+ {
52
+ className: `min-h-0 flex-1 overflow-auto p-4 ${stale ? "opacity-50" : ""}`,
53
+ children: isStructured(response.value) ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
54
+ /* @__PURE__ */ jsxRuntime.jsx(JsonView.JsonView, { data: response.value, defaultOpenDepth: 3 }),
55
+ /* @__PURE__ */ jsxRuntime.jsxs("details", { className: "mt-4", children: [
56
+ /* @__PURE__ */ jsxRuntime.jsx("summary", { className: "cursor-pointer text-xs text-muted-foreground", children: "Rendered string" }),
57
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2", children: /* @__PURE__ */ jsxRuntime.jsx(CodeBlock.CodeBlock, { source: response.result, bare: true, copyable: false }) })
58
+ ] })
59
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(
60
+ CodeBlock.CodeBlock,
61
+ {
62
+ source: response.result || "(empty)",
63
+ language: languageOf(response.result),
64
+ copyable: true
65
+ }
66
+ )
67
+ }
68
+ )
69
+ ] });
70
+ }
71
+ function isStructured(value) {
72
+ return typeof value === "object" && value !== null;
73
+ }
74
+ function languageOf(result) {
75
+ const trimmed = result.trim();
76
+ if (!trimmed) return void 0;
77
+ if (trimmed.startsWith("{") || trimmed.startsWith("[")) return "json";
78
+ if (/^[A-Za-z_][\w.-]*:\s/m.test(trimmed)) return "yaml";
79
+ return void 0;
80
+ }
81
+ exports.ResultPanel = ResultPanel;
82
+ //# sourceMappingURL=ResultPanel.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResultPanel.cjs","sources":["../../../../src/expressions/playground/panels/ResultPanel.tsx"],"sourcesContent":["import { Button } from \"../../../components/button\";\nimport { Badge } from \"../../../data/Badge\";\nimport { CodeBlock } from \"../../../data/CodeBlock\";\nimport { JsonView } from \"../../../data/JsonView\";\nimport type { EvalResponse } from \"../api.ts\";\nimport { RUN_SHORTCUT_LABEL } from \"../runShortcut\";\n\ninterface ResultPanelProps {\n response: EvalResponse | null;\n pending: boolean;\n /** The shown result predates the current source or input. */\n stale: boolean;\n onRun: () => void;\n}\n\nexport function ResultPanel({\n response,\n pending,\n stale,\n onRun,\n}: ResultPanelProps) {\n if (!response) {\n return (\n <div className=\"p-4\">\n <p className=\"text-sm text-muted-foreground\">\n {pending ? \"Evaluating…\" : \"Type an expression, then run it.\"}\n </p>\n {stale && !pending ? (\n <Button onClick={onRun} size=\"sm\" className=\"mt-3\">\n Run ({RUN_SHORTCUT_LABEL})\n </Button>\n ) : null}\n </div>\n );\n }\n\n if (response.error) {\n return (\n <div className=\"p-4\">\n <div className=\"rounded-md border border-destructive/40 bg-destructive/5 p-3\">\n <p className=\"mb-2 text-xs font-medium uppercase tracking-wide text-destructive\">\n {response.error.line\n ? `Error at line ${response.error.line}, column ${response.error.column}`\n : \"Error\"}\n </p>\n <CodeBlock source={response.error.message} bare />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"flex h-full flex-col\">\n <div className=\"flex items-center gap-2 border-b border-border px-4 py-2 text-xs text-muted-foreground\">\n <Badge variant=\"outline\">{response.durationMs.toFixed(2)} ms</Badge>\n {response.type ? (\n <Badge variant=\"outline\">{response.type}</Badge>\n ) : null}\n {/* Without this, a result that no longer matches what is on screen is\n indistinguishable from one that does. */}\n {stale ? (\n <button\n type=\"button\"\n onClick={onRun}\n className=\"ml-auto rounded border border-amber-500/40 bg-amber-500/10 px-2 py-0.5 text-amber-700 hover:bg-amber-500/20 dark:text-amber-400\"\n title={`Run (${RUN_SHORTCUT_LABEL})`}\n >\n Out of date — run again\n </button>\n ) : null}\n </div>\n\n <div\n className={`min-h-0 flex-1 overflow-auto p-4 ${stale ? \"opacity-50\" : \"\"}`}\n >\n {/* The rendered string is what a gomplate caller receives. A structured\n result is more readable as a tree, so hand those to JsonView and\n keep the raw rendering below it. */}\n {isStructured(response.value) ? (\n <>\n <JsonView data={response.value} defaultOpenDepth={3} />\n <details className=\"mt-4\">\n <summary className=\"cursor-pointer text-xs text-muted-foreground\">\n Rendered string\n </summary>\n <div className=\"mt-2\">\n <CodeBlock source={response.result} bare copyable={false} />\n </div>\n </details>\n </>\n ) : (\n <CodeBlock\n source={response.result || \"(empty)\"}\n language={languageOf(response.result)}\n copyable\n />\n )}\n </div>\n </div>\n );\n}\n\nfunction isStructured(value: unknown): boolean {\n return typeof value === \"object\" && value !== null;\n}\n\n/**\n * Templates render whole documents, so highlight the output when it is\n * recognisably YAML or JSON rather than showing a wall of grey.\n */\nfunction languageOf(result: string): string | undefined {\n const trimmed = result.trim();\n if (!trimmed) return undefined;\n if (trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\")) return \"json\";\n if (/^[A-Za-z_][\\w.-]*:\\s/m.test(trimmed)) return \"yaml\";\n return undefined;\n}\n"],"names":["jsxs","jsx","Button","RUN_SHORTCUT_LABEL","CodeBlock","Badge","Fragment","JsonView"],"mappings":";;;;;;;;AAeO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAqB;AACnB,MAAI,CAAC,UAAU;AACb,WACEA,2BAAAA,KAAC,OAAA,EAAI,WAAU,OACb,UAAA;AAAA,MAAAC,+BAAC,KAAA,EAAE,WAAU,iCACV,UAAA,UAAU,gBAAgB,oCAC7B;AAAA,MACC,SAAS,CAAC,UACTD,2BAAAA,KAACE,OAAAA,QAAA,EAAO,SAAS,OAAO,MAAK,MAAK,WAAU,QAAO,UAAA;AAAA,QAAA;AAAA,QAC3CC,YAAAA;AAAAA,QAAmB;AAAA,MAAA,EAAA,CAC3B,IACE;AAAA,IAAA,GACN;AAAA,EAEJ;AAEA,MAAI,SAAS,OAAO;AAClB,0CACG,OAAA,EAAI,WAAU,OACb,UAAAH,2BAAAA,KAAC,OAAA,EAAI,WAAU,gEACb,UAAA;AAAA,MAAAC,+BAAC,KAAA,EAAE,WAAU,qEACV,UAAA,SAAS,MAAM,OACZ,iBAAiB,SAAS,MAAM,IAAI,YAAY,SAAS,MAAM,MAAM,KACrE,SACN;AAAA,qCACCG,UAAAA,WAAA,EAAU,QAAQ,SAAS,MAAM,SAAS,MAAI,KAAA,CAAC;AAAA,IAAA,EAAA,CAClD,EAAA,CACF;AAAA,EAEJ;AAEA,SACEJ,2BAAAA,KAAC,OAAA,EAAI,WAAU,wBACb,UAAA;AAAA,IAAAA,2BAAAA,KAAC,OAAA,EAAI,WAAU,0FACb,UAAA;AAAA,MAAAA,2BAAAA,KAACK,MAAAA,OAAA,EAAM,SAAQ,WAAW,UAAA;AAAA,QAAA,SAAS,WAAW,QAAQ,CAAC;AAAA,QAAE;AAAA,MAAA,GAAG;AAAA,MAC3D,SAAS,OACRJ,+BAACI,MAAAA,OAAA,EAAM,SAAQ,WAAW,UAAA,SAAS,MAAK,IACtC;AAAA,MAGH,QACCJ,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS;AAAA,UACT,WAAU;AAAA,UACV,OAAO,QAAQE,YAAAA,kBAAkB;AAAA,UAClC,UAAA;AAAA,QAAA;AAAA,MAAA,IAGC;AAAA,IAAA,GACN;AAAA,IAEAF,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW,oCAAoC,QAAQ,eAAe,EAAE;AAAA,QAKvE,UAAA,aAAa,SAAS,KAAK,IAC1BD,gCAAAM,WAAAA,UAAA,EACE,UAAA;AAAA,UAAAL,2BAAAA,IAACM,SAAAA,UAAA,EAAS,MAAM,SAAS,OAAO,kBAAkB,GAAG;AAAA,UACrDP,2BAAAA,KAAC,WAAA,EAAQ,WAAU,QACjB,UAAA;AAAA,YAAAC,2BAAAA,IAAC,WAAA,EAAQ,WAAU,gDAA+C,UAAA,mBAElE;AAAA,YACAA,2BAAAA,IAAC,OAAA,EAAI,WAAU,QACb,UAAAA,2BAAAA,IAACG,UAAAA,WAAA,EAAU,QAAQ,SAAS,QAAQ,MAAI,MAAC,UAAU,OAAO,EAAA,CAC5D;AAAA,UAAA,EAAA,CACF;AAAA,QAAA,EAAA,CACF,IAEAH,2BAAAA;AAAAA,UAACG,UAAAA;AAAAA,UAAA;AAAA,YACC,QAAQ,SAAS,UAAU;AAAA,YAC3B,UAAU,WAAW,SAAS,MAAM;AAAA,YACpC,UAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,MACV;AAAA,IAAA;AAAA,EAEJ,GACF;AAEJ;AAEA,SAAS,aAAa,OAAyB;AAC7C,SAAO,OAAO,UAAU,YAAY,UAAU;AAChD;AAMA,SAAS,WAAW,QAAoC;AACtD,QAAM,UAAU,OAAO,KAAA;AACvB,MAAI,CAAC,QAAS,QAAO;AACrB,MAAI,QAAQ,WAAW,GAAG,KAAK,QAAQ,WAAW,GAAG,EAAG,QAAO;AAC/D,MAAI,wBAAwB,KAAK,OAAO,EAAG,QAAO;AAClD,SAAO;AACT;;"}
@@ -0,0 +1,11 @@
1
+ import { EvalResponse } from '../api.ts';
2
+ interface ResultPanelProps {
3
+ response: EvalResponse | null;
4
+ pending: boolean;
5
+ /** The shown result predates the current source or input. */
6
+ stale: boolean;
7
+ onRun: () => void;
8
+ }
9
+ export declare function ResultPanel({ response, pending, stale, onRun, }: ResultPanelProps): import("react").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=ResultPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResultPanel.d.ts","sourceRoot":"","sources":["../../../../src/expressions/playground/panels/ResultPanel.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAG9C,UAAU,gBAAgB;IACxB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,6DAA6D;IAC7D,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,OAAO,EACP,KAAK,EACL,KAAK,GACN,EAAE,gBAAgB,+BAgFlB"}
@@ -0,0 +1,82 @@
1
+ import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
+ import { Button } from "../../../components/button.js";
3
+ import { Badge } from "../../../data/Badge.js";
4
+ import { CodeBlock } from "../../../data/CodeBlock.js";
5
+ import { JsonView } from "../../../data/JsonView.js";
6
+ import { RUN_SHORTCUT_LABEL } from "../runShortcut.js";
7
+ function ResultPanel({
8
+ response,
9
+ pending,
10
+ stale,
11
+ onRun
12
+ }) {
13
+ if (!response) {
14
+ return /* @__PURE__ */ jsxs("div", { className: "p-4", children: [
15
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: pending ? "Evaluating…" : "Type an expression, then run it." }),
16
+ stale && !pending ? /* @__PURE__ */ jsxs(Button, { onClick: onRun, size: "sm", className: "mt-3", children: [
17
+ "Run (",
18
+ RUN_SHORTCUT_LABEL,
19
+ ")"
20
+ ] }) : null
21
+ ] });
22
+ }
23
+ if (response.error) {
24
+ return /* @__PURE__ */ jsx("div", { className: "p-4", children: /* @__PURE__ */ jsxs("div", { className: "rounded-md border border-destructive/40 bg-destructive/5 p-3", children: [
25
+ /* @__PURE__ */ jsx("p", { className: "mb-2 text-xs font-medium uppercase tracking-wide text-destructive", children: response.error.line ? `Error at line ${response.error.line}, column ${response.error.column}` : "Error" }),
26
+ /* @__PURE__ */ jsx(CodeBlock, { source: response.error.message, bare: true })
27
+ ] }) });
28
+ }
29
+ return /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col", children: [
30
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 border-b border-border px-4 py-2 text-xs text-muted-foreground", children: [
31
+ /* @__PURE__ */ jsxs(Badge, { variant: "outline", children: [
32
+ response.durationMs.toFixed(2),
33
+ " ms"
34
+ ] }),
35
+ response.type ? /* @__PURE__ */ jsx(Badge, { variant: "outline", children: response.type }) : null,
36
+ stale ? /* @__PURE__ */ jsx(
37
+ "button",
38
+ {
39
+ type: "button",
40
+ onClick: onRun,
41
+ className: "ml-auto rounded border border-amber-500/40 bg-amber-500/10 px-2 py-0.5 text-amber-700 hover:bg-amber-500/20 dark:text-amber-400",
42
+ title: `Run (${RUN_SHORTCUT_LABEL})`,
43
+ children: "Out of date — run again"
44
+ }
45
+ ) : null
46
+ ] }),
47
+ /* @__PURE__ */ jsx(
48
+ "div",
49
+ {
50
+ className: `min-h-0 flex-1 overflow-auto p-4 ${stale ? "opacity-50" : ""}`,
51
+ children: isStructured(response.value) ? /* @__PURE__ */ jsxs(Fragment, { children: [
52
+ /* @__PURE__ */ jsx(JsonView, { data: response.value, defaultOpenDepth: 3 }),
53
+ /* @__PURE__ */ jsxs("details", { className: "mt-4", children: [
54
+ /* @__PURE__ */ jsx("summary", { className: "cursor-pointer text-xs text-muted-foreground", children: "Rendered string" }),
55
+ /* @__PURE__ */ jsx("div", { className: "mt-2", children: /* @__PURE__ */ jsx(CodeBlock, { source: response.result, bare: true, copyable: false }) })
56
+ ] })
57
+ ] }) : /* @__PURE__ */ jsx(
58
+ CodeBlock,
59
+ {
60
+ source: response.result || "(empty)",
61
+ language: languageOf(response.result),
62
+ copyable: true
63
+ }
64
+ )
65
+ }
66
+ )
67
+ ] });
68
+ }
69
+ function isStructured(value) {
70
+ return typeof value === "object" && value !== null;
71
+ }
72
+ function languageOf(result) {
73
+ const trimmed = result.trim();
74
+ if (!trimmed) return void 0;
75
+ if (trimmed.startsWith("{") || trimmed.startsWith("[")) return "json";
76
+ if (/^[A-Za-z_][\w.-]*:\s/m.test(trimmed)) return "yaml";
77
+ return void 0;
78
+ }
79
+ export {
80
+ ResultPanel
81
+ };
82
+ //# sourceMappingURL=ResultPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResultPanel.js","sources":["../../../../src/expressions/playground/panels/ResultPanel.tsx"],"sourcesContent":["import { Button } from \"../../../components/button\";\nimport { Badge } from \"../../../data/Badge\";\nimport { CodeBlock } from \"../../../data/CodeBlock\";\nimport { JsonView } from \"../../../data/JsonView\";\nimport type { EvalResponse } from \"../api.ts\";\nimport { RUN_SHORTCUT_LABEL } from \"../runShortcut\";\n\ninterface ResultPanelProps {\n response: EvalResponse | null;\n pending: boolean;\n /** The shown result predates the current source or input. */\n stale: boolean;\n onRun: () => void;\n}\n\nexport function ResultPanel({\n response,\n pending,\n stale,\n onRun,\n}: ResultPanelProps) {\n if (!response) {\n return (\n <div className=\"p-4\">\n <p className=\"text-sm text-muted-foreground\">\n {pending ? \"Evaluating…\" : \"Type an expression, then run it.\"}\n </p>\n {stale && !pending ? (\n <Button onClick={onRun} size=\"sm\" className=\"mt-3\">\n Run ({RUN_SHORTCUT_LABEL})\n </Button>\n ) : null}\n </div>\n );\n }\n\n if (response.error) {\n return (\n <div className=\"p-4\">\n <div className=\"rounded-md border border-destructive/40 bg-destructive/5 p-3\">\n <p className=\"mb-2 text-xs font-medium uppercase tracking-wide text-destructive\">\n {response.error.line\n ? `Error at line ${response.error.line}, column ${response.error.column}`\n : \"Error\"}\n </p>\n <CodeBlock source={response.error.message} bare />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"flex h-full flex-col\">\n <div className=\"flex items-center gap-2 border-b border-border px-4 py-2 text-xs text-muted-foreground\">\n <Badge variant=\"outline\">{response.durationMs.toFixed(2)} ms</Badge>\n {response.type ? (\n <Badge variant=\"outline\">{response.type}</Badge>\n ) : null}\n {/* Without this, a result that no longer matches what is on screen is\n indistinguishable from one that does. */}\n {stale ? (\n <button\n type=\"button\"\n onClick={onRun}\n className=\"ml-auto rounded border border-amber-500/40 bg-amber-500/10 px-2 py-0.5 text-amber-700 hover:bg-amber-500/20 dark:text-amber-400\"\n title={`Run (${RUN_SHORTCUT_LABEL})`}\n >\n Out of date — run again\n </button>\n ) : null}\n </div>\n\n <div\n className={`min-h-0 flex-1 overflow-auto p-4 ${stale ? \"opacity-50\" : \"\"}`}\n >\n {/* The rendered string is what a gomplate caller receives. A structured\n result is more readable as a tree, so hand those to JsonView and\n keep the raw rendering below it. */}\n {isStructured(response.value) ? (\n <>\n <JsonView data={response.value} defaultOpenDepth={3} />\n <details className=\"mt-4\">\n <summary className=\"cursor-pointer text-xs text-muted-foreground\">\n Rendered string\n </summary>\n <div className=\"mt-2\">\n <CodeBlock source={response.result} bare copyable={false} />\n </div>\n </details>\n </>\n ) : (\n <CodeBlock\n source={response.result || \"(empty)\"}\n language={languageOf(response.result)}\n copyable\n />\n )}\n </div>\n </div>\n );\n}\n\nfunction isStructured(value: unknown): boolean {\n return typeof value === \"object\" && value !== null;\n}\n\n/**\n * Templates render whole documents, so highlight the output when it is\n * recognisably YAML or JSON rather than showing a wall of grey.\n */\nfunction languageOf(result: string): string | undefined {\n const trimmed = result.trim();\n if (!trimmed) return undefined;\n if (trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\")) return \"json\";\n if (/^[A-Za-z_][\\w.-]*:\\s/m.test(trimmed)) return \"yaml\";\n return undefined;\n}\n"],"names":[],"mappings":";;;;;;AAeO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAqB;AACnB,MAAI,CAAC,UAAU;AACb,WACE,qBAAC,OAAA,EAAI,WAAU,OACb,UAAA;AAAA,MAAA,oBAAC,KAAA,EAAE,WAAU,iCACV,UAAA,UAAU,gBAAgB,oCAC7B;AAAA,MACC,SAAS,CAAC,UACT,qBAAC,QAAA,EAAO,SAAS,OAAO,MAAK,MAAK,WAAU,QAAO,UAAA;AAAA,QAAA;AAAA,QAC3C;AAAA,QAAmB;AAAA,MAAA,EAAA,CAC3B,IACE;AAAA,IAAA,GACN;AAAA,EAEJ;AAEA,MAAI,SAAS,OAAO;AAClB,+BACG,OAAA,EAAI,WAAU,OACb,UAAA,qBAAC,OAAA,EAAI,WAAU,gEACb,UAAA;AAAA,MAAA,oBAAC,KAAA,EAAE,WAAU,qEACV,UAAA,SAAS,MAAM,OACZ,iBAAiB,SAAS,MAAM,IAAI,YAAY,SAAS,MAAM,MAAM,KACrE,SACN;AAAA,0BACC,WAAA,EAAU,QAAQ,SAAS,MAAM,SAAS,MAAI,KAAA,CAAC;AAAA,IAAA,EAAA,CAClD,EAAA,CACF;AAAA,EAEJ;AAEA,SACE,qBAAC,OAAA,EAAI,WAAU,wBACb,UAAA;AAAA,IAAA,qBAAC,OAAA,EAAI,WAAU,0FACb,UAAA;AAAA,MAAA,qBAAC,OAAA,EAAM,SAAQ,WAAW,UAAA;AAAA,QAAA,SAAS,WAAW,QAAQ,CAAC;AAAA,QAAE;AAAA,MAAA,GAAG;AAAA,MAC3D,SAAS,OACR,oBAAC,OAAA,EAAM,SAAQ,WAAW,UAAA,SAAS,MAAK,IACtC;AAAA,MAGH,QACC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS;AAAA,UACT,WAAU;AAAA,UACV,OAAO,QAAQ,kBAAkB;AAAA,UAClC,UAAA;AAAA,QAAA;AAAA,MAAA,IAGC;AAAA,IAAA,GACN;AAAA,IAEA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW,oCAAoC,QAAQ,eAAe,EAAE;AAAA,QAKvE,UAAA,aAAa,SAAS,KAAK,IAC1B,qBAAA,UAAA,EACE,UAAA;AAAA,UAAA,oBAAC,UAAA,EAAS,MAAM,SAAS,OAAO,kBAAkB,GAAG;AAAA,UACrD,qBAAC,WAAA,EAAQ,WAAU,QACjB,UAAA;AAAA,YAAA,oBAAC,WAAA,EAAQ,WAAU,gDAA+C,UAAA,mBAElE;AAAA,YACA,oBAAC,OAAA,EAAI,WAAU,QACb,UAAA,oBAAC,WAAA,EAAU,QAAQ,SAAS,QAAQ,MAAI,MAAC,UAAU,OAAO,EAAA,CAC5D;AAAA,UAAA,EAAA,CACF;AAAA,QAAA,EAAA,CACF,IAEA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,QAAQ,SAAS,UAAU;AAAA,YAC3B,UAAU,WAAW,SAAS,MAAM;AAAA,YACpC,UAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,MACV;AAAA,IAAA;AAAA,EAEJ,GACF;AAEJ;AAEA,SAAS,aAAa,OAAyB;AAC7C,SAAO,OAAO,UAAU,YAAY,UAAU;AAChD;AAMA,SAAS,WAAW,QAAoC;AACtD,QAAM,UAAU,OAAO,KAAA;AACvB,MAAI,CAAC,QAAS,QAAO;AACrB,MAAI,QAAQ,WAAW,GAAG,KAAK,QAAQ,WAAW,GAAG,EAAG,QAAO;AAC/D,MAAI,wBAAwB,KAAK,OAAO,EAAG,QAAO;AAClD,SAAO;AACT;"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("react");
5
+ const Badge = require("../../../data/Badge.cjs");
6
+ const DataTable = require("../../../data/DataTable.cjs");
7
+ function SpecPanel({ flavour, spec }) {
8
+ const rows = react.useMemo(() => {
9
+ const functions = flavour === "cel" ? spec.cel.functions : spec.gotemplate.functions;
10
+ return functions.map(toRow);
11
+ }, [flavour, spec]);
12
+ const columns = [
13
+ {
14
+ key: "name",
15
+ label: "Name",
16
+ sortable: true,
17
+ grow: true,
18
+ cellClassName: "font-mono"
19
+ },
20
+ {
21
+ key: "namespace",
22
+ label: "Namespace",
23
+ sortable: true,
24
+ filterable: true,
25
+ shrink: true,
26
+ render: (value) => value ? String(value) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "—" })
27
+ },
28
+ {
29
+ key: "kind",
30
+ label: "Call",
31
+ filterable: true,
32
+ shrink: true,
33
+ // `x.sum()` is legal where a bare `sum(x)` is not, and nothing else in
34
+ // the catalogue records that -- so it is worth a column of its own.
35
+ render: (value) => value === "member" ? /* @__PURE__ */ jsxRuntime.jsx(Badge.Badge, { variant: "outline", children: "member only" }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "global" })
36
+ },
37
+ {
38
+ key: "signature",
39
+ label: "Signature",
40
+ grow: true,
41
+ cellClassName: "font-mono text-muted-foreground"
42
+ },
43
+ { key: "doc", label: "Description", grow: true }
44
+ ];
45
+ return /* @__PURE__ */ jsxRuntime.jsx(
46
+ DataTable.DataTable,
47
+ {
48
+ data: rows,
49
+ columns,
50
+ autoFilter: true,
51
+ showGlobalFilter: true,
52
+ globalFilterPlaceholder: "Filter functions…",
53
+ defaultSort: { key: "name", dir: "asc" },
54
+ emptyMessage: "No functions in this catalogue.",
55
+ className: "h-full"
56
+ }
57
+ );
58
+ }
59
+ function toRow(fn) {
60
+ return {
61
+ name: fn.name,
62
+ namespace: fn.namespace ?? "",
63
+ signature: signatureOf(fn),
64
+ kind: fn.memberOnly ? "member" : "global",
65
+ doc: fn.doc ?? ""
66
+ };
67
+ }
68
+ function signatureOf(fn) {
69
+ if (fn.signature) return fn.signature;
70
+ const [overload] = fn.overloads ?? [];
71
+ if (!overload) return "";
72
+ const args = overload.member ? overload.args.slice(1) : overload.args;
73
+ return `(${args.join(", ")}) -> ${overload.result}`;
74
+ }
75
+ exports.SpecPanel = SpecPanel;
76
+ //# sourceMappingURL=SpecPanel.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpecPanel.cjs","sources":["../../../../src/expressions/playground/panels/SpecPanel.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { Badge } from \"../../../data/Badge\";\nimport { DataTable, type DataTableColumn } from \"../../../data/DataTable\";\nimport type { GomplateSpec, SpecFunction } from \"../../lang/index.ts\";\n\ninterface SpecPanelProps {\n /** Which catalogue to browse. */\n flavour: \"cel\" | \"gotemplate\";\n /** The catalogue itself — the server's when it has one, gomplate's otherwise. */\n spec: GomplateSpec;\n}\n\ninterface FunctionRow extends Record<string, unknown> {\n name: string;\n namespace: string;\n signature: string;\n kind: string;\n doc: string;\n}\n\n/**\n * Browses the generated function catalogue.\n *\n * This is the first accurate reference that exists for this fork: CEL.md\n * documents functions that live in `duty` and omits whole namespaces, while\n * docs-src carries the upstream list. What is shown here is read out of the\n * live registries, so it is what the evaluator will actually accept.\n */\nexport function SpecPanel({ flavour, spec }: SpecPanelProps) {\n const rows = useMemo(() => {\n const functions =\n flavour === \"cel\" ? spec.cel.functions : spec.gotemplate.functions;\n return functions.map(toRow);\n }, [flavour, spec]);\n\n const columns: DataTableColumn<FunctionRow>[] = [\n {\n key: \"name\",\n label: \"Name\",\n sortable: true,\n grow: true,\n cellClassName: \"font-mono\",\n },\n {\n key: \"namespace\",\n label: \"Namespace\",\n sortable: true,\n filterable: true,\n shrink: true,\n render: (value) =>\n value ? (\n String(value)\n ) : (\n <span className=\"text-muted-foreground\">—</span>\n ),\n },\n {\n key: \"kind\",\n label: \"Call\",\n filterable: true,\n shrink: true,\n // `x.sum()` is legal where a bare `sum(x)` is not, and nothing else in\n // the catalogue records that -- so it is worth a column of its own.\n render: (value) =>\n value === \"member\" ? (\n <Badge variant=\"outline\">member only</Badge>\n ) : (\n <span className=\"text-muted-foreground\">global</span>\n ),\n },\n {\n key: \"signature\",\n label: \"Signature\",\n grow: true,\n cellClassName: \"font-mono text-muted-foreground\",\n },\n { key: \"doc\", label: \"Description\", grow: true },\n ];\n\n return (\n <DataTable\n data={rows}\n columns={columns}\n autoFilter\n showGlobalFilter\n globalFilterPlaceholder=\"Filter functions…\"\n defaultSort={{ key: \"name\", dir: \"asc\" }}\n emptyMessage=\"No functions in this catalogue.\"\n className=\"h-full\"\n />\n );\n}\n\nfunction toRow(fn: SpecFunction): FunctionRow {\n return {\n name: fn.name,\n namespace: fn.namespace ?? \"\",\n signature: signatureOf(fn),\n kind: fn.memberOnly ? \"member\" : \"global\",\n doc: fn.doc ?? \"\",\n };\n}\n\nfunction signatureOf(fn: SpecFunction): string {\n if (fn.signature) return fn.signature;\n\n const [overload] = fn.overloads ?? [];\n if (!overload) return \"\";\n\n // A member overload carries its receiver as the first argument; an author\n // writes it before the dot, not inside the parentheses.\n const args = overload.member ? overload.args.slice(1) : overload.args;\n return `(${args.join(\", \")}) -> ${overload.result}`;\n}\n"],"names":["useMemo","jsx","Badge","DataTable"],"mappings":";;;;;;AA4BO,SAAS,UAAU,EAAE,SAAS,QAAwB;AAC3D,QAAM,OAAOA,MAAAA,QAAQ,MAAM;AACzB,UAAM,YACJ,YAAY,QAAQ,KAAK,IAAI,YAAY,KAAK,WAAW;AAC3D,WAAO,UAAU,IAAI,KAAK;AAAA,EAC5B,GAAG,CAAC,SAAS,IAAI,CAAC;AAElB,QAAM,UAA0C;AAAA,IAC9C;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,MAAM;AAAA,MACN,eAAe;AAAA,IAAA;AAAA,IAEjB;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,QAAQ,CAAC,UACP,QACE,OAAO,KAAK,IAEZC,+BAAC,QAAA,EAAK,WAAU,yBAAwB,UAAA,IAAA,CAAC;AAAA,IAAA;AAAA,IAG/C;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,QAAQ;AAAA;AAAA;AAAA,MAGR,QAAQ,CAAC,UACP,UAAU,WACRA,2BAAAA,IAACC,MAAAA,OAAA,EAAM,SAAQ,WAAU,yBAAW,IAEpCD,2BAAAA,IAAC,QAAA,EAAK,WAAU,yBAAwB,UAAA,SAAA,CAAM;AAAA,IAAA;AAAA,IAGpD;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,eAAe;AAAA,IAAA;AAAA,IAEjB,EAAE,KAAK,OAAO,OAAO,eAAe,MAAM,KAAA;AAAA,EAAK;AAGjD,SACEA,2BAAAA;AAAAA,IAACE,UAAAA;AAAAA,IAAA;AAAA,MACC,MAAM;AAAA,MACN;AAAA,MACA,YAAU;AAAA,MACV,kBAAgB;AAAA,MAChB,yBAAwB;AAAA,MACxB,aAAa,EAAE,KAAK,QAAQ,KAAK,MAAA;AAAA,MACjC,cAAa;AAAA,MACb,WAAU;AAAA,IAAA;AAAA,EAAA;AAGhB;AAEA,SAAS,MAAM,IAA+B;AAC5C,SAAO;AAAA,IACL,MAAM,GAAG;AAAA,IACT,WAAW,GAAG,aAAa;AAAA,IAC3B,WAAW,YAAY,EAAE;AAAA,IACzB,MAAM,GAAG,aAAa,WAAW;AAAA,IACjC,KAAK,GAAG,OAAO;AAAA,EAAA;AAEnB;AAEA,SAAS,YAAY,IAA0B;AAC7C,MAAI,GAAG,UAAW,QAAO,GAAG;AAE5B,QAAM,CAAC,QAAQ,IAAI,GAAG,aAAa,CAAA;AACnC,MAAI,CAAC,SAAU,QAAO;AAItB,QAAM,OAAO,SAAS,SAAS,SAAS,KAAK,MAAM,CAAC,IAAI,SAAS;AACjE,SAAO,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,SAAS,MAAM;AACnD;;"}
@@ -0,0 +1,18 @@
1
+ import { GomplateSpec } from '../../lang/index.ts';
2
+ interface SpecPanelProps {
3
+ /** Which catalogue to browse. */
4
+ flavour: "cel" | "gotemplate";
5
+ /** The catalogue itself — the server's when it has one, gomplate's otherwise. */
6
+ spec: GomplateSpec;
7
+ }
8
+ /**
9
+ * Browses the generated function catalogue.
10
+ *
11
+ * This is the first accurate reference that exists for this fork: CEL.md
12
+ * documents functions that live in `duty` and omits whole namespaces, while
13
+ * docs-src carries the upstream list. What is shown here is read out of the
14
+ * live registries, so it is what the evaluator will actually accept.
15
+ */
16
+ export declare function SpecPanel({ flavour, spec }: SpecPanelProps): import("react").JSX.Element;
17
+ export {};
18
+ //# sourceMappingURL=SpecPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpecPanel.d.ts","sourceRoot":"","sources":["../../../../src/expressions/playground/panels/SpecPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,qBAAqB,CAAC;AAEtE,UAAU,cAAc;IACtB,iCAAiC;IACjC,OAAO,EAAE,KAAK,GAAG,YAAY,CAAC;IAC9B,iFAAiF;IACjF,IAAI,EAAE,YAAY,CAAC;CACpB;AAUD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,cAAc,+BA+D1D"}
@@ -0,0 +1,76 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useMemo } from "react";
3
+ import { Badge } from "../../../data/Badge.js";
4
+ import { DataTable } from "../../../data/DataTable.js";
5
+ function SpecPanel({ flavour, spec }) {
6
+ const rows = useMemo(() => {
7
+ const functions = flavour === "cel" ? spec.cel.functions : spec.gotemplate.functions;
8
+ return functions.map(toRow);
9
+ }, [flavour, spec]);
10
+ const columns = [
11
+ {
12
+ key: "name",
13
+ label: "Name",
14
+ sortable: true,
15
+ grow: true,
16
+ cellClassName: "font-mono"
17
+ },
18
+ {
19
+ key: "namespace",
20
+ label: "Namespace",
21
+ sortable: true,
22
+ filterable: true,
23
+ shrink: true,
24
+ render: (value) => value ? String(value) : /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "—" })
25
+ },
26
+ {
27
+ key: "kind",
28
+ label: "Call",
29
+ filterable: true,
30
+ shrink: true,
31
+ // `x.sum()` is legal where a bare `sum(x)` is not, and nothing else in
32
+ // the catalogue records that -- so it is worth a column of its own.
33
+ render: (value) => value === "member" ? /* @__PURE__ */ jsx(Badge, { variant: "outline", children: "member only" }) : /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "global" })
34
+ },
35
+ {
36
+ key: "signature",
37
+ label: "Signature",
38
+ grow: true,
39
+ cellClassName: "font-mono text-muted-foreground"
40
+ },
41
+ { key: "doc", label: "Description", grow: true }
42
+ ];
43
+ return /* @__PURE__ */ jsx(
44
+ DataTable,
45
+ {
46
+ data: rows,
47
+ columns,
48
+ autoFilter: true,
49
+ showGlobalFilter: true,
50
+ globalFilterPlaceholder: "Filter functions…",
51
+ defaultSort: { key: "name", dir: "asc" },
52
+ emptyMessage: "No functions in this catalogue.",
53
+ className: "h-full"
54
+ }
55
+ );
56
+ }
57
+ function toRow(fn) {
58
+ return {
59
+ name: fn.name,
60
+ namespace: fn.namespace ?? "",
61
+ signature: signatureOf(fn),
62
+ kind: fn.memberOnly ? "member" : "global",
63
+ doc: fn.doc ?? ""
64
+ };
65
+ }
66
+ function signatureOf(fn) {
67
+ if (fn.signature) return fn.signature;
68
+ const [overload] = fn.overloads ?? [];
69
+ if (!overload) return "";
70
+ const args = overload.member ? overload.args.slice(1) : overload.args;
71
+ return `(${args.join(", ")}) -> ${overload.result}`;
72
+ }
73
+ export {
74
+ SpecPanel
75
+ };
76
+ //# sourceMappingURL=SpecPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpecPanel.js","sources":["../../../../src/expressions/playground/panels/SpecPanel.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { Badge } from \"../../../data/Badge\";\nimport { DataTable, type DataTableColumn } from \"../../../data/DataTable\";\nimport type { GomplateSpec, SpecFunction } from \"../../lang/index.ts\";\n\ninterface SpecPanelProps {\n /** Which catalogue to browse. */\n flavour: \"cel\" | \"gotemplate\";\n /** The catalogue itself — the server's when it has one, gomplate's otherwise. */\n spec: GomplateSpec;\n}\n\ninterface FunctionRow extends Record<string, unknown> {\n name: string;\n namespace: string;\n signature: string;\n kind: string;\n doc: string;\n}\n\n/**\n * Browses the generated function catalogue.\n *\n * This is the first accurate reference that exists for this fork: CEL.md\n * documents functions that live in `duty` and omits whole namespaces, while\n * docs-src carries the upstream list. What is shown here is read out of the\n * live registries, so it is what the evaluator will actually accept.\n */\nexport function SpecPanel({ flavour, spec }: SpecPanelProps) {\n const rows = useMemo(() => {\n const functions =\n flavour === \"cel\" ? spec.cel.functions : spec.gotemplate.functions;\n return functions.map(toRow);\n }, [flavour, spec]);\n\n const columns: DataTableColumn<FunctionRow>[] = [\n {\n key: \"name\",\n label: \"Name\",\n sortable: true,\n grow: true,\n cellClassName: \"font-mono\",\n },\n {\n key: \"namespace\",\n label: \"Namespace\",\n sortable: true,\n filterable: true,\n shrink: true,\n render: (value) =>\n value ? (\n String(value)\n ) : (\n <span className=\"text-muted-foreground\">—</span>\n ),\n },\n {\n key: \"kind\",\n label: \"Call\",\n filterable: true,\n shrink: true,\n // `x.sum()` is legal where a bare `sum(x)` is not, and nothing else in\n // the catalogue records that -- so it is worth a column of its own.\n render: (value) =>\n value === \"member\" ? (\n <Badge variant=\"outline\">member only</Badge>\n ) : (\n <span className=\"text-muted-foreground\">global</span>\n ),\n },\n {\n key: \"signature\",\n label: \"Signature\",\n grow: true,\n cellClassName: \"font-mono text-muted-foreground\",\n },\n { key: \"doc\", label: \"Description\", grow: true },\n ];\n\n return (\n <DataTable\n data={rows}\n columns={columns}\n autoFilter\n showGlobalFilter\n globalFilterPlaceholder=\"Filter functions…\"\n defaultSort={{ key: \"name\", dir: \"asc\" }}\n emptyMessage=\"No functions in this catalogue.\"\n className=\"h-full\"\n />\n );\n}\n\nfunction toRow(fn: SpecFunction): FunctionRow {\n return {\n name: fn.name,\n namespace: fn.namespace ?? \"\",\n signature: signatureOf(fn),\n kind: fn.memberOnly ? \"member\" : \"global\",\n doc: fn.doc ?? \"\",\n };\n}\n\nfunction signatureOf(fn: SpecFunction): string {\n if (fn.signature) return fn.signature;\n\n const [overload] = fn.overloads ?? [];\n if (!overload) return \"\";\n\n // A member overload carries its receiver as the first argument; an author\n // writes it before the dot, not inside the parentheses.\n const args = overload.member ? overload.args.slice(1) : overload.args;\n return `(${args.join(\", \")}) -> ${overload.result}`;\n}\n"],"names":[],"mappings":";;;;AA4BO,SAAS,UAAU,EAAE,SAAS,QAAwB;AAC3D,QAAM,OAAO,QAAQ,MAAM;AACzB,UAAM,YACJ,YAAY,QAAQ,KAAK,IAAI,YAAY,KAAK,WAAW;AAC3D,WAAO,UAAU,IAAI,KAAK;AAAA,EAC5B,GAAG,CAAC,SAAS,IAAI,CAAC;AAElB,QAAM,UAA0C;AAAA,IAC9C;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,MAAM;AAAA,MACN,eAAe;AAAA,IAAA;AAAA,IAEjB;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,QAAQ,CAAC,UACP,QACE,OAAO,KAAK,IAEZ,oBAAC,QAAA,EAAK,WAAU,yBAAwB,UAAA,IAAA,CAAC;AAAA,IAAA;AAAA,IAG/C;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,QAAQ;AAAA;AAAA;AAAA,MAGR,QAAQ,CAAC,UACP,UAAU,WACR,oBAAC,OAAA,EAAM,SAAQ,WAAU,yBAAW,IAEpC,oBAAC,QAAA,EAAK,WAAU,yBAAwB,UAAA,SAAA,CAAM;AAAA,IAAA;AAAA,IAGpD;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,eAAe;AAAA,IAAA;AAAA,IAEjB,EAAE,KAAK,OAAO,OAAO,eAAe,MAAM,KAAA;AAAA,EAAK;AAGjD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAM;AAAA,MACN;AAAA,MACA,YAAU;AAAA,MACV,kBAAgB;AAAA,MAChB,yBAAwB;AAAA,MACxB,aAAa,EAAE,KAAK,QAAQ,KAAK,MAAA;AAAA,MACjC,cAAa;AAAA,MACb,WAAU;AAAA,IAAA;AAAA,EAAA;AAGhB;AAEA,SAAS,MAAM,IAA+B;AAC5C,SAAO;AAAA,IACL,MAAM,GAAG;AAAA,IACT,WAAW,GAAG,aAAa;AAAA,IAC3B,WAAW,YAAY,EAAE;AAAA,IACzB,MAAM,GAAG,aAAa,WAAW;AAAA,IACjC,KAAK,GAAG,OAAO;AAAA,EAAA;AAEnB;AAEA,SAAS,YAAY,IAA0B;AAC7C,MAAI,GAAG,UAAW,QAAO,GAAG;AAE5B,QAAM,CAAC,QAAQ,IAAI,GAAG,aAAa,CAAA;AACnC,MAAI,CAAC,SAAU,QAAO;AAItB,QAAM,OAAO,SAAS,SAAS,SAAS,KAAK,MAAM,CAAC,IAAI,SAAS;AACjE,SAAO,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,SAAS,MAAM;AACnD;"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("react");
5
+ const DataTable = require("../../../data/DataTable.cjs");
6
+ const monacoEditor = require("monaco-editor");
7
+ function _interopNamespaceDefault(e) {
8
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
9
+ if (e) {
10
+ for (const k in e) {
11
+ if (k !== "default") {
12
+ const d = Object.getOwnPropertyDescriptor(e, k);
13
+ Object.defineProperty(n, k, d.get ? d : {
14
+ enumerable: true,
15
+ get: () => e[k]
16
+ });
17
+ }
18
+ }
19
+ }
20
+ n.default = e;
21
+ return Object.freeze(n);
22
+ }
23
+ const monacoEditor__namespace = /* @__PURE__ */ _interopNamespaceDefault(monacoEditor);
24
+ function TokensPanel({ source, languageId }) {
25
+ const rows = react.useMemo(
26
+ () => tokenize(source, languageId),
27
+ [source, languageId]
28
+ );
29
+ const columns = [
30
+ {
31
+ key: "line",
32
+ label: "Line",
33
+ align: "right",
34
+ shrink: true,
35
+ sortable: true
36
+ },
37
+ {
38
+ key: "text",
39
+ label: "Text",
40
+ grow: true,
41
+ cellClassName: "font-mono whitespace-pre"
42
+ },
43
+ {
44
+ key: "token",
45
+ label: "Token",
46
+ sortable: true,
47
+ filterable: true,
48
+ cellClassName: "font-mono",
49
+ // An `identifier` is the fallback every unmatched word lands on, so it is
50
+ // the one class worth de-emphasising: what stands out is what matched.
51
+ render: (value) => /* @__PURE__ */ jsxRuntime.jsx(
52
+ "span",
53
+ {
54
+ className: String(value).startsWith("identifier") ? "text-muted-foreground" : "",
55
+ children: String(value)
56
+ }
57
+ )
58
+ }
59
+ ];
60
+ return /* @__PURE__ */ jsxRuntime.jsx(
61
+ DataTable.DataTable,
62
+ {
63
+ data: rows,
64
+ columns,
65
+ autoFilter: true,
66
+ showGlobalFilter: true,
67
+ globalFilterPlaceholder: "Filter tokens…",
68
+ emptyMessage: "Nothing to tokenize.",
69
+ className: "h-full"
70
+ }
71
+ );
72
+ }
73
+ function tokenize(source, languageId) {
74
+ if (!source.trim()) return [];
75
+ const lines = monacoEditor__namespace.editor.tokenize(source, languageId);
76
+ const rows = [];
77
+ source.split(/\r\n|\r|\n/).forEach((line, index) => {
78
+ const tokens = lines[index] ?? [];
79
+ tokens.forEach((token, i) => {
80
+ const end = i + 1 < tokens.length ? tokens[i + 1].offset : line.length;
81
+ const text = line.slice(token.offset, end);
82
+ if (text.trim() === "") return;
83
+ rows.push({ line: index + 1, text, token: token.type });
84
+ });
85
+ });
86
+ return rows;
87
+ }
88
+ exports.TokensPanel = TokensPanel;
89
+ //# sourceMappingURL=TokensPanel.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokensPanel.cjs","sources":["../../../../src/expressions/playground/panels/TokensPanel.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { DataTable, type DataTableColumn } from \"../../../data/DataTable\";\nimport * as monaco from \"monaco-editor\";\n\ninterface TokensPanelProps {\n source: string;\n languageId: string;\n}\n\ninterface TokenRow extends Record<string, unknown> {\n line: number;\n text: string;\n token: string;\n}\n\n/**\n * Shows the token stream Monarch produces.\n *\n * This is the panel that makes a highlighting bug legible: colours tell you\n * something is off, the token stream tells you which rule matched. It is also\n * the fastest way to check a newly registered function is classified as\n * `function` rather than falling through to `identifier`.\n */\nexport function TokensPanel({ source, languageId }: TokensPanelProps) {\n const rows = useMemo(\n () => tokenize(source, languageId),\n [source, languageId],\n );\n\n const columns: DataTableColumn<TokenRow>[] = [\n {\n key: \"line\",\n label: \"Line\",\n align: \"right\",\n shrink: true,\n sortable: true,\n },\n {\n key: \"text\",\n label: \"Text\",\n grow: true,\n cellClassName: \"font-mono whitespace-pre\",\n },\n {\n key: \"token\",\n label: \"Token\",\n sortable: true,\n filterable: true,\n cellClassName: \"font-mono\",\n // An `identifier` is the fallback every unmatched word lands on, so it is\n // the one class worth de-emphasising: what stands out is what matched.\n render: (value) => (\n <span\n className={\n String(value).startsWith(\"identifier\")\n ? \"text-muted-foreground\"\n : \"\"\n }\n >\n {String(value)}\n </span>\n ),\n },\n ];\n\n return (\n <DataTable\n data={rows}\n columns={columns}\n autoFilter\n showGlobalFilter\n globalFilterPlaceholder=\"Filter tokens…\"\n emptyMessage=\"Nothing to tokenize.\"\n className=\"h-full\"\n />\n );\n}\n\nfunction tokenize(source: string, languageId: string): TokenRow[] {\n if (!source.trim()) return [];\n\n const lines = monaco.editor.tokenize(source, languageId);\n const rows: TokenRow[] = [];\n\n source.split(/\\r\\n|\\r|\\n/).forEach((line, index) => {\n const tokens = lines[index] ?? [];\n tokens.forEach((token, i) => {\n // Monaco reports a start offset only; each token runs to the next start.\n const end = i + 1 < tokens.length ? tokens[i + 1]!.offset : line.length;\n const text = line.slice(token.offset, end);\n if (text.trim() === \"\") return;\n rows.push({ line: index + 1, text, token: token.type });\n });\n });\n return rows;\n}\n"],"names":["useMemo","jsx","DataTable","monaco"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAuBO,SAAS,YAAY,EAAE,QAAQ,cAAgC;AACpE,QAAM,OAAOA,MAAAA;AAAAA,IACX,MAAM,SAAS,QAAQ,UAAU;AAAA,IACjC,CAAC,QAAQ,UAAU;AAAA,EAAA;AAGrB,QAAM,UAAuC;AAAA,IAC3C;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,IAAA;AAAA,IAEZ;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,MAAM;AAAA,MACN,eAAe;AAAA,IAAA;AAAA,IAEjB;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,eAAe;AAAA;AAAA;AAAA,MAGf,QAAQ,CAAC,UACPC,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,WACE,OAAO,KAAK,EAAE,WAAW,YAAY,IACjC,0BACA;AAAA,UAGL,iBAAO,KAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IACf;AAAA,EAEJ;AAGF,SACEA,2BAAAA;AAAAA,IAACC,UAAAA;AAAAA,IAAA;AAAA,MACC,MAAM;AAAA,MACN;AAAA,MACA,YAAU;AAAA,MACV,kBAAgB;AAAA,MAChB,yBAAwB;AAAA,MACxB,cAAa;AAAA,MACb,WAAU;AAAA,IAAA;AAAA,EAAA;AAGhB;AAEA,SAAS,SAAS,QAAgB,YAAgC;AAChE,MAAI,CAAC,OAAO,KAAA,UAAe,CAAA;AAE3B,QAAM,QAAQC,wBAAO,OAAO,SAAS,QAAQ,UAAU;AACvD,QAAM,OAAmB,CAAA;AAEzB,SAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,MAAM,UAAU;AAClD,UAAM,SAAS,MAAM,KAAK,KAAK,CAAA;AAC/B,WAAO,QAAQ,CAAC,OAAO,MAAM;AAE3B,YAAM,MAAM,IAAI,IAAI,OAAO,SAAS,OAAO,IAAI,CAAC,EAAG,SAAS,KAAK;AACjE,YAAM,OAAO,KAAK,MAAM,MAAM,QAAQ,GAAG;AACzC,UAAI,KAAK,KAAA,MAAW,GAAI;AACxB,WAAK,KAAK,EAAE,MAAM,QAAQ,GAAG,MAAM,OAAO,MAAM,MAAM;AAAA,IACxD,CAAC;AAAA,EACH,CAAC;AACD,SAAO;AACT;;"}