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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (873) hide show
  1. package/README.md +53 -1
  2. package/dist/components/Description/AllowedValuesHelp.d.ts +20 -0
  3. package/dist/components/Description/AllowedValuesHelp.d.ts.map +1 -0
  4. package/dist/components/Description/AllowedValuesHelp.js +86 -0
  5. package/dist/components/Description/AllowedValuesHelp.js.map +1 -0
  6. package/dist/components/Description/describedControl.d.ts +54 -0
  7. package/dist/components/Description/describedControl.d.ts.map +1 -0
  8. package/dist/components/Description/describedControl.js +81 -0
  9. package/dist/components/Description/describedControl.js.map +1 -0
  10. package/dist/components/Description/index.d.ts.map +1 -1
  11. package/dist/components/Description/index.js +3 -2
  12. package/dist/components/Description/index.js.map +1 -1
  13. package/dist/components/colorValue/colorValue.d.ts +59 -0
  14. package/dist/components/colorValue/colorValue.d.ts.map +1 -0
  15. package/dist/components/colorValue/colorValue.js +245 -0
  16. package/dist/components/colorValue/colorValue.js.map +1 -0
  17. package/dist/components/colorValue/index.d.ts +34 -0
  18. package/dist/components/colorValue/index.d.ts.map +1 -0
  19. package/dist/components/colorValue/index.js +136 -0
  20. package/dist/components/colorValue/index.js.map +1 -0
  21. package/dist/components/colorValue/labels.d.ts +12 -0
  22. package/dist/components/colorValue/labels.d.ts.map +1 -0
  23. package/dist/components/colorValue/labels.js +11 -0
  24. package/dist/components/colorValue/labels.js.map +1 -0
  25. package/dist/components/composer/Composer.d.ts +1 -1
  26. package/dist/components/composer/Composer.d.ts.map +1 -1
  27. package/dist/components/composer/Composer.js +2 -2
  28. package/dist/components/composer/Composer.js.map +1 -1
  29. package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
  30. package/dist/components/dpqlEditor/DpqlEditor.js +156 -10
  31. package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
  32. package/dist/components/dpqlEditor/dpqlCompletions.d.ts +39 -0
  33. package/dist/components/dpqlEditor/dpqlCompletions.d.ts.map +1 -0
  34. package/dist/components/dpqlEditor/dpqlCompletions.js +294 -0
  35. package/dist/components/dpqlEditor/dpqlCompletions.js.map +1 -0
  36. package/dist/components/dpqlEditor/dpqlHelpers.d.ts +54 -5
  37. package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
  38. package/dist/components/dpqlEditor/dpqlHelpers.js +413 -63
  39. package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
  40. package/dist/components/dpqlEditor/dpqlInserter.d.ts.map +1 -1
  41. package/dist/components/dpqlEditor/dpqlInserter.js +67 -29
  42. package/dist/components/dpqlEditor/dpqlInserter.js.map +1 -1
  43. package/dist/components/dpqlEditor/dpqlTags.d.ts +17 -7
  44. package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
  45. package/dist/components/dpqlEditor/dpqlTags.js +44 -17
  46. package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
  47. package/dist/components/dpqlEditor/types.d.ts +94 -8
  48. package/dist/components/dpqlEditor/types.d.ts.map +1 -1
  49. package/dist/components/dpqlEditor/useDpqlSession.d.ts +7 -2
  50. package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
  51. package/dist/components/dpqlEditor/useDpqlSession.js +49 -17
  52. package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
  53. package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
  54. package/dist/components/form/engine/CompactRow.js +322 -124
  55. package/dist/components/form/engine/CompactRow.js.map +1 -1
  56. package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
  57. package/dist/components/form/engine/CompactToolbar.js +29 -3
  58. package/dist/components/form/engine/CompactToolbar.js.map +1 -1
  59. package/dist/components/form/engine/FormEngine.d.ts +66 -11
  60. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  61. package/dist/components/form/engine/FormEngine.js +570 -176
  62. package/dist/components/form/engine/FormEngine.js.map +1 -1
  63. package/dist/components/form/engine/HiddenFieldsNote.d.ts +28 -0
  64. package/dist/components/form/engine/HiddenFieldsNote.d.ts.map +1 -0
  65. package/dist/components/form/engine/HiddenFieldsNote.js +32 -0
  66. package/dist/components/form/engine/HiddenFieldsNote.js.map +1 -0
  67. package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
  68. package/dist/components/form/engine/OptionFieldMessages.js +25 -3
  69. package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
  70. package/dist/components/form/engine/OptionsHelpDialog.d.ts.map +1 -1
  71. package/dist/components/form/engine/OptionsHelpDialog.js +19 -2
  72. package/dist/components/form/engine/OptionsHelpDialog.js.map +1 -1
  73. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts +2 -2
  74. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
  75. package/dist/components/form/engine/_structuredData/SchemaDataView.js +12 -6
  76. package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
  77. package/dist/components/form/engine/compactRowContext.d.ts +30 -1
  78. package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
  79. package/dist/components/form/engine/compactRowContext.js.map +1 -1
  80. package/dist/components/form/engine/compactRowStyles.d.ts +59 -22
  81. package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
  82. package/dist/components/form/engine/compactRowStyles.js +102 -55
  83. package/dist/components/form/engine/compactRowStyles.js.map +1 -1
  84. package/dist/components/form/engine/compactToolbarColors.d.ts +16 -0
  85. package/dist/components/form/engine/compactToolbarColors.d.ts.map +1 -0
  86. package/dist/components/form/engine/compactToolbarColors.js +21 -0
  87. package/dist/components/form/engine/compactToolbarColors.js.map +1 -0
  88. package/dist/components/form/engine/inheritProps.d.ts +29 -0
  89. package/dist/components/form/engine/inheritProps.d.ts.map +1 -0
  90. package/dist/components/form/engine/inheritProps.js +43 -0
  91. package/dist/components/form/engine/inheritProps.js.map +1 -0
  92. package/dist/components/form/engine/operatorSummary.d.ts +26 -0
  93. package/dist/components/form/engine/operatorSummary.d.ts.map +1 -0
  94. package/dist/components/form/engine/operatorSummary.js +35 -0
  95. package/dist/components/form/engine/operatorSummary.js.map +1 -0
  96. package/dist/components/form/engine/readFirst.d.ts +24 -8
  97. package/dist/components/form/engine/readFirst.d.ts.map +1 -1
  98. package/dist/components/form/engine/readFirst.js +77 -109
  99. package/dist/components/form/engine/readFirst.js.map +1 -1
  100. package/dist/components/form/engine/readFirstColors.d.ts +30 -0
  101. package/dist/components/form/engine/readFirstColors.d.ts.map +1 -0
  102. package/dist/components/form/engine/readFirstColors.js +51 -0
  103. package/dist/components/form/engine/readFirstColors.js.map +1 -0
  104. package/dist/components/form/engine/rowFocus.d.ts +2 -0
  105. package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
  106. package/dist/components/form/engine/rowFocus.js +26 -3
  107. package/dist/components/form/engine/rowFocus.js.map +1 -1
  108. package/dist/components/form/engine/typeChoices.d.ts +1 -1
  109. package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -1
  110. package/dist/components/form/engine/variants/VariantCalmTable.js +2 -1
  111. package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -1
  112. package/dist/components/form/engine/variants/VariantCards.d.ts.map +1 -1
  113. package/dist/components/form/engine/variants/VariantCards.js +2 -1
  114. package/dist/components/form/engine/variants/VariantCards.js.map +1 -1
  115. package/dist/components/form/engine/variants/VariantFocus.js +1 -1
  116. package/dist/components/form/engine/variants/VariantFocus.js.map +1 -1
  117. package/dist/components/form/engine/variants/VariantMinimal.d.ts.map +1 -1
  118. package/dist/components/form/engine/variants/VariantMinimal.js +2 -1
  119. package/dist/components/form/engine/variants/VariantMinimal.js.map +1 -1
  120. package/dist/components/form/engine/variants/variantParts.d.ts +1 -1
  121. package/dist/components/form/engine/variants/variantParts.d.ts.map +1 -1
  122. package/dist/components/form/engine/variants/variantParts.js +25 -17
  123. package/dist/components/form/engine/variants/variantParts.js.map +1 -1
  124. package/dist/components/form/expressions/DpqlRendering.d.ts +1 -1
  125. package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -1
  126. package/dist/components/form/expressions/DpqlRendering.js +7 -6
  127. package/dist/components/form/expressions/DpqlRendering.js.map +1 -1
  128. package/dist/components/form/expressions/ExpressionField.d.ts +67 -3
  129. package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
  130. package/dist/components/form/expressions/ExpressionField.js +536 -114
  131. package/dist/components/form/expressions/ExpressionField.js.map +1 -1
  132. package/dist/components/form/expressions/argumentPresence.d.ts +14 -0
  133. package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -1
  134. package/dist/components/form/expressions/argumentPresence.js +16 -1
  135. package/dist/components/form/expressions/argumentPresence.js.map +1 -1
  136. package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
  137. package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
  138. package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
  139. package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
  140. package/dist/components/form/expressions/builder/argumentLabel.js +30 -11
  141. package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
  142. package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
  143. package/dist/components/form/expressions/builder/argumentWrapper.js +3 -1
  144. package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
  145. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts +9 -0
  146. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
  147. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +30 -27
  148. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -1
  149. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +1 -1
  150. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -1
  151. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +7 -5
  152. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
  153. package/dist/components/form/expressions/builder/index.d.ts +34 -2
  154. package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
  155. package/dist/components/form/expressions/builder/index.js +170 -80
  156. package/dist/components/form/expressions/builder/index.js.map +1 -1
  157. package/dist/components/form/expressions/builder/item.d.ts +6 -2
  158. package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
  159. package/dist/components/form/expressions/builder/item.js +19 -5
  160. package/dist/components/form/expressions/builder/item.js.map +1 -1
  161. package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
  162. package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
  163. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts +11 -0
  164. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts.map +1 -0
  165. package/dist/components/form/expressions/dpqlMockRecordPath.js +254 -0
  166. package/dist/components/form/expressions/dpqlMockRecordPath.js.map +1 -0
  167. package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
  168. package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
  169. package/dist/components/form/expressions/expressionOperands.js +97 -0
  170. package/dist/components/form/expressions/expressionOperands.js.map +1 -0
  171. package/dist/components/form/expressions/fieldPath.d.ts +24 -0
  172. package/dist/components/form/expressions/fieldPath.d.ts.map +1 -0
  173. package/dist/components/form/expressions/fieldPath.js +152 -0
  174. package/dist/components/form/expressions/fieldPath.js.map +1 -0
  175. package/dist/components/form/expressions/loneValue.d.ts +17 -0
  176. package/dist/components/form/expressions/loneValue.d.ts.map +1 -0
  177. package/dist/components/form/expressions/loneValue.js +33 -0
  178. package/dist/components/form/expressions/loneValue.js.map +1 -0
  179. package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
  180. package/dist/components/form/expressions/mockExpressions.js +22 -5
  181. package/dist/components/form/expressions/mockExpressions.js.map +1 -1
  182. package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
  183. package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
  184. package/dist/components/form/expressions/renderExpressionToText.js +43 -10
  185. package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
  186. package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
  187. package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
  188. package/dist/components/form/expressions/textOfExpression.js +49 -0
  189. package/dist/components/form/expressions/textOfExpression.js.map +1 -0
  190. package/dist/components/form/expressions/types.d.ts +12 -0
  191. package/dist/components/form/expressions/types.d.ts.map +1 -1
  192. package/dist/components/form/expressions/types.js +6 -1
  193. package/dist/components/form/expressions/types.js.map +1 -1
  194. package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
  195. package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
  196. package/dist/components/form/expressions/useExpressionType.js +181 -0
  197. package/dist/components/form/expressions/useExpressionType.js.map +1 -0
  198. package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
  199. package/dist/components/form/expressions/useRenderExpression.js +13 -9
  200. package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
  201. package/dist/components/form/expressions/wildcardExpressions.d.ts +27 -0
  202. package/dist/components/form/expressions/wildcardExpressions.d.ts.map +1 -0
  203. package/dist/components/form/expressions/wildcardExpressions.js +101 -0
  204. package/dist/components/form/expressions/wildcardExpressions.js.map +1 -0
  205. package/dist/components/form/fields/Field.d.ts.map +1 -1
  206. package/dist/components/form/fields/Field.js +43 -20
  207. package/dist/components/form/fields/Field.js.map +1 -1
  208. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
  209. package/dist/components/form/fields/allowed-values/AllowedValues.js +39 -6
  210. package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
  211. package/dist/components/form/fields/allowed-values/choicePicture.d.ts +37 -0
  212. package/dist/components/form/fields/allowed-values/choicePicture.d.ts.map +1 -0
  213. package/dist/components/form/fields/allowed-values/choicePicture.js +64 -0
  214. package/dist/components/form/fields/allowed-values/choicePicture.js.map +1 -0
  215. package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
  216. package/dist/components/form/fields/array/ArrayAuto.js +24 -0
  217. package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
  218. package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
  219. package/dist/components/form/fields/array/ArrayAutoField.js +36 -13
  220. package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
  221. package/dist/components/form/fields/auto/AutoFormField.d.ts +30 -1
  222. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
  223. package/dist/components/form/fields/auto/AutoFormField.js +119 -62
  224. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
  225. package/dist/components/form/fields/auto/hostEditorValue.d.ts +30 -0
  226. package/dist/components/form/fields/auto/hostEditorValue.d.ts.map +1 -0
  227. package/dist/components/form/fields/auto/hostEditorValue.js +53 -0
  228. package/dist/components/form/fields/auto/hostEditorValue.js.map +1 -0
  229. package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
  230. package/dist/components/form/fields/binary/Binary.js +23 -3
  231. package/dist/components/form/fields/binary/Binary.js.map +1 -1
  232. package/dist/components/form/fields/boolean/Boolean.d.ts +5 -0
  233. package/dist/components/form/fields/boolean/Boolean.d.ts.map +1 -1
  234. package/dist/components/form/fields/boolean/Boolean.js +9 -1
  235. package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
  236. package/dist/components/form/fields/color/Color.d.ts +103 -16
  237. package/dist/components/form/fields/color/Color.d.ts.map +1 -1
  238. package/dist/components/form/fields/color/Color.js +616 -16
  239. package/dist/components/form/fields/color/Color.js.map +1 -1
  240. package/dist/components/form/fields/emittedValues.d.ts +34 -3
  241. package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
  242. package/dist/components/form/fields/emittedValues.js +24 -1
  243. package/dist/components/form/fields/emittedValues.js.map +1 -1
  244. package/dist/components/form/fields/file/File.d.ts +1 -1
  245. package/dist/components/form/fields/file/File.d.ts.map +1 -1
  246. package/dist/components/form/fields/file/File.js +4 -2
  247. package/dist/components/form/fields/file/File.js.map +1 -1
  248. package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
  249. package/dist/components/form/fields/long-string/LongString.js +29 -8
  250. package/dist/components/form/fields/long-string/LongString.js.map +1 -1
  251. package/dist/components/form/fields/markdown/MarkdownView.js +1 -1
  252. package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
  253. package/dist/components/form/fields/multi-select/MultiSelectFormField.js +13 -9
  254. package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
  255. package/dist/components/form/fields/number/Number.d.ts +6 -0
  256. package/dist/components/form/fields/number/Number.d.ts.map +1 -1
  257. package/dist/components/form/fields/number/Number.js +41 -6
  258. package/dist/components/form/fields/number/Number.js.map +1 -1
  259. package/dist/components/form/fields/object/Object.d.ts +1 -1
  260. package/dist/components/form/fields/object/Object.d.ts.map +1 -1
  261. package/dist/components/form/fields/object/Object.js +4 -2
  262. package/dist/components/form/fields/object/Object.js.map +1 -1
  263. package/dist/components/form/fields/pendingEdit.d.ts +52 -0
  264. package/dist/components/form/fields/pendingEdit.d.ts.map +1 -0
  265. package/dist/components/form/fields/pendingEdit.js +79 -0
  266. package/dist/components/form/fields/pendingEdit.js.map +1 -0
  267. package/dist/components/form/fields/radio-group/RadioGroup.d.ts.map +1 -1
  268. package/dist/components/form/fields/radio-group/RadioGroup.js +4 -3
  269. package/dist/components/form/fields/radio-group/RadioGroup.js.map +1 -1
  270. package/dist/components/form/fields/rich-text/RichText.d.ts +20 -1
  271. package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
  272. package/dist/components/form/fields/rich-text/RichText.js +382 -91
  273. package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
  274. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts +18 -0
  275. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts.map +1 -0
  276. package/dist/components/form/fields/rich-text/useTemplateTags.js +80 -0
  277. package/dist/components/form/fields/rich-text/useTemplateTags.js.map +1 -0
  278. package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -1
  279. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +4 -1
  280. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -1
  281. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -1
  282. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +20 -5
  283. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -1
  284. package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -1
  285. package/dist/components/form/fields/schema-definition/TableEditor.js +10 -2
  286. package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -1
  287. package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -1
  288. package/dist/components/form/fields/schema-definition/index.js +8 -4
  289. package/dist/components/form/fields/schema-definition/index.js.map +1 -1
  290. package/dist/components/form/fields/select/Select.d.ts +10 -1
  291. package/dist/components/form/fields/select/Select.d.ts.map +1 -1
  292. package/dist/components/form/fields/select/Select.js +28 -14
  293. package/dist/components/form/fields/select/Select.js.map +1 -1
  294. package/dist/components/form/fields/select/SelectCollection.d.ts +5 -0
  295. package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
  296. package/dist/components/form/fields/select/SelectCollection.js +25 -12
  297. package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
  298. package/dist/components/form/fields/select/unavailableRow.d.ts +23 -0
  299. package/dist/components/form/fields/select/unavailableRow.d.ts.map +1 -0
  300. package/dist/components/form/fields/select/unavailableRow.js +55 -0
  301. package/dist/components/form/fields/select/unavailableRow.js.map +1 -0
  302. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +11 -5
  303. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
  304. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +21 -5
  305. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
  306. package/dist/components/form/fields/template/TemplateBrowser.d.ts +16 -0
  307. package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
  308. package/dist/components/form/fields/template/TemplateBrowser.js +89 -0
  309. package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
  310. package/dist/components/form/fields/template/TemplateField.d.ts +105 -1
  311. package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
  312. package/dist/components/form/fields/template/TemplateField.js +678 -107
  313. package/dist/components/form/fields/template/TemplateField.js.map +1 -1
  314. package/dist/components/form/fields/template/TemplatePicker.d.ts +54 -0
  315. package/dist/components/form/fields/template/TemplatePicker.d.ts.map +1 -0
  316. package/dist/components/form/fields/template/TemplatePicker.js +451 -0
  317. package/dist/components/form/fields/template/TemplatePicker.js.map +1 -0
  318. package/dist/components/form/fields/template/TemplateText.d.ts +0 -17
  319. package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -1
  320. package/dist/components/form/fields/template/TemplateText.js +22 -16
  321. package/dist/components/form/fields/template/TemplateText.js.map +1 -1
  322. package/dist/components/form/fields/template/referenceNames.d.ts +63 -0
  323. package/dist/components/form/fields/template/referenceNames.d.ts.map +1 -0
  324. package/dist/components/form/fields/template/referenceNames.js +69 -0
  325. package/dist/components/form/fields/template/referenceNames.js.map +1 -0
  326. package/dist/components/form/fields/template/writtenAsText.d.ts +61 -0
  327. package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
  328. package/dist/components/form/fields/template/writtenAsText.js +204 -0
  329. package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
  330. package/dist/components/form/index.d.ts +12 -0
  331. package/dist/components/form/index.d.ts.map +1 -1
  332. package/dist/components/form/index.js +25 -1
  333. package/dist/components/form/index.js.map +1 -1
  334. package/dist/components/form/typeSentenceForm.d.ts +17 -0
  335. package/dist/components/form/typeSentenceForm.d.ts.map +1 -0
  336. package/dist/components/form/typeSentenceForm.js +54 -0
  337. package/dist/components/form/typeSentenceForm.js.map +1 -0
  338. package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
  339. package/dist/components/imageLightbox/ImageLightbox.js +19 -7
  340. package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
  341. package/dist/components/log/Log.d.ts.map +1 -1
  342. package/dist/components/log/Log.js +20 -8
  343. package/dist/components/log/Log.js.map +1 -1
  344. package/dist/components/menu/Menu.d.ts.map +1 -1
  345. package/dist/components/menu/Menu.js +19 -10
  346. package/dist/components/menu/Menu.js.map +1 -1
  347. package/dist/components/smartEditor/CompletionMenu.d.ts +53 -0
  348. package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
  349. package/dist/components/smartEditor/CompletionMenu.js +302 -0
  350. package/dist/components/smartEditor/CompletionMenu.js.map +1 -0
  351. package/dist/components/smartEditor/MarkdownDoc.d.ts +1 -1
  352. package/dist/components/smartEditor/MarkdownDoc.js +3 -3
  353. package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
  354. package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
  355. package/dist/components/smartEditor/SmartEditor.js +584 -190
  356. package/dist/components/smartEditor/SmartEditor.js.map +1 -1
  357. package/dist/components/smartEditor/completionStyle.d.ts +28 -0
  358. package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
  359. package/dist/components/smartEditor/completionStyle.js +79 -0
  360. package/dist/components/smartEditor/completionStyle.js.map +1 -0
  361. package/dist/components/smartEditor/contextTitle.d.ts +10 -0
  362. package/dist/components/smartEditor/contextTitle.d.ts.map +1 -0
  363. package/dist/components/smartEditor/contextTitle.js +21 -0
  364. package/dist/components/smartEditor/contextTitle.js.map +1 -0
  365. package/dist/components/smartEditor/editingAids.d.ts +64 -0
  366. package/dist/components/smartEditor/editingAids.d.ts.map +1 -0
  367. package/dist/components/smartEditor/editingAids.js +213 -0
  368. package/dist/components/smartEditor/editingAids.js.map +1 -0
  369. package/dist/components/smartEditor/index.d.ts +6 -1
  370. package/dist/components/smartEditor/index.d.ts.map +1 -1
  371. package/dist/components/smartEditor/index.js +19 -1
  372. package/dist/components/smartEditor/index.js.map +1 -1
  373. package/dist/components/smartEditor/templateCompletions.d.ts +98 -0
  374. package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
  375. package/dist/components/smartEditor/templateCompletions.js +380 -0
  376. package/dist/components/smartEditor/templateCompletions.js.map +1 -0
  377. package/dist/components/smartEditor/typedReferences.d.ts +34 -0
  378. package/dist/components/smartEditor/typedReferences.d.ts.map +1 -0
  379. package/dist/components/smartEditor/typedReferences.js +179 -0
  380. package/dist/components/smartEditor/typedReferences.js.map +1 -0
  381. package/dist/components/smartEditor/types.d.ts +116 -2
  382. package/dist/components/smartEditor/types.d.ts.map +1 -1
  383. package/dist/components/smartEditor/useEditingAids.d.ts +38 -0
  384. package/dist/components/smartEditor/useEditingAids.d.ts.map +1 -0
  385. package/dist/components/smartEditor/useEditingAids.js +336 -0
  386. package/dist/components/smartEditor/useEditingAids.js.map +1 -0
  387. package/dist/components/smartEditor/useLspAutocomplete.d.ts +106 -3
  388. package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
  389. package/dist/components/smartEditor/useLspAutocomplete.js +562 -151
  390. package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
  391. package/dist/components/smartEditor/useLspHover.d.ts +33 -7
  392. package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
  393. package/dist/components/smartEditor/useLspHover.js +364 -35
  394. package/dist/components/smartEditor/useLspHover.js.map +1 -1
  395. package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
  396. package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
  397. package/dist/components/smartEditor/useLspSession.d.ts +6 -0
  398. package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
  399. package/dist/components/smartEditor/useLspSession.js +7 -6
  400. package/dist/components/smartEditor/useLspSession.js.map +1 -1
  401. package/dist/components/smartEditor/useLspSignatureHelp.d.ts.map +1 -1
  402. package/dist/components/smartEditor/useLspSignatureHelp.js +6 -11
  403. package/dist/components/smartEditor/useLspSignatureHelp.js.map +1 -1
  404. package/dist/components/smartEditor/useTabCameIn.d.ts +10 -0
  405. package/dist/components/smartEditor/useTabCameIn.d.ts.map +1 -0
  406. package/dist/components/smartEditor/useTabCameIn.js +42 -0
  407. package/dist/components/smartEditor/useTabCameIn.js.map +1 -0
  408. package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -1
  409. package/dist/components/supportTicket/AttachmentChips.js +15 -5
  410. package/dist/components/supportTicket/AttachmentChips.js.map +1 -1
  411. package/dist/components/supportTicket/ReferencePicker.d.ts +9 -2
  412. package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
  413. package/dist/components/supportTicket/ReferencePicker.js +27 -6
  414. package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
  415. package/dist/components/supportTicket/TicketHeader.d.ts +3 -4
  416. package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
  417. package/dist/components/supportTicket/TicketHeader.js +20 -2
  418. package/dist/components/supportTicket/TicketHeader.js.map +1 -1
  419. package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
  420. package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
  421. package/dist/components/ticketReferences/TicketReferences.js +9 -4
  422. package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
  423. package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
  424. package/dist/components/ticketThread/TicketThread.js +38 -13
  425. package/dist/components/ticketThread/TicketThread.js.map +1 -1
  426. package/dist/helpers/allowedValues.d.ts +21 -0
  427. package/dist/helpers/allowedValues.d.ts.map +1 -1
  428. package/dist/helpers/allowedValues.js +40 -1
  429. package/dist/helpers/allowedValues.js.map +1 -1
  430. package/dist/helpers/descriptionTooltip.d.ts +46 -0
  431. package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
  432. package/dist/helpers/descriptionTooltip.js +76 -0
  433. package/dist/helpers/descriptionTooltip.js.map +1 -0
  434. package/dist/helpers/domProps.d.ts +5 -0
  435. package/dist/helpers/domProps.d.ts.map +1 -0
  436. package/dist/helpers/domProps.js +47 -0
  437. package/dist/helpers/domProps.js.map +1 -0
  438. package/dist/helpers/expressions.d.ts +115 -4
  439. package/dist/helpers/expressions.d.ts.map +1 -1
  440. package/dist/helpers/expressions.js +247 -29
  441. package/dist/helpers/expressions.js.map +1 -1
  442. package/dist/helpers/hoveringPointer.d.ts +26 -0
  443. package/dist/helpers/hoveringPointer.d.ts.map +1 -0
  444. package/dist/helpers/hoveringPointer.js +29 -0
  445. package/dist/helpers/hoveringPointer.js.map +1 -0
  446. package/dist/helpers/markdownText.d.ts +14 -0
  447. package/dist/helpers/markdownText.d.ts.map +1 -0
  448. package/dist/helpers/markdownText.js +160 -0
  449. package/dist/helpers/markdownText.js.map +1 -0
  450. package/dist/helpers/noDescription.d.ts +9 -0
  451. package/dist/helpers/noDescription.d.ts.map +1 -0
  452. package/dist/helpers/noDescription.js +13 -0
  453. package/dist/helpers/noDescription.js.map +1 -0
  454. package/dist/helpers/optionUiTypes.d.ts +2 -2
  455. package/dist/helpers/qorusTypeCatalogue.d.ts +147 -0
  456. package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
  457. package/dist/helpers/qorusTypeCatalogue.js +505 -0
  458. package/dist/helpers/qorusTypeCatalogue.js.map +1 -0
  459. package/dist/helpers/readableColors.d.ts +36 -0
  460. package/dist/helpers/readableColors.d.ts.map +1 -0
  461. package/dist/helpers/readableColors.js +116 -0
  462. package/dist/helpers/readableColors.js.map +1 -0
  463. package/dist/helpers/recordFieldReference.d.ts +15 -0
  464. package/dist/helpers/recordFieldReference.d.ts.map +1 -0
  465. package/dist/helpers/recordFieldReference.js +89 -0
  466. package/dist/helpers/recordFieldReference.js.map +1 -0
  467. package/dist/helpers/templateCatalogue.d.ts +104 -0
  468. package/dist/helpers/templateCatalogue.d.ts.map +1 -0
  469. package/dist/helpers/templateCatalogue.js +116 -0
  470. package/dist/helpers/templateCatalogue.js.map +1 -0
  471. package/dist/helpers/templateCatalogueContext.d.ts +19 -0
  472. package/dist/helpers/templateCatalogueContext.d.ts.map +1 -0
  473. package/dist/helpers/templateCatalogueContext.js +31 -0
  474. package/dist/helpers/templateCatalogueContext.js.map +1 -0
  475. package/dist/helpers/templateItems.d.ts +2 -2
  476. package/dist/helpers/templateItems.d.ts.map +1 -1
  477. package/dist/helpers/templateItems.js +6 -4
  478. package/dist/helpers/templateItems.js.map +1 -1
  479. package/dist/helpers/templateText.d.ts +1 -0
  480. package/dist/helpers/templateText.d.ts.map +1 -1
  481. package/dist/helpers/templateText.js +7 -3
  482. package/dist/helpers/templateText.js.map +1 -1
  483. package/dist/helpers/templateTree.d.ts +248 -0
  484. package/dist/helpers/templateTree.d.ts.map +1 -0
  485. package/dist/helpers/templateTree.js +892 -0
  486. package/dist/helpers/templateTree.js.map +1 -0
  487. package/dist/helpers/templateType.d.ts +28 -0
  488. package/dist/helpers/templateType.d.ts.map +1 -0
  489. package/dist/helpers/templateType.js +30 -0
  490. package/dist/helpers/templateType.js.map +1 -0
  491. package/dist/helpers/templates.d.ts +86 -16
  492. package/dist/helpers/templates.d.ts.map +1 -1
  493. package/dist/helpers/templates.js +305 -45
  494. package/dist/helpers/templates.js.map +1 -1
  495. package/dist/helpers/validations.d.ts +27 -0
  496. package/dist/helpers/validations.d.ts.map +1 -1
  497. package/dist/helpers/validations.js +169 -39
  498. package/dist/helpers/validations.js.map +1 -1
  499. package/dist/helpers/webLink.d.ts +8 -0
  500. package/dist/helpers/webLink.d.ts.map +1 -0
  501. package/dist/helpers/webLink.js +29 -0
  502. package/dist/helpers/webLink.js.map +1 -0
  503. package/dist/hooks/useQorusTypes.d.ts +12 -17
  504. package/dist/hooks/useQorusTypes.d.ts.map +1 -1
  505. package/dist/hooks/useQorusTypes.js +44 -172
  506. package/dist/hooks/useQorusTypes.js.map +1 -1
  507. package/dist/hooks/useReadableIntentShade.d.ts +9 -0
  508. package/dist/hooks/useReadableIntentShade.d.ts.map +1 -0
  509. package/dist/hooks/useReadableIntentShade.js +23 -0
  510. package/dist/hooks/useReadableIntentShade.js.map +1 -0
  511. package/dist/hooks/useReadableOpacity.d.ts +6 -0
  512. package/dist/hooks/useReadableOpacity.d.ts.map +1 -0
  513. package/dist/hooks/useReadableOpacity.js +17 -0
  514. package/dist/hooks/useReadableOpacity.js.map +1 -0
  515. package/dist/index.d.ts +8 -0
  516. package/dist/index.d.ts.map +1 -1
  517. package/dist/index.js +24 -1
  518. package/dist/index.js.map +1 -1
  519. package/dist/tracking/ui/ExperimentCard.d.ts +1 -1
  520. package/dist/tracking/ui/ExperimentCard.d.ts.map +1 -1
  521. package/dist/tracking/ui/ExperimentCard.js +26 -10
  522. package/dist/tracking/ui/ExperimentCard.js.map +1 -1
  523. package/dist/tracking/ui/card.d.ts +2 -2
  524. package/dist/tracking/ui/card.d.ts.map +1 -1
  525. package/dist/tracking/ui/card.js +2 -2
  526. package/dist/tracking/ui/card.js.map +1 -1
  527. package/dist/tracking/ui/readable.d.ts +14 -0
  528. package/dist/tracking/ui/readable.d.ts.map +1 -0
  529. package/dist/tracking/ui/readable.js +60 -0
  530. package/dist/tracking/ui/readable.js.map +1 -0
  531. package/dist/utils/fetch.d.ts +9 -2
  532. package/dist/utils/fetch.d.ts.map +1 -1
  533. package/dist/utils/fetch.js +6 -5
  534. package/dist/utils/fetch.js.map +1 -1
  535. package/dist/utils/lspClient.types.d.ts +2 -0
  536. package/dist/utils/lspClient.types.d.ts.map +1 -1
  537. package/dist/utils/websocket.d.ts +65 -2
  538. package/dist/utils/websocket.d.ts.map +1 -1
  539. package/dist/utils/websocket.js +276 -44
  540. package/dist/utils/websocket.js.map +1 -1
  541. package/package.json +14 -6
  542. package/.claude/CLAUDE.md +0 -317
  543. package/.tasks/EXPORT_EXPRESSION_BUILDER.md +0 -38
  544. package/.tasks/EXPRESSION_BUILDER_REPORT.md +0 -149
  545. package/.tasks/EXPRESSION_FIELD_SEAMS.md +0 -66
  546. package/.tasks/FIELD_STACK_REPORT.md +0 -234
  547. package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +0 -558
  548. package/.tasks/FORM_ENGINE_EXPRESSIONS.md +0 -197
  549. package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +0 -95
  550. package/.tasks/FORM_FIELD_EXTRAS.md +0 -72
  551. package/.tasks/INDEX.md +0 -111
  552. package/.tasks/LSP_SHARED_CONNECTION.md +0 -75
  553. package/.tasks/QONSOLE_ASSIST_FEATURES.md +0 -306
  554. package/.tasks/RENDER_EXPRESSION_LSP.md +0 -159
  555. package/.tasks/REQRAFT_AUTO_FIELD.md +0 -176
  556. package/.tasks/SCHEMA_DEFINITION_FIELD.md +0 -250
  557. package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +0 -340
  558. package/.tasks/SMART_EDITOR_LSP_FEATURES.md +0 -299
  559. package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +0 -280
  560. package/.tasks/SMART_EDITOR_UX_POLISH.md +0 -383
  561. package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +0 -246
  562. package/.tasks/STORY_NETWORK_ISOLATION.md +0 -98
  563. package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +0 -72
  564. package/CODE_OF_CONDUCT.md +0 -105
  565. package/CONTRIBUTING.MD +0 -78
  566. package/SECURITY.md +0 -3
  567. package/chromatic.config.json +0 -5
  568. package/design/COMPACT_ENGINE_REDESIGN.md +0 -156
  569. package/design/COMPACT_INFO_DISPLAY.md +0 -87
  570. package/design/COMPACT_PARITY.md +0 -85
  571. package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +0 -92
  572. package/design/FORM_ENGINE_COMPACT.md +0 -300
  573. package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +0 -353
  574. package/design/FORM_ENGINE_EXPRESSIONS.md +0 -257
  575. package/design/FORM_ENGINE_FIELD_MIGRATION.md +0 -419
  576. package/design/IDE_INTEGRATION.md +0 -64
  577. package/design/RENDER_EXPRESSION_TRANSPORT.md +0 -156
  578. package/design/SELECT_DIALOG_FLOOR.md +0 -86
  579. package/design/SMART_EDITOR_UX.md +0 -438
  580. package/design/TRACKING.md +0 -290
  581. package/design/UNAVAILABLE_ALLOWED_VALUES.md +0 -226
  582. package/src/components/Description/index.tsx +0 -254
  583. package/src/components/Description/markdownRendererContext.tsx +0 -29
  584. package/src/components/FocusedEditing/index.tsx +0 -50
  585. package/src/components/codeSize/index.tsx +0 -79
  586. package/src/components/composer/Composer.stories.tsx +0 -238
  587. package/src/components/composer/Composer.tsx +0 -554
  588. package/src/components/composer/helpers.ts +0 -74
  589. package/src/components/composer/index.ts +0 -2
  590. package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -1183
  591. package/src/components/dpqlEditor/DpqlEditor.tsx +0 -219
  592. package/src/components/dpqlEditor/dpqlHelpers.ts +0 -287
  593. package/src/components/dpqlEditor/dpqlInserter.ts +0 -121
  594. package/src/components/dpqlEditor/dpqlProbe.ts +0 -165
  595. package/src/components/dpqlEditor/dpqlTags.ts +0 -114
  596. package/src/components/dpqlEditor/index.ts +0 -41
  597. package/src/components/dpqlEditor/types.ts +0 -203
  598. package/src/components/dpqlEditor/useDpqlProbe.ts +0 -33
  599. package/src/components/dpqlEditor/useDpqlSession.ts +0 -411
  600. package/src/components/form/engine/CompactRow.tsx +0 -2620
  601. package/src/components/form/engine/CompactToolbar.tsx +0 -330
  602. package/src/components/form/engine/FormEngine.stories.tsx +0 -9920
  603. package/src/components/form/engine/FormEngine.tsx +0 -4569
  604. package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
  605. package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -331
  606. package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
  607. package/src/components/form/engine/OptionFieldMessages.tsx +0 -477
  608. package/src/components/form/engine/OptionsHelpDialog.tsx +0 -29
  609. package/src/components/form/engine/__fixtures__/basicFormOptions.ts +0 -309
  610. package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +0 -45
  611. package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +0 -233
  612. package/src/components/form/engine/_structuredData/SchemaDataView.tsx +0 -742
  613. package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +0 -85
  614. package/src/components/form/engine/_structuredData/StructuredDataView.tsx +0 -75
  615. package/src/components/form/engine/_structuredData/structuredData.ts +0 -145
  616. package/src/components/form/engine/compactRowContext.ts +0 -148
  617. package/src/components/form/engine/compactRowStyles.ts +0 -898
  618. package/src/components/form/engine/compactToolbarContext.ts +0 -69
  619. package/src/components/form/engine/optionActions.ts +0 -128
  620. package/src/components/form/engine/optionsContext.ts +0 -24
  621. package/src/components/form/engine/readFirst.ts +0 -1077
  622. package/src/components/form/engine/rendererTypes.ts +0 -107
  623. package/src/components/form/engine/revealRow.ts +0 -123
  624. package/src/components/form/engine/rowFocus.ts +0 -101
  625. package/src/components/form/engine/rowMenuContext.ts +0 -159
  626. package/src/components/form/engine/rowOpenPicker.ts +0 -27
  627. package/src/components/form/engine/typeChoices.ts +0 -63
  628. package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +0 -159
  629. package/src/components/form/engine/variants/VariantCalmTable.tsx +0 -244
  630. package/src/components/form/engine/variants/VariantCards.tsx +0 -212
  631. package/src/components/form/engine/variants/VariantFocus.tsx +0 -382
  632. package/src/components/form/engine/variants/VariantMinimal.tsx +0 -170
  633. package/src/components/form/engine/variants/focusDemo.ts +0 -145
  634. package/src/components/form/engine/variants/variantModel.ts +0 -223
  635. package/src/components/form/engine/variants/variantParts.tsx +0 -313
  636. package/src/components/form/expressions/DpqlRendering.tsx +0 -85
  637. package/src/components/form/expressions/ExpressionField.stories.tsx +0 -1395
  638. package/src/components/form/expressions/ExpressionField.tsx +0 -503
  639. package/src/components/form/expressions/argumentPresence.ts +0 -213
  640. package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +0 -1683
  641. package/src/components/form/expressions/builder/argumentDetail.tsx +0 -17
  642. package/src/components/form/expressions/builder/argumentLabel.tsx +0 -146
  643. package/src/components/form/expressions/builder/argumentSlot.tsx +0 -101
  644. package/src/components/form/expressions/builder/argumentWrapper.tsx +0 -243
  645. package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +0 -120
  646. package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +0 -69
  647. package/src/components/form/expressions/builder/index.tsx +0 -1545
  648. package/src/components/form/expressions/builder/item.tsx +0 -89
  649. package/src/components/form/expressions/builder/moveToPositionStrip.tsx +0 -156
  650. package/src/components/form/expressions/builder/renderTemplate.tsx +0 -42
  651. package/src/components/form/expressions/dpqlMockLanguage.ts +0 -566
  652. package/src/components/form/expressions/dpqlMockLsp.ts +0 -126
  653. package/src/components/form/expressions/mockExpressions.ts +0 -317
  654. package/src/components/form/expressions/renderExpressionToText.ts +0 -137
  655. package/src/components/form/expressions/types.ts +0 -110
  656. package/src/components/form/expressions/useExpressions.ts +0 -101
  657. package/src/components/form/expressions/useRenderExpression.ts +0 -165
  658. package/src/components/form/fields/Field.stories.tsx +0 -143
  659. package/src/components/form/fields/Field.tsx +0 -732
  660. package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -297
  661. package/src/components/form/fields/array/ArrayAuto.tsx +0 -237
  662. package/src/components/form/fields/array/ArrayAutoField.stories.tsx +0 -475
  663. package/src/components/form/fields/array/ArrayAutoField.tsx +0 -367
  664. package/src/components/form/fields/auto/AutoFormField.stories.tsx +0 -825
  665. package/src/components/form/fields/auto/AutoFormField.tsx +0 -1164
  666. package/src/components/form/fields/binary/Binary.stories.tsx +0 -122
  667. package/src/components/form/fields/binary/Binary.tsx +0 -91
  668. package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -125
  669. package/src/components/form/fields/boolean/Boolean.tsx +0 -34
  670. package/src/components/form/fields/byte-size/ByteSize.stories.tsx +0 -87
  671. package/src/components/form/fields/byte-size/ByteSize.tsx +0 -58
  672. package/src/components/form/fields/color/Color.stories.tsx +0 -99
  673. package/src/components/form/fields/color/Color.tsx +0 -46
  674. package/src/components/form/fields/cron/Cron.stories.tsx +0 -68
  675. package/src/components/form/fields/cron/Cron.tsx +0 -80
  676. package/src/components/form/fields/date/Date.stories.tsx +0 -77
  677. package/src/components/form/fields/date/Date.tsx +0 -55
  678. package/src/components/form/fields/emittedValues.ts +0 -70
  679. package/src/components/form/fields/file/File.stories.tsx +0 -161
  680. package/src/components/form/fields/file/File.tsx +0 -227
  681. package/src/components/form/fields/long-string/LongString.stories.tsx +0 -120
  682. package/src/components/form/fields/long-string/LongString.tsx +0 -130
  683. package/src/components/form/fields/markdown/Markdown.stories.tsx +0 -76
  684. package/src/components/form/fields/markdown/Markdown.tsx +0 -81
  685. package/src/components/form/fields/markdown/MarkdownView.tsx +0 -222
  686. package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +0 -139
  687. package/src/components/form/fields/number/Number.stories.tsx +0 -159
  688. package/src/components/form/fields/number/Number.tsx +0 -160
  689. package/src/components/form/fields/object/Object.stories.tsx +0 -398
  690. package/src/components/form/fields/object/Object.tsx +0 -255
  691. package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +0 -95
  692. package/src/components/form/fields/radio-group/RadioGroup.tsx +0 -46
  693. package/src/components/form/fields/radio-group/images/java-96x128.png +0 -0
  694. package/src/components/form/fields/radio-group/images/python-129x128.png +0 -0
  695. package/src/components/form/fields/radio-group/images/qore-106x128.png +0 -0
  696. package/src/components/form/fields/rich-text/RichText.stories.tsx +0 -260
  697. package/src/components/form/fields/rich-text/RichText.tsx +0 -537
  698. package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +0 -242
  699. package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +0 -758
  700. package/src/components/form/fields/schema-definition/Hint.tsx +0 -22
  701. package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +0 -138
  702. package/src/components/form/fields/schema-definition/Loader.tsx +0 -20
  703. package/src/components/form/fields/schema-definition/MigrationsTab.tsx +0 -187
  704. package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +0 -286
  705. package/src/components/form/fields/schema-definition/TableEditor.tsx +0 -155
  706. package/src/components/form/fields/schema-definition/TablesTab.tsx +0 -138
  707. package/src/components/form/fields/schema-definition/catalog.ts +0 -237
  708. package/src/components/form/fields/schema-definition/helpers.ts +0 -90
  709. package/src/components/form/fields/schema-definition/index.tsx +0 -418
  710. package/src/components/form/fields/schema-definition/mockCatalog.ts +0 -325
  711. package/src/components/form/fields/schema-definition/mockDefinition.ts +0 -111
  712. package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +0 -152
  713. package/src/components/form/fields/schema-definition/starterTemplate.ts +0 -68
  714. package/src/components/form/fields/schema-definition/types.ts +0 -185
  715. package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +0 -49
  716. package/src/components/form/fields/select/Select.stories.tsx +0 -872
  717. package/src/components/form/fields/select/Select.tsx +0 -624
  718. package/src/components/form/fields/select/SelectCollection.tsx +0 -594
  719. package/src/components/form/fields/string/String.stories.tsx +0 -86
  720. package/src/components/form/fields/string/String.tsx +0 -43
  721. package/src/components/form/fields/template/ExampleValueModal.stories.tsx +0 -114
  722. package/src/components/form/fields/template/ExampleValueModal.tsx +0 -99
  723. package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +0 -47
  724. package/src/components/form/fields/template/TemplateField.stories.tsx +0 -1121
  725. package/src/components/form/fields/template/TemplateField.tsx +0 -1717
  726. package/src/components/form/fields/template/TemplateText.tsx +0 -115
  727. package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +0 -7
  728. package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +0 -147
  729. package/src/components/form/fields/template/__fixtures__/templates.json +0 -83
  730. package/src/components/form/fields/timeout/Timeout.stories.tsx +0 -228
  731. package/src/components/form/fields/timeout/Timeout.tsx +0 -87
  732. package/src/components/form/fields/url/Url.stories.tsx +0 -94
  733. package/src/components/form/fields/url/Url.tsx +0 -85
  734. package/src/components/form/index.tsx +0 -47
  735. package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
  736. package/src/components/imageLightbox/ImageLightbox.tsx +0 -236
  737. package/src/components/imageLightbox/index.ts +0 -1
  738. package/src/components/log/Log.stories.tsx +0 -333
  739. package/src/components/log/Log.tsx +0 -285
  740. package/src/components/menu/Menu.stories.tsx +0 -155
  741. package/src/components/menu/Menu.tsx +0 -312
  742. package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +0 -797
  743. package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +0 -105
  744. package/src/components/qonsoleSmartInput/index.ts +0 -16
  745. package/src/components/qonsoleSmartInput/qonsoleInserter.ts +0 -77
  746. package/src/components/qonsoleSmartInput/types.ts +0 -133
  747. package/src/components/qonsoleSmartInput/useQonsoleSession.ts +0 -124
  748. package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +0 -62
  749. package/src/components/searchFilterBar/SearchFilterBar.tsx +0 -144
  750. package/src/components/searchFilterBar/index.ts +0 -1
  751. package/src/components/smartEditor/MarkdownDoc.tsx +0 -190
  752. package/src/components/smartEditor/SmartEditor.stories.tsx +0 -475
  753. package/src/components/smartEditor/SmartEditor.tsx +0 -808
  754. package/src/components/smartEditor/__fixtures__/mockLspServer.ts +0 -205
  755. package/src/components/smartEditor/helpers.ts +0 -217
  756. package/src/components/smartEditor/index.ts +0 -35
  757. package/src/components/smartEditor/styling.ts +0 -45
  758. package/src/components/smartEditor/types.ts +0 -211
  759. package/src/components/smartEditor/useLspAutocomplete.ts +0 -758
  760. package/src/components/smartEditor/useLspDiagnosticDecorations.ts +0 -125
  761. package/src/components/smartEditor/useLspHover.ts +0 -230
  762. package/src/components/smartEditor/useLspSemanticTokens.ts +0 -298
  763. package/src/components/smartEditor/useLspSession.ts +0 -231
  764. package/src/components/smartEditor/useLspSignatureHelp.ts +0 -198
  765. package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -171
  766. package/src/components/supportTicket/AttachmentChips.tsx +0 -147
  767. package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -257
  768. package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -129
  769. package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -584
  770. package/src/components/supportTicket/ReferencePicker.tsx +0 -563
  771. package/src/components/supportTicket/TicketConversation.stories.tsx +0 -121
  772. package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
  773. package/src/components/supportTicket/TicketHeader.tsx +0 -247
  774. package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
  775. package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
  776. package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -354
  777. package/src/components/supportTicket/TicketReplyBox.tsx +0 -150
  778. package/src/components/supportTicket/__fixtures__/kindMarks.ts +0 -28
  779. package/src/components/supportTicket/attachmentAccess.ts +0 -97
  780. package/src/components/supportTicket/fileToAttachment.ts +0 -24
  781. package/src/components/supportTicket/index.ts +0 -10
  782. package/src/components/supportTicket/meta.ts +0 -206
  783. package/src/components/supportTicket/ticketModel.ts +0 -131
  784. package/src/components/supportTicket/useLoadedImages.ts +0 -73
  785. package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -315
  786. package/src/components/ticketReferences/TicketReferences.tsx +0 -906
  787. package/src/components/ticketReferences/index.ts +0 -2
  788. package/src/components/ticketThread/TicketThread.stories.tsx +0 -829
  789. package/src/components/ticketThread/TicketThread.tsx +0 -719
  790. package/src/components/ticketThread/index.ts +0 -6
  791. package/src/contexts/FetchContext.tsx +0 -25
  792. package/src/contexts/ReqraftContext.tsx +0 -9
  793. package/src/contexts/StorageContext.tsx +0 -33
  794. package/src/global.d.ts +0 -4
  795. package/src/helpers/allowedValues.ts +0 -249
  796. package/src/helpers/choiceChip.ts +0 -227
  797. package/src/helpers/common.ts +0 -326
  798. package/src/helpers/dpqlDetection.ts +0 -209
  799. package/src/helpers/expressions.ts +0 -140
  800. package/src/helpers/optionUiTypes.ts +0 -199
  801. package/src/helpers/options.ts +0 -150
  802. package/src/helpers/providerValue.ts +0 -125
  803. package/src/helpers/scrollbar.ts +0 -32
  804. package/src/helpers/singleLineString.ts +0 -61
  805. package/src/helpers/templateItems.ts +0 -81
  806. package/src/helpers/templateText.ts +0 -350
  807. package/src/helpers/templates.ts +0 -602
  808. package/src/helpers/validations.ts +0 -2085
  809. package/src/hooks/useArgSchema.ts +0 -37
  810. package/src/hooks/useCoarsePointer.ts +0 -30
  811. package/src/hooks/useFetch/useFetch.stories.tsx +0 -379
  812. package/src/hooks/useFetch/useFetch.tsx +0 -154
  813. package/src/hooks/usePhoneViewport.ts +0 -34
  814. package/src/hooks/useQorusTypes.ts +0 -233
  815. package/src/hooks/useReqraftProperty.ts +0 -16
  816. package/src/hooks/useStorage/useStorage.stories.tsx +0 -168
  817. package/src/hooks/useStorage/useStorage.ts +0 -35
  818. package/src/hooks/useTemplates.ts +0 -123
  819. package/src/hooks/useValidation.ts +0 -9
  820. package/src/hooks/useWebSocket/useWebSocket.ts +0 -224
  821. package/src/hooks/useWebSocket/useWebsocket.stories.tsx +0 -640
  822. package/src/hooks/useWhyDidYouUpdate.ts +0 -38
  823. package/src/index.tsx +0 -86
  824. package/src/providers/FetchProvider.tsx +0 -40
  825. package/src/providers/ReqraftProvider.tsx +0 -52
  826. package/src/providers/StorageProvider.tsx +0 -131
  827. package/src/stores/currentUser/currentUser.stories.tsx +0 -100
  828. package/src/stores/currentUser/currentUser.tsx +0 -94
  829. package/src/stories/Data/fileFieldArgSchema.json +0 -86
  830. package/src/stories/Tests/utils.ts +0 -320
  831. package/src/stories/storyNetwork.ts +0 -92
  832. package/src/stories/tracking.tsx +0 -206
  833. package/src/tracking/browser/attach.ts +0 -186
  834. package/src/tracking/browser/env.ts +0 -78
  835. package/src/tracking/core/consent.ts +0 -37
  836. package/src/tracking/core/engagement.ts +0 -47
  837. package/src/tracking/core/experiments.ts +0 -258
  838. package/src/tracking/core/hash.ts +0 -26
  839. package/src/tracking/core/ids.ts +0 -25
  840. package/src/tracking/core/observable.ts +0 -23
  841. package/src/tracking/core/queue.ts +0 -131
  842. package/src/tracking/core/sections.ts +0 -166
  843. package/src/tracking/core/storage.ts +0 -69
  844. package/src/tracking/core/tracker.ts +0 -417
  845. package/src/tracking/core/types.ts +0 -162
  846. package/src/tracking/core/utm.ts +0 -23
  847. package/src/tracking/index.ts +0 -72
  848. package/src/tracking/markup.ts +0 -17
  849. package/src/tracking/react/Experiment.tsx +0 -44
  850. package/src/tracking/react/TrackingProvider.tsx +0 -56
  851. package/src/tracking/react/hooks.ts +0 -106
  852. package/src/tracking/react/index.ts +0 -13
  853. package/src/tracking/testing.ts +0 -108
  854. package/src/tracking/ui/ExperimentCard.stories.tsx +0 -296
  855. package/src/tracking/ui/ExperimentCard.tsx +0 -667
  856. package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -155
  857. package/src/tracking/ui/ExperimentsOverlay.tsx +0 -437
  858. package/src/tracking/ui/anchor.ts +0 -180
  859. package/src/tracking/ui/card.ts +0 -464
  860. package/src/tracking/ui/client.ts +0 -117
  861. package/src/tracking/ui/index.ts +0 -77
  862. package/src/tracking/ui/types.ts +0 -110
  863. package/src/tracking/ui/useExperimentsAdmin.ts +0 -103
  864. package/src/types/Form.ts +0 -29
  865. package/src/types.ts +0 -14
  866. package/src/utils/datetime.ts +0 -10
  867. package/src/utils/fetch.ts +0 -457
  868. package/src/utils/lspClient.ts +0 -711
  869. package/src/utils/lspClient.types.ts +0 -211
  870. package/src/utils/queryUnlessCancelled.ts +0 -28
  871. package/src/utils/websocket.ts +0 -293
  872. package/vite.config.ts +0 -58
  873. package/vitest.config.ts +0 -69
