@qoretechnologies/reqraft 0.10.64 → 0.10.65-pr.137.g62fcecc

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 (774) hide show
  1. package/README.md +53 -1
  2. package/dist/components/Description/describedControl.d.ts +54 -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 +36 -5
  29. package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
  30. package/dist/components/dpqlEditor/dpqlHelpers.js +340 -62
  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 +35 -17
  35. package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
  36. package/dist/components/dpqlEditor/types.d.ts +54 -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 +207 -97
  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 +58 -10
  49. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  50. package/dist/components/form/engine/FormEngine.js +542 -112
  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 +21 -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 +20 -10
  67. package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
  68. package/dist/components/form/engine/compactRowStyles.js +36 -30
  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 +64 -3
  107. package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
  108. package/dist/components/form/expressions/ExpressionField.js +459 -100
  109. package/dist/components/form/expressions/ExpressionField.js.map +1 -1
  110. package/dist/components/form/expressions/argumentPresence.d.ts +14 -0
  111. package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -1
  112. package/dist/components/form/expressions/argumentPresence.js +16 -1
  113. package/dist/components/form/expressions/argumentPresence.js.map +1 -1
  114. package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
  115. package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
  116. package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
  117. package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
  118. package/dist/components/form/expressions/builder/argumentLabel.js +27 -9
  119. package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
  120. package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
  121. package/dist/components/form/expressions/builder/argumentWrapper.js +3 -1
  122. package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
  123. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
  124. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +5 -4
  125. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -1
  126. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +1 -1
  127. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -1
  128. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +6 -3
  129. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
  130. package/dist/components/form/expressions/builder/index.d.ts +24 -2
  131. package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
  132. package/dist/components/form/expressions/builder/index.js +138 -78
  133. package/dist/components/form/expressions/builder/index.js.map +1 -1
  134. package/dist/components/form/expressions/builder/item.d.ts +6 -2
  135. package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
  136. package/dist/components/form/expressions/builder/item.js +19 -5
  137. package/dist/components/form/expressions/builder/item.js.map +1 -1
  138. package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
  139. package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
  140. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts +11 -0
  141. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts.map +1 -0
  142. package/dist/components/form/expressions/dpqlMockRecordPath.js +254 -0
  143. package/dist/components/form/expressions/dpqlMockRecordPath.js.map +1 -0
  144. package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
  145. package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
  146. package/dist/components/form/expressions/expressionOperands.js +97 -0
  147. package/dist/components/form/expressions/expressionOperands.js.map +1 -0
  148. package/dist/components/form/expressions/fieldPath.d.ts +24 -0
  149. package/dist/components/form/expressions/fieldPath.d.ts.map +1 -0
  150. package/dist/components/form/expressions/fieldPath.js +152 -0
  151. package/dist/components/form/expressions/fieldPath.js.map +1 -0
  152. package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
  153. package/dist/components/form/expressions/mockExpressions.js +22 -5
  154. package/dist/components/form/expressions/mockExpressions.js.map +1 -1
  155. package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
  156. package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
  157. package/dist/components/form/expressions/renderExpressionToText.js +40 -9
  158. package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
  159. package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
  160. package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
  161. package/dist/components/form/expressions/textOfExpression.js +49 -0
  162. package/dist/components/form/expressions/textOfExpression.js.map +1 -0
  163. package/dist/components/form/expressions/types.d.ts +7 -0
  164. package/dist/components/form/expressions/types.d.ts.map +1 -1
  165. package/dist/components/form/expressions/types.js +6 -1
  166. package/dist/components/form/expressions/types.js.map +1 -1
  167. package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
  168. package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
  169. package/dist/components/form/expressions/useExpressionType.js +181 -0
  170. package/dist/components/form/expressions/useExpressionType.js.map +1 -0
  171. package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
  172. package/dist/components/form/expressions/useRenderExpression.js +13 -9
  173. package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
  174. package/dist/components/form/expressions/wildcardExpressions.d.ts +27 -0
  175. package/dist/components/form/expressions/wildcardExpressions.d.ts.map +1 -0
  176. package/dist/components/form/expressions/wildcardExpressions.js +101 -0
  177. package/dist/components/form/expressions/wildcardExpressions.js.map +1 -0
  178. package/dist/components/form/fields/Field.d.ts.map +1 -1
  179. package/dist/components/form/fields/Field.js +26 -9
  180. package/dist/components/form/fields/Field.js.map +1 -1
  181. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
  182. package/dist/components/form/fields/allowed-values/AllowedValues.js +17 -4
  183. package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
  184. package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
  185. package/dist/components/form/fields/array/ArrayAuto.js +24 -0
  186. package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
  187. package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
  188. package/dist/components/form/fields/array/ArrayAutoField.js +36 -13
  189. package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
  190. package/dist/components/form/fields/auto/AutoFormField.d.ts +20 -1
  191. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
  192. package/dist/components/form/fields/auto/AutoFormField.js +81 -36
  193. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
  194. package/dist/components/form/fields/auto/hostEditorValue.d.ts +30 -0
  195. package/dist/components/form/fields/auto/hostEditorValue.d.ts.map +1 -0
  196. package/dist/components/form/fields/auto/hostEditorValue.js +53 -0
  197. package/dist/components/form/fields/auto/hostEditorValue.js.map +1 -0
  198. package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
  199. package/dist/components/form/fields/binary/Binary.js +23 -3
  200. package/dist/components/form/fields/binary/Binary.js.map +1 -1
  201. package/dist/components/form/fields/boolean/Boolean.d.ts +5 -0
  202. package/dist/components/form/fields/boolean/Boolean.d.ts.map +1 -1
  203. package/dist/components/form/fields/boolean/Boolean.js +9 -1
  204. package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
  205. package/dist/components/form/fields/color/Color.d.ts +103 -16
  206. package/dist/components/form/fields/color/Color.d.ts.map +1 -1
  207. package/dist/components/form/fields/color/Color.js +616 -16
  208. package/dist/components/form/fields/color/Color.js.map +1 -1
  209. package/dist/components/form/fields/emittedValues.d.ts +34 -3
  210. package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
  211. package/dist/components/form/fields/emittedValues.js +24 -1
  212. package/dist/components/form/fields/emittedValues.js.map +1 -1
  213. package/dist/components/form/fields/file/File.d.ts +1 -1
  214. package/dist/components/form/fields/file/File.d.ts.map +1 -1
  215. package/dist/components/form/fields/file/File.js +4 -2
  216. package/dist/components/form/fields/file/File.js.map +1 -1
  217. package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
  218. package/dist/components/form/fields/long-string/LongString.js +17 -3
  219. package/dist/components/form/fields/long-string/LongString.js.map +1 -1
  220. package/dist/components/form/fields/markdown/MarkdownView.js +1 -1
  221. package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
  222. package/dist/components/form/fields/multi-select/MultiSelectFormField.js +4 -1
  223. package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
  224. package/dist/components/form/fields/number/Number.d.ts +6 -0
  225. package/dist/components/form/fields/number/Number.d.ts.map +1 -1
  226. package/dist/components/form/fields/number/Number.js +41 -6
  227. package/dist/components/form/fields/number/Number.js.map +1 -1
  228. package/dist/components/form/fields/object/Object.d.ts +1 -1
  229. package/dist/components/form/fields/object/Object.d.ts.map +1 -1
  230. package/dist/components/form/fields/object/Object.js +4 -2
  231. package/dist/components/form/fields/object/Object.js.map +1 -1
  232. package/dist/components/form/fields/pendingEdit.d.ts +52 -0
  233. package/dist/components/form/fields/pendingEdit.d.ts.map +1 -0
  234. package/dist/components/form/fields/pendingEdit.js +79 -0
  235. package/dist/components/form/fields/pendingEdit.js.map +1 -0
  236. package/dist/components/form/fields/rich-text/RichText.d.ts +8 -1
  237. package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
  238. package/dist/components/form/fields/rich-text/RichText.js +188 -82
  239. package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
  240. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts +18 -0
  241. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts.map +1 -0
  242. package/dist/components/form/fields/rich-text/useTemplateTags.js +49 -0
  243. package/dist/components/form/fields/rich-text/useTemplateTags.js.map +1 -0
  244. package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -1
  245. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +4 -1
  246. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -1
  247. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -1
  248. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +20 -5
  249. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -1
  250. package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -1
  251. package/dist/components/form/fields/schema-definition/TableEditor.js +10 -2
  252. package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -1
  253. package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -1
  254. package/dist/components/form/fields/schema-definition/index.js +8 -4
  255. package/dist/components/form/fields/schema-definition/index.js.map +1 -1
  256. package/dist/components/form/fields/select/Select.d.ts +2 -0
  257. package/dist/components/form/fields/select/Select.d.ts.map +1 -1
  258. package/dist/components/form/fields/select/Select.js +19 -10
  259. package/dist/components/form/fields/select/Select.js.map +1 -1
  260. package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
  261. package/dist/components/form/fields/select/SelectCollection.js +8 -2
  262. package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
  263. package/dist/components/form/fields/select/unavailableRow.d.ts +23 -0
  264. package/dist/components/form/fields/select/unavailableRow.d.ts.map +1 -0
  265. package/dist/components/form/fields/select/unavailableRow.js +55 -0
  266. package/dist/components/form/fields/select/unavailableRow.js.map +1 -0
  267. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +11 -5
  268. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
  269. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +13 -5
  270. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
  271. package/dist/components/form/fields/template/TemplateBrowser.d.ts +22 -0
  272. package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
  273. package/dist/components/form/fields/template/TemplateBrowser.js +54 -0
  274. package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
  275. package/dist/components/form/fields/template/TemplateField.d.ts +102 -1
  276. package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
  277. package/dist/components/form/fields/template/TemplateField.js +572 -85
  278. package/dist/components/form/fields/template/TemplateField.js.map +1 -1
  279. package/dist/components/form/fields/template/TemplateText.d.ts +0 -17
  280. package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -1
  281. package/dist/components/form/fields/template/TemplateText.js +9 -11
  282. package/dist/components/form/fields/template/TemplateText.js.map +1 -1
  283. package/dist/components/form/fields/template/writtenAsText.d.ts +61 -0
  284. package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
  285. package/dist/components/form/fields/template/writtenAsText.js +204 -0
  286. package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
  287. package/dist/components/form/index.d.ts +10 -0
  288. package/dist/components/form/index.d.ts.map +1 -1
  289. package/dist/components/form/index.js +23 -1
  290. package/dist/components/form/index.js.map +1 -1
  291. package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
  292. package/dist/components/imageLightbox/ImageLightbox.js +19 -7
  293. package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
  294. package/dist/components/log/Log.d.ts.map +1 -1
  295. package/dist/components/log/Log.js +16 -8
  296. package/dist/components/log/Log.js.map +1 -1
  297. package/dist/components/menu/Menu.d.ts.map +1 -1
  298. package/dist/components/menu/Menu.js +19 -10
  299. package/dist/components/menu/Menu.js.map +1 -1
  300. package/dist/components/smartEditor/CompletionMenu.d.ts +43 -0
  301. package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
  302. package/dist/components/smartEditor/CompletionMenu.js +196 -0
  303. package/dist/components/smartEditor/CompletionMenu.js.map +1 -0
  304. package/dist/components/smartEditor/MarkdownDoc.d.ts +1 -1
  305. package/dist/components/smartEditor/MarkdownDoc.js +3 -3
  306. package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
  307. package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
  308. package/dist/components/smartEditor/SmartEditor.js +164 -180
  309. package/dist/components/smartEditor/SmartEditor.js.map +1 -1
  310. package/dist/components/smartEditor/completionStyle.d.ts +27 -0
  311. package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
  312. package/dist/components/smartEditor/completionStyle.js +68 -0
  313. package/dist/components/smartEditor/completionStyle.js.map +1 -0
  314. package/dist/components/smartEditor/index.d.ts +5 -1
  315. package/dist/components/smartEditor/index.d.ts.map +1 -1
  316. package/dist/components/smartEditor/index.js +19 -1
  317. package/dist/components/smartEditor/index.js.map +1 -1
  318. package/dist/components/smartEditor/templateCompletions.d.ts +18 -0
  319. package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
  320. package/dist/components/smartEditor/templateCompletions.js +94 -0
  321. package/dist/components/smartEditor/templateCompletions.js.map +1 -0
  322. package/dist/components/smartEditor/typedReferences.d.ts +21 -0
  323. package/dist/components/smartEditor/typedReferences.d.ts.map +1 -0
  324. package/dist/components/smartEditor/typedReferences.js +82 -0
  325. package/dist/components/smartEditor/typedReferences.js.map +1 -0
  326. package/dist/components/smartEditor/types.d.ts +33 -1
  327. package/dist/components/smartEditor/types.d.ts.map +1 -1
  328. package/dist/components/smartEditor/useLspAutocomplete.d.ts +32 -0
  329. package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
  330. package/dist/components/smartEditor/useLspAutocomplete.js +228 -118
  331. package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
  332. package/dist/components/smartEditor/useLspHover.d.ts +33 -7
  333. package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
  334. package/dist/components/smartEditor/useLspHover.js +279 -35
  335. package/dist/components/smartEditor/useLspHover.js.map +1 -1
  336. package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
  337. package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
  338. package/dist/components/smartEditor/useLspSession.d.ts +6 -0
  339. package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
  340. package/dist/components/smartEditor/useLspSession.js +7 -6
  341. package/dist/components/smartEditor/useLspSession.js.map +1 -1
  342. package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -1
  343. package/dist/components/supportTicket/AttachmentChips.js +15 -5
  344. package/dist/components/supportTicket/AttachmentChips.js.map +1 -1
  345. package/dist/components/supportTicket/ReferencePicker.d.ts +9 -2
  346. package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
  347. package/dist/components/supportTicket/ReferencePicker.js +27 -6
  348. package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
  349. package/dist/components/supportTicket/TicketHeader.d.ts +3 -4
  350. package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
  351. package/dist/components/supportTicket/TicketHeader.js +20 -2
  352. package/dist/components/supportTicket/TicketHeader.js.map +1 -1
  353. package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
  354. package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
  355. package/dist/components/ticketReferences/TicketReferences.js +9 -4
  356. package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
  357. package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
  358. package/dist/components/ticketThread/TicketThread.js +38 -13
  359. package/dist/components/ticketThread/TicketThread.js.map +1 -1
  360. package/dist/helpers/descriptionTooltip.d.ts +43 -0
  361. package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
  362. package/dist/helpers/descriptionTooltip.js +70 -0
  363. package/dist/helpers/descriptionTooltip.js.map +1 -0
  364. package/dist/helpers/domProps.d.ts +5 -0
  365. package/dist/helpers/domProps.d.ts.map +1 -0
  366. package/dist/helpers/domProps.js +47 -0
  367. package/dist/helpers/domProps.js.map +1 -0
  368. package/dist/helpers/expressions.d.ts +107 -2
  369. package/dist/helpers/expressions.d.ts.map +1 -1
  370. package/dist/helpers/expressions.js +223 -8
  371. package/dist/helpers/expressions.js.map +1 -1
  372. package/dist/helpers/hoveringPointer.d.ts +26 -0
  373. package/dist/helpers/hoveringPointer.d.ts.map +1 -0
  374. package/dist/helpers/hoveringPointer.js +29 -0
  375. package/dist/helpers/hoveringPointer.js.map +1 -0
  376. package/dist/helpers/markdownText.d.ts +14 -0
  377. package/dist/helpers/markdownText.d.ts.map +1 -0
  378. package/dist/helpers/markdownText.js +160 -0
  379. package/dist/helpers/markdownText.js.map +1 -0
  380. package/dist/helpers/qorusTypeCatalogue.d.ts +53 -0
  381. package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
  382. package/dist/helpers/qorusTypeCatalogue.js +262 -0
  383. package/dist/helpers/qorusTypeCatalogue.js.map +1 -0
  384. package/dist/helpers/readableColors.d.ts +36 -0
  385. package/dist/helpers/readableColors.d.ts.map +1 -0
  386. package/dist/helpers/readableColors.js +116 -0
  387. package/dist/helpers/readableColors.js.map +1 -0
  388. package/dist/helpers/recordFieldReference.d.ts +15 -0
  389. package/dist/helpers/recordFieldReference.d.ts.map +1 -0
  390. package/dist/helpers/recordFieldReference.js +89 -0
  391. package/dist/helpers/recordFieldReference.js.map +1 -0
  392. package/dist/helpers/templateItems.d.ts +2 -2
  393. package/dist/helpers/templateItems.d.ts.map +1 -1
  394. package/dist/helpers/templateItems.js +6 -4
  395. package/dist/helpers/templateItems.js.map +1 -1
  396. package/dist/helpers/templateText.js +5 -2
  397. package/dist/helpers/templateText.js.map +1 -1
  398. package/dist/helpers/templates.d.ts +41 -14
  399. package/dist/helpers/templates.d.ts.map +1 -1
  400. package/dist/helpers/templates.js +152 -9
  401. package/dist/helpers/templates.js.map +1 -1
  402. package/dist/helpers/validations.d.ts +9 -0
  403. package/dist/helpers/validations.d.ts.map +1 -1
  404. package/dist/helpers/validations.js +139 -33
  405. package/dist/helpers/validations.js.map +1 -1
  406. package/dist/hooks/useQorusTypes.d.ts +7 -15
  407. package/dist/hooks/useQorusTypes.d.ts.map +1 -1
  408. package/dist/hooks/useQorusTypes.js +25 -166
  409. package/dist/hooks/useQorusTypes.js.map +1 -1
  410. package/dist/hooks/useReadableIntentShade.d.ts +9 -0
  411. package/dist/hooks/useReadableIntentShade.d.ts.map +1 -0
  412. package/dist/hooks/useReadableIntentShade.js +23 -0
  413. package/dist/hooks/useReadableIntentShade.js.map +1 -0
  414. package/dist/hooks/useReadableOpacity.d.ts +6 -0
  415. package/dist/hooks/useReadableOpacity.d.ts.map +1 -0
  416. package/dist/hooks/useReadableOpacity.js +17 -0
  417. package/dist/hooks/useReadableOpacity.js.map +1 -0
  418. package/dist/index.d.ts +1 -0
  419. package/dist/index.d.ts.map +1 -1
  420. package/dist/index.js +1 -0
  421. package/dist/index.js.map +1 -1
  422. package/dist/tracking/ui/ExperimentCard.d.ts +1 -1
  423. package/dist/tracking/ui/ExperimentCard.d.ts.map +1 -1
  424. package/dist/tracking/ui/ExperimentCard.js +26 -10
  425. package/dist/tracking/ui/ExperimentCard.js.map +1 -1
  426. package/dist/tracking/ui/card.d.ts +2 -2
  427. package/dist/tracking/ui/card.d.ts.map +1 -1
  428. package/dist/tracking/ui/card.js +2 -2
  429. package/dist/tracking/ui/card.js.map +1 -1
  430. package/dist/tracking/ui/readable.d.ts +14 -0
  431. package/dist/tracking/ui/readable.d.ts.map +1 -0
  432. package/dist/tracking/ui/readable.js +60 -0
  433. package/dist/tracking/ui/readable.js.map +1 -0
  434. package/dist/utils/fetch.d.ts +9 -2
  435. package/dist/utils/fetch.d.ts.map +1 -1
  436. package/dist/utils/fetch.js +6 -5
  437. package/dist/utils/fetch.js.map +1 -1
  438. package/dist/utils/websocket.d.ts +65 -2
  439. package/dist/utils/websocket.d.ts.map +1 -1
  440. package/dist/utils/websocket.js +276 -44
  441. package/dist/utils/websocket.js.map +1 -1
  442. package/package.json +14 -5
  443. package/.claude/CLAUDE.md +0 -317
  444. package/.tasks/EXPORT_EXPRESSION_BUILDER.md +0 -38
  445. package/.tasks/EXPRESSION_BUILDER_REPORT.md +0 -149
  446. package/.tasks/EXPRESSION_FIELD_SEAMS.md +0 -66
  447. package/.tasks/FIELD_STACK_REPORT.md +0 -234
  448. package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +0 -558
  449. package/.tasks/FORM_ENGINE_EXPRESSIONS.md +0 -197
  450. package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +0 -95
  451. package/.tasks/FORM_FIELD_EXTRAS.md +0 -72
  452. package/.tasks/INDEX.md +0 -111
  453. package/.tasks/LSP_SHARED_CONNECTION.md +0 -75
  454. package/.tasks/QONSOLE_ASSIST_FEATURES.md +0 -306
  455. package/.tasks/RENDER_EXPRESSION_LSP.md +0 -159
  456. package/.tasks/REQRAFT_AUTO_FIELD.md +0 -176
  457. package/.tasks/SCHEMA_DEFINITION_FIELD.md +0 -250
  458. package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +0 -340
  459. package/.tasks/SMART_EDITOR_LSP_FEATURES.md +0 -299
  460. package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +0 -280
  461. package/.tasks/SMART_EDITOR_UX_POLISH.md +0 -383
  462. package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +0 -246
  463. package/.tasks/STORY_NETWORK_ISOLATION.md +0 -98
  464. package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +0 -72
  465. package/CODE_OF_CONDUCT.md +0 -105
  466. package/CONTRIBUTING.MD +0 -78
  467. package/SECURITY.md +0 -3
  468. package/chromatic.config.json +0 -5
  469. package/design/COMPACT_ENGINE_REDESIGN.md +0 -156
  470. package/design/COMPACT_INFO_DISPLAY.md +0 -87
  471. package/design/COMPACT_PARITY.md +0 -85
  472. package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +0 -92
  473. package/design/FORM_ENGINE_COMPACT.md +0 -300
  474. package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +0 -353
  475. package/design/FORM_ENGINE_EXPRESSIONS.md +0 -257
  476. package/design/FORM_ENGINE_FIELD_MIGRATION.md +0 -419
  477. package/design/IDE_INTEGRATION.md +0 -64
  478. package/design/RENDER_EXPRESSION_TRANSPORT.md +0 -156
  479. package/design/SELECT_DIALOG_FLOOR.md +0 -86
  480. package/design/SMART_EDITOR_UX.md +0 -438
  481. package/design/TRACKING.md +0 -290
  482. package/design/UNAVAILABLE_ALLOWED_VALUES.md +0 -226
  483. package/src/components/Description/index.tsx +0 -254
  484. package/src/components/Description/markdownRendererContext.tsx +0 -29
  485. package/src/components/FocusedEditing/index.tsx +0 -50
  486. package/src/components/codeSize/index.tsx +0 -79
  487. package/src/components/composer/Composer.stories.tsx +0 -238
  488. package/src/components/composer/Composer.tsx +0 -554
  489. package/src/components/composer/helpers.ts +0 -74
  490. package/src/components/composer/index.ts +0 -2
  491. package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -1183
  492. package/src/components/dpqlEditor/DpqlEditor.tsx +0 -219
  493. package/src/components/dpqlEditor/dpqlHelpers.ts +0 -287
  494. package/src/components/dpqlEditor/dpqlInserter.ts +0 -121
  495. package/src/components/dpqlEditor/dpqlProbe.ts +0 -165
  496. package/src/components/dpqlEditor/dpqlTags.ts +0 -114
  497. package/src/components/dpqlEditor/index.ts +0 -41
  498. package/src/components/dpqlEditor/types.ts +0 -203
  499. package/src/components/dpqlEditor/useDpqlProbe.ts +0 -33
  500. package/src/components/dpqlEditor/useDpqlSession.ts +0 -411
  501. package/src/components/form/engine/CompactRow.tsx +0 -2620
  502. package/src/components/form/engine/CompactToolbar.tsx +0 -330
  503. package/src/components/form/engine/FormEngine.stories.tsx +0 -9920
  504. package/src/components/form/engine/FormEngine.tsx +0 -4569
  505. package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
  506. package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -331
  507. package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
  508. package/src/components/form/engine/OptionFieldMessages.tsx +0 -477
  509. package/src/components/form/engine/OptionsHelpDialog.tsx +0 -29
  510. package/src/components/form/engine/__fixtures__/basicFormOptions.ts +0 -309
  511. package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +0 -45
  512. package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +0 -233
  513. package/src/components/form/engine/_structuredData/SchemaDataView.tsx +0 -742
  514. package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +0 -85
  515. package/src/components/form/engine/_structuredData/StructuredDataView.tsx +0 -75
  516. package/src/components/form/engine/_structuredData/structuredData.ts +0 -145
  517. package/src/components/form/engine/compactRowContext.ts +0 -148
  518. package/src/components/form/engine/compactRowStyles.ts +0 -898
  519. package/src/components/form/engine/compactToolbarContext.ts +0 -69
  520. package/src/components/form/engine/optionActions.ts +0 -128
  521. package/src/components/form/engine/optionsContext.ts +0 -24
  522. package/src/components/form/engine/readFirst.ts +0 -1077
  523. package/src/components/form/engine/rendererTypes.ts +0 -107
  524. package/src/components/form/engine/revealRow.ts +0 -123
  525. package/src/components/form/engine/rowFocus.ts +0 -101
  526. package/src/components/form/engine/rowMenuContext.ts +0 -159
  527. package/src/components/form/engine/rowOpenPicker.ts +0 -27
  528. package/src/components/form/engine/typeChoices.ts +0 -63
  529. package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +0 -159
  530. package/src/components/form/engine/variants/VariantCalmTable.tsx +0 -244
  531. package/src/components/form/engine/variants/VariantCards.tsx +0 -212
  532. package/src/components/form/engine/variants/VariantFocus.tsx +0 -382
  533. package/src/components/form/engine/variants/VariantMinimal.tsx +0 -170
  534. package/src/components/form/engine/variants/focusDemo.ts +0 -145
  535. package/src/components/form/engine/variants/variantModel.ts +0 -223
  536. package/src/components/form/engine/variants/variantParts.tsx +0 -313
  537. package/src/components/form/expressions/DpqlRendering.tsx +0 -85
  538. package/src/components/form/expressions/ExpressionField.stories.tsx +0 -1395
  539. package/src/components/form/expressions/ExpressionField.tsx +0 -503
  540. package/src/components/form/expressions/argumentPresence.ts +0 -213
  541. package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +0 -1683
  542. package/src/components/form/expressions/builder/argumentDetail.tsx +0 -17
  543. package/src/components/form/expressions/builder/argumentLabel.tsx +0 -146
  544. package/src/components/form/expressions/builder/argumentSlot.tsx +0 -101
  545. package/src/components/form/expressions/builder/argumentWrapper.tsx +0 -243
  546. package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +0 -120
  547. package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +0 -69
  548. package/src/components/form/expressions/builder/index.tsx +0 -1545
  549. package/src/components/form/expressions/builder/item.tsx +0 -89
  550. package/src/components/form/expressions/builder/moveToPositionStrip.tsx +0 -156
  551. package/src/components/form/expressions/builder/renderTemplate.tsx +0 -42
  552. package/src/components/form/expressions/dpqlMockLanguage.ts +0 -566
  553. package/src/components/form/expressions/dpqlMockLsp.ts +0 -126
  554. package/src/components/form/expressions/mockExpressions.ts +0 -317
  555. package/src/components/form/expressions/renderExpressionToText.ts +0 -137
  556. package/src/components/form/expressions/types.ts +0 -110
  557. package/src/components/form/expressions/useExpressions.ts +0 -101
  558. package/src/components/form/expressions/useRenderExpression.ts +0 -165
  559. package/src/components/form/fields/Field.stories.tsx +0 -143
  560. package/src/components/form/fields/Field.tsx +0 -732
  561. package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -297
  562. package/src/components/form/fields/array/ArrayAuto.tsx +0 -237
  563. package/src/components/form/fields/array/ArrayAutoField.stories.tsx +0 -475
  564. package/src/components/form/fields/array/ArrayAutoField.tsx +0 -367
  565. package/src/components/form/fields/auto/AutoFormField.stories.tsx +0 -825
  566. package/src/components/form/fields/auto/AutoFormField.tsx +0 -1164
  567. package/src/components/form/fields/binary/Binary.stories.tsx +0 -122
  568. package/src/components/form/fields/binary/Binary.tsx +0 -91
  569. package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -125
  570. package/src/components/form/fields/boolean/Boolean.tsx +0 -34
  571. package/src/components/form/fields/byte-size/ByteSize.stories.tsx +0 -87
  572. package/src/components/form/fields/byte-size/ByteSize.tsx +0 -58
  573. package/src/components/form/fields/color/Color.stories.tsx +0 -99
  574. package/src/components/form/fields/color/Color.tsx +0 -46
  575. package/src/components/form/fields/cron/Cron.stories.tsx +0 -68
  576. package/src/components/form/fields/cron/Cron.tsx +0 -80
  577. package/src/components/form/fields/date/Date.stories.tsx +0 -77
  578. package/src/components/form/fields/date/Date.tsx +0 -55
  579. package/src/components/form/fields/emittedValues.ts +0 -70
  580. package/src/components/form/fields/file/File.stories.tsx +0 -161
  581. package/src/components/form/fields/file/File.tsx +0 -227
  582. package/src/components/form/fields/long-string/LongString.stories.tsx +0 -120
  583. package/src/components/form/fields/long-string/LongString.tsx +0 -130
  584. package/src/components/form/fields/markdown/Markdown.stories.tsx +0 -76
  585. package/src/components/form/fields/markdown/Markdown.tsx +0 -81
  586. package/src/components/form/fields/markdown/MarkdownView.tsx +0 -222
  587. package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +0 -139
  588. package/src/components/form/fields/number/Number.stories.tsx +0 -159
  589. package/src/components/form/fields/number/Number.tsx +0 -160
  590. package/src/components/form/fields/object/Object.stories.tsx +0 -398
  591. package/src/components/form/fields/object/Object.tsx +0 -255
  592. package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +0 -95
  593. package/src/components/form/fields/radio-group/RadioGroup.tsx +0 -46
  594. package/src/components/form/fields/radio-group/images/java-96x128.png +0 -0
  595. package/src/components/form/fields/radio-group/images/python-129x128.png +0 -0
  596. package/src/components/form/fields/radio-group/images/qore-106x128.png +0 -0
  597. package/src/components/form/fields/rich-text/RichText.stories.tsx +0 -260
  598. package/src/components/form/fields/rich-text/RichText.tsx +0 -537
  599. package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +0 -242
  600. package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +0 -758
  601. package/src/components/form/fields/schema-definition/Hint.tsx +0 -22
  602. package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +0 -138
  603. package/src/components/form/fields/schema-definition/Loader.tsx +0 -20
  604. package/src/components/form/fields/schema-definition/MigrationsTab.tsx +0 -187
  605. package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +0 -286
  606. package/src/components/form/fields/schema-definition/TableEditor.tsx +0 -155
  607. package/src/components/form/fields/schema-definition/TablesTab.tsx +0 -138
  608. package/src/components/form/fields/schema-definition/catalog.ts +0 -237
  609. package/src/components/form/fields/schema-definition/helpers.ts +0 -90
  610. package/src/components/form/fields/schema-definition/index.tsx +0 -418
  611. package/src/components/form/fields/schema-definition/mockCatalog.ts +0 -325
  612. package/src/components/form/fields/schema-definition/mockDefinition.ts +0 -111
  613. package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +0 -152
  614. package/src/components/form/fields/schema-definition/starterTemplate.ts +0 -68
  615. package/src/components/form/fields/schema-definition/types.ts +0 -185
  616. package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +0 -49
  617. package/src/components/form/fields/select/Select.stories.tsx +0 -872
  618. package/src/components/form/fields/select/Select.tsx +0 -624
  619. package/src/components/form/fields/select/SelectCollection.tsx +0 -594
  620. package/src/components/form/fields/string/String.stories.tsx +0 -86
  621. package/src/components/form/fields/string/String.tsx +0 -43
  622. package/src/components/form/fields/template/ExampleValueModal.stories.tsx +0 -114
  623. package/src/components/form/fields/template/ExampleValueModal.tsx +0 -99
  624. package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +0 -47
  625. package/src/components/form/fields/template/TemplateField.stories.tsx +0 -1121
  626. package/src/components/form/fields/template/TemplateField.tsx +0 -1717
  627. package/src/components/form/fields/template/TemplateText.tsx +0 -115
  628. package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +0 -7
  629. package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +0 -147
  630. package/src/components/form/fields/template/__fixtures__/templates.json +0 -83
  631. package/src/components/form/fields/timeout/Timeout.stories.tsx +0 -228
  632. package/src/components/form/fields/timeout/Timeout.tsx +0 -87
  633. package/src/components/form/fields/url/Url.stories.tsx +0 -94
  634. package/src/components/form/fields/url/Url.tsx +0 -85
  635. package/src/components/form/index.tsx +0 -47
  636. package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
  637. package/src/components/imageLightbox/ImageLightbox.tsx +0 -236
  638. package/src/components/imageLightbox/index.ts +0 -1
  639. package/src/components/log/Log.stories.tsx +0 -333
  640. package/src/components/log/Log.tsx +0 -285
  641. package/src/components/menu/Menu.stories.tsx +0 -155
  642. package/src/components/menu/Menu.tsx +0 -312
  643. package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +0 -797
  644. package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +0 -105
  645. package/src/components/qonsoleSmartInput/index.ts +0 -16
  646. package/src/components/qonsoleSmartInput/qonsoleInserter.ts +0 -77
  647. package/src/components/qonsoleSmartInput/types.ts +0 -133
  648. package/src/components/qonsoleSmartInput/useQonsoleSession.ts +0 -124
  649. package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +0 -62
  650. package/src/components/searchFilterBar/SearchFilterBar.tsx +0 -144
  651. package/src/components/searchFilterBar/index.ts +0 -1
  652. package/src/components/smartEditor/MarkdownDoc.tsx +0 -190
  653. package/src/components/smartEditor/SmartEditor.stories.tsx +0 -475
  654. package/src/components/smartEditor/SmartEditor.tsx +0 -808
  655. package/src/components/smartEditor/__fixtures__/mockLspServer.ts +0 -205
  656. package/src/components/smartEditor/helpers.ts +0 -217
  657. package/src/components/smartEditor/index.ts +0 -35
  658. package/src/components/smartEditor/styling.ts +0 -45
  659. package/src/components/smartEditor/types.ts +0 -211
  660. package/src/components/smartEditor/useLspAutocomplete.ts +0 -758
  661. package/src/components/smartEditor/useLspDiagnosticDecorations.ts +0 -125
  662. package/src/components/smartEditor/useLspHover.ts +0 -230
  663. package/src/components/smartEditor/useLspSemanticTokens.ts +0 -298
  664. package/src/components/smartEditor/useLspSession.ts +0 -231
  665. package/src/components/smartEditor/useLspSignatureHelp.ts +0 -198
  666. package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -171
  667. package/src/components/supportTicket/AttachmentChips.tsx +0 -147
  668. package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -257
  669. package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -129
  670. package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -584
  671. package/src/components/supportTicket/ReferencePicker.tsx +0 -563
  672. package/src/components/supportTicket/TicketConversation.stories.tsx +0 -121
  673. package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
  674. package/src/components/supportTicket/TicketHeader.tsx +0 -247
  675. package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
  676. package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
  677. package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -354
  678. package/src/components/supportTicket/TicketReplyBox.tsx +0 -150
  679. package/src/components/supportTicket/__fixtures__/kindMarks.ts +0 -28
  680. package/src/components/supportTicket/attachmentAccess.ts +0 -97
  681. package/src/components/supportTicket/fileToAttachment.ts +0 -24
  682. package/src/components/supportTicket/index.ts +0 -10
  683. package/src/components/supportTicket/meta.ts +0 -206
  684. package/src/components/supportTicket/ticketModel.ts +0 -131
  685. package/src/components/supportTicket/useLoadedImages.ts +0 -73
  686. package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -315
  687. package/src/components/ticketReferences/TicketReferences.tsx +0 -906
  688. package/src/components/ticketReferences/index.ts +0 -2
  689. package/src/components/ticketThread/TicketThread.stories.tsx +0 -829
  690. package/src/components/ticketThread/TicketThread.tsx +0 -719
  691. package/src/components/ticketThread/index.ts +0 -6
  692. package/src/contexts/FetchContext.tsx +0 -25
  693. package/src/contexts/ReqraftContext.tsx +0 -9
  694. package/src/contexts/StorageContext.tsx +0 -33
  695. package/src/global.d.ts +0 -4
  696. package/src/helpers/allowedValues.ts +0 -249
  697. package/src/helpers/choiceChip.ts +0 -227
  698. package/src/helpers/common.ts +0 -326
  699. package/src/helpers/dpqlDetection.ts +0 -209
  700. package/src/helpers/expressions.ts +0 -140
  701. package/src/helpers/optionUiTypes.ts +0 -199
  702. package/src/helpers/options.ts +0 -150
  703. package/src/helpers/providerValue.ts +0 -125
  704. package/src/helpers/scrollbar.ts +0 -32
  705. package/src/helpers/singleLineString.ts +0 -61
  706. package/src/helpers/templateItems.ts +0 -81
  707. package/src/helpers/templateText.ts +0 -350
  708. package/src/helpers/templates.ts +0 -602
  709. package/src/helpers/validations.ts +0 -2085
  710. package/src/hooks/useArgSchema.ts +0 -37
  711. package/src/hooks/useCoarsePointer.ts +0 -30
  712. package/src/hooks/useFetch/useFetch.stories.tsx +0 -379
  713. package/src/hooks/useFetch/useFetch.tsx +0 -154
  714. package/src/hooks/usePhoneViewport.ts +0 -34
  715. package/src/hooks/useQorusTypes.ts +0 -233
  716. package/src/hooks/useReqraftProperty.ts +0 -16
  717. package/src/hooks/useStorage/useStorage.stories.tsx +0 -168
  718. package/src/hooks/useStorage/useStorage.ts +0 -35
  719. package/src/hooks/useTemplates.ts +0 -123
  720. package/src/hooks/useValidation.ts +0 -9
  721. package/src/hooks/useWebSocket/useWebSocket.ts +0 -224
  722. package/src/hooks/useWebSocket/useWebsocket.stories.tsx +0 -640
  723. package/src/hooks/useWhyDidYouUpdate.ts +0 -38
  724. package/src/index.tsx +0 -86
  725. package/src/providers/FetchProvider.tsx +0 -40
  726. package/src/providers/ReqraftProvider.tsx +0 -52
  727. package/src/providers/StorageProvider.tsx +0 -131
  728. package/src/stores/currentUser/currentUser.stories.tsx +0 -100
  729. package/src/stores/currentUser/currentUser.tsx +0 -94
  730. package/src/stories/Data/fileFieldArgSchema.json +0 -86
  731. package/src/stories/Tests/utils.ts +0 -320
  732. package/src/stories/storyNetwork.ts +0 -92
  733. package/src/stories/tracking.tsx +0 -206
  734. package/src/tracking/browser/attach.ts +0 -186
  735. package/src/tracking/browser/env.ts +0 -78
  736. package/src/tracking/core/consent.ts +0 -37
  737. package/src/tracking/core/engagement.ts +0 -47
  738. package/src/tracking/core/experiments.ts +0 -258
  739. package/src/tracking/core/hash.ts +0 -26
  740. package/src/tracking/core/ids.ts +0 -25
  741. package/src/tracking/core/observable.ts +0 -23
  742. package/src/tracking/core/queue.ts +0 -131
  743. package/src/tracking/core/sections.ts +0 -166
  744. package/src/tracking/core/storage.ts +0 -69
  745. package/src/tracking/core/tracker.ts +0 -417
  746. package/src/tracking/core/types.ts +0 -162
  747. package/src/tracking/core/utm.ts +0 -23
  748. package/src/tracking/index.ts +0 -72
  749. package/src/tracking/markup.ts +0 -17
  750. package/src/tracking/react/Experiment.tsx +0 -44
  751. package/src/tracking/react/TrackingProvider.tsx +0 -56
  752. package/src/tracking/react/hooks.ts +0 -106
  753. package/src/tracking/react/index.ts +0 -13
  754. package/src/tracking/testing.ts +0 -108
  755. package/src/tracking/ui/ExperimentCard.stories.tsx +0 -296
  756. package/src/tracking/ui/ExperimentCard.tsx +0 -667
  757. package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -155
  758. package/src/tracking/ui/ExperimentsOverlay.tsx +0 -437
  759. package/src/tracking/ui/anchor.ts +0 -180
  760. package/src/tracking/ui/card.ts +0 -464
  761. package/src/tracking/ui/client.ts +0 -117
  762. package/src/tracking/ui/index.ts +0 -77
  763. package/src/tracking/ui/types.ts +0 -110
  764. package/src/tracking/ui/useExperimentsAdmin.ts +0 -103
  765. package/src/types/Form.ts +0 -29
  766. package/src/types.ts +0 -14
  767. package/src/utils/datetime.ts +0 -10
  768. package/src/utils/fetch.ts +0 -457
  769. package/src/utils/lspClient.ts +0 -711
  770. package/src/utils/lspClient.types.ts +0 -211
  771. package/src/utils/queryUnlessCancelled.ts +0 -28
  772. package/src/utils/websocket.ts +0 -293
  773. package/vite.config.ts +0 -58
  774. 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 });