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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (774) hide show
  1. package/README.md +53 -1
  2. package/dist/components/Description/describedControl.d.ts +54 -0
  3. package/dist/components/Description/describedControl.d.ts.map +1 -0
  4. package/dist/components/Description/describedControl.js +81 -0
  5. package/dist/components/Description/describedControl.js.map +1 -0
  6. package/dist/components/Description/index.d.ts.map +1 -1
  7. package/dist/components/Description/index.js +3 -2
  8. package/dist/components/Description/index.js.map +1 -1
  9. package/dist/components/colorValue/colorValue.d.ts +59 -0
  10. package/dist/components/colorValue/colorValue.d.ts.map +1 -0
  11. package/dist/components/colorValue/colorValue.js +245 -0
  12. package/dist/components/colorValue/colorValue.js.map +1 -0
  13. package/dist/components/colorValue/index.d.ts +34 -0
  14. package/dist/components/colorValue/index.d.ts.map +1 -0
  15. package/dist/components/colorValue/index.js +136 -0
  16. package/dist/components/colorValue/index.js.map +1 -0
  17. package/dist/components/colorValue/labels.d.ts +12 -0
  18. package/dist/components/colorValue/labels.d.ts.map +1 -0
  19. package/dist/components/colorValue/labels.js +11 -0
  20. package/dist/components/colorValue/labels.js.map +1 -0
  21. package/dist/components/composer/Composer.d.ts +1 -1
  22. package/dist/components/composer/Composer.d.ts.map +1 -1
  23. package/dist/components/composer/Composer.js +2 -2
  24. package/dist/components/composer/Composer.js.map +1 -1
  25. package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
  26. package/dist/components/dpqlEditor/DpqlEditor.js +25 -5
  27. package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
  28. package/dist/components/dpqlEditor/dpqlHelpers.d.ts +36 -5
  29. package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
  30. package/dist/components/dpqlEditor/dpqlHelpers.js +340 -62
  31. package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
  32. package/dist/components/dpqlEditor/dpqlTags.d.ts +11 -7
  33. package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
  34. package/dist/components/dpqlEditor/dpqlTags.js +35 -17
  35. package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
  36. package/dist/components/dpqlEditor/types.d.ts +54 -8
  37. package/dist/components/dpqlEditor/types.d.ts.map +1 -1
  38. package/dist/components/dpqlEditor/useDpqlSession.d.ts +2 -2
  39. package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
  40. package/dist/components/dpqlEditor/useDpqlSession.js +16 -7
  41. package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
  42. package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
  43. package/dist/components/form/engine/CompactRow.js +207 -97
  44. package/dist/components/form/engine/CompactRow.js.map +1 -1
  45. package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
  46. package/dist/components/form/engine/CompactToolbar.js +29 -3
  47. package/dist/components/form/engine/CompactToolbar.js.map +1 -1
  48. package/dist/components/form/engine/FormEngine.d.ts +58 -10
  49. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  50. package/dist/components/form/engine/FormEngine.js +542 -112
  51. package/dist/components/form/engine/FormEngine.js.map +1 -1
  52. package/dist/components/form/engine/HiddenFieldsNote.d.ts +28 -0
  53. package/dist/components/form/engine/HiddenFieldsNote.d.ts.map +1 -0
  54. package/dist/components/form/engine/HiddenFieldsNote.js +32 -0
  55. package/dist/components/form/engine/HiddenFieldsNote.js.map +1 -0
  56. package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
  57. package/dist/components/form/engine/OptionFieldMessages.js +24 -3
  58. package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
  59. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts +2 -2
  60. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
  61. package/dist/components/form/engine/_structuredData/SchemaDataView.js +12 -6
  62. package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
  63. package/dist/components/form/engine/compactRowContext.d.ts +21 -0
  64. package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
  65. package/dist/components/form/engine/compactRowContext.js.map +1 -1
  66. package/dist/components/form/engine/compactRowStyles.d.ts +20 -10
  67. package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
  68. package/dist/components/form/engine/compactRowStyles.js +36 -30
  69. package/dist/components/form/engine/compactRowStyles.js.map +1 -1
  70. package/dist/components/form/engine/compactToolbarColors.d.ts +16 -0
  71. package/dist/components/form/engine/compactToolbarColors.d.ts.map +1 -0
  72. package/dist/components/form/engine/compactToolbarColors.js +21 -0
  73. package/dist/components/form/engine/compactToolbarColors.js.map +1 -0
  74. package/dist/components/form/engine/readFirst.d.ts +24 -8
  75. package/dist/components/form/engine/readFirst.d.ts.map +1 -1
  76. package/dist/components/form/engine/readFirst.js +77 -109
  77. package/dist/components/form/engine/readFirst.js.map +1 -1
  78. package/dist/components/form/engine/readFirstColors.d.ts +30 -0
  79. package/dist/components/form/engine/readFirstColors.d.ts.map +1 -0
  80. package/dist/components/form/engine/readFirstColors.js +51 -0
  81. package/dist/components/form/engine/readFirstColors.js.map +1 -0
  82. package/dist/components/form/engine/rowFocus.d.ts +2 -0
  83. package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
  84. package/dist/components/form/engine/rowFocus.js +26 -3
  85. package/dist/components/form/engine/rowFocus.js.map +1 -1
  86. package/dist/components/form/engine/typeChoices.d.ts +1 -1
  87. package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -1
  88. package/dist/components/form/engine/variants/VariantCalmTable.js +2 -1
  89. package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -1
  90. package/dist/components/form/engine/variants/VariantCards.d.ts.map +1 -1
  91. package/dist/components/form/engine/variants/VariantCards.js +2 -1
  92. package/dist/components/form/engine/variants/VariantCards.js.map +1 -1
  93. package/dist/components/form/engine/variants/VariantFocus.js +1 -1
  94. package/dist/components/form/engine/variants/VariantFocus.js.map +1 -1
  95. package/dist/components/form/engine/variants/VariantMinimal.d.ts.map +1 -1
  96. package/dist/components/form/engine/variants/VariantMinimal.js +2 -1
  97. package/dist/components/form/engine/variants/VariantMinimal.js.map +1 -1
  98. package/dist/components/form/engine/variants/variantParts.d.ts +1 -1
  99. package/dist/components/form/engine/variants/variantParts.d.ts.map +1 -1
  100. package/dist/components/form/engine/variants/variantParts.js +25 -17
  101. package/dist/components/form/engine/variants/variantParts.js.map +1 -1
  102. package/dist/components/form/expressions/DpqlRendering.d.ts +1 -1
  103. package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -1
  104. package/dist/components/form/expressions/DpqlRendering.js +3 -3
  105. package/dist/components/form/expressions/DpqlRendering.js.map +1 -1
  106. package/dist/components/form/expressions/ExpressionField.d.ts +64 -3
  107. package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
  108. package/dist/components/form/expressions/ExpressionField.js +459 -100
  109. package/dist/components/form/expressions/ExpressionField.js.map +1 -1
  110. package/dist/components/form/expressions/argumentPresence.d.ts +14 -0
  111. package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -1
  112. package/dist/components/form/expressions/argumentPresence.js +16 -1
  113. package/dist/components/form/expressions/argumentPresence.js.map +1 -1
  114. package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
  115. package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
  116. package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
  117. package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
  118. package/dist/components/form/expressions/builder/argumentLabel.js +27 -9
  119. package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
  120. package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
  121. package/dist/components/form/expressions/builder/argumentWrapper.js +3 -1
  122. package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
  123. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
  124. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +5 -4
  125. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -1
  126. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +1 -1
  127. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -1
  128. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +6 -3
  129. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
  130. package/dist/components/form/expressions/builder/index.d.ts +24 -2
  131. package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
  132. package/dist/components/form/expressions/builder/index.js +138 -78
  133. package/dist/components/form/expressions/builder/index.js.map +1 -1
  134. package/dist/components/form/expressions/builder/item.d.ts +6 -2
  135. package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
  136. package/dist/components/form/expressions/builder/item.js +19 -5
  137. package/dist/components/form/expressions/builder/item.js.map +1 -1
  138. package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
  139. package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
  140. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts +11 -0
  141. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts.map +1 -0
  142. package/dist/components/form/expressions/dpqlMockRecordPath.js +254 -0
  143. package/dist/components/form/expressions/dpqlMockRecordPath.js.map +1 -0
  144. package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
  145. package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
  146. package/dist/components/form/expressions/expressionOperands.js +97 -0
  147. package/dist/components/form/expressions/expressionOperands.js.map +1 -0
  148. package/dist/components/form/expressions/fieldPath.d.ts +24 -0
  149. package/dist/components/form/expressions/fieldPath.d.ts.map +1 -0
  150. package/dist/components/form/expressions/fieldPath.js +152 -0
  151. package/dist/components/form/expressions/fieldPath.js.map +1 -0
  152. package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
  153. package/dist/components/form/expressions/mockExpressions.js +22 -5
  154. package/dist/components/form/expressions/mockExpressions.js.map +1 -1
  155. package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
  156. package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
  157. package/dist/components/form/expressions/renderExpressionToText.js +40 -9
  158. package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
  159. package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
  160. package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
  161. package/dist/components/form/expressions/textOfExpression.js +49 -0
  162. package/dist/components/form/expressions/textOfExpression.js.map +1 -0
  163. package/dist/components/form/expressions/types.d.ts +7 -0
  164. package/dist/components/form/expressions/types.d.ts.map +1 -1
  165. package/dist/components/form/expressions/types.js +6 -1
  166. package/dist/components/form/expressions/types.js.map +1 -1
  167. package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
  168. package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
  169. package/dist/components/form/expressions/useExpressionType.js +181 -0
  170. package/dist/components/form/expressions/useExpressionType.js.map +1 -0
  171. package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
  172. package/dist/components/form/expressions/useRenderExpression.js +13 -9
  173. package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
  174. package/dist/components/form/expressions/wildcardExpressions.d.ts +27 -0
  175. package/dist/components/form/expressions/wildcardExpressions.d.ts.map +1 -0
  176. package/dist/components/form/expressions/wildcardExpressions.js +101 -0
  177. package/dist/components/form/expressions/wildcardExpressions.js.map +1 -0
  178. package/dist/components/form/fields/Field.d.ts.map +1 -1
  179. package/dist/components/form/fields/Field.js +26 -9
  180. package/dist/components/form/fields/Field.js.map +1 -1
  181. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
  182. package/dist/components/form/fields/allowed-values/AllowedValues.js +17 -4
  183. package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
  184. package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
  185. package/dist/components/form/fields/array/ArrayAuto.js +24 -0
  186. package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
  187. package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
  188. package/dist/components/form/fields/array/ArrayAutoField.js +36 -13
  189. package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
  190. package/dist/components/form/fields/auto/AutoFormField.d.ts +20 -1
  191. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
  192. package/dist/components/form/fields/auto/AutoFormField.js +81 -36
  193. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
  194. package/dist/components/form/fields/auto/hostEditorValue.d.ts +30 -0
  195. package/dist/components/form/fields/auto/hostEditorValue.d.ts.map +1 -0
  196. package/dist/components/form/fields/auto/hostEditorValue.js +53 -0
  197. package/dist/components/form/fields/auto/hostEditorValue.js.map +1 -0
  198. package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
  199. package/dist/components/form/fields/binary/Binary.js +23 -3
  200. package/dist/components/form/fields/binary/Binary.js.map +1 -1
  201. package/dist/components/form/fields/boolean/Boolean.d.ts +5 -0
  202. package/dist/components/form/fields/boolean/Boolean.d.ts.map +1 -1
  203. package/dist/components/form/fields/boolean/Boolean.js +9 -1
  204. package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
  205. package/dist/components/form/fields/color/Color.d.ts +103 -16
  206. package/dist/components/form/fields/color/Color.d.ts.map +1 -1
  207. package/dist/components/form/fields/color/Color.js +616 -16
  208. package/dist/components/form/fields/color/Color.js.map +1 -1
  209. package/dist/components/form/fields/emittedValues.d.ts +34 -3
  210. package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
  211. package/dist/components/form/fields/emittedValues.js +24 -1
  212. package/dist/components/form/fields/emittedValues.js.map +1 -1
  213. package/dist/components/form/fields/file/File.d.ts +1 -1
  214. package/dist/components/form/fields/file/File.d.ts.map +1 -1
  215. package/dist/components/form/fields/file/File.js +4 -2
  216. package/dist/components/form/fields/file/File.js.map +1 -1
  217. package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
  218. package/dist/components/form/fields/long-string/LongString.js +17 -3
  219. package/dist/components/form/fields/long-string/LongString.js.map +1 -1
  220. package/dist/components/form/fields/markdown/MarkdownView.js +1 -1
  221. package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
  222. package/dist/components/form/fields/multi-select/MultiSelectFormField.js +4 -1
  223. package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
  224. package/dist/components/form/fields/number/Number.d.ts +6 -0
  225. package/dist/components/form/fields/number/Number.d.ts.map +1 -1
  226. package/dist/components/form/fields/number/Number.js +41 -6
  227. package/dist/components/form/fields/number/Number.js.map +1 -1
  228. package/dist/components/form/fields/object/Object.d.ts +1 -1
  229. package/dist/components/form/fields/object/Object.d.ts.map +1 -1
  230. package/dist/components/form/fields/object/Object.js +4 -2
  231. package/dist/components/form/fields/object/Object.js.map +1 -1
  232. package/dist/components/form/fields/pendingEdit.d.ts +52 -0
  233. package/dist/components/form/fields/pendingEdit.d.ts.map +1 -0
  234. package/dist/components/form/fields/pendingEdit.js +79 -0
  235. package/dist/components/form/fields/pendingEdit.js.map +1 -0
  236. package/dist/components/form/fields/rich-text/RichText.d.ts +8 -1
  237. package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
  238. package/dist/components/form/fields/rich-text/RichText.js +188 -82
  239. package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
  240. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts +18 -0
  241. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts.map +1 -0
  242. package/dist/components/form/fields/rich-text/useTemplateTags.js +49 -0
  243. package/dist/components/form/fields/rich-text/useTemplateTags.js.map +1 -0
  244. package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -1
  245. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +4 -1
  246. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -1
  247. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -1
  248. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +20 -5
  249. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -1
  250. package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -1
  251. package/dist/components/form/fields/schema-definition/TableEditor.js +10 -2
  252. package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -1
  253. package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -1
  254. package/dist/components/form/fields/schema-definition/index.js +8 -4
  255. package/dist/components/form/fields/schema-definition/index.js.map +1 -1
  256. package/dist/components/form/fields/select/Select.d.ts +2 -0
  257. package/dist/components/form/fields/select/Select.d.ts.map +1 -1
  258. package/dist/components/form/fields/select/Select.js +19 -10
  259. package/dist/components/form/fields/select/Select.js.map +1 -1
  260. package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
  261. package/dist/components/form/fields/select/SelectCollection.js +8 -2
  262. package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
  263. package/dist/components/form/fields/select/unavailableRow.d.ts +23 -0
  264. package/dist/components/form/fields/select/unavailableRow.d.ts.map +1 -0
  265. package/dist/components/form/fields/select/unavailableRow.js +55 -0
  266. package/dist/components/form/fields/select/unavailableRow.js.map +1 -0
  267. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +11 -5
  268. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
  269. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +13 -5
  270. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
  271. package/dist/components/form/fields/template/TemplateBrowser.d.ts +22 -0
  272. package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
  273. package/dist/components/form/fields/template/TemplateBrowser.js +54 -0
  274. package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
  275. package/dist/components/form/fields/template/TemplateField.d.ts +102 -1
  276. package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
  277. package/dist/components/form/fields/template/TemplateField.js +572 -85
  278. package/dist/components/form/fields/template/TemplateField.js.map +1 -1
  279. package/dist/components/form/fields/template/TemplateText.d.ts +0 -17
  280. package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -1
  281. package/dist/components/form/fields/template/TemplateText.js +9 -11
  282. package/dist/components/form/fields/template/TemplateText.js.map +1 -1
  283. package/dist/components/form/fields/template/writtenAsText.d.ts +61 -0
  284. package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
  285. package/dist/components/form/fields/template/writtenAsText.js +204 -0
  286. package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
  287. package/dist/components/form/index.d.ts +10 -0
  288. package/dist/components/form/index.d.ts.map +1 -1
  289. package/dist/components/form/index.js +23 -1
  290. package/dist/components/form/index.js.map +1 -1
  291. package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
  292. package/dist/components/imageLightbox/ImageLightbox.js +19 -7
  293. package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
  294. package/dist/components/log/Log.d.ts.map +1 -1
  295. package/dist/components/log/Log.js +16 -8
  296. package/dist/components/log/Log.js.map +1 -1
  297. package/dist/components/menu/Menu.d.ts.map +1 -1
  298. package/dist/components/menu/Menu.js +19 -10
  299. package/dist/components/menu/Menu.js.map +1 -1
  300. package/dist/components/smartEditor/CompletionMenu.d.ts +43 -0
  301. package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
  302. package/dist/components/smartEditor/CompletionMenu.js +196 -0
  303. package/dist/components/smartEditor/CompletionMenu.js.map +1 -0
  304. package/dist/components/smartEditor/MarkdownDoc.d.ts +1 -1
  305. package/dist/components/smartEditor/MarkdownDoc.js +3 -3
  306. package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
  307. package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
  308. package/dist/components/smartEditor/SmartEditor.js +164 -180
  309. package/dist/components/smartEditor/SmartEditor.js.map +1 -1
  310. package/dist/components/smartEditor/completionStyle.d.ts +27 -0
  311. package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
  312. package/dist/components/smartEditor/completionStyle.js +68 -0
  313. package/dist/components/smartEditor/completionStyle.js.map +1 -0
  314. package/dist/components/smartEditor/index.d.ts +5 -1
  315. package/dist/components/smartEditor/index.d.ts.map +1 -1
  316. package/dist/components/smartEditor/index.js +19 -1
  317. package/dist/components/smartEditor/index.js.map +1 -1
  318. package/dist/components/smartEditor/templateCompletions.d.ts +18 -0
  319. package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
  320. package/dist/components/smartEditor/templateCompletions.js +94 -0
  321. package/dist/components/smartEditor/templateCompletions.js.map +1 -0
  322. package/dist/components/smartEditor/typedReferences.d.ts +21 -0
  323. package/dist/components/smartEditor/typedReferences.d.ts.map +1 -0
  324. package/dist/components/smartEditor/typedReferences.js +82 -0
  325. package/dist/components/smartEditor/typedReferences.js.map +1 -0
  326. package/dist/components/smartEditor/types.d.ts +33 -1
  327. package/dist/components/smartEditor/types.d.ts.map +1 -1
  328. package/dist/components/smartEditor/useLspAutocomplete.d.ts +32 -0
  329. package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
  330. package/dist/components/smartEditor/useLspAutocomplete.js +228 -118
  331. package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
  332. package/dist/components/smartEditor/useLspHover.d.ts +33 -7
  333. package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
  334. package/dist/components/smartEditor/useLspHover.js +279 -35
  335. package/dist/components/smartEditor/useLspHover.js.map +1 -1
  336. package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
  337. package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
  338. package/dist/components/smartEditor/useLspSession.d.ts +6 -0
  339. package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
  340. package/dist/components/smartEditor/useLspSession.js +7 -6
  341. package/dist/components/smartEditor/useLspSession.js.map +1 -1
  342. package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -1
  343. package/dist/components/supportTicket/AttachmentChips.js +15 -5
  344. package/dist/components/supportTicket/AttachmentChips.js.map +1 -1
  345. package/dist/components/supportTicket/ReferencePicker.d.ts +9 -2
  346. package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
  347. package/dist/components/supportTicket/ReferencePicker.js +27 -6
  348. package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
  349. package/dist/components/supportTicket/TicketHeader.d.ts +3 -4
  350. package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
  351. package/dist/components/supportTicket/TicketHeader.js +20 -2
  352. package/dist/components/supportTicket/TicketHeader.js.map +1 -1
  353. package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
  354. package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
  355. package/dist/components/ticketReferences/TicketReferences.js +9 -4
  356. package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
  357. package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
  358. package/dist/components/ticketThread/TicketThread.js +38 -13
  359. package/dist/components/ticketThread/TicketThread.js.map +1 -1
  360. package/dist/helpers/descriptionTooltip.d.ts +43 -0
  361. package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
  362. package/dist/helpers/descriptionTooltip.js +70 -0
  363. package/dist/helpers/descriptionTooltip.js.map +1 -0
  364. package/dist/helpers/domProps.d.ts +5 -0
  365. package/dist/helpers/domProps.d.ts.map +1 -0
  366. package/dist/helpers/domProps.js +47 -0
  367. package/dist/helpers/domProps.js.map +1 -0
  368. package/dist/helpers/expressions.d.ts +107 -2
  369. package/dist/helpers/expressions.d.ts.map +1 -1
  370. package/dist/helpers/expressions.js +223 -8
  371. package/dist/helpers/expressions.js.map +1 -1
  372. package/dist/helpers/hoveringPointer.d.ts +26 -0
  373. package/dist/helpers/hoveringPointer.d.ts.map +1 -0
  374. package/dist/helpers/hoveringPointer.js +29 -0
  375. package/dist/helpers/hoveringPointer.js.map +1 -0
  376. package/dist/helpers/markdownText.d.ts +14 -0
  377. package/dist/helpers/markdownText.d.ts.map +1 -0
  378. package/dist/helpers/markdownText.js +160 -0
  379. package/dist/helpers/markdownText.js.map +1 -0
  380. package/dist/helpers/qorusTypeCatalogue.d.ts +53 -0
  381. package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
  382. package/dist/helpers/qorusTypeCatalogue.js +262 -0
  383. package/dist/helpers/qorusTypeCatalogue.js.map +1 -0
  384. package/dist/helpers/readableColors.d.ts +36 -0
  385. package/dist/helpers/readableColors.d.ts.map +1 -0
  386. package/dist/helpers/readableColors.js +116 -0
  387. package/dist/helpers/readableColors.js.map +1 -0
  388. package/dist/helpers/recordFieldReference.d.ts +15 -0
  389. package/dist/helpers/recordFieldReference.d.ts.map +1 -0
  390. package/dist/helpers/recordFieldReference.js +89 -0
  391. package/dist/helpers/recordFieldReference.js.map +1 -0
  392. package/dist/helpers/templateItems.d.ts +2 -2
  393. package/dist/helpers/templateItems.d.ts.map +1 -1
  394. package/dist/helpers/templateItems.js +6 -4
  395. package/dist/helpers/templateItems.js.map +1 -1
  396. package/dist/helpers/templateText.js +5 -2
  397. package/dist/helpers/templateText.js.map +1 -1
  398. package/dist/helpers/templates.d.ts +41 -14
  399. package/dist/helpers/templates.d.ts.map +1 -1
  400. package/dist/helpers/templates.js +152 -9
  401. package/dist/helpers/templates.js.map +1 -1
  402. package/dist/helpers/validations.d.ts +9 -0
  403. package/dist/helpers/validations.d.ts.map +1 -1
  404. package/dist/helpers/validations.js +139 -33
  405. package/dist/helpers/validations.js.map +1 -1
  406. package/dist/hooks/useQorusTypes.d.ts +7 -15
  407. package/dist/hooks/useQorusTypes.d.ts.map +1 -1
  408. package/dist/hooks/useQorusTypes.js +25 -166
  409. package/dist/hooks/useQorusTypes.js.map +1 -1
  410. package/dist/hooks/useReadableIntentShade.d.ts +9 -0
  411. package/dist/hooks/useReadableIntentShade.d.ts.map +1 -0
  412. package/dist/hooks/useReadableIntentShade.js +23 -0
  413. package/dist/hooks/useReadableIntentShade.js.map +1 -0
  414. package/dist/hooks/useReadableOpacity.d.ts +6 -0
  415. package/dist/hooks/useReadableOpacity.d.ts.map +1 -0
  416. package/dist/hooks/useReadableOpacity.js +17 -0
  417. package/dist/hooks/useReadableOpacity.js.map +1 -0
  418. package/dist/index.d.ts +1 -0
  419. package/dist/index.d.ts.map +1 -1
  420. package/dist/index.js +1 -0
  421. package/dist/index.js.map +1 -1
  422. package/dist/tracking/ui/ExperimentCard.d.ts +1 -1
  423. package/dist/tracking/ui/ExperimentCard.d.ts.map +1 -1
  424. package/dist/tracking/ui/ExperimentCard.js +26 -10
  425. package/dist/tracking/ui/ExperimentCard.js.map +1 -1
  426. package/dist/tracking/ui/card.d.ts +2 -2
  427. package/dist/tracking/ui/card.d.ts.map +1 -1
  428. package/dist/tracking/ui/card.js +2 -2
  429. package/dist/tracking/ui/card.js.map +1 -1
  430. package/dist/tracking/ui/readable.d.ts +14 -0
  431. package/dist/tracking/ui/readable.d.ts.map +1 -0
  432. package/dist/tracking/ui/readable.js +60 -0
  433. package/dist/tracking/ui/readable.js.map +1 -0
  434. package/dist/utils/fetch.d.ts +9 -2
  435. package/dist/utils/fetch.d.ts.map +1 -1
  436. package/dist/utils/fetch.js +6 -5
  437. package/dist/utils/fetch.js.map +1 -1
  438. package/dist/utils/websocket.d.ts +65 -2
  439. package/dist/utils/websocket.d.ts.map +1 -1
  440. package/dist/utils/websocket.js +276 -44
  441. package/dist/utils/websocket.js.map +1 -1
  442. package/package.json +14 -5
  443. package/.claude/CLAUDE.md +0 -317
  444. package/.tasks/EXPORT_EXPRESSION_BUILDER.md +0 -38
  445. package/.tasks/EXPRESSION_BUILDER_REPORT.md +0 -149
  446. package/.tasks/EXPRESSION_FIELD_SEAMS.md +0 -66
  447. package/.tasks/FIELD_STACK_REPORT.md +0 -234
  448. package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +0 -558
  449. package/.tasks/FORM_ENGINE_EXPRESSIONS.md +0 -197
  450. package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +0 -95
  451. package/.tasks/FORM_FIELD_EXTRAS.md +0 -72
  452. package/.tasks/INDEX.md +0 -111
  453. package/.tasks/LSP_SHARED_CONNECTION.md +0 -75
  454. package/.tasks/QONSOLE_ASSIST_FEATURES.md +0 -306
  455. package/.tasks/RENDER_EXPRESSION_LSP.md +0 -159
  456. package/.tasks/REQRAFT_AUTO_FIELD.md +0 -176
  457. package/.tasks/SCHEMA_DEFINITION_FIELD.md +0 -250
  458. package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +0 -340
  459. package/.tasks/SMART_EDITOR_LSP_FEATURES.md +0 -299
  460. package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +0 -280
  461. package/.tasks/SMART_EDITOR_UX_POLISH.md +0 -383
  462. package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +0 -246
  463. package/.tasks/STORY_NETWORK_ISOLATION.md +0 -98
  464. package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +0 -72
  465. package/CODE_OF_CONDUCT.md +0 -105
  466. package/CONTRIBUTING.MD +0 -78
  467. package/SECURITY.md +0 -3
  468. package/chromatic.config.json +0 -5
  469. package/design/COMPACT_ENGINE_REDESIGN.md +0 -156
  470. package/design/COMPACT_INFO_DISPLAY.md +0 -87
  471. package/design/COMPACT_PARITY.md +0 -85
  472. package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +0 -92
  473. package/design/FORM_ENGINE_COMPACT.md +0 -300
  474. package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +0 -353
  475. package/design/FORM_ENGINE_EXPRESSIONS.md +0 -257
  476. package/design/FORM_ENGINE_FIELD_MIGRATION.md +0 -419
  477. package/design/IDE_INTEGRATION.md +0 -64
  478. package/design/RENDER_EXPRESSION_TRANSPORT.md +0 -156
  479. package/design/SELECT_DIALOG_FLOOR.md +0 -86
  480. package/design/SMART_EDITOR_UX.md +0 -438
  481. package/design/TRACKING.md +0 -290
  482. package/design/UNAVAILABLE_ALLOWED_VALUES.md +0 -226
  483. package/src/components/Description/index.tsx +0 -254
  484. package/src/components/Description/markdownRendererContext.tsx +0 -29
  485. package/src/components/FocusedEditing/index.tsx +0 -50
  486. package/src/components/codeSize/index.tsx +0 -79
  487. package/src/components/composer/Composer.stories.tsx +0 -238
  488. package/src/components/composer/Composer.tsx +0 -554
  489. package/src/components/composer/helpers.ts +0 -74
  490. package/src/components/composer/index.ts +0 -2
  491. package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -1183
  492. package/src/components/dpqlEditor/DpqlEditor.tsx +0 -219
  493. package/src/components/dpqlEditor/dpqlHelpers.ts +0 -287
  494. package/src/components/dpqlEditor/dpqlInserter.ts +0 -121
  495. package/src/components/dpqlEditor/dpqlProbe.ts +0 -165
  496. package/src/components/dpqlEditor/dpqlTags.ts +0 -114
  497. package/src/components/dpqlEditor/index.ts +0 -41
  498. package/src/components/dpqlEditor/types.ts +0 -203
  499. package/src/components/dpqlEditor/useDpqlProbe.ts +0 -33
  500. package/src/components/dpqlEditor/useDpqlSession.ts +0 -411
  501. package/src/components/form/engine/CompactRow.tsx +0 -2620
  502. package/src/components/form/engine/CompactToolbar.tsx +0 -330
  503. package/src/components/form/engine/FormEngine.stories.tsx +0 -9920
  504. package/src/components/form/engine/FormEngine.tsx +0 -4569
  505. package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
  506. package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -331
  507. package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
  508. package/src/components/form/engine/OptionFieldMessages.tsx +0 -477
  509. package/src/components/form/engine/OptionsHelpDialog.tsx +0 -29
  510. package/src/components/form/engine/__fixtures__/basicFormOptions.ts +0 -309
  511. package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +0 -45
  512. package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +0 -233
  513. package/src/components/form/engine/_structuredData/SchemaDataView.tsx +0 -742
  514. package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +0 -85
  515. package/src/components/form/engine/_structuredData/StructuredDataView.tsx +0 -75
  516. package/src/components/form/engine/_structuredData/structuredData.ts +0 -145
  517. package/src/components/form/engine/compactRowContext.ts +0 -148
  518. package/src/components/form/engine/compactRowStyles.ts +0 -898
  519. package/src/components/form/engine/compactToolbarContext.ts +0 -69
  520. package/src/components/form/engine/optionActions.ts +0 -128
  521. package/src/components/form/engine/optionsContext.ts +0 -24
  522. package/src/components/form/engine/readFirst.ts +0 -1077
  523. package/src/components/form/engine/rendererTypes.ts +0 -107
  524. package/src/components/form/engine/revealRow.ts +0 -123
  525. package/src/components/form/engine/rowFocus.ts +0 -101
  526. package/src/components/form/engine/rowMenuContext.ts +0 -159
  527. package/src/components/form/engine/rowOpenPicker.ts +0 -27
  528. package/src/components/form/engine/typeChoices.ts +0 -63
  529. package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +0 -159
  530. package/src/components/form/engine/variants/VariantCalmTable.tsx +0 -244
  531. package/src/components/form/engine/variants/VariantCards.tsx +0 -212
  532. package/src/components/form/engine/variants/VariantFocus.tsx +0 -382
  533. package/src/components/form/engine/variants/VariantMinimal.tsx +0 -170
  534. package/src/components/form/engine/variants/focusDemo.ts +0 -145
  535. package/src/components/form/engine/variants/variantModel.ts +0 -223
  536. package/src/components/form/engine/variants/variantParts.tsx +0 -313
  537. package/src/components/form/expressions/DpqlRendering.tsx +0 -85
  538. package/src/components/form/expressions/ExpressionField.stories.tsx +0 -1395
  539. package/src/components/form/expressions/ExpressionField.tsx +0 -503
  540. package/src/components/form/expressions/argumentPresence.ts +0 -213
  541. package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +0 -1683
  542. package/src/components/form/expressions/builder/argumentDetail.tsx +0 -17
  543. package/src/components/form/expressions/builder/argumentLabel.tsx +0 -146
  544. package/src/components/form/expressions/builder/argumentSlot.tsx +0 -101
  545. package/src/components/form/expressions/builder/argumentWrapper.tsx +0 -243
  546. package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +0 -120
  547. package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +0 -69
  548. package/src/components/form/expressions/builder/index.tsx +0 -1545
  549. package/src/components/form/expressions/builder/item.tsx +0 -89
  550. package/src/components/form/expressions/builder/moveToPositionStrip.tsx +0 -156
  551. package/src/components/form/expressions/builder/renderTemplate.tsx +0 -42
  552. package/src/components/form/expressions/dpqlMockLanguage.ts +0 -566
  553. package/src/components/form/expressions/dpqlMockLsp.ts +0 -126
  554. package/src/components/form/expressions/mockExpressions.ts +0 -317
  555. package/src/components/form/expressions/renderExpressionToText.ts +0 -137
  556. package/src/components/form/expressions/types.ts +0 -110
  557. package/src/components/form/expressions/useExpressions.ts +0 -101
  558. package/src/components/form/expressions/useRenderExpression.ts +0 -165
  559. package/src/components/form/fields/Field.stories.tsx +0 -143
  560. package/src/components/form/fields/Field.tsx +0 -732
  561. package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -297
  562. package/src/components/form/fields/array/ArrayAuto.tsx +0 -237
  563. package/src/components/form/fields/array/ArrayAutoField.stories.tsx +0 -475
  564. package/src/components/form/fields/array/ArrayAutoField.tsx +0 -367
  565. package/src/components/form/fields/auto/AutoFormField.stories.tsx +0 -825
  566. package/src/components/form/fields/auto/AutoFormField.tsx +0 -1164
  567. package/src/components/form/fields/binary/Binary.stories.tsx +0 -122
  568. package/src/components/form/fields/binary/Binary.tsx +0 -91
  569. package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -125
  570. package/src/components/form/fields/boolean/Boolean.tsx +0 -34
  571. package/src/components/form/fields/byte-size/ByteSize.stories.tsx +0 -87
  572. package/src/components/form/fields/byte-size/ByteSize.tsx +0 -58
  573. package/src/components/form/fields/color/Color.stories.tsx +0 -99
  574. package/src/components/form/fields/color/Color.tsx +0 -46
  575. package/src/components/form/fields/cron/Cron.stories.tsx +0 -68
  576. package/src/components/form/fields/cron/Cron.tsx +0 -80
  577. package/src/components/form/fields/date/Date.stories.tsx +0 -77
  578. package/src/components/form/fields/date/Date.tsx +0 -55
  579. package/src/components/form/fields/emittedValues.ts +0 -70
  580. package/src/components/form/fields/file/File.stories.tsx +0 -161
  581. package/src/components/form/fields/file/File.tsx +0 -227
  582. package/src/components/form/fields/long-string/LongString.stories.tsx +0 -120
  583. package/src/components/form/fields/long-string/LongString.tsx +0 -130
  584. package/src/components/form/fields/markdown/Markdown.stories.tsx +0 -76
  585. package/src/components/form/fields/markdown/Markdown.tsx +0 -81
  586. package/src/components/form/fields/markdown/MarkdownView.tsx +0 -222
  587. package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +0 -139
  588. package/src/components/form/fields/number/Number.stories.tsx +0 -159
  589. package/src/components/form/fields/number/Number.tsx +0 -160
  590. package/src/components/form/fields/object/Object.stories.tsx +0 -398
  591. package/src/components/form/fields/object/Object.tsx +0 -255
  592. package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +0 -95
  593. package/src/components/form/fields/radio-group/RadioGroup.tsx +0 -46
  594. package/src/components/form/fields/radio-group/images/java-96x128.png +0 -0
  595. package/src/components/form/fields/radio-group/images/python-129x128.png +0 -0
  596. package/src/components/form/fields/radio-group/images/qore-106x128.png +0 -0
  597. package/src/components/form/fields/rich-text/RichText.stories.tsx +0 -260
  598. package/src/components/form/fields/rich-text/RichText.tsx +0 -537
  599. package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +0 -242
  600. package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +0 -758
  601. package/src/components/form/fields/schema-definition/Hint.tsx +0 -22
  602. package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +0 -138
  603. package/src/components/form/fields/schema-definition/Loader.tsx +0 -20
  604. package/src/components/form/fields/schema-definition/MigrationsTab.tsx +0 -187
  605. package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +0 -286
  606. package/src/components/form/fields/schema-definition/TableEditor.tsx +0 -155
  607. package/src/components/form/fields/schema-definition/TablesTab.tsx +0 -138
  608. package/src/components/form/fields/schema-definition/catalog.ts +0 -237
  609. package/src/components/form/fields/schema-definition/helpers.ts +0 -90
  610. package/src/components/form/fields/schema-definition/index.tsx +0 -418
  611. package/src/components/form/fields/schema-definition/mockCatalog.ts +0 -325
  612. package/src/components/form/fields/schema-definition/mockDefinition.ts +0 -111
  613. package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +0 -152
  614. package/src/components/form/fields/schema-definition/starterTemplate.ts +0 -68
  615. package/src/components/form/fields/schema-definition/types.ts +0 -185
  616. package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +0 -49
  617. package/src/components/form/fields/select/Select.stories.tsx +0 -872
  618. package/src/components/form/fields/select/Select.tsx +0 -624
  619. package/src/components/form/fields/select/SelectCollection.tsx +0 -594
  620. package/src/components/form/fields/string/String.stories.tsx +0 -86
  621. package/src/components/form/fields/string/String.tsx +0 -43
  622. package/src/components/form/fields/template/ExampleValueModal.stories.tsx +0 -114
  623. package/src/components/form/fields/template/ExampleValueModal.tsx +0 -99
  624. package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +0 -47
  625. package/src/components/form/fields/template/TemplateField.stories.tsx +0 -1121
  626. package/src/components/form/fields/template/TemplateField.tsx +0 -1717
  627. package/src/components/form/fields/template/TemplateText.tsx +0 -115
  628. package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +0 -7
  629. package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +0 -147
  630. package/src/components/form/fields/template/__fixtures__/templates.json +0 -83
  631. package/src/components/form/fields/timeout/Timeout.stories.tsx +0 -228
  632. package/src/components/form/fields/timeout/Timeout.tsx +0 -87
  633. package/src/components/form/fields/url/Url.stories.tsx +0 -94
  634. package/src/components/form/fields/url/Url.tsx +0 -85
  635. package/src/components/form/index.tsx +0 -47
  636. package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
  637. package/src/components/imageLightbox/ImageLightbox.tsx +0 -236
  638. package/src/components/imageLightbox/index.ts +0 -1
  639. package/src/components/log/Log.stories.tsx +0 -333
  640. package/src/components/log/Log.tsx +0 -285
  641. package/src/components/menu/Menu.stories.tsx +0 -155
  642. package/src/components/menu/Menu.tsx +0 -312
  643. package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +0 -797
  644. package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +0 -105
  645. package/src/components/qonsoleSmartInput/index.ts +0 -16
  646. package/src/components/qonsoleSmartInput/qonsoleInserter.ts +0 -77
  647. package/src/components/qonsoleSmartInput/types.ts +0 -133
  648. package/src/components/qonsoleSmartInput/useQonsoleSession.ts +0 -124
  649. package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +0 -62
  650. package/src/components/searchFilterBar/SearchFilterBar.tsx +0 -144
  651. package/src/components/searchFilterBar/index.ts +0 -1
  652. package/src/components/smartEditor/MarkdownDoc.tsx +0 -190
  653. package/src/components/smartEditor/SmartEditor.stories.tsx +0 -475
  654. package/src/components/smartEditor/SmartEditor.tsx +0 -808
  655. package/src/components/smartEditor/__fixtures__/mockLspServer.ts +0 -205
  656. package/src/components/smartEditor/helpers.ts +0 -217
  657. package/src/components/smartEditor/index.ts +0 -35
  658. package/src/components/smartEditor/styling.ts +0 -45
  659. package/src/components/smartEditor/types.ts +0 -211
  660. package/src/components/smartEditor/useLspAutocomplete.ts +0 -758
  661. package/src/components/smartEditor/useLspDiagnosticDecorations.ts +0 -125
  662. package/src/components/smartEditor/useLspHover.ts +0 -230
  663. package/src/components/smartEditor/useLspSemanticTokens.ts +0 -298
  664. package/src/components/smartEditor/useLspSession.ts +0 -231
  665. package/src/components/smartEditor/useLspSignatureHelp.ts +0 -198
  666. package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -171
  667. package/src/components/supportTicket/AttachmentChips.tsx +0 -147
  668. package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -257
  669. package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -129
  670. package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -584
  671. package/src/components/supportTicket/ReferencePicker.tsx +0 -563
  672. package/src/components/supportTicket/TicketConversation.stories.tsx +0 -121
  673. package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
  674. package/src/components/supportTicket/TicketHeader.tsx +0 -247
  675. package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
  676. package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
  677. package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -354
  678. package/src/components/supportTicket/TicketReplyBox.tsx +0 -150
  679. package/src/components/supportTicket/__fixtures__/kindMarks.ts +0 -28
  680. package/src/components/supportTicket/attachmentAccess.ts +0 -97
  681. package/src/components/supportTicket/fileToAttachment.ts +0 -24
  682. package/src/components/supportTicket/index.ts +0 -10
  683. package/src/components/supportTicket/meta.ts +0 -206
  684. package/src/components/supportTicket/ticketModel.ts +0 -131
  685. package/src/components/supportTicket/useLoadedImages.ts +0 -73
  686. package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -315
  687. package/src/components/ticketReferences/TicketReferences.tsx +0 -906
  688. package/src/components/ticketReferences/index.ts +0 -2
  689. package/src/components/ticketThread/TicketThread.stories.tsx +0 -829
  690. package/src/components/ticketThread/TicketThread.tsx +0 -719
  691. package/src/components/ticketThread/index.ts +0 -6
  692. package/src/contexts/FetchContext.tsx +0 -25
  693. package/src/contexts/ReqraftContext.tsx +0 -9
  694. package/src/contexts/StorageContext.tsx +0 -33
  695. package/src/global.d.ts +0 -4
  696. package/src/helpers/allowedValues.ts +0 -249
  697. package/src/helpers/choiceChip.ts +0 -227
  698. package/src/helpers/common.ts +0 -326
  699. package/src/helpers/dpqlDetection.ts +0 -209
  700. package/src/helpers/expressions.ts +0 -140
  701. package/src/helpers/optionUiTypes.ts +0 -199
  702. package/src/helpers/options.ts +0 -150
  703. package/src/helpers/providerValue.ts +0 -125
  704. package/src/helpers/scrollbar.ts +0 -32
  705. package/src/helpers/singleLineString.ts +0 -61
  706. package/src/helpers/templateItems.ts +0 -81
  707. package/src/helpers/templateText.ts +0 -350
  708. package/src/helpers/templates.ts +0 -602
  709. package/src/helpers/validations.ts +0 -2085
  710. package/src/hooks/useArgSchema.ts +0 -37
  711. package/src/hooks/useCoarsePointer.ts +0 -30
  712. package/src/hooks/useFetch/useFetch.stories.tsx +0 -379
  713. package/src/hooks/useFetch/useFetch.tsx +0 -154
  714. package/src/hooks/usePhoneViewport.ts +0 -34
  715. package/src/hooks/useQorusTypes.ts +0 -233
  716. package/src/hooks/useReqraftProperty.ts +0 -16
  717. package/src/hooks/useStorage/useStorage.stories.tsx +0 -168
  718. package/src/hooks/useStorage/useStorage.ts +0 -35
  719. package/src/hooks/useTemplates.ts +0 -123
  720. package/src/hooks/useValidation.ts +0 -9
  721. package/src/hooks/useWebSocket/useWebSocket.ts +0 -224
  722. package/src/hooks/useWebSocket/useWebsocket.stories.tsx +0 -640
  723. package/src/hooks/useWhyDidYouUpdate.ts +0 -38
  724. package/src/index.tsx +0 -86
  725. package/src/providers/FetchProvider.tsx +0 -40
  726. package/src/providers/ReqraftProvider.tsx +0 -52
  727. package/src/providers/StorageProvider.tsx +0 -131
  728. package/src/stores/currentUser/currentUser.stories.tsx +0 -100
  729. package/src/stores/currentUser/currentUser.tsx +0 -94
  730. package/src/stories/Data/fileFieldArgSchema.json +0 -86
  731. package/src/stories/Tests/utils.ts +0 -320
  732. package/src/stories/storyNetwork.ts +0 -92
  733. package/src/stories/tracking.tsx +0 -206
  734. package/src/tracking/browser/attach.ts +0 -186
  735. package/src/tracking/browser/env.ts +0 -78
  736. package/src/tracking/core/consent.ts +0 -37
  737. package/src/tracking/core/engagement.ts +0 -47
  738. package/src/tracking/core/experiments.ts +0 -258
  739. package/src/tracking/core/hash.ts +0 -26
  740. package/src/tracking/core/ids.ts +0 -25
  741. package/src/tracking/core/observable.ts +0 -23
  742. package/src/tracking/core/queue.ts +0 -131
  743. package/src/tracking/core/sections.ts +0 -166
  744. package/src/tracking/core/storage.ts +0 -69
  745. package/src/tracking/core/tracker.ts +0 -417
  746. package/src/tracking/core/types.ts +0 -162
  747. package/src/tracking/core/utm.ts +0 -23
  748. package/src/tracking/index.ts +0 -72
  749. package/src/tracking/markup.ts +0 -17
  750. package/src/tracking/react/Experiment.tsx +0 -44
  751. package/src/tracking/react/TrackingProvider.tsx +0 -56
  752. package/src/tracking/react/hooks.ts +0 -106
  753. package/src/tracking/react/index.ts +0 -13
  754. package/src/tracking/testing.ts +0 -108
  755. package/src/tracking/ui/ExperimentCard.stories.tsx +0 -296
  756. package/src/tracking/ui/ExperimentCard.tsx +0 -667
  757. package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -155
  758. package/src/tracking/ui/ExperimentsOverlay.tsx +0 -437
  759. package/src/tracking/ui/anchor.ts +0 -180
  760. package/src/tracking/ui/card.ts +0 -464
  761. package/src/tracking/ui/client.ts +0 -117
  762. package/src/tracking/ui/index.ts +0 -77
  763. package/src/tracking/ui/types.ts +0 -110
  764. package/src/tracking/ui/useExperimentsAdmin.ts +0 -103
  765. package/src/types/Form.ts +0 -29
  766. package/src/types.ts +0 -14
  767. package/src/utils/datetime.ts +0 -10
  768. package/src/utils/fetch.ts +0 -457
  769. package/src/utils/lspClient.ts +0 -711
  770. package/src/utils/lspClient.types.ts +0 -211
  771. package/src/utils/queryUnlessCancelled.ts +0 -28
  772. package/src/utils/websocket.ts +0 -293
  773. package/vite.config.ts +0 -58
  774. package/vitest.config.ts +0 -69
@@ -1,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
- };