@@ -107,6 +107,7 @@ var validations_1 = require("../../../helpers/validations");
107
107
  var templates_1 = require("../../../helpers/templates");
108
108
  var common_1 = require("../../../helpers/common");
109
109
  var templateText_1 = require("../../../helpers/templateText");
110
+ var pendingEdit_1 = require("../fields/pendingEdit");
110
111
  var ReadOnlyTemplateTag_1 = require("../fields/template/ReadOnlyTemplateTag");
111
112
  var TemplateText_1 = require("../fields/template/TemplateText");
112
113
  var codeSize_1 = require("../../codeSize");
@@ -114,6 +115,11 @@ var Description_1 = require("../../Description");
114
115
  var markdownRendererContext_1 = require("../../Description/markdownRendererContext");
115
116
  var FocusedEditing_1 = require("../../FocusedEditing");
116
117
  var compactRowContext_1 = require("./compactRowContext");
118
+ var useCoarsePointer_1 = require("../../../hooks/useCoarsePointer");
119
+ var qorusTypeCatalogue_1 = require("../../../helpers/qorusTypeCatalogue");
120
+ var typeSentenceForm_1 = require("../typeSentenceForm");
121
+ var inheritProps_1 = require("./inheritProps");
122
+ var noDescription_1 = require("../../../helpers/noDescription");
117
123
  var revealRow_1 = require("./revealRow");
