@qoretechnologies/reqraft 0.10.66-pr.152.g3349989 → 0.10.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +420 -63
  39. package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
  40. package/dist/components/dpqlEditor/dpqlInserter.d.ts.map +1 -1
  41. package/dist/components/dpqlEditor/dpqlInserter.js +67 -29
  42. package/dist/components/dpqlEditor/dpqlInserter.js.map +1 -1
  43. package/dist/components/dpqlEditor/dpqlTags.d.ts +17 -7
  44. package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
  45. package/dist/components/dpqlEditor/dpqlTags.js +44 -17
  46. package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
  47. package/dist/components/dpqlEditor/types.d.ts +94 -8
  48. package/dist/components/dpqlEditor/types.d.ts.map +1 -1
  49. package/dist/components/dpqlEditor/useDpqlSession.d.ts +7 -2
  50. package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
  51. package/dist/components/dpqlEditor/useDpqlSession.js +49 -17
  52. package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
  53. package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
  54. package/dist/components/form/engine/CompactRow.js +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 +426 -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 +459 -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 +616 -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 +392 -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 +592 -149
  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 -341
  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 -10091
  603. package/src/components/form/engine/FormEngine.tsx +0 -4569
  604. package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -688
  605. package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -334
  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 -242
  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 -1747
  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 -484
  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 -128
  667. package/src/components/form/fields/binary/Binary.tsx +0 -91
  668. package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -128
  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 -108
  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 -80
  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 -167
  680. package/src/components/form/fields/file/File.tsx +0 -227
  681. package/src/components/form/fields/long-string/LongString.stories.tsx +0 -123
  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 -165
  688. package/src/components/form/fields/number/Number.tsx +0 -160
  689. package/src/components/form/fields/object/Object.stories.tsx +0 -410
  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 -292
  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 -890
  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 -246
  731. package/src/components/form/fields/timeout/Timeout.tsx +0 -87
  732. package/src/components/form/fields/url/Url.stories.tsx +0 -97
  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 -241
  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 -348
  739. package/src/components/log/Log.tsx +0 -285
  740. package/src/components/menu/Menu.stories.tsx +0 -158
  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 -174
  766. package/src/components/supportTicket/AttachmentChips.tsx +0 -147
  767. package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -260
  768. package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -129
  769. package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -590
  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 -186
  773. package/src/components/supportTicket/TicketHeader.tsx +0 -247
  774. package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -109
  775. package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
  776. package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -357
  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 -318
  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 -844
  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 -388
  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 -177
  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 -675
  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 -327
  855. package/src/tracking/ui/ExperimentCard.tsx +0 -667
  856. package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -157
  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,39 @@ 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);
339
+ var groups = (0, react_1.useMemo)(function () { return (0, exports.groupCompletionItems)(filteredItems); }, [filteredItems]);
340
+ /* A list of nothing but Browse all templates, with nothing said above it, is a step for nothing: the picker
341
+ opens in its place, at its top, as taking that row would open it (Foxhoundn on qlip #425: "automatically show
342
+ all the templates if it's the only available option"; David: the picker offers every completion in every
343
+ state). Where the list says something with it (no record fields here, what to write after a context), the
344
+ list stays, for what it says. */
345
+ var onlyBrowseAll = isOpen &&
346
+ !browse &&
347
+ !isFetching &&
348
+ !note &&
349
+ !emptyMessage &&
350
+ filteredItems.length === 1 &&
351
+ !!templateRowMarks(filteredItems[0]).browseAll;
352
+ /* A layout effect, not a passive one: it runs within the commit that leaves only Browse all templates, before
353
+ the next event - an Escape closing the list - can be heard. A passive effect runs after paint, so a close
354
+ landing in that window reopened the picker it had just put away (a flake only a loaded machine lost). */
355
+ (0, react_1.useLayoutEffect)(function () {
356
+ if (!onlyBrowseAll)
357
+ return;
358
+ var editor = editorRef.current;
359
+ var empty = false;
360
+ try {
361
+ empty = !!editor && !converter.fromSlateNodes(editor.children).trim();
178
362
  }
179
- if (groupMap.size <= 1) {
180
- return [{ label: '', items: filteredItems }];
363
+ catch (_a) {
364
+ // the editor is not drawn: the picker opens without the arrows
181
365
  }
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]);
366
+ setDocsFor(null);
367
+ // in an empty text the arrows have nowhere else to go: they move through the picker, as a click there opens it
368
+ setBrowse({ arrows: empty || undefined });
369
+ popoverKeyRef.current += 1;
370
+ setPopoverKey(popoverKeyRef.current);
371
+ }, [onlyBrowseAll, converter, setBrowse]);
190
372
  // Fires the LSP request and commits results into state. Separate from
