@qoretechnologies/reqraft 0.10.66-pr.145.gcb1e59d → 0.10.66

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 (913) hide show
  1. package/README.md +53 -1
  2. package/dist/components/Description/AllowedValuesHelp.d.ts +20 -0
  3. package/dist/components/Description/AllowedValuesHelp.d.ts.map +1 -0
  4. package/dist/components/Description/AllowedValuesHelp.js +86 -0
  5. package/dist/components/Description/AllowedValuesHelp.js.map +1 -0
  6. package/dist/components/Description/describedControl.d.ts +54 -0
  7. package/dist/components/Description/describedControl.d.ts.map +1 -0
  8. package/dist/components/Description/describedControl.js +81 -0
  9. package/dist/components/Description/describedControl.js.map +1 -0
  10. package/dist/components/Description/index.d.ts.map +1 -1
  11. package/dist/components/Description/index.js +3 -2
  12. package/dist/components/Description/index.js.map +1 -1
  13. package/dist/components/colorValue/colorValue.d.ts +59 -0
  14. package/dist/components/colorValue/colorValue.d.ts.map +1 -0
  15. package/dist/components/colorValue/colorValue.js +245 -0
  16. package/dist/components/colorValue/colorValue.js.map +1 -0
  17. package/dist/components/colorValue/index.d.ts +34 -0
  18. package/dist/components/colorValue/index.d.ts.map +1 -0
  19. package/dist/components/colorValue/index.js +136 -0
  20. package/dist/components/colorValue/index.js.map +1 -0
  21. package/dist/components/colorValue/labels.d.ts +12 -0
  22. package/dist/components/colorValue/labels.d.ts.map +1 -0
  23. package/dist/components/colorValue/labels.js +11 -0
  24. package/dist/components/colorValue/labels.js.map +1 -0
  25. package/dist/components/composer/Composer.d.ts +1 -1
  26. package/dist/components/composer/Composer.d.ts.map +1 -1
  27. package/dist/components/composer/Composer.js +2 -2
  28. package/dist/components/composer/Composer.js.map +1 -1
  29. package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
  30. package/dist/components/dpqlEditor/DpqlEditor.js +156 -10
  31. package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
  32. package/dist/components/dpqlEditor/dpqlCompletions.d.ts +39 -0
  33. package/dist/components/dpqlEditor/dpqlCompletions.d.ts.map +1 -0
  34. package/dist/components/dpqlEditor/dpqlCompletions.js +294 -0
  35. package/dist/components/dpqlEditor/dpqlCompletions.js.map +1 -0
  36. package/dist/components/dpqlEditor/dpqlHelpers.d.ts +54 -5
  37. package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
  38. package/dist/components/dpqlEditor/dpqlHelpers.js +420 -63
  39. package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
  40. package/dist/components/dpqlEditor/dpqlInserter.d.ts.map +1 -1
  41. package/dist/components/dpqlEditor/dpqlInserter.js +67 -29
  42. package/dist/components/dpqlEditor/dpqlInserter.js.map +1 -1
  43. package/dist/components/dpqlEditor/dpqlTags.d.ts +17 -7
  44. package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
  45. package/dist/components/dpqlEditor/dpqlTags.js +44 -17
  46. package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
  47. package/dist/components/dpqlEditor/types.d.ts +94 -8
  48. package/dist/components/dpqlEditor/types.d.ts.map +1 -1
  49. package/dist/components/dpqlEditor/useDpqlSession.d.ts +7 -2
  50. package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
  51. package/dist/components/dpqlEditor/useDpqlSession.js +49 -17
  52. package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
  53. package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
  54. package/dist/components/form/engine/CompactRow.js +336 -243
  55. package/dist/components/form/engine/CompactRow.js.map +1 -1
  56. package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
  57. package/dist/components/form/engine/CompactToolbar.js +20 -57
  58. package/dist/components/form/engine/CompactToolbar.js.map +1 -1
  59. package/dist/components/form/engine/FormEngine.d.ts +67 -59
  60. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  61. package/dist/components/form/engine/FormEngine.js +606 -409
  62. package/dist/components/form/engine/FormEngine.js.map +1 -1
  63. package/dist/components/form/engine/HiddenFieldsNote.d.ts +28 -0
  64. package/dist/components/form/engine/HiddenFieldsNote.d.ts.map +1 -0
  65. package/dist/components/form/engine/HiddenFieldsNote.js +32 -0
  66. package/dist/components/form/engine/HiddenFieldsNote.js.map +1 -0
  67. package/dist/components/form/engine/OptionFieldMessages.d.ts +2 -18
  68. package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
  69. package/dist/components/form/engine/OptionFieldMessages.js +28 -25
  70. package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
  71. package/dist/components/form/engine/OptionsHelpDialog.d.ts.map +1 -1
  72. package/dist/components/form/engine/OptionsHelpDialog.js +19 -2
  73. package/dist/components/form/engine/OptionsHelpDialog.js.map +1 -1
  74. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts +2 -2
  75. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
  76. package/dist/components/form/engine/_structuredData/SchemaDataView.js +11 -31
  77. package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
  78. package/dist/components/form/engine/compactRowContext.d.ts +30 -6
  79. package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
  80. package/dist/components/form/engine/compactRowContext.js.map +1 -1
  81. package/dist/components/form/engine/compactRowStyles.d.ts +56 -31
  82. package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
  83. package/dist/components/form/engine/compactRowStyles.js +121 -110
  84. package/dist/components/form/engine/compactRowStyles.js.map +1 -1
  85. package/dist/components/form/engine/compactToolbarColors.d.ts +16 -0
  86. package/dist/components/form/engine/compactToolbarColors.d.ts.map +1 -0
  87. package/dist/components/form/engine/compactToolbarColors.js +21 -0
  88. package/dist/components/form/engine/compactToolbarColors.js.map +1 -0
  89. package/dist/components/form/engine/compactToolbarContext.d.ts +0 -3
  90. package/dist/components/form/engine/compactToolbarContext.d.ts.map +1 -1
  91. package/dist/components/form/engine/compactToolbarContext.js.map +1 -1
  92. package/dist/components/form/engine/inheritProps.d.ts +29 -0
  93. package/dist/components/form/engine/inheritProps.d.ts.map +1 -0
  94. package/dist/components/form/engine/inheritProps.js +43 -0
  95. package/dist/components/form/engine/inheritProps.js.map +1 -0
  96. package/dist/components/form/engine/operatorSummary.d.ts +26 -0
  97. package/dist/components/form/engine/operatorSummary.d.ts.map +1 -0
  98. package/dist/components/form/engine/operatorSummary.js +35 -0
  99. package/dist/components/form/engine/operatorSummary.js.map +1 -0
  100. package/dist/components/form/engine/readFirst.d.ts +26 -22
  101. package/dist/components/form/engine/readFirst.d.ts.map +1 -1
  102. package/dist/components/form/engine/readFirst.js +79 -115
  103. package/dist/components/form/engine/readFirst.js.map +1 -1
  104. package/dist/components/form/engine/readFirstColors.d.ts +30 -0
  105. package/dist/components/form/engine/readFirstColors.d.ts.map +1 -0
  106. package/dist/components/form/engine/readFirstColors.js +51 -0
  107. package/dist/components/form/engine/readFirstColors.js.map +1 -0
  108. package/dist/components/form/engine/rowFocus.d.ts +3 -9
  109. package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
  110. package/dist/components/form/engine/rowFocus.js +30 -19
  111. package/dist/components/form/engine/rowFocus.js.map +1 -1
  112. package/dist/components/form/engine/typeChoices.d.ts +1 -1
  113. package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -1
  114. package/dist/components/form/engine/variants/VariantCalmTable.js +2 -1
  115. package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -1
  116. package/dist/components/form/engine/variants/VariantCards.d.ts.map +1 -1
  117. package/dist/components/form/engine/variants/VariantCards.js +2 -1
  118. package/dist/components/form/engine/variants/VariantCards.js.map +1 -1
  119. package/dist/components/form/engine/variants/VariantFocus.js +1 -1
  120. package/dist/components/form/engine/variants/VariantFocus.js.map +1 -1
  121. package/dist/components/form/engine/variants/VariantMinimal.d.ts.map +1 -1
  122. package/dist/components/form/engine/variants/VariantMinimal.js +2 -1
  123. package/dist/components/form/engine/variants/VariantMinimal.js.map +1 -1
  124. package/dist/components/form/engine/variants/variantParts.d.ts +1 -1
  125. package/dist/components/form/engine/variants/variantParts.d.ts.map +1 -1
  126. package/dist/components/form/engine/variants/variantParts.js +25 -17
  127. package/dist/components/form/engine/variants/variantParts.js.map +1 -1
  128. package/dist/components/form/expressions/DpqlRendering.d.ts +1 -1
  129. package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -1
  130. package/dist/components/form/expressions/DpqlRendering.js +7 -6
  131. package/dist/components/form/expressions/DpqlRendering.js.map +1 -1
  132. package/dist/components/form/expressions/ExpressionField.d.ts +67 -3
  133. package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
  134. package/dist/components/form/expressions/ExpressionField.js +536 -114
  135. package/dist/components/form/expressions/ExpressionField.js.map +1 -1
  136. package/dist/components/form/expressions/argumentPresence.d.ts +14 -0
  137. package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -1
  138. package/dist/components/form/expressions/argumentPresence.js +16 -1
  139. package/dist/components/form/expressions/argumentPresence.js.map +1 -1
  140. package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
  141. package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
  142. package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
  143. package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
  144. package/dist/components/form/expressions/builder/argumentLabel.js +30 -11
  145. package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
  146. package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
  147. package/dist/components/form/expressions/builder/argumentWrapper.js +3 -1
  148. package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
  149. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts +9 -0
  150. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
  151. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +30 -27
  152. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -1
  153. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +1 -1
  154. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -1
  155. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +7 -5
  156. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
  157. package/dist/components/form/expressions/builder/index.d.ts +34 -2
  158. package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
  159. package/dist/components/form/expressions/builder/index.js +170 -80
  160. package/dist/components/form/expressions/builder/index.js.map +1 -1
  161. package/dist/components/form/expressions/builder/item.d.ts +6 -2
  162. package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
  163. package/dist/components/form/expressions/builder/item.js +19 -5
  164. package/dist/components/form/expressions/builder/item.js.map +1 -1
  165. package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
  166. package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
  167. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts +11 -0
  168. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts.map +1 -0
  169. package/dist/components/form/expressions/dpqlMockRecordPath.js +254 -0
  170. package/dist/components/form/expressions/dpqlMockRecordPath.js.map +1 -0
  171. package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
  172. package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
  173. package/dist/components/form/expressions/expressionOperands.js +97 -0
  174. package/dist/components/form/expressions/expressionOperands.js.map +1 -0
  175. package/dist/components/form/expressions/fieldPath.d.ts +24 -0
  176. package/dist/components/form/expressions/fieldPath.d.ts.map +1 -0
  177. package/dist/components/form/expressions/fieldPath.js +152 -0
  178. package/dist/components/form/expressions/fieldPath.js.map +1 -0
  179. package/dist/components/form/expressions/loneValue.d.ts +17 -0
  180. package/dist/components/form/expressions/loneValue.d.ts.map +1 -0
  181. package/dist/components/form/expressions/loneValue.js +33 -0
  182. package/dist/components/form/expressions/loneValue.js.map +1 -0
  183. package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
  184. package/dist/components/form/expressions/mockExpressions.js +22 -5
  185. package/dist/components/form/expressions/mockExpressions.js.map +1 -1
  186. package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
  187. package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
  188. package/dist/components/form/expressions/renderExpressionToText.js +37 -25
  189. package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
  190. package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
  191. package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
  192. package/dist/components/form/expressions/textOfExpression.js +49 -0
  193. package/dist/components/form/expressions/textOfExpression.js.map +1 -0
  194. package/dist/components/form/expressions/types.d.ts +12 -0
  195. package/dist/components/form/expressions/types.d.ts.map +1 -1
  196. package/dist/components/form/expressions/types.js +6 -1
  197. package/dist/components/form/expressions/types.js.map +1 -1
  198. package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
  199. package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
  200. package/dist/components/form/expressions/useExpressionType.js +181 -0
  201. package/dist/components/form/expressions/useExpressionType.js.map +1 -0
  202. package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
  203. package/dist/components/form/expressions/useRenderExpression.js +13 -9
  204. package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
  205. package/dist/components/form/expressions/wildcardExpressions.d.ts +27 -0
  206. package/dist/components/form/expressions/wildcardExpressions.d.ts.map +1 -0
  207. package/dist/components/form/expressions/wildcardExpressions.js +101 -0
  208. package/dist/components/form/expressions/wildcardExpressions.js.map +1 -0
  209. package/dist/components/form/fields/Field.d.ts.map +1 -1
  210. package/dist/components/form/fields/Field.js +39 -18
  211. package/dist/components/form/fields/Field.js.map +1 -1
  212. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts +0 -7
  213. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
  214. package/dist/components/form/fields/allowed-values/AllowedValues.js +46 -35
  215. package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
  216. package/dist/components/form/fields/allowed-values/choicePicture.d.ts +37 -0
  217. package/dist/components/form/fields/allowed-values/choicePicture.d.ts.map +1 -0
  218. package/dist/components/form/fields/allowed-values/choicePicture.js +64 -0
  219. package/dist/components/form/fields/allowed-values/choicePicture.js.map +1 -0
  220. package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
  221. package/dist/components/form/fields/array/ArrayAuto.js +24 -0
  222. package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
  223. package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
  224. package/dist/components/form/fields/array/ArrayAutoField.js +36 -13
  225. package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
  226. package/dist/components/form/fields/auto/AutoFormField.d.ts +30 -1
  227. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
  228. package/dist/components/form/fields/auto/AutoFormField.js +123 -79
  229. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
  230. package/dist/components/form/fields/auto/hostEditorValue.d.ts +30 -0
  231. package/dist/components/form/fields/auto/hostEditorValue.d.ts.map +1 -0
  232. package/dist/components/form/fields/auto/hostEditorValue.js +53 -0
  233. package/dist/components/form/fields/auto/hostEditorValue.js.map +1 -0
  234. package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
  235. package/dist/components/form/fields/binary/Binary.js +23 -3
  236. package/dist/components/form/fields/binary/Binary.js.map +1 -1
  237. package/dist/components/form/fields/boolean/Boolean.d.ts +5 -0
  238. package/dist/components/form/fields/boolean/Boolean.d.ts.map +1 -1
  239. package/dist/components/form/fields/boolean/Boolean.js +9 -1
  240. package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
  241. package/dist/components/form/fields/color/Color.d.ts +103 -16
  242. package/dist/components/form/fields/color/Color.d.ts.map +1 -1
  243. package/dist/components/form/fields/color/Color.js +616 -16
  244. package/dist/components/form/fields/color/Color.js.map +1 -1
  245. package/dist/components/form/fields/emittedValues.d.ts +34 -3
  246. package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
  247. package/dist/components/form/fields/emittedValues.js +24 -1
  248. package/dist/components/form/fields/emittedValues.js.map +1 -1
  249. package/dist/components/form/fields/file/File.d.ts +1 -1
  250. package/dist/components/form/fields/file/File.d.ts.map +1 -1
  251. package/dist/components/form/fields/file/File.js +4 -2
  252. package/dist/components/form/fields/file/File.js.map +1 -1
  253. package/dist/components/form/fields/long-string/LongString.d.ts +1 -7
  254. package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
  255. package/dist/components/form/fields/long-string/LongString.js +30 -13
  256. package/dist/components/form/fields/long-string/LongString.js.map +1 -1
  257. package/dist/components/form/fields/markdown/MarkdownView.js +1 -1
  258. package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
  259. package/dist/components/form/fields/multi-select/MultiSelectFormField.js +10 -7
  260. package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
  261. package/dist/components/form/fields/number/Number.d.ts +7 -4
  262. package/dist/components/form/fields/number/Number.d.ts.map +1 -1
  263. package/dist/components/form/fields/number/Number.js +45 -18
  264. package/dist/components/form/fields/number/Number.js.map +1 -1
  265. package/dist/components/form/fields/object/Object.d.ts +1 -1
  266. package/dist/components/form/fields/object/Object.d.ts.map +1 -1
  267. package/dist/components/form/fields/object/Object.js +4 -2
  268. package/dist/components/form/fields/object/Object.js.map +1 -1
  269. package/dist/components/form/fields/pendingEdit.d.ts +52 -0
  270. package/dist/components/form/fields/pendingEdit.d.ts.map +1 -0
  271. package/dist/components/form/fields/pendingEdit.js +79 -0
  272. package/dist/components/form/fields/pendingEdit.js.map +1 -0
  273. package/dist/components/form/fields/radio-group/RadioGroup.d.ts.map +1 -1
  274. package/dist/components/form/fields/radio-group/RadioGroup.js +8 -13
  275. package/dist/components/form/fields/radio-group/RadioGroup.js.map +1 -1
  276. package/dist/components/form/fields/rich-text/RichText.d.ts +20 -1
  277. package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
  278. package/dist/components/form/fields/rich-text/RichText.js +426 -91
  279. package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
  280. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts +18 -0
  281. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts.map +1 -0
  282. package/dist/components/form/fields/rich-text/useTemplateTags.js +80 -0
  283. package/dist/components/form/fields/rich-text/useTemplateTags.js.map +1 -0
  284. package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -1
  285. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +4 -1
  286. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -1
  287. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -1
  288. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +20 -5
  289. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -1
  290. package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -1
  291. package/dist/components/form/fields/schema-definition/TableEditor.js +10 -2
  292. package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -1
  293. package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -1
  294. package/dist/components/form/fields/schema-definition/index.js +8 -4
  295. package/dist/components/form/fields/schema-definition/index.js.map +1 -1
  296. package/dist/components/form/fields/select/Select.d.ts +10 -1
  297. package/dist/components/form/fields/select/Select.d.ts.map +1 -1
  298. package/dist/components/form/fields/select/Select.js +28 -14
  299. package/dist/components/form/fields/select/Select.js.map +1 -1
  300. package/dist/components/form/fields/select/SelectCollection.d.ts +5 -0
  301. package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
  302. package/dist/components/form/fields/select/SelectCollection.js +25 -12
  303. package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
  304. package/dist/components/form/fields/select/unavailableRow.d.ts +23 -0
  305. package/dist/components/form/fields/select/unavailableRow.d.ts.map +1 -0
  306. package/dist/components/form/fields/select/unavailableRow.js +55 -0
  307. package/dist/components/form/fields/select/unavailableRow.js.map +1 -0
  308. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +11 -5
  309. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
  310. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +21 -5
  311. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
  312. package/dist/components/form/fields/template/TemplateBrowser.d.ts +16 -0
  313. package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
  314. package/dist/components/form/fields/template/TemplateBrowser.js +89 -0
  315. package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
  316. package/dist/components/form/fields/template/TemplateField.d.ts +105 -1
  317. package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
  318. package/dist/components/form/fields/template/TemplateField.js +706 -168
  319. package/dist/components/form/fields/template/TemplateField.js.map +1 -1
  320. package/dist/components/form/fields/template/TemplatePicker.d.ts +54 -0
  321. package/dist/components/form/fields/template/TemplatePicker.d.ts.map +1 -0
  322. package/dist/components/form/fields/template/TemplatePicker.js +459 -0
  323. package/dist/components/form/fields/template/TemplatePicker.js.map +1 -0
  324. package/dist/components/form/fields/template/TemplateText.d.ts +0 -17
  325. package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -1
  326. package/dist/components/form/fields/template/TemplateText.js +22 -16
  327. package/dist/components/form/fields/template/TemplateText.js.map +1 -1
  328. package/dist/components/form/fields/template/referenceNames.d.ts +63 -0
  329. package/dist/components/form/fields/template/referenceNames.d.ts.map +1 -0
  330. package/dist/components/form/fields/template/referenceNames.js +69 -0
  331. package/dist/components/form/fields/template/referenceNames.js.map +1 -0
  332. package/dist/components/form/fields/template/writtenAsText.d.ts +61 -0
  333. package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
  334. package/dist/components/form/fields/template/writtenAsText.js +204 -0
  335. package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
  336. package/dist/components/form/index.d.ts +12 -2
  337. package/dist/components/form/index.d.ts.map +1 -1
  338. package/dist/components/form/index.js +25 -3
  339. package/dist/components/form/index.js.map +1 -1
  340. package/dist/components/form/typeSentenceForm.d.ts +17 -0
  341. package/dist/components/form/typeSentenceForm.d.ts.map +1 -0
  342. package/dist/components/form/typeSentenceForm.js +54 -0
  343. package/dist/components/form/typeSentenceForm.js.map +1 -0
  344. package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
  345. package/dist/components/imageLightbox/ImageLightbox.js +19 -9
  346. package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
  347. package/dist/components/log/Log.d.ts.map +1 -1
  348. package/dist/components/log/Log.js +20 -8
  349. package/dist/components/log/Log.js.map +1 -1
  350. package/dist/components/menu/Menu.d.ts.map +1 -1
  351. package/dist/components/menu/Menu.js +19 -10
  352. package/dist/components/menu/Menu.js.map +1 -1
  353. package/dist/components/smartEditor/CompletionMenu.d.ts +53 -0
  354. package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
  355. package/dist/components/smartEditor/CompletionMenu.js +302 -0
  356. package/dist/components/smartEditor/CompletionMenu.js.map +1 -0
  357. package/dist/components/smartEditor/MarkdownDoc.d.ts +1 -1
  358. package/dist/components/smartEditor/MarkdownDoc.js +3 -3
  359. package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
  360. package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
  361. package/dist/components/smartEditor/SmartEditor.js +616 -190
  362. package/dist/components/smartEditor/SmartEditor.js.map +1 -1
  363. package/dist/components/smartEditor/completionStyle.d.ts +28 -0
  364. package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
  365. package/dist/components/smartEditor/completionStyle.js +79 -0
  366. package/dist/components/smartEditor/completionStyle.js.map +1 -0
  367. package/dist/components/smartEditor/contextTitle.d.ts +10 -0
  368. package/dist/components/smartEditor/contextTitle.d.ts.map +1 -0
  369. package/dist/components/smartEditor/contextTitle.js +21 -0
  370. package/dist/components/smartEditor/contextTitle.js.map +1 -0
  371. package/dist/components/smartEditor/editingAids.d.ts +64 -0
  372. package/dist/components/smartEditor/editingAids.d.ts.map +1 -0
  373. package/dist/components/smartEditor/editingAids.js +213 -0
  374. package/dist/components/smartEditor/editingAids.js.map +1 -0
  375. package/dist/components/smartEditor/index.d.ts +6 -1
  376. package/dist/components/smartEditor/index.d.ts.map +1 -1
  377. package/dist/components/smartEditor/index.js +19 -1
  378. package/dist/components/smartEditor/index.js.map +1 -1
  379. package/dist/components/smartEditor/templateCompletions.d.ts +98 -0
  380. package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
  381. package/dist/components/smartEditor/templateCompletions.js +380 -0
  382. package/dist/components/smartEditor/templateCompletions.js.map +1 -0
  383. package/dist/components/smartEditor/typedReferences.d.ts +34 -0
  384. package/dist/components/smartEditor/typedReferences.d.ts.map +1 -0
  385. package/dist/components/smartEditor/typedReferences.js +179 -0
  386. package/dist/components/smartEditor/typedReferences.js.map +1 -0
  387. package/dist/components/smartEditor/types.d.ts +116 -2
  388. package/dist/components/smartEditor/types.d.ts.map +1 -1
  389. package/dist/components/smartEditor/useEditingAids.d.ts +38 -0
  390. package/dist/components/smartEditor/useEditingAids.d.ts.map +1 -0
  391. package/dist/components/smartEditor/useEditingAids.js +392 -0
  392. package/dist/components/smartEditor/useEditingAids.js.map +1 -0
  393. package/dist/components/smartEditor/useLspAutocomplete.d.ts +106 -3
  394. package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
  395. package/dist/components/smartEditor/useLspAutocomplete.js +592 -149
  396. package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
  397. package/dist/components/smartEditor/useLspHover.d.ts +33 -7
  398. package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
  399. package/dist/components/smartEditor/useLspHover.js +364 -35
  400. package/dist/components/smartEditor/useLspHover.js.map +1 -1
  401. package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
  402. package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
  403. package/dist/components/smartEditor/useLspSession.d.ts +6 -0
  404. package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
  405. package/dist/components/smartEditor/useLspSession.js +7 -6
  406. package/dist/components/smartEditor/useLspSession.js.map +1 -1
  407. package/dist/components/smartEditor/useLspSignatureHelp.d.ts.map +1 -1
  408. package/dist/components/smartEditor/useLspSignatureHelp.js +6 -11
  409. package/dist/components/smartEditor/useLspSignatureHelp.js.map +1 -1
  410. package/dist/components/smartEditor/useTabCameIn.d.ts +10 -0
  411. package/dist/components/smartEditor/useTabCameIn.d.ts.map +1 -0
  412. package/dist/components/smartEditor/useTabCameIn.js +42 -0
  413. package/dist/components/smartEditor/useTabCameIn.js.map +1 -0
  414. package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -1
  415. package/dist/components/supportTicket/AttachmentChips.js +15 -5
  416. package/dist/components/supportTicket/AttachmentChips.js.map +1 -1
  417. package/dist/components/supportTicket/InterfaceReferenceTags.d.ts +2 -3
  418. package/dist/components/supportTicket/InterfaceReferenceTags.d.ts.map +1 -1
  419. package/dist/components/supportTicket/InterfaceReferenceTags.js.map +1 -1
  420. package/dist/components/supportTicket/ReferencePicker.d.ts +9 -3
  421. package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
  422. package/dist/components/supportTicket/ReferencePicker.js +38 -23
  423. package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
  424. package/dist/components/supportTicket/TicketHeader.d.ts +3 -4
  425. package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
  426. package/dist/components/supportTicket/TicketHeader.js +21 -6
  427. package/dist/components/supportTicket/TicketHeader.js.map +1 -1
  428. package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
  429. package/dist/components/supportTicket/TicketReplyBox.d.ts.map +1 -1
  430. package/dist/components/supportTicket/TicketReplyBox.js +10 -29
  431. package/dist/components/supportTicket/TicketReplyBox.js.map +1 -1
  432. package/dist/components/supportTicket/useLoadedImages.d.ts +0 -10
  433. package/dist/components/supportTicket/useLoadedImages.d.ts.map +1 -1
  434. package/dist/components/supportTicket/useLoadedImages.js +1 -63
  435. package/dist/components/supportTicket/useLoadedImages.js.map +1 -1
  436. package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
  437. package/dist/components/ticketReferences/TicketReferences.js +10 -9
  438. package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
  439. package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
  440. package/dist/components/ticketThread/TicketThread.js +52 -21
  441. package/dist/components/ticketThread/TicketThread.js.map +1 -1
  442. package/dist/helpers/allowedValues.d.ts +21 -12
  443. package/dist/helpers/allowedValues.d.ts.map +1 -1
  444. package/dist/helpers/allowedValues.js +40 -20
  445. package/dist/helpers/allowedValues.js.map +1 -1
  446. package/dist/helpers/descriptionTooltip.d.ts +46 -0
  447. package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
  448. package/dist/helpers/descriptionTooltip.js +76 -0
  449. package/dist/helpers/descriptionTooltip.js.map +1 -0
  450. package/dist/helpers/domProps.d.ts +5 -0
  451. package/dist/helpers/domProps.d.ts.map +1 -0
  452. package/dist/helpers/domProps.js +47 -0
  453. package/dist/helpers/domProps.js.map +1 -0
  454. package/dist/helpers/expressions.d.ts +115 -4
  455. package/dist/helpers/expressions.d.ts.map +1 -1
  456. package/dist/helpers/expressions.js +247 -29
  457. package/dist/helpers/expressions.js.map +1 -1
  458. package/dist/helpers/hoveringPointer.d.ts +26 -0
  459. package/dist/helpers/hoveringPointer.d.ts.map +1 -0
  460. package/dist/helpers/hoveringPointer.js +29 -0
  461. package/dist/helpers/hoveringPointer.js.map +1 -0
  462. package/dist/helpers/markdownText.d.ts +14 -0
  463. package/dist/helpers/markdownText.d.ts.map +1 -0
  464. package/dist/helpers/markdownText.js +160 -0
  465. package/dist/helpers/markdownText.js.map +1 -0
  466. package/dist/helpers/noDescription.d.ts +9 -0
  467. package/dist/helpers/noDescription.d.ts.map +1 -0
  468. package/dist/helpers/noDescription.js +13 -0
  469. package/dist/helpers/noDescription.js.map +1 -0
  470. package/dist/helpers/optionUiTypes.d.ts +2 -2
  471. package/dist/helpers/qorusTypeCatalogue.d.ts +147 -0
  472. package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
  473. package/dist/helpers/qorusTypeCatalogue.js +505 -0
  474. package/dist/helpers/qorusTypeCatalogue.js.map +1 -0
  475. package/dist/helpers/readableColors.d.ts +36 -0
  476. package/dist/helpers/readableColors.d.ts.map +1 -0
  477. package/dist/helpers/readableColors.js +116 -0
  478. package/dist/helpers/readableColors.js.map +1 -0
  479. package/dist/helpers/recordFieldReference.d.ts +15 -0
  480. package/dist/helpers/recordFieldReference.d.ts.map +1 -0
  481. package/dist/helpers/recordFieldReference.js +89 -0
  482. package/dist/helpers/recordFieldReference.js.map +1 -0
  483. package/dist/helpers/singleLineString.d.ts.map +1 -1
  484. package/dist/helpers/singleLineString.js +0 -1
  485. package/dist/helpers/singleLineString.js.map +1 -1
  486. package/dist/helpers/templateCatalogue.d.ts +104 -0
  487. package/dist/helpers/templateCatalogue.d.ts.map +1 -0
  488. package/dist/helpers/templateCatalogue.js +116 -0
  489. package/dist/helpers/templateCatalogue.js.map +1 -0
  490. package/dist/helpers/templateCatalogueContext.d.ts +19 -0
  491. package/dist/helpers/templateCatalogueContext.d.ts.map +1 -0
  492. package/dist/helpers/templateCatalogueContext.js +31 -0
  493. package/dist/helpers/templateCatalogueContext.js.map +1 -0
  494. package/dist/helpers/templateItems.d.ts +2 -2
  495. package/dist/helpers/templateItems.d.ts.map +1 -1
  496. package/dist/helpers/templateItems.js +6 -4
  497. package/dist/helpers/templateItems.js.map +1 -1
  498. package/dist/helpers/templateText.d.ts +1 -0
  499. package/dist/helpers/templateText.d.ts.map +1 -1
  500. package/dist/helpers/templateText.js +7 -3
  501. package/dist/helpers/templateText.js.map +1 -1
  502. package/dist/helpers/templateTree.d.ts +248 -0
  503. package/dist/helpers/templateTree.d.ts.map +1 -0
  504. package/dist/helpers/templateTree.js +892 -0
  505. package/dist/helpers/templateTree.js.map +1 -0
  506. package/dist/helpers/templateType.d.ts +28 -0
  507. package/dist/helpers/templateType.d.ts.map +1 -0
  508. package/dist/helpers/templateType.js +30 -0
  509. package/dist/helpers/templateType.js.map +1 -0
  510. package/dist/helpers/templates.d.ts +86 -16
  511. package/dist/helpers/templates.d.ts.map +1 -1
  512. package/dist/helpers/templates.js +305 -45
  513. package/dist/helpers/templates.js.map +1 -1
  514. package/dist/helpers/validations.d.ts +27 -0
  515. package/dist/helpers/validations.d.ts.map +1 -1
  516. package/dist/helpers/validations.js +169 -39
  517. package/dist/helpers/validations.js.map +1 -1
  518. package/dist/helpers/webLink.d.ts +8 -0
  519. package/dist/helpers/webLink.d.ts.map +1 -0
  520. package/dist/helpers/webLink.js +29 -0
  521. package/dist/helpers/webLink.js.map +1 -0
  522. package/dist/hooks/useQorusTypes.d.ts +12 -17
  523. package/dist/hooks/useQorusTypes.d.ts.map +1 -1
  524. package/dist/hooks/useQorusTypes.js +44 -172
  525. package/dist/hooks/useQorusTypes.js.map +1 -1
  526. package/dist/hooks/useReadableIntentShade.d.ts +9 -0
  527. package/dist/hooks/useReadableIntentShade.d.ts.map +1 -0
  528. package/dist/hooks/useReadableIntentShade.js +23 -0
  529. package/dist/hooks/useReadableIntentShade.js.map +1 -0
  530. package/dist/hooks/useReadableOpacity.d.ts +6 -0
  531. package/dist/hooks/useReadableOpacity.d.ts.map +1 -0
  532. package/dist/hooks/useReadableOpacity.js +17 -0
  533. package/dist/hooks/useReadableOpacity.js.map +1 -0
  534. package/dist/index.d.ts +8 -0
  535. package/dist/index.d.ts.map +1 -1
  536. package/dist/index.js +24 -1
  537. package/dist/index.js.map +1 -1
  538. package/dist/tracking/ui/ExperimentCard.d.ts +1 -1
  539. package/dist/tracking/ui/ExperimentCard.d.ts.map +1 -1
  540. package/dist/tracking/ui/ExperimentCard.js +26 -10
  541. package/dist/tracking/ui/ExperimentCard.js.map +1 -1
  542. package/dist/tracking/ui/card.d.ts +2 -2
  543. package/dist/tracking/ui/card.d.ts.map +1 -1
  544. package/dist/tracking/ui/card.js +2 -2
  545. package/dist/tracking/ui/card.js.map +1 -1
  546. package/dist/tracking/ui/readable.d.ts +14 -0
  547. package/dist/tracking/ui/readable.d.ts.map +1 -0
  548. package/dist/tracking/ui/readable.js +60 -0
  549. package/dist/tracking/ui/readable.js.map +1 -0
  550. package/dist/utils/fetch.d.ts +9 -2
  551. package/dist/utils/fetch.d.ts.map +1 -1
  552. package/dist/utils/fetch.js +6 -5
  553. package/dist/utils/fetch.js.map +1 -1
  554. package/dist/utils/lspClient.types.d.ts +2 -0
  555. package/dist/utils/lspClient.types.d.ts.map +1 -1
  556. package/dist/utils/websocket.d.ts +65 -2
  557. package/dist/utils/websocket.d.ts.map +1 -1
  558. package/dist/utils/websocket.js +276 -44
  559. package/dist/utils/websocket.js.map +1 -1
  560. package/package.json +14 -6
  561. package/.claude/CLAUDE.md +0 -317
  562. package/.tasks/EXPORT_EXPRESSION_BUILDER.md +0 -38
  563. package/.tasks/EXPRESSION_BUILDER_REPORT.md +0 -149
  564. package/.tasks/EXPRESSION_FIELD_SEAMS.md +0 -66
  565. package/.tasks/FIELD_STACK_REPORT.md +0 -234
  566. package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +0 -558
  567. package/.tasks/FORM_ENGINE_EXPRESSIONS.md +0 -197
  568. package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +0 -95
  569. package/.tasks/FORM_FIELD_EXTRAS.md +0 -72
  570. package/.tasks/INDEX.md +0 -111
  571. package/.tasks/LSP_SHARED_CONNECTION.md +0 -75
  572. package/.tasks/QONSOLE_ASSIST_FEATURES.md +0 -306
  573. package/.tasks/RENDER_EXPRESSION_LSP.md +0 -159
  574. package/.tasks/REQRAFT_AUTO_FIELD.md +0 -176
  575. package/.tasks/SCHEMA_DEFINITION_FIELD.md +0 -250
  576. package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +0 -340
  577. package/.tasks/SMART_EDITOR_LSP_FEATURES.md +0 -299
  578. package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +0 -280
  579. package/.tasks/SMART_EDITOR_UX_POLISH.md +0 -383
  580. package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +0 -246
  581. package/.tasks/STORY_NETWORK_ISOLATION.md +0 -98
  582. package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +0 -72
  583. package/CODE_OF_CONDUCT.md +0 -105
  584. package/CONTRIBUTING.MD +0 -78
  585. package/SECURITY.md +0 -3
  586. package/chromatic.config.json +0 -5
  587. package/design/COMPACT_ENGINE_REDESIGN.md +0 -156
  588. package/design/COMPACT_INFO_DISPLAY.md +0 -87
  589. package/design/COMPACT_PARITY.md +0 -85
  590. package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +0 -92
  591. package/design/FORM_ENGINE_COMPACT.md +0 -300
  592. package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +0 -353
  593. package/design/FORM_ENGINE_EXPRESSIONS.md +0 -257
  594. package/design/FORM_ENGINE_FIELD_MIGRATION.md +0 -419
  595. package/design/IDE_INTEGRATION.md +0 -64
  596. package/design/RENDER_EXPRESSION_TRANSPORT.md +0 -156
  597. package/design/SELECT_DIALOG_FLOOR.md +0 -86
  598. package/design/SMART_EDITOR_UX.md +0 -438
  599. package/design/TRACKING.md +0 -290
  600. package/design/UNAVAILABLE_ALLOWED_VALUES.md +0 -226
  601. package/dist/components/form/engine/formAppearance.d.ts +0 -49
  602. package/dist/components/form/engine/formAppearance.d.ts.map +0 -1
  603. package/dist/components/form/engine/formAppearance.js +0 -50
  604. package/dist/components/form/engine/formAppearance.js.map +0 -1
  605. package/dist/components/form/fields/ChoiceGroupHeading.d.ts +0 -21
  606. package/dist/components/form/fields/ChoiceGroupHeading.d.ts.map +0 -1
  607. package/dist/components/form/fields/ChoiceGroupHeading.js +0 -33
  608. package/dist/components/form/fields/ChoiceGroupHeading.js.map +0 -1
  609. package/dist/components/form/fields/allowed-values/savedValues.d.ts +0 -30
  610. package/dist/components/form/fields/allowed-values/savedValues.d.ts.map +0 -1
  611. package/dist/components/form/fields/allowed-values/savedValues.js +0 -39
  612. package/dist/components/form/fields/allowed-values/savedValues.js.map +0 -1
  613. package/dist/helpers/fieldDescription.d.ts +0 -16
  614. package/dist/helpers/fieldDescription.d.ts.map +0 -1
  615. package/dist/helpers/fieldDescription.js +0 -40
  616. package/dist/helpers/fieldDescription.js.map +0 -1
  617. package/src/components/Description/index.tsx +0 -254
  618. package/src/components/Description/markdownRendererContext.tsx +0 -29
  619. package/src/components/FocusedEditing/index.tsx +0 -50
  620. package/src/components/codeSize/index.tsx +0 -79
  621. package/src/components/composer/Composer.stories.tsx +0 -238
  622. package/src/components/composer/Composer.tsx +0 -554
  623. package/src/components/composer/helpers.ts +0 -74
  624. package/src/components/composer/index.ts +0 -2
  625. package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -1183
  626. package/src/components/dpqlEditor/DpqlEditor.tsx +0 -219
  627. package/src/components/dpqlEditor/dpqlHelpers.ts +0 -287
  628. package/src/components/dpqlEditor/dpqlInserter.ts +0 -121
  629. package/src/components/dpqlEditor/dpqlProbe.ts +0 -165
  630. package/src/components/dpqlEditor/dpqlTags.ts +0 -114
  631. package/src/components/dpqlEditor/index.ts +0 -41
  632. package/src/components/dpqlEditor/types.ts +0 -203
  633. package/src/components/dpqlEditor/useDpqlProbe.ts +0 -33
  634. package/src/components/dpqlEditor/useDpqlSession.ts +0 -411
  635. package/src/components/form/engine/CompactRow.tsx +0 -2740
  636. package/src/components/form/engine/CompactToolbar.tsx +0 -399
  637. package/src/components/form/engine/FormEngine.stories.tsx +0 -9934
  638. package/src/components/form/engine/FormEngine.tsx +0 -4891
  639. package/src/components/form/engine/FormEngineAppearance.stories.tsx +0 -609
  640. package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
  641. package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -335
  642. package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
  643. package/src/components/form/engine/OptionFieldMessages.tsx +0 -548
  644. package/src/components/form/engine/OptionsHelpDialog.tsx +0 -29
  645. package/src/components/form/engine/__fixtures__/basicFormOptions.ts +0 -309
  646. package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +0 -45
  647. package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +0 -233
  648. package/src/components/form/engine/_structuredData/SchemaDataView.tsx +0 -755
  649. package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +0 -85
  650. package/src/components/form/engine/_structuredData/StructuredDataView.tsx +0 -75
  651. package/src/components/form/engine/_structuredData/structuredData.ts +0 -145
  652. package/src/components/form/engine/compactRowContext.ts +0 -153
  653. package/src/components/form/engine/compactRowStyles.ts +0 -1087
  654. package/src/components/form/engine/compactToolbarContext.ts +0 -72
  655. package/src/components/form/engine/formAppearance.ts +0 -79
  656. package/src/components/form/engine/optionActions.ts +0 -128
  657. package/src/components/form/engine/optionsContext.ts +0 -24
  658. package/src/components/form/engine/readFirst.ts +0 -1090
  659. package/src/components/form/engine/rendererTypes.ts +0 -107
  660. package/src/components/form/engine/revealRow.ts +0 -123
  661. package/src/components/form/engine/rowFocus.ts +0 -112
  662. package/src/components/form/engine/rowMenuContext.ts +0 -159
  663. package/src/components/form/engine/rowOpenPicker.ts +0 -27
  664. package/src/components/form/engine/typeChoices.ts +0 -63
  665. package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +0 -159
  666. package/src/components/form/engine/variants/VariantCalmTable.tsx +0 -244
  667. package/src/components/form/engine/variants/VariantCards.tsx +0 -212
  668. package/src/components/form/engine/variants/VariantFocus.tsx +0 -382
  669. package/src/components/form/engine/variants/VariantMinimal.tsx +0 -170
  670. package/src/components/form/engine/variants/focusDemo.ts +0 -145
  671. package/src/components/form/engine/variants/variantModel.ts +0 -223
  672. package/src/components/form/engine/variants/variantParts.tsx +0 -313
  673. package/src/components/form/expressions/DpqlRendering.tsx +0 -85
  674. package/src/components/form/expressions/ExpressionField.stories.tsx +0 -1395
  675. package/src/components/form/expressions/ExpressionField.tsx +0 -503
  676. package/src/components/form/expressions/argumentPresence.ts +0 -213
  677. package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +0 -1683
  678. package/src/components/form/expressions/builder/argumentDetail.tsx +0 -17
  679. package/src/components/form/expressions/builder/argumentLabel.tsx +0 -146
  680. package/src/components/form/expressions/builder/argumentSlot.tsx +0 -101
  681. package/src/components/form/expressions/builder/argumentWrapper.tsx +0 -243
  682. package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +0 -120
  683. package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +0 -69
  684. package/src/components/form/expressions/builder/index.tsx +0 -1545
  685. package/src/components/form/expressions/builder/item.tsx +0 -89
  686. package/src/components/form/expressions/builder/moveToPositionStrip.tsx +0 -156
  687. package/src/components/form/expressions/builder/renderTemplate.tsx +0 -42
  688. package/src/components/form/expressions/dpqlMockLanguage.ts +0 -566
  689. package/src/components/form/expressions/dpqlMockLsp.ts +0 -126
  690. package/src/components/form/expressions/mockExpressions.ts +0 -317
  691. package/src/components/form/expressions/renderExpressionToText.ts +0 -152
  692. package/src/components/form/expressions/types.ts +0 -110
  693. package/src/components/form/expressions/useExpressions.ts +0 -101
  694. package/src/components/form/expressions/useRenderExpression.ts +0 -165
  695. package/src/components/form/fields/ChoiceGroupHeading.tsx +0 -38
  696. package/src/components/form/fields/Field.stories.tsx +0 -143
  697. package/src/components/form/fields/Field.tsx +0 -734
  698. package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -321
  699. package/src/components/form/fields/allowed-values/savedValues.ts +0 -64
  700. package/src/components/form/fields/array/ArrayAuto.tsx +0 -237
  701. package/src/components/form/fields/array/ArrayAutoField.stories.tsx +0 -475
  702. package/src/components/form/fields/array/ArrayAutoField.tsx +0 -367
  703. package/src/components/form/fields/auto/AutoFormField.stories.tsx +0 -825
  704. package/src/components/form/fields/auto/AutoFormField.tsx +0 -1183
  705. package/src/components/form/fields/binary/Binary.stories.tsx +0 -122
  706. package/src/components/form/fields/binary/Binary.tsx +0 -91
  707. package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -125
  708. package/src/components/form/fields/boolean/Boolean.tsx +0 -34
  709. package/src/components/form/fields/byte-size/ByteSize.stories.tsx +0 -87
  710. package/src/components/form/fields/byte-size/ByteSize.tsx +0 -58
  711. package/src/components/form/fields/color/Color.stories.tsx +0 -99
  712. package/src/components/form/fields/color/Color.tsx +0 -46
  713. package/src/components/form/fields/cron/Cron.stories.tsx +0 -68
  714. package/src/components/form/fields/cron/Cron.tsx +0 -80
  715. package/src/components/form/fields/date/Date.stories.tsx +0 -77
  716. package/src/components/form/fields/date/Date.tsx +0 -55
  717. package/src/components/form/fields/emittedValues.ts +0 -70
  718. package/src/components/form/fields/file/File.stories.tsx +0 -161
  719. package/src/components/form/fields/file/File.tsx +0 -227
  720. package/src/components/form/fields/long-string/LongString.stories.tsx +0 -147
  721. package/src/components/form/fields/long-string/LongString.tsx +0 -141
  722. package/src/components/form/fields/markdown/Markdown.stories.tsx +0 -76
  723. package/src/components/form/fields/markdown/Markdown.tsx +0 -81
  724. package/src/components/form/fields/markdown/MarkdownView.tsx +0 -222
  725. package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +0 -140
  726. package/src/components/form/fields/number/Number.stories.tsx +0 -159
  727. package/src/components/form/fields/number/Number.tsx +0 -175
  728. package/src/components/form/fields/object/Object.stories.tsx +0 -398
  729. package/src/components/form/fields/object/Object.tsx +0 -255
  730. package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +0 -95
  731. package/src/components/form/fields/radio-group/RadioGroup.tsx +0 -52
  732. package/src/components/form/fields/radio-group/images/java-96x128.png +0 -0
  733. package/src/components/form/fields/radio-group/images/python-129x128.png +0 -0
  734. package/src/components/form/fields/radio-group/images/qore-106x128.png +0 -0
  735. package/src/components/form/fields/rich-text/RichText.stories.tsx +0 -260
  736. package/src/components/form/fields/rich-text/RichText.tsx +0 -537
  737. package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +0 -242
  738. package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +0 -758
  739. package/src/components/form/fields/schema-definition/Hint.tsx +0 -22
  740. package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +0 -138
  741. package/src/components/form/fields/schema-definition/Loader.tsx +0 -20
  742. package/src/components/form/fields/schema-definition/MigrationsTab.tsx +0 -187
  743. package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +0 -286
  744. package/src/components/form/fields/schema-definition/TableEditor.tsx +0 -155
  745. package/src/components/form/fields/schema-definition/TablesTab.tsx +0 -138
  746. package/src/components/form/fields/schema-definition/catalog.ts +0 -237
  747. package/src/components/form/fields/schema-definition/helpers.ts +0 -90
  748. package/src/components/form/fields/schema-definition/index.tsx +0 -418
  749. package/src/components/form/fields/schema-definition/mockCatalog.ts +0 -325
  750. package/src/components/form/fields/schema-definition/mockDefinition.ts +0 -111
  751. package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +0 -152
  752. package/src/components/form/fields/schema-definition/starterTemplate.ts +0 -68
  753. package/src/components/form/fields/schema-definition/types.ts +0 -185
  754. package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +0 -49
  755. package/src/components/form/fields/select/Select.stories.tsx +0 -872
  756. package/src/components/form/fields/select/Select.tsx +0 -624
  757. package/src/components/form/fields/select/SelectCollection.tsx +0 -594
  758. package/src/components/form/fields/string/String.stories.tsx +0 -86
  759. package/src/components/form/fields/string/String.tsx +0 -43
  760. package/src/components/form/fields/template/ExampleValueModal.stories.tsx +0 -114
  761. package/src/components/form/fields/template/ExampleValueModal.tsx +0 -99
  762. package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +0 -47
  763. package/src/components/form/fields/template/TemplateField.stories.tsx +0 -1121
  764. package/src/components/form/fields/template/TemplateField.tsx +0 -1749
  765. package/src/components/form/fields/template/TemplateText.tsx +0 -115
  766. package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +0 -7
  767. package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +0 -147
  768. package/src/components/form/fields/template/__fixtures__/templates.json +0 -83
  769. package/src/components/form/fields/timeout/Timeout.stories.tsx +0 -228
  770. package/src/components/form/fields/timeout/Timeout.tsx +0 -87
  771. package/src/components/form/fields/url/Url.stories.tsx +0 -94
  772. package/src/components/form/fields/url/Url.tsx +0 -85
  773. package/src/components/form/index.tsx +0 -49
  774. package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
  775. package/src/components/imageLightbox/ImageLightbox.tsx +0 -238
  776. package/src/components/imageLightbox/index.ts +0 -1
  777. package/src/components/log/Log.stories.tsx +0 -333
  778. package/src/components/log/Log.tsx +0 -285
  779. package/src/components/menu/Menu.stories.tsx +0 -155
  780. package/src/components/menu/Menu.tsx +0 -312
  781. package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +0 -797
  782. package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +0 -105
  783. package/src/components/qonsoleSmartInput/index.ts +0 -16
  784. package/src/components/qonsoleSmartInput/qonsoleInserter.ts +0 -77
  785. package/src/components/qonsoleSmartInput/types.ts +0 -133
  786. package/src/components/qonsoleSmartInput/useQonsoleSession.ts +0 -124
  787. package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +0 -62
  788. package/src/components/searchFilterBar/SearchFilterBar.tsx +0 -144
  789. package/src/components/searchFilterBar/index.ts +0 -1
  790. package/src/components/smartEditor/MarkdownDoc.tsx +0 -190
  791. package/src/components/smartEditor/SmartEditor.stories.tsx +0 -475
  792. package/src/components/smartEditor/SmartEditor.tsx +0 -808
  793. package/src/components/smartEditor/__fixtures__/mockLspServer.ts +0 -205
  794. package/src/components/smartEditor/helpers.ts +0 -217
  795. package/src/components/smartEditor/index.ts +0 -35
  796. package/src/components/smartEditor/styling.ts +0 -45
  797. package/src/components/smartEditor/types.ts +0 -211
  798. package/src/components/smartEditor/useLspAutocomplete.ts +0 -758
  799. package/src/components/smartEditor/useLspDiagnosticDecorations.ts +0 -125
  800. package/src/components/smartEditor/useLspHover.ts +0 -230
  801. package/src/components/smartEditor/useLspSemanticTokens.ts +0 -298
  802. package/src/components/smartEditor/useLspSession.ts +0 -231
  803. package/src/components/smartEditor/useLspSignatureHelp.ts +0 -198
  804. package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -171
  805. package/src/components/supportTicket/AttachmentChips.tsx +0 -147
  806. package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -257
  807. package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -130
  808. package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -580
  809. package/src/components/supportTicket/ReferencePicker.tsx +0 -573
  810. package/src/components/supportTicket/TicketConversation.stories.tsx +0 -120
  811. package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
  812. package/src/components/supportTicket/TicketHeader.tsx +0 -248
  813. package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
  814. package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
  815. package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -357
  816. package/src/components/supportTicket/TicketReplyBox.tsx +0 -172
  817. package/src/components/supportTicket/__fixtures__/kindMarks.ts +0 -28
  818. package/src/components/supportTicket/attachmentAccess.ts +0 -97
  819. package/src/components/supportTicket/fileToAttachment.ts +0 -24
  820. package/src/components/supportTicket/index.ts +0 -10
  821. package/src/components/supportTicket/meta.ts +0 -206
  822. package/src/components/supportTicket/ticketModel.ts +0 -131
  823. package/src/components/supportTicket/useLoadedImages.ts +0 -93
  824. package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -341
  825. package/src/components/ticketReferences/TicketReferences.tsx +0 -914
  826. package/src/components/ticketReferences/index.ts +0 -2
  827. package/src/components/ticketThread/TicketThread.stories.tsx +0 -898
  828. package/src/components/ticketThread/TicketThread.tsx +0 -706
  829. package/src/components/ticketThread/index.ts +0 -6
  830. package/src/contexts/FetchContext.tsx +0 -25
  831. package/src/contexts/ReqraftContext.tsx +0 -9
  832. package/src/contexts/StorageContext.tsx +0 -33
  833. package/src/global.d.ts +0 -4
  834. package/src/helpers/allowedValues.ts +0 -268
  835. package/src/helpers/choiceChip.ts +0 -227
  836. package/src/helpers/common.ts +0 -326
  837. package/src/helpers/dpqlDetection.ts +0 -209
  838. package/src/helpers/expressions.ts +0 -140
  839. package/src/helpers/fieldDescription.ts +0 -39
  840. package/src/helpers/optionUiTypes.ts +0 -199
  841. package/src/helpers/options.ts +0 -150
  842. package/src/helpers/providerValue.ts +0 -125
  843. package/src/helpers/scrollbar.ts +0 -32
  844. package/src/helpers/singleLineString.ts +0 -62
  845. package/src/helpers/templateItems.ts +0 -81
  846. package/src/helpers/templateText.ts +0 -350
  847. package/src/helpers/templates.ts +0 -602
  848. package/src/helpers/validations.ts +0 -2085
  849. package/src/hooks/useArgSchema.ts +0 -37
  850. package/src/hooks/useCoarsePointer.ts +0 -30
  851. package/src/hooks/useFetch/useFetch.stories.tsx +0 -379
  852. package/src/hooks/useFetch/useFetch.tsx +0 -154
  853. package/src/hooks/usePhoneViewport.ts +0 -34
  854. package/src/hooks/useQorusTypes.ts +0 -233
  855. package/src/hooks/useReqraftProperty.ts +0 -16
  856. package/src/hooks/useStorage/useStorage.stories.tsx +0 -168
  857. package/src/hooks/useStorage/useStorage.ts +0 -35
  858. package/src/hooks/useTemplates.ts +0 -123
  859. package/src/hooks/useValidation.ts +0 -9
  860. package/src/hooks/useWebSocket/useWebSocket.ts +0 -224
  861. package/src/hooks/useWebSocket/useWebsocket.stories.tsx +0 -640
  862. package/src/hooks/useWhyDidYouUpdate.ts +0 -38
  863. package/src/index.tsx +0 -86
  864. package/src/providers/FetchProvider.tsx +0 -40
  865. package/src/providers/ReqraftProvider.tsx +0 -52
  866. package/src/providers/StorageProvider.tsx +0 -131
  867. package/src/stores/currentUser/currentUser.stories.tsx +0 -100
  868. package/src/stores/currentUser/currentUser.tsx +0 -94
  869. package/src/stories/Data/fileFieldArgSchema.json +0 -86
  870. package/src/stories/Tests/utils.ts +0 -320
  871. package/src/stories/storyNetwork.ts +0 -92
  872. package/src/stories/tracking.tsx +0 -206
  873. package/src/tracking/browser/attach.ts +0 -186
  874. package/src/tracking/browser/env.ts +0 -78
  875. package/src/tracking/core/consent.ts +0 -37
  876. package/src/tracking/core/engagement.ts +0 -47
  877. package/src/tracking/core/experiments.ts +0 -258
  878. package/src/tracking/core/hash.ts +0 -26
  879. package/src/tracking/core/ids.ts +0 -25
  880. package/src/tracking/core/observable.ts +0 -23
  881. package/src/tracking/core/queue.ts +0 -131
  882. package/src/tracking/core/sections.ts +0 -166
  883. package/src/tracking/core/storage.ts +0 -69
  884. package/src/tracking/core/tracker.ts +0 -417
  885. package/src/tracking/core/types.ts +0 -162
  886. package/src/tracking/core/utm.ts +0 -23
  887. package/src/tracking/index.ts +0 -72
  888. package/src/tracking/markup.ts +0 -17
  889. package/src/tracking/react/Experiment.tsx +0 -44
  890. package/src/tracking/react/TrackingProvider.tsx +0 -56
  891. package/src/tracking/react/hooks.ts +0 -106
  892. package/src/tracking/react/index.ts +0 -13
  893. package/src/tracking/testing.ts +0 -108
  894. package/src/tracking/ui/ExperimentCard.stories.tsx +0 -296
  895. package/src/tracking/ui/ExperimentCard.tsx +0 -667
  896. package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -155
  897. package/src/tracking/ui/ExperimentsOverlay.tsx +0 -437
  898. package/src/tracking/ui/anchor.ts +0 -180
  899. package/src/tracking/ui/card.ts +0 -464
  900. package/src/tracking/ui/client.ts +0 -117
  901. package/src/tracking/ui/index.ts +0 -77
  902. package/src/tracking/ui/types.ts +0 -110
  903. package/src/tracking/ui/useExperimentsAdmin.ts +0 -103
  904. package/src/types/Form.ts +0 -29
  905. package/src/types.ts +0 -14
  906. package/src/utils/datetime.ts +0 -10
  907. package/src/utils/fetch.ts +0 -457
  908. package/src/utils/lspClient.ts +0 -711
  909. package/src/utils/lspClient.types.ts +0 -211
  910. package/src/utils/queryUnlessCancelled.ts +0 -28
  911. package/src/utils/websocket.ts +0 -293
  912. package/vite.config.ts +0 -58
  913. package/vitest.config.ts +0 -69
