@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,758 +0,0 @@
1
- // Copyright 2026 Qore Technologies, s.r.o.
2
-
3
- import { debounce } from 'lodash';
4
- import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
5
- import { BaseEditor, Transforms } from 'slate';
6
- import { HistoryEditor } from 'slate-history';
7
- import { ReactEditor } from 'slate-react';
8
- import { ILspCompletionItem } from '../../utils/lspClient.types';
9
- import { mapCompletionKindToIcon } from './helpers';
10
- import { ISlateConverter, ISlateElement, TCompletionInserter } from './types';
11
-
12
- const DEFAULT_TRIGGER_CHARS = new Set(['.', ':', ' ']);
13
- const DEBOUNCE_MS = 150;
14
- // Defer `isFetching=true` so the "Loading…" stub only shows for genuinely
15
- // slow responses; sub-250ms responses never set the flag.
16
- const LOADER_DELAY_MS = 250;
17
-
18
- const COMPLETION_KIND_LABELS: Record<number, string> = {
19
- 2: 'Methods',
20
- 3: 'Functions',
21
- 5: 'Fields',
22
- 6: 'Variables',
23
- 14: 'Keywords',
24
- 15: 'Snippets',
25
- };
26
-
27
- const COMPLETION_KIND_CHIPS: Record<number, string> = {
28
- 1: 'Text',
29
- 2: 'Method',
30
- 3: 'Function',
31
- 4: 'Constructor',
32
- 5: 'Field',
33
- 6: 'Variable',
34
- 7: 'Class',
35
- 8: 'Interface',
36
- 9: 'Module',
37
- 10: 'Property',
38
- 11: 'Unit',
39
- 12: 'Value',
40
- 13: 'Enum',
41
- 14: 'Keyword',
42
- 15: 'Snippet',
43
- 16: 'Color',
44
- 17: 'File',
45
- 18: 'Reference',
46
- 19: 'Folder',
47
- 20: 'EnumMember',
48
- 21: 'Constant',
49
- 22: 'Struct',
50
- 23: 'Event',
51
- 24: 'Operator',
52
- 25: 'TypeParameter',
53
- };
54
-
55
- export interface ICompletionDropdownItem {
56
- label: string;
57
- value: string;
58
- icon?: string;
59
- description?: string;
60
- documentation?: ILspCompletionItem['documentation'];
61
- kindLabel?: string;
62
- // Non-standard LSP field; Qonsole emits it on mutating verbs.
63
- warning?: string;
64
- raw: ILspCompletionItem;
65
- metadata?: {
66
- insertTextFormat?: number;
67
- retrigger?: boolean;
68
- kind?: number;
69
- };
70
- }
71
-
72
- export interface ICompletionGroup {
73
- label: string;
74
- items: ICompletionDropdownItem[];
75
- }
76
-
77
- export interface IUseLspAutocompleteOptions {
78
- /** Function that requests completions at a plain-text offset. */
79
- getCompletions: (plainText: string, offset: number) => Promise<ILspCompletionItem[]>;
80
- /** Whether the LSP session is ready to serve requests. */
81
- isReady: boolean;
82
- /** Characters that open the dropdown. Defaults to `{., :, space}`. */
83
- triggerCharacters?: Set<string>;
84
- /** Converter for Slate ↔ plain text and cursor-offset math. */
85
- converter: ISlateConverter;
86
- /**
87
- * Called when the user selects an item. Wrappers control whether the
88
- * value is inserted as a tag element, plain text, with re-trigger, etc.
89
- */
90
- inserter: TCompletionInserter;
91
- }
92
-
93
- export interface IUseLspAutocompleteResult {
94
- items: ICompletionDropdownItem[];
95
- groups: ICompletionGroup[];
96
- isOpen: boolean;
97
- // True while anchored at a chip (via `openAtChip`); keeps the popover
98
- // open with a stub even when `items` is empty, unlike normal typing.
99
- isReplaceMode: boolean;
100
- isFetching: boolean;
101
- focusedIndex: number;
102
- close: () => void;
103
- onSlateChange: (
104
- editor: BaseEditor & ReactEditor & HistoryEditor,
105
- nodes: ISlateElement[]
106
- ) => void;
107
- onItemSelect: (
108
- item: ICompletionDropdownItem,
109
- editor: BaseEditor & ReactEditor & HistoryEditor
110
- ) => void;
111
- // Open in "replace mode" anchored at an existing tag chip; `chipRect`
112
- // is the chip's viewport rect, `chipPath` is forwarded to the inserter.
113
- openAtChip: (
114
- editor: BaseEditor & ReactEditor & HistoryEditor,
115
- chipPath: number[],
116
- chipRect: { left: number; bottom: number }
117
- ) => void;
118
- // Drops the spurious close Reqore's outside-click detector fires on the
119
- // same click that opened the popover; without it the chip click would
120
- // open then immediately close.
121
- handleExternalClose: (open: boolean) => void;
122
- // Bumped on every (re)open; used as the ReqorePopover `key` to force a
123
- // fresh mount so its internal `showing` state stays in sync with ours.
124
- popoverKey: number;
125
- position: { top: number; left: number };
126
- }
127
-
128
- export function useLspAutocomplete(
129
- opts: IUseLspAutocompleteOptions
130
- ): IUseLspAutocompleteResult {
131
- const {
132
- getCompletions,
133
- isReady,
134
- triggerCharacters = DEFAULT_TRIGGER_CHARS,
135
- converter,
136
- inserter,
137
- } = opts;
138
-
139
- const [items, setItems] = useState<ICompletionDropdownItem[]>([]);
140
- const [isOpen, setIsOpen] = useState(false);
141
- const [position, setPosition] = useState({ top: 0, left: 0 });
142
- const [focusedIndex, setFocusedIndex] = useState(0);
143
- const [isFetching, setIsFetching] = useState(false);
144
- // Handle for the deferred `setIsFetching(true)`; cleared on resolve or
145
- // close so the loader never flashes on a fast-resolved request.
146
- const fetchingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
147
- // Partial token typed since the trigger opened the dropdown; the list
148
- // narrows to items whose `filterText || label` matches it.
149
- const [filterPrefix, setFilterPrefix] = useState('');
150
- const focusedIndexRef = useRef(0);
151
- const editorRef = useRef<(BaseEditor & ReactEditor & HistoryEditor) | null>(null);
152
- // "Replace mode": the user clicked a chip and the chosen completion
153
- // should replace that node. Holds the chip's Slate path, consumed by
154
- // the inserter via `ctx.replacementPath`.
155
- const replacingChipPathRef = useRef<number[] | null>(null);
156
- // Holds a chip-click request made before `isReady`; fired by the effect
157
- // below once the session connects so the click isn't dropped.
158
- const pendingChipRequestRef = useRef<{
159
- plainText: string;
160
- offset: number;
161
- } | null>(null);
162
- // Timestamp of the last `openAtChip`; `handleExternalClose` uses it to
163
- // suppress the close Reqore fires on the same mousedown that opened it.
164
- const justOpenedAtChipAtRef = useRef(0);
165
- const [isReplaceMode, setIsReplaceMode] = useState(false);
166
- // See `popoverKey` in the result interface — forces a popover re-mount.
167
- const [popoverKey, setPopoverKey] = useState(0);
168
-
169
- useEffect(() => {
170
- focusedIndexRef.current = focusedIndex;
171
- }, [focusedIndex]);
172
-
173
- // Server completions omit the sigil from `label`/`filterText` (Qonsole
174
- // returns `list` not `/list`, DPQL `name` not `@name`), so strip it off
175
- // both sides before matching or the filter hides everything after the
176
- // trigger char.
177
- const filteredItems = useMemo(() => {
178
- if (!filterPrefix) return items;
179
- // Strip the leading sigil AND any member-access/namespace prefix up to
180
- // the last `.`/`:`. The token deliberately includes `.`/`:` (for paths
181
- // like `$data:state.field`), but filtering wants only the trailing
182
- // word — else after `arr.` typing `for` yields needle `arr.for`, which
183
- // matches no `forEach`-style label and hides every suggestion.
184
- const segment = filterPrefix
185
- .replace(/^[@$/-]+/, '')
186
- .replace(/^.*[.:]/, '');
187
- const needle = segment.toLowerCase();
188
- if (!needle) return items;
189
- return items.filter((item) => {
190
- const haystack = (item.raw.filterText ?? item.label)
191
- .toLowerCase()
192
- .replace(/^[@$/-]+/, '');
193
- return haystack.startsWith(needle) || haystack.includes(needle);
194
- });
195
- }, [items, filterPrefix]);
196
-
197
- useEffect(() => {
198
- if (focusedIndex >= filteredItems.length) {
199
- setFocusedIndex(Math.max(0, filteredItems.length - 1));
200
- }
201
- }, [filteredItems.length, focusedIndex]);
202
-
203
- const groups = useMemo((): ICompletionGroup[] => {
204
- if (filteredItems.length === 0) return [];
205
-
206
- // When the server populates `sortText` it has already ranked items;
207
- // use the flat list directly rather than re-ordering across kinds.
208
- // Qonsole takes this path; DPQL has no sortText and falls through.
209
- const hasSortText = filteredItems.some((i) => i.raw.sortText);
210
- if (hasSortText) {
211
- return [{ label: '', items: filteredItems }];
212
- }
213
-
214
- const groupMap = new Map<string, ICompletionDropdownItem[]>();
215
- for (const item of filteredItems) {
216
- const kind = item.metadata?.kind;
217
- const groupLabel = (kind && COMPLETION_KIND_LABELS[kind]) || 'Other';
218
- if (!groupMap.has(groupLabel)) {
219
- groupMap.set(groupLabel, []);
220
- }
221
- groupMap.get(groupLabel)!.push(item);
222
- }
223
- if (groupMap.size <= 1) {
224
- return [{ label: '', items: filteredItems }];
225
- }
226
- return Array.from(groupMap.entries()).map(([label, groupItems]) => ({
227
- label,
228
- items: groupItems,
229
- }));
230
- }, [filteredItems]);
231
-
232
- // Fires the LSP request and commits results into state. Separate from
233
- // the debounced wrapper so imperative callers (`openAtChip`) can bypass
234
- // the typing debounce.
235
- const performCompletionRequest = useCallback(
236
- async (
237
- plainText: string,
238
- offset: number,
239
- opts: { eager?: boolean } = {}
240
- ) => {
241
- // `eager` (default) opens the popover immediately, for explicit
242
- // triggers where items are coming. Autosuggest passes `eager: false`
243
- // so the popover stays closed until items arrive and doesn't flicker
244
- // in no-suggestion spots (inside a string, a dead-end identifier).
245
- const { eager = true } = opts;
246
- if (!isReady) return;
247
- // Re-measure the caret now that the debounce expired and Slate has
248
- // committed the char to the DOM. The earlier measure in
249
- // `onSlateChangeImpl` can fire before the DOM commit, where
250
- // `toDOMRange` throws or returns a stale range and the popover lands
251
- // at {top: 0, left: 0}.
252
- const editor = editorRef.current;
253
- if (editor && editor.selection) {
254
- try {
255
- const domRange = ReactEditor.toDOMRange(editor, editor.selection);
256
- const rect = domRange.getBoundingClientRect();
257
- // A 0,0,0,0 rect means the DOM still isn't ready — keep the
258
- // earlier measure rather than slamming back to origin.
259
- if (rect.width || rect.height || rect.left || rect.top) {
260
- setPosition({ left: rect.left, top: rect.bottom });
261
- }
262
- } catch {
263
- // Editor unmounted mid-request.
264
- }
265
- }
266
- if (eager) {
267
- setIsOpen(true);
268
- if (fetchingTimerRef.current !== null) {
269
- clearTimeout(fetchingTimerRef.current);
270
- }
271
- fetchingTimerRef.current = setTimeout(() => {
272
- setIsFetching(true);
273
- fetchingTimerRef.current = null;
274
- }, LOADER_DELAY_MS);
275
- }
276
- try {
277
- const lspItems = await getCompletions(plainText, offset);
278
- if (lspItems.length === 0) {
279
- setItems([]);
280
- // Replace mode keeps the popover open to show "No alternatives".
281
- if (!replacingChipPathRef.current) {
282
- setIsOpen(false);
283
- }
284
- return;
285
- }
286
- // Sort by `sortText` when present (Qonsole encodes rank into it);
287
- // otherwise preserve server order, as DPQL doesn't populate it.
288
- const sortedLspItems = lspItems.some((i) => i.sortText)
289
- ? [...lspItems].sort((a, b) =>
290
- (a.sortText ?? a.label).localeCompare(b.sortText ?? b.label)
291
- )
292
- : lspItems;
293
-
294
- const mapped: ICompletionDropdownItem[] = sortedLspItems.map((item) => {
295
- const insertText = item.insertText || item.label;
296
- return {
297
- label: item.label,
298
- value: insertText,
299
- icon: mapCompletionKindToIcon(item.kind),
300
- description: item.detail,
301
- documentation: item.documentation,
302
- kindLabel:
303
- item.kind !== undefined
304
- ? COMPLETION_KIND_CHIPS[item.kind]
305
- : undefined,
306
- warning: item.warning,
307
- raw: item,
308
- metadata: {
309
- insertTextFormat: item.insertTextFormat,
310
- retrigger: insertText.endsWith(':'),
311
- kind: item.kind,
312
- },
313
- };
314
- });
315
- setItems(mapped);
316
- setFocusedIndex(0);
317
- setIsOpen(true);
318
- } catch {
319
- setItems([]);
320
- setIsOpen(false);
321
- } finally {
322
- if (fetchingTimerRef.current !== null) {
323
- clearTimeout(fetchingTimerRef.current);
324
- fetchingTimerRef.current = null;
325
- }
326
- setIsFetching(false);
327
- }
328
- },
329
- [getCompletions, isReady]
330
- );
331
-
332
- const requestCompletions = useMemo(
333
- () => debounce(performCompletionRequest, DEBOUNCE_MS),
334
- [performCompletionRequest]
335
- );
336
-
337
- useEffect(() => {
338
- return () => {
339
- requestCompletions.cancel();
340
- };
341
- }, [requestCompletions]);
342
-
343
- const close = useCallback(() => {
344
- setIsOpen(false);
345
- setItems([]);
346
- setFocusedIndex(0);
347
- setFilterPrefix('');
348
- setIsReplaceMode(false);
349
- setIsFetching(false);
350
- if (fetchingTimerRef.current !== null) {
351
- clearTimeout(fetchingTimerRef.current);
352
- fetchingTimerRef.current = null;
353
- }
354
- replacingChipPathRef.current = null;
355
- pendingChipRequestRef.current = null;
356
- requestCompletions.cancel();
357
- }, [requestCompletions]);
358
-
359
- const positionTrigger = useCallback(
360
- (editor: BaseEditor & ReactEditor & HistoryEditor) => {
361
- if (!editor.selection) return;
362
- try {
363
- const domRange = ReactEditor.toDOMRange(editor, editor.selection);
364
- const rect = domRange.getBoundingClientRect();
365
- // Viewport coordinates (+ `position: fixed` on the wrapper) avoid
366
- // parent-offset math that broke when the editor sat in a padded
367
- // panel and Popper overlapped the popover onto the input.
368
- setPosition({
369
- left: rect.left,
370
- top: rect.bottom,
371
- });
372
- } catch {
373
- // Editor may not be focused / mounted.
374
- }
375
- },
376
- []
377
- );
378
-
379
- // Scan back from the cursor to the start offset of the current token
380
- // (a word sequence optionally prefixed with `@` / `$` / `/`).
381
- const findTokenStart = useCallback(
382
- (plainText: string, cursorOffset: number): number => {
383
- let i = cursorOffset - 1;
384
- while (i >= 0 && /[\w.:{}-]/.test(plainText[i])) {
385
- i--;
386
- }
387
- if (i >= 0 && /[@$/-]/.test(plainText[i])) {
388
- i--;
389
- }
390
- return i + 1;
391
- },
392
- []
393
- );
394
-
395
- // Live ref to the change handler defined below — selectItem's retrigger
396
- // path runs in a timeout and must see the CURRENT impl, not whatever its
397
- // own (intentionally narrow) deps closed over. Same workaround as
398
- // `stableOnTagClick` in SmartEditor.
399
- const onSlateChangeImplRef = useRef<
400
- (editor: BaseEditor & ReactEditor & HistoryEditor, nodes: ISlateElement[]) => void
401
- >(() => undefined);
402
-
403
- const selectItem = useCallback(
404
- (item: ICompletionDropdownItem) => {
405
- const editor = editorRef.current;
406
- if (!editor) return;
407
- const replacementPath = replacingChipPathRef.current;
408
- // The typing path needs a live selection so the inserter knows how
409
- // much partial token to delete; replace mode works off a path.
410
- if (!editor.selection && !replacementPath) return;
411
-
412
- const nodes = editor.children as ISlateElement[];
413
- const plainText = converter.fromSlateNodes(nodes);
414
- const cursorOffset = editor.selection
415
- ? converter.selectionToOffset(
416
- nodes,
417
- editor.selection.anchor.path as number[],
418
- editor.selection.anchor.offset
419
- )
420
- : converter.selectionToOffset(nodes, replacementPath as number[], 0);
421
-
422
- inserter(item.raw, editor, {
423
- plainText,
424
- cursorOffset,
425
- replacementPath: replacementPath ?? undefined,
426
- });
427
- close();
428
- // Re-trigger completions for partial items (e.g. `$timestamp:` shows
429
- // sub-completions for the value).
430
- if (item.metadata?.retrigger) {
431
- setTimeout(() => {
432
- const newNodes = editor.children as ISlateElement[];
433
- onSlateChangeImplRef.current(editor, newNodes);
434
- }, 50);
435
- }
436
- },
437
- [close, inserter, converter]
438
- );
439
-
440
- useEffect(() => {
441
- // Keyboard nav operates on the filtered list, not the raw items.
442
- if (!isOpen || filteredItems.length === 0) return undefined;
443
- const handleKeyDown = (e: KeyboardEvent) => {
444
- switch (e.key) {
445
- case 'ArrowDown':
446
- e.preventDefault();
447
- e.stopPropagation();
448
- setFocusedIndex((prev) => Math.min(prev + 1, filteredItems.length - 1));
449
- break;
450
- case 'ArrowUp':
451
- e.preventDefault();
452
- e.stopPropagation();
453
- setFocusedIndex((prev) => Math.max(prev - 1, 0));
454
- break;
455
- case 'Enter':
456
- case 'Tab': {
457
- e.preventDefault();
458
- e.stopPropagation();
459
- const item = filteredItems[focusedIndexRef.current];
460
- if (item && editorRef.current) {
461
- selectItem(item);
462
- }
463
- break;
464
- }
465
- case 'Escape':
466
- e.preventDefault();
467
- e.stopPropagation();
468
- close();
469
- break;
470
- default: {
471
- // `commitCharacters`: typing a commit char accepts the item and
472
- // inserts the char (VS Code semantics).
473
- if (e.key.length !== 1) break;
474
- const focusedItem = filteredItems[focusedIndexRef.current];
475
- const commits = focusedItem?.raw.commitCharacters;
476
- if (!commits || !commits.includes(e.key)) break;
477
- const editor = editorRef.current;
478
- if (!editor) break;
479
- e.preventDefault();
480
- e.stopPropagation();
481
- // Don't double-insert when the server's edit already ends with
482
- // the committed char (e.g. `--limit=` for an `=`-committed flag).
483
- const inserted =
484
- focusedItem.raw.textEdit?.newText ??
485
- focusedItem.raw.insertText ??
486
- focusedItem.raw.label;
487
- selectItem(focusedItem);
488
- if (!inserted.endsWith(e.key)) {
489
- Transforms.insertText(editor, e.key);
490
- }
491
- break;
492
- }
493
- }
494
- };
495
- document.addEventListener('keydown', handleKeyDown, true);
496
- return () => document.removeEventListener('keydown', handleKeyDown, true);
497
- }, [isOpen, filteredItems, close, selectItem]);
498
-
499
- /**
500
- * Opens, narrows or closes the completions for what the editor holds at its caret, after a content
501
- * edit: a trigger character just typed, typing inside a sigil token, narrowing an open list, or
502
- * autosuggest inside a bare identifier.
503
- */
504
- const completeAtCaret = useCallback(
505
- (editor: BaseEditor & ReactEditor & HistoryEditor, nodes: ISlateElement[]) => {
506
- if (!editor.selection) {
507
- close();
508
- return;
509
- }
510
- const { anchor } = editor.selection;
511
- const plainText = converter.fromSlateNodes(nodes);
512
- const cursorOffset = converter.selectionToOffset(
513
- nodes,
514
- anchor.path as number[],
515
- anchor.offset
516
- );
517
- const charBefore = cursorOffset > 0 ? plainText[cursorOffset - 1] : '';
518
-
519
- // After accepting a tag completion the cursor sits at offset 0 of a
520
- // fresh text node right after the tag, which in plain text looks
521
- // mid-`@field` token and would re-fire completions. Detect it via
522
- // Slate structure (prev sibling is a `tag` element) and don't reopen.
523
- const cursorPath = anchor.path as number[];
524
- if (
525
- anchor.offset === 0 &&
526
- cursorPath.length === 2 &&
527
- cursorPath[1] > 0
528
- ) {
529
- const paragraph = nodes[cursorPath[0]];
530
- const prevSibling = paragraph?.children[cursorPath[1] - 1];
531
- if (
532
- prevSibling &&
533
- 'type' in prevSibling &&
534
- (prevSibling as ISlateElement).type === 'tag'
535
- ) {
536
- if (isOpen) {
537
- close();
538
- }
539
- return;
540
- }
541
- }
542
-
543
- if (triggerCharacters.has(charBefore)) {
544
- setFilterPrefix('');
545
- positionTrigger(editor);
546
- requestCompletions(plainText, cursorOffset);
547
- return;
548
- }
549
-
550
- // Typing inside a sigil-prefixed token.
551
- const tokenStart = findTokenStart(plainText, cursorOffset);
552
- const tokenPrefix = plainText[tokenStart];
553
- if (tokenPrefix && /[@$/]/.test(tokenPrefix)) {
554
- setFilterPrefix(plainText.slice(tokenStart, cursorOffset));
555
- positionTrigger(editor);
556
- requestCompletions(plainText, cursorOffset);
557
- return;
558
- }
559
-
560
- // Dropdown open and typing alphanumeric — keep narrowing.
561
- if (isOpen && /\w/.test(charBefore)) {
562
- setFilterPrefix(plainText.slice(tokenStart, cursorOffset));
563
- positionTrigger(editor);
564
- requestCompletions(plainText, cursorOffset);
565
- return;
566
- }
567
-
568
- // Autosuggest inside a bare identifier: quiet request. The DPQL
569
- // server is position-aware — it returns `[]` inside strings etc., so
570
- // `eager: false` keeps the dropdown from flickering where there's
571
- // nothing to suggest.
572
- if (/\w/.test(charBefore) && tokenPrefix && /\w/.test(tokenPrefix)) {
573
- setFilterPrefix(plainText.slice(tokenStart, cursorOffset));
574
- positionTrigger(editor);
575
- requestCompletions(plainText, cursorOffset, { eager: false });
576
- return;
577
- }
578
-
579
- close();
580
- },
581
- [isOpen, close, findTokenStart, positionTrigger, requestCompletions, triggerCharacters, converter]
582
- );
583
-
584
- /* An edit made before the session is ready - typing `$` or `@` while the connection is still being
585
- made, or its context bound - would otherwise be dropped: the list is closed and nothing asks again,
586
- so the trigger the author typed never opens anything. The editor is kept, and once the session is
587
- ready the completions are asked for what it holds then, as for a chip click (see
588
- `pendingChipRequestRef`). */
589
- const pendingTypingRef = useRef<(BaseEditor & ReactEditor & HistoryEditor) | null>(null);
590
-
591
- const onSlateChangeImpl = useCallback(
592
- (
593
- editor: BaseEditor & ReactEditor & HistoryEditor,
594
- nodes: ISlateElement[]
595
- ) => {
596
- editorRef.current = editor;
597
- if (!editor.selection || !isReady) {
598
- // Don't tear down replace mode just because the click that
599
- // opened it momentarily left the selection null — clicking a
600
- // void inline can do that.
601
- if (replacingChipPathRef.current) return;
602
- // a content edit before the session is ready is answered once it is (see `pendingTypingRef`)
603
- if (editor.selection && editor.operations.some((op) => op.type !== 'set_selection')) {
604
- pendingTypingRef.current = editor;
605
- }
606
- close();
607
- return;
608
- }
609
- pendingTypingRef.current = null;
610
- // `onChange` fires for content edits AND selection-only changes
611
- // (cursor moves, click-to-focus). Only OPEN on content edits — else
612
- // clicking after a trigger char (e.g. the space in `/list services `)
613
- // pops the dropdown without the user typing. An all-`set_selection`
614
- // op batch is selection-only.
615
- const isContentChange = editor.operations.some(
616
- (op) => op.type !== 'set_selection'
617
- );
618
- if (!isContentChange) {
619
- // Replace mode anchors on a chip; the selection echo from the
620
- // opening click must not close it (outside-click handler does).
621
- if (isOpen && !replacingChipPathRef.current) {
622
- close();
623
- }
624
- return;
625
- }
626
- // A content edit in replace mode means the user typed instead of
627
- // picking a replacement — fall back to normal flow.
628
- if (replacingChipPathRef.current) {
629
- close();
630
- return;
631
- }
632
-
633
- completeAtCaret(editor, nodes);
634
- },
635
- [isReady, isOpen, close, completeAtCaret]
636
- );
637
-
638
- // Answer an edit made before the session was ready, for what the editor holds now.
639
- useEffect(() => {
640
- const editor = pendingTypingRef.current;
641
- if (!isReady || !editor) return;
642
- pendingTypingRef.current = null;
643
- completeAtCaret(editor, editor.children as ISlateElement[]);
644
- }, [isReady, completeAtCaret]);
645
- onSlateChangeImplRef.current = onSlateChangeImpl;
646
-
647
- const onItemSelect = useCallback(
648
- (
649
- item: ICompletionDropdownItem,
650
- editor: BaseEditor & ReactEditor & HistoryEditor
651
- ) => {
652
- editorRef.current = editor;
653
- selectItem(item);
654
- },
655
- [selectItem]
656
- );
657
-
658
- // Imperative entry for the "replace this chip" flow. Anchors at the
659
- // chip's viewport rect and fires a request immediately, bypassing the
660
- // typing debounce.
661
- const openAtChip = useCallback(
662
- (
663
- editor: BaseEditor & ReactEditor & HistoryEditor,
664
- chipPath: number[],
665
- chipRect: { left: number; bottom: number }
666
- ) => {
667
- // Clicking the chip the dropdown is already anchored to closes it;
668
- // without this the outside-click suppression below re-opens it on
669
- // every chip click.
670
- const prevPath = replacingChipPathRef.current;
671
- if (
672
- isOpen &&
673
- prevPath &&
674
- prevPath.length === chipPath.length &&
675
- prevPath.every((seg, i) => seg === chipPath[i])
676
- ) {
677
- close();
678
- return;
679
- }
680
- editorRef.current = editor;
681
- replacingChipPathRef.current = chipPath;
682
- justOpenedAtChipAtRef.current = Date.now();
683
- setFilterPrefix('');
684
- setPosition({ left: chipRect.left, top: chipRect.bottom });
685
- // Pre-open for immediate feedback even before the LSP is ready (the
686
- // popover shows a "Connecting…" stub); items populate on response.
687
- setItems([]);
688
- setFocusedIndex(0);
689
- setIsReplaceMode(true);
690
- setIsOpen(true);
691
- setPopoverKey((k) => k + 1);
692
- const nodes = editor.children as ISlateElement[];
693
- const plainText = converter.fromSlateNodes(nodes);
694
- // Request at the END of the chip's span — the natural "what could
695
- // complete this token" position, so the server returns swappable
696
- // candidates.
697
- const chipChildIdx = chipPath[chipPath.length - 1];
698
- const paragraph = nodes[chipPath[0]];
699
- const chipNode = paragraph?.children?.[chipChildIdx];
700
- const chipText =
701
- chipNode && 'value' in chipNode
702
- ? String((chipNode as ISlateElement).value ?? '')
703
- : '';
704
- const chipStart = converter.selectionToOffset(nodes, chipPath, 0);
705
- const chipEnd = chipStart + chipText.length;
706
- if (isReady) {
707
- performCompletionRequest(plainText, chipEnd);
708
- } else {
709
- pendingChipRequestRef.current = { plainText, offset: chipEnd };
710
- }
711
- },
712
- [isReady, isOpen, close, converter, performCompletionRequest]
713
- );
714
-
715
- const handleExternalClose = useCallback(
716
- (open: boolean) => {
717
- if (open) return;
718
- // Within ~300ms of `openAtChip`, this close is the popover reacting
719
- // to the same mousedown that opened it — ignore.
720
- if (Date.now() - justOpenedAtChipAtRef.current < 300) {
721
- return;
722
- }
723
- close();
724
- },
725
- [close]
726
- );
727
-
728
- // Fire a deferred chip-click request once the session connects — covers
729
- // a click made during the initialize handshake.
730
- useEffect(() => {
731
- if (
732
- isReady &&
733
- pendingChipRequestRef.current &&
734
- replacingChipPathRef.current
735
- ) {
736
- const { plainText, offset } = pendingChipRequestRef.current;
737
- pendingChipRequestRef.current = null;
738
- performCompletionRequest(plainText, offset);
739
- }
740
- }, [isReady, performCompletionRequest]);
741
-
742
- return {
743
- // Expose the post-filter list as `items`; `groups` is filter-derived too.
744
- items: filteredItems,
745
- groups,
746
- isOpen,
747
- isReplaceMode,
748
- isFetching,
749
- focusedIndex,
750
- close,
751
- onSlateChange: onSlateChangeImpl,
752
- onItemSelect,
753
- openAtChip,
754
- handleExternalClose,
755
- popoverKey,
756
- position,
757
- };
758
- }