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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (736) hide show
  1. package/README.md +21 -1
  2. package/dist/components/Description/describedControl.d.ts +48 -0
  3. package/dist/components/Description/describedControl.d.ts.map +1 -0
  4. package/dist/components/Description/describedControl.js +81 -0
  5. package/dist/components/Description/describedControl.js.map +1 -0
  6. package/dist/components/Description/index.d.ts.map +1 -1
  7. package/dist/components/Description/index.js +3 -2
  8. package/dist/components/Description/index.js.map +1 -1
  9. package/dist/components/colorValue/colorValue.d.ts +59 -0
  10. package/dist/components/colorValue/colorValue.d.ts.map +1 -0
  11. package/dist/components/colorValue/colorValue.js +245 -0
  12. package/dist/components/colorValue/colorValue.js.map +1 -0
  13. package/dist/components/colorValue/index.d.ts +34 -0
  14. package/dist/components/colorValue/index.d.ts.map +1 -0
  15. package/dist/components/colorValue/index.js +136 -0
  16. package/dist/components/colorValue/index.js.map +1 -0
  17. package/dist/components/colorValue/labels.d.ts +12 -0
  18. package/dist/components/colorValue/labels.d.ts.map +1 -0
  19. package/dist/components/colorValue/labels.js +11 -0
  20. package/dist/components/colorValue/labels.js.map +1 -0
  21. package/dist/components/composer/Composer.d.ts +1 -1
  22. package/dist/components/composer/Composer.d.ts.map +1 -1
  23. package/dist/components/composer/Composer.js +2 -2
  24. package/dist/components/composer/Composer.js.map +1 -1
  25. package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
  26. package/dist/components/dpqlEditor/DpqlEditor.js +25 -5
  27. package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
  28. package/dist/components/dpqlEditor/dpqlHelpers.d.ts +10 -1
  29. package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
  30. package/dist/components/dpqlEditor/dpqlHelpers.js +30 -13
  31. package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
  32. package/dist/components/dpqlEditor/dpqlTags.d.ts +11 -7
  33. package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
  34. package/dist/components/dpqlEditor/dpqlTags.js +11 -6
  35. package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
  36. package/dist/components/dpqlEditor/types.d.ts +47 -8
  37. package/dist/components/dpqlEditor/types.d.ts.map +1 -1
  38. package/dist/components/dpqlEditor/useDpqlSession.d.ts +2 -2
  39. package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
  40. package/dist/components/dpqlEditor/useDpqlSession.js +16 -7
  41. package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
  42. package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
  43. package/dist/components/form/engine/CompactRow.js +151 -83
  44. package/dist/components/form/engine/CompactRow.js.map +1 -1
  45. package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
  46. package/dist/components/form/engine/CompactToolbar.js +29 -3
  47. package/dist/components/form/engine/CompactToolbar.js.map +1 -1
  48. package/dist/components/form/engine/FormEngine.d.ts +34 -1
  49. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  50. package/dist/components/form/engine/FormEngine.js +487 -87
  51. package/dist/components/form/engine/FormEngine.js.map +1 -1
  52. package/dist/components/form/engine/HiddenFieldsNote.d.ts +28 -0
  53. package/dist/components/form/engine/HiddenFieldsNote.d.ts.map +1 -0
  54. package/dist/components/form/engine/HiddenFieldsNote.js +32 -0
  55. package/dist/components/form/engine/HiddenFieldsNote.js.map +1 -0
  56. package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
  57. package/dist/components/form/engine/OptionFieldMessages.js +24 -3
  58. package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
  59. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts +2 -2
  60. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
  61. package/dist/components/form/engine/_structuredData/SchemaDataView.js +12 -6
  62. package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
  63. package/dist/components/form/engine/compactRowContext.d.ts +19 -0
  64. package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
  65. package/dist/components/form/engine/compactRowContext.js.map +1 -1
  66. package/dist/components/form/engine/compactRowStyles.d.ts +0 -1
  67. package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
  68. package/dist/components/form/engine/compactRowStyles.js +12 -20
  69. package/dist/components/form/engine/compactRowStyles.js.map +1 -1
  70. package/dist/components/form/engine/compactToolbarColors.d.ts +16 -0
  71. package/dist/components/form/engine/compactToolbarColors.d.ts.map +1 -0
  72. package/dist/components/form/engine/compactToolbarColors.js +21 -0
  73. package/dist/components/form/engine/compactToolbarColors.js.map +1 -0
  74. package/dist/components/form/engine/readFirst.d.ts +24 -8
  75. package/dist/components/form/engine/readFirst.d.ts.map +1 -1
  76. package/dist/components/form/engine/readFirst.js +77 -109
  77. package/dist/components/form/engine/readFirst.js.map +1 -1
  78. package/dist/components/form/engine/readFirstColors.d.ts +30 -0
  79. package/dist/components/form/engine/readFirstColors.d.ts.map +1 -0
  80. package/dist/components/form/engine/readFirstColors.js +51 -0
  81. package/dist/components/form/engine/readFirstColors.js.map +1 -0
  82. package/dist/components/form/engine/rowFocus.d.ts +2 -0
  83. package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
  84. package/dist/components/form/engine/rowFocus.js +26 -3
  85. package/dist/components/form/engine/rowFocus.js.map +1 -1
  86. package/dist/components/form/engine/typeChoices.d.ts +1 -1
  87. package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -1
  88. package/dist/components/form/engine/variants/VariantCalmTable.js +2 -1
  89. package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -1
  90. package/dist/components/form/engine/variants/VariantCards.d.ts.map +1 -1
  91. package/dist/components/form/engine/variants/VariantCards.js +2 -1
  92. package/dist/components/form/engine/variants/VariantCards.js.map +1 -1
  93. package/dist/components/form/engine/variants/VariantFocus.js +1 -1
  94. package/dist/components/form/engine/variants/VariantFocus.js.map +1 -1
  95. package/dist/components/form/engine/variants/VariantMinimal.d.ts.map +1 -1
  96. package/dist/components/form/engine/variants/VariantMinimal.js +2 -1
  97. package/dist/components/form/engine/variants/VariantMinimal.js.map +1 -1
  98. package/dist/components/form/engine/variants/variantParts.d.ts +1 -1
  99. package/dist/components/form/engine/variants/variantParts.d.ts.map +1 -1
  100. package/dist/components/form/engine/variants/variantParts.js +25 -17
  101. package/dist/components/form/engine/variants/variantParts.js.map +1 -1
  102. package/dist/components/form/expressions/DpqlRendering.d.ts +1 -1
  103. package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -1
  104. package/dist/components/form/expressions/DpqlRendering.js +3 -3
  105. package/dist/components/form/expressions/DpqlRendering.js.map +1 -1
  106. package/dist/components/form/expressions/ExpressionField.d.ts +41 -3
  107. package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
  108. package/dist/components/form/expressions/ExpressionField.js +396 -99
  109. package/dist/components/form/expressions/ExpressionField.js.map +1 -1
  110. package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
  111. package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
  112. package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
  113. package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
  114. package/dist/components/form/expressions/builder/argumentLabel.js +27 -9
  115. package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
  116. package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
  117. package/dist/components/form/expressions/builder/argumentWrapper.js +4 -2
  118. package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
  119. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
  120. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +5 -4
  121. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -1
  122. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +1 -1
  123. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -1
  124. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +6 -3
  125. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
  126. package/dist/components/form/expressions/builder/index.d.ts +24 -2
  127. package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
  128. package/dist/components/form/expressions/builder/index.js +121 -77
  129. package/dist/components/form/expressions/builder/index.js.map +1 -1
  130. package/dist/components/form/expressions/builder/item.d.ts +6 -2
  131. package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
  132. package/dist/components/form/expressions/builder/item.js +19 -5
  133. package/dist/components/form/expressions/builder/item.js.map +1 -1
  134. package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
  135. package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
  136. package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
  137. package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
  138. package/dist/components/form/expressions/expressionOperands.js +97 -0
  139. package/dist/components/form/expressions/expressionOperands.js.map +1 -0
  140. package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
  141. package/dist/components/form/expressions/mockExpressions.js +22 -5
  142. package/dist/components/form/expressions/mockExpressions.js.map +1 -1
  143. package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
  144. package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
  145. package/dist/components/form/expressions/renderExpressionToText.js +35 -9
  146. package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
  147. package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
  148. package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
  149. package/dist/components/form/expressions/textOfExpression.js +37 -0
  150. package/dist/components/form/expressions/textOfExpression.js.map +1 -0
  151. package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
  152. package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
  153. package/dist/components/form/expressions/useExpressionType.js +181 -0
  154. package/dist/components/form/expressions/useExpressionType.js.map +1 -0
  155. package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
  156. package/dist/components/form/expressions/useRenderExpression.js +7 -7
  157. package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
  158. package/dist/components/form/fields/Field.d.ts.map +1 -1
  159. package/dist/components/form/fields/Field.js +20 -7
  160. package/dist/components/form/fields/Field.js.map +1 -1
  161. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
  162. package/dist/components/form/fields/allowed-values/AllowedValues.js +17 -4
  163. package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
  164. package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
  165. package/dist/components/form/fields/array/ArrayAuto.js +24 -0
  166. package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
  167. package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
  168. package/dist/components/form/fields/array/ArrayAutoField.js +36 -13
  169. package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
  170. package/dist/components/form/fields/auto/AutoFormField.d.ts +20 -1
  171. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
  172. package/dist/components/form/fields/auto/AutoFormField.js +81 -36
  173. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
  174. package/dist/components/form/fields/auto/hostEditorValue.d.ts +30 -0
  175. package/dist/components/form/fields/auto/hostEditorValue.d.ts.map +1 -0
  176. package/dist/components/form/fields/auto/hostEditorValue.js +53 -0
  177. package/dist/components/form/fields/auto/hostEditorValue.js.map +1 -0
  178. package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
  179. package/dist/components/form/fields/binary/Binary.js +23 -3
  180. package/dist/components/form/fields/binary/Binary.js.map +1 -1
  181. package/dist/components/form/fields/boolean/Boolean.d.ts +5 -0
  182. package/dist/components/form/fields/boolean/Boolean.d.ts.map +1 -1
  183. package/dist/components/form/fields/boolean/Boolean.js +9 -1
  184. package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
  185. package/dist/components/form/fields/color/Color.d.ts +103 -16
  186. package/dist/components/form/fields/color/Color.d.ts.map +1 -1
  187. package/dist/components/form/fields/color/Color.js +611 -16
  188. package/dist/components/form/fields/color/Color.js.map +1 -1
  189. package/dist/components/form/fields/emittedValues.d.ts +34 -3
  190. package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
  191. package/dist/components/form/fields/emittedValues.js +24 -1
  192. package/dist/components/form/fields/emittedValues.js.map +1 -1
  193. package/dist/components/form/fields/file/File.d.ts +1 -1
  194. package/dist/components/form/fields/file/File.d.ts.map +1 -1
  195. package/dist/components/form/fields/file/File.js +4 -2
  196. package/dist/components/form/fields/file/File.js.map +1 -1
  197. package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
  198. package/dist/components/form/fields/long-string/LongString.js +17 -3
  199. package/dist/components/form/fields/long-string/LongString.js.map +1 -1
  200. package/dist/components/form/fields/markdown/MarkdownView.js +1 -1
  201. package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
  202. package/dist/components/form/fields/multi-select/MultiSelectFormField.js +4 -1
  203. package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
  204. package/dist/components/form/fields/number/Number.d.ts +6 -0
  205. package/dist/components/form/fields/number/Number.d.ts.map +1 -1
  206. package/dist/components/form/fields/number/Number.js +41 -6
  207. package/dist/components/form/fields/number/Number.js.map +1 -1
  208. package/dist/components/form/fields/object/Object.d.ts +1 -1
  209. package/dist/components/form/fields/object/Object.d.ts.map +1 -1
  210. package/dist/components/form/fields/object/Object.js +4 -2
  211. package/dist/components/form/fields/object/Object.js.map +1 -1
  212. package/dist/components/form/fields/pendingEdit.d.ts +52 -0
  213. package/dist/components/form/fields/pendingEdit.d.ts.map +1 -0
  214. package/dist/components/form/fields/pendingEdit.js +79 -0
  215. package/dist/components/form/fields/pendingEdit.js.map +1 -0
  216. package/dist/components/form/fields/rich-text/RichText.d.ts +8 -1
  217. package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
  218. package/dist/components/form/fields/rich-text/RichText.js +190 -81
  219. package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
  220. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts +18 -0
  221. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts.map +1 -0
  222. package/dist/components/form/fields/rich-text/useTemplateTags.js +49 -0
  223. package/dist/components/form/fields/rich-text/useTemplateTags.js.map +1 -0
  224. package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -1
  225. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +4 -1
  226. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -1
  227. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -1
  228. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +20 -5
  229. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -1
  230. package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -1
  231. package/dist/components/form/fields/schema-definition/TableEditor.js +10 -2
  232. package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -1
  233. package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -1
  234. package/dist/components/form/fields/schema-definition/index.js +8 -4
  235. package/dist/components/form/fields/schema-definition/index.js.map +1 -1
  236. package/dist/components/form/fields/select/Select.d.ts +2 -0
  237. package/dist/components/form/fields/select/Select.d.ts.map +1 -1
  238. package/dist/components/form/fields/select/Select.js +19 -10
  239. package/dist/components/form/fields/select/Select.js.map +1 -1
  240. package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
  241. package/dist/components/form/fields/select/SelectCollection.js +8 -2
  242. package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
  243. package/dist/components/form/fields/select/unavailableRow.d.ts +23 -0
  244. package/dist/components/form/fields/select/unavailableRow.d.ts.map +1 -0
  245. package/dist/components/form/fields/select/unavailableRow.js +55 -0
  246. package/dist/components/form/fields/select/unavailableRow.js.map +1 -0
  247. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +5 -5
  248. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
  249. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +11 -4
  250. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
  251. package/dist/components/form/fields/template/TemplateBrowser.d.ts +22 -0
  252. package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
  253. package/dist/components/form/fields/template/TemplateBrowser.js +54 -0
  254. package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
  255. package/dist/components/form/fields/template/TemplateField.d.ts +83 -1
  256. package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
  257. package/dist/components/form/fields/template/TemplateField.js +535 -85
  258. package/dist/components/form/fields/template/TemplateField.js.map +1 -1
  259. package/dist/components/form/fields/template/TemplateText.d.ts +0 -17
  260. package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -1
  261. package/dist/components/form/fields/template/TemplateText.js +8 -4
  262. package/dist/components/form/fields/template/TemplateText.js.map +1 -1
  263. package/dist/components/form/fields/template/writtenAsText.d.ts +55 -0
  264. package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
  265. package/dist/components/form/fields/template/writtenAsText.js +188 -0
  266. package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
  267. package/dist/components/form/index.d.ts +10 -0
  268. package/dist/components/form/index.d.ts.map +1 -1
  269. package/dist/components/form/index.js +23 -1
  270. package/dist/components/form/index.js.map +1 -1
  271. package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
  272. package/dist/components/imageLightbox/ImageLightbox.js +19 -7
  273. package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
  274. package/dist/components/log/Log.d.ts.map +1 -1
  275. package/dist/components/log/Log.js +15 -7
  276. package/dist/components/log/Log.js.map +1 -1
  277. package/dist/components/menu/Menu.d.ts.map +1 -1
  278. package/dist/components/menu/Menu.js +19 -10
  279. package/dist/components/menu/Menu.js.map +1 -1
  280. package/dist/components/smartEditor/CompletionMenu.d.ts +43 -0
  281. package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
  282. package/dist/components/smartEditor/CompletionMenu.js +196 -0
  283. package/dist/components/smartEditor/CompletionMenu.js.map +1 -0
  284. package/dist/components/smartEditor/MarkdownDoc.d.ts +1 -1
  285. package/dist/components/smartEditor/MarkdownDoc.js +1 -1
  286. package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
  287. package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
  288. package/dist/components/smartEditor/SmartEditor.js +51 -136
  289. package/dist/components/smartEditor/SmartEditor.js.map +1 -1
  290. package/dist/components/smartEditor/completionStyle.d.ts +27 -0
  291. package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
  292. package/dist/components/smartEditor/completionStyle.js +66 -0
  293. package/dist/components/smartEditor/completionStyle.js.map +1 -0
  294. package/dist/components/smartEditor/index.d.ts +5 -1
  295. package/dist/components/smartEditor/index.d.ts.map +1 -1
  296. package/dist/components/smartEditor/index.js +19 -1
  297. package/dist/components/smartEditor/index.js.map +1 -1
  298. package/dist/components/smartEditor/templateCompletions.d.ts +18 -0
  299. package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
  300. package/dist/components/smartEditor/templateCompletions.js +94 -0
  301. package/dist/components/smartEditor/templateCompletions.js.map +1 -0
  302. package/dist/components/smartEditor/types.d.ts +12 -1
  303. package/dist/components/smartEditor/types.d.ts.map +1 -1
  304. package/dist/components/smartEditor/useLspAutocomplete.d.ts +32 -0
  305. package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
  306. package/dist/components/smartEditor/useLspAutocomplete.js +228 -118
  307. package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
  308. package/dist/components/smartEditor/useLspHover.d.ts +22 -7
  309. package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
  310. package/dist/components/smartEditor/useLspHover.js +86 -17
  311. package/dist/components/smartEditor/useLspHover.js.map +1 -1
  312. package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
  313. package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
  314. package/dist/components/smartEditor/useLspSession.d.ts +6 -0
  315. package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
  316. package/dist/components/smartEditor/useLspSession.js +7 -6
  317. package/dist/components/smartEditor/useLspSession.js.map +1 -1
  318. package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -1
  319. package/dist/components/supportTicket/AttachmentChips.js +15 -5
  320. package/dist/components/supportTicket/AttachmentChips.js.map +1 -1
  321. package/dist/components/supportTicket/ReferencePicker.d.ts +9 -2
  322. package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
  323. package/dist/components/supportTicket/ReferencePicker.js +27 -6
  324. package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
  325. package/dist/components/supportTicket/TicketHeader.d.ts +3 -4
  326. package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
  327. package/dist/components/supportTicket/TicketHeader.js +20 -2
  328. package/dist/components/supportTicket/TicketHeader.js.map +1 -1
  329. package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
  330. package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
  331. package/dist/components/ticketReferences/TicketReferences.js +9 -4
  332. package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
  333. package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
  334. package/dist/components/ticketThread/TicketThread.js +36 -11
  335. package/dist/components/ticketThread/TicketThread.js.map +1 -1
  336. package/dist/helpers/descriptionTooltip.d.ts +43 -0
  337. package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
  338. package/dist/helpers/descriptionTooltip.js +70 -0
  339. package/dist/helpers/descriptionTooltip.js.map +1 -0
  340. package/dist/helpers/domProps.d.ts +5 -0
  341. package/dist/helpers/domProps.d.ts.map +1 -0
  342. package/dist/helpers/domProps.js +47 -0
  343. package/dist/helpers/domProps.js.map +1 -0
  344. package/dist/helpers/expressions.d.ts +107 -2
  345. package/dist/helpers/expressions.d.ts.map +1 -1
  346. package/dist/helpers/expressions.js +223 -8
  347. package/dist/helpers/expressions.js.map +1 -1
  348. package/dist/helpers/hoveringPointer.d.ts +26 -0
  349. package/dist/helpers/hoveringPointer.d.ts.map +1 -0
  350. package/dist/helpers/hoveringPointer.js +29 -0
  351. package/dist/helpers/hoveringPointer.js.map +1 -0
  352. package/dist/helpers/markdownText.d.ts +14 -0
  353. package/dist/helpers/markdownText.d.ts.map +1 -0
  354. package/dist/helpers/markdownText.js +160 -0
  355. package/dist/helpers/markdownText.js.map +1 -0
  356. package/dist/helpers/qorusTypeCatalogue.d.ts +53 -0
  357. package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
  358. package/dist/helpers/qorusTypeCatalogue.js +262 -0
  359. package/dist/helpers/qorusTypeCatalogue.js.map +1 -0
  360. package/dist/helpers/readableColors.d.ts +36 -0
  361. package/dist/helpers/readableColors.d.ts.map +1 -0
  362. package/dist/helpers/readableColors.js +116 -0
  363. package/dist/helpers/readableColors.js.map +1 -0
  364. package/dist/helpers/templateItems.d.ts +2 -2
  365. package/dist/helpers/templateItems.d.ts.map +1 -1
  366. package/dist/helpers/templateItems.js +6 -4
  367. package/dist/helpers/templateItems.js.map +1 -1
  368. package/dist/helpers/templates.d.ts +26 -1
  369. package/dist/helpers/templates.d.ts.map +1 -1
  370. package/dist/helpers/templates.js +41 -6
  371. package/dist/helpers/templates.js.map +1 -1
  372. package/dist/helpers/validations.d.ts +9 -0
  373. package/dist/helpers/validations.d.ts.map +1 -1
  374. package/dist/helpers/validations.js +139 -33
  375. package/dist/helpers/validations.js.map +1 -1
  376. package/dist/hooks/useQorusTypes.d.ts +7 -15
  377. package/dist/hooks/useQorusTypes.d.ts.map +1 -1
  378. package/dist/hooks/useQorusTypes.js +25 -166
  379. package/dist/hooks/useQorusTypes.js.map +1 -1
  380. package/dist/hooks/useReadableIntentShade.d.ts +9 -0
  381. package/dist/hooks/useReadableIntentShade.d.ts.map +1 -0
  382. package/dist/hooks/useReadableIntentShade.js +23 -0
  383. package/dist/hooks/useReadableIntentShade.js.map +1 -0
  384. package/dist/hooks/useReadableOpacity.d.ts +6 -0
  385. package/dist/hooks/useReadableOpacity.d.ts.map +1 -0
  386. package/dist/hooks/useReadableOpacity.js +17 -0
  387. package/dist/hooks/useReadableOpacity.js.map +1 -0
  388. package/dist/index.d.ts +1 -0
  389. package/dist/index.d.ts.map +1 -1
  390. package/dist/index.js +1 -0
  391. package/dist/index.js.map +1 -1
  392. package/dist/tracking/ui/ExperimentCard.d.ts +1 -1
  393. package/dist/tracking/ui/ExperimentCard.d.ts.map +1 -1
  394. package/dist/tracking/ui/ExperimentCard.js +26 -10
  395. package/dist/tracking/ui/ExperimentCard.js.map +1 -1
  396. package/dist/tracking/ui/card.d.ts +2 -2
  397. package/dist/tracking/ui/card.d.ts.map +1 -1
  398. package/dist/tracking/ui/card.js +2 -2
  399. package/dist/tracking/ui/card.js.map +1 -1
  400. package/dist/tracking/ui/readable.d.ts +14 -0
  401. package/dist/tracking/ui/readable.d.ts.map +1 -0
  402. package/dist/tracking/ui/readable.js +60 -0
  403. package/dist/tracking/ui/readable.js.map +1 -0
  404. package/package.json +14 -5
  405. package/.claude/CLAUDE.md +0 -317
  406. package/.tasks/EXPORT_EXPRESSION_BUILDER.md +0 -38
  407. package/.tasks/EXPRESSION_BUILDER_REPORT.md +0 -149
  408. package/.tasks/EXPRESSION_FIELD_SEAMS.md +0 -66
  409. package/.tasks/FIELD_STACK_REPORT.md +0 -234
  410. package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +0 -558
  411. package/.tasks/FORM_ENGINE_EXPRESSIONS.md +0 -197
  412. package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +0 -95
  413. package/.tasks/FORM_FIELD_EXTRAS.md +0 -72
  414. package/.tasks/INDEX.md +0 -111
  415. package/.tasks/LSP_SHARED_CONNECTION.md +0 -75
  416. package/.tasks/QONSOLE_ASSIST_FEATURES.md +0 -306
  417. package/.tasks/RENDER_EXPRESSION_LSP.md +0 -159
  418. package/.tasks/REQRAFT_AUTO_FIELD.md +0 -176
  419. package/.tasks/SCHEMA_DEFINITION_FIELD.md +0 -250
  420. package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +0 -340
  421. package/.tasks/SMART_EDITOR_LSP_FEATURES.md +0 -299
  422. package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +0 -280
  423. package/.tasks/SMART_EDITOR_UX_POLISH.md +0 -383
  424. package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +0 -246
  425. package/.tasks/STORY_NETWORK_ISOLATION.md +0 -98
  426. package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +0 -72
  427. package/CODE_OF_CONDUCT.md +0 -105
  428. package/CONTRIBUTING.MD +0 -78
  429. package/SECURITY.md +0 -3
  430. package/chromatic.config.json +0 -5
  431. package/design/COMPACT_ENGINE_REDESIGN.md +0 -156
  432. package/design/COMPACT_INFO_DISPLAY.md +0 -87
  433. package/design/COMPACT_PARITY.md +0 -85
  434. package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +0 -92
  435. package/design/FORM_ENGINE_COMPACT.md +0 -300
  436. package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +0 -353
  437. package/design/FORM_ENGINE_EXPRESSIONS.md +0 -257
  438. package/design/FORM_ENGINE_FIELD_MIGRATION.md +0 -419
  439. package/design/IDE_INTEGRATION.md +0 -64
  440. package/design/RENDER_EXPRESSION_TRANSPORT.md +0 -156
  441. package/design/SELECT_DIALOG_FLOOR.md +0 -86
  442. package/design/SMART_EDITOR_UX.md +0 -438
  443. package/design/TRACKING.md +0 -290
  444. package/design/UNAVAILABLE_ALLOWED_VALUES.md +0 -226
  445. package/src/components/Description/index.tsx +0 -254
  446. package/src/components/Description/markdownRendererContext.tsx +0 -29
  447. package/src/components/FocusedEditing/index.tsx +0 -50
  448. package/src/components/codeSize/index.tsx +0 -79
  449. package/src/components/composer/Composer.stories.tsx +0 -238
  450. package/src/components/composer/Composer.tsx +0 -554
  451. package/src/components/composer/helpers.ts +0 -74
  452. package/src/components/composer/index.ts +0 -2
  453. package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -1183
  454. package/src/components/dpqlEditor/DpqlEditor.tsx +0 -219
  455. package/src/components/dpqlEditor/dpqlHelpers.ts +0 -287
  456. package/src/components/dpqlEditor/dpqlInserter.ts +0 -121
  457. package/src/components/dpqlEditor/dpqlProbe.ts +0 -165
  458. package/src/components/dpqlEditor/dpqlTags.ts +0 -114
  459. package/src/components/dpqlEditor/index.ts +0 -41
  460. package/src/components/dpqlEditor/types.ts +0 -203
  461. package/src/components/dpqlEditor/useDpqlProbe.ts +0 -33
  462. package/src/components/dpqlEditor/useDpqlSession.ts +0 -411
  463. package/src/components/form/engine/CompactRow.tsx +0 -2620
  464. package/src/components/form/engine/CompactToolbar.tsx +0 -330
  465. package/src/components/form/engine/FormEngine.stories.tsx +0 -9920
  466. package/src/components/form/engine/FormEngine.tsx +0 -4569
  467. package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
  468. package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -331
  469. package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
  470. package/src/components/form/engine/OptionFieldMessages.tsx +0 -477
  471. package/src/components/form/engine/OptionsHelpDialog.tsx +0 -29
  472. package/src/components/form/engine/__fixtures__/basicFormOptions.ts +0 -309
  473. package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +0 -45
  474. package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +0 -233
  475. package/src/components/form/engine/_structuredData/SchemaDataView.tsx +0 -742
  476. package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +0 -85
  477. package/src/components/form/engine/_structuredData/StructuredDataView.tsx +0 -75
  478. package/src/components/form/engine/_structuredData/structuredData.ts +0 -145
  479. package/src/components/form/engine/compactRowContext.ts +0 -148
  480. package/src/components/form/engine/compactRowStyles.ts +0 -898
  481. package/src/components/form/engine/compactToolbarContext.ts +0 -69
  482. package/src/components/form/engine/optionActions.ts +0 -128
  483. package/src/components/form/engine/optionsContext.ts +0 -24
  484. package/src/components/form/engine/readFirst.ts +0 -1077
  485. package/src/components/form/engine/rendererTypes.ts +0 -107
  486. package/src/components/form/engine/revealRow.ts +0 -123
  487. package/src/components/form/engine/rowFocus.ts +0 -101
  488. package/src/components/form/engine/rowMenuContext.ts +0 -159
  489. package/src/components/form/engine/rowOpenPicker.ts +0 -27
  490. package/src/components/form/engine/typeChoices.ts +0 -63
  491. package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +0 -159
  492. package/src/components/form/engine/variants/VariantCalmTable.tsx +0 -244
  493. package/src/components/form/engine/variants/VariantCards.tsx +0 -212
  494. package/src/components/form/engine/variants/VariantFocus.tsx +0 -382
  495. package/src/components/form/engine/variants/VariantMinimal.tsx +0 -170
  496. package/src/components/form/engine/variants/focusDemo.ts +0 -145
  497. package/src/components/form/engine/variants/variantModel.ts +0 -223
  498. package/src/components/form/engine/variants/variantParts.tsx +0 -313
  499. package/src/components/form/expressions/DpqlRendering.tsx +0 -85
  500. package/src/components/form/expressions/ExpressionField.stories.tsx +0 -1395
  501. package/src/components/form/expressions/ExpressionField.tsx +0 -503
  502. package/src/components/form/expressions/argumentPresence.ts +0 -213
  503. package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +0 -1683
  504. package/src/components/form/expressions/builder/argumentDetail.tsx +0 -17
  505. package/src/components/form/expressions/builder/argumentLabel.tsx +0 -146
  506. package/src/components/form/expressions/builder/argumentSlot.tsx +0 -101
  507. package/src/components/form/expressions/builder/argumentWrapper.tsx +0 -243
  508. package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +0 -120
  509. package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +0 -69
  510. package/src/components/form/expressions/builder/index.tsx +0 -1545
  511. package/src/components/form/expressions/builder/item.tsx +0 -89
  512. package/src/components/form/expressions/builder/moveToPositionStrip.tsx +0 -156
  513. package/src/components/form/expressions/builder/renderTemplate.tsx +0 -42
  514. package/src/components/form/expressions/dpqlMockLanguage.ts +0 -566
  515. package/src/components/form/expressions/dpqlMockLsp.ts +0 -126
  516. package/src/components/form/expressions/mockExpressions.ts +0 -317
  517. package/src/components/form/expressions/renderExpressionToText.ts +0 -137
  518. package/src/components/form/expressions/types.ts +0 -110
  519. package/src/components/form/expressions/useExpressions.ts +0 -101
  520. package/src/components/form/expressions/useRenderExpression.ts +0 -165
  521. package/src/components/form/fields/Field.stories.tsx +0 -143
  522. package/src/components/form/fields/Field.tsx +0 -732
  523. package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -297
  524. package/src/components/form/fields/array/ArrayAuto.tsx +0 -237
  525. package/src/components/form/fields/array/ArrayAutoField.stories.tsx +0 -475
  526. package/src/components/form/fields/array/ArrayAutoField.tsx +0 -367
  527. package/src/components/form/fields/auto/AutoFormField.stories.tsx +0 -825
  528. package/src/components/form/fields/auto/AutoFormField.tsx +0 -1164
  529. package/src/components/form/fields/binary/Binary.stories.tsx +0 -122
  530. package/src/components/form/fields/binary/Binary.tsx +0 -91
  531. package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -125
  532. package/src/components/form/fields/boolean/Boolean.tsx +0 -34
  533. package/src/components/form/fields/byte-size/ByteSize.stories.tsx +0 -87
  534. package/src/components/form/fields/byte-size/ByteSize.tsx +0 -58
  535. package/src/components/form/fields/color/Color.stories.tsx +0 -99
  536. package/src/components/form/fields/color/Color.tsx +0 -46
  537. package/src/components/form/fields/cron/Cron.stories.tsx +0 -68
  538. package/src/components/form/fields/cron/Cron.tsx +0 -80
  539. package/src/components/form/fields/date/Date.stories.tsx +0 -77
  540. package/src/components/form/fields/date/Date.tsx +0 -55
  541. package/src/components/form/fields/emittedValues.ts +0 -70
  542. package/src/components/form/fields/file/File.stories.tsx +0 -161
  543. package/src/components/form/fields/file/File.tsx +0 -227
  544. package/src/components/form/fields/long-string/LongString.stories.tsx +0 -120
  545. package/src/components/form/fields/long-string/LongString.tsx +0 -130
  546. package/src/components/form/fields/markdown/Markdown.stories.tsx +0 -76
  547. package/src/components/form/fields/markdown/Markdown.tsx +0 -81
  548. package/src/components/form/fields/markdown/MarkdownView.tsx +0 -222
  549. package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +0 -139
  550. package/src/components/form/fields/number/Number.stories.tsx +0 -159
  551. package/src/components/form/fields/number/Number.tsx +0 -160
  552. package/src/components/form/fields/object/Object.stories.tsx +0 -398
  553. package/src/components/form/fields/object/Object.tsx +0 -255
  554. package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +0 -95
  555. package/src/components/form/fields/radio-group/RadioGroup.tsx +0 -46
  556. package/src/components/form/fields/radio-group/images/java-96x128.png +0 -0
  557. package/src/components/form/fields/radio-group/images/python-129x128.png +0 -0
  558. package/src/components/form/fields/radio-group/images/qore-106x128.png +0 -0
  559. package/src/components/form/fields/rich-text/RichText.stories.tsx +0 -260
  560. package/src/components/form/fields/rich-text/RichText.tsx +0 -537
  561. package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +0 -242
  562. package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +0 -758
  563. package/src/components/form/fields/schema-definition/Hint.tsx +0 -22
  564. package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +0 -138
  565. package/src/components/form/fields/schema-definition/Loader.tsx +0 -20
  566. package/src/components/form/fields/schema-definition/MigrationsTab.tsx +0 -187
  567. package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +0 -286
  568. package/src/components/form/fields/schema-definition/TableEditor.tsx +0 -155
  569. package/src/components/form/fields/schema-definition/TablesTab.tsx +0 -138
  570. package/src/components/form/fields/schema-definition/catalog.ts +0 -237
  571. package/src/components/form/fields/schema-definition/helpers.ts +0 -90
  572. package/src/components/form/fields/schema-definition/index.tsx +0 -418
  573. package/src/components/form/fields/schema-definition/mockCatalog.ts +0 -325
  574. package/src/components/form/fields/schema-definition/mockDefinition.ts +0 -111
  575. package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +0 -152
  576. package/src/components/form/fields/schema-definition/starterTemplate.ts +0 -68
  577. package/src/components/form/fields/schema-definition/types.ts +0 -185
  578. package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +0 -49
  579. package/src/components/form/fields/select/Select.stories.tsx +0 -872
  580. package/src/components/form/fields/select/Select.tsx +0 -624
  581. package/src/components/form/fields/select/SelectCollection.tsx +0 -594
  582. package/src/components/form/fields/string/String.stories.tsx +0 -86
  583. package/src/components/form/fields/string/String.tsx +0 -43
  584. package/src/components/form/fields/template/ExampleValueModal.stories.tsx +0 -114
  585. package/src/components/form/fields/template/ExampleValueModal.tsx +0 -99
  586. package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +0 -47
  587. package/src/components/form/fields/template/TemplateField.stories.tsx +0 -1121
  588. package/src/components/form/fields/template/TemplateField.tsx +0 -1717
  589. package/src/components/form/fields/template/TemplateText.tsx +0 -115
  590. package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +0 -7
  591. package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +0 -147
  592. package/src/components/form/fields/template/__fixtures__/templates.json +0 -83
  593. package/src/components/form/fields/timeout/Timeout.stories.tsx +0 -228
  594. package/src/components/form/fields/timeout/Timeout.tsx +0 -87
  595. package/src/components/form/fields/url/Url.stories.tsx +0 -94
  596. package/src/components/form/fields/url/Url.tsx +0 -85
  597. package/src/components/form/index.tsx +0 -47
  598. package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
  599. package/src/components/imageLightbox/ImageLightbox.tsx +0 -236
  600. package/src/components/imageLightbox/index.ts +0 -1
  601. package/src/components/log/Log.stories.tsx +0 -333
  602. package/src/components/log/Log.tsx +0 -285
  603. package/src/components/menu/Menu.stories.tsx +0 -155
  604. package/src/components/menu/Menu.tsx +0 -312
  605. package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +0 -797
  606. package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +0 -105
  607. package/src/components/qonsoleSmartInput/index.ts +0 -16
  608. package/src/components/qonsoleSmartInput/qonsoleInserter.ts +0 -77
  609. package/src/components/qonsoleSmartInput/types.ts +0 -133
  610. package/src/components/qonsoleSmartInput/useQonsoleSession.ts +0 -124
  611. package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +0 -62
  612. package/src/components/searchFilterBar/SearchFilterBar.tsx +0 -144
  613. package/src/components/searchFilterBar/index.ts +0 -1
  614. package/src/components/smartEditor/MarkdownDoc.tsx +0 -190
  615. package/src/components/smartEditor/SmartEditor.stories.tsx +0 -475
  616. package/src/components/smartEditor/SmartEditor.tsx +0 -808
  617. package/src/components/smartEditor/__fixtures__/mockLspServer.ts +0 -205
  618. package/src/components/smartEditor/helpers.ts +0 -217
  619. package/src/components/smartEditor/index.ts +0 -35
  620. package/src/components/smartEditor/styling.ts +0 -45
  621. package/src/components/smartEditor/types.ts +0 -211
  622. package/src/components/smartEditor/useLspAutocomplete.ts +0 -758
  623. package/src/components/smartEditor/useLspDiagnosticDecorations.ts +0 -125
  624. package/src/components/smartEditor/useLspHover.ts +0 -230
  625. package/src/components/smartEditor/useLspSemanticTokens.ts +0 -298
  626. package/src/components/smartEditor/useLspSession.ts +0 -231
  627. package/src/components/smartEditor/useLspSignatureHelp.ts +0 -198
  628. package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -171
  629. package/src/components/supportTicket/AttachmentChips.tsx +0 -147
  630. package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -257
  631. package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -129
  632. package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -584
  633. package/src/components/supportTicket/ReferencePicker.tsx +0 -563
  634. package/src/components/supportTicket/TicketConversation.stories.tsx +0 -121
  635. package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
  636. package/src/components/supportTicket/TicketHeader.tsx +0 -247
  637. package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
  638. package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
  639. package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -354
  640. package/src/components/supportTicket/TicketReplyBox.tsx +0 -150
  641. package/src/components/supportTicket/__fixtures__/kindMarks.ts +0 -28
  642. package/src/components/supportTicket/attachmentAccess.ts +0 -97
  643. package/src/components/supportTicket/fileToAttachment.ts +0 -24
  644. package/src/components/supportTicket/index.ts +0 -10
  645. package/src/components/supportTicket/meta.ts +0 -206
  646. package/src/components/supportTicket/ticketModel.ts +0 -131
  647. package/src/components/supportTicket/useLoadedImages.ts +0 -73
  648. package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -315
  649. package/src/components/ticketReferences/TicketReferences.tsx +0 -906
  650. package/src/components/ticketReferences/index.ts +0 -2
  651. package/src/components/ticketThread/TicketThread.stories.tsx +0 -829
  652. package/src/components/ticketThread/TicketThread.tsx +0 -719
  653. package/src/components/ticketThread/index.ts +0 -6
  654. package/src/contexts/FetchContext.tsx +0 -25
  655. package/src/contexts/ReqraftContext.tsx +0 -9
  656. package/src/contexts/StorageContext.tsx +0 -33
  657. package/src/global.d.ts +0 -4
  658. package/src/helpers/allowedValues.ts +0 -249
  659. package/src/helpers/choiceChip.ts +0 -227
  660. package/src/helpers/common.ts +0 -326
  661. package/src/helpers/dpqlDetection.ts +0 -209
  662. package/src/helpers/expressions.ts +0 -140
  663. package/src/helpers/optionUiTypes.ts +0 -199
  664. package/src/helpers/options.ts +0 -150
  665. package/src/helpers/providerValue.ts +0 -125
  666. package/src/helpers/scrollbar.ts +0 -32
  667. package/src/helpers/singleLineString.ts +0 -61
  668. package/src/helpers/templateItems.ts +0 -81
  669. package/src/helpers/templateText.ts +0 -350
  670. package/src/helpers/templates.ts +0 -602
  671. package/src/helpers/validations.ts +0 -2085
  672. package/src/hooks/useArgSchema.ts +0 -37
  673. package/src/hooks/useCoarsePointer.ts +0 -30
  674. package/src/hooks/useFetch/useFetch.stories.tsx +0 -379
  675. package/src/hooks/useFetch/useFetch.tsx +0 -154
  676. package/src/hooks/usePhoneViewport.ts +0 -34
  677. package/src/hooks/useQorusTypes.ts +0 -233
  678. package/src/hooks/useReqraftProperty.ts +0 -16
  679. package/src/hooks/useStorage/useStorage.stories.tsx +0 -168
  680. package/src/hooks/useStorage/useStorage.ts +0 -35
  681. package/src/hooks/useTemplates.ts +0 -123
  682. package/src/hooks/useValidation.ts +0 -9
  683. package/src/hooks/useWebSocket/useWebSocket.ts +0 -224
  684. package/src/hooks/useWebSocket/useWebsocket.stories.tsx +0 -640
  685. package/src/hooks/useWhyDidYouUpdate.ts +0 -38
  686. package/src/index.tsx +0 -86
  687. package/src/providers/FetchProvider.tsx +0 -40
  688. package/src/providers/ReqraftProvider.tsx +0 -52
  689. package/src/providers/StorageProvider.tsx +0 -131
  690. package/src/stores/currentUser/currentUser.stories.tsx +0 -100
  691. package/src/stores/currentUser/currentUser.tsx +0 -94
  692. package/src/stories/Data/fileFieldArgSchema.json +0 -86
  693. package/src/stories/Tests/utils.ts +0 -320
  694. package/src/stories/storyNetwork.ts +0 -92
  695. package/src/stories/tracking.tsx +0 -206
  696. package/src/tracking/browser/attach.ts +0 -186
  697. package/src/tracking/browser/env.ts +0 -78
  698. package/src/tracking/core/consent.ts +0 -37
  699. package/src/tracking/core/engagement.ts +0 -47
  700. package/src/tracking/core/experiments.ts +0 -258
  701. package/src/tracking/core/hash.ts +0 -26
  702. package/src/tracking/core/ids.ts +0 -25
  703. package/src/tracking/core/observable.ts +0 -23
  704. package/src/tracking/core/queue.ts +0 -131
  705. package/src/tracking/core/sections.ts +0 -166
  706. package/src/tracking/core/storage.ts +0 -69
  707. package/src/tracking/core/tracker.ts +0 -417
  708. package/src/tracking/core/types.ts +0 -162
  709. package/src/tracking/core/utm.ts +0 -23
  710. package/src/tracking/index.ts +0 -72
  711. package/src/tracking/markup.ts +0 -17
  712. package/src/tracking/react/Experiment.tsx +0 -44
  713. package/src/tracking/react/TrackingProvider.tsx +0 -56
  714. package/src/tracking/react/hooks.ts +0 -106
  715. package/src/tracking/react/index.ts +0 -13
  716. package/src/tracking/testing.ts +0 -108
  717. package/src/tracking/ui/ExperimentCard.stories.tsx +0 -296
  718. package/src/tracking/ui/ExperimentCard.tsx +0 -667
  719. package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -155
  720. package/src/tracking/ui/ExperimentsOverlay.tsx +0 -437
  721. package/src/tracking/ui/anchor.ts +0 -180
  722. package/src/tracking/ui/card.ts +0 -464
  723. package/src/tracking/ui/client.ts +0 -117
  724. package/src/tracking/ui/index.ts +0 -77
  725. package/src/tracking/ui/types.ts +0 -110
  726. package/src/tracking/ui/useExperimentsAdmin.ts +0 -103
  727. package/src/types/Form.ts +0 -29
  728. package/src/types.ts +0 -14
  729. package/src/utils/datetime.ts +0 -10
  730. package/src/utils/fetch.ts +0 -457
  731. package/src/utils/lspClient.ts +0 -711
  732. package/src/utils/lspClient.types.ts +0 -211
  733. package/src/utils/queryUnlessCancelled.ts +0 -28
  734. package/src/utils/websocket.ts +0 -293
  735. package/vite.config.ts +0 -58
  736. package/vitest.config.ts +0 -69