@@ -1,1545 +0,0 @@
1
- import {
2
- ReqoreControlGroup,
3
- ReqoreErrorBoundary,
4
- ReqoreMessage,
5
- ReqoreP,
6
- ReqorePanel,
7
- ReqorePanelSkeleton,
8
- ReqoreSpinner,
9
- ReqoreTag,
10
- ReqoreVerticalSpacer,
11
- useReqoreTheme,
12
- } from '@qoretechnologies/reqore';
13
- import {
14
- TReqoreEffectColor,
15
- TReqoreHexColor,
16
- } from '@qoretechnologies/reqore/dist/components/Effect';
17
- import { IReqorePanelAction } from '@qoretechnologies/reqore/dist/components/Panel';
18
- import { IReqoreMenuItemProps } from '@qoretechnologies/reqore/dist/components/Menu/item';
19
- import { IReqoreIconName } from '@qoretechnologies/reqore/dist/types/icons';
20
- import { IReqoreFormTemplates } from '@qoretechnologies/reqore/dist/components/Textarea';
21
- import { TQorusType } from '@qoretechnologies/ts-toolkit';
22
- import { clone, cloneDeep, get, isArray, set, size, unset } from 'lodash';
23
- import { darken, rgba } from 'polished';
24
- import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
25
- import styled from 'styled-components';
26
- import { moveItem } from '../../../../helpers/common';
27
- import {
28
- areQorusTypesCompatible,
29
- expressionFitsReturnType,
30
- getArgumentType,
31
- isConditionType,
32
- isTextOrDateType,
33
- } from '../../../../helpers/expressions';
34
- import { addMissingExpressionArgs } from '../argumentPresence';
35
- import { findTemplate } from '../../../../helpers/templates';
36
- import { validateField, validateFieldWithResult } from '../../../../helpers/validations';
37
- import { IQorusTypeObject, useQorusTypes } from '../../../../hooks/useQorusTypes';
38
- import { useReqraftStorage } from '../../../../hooks/useStorage/useStorage';
39
- import { usePhoneViewport } from '../../../../hooks/usePhoneViewport';
40
- import { useCoarsePointer } from '../../../../hooks/useCoarsePointer';
41
- import { useTemplates } from '../../../../hooks/useTemplates';
42
- import { AutoFormField as auto } from '../../fields/auto/AutoFormField';
43
- import { SelectFormField as Select } from '../../fields/select/Select';
44
- import {
45
- ITemplateMenuActions,
46
- TCustomTemplateItems,
47
- TemplateField,
48
- } from '../../fields/template/TemplateField';
49
- import {
50
- ExpressionDefaultValue,
51
- IExpression,
52
- IExpressionSchema,
53
- IExpressionSchemaArg,
54
- TExpressionReorder,
55
- TExpressionReorderSurface,
56
- } from '../types';
57
- import { useExpressions } from '../useExpressions';
58
- import { ExpressionArgumentDetail } from './argumentDetail';
59
- import { ExpressionBuilderAddArgumentSlot } from './argumentSlot';
60
- import { ExpressionBuilderArgumentWrapper } from './argumentWrapper';
61
- import { ConfirmMismatchedTypesModal } from './confirmMismatchedTypesModal';
62
- import { ConfirmUnsupportedTypeModal } from './confirmUnsupportedTypeModal';
63
- import { ExpressionItem } from './item';
64
- import { ExpressionMoveToPositionStrip } from './moveToPositionStrip';
65
- import { ExpressionRenderTemplate } from './renderTemplate';
66
-
67
- const noopUseRegisterHintView = (...args: unknown[]): void => {
68
- void args;
69
- };
70
-
71
- export interface IExpressionBuilderProps {
72
- localTemplates?: IReqoreFormTemplates;
73
- value?: IExpression;
74
- isChild?: boolean;
75
- level?: number;
76
- type?: string;
77
- path?: string;
78
- index?: number;
79
- returnType?: TQorusType | TQorusType[];
80
- group?: '&&' | '||';
81
- onChange?: (value: IExpression, remove?: boolean) => void;
82
- onValueChange?: (value: IExpression, path: string, remove?: boolean) => void;
83
- /** Operand reordering for varargs expressions — see `TExpressionReorder`. Default `true`. */
84
- reorder?: TExpressionReorder;
85
- readOnly?: boolean;
86
- id?: string;
87
- expressions?: IExpressionSchema[];
88
- expressionsUrl?: string;
89
- serverHandled?: boolean;
90
- /**
91
- * SEAM (reqraft): the host's per-`ui_type` editors, forwarded to the operand
92
- * fields below.
93
- *
94
- * Without them an operand whose type is one of the CONSUMER's own ui_types
95
- * falls through `AutoFormField`'s switch to the literal "Unknown type!" tag.
96
- * That is what an assertion's `Value` did the moment it was turned into an
97
- * expression: the field is `test-reference`, an IDE ui_type whose editor the
98
- * IDE registers through `componentOverrides`, and the builder rendered its
99
- * operands without them.
100
- */
101
- componentOverrides?: Record<string, React.FC<any>>;
102
- size?: string;
103
- /**
104
- * SEAM (reqraft): extra hover actions prepended to each expression card —
105
- * where the IDE renders its `AiAssistanceAction` (AI-assist button). The
106
- * button itself depends on IDE-only AI infrastructure, so reqraft exposes
107
- * the slot and the consumer (the IDE) injects it.
108
- *
109
- * Pass a factory to get the per-card context the IDE's AI button needs
110
- * (`selectedExpression` — the catalogue schema of the function chosen in
111
- * that card — and the card's `value`), mirroring how the IDE builds
112
- * `AiAssistanceAction({ context: selectedExpression, ... })` inline.
113
- */
114
- extraActions?:
115
- | IReqorePanelAction[]
116
- | ((context: {
117
- selectedExpression?: IExpressionSchema;
118
- value?: IExpression;
119
- }) => IReqorePanelAction[]);
120
- }
121
-
122
- const StyledExpressionItemLabel = styled.div`
123
- position: absolute;
124
- text-orientation: upright;
125
- writing-mode: vertical-rl;
126
- top: calc(50%);
127
- transform: translateY(-50%);
128
- white-space: nowrap;
129
- height: calc(100% - 24px);
130
- // Centered flex
131
- display: flex;
132
- align-items: center;
133
- justify-content: center;
134
- border-right: 1px solid ${() => rgba('#fff', 0.3)};
135
- `;
136
-
137
- export interface IExpressionProps extends IExpressionBuilderProps {}
138
-
139
- export const Expression = ({
140
- localTemplates,
141
- value = ExpressionDefaultValue,
142
- isChild,
143
- index,
144
- type,
145
- level,
146
- path,
147
- onValueChange,
148
- group,
149
- returnType,
150
- readOnly,
151
- id,
152
- expressionsUrl,
153
- serverHandled,
154
- extraActions,
155
- componentOverrides,
156
- ...props
157
- }: IExpressionProps) => {
158
- const coarsePointer = useCoarsePointer();
159
- const types = useQorusTypes();
160
- const [showSummary, setShowSummary] = useState(false);
161
- const [confirmDialogData, setConfirmDialogData] = useState<
162
- | {
163
- isOpen: boolean;
164
- acceptedTypes: string[];
165
- children?: React.ReactNode;
166
- onConfirm: () => void;
167
- onCancel?: () => void;
168
- confirmText?: string;
169
- cancelText?: string;
170
- }
171
- | undefined
172
- >(undefined);
173
- const [doNotShowTypeConfirmation] = useReqraftStorage<boolean>(
174
- 'doNotShowTypeExpressionConfirmation',
175
- false,
176
- true
177
- );
178
-
179
- const [firstArgument, ...rest] = value.value?.args || [];
180
-
181
- const _expressions = useExpressions({
182
- allow: true,
183
- expressionsUrl,
184
- // SEAM (reqraft): the catalogue is provided whole (by ExpressionField /
185
- // stories), so it overrides the fetch rather than merging as "extras".
186
- // When undefined, useExpressions fetches the live catalogue.
187
- override: props.expressions,
188
- });
189
- const expressions = useMemo(
190
- () => ({
191
- ..._expressions,
192
- value: _expressions.expressions || [],
193
- }),
194
- [_expressions]
195
- );
196
-
197
- const selectedExpression = useMemo(
198
- () => expressions.value?.find((exp) => exp.name === value.value?.exp),
199
- [JSON.stringify(value), JSON.stringify(expressions.value)]
200
- );
201
-
202
- // SEAM (reqraft): resolve the consumer-injected hover actions. A factory
203
- // gets this card's context — exactly what the IDE's `AiAssistanceAction`
204
- // captured when it was built inline here.
205
- const resolvedExtraActions = useMemo<IReqorePanelAction[]>(
206
- () =>
207
- typeof extraActions === 'function'
208
- ? extraActions({ selectedExpression, value })
209
- : (extraActions ?? []),
210
- [extraActions, selectedExpression, JSON.stringify(value)]
211
- );
212
-
213
- // If the `return_type_first_arg` is set, we need to get the return type from the first arguments type
214
- const expressionReturnType = useMemo(() => {
215
- if (selectedExpression?.return_type_first_arg && firstArgument) {
216
- if (firstArgument.is_expression && firstArgument.value?.exp) {
217
- const firstArgExpression = expressions.value?.find(
218
- (exp) => exp.name === firstArgument.value.exp
219
- );
220
-
221
- return firstArgExpression?.ui_return_type;
222
- }
223
-
224
- return firstArgument.type;
225
- }
226
-
227
- return selectedExpression?.ui_return_type;
228
- }, [
229
- JSON.stringify(selectedExpression),
230
- JSON.stringify(firstArgument),
231
- returnType,
232
- JSON.stringify(expressions.value),
233
- ]);
234
- const expectedReturnTypeText = isArray(returnType)
235
- ? returnType.map(types.getTypeDisplayName).join(' or ')
236
- : types.getTypeDisplayName(returnType);
237
-
238
- // Server Handler expressions is either defined by the option
239
- // then it's always the first level
240
- // Or if the first argument is a field (data_role: 'record') or the first selected expression is
241
- // a server expression
242
- const isFirstArgumentField =
243
- findTemplate(localTemplates, firstArgument?.value)?.metadata?.dataRole === 'record';
244
- const isExpressionServerHandled =
245
- selectedExpression?.from_server ||
246
- (selectedExpression?.from_both && isFirstArgumentField) ||
247
- (level === 0 && serverHandled);
248
- const serverExpression = isFirstArgumentField || isExpressionServerHandled;
249
- const qorusExpression = selectedExpression && !serverExpression;
250
- const serverAndQorusExpression = selectedExpression?.from_both;
251
-
252
- const updateType = useCallback(
253
- (val: string, conformsCurrentType?: boolean) => {
254
- if (conformsCurrentType) {
255
- onValueChange(
256
- {
257
- ...value,
258
- value: {
259
- ...value.value,
260
- args: [
261
- {
262
- ...value.value.args[0],
263
- type: val,
264
- },
265
- ...value.value.args.slice(1),
266
- ],
267
- },
268
- },
269
- path
270
- );
271
-
272
- return;
273
- }
274
-
275
- onValueChange(
276
- {
277
- value: {
278
- args: [
279
- {
280
- type: val,
281
- },
282
- ],
283
- },
284
- },
285
- path
286
- );
287
- },
288
- [onValueChange, JSON.stringify(value), path]
289
- );
290
-
291
- const addMissingArgs = useCallback(
292
- (expression: string, args: IExpression[] = []): IExpression[] =>
293
- addMissingExpressionArgs(expressions.value as never, expression, args as never) as never,
294
- [JSON.stringify(expressions.value)]
295
- );
296
-
297
- const updateExp = useCallback(
298
- (val: string) => {
299
- // We need to get the new expression data and its arguments to see if we need to reset any of the arguments
300
- const newExpression = expressions.value?.find((exp) => exp.name === val);
301
- const newArgs = [];
302
-
303
- newExpression.args.forEach((arg, index) => {
304
- const argumentType = getArgumentType(expressions.value, value.value?.args[index], arg);
305
-
306
- if (argumentType) {
307
- // We need to check if the first argument type conforms to the new expression first argument type
308
- // 1) If it matches directly (matches `ui_type` on the argument), we are good
309
- // 2) If it matches inside `types_accepted` of the server type (ui_type of the arg),
310
- // we are also good, but we need to let the user know that transformation may occur
311
- // 3) If the type does not match, we need to reset the first argument type and value
312
- const exactMatch = types.getExactMatches(arg.ui_type);
313
- const acceptedTypes = types.getAcceptedTypes(arg.ui_type);
314
-
315
- // If the types match exactly
316
- if (exactMatch.includes(argumentType) || exactMatch.includes('any')) {
317
- // All good, do nothing
318
- newArgs.push(value.value.args[index]);
319
- } else if (acceptedTypes.includes(argumentType) || acceptedTypes.includes('any')) {
320
- // If the types is accepted but not exact, we need to show a confirmation dialog, but we will still
321
- // add the argument and then later in the confirmation we will decide to keep it or not
322
- newArgs.push({
323
- ...value.value.args[index],
324
- types_mismatch: true,
325
- });
326
- } else {
327
- // Type does not conform, we need to reset the argument
328
- newArgs.push({});
329
- }
330
- } else {
331
- // If there is no type set, we can just add the argument as is
332
- newArgs.push(value.value.args[index]);
333
- }
334
- });
335
-
336
- onValueChange(
337
- {
338
- ...value,
339
- value: {
340
- ...value.value,
341
- exp: val,
342
- args: addMissingArgs(val, newArgs),
343
- },
344
- },
345
- path
346
- );
347
- },
348
- [addMissingArgs, onValueChange, JSON.stringify(value), path, types.value]
349
- );
350
-
351
- const wrapExpression = useCallback(
352
- (expression: string) => {
353
- onValueChange(
354
- {
355
- value: {
356
- exp: expression,
357
- args: addMissingArgs(expression, [value]),
358
- },
359
- is_expression: true,
360
- },
361
- path
362
- );
363
- },
364
- [onValueChange, JSON.stringify(value), path, addMissingArgs]
365
- );
366
-
367
- const unwrapExpression = useCallback(() => {
368
- onValueChange(value.value.args[0], path);
369
- }, [onValueChange, JSON.stringify(value), path]);
370
-
371
- const updateExpToAndOr = useCallback(
372
- (val: '&&' | '||') => {
373
- onValueChange(
374
- {
375
- value: {
376
- exp: val,
377
- args: [value, ExpressionDefaultValue],
378
- },
379
- is_expression: true,
380
- },
381
- path
382
- );
383
- },
384
- [onValueChange, JSON.stringify(value), path]
385
- );
386
-
387
- const removeVarArg = useCallback(
388
- (index: number) => {
389
- // Every operand after the removed one moves up a slot; remount the
390
- // fields for the same reason `moveVarArg` does.
391
- setArgsGeneration((generation) => generation + 1);
392
- const args = value.value.args.filter((_, i) => i !== index);
393
-
394
- onValueChange(
395
- {
396
- ...value,
397
- value: {
398
- ...value.value,
399
- args,
400
- },
401
- },
402
- path
403
- );
404
- },
405
- [onValueChange, JSON.stringify(value), path]
406
- );
407
-
408
- const reorderSurfaces = useMemo((): TExpressionReorderSurface[] => {
409
- const reorder = props.reorder ?? true;
410
-
411
- if (reorder === false) {
412
- return [];
413
- }
414
-
415
- return reorder === true ? ['dragHandle', 'overflowMenu'] : reorder;
416
- }, [props.reorder]);
417
- // Bumped on every move and folded into the operand keys: the operands are
418
- // keyed by slot, and a slot's TemplateField keeps template / text-mode
419
- // state that only resyncs one way — remounting hands every slot a field
420
- // seeded from the operand that now lives there.
421
- const [argsGeneration, setArgsGeneration] = useState(0);
422
- const dragArg = useRef<number | null>(null);
423
- const [dragOverArg, setDragOverArg] = useState<number | null>(null);
424
-
425
- const moveVarArg = useCallback(
426
- (from: number, to: number) => {
427
- setArgsGeneration((generation) => generation + 1);
428
- onValueChange(
429
- {
430
- ...value,
431
- value: {
432
- ...value.value,
433
- args: moveItem(value.value.args, from, to),
434
- },
435
- },
436
- path
437
- );
438
- },
439
- [onValueChange, JSON.stringify(value), path]
440
- );
441
-
442
- const handleArgDragStart = useCallback((index: number) => {
443
- dragArg.current = index;
444
- }, []);
445
- const handleArgDragOver = useCallback((index: number) => {
446
- setDragOverArg((current) => (current === index ? current : index));
447
- }, []);
448
- const handleArgDragEnd = useCallback(() => {
449
- dragArg.current = null;
450
- setDragOverArg(null);
451
- }, []);
452
- const handleArgDrop = useCallback(
453
- (index: number) => {
454
- const from = dragArg.current;
455
-
456
- if (from !== null && from !== index) {
457
- moveVarArg(from, index);
458
- }
459
-
460
- handleArgDragEnd();
461
- },
462
- [moveVarArg, handleArgDragEnd]
463
- );
464
-
465
- const updateMultipleArgs = useCallback(
466
- (args: IExpression[]) => {
467
- onValueChange(
468
- {
469
- ...value,
470
- value: {
471
- ...value.value,
472
- args: addMissingArgs(value.value.exp, args),
473
- },
474
- },
475
- path
476
- );
477
- },
478
- [onValueChange, JSON.stringify(value), path, addMissingArgs]
479
- );
480
-
481
- const updateArg = useCallback(
482
- (val: any, index: number = 0, type?: string, isFunction?: boolean) => {
483
- const args = clone(value.value.args);
484
- const newVal = clone(val);
485
-
486
- if (newVal?.exp) {
487
- newVal.args = addMissingArgs(newVal.exp, newVal.args);
488
- }
489
-
490
- /* `required` is NOT written here. It is a schema key — it describes the
491
- catalogue's declaration of the argument, not the author's value, and
492
- nothing reads it back off a stored argument (validation takes it from
493
- the schema). Persisting it made a cleared argument indistinguishable
494
- from real data: the value dropped out as `undefined`, `required: true`
495
- stayed, and what was saved to the draft was `{type, required}` — an
496
- argument DEFINITION sitting where its value should be. */
497
- args[index] = {
498
- ...args[index],
499
- value: newVal,
500
- type: !isFunction ? type || args[index]?.type : undefined,
501
- is_expression: isFunction,
502
- };
503
-
504
- onValueChange(
505
- {
506
- ...value,
507
- value: {
508
- ...value.value,
509
- args,
510
- },
511
- },
512
- path
513
- );
514
- },
515
- [addMissingArgs, onValueChange, JSON.stringify(value), path]
516
- );
517
-
518
- const handleRemoveClick = useCallback(() => {
519
- onValueChange?.(undefined, path, true);
520
- }, [onValueChange, path]);
521
-
522
- const firstArgSchema = selectedExpression?.args[0];
523
- const firstParamType = firstArgument?.is_expression
524
- ? firstArgSchema?.ui_type
525
- : firstArgument?.type || type || 'context';
526
- let restOfArgs = selectedExpression?.args.slice(1);
527
- const argCount = size(value.value?.args);
528
- const canReorderArgs =
529
- !!selectedExpression?.varargs && argCount > 1 && !readOnly && size(reorderSurfaces) > 0;
530
- const argReorderSurfaces = canReorderArgs ? reorderSurfaces : undefined;
531
- const isDragOverArg = (index: number) =>
532
- dragOverArg === index && dragArg.current !== null && dragArg.current !== index;
533
-
534
- // The `⋮` menu's "Move Argument" section, one per operand. The wording is
535
- // axis-free on purpose — the operands wrap into a column on narrow screens.
536
- const argMenuActions = useMemo((): ITemplateMenuActions[] | undefined => {
537
- if (!canReorderArgs || !reorderSurfaces.includes('overflowMenu')) {
538
- return undefined;
539
- }
540
-
541
- const moves: [string, string, IReqoreIconName, (index: number) => number][] = [
542
- ['before', 'Move before', 'ArrowGoBackLine', (index) => index - 1],
543
- ['after', 'Move after', 'ArrowGoForwardLine', (index) => index + 1],
544
- ['start', 'Move to start', 'SkipBackLine', () => 0],
545
- ['end', 'Move to end', 'SkipForwardLine', () => argCount - 1],
546
- ];
547
-
548
- return Array.from({ length: argCount }, (_, index) => ({
549
- label: 'Move Argument',
550
- icon: 'ArrowLeftRightLine',
551
- items: [
552
- ...moves.map(([key, label, icon, target]) => {
553
- const to = target(index);
554
-
555
- return {
556
- label,
557
- icon,
558
- className: `expression-arg-move-${key}`,
559
- disabled: to === index || to < 0 || to >= argCount,
560
- onClick: () => moveVarArg(index, to),
561
- };
562
- }),
563
- // Any position in one pick — what a ten-part concat needs.
564
- {
565
- isCustom: true as const,
566
- content: (closePopover) => (
567
- <ExpressionMoveToPositionStrip
568
- index={index}
569
- count={argCount}
570
- onMoveTo={(to) => {
571
- moveVarArg(index, to);
572
- closePopover?.();
573
- }}
574
- />
575
- ),
576
- },
577
- ],
578
- }));
579
- }, [canReorderArgs, reorderSurfaces, argCount, moveVarArg]);
580
-
581
- if (selectedExpression?.varargs) {
582
- restOfArgs = [
583
- ...restOfArgs,
584
- ...rest.map(() => ({
585
- ...selectedExpression.args[0],
586
- })),
587
- ];
588
- }
589
-
590
- const isReturnTypeMatching =
591
- expressionReturnType === 'any' ||
592
- (isArray(returnType)
593
- ? areQorusTypesCompatible(returnType, expressionReturnType)
594
- : returnType === 'auto' ||
595
- returnType === 'any' ||
596
- returnType === 'context' ||
597
- expressionReturnType === 'any' ||
598
- areQorusTypesCompatible(returnType, expressionReturnType) ||
599
- returnType === expressionReturnType ||
600
- !returnType) ||
601
- // a condition is decided by any result but text, a date or a time
602
- (isConditionType(returnType as string | string[] | undefined) &&
603
- !!expressionReturnType &&
604
- !isTextOrDateType(expressionReturnType));
605
-
606
- const defaultItems = useMemo(
607
- () =>
608
- expressions.value
609
- // a condition (a field or an operand that must be true or false) offers the operations whose
610
- // result decides it - any but text, a date or a time, which are compared explicitly; a group's members
611
- // are its own business, and the operation already chosen
612
- // stays, so a stored mismatch can be seen and fixed
613
- .filter(
614
- (exp) =>
615
- isChild ||
616
- exp.name === value?.value?.exp ||
617
- expressionFitsReturnType(returnType as string | string[] | undefined, exp)
618
- )
619
- .map((exp) => ({
620
- name: exp.name,
621
- value: exp.name,
622
- display_name: exp.display_name,
623
- short_desc: exp.short_desc,
624
- desc: exp.desc,
625
- badge: exp.symbol,
626
- from_server: exp.from_server,
627
- from_both: exp.from_both,
628
- groups: exp.groups,
629
- }))
630
- .filter((exp) =>
631
- serverExpression
632
- ? exp.from_server || exp.from_both
633
- : firstArgument?.value && !isFirstArgumentField
634
- ? !exp.from_server
635
- : true
636
- ),
637
- [JSON.stringify(expressions.value), serverExpression, level, isChild, returnType, value?.value?.exp]
638
- );
639
-
640
- // SEAM (reqraft): reqraft's `SelectFormField` calls `onChange(value)` with
641
- // the value directly (the IDE's Select used `(name, value)`).
642
- const handleOperatorChange = useCallback(
643
- (value: unknown) => {
644
- updateExp(value as string);
645
- },
646
- [updateExp]
647
- );
648
-
649
- // The panel whose slot was clicked, kept until the operand it adds has
650
- // rendered: the new field then takes focus, so adding a value and typing
651
- // it is one gesture. The slot sits inside this builder's own panel, and a
652
- // nested builder's operands come before it in DOM order, so the last
653
- // operand of the panel is the one just added.
654
- const focusNewArgIn = useRef<HTMLElement | null>(null);
655
-
656
- const handleAddArgumentClick = useCallback(
657
- (event?: React.MouseEvent<HTMLElement>) => {
658
- focusNewArgIn.current = event?.currentTarget?.closest<HTMLElement>('.expression') ?? null;
659
- updateArg(undefined, size(value.value.args), undefined, false);
660
- },
661
- [updateArg, JSON.stringify(value)]
662
- );
663
-
664
- useEffect(() => {
665
- const panel = focusNewArgIn.current;
666
-
667
- if (!panel) {
668
- return;
669
- }
670
-
671
- focusNewArgIn.current = null;
672
- const operands = panel.querySelectorAll<HTMLElement>('.expression-arg');
673
- const added = operands[operands.length - 1];
674
-
675
- if (!added) {
676
- return;
677
- }
678
-
679
- // A typed operand mounts a text field; an untyped one opens on its
680
- // template picker, whose trigger is the field's first button that is not
681
- // one of the operand's own controls (grip, position, ⋮, remove).
682
- const field =
683
- added.querySelector<HTMLElement>('textarea, input') ??
684
- Array.from(added.querySelectorAll<HTMLElement>('button')).find(
685
- (button) =>
686
- !button.closest(
687
- '.expression-arg-drag-handle, .expression-arg-position, .template-more, .expression-remove-arg'
688
- )
689
- );
690
-
691
- field?.focus();
692
- }, [argCount]);
693
-
694
- const canAddArg = !!selectedExpression?.varargs && !readOnly;
695
-
696
- // On a phone the operand row has no room for a remove button beside the
697
- // field, the grip and the `⋮`; it wrapped onto a line of its own. The
698
- // operand already has an always-visible menu, so the action goes there,
699
- // as the last row. Same media query as the slot, for the same reason.
700
- const phone = usePhoneViewport();
701
- // Any operand can go, the first included (the next one becomes first),
702
- // down to the catalogue's minimum — one for most, so the last operand
703
- // left is the one that cannot be removed.
704
- const canRemoveArgs =
705
- !!selectedExpression?.varargs &&
706
- argCount > Math.max(1, selectedExpression.min_args ?? 1) &&
707
- !readOnly;
708
- const removeArgInline = canRemoveArgs && !phone;
709
- const handleRemoveFirstArg = useCallback(() => removeVarArg(0), [removeVarArg]);
710
- const argRemoveMenuItems = useMemo((): IReqoreMenuItemProps[][] | undefined => {
711
- if (!canRemoveArgs || !phone) {
712
- return undefined;
713
- }
714
-
715
- const name = (selectedExpression.args[0]?.display_name || 'argument').toLowerCase();
716
-
717
- return Array.from({ length: argCount }, (_, index) => [
718
- {
719
- label: `Remove ${name}`,
720
- icon: 'DeleteBinLine',
721
- intent: 'danger',
722
- className: 'expression-remove-arg',
723
- onClick: () => removeVarArg(index),
724
- },
725
- ]);
726
- }, [canRemoveArgs, phone, argCount, removeVarArg, JSON.stringify(selectedExpression?.args[0])]);
727
- const isSlotDropTarget = canReorderArgs && reorderSurfaces.includes('dragHandle');
728
- // The slot is indexed one past the last operand, so its drag-over state
729
- // never lights an operand and vice versa.
730
- const handleSlotDragOver = useCallback(
731
- () => handleArgDragOver(argCount),
732
- [handleArgDragOver, argCount]
733
- );
734
- const handleSlotDrop = useCallback(() => handleArgDrop(argCount - 1), [handleArgDrop, argCount]);
735
-
736
- const handleWrapExpressionClick = useCallback(
737
- (value: unknown) => {
738
- wrapExpression(value as string);
739
- },
740
- [wrapExpression]
741
- );
742
-
743
- const handleUpdateExpToAnd = useCallback(() => {
744
- updateExpToAndOr('&&');
745
- }, [updateExpToAndOr]);
746
-
747
- const handleUpdateExpToOr = useCallback(() => {
748
- updateExpToAndOr('||');
749
- }, [updateExpToAndOr]);
750
-
751
- const handleUpdateTypeChange = useCallback(
752
- (value) => {
753
- updateType(value === 'context' ? undefined : value, true);
754
- },
755
- [updateType]
756
- );
757
-
758
- const handleFirstParamChange = useCallback(
759
- (_name, value, type, isFunction) => {
760
- if (isFunction || (type !== 'any' && type !== 'auto')) {
761
- updateArg(value, 0, isFunction ? undefined : type, isFunction);
762
- }
763
- },
764
- [updateArg]
765
- );
766
-
767
- const buildCustomTemplateItems = useCallback(
768
- (
769
- arg: IExpressionSchemaArg,
770
- onClick: (type: IQorusTypeObject, removeTemplate: () => void) => void
771
- ) => {
772
- // If the argument has allowed values or element allowed values, do not allow type changing
773
- if (arg?.allowed_values || arg?.element_allowed_values) {
774
- return [];
775
- }
776
- // For every type in the types we need to check if it matches a type in the args accepted types
777
- // We need to sort these types at the top, and but the rest at the bottom with a warning intent
778
- const serverAcceptedTypes = types.getAcceptedTypes(arg?.ui_type);
779
- const acceptedTypes = types.compactValue?.filter(
780
- (type) =>
781
- !arg || serverAcceptedTypes.includes(type.name) || serverAcceptedTypes.includes('any')
782
- );
783
-
784
- const otherTypes = types.compactValue?.filter(
785
- (type) =>
786
- arg && !serverAcceptedTypes.includes(type.name) && !serverAcceptedTypes.includes('any')
787
- );
788
-
789
- let result: TCustomTemplateItems = [];
790
-
791
- if (size(acceptedTypes)) {
792
- result = acceptedTypes?.map((type) => ({
793
- label: type.display_name,
794
- description: type.short_desc,
795
- minimal: true,
796
- onClick: (_e, removeTemplate) => {
797
- removeTemplate?.();
798
- onClick?.(type, removeTemplate);
799
- },
800
- }));
801
- }
802
-
803
- if (size(otherTypes)) {
804
- result = [
805
- ...result,
806
- {
807
- isDivider: true,
808
- line: true,
809
- },
810
- ...(otherTypes?.map((type) => ({
811
- label: type.display_name,
812
- description: type.short_desc,
813
- minimal: true,
814
- intent: 'warning',
815
- onClick: (_e, removeTemplate) => {
816
- if (doNotShowTypeConfirmation) {
817
- removeTemplate?.();
818
- onClick?.(type, removeTemplate);
819
- return;
820
- }
821
-
822
- setConfirmDialogData({
823
- isOpen: true,
824
- acceptedTypes: serverAcceptedTypes,
825
- onConfirm: () => {
826
- removeTemplate?.();
827
- onClick?.(type, removeTemplate);
828
- },
829
- });
830
- },
831
- })) as TCustomTemplateItems),
832
- ];
833
- }
834
-
835
- return result;
836
- },
837
- [types?.compactValue]
838
- );
839
-
840
- const hasArgumentsWithTypeMismatch = useMemo(() => {
841
- return value.value?.args?.some((arg) => arg?.types_mismatch);
842
- }, [JSON.stringify(value)]);
843
-
844
- // The type hook is seeded with the complete built-in catalogue and refreshes
845
- // it in the background. Do not hide an otherwise usable expression behind
846
- // a skeleton while that optional refresh is in flight.
847
- if (expressions.loading || (types.loading && !size(types.value))) {
848
- return <ReqorePanelSkeleton size='small' />;
849
- }
850
-
851
- const validationData = validateFieldWithResult('expression', value, {
852
- expressions: expressions.value,
853
- });
854
-
855
- return (
856
- <ExpressionItem
857
- index={index}
858
- as={ReqorePanel}
859
- intent={validationData.isValid && !!returnType && isReturnTypeMatching ? 'muted' : 'danger'}
860
- description={
861
- isExpressionServerHandled ? 'This expression will be executed outside of Qorus' : ''
862
- }
863
- flat
864
- readOnly={readOnly}
865
- minimal
866
- size='small'
867
- isChild={isChild}
868
- className='expression'
869
- customTheme={{
870
- main: `main:darken:${level}` as TReqoreEffectColor,
871
- }}
872
- id={id}
873
- label={
874
- <Select
875
- size='tiny'
876
- className='expression-operator-selector'
877
- value={value?.value?.exp}
878
- icon='Functions'
879
- placeholder='Select operation'
880
- fluid={false}
881
- // shrinks with a narrow panel, its name shortened, rather than holding the panel open
882
- fixed={false}
883
- style={{ minWidth: 0, maxWidth: '100%' }}
884
- flat
885
- // The operation catalogue is long and every entry carries a description,
886
- // so it belongs in the searchable collection modal rather than an inline
887
- // dropdown. `SelectFormField` defaults `forceDropdown` to `true`, which
888
- // would otherwise collapse this picker into the dropdown presentation.
889
- forceDropdown={false}
890
- minimal
891
- items={defaultItems}
892
- onChange={handleOperatorChange}
893
- showDescription='tooltip'
894
- disabled={readOnly}
895
- id='expression-builder-select-function'
896
- />
897
- }
898
- style={{
899
- marginLeft: isChild ? 10 : undefined,
900
- // indented, it is as wide as what is left of the group's width: at its full width the indent
901
- // pushed it - and the actions floating above it on hover - past the group and a narrow screen
902
- maxWidth: isChild ? 'calc(100% - 10px)' : undefined,
903
- minWidth: 0,
904
- borderStyle: 'dashed',
905
- flexShrink: 1,
906
- }}
907
- contentStyle={{
908
- overflowX: 'hidden',
909
- }}
910
- // with a mouse, the actions float above the panel while it is hovered; a finger cannot hover, and a
911
- // tap left them floating over what is above - the Visual / Text switch, where a tap meant for
912
- // Text hit "Remove this expression" - so on a touch device they stay in the panel's own bar
913
- floatingActions={!coarsePointer}
914
- actions={[
915
- // SEAM (reqraft): the IDE renders `AiAssistanceAction` first here;
916
- // consumers inject it (or anything else) via `extraActions`.
917
- ...resolvedExtraActions,
918
- // "Add value" is not up here: it is the slot after the last operand
919
- // (`ExpressionBuilderAddArgumentSlot`), where the value will appear.
920
- {
921
- as: Select,
922
- show: readOnly ? false : 'hover',
923
- props: {
924
- className: 'expression-wrap',
925
- id: 'expression-builder-wrap',
926
- placeholder: 'Wrap',
927
- icon: 'Functions',
928
- showRightIcon: false,
929
- fluid: false,
930
- transparent: false,
931
- fixed: true,
932
- minimal: false,
933
- // Same catalogue as the operation selector above — keep the collection
934
- // modal rather than the `forceDropdown` default's inline dropdown.
935
- forceDropdown: false,
936
- items: defaultItems,
937
- hideItemCount: true,
938
- onChange: handleWrapExpressionClick,
939
- showDescription: 'tooltip',
940
- tooltip: 'Wrap this expression in another expression',
941
- size: 'tiny',
942
- },
943
- },
944
- {
945
- className: 'expression-unwrap',
946
- label: 'Remove',
947
- textAlign: 'center',
948
- icon: 'CloseLine',
949
- tooltip: 'Remove this expression but keep the children',
950
- fixed: true,
951
- onClick: unwrapExpression,
952
- show: value.value?.args?.[0]?.is_expression === true && !readOnly ? 'hover' : false,
953
- },
954
- {
955
- className: 'expression-explain',
956
- label: showSummary ? 'Hide Explanation' : 'Explain',
957
- show: level === 0,
958
- onClick: () => setShowSummary(!showSummary),
959
- icon: 'InformationLine',
960
- tooltip: showSummary
961
- ? 'Hide explanation of this expression'
962
- : 'Show explanation of this expression',
963
- fixed: true,
964
- },
965
- {
966
- className: 'expression-group-remove',
967
- intent: 'danger',
968
- textAlign: 'center',
969
- icon: 'DeleteBinLine',
970
- tooltip: 'Remove this expression and its children',
971
- fixed: true,
972
- minimal: true,
973
- show: readOnly ? false : 'hover',
974
- onClick: handleRemoveClick,
975
- },
976
- ]}
977
- bottomActions={[
978
- {
979
- show: !!selectedExpression && areQorusTypesCompatible('bool', returnType) && !readOnly,
980
- group: [
981
- {
982
- flat: true,
983
- className: 'expression-and',
984
- label: 'AND',
985
- textAlign: 'center',
986
- icon: 'AddLine',
987
- fixed: true,
988
- compact: true,
989
- size: 'tiny',
990
- show: (!group || group === '||') && !readOnly,
991
- onClick: handleUpdateExpToAnd,
992
- },
993
- {
994
- flat: true,
995
- className: 'expression-or',
996
- label: 'OR',
997
- textAlign: 'center',
998
- icon: 'AddLine',
999
- show: (!group || group === '&&') && !readOnly,
1000
- fixed: true,
1001
- compact: true,
1002
- size: 'tiny',
1003
- onClick: handleUpdateExpToOr,
1004
- },
1005
- ],
1006
- },
1007
- ]}
1008
- >
1009
- {hasArgumentsWithTypeMismatch && (
1010
- <ConfirmMismatchedTypesModal
1011
- args={value.value?.args}
1012
- expression={selectedExpression}
1013
- onSubmit={updateMultipleArgs}
1014
- expressions={expressions.value}
1015
- />
1016
- )}
1017
- {confirmDialogData?.isOpen && (
1018
- <ConfirmUnsupportedTypeModal
1019
- acceptedTypes={confirmDialogData.acceptedTypes}
1020
- onClose={() => {
1021
- setConfirmDialogData(undefined);
1022
- }}
1023
- maxSize='550px'
1024
- bottomActions={[
1025
- {
1026
- label: confirmDialogData?.cancelText || 'Cancel',
1027
- onClick: () => {
1028
- confirmDialogData?.onCancel?.();
1029
- setConfirmDialogData(undefined);
1030
- },
1031
- icon: 'CloseFill',
1032
- minimal: true,
1033
- },
1034
- {
1035
- label: confirmDialogData?.confirmText || 'Confirm',
1036
- intent: 'warning',
1037
- icon: 'CheckFill',
1038
- minimal: true,
1039
- position: 'right',
1040
- onClick: () => {
1041
- confirmDialogData.onConfirm?.();
1042
- setConfirmDialogData(undefined);
1043
- },
1044
- },
1045
- ]}
1046
- >
1047
- {confirmDialogData.children}
1048
- </ConfirmUnsupportedTypeModal>
1049
- )}
1050
- {showSummary && (
1051
- <ExpressionRenderTemplate exp={value} expressions={expressions.value} templates={localTemplates} />
1052
- )}
1053
- {!selectedExpression && !serverExpression && !firstArgument?.value && level === 0 ? (
1054
- <ReqoreMessage size='small' opaque={false} intent='info'>
1055
- Select an operation to start building your expression
1056
- </ReqoreMessage>
1057
- ) : (
1058
- <ReqoreControlGroup
1059
- // On a phone every operand is a full-width row, so the group spans
1060
- // the panel; on desktop it hugs its content and wraps.
1061
- fluid={phone}
1062
- style={{ maxWidth: '100%' }}
1063
- wrap
1064
- verticalAlign='flex-start'
1065
- size='normal'
1066
- gapSize='big'
1067
- >
1068
- {firstArgSchema?.label_before && (
1069
- <ExpressionArgumentDetail label={firstArgSchema.label_before} />
1070
- )}
1071
- <ExpressionBuilderArgumentWrapper
1072
- expressions={expressions.value}
1073
- arg={firstArgument}
1074
- schema={firstArgSchema}
1075
- onTypeChange={handleUpdateTypeChange}
1076
- onRemoveArgClick={handleRemoveFirstArg}
1077
- hasMultipleArgs={removeArgInline}
1078
- fluid={phone}
1079
- readOnly={readOnly}
1080
- reorder={argReorderSurfaces}
1081
- argIndex={0}
1082
- argCount={argCount}
1083
- dragOver={isDragOverArg(0)}
1084
- onMoveArg={moveVarArg}
1085
- onArgDragStart={handleArgDragStart}
1086
- onArgDragOver={handleArgDragOver}
1087
- onArgDrop={handleArgDrop}
1088
- onArgDragEnd={handleArgDragEnd}
1089
- >
1090
- <TemplateField
1091
- component={auto}
1092
- componentOverrides={componentOverrides}
1093
- // SEAM (reqraft): an operand that becomes an expression mounts
1094
- // its own builder through this TemplateField — hand the host's
1095
- // actions on, or nesting silently drops them (the group
1096
- // recursion below already forwards them).
1097
- extraActions={extraActions}
1098
- minimal
1099
- label={
1100
- serverAndQorusExpression
1101
- ? 'Select Template Or Field'
1102
- : serverExpression
1103
- ? 'Select Field'
1104
- : qorusExpression
1105
- ? 'Select Template'
1106
- : 'Select Template Or Field'
1107
- }
1108
- allowFunctions={
1109
- !serverExpression &&
1110
- !!selectedExpression &&
1111
- !firstArgSchema?.allowed_values &&
1112
- !firstArgSchema?.element_allowed_values
1113
- }
1114
- level={level + 1}
1115
- key={`${argsGeneration}-${firstParamType}${selectedExpression?.name}`}
1116
- type={firstParamType}
1117
- defaultType={
1118
- firstArgument?.allowed_values || firstArgument?.element_allowed_values
1119
- ? firstArgument?.type.base_type
1120
- : firstParamType
1121
- }
1122
- returnType={types.getAcceptedTypes(firstArgSchema?.ui_type) as any}
1123
- value={firstArgument?.value}
1124
- isFunction={firstArgument?.is_expression}
1125
- onChange={handleFirstParamChange as any}
1126
- templates={localTemplates}
1127
- allowTemplates
1128
- filterTemplatesByType={false}
1129
- allowCustomValues={
1130
- !!firstArgument?.allowed_values ||
1131
- !!firstArgument?.element_allowed_values ||
1132
- (!!firstArgument?.type && !serverExpression)
1133
- }
1134
- filterTemplatesFunc={(templates) => {
1135
- // PORT NOTE: `?.` on `items` added — with no templates at all
1136
- // (FormEngine with templates off) the IDE original crashes on
1137
- // `{}.items.filter`.
1138
- const filteredTemplates = templates?.items?.filter((item) => {
1139
- return serverExpression ? item.metadata?.dataRole === 'record' : true;
1140
- });
1141
-
1142
- return {
1143
- ...templates,
1144
- items: filteredTemplates,
1145
- };
1146
- }}
1147
- fluid={phone}
1148
- fixed={!phone}
1149
- disableManagement
1150
- disabled={readOnly}
1151
- allowed_values={firstArgSchema?.allowed_values}
1152
- element_allowed_values={firstArgSchema?.element_allowed_values}
1153
- menuItems={
1154
- isExpressionServerHandled
1155
- ? undefined
1156
- : buildCustomTemplateItems(firstArgSchema, (type, removeTemplate) => {
1157
- removeTemplate?.();
1158
- updateArg(
1159
- undefined,
1160
- 0,
1161
- type.name === 'context' ? undefined : (type.name as string)
1162
- );
1163
- })
1164
- }
1165
- menuActions={argMenuActions?.[0]}
1166
- menuTrailingItems={argRemoveMenuItems?.[0]}
1167
- reorder={props.reorder}
1168
- expressions={props.expressions as any}
1169
- expressions_url={expressionsUrl}
1170
- />
1171
- </ExpressionBuilderArgumentWrapper>
1172
- {firstArgSchema?.label_after && (
1173
- <ExpressionArgumentDetail label={firstArgSchema.label_after} />
1174
- )}
1175
- {selectedExpression
1176
- ? restOfArgs?.map((arg, index) => (
1177
- <React.Fragment
1178
- key={`${argsGeneration}-${index}-${arg.ui_type}-${arg.display_name}`}
1179
- >
1180
- {arg?.label_before && <ExpressionArgumentDetail label={arg.label_before} />}
1181
- <ExpressionBuilderArgumentWrapper
1182
- readOnly={readOnly}
1183
- expressions={expressions.value}
1184
- arg={{
1185
- ...rest[index],
1186
- type: getArgumentType(expressions.value, rest[index], arg),
1187
- }}
1188
- schema={arg}
1189
- onTypeChange={(value) => {
1190
- updateArg(
1191
- undefined,
1192
- index + 1,
1193
- value === 'context' ? undefined : (value as string)
1194
- );
1195
- }}
1196
- onRemoveArgClick={() => {
1197
- removeVarArg(index + 1);
1198
- }}
1199
- hasMultipleArgs={removeArgInline}
1200
- fluid={phone}
1201
- reorder={argReorderSurfaces}
1202
- argIndex={index + 1}
1203
- argCount={argCount}
1204
- dragOver={isDragOverArg(index + 1)}
1205
- onMoveArg={moveVarArg}
1206
- onArgDragStart={handleArgDragStart}
1207
- onArgDragOver={handleArgDragOver}
1208
- onArgDrop={handleArgDrop}
1209
- onArgDragEnd={handleArgDragEnd}
1210
- >
1211
- <TemplateField
1212
- minimal
1213
- component={auto}
1214
- componentOverrides={componentOverrides}
1215
- // SEAM (reqraft): same as the first operand above.
1216
- extraActions={extraActions}
1217
- level={level + 1}
1218
- allowFunctions={!arg?.allowed_values && !arg?.element_allowed_values}
1219
- isFunction={rest[index]?.is_expression}
1220
- key={`${argsGeneration}-${index}-${arg.ui_type}-${arg.display_name}-${level + 1}`}
1221
- // An empty argument has no value to take a type from; fall
1222
- // back to the type the catalogue declares for it, as the
1223
- // first-argument mount already does. Without this an
1224
- // empty bool argument rendered as an untyped `auto` field
1225
- // — a type picker under a label that already said
1226
- // "true or false" — and an empty `any` argument never
1227
- // qualified for the template-selector default, because
1228
- // that rule reads `type`, and `type` was undefined.
1229
- type={rest[index]?.type ?? arg.ui_type}
1230
- defaultType={
1231
- arg.allowed_values || arg.element_allowed_values
1232
- ? arg.ui_type
1233
- : (rest[index]?.type ?? arg.ui_type)
1234
- }
1235
- returnType={types.getAcceptedTypes(arg.ui_type) as any}
1236
- canBeNull={false}
1237
- value={rest[index]?.value}
1238
- templates={localTemplates}
1239
- allowTemplates={!arg?.allowed_values && !arg?.element_allowed_values}
1240
- filterTemplatesByType={false}
1241
- allowCustomValues={
1242
- !!arg.allowed_values ||
1243
- !!arg.element_allowed_values ||
1244
- !!rest[index]?.type ||
1245
- !!arg.default_value
1246
- }
1247
- onChange={((_name, value, type, isFunction) => {
1248
- updateArg(value, index + 1, isFunction ? undefined : type, isFunction);
1249
- }) as any}
1250
- fluid={phone}
1251
- fixed={!phone}
1252
- disableManagement
1253
- disabled={readOnly}
1254
- menuItems={buildCustomTemplateItems(arg, (type, removeTemplate) => {
1255
- removeTemplate?.();
1256
- updateArg(
1257
- undefined,
1258
- index + 1,
1259
- type.name === 'context' ? undefined : (type.name as string)
1260
- );
1261
- })}
1262
- menuActions={argMenuActions?.[index + 1]}
1263
- menuTrailingItems={argRemoveMenuItems?.[index + 1]}
1264
- reorder={props.reorder}
1265
- expressions={props.expressions as any}
1266
- expressions_url={expressionsUrl}
1267
- allowed_values={arg?.allowed_values}
1268
- element_allowed_values={arg?.element_allowed_values}
1269
- ui_element_type={(arg as any)?.ui_element_type}
1270
- />
1271
- </ExpressionBuilderArgumentWrapper>
1272
- {arg?.label_after && <ExpressionArgumentDetail label={arg.label_after} />}
1273
- </React.Fragment>
1274
- ))
1275
- : null}
1276
- {canAddArg && (
1277
- <ExpressionBuilderAddArgumentSlot
1278
- argumentName={selectedExpression.args[0]?.display_name}
1279
- disabled={!validateField('expression', value, { expressions: expressions.value })}
1280
- droppable={isSlotDropTarget}
1281
- dragOver={isDragOverArg(argCount)}
1282
- onClick={handleAddArgumentClick}
1283
- onDragOver={handleSlotDragOver}
1284
- onDrop={handleSlotDrop}
1285
- />
1286
- )}
1287
- </ReqoreControlGroup>
1288
- )}
1289
- {!isReturnTypeMatching && (
1290
- <>
1291
- <ReqoreVerticalSpacer height={5} />
1292
- <ReqoreTag
1293
- minimal
1294
- icon='ErrorWarningLine'
1295
- intent='danger'
1296
- size='tiny'
1297
- wrap
1298
- label={
1299
- isConditionType(returnType as string | string[] | undefined) &&
1300
- !!expressionReturnType &&
1301
- isTextOrDateType(expressionReturnType)
1302
- ? // a condition that gives text, a date or a time: say how to make it one
1303
- `A condition can't give ${types.getTypeDisplayName(expressionReturnType)}: compare it explicitly, for example @status == "open" or @note != "".`
1304
- : `This expression returns ${types.getTypeDisplayName(expressionReturnType) || 'nothing'} but the expected return type is ${expectedReturnTypeText}. Please select an expression that returns ${expectedReturnTypeText} or wrap this expression inside another one that does.`
1305
- }
1306
- />
1307
- </>
1308
- )}
1309
- {selectedExpression && !validationData.isValid ? (
1310
- <>
1311
- <ReqoreVerticalSpacer height={5} />
1312
- <ReqoreTag
1313
- minimal
1314
- icon='ErrorWarningLine'
1315
- intent='danger'
1316
- size='tiny'
1317
- wrap
1318
- label={validationData.reason || 'Expression is not valid for unknown reasons'}
1319
- />
1320
- </>
1321
- ) : null}
1322
- </ExpressionItem>
1323
- );
1324
- };
1325
-
1326
- export const ExpressionBuilder = ({
1327
- localTemplates,
1328
- value = ExpressionDefaultValue,
1329
- isChild,
1330
- level = 0,
1331
- index = 0,
1332
- path,
1333
- type,
1334
- returnType,
1335
- group,
1336
- onChange,
1337
- onValueChange,
1338
- readOnly,
1339
- expressions,
1340
- expressionsUrl,
1341
- serverHandled,
1342
- extraActions,
1343
- componentOverrides,
1344
- reorder,
1345
- }: IExpressionBuilderProps) => {
1346
- const templates = useTemplates(!isChild, localTemplates);
1347
- /* A builder nested in a group does not resolve templates again: its parent hands it the resolved ones.
1348
- `useTemplates` gives a nested builder none, and they were what it handed on, so every comparison in
1349
- an AND/OR group had no templates - its field pickers had nothing to offer and were drawn disabled,
1350
- and the operands read as read-only. */
1351
- const resolvedTemplates = isChild ? localTemplates : templates.value;
1352
- const theme = useReqoreTheme();
1353
- const [showSummary, setShowSummary] = useState(false);
1354
- const _expressions = useExpressions({
1355
- allow: true,
1356
- expressionsUrl,
1357
- // SEAM (reqraft): the catalogue is provided whole; override the fetch
1358
- // (and thread it through the group recursion above) so offline stories /
1359
- // CI are deterministic.
1360
- override: expressions,
1361
- });
1362
-
1363
- noopUseRegisterHintView('expression_builder', level === 0 && index === 0);
1364
-
1365
- const handleChange = useCallback(
1366
- (newValue: IExpression, newPath: string, remove?: boolean) => {
1367
- if (onChange) {
1368
- if (!newPath) {
1369
- onChange(newValue, remove);
1370
- return;
1371
- }
1372
-
1373
- const clonedValue = cloneDeep(value);
1374
-
1375
- if (remove) {
1376
- unset(clonedValue, newPath);
1377
- const pathArray = newPath.split('.');
1378
-
1379
- pathArray.pop();
1380
-
1381
- const parentPath = pathArray.join('.');
1382
- let parent = get(clonedValue, parentPath);
1383
-
1384
- parent = parent.filter((item: any) => item);
1385
-
1386
- if (size(parent) === 1) {
1387
- pathArray.pop();
1388
-
1389
- const grandParentPath = pathArray.join('.');
1390
-
1391
- if (grandParentPath === '') {
1392
- onChange(parent[0].value, remove);
1393
- return;
1394
- }
1395
-
1396
- set(clonedValue, grandParentPath, parent[0].value);
1397
- } else {
1398
- set(clonedValue, parentPath, parent);
1399
- }
1400
- } else {
1401
- set(clonedValue, newPath, newValue);
1402
- }
1403
-
1404
- onChange(clonedValue, remove && !newPath);
1405
- } else if (onValueChange) {
1406
- onValueChange(newValue, newPath, remove);
1407
- }
1408
- },
1409
- [JSON.stringify(value), onChange, onValueChange]
1410
- );
1411
-
1412
- if (templates.loading) {
1413
- return (
1414
- <ReqoreSpinner type={5} size='normal'>
1415
- Loading...
1416
- </ReqoreSpinner>
1417
- );
1418
- }
1419
-
1420
- if (
1421
- value.is_expression &&
1422
- value.value &&
1423
- (value.value?.exp === '&&' || value.value?.exp === '||')
1424
- ) {
1425
- return (
1426
- <ReqoreErrorBoundary>
1427
- <ExpressionItem
1428
- index={index}
1429
- as={ReqorePanel}
1430
- isChild={isChild}
1431
- isAndOr
1432
- minimal
1433
- readOnly={readOnly}
1434
- size='small'
1435
- flat
1436
- customTheme={{
1437
- main: darken(`0.0${level * 25}`, theme.main) as TReqoreHexColor,
1438
- }}
1439
- label={isChild ? (value.value.exp === '||' ? 'OR group' : 'AND group') : 'IF group'}
1440
- style={{
1441
- marginLeft: isChild ? 10 : 0,
1442
- // a nested group too: its indent is taken out of its width, not added past it
1443
- maxWidth: isChild ? 'calc(100% - 10px)' : undefined,
1444
- minWidth: 0,
1445
- }}
1446
- actions={[
1447
- {
1448
- icon: 'AddCircleLine',
1449
- show: !readOnly,
1450
- onClick: () => {
1451
- handleChange(
1452
- ExpressionDefaultValue,
1453
- `${path ? `${path}.` : ''}value.args.${size(value.value.args)}`
1454
- );
1455
- },
1456
- tooltip: 'Add condition parameter',
1457
- },
1458
- {
1459
- className: 'expression-explain',
1460
- label: showSummary ? 'Hide Explanation' : 'Explain',
1461
- show: level === 0,
1462
- onClick: () => setShowSummary(!showSummary),
1463
- icon: 'InformationLine',
1464
- tooltip: showSummary
1465
- ? 'Hide explanation of this expression'
1466
- : 'Show explanation of this expression',
1467
- fixed: true,
1468
- },
1469
- ]}
1470
- >
1471
- <ReqoreControlGroup vertical fluid size='normal' style={{ position: 'relative' }} wrap>
1472
- {showSummary && (
1473
- <ExpressionRenderTemplate
1474
- exp={value}
1475
- expressions={_expressions.expressions}
1476
- templates={localTemplates}
1477
- />
1478
- )}
1479
- <StyledExpressionItemLabel
1480
- as={ReqoreP}
1481
- color='transparent'
1482
- className='expression-operator'
1483
- ></StyledExpressionItemLabel>
1484
- {value.value.args?.map((arg, index) => (
1485
- <React.Fragment key={index}>
1486
- <ExpressionBuilder
1487
- value={arg}
1488
- localTemplates={resolvedTemplates}
1489
- isChild
1490
- path={`${path ? `${path}.` : ''}value.args.${index}`}
1491
- level={level + 1}
1492
- index={index}
1493
- type={type}
1494
- onValueChange={handleChange}
1495
- returnType='bool'
1496
- group={value.value.exp}
1497
- readOnly={readOnly}
1498
- expressions={expressions}
1499
- expressionsUrl={expressionsUrl}
1500
- serverHandled={serverHandled}
1501
- extraActions={extraActions}
1502
- reorder={reorder}
1503
- />
1504
- {index < size(value.value.args) - 1 && (
1505
- <ExpressionArgumentDetail
1506
- label={value.value.exp === '||' ? 'OR' : 'AND'}
1507
- align='left'
1508
- style={{
1509
- marginLeft: 10,
1510
- }}
1511
- />
1512
- )}
1513
- </React.Fragment>
1514
- ))}
1515
- </ReqoreControlGroup>
1516
- </ExpressionItem>
1517
- </ReqoreErrorBoundary>
1518
- );
1519
- }
1520
-
1521
- return (
1522
- <ReqoreErrorBoundary>
1523
- <Expression
1524
- localTemplates={resolvedTemplates}
1525
- value={value}
1526
- isChild={isChild}
1527
- type={type}
1528
- returnType={returnType}
1529
- level={level}
1530
- path={path}
1531
- index={index}
1532
- onValueChange={handleChange}
1533
- group={group}
1534
- readOnly={readOnly}
1535
- expressions={expressions}
1536
- expressionsUrl={expressionsUrl}
1537
- id={level === 0 && index === 0 ? 'expression-builder' : undefined}
1538
- serverHandled={serverHandled}
1539
- extraActions={extraActions}
1540
- componentOverrides={componentOverrides}
1541
- reorder={reorder}
1542
- />
1543
- </ReqoreErrorBoundary>
1544
- );
1545
- };