@qoretechnologies/reqraft 0.10.65 → 0.10.66-pr.137.ga1983bf

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 (873) hide show
  1. package/README.md +53 -1
  2. package/dist/components/Description/AllowedValuesHelp.d.ts +20 -0
  3. package/dist/components/Description/AllowedValuesHelp.d.ts.map +1 -0
  4. package/dist/components/Description/AllowedValuesHelp.js +86 -0
  5. package/dist/components/Description/AllowedValuesHelp.js.map +1 -0
  6. package/dist/components/Description/describedControl.d.ts +54 -0
  7. package/dist/components/Description/describedControl.d.ts.map +1 -0
  8. package/dist/components/Description/describedControl.js +81 -0
  9. package/dist/components/Description/describedControl.js.map +1 -0
  10. package/dist/components/Description/index.d.ts.map +1 -1
  11. package/dist/components/Description/index.js +3 -2
  12. package/dist/components/Description/index.js.map +1 -1
  13. package/dist/components/colorValue/colorValue.d.ts +59 -0
  14. package/dist/components/colorValue/colorValue.d.ts.map +1 -0
  15. package/dist/components/colorValue/colorValue.js +245 -0
  16. package/dist/components/colorValue/colorValue.js.map +1 -0
  17. package/dist/components/colorValue/index.d.ts +34 -0
  18. package/dist/components/colorValue/index.d.ts.map +1 -0
  19. package/dist/components/colorValue/index.js +136 -0
  20. package/dist/components/colorValue/index.js.map +1 -0
  21. package/dist/components/colorValue/labels.d.ts +12 -0
  22. package/dist/components/colorValue/labels.d.ts.map +1 -0
  23. package/dist/components/colorValue/labels.js +11 -0
  24. package/dist/components/colorValue/labels.js.map +1 -0
  25. package/dist/components/composer/Composer.d.ts +1 -1
  26. package/dist/components/composer/Composer.d.ts.map +1 -1
  27. package/dist/components/composer/Composer.js +2 -2
  28. package/dist/components/composer/Composer.js.map +1 -1
  29. package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
  30. package/dist/components/dpqlEditor/DpqlEditor.js +156 -10
  31. package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
  32. package/dist/components/dpqlEditor/dpqlCompletions.d.ts +39 -0
  33. package/dist/components/dpqlEditor/dpqlCompletions.d.ts.map +1 -0
  34. package/dist/components/dpqlEditor/dpqlCompletions.js +294 -0
  35. package/dist/components/dpqlEditor/dpqlCompletions.js.map +1 -0
  36. package/dist/components/dpqlEditor/dpqlHelpers.d.ts +54 -5
  37. package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
  38. package/dist/components/dpqlEditor/dpqlHelpers.js +413 -63
  39. package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
  40. package/dist/components/dpqlEditor/dpqlInserter.d.ts.map +1 -1
  41. package/dist/components/dpqlEditor/dpqlInserter.js +67 -29
  42. package/dist/components/dpqlEditor/dpqlInserter.js.map +1 -1
  43. package/dist/components/dpqlEditor/dpqlTags.d.ts +17 -7
  44. package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
  45. package/dist/components/dpqlEditor/dpqlTags.js +44 -17
  46. package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
  47. package/dist/components/dpqlEditor/types.d.ts +94 -8
  48. package/dist/components/dpqlEditor/types.d.ts.map +1 -1
  49. package/dist/components/dpqlEditor/useDpqlSession.d.ts +7 -2
  50. package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
  51. package/dist/components/dpqlEditor/useDpqlSession.js +49 -17
  52. package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
  53. package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
  54. package/dist/components/form/engine/CompactRow.js +322 -124
  55. package/dist/components/form/engine/CompactRow.js.map +1 -1
  56. package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
  57. package/dist/components/form/engine/CompactToolbar.js +29 -3
  58. package/dist/components/form/engine/CompactToolbar.js.map +1 -1
  59. package/dist/components/form/engine/FormEngine.d.ts +66 -11
  60. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  61. package/dist/components/form/engine/FormEngine.js +570 -176
  62. package/dist/components/form/engine/FormEngine.js.map +1 -1
  63. package/dist/components/form/engine/HiddenFieldsNote.d.ts +28 -0
  64. package/dist/components/form/engine/HiddenFieldsNote.d.ts.map +1 -0
  65. package/dist/components/form/engine/HiddenFieldsNote.js +32 -0
  66. package/dist/components/form/engine/HiddenFieldsNote.js.map +1 -0
  67. package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
  68. package/dist/components/form/engine/OptionFieldMessages.js +25 -3
  69. package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
  70. package/dist/components/form/engine/OptionsHelpDialog.d.ts.map +1 -1
  71. package/dist/components/form/engine/OptionsHelpDialog.js +19 -2
  72. package/dist/components/form/engine/OptionsHelpDialog.js.map +1 -1
  73. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts +2 -2
  74. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
  75. package/dist/components/form/engine/_structuredData/SchemaDataView.js +12 -6
  76. package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
  77. package/dist/components/form/engine/compactRowContext.d.ts +30 -1
  78. package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
  79. package/dist/components/form/engine/compactRowContext.js.map +1 -1
  80. package/dist/components/form/engine/compactRowStyles.d.ts +59 -22
  81. package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
  82. package/dist/components/form/engine/compactRowStyles.js +102 -55
  83. package/dist/components/form/engine/compactRowStyles.js.map +1 -1
  84. package/dist/components/form/engine/compactToolbarColors.d.ts +16 -0
  85. package/dist/components/form/engine/compactToolbarColors.d.ts.map +1 -0
  86. package/dist/components/form/engine/compactToolbarColors.js +21 -0
  87. package/dist/components/form/engine/compactToolbarColors.js.map +1 -0
  88. package/dist/components/form/engine/inheritProps.d.ts +29 -0
  89. package/dist/components/form/engine/inheritProps.d.ts.map +1 -0
  90. package/dist/components/form/engine/inheritProps.js +43 -0
  91. package/dist/components/form/engine/inheritProps.js.map +1 -0
  92. package/dist/components/form/engine/operatorSummary.d.ts +26 -0
  93. package/dist/components/form/engine/operatorSummary.d.ts.map +1 -0
  94. package/dist/components/form/engine/operatorSummary.js +35 -0
  95. package/dist/components/form/engine/operatorSummary.js.map +1 -0
  96. package/dist/components/form/engine/readFirst.d.ts +24 -8
  97. package/dist/components/form/engine/readFirst.d.ts.map +1 -1
  98. package/dist/components/form/engine/readFirst.js +77 -109
  99. package/dist/components/form/engine/readFirst.js.map +1 -1
  100. package/dist/components/form/engine/readFirstColors.d.ts +30 -0
  101. package/dist/components/form/engine/readFirstColors.d.ts.map +1 -0
  102. package/dist/components/form/engine/readFirstColors.js +51 -0
  103. package/dist/components/form/engine/readFirstColors.js.map +1 -0
  104. package/dist/components/form/engine/rowFocus.d.ts +2 -0
  105. package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
  106. package/dist/components/form/engine/rowFocus.js +26 -3
  107. package/dist/components/form/engine/rowFocus.js.map +1 -1
  108. package/dist/components/form/engine/typeChoices.d.ts +1 -1
  109. package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -1
  110. package/dist/components/form/engine/variants/VariantCalmTable.js +2 -1
  111. package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -1
  112. package/dist/components/form/engine/variants/VariantCards.d.ts.map +1 -1
  113. package/dist/components/form/engine/variants/VariantCards.js +2 -1
  114. package/dist/components/form/engine/variants/VariantCards.js.map +1 -1
  115. package/dist/components/form/engine/variants/VariantFocus.js +1 -1
  116. package/dist/components/form/engine/variants/VariantFocus.js.map +1 -1
  117. package/dist/components/form/engine/variants/VariantMinimal.d.ts.map +1 -1
  118. package/dist/components/form/engine/variants/VariantMinimal.js +2 -1
  119. package/dist/components/form/engine/variants/VariantMinimal.js.map +1 -1
  120. package/dist/components/form/engine/variants/variantParts.d.ts +1 -1
  121. package/dist/components/form/engine/variants/variantParts.d.ts.map +1 -1
  122. package/dist/components/form/engine/variants/variantParts.js +25 -17
  123. package/dist/components/form/engine/variants/variantParts.js.map +1 -1
  124. package/dist/components/form/expressions/DpqlRendering.d.ts +1 -1
  125. package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -1
  126. package/dist/components/form/expressions/DpqlRendering.js +7 -6
  127. package/dist/components/form/expressions/DpqlRendering.js.map +1 -1
  128. package/dist/components/form/expressions/ExpressionField.d.ts +67 -3
  129. package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
  130. package/dist/components/form/expressions/ExpressionField.js +536 -114
  131. package/dist/components/form/expressions/ExpressionField.js.map +1 -1
  132. package/dist/components/form/expressions/argumentPresence.d.ts +14 -0
  133. package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -1
  134. package/dist/components/form/expressions/argumentPresence.js +16 -1
  135. package/dist/components/form/expressions/argumentPresence.js.map +1 -1
  136. package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
  137. package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
  138. package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
  139. package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
  140. package/dist/components/form/expressions/builder/argumentLabel.js +30 -11
  141. package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
  142. package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
  143. package/dist/components/form/expressions/builder/argumentWrapper.js +3 -1
  144. package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
  145. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts +9 -0
  146. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
  147. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +30 -27
  148. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -1
  149. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +1 -1
  150. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -1
  151. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +7 -5
  152. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
  153. package/dist/components/form/expressions/builder/index.d.ts +34 -2
  154. package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
  155. package/dist/components/form/expressions/builder/index.js +170 -80
  156. package/dist/components/form/expressions/builder/index.js.map +1 -1
  157. package/dist/components/form/expressions/builder/item.d.ts +6 -2
  158. package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
  159. package/dist/components/form/expressions/builder/item.js +19 -5
  160. package/dist/components/form/expressions/builder/item.js.map +1 -1
  161. package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
  162. package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
  163. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts +11 -0
  164. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts.map +1 -0
  165. package/dist/components/form/expressions/dpqlMockRecordPath.js +254 -0
  166. package/dist/components/form/expressions/dpqlMockRecordPath.js.map +1 -0
  167. package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
  168. package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
  169. package/dist/components/form/expressions/expressionOperands.js +97 -0
  170. package/dist/components/form/expressions/expressionOperands.js.map +1 -0
  171. package/dist/components/form/expressions/fieldPath.d.ts +24 -0
  172. package/dist/components/form/expressions/fieldPath.d.ts.map +1 -0
  173. package/dist/components/form/expressions/fieldPath.js +152 -0
  174. package/dist/components/form/expressions/fieldPath.js.map +1 -0
  175. package/dist/components/form/expressions/loneValue.d.ts +17 -0
  176. package/dist/components/form/expressions/loneValue.d.ts.map +1 -0
  177. package/dist/components/form/expressions/loneValue.js +33 -0
  178. package/dist/components/form/expressions/loneValue.js.map +1 -0
  179. package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
  180. package/dist/components/form/expressions/mockExpressions.js +22 -5
  181. package/dist/components/form/expressions/mockExpressions.js.map +1 -1
  182. package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
  183. package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
  184. package/dist/components/form/expressions/renderExpressionToText.js +43 -10
  185. package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
  186. package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
  187. package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
  188. package/dist/components/form/expressions/textOfExpression.js +49 -0
  189. package/dist/components/form/expressions/textOfExpression.js.map +1 -0
  190. package/dist/components/form/expressions/types.d.ts +12 -0
  191. package/dist/components/form/expressions/types.d.ts.map +1 -1
  192. package/dist/components/form/expressions/types.js +6 -1
  193. package/dist/components/form/expressions/types.js.map +1 -1
  194. package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
  195. package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
  196. package/dist/components/form/expressions/useExpressionType.js +181 -0
  197. package/dist/components/form/expressions/useExpressionType.js.map +1 -0
  198. package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
  199. package/dist/components/form/expressions/useRenderExpression.js +13 -9
  200. package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
  201. package/dist/components/form/expressions/wildcardExpressions.d.ts +27 -0
  202. package/dist/components/form/expressions/wildcardExpressions.d.ts.map +1 -0
  203. package/dist/components/form/expressions/wildcardExpressions.js +101 -0
  204. package/dist/components/form/expressions/wildcardExpressions.js.map +1 -0
  205. package/dist/components/form/fields/Field.d.ts.map +1 -1
  206. package/dist/components/form/fields/Field.js +43 -20
  207. package/dist/components/form/fields/Field.js.map +1 -1
  208. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
  209. package/dist/components/form/fields/allowed-values/AllowedValues.js +39 -6
  210. package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
  211. package/dist/components/form/fields/allowed-values/choicePicture.d.ts +37 -0
  212. package/dist/components/form/fields/allowed-values/choicePicture.d.ts.map +1 -0
  213. package/dist/components/form/fields/allowed-values/choicePicture.js +64 -0
  214. package/dist/components/form/fields/allowed-values/choicePicture.js.map +1 -0
  215. package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
  216. package/dist/components/form/fields/array/ArrayAuto.js +24 -0
  217. package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
  218. package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
  219. package/dist/components/form/fields/array/ArrayAutoField.js +36 -13
  220. package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
  221. package/dist/components/form/fields/auto/AutoFormField.d.ts +30 -1
  222. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
  223. package/dist/components/form/fields/auto/AutoFormField.js +119 -62
  224. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
  225. package/dist/components/form/fields/auto/hostEditorValue.d.ts +30 -0
  226. package/dist/components/form/fields/auto/hostEditorValue.d.ts.map +1 -0
  227. package/dist/components/form/fields/auto/hostEditorValue.js +53 -0
  228. package/dist/components/form/fields/auto/hostEditorValue.js.map +1 -0
  229. package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
  230. package/dist/components/form/fields/binary/Binary.js +23 -3
  231. package/dist/components/form/fields/binary/Binary.js.map +1 -1
  232. package/dist/components/form/fields/boolean/Boolean.d.ts +5 -0
  233. package/dist/components/form/fields/boolean/Boolean.d.ts.map +1 -1
  234. package/dist/components/form/fields/boolean/Boolean.js +9 -1
  235. package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
  236. package/dist/components/form/fields/color/Color.d.ts +103 -16
  237. package/dist/components/form/fields/color/Color.d.ts.map +1 -1
  238. package/dist/components/form/fields/color/Color.js +616 -16
  239. package/dist/components/form/fields/color/Color.js.map +1 -1
  240. package/dist/components/form/fields/emittedValues.d.ts +34 -3
  241. package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
  242. package/dist/components/form/fields/emittedValues.js +24 -1
  243. package/dist/components/form/fields/emittedValues.js.map +1 -1
  244. package/dist/components/form/fields/file/File.d.ts +1 -1
  245. package/dist/components/form/fields/file/File.d.ts.map +1 -1
  246. package/dist/components/form/fields/file/File.js +4 -2
  247. package/dist/components/form/fields/file/File.js.map +1 -1
  248. package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
  249. package/dist/components/form/fields/long-string/LongString.js +29 -8
  250. package/dist/components/form/fields/long-string/LongString.js.map +1 -1
  251. package/dist/components/form/fields/markdown/MarkdownView.js +1 -1
  252. package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
  253. package/dist/components/form/fields/multi-select/MultiSelectFormField.js +13 -9
  254. package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
  255. package/dist/components/form/fields/number/Number.d.ts +6 -0
  256. package/dist/components/form/fields/number/Number.d.ts.map +1 -1
  257. package/dist/components/form/fields/number/Number.js +41 -6
  258. package/dist/components/form/fields/number/Number.js.map +1 -1
  259. package/dist/components/form/fields/object/Object.d.ts +1 -1
  260. package/dist/components/form/fields/object/Object.d.ts.map +1 -1
  261. package/dist/components/form/fields/object/Object.js +4 -2
  262. package/dist/components/form/fields/object/Object.js.map +1 -1
  263. package/dist/components/form/fields/pendingEdit.d.ts +52 -0
  264. package/dist/components/form/fields/pendingEdit.d.ts.map +1 -0
  265. package/dist/components/form/fields/pendingEdit.js +79 -0
  266. package/dist/components/form/fields/pendingEdit.js.map +1 -0
  267. package/dist/components/form/fields/radio-group/RadioGroup.d.ts.map +1 -1
  268. package/dist/components/form/fields/radio-group/RadioGroup.js +4 -3
  269. package/dist/components/form/fields/radio-group/RadioGroup.js.map +1 -1
  270. package/dist/components/form/fields/rich-text/RichText.d.ts +20 -1
  271. package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
  272. package/dist/components/form/fields/rich-text/RichText.js +382 -91
  273. package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
  274. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts +18 -0
  275. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts.map +1 -0
  276. package/dist/components/form/fields/rich-text/useTemplateTags.js +80 -0
  277. package/dist/components/form/fields/rich-text/useTemplateTags.js.map +1 -0
  278. package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -1
  279. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +4 -1
  280. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -1
  281. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -1
  282. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +20 -5
  283. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -1
  284. package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -1
  285. package/dist/components/form/fields/schema-definition/TableEditor.js +10 -2
  286. package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -1
  287. package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -1
  288. package/dist/components/form/fields/schema-definition/index.js +8 -4
  289. package/dist/components/form/fields/schema-definition/index.js.map +1 -1
  290. package/dist/components/form/fields/select/Select.d.ts +10 -1
  291. package/dist/components/form/fields/select/Select.d.ts.map +1 -1
  292. package/dist/components/form/fields/select/Select.js +28 -14
  293. package/dist/components/form/fields/select/Select.js.map +1 -1
  294. package/dist/components/form/fields/select/SelectCollection.d.ts +5 -0
  295. package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
  296. package/dist/components/form/fields/select/SelectCollection.js +25 -12
  297. package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
  298. package/dist/components/form/fields/select/unavailableRow.d.ts +23 -0
  299. package/dist/components/form/fields/select/unavailableRow.d.ts.map +1 -0
  300. package/dist/components/form/fields/select/unavailableRow.js +55 -0
  301. package/dist/components/form/fields/select/unavailableRow.js.map +1 -0
  302. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +11 -5
  303. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
  304. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +21 -5
  305. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
  306. package/dist/components/form/fields/template/TemplateBrowser.d.ts +16 -0
  307. package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
  308. package/dist/components/form/fields/template/TemplateBrowser.js +89 -0
  309. package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
  310. package/dist/components/form/fields/template/TemplateField.d.ts +105 -1
  311. package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
  312. package/dist/components/form/fields/template/TemplateField.js +678 -107
  313. package/dist/components/form/fields/template/TemplateField.js.map +1 -1
  314. package/dist/components/form/fields/template/TemplatePicker.d.ts +54 -0
  315. package/dist/components/form/fields/template/TemplatePicker.d.ts.map +1 -0
  316. package/dist/components/form/fields/template/TemplatePicker.js +451 -0
  317. package/dist/components/form/fields/template/TemplatePicker.js.map +1 -0
  318. package/dist/components/form/fields/template/TemplateText.d.ts +0 -17
  319. package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -1
  320. package/dist/components/form/fields/template/TemplateText.js +22 -16
  321. package/dist/components/form/fields/template/TemplateText.js.map +1 -1
  322. package/dist/components/form/fields/template/referenceNames.d.ts +63 -0
  323. package/dist/components/form/fields/template/referenceNames.d.ts.map +1 -0
  324. package/dist/components/form/fields/template/referenceNames.js +69 -0
  325. package/dist/components/form/fields/template/referenceNames.js.map +1 -0
  326. package/dist/components/form/fields/template/writtenAsText.d.ts +61 -0
  327. package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
  328. package/dist/components/form/fields/template/writtenAsText.js +204 -0
  329. package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
  330. package/dist/components/form/index.d.ts +12 -0
  331. package/dist/components/form/index.d.ts.map +1 -1
  332. package/dist/components/form/index.js +25 -1
  333. package/dist/components/form/index.js.map +1 -1
  334. package/dist/components/form/typeSentenceForm.d.ts +17 -0
  335. package/dist/components/form/typeSentenceForm.d.ts.map +1 -0
  336. package/dist/components/form/typeSentenceForm.js +54 -0
  337. package/dist/components/form/typeSentenceForm.js.map +1 -0
  338. package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
  339. package/dist/components/imageLightbox/ImageLightbox.js +19 -7
  340. package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
  341. package/dist/components/log/Log.d.ts.map +1 -1
  342. package/dist/components/log/Log.js +20 -8
  343. package/dist/components/log/Log.js.map +1 -1
  344. package/dist/components/menu/Menu.d.ts.map +1 -1
  345. package/dist/components/menu/Menu.js +19 -10
  346. package/dist/components/menu/Menu.js.map +1 -1
  347. package/dist/components/smartEditor/CompletionMenu.d.ts +53 -0
  348. package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
  349. package/dist/components/smartEditor/CompletionMenu.js +302 -0
  350. package/dist/components/smartEditor/CompletionMenu.js.map +1 -0
  351. package/dist/components/smartEditor/MarkdownDoc.d.ts +1 -1
  352. package/dist/components/smartEditor/MarkdownDoc.js +3 -3
  353. package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
  354. package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
  355. package/dist/components/smartEditor/SmartEditor.js +584 -190
  356. package/dist/components/smartEditor/SmartEditor.js.map +1 -1
  357. package/dist/components/smartEditor/completionStyle.d.ts +28 -0
  358. package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
  359. package/dist/components/smartEditor/completionStyle.js +79 -0
  360. package/dist/components/smartEditor/completionStyle.js.map +1 -0
  361. package/dist/components/smartEditor/contextTitle.d.ts +10 -0
  362. package/dist/components/smartEditor/contextTitle.d.ts.map +1 -0
  363. package/dist/components/smartEditor/contextTitle.js +21 -0
  364. package/dist/components/smartEditor/contextTitle.js.map +1 -0
  365. package/dist/components/smartEditor/editingAids.d.ts +64 -0
  366. package/dist/components/smartEditor/editingAids.d.ts.map +1 -0
  367. package/dist/components/smartEditor/editingAids.js +213 -0
  368. package/dist/components/smartEditor/editingAids.js.map +1 -0
  369. package/dist/components/smartEditor/index.d.ts +6 -1
  370. package/dist/components/smartEditor/index.d.ts.map +1 -1
  371. package/dist/components/smartEditor/index.js +19 -1
  372. package/dist/components/smartEditor/index.js.map +1 -1
  373. package/dist/components/smartEditor/templateCompletions.d.ts +98 -0
  374. package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
  375. package/dist/components/smartEditor/templateCompletions.js +380 -0
  376. package/dist/components/smartEditor/templateCompletions.js.map +1 -0
  377. package/dist/components/smartEditor/typedReferences.d.ts +34 -0
  378. package/dist/components/smartEditor/typedReferences.d.ts.map +1 -0
  379. package/dist/components/smartEditor/typedReferences.js +179 -0
  380. package/dist/components/smartEditor/typedReferences.js.map +1 -0
  381. package/dist/components/smartEditor/types.d.ts +116 -2
  382. package/dist/components/smartEditor/types.d.ts.map +1 -1
  383. package/dist/components/smartEditor/useEditingAids.d.ts +38 -0
  384. package/dist/components/smartEditor/useEditingAids.d.ts.map +1 -0
  385. package/dist/components/smartEditor/useEditingAids.js +336 -0
  386. package/dist/components/smartEditor/useEditingAids.js.map +1 -0
  387. package/dist/components/smartEditor/useLspAutocomplete.d.ts +106 -3
  388. package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
  389. package/dist/components/smartEditor/useLspAutocomplete.js +562 -151
  390. package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
  391. package/dist/components/smartEditor/useLspHover.d.ts +33 -7
  392. package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
  393. package/dist/components/smartEditor/useLspHover.js +364 -35
  394. package/dist/components/smartEditor/useLspHover.js.map +1 -1
  395. package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
  396. package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
  397. package/dist/components/smartEditor/useLspSession.d.ts +6 -0
  398. package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
  399. package/dist/components/smartEditor/useLspSession.js +7 -6
  400. package/dist/components/smartEditor/useLspSession.js.map +1 -1
  401. package/dist/components/smartEditor/useLspSignatureHelp.d.ts.map +1 -1
  402. package/dist/components/smartEditor/useLspSignatureHelp.js +6 -11
  403. package/dist/components/smartEditor/useLspSignatureHelp.js.map +1 -1
  404. package/dist/components/smartEditor/useTabCameIn.d.ts +10 -0
  405. package/dist/components/smartEditor/useTabCameIn.d.ts.map +1 -0
  406. package/dist/components/smartEditor/useTabCameIn.js +42 -0
  407. package/dist/components/smartEditor/useTabCameIn.js.map +1 -0
  408. package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -1
  409. package/dist/components/supportTicket/AttachmentChips.js +15 -5
  410. package/dist/components/supportTicket/AttachmentChips.js.map +1 -1
  411. package/dist/components/supportTicket/ReferencePicker.d.ts +9 -2
  412. package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
  413. package/dist/components/supportTicket/ReferencePicker.js +27 -6
  414. package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
  415. package/dist/components/supportTicket/TicketHeader.d.ts +3 -4
  416. package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
  417. package/dist/components/supportTicket/TicketHeader.js +20 -2
  418. package/dist/components/supportTicket/TicketHeader.js.map +1 -1
  419. package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
  420. package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
  421. package/dist/components/ticketReferences/TicketReferences.js +9 -4
  422. package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
  423. package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
  424. package/dist/components/ticketThread/TicketThread.js +38 -13
  425. package/dist/components/ticketThread/TicketThread.js.map +1 -1
  426. package/dist/helpers/allowedValues.d.ts +21 -0
  427. package/dist/helpers/allowedValues.d.ts.map +1 -1
  428. package/dist/helpers/allowedValues.js +40 -1
  429. package/dist/helpers/allowedValues.js.map +1 -1
  430. package/dist/helpers/descriptionTooltip.d.ts +46 -0
  431. package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
  432. package/dist/helpers/descriptionTooltip.js +76 -0
  433. package/dist/helpers/descriptionTooltip.js.map +1 -0
  434. package/dist/helpers/domProps.d.ts +5 -0
  435. package/dist/helpers/domProps.d.ts.map +1 -0
  436. package/dist/helpers/domProps.js +47 -0
  437. package/dist/helpers/domProps.js.map +1 -0
  438. package/dist/helpers/expressions.d.ts +115 -4
  439. package/dist/helpers/expressions.d.ts.map +1 -1
  440. package/dist/helpers/expressions.js +247 -29
  441. package/dist/helpers/expressions.js.map +1 -1
  442. package/dist/helpers/hoveringPointer.d.ts +26 -0
  443. package/dist/helpers/hoveringPointer.d.ts.map +1 -0
  444. package/dist/helpers/hoveringPointer.js +29 -0
  445. package/dist/helpers/hoveringPointer.js.map +1 -0
  446. package/dist/helpers/markdownText.d.ts +14 -0
  447. package/dist/helpers/markdownText.d.ts.map +1 -0
  448. package/dist/helpers/markdownText.js +160 -0
  449. package/dist/helpers/markdownText.js.map +1 -0
  450. package/dist/helpers/noDescription.d.ts +9 -0
  451. package/dist/helpers/noDescription.d.ts.map +1 -0
  452. package/dist/helpers/noDescription.js +13 -0
  453. package/dist/helpers/noDescription.js.map +1 -0
  454. package/dist/helpers/optionUiTypes.d.ts +2 -2
  455. package/dist/helpers/qorusTypeCatalogue.d.ts +147 -0
  456. package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
  457. package/dist/helpers/qorusTypeCatalogue.js +505 -0
  458. package/dist/helpers/qorusTypeCatalogue.js.map +1 -0
  459. package/dist/helpers/readableColors.d.ts +36 -0
  460. package/dist/helpers/readableColors.d.ts.map +1 -0
  461. package/dist/helpers/readableColors.js +116 -0
  462. package/dist/helpers/readableColors.js.map +1 -0
  463. package/dist/helpers/recordFieldReference.d.ts +15 -0
  464. package/dist/helpers/recordFieldReference.d.ts.map +1 -0
  465. package/dist/helpers/recordFieldReference.js +89 -0
  466. package/dist/helpers/recordFieldReference.js.map +1 -0
  467. package/dist/helpers/templateCatalogue.d.ts +104 -0
  468. package/dist/helpers/templateCatalogue.d.ts.map +1 -0
  469. package/dist/helpers/templateCatalogue.js +116 -0
  470. package/dist/helpers/templateCatalogue.js.map +1 -0
  471. package/dist/helpers/templateCatalogueContext.d.ts +19 -0
  472. package/dist/helpers/templateCatalogueContext.d.ts.map +1 -0
  473. package/dist/helpers/templateCatalogueContext.js +31 -0
  474. package/dist/helpers/templateCatalogueContext.js.map +1 -0
  475. package/dist/helpers/templateItems.d.ts +2 -2
  476. package/dist/helpers/templateItems.d.ts.map +1 -1
  477. package/dist/helpers/templateItems.js +6 -4
  478. package/dist/helpers/templateItems.js.map +1 -1
  479. package/dist/helpers/templateText.d.ts +1 -0
  480. package/dist/helpers/templateText.d.ts.map +1 -1
  481. package/dist/helpers/templateText.js +7 -3
  482. package/dist/helpers/templateText.js.map +1 -1
  483. package/dist/helpers/templateTree.d.ts +248 -0
  484. package/dist/helpers/templateTree.d.ts.map +1 -0
  485. package/dist/helpers/templateTree.js +892 -0
  486. package/dist/helpers/templateTree.js.map +1 -0
  487. package/dist/helpers/templateType.d.ts +28 -0
  488. package/dist/helpers/templateType.d.ts.map +1 -0
  489. package/dist/helpers/templateType.js +30 -0
  490. package/dist/helpers/templateType.js.map +1 -0
  491. package/dist/helpers/templates.d.ts +86 -16
  492. package/dist/helpers/templates.d.ts.map +1 -1
  493. package/dist/helpers/templates.js +305 -45
  494. package/dist/helpers/templates.js.map +1 -1
  495. package/dist/helpers/validations.d.ts +27 -0
  496. package/dist/helpers/validations.d.ts.map +1 -1
  497. package/dist/helpers/validations.js +169 -39
  498. package/dist/helpers/validations.js.map +1 -1
  499. package/dist/helpers/webLink.d.ts +8 -0
  500. package/dist/helpers/webLink.d.ts.map +1 -0
  501. package/dist/helpers/webLink.js +29 -0
  502. package/dist/helpers/webLink.js.map +1 -0
  503. package/dist/hooks/useQorusTypes.d.ts +12 -17
  504. package/dist/hooks/useQorusTypes.d.ts.map +1 -1
  505. package/dist/hooks/useQorusTypes.js +44 -172
  506. package/dist/hooks/useQorusTypes.js.map +1 -1
  507. package/dist/hooks/useReadableIntentShade.d.ts +9 -0
  508. package/dist/hooks/useReadableIntentShade.d.ts.map +1 -0
  509. package/dist/hooks/useReadableIntentShade.js +23 -0
  510. package/dist/hooks/useReadableIntentShade.js.map +1 -0
  511. package/dist/hooks/useReadableOpacity.d.ts +6 -0
  512. package/dist/hooks/useReadableOpacity.d.ts.map +1 -0
  513. package/dist/hooks/useReadableOpacity.js +17 -0
  514. package/dist/hooks/useReadableOpacity.js.map +1 -0
  515. package/dist/index.d.ts +8 -0
  516. package/dist/index.d.ts.map +1 -1
  517. package/dist/index.js +24 -1
  518. package/dist/index.js.map +1 -1
  519. package/dist/tracking/ui/ExperimentCard.d.ts +1 -1
  520. package/dist/tracking/ui/ExperimentCard.d.ts.map +1 -1
  521. package/dist/tracking/ui/ExperimentCard.js +26 -10
  522. package/dist/tracking/ui/ExperimentCard.js.map +1 -1
  523. package/dist/tracking/ui/card.d.ts +2 -2
  524. package/dist/tracking/ui/card.d.ts.map +1 -1
  525. package/dist/tracking/ui/card.js +2 -2
  526. package/dist/tracking/ui/card.js.map +1 -1
  527. package/dist/tracking/ui/readable.d.ts +14 -0
  528. package/dist/tracking/ui/readable.d.ts.map +1 -0
  529. package/dist/tracking/ui/readable.js +60 -0
  530. package/dist/tracking/ui/readable.js.map +1 -0
  531. package/dist/utils/fetch.d.ts +9 -2
  532. package/dist/utils/fetch.d.ts.map +1 -1
  533. package/dist/utils/fetch.js +6 -5
  534. package/dist/utils/fetch.js.map +1 -1
  535. package/dist/utils/lspClient.types.d.ts +2 -0
  536. package/dist/utils/lspClient.types.d.ts.map +1 -1
  537. package/dist/utils/websocket.d.ts +65 -2
  538. package/dist/utils/websocket.d.ts.map +1 -1
  539. package/dist/utils/websocket.js +276 -44
  540. package/dist/utils/websocket.js.map +1 -1
  541. package/package.json +14 -6
  542. package/.claude/CLAUDE.md +0 -317
  543. package/.tasks/EXPORT_EXPRESSION_BUILDER.md +0 -38
  544. package/.tasks/EXPRESSION_BUILDER_REPORT.md +0 -149
  545. package/.tasks/EXPRESSION_FIELD_SEAMS.md +0 -66
  546. package/.tasks/FIELD_STACK_REPORT.md +0 -234
  547. package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +0 -558
  548. package/.tasks/FORM_ENGINE_EXPRESSIONS.md +0 -197
  549. package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +0 -95
  550. package/.tasks/FORM_FIELD_EXTRAS.md +0 -72
  551. package/.tasks/INDEX.md +0 -111
  552. package/.tasks/LSP_SHARED_CONNECTION.md +0 -75
  553. package/.tasks/QONSOLE_ASSIST_FEATURES.md +0 -306
  554. package/.tasks/RENDER_EXPRESSION_LSP.md +0 -159
  555. package/.tasks/REQRAFT_AUTO_FIELD.md +0 -176
  556. package/.tasks/SCHEMA_DEFINITION_FIELD.md +0 -250
  557. package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +0 -340
  558. package/.tasks/SMART_EDITOR_LSP_FEATURES.md +0 -299
  559. package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +0 -280
  560. package/.tasks/SMART_EDITOR_UX_POLISH.md +0 -383
  561. package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +0 -246
  562. package/.tasks/STORY_NETWORK_ISOLATION.md +0 -98
  563. package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +0 -72
  564. package/CODE_OF_CONDUCT.md +0 -105
  565. package/CONTRIBUTING.MD +0 -78
  566. package/SECURITY.md +0 -3
  567. package/chromatic.config.json +0 -5
  568. package/design/COMPACT_ENGINE_REDESIGN.md +0 -156
  569. package/design/COMPACT_INFO_DISPLAY.md +0 -87
  570. package/design/COMPACT_PARITY.md +0 -85
  571. package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +0 -92
  572. package/design/FORM_ENGINE_COMPACT.md +0 -300
  573. package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +0 -353
  574. package/design/FORM_ENGINE_EXPRESSIONS.md +0 -257
  575. package/design/FORM_ENGINE_FIELD_MIGRATION.md +0 -419
  576. package/design/IDE_INTEGRATION.md +0 -64
  577. package/design/RENDER_EXPRESSION_TRANSPORT.md +0 -156
  578. package/design/SELECT_DIALOG_FLOOR.md +0 -86
  579. package/design/SMART_EDITOR_UX.md +0 -438
  580. package/design/TRACKING.md +0 -290
  581. package/design/UNAVAILABLE_ALLOWED_VALUES.md +0 -226
  582. package/src/components/Description/index.tsx +0 -254
  583. package/src/components/Description/markdownRendererContext.tsx +0 -29
  584. package/src/components/FocusedEditing/index.tsx +0 -50
  585. package/src/components/codeSize/index.tsx +0 -79
  586. package/src/components/composer/Composer.stories.tsx +0 -238
  587. package/src/components/composer/Composer.tsx +0 -554
  588. package/src/components/composer/helpers.ts +0 -74
  589. package/src/components/composer/index.ts +0 -2
  590. package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -1183
  591. package/src/components/dpqlEditor/DpqlEditor.tsx +0 -219
  592. package/src/components/dpqlEditor/dpqlHelpers.ts +0 -287
  593. package/src/components/dpqlEditor/dpqlInserter.ts +0 -121
  594. package/src/components/dpqlEditor/dpqlProbe.ts +0 -165
  595. package/src/components/dpqlEditor/dpqlTags.ts +0 -114
  596. package/src/components/dpqlEditor/index.ts +0 -41
  597. package/src/components/dpqlEditor/types.ts +0 -203
  598. package/src/components/dpqlEditor/useDpqlProbe.ts +0 -33
  599. package/src/components/dpqlEditor/useDpqlSession.ts +0 -411
  600. package/src/components/form/engine/CompactRow.tsx +0 -2620
  601. package/src/components/form/engine/CompactToolbar.tsx +0 -330
  602. package/src/components/form/engine/FormEngine.stories.tsx +0 -9920
  603. package/src/components/form/engine/FormEngine.tsx +0 -4569
  604. package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
  605. package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -331
  606. package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
  607. package/src/components/form/engine/OptionFieldMessages.tsx +0 -477
  608. package/src/components/form/engine/OptionsHelpDialog.tsx +0 -29
  609. package/src/components/form/engine/__fixtures__/basicFormOptions.ts +0 -309
  610. package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +0 -45
  611. package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +0 -233
  612. package/src/components/form/engine/_structuredData/SchemaDataView.tsx +0 -742
  613. package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +0 -85
  614. package/src/components/form/engine/_structuredData/StructuredDataView.tsx +0 -75
  615. package/src/components/form/engine/_structuredData/structuredData.ts +0 -145
  616. package/src/components/form/engine/compactRowContext.ts +0 -148
  617. package/src/components/form/engine/compactRowStyles.ts +0 -898
  618. package/src/components/form/engine/compactToolbarContext.ts +0 -69
  619. package/src/components/form/engine/optionActions.ts +0 -128
  620. package/src/components/form/engine/optionsContext.ts +0 -24
  621. package/src/components/form/engine/readFirst.ts +0 -1077
  622. package/src/components/form/engine/rendererTypes.ts +0 -107
  623. package/src/components/form/engine/revealRow.ts +0 -123
  624. package/src/components/form/engine/rowFocus.ts +0 -101
  625. package/src/components/form/engine/rowMenuContext.ts +0 -159
  626. package/src/components/form/engine/rowOpenPicker.ts +0 -27
  627. package/src/components/form/engine/typeChoices.ts +0 -63
  628. package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +0 -159
  629. package/src/components/form/engine/variants/VariantCalmTable.tsx +0 -244
  630. package/src/components/form/engine/variants/VariantCards.tsx +0 -212
  631. package/src/components/form/engine/variants/VariantFocus.tsx +0 -382
  632. package/src/components/form/engine/variants/VariantMinimal.tsx +0 -170
  633. package/src/components/form/engine/variants/focusDemo.ts +0 -145
  634. package/src/components/form/engine/variants/variantModel.ts +0 -223
  635. package/src/components/form/engine/variants/variantParts.tsx +0 -313
  636. package/src/components/form/expressions/DpqlRendering.tsx +0 -85
  637. package/src/components/form/expressions/ExpressionField.stories.tsx +0 -1395
  638. package/src/components/form/expressions/ExpressionField.tsx +0 -503
  639. package/src/components/form/expressions/argumentPresence.ts +0 -213
  640. package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +0 -1683
  641. package/src/components/form/expressions/builder/argumentDetail.tsx +0 -17
  642. package/src/components/form/expressions/builder/argumentLabel.tsx +0 -146
  643. package/src/components/form/expressions/builder/argumentSlot.tsx +0 -101
  644. package/src/components/form/expressions/builder/argumentWrapper.tsx +0 -243
  645. package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +0 -120
  646. package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +0 -69
  647. package/src/components/form/expressions/builder/index.tsx +0 -1545
  648. package/src/components/form/expressions/builder/item.tsx +0 -89
  649. package/src/components/form/expressions/builder/moveToPositionStrip.tsx +0 -156
  650. package/src/components/form/expressions/builder/renderTemplate.tsx +0 -42
  651. package/src/components/form/expressions/dpqlMockLanguage.ts +0 -566
  652. package/src/components/form/expressions/dpqlMockLsp.ts +0 -126
  653. package/src/components/form/expressions/mockExpressions.ts +0 -317
  654. package/src/components/form/expressions/renderExpressionToText.ts +0 -137
  655. package/src/components/form/expressions/types.ts +0 -110
  656. package/src/components/form/expressions/useExpressions.ts +0 -101
  657. package/src/components/form/expressions/useRenderExpression.ts +0 -165
  658. package/src/components/form/fields/Field.stories.tsx +0 -143
  659. package/src/components/form/fields/Field.tsx +0 -732
  660. package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -297
  661. package/src/components/form/fields/array/ArrayAuto.tsx +0 -237
  662. package/src/components/form/fields/array/ArrayAutoField.stories.tsx +0 -475
  663. package/src/components/form/fields/array/ArrayAutoField.tsx +0 -367
  664. package/src/components/form/fields/auto/AutoFormField.stories.tsx +0 -825
  665. package/src/components/form/fields/auto/AutoFormField.tsx +0 -1164
  666. package/src/components/form/fields/binary/Binary.stories.tsx +0 -122
  667. package/src/components/form/fields/binary/Binary.tsx +0 -91
  668. package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -125
  669. package/src/components/form/fields/boolean/Boolean.tsx +0 -34
  670. package/src/components/form/fields/byte-size/ByteSize.stories.tsx +0 -87
  671. package/src/components/form/fields/byte-size/ByteSize.tsx +0 -58
  672. package/src/components/form/fields/color/Color.stories.tsx +0 -99
  673. package/src/components/form/fields/color/Color.tsx +0 -46
  674. package/src/components/form/fields/cron/Cron.stories.tsx +0 -68
  675. package/src/components/form/fields/cron/Cron.tsx +0 -80
  676. package/src/components/form/fields/date/Date.stories.tsx +0 -77
  677. package/src/components/form/fields/date/Date.tsx +0 -55
  678. package/src/components/form/fields/emittedValues.ts +0 -70
  679. package/src/components/form/fields/file/File.stories.tsx +0 -161
  680. package/src/components/form/fields/file/File.tsx +0 -227
  681. package/src/components/form/fields/long-string/LongString.stories.tsx +0 -120
  682. package/src/components/form/fields/long-string/LongString.tsx +0 -130
  683. package/src/components/form/fields/markdown/Markdown.stories.tsx +0 -76
  684. package/src/components/form/fields/markdown/Markdown.tsx +0 -81
  685. package/src/components/form/fields/markdown/MarkdownView.tsx +0 -222
  686. package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +0 -139
  687. package/src/components/form/fields/number/Number.stories.tsx +0 -159
  688. package/src/components/form/fields/number/Number.tsx +0 -160
  689. package/src/components/form/fields/object/Object.stories.tsx +0 -398
  690. package/src/components/form/fields/object/Object.tsx +0 -255
  691. package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +0 -95
  692. package/src/components/form/fields/radio-group/RadioGroup.tsx +0 -46
  693. package/src/components/form/fields/radio-group/images/java-96x128.png +0 -0
  694. package/src/components/form/fields/radio-group/images/python-129x128.png +0 -0
  695. package/src/components/form/fields/radio-group/images/qore-106x128.png +0 -0
  696. package/src/components/form/fields/rich-text/RichText.stories.tsx +0 -260
  697. package/src/components/form/fields/rich-text/RichText.tsx +0 -537
  698. package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +0 -242
  699. package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +0 -758
  700. package/src/components/form/fields/schema-definition/Hint.tsx +0 -22
  701. package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +0 -138
  702. package/src/components/form/fields/schema-definition/Loader.tsx +0 -20
  703. package/src/components/form/fields/schema-definition/MigrationsTab.tsx +0 -187
  704. package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +0 -286
  705. package/src/components/form/fields/schema-definition/TableEditor.tsx +0 -155
  706. package/src/components/form/fields/schema-definition/TablesTab.tsx +0 -138
  707. package/src/components/form/fields/schema-definition/catalog.ts +0 -237
  708. package/src/components/form/fields/schema-definition/helpers.ts +0 -90
  709. package/src/components/form/fields/schema-definition/index.tsx +0 -418
  710. package/src/components/form/fields/schema-definition/mockCatalog.ts +0 -325
  711. package/src/components/form/fields/schema-definition/mockDefinition.ts +0 -111
  712. package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +0 -152
  713. package/src/components/form/fields/schema-definition/starterTemplate.ts +0 -68
  714. package/src/components/form/fields/schema-definition/types.ts +0 -185
  715. package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +0 -49
  716. package/src/components/form/fields/select/Select.stories.tsx +0 -872
  717. package/src/components/form/fields/select/Select.tsx +0 -624
  718. package/src/components/form/fields/select/SelectCollection.tsx +0 -594
  719. package/src/components/form/fields/string/String.stories.tsx +0 -86
  720. package/src/components/form/fields/string/String.tsx +0 -43
  721. package/src/components/form/fields/template/ExampleValueModal.stories.tsx +0 -114
  722. package/src/components/form/fields/template/ExampleValueModal.tsx +0 -99
  723. package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +0 -47
  724. package/src/components/form/fields/template/TemplateField.stories.tsx +0 -1121
  725. package/src/components/form/fields/template/TemplateField.tsx +0 -1717
  726. package/src/components/form/fields/template/TemplateText.tsx +0 -115
  727. package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +0 -7
  728. package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +0 -147
  729. package/src/components/form/fields/template/__fixtures__/templates.json +0 -83
  730. package/src/components/form/fields/timeout/Timeout.stories.tsx +0 -228
  731. package/src/components/form/fields/timeout/Timeout.tsx +0 -87
  732. package/src/components/form/fields/url/Url.stories.tsx +0 -94
  733. package/src/components/form/fields/url/Url.tsx +0 -85
  734. package/src/components/form/index.tsx +0 -47
  735. package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
  736. package/src/components/imageLightbox/ImageLightbox.tsx +0 -236
  737. package/src/components/imageLightbox/index.ts +0 -1
  738. package/src/components/log/Log.stories.tsx +0 -333
  739. package/src/components/log/Log.tsx +0 -285
  740. package/src/components/menu/Menu.stories.tsx +0 -155
  741. package/src/components/menu/Menu.tsx +0 -312
  742. package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +0 -797
  743. package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +0 -105
  744. package/src/components/qonsoleSmartInput/index.ts +0 -16
  745. package/src/components/qonsoleSmartInput/qonsoleInserter.ts +0 -77
  746. package/src/components/qonsoleSmartInput/types.ts +0 -133
  747. package/src/components/qonsoleSmartInput/useQonsoleSession.ts +0 -124
  748. package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +0 -62
  749. package/src/components/searchFilterBar/SearchFilterBar.tsx +0 -144
  750. package/src/components/searchFilterBar/index.ts +0 -1
  751. package/src/components/smartEditor/MarkdownDoc.tsx +0 -190
  752. package/src/components/smartEditor/SmartEditor.stories.tsx +0 -475
  753. package/src/components/smartEditor/SmartEditor.tsx +0 -808
  754. package/src/components/smartEditor/__fixtures__/mockLspServer.ts +0 -205
  755. package/src/components/smartEditor/helpers.ts +0 -217
  756. package/src/components/smartEditor/index.ts +0 -35
  757. package/src/components/smartEditor/styling.ts +0 -45
  758. package/src/components/smartEditor/types.ts +0 -211
  759. package/src/components/smartEditor/useLspAutocomplete.ts +0 -758
  760. package/src/components/smartEditor/useLspDiagnosticDecorations.ts +0 -125
  761. package/src/components/smartEditor/useLspHover.ts +0 -230
  762. package/src/components/smartEditor/useLspSemanticTokens.ts +0 -298
  763. package/src/components/smartEditor/useLspSession.ts +0 -231
  764. package/src/components/smartEditor/useLspSignatureHelp.ts +0 -198
  765. package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -171
  766. package/src/components/supportTicket/AttachmentChips.tsx +0 -147
  767. package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -257
  768. package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -129
  769. package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -584
  770. package/src/components/supportTicket/ReferencePicker.tsx +0 -563
  771. package/src/components/supportTicket/TicketConversation.stories.tsx +0 -121
  772. package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
  773. package/src/components/supportTicket/TicketHeader.tsx +0 -247
  774. package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
  775. package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
  776. package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -354
  777. package/src/components/supportTicket/TicketReplyBox.tsx +0 -150
  778. package/src/components/supportTicket/__fixtures__/kindMarks.ts +0 -28
  779. package/src/components/supportTicket/attachmentAccess.ts +0 -97
  780. package/src/components/supportTicket/fileToAttachment.ts +0 -24
  781. package/src/components/supportTicket/index.ts +0 -10
  782. package/src/components/supportTicket/meta.ts +0 -206
  783. package/src/components/supportTicket/ticketModel.ts +0 -131
  784. package/src/components/supportTicket/useLoadedImages.ts +0 -73
  785. package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -315
  786. package/src/components/ticketReferences/TicketReferences.tsx +0 -906
  787. package/src/components/ticketReferences/index.ts +0 -2
  788. package/src/components/ticketThread/TicketThread.stories.tsx +0 -829
  789. package/src/components/ticketThread/TicketThread.tsx +0 -719
  790. package/src/components/ticketThread/index.ts +0 -6
  791. package/src/contexts/FetchContext.tsx +0 -25
  792. package/src/contexts/ReqraftContext.tsx +0 -9
  793. package/src/contexts/StorageContext.tsx +0 -33
  794. package/src/global.d.ts +0 -4
  795. package/src/helpers/allowedValues.ts +0 -249
  796. package/src/helpers/choiceChip.ts +0 -227
  797. package/src/helpers/common.ts +0 -326
  798. package/src/helpers/dpqlDetection.ts +0 -209
  799. package/src/helpers/expressions.ts +0 -140
  800. package/src/helpers/optionUiTypes.ts +0 -199
  801. package/src/helpers/options.ts +0 -150
  802. package/src/helpers/providerValue.ts +0 -125
  803. package/src/helpers/scrollbar.ts +0 -32
  804. package/src/helpers/singleLineString.ts +0 -61
  805. package/src/helpers/templateItems.ts +0 -81
  806. package/src/helpers/templateText.ts +0 -350
  807. package/src/helpers/templates.ts +0 -602
  808. package/src/helpers/validations.ts +0 -2085
  809. package/src/hooks/useArgSchema.ts +0 -37
  810. package/src/hooks/useCoarsePointer.ts +0 -30
  811. package/src/hooks/useFetch/useFetch.stories.tsx +0 -379
  812. package/src/hooks/useFetch/useFetch.tsx +0 -154
  813. package/src/hooks/usePhoneViewport.ts +0 -34
  814. package/src/hooks/useQorusTypes.ts +0 -233
  815. package/src/hooks/useReqraftProperty.ts +0 -16
  816. package/src/hooks/useStorage/useStorage.stories.tsx +0 -168
  817. package/src/hooks/useStorage/useStorage.ts +0 -35
  818. package/src/hooks/useTemplates.ts +0 -123
  819. package/src/hooks/useValidation.ts +0 -9
  820. package/src/hooks/useWebSocket/useWebSocket.ts +0 -224
  821. package/src/hooks/useWebSocket/useWebsocket.stories.tsx +0 -640
  822. package/src/hooks/useWhyDidYouUpdate.ts +0 -38
  823. package/src/index.tsx +0 -86
  824. package/src/providers/FetchProvider.tsx +0 -40
  825. package/src/providers/ReqraftProvider.tsx +0 -52
  826. package/src/providers/StorageProvider.tsx +0 -131
  827. package/src/stores/currentUser/currentUser.stories.tsx +0 -100
  828. package/src/stores/currentUser/currentUser.tsx +0 -94
  829. package/src/stories/Data/fileFieldArgSchema.json +0 -86
  830. package/src/stories/Tests/utils.ts +0 -320
  831. package/src/stories/storyNetwork.ts +0 -92
  832. package/src/stories/tracking.tsx +0 -206
  833. package/src/tracking/browser/attach.ts +0 -186
  834. package/src/tracking/browser/env.ts +0 -78
  835. package/src/tracking/core/consent.ts +0 -37
  836. package/src/tracking/core/engagement.ts +0 -47
  837. package/src/tracking/core/experiments.ts +0 -258
  838. package/src/tracking/core/hash.ts +0 -26
  839. package/src/tracking/core/ids.ts +0 -25
  840. package/src/tracking/core/observable.ts +0 -23
  841. package/src/tracking/core/queue.ts +0 -131
  842. package/src/tracking/core/sections.ts +0 -166
  843. package/src/tracking/core/storage.ts +0 -69
  844. package/src/tracking/core/tracker.ts +0 -417
  845. package/src/tracking/core/types.ts +0 -162
  846. package/src/tracking/core/utm.ts +0 -23
  847. package/src/tracking/index.ts +0 -72
  848. package/src/tracking/markup.ts +0 -17
  849. package/src/tracking/react/Experiment.tsx +0 -44
  850. package/src/tracking/react/TrackingProvider.tsx +0 -56
  851. package/src/tracking/react/hooks.ts +0 -106
  852. package/src/tracking/react/index.ts +0 -13
  853. package/src/tracking/testing.ts +0 -108
  854. package/src/tracking/ui/ExperimentCard.stories.tsx +0 -296
  855. package/src/tracking/ui/ExperimentCard.tsx +0 -667
  856. package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -155
  857. package/src/tracking/ui/ExperimentsOverlay.tsx +0 -437
  858. package/src/tracking/ui/anchor.ts +0 -180
  859. package/src/tracking/ui/card.ts +0 -464
  860. package/src/tracking/ui/client.ts +0 -117
  861. package/src/tracking/ui/index.ts +0 -77
  862. package/src/tracking/ui/types.ts +0 -110
  863. package/src/tracking/ui/useExperimentsAdmin.ts +0 -103
  864. package/src/types/Form.ts +0 -29
  865. package/src/types.ts +0 -14
  866. package/src/utils/datetime.ts +0 -10
  867. package/src/utils/fetch.ts +0 -457
  868. package/src/utils/lspClient.ts +0 -711
  869. package/src/utils/lspClient.types.ts +0 -211
  870. package/src/utils/queryUnlessCancelled.ts +0 -28
  871. package/src/utils/websocket.ts +0 -293
  872. package/vite.config.ts +0 -58
  873. package/vitest.config.ts +0 -69