118
124
  var compactRowStyles_1 = require("./compactRowStyles");
119
125
  var OptionFieldMessages_1 = require("./OptionFieldMessages");
@@ -121,9 +127,14 @@ var rowFocus_1 = require("./rowFocus");
121
127
  var rowOpenPicker_1 = require("./rowOpenPicker");
122
128
  var SchemaDataView_1 = require("./_structuredData/SchemaDataView");
123
129
  var queryUnlessCancelled_1 = require("../../../utils/queryUnlessCancelled");
130
+ var markdownText_1 = require("../../../helpers/markdownText");
124
131
  var readFirst_1 = require("./readFirst");
125
132
  var StructuredDataView_1 = require("./_structuredData/StructuredDataView");
126
133
  var DpqlRendering_1 = require("../expressions/DpqlRendering");
134
+ var argumentPresence_1 = require("../expressions/argumentPresence");
135
+ var colorValue_1 = require("../../colorValue");
136
+ var hoveringPointer_1 = require("../../../helpers/hoveringPointer");
137
+ var webLink_1 = require("../../../helpers/webLink");
127
138
  /**
128
139
  * Does this markdown value have more document in it than one row can show?
129
140
  *
@@ -209,6 +220,38 @@ var richtextItemText = function (item) {
209
220
  : undefined;
210
221
  };
211
222
  exports.richtextItemText = richtextItemText;
223
+ /**
224
+ * An editable row's plain text: wrapped, up to three lines (see `renderReadFirstValue`). Its newlines fold into
225
+ * the line, as the one-line summary folded them.
226
+ */
227
+ var SUMMARY_TEXT_STYLE = Object.freeze({
228
+ display: '-webkit-box',
229
+ WebkitBoxOrient: 'vertical',
230
+ WebkitLineClamp: 3,
231
+ overflow: 'hidden',
232
+ whiteSpace: 'normal',
233
+ overflowWrap: 'anywhere',
234
+ minWidth: 0,
235
+ });
236
+ /**
237
+ * A value that is a web address, as a link to it: it opens in a new tab, and a click or Enter on it follows it
238
+ * without opening the row it is in. Reached with Tab, it says where it goes and that it opens a new tab, and
239
+ * shows its focus ring (`.options-readfirst-link`); its address is copied as a link's is.
240
+ */
241
+ var WebLink = (0, react_1.memo)(function (_a) {
242
+ var address = _a.address, color = _a.color;
243
+ return ((0, jsx_runtime_1.jsx)("a", { className: 'options-readfirst-link', href: address, target: '_blank', rel: 'noopener noreferrer', "aria-label": "".concat(address, " (opens in a new tab)"), style: color ? { color: color } : undefined,
244
+ // the link's, not the row's: the row opens on a click and on Enter or Space
245
+ onClick: function (event) { return event.stopPropagation(); }, onKeyDown: function (event) {
246
+ if (event.key === 'Enter' || event.key === ' ') {
247
+ event.stopPropagation();
248
+ }
249
+ }, children: address }));
250
+ });
251
+ WebLink.displayName = 'WebLink';
252
+ /** The status boxes by name, as their headers say them. */
253
+ /** A read-only editor's change: there is none to take. */
254
+ var ignoreReadOnlyChange = function () { return undefined; };
212
255
  exports.CompactRow = (0, react_1.memo)(function (_a) {
213
256
  var _b;
214
257
  var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
@@ -225,14 +268,23 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
225
268
  absorbedName;
226
269
  };
227
270
  var codePreviewRenderer = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.codePreviewRenderer; });
