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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (913) hide show
  1. package/README.md +53 -1
  2. package/dist/components/Description/AllowedValuesHelp.d.ts +20 -0
  3. package/dist/components/Description/AllowedValuesHelp.d.ts.map +1 -0
  4. package/dist/components/Description/AllowedValuesHelp.js +86 -0
  5. package/dist/components/Description/AllowedValuesHelp.js.map +1 -0
  6. package/dist/components/Description/describedControl.d.ts +54 -0
  7. package/dist/components/Description/describedControl.d.ts.map +1 -0
  8. package/dist/components/Description/describedControl.js +81 -0
  9. package/dist/components/Description/describedControl.js.map +1 -0
  10. package/dist/components/Description/index.d.ts.map +1 -1
  11. package/dist/components/Description/index.js +3 -2
  12. package/dist/components/Description/index.js.map +1 -1
  13. package/dist/components/colorValue/colorValue.d.ts +59 -0
  14. package/dist/components/colorValue/colorValue.d.ts.map +1 -0
  15. package/dist/components/colorValue/colorValue.js +245 -0
  16. package/dist/components/colorValue/colorValue.js.map +1 -0
  17. package/dist/components/colorValue/index.d.ts +34 -0
  18. package/dist/components/colorValue/index.d.ts.map +1 -0
  19. package/dist/components/colorValue/index.js +136 -0
  20. package/dist/components/colorValue/index.js.map +1 -0
  21. package/dist/components/colorValue/labels.d.ts +12 -0
  22. package/dist/components/colorValue/labels.d.ts.map +1 -0
  23. package/dist/components/colorValue/labels.js +11 -0
  24. package/dist/components/colorValue/labels.js.map +1 -0
  25. package/dist/components/composer/Composer.d.ts +1 -1
  26. package/dist/components/composer/Composer.d.ts.map +1 -1
  27. package/dist/components/composer/Composer.js +2 -2
  28. package/dist/components/composer/Composer.js.map +1 -1
  29. package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
  30. package/dist/components/dpqlEditor/DpqlEditor.js +156 -10
  31. package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
  32. package/dist/components/dpqlEditor/dpqlCompletions.d.ts +39 -0
  33. package/dist/components/dpqlEditor/dpqlCompletions.d.ts.map +1 -0
  34. package/dist/components/dpqlEditor/dpqlCompletions.js +294 -0
  35. package/dist/components/dpqlEditor/dpqlCompletions.js.map +1 -0
  36. package/dist/components/dpqlEditor/dpqlHelpers.d.ts +54 -5
  37. package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
  38. package/dist/components/dpqlEditor/dpqlHelpers.js +420 -63
  39. package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
  40. package/dist/components/dpqlEditor/dpqlInserter.d.ts.map +1 -1
  41. package/dist/components/dpqlEditor/dpqlInserter.js +67 -29
  42. package/dist/components/dpqlEditor/dpqlInserter.js.map +1 -1
  43. package/dist/components/dpqlEditor/dpqlTags.d.ts +17 -7
  44. package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
  45. package/dist/components/dpqlEditor/dpqlTags.js +44 -17
  46. package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
  47. package/dist/components/dpqlEditor/types.d.ts +94 -8
  48. package/dist/components/dpqlEditor/types.d.ts.map +1 -1
  49. package/dist/components/dpqlEditor/useDpqlSession.d.ts +7 -2
  50. package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
  51. package/dist/components/dpqlEditor/useDpqlSession.js +49 -17
  52. package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
  53. package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
  54. package/dist/components/form/engine/CompactRow.js +336 -243
  55. package/dist/components/form/engine/CompactRow.js.map +1 -1
  56. package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
  57. package/dist/components/form/engine/CompactToolbar.js +20 -57
  58. package/dist/components/form/engine/CompactToolbar.js.map +1 -1
  59. package/dist/components/form/engine/FormEngine.d.ts +67 -59
  60. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  61. package/dist/components/form/engine/FormEngine.js +606 -409
  62. package/dist/components/form/engine/FormEngine.js.map +1 -1
  63. package/dist/components/form/engine/HiddenFieldsNote.d.ts +28 -0
  64. package/dist/components/form/engine/HiddenFieldsNote.d.ts.map +1 -0
  65. package/dist/components/form/engine/HiddenFieldsNote.js +32 -0
  66. package/dist/components/form/engine/HiddenFieldsNote.js.map +1 -0
  67. package/dist/components/form/engine/OptionFieldMessages.d.ts +2 -18
  68. package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
  69. package/dist/components/form/engine/OptionFieldMessages.js +28 -25
  70. package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
  71. package/dist/components/form/engine/OptionsHelpDialog.d.ts.map +1 -1
  72. package/dist/components/form/engine/OptionsHelpDialog.js +19 -2
  73. package/dist/components/form/engine/OptionsHelpDialog.js.map +1 -1
  74. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts +2 -2
  75. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
  76. package/dist/components/form/engine/_structuredData/SchemaDataView.js +11 -31
  77. package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
  78. package/dist/components/form/engine/compactRowContext.d.ts +30 -6
  79. package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
  80. package/dist/components/form/engine/compactRowContext.js.map +1 -1
  81. package/dist/components/form/engine/compactRowStyles.d.ts +56 -31
  82. package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
  83. package/dist/components/form/engine/compactRowStyles.js +121 -110
  84. package/dist/components/form/engine/compactRowStyles.js.map +1 -1
  85. package/dist/components/form/engine/compactToolbarColors.d.ts +16 -0
  86. package/dist/components/form/engine/compactToolbarColors.d.ts.map +1 -0
  87. package/dist/components/form/engine/compactToolbarColors.js +21 -0
  88. package/dist/components/form/engine/compactToolbarColors.js.map +1 -0
  89. package/dist/components/form/engine/compactToolbarContext.d.ts +0 -3
  90. package/dist/components/form/engine/compactToolbarContext.d.ts.map +1 -1
  91. package/dist/components/form/engine/compactToolbarContext.js.map +1 -1
  92. package/dist/components/form/engine/inheritProps.d.ts +29 -0
  93. package/dist/components/form/engine/inheritProps.d.ts.map +1 -0
  94. package/dist/components/form/engine/inheritProps.js +43 -0
  95. package/dist/components/form/engine/inheritProps.js.map +1 -0
  96. package/dist/components/form/engine/operatorSummary.d.ts +26 -0
  97. package/dist/components/form/engine/operatorSummary.d.ts.map +1 -0
  98. package/dist/components/form/engine/operatorSummary.js +35 -0
  99. package/dist/components/form/engine/operatorSummary.js.map +1 -0
  100. package/dist/components/form/engine/readFirst.d.ts +26 -22
  101. package/dist/components/form/engine/readFirst.d.ts.map +1 -1
  102. package/dist/components/form/engine/readFirst.js +79 -115
  103. package/dist/components/form/engine/readFirst.js.map +1 -1
  104. package/dist/components/form/engine/readFirstColors.d.ts +30 -0
  105. package/dist/components/form/engine/readFirstColors.d.ts.map +1 -0
  106. package/dist/components/form/engine/readFirstColors.js +51 -0
  107. package/dist/components/form/engine/readFirstColors.js.map +1 -0
  108. package/dist/components/form/engine/rowFocus.d.ts +3 -9
  109. package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
  110. package/dist/components/form/engine/rowFocus.js +30 -19
  111. package/dist/components/form/engine/rowFocus.js.map +1 -1
  112. package/dist/components/form/engine/typeChoices.d.ts +1 -1
  113. package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -1
  114. package/dist/components/form/engine/variants/VariantCalmTable.js +2 -1
  115. package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -1
  116. package/dist/components/form/engine/variants/VariantCards.d.ts.map +1 -1
  117. package/dist/components/form/engine/variants/VariantCards.js +2 -1
  118. package/dist/components/form/engine/variants/VariantCards.js.map +1 -1
  119. package/dist/components/form/engine/variants/VariantFocus.js +1 -1
  120. package/dist/components/form/engine/variants/VariantFocus.js.map +1 -1
  121. package/dist/components/form/engine/variants/VariantMinimal.d.ts.map +1 -1
  122. package/dist/components/form/engine/variants/VariantMinimal.js +2 -1
  123. package/dist/components/form/engine/variants/VariantMinimal.js.map +1 -1
  124. package/dist/components/form/engine/variants/variantParts.d.ts +1 -1
  125. package/dist/components/form/engine/variants/variantParts.d.ts.map +1 -1
  126. package/dist/components/form/engine/variants/variantParts.js +25 -17
  127. package/dist/components/form/engine/variants/variantParts.js.map +1 -1
  128. package/dist/components/form/expressions/DpqlRendering.d.ts +1 -1
  129. package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -1
  130. package/dist/components/form/expressions/DpqlRendering.js +7 -6
  131. package/dist/components/form/expressions/DpqlRendering.js.map +1 -1
  132. package/dist/components/form/expressions/ExpressionField.d.ts +67 -3
  133. package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
  134. package/dist/components/form/expressions/ExpressionField.js +536 -114
  135. package/dist/components/form/expressions/ExpressionField.js.map +1 -1
  136. package/dist/components/form/expressions/argumentPresence.d.ts +14 -0
  137. package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -1
  138. package/dist/components/form/expressions/argumentPresence.js +16 -1
  139. package/dist/components/form/expressions/argumentPresence.js.map +1 -1
  140. package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
  141. package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
  142. package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
  143. package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
  144. package/dist/components/form/expressions/builder/argumentLabel.js +30 -11
  145. package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
  146. package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
  147. package/dist/components/form/expressions/builder/argumentWrapper.js +3 -1
  148. package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
  149. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts +9 -0
  150. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
  151. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +30 -27
  152. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -1
  153. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +1 -1
  154. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -1
  155. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +7 -5
  156. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
  157. package/dist/components/form/expressions/builder/index.d.ts +34 -2
  158. package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
  159. package/dist/components/form/expressions/builder/index.js +170 -80
  160. package/dist/components/form/expressions/builder/index.js.map +1 -1
  161. package/dist/components/form/expressions/builder/item.d.ts +6 -2
  162. package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
  163. package/dist/components/form/expressions/builder/item.js +19 -5
  164. package/dist/components/form/expressions/builder/item.js.map +1 -1
  165. package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
  166. package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
  167. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts +11 -0
  168. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts.map +1 -0
  169. package/dist/components/form/expressions/dpqlMockRecordPath.js +254 -0
  170. package/dist/components/form/expressions/dpqlMockRecordPath.js.map +1 -0
  171. package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
  172. package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
  173. package/dist/components/form/expressions/expressionOperands.js +97 -0
  174. package/dist/components/form/expressions/expressionOperands.js.map +1 -0
  175. package/dist/components/form/expressions/fieldPath.d.ts +24 -0
  176. package/dist/components/form/expressions/fieldPath.d.ts.map +1 -0
  177. package/dist/components/form/expressions/fieldPath.js +152 -0
  178. package/dist/components/form/expressions/fieldPath.js.map +1 -0
  179. package/dist/components/form/expressions/loneValue.d.ts +17 -0
  180. package/dist/components/form/expressions/loneValue.d.ts.map +1 -0
  181. package/dist/components/form/expressions/loneValue.js +33 -0
  182. package/dist/components/form/expressions/loneValue.js.map +1 -0
  183. package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
  184. package/dist/components/form/expressions/mockExpressions.js +22 -5
  185. package/dist/components/form/expressions/mockExpressions.js.map +1 -1
  186. package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
  187. package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
  188. package/dist/components/form/expressions/renderExpressionToText.js +37 -25
  189. package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
  190. package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
  191. package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
  192. package/dist/components/form/expressions/textOfExpression.js +49 -0
  193. package/dist/components/form/expressions/textOfExpression.js.map +1 -0
  194. package/dist/components/form/expressions/types.d.ts +12 -0
  195. package/dist/components/form/expressions/types.d.ts.map +1 -1
  196. package/dist/components/form/expressions/types.js +6 -1
  197. package/dist/components/form/expressions/types.js.map +1 -1
  198. package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
  199. package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
  200. package/dist/components/form/expressions/useExpressionType.js +181 -0
  201. package/dist/components/form/expressions/useExpressionType.js.map +1 -0
  202. package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
  203. package/dist/components/form/expressions/useRenderExpression.js +13 -9
  204. package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
  205. package/dist/components/form/expressions/wildcardExpressions.d.ts +27 -0
  206. package/dist/components/form/expressions/wildcardExpressions.d.ts.map +1 -0
  207. package/dist/components/form/expressions/wildcardExpressions.js +101 -0
  208. package/dist/components/form/expressions/wildcardExpressions.js.map +1 -0
  209. package/dist/components/form/fields/Field.d.ts.map +1 -1
  210. package/dist/components/form/fields/Field.js +39 -18
  211. package/dist/components/form/fields/Field.js.map +1 -1
  212. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts +0 -7
  213. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
  214. package/dist/components/form/fields/allowed-values/AllowedValues.js +46 -35
  215. package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
  216. package/dist/components/form/fields/allowed-values/choicePicture.d.ts +37 -0
  217. package/dist/components/form/fields/allowed-values/choicePicture.d.ts.map +1 -0
  218. package/dist/components/form/fields/allowed-values/choicePicture.js +64 -0
  219. package/dist/components/form/fields/allowed-values/choicePicture.js.map +1 -0
  220. package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
  221. package/dist/components/form/fields/array/ArrayAuto.js +24 -0
  222. package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
  223. package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
  224. package/dist/components/form/fields/array/ArrayAutoField.js +36 -13
  225. package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
  226. package/dist/components/form/fields/auto/AutoFormField.d.ts +30 -1
  227. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
  228. package/dist/components/form/fields/auto/AutoFormField.js +123 -79
  229. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
  230. package/dist/components/form/fields/auto/hostEditorValue.d.ts +30 -0
  231. package/dist/components/form/fields/auto/hostEditorValue.d.ts.map +1 -0
  232. package/dist/components/form/fields/auto/hostEditorValue.js +53 -0
  233. package/dist/components/form/fields/auto/hostEditorValue.js.map +1 -0
  234. package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
  235. package/dist/components/form/fields/binary/Binary.js +23 -3
  236. package/dist/components/form/fields/binary/Binary.js.map +1 -1
  237. package/dist/components/form/fields/boolean/Boolean.d.ts +5 -0
  238. package/dist/components/form/fields/boolean/Boolean.d.ts.map +1 -1
  239. package/dist/components/form/fields/boolean/Boolean.js +9 -1
  240. package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
  241. package/dist/components/form/fields/color/Color.d.ts +103 -16
  242. package/dist/components/form/fields/color/Color.d.ts.map +1 -1
  243. package/dist/components/form/fields/color/Color.js +616 -16
  244. package/dist/components/form/fields/color/Color.js.map +1 -1
  245. package/dist/components/form/fields/emittedValues.d.ts +34 -3
  246. package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
  247. package/dist/components/form/fields/emittedValues.js +24 -1
  248. package/dist/components/form/fields/emittedValues.js.map +1 -1
  249. package/dist/components/form/fields/file/File.d.ts +1 -1
  250. package/dist/components/form/fields/file/File.d.ts.map +1 -1
  251. package/dist/components/form/fields/file/File.js +4 -2
  252. package/dist/components/form/fields/file/File.js.map +1 -1
  253. package/dist/components/form/fields/long-string/LongString.d.ts +1 -7
  254. package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
  255. package/dist/components/form/fields/long-string/LongString.js +30 -13
  256. package/dist/components/form/fields/long-string/LongString.js.map +1 -1
  257. package/dist/components/form/fields/markdown/MarkdownView.js +1 -1
  258. package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
  259. package/dist/components/form/fields/multi-select/MultiSelectFormField.js +10 -7
  260. package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
  261. package/dist/components/form/fields/number/Number.d.ts +7 -4
  262. package/dist/components/form/fields/number/Number.d.ts.map +1 -1
  263. package/dist/components/form/fields/number/Number.js +45 -18
  264. package/dist/components/form/fields/number/Number.js.map +1 -1
  265. package/dist/components/form/fields/object/Object.d.ts +1 -1
  266. package/dist/components/form/fields/object/Object.d.ts.map +1 -1
  267. package/dist/components/form/fields/object/Object.js +4 -2
  268. package/dist/components/form/fields/object/Object.js.map +1 -1
  269. package/dist/components/form/fields/pendingEdit.d.ts +52 -0
  270. package/dist/components/form/fields/pendingEdit.d.ts.map +1 -0
  271. package/dist/components/form/fields/pendingEdit.js +79 -0
  272. package/dist/components/form/fields/pendingEdit.js.map +1 -0
  273. package/dist/components/form/fields/radio-group/RadioGroup.d.ts.map +1 -1
  274. package/dist/components/form/fields/radio-group/RadioGroup.js +8 -13
  275. package/dist/components/form/fields/radio-group/RadioGroup.js.map +1 -1
  276. package/dist/components/form/fields/rich-text/RichText.d.ts +20 -1
  277. package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
  278. package/dist/components/form/fields/rich-text/RichText.js +426 -91
  279. package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
  280. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts +18 -0
  281. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts.map +1 -0
  282. package/dist/components/form/fields/rich-text/useTemplateTags.js +80 -0
  283. package/dist/components/form/fields/rich-text/useTemplateTags.js.map +1 -0
  284. package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -1
  285. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +4 -1
  286. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -1
  287. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -1
  288. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +20 -5
  289. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -1
  290. package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -1
  291. package/dist/components/form/fields/schema-definition/TableEditor.js +10 -2
  292. package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -1
  293. package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -1
  294. package/dist/components/form/fields/schema-definition/index.js +8 -4
  295. package/dist/components/form/fields/schema-definition/index.js.map +1 -1
  296. package/dist/components/form/fields/select/Select.d.ts +10 -1
  297. package/dist/components/form/fields/select/Select.d.ts.map +1 -1
  298. package/dist/components/form/fields/select/Select.js +28 -14
  299. package/dist/components/form/fields/select/Select.js.map +1 -1
  300. package/dist/components/form/fields/select/SelectCollection.d.ts +5 -0
  301. package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
  302. package/dist/components/form/fields/select/SelectCollection.js +25 -12
  303. package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
  304. package/dist/components/form/fields/select/unavailableRow.d.ts +23 -0
  305. package/dist/components/form/fields/select/unavailableRow.d.ts.map +1 -0
  306. package/dist/components/form/fields/select/unavailableRow.js +55 -0
  307. package/dist/components/form/fields/select/unavailableRow.js.map +1 -0
  308. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +11 -5
  309. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
  310. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +21 -5
  311. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
  312. package/dist/components/form/fields/template/TemplateBrowser.d.ts +16 -0
  313. package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
  314. package/dist/components/form/fields/template/TemplateBrowser.js +89 -0
  315. package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
  316. package/dist/components/form/fields/template/TemplateField.d.ts +105 -1
  317. package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
  318. package/dist/components/form/fields/template/TemplateField.js +706 -168
  319. package/dist/components/form/fields/template/TemplateField.js.map +1 -1
  320. package/dist/components/form/fields/template/TemplatePicker.d.ts +54 -0
  321. package/dist/components/form/fields/template/TemplatePicker.d.ts.map +1 -0
  322. package/dist/components/form/fields/template/TemplatePicker.js +459 -0
  323. package/dist/components/form/fields/template/TemplatePicker.js.map +1 -0
  324. package/dist/components/form/fields/template/TemplateText.d.ts +0 -17
  325. package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -1
  326. package/dist/components/form/fields/template/TemplateText.js +22 -16
  327. package/dist/components/form/fields/template/TemplateText.js.map +1 -1
  328. package/dist/components/form/fields/template/referenceNames.d.ts +63 -0
  329. package/dist/components/form/fields/template/referenceNames.d.ts.map +1 -0
  330. package/dist/components/form/fields/template/referenceNames.js +69 -0
  331. package/dist/components/form/fields/template/referenceNames.js.map +1 -0
  332. package/dist/components/form/fields/template/writtenAsText.d.ts +61 -0
  333. package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
  334. package/dist/components/form/fields/template/writtenAsText.js +204 -0
  335. package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
  336. package/dist/components/form/index.d.ts +12 -2
  337. package/dist/components/form/index.d.ts.map +1 -1
  338. package/dist/components/form/index.js +25 -3
  339. package/dist/components/form/index.js.map +1 -1
  340. package/dist/components/form/typeSentenceForm.d.ts +17 -0
  341. package/dist/components/form/typeSentenceForm.d.ts.map +1 -0
  342. package/dist/components/form/typeSentenceForm.js +54 -0
  343. package/dist/components/form/typeSentenceForm.js.map +1 -0
  344. package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
  345. package/dist/components/imageLightbox/ImageLightbox.js +19 -9
  346. package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
  347. package/dist/components/log/Log.d.ts.map +1 -1
  348. package/dist/components/log/Log.js +20 -8
  349. package/dist/components/log/Log.js.map +1 -1
  350. package/dist/components/menu/Menu.d.ts.map +1 -1
  351. package/dist/components/menu/Menu.js +19 -10
  352. package/dist/components/menu/Menu.js.map +1 -1
  353. package/dist/components/smartEditor/CompletionMenu.d.ts +53 -0
  354. package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
  355. package/dist/components/smartEditor/CompletionMenu.js +302 -0
  356. package/dist/components/smartEditor/CompletionMenu.js.map +1 -0
  357. package/dist/components/smartEditor/MarkdownDoc.d.ts +1 -1
  358. package/dist/components/smartEditor/MarkdownDoc.js +3 -3
  359. package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
  360. package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
  361. package/dist/components/smartEditor/SmartEditor.js +616 -190
  362. package/dist/components/smartEditor/SmartEditor.js.map +1 -1
  363. package/dist/components/smartEditor/completionStyle.d.ts +28 -0
  364. package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
  365. package/dist/components/smartEditor/completionStyle.js +79 -0
  366. package/dist/components/smartEditor/completionStyle.js.map +1 -0
  367. package/dist/components/smartEditor/contextTitle.d.ts +10 -0
  368. package/dist/components/smartEditor/contextTitle.d.ts.map +1 -0
  369. package/dist/components/smartEditor/contextTitle.js +21 -0
  370. package/dist/components/smartEditor/contextTitle.js.map +1 -0
  371. package/dist/components/smartEditor/editingAids.d.ts +64 -0
  372. package/dist/components/smartEditor/editingAids.d.ts.map +1 -0
  373. package/dist/components/smartEditor/editingAids.js +213 -0
  374. package/dist/components/smartEditor/editingAids.js.map +1 -0
  375. package/dist/components/smartEditor/index.d.ts +6 -1
  376. package/dist/components/smartEditor/index.d.ts.map +1 -1
  377. package/dist/components/smartEditor/index.js +19 -1
  378. package/dist/components/smartEditor/index.js.map +1 -1
  379. package/dist/components/smartEditor/templateCompletions.d.ts +98 -0
  380. package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
  381. package/dist/components/smartEditor/templateCompletions.js +380 -0
  382. package/dist/components/smartEditor/templateCompletions.js.map +1 -0
  383. package/dist/components/smartEditor/typedReferences.d.ts +34 -0
  384. package/dist/components/smartEditor/typedReferences.d.ts.map +1 -0
  385. package/dist/components/smartEditor/typedReferences.js +179 -0
  386. package/dist/components/smartEditor/typedReferences.js.map +1 -0
  387. package/dist/components/smartEditor/types.d.ts +116 -2
  388. package/dist/components/smartEditor/types.d.ts.map +1 -1
  389. package/dist/components/smartEditor/useEditingAids.d.ts +38 -0
  390. package/dist/components/smartEditor/useEditingAids.d.ts.map +1 -0
  391. package/dist/components/smartEditor/useEditingAids.js +392 -0
  392. package/dist/components/smartEditor/useEditingAids.js.map +1 -0
  393. package/dist/components/smartEditor/useLspAutocomplete.d.ts +106 -3
  394. package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
  395. package/dist/components/smartEditor/useLspAutocomplete.js +592 -149
  396. package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
  397. package/dist/components/smartEditor/useLspHover.d.ts +33 -7
  398. package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
  399. package/dist/components/smartEditor/useLspHover.js +364 -35
  400. package/dist/components/smartEditor/useLspHover.js.map +1 -1
  401. package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
  402. package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
  403. package/dist/components/smartEditor/useLspSession.d.ts +6 -0
  404. package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
  405. package/dist/components/smartEditor/useLspSession.js +7 -6
  406. package/dist/components/smartEditor/useLspSession.js.map +1 -1
  407. package/dist/components/smartEditor/useLspSignatureHelp.d.ts.map +1 -1
  408. package/dist/components/smartEditor/useLspSignatureHelp.js +6 -11
  409. package/dist/components/smartEditor/useLspSignatureHelp.js.map +1 -1
  410. package/dist/components/smartEditor/useTabCameIn.d.ts +10 -0
  411. package/dist/components/smartEditor/useTabCameIn.d.ts.map +1 -0
  412. package/dist/components/smartEditor/useTabCameIn.js +42 -0
  413. package/dist/components/smartEditor/useTabCameIn.js.map +1 -0
  414. package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -1
  415. package/dist/components/supportTicket/AttachmentChips.js +15 -5
  416. package/dist/components/supportTicket/AttachmentChips.js.map +1 -1
  417. package/dist/components/supportTicket/InterfaceReferenceTags.d.ts +2 -3
  418. package/dist/components/supportTicket/InterfaceReferenceTags.d.ts.map +1 -1
  419. package/dist/components/supportTicket/InterfaceReferenceTags.js.map +1 -1
  420. package/dist/components/supportTicket/ReferencePicker.d.ts +9 -3
  421. package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
  422. package/dist/components/supportTicket/ReferencePicker.js +38 -23
  423. package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
  424. package/dist/components/supportTicket/TicketHeader.d.ts +3 -4
  425. package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
  426. package/dist/components/supportTicket/TicketHeader.js +21 -6
  427. package/dist/components/supportTicket/TicketHeader.js.map +1 -1
  428. package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
  429. package/dist/components/supportTicket/TicketReplyBox.d.ts.map +1 -1
  430. package/dist/components/supportTicket/TicketReplyBox.js +10 -29
  431. package/dist/components/supportTicket/TicketReplyBox.js.map +1 -1
  432. package/dist/components/supportTicket/useLoadedImages.d.ts +0 -10
  433. package/dist/components/supportTicket/useLoadedImages.d.ts.map +1 -1
  434. package/dist/components/supportTicket/useLoadedImages.js +1 -63
  435. package/dist/components/supportTicket/useLoadedImages.js.map +1 -1
  436. package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
  437. package/dist/components/ticketReferences/TicketReferences.js +10 -9
  438. package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
  439. package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
  440. package/dist/components/ticketThread/TicketThread.js +52 -21
  441. package/dist/components/ticketThread/TicketThread.js.map +1 -1
  442. package/dist/helpers/allowedValues.d.ts +21 -12
  443. package/dist/helpers/allowedValues.d.ts.map +1 -1
  444. package/dist/helpers/allowedValues.js +40 -20
  445. package/dist/helpers/allowedValues.js.map +1 -1
  446. package/dist/helpers/descriptionTooltip.d.ts +46 -0
  447. package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
  448. package/dist/helpers/descriptionTooltip.js +76 -0
  449. package/dist/helpers/descriptionTooltip.js.map +1 -0
  450. package/dist/helpers/domProps.d.ts +5 -0
  451. package/dist/helpers/domProps.d.ts.map +1 -0
  452. package/dist/helpers/domProps.js +47 -0
  453. package/dist/helpers/domProps.js.map +1 -0
  454. package/dist/helpers/expressions.d.ts +115 -4
  455. package/dist/helpers/expressions.d.ts.map +1 -1
  456. package/dist/helpers/expressions.js +247 -29
  457. package/dist/helpers/expressions.js.map +1 -1
  458. package/dist/helpers/hoveringPointer.d.ts +26 -0
  459. package/dist/helpers/hoveringPointer.d.ts.map +1 -0
  460. package/dist/helpers/hoveringPointer.js +29 -0
  461. package/dist/helpers/hoveringPointer.js.map +1 -0
  462. package/dist/helpers/markdownText.d.ts +14 -0
  463. package/dist/helpers/markdownText.d.ts.map +1 -0
  464. package/dist/helpers/markdownText.js +160 -0
  465. package/dist/helpers/markdownText.js.map +1 -0
  466. package/dist/helpers/noDescription.d.ts +9 -0
  467. package/dist/helpers/noDescription.d.ts.map +1 -0
  468. package/dist/helpers/noDescription.js +13 -0
  469. package/dist/helpers/noDescription.js.map +1 -0
  470. package/dist/helpers/optionUiTypes.d.ts +2 -2
  471. package/dist/helpers/qorusTypeCatalogue.d.ts +147 -0
  472. package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
  473. package/dist/helpers/qorusTypeCatalogue.js +505 -0
  474. package/dist/helpers/qorusTypeCatalogue.js.map +1 -0
  475. package/dist/helpers/readableColors.d.ts +36 -0
  476. package/dist/helpers/readableColors.d.ts.map +1 -0
  477. package/dist/helpers/readableColors.js +116 -0
  478. package/dist/helpers/readableColors.js.map +1 -0
  479. package/dist/helpers/recordFieldReference.d.ts +15 -0
  480. package/dist/helpers/recordFieldReference.d.ts.map +1 -0
  481. package/dist/helpers/recordFieldReference.js +89 -0
  482. package/dist/helpers/recordFieldReference.js.map +1 -0
  483. package/dist/helpers/singleLineString.d.ts.map +1 -1
  484. package/dist/helpers/singleLineString.js +0 -1
  485. package/dist/helpers/singleLineString.js.map +1 -1
  486. package/dist/helpers/templateCatalogue.d.ts +104 -0
  487. package/dist/helpers/templateCatalogue.d.ts.map +1 -0
  488. package/dist/helpers/templateCatalogue.js +116 -0
  489. package/dist/helpers/templateCatalogue.js.map +1 -0
  490. package/dist/helpers/templateCatalogueContext.d.ts +19 -0
  491. package/dist/helpers/templateCatalogueContext.d.ts.map +1 -0
  492. package/dist/helpers/templateCatalogueContext.js +31 -0
  493. package/dist/helpers/templateCatalogueContext.js.map +1 -0
  494. package/dist/helpers/templateItems.d.ts +2 -2
  495. package/dist/helpers/templateItems.d.ts.map +1 -1
  496. package/dist/helpers/templateItems.js +6 -4
  497. package/dist/helpers/templateItems.js.map +1 -1
  498. package/dist/helpers/templateText.d.ts +1 -0
  499. package/dist/helpers/templateText.d.ts.map +1 -1
  500. package/dist/helpers/templateText.js +7 -3
  501. package/dist/helpers/templateText.js.map +1 -1
  502. package/dist/helpers/templateTree.d.ts +248 -0
  503. package/dist/helpers/templateTree.d.ts.map +1 -0
  504. package/dist/helpers/templateTree.js +892 -0
  505. package/dist/helpers/templateTree.js.map +1 -0
  506. package/dist/helpers/templateType.d.ts +28 -0
  507. package/dist/helpers/templateType.d.ts.map +1 -0
  508. package/dist/helpers/templateType.js +30 -0
  509. package/dist/helpers/templateType.js.map +1 -0
  510. package/dist/helpers/templates.d.ts +86 -16
  511. package/dist/helpers/templates.d.ts.map +1 -1
  512. package/dist/helpers/templates.js +305 -45
  513. package/dist/helpers/templates.js.map +1 -1
  514. package/dist/helpers/validations.d.ts +27 -0
  515. package/dist/helpers/validations.d.ts.map +1 -1
  516. package/dist/helpers/validations.js +169 -39
  517. package/dist/helpers/validations.js.map +1 -1
  518. package/dist/helpers/webLink.d.ts +8 -0
  519. package/dist/helpers/webLink.d.ts.map +1 -0
  520. package/dist/helpers/webLink.js +29 -0
  521. package/dist/helpers/webLink.js.map +1 -0
  522. package/dist/hooks/useQorusTypes.d.ts +12 -17
  523. package/dist/hooks/useQorusTypes.d.ts.map +1 -1
  524. package/dist/hooks/useQorusTypes.js +44 -172
  525. package/dist/hooks/useQorusTypes.js.map +1 -1
  526. package/dist/hooks/useReadableIntentShade.d.ts +9 -0
  527. package/dist/hooks/useReadableIntentShade.d.ts.map +1 -0
  528. package/dist/hooks/useReadableIntentShade.js +23 -0
  529. package/dist/hooks/useReadableIntentShade.js.map +1 -0
  530. package/dist/hooks/useReadableOpacity.d.ts +6 -0
  531. package/dist/hooks/useReadableOpacity.d.ts.map +1 -0
  532. package/dist/hooks/useReadableOpacity.js +17 -0
  533. package/dist/hooks/useReadableOpacity.js.map +1 -0
  534. package/dist/index.d.ts +8 -0
  535. package/dist/index.d.ts.map +1 -1
  536. package/dist/index.js +24 -1
  537. package/dist/index.js.map +1 -1
  538. package/dist/tracking/ui/ExperimentCard.d.ts +1 -1
  539. package/dist/tracking/ui/ExperimentCard.d.ts.map +1 -1
  540. package/dist/tracking/ui/ExperimentCard.js +26 -10
  541. package/dist/tracking/ui/ExperimentCard.js.map +1 -1
  542. package/dist/tracking/ui/card.d.ts +2 -2
  543. package/dist/tracking/ui/card.d.ts.map +1 -1
  544. package/dist/tracking/ui/card.js +2 -2
  545. package/dist/tracking/ui/card.js.map +1 -1
  546. package/dist/tracking/ui/readable.d.ts +14 -0
  547. package/dist/tracking/ui/readable.d.ts.map +1 -0
  548. package/dist/tracking/ui/readable.js +60 -0
  549. package/dist/tracking/ui/readable.js.map +1 -0
  550. package/dist/utils/fetch.d.ts +9 -2
  551. package/dist/utils/fetch.d.ts.map +1 -1
  552. package/dist/utils/fetch.js +6 -5
  553. package/dist/utils/fetch.js.map +1 -1
  554. package/dist/utils/lspClient.types.d.ts +2 -0
  555. package/dist/utils/lspClient.types.d.ts.map +1 -1
  556. package/dist/utils/websocket.d.ts +65 -2
  557. package/dist/utils/websocket.d.ts.map +1 -1
  558. package/dist/utils/websocket.js +276 -44
  559. package/dist/utils/websocket.js.map +1 -1
  560. package/package.json +14 -6
  561. package/.claude/CLAUDE.md +0 -317
  562. package/.tasks/EXPORT_EXPRESSION_BUILDER.md +0 -38
  563. package/.tasks/EXPRESSION_BUILDER_REPORT.md +0 -149
  564. package/.tasks/EXPRESSION_FIELD_SEAMS.md +0 -66
  565. package/.tasks/FIELD_STACK_REPORT.md +0 -234
  566. package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +0 -558
  567. package/.tasks/FORM_ENGINE_EXPRESSIONS.md +0 -197
  568. package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +0 -95
  569. package/.tasks/FORM_FIELD_EXTRAS.md +0 -72
  570. package/.tasks/INDEX.md +0 -111
  571. package/.tasks/LSP_SHARED_CONNECTION.md +0 -75
  572. package/.tasks/QONSOLE_ASSIST_FEATURES.md +0 -306
  573. package/.tasks/RENDER_EXPRESSION_LSP.md +0 -159
  574. package/.tasks/REQRAFT_AUTO_FIELD.md +0 -176
  575. package/.tasks/SCHEMA_DEFINITION_FIELD.md +0 -250
  576. package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +0 -340
  577. package/.tasks/SMART_EDITOR_LSP_FEATURES.md +0 -299
  578. package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +0 -280
  579. package/.tasks/SMART_EDITOR_UX_POLISH.md +0 -383
  580. package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +0 -246
  581. package/.tasks/STORY_NETWORK_ISOLATION.md +0 -98
  582. package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +0 -72
  583. package/CODE_OF_CONDUCT.md +0 -105
  584. package/CONTRIBUTING.MD +0 -78
  585. package/SECURITY.md +0 -3
  586. package/chromatic.config.json +0 -5
  587. package/design/COMPACT_ENGINE_REDESIGN.md +0 -156
  588. package/design/COMPACT_INFO_DISPLAY.md +0 -87
  589. package/design/COMPACT_PARITY.md +0 -85
  590. package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +0 -92
  591. package/design/FORM_ENGINE_COMPACT.md +0 -300
  592. package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +0 -353
  593. package/design/FORM_ENGINE_EXPRESSIONS.md +0 -257
  594. package/design/FORM_ENGINE_FIELD_MIGRATION.md +0 -419
  595. package/design/IDE_INTEGRATION.md +0 -64
  596. package/design/RENDER_EXPRESSION_TRANSPORT.md +0 -156
  597. package/design/SELECT_DIALOG_FLOOR.md +0 -86
  598. package/design/SMART_EDITOR_UX.md +0 -438
  599. package/design/TRACKING.md +0 -290
  600. package/design/UNAVAILABLE_ALLOWED_VALUES.md +0 -226
  601. package/dist/components/form/engine/formAppearance.d.ts +0 -49
  602. package/dist/components/form/engine/formAppearance.d.ts.map +0 -1
  603. package/dist/components/form/engine/formAppearance.js +0 -50
  604. package/dist/components/form/engine/formAppearance.js.map +0 -1
  605. package/dist/components/form/fields/ChoiceGroupHeading.d.ts +0 -21
  606. package/dist/components/form/fields/ChoiceGroupHeading.d.ts.map +0 -1
  607. package/dist/components/form/fields/ChoiceGroupHeading.js +0 -33
  608. package/dist/components/form/fields/ChoiceGroupHeading.js.map +0 -1
  609. package/dist/components/form/fields/allowed-values/savedValues.d.ts +0 -30
  610. package/dist/components/form/fields/allowed-values/savedValues.d.ts.map +0 -1
  611. package/dist/components/form/fields/allowed-values/savedValues.js +0 -39
  612. package/dist/components/form/fields/allowed-values/savedValues.js.map +0 -1
  613. package/dist/helpers/fieldDescription.d.ts +0 -16
  614. package/dist/helpers/fieldDescription.d.ts.map +0 -1
  615. package/dist/helpers/fieldDescription.js +0 -40
  616. package/dist/helpers/fieldDescription.js.map +0 -1
  617. package/src/components/Description/index.tsx +0 -254
  618. package/src/components/Description/markdownRendererContext.tsx +0 -29
  619. package/src/components/FocusedEditing/index.tsx +0 -50
  620. package/src/components/codeSize/index.tsx +0 -79
  621. package/src/components/composer/Composer.stories.tsx +0 -238
  622. package/src/components/composer/Composer.tsx +0 -554
  623. package/src/components/composer/helpers.ts +0 -74
  624. package/src/components/composer/index.ts +0 -2
  625. package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -1183
  626. package/src/components/dpqlEditor/DpqlEditor.tsx +0 -219
  627. package/src/components/dpqlEditor/dpqlHelpers.ts +0 -287
  628. package/src/components/dpqlEditor/dpqlInserter.ts +0 -121
  629. package/src/components/dpqlEditor/dpqlProbe.ts +0 -165
  630. package/src/components/dpqlEditor/dpqlTags.ts +0 -114
  631. package/src/components/dpqlEditor/index.ts +0 -41
  632. package/src/components/dpqlEditor/types.ts +0 -203
  633. package/src/components/dpqlEditor/useDpqlProbe.ts +0 -33
  634. package/src/components/dpqlEditor/useDpqlSession.ts +0 -411
  635. package/src/components/form/engine/CompactRow.tsx +0 -2740
  636. package/src/components/form/engine/CompactToolbar.tsx +0 -399
  637. package/src/components/form/engine/FormEngine.stories.tsx +0 -9934
  638. package/src/components/form/engine/FormEngine.tsx +0 -4891
  639. package/src/components/form/engine/FormEngineAppearance.stories.tsx +0 -609
  640. package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
  641. package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -335
  642. package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
  643. package/src/components/form/engine/OptionFieldMessages.tsx +0 -548
  644. package/src/components/form/engine/OptionsHelpDialog.tsx +0 -29
  645. package/src/components/form/engine/__fixtures__/basicFormOptions.ts +0 -309
  646. package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +0 -45
  647. package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +0 -233
  648. package/src/components/form/engine/_structuredData/SchemaDataView.tsx +0 -755
  649. package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +0 -85
  650. package/src/components/form/engine/_structuredData/StructuredDataView.tsx +0 -75
  651. package/src/components/form/engine/_structuredData/structuredData.ts +0 -145
  652. package/src/components/form/engine/compactRowContext.ts +0 -153
  653. package/src/components/form/engine/compactRowStyles.ts +0 -1087
  654. package/src/components/form/engine/compactToolbarContext.ts +0 -72
  655. package/src/components/form/engine/formAppearance.ts +0 -79
  656. package/src/components/form/engine/optionActions.ts +0 -128
  657. package/src/components/form/engine/optionsContext.ts +0 -24
  658. package/src/components/form/engine/readFirst.ts +0 -1090
  659. package/src/components/form/engine/rendererTypes.ts +0 -107
  660. package/src/components/form/engine/revealRow.ts +0 -123
  661. package/src/components/form/engine/rowFocus.ts +0 -112
  662. package/src/components/form/engine/rowMenuContext.ts +0 -159
  663. package/src/components/form/engine/rowOpenPicker.ts +0 -27
  664. package/src/components/form/engine/typeChoices.ts +0 -63
  665. package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +0 -159
  666. package/src/components/form/engine/variants/VariantCalmTable.tsx +0 -244
  667. package/src/components/form/engine/variants/VariantCards.tsx +0 -212
  668. package/src/components/form/engine/variants/VariantFocus.tsx +0 -382
  669. package/src/components/form/engine/variants/VariantMinimal.tsx +0 -170
  670. package/src/components/form/engine/variants/focusDemo.ts +0 -145
  671. package/src/components/form/engine/variants/variantModel.ts +0 -223
  672. package/src/components/form/engine/variants/variantParts.tsx +0 -313
  673. package/src/components/form/expressions/DpqlRendering.tsx +0 -85
  674. package/src/components/form/expressions/ExpressionField.stories.tsx +0 -1395
  675. package/src/components/form/expressions/ExpressionField.tsx +0 -503
  676. package/src/components/form/expressions/argumentPresence.ts +0 -213
  677. package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +0 -1683
  678. package/src/components/form/expressions/builder/argumentDetail.tsx +0 -17
  679. package/src/components/form/expressions/builder/argumentLabel.tsx +0 -146
  680. package/src/components/form/expressions/builder/argumentSlot.tsx +0 -101
  681. package/src/components/form/expressions/builder/argumentWrapper.tsx +0 -243
  682. package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +0 -120
  683. package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +0 -69
  684. package/src/components/form/expressions/builder/index.tsx +0 -1545
  685. package/src/components/form/expressions/builder/item.tsx +0 -89
  686. package/src/components/form/expressions/builder/moveToPositionStrip.tsx +0 -156
  687. package/src/components/form/expressions/builder/renderTemplate.tsx +0 -42
  688. package/src/components/form/expressions/dpqlMockLanguage.ts +0 -566
  689. package/src/components/form/expressions/dpqlMockLsp.ts +0 -126
  690. package/src/components/form/expressions/mockExpressions.ts +0 -317
  691. package/src/components/form/expressions/renderExpressionToText.ts +0 -152
  692. package/src/components/form/expressions/types.ts +0 -110
  693. package/src/components/form/expressions/useExpressions.ts +0 -101
  694. package/src/components/form/expressions/useRenderExpression.ts +0 -165
  695. package/src/components/form/fields/ChoiceGroupHeading.tsx +0 -38
  696. package/src/components/form/fields/Field.stories.tsx +0 -143
  697. package/src/components/form/fields/Field.tsx +0 -734
  698. package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -321
  699. package/src/components/form/fields/allowed-values/savedValues.ts +0 -64
  700. package/src/components/form/fields/array/ArrayAuto.tsx +0 -237
  701. package/src/components/form/fields/array/ArrayAutoField.stories.tsx +0 -475
  702. package/src/components/form/fields/array/ArrayAutoField.tsx +0 -367
  703. package/src/components/form/fields/auto/AutoFormField.stories.tsx +0 -825
  704. package/src/components/form/fields/auto/AutoFormField.tsx +0 -1183
  705. package/src/components/form/fields/binary/Binary.stories.tsx +0 -122
  706. package/src/components/form/fields/binary/Binary.tsx +0 -91
  707. package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -125
  708. package/src/components/form/fields/boolean/Boolean.tsx +0 -34
  709. package/src/components/form/fields/byte-size/ByteSize.stories.tsx +0 -87
  710. package/src/components/form/fields/byte-size/ByteSize.tsx +0 -58
  711. package/src/components/form/fields/color/Color.stories.tsx +0 -99
  712. package/src/components/form/fields/color/Color.tsx +0 -46
  713. package/src/components/form/fields/cron/Cron.stories.tsx +0 -68
  714. package/src/components/form/fields/cron/Cron.tsx +0 -80
  715. package/src/components/form/fields/date/Date.stories.tsx +0 -77
  716. package/src/components/form/fields/date/Date.tsx +0 -55
  717. package/src/components/form/fields/emittedValues.ts +0 -70
  718. package/src/components/form/fields/file/File.stories.tsx +0 -161
  719. package/src/components/form/fields/file/File.tsx +0 -227
  720. package/src/components/form/fields/long-string/LongString.stories.tsx +0 -147
  721. package/src/components/form/fields/long-string/LongString.tsx +0 -141
  722. package/src/components/form/fields/markdown/Markdown.stories.tsx +0 -76
  723. package/src/components/form/fields/markdown/Markdown.tsx +0 -81
  724. package/src/components/form/fields/markdown/MarkdownView.tsx +0 -222
  725. package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +0 -140
  726. package/src/components/form/fields/number/Number.stories.tsx +0 -159
  727. package/src/components/form/fields/number/Number.tsx +0 -175
  728. package/src/components/form/fields/object/Object.stories.tsx +0 -398
  729. package/src/components/form/fields/object/Object.tsx +0 -255
  730. package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +0 -95
  731. package/src/components/form/fields/radio-group/RadioGroup.tsx +0 -52
  732. package/src/components/form/fields/radio-group/images/java-96x128.png +0 -0
  733. package/src/components/form/fields/radio-group/images/python-129x128.png +0 -0
  734. package/src/components/form/fields/radio-group/images/qore-106x128.png +0 -0
  735. package/src/components/form/fields/rich-text/RichText.stories.tsx +0 -260
  736. package/src/components/form/fields/rich-text/RichText.tsx +0 -537
  737. package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +0 -242
  738. package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +0 -758
  739. package/src/components/form/fields/schema-definition/Hint.tsx +0 -22
  740. package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +0 -138
  741. package/src/components/form/fields/schema-definition/Loader.tsx +0 -20
  742. package/src/components/form/fields/schema-definition/MigrationsTab.tsx +0 -187
  743. package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +0 -286
  744. package/src/components/form/fields/schema-definition/TableEditor.tsx +0 -155
  745. package/src/components/form/fields/schema-definition/TablesTab.tsx +0 -138
  746. package/src/components/form/fields/schema-definition/catalog.ts +0 -237
  747. package/src/components/form/fields/schema-definition/helpers.ts +0 -90
  748. package/src/components/form/fields/schema-definition/index.tsx +0 -418
  749. package/src/components/form/fields/schema-definition/mockCatalog.ts +0 -325
  750. package/src/components/form/fields/schema-definition/mockDefinition.ts +0 -111
  751. package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +0 -152
  752. package/src/components/form/fields/schema-definition/starterTemplate.ts +0 -68
  753. package/src/components/form/fields/schema-definition/types.ts +0 -185
  754. package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +0 -49
  755. package/src/components/form/fields/select/Select.stories.tsx +0 -872
  756. package/src/components/form/fields/select/Select.tsx +0 -624
  757. package/src/components/form/fields/select/SelectCollection.tsx +0 -594
  758. package/src/components/form/fields/string/String.stories.tsx +0 -86
  759. package/src/components/form/fields/string/String.tsx +0 -43
  760. package/src/components/form/fields/template/ExampleValueModal.stories.tsx +0 -114
  761. package/src/components/form/fields/template/ExampleValueModal.tsx +0 -99
  762. package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +0 -47
  763. package/src/components/form/fields/template/TemplateField.stories.tsx +0 -1121
  764. package/src/components/form/fields/template/TemplateField.tsx +0 -1749
  765. package/src/components/form/fields/template/TemplateText.tsx +0 -115
  766. package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +0 -7
  767. package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +0 -147
  768. package/src/components/form/fields/template/__fixtures__/templates.json +0 -83
  769. package/src/components/form/fields/timeout/Timeout.stories.tsx +0 -228
  770. package/src/components/form/fields/timeout/Timeout.tsx +0 -87
  771. package/src/components/form/fields/url/Url.stories.tsx +0 -94
  772. package/src/components/form/fields/url/Url.tsx +0 -85
  773. package/src/components/form/index.tsx +0 -49
  774. package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
  775. package/src/components/imageLightbox/ImageLightbox.tsx +0 -238
  776. package/src/components/imageLightbox/index.ts +0 -1
  777. package/src/components/log/Log.stories.tsx +0 -333
  778. package/src/components/log/Log.tsx +0 -285
  779. package/src/components/menu/Menu.stories.tsx +0 -155
  780. package/src/components/menu/Menu.tsx +0 -312
  781. package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +0 -797
  782. package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +0 -105
  783. package/src/components/qonsoleSmartInput/index.ts +0 -16
  784. package/src/components/qonsoleSmartInput/qonsoleInserter.ts +0 -77
  785. package/src/components/qonsoleSmartInput/types.ts +0 -133
  786. package/src/components/qonsoleSmartInput/useQonsoleSession.ts +0 -124
  787. package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +0 -62
  788. package/src/components/searchFilterBar/SearchFilterBar.tsx +0 -144
  789. package/src/components/searchFilterBar/index.ts +0 -1
  790. package/src/components/smartEditor/MarkdownDoc.tsx +0 -190
  791. package/src/components/smartEditor/SmartEditor.stories.tsx +0 -475
  792. package/src/components/smartEditor/SmartEditor.tsx +0 -808
  793. package/src/components/smartEditor/__fixtures__/mockLspServer.ts +0 -205
  794. package/src/components/smartEditor/helpers.ts +0 -217
  795. package/src/components/smartEditor/index.ts +0 -35
  796. package/src/components/smartEditor/styling.ts +0 -45
  797. package/src/components/smartEditor/types.ts +0 -211
  798. package/src/components/smartEditor/useLspAutocomplete.ts +0 -758
  799. package/src/components/smartEditor/useLspDiagnosticDecorations.ts +0 -125
  800. package/src/components/smartEditor/useLspHover.ts +0 -230
  801. package/src/components/smartEditor/useLspSemanticTokens.ts +0 -298
  802. package/src/components/smartEditor/useLspSession.ts +0 -231
  803. package/src/components/smartEditor/useLspSignatureHelp.ts +0 -198
  804. package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -171
  805. package/src/components/supportTicket/AttachmentChips.tsx +0 -147
  806. package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -257
  807. package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -130
  808. package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -580
  809. package/src/components/supportTicket/ReferencePicker.tsx +0 -573
  810. package/src/components/supportTicket/TicketConversation.stories.tsx +0 -120
  811. package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
  812. package/src/components/supportTicket/TicketHeader.tsx +0 -248
  813. package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
  814. package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
  815. package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -357
  816. package/src/components/supportTicket/TicketReplyBox.tsx +0 -172
  817. package/src/components/supportTicket/__fixtures__/kindMarks.ts +0 -28
  818. package/src/components/supportTicket/attachmentAccess.ts +0 -97
  819. package/src/components/supportTicket/fileToAttachment.ts +0 -24
  820. package/src/components/supportTicket/index.ts +0 -10
  821. package/src/components/supportTicket/meta.ts +0 -206
  822. package/src/components/supportTicket/ticketModel.ts +0 -131
  823. package/src/components/supportTicket/useLoadedImages.ts +0 -93
  824. package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -341
  825. package/src/components/ticketReferences/TicketReferences.tsx +0 -914
  826. package/src/components/ticketReferences/index.ts +0 -2
  827. package/src/components/ticketThread/TicketThread.stories.tsx +0 -898
  828. package/src/components/ticketThread/TicketThread.tsx +0 -706
  829. package/src/components/ticketThread/index.ts +0 -6
  830. package/src/contexts/FetchContext.tsx +0 -25
  831. package/src/contexts/ReqraftContext.tsx +0 -9
  832. package/src/contexts/StorageContext.tsx +0 -33
  833. package/src/global.d.ts +0 -4
  834. package/src/helpers/allowedValues.ts +0 -268
  835. package/src/helpers/choiceChip.ts +0 -227
  836. package/src/helpers/common.ts +0 -326
  837. package/src/helpers/dpqlDetection.ts +0 -209
  838. package/src/helpers/expressions.ts +0 -140
  839. package/src/helpers/fieldDescription.ts +0 -39
  840. package/src/helpers/optionUiTypes.ts +0 -199
  841. package/src/helpers/options.ts +0 -150
  842. package/src/helpers/providerValue.ts +0 -125
  843. package/src/helpers/scrollbar.ts +0 -32
  844. package/src/helpers/singleLineString.ts +0 -62
  845. package/src/helpers/templateItems.ts +0 -81
  846. package/src/helpers/templateText.ts +0 -350
  847. package/src/helpers/templates.ts +0 -602
  848. package/src/helpers/validations.ts +0 -2085
  849. package/src/hooks/useArgSchema.ts +0 -37
  850. package/src/hooks/useCoarsePointer.ts +0 -30
  851. package/src/hooks/useFetch/useFetch.stories.tsx +0 -379
  852. package/src/hooks/useFetch/useFetch.tsx +0 -154
  853. package/src/hooks/usePhoneViewport.ts +0 -34
  854. package/src/hooks/useQorusTypes.ts +0 -233
  855. package/src/hooks/useReqraftProperty.ts +0 -16
  856. package/src/hooks/useStorage/useStorage.stories.tsx +0 -168
  857. package/src/hooks/useStorage/useStorage.ts +0 -35
  858. package/src/hooks/useTemplates.ts +0 -123
  859. package/src/hooks/useValidation.ts +0 -9
  860. package/src/hooks/useWebSocket/useWebSocket.ts +0 -224
  861. package/src/hooks/useWebSocket/useWebsocket.stories.tsx +0 -640
  862. package/src/hooks/useWhyDidYouUpdate.ts +0 -38
  863. package/src/index.tsx +0 -86
  864. package/src/providers/FetchProvider.tsx +0 -40
  865. package/src/providers/ReqraftProvider.tsx +0 -52
  866. package/src/providers/StorageProvider.tsx +0 -131
  867. package/src/stores/currentUser/currentUser.stories.tsx +0 -100
  868. package/src/stores/currentUser/currentUser.tsx +0 -94
  869. package/src/stories/Data/fileFieldArgSchema.json +0 -86
  870. package/src/stories/Tests/utils.ts +0 -320
  871. package/src/stories/storyNetwork.ts +0 -92
  872. package/src/stories/tracking.tsx +0 -206
  873. package/src/tracking/browser/attach.ts +0 -186
  874. package/src/tracking/browser/env.ts +0 -78
  875. package/src/tracking/core/consent.ts +0 -37
  876. package/src/tracking/core/engagement.ts +0 -47
  877. package/src/tracking/core/experiments.ts +0 -258
  878. package/src/tracking/core/hash.ts +0 -26
  879. package/src/tracking/core/ids.ts +0 -25
  880. package/src/tracking/core/observable.ts +0 -23
  881. package/src/tracking/core/queue.ts +0 -131
  882. package/src/tracking/core/sections.ts +0 -166
  883. package/src/tracking/core/storage.ts +0 -69
  884. package/src/tracking/core/tracker.ts +0 -417
  885. package/src/tracking/core/types.ts +0 -162
  886. package/src/tracking/core/utm.ts +0 -23
  887. package/src/tracking/index.ts +0 -72
  888. package/src/tracking/markup.ts +0 -17
  889. package/src/tracking/react/Experiment.tsx +0 -44
  890. package/src/tracking/react/TrackingProvider.tsx +0 -56
  891. package/src/tracking/react/hooks.ts +0 -106
  892. package/src/tracking/react/index.ts +0 -13
  893. package/src/tracking/testing.ts +0 -108
  894. package/src/tracking/ui/ExperimentCard.stories.tsx +0 -296
  895. package/src/tracking/ui/ExperimentCard.tsx +0 -667
  896. package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -155
  897. package/src/tracking/ui/ExperimentsOverlay.tsx +0 -437
  898. package/src/tracking/ui/anchor.ts +0 -180
  899. package/src/tracking/ui/card.ts +0 -464
  900. package/src/tracking/ui/client.ts +0 -117
  901. package/src/tracking/ui/index.ts +0 -77
  902. package/src/tracking/ui/types.ts +0 -110
  903. package/src/tracking/ui/useExperimentsAdmin.ts +0 -103
  904. package/src/types/Form.ts +0 -29
  905. package/src/types.ts +0 -14
  906. package/src/utils/datetime.ts +0 -10
  907. package/src/utils/fetch.ts +0 -457
  908. package/src/utils/lspClient.ts +0 -711
  909. package/src/utils/lspClient.types.ts +0 -211
  910. package/src/utils/queryUnlessCancelled.ts +0 -28
  911. package/src/utils/websocket.ts +0 -293
  912. package/vite.config.ts +0 -58
  913. package/vitest.config.ts +0 -69