@@ -1,5 +1,16 @@
1
1
  "use strict";
2
2
  // Copyright 2026 Qore Technologies, s.r.o.
3
+ var __assign = (this && this.__assign) || function () {
4
+ __assign = Object.assign || function(t) {
5
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
6
+ s = arguments[i];
7
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
8
+ t[p] = s[p];
9
+ }
10
+ return t;
11
+ };
12
+ return __assign.apply(this, arguments);
13
+ };
3
14
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
15
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
16
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -46,12 +57,30 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
46
57
  return to.concat(ar || Array.prototype.slice.call(from));
47
58
  };
48
59
  Object.defineProperty(exports, "__esModule", { value: true });
49
- exports.useLspAutocomplete = void 0;
60
+ exports.useLspAutocomplete = exports.useCompletionKeys = exports.toDropdownItems = exports.groupCompletionItems = exports.COMPLETION_KIND_CHIPS = void 0;
50
61
  var lodash_1 = require("lodash");
51
62
  var react_1 = require("react");
52
63
  var slate_1 = require("slate");
53
64
  var slate_react_1 = require("slate-react");
54
65
  var helpers_1 = require("./helpers");
66
+ var templateCompletions_1 = require("./templateCompletions");
67
+ /** What is typed before the editor's caret in the text it is in: never anything across a chip. */
68
+ var typedInTextOf = function (editor) {
69
+ var _a, _b;
70
+ var at = (_a = editor === null || editor === void 0 ? void 0 : editor.selection) === null || _a === void 0 ? void 0 : _a.anchor;
71
+ if (!editor || !at)
72
+ return undefined;
73
+ // the leaf at the caret, read along its path: a paragraph's child
74
+ var node = editor;
75
+ for (var _i = 0, _c = at.path; _i < _c.length; _i++) {
76
+ var index = _c[_i];
77
+ node = (_b = node === null || node === void 0 ? void 0 : node.children) === null || _b === void 0 ? void 0 : _b[index];
78
+ }
79
+ return typeof (node === null || node === void 0 ? void 0 : node.text) === 'string' ?
80
+ node.text.slice(0, at.offset)
81
+ : undefined;
82
+ };
83
+ var templateRowMarks = function (item) { var _a, _b; return ((_b = (_a = (('raw' in item ? item.raw : item))) === null || _a === void 0 ? void 0 : _a.data) !== null && _b !== void 0 ? _b : {}); };
55
84
  var DEFAULT_TRIGGER_CHARS = new Set(['.', ':', ' ']);