271
+ var CodeEditor = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.codeEditor; });
272
+ var readSummaries = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.readSummaries; });
273
+ var cardEditorTypes = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.cardEditorTypes; });
228
274
  var markdownRenderer = (0, markdownRendererContext_1.useMarkdownRenderer)();
229
275
  var operators = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.operators; });
230
276
  var focusedEditing = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.focusedEditing; });
231
277
  var showFieldTypes = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.showFieldTypes; });
278
+ // a finger's target is `small`, a mouse's `tiny` (the help button)
279
+ var coarse = (0, useCoarsePointer_1.useCoarsePointer)();
280
+ // what kind of value the option takes, in the words the form's type catalogue names it
281
+ var typeName = (0, typeSentenceForm_1.useTypeName)();
282
+ var typeSentenceForm = (0, typeSentenceForm_1.useTypeSentenceForm)();
232
283
  var showAllDescriptions = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.showAllDescriptions; });
233
284
  var isExpanded = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) {
234
285
  return v.expandedOptions.includes(optionName);
235
286
  });
287
+ // the box this open field moves to when it is closed, when that is not the one it is shown in
236
288
  var isHighlighted = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) {
237
289
  return v.highlightedOptions.includes(optionName);
238
290
  });
@@ -278,7 +330,8 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
278
330
  var availableOptions = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.availableOptions; });
279
331
  var requiredGroupsInfo = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.requiredGroupsInfo; });
280
332
  var handleValueChange = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.handleValueChange; });
281
- var toggleExpandedOption = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.toggleExpandedOption; });
333
+ var expandOption = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.expandOption; });
334
+ var collapseOption = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.collapseOption; });
282
335
  var flashOption = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.flashOption; });
283
336
  var hasOptionChanged = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.hasOptionChanged; });
284
337
  var handleOptionLabelClick = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.handleOptionLabelClick; });
@@ -291,6 +344,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
291
344
  var renderOption = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.renderOption; });
292
345
  var theme = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.theme; });
293
346
  var cMuted = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.cMuted; });
347
+ var rowInks = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.rowInks; });
294
348
  var templates = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.templates; });
295
349
  var cKey = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.cKey; });
296
350
  var cDivider = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.cDivider; });
@@ -300,20 +354,25 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
300
354
  var cInfo = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.cInfo; });
301
355
  // A markdown value renders as a document in the row's inset; the host's
302
356
  // renderer when it supplied one, reqraft's own otherwise.
303
- // Value-cell content: colour adds a swatch, file an icon + size; hash keeps
357
+ // Value-cell content: color adds a swatch, file an icon + size; hash keeps
304
358
  // its "N fields" summary (sub-fields reveal beneath the row).
