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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (913) hide show
  1. package/README.md +53 -1
  2. package/dist/components/Description/AllowedValuesHelp.d.ts +20 -0
  3. package/dist/components/Description/AllowedValuesHelp.d.ts.map +1 -0
  4. package/dist/components/Description/AllowedValuesHelp.js +86 -0
  5. package/dist/components/Description/AllowedValuesHelp.js.map +1 -0
  6. package/dist/components/Description/describedControl.d.ts +54 -0
  7. package/dist/components/Description/describedControl.d.ts.map +1 -0
  8. package/dist/components/Description/describedControl.js +81 -0
  9. package/dist/components/Description/describedControl.js.map +1 -0
  10. package/dist/components/Description/index.d.ts.map +1 -1
  11. package/dist/components/Description/index.js +3 -2
  12. package/dist/components/Description/index.js.map +1 -1
  13. package/dist/components/colorValue/colorValue.d.ts +59 -0
  14. package/dist/components/colorValue/colorValue.d.ts.map +1 -0
  15. package/dist/components/colorValue/colorValue.js +245 -0
  16. package/dist/components/colorValue/colorValue.js.map +1 -0
  17. package/dist/components/colorValue/index.d.ts +34 -0
  18. package/dist/components/colorValue/index.d.ts.map +1 -0
  19. package/dist/components/colorValue/index.js +136 -0
  20. package/dist/components/colorValue/index.js.map +1 -0
  21. package/dist/components/colorValue/labels.d.ts +12 -0
  22. package/dist/components/colorValue/labels.d.ts.map +1 -0
  23. package/dist/components/colorValue/labels.js +11 -0
  24. package/dist/components/colorValue/labels.js.map +1 -0
  25. package/dist/components/composer/Composer.d.ts +1 -1
  26. package/dist/components/composer/Composer.d.ts.map +1 -1
  27. package/dist/components/composer/Composer.js +2 -2
  28. package/dist/components/composer/Composer.js.map +1 -1
  29. package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
  30. package/dist/components/dpqlEditor/DpqlEditor.js +156 -10
  31. package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
  32. package/dist/components/dpqlEditor/dpqlCompletions.d.ts +39 -0
  33. package/dist/components/dpqlEditor/dpqlCompletions.d.ts.map +1 -0
  34. package/dist/components/dpqlEditor/dpqlCompletions.js +294 -0
  35. package/dist/components/dpqlEditor/dpqlCompletions.js.map +1 -0
  36. package/dist/components/dpqlEditor/dpqlHelpers.d.ts +54 -5
  37. package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
  38. package/dist/components/dpqlEditor/dpqlHelpers.js +420 -63
  39. package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
  40. package/dist/components/dpqlEditor/dpqlInserter.d.ts.map +1 -1
  41. package/dist/components/dpqlEditor/dpqlInserter.js +67 -29
  42. package/dist/components/dpqlEditor/dpqlInserter.js.map +1 -1
  43. package/dist/components/dpqlEditor/dpqlTags.d.ts +17 -7
  44. package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
  45. package/dist/components/dpqlEditor/dpqlTags.js +44 -17
  46. package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
  47. package/dist/components/dpqlEditor/types.d.ts +94 -8
  48. package/dist/components/dpqlEditor/types.d.ts.map +1 -1
  49. package/dist/components/dpqlEditor/useDpqlSession.d.ts +7 -2
  50. package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
  51. package/dist/components/dpqlEditor/useDpqlSession.js +49 -17
  52. package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
  53. package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
  54. package/dist/components/form/engine/CompactRow.js +336 -243
  55. package/dist/components/form/engine/CompactRow.js.map +1 -1
  56. package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
  57. package/dist/components/form/engine/CompactToolbar.js +20 -57
  58. package/dist/components/form/engine/CompactToolbar.js.map +1 -1
  59. package/dist/components/form/engine/FormEngine.d.ts +67 -59
  60. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  61. package/dist/components/form/engine/FormEngine.js +606 -409
  62. package/dist/components/form/engine/FormEngine.js.map +1 -1
  63. package/dist/components/form/engine/HiddenFieldsNote.d.ts +28 -0
  64. package/dist/components/form/engine/HiddenFieldsNote.d.ts.map +1 -0
  65. package/dist/components/form/engine/HiddenFieldsNote.js +32 -0
  66. package/dist/components/form/engine/HiddenFieldsNote.js.map +1 -0
  67. package/dist/components/form/engine/OptionFieldMessages.d.ts +2 -18
  68. package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
  69. package/dist/components/form/engine/OptionFieldMessages.js +28 -25
  70. package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
  71. package/dist/components/form/engine/OptionsHelpDialog.d.ts.map +1 -1
  72. package/dist/components/form/engine/OptionsHelpDialog.js +19 -2
  73. package/dist/components/form/engine/OptionsHelpDialog.js.map +1 -1
  74. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts +2 -2
  75. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
  76. package/dist/components/form/engine/_structuredData/SchemaDataView.js +11 -31
  77. package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
  78. package/dist/components/form/engine/compactRowContext.d.ts +30 -6
  79. package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
  80. package/dist/components/form/engine/compactRowContext.js.map +1 -1
  81. package/dist/components/form/engine/compactRowStyles.d.ts +56 -31
  82. package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
  83. package/dist/components/form/engine/compactRowStyles.js +121 -110
  84. package/dist/components/form/engine/compactRowStyles.js.map +1 -1
  85. package/dist/components/form/engine/compactToolbarColors.d.ts +16 -0
  86. package/dist/components/form/engine/compactToolbarColors.d.ts.map +1 -0
  87. package/dist/components/form/engine/compactToolbarColors.js +21 -0
  88. package/dist/components/form/engine/compactToolbarColors.js.map +1 -0
  89. package/dist/components/form/engine/compactToolbarContext.d.ts +0 -3
  90. package/dist/components/form/engine/compactToolbarContext.d.ts.map +1 -1
  91. package/dist/components/form/engine/compactToolbarContext.js.map +1 -1
  92. package/dist/components/form/engine/inheritProps.d.ts +29 -0
  93. package/dist/components/form/engine/inheritProps.d.ts.map +1 -0
  94. package/dist/components/form/engine/inheritProps.js +43 -0
  95. package/dist/components/form/engine/inheritProps.js.map +1 -0
  96. package/dist/components/form/engine/operatorSummary.d.ts +26 -0
  97. package/dist/components/form/engine/operatorSummary.d.ts.map +1 -0
  98. package/dist/components/form/engine/operatorSummary.js +35 -0
  99. package/dist/components/form/engine/operatorSummary.js.map +1 -0
  100. package/dist/components/form/engine/readFirst.d.ts +26 -22
  101. package/dist/components/form/engine/readFirst.d.ts.map +1 -1
  102. package/dist/components/form/engine/readFirst.js +79 -115
  103. package/dist/components/form/engine/readFirst.js.map +1 -1
  104. package/dist/components/form/engine/readFirstColors.d.ts +30 -0
  105. package/dist/components/form/engine/readFirstColors.d.ts.map +1 -0
  106. package/dist/components/form/engine/readFirstColors.js +51 -0
  107. package/dist/components/form/engine/readFirstColors.js.map +1 -0
  108. package/dist/components/form/engine/rowFocus.d.ts +3 -9
  109. package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
  110. package/dist/components/form/engine/rowFocus.js +30 -19
  111. package/dist/components/form/engine/rowFocus.js.map +1 -1
  112. package/dist/components/form/engine/typeChoices.d.ts +1 -1
  113. package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -1
  114. package/dist/components/form/engine/variants/VariantCalmTable.js +2 -1
  115. package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -1
  116. package/dist/components/form/engine/variants/VariantCards.d.ts.map +1 -1
  117. package/dist/components/form/engine/variants/VariantCards.js +2 -1
  118. package/dist/components/form/engine/variants/VariantCards.js.map +1 -1
  119. package/dist/components/form/engine/variants/VariantFocus.js +1 -1
  120. package/dist/components/form/engine/variants/VariantFocus.js.map +1 -1
  121. package/dist/components/form/engine/variants/VariantMinimal.d.ts.map +1 -1
  122. package/dist/components/form/engine/variants/VariantMinimal.js +2 -1
  123. package/dist/components/form/engine/variants/VariantMinimal.js.map +1 -1
  124. package/dist/components/form/engine/variants/variantParts.d.ts +1 -1
  125. package/dist/components/form/engine/variants/variantParts.d.ts.map +1 -1
  126. package/dist/components/form/engine/variants/variantParts.js +25 -17
  127. package/dist/components/form/engine/variants/variantParts.js.map +1 -1
  128. package/dist/components/form/expressions/DpqlRendering.d.ts +1 -1
  129. package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -1
  130. package/dist/components/form/expressions/DpqlRendering.js +7 -6
  131. package/dist/components/form/expressions/DpqlRendering.js.map +1 -1
  132. package/dist/components/form/expressions/ExpressionField.d.ts +67 -3
  133. package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
  134. package/dist/components/form/expressions/ExpressionField.js +536 -114
  135. package/dist/components/form/expressions/ExpressionField.js.map +1 -1
  136. package/dist/components/form/expressions/argumentPresence.d.ts +14 -0
  137. package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -1
  138. package/dist/components/form/expressions/argumentPresence.js +16 -1
  139. package/dist/components/form/expressions/argumentPresence.js.map +1 -1
  140. package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
  141. package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
  142. package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
  143. package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
  144. package/dist/components/form/expressions/builder/argumentLabel.js +30 -11
  145. package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
  146. package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
  147. package/dist/components/form/expressions/builder/argumentWrapper.js +3 -1
  148. package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
  149. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts +9 -0
  150. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
  151. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +30 -27
  152. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -1
  153. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +1 -1
  154. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -1
  155. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +7 -5
  156. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
  157. package/dist/components/form/expressions/builder/index.d.ts +34 -2
  158. package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
  159. package/dist/components/form/expressions/builder/index.js +170 -80
  160. package/dist/components/form/expressions/builder/index.js.map +1 -1
  161. package/dist/components/form/expressions/builder/item.d.ts +6 -2
  162. package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
  163. package/dist/components/form/expressions/builder/item.js +19 -5
  164. package/dist/components/form/expressions/builder/item.js.map +1 -1
  165. package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
  166. package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
  167. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts +11 -0
  168. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts.map +1 -0
  169. package/dist/components/form/expressions/dpqlMockRecordPath.js +254 -0
  170. package/dist/components/form/expressions/dpqlMockRecordPath.js.map +1 -0
  171. package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
  172. package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
  173. package/dist/components/form/expressions/expressionOperands.js +97 -0
  174. package/dist/components/form/expressions/expressionOperands.js.map +1 -0
  175. package/dist/components/form/expressions/fieldPath.d.ts +24 -0
  176. package/dist/components/form/expressions/fieldPath.d.ts.map +1 -0
  177. package/dist/components/form/expressions/fieldPath.js +152 -0
  178. package/dist/components/form/expressions/fieldPath.js.map +1 -0
  179. package/dist/components/form/expressions/loneValue.d.ts +17 -0
  180. package/dist/components/form/expressions/loneValue.d.ts.map +1 -0
  181. package/dist/components/form/expressions/loneValue.js +33 -0
  182. package/dist/components/form/expressions/loneValue.js.map +1 -0
  183. package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
  184. package/dist/components/form/expressions/mockExpressions.js +22 -5
  185. package/dist/components/form/expressions/mockExpressions.js.map +1 -1
  186. package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
  187. package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
  188. package/dist/components/form/expressions/renderExpressionToText.js +37 -25
  189. package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
  190. package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
  191. package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
  192. package/dist/components/form/expressions/textOfExpression.js +49 -0
  193. package/dist/components/form/expressions/textOfExpression.js.map +1 -0
  194. package/dist/components/form/expressions/types.d.ts +12 -0
  195. package/dist/components/form/expressions/types.d.ts.map +1 -1
  196. package/dist/components/form/expressions/types.js +6 -1
  197. package/dist/components/form/expressions/types.js.map +1 -1
  198. package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
  199. package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
  200. package/dist/components/form/expressions/useExpressionType.js +181 -0
  201. package/dist/components/form/expressions/useExpressionType.js.map +1 -0
  202. package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
  203. package/dist/components/form/expressions/useRenderExpression.js +13 -9
  204. package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
  205. package/dist/components/form/expressions/wildcardExpressions.d.ts +27 -0
  206. package/dist/components/form/expressions/wildcardExpressions.d.ts.map +1 -0
  207. package/dist/components/form/expressions/wildcardExpressions.js +101 -0
  208. package/dist/components/form/expressions/wildcardExpressions.js.map +1 -0
  209. package/dist/components/form/fields/Field.d.ts.map +1 -1
  210. package/dist/components/form/fields/Field.js +39 -18
  211. package/dist/components/form/fields/Field.js.map +1 -1
  212. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts +0 -7
  213. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
  214. package/dist/components/form/fields/allowed-values/AllowedValues.js +46 -35
  215. package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
  216. package/dist/components/form/fields/allowed-values/choicePicture.d.ts +37 -0
  217. package/dist/components/form/fields/allowed-values/choicePicture.d.ts.map +1 -0
  218. package/dist/components/form/fields/allowed-values/choicePicture.js +64 -0
  219. package/dist/components/form/fields/allowed-values/choicePicture.js.map +1 -0
  220. package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
  221. package/dist/components/form/fields/array/ArrayAuto.js +24 -0
  222. package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
  223. package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
  224. package/dist/components/form/fields/array/ArrayAutoField.js +36 -13
  225. package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
  226. package/dist/components/form/fields/auto/AutoFormField.d.ts +30 -1
  227. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
  228. package/dist/components/form/fields/auto/AutoFormField.js +123 -79
  229. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
  230. package/dist/components/form/fields/auto/hostEditorValue.d.ts +30 -0
  231. package/dist/components/form/fields/auto/hostEditorValue.d.ts.map +1 -0
  232. package/dist/components/form/fields/auto/hostEditorValue.js +53 -0
  233. package/dist/components/form/fields/auto/hostEditorValue.js.map +1 -0
  234. package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
  235. package/dist/components/form/fields/binary/Binary.js +23 -3
  236. package/dist/components/form/fields/binary/Binary.js.map +1 -1
  237. package/dist/components/form/fields/boolean/Boolean.d.ts +5 -0
  238. package/dist/components/form/fields/boolean/Boolean.d.ts.map +1 -1
  239. package/dist/components/form/fields/boolean/Boolean.js +9 -1
  240. package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
  241. package/dist/components/form/fields/color/Color.d.ts +103 -16
  242. package/dist/components/form/fields/color/Color.d.ts.map +1 -1
  243. package/dist/components/form/fields/color/Color.js +616 -16
  244. package/dist/components/form/fields/color/Color.js.map +1 -1
  245. package/dist/components/form/fields/emittedValues.d.ts +34 -3
  246. package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
  247. package/dist/components/form/fields/emittedValues.js +24 -1
  248. package/dist/components/form/fields/emittedValues.js.map +1 -1
  249. package/dist/components/form/fields/file/File.d.ts +1 -1
  250. package/dist/components/form/fields/file/File.d.ts.map +1 -1
  251. package/dist/components/form/fields/file/File.js +4 -2
  252. package/dist/components/form/fields/file/File.js.map +1 -1
  253. package/dist/components/form/fields/long-string/LongString.d.ts +1 -7
  254. package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
  255. package/dist/components/form/fields/long-string/LongString.js +30 -13
  256. package/dist/components/form/fields/long-string/LongString.js.map +1 -1
  257. package/dist/components/form/fields/markdown/MarkdownView.js +1 -1
  258. package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
  259. package/dist/components/form/fields/multi-select/MultiSelectFormField.js +10 -7
  260. package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
  261. package/dist/components/form/fields/number/Number.d.ts +7 -4
  262. package/dist/components/form/fields/number/Number.d.ts.map +1 -1
  263. package/dist/components/form/fields/number/Number.js +45 -18
  264. package/dist/components/form/fields/number/Number.js.map +1 -1
  265. package/dist/components/form/fields/object/Object.d.ts +1 -1
  266. package/dist/components/form/fields/object/Object.d.ts.map +1 -1
  267. package/dist/components/form/fields/object/Object.js +4 -2
  268. package/dist/components/form/fields/object/Object.js.map +1 -1
  269. package/dist/components/form/fields/pendingEdit.d.ts +52 -0
  270. package/dist/components/form/fields/pendingEdit.d.ts.map +1 -0
  271. package/dist/components/form/fields/pendingEdit.js +79 -0
  272. package/dist/components/form/fields/pendingEdit.js.map +1 -0
  273. package/dist/components/form/fields/radio-group/RadioGroup.d.ts.map +1 -1
  274. package/dist/components/form/fields/radio-group/RadioGroup.js +8 -13
  275. package/dist/components/form/fields/radio-group/RadioGroup.js.map +1 -1
  276. package/dist/components/form/fields/rich-text/RichText.d.ts +20 -1
  277. package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
  278. package/dist/components/form/fields/rich-text/RichText.js +426 -91
  279. package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
  280. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts +18 -0
  281. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts.map +1 -0
  282. package/dist/components/form/fields/rich-text/useTemplateTags.js +80 -0
  283. package/dist/components/form/fields/rich-text/useTemplateTags.js.map +1 -0
  284. package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -1
  285. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +4 -1
  286. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -1
  287. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -1
  288. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +20 -5
  289. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -1
  290. package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -1
  291. package/dist/components/form/fields/schema-definition/TableEditor.js +10 -2
  292. package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -1
  293. package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -1
  294. package/dist/components/form/fields/schema-definition/index.js +8 -4
  295. package/dist/components/form/fields/schema-definition/index.js.map +1 -1
  296. package/dist/components/form/fields/select/Select.d.ts +10 -1
  297. package/dist/components/form/fields/select/Select.d.ts.map +1 -1
  298. package/dist/components/form/fields/select/Select.js +28 -14
  299. package/dist/components/form/fields/select/Select.js.map +1 -1
  300. package/dist/components/form/fields/select/SelectCollection.d.ts +5 -0
  301. package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
  302. package/dist/components/form/fields/select/SelectCollection.js +25 -12
  303. package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
  304. package/dist/components/form/fields/select/unavailableRow.d.ts +23 -0
  305. package/dist/components/form/fields/select/unavailableRow.d.ts.map +1 -0
  306. package/dist/components/form/fields/select/unavailableRow.js +55 -0
  307. package/dist/components/form/fields/select/unavailableRow.js.map +1 -0
  308. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +11 -5
  309. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
  310. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +21 -5
  311. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
  312. package/dist/components/form/fields/template/TemplateBrowser.d.ts +16 -0
  313. package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
  314. package/dist/components/form/fields/template/TemplateBrowser.js +89 -0
  315. package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
  316. package/dist/components/form/fields/template/TemplateField.d.ts +105 -1
  317. package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
  318. package/dist/components/form/fields/template/TemplateField.js +706 -168
  319. package/dist/components/form/fields/template/TemplateField.js.map +1 -1
  320. package/dist/components/form/fields/template/TemplatePicker.d.ts +54 -0
  321. package/dist/components/form/fields/template/TemplatePicker.d.ts.map +1 -0
  322. package/dist/components/form/fields/template/TemplatePicker.js +459 -0
  323. package/dist/components/form/fields/template/TemplatePicker.js.map +1 -0
  324. package/dist/components/form/fields/template/TemplateText.d.ts +0 -17
  325. package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -1
  326. package/dist/components/form/fields/template/TemplateText.js +22 -16
  327. package/dist/components/form/fields/template/TemplateText.js.map +1 -1
  328. package/dist/components/form/fields/template/referenceNames.d.ts +63 -0
  329. package/dist/components/form/fields/template/referenceNames.d.ts.map +1 -0
  330. package/dist/components/form/fields/template/referenceNames.js +69 -0
  331. package/dist/components/form/fields/template/referenceNames.js.map +1 -0
  332. package/dist/components/form/fields/template/writtenAsText.d.ts +61 -0
  333. package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
  334. package/dist/components/form/fields/template/writtenAsText.js +204 -0
  335. package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
  336. package/dist/components/form/index.d.ts +12 -2
  337. package/dist/components/form/index.d.ts.map +1 -1
  338. package/dist/components/form/index.js +25 -3
  339. package/dist/components/form/index.js.map +1 -1
  340. package/dist/components/form/typeSentenceForm.d.ts +17 -0
  341. package/dist/components/form/typeSentenceForm.d.ts.map +1 -0
  342. package/dist/components/form/typeSentenceForm.js +54 -0
  343. package/dist/components/form/typeSentenceForm.js.map +1 -0
  344. package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
  345. package/dist/components/imageLightbox/ImageLightbox.js +19 -9
  346. package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
  347. package/dist/components/log/Log.d.ts.map +1 -1
  348. package/dist/components/log/Log.js +20 -8
  349. package/dist/components/log/Log.js.map +1 -1
  350. package/dist/components/menu/Menu.d.ts.map +1 -1
  351. package/dist/components/menu/Menu.js +19 -10
  352. package/dist/components/menu/Menu.js.map +1 -1
  353. package/dist/components/smartEditor/CompletionMenu.d.ts +53 -0
  354. package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
  355. package/dist/components/smartEditor/CompletionMenu.js +302 -0
  356. package/dist/components/smartEditor/CompletionMenu.js.map +1 -0
  357. package/dist/components/smartEditor/MarkdownDoc.d.ts +1 -1
  358. package/dist/components/smartEditor/MarkdownDoc.js +3 -3
  359. package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
  360. package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
  361. package/dist/components/smartEditor/SmartEditor.js +616 -190
  362. package/dist/components/smartEditor/SmartEditor.js.map +1 -1
  363. package/dist/components/smartEditor/completionStyle.d.ts +28 -0
  364. package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
  365. package/dist/components/smartEditor/completionStyle.js +79 -0
  366. package/dist/components/smartEditor/completionStyle.js.map +1 -0
  367. package/dist/components/smartEditor/contextTitle.d.ts +10 -0
  368. package/dist/components/smartEditor/contextTitle.d.ts.map +1 -0
  369. package/dist/components/smartEditor/contextTitle.js +21 -0
  370. package/dist/components/smartEditor/contextTitle.js.map +1 -0
  371. package/dist/components/smartEditor/editingAids.d.ts +64 -0
  372. package/dist/components/smartEditor/editingAids.d.ts.map +1 -0
  373. package/dist/components/smartEditor/editingAids.js +213 -0
  374. package/dist/components/smartEditor/editingAids.js.map +1 -0
  375. package/dist/components/smartEditor/index.d.ts +6 -1
  376. package/dist/components/smartEditor/index.d.ts.map +1 -1
  377. package/dist/components/smartEditor/index.js +19 -1
  378. package/dist/components/smartEditor/index.js.map +1 -1
  379. package/dist/components/smartEditor/templateCompletions.d.ts +98 -0
  380. package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
  381. package/dist/components/smartEditor/templateCompletions.js +380 -0
  382. package/dist/components/smartEditor/templateCompletions.js.map +1 -0
  383. package/dist/components/smartEditor/typedReferences.d.ts +34 -0
  384. package/dist/components/smartEditor/typedReferences.d.ts.map +1 -0
  385. package/dist/components/smartEditor/typedReferences.js +179 -0
  386. package/dist/components/smartEditor/typedReferences.js.map +1 -0
  387. package/dist/components/smartEditor/types.d.ts +116 -2
  388. package/dist/components/smartEditor/types.d.ts.map +1 -1
  389. package/dist/components/smartEditor/useEditingAids.d.ts +38 -0
  390. package/dist/components/smartEditor/useEditingAids.d.ts.map +1 -0
  391. package/dist/components/smartEditor/useEditingAids.js +392 -0
  392. package/dist/components/smartEditor/useEditingAids.js.map +1 -0
  393. package/dist/components/smartEditor/useLspAutocomplete.d.ts +106 -3
  394. package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
  395. package/dist/components/smartEditor/useLspAutocomplete.js +592 -149
  396. package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
  397. package/dist/components/smartEditor/useLspHover.d.ts +33 -7
  398. package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
  399. package/dist/components/smartEditor/useLspHover.js +364 -35
  400. package/dist/components/smartEditor/useLspHover.js.map +1 -1
  401. package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
  402. package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
  403. package/dist/components/smartEditor/useLspSession.d.ts +6 -0
  404. package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
  405. package/dist/components/smartEditor/useLspSession.js +7 -6
  406. package/dist/components/smartEditor/useLspSession.js.map +1 -1
  407. package/dist/components/smartEditor/useLspSignatureHelp.d.ts.map +1 -1
  408. package/dist/components/smartEditor/useLspSignatureHelp.js +6 -11
  409. package/dist/components/smartEditor/useLspSignatureHelp.js.map +1 -1
  410. package/dist/components/smartEditor/useTabCameIn.d.ts +10 -0
  411. package/dist/components/smartEditor/useTabCameIn.d.ts.map +1 -0
  412. package/dist/components/smartEditor/useTabCameIn.js +42 -0
  413. package/dist/components/smartEditor/useTabCameIn.js.map +1 -0
  414. package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -1
  415. package/dist/components/supportTicket/AttachmentChips.js +15 -5
  416. package/dist/components/supportTicket/AttachmentChips.js.map +1 -1
  417. package/dist/components/supportTicket/InterfaceReferenceTags.d.ts +2 -3
  418. package/dist/components/supportTicket/InterfaceReferenceTags.d.ts.map +1 -1
  419. package/dist/components/supportTicket/InterfaceReferenceTags.js.map +1 -1
  420. package/dist/components/supportTicket/ReferencePicker.d.ts +9 -3
  421. package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
  422. package/dist/components/supportTicket/ReferencePicker.js +38 -23
  423. package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
  424. package/dist/components/supportTicket/TicketHeader.d.ts +3 -4
  425. package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
  426. package/dist/components/supportTicket/TicketHeader.js +21 -6
  427. package/dist/components/supportTicket/TicketHeader.js.map +1 -1
  428. package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
  429. package/dist/components/supportTicket/TicketReplyBox.d.ts.map +1 -1
  430. package/dist/components/supportTicket/TicketReplyBox.js +10 -29
  431. package/dist/components/supportTicket/TicketReplyBox.js.map +1 -1
  432. package/dist/components/supportTicket/useLoadedImages.d.ts +0 -10
  433. package/dist/components/supportTicket/useLoadedImages.d.ts.map +1 -1
  434. package/dist/components/supportTicket/useLoadedImages.js +1 -63
  435. package/dist/components/supportTicket/useLoadedImages.js.map +1 -1
  436. package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
  437. package/dist/components/ticketReferences/TicketReferences.js +10 -9
  438. package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
  439. package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
  440. package/dist/components/ticketThread/TicketThread.js +52 -21
  441. package/dist/components/ticketThread/TicketThread.js.map +1 -1
  442. package/dist/helpers/allowedValues.d.ts +21 -12
  443. package/dist/helpers/allowedValues.d.ts.map +1 -1
  444. package/dist/helpers/allowedValues.js +40 -20
  445. package/dist/helpers/allowedValues.js.map +1 -1
  446. package/dist/helpers/descriptionTooltip.d.ts +46 -0
  447. package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
  448. package/dist/helpers/descriptionTooltip.js +76 -0
  449. package/dist/helpers/descriptionTooltip.js.map +1 -0
  450. package/dist/helpers/domProps.d.ts +5 -0
  451. package/dist/helpers/domProps.d.ts.map +1 -0
  452. package/dist/helpers/domProps.js +47 -0
  453. package/dist/helpers/domProps.js.map +1 -0
  454. package/dist/helpers/expressions.d.ts +115 -4
  455. package/dist/helpers/expressions.d.ts.map +1 -1
  456. package/dist/helpers/expressions.js +247 -29
  457. package/dist/helpers/expressions.js.map +1 -1
  458. package/dist/helpers/hoveringPointer.d.ts +26 -0
  459. package/dist/helpers/hoveringPointer.d.ts.map +1 -0
  460. package/dist/helpers/hoveringPointer.js +29 -0
  461. package/dist/helpers/hoveringPointer.js.map +1 -0
  462. package/dist/helpers/markdownText.d.ts +14 -0
  463. package/dist/helpers/markdownText.d.ts.map +1 -0
  464. package/dist/helpers/markdownText.js +160 -0
  465. package/dist/helpers/markdownText.js.map +1 -0
  466. package/dist/helpers/noDescription.d.ts +9 -0
  467. package/dist/helpers/noDescription.d.ts.map +1 -0
  468. package/dist/helpers/noDescription.js +13 -0
  469. package/dist/helpers/noDescription.js.map +1 -0
  470. package/dist/helpers/optionUiTypes.d.ts +2 -2
  471. package/dist/helpers/qorusTypeCatalogue.d.ts +147 -0
  472. package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
  473. package/dist/helpers/qorusTypeCatalogue.js +505 -0
  474. package/dist/helpers/qorusTypeCatalogue.js.map +1 -0
  475. package/dist/helpers/readableColors.d.ts +36 -0
  476. package/dist/helpers/readableColors.d.ts.map +1 -0
  477. package/dist/helpers/readableColors.js +116 -0
  478. package/dist/helpers/readableColors.js.map +1 -0
  479. package/dist/helpers/recordFieldReference.d.ts +15 -0
  480. package/dist/helpers/recordFieldReference.d.ts.map +1 -0
  481. package/dist/helpers/recordFieldReference.js +89 -0
  482. package/dist/helpers/recordFieldReference.js.map +1 -0
  483. package/dist/helpers/singleLineString.d.ts.map +1 -1
  484. package/dist/helpers/singleLineString.js +0 -1
  485. package/dist/helpers/singleLineString.js.map +1 -1
  486. package/dist/helpers/templateCatalogue.d.ts +104 -0
  487. package/dist/helpers/templateCatalogue.d.ts.map +1 -0
  488. package/dist/helpers/templateCatalogue.js +116 -0
  489. package/dist/helpers/templateCatalogue.js.map +1 -0
  490. package/dist/helpers/templateCatalogueContext.d.ts +19 -0
  491. package/dist/helpers/templateCatalogueContext.d.ts.map +1 -0
  492. package/dist/helpers/templateCatalogueContext.js +31 -0
  493. package/dist/helpers/templateCatalogueContext.js.map +1 -0
  494. package/dist/helpers/templateItems.d.ts +2 -2
  495. package/dist/helpers/templateItems.d.ts.map +1 -1
  496. package/dist/helpers/templateItems.js +6 -4
  497. package/dist/helpers/templateItems.js.map +1 -1
  498. package/dist/helpers/templateText.d.ts +1 -0
  499. package/dist/helpers/templateText.d.ts.map +1 -1
  500. package/dist/helpers/templateText.js +7 -3
  501. package/dist/helpers/templateText.js.map +1 -1
  502. package/dist/helpers/templateTree.d.ts +248 -0
  503. package/dist/helpers/templateTree.d.ts.map +1 -0
  504. package/dist/helpers/templateTree.js +892 -0
  505. package/dist/helpers/templateTree.js.map +1 -0
  506. package/dist/helpers/templateType.d.ts +28 -0
  507. package/dist/helpers/templateType.d.ts.map +1 -0
  508. package/dist/helpers/templateType.js +30 -0
  509. package/dist/helpers/templateType.js.map +1 -0
  510. package/dist/helpers/templates.d.ts +86 -16
  511. package/dist/helpers/templates.d.ts.map +1 -1
  512. package/dist/helpers/templates.js +305 -45
  513. package/dist/helpers/templates.js.map +1 -1
  514. package/dist/helpers/validations.d.ts +27 -0
  515. package/dist/helpers/validations.d.ts.map +1 -1
  516. package/dist/helpers/validations.js +169 -39
  517. package/dist/helpers/validations.js.map +1 -1
  518. package/dist/helpers/webLink.d.ts +8 -0
  519. package/dist/helpers/webLink.d.ts.map +1 -0
  520. package/dist/helpers/webLink.js +29 -0
  521. package/dist/helpers/webLink.js.map +1 -0
  522. package/dist/hooks/useQorusTypes.d.ts +12 -17
  523. package/dist/hooks/useQorusTypes.d.ts.map +1 -1
  524. package/dist/hooks/useQorusTypes.js +44 -172
  525. package/dist/hooks/useQorusTypes.js.map +1 -1
  526. package/dist/hooks/useReadableIntentShade.d.ts +9 -0
  527. package/dist/hooks/useReadableIntentShade.d.ts.map +1 -0
  528. package/dist/hooks/useReadableIntentShade.js +23 -0
  529. package/dist/hooks/useReadableIntentShade.js.map +1 -0
  530. package/dist/hooks/useReadableOpacity.d.ts +6 -0
  531. package/dist/hooks/useReadableOpacity.d.ts.map +1 -0
  532. package/dist/hooks/useReadableOpacity.js +17 -0
  533. package/dist/hooks/useReadableOpacity.js.map +1 -0
  534. package/dist/index.d.ts +8 -0
  535. package/dist/index.d.ts.map +1 -1
  536. package/dist/index.js +24 -1
  537. package/dist/index.js.map +1 -1
  538. package/dist/tracking/ui/ExperimentCard.d.ts +1 -1
  539. package/dist/tracking/ui/ExperimentCard.d.ts.map +1 -1
  540. package/dist/tracking/ui/ExperimentCard.js +26 -10
  541. package/dist/tracking/ui/ExperimentCard.js.map +1 -1
  542. package/dist/tracking/ui/card.d.ts +2 -2
  543. package/dist/tracking/ui/card.d.ts.map +1 -1
  544. package/dist/tracking/ui/card.js +2 -2
  545. package/dist/tracking/ui/card.js.map +1 -1
  546. package/dist/tracking/ui/readable.d.ts +14 -0
  547. package/dist/tracking/ui/readable.d.ts.map +1 -0
  548. package/dist/tracking/ui/readable.js +60 -0
  549. package/dist/tracking/ui/readable.js.map +1 -0
  550. package/dist/utils/fetch.d.ts +9 -2
  551. package/dist/utils/fetch.d.ts.map +1 -1
  552. package/dist/utils/fetch.js +6 -5
  553. package/dist/utils/fetch.js.map +1 -1
  554. package/dist/utils/lspClient.types.d.ts +2 -0
  555. package/dist/utils/lspClient.types.d.ts.map +1 -1
  556. package/dist/utils/websocket.d.ts +65 -2
  557. package/dist/utils/websocket.d.ts.map +1 -1
  558. package/dist/utils/websocket.js +276 -44
  559. package/dist/utils/websocket.js.map +1 -1
  560. package/package.json +14 -6
  561. package/.claude/CLAUDE.md +0 -317
  562. package/.tasks/EXPORT_EXPRESSION_BUILDER.md +0 -38
  563. package/.tasks/EXPRESSION_BUILDER_REPORT.md +0 -149
  564. package/.tasks/EXPRESSION_FIELD_SEAMS.md +0 -66
  565. package/.tasks/FIELD_STACK_REPORT.md +0 -234
  566. package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +0 -558
  567. package/.tasks/FORM_ENGINE_EXPRESSIONS.md +0 -197
  568. package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +0 -95
  569. package/.tasks/FORM_FIELD_EXTRAS.md +0 -72
  570. package/.tasks/INDEX.md +0 -111
  571. package/.tasks/LSP_SHARED_CONNECTION.md +0 -75
  572. package/.tasks/QONSOLE_ASSIST_FEATURES.md +0 -306
  573. package/.tasks/RENDER_EXPRESSION_LSP.md +0 -159
  574. package/.tasks/REQRAFT_AUTO_FIELD.md +0 -176
  575. package/.tasks/SCHEMA_DEFINITION_FIELD.md +0 -250
  576. package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +0 -340
  577. package/.tasks/SMART_EDITOR_LSP_FEATURES.md +0 -299
  578. package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +0 -280
  579. package/.tasks/SMART_EDITOR_UX_POLISH.md +0 -383
  580. package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +0 -246
  581. package/.tasks/STORY_NETWORK_ISOLATION.md +0 -98
  582. package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +0 -72
  583. package/CODE_OF_CONDUCT.md +0 -105
  584. package/CONTRIBUTING.MD +0 -78
  585. package/SECURITY.md +0 -3
  586. package/chromatic.config.json +0 -5
  587. package/design/COMPACT_ENGINE_REDESIGN.md +0 -156
  588. package/design/COMPACT_INFO_DISPLAY.md +0 -87
  589. package/design/COMPACT_PARITY.md +0 -85
  590. package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +0 -92
  591. package/design/FORM_ENGINE_COMPACT.md +0 -300
  592. package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +0 -353
  593. package/design/FORM_ENGINE_EXPRESSIONS.md +0 -257
  594. package/design/FORM_ENGINE_FIELD_MIGRATION.md +0 -419
  595. package/design/IDE_INTEGRATION.md +0 -64
  596. package/design/RENDER_EXPRESSION_TRANSPORT.md +0 -156
  597. package/design/SELECT_DIALOG_FLOOR.md +0 -86
  598. package/design/SMART_EDITOR_UX.md +0 -438
  599. package/design/TRACKING.md +0 -290
  600. package/design/UNAVAILABLE_ALLOWED_VALUES.md +0 -226
  601. package/dist/components/form/engine/formAppearance.d.ts +0 -49
  602. package/dist/components/form/engine/formAppearance.d.ts.map +0 -1
  603. package/dist/components/form/engine/formAppearance.js +0 -50
  604. package/dist/components/form/engine/formAppearance.js.map +0 -1
  605. package/dist/components/form/fields/ChoiceGroupHeading.d.ts +0 -21
  606. package/dist/components/form/fields/ChoiceGroupHeading.d.ts.map +0 -1
  607. package/dist/components/form/fields/ChoiceGroupHeading.js +0 -33
  608. package/dist/components/form/fields/ChoiceGroupHeading.js.map +0 -1
  609. package/dist/components/form/fields/allowed-values/savedValues.d.ts +0 -30
  610. package/dist/components/form/fields/allowed-values/savedValues.d.ts.map +0 -1
  611. package/dist/components/form/fields/allowed-values/savedValues.js +0 -39
  612. package/dist/components/form/fields/allowed-values/savedValues.js.map +0 -1
  613. package/dist/helpers/fieldDescription.d.ts +0 -16
  614. package/dist/helpers/fieldDescription.d.ts.map +0 -1
  615. package/dist/helpers/fieldDescription.js +0 -40
  616. package/dist/helpers/fieldDescription.js.map +0 -1
  617. package/src/components/Description/index.tsx +0 -254
  618. package/src/components/Description/markdownRendererContext.tsx +0 -29
  619. package/src/components/FocusedEditing/index.tsx +0 -50
  620. package/src/components/codeSize/index.tsx +0 -79
  621. package/src/components/composer/Composer.stories.tsx +0 -238
  622. package/src/components/composer/Composer.tsx +0 -554
  623. package/src/components/composer/helpers.ts +0 -74
  624. package/src/components/composer/index.ts +0 -2
  625. package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -1183
  626. package/src/components/dpqlEditor/DpqlEditor.tsx +0 -219
  627. package/src/components/dpqlEditor/dpqlHelpers.ts +0 -287
  628. package/src/components/dpqlEditor/dpqlInserter.ts +0 -121
  629. package/src/components/dpqlEditor/dpqlProbe.ts +0 -165
  630. package/src/components/dpqlEditor/dpqlTags.ts +0 -114
  631. package/src/components/dpqlEditor/index.ts +0 -41
  632. package/src/components/dpqlEditor/types.ts +0 -203
  633. package/src/components/dpqlEditor/useDpqlProbe.ts +0 -33
  634. package/src/components/dpqlEditor/useDpqlSession.ts +0 -411
  635. package/src/components/form/engine/CompactRow.tsx +0 -2740
  636. package/src/components/form/engine/CompactToolbar.tsx +0 -399
  637. package/src/components/form/engine/FormEngine.stories.tsx +0 -9934
  638. package/src/components/form/engine/FormEngine.tsx +0 -4891
  639. package/src/components/form/engine/FormEngineAppearance.stories.tsx +0 -609
  640. package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
  641. package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -335
  642. package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
  643. package/src/components/form/engine/OptionFieldMessages.tsx +0 -548
  644. package/src/components/form/engine/OptionsHelpDialog.tsx +0 -29
  645. package/src/components/form/engine/__fixtures__/basicFormOptions.ts +0 -309
  646. package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +0 -45
  647. package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +0 -233
  648. package/src/components/form/engine/_structuredData/SchemaDataView.tsx +0 -755
  649. package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +0 -85
  650. package/src/components/form/engine/_structuredData/StructuredDataView.tsx +0 -75
  651. package/src/components/form/engine/_structuredData/structuredData.ts +0 -145
  652. package/src/components/form/engine/compactRowContext.ts +0 -153
  653. package/src/components/form/engine/compactRowStyles.ts +0 -1087
  654. package/src/components/form/engine/compactToolbarContext.ts +0 -72
  655. package/src/components/form/engine/formAppearance.ts +0 -79
  656. package/src/components/form/engine/optionActions.ts +0 -128
  657. package/src/components/form/engine/optionsContext.ts +0 -24
  658. package/src/components/form/engine/readFirst.ts +0 -1090
  659. package/src/components/form/engine/rendererTypes.ts +0 -107
  660. package/src/components/form/engine/revealRow.ts +0 -123
  661. package/src/components/form/engine/rowFocus.ts +0 -112
  662. package/src/components/form/engine/rowMenuContext.ts +0 -159
  663. package/src/components/form/engine/rowOpenPicker.ts +0 -27
  664. package/src/components/form/engine/typeChoices.ts +0 -63
  665. package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +0 -159
  666. package/src/components/form/engine/variants/VariantCalmTable.tsx +0 -244
  667. package/src/components/form/engine/variants/VariantCards.tsx +0 -212
  668. package/src/components/form/engine/variants/VariantFocus.tsx +0 -382
  669. package/src/components/form/engine/variants/VariantMinimal.tsx +0 -170
  670. package/src/components/form/engine/variants/focusDemo.ts +0 -145
  671. package/src/components/form/engine/variants/variantModel.ts +0 -223
  672. package/src/components/form/engine/variants/variantParts.tsx +0 -313
  673. package/src/components/form/expressions/DpqlRendering.tsx +0 -85
  674. package/src/components/form/expressions/ExpressionField.stories.tsx +0 -1395
  675. package/src/components/form/expressions/ExpressionField.tsx +0 -503
  676. package/src/components/form/expressions/argumentPresence.ts +0 -213
  677. package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +0 -1683
  678. package/src/components/form/expressions/builder/argumentDetail.tsx +0 -17
  679. package/src/components/form/expressions/builder/argumentLabel.tsx +0 -146
  680. package/src/components/form/expressions/builder/argumentSlot.tsx +0 -101
  681. package/src/components/form/expressions/builder/argumentWrapper.tsx +0 -243
  682. package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +0 -120
  683. package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +0 -69
  684. package/src/components/form/expressions/builder/index.tsx +0 -1545
  685. package/src/components/form/expressions/builder/item.tsx +0 -89
  686. package/src/components/form/expressions/builder/moveToPositionStrip.tsx +0 -156
  687. package/src/components/form/expressions/builder/renderTemplate.tsx +0 -42
  688. package/src/components/form/expressions/dpqlMockLanguage.ts +0 -566
  689. package/src/components/form/expressions/dpqlMockLsp.ts +0 -126
  690. package/src/components/form/expressions/mockExpressions.ts +0 -317
  691. package/src/components/form/expressions/renderExpressionToText.ts +0 -152
  692. package/src/components/form/expressions/types.ts +0 -110
  693. package/src/components/form/expressions/useExpressions.ts +0 -101
  694. package/src/components/form/expressions/useRenderExpression.ts +0 -165
  695. package/src/components/form/fields/ChoiceGroupHeading.tsx +0 -38
  696. package/src/components/form/fields/Field.stories.tsx +0 -143
  697. package/src/components/form/fields/Field.tsx +0 -734
  698. package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -321
  699. package/src/components/form/fields/allowed-values/savedValues.ts +0 -64
  700. package/src/components/form/fields/array/ArrayAuto.tsx +0 -237
  701. package/src/components/form/fields/array/ArrayAutoField.stories.tsx +0 -475
  702. package/src/components/form/fields/array/ArrayAutoField.tsx +0 -367
  703. package/src/components/form/fields/auto/AutoFormField.stories.tsx +0 -825
  704. package/src/components/form/fields/auto/AutoFormField.tsx +0 -1183
  705. package/src/components/form/fields/binary/Binary.stories.tsx +0 -122
  706. package/src/components/form/fields/binary/Binary.tsx +0 -91
  707. package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -125
  708. package/src/components/form/fields/boolean/Boolean.tsx +0 -34
  709. package/src/components/form/fields/byte-size/ByteSize.stories.tsx +0 -87
  710. package/src/components/form/fields/byte-size/ByteSize.tsx +0 -58
  711. package/src/components/form/fields/color/Color.stories.tsx +0 -99
  712. package/src/components/form/fields/color/Color.tsx +0 -46
  713. package/src/components/form/fields/cron/Cron.stories.tsx +0 -68
  714. package/src/components/form/fields/cron/Cron.tsx +0 -80
  715. package/src/components/form/fields/date/Date.stories.tsx +0 -77
  716. package/src/components/form/fields/date/Date.tsx +0 -55
  717. package/src/components/form/fields/emittedValues.ts +0 -70
  718. package/src/components/form/fields/file/File.stories.tsx +0 -161
  719. package/src/components/form/fields/file/File.tsx +0 -227
  720. package/src/components/form/fields/long-string/LongString.stories.tsx +0 -147
  721. package/src/components/form/fields/long-string/LongString.tsx +0 -141
  722. package/src/components/form/fields/markdown/Markdown.stories.tsx +0 -76
  723. package/src/components/form/fields/markdown/Markdown.tsx +0 -81
  724. package/src/components/form/fields/markdown/MarkdownView.tsx +0 -222
  725. package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +0 -140
  726. package/src/components/form/fields/number/Number.stories.tsx +0 -159
  727. package/src/components/form/fields/number/Number.tsx +0 -175
  728. package/src/components/form/fields/object/Object.stories.tsx +0 -398
  729. package/src/components/form/fields/object/Object.tsx +0 -255
  730. package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +0 -95
  731. package/src/components/form/fields/radio-group/RadioGroup.tsx +0 -52
  732. package/src/components/form/fields/radio-group/images/java-96x128.png +0 -0
  733. package/src/components/form/fields/radio-group/images/python-129x128.png +0 -0
  734. package/src/components/form/fields/radio-group/images/qore-106x128.png +0 -0
  735. package/src/components/form/fields/rich-text/RichText.stories.tsx +0 -260
  736. package/src/components/form/fields/rich-text/RichText.tsx +0 -537
  737. package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +0 -242
  738. package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +0 -758
  739. package/src/components/form/fields/schema-definition/Hint.tsx +0 -22
  740. package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +0 -138
  741. package/src/components/form/fields/schema-definition/Loader.tsx +0 -20
  742. package/src/components/form/fields/schema-definition/MigrationsTab.tsx +0 -187
  743. package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +0 -286
  744. package/src/components/form/fields/schema-definition/TableEditor.tsx +0 -155
  745. package/src/components/form/fields/schema-definition/TablesTab.tsx +0 -138
  746. package/src/components/form/fields/schema-definition/catalog.ts +0 -237
  747. package/src/components/form/fields/schema-definition/helpers.ts +0 -90
  748. package/src/components/form/fields/schema-definition/index.tsx +0 -418
  749. package/src/components/form/fields/schema-definition/mockCatalog.ts +0 -325
  750. package/src/components/form/fields/schema-definition/mockDefinition.ts +0 -111
  751. package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +0 -152
  752. package/src/components/form/fields/schema-definition/starterTemplate.ts +0 -68
  753. package/src/components/form/fields/schema-definition/types.ts +0 -185
  754. package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +0 -49
  755. package/src/components/form/fields/select/Select.stories.tsx +0 -872
  756. package/src/components/form/fields/select/Select.tsx +0 -624
  757. package/src/components/form/fields/select/SelectCollection.tsx +0 -594
  758. package/src/components/form/fields/string/String.stories.tsx +0 -86
  759. package/src/components/form/fields/string/String.tsx +0 -43
  760. package/src/components/form/fields/template/ExampleValueModal.stories.tsx +0 -114
  761. package/src/components/form/fields/template/ExampleValueModal.tsx +0 -99
  762. package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +0 -47
  763. package/src/components/form/fields/template/TemplateField.stories.tsx +0 -1121
  764. package/src/components/form/fields/template/TemplateField.tsx +0 -1749
  765. package/src/components/form/fields/template/TemplateText.tsx +0 -115
  766. package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +0 -7
  767. package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +0 -147
  768. package/src/components/form/fields/template/__fixtures__/templates.json +0 -83
  769. package/src/components/form/fields/timeout/Timeout.stories.tsx +0 -228
  770. package/src/components/form/fields/timeout/Timeout.tsx +0 -87
  771. package/src/components/form/fields/url/Url.stories.tsx +0 -94
  772. package/src/components/form/fields/url/Url.tsx +0 -85
  773. package/src/components/form/index.tsx +0 -49
  774. package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
  775. package/src/components/imageLightbox/ImageLightbox.tsx +0 -238
  776. package/src/components/imageLightbox/index.ts +0 -1
  777. package/src/components/log/Log.stories.tsx +0 -333
  778. package/src/components/log/Log.tsx +0 -285
  779. package/src/components/menu/Menu.stories.tsx +0 -155
  780. package/src/components/menu/Menu.tsx +0 -312
  781. package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +0 -797
  782. package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +0 -105
  783. package/src/components/qonsoleSmartInput/index.ts +0 -16
  784. package/src/components/qonsoleSmartInput/qonsoleInserter.ts +0 -77
  785. package/src/components/qonsoleSmartInput/types.ts +0 -133
  786. package/src/components/qonsoleSmartInput/useQonsoleSession.ts +0 -124
  787. package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +0 -62
  788. package/src/components/searchFilterBar/SearchFilterBar.tsx +0 -144
  789. package/src/components/searchFilterBar/index.ts +0 -1
  790. package/src/components/smartEditor/MarkdownDoc.tsx +0 -190
  791. package/src/components/smartEditor/SmartEditor.stories.tsx +0 -475
  792. package/src/components/smartEditor/SmartEditor.tsx +0 -808
  793. package/src/components/smartEditor/__fixtures__/mockLspServer.ts +0 -205
  794. package/src/components/smartEditor/helpers.ts +0 -217
  795. package/src/components/smartEditor/index.ts +0 -35
  796. package/src/components/smartEditor/styling.ts +0 -45
  797. package/src/components/smartEditor/types.ts +0 -211
  798. package/src/components/smartEditor/useLspAutocomplete.ts +0 -758
  799. package/src/components/smartEditor/useLspDiagnosticDecorations.ts +0 -125
  800. package/src/components/smartEditor/useLspHover.ts +0 -230
  801. package/src/components/smartEditor/useLspSemanticTokens.ts +0 -298
  802. package/src/components/smartEditor/useLspSession.ts +0 -231
  803. package/src/components/smartEditor/useLspSignatureHelp.ts +0 -198
  804. package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -171
  805. package/src/components/supportTicket/AttachmentChips.tsx +0 -147
  806. package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -257
  807. package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -130
  808. package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -580
  809. package/src/components/supportTicket/ReferencePicker.tsx +0 -573
  810. package/src/components/supportTicket/TicketConversation.stories.tsx +0 -120
  811. package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
  812. package/src/components/supportTicket/TicketHeader.tsx +0 -248
  813. package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
  814. package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
  815. package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -357
  816. package/src/components/supportTicket/TicketReplyBox.tsx +0 -172
  817. package/src/components/supportTicket/__fixtures__/kindMarks.ts +0 -28
  818. package/src/components/supportTicket/attachmentAccess.ts +0 -97
  819. package/src/components/supportTicket/fileToAttachment.ts +0 -24
  820. package/src/components/supportTicket/index.ts +0 -10
  821. package/src/components/supportTicket/meta.ts +0 -206
  822. package/src/components/supportTicket/ticketModel.ts +0 -131
  823. package/src/components/supportTicket/useLoadedImages.ts +0 -93
  824. package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -341
  825. package/src/components/ticketReferences/TicketReferences.tsx +0 -914
  826. package/src/components/ticketReferences/index.ts +0 -2
  827. package/src/components/ticketThread/TicketThread.stories.tsx +0 -898
  828. package/src/components/ticketThread/TicketThread.tsx +0 -706
  829. package/src/components/ticketThread/index.ts +0 -6
  830. package/src/contexts/FetchContext.tsx +0 -25
  831. package/src/contexts/ReqraftContext.tsx +0 -9
  832. package/src/contexts/StorageContext.tsx +0 -33
  833. package/src/global.d.ts +0 -4
  834. package/src/helpers/allowedValues.ts +0 -268
  835. package/src/helpers/choiceChip.ts +0 -227
  836. package/src/helpers/common.ts +0 -326
  837. package/src/helpers/dpqlDetection.ts +0 -209
  838. package/src/helpers/expressions.ts +0 -140
  839. package/src/helpers/fieldDescription.ts +0 -39
  840. package/src/helpers/optionUiTypes.ts +0 -199
  841. package/src/helpers/options.ts +0 -150
  842. package/src/helpers/providerValue.ts +0 -125
  843. package/src/helpers/scrollbar.ts +0 -32
  844. package/src/helpers/singleLineString.ts +0 -62
  845. package/src/helpers/templateItems.ts +0 -81
  846. package/src/helpers/templateText.ts +0 -350
  847. package/src/helpers/templates.ts +0 -602
  848. package/src/helpers/validations.ts +0 -2085
  849. package/src/hooks/useArgSchema.ts +0 -37
  850. package/src/hooks/useCoarsePointer.ts +0 -30
  851. package/src/hooks/useFetch/useFetch.stories.tsx +0 -379
  852. package/src/hooks/useFetch/useFetch.tsx +0 -154
  853. package/src/hooks/usePhoneViewport.ts +0 -34
  854. package/src/hooks/useQorusTypes.ts +0 -233
  855. package/src/hooks/useReqraftProperty.ts +0 -16
  856. package/src/hooks/useStorage/useStorage.stories.tsx +0 -168
  857. package/src/hooks/useStorage/useStorage.ts +0 -35
  858. package/src/hooks/useTemplates.ts +0 -123
  859. package/src/hooks/useValidation.ts +0 -9
  860. package/src/hooks/useWebSocket/useWebSocket.ts +0 -224
  861. package/src/hooks/useWebSocket/useWebsocket.stories.tsx +0 -640
  862. package/src/hooks/useWhyDidYouUpdate.ts +0 -38
  863. package/src/index.tsx +0 -86
  864. package/src/providers/FetchProvider.tsx +0 -40
  865. package/src/providers/ReqraftProvider.tsx +0 -52
  866. package/src/providers/StorageProvider.tsx +0 -131
  867. package/src/stores/currentUser/currentUser.stories.tsx +0 -100
  868. package/src/stores/currentUser/currentUser.tsx +0 -94
  869. package/src/stories/Data/fileFieldArgSchema.json +0 -86
  870. package/src/stories/Tests/utils.ts +0 -320
  871. package/src/stories/storyNetwork.ts +0 -92
  872. package/src/stories/tracking.tsx +0 -206
  873. package/src/tracking/browser/attach.ts +0 -186
  874. package/src/tracking/browser/env.ts +0 -78
  875. package/src/tracking/core/consent.ts +0 -37
  876. package/src/tracking/core/engagement.ts +0 -47
  877. package/src/tracking/core/experiments.ts +0 -258
  878. package/src/tracking/core/hash.ts +0 -26
  879. package/src/tracking/core/ids.ts +0 -25
  880. package/src/tracking/core/observable.ts +0 -23
  881. package/src/tracking/core/queue.ts +0 -131
  882. package/src/tracking/core/sections.ts +0 -166
  883. package/src/tracking/core/storage.ts +0 -69
  884. package/src/tracking/core/tracker.ts +0 -417
  885. package/src/tracking/core/types.ts +0 -162
  886. package/src/tracking/core/utm.ts +0 -23
  887. package/src/tracking/index.ts +0 -72
  888. package/src/tracking/markup.ts +0 -17
  889. package/src/tracking/react/Experiment.tsx +0 -44
  890. package/src/tracking/react/TrackingProvider.tsx +0 -56
  891. package/src/tracking/react/hooks.ts +0 -106
  892. package/src/tracking/react/index.ts +0 -13
  893. package/src/tracking/testing.ts +0 -108
  894. package/src/tracking/ui/ExperimentCard.stories.tsx +0 -296
  895. package/src/tracking/ui/ExperimentCard.tsx +0 -667
  896. package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -155
  897. package/src/tracking/ui/ExperimentsOverlay.tsx +0 -437
  898. package/src/tracking/ui/anchor.ts +0 -180
  899. package/src/tracking/ui/card.ts +0 -464
  900. package/src/tracking/ui/client.ts +0 -117
  901. package/src/tracking/ui/index.ts +0 -77
  902. package/src/tracking/ui/types.ts +0 -110
  903. package/src/tracking/ui/useExperimentsAdmin.ts +0 -103
  904. package/src/types/Form.ts +0 -29
  905. package/src/types.ts +0 -14
  906. package/src/utils/datetime.ts +0 -10
  907. package/src/utils/fetch.ts +0 -457
  908. package/src/utils/lspClient.ts +0 -711
  909. package/src/utils/lspClient.types.ts +0 -211
  910. package/src/utils/queryUnlessCancelled.ts +0 -28
  911. package/src/utils/websocket.ts +0 -293
  912. package/vite.config.ts +0 -58
  913. package/vitest.config.ts +0 -69