56
85
  var DEBOUNCE_MS = 150;
57
86
  // Defer `isFetching=true` so the "Loading…" stub only shows for genuinely
@@ -65,7 +94,7 @@ var COMPLETION_KIND_LABELS = {
65
94
  14: 'Keywords',
66
95
  15: 'Snippets',
67
96
  };
68
- var COMPLETION_KIND_CHIPS = {
97
+ exports.COMPLETION_KIND_CHIPS = {
69
98
  1: 'Text',
70
99
  2: 'Method',
71
100
  3: 'Function',
@@ -92,35 +121,184 @@ var COMPLETION_KIND_CHIPS = {
92
121
  24: 'Operator',
93
122
  25: 'TypeParameter',
94
123
  };
124
+ /**
125
+ * The list's rows in groups: as ranked when the server ranked them (`sortText`), otherwise by kind - Field,
126
+ * Variable, Function... - when there is more than one.
127
+ */
128
+ var groupCompletionItems = function (items) {
129
+ var _a;
130
+ if (items.length === 0)
131
+ return [];
132
+ // When the server populates `sortText` it has already ranked items;
133
+ // use the flat list directly rather than re-ordering across kinds.
134
+ // Qonsole takes this path; DPQL has no sortText and falls through.
135
+ var hasSortText = items.some(function (i) { return i.raw.sortText; });
136
+ if (hasSortText) {
137
+ return [{ label: '', items: items }];
138
+ }
139
+ var groupMap = new Map();
140
+ for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {
141
+ var item = items_1[_i];
142
+ var kind = (_a = item.metadata) === null || _a === void 0 ? void 0 : _a.kind;
143
+ // a template row says its own section: the field's templates, its record fields, or none (Browse all)
144
+ var section = templateRowMarks(item).section;
145
+ var groupLabel = section !== undefined ? section : (kind && COMPLETION_KIND_LABELS[kind]) || 'Other';
146
+ if (!groupMap.has(groupLabel)) {
147
+ groupMap.set(groupLabel, []);
148
+ }
149
+ groupMap.get(groupLabel).push(item);
150
+ }
151
+ if (groupMap.size <= 1) {
152
+ return [{ label: '', items: items }];
153
+ }
154
+ return Array.from(groupMap.entries()).map(function (_a) {
155
+ var label = _a[0], groupItems = _a[1];
156
+ return ({
157
+ label: label,
158
+ items: groupItems,
159
+ });
160
+ });
161
+ };
162
+ exports.groupCompletionItems = groupCompletionItems;
163
+ /** Completion items as the list's rows. */
164
+ var toDropdownItems = function (lspItems) {
165
+ return lspItems.map(function (item) {
166
+ var _a;
167
+ var insertText = item.insertText || item.label;
168
+ return {
169
+ label: item.label,
170
+ value: insertText,
171
+ icon: (0, helpers_1.mapCompletionKindToIcon)(item.kind),
172
+ description: item.detail,
173
+ documentation: item.documentation,
174
+ // a template says what it is (State data, Context...), not the LSP kind it is sent as (Variable)
175
+ kindLabel: (_a = templateRowMarks(item).kindLabel) !== null && _a !== void 0 ? _a : (item.kind !== undefined && !templateRowMarks(item).browseAll ?
176
+ exports.COMPLETION_KIND_CHIPS[item.kind]
177
+ : undefined),
178
+ warning: item.warning,
179
+ raw: item,
180
+ metadata: {
181
+ insertTextFormat: item.insertTextFormat,
182
+ retrigger: insertText.endsWith(':'),
183
+ kind: item.kind,
184
+ },
185
+ };
186
+ });
187
+ };
188
+ exports.toDropdownItems = toDropdownItems;
189
+ /**
190
+ * The list's keys, the same wherever it is open, and as the browse list's (`TemplateBrowser`): ArrowDown and
191
+ * ArrowUp move through it, Enter takes the row the keyboard is on, Escape puts it away, Tab leaves it as it
192
+ * leaves any control. Heard before anything else on the page while the list is
193
+ * open - the focus stays where it is (an editor, a picker's button), the list never takes it.
194
+ */
195
+ var useCompletionKeys = function (_a) {
196
+ var isOpen = _a.isOpen, count = _a.count, setFocusedIndex = _a.setFocusedIndex, onAccept = _a.onAccept, onClose = _a.onClose, onOtherKey = _a.onOtherKey;
197
+ var handlers = (0, react_1.useRef)({ onAccept: onAccept, onClose: onClose, onOtherKey: onOtherKey });
198
+ handlers.current = { onAccept: onAccept, onClose: onClose, onOtherKey: onOtherKey };
199
+ (0, react_1.useEffect)(function () {
200
+ if (!isOpen || count === 0)
201
+ return undefined;
202
+ var handleKeyDown = function (e) {
203
+ var _a, _b;
204
+ var take = function () {
205
+ e.preventDefault();
206
+ e.stopPropagation();
207
+ };
208
+ switch (e.key) {
209
+ case 'ArrowDown':
210
+ take();
211
+ setFocusedIndex(function (prev) { return Math.min(prev + 1, count - 1); });
212
+ break;
213
+ case 'ArrowUp':
214
+ take();
215
+ setFocusedIndex(function (prev) { return Math.max(prev - 1, 0); });
216
+ break;
217
+ case 'Enter':
218
+ take();
219
+ handlers.current.onAccept();
220
+ break;
221
+ case 'Tab':
222
+ /* takes the row the keyboard is on, as Enter does (a code editor's key), and the text keeps the focus:
223
+ leaving the list instead left a half-typed reference standing as if it were one (qorus#646, David's
224
+ review) */
225
+ take();
226
+ handlers.current.onAccept();
227
+ break;
228
+ case 'Escape':
229
+ take();
230
+ handlers.current.onClose();
231
+ break;
232
+ default:
233
+ if ((_b = (_a = handlers.current).onOtherKey) === null || _b === void 0 ? void 0 : _b.call(_a, e))
234
+ take();
235
+ }
236
+ };
237
+ document.addEventListener('keydown', handleKeyDown, true);
238
+ return function () { return document.removeEventListener('keydown', handleKeyDown, true); };
239
+ }, [isOpen, count, setFocusedIndex]);
240
+ };
241
+ exports.useCompletionKeys = useCompletionKeys;
95
242
  function useLspAutocomplete(opts) {
96
243
  var _this = this;
97
- var getCompletions = opts.getCompletions, isReady = opts.isReady, _a = opts.triggerCharacters, triggerCharacters = _a === void 0 ? DEFAULT_TRIGGER_CHARS : _a, converter = opts.converter, inserter = opts.inserter;
244
+ var getCompletions = opts.getCompletions, isReady = opts.isReady, _a = opts.triggerCharacters, triggerCharacters = _a === void 0 ? DEFAULT_TRIGGER_CHARS : _a, converter = opts.converter, inserter = opts.inserter, emptyMessageAt = opts.emptyMessage, commitTyped = opts.commitTyped, noteAt = opts.noteAt;
245
+ var commitTypedRef = (0, react_1.useRef)(commitTyped);
246
+ commitTypedRef.current = commitTyped;
98
247
  var _b = (0, react_1.useState)([]), items = _b[0], setItems = _b[1];
99
248
  var _c = (0, react_1.useState)(false), isOpen = _c[0], setIsOpen = _c[1];
100
249
  var _d = (0, react_1.useState)({ top: 0, left: 0 }), position = _d[0], setPosition = _d[1];
101
250
  var _e = (0, react_1.useState)(0), focusedIndex = _e[0], setFocusedIndex = _e[1];
102
251
  var _f = (0, react_1.useState)(false), isFetching = _f[0], setIsFetching = _f[1];
252
+ var _g = (0, react_1.useState)(), emptyMessage = _g[0], setEmptyMessage = _g[1];
253
+ var _h = (0, react_1.useState)(), note = _h[0], setNote = _h[1];
254
+ var noteRef = (0, react_1.useRef)();
255
+ noteRef.current = note;
256
+ // asked for and not answered yet: the debounce running, or the answer on its way (`pendingRequestRef`)
257
+ var _j = (0, react_1.useState)(false), isRequested = _j[0], setIsRequested = _j[1];
103
258
  // Handle for the deferred `setIsFetching(true)`; cleared on resolve or
104
259
  // close so the loader never flashes on a fast-resolved request.
105
260
  var fetchingTimerRef = (0, react_1.useRef)(null);
106
261
  // Partial token typed since the trigger opened the dropdown; the list
107
262
  // narrows to items whose `filterText || label` matches it.
108
- var _g = (0, react_1.useState)(''), filterPrefix = _g[0], setFilterPrefix = _g[1];
263
+ var _k = (0, react_1.useState)(''), filterPrefix = _k[0], setFilterPrefix = _k[1];
109
264
  var focusedIndexRef = (0, react_1.useRef)(0);
110
265
  var editorRef = (0, react_1.useRef)(null);
111
266
  // "Replace mode": the user clicked a chip and the chosen completion
112
267
  // should replace that node. Holds the chip's Slate path, consumed by
113
268
  // the inserter via `ctx.replacementPath`.
114
269
  var replacingChipPathRef = (0, react_1.useRef)(null);
270
+ /* The chip the list was opened at, kept until the list is drawn closed. A click on that chip closes the list,
271
+ and the popover hears the same click as one outside it first and closes the list then, which forgets the
272
+ chip (`close`): told by `replacingChipPathRef` alone, the chip's own click found no chip and opened the list
273
+ again. */
274
+ var anchoredChipPathRef = (0, react_1.useRef)(null);
115
275
  // Holds a chip-click request made before `isReady`; fired by the effect
116
276
  // below once the session connects so the click isn't dropped.
117
277
  var pendingChipRequestRef = (0, react_1.useRef)(null);
118
- // Timestamp of the last `openAtChip`; `handleExternalClose` uses it to
119
- // suppress the close Reqore fires on the same mousedown that opened it.
120
- var justOpenedAtChipAtRef = (0, react_1.useRef)(0);
121
- var _h = (0, react_1.useState)(false), isReplaceMode = _h[0], setIsReplaceMode = _h[1];
122
- // See `popoverKey` in the result interface — forces a popover re-mount.
123
- var _j = (0, react_1.useState)(0), popoverKey = _j[0], setPopoverKey = _j[1];
278
+ var _l = (0, react_1.useState)(false), isReplaceMode = _l[0], setIsReplaceMode = _l[1];
279
+ // See `popoverKey` in the result interface — forces a popover re-mount. The ref is the key now, before the
280
+ // list is drawn again: a close from the popover it replaced is told apart by it (`handleExternalClose`).
281
+ var _m = (0, react_1.useState)(0), popoverKey = _m[0], setPopoverKey = _m[1];
282
+ var popoverKeyRef = (0, react_1.useRef)(0);
283
+ var _o = (0, react_1.useState)(null), docsFor = _o[0], setDocsFor = _o[1];
284
+ // the template picker in place of the rows, and where it is open
285
+ var _p = (0, react_1.useState)(null), browse = _p[0], setBrowseState = _p[1];
286
+ var browseRef = (0, react_1.useRef)(null);
287
+ var setBrowse = (0, react_1.useCallback)(function (next) {
288
+ browseRef.current = next;
289
+ setBrowseState(next);
290
+ }, []);
291
+ /* Which request is the one the list is waiting for. A newer request, or the list put away (`close`),
292
+ makes an answer still on its way stale, and a stale answer is dropped: it used to open the list after
293
+ the author had dismissed it - typed, pressed Escape before the list came, and the list came anyway,
294
+ under the next tap, which then took one of its rows (qorus#646). */
295
+ var requestGenerationRef = (0, react_1.useRef)(0);
296
+ /* A request typing has asked for and the list has not shown yet: the debounce running, or the server's
297
+ answer on its way. An Escape then puts it away too, as it puts away an open list. */
298
+ var pendingRequestRef = (0, react_1.useRef)(false);
299
+ /* The caret a click, a tap or Tab asked at (`openAtCaret`). Setting Slate's selection to it is a change of
300
+ selection only, which puts an open list away; this one asked for the list, and is not heard as moving off. */
301
+ var askedAtRef = (0, react_1.useRef)(null);
124
302
  (0, react_1.useEffect)(function () {
125
303
  focusedIndexRef.current = focusedIndex;
126
304
  }, [focusedIndex]);
@@ -144,6 +322,9 @@ function useLspAutocomplete(opts) {
144
322
  return items;
145
323
  return items.filter(function (item) {
146
324
  var _a;
325
+ // the row that opens the picker is there whatever is typed
326
+ if (templateRowMarks(item).browseAll)
327
+ return true;
147
328
  var haystack = ((_a = item.raw.filterText) !== null && _a !== void 0 ? _a : item.label)
148
329
  .toLowerCase()
149
330
  .replace(/^[@$/-]+/, '');
@@ -155,38 +336,7 @@ function useLspAutocomplete(opts) {
155
336
  setFocusedIndex(Math.max(0, filteredItems.length - 1));
156
337
  }
157
338
  }, [filteredItems.length, focusedIndex]);
158
- var groups = (0, react_1.useMemo)(function () {
159
- var _a;
160
- if (filteredItems.length === 0)
161
- return [];
162
- // When the server populates `sortText` it has already ranked items;
163
- // use the flat list directly rather than re-ordering across kinds.
164
- // Qonsole takes this path; DPQL has no sortText and falls through.
165
- var hasSortText = filteredItems.some(function (i) { return i.raw.sortText; });
166
- if (hasSortText) {
167
- return [{ label: '', items: filteredItems }];
168
- }
169
- var groupMap = new Map();
170
- for (var _i = 0, filteredItems_1 = filteredItems; _i < filteredItems_1.length; _i++) {
171
- var item = filteredItems_1[_i];
172
- var kind = (_a = item.metadata) === null || _a === void 0 ? void 0 : _a.kind;
173
- var groupLabel = (kind && COMPLETION_KIND_LABELS[kind]) || 'Other';
174
- if (!groupMap.has(groupLabel)) {
175
- groupMap.set(groupLabel, []);
176
- }
177
- groupMap.get(groupLabel).push(item);
178
- }
179
- if (groupMap.size <= 1) {
180
- return [{ label: '', items: filteredItems }];
181
- }
182
- return Array.from(groupMap.entries()).map(function (_a) {
183
- var label = _a[0], groupItems = _a[1];
184
- return ({
185
- label: label,
186
- items: groupItems,
187
- });
188
- });
189
- }, [filteredItems]);
339
+ var groups = (0, react_1.useMemo)(function () { return (0, exports.groupCompletionItems)(filteredItems); }, [filteredItems]);
190
340
  // Fires the LSP request and commits results into state. Separate from
191
341
  // the debounced wrapper so imperative callers (`openAtChip`) can bypass
192
342
  // the typing debounce.
@@ -196,7 +346,7 @@ function useLspAutocomplete(opts) {
196
346
  args_1[_i - 2] = arguments[_i];
197
347
  }
198
348
  return __awaiter(_this, __spreadArray([plainText_1, offset_1], args_1, true), void 0, function (plainText, offset, opts) {
199
- var _a, eager, editor, domRange, rect, lspItems, sortedLspItems, mapped, _b;
349
+ var _a, eager, generation, current, editor, domRange, rect, lspItems, said, substantive, sortedLspItems, mapped, _b;
200
350
  if (opts === void 0) { opts = {}; }
201
351
  return __generator(this, function (_c) {
202
352
  switch (_c.label) {
@@ -204,8 +354,12 @@ function useLspAutocomplete(opts) {
204
354
  _a = opts.eager, eager = _a === void 0 ? true : _a;
205
355
  if (!isReady)
206
356
  return [2 /*return*/];
357
+ generation = ++requestGenerationRef.current;
358
+ pendingRequestRef.current = true;
359
+ setIsRequested(true);
360
+ current = function () { return generation === requestGenerationRef.current; };
207
361
  editor = editorRef.current;
208
- if (editor && editor.selection) {
362
+ if (editor && editor.selection && !anchoredChipPathRef.current) {
209
363
  try {
210
364
  domRange = slate_react_1.ReactEditor.toDOMRange(editor, editor.selection);
211
365
  rect = domRange.getBoundingClientRect();
@@ -232,70 +386,104 @@ function useLspAutocomplete(opts) {
232
386
  _c.label = 1;
233
387
  case 1:
234
388
  _c.trys.push([1, 3, 4, 5]);
235
- return [4 /*yield*/, getCompletions(plainText, offset)];
389
+ return [4 /*yield*/, getCompletions(plainText, offset, typedInTextOf(editorRef.current))];
236
390
  case 2:
237
391
  lspItems = _c.sent();
392
+ if (!current())
393
+ return [2 /*return*/];
238
394
  if (lspItems.length === 0) {
239
395
  setItems([]);
396
+ said = replacingChipPathRef.current ? undefined : emptyMessageAt === null || emptyMessageAt === void 0 ? void 0 : emptyMessageAt(plainText, offset);
397
+ setEmptyMessage(said);
398
+ if (said) {
399
+ setIsOpen(true);
400
+ return [2 /*return*/];
401
+ }
240
402
  // Replace mode keeps the popover open to show "No alternatives".
241
403
  if (!replacingChipPathRef.current) {
242
404
  setIsOpen(false);
243
405
  }
244
406
  return [2 /*return*/];
245
407
  }
408
+ setEmptyMessage(undefined);
409
+ substantive = lspItems.filter(function (item) {
410
+ var _a;
411
+ var marks = ((_a = item.data) !== null && _a !== void 0 ? _a : {});
412
+ return !marks.browseAll && !marks.whole;
413
+ });
414
+ setNote(substantive.length ? undefined : noteAt === null || noteAt === void 0 ? void 0 : noteAt(plainText, offset));
246
415
  sortedLspItems = lspItems.some(function (i) { return i.sortText; })
247
416
  ? __spreadArray([], lspItems, true).sort(function (a, b) { var _a, _b; return ((_a = a.sortText) !== null && _a !== void 0 ? _a : a.label).localeCompare((_b = b.sortText) !== null && _b !== void 0 ? _b : b.label); })
248
417
  : lspItems;
249
- mapped = sortedLspItems.map(function (item) {
250
- var insertText = item.insertText || item.label;
251
- return {
252
- label: item.label,
253
- value: insertText,
254
- icon: (0, helpers_1.mapCompletionKindToIcon)(item.kind),
255
- description: item.detail,
256
- documentation: item.documentation,
257
- kindLabel: item.kind !== undefined
258
- ? COMPLETION_KIND_CHIPS[item.kind]
259
- : undefined,
260
- warning: item.warning,
261
- raw: item,
262
- metadata: {
263
- insertTextFormat: item.insertTextFormat,
264
- retrigger: insertText.endsWith(':'),
265
- kind: item.kind,
266
- },
267
- };
268
- });
418
+ mapped = (0, exports.toDropdownItems)(sortedLspItems);
269
419
  setItems(mapped);
270
420
  setFocusedIndex(0);
271
421
  setIsOpen(true);
272
422
  return [3 /*break*/, 5];
273
423
  case 3:
274
424
  _b = _c.sent();
425
+ if (!current())
426
+ return [2 /*return*/];
275
427
  setItems([]);
276
428
  setIsOpen(false);
277
429
  return [3 /*break*/, 5];
278
430
  case 4:
279
- if (fetchingTimerRef.current !== null) {
280
- clearTimeout(fetchingTimerRef.current);
281
- fetchingTimerRef.current = null;
431
+ // a stale answer leaves the state to the request that replaced it, or to `close`
432
+ if (current()) {
433
+ pendingRequestRef.current = false;
434
+ setIsRequested(false);
435
+ if (fetchingTimerRef.current !== null) {
436
+ clearTimeout(fetchingTimerRef.current);
437
+ fetchingTimerRef.current = null;
438
+ }
439
+ setIsFetching(false);
282
440
  }
283
- setIsFetching(false);
284
441
  return [7 /*endfinally*/];
285
442
  case 5: return [2 /*return*/];
286
443
  }
287
444
  });
288
445
  });
289
- }, [getCompletions, isReady]);
290
- var requestCompletions = (0, react_1.useMemo)(function () { return (0, lodash_1.debounce)(performCompletionRequest, DEBOUNCE_MS); }, [performCompletionRequest]);
446
+ }, [getCompletions, isReady, emptyMessageAt, noteAt]);
447
+ /* One debounced request for the editor's life, sending with the latest `performCompletionRequest`: remade when
448
+ that changed (a host's new catalogue or callback on a re-render), the request waiting to be sent was dropped,
449
+ and what had just been written asked nothing - a context picked listed nothing in it (qorus#646). */
450
+ var performRef = (0, react_1.useRef)(performCompletionRequest);
451
+ performRef.current = performCompletionRequest;
452
+ var requestCompletions = (0, react_1.useMemo)(function () {
453
+ var debounced = (0, lodash_1.debounce)(function () {
454
+ var args = [];
455
+ for (var _i = 0; _i < arguments.length; _i++) {
456
+ args[_i] = arguments[_i];
457
+ }
458
+ return performRef.current.apply(performRef, args);
459
+ }, DEBOUNCE_MS);
460
+ // asked for: pending from now, not only once the debounce runs out
461
+ var request = (function () {
462
+ var args = [];
463
+ for (var _i = 0; _i < arguments.length; _i++) {
464
+ args[_i] = arguments[_i];
465
+ }
466
+ pendingRequestRef.current = true;
467
+ setIsRequested(true);
468
+ return debounced.apply(void 0, args);
469
+ });
470
+ request.cancel = debounced.cancel;
471
+ request.flush = debounced.flush;
472
+ return request;
473
+ }, []);
291
474
  (0, react_1.useEffect)(function () {
292
475
  return function () {
293
476
  requestCompletions.cancel();
294
477
  };
295
478
  }, [requestCompletions]);
296
479
  var close = (0, react_1.useCallback)(function () {
480
+ setDocsFor(null);
481
+ setBrowse(null);
297
482
  setIsOpen(false);
298
483
  setItems([]);
484
+ setEmptyMessage(undefined);
485
+ setNote(undefined);
486
+ setIsRequested(false);
299
487
  setFocusedIndex(0);
300
488
  setFilterPrefix('');
301
489
  setIsReplaceMode(false);
@@ -305,9 +493,63 @@ function useLspAutocomplete(opts) {
305
493
  fetchingTimerRef.current = null;
306
494
  }
307
495
  replacingChipPathRef.current = null;
496
+ // a list put away is at no chip, from now: the next one asked by typing is at the caret
497
+ anchoredChipPathRef.current = null;
308
498
  pendingChipRequestRef.current = null;
499
+ askedAtRef.current = null;
309
500
  requestCompletions.cancel();
501
+ // an answer still on its way is for a list that has been put away
502
+ requestGenerationRef.current++;
503
+ pendingRequestRef.current = false;
310
504
  }, [requestCompletions]);
505
+ /* Escape in the editor before the list has come puts the request away, as Escape puts a list with rows
506
+ away (`useCompletionKeys`, which hears it then). Not taken from the page: with no list shown, an Escape
507
+ may mean something else there too. */
508
+ var showsRows = isOpen && filteredItems.length > 0;
509
+ // the list open with what it says in place of rows: Escape puts it away, and nothing else
510
+ var showsMessage = isOpen && !showsRows && !!emptyMessage;
511
+ (0, react_1.useEffect)(function () {
512
+ if (showsRows)
513
+ return undefined;
514
+ var handleKeyDown = function (event) {
515
+ var editor = editorRef.current;
516
+ /* Enter or Tab where the list has nothing more to offer - a context of free keys and its key written,
517
+ `$static:order.id` - takes what is written: a whole reference, drawn as its chip (`commitTyped`), as a row
518
+ taken is (qorus#646, David's review). */
519
+ if ((event.key === 'Enter' || event.key === 'Tab') && showsMessage && editor && commitTypedRef.current) {
520
+ try {
521
+ if (!slate_react_1.ReactEditor.toDOMNode(editor, editor).contains(event.target))
522
+ return;
523
+ }
524
+ catch (_a) {
525
+ return;
526
+ }
527
+ if (commitTypedRef.current(editor)) {
528
+ event.preventDefault();
529
+ event.stopPropagation();
530
+ close();
531
+ }
532
+ return;
533
+ }
534
+ if (event.key !== 'Escape' || !(pendingRequestRef.current || showsMessage))
535
+ return;
536
+ try {
537
+ if (!editor || !slate_react_1.ReactEditor.toDOMNode(editor, editor).contains(event.target))
538
+ return;
539
+ }
540
+ catch (_b) {
541
+ // the editor is not drawn: nothing of it is in the page to have had the key
542
+ return;
543
+ }
544
+ if (showsMessage) {
545
+ event.preventDefault();
546
+ event.stopPropagation();
547
+ }
548
+ close();
549
+ };
550
+ document.addEventListener('keydown', handleKeyDown, true);
551
+ return function () { return document.removeEventListener('keydown', handleKeyDown, true); };
552
+ }, [showsRows, showsMessage, close]);
311
553
  var positionTrigger = (0, react_1.useCallback)(function (editor) {
312
554
  if (!editor.selection)
313
555
  return;
@@ -343,12 +585,25 @@ function useLspAutocomplete(opts) {
343
585
  // own (intentionally narrow) deps closed over. Same workaround as
344
586
  // `stableOnTagClick` in SmartEditor.
345
587
  var onSlateChangeImplRef = (0, react_1.useRef)(function () { return undefined; });
588
+ // `completeAtCaret`, defined below, for a pick that goes on to ask again
589
+ var completeAtCaretRef = (0, react_1.useRef)(function () { return undefined; });
346
590
  var selectItem = (0, react_1.useCallback)(function (item) {
347
- var _a;
591
+ var _a, _b, _c, _d;
348
592
  var editor = editorRef.current;
349
593
  if (!editor)
350
594
  return;
351
595
  var replacementPath = replacingChipPathRef.current;
596
+ /* A group, or Browse all: the picker opens there, in the list's place, for the pick to go where the row's
597
+ would have gone - in the place of what is typed, or of the chip being replaced. */
598
+ var marks = templateRowMarks(item);
599
+ if (marks.opens || marks.browseAll) {
600
+ setDocsFor(null);
601
+ setBrowse({ levelId: marks.opens ? marks.templateNodeId : undefined });
602
+ setIsOpen(true);
603
+ popoverKeyRef.current += 1;
604
+ setPopoverKey(popoverKeyRef.current);
605
+ return;
606
+ }
352
607
  // The typing path needs a live selection so the inserter knows how
353
608
  // much partial token to delete; replace mode works off a path.
354
609
  if (!editor.selection && !replacementPath)
@@ -358,81 +613,109 @@ function useLspAutocomplete(opts) {
358
613
  var cursorOffset = editor.selection
359
614
  ? converter.selectionToOffset(nodes, editor.selection.anchor.path, editor.selection.anchor.offset)
360
615
  : converter.selectionToOffset(nodes, replacementPath, 0);
361
- inserter(item.raw, editor, {
616
+ /* The text takes the focus back before the pick is written, where the pick was made elsewhere (the picker's
617
+ search box): focused after, with the edit not yet drawn, slate-react puts the focus off to a later timer,
618
+ and the editor's state changes there, outside the event that made the pick. */
619
+ try {
620
+ if (!slate_react_1.ReactEditor.isFocused(editor))
621
+ slate_react_1.ReactEditor.focus(editor);
622
+ }
623
+ catch (_e) {
624
+ // the editor is not in the document: the pick is written all the same
625
+ }
626
+ /* A context, a state or a record taken is written as the text of its reference, and what is in it is
627
+ listed next, as the text is completed on (the edit asks again: it ends with a `:` or a `.`); only a
628
+ whole reference is a chip (qorus#646, David's review: a context picked was an unfinished template). */
629
+ (marks.continues ? templateCompletions_1.templateTextInserter : inserter)(item.raw, editor, {
362
630
  plainText: plainText,
363
631
  cursorOffset: cursorOffset,
364
632
  replacementPath: replacementPath !== null && replacementPath !== void 0 ? replacementPath : undefined,
365
633
  });
634
+ /* What is written goes on (a context, `$data:`, or a path, `$data:receive_order.`): the list stays open
635
+ and is asked again where the text now ends, so what is in it is listed next. Put away and opened again,
636
+ its popover's close came after the new request and dropped it. */
637
+ var written = (_c = (_b = (_a = item.raw.textEdit) === null || _a === void 0 ? void 0 : _a.newText) !== null && _b !== void 0 ? _b : item.raw.insertText) !== null && _c !== void 0 ? _c : item.raw.label;
638
+ if (marks.continues || (!replacementPath && /^[$@][^\s]*[:.]$/.test(written))) {
639
+ // the rows stay until the next level's come: a list left empty is put away, and its close drops the request
640
+ setDocsFor(null);
641
+ // taken from the picker: what follows is listed as typing lists it, in a list of its own (`completeAtCaret`)
642
+ if (browseRef.current) {
643
+ browseRef.current = null;
644
+ setBrowse(null);
645
+ popoverKeyRef.current += 1;
646
+ setPopoverKey(popoverKeyRef.current);
647
+ }
648
+ setFocusedIndex(0);
649
+ replacingChipPathRef.current = null;
650
+ anchoredChipPathRef.current = null;
651
+ completeAtCaretRef.current(editor, editor.children);
652
+ return;
653
+ }
366
654
  close();
367
655
  // Re-trigger completions for partial items (e.g. `$timestamp:` shows
368
656
  // sub-completions for the value).
369
- if ((_a = item.metadata) === null || _a === void 0 ? void 0 : _a.retrigger) {
657
+ if ((_d = item.metadata) === null || _d === void 0 ? void 0 : _d.retrigger) {
370
658
  setTimeout(function () {
371
659
  var newNodes = editor.children;
372
660
  onSlateChangeImplRef.current(editor, newNodes);
373
661
  }, 50);
374
662
  }
375
663
  }, [close, inserter, converter]);
376
- (0, react_1.useEffect)(function () {
377
- // Keyboard nav operates on the filtered list, not the raw items.
378
- if (!isOpen || filteredItems.length === 0)
379
- return undefined;
380
- var handleKeyDown = function (e) {
664
+ var toggleDocs = (0, react_1.useCallback)(function (value) {
665
+ var _a, _b;
666
+ var target = (_b = value !== null && value !== void 0 ? value : (_a = filteredItems[focusedIndexRef.current]) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null;
667
+ setDocsFor(function (shown) { return (shown === target ? null : target); });
668
+ }, [filteredItems]);
669
+ var toggleDocsRef = (0, react_1.useRef)(toggleDocs);
670
+ toggleDocsRef.current = toggleDocs;
671
+ (0, exports.useCompletionKeys)({
672
+ // the picker hears its own keys (`TemplatePicker`)
673
+ isOpen: isOpen && !browse && filteredItems.length > 0,
674
+ count: filteredItems.length,
675
+ setFocusedIndex: setFocusedIndex,
676
+ onAccept: function () {
677
+ var _a;
678
+ /* where none of the rows is what is written (the note says so) and what is written is a whole reference -
679
+ a context of free keys and its key, `$dynamic:order.id` - Enter or Tab takes what is written, its chip;
680
+ else the row the keyboard is on (qorus#646, David's review) */
681
+ var editor = editorRef.current;
682
+ if (noteRef.current && editor && ((_a = commitTypedRef.current) === null || _a === void 0 ? void 0 : _a.call(commitTypedRef, editor))) {
683
+ close();
684
+ return;
685
+ }
686
+ var item = filteredItems[focusedIndexRef.current];
687
+ if (item && editor)
688
+ selectItem(item);
689
+ },
690
+ onClose: close,
691
+ onOtherKey: function (e) {
381
692
  var _a, _b, _c;
382
- switch (e.key) {
383
- case 'ArrowDown':
384
- e.preventDefault();
385
- e.stopPropagation();
386
- setFocusedIndex(function (prev) { return Math.min(prev + 1, filteredItems.length - 1); });
387
- break;
388
- case 'ArrowUp':
389
- e.preventDefault();
390
- e.stopPropagation();
391
- setFocusedIndex(function (prev) { return Math.max(prev - 1, 0); });
392
- break;
393
- case 'Enter':
394
- case 'Tab': {
395
- e.preventDefault();
396
- e.stopPropagation();
397
- var item = filteredItems[focusedIndexRef.current];
398
- if (item && editorRef.current) {
399
- selectItem(item);
400
- }
401
- break;
402
- }
403
- case 'Escape':
404
- e.preventDefault();
405
- e.stopPropagation();
406
- close();
407
- break;
408
- default: {
409
- // `commitCharacters`: typing a commit char accepts the item and
410
- // inserts the char (VS Code semantics).
411
- if (e.key.length !== 1)
412
- break;
413
- var focusedItem = filteredItems[focusedIndexRef.current];
414
- var commits = focusedItem === null || focusedItem === void 0 ? void 0 : focusedItem.raw.commitCharacters;
415
- if (!commits || !commits.includes(e.key))
416
- break;
417
- var editor = editorRef.current;
418
- if (!editor)
419
- break;
420
- e.preventDefault();
421
- e.stopPropagation();
422
- // Don't double-insert when the server's edit already ends with
423
- // the committed char (e.g. `--limit=` for an `=`-committed flag).
424
- var inserted = (_c = (_b = (_a = focusedItem.raw.textEdit) === null || _a === void 0 ? void 0 : _a.newText) !== null && _b !== void 0 ? _b : focusedItem.raw.insertText) !== null && _c !== void 0 ? _c : focusedItem.raw.label;
425
- selectItem(focusedItem);
426
- if (!inserted.endsWith(e.key)) {
427
- slate_1.Transforms.insertText(editor, e.key);
428
- }
429
- break;
430
- }
693
+ // Ctrl+Space: the documentation of the row the keyboard is on, shown under it or put away (VS Code's key)
694
+ if (e.key === ' ' && e.ctrlKey && !e.metaKey && !e.altKey) {
695
+ toggleDocsRef.current();
696
+ return true;
431
697
  }
432
- };
433
- document.addEventListener('keydown', handleKeyDown, true);
434
- return function () { return document.removeEventListener('keydown', handleKeyDown, true); };
435
- }, [isOpen, filteredItems, close, selectItem]);
698
+ // `commitCharacters`: typing a commit char accepts the item and
699
+ // inserts the char (VS Code semantics).
700
+ if (e.key.length !== 1)
701
+ return false;
702
+ var focusedItem = filteredItems[focusedIndexRef.current];
703
+ var commits = focusedItem === null || focusedItem === void 0 ? void 0 : focusedItem.raw.commitCharacters;
704
+ if (!commits || !commits.includes(e.key))
705
+ return false;
706
+ var editor = editorRef.current;
707
+ if (!editor)
708
+ return false;
709
+ // Don't double-insert when the server's edit already ends with
710
+ // the committed char (e.g. `--limit=` for an `=`-committed flag).
711
+ var inserted = (_c = (_b = (_a = focusedItem.raw.textEdit) === null || _a === void 0 ? void 0 : _a.newText) !== null && _b !== void 0 ? _b : focusedItem.raw.insertText) !== null && _c !== void 0 ? _c : focusedItem.raw.label;
712
+ selectItem(focusedItem);
713
+ if (!inserted.endsWith(e.key)) {
714
+ slate_1.Transforms.insertText(editor, e.key);
715
+ }
716
+ return true;
717
+ },
718
+ });
436
719
  /**
437
720
  * Opens, narrows or closes the completions for what the editor holds at its caret, after a content
438
721
  * edit: a trigger character just typed, typing inside a sigil token, narrowing an open list, or
@@ -443,6 +726,14 @@ function useLspAutocomplete(opts) {
443
726
  close();
444
727
  return;
445
728
  }
729
+ /* Typing puts the picker away: what is typed is completed in the rows, or nothing is. Under a key of its own:
730
+ the picker's popover says it closed as it goes, and that is not the list put away. */
731
+ if (browseRef.current) {
732
+ browseRef.current = null;
733
+ setBrowse(null);
734
+ popoverKeyRef.current += 1;
735
+ setPopoverKey(popoverKeyRef.current);
736
+ }
446
737
  var anchor = editor.selection.anchor;
447
738
  var plainText = converter.fromSlateNodes(nodes);
448
739
  var cursorOffset = converter.selectionToOffset(nodes, anchor.path, anchor.offset);
@@ -500,6 +791,7 @@ function useLspAutocomplete(opts) {
500
791
  }
501
792
  close();
502
793
  }, [isOpen, close, findTokenStart, positionTrigger, requestCompletions, triggerCharacters, converter]);
794
+ completeAtCaretRef.current = completeAtCaret;
503
795
  /* An edit made before the session is ready - typing `$` or `@` while the connection is still being
504
796
  made, or its context bound - would otherwise be dropped: the list is closed and nothing asks again,
505
797
  so the trigger the author typed never opens anything. The editor is kept, and once the session is
@@ -529,6 +821,14 @@ function useLspAutocomplete(opts) {
529
821
  // op batch is selection-only.
530
822
  var isContentChange = editor.operations.some(function (op) { return op.type !== 'set_selection'; });
531
823
  if (!isContentChange) {
824
+ // the caret a click asked at, set: the list it asked for stays
825
+ var askedAt = askedAtRef.current;
826
+ if (askedAt &&
827
+ editor.selection &&
828
+ slate_1.Range.isCollapsed(editor.selection) &&
829
+ slate_1.Point.equals(editor.selection.anchor, askedAt)) {
830
+ return;
831
+ }
532
832
  // Replace mode anchors on a chip; the selection echo from the
533
833
  // opening click must not close it (outside-click handler does).
534
834
  if (isOpen && !replacingChipPathRef.current) {
@@ -536,6 +836,7 @@ function useLspAutocomplete(opts) {
536
836
  }
537
837
  return;
538
838
  }
839
+ askedAtRef.current = null;
539
840
  // A content edit in replace mode means the user typed instead of
540
841
  // picking a replacement — fall back to normal flow.
541
842
  if (replacingChipPathRef.current) {
@@ -560,12 +861,11 @@ function useLspAutocomplete(opts) {
560
861
  // Imperative entry for the "replace this chip" flow. Anchors at the
561
862
  // chip's viewport rect and fires a request immediately, bypassing the
562
863
  // typing debounce.
563
- var openAtChip = (0, react_1.useCallback)(function (editor, chipPath, chipRect) {
564
- var _a, _b;
565
- // Clicking the chip the dropdown is already anchored to closes it;
566
- // without this the outside-click suppression below re-opens it on
567
- // every chip click.
568
- var prevPath = replacingChipPathRef.current;
864
+ var openAtChip = (0, react_1.useCallback)(function (editor, chipPath, chipRect, _a) {
865
+ var _b, _c;
866
+ var _d = _a === void 0 ? {} : _a, _e = _d.inItsPlace, inItsPlace = _e === void 0 ? false : _e;
867
+ // Clicking the chip the dropdown is already anchored to closes it.
868
+ var prevPath = anchoredChipPathRef.current;
569
869
  if (isOpen &&
570
870
  prevPath &&
571
871
  prevPath.length === chipPath.length &&
@@ -575,7 +875,7 @@ function useLspAutocomplete(opts) {
575
875
  }
576
876
  editorRef.current = editor;
577
877
  replacingChipPathRef.current = chipPath;
578
- justOpenedAtChipAtRef.current = Date.now();
878
+ anchoredChipPathRef.current = chipPath;
579
879
  setFilterPrefix('');
580
880
  setPosition({ left: chipRect.left, top: chipRect.bottom });
581
881
  // Pre-open for immediate feedback even before the LSP is ready (the
@@ -584,7 +884,8 @@ function useLspAutocomplete(opts) {
584
884
  setFocusedIndex(0);
585
885
  setIsReplaceMode(true);
586
886
  setIsOpen(true);
587
- setPopoverKey(function (k) { return k + 1; });
887
+ popoverKeyRef.current += 1;
888
+ setPopoverKey(popoverKeyRef.current);
588
889
  var nodes = editor.children;
589
890
  var plainText = converter.fromSlateNodes(nodes);
590
891
  // Request at the END of the chip's span — the natural "what could
@@ -592,28 +893,76 @@ function useLspAutocomplete(opts) {
592
893
  // candidates.
593
894
  var chipChildIdx = chipPath[chipPath.length - 1];
594
895
  var paragraph = nodes[chipPath[0]];
595
- var chipNode = (_a = paragraph === null || paragraph === void 0 ? void 0 : paragraph.children) === null || _a === void 0 ? void 0 : _a[chipChildIdx];
896
+ var chipNode = (_b = paragraph === null || paragraph === void 0 ? void 0 : paragraph.children) === null || _b === void 0 ? void 0 : _b[chipChildIdx];
596
897
  var chipText = chipNode && 'value' in chipNode
597
- ? String((_b = chipNode.value) !== null && _b !== void 0 ? _b : '')
898
+ ? String((_c = chipNode.value) !== null && _c !== void 0 ? _c : '')
598
899
  : '';
599
900
  var chipStart = converter.selectionToOffset(nodes, chipPath, 0);
600
901
  var chipEnd = chipStart + chipText.length;
902
+ var asked = inItsPlace ?
903
+ { plainText: plainText.slice(0, chipStart) + plainText.slice(chipEnd), offset: chipStart }
904
+ : { plainText: plainText, offset: chipEnd };
601
905
  if (isReady) {
602
- performCompletionRequest(plainText, chipEnd);
906
+ performCompletionRequest(asked.plainText, asked.offset);
603
907
  }
604
908
  else {
605
- pendingChipRequestRef.current = { plainText: plainText, offset: chipEnd };
909
+ pendingChipRequestRef.current = asked;
606
910
  }
607
911
  }, [isReady, isOpen, close, converter, performCompletionRequest]);
608
- var handleExternalClose = (0, react_1.useCallback)(function (open) {
609
- if (open)
610
- return;
611
- // Within ~300ms of `openAtChip`, this close is the popover reacting
612
- // to the same mousedown that opened it — ignore.
613
- if (Date.now() - justOpenedAtChipAtRef.current < 300) {
912
+ /* A click, a tap or Tab into the editor asks what can be written at the caret it put there, as typing asks
913
+ (qorus#646, David: one list for what can be written, opened by a click as by typing). The caret is the
914
+ page's, given as a Slate point: Slate's own selection follows the page's later, so it is set to it here, for
915
+ the pick to go where the caret is. What is being written at the caret, in the text it is in, filters the
916
+ list as typing does; nothing opens where nothing can be written (`eager: false`). */
917
+ var openAtCaret = (0, react_1.useCallback)(function (editor, caret, rect) {
918
+ var _a, _b, _c, _d;
919
+ editorRef.current = editor;
920
+ replacingChipPathRef.current = null;
921
+ anchoredChipPathRef.current = null;
922
+ setIsReplaceMode(false);
923
+ askedAtRef.current = caret;
924
+ try {
925
+ slate_1.Transforms.select(editor, caret);
926
+ }
927
+ catch (_e) {
928
+ // a point the editor no longer has: nothing is asked
614
929
  return;
615
930
  }
616
- close();
931
+ var nodes = editor.children;
932
+ var plainText = converter.fromSlateNodes(nodes);
933
+ var offset = converter.selectionToOffset(nodes, caret.path, caret.offset);
934
+ var caretPath = caret.path;
935
+ var textNode = (_b = (_a = nodes[caretPath[0]]) === null || _a === void 0 ? void 0 : _a.children) === null || _b === void 0 ? void 0 : _b[caretPath[1]];
936
+ var written = typeof (textNode === null || textNode === void 0 ? void 0 : textNode.text) === 'string' ?
937
+ ((_d = (_c = /[@$/]?[\w.:{}-]*$/.exec(textNode.text.slice(0, caret.offset))) === null || _c === void 0 ? void 0 : _c[0]) !== null && _d !== void 0 ? _d : '')
938
+ : '';
939
+ setFilterPrefix(written);
940
+ setDocsFor(null);
941
+ setItems([]);
942
+ setFocusedIndex(0);
943
+ setEmptyMessage(undefined);
944
+ setPosition({ left: rect.left, top: rect.bottom });
945
+ popoverKeyRef.current += 1;
946
+ setPopoverKey(popoverKeyRef.current);
947
+ requestCompletions.cancel();
948
+ void performCompletionRequest(plainText, offset, { eager: false });
949
+ }, [converter, performCompletionRequest, requestCompletions]);
950
+ /* A click outside the list puts it away, whenever it comes; a close from a popover a chip has replaced does not.
951
+ A click on another chip while the list is open opens the list at that chip, under a new key, and the popover
952
+ it replaces says it closed only after that. Every close was ignored for 300 ms after a chip opened the list
953
+ instead, so a tap on Details soon after the chip's left the list open behind the card, and a later one put it
954
+ away: the frame showed it or not from run to run (qorus#646, DpqlEditor · Details On A Chip On A Touch
955
+ Screen); and a second click on the chip the list was at, later than that, closed it and opened it again. */
956
+ // the list drawn closed is at no chip
957
+ (0, react_1.useEffect)(function () {
958
+ if (!isOpen) {
959
+ anchoredChipPathRef.current = null;
960
+ }
961
+ }, [isOpen]);
962
+ var handleExternalClose = (0, react_1.useCallback)(function (open, key) {
963
+ if (!open && key === popoverKeyRef.current) {
964
+ close();
965
+ }
617
966
  }, [close]);
618
967
  // Fire a deferred chip-click request once the session connects — covers
619
968
  // a click made during the initialize handshake.
@@ -626,6 +975,59 @@ function useLspAutocomplete(opts) {
626
975
  performCompletionRequest(plainText, offset);
627
976
  }
628
977
  }, [isReady, performCompletionRequest]);
978
+ var openBrowse = (0, react_1.useCallback)(function (editor, _a) {
979
+ var _b, _c;
980
+ var rect = _a.rect, caret = _a.caret, replacementPath = _a.replacementPath, levelId = _a.levelId, query = _a.query, selectedValue = _a.selectedValue, arrows = _a.arrows;
981
+ editorRef.current = editor;
982
+ requestCompletions.cancel();
983
+ requestGenerationRef.current++;
984
+ pendingRequestRef.current = false;
985
+ replacingChipPathRef.current = replacementPath !== null && replacementPath !== void 0 ? replacementPath : null;
986
+ anchoredChipPathRef.current = replacementPath !== null && replacementPath !== void 0 ? replacementPath : null;
987
+ setIsReplaceMode(!!replacementPath);
988
+ if (!replacementPath) {
989
+ // the pick goes at the caret given, the editor's own, or its end
990
+ try {
991
+ var at = (_c = caret !== null && caret !== void 0 ? caret : (_b = editor.selection) === null || _b === void 0 ? void 0 : _b.anchor) !== null && _c !== void 0 ? _c : slate_1.Editor.end(editor, []);
992
+ askedAtRef.current = at;
993
+ slate_1.Transforms.select(editor, at);
994
+ }
995
+ catch (_d) {
996
+ // a point the editor no longer has: the pick goes where the editor puts it
997
+ askedAtRef.current = null;
998
+ }
999
+ }
1000
+ setItems([]);
1001
+ setEmptyMessage(undefined);
1002
+ setFilterPrefix('');
1003
+ setDocsFor(null);
1004
+ setPosition({ left: rect.left, top: rect.bottom });
1005
+ setBrowse({ levelId: levelId, query: query, selectedValue: selectedValue, arrows: arrows });
1006
+ setIsOpen(true);
1007
+ popoverKeyRef.current += 1;
1008
+ setPopoverKey(popoverKeyRef.current);
1009
+ }, [requestCompletions]);
1010
+ var pickTemplate = (0, react_1.useCallback)(function (node, written) {
1011
+ // a context gone on into writes its reference (`$local:`); taken whole, its value (`$local:*`)
1012
+ var value = written !== null && written !== void 0 ? written : (node.continues ? node.reference : node.value);
1013
+ if (!value)
1014
+ return;
1015
+ /* what it is, for the editor to write it as it is: a field or a template as its chip, a function, a value or
1016
+ a keyword as text, a template context as text that is completed on (`continues`) */
1017
+ var kind = node.kind === 'field' ? 5
1018
+ : node.kind === 'function' ? 3
1019
+ : node.kind === 'keyword' ? 14
1020
+ : 6;
1021
+ var item = (0, exports.toDropdownItems)([
1022
+ {
1023
+ label: node.label,
1024
+ insertText: value,
1025
+ kind: kind,
1026
+ data: __assign({ templateNodeId: node.id }, (node.continues && !written ? { continues: true } : {})),
1027
+ },
1028
+ ])[0];
1029
+ selectItem(__assign(__assign({}, item), { metadata: __assign(__assign({}, item.metadata), { retrigger: false }) }));
1030
+ }, [selectItem]);
629
1031
  return {
630
1032
  // Expose the post-filter list as `items`; `groups` is filter-derived too.
631
1033
  items: filteredItems,
@@ -633,14 +1035,23 @@ function useLspAutocomplete(opts) {
633
1035
  isOpen: isOpen,
634
1036
  isReplaceMode: isReplaceMode,
635
1037
  isFetching: isFetching,
1038
+ emptyMessage: isOpen ? emptyMessage : undefined,
1039
+ note: isOpen ? note : undefined,
1040
+ isActive: isOpen || isRequested,
636
1041
  focusedIndex: focusedIndex,
637
1042
  close: close,
638
1043
  onSlateChange: onSlateChangeImpl,
639
1044
  onItemSelect: onItemSelect,
1045
+ openAtCaret: openAtCaret,
640
1046
  openAtChip: openAtChip,
641
1047
  handleExternalClose: handleExternalClose,
642
1048
  popoverKey: popoverKey,
643
1049
  position: position,
1050
+ docsFor: docsFor,
1051
+ toggleDocs: toggleDocs,
1052
+ browse: isOpen ? browse : null,
1053
+ openBrowse: openBrowse,
1054
+ pickTemplate: pickTemplate,
644
1055
  };
645
1056
  }
646
1057
  exports.useLspAutocomplete = useLspAutocomplete;