191
373
  // the debounced wrapper so imperative callers (`openAtChip`) can bypass
192
374
  // the typing debounce.
@@ -196,7 +378,7 @@ function useLspAutocomplete(opts) {
196
378
  args_1[_i - 2] = arguments[_i];
197
379
  }
198
380
  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;
381
+ var _a, eager, generation, current, editor, domRange, rect, lspItems, said, substantive, sortedLspItems, mapped, _b;
200
382
  if (opts === void 0) { opts = {}; }
201
383
  return __generator(this, function (_c) {
202
384
  switch (_c.label) {
@@ -204,8 +386,12 @@ function useLspAutocomplete(opts) {
204
386
  _a = opts.eager, eager = _a === void 0 ? true : _a;
205
387
  if (!isReady)
206
388
  return [2 /*return*/];
389
+ generation = ++requestGenerationRef.current;
390
+ pendingRequestRef.current = true;
391
+ setIsRequested(true);
392
+ current = function () { return generation === requestGenerationRef.current; };
207
393
  editor = editorRef.current;
208
- if (editor && editor.selection) {
394
+ if (editor && editor.selection && !anchoredChipPathRef.current) {
209
395
  try {
210
396
  domRange = slate_react_1.ReactEditor.toDOMRange(editor, editor.selection);
211
397
  rect = domRange.getBoundingClientRect();
@@ -232,70 +418,104 @@ function useLspAutocomplete(opts) {
232
418
  _c.label = 1;
233
419
  case 1:
234
420
  _c.trys.push([1, 3, 4, 5]);
235
- return [4 /*yield*/, getCompletions(plainText, offset)];
421
+ return [4 /*yield*/, getCompletions(plainText, offset, typedInTextOf(editorRef.current))];
236
422
  case 2:
237
423
  lspItems = _c.sent();
424
+ if (!current())
425
+ return [2 /*return*/];
238
426
  if (lspItems.length === 0) {
239
427
  setItems([]);
428
+ said = replacingChipPathRef.current ? undefined : emptyMessageAt === null || emptyMessageAt === void 0 ? void 0 : emptyMessageAt(plainText, offset);
429
+ setEmptyMessage(said);
430
+ if (said) {
431
+ setIsOpen(true);
432
+ return [2 /*return*/];
433
+ }
240
434
  // Replace mode keeps the popover open to show "No alternatives".
241
435
  if (!replacingChipPathRef.current) {
242
436
  setIsOpen(false);
243
437
  }
244
438
  return [2 /*return*/];
245
439
  }
440
+ setEmptyMessage(undefined);
441
+ substantive = lspItems.filter(function (item) {
442
+ var _a;
443
+ var marks = ((_a = item.data) !== null && _a !== void 0 ? _a : {});
444
+ return !marks.browseAll && !marks.whole;
445
+ });
446
+ setNote(substantive.length ? undefined : noteAt === null || noteAt === void 0 ? void 0 : noteAt(plainText, offset));
246
447
  sortedLspItems = lspItems.some(function (i) { return i.sortText; })
247
448
  ? __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
449
  : 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
- });
450
+ mapped = (0, exports.toDropdownItems)(sortedLspItems);
269
451
  setItems(mapped);
270
452
  setFocusedIndex(0);
271
453
  setIsOpen(true);
272
454
  return [3 /*break*/, 5];
273
455
  case 3:
274
456
  _b = _c.sent();
457
+ if (!current())
458
+ return [2 /*return*/];
275
459
  setItems([]);
276
460
  setIsOpen(false);
277
461
  return [3 /*break*/, 5];
278
462
  case 4:
279
- if (fetchingTimerRef.current !== null) {
280
- clearTimeout(fetchingTimerRef.current);
281
- fetchingTimerRef.current = null;
463
+ // a stale answer leaves the state to the request that replaced it, or to `close`
464
+ if (current()) {
465
+ pendingRequestRef.current = false;
466
+ setIsRequested(false);
467
+ if (fetchingTimerRef.current !== null) {
468
+ clearTimeout(fetchingTimerRef.current);
469
+ fetchingTimerRef.current = null;
470
+ }
471
+ setIsFetching(false);
282
472
  }
283
- setIsFetching(false);
284
473
  return [7 /*endfinally*/];
285
474
  case 5: return [2 /*return*/];
286
475
  }
287
476
  });
288
477
  });
289
- }, [getCompletions, isReady]);
290
- var requestCompletions = (0, react_1.useMemo)(function () { return (0, lodash_1.debounce)(performCompletionRequest, DEBOUNCE_MS); }, [performCompletionRequest]);
478
+ }, [getCompletions, isReady, emptyMessageAt, noteAt]);
479
+ /* One debounced request for the editor's life, sending with the latest `performCompletionRequest`: remade when
480
+ that changed (a host's new catalogue or callback on a re-render), the request waiting to be sent was dropped,
481
+ and what had just been written asked nothing - a context picked listed nothing in it (qorus#646). */
482
+ var performRef = (0, react_1.useRef)(performCompletionRequest);
483
+ performRef.current = performCompletionRequest;
484
+ var requestCompletions = (0, react_1.useMemo)(function () {
485
+ var debounced = (0, lodash_1.debounce)(function () {
486
+ var args = [];
487
+ for (var _i = 0; _i < arguments.length; _i++) {
488
+ args[_i] = arguments[_i];
489
+ }
490
+ return performRef.current.apply(performRef, args);
491
+ }, DEBOUNCE_MS);
492
+ // asked for: pending from now, not only once the debounce runs out
493
+ var request = (function () {
494
+ var args = [];
495
+ for (var _i = 0; _i < arguments.length; _i++) {
496
+ args[_i] = arguments[_i];
497
+ }
498
+ pendingRequestRef.current = true;
499
+ setIsRequested(true);
500
+ return debounced.apply(void 0, args);
501
+ });
502
+ request.cancel = debounced.cancel;
503
+ request.flush = debounced.flush;
504
+ return request;
505
+ }, []);
291
506
  (0, react_1.useEffect)(function () {
292
507
  return function () {
293
508
  requestCompletions.cancel();
294
509
  };
295
510
  }, [requestCompletions]);
