@flanksource/clicky-ui 0.3.18 → 0.3.20

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 (609) hide show
  1. package/dist/components/ComboboxMenu.cjs +5 -1
  2. package/dist/components/ComboboxMenu.cjs.map +1 -1
  3. package/dist/components/ComboboxMenu.d.ts.map +1 -1
  4. package/dist/components/ComboboxMenu.js +5 -1
  5. package/dist/components/ComboboxMenu.js.map +1 -1
  6. package/dist/components/EndpointSelector.model.cjs +96 -0
  7. package/dist/components/EndpointSelector.model.cjs.map +1 -0
  8. package/dist/components/EndpointSelector.model.d.ts +2 -0
  9. package/dist/components/EndpointSelector.model.d.ts.map +1 -1
  10. package/dist/components/EndpointSelector.model.js +96 -0
  11. package/dist/components/EndpointSelector.model.js.map +1 -0
  12. package/dist/components/ErrorWrapper.cjs +1 -1
  13. package/dist/components/ErrorWrapper.cjs.map +1 -1
  14. package/dist/components/ErrorWrapper.js +1 -1
  15. package/dist/components/ErrorWrapper.js.map +1 -1
  16. package/dist/components/FilterBar.cjs +52 -2
  17. package/dist/components/FilterBar.cjs.map +1 -1
  18. package/dist/components/FilterBar.d.ts +20 -2
  19. package/dist/components/FilterBar.d.ts.map +1 -1
  20. package/dist/components/FilterBar.js +52 -2
  21. package/dist/components/FilterBar.js.map +1 -1
  22. package/dist/components/JSONPathField.cjs +87 -66
  23. package/dist/components/JSONPathField.cjs.map +1 -1
  24. package/dist/components/JSONPathField.d.ts +26 -9
  25. package/dist/components/JSONPathField.d.ts.map +1 -1
  26. package/dist/components/JSONPathField.js +88 -67
  27. package/dist/components/JSONPathField.js.map +1 -1
  28. package/dist/components/JSONPathPlayground.cjs +225 -0
  29. package/dist/components/JSONPathPlayground.cjs.map +1 -0
  30. package/dist/components/JSONPathPlayground.d.ts +59 -0
  31. package/dist/components/JSONPathPlayground.d.ts.map +1 -0
  32. package/dist/components/JSONPathPlayground.js +225 -0
  33. package/dist/components/JSONPathPlayground.js.map +1 -0
  34. package/dist/components/OnePasswordSelector.cjs +178 -0
  35. package/dist/components/OnePasswordSelector.cjs.map +1 -0
  36. package/dist/components/OnePasswordSelector.d.ts +8 -0
  37. package/dist/components/OnePasswordSelector.d.ts.map +1 -0
  38. package/dist/components/OnePasswordSelector.js +178 -0
  39. package/dist/components/OnePasswordSelector.js.map +1 -0
  40. package/dist/components/OnePasswordSelector.model.cjs +31 -0
  41. package/dist/components/OnePasswordSelector.model.cjs.map +1 -0
  42. package/dist/components/OnePasswordSelector.model.d.ts +27 -0
  43. package/dist/components/OnePasswordSelector.model.d.ts.map +1 -0
  44. package/dist/components/OnePasswordSelector.model.js +31 -0
  45. package/dist/components/OnePasswordSelector.model.js.map +1 -0
  46. package/dist/components/SecretFormField.cjs +142 -0
  47. package/dist/components/SecretFormField.cjs.map +1 -0
  48. package/dist/components/SecretFormField.d.ts +9 -0
  49. package/dist/components/SecretFormField.d.ts.map +1 -0
  50. package/dist/components/SecretFormField.js +142 -0
  51. package/dist/components/SecretFormField.js.map +1 -0
  52. package/dist/components/SecretKeySelector.cjs +20 -14
  53. package/dist/components/SecretKeySelector.cjs.map +1 -1
  54. package/dist/components/SecretKeySelector.d.ts +4 -1
  55. package/dist/components/SecretKeySelector.d.ts.map +1 -1
  56. package/dist/components/SecretKeySelector.js +20 -14
  57. package/dist/components/SecretKeySelector.js.map +1 -1
  58. package/dist/components/TreePickerField.cjs +55 -29
  59. package/dist/components/TreePickerField.cjs.map +1 -1
  60. package/dist/components/TreePickerField.d.ts +10 -1
  61. package/dist/components/TreePickerField.d.ts.map +1 -1
  62. package/dist/components/TreePickerField.js +56 -30
  63. package/dist/components/TreePickerField.js.map +1 -1
  64. package/dist/components/UnitStepControls.cjs +55 -0
  65. package/dist/components/UnitStepControls.cjs.map +1 -0
  66. package/dist/components/UnitStepControls.d.ts +10 -0
  67. package/dist/components/UnitStepControls.d.ts.map +1 -0
  68. package/dist/components/UnitStepControls.js +55 -0
  69. package/dist/components/UnitStepControls.js.map +1 -0
  70. package/dist/components/combobox-types.d.ts +9 -0
  71. package/dist/components/combobox-types.d.ts.map +1 -1
  72. package/dist/components/filter-bar-utils.cjs +7 -0
  73. package/dist/components/filter-bar-utils.cjs.map +1 -1
  74. package/dist/components/filter-bar-utils.d.ts.map +1 -1
  75. package/dist/components/filter-bar-utils.js +7 -0
  76. package/dist/components/filter-bar-utils.js.map +1 -1
  77. package/dist/components/jotai-bindings-core.cjs.map +1 -1
  78. package/dist/components/jotai-bindings-core.d.ts +4 -1
  79. package/dist/components/jotai-bindings-core.d.ts.map +1 -1
  80. package/dist/components/jotai-bindings-core.js.map +1 -1
  81. package/dist/components/json-schema-form-accordion-array.cjs +5 -73
  82. package/dist/components/json-schema-form-accordion-array.cjs.map +1 -1
  83. package/dist/components/json-schema-form-accordion-array.d.ts.map +1 -1
  84. package/dist/components/json-schema-form-accordion-array.js +3 -71
  85. package/dist/components/json-schema-form-accordion-array.js.map +1 -1
  86. package/dist/components/json-schema-form-array.cjs +6 -1
  87. package/dist/components/json-schema-form-array.cjs.map +1 -1
  88. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  89. package/dist/components/json-schema-form-array.js +6 -1
  90. package/dist/components/json-schema-form-array.js.map +1 -1
  91. package/dist/components/json-schema-form-cards-array.cjs +96 -0
  92. package/dist/components/json-schema-form-cards-array.cjs.map +1 -0
  93. package/dist/components/json-schema-form-cards-array.d.ts +7 -0
  94. package/dist/components/json-schema-form-cards-array.d.ts.map +1 -0
  95. package/dist/components/json-schema-form-cards-array.js +96 -0
  96. package/dist/components/json-schema-form-cards-array.js.map +1 -0
  97. package/dist/components/json-schema-form-item-row.cjs +81 -0
  98. package/dist/components/json-schema-form-item-row.cjs.map +1 -0
  99. package/dist/components/json-schema-form-item-row.d.ts +19 -0
  100. package/dist/components/json-schema-form-item-row.d.ts.map +1 -0
  101. package/dist/components/json-schema-form-item-row.js +81 -0
  102. package/dist/components/json-schema-form-item-row.js.map +1 -0
  103. package/dist/components/json-schema-form-render.cjs +4 -3
  104. package/dist/components/json-schema-form-render.cjs.map +1 -1
  105. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  106. package/dist/components/json-schema-form-render.js +4 -3
  107. package/dist/components/json-schema-form-render.js.map +1 -1
  108. package/dist/components/json-schema-form-resolve.cjs +1 -1
  109. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  110. package/dist/components/json-schema-form-resolve.js +1 -1
  111. package/dist/components/json-schema-form-resolve.js.map +1 -1
  112. package/dist/components/json-schema-form-tone.cjs +12 -0
  113. package/dist/components/json-schema-form-tone.cjs.map +1 -1
  114. package/dist/components/json-schema-form-tone.js +12 -0
  115. package/dist/components/json-schema-form-tone.js.map +1 -1
  116. package/dist/components/json-schema-form-types.d.ts +10 -1
  117. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  118. package/dist/components/jsonPathTree.cjs +189 -0
  119. package/dist/components/jsonPathTree.cjs.map +1 -0
  120. package/dist/components/jsonPathTree.d.ts +92 -0
  121. package/dist/components/jsonPathTree.d.ts.map +1 -0
  122. package/dist/components/jsonPathTree.js +189 -0
  123. package/dist/components/jsonPathTree.js.map +1 -0
  124. package/dist/components/secret-form-extension.cjs +30 -0
  125. package/dist/components/secret-form-extension.cjs.map +1 -0
  126. package/dist/components/secret-form-extension.d.ts +23 -0
  127. package/dist/components/secret-form-extension.d.ts.map +1 -0
  128. package/dist/components/secret-form-extension.js +30 -0
  129. package/dist/components/secret-form-extension.js.map +1 -0
  130. package/dist/components/unit-form-extension.cjs +126 -0
  131. package/dist/components/unit-form-extension.cjs.map +1 -0
  132. package/dist/components/unit-form-extension.d.ts +8 -0
  133. package/dist/components/unit-form-extension.d.ts.map +1 -0
  134. package/dist/components/unit-form-extension.js +126 -0
  135. package/dist/components/unit-form-extension.js.map +1 -0
  136. package/dist/components.cjs +20 -0
  137. package/dist/components.cjs.map +1 -1
  138. package/dist/components.d.ts +7 -0
  139. package/dist/components.d.ts.map +1 -1
  140. package/dist/components.js +20 -0
  141. package/dist/components.js.map +1 -1
  142. package/dist/data/TaskExecDetails.cjs +40 -0
  143. package/dist/data/TaskExecDetails.cjs.map +1 -0
  144. package/dist/data/TaskExecDetails.d.ts +5 -0
  145. package/dist/data/TaskExecDetails.d.ts.map +1 -0
  146. package/dist/data/TaskExecDetails.js +40 -0
  147. package/dist/data/TaskExecDetails.js.map +1 -0
  148. package/dist/data/TaskProgress.cjs +9 -3
  149. package/dist/data/TaskProgress.cjs.map +1 -1
  150. package/dist/data/TaskProgress.d.ts.map +1 -1
  151. package/dist/data/TaskProgress.js +9 -3
  152. package/dist/data/TaskProgress.js.map +1 -1
  153. package/dist/data/TaskSnapshot.cjs.map +1 -1
  154. package/dist/data/TaskSnapshot.d.ts +12 -1
  155. package/dist/data/TaskSnapshot.d.ts.map +1 -1
  156. package/dist/data/TaskSnapshot.js.map +1 -1
  157. package/dist/data/TreeNode.cjs +3 -0
  158. package/dist/data/TreeNode.cjs.map +1 -1
  159. package/dist/data/TreeNode.d.ts.map +1 -1
  160. package/dist/data/TreeNode.js +3 -0
  161. package/dist/data/TreeNode.js.map +1 -1
  162. package/dist/data/data-table-filter-values.cjs +20 -0
  163. package/dist/data/data-table-filter-values.cjs.map +1 -1
  164. package/dist/data/data-table-filter-values.d.ts +16 -0
  165. package/dist/data/data-table-filter-values.d.ts.map +1 -1
  166. package/dist/data/data-table-filter-values.js +20 -0
  167. package/dist/data/data-table-filter-values.js.map +1 -1
  168. package/dist/data/data-table-server-filters.cjs +23 -29
  169. package/dist/data/data-table-server-filters.cjs.map +1 -1
  170. package/dist/data/data-table-server-filters.d.ts.map +1 -1
  171. package/dist/data/data-table-server-filters.js +21 -27
  172. package/dist/data/data-table-server-filters.js.map +1 -1
  173. package/dist/data/diagnostics/ErrorDetails.cjs +61 -8
  174. package/dist/data/diagnostics/ErrorDetails.cjs.map +1 -1
  175. package/dist/data/diagnostics/ErrorDetails.d.ts.map +1 -1
  176. package/dist/data/diagnostics/ErrorDetails.js +61 -8
  177. package/dist/data/diagnostics/ErrorDetails.js.map +1 -1
  178. package/dist/data/diagnostics/error-diagnostics.cjs +10 -4
  179. package/dist/data/diagnostics/error-diagnostics.cjs.map +1 -1
  180. package/dist/data/diagnostics/error-diagnostics.d.ts.map +1 -1
  181. package/dist/data/diagnostics/error-diagnostics.js +10 -4
  182. package/dist/data/diagnostics/error-diagnostics.js.map +1 -1
  183. package/dist/data/query-browser/QueryBrowser.cjs +139 -161
  184. package/dist/data/query-browser/QueryBrowser.cjs.map +1 -1
  185. package/dist/data/query-browser/QueryBrowser.d.ts +1 -71
  186. package/dist/data/query-browser/QueryBrowser.d.ts.map +1 -1
  187. package/dist/data/query-browser/QueryBrowser.editor.cjs +88 -0
  188. package/dist/data/query-browser/QueryBrowser.editor.cjs.map +1 -0
  189. package/dist/data/query-browser/QueryBrowser.editor.d.ts +12 -0
  190. package/dist/data/query-browser/QueryBrowser.editor.d.ts.map +1 -0
  191. package/dist/data/query-browser/QueryBrowser.editor.js +88 -0
  192. package/dist/data/query-browser/QueryBrowser.editor.js.map +1 -0
  193. package/dist/data/query-browser/QueryBrowser.js +140 -162
  194. package/dist/data/query-browser/QueryBrowser.js.map +1 -1
  195. package/dist/data/query-browser/QueryBrowser.types.cjs +12 -0
  196. package/dist/data/query-browser/QueryBrowser.types.cjs.map +1 -0
  197. package/dist/data/query-browser/QueryBrowser.types.d.ts +94 -0
  198. package/dist/data/query-browser/QueryBrowser.types.d.ts.map +1 -0
  199. package/dist/data/query-browser/QueryBrowser.types.js +12 -0
  200. package/dist/data/query-browser/QueryBrowser.types.js.map +1 -0
  201. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.cjs +56 -0
  202. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.cjs.map +1 -0
  203. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.d.ts +5 -0
  204. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.d.ts.map +1 -0
  205. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.js +56 -0
  206. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.js.map +1 -0
  207. package/dist/data/query-browser/QueryBrowserResults.cjs +80 -0
  208. package/dist/data/query-browser/QueryBrowserResults.cjs.map +1 -0
  209. package/dist/data/query-browser/QueryBrowserResults.d.ts +16 -0
  210. package/dist/data/query-browser/QueryBrowserResults.d.ts.map +1 -0
  211. package/dist/data/query-browser/QueryBrowserResults.js +80 -0
  212. package/dist/data/query-browser/QueryBrowserResults.js.map +1 -0
  213. package/dist/data/query-browser/index.d.ts +2 -1
  214. package/dist/data/query-browser/index.d.ts.map +1 -1
  215. package/dist/data/task-exec-details.cjs +9 -0
  216. package/dist/data/task-exec-details.cjs.map +1 -0
  217. package/dist/data/task-exec-details.d.ts +3 -0
  218. package/dist/data/task-exec-details.d.ts.map +1 -0
  219. package/dist/data/task-exec-details.js +9 -0
  220. package/dist/data/task-exec-details.js.map +1 -0
  221. package/dist/data/version-info.cjs +3 -3
  222. package/dist/data/version-info.js +3 -3
  223. package/dist/data.cjs +2 -0
  224. package/dist/data.cjs.map +1 -1
  225. package/dist/data.d.ts +1 -1
  226. package/dist/data.d.ts.map +1 -1
  227. package/dist/data.js +2 -0
  228. package/dist/data.js.map +1 -1
  229. package/dist/index.cjs +22 -0
  230. package/dist/index.cjs.map +1 -1
  231. package/dist/index.js +22 -0
  232. package/dist/index.js.map +1 -1
  233. package/dist/lib/string.cjs +8 -0
  234. package/dist/lib/string.cjs.map +1 -1
  235. package/dist/lib/string.d.ts +1 -0
  236. package/dist/lib/string.d.ts.map +1 -1
  237. package/dist/lib/string.js +8 -0
  238. package/dist/lib/string.js.map +1 -1
  239. package/dist/profiles/catalogTree.cjs +133 -0
  240. package/dist/profiles/catalogTree.cjs.map +1 -0
  241. package/dist/profiles/catalogTree.d.ts +11 -0
  242. package/dist/profiles/catalogTree.d.ts.map +1 -0
  243. package/dist/profiles/catalogTree.js +133 -0
  244. package/dist/profiles/catalogTree.js.map +1 -0
  245. package/dist/profiles/connectionBrowserModel.cjs +185 -0
  246. package/dist/profiles/connectionBrowserModel.cjs.map +1 -0
  247. package/dist/profiles/connectionBrowserModel.d.ts +169 -0
  248. package/dist/profiles/connectionBrowserModel.d.ts.map +1 -0
  249. package/dist/profiles/connectionBrowserModel.js +185 -0
  250. package/dist/profiles/connectionBrowserModel.js.map +1 -0
  251. package/dist/profiles/connectionQueryWorkspace.cjs +185 -0
  252. package/dist/profiles/connectionQueryWorkspace.cjs.map +1 -0
  253. package/dist/profiles/connectionQueryWorkspace.d.ts +63 -0
  254. package/dist/profiles/connectionQueryWorkspace.d.ts.map +1 -0
  255. package/dist/profiles/connectionQueryWorkspace.js +185 -0
  256. package/dist/profiles/connectionQueryWorkspace.js.map +1 -0
  257. package/dist/profiles/connectionQueryWorkspaceModel.cjs +28 -0
  258. package/dist/profiles/connectionQueryWorkspaceModel.cjs.map +1 -0
  259. package/dist/profiles/connectionQueryWorkspaceModel.d.ts +38 -0
  260. package/dist/profiles/connectionQueryWorkspaceModel.d.ts.map +1 -0
  261. package/dist/profiles/connectionQueryWorkspaceModel.js +28 -0
  262. package/dist/profiles/connectionQueryWorkspaceModel.js.map +1 -0
  263. package/dist/profiles/esFieldValues.cjs +64 -0
  264. package/dist/profiles/esFieldValues.cjs.map +1 -0
  265. package/dist/profiles/esFieldValues.d.ts +48 -0
  266. package/dist/profiles/esFieldValues.d.ts.map +1 -0
  267. package/dist/profiles/esFieldValues.js +64 -0
  268. package/dist/profiles/esFieldValues.js.map +1 -0
  269. package/dist/profiles/esParamMappingModel.cjs +301 -0
  270. package/dist/profiles/esParamMappingModel.cjs.map +1 -0
  271. package/dist/profiles/esParamMappingModel.d.ts +37 -0
  272. package/dist/profiles/esParamMappingModel.d.ts.map +1 -0
  273. package/dist/profiles/esParamMappingModel.js +301 -0
  274. package/dist/profiles/esParamMappingModel.js.map +1 -0
  275. package/dist/profiles/esParamMappingPill.cjs +24 -0
  276. package/dist/profiles/esParamMappingPill.cjs.map +1 -0
  277. package/dist/profiles/esParamMappingPill.d.ts +13 -0
  278. package/dist/profiles/esParamMappingPill.d.ts.map +1 -0
  279. package/dist/profiles/esParamMappingPill.js +24 -0
  280. package/dist/profiles/esParamMappingPill.js.map +1 -0
  281. package/dist/profiles/esParamOperandExtension.cjs +75 -0
  282. package/dist/profiles/esParamOperandExtension.cjs.map +1 -0
  283. package/dist/profiles/esParamOperandExtension.d.ts +11 -0
  284. package/dist/profiles/esParamOperandExtension.d.ts.map +1 -0
  285. package/dist/profiles/esParamOperandExtension.js +75 -0
  286. package/dist/profiles/esParamOperandExtension.js.map +1 -0
  287. package/dist/profiles/esQueryBuilder.cjs +205 -0
  288. package/dist/profiles/esQueryBuilder.cjs.map +1 -0
  289. package/dist/profiles/esQueryBuilder.d.ts +35 -0
  290. package/dist/profiles/esQueryBuilder.d.ts.map +1 -0
  291. package/dist/profiles/esQueryBuilder.js +205 -0
  292. package/dist/profiles/esQueryBuilder.js.map +1 -0
  293. package/dist/profiles/esQueryBuilderExtension.cjs +23 -0
  294. package/dist/profiles/esQueryBuilderExtension.cjs.map +1 -0
  295. package/dist/profiles/esQueryBuilderExtension.d.ts +5 -0
  296. package/dist/profiles/esQueryBuilderExtension.d.ts.map +1 -0
  297. package/dist/profiles/esQueryBuilderExtension.js +23 -0
  298. package/dist/profiles/esQueryBuilderExtension.js.map +1 -0
  299. package/dist/profiles/esQueryBuilderForm.cjs +26 -0
  300. package/dist/profiles/esQueryBuilderForm.cjs.map +1 -0
  301. package/dist/profiles/esQueryBuilderForm.d.ts +18 -0
  302. package/dist/profiles/esQueryBuilderForm.d.ts.map +1 -0
  303. package/dist/profiles/esQueryBuilderForm.js +26 -0
  304. package/dist/profiles/esQueryBuilderForm.js.map +1 -0
  305. package/dist/profiles/esQueryBuilderModel.cjs +131 -0
  306. package/dist/profiles/esQueryBuilderModel.cjs.map +1 -0
  307. package/dist/profiles/esQueryBuilderModel.d.ts +108 -0
  308. package/dist/profiles/esQueryBuilderModel.d.ts.map +1 -0
  309. package/dist/profiles/esQueryBuilderModel.js +131 -0
  310. package/dist/profiles/esQueryBuilderModel.js.map +1 -0
  311. package/dist/profiles/esQueryClauseGroup.cjs +144 -0
  312. package/dist/profiles/esQueryClauseGroup.cjs.map +1 -0
  313. package/dist/profiles/esQueryClauseGroup.d.ts +10 -0
  314. package/dist/profiles/esQueryClauseGroup.d.ts.map +1 -0
  315. package/dist/profiles/esQueryClauseGroup.js +144 -0
  316. package/dist/profiles/esQueryClauseGroup.js.map +1 -0
  317. package/dist/profiles/esQueryCompile.cjs +47 -0
  318. package/dist/profiles/esQueryCompile.cjs.map +1 -0
  319. package/dist/profiles/esQueryCompile.d.ts +39 -0
  320. package/dist/profiles/esQueryCompile.d.ts.map +1 -0
  321. package/dist/profiles/esQueryCompile.js +47 -0
  322. package/dist/profiles/esQueryCompile.js.map +1 -0
  323. package/dist/profiles/esQueryConditionRow.cjs +168 -0
  324. package/dist/profiles/esQueryConditionRow.cjs.map +1 -0
  325. package/dist/profiles/esQueryConditionRow.d.ts +37 -0
  326. package/dist/profiles/esQueryConditionRow.d.ts.map +1 -0
  327. package/dist/profiles/esQueryConditionRow.js +168 -0
  328. package/dist/profiles/esQueryConditionRow.js.map +1 -0
  329. package/dist/profiles/esQueryGroupModel.cjs +12 -0
  330. package/dist/profiles/esQueryGroupModel.cjs.map +1 -0
  331. package/dist/profiles/esQueryGroupModel.d.ts +9 -0
  332. package/dist/profiles/esQueryGroupModel.d.ts.map +1 -0
  333. package/dist/profiles/esQueryGroupModel.js +12 -0
  334. package/dist/profiles/esQueryGroupModel.js.map +1 -0
  335. package/dist/profiles/esQueryOccur.cjs +16 -0
  336. package/dist/profiles/esQueryOccur.cjs.map +1 -0
  337. package/dist/profiles/esQueryOccur.d.ts +11 -0
  338. package/dist/profiles/esQueryOccur.d.ts.map +1 -0
  339. package/dist/profiles/esQueryOccur.js +16 -0
  340. package/dist/profiles/esQueryOccur.js.map +1 -0
  341. package/dist/profiles/esQueryOperandEditors.cjs +279 -0
  342. package/dist/profiles/esQueryOperandEditors.cjs.map +1 -0
  343. package/dist/profiles/esQueryOperandEditors.d.ts +24 -0
  344. package/dist/profiles/esQueryOperandEditors.d.ts.map +1 -0
  345. package/dist/profiles/esQueryOperandEditors.js +279 -0
  346. package/dist/profiles/esQueryOperandEditors.js.map +1 -0
  347. package/dist/profiles/esQueryOperandModel.cjs +28 -0
  348. package/dist/profiles/esQueryOperandModel.cjs.map +1 -0
  349. package/dist/profiles/esQueryOperandModel.d.ts +17 -0
  350. package/dist/profiles/esQueryOperandModel.d.ts.map +1 -0
  351. package/dist/profiles/esQueryOperandModel.js +28 -0
  352. package/dist/profiles/esQueryOperandModel.js.map +1 -0
  353. package/dist/profiles/esQueryOperators.cjs +165 -0
  354. package/dist/profiles/esQueryOperators.cjs.map +1 -0
  355. package/dist/profiles/esQueryOperators.d.ts +83 -0
  356. package/dist/profiles/esQueryOperators.d.ts.map +1 -0
  357. package/dist/profiles/esQueryOperators.js +165 -0
  358. package/dist/profiles/esQueryOperators.js.map +1 -0
  359. package/dist/profiles/esQueryOutputEditor.cjs +138 -0
  360. package/dist/profiles/esQueryOutputEditor.cjs.map +1 -0
  361. package/dist/profiles/esQueryOutputEditor.d.ts +7 -0
  362. package/dist/profiles/esQueryOutputEditor.d.ts.map +1 -0
  363. package/dist/profiles/esQueryOutputEditor.js +138 -0
  364. package/dist/profiles/esQueryOutputEditor.js.map +1 -0
  365. package/dist/profiles/esQueryOutputModel.cjs +16 -0
  366. package/dist/profiles/esQueryOutputModel.cjs.map +1 -0
  367. package/dist/profiles/esQueryOutputModel.d.ts +14 -0
  368. package/dist/profiles/esQueryOutputModel.d.ts.map +1 -0
  369. package/dist/profiles/esQueryOutputModel.js +16 -0
  370. package/dist/profiles/esQueryOutputModel.js.map +1 -0
  371. package/dist/profiles/esQueryPreview.cjs +30 -0
  372. package/dist/profiles/esQueryPreview.cjs.map +1 -0
  373. package/dist/profiles/esQueryPreview.d.ts +6 -0
  374. package/dist/profiles/esQueryPreview.d.ts.map +1 -0
  375. package/dist/profiles/esQueryPreview.js +30 -0
  376. package/dist/profiles/esQueryPreview.js.map +1 -0
  377. package/dist/profiles/esQuerySortEditor.cjs +143 -0
  378. package/dist/profiles/esQuerySortEditor.cjs.map +1 -0
  379. package/dist/profiles/esQuerySortEditor.d.ts +9 -0
  380. package/dist/profiles/esQuerySortEditor.d.ts.map +1 -0
  381. package/dist/profiles/esQuerySortEditor.js +143 -0
  382. package/dist/profiles/esQuerySortEditor.js.map +1 -0
  383. package/dist/profiles/esQuerySortModel.cjs +13 -0
  384. package/dist/profiles/esQuerySortModel.cjs.map +1 -0
  385. package/dist/profiles/esQuerySortModel.d.ts +4 -0
  386. package/dist/profiles/esQuerySortModel.d.ts.map +1 -0
  387. package/dist/profiles/esQuerySortModel.js +13 -0
  388. package/dist/profiles/esQuerySortModel.js.map +1 -0
  389. package/dist/profiles/esValueCombobox.cjs +86 -0
  390. package/dist/profiles/esValueCombobox.cjs.map +1 -0
  391. package/dist/profiles/esValueCombobox.d.ts +15 -0
  392. package/dist/profiles/esValueCombobox.d.ts.map +1 -0
  393. package/dist/profiles/esValueCombobox.js +86 -0
  394. package/dist/profiles/esValueCombobox.js.map +1 -0
  395. package/dist/profiles/jsonPathSample.cjs +75 -0
  396. package/dist/profiles/jsonPathSample.cjs.map +1 -0
  397. package/dist/profiles/jsonPathSample.d.ts +27 -0
  398. package/dist/profiles/jsonPathSample.d.ts.map +1 -0
  399. package/dist/profiles/jsonPathSample.js +75 -0
  400. package/dist/profiles/jsonPathSample.js.map +1 -0
  401. package/dist/profiles/jsonPathSampleRow.cjs +14 -0
  402. package/dist/profiles/jsonPathSampleRow.cjs.map +1 -0
  403. package/dist/profiles/jsonPathSampleRow.d.ts +6 -0
  404. package/dist/profiles/jsonPathSampleRow.d.ts.map +1 -0
  405. package/dist/profiles/jsonPathSampleRow.js +14 -0
  406. package/dist/profiles/jsonPathSampleRow.js.map +1 -0
  407. package/dist/profiles/profileApi.cjs +37 -0
  408. package/dist/profiles/profileApi.cjs.map +1 -0
  409. package/dist/profiles/profileApi.d.ts +32 -0
  410. package/dist/profiles/profileApi.d.ts.map +1 -0
  411. package/dist/profiles/profileApi.js +37 -0
  412. package/dist/profiles/profileApi.js.map +1 -0
  413. package/dist/profiles/profileBuilder.cjs +65 -0
  414. package/dist/profiles/profileBuilder.cjs.map +1 -0
  415. package/dist/profiles/profileBuilder.d.ts +11 -0
  416. package/dist/profiles/profileBuilder.d.ts.map +1 -0
  417. package/dist/profiles/profileBuilder.js +65 -0
  418. package/dist/profiles/profileBuilder.js.map +1 -0
  419. package/dist/profiles/profileBuilderExtension.cjs +25 -0
  420. package/dist/profiles/profileBuilderExtension.cjs.map +1 -0
  421. package/dist/profiles/profileBuilderExtension.d.ts +5 -0
  422. package/dist/profiles/profileBuilderExtension.d.ts.map +1 -0
  423. package/dist/profiles/profileBuilderExtension.js +25 -0
  424. package/dist/profiles/profileBuilderExtension.js.map +1 -0
  425. package/dist/profiles/profileBuilderWorkspace.cjs +368 -0
  426. package/dist/profiles/profileBuilderWorkspace.cjs.map +1 -0
  427. package/dist/profiles/profileBuilderWorkspace.d.ts +21 -0
  428. package/dist/profiles/profileBuilderWorkspace.d.ts.map +1 -0
  429. package/dist/profiles/profileBuilderWorkspace.js +368 -0
  430. package/dist/profiles/profileBuilderWorkspace.js.map +1 -0
  431. package/dist/profiles/profileColumnModel.cjs +23 -0
  432. package/dist/profiles/profileColumnModel.cjs.map +1 -0
  433. package/dist/profiles/profileColumnModel.d.ts +8 -0
  434. package/dist/profiles/profileColumnModel.d.ts.map +1 -0
  435. package/dist/profiles/profileColumnModel.js +23 -0
  436. package/dist/profiles/profileColumnModel.js.map +1 -0
  437. package/dist/profiles/profileColumnPicker.cjs +68 -0
  438. package/dist/profiles/profileColumnPicker.cjs.map +1 -0
  439. package/dist/profiles/profileColumnPicker.d.ts +11 -0
  440. package/dist/profiles/profileColumnPicker.d.ts.map +1 -0
  441. package/dist/profiles/profileColumnPicker.js +68 -0
  442. package/dist/profiles/profileColumnPicker.js.map +1 -0
  443. package/dist/profiles/profileEditor.cjs +386 -0
  444. package/dist/profiles/profileEditor.cjs.map +1 -0
  445. package/dist/profiles/profileEditor.d.ts +19 -0
  446. package/dist/profiles/profileEditor.d.ts.map +1 -0
  447. package/dist/profiles/profileEditor.js +386 -0
  448. package/dist/profiles/profileEditor.js.map +1 -0
  449. package/dist/profiles/profileEditorModel.cjs +181 -0
  450. package/dist/profiles/profileEditorModel.cjs.map +1 -0
  451. package/dist/profiles/profileEditorModel.d.ts +74 -0
  452. package/dist/profiles/profileEditorModel.d.ts.map +1 -0
  453. package/dist/profiles/profileEditorModel.js +181 -0
  454. package/dist/profiles/profileEditorModel.js.map +1 -0
  455. package/dist/profiles/profileEditorPreview.cjs +38 -0
  456. package/dist/profiles/profileEditorPreview.cjs.map +1 -0
  457. package/dist/profiles/profileEditorPreview.d.ts +12 -0
  458. package/dist/profiles/profileEditorPreview.d.ts.map +1 -0
  459. package/dist/profiles/profileEditorPreview.js +38 -0
  460. package/dist/profiles/profileEditorPreview.js.map +1 -0
  461. package/dist/profiles/profileEditorRail.cjs +46 -0
  462. package/dist/profiles/profileEditorRail.cjs.map +1 -0
  463. package/dist/profiles/profileEditorRail.d.ts +8 -0
  464. package/dist/profiles/profileEditorRail.d.ts.map +1 -0
  465. package/dist/profiles/profileEditorRail.js +46 -0
  466. package/dist/profiles/profileEditorRail.js.map +1 -0
  467. package/dist/profiles/profileEditorRaw.cjs +118 -0
  468. package/dist/profiles/profileEditorRaw.cjs.map +1 -0
  469. package/dist/profiles/profileEditorRaw.d.ts +7 -0
  470. package/dist/profiles/profileEditorRaw.d.ts.map +1 -0
  471. package/dist/profiles/profileEditorRaw.js +118 -0
  472. package/dist/profiles/profileEditorRaw.js.map +1 -0
  473. package/dist/profiles/profileEditorRoutes.cjs +7 -0
  474. package/dist/profiles/profileEditorRoutes.cjs.map +1 -0
  475. package/dist/profiles/profileEditorRoutes.d.ts +2 -0
  476. package/dist/profiles/profileEditorRoutes.d.ts.map +1 -0
  477. package/dist/profiles/profileEditorRoutes.js +7 -0
  478. package/dist/profiles/profileEditorRoutes.js.map +1 -0
  479. package/dist/profiles/profileEditorSections.cjs +213 -0
  480. package/dist/profiles/profileEditorSections.cjs.map +1 -0
  481. package/dist/profiles/profileEditorSections.d.ts +23 -0
  482. package/dist/profiles/profileEditorSections.d.ts.map +1 -0
  483. package/dist/profiles/profileEditorSections.js +213 -0
  484. package/dist/profiles/profileEditorSections.js.map +1 -0
  485. package/dist/profiles/profileFieldEditor.cjs +200 -0
  486. package/dist/profiles/profileFieldEditor.cjs.map +1 -0
  487. package/dist/profiles/profileFieldEditor.d.ts +34 -0
  488. package/dist/profiles/profileFieldEditor.d.ts.map +1 -0
  489. package/dist/profiles/profileFieldEditor.js +200 -0
  490. package/dist/profiles/profileFieldEditor.js.map +1 -0
  491. package/dist/profiles/profileFieldGrid.cjs +250 -0
  492. package/dist/profiles/profileFieldGrid.cjs.map +1 -0
  493. package/dist/profiles/profileFieldGrid.d.ts +20 -0
  494. package/dist/profiles/profileFieldGrid.d.ts.map +1 -0
  495. package/dist/profiles/profileFieldGrid.js +250 -0
  496. package/dist/profiles/profileFieldGrid.js.map +1 -0
  497. package/dist/profiles/profileFieldManager.cjs +103 -0
  498. package/dist/profiles/profileFieldManager.cjs.map +1 -0
  499. package/dist/profiles/profileFieldManager.d.ts +9 -0
  500. package/dist/profiles/profileFieldManager.d.ts.map +1 -0
  501. package/dist/profiles/profileFieldManager.js +103 -0
  502. package/dist/profiles/profileFieldManager.js.map +1 -0
  503. package/dist/profiles/profileFieldState.cjs +136 -0
  504. package/dist/profiles/profileFieldState.cjs.map +1 -0
  505. package/dist/profiles/profileFieldState.d.ts +41 -0
  506. package/dist/profiles/profileFieldState.d.ts.map +1 -0
  507. package/dist/profiles/profileFieldState.js +136 -0
  508. package/dist/profiles/profileFieldState.js.map +1 -0
  509. package/dist/profiles/profileFieldTypes.cjs +17 -0
  510. package/dist/profiles/profileFieldTypes.cjs.map +1 -0
  511. package/dist/profiles/profileFieldTypes.d.ts +8 -0
  512. package/dist/profiles/profileFieldTypes.d.ts.map +1 -0
  513. package/dist/profiles/profileFieldTypes.js +17 -0
  514. package/dist/profiles/profileFieldTypes.js.map +1 -0
  515. package/dist/profiles/profileParamModel.cjs +78 -0
  516. package/dist/profiles/profileParamModel.cjs.map +1 -0
  517. package/dist/profiles/profileParamModel.d.ts +3 -0
  518. package/dist/profiles/profileParamModel.d.ts.map +1 -0
  519. package/dist/profiles/profileParamModel.js +78 -0
  520. package/dist/profiles/profileParamModel.js.map +1 -0
  521. package/dist/profiles/profileSamplePayload.cjs +15 -0
  522. package/dist/profiles/profileSamplePayload.cjs.map +1 -0
  523. package/dist/profiles/profileSamplePayload.d.ts +13 -0
  524. package/dist/profiles/profileSamplePayload.d.ts.map +1 -0
  525. package/dist/profiles/profileSamplePayload.js +15 -0
  526. package/dist/profiles/profileSamplePayload.js.map +1 -0
  527. package/dist/profiles/profileWizard.cjs +257 -0
  528. package/dist/profiles/profileWizard.cjs.map +1 -0
  529. package/dist/profiles/profileWizard.d.ts +12 -0
  530. package/dist/profiles/profileWizard.d.ts.map +1 -0
  531. package/dist/profiles/profileWizard.js +257 -0
  532. package/dist/profiles/profileWizard.js.map +1 -0
  533. package/dist/profiles/profileWizardHelp.cjs +10 -0
  534. package/dist/profiles/profileWizardHelp.cjs.map +1 -0
  535. package/dist/profiles/profileWizardHelp.d.ts +13 -0
  536. package/dist/profiles/profileWizardHelp.d.ts.map +1 -0
  537. package/dist/profiles/profileWizardHelp.js +10 -0
  538. package/dist/profiles/profileWizardHelp.js.map +1 -0
  539. package/dist/profiles/profileWizardModel.cjs +198 -0
  540. package/dist/profiles/profileWizardModel.cjs.map +1 -0
  541. package/dist/profiles/profileWizardModel.d.ts +255 -0
  542. package/dist/profiles/profileWizardModel.d.ts.map +1 -0
  543. package/dist/profiles/profileWizardModel.js +198 -0
  544. package/dist/profiles/profileWizardModel.js.map +1 -0
  545. package/dist/profiles/profileWizardQueryStep.cjs +215 -0
  546. package/dist/profiles/profileWizardQueryStep.cjs.map +1 -0
  547. package/dist/profiles/profileWizardQueryStep.d.ts +18 -0
  548. package/dist/profiles/profileWizardQueryStep.d.ts.map +1 -0
  549. package/dist/profiles/profileWizardQueryStep.js +215 -0
  550. package/dist/profiles/profileWizardQueryStep.js.map +1 -0
  551. package/dist/profiles/profileWizardSteps.cjs +214 -0
  552. package/dist/profiles/profileWizardSteps.cjs.map +1 -0
  553. package/dist/profiles/profileWizardSteps.d.ts +35 -0
  554. package/dist/profiles/profileWizardSteps.d.ts.map +1 -0
  555. package/dist/profiles/profileWizardSteps.js +214 -0
  556. package/dist/profiles/profileWizardSteps.js.map +1 -0
  557. package/dist/profiles/profileYaml.cjs +19 -0
  558. package/dist/profiles/profileYaml.cjs.map +1 -0
  559. package/dist/profiles/profileYaml.d.ts +4 -0
  560. package/dist/profiles/profileYaml.d.ts.map +1 -0
  561. package/dist/profiles/profileYaml.js +19 -0
  562. package/dist/profiles/profileYaml.js.map +1 -0
  563. package/dist/profiles/prometheusResults.cjs +60 -0
  564. package/dist/profiles/prometheusResults.cjs.map +1 -0
  565. package/dist/profiles/prometheusResults.d.ts +7 -0
  566. package/dist/profiles/prometheusResults.d.ts.map +1 -0
  567. package/dist/profiles/prometheusResults.js +60 -0
  568. package/dist/profiles/prometheusResults.js.map +1 -0
  569. package/dist/profiles/queryRowLimits.cjs +82 -0
  570. package/dist/profiles/queryRowLimits.cjs.map +1 -0
  571. package/dist/profiles/queryRowLimits.d.ts +9 -0
  572. package/dist/profiles/queryRowLimits.d.ts.map +1 -0
  573. package/dist/profiles/queryRowLimits.js +82 -0
  574. package/dist/profiles/queryRowLimits.js.map +1 -0
  575. package/dist/profiles/queryRowLimitsModel.cjs +10 -0
  576. package/dist/profiles/queryRowLimitsModel.cjs.map +1 -0
  577. package/dist/profiles/queryRowLimitsModel.d.ts +9 -0
  578. package/dist/profiles/queryRowLimitsModel.d.ts.map +1 -0
  579. package/dist/profiles/queryRowLimitsModel.js +10 -0
  580. package/dist/profiles/queryRowLimitsModel.js.map +1 -0
  581. package/dist/profiles/queryTargetPicker.cjs +42 -0
  582. package/dist/profiles/queryTargetPicker.cjs.map +1 -0
  583. package/dist/profiles/queryTargetPicker.d.ts +8 -0
  584. package/dist/profiles/queryTargetPicker.d.ts.map +1 -0
  585. package/dist/profiles/queryTargetPicker.js +42 -0
  586. package/dist/profiles/queryTargetPicker.js.map +1 -0
  587. package/dist/profiles/testSchema.d.ts +3 -0
  588. package/dist/profiles/testSchema.d.ts.map +1 -0
  589. package/dist/profiles.cjs +223 -0
  590. package/dist/profiles.cjs.map +1 -0
  591. package/dist/profiles.d.ts +68 -0
  592. package/dist/profiles.d.ts.map +1 -0
  593. package/dist/profiles.js +223 -0
  594. package/dist/profiles.js.map +1 -0
  595. package/dist/rpc/FilterForm.cjs +20 -0
  596. package/dist/rpc/FilterForm.cjs.map +1 -1
  597. package/dist/rpc/FilterForm.js +20 -0
  598. package/dist/rpc/FilterForm.js.map +1 -1
  599. package/dist/rpc/formMetadata.cjs +34 -0
  600. package/dist/rpc/formMetadata.cjs.map +1 -1
  601. package/dist/rpc/formMetadata.d.ts.map +1 -1
  602. package/dist/rpc/formMetadata.js +35 -1
  603. package/dist/rpc/formMetadata.js.map +1 -1
  604. package/dist/rpc/types.cjs.map +1 -1
  605. package/dist/rpc/types.d.ts +9 -1
  606. package/dist/rpc/types.d.ts.map +1 -1
  607. package/dist/rpc/types.js.map +1 -1
  608. package/dist/styles.css +1 -1
  609. package/package.json +6 -1
@@ -0,0 +1,213 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { JsonSchemaForm } from "../components/JsonSchemaForm.js";
3
+ import { Icon } from "../data/Icon.js";
4
+ import { mergeProfileProjection, profileSchemaProjection, providerTypes, providerOptionsSchema } from "./profileEditorModel.js";
5
+ import { ProfileWizardQueryStep } from "./profileWizardQueryStep.js";
6
+ import { profileConnectionID } from "./profileWizardModel.js";
7
+ const inputClassName = "w-full rounded-md border border-input bg-background px-3 py-2 text-sm outline-none focus:border-primary focus:ring-2 focus:ring-primary/15";
8
+ function ProfileGeneralSection({
9
+ draft,
10
+ onChange
11
+ }) {
12
+ return /* @__PURE__ */ jsx(
13
+ SectionCard,
14
+ {
15
+ title: "Profile identity",
16
+ description: "Name the profile and choose its default presentation. Renaming updates dependent imports when you save.",
17
+ children: /* @__PURE__ */ jsxs("div", { className: "grid gap-5 md:grid-cols-2", children: [
18
+ /* @__PURE__ */ jsx(EditorField, { label: "Profile name", required: true, children: /* @__PURE__ */ jsx(
19
+ "input",
20
+ {
21
+ value: draft.profile ?? "",
22
+ className: inputClassName,
23
+ onChange: (event) => onChange({ ...draft, profile: event.target.value })
24
+ }
25
+ ) }),
26
+ /* @__PURE__ */ jsx(EditorField, { label: "Namespace", children: /* @__PURE__ */ jsx(
27
+ "input",
28
+ {
29
+ value: draft.namespace ?? "",
30
+ className: inputClassName,
31
+ placeholder: "Default namespace",
32
+ onChange: (event) => onChange({ ...draft, namespace: event.target.value })
33
+ }
34
+ ) }),
35
+ /* @__PURE__ */ jsx(EditorField, { label: "Render mode", children: /* @__PURE__ */ jsxs(
36
+ "select",
37
+ {
38
+ value: typeof draft.render === "string" ? draft.render : "",
39
+ className: inputClassName,
40
+ onChange: (event) => onChange({ ...draft, render: event.target.value || void 0 }),
41
+ children: [
42
+ /* @__PURE__ */ jsx("option", { value: "", children: "Table (default)" }),
43
+ /* @__PURE__ */ jsx("option", { value: "table", children: "Table" }),
44
+ /* @__PURE__ */ jsx("option", { value: "logs", children: "Logs" })
45
+ ]
46
+ }
47
+ ) }),
48
+ /* @__PURE__ */ jsx(EditorField, { label: "Icon", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
49
+ /* @__PURE__ */ jsx(
50
+ "input",
51
+ {
52
+ value: typeof draft.icon === "string" ? draft.icon : "",
53
+ className: inputClassName,
54
+ placeholder: "Provider default",
55
+ onChange: (event) => onChange({ ...draft, icon: event.target.value || void 0 })
56
+ }
57
+ ),
58
+ typeof draft.icon === "string" && draft.icon !== "" ? (
59
+ // Shows what the name actually resolves to — an unresolvable name
60
+ // renders nothing anywhere, which is invisible without a preview.
61
+ /* @__PURE__ */ jsx(Icon, { name: draft.icon, className: "size-5 shrink-0" })
62
+ ) : null
63
+ ] }) })
64
+ ] })
65
+ }
66
+ );
67
+ }
68
+ function ProfileSourceSection({
69
+ draft,
70
+ discovered,
71
+ sampleStale,
72
+ onChange,
73
+ onSample
74
+ }) {
75
+ var _a, _b, _c, _d;
76
+ const connectionID = profileConnectionID(((_a = draft.provider) == null ? void 0 : _a.connection) ?? "");
77
+ const providerType = ((_b = draft.provider) == null ? void 0 : _b.type) ?? "";
78
+ return /* @__PURE__ */ jsxs("div", { className: "grid h-full min-h-0 gap-4", children: [
79
+ /* @__PURE__ */ jsxs(
80
+ SectionCard,
81
+ {
82
+ title: "Source",
83
+ description: "Select the provider and saved connection. Connection credentials remain server-side.",
84
+ children: [
85
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-4 md:grid-cols-2", children: [
86
+ /* @__PURE__ */ jsx(EditorField, { label: "Provider type", required: true, children: /* @__PURE__ */ jsxs(
87
+ "select",
88
+ {
89
+ value: providerType,
90
+ className: inputClassName,
91
+ onChange: (event) => onChange({
92
+ ...draft,
93
+ provider: { ...draft.provider, type: event.target.value }
94
+ }),
95
+ children: [
96
+ /* @__PURE__ */ jsx("option", { value: "", children: "Choose a provider" }),
97
+ providerTypes().map((type) => /* @__PURE__ */ jsx("option", { value: type, children: type }, type))
98
+ ]
99
+ }
100
+ ) }),
101
+ /* @__PURE__ */ jsx(EditorField, { label: "Saved connection or inline URL", children: /* @__PURE__ */ jsx(
102
+ "input",
103
+ {
104
+ value: ((_c = draft.provider) == null ? void 0 : _c.connection) ?? "",
105
+ className: inputClassName,
106
+ placeholder: "connection://name",
107
+ onChange: (event) => onChange({
108
+ ...draft,
109
+ provider: { ...draft.provider, connection: event.target.value }
110
+ })
111
+ }
112
+ ) })
113
+ ] }),
114
+ sampleStale ? /* @__PURE__ */ jsx("p", { className: "mt-4 rounded-lg border border-warning/40 bg-warning/10 px-4 py-3 text-sm text-warning-foreground", children: "Source or query settings changed after the latest sample. You can save, but sampling again will verify the current field shape." }) : null
115
+ ]
116
+ }
117
+ ),
118
+ connectionID ? /* @__PURE__ */ jsx(
119
+ ProfileWizardQueryStep,
120
+ {
121
+ connectionID,
122
+ draft,
123
+ discovered,
124
+ onDraftChange: onChange,
125
+ onSample
126
+ },
127
+ connectionID
128
+ ) : /* @__PURE__ */ jsxs(
129
+ SectionCard,
130
+ {
131
+ title: "Query and provider options",
132
+ description: "Inline sources use the provider schema for options while keeping the query workspace explicit.",
133
+ children: [
134
+ /* @__PURE__ */ jsx(EditorField, { label: "Query", children: /* @__PURE__ */ jsx(
135
+ "textarea",
136
+ {
137
+ rows: 10,
138
+ value: draft.query ?? "",
139
+ className: `${inputClassName} resize-y font-mono text-xs`,
140
+ onChange: (event) => onChange({ ...draft, query: event.target.value })
141
+ }
142
+ ) }),
143
+ /* @__PURE__ */ jsx("div", { className: "mt-5", children: /* @__PURE__ */ jsx(
144
+ JsonSchemaForm,
145
+ {
146
+ idPrefix: "profile-provider-options",
147
+ schema: providerOptionsSchema(providerType),
148
+ value: ((_d = draft.provider) == null ? void 0 : _d.options) ?? {},
149
+ onChange: (options) => onChange({
150
+ ...draft,
151
+ provider: { ...draft.provider, options }
152
+ }),
153
+ showPreferencesMenu: false
154
+ }
155
+ ) })
156
+ ]
157
+ }
158
+ )
159
+ ] });
160
+ }
161
+ function ProfileSchemaSection({
162
+ draft,
163
+ keys,
164
+ title,
165
+ description,
166
+ idPrefix,
167
+ layout,
168
+ lookupFetcher,
169
+ onChange
170
+ }) {
171
+ return /* @__PURE__ */ jsx(SectionCard, { title, description, children: /* @__PURE__ */ jsx(
172
+ JsonSchemaForm,
173
+ {
174
+ idPrefix,
175
+ schema: profileSchemaProjection(keys),
176
+ value: Object.fromEntries(keys.flatMap((key) => Object.prototype.hasOwnProperty.call(draft, key) ? [[key, draft[key]]] : [])),
177
+ onChange: (next) => onChange(mergeProfileProjection(draft, keys, next)),
178
+ showPreferencesMenu: false,
179
+ ...layout ? { layout } : {},
180
+ ...lookupFetcher ? { lookupFetcher } : {}
181
+ }
182
+ ) });
183
+ }
184
+ function SectionCard({
185
+ title,
186
+ description,
187
+ children
188
+ }) {
189
+ return /* @__PURE__ */ jsxs("section", { className: "rounded-xl border bg-card p-5", children: [
190
+ /* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold", children: title }),
191
+ /* @__PURE__ */ jsx("p", { className: "mb-5 mt-1 text-sm text-muted-foreground", children: description }),
192
+ children
193
+ ] });
194
+ }
195
+ function EditorField({
196
+ label,
197
+ required,
198
+ children
199
+ }) {
200
+ return /* @__PURE__ */ jsxs("label", { className: "grid gap-1.5 text-sm font-medium", children: [
201
+ /* @__PURE__ */ jsxs("span", { children: [
202
+ label,
203
+ required ? /* @__PURE__ */ jsx("span", { className: "text-destructive", children: " *" }) : null
204
+ ] }),
205
+ children
206
+ ] });
207
+ }
208
+ export {
209
+ ProfileGeneralSection,
210
+ ProfileSchemaSection,
211
+ ProfileSourceSection
212
+ };
213
+ //# sourceMappingURL=profileEditorSections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profileEditorSections.js","sources":["../../src/profiles/profileEditorSections.tsx"],"sourcesContent":["import { JsonSchemaForm } from \"../components/JsonSchemaForm\";\nimport type { FormLayout, LookupFetcher } from \"../components/json-schema-form-types\";\nimport { Icon } from \"../data/Icon\";\nimport type { ReactNode } from \"react\";\nimport {\n mergeProfileProjection,\n profileSchemaProjection,\n providerOptionsSchema,\n providerTypes,\n} from \"./profileEditorModel\";\nimport { ProfileWizardQueryStep, type ProfileSample } from \"./profileWizardQueryStep\";\nimport {\n profileConnectionID,\n type ProfileColumn,\n type ProfileWizardDraft,\n} from \"./profileWizardModel\";\n\nconst inputClassName =\n \"w-full rounded-md border border-input bg-background px-3 py-2 text-sm outline-none focus:border-primary focus:ring-2 focus:ring-primary/15\";\n\nexport function ProfileGeneralSection({\n draft,\n onChange,\n}: EditorSectionProps) {\n return (\n <SectionCard\n title=\"Profile identity\"\n description=\"Name the profile and choose its default presentation. Renaming updates dependent imports when you save.\"\n >\n <div className=\"grid gap-5 md:grid-cols-2\">\n <EditorField label=\"Profile name\" required>\n <input\n value={draft.profile ?? \"\"}\n className={inputClassName}\n onChange={(event) => onChange({ ...draft, profile: event.target.value })}\n />\n </EditorField>\n <EditorField label=\"Namespace\">\n <input\n value={draft.namespace ?? \"\"}\n className={inputClassName}\n placeholder=\"Default namespace\"\n onChange={(event) => onChange({ ...draft, namespace: event.target.value })}\n />\n </EditorField>\n <EditorField label=\"Render mode\">\n <select\n value={typeof draft.render === \"string\" ? draft.render : \"\"}\n className={inputClassName}\n onChange={(event) => onChange({ ...draft, render: event.target.value || undefined })}\n >\n <option value=\"\">Table (default)</option>\n <option value=\"table\">Table</option>\n <option value=\"logs\">Logs</option>\n </select>\n </EditorField>\n <EditorField label=\"Icon\">\n <div className=\"flex items-center gap-2\">\n <input\n value={typeof draft.icon === \"string\" ? draft.icon : \"\"}\n className={inputClassName}\n // Empty is the norm: the provider type already supplies a mark.\n // This is for the profile whose subject is not its backend.\n placeholder=\"Provider default\"\n onChange={(event) => onChange({ ...draft, icon: event.target.value || undefined })}\n />\n {typeof draft.icon === \"string\" && draft.icon !== \"\" ? (\n // Shows what the name actually resolves to — an unresolvable name\n // renders nothing anywhere, which is invisible without a preview.\n <Icon name={draft.icon} className=\"size-5 shrink-0\" />\n ) : null}\n </div>\n </EditorField>\n </div>\n </SectionCard>\n );\n}\n\nexport function ProfileSourceSection({\n draft,\n discovered,\n sampleStale,\n onChange,\n onSample,\n}: EditorSectionProps & {\n discovered: ProfileColumn[];\n sampleStale: boolean;\n onSample: (sample: ProfileSample) => void;\n}) {\n const connectionID = profileConnectionID(draft.provider?.connection ?? \"\");\n const providerType = draft.provider?.type ?? \"\";\n return (\n <div className=\"grid h-full min-h-0 gap-4\">\n <SectionCard\n title=\"Source\"\n description=\"Select the provider and saved connection. Connection credentials remain server-side.\"\n >\n <div className=\"grid gap-4 md:grid-cols-2\">\n <EditorField label=\"Provider type\" required>\n <select\n value={providerType}\n className={inputClassName}\n onChange={(event) =>\n onChange({\n ...draft,\n provider: { ...draft.provider, type: event.target.value },\n })\n }\n >\n <option value=\"\">Choose a provider</option>\n {providerTypes().map((type) => <option key={type} value={type}>{type}</option>)}\n </select>\n </EditorField>\n <EditorField label=\"Saved connection or inline URL\">\n <input\n value={draft.provider?.connection ?? \"\"}\n className={inputClassName}\n placeholder=\"connection://name\"\n onChange={(event) =>\n onChange({\n ...draft,\n provider: { ...draft.provider, connection: event.target.value },\n })\n }\n />\n </EditorField>\n </div>\n {sampleStale ? (\n <p className=\"mt-4 rounded-lg border border-warning/40 bg-warning/10 px-4 py-3 text-sm text-warning-foreground\">\n Source or query settings changed after the latest sample. You can save,\n but sampling again will verify the current field shape.\n </p>\n ) : null}\n </SectionCard>\n {connectionID ? (\n <ProfileWizardQueryStep\n key={connectionID}\n connectionID={connectionID}\n draft={draft}\n discovered={discovered}\n onDraftChange={onChange}\n onSample={onSample}\n />\n ) : (\n <SectionCard\n title=\"Query and provider options\"\n description=\"Inline sources use the provider schema for options while keeping the query workspace explicit.\"\n >\n <EditorField label=\"Query\">\n <textarea\n rows={10}\n value={draft.query ?? \"\"}\n className={`${inputClassName} resize-y font-mono text-xs`}\n onChange={(event) => onChange({ ...draft, query: event.target.value })}\n />\n </EditorField>\n <div className=\"mt-5\">\n <JsonSchemaForm\n idPrefix=\"profile-provider-options\"\n schema={providerOptionsSchema(providerType)}\n value={draft.provider?.options ?? {}}\n onChange={(options) =>\n onChange({\n ...draft,\n provider: { ...draft.provider, options },\n })\n }\n showPreferencesMenu={false}\n />\n </div>\n </SectionCard>\n )}\n </div>\n );\n}\n\nexport function ProfileSchemaSection({\n draft,\n keys,\n title,\n description,\n idPrefix,\n layout,\n lookupFetcher,\n onChange,\n}: EditorSectionProps & {\n keys: string[];\n title: string;\n description: string;\n idPrefix: string;\n // Presentation is the call site's, not this component's — it is shared with\n // Advanced composition, which must keep the plain stacked defaults.\n layout?: FormLayout;\n // JsonSchemaForm always installs its own lookup provider, so an outer one is\n // shadowed rather than inherited: without this, x-clicky-lookup fields (the\n // imports and reconcile.dest profile pickers) render with no options at all.\n lookupFetcher?: LookupFetcher;\n}) {\n return (\n <SectionCard title={title} description={description}>\n <JsonSchemaForm\n idPrefix={idPrefix}\n schema={profileSchemaProjection(keys)}\n value={Object.fromEntries(keys.flatMap((key) => Object.prototype.hasOwnProperty.call(draft, key) ? [[key, draft[key]]] : []))}\n onChange={(next) => onChange(mergeProfileProjection(draft, keys, next))}\n showPreferencesMenu={false}\n {...(layout ? { layout } : {})}\n {...(lookupFetcher ? { lookupFetcher } : {})}\n />\n </SectionCard>\n );\n}\n\ntype EditorSectionProps = {\n draft: ProfileWizardDraft;\n onChange: (draft: ProfileWizardDraft) => void;\n};\n\nfunction SectionCard({\n title,\n description,\n children,\n}: {\n title: string;\n description: string;\n children: ReactNode;\n}) {\n return (\n <section className=\"rounded-xl border bg-card p-5\">\n <h2 className=\"text-lg font-semibold\">{title}</h2>\n <p className=\"mb-5 mt-1 text-sm text-muted-foreground\">{description}</p>\n {children}\n </section>\n );\n}\n\nfunction EditorField({\n label,\n required,\n children,\n}: {\n label: string;\n required?: boolean;\n children: ReactNode;\n}) {\n return (\n <label className=\"grid gap-1.5 text-sm font-medium\">\n <span>{label}{required ? <span className=\"text-destructive\"> *</span> : null}</span>\n {children}\n </label>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const JSONPathField = require("../components/JSONPathField.cjs");
5
+ const button = require("../components/button.cjs");
6
+ const profileWizardModel = require("./profileWizardModel.cjs");
7
+ const jsonPathSample = require("./jsonPathSample.cjs");
8
+ const inputClassName = "w-full rounded-md border border-input bg-background px-3 py-2 text-sm outline-none focus:border-primary focus:ring-2 focus:ring-primary/15";
9
+ const profileFieldEditorEmptyMessage = "Add a column or run a sample to discover fields.";
10
+ function ProfileFieldEditorActions({
11
+ canMoveUp,
12
+ canMoveDown,
13
+ selected,
14
+ onSelectedChange,
15
+ onMoveUp,
16
+ onMoveDown,
17
+ onRemove
18
+ }) {
19
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
20
+ /* @__PURE__ */ jsxRuntime.jsx(button.Button, { type: "button", size: "sm", variant: "ghost", disabled: !canMoveUp, onClick: onMoveUp, children: "Move up" }),
21
+ /* @__PURE__ */ jsxRuntime.jsx(button.Button, { type: "button", size: "sm", variant: "ghost", disabled: !canMoveDown, onClick: onMoveDown, children: "Move down" }),
22
+ /* @__PURE__ */ jsxRuntime.jsx(button.Button, { type: "button", size: "sm", variant: "ghost", onClick: onRemove, children: "Remove" }),
23
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-sm font-medium", children: [
24
+ /* @__PURE__ */ jsxRuntime.jsx(
25
+ "input",
26
+ {
27
+ type: "checkbox",
28
+ checked: selected,
29
+ onChange: (event) => onSelectedChange(event.target.checked)
30
+ }
31
+ ),
32
+ "Include"
33
+ ] })
34
+ ] });
35
+ }
36
+ function ProfileFieldEditorForm({
37
+ field,
38
+ columns = 2,
39
+ onChange
40
+ }) {
41
+ const wide = columns === 2 ? "sm:col-span-2" : "";
42
+ const rows = jsonPathSample.useJsonPathSampleRows();
43
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `grid gap-4 ${columns === 2 ? "sm:grid-cols-2" : ""}`, children: [
44
+ /* @__PURE__ */ jsxRuntime.jsx(EditorField, { label: "Output name", help: "Public field name used by tables, filters, APIs, and every export.", children: /* @__PURE__ */ jsxRuntime.jsx("input", { value: field.name, className: inputClassName, onChange: (event) => onChange({ name: event.target.value }) }) }),
45
+ /* @__PURE__ */ jsxRuntime.jsx(EditorField, { label: "Display label", help: "Optional table header; blank uses the field name.", children: /* @__PURE__ */ jsxRuntime.jsx("input", { value: field.label ?? "", className: inputClassName, placeholder: field.name, onChange: (event) => onChange({ label: event.target.value || void 0 }) }) }),
46
+ /* @__PURE__ */ jsxRuntime.jsx(EditorField, { label: "Data type", help: "Value shape and default formatting; independent of Role.", children: /* @__PURE__ */ jsxRuntime.jsxs("select", { value: field.type ?? "", className: inputClassName, onChange: (event) => onChange({ type: event.target.value || void 0 }), children: [
47
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: "Auto detect" }),
48
+ ["string", "number", "boolean", "datetime", "duration", "bytes", "status", "health", "key_value", "key_values", "json"].map((type) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: type, children: type }, type))
49
+ ] }) }),
50
+ /* @__PURE__ */ jsxRuntime.jsx(EditorField, { label: "Role", help: "Optional table behavior, independent of Type.", children: /* @__PURE__ */ jsxRuntime.jsxs("select", { value: field.kind ?? "", className: inputClassName, onChange: (event) => onChange({ kind: event.target.value || void 0 }), children: [
51
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: "Standard field" }),
52
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "timestamp", children: "Timestamp" }),
53
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "tags", children: "Tags" }),
54
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "status", children: "Status" })
55
+ ] }) }),
56
+ /* @__PURE__ */ jsxRuntime.jsx(EditorField, { label: "Format", help: "Optional formatter; Unit takes precedence when both are set.", children: /* @__PURE__ */ jsxRuntime.jsxs("select", { value: field.format ?? "", className: inputClassName, onChange: (event) => onChange({ format: event.target.value || void 0 }), children: [
57
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: "From Type" }),
58
+ profileWizardModel.PROFILE_COLUMN_FORMAT_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: option.label }, option.value))
59
+ ] }) }),
60
+ /* @__PURE__ */ jsxRuntime.jsx(EditorField, { label: "Unit", help: "Numeric scaling for number, duration, or bytes Types.", children: /* @__PURE__ */ jsxRuntime.jsxs("select", { value: field.unit ?? "", className: inputClassName, onChange: (event) => onChange({ unit: event.target.value || void 0 }), children: [
61
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: "No unit" }),
62
+ profileWizardModel.PROFILE_COLUMN_UNIT_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: option.label }, option.value))
63
+ ] }) }),
64
+ /* @__PURE__ */ jsxRuntime.jsx(EditorField, { label: "Max width (characters)", help: "Maximum rendered width; blank uses the table default.", children: /* @__PURE__ */ jsxRuntime.jsx("input", { type: "number", min: 1, value: field.width ?? "", className: inputClassName, placeholder: "Auto", onChange: (event) => onChange({ width: event.target.value ? Number(event.target.value) : void 0 }) }) }),
65
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: wide, children: /* @__PURE__ */ jsxRuntime.jsx(EditorField, { label: "CEL expression", help: "Optional expression computing the value from row.", children: /* @__PURE__ */ jsxRuntime.jsx("textarea", { rows: 4, value: field.cel ?? "", className: `${inputClassName} resize-y font-mono text-xs`, placeholder: "Optional value transformation", onChange: (event) => onChange({ cel: event.target.value || void 0 }) }) }) }),
66
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: wide, children: /* @__PURE__ */ jsxRuntime.jsx(EditorField, { label: "JSONPath", help: "Optional path computing the value, rooted at the row or at Source; an alternative to CEL.", children: /* @__PURE__ */ jsxRuntime.jsx(
67
+ JSONPathField.JSONPathField,
68
+ {
69
+ "aria-label": "JSONPath",
70
+ value: field.jsonpath ?? "",
71
+ onChange: (next) => onChange({ jsonpath: next || void 0 }),
72
+ onSelectPath: (next, { root }) => onChange({ jsonpath: next || void 0, source: root }),
73
+ ...field.source ? { source: field.source } : {},
74
+ ...rows.length === 0 ? {} : { json: rows[0], rows },
75
+ evaluate: jsonPathSample.evaluateJsonPath
76
+ }
77
+ ) }) }),
78
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: `flex items-center gap-2 text-sm font-medium ${wide}`, children: [
79
+ /* @__PURE__ */ jsxRuntime.jsx("input", { type: "checkbox", checked: field.hidden ?? false, onChange: (event) => onChange({ hidden: event.target.checked }) }),
80
+ "Hide this field in the default table"
81
+ ] }),
82
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: wide, children: /* @__PURE__ */ jsxRuntime.jsx(ProfileFieldFilterEditor, { field, columns, onChange }) })
83
+ ] });
84
+ }
85
+ function ProfileFieldFilterEditor({
86
+ field,
87
+ columns,
88
+ onChange
89
+ }) {
90
+ var _a, _b;
91
+ const filter = field.filter ?? {};
92
+ const set = (patch) => onChange({ filter: profileWizardModel.patchColumnFilter(field.filter, patch) });
93
+ const kind = filter.kind ?? profileWizardModel.inferredFilterKind(field);
94
+ const picksFromAList = kind === "terms";
95
+ const enumerated = (((_a = filter.options) == null ? void 0 : _a.length) ?? 0) > 0;
96
+ const looksUp = picksFromAList && !enumerated && (filter.lookup ?? true);
97
+ return /* @__PURE__ */ jsxRuntime.jsxs("details", { className: "rounded-md border px-3 py-2", children: [
98
+ /* @__PURE__ */ jsxRuntime.jsxs("summary", { className: "cursor-pointer text-sm font-medium", children: [
99
+ "Filtering",
100
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 text-xs font-normal text-muted-foreground", children: filter.disabled ? "off" : summarizeFilter(kind, enumerated, looksUp, filter.limit) })
101
+ ] }),
102
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `mt-3 grid gap-4 ${columns === 2 ? "sm:grid-cols-2" : ""}`, children: [
103
+ /* @__PURE__ */ jsxRuntime.jsx(EditorField, { label: "Control", help: "Overrides the control derived from Type; set it where the rendered type and the backend storage disagree.", children: /* @__PURE__ */ jsxRuntime.jsxs("select", { value: filter.kind ?? "", className: inputClassName, onChange: (event) => set({ kind: event.target.value || void 0 }), children: [
104
+ /* @__PURE__ */ jsxRuntime.jsxs("option", { value: "", children: [
105
+ "From Type (",
106
+ ((_b = profileWizardModel.PROFILE_FILTER_KIND_OPTIONS.find((o) => o.value === kind)) == null ? void 0 : _b.label) ?? kind,
107
+ ")"
108
+ ] }),
109
+ profileWizardModel.PROFILE_FILTER_KIND_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: option.label }, option.value))
110
+ ] }) }),
111
+ /* @__PURE__ */ jsxRuntime.jsx(EditorField, { label: "Backend field", help: "The indexed field for a document store, the result column for SQL; blank infers it from the column.", children: /* @__PURE__ */ jsxRuntime.jsx("input", { value: filter.field ?? "", className: inputClassName, placeholder: field.source || field.name, onChange: (event) => set({ field: event.target.value || void 0 }) }) }),
112
+ picksFromAList ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
113
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sm:col-span-2", children: /* @__PURE__ */ jsxRuntime.jsx(EditorField, { label: "Values", help: "Comma-separated values to offer instead of asking the backend; leave blank to enumerate from the data.", children: /* @__PURE__ */ jsxRuntime.jsx(
114
+ "input",
115
+ {
116
+ value: (filter.options ?? []).join(", "),
117
+ className: inputClassName,
118
+ placeholder: "Ask the backend",
119
+ onChange: (event) => set({ options: parseFilterOptions(event.target.value) })
120
+ }
121
+ ) }) }),
122
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-sm font-medium", children: [
123
+ /* @__PURE__ */ jsxRuntime.jsx(
124
+ "input",
125
+ {
126
+ type: "checkbox",
127
+ checked: looksUp,
128
+ disabled: enumerated,
129
+ onChange: (event) => set({ lookup: event.target.checked })
130
+ }
131
+ ),
132
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: enumerated ? "text-muted-foreground" : void 0, children: enumerated ? "Values are listed above" : "Look values up from the data" })
133
+ ] }),
134
+ /* @__PURE__ */ jsxRuntime.jsx(EditorField, { label: "Values offered", help: `How many distinct values the control lists before the rest have to be typed for. Blank uses ${profileWizardModel.PROFILE_FILTER_DEFAULT_LIMIT}.`, children: /* @__PURE__ */ jsxRuntime.jsx(
135
+ "input",
136
+ {
137
+ type: "number",
138
+ min: 1,
139
+ max: profileWizardModel.PROFILE_FILTER_MAX_LIMIT,
140
+ value: filter.limit ?? "",
141
+ disabled: !looksUp,
142
+ className: inputClassName,
143
+ placeholder: String(profileWizardModel.PROFILE_FILTER_DEFAULT_LIMIT),
144
+ onChange: (event) => set({ limit: event.target.value ? Number(event.target.value) : void 0 })
145
+ }
146
+ ) })
147
+ ] }) : null,
148
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-sm font-medium", children: [
149
+ /* @__PURE__ */ jsxRuntime.jsx("input", { type: "checkbox", checked: filter.multi ?? true, onChange: (event) => set({ multi: event.target.checked }) }),
150
+ "Allow several values at once"
151
+ ] }),
152
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-sm font-medium", children: [
153
+ /* @__PURE__ */ jsxRuntime.jsx("input", { type: "checkbox", checked: filter.disabled ?? false, onChange: (event) => set({ disabled: event.target.checked || void 0 }) }),
154
+ "Offer no filter for this column"
155
+ ] })
156
+ ] })
157
+ ] });
158
+ }
159
+ function parseFilterOptions(raw) {
160
+ const values = raw.split(",").map((value) => value.trim()).filter(Boolean);
161
+ return values.length ? values : void 0;
162
+ }
163
+ function summarizeFilter(kind, enumerated, looksUp, limit) {
164
+ var _a;
165
+ const control = ((_a = profileWizardModel.PROFILE_FILTER_KIND_OPTIONS.find((option) => option.value === kind)) == null ? void 0 : _a.label) ?? kind;
166
+ if (enumerated) return `${control}, listed`;
167
+ if (!looksUp) return control;
168
+ return `${control}, top ${limit ?? profileWizardModel.PROFILE_FILTER_DEFAULT_LIMIT}`;
169
+ }
170
+ function ProfileFieldEditor({
171
+ field,
172
+ onChange,
173
+ ...actions
174
+ }) {
175
+ if (!field) {
176
+ return /* @__PURE__ */ jsxRuntime.jsx("section", { className: "grid min-h-64 place-items-center rounded-xl border border-dashed text-sm text-muted-foreground", children: profileFieldEditorEmptyMessage });
177
+ }
178
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "overflow-auto rounded-xl border bg-card p-5", children: [
179
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-5 flex flex-wrap items-start gap-2 border-b pb-4", children: [
180
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mr-auto min-w-0", children: [
181
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: "Field editor" }),
182
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mt-1 truncate font-mono text-sm font-semibold", children: field.name })
183
+ ] }),
184
+ /* @__PURE__ */ jsxRuntime.jsx(ProfileFieldEditorActions, { ...actions })
185
+ ] }),
186
+ /* @__PURE__ */ jsxRuntime.jsx(ProfileFieldEditorForm, { field, onChange })
187
+ ] });
188
+ }
189
+ function EditorField({ label, help, children }) {
190
+ return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "grid gap-1.5 text-sm font-medium", children: [
191
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: label }),
192
+ children,
193
+ help ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-normal text-muted-foreground", children: help }) : null
194
+ ] });
195
+ }
196
+ exports.ProfileFieldEditor = ProfileFieldEditor;
197
+ exports.ProfileFieldEditorActions = ProfileFieldEditorActions;
198
+ exports.ProfileFieldEditorForm = ProfileFieldEditorForm;
199
+ exports.profileFieldEditorEmptyMessage = profileFieldEditorEmptyMessage;
200
+ //# sourceMappingURL=profileFieldEditor.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profileFieldEditor.cjs","sources":["../../src/profiles/profileFieldEditor.tsx"],"sourcesContent":["import { JSONPathField } from \"../components/JSONPathField\";\nimport { Button } from \"../components/button\";\nimport type { ReactNode } from \"react\";\nimport {\n inferredFilterKind,\n patchColumnFilter,\n PROFILE_COLUMN_FORMAT_OPTIONS,\n PROFILE_COLUMN_UNIT_OPTIONS,\n PROFILE_FILTER_DEFAULT_LIMIT,\n PROFILE_FILTER_KIND_OPTIONS,\n PROFILE_FILTER_MAX_LIMIT,\n type Patch,\n type ProfileColumn,\n type ProfileColumnFilter,\n} from \"./profileWizardModel\";\nimport { evaluateJsonPath, useJsonPathSampleRows } from \"./jsonPathSample\";\n\nconst inputClassName =\n \"w-full rounded-md border border-input bg-background px-3 py-2 text-sm outline-none focus:border-primary focus:ring-2 focus:ring-primary/15\";\n\ntype FieldActions = {\n selected: boolean;\n canMoveUp: boolean;\n canMoveDown: boolean;\n onSelectedChange: (selected: boolean) => void;\n onMoveUp: () => void;\n onMoveDown: () => void;\n onRemove: () => void;\n};\n\nexport const profileFieldEditorEmptyMessage =\n \"Add a column or run a sample to discover fields.\";\n\n/** Ordering, removal and inclusion — the operations that act on the field as a\n * whole rather than on one of its properties. */\nexport function ProfileFieldEditorActions({\n canMoveUp,\n canMoveDown,\n selected,\n onSelectedChange,\n onMoveUp,\n onMoveDown,\n onRemove,\n}: FieldActions) {\n return (\n <>\n <Button type=\"button\" size=\"sm\" variant=\"ghost\" disabled={!canMoveUp} onClick={onMoveUp}>\n Move up\n </Button>\n <Button type=\"button\" size=\"sm\" variant=\"ghost\" disabled={!canMoveDown} onClick={onMoveDown}>\n Move down\n </Button>\n <Button type=\"button\" size=\"sm\" variant=\"ghost\" onClick={onRemove}>\n Remove\n </Button>\n <label className=\"flex items-center gap-2 text-sm font-medium\">\n <input\n type=\"checkbox\"\n checked={selected}\n onChange={(event) => onSelectedChange(event.target.checked)}\n />\n Include\n </label>\n </>\n );\n}\n\n/**\n * Everything about a column that a grid cell cannot hold: role, format, unit\n * and the CEL expression. `columns` is explicit rather than a `sm:` breakpoint\n * because the editor route mounts this in a ~380px pane on a wide viewport,\n * where viewport-based breakpoints would wrongly go two-up.\n */\nexport function ProfileFieldEditorForm({\n field,\n columns = 2,\n onChange,\n}: {\n field: ProfileColumn;\n columns?: 1 | 2;\n onChange: (patch: Patch<ProfileColumn>) => void;\n}) {\n const wide = columns === 2 ? \"sm:col-span-2\" : \"\";\n const rows = useJsonPathSampleRows();\n return (\n <div className={`grid gap-4 ${columns === 2 ? \"sm:grid-cols-2\" : \"\"}`}>\n <EditorField label=\"Output name\" help=\"Public field name used by tables, filters, APIs, and every export.\">\n <input value={field.name} className={inputClassName} onChange={(event) => onChange({ name: event.target.value })} />\n </EditorField>\n <EditorField label=\"Display label\" help=\"Optional table header; blank uses the field name.\">\n <input value={field.label ?? \"\"} className={inputClassName} placeholder={field.name} onChange={(event) => onChange({ label: event.target.value || undefined })} />\n </EditorField>\n <EditorField label=\"Data type\" help=\"Value shape and default formatting; independent of Role.\">\n <select value={field.type ?? \"\"} className={inputClassName} onChange={(event) => onChange({ type: event.target.value || undefined })}>\n <option value=\"\">Auto detect</option>\n {[\"string\", \"number\", \"boolean\", \"datetime\", \"duration\", \"bytes\", \"status\", \"health\", \"key_value\", \"key_values\", \"json\"].map((type) => (\n <option key={type} value={type}>{type}</option>\n ))}\n </select>\n </EditorField>\n <EditorField label=\"Role\" help=\"Optional table behavior, independent of Type.\">\n <select value={field.kind ?? \"\"} className={inputClassName} onChange={(event) => onChange({ kind: event.target.value || undefined })}>\n <option value=\"\">Standard field</option>\n <option value=\"timestamp\">Timestamp</option>\n <option value=\"tags\">Tags</option>\n <option value=\"status\">Status</option>\n </select>\n </EditorField>\n <EditorField label=\"Format\" help=\"Optional formatter; Unit takes precedence when both are set.\">\n <select value={field.format ?? \"\"} className={inputClassName} onChange={(event) => onChange({ format: event.target.value || undefined })}>\n <option value=\"\">From Type</option>\n {PROFILE_COLUMN_FORMAT_OPTIONS.map((option) => <option key={option.value} value={option.value}>{option.label}</option>)}\n </select>\n </EditorField>\n <EditorField label=\"Unit\" help=\"Numeric scaling for number, duration, or bytes Types.\">\n <select value={field.unit ?? \"\"} className={inputClassName} onChange={(event) => onChange({ unit: event.target.value || undefined })}>\n <option value=\"\">No unit</option>\n {PROFILE_COLUMN_UNIT_OPTIONS.map((option) => <option key={option.value} value={option.value}>{option.label}</option>)}\n </select>\n </EditorField>\n <EditorField label=\"Max width (characters)\" help=\"Maximum rendered width; blank uses the table default.\">\n <input type=\"number\" min={1} value={field.width ?? \"\"} className={inputClassName} placeholder=\"Auto\" onChange={(event) => onChange({ width: event.target.value ? Number(event.target.value) : undefined })} />\n </EditorField>\n <div className={wide}>\n <EditorField label=\"CEL expression\" help=\"Optional expression computing the value from row.\">\n <textarea rows={4} value={field.cel ?? \"\"} className={`${inputClassName} resize-y font-mono text-xs`} placeholder=\"Optional value transformation\" onChange={(event) => onChange({ cel: event.target.value || undefined })} />\n </EditorField>\n </div>\n <div className={wide}>\n <EditorField label=\"JSONPath\" help=\"Optional path computing the value, rooted at the row or at Source; an alternative to CEL.\">\n <JSONPathField\n aria-label=\"JSONPath\"\n value={field.jsonpath ?? \"\"}\n onChange={(next) => onChange({ jsonpath: next || undefined })}\n // This editor owns the whole column, so a path picked out of a\n // JSON-encoded column sets the Source it needs in the same edit\n // rather than leaving the author to pair the two by hand. A path\n // picked outside one clears it: alongside a jsonpath, Source is the\n // root, and a stale root re-roots the new path at a column it was\n // never written against.\n onSelectPath={(next, { root }) =>\n onChange({ jsonpath: next || undefined, source: root })\n }\n {...(field.source ? { source: field.source } : {})}\n {...(rows.length === 0 ? {} : { json: rows[0], rows })}\n evaluate={evaluateJsonPath}\n />\n </EditorField>\n </div>\n <label className={`flex items-center gap-2 text-sm font-medium ${wide}`}>\n <input type=\"checkbox\" checked={field.hidden ?? false} onChange={(event) => onChange({ hidden: event.target.checked })} />\n Hide this field in the default table\n </label>\n <div className={wide}>\n <ProfileFieldFilterEditor field={field} columns={columns} onChange={onChange} />\n </div>\n </div>\n );\n}\n\n/**\n * How this column is filtered. Collapsed by default: every field here overrides\n * an inference the server already makes correctly for most columns, so opening\n * it should be a deliberate act rather than the price of editing a label.\n */\nfunction ProfileFieldFilterEditor({\n field,\n columns,\n onChange,\n}: {\n field: ProfileColumn;\n columns: 1 | 2;\n onChange: (patch: Patch<ProfileColumn>) => void;\n}) {\n const filter = field.filter ?? {};\n const set = (patch: Patch<ProfileColumnFilter>) =>\n onChange({ filter: patchColumnFilter(field.filter, patch) });\n\n // A value selection is the only kind with a list to enumerate; a range, a\n // toggle and a substring are typed rather than picked.\n const kind = filter.kind ?? inferredFilterKind(field);\n const picksFromAList = kind === \"terms\";\n const enumerated = (filter.options?.length ?? 0) > 0;\n // Declaring the values IS the answer the lookup would go and fetch, so the two\n // are mutually exclusive — the server enforces this and the form mirrors it.\n const looksUp = picksFromAList && !enumerated && (filter.lookup ?? true);\n\n return (\n <details className=\"rounded-md border px-3 py-2\">\n <summary className=\"cursor-pointer text-sm font-medium\">\n Filtering\n <span className=\"ml-2 text-xs font-normal text-muted-foreground\">\n {filter.disabled ? \"off\" : summarizeFilter(kind, enumerated, looksUp, filter.limit)}\n </span>\n </summary>\n <div className={`mt-3 grid gap-4 ${columns === 2 ? \"sm:grid-cols-2\" : \"\"}`}>\n <EditorField label=\"Control\" help=\"Overrides the control derived from Type; set it where the rendered type and the backend storage disagree.\">\n <select value={filter.kind ?? \"\"} className={inputClassName} onChange={(event) => set({ kind: event.target.value || undefined })}>\n <option value=\"\">From Type ({PROFILE_FILTER_KIND_OPTIONS.find((o) => o.value === kind)?.label ?? kind})</option>\n {PROFILE_FILTER_KIND_OPTIONS.map((option) => (\n <option key={option.value} value={option.value}>{option.label}</option>\n ))}\n </select>\n </EditorField>\n <EditorField label=\"Backend field\" help=\"The indexed field for a document store, the result column for SQL; blank infers it from the column.\">\n <input value={filter.field ?? \"\"} className={inputClassName} placeholder={field.source || field.name} onChange={(event) => set({ field: event.target.value || undefined })} />\n </EditorField>\n {picksFromAList ? (\n <>\n <div className=\"sm:col-span-2\">\n <EditorField label=\"Values\" help=\"Comma-separated values to offer instead of asking the backend; leave blank to enumerate from the data.\">\n <input\n value={(filter.options ?? []).join(\", \")}\n className={inputClassName}\n placeholder=\"Ask the backend\"\n onChange={(event) => set({ options: parseFilterOptions(event.target.value) })}\n />\n </EditorField>\n </div>\n <label className=\"flex items-center gap-2 text-sm font-medium\">\n <input\n type=\"checkbox\"\n checked={looksUp}\n disabled={enumerated}\n onChange={(event) => set({ lookup: event.target.checked })}\n />\n <span className={enumerated ? \"text-muted-foreground\" : undefined}>\n {enumerated ? \"Values are listed above\" : \"Look values up from the data\"}\n </span>\n </label>\n <EditorField label=\"Values offered\" help={`How many distinct values the control lists before the rest have to be typed for. Blank uses ${PROFILE_FILTER_DEFAULT_LIMIT}.`}>\n <input\n type=\"number\"\n min={1}\n max={PROFILE_FILTER_MAX_LIMIT}\n value={filter.limit ?? \"\"}\n disabled={!looksUp}\n className={inputClassName}\n placeholder={String(PROFILE_FILTER_DEFAULT_LIMIT)}\n onChange={(event) => set({ limit: event.target.value ? Number(event.target.value) : undefined })}\n />\n </EditorField>\n </>\n ) : null}\n <label className=\"flex items-center gap-2 text-sm font-medium\">\n <input type=\"checkbox\" checked={filter.multi ?? true} onChange={(event) => set({ multi: event.target.checked })} />\n Allow several values at once\n </label>\n <label className=\"flex items-center gap-2 text-sm font-medium\">\n <input type=\"checkbox\" checked={filter.disabled ?? false} onChange={(event) => set({ disabled: event.target.checked || undefined })} />\n Offer no filter for this column\n </label>\n </div>\n </details>\n );\n}\n\nfunction parseFilterOptions(raw: string): string[] | undefined {\n const values = raw.split(\",\").map((value) => value.trim()).filter(Boolean);\n return values.length ? values : undefined;\n}\n\nfunction summarizeFilter(kind: string, enumerated: boolean, looksUp: boolean, limit?: number) {\n const control = PROFILE_FILTER_KIND_OPTIONS.find((option) => option.value === kind)?.label ?? kind;\n if (enumerated) return `${control}, listed`;\n if (!looksUp) return control;\n return `${control}, top ${limit ?? PROFILE_FILTER_DEFAULT_LIMIT}`;\n}\n\n/** The wizard's carded inspector: names the field itself, because its field\n * list has no header to do it. The editor route composes the parts instead,\n * since its Workspace pane header already carries the name. */\nexport function ProfileFieldEditor({\n field,\n onChange,\n ...actions\n}: FieldActions & {\n field?: ProfileColumn | undefined;\n onChange: (patch: Patch<ProfileColumn>) => void;\n}) {\n if (!field) {\n return (\n <section className=\"grid min-h-64 place-items-center rounded-xl border border-dashed text-sm text-muted-foreground\">\n {profileFieldEditorEmptyMessage}\n </section>\n );\n }\n\n return (\n <section className=\"overflow-auto rounded-xl border bg-card p-5\">\n <div className=\"mb-5 flex flex-wrap items-start gap-2 border-b pb-4\">\n <div className=\"mr-auto min-w-0\">\n <p className=\"text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n Field editor\n </p>\n <h3 className=\"mt-1 truncate font-mono text-sm font-semibold\">\n {field.name}\n </h3>\n </div>\n <ProfileFieldEditorActions {...actions} />\n </div>\n <ProfileFieldEditorForm field={field} onChange={onChange} />\n </section>\n );\n}\n\nfunction EditorField({ label, help, children }: { label: string; help?: string; children: ReactNode }) {\n return (\n <label className=\"grid gap-1.5 text-sm font-medium\">\n <span>{label}</span>\n {children}\n {help ? <span className=\"text-xs font-normal text-muted-foreground\">{help}</span> : null}\n </label>\n );\n}\n"],"names":["jsxs","Fragment","jsx","Button","useJsonPathSampleRows","PROFILE_COLUMN_FORMAT_OPTIONS","PROFILE_COLUMN_UNIT_OPTIONS","JSONPathField","evaluateJsonPath","patchColumnFilter","inferredFilterKind","PROFILE_FILTER_KIND_OPTIONS","PROFILE_FILTER_DEFAULT_LIMIT","PROFILE_FILTER_MAX_LIMIT"],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { Patch, ProfileColumn } from './profileWizardModel';
2
+ type FieldActions = {
3
+ selected: boolean;
4
+ canMoveUp: boolean;
5
+ canMoveDown: boolean;
6
+ onSelectedChange: (selected: boolean) => void;
7
+ onMoveUp: () => void;
8
+ onMoveDown: () => void;
9
+ onRemove: () => void;
10
+ };
11
+ export declare const profileFieldEditorEmptyMessage = "Add a column or run a sample to discover fields.";
12
+ /** Ordering, removal and inclusion — the operations that act on the field as a
13
+ * whole rather than on one of its properties. */
14
+ export declare function ProfileFieldEditorActions({ canMoveUp, canMoveDown, selected, onSelectedChange, onMoveUp, onMoveDown, onRemove, }: FieldActions): import("react/jsx-runtime").JSX.Element;
15
+ /**
16
+ * Everything about a column that a grid cell cannot hold: role, format, unit
17
+ * and the CEL expression. `columns` is explicit rather than a `sm:` breakpoint
18
+ * because the editor route mounts this in a ~380px pane on a wide viewport,
19
+ * where viewport-based breakpoints would wrongly go two-up.
20
+ */
21
+ export declare function ProfileFieldEditorForm({ field, columns, onChange, }: {
22
+ field: ProfileColumn;
23
+ columns?: 1 | 2;
24
+ onChange: (patch: Patch<ProfileColumn>) => void;
25
+ }): import("react/jsx-runtime").JSX.Element;
26
+ /** The wizard's carded inspector: names the field itself, because its field
27
+ * list has no header to do it. The editor route composes the parts instead,
28
+ * since its Workspace pane header already carries the name. */
29
+ export declare function ProfileFieldEditor({ field, onChange, ...actions }: FieldActions & {
30
+ field?: ProfileColumn | undefined;
31
+ onChange: (patch: Patch<ProfileColumn>) => void;
32
+ }): import("react/jsx-runtime").JSX.Element;
33
+ export {};
34
+ //# sourceMappingURL=profileFieldEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profileFieldEditor.d.ts","sourceRoot":"","sources":["../../src/profiles/profileFieldEditor.tsx"],"names":[],"mappings":"AAGA,OAAO,EAQL,KAAK,KAAK,EACV,KAAK,aAAa,EAEnB,MAAM,sBAAsB,CAAC;AAM9B,KAAK,YAAY,GAAG;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,8BAA8B,qDACS,CAAC;AAErD;kDACkD;AAClD,wBAAgB,yBAAyB,CAAC,EACxC,SAAS,EACT,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,QAAQ,GACT,EAAE,YAAY,2CAsBd;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,KAAK,EACL,OAAW,EACX,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;CACjD,2CA6EA;AA+GD;;gEAEgE;AAChE,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,GAAG,OAAO,EACX,EAAE,YAAY,GAAG;IAChB,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;CACjD,2CAyBA"}