@qoretechnologies/reqraft 0.10.62 → 0.10.63-pr.142.g0b675cd

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 (736) hide show
  1. package/README.md +21 -1
  2. package/dist/components/Description/describedControl.d.ts +48 -0
  3. package/dist/components/Description/describedControl.d.ts.map +1 -0
  4. package/dist/components/Description/describedControl.js +81 -0
  5. package/dist/components/Description/describedControl.js.map +1 -0
  6. package/dist/components/Description/index.d.ts.map +1 -1
  7. package/dist/components/Description/index.js +3 -2
  8. package/dist/components/Description/index.js.map +1 -1
  9. package/dist/components/colorValue/colorValue.d.ts +59 -0
  10. package/dist/components/colorValue/colorValue.d.ts.map +1 -0
  11. package/dist/components/colorValue/colorValue.js +245 -0
  12. package/dist/components/colorValue/colorValue.js.map +1 -0
  13. package/dist/components/colorValue/index.d.ts +34 -0
  14. package/dist/components/colorValue/index.d.ts.map +1 -0
  15. package/dist/components/colorValue/index.js +136 -0
  16. package/dist/components/colorValue/index.js.map +1 -0
  17. package/dist/components/colorValue/labels.d.ts +12 -0
  18. package/dist/components/colorValue/labels.d.ts.map +1 -0
  19. package/dist/components/colorValue/labels.js +11 -0
  20. package/dist/components/colorValue/labels.js.map +1 -0
  21. package/dist/components/composer/Composer.d.ts +1 -1
  22. package/dist/components/composer/Composer.d.ts.map +1 -1
  23. package/dist/components/composer/Composer.js +2 -2
  24. package/dist/components/composer/Composer.js.map +1 -1
  25. package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
  26. package/dist/components/dpqlEditor/DpqlEditor.js +25 -5
  27. package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
  28. package/dist/components/dpqlEditor/dpqlHelpers.d.ts +10 -1
  29. package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
  30. package/dist/components/dpqlEditor/dpqlHelpers.js +30 -13
  31. package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
  32. package/dist/components/dpqlEditor/dpqlTags.d.ts +11 -7
  33. package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
  34. package/dist/components/dpqlEditor/dpqlTags.js +11 -6
  35. package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
  36. package/dist/components/dpqlEditor/types.d.ts +47 -8
  37. package/dist/components/dpqlEditor/types.d.ts.map +1 -1
  38. package/dist/components/dpqlEditor/useDpqlSession.d.ts +2 -2
  39. package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
  40. package/dist/components/dpqlEditor/useDpqlSession.js +16 -7
  41. package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
  42. package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
  43. package/dist/components/form/engine/CompactRow.js +151 -83
  44. package/dist/components/form/engine/CompactRow.js.map +1 -1
  45. package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
  46. package/dist/components/form/engine/CompactToolbar.js +29 -3
  47. package/dist/components/form/engine/CompactToolbar.js.map +1 -1
  48. package/dist/components/form/engine/FormEngine.d.ts +34 -1
  49. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  50. package/dist/components/form/engine/FormEngine.js +487 -87
  51. package/dist/components/form/engine/FormEngine.js.map +1 -1
  52. package/dist/components/form/engine/HiddenFieldsNote.d.ts +28 -0
  53. package/dist/components/form/engine/HiddenFieldsNote.d.ts.map +1 -0
  54. package/dist/components/form/engine/HiddenFieldsNote.js +32 -0
  55. package/dist/components/form/engine/HiddenFieldsNote.js.map +1 -0
  56. package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
  57. package/dist/components/form/engine/OptionFieldMessages.js +24 -3
  58. package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
  59. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts +2 -2
  60. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
  61. package/dist/components/form/engine/_structuredData/SchemaDataView.js +12 -6
  62. package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
  63. package/dist/components/form/engine/compactRowContext.d.ts +19 -0
  64. package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
  65. package/dist/components/form/engine/compactRowContext.js.map +1 -1
  66. package/dist/components/form/engine/compactRowStyles.d.ts +0 -1
  67. package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
  68. package/dist/components/form/engine/compactRowStyles.js +12 -20
  69. package/dist/components/form/engine/compactRowStyles.js.map +1 -1
  70. package/dist/components/form/engine/compactToolbarColors.d.ts +16 -0
  71. package/dist/components/form/engine/compactToolbarColors.d.ts.map +1 -0
  72. package/dist/components/form/engine/compactToolbarColors.js +21 -0
  73. package/dist/components/form/engine/compactToolbarColors.js.map +1 -0
  74. package/dist/components/form/engine/readFirst.d.ts +24 -8
  75. package/dist/components/form/engine/readFirst.d.ts.map +1 -1
  76. package/dist/components/form/engine/readFirst.js +77 -109
  77. package/dist/components/form/engine/readFirst.js.map +1 -1
  78. package/dist/components/form/engine/readFirstColors.d.ts +30 -0
  79. package/dist/components/form/engine/readFirstColors.d.ts.map +1 -0
  80. package/dist/components/form/engine/readFirstColors.js +51 -0
  81. package/dist/components/form/engine/readFirstColors.js.map +1 -0
  82. package/dist/components/form/engine/rowFocus.d.ts +2 -0
  83. package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
  84. package/dist/components/form/engine/rowFocus.js +26 -3
  85. package/dist/components/form/engine/rowFocus.js.map +1 -1
  86. package/dist/components/form/engine/typeChoices.d.ts +1 -1
  87. package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -1
  88. package/dist/components/form/engine/variants/VariantCalmTable.js +2 -1
  89. package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -1
  90. package/dist/components/form/engine/variants/VariantCards.d.ts.map +1 -1
  91. package/dist/components/form/engine/variants/VariantCards.js +2 -1
  92. package/dist/components/form/engine/variants/VariantCards.js.map +1 -1
  93. package/dist/components/form/engine/variants/VariantFocus.js +1 -1
  94. package/dist/components/form/engine/variants/VariantFocus.js.map +1 -1
  95. package/dist/components/form/engine/variants/VariantMinimal.d.ts.map +1 -1
  96. package/dist/components/form/engine/variants/VariantMinimal.js +2 -1
  97. package/dist/components/form/engine/variants/VariantMinimal.js.map +1 -1
  98. package/dist/components/form/engine/variants/variantParts.d.ts +1 -1
  99. package/dist/components/form/engine/variants/variantParts.d.ts.map +1 -1
  100. package/dist/components/form/engine/variants/variantParts.js +25 -17
  101. package/dist/components/form/engine/variants/variantParts.js.map +1 -1
  102. package/dist/components/form/expressions/DpqlRendering.d.ts +1 -1
  103. package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -1
  104. package/dist/components/form/expressions/DpqlRendering.js +3 -3
  105. package/dist/components/form/expressions/DpqlRendering.js.map +1 -1
  106. package/dist/components/form/expressions/ExpressionField.d.ts +41 -3
  107. package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
  108. package/dist/components/form/expressions/ExpressionField.js +396 -99
  109. package/dist/components/form/expressions/ExpressionField.js.map +1 -1
  110. package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
  111. package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
  112. package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
  113. package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
  114. package/dist/components/form/expressions/builder/argumentLabel.js +27 -9
  115. package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
  116. package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
  117. package/dist/components/form/expressions/builder/argumentWrapper.js +4 -2
  118. package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
  119. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
  120. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +5 -4
  121. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -1
  122. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +1 -1
  123. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -1
  124. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +6 -3
  125. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
  126. package/dist/components/form/expressions/builder/index.d.ts +24 -2
  127. package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
  128. package/dist/components/form/expressions/builder/index.js +121 -77
  129. package/dist/components/form/expressions/builder/index.js.map +1 -1
  130. package/dist/components/form/expressions/builder/item.d.ts +6 -2
  131. package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
  132. package/dist/components/form/expressions/builder/item.js +19 -5
  133. package/dist/components/form/expressions/builder/item.js.map +1 -1
  134. package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
  135. package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
  136. package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
  137. package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
  138. package/dist/components/form/expressions/expressionOperands.js +97 -0
  139. package/dist/components/form/expressions/expressionOperands.js.map +1 -0
  140. package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
  141. package/dist/components/form/expressions/mockExpressions.js +22 -5
  142. package/dist/components/form/expressions/mockExpressions.js.map +1 -1
  143. package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
  144. package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
  145. package/dist/components/form/expressions/renderExpressionToText.js +35 -9
  146. package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
  147. package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
  148. package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
  149. package/dist/components/form/expressions/textOfExpression.js +37 -0
  150. package/dist/components/form/expressions/textOfExpression.js.map +1 -0
  151. package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
  152. package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
  153. package/dist/components/form/expressions/useExpressionType.js +181 -0
  154. package/dist/components/form/expressions/useExpressionType.js.map +1 -0
  155. package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
  156. package/dist/components/form/expressions/useRenderExpression.js +7 -7
  157. package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
  158. package/dist/components/form/fields/Field.d.ts.map +1 -1
  159. package/dist/components/form/fields/Field.js +20 -7
  160. package/dist/components/form/fields/Field.js.map +1 -1
  161. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
  162. package/dist/components/form/fields/allowed-values/AllowedValues.js +17 -4
  163. package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
  164. package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
  165. package/dist/components/form/fields/array/ArrayAuto.js +24 -0
  166. package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
  167. package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
  168. package/dist/components/form/fields/array/ArrayAutoField.js +36 -13
  169. package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
  170. package/dist/components/form/fields/auto/AutoFormField.d.ts +20 -1
  171. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
  172. package/dist/components/form/fields/auto/AutoFormField.js +81 -36
  173. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
  174. package/dist/components/form/fields/auto/hostEditorValue.d.ts +30 -0
  175. package/dist/components/form/fields/auto/hostEditorValue.d.ts.map +1 -0
  176. package/dist/components/form/fields/auto/hostEditorValue.js +53 -0
  177. package/dist/components/form/fields/auto/hostEditorValue.js.map +1 -0
  178. package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
  179. package/dist/components/form/fields/binary/Binary.js +23 -3
  180. package/dist/components/form/fields/binary/Binary.js.map +1 -1
  181. package/dist/components/form/fields/boolean/Boolean.d.ts +5 -0
  182. package/dist/components/form/fields/boolean/Boolean.d.ts.map +1 -1
  183. package/dist/components/form/fields/boolean/Boolean.js +9 -1
  184. package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
  185. package/dist/components/form/fields/color/Color.d.ts +103 -16
  186. package/dist/components/form/fields/color/Color.d.ts.map +1 -1
  187. package/dist/components/form/fields/color/Color.js +611 -16
  188. package/dist/components/form/fields/color/Color.js.map +1 -1
  189. package/dist/components/form/fields/emittedValues.d.ts +34 -3
  190. package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
  191. package/dist/components/form/fields/emittedValues.js +24 -1
  192. package/dist/components/form/fields/emittedValues.js.map +1 -1
  193. package/dist/components/form/fields/file/File.d.ts +1 -1
  194. package/dist/components/form/fields/file/File.d.ts.map +1 -1
  195. package/dist/components/form/fields/file/File.js +4 -2
  196. package/dist/components/form/fields/file/File.js.map +1 -1
  197. package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
  198. package/dist/components/form/fields/long-string/LongString.js +17 -3
  199. package/dist/components/form/fields/long-string/LongString.js.map +1 -1
  200. package/dist/components/form/fields/markdown/MarkdownView.js +1 -1
  201. package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
  202. package/dist/components/form/fields/multi-select/MultiSelectFormField.js +4 -1
  203. package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
  204. package/dist/components/form/fields/number/Number.d.ts +6 -0
  205. package/dist/components/form/fields/number/Number.d.ts.map +1 -1
  206. package/dist/components/form/fields/number/Number.js +41 -6
  207. package/dist/components/form/fields/number/Number.js.map +1 -1
  208. package/dist/components/form/fields/object/Object.d.ts +1 -1
  209. package/dist/components/form/fields/object/Object.d.ts.map +1 -1
  210. package/dist/components/form/fields/object/Object.js +4 -2
  211. package/dist/components/form/fields/object/Object.js.map +1 -1
  212. package/dist/components/form/fields/pendingEdit.d.ts +52 -0
  213. package/dist/components/form/fields/pendingEdit.d.ts.map +1 -0
  214. package/dist/components/form/fields/pendingEdit.js +79 -0
  215. package/dist/components/form/fields/pendingEdit.js.map +1 -0
  216. package/dist/components/form/fields/rich-text/RichText.d.ts +8 -1
  217. package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
  218. package/dist/components/form/fields/rich-text/RichText.js +190 -81
  219. package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
  220. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts +18 -0
  221. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts.map +1 -0
  222. package/dist/components/form/fields/rich-text/useTemplateTags.js +49 -0
  223. package/dist/components/form/fields/rich-text/useTemplateTags.js.map +1 -0
  224. package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -1
  225. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +4 -1
  226. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -1
  227. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -1
  228. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +20 -5
  229. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -1
  230. package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -1
  231. package/dist/components/form/fields/schema-definition/TableEditor.js +10 -2
  232. package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -1
  233. package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -1
  234. package/dist/components/form/fields/schema-definition/index.js +8 -4
  235. package/dist/components/form/fields/schema-definition/index.js.map +1 -1
  236. package/dist/components/form/fields/select/Select.d.ts +2 -0
  237. package/dist/components/form/fields/select/Select.d.ts.map +1 -1
  238. package/dist/components/form/fields/select/Select.js +19 -10
  239. package/dist/components/form/fields/select/Select.js.map +1 -1
  240. package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
  241. package/dist/components/form/fields/select/SelectCollection.js +8 -2
  242. package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
  243. package/dist/components/form/fields/select/unavailableRow.d.ts +23 -0
  244. package/dist/components/form/fields/select/unavailableRow.d.ts.map +1 -0
  245. package/dist/components/form/fields/select/unavailableRow.js +55 -0
  246. package/dist/components/form/fields/select/unavailableRow.js.map +1 -0
  247. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +5 -5
  248. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
  249. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +11 -4
  250. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
  251. package/dist/components/form/fields/template/TemplateBrowser.d.ts +22 -0
  252. package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
  253. package/dist/components/form/fields/template/TemplateBrowser.js +54 -0
  254. package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
  255. package/dist/components/form/fields/template/TemplateField.d.ts +83 -1
  256. package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
  257. package/dist/components/form/fields/template/TemplateField.js +535 -85
  258. package/dist/components/form/fields/template/TemplateField.js.map +1 -1
  259. package/dist/components/form/fields/template/TemplateText.d.ts +0 -17
  260. package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -1
  261. package/dist/components/form/fields/template/TemplateText.js +8 -4
  262. package/dist/components/form/fields/template/TemplateText.js.map +1 -1
  263. package/dist/components/form/fields/template/writtenAsText.d.ts +55 -0
  264. package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
  265. package/dist/components/form/fields/template/writtenAsText.js +188 -0
  266. package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
  267. package/dist/components/form/index.d.ts +10 -0
  268. package/dist/components/form/index.d.ts.map +1 -1
  269. package/dist/components/form/index.js +23 -1
  270. package/dist/components/form/index.js.map +1 -1
  271. package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
  272. package/dist/components/imageLightbox/ImageLightbox.js +19 -7
  273. package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
  274. package/dist/components/log/Log.d.ts.map +1 -1
  275. package/dist/components/log/Log.js +15 -7
  276. package/dist/components/log/Log.js.map +1 -1
  277. package/dist/components/menu/Menu.d.ts.map +1 -1
  278. package/dist/components/menu/Menu.js +19 -10
  279. package/dist/components/menu/Menu.js.map +1 -1
  280. package/dist/components/smartEditor/CompletionMenu.d.ts +43 -0
  281. package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
  282. package/dist/components/smartEditor/CompletionMenu.js +196 -0
  283. package/dist/components/smartEditor/CompletionMenu.js.map +1 -0
  284. package/dist/components/smartEditor/MarkdownDoc.d.ts +1 -1
  285. package/dist/components/smartEditor/MarkdownDoc.js +1 -1
  286. package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
  287. package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
  288. package/dist/components/smartEditor/SmartEditor.js +51 -136
  289. package/dist/components/smartEditor/SmartEditor.js.map +1 -1
  290. package/dist/components/smartEditor/completionStyle.d.ts +27 -0
  291. package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
  292. package/dist/components/smartEditor/completionStyle.js +66 -0
  293. package/dist/components/smartEditor/completionStyle.js.map +1 -0
  294. package/dist/components/smartEditor/index.d.ts +5 -1
  295. package/dist/components/smartEditor/index.d.ts.map +1 -1
  296. package/dist/components/smartEditor/index.js +19 -1
  297. package/dist/components/smartEditor/index.js.map +1 -1
  298. package/dist/components/smartEditor/templateCompletions.d.ts +18 -0
  299. package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
  300. package/dist/components/smartEditor/templateCompletions.js +94 -0
  301. package/dist/components/smartEditor/templateCompletions.js.map +1 -0
  302. package/dist/components/smartEditor/types.d.ts +12 -1
  303. package/dist/components/smartEditor/types.d.ts.map +1 -1
  304. package/dist/components/smartEditor/useLspAutocomplete.d.ts +32 -0
  305. package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
  306. package/dist/components/smartEditor/useLspAutocomplete.js +228 -118
  307. package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
  308. package/dist/components/smartEditor/useLspHover.d.ts +22 -7
  309. package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
  310. package/dist/components/smartEditor/useLspHover.js +86 -17
  311. package/dist/components/smartEditor/useLspHover.js.map +1 -1
  312. package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
  313. package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
  314. package/dist/components/smartEditor/useLspSession.d.ts +6 -0
  315. package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
  316. package/dist/components/smartEditor/useLspSession.js +7 -6
  317. package/dist/components/smartEditor/useLspSession.js.map +1 -1
  318. package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -1
  319. package/dist/components/supportTicket/AttachmentChips.js +15 -5
  320. package/dist/components/supportTicket/AttachmentChips.js.map +1 -1
  321. package/dist/components/supportTicket/ReferencePicker.d.ts +9 -2
  322. package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
  323. package/dist/components/supportTicket/ReferencePicker.js +27 -6
  324. package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
  325. package/dist/components/supportTicket/TicketHeader.d.ts +3 -4
  326. package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
  327. package/dist/components/supportTicket/TicketHeader.js +20 -2
  328. package/dist/components/supportTicket/TicketHeader.js.map +1 -1
  329. package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
  330. package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
  331. package/dist/components/ticketReferences/TicketReferences.js +9 -4
  332. package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
  333. package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
  334. package/dist/components/ticketThread/TicketThread.js +36 -11
  335. package/dist/components/ticketThread/TicketThread.js.map +1 -1
  336. package/dist/helpers/descriptionTooltip.d.ts +43 -0
  337. package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
  338. package/dist/helpers/descriptionTooltip.js +70 -0
  339. package/dist/helpers/descriptionTooltip.js.map +1 -0
  340. package/dist/helpers/domProps.d.ts +5 -0
  341. package/dist/helpers/domProps.d.ts.map +1 -0
  342. package/dist/helpers/domProps.js +47 -0
  343. package/dist/helpers/domProps.js.map +1 -0
  344. package/dist/helpers/expressions.d.ts +107 -2
  345. package/dist/helpers/expressions.d.ts.map +1 -1
  346. package/dist/helpers/expressions.js +223 -8
  347. package/dist/helpers/expressions.js.map +1 -1
  348. package/dist/helpers/hoveringPointer.d.ts +26 -0
  349. package/dist/helpers/hoveringPointer.d.ts.map +1 -0
  350. package/dist/helpers/hoveringPointer.js +29 -0
  351. package/dist/helpers/hoveringPointer.js.map +1 -0
  352. package/dist/helpers/markdownText.d.ts +14 -0
  353. package/dist/helpers/markdownText.d.ts.map +1 -0
  354. package/dist/helpers/markdownText.js +160 -0
  355. package/dist/helpers/markdownText.js.map +1 -0
  356. package/dist/helpers/qorusTypeCatalogue.d.ts +53 -0
  357. package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
  358. package/dist/helpers/qorusTypeCatalogue.js +262 -0
  359. package/dist/helpers/qorusTypeCatalogue.js.map +1 -0
  360. package/dist/helpers/readableColors.d.ts +36 -0
  361. package/dist/helpers/readableColors.d.ts.map +1 -0
  362. package/dist/helpers/readableColors.js +116 -0
  363. package/dist/helpers/readableColors.js.map +1 -0
  364. package/dist/helpers/templateItems.d.ts +2 -2
  365. package/dist/helpers/templateItems.d.ts.map +1 -1
  366. package/dist/helpers/templateItems.js +6 -4
  367. package/dist/helpers/templateItems.js.map +1 -1
  368. package/dist/helpers/templates.d.ts +26 -1
  369. package/dist/helpers/templates.d.ts.map +1 -1
  370. package/dist/helpers/templates.js +41 -6
  371. package/dist/helpers/templates.js.map +1 -1
  372. package/dist/helpers/validations.d.ts +9 -0
  373. package/dist/helpers/validations.d.ts.map +1 -1
  374. package/dist/helpers/validations.js +139 -33
  375. package/dist/helpers/validations.js.map +1 -1
  376. package/dist/hooks/useQorusTypes.d.ts +7 -15
  377. package/dist/hooks/useQorusTypes.d.ts.map +1 -1
  378. package/dist/hooks/useQorusTypes.js +25 -166
  379. package/dist/hooks/useQorusTypes.js.map +1 -1
  380. package/dist/hooks/useReadableIntentShade.d.ts +9 -0
  381. package/dist/hooks/useReadableIntentShade.d.ts.map +1 -0
  382. package/dist/hooks/useReadableIntentShade.js +23 -0
  383. package/dist/hooks/useReadableIntentShade.js.map +1 -0
  384. package/dist/hooks/useReadableOpacity.d.ts +6 -0
  385. package/dist/hooks/useReadableOpacity.d.ts.map +1 -0
  386. package/dist/hooks/useReadableOpacity.js +17 -0
  387. package/dist/hooks/useReadableOpacity.js.map +1 -0
  388. package/dist/index.d.ts +1 -0
  389. package/dist/index.d.ts.map +1 -1
  390. package/dist/index.js +1 -0
  391. package/dist/index.js.map +1 -1
  392. package/dist/tracking/ui/ExperimentCard.d.ts +1 -1
  393. package/dist/tracking/ui/ExperimentCard.d.ts.map +1 -1
  394. package/dist/tracking/ui/ExperimentCard.js +26 -10
  395. package/dist/tracking/ui/ExperimentCard.js.map +1 -1
  396. package/dist/tracking/ui/card.d.ts +2 -2
  397. package/dist/tracking/ui/card.d.ts.map +1 -1
  398. package/dist/tracking/ui/card.js +2 -2
  399. package/dist/tracking/ui/card.js.map +1 -1
  400. package/dist/tracking/ui/readable.d.ts +14 -0
  401. package/dist/tracking/ui/readable.d.ts.map +1 -0
  402. package/dist/tracking/ui/readable.js +60 -0
  403. package/dist/tracking/ui/readable.js.map +1 -0
  404. package/package.json +14 -5
  405. package/.claude/CLAUDE.md +0 -317
  406. package/.tasks/EXPORT_EXPRESSION_BUILDER.md +0 -38
  407. package/.tasks/EXPRESSION_BUILDER_REPORT.md +0 -149
  408. package/.tasks/EXPRESSION_FIELD_SEAMS.md +0 -66
  409. package/.tasks/FIELD_STACK_REPORT.md +0 -234
  410. package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +0 -558
  411. package/.tasks/FORM_ENGINE_EXPRESSIONS.md +0 -197
  412. package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +0 -95
  413. package/.tasks/FORM_FIELD_EXTRAS.md +0 -72
  414. package/.tasks/INDEX.md +0 -111
  415. package/.tasks/LSP_SHARED_CONNECTION.md +0 -75
  416. package/.tasks/QONSOLE_ASSIST_FEATURES.md +0 -306
  417. package/.tasks/RENDER_EXPRESSION_LSP.md +0 -159
  418. package/.tasks/REQRAFT_AUTO_FIELD.md +0 -176
  419. package/.tasks/SCHEMA_DEFINITION_FIELD.md +0 -250
  420. package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +0 -340
  421. package/.tasks/SMART_EDITOR_LSP_FEATURES.md +0 -299
  422. package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +0 -280
  423. package/.tasks/SMART_EDITOR_UX_POLISH.md +0 -383
  424. package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +0 -246
  425. package/.tasks/STORY_NETWORK_ISOLATION.md +0 -98
  426. package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +0 -72
  427. package/CODE_OF_CONDUCT.md +0 -105
  428. package/CONTRIBUTING.MD +0 -78
  429. package/SECURITY.md +0 -3
  430. package/chromatic.config.json +0 -5
  431. package/design/COMPACT_ENGINE_REDESIGN.md +0 -156
  432. package/design/COMPACT_INFO_DISPLAY.md +0 -87
  433. package/design/COMPACT_PARITY.md +0 -85
  434. package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +0 -92
  435. package/design/FORM_ENGINE_COMPACT.md +0 -300
  436. package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +0 -353
  437. package/design/FORM_ENGINE_EXPRESSIONS.md +0 -257
  438. package/design/FORM_ENGINE_FIELD_MIGRATION.md +0 -419
  439. package/design/IDE_INTEGRATION.md +0 -64
  440. package/design/RENDER_EXPRESSION_TRANSPORT.md +0 -156
  441. package/design/SELECT_DIALOG_FLOOR.md +0 -86
  442. package/design/SMART_EDITOR_UX.md +0 -438
  443. package/design/TRACKING.md +0 -290
  444. package/design/UNAVAILABLE_ALLOWED_VALUES.md +0 -226
  445. package/src/components/Description/index.tsx +0 -254
  446. package/src/components/Description/markdownRendererContext.tsx +0 -29
  447. package/src/components/FocusedEditing/index.tsx +0 -50
  448. package/src/components/codeSize/index.tsx +0 -79
  449. package/src/components/composer/Composer.stories.tsx +0 -238
  450. package/src/components/composer/Composer.tsx +0 -554
  451. package/src/components/composer/helpers.ts +0 -74
  452. package/src/components/composer/index.ts +0 -2
  453. package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -1183
  454. package/src/components/dpqlEditor/DpqlEditor.tsx +0 -219
  455. package/src/components/dpqlEditor/dpqlHelpers.ts +0 -287
  456. package/src/components/dpqlEditor/dpqlInserter.ts +0 -121
  457. package/src/components/dpqlEditor/dpqlProbe.ts +0 -165
  458. package/src/components/dpqlEditor/dpqlTags.ts +0 -114
  459. package/src/components/dpqlEditor/index.ts +0 -41
  460. package/src/components/dpqlEditor/types.ts +0 -203
  461. package/src/components/dpqlEditor/useDpqlProbe.ts +0 -33
  462. package/src/components/dpqlEditor/useDpqlSession.ts +0 -411
  463. package/src/components/form/engine/CompactRow.tsx +0 -2620
  464. package/src/components/form/engine/CompactToolbar.tsx +0 -330
  465. package/src/components/form/engine/FormEngine.stories.tsx +0 -9920
  466. package/src/components/form/engine/FormEngine.tsx +0 -4569
  467. package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
  468. package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -331
  469. package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
  470. package/src/components/form/engine/OptionFieldMessages.tsx +0 -477
  471. package/src/components/form/engine/OptionsHelpDialog.tsx +0 -29
  472. package/src/components/form/engine/__fixtures__/basicFormOptions.ts +0 -309
  473. package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +0 -45
  474. package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +0 -233
  475. package/src/components/form/engine/_structuredData/SchemaDataView.tsx +0 -742
  476. package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +0 -85
  477. package/src/components/form/engine/_structuredData/StructuredDataView.tsx +0 -75
  478. package/src/components/form/engine/_structuredData/structuredData.ts +0 -145
  479. package/src/components/form/engine/compactRowContext.ts +0 -148
  480. package/src/components/form/engine/compactRowStyles.ts +0 -898
  481. package/src/components/form/engine/compactToolbarContext.ts +0 -69
  482. package/src/components/form/engine/optionActions.ts +0 -128
  483. package/src/components/form/engine/optionsContext.ts +0 -24
  484. package/src/components/form/engine/readFirst.ts +0 -1077
  485. package/src/components/form/engine/rendererTypes.ts +0 -107
  486. package/src/components/form/engine/revealRow.ts +0 -123
  487. package/src/components/form/engine/rowFocus.ts +0 -101
  488. package/src/components/form/engine/rowMenuContext.ts +0 -159
  489. package/src/components/form/engine/rowOpenPicker.ts +0 -27
  490. package/src/components/form/engine/typeChoices.ts +0 -63
  491. package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +0 -159
  492. package/src/components/form/engine/variants/VariantCalmTable.tsx +0 -244
  493. package/src/components/form/engine/variants/VariantCards.tsx +0 -212
  494. package/src/components/form/engine/variants/VariantFocus.tsx +0 -382
  495. package/src/components/form/engine/variants/VariantMinimal.tsx +0 -170
  496. package/src/components/form/engine/variants/focusDemo.ts +0 -145
  497. package/src/components/form/engine/variants/variantModel.ts +0 -223
  498. package/src/components/form/engine/variants/variantParts.tsx +0 -313
  499. package/src/components/form/expressions/DpqlRendering.tsx +0 -85
  500. package/src/components/form/expressions/ExpressionField.stories.tsx +0 -1395
  501. package/src/components/form/expressions/ExpressionField.tsx +0 -503
  502. package/src/components/form/expressions/argumentPresence.ts +0 -213
  503. package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +0 -1683
  504. package/src/components/form/expressions/builder/argumentDetail.tsx +0 -17
  505. package/src/components/form/expressions/builder/argumentLabel.tsx +0 -146
  506. package/src/components/form/expressions/builder/argumentSlot.tsx +0 -101
  507. package/src/components/form/expressions/builder/argumentWrapper.tsx +0 -243
  508. package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +0 -120
  509. package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +0 -69
  510. package/src/components/form/expressions/builder/index.tsx +0 -1545
  511. package/src/components/form/expressions/builder/item.tsx +0 -89
  512. package/src/components/form/expressions/builder/moveToPositionStrip.tsx +0 -156
  513. package/src/components/form/expressions/builder/renderTemplate.tsx +0 -42
  514. package/src/components/form/expressions/dpqlMockLanguage.ts +0 -566
  515. package/src/components/form/expressions/dpqlMockLsp.ts +0 -126
  516. package/src/components/form/expressions/mockExpressions.ts +0 -317
  517. package/src/components/form/expressions/renderExpressionToText.ts +0 -137
  518. package/src/components/form/expressions/types.ts +0 -110
  519. package/src/components/form/expressions/useExpressions.ts +0 -101
  520. package/src/components/form/expressions/useRenderExpression.ts +0 -165
  521. package/src/components/form/fields/Field.stories.tsx +0 -143
  522. package/src/components/form/fields/Field.tsx +0 -732
  523. package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -297
  524. package/src/components/form/fields/array/ArrayAuto.tsx +0 -237
  525. package/src/components/form/fields/array/ArrayAutoField.stories.tsx +0 -475
  526. package/src/components/form/fields/array/ArrayAutoField.tsx +0 -367
  527. package/src/components/form/fields/auto/AutoFormField.stories.tsx +0 -825
  528. package/src/components/form/fields/auto/AutoFormField.tsx +0 -1164
  529. package/src/components/form/fields/binary/Binary.stories.tsx +0 -122
  530. package/src/components/form/fields/binary/Binary.tsx +0 -91
  531. package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -125
  532. package/src/components/form/fields/boolean/Boolean.tsx +0 -34
  533. package/src/components/form/fields/byte-size/ByteSize.stories.tsx +0 -87
  534. package/src/components/form/fields/byte-size/ByteSize.tsx +0 -58
  535. package/src/components/form/fields/color/Color.stories.tsx +0 -99
  536. package/src/components/form/fields/color/Color.tsx +0 -46
  537. package/src/components/form/fields/cron/Cron.stories.tsx +0 -68
  538. package/src/components/form/fields/cron/Cron.tsx +0 -80
  539. package/src/components/form/fields/date/Date.stories.tsx +0 -77
  540. package/src/components/form/fields/date/Date.tsx +0 -55
  541. package/src/components/form/fields/emittedValues.ts +0 -70
  542. package/src/components/form/fields/file/File.stories.tsx +0 -161
  543. package/src/components/form/fields/file/File.tsx +0 -227
  544. package/src/components/form/fields/long-string/LongString.stories.tsx +0 -120
  545. package/src/components/form/fields/long-string/LongString.tsx +0 -130
  546. package/src/components/form/fields/markdown/Markdown.stories.tsx +0 -76
  547. package/src/components/form/fields/markdown/Markdown.tsx +0 -81
  548. package/src/components/form/fields/markdown/MarkdownView.tsx +0 -222
  549. package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +0 -139
  550. package/src/components/form/fields/number/Number.stories.tsx +0 -159
  551. package/src/components/form/fields/number/Number.tsx +0 -160
  552. package/src/components/form/fields/object/Object.stories.tsx +0 -398
  553. package/src/components/form/fields/object/Object.tsx +0 -255
  554. package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +0 -95
  555. package/src/components/form/fields/radio-group/RadioGroup.tsx +0 -46
  556. package/src/components/form/fields/radio-group/images/java-96x128.png +0 -0
  557. package/src/components/form/fields/radio-group/images/python-129x128.png +0 -0
  558. package/src/components/form/fields/radio-group/images/qore-106x128.png +0 -0
  559. package/src/components/form/fields/rich-text/RichText.stories.tsx +0 -260
  560. package/src/components/form/fields/rich-text/RichText.tsx +0 -537
  561. package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +0 -242
  562. package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +0 -758
  563. package/src/components/form/fields/schema-definition/Hint.tsx +0 -22
  564. package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +0 -138
  565. package/src/components/form/fields/schema-definition/Loader.tsx +0 -20
  566. package/src/components/form/fields/schema-definition/MigrationsTab.tsx +0 -187
  567. package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +0 -286
  568. package/src/components/form/fields/schema-definition/TableEditor.tsx +0 -155
  569. package/src/components/form/fields/schema-definition/TablesTab.tsx +0 -138
  570. package/src/components/form/fields/schema-definition/catalog.ts +0 -237
  571. package/src/components/form/fields/schema-definition/helpers.ts +0 -90
  572. package/src/components/form/fields/schema-definition/index.tsx +0 -418
  573. package/src/components/form/fields/schema-definition/mockCatalog.ts +0 -325
  574. package/src/components/form/fields/schema-definition/mockDefinition.ts +0 -111
  575. package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +0 -152
  576. package/src/components/form/fields/schema-definition/starterTemplate.ts +0 -68
  577. package/src/components/form/fields/schema-definition/types.ts +0 -185
  578. package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +0 -49
  579. package/src/components/form/fields/select/Select.stories.tsx +0 -872
  580. package/src/components/form/fields/select/Select.tsx +0 -624
  581. package/src/components/form/fields/select/SelectCollection.tsx +0 -594
  582. package/src/components/form/fields/string/String.stories.tsx +0 -86
  583. package/src/components/form/fields/string/String.tsx +0 -43
  584. package/src/components/form/fields/template/ExampleValueModal.stories.tsx +0 -114
  585. package/src/components/form/fields/template/ExampleValueModal.tsx +0 -99
  586. package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +0 -47
  587. package/src/components/form/fields/template/TemplateField.stories.tsx +0 -1121
  588. package/src/components/form/fields/template/TemplateField.tsx +0 -1717
  589. package/src/components/form/fields/template/TemplateText.tsx +0 -115
  590. package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +0 -7
  591. package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +0 -147
  592. package/src/components/form/fields/template/__fixtures__/templates.json +0 -83
  593. package/src/components/form/fields/timeout/Timeout.stories.tsx +0 -228
  594. package/src/components/form/fields/timeout/Timeout.tsx +0 -87
  595. package/src/components/form/fields/url/Url.stories.tsx +0 -94
  596. package/src/components/form/fields/url/Url.tsx +0 -85
  597. package/src/components/form/index.tsx +0 -47
  598. package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
  599. package/src/components/imageLightbox/ImageLightbox.tsx +0 -236
  600. package/src/components/imageLightbox/index.ts +0 -1
  601. package/src/components/log/Log.stories.tsx +0 -333
  602. package/src/components/log/Log.tsx +0 -285
  603. package/src/components/menu/Menu.stories.tsx +0 -155
  604. package/src/components/menu/Menu.tsx +0 -312
  605. package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +0 -797
  606. package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +0 -105
  607. package/src/components/qonsoleSmartInput/index.ts +0 -16
  608. package/src/components/qonsoleSmartInput/qonsoleInserter.ts +0 -77
  609. package/src/components/qonsoleSmartInput/types.ts +0 -133
  610. package/src/components/qonsoleSmartInput/useQonsoleSession.ts +0 -124
  611. package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +0 -62
  612. package/src/components/searchFilterBar/SearchFilterBar.tsx +0 -144
  613. package/src/components/searchFilterBar/index.ts +0 -1
  614. package/src/components/smartEditor/MarkdownDoc.tsx +0 -190
  615. package/src/components/smartEditor/SmartEditor.stories.tsx +0 -475
  616. package/src/components/smartEditor/SmartEditor.tsx +0 -808
  617. package/src/components/smartEditor/__fixtures__/mockLspServer.ts +0 -205
  618. package/src/components/smartEditor/helpers.ts +0 -217
  619. package/src/components/smartEditor/index.ts +0 -35
  620. package/src/components/smartEditor/styling.ts +0 -45
  621. package/src/components/smartEditor/types.ts +0 -211
  622. package/src/components/smartEditor/useLspAutocomplete.ts +0 -758
  623. package/src/components/smartEditor/useLspDiagnosticDecorations.ts +0 -125
  624. package/src/components/smartEditor/useLspHover.ts +0 -230
  625. package/src/components/smartEditor/useLspSemanticTokens.ts +0 -298
  626. package/src/components/smartEditor/useLspSession.ts +0 -231
  627. package/src/components/smartEditor/useLspSignatureHelp.ts +0 -198
  628. package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -171
  629. package/src/components/supportTicket/AttachmentChips.tsx +0 -147
  630. package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -257
  631. package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -129
  632. package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -584
  633. package/src/components/supportTicket/ReferencePicker.tsx +0 -563
  634. package/src/components/supportTicket/TicketConversation.stories.tsx +0 -121
  635. package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
  636. package/src/components/supportTicket/TicketHeader.tsx +0 -247
  637. package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
  638. package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
  639. package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -354
  640. package/src/components/supportTicket/TicketReplyBox.tsx +0 -150
  641. package/src/components/supportTicket/__fixtures__/kindMarks.ts +0 -28
  642. package/src/components/supportTicket/attachmentAccess.ts +0 -97
  643. package/src/components/supportTicket/fileToAttachment.ts +0 -24
  644. package/src/components/supportTicket/index.ts +0 -10
  645. package/src/components/supportTicket/meta.ts +0 -206
  646. package/src/components/supportTicket/ticketModel.ts +0 -131
  647. package/src/components/supportTicket/useLoadedImages.ts +0 -73
  648. package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -315
  649. package/src/components/ticketReferences/TicketReferences.tsx +0 -906
  650. package/src/components/ticketReferences/index.ts +0 -2
  651. package/src/components/ticketThread/TicketThread.stories.tsx +0 -829
  652. package/src/components/ticketThread/TicketThread.tsx +0 -719
  653. package/src/components/ticketThread/index.ts +0 -6
  654. package/src/contexts/FetchContext.tsx +0 -25
  655. package/src/contexts/ReqraftContext.tsx +0 -9
  656. package/src/contexts/StorageContext.tsx +0 -33
  657. package/src/global.d.ts +0 -4
  658. package/src/helpers/allowedValues.ts +0 -249
  659. package/src/helpers/choiceChip.ts +0 -227
  660. package/src/helpers/common.ts +0 -326
  661. package/src/helpers/dpqlDetection.ts +0 -209
  662. package/src/helpers/expressions.ts +0 -140
  663. package/src/helpers/optionUiTypes.ts +0 -199
  664. package/src/helpers/options.ts +0 -150
  665. package/src/helpers/providerValue.ts +0 -125
  666. package/src/helpers/scrollbar.ts +0 -32
  667. package/src/helpers/singleLineString.ts +0 -61
  668. package/src/helpers/templateItems.ts +0 -81
  669. package/src/helpers/templateText.ts +0 -350
  670. package/src/helpers/templates.ts +0 -602
  671. package/src/helpers/validations.ts +0 -2085
  672. package/src/hooks/useArgSchema.ts +0 -37
  673. package/src/hooks/useCoarsePointer.ts +0 -30
  674. package/src/hooks/useFetch/useFetch.stories.tsx +0 -379
  675. package/src/hooks/useFetch/useFetch.tsx +0 -154
  676. package/src/hooks/usePhoneViewport.ts +0 -34
  677. package/src/hooks/useQorusTypes.ts +0 -233
  678. package/src/hooks/useReqraftProperty.ts +0 -16
  679. package/src/hooks/useStorage/useStorage.stories.tsx +0 -168
  680. package/src/hooks/useStorage/useStorage.ts +0 -35
  681. package/src/hooks/useTemplates.ts +0 -123
  682. package/src/hooks/useValidation.ts +0 -9
  683. package/src/hooks/useWebSocket/useWebSocket.ts +0 -224
  684. package/src/hooks/useWebSocket/useWebsocket.stories.tsx +0 -640
  685. package/src/hooks/useWhyDidYouUpdate.ts +0 -38
  686. package/src/index.tsx +0 -86
  687. package/src/providers/FetchProvider.tsx +0 -40
  688. package/src/providers/ReqraftProvider.tsx +0 -52
  689. package/src/providers/StorageProvider.tsx +0 -131
  690. package/src/stores/currentUser/currentUser.stories.tsx +0 -100
  691. package/src/stores/currentUser/currentUser.tsx +0 -94
  692. package/src/stories/Data/fileFieldArgSchema.json +0 -86
  693. package/src/stories/Tests/utils.ts +0 -320
  694. package/src/stories/storyNetwork.ts +0 -92
  695. package/src/stories/tracking.tsx +0 -206
  696. package/src/tracking/browser/attach.ts +0 -186
  697. package/src/tracking/browser/env.ts +0 -78
  698. package/src/tracking/core/consent.ts +0 -37
  699. package/src/tracking/core/engagement.ts +0 -47
  700. package/src/tracking/core/experiments.ts +0 -258
  701. package/src/tracking/core/hash.ts +0 -26
  702. package/src/tracking/core/ids.ts +0 -25
  703. package/src/tracking/core/observable.ts +0 -23
  704. package/src/tracking/core/queue.ts +0 -131
  705. package/src/tracking/core/sections.ts +0 -166
  706. package/src/tracking/core/storage.ts +0 -69
  707. package/src/tracking/core/tracker.ts +0 -417
  708. package/src/tracking/core/types.ts +0 -162
  709. package/src/tracking/core/utm.ts +0 -23
  710. package/src/tracking/index.ts +0 -72
  711. package/src/tracking/markup.ts +0 -17
  712. package/src/tracking/react/Experiment.tsx +0 -44
  713. package/src/tracking/react/TrackingProvider.tsx +0 -56
  714. package/src/tracking/react/hooks.ts +0 -106
  715. package/src/tracking/react/index.ts +0 -13
  716. package/src/tracking/testing.ts +0 -108
  717. package/src/tracking/ui/ExperimentCard.stories.tsx +0 -296
  718. package/src/tracking/ui/ExperimentCard.tsx +0 -667
  719. package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -155
  720. package/src/tracking/ui/ExperimentsOverlay.tsx +0 -437
  721. package/src/tracking/ui/anchor.ts +0 -180
  722. package/src/tracking/ui/card.ts +0 -464
  723. package/src/tracking/ui/client.ts +0 -117
  724. package/src/tracking/ui/index.ts +0 -77
  725. package/src/tracking/ui/types.ts +0 -110
  726. package/src/tracking/ui/useExperimentsAdmin.ts +0 -103
  727. package/src/types/Form.ts +0 -29
  728. package/src/types.ts +0 -14
  729. package/src/utils/datetime.ts +0 -10
  730. package/src/utils/fetch.ts +0 -457
  731. package/src/utils/lspClient.ts +0 -711
  732. package/src/utils/lspClient.types.ts +0 -211
  733. package/src/utils/queryUnlessCancelled.ts +0 -28
  734. package/src/utils/websocket.ts +0 -293
  735. package/vite.config.ts +0 -58
  736. package/vitest.config.ts +0 -69