@@ -1,1183 +0,0 @@
1
- import { StoryObj } from '@storybook/react-vite';
2
- import { expect, fn, userEvent, waitFor, within } from 'storybook/test';
3
- import { sleep } from '../../../__tests__/utils';
4
- import { useState } from 'react';
5
- import { StoryMeta } from '../../types';
6
- import {
7
- createMockLspServer,
8
- DEFAULT_LSP_CAPABILITIES,
9
- IMockLspServer,
10
- MOCK_LSP_URL,
11
- } from '../smartEditor/__fixtures__/mockLspServer';
12
- import { mockTokenizeDpql } from '../form/expressions/dpqlMockLanguage';
13
- import { DpqlEditor } from './DpqlEditor';
14
- import { TDpqlFsmContext } from './types';
15
-
16
- let lsp: IMockLspServer;
17
-
18
- interface IDpqlEditorStoryArgs {
19
- value?: string;
20
- onChange?: (v: string) => void;
21
- readOnly?: boolean;
22
- provider?: string;
23
- recordType?: string;
24
- useServerParse?: boolean;
25
- alertPayloadContext?: boolean;
26
- fsmContext?: TDpqlFsmContext;
27
- }
28
-
29
- const DpqlEditorWithState = (props: IDpqlEditorStoryArgs) => {
30
- const [value, setValue] = useState(props.value ?? '');
31
- return (
32
- <DpqlEditor
33
- {...props}
34
- value={value}
35
- onChange={(v) => {
36
- setValue(v);
37
- props.onChange?.(v);
38
- }}
39
- />
40
- );
41
- };
42
-
43
- const meta = {
44
- component: DpqlEditorWithState,
45
- title: 'Components/DpqlEditor',
46
- args: {
47
- value: '',
48
- onChange: fn(),
49
- },
50
- async beforeEach(context) {
51
- // Live stories (those with `parameters: { live: true }`) skip
52
- // the mock-socket server so the editor's WebSocket reaches the
53
- // real Qorus `/lsp` endpoint at `wss://hq.qoretechnologies.com:8092/lsp`.
54
- // Prereq: set `REACT_APP_QORUS_TOKEN` before running storybook.
55
- if (context.parameters?.live) {
56
- return undefined;
57
- }
58
- // Captured from the most recent `dpql/setFsmContext`; surfaced inside
59
- // a `$data:` template, mirroring the real server where `$data:{…}`
60
- // resolves against the bound FSM state.
61
- let fsmStateDataKeys: string[] = [];
62
- lsp = createMockLspServer(MOCK_LSP_URL, {
63
- capabilities: {
64
- ...DEFAULT_LSP_CAPABILITIES,
65
- // Trigger chars mirror the real server (QorusLspWebSocketHandler.qc:847).
66
- signatureHelpProvider: {
67
- triggerCharacters: ['(', ',', ' ', '-', '='],
68
- },
69
- },
70
- handlers: {
71
- 'textDocument/semanticTokens/full': (msg, server) => ({
72
- data: mockTokenizeDpql(server.textOf(msg.params?.textDocument?.uri)),
73
- }),
74
-
75
- // Position-aware like the real `dpql-get-completions`: `$` →
76
- // templates, `@` → fields, no sigil → functions/keywords. The
77
- // mock decides from the char before the cursor.
78
- 'textDocument/completion': (msg, server) => {
79
- const cpos = msg.params?.position ?? { line: 0, character: 0 };
80
- const cline = server.documentText.split('\n')[cpos.line] ?? '';
81
- const chead = cline.slice(0, cpos.character);
82
- const sigilMatch = chead.match(/[@$][\w:.{}]*$/);
83
- const sigilToken = sigilMatch ? sigilMatch[0] : '';
84
- const sigil = sigilToken ? sigilToken[0] : '';
85
- // `$data:` with a bound FSM context resolves against the FSM
86
- // state — surface its data keys.
87
- const inFsmDataTemplate =
88
- sigilToken.startsWith('$data:') && fsmStateDataKeys.length > 0;
89
-
90
- const FIELD_ITEMS = [
91
- {
92
- label: '@name',
93
- insertText: '@name',
94
- kind: 5,
95
- detail: 'string',
96
- documentation: {
97
- kind: 'markdown',
98
- value:
99
- '**Display name** of the record.\n\n' +
100
- '- Indexed, case-insensitive\n' +
101
- '- Maps to the `name` column on the underlying table',
102
- },
103
- },
104
- {
105
- label: '@status',
106
- insertText: '@status',
107
- kind: 5,
108
- detail: 'string',
109
- documentation: {
110
- kind: 'markdown',
111
- value:
112
- '**Lifecycle status** — one of:\n\n' +
113
- '- `active`\n- `paused`\n- `archived`',
114
- },
115
- },
116
- {
117
- label: '@age',
118
- insertText: '@age',
119
- kind: 5,
120
- detail: 'int',
121
- documentation: {
122
- kind: 'plaintext',
123
- value: 'Age in years, computed from birth_date.',
124
- },
125
- },
126
- ];
127
-
128
- // Template namespaces — the real server's `$`-context
129
- // completions (QorusExpressionMap).
130
- const TEMPLATE_ITEMS = [
131
- {
132
- label: '$data:',
133
- insertText: '$data:',
134
- kind: 1,
135
- detail: 'template',
136
- documentation: { kind: 'plaintext', value: 'FSM state data.' },
137
- },
138
- {
139
- label: '$config:',
140
- insertText: '$config:',
141
- kind: 1,
142
- detail: 'template',
143
- documentation: {
144
- kind: 'plaintext',
145
- value: 'Interface configuration item.',
146
- },
147
- },
148
- {
149
- label: '$static:',
150
- insertText: '$static:',
151
- kind: 1,
152
- detail: 'template',
153
- documentation: {
154
- kind: 'plaintext',
155
- value: 'Static workflow data.',
156
- },
157
- },
158
- {
159
- label: '$timestamp:',
160
- insertText: '$timestamp:',
161
- kind: 1,
162
- detail: 'template',
163
- documentation: {
164
- kind: 'plaintext',
165
- value: 'Timestamp value (e.g. `now`).',
166
- },
167
- },
168
- ];
169
-
170
- // No sigil → functions/keywords (what autosuggest surfaces).
171
- const FUNCTION_ITEMS = [
172
- {
173
- label: 'substr',
174
- insertText: 'substr',
175
- kind: 3,
176
- detail: '(string, start, length) → string',
177
- documentation: {
178
- kind: 'markdown',
179
- value: 'Extract a substring.',
180
- },
181
- },
182
- {
183
- label: 'coalesce',
184
- insertText: 'coalesce',
185
- kind: 3,
186
- detail: '(value, …) → auto',
187
- documentation: {
188
- kind: 'markdown',
189
- value: 'First non-null value.',
190
- },
191
- },
192
- {
193
- label: 'round',
194
- insertText: 'round',
195
- kind: 3,
196
- detail: '(number, precision) → auto',
197
- documentation: {
198
- kind: 'markdown',
199
- value: 'Round a number.',
200
- },
201
- },
202
- ];
203
-
204
- // FSM state-data keys from `dpql/setFsmContext`, surfaced inside
205
- // `$data:` when a context is bound.
206
- const FSM_DATA_KEY_ITEMS = fsmStateDataKeys.map((key) => ({
207
- label: key,
208
- insertText: key,
209
- kind: 5, // Field
210
- detail: 'FSM state data',
211
- documentation: {
212
- kind: 'plaintext',
213
- value: `\`${key}\` — resolved from the bound FSM state.`,
214
- },
215
- }));
216
-
217
- const items = inFsmDataTemplate
218
- ? FSM_DATA_KEY_ITEMS
219
- : sigil === '$'
220
- ? TEMPLATE_ITEMS
221
- : sigil === '@'
222
- ? FIELD_ITEMS
223
- : // no sigil → functions/keywords
224
- FUNCTION_ITEMS;
225
-
226
- return { items };
227
- },
228
-
229
- // `WithDelayedContext` slows this via `lsp.delays['dpql/setContext']`
230
- // to show the `isContextReady` overlay.
231
- 'dpql/setContext': (msg) => ({
232
- provider: msg.params?.provider ?? null,
233
- recordType: msg.params?.recordType ?? 'record',
234
- fields: {
235
- name: { display_name: 'Name', type: { name: 'string' } },
236
- status: { display_name: 'Status', type: { name: 'string' } },
237
- age: { display_name: 'Age', type: { name: 'int' } },
238
- },
239
- }),
240
-
241
- 'dpql/validate': () => ({ diagnostics: [] }),
242
-
243
- 'dpql/parse': () => ({
244
- success: true,
245
- expression: { exp: 'noop', args: [] },
246
- diagnostics: [],
247
- }),
248
-
249
- 'dpql/serialize': () => ({ dpql: '' }),
250
-
251
- // Canonical alert-payload schema; mirrors the real
252
- // `setDpqlAlertPayloadContext` (QorusLspWebSocketHandler.qc:8439).
253
- 'dpql/setAlertPayloadContext': () => ({
254
- context: 'alert-payload',
255
- fields: {
256
- severity: { display_name: 'Severity', type: { name: 'string' } },
257
- alert_type: { display_name: 'Alert Type', type: { name: 'string' } },
258
- alert_code: { display_name: 'Alert Code', type: { name: 'string' } },
259
- alert_class: { display_name: 'Alert Class', type: { name: 'string' } },
260
- interface_type: { display_name: 'Interface Type', type: { name: 'string' } },
261
- interface_name: { display_name: 'Interface Name', type: { name: 'string' } },
262
- alert_object: { display_name: 'Alert Object', type: { name: 'string' } },
263
- },
264
- }),
265
-
266
- // Echoes a synthetic state_data_keys list; mirrors the real
267
- // response shape (QorusLspWebSocketHandler.qc:8509).
268
- 'dpql/setFsmContext': (msg) => {
269
- const sourceType = msg.params?.fsm
270
- ? 'inline'
271
- : msg.params?.draft_id
272
- ? 'draft'
273
- : msg.params?.fsmid
274
- ? 'published'
275
- : 'cleared';
276
- const stateDataKeys = ['order_id', 'user_name', 'event_type'];
277
- // Keep the keys while bound so completions can surface them in
278
- // `$data:`; a cleared binding drops them.
279
- fsmStateDataKeys = sourceType === 'cleared' ? [] : stateDataKeys;
280
- return {
281
- source_type: sourceType,
282
- current_state: msg.params?.current_state ?? null,
283
- state_data_keys: stateDataKeys,
284
- };
285
- },
286
-
287
- // Synthetic parser mirroring the real response shape
288
- // (UserApi.qc:_priv_get_richtext_string): `$prefix:value` /
289
- // `$prefix:{value}` become tag children, everything else is text.
290
- 'dpql/toRichtext': (msg) => {
291
- const text = msg.params?.text ?? '';
292
- const TEMPLATE_RE = /\$[a-z][-a-z]+:(?:\{[^}]*\}|[\w.]+)/g;
293
- const children: Array<Record<string, unknown>> = [];
294
- let last = 0;
295
- let m: RegExpExecArray | null;
296
- while ((m = TEMPLATE_RE.exec(text)) !== null) {
297
- if (m.index > last) {
298
- children.push({ text: text.slice(last, m.index) });
299
- }
300
- children.push({
301
- type: 'tag',
302
- value: m[0],
303
- label: m[0],
304
- children: [{ text: '' }],
305
- });
306
- last = m.index + m[0].length;
307
- }
308
- if (last < text.length) {
309
- children.push({ text: text.slice(last) });
310
- }
311
- if (children.length === 0) children.push({ text: '' });
312
- return {
313
- type: 'richtext',
314
- value: [{ type: 'paragraph', children }],
315
- };
316
- },
317
-
318
- // Empty edit list — the editor treats this as "no change".
319
- 'textDocument/formatting': () => [],
320
-
321
- // Synthetic `substr(...)` signature; the real server returns the
322
- // active call's signature via `dpql-get-signature-help`.
323
- 'textDocument/signatureHelp': (msg, server) => {
324
- const position = msg.params?.position ?? { line: 0, character: 0 };
325
- const lineText = server.documentText.split('\n')[position.line] ?? '';
326
- const head = lineText.slice(0, position.character);
327
- // Innermost unclosed `(` before the cursor; none means the
328
- // cursor isn't inside a call, so the pill dismisses.
329
- let depth = 0;
330
- let openPos = -1;
331
- for (let i = head.length - 1; i >= 0; i--) {
332
- const c = head[i];
333
- if (c === ')') depth++;
334
- else if (c === '(') {
335
- if (depth === 0) {
336
- openPos = i;
337
- break;
338
- }
339
- depth--;
340
- }
341
- }
342
- if (openPos < 0) {
343
- return { signatures: [], activeSignature: 0, activeParameter: 0 };
344
- }
345
- // Active parameter = commas at depth 0 inside the open call.
346
- const argsRegion = head.slice(openPos + 1);
347
- let nestDepth = 0;
348
- let activeParameter = 0;
349
- for (let i = 0; i < argsRegion.length; i++) {
350
- const c = argsRegion[i];
351
- if (c === '(') nestDepth++;
352
- else if (c === ')') nestDepth--;
353
- else if (c === ',' && nestDepth === 0) activeParameter++;
354
- }
355
- // `substr` (3 distinct params) makes active-parameter
356
- // advancement visible as commas are typed.
357
- return {
358
- signatures: [
359
- {
360
- label: 'substr(String Value, Start Character, Length) → string',
361
- documentation: {
362
- kind: 'markdown',
363
- value:
364
- 'Extracts a substring from `String Value`, ' +
365
- 'starting at `Start Character` (0-based) and ' +
366
- 'taking at most `Length` characters.',
367
- },
368
- parameters: [
369
- {
370
- label: 'String Value',
371
- documentation: 'The source string to extract from.',
372
- },
373
- {
374
- label: 'Start Character',
375
- documentation:
376
- 'The starting character position where the first character is 0.',
377
- },
378
- {
379
- label: 'Length',
380
- documentation: 'The maximum number of characters to return.',
381
- },
382
- ],
383
- },
384
- ],
385
- activeSignature: 0,
386
- activeParameter,
387
- };
388
- },
389
- },
390
- });
391
- return () => lsp.close();
392
- },
393
- } as StoryMeta<typeof DpqlEditorWithState>;
394
-
395
- export default meta;
396
- export type Story = StoryObj<typeof meta>;
397
-
398
- export const Empty: Story = {
399
- parameters: {
400
- docs: {
401
- description: {
402
- story: 'Renders the DpqlEditor with no value — the editor mounts empty and ready for input.',
403
- },
404
- },
405
- },
406
- };
407
-
408
- /**
409
- * No chips / templates — just a valid DPQL literal expression so we can
410
- * verify the editor mounts plain text without any tag elements. (The
411
- * previous example here used SQL `SELECT * FROM …` syntax — DPQL has
412
- * no `SELECT` / `FROM` / `WHERE`; the value was invalid DPQL inherited
413
- * from the qorus-ide Monaco placeholder. See design doc §7.)
414
- */
415
- export const WithPlainText: Story = {
416
- args: {
417
- value: '1 == 1 && "hello" != "world"',
418
- },
419
- parameters: {
420
- docs: {
421
- description: {
422
- story:
423
- 'Renders the DpqlEditor with a plain DPQL literal expression — no field references or templates, so the editor mounts as plain text with no tag chips.',
424
- },
425
- },
426
- },
427
- };
428
-
429
- export const WithFieldReference: Story = {
430
- args: {
431
- value: '@name == "Alice"',
432
- },
433
- parameters: {
434
- docs: {
435
- description: {
436
- story:
437
- 'Renders the DpqlEditor with an @name field reference — the editor mounts with a tag chip for the field and the literal string operand.',
438
- },
439
- },
440
- },
441
- };
442
-
443
- export const WithTemplateVariable: Story = {
444
- args: {
445
- value: 'contains("$local:input", "es")',
446
- },
447
- parameters: {
448
- docs: {
449
- description: {
450
- story:
451
- 'Renders the DpqlEditor with a contains() call whose first argument is a $local:input template — the template renders as a tag chip inside the call.',
452
- },
453
- },
454
- },
455
- };
456
-
457
- export const WithMixedContent: Story = {
458
- args: {
459
- // DPQL uses `&&` for logical AND (not SQL's `AND`). See
460
- // qore-2/design/dpql-syntax.md §"Logical Operators".
461
- value: '@name == $data:{1.name} && @age > $config:min_age',
462
- },
463
- parameters: {
464
- docs: {
465
- description: {
466
- story:
467
- 'Renders the DpqlEditor with mixed content — two @field references, two $data / $config templates and the DPQL "&&" logical operator between them, each rendered as its own chip or token.',
468
- },
469
- },
470
- },
471
- };
472
-
473
- /**
474
- * Exercises the `useServerParse` opt-in (design doc §6). The editor
475
- * calls `dpql/toRichtext` on the LSP and uses the server's structured
476
- * response as the Slate document. While the request is in flight, the
477
- * loading overlay shows; on a successful response, the editor renders
478
- * the server-parsed tree; on failure it falls back silently to the
479
- * client-side regex parser.
480
- *
481
- * The mock's `dpql/toRichtext` handler wraps `$prefix:value` patterns
482
- * as tag chips (matching the real server's behaviour). `@field` refs
483
- * are intentionally NOT chipped by the server response — that's a
484
- * known limitation; the client-side parser handles them in normal
485
- * (non-server-parse) mode.
486
- */
487
- export const WithServerParse: Story = {
488
- args: {
489
- value: '$static:input == "Alice" && $config:min_age > 18',
490
- useServerParse: true,
491
- },
492
- parameters: {
493
- docs: {
494
- description: {
495
- story:
496
- 'Opts into `useServerParse`. Templates (`$static:input`, ' +
497
- '`$config:min_age`) are wrapped as tag chips by the server, ' +
498
- 'not by the client regex. Watch the brief "Connecting…" ' +
499
- 'overlay on first mount while the server response arrives.',
500
- },
501
- },
502
- },
503
- };
504
-
505
- /**
506
- * Demonstrates the `isContextReady` race-fix (CONTEXT_AND_POLISH item 1).
507
- * Mock LSP delays `dpql/setContext` by 1.5s, so for the first 1.5s
508
- * after mount:
509
- * - The editor shows the "Loading schema…" overlay
510
- * - Typing `@` produces no completion dropdown (gated on
511
- * `session.isContextReady`)
512
- * - Once setContext resolves, the overlay disappears and completions
513
- * begin working.
514
- *
515
- * Verifies that the gap between LSP-ready and DPQL-context-bound
516
- * doesn't surface as a silently-empty dropdown anymore.
517
- */
518
- export const WithDelayedContext: Story = {
519
- args: {
520
- value: '@name == "Alice"',
521
- provider: 'datasource:omq/table/users',
522
- recordType: 'record',
523
- },
524
- async beforeEach() {
525
- // The meta-level beforeEach has already created the per-story
526
- // harness; slow down setContext for this story only.
527
- lsp.delays['dpql/setContext'] = 1500;
528
- },
529
- parameters: {
530
- docs: {
531
- description: {
532
- story:
533
- 'Slow `dpql/setContext` response (1.5s). On mount: ' +
534
- '"Loading schema…" overlay; typing `@` during the wait ' +
535
- 'does NOT open the dropdown. After 1.5s: overlay clears, ' +
536
- 'completions begin working normally.',
537
- },
538
- },
539
- },
540
- // CI guard for the `isContextReady` gate: while the 1.5s setContext
541
- // is in flight the "Loading schema…" overlay shows; once it resolves
542
- // the overlay clears.
543
- play: async () => {
544
- // While the 1.5s setContext is in flight, the overlay shows. Poll
545
- // for it (substring match — the copy is "Loading schema…").
546
- await waitFor(
547
- () => expect(document.body.textContent).toContain('Loading schema'),
548
- { timeout: 30000 }
549
- );
550
- // Once setContext resolves, the overlay clears.
551
- await waitFor(
552
- () => expect(document.body.textContent).not.toContain('Loading schema'),
553
- { timeout: 30000 }
554
- );
555
- },
556
- };
557
-
558
- /**
559
- * Demonstrates the `alertPayloadContext` prop (CONTEXT_AND_POLISH
560
- * item 4). Binds the document to the canonical alert-payload schema
561
- * instead of a provider/recordType pair — the field set becomes
562
- * `severity` / `alert_type` / `alert_code` / etc.
563
- *
564
- * Required by the qorus-ide Alert Rule / Silence editor's `match`
565
- * field.
566
- *
567
- * Implementation detail: when `alertPayloadContext` is set at mount,
568
- * the editor includes `metadata.dpql_context: "alert-payload"` in
569
- * the `textDocument/didOpen` notification so the server binds at
570
- * open-time — no extra roundtrip. Later toggles fire an explicit
571
- * `dpql/setAlertPayloadContext` request.
572
- */
573
- export const WithAlertPayloadContext: Story = {
574
- args: {
575
- value: '@severity == "ERROR" && @interface_type == "service"',
576
- alertPayloadContext: true,
577
- },
578
- parameters: {
579
- docs: {
580
- description: {
581
- story:
582
- 'Alert-payload schema binding. Initial value uses ' +
583
- '`@severity` and `@interface_type` — fields the server ' +
584
- 'knows about via the canonical alert-payload context.',
585
- },
586
- },
587
- },
588
- // CI guard: `alertPayloadContext` must bind at `didOpen` time via the
589
- // `dpql_context: "alert-payload"` metadata (not a separate roundtrip).
590
- play: async () => {
591
- // Poll until the didOpen notification arrives and carries the
592
- // alert-payload binding metadata — no fixed sleep racing the socket.
593
- await waitFor(
594
- () => {
595
- const didOpen = lsp.received.find(
596
- (m) => m.method === 'textDocument/didOpen'
597
- );
598
- expect(didOpen).toBeDefined();
599
- expect(didOpen.params.textDocument.metadata?.dpql_context).toBe(
600
- 'alert-payload'
601
- );
602
- },
603
- { timeout: 30000 }
604
- );
605
- },
606
- };
607
-
608
- /**
609
- * Demonstrates the `fsmContext` prop (CONTEXT_AND_POLISH item 4).
610
- * Binds an FSM context for state-aware template completions; the
611
- * mock sends a "published" source_type response when `fsmId` is
612
- * provided.
613
- *
614
- * Required by the qorus-ide FSM state editor when DpqlEditor is
615
- * embedded inside an action's match expression — `$data:` /
616
- * `$fsminput:` templates then resolve against the FSM's state
617
- * graph.
618
- *
619
- * Composable: can be combined with `provider`/`recordType` (provider
620
- * yields `@field` completions; FSM yields `$template:` completions).
621
- */
622
- export const WithFsmContext: Story = {
623
- args: {
624
- value: '',
625
- provider: 'datasource:omq/table/orders',
626
- recordType: 'record',
627
- fsmContext: { fsmId: 42, currentState: 'process_order' },
628
- },
629
- parameters: {
630
- docs: {
631
- description: {
632
- story:
633
- 'Composes provider context (`@field` completions) with FSM ' +
634
- 'context. Typing a `$data:` template surfaces the bound FSM ' +
635
- "state's data keys (`order_id`, `user_name`, `event_type`) — " +
636
- 'the distinctive payload of `fsmContext`. The mock answers ' +
637
- '`dpql/setFsmContext` with `source_type: "published"` and that ' +
638
- 'key list, then returns the keys as completions inside `$data:`.',
639
- },
640
- },
641
- },
642
- // Open the `$data:` template so the snapshot shows the FSM-driven
643
- // state-data keys — this is what makes the story self-explanatory in
644
- // Chromatic and answers "which template is the FSM context": `$data:`.
645
- play: async ({ canvasElement }) => {
646
- const canvas = within(canvasElement);
647
- const editable = canvas.getByRole('textbox');
648
- await waitFor(
649
- () => {
650
- expect(document.body.textContent).not.toContain('Connecting to language server');
651
- expect(document.body.textContent).not.toContain('Loading schema');
652
- },
653
- { timeout: 30000 }
654
- );
655
- await userEvent.click(editable);
656
- await userEvent.type(editable, '$data:');
657
- await waitFor(
658
- () => {
659
- const dropdown = document.querySelector('.reqore-menu');
660
- expect(dropdown).not.toBeNull();
661
- // FSM state-data keys (from the bound fsmContext), NOT the generic
662
- // template namespaces — proves the FSM binding drives these completions.
663
- expect(dropdown!.textContent).toContain('order_id');
664
- expect(dropdown!.textContent).toContain('user_name');
665
- expect(dropdown!.textContent).toContain('event_type');
666
- },
667
- { timeout: 30000 }
668
- );
669
- },
670
- };
671
-
672
- /**
673
- * Demonstrates `textDocument/signatureHelp` (LSP_FEATURES task).
674
- * Initial value `substr("hello", ` leaves the cursor inside a
675
- * function call's argument list — on mount, the mock returns a
676
- * synthetic `substr(String Value, Start Character, Length) → string`
677
- * signature with the active parameter computed from the comma count
678
- * at the cursor.
679
- *
680
- * Mock shape mirrors the real Qorus DPQL server's `substr`
681
- * signature (3 distinct params, capitalized labels, `→ string`
682
- * return annotation) so the mock and live stories exercise
683
- * structurally-identical responses. See
684
- * `LiveDpqlEditorWithSignatureHelp` for the same flow against the
685
- * real backend.
686
- *
687
- * The signature pill renders ABOVE the caret line; the completion
688
- * popover (if it pops up alongside) anchors BELOW. The two coexist
689
- * without overlap.
690
- *
691
- * The mock advertises `signatureHelpProvider.triggerCharacters` in
692
- * its initialize response, so the editor wires up the hook. Servers
693
- * that don't advertise the provider get a silent no-op.
694
- */
695
- export const WithSignatureHelp: Story = {
696
- args: {
697
- value: 'substr("hello", ',
698
- },
699
- parameters: {
700
- docs: {
701
- description: {
702
- story:
703
- 'Signature-help pill above the caret. Type `0, ` to ' +
704
- 'advance to the next parameter (`Start Character` → ' +
705
- '`Length`); typing `)` dismisses.',
706
- },
707
- },
708
- },
709
- // CI regression guard: on mount (cursor inside the open `substr(`
710
- // call) the signature pill must render with the active parameter
711
- // (`Start Character`) highlighted. Mount fires the hook without
712
- // typing, so this is deterministic — see the `Editor.end` fallback
713
- // in `useLspSignatureHelp`.
714
- play: async () => {
715
- // Poll until the signature pill renders (mount fires the hook via the
716
- // `Editor.end` fallback) with the active parameter highlighted.
717
- await waitFor(
718
- () => {
719
- const pill = Array.from(document.querySelectorAll('div')).find(
720
- (el) =>
721
- (el as HTMLElement).style?.position === 'fixed' &&
722
- el.textContent?.includes('substr(String Value')
723
- );
724
- expect(pill).toBeDefined();
725
- expect(pill!.textContent).toContain(
726
- 'substr(String Value, Start Character, Length)'
727
- );
728
- // Active parameter highlighted in a <strong>.
729
- const strong = pill!.querySelector('strong');
730
- expect(strong).not.toBeNull();
731
- expect(strong!.textContent).toBe('Start Character');
732
- },
733
- { timeout: 30000 }
734
- );
735
- },
736
- };
737
-
738
- /**
739
- * **Live spike — hits the real Qorus `/lsp` endpoint** at
740
- * `wss://hq.qoretechnologies.com:8092/lsp` with `languageId: 'dpql'`.
741
- * Used to validate `useLspSignatureHelp` end-to-end against the
742
- * shipped Qorus DPQL handler (`dpql-get-signature-help` in
743
- * `qorus/Classes/QorusLspWebSocketHandler.qc`).
744
- *
745
- * **Initial value: `substr("hello", `** — uses `substr` rather than
746
- * `coalesce` because `substr` has THREE distinct positional
747
- * parameters (`String Value`, `Start Character`, `Length`), so typing
748
- * commas visibly advances the active parameter. The server models
749
- * `coalesce` and `concat` as single-variadic-parameter functions
750
- * (one `Value` slot) — the pill stays static on those.
751
- *
752
- * Server-confirmed via direct probes:
753
- * - `substr("hello", ` → `activeParameter: 1` (Start Character)
754
- * - `substr("hello", 0, ` → `activeParameter: 2` (Length)
755
- *
756
- * Other multi-param candidates verified to advance: `round(Number,
757
- * Precision)`, `format_date(Date To Format, Format String)`,
758
- * `nullif(Value, Compare Value)`, `split(String To Split, Separator)`.
759
- *
760
- * The `parameters: { live: true }` flag tells the meta-level
761
- * `beforeEach` to skip the mock-socket setup so the WebSocket reaches
762
- * the real backend.
763
- *
764
- * **Prereq:** export `REACT_APP_QORUS_TOKEN` before running storybook.
765
- * Without a valid token the WebSocket handshake fails with 401.
766
- *
767
- * **Expected behavior:**
768
- * - On mount, pill appears showing `substr(String Value, Start
769
- * Character, Length) → string` with `Start Character` highlighted
770
- * (already past the first comma).
771
- * - Type `0, ` — pill updates: `Length` is now highlighted.
772
- * - Type `)` — pill dismisses (server returns empty signatures when
773
- * the call is closed).
774
- *
775
- * **If no pill appears**, the most likely causes are:
776
- * - The real server doesn't advertise `signatureHelpProvider` for
777
- * `languageId: 'dpql'` (capability drift — check via DevTools
778
- * Network → WS frame inspector → `initialize` response).
779
- * - The server's `dpql-get-signature-help` returns a shape our
780
- * client doesn't parse (check the response body for the request).
781
- * - The token is invalid (401 in DevTools Network).
782
- */
783
- export const LiveDpqlEditorWithSignatureHelp: Story = {
784
- // Real DPQL LSP — excluded from the play-test runner and from Chromatic
785
- // (CI has no token/network, so the play would flake the snapshot).
786
- tags: ['!test'],
787
- args: {
788
- value: 'substr("hello", ',
789
- },
790
- parameters: {
791
- live: true,
792
- chromatic: { disable: true },
793
- docs: {
794
- description: {
795
- story:
796
- 'Hits the real Qorus DPQL LSP — no mock. Initial value is ' +
797
- '`substr("hello", ` so active-parameter advancement is ' +
798
- 'visible (`coalesce` would not advance because the server ' +
799
- 'models it as single-variadic-param). Set ' +
800
- '`REACT_APP_QORUS_TOKEN` before launching storybook.',
801
- },
802
- },
803
- },
804
- // The signature pill fires on mount (cursor inside the open `substr(`
805
- // call) — no typing needed. Poll for it so a manual run shows the
806
- // real pill. Verified live: `substr("hello", ` →
807
- // `substr(String Value, Start Character, Length) → string`,
808
- // activeParameter 1.
809
- play: async () => {
810
- await waitFor(
811
- () => {
812
- const pill = Array.from(document.querySelectorAll('div')).find(
813
- (el) =>
814
- (el as HTMLElement).style?.position === 'fixed' &&
815
- el.textContent?.includes('substr(String Value')
816
- );
817
- expect(pill).toBeDefined();
818
- },
819
- { timeout: 30000 }
820
- );
821
- },
822
- };
823
-
824
- /**
825
- * **Live — real `/lsp`, with an alert-payload context bound.** This is
826
- * the story to verify `@` **field** completions against the real
827
- * server. `alertPayloadContext: true` fires `dpql/setAlertPayloadContext`,
828
- * binding the canonical alert schema — so typing `@` returns real fields
829
- * (`@severity`, `@alert_type`, `@interface_type`, …).
830
- *
831
- * Why a dedicated story: the no-context `LiveDpqlEditorWithSignatureHelp`
832
- * returns nothing on `@` (field refs need a bound context — the server's
833
- * NO-CONTEXT path yields functions/keywords/templates but not fields).
834
- * This story supplies that context so the `@` path is exercisable live.
835
- *
836
- * Also exercises `$` → templates in the same editor (server returns the
837
- * global namespaces context-free).
838
- *
839
- * **Prereq:** export `REACT_APP_QORUS_TOKEN` before running storybook.
840
- */
841
- export const LiveDpqlEditorWithAlertPayload: Story = {
842
- // Real DPQL LSP — excluded from the play-test runner and from Chromatic
843
- // (CI has no token/network).
844
- tags: ['!test'],
845
- args: {
846
- value: '@severity == "MAJOR" and ',
847
- alertPayloadContext: true,
848
- },
849
- parameters: {
850
- live: true,
851
- chromatic: { disable: true },
852
- docs: {
853
- description: {
854
- story:
855
- 'Real `/lsp` with `alertPayloadContext`. Type `@` → real ' +
856
- 'alert-payload fields; type `$` → template namespaces. The ' +
857
- 'context story you use to verify `@` field completions live.',
858
- },
859
- },
860
- },
861
- // Type `@` to open real alert-payload field completions so the
862
- // Chromatic snapshot shows live data. Verified live (alert-payload
863
- // context bound at didOpen): `…and @` → 21 fields (alert_type,
864
- // alert_code, severity, …).
865
- play: async ({ canvasElement }) => {
866
- const canvas = within(canvasElement);
867
- const editable = canvas.getByRole('textbox');
868
- await sleep(3000); // let the live LSP session connect before typing (real WS handshake)
869
- await userEvent.click(editable);
870
- await userEvent.type(editable, '@');
871
- await waitFor(
872
- () => {
873
- const dropdown = document.querySelector('.reqore-menu');
874
- expect(dropdown).not.toBeNull();
875
- expect(dropdown!.textContent).toContain('alert_type');
876
- },
877
- { timeout: 30000 }
878
- );
879
- },
880
- };
881
-
882
- /**
883
- * Demonstrates LSP-driven syntax highlighting (design doc §7) across a
884
- * representative DPQL expression touching every coloured token type:
885
- * field references, templates, operators, string / number / boolean /
886
- * null literals, regex, range, keywords, parens.
887
- *
888
- * The story's mock LSP runs a small DPQL-correct tokenizer (defined at
889
- * the top of this file) and returns the LSP-encoded int array; the
890
- * editor's `useLspSemanticTokens` hook decodes it and renders each
891
- * token in the theme palette defined in `SmartEditor`.
892
- */
893
- export const WithSemanticTokens: Story = {
894
- args: {
895
- value:
896
- '@status in ("active", "pending") && @age between 18 and 65 ' +
897
- '&& @email =~ /^[a-z]+@example\\.com$/i ' +
898
- '&& @balance > 0 && @deleted != true',
899
- },
900
- parameters: {
901
- docs: {
902
- description: {
903
- story:
904
- 'Every coloured DPQL token category. Variables (`@status`, ' +
905
- '`@age`, …) in red, operators (`==`, `&&`, `=~`, `between`) ' +
906
- 'in cyan, strings in green, numbers in orange, keywords ' +
907
- '(`in`, `between`, `and`, `not`, `true`) in purple, regex ' +
908
- 'in cyan.',
909
- },
910
- },
911
- },
912
- // CI guard for the semantic-token pipeline (server tokens → decode →
913
- // decorate → coloured leaf). Assert the editor rendered spans carrying
914
- // the palette colours: keyword purple (#c678dd → rgb(198,120,221)) and
915
- // string green (#98c379 → rgb(152,195,121)). If the decoration breaks,
916
- // the tokens render uncoloured and these are absent.
917
- play: async ({ canvasElement }) => {
918
- const canvas = within(canvasElement);
919
- const editable = canvas.getByRole('textbox');
920
- // Poll until the semantic-token pipeline has coloured the leaves
921
- // (server tokens → decode → decorate). Before the round-trip lands
922
- // the spans are uncoloured and these assertions fail.
923
- await waitFor(
924
- () => {
925
- const colors = Array.from(editable.querySelectorAll('span'))
926
- .map((s) => (s as HTMLElement).style.color)
927
- .filter(Boolean);
928
- expect(colors).toContain('rgb(198, 120, 221)'); // keyword purple
929
- expect(colors).toContain('rgb(152, 195, 121)'); // string green
930
- },
931
- { timeout: 30000 }
932
- );
933
- },
934
- };
935
-
936
- export const ReadOnly: Story = {
937
- args: {
938
- value: '@name == "Alice"',
939
- readOnly: true,
940
- },
941
- parameters: {
942
- docs: {
943
- description: {
944
- story:
945
- 'Renders the DpqlEditor with a valued expression but readOnly enabled — the field chip and literal render but the editor cannot be edited.',
946
- },
947
- },
948
- },
949
- };
950
-
951
- /**
952
- * Templates via the `$` trigger — the server's design (mirrored in the
953
- * mock): typing `$` opens template-namespace completions
954
- * (`$data:`, `$config:`, `$static:`, `$timestamp:`), the same on-typing
955
- * dropdown that `@` uses for fields. There is no separate "Templates"
956
- * button — `dpql-get-completions` is position-aware and returns
957
- * templates after `$`, fields after `@`.
958
- */
959
- export const WithTemplates: Story = {
960
- args: {
961
- value: '',
962
- onChange: fn(),
963
- },
964
- parameters: {
965
- docs: {
966
- description: {
967
- story:
968
- 'Type `$` to open the template namespaces (`$data:`, ' +
969
- '`$config:`, …). Templates and fields share one on-typing ' +
970
- 'completion dropdown — `$`→templates, `@`→fields. No ' +
971
- 'separate Templates button.',
972
- },
973
- },
974
- },
975
- // CI guard: `$` opens templates, `@` opens fields — proves the
976
- // position-aware routing.
977
- play: async ({ canvasElement }) => {
978
- const canvas = within(canvasElement);
979
- const editable = canvas.getByRole('textbox');
980
- await userEvent.click(editable);
981
-
982
- // `$` → templates
983
- await userEvent.type(editable, '$');
984
- await waitFor(
985
- () => {
986
- const dropdown = document.querySelector('.reqore-menu');
987
- expect(dropdown).not.toBeNull();
988
- expect(dropdown!.textContent).toContain('$data:');
989
- expect(dropdown!.textContent).toContain('$config:');
990
- // Field refs must NOT appear in the `$` dropdown.
991
- expect(dropdown!.textContent).not.toContain('@name');
992
- },
993
- { timeout: 30000 }
994
- );
995
-
996
- // Clear and switch to `@` → fields.
997
- await userEvent.clear(editable);
998
- await userEvent.type(editable, '@');
999
- await waitFor(
1000
- () => {
1001
- const dropdown = document.querySelector('.reqore-menu');
1002
- expect(dropdown).not.toBeNull();
1003
- expect(dropdown!.textContent).toContain('@name');
1004
- expect(dropdown!.textContent).not.toContain('$data:');
1005
- },
1006
- { timeout: 30000 }
1007
- );
1008
- },
1009
- };
1010
-
1011
- /**
1012
- * Autosuggest — typing a **bare identifier** (no `@` / `$` sigil) opens
1013
- * function / keyword completions as you type, e.g. `sub` → `substr`.
1014
- * No trigger character or manual invoke needed.
1015
- *
1016
- * The dropdown only appears when the server actually has suggestions:
1017
- * the request is "quiet" (the popover stays closed until items arrive),
1018
- * and the position-aware server returns `[]` where completion isn't
1019
- * appropriate (inside a string, a dead-end token) so nothing flickers.
1020
- */
1021
- export const WithAutosuggest: Story = {
1022
- args: {
1023
- value: '',
1024
- onChange: fn(),
1025
- },
1026
- parameters: {
1027
- docs: {
1028
- description: {
1029
- story:
1030
- 'Type a bare identifier (no sigil) — e.g. `sub` — and ' +
1031
- 'function completions appear (`substr`). Autosuggest fires ' +
1032
- 'on identifier typing; the server gates what (if anything) ' +
1033
- 'shows.',
1034
- },
1035
- },
1036
- },
1037
- play: async ({ canvasElement }) => {
1038
- const canvas = within(canvasElement);
1039
- const editable = canvas.getByRole('textbox');
1040
- await userEvent.click(editable);
1041
- // Bare identifier — no trigger char. Autosuggest should open the
1042
- // dropdown and narrow to `substr`.
1043
- await userEvent.type(editable, 'sub');
1044
- await waitFor(
1045
- () => {
1046
- const dropdown = document.querySelector('.reqore-menu');
1047
- expect(dropdown).not.toBeNull();
1048
- expect(dropdown!.textContent).toContain('substr');
1049
- // Non-matching functions are filtered out by the typed prefix.
1050
- expect(dropdown!.textContent).not.toContain('round');
1051
- },
1052
- { timeout: 30000 }
1053
- );
1054
- },
1055
- };
1056
-
1057
- /**
1058
- * Sanity check that the editor mounts and accepts plain typing. Mirrors the
1059
- * `CanTypeText` story on the qorus-ide feature/dpql-editor branch.
1060
- */
1061
- export const CanTypeText: Story = {
1062
- args: {
1063
- value: '',
1064
- onChange: fn(),
1065
- },
1066
- parameters: {
1067
- docs: {
1068
- description: {
1069
- story:
1070
- 'Renders the empty DpqlEditor and types "hello" into it — the editor accepts the plain text and fires onChange.',
1071
- },
1072
- },
1073
- },
1074
- play: async ({ canvasElement, args }) => {
1075
- const canvas = within(canvasElement);
1076
-
1077
- const editable = canvas.getByRole('textbox');
1078
- await userEvent.click(editable);
1079
- await userEvent.type(editable, 'hello');
1080
-
1081
- await expect(args.onChange).toHaveBeenCalled();
1082
- },
1083
- };
1084
-
1085
- /**
1086
- * End-to-end LSP completion test. Types `@`, waits for the mock server to
1087
- * receive `textDocument/completion`, and asserts the canned completion
1088
- * items render in the dropdown. This guards the entire request-correlation
1089
- * + autocomplete-debounce + dropdown-rendering path.
1090
- */
1091
- export const LspCompletionRoundtrip: Story = {
1092
- args: {
1093
- value: '',
1094
- onChange: fn(),
1095
- },
1096
- parameters: {
1097
- docs: {
1098
- description: {
1099
- story:
1100
- 'Renders the empty DpqlEditor and types the "@" trigger — the LSP receives a textDocument/completion request against a dpql:// document URI and the dropdown mounts with the canned @name / @status / @age items.',
1101
- },
1102
- },
1103
- },
1104
- play: async ({ canvasElement }) => {
1105
- const canvas = within(canvasElement);
1106
-
1107
- const editable = canvas.getByRole('textbox');
1108
- await userEvent.click(editable);
1109
- await userEvent.type(editable, '@');
1110
-
1111
- // Poll until the server received the completion request (the
1112
- // autocomplete debounce is 150ms; the round-trip + re-render follow).
1113
- await waitFor(
1114
- () => {
1115
- const completionReq = lsp.received.find(
1116
- (m) => m.method === 'textDocument/completion'
1117
- );
1118
- expect(completionReq).toBeDefined();
1119
- // useLspSession (Phase 1 + SmartEditor refactor) generates URIs as
1120
- // `${languageId}://session/<n>` — for DPQL that's `dpql://session/<n>`.
1121
- expect(completionReq.params.textDocument.uri).toMatch(
1122
- /^dpql:\/\/session\//
1123
- );
1124
- },
1125
- { timeout: 30000 }
1126
- );
1127
-
1128
- // Dropdown rendered the canned items. They live outside the canvas
1129
- // (Popover portal), so query the document directly.
1130
- await waitFor(
1131
- () => {
1132
- const dropdown = document.querySelector('.reqore-menu');
1133
- expect(dropdown).not.toBeNull();
1134
- expect(dropdown!.textContent).toContain('@name');
1135
- expect(dropdown!.textContent).toContain('@status');
1136
- expect(dropdown!.textContent).toContain('@age');
1137
- },
1138
- { timeout: 30000 }
1139
- );
1140
- },
1141
- };
1142
-
1143
- /**
1144
- * Two editors mounted at once share ONE WebSocket — the `LspSharedConnection`
1145
- * multiplexing layer in `lspClient.ts`. Each editor opens its own document
1146
- * URI on the shared socket (`textDocument/didOpen` ×2) but the server sees a
1147
- * single physical connection and a single `initialize` handshake.
1148
- */
1149
- export const TwoEditorsOneConnection: Story = {
1150
- parameters: {
1151
- chromatic: { disable: true },
1152
- docs: {
1153
- description: {
1154
- story:
1155
- 'Renders two DpqlEditor instances side by side — both share a single WebSocket via LspSharedConnection and each opens its own document URI, so the server sees one initialize but two didOpen notifications.',
1156
- },
1157
- },
1158
- },
1159
- render: () => (
1160
- <>
1161
- <DpqlEditorWithState value='name' />
1162
- <DpqlEditorWithState value='status' />
1163
- </>
1164
- ),
1165
- async play() {
1166
- await waitFor(
1167
- () => expect(document.querySelectorAll('[contenteditable="true"]')).toHaveLength(2),
1168
- { timeout: 10000 }
1169
- );
1170
- await waitFor(
1171
- () => {
1172
- const uris = new Set(
1173
- lsp.received
1174
- .filter((m) => m.method === 'textDocument/didOpen')
1175
- .map((m) => m.params?.textDocument?.uri)
1176
- );
1177
- expect(uris.size).toBe(2);
1178
- },
1179
- { timeout: 10000 }
1180
- );
1181
- await waitFor(() => expect(lsp.getOpenConnectionCount()).toBe(1), { timeout: 10000 });
1182
- },
1183
- };