@@ -1,155 +0,0 @@
1
- import { ReqoreP, ReqorePanel } from '@qoretechnologies/reqore';
2
- import { StoryObj } from '@storybook/react-vite';
3
- import { useState } from 'react';
4
- import { expect, fireEvent, fn, waitFor, within } from 'storybook/test';
5
- import { EXPERIMENT_KEY, noSnapshot, RUNNING_TWO, variant } from '../../stories/tracking';
6
- import { StoryMeta } from '../../types';
7
- import { KEYS } from '../core/types';
8
- import { Experiment } from '../react/Experiment';
9
- import { TrackingProvider } from '../react/TrackingProvider';
10
- import { createMemoryTracker } from '../testing';
11
- import { ExperimentsOverlay, type IExperimentsOverlayProps } from './ExperimentsOverlay';
12
-
13
- const CLOCK = Date.UTC(2026, 8, 29, 10, 0, 0);
14
-
15
- /** A page with one tested element; `atBottom` puts it at the foot of the window. */
16
- const Page = ({ atBottom, ...overlay }: IExperimentsOverlayProps & { atBottom?: boolean }) => {
17
- const [memory] = useState(() =>
18
- createMemoryTracker({
19
- consent: 'granted',
20
- vid: 'visitor-3',
21
- seed: {
22
- [KEYS.experimentsCache]: JSON.stringify({
23
- at: CLOCK,
24
- property: 'test',
25
- experiments: [{ ...RUNNING_TWO.experiment, traffic: 1 }],
26
- }),
27
- },
28
- })
29
- );
30
- return (
31
- <TrackingProvider tracker={memory.tracker} location='/'>
32
- {atBottom && <div style={{ height: 'calc(100vh - 200px)' }} />}
33
- <div style={{ maxWidth: 720 }}>
34
- <Experiment
35
- id={EXPERIMENT_KEY}
36
- variants={{
37
- a: (
38
- <ReqorePanel label='Get started' flat padded>
39
- <ReqoreP>Version A: the current sign-up button copy.</ReqoreP>
40
- </ReqorePanel>
41
- ),
42
- b: (
43
- <ReqorePanel label='Try it free' flat padded>
44
- <ReqoreP>Version B: the short copy.</ReqoreP>
45
- </ReqorePanel>
46
- ),
47
- }}
48
- />
49
- </div>
50
- <ExperimentsOverlay {...overlay} />
51
- </TrackingProvider>
52
- );
53
- };
54
-
55
- const meta = {
56
- title: 'Tracking/Experiments Overlay',
57
- component: Page,
58
- args: {
59
- tests: [RUNNING_TWO],
60
- onAccept: fn(async () => undefined),
61
- onRemove: fn(async () => undefined),
62
- onStart: fn(async () => undefined),
63
- onPause: fn(async () => undefined),
64
- onStop: fn(async () => undefined),
65
- onSettled: fn(async () => undefined),
66
- detailsUrl: (key: string) =>
67
- `https://example.com/analytics?dashboard=tracking&experiment=${key}`,
68
- versionDetailsUrl: (key: string, v: string) =>
69
- `https://example.com/analytics?dashboard=tracking&experiment=${key}&variant=${v}`,
70
- },
71
- } as StoryMeta<typeof Page>;
72
-
73
- export default meta;
74
- export type Story = StoryObj<typeof meta>;
75
-
76
- const handleOf = async (doc: Document) =>
77
- within(doc.body).findByText(`A/B test · ${RUNNING_TWO.experiment.name}`);
78
- const cardFloat = (doc: Document) =>
79
- doc.querySelector('[data-experiment-float][data-side]') as HTMLElement | null;
80
-
81
- // ── anchored below ───────────────────────────────────────────────────────────────
82
-
83
- const anchored: Story = {
84
- play: async ({ canvasElement }) => {
85
- const doc = canvasElement.ownerDocument;
86
- await expect(doc.querySelector(`[data-experiment-outline="${EXPERIMENT_KEY}"]`)).toBeTruthy();
87
- // Esc closes the card, a click on the handle opens it again.
88
- await fireEvent.click((await handleOf(doc)).closest('button')!);
89
- await waitFor(() => expect(cardFloat(doc)).toBeTruthy());
90
- await fireEvent.keyDown(doc, { key: 'Escape' });
91
- await waitFor(() => expect(cardFloat(doc)).toBeNull());
92
- // A click outside closes it too.
93
- await fireEvent.click((await handleOf(doc)).closest('button')!);
94
- await waitFor(() => expect(cardFloat(doc)).toBeTruthy());
95
- await fireEvent.pointerDown(canvasElement);
96
- await waitFor(() => expect(cardFloat(doc)).toBeNull());
97
- await fireEvent.click((await handleOf(doc)).closest('button')!);
98
- await waitFor(() => expect(cardFloat(doc)?.dataset.side).toBe('below'));
99
- // The card hangs under the handle, over the tested element.
100
- const handle = (await handleOf(doc))
101
- .closest('[data-experiment-float]')!
102
- .getBoundingClientRect();
103
- await expect(cardFloat(doc)!.getBoundingClientRect().top).toBeGreaterThan(handle.bottom);
104
- await expect(within(cardFloat(doc)!).getByText('Short copy')).toBeInTheDocument();
105
- },
106
- };
107
- const ANCHORED_TEXT =
108
- 'Renders a page with one tested element: a dashed outline and an "A/B test · Sign-up button copy" handle at its corner. Clicking the handle opens the test\'s card anchored below it; Esc and a click outside close it, and the handle reopens it.';
109
- export const Anchored = variant(anchored, ANCHORED_TEXT, 'Dark');
110
- export const AnchoredLight = variant(anchored, ANCHORED_TEXT, 'Light');
111
- export const AnchoredPhone = variant(anchored, ANCHORED_TEXT, 'Phone');
112
-
113
- // ── flipped above near the bottom ────────────────────────────────────────────────
114
-
115
- const flipped: Story = {
116
- args: { atBottom: true },
117
- play: async ({ canvasElement }) => {
118
- const doc = canvasElement.ownerDocument;
119
- await fireEvent.click((await handleOf(doc)).closest('button')!);
120
- await waitFor(() => expect(cardFloat(doc)?.dataset.side).toBe('above'));
121
- const handle = (await handleOf(doc))
122
- .closest('[data-experiment-float]')!
123
- .getBoundingClientRect();
124
- // Once measured, the card ends just above the handle.
125
- await waitFor(() =>
126
- expect(cardFloat(doc)!.getBoundingClientRect().bottom).toBeLessThanOrEqual(handle.top)
127
- );
128
- },
129
- };
130
- const FLIPPED_TEXT =
131
- 'Renders the tested element at the foot of the window with its card open: there is no room below, so the card flips above the handle.';
132
- export const FlipsAboveNearTheBottom = variant(flipped, FLIPPED_TEXT, 'Dark');
133
- export const FlipsAboveNearTheBottomLight = variant(flipped, FLIPPED_TEXT, 'Light');
134
- // Visually empty at phone height: runs as a test, no snapshot.
135
- export const FlipsAboveNearTheBottomPhone = noSnapshot(variant(flipped, FLIPPED_TEXT, 'Phone'));
136
-
137
- // ── hidden ─────────────────────────────────────────────────────────
138
-
139
- const hidden: Story = {
140
- args: { visible: false },
141
- play: async ({ canvasElement }) => {
142
- const doc = canvasElement.ownerDocument;
143
- await expect(
144
- await within(canvasElement).findByText('Version B: the short copy.')
145
- ).toBeInTheDocument();
146
- await expect(doc.querySelector('[data-experiment-outline]')).toBeNull();
147
- await expect(within(doc.body).queryByText(/A\/B test ·/)).toBeNull();
148
- },
149
- };
150
- const HIDDEN_TEXT =
151
- 'Renders the same page with the overlay hidden (`visible={false}`, an editor\'s "hide editor elements"): the tested element shows as visitors see it, with no outline, handle or card.';
152
- // Nothing of the overlay to see: they run as tests, without snapshots.
153
- export const Hidden = noSnapshot(variant(hidden, HIDDEN_TEXT, 'Dark'));
154
- export const HiddenLight = noSnapshot(variant(hidden, HIDDEN_TEXT, 'Light'));
155
- export const HiddenPhone = noSnapshot(variant(hidden, HIDDEN_TEXT, 'Phone'));
@@ -1,437 +0,0 @@
1
- import {
2
- ReqoreButton,
3
- ReqoreTag,
4
- useReqoreProperty,
5
- useReqoreTheme,
6
- } from '@qoretechnologies/reqore';
7
- import {
8
- useCallback,
9
- useEffect,
10
- useLayoutEffect,
11
- useReducer,
12
- useRef,
13
- useState,
14
- type FocusEvent,
15
- } from 'react';
16
- import { createPortal } from 'react-dom';
17
- import styled from 'styled-components';
18
- import { useTracker } from '../react/TrackingProvider';
19
- import {
20
- cardReducer,
21
- CLOSED,
22
- openCard,
23
- OUTSIDE_IGNORE,
24
- placeCard,
25
- type IPlacement,
26
- } from './anchor';
27
- import { winnerNote } from './card';
28
- import { ExperimentCard } from './ExperimentCard';
29
- import type { IExperimentEntry, TExperimentActionResult } from './types';
30
-
31
- type TMaybeAsync<T = unknown> = T | Promise<T>;
32
-
33
- export interface IExperimentsOverlayProps {
34
- /** Draws nothing while false (an editor's "hide editor elements"). Default true. */
35
- visible?: boolean;
36
- /** The server's tests (the editor or admin list); null while loading. A test only in code still gets its versions. */
37
- tests?: IExperimentEntry[] | null;
38
- /** Why the list could not be loaded. */
39
- loadError?: string | null;
40
- /**
41
- * Show a version on this page. Default: the tracker's in-app switch
42
- * (`tracker.experiments.setEditorOverride`, never logged) when a `<TrackingProvider>` is above.
43
- */
44
- onShow?: (key: string, variant: string) => void;
45
- onAccept?: (key: string, variant: string) => TMaybeAsync<TExperimentActionResult | unknown>;
46
- onRemove?: (key: string, variant: string) => TMaybeAsync<TExperimentActionResult | unknown>;
47
- onStart?: (key: string) => TMaybeAsync;
48
- onPause?: (key: string) => TMaybeAsync;
49
- onStop?: (key: string) => TMaybeAsync;
50
- /**
51
- * After an action succeeded. Default: the page shows what visitors see now (the switch is
52
- * cleared, the tracker reloads the definitions and mounted experiments decide again).
53
- */
54
- onSettled?: (key: string) => TMaybeAsync;
55
- /** The test's details page (the card's "Open in …" link); none when it returns nothing. */
56
- detailsUrl?: (key: string) => string | null | undefined;
57
- /** The link's label. Default `Open in admin portal`. */
58
- detailsLabel?: string;
59
- /** One version's analytics (the rows' "Show analytics"); hidden when absent or it returns nothing. */
60
- versionDetailsUrl?: (key: string, variant: string) => string | null | undefined;
61
- /** Where the full analytics live, in the help's words. Default `the admin portal`. */
62
- analyticsLabel?: string;
63
- /** The words for a test that is in the page's code but not set up in the analytics service yet. */
64
- notSetUpText?: string;
65
- /** Who removed a version, in words, by the history's `actor`. */
66
- actorLabels?: Record<string, string>;
67
- /** The part of the viewport a sticky header covers (px, or read on every render). Default 0. */
68
- topInset?: number | (() => number);
69
- /** Markers inside elements matching this selector are ignored (e.g. an editor's own UI). */
70
- exclude?: string;
71
- /** The handle's words. Default `A/B test · <name>`. */
72
- handleLabel?: (name: string) => string;
73
- }
74
-
75
- // Overlay chrome only: the outline around a tested element, never taking the pointer.
76
- const StyledOutline = styled.div`
77
- position: absolute;
78
- pointer-events: none;
79
- z-index: 880;
80
- border-radius: 10px;
81
- outline-width: 2px;
82
- outline-style: dashed;
83
- outline-offset: -3px;
84
- `;
85
-
86
- // Layout only: the handle and the card, in page coordinates so they scroll with the element.
87
- const StyledFloat = styled.div<{ $card?: boolean }>`
88
- position: absolute;
89
- z-index: ${({ $card }) => ($card ? 956 : 955)};
90
- filter: drop-shadow(0 12px 28px rgba(0, 0, 0, 0.35));
91
- `;
92
-
93
- /** The overlay's own root; markers inside it are never outlined. */
94
- export const OVERLAY_ATTRIBUTE = 'data-experiments-overlay';
95
-
96
- interface IMarked {
97
- key: string;
98
- shown: string;
99
- variants: string[];
100
- reason: string;
101
- box: DOMRect;
102
- }
103
-
104
- /** One box around the elements (viewport coordinates); tiny elements are ignored. */
105
- export const boxOf = (els: Element[]): DOMRect | null => {
106
- let box: { l: number; t: number; r: number; b: number } | null = null;
107
- for (const el of els) {
108
- const r = el.getBoundingClientRect();
109
- if (r.width < 8 || r.height < 8) continue;
110
- box =
111
- box ?
112
- {
113
- l: Math.min(box.l, r.left),
114
- t: Math.min(box.t, r.top),
115
- r: Math.max(box.r, r.right),
116
- b: Math.max(box.b, r.bottom),
117
- }
118
- : { l: r.left, t: r.top, r: r.right, b: r.bottom };
119
- }
120
- return box ? new DOMRect(box.l, box.t, box.r - box.l, box.b - box.t) : null;
121
- };
122
-
123
- const markedOnPage = (exclude?: string): IMarked[] =>
124
- Array.from(document.querySelectorAll<HTMLElement>('[data-experiment]'))
125
- .filter((el) => !el.closest(`[${OVERLAY_ATTRIBUTE}]`) && !(exclude && el.closest(exclude)))
126
- .map((el) => {
127
- const box = boxOf(Array.from(el.children));
128
- return box ?
129
- {
130
- key: el.dataset.experiment ?? '',
131
- shown: el.dataset.variant ?? '',
132
- variants: (el.dataset.variants ?? '').split(',').filter(Boolean),
133
- reason: el.dataset.experimentReason ?? '',
134
- box,
135
- }
136
- : null;
137
- })
138
- .filter((m): m is IMarked => !!m && !!m.key);
139
-
140
- const inside = (
141
- r: { left: number; top: number; right: number; bottom: number },
142
- x: number,
143
- y: number
144
- ) => x >= r.left && x <= r.right && y >= r.top && y <= r.bottom;
145
-
146
- /** Re-renders the caller on scroll, resize and every 700 ms (content arriving), while `active`. */
147
- const useFollowPage = (active: boolean) => {
148
- const [, setTick] = useState(0);
149
- useEffect(() => {
150
- if (!active) return undefined;
151
- let raf = 0;
152
- const bump = () => {
153
- cancelAnimationFrame(raf);
154
- raf = requestAnimationFrame(() => setTick((t) => t + 1));
155
- };
156
- window.addEventListener('scroll', bump, { passive: true, capture: true });
157
- window.addEventListener('resize', bump);
158
- const id = window.setInterval(bump, 700);
159
- return () => {
160
- window.removeEventListener('scroll', bump, { capture: true });
161
- window.removeEventListener('resize', bump);
162
- window.clearInterval(id);
163
- cancelAnimationFrame(raf);
164
- };
165
- }, [active]);
166
- };
167
-
168
- const HANDLE_ESTIMATE = { width: 240, height: 30 };
169
-
170
- /**
171
- * Every `<Experiment>` on the page (its `data-experiment` marker) gets a dashed outline and a
172
- * handle, "A/B test · <name>", at its top-left corner. Hovering the element, focusing the handle,
173
- * or clicking / tapping it opens the test's `<ExperimentCard>`, anchored to the element: it moves
174
- * and resizes with it and flips above or below the handle to stay in view. ✕, Esc and a click
175
- * outside close it. An ended test shows "Winner live" instead. Data and actions come in as props
176
- * (`useExperimentsAdmin` provides them from the qorus-api routes).
177
- */
178
- export const ExperimentsOverlay = ({
179
- visible = true,
180
- tests,
181
- loadError,
182
- onShow,
183
- onAccept,
184
- onRemove,
185
- onStart,
186
- onPause,
187
- onStop,
188
- onSettled,
189
- detailsUrl,
190
- detailsLabel,
191
- versionDetailsUrl,
192
- analyticsLabel,
193
- notSetUpText,
194
- actorLabels,
195
- topInset = 0,
196
- exclude,
197
- handleLabel = (name) => `A/B test · ${name}`,
198
- }: IExperimentsOverlayProps) => {
199
- const tracker = useTracker();
200
- const theme = useReqoreTheme();
201
- const hoverCapable = useReqoreProperty('isHoverCapable') !== false;
202
- const [cards, dispatch] = useReducer(cardReducer, CLOSED);
203
- const [sizes, setSizes] = useState<Record<string, { width: number; height: number }>>({});
204
- const boxes = useRef(new Map<string, DOMRect>());
205
- const floats = useRef(new Map<string, HTMLDivElement>());
206
- const sides = useRef(new Map<string, 'below' | 'above'>());
207
- const open = visible ? openCard(cards) : null;
208
-
209
- const marked = visible && typeof document !== 'undefined' ? markedOnPage(exclude) : [];
210
- useFollowPage(visible);
211
- // A version switch, an accept or a removal re-renders the tested element; a resize moves it.
212
- const [, setSeen] = useState(0);
213
- const markedKeys = marked.map((m) => m.key).join(',');
214
- useEffect(() => {
215
- if (!visible) return undefined;
216
- const bump = () => setSeen((n) => n + 1);
217
- const mo = new MutationObserver(bump);
218
- mo.observe(document.body, {
219
- subtree: true,
220
- attributes: true,
221
- attributeFilter: ['data-variant', 'data-experiment-reason'],
222
- });
223
- const ro = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(bump);
224
- document.querySelectorAll('[data-experiment] > *').forEach((el) => ro?.observe(el));
225
- return () => {
226
- mo.disconnect();
227
- ro?.disconnect();
228
- };
229
- }, [markedKeys, visible]);
230
-
231
- // Hover: the pointer over a tested element, its handle or its card. Leaving waits a moment,
232
- // so the pointer can cross the gap between the handle and the card.
233
- useEffect(() => {
234
- if (!hoverCapable || !visible) return undefined;
235
- let leave = 0;
236
- const onMove = (e: PointerEvent) => {
237
- let hit: string | null = null;
238
- boxes.current.forEach((box, key) => {
239
- if (!hit && inside(box, e.clientX, e.clientY)) hit = key;
240
- });
241
- floats.current.forEach((el, id) => {
242
- if (!hit && inside(el.getBoundingClientRect(), e.clientX, e.clientY))
243
- hit = id.split('|')[0];
244
- });
245
- window.clearTimeout(leave);
246
- if (hit) dispatch({ type: 'hover', key: hit });
247
- else leave = window.setTimeout(() => dispatch({ type: 'hover', key: null }), 220);
248
- };
249
- document.addEventListener('pointermove', onMove, { passive: true });
250
- return () => {
251
- window.clearTimeout(leave);
252
- document.removeEventListener('pointermove', onMove);
253
- };
254
- }, [hoverCapable, visible]);
255
-
256
- // Esc and a click outside the card close it (a click in the confirm step it opened does not).
257
- useEffect(() => {
258
- if (!open) return undefined;
259
- const onKey = (e: KeyboardEvent) => {
260
- if (e.key === 'Escape') dispatch({ type: 'close' });
261
- };
262
- const onDown = (e: PointerEvent) => {
263
- const target = e.target as Element | null;
264
- if (target?.closest?.(OUTSIDE_IGNORE)) return;
265
- dispatch({ type: 'close' });
266
- };
267
- document.addEventListener('keydown', onKey);
268
- document.addEventListener('pointerdown', onDown, true);
269
- return () => {
270
- document.removeEventListener('keydown', onKey);
271
- document.removeEventListener('pointerdown', onDown, true);
272
- };
273
- }, [open]);
274
-
275
- // The handles' and the card's real sizes, for the placement.
276
- useLayoutEffect(() => {
277
- const next: Record<string, { width: number; height: number }> = {};
278
- floats.current.forEach((el, id) => {
279
- next[id] = { width: el.offsetWidth, height: el.offsetHeight };
280
- });
281
- const same =
282
- Object.keys(next).length === Object.keys(sizes).length &&
283
- Object.entries(next).every(
284
- ([k, v]) => sizes[k]?.width === v.width && sizes[k]?.height === v.height
285
- );
286
- if (!same) setSizes(next);
287
- });
288
-
289
- /** After an action the page shows what visitors see now: no switch, fresh definitions, a new decision. */
290
- const settle = useCallback(
291
- async (key: string) => {
292
- if (onSettled) {
293
- await onSettled(key);
294
- return;
295
- }
296
- tracker?.experiments.setEditorOverride(key, null);
297
- await tracker?.experiments.refresh();
298
- },
299
- [onSettled, tracker]
300
- );
301
-
302
- const settled = <A extends unknown[]>(
303
- key: string,
304
- fn?: (key: string, ...args: A) => TMaybeAsync
305
- ) =>
306
- fn ?
307
- async (...args: A) => {
308
- const result = await fn(key, ...args);
309
- await settle(key);
310
- return result;
311
- }
312
- : undefined;
313
-
314
- const show =
315
- onShow ??
316
- (tracker ?
317
- (key: string, variant: string) => tracker.experiments.setEditorOverride(key, variant)
318
- : undefined);
319
-
320
- if (!visible || typeof document === 'undefined') return null;
321
- boxes.current.clear();
322
- const viewport = {
323
- width: document.documentElement.clientWidth || window.innerWidth,
324
- height: window.innerHeight,
325
- };
326
- const scroll = { x: window.scrollX, y: window.scrollY };
327
- const inset = typeof topInset === 'function' ? topInset() : topInset;
328
-
329
- const setFloat = (id: string) => (el: HTMLDivElement | null) => {
330
- if (el) floats.current.set(id, el);
331
- else floats.current.delete(id);
332
- };
333
-
334
- return createPortal(
335
- <div {...{ [OVERLAY_ATTRIBUTE]: '' }}>
336
- {marked.map((m) => {
337
- const entry = tests?.find((e) => e.experiment.key === m.key);
338
- const concluded = m.reason === 'concluded' || entry?.experiment.status === 'concluded';
339
- const name = entry?.experiment.name || m.key;
340
- const isOpen = !concluded && open === m.key;
341
- const place: IPlacement = placeCard({
342
- box: m.box,
343
- viewport,
344
- scroll,
345
- handle: sizes[`${m.key}|handle`] ?? HANDLE_ESTIMATE,
346
- card: isOpen ? (sizes[`${m.key}|card`] ?? { height: 420 }) : null,
347
- topInset: inset,
348
- side: sides.current.get(m.key),
349
- });
350
- if (place.card) sides.current.set(m.key, place.card.side);
351
- else sides.current.delete(m.key);
352
- boxes.current.set(m.key, m.box);
353
- if (!place.visible) return null;
354
- const onBlur = (e: FocusEvent<HTMLDivElement>) => {
355
- if (
356
- !(e.relatedTarget as Element | null)?.closest?.(`[data-experiment-float="${m.key}"]`)
357
- ) {
358
- dispatch({ type: 'blur', key: m.key });
359
- }
360
- };
361
- const floatProps = {
362
- 'data-experiment-float': m.key,
363
- onFocus: () => dispatch({ type: 'focus', key: m.key }),
364
- onBlur,
365
- };
366
- return (
367
- <div key={m.key}>
368
- <StyledOutline
369
- style={{ ...place.outline, outlineColor: theme.intents?.info }}
370
- data-experiment-outline={m.key}
371
- />
372
- <StyledFloat ref={setFloat(`${m.key}|handle`)} style={place.handle} {...floatProps}>
373
- {concluded ?
374
- <ReqoreTag
375
- icon='TrophyLine'
376
- label={winnerNote(entry, m.shown)}
377
- tooltip='Every visitor sees this version. A developer removes the other versions’ code later.'
378
- effect={{
379
- gradient: { colors: { 0: 'success', 100: 'success:darken:1' } },
380
- weight: 'bold',
381
- }}
382
- />
383
- : <ReqoreButton
384
- pill
385
- size='small'
386
- icon='FlaskLine'
387
- intent='info'
388
- active={isOpen}
389
- aria-expanded={isOpen}
390
- tooltip={isOpen ? undefined : 'A/B test: see its versions and numbers'}
391
- onClick={() => dispatch({ type: 'toggle', key: m.key })}
392
- >
393
- {handleLabel(name)}
394
- </ReqoreButton>
395
- }
396
- </StyledFloat>
397
- {isOpen && place.card && (
398
- <StyledFloat
399
- $card
400
- ref={setFloat(`${m.key}|card`)}
401
- style={{ top: place.card.top, left: place.card.left, width: place.card.width }}
402
- data-side={place.card.side}
403
- {...floatProps}
404
- >
405
- <ExperimentCard
406
- experimentKey={m.key}
407
- test={entry}
408
- name={name}
409
- shown={m.shown}
410
- codeVariants={m.variants}
411
- maxHeight={place.card.maxHeight}
412
- loadError={loadError}
413
- detailsUrl={detailsUrl?.(m.key)}
414
- detailsLabel={detailsLabel}
415
- versionDetailsUrl={
416
- versionDetailsUrl ? (variant) => versionDetailsUrl(m.key, variant) : undefined
417
- }
418
- analyticsLabel={analyticsLabel}
419
- notSetUpText={notSetUpText}
420
- actorLabels={actorLabels}
421
- onClose={() => dispatch({ type: 'close' })}
422
- onShow={show ? (variant) => show(m.key, variant) : undefined}
423
- onAccept={settled(m.key, onAccept)}
424
- onRemove={settled(m.key, onRemove)}
425
- onStart={settled(m.key, onStart)}
426
- onPause={settled(m.key, onPause)}
427
- onStop={settled(m.key, onStop)}
428
- />
429
- </StyledFloat>
430
- )}
431
- </div>
432
- );
433
- })}
434
- </div>,
435
- document.body
436
- );
437
- };