@qoretechnologies/reqraft 0.10.64 → 0.10.65-pr.137.g62fcecc

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 (774) hide show
  1. package/README.md +53 -1
  2. package/dist/components/Description/describedControl.d.ts +54 -0
  3. package/dist/components/Description/describedControl.d.ts.map +1 -0
  4. package/dist/components/Description/describedControl.js +81 -0
  5. package/dist/components/Description/describedControl.js.map +1 -0
  6. package/dist/components/Description/index.d.ts.map +1 -1
  7. package/dist/components/Description/index.js +3 -2
  8. package/dist/components/Description/index.js.map +1 -1
  9. package/dist/components/colorValue/colorValue.d.ts +59 -0
  10. package/dist/components/colorValue/colorValue.d.ts.map +1 -0
  11. package/dist/components/colorValue/colorValue.js +245 -0
  12. package/dist/components/colorValue/colorValue.js.map +1 -0
  13. package/dist/components/colorValue/index.d.ts +34 -0
  14. package/dist/components/colorValue/index.d.ts.map +1 -0
  15. package/dist/components/colorValue/index.js +136 -0
  16. package/dist/components/colorValue/index.js.map +1 -0
  17. package/dist/components/colorValue/labels.d.ts +12 -0
  18. package/dist/components/colorValue/labels.d.ts.map +1 -0
  19. package/dist/components/colorValue/labels.js +11 -0
  20. package/dist/components/colorValue/labels.js.map +1 -0
  21. package/dist/components/composer/Composer.d.ts +1 -1
  22. package/dist/components/composer/Composer.d.ts.map +1 -1
  23. package/dist/components/composer/Composer.js +2 -2
  24. package/dist/components/composer/Composer.js.map +1 -1
  25. package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
  26. package/dist/components/dpqlEditor/DpqlEditor.js +25 -5
  27. package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
  28. package/dist/components/dpqlEditor/dpqlHelpers.d.ts +36 -5
  29. package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
  30. package/dist/components/dpqlEditor/dpqlHelpers.js +340 -62
  31. package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
  32. package/dist/components/dpqlEditor/dpqlTags.d.ts +11 -7
  33. package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
  34. package/dist/components/dpqlEditor/dpqlTags.js +35 -17
  35. package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
  36. package/dist/components/dpqlEditor/types.d.ts +54 -8
  37. package/dist/components/dpqlEditor/types.d.ts.map +1 -1
  38. package/dist/components/dpqlEditor/useDpqlSession.d.ts +2 -2
  39. package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
  40. package/dist/components/dpqlEditor/useDpqlSession.js +16 -7
  41. package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
  42. package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
  43. package/dist/components/form/engine/CompactRow.js +207 -97
  44. package/dist/components/form/engine/CompactRow.js.map +1 -1
  45. package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
  46. package/dist/components/form/engine/CompactToolbar.js +29 -3
  47. package/dist/components/form/engine/CompactToolbar.js.map +1 -1
  48. package/dist/components/form/engine/FormEngine.d.ts +58 -10
  49. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  50. package/dist/components/form/engine/FormEngine.js +542 -112
  51. package/dist/components/form/engine/FormEngine.js.map +1 -1
  52. package/dist/components/form/engine/HiddenFieldsNote.d.ts +28 -0
  53. package/dist/components/form/engine/HiddenFieldsNote.d.ts.map +1 -0
  54. package/dist/components/form/engine/HiddenFieldsNote.js +32 -0
  55. package/dist/components/form/engine/HiddenFieldsNote.js.map +1 -0
  56. package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
  57. package/dist/components/form/engine/OptionFieldMessages.js +24 -3
  58. package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
  59. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts +2 -2
  60. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
  61. package/dist/components/form/engine/_structuredData/SchemaDataView.js +12 -6
  62. package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
  63. package/dist/components/form/engine/compactRowContext.d.ts +21 -0
  64. package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
  65. package/dist/components/form/engine/compactRowContext.js.map +1 -1
  66. package/dist/components/form/engine/compactRowStyles.d.ts +20 -10
  67. package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
  68. package/dist/components/form/engine/compactRowStyles.js +36 -30
  69. package/dist/components/form/engine/compactRowStyles.js.map +1 -1
  70. package/dist/components/form/engine/compactToolbarColors.d.ts +16 -0
  71. package/dist/components/form/engine/compactToolbarColors.d.ts.map +1 -0
  72. package/dist/components/form/engine/compactToolbarColors.js +21 -0
  73. package/dist/components/form/engine/compactToolbarColors.js.map +1 -0
  74. package/dist/components/form/engine/readFirst.d.ts +24 -8
  75. package/dist/components/form/engine/readFirst.d.ts.map +1 -1
  76. package/dist/components/form/engine/readFirst.js +77 -109
  77. package/dist/components/form/engine/readFirst.js.map +1 -1
  78. package/dist/components/form/engine/readFirstColors.d.ts +30 -0
  79. package/dist/components/form/engine/readFirstColors.d.ts.map +1 -0
  80. package/dist/components/form/engine/readFirstColors.js +51 -0
  81. package/dist/components/form/engine/readFirstColors.js.map +1 -0
  82. package/dist/components/form/engine/rowFocus.d.ts +2 -0
  83. package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
  84. package/dist/components/form/engine/rowFocus.js +26 -3
  85. package/dist/components/form/engine/rowFocus.js.map +1 -1
  86. package/dist/components/form/engine/typeChoices.d.ts +1 -1
  87. package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -1
  88. package/dist/components/form/engine/variants/VariantCalmTable.js +2 -1
  89. package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -1
  90. package/dist/components/form/engine/variants/VariantCards.d.ts.map +1 -1
  91. package/dist/components/form/engine/variants/VariantCards.js +2 -1
  92. package/dist/components/form/engine/variants/VariantCards.js.map +1 -1
  93. package/dist/components/form/engine/variants/VariantFocus.js +1 -1
  94. package/dist/components/form/engine/variants/VariantFocus.js.map +1 -1
  95. package/dist/components/form/engine/variants/VariantMinimal.d.ts.map +1 -1
  96. package/dist/components/form/engine/variants/VariantMinimal.js +2 -1
  97. package/dist/components/form/engine/variants/VariantMinimal.js.map +1 -1
  98. package/dist/components/form/engine/variants/variantParts.d.ts +1 -1
  99. package/dist/components/form/engine/variants/variantParts.d.ts.map +1 -1
  100. package/dist/components/form/engine/variants/variantParts.js +25 -17
  101. package/dist/components/form/engine/variants/variantParts.js.map +1 -1
  102. package/dist/components/form/expressions/DpqlRendering.d.ts +1 -1
  103. package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -1
  104. package/dist/components/form/expressions/DpqlRendering.js +3 -3
  105. package/dist/components/form/expressions/DpqlRendering.js.map +1 -1
  106. package/dist/components/form/expressions/ExpressionField.d.ts +64 -3
  107. package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
  108. package/dist/components/form/expressions/ExpressionField.js +459 -100
  109. package/dist/components/form/expressions/ExpressionField.js.map +1 -1
  110. package/dist/components/form/expressions/argumentPresence.d.ts +14 -0
  111. package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -1
  112. package/dist/components/form/expressions/argumentPresence.js +16 -1
  113. package/dist/components/form/expressions/argumentPresence.js.map +1 -1
  114. package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
  115. package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
  116. package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
  117. package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
  118. package/dist/components/form/expressions/builder/argumentLabel.js +27 -9
  119. package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
  120. package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
  121. package/dist/components/form/expressions/builder/argumentWrapper.js +3 -1
  122. package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
  123. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
  124. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +5 -4
  125. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -1
  126. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +1 -1
  127. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -1
  128. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +6 -3
  129. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
  130. package/dist/components/form/expressions/builder/index.d.ts +24 -2
  131. package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
  132. package/dist/components/form/expressions/builder/index.js +138 -78
  133. package/dist/components/form/expressions/builder/index.js.map +1 -1
  134. package/dist/components/form/expressions/builder/item.d.ts +6 -2
  135. package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
  136. package/dist/components/form/expressions/builder/item.js +19 -5
  137. package/dist/components/form/expressions/builder/item.js.map +1 -1
  138. package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
  139. package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
  140. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts +11 -0
  141. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts.map +1 -0
  142. package/dist/components/form/expressions/dpqlMockRecordPath.js +254 -0
  143. package/dist/components/form/expressions/dpqlMockRecordPath.js.map +1 -0
  144. package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
  145. package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
  146. package/dist/components/form/expressions/expressionOperands.js +97 -0
  147. package/dist/components/form/expressions/expressionOperands.js.map +1 -0
  148. package/dist/components/form/expressions/fieldPath.d.ts +24 -0
  149. package/dist/components/form/expressions/fieldPath.d.ts.map +1 -0
  150. package/dist/components/form/expressions/fieldPath.js +152 -0
  151. package/dist/components/form/expressions/fieldPath.js.map +1 -0
  152. package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
  153. package/dist/components/form/expressions/mockExpressions.js +22 -5
  154. package/dist/components/form/expressions/mockExpressions.js.map +1 -1
  155. package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
  156. package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
  157. package/dist/components/form/expressions/renderExpressionToText.js +40 -9
  158. package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
  159. package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
  160. package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
  161. package/dist/components/form/expressions/textOfExpression.js +49 -0
  162. package/dist/components/form/expressions/textOfExpression.js.map +1 -0
  163. package/dist/components/form/expressions/types.d.ts +7 -0
  164. package/dist/components/form/expressions/types.d.ts.map +1 -1
  165. package/dist/components/form/expressions/types.js +6 -1
  166. package/dist/components/form/expressions/types.js.map +1 -1
  167. package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
  168. package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
  169. package/dist/components/form/expressions/useExpressionType.js +181 -0
  170. package/dist/components/form/expressions/useExpressionType.js.map +1 -0
  171. package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
  172. package/dist/components/form/expressions/useRenderExpression.js +13 -9
  173. package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
  174. package/dist/components/form/expressions/wildcardExpressions.d.ts +27 -0
  175. package/dist/components/form/expressions/wildcardExpressions.d.ts.map +1 -0
  176. package/dist/components/form/expressions/wildcardExpressions.js +101 -0
  177. package/dist/components/form/expressions/wildcardExpressions.js.map +1 -0
  178. package/dist/components/form/fields/Field.d.ts.map +1 -1
  179. package/dist/components/form/fields/Field.js +26 -9
  180. package/dist/components/form/fields/Field.js.map +1 -1
  181. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
  182. package/dist/components/form/fields/allowed-values/AllowedValues.js +17 -4
  183. package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
  184. package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
  185. package/dist/components/form/fields/array/ArrayAuto.js +24 -0
  186. package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
  187. package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
  188. package/dist/components/form/fields/array/ArrayAutoField.js +36 -13
  189. package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
  190. package/dist/components/form/fields/auto/AutoFormField.d.ts +20 -1
  191. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
  192. package/dist/components/form/fields/auto/AutoFormField.js +81 -36
  193. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
  194. package/dist/components/form/fields/auto/hostEditorValue.d.ts +30 -0
  195. package/dist/components/form/fields/auto/hostEditorValue.d.ts.map +1 -0
  196. package/dist/components/form/fields/auto/hostEditorValue.js +53 -0
  197. package/dist/components/form/fields/auto/hostEditorValue.js.map +1 -0
  198. package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
  199. package/dist/components/form/fields/binary/Binary.js +23 -3
  200. package/dist/components/form/fields/binary/Binary.js.map +1 -1
  201. package/dist/components/form/fields/boolean/Boolean.d.ts +5 -0
  202. package/dist/components/form/fields/boolean/Boolean.d.ts.map +1 -1
  203. package/dist/components/form/fields/boolean/Boolean.js +9 -1
  204. package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
  205. package/dist/components/form/fields/color/Color.d.ts +103 -16
  206. package/dist/components/form/fields/color/Color.d.ts.map +1 -1
  207. package/dist/components/form/fields/color/Color.js +616 -16
  208. package/dist/components/form/fields/color/Color.js.map +1 -1
  209. package/dist/components/form/fields/emittedValues.d.ts +34 -3
  210. package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
  211. package/dist/components/form/fields/emittedValues.js +24 -1
  212. package/dist/components/form/fields/emittedValues.js.map +1 -1
  213. package/dist/components/form/fields/file/File.d.ts +1 -1
  214. package/dist/components/form/fields/file/File.d.ts.map +1 -1
  215. package/dist/components/form/fields/file/File.js +4 -2
  216. package/dist/components/form/fields/file/File.js.map +1 -1
  217. package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
  218. package/dist/components/form/fields/long-string/LongString.js +17 -3
  219. package/dist/components/form/fields/long-string/LongString.js.map +1 -1
  220. package/dist/components/form/fields/markdown/MarkdownView.js +1 -1
  221. package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
  222. package/dist/components/form/fields/multi-select/MultiSelectFormField.js +4 -1
  223. package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
  224. package/dist/components/form/fields/number/Number.d.ts +6 -0
  225. package/dist/components/form/fields/number/Number.d.ts.map +1 -1
  226. package/dist/components/form/fields/number/Number.js +41 -6
  227. package/dist/components/form/fields/number/Number.js.map +1 -1
  228. package/dist/components/form/fields/object/Object.d.ts +1 -1
  229. package/dist/components/form/fields/object/Object.d.ts.map +1 -1
  230. package/dist/components/form/fields/object/Object.js +4 -2
  231. package/dist/components/form/fields/object/Object.js.map +1 -1
  232. package/dist/components/form/fields/pendingEdit.d.ts +52 -0
  233. package/dist/components/form/fields/pendingEdit.d.ts.map +1 -0
  234. package/dist/components/form/fields/pendingEdit.js +79 -0
  235. package/dist/components/form/fields/pendingEdit.js.map +1 -0
  236. package/dist/components/form/fields/rich-text/RichText.d.ts +8 -1
  237. package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
  238. package/dist/components/form/fields/rich-text/RichText.js +188 -82
  239. package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
  240. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts +18 -0
  241. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts.map +1 -0
  242. package/dist/components/form/fields/rich-text/useTemplateTags.js +49 -0
  243. package/dist/components/form/fields/rich-text/useTemplateTags.js.map +1 -0
  244. package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -1
  245. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +4 -1
  246. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -1
  247. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -1
  248. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +20 -5
  249. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -1
  250. package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -1
  251. package/dist/components/form/fields/schema-definition/TableEditor.js +10 -2
  252. package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -1
  253. package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -1
  254. package/dist/components/form/fields/schema-definition/index.js +8 -4
  255. package/dist/components/form/fields/schema-definition/index.js.map +1 -1
  256. package/dist/components/form/fields/select/Select.d.ts +2 -0
  257. package/dist/components/form/fields/select/Select.d.ts.map +1 -1
  258. package/dist/components/form/fields/select/Select.js +19 -10
  259. package/dist/components/form/fields/select/Select.js.map +1 -1
  260. package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
  261. package/dist/components/form/fields/select/SelectCollection.js +8 -2
  262. package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
  263. package/dist/components/form/fields/select/unavailableRow.d.ts +23 -0
  264. package/dist/components/form/fields/select/unavailableRow.d.ts.map +1 -0
  265. package/dist/components/form/fields/select/unavailableRow.js +55 -0
  266. package/dist/components/form/fields/select/unavailableRow.js.map +1 -0
  267. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +11 -5
  268. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
  269. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +13 -5
  270. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
  271. package/dist/components/form/fields/template/TemplateBrowser.d.ts +22 -0
  272. package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
  273. package/dist/components/form/fields/template/TemplateBrowser.js +54 -0
  274. package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
  275. package/dist/components/form/fields/template/TemplateField.d.ts +102 -1
  276. package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
  277. package/dist/components/form/fields/template/TemplateField.js +572 -85
  278. package/dist/components/form/fields/template/TemplateField.js.map +1 -1
  279. package/dist/components/form/fields/template/TemplateText.d.ts +0 -17
  280. package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -1
  281. package/dist/components/form/fields/template/TemplateText.js +9 -11
  282. package/dist/components/form/fields/template/TemplateText.js.map +1 -1
  283. package/dist/components/form/fields/template/writtenAsText.d.ts +61 -0
  284. package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
  285. package/dist/components/form/fields/template/writtenAsText.js +204 -0
  286. package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
  287. package/dist/components/form/index.d.ts +10 -0
  288. package/dist/components/form/index.d.ts.map +1 -1
  289. package/dist/components/form/index.js +23 -1
  290. package/dist/components/form/index.js.map +1 -1
  291. package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
  292. package/dist/components/imageLightbox/ImageLightbox.js +19 -7
  293. package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
  294. package/dist/components/log/Log.d.ts.map +1 -1
  295. package/dist/components/log/Log.js +16 -8
  296. package/dist/components/log/Log.js.map +1 -1
  297. package/dist/components/menu/Menu.d.ts.map +1 -1
  298. package/dist/components/menu/Menu.js +19 -10
  299. package/dist/components/menu/Menu.js.map +1 -1
  300. package/dist/components/smartEditor/CompletionMenu.d.ts +43 -0
  301. package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
  302. package/dist/components/smartEditor/CompletionMenu.js +196 -0
  303. package/dist/components/smartEditor/CompletionMenu.js.map +1 -0
  304. package/dist/components/smartEditor/MarkdownDoc.d.ts +1 -1
  305. package/dist/components/smartEditor/MarkdownDoc.js +3 -3
  306. package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
  307. package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
  308. package/dist/components/smartEditor/SmartEditor.js +164 -180
  309. package/dist/components/smartEditor/SmartEditor.js.map +1 -1
  310. package/dist/components/smartEditor/completionStyle.d.ts +27 -0
  311. package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
  312. package/dist/components/smartEditor/completionStyle.js +68 -0
  313. package/dist/components/smartEditor/completionStyle.js.map +1 -0
  314. package/dist/components/smartEditor/index.d.ts +5 -1
  315. package/dist/components/smartEditor/index.d.ts.map +1 -1
  316. package/dist/components/smartEditor/index.js +19 -1
  317. package/dist/components/smartEditor/index.js.map +1 -1
  318. package/dist/components/smartEditor/templateCompletions.d.ts +18 -0
  319. package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
  320. package/dist/components/smartEditor/templateCompletions.js +94 -0
  321. package/dist/components/smartEditor/templateCompletions.js.map +1 -0
  322. package/dist/components/smartEditor/typedReferences.d.ts +21 -0
  323. package/dist/components/smartEditor/typedReferences.d.ts.map +1 -0
  324. package/dist/components/smartEditor/typedReferences.js +82 -0
  325. package/dist/components/smartEditor/typedReferences.js.map +1 -0
  326. package/dist/components/smartEditor/types.d.ts +33 -1
  327. package/dist/components/smartEditor/types.d.ts.map +1 -1
  328. package/dist/components/smartEditor/useLspAutocomplete.d.ts +32 -0
  329. package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
  330. package/dist/components/smartEditor/useLspAutocomplete.js +228 -118
  331. package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
  332. package/dist/components/smartEditor/useLspHover.d.ts +33 -7
  333. package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
  334. package/dist/components/smartEditor/useLspHover.js +279 -35
  335. package/dist/components/smartEditor/useLspHover.js.map +1 -1
  336. package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
  337. package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
  338. package/dist/components/smartEditor/useLspSession.d.ts +6 -0
  339. package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
  340. package/dist/components/smartEditor/useLspSession.js +7 -6
  341. package/dist/components/smartEditor/useLspSession.js.map +1 -1
  342. package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -1
  343. package/dist/components/supportTicket/AttachmentChips.js +15 -5
  344. package/dist/components/supportTicket/AttachmentChips.js.map +1 -1
  345. package/dist/components/supportTicket/ReferencePicker.d.ts +9 -2
  346. package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
  347. package/dist/components/supportTicket/ReferencePicker.js +27 -6
  348. package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
  349. package/dist/components/supportTicket/TicketHeader.d.ts +3 -4
  350. package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
  351. package/dist/components/supportTicket/TicketHeader.js +20 -2
  352. package/dist/components/supportTicket/TicketHeader.js.map +1 -1
  353. package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
  354. package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
  355. package/dist/components/ticketReferences/TicketReferences.js +9 -4
  356. package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
  357. package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
  358. package/dist/components/ticketThread/TicketThread.js +38 -13
  359. package/dist/components/ticketThread/TicketThread.js.map +1 -1
  360. package/dist/helpers/descriptionTooltip.d.ts +43 -0
  361. package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
  362. package/dist/helpers/descriptionTooltip.js +70 -0
  363. package/dist/helpers/descriptionTooltip.js.map +1 -0
  364. package/dist/helpers/domProps.d.ts +5 -0
  365. package/dist/helpers/domProps.d.ts.map +1 -0
  366. package/dist/helpers/domProps.js +47 -0
  367. package/dist/helpers/domProps.js.map +1 -0
  368. package/dist/helpers/expressions.d.ts +107 -2
  369. package/dist/helpers/expressions.d.ts.map +1 -1
  370. package/dist/helpers/expressions.js +223 -8
  371. package/dist/helpers/expressions.js.map +1 -1
  372. package/dist/helpers/hoveringPointer.d.ts +26 -0
  373. package/dist/helpers/hoveringPointer.d.ts.map +1 -0
  374. package/dist/helpers/hoveringPointer.js +29 -0
  375. package/dist/helpers/hoveringPointer.js.map +1 -0
  376. package/dist/helpers/markdownText.d.ts +14 -0
  377. package/dist/helpers/markdownText.d.ts.map +1 -0
  378. package/dist/helpers/markdownText.js +160 -0
  379. package/dist/helpers/markdownText.js.map +1 -0
  380. package/dist/helpers/qorusTypeCatalogue.d.ts +53 -0
  381. package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
  382. package/dist/helpers/qorusTypeCatalogue.js +262 -0
  383. package/dist/helpers/qorusTypeCatalogue.js.map +1 -0
  384. package/dist/helpers/readableColors.d.ts +36 -0
  385. package/dist/helpers/readableColors.d.ts.map +1 -0
  386. package/dist/helpers/readableColors.js +116 -0
  387. package/dist/helpers/readableColors.js.map +1 -0
  388. package/dist/helpers/recordFieldReference.d.ts +15 -0
  389. package/dist/helpers/recordFieldReference.d.ts.map +1 -0
  390. package/dist/helpers/recordFieldReference.js +89 -0
  391. package/dist/helpers/recordFieldReference.js.map +1 -0
  392. package/dist/helpers/templateItems.d.ts +2 -2
  393. package/dist/helpers/templateItems.d.ts.map +1 -1
  394. package/dist/helpers/templateItems.js +6 -4
  395. package/dist/helpers/templateItems.js.map +1 -1
  396. package/dist/helpers/templateText.js +5 -2
  397. package/dist/helpers/templateText.js.map +1 -1
  398. package/dist/helpers/templates.d.ts +41 -14
  399. package/dist/helpers/templates.d.ts.map +1 -1
  400. package/dist/helpers/templates.js +152 -9
  401. package/dist/helpers/templates.js.map +1 -1
  402. package/dist/helpers/validations.d.ts +9 -0
  403. package/dist/helpers/validations.d.ts.map +1 -1
  404. package/dist/helpers/validations.js +139 -33
  405. package/dist/helpers/validations.js.map +1 -1
  406. package/dist/hooks/useQorusTypes.d.ts +7 -15
  407. package/dist/hooks/useQorusTypes.d.ts.map +1 -1
  408. package/dist/hooks/useQorusTypes.js +25 -166
  409. package/dist/hooks/useQorusTypes.js.map +1 -1
  410. package/dist/hooks/useReadableIntentShade.d.ts +9 -0
  411. package/dist/hooks/useReadableIntentShade.d.ts.map +1 -0
  412. package/dist/hooks/useReadableIntentShade.js +23 -0
  413. package/dist/hooks/useReadableIntentShade.js.map +1 -0
  414. package/dist/hooks/useReadableOpacity.d.ts +6 -0
  415. package/dist/hooks/useReadableOpacity.d.ts.map +1 -0
  416. package/dist/hooks/useReadableOpacity.js +17 -0
  417. package/dist/hooks/useReadableOpacity.js.map +1 -0
  418. package/dist/index.d.ts +1 -0
  419. package/dist/index.d.ts.map +1 -1
  420. package/dist/index.js +1 -0
  421. package/dist/index.js.map +1 -1
  422. package/dist/tracking/ui/ExperimentCard.d.ts +1 -1
  423. package/dist/tracking/ui/ExperimentCard.d.ts.map +1 -1
  424. package/dist/tracking/ui/ExperimentCard.js +26 -10
  425. package/dist/tracking/ui/ExperimentCard.js.map +1 -1
  426. package/dist/tracking/ui/card.d.ts +2 -2
  427. package/dist/tracking/ui/card.d.ts.map +1 -1
  428. package/dist/tracking/ui/card.js +2 -2
  429. package/dist/tracking/ui/card.js.map +1 -1
  430. package/dist/tracking/ui/readable.d.ts +14 -0
  431. package/dist/tracking/ui/readable.d.ts.map +1 -0
  432. package/dist/tracking/ui/readable.js +60 -0
  433. package/dist/tracking/ui/readable.js.map +1 -0
  434. package/dist/utils/fetch.d.ts +9 -2
  435. package/dist/utils/fetch.d.ts.map +1 -1
  436. package/dist/utils/fetch.js +6 -5
  437. package/dist/utils/fetch.js.map +1 -1
  438. package/dist/utils/websocket.d.ts +65 -2
  439. package/dist/utils/websocket.d.ts.map +1 -1
  440. package/dist/utils/websocket.js +276 -44
  441. package/dist/utils/websocket.js.map +1 -1
  442. package/package.json +14 -5
  443. package/.claude/CLAUDE.md +0 -317
  444. package/.tasks/EXPORT_EXPRESSION_BUILDER.md +0 -38
  445. package/.tasks/EXPRESSION_BUILDER_REPORT.md +0 -149
  446. package/.tasks/EXPRESSION_FIELD_SEAMS.md +0 -66
  447. package/.tasks/FIELD_STACK_REPORT.md +0 -234
  448. package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +0 -558
  449. package/.tasks/FORM_ENGINE_EXPRESSIONS.md +0 -197
  450. package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +0 -95
  451. package/.tasks/FORM_FIELD_EXTRAS.md +0 -72
  452. package/.tasks/INDEX.md +0 -111
  453. package/.tasks/LSP_SHARED_CONNECTION.md +0 -75
  454. package/.tasks/QONSOLE_ASSIST_FEATURES.md +0 -306
  455. package/.tasks/RENDER_EXPRESSION_LSP.md +0 -159
  456. package/.tasks/REQRAFT_AUTO_FIELD.md +0 -176
  457. package/.tasks/SCHEMA_DEFINITION_FIELD.md +0 -250
  458. package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +0 -340
  459. package/.tasks/SMART_EDITOR_LSP_FEATURES.md +0 -299
  460. package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +0 -280
  461. package/.tasks/SMART_EDITOR_UX_POLISH.md +0 -383
  462. package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +0 -246
  463. package/.tasks/STORY_NETWORK_ISOLATION.md +0 -98
  464. package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +0 -72
  465. package/CODE_OF_CONDUCT.md +0 -105
  466. package/CONTRIBUTING.MD +0 -78
  467. package/SECURITY.md +0 -3
  468. package/chromatic.config.json +0 -5
  469. package/design/COMPACT_ENGINE_REDESIGN.md +0 -156
  470. package/design/COMPACT_INFO_DISPLAY.md +0 -87
  471. package/design/COMPACT_PARITY.md +0 -85
  472. package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +0 -92
  473. package/design/FORM_ENGINE_COMPACT.md +0 -300
  474. package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +0 -353
  475. package/design/FORM_ENGINE_EXPRESSIONS.md +0 -257
  476. package/design/FORM_ENGINE_FIELD_MIGRATION.md +0 -419
  477. package/design/IDE_INTEGRATION.md +0 -64
  478. package/design/RENDER_EXPRESSION_TRANSPORT.md +0 -156
  479. package/design/SELECT_DIALOG_FLOOR.md +0 -86
  480. package/design/SMART_EDITOR_UX.md +0 -438
  481. package/design/TRACKING.md +0 -290
  482. package/design/UNAVAILABLE_ALLOWED_VALUES.md +0 -226
  483. package/src/components/Description/index.tsx +0 -254
  484. package/src/components/Description/markdownRendererContext.tsx +0 -29
  485. package/src/components/FocusedEditing/index.tsx +0 -50
  486. package/src/components/codeSize/index.tsx +0 -79
  487. package/src/components/composer/Composer.stories.tsx +0 -238
  488. package/src/components/composer/Composer.tsx +0 -554
  489. package/src/components/composer/helpers.ts +0 -74
  490. package/src/components/composer/index.ts +0 -2
  491. package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -1183
  492. package/src/components/dpqlEditor/DpqlEditor.tsx +0 -219
  493. package/src/components/dpqlEditor/dpqlHelpers.ts +0 -287
  494. package/src/components/dpqlEditor/dpqlInserter.ts +0 -121
  495. package/src/components/dpqlEditor/dpqlProbe.ts +0 -165
  496. package/src/components/dpqlEditor/dpqlTags.ts +0 -114
  497. package/src/components/dpqlEditor/index.ts +0 -41
  498. package/src/components/dpqlEditor/types.ts +0 -203
  499. package/src/components/dpqlEditor/useDpqlProbe.ts +0 -33
  500. package/src/components/dpqlEditor/useDpqlSession.ts +0 -411
  501. package/src/components/form/engine/CompactRow.tsx +0 -2620
  502. package/src/components/form/engine/CompactToolbar.tsx +0 -330
  503. package/src/components/form/engine/FormEngine.stories.tsx +0 -9920
  504. package/src/components/form/engine/FormEngine.tsx +0 -4569
  505. package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
  506. package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -331
  507. package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
  508. package/src/components/form/engine/OptionFieldMessages.tsx +0 -477
  509. package/src/components/form/engine/OptionsHelpDialog.tsx +0 -29
  510. package/src/components/form/engine/__fixtures__/basicFormOptions.ts +0 -309
  511. package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +0 -45
  512. package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +0 -233
  513. package/src/components/form/engine/_structuredData/SchemaDataView.tsx +0 -742
  514. package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +0 -85
  515. package/src/components/form/engine/_structuredData/StructuredDataView.tsx +0 -75
  516. package/src/components/form/engine/_structuredData/structuredData.ts +0 -145
  517. package/src/components/form/engine/compactRowContext.ts +0 -148
  518. package/src/components/form/engine/compactRowStyles.ts +0 -898
  519. package/src/components/form/engine/compactToolbarContext.ts +0 -69
  520. package/src/components/form/engine/optionActions.ts +0 -128
  521. package/src/components/form/engine/optionsContext.ts +0 -24
  522. package/src/components/form/engine/readFirst.ts +0 -1077
  523. package/src/components/form/engine/rendererTypes.ts +0 -107
  524. package/src/components/form/engine/revealRow.ts +0 -123
  525. package/src/components/form/engine/rowFocus.ts +0 -101
  526. package/src/components/form/engine/rowMenuContext.ts +0 -159
  527. package/src/components/form/engine/rowOpenPicker.ts +0 -27
  528. package/src/components/form/engine/typeChoices.ts +0 -63
  529. package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +0 -159
  530. package/src/components/form/engine/variants/VariantCalmTable.tsx +0 -244
  531. package/src/components/form/engine/variants/VariantCards.tsx +0 -212
  532. package/src/components/form/engine/variants/VariantFocus.tsx +0 -382
  533. package/src/components/form/engine/variants/VariantMinimal.tsx +0 -170
  534. package/src/components/form/engine/variants/focusDemo.ts +0 -145
  535. package/src/components/form/engine/variants/variantModel.ts +0 -223
  536. package/src/components/form/engine/variants/variantParts.tsx +0 -313
  537. package/src/components/form/expressions/DpqlRendering.tsx +0 -85
  538. package/src/components/form/expressions/ExpressionField.stories.tsx +0 -1395
  539. package/src/components/form/expressions/ExpressionField.tsx +0 -503
  540. package/src/components/form/expressions/argumentPresence.ts +0 -213
  541. package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +0 -1683
  542. package/src/components/form/expressions/builder/argumentDetail.tsx +0 -17
  543. package/src/components/form/expressions/builder/argumentLabel.tsx +0 -146
  544. package/src/components/form/expressions/builder/argumentSlot.tsx +0 -101
  545. package/src/components/form/expressions/builder/argumentWrapper.tsx +0 -243
  546. package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +0 -120
  547. package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +0 -69
  548. package/src/components/form/expressions/builder/index.tsx +0 -1545
  549. package/src/components/form/expressions/builder/item.tsx +0 -89
  550. package/src/components/form/expressions/builder/moveToPositionStrip.tsx +0 -156
  551. package/src/components/form/expressions/builder/renderTemplate.tsx +0 -42
  552. package/src/components/form/expressions/dpqlMockLanguage.ts +0 -566
  553. package/src/components/form/expressions/dpqlMockLsp.ts +0 -126
  554. package/src/components/form/expressions/mockExpressions.ts +0 -317
  555. package/src/components/form/expressions/renderExpressionToText.ts +0 -137
  556. package/src/components/form/expressions/types.ts +0 -110
  557. package/src/components/form/expressions/useExpressions.ts +0 -101
  558. package/src/components/form/expressions/useRenderExpression.ts +0 -165
  559. package/src/components/form/fields/Field.stories.tsx +0 -143
  560. package/src/components/form/fields/Field.tsx +0 -732
  561. package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -297
  562. package/src/components/form/fields/array/ArrayAuto.tsx +0 -237
  563. package/src/components/form/fields/array/ArrayAutoField.stories.tsx +0 -475
  564. package/src/components/form/fields/array/ArrayAutoField.tsx +0 -367
  565. package/src/components/form/fields/auto/AutoFormField.stories.tsx +0 -825
  566. package/src/components/form/fields/auto/AutoFormField.tsx +0 -1164
  567. package/src/components/form/fields/binary/Binary.stories.tsx +0 -122
  568. package/src/components/form/fields/binary/Binary.tsx +0 -91
  569. package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -125
  570. package/src/components/form/fields/boolean/Boolean.tsx +0 -34
  571. package/src/components/form/fields/byte-size/ByteSize.stories.tsx +0 -87
  572. package/src/components/form/fields/byte-size/ByteSize.tsx +0 -58
  573. package/src/components/form/fields/color/Color.stories.tsx +0 -99
  574. package/src/components/form/fields/color/Color.tsx +0 -46
  575. package/src/components/form/fields/cron/Cron.stories.tsx +0 -68
  576. package/src/components/form/fields/cron/Cron.tsx +0 -80
  577. package/src/components/form/fields/date/Date.stories.tsx +0 -77
  578. package/src/components/form/fields/date/Date.tsx +0 -55
  579. package/src/components/form/fields/emittedValues.ts +0 -70
  580. package/src/components/form/fields/file/File.stories.tsx +0 -161
  581. package/src/components/form/fields/file/File.tsx +0 -227
  582. package/src/components/form/fields/long-string/LongString.stories.tsx +0 -120
  583. package/src/components/form/fields/long-string/LongString.tsx +0 -130
  584. package/src/components/form/fields/markdown/Markdown.stories.tsx +0 -76
  585. package/src/components/form/fields/markdown/Markdown.tsx +0 -81
  586. package/src/components/form/fields/markdown/MarkdownView.tsx +0 -222
  587. package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +0 -139
  588. package/src/components/form/fields/number/Number.stories.tsx +0 -159
  589. package/src/components/form/fields/number/Number.tsx +0 -160
  590. package/src/components/form/fields/object/Object.stories.tsx +0 -398
  591. package/src/components/form/fields/object/Object.tsx +0 -255
  592. package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +0 -95
  593. package/src/components/form/fields/radio-group/RadioGroup.tsx +0 -46
  594. package/src/components/form/fields/radio-group/images/java-96x128.png +0 -0
  595. package/src/components/form/fields/radio-group/images/python-129x128.png +0 -0
  596. package/src/components/form/fields/radio-group/images/qore-106x128.png +0 -0
  597. package/src/components/form/fields/rich-text/RichText.stories.tsx +0 -260
  598. package/src/components/form/fields/rich-text/RichText.tsx +0 -537
  599. package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +0 -242
  600. package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +0 -758
  601. package/src/components/form/fields/schema-definition/Hint.tsx +0 -22
  602. package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +0 -138
  603. package/src/components/form/fields/schema-definition/Loader.tsx +0 -20
  604. package/src/components/form/fields/schema-definition/MigrationsTab.tsx +0 -187
  605. package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +0 -286
  606. package/src/components/form/fields/schema-definition/TableEditor.tsx +0 -155
  607. package/src/components/form/fields/schema-definition/TablesTab.tsx +0 -138
  608. package/src/components/form/fields/schema-definition/catalog.ts +0 -237
  609. package/src/components/form/fields/schema-definition/helpers.ts +0 -90
  610. package/src/components/form/fields/schema-definition/index.tsx +0 -418
  611. package/src/components/form/fields/schema-definition/mockCatalog.ts +0 -325
  612. package/src/components/form/fields/schema-definition/mockDefinition.ts +0 -111
  613. package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +0 -152
  614. package/src/components/form/fields/schema-definition/starterTemplate.ts +0 -68
  615. package/src/components/form/fields/schema-definition/types.ts +0 -185
  616. package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +0 -49
  617. package/src/components/form/fields/select/Select.stories.tsx +0 -872
  618. package/src/components/form/fields/select/Select.tsx +0 -624
  619. package/src/components/form/fields/select/SelectCollection.tsx +0 -594
  620. package/src/components/form/fields/string/String.stories.tsx +0 -86
  621. package/src/components/form/fields/string/String.tsx +0 -43
  622. package/src/components/form/fields/template/ExampleValueModal.stories.tsx +0 -114
  623. package/src/components/form/fields/template/ExampleValueModal.tsx +0 -99
  624. package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +0 -47
  625. package/src/components/form/fields/template/TemplateField.stories.tsx +0 -1121
  626. package/src/components/form/fields/template/TemplateField.tsx +0 -1717
  627. package/src/components/form/fields/template/TemplateText.tsx +0 -115
  628. package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +0 -7
  629. package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +0 -147
  630. package/src/components/form/fields/template/__fixtures__/templates.json +0 -83
  631. package/src/components/form/fields/timeout/Timeout.stories.tsx +0 -228
  632. package/src/components/form/fields/timeout/Timeout.tsx +0 -87
  633. package/src/components/form/fields/url/Url.stories.tsx +0 -94
  634. package/src/components/form/fields/url/Url.tsx +0 -85
  635. package/src/components/form/index.tsx +0 -47
  636. package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
  637. package/src/components/imageLightbox/ImageLightbox.tsx +0 -236
  638. package/src/components/imageLightbox/index.ts +0 -1
  639. package/src/components/log/Log.stories.tsx +0 -333
  640. package/src/components/log/Log.tsx +0 -285
  641. package/src/components/menu/Menu.stories.tsx +0 -155
  642. package/src/components/menu/Menu.tsx +0 -312
  643. package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +0 -797
  644. package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +0 -105
  645. package/src/components/qonsoleSmartInput/index.ts +0 -16
  646. package/src/components/qonsoleSmartInput/qonsoleInserter.ts +0 -77
  647. package/src/components/qonsoleSmartInput/types.ts +0 -133
  648. package/src/components/qonsoleSmartInput/useQonsoleSession.ts +0 -124
  649. package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +0 -62
  650. package/src/components/searchFilterBar/SearchFilterBar.tsx +0 -144
  651. package/src/components/searchFilterBar/index.ts +0 -1
  652. package/src/components/smartEditor/MarkdownDoc.tsx +0 -190
  653. package/src/components/smartEditor/SmartEditor.stories.tsx +0 -475
  654. package/src/components/smartEditor/SmartEditor.tsx +0 -808
  655. package/src/components/smartEditor/__fixtures__/mockLspServer.ts +0 -205
  656. package/src/components/smartEditor/helpers.ts +0 -217
  657. package/src/components/smartEditor/index.ts +0 -35
  658. package/src/components/smartEditor/styling.ts +0 -45
  659. package/src/components/smartEditor/types.ts +0 -211
  660. package/src/components/smartEditor/useLspAutocomplete.ts +0 -758
  661. package/src/components/smartEditor/useLspDiagnosticDecorations.ts +0 -125
  662. package/src/components/smartEditor/useLspHover.ts +0 -230
  663. package/src/components/smartEditor/useLspSemanticTokens.ts +0 -298
  664. package/src/components/smartEditor/useLspSession.ts +0 -231
  665. package/src/components/smartEditor/useLspSignatureHelp.ts +0 -198
  666. package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -171
  667. package/src/components/supportTicket/AttachmentChips.tsx +0 -147
  668. package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -257
  669. package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -129
  670. package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -584
  671. package/src/components/supportTicket/ReferencePicker.tsx +0 -563
  672. package/src/components/supportTicket/TicketConversation.stories.tsx +0 -121
  673. package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
  674. package/src/components/supportTicket/TicketHeader.tsx +0 -247
  675. package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
  676. package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
  677. package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -354
  678. package/src/components/supportTicket/TicketReplyBox.tsx +0 -150
  679. package/src/components/supportTicket/__fixtures__/kindMarks.ts +0 -28
  680. package/src/components/supportTicket/attachmentAccess.ts +0 -97
  681. package/src/components/supportTicket/fileToAttachment.ts +0 -24
  682. package/src/components/supportTicket/index.ts +0 -10
  683. package/src/components/supportTicket/meta.ts +0 -206
  684. package/src/components/supportTicket/ticketModel.ts +0 -131
  685. package/src/components/supportTicket/useLoadedImages.ts +0 -73
  686. package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -315
  687. package/src/components/ticketReferences/TicketReferences.tsx +0 -906
  688. package/src/components/ticketReferences/index.ts +0 -2
  689. package/src/components/ticketThread/TicketThread.stories.tsx +0 -829
  690. package/src/components/ticketThread/TicketThread.tsx +0 -719
  691. package/src/components/ticketThread/index.ts +0 -6
  692. package/src/contexts/FetchContext.tsx +0 -25
  693. package/src/contexts/ReqraftContext.tsx +0 -9
  694. package/src/contexts/StorageContext.tsx +0 -33
  695. package/src/global.d.ts +0 -4
  696. package/src/helpers/allowedValues.ts +0 -249
  697. package/src/helpers/choiceChip.ts +0 -227
  698. package/src/helpers/common.ts +0 -326
  699. package/src/helpers/dpqlDetection.ts +0 -209
  700. package/src/helpers/expressions.ts +0 -140
  701. package/src/helpers/optionUiTypes.ts +0 -199
  702. package/src/helpers/options.ts +0 -150
  703. package/src/helpers/providerValue.ts +0 -125
  704. package/src/helpers/scrollbar.ts +0 -32
  705. package/src/helpers/singleLineString.ts +0 -61
  706. package/src/helpers/templateItems.ts +0 -81
  707. package/src/helpers/templateText.ts +0 -350
  708. package/src/helpers/templates.ts +0 -602
  709. package/src/helpers/validations.ts +0 -2085
  710. package/src/hooks/useArgSchema.ts +0 -37
  711. package/src/hooks/useCoarsePointer.ts +0 -30
  712. package/src/hooks/useFetch/useFetch.stories.tsx +0 -379
  713. package/src/hooks/useFetch/useFetch.tsx +0 -154
  714. package/src/hooks/usePhoneViewport.ts +0 -34
  715. package/src/hooks/useQorusTypes.ts +0 -233
  716. package/src/hooks/useReqraftProperty.ts +0 -16
  717. package/src/hooks/useStorage/useStorage.stories.tsx +0 -168
  718. package/src/hooks/useStorage/useStorage.ts +0 -35
  719. package/src/hooks/useTemplates.ts +0 -123
  720. package/src/hooks/useValidation.ts +0 -9
  721. package/src/hooks/useWebSocket/useWebSocket.ts +0 -224
  722. package/src/hooks/useWebSocket/useWebsocket.stories.tsx +0 -640
  723. package/src/hooks/useWhyDidYouUpdate.ts +0 -38
  724. package/src/index.tsx +0 -86
  725. package/src/providers/FetchProvider.tsx +0 -40
  726. package/src/providers/ReqraftProvider.tsx +0 -52
  727. package/src/providers/StorageProvider.tsx +0 -131
  728. package/src/stores/currentUser/currentUser.stories.tsx +0 -100
  729. package/src/stores/currentUser/currentUser.tsx +0 -94
  730. package/src/stories/Data/fileFieldArgSchema.json +0 -86
  731. package/src/stories/Tests/utils.ts +0 -320
  732. package/src/stories/storyNetwork.ts +0 -92
  733. package/src/stories/tracking.tsx +0 -206
  734. package/src/tracking/browser/attach.ts +0 -186
  735. package/src/tracking/browser/env.ts +0 -78
  736. package/src/tracking/core/consent.ts +0 -37
  737. package/src/tracking/core/engagement.ts +0 -47
  738. package/src/tracking/core/experiments.ts +0 -258
  739. package/src/tracking/core/hash.ts +0 -26
  740. package/src/tracking/core/ids.ts +0 -25
  741. package/src/tracking/core/observable.ts +0 -23
  742. package/src/tracking/core/queue.ts +0 -131
  743. package/src/tracking/core/sections.ts +0 -166
  744. package/src/tracking/core/storage.ts +0 -69
  745. package/src/tracking/core/tracker.ts +0 -417
  746. package/src/tracking/core/types.ts +0 -162
  747. package/src/tracking/core/utm.ts +0 -23
  748. package/src/tracking/index.ts +0 -72
  749. package/src/tracking/markup.ts +0 -17
  750. package/src/tracking/react/Experiment.tsx +0 -44
  751. package/src/tracking/react/TrackingProvider.tsx +0 -56
  752. package/src/tracking/react/hooks.ts +0 -106
  753. package/src/tracking/react/index.ts +0 -13
  754. package/src/tracking/testing.ts +0 -108
  755. package/src/tracking/ui/ExperimentCard.stories.tsx +0 -296
  756. package/src/tracking/ui/ExperimentCard.tsx +0 -667
  757. package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -155
  758. package/src/tracking/ui/ExperimentsOverlay.tsx +0 -437
  759. package/src/tracking/ui/anchor.ts +0 -180
  760. package/src/tracking/ui/card.ts +0 -464
  761. package/src/tracking/ui/client.ts +0 -117
  762. package/src/tracking/ui/index.ts +0 -77
  763. package/src/tracking/ui/types.ts +0 -110
  764. package/src/tracking/ui/useExperimentsAdmin.ts +0 -103
  765. package/src/types/Form.ts +0 -29
  766. package/src/types.ts +0 -14
  767. package/src/utils/datetime.ts +0 -10
  768. package/src/utils/fetch.ts +0 -457
  769. package/src/utils/lspClient.ts +0 -711
  770. package/src/utils/lspClient.types.ts +0 -211
  771. package/src/utils/queryUnlessCancelled.ts +0 -28
  772. package/src/utils/websocket.ts +0 -293
  773. package/vite.config.ts +0 -58
  774. package/vitest.config.ts +0 -69