@@ -1,566 +0,0 @@
1
- // Copyright 2026 Qore Technologies, s.r.o.
2
- // The DPQL the story language server speaks: tokens, parse, type analysis,
3
- // serialize and render, as pure functions.
4
- //
5
- // A mock that answers every request with a fixed shape makes stories assert
6
- // its artefacts instead of the product. The one this replaced parsed ANY text
7
- // into `text == ""`, so `1 + 2 ==` — which the real server rejects — previewed
8
- // as `"1 + 2 ==" == ""` and a bool field reported "returns string". Each
9
- // answer here follows what the Qorus `/lsp` handler actually returned for the
10
- // same input, recorded in `__tests__/dpqlMockLanguage.test.ts`; only the subset
11
- // the stories exercise is modelled.
12
- import { mockExpressions } from './mockExpressions';
13
- import { IExpressionSchema } from './types';
14
-
15
- /** One argument or node of a DPQL expression AST, as the server shapes it. */
16
- export interface IDpqlMockNode {
17
- exp?: string;
18
- args?: IDpqlMockNode[];
19
- type?: string;
20
- value?: unknown;
21
- is_expression?: boolean;
22
- }
23
-
24
- export interface IDpqlMockDiagnostic {
25
- severity: 'error' | 'warning';
26
- message: string;
27
- code: string;
28
- line: number;
29
- column: number;
30
- end_line: number;
31
- end_column: number;
32
- }
33
-
34
- export interface IDpqlMockParseResult {
35
- success: boolean;
36
- expression?: { is_expression: true; value: IDpqlMockNode };
37
- inferred_type?: string;
38
- target_type?: string;
39
- type_compatible?: boolean;
40
- auto_coercible?: boolean;
41
- coercion_may_fail?: boolean;
42
- suggested_fix?: { text: string; description: string };
43
- diagnostics: IDpqlMockDiagnostic[];
44
- }
45
-
46
- // ─── Catalogue ───────────────────────────────────────────────────────────────
47
-
48
- /* The server parses, serializes and renders by the expression catalogue — an
49
- expression's symbol, type, group and `render_template` — so this reads the
50
- stories' catalogue for the same answers. */
51
- const CATALOGUE = new Map<string, IExpressionSchema>(
52
- mockExpressions.map((info) => [info.name, info])
53
- );
54
-
55
- /** `DET_Function`: a rendering calls it by name. */
56
- const DET_FUNCTION = 2;
57
- /** `DET_Operator`. */
58
- const DET_OPERATOR = 1;
59
-
60
- const WORD = /^[A-Za-z_]\w*$/;
61
-
62
- /** An expression's DPQL spelling: its symbol without a display `()`, else its name. */
63
- const symbolOf = (name: string): string =>
64
- CATALOGUE.get(name)?.symbol?.replace(/\(\)$/, '') || name;
65
-
66
- /**
67
- * A two-argument catalogue comparison is written infix by its symbol:
68
- * `"test" startsWith "t"`. With any other number of arguments it is a call.
69
- * `regex` is the exception the server spells `=~ /…/`, which is not modelled.
70
- */
71
- const isInfixComparison = (name: string, argCount: number): boolean => {
72
- const info = CATALOGUE.get(name);
73
- return (
74
- argCount === 2 &&
75
- info?.type === DET_OPERATOR &&
76
- !!info.groups?.includes('Comparison') &&
77
- name !== 'regex'
78
- );
79
- };
80
-
81
- /** Expression names by the word DPQL spells them with: `startsWith` → `starts-with`. */
82
- const NAME_BY_SYMBOL = new Map<string, string>(
83
- mockExpressions
84
- .filter((info) => WORD.test(symbolOf(info.name)))
85
- .map((info) => [symbolOf(info.name), info.name])
86
- );
87
-
88
- // ─── Semantic tokens ─────────────────────────────────────────────────────────
89
-
90
- const DPQL_KEYWORDS = new Set(['in', 'not', 'between', 'and', 'like', 'true', 'false', 'null']);
91
- const DPQL_FUNCTIONS = new Set([
92
- 'abs', 'round', 'floor', 'ceil', 'trim', 'ltrim', 'rtrim', 'concat', 'split', 'substr',
93
- 'coalesce', 'nullif', 'now', 'days', 'hours', 'minutes', 'seconds', 'milliseconds',
94
- 'microseconds', 'years', 'months', 'weeks', 'get_year', 'get_month', 'get_day', 'get_hour',
95
- 'get_minute', 'get_second', 'format_date', 'format_number', 'map', 'hash_map', 'contains',
96
- 'ignore', 'case', 'toString', 'toInt', 'toFloat', 'toBool', 'startsWith', 'endsWith',
97
- ]);
98
-
99
- /**
100
- * `textDocument/semanticTokens/full` for `text`: the LSP delta-encoded 5-tuple
101
- * array, with type indices into `SEMANTIC_TOKENS_LEGEND`. It covers readable
102
- * renderings as well as DPQL, as the server's does — `contains` and
103
- * `(ignore case)` in an explanation are coloured too.
104
- */
105
- export function mockTokenizeDpql(text: string): number[] {
106
- // Longer operators must come first so `==` isn't matched as two `=`.
107
- const TOKEN_RE = new RegExp(
108
- [
109
- `("(?:\\\\.|[^"\\\\])*")`, // 1: double-quoted string
110
- `('(?:\\\\.|[^'\\\\])*')`, // 2: single-quoted string
111
- `(/(?:\\\\.|[^/\\\\])*/[gimsux]*)`, // 3: regex literal /…/flags
112
- // a field name is bare in any script, as the server reads it: @menge_bestätigt, @名前
113
- `(@"(?:\\\\.|[^"\\\\])*"|@[\\p{L}_][\\p{L}\\p{M}\\p{N}_.]*)`, // 4: @field
114
- `(\\$[A-Za-z_-][\\w-]*:(?:\\{[^}]*\\}|[\\w.{}]+))`, // 5: $context:value
115
- `(\\b\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?\\b)`, // 6: number
116
- `(==|!=|<=|>=|&&|\\|\\||=~|!~|[+\\-*/%<>!=])`, // 7: operator
117
- // 8: punctuation — matched so it is not misread, but the server leaves it uncoloured
118
- `(\\.\\.|[,(){}\\[\\].])`,
119
- `(\\b[A-Za-z_][\\w]*\\b)`, // 9: identifier (keyword check)
120
- ].join('|'),
121
- 'gu'
122
- );
123
-
124
- const tokens: Array<{ line: number; char: number; length: number; type: number }> = [];
125
- text.split('\n').forEach((line, lineIdx) => {
126
- TOKEN_RE.lastIndex = 0;
127
- let match: RegExpExecArray | null;
128
- while ((match = TOKEN_RE.exec(line)) !== null) {
129
- let type = -1;
130
- if (match[1] || match[2]) type = 11; // string
131
- else if (match[3]) type = 13; // regexp
132
- else if (match[4]) type = 4; // variable
133
- else if (match[5]) type = 2; // class (template)
134
- else if (match[6]) type = 12; // number
135
- else if (match[7]) type = 14; // operator
136
- else if (match[9]) {
137
- const word = match[9];
138
- if (DPQL_KEYWORDS.has(word.toLowerCase())) type = 8; // keyword
139
- else if (DPQL_FUNCTIONS.has(word) || DPQL_FUNCTIONS.has(word.toLowerCase())) type = 6; // function
140
- }
141
- if (type >= 0) {
142
- tokens.push({ line: lineIdx, char: match.index, length: match[0].length, type });
143
- }
144
- }
145
- });
146
-
147
- const data: number[] = [];
148
- let prevLine = 0;
149
- let prevChar = 0;
150
- for (const t of tokens) {
151
- const deltaLine = t.line - prevLine;
152
- data.push(deltaLine, deltaLine === 0 ? t.char - prevChar : t.char, t.length, t.type, 0);
153
- prevLine = t.line;
154
- prevChar = t.char;
155
- }
156
- return data;
157
- }
158
-
159
- // ─── Parse ───────────────────────────────────────────────────────────────────
160
-
161
- type TToken =
162
- | { kind: 'number'; text: string; start: number }
163
- | { kind: 'string'; text: string; start: number }
164
- | { kind: 'template'; text: string; start: number }
165
- | { kind: 'word'; text: string; start: number }
166
- | { kind: 'op'; text: string; start: number };
167
-
168
- const LEX_RE =
169
- /\s*(?:("(?:\\.|[^"\\])*")|(\$[A-Za-z_-][\w-]*:[\w.{}]+)|(\d+(?:\.\d+)?)|([A-Za-z_]\w*)|(==|!=|<=|>=|&&|\|\||[-+*/<>!(),]))/y;
170
-
171
- /** Binary operators, loosest first — the precedence the server parenthesises by. */
172
- const BINARY_PRECEDENCE: Record<string, number> = {
173
- '||': 1,
174
- '&&': 2,
175
- '==': 3,
176
- '!=': 3,
177
- '<': 3,
178
- '>': 3,
179
- '<=': 3,
180
- '>=': 3,
181
- '+': 4,
182
- '-': 4,
183
- '*': 5,
184
- '/': 5,
185
- };
186
-
187
- const RETURN_TYPES: Record<string, string> = {
188
- toString: 'string',
189
- toInt: 'int',
190
- toFloat: 'float',
191
- toBool: 'bool',
192
- };
193
-
194
- class DpqlMockSyntaxError extends Error {
195
- constructor(
196
- message: string,
197
- readonly column: number
198
- ) {
199
- super(message);
200
- }
201
- }
202
-
203
- const tokenize = (text: string): TToken[] => {
204
- const tokens: TToken[] = [];
205
- LEX_RE.lastIndex = 0;
206
- while (LEX_RE.lastIndex < text.length) {
207
- const start = LEX_RE.lastIndex;
208
- const m = LEX_RE.exec(text);
209
- if (!m) {
210
- if (text.slice(start).trim() === '') break;
211
- throw new DpqlMockSyntaxError('Unexpected character', start + 1);
212
- }
213
- const tokenStart = start + m[0].length - m[0].trimStart().length;
214
- if (m[1]) tokens.push({ kind: 'string', text: m[1], start: tokenStart });
215
- else if (m[2]) tokens.push({ kind: 'template', text: m[2], start: tokenStart });
216
- else if (m[3]) tokens.push({ kind: 'number', text: m[3], start: tokenStart });
217
- else if (m[4]) tokens.push({ kind: 'word', text: m[4], start: tokenStart });
218
- else if (m[5]) tokens.push({ kind: 'op', text: m[5], start: tokenStart });
219
- }
220
- return tokens;
221
- };
222
-
223
- const templateArg = (raw: string): IDpqlMockNode => {
224
- const [, context, value] = raw.match(/^\$([^:]+):(.*)$/) ?? [];
225
- return { type: 'auto', value: { tmpl_context: context, tmpl_value: value, raw } };
226
- };
227
-
228
- /** An operand: a bare argument, or a nested expression wrapped as the server wraps it. */
229
- const asOperand = (node: IDpqlMockNode): IDpqlMockNode =>
230
- node.exp ? { is_expression: true, value: node } : node;
231
-
232
- const parseTokens = (tokens: TToken[], endColumn: number): IDpqlMockNode => {
233
- let pos = 0;
234
- const peek = () => tokens[pos];
235
- const fail = (): never => {
236
- const token = peek();
237
- throw new DpqlMockSyntaxError(
238
- token ? `Unexpected token '${token.text}'` : 'Unexpected end of input, expected value',
239
- token ? token.start + 1 : endColumn
240
- );
241
- };
242
-
243
- const primary = (): IDpqlMockNode => {
244
- const token = peek();
245
- if (!token) return fail();
246
- pos++;
247
- switch (token.kind) {
248
- case 'number':
249
- return token.text.includes('.')
250
- ? { type: 'float', value: parseFloat(token.text) }
251
- : { type: 'int', value: parseInt(token.text, 10) };
252
- case 'string':
253
- return { type: 'string', value: JSON.parse(token.text) };
254
- case 'template':
255
- return templateArg(token.text);
256
- case 'word': {
257
- if (token.text === 'true' || token.text === 'false') {
258
- return { type: 'bool', value: token.text === 'true' };
259
- }
260
- if (token.text === 'null') {
261
- return { type: 'any', value: null };
262
- }
263
- if (peek()?.text === '(') {
264
- pos++;
265
- const args: IDpqlMockNode[] = [];
266
- while (peek() && peek()!.text !== ')') {
267
- args.push(asOperand(binary(1)));
268
- if (peek()?.text === ',') {
269
- pos++;
270
- }
271
- }
272
- if (peek()?.text !== ')') return fail();
273
- pos++;
274
- return { exp: NAME_BY_SYMBOL.get(token.text) ?? token.text, args };
275
- }
276
- return { type: 'string', value: token.text };
277
- }
278
- case 'op':
279
- if (token.text === '(') {
280
- const inner = binary(1);
281
- if (peek()?.text !== ')') return fail();
282
- pos++;
283
- return inner;
284
- }
285
- if (token.text === '!') {
286
- return { exp: '!', args: [asOperand(primary())] };
287
- }
288
- pos--;
289
- return fail();
290
- }
291
- return fail();
292
- };
293
-
294
- const binary = (minPrecedence: number): IDpqlMockNode => {
295
- let left = primary();
296
- for (;;) {
297
- const op = peek();
298
- // A word comparison (`"a" contains "b"`) binds as the symbol comparisons do.
299
- const wordComparison =
300
- op?.kind === 'word' && NAME_BY_SYMBOL.has(op.text) &&
301
- isInfixComparison(NAME_BY_SYMBOL.get(op.text)!, 2)
302
- ? NAME_BY_SYMBOL.get(op.text)
303
- : undefined;
304
- const precedence =
305
- op?.kind === 'op' ? BINARY_PRECEDENCE[op.text]
306
- : wordComparison ? BINARY_PRECEDENCE['==']
307
- : undefined;
308
- if (precedence === undefined || precedence < minPrecedence) {
309
- return left;
310
- }
311
- pos++;
312
- const right = binary(precedence + 1);
313
- left = { exp: wordComparison ?? op!.text, args: [asOperand(left), asOperand(right)] };
314
- }
315
- };
316
-
317
- const root = binary(1);
318
- if (pos < tokens.length) fail();
319
- return root;
320
- };
321
-
322
- const nodeOf = (operand: IDpqlMockNode): IDpqlMockNode =>
323
- operand.is_expression ? (operand.value as IDpqlMockNode) : operand;
324
-
325
- /** The type an expression returns, as far as the server can tell before it runs. */
326
- export const inferDpqlMockType = (node: IDpqlMockNode): string => {
327
- if (!node.exp) {
328
- return node.type === 'auto' ? 'auto' : (node.type ?? 'auto');
329
- }
330
- if (node.exp === 'value') return 'auto';
331
- if (RETURN_TYPES[node.exp]) return RETURN_TYPES[node.exp];
332
- if (['==', '!=', '<', '>', '<=', '>=', '&&', '||', '!'].includes(node.exp)) return 'bool';
333
- if (['+', '-', '*', '/'].includes(node.exp)) {
334
- const operandTypes = (node.args ?? []).map((arg) => inferDpqlMockType(nodeOf(arg)));
335
- if (operandTypes.includes('auto')) return 'auto';
336
- if (node.exp === '+' && operandTypes.includes('string')) return 'string';
337
- return operandTypes.includes('float') ? 'float' : 'int';
338
- }
339
- return 'auto';
340
- };
341
-
342
- const capitalise = (word: string) => word[0].toUpperCase() + word.slice(1);
343
-
344
- /** What a successful parse says about fitting `target`, shaped as the server's answer. */
345
- const analyse = (
346
- text: string,
347
- inferred: string,
348
- target: string
349
- ): Omit<IDpqlMockParseResult, 'success' | 'expression' | 'diagnostics'> & {
350
- diagnostics: IDpqlMockDiagnostic[];
351
- } => {
352
- const base = { inferred_type: inferred, target_type: target };
353
- if (inferred === 'auto' || target === 'auto' || target === 'any' || inferred === target) {
354
- return { ...base, type_compatible: true, auto_coercible: true, coercion_may_fail: false, diagnostics: [] };
355
- }
356
- // Text can become anything but may not parse on the day; a number or a bool
357
- // always becomes text; nothing else converts implicitly.
358
- const coercible = inferred === 'string' || target === 'string';
359
- const mayFail = inferred === 'string';
360
- const span = { line: 1, column: 1, end_line: 1, end_column: text.length + 1 };
361
- return {
362
- ...base,
363
- type_compatible: false,
364
- auto_coercible: coercible,
365
- coercion_may_fail: mayFail,
366
- ...(coercible
367
- ? {
368
- suggested_fix: {
369
- text: `to${capitalise(target)}(${text})`,
370
- description: `Convert ${inferred} to ${target} using to${capitalise(target)}()`,
371
- },
372
- }
373
- : {}),
374
- diagnostics: [
375
- {
376
- severity: coercible ? 'warning' : 'error',
377
- message: coercible
378
- ? `Expression returns '${inferred}' but target expects '${target}' (auto-coercion available)`
379
- : `Expression returns '${inferred}' but target expects '${target}'`,
380
- code: 'TYPE_MISMATCH',
381
- ...span,
382
- },
383
- ],
384
- };
385
- };
386
-
387
- /** `dpql/parse`: the AST for `text`, or the diagnostic the server reports. */
388
- export const mockParseDpql = (text: string, target?: string): IDpqlMockParseResult => {
389
- const trimmed = text.trim();
390
- try {
391
- const tokens = tokenize(trimmed);
392
- const node = parseTokens(tokens, trimmed.length + 1);
393
- // A lone value is wrapped in `value(...)`, which is how the server tells a
394
- // literal apart from an expression.
395
- const root: IDpqlMockNode = node.exp ? node : { exp: 'value', args: [node] };
396
- const inferred = inferDpqlMockType(root);
397
- return {
398
- success: true,
399
- expression: { is_expression: true, value: root },
400
- ...(target ? analyse(trimmed, inferred, target) : { inferred_type: inferred, diagnostics: [] }),
401
- } as IDpqlMockParseResult;
402
- } catch (err) {
403
- const column = err instanceof DpqlMockSyntaxError ? err.column : 1;
404
- return {
405
- success: false,
406
- diagnostics: [
407
- {
408
- severity: 'error',
409
- message: err instanceof Error ? err.message : String(err),
410
- code: 'DPQL-E001',
411
- line: 1,
412
- column,
413
- end_line: 1,
414
- end_column: column,
415
- },
416
- ],
417
- };
418
- }
419
- };
420
-
421
- // ─── Serialize and render ────────────────────────────────────────────────────
422
-
423
- const TEMPLATE_TOKEN = /^\$[A-Za-z_-][\w-]*:[\w.{}]+$/;
424
-
425
- /** An argument's own value, for a rendering that asks whether it is set. */
426
- const argumentValue = (arg: IDpqlMockNode | undefined): unknown =>
427
- arg && !arg.exp && !arg.is_expression ? arg.value : arg;
428
-
429
- const printLiteral = (value: unknown, readable: boolean): string => {
430
- if (value && typeof value === 'object' && 'raw' in value) {
431
- return String((value as { raw?: string }).raw);
432
- }
433
- if (typeof value === 'string') {
434
- // Serialized DPQL keeps a string a string; a readable rendering shows a
435
- // reference the string holds as the reference, which the server's does too.
436
- return readable && TEMPLATE_TOKEN.test(value) ? value : JSON.stringify(value);
437
- }
438
- return value === null || value === undefined ? 'null' : String(value);
439
- };
440
-
441
- /**
442
- * `parentPrecedence` is the context: a nested operator binding looser than it
443
- * is parenthesised. `0` never parenthesises (a call's own commas delimit its
444
- * arguments); `Infinity` always does, which is how the server substitutes an
445
- * argument into a `render_template`.
446
- */
447
- const printArg = (arg: IDpqlMockNode, parentPrecedence: number, readable: boolean): string => {
448
- if (arg.is_expression) {
449
- const inner = arg.value as IDpqlMockNode;
450
- const printed = printNode(inner, readable);
451
- const precedence = BINARY_PRECEDENCE[inner.exp ?? ''];
452
- return precedence !== undefined && precedence < parentPrecedence ? `(${printed})` : printed;
453
- }
454
- if (arg.exp) return printNode(arg, readable);
455
- return printLiteral(arg.value, readable);
456
- };
457
-
458
- /** `render_template` substitution, in the server's order. */
459
- const renderTemplate = (info: IExpressionSchema, args: IDpqlMockNode[]): string => {
460
- const argument = (n: number): string => {
461
- if (n < args.length) return printArg(args[n], Infinity, true);
462
- // A missing argument reads as its default, or as nothing.
463
- const fallback = info.args?.[n]?.default_value;
464
- return fallback === undefined ? '' : printLiteral(fallback, true);
465
- };
466
- return info
467
- .render_template!.split('$symbol')
468
- .join(info.symbol)
469
- .split('$args')
470
- .join(args.map((_, n) => argument(n)).join(', '))
471
- .replace(/\$arg\[(\d+)\]/g, (_, n) => argument(Number(n)))
472
- .replace(
473
- /\$\{arg\[(\d+)\](?:\s*\?([^:}]*):([^}]*))?\}/g,
474
- (_, n, whenSet = '', whenUnset = '') => {
475
- /* The argument decides when it was given, its default only when it was
476
- not — as the expression evaluates. An explicit `false` on a
477
- default-true argument reads as unset (Qore `5f3d9b491`). */
478
- const given = args[Number(n)];
479
- const isSet =
480
- given !== undefined ? argumentValue(given) : info.args?.[Number(n)]?.default_value;
481
- return isSet ? whenSet : whenUnset;
482
- }
483
- );
484
- };
485
-
486
- /** A node as `dpql/serialize` writes it: DPQL that parses back to the same node. */
487
- const serializeNode = (args: IDpqlMockNode[], name: string): string => {
488
- if (isInfixComparison(name, args.length) && WORD.test(symbolOf(name))) {
489
- // Not in the server's precedence table, so its operands are rendered in the
490
- // tightest context: any operator inside one is parenthesised.
491
- return `${printArg(args[0], Infinity, false)} ${symbolOf(name)} ${printArg(args[1], Infinity, false)}`;
492
- }
493
- return `${symbolOf(name)}(${args.map((arg) => printArg(arg, 0, false)).join(', ')})`;
494
- };
495
-
496
- /** A node as `dpql/renderExpression` reads it: a function by name, else its template. */
497
- const renderNode = (args: IDpqlMockNode[], name: string): string | undefined => {
498
- const info = CATALOGUE.get(name);
499
- if (info?.type === DET_FUNCTION) {
500
- return `${name}(${args.map((arg) => printArg(arg, 0, true)).join(', ')})`;
501
- }
502
- return info?.render_template ? renderTemplate(info, args) : undefined;
503
- };
504
-
505
- const printNode = (node: IDpqlMockNode, readable: boolean): string => {
506
- const args = node.args ?? [];
507
- const name = node.exp ?? '';
508
- if (name === 'value' && args.length === 1) return printArg(args[0], 0, readable);
509
- const rendered = readable ? renderNode(args, name) : undefined;
510
- if (rendered !== undefined) return rendered;
511
- const precedence = BINARY_PRECEDENCE[name];
512
- if (precedence !== undefined && args.length === 2) {
513
- return `${printArg(args[0], precedence, readable)} ${name} ${printArg(args[1], precedence + 1, readable)}`;
514
- }
515
- // The builder stores an AND/OR group as ONE node with every member as an
516
- // argument; it reads as the members joined by the operator.
517
- if ((name === '&&' || name === '||') && args.length !== 2) {
518
- return args.map((arg) => printArg(arg, precedence + 1, readable)).join(` ${name} `);
519
- }
520
- if (name === '!') return `!${printArg(args[0], 6, readable)}`;
521
- if (!readable) return serializeNode(args, name);
522
- // Any other catalogue operator reads as its arguments joined by its symbol.
523
- const info = CATALOGUE.get(name);
524
- if (info) {
525
- return args.length === 1 ?
526
- `${info.symbol} ${printArg(args[0], 0, true)}`
527
- : args.map((arg) => printArg(arg, precedence ?? 0, true)).join(` ${info.symbol} `);
528
- }
529
- return `${name}(${args.map((arg) => printArg(arg, 0, true)).join(', ')})`;
530
- };
531
-
532
- const rootOf = (expression: IDpqlMockNode | undefined): IDpqlMockNode =>
533
- expression?.value && !expression.exp ? (expression.value as IDpqlMockNode) : (expression ?? {});
534
-
535
- /** The richtext the server sends beside a rendering: each `$context:value` becomes a chip. */
536
- export const dpqlMockRichtext = (text: string) => {
537
- const children: unknown[] = [];
538
- const reference = /\$([A-Za-z_-][\w-]*):([\w.{}]+)/g;
539
- let last = 0;
540
- let match: RegExpExecArray | null;
541
- while ((match = reference.exec(text)) !== null) {
542
- if (match.index > last) children.push({ text: text.slice(last, match.index) });
543
- children.push({
544
- type: 'tag',
545
- value: match[0],
546
- label: match[2],
547
- children: [{ text: '' }],
548
- metadata: { displayName: `${capitalise(match[1])} Context` },
549
- });
550
- last = match.index + match[0].length;
551
- }
552
- if (last < text.length || !children.length) children.push({ text: text.slice(last) });
553
- return { type: 'richtext', value: [{ type: 'paragraph', children }] };
554
- };
555
-
556
- /** `dpql/serialize`: DPQL text that parses back to the same expression. */
557
- export const mockSerializeDpql = (expression: IDpqlMockNode | undefined) => {
558
- const dpql = printNode(rootOf(expression), false);
559
- return { dpql, richtext: dpqlMockRichtext(dpql) };
560
- };
561
-
562
- /** `dpql/renderExpression`: the readable rendering shown in previews and explanations. */
563
- export const mockRenderDpql = (expression: IDpqlMockNode | undefined) => {
564
- const rendered = printNode(rootOf(expression), true);
565
- return { rendered, richtext: dpqlMockRichtext(rendered) };
566
- };
@@ -1,126 +0,0 @@
1
- // Copyright 2026 Qore Technologies, s.r.o.
2
- // The DPQL language server every story talks to unless it brings its own.
3
- //
4
- // `.storybook/preview.tsx` starts it before each story, so an expression field,
5
- // a Preview or an Explain panel finds a server on the endpoint whatever story it
6
- // sits in — the same way `GLOBAL_STORY_MOCK_DATA` answers the REST requests
7
- // components make on their own. A story that needs different handlers starts
8
- // its own server on the URL and replaces this one (see `createMockLspServer`).
9
- // The answers come from `dpqlMockLanguage`, which follows the real server.
10
- import {
11
- createMockLspServer,
12
- DEFAULT_LSP_CAPABILITIES,
13
- IMockLspServer,
14
- MOCK_LSP_URL,
15
- TMockLspHandler,
16
- } from '../../smartEditor/__fixtures__/mockLspServer';
17
- import {
18
- IDpqlMockNode,
19
- mockParseDpql,
20
- mockRenderDpql,
21
- mockSerializeDpql,
22
- mockTokenizeDpql,
23
- } from './dpqlMockLanguage';
24
-
25
- /**
26
- * Every `dpql/parse` the mock answered, in order, for diagnosis.
27
- *
28
- * The type-analysis stories depend on the front end SENDING `target_type` —
29
- * the mock returns analysis only when it is present, exactly as the server
30
- * behaves. When one of those stories fails there are two very different
31
- * causes, and the rendered DOM cannot tell them apart: the request never
32
- * carried a target, or it did and the answer was not rendered. This records
33
- * which, and the story reports it in its assertion message so the answer
34
- * survives into a CI log.
35
- */
36
- export interface IDpqlMockParseCall {
37
- text: string;
38
- target?: string;
39
- analysed: boolean;
40
- }
41
- export const dpqlMockParseCalls: IDpqlMockParseCall[] = [];
42
-
43
- /** The template namespaces the server offers after a `$`. */
44
- const DPQL_MOCK_TEMPLATE_ITEMS = [
45
- { label: '$data:', insertText: '$data:', kind: 1, detail: 'template' },
46
- { label: '$config:', insertText: '$config:', kind: 1, detail: 'template' },
47
- { label: '$static:', insertText: '$static:', kind: 1, detail: 'template' },
48
- { label: '$timestamp:', insertText: '$timestamp:', kind: 1, detail: 'template' },
49
- ];
50
-
51
- /** The record fields the server offers after an `@`. */
52
- const DPQL_MOCK_FIELD_ITEMS = [
53
- { label: '@name', insertText: '@name', kind: 5, detail: 'string' },
54
- { label: '@status', insertText: '@status', kind: 5, detail: 'string' },
55
- ];
56
-
57
- const DPQL_MOCK_HANDLERS: Record<string, TMockLspHandler> = {
58
- /* Position-aware, as the real server is: `$` opens the template
59
- namespaces, `@` the record fields. Answering the same list whatever
60
- precedes the cursor would make a story asserting the `$` menu pass
61
- for a shell that asked in the wrong context — which is the only thing
62
- such a story is there to catch. (`DpqlEditor`'s own stories carry the
63
- full catalogue; this is the minimal subset.) */
64
- 'textDocument/completion': (msg, server) => {
65
- const position = msg.params?.position ?? { line: 0, character: 0 };
66
- const line = server.textOf(msg.params?.textDocument?.uri).split('\n')[position.line] ?? '';
67
- const head = line.slice(0, position.character);
68
- const sigil = head.match(/[@$][\w:.{}]*$/)?.[0]?.[0] ?? '';
69
- if (sigil === '$') {
70
- return { isIncomplete: false, items: DPQL_MOCK_TEMPLATE_ITEMS };
71
- }
72
- if (sigil === '@') {
73
- return { isIncomplete: false, items: DPQL_MOCK_FIELD_ITEMS };
74
- }
75
- return { isIncomplete: false, items: [] };
76
- },
77
-
78
- 'textDocument/semanticTokens/full': (msg, server) => ({
79
- data: mockTokenizeDpql(server.textOf(msg.params?.textDocument?.uri)),
80
- }),
81
-
82
- 'dpql/setContext': () => ({ fields: {} }),
83
-
84
- 'dpql/parse': (msg) => {
85
- const text = String(msg.params?.text ?? '');
86
- const target = msg.params?.target_type as string | undefined;
87
- dpqlMockParseCalls.push({ text: text.trim(), target, analysed: !!target });
88
- return mockParseDpql(text, target);
89
- },
90
-
91
- 'dpql/serialize': (msg) => mockSerializeDpql(msg.params?.expression as IDpqlMockNode),
92
-
93
- 'dpql/validate': () => ({ diagnostics: [] }),
94
-
95
- 'dpql/renderExpression': (msg) => mockRenderDpql(msg.params?.expression as IDpqlMockNode),
96
- };
97
-
98
- export interface IStartDpqlMockLspOptions {
99
- /** Handlers to use instead of, or beside, the default ones. */
100
- handlers?: Record<string, TMockLspHandler>;
101
- /** Per-method response delays in ms. */
102
- delays?: Record<string, number>;
103
- }
104
-
105
- /** Start the mock DPQL language server; returns the server and a teardown. */
106
- export const startDpqlMockLspServer = (
107
- options: IStartDpqlMockLspOptions = {}
108
- ): { lsp: IMockLspServer; stop: () => void } => {
109
- dpqlMockParseCalls.length = 0;
110
- const lsp = createMockLspServer(MOCK_LSP_URL, {
111
- capabilities: {
112
- ...DEFAULT_LSP_CAPABILITIES,
113
- textDocumentSync: { openClose: true, change: 2 },
114
- completionProvider: { triggerCharacters: ['@', '$', '.', ':'] },
115
- },
116
- // Unknown requests get an empty success so nothing hangs.
117
- defaultResult: {},
118
- delays: options.delays,
119
- handlers: { ...DPQL_MOCK_HANDLERS, ...options.handlers },
120
- });
121
- return { lsp, stop: () => lsp.close() };
122
- };
123
-
124
- /** Start the mock DPQL language server; returns a teardown function. */
125
- export const startDpqlMockLsp = (options?: IStartDpqlMockLspOptions): (() => void) =>
126
- startDpqlMockLspServer(options).stop;