305
359
  var renderReadFirstValue = function (field, schema, formatted,
306
- // An editable row gets one line and an ellipsis — its value line is a
307
- // summary you click to open. A read-only row is the only rendering the
308
- // value gets, so it wraps.
360
+ /* An editable row's plain text wraps, up to three lines: its value line is a summary you click to open,
361
+ and the whole value is in the row's editor. It was one line with an ellipsis, and an address or a
362
+ sentence lost its end at every width (qorus#646, Foxhoundn on qlip #383: "wrap texts so users on both
363
+ phones and desktops can easily read and copy it"; David, 2026-10-22). A read-only row is the only
364
+ rendering the value gets, so it wraps in full (`full`), a long text moving to the inset under the row
365
+ with "Show more". */
309
366
  full) {
310
367
  var _a;
311
368
  if (full === void 0) { full = false; }
312
369
  var valueType = (0, readFirst_1.getValueType)(field, schema);
313
370
  var wrapStyle = __assign({ display: 'inline-flex', alignItems: 'center', gap: 6, minWidth: 0, maxWidth: '100%' }, (full ? { flexWrap: 'wrap' } : {}));
314
- var textStyle = full ?
315
- { whiteSpace: 'pre-wrap', overflowWrap: 'anywhere' }
316
- : { overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' };
371
+ var textStyle = full ? { whiteSpace: 'pre-wrap', overflowWrap: 'anywhere' } : SUMMARY_TEXT_STYLE;
372
+ // The expression the value holds, in either shape the editor stores it: the flag on the option, or
373
+ // the envelope nested in its value as a reloaded draft has it.
374
+ var expressionAst = (0, readFirst_1.getExpressionAst)(field);
375
+ var isExpression = !!(field === null || field === void 0 ? void 0 : field.is_expression) || expressionAst !== undefined;
317
376
  /* A row has to SAY when its value is an expression.
318
377
 
319
378
  Reported from the live IDE: an author accepted the *Use as expression*
@@ -326,7 +385,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
326
385
  The same Σ the expression editor uses, so the mark means the same thing
327
386
  wherever it appears. */
328
387
  var withExpressionMarker = function (rendered) {
329
- if (!(field === null || field === void 0 ? void 0 : field.is_expression)) {
388
+ if (!isExpression) {
330
389
  return rendered;
331
390
  }
332
391
  return ((0, jsx_runtime_1.jsxs)("span", { style: __assign(__assign({}, wrapStyle), { gap: 4 }), children: [(0, jsx_runtime_1.jsx)(reqore_1.ReqoreIcon, { icon: 'Functions', size: 'tiny',
@@ -339,13 +398,43 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
339
398
  rule, which reqore has no prop for, stays inline. */
340
399
  effect: { opacity: 0.7 }, style: { flexShrink: 0 }, tooltip: 'This value is an expression' }), rendered] }));
341
400
  };
342
- if (valueType === 'rgbcolor') {
343
- var swatch = (0, readFirst_1.colorToCss)(field === null || field === void 0 ? void 0 : field.value);
344
- return ((0, jsx_runtime_1.jsxs)("span", { style: swatch ? __assign(__assign({}, wrapStyle), {
345
- // a slight wash of the chosen colour behind the swatch + hex
346
- background: "color-mix(in srgb, ".concat(swatch, " 14%, transparent)"), padding: '1px 8px', borderRadius: 4 }) : wrapStyle, children: [swatch ?
347
- (0, jsx_runtime_1.jsx)(compactRowStyles_1.StyledColorSwatch, { "aria-hidden": true, "$color": swatch, "$border": cDivider })
348
- : null, (0, jsx_runtime_1.jsx)("span", { style: textStyle, children: formatted })] }));
401
+ // Template value ($local:…): the read-only template picker — the SAME chip
402
+ // TemplateField renders when disabled, so a template reads identically here
403
+ // and in the editor (qorus-ide intent scheme: info / qorus purple).
404
+ //
405
+ // A field may also declare templates OF ITS OWN, and a value drawn from
406
+ // that list is just as much a template even when it does not look like
407
+ // `$name:key` — `isValueTemplate` is a guess at the shape of the built-in
408
+ // grammar, and a host's own grammar (a Qorus test's `$.order.id`) fails it.
409
+ // Asking the field's list whether it CONTAINS the value settles it without
410
+ // guessing at syntax, and hands back the entry whose label the chip prints,
411
+ // so a reference reads as the name it was chosen by here as well as in the
412
+ // editor rather than as a raw path.
413
+ var ownTemplates = (_a = schema === null || schema === void 0 ? void 0 : schema.templates) !== null && _a !== void 0 ? _a : templates;
414
+ // The grammar the field declares its references in, when it speaks one of
415
+ // its own — the same schema key its rich-text editor is given.
416
+ var templateGrammar = schema === null || schema === void 0 ? void 0 : schema.templateToken;
417
+ /* A template or an expression is shown as one, whatever the field's type, so these two come before
418
+ any type draws a value of its own (qorus#646). A color's branch came first and called a template
419
+ or an expression on a color option "Set"; a file's printed the raw reference as a file name. */
420
+ if (typeof (field === null || field === void 0 ? void 0 : field.value) === 'string' &&
421
+ !isExpression &&
422
+ ((0, templates_1.isValueTemplate)(field.value) || !!(0, templates_1.findTemplate)(ownTemplates !== null && ownTemplates !== void 0 ? ownTemplates : {}, field.value))) {
423
+ return (0, jsx_runtime_1.jsx)(ReadOnlyTemplateTag_1.ReadOnlyTemplateTag, { value: field.value, templates: ownTemplates });
424
+ }
425
+ // An expression reads as DPQL wherever it is shown without being edited:
426
+ // the same rendering its Explain panel and Preview use — monospace,
427
+ // colored by the language server, template references as chips — so a
428
+ // collapsed row and the editor it opens never disagree about what the
429
+ // value looks like. See `DpqlRendering`. In either shape the editor stores
430
+ // it: the flag on the option, or the envelope nested in its value as a
431
+ // reloaded draft has it (`getExpressionAst`).
432
+ if (isExpression && formatted) {
433
+ return withExpressionMarker((0, jsx_runtime_1.jsx)("span", { style: __assign({ minWidth: 0, flex: '1 1 auto' }, (full ? {} : { overflow: 'hidden' })), children: (0, jsx_runtime_1.jsx)(DpqlRendering_1.DpqlRendering, { text: formatted, templates: ownTemplates }) }));
434
+ }
435
+ // a color reads as ReqraftColorValue draws one, at its one-line size; a sensitive one is not shown
436
+ if (valueType === 'rgbcolor' && !(schema === null || schema === void 0 ? void 0 : schema.sensitive)) {
437
+ return (0, jsx_runtime_1.jsx)(colorValue_1.ReqraftColorValue, { value: field === null || field === void 0 ? void 0 : field.value, size: 'compact', wrap: full });
349
438
  }
350
439
  if (valueType === 'file') {
351
440
  var fileSize = (0, readFirst_1.getFileSize)(field === null || field === void 0 ? void 0 : field.value);
@@ -353,6 +442,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
353
442
  // trailing key pill (the editor renders it as a ReqoreButton badge).
354
443
  return ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreTag, { size: 'small', minimal: true, intent: 'info', icon: 'FileLine', label: formatted, labelKey: fileSize !== undefined ? (0, readFirst_1.formatBytes)(fileSize) : undefined }));
355
444
  }
445
+ // a yes/no holding a template has read as the template, above, not as Yes (qorus#646)
356
446
  if (valueType === 'bool' || valueType === 'boolean') {
357
447
  var truthy = (field === null || field === void 0 ? void 0 : field.value) === true || (field === null || field === void 0 ? void 0 : field.value) === 'true';
358
448
  return ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreTag, { size: 'small', minimal: true, intent: truthy ? 'success' : 'danger', label: formatted }));
@@ -368,7 +458,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
368
458
  // only surface still printing them as prose.
369
459
  //
370
460
  // `intent` is a FILL, which is what a tag is — the hazard the other
371
- // branches warn about is only ever using an intent as a TEXT colour.
461
+ // branches warn about is only ever using an intent as a TEXT color.
372
462
  //
373
463
  // Falls through to the plain summary unless EVERY entry yields a name: a
374
464
  // partly-chipped row would read as though the unnamed cases were missing.
@@ -396,12 +486,17 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
396
486
  // It reads as a chip beside the size chip — "Qore · 62 lines" — which
397
487
  // is the same summary the read-only interface pages already show.
398
488
  return ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreControlGroup, { gapSize: 'tiny', verticalAlign: 'center', wrap: true, children: (absorbedFields !== null && absorbedFields !== void 0 ? absorbedFields : []).map(function (absorbedName) {
399
- var _a;
400
- var absorbedValue = (_a = availableOptions === null || availableOptions === void 0 ? void 0 : availableOptions[absorbedName]) === null || _a === void 0 ? void 0 : _a.value;
489
+ var absorbedField = availableOptions === null || availableOptions === void 0 ? void 0 : availableOptions[absorbedName];
490
+ var absorbedValue = absorbedField === null || absorbedField === void 0 ? void 0 : absorbedField.value;
401
491
  if (absorbedValue === undefined || absorbedValue === null || absorbedValue === '') {
402
492
  return null;
403
493
  }
404
- return ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreTag, { className: 'options-readfirst-absorbed-tag', size: 'small', minimal: true, label: String(absorbedValue), tooltip: getAbsorbedLabel(absorbedName) }, absorbedName));
494
+ /* What the value is called and its picture, as its own control draws it: a language is "Qore" with
495
+ its logo, not the value it is stored as, "qore" (qorus#646, David's review). */
496
+ var absorbedSchema = options === null || options === void 0 ? void 0 : options[absorbedName];
497
+ var choice = (0, readFirst_1.findAllowedValueOption)(absorbedValue, absorbedSchema);
498
+ return ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreTag, { className: 'options-readfirst-absorbed-tag', size: 'small', minimal: true, icon: (choice === null || choice === void 0 ? void 0 : choice.image) ? 'CheckboxBlankLine' : undefined, leftIconProps: (choice === null || choice === void 0 ? void 0 : choice.image) ? { image: choice.image } : undefined, label: (0, readFirst_1.formatOptionValue)(absorbedField, absorbedSchema) ||
499
+ String(absorbedValue), tooltip: getAbsorbedLabel(absorbedName) }, absorbedName));
405
500
  }) }));
406
501
  }
407
502
  // Markdown read summary: the row prints the value's prose (the markdown
@@ -437,27 +532,6 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
437
532
  if (allowedIcon) {
438
533
  return ((0, jsx_runtime_1.jsxs)("span", { style: wrapStyle, children: [(0, jsx_runtime_1.jsx)(reqore_1.ReqoreIcon, { icon: allowedIcon, size: '16px', style: { flexShrink: 0 } }), (0, jsx_runtime_1.jsx)("span", { style: textStyle, children: formatted })] }));
439
534
  }
440
- // Template value ($local:…): the read-only template picker — the SAME chip
441
- // TemplateField renders when disabled, so a template reads identically here
442
- // and in the editor (qorus-ide intent scheme: info / qorus purple).
443
- //
444
- // A field may also declare templates OF ITS OWN, and a value drawn from
445
- // that list is just as much a template even when it does not look like
446
- // `$name:key` — `isValueTemplate` is a guess at the shape of the built-in
447
- // grammar, and a host's own grammar (a Qorus test's `$.order.id`) fails it.
448
- // Asking the field's list whether it CONTAINS the value settles it without
449
- // guessing at syntax, and hands back the entry whose label the chip prints,
450
- // so a reference reads as the name it was chosen by here as well as in the
451
- // editor rather than as a raw path.
452
- var ownTemplates = (_a = schema === null || schema === void 0 ? void 0 : schema.templates) !== null && _a !== void 0 ? _a : templates;
453
- // The grammar the field declares its references in, when it speaks one of
454
- // its own — the same schema key its rich-text editor is given.
455
- var templateGrammar = schema === null || schema === void 0 ? void 0 : schema.templateToken;
456
- if (typeof (field === null || field === void 0 ? void 0 : field.value) === 'string' &&
457
- !field.is_expression &&
458
- ((0, templates_1.isValueTemplate)(field.value) || !!(0, templates_1.findTemplate)(ownTemplates !== null && ownTemplates !== void 0 ? ownTemplates : {}, field.value))) {
459
- return (0, jsx_runtime_1.jsx)(ReadOnlyTemplateTag_1.ReadOnlyTemplateTag, { value: field.value, templates: ownTemplates, size: 'small' });
460
- }
461
535
  // A LIST whose elements are rich-text envelopes is a list of strings, so it
462
536
  // reads as those strings. Without this the row fell through to the generic
463
537
  // list summary and printed a bare count ("1 item") above the structured
@@ -478,14 +552,6 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
478
552
  return (0, jsx_runtime_1.jsx)(TemplateText_1.TemplateText, { segments: segments, templates: ownTemplates, full: full });
479
553
  }
480
554
  }
481
- // An expression reads as DPQL wherever it is shown without being edited:
482
- // the same rendering its Explain panel and Preview use — monospace,
483
- // coloured by the language server, template references as chips — so a
484
- // collapsed row and the editor it opens never disagree about what the
485
- // value looks like. See `DpqlRendering`.
486
- if ((field === null || field === void 0 ? void 0 : field.is_expression) && formatted) {
487
- return withExpressionMarker((0, jsx_runtime_1.jsx)("span", { style: __assign({ minWidth: 0, flex: '1 1 auto' }, (full ? {} : { overflow: 'hidden' })), children: (0, jsx_runtime_1.jsx)(DpqlRendering_1.DpqlRendering, { text: formatted, templates: ownTemplates }) }));
488
- }
489
555
  /* A value that MENTIONS a reference rather than being one.
490
556
 
491
557
  The branch above answers "is this value a template?", and a predicate is
@@ -506,10 +572,23 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
506
572
  if (templateSegments.some(function (segment) { return segment.kind === 'tag'; })) {
507
573
  return withExpressionMarker((0, jsx_runtime_1.jsx)(TemplateText_1.TemplateText, { segments: templateSegments, templates: ownTemplates, full: full }));
508
574
  }
509
- return withExpressionMarker(full ? (0, jsx_runtime_1.jsx)("span", { style: textStyle, children: formatted }) : formatted);
575
+ /* A value that is a web address is a link to it, in an editable row and a read-only one: it opens in a
576
+ new tab, and a click or a key on it follows it and does not open the row (Foxhoundn on qlip #383:
577
+ "Please render links as links"; David, 2026-10-22). Only the value as typed: a value drawn as a label
578
+ or masked is not its address. */
579
+ var link = formatted === (field === null || field === void 0 ? void 0 : field.value) ? (0, webLink_1.webLinkOf)(formatted) : undefined;
580
+ return withExpressionMarker((0, jsx_runtime_1.jsx)("span", { style: textStyle, children: link ?
581
+ (0, jsx_runtime_1.jsx)(WebLink, { address: link, color: cInfo })
582
+ : formatted }));
510
583
  };
511
584
  var schema = options === null || options === void 0 ? void 0 : options[optionName];
512
585
  var label = (schema === null || schema === void 0 ? void 0 : schema.display_name) || optionName;