@@ -1,1164 +0,0 @@
1
- // Verbatim port of qorus-ide `src/components/Field/auto.tsx` — keep edits to
2
- // the documented seams (leaf-API `onChange` adaptation, `query()`/`FormEngine`
3
- // swaps) so it stays in sync with the IDE. Intentionally-unported IDE types
4
- // and the full seam list live in `.tasks/FIELD_STACK_REPORT.md`.
5
- import {
6
- ReqoreButton,
7
- ReqoreControlGroup,
8
- ReqoreErrorBoundary,
9
- ReqoreMessage,
10
- ReqoreTag,
11
- } from '@qoretechnologies/reqore';
12
- import { IReqoreFormTemplates } from '@qoretechnologies/reqore/dist/components/Textarea';
13
- import { IWithReqoreSize } from '@qoretechnologies/reqore/dist/types/global';
14
- import { TQorusFormFieldSchema, TQorusType } from '@qoretechnologies/ts-toolkit';
15
- import { isEqual, size, uniqBy } from 'lodash';
16
- import React, { memo, useCallback, useEffect, useState } from 'react';
17
- import { useUpdateEffect } from 'react-use';
18
- import useMount from 'react-use/lib/useMount';
19
- import { typedToYaml, yamlToTyped } from '../../../../helpers/common';
20
- import { getListElementValue } from '../../../../helpers/options';
21
- import { isSingleLineStringType } from '../../../../helpers/singleLineString';
22
- import {
23
- getTypeFromValue,
24
- getValueOrDefaultValue,
25
- maybeParseYaml,
26
- } from '../../../../helpers/validations';
27
- import { useWhyDidYouUpdate } from '../../../../hooks/useWhyDidYouUpdate';
28
- import { isQueryCancelled, query } from '../../../../utils/fetch';
29
- import { DpqlEditor } from '../../../dpqlEditor';
30
- import { FormEngine, IOptionsSchema } from '../../engine/FormEngine';
31
- import {
32
- FieldAllowedValues,
33
- FieldAllowedValuesCheckGroup,
34
- rendersCreatableValueSelect,
35
- } from '../allowed-values/AllowedValues';
36
- import { ArrayAuto } from '../array/ArrayAuto';
37
- import BooleanFormField from '../boolean/Boolean';
38
- import { ByteSizeFormField } from '../byte-size/ByteSize';
39
- import { TimeoutFormField } from '../timeout/Timeout';
40
- import ColorFormField from '../color/Color';
41
- import CronFormField from '../cron/Cron';
42
- import { DateFormField } from '../date/Date';
43
- import { IFileFormFieldValue, ReqraftFileFormField } from '../file/File';
44
- import LongStringFormField from '../long-string/LongString';
45
- import MarkdownFormField from '../markdown/Markdown';
46
- import { MultiSelectFormField } from '../multi-select/MultiSelectFormField';
47
- import NumberFormField from '../number/Number';
48
- import { ReqraftObjectFormField } from '../object/Object';
49
- import RadioGroupFormField from '../radio-group/RadioGroup';
50
- import { RichTextFormField } from '../rich-text/RichText';
51
- import { SchemaDefinitionEditor } from '../schema-definition';
52
- import { IDataSchemaDefinition } from '../schema-definition/types';
53
- import { ISelectFormFieldItem, SelectFormField } from '../select/Select';
54
- import { StringFormField } from '../string/String';
55
- import { UrlFormField } from '../url/Url';
56
- import { FormFieldsSkeleton } from '../../engine/FormFieldsSkeleton';
57
- import { isUntypedOptionType } from '../../../../helpers/optionUiTypes';
58
-
59
- /** UI superset of `TQorusType` — the IDE's `Field/systemOptions` `IQorusType`. */
60
- export type IQorusType = TQorusType | string;
61
-
62
- export interface IAutoFieldProps
63
- extends
64
- IWithReqoreSize,
65
- Omit<
66
- TQorusFormFieldSchema,
67
- 'get_message' | 'return_message' | 'on_change' | 'type' | 'arg_schema' | 'ui_type'
68
- > {
69
- name?: string;
70
- /**
71
- * The editor the schema asks for. Optional here although the shared
72
- * descriptor requires it: the field renders from `type` / `defaultType` when
73
- * there is none, and reads this only to pick an override or a special editor.
74
- */
75
- ui_type?: IQorusType;
76
- value?: any;
77
- default_value?: any;
78
- type?: IQorusType;
79
- onChange?: (name: string, value: any, type?: IQorusType, canBeNull?: boolean) => void;
80
- /** From IDE FieldWrapper `IField` — lets `type-depends-on` query sibling fields. */
81
- requestFieldData?: (name: string, key: string) => any;
82
- canBeNull?: boolean;
83
- disabled?: boolean;
84
- readonly?: boolean;
85
- uniqueName?: string;
86
-
87
- arg_schema?: string | IOptionsSchema;
88
- /** Render the arg_schema sub-form in compact (read-first) mode, matching the
89
- * parent engine. */
90
- compact?: boolean;
91
- /** Open the arg_schema sub-form's first attention row on mount, without taking
92
- * focus — see FormEngine's `expandFirstRequired`. Set by ArrayAuto on a
93
- * just-added row so its required choice is visible without a second click. */
94
- expandFirstRequired?: boolean;
95
- path?: string;
96
- column?: boolean;
97
- level?: number;
98
- defaultType?: IQorusType;
99
- defaultInternalType?: IQorusType;
100
- /**
101
- * @deprecated Inert: the type picker never offers a soft type (see
102
- * `getImmediateValueTypes`). Kept so existing callers still compile.
103
- */
104
- noSoft?: boolean;
105
-
106
- /** SEAM: inert in reqraft — saved-values storage is IDE-only. */
107
- allowSaving?: boolean;
108
- /** SEAM: inert in reqraft — saved-values storage is IDE-only. */
109
- showSavedValues?: boolean;
110
-
111
- app?: string;
112
- action?: string;
113
-
114
- isConfigItem?: boolean;
115
- isVariable?: boolean;
116
- disableSearchOptions?: boolean;
117
- disableManagement?: boolean;
118
-
119
- allowedTypes?: { name: IQorusType; display_name?: string }[];
120
- allowTemplates?: boolean;
121
-
122
- fluid?: boolean;
123
-
124
- showDescription?: boolean;
125
-
126
- templates?: IReqoreFormTemplates;
127
- metadata?: ISelectFormFieldItem['metadata'];
128
-
129
- /**
130
- * SEAM (reqraft): per-type editor injection — checked by `type` /
131
- * `ui_type` before the built-in switch. The IDE re-injects its own
132
- * editors (InterfaceSelector, ConnectorField, CodeEditor, …) here at the
133
- * dedupe phase; without an override those types render the verbatim
134
- * "Unknown type!" tag.
135
- */
136
- componentOverrides?: Record<string, React.FC<any>>;
137
-
138
- [key: string]: any;
139
- }
140
-
141
- /**
142
- * The types the picker offers for a value typed into this field.
143
- *
144
- * No Qore soft type (`softint`, `softstring`, `softlist`, …) is among them. A
145
- * soft type is a DECLARATION: it says that whatever a variable or parameter is
146
- * given is converted to the base type. A value typed in here is already a
147
- * literal of the type its editor makes, so there is nothing to convert and no
148
- * editor of its own to draw — the picker used to offer them anyway, and each
149
- * one drew "Unknown type!".
150
- */
151
- export const getImmediateValueTypes = (): { name: IQorusType; display_name: string }[] => [
152
- { name: 'bool', display_name: 'True/False' },
153
- { name: 'date', display_name: 'Date' },
154
- { name: 'string', display_name: 'Text' },
155
- { name: 'binary', display_name: 'Binary' },
156
- { name: 'float', display_name: 'Decimal' },
157
- { name: 'list', display_name: 'List' },
158
- { name: 'hash', display_name: 'Key/Value {}' },
159
- { name: 'int', display_name: 'Integer' },
160
- { name: 'rgbcolor', display_name: 'RGB Color' },
161
- ];
162
-
163
- /** @deprecated Use `getImmediateValueTypes()`; every picker now offers this list. */
164
- export const DefaultNoSoftTypes = getImmediateValueTypes();
165
-
166
- /**
167
- * The type a value is EDITED as: a soft type is edited as its base type.
168
- *
169
- * A soft type still reaches this field from data saved before the picker
170
- * stopped offering them, and from a declared type the server sends (an option
171
- * or a config item declared `softint`). It is shown and edited as the base
172
- * type it converts to, so that value keeps its editor; the declared type
173
- * itself is left as it is and is what the field reports back.
174
- */
175
- export const editorTypeOf = <T extends string | undefined | null>(type: T): T =>
176
- (typeof type === 'string' && /^soft[a-z]/.test(type) ? type.slice(4) : type) as T;
177
-
178
- function AutoField<T = any>({
179
- name,
180
- onChange,
181
- value,
182
- default_value,
183
- defaultType,
184
- defaultInternalType,
185
- requestFieldData,
186
- type,
187
- // Inert (deprecated); destructured so it does not land in `...rest`.
188
- noSoft, // eslint-disable-line @typescript-eslint/no-unused-vars
189
- path,
190
- arg_schema,
191
- compact,
192
- column,
193
- level = 0,
194
- canBeNull,
195
- isConfigItem,
196
- isVariable,
197
- allowedTypes,
198
- element_type,
199
- ui_element_type,
200
- disableManagement,
201
- allowSaving,
202
- showSavedValues,
203
- uniqueName,
204
- componentOverrides,
205
- // qorus#347-followup (scope forwarding): destructure so it does NOT
206
- // land in `...rest` — otherwise the primitive field renderers spread
207
- // rest onto DOM nodes and React warns about the unknown attribute.
208
- // Only the nested arg_schema mount sites re-forward this into their
209
- // sub-forms explicitly.
210
- inheritedFromParent,
211
- // Destructured for the same reason as `inheritedFromParent`: only the nested
212
- // sub-form mount site consumes it, and leaving it in `...rest` would spread an
213
- // unknown attribute onto the primitive field renderers' DOM nodes.
214
- expandFirstRequired,
215
- ...rest
216
- }: IAutoFieldProps & T) {
217
- const [currentType, setType] = useState<IQorusType>(defaultInternalType || null);
218
- const [storedInternalType, setInternalType] = useState<IQorusType>(
219
- defaultInternalType || 'any'
220
- );
221
- // What the value is edited as; see `editorTypeOf`.
222
- const currentInternalType = editorTypeOf(storedInternalType);
223
- const [isSetToNull, setIsSetToNull] = useState<boolean>(false);
224
- const [finalArgSchema, setFinalArgSchema] = useState<IOptionsSchema>(
225
- typeof arg_schema === 'string' ? undefined : arg_schema
226
- );
227
- const [error, setError] = useState<string>();
228
-
229
- useWhyDidYouUpdate(`Auto field ${name} ${currentType}`, {
230
- name,
231
- onChange,
232
- value,
233
- default_value,
234
- defaultType,
235
- defaultInternalType,
236
- requestFieldData,
237
- type,
238
- path,
239
- arg_schema,
240
- column,
241
- level,
242
- canBeNull,
243
- isConfigItem,
244
- isVariable,
245
- allowedTypes,
246
- element_type,
247
- disableManagement,
248
- allowSaving,
249
- showSavedValues,
250
- uniqueName,
251
- ...rest,
252
- });
253
-
254
- // Some arg schemas are not provided as objects, but as strings
255
- // so we need to fetch them
256
- useEffect(() => {
257
- if (typeof arg_schema === 'string') {
258
- (async () => {
259
- /* The await is guarded because `query` can REJECT rather than answer
260
- `{ ok: false }` — a malformed instance URL, an aborted request, a
261
- transport error. Unguarded, that rejection escaped the async IIFE as
262
- an unhandled promise rejection, `setError` never ran, `finalArgSchema`
263
- stayed undefined, and the field showed "Loading field data..." for the
264
- life of the form: a request that failed instantly and a request that
265
- is merely slow looked exactly the same, forever. */
266
- try {
267
- const schema = await query<IOptionsSchema>({
268
- url: `dataprovider/arg_schemas/${arg_schema}`,
269
- method: 'GET',
270
- });
271
-
272
- if (schema.ok) {
273
- setError(undefined);
274
- setFinalArgSchema(schema.data);
275
- } else {
276
- setError(schema.error ?? `The schema "${arg_schema}" could not be loaded.`);
277
- }
278
- } catch (fetchError) {
279
- // abandoned (the query cache was cleared mid-flight), not refused:
280
- // there is no schema that "could not be loaded" to report
281
- if (isQueryCancelled(fetchError)) {
282
- return;
283
- }
284
- setError(
285
- fetchError instanceof Error ?
286
- fetchError.message
287
- : `The schema "${arg_schema}" could not be loaded.`
288
- );
289
- }
290
- })();
291
- } else {
292
- setError(undefined);
293
- setFinalArgSchema(arg_schema);
294
- }
295
- }, [JSON.stringify(arg_schema)]);
296
-
297
- useMount(() => {
298
- let defType: IQorusType = defaultType && (defaultType.replace(/"/g, '').trim() as any);
299
-
300
- // If default type was not provided, get the type from the value
301
- if (!defType) {
302
- defType = getTypeFromValue(maybeParseYaml(value)) as IQorusType;
303
- }
304
-
305
- let internalType: IQorusType;
306
- // If value already exists, but the type is auto or any
307
- // set the type based on the value
308
- if (value && isUntypedOptionType(defType) && !defaultInternalType) {
309
- internalType = getTypeFromValue(maybeParseYaml(value)) as IQorusType;
310
- } else {
311
- internalType = defaultInternalType || defType;
312
- }
313
-
314
- setInternalType(internalType);
315
- setType(defType);
316
- // If the value is null and can be null, set the null flag
317
- if (
318
- (getValueOrDefaultValue(value, default_value, _canBeNull(defType)) === 'null' ||
319
- getValueOrDefaultValue(value, default_value, _canBeNull(defType)) === null) &&
320
- _canBeNull(defType)
321
- ) {
322
- setIsSetToNull(true);
323
- }
324
- });
325
-
326
- useUpdateEffect(() => {
327
- if (defaultType && storedInternalType !== defaultType) {
328
- setType(defaultType);
329
- setInternalType(defaultType);
330
- }
331
- }, [defaultType]);
332
-
333
- useEffect(() => {
334
- // Auto field type depends on other fields' value
335
- // which will be used as a type
336
- if (rest['type-depends-on']) {
337
- // Get the requested type
338
- const typeValue: IQorusType = requestFieldData(rest['type-depends-on'], 'value');
339
- // Check if the field has the value set yet
340
- if (typeValue && typeValue !== currentType) {
341
- // If this is auto / any field
342
- // set the internal type
343
- if (isUntypedOptionType(typeValue)) {
344
- setInternalType(value ? (getTypeFromValue(maybeParseYaml(value)) as IQorusType) : 'any');
345
- } else {
346
- setInternalType(typeValue);
347
- }
348
- // Set the new type
349
- setType(typeValue);
350
- if (!currentType) {
351
- handleChange(name, value === undefined ? undefined : value, typeValue);
352
- } else if (typeValue !== 'any') {
353
- const typeFromValue =
354
- value || value === null ? getTypeFromValue(maybeParseYaml(value)) : 'any';
355
-
356
- handleChange(
357
- name,
358
- value === null ? null : typeValue === typeFromValue ? value : undefined,
359
- typeValue
360
- );
361
- }
362
- }
363
- }
364
- // If can be undefined was toggled off, but the value right now is null
365
- // we need to set the ability to be null to false and remove
366
- if (!_canBeNull() && isSetToNull) {
367
- setIsSetToNull(false);
368
- handleChange(name, null);
369
- }
370
- });
371
-
372
- const _canBeNull = (type = currentType) => {
373
- if (type === 'any' || canBeNull) {
374
- return true;
375
- }
376
-
377
- if (requestFieldData) {
378
- return requestFieldData('can_be_undefined', 'value');
379
- }
380
-
381
- return false;
382
- };
383
-
384
- const handleChange: (name: string, val: any, type?: IQorusType) => void = useCallback(
385
- (name, val, type) => {
386
- const returnType: IQorusType = type || currentType;
387
- // Run the onchange
388
- if (onChange && returnType) {
389
- onChange(name, val, returnType, _canBeNull(returnType));
390
- }
391
- },
392
- [currentInternalType, currentType, onChange]
393
- );
394
-
395
- const handleListObjectChange = useCallback(
396
- (name, val, type) => {
397
- const typedValue = yamlToTyped(val);
398
- handleChange(name, typedValue?.value, type);
399
- },
400
- [handleChange]
401
- );
402
-
403
- const handleTypeChange: (name: string, type?: IQorusType) => void = (name, type) => {
404
- // Run the onchange
405
- onChange?.(name, null, 'auto');
406
- setInternalType(type);
407
- };
408
-
409
- const handleNullToggle = () => {
410
- setType(defaultType || 'any');
411
- setInternalType(defaultType || 'any');
412
- setIsSetToNull((current) => {
413
- return !current;
414
- });
415
-
416
- // Handle change
417
- handleChange(name, isSetToNull ? undefined : null);
418
- };
419
-
420
- // SEAM (reqraft): consumer-injected editors for types reqraft doesn't
421
- // ship (the IDE's processor-mappings, tool-catalog, test-cases,
422
- // active-windows, collection-documents, data-provider, interface
423
- // selectors, code-editor, …).
424
- const Override =
425
- componentOverrides?.[type as string] || componentOverrides?.[(rest as any).ui_type];
426
- if (Override) {
427
- return (
428
- <Override
429
- {...rest}
430
- // The field's SHAPE, which `rest` does not carry: these three are
431
- // destructured into named props above, so a host editor received a
432
- // field it could not describe. `arg_schema` is the sub-schema a host
433
- // sub-form renders FROM — without it the IDE's test-cases drawer fell
434
- // back to humanising each key, so `Path`, `Actual` and `Expected` were
435
- // asked for with no label of their own and no description, while the
436
- // text sat one fetch away. `element_type`/`ui_element_type` travel with
437
- // it: a sub-schema alone cannot say whether the value is one hash or a
438
- // list of them.
439
- arg_schema={arg_schema}
440
- element_type={element_type}
441
- ui_element_type={ui_element_type}
442
- // Same reason as the three above: it is destructured out of `rest` so the
443
- // primitive renderers do not spread it onto a DOM node, which also took
444
- // it away from host editors — and a host editor is exactly what
445
- // `inherit_props` exists to feed. A field declaring it got the values
446
- // resolved and then had nowhere to send them, so every consumer
447
- // downstream saw `undefined` and silently did nothing.
448
- inheritedFromParent={inheritedFromParent}
449
- name={name}
450
- value={value}
451
- onChange={(val: any, emittedType?: IQorusType, emittedIsFunction?: boolean) => {
452
- const returnType = emittedType || currentType;
453
- if (onChange && returnType) {
454
- onChange(name, val, returnType, emittedIsFunction);
455
- }
456
- }}
457
- />
458
- );
459
- }
460
-
461
- // Render the structured DataSchema editor for the schema object's
462
- // `definition` hash — server-driven via `?action=options` (qorus#225).
463
- if (
464
- (type as string) === 'schema-definition' ||
465
- (rest as any).ui_type === 'schema-definition'
466
- ) {
467
- return (
468
- <SchemaDefinitionEditor
469
- {...((rest as any).fieldProps || {})}
470
- value={
471
- value === null || value === undefined
472
- ? undefined
473
- : (value as IDataSchemaDefinition)
474
- }
475
- onChange={(definition) => handleChange(name, definition, 'hash')}
476
- readOnly={rest.readonly || rest.disabled}
477
- />
478
- );
479
- }
480
-
481
- // Render the Monaco DPQL editor for a DPQL match-expression field
482
- // (alert rules / silences opt their `match` field in via `ui_type`).
483
- if ((type as string) === 'dpql' || (rest as any).ui_type === 'dpql') {
484
- return (
485
- <DpqlEditor
486
- value={typeof value === 'string' ? value : value == null ? '' : String(value)}
487
- onChange={(next) => handleChange(name, next, 'string')}
488
- readOnly={rest.readonly || rest.disabled}
489
- />
490
- );
491
- }
492
-
493
- /* The error is checked BEFORE the spinner, and the spinner waits on the error
494
- being absent.
495
-
496
- A named `arg_schema` is fetched (`dataprovider/arg_schemas/<name>`), and when
497
- that fetch failed `finalArgSchema` stayed undefined forever — so this spinner
498
- returned on every subsequent render and the `if (error)` branch further down
499
- was unreachable. The field sat on "Loading field data..." for the life of the
500
- form with no way to find out why, which is indistinguishable from a request
501
- that is merely slow. */
502
- if (arg_schema && !finalArgSchema && error) {
503
- return (
504
- <ReqoreMessage intent='danger' size='small'>
505
- {error}
506
- </ReqoreMessage>
507
- );
508
- }
509
-
510
- if (arg_schema && !finalArgSchema) {
511
- /* One ROW, because this stands in for one field. It was a spinner reading
512
- "Loading field data…", which is a different picture from every other
513
- wait on the page and announces a delay the reader cannot act on. */
514
- return <FormFieldsSkeleton rows={1} reason='arg-schema' />;
515
- }
516
-
517
- const renderAllowedValues = (currentType: IQorusType) => {
518
- if (rest.allowed_values_creatable && (!currentInternalType || currentInternalType === 'auto')) {
519
- return null;
520
- }
521
-
522
- return (
523
- <FieldAllowedValues
524
- items={rest.allowed_values}
525
- type={currentType as TQorusType}
526
- elementType={ui_element_type || element_type}
527
- value={value}
528
- name={name}
529
- onChange={handleChange}
530
- // The picker heads itself with the field's own name rather than a
531
- // generic "Select one:".
532
- label={rest.display_name}
533
- size={rest.size}
534
- disabled={rest.disabled}
535
- app={rest.app}
536
- action={rest.action}
537
- showDescription={rest.showDescription}
538
- forceDropdown={rest.forceDropdown}
539
- allowCreation={rest.allowed_values_creatable}
540
- showSavedValues={showSavedValues}
541
- readOnly={rest.readonly}
542
- canAutoSelect={!size(rest.required_groups)}
543
- />
544
- );
545
- };
546
-
547
- /* Text that may hold template references is edited in the chip editor
548
- whenever the field offers templates (`RichTextFormField`, `text` format):
549
- each reference is drawn as the name it was chosen by and the value stays the
550
- plain string. Text holding a reference anywhere but its start
551
- (`Interface $local:id failed`) never enters template mode, so in a textarea
552
- its references read as their spelling. */
553
- const offersTemplates = rest.allowTemplates !== false && size(rest.templates?.items) > 0;
554
- const renderTextEditor = (editorType: string) =>
555
- offersTemplates ?
556
- <RichTextFormField
557
- {...rest}
558
- valueFormat='text'
559
- singleLine={isSingleLineStringType(editorType)}
560
- allowTemplates
561
- /* Stringified rather than blanked: an `auto` field resolved to a text
562
- type can be holding a number, and showing an empty box for it reads
563
- as the value having been lost. A non-string coming back out is not a
564
- value this editor produced, so it is ignored rather than written as
565
- '' over what is there. */
566
- value={String(value ?? '')}
567
- onChange={(next) => {
568
- if (typeof next !== 'string') {
569
- return;
570
- }
571
- handleChange(name, next);
572
- }}
573
- />
574
- : <LongStringFormField
575
- {...rest}
576
- type={editorType}
577
- onChange={(next) => handleChange(name, next)}
578
- value={value}
579
- />;
580
-
581
- const renderField = (currentType: IQorusType) => {
582
- // If this field is set to null
583
- if (isSetToNull) {
584
- // Render a readonly field with null
585
- return <StringFormField value='null' readOnly />;
586
- }
587
-
588
- if (!currentType) {
589
- return null;
590
- }
591
- // Check if there is a `<` in the type
592
- const pos: number = (currentType as string).indexOf('<');
593
-
594
- if (pos > 0) {
595
- // Get the type from start to the position of the `<`
596
- currentType = (currentType as string).slice(0, pos) as IQorusType;
597
- }
598
-
599
- // Readonly fields whose value is a primitive (string / number / boolean)
600
- // get the compact button shortcut below. Complex values — Slate
601
- // documents for richtext, lists, hashes — MUST fall through to the
602
- // switch-case so their kind-specific renderer (RichTextField,
603
- // LongStringField, …) handles the read-only display. Rendering a Slate
604
- // doc as a ReqoreButton label otherwise lands an object in JSX
605
- // children and React crashes with "Objects are not valid as a React
606
- // child (found: object with keys {type, children})".
607
- const isPrimitiveValue =
608
- value === null ||
609
- value === undefined ||
610
- typeof value === 'string' ||
611
- typeof value === 'number' ||
612
- typeof value === 'boolean';
613
-
614
- if (rest.readonly && isPrimitiveValue) {
615
- return (
616
- <ReqoreButton
617
- readOnly
618
- fluid
619
- label={value === default_value ? rest.default_value_display_name || value : value}
620
- customTheme={{
621
- main: 'main:darken:2',
622
- }}
623
- description={value === default_value ? rest.default_value_desc : undefined}
624
- />
625
- );
626
- }
627
-
628
- // A creatable string field's value is held by the chip picker that
629
- // `renderAllowedValues` draws below, so a raw editor here would be a
630
- // second control for the same value.
631
- if (
632
- rendersCreatableValueSelect(
633
- currentType,
634
- rest.allowed_values_creatable,
635
- rest.allowed_values
636
- )
637
- ) {
638
- return null;
639
- }
640
-
641
- // Non-creatable allowed_values render through FieldAllowedValues
642
- // (`renderAllowedValues` below) — a radio CheckGroup for ≤3 simple values, a
643
- // Select otherwise — matching the IDE (which returns null here). `enum` is the
644
- // exception: FieldAllowedValues skips it (it has its own `case 'enum'` radio
645
- // renderer), so let enum fall through. f5f2e11 had returned a second RadioGroup
646
- // here, which duplicated FieldAllowedValues for string allowed-value fields.
647
- if (rest.allowed_values && !rest.allowed_values_creatable && currentType !== 'enum') {
648
- return null;
649
- }
650
-
651
- const renderFieldComponent = () => {
652
- // Render the field based on the type. SEAM (reqraft): `long-string` is
653
- // reqraft FormField vocabulary — the IDE calls it `string` (both render
654
- // the textarea field).
655
- switch (currentType) {
656
- /* These four share an editor but not a shape: a `string` holds exactly
657
- one line, while `data`, `binary` and `long-string` hold a document.
658
- Without the type the field cannot tell them apart and treats them all
659
- as documents, so an interface's Internal Name — which becomes a YAML
660
- key — accepted Enter. Only text takes references; `data` and
661
- `binary` are encoded content, where a chip would stand for nothing. */
662
- case 'string':
663
- case 'long-string':
664
- return renderTextEditor(currentType);
665
- case 'data':
666
- case 'binary':
667
- return (
668
- <LongStringFormField
669
- {...rest}
670
- /* Say what the field takes before it is typed into. The server
671
- decodes a binary value as base64 unless it is told otherwise
672
- (`lib/misc.ql` `_priv_parse_ui_hash_value_intern`, symmetric
673
- with the `toBase64()` it encodes with), and bare hex is the
674
- trap: it is not rejected, it is read as base64 and corrupts.
675
- `validateField` already accepts exactly these three spellings
676
- — this is that rule said up front instead of after the fact.
677
- Kept short enough to read in one line at phone width, where a
678
- longer hint wrapped out of the field's single visible row. */
679
- placeholder={
680
- currentType === 'binary' ?
681
- ((rest as { placeholder?: string }).placeholder ??
682
- 'Base64, 0x hex, or data: URL')
683
- : (rest as { placeholder?: string }).placeholder
684
- }
685
- type={currentType}
686
- onChange={(value) => handleChange(name, value)}
687
- value={value}
688
- />
689
- );
690
- // reqraft ships these editors (see Field.tsx), but the compact /
691
- // TemplateField path dispatches through AutoFormField — bridge them so
692
- // they render here instead of falling through to "Unknown type!".
693
- case 'markdown':
694
- return (
695
- <MarkdownFormField
696
- {...rest}
697
- onChange={(value) => handleChange(name, value)}
698
- value={value}
699
- />
700
- );
701
- case 'cron':
702
- return (
703
- <CronFormField
704
- {...rest}
705
- onChange={(value) => handleChange(name, value)}
706
- value={value}
707
- />
708
- );
709
- case 'processor':
710
- case 'richtext': {
711
- return (
712
- <RichTextFormField
713
- {...rest}
714
- onChange={(value) => {
715
- handleChange(name, value);
716
- }}
717
- value={value}
718
- />
719
- );
720
- }
721
- case 'bool':
722
- case 'boolean':
723
- return (
724
- <BooleanFormField
725
- {...rest}
726
- checked={!!value}
727
- onChange={(checked) => handleChange(name, checked)}
728
- />
729
- );
730
- case 'date':
731
- return (
732
- <DateFormField
733
- {...rest}
734
- onChange={(val) => handleChange(name, val)}
735
- value={value}
736
- />
737
- );
738
- case 'hash':
739
- case 'free-hash': {
740
- if (finalArgSchema) {
741
- return (
742
- <FormEngine
743
- wrapperPadding='top'
744
- flat
745
- compact={compact}
746
- // A row added just now: open the field it cannot be saved
747
- // without, instead of making the author find it and click it.
748
- expandFirstRequired={expandFirstRequired}
749
- // Embedded sub-form: no scroll context of its own, so its toolbar
750
- // isn't sticky and its header stays transparent (no dark backdrop).
751
- compactNested
752
- name={name}
753
- uniqueName={uniqueName}
754
- options={finalArgSchema}
755
- value={value === null ? undefined : value}
756
- templateFieldProps={{
757
- level: level + 1,
758
- }}
759
- allowTemplates
760
- onChange={(name, value) => {
761
- handleChange(name, value, 'hash');
762
- }}
763
- columns={1}
764
- minColumnWidth='150px'
765
- stringTemplates={rest.templates}
766
- size={rest.size}
767
- disabled={rest.disabled}
768
- // Forward consumer-injected editors into the nested sub-form
769
- // so its own fields can render host-injected types (e.g. a
770
- // `code-editor` override for a `body` sub-field inside a
771
- // list-of-hash row). Was missing pre-qorus#347-followup —
772
- // catches an existing gap surfaced by the nested inherit_props
773
- // story.
774
- componentOverrides={componentOverrides}
775
- // qorus#347-followup (scope forwarding): thread the accumulated
776
- // inheritance bag into the nested sub-form so its own fields'
777
- // `inherit_props` can reach ancestor-scope values (e.g. a
778
- // service-method row's `body` picking up `language` from the
779
- // parent service form). The parent FormEngine populates this
780
- // via TemplateField -> AutoFormField's `rest`.
781
- inheritedFromParent={inheritedFromParent}
782
- />
783
- );
784
- }
785
-
786
- const yamlValue = value ? typedToYaml({ type: 'hash', value }) : value;
787
-
788
- return (
789
- <ReqraftObjectFormField
790
- value={yamlValue}
791
- onChange={(value) => handleListObjectChange(name, value, 'hash')}
792
- type='object'
793
- dataType='yaml'
794
- resultDataType='yaml'
795
- {...rest}
796
- />
797
- );
798
- }
799
- case 'list':
800
- case 'free-list': {
801
- if (
802
- ui_element_type ||
803
- element_type ||
804
- (rest.element_allowed_values && !rest.element_allowed_values_creatable)
805
- ) {
806
- const formatToServerValue = (value) => {
807
- return (value || []).map((item) => {
808
- // If this value is actually in allowed values, just return it
809
- if (rest.element_allowed_values?.find((ev) => isEqual(ev.value, item))) {
810
- return item;
811
- }
812
-
813
- return {
814
- value: item,
815
- type:
816
- ui_element_type ||
817
- element_type ||
818
- rest.element_allowed_values?.find((ev) => isEqual(ev.value, item))?.ui_type,
819
- };
820
- });
821
- };
822
-
823
- // An element may arrive bare or in a `{value, type}` envelope. The
824
- // envelope is what `formatToServerValue` writes, so a list the user
825
- // has edited in this session is always wrapped — but a list read
826
- // back from storage holds exactly what the server contract asks
827
- // for, which for a list of strings is the strings themselves.
828
- // Reaching for `.value` on those answered `undefined` for every
829
- // element: the row rendered as an empty, invalid item, and the
830
- // emptiness was then written back over the stored value.
831
- const formatFromServerValue = (value) => {
832
- return (value || []).map(getListElementValue);
833
- };
834
-
835
- const mappedAllowedValues = rest.element_allowed_values?.map((ev) => ({
836
- ...ev,
837
- value: ev.value?.value,
838
- }));
839
-
840
- if (
841
- rest.element_allowed_values &&
842
- !rest.element_allowed_values_creatable &&
843
- !rest.allowed_values_creatable
844
- ) {
845
- if (size(rest.element_allowed_values) <= 3) {
846
- return (
847
- <FieldAllowedValuesCheckGroup
848
- items={mappedAllowedValues}
849
- value={formatFromServerValue(value)}
850
- multiSelect
851
- onChange={(_name, value) => {
852
- handleChange(name, formatToServerValue(value));
853
- }}
854
- />
855
- );
856
- }
857
-
858
- // the multi-select reads each item's `{type, value}` envelope itself, as Field.tsx gives it;
859
- // handing it the unwrapped values left every choice `undefined`, so a pick stored an empty
860
- // element and drew an "undefined" chip
861
- return (
862
- <MultiSelectFormField
863
- items={rest.element_allowed_values}
864
- value={formatFromServerValue(value)}
865
- onChange={(selected) => {
866
- handleChange(name, formatToServerValue(selected));
867
- }}
868
- disabled={rest.disabled}
869
- size={rest.size}
870
- />
871
- );
872
- }
873
-
874
- const effectiveElementType = ui_element_type || element_type;
875
-
876
- return (
877
- <ArrayAuto
878
- {...rest}
879
- level={level + 1}
880
- arg_schema={finalArgSchema}
881
- name={name}
882
- value={formatFromServerValue(value)}
883
- allowed_values={rest.element_allowed_values}
884
- allowed_values_creatable={rest.element_allowed_values_creatable}
885
- type={effectiveElementType}
886
- // Propagate compact into every row, exactly as the `hash` case
887
- // above does for a single sub-form. `compact` is destructured
888
- // out of `rest`, so without this each row's AutoFormField saw
889
- // `compact: undefined` and its arg_schema sub-form fell back to
890
- // the classic FormEngine — a list-of-hash field inside a compact
891
- // form rendered stacked labels + an option filter, while every
892
- // sibling field rendered as a compact read-first row.
893
- compact={compact}
894
- componentOverrides={componentOverrides}
895
- // qorus#347-followup (scope forwarding): thread the accumulated
896
- // inheritance bag through the list wrapper so each row's
897
- // arg_schema sub-form sees it. ArrayAuto forwards this via
898
- // TemplateField's `rest` into each row's AutoFormField, which
899
- // hands it to the row's nested FormEngine (case 'hash' above).
900
- inheritedFromParent={inheritedFromParent}
901
- onChange={(name, value) => {
902
- if (!size(value)) {
903
- return handleChange(name, undefined);
904
- }
905
-
906
- handleChange(name, formatToServerValue(value));
907
- }}
908
- />
909
- );
910
- }
911
-
912
- const yamlValue = value ? typedToYaml({ type: 'list', value }) : value;
913
-
914
- return (
915
- <ReqraftObjectFormField
916
- value={yamlValue}
917
- onChange={(value) => handleListObjectChange(name, value, 'list')}
918
- type='array'
919
- dataType='yaml'
920
- resultDataType='yaml'
921
- {...rest}
922
- />
923
- );
924
- }
925
- case 'int':
926
- case 'integer':
927
- case 'float':
928
- case 'number':
929
- return (
930
- <NumberFormField
931
- {...rest}
932
- onChange={(value) => handleChange(name, value)}
933
- value={value}
934
- />
935
- );
936
- // A connection's `connect_timeout` / `timeout` arrive from
937
- // `getCreateConnectionOptions` as `type: 'timeout'` with a bare-integer
938
- // default (45000) and an "in milliseconds" description. The value stays
939
- // that integer millisecond count — TimeoutFormField only adds the
940
- // unit-aware display. Extras are trimmed the same way as `byte-size`
941
- // below: `rest` carries `templates`, which would flip the inner
942
- // NumberFormField into its templates-dropdown variant.
943
- case 'timeout':
944
- return (
945
- <TimeoutFormField
946
- value={value}
947
- onChange={(val) => handleChange(name, val)}
948
- disabled={rest.disabled}
949
- readOnly={rest.readonly}
950
- size={rest.size}
951
- aria-label={rest['aria-label']}
952
- />
953
- );
954
- case 'byte-size':
955
- // The IDE spreads `{...rest}` here but its ByteSizeField ignores
956
- // extras — reqraft's forwards them into the amount input, and `rest`
957
- // carries `templates` (which would flip NumberFormField into its
958
- // templates-dropdown variant), so only `aria-label` is forwarded.
959
- return (
960
- <ByteSizeFormField
961
- value={value}
962
- onChange={(val) => handleChange(name, val)}
963
- disabled={rest.disabled}
964
- readOnly={rest.readonly}
965
- size={rest.size}
966
- aria-label={rest['aria-label']}
967
- />
968
- );
969
- case 'enum': {
970
- // Two option shapes describe the same enum: reqraft `allowed_values`
971
- // ({ value: { type, value }, display_name, image }) and the IDE
972
- // `items` ({ value, title, display_name?, image? }). Accept both so a
973
- // server-driven enum field (e.g. language) renders its choices —
974
- // previously only `allowed_values` was read, leaving `items` empty.
975
- const enumItems = (rest.allowed_values as any[] | undefined)?.length
976
- ? (rest.allowed_values as any[]).map((av) => ({
977
- label: av.display_name ?? String(av.value?.value ?? av.value),
978
- value: av.value?.value ?? av.value,
979
- image: av.image,
980
- icon: av.icon,
981
- }))
982
- : ((rest as any).items as any[] | undefined ?? []).map((it) => ({
983
- label: it.display_name ?? it.title ?? String(it.value),
984
- value: it.value,
985
- image: it.image,
986
- icon: it.icon,
987
- }));
988
- return (
989
- <RadioGroupFormField
990
- items={enumItems}
991
- value={value}
992
- onChange={(val) => handleChange(name, val)}
993
- disabled={rest.disabled}
994
- />
995
- );
996
- }
997
- case 'url': {
998
- return (
999
- <UrlFormField
1000
- {...rest}
1001
- value={value}
1002
- onChange={(val) => handleChange(name, val)}
1003
- />
1004
- );
1005
- }
1006
- case 'select-string': {
1007
- return (
1008
- <SelectFormField
1009
- items={(rest.allowed_values || []).map((av) => ({
1010
- ...av,
1011
- value: av.value?.value,
1012
- }))}
1013
- value={value}
1014
- onChange={(val) => handleChange(name, val)}
1015
- />
1016
- );
1017
- }
1018
- case 'select-array':
1019
- case 'multi-select': {
1020
- return (
1021
- <MultiSelectFormField
1022
- items={rest.allowed_values ?? []}
1023
- value={(value as unknown[]) ?? []}
1024
- onChange={(selected) => handleChange(name, selected)}
1025
- canCreateItems={rest.allowed_values_creatable || !size(rest.allowed_values)}
1026
- disabled={rest.disabled}
1027
- size={rest.size}
1028
- />
1029
- );
1030
- }
1031
- case 'file':
1032
- case 'file-as-string': {
1033
- return (
1034
- <ReqraftFileFormField
1035
- onChange={(val) => handleChange(name, val)}
1036
- options={rest.type_options}
1037
- value={value as IFileFormFieldValue}
1038
- argSchema={finalArgSchema as any}
1039
- {...rest}
1040
- />
1041
- );
1042
- }
1043
- case 'rgbcolor': {
1044
- return (
1045
- <ColorFormField
1046
- {...rest}
1047
- value={!value ? undefined : value}
1048
- onChange={(color) => handleChange(name, color)}
1049
- />
1050
- );
1051
- }
1052
- /* An UNTYPED field is typed into, never asked for a type.
1053
-
1054
- It used to show a type picker and "Please select data type" — a
1055
- question about storage ("is this a Text or a Number?") that an author
1056
- writing a value often cannot answer, asked before they could write
1057
- anything. What is typed is stored untyped, exactly as template mode
1058
- stores it; a value of an explicit type is set from the field's ⋮ menu
1059
- (see `FormEngine`'s `getCustomMenuTemplateItems`). */
1060
- case 'any':
1061
- case 'auto':
1062
- return renderTextEditor('string');
1063
- default:
1064
- return <ReqoreTag intent='danger' icon='SpamLine' label='Unknown type!' />;
1065
- }
1066
- };
1067
-
1068
- return (
1069
- <ReqoreControlGroup vertical={false} fluid={true} verticalAlign='flex-start'>
1070
- {renderFieldComponent()}
1071
- </ReqoreControlGroup>
1072
- );
1073
- };
1074
-
1075
- /* No picker while the type is unresolved: the field is typed into instead
1076
- (see the `auto` / `any` editor above). A field declaring several allowed
1077
- types still picks between THOSE — that is a choice the schema offers, not a
1078
- question about storage. */
1079
- const typeIsUnresolved =
1080
- !currentInternalType || isUntypedOptionType(currentInternalType);
1081
- const showPicker =
1082
- size(allowedTypes) > 1 ||
1083
- (!typeIsUnresolved &&
1084
- (!size(rest.allowed_values) ||
1085
- (size(rest?.allowed_values) > 0 && !rest.allowed_values_creatable) ||
1086
- !size(rest.element_allowed_values) ||
1087
- (size(rest?.element_allowed_values) > 0 && !rest.element_allowed_values_creatable)) &&
1088
- !isSetToNull &&
1089
- (defaultType === 'auto' ||
1090
- defaultType === 'any' ||
1091
- currentType === 'auto' ||
1092
- currentType === 'any'));
1093
-
1094
- // A caller's own list is offered as the editors it names, so a soft type in
1095
- // it is offered once, as its base type.
1096
- const types = allowedTypes
1097
- ? uniqBy(
1098
- allowedTypes.map((allowed) => {
1099
- const name = editorTypeOf(allowed.name);
1100
- return {
1101
- ...allowed,
1102
- name,
1103
- display_name:
1104
- allowed.display_name ||
1105
- getImmediateValueTypes().find((type) => type.name === name)?.display_name,
1106
- };
1107
- }),
1108
- 'name'
1109
- )
1110
- : getImmediateValueTypes();
1111
-
1112
- if (error) {
1113
- return <ReqoreMessage intent='danger'>{error}</ReqoreMessage>;
1114
- }
1115
-
1116
- if (arg_schema) {
1117
- return (
1118
- <ReqoreControlGroup vertical className='auto-field-schema-wrapper' fluid>
1119
- {renderField(currentInternalType)}
1120
- {currentInternalType && currentInternalType !== 'auto'
1121
- ? renderAllowedValues(currentInternalType)
1122
- : null}
1123
- </ReqoreControlGroup>
1124
- );
1125
- }
1126
-
1127
- // Render type picker if the type is auto or any
1128
- return (
1129
- <ReqoreErrorBoundary>
1130
- <ReqoreControlGroup {...rest} className={`auto-field-group`} vertical fluid>
1131
- {showPicker && (
1132
- <SelectFormField
1133
- fixed
1134
- flat
1135
- minimal={rest.minimal}
1136
- size={rest.size}
1137
- items={types as ISelectFormFieldItem[]}
1138
- /* A count on a fixed list of types says nothing the open list
1139
- does not; the IDE's picker shows none either. */
1140
- hideItemCount
1141
- value={currentInternalType}
1142
- onChange={(value) => {
1143
- handleTypeChange(name, value as IQorusType);
1144
- }}
1145
- />
1146
- )}
1147
- {renderField(currentInternalType)}
1148
- {renderAllowedValues(currentInternalType)}
1149
- {canBeNull && (
1150
- <ReqoreButton
1151
- intent={isSetToNull ? 'warning' : undefined}
1152
- icon={isSetToNull ? 'CloseLine' : undefined}
1153
- onClick={handleNullToggle}
1154
- fixed
1155
- >
1156
- {isSetToNull ? 'Unset null' : 'Set as null'}
1157
- </ReqoreButton>
1158
- )}
1159
- </ReqoreControlGroup>
1160
- </ReqoreErrorBoundary>
1161
- );
1162
- }
1163
-
1164
- export const AutoFormField = memo(AutoField) as React.FC<IAutoFieldProps>;