@@ -1,1121 +0,0 @@
1
- // Ported from qorus-ide `src/stories/Fields/Template.stories.tsx`
2
- // (FIELD_STACK_REPORT batch). Adaptations, per the builder-stories pattern:
3
- // - offline fixtures: `__fixtures__/templates.json` + `multiLevelTemplates.json`
4
- // copied verbatim from the IDE's `stories/Data`;
5
- // - the IDE's `_tests*` helpers are inlined with `@storybook/test` primitives;
6
- // - the expression catalogue for the function stories is `mockExpressions`
7
- // plus local `substr` / `PLUS-INT` entries (the IDE relies on the live
8
- // server catalogue) passed via the `expressions` prop;
9
- // - the IDE's leaf story components (`LongStringField`, `Number`, `string`)
10
- // are local 2-arg wrappers over reqraft's leaf fields, `auto` is the ported
11
- // `AutoFormField`.
12
- import { Meta, StoryObj } from '@storybook/react-vite';
13
- import { expect, fireEvent, fn, screen, userEvent, waitFor, within } from 'storybook/test';
14
- import { useState } from 'react';
15
- import { buildTemplates } from '../../../../helpers/templates';
16
- import { mockExpressions } from '../../expressions/mockExpressions';
17
- import { IExpressionSchema } from '../../expressions/types';
18
- import { AutoFormField as auto } from '../auto/AutoFormField';
19
- import LongStringFormField from '../long-string/LongString';
20
- import NumberFormField from '../number/Number';
21
- import { StringFormField } from '../string/String';
22
- import { LONG_EXAMPLE_VALUE } from './__fixtures__/longExampleValue';
23
- import { TemplateField } from './TemplateField';
24
- import multiLevelTemplates from './__fixtures__/multiLevelTemplates.json';
25
- import templates from './__fixtures__/templates.json';
26
-
27
- // --- IDE leaf story components (2-arg field API over reqraft leafs) ---------
28
-
29
- /* eslint-disable @typescript-eslint/no-unused-vars */
30
- const LongStringField = ({ name, onChange, type, level, allowTemplates, ...rest }: any) => (
31
- <LongStringFormField {...rest} onChange={(value: string) => onChange?.(name, value)} />
32
- );
33
- const Number = ({ name, onChange, type, level, allowTemplates, ...rest }: any) => (
34
- <NumberFormField {...rest} onChange={(value: number | string) => onChange?.(name, value)} />
35
- );
36
- const string = ({ name, onChange, type, level, allowTemplates, ...rest }: any) => (
37
- <StringFormField {...rest} onChange={(value: string) => onChange?.(name, value)} />
38
- );
39
- /* eslint-enable @typescript-eslint/no-unused-vars */
40
-
41
- // --- expression catalogue for the function stories ---------------------------
42
- // `substr` / `PLUS-INT` match the server schema shape used by the IDE stories.
43
-
44
- const storyExpressions: IExpressionSchema[] = [
45
- ...mockExpressions,
46
- {
47
- name: 'substr',
48
- display_name: 'Substring',
49
- short_desc: 'Returns a substring of the given string',
50
- desc: 'Returns a substring of the given string from the start position with the given length.',
51
- symbol: 'substr',
52
- type: 1,
53
- subtype: 1,
54
- return_type: 'string',
55
- ui_return_type: 'string',
56
- varargs: false,
57
- groups: ['String'],
58
- args: [
59
- { name: 'softstring', display_name: 'String', ui_type: 'richtext', required: true },
60
- { name: 'int', display_name: 'Start', ui_type: 'int', required: true },
61
- { name: 'int', display_name: 'Length', ui_type: 'int', required: false },
62
- ],
63
- } as IExpressionSchema,
64
- {
65
- name: 'PLUS-INT',
66
- display_name: 'Plus',
67
- short_desc: 'Adds two integers',
68
- desc: 'Adds two integers.',
69
- symbol: '+',
70
- type: 1,
71
- subtype: 1,
72
- return_type: 'int',
73
- ui_return_type: 'int',
74
- varargs: false,
75
- groups: ['Math'],
76
- args: [
77
- { name: 'int', display_name: 'Value', ui_type: 'int', required: true },
78
- { name: 'int', display_name: 'Value', ui_type: 'int', required: true },
79
- ],
80
- } as IExpressionSchema,
81
- ];
82
-
83
- // --- inlined test helpers (equivalents of the IDE `../Tests/utils`) ---------
84
-
85
- const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
86
-
87
- async function _testsClickButton({
88
- label,
89
- selector,
90
- nth = 0,
91
- wait = 7000,
92
- parent = '.reqore-button',
93
- }: {
94
- label?: string;
95
- selector?: string;
96
- nth?: number;
97
- wait?: number;
98
- parent?: string;
99
- }) {
100
- if (!label) {
101
- await waitFor(() => expect(document.querySelectorAll(selector)[nth]).toBeInTheDocument(), {
102
- timeout: wait,
103
- });
104
- await waitFor(() => expect(document.querySelectorAll(selector)[nth]).toBeEnabled(), {
105
- timeout: wait,
106
- });
107
- await userEvent.click(document.querySelectorAll(selector)[nth]);
108
- } else {
109
- await waitFor(() => expect(screen.queryAllByText(label, { selector })[nth]).toBeInTheDocument(), {
110
- timeout: wait,
111
- });
112
- await waitFor(
113
- () => expect(screen.queryAllByText(label, { selector })[nth].closest(parent)).toBeEnabled(),
114
- { timeout: wait }
115
- );
116
- await userEvent.click(screen.queryAllByText(label, { selector })[nth]);
117
- }
118
- }
119
-
120
- async function _testsWaitForText(
121
- text: string | number | RegExp,
122
- selector?: string,
123
- nth: number = 1,
124
- exist: boolean = true
125
- ) {
126
- await waitFor(
127
- () => {
128
- const element = screen.queryAllByText(text, { selector })[nth - 1];
129
-
130
- if (!exist && !element) {
131
- return Promise.resolve();
132
- }
133
-
134
- return expect(element).toBeInTheDocument();
135
- },
136
- { timeout: 10000 }
137
- );
138
- }
139
-
140
- async function _testsWaitForTextToNotExist(text: string, selector?: string, nth: number = 1) {
141
- await _testsWaitForText(text, selector, nth, false);
142
- }
143
-
144
- async function _testsOpenTemplateMenu(nth: number = 1) {
145
- await _testsClickButton({ selector: '.template-more', nth: nth - 1 });
146
- }
147
-
148
- async function _testsSetTemplate(nth: number = 1) {
149
- await _testsOpenTemplateMenu(nth);
150
- await _testsClickButton({ selector: '.template-toggle' });
151
- }
152
-
153
- async function _testsOpenTemplates(nth: number = 1) {
154
- await waitFor(
155
- async () => {
156
- await expect(
157
- document.querySelectorAll('.template-selector.reqore-control')[nth - 1]
158
- ).toBeInTheDocument();
159
- },
160
- { timeout: 10000 }
161
- );
162
-
163
- // IDE-verbatim settle (stories/Tests/utils.ts): ReQore's textarea focus
164
- // handler needs a beat before the selector click lands — no deterministic
165
- // DOM signal to waitFor on.
166
- await sleep(1500);
167
-
168
- await _testsClickButton({
169
- selector: '.template-selector.reqore-control',
170
- wait: 15000,
171
- nth: nth - 1,
172
- });
173
-
174
- await waitFor(
175
- () => expect(document.querySelector('.reqore-popover-content')).toBeInTheDocument(),
176
- { timeout: 10000 }
177
- );
178
- }
179
-
180
- // -----------------------------------------------------------------------------
181
-
182
- const meta = {
183
- component: TemplateField,
184
- title: 'Components/Form/Template',
185
- args: {
186
- templates: buildTemplates(templates as any),
187
- onChange: fn(),
188
- },
189
- render: (args) => {
190
- const [value, setValue] = useState(args.value);
191
-
192
- return (
193
- <TemplateField
194
- {...args}
195
- value={value}
196
- onChange={(name, value) => {
197
- args.onChange(name, value);
198
- setValue(value);
199
- }}
200
- />
201
- );
202
- },
203
- } as Meta<typeof TemplateField>;
204
-
205
- export default meta;
206
-
207
- export const StringComponent: StoryObj<typeof meta> = {
208
- args: {
209
- component: LongStringField,
210
- value: 'Some string',
211
- type: 'string',
212
- },
213
- parameters: {
214
- docs: {
215
- description: {
216
- story:
217
- 'Renders TemplateField wrapping a LongString component with a plain string value — the field shows the literal string in a textarea, no template selected.',
218
- },
219
- },
220
- },
221
- };
222
-
223
- export const BooleanComponent: StoryObj<typeof meta> = {
224
- args: {
225
- value: true,
226
- type: 'boolean',
227
- allowTemplates: true,
228
- componentFromType: true,
229
- },
230
- parameters: {
231
- docs: {
232
- description: {
233
- story:
234
- 'Renders TemplateField for a boolean value with templates allowed — the boolean toggle is shown with the template toggle available on the side.',
235
- },
236
- },
237
- },
238
- };
239
-
240
- export const NumberComponent: StoryObj<typeof meta> = {
241
- args: {
242
- value: 25,
243
- type: 'int',
244
- allowTemplates: true,
245
- componentFromType: true,
246
- },
247
- parameters: {
248
- docs: {
249
- description: {
250
- story:
251
- 'Renders TemplateField for an int value of 25 with templates allowed — the numeric input is shown alongside the template toggle.',
252
- },
253
- },
254
- },
255
- };
256
-
257
- export const AutoComponent: StoryObj<typeof meta> = {
258
- args: {
259
- defaultType: 'auto',
260
- allowTemplates: true,
261
- component: auto,
262
- },
263
- parameters: {
264
- docs: {
265
- description: {
266
- story:
267
- 'Renders TemplateField over an untyped (`auto`) field that accepts templates. While the field is empty it opens on an editor to type into, which offers the templates — never on a data-type picker, so the author can write the value they mean without answering how it is stored.',
268
- },
269
- },
270
- },
271
- play: async ({ canvasElement }) => {
272
- /* The editor itself, not a class: TemplateField puts `.template-selector`
273
- on every control it draws, the data-type picker included, so asserting
274
- the class passed while the story showed "Please select data type". */
275
- await waitFor(() => expect(canvasElement.querySelector('[contenteditable="true"]')).toBeTruthy(), {
276
- timeout: 5000,
277
- });
278
- expect(canvasElement.textContent).not.toContain('Please select data type');
279
- expect(canvasElement.textContent).not.toContain('Select Template');
280
- },
281
- };
282
-
283
- export const AllowedValuesWithTemplate: StoryObj<typeof meta> = {
284
- args: {
285
- defaultType: 'string',
286
- allowTemplates: true,
287
- allowed_values: [
288
- {
289
- value: { type: 'string', value: 'Test' },
290
- display_name: 'Test',
291
- },
292
- ],
293
- component: auto,
294
- },
295
- parameters: {
296
- docs: {
297
- description: {
298
- story:
299
- 'Renders TemplateField restricted to a single allowed value ("Test") but with templates also allowed — the operator can pick the allowed value or switch to a template.',
300
- },
301
- },
302
- },
303
- };
304
-
305
- export const TemplateValue: StoryObj<typeof meta> = {
306
- args: {
307
- component: Number,
308
- type: 'int',
309
- value: '$local:id',
310
- },
311
- parameters: {
312
- docs: {
313
- description: {
314
- story:
315
- 'Renders TemplateField for an int wrapped over the Number component with a template value ($local:id) — the template selector replaces the number input.',
316
- },
317
- },
318
- },
319
- };
320
-
321
- /** REGRESSION — a rehydrated whole-token template value (the FSM state-output
322
- * `$data:{…}` form above all) must render as the picker CHIP, not as its raw
323
- * token text in a string editor. */
324
- export const BracedTemplateValue: StoryObj<typeof meta> = {
325
- args: {
326
- component: LongStringField,
327
- type: 'string',
328
- allowTemplates: true,
329
- allowCustomValues: true,
330
- value: '$data:{W2n_BuSHbaNrbvV1MkfPF.filename}',
331
- templates: buildTemplates({
332
- state_outputs: {
333
- display_name: 'Context Data',
334
- short_desc: 'Outputs of previous states',
335
- app: 'GoogleDrive',
336
- items: [
337
- {
338
- name: 'filename',
339
- display_name: 'Filename',
340
- short_desc: 'The uploaded file name',
341
- desc: 'The uploaded file name',
342
- value: '$data:{W2n_BuSHbaNrbvV1MkfPF.filename}',
343
- type: 'string',
344
- },
345
- ],
346
- },
347
- } as any),
348
- },
349
- parameters: {
350
- docs: {
351
- description: {
352
- story:
353
- 'Renders TemplateField for a string field whose saved value is a braced state-output reference ($data:{id.filename}) — the field shows the resolved picker chip ("Filename"), never the raw token in a textarea, which is what rehydrated drafts degraded to before the token grammar learned braces.',
354
- },
355
- },
356
- },
357
- play: async () => {
358
- await waitFor(() => {
359
- const chip = Array.from(document.querySelectorAll('.reqore-button')).find((button) =>
360
- button.textContent?.includes('Filename')
361
- );
362
- expect(chip, 'the braced value renders as the labeled picker chip').toBeTruthy();
363
- });
364
- const rawTextareas = Array.from(document.querySelectorAll('textarea')).filter((textarea) =>
365
- textarea.value.includes('$data:{')
366
- );
367
- expect(rawTextareas, 'no textarea holds the raw token').toHaveLength(0);
368
- },
369
- };
370
-
371
- /** A template-authored Qog keys its states `'1'`, `'2'`, … while each state
372
- * carries its own id, and its saved `$data:{…}` refs use that id — so the
373
- * catalogue (spelled with the key) and the value (spelled with the id) never
374
- * match as text. The producer supplies the alternate spelling as an alias so
375
- * the chip still resolves to a name instead of printing the raw token. */
376
- export const AliasedStateTemplateValue: StoryObj<typeof meta> = {
377
- args: {
378
- component: LongStringField,
379
- type: 'string',
380
- allowTemplates: true,
381
- allowCustomValues: true,
382
- // what the Qog has saved — the state's own id
383
- value: '$data:{dc_ai_reply.choices}',
384
- templates: {
385
- items: [
386
- {
387
- label: 'Generate AI Reply',
388
- description: 'Outputs of the Groq chat-completion state',
389
- items: [
390
- {
391
- label: 'Choices',
392
- // what the server's catalogue offers — the states-hash key
393
- value: '$data:{3.choices}',
394
- badge: 'list',
395
- metadata: { aliasValues: ['$data:{dc_ai_reply.choices}'] },
396
- },
397
- ],
398
- },
399
- ],
400
- } as any,
401
- },
402
- parameters: {
403
- docs: {
404
- description: {
405
- story:
406
- 'Renders TemplateField holding a state-output reference spelled with the state id ($data:{dc_ai_reply.choices}) while the catalogue offers the same item spelled with the states-hash key ($data:{3.choices}) — the chip resolves through the item alias and shows "Choices", where it used to print the raw token.',
407
- },
408
- },
409
- },
410
- play: async () => {
411
- await waitFor(() => {
412
- const chip = Array.from(document.querySelectorAll('.reqore-button')).find((button) =>
413
- button.textContent?.includes('Choices')
414
- );
415
- expect(chip, 'the aliased value resolves to the labeled picker chip').toBeTruthy();
416
- });
417
- const rawChips = Array.from(document.querySelectorAll('.reqore-button')).filter((button) =>
418
- button.textContent?.includes('$data:{')
419
- );
420
- expect(rawChips, 'no chip prints the raw token').toHaveLength(0);
421
- },
422
- };
423
-
424
- /** A catalogue can only offer what the action's output type declares, so it
425
- * stops at a list — `choices` is offered, `choices[0].message.content` is
426
- * hand-written past it. Such a value has no item of its own and used to
427
- * render as its raw token; it is now named after its nearest ancestor. */
428
- export const ExtendedPathTemplateValue: StoryObj<typeof meta> = {
429
- args: {
430
- component: LongStringField,
431
- type: 'string',
432
- allowTemplates: true,
433
- allowCustomValues: true,
434
- value: '$data:{dc_ai_reply.choices[0].message.content}',
435
- templates: {
436
- items: [
437
- {
438
- label: 'Generate AI Reply',
439
- items: [
440
- {
441
- label: 'Choices',
442
- value: '$data:{3.choices}',
443
- badge: 'list',
444
- metadata: { aliasValues: ['$data:{dc_ai_reply.choices}'] },
445
- },
446
- ],
447
- },
448
- ],
449
- } as any,
450
- },
451
- parameters: {
452
- docs: {
453
- description: {
454
- story:
455
- 'Renders TemplateField holding a path extended past the named field it starts from ($data:{dc_ai_reply.choices[0].message.content}, where the catalogue only offers "choices") — the chip is named after its nearest ancestor as "Choices[0].message.content" instead of printing the raw token.',
456
- },
457
- },
458
- },
459
- play: async () => {
460
- await waitFor(() => {
461
- const chip = Array.from(document.querySelectorAll('.reqore-button')).find((button) =>
462
- button.textContent?.includes('Choices[0].message.content')
463
- );
464
- expect(chip, 'the extended path is named after its ancestor').toBeTruthy();
465
- });
466
- const rawChips = Array.from(document.querySelectorAll('.reqore-button')).filter((button) =>
467
- button.textContent?.includes('$data:{')
468
- );
469
- expect(rawChips, 'no chip prints the raw token').toHaveLength(0);
470
- },
471
- };
472
-
473
- export const ElementTypeInListShowsCorrectTemplates: StoryObj<typeof meta> = {
474
- args: {
475
- component: auto,
476
- defaultType: 'list',
477
- ui_element_type: 'number',
478
- display_name: 'Test',
479
- value: [
480
- { type: 'number', value: 1 },
481
- { type: 'number', value: 2 },
482
- { type: 'number', value: 3 },
483
- ],
484
- },
485
- parameters: {
486
- docs: {
487
- description: {
488
- story:
489
- 'Renders TemplateField in list mode with three number items. Adding a new item and opening the templates popover shows the templates that resolve to the number element type.',
490
- },
491
- },
492
- },
493
- play: async () => {
494
- await _testsClickButton({ label: 'Add new item for "Test"' });
495
- await _testsOpenTemplates();
496
- await _testsWaitForText('Interface ID');
497
- },
498
- };
499
-
500
- export const ShowsTemplatesList: StoryObj<typeof meta> = {
501
- ...TemplateValue,
502
- parameters: {
503
- docs: {
504
- description: {
505
- story:
506
- 'Renders TemplateField with the $local:id template value, then opens the templates popover — the operator sees the available templates that resolve to an int.',
507
- },
508
- },
509
- },
510
- play: async () => {
511
- await _testsOpenTemplates();
512
- },
513
- };
514
-
515
- export const ShowsTemplatesListForString: StoryObj<typeof meta> = {
516
- ...StringComponent,
517
- parameters: {
518
- docs: {
519
- description: {
520
- story:
521
- 'Renders TemplateField over a LongString component with a plain string value, then opens the templates popover — the templates list is shown for a string target type.',
522
- },
523
- },
524
- },
525
- play: async () => {
526
- await _testsOpenTemplates();
527
- },
528
- };
529
-
530
- export const ShowsTemplatesListForBoolean: StoryObj<typeof meta> = {
531
- ...BooleanComponent,
532
- parameters: {
533
- docs: {
534
- description: {
535
- story:
536
- 'Renders TemplateField for a boolean value, switches to template mode and opens the templates popover — the templates list is shown for a boolean target type.',
537
- },
538
- },
539
- },
540
- play: async () => {
541
- await _testsSetTemplate();
542
- await _testsOpenTemplates();
543
- },
544
- };
545
-
546
- export const ShowsTemplatesListForNumber: StoryObj<typeof meta> = {
547
- ...NumberComponent,
548
- parameters: {
549
- docs: {
550
- description: {
551
- story:
552
- 'Renders TemplateField for an int value, then opens the templates popover — the templates list is shown for an int target type.',
553
- },
554
- },
555
- },
556
- play: async () => {
557
- await _testsOpenTemplates();
558
- },
559
- };
560
-
561
- export const TemplateValueCanBeRemoved: StoryObj<typeof meta> = {
562
- args: {
563
- value: '$config:boolean',
564
- type: 'boolean',
565
- allowTemplates: true,
566
- componentFromType: true,
567
- },
568
- parameters: {
569
- docs: {
570
- description: {
571
- story:
572
- 'Renders TemplateField holding a $config:boolean template value. Clicking the template-remove action clears the template and the underlying boolean checkbox is shown instead.',
573
- },
574
- },
575
- },
576
- play: async () => {
577
- await expect(document.querySelector('.template-selector')).toBeInTheDocument();
578
-
579
- await fireEvent.click(document.querySelector('.template-remove'));
580
-
581
- await expect(document.querySelector('.reqore-checkbox')).toBeInTheDocument();
582
- },
583
- };
584
-
585
- export const TemplateWithFunctions: StoryObj<typeof meta> = {
586
- args: {
587
- allowFunctions: true,
588
- type: 'string',
589
- defaultType: 'string',
590
- component: auto,
591
- fixed: true,
592
- fluid: false,
593
- expressions: storyExpressions as any,
594
- },
595
- parameters: {
596
- docs: {
597
- description: {
598
- story:
599
- 'Renders TemplateField with allowFunctions enabled — the template menu now exposes a "Use Expression" entry alongside the plain templates.',
600
- },
601
- },
602
- },
603
- play: async () => {
604
- await _testsOpenTemplateMenu();
605
- await _testsWaitForText('Use Expression');
606
- },
607
- };
608
-
609
- export const TemplateWithFunctionValue: StoryObj<typeof meta> = {
610
- args: {
611
- allowFunctions: true,
612
- isFunction: true,
613
- value: {
614
- exp: 'substr',
615
- args: [
616
- { type: 'string', value: '$local:name' },
617
- { type: 'int', value: '$local:start' },
618
- { type: 'int', value: 10 },
619
- ],
620
- },
621
- type: 'string',
622
- defaultType: 'string',
623
- component: auto,
624
- fixed: true,
625
- fluid: false,
626
- expressions: storyExpressions as any,
627
- },
628
- parameters: {
629
- docs: {
630
- description: {
631
- story:
632
- 'Renders TemplateField holding a substr function value with three arguments — the expression builder shows the function name and each argument slot.',
633
- },
634
- },
635
- },
636
- };
637
-
638
- export const TemplateWithNestedFunctionValue: StoryObj<typeof meta> = {
639
- args: {
640
- allowFunctions: true,
641
- isFunction: true,
642
- value: {
643
- exp: 'substr',
644
- args: [
645
- { type: 'string', value: '$local:name' },
646
- {
647
- type: 'int',
648
- value: {
649
- exp: 'PLUS-INT',
650
- args: [
651
- { type: 'int', value: '$local:start' },
652
- { type: 'int', value: '5' },
653
- ],
654
- },
655
- is_expression: true,
656
- },
657
- { type: 'int', value: 10 },
658
- ],
659
- },
660
- type: 'string',
661
- defaultType: 'string',
662
- component: auto,
663
- fixed: true,
664
- fluid: false,
665
- expressions: storyExpressions as any,
666
- },
667
- parameters: {
668
- docs: {
669
- description: {
670
- story:
671
- 'Renders TemplateField holding a substr function whose second argument is itself a PLUS-INT expression — the expression builder shows the nested function inline within the outer call.',
672
- },
673
- },
674
- },
675
- };
676
-
677
- export const TemplateCanBeSelected: StoryObj<typeof meta> = {
678
- args: {
679
- type: 'string',
680
- defaultType: 'string',
681
- defaultInternalType: 'string',
682
- },
683
- parameters: {
684
- docs: {
685
- description: {
686
- story:
687
- 'Renders TemplateField for a string, opens the templates popover and clicks the Interface ID template — the field switches to template mode, where the $local:id reference is a chip named Interface ID inside an editor that can still be typed into.',
688
- },
689
- },
690
- },
691
- play: async ({ canvasElement, ...rest }) => {
692
- const canvas = within(canvasElement);
693
-
694
- await ShowsTemplatesListForString.play({ canvasElement, ...rest });
695
- await _testsClickButton({ label: 'Interface ID' });
696
-
697
- // The chosen reference reads as the name it was chosen by, in an editor
698
- // that can still be typed into — not as its spelling.
699
- await waitFor(
700
- () => {
701
- const chip = canvasElement.querySelector('.template-selector [contenteditable="true"] .reqore-tag');
702
- expect(chip?.textContent).toContain('Interface ID');
703
- },
704
- { timeout: 5000 }
705
- );
706
- await expect(canvas.queryByDisplayValue('$local:id')).toBeNull();
707
- },
708
- };
709
-
710
- export const ValueIsResetWhenChangingToCustom: StoryObj<typeof meta> = {
711
- parameters: {
712
- docs: {
713
- description: {
714
- story:
715
- 'Renders TemplateField over a number type holding a $config:something template value. Clicking template-remove resets the value to undefined and fires onChange with the cleared value.',
716
- },
717
- },
718
- },
719
- render: (args) => {
720
- const [value, setValue] = useState(args.value);
721
-
722
- return (
723
- <TemplateField
724
- {...args}
725
- value={value}
726
- onChange={(name, value) => {
727
- args.onChange(name, value);
728
- setValue(value);
729
- }}
730
- />
731
- );
732
- },
733
- args: {
734
- component: string,
735
- type: 'number',
736
- value: '$config:something',
737
- name: 'Test Field',
738
- },
739
- play: async ({ args }) => {
740
- await waitFor(
741
- async () => {
742
- await expect(document.querySelector('.template-selector')).toBeInTheDocument();
743
- },
744
- { timeout: 10000 }
745
- );
746
-
747
- await fireEvent.click(document.querySelectorAll('.template-remove')[0]);
748
- await expect(args.onChange).toHaveBeenLastCalledWith('Test Field', undefined);
749
- },
750
- };
751
-
752
- export const TemplatesWithMultipleLevels: StoryObj<typeof meta> = {
753
- args: {
754
- component: LongStringField,
755
- type: 'string',
756
- templates: buildTemplates(multiLevelTemplates as any),
757
- },
758
- parameters: {
759
- docs: {
760
- description: {
761
- story:
762
- 'Renders TemplateField for a string with a hierarchical template catalogue. Drilling into "Testing Hash" narrows the list to templates that resolve to a string (Testing Int Item is filtered out).',
763
- },
764
- },
765
- },
766
- play: async () => {
767
- await _testsOpenTemplates();
768
- await _testsClickButton({ label: 'Testing Hash' });
769
- await _testsWaitForText('Testing String Item');
770
- await _testsWaitForTextToNotExist('Testing Int Item');
771
- },
772
- };
773
-
774
- export const TemplatesWithMultipleLevelsAndHashField: StoryObj<typeof meta> = {
775
- parameters: {
776
- docs: {
777
- description: {
778
- story:
779
- 'Renders TemplateField for a hash type with a hierarchical template catalogue — switching to template mode and opening the popover exposes the nested template groups.',
780
- },
781
- },
782
- },
783
- render: (args) => {
784
- const [value, setValue] = useState(args.value);
785
-
786
- return (
787
- <TemplateField
788
- {...args}
789
- value={value}
790
- onChange={(name, value) => {
791
- args.onChange(name, value);
792
- setValue(value);
793
- }}
794
- />
795
- );
796
- },
797
- args: {
798
- component: auto,
799
- type: 'hash',
800
- defaultType: 'hash',
801
- templates: buildTemplates(multiLevelTemplates as any),
802
- },
803
- play: async () => {
804
- await _testsSetTemplate();
805
- await _testsOpenTemplates();
806
- },
807
- };
808
-
809
- export const TemplateWithItemsCanBeSelected: StoryObj<typeof meta> = {
810
- ...TemplatesWithMultipleLevelsAndHashField,
811
- parameters: {
812
- docs: {
813
- description: {
814
- story:
815
- 'Renders TemplateField for a hash type with a hierarchical catalogue. Selecting an item from a nested group updates the template value to the picked entry (Testing Hash).',
816
- },
817
- },
818
- },
819
- play: async (args) => {
820
- await TemplatesWithMultipleLevelsAndHashField.play(args);
821
- await _testsClickButton({ selector: '.reqore-menu-item-left-action' });
822
- await _testsWaitForText('Testing Hash');
823
- },
824
- };
825
-
826
- /* One group, four items covering every affordance combination:
827
- - "Attachment Body" — leaf, LONG example → "?" (right) only
828
- - "Attachment Name" — leaf, short example → no actions at all
829
- - "Message Author Props" — hash with children, LONG example (the whole
830
- object) → BOTH: the "+" select action (left) and the "?" (right)
831
- - "Delivery Flags" — hash with children, short example → "+" only
832
- The sentinel at the very end proves truncation in the picker and
833
- completeness in the modal. */
834
- const longExampleTemplates = {
835
- gmail_attachment: {
836
- display_name: 'New Attachment',
837
- short_desc: 'Data from the attachment trigger',
838
- app: 'Gmail',
839
- items: [
840
- {
841
- name: 'attachment_body',
842
- display_name: 'Attachment Body',
843
- value: '$data:{on_attachment.data}',
844
- type: 'data',
845
- example_value: LONG_EXAMPLE_VALUE,
846
- },
847
- {
848
- name: 'attachment_name',
849
- display_name: 'Attachment Name',
850
- value: '$data:{on_attachment.name}',
851
- type: 'string',
852
- example_value: 'invoice.pdf',
853
- },
854
- {
855
- name: 'author',
856
- display_name: 'Message Author Properties',
857
- value: '$data:{on_attachment.author}',
858
- type: 'hash',
859
- // A parent's example is the whole object, so it goes long almost by
860
- // definition — this is the "+ AND ?" case.
861
- example_value: {
862
- name: 'Ada Lovelace',
863
- email: 'ada@example.com',
864
- signature: LONG_EXAMPLE_VALUE.slice(0, 600),
865
- },
866
- items: [
867
- {
868
- name: 'author_name',
869
- display_name: 'Name',
870
- value: '$data:{on_attachment.author.name}',
871
- type: 'string',
872
- example_value: 'Ada Lovelace',
873
- },
874
- {
875
- name: 'author_email',
876
- display_name: 'Email',
877
- value: '$data:{on_attachment.author.email}',
878
- type: 'string',
879
- example_value: 'ada@example.com',
880
- },
881
- ],
882
- },
883
- {
884
- name: 'flags',
885
- display_name: 'Delivery Flags',
886
- value: '$data:{on_attachment.flags}',
887
- type: 'hash',
888
- // Small object: the serialized example stays under the preview
889
- // threshold, so this parent keeps ONLY the "+" select action.
890
- example_value: { read: true },
891
- items: [
892
- {
893
- name: 'flags_read',
894
- display_name: 'Read',
895
- value: '$data:{on_attachment.flags.read}',
896
- type: 'bool',
897
- example_value: true,
898
- },
899
- ],
900
- },
901
- ],
902
- },
903
- };
904
-
905
- export const LongExampleValueTruncatedWithModal: StoryObj<typeof meta> = {
906
- args: {
907
- component: LongStringField,
908
- value: 'Some string',
909
- type: 'string',
910
- templates: buildTemplates(longExampleTemplates as any),
911
- },
912
- parameters: {
913
- docs: {
914
- description: {
915
- story:
916
- 'Every item-affordance combination in one picker: a leaf with a whole-base64-file example gets a single-line ellipsized preview (cut at the popover\'s actual width — no breakpoints) and the "?" action (right) opening the full value in a modal; a hash parent whose own example object is long gets BOTH the "+" select action (left) and the "?"; a small hash parent keeps only the "+"; and a short leaf keeps its full wrapped preview with no actions. Neither previewing nor copying ever selects an item.',
917
- },
918
- },
919
- },
920
- play: async ({ args }) => {
921
- await _testsOpenTemplates();
922
- await _testsWaitForText('Attachment Body');
923
-
924
- // The picker shows TRUNCATED previews — the long value's tail sentinel
925
- // must not be in the popover…
926
- const popover = document.querySelector('.reqore-popover-content');
927
- await expect(popover.textContent).toContain('Example value: "JVBERi0x');
928
- await expect(popover.textContent).not.toContain('THE_VERY_END');
929
-
930
- // …and the affordances land exactly by shape: "?" on the long leaf AND
931
- // the long-example hash parent (2), "+" on both hash parents (2) — the
932
- // long-example parent carries both at once. The short leaf and the small
933
- // parent's example stay modal-free.
934
- await expect(popover.querySelectorAll('.reqore-menu-item-right-action').length).toBe(2);
935
- await expect(popover.querySelectorAll('.reqore-menu-item-left-action').length).toBe(2);
936
-
937
- // Long previews are single-line ellipsized at the RENDERED width
938
- // (container-intrinsic — the same item adapts to any popover width);
939
- // short previews keep normal wrapping.
940
- const descriptions = popover.querySelectorAll('.reqore-button-description');
941
- const longDescription = Array.from(descriptions).find((el) =>
942
- el.textContent?.includes('JVBERi0x')
943
- ) as HTMLElement;
944
- const shortDescription = Array.from(descriptions).find((el) =>
945
- el.textContent?.includes('invoice.pdf')
946
- ) as HTMLElement;
947
- await expect(getComputedStyle(longDescription).whiteSpace).toBe('nowrap');
948
- await expect(longDescription.scrollWidth).toBeGreaterThan(longDescription.clientWidth);
949
- await expect(getComputedStyle(shortDescription).whiteSpace).not.toBe('nowrap');
950
-
951
- await _testsClickButton({ selector: '.reqore-menu-item-right-action' });
952
-
953
- const modal = await waitFor(
954
- () => {
955
- const el = document.querySelector('.reqraft-template-example-value-modal');
956
- if (!el) throw new Error('modal not open yet');
957
- return el;
958
- },
959
- { timeout: 10000 }
960
- );
961
-
962
- // The modal holds the WHOLE value, down to the sentinel.
963
- const textarea = modal.querySelector('textarea') as HTMLTextAreaElement;
964
- await expect(textarea.value.endsWith('THE_VERY_END"')).toBe(true);
965
-
966
- // Close it; opening/previewing must never have selected the item.
967
- fireEvent.click(modal.querySelector('.reqore-drawer-close-button'));
968
- await waitFor(
969
- () => {
970
- if (document.querySelector('.reqraft-template-example-value-modal')) {
971
- throw new Error('modal still open');
972
- }
973
- },
974
- { timeout: 10000 }
975
- );
976
- await expect(args.onChange).not.toHaveBeenCalled();
977
-
978
- // End on the informative frame for the visual snapshot: the popover with
979
- // the truncated preview and its "?" action visible (the assertions above
980
- // close everything, which would leave the capture showing an empty field).
981
- await _testsOpenTemplates();
982
- await _testsWaitForText('Attachment Body');
983
- },
984
- };
985
-
986
- /**
987
- * An EMPTY `any` field opens on the template selector, not the type picker.
988
- *
989
- * An `any` field has no editor of its own until a concrete type is chosen, so it
990
- * used to open on the type picker — making the author answer a question about
991
- * storage ("Text or Number?") before they could say what they meant, and often a
992
- * question they cannot answer, because the value they want is a reference to
993
- * something else whose type is not theirs to pick.
994
- *
995
- * The literal is still one menu item away: "Set Custom Value" in the ⋮ menu.
996
- * That is the right way round — picking a template is choosing from a list,
997
- * picking a literal is a decision.
998
- */
999
- export const EmptyAnyOpensOnTemplates: StoryObj<typeof meta> = {
1000
- args: {
1001
- component: auto,
1002
- type: 'any',
1003
- allowTemplates: true,
1004
- allowCustomValues: true,
1005
- value: undefined,
1006
- },
1007
- parameters: {
1008
- docs: {
1009
- description: {
1010
- story:
1011
- 'An untyped, empty field that accepts templates opens on an editor to type into, which offers the templates — never on a data-type picker.',
1012
- },
1013
- },
1014
- },
1015
- play: async ({ canvasElement }) => {
1016
- /* The editor itself, not a class: TemplateField puts `.template-selector`
1017
- on every control it draws, the data-type picker included, so asserting
1018
- the class passed while the story showed "Please select data type". */
1019
- await waitFor(() => expect(canvasElement.querySelector('[contenteditable="true"]')).toBeTruthy(), {
1020
- timeout: 5000,
1021
- });
1022
- expect(canvasElement.textContent).not.toContain('Please select data type');
1023
- expect(canvasElement.textContent).not.toContain('Select Template');
1024
- },
1025
- };
1026
-
1027
- /** A string mixing text with template references, as template mode edits it. */
1028
- const templateReferencesInText: StoryObj<typeof meta> = {
1029
- args: {
1030
- type: 'string',
1031
- defaultType: 'string',
1032
- defaultInternalType: 'string',
1033
- value: 'Interface $local:id failed at $timestamp:now',
1034
- },
1035
- play: async ({ canvasElement }) => {
1036
- const editor = await waitFor(
1037
- () => {
1038
- const element = canvasElement.querySelector<HTMLElement>('.template-selector [contenteditable="true"]');
1039
- expect(element).toBeTruthy();
1040
- return element!;
1041
- },
1042
- { timeout: 5000 }
1043
- );
1044
- // Each reference is its catalogue name; the text between them is untouched.
1045
- await waitFor(() =>
1046
- expect(Array.from(editor.querySelectorAll('.reqore-tag')).map((chip) => chip.textContent?.trim())).toEqual([
1047
- 'Interface ID',
1048
- 'Current Timestamp',
1049
- ])
1050
- );
1051
- expect(editor.textContent).toContain('failed at');
1052
- expect(editor.textContent).not.toContain('$local:id');
1053
- },
1054
- };
1055
-
1056
- export const TemplateReferencesInText: StoryObj<typeof meta> = {
1057
- ...templateReferencesInText,
1058
- parameters: {
1059
- docs: {
1060
- description: {
1061
- story:
1062
- 'Renders TemplateField holding the string "Interface $local:id failed at $timestamp:now". Template mode draws each reference as a chip named from the catalogue (Interface ID, Current Timestamp) inside an editor that can still be typed into; the text between them reads as typed.',
1063
- },
1064
- },
1065
- },
1066
- };
1067
-
1068
- export const TemplateReferencesInTextOnPhone: StoryObj<typeof meta> = {
1069
- ...templateReferencesInText,
1070
- parameters: {
1071
- qlip: { viewport: { width: 390, height: 844 } },
1072
- docs: {
1073
- description: {
1074
- story:
1075
- 'Renders the same string with two template references at phone width (390px): the named chips and the text around them wrap inside the editor rather than overflowing it.',
1076
- },
1077
- },
1078
- },
1079
- };
1080
-
1081
- /**
1082
- * An `any` field that ALREADY HOLDS A LITERAL opens on that literal.
1083
- *
1084
- * The other half of the same choice, and the one that keeps it safe: defaulting
1085
- * to the template view unconditionally would hide a value the author had already
1086
- * typed, which reads as the value having been lost.
1087
- */
1088
- export const AnyWithLiteralOpensOnTheValue: StoryObj<typeof meta> = {
1089
- args: {
1090
- component: auto,
1091
- type: 'any',
1092
- allowTemplates: true,
1093
- allowCustomValues: true,
1094
- value: 'already-typed',
1095
- },
1096
- parameters: {
1097
- docs: {
1098
- description: {
1099
- story:
1100
- 'An untyped field holding a literal keeps showing that literal — only an empty one defaults to the template selector. Where the field offers templates that editor is the chip editor (a contenteditable box), not a textarea, so the literal appears there.',
1101
- },
1102
- },
1103
- },
1104
- play: async ({ canvasElement }) => {
1105
- // The property that matters is that the VALUE is still on screen. Asserting
1106
- // the absence of `.template-selector` would be wrong: that class is also on
1107
- // a control that renders either way, so it says nothing about which view is
1108
- // active.
1109
- await waitFor(() => {
1110
- // Its editor may be a field or, where templates are offered, the chip editor.
1111
- const shown = [
1112
- ...canvasElement.querySelectorAll<HTMLElement>('input, textarea, [contenteditable="true"]'),
1113
- ].map((el) =>
1114
- el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement ?
1115
- el.value
1116
- : (el.textContent ?? '').replace(/\uFEFF/g, '').trim()
1117
- );
1118
- expect(shown).toContain('already-typed');
1119
- });
1120
- },
1121
- };