296
511
  var close = (0, react_1.useCallback)(function () {
512
+ setDocsFor(null);
513
+ setBrowse(null);
297
514
  setIsOpen(false);
298
515
  setItems([]);
516
+ setEmptyMessage(undefined);
517
+ setNote(undefined);
518
+ setIsRequested(false);
299
519
  setFocusedIndex(0);
300
520
  setFilterPrefix('');
301
521
  setIsReplaceMode(false);
@@ -305,9 +525,63 @@ function useLspAutocomplete(opts) {
305
525
  fetchingTimerRef.current = null;
306
526
  }
307
527
  replacingChipPathRef.current = null;
528
+ // a list put away is at no chip, from now: the next one asked by typing is at the caret
529
+ anchoredChipPathRef.current = null;
308
530
  pendingChipRequestRef.current = null;
531
+ askedAtRef.current = null;
309
532
  requestCompletions.cancel();
533
+ // an answer still on its way is for a list that has been put away
534
+ requestGenerationRef.current++;
535
+ pendingRequestRef.current = false;
310
536
  }, [requestCompletions]);
537
+ /* Escape in the editor before the list has come puts the request away, as Escape puts a list with rows
538
+ away (`useCompletionKeys`, which hears it then). Not taken from the page: with no list shown, an Escape
539
+ may mean something else there too. */
540
+ var showsRows = isOpen && filteredItems.length > 0;
541
+ // the list open with what it says in place of rows: Escape puts it away, and nothing else
542
+ var showsMessage = isOpen && !showsRows && !!emptyMessage;
543
+ (0, react_1.useEffect)(function () {
544
+ if (showsRows)
545
+ return undefined;
546
+ var handleKeyDown = function (event) {
547
+ var editor = editorRef.current;
548
+ /* Enter or Tab where the list has nothing more to offer - a context of free keys and its key written,
549
+ `$static:order.id` - takes what is written: a whole reference, drawn as its chip (`commitTyped`), as a row
550
+ taken is (qorus#646, David's review). */
551
+ if ((event.key === 'Enter' || event.key === 'Tab') && showsMessage && editor && commitTypedRef.current) {
552
+ try {
553
+ if (!slate_react_1.ReactEditor.toDOMNode(editor, editor).contains(event.target))
554
+ return;
555
+ }
556
+ catch (_a) {
557
+ return;
558
+ }
559
+ if (commitTypedRef.current(editor)) {
560
+ event.preventDefault();
561
+ event.stopPropagation();
562
+ close();
563
+ }
564
+ return;
565
+ }
566
+ if (event.key !== 'Escape' || !(pendingRequestRef.current || showsMessage))
567
+ return;
568
+ try {
569
+ if (!editor || !slate_react_1.ReactEditor.toDOMNode(editor, editor).contains(event.target))
570
+ return;
571
+ }
572
+ catch (_b) {
573
+ // the editor is not drawn: nothing of it is in the page to have had the key
574
+ return;
575
+ }
576
+ if (showsMessage) {
577
+ event.preventDefault();
578
+ event.stopPropagation();
579
+ }
580
+ close();
581
+ };
582
+ document.addEventListener('keydown', handleKeyDown, true);
583
+ return function () { return document.removeEventListener('keydown', handleKeyDown, true); };
584
+ }, [showsRows, showsMessage, close]);
311
585
  var positionTrigger = (0, react_1.useCallback)(function (editor) {
312
586
  if (!editor.selection)
313
587
  return;
@@ -343,12 +617,25 @@ function useLspAutocomplete(opts) {
343
617
  // own (intentionally narrow) deps closed over. Same workaround as
344
618
  // `stableOnTagClick` in SmartEditor.
345
619
  var onSlateChangeImplRef = (0, react_1.useRef)(function () { return undefined; });
620
+ // `completeAtCaret`, defined below, for a pick that goes on to ask again
621
+ var completeAtCaretRef = (0, react_1.useRef)(function () { return undefined; });
346
622
  var selectItem = (0, react_1.useCallback)(function (item) {
347
- var _a;
623
+ var _a, _b, _c, _d;
348
624
  var editor = editorRef.current;
349
625
  if (!editor)
350
626
  return;
351
627
  var replacementPath = replacingChipPathRef.current;
628
+ /* A group, or Browse all: the picker opens there, in the list's place, for the pick to go where the row's
629
+ would have gone - in the place of what is typed, or of the chip being replaced. */
630
+ var marks = templateRowMarks(item);
631
+ if (marks.opens || marks.browseAll) {
632
+ setDocsFor(null);
633
+ setBrowse({ levelId: marks.opens ? marks.templateNodeId : undefined });
634
+ setIsOpen(true);
635
+ popoverKeyRef.current += 1;
636
+ setPopoverKey(popoverKeyRef.current);
637
+ return;
638
+ }
352
639
  // The typing path needs a live selection so the inserter knows how
353
640
  // much partial token to delete; replace mode works off a path.
354
641
  if (!editor.selection && !replacementPath)
@@ -358,81 +645,109 @@ function useLspAutocomplete(opts) {
358
645
  var cursorOffset = editor.selection
359
646
  ? converter.selectionToOffset(nodes, editor.selection.anchor.path, editor.selection.anchor.offset)
360
647
  : converter.selectionToOffset(nodes, replacementPath, 0);
361
- inserter(item.raw, editor, {
648
+ /* The text takes the focus back before the pick is written, where the pick was made elsewhere (the picker's
649
+ search box): focused after, with the edit not yet drawn, slate-react puts the focus off to a later timer,
650
+ and the editor's state changes there, outside the event that made the pick. */
651
+ try {
652
+ if (!slate_react_1.ReactEditor.isFocused(editor))
653
+ slate_react_1.ReactEditor.focus(editor);
654
+ }
655
+ catch (_e) {
656
+ // the editor is not in the document: the pick is written all the same
657
+ }
658
+ /* A context, a state or a record taken is written as the text of its reference, and what is in it is
659
+ listed next, as the text is completed on (the edit asks again: it ends with a `:` or a `.`); only a
660
+ whole reference is a chip (qorus#646, David's review: a context picked was an unfinished template). */
661
+ (marks.continues ? templateCompletions_1.templateTextInserter : inserter)(item.raw, editor, {
362
662
  plainText: plainText,
363
663
  cursorOffset: cursorOffset,
364
664
  replacementPath: replacementPath !== null && replacementPath !== void 0 ? replacementPath : undefined,
365
665
  });
666
+ /* What is written goes on (a context, `$data:`, or a path, `$data:receive_order.`): the list stays open
667
+ and is asked again where the text now ends, so what is in it is listed next. Put away and opened again,
668
+ its popover's close came after the new request and dropped it. */
669
+ 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;
670
+ if (marks.continues || (!replacementPath && /^[$@][^\s]*[:.]$/.test(written))) {
671
+ // the rows stay until the next level's come: a list left empty is put away, and its close drops the request
672
+ setDocsFor(null);
673
+ // taken from the picker: what follows is listed as typing lists it, in a list of its own (`completeAtCaret`)
674
+ if (browseRef.current) {
675
+ browseRef.current = null;
676
+ setBrowse(null);
677
+ popoverKeyRef.current += 1;
678
+ setPopoverKey(popoverKeyRef.current);
679
+ }
680
+ setFocusedIndex(0);
681
+ replacingChipPathRef.current = null;
682
+ anchoredChipPathRef.current = null;
683
+ completeAtCaretRef.current(editor, editor.children);
684
+ return;
685
+ }
366
686
  close();
367
687
  // Re-trigger completions for partial items (e.g. `$timestamp:` shows
368
688
  // sub-completions for the value).
369
- if ((_a = item.metadata) === null || _a === void 0 ? void 0 : _a.retrigger) {
689
+ if ((_d = item.metadata) === null || _d === void 0 ? void 0 : _d.retrigger) {
370
690
  setTimeout(function () {
371
691
  var newNodes = editor.children;
372
692
  onSlateChangeImplRef.current(editor, newNodes);
373
693
  }, 50);
374
694
  }
375
695
  }, [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) {
696
+ var toggleDocs = (0, react_1.useCallback)(function (value) {
697
+ var _a, _b;
698
+ 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;
699
+ setDocsFor(function (shown) { return (shown === target ? null : target); });
700
+ }, [filteredItems]);
701
+ var toggleDocsRef = (0, react_1.useRef)(toggleDocs);
702
+ toggleDocsRef.current = toggleDocs;
703
+ (0, exports.useCompletionKeys)({
704
+ // the picker hears its own keys (`TemplatePicker`)
705
+ isOpen: isOpen && !browse && filteredItems.length > 0,
706
+ count: filteredItems.length,
707
+ setFocusedIndex: setFocusedIndex,
708
+ onAccept: function () {
709
+ var _a;
710
+ /* where none of the rows is what is written (the note says so) and what is written is a whole reference -
711
+ a context of free keys and its key, `$dynamic:order.id` - Enter or Tab takes what is written, its chip;
712
+ else the row the keyboard is on (qorus#646, David's review) */
713
+ var editor = editorRef.current;
714
+ if (noteRef.current && editor && ((_a = commitTypedRef.current) === null || _a === void 0 ? void 0 : _a.call(commitTypedRef, editor))) {
715
+ close();
716
+ return;
717
+ }
718
+ var item = filteredItems[focusedIndexRef.current];
719
+ if (item && editor)
720
+ selectItem(item);
721
+ },
722
+ onClose: close,
723
+ onOtherKey: function (e) {
381
724
  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
- }
725
+ // Ctrl+Space: the documentation of the row the keyboard is on, shown under it or put away (VS Code's key)
726
+ if (e.key === ' ' && e.ctrlKey && !e.metaKey && !e.altKey) {
727
+ toggleDocsRef.current();
728
+ return true;
431
729
  }
432
- };
433
- document.addEventListener('keydown', handleKeyDown, true);
434
- return function () { return document.removeEventListener('keydown', handleKeyDown, true); };
435
- }, [isOpen, filteredItems, close, selectItem]);
730
+ // `commitCharacters`: typing a commit char accepts the item and
731
+ // inserts the char (VS Code semantics).
732
+ if (e.key.length !== 1)
733
+ return false;
734
+ var focusedItem = filteredItems[focusedIndexRef.current];
735
+ var commits = focusedItem === null || focusedItem === void 0 ? void 0 : focusedItem.raw.commitCharacters;
736
+ if (!commits || !commits.includes(e.key))
737
+ return false;
738
+ var editor = editorRef.current;
739
+ if (!editor)
740
+ return false;
741
+ // Don't double-insert when the server's edit already ends with
742
+ // the committed char (e.g. `--limit=` for an `=`-committed flag).
743
+ 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;
744
+ selectItem(focusedItem);
745
+ if (!inserted.endsWith(e.key)) {
746
+ slate_1.Transforms.insertText(editor, e.key);
747
+ }
748
+ return true;
749
+ },
750
+ });
436
751
  /**
437
752
  * Opens, narrows or closes the completions for what the editor holds at its caret, after a content
438
753
  * edit: a trigger character just typed, typing inside a sigil token, narrowing an open list, or
@@ -443,6 +758,14 @@ function useLspAutocomplete(opts) {
443
758
  close();
444
759
  return;
445
760
  }
761
+ /* Typing puts the picker away: what is typed is completed in the rows, or nothing is. Under a key of its own:
762
+ the picker's popover says it closed as it goes, and that is not the list put away. */
763
+ if (browseRef.current) {
764
+ browseRef.current = null;
765
+ setBrowse(null);
766
+ popoverKeyRef.current += 1;
767
+ setPopoverKey(popoverKeyRef.current);
768
+ }
446
769
  var anchor = editor.selection.anchor;
447
770
  var plainText = converter.fromSlateNodes(nodes);
448
771
  var cursorOffset = converter.selectionToOffset(nodes, anchor.path, anchor.offset);
@@ -500,6 +823,7 @@ function useLspAutocomplete(opts) {
500
823
  }
501
824
  close();
502
825
  }, [isOpen, close, findTokenStart, positionTrigger, requestCompletions, triggerCharacters, converter]);
826
+ completeAtCaretRef.current = completeAtCaret;
503
827
  /* An edit made before the session is ready - typing `$` or `@` while the connection is still being
504
828
  made, or its context bound - would otherwise be dropped: the list is closed and nothing asks again,
505
829
  so the trigger the author typed never opens anything. The editor is kept, and once the session is
@@ -529,6 +853,14 @@ function useLspAutocomplete(opts) {
529
853
  // op batch is selection-only.
530
854
  var isContentChange = editor.operations.some(function (op) { return op.type !== 'set_selection'; });
531
855
  if (!isContentChange) {
856
+ // the caret a click asked at, set: the list it asked for stays
857
+ var askedAt = askedAtRef.current;
858
+ if (askedAt &&
859
+ editor.selection &&
860
+ slate_1.Range.isCollapsed(editor.selection) &&
861
+ slate_1.Point.equals(editor.selection.anchor, askedAt)) {
862
+ return;
863
+ }
532
864
  // Replace mode anchors on a chip; the selection echo from the
533
865
  // opening click must not close it (outside-click handler does).
534
866
  if (isOpen && !replacingChipPathRef.current) {
@@ -536,6 +868,7 @@ function useLspAutocomplete(opts) {
536
868
  }
537
869
  return;
538
870
  }
871
+ askedAtRef.current = null;
539
872
  // A content edit in replace mode means the user typed instead of
540
873
  // picking a replacement — fall back to normal flow.
541
874
  if (replacingChipPathRef.current) {
@@ -560,12 +893,11 @@ function useLspAutocomplete(opts) {
560
893
  // Imperative entry for the "replace this chip" flow. Anchors at the
561
894
  // chip's viewport rect and fires a request immediately, bypassing the
562
895
  // 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;
896
+ var openAtChip = (0, react_1.useCallback)(function (editor, chipPath, chipRect, _a) {
897
+ var _b, _c;
898
+ var _d = _a === void 0 ? {} : _a, _e = _d.inItsPlace, inItsPlace = _e === void 0 ? false : _e;
899
+ // Clicking the chip the dropdown is already anchored to closes it.
900
+ var prevPath = anchoredChipPathRef.current;
569
901
  if (isOpen &&
570
902
  prevPath &&
571
903
  prevPath.length === chipPath.length &&
@@ -575,7 +907,7 @@ function useLspAutocomplete(opts) {
575
907
  }
576
908
  editorRef.current = editor;
577
909
  replacingChipPathRef.current = chipPath;
578
- justOpenedAtChipAtRef.current = Date.now();
910
+ anchoredChipPathRef.current = chipPath;
579
911
  setFilterPrefix('');
580
912
  setPosition({ left: chipRect.left, top: chipRect.bottom });
581
913
  // Pre-open for immediate feedback even before the LSP is ready (the
@@ -584,7 +916,8 @@ function useLspAutocomplete(opts) {
584
916
  setFocusedIndex(0);
585
917
  setIsReplaceMode(true);
586
918
  setIsOpen(true);
587
- setPopoverKey(function (k) { return k + 1; });
919
+ popoverKeyRef.current += 1;
920
+ setPopoverKey(popoverKeyRef.current);
588
921
  var nodes = editor.children;
589
922
  var plainText = converter.fromSlateNodes(nodes);
590
923
  // Request at the END of the chip's span — the natural "what could
@@ -592,28 +925,76 @@ function useLspAutocomplete(opts) {
592
925
  // candidates.
593
926
  var chipChildIdx = chipPath[chipPath.length - 1];
594
927
  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];
928
+ var chipNode = (_b = paragraph === null || paragraph === void 0 ? void 0 : paragraph.children) === null || _b === void 0 ? void 0 : _b[chipChildIdx];
596
929
  var chipText = chipNode && 'value' in chipNode
597
- ? String((_b = chipNode.value) !== null && _b !== void 0 ? _b : '')
930
+ ? String((_c = chipNode.value) !== null && _c !== void 0 ? _c : '')
598
931
  : '';
599
932
  var chipStart = converter.selectionToOffset(nodes, chipPath, 0);
600
933
  var chipEnd = chipStart + chipText.length;
934
+ var asked = inItsPlace ?
935
+ { plainText: plainText.slice(0, chipStart) + plainText.slice(chipEnd), offset: chipStart }
936
+ : { plainText: plainText, offset: chipEnd };
601
937
  if (isReady) {
602
- performCompletionRequest(plainText, chipEnd);
938
+ performCompletionRequest(asked.plainText, asked.offset);
603
939
  }
604
940
  else {
605
- pendingChipRequestRef.current = { plainText: plainText, offset: chipEnd };
941
+ pendingChipRequestRef.current = asked;
606
942
  }
607
943
  }, [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) {
944
+ /* A click, a tap or Tab into the editor asks what can be written at the caret it put there, as typing asks
945
+ (qorus#646, David: one list for what can be written, opened by a click as by typing). The caret is the
946
+ page's, given as a Slate point: Slate's own selection follows the page's later, so it is set to it here, for
947
+ the pick to go where the caret is. What is being written at the caret, in the text it is in, filters the
948
+ list as typing does; nothing opens where nothing can be written (`eager: false`). */
949
+ var openAtCaret = (0, react_1.useCallback)(function (editor, caret, rect) {
950
+ var _a, _b, _c, _d;
951
+ editorRef.current = editor;
952
+ replacingChipPathRef.current = null;
953
+ anchoredChipPathRef.current = null;
954
+ setIsReplaceMode(false);
955
+ askedAtRef.current = caret;
956
+ try {
957
+ slate_1.Transforms.select(editor, caret);
958
+ }
959
+ catch (_e) {
960
+ // a point the editor no longer has: nothing is asked
614
961
  return;
615
962
  }
616
- close();
963
+ var nodes = editor.children;
964
+ var plainText = converter.fromSlateNodes(nodes);
965
+ var offset = converter.selectionToOffset(nodes, caret.path, caret.offset);
966
+ var caretPath = caret.path;
967
+ var textNode = (_b = (_a = nodes[caretPath[0]]) === null || _a === void 0 ? void 0 : _a.children) === null || _b === void 0 ? void 0 : _b[caretPath[1]];
968
+ var written = typeof (textNode === null || textNode === void 0 ? void 0 : textNode.text) === 'string' ?
969
+ ((_d = (_c = /[@$/]?[\w.:{}-]*$/.exec(textNode.text.slice(0, caret.offset))) === null || _c === void 0 ? void 0 : _c[0]) !== null && _d !== void 0 ? _d : '')
970
+ : '';
971
+ setFilterPrefix(written);
972
+ setDocsFor(null);
973
+ setItems([]);
974
+ setFocusedIndex(0);
975
+ setEmptyMessage(undefined);
976
+ setPosition({ left: rect.left, top: rect.bottom });
977
+ popoverKeyRef.current += 1;
978
+ setPopoverKey(popoverKeyRef.current);
979
+ requestCompletions.cancel();
980
+ void performCompletionRequest(plainText, offset, { eager: false });
981
+ }, [converter, performCompletionRequest, requestCompletions]);
982
+ /* A click outside the list puts it away, whenever it comes; a close from a popover a chip has replaced does not.
983
+ A click on another chip while the list is open opens the list at that chip, under a new key, and the popover
984
+ it replaces says it closed only after that. Every close was ignored for 300 ms after a chip opened the list
985
+ instead, so a tap on Details soon after the chip's left the list open behind the card, and a later one put it
986
+ away: the frame showed it or not from run to run (qorus#646, DpqlEditor · Details On A Chip On A Touch
987
+ Screen); and a second click on the chip the list was at, later than that, closed it and opened it again. */
988
+ // the list drawn closed is at no chip
989
+ (0, react_1.useEffect)(function () {
990
+ if (!isOpen) {
991
+ anchoredChipPathRef.current = null;
992
+ }
993
+ }, [isOpen]);
994
+ var handleExternalClose = (0, react_1.useCallback)(function (open, key) {
995
+ if (!open && key === popoverKeyRef.current) {
996
+ close();
997
+ }
617
998
  }, [close]);
618
999
  // Fire a deferred chip-click request once the session connects — covers
619
1000
  // a click made during the initialize handshake.
@@ -626,6 +1007,59 @@ function useLspAutocomplete(opts) {
626
1007
  performCompletionRequest(plainText, offset);
627
1008
  }
628
1009
  }, [isReady, performCompletionRequest]);
1010
+ var openBrowse = (0, react_1.useCallback)(function (editor, _a) {
1011
+ var _b, _c;
1012
+ var rect = _a.rect, caret = _a.caret, replacementPath = _a.replacementPath, levelId = _a.levelId, query = _a.query, selectedValue = _a.selectedValue, arrows = _a.arrows;
1013
+ editorRef.current = editor;
1014
+ requestCompletions.cancel();
1015
+ requestGenerationRef.current++;
1016
+ pendingRequestRef.current = false;
1017
+ replacingChipPathRef.current = replacementPath !== null && replacementPath !== void 0 ? replacementPath : null;
1018
+ anchoredChipPathRef.current = replacementPath !== null && replacementPath !== void 0 ? replacementPath : null;
1019
+ setIsReplaceMode(!!replacementPath);
1020
+ if (!replacementPath) {
1021
+ // the pick goes at the caret given, the editor's own, or its end
1022
+ try {
1023
+ 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, []);
1024
+ askedAtRef.current = at;
1025
+ slate_1.Transforms.select(editor, at);
1026
+ }
1027
+ catch (_d) {
1028
+ // a point the editor no longer has: the pick goes where the editor puts it
1029
+ askedAtRef.current = null;
1030
+ }
1031
+ }
1032
+ setItems([]);
1033
+ setEmptyMessage(undefined);
1034
+ setFilterPrefix('');
1035
+ setDocsFor(null);
1036
+ setPosition({ left: rect.left, top: rect.bottom });
1037
+ setBrowse({ levelId: levelId, query: query, selectedValue: selectedValue, arrows: arrows });
1038
+ setIsOpen(true);
1039
+ popoverKeyRef.current += 1;
1040
+ setPopoverKey(popoverKeyRef.current);
1041
+ }, [requestCompletions]);
1042
+ var pickTemplate = (0, react_1.useCallback)(function (node, written) {
1043
+ // a context gone on into writes its reference (`$local:`); taken whole, its value (`$local:*`)
1044
+ var value = written !== null && written !== void 0 ? written : (node.continues ? node.reference : node.value);
1045
+ if (!value)
1046
+ return;
1047
+ /* 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
1048
+ a keyword as text, a template context as text that is completed on (`continues`) */
1049
+ var kind = node.kind === 'field' ? 5
1050
+ : node.kind === 'function' ? 3
1051
+ : node.kind === 'keyword' ? 14
1052
+ : 6;
1053
+ var item = (0, exports.toDropdownItems)([
1054
+ {
1055
+ label: node.label,
1056
+ insertText: value,
1057
+ kind: kind,
1058
+ data: __assign({ templateNodeId: node.id }, (node.continues && !written ? { continues: true } : {})),
1059
+ },
1060
+ ])[0];
1061
+ selectItem(__assign(__assign({}, item), { metadata: __assign(__assign({}, item.metadata), { retrigger: false }) }));
1062
+ }, [selectItem]);
629
1063
  return {
630
1064
  // Expose the post-filter list as `items`; `groups` is filter-derived too.
631
1065
  items: filteredItems,
@@ -633,14 +1067,23 @@ function useLspAutocomplete(opts) {
633
1067
  isOpen: isOpen,
634
1068
  isReplaceMode: isReplaceMode,
635
1069
  isFetching: isFetching,
1070
+ emptyMessage: isOpen ? emptyMessage : undefined,
1071
+ note: isOpen ? note : undefined,
1072
+ isActive: isOpen || isRequested,
636
1073
  focusedIndex: focusedIndex,
637
1074
  close: close,
638
1075
  onSlateChange: onSlateChangeImpl,
639
1076
  onItemSelect: onItemSelect,
1077
+ openAtCaret: openAtCaret,
640
1078
  openAtChip: openAtChip,
641
1079
  handleExternalClose: handleExternalClose,
642
1080
  popoverKey: popoverKey,
643
1081
  position: position,
1082
+ docsFor: docsFor,
1083
+ toggleDocs: toggleDocs,
1084
+ browse: isOpen ? browse : null,
1085
+ openBrowse: openBrowse,
1086
+ pickTemplate: pickTemplate,
644
1087
  };
645
1088
  }
646
1089
  exports.useLspAutocomplete = useLspAutocomplete;