@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,417 +0,0 @@
1
- import { ConsentStore } from './consent';
2
- import { EngagementClock } from './engagement';
3
- import { assign, ExperimentStore, type IAssignContext, type IAssignment } from './experiments';
4
- import { eventId, randomId } from './ids';
5
- import { Observable } from './observable';
6
- import { EventQueue, type ITransport } from './queue';
7
- import { SectionClock } from './sections';
8
- import { readJson, writeJson, type IStorage } from './storage';
9
- import {
10
- resolveConfig,
11
- storageKeys,
12
- type IBatch,
13
- type ITrackingConfig,
14
- type IUtm,
15
- type TEventType,
16
- type TProps,
17
- type TStorageKeys,
18
- type TTrackingOptions,
19
- } from './types';
20
- import { parseUtm, utmParams } from './utm';
21
-
22
- /** What the page looks like right now (the browser layer reads it from `window`). */
23
- export interface IPageInfo {
24
- /** `https://example.com` */
25
- origin: string;
26
- path: string;
27
- search: string;
28
- title: string;
29
- referrer: string;
30
- lang: string;
31
- viewport: [number, number];
32
- device?: IAssignContext['device'];
33
- }
34
-
35
- /** Everything the tracker needs from its host; tests pass fakes. */
36
- export interface ITrackerEnv {
37
- local: IStorage;
38
- session: IStorage;
39
- transport: ITransport;
40
- now: () => number;
41
- setTimer: (fn: () => void, ms: number) => unknown;
42
- clearTimer: (handle: unknown) => void;
43
- page: () => IPageInfo;
44
- fetchJson: (url: string, timeoutMs: number) => Promise<unknown>;
45
- log?: (...args: unknown[]) => void;
46
- }
47
-
48
- interface IPageView {
49
- id: string;
50
- path: string;
51
- start: number;
52
- maxScrollPct: number;
53
- summarySeq: number;
54
- exposed: Set<string>;
55
- }
56
-
57
- interface IExposureWatch {
58
- assignment: IAssignment;
59
- }
60
-
61
- /**
62
- * The tracker: identity, consent, the event queue, page views and their summaries,
63
- * experiment assignment and exposure. It has no DOM code of its own (see
64
- * `browser/attach.ts`), so it runs unchanged in tests and in any web property.
65
- * Everything product-specific (property, endpoints, storage prefix) is in `config`.
66
- *
67
- * Never throws into the page: every public method is wrapped.
68
- */
69
- export class Tracker {
70
- readonly consent: ConsentStore;
71
- readonly experiments: ExperimentStore;
72
- readonly sections: SectionClock;
73
- private readonly engagement: EngagementClock;
74
- private readonly queue: EventQueue;
75
- private pv: IPageView | null = null;
76
- private lastUrl: string | null = null;
77
- private readonly firstTouchUtm: IUtm | null;
78
- private watches = new Set<IExposureWatch>();
79
- private started = false;
80
- /** The current page view id (null without consent): the browser layer re-measures sections on change. */
81
- readonly pageViewId = new Observable<string | null>(null);
82
- /** The storage keys under `config.storagePrefix`. */
83
- readonly keys: TStorageKeys;
84
- readonly config: ITrackingConfig;
85
-
86
- constructor(
87
- options: TTrackingOptions,
88
- private readonly env: ITrackerEnv,
89
- ) {
90
- // A config built by hand (not through `resolveConfig`) still gets the defaults.
91
- const config = resolveConfig(options);
92
- this.config = config;
93
- this.keys = storageKeys(config.storagePrefix);
94
- this.consent = new ConsentStore(env.local, config.consentVersion, this.keys);
95
- const first = env.page();
96
- this.firstTouchUtm = parseUtm(first.search);
97
- this.experiments = new ExperimentStore({
98
- property: config.property,
99
- endpoint: config.experimentsEndpoint,
100
- local: env.local,
101
- session: env.session,
102
- now: env.now,
103
- fetchJson: env.fetchJson,
104
- keys: this.keys,
105
- previewParam: config.previewParam,
106
- });
107
- this.experiments.applyPreviewFrom(first.search);
108
- this.sections = new SectionClock(env.now());
109
- this.engagement = new EngagementClock(config.engagedWindowMs);
110
- this.queue = new EventQueue({
111
- flushIntervalMs: config.flushIntervalMs,
112
- maxQueued: config.maxQueued,
113
- transport: env.transport,
114
- envelope: () => this.envelope(),
115
- now: env.now,
116
- setTimer: env.setTimer,
117
- clearTimer: env.clearTimer,
118
- debug: config.debug ? (b) => env.log?.('[tracking] batch', b) : undefined,
119
- });
120
- this.sections.onSeen((id) => this.safe(() => this.onSectionSeen(id)));
121
- this.consent.state.subscribe(() => this.safe(() => this.onConsentChange()));
122
- }
123
-
124
- /** Runs `fn` and swallows any error: analytics never breaks the page. */
125
- private safe<T>(fn: () => T): T | undefined {
126
- try {
127
- return fn();
128
- } catch (err) {
129
- if (this.config.debug) this.env.log?.('[tracking] error', err);
130
- return undefined;
131
- }
132
- }
133
-
134
- private active = () => this.config.enabled && this.consent.granted();
135
-
136
- /** The tracker's clock (the browser layer times sections with it). */
137
- now = (): number => this.env.now();
138
-
139
- // ── identity ────────────────────────────────────────────────────────────────
140
-
141
- /** The visitor id: exists only with consent. */
142
- vid(): string | null {
143
- if (!this.active()) return null;
144
- let vid = this.env.local.get(this.keys.vid);
145
- if (!vid) {
146
- vid = randomId(16);
147
- this.env.local.set(this.keys.vid, vid);
148
- }
149
- return vid;
150
- }
151
-
152
- /** The session id: a new one after `sessionTimeoutMs` without an event. */
153
- private sid(touch: boolean): string {
154
- const now = this.env.now();
155
- const s = readJson<{ id: string; last: number }>(this.env.session, this.keys.sid);
156
- const id = s && now - s.last < this.config.sessionTimeoutMs ? s.id : randomId(12);
157
- if (touch || !s || s.id !== id) writeJson(this.env.session, this.keys.sid, { id, last: now });
158
- return id;
159
- }
160
-
161
- private envelope(): Omit<IBatch, 'events' | 'sent_at'> | null {
162
- const vid = this.vid();
163
- if (!vid) return null;
164
- return { v: 1, property: this.config.property, vid, sid: this.sid(false), consent: 'granted' };
165
- }
166
-
167
- // ── consent ─────────────────────────────────────────────────────────────────
168
-
169
- grant() {
170
- this.safe(() => this.consent.answer('granted'));
171
- }
172
-
173
- /** Declines or withdraws: the visitor id and everything tied to it are deleted, nothing more is sent. */
174
- deny() {
175
- this.safe(() => this.consent.answer('denied'));
176
- }
177
-
178
- private onConsentChange() {
179
- if (this.consent.granted()) {
180
- if (!this.config.enabled) return;
181
- this.vid();
182
- if (this.firstTouchUtm && !this.env.session.get(this.keys.utm)) writeJson(this.env.session, this.keys.utm, this.firstTouchUtm);
183
- this.beginPageView();
184
- void this.experiments.load();
185
- return;
186
- }
187
- this.queue.clear();
188
- [this.keys.vid, this.keys.exposed].forEach((k) => this.env.local.remove(k));
189
- [this.keys.sid, this.keys.utm].forEach((k) => this.env.session.remove(k));
190
- this.pv = null;
191
- this.pageViewId.set(null);
192
- }
193
-
194
- // ── lifecycle ───────────────────────────────────────────────────────────────
195
-
196
- /** Call once when the page has loaded: starts the first page view if consent was given earlier. */
197
- start() {
198
- this.safe(() => {
199
- // Idempotent: React StrictMode mounts twice in development.
200
- if (this.started) return;
201
- this.started = true;
202
- void this.experiments.load();
203
- if (!this.active()) return;
204
- this.vid();
205
- this.beginPageView();
206
- });
207
- }
208
-
209
- /** A route change in a single-page app: closes the current page view and starts a new one. */
210
- pageview() {
211
- this.safe(() => {
212
- const page = this.env.page();
213
- if (this.pv && this.lastUrl === page.path + page.search) return;
214
- this.experiments.applyPreviewFrom(page.search);
215
- if (!this.active()) return;
216
- if (this.pv) this.summary(true);
217
- this.beginPageView();
218
- });
219
- }
220
-
221
- private beginPageView() {
222
- const page = this.env.page();
223
- const now = this.env.now();
224
- const previous = this.lastUrl;
225
- this.pv = { id: eventId(), path: page.path, start: now, maxScrollPct: 0, summarySeq: 0, exposed: new Set() };
226
- this.lastUrl = page.path + page.search;
227
- this.sections.reset(now);
228
- this.engagement.reset();
229
- this.pageViewId.set(this.pv.id);
230
- const firstOfSession = !this.env.session.get(this.keys.sid);
231
- const utm = parseUtm(page.search) ?? (firstOfSession ? this.firstTouchUtm : null);
232
- this.record('pageview', {
233
- // The first page view carries the document referrer; later SPA views the previous page.
234
- referrer: previous ? `${page.origin}${previous}` : page.referrer || null,
235
- title: page.title,
236
- ...(utm ? { utm } : {}),
237
- viewport: page.viewport,
238
- lang: page.lang,
239
- });
240
- // Watches whose trigger is the render itself fire once per page view.
241
- this.watches.forEach((w) => w.assignment.trigger == null && this.expose(w.assignment, 'render'));
242
- this.watches.forEach((w) => w.assignment.trigger != null && this.sections.register(w.assignment.trigger, false));
243
- }
244
-
245
- /**
246
- * A cumulative summary of the page view. Sent when the tab is hidden (`final:
247
- * false`, the visitor may come back) and when the page is left (`final: true`);
248
- * the one with the highest `seq` for a `pv_id` is the complete one.
249
- */
250
- summary(final: boolean) {
251
- this.safe(() => {
252
- if (!this.pv || !this.active()) return;
253
- const now = this.env.now();
254
- this.pv.summarySeq += 1;
255
- this.record('page_summary', {
256
- duration_ms: Math.max(0, Math.round(now - this.pv.start)),
257
- engaged_ms: this.engagement.total(now),
258
- max_scroll_pct: this.pv.maxScrollPct,
259
- exit_section: this.sections.current(),
260
- sections: this.sections.summary(now),
261
- seq: this.pv.summarySeq,
262
- final,
263
- });
264
- });
265
- }
266
-
267
- // ── signals from the browser layer ─────────────────────────────────────────
268
-
269
- activity() {
270
- this.safe(() => this.engagement.activity(this.env.now()));
271
- }
272
-
273
- scrolled(pct: number) {
274
- this.safe(() => {
275
- if (this.pv) this.pv.maxScrollPct = Math.max(this.pv.maxScrollPct, Math.min(100, Math.round(pct)));
276
- });
277
- }
278
-
279
- setTabVisible(visible: boolean) {
280
- this.safe(() => {
281
- const now = this.env.now();
282
- this.sections.setTabVisible(visible, now);
283
- this.engagement.setTabVisible(visible, now);
284
- if (!visible) {
285
- this.summary(false);
286
- void this.flush('beacon');
287
- }
288
- });
289
- }
290
-
291
- /** The page is going away (`pagehide`). */
292
- leave() {
293
- this.safe(() => {
294
- this.summary(true);
295
- void this.flush('beacon');
296
- });
297
- }
298
-
299
- flush(mode: 'fetch' | 'beacon' = 'fetch') {
300
- return this.safe(() => this.queue.flush(mode)) ?? Promise.resolve();
301
- }
302
-
303
- // ── events ──────────────────────────────────────────────────────────────────
304
-
305
- /** Queues an event of any type (nothing happens without consent). */
306
- record(type: TEventType, props?: TProps) {
307
- this.safe(() => {
308
- if (!this.active() || !this.pv) return;
309
- this.sid(true);
310
- this.queue.push({
311
- id: eventId(),
312
- type,
313
- ts: new Date(this.env.now()).toISOString(),
314
- pv_id: this.pv.id,
315
- path: this.pv.path,
316
- ...(props && Object.keys(props).length ? { props } : {}),
317
- });
318
- });
319
- }
320
-
321
- heartbeat() {
322
- this.record('heartbeat');
323
- }
324
-
325
- click(props: { target: string; placement?: string | null; label?: string | null; href?: string | null }) {
326
- this.record('click', props);
327
- }
328
-
329
- /** A conversion the server's goals can match (`signup-started`, …). */
330
- goal(name: string, value?: number) {
331
- this.record('goal', value == null ? { goal: name } : { goal: name, value });
332
- }
333
-
334
- /** A named event with free-form props (`form-submitted`, `plan-picked`, …). */
335
- custom(name: string, props: TProps = {}) {
336
- this.record('custom', { ...props, name });
337
- }
338
-
339
- // ── experiments ─────────────────────────────────────────────────────────────
340
-
341
- /**
342
- * The variant for this visitor. Preview override first, then the running
343
- * definition; the control whenever consent, the definitions or targeting say no.
344
- */
345
- decide(key: string, fallbackControl = 'a'): IAssignment {
346
- return (
347
- this.safe(() => {
348
- const def = this.experiments.get(key);
349
- const trigger = def?.trigger?.section ?? null;
350
- // An ended test shows its winner to everybody (consent or not, previews or not).
351
- if (def?.status === 'concluded') return assign(def, null, { path: this.env.page().path });
352
- const preview = this.experiments.previewOf(key);
353
- if (preview) return { key, variant: preview, enrolled: false, reason: 'preview', trigger } as IAssignment;
354
- if (!this.active()) return { key, variant: fallbackControl, enrolled: false, reason: 'no-consent', trigger } as IAssignment;
355
- if (!def) return { key, variant: fallbackControl, enrolled: false, reason: 'not-running', trigger: null } as IAssignment;
356
- const page = this.env.page();
357
- return assign(def, this.vid(), { path: page.path, device: page.device, lang: page.lang });
358
- }) ?? { key, variant: fallbackControl, enrolled: false, reason: 'not-running', trigger: null }
359
- );
360
- }
361
-
362
- /**
363
- * Logs the exposure once per page view when the trigger section is seen (or at
364
- * once for `trigger: null`). Returns an unsubscribe for when the variant unmounts.
365
- */
366
- watchExposure(assignment: IAssignment): () => void {
367
- if (!assignment.enrolled) return () => undefined;
368
- const watch: IExposureWatch = { assignment };
369
- this.watches.add(watch);
370
- this.safe(() => {
371
- if (assignment.trigger == null) this.expose(assignment, 'render');
372
- else {
373
- this.sections.register(assignment.trigger, false);
374
- if (this.sections.isSeen(assignment.trigger)) this.expose(assignment, 'view');
375
- }
376
- });
377
- return () => void this.watches.delete(watch);
378
- }
379
-
380
- private onSectionSeen(id: string) {
381
- this.watches.forEach((w) => w.assignment.trigger === id && this.expose(w.assignment, 'view'));
382
- }
383
-
384
- private expose(a: IAssignment, trigger: 'view' | 'render') {
385
- if (!this.pv || !this.active() || this.pv.exposed.has(a.key)) return;
386
- this.pv.exposed.add(a.key);
387
- const exposed = readJson<Record<string, string>>(this.env.local, this.keys.exposed) ?? {};
388
- if (exposed[a.key] !== a.variant) writeJson(this.env.local, this.keys.exposed, { ...exposed, [a.key]: a.variant });
389
- this.record('exposure', { experiment: a.key, variant: a.variant, trigger });
390
- }
391
-
392
- // ── sign-up attribution ─────────────────────────────────────────────────────
393
-
394
- /**
395
- * Adds `qa_exp=key:variant,…` (experiments this visitor was exposed to; the server's
396
- * sign-up flow reads this parameter, §5.4 of the contract) and the
397
- * session's first-touch `utm_*` to a sign-up URL — nothing else, never the vid.
398
- * Without consent the URL is returned unchanged.
399
- */
400
- decorateSignupUrl(url: string): string {
401
- return (
402
- this.safe(() => {
403
- if (!this.active()) return url;
404
- const u = new URL(url);
405
- const exposed = readJson<Record<string, string>>(this.env.local, this.keys.exposed) ?? {};
406
- const pairs = Object.entries(exposed)
407
- .filter(([k, v]) => k && v)
408
- .sort(([a], [b]) => a.localeCompare(b))
409
- .map(([k, v]) => `${k}:${v}`);
410
- if (pairs.length) u.searchParams.set('qa_exp', pairs.join(','));
411
- const utm = readJson<IUtm>(this.env.session, this.keys.utm) ?? this.firstTouchUtm;
412
- utmParams(utm).forEach(([k, v]) => u.searchParams.set(k, v));
413
- return u.toString();
414
- }) ?? url
415
- );
416
- }
417
- }
@@ -1,162 +0,0 @@
1
- /**
2
- * Wire types of the first-party tracker. The contract (event shapes, batch envelope,
3
- * experiment definitions) is owned by qorus-api `design/analytics-and-experiments-design.md`
4
- * (§4 collector, §5 experiments); change it there first, then here.
5
- */
6
-
7
- export type TConsentState = 'unknown' | 'granted' | 'denied';
8
-
9
- /** Event types the collector knows. New ones are allowed without a schema change (§4). */
10
- export type TEventType =
11
- | 'pageview'
12
- | 'page_summary'
13
- | 'click'
14
- | 'heartbeat'
15
- | 'exposure'
16
- | 'goal'
17
- | 'custom'
18
- | (string & Record<never, never>);
19
-
20
- export type TProps = Record<string, unknown>;
21
-
22
- export interface ITrackedEvent {
23
- /** Random id: makes the write idempotent (retries, beacon + fetch fallback). */
24
- id: string;
25
- type: TEventType;
26
- /** ISO timestamp of when it happened in the browser. */
27
- ts: string;
28
- pv_id: string;
29
- path: string;
30
- props?: TProps;
31
- }
32
-
33
- export interface IBatch {
34
- v: 1;
35
- property: string;
36
- vid: string;
37
- sid: string;
38
- sent_at: string;
39
- consent: 'granted';
40
- events: ITrackedEvent[];
41
- }
42
-
43
- export interface IUtm {
44
- source?: string;
45
- medium?: string;
46
- campaign?: string;
47
- term?: string;
48
- content?: string;
49
- }
50
-
51
- /** Public fields of a running experiment (the experiments endpoint, `?property=…`). */
52
- export interface IExperimentVariant {
53
- key: string;
54
- weight: number;
55
- control?: boolean;
56
- }
57
-
58
- export interface IExperimentDefinition {
59
- key: string;
60
- /**
61
- * `running` (assign and log), or `concluded`: everybody sees `winner`, nothing is logged. A
62
- * concluded entry carries only `key`, `status` and `winner`; its `variants` are normalised to [].
63
- */
64
- status?: 'running' | 'concluded' | (string & Record<never, never>);
65
- winner?: string | null;
66
- /** Counter of the running experiment's phase (a removed version starts a new one). */
67
- phase?: number;
68
- variants: IExperimentVariant[];
69
- /** Share of visitors enrolled, 0..1 (the rest see the control, no exposure). */
70
- traffic: number;
71
- targeting?: { paths?: string[] | null; device?: string | null; lang?: string | null } | null;
72
- /** The element whose being seen counts as exposure; none → exposure on render. */
73
- trigger?: { section?: string | null } | null;
74
- }
75
-
76
- /** Everything the tracker needs from its host. Every product-specific value lives here. */
77
- export interface ITrackingConfig {
78
- /**
79
- * Which product the events belong to (`landing`, `ide`, `admin`, …). The server keeps each
80
- * property's events, goals and experiments apart, and the experiments list is fetched for it.
81
- */
82
- property: string;
83
- /** Collector URL (`POST`, the batch envelope of §4 of the contract). */
84
- endpoint: string;
85
- /** Running-experiments URL (`GET`); `?property=` is appended. */
86
- experimentsEndpoint: string;
87
- /** Master switch: false → nothing is ever sent, experiments serve the control. */
88
- enabled: boolean;
89
- /** Bump when the consent text changes materially: stored answers of older versions are asked again. */
90
- consentVersion: number;
91
- /**
92
- * Prefix of every localStorage / sessionStorage key the tracker writes (default `qa.`, the
93
- * contract's). Two products on one origin need different prefixes, or they share one consent
94
- * answer, one visitor id and one experiments cache.
95
- */
96
- storagePrefix: string;
97
- /** Query parameter of a shareable variant preview (`?qa_variant=key:variant`). */
98
- previewParam: string;
99
- /** Log every batch to the console instead of silently sending. */
100
- debug: boolean;
101
- flushIntervalMs: number;
102
- /** Flush as soon as this many events are queued. */
103
- maxQueued: number;
104
- heartbeatMs: number;
105
- sessionTimeoutMs: number;
106
- /** An interaction within this window counts the time as engaged. */
107
- engagedWindowMs: number;
108
- }
109
-
110
- /** The config fields every product must set: nothing product-specific has a default. */
111
- export type TRequiredTrackingConfig = 'property' | 'endpoint' | 'experimentsEndpoint';
112
-
113
- export const DEFAULT_STORAGE_PREFIX = 'qa.';
114
-
115
- export const DEFAULT_CONFIG: Omit<ITrackingConfig, TRequiredTrackingConfig> = {
116
- enabled: true,
117
- consentVersion: 1,
118
- storagePrefix: DEFAULT_STORAGE_PREFIX,
119
- previewParam: 'qa_variant',
120
- debug: false,
121
- flushIntervalMs: 5000,
122
- maxQueued: 20,
123
- heartbeatMs: 15000,
124
- sessionTimeoutMs: 30 * 60 * 1000,
125
- engagedWindowMs: 10000,
126
- };
127
-
128
- /** What a product passes: the required fields, and any default it wants to change. */
129
- export type TTrackingOptions = Partial<ITrackingConfig> & Pick<ITrackingConfig, TRequiredTrackingConfig>;
130
-
131
- /** The full config: `options` over `DEFAULT_CONFIG` (an `undefined` option keeps the default). */
132
- export const resolveConfig = (options: TTrackingOptions): ITrackingConfig => {
133
- const set = Object.fromEntries(Object.entries(options).filter(([, v]) => v !== undefined));
134
- return { ...DEFAULT_CONFIG, ...set } as ITrackingConfig;
135
- };
136
-
137
- /** The storage keys for one prefix (first-party, removable in one sweep). */
138
- export const storageKeys = (prefix: string = DEFAULT_STORAGE_PREFIX) => ({
139
- /** localStorage: `granted` | `denied` */
140
- consent: `${prefix}consent`,
141
- /** localStorage: the consent version that was answered */
142
- consentVersion: `${prefix}consent.v`,
143
- /** localStorage: the visitor id (exists only with consent) */
144
- vid: `${prefix}vid`,
145
- /** sessionStorage: `{ id, last }` */
146
- sid: `${prefix}sid`,
147
- /** sessionStorage: first-touch utm of this session */
148
- utm: `${prefix}utm`,
149
- /** localStorage: `{ experimentKey: variant }` the visitor was exposed to (sign-up attribution) */
150
- exposed: `${prefix}exp`,
151
- /** sessionStorage: preview overrides from the preview query parameter */
152
- preview: `${prefix}preview`,
153
- /** localStorage: last fetched public experiment definitions */
154
- experimentsCache: `${prefix}experiments`,
155
- /** localStorage: an in-app version switch per experiment (`{ key: variant }`), never logged */
156
- editorVariants: `${prefix}editor.variants`,
157
- });
158
-
159
- export type TStorageKeys = ReturnType<typeof storageKeys>;
160
-
161
- /** The keys with the default prefix (`qa.consent`, `qa.vid`, …). */
162
- export const KEYS: TStorageKeys = storageKeys(DEFAULT_STORAGE_PREFIX);
@@ -1,23 +0,0 @@
1
- import type { IUtm } from './types';
2
-
3
- const UTM_FIELDS = ['source', 'medium', 'campaign', 'term', 'content'] as const;
4
-
5
- /** The `utm_*` parameters of a query string, or null when there are none. */
6
- export const parseUtm = (search: string): IUtm | null => {
7
- let params: URLSearchParams;
8
- try {
9
- params = new URLSearchParams(search);
10
- } catch {
11
- return null;
12
- }
13
- const utm: IUtm = {};
14
- for (const f of UTM_FIELDS) {
15
- const v = params.get(`utm_${f}`)?.trim();
16
- if (v) utm[f] = v.slice(0, 200);
17
- }
18
- return Object.keys(utm).length ? utm : null;
19
- };
20
-
21
- /** `{ source: 'x' }` → `[['utm_source', 'x']]`, in a stable order. */
22
- export const utmParams = (utm: IUtm | null | undefined): [string, string][] =>
23
- utm ? UTM_FIELDS.filter((f) => utm[f]).map((f) => [`utm_${f}`, utm[f] as string]) : [];
@@ -1,72 +0,0 @@
1
- /**
2
- * First-party tracking, consent and A/B testing for any Qore web app.
3
- *
4
- * How to use it: design/TRACKING.md in this repo.
5
- * The contract (events, experiments, storage): qorus-api design/analytics-and-experiments-design.md.
6
- *
7
- * Layers (each only imports the ones above it):
8
- * core/ plain TypeScript, no DOM: ids, consent, queue, sections, hashing, assignment, Tracker
9
- * browser/ wiring to window/document: transport, IntersectionObserver, listeners
10
- * react/ <TrackingProvider>, useConsent, useExperiment, <Experiment>
11
- * Nothing product-specific lives here: the property, endpoints, consent version and storage
12
- * prefix come from the config each app passes to `createBrowserTracker`.
13
- */
14
- import { attachToPage, type IAttached } from './browser/attach';
15
- import { browserEnv } from './browser/env';
16
- import { Tracker } from './core/tracker';
17
- import { resolveConfig, type TTrackingOptions } from './core/types';
18
-
19
- export { Tracker } from './core/tracker';
20
- export type { IPageInfo, ITrackerEnv } from './core/tracker';
21
- export { ConsentStore } from './core/consent';
22
- export {
23
- assign,
24
- bucketRanges,
25
- controlOf,
26
- DEFAULT_PREVIEW_PARAM,
27
- ExperimentStore,
28
- normaliseDefinition,
29
- parsePreview,
30
- pathMatches,
31
- } from './core/experiments';
32
- export type { IAssignContext, IAssignment, TAssignmentReason, TExperimentsStatus } from './core/experiments';
33
- export { fnv1a32, hashV2 } from './core/hash';
34
- export { Observable } from './core/observable';
35
- export { EventQueue } from './core/queue';
36
- export type { ITransport } from './core/queue';
37
- export { effectiveRatio, SectionClock } from './core/sections';
38
- export type { ISectionSummary } from './core/sections';
39
- export { memoryStorage, readJson, safeStorage, writeJson } from './core/storage';
40
- export type { IStorage } from './core/storage';
41
- export { parseUtm, utmParams } from './core/utm';
42
- export { DEFAULT_CONFIG, DEFAULT_STORAGE_PREFIX, KEYS, resolveConfig, storageKeys } from './core/types';
43
- export type {
44
- IBatch,
45
- IExperimentDefinition,
46
- IExperimentVariant,
47
- ITrackedEvent,
48
- ITrackingConfig,
49
- IUtm,
50
- TConsentState,
51
- TEventType,
52
- TProps,
53
- TRequiredTrackingConfig,
54
- TStorageKeys,
55
- TTrackingOptions,
56
- } from './core/types';
57
- export { attachToPage } from './browser/attach';
58
- export type { IAttached } from './browser/attach';
59
- export { browserEnv, browserTransport, deviceOf } from './browser/env';
60
-
61
- /** A tracker for a real browser page. Call `attach()` once the page is up (`<TrackingProvider>` does). */
62
- export const createBrowserTracker = (options: TTrackingOptions): { tracker: Tracker; attach: () => IAttached } => {
63
- const config = resolveConfig(options);
64
- const tracker = new Tracker(config, browserEnv(config.endpoint));
65
- return { tracker, attach: () => attachToPage(tracker, config.heartbeatMs) };
66
- };
67
-
68
- export { trackClick, trackSection } from './markup';
69
- export type { TTrackAttributes } from './markup';
70
- export * from './react';
71
- export { createMemoryTracker } from './testing';
72
- export type { IMemoryTracker, IMemoryTrackerOptions } from './testing';
@@ -1,17 +0,0 @@
1
- /**
2
- * The markup contract as props, for places where JSX `data-*` attributes cannot be
3
- * written directly (a Reqore panel action or a tier's `actionButtonProps` are
4
- * object literals). In JSX, `data-track-click="…"` works just as well.
5
- *
6
- * <ReqoreButton {...trackClick('get-started', 'cta')} … />
7
- * bottomActions={[{ ...primaryCta, ...trackClick('contact', 'pricing-panel'), label: … }]}
8
- */
9
- export type TTrackAttributes = Record<`data-track-${string}`, string>;
10
-
11
- export const trackClick = (target: string, placement?: string, label?: string): TTrackAttributes => ({
12
- 'data-track-click': target,
13
- ...(placement ? { 'data-track-placement': placement } : {}),
14
- ...(label ? { 'data-track-label': label } : {}),
15
- });
16
-
17
- export const trackSection = (id: string): TTrackAttributes => ({ 'data-track-section': id });