586
+ /* The name and its asterisk, which a word joiner (U+2060) holds to the name's last character: it is on the
587
+ name's (last) line, never on a line of its own under it (Foxhoundn, qlip #392). The name stays one text,
588
+ found by its words as it always was. */
589
+ var nameWithAsterisk = function (asterisk) { return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [label, asterisk ?
590
+ (0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledLabelAsterisk, { className: 'options-readfirst-required', children: ['\u2060', (0, jsx_runtime_1.jsx)(reqore_1.ReqoreIcon, { icon: 'Asterisk', color: rowInks.danger, size: "".concat(compactRowStyles_1.LABEL_ASTERISK_SIZE, "px"), margin: 'left', marginSize: 'tiny' })] })
591
+ : null] })); };
513
592
  var injectedOptionActions = react_1.default.useMemo(function () {
514
593
  return schema ?
515
594
  (0, optionActions_1.resolveOptionActions)(optionActions, {
@@ -587,9 +666,13 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
587
666
  var chipGroups = unmetGroups.length ? unmetGroups : memberGroups;
588
667
  var groupResolved = !!memberGroups.length && !unmetGroups.length;
589
668
  var requiredGroupChip = !hidden && !readOnly && memberGroups.length && !(schema === null || schema === void 0 ? void 0 : schema.required) ?
590
- (0, jsx_runtime_1.jsx)("span", { style: { display: 'inline-flex' }, role: 'presentation', onClick: function (e) { return e.stopPropagation(); }, onKeyDown: function (e) { return e.stopPropagation(); }, onMouseEnter: function () {
591
- return setHighlightedOptions(requiredGroupsInfo.members[chipGroups[0]] || []);
592
- }, onMouseLeave: function () { return setHighlightedOptions([]); }, children: (0, jsx_runtime_1.jsx)(reqore_1.ReqoreDropdown, { className: 'options-readfirst-required-group', size: 'tiny', minimal: true, flat: true, compact: true, effect: { uppercase: true, spaced: 1 }, intent: groupResolved ? 'success' : 'warning', icon: groupResolved ? 'CheckLine' : 'LinkM', label: !groupResolved ? 'One of'
669
+ (0, jsx_runtime_1.jsx)("span", { style: { display: 'inline-flex' }, role: 'presentation', onClick: function (e) { return e.stopPropagation(); }, onKeyDown: function (e) { return e.stopPropagation(); },
670
+ // a mouse's hover, not a tap's emulated one: see `isHoveringPointer`
671
+ onPointerEnter: function (e) {
672
+ if ((0, hoveringPointer_1.isHoveringPointer)(e)) {
673
+ setHighlightedOptions(requiredGroupsInfo.members[chipGroups[0]] || []);
674
+ }
675
+ }, onPointerLeave: function () { return setHighlightedOptions([]); }, children: (0, jsx_runtime_1.jsx)(reqore_1.ReqoreDropdown, { className: 'options-readfirst-required-group', size: 'tiny', minimal: true, flat: true, compact: true, effect: { uppercase: true, spaced: 1 }, intent: groupResolved ? 'success' : 'warning', icon: groupResolved ? 'CheckLine' : 'LinkM', label: !groupResolved ? 'One of'
593
676
  : coveredByLabel ?
594
677
  "Covered by \u201C".concat(coveredByLabel, "\u201D")
595
678
  : 'Covers', filterable: chipGroups.reduce(function (n, g) { return n + requiredGroupsInfo.members[g].length; }, 0) > 6, items: chipGroups.flatMap(function (groupName) { return __spreadArray(__spreadArray([], (chipGroups.length > 1 ?
@@ -609,6 +692,20 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
609
692
  var editType = (_d = (fixedAllowedValueOption ?
610
693
  (schema === null || schema === void 0 ? void 0 : schema.type) || (schema === null || schema === void 0 ? void 0 : schema.ui_type)
611
694
  : (schema === null || schema === void 0 ? void 0 : schema.ui_type) || (schema === null || schema === void 0 ? void 0 : schema.type))) !== null && _d !== void 0 ? _d : '';
695
+ /* A complex field (a tall or nested editor) opens in the card below the row: reqraft's own complex types, and
696
+ the host's editors it names (`cardEditorTypes`): a host editor of its own, such as a sheet contract, opened
697
+ in the row's value column, about 240px wide (qorus#646). */
698
+ var isHostCardEditor = !!(cardEditorTypes === null || cardEditorTypes === void 0 ? void 0 : cardEditorTypes.includes(editType));
699
+ var opensInCard = COMPACT_COMPLEX_TYPES.has(editType) || isHostCardEditor;
700
+ /* What the host draws for the row when it is closed (`readSummaries`): a summary of its own, under which the
701
+ row draws no preview of the value (see `hostSummarizes`). */
702
+ var readSummaryUiType = schema === null || schema === void 0 ? void 0 : schema.ui_type;
703
+ var ReadSummary = readSummaryUiType ? readSummaries === null || readSummaries === void 0 ? void 0 : readSummaries[readSummaryUiType] : undefined;
704
+ /* In a read-only form, a row whose content its line does not show - a host editor that opens in the card, or a
705
+ row the host summarizes - opens its card with the editor read-only, and its fullscreen view: the summary is
706
+ one line ("4 columns · 1 rule"), and with no preview under it, the card is where what it holds is read
707
+ (qorus#646). Any other read-only row shows all it holds and opens nothing. */
708
+ var readOnlyOpens = !!readOnly && !hidden && (isHostCardEditor || !!ReadSummary);
612
709
  // Scalars edit in place inside the row; complex fields (tall or nested
613
710
  // editors) still open the expanded card below.
614
711
  var inlineEditableNow = !readOnly &&
@@ -618,7 +715,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
618
715
  !optionField.is_expression &&
619
716
  // A choice with per-option logos (e.g. language) reads better collapsed.
620
717
  !(0, readFirst_1.optionHasImages)(schema) &&
621
- !COMPACT_COMPLEX_TYPES.has(editType);
718
+ !opensInCard;
622
719
  /* Which of the two editors a row gets is settled when the row OPENS.
623
720
  *
624
721
  * Every term above reads the VALUE or a schema derived from it, so the
@@ -794,7 +891,11 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
794
891
  var editEntryValue = react_1.default.useRef(undefined);
795
892
  react_1.default.useEffect(function () {
796
893
  if (isExpanded) {
797
- editEntryValue.current = { value: optionField === null || optionField === void 0 ? void 0 : optionField.value, type: optionField === null || optionField === void 0 ? void 0 : optionField.type };
894
+ editEntryValue.current = {
895
+ value: optionField === null || optionField === void 0 ? void 0 : optionField.value,
896
+ type: optionField === null || optionField === void 0 ? void 0 : optionField.type,
897
+ is_expression: !!(optionField === null || optionField === void 0 ? void 0 : optionField.is_expression),
898
+ };
798
899
  }
799
900
  else {
800
901
  editEntryValue.current = undefined;
@@ -804,15 +905,25 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
804
905
  var editedSinceOpened = isExpanded &&
805
906
  !!editEntryValue.current &&
806
907
  !(0, isEqual_1.default)(editEntryValue.current.value, optionField === null || optionField === void 0 ? void 0 : optionField.value);
908
+ // What this row's own editor has typed and not yet reported: its fields report after a pause, and the
909
+ // row closing takes the pause with it. Done sends it before the row closes; Cancel and Escape drop it
910
+ // (see `usePendingEdit`).
911
+ var pendingEdits = (0, pendingEdit_1.usePendingEdits)();
807
912
  // Discard whatever was typed since the field was opened and close it. Used
808
913
  // by both the Cancel button and Escape, so the two cannot diverge.
809
914
  var cancelEdit = react_1.default.useCallback(function () {
915
+ // an edit still waiting for its pause is part of what is discarded
916
+ pendingEdits.discard();
810
917
  var snapshot = editEntryValue.current;
811
- if (snapshot && !(0, isEqual_1.default)(snapshot.value, optionField === null || optionField === void 0 ? void 0 : optionField.value)) {
812
- handleValueChange(optionName, snapshot.value, snapshot.type);
918
+ // the field as it was opened: an expression is put back as one, a value as a value
919
+ if (snapshot &&
920
+ (!(0, isEqual_1.default)(snapshot.value, optionField === null || optionField === void 0 ? void 0 : optionField.value) ||
921
+ snapshot.is_expression !==
922
+ !!(optionField === null || optionField === void 0 ? void 0 : optionField.is_expression))) {
923
+ handleValueChange.apply(void 0, __spreadArray([optionName], (0, argumentPresence_1.restoredFieldChange)(snapshot), false));
813
924
  }
814
- toggleExpandedOption(optionName);
815
- }, [handleValueChange, optionField === null || optionField === void 0 ? void 0 : optionField.value, optionName, toggleExpandedOption]);
925
+ collapseOption(optionName);
926
+ }, [handleValueChange, optionField === null || optionField === void 0 ? void 0 : optionField.value, optionName, collapseOption, pendingEdits]);
816
927
  // The sub-schema describing this field's value, when it has one. A value the
817
928
  // form knows the shape of is previewed THROUGH that shape (see
818
929
  // `SchemaDataView`); only genuinely undescribed data falls through to the
@@ -881,9 +992,9 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
881
992
  // whole-field revert is the only undo that makes sense.
882
993
  var revertButton = changed ?
883
994
  (0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { className: 'options-readfirst-revert', size: 'small', flat: true, minimal: true, icon: 'HistoryLine', tooltip: 'Revert changes', onClick: function (e) {
884
- var _a, _b, _c, _d;
995
+ var _a;
885
996
  e.stopPropagation();
886
- handleValueChange(optionName, (_b = (_a = originalValue.current) === null || _a === void 0 ? void 0 : _a[optionName]) === null || _b === void 0 ? void 0 : _b.value, (_d = (_c = originalValue.current) === null || _c === void 0 ? void 0 : _c[optionName]) === null || _d === void 0 ? void 0 : _d.type);
997
+ handleValueChange.apply(void 0, __spreadArray([optionName], (0, argumentPresence_1.restoredFieldChange)((_a = originalValue.current) === null || _a === void 0 ? void 0 : _a[optionName]), false));
887
998
  } })
888
999
  : null;
889
1000
  // Clear-value: empties a set field (keeps the field; the value goes blank)
@@ -923,7 +1034,8 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
923
1034
  var draftChip = commitMode === 'batched' && changed ?
924
1035
  (0, jsx_runtime_1.jsx)(reqore_1.ReqoreTag, { className: 'options-readfirst-draft', label: 'Draft', intent: 'warning', icon: 'EditLine', size: 'tiny', minimal: true, fixed: true, flat: true, compact: true, effect: { uppercase: true, spaced: 1 } })
925
1036
  : null;
926
- var isPassiveCloseAction = fixedAllowedValueOption;
1037
+ // nothing can have been typed where the value is a fixed choice, or the form is read-only (a card opened to read)
1038
+ var isPassiveCloseAction = fixedAllowedValueOption || !!readOnly;
927
1039
  // Cancel — the counterpart to Done, and the answer to "how do I get out of
928
1040
  // here without keeping this". Done was the only way to leave an open field,
929
1041
  // so every way out committed: the check, clicking away, and Escape (which
@@ -945,10 +1057,18 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
945
1057
  var openedWithFormLoadValue = !editEntryValue.current ||
946
1058
  (0, isEqual_1.default)(editEntryValue.current.value, (_f = (_e = originalValue.current) === null || _e === void 0 ? void 0 : _e[optionName]) === null || _f === void 0 ? void 0 : _f.value);
947
1059
  var editRowRevertButton = openedWithFormLoadValue ? null : revertButton;
948
- var closeExpandedFieldButton = ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { className: 'options-readfirst-done', size: 'small', intent: !isPassiveCloseAction ? 'success' : undefined, flat: isPassiveCloseAction, minimal: isPassiveCloseAction, fixed: true, icon: isPassiveCloseAction ? 'CloseLine' : 'CheckLine', "aria-label": isPassiveCloseAction ? 'Close field' : 'Done', tooltip: isPassiveCloseAction ? 'Close field' : 'Done', onClick: function () { return toggleExpandedOption(optionName); } }));
1060
+ var closeExpandedFieldButton = ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { className: 'options-readfirst-done', size: 'small', intent: !isPassiveCloseAction ? 'success' : undefined, flat: isPassiveCloseAction, minimal: isPassiveCloseAction, fixed: true, icon: isPassiveCloseAction ? 'CloseLine' : 'CheckLine', "aria-label": isPassiveCloseAction ? 'Close field' : 'Done', tooltip: isPassiveCloseAction ? 'Close field' : 'Done', onClick: function () {
1061
+ // what was typed inside the field's pause reaches the form before the row closes
1062
+ pendingEdits.flush();
1063
+ collapseOption(optionName);
1064
+ } }));
949
1065
  // Info tiers: Tier 1 (danger/warning + dependency hints) must be visible
950
1066
  // without interaction; Tier 2 (info/success, default notes) sits behind ⓘ.
951
- var infoActive = !hidden;
1067
+ /* A field not set yet keeps quiet in the Optional box, but not once it is opened: its editor is where
1068
+ its messages are read, and one saying why the field cannot be used is the answer to opening it. Such
1069
+ a row used to show them only when its editor reported '' on opening, which put the field in the form
1070
+ (qorus#646: the Qorus IDE's "Wait (ms)", disabled while "Until Step" is set). */
1071
+ var infoActive = !hidden || isExpanded;
952
1072
  var schemaMessages = infoActive ?
953
1073
  (0, OptionFieldMessages_1.getShownSchemaMessages)(schema === null || schema === void 0 ? void 0 : schema.messages, availableOptions, options).map(function (m) { return ({
954
1074
  intent: m.intent,
@@ -974,14 +1094,15 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
974
1094
  }).map(function (m) { return ({ intent: m.intent, content: String(m.label) }); })
975
1095
  : [];
976
1096
  // TWO display channels, matching the Focus prototype:
977
- // • dedicated schema `messages` → prominent coloured PANELS below the row;
1097
+ // • dedicated schema `messages` → prominent colored PANELS below the row;
978
1098
  // • everything else (validation reasons, the unmet-dependency hint, the
979
1099
  // default-value note) → a compact INLINE reason strip — not a panel.
980
1100
  var panelMessages = schemaMessages;
981
1101
  var inlineMessages = __spreadArray(__spreadArray([], fieldMessages, true), (infoActive && (schema === null || schema === void 0 ? void 0 : schema.default_value_desc) ?
982
1102
  [
983
1103
  {
984
- content: "Default: ".concat(schema.default_value_display_name || '', " \u2014 ").concat(schema.default_value_desc).trim(),
1104
+ // the default's description is the server's markdown: its words, not its marks
1105
+ content: "Default: ".concat(schema.default_value_display_name || '', " \u2014 ").concat((0, readFirst_1.markdownToProse)(schema.default_value_desc)).trim(),
985
1106
  },
986
1107
  ]
987
1108
  : []), true);
@@ -1001,12 +1122,40 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1001
1122
  // the inline editor: opening a field used to drop it, leaving an editing row
1002
1123
  // with no route to the field's description at all. Stops propagation because
1003
1124
  // both labels are click targets themselves (the row expands / collapses).
1004
- var helpIcon = (schema === null || schema === void 0 ? void 0 : schema.desc) ?
1005
- (0, jsx_runtime_1.jsx)(reqore_1.ReqoreIcon, { icon: 'QuestionLine', size: '12px', effect: { opacity: 0.55 }, margin: 'left', marginSize: 'tiny', role: 'button', tabIndex: -1, "aria-label": 'Help', className: 'options-readfirst-help', style: { cursor: 'help' }, onClick: function (event) {
1125
+ /* A real button (qorus#646, David's decision): in the tab order with a focus ring, a finger's size on a touch
1126
+ screen (`small`) and a mouse's on a desktop (`tiny`), opening the help on a click, Enter or Space. It was a
1127
+ 12px icon the keyboard could not reach. It sits in a label or a row that opens or closes on the same keys and
1128
+ clicks, so it keeps them: the row does not also open or close. */
1129
+ /* What kind of value the option takes (qorus#646, David's review: "type information should be shown on hover or
1130
+ after clicking the 'Show all field information' control rather than by default"): in its name's hover and
1131
+ in its help, beside its description, and beside its name only while the form shows all field information or
1132
+ its types. */
1133
+ var typeWords = (0, qorusTypeCatalogue_1.optionTypeWords)(schema, typeName);
1134
+ var typeSentence = (0, qorusTypeCatalogue_1.optionTypeSentence)(schema, typeName, typeSentenceForm);
1135
+ // what the option is, or, where it has no description at all, why nothing says so (qorus#646)
1136
+ var labelHover = [
1137
+ (schema === null || schema === void 0 ? void 0 : schema.short_desc) || (!(schema === null || schema === void 0 ? void 0 : schema.desc) && typeSentence ? noDescription_1.NO_OPTION_DESCRIPTION : undefined),
1138
+ typeSentence && "Takes ".concat(typeSentence, "."),
1139
+ ]
1140
+ .filter(Boolean)
1141
+ .join('\n') || undefined;
1142
+ var typeShown = !!showFieldTypes || showAllDescriptions === true;
1143
+ /* the help says what the option takes, and its description where it has one: every option with either has
1144
+ it, a short description too, so a touch screen, which has no hover, reaches the type (qorus#646, David) */
1145
+ var helpIcon = (schema === null || schema === void 0 ? void 0 : schema.desc) || (schema === null || schema === void 0 ? void 0 : schema.short_desc) || typeSentence ?
1146
+ (0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { icon: 'QuestionLine', size: coarse ? 'small' : 'tiny', minimal: true, flat: true, fixed: true, className: "options-readfirst-help".concat(coarse ? ' options-readfirst-help-touch' : ''), "aria-label": "Help: ".concat(label), tooltip: 'Help', effect: { opacity: rowInks.helpOpacity }, onClick: function (event) {
1006
1147
  event.stopPropagation();
1007
1148
  handleOptionLabelClick(optionName);
1149
+ }, onKeyDown: function (event) {
1150
+ if (event.key === 'Enter' || event.key === ' ') {
1151
+ event.stopPropagation();
1152
+ }
1008
1153
  } })
1009
1154
  : null;
1155
+ // beside the name, muted: it is about the field, not its value
1156
+ var typeTag = typeWords && typeShown ?
1157
+ (0, jsx_runtime_1.jsx)(reqore_1.ReqoreTag, { size: 'tiny', minimal: true, className: 'options-readfirst-type', label: typeWords, labelEffect: { opacity: rowInks.descOpacity } })
1158
+ : null;
1010
1159
  // The gap rides on the message itself rather than on the panel around it:
1011
1160
  // the panel is a vertical ReqoreControlGroup, which owns its own layout and
1012
1161
  // stacks children flush, and the class rule that used to carry a 4px gap
@@ -1024,17 +1173,16 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1024
1173
  `compact` for the same reason the row inset asks for it: this is a strip
1025
1174
  inside a row, never a page, and markdown authored as a document opens with
1026
1175
  a heading that would outgrow the field label above it. Without a host
1027
- renderer the string is drawn as it always was. */
1176
+ renderer it reads as the plain text its markdown renders to (`plainTextNode`). */
1028
1177
  var renderInfoStrip = function (m, index) { return ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreMessage, { size: 'small', opaque: false, flat: true, intent: m.intent, title: m.title, style: { marginBottom: 8 }, children: markdownRenderer && typeof m.content === 'string' ?
1029
1178
  markdownRenderer({ value: m.content, compact: true })
1030
- : m.content }, "".concat(m.content, "-").concat(index))); };
1179
+ : (0, markdownText_1.plainTextNode)(m.content) }, "".concat(m.content, "-").concat(index))); };
1180
+ // in the intent's shade that reads on the row (the intents themselves did not: a danger reason was 2.7:1)
1031
1181
  var reasonColor = function (intent) {
1032
- var _a;
1033
- return intent === 'danger' ? cDanger
1034
- : intent === 'warning' ? cWarning
1035
- : intent === 'success' ?
1036
- ((_a = theme === null || theme === void 0 ? void 0 : theme.intents) === null || _a === void 0 ? void 0 : _a.success) || cInfo
1037
- : "".concat(cMuted, "cc");
1182
+ return intent === 'danger' ? rowInks.danger
1183
+ : intent === 'warning' ? rowInks.warning
1184
+ : intent === 'success' ? rowInks.success
1185
+ : rowInks.mutedReason;
1038
1186
  };
1039
1187
  var infoToggle = null;
1040
1188
  // Cluster (required-group connection) — shared by the read row, its block
@@ -1054,8 +1202,13 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1054
1202
  var clusterNode = null;
1055
1203
  var clusterHoverProps = clustered && clusterMembers.length ?
1056
1204
  {
1057
- onMouseEnter: function () { return setHighlightedOptions(clusterMembers); },
1058
- onMouseLeave: function () { return setHighlightedOptions([]); },
1205
+ // a mouse's hover, not a tap's emulated one: see `isHoveringPointer`
1206
+ onPointerEnter: function (e) {
1207
+ if ((0, hoveringPointer_1.isHoveringPointer)(e)) {
1208
+ setHighlightedOptions(clusterMembers);
1209
+ }
1210
+ },
1211
+ onPointerLeave: function () { return setHighlightedOptions([]); },
1059
1212
  }
1060
1213
  : {};
1061
1214
  // Items the EDITOR inside this row published — see `rowMenuContext`.
@@ -1065,8 +1218,10 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1065
1218
  // just before the Done ✓ in both expanded layouts.
1066
1219
  var moreMenu = ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreDropdown, { className: 'options-readfirst-more', icon: 'More2Fill', flat: true, minimal: true, fixed: true, size: 'small', tooltip: 'More actions', items: __spreadArray(__spreadArray(__spreadArray([
1067
1220
  {
1068
- label: 'Edit fullscreen',
1221
+ // a card opened to read is viewed in full, not edited
1222
+ label: readOnly ? 'View fullscreen' : 'Edit fullscreen',
1069
1223
  icon: 'FullscreenLine',
1224
+ className: 'options-readfirst-fullscreen',
1070
1225
  onClick: function () { return setFocusedEditing(optionName); },
1071
1226
  }
1072
1227
  ], (removable && !hidden ?
@@ -1125,23 +1280,25 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1125
1280
  optionField.value !== '') ?
1126
1281
  (function () {
1127
1282
  var _a = (0, codeSize_1.describeCodeSize)(optionField.value), lines = _a.lines, chars = _a.chars;
1128
- return ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreP, { className: 'options-readfirst-label-code-size', size: 'tiny', effect: { opacity: 0.45, textAlign: 'left' }, style: { fontFamily: 'monospace' }, children: "".concat((0, codeSize_1.formatCodeChars)(chars), " ").concat((0, codeSize_1.formatCodeLines)(lines)) }));
1283
+ return ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreP, { className: 'options-readfirst-label-code-size', size: 'tiny', effect: { opacity: rowInks.noteOpacity, textAlign: 'left' }, style: { fontFamily: compactRowStyles_1.MONO_FONT_STACK }, children: "".concat((0, codeSize_1.formatCodeChars)(chars), " ").concat((0, codeSize_1.formatCodeLines)(lines)) }));
1129
1284
  })()
1130
1285
  : null;
1131
- if (isExpanded && !readOnly) {
1286
+ if (isExpanded && (!readOnly || readOnlyOpens)) {
1132
1287
  if (inlineEditable) {
1133
- var collapse_1 = function () { return toggleExpandedOption(optionName); };
1288
+ // closing the row by its label keeps what was typed, as Done does
1289
+ var collapse_1 = function () {
1290
+ pendingEdits.flush();
1291
+ collapseOption(optionName);
1292
+ };
1134
1293
  var editingRow = ((0, jsx_runtime_1.jsxs)("div", __assign({ ref: rowRef, "data-field": optionName, className: 'readfirst-row readfirst-row-editing options-readfirst-inline options-readfirst-value', style: readRowHeights.current[optionName] ?
1135
1294
  { minHeight: readRowHeights.current[optionName] }
1136
- : undefined }, clusterHoverProps, { children: [(0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledLabelBlock, { className: 'options-readfirst-label-block', children: [(0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledRowLabel, { role: 'button', tabIndex: 0, "aria-label": "Collapse ".concat(label), title: (schema === null || schema === void 0 ? void 0 : schema.short_desc) || undefined, "$color": cKey, "$pointer": true, onClick: collapse_1, onKeyDown: function (event) {
1295
+ : undefined }, clusterHoverProps, { children: [(0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledLabelBlock, { className: 'options-readfirst-label-block', children: [(0, jsx_runtime_1.jsx)(compactRowStyles_1.StyledRowLabel, { role: 'button', tabIndex: 0, "aria-label": "Collapse ".concat(label), title: labelHover, "$color": cKey, "$pointer": true, onClick: collapse_1, onKeyDown: function (event) {
1137
1296
  if (event.key === 'Enter' || event.key === ' ') {
1138
1297
  event.preventDefault();
1139
1298
  collapse_1();
1140
1299
  }
1141
- }, children: [label, required ?
1142
- (0, jsx_runtime_1.jsx)(reqore_1.ReqoreIcon, { icon: 'Asterisk', color: 'danger', size: '10px' })
1143
- : null, helpIcon] }), labelShortDesc ?
1144
- (0, jsx_runtime_1.jsx)(compactRowStyles_1.StyledLabelDesc, { className: 'options-readfirst-label-desc', size: 'small', effect: { opacity: 0.55 }, children: labelShortDesc })
1300
+ }, children: (0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledLabelName, { "$fill": true, children: [(0, jsx_runtime_1.jsxs)("span", { className: 'options-readfirst-label-text', style: { minWidth: 0 }, children: [nameWithAsterisk(!!required), typeTag] }), helpIcon] }) }), labelShortDesc ?
1301
+ (0, jsx_runtime_1.jsx)(compactRowStyles_1.StyledLabelDesc, { className: 'options-readfirst-label-desc', size: 'small', effect: { opacity: rowInks.descOpacity }, children: (0, readFirst_1.markdownToProse)(labelShortDesc) })
1145
1302
  : null, codeSizeNode] }), (0, jsx_runtime_1.jsxs)("div", { ref: editorRef, style: { minWidth: 0 }, onKeyDown: function (event) {
1146
1303
  if (event.key === 'Escape') {
1147
1304
  event.stopPropagation();
@@ -1153,7 +1310,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1153
1310
  }
1154
1311
  }, children: [panelMessages.length ?
1155
1312
  (0, jsx_runtime_1.jsx)(reqore_1.ReqoreControlGroup, { className: 'options-readfirst-info-panel', vertical: true, fluid: true, gapSize: 'normal', children: panelMessages.map(renderInfoStrip) })
1156
- : null, absorbedNodes, (0, jsx_runtime_1.jsx)(rowOpenPicker_1.RowOpenPickerContext.Provider, { value: openThePicker, children: (0, jsx_runtime_1.jsx)(rowMenuContext_1.RowMenuContext.Provider, { value: rowMenu, children: renderOption(optionName, optionField, 'small', true) }) })] }), (0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledRowActions, { children: [draftChip, editRowRevertButton, cancelEditButton, clearValueButton, inlineOptionActions.map(function (action, index) {
1313
+ : null, absorbedNodes, (0, jsx_runtime_1.jsx)(rowOpenPicker_1.RowOpenPickerContext.Provider, { value: openThePicker, children: (0, jsx_runtime_1.jsx)(rowMenuContext_1.RowMenuContext.Provider, { value: rowMenu, children: (0, jsx_runtime_1.jsx)(pendingEdit_1.PendingEditsContext.Provider, { value: pendingEdits, children: renderOption(optionName, optionField, 'small', true) }) }) })] }), (0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledRowActions, { children: [draftChip, editRowRevertButton, cancelEditButton, clearValueButton, inlineOptionActions.map(function (action, index) {
1157
1314
  return renderInjectedOptionAction(action, index);
1158
1315
  }), moreMenu, closeExpandedFieldButton] }), clusterNode] }), optionName));
1159
1316
  // ALWAYS wrap the editing row in the same StyledColumn so its parent stays
@@ -1163,7 +1320,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1163
1320
  // them. The wrapper carries the cluster rail class so the connection
1164
1321
  // persists while a member is being edited.
1165
1322
  return ((0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledColumn, { "data-field": optionName, className: clusterBlockClass || undefined, children: [editingRow, focusedEditing === optionName ?
1166
- (0, jsx_runtime_1.jsxs)(FocusedEditing_1.FocusedEditing, { isFullscreen: true, modalOnly: true, onClose: function () { return setFocusedEditing(undefined); }, description: (schema === null || schema === void 0 ? void 0 : schema.display_name) || optionName, children: [(0, jsx_runtime_1.jsx)(Description_1.Description, { longDescription: schema === null || schema === void 0 ? void 0 : schema.desc, shortDescription: schema === null || schema === void 0 ? void 0 : schema.short_desc, longDescriptionShownByDefault: true }), renderOption(optionName, optionField)] })
1323
+ (0, jsx_runtime_1.jsxs)(FocusedEditing_1.FocusedEditing, { isFullscreen: true, modalOnly: true, onClose: function () { return setFocusedEditing(undefined); }, description: (schema === null || schema === void 0 ? void 0 : schema.display_name) || optionName, children: [(0, jsx_runtime_1.jsx)(Description_1.Description, { longDescription: schema === null || schema === void 0 ? void 0 : schema.desc, shortDescription: schema === null || schema === void 0 ? void 0 : schema.short_desc, longDescriptionShownByDefault: true }), (0, jsx_runtime_1.jsx)(pendingEdit_1.PendingEditsContext.Provider, { value: pendingEdits, children: renderOption(optionName, optionField) })] })
1167
1324
  : null] }, optionName));
1168
1325
  }
1169
1326
  // Card chrome: badge / actions / tags render here — the row only fits
@@ -1179,17 +1336,17 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1179
1336
  : undefined;
1180
1337
  return ((0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledEditCard, { "data-field": optionName, className: COMPACT_SINGLE_VALUE_TYPES.has(editType) ?
1181
1338
  'options-readfirst-card options-readfirst-card-single'
1182
- : 'options-readfirst-card', "$bg": cHover, "$border": schemaIntentColor ? "".concat(schemaIntentColor, "66") : "".concat(cInfo, "66"), children: [(0, jsx_runtime_1.jsxs)("div", { style: {
1339
+ : 'options-readfirst-card', "$bg": cHover, "$border": schemaIntentColor ? "".concat(schemaIntentColor, "66") : "".concat(cInfo, "66"), children: [(0, jsx_runtime_1.jsxs)("div", { className: 'options-readfirst-card-header', style: {
1183
1340
  display: 'flex',
1184
- alignItems: 'flex-start',
1341
+ // a heading of one line is centred on the card's actions; one with a description or tags under
1342
+ // its name lines up by its top (David's review of qorus#646: the name sat above the buttons)
1343
+ alignItems: (schema === null || schema === void 0 ? void 0 : schema.short_desc) || cardTags.length ? 'flex-start' : 'center',
1185
1344
  justifyContent: 'space-between',
1186
1345
  gap: 12,
1187
- }, children: [(0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledCardHeading, { children: [(0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledCardLabel, { "$color": cKey, children: [((schema === null || schema === void 0 ? void 0 : schema.icon) ||
1346
+ }, children: [(0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledCardHeading, { children: [(0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledCardLabel, { "$color": cKey, title: labelHover, children: [((schema === null || schema === void 0 ? void 0 : schema.icon) ||
1188
1347
  (schema === null || schema === void 0 ? void 0 : schema.image)) ?
1189
1348
  (0, jsx_runtime_1.jsx)(reqore_1.ReqoreIcon, { icon: schema === null || schema === void 0 ? void 0 : schema.icon, image: schema === null || schema === void 0 ? void 0 : schema.image, size: '14px' })
1190
- : null, (0, jsx_runtime_1.jsxs)("span", { children: [label, required ?
1191
- (0, jsx_runtime_1.jsx)(reqore_1.ReqoreIcon, { icon: 'Asterisk', color: 'danger', size: '10px' })
1192
- : null, helpIcon] }), cardBadges.map(function (badge, index) {
1349
+ : null, (0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledLabelName, { children: [(0, jsx_runtime_1.jsx)("span", { className: 'options-readfirst-label-text', style: { minWidth: 0 }, children: nameWithAsterisk(!!required) }), helpIcon] }), typeTag, cardBadges.map(function (badge, index) {
1193
1350
  return typeof badge === 'object' ?
1194
1351
  (0, jsx_runtime_1.jsx)(reqore_1.ReqoreTag, __assign({ size: 'small', minimal: true, className: 'options-readfirst-card-badge' }, badge), index)
1195
1352
  : (0, jsx_runtime_1.jsx)(reqore_1.ReqoreTag, { size: 'small', minimal: true, className: 'options-readfirst-card-badge', label: badge }, index);
@@ -1209,9 +1366,9 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1209
1366
  event.stopPropagation();
1210
1367
  cancelEdit();
1211
1368
  }
1212
- }, children: (0, jsx_runtime_1.jsxs)(FocusedEditing_1.FocusedEditing, { isFullscreen: focusedEditing === optionName, onClose: function () { return setFocusedEditing(undefined); }, description: (schema === null || schema === void 0 ? void 0 : schema.display_name) || optionName, children: [focusedEditing === optionName ?
1369
+ }, children: (0, jsx_runtime_1.jsxs)(FocusedEditing_1.FocusedEditing, __assign({ isFullscreen: focusedEditing === optionName, onClose: function () { return setFocusedEditing(undefined); }, description: (schema === null || schema === void 0 ? void 0 : schema.display_name) || optionName }, (readOnly ? { label: 'Focused View' } : {}), { children: [focusedEditing === optionName ?
1213
1370
  (0, jsx_runtime_1.jsx)(Description_1.Description, { longDescription: schema === null || schema === void 0 ? void 0 : schema.desc, shortDescription: schema === null || schema === void 0 ? void 0 : schema.short_desc, longDescriptionShownByDefault: true })
1214
- : null, (0, jsx_runtime_1.jsx)(rowMenuContext_1.RowMenuContext.Provider, { value: rowMenu, children: renderOption(optionName, optionField) })] }) })] }, optionName));
1371
+ : null, (0, jsx_runtime_1.jsx)(rowMenuContext_1.RowMenuContext.Provider, { value: rowMenu, children: (0, jsx_runtime_1.jsx)(pendingEdit_1.PendingEditsContext.Provider, { value: pendingEdits, children: renderOption(optionName, optionField) }) })] })) })] }, optionName));
1215
1372
  }
1216
1373
  var formatted = (0, readFirst_1.formatOptionValue)(optionField, schema);
1217
1374
  var empty = formatted === '';
@@ -1266,7 +1423,12 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1266
1423
  typeof optionField.value === 'object' &&
1267
1424
  !Array.isArray(optionField.value) &&
1268
1425
  !isExpression;
1269
- var hashEntries = !hidden && (isPlainHashType || isObjectValuedType) ?
1426
+ /* Where the host draws the row's summary (`readSummaries`), the row draws no preview of its own under it: the
1427
+ host's summary says what the value is ("4 columns · 1 rule"), and a structured preview of the same value
1428
+ under it ("columns · List · 4 items") said it again, in reqraft's words (qorus#646). The card, which a
1429
+ read-only form opens for such a row too (`readOnlyOpens`), is where the value is read in full. */
1430
+ var hostSummarizes = !!ReadSummary;
1431
+ var hashEntries = !hidden && !hostSummarizes && (isPlainHashType || isObjectValuedType) ?
1270
1432
  (0, readFirst_1.getHashEntries)(optionField, schema)
1271
1433
  : [];
1272
1434
  // A LIST OF HASHES/objects gets the same expandable structured preview a hash
@@ -1274,6 +1436,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1274
1436
  // never print "[object Object]"). StructuredDataView unwraps each item's
1275
1437
  // {type,value} envelope. Plain scalar lists keep just their joined summary.
1276
1438
  var isHashList = !hidden &&
1439
+ !hostSummarizes &&
1277
1440
  (valueType === 'list' || valueType === 'free-list' || valueType === 'array') &&
1278
1441
  Array.isArray(optionField === null || optionField === void 0 ? void 0 : optionField.value) &&
1279
1442
  optionField.value.length > 0 &&
@@ -1293,6 +1456,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1293
1456
  // "Show more" reveals the rest. Sits in the same inset the hash/list
1294
1457
  // preview uses — mutually exclusive with `showStructuredPreview`.
1295
1458
  var showCodePreview = !hidden &&
1459
+ !hostSummarizes &&
1296
1460
  valueType === 'code-editor' &&
1297
1461
  typeof (optionField === null || optionField === void 0 ? void 0 : optionField.value) === 'string' &&
1298
1462
  optionField.value.length > 0;
@@ -1339,6 +1503,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1339
1503
  // rendered as the row's own text, and a second copy of it below would make
1340
1504
  // every description row tall for nothing.
1341
1505
  var showMarkdownPreview = !hidden &&
1506
+ !hostSummarizes &&
1342
1507
  !showCodePreview &&
1343
1508
  !!markdownRenderer &&
1344
1509
  // keyed on the schema's ui_type, not on getValueType(): a markdown value
@@ -1360,6 +1525,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1360
1525
  // sentence's worth of characters (a short value wraps in place).
1361
1526
  var showLongTextInset = readOnly &&
1362
1527
  !hidden &&
1528
+ !hostSummarizes &&
1363
1529
  !showCodePreview &&
1364
1530
  !showMarkdownPreview &&
1365
1531
  !showStructuredPreview &&
@@ -1384,9 +1550,8 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1384
1550
  isMultilineMarkdown(optionField.value)) ?
1385
1551
  "".concat(optionField.value.trim().split('\n').length, " lines")
1386
1552
  : undefined;
1387
- var typeLabel = showFieldTypes ?
1388
- "<".concat((schema === null || schema === void 0 ? void 0 : schema.ui_type) || (schema === null || schema === void 0 ? void 0 : schema.type) || 'auto').concat((schema === null || schema === void 0 ? void 0 : schema.ui_element_type) ? "[".concat(schema.ui_element_type, "]") : '', ">")
1389
- : null;
1553
+ // the option's type beside its name, while the form shows field types: in words, as an open option says it
1554
+ var typeLabel = typeShown ? typeWords : undefined;
1390
1555
  // A `readonly` field is one the system owns — an assigned id, a recorded
1391
1556
  // provenance. The server states that on the field itself; only the older
1392
1557
  // compat projection also mapped it to `disabled`, so on this path the form
@@ -1439,7 +1604,13 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1439
1604
  // "Depends on" dropdown whose items are the blocking fields (an "any of:"
1440
1605
  // divider for OR-groups), each clickable to flash/locate the blocker.
1441
1606
  var dependsOnChip = fieldDisabled && dependencyEntries.length ?
1442
- (0, jsx_runtime_1.jsx)("span", { style: { display: 'inline-flex' }, role: 'presentation', onClick: function (e) { return e.stopPropagation(); }, onKeyDown: function (e) { return e.stopPropagation(); }, onMouseEnter: function () { return setHighlightedOptions(depHighlightNames); }, onMouseLeave: function () { return setHighlightedOptions([]); }, children: (0, jsx_runtime_1.jsx)(reqore_1.ReqoreDropdown, { className: 'options-readfirst-lock-deps', size: 'tiny', minimal: true, flat: true, compact: true, icon: 'LockLine', tooltip: 'Disabled \u2014 depends on other fields. Click to locate them.', items: __spreadArray([
1607
+ (0, jsx_runtime_1.jsx)("span", { style: { display: 'inline-flex' }, role: 'presentation', onClick: function (e) { return e.stopPropagation(); }, onKeyDown: function (e) { return e.stopPropagation(); },
1608
+ // a mouse's hover, not a tap's emulated one: see `isHoveringPointer`
1609
+ onPointerEnter: function (e) {
1610
+ if ((0, hoveringPointer_1.isHoveringPointer)(e)) {
1611
+ setHighlightedOptions(depHighlightNames);
1612
+ }
1613
+ }, onPointerLeave: function () { return setHighlightedOptions([]); }, children: (0, jsx_runtime_1.jsx)(reqore_1.ReqoreDropdown, { className: 'options-readfirst-lock-deps', size: 'tiny', minimal: true, flat: true, compact: true, icon: 'LockLine', tooltip: 'Disabled \u2014 depends on other fields. Click to locate them.', items: __spreadArray([
1443
1614
  { divider: true, label: 'Unlocked by:', dividerAlign: 'left' }
1444
1615
  ], dependencyEntries.flatMap(function (entry) { return __spreadArray(__spreadArray([], (Array.isArray(entry) ?
1445
1616
  [{ divider: true, label: 'any of:', dividerAlign: 'left' }]
@@ -1470,7 +1641,12 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1470
1641
  // change has said exactly what they want, and answering with silence
1471
1642
  // teaches them the surface is broken.
1472
1643
  if (fieldDisabled || readOnly) {
1473
- if (readOnly && !fieldDisabled) {
1644
+ // ...except a row whose line cannot show what it holds: it opens its card to be read (`readOnlyOpens`)
1645
+ if (readOnlyOpens && !fieldDisabled) {
1646
+ // what the row was drawn as decides: open, it closes; closed, it opens (see expandOption)
1647
+ (isExpanded ? collapseOption : expandOption)(optionName);
1648
+ }
1649
+ else if (readOnly && !fieldDisabled) {
1474
1650
  onReadOnlyActivate === null || onReadOnlyActivate === void 0 ? void 0 : onReadOnlyActivate(optionName);
1475
1651
  }
1476
1652
  return;
@@ -1487,7 +1663,11 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1487
1663
  // not-yet-set field just expands its editor (with an empty value); it joins
1488
1664
  // the form's output the moment a value is set (and moves to Set / Needs
1489
1665
  // attention), and drops back to Optional when cleared. No explicit add step.
1490
- toggleExpandedOption(optionName);
1666
+ //
1667
+ // What the row was drawn as decides, not the state by the time the update lands: a click on a row drawn
1668
+ // closed opens it, even if the first-required scan's update has opened it in the meantime (a toggle closed
1669
+ // it again: qorus#646, the Qorus IDE's Schema "Draft Is Saved").
1670
+ (isExpanded ? collapseOption : expandOption)(optionName);
1491
1671
  };
1492
1672
  // Row chrome: icon/image before the label; schema `intent` as the edge
1493
1673
  // stripe (message-severity stripes win when both apply).
@@ -1530,23 +1710,26 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1530
1710
  go. Then it takes a button's role, focus and keyboard handling, because
1531
1711
  a thing that acts on a click has to be reachable without a mouse and has
1532
1712
  to announce what it does — and "Edit X", not "X", is what it does. */
1533
- var readOnlyIsAWayIn = !!readOnly && !fieldDisabled && !!onReadOnlyActivate;
1534
- var actsOnClick = !readOnly || readOnlyIsAWayIn;
1713
+ var readOnlyIsAWayIn = !!readOnly && !fieldDisabled && !readOnlyOpens && !!onReadOnlyActivate;
1714
+ var actsOnClick = !readOnly || readOnlyIsAWayIn || readOnlyOpens;
1535
1715
  var row = ((0, jsx_runtime_1.jsxs)("div", __assign({ "data-field": optionName, role: actsOnClick ? 'button' : undefined, tabIndex: actsOnClick ? 0 : undefined, "aria-label": readOnlyIsAWayIn ? "Edit ".concat(label)
1536
- : readOnly ? undefined
1537
- : label, className: "readfirst-row options-readfirst-value".concat(readOnly ? ' readfirst-row-read' : '').concat(readOnlyIsAWayIn ? ' readfirst-row-way-in' : '').concat(hidden ? ' readfirst-row-hidden' : '').concat(fieldDisabled ? ' readfirst-row-disabled' : '').concat(isHighlighted ? ' readfirst-row-group-highlight' : '').concat(isFlashed ? ' readfirst-row-flash' : '').concat(showLabelDesc ? ' readfirst-row-info-open' : '').concat(panelMessages.length || showStructuredPreview || showCodePreview || showMarkdownPreview || showLongTextInset ? ' readfirst-row-tall' : '').concat(clusterBlockClass ? ' ' + clusterBlockClass : ''), "aria-disabled": fieldDisabled || undefined, style: readOnlyIsAWayIn ? __assign(__assign({}, stripeStyle), { cursor: 'pointer' }) : stripeStyle, onClick: actsOnClick ? activate : undefined, onKeyDown: !actsOnClick ? undefined : (function (event) {
1716
+ : readOnlyOpens ?
1717
+ "View ".concat(label)
1718
+ : readOnly ?
1719
+ undefined
1720
+ : label, className: "readfirst-row options-readfirst-value".concat(readOnly ? ' readfirst-row-read' : '').concat(readOnlyIsAWayIn || readOnlyOpens ? ' readfirst-row-way-in' : '').concat(readOnlyOpens ? ' readfirst-row-opens' : '').concat(hidden ? ' readfirst-row-hidden' : '').concat(fieldDisabled ? ' readfirst-row-disabled' : '').concat(isHighlighted ? ' readfirst-row-group-highlight' : '').concat(isFlashed ? ' readfirst-row-flash' : '').concat(showLabelDesc ? ' readfirst-row-info-open' : '').concat(panelMessages.length || showStructuredPreview || showCodePreview || showMarkdownPreview || showLongTextInset ? ' readfirst-row-tall' : '').concat(clusterBlockClass ? ' ' + clusterBlockClass : ''), "aria-disabled": fieldDisabled || undefined, style: readOnlyIsAWayIn || readOnlyOpens ? __assign(__assign({}, stripeStyle), { cursor: 'pointer' }) : stripeStyle, onClick: actsOnClick ? activate : undefined, onKeyDown: !actsOnClick ? undefined : (function (event) {
1538
1721
  if (event.key === 'Enter' || event.key === ' ') {
1539
1722
  event.preventDefault();
1540
1723
  activate(event);
1541
1724
  }
1542
- }) }, clusterHoverProps, { children: [clusterNode, (0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledLabelBlock, { className: 'options-readfirst-label-block', children: [(0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledRowLabel, { title: (schema === null || schema === void 0 ? void 0 : schema.short_desc) || undefined, "$color": cKey, children: [rowChromeIcon, (0, jsx_runtime_1.jsxs)("span", { className: 'options-readfirst-label-text', style: { minWidth: 0 }, children: [label, requiredMark ?
1543
- (0, jsx_runtime_1.jsx)(reqore_1.ReqoreIcon, { icon: 'Asterisk', color: 'danger', size: '10px', margin: 'left', marginSize: 'tiny' })
1544
- : null, helpIcon] }), typeLabel ?
1545
- (0, jsx_runtime_1.jsx)(reqore_1.ReqoreTag, { size: 'tiny', minimal: true, label: typeLabel, labelEffect: { opacity: 0.55 } })
1546
- : null] }), showLabelDesc ?
1547
- (0, jsx_runtime_1.jsx)(compactRowStyles_1.StyledLabelDesc, { className: 'options-readfirst-label-desc', size: 'small', effect: { opacity: 0.55 }, children: labelShortDesc })
1725
+ }) }, clusterHoverProps, { children: [clusterNode, (0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledLabelBlock, { className: 'options-readfirst-label-block', children: [(0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledRowLabel, { title: labelHover, "$color": cKey, children: [rowChromeIcon, (0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledLabelName, { "$fill": true, children: [(0, jsx_runtime_1.jsxs)("span", { className: 'options-readfirst-label-text', style: { minWidth: 0 }, children: [nameWithAsterisk(requiredMark), typeLabel ?
1726
+ (0, jsx_runtime_1.jsx)(reqore_1.ReqoreTag, { size: 'tiny', minimal: true, className: 'options-readfirst-type', label: typeLabel, labelEffect: { opacity: rowInks.descOpacity } })
1727
+ : null] }), helpIcon] })] }), showLabelDesc ?
1728
+ /* A sentence in the label's own type, clamped to three lines: drawn as the prose its markdown
1729
+ renders to, never its marks (`markdownToProse`). */
1730
+ (0, jsx_runtime_1.jsx)(compactRowStyles_1.StyledLabelDesc, { className: 'options-readfirst-label-desc', size: 'small', effect: { opacity: rowInks.descOpacity }, children: (0, readFirst_1.markdownToProse)(labelShortDesc) })
1548
1731
  : null, codeSizeNode, lineCountNote ?
1549
- (0, jsx_runtime_1.jsx)(reqore_1.ReqoreP, { className: 'options-readfirst-label-lines', size: 'tiny', effect: { opacity: 0.45, textAlign: 'left' }, style: { fontFamily: 'monospace' }, children: lineCountNote })
1732
+ (0, jsx_runtime_1.jsx)(reqore_1.ReqoreP, { className: 'options-readfirst-label-lines', size: 'tiny', effect: { opacity: rowInks.noteOpacity, textAlign: 'left' }, style: { fontFamily: compactRowStyles_1.MONO_FONT_STACK }, children: lineCountNote })
1550
1733
  : null] }), (0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledRowValue
1551
1734
  // A code field draws its whole value in the preview below, with
1552
1735
  // "Show more" for the rest, so a hover carrying the same text is
@@ -1574,12 +1757,22 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1574
1757
  !showsTemplateText &&
1575
1758
  typeof formatted === 'string') ?
1576
1759
  formatted
1577
- : undefined, "$color": empty || hidden ? "".concat(cMuted, "66") : cKey, "$empty": empty || hidden, children: [(showMarkdownPreview || showLongTextInset || (previewWithSchema && showStructuredPreview)) ?
1760
+ : undefined, "$color": empty || hidden ? rowInks.emptyValue : cKey, "$empty": empty || hidden, children: [(showMarkdownPreview || showLongTextInset || (previewWithSchema && showStructuredPreview)) ?
1578
1761
  null
1579
- : (0, jsx_runtime_1.jsx)("span", { className: 'options-readfirst-valuetext', children: hidden || empty ?
1580
- formattedDefault || '—'
1581
- : renderReadFirstValue(optionField, schema, formatted, readOnly) }), readOnlyChoiceDesc ?
1582
- (0, jsx_runtime_1.jsx)("span", { className: 'options-readfirst-choice-desc', children: readOnlyChoiceDesc })
1762
+ : (0, jsx_runtime_1.jsx)("span", { className: 'options-readfirst-valuetext', children: ReadSummary && !hidden ?
1763
+ /* the host's own summary: an editor that reports a status says it here, set or not
1764
+ ("Field mappings required", "… incomplete"), where "2 items" said nothing of it (qorus#646) */
1765
+ (0, jsx_runtime_1.jsx)(ReadSummary, { name: optionName, value: optionField === null || optionField === void 0 ? void 0 : optionField.value, schema: schema, formatted: formatted })
1766
+ : hidden || empty ?
1767
+ formattedDefault || '—'
1768
+ : renderReadFirstValue(optionField, schema, formatted, readOnly) }), readOnlyChoiceDesc ?
1769
+ /* What the chosen option means, on its own line: the server writes it in markdown ("Each
1770
+ `POST /conversations` ..."), so the host's renderer draws it, as it draws the schema messages
1771
+ below; without one, it reads as the plain text it renders to, its paragraphs kept. A block, as
1772
+ what is drawn is. */
1773
+ (0, jsx_runtime_1.jsx)("div", { className: 'options-readfirst-choice-desc', children: markdownRenderer ?
1774
+ markdownRenderer({ value: readOnlyChoiceDesc, compact: true })
1775
+ : (0, markdownText_1.plainTextNode)(readOnlyChoiceDesc) })
1583
1776
  : null, valueReasons.map(function (m, i) { return ((0, jsx_runtime_1.jsx)("span", { className: 'options-readfirst-reason', style: { color: reasonColor(m.intent) }, children: m.content }, "".concat(m.content, "-").concat(i))); }), panelMessages.length ?
1584
1777
  (0, jsx_runtime_1.jsx)(reqore_1.ReqoreControlGroup, { className: 'options-readfirst-info-panel', vertical: true, fluid: true, gapSize: 'normal', children: panelMessages.map(renderInfoStrip) })
1585
1778
  : null, showStructuredPreview ?
@@ -1622,7 +1815,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1622
1815
  // lives (qorus-ide registers its brand purple there).
1623
1816
  // Falling back to `info` keeps this working for a
1624
1817
  // consumer that registers nothing — the heading is
1625
- // accented either way, just in the theme's own colour
1818
+ // accented either way, just in the theme's own color
1626
1819
  // rather than one this library picked.
1627
1820
  accent: ((_q = theme === null || theme === void 0 ? void 0 : theme.intents) === null || _q === void 0 ? void 0 : _q.custom1) || cInfo,
1628
1821
  }, onItemClick: function () { return activate(); } })
@@ -1636,7 +1829,12 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1636
1829
  options: options,
1637
1830
  values: availableOptions,
1638
1831
  })
1639
- : (0, jsx_runtime_1.jsx)(compactRowStyles_1.StyledCodePreview, { className: 'options-readfirst-code', "$bg": cHover, "$border": "".concat(cDivider, "88"), "$fg": cKey, children: optionField.value }) }) })
1832
+ : CodeEditor ?
1833
+ /* Code is shown as the host shows code: its own editor, read-only, given what it inherits (its
1834
+ language) - highlighted, with its language server - and as a plain block only where there is
1835
+ none (qorus#646, David's decision). */
1836
+ (0, jsx_runtime_1.jsx)("div", { className: 'options-readfirst-code options-readfirst-code-editor', children: (0, jsx_runtime_1.jsx)(CodeEditor, __assign({}, schema, (0, inheritProps_1.resolveInheritProps)(schema === null || schema === void 0 ? void 0 : schema.inherit_props, availableOptions), { name: optionName, value: optionField.value, readOnly: true, onChange: ignoreReadOnlyChange })) })
1837
+ : (0, jsx_runtime_1.jsx)(compactRowStyles_1.StyledCodePreview, { className: 'options-readfirst-code', "$bg": cHover, "$border": "".concat(cDivider, "88"), "$fg": cKey, children: optionField.value }) }) })
1640
1838
  : null, showMarkdownPreview ?
1641
1839
  (0, jsx_runtime_1.jsx)(compactRowStyles_1.StyledRowInset, { className: 'options-readfirst-inset options-readfirst-markdown-inset', onClick: function (e) { return e.stopPropagation(); }, children: (0, jsx_runtime_1.jsx)(reqore_1.ReqoreCollapsibleContent, { maxCollapsedHeight: 96, buttonProps: { className: 'options-readfirst-viewmore' }, children: (0, jsx_runtime_1.jsx)("div", { className: 'options-readfirst-markdown', children: markdownRenderer({ value: optionField.value, compact: true }) }) }) })
1642
1840
  : null, showLongTextInset ?
@@ -1656,9 +1854,9 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1656
1854
  onClick: function (event) { return event.stopPropagation(); }, children: (0, jsx_runtime_1.jsx)(reqore_1.ReqoreDropdown, { className: 'options-injected-actions-menu', icon: 'MoreFill', flat: true, minimal: true, fixed: true, size: 'tiny', tooltip: 'Field actions', items: injectedOptionActionMenuItems }) })
1657
1855
  : null, (0, jsx_runtime_1.jsx)(compactRowStyles_1.StyledActionSlot, { className: 'options-readfirst-statusdot-slot', "$width": 12, children: changed && !readOnly && !hidden ?
1658
1856
  (0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { className: 'options-readfirst-revert', size: 'tiny', flat: true, minimal: true, compact: true, icon: 'HistoryLine', tooltip: 'Revert changes', onClick: function (e) {
1659
- var _a, _b, _c, _d;
1857
+ var _a;
1660
1858
  e.stopPropagation();
1661
- handleValueChange(optionName, (_b = (_a = originalValue.current) === null || _a === void 0 ? void 0 : _a[optionName]) === null || _b === void 0 ? void 0 : _b.value, (_d = (_c = originalValue.current) === null || _c === void 0 ? void 0 : _c[optionName]) === null || _d === void 0 ? void 0 : _d.type);
1859
+ handleValueChange.apply(void 0, __spreadArray([optionName], (0, argumentPresence_1.restoredFieldChange)((_a = originalValue.current) === null || _a === void 0 ? void 0 : _a[optionName]), false));
1662
1860
  } })
1663
1861
  : dotColor ?
1664
1862
  (0, jsx_runtime_1.jsx)(compactRowStyles_1.StyledStatusDot, { "$color": dotColor, "$ring": dotStatus !== 'set', "aria-hidden": true })