@flanksource/clicky-ui 0.3.19 → 0.3.21

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 (450) hide show
  1. package/dist/components/ErrorWrapper.cjs +1 -1
  2. package/dist/components/ErrorWrapper.cjs.map +1 -1
  3. package/dist/components/ErrorWrapper.js +1 -1
  4. package/dist/components/ErrorWrapper.js.map +1 -1
  5. package/dist/components/UnitStepControls.cjs +55 -0
  6. package/dist/components/UnitStepControls.cjs.map +1 -0
  7. package/dist/components/UnitStepControls.d.ts +10 -0
  8. package/dist/components/UnitStepControls.d.ts.map +1 -0
  9. package/dist/components/UnitStepControls.js +55 -0
  10. package/dist/components/UnitStepControls.js.map +1 -0
  11. package/dist/components/json-schema-form-accordion-array.cjs +5 -73
  12. package/dist/components/json-schema-form-accordion-array.cjs.map +1 -1
  13. package/dist/components/json-schema-form-accordion-array.d.ts.map +1 -1
  14. package/dist/components/json-schema-form-accordion-array.js +3 -71
  15. package/dist/components/json-schema-form-accordion-array.js.map +1 -1
  16. package/dist/components/json-schema-form-array.cjs +6 -1
  17. package/dist/components/json-schema-form-array.cjs.map +1 -1
  18. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  19. package/dist/components/json-schema-form-array.js +6 -1
  20. package/dist/components/json-schema-form-array.js.map +1 -1
  21. package/dist/components/json-schema-form-cards-array.cjs +96 -0
  22. package/dist/components/json-schema-form-cards-array.cjs.map +1 -0
  23. package/dist/components/json-schema-form-cards-array.d.ts +7 -0
  24. package/dist/components/json-schema-form-cards-array.d.ts.map +1 -0
  25. package/dist/components/json-schema-form-cards-array.js +96 -0
  26. package/dist/components/json-schema-form-cards-array.js.map +1 -0
  27. package/dist/components/json-schema-form-item-row.cjs +81 -0
  28. package/dist/components/json-schema-form-item-row.cjs.map +1 -0
  29. package/dist/components/json-schema-form-item-row.d.ts +19 -0
  30. package/dist/components/json-schema-form-item-row.d.ts.map +1 -0
  31. package/dist/components/json-schema-form-item-row.js +81 -0
  32. package/dist/components/json-schema-form-item-row.js.map +1 -0
  33. package/dist/components/json-schema-form-render.cjs +2 -2
  34. package/dist/components/json-schema-form-render.cjs.map +1 -1
  35. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  36. package/dist/components/json-schema-form-render.js +2 -2
  37. package/dist/components/json-schema-form-render.js.map +1 -1
  38. package/dist/components/json-schema-form-resolve.cjs +1 -1
  39. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  40. package/dist/components/json-schema-form-resolve.js +1 -1
  41. package/dist/components/json-schema-form-resolve.js.map +1 -1
  42. package/dist/components/json-schema-form-tone.cjs +12 -0
  43. package/dist/components/json-schema-form-tone.cjs.map +1 -1
  44. package/dist/components/json-schema-form-tone.js +12 -0
  45. package/dist/components/json-schema-form-tone.js.map +1 -1
  46. package/dist/components/json-schema-form-types.d.ts +1 -1
  47. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  48. package/dist/components/unit-form-extension.cjs +126 -0
  49. package/dist/components/unit-form-extension.cjs.map +1 -0
  50. package/dist/components/unit-form-extension.d.ts +8 -0
  51. package/dist/components/unit-form-extension.d.ts.map +1 -0
  52. package/dist/components/unit-form-extension.js +126 -0
  53. package/dist/components/unit-form-extension.js.map +1 -0
  54. package/dist/components.cjs +4 -0
  55. package/dist/components.cjs.map +1 -1
  56. package/dist/components.d.ts +1 -0
  57. package/dist/components.d.ts.map +1 -1
  58. package/dist/components.js +4 -0
  59. package/dist/components.js.map +1 -1
  60. package/dist/data/diagnostics/ErrorDetails.cjs +61 -8
  61. package/dist/data/diagnostics/ErrorDetails.cjs.map +1 -1
  62. package/dist/data/diagnostics/ErrorDetails.d.ts.map +1 -1
  63. package/dist/data/diagnostics/ErrorDetails.js +61 -8
  64. package/dist/data/diagnostics/ErrorDetails.js.map +1 -1
  65. package/dist/data/diagnostics/error-diagnostics.cjs +10 -4
  66. package/dist/data/diagnostics/error-diagnostics.cjs.map +1 -1
  67. package/dist/data/diagnostics/error-diagnostics.d.ts.map +1 -1
  68. package/dist/data/diagnostics/error-diagnostics.js +10 -4
  69. package/dist/data/diagnostics/error-diagnostics.js.map +1 -1
  70. package/dist/data/query-browser/QueryBrowser.cjs +12 -6
  71. package/dist/data/query-browser/QueryBrowser.cjs.map +1 -1
  72. package/dist/data/query-browser/QueryBrowser.d.ts.map +1 -1
  73. package/dist/data/query-browser/QueryBrowser.js +12 -6
  74. package/dist/data/query-browser/QueryBrowser.js.map +1 -1
  75. package/dist/data/query-browser/QueryBrowser.types.cjs +2 -1
  76. package/dist/data/query-browser/QueryBrowser.types.cjs.map +1 -1
  77. package/dist/data/query-browser/QueryBrowser.types.d.ts +16 -14
  78. package/dist/data/query-browser/QueryBrowser.types.d.ts.map +1 -1
  79. package/dist/data/query-browser/QueryBrowser.types.js +2 -1
  80. package/dist/data/query-browser/QueryBrowser.types.js.map +1 -1
  81. package/dist/data/version-info.cjs +3 -3
  82. package/dist/data/version-info.js +3 -3
  83. package/dist/index.cjs +4 -0
  84. package/dist/index.cjs.map +1 -1
  85. package/dist/index.js +4 -0
  86. package/dist/index.js.map +1 -1
  87. package/dist/lib/string.cjs +8 -0
  88. package/dist/lib/string.cjs.map +1 -1
  89. package/dist/lib/string.d.ts +1 -0
  90. package/dist/lib/string.d.ts.map +1 -1
  91. package/dist/lib/string.js +8 -0
  92. package/dist/lib/string.js.map +1 -1
  93. package/dist/profiles/catalogTree.cjs +133 -0
  94. package/dist/profiles/catalogTree.cjs.map +1 -0
  95. package/dist/profiles/catalogTree.d.ts +11 -0
  96. package/dist/profiles/catalogTree.d.ts.map +1 -0
  97. package/dist/profiles/catalogTree.js +133 -0
  98. package/dist/profiles/catalogTree.js.map +1 -0
  99. package/dist/profiles/connectionBrowserModel.cjs +185 -0
  100. package/dist/profiles/connectionBrowserModel.cjs.map +1 -0
  101. package/dist/profiles/connectionBrowserModel.d.ts +169 -0
  102. package/dist/profiles/connectionBrowserModel.d.ts.map +1 -0
  103. package/dist/profiles/connectionBrowserModel.js +185 -0
  104. package/dist/profiles/connectionBrowserModel.js.map +1 -0
  105. package/dist/profiles/connectionQueryWorkspace.cjs +185 -0
  106. package/dist/profiles/connectionQueryWorkspace.cjs.map +1 -0
  107. package/dist/profiles/connectionQueryWorkspace.d.ts +63 -0
  108. package/dist/profiles/connectionQueryWorkspace.d.ts.map +1 -0
  109. package/dist/profiles/connectionQueryWorkspace.js +185 -0
  110. package/dist/profiles/connectionQueryWorkspace.js.map +1 -0
  111. package/dist/profiles/connectionQueryWorkspaceModel.cjs +28 -0
  112. package/dist/profiles/connectionQueryWorkspaceModel.cjs.map +1 -0
  113. package/dist/profiles/connectionQueryWorkspaceModel.d.ts +38 -0
  114. package/dist/profiles/connectionQueryWorkspaceModel.d.ts.map +1 -0
  115. package/dist/profiles/connectionQueryWorkspaceModel.js +28 -0
  116. package/dist/profiles/connectionQueryWorkspaceModel.js.map +1 -0
  117. package/dist/profiles/esFieldValues.cjs +64 -0
  118. package/dist/profiles/esFieldValues.cjs.map +1 -0
  119. package/dist/profiles/esFieldValues.d.ts +48 -0
  120. package/dist/profiles/esFieldValues.d.ts.map +1 -0
  121. package/dist/profiles/esFieldValues.js +64 -0
  122. package/dist/profiles/esFieldValues.js.map +1 -0
  123. package/dist/profiles/esParamMappingModel.cjs +301 -0
  124. package/dist/profiles/esParamMappingModel.cjs.map +1 -0
  125. package/dist/profiles/esParamMappingModel.d.ts +37 -0
  126. package/dist/profiles/esParamMappingModel.d.ts.map +1 -0
  127. package/dist/profiles/esParamMappingModel.js +301 -0
  128. package/dist/profiles/esParamMappingModel.js.map +1 -0
  129. package/dist/profiles/esParamMappingPill.cjs +24 -0
  130. package/dist/profiles/esParamMappingPill.cjs.map +1 -0
  131. package/dist/profiles/esParamMappingPill.d.ts +13 -0
  132. package/dist/profiles/esParamMappingPill.d.ts.map +1 -0
  133. package/dist/profiles/esParamMappingPill.js +24 -0
  134. package/dist/profiles/esParamMappingPill.js.map +1 -0
  135. package/dist/profiles/esParamOperandExtension.cjs +75 -0
  136. package/dist/profiles/esParamOperandExtension.cjs.map +1 -0
  137. package/dist/profiles/esParamOperandExtension.d.ts +11 -0
  138. package/dist/profiles/esParamOperandExtension.d.ts.map +1 -0
  139. package/dist/profiles/esParamOperandExtension.js +75 -0
  140. package/dist/profiles/esParamOperandExtension.js.map +1 -0
  141. package/dist/profiles/esQueryBuilder.cjs +205 -0
  142. package/dist/profiles/esQueryBuilder.cjs.map +1 -0
  143. package/dist/profiles/esQueryBuilder.d.ts +35 -0
  144. package/dist/profiles/esQueryBuilder.d.ts.map +1 -0
  145. package/dist/profiles/esQueryBuilder.js +205 -0
  146. package/dist/profiles/esQueryBuilder.js.map +1 -0
  147. package/dist/profiles/esQueryBuilderExtension.cjs +23 -0
  148. package/dist/profiles/esQueryBuilderExtension.cjs.map +1 -0
  149. package/dist/profiles/esQueryBuilderExtension.d.ts +5 -0
  150. package/dist/profiles/esQueryBuilderExtension.d.ts.map +1 -0
  151. package/dist/profiles/esQueryBuilderExtension.js +23 -0
  152. package/dist/profiles/esQueryBuilderExtension.js.map +1 -0
  153. package/dist/profiles/esQueryBuilderForm.cjs +26 -0
  154. package/dist/profiles/esQueryBuilderForm.cjs.map +1 -0
  155. package/dist/profiles/esQueryBuilderForm.d.ts +18 -0
  156. package/dist/profiles/esQueryBuilderForm.d.ts.map +1 -0
  157. package/dist/profiles/esQueryBuilderForm.js +26 -0
  158. package/dist/profiles/esQueryBuilderForm.js.map +1 -0
  159. package/dist/profiles/esQueryBuilderModel.cjs +131 -0
  160. package/dist/profiles/esQueryBuilderModel.cjs.map +1 -0
  161. package/dist/profiles/esQueryBuilderModel.d.ts +108 -0
  162. package/dist/profiles/esQueryBuilderModel.d.ts.map +1 -0
  163. package/dist/profiles/esQueryBuilderModel.js +131 -0
  164. package/dist/profiles/esQueryBuilderModel.js.map +1 -0
  165. package/dist/profiles/esQueryClauseGroup.cjs +144 -0
  166. package/dist/profiles/esQueryClauseGroup.cjs.map +1 -0
  167. package/dist/profiles/esQueryClauseGroup.d.ts +10 -0
  168. package/dist/profiles/esQueryClauseGroup.d.ts.map +1 -0
  169. package/dist/profiles/esQueryClauseGroup.js +144 -0
  170. package/dist/profiles/esQueryClauseGroup.js.map +1 -0
  171. package/dist/profiles/esQueryCompile.cjs +47 -0
  172. package/dist/profiles/esQueryCompile.cjs.map +1 -0
  173. package/dist/profiles/esQueryCompile.d.ts +39 -0
  174. package/dist/profiles/esQueryCompile.d.ts.map +1 -0
  175. package/dist/profiles/esQueryCompile.js +47 -0
  176. package/dist/profiles/esQueryCompile.js.map +1 -0
  177. package/dist/profiles/esQueryConditionRow.cjs +168 -0
  178. package/dist/profiles/esQueryConditionRow.cjs.map +1 -0
  179. package/dist/profiles/esQueryConditionRow.d.ts +37 -0
  180. package/dist/profiles/esQueryConditionRow.d.ts.map +1 -0
  181. package/dist/profiles/esQueryConditionRow.js +168 -0
  182. package/dist/profiles/esQueryConditionRow.js.map +1 -0
  183. package/dist/profiles/esQueryGroupModel.cjs +12 -0
  184. package/dist/profiles/esQueryGroupModel.cjs.map +1 -0
  185. package/dist/profiles/esQueryGroupModel.d.ts +9 -0
  186. package/dist/profiles/esQueryGroupModel.d.ts.map +1 -0
  187. package/dist/profiles/esQueryGroupModel.js +12 -0
  188. package/dist/profiles/esQueryGroupModel.js.map +1 -0
  189. package/dist/profiles/esQueryOccur.cjs +16 -0
  190. package/dist/profiles/esQueryOccur.cjs.map +1 -0
  191. package/dist/profiles/esQueryOccur.d.ts +11 -0
  192. package/dist/profiles/esQueryOccur.d.ts.map +1 -0
  193. package/dist/profiles/esQueryOccur.js +16 -0
  194. package/dist/profiles/esQueryOccur.js.map +1 -0
  195. package/dist/profiles/esQueryOperandEditors.cjs +279 -0
  196. package/dist/profiles/esQueryOperandEditors.cjs.map +1 -0
  197. package/dist/profiles/esQueryOperandEditors.d.ts +24 -0
  198. package/dist/profiles/esQueryOperandEditors.d.ts.map +1 -0
  199. package/dist/profiles/esQueryOperandEditors.js +279 -0
  200. package/dist/profiles/esQueryOperandEditors.js.map +1 -0
  201. package/dist/profiles/esQueryOperandModel.cjs +28 -0
  202. package/dist/profiles/esQueryOperandModel.cjs.map +1 -0
  203. package/dist/profiles/esQueryOperandModel.d.ts +17 -0
  204. package/dist/profiles/esQueryOperandModel.d.ts.map +1 -0
  205. package/dist/profiles/esQueryOperandModel.js +28 -0
  206. package/dist/profiles/esQueryOperandModel.js.map +1 -0
  207. package/dist/profiles/esQueryOperators.cjs +165 -0
  208. package/dist/profiles/esQueryOperators.cjs.map +1 -0
  209. package/dist/profiles/esQueryOperators.d.ts +83 -0
  210. package/dist/profiles/esQueryOperators.d.ts.map +1 -0
  211. package/dist/profiles/esQueryOperators.js +165 -0
  212. package/dist/profiles/esQueryOperators.js.map +1 -0
  213. package/dist/profiles/esQueryOutputEditor.cjs +138 -0
  214. package/dist/profiles/esQueryOutputEditor.cjs.map +1 -0
  215. package/dist/profiles/esQueryOutputEditor.d.ts +7 -0
  216. package/dist/profiles/esQueryOutputEditor.d.ts.map +1 -0
  217. package/dist/profiles/esQueryOutputEditor.js +138 -0
  218. package/dist/profiles/esQueryOutputEditor.js.map +1 -0
  219. package/dist/profiles/esQueryOutputModel.cjs +16 -0
  220. package/dist/profiles/esQueryOutputModel.cjs.map +1 -0
  221. package/dist/profiles/esQueryOutputModel.d.ts +14 -0
  222. package/dist/profiles/esQueryOutputModel.d.ts.map +1 -0
  223. package/dist/profiles/esQueryOutputModel.js +16 -0
  224. package/dist/profiles/esQueryOutputModel.js.map +1 -0
  225. package/dist/profiles/esQueryPreview.cjs +30 -0
  226. package/dist/profiles/esQueryPreview.cjs.map +1 -0
  227. package/dist/profiles/esQueryPreview.d.ts +6 -0
  228. package/dist/profiles/esQueryPreview.d.ts.map +1 -0
  229. package/dist/profiles/esQueryPreview.js +30 -0
  230. package/dist/profiles/esQueryPreview.js.map +1 -0
  231. package/dist/profiles/esQuerySortEditor.cjs +143 -0
  232. package/dist/profiles/esQuerySortEditor.cjs.map +1 -0
  233. package/dist/profiles/esQuerySortEditor.d.ts +9 -0
  234. package/dist/profiles/esQuerySortEditor.d.ts.map +1 -0
  235. package/dist/profiles/esQuerySortEditor.js +143 -0
  236. package/dist/profiles/esQuerySortEditor.js.map +1 -0
  237. package/dist/profiles/esQuerySortModel.cjs +13 -0
  238. package/dist/profiles/esQuerySortModel.cjs.map +1 -0
  239. package/dist/profiles/esQuerySortModel.d.ts +4 -0
  240. package/dist/profiles/esQuerySortModel.d.ts.map +1 -0
  241. package/dist/profiles/esQuerySortModel.js +13 -0
  242. package/dist/profiles/esQuerySortModel.js.map +1 -0
  243. package/dist/profiles/esValueCombobox.cjs +86 -0
  244. package/dist/profiles/esValueCombobox.cjs.map +1 -0
  245. package/dist/profiles/esValueCombobox.d.ts +15 -0
  246. package/dist/profiles/esValueCombobox.d.ts.map +1 -0
  247. package/dist/profiles/esValueCombobox.js +86 -0
  248. package/dist/profiles/esValueCombobox.js.map +1 -0
  249. package/dist/profiles/jsonPathSample.cjs +75 -0
  250. package/dist/profiles/jsonPathSample.cjs.map +1 -0
  251. package/dist/profiles/jsonPathSample.d.ts +27 -0
  252. package/dist/profiles/jsonPathSample.d.ts.map +1 -0
  253. package/dist/profiles/jsonPathSample.js +75 -0
  254. package/dist/profiles/jsonPathSample.js.map +1 -0
  255. package/dist/profiles/jsonPathSampleRow.cjs +14 -0
  256. package/dist/profiles/jsonPathSampleRow.cjs.map +1 -0
  257. package/dist/profiles/jsonPathSampleRow.d.ts +6 -0
  258. package/dist/profiles/jsonPathSampleRow.d.ts.map +1 -0
  259. package/dist/profiles/jsonPathSampleRow.js +14 -0
  260. package/dist/profiles/jsonPathSampleRow.js.map +1 -0
  261. package/dist/profiles/profileApi.cjs +37 -0
  262. package/dist/profiles/profileApi.cjs.map +1 -0
  263. package/dist/profiles/profileApi.d.ts +32 -0
  264. package/dist/profiles/profileApi.d.ts.map +1 -0
  265. package/dist/profiles/profileApi.js +37 -0
  266. package/dist/profiles/profileApi.js.map +1 -0
  267. package/dist/profiles/profileBuilder.cjs +65 -0
  268. package/dist/profiles/profileBuilder.cjs.map +1 -0
  269. package/dist/profiles/profileBuilder.d.ts +11 -0
  270. package/dist/profiles/profileBuilder.d.ts.map +1 -0
  271. package/dist/profiles/profileBuilder.js +65 -0
  272. package/dist/profiles/profileBuilder.js.map +1 -0
  273. package/dist/profiles/profileBuilderExtension.cjs +25 -0
  274. package/dist/profiles/profileBuilderExtension.cjs.map +1 -0
  275. package/dist/profiles/profileBuilderExtension.d.ts +5 -0
  276. package/dist/profiles/profileBuilderExtension.d.ts.map +1 -0
  277. package/dist/profiles/profileBuilderExtension.js +25 -0
  278. package/dist/profiles/profileBuilderExtension.js.map +1 -0
  279. package/dist/profiles/profileBuilderWorkspace.cjs +368 -0
  280. package/dist/profiles/profileBuilderWorkspace.cjs.map +1 -0
  281. package/dist/profiles/profileBuilderWorkspace.d.ts +21 -0
  282. package/dist/profiles/profileBuilderWorkspace.d.ts.map +1 -0
  283. package/dist/profiles/profileBuilderWorkspace.js +368 -0
  284. package/dist/profiles/profileBuilderWorkspace.js.map +1 -0
  285. package/dist/profiles/profileColumnModel.cjs +23 -0
  286. package/dist/profiles/profileColumnModel.cjs.map +1 -0
  287. package/dist/profiles/profileColumnModel.d.ts +8 -0
  288. package/dist/profiles/profileColumnModel.d.ts.map +1 -0
  289. package/dist/profiles/profileColumnModel.js +23 -0
  290. package/dist/profiles/profileColumnModel.js.map +1 -0
  291. package/dist/profiles/profileColumnPicker.cjs +68 -0
  292. package/dist/profiles/profileColumnPicker.cjs.map +1 -0
  293. package/dist/profiles/profileColumnPicker.d.ts +11 -0
  294. package/dist/profiles/profileColumnPicker.d.ts.map +1 -0
  295. package/dist/profiles/profileColumnPicker.js +68 -0
  296. package/dist/profiles/profileColumnPicker.js.map +1 -0
  297. package/dist/profiles/profileEditor.cjs +386 -0
  298. package/dist/profiles/profileEditor.cjs.map +1 -0
  299. package/dist/profiles/profileEditor.d.ts +19 -0
  300. package/dist/profiles/profileEditor.d.ts.map +1 -0
  301. package/dist/profiles/profileEditor.js +386 -0
  302. package/dist/profiles/profileEditor.js.map +1 -0
  303. package/dist/profiles/profileEditorModel.cjs +181 -0
  304. package/dist/profiles/profileEditorModel.cjs.map +1 -0
  305. package/dist/profiles/profileEditorModel.d.ts +74 -0
  306. package/dist/profiles/profileEditorModel.d.ts.map +1 -0
  307. package/dist/profiles/profileEditorModel.js +181 -0
  308. package/dist/profiles/profileEditorModel.js.map +1 -0
  309. package/dist/profiles/profileEditorPreview.cjs +38 -0
  310. package/dist/profiles/profileEditorPreview.cjs.map +1 -0
  311. package/dist/profiles/profileEditorPreview.d.ts +12 -0
  312. package/dist/profiles/profileEditorPreview.d.ts.map +1 -0
  313. package/dist/profiles/profileEditorPreview.js +38 -0
  314. package/dist/profiles/profileEditorPreview.js.map +1 -0
  315. package/dist/profiles/profileEditorRail.cjs +46 -0
  316. package/dist/profiles/profileEditorRail.cjs.map +1 -0
  317. package/dist/profiles/profileEditorRail.d.ts +8 -0
  318. package/dist/profiles/profileEditorRail.d.ts.map +1 -0
  319. package/dist/profiles/profileEditorRail.js +46 -0
  320. package/dist/profiles/profileEditorRail.js.map +1 -0
  321. package/dist/profiles/profileEditorRaw.cjs +118 -0
  322. package/dist/profiles/profileEditorRaw.cjs.map +1 -0
  323. package/dist/profiles/profileEditorRaw.d.ts +7 -0
  324. package/dist/profiles/profileEditorRaw.d.ts.map +1 -0
  325. package/dist/profiles/profileEditorRaw.js +118 -0
  326. package/dist/profiles/profileEditorRaw.js.map +1 -0
  327. package/dist/profiles/profileEditorRoutes.cjs +7 -0
  328. package/dist/profiles/profileEditorRoutes.cjs.map +1 -0
  329. package/dist/profiles/profileEditorRoutes.d.ts +2 -0
  330. package/dist/profiles/profileEditorRoutes.d.ts.map +1 -0
  331. package/dist/profiles/profileEditorRoutes.js +7 -0
  332. package/dist/profiles/profileEditorRoutes.js.map +1 -0
  333. package/dist/profiles/profileEditorSections.cjs +213 -0
  334. package/dist/profiles/profileEditorSections.cjs.map +1 -0
  335. package/dist/profiles/profileEditorSections.d.ts +23 -0
  336. package/dist/profiles/profileEditorSections.d.ts.map +1 -0
  337. package/dist/profiles/profileEditorSections.js +213 -0
  338. package/dist/profiles/profileEditorSections.js.map +1 -0
  339. package/dist/profiles/profileFieldEditor.cjs +200 -0
  340. package/dist/profiles/profileFieldEditor.cjs.map +1 -0
  341. package/dist/profiles/profileFieldEditor.d.ts +34 -0
  342. package/dist/profiles/profileFieldEditor.d.ts.map +1 -0
  343. package/dist/profiles/profileFieldEditor.js +200 -0
  344. package/dist/profiles/profileFieldEditor.js.map +1 -0
  345. package/dist/profiles/profileFieldGrid.cjs +250 -0
  346. package/dist/profiles/profileFieldGrid.cjs.map +1 -0
  347. package/dist/profiles/profileFieldGrid.d.ts +20 -0
  348. package/dist/profiles/profileFieldGrid.d.ts.map +1 -0
  349. package/dist/profiles/profileFieldGrid.js +250 -0
  350. package/dist/profiles/profileFieldGrid.js.map +1 -0
  351. package/dist/profiles/profileFieldManager.cjs +103 -0
  352. package/dist/profiles/profileFieldManager.cjs.map +1 -0
  353. package/dist/profiles/profileFieldManager.d.ts +9 -0
  354. package/dist/profiles/profileFieldManager.d.ts.map +1 -0
  355. package/dist/profiles/profileFieldManager.js +103 -0
  356. package/dist/profiles/profileFieldManager.js.map +1 -0
  357. package/dist/profiles/profileFieldState.cjs +136 -0
  358. package/dist/profiles/profileFieldState.cjs.map +1 -0
  359. package/dist/profiles/profileFieldState.d.ts +41 -0
  360. package/dist/profiles/profileFieldState.d.ts.map +1 -0
  361. package/dist/profiles/profileFieldState.js +136 -0
  362. package/dist/profiles/profileFieldState.js.map +1 -0
  363. package/dist/profiles/profileFieldTypes.cjs +17 -0
  364. package/dist/profiles/profileFieldTypes.cjs.map +1 -0
  365. package/dist/profiles/profileFieldTypes.d.ts +8 -0
  366. package/dist/profiles/profileFieldTypes.d.ts.map +1 -0
  367. package/dist/profiles/profileFieldTypes.js +17 -0
  368. package/dist/profiles/profileFieldTypes.js.map +1 -0
  369. package/dist/profiles/profileParamModel.cjs +78 -0
  370. package/dist/profiles/profileParamModel.cjs.map +1 -0
  371. package/dist/profiles/profileParamModel.d.ts +3 -0
  372. package/dist/profiles/profileParamModel.d.ts.map +1 -0
  373. package/dist/profiles/profileParamModel.js +78 -0
  374. package/dist/profiles/profileParamModel.js.map +1 -0
  375. package/dist/profiles/profileSamplePayload.cjs +15 -0
  376. package/dist/profiles/profileSamplePayload.cjs.map +1 -0
  377. package/dist/profiles/profileSamplePayload.d.ts +13 -0
  378. package/dist/profiles/profileSamplePayload.d.ts.map +1 -0
  379. package/dist/profiles/profileSamplePayload.js +15 -0
  380. package/dist/profiles/profileSamplePayload.js.map +1 -0
  381. package/dist/profiles/profileWizard.cjs +257 -0
  382. package/dist/profiles/profileWizard.cjs.map +1 -0
  383. package/dist/profiles/profileWizard.d.ts +12 -0
  384. package/dist/profiles/profileWizard.d.ts.map +1 -0
  385. package/dist/profiles/profileWizard.js +257 -0
  386. package/dist/profiles/profileWizard.js.map +1 -0
  387. package/dist/profiles/profileWizardHelp.cjs +10 -0
  388. package/dist/profiles/profileWizardHelp.cjs.map +1 -0
  389. package/dist/profiles/profileWizardHelp.d.ts +13 -0
  390. package/dist/profiles/profileWizardHelp.d.ts.map +1 -0
  391. package/dist/profiles/profileWizardHelp.js +10 -0
  392. package/dist/profiles/profileWizardHelp.js.map +1 -0
  393. package/dist/profiles/profileWizardModel.cjs +198 -0
  394. package/dist/profiles/profileWizardModel.cjs.map +1 -0
  395. package/dist/profiles/profileWizardModel.d.ts +255 -0
  396. package/dist/profiles/profileWizardModel.d.ts.map +1 -0
  397. package/dist/profiles/profileWizardModel.js +198 -0
  398. package/dist/profiles/profileWizardModel.js.map +1 -0
  399. package/dist/profiles/profileWizardQueryStep.cjs +215 -0
  400. package/dist/profiles/profileWizardQueryStep.cjs.map +1 -0
  401. package/dist/profiles/profileWizardQueryStep.d.ts +18 -0
  402. package/dist/profiles/profileWizardQueryStep.d.ts.map +1 -0
  403. package/dist/profiles/profileWizardQueryStep.js +215 -0
  404. package/dist/profiles/profileWizardQueryStep.js.map +1 -0
  405. package/dist/profiles/profileWizardSteps.cjs +214 -0
  406. package/dist/profiles/profileWizardSteps.cjs.map +1 -0
  407. package/dist/profiles/profileWizardSteps.d.ts +35 -0
  408. package/dist/profiles/profileWizardSteps.d.ts.map +1 -0
  409. package/dist/profiles/profileWizardSteps.js +214 -0
  410. package/dist/profiles/profileWizardSteps.js.map +1 -0
  411. package/dist/profiles/profileYaml.cjs +19 -0
  412. package/dist/profiles/profileYaml.cjs.map +1 -0
  413. package/dist/profiles/profileYaml.d.ts +4 -0
  414. package/dist/profiles/profileYaml.d.ts.map +1 -0
  415. package/dist/profiles/profileYaml.js +19 -0
  416. package/dist/profiles/profileYaml.js.map +1 -0
  417. package/dist/profiles/prometheusResults.cjs +60 -0
  418. package/dist/profiles/prometheusResults.cjs.map +1 -0
  419. package/dist/profiles/prometheusResults.d.ts +7 -0
  420. package/dist/profiles/prometheusResults.d.ts.map +1 -0
  421. package/dist/profiles/prometheusResults.js +60 -0
  422. package/dist/profiles/prometheusResults.js.map +1 -0
  423. package/dist/profiles/queryRowLimits.cjs +82 -0
  424. package/dist/profiles/queryRowLimits.cjs.map +1 -0
  425. package/dist/profiles/queryRowLimits.d.ts +9 -0
  426. package/dist/profiles/queryRowLimits.d.ts.map +1 -0
  427. package/dist/profiles/queryRowLimits.js +82 -0
  428. package/dist/profiles/queryRowLimits.js.map +1 -0
  429. package/dist/profiles/queryRowLimitsModel.cjs +10 -0
  430. package/dist/profiles/queryRowLimitsModel.cjs.map +1 -0
  431. package/dist/profiles/queryRowLimitsModel.d.ts +9 -0
  432. package/dist/profiles/queryRowLimitsModel.d.ts.map +1 -0
  433. package/dist/profiles/queryRowLimitsModel.js +10 -0
  434. package/dist/profiles/queryRowLimitsModel.js.map +1 -0
  435. package/dist/profiles/queryTargetPicker.cjs +42 -0
  436. package/dist/profiles/queryTargetPicker.cjs.map +1 -0
  437. package/dist/profiles/queryTargetPicker.d.ts +8 -0
  438. package/dist/profiles/queryTargetPicker.d.ts.map +1 -0
  439. package/dist/profiles/queryTargetPicker.js +42 -0
  440. package/dist/profiles/queryTargetPicker.js.map +1 -0
  441. package/dist/profiles/testSchema.d.ts +3 -0
  442. package/dist/profiles/testSchema.d.ts.map +1 -0
  443. package/dist/profiles.cjs +223 -0
  444. package/dist/profiles.cjs.map +1 -0
  445. package/dist/profiles.d.ts +68 -0
  446. package/dist/profiles.d.ts.map +1 -0
  447. package/dist/profiles.js +223 -0
  448. package/dist/profiles.js.map +1 -0
  449. package/dist/styles.css +1 -1
  450. package/package.json +6 -1
@@ -0,0 +1,14 @@
1
+ /**
2
+ * What a matching document comes back as: where the hits start, which _source
3
+ * fields travel, and whether the backend counts past its default. How many hits
4
+ * come back is the query's Limit, edited next to the filters — one row cap, so
5
+ * that it cannot disagree with itself across the form and the raw DSL.
6
+ */
7
+ /**
8
+ * pruneEmpty drops a sub-object that says nothing, so clearing the last field of
9
+ * `source` removes `source` rather than storing `{}` the compiler must ignore.
10
+ */
11
+ export declare function pruneEmpty<T extends object>(value: T): T | undefined;
12
+ /** parseCount reads a non-negative integer, treating anything else as unset. */
13
+ export declare function parseCount(raw: string): number | undefined;
14
+ //# sourceMappingURL=esQueryOutputModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esQueryOutputModel.d.ts","sourceRoot":"","sources":["../../src/profiles/esQueryOutputModel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAKpE;AAED,gFAAgF;AAChF,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI1D"}
@@ -0,0 +1,16 @@
1
+ function pruneEmpty(value) {
2
+ const said = Object.values(value).some(
3
+ (entry) => Array.isArray(entry) ? entry.length > 0 : entry !== void 0 && entry !== null
4
+ );
5
+ return said ? value : void 0;
6
+ }
7
+ function parseCount(raw) {
8
+ if (raw.trim() === "") return void 0;
9
+ const parsed = Number(raw);
10
+ return Number.isInteger(parsed) && parsed >= 0 ? parsed : void 0;
11
+ }
12
+ export {
13
+ parseCount,
14
+ pruneEmpty
15
+ };
16
+ //# sourceMappingURL=esQueryOutputModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esQueryOutputModel.js","sources":["../../src/profiles/esQueryOutputModel.ts"],"sourcesContent":["/**\n * What a matching document comes back as: where the hits start, which _source\n * fields travel, and whether the backend counts past its default. How many hits\n * come back is the query's Limit, edited next to the filters — one row cap, so\n * that it cannot disagree with itself across the form and the raw DSL.\n */\n\n\n/**\n * pruneEmpty drops a sub-object that says nothing, so clearing the last field of\n * `source` removes `source` rather than storing `{}` the compiler must ignore.\n */\nexport function pruneEmpty<T extends object>(value: T): T | undefined {\n const said = Object.values(value).some((entry) =>\n Array.isArray(entry) ? entry.length > 0 : entry !== undefined && entry !== null,\n );\n return said ? value : undefined;\n}\n\n/** parseCount reads a non-negative integer, treating anything else as unset. */\nexport function parseCount(raw: string): number | undefined {\n if (raw.trim() === \"\") return undefined;\n const parsed = Number(raw);\n return Number.isInteger(parsed) && parsed >= 0 ? parsed : undefined;\n}\n"],"names":[],"mappings":"AAYO,SAAS,WAA6B,OAAyB;AACpE,QAAM,OAAO,OAAO,OAAO,KAAK,EAAE;AAAA,IAAK,CAAC,UACtC,MAAM,QAAQ,KAAK,IAAI,MAAM,SAAS,IAAI,UAAU,UAAa,UAAU;AAAA,EAAA;AAE7E,SAAO,OAAO,QAAQ;AACxB;AAGO,SAAS,WAAW,KAAiC;AAC1D,MAAI,IAAI,WAAW,GAAI,QAAO;AAC9B,QAAM,SAAS,OAAO,GAAG;AACzB,SAAO,OAAO,UAAU,MAAM,KAAK,UAAU,IAAI,SAAS;AAC5D;"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ function EsQueryPreview({
5
+ compilation,
6
+ className
7
+ }) {
8
+ const { query, size, from, error, loading } = compilation;
9
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className, children: [
10
+ /* @__PURE__ */ jsxRuntime.jsxs("header", { className: "flex items-center gap-2", children: [
11
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xs font-medium text-muted-foreground", children: "Compiled DSL" }),
12
+ size === void 0 ? null : /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-muted-foreground", children: [
13
+ "size ",
14
+ size,
15
+ from ? ` · from ${from}` : ""
16
+ ] }),
17
+ loading ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground", children: "compiling…" }) : null
18
+ ] }),
19
+ error ? /* @__PURE__ */ jsxRuntime.jsx(
20
+ "p",
21
+ {
22
+ role: "alert",
23
+ className: "mt-1 whitespace-pre-wrap rounded-md border border-destructive/40 bg-destructive/5 p-2 font-mono text-xs text-destructive",
24
+ children: error
25
+ }
26
+ ) : /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-1 max-h-64 overflow-auto rounded-md border bg-muted/40 p-2 font-mono text-xs", children: query })
27
+ ] });
28
+ }
29
+ exports.EsQueryPreview = EsQueryPreview;
30
+ //# sourceMappingURL=esQueryPreview.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esQueryPreview.cjs","sources":["../../src/profiles/esQueryPreview.tsx"],"sourcesContent":["/**\n * The DSL a specification compiles to. The server compiles it — the same code\n * path a query runs through — so the preview is the query, not a re-derivation\n * of it that could drift.\n */\n\nimport type { EsCompilation } from \"./esQueryCompile\";\n\nexport function EsQueryPreview({\n compilation,\n className\n}: {\n compilation: EsCompilation;\n className?: string;\n}) {\n const { query, size, from, error, loading } = compilation;\n return (\n <section className={className}>\n <header className=\"flex items-center gap-2\">\n <h3 className=\"text-xs font-medium text-muted-foreground\">Compiled DSL</h3>\n {size === undefined ? null : (\n <span className=\"text-xs text-muted-foreground\">\n size {size}\n {from ? ` · from ${from}` : \"\"}\n </span>\n )}\n {loading ? (\n <span className=\"text-xs text-muted-foreground\">compiling…</span>\n ) : null}\n </header>\n {error ? (\n <p\n role=\"alert\"\n className=\"mt-1 whitespace-pre-wrap rounded-md border border-destructive/40 bg-destructive/5 p-2 font-mono text-xs text-destructive\"\n >\n {error}\n </p>\n ) : (\n <pre className=\"mt-1 max-h-64 overflow-auto rounded-md border bg-muted/40 p-2 font-mono text-xs\">\n {query}\n </pre>\n )}\n </section>\n );\n}\n"],"names":["jsxs","jsx"],"mappings":";;;AAQO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AACF,GAGG;AACD,QAAM,EAAE,OAAO,MAAM,MAAM,OAAO,YAAY;AAC9C,SACEA,gCAAC,aAAQ,WACP,UAAA;AAAA,IAAAA,2BAAAA,KAAC,UAAA,EAAO,WAAU,2BAChB,UAAA;AAAA,MAAAC,2BAAAA,IAAC,MAAA,EAAG,WAAU,6CAA4C,UAAA,gBAAY;AAAA,MACrE,SAAS,SAAY,OACpBD,2BAAAA,KAAC,QAAA,EAAK,WAAU,iCAAgC,UAAA;AAAA,QAAA;AAAA,QACxC;AAAA,QACL,OAAO,WAAW,IAAI,KAAK;AAAA,MAAA,GAC9B;AAAA,MAED,UACCC,2BAAAA,IAAC,QAAA,EAAK,WAAU,iCAAgC,wBAAU,IACxD;AAAA,IAAA,GACN;AAAA,IACC,QACCA,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QAET,UAAA;AAAA,MAAA;AAAA,IAAA,IAGHA,2BAAAA,IAAC,OAAA,EAAI,WAAU,mFACZ,UAAA,MAAA,CACH;AAAA,EAAA,GAEJ;AAEJ;;"}
@@ -0,0 +1,6 @@
1
+ import { EsCompilation } from './esQueryCompile';
2
+ export declare function EsQueryPreview({ compilation, className }: {
3
+ compilation: EsCompilation;
4
+ className?: string;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=esQueryPreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esQueryPreview.d.ts","sourceRoot":"","sources":["../../src/profiles/esQueryPreview.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,SAAS,EACV,EAAE;IACD,WAAW,EAAE,aAAa,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CA8BA"}
@@ -0,0 +1,30 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ function EsQueryPreview({
3
+ compilation,
4
+ className
5
+ }) {
6
+ const { query, size, from, error, loading } = compilation;
7
+ return /* @__PURE__ */ jsxs("section", { className, children: [
8
+ /* @__PURE__ */ jsxs("header", { className: "flex items-center gap-2", children: [
9
+ /* @__PURE__ */ jsx("h3", { className: "text-xs font-medium text-muted-foreground", children: "Compiled DSL" }),
10
+ size === void 0 ? null : /* @__PURE__ */ jsxs("span", { className: "text-xs text-muted-foreground", children: [
11
+ "size ",
12
+ size,
13
+ from ? ` · from ${from}` : ""
14
+ ] }),
15
+ loading ? /* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: "compiling…" }) : null
16
+ ] }),
17
+ error ? /* @__PURE__ */ jsx(
18
+ "p",
19
+ {
20
+ role: "alert",
21
+ className: "mt-1 whitespace-pre-wrap rounded-md border border-destructive/40 bg-destructive/5 p-2 font-mono text-xs text-destructive",
22
+ children: error
23
+ }
24
+ ) : /* @__PURE__ */ jsx("pre", { className: "mt-1 max-h-64 overflow-auto rounded-md border bg-muted/40 p-2 font-mono text-xs", children: query })
25
+ ] });
26
+ }
27
+ export {
28
+ EsQueryPreview
29
+ };
30
+ //# sourceMappingURL=esQueryPreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esQueryPreview.js","sources":["../../src/profiles/esQueryPreview.tsx"],"sourcesContent":["/**\n * The DSL a specification compiles to. The server compiles it — the same code\n * path a query runs through — so the preview is the query, not a re-derivation\n * of it that could drift.\n */\n\nimport type { EsCompilation } from \"./esQueryCompile\";\n\nexport function EsQueryPreview({\n compilation,\n className\n}: {\n compilation: EsCompilation;\n className?: string;\n}) {\n const { query, size, from, error, loading } = compilation;\n return (\n <section className={className}>\n <header className=\"flex items-center gap-2\">\n <h3 className=\"text-xs font-medium text-muted-foreground\">Compiled DSL</h3>\n {size === undefined ? null : (\n <span className=\"text-xs text-muted-foreground\">\n size {size}\n {from ? ` · from ${from}` : \"\"}\n </span>\n )}\n {loading ? (\n <span className=\"text-xs text-muted-foreground\">compiling…</span>\n ) : null}\n </header>\n {error ? (\n <p\n role=\"alert\"\n className=\"mt-1 whitespace-pre-wrap rounded-md border border-destructive/40 bg-destructive/5 p-2 font-mono text-xs text-destructive\"\n >\n {error}\n </p>\n ) : (\n <pre className=\"mt-1 max-h-64 overflow-auto rounded-md border bg-muted/40 p-2 font-mono text-xs\">\n {query}\n </pre>\n )}\n </section>\n );\n}\n"],"names":[],"mappings":";AAQO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AACF,GAGG;AACD,QAAM,EAAE,OAAO,MAAM,MAAM,OAAO,YAAY;AAC9C,SACE,qBAAC,aAAQ,WACP,UAAA;AAAA,IAAA,qBAAC,UAAA,EAAO,WAAU,2BAChB,UAAA;AAAA,MAAA,oBAAC,MAAA,EAAG,WAAU,6CAA4C,UAAA,gBAAY;AAAA,MACrE,SAAS,SAAY,OACpB,qBAAC,QAAA,EAAK,WAAU,iCAAgC,UAAA;AAAA,QAAA;AAAA,QACxC;AAAA,QACL,OAAO,WAAW,IAAI,KAAK;AAAA,MAAA,GAC9B;AAAA,MAED,UACC,oBAAC,QAAA,EAAK,WAAU,iCAAgC,wBAAU,IACxD;AAAA,IAAA,GACN;AAAA,IACC,QACC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QAET,UAAA;AAAA,MAAA;AAAA,IAAA,IAGH,oBAAC,OAAA,EAAI,WAAU,mFACZ,UAAA,MAAA,CACH;AAAA,EAAA,GAEJ;AAEJ;"}
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const Combobox = require("../components/Combobox.cjs");
5
+ const IconButton = require("../components/IconButton.cjs");
6
+ const InputField = require("../components/InputField.cjs");
7
+ const button = require("../components/button.cjs");
8
+ const select = require("../components/select.cjs");
9
+ const profileWizardModel = require("./profileWizardModel.cjs");
10
+ const esQueryOperators = require("./esQueryOperators.cjs");
11
+ const esQuerySortModel = require("./esQuerySortModel.cjs");
12
+ const UiAdd = require("../icons/components/UiAdd.cjs");
13
+ const UiArrowUp = require("../icons/components/UiArrowUp.cjs");
14
+ const UiArrowDown = require("../icons/components/UiArrowDown.cjs");
15
+ const UiTrash = require("../icons/components/UiTrash.cjs");
16
+ function EsQuerySortEditor({
17
+ sort,
18
+ fields,
19
+ orders,
20
+ onChange
21
+ }) {
22
+ const options = esQueryOperators.sortableFields(fields).map((name) => ({
23
+ value: name,
24
+ label: name
25
+ }));
26
+ const set = (index, patch) => onChange(
27
+ sort.map(
28
+ (entry, position) => position === index ? profileWizardModel.applyPatch(entry, patch) : entry
29
+ )
30
+ );
31
+ const text = (value) => value ?? "";
32
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "flex flex-col gap-2", children: [
33
+ /* @__PURE__ */ jsxRuntime.jsxs("header", { className: "flex items-center gap-2", children: [
34
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xs font-medium text-muted-foreground", children: "Sort" }),
35
+ /* @__PURE__ */ jsxRuntime.jsxs(
36
+ button.Button,
37
+ {
38
+ type: "button",
39
+ variant: "ghost",
40
+ size: "sm",
41
+ onClick: () => onChange([
42
+ ...sort,
43
+ // An empty vocabulary leaves the order unset, which is the same
44
+ // as the backend's default — not an entry with order: undefined.
45
+ { field: "", ...orders[0] ? { order: orders[0] } : {} }
46
+ ]),
47
+ children: [
48
+ /* @__PURE__ */ jsxRuntime.jsx(UiAdd.UiAdd, { className: "text-xs" }),
49
+ " Sort field"
50
+ ]
51
+ }
52
+ )
53
+ ] }),
54
+ sort.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: "Unsorted — hits come back in the backend's own order." }) : null,
55
+ sort.map((entry, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
56
+ /* @__PURE__ */ jsxRuntime.jsx(
57
+ Combobox.Combobox,
58
+ {
59
+ ariaLabel: "Sort field",
60
+ className: "min-w-48 flex-1",
61
+ value: entry.field,
62
+ onChange: (next) => set(index, { field: next }),
63
+ options,
64
+ placeholder: "Field…",
65
+ allowCustomValue: true
66
+ }
67
+ ),
68
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-28 shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(
69
+ select.Select,
70
+ {
71
+ "aria-label": "Sort order",
72
+ value: text(entry.order),
73
+ options: [
74
+ { value: "", label: "order" },
75
+ ...orders.map((order) => ({ value: order, label: order }))
76
+ ],
77
+ onChange: (event) => set(index, { order: event.target.value || void 0 })
78
+ }
79
+ ) }),
80
+ /* @__PURE__ */ jsxRuntime.jsx(
81
+ InputField.InputField,
82
+ {
83
+ "aria-label": "Sort mode",
84
+ className: "w-28",
85
+ placeholder: "mode",
86
+ title: "How a multi-valued field is reduced: min, max, sum, avg, median",
87
+ value: text(entry.mode),
88
+ onChange: (next) => set(index, { mode: next || void 0 })
89
+ }
90
+ ),
91
+ /* @__PURE__ */ jsxRuntime.jsx(
92
+ InputField.InputField,
93
+ {
94
+ "aria-label": "Missing",
95
+ className: "w-28",
96
+ placeholder: "missing",
97
+ title: "Where documents without the field sort: _first, _last, or a substitute value",
98
+ value: text(entry.missing),
99
+ onChange: (next) => set(index, { missing: next || void 0 })
100
+ }
101
+ ),
102
+ /* @__PURE__ */ jsxRuntime.jsx(
103
+ InputField.InputField,
104
+ {
105
+ "aria-label": "Unmapped type",
106
+ className: "w-32",
107
+ placeholder: "unmapped type",
108
+ title: "Treat the field as this type where it is unmapped",
109
+ value: text(entry.unmappedType),
110
+ onChange: (next) => set(index, { unmappedType: next || void 0 })
111
+ }
112
+ ),
113
+ /* @__PURE__ */ jsxRuntime.jsx(
114
+ IconButton.IconButton,
115
+ {
116
+ icon: UiArrowUp.UiArrowUp,
117
+ label: `Move ${entry.field || "sort field"} earlier`,
118
+ disabled: index === 0,
119
+ onClick: () => onChange(esQuerySortModel.moveSortEntry(sort, index, -1))
120
+ }
121
+ ),
122
+ /* @__PURE__ */ jsxRuntime.jsx(
123
+ IconButton.IconButton,
124
+ {
125
+ icon: UiArrowDown.UiArrowDown,
126
+ label: `Move ${entry.field || "sort field"} later`,
127
+ disabled: index === sort.length - 1,
128
+ onClick: () => onChange(esQuerySortModel.moveSortEntry(sort, index, 1))
129
+ }
130
+ ),
131
+ /* @__PURE__ */ jsxRuntime.jsx(
132
+ IconButton.IconButton,
133
+ {
134
+ icon: UiTrash.UiTrash,
135
+ label: `Remove ${entry.field || "sort field"}`,
136
+ onClick: () => onChange(sort.filter((_entry, position) => position !== index))
137
+ }
138
+ )
139
+ ] }, index))
140
+ ] });
141
+ }
142
+ exports.EsQuerySortEditor = EsQuerySortEditor;
143
+ //# sourceMappingURL=esQuerySortEditor.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esQuerySortEditor.cjs","sources":["../../src/profiles/esQuerySortEditor.tsx"],"sourcesContent":["/**\n * Multi-field sort. The order of the entries is the tie-break order the backend\n * applies, so moving an entry is an edit in its own right rather than cosmetic.\n */\n\nimport { Combobox } from \"../components/Combobox\";\nimport { IconButton } from \"../components/IconButton\";\nimport { InputField } from \"../components/InputField\";\nimport { Button } from \"../components/button\";\nimport { Select } from \"../components/select\";\nimport { UiAdd, UiArrowDown, UiArrowUp, UiTrash } from \"../icons\";\nimport type { EsSortBy } from \"./esQueryBuilderModel\";\nimport { applyPatch, type Patch } from \"./profileWizardModel\";\nimport { sortableFields, type EsFieldMapping } from \"./esQueryOperators\";\nimport { moveSortEntry } from \"./esQuerySortModel\";\n\nexport function EsQuerySortEditor({\n sort,\n fields,\n orders,\n onChange,\n}: {\n sort: EsSortBy[];\n fields: EsFieldMapping[];\n orders: string[];\n onChange: (sort: EsSortBy[]) => void;\n}) {\n const options = sortableFields(fields).map((name) => ({\n value: name,\n label: name,\n }));\n const set = (index: number, patch: Patch<EsSortBy>) =>\n onChange(\n sort.map((entry, position) =>\n position === index ? applyPatch(entry, patch) : entry,\n ),\n );\n const text = (value: string | undefined) => value ?? \"\";\n\n return (\n <section className=\"flex flex-col gap-2\">\n <header className=\"flex items-center gap-2\">\n <h3 className=\"text-xs font-medium text-muted-foreground\">Sort</h3>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() =>\n onChange([\n ...sort,\n // An empty vocabulary leaves the order unset, which is the same\n // as the backend's default — not an entry with order: undefined.\n { field: \"\", ...(orders[0] ? { order: orders[0] } : {}) },\n ])\n }\n >\n <UiAdd className=\"text-xs\" /> Sort field\n </Button>\n </header>\n {sort.length === 0 ? (\n <p className=\"text-xs text-muted-foreground\">\n Unsorted — hits come back in the backend's own order.\n </p>\n ) : null}\n {sort.map((entry, index) => (\n <div key={index} className=\"flex flex-wrap items-center gap-2\">\n <Combobox\n ariaLabel=\"Sort field\"\n className=\"min-w-48 flex-1\"\n value={entry.field}\n onChange={(next) => set(index, { field: next })}\n options={options}\n placeholder=\"Field…\"\n allowCustomValue\n />\n <span className=\"w-28 shrink-0\">\n <Select\n aria-label=\"Sort order\"\n value={text(entry.order)}\n options={[\n { value: \"\", label: \"order\" },\n ...orders.map((order) => ({ value: order, label: order })),\n ]}\n onChange={(event) =>\n set(index, { order: event.target.value || undefined })\n }\n />\n </span>\n <InputField\n aria-label=\"Sort mode\"\n className=\"w-28\"\n placeholder=\"mode\"\n title=\"How a multi-valued field is reduced: min, max, sum, avg, median\"\n value={text(entry.mode)}\n onChange={(next) => set(index, { mode: next || undefined })}\n />\n <InputField\n aria-label=\"Missing\"\n className=\"w-28\"\n placeholder=\"missing\"\n title=\"Where documents without the field sort: _first, _last, or a substitute value\"\n value={text(entry.missing)}\n onChange={(next) => set(index, { missing: next || undefined })}\n />\n <InputField\n aria-label=\"Unmapped type\"\n className=\"w-32\"\n placeholder=\"unmapped type\"\n title=\"Treat the field as this type where it is unmapped\"\n value={text(entry.unmappedType)}\n onChange={(next) => set(index, { unmappedType: next || undefined })}\n />\n <IconButton\n icon={UiArrowUp}\n label={`Move ${entry.field || \"sort field\"} earlier`}\n disabled={index === 0}\n onClick={() => onChange(moveSortEntry(sort, index, -1))}\n />\n <IconButton\n icon={UiArrowDown}\n label={`Move ${entry.field || \"sort field\"} later`}\n disabled={index === sort.length - 1}\n onClick={() => onChange(moveSortEntry(sort, index, 1))}\n />\n <IconButton\n icon={UiTrash}\n label={`Remove ${entry.field || \"sort field\"}`}\n onClick={() =>\n onChange(sort.filter((_entry, position) => position !== index))\n }\n />\n </div>\n ))}\n </section>\n );\n}\n"],"names":["sortableFields","applyPatch","jsxs","jsx","Button","UiAdd","Combobox","Select","InputField","IconButton","UiArrowUp","moveSortEntry","UiArrowDown","UiTrash"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { EsSortBy } from './esQueryBuilderModel';
2
+ import { EsFieldMapping } from './esQueryOperators';
3
+ export declare function EsQuerySortEditor({ sort, fields, orders, onChange, }: {
4
+ sort: EsSortBy[];
5
+ fields: EsFieldMapping[];
6
+ orders: string[];
7
+ onChange: (sort: EsSortBy[]) => void;
8
+ }): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=esQuerySortEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esQuerySortEditor.d.ts","sourceRoot":"","sources":["../../src/profiles/esQuerySortEditor.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzE,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,MAAM,EACN,MAAM,EACN,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;CACtC,2CA6GA"}
@@ -0,0 +1,143 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { Combobox } from "../components/Combobox.js";
3
+ import { IconButton } from "../components/IconButton.js";
4
+ import { InputField } from "../components/InputField.js";
5
+ import { Button } from "../components/button.js";
6
+ import { Select } from "../components/select.js";
7
+ import { applyPatch } from "./profileWizardModel.js";
8
+ import { sortableFields } from "./esQueryOperators.js";
9
+ import { moveSortEntry } from "./esQuerySortModel.js";
10
+ import { UiAdd } from "../icons/components/UiAdd.js";
11
+ import { UiArrowUp } from "../icons/components/UiArrowUp.js";
12
+ import { UiArrowDown } from "../icons/components/UiArrowDown.js";
13
+ import { UiTrash } from "../icons/components/UiTrash.js";
14
+ function EsQuerySortEditor({
15
+ sort,
16
+ fields,
17
+ orders,
18
+ onChange
19
+ }) {
20
+ const options = sortableFields(fields).map((name) => ({
21
+ value: name,
22
+ label: name
23
+ }));
24
+ const set = (index, patch) => onChange(
25
+ sort.map(
26
+ (entry, position) => position === index ? applyPatch(entry, patch) : entry
27
+ )
28
+ );
29
+ const text = (value) => value ?? "";
30
+ return /* @__PURE__ */ jsxs("section", { className: "flex flex-col gap-2", children: [
31
+ /* @__PURE__ */ jsxs("header", { className: "flex items-center gap-2", children: [
32
+ /* @__PURE__ */ jsx("h3", { className: "text-xs font-medium text-muted-foreground", children: "Sort" }),
33
+ /* @__PURE__ */ jsxs(
34
+ Button,
35
+ {
36
+ type: "button",
37
+ variant: "ghost",
38
+ size: "sm",
39
+ onClick: () => onChange([
40
+ ...sort,
41
+ // An empty vocabulary leaves the order unset, which is the same
42
+ // as the backend's default — not an entry with order: undefined.
43
+ { field: "", ...orders[0] ? { order: orders[0] } : {} }
44
+ ]),
45
+ children: [
46
+ /* @__PURE__ */ jsx(UiAdd, { className: "text-xs" }),
47
+ " Sort field"
48
+ ]
49
+ }
50
+ )
51
+ ] }),
52
+ sort.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: "Unsorted — hits come back in the backend's own order." }) : null,
53
+ sort.map((entry, index) => /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
54
+ /* @__PURE__ */ jsx(
55
+ Combobox,
56
+ {
57
+ ariaLabel: "Sort field",
58
+ className: "min-w-48 flex-1",
59
+ value: entry.field,
60
+ onChange: (next) => set(index, { field: next }),
61
+ options,
62
+ placeholder: "Field…",
63
+ allowCustomValue: true
64
+ }
65
+ ),
66
+ /* @__PURE__ */ jsx("span", { className: "w-28 shrink-0", children: /* @__PURE__ */ jsx(
67
+ Select,
68
+ {
69
+ "aria-label": "Sort order",
70
+ value: text(entry.order),
71
+ options: [
72
+ { value: "", label: "order" },
73
+ ...orders.map((order) => ({ value: order, label: order }))
74
+ ],
75
+ onChange: (event) => set(index, { order: event.target.value || void 0 })
76
+ }
77
+ ) }),
78
+ /* @__PURE__ */ jsx(
79
+ InputField,
80
+ {
81
+ "aria-label": "Sort mode",
82
+ className: "w-28",
83
+ placeholder: "mode",
84
+ title: "How a multi-valued field is reduced: min, max, sum, avg, median",
85
+ value: text(entry.mode),
86
+ onChange: (next) => set(index, { mode: next || void 0 })
87
+ }
88
+ ),
89
+ /* @__PURE__ */ jsx(
90
+ InputField,
91
+ {
92
+ "aria-label": "Missing",
93
+ className: "w-28",
94
+ placeholder: "missing",
95
+ title: "Where documents without the field sort: _first, _last, or a substitute value",
96
+ value: text(entry.missing),
97
+ onChange: (next) => set(index, { missing: next || void 0 })
98
+ }
99
+ ),
100
+ /* @__PURE__ */ jsx(
101
+ InputField,
102
+ {
103
+ "aria-label": "Unmapped type",
104
+ className: "w-32",
105
+ placeholder: "unmapped type",
106
+ title: "Treat the field as this type where it is unmapped",
107
+ value: text(entry.unmappedType),
108
+ onChange: (next) => set(index, { unmappedType: next || void 0 })
109
+ }
110
+ ),
111
+ /* @__PURE__ */ jsx(
112
+ IconButton,
113
+ {
114
+ icon: UiArrowUp,
115
+ label: `Move ${entry.field || "sort field"} earlier`,
116
+ disabled: index === 0,
117
+ onClick: () => onChange(moveSortEntry(sort, index, -1))
118
+ }
119
+ ),
120
+ /* @__PURE__ */ jsx(
121
+ IconButton,
122
+ {
123
+ icon: UiArrowDown,
124
+ label: `Move ${entry.field || "sort field"} later`,
125
+ disabled: index === sort.length - 1,
126
+ onClick: () => onChange(moveSortEntry(sort, index, 1))
127
+ }
128
+ ),
129
+ /* @__PURE__ */ jsx(
130
+ IconButton,
131
+ {
132
+ icon: UiTrash,
133
+ label: `Remove ${entry.field || "sort field"}`,
134
+ onClick: () => onChange(sort.filter((_entry, position) => position !== index))
135
+ }
136
+ )
137
+ ] }, index))
138
+ ] });
139
+ }
140
+ export {
141
+ EsQuerySortEditor
142
+ };
143
+ //# sourceMappingURL=esQuerySortEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esQuerySortEditor.js","sources":["../../src/profiles/esQuerySortEditor.tsx"],"sourcesContent":["/**\n * Multi-field sort. The order of the entries is the tie-break order the backend\n * applies, so moving an entry is an edit in its own right rather than cosmetic.\n */\n\nimport { Combobox } from \"../components/Combobox\";\nimport { IconButton } from \"../components/IconButton\";\nimport { InputField } from \"../components/InputField\";\nimport { Button } from \"../components/button\";\nimport { Select } from \"../components/select\";\nimport { UiAdd, UiArrowDown, UiArrowUp, UiTrash } from \"../icons\";\nimport type { EsSortBy } from \"./esQueryBuilderModel\";\nimport { applyPatch, type Patch } from \"./profileWizardModel\";\nimport { sortableFields, type EsFieldMapping } from \"./esQueryOperators\";\nimport { moveSortEntry } from \"./esQuerySortModel\";\n\nexport function EsQuerySortEditor({\n sort,\n fields,\n orders,\n onChange,\n}: {\n sort: EsSortBy[];\n fields: EsFieldMapping[];\n orders: string[];\n onChange: (sort: EsSortBy[]) => void;\n}) {\n const options = sortableFields(fields).map((name) => ({\n value: name,\n label: name,\n }));\n const set = (index: number, patch: Patch<EsSortBy>) =>\n onChange(\n sort.map((entry, position) =>\n position === index ? applyPatch(entry, patch) : entry,\n ),\n );\n const text = (value: string | undefined) => value ?? \"\";\n\n return (\n <section className=\"flex flex-col gap-2\">\n <header className=\"flex items-center gap-2\">\n <h3 className=\"text-xs font-medium text-muted-foreground\">Sort</h3>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() =>\n onChange([\n ...sort,\n // An empty vocabulary leaves the order unset, which is the same\n // as the backend's default — not an entry with order: undefined.\n { field: \"\", ...(orders[0] ? { order: orders[0] } : {}) },\n ])\n }\n >\n <UiAdd className=\"text-xs\" /> Sort field\n </Button>\n </header>\n {sort.length === 0 ? (\n <p className=\"text-xs text-muted-foreground\">\n Unsorted — hits come back in the backend's own order.\n </p>\n ) : null}\n {sort.map((entry, index) => (\n <div key={index} className=\"flex flex-wrap items-center gap-2\">\n <Combobox\n ariaLabel=\"Sort field\"\n className=\"min-w-48 flex-1\"\n value={entry.field}\n onChange={(next) => set(index, { field: next })}\n options={options}\n placeholder=\"Field…\"\n allowCustomValue\n />\n <span className=\"w-28 shrink-0\">\n <Select\n aria-label=\"Sort order\"\n value={text(entry.order)}\n options={[\n { value: \"\", label: \"order\" },\n ...orders.map((order) => ({ value: order, label: order })),\n ]}\n onChange={(event) =>\n set(index, { order: event.target.value || undefined })\n }\n />\n </span>\n <InputField\n aria-label=\"Sort mode\"\n className=\"w-28\"\n placeholder=\"mode\"\n title=\"How a multi-valued field is reduced: min, max, sum, avg, median\"\n value={text(entry.mode)}\n onChange={(next) => set(index, { mode: next || undefined })}\n />\n <InputField\n aria-label=\"Missing\"\n className=\"w-28\"\n placeholder=\"missing\"\n title=\"Where documents without the field sort: _first, _last, or a substitute value\"\n value={text(entry.missing)}\n onChange={(next) => set(index, { missing: next || undefined })}\n />\n <InputField\n aria-label=\"Unmapped type\"\n className=\"w-32\"\n placeholder=\"unmapped type\"\n title=\"Treat the field as this type where it is unmapped\"\n value={text(entry.unmappedType)}\n onChange={(next) => set(index, { unmappedType: next || undefined })}\n />\n <IconButton\n icon={UiArrowUp}\n label={`Move ${entry.field || \"sort field\"} earlier`}\n disabled={index === 0}\n onClick={() => onChange(moveSortEntry(sort, index, -1))}\n />\n <IconButton\n icon={UiArrowDown}\n label={`Move ${entry.field || \"sort field\"} later`}\n disabled={index === sort.length - 1}\n onClick={() => onChange(moveSortEntry(sort, index, 1))}\n />\n <IconButton\n icon={UiTrash}\n label={`Remove ${entry.field || \"sort field\"}`}\n onClick={() =>\n onChange(sort.filter((_entry, position) => position !== index))\n }\n />\n </div>\n ))}\n </section>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ function moveSortEntry(sort, index, delta) {
4
+ const target = index + delta;
5
+ if (target < 0 || target >= sort.length) return sort;
6
+ const moved = [...sort];
7
+ const [entry] = moved.splice(index, 1);
8
+ if (!entry) throw new Error(`sort entry ${index} does not exist`);
9
+ moved.splice(target, 0, entry);
10
+ return moved;
11
+ }
12
+ exports.moveSortEntry = moveSortEntry;
13
+ //# sourceMappingURL=esQuerySortModel.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esQuerySortModel.cjs","sources":["../../src/profiles/esQuerySortModel.ts"],"sourcesContent":["/**\n * Multi-field sort. The order of the entries is the tie-break order the backend\n * applies, so moving an entry is an edit in its own right rather than cosmetic.\n */\n\nimport type { EsSortBy } from \"./esQueryBuilderModel\";\n\n/** moveSortEntry shifts one entry, clamping at the ends rather than wrapping. */\nexport function moveSortEntry(\n sort: EsSortBy[],\n index: number,\n delta: number,\n): EsSortBy[] {\n const target = index + delta;\n if (target < 0 || target >= sort.length) return sort;\n const moved = [...sort];\n const [entry] = moved.splice(index, 1);\n if (!entry) throw new Error(`sort entry ${index} does not exist`);\n moved.splice(target, 0, entry);\n return moved;\n}\n"],"names":[],"mappings":";;AAQO,SAAS,cACd,MACA,OACA,OACY;AACZ,QAAM,SAAS,QAAQ;AACvB,MAAI,SAAS,KAAK,UAAU,KAAK,OAAQ,QAAO;AAChD,QAAM,QAAQ,CAAC,GAAG,IAAI;AACtB,QAAM,CAAC,KAAK,IAAI,MAAM,OAAO,OAAO,CAAC;AACrC,MAAI,CAAC,MAAO,OAAM,IAAI,MAAM,cAAc,KAAK,iBAAiB;AAChE,QAAM,OAAO,QAAQ,GAAG,KAAK;AAC7B,SAAO;AACT;;"}
@@ -0,0 +1,4 @@
1
+ import { EsSortBy } from './esQueryBuilderModel';
2
+ /** moveSortEntry shifts one entry, clamping at the ends rather than wrapping. */
3
+ export declare function moveSortEntry(sort: EsSortBy[], index: number, delta: number): EsSortBy[];
4
+ //# sourceMappingURL=esQuerySortModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esQuerySortModel.d.ts","sourceRoot":"","sources":["../../src/profiles/esQuerySortModel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,iFAAiF;AACjF,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,QAAQ,EAAE,CAQZ"}
@@ -0,0 +1,13 @@
1
+ function moveSortEntry(sort, index, delta) {
2
+ const target = index + delta;
3
+ if (target < 0 || target >= sort.length) return sort;
4
+ const moved = [...sort];
5
+ const [entry] = moved.splice(index, 1);
6
+ if (!entry) throw new Error(`sort entry ${index} does not exist`);
7
+ moved.splice(target, 0, entry);
8
+ return moved;
9
+ }
10
+ export {
11
+ moveSortEntry
12
+ };
13
+ //# sourceMappingURL=esQuerySortModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esQuerySortModel.js","sources":["../../src/profiles/esQuerySortModel.ts"],"sourcesContent":["/**\n * Multi-field sort. The order of the entries is the tie-break order the backend\n * applies, so moving an entry is an edit in its own right rather than cosmetic.\n */\n\nimport type { EsSortBy } from \"./esQueryBuilderModel\";\n\n/** moveSortEntry shifts one entry, clamping at the ends rather than wrapping. */\nexport function moveSortEntry(\n sort: EsSortBy[],\n index: number,\n delta: number,\n): EsSortBy[] {\n const target = index + delta;\n if (target < 0 || target >= sort.length) return sort;\n const moved = [...sort];\n const [entry] = moved.splice(index, 1);\n if (!entry) throw new Error(`sort entry ${index} does not exist`);\n moved.splice(target, 0, entry);\n return moved;\n}\n"],"names":[],"mappings":"AAQO,SAAS,cACd,MACA,OACA,OACY;AACZ,QAAM,SAAS,QAAQ;AACvB,MAAI,SAAS,KAAK,UAAU,KAAK,OAAQ,QAAO;AAChD,QAAM,QAAQ,CAAC,GAAG,IAAI;AACtB,QAAM,CAAC,KAAK,IAAI,MAAM,OAAO,OAAO,CAAC;AACrC,MAAI,CAAC,MAAO,OAAM,IAAI,MAAM,cAAc,KAAK,iBAAiB;AAChE,QAAM,OAAO,QAAQ,GAAG,KAAK;AAC7B,SAAO;AACT;"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const Combobox = require("../components/Combobox.cjs");
5
+ const reactQuery = require("@tanstack/react-query");
6
+ const react = require("react");
7
+ function useFieldValues(lookup) {
8
+ const [query, setQuery] = react.useState("");
9
+ const result = reactQuery.useQuery({
10
+ queryKey: ["es-field-values", lookup.key, query],
11
+ queryFn: () => lookup.fetch(query),
12
+ placeholderData: reactQuery.keepPreviousData,
13
+ staleTime: 3e4,
14
+ retry: 0
15
+ });
16
+ return { ...result, onSearch: setQuery };
17
+ }
18
+ function valueOptions(result) {
19
+ return ((result == null ? void 0 : result.values) ?? []).map((entry) => ({
20
+ value: entry.value,
21
+ label: entry.value,
22
+ title: `${entry.count.toLocaleString()} documents`
23
+ }));
24
+ }
25
+ function valueSummary(result, error) {
26
+ if (error) return error.message;
27
+ if (!result) return void 0;
28
+ const scope = result.scoped ? "matching current filters" : "across the index";
29
+ if (!result.values.length) return `no values ${scope}`;
30
+ return `${result.values.length} of ${result.total.toLocaleString()} · ${scope}`;
31
+ }
32
+ function ValueCombobox({
33
+ id,
34
+ label,
35
+ lookup,
36
+ value,
37
+ onChange
38
+ }) {
39
+ const { data, error, isFetching, onSearch } = useFieldValues(lookup);
40
+ const summary = valueSummary(data, error);
41
+ return /* @__PURE__ */ jsxRuntime.jsx(
42
+ Combobox.Combobox,
43
+ {
44
+ id,
45
+ ariaLabel: label,
46
+ className: "min-w-48",
47
+ placeholder: label,
48
+ value,
49
+ onChange,
50
+ options: valueOptions(data),
51
+ onSearch,
52
+ loading: isFetching,
53
+ allowCustomValue: true,
54
+ ...summary ? { footer: summary } : {}
55
+ }
56
+ );
57
+ }
58
+ function ValuesCombobox({
59
+ label,
60
+ lookup,
61
+ values,
62
+ onChange
63
+ }) {
64
+ const { data, error, isFetching, onSearch } = useFieldValues(lookup);
65
+ const summary = valueSummary(data, error);
66
+ return /* @__PURE__ */ jsxRuntime.jsx(
67
+ Combobox.Combobox,
68
+ {
69
+ multiple: true,
70
+ variant: "tags",
71
+ ariaLabel: label,
72
+ className: "min-w-56 flex-1",
73
+ placeholder: label,
74
+ value: values,
75
+ onChange,
76
+ options: valueOptions(data),
77
+ onSearch,
78
+ loading: isFetching,
79
+ allowCustomValue: true,
80
+ ...summary ? { footer: summary } : {}
81
+ }
82
+ );
83
+ }
84
+ exports.ValueCombobox = ValueCombobox;
85
+ exports.ValuesCombobox = ValuesCombobox;
86
+ //# sourceMappingURL=esValueCombobox.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esValueCombobox.cjs","sources":["../../src/profiles/esValueCombobox.tsx"],"sourcesContent":["/**\n * The operand controls backed by a field's real values. Typing narrows the\n * terms aggregation server-side rather than filtering a fetched page, so a\n * field with thousands of values stays usable; a value outside the returned\n * window is still typeable, which is what `allowCustomValue` stands for.\n */\n\nimport { Combobox } from \"../components/Combobox\";\nimport type { ComboboxOption } from \"../components/Combobox\";\nimport { keepPreviousData, useQuery } from \"@tanstack/react-query\";\nimport { useState } from \"react\";\nimport type { FieldValuesQuery, FieldValuesResult } from \"./esFieldValues\";\n\nfunction useFieldValues(lookup: FieldValuesQuery) {\n const [query, setQuery] = useState(\"\");\n const result = useQuery<FieldValuesResult>({\n queryKey: [\"es-field-values\", lookup.key, query],\n queryFn: () => lookup.fetch(query),\n placeholderData: keepPreviousData,\n staleTime: 30_000,\n retry: 0,\n });\n return { ...result, onSearch: setQuery };\n}\n\nfunction valueOptions(result: FieldValuesResult | undefined): ComboboxOption[] {\n return (result?.values ?? []).map((entry) => ({\n value: entry.value,\n label: entry.value,\n title: `${entry.count.toLocaleString()} documents`,\n }));\n}\n\n/**\n * The summary explains what the list is a window onto: how much of the field's\n * cardinality is shown, and whether the rest of the query narrowed it.\n */\nfunction valueSummary(\n result: FieldValuesResult | undefined,\n error: Error | null,\n): string | undefined {\n if (error) return error.message;\n if (!result) return undefined;\n const scope = result.scoped ? \"matching current filters\" : \"across the index\";\n if (!result.values.length) return `no values ${scope}`;\n return `${result.values.length} of ${result.total.toLocaleString()} · ${scope}`;\n}\n\nexport function ValueCombobox({\n id,\n label,\n lookup,\n value,\n onChange,\n}: {\n id: string;\n label: string;\n lookup: FieldValuesQuery;\n value: string;\n onChange: (next: string) => void;\n}) {\n const { data, error, isFetching, onSearch } = useFieldValues(lookup);\n const summary = valueSummary(data, error as Error | null);\n return (\n <Combobox\n id={id}\n ariaLabel={label}\n className=\"min-w-48\"\n placeholder={label}\n value={value}\n onChange={onChange}\n options={valueOptions(data)}\n onSearch={onSearch}\n loading={isFetching}\n allowCustomValue\n {...(summary ? { footer: summary } : {})}\n />\n );\n}\n\nexport function ValuesCombobox({\n label,\n lookup,\n values,\n onChange,\n}: {\n label: string;\n lookup: FieldValuesQuery;\n values: string[];\n onChange: (next: string[]) => void;\n}) {\n const { data, error, isFetching, onSearch } = useFieldValues(lookup);\n const summary = valueSummary(data, error as Error | null);\n return (\n <Combobox\n multiple\n variant=\"tags\"\n ariaLabel={label}\n className=\"min-w-56 flex-1\"\n placeholder={label}\n value={values}\n onChange={onChange}\n options={valueOptions(data)}\n onSearch={onSearch}\n loading={isFetching}\n allowCustomValue\n {...(summary ? { footer: summary } : {})}\n />\n );\n}\n"],"names":["useState","useQuery","keepPreviousData","jsx","Combobox"],"mappings":";;;;;;AAaA,SAAS,eAAe,QAA0B;AAChD,QAAM,CAAC,OAAO,QAAQ,IAAIA,MAAAA,SAAS,EAAE;AACrC,QAAM,SAASC,WAAAA,SAA4B;AAAA,IACzC,UAAU,CAAC,mBAAmB,OAAO,KAAK,KAAK;AAAA,IAC/C,SAAS,MAAM,OAAO,MAAM,KAAK;AAAA,IACjC,iBAAiBC,WAAAA;AAAAA,IACjB,WAAW;AAAA,IACX,OAAO;AAAA,EAAA,CACR;AACD,SAAO,EAAE,GAAG,QAAQ,UAAU,SAAA;AAChC;AAEA,SAAS,aAAa,QAAyD;AAC7E,WAAQ,iCAAQ,WAAU,CAAA,GAAI,IAAI,CAAC,WAAW;AAAA,IAC5C,OAAO,MAAM;AAAA,IACb,OAAO,MAAM;AAAA,IACb,OAAO,GAAG,MAAM,MAAM,gBAAgB;AAAA,EAAA,EACtC;AACJ;AAMA,SAAS,aACP,QACA,OACoB;AACpB,MAAI,cAAc,MAAM;AACxB,MAAI,CAAC,OAAQ,QAAO;AACpB,QAAM,QAAQ,OAAO,SAAS,6BAA6B;AAC3D,MAAI,CAAC,OAAO,OAAO,OAAQ,QAAO,aAAa,KAAK;AACpD,SAAO,GAAG,OAAO,OAAO,MAAM,OAAO,OAAO,MAAM,eAAA,CAAgB,MAAM,KAAK;AAC/E;AAEO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AACD,QAAM,EAAE,MAAM,OAAO,YAAY,SAAA,IAAa,eAAe,MAAM;AACnE,QAAM,UAAU,aAAa,MAAM,KAAqB;AACxD,SACEC,2BAAAA;AAAAA,IAACC,SAAAA;AAAAA,IAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,MACX,WAAU;AAAA,MACV,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA,SAAS,aAAa,IAAI;AAAA,MAC1B;AAAA,MACA,SAAS;AAAA,MACT,kBAAgB;AAAA,MACf,GAAI,UAAU,EAAE,QAAQ,YAAY,CAAA;AAAA,IAAC;AAAA,EAAA;AAG5C;AAEO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;AACD,QAAM,EAAE,MAAM,OAAO,YAAY,SAAA,IAAa,eAAe,MAAM;AACnE,QAAM,UAAU,aAAa,MAAM,KAAqB;AACxD,SACED,2BAAAA;AAAAA,IAACC,SAAAA;AAAAA,IAAA;AAAA,MACC,UAAQ;AAAA,MACR,SAAQ;AAAA,MACR,WAAW;AAAA,MACX,WAAU;AAAA,MACV,aAAa;AAAA,MACb,OAAO;AAAA,MACP;AAAA,MACA,SAAS,aAAa,IAAI;AAAA,MAC1B;AAAA,MACA,SAAS;AAAA,MACT,kBAAgB;AAAA,MACf,GAAI,UAAU,EAAE,QAAQ,YAAY,CAAA;AAAA,IAAC;AAAA,EAAA;AAG5C;;;"}
@@ -0,0 +1,15 @@
1
+ import { FieldValuesQuery } from './esFieldValues';
2
+ export declare function ValueCombobox({ id, label, lookup, value, onChange, }: {
3
+ id: string;
4
+ label: string;
5
+ lookup: FieldValuesQuery;
6
+ value: string;
7
+ onChange: (next: string) => void;
8
+ }): import("react/jsx-runtime").JSX.Element;
9
+ export declare function ValuesCombobox({ label, lookup, values, onChange, }: {
10
+ label: string;
11
+ lookup: FieldValuesQuery;
12
+ values: string[];
13
+ onChange: (next: string[]) => void;
14
+ }): import("react/jsx-runtime").JSX.Element;
15
+ //# sourceMappingURL=esValueCombobox.d.ts.map