@qoretechnologies/reqraft 0.10.66-pr.145.gcb1e59d → 0.10.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (913) hide show
  1. package/README.md +53 -1
  2. package/dist/components/Description/AllowedValuesHelp.d.ts +20 -0
  3. package/dist/components/Description/AllowedValuesHelp.d.ts.map +1 -0
  4. package/dist/components/Description/AllowedValuesHelp.js +86 -0
  5. package/dist/components/Description/AllowedValuesHelp.js.map +1 -0
  6. package/dist/components/Description/describedControl.d.ts +54 -0
  7. package/dist/components/Description/describedControl.d.ts.map +1 -0
  8. package/dist/components/Description/describedControl.js +81 -0
  9. package/dist/components/Description/describedControl.js.map +1 -0
  10. package/dist/components/Description/index.d.ts.map +1 -1
  11. package/dist/components/Description/index.js +3 -2
  12. package/dist/components/Description/index.js.map +1 -1
  13. package/dist/components/colorValue/colorValue.d.ts +59 -0
  14. package/dist/components/colorValue/colorValue.d.ts.map +1 -0
  15. package/dist/components/colorValue/colorValue.js +245 -0
  16. package/dist/components/colorValue/colorValue.js.map +1 -0
  17. package/dist/components/colorValue/index.d.ts +34 -0
  18. package/dist/components/colorValue/index.d.ts.map +1 -0
  19. package/dist/components/colorValue/index.js +136 -0
  20. package/dist/components/colorValue/index.js.map +1 -0
  21. package/dist/components/colorValue/labels.d.ts +12 -0
  22. package/dist/components/colorValue/labels.d.ts.map +1 -0
  23. package/dist/components/colorValue/labels.js +11 -0
  24. package/dist/components/colorValue/labels.js.map +1 -0
  25. package/dist/components/composer/Composer.d.ts +1 -1
  26. package/dist/components/composer/Composer.d.ts.map +1 -1
  27. package/dist/components/composer/Composer.js +2 -2
  28. package/dist/components/composer/Composer.js.map +1 -1
  29. package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
  30. package/dist/components/dpqlEditor/DpqlEditor.js +156 -10
  31. package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
  32. package/dist/components/dpqlEditor/dpqlCompletions.d.ts +39 -0
  33. package/dist/components/dpqlEditor/dpqlCompletions.d.ts.map +1 -0
  34. package/dist/components/dpqlEditor/dpqlCompletions.js +294 -0
  35. package/dist/components/dpqlEditor/dpqlCompletions.js.map +1 -0
  36. package/dist/components/dpqlEditor/dpqlHelpers.d.ts +54 -5
  37. package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
  38. package/dist/components/dpqlEditor/dpqlHelpers.js +420 -63
  39. package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
  40. package/dist/components/dpqlEditor/dpqlInserter.d.ts.map +1 -1
  41. package/dist/components/dpqlEditor/dpqlInserter.js +67 -29
  42. package/dist/components/dpqlEditor/dpqlInserter.js.map +1 -1
  43. package/dist/components/dpqlEditor/dpqlTags.d.ts +17 -7
  44. package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
  45. package/dist/components/dpqlEditor/dpqlTags.js +44 -17
  46. package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
  47. package/dist/components/dpqlEditor/types.d.ts +94 -8
  48. package/dist/components/dpqlEditor/types.d.ts.map +1 -1
  49. package/dist/components/dpqlEditor/useDpqlSession.d.ts +7 -2
  50. package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
  51. package/dist/components/dpqlEditor/useDpqlSession.js +49 -17
  52. package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
  53. package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
  54. package/dist/components/form/engine/CompactRow.js +336 -243
  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 +20 -57
  58. package/dist/components/form/engine/CompactToolbar.js.map +1 -1
  59. package/dist/components/form/engine/FormEngine.d.ts +67 -59
  60. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  61. package/dist/components/form/engine/FormEngine.js +606 -409
  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 +2 -18
  68. package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
  69. package/dist/components/form/engine/OptionFieldMessages.js +28 -25
  70. package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
  71. package/dist/components/form/engine/OptionsHelpDialog.d.ts.map +1 -1
  72. package/dist/components/form/engine/OptionsHelpDialog.js +19 -2
  73. package/dist/components/form/engine/OptionsHelpDialog.js.map +1 -1
  74. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts +2 -2
  75. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
  76. package/dist/components/form/engine/_structuredData/SchemaDataView.js +11 -31
  77. package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
  78. package/dist/components/form/engine/compactRowContext.d.ts +30 -6
  79. package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
  80. package/dist/components/form/engine/compactRowContext.js.map +1 -1
  81. package/dist/components/form/engine/compactRowStyles.d.ts +56 -31
  82. package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
  83. package/dist/components/form/engine/compactRowStyles.js +121 -110
  84. package/dist/components/form/engine/compactRowStyles.js.map +1 -1
  85. package/dist/components/form/engine/compactToolbarColors.d.ts +16 -0
  86. package/dist/components/form/engine/compactToolbarColors.d.ts.map +1 -0
  87. package/dist/components/form/engine/compactToolbarColors.js +21 -0
  88. package/dist/components/form/engine/compactToolbarColors.js.map +1 -0
  89. package/dist/components/form/engine/compactToolbarContext.d.ts +0 -3
  90. package/dist/components/form/engine/compactToolbarContext.d.ts.map +1 -1
  91. package/dist/components/form/engine/compactToolbarContext.js.map +1 -1
  92. package/dist/components/form/engine/inheritProps.d.ts +29 -0
  93. package/dist/components/form/engine/inheritProps.d.ts.map +1 -0
  94. package/dist/components/form/engine/inheritProps.js +43 -0
  95. package/dist/components/form/engine/inheritProps.js.map +1 -0
  96. package/dist/components/form/engine/operatorSummary.d.ts +26 -0
  97. package/dist/components/form/engine/operatorSummary.d.ts.map +1 -0
  98. package/dist/components/form/engine/operatorSummary.js +35 -0
  99. package/dist/components/form/engine/operatorSummary.js.map +1 -0
  100. package/dist/components/form/engine/readFirst.d.ts +26 -22
  101. package/dist/components/form/engine/readFirst.d.ts.map +1 -1
  102. package/dist/components/form/engine/readFirst.js +79 -115
  103. package/dist/components/form/engine/readFirst.js.map +1 -1
  104. package/dist/components/form/engine/readFirstColors.d.ts +30 -0
  105. package/dist/components/form/engine/readFirstColors.d.ts.map +1 -0
  106. package/dist/components/form/engine/readFirstColors.js +51 -0
  107. package/dist/components/form/engine/readFirstColors.js.map +1 -0
  108. package/dist/components/form/engine/rowFocus.d.ts +3 -9
  109. package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
  110. package/dist/components/form/engine/rowFocus.js +30 -19
  111. package/dist/components/form/engine/rowFocus.js.map +1 -1
  112. package/dist/components/form/engine/typeChoices.d.ts +1 -1
  113. package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -1
  114. package/dist/components/form/engine/variants/VariantCalmTable.js +2 -1
  115. package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -1
  116. package/dist/components/form/engine/variants/VariantCards.d.ts.map +1 -1
  117. package/dist/components/form/engine/variants/VariantCards.js +2 -1
  118. package/dist/components/form/engine/variants/VariantCards.js.map +1 -1
  119. package/dist/components/form/engine/variants/VariantFocus.js +1 -1
  120. package/dist/components/form/engine/variants/VariantFocus.js.map +1 -1
  121. package/dist/components/form/engine/variants/VariantMinimal.d.ts.map +1 -1
  122. package/dist/components/form/engine/variants/VariantMinimal.js +2 -1
  123. package/dist/components/form/engine/variants/VariantMinimal.js.map +1 -1
  124. package/dist/components/form/engine/variants/variantParts.d.ts +1 -1
  125. package/dist/components/form/engine/variants/variantParts.d.ts.map +1 -1
  126. package/dist/components/form/engine/variants/variantParts.js +25 -17
  127. package/dist/components/form/engine/variants/variantParts.js.map +1 -1
  128. package/dist/components/form/expressions/DpqlRendering.d.ts +1 -1
  129. package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -1
  130. package/dist/components/form/expressions/DpqlRendering.js +7 -6
  131. package/dist/components/form/expressions/DpqlRendering.js.map +1 -1
  132. package/dist/components/form/expressions/ExpressionField.d.ts +67 -3
  133. package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
  134. package/dist/components/form/expressions/ExpressionField.js +536 -114
  135. package/dist/components/form/expressions/ExpressionField.js.map +1 -1
  136. package/dist/components/form/expressions/argumentPresence.d.ts +14 -0
  137. package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -1
  138. package/dist/components/form/expressions/argumentPresence.js +16 -1
  139. package/dist/components/form/expressions/argumentPresence.js.map +1 -1
  140. package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
  141. package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
  142. package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
  143. package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
  144. package/dist/components/form/expressions/builder/argumentLabel.js +30 -11
  145. package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
  146. package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
  147. package/dist/components/form/expressions/builder/argumentWrapper.js +3 -1
  148. package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
  149. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts +9 -0
  150. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
  151. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +30 -27
  152. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -1
  153. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +1 -1
  154. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -1
  155. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +7 -5
  156. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
  157. package/dist/components/form/expressions/builder/index.d.ts +34 -2
  158. package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
  159. package/dist/components/form/expressions/builder/index.js +170 -80
  160. package/dist/components/form/expressions/builder/index.js.map +1 -1
  161. package/dist/components/form/expressions/builder/item.d.ts +6 -2
  162. package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
  163. package/dist/components/form/expressions/builder/item.js +19 -5
  164. package/dist/components/form/expressions/builder/item.js.map +1 -1
  165. package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
  166. package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
  167. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts +11 -0
  168. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts.map +1 -0
  169. package/dist/components/form/expressions/dpqlMockRecordPath.js +254 -0
  170. package/dist/components/form/expressions/dpqlMockRecordPath.js.map +1 -0
  171. package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
  172. package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
  173. package/dist/components/form/expressions/expressionOperands.js +97 -0
  174. package/dist/components/form/expressions/expressionOperands.js.map +1 -0
  175. package/dist/components/form/expressions/fieldPath.d.ts +24 -0
  176. package/dist/components/form/expressions/fieldPath.d.ts.map +1 -0
  177. package/dist/components/form/expressions/fieldPath.js +152 -0
  178. package/dist/components/form/expressions/fieldPath.js.map +1 -0
  179. package/dist/components/form/expressions/loneValue.d.ts +17 -0
  180. package/dist/components/form/expressions/loneValue.d.ts.map +1 -0
  181. package/dist/components/form/expressions/loneValue.js +33 -0
  182. package/dist/components/form/expressions/loneValue.js.map +1 -0
  183. package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
  184. package/dist/components/form/expressions/mockExpressions.js +22 -5
  185. package/dist/components/form/expressions/mockExpressions.js.map +1 -1
  186. package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
  187. package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
  188. package/dist/components/form/expressions/renderExpressionToText.js +37 -25
  189. package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
  190. package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
  191. package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
  192. package/dist/components/form/expressions/textOfExpression.js +49 -0
  193. package/dist/components/form/expressions/textOfExpression.js.map +1 -0
  194. package/dist/components/form/expressions/types.d.ts +12 -0
  195. package/dist/components/form/expressions/types.d.ts.map +1 -1
  196. package/dist/components/form/expressions/types.js +6 -1
  197. package/dist/components/form/expressions/types.js.map +1 -1
  198. package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
  199. package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
  200. package/dist/components/form/expressions/useExpressionType.js +181 -0
  201. package/dist/components/form/expressions/useExpressionType.js.map +1 -0
  202. package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
  203. package/dist/components/form/expressions/useRenderExpression.js +13 -9
  204. package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
  205. package/dist/components/form/expressions/wildcardExpressions.d.ts +27 -0
  206. package/dist/components/form/expressions/wildcardExpressions.d.ts.map +1 -0
  207. package/dist/components/form/expressions/wildcardExpressions.js +101 -0
  208. package/dist/components/form/expressions/wildcardExpressions.js.map +1 -0
  209. package/dist/components/form/fields/Field.d.ts.map +1 -1
  210. package/dist/components/form/fields/Field.js +39 -18
  211. package/dist/components/form/fields/Field.js.map +1 -1
  212. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts +0 -7
  213. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
  214. package/dist/components/form/fields/allowed-values/AllowedValues.js +46 -35
  215. package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
  216. package/dist/components/form/fields/allowed-values/choicePicture.d.ts +37 -0
  217. package/dist/components/form/fields/allowed-values/choicePicture.d.ts.map +1 -0
  218. package/dist/components/form/fields/allowed-values/choicePicture.js +64 -0
  219. package/dist/components/form/fields/allowed-values/choicePicture.js.map +1 -0
  220. package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
  221. package/dist/components/form/fields/array/ArrayAuto.js +24 -0
  222. package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
  223. package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
  224. package/dist/components/form/fields/array/ArrayAutoField.js +36 -13
  225. package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
  226. package/dist/components/form/fields/auto/AutoFormField.d.ts +30 -1
  227. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
  228. package/dist/components/form/fields/auto/AutoFormField.js +123 -79
  229. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
  230. package/dist/components/form/fields/auto/hostEditorValue.d.ts +30 -0
  231. package/dist/components/form/fields/auto/hostEditorValue.d.ts.map +1 -0
  232. package/dist/components/form/fields/auto/hostEditorValue.js +53 -0
  233. package/dist/components/form/fields/auto/hostEditorValue.js.map +1 -0
  234. package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
  235. package/dist/components/form/fields/binary/Binary.js +23 -3
  236. package/dist/components/form/fields/binary/Binary.js.map +1 -1
  237. package/dist/components/form/fields/boolean/Boolean.d.ts +5 -0
  238. package/dist/components/form/fields/boolean/Boolean.d.ts.map +1 -1
  239. package/dist/components/form/fields/boolean/Boolean.js +9 -1
  240. package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
  241. package/dist/components/form/fields/color/Color.d.ts +103 -16
  242. package/dist/components/form/fields/color/Color.d.ts.map +1 -1
  243. package/dist/components/form/fields/color/Color.js +616 -16
  244. package/dist/components/form/fields/color/Color.js.map +1 -1
  245. package/dist/components/form/fields/emittedValues.d.ts +34 -3
  246. package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
  247. package/dist/components/form/fields/emittedValues.js +24 -1
  248. package/dist/components/form/fields/emittedValues.js.map +1 -1
  249. package/dist/components/form/fields/file/File.d.ts +1 -1
  250. package/dist/components/form/fields/file/File.d.ts.map +1 -1
  251. package/dist/components/form/fields/file/File.js +4 -2
  252. package/dist/components/form/fields/file/File.js.map +1 -1
  253. package/dist/components/form/fields/long-string/LongString.d.ts +1 -7
  254. package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
  255. package/dist/components/form/fields/long-string/LongString.js +30 -13
  256. package/dist/components/form/fields/long-string/LongString.js.map +1 -1
  257. package/dist/components/form/fields/markdown/MarkdownView.js +1 -1
  258. package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
  259. package/dist/components/form/fields/multi-select/MultiSelectFormField.js +10 -7
  260. package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
  261. package/dist/components/form/fields/number/Number.d.ts +7 -4
  262. package/dist/components/form/fields/number/Number.d.ts.map +1 -1
  263. package/dist/components/form/fields/number/Number.js +45 -18
  264. package/dist/components/form/fields/number/Number.js.map +1 -1
  265. package/dist/components/form/fields/object/Object.d.ts +1 -1
  266. package/dist/components/form/fields/object/Object.d.ts.map +1 -1
  267. package/dist/components/form/fields/object/Object.js +4 -2
  268. package/dist/components/form/fields/object/Object.js.map +1 -1
  269. package/dist/components/form/fields/pendingEdit.d.ts +52 -0
  270. package/dist/components/form/fields/pendingEdit.d.ts.map +1 -0
  271. package/dist/components/form/fields/pendingEdit.js +79 -0
  272. package/dist/components/form/fields/pendingEdit.js.map +1 -0
  273. package/dist/components/form/fields/radio-group/RadioGroup.d.ts.map +1 -1
  274. package/dist/components/form/fields/radio-group/RadioGroup.js +8 -13
  275. package/dist/components/form/fields/radio-group/RadioGroup.js.map +1 -1
  276. package/dist/components/form/fields/rich-text/RichText.d.ts +20 -1
  277. package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
  278. package/dist/components/form/fields/rich-text/RichText.js +426 -91
  279. package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
  280. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts +18 -0
  281. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts.map +1 -0
  282. package/dist/components/form/fields/rich-text/useTemplateTags.js +80 -0
  283. package/dist/components/form/fields/rich-text/useTemplateTags.js.map +1 -0
  284. package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -1
  285. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +4 -1
  286. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -1
  287. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -1
  288. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +20 -5
  289. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -1
  290. package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -1
  291. package/dist/components/form/fields/schema-definition/TableEditor.js +10 -2
  292. package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -1
  293. package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -1
  294. package/dist/components/form/fields/schema-definition/index.js +8 -4
  295. package/dist/components/form/fields/schema-definition/index.js.map +1 -1
  296. package/dist/components/form/fields/select/Select.d.ts +10 -1
  297. package/dist/components/form/fields/select/Select.d.ts.map +1 -1
  298. package/dist/components/form/fields/select/Select.js +28 -14
  299. package/dist/components/form/fields/select/Select.js.map +1 -1
  300. package/dist/components/form/fields/select/SelectCollection.d.ts +5 -0
  301. package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
  302. package/dist/components/form/fields/select/SelectCollection.js +25 -12
  303. package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
  304. package/dist/components/form/fields/select/unavailableRow.d.ts +23 -0
  305. package/dist/components/form/fields/select/unavailableRow.d.ts.map +1 -0
  306. package/dist/components/form/fields/select/unavailableRow.js +55 -0
  307. package/dist/components/form/fields/select/unavailableRow.js.map +1 -0
  308. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +11 -5
  309. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
  310. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +21 -5
  311. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
  312. package/dist/components/form/fields/template/TemplateBrowser.d.ts +16 -0
  313. package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
  314. package/dist/components/form/fields/template/TemplateBrowser.js +89 -0
  315. package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
  316. package/dist/components/form/fields/template/TemplateField.d.ts +105 -1
  317. package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
  318. package/dist/components/form/fields/template/TemplateField.js +706 -168
  319. package/dist/components/form/fields/template/TemplateField.js.map +1 -1
  320. package/dist/components/form/fields/template/TemplatePicker.d.ts +54 -0
  321. package/dist/components/form/fields/template/TemplatePicker.d.ts.map +1 -0
  322. package/dist/components/form/fields/template/TemplatePicker.js +459 -0
  323. package/dist/components/form/fields/template/TemplatePicker.js.map +1 -0
  324. package/dist/components/form/fields/template/TemplateText.d.ts +0 -17
  325. package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -1
  326. package/dist/components/form/fields/template/TemplateText.js +22 -16
  327. package/dist/components/form/fields/template/TemplateText.js.map +1 -1
  328. package/dist/components/form/fields/template/referenceNames.d.ts +63 -0
  329. package/dist/components/form/fields/template/referenceNames.d.ts.map +1 -0
  330. package/dist/components/form/fields/template/referenceNames.js +69 -0
  331. package/dist/components/form/fields/template/referenceNames.js.map +1 -0
  332. package/dist/components/form/fields/template/writtenAsText.d.ts +61 -0
  333. package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
  334. package/dist/components/form/fields/template/writtenAsText.js +204 -0
  335. package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
  336. package/dist/components/form/index.d.ts +12 -2
  337. package/dist/components/form/index.d.ts.map +1 -1
  338. package/dist/components/form/index.js +25 -3
  339. package/dist/components/form/index.js.map +1 -1
  340. package/dist/components/form/typeSentenceForm.d.ts +17 -0
  341. package/dist/components/form/typeSentenceForm.d.ts.map +1 -0
  342. package/dist/components/form/typeSentenceForm.js +54 -0
  343. package/dist/components/form/typeSentenceForm.js.map +1 -0
  344. package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
  345. package/dist/components/imageLightbox/ImageLightbox.js +19 -9
  346. package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
  347. package/dist/components/log/Log.d.ts.map +1 -1
  348. package/dist/components/log/Log.js +20 -8
  349. package/dist/components/log/Log.js.map +1 -1
  350. package/dist/components/menu/Menu.d.ts.map +1 -1
  351. package/dist/components/menu/Menu.js +19 -10
  352. package/dist/components/menu/Menu.js.map +1 -1
  353. package/dist/components/smartEditor/CompletionMenu.d.ts +53 -0
  354. package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
  355. package/dist/components/smartEditor/CompletionMenu.js +302 -0
  356. package/dist/components/smartEditor/CompletionMenu.js.map +1 -0
  357. package/dist/components/smartEditor/MarkdownDoc.d.ts +1 -1
  358. package/dist/components/smartEditor/MarkdownDoc.js +3 -3
  359. package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
  360. package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
  361. package/dist/components/smartEditor/SmartEditor.js +616 -190
  362. package/dist/components/smartEditor/SmartEditor.js.map +1 -1
  363. package/dist/components/smartEditor/completionStyle.d.ts +28 -0
  364. package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
  365. package/dist/components/smartEditor/completionStyle.js +79 -0
  366. package/dist/components/smartEditor/completionStyle.js.map +1 -0
  367. package/dist/components/smartEditor/contextTitle.d.ts +10 -0
  368. package/dist/components/smartEditor/contextTitle.d.ts.map +1 -0
  369. package/dist/components/smartEditor/contextTitle.js +21 -0
  370. package/dist/components/smartEditor/contextTitle.js.map +1 -0
  371. package/dist/components/smartEditor/editingAids.d.ts +64 -0
  372. package/dist/components/smartEditor/editingAids.d.ts.map +1 -0
  373. package/dist/components/smartEditor/editingAids.js +213 -0
  374. package/dist/components/smartEditor/editingAids.js.map +1 -0
  375. package/dist/components/smartEditor/index.d.ts +6 -1
  376. package/dist/components/smartEditor/index.d.ts.map +1 -1
  377. package/dist/components/smartEditor/index.js +19 -1
  378. package/dist/components/smartEditor/index.js.map +1 -1
  379. package/dist/components/smartEditor/templateCompletions.d.ts +98 -0
  380. package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
  381. package/dist/components/smartEditor/templateCompletions.js +380 -0
  382. package/dist/components/smartEditor/templateCompletions.js.map +1 -0
  383. package/dist/components/smartEditor/typedReferences.d.ts +34 -0
  384. package/dist/components/smartEditor/typedReferences.d.ts.map +1 -0
  385. package/dist/components/smartEditor/typedReferences.js +179 -0
  386. package/dist/components/smartEditor/typedReferences.js.map +1 -0
  387. package/dist/components/smartEditor/types.d.ts +116 -2
  388. package/dist/components/smartEditor/types.d.ts.map +1 -1
  389. package/dist/components/smartEditor/useEditingAids.d.ts +38 -0
  390. package/dist/components/smartEditor/useEditingAids.d.ts.map +1 -0
  391. package/dist/components/smartEditor/useEditingAids.js +392 -0
  392. package/dist/components/smartEditor/useEditingAids.js.map +1 -0
  393. package/dist/components/smartEditor/useLspAutocomplete.d.ts +106 -3
  394. package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
  395. package/dist/components/smartEditor/useLspAutocomplete.js +592 -149
  396. package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
  397. package/dist/components/smartEditor/useLspHover.d.ts +33 -7
  398. package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
  399. package/dist/components/smartEditor/useLspHover.js +364 -35
  400. package/dist/components/smartEditor/useLspHover.js.map +1 -1
  401. package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
  402. package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
  403. package/dist/components/smartEditor/useLspSession.d.ts +6 -0
  404. package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
  405. package/dist/components/smartEditor/useLspSession.js +7 -6
  406. package/dist/components/smartEditor/useLspSession.js.map +1 -1
  407. package/dist/components/smartEditor/useLspSignatureHelp.d.ts.map +1 -1
  408. package/dist/components/smartEditor/useLspSignatureHelp.js +6 -11
  409. package/dist/components/smartEditor/useLspSignatureHelp.js.map +1 -1
  410. package/dist/components/smartEditor/useTabCameIn.d.ts +10 -0
  411. package/dist/components/smartEditor/useTabCameIn.d.ts.map +1 -0
  412. package/dist/components/smartEditor/useTabCameIn.js +42 -0
  413. package/dist/components/smartEditor/useTabCameIn.js.map +1 -0
  414. package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -1
  415. package/dist/components/supportTicket/AttachmentChips.js +15 -5
  416. package/dist/components/supportTicket/AttachmentChips.js.map +1 -1
  417. package/dist/components/supportTicket/InterfaceReferenceTags.d.ts +2 -3
  418. package/dist/components/supportTicket/InterfaceReferenceTags.d.ts.map +1 -1
  419. package/dist/components/supportTicket/InterfaceReferenceTags.js.map +1 -1
  420. package/dist/components/supportTicket/ReferencePicker.d.ts +9 -3
  421. package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
  422. package/dist/components/supportTicket/ReferencePicker.js +38 -23
  423. package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
  424. package/dist/components/supportTicket/TicketHeader.d.ts +3 -4
  425. package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
  426. package/dist/components/supportTicket/TicketHeader.js +21 -6
  427. package/dist/components/supportTicket/TicketHeader.js.map +1 -1
  428. package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
  429. package/dist/components/supportTicket/TicketReplyBox.d.ts.map +1 -1
  430. package/dist/components/supportTicket/TicketReplyBox.js +10 -29
  431. package/dist/components/supportTicket/TicketReplyBox.js.map +1 -1
  432. package/dist/components/supportTicket/useLoadedImages.d.ts +0 -10
  433. package/dist/components/supportTicket/useLoadedImages.d.ts.map +1 -1
  434. package/dist/components/supportTicket/useLoadedImages.js +1 -63
  435. package/dist/components/supportTicket/useLoadedImages.js.map +1 -1
  436. package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
  437. package/dist/components/ticketReferences/TicketReferences.js +10 -9
  438. package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
  439. package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
  440. package/dist/components/ticketThread/TicketThread.js +52 -21
  441. package/dist/components/ticketThread/TicketThread.js.map +1 -1
  442. package/dist/helpers/allowedValues.d.ts +21 -12
  443. package/dist/helpers/allowedValues.d.ts.map +1 -1
  444. package/dist/helpers/allowedValues.js +40 -20
  445. package/dist/helpers/allowedValues.js.map +1 -1
  446. package/dist/helpers/descriptionTooltip.d.ts +46 -0
  447. package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
  448. package/dist/helpers/descriptionTooltip.js +76 -0
  449. package/dist/helpers/descriptionTooltip.js.map +1 -0
  450. package/dist/helpers/domProps.d.ts +5 -0
  451. package/dist/helpers/domProps.d.ts.map +1 -0
  452. package/dist/helpers/domProps.js +47 -0
  453. package/dist/helpers/domProps.js.map +1 -0
  454. package/dist/helpers/expressions.d.ts +115 -4
  455. package/dist/helpers/expressions.d.ts.map +1 -1
  456. package/dist/helpers/expressions.js +247 -29
  457. package/dist/helpers/expressions.js.map +1 -1
  458. package/dist/helpers/hoveringPointer.d.ts +26 -0
  459. package/dist/helpers/hoveringPointer.d.ts.map +1 -0
  460. package/dist/helpers/hoveringPointer.js +29 -0
  461. package/dist/helpers/hoveringPointer.js.map +1 -0
  462. package/dist/helpers/markdownText.d.ts +14 -0
  463. package/dist/helpers/markdownText.d.ts.map +1 -0
  464. package/dist/helpers/markdownText.js +160 -0
  465. package/dist/helpers/markdownText.js.map +1 -0
  466. package/dist/helpers/noDescription.d.ts +9 -0
  467. package/dist/helpers/noDescription.d.ts.map +1 -0
  468. package/dist/helpers/noDescription.js +13 -0
  469. package/dist/helpers/noDescription.js.map +1 -0
  470. package/dist/helpers/optionUiTypes.d.ts +2 -2
  471. package/dist/helpers/qorusTypeCatalogue.d.ts +147 -0
  472. package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
  473. package/dist/helpers/qorusTypeCatalogue.js +505 -0
  474. package/dist/helpers/qorusTypeCatalogue.js.map +1 -0
  475. package/dist/helpers/readableColors.d.ts +36 -0
  476. package/dist/helpers/readableColors.d.ts.map +1 -0
  477. package/dist/helpers/readableColors.js +116 -0
  478. package/dist/helpers/readableColors.js.map +1 -0
  479. package/dist/helpers/recordFieldReference.d.ts +15 -0
  480. package/dist/helpers/recordFieldReference.d.ts.map +1 -0
  481. package/dist/helpers/recordFieldReference.js +89 -0
  482. package/dist/helpers/recordFieldReference.js.map +1 -0
  483. package/dist/helpers/singleLineString.d.ts.map +1 -1
  484. package/dist/helpers/singleLineString.js +0 -1
  485. package/dist/helpers/singleLineString.js.map +1 -1
  486. package/dist/helpers/templateCatalogue.d.ts +104 -0
  487. package/dist/helpers/templateCatalogue.d.ts.map +1 -0
  488. package/dist/helpers/templateCatalogue.js +116 -0
  489. package/dist/helpers/templateCatalogue.js.map +1 -0
  490. package/dist/helpers/templateCatalogueContext.d.ts +19 -0
  491. package/dist/helpers/templateCatalogueContext.d.ts.map +1 -0
  492. package/dist/helpers/templateCatalogueContext.js +31 -0
  493. package/dist/helpers/templateCatalogueContext.js.map +1 -0
  494. package/dist/helpers/templateItems.d.ts +2 -2
  495. package/dist/helpers/templateItems.d.ts.map +1 -1
  496. package/dist/helpers/templateItems.js +6 -4
  497. package/dist/helpers/templateItems.js.map +1 -1
  498. package/dist/helpers/templateText.d.ts +1 -0
  499. package/dist/helpers/templateText.d.ts.map +1 -1
  500. package/dist/helpers/templateText.js +7 -3
  501. package/dist/helpers/templateText.js.map +1 -1
  502. package/dist/helpers/templateTree.d.ts +248 -0
  503. package/dist/helpers/templateTree.d.ts.map +1 -0
  504. package/dist/helpers/templateTree.js +892 -0
  505. package/dist/helpers/templateTree.js.map +1 -0
  506. package/dist/helpers/templateType.d.ts +28 -0
  507. package/dist/helpers/templateType.d.ts.map +1 -0
  508. package/dist/helpers/templateType.js +30 -0
  509. package/dist/helpers/templateType.js.map +1 -0
  510. package/dist/helpers/templates.d.ts +86 -16
  511. package/dist/helpers/templates.d.ts.map +1 -1
  512. package/dist/helpers/templates.js +305 -45
  513. package/dist/helpers/templates.js.map +1 -1
  514. package/dist/helpers/validations.d.ts +27 -0
  515. package/dist/helpers/validations.d.ts.map +1 -1
  516. package/dist/helpers/validations.js +169 -39
  517. package/dist/helpers/validations.js.map +1 -1
  518. package/dist/helpers/webLink.d.ts +8 -0
  519. package/dist/helpers/webLink.d.ts.map +1 -0
  520. package/dist/helpers/webLink.js +29 -0
  521. package/dist/helpers/webLink.js.map +1 -0
  522. package/dist/hooks/useQorusTypes.d.ts +12 -17
  523. package/dist/hooks/useQorusTypes.d.ts.map +1 -1
  524. package/dist/hooks/useQorusTypes.js +44 -172
  525. package/dist/hooks/useQorusTypes.js.map +1 -1
  526. package/dist/hooks/useReadableIntentShade.d.ts +9 -0
  527. package/dist/hooks/useReadableIntentShade.d.ts.map +1 -0
  528. package/dist/hooks/useReadableIntentShade.js +23 -0
  529. package/dist/hooks/useReadableIntentShade.js.map +1 -0
  530. package/dist/hooks/useReadableOpacity.d.ts +6 -0
  531. package/dist/hooks/useReadableOpacity.d.ts.map +1 -0
  532. package/dist/hooks/useReadableOpacity.js +17 -0
  533. package/dist/hooks/useReadableOpacity.js.map +1 -0
  534. package/dist/index.d.ts +8 -0
  535. package/dist/index.d.ts.map +1 -1
  536. package/dist/index.js +24 -1
  537. package/dist/index.js.map +1 -1
  538. package/dist/tracking/ui/ExperimentCard.d.ts +1 -1
  539. package/dist/tracking/ui/ExperimentCard.d.ts.map +1 -1
  540. package/dist/tracking/ui/ExperimentCard.js +26 -10
  541. package/dist/tracking/ui/ExperimentCard.js.map +1 -1
  542. package/dist/tracking/ui/card.d.ts +2 -2
  543. package/dist/tracking/ui/card.d.ts.map +1 -1
  544. package/dist/tracking/ui/card.js +2 -2
  545. package/dist/tracking/ui/card.js.map +1 -1
  546. package/dist/tracking/ui/readable.d.ts +14 -0
  547. package/dist/tracking/ui/readable.d.ts.map +1 -0
  548. package/dist/tracking/ui/readable.js +60 -0
  549. package/dist/tracking/ui/readable.js.map +1 -0
  550. package/dist/utils/fetch.d.ts +9 -2
  551. package/dist/utils/fetch.d.ts.map +1 -1
  552. package/dist/utils/fetch.js +6 -5
  553. package/dist/utils/fetch.js.map +1 -1
  554. package/dist/utils/lspClient.types.d.ts +2 -0
  555. package/dist/utils/lspClient.types.d.ts.map +1 -1
  556. package/dist/utils/websocket.d.ts +65 -2
  557. package/dist/utils/websocket.d.ts.map +1 -1
  558. package/dist/utils/websocket.js +276 -44
  559. package/dist/utils/websocket.js.map +1 -1
  560. package/package.json +14 -6
  561. package/.claude/CLAUDE.md +0 -317
  562. package/.tasks/EXPORT_EXPRESSION_BUILDER.md +0 -38
  563. package/.tasks/EXPRESSION_BUILDER_REPORT.md +0 -149
  564. package/.tasks/EXPRESSION_FIELD_SEAMS.md +0 -66
  565. package/.tasks/FIELD_STACK_REPORT.md +0 -234
  566. package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +0 -558
  567. package/.tasks/FORM_ENGINE_EXPRESSIONS.md +0 -197
  568. package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +0 -95
  569. package/.tasks/FORM_FIELD_EXTRAS.md +0 -72
  570. package/.tasks/INDEX.md +0 -111
  571. package/.tasks/LSP_SHARED_CONNECTION.md +0 -75
  572. package/.tasks/QONSOLE_ASSIST_FEATURES.md +0 -306
  573. package/.tasks/RENDER_EXPRESSION_LSP.md +0 -159
  574. package/.tasks/REQRAFT_AUTO_FIELD.md +0 -176
  575. package/.tasks/SCHEMA_DEFINITION_FIELD.md +0 -250
  576. package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +0 -340
  577. package/.tasks/SMART_EDITOR_LSP_FEATURES.md +0 -299
  578. package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +0 -280
  579. package/.tasks/SMART_EDITOR_UX_POLISH.md +0 -383
  580. package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +0 -246
  581. package/.tasks/STORY_NETWORK_ISOLATION.md +0 -98
  582. package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +0 -72
  583. package/CODE_OF_CONDUCT.md +0 -105
  584. package/CONTRIBUTING.MD +0 -78
  585. package/SECURITY.md +0 -3
  586. package/chromatic.config.json +0 -5
  587. package/design/COMPACT_ENGINE_REDESIGN.md +0 -156
  588. package/design/COMPACT_INFO_DISPLAY.md +0 -87
  589. package/design/COMPACT_PARITY.md +0 -85
  590. package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +0 -92
  591. package/design/FORM_ENGINE_COMPACT.md +0 -300
  592. package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +0 -353
  593. package/design/FORM_ENGINE_EXPRESSIONS.md +0 -257
  594. package/design/FORM_ENGINE_FIELD_MIGRATION.md +0 -419
  595. package/design/IDE_INTEGRATION.md +0 -64
  596. package/design/RENDER_EXPRESSION_TRANSPORT.md +0 -156
  597. package/design/SELECT_DIALOG_FLOOR.md +0 -86
  598. package/design/SMART_EDITOR_UX.md +0 -438
  599. package/design/TRACKING.md +0 -290
  600. package/design/UNAVAILABLE_ALLOWED_VALUES.md +0 -226
  601. package/dist/components/form/engine/formAppearance.d.ts +0 -49
  602. package/dist/components/form/engine/formAppearance.d.ts.map +0 -1
  603. package/dist/components/form/engine/formAppearance.js +0 -50
  604. package/dist/components/form/engine/formAppearance.js.map +0 -1
  605. package/dist/components/form/fields/ChoiceGroupHeading.d.ts +0 -21
  606. package/dist/components/form/fields/ChoiceGroupHeading.d.ts.map +0 -1
  607. package/dist/components/form/fields/ChoiceGroupHeading.js +0 -33
  608. package/dist/components/form/fields/ChoiceGroupHeading.js.map +0 -1
  609. package/dist/components/form/fields/allowed-values/savedValues.d.ts +0 -30
  610. package/dist/components/form/fields/allowed-values/savedValues.d.ts.map +0 -1
  611. package/dist/components/form/fields/allowed-values/savedValues.js +0 -39
  612. package/dist/components/form/fields/allowed-values/savedValues.js.map +0 -1
  613. package/dist/helpers/fieldDescription.d.ts +0 -16
  614. package/dist/helpers/fieldDescription.d.ts.map +0 -1
  615. package/dist/helpers/fieldDescription.js +0 -40
  616. package/dist/helpers/fieldDescription.js.map +0 -1
  617. package/src/components/Description/index.tsx +0 -254
  618. package/src/components/Description/markdownRendererContext.tsx +0 -29
  619. package/src/components/FocusedEditing/index.tsx +0 -50
  620. package/src/components/codeSize/index.tsx +0 -79
  621. package/src/components/composer/Composer.stories.tsx +0 -238
  622. package/src/components/composer/Composer.tsx +0 -554
  623. package/src/components/composer/helpers.ts +0 -74
  624. package/src/components/composer/index.ts +0 -2
  625. package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -1183
  626. package/src/components/dpqlEditor/DpqlEditor.tsx +0 -219
  627. package/src/components/dpqlEditor/dpqlHelpers.ts +0 -287
  628. package/src/components/dpqlEditor/dpqlInserter.ts +0 -121
  629. package/src/components/dpqlEditor/dpqlProbe.ts +0 -165
  630. package/src/components/dpqlEditor/dpqlTags.ts +0 -114
  631. package/src/components/dpqlEditor/index.ts +0 -41
  632. package/src/components/dpqlEditor/types.ts +0 -203
  633. package/src/components/dpqlEditor/useDpqlProbe.ts +0 -33
  634. package/src/components/dpqlEditor/useDpqlSession.ts +0 -411
  635. package/src/components/form/engine/CompactRow.tsx +0 -2740
  636. package/src/components/form/engine/CompactToolbar.tsx +0 -399
  637. package/src/components/form/engine/FormEngine.stories.tsx +0 -9934
  638. package/src/components/form/engine/FormEngine.tsx +0 -4891
  639. package/src/components/form/engine/FormEngineAppearance.stories.tsx +0 -609
  640. package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
  641. package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -335
  642. package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
  643. package/src/components/form/engine/OptionFieldMessages.tsx +0 -548
  644. package/src/components/form/engine/OptionsHelpDialog.tsx +0 -29
  645. package/src/components/form/engine/__fixtures__/basicFormOptions.ts +0 -309
  646. package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +0 -45
  647. package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +0 -233
  648. package/src/components/form/engine/_structuredData/SchemaDataView.tsx +0 -755
  649. package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +0 -85
  650. package/src/components/form/engine/_structuredData/StructuredDataView.tsx +0 -75
  651. package/src/components/form/engine/_structuredData/structuredData.ts +0 -145
  652. package/src/components/form/engine/compactRowContext.ts +0 -153
  653. package/src/components/form/engine/compactRowStyles.ts +0 -1087
  654. package/src/components/form/engine/compactToolbarContext.ts +0 -72
  655. package/src/components/form/engine/formAppearance.ts +0 -79
  656. package/src/components/form/engine/optionActions.ts +0 -128
  657. package/src/components/form/engine/optionsContext.ts +0 -24
  658. package/src/components/form/engine/readFirst.ts +0 -1090
  659. package/src/components/form/engine/rendererTypes.ts +0 -107
  660. package/src/components/form/engine/revealRow.ts +0 -123
  661. package/src/components/form/engine/rowFocus.ts +0 -112
  662. package/src/components/form/engine/rowMenuContext.ts +0 -159
  663. package/src/components/form/engine/rowOpenPicker.ts +0 -27
  664. package/src/components/form/engine/typeChoices.ts +0 -63
  665. package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +0 -159
  666. package/src/components/form/engine/variants/VariantCalmTable.tsx +0 -244
  667. package/src/components/form/engine/variants/VariantCards.tsx +0 -212
  668. package/src/components/form/engine/variants/VariantFocus.tsx +0 -382
  669. package/src/components/form/engine/variants/VariantMinimal.tsx +0 -170
  670. package/src/components/form/engine/variants/focusDemo.ts +0 -145
  671. package/src/components/form/engine/variants/variantModel.ts +0 -223
  672. package/src/components/form/engine/variants/variantParts.tsx +0 -313
  673. package/src/components/form/expressions/DpqlRendering.tsx +0 -85
  674. package/src/components/form/expressions/ExpressionField.stories.tsx +0 -1395
  675. package/src/components/form/expressions/ExpressionField.tsx +0 -503
  676. package/src/components/form/expressions/argumentPresence.ts +0 -213
  677. package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +0 -1683
  678. package/src/components/form/expressions/builder/argumentDetail.tsx +0 -17
  679. package/src/components/form/expressions/builder/argumentLabel.tsx +0 -146
  680. package/src/components/form/expressions/builder/argumentSlot.tsx +0 -101
  681. package/src/components/form/expressions/builder/argumentWrapper.tsx +0 -243
  682. package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +0 -120
  683. package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +0 -69
  684. package/src/components/form/expressions/builder/index.tsx +0 -1545
  685. package/src/components/form/expressions/builder/item.tsx +0 -89
  686. package/src/components/form/expressions/builder/moveToPositionStrip.tsx +0 -156
  687. package/src/components/form/expressions/builder/renderTemplate.tsx +0 -42
  688. package/src/components/form/expressions/dpqlMockLanguage.ts +0 -566
  689. package/src/components/form/expressions/dpqlMockLsp.ts +0 -126
  690. package/src/components/form/expressions/mockExpressions.ts +0 -317
  691. package/src/components/form/expressions/renderExpressionToText.ts +0 -152
  692. package/src/components/form/expressions/types.ts +0 -110
  693. package/src/components/form/expressions/useExpressions.ts +0 -101
  694. package/src/components/form/expressions/useRenderExpression.ts +0 -165
  695. package/src/components/form/fields/ChoiceGroupHeading.tsx +0 -38
  696. package/src/components/form/fields/Field.stories.tsx +0 -143
  697. package/src/components/form/fields/Field.tsx +0 -734
  698. package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -321
  699. package/src/components/form/fields/allowed-values/savedValues.ts +0 -64
  700. package/src/components/form/fields/array/ArrayAuto.tsx +0 -237
  701. package/src/components/form/fields/array/ArrayAutoField.stories.tsx +0 -475
  702. package/src/components/form/fields/array/ArrayAutoField.tsx +0 -367
  703. package/src/components/form/fields/auto/AutoFormField.stories.tsx +0 -825
  704. package/src/components/form/fields/auto/AutoFormField.tsx +0 -1183
  705. package/src/components/form/fields/binary/Binary.stories.tsx +0 -122
  706. package/src/components/form/fields/binary/Binary.tsx +0 -91
  707. package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -125
  708. package/src/components/form/fields/boolean/Boolean.tsx +0 -34
  709. package/src/components/form/fields/byte-size/ByteSize.stories.tsx +0 -87
  710. package/src/components/form/fields/byte-size/ByteSize.tsx +0 -58
  711. package/src/components/form/fields/color/Color.stories.tsx +0 -99
  712. package/src/components/form/fields/color/Color.tsx +0 -46
  713. package/src/components/form/fields/cron/Cron.stories.tsx +0 -68
  714. package/src/components/form/fields/cron/Cron.tsx +0 -80
  715. package/src/components/form/fields/date/Date.stories.tsx +0 -77
  716. package/src/components/form/fields/date/Date.tsx +0 -55
  717. package/src/components/form/fields/emittedValues.ts +0 -70
  718. package/src/components/form/fields/file/File.stories.tsx +0 -161
  719. package/src/components/form/fields/file/File.tsx +0 -227
  720. package/src/components/form/fields/long-string/LongString.stories.tsx +0 -147
  721. package/src/components/form/fields/long-string/LongString.tsx +0 -141
  722. package/src/components/form/fields/markdown/Markdown.stories.tsx +0 -76
  723. package/src/components/form/fields/markdown/Markdown.tsx +0 -81
  724. package/src/components/form/fields/markdown/MarkdownView.tsx +0 -222
  725. package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +0 -140
  726. package/src/components/form/fields/number/Number.stories.tsx +0 -159
  727. package/src/components/form/fields/number/Number.tsx +0 -175
  728. package/src/components/form/fields/object/Object.stories.tsx +0 -398
  729. package/src/components/form/fields/object/Object.tsx +0 -255
  730. package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +0 -95
  731. package/src/components/form/fields/radio-group/RadioGroup.tsx +0 -52
  732. package/src/components/form/fields/radio-group/images/java-96x128.png +0 -0
  733. package/src/components/form/fields/radio-group/images/python-129x128.png +0 -0
  734. package/src/components/form/fields/radio-group/images/qore-106x128.png +0 -0
  735. package/src/components/form/fields/rich-text/RichText.stories.tsx +0 -260
  736. package/src/components/form/fields/rich-text/RichText.tsx +0 -537
  737. package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +0 -242
  738. package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +0 -758
  739. package/src/components/form/fields/schema-definition/Hint.tsx +0 -22
  740. package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +0 -138
  741. package/src/components/form/fields/schema-definition/Loader.tsx +0 -20
  742. package/src/components/form/fields/schema-definition/MigrationsTab.tsx +0 -187
  743. package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +0 -286
  744. package/src/components/form/fields/schema-definition/TableEditor.tsx +0 -155
  745. package/src/components/form/fields/schema-definition/TablesTab.tsx +0 -138
  746. package/src/components/form/fields/schema-definition/catalog.ts +0 -237
  747. package/src/components/form/fields/schema-definition/helpers.ts +0 -90
  748. package/src/components/form/fields/schema-definition/index.tsx +0 -418
  749. package/src/components/form/fields/schema-definition/mockCatalog.ts +0 -325
  750. package/src/components/form/fields/schema-definition/mockDefinition.ts +0 -111
  751. package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +0 -152
  752. package/src/components/form/fields/schema-definition/starterTemplate.ts +0 -68
  753. package/src/components/form/fields/schema-definition/types.ts +0 -185
  754. package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +0 -49
  755. package/src/components/form/fields/select/Select.stories.tsx +0 -872
  756. package/src/components/form/fields/select/Select.tsx +0 -624
  757. package/src/components/form/fields/select/SelectCollection.tsx +0 -594
  758. package/src/components/form/fields/string/String.stories.tsx +0 -86
  759. package/src/components/form/fields/string/String.tsx +0 -43
  760. package/src/components/form/fields/template/ExampleValueModal.stories.tsx +0 -114
  761. package/src/components/form/fields/template/ExampleValueModal.tsx +0 -99
  762. package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +0 -47
  763. package/src/components/form/fields/template/TemplateField.stories.tsx +0 -1121
  764. package/src/components/form/fields/template/TemplateField.tsx +0 -1749
  765. package/src/components/form/fields/template/TemplateText.tsx +0 -115
  766. package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +0 -7
  767. package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +0 -147
  768. package/src/components/form/fields/template/__fixtures__/templates.json +0 -83
  769. package/src/components/form/fields/timeout/Timeout.stories.tsx +0 -228
  770. package/src/components/form/fields/timeout/Timeout.tsx +0 -87
  771. package/src/components/form/fields/url/Url.stories.tsx +0 -94
  772. package/src/components/form/fields/url/Url.tsx +0 -85
  773. package/src/components/form/index.tsx +0 -49
  774. package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
  775. package/src/components/imageLightbox/ImageLightbox.tsx +0 -238
  776. package/src/components/imageLightbox/index.ts +0 -1
  777. package/src/components/log/Log.stories.tsx +0 -333
  778. package/src/components/log/Log.tsx +0 -285
  779. package/src/components/menu/Menu.stories.tsx +0 -155
  780. package/src/components/menu/Menu.tsx +0 -312
  781. package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +0 -797
  782. package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +0 -105
  783. package/src/components/qonsoleSmartInput/index.ts +0 -16
  784. package/src/components/qonsoleSmartInput/qonsoleInserter.ts +0 -77
  785. package/src/components/qonsoleSmartInput/types.ts +0 -133
  786. package/src/components/qonsoleSmartInput/useQonsoleSession.ts +0 -124
  787. package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +0 -62
  788. package/src/components/searchFilterBar/SearchFilterBar.tsx +0 -144
  789. package/src/components/searchFilterBar/index.ts +0 -1
  790. package/src/components/smartEditor/MarkdownDoc.tsx +0 -190
  791. package/src/components/smartEditor/SmartEditor.stories.tsx +0 -475
  792. package/src/components/smartEditor/SmartEditor.tsx +0 -808
  793. package/src/components/smartEditor/__fixtures__/mockLspServer.ts +0 -205
  794. package/src/components/smartEditor/helpers.ts +0 -217
  795. package/src/components/smartEditor/index.ts +0 -35
  796. package/src/components/smartEditor/styling.ts +0 -45
  797. package/src/components/smartEditor/types.ts +0 -211
  798. package/src/components/smartEditor/useLspAutocomplete.ts +0 -758
  799. package/src/components/smartEditor/useLspDiagnosticDecorations.ts +0 -125
  800. package/src/components/smartEditor/useLspHover.ts +0 -230
  801. package/src/components/smartEditor/useLspSemanticTokens.ts +0 -298
  802. package/src/components/smartEditor/useLspSession.ts +0 -231
  803. package/src/components/smartEditor/useLspSignatureHelp.ts +0 -198
  804. package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -171
  805. package/src/components/supportTicket/AttachmentChips.tsx +0 -147
  806. package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -257
  807. package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -130
  808. package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -580
  809. package/src/components/supportTicket/ReferencePicker.tsx +0 -573
  810. package/src/components/supportTicket/TicketConversation.stories.tsx +0 -120
  811. package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
  812. package/src/components/supportTicket/TicketHeader.tsx +0 -248
  813. package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
  814. package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
  815. package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -357
  816. package/src/components/supportTicket/TicketReplyBox.tsx +0 -172
  817. package/src/components/supportTicket/__fixtures__/kindMarks.ts +0 -28
  818. package/src/components/supportTicket/attachmentAccess.ts +0 -97
  819. package/src/components/supportTicket/fileToAttachment.ts +0 -24
  820. package/src/components/supportTicket/index.ts +0 -10
  821. package/src/components/supportTicket/meta.ts +0 -206
  822. package/src/components/supportTicket/ticketModel.ts +0 -131
  823. package/src/components/supportTicket/useLoadedImages.ts +0 -93
  824. package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -341
  825. package/src/components/ticketReferences/TicketReferences.tsx +0 -914
  826. package/src/components/ticketReferences/index.ts +0 -2
  827. package/src/components/ticketThread/TicketThread.stories.tsx +0 -898
  828. package/src/components/ticketThread/TicketThread.tsx +0 -706
  829. package/src/components/ticketThread/index.ts +0 -6
  830. package/src/contexts/FetchContext.tsx +0 -25
  831. package/src/contexts/ReqraftContext.tsx +0 -9
  832. package/src/contexts/StorageContext.tsx +0 -33
  833. package/src/global.d.ts +0 -4
  834. package/src/helpers/allowedValues.ts +0 -268
  835. package/src/helpers/choiceChip.ts +0 -227
  836. package/src/helpers/common.ts +0 -326
  837. package/src/helpers/dpqlDetection.ts +0 -209
  838. package/src/helpers/expressions.ts +0 -140
  839. package/src/helpers/fieldDescription.ts +0 -39
  840. package/src/helpers/optionUiTypes.ts +0 -199
  841. package/src/helpers/options.ts +0 -150
  842. package/src/helpers/providerValue.ts +0 -125
  843. package/src/helpers/scrollbar.ts +0 -32
  844. package/src/helpers/singleLineString.ts +0 -62
  845. package/src/helpers/templateItems.ts +0 -81
  846. package/src/helpers/templateText.ts +0 -350
  847. package/src/helpers/templates.ts +0 -602
  848. package/src/helpers/validations.ts +0 -2085
  849. package/src/hooks/useArgSchema.ts +0 -37
  850. package/src/hooks/useCoarsePointer.ts +0 -30
  851. package/src/hooks/useFetch/useFetch.stories.tsx +0 -379
  852. package/src/hooks/useFetch/useFetch.tsx +0 -154
  853. package/src/hooks/usePhoneViewport.ts +0 -34
  854. package/src/hooks/useQorusTypes.ts +0 -233
  855. package/src/hooks/useReqraftProperty.ts +0 -16
  856. package/src/hooks/useStorage/useStorage.stories.tsx +0 -168
  857. package/src/hooks/useStorage/useStorage.ts +0 -35
  858. package/src/hooks/useTemplates.ts +0 -123
  859. package/src/hooks/useValidation.ts +0 -9
  860. package/src/hooks/useWebSocket/useWebSocket.ts +0 -224
  861. package/src/hooks/useWebSocket/useWebsocket.stories.tsx +0 -640
  862. package/src/hooks/useWhyDidYouUpdate.ts +0 -38
  863. package/src/index.tsx +0 -86
  864. package/src/providers/FetchProvider.tsx +0 -40
  865. package/src/providers/ReqraftProvider.tsx +0 -52
  866. package/src/providers/StorageProvider.tsx +0 -131
  867. package/src/stores/currentUser/currentUser.stories.tsx +0 -100
  868. package/src/stores/currentUser/currentUser.tsx +0 -94
  869. package/src/stories/Data/fileFieldArgSchema.json +0 -86
  870. package/src/stories/Tests/utils.ts +0 -320
  871. package/src/stories/storyNetwork.ts +0 -92
  872. package/src/stories/tracking.tsx +0 -206
  873. package/src/tracking/browser/attach.ts +0 -186
  874. package/src/tracking/browser/env.ts +0 -78
  875. package/src/tracking/core/consent.ts +0 -37
  876. package/src/tracking/core/engagement.ts +0 -47
  877. package/src/tracking/core/experiments.ts +0 -258
  878. package/src/tracking/core/hash.ts +0 -26
  879. package/src/tracking/core/ids.ts +0 -25
  880. package/src/tracking/core/observable.ts +0 -23
  881. package/src/tracking/core/queue.ts +0 -131
  882. package/src/tracking/core/sections.ts +0 -166
  883. package/src/tracking/core/storage.ts +0 -69
  884. package/src/tracking/core/tracker.ts +0 -417
  885. package/src/tracking/core/types.ts +0 -162
  886. package/src/tracking/core/utm.ts +0 -23
  887. package/src/tracking/index.ts +0 -72
  888. package/src/tracking/markup.ts +0 -17
  889. package/src/tracking/react/Experiment.tsx +0 -44
  890. package/src/tracking/react/TrackingProvider.tsx +0 -56
  891. package/src/tracking/react/hooks.ts +0 -106
  892. package/src/tracking/react/index.ts +0 -13
  893. package/src/tracking/testing.ts +0 -108
  894. package/src/tracking/ui/ExperimentCard.stories.tsx +0 -296
  895. package/src/tracking/ui/ExperimentCard.tsx +0 -667
  896. package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -155
  897. package/src/tracking/ui/ExperimentsOverlay.tsx +0 -437
  898. package/src/tracking/ui/anchor.ts +0 -180
  899. package/src/tracking/ui/card.ts +0 -464
  900. package/src/tracking/ui/client.ts +0 -117
  901. package/src/tracking/ui/index.ts +0 -77
  902. package/src/tracking/ui/types.ts +0 -110
  903. package/src/tracking/ui/useExperimentsAdmin.ts +0 -103
  904. package/src/types/Form.ts +0 -29
  905. package/src/types.ts +0 -14
  906. package/src/utils/datetime.ts +0 -10
  907. package/src/utils/fetch.ts +0 -457
  908. package/src/utils/lspClient.ts +0 -711
  909. package/src/utils/lspClient.types.ts +0 -211
  910. package/src/utils/queryUnlessCancelled.ts +0 -28
  911. package/src/utils/websocket.ts +0 -293
  912. package/vite.config.ts +0 -58
  913. package/vitest.config.ts +0 -69
@@ -106,8 +106,8 @@ var use_context_selector_1 = require("use-context-selector");
106
106
  var validations_1 = require("../../../helpers/validations");
107
107
  var templates_1 = require("../../../helpers/templates");
108
108
  var common_1 = require("../../../helpers/common");
109
- var fieldDescription_1 = require("../../../helpers/fieldDescription");
110
109
  var templateText_1 = require("../../../helpers/templateText");
110
+ var pendingEdit_1 = require("../fields/pendingEdit");
111
111
  var ReadOnlyTemplateTag_1 = require("../fields/template/ReadOnlyTemplateTag");
112
112
  var TemplateText_1 = require("../fields/template/TemplateText");
113
113
  var codeSize_1 = require("../../codeSize");
@@ -115,7 +115,11 @@ var Description_1 = require("../../Description");
115
115
  var markdownRendererContext_1 = require("../../Description/markdownRendererContext");
116
116
  var FocusedEditing_1 = require("../../FocusedEditing");
117
117
  var compactRowContext_1 = require("./compactRowContext");
118
- var formAppearance_1 = require("./formAppearance");
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");
119
123
  var revealRow_1 = require("./revealRow");
120
124
  var compactRowStyles_1 = require("./compactRowStyles");
121
125
  var OptionFieldMessages_1 = require("./OptionFieldMessages");
@@ -123,9 +127,14 @@ var rowFocus_1 = require("./rowFocus");
123
127
  var rowOpenPicker_1 = require("./rowOpenPicker");
124
128
  var SchemaDataView_1 = require("./_structuredData/SchemaDataView");
125
129
  var queryUnlessCancelled_1 = require("../../../utils/queryUnlessCancelled");
130
+ var markdownText_1 = require("../../../helpers/markdownText");
126
131
  var readFirst_1 = require("./readFirst");
127
132
  var StructuredDataView_1 = require("./_structuredData/StructuredDataView");
128
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");
129
138
  /**
130
139
  * Does this markdown value have more document in it than one row can show?
131
140
  *
@@ -211,19 +220,45 @@ var richtextItemText = function (item) {
211
220
  : undefined;
212
221
  };
213
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; };
214
255
  exports.CompactRow = (0, react_1.memo)(function (_a) {
215
256
  var _b;
216
257
  var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
217
258
  var optionName = _a.optionName, optionField = _a.optionField, _r = _a.hidden, hidden = _r === void 0 ? false : _r, _s = _a.clustered, clustered = _s === void 0 ? false : _s, _t = _a.clusterFirst, clusterFirst = _t === void 0 ? false : _t, _u = _a.clusterLast, clusterLast = _u === void 0 ? false : _u, absorbedFields = _a.absorbedFields;
218
259
  var readOnly = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.readOnly; });
219
- // The look only — see `TFormEngineAppearance`. Nothing a row DOES reads it.
220
- var calm = (0, formAppearance_1.useIsCalmForm)();
221
260
  var commitMode = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.commitMode; });
222
261
  var options = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.options; });
223
- // Whether this field's emptiness is a fault yet: the person has opened it and left,
224
- // or the host reported a submit attempt. Before that a required field is only to
225
- // fill in, and says so in the quiet colour.
226
- var visited = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { var _a; return v.revealRequired || !!((_a = v.visitedOptions) === null || _a === void 0 ? void 0 : _a.includes(optionName)); });
227
262
  // An absorbed field keeps its own name — it is a different field, not a
228
263
  // property of its host — so the label comes from its schema exactly as it
229
264
  // would on its own row.
@@ -233,14 +268,23 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
233
268
  absorbedName;
234
269
  };
235
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; });
236
274
  var markdownRenderer = (0, markdownRendererContext_1.useMarkdownRenderer)();
237
275
  var operators = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.operators; });
238
276
  var focusedEditing = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.focusedEditing; });
239
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)();
240
283
  var showAllDescriptions = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.showAllDescriptions; });
241
284
  var isExpanded = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) {
242
285
  return v.expandedOptions.includes(optionName);
243
286
  });
287
+ // the box this open field moves to when it is closed, when that is not the one it is shown in
244
288
  var isHighlighted = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) {
245
289
  return v.highlightedOptions.includes(optionName);
246
290
  });
@@ -286,7 +330,8 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
286
330
  var availableOptions = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.availableOptions; });
287
331
  var requiredGroupsInfo = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.requiredGroupsInfo; });
288
332
  var handleValueChange = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.handleValueChange; });
289
- 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; });
290
335
  var flashOption = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.flashOption; });
291
336
  var hasOptionChanged = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.hasOptionChanged; });
292
337
  var handleOptionLabelClick = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.handleOptionLabelClick; });
@@ -299,6 +344,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
299
344
  var renderOption = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.renderOption; });
300
345
  var theme = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.theme; });
301
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; });
302
348
  var templates = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.templates; });
303
349
  var cKey = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.cKey; });
304
350
  var cDivider = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.cDivider; });
@@ -306,27 +352,27 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
306
352
  var cDanger = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.cDanger; });
307
353
  var cWarning = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.cWarning; });
308
354
  var cInfo = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.cInfo; });
309
- var cText = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.cText; });
310
- // A field's NAME: full text colour by default; grey in the calm look, so the
311
- // value beside it is what the eye lands on. One colour for the read row, the
312
- // open row and the edit card, so a name does not change as its field opens.
313
- var cLabel = calm ? "".concat(cText, "b3") : cKey;
314
355
  // A markdown value renders as a document in the row's inset; the host's
315
356
  // renderer when it supplied one, reqraft's own otherwise.
316
- // 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
317
358
  // its "N fields" summary (sub-fields reveal beneath the row).
318
359
  var renderReadFirstValue = function (field, schema, formatted,
319
- // An editable row gets one line and an ellipsis — its value line is a
320
- // summary you click to open. A read-only row is the only rendering the
321
- // 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". */
322
366
  full) {
323
367
  var _a;
324
368
  if (full === void 0) { full = false; }
325
369
  var valueType = (0, readFirst_1.getValueType)(field, schema);
326
370
  var wrapStyle = __assign({ display: 'inline-flex', alignItems: 'center', gap: 6, minWidth: 0, maxWidth: '100%' }, (full ? { flexWrap: 'wrap' } : {}));
327
- var textStyle = full ?
328
- { whiteSpace: 'pre-wrap', overflowWrap: 'anywhere' }
329
- : { 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;
330
376
  /* A row has to SAY when its value is an expression.
331
377
 
332
378
  Reported from the live IDE: an author accepted the *Use as expression*
@@ -339,7 +385,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
339
385
  The same Σ the expression editor uses, so the mark means the same thing
340
386
  wherever it appears. */
341
387
  var withExpressionMarker = function (rendered) {
342
- if (!(field === null || field === void 0 ? void 0 : field.is_expression)) {
388
+ if (!isExpression) {
343
389
  return rendered;
344
390
  }
345
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',
@@ -352,13 +398,43 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
352
398
  rule, which reqore has no prop for, stays inline. */
353
399
  effect: { opacity: 0.7 }, style: { flexShrink: 0 }, tooltip: 'This value is an expression' }), rendered] }));
354
400
  };
355
- if (valueType === 'rgbcolor') {
356
- var swatch = (0, readFirst_1.colorToCss)(field === null || field === void 0 ? void 0 : field.value);
357
- return ((0, jsx_runtime_1.jsxs)("span", { style: swatch ? __assign(__assign({}, wrapStyle), {
358
- // a slight wash of the chosen colour behind the swatch + hex
359
- background: "color-mix(in srgb, ".concat(swatch, " 14%, transparent)"), padding: '1px 8px', borderRadius: 4 }) : wrapStyle, children: [swatch ?
360
- (0, jsx_runtime_1.jsx)(compactRowStyles_1.StyledColorSwatch, { "aria-hidden": true, "$color": swatch, "$border": cDivider })
361
- : 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 });
362
438
  }
363
439
  if (valueType === 'file') {
364
440
  var fileSize = (0, readFirst_1.getFileSize)(field === null || field === void 0 ? void 0 : field.value);
@@ -366,12 +442,8 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
366
442
  // trailing key pill (the editor renders it as a ReqoreButton badge).
367
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 }));
368
444
  }
445
+ // a yes/no holding a template has read as the template, above, not as Yes (qorus#646)
369
446
  if (valueType === 'bool' || valueType === 'boolean') {
370
- // Calm: Yes and No are words. Neither is a status — "No" is not a
371
- // failure — so neither is coloured.
372
- if (calm) {
373
- return (0, jsx_runtime_1.jsx)("span", { style: textStyle, children: formatted });
374
- }
375
447
  var truthy = (field === null || field === void 0 ? void 0 : field.value) === true || (field === null || field === void 0 ? void 0 : field.value) === 'true';
376
448
  return ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreTag, { size: 'small', minimal: true, intent: truthy ? 'success' : 'danger', label: formatted }));
377
449
  }
@@ -386,7 +458,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
386
458
  // only surface still printing them as prose.
387
459
  //
388
460
  // `intent` is a FILL, which is what a tag is — the hazard the other
389
- // 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.
390
462
  //
391
463
  // Falls through to the plain summary unless EVERY entry yields a name: a
392
464
  // partly-chipped row would read as though the unnamed cases were missing.
@@ -414,12 +486,17 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
414
486
  // It reads as a chip beside the size chip — "Qore · 62 lines" — which
415
487
  // is the same summary the read-only interface pages already show.
416
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) {
417
- var _a;
418
- 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;
419
491
  if (absorbedValue === undefined || absorbedValue === null || absorbedValue === '') {
420
492
  return null;
421
493
  }
422
- 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));
423
500
  }) }));
424
501
  }
425
502
  // Markdown read summary: the row prints the value's prose (the markdown
@@ -455,27 +532,6 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
455
532
  if (allowedIcon) {
456
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 })] }));
457
534
  }
458
- // Template value ($local:…): the read-only template picker — the SAME chip
459
- // TemplateField renders when disabled, so a template reads identically here
460
- // and in the editor (qorus-ide intent scheme: info / qorus purple).
461
- //
462
- // A field may also declare templates OF ITS OWN, and a value drawn from
463
- // that list is just as much a template even when it does not look like
464
- // `$name:key` — `isValueTemplate` is a guess at the shape of the built-in
465
- // grammar, and a host's own grammar (a Qorus test's `$.order.id`) fails it.
466
- // Asking the field's list whether it CONTAINS the value settles it without
467
- // guessing at syntax, and hands back the entry whose label the chip prints,
468
- // so a reference reads as the name it was chosen by here as well as in the
469
- // editor rather than as a raw path.
470
- var ownTemplates = (_a = schema === null || schema === void 0 ? void 0 : schema.templates) !== null && _a !== void 0 ? _a : templates;
471
- // The grammar the field declares its references in, when it speaks one of
472
- // its own — the same schema key its rich-text editor is given.
473
- var templateGrammar = schema === null || schema === void 0 ? void 0 : schema.templateToken;
474
- if (typeof (field === null || field === void 0 ? void 0 : field.value) === 'string' &&
475
- !field.is_expression &&
476
- ((0, templates_1.isValueTemplate)(field.value) || !!(0, templates_1.findTemplate)(ownTemplates !== null && ownTemplates !== void 0 ? ownTemplates : {}, field.value))) {
477
- return (0, jsx_runtime_1.jsx)(ReadOnlyTemplateTag_1.ReadOnlyTemplateTag, { value: field.value, templates: ownTemplates, size: 'small' });
478
- }
479
535
  // A LIST whose elements are rich-text envelopes is a list of strings, so it
480
536
  // reads as those strings. Without this the row fell through to the generic
481
537
  // list summary and printed a bare count ("1 item") above the structured
@@ -496,14 +552,6 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
496
552
  return (0, jsx_runtime_1.jsx)(TemplateText_1.TemplateText, { segments: segments, templates: ownTemplates, full: full });
497
553
  }
498
554
  }
499
- // An expression reads as DPQL wherever it is shown without being edited:
500
- // the same rendering its Explain panel and Preview use — monospace,
501
- // coloured by the language server, template references as chips — so a
502
- // collapsed row and the editor it opens never disagree about what the
503
- // value looks like. See `DpqlRendering`.
504
- if ((field === null || field === void 0 ? void 0 : field.is_expression) && formatted) {
505
- 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 }) }));
506
- }
507
555
  /* A value that MENTIONS a reference rather than being one.
508
556
 
509
557
  The branch above answers "is this value a template?", and a predicate is
@@ -524,10 +572,23 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
524
572
  if (templateSegments.some(function (segment) { return segment.kind === 'tag'; })) {
525
573
  return withExpressionMarker((0, jsx_runtime_1.jsx)(TemplateText_1.TemplateText, { segments: templateSegments, templates: ownTemplates, full: full }));
526
574
  }
527
- 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 }));
528
583
  };
529
584
  var schema = options === null || options === void 0 ? void 0 : options[optionName];
530
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] })); };
531
592
  var injectedOptionActions = react_1.default.useMemo(function () {
532
593
  return schema ?
533
594
  (0, optionActions_1.resolveOptionActions)(optionActions, {
@@ -563,11 +624,8 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
563
624
  }, children: actionLabel }), "".concat(optionName, "-injected-action-").concat(index)));
564
625
  };
565
626
  var required = !!((schema === null || schema === void 0 ? void 0 : schema.required) || (schema === null || schema === void 0 ? void 0 : schema.required_groups));
566
- // The asterisk says "you have to fill this in". Read-only, nobody does. The
567
- // calm look draws none at all: an empty required field says so in its
568
- // value column instead ("Required · add a value"), and a filled one has
569
- // nothing left to ask for.
570
- var requiredMark = required && !readOnly && !calm;
627
+ // The asterisk says "you have to fill this in". Read-only, nobody does.
628
+ var requiredMark = required && !readOnly;
571
629
  var removable = !readOnly && !(schema === null || schema === void 0 ? void 0 : schema.preselected) && !(schema === null || schema === void 0 ? void 0 : schema.required) && !(schema === null || schema === void 0 ? void 0 : schema.required_groups);
572
630
  var changed = !hidden && !readOnly && hasOptionChanged(optionField === null || optionField === void 0 ? void 0 : optionField.value, optionName);
573
631
  // "Has a value" = set to anything non-empty. Drives the edit-row Clear
@@ -608,15 +666,13 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
608
666
  var chipGroups = unmetGroups.length ? unmetGroups : memberGroups;
609
667
  var groupResolved = !!memberGroups.length && !unmetGroups.length;
610
668
  var requiredGroupChip = !hidden && !readOnly && memberGroups.length && !(schema === null || schema === void 0 ? void 0 : schema.required) ?
611
- (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 () {
612
- return setHighlightedOptions(requiredGroupsInfo.members[chipGroups[0]] || []);
613
- }, 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: calm ? undefined : { uppercase: true, spaced: 1 },
614
- // Calm: a met group is nothing to point at — only the unmet one is
615
- // coloured.
616
- intent: groupResolved ?
617
- calm ? undefined
618
- : 'success'
619
- : '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'
620
676
  : coveredByLabel ?
621
677
  "Covered by \u201C".concat(coveredByLabel, "\u201D")
622
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 ?
@@ -636,6 +692,20 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
636
692
  var editType = (_d = (fixedAllowedValueOption ?
637
693
  (schema === null || schema === void 0 ? void 0 : schema.type) || (schema === null || schema === void 0 ? void 0 : schema.ui_type)
638
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);
639
709
  // Scalars edit in place inside the row; complex fields (tall or nested
640
710
  // editors) still open the expanded card below.
641
711
  var inlineEditableNow = !readOnly &&
@@ -645,7 +715,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
645
715
  !optionField.is_expression &&
646
716
  // A choice with per-option logos (e.g. language) reads better collapsed.
647
717
  !(0, readFirst_1.optionHasImages)(schema) &&
648
- !COMPACT_COMPLEX_TYPES.has(editType);
718
+ !opensInCard;
649
719
  /* Which of the two editors a row gets is settled when the row OPENS.
650
720
  *
651
721
  * Every term above reads the VALUE or a schema derived from it, so the
@@ -756,43 +826,18 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
756
826
  if (!editor)
757
827
  return undefined;
758
828
  var settled = false;
759
- /* A control that is not a text box holds the caret PROVISIONALLY. An editor that
760
- takes text can mount after the row opens (a code editor loads late), and until
761
- it does the only control there is its chrome: a fullscreen toggle. When the
762
- text box arrives it takes the caret, unless the reader has moved it since. A
763
- row that never grows one (a pick-one) simply keeps its control. */
764
- var provisional = null;
765
829
  var takeCaret = function () {
766
830
  var _a;
767
831
  if (settled)
768
832
  return true;
769
833
  var active = document.activeElement;
770
- if (provisional) {
771
- if (active !== provisional) {
772
- // The reader moved the caret themselves. Leave it there.
773
- settled = true;
774
- return true;
775
- }
776
- var textEntry = (0, rowFocus_1.findRowFocusTarget)(editor, { textEntryOnly: true });
777
- if (!textEntry)
778
- return false;
779
- textEntry.focus({ preventScroll: true });
780
- // An editor's text box can be in the DOM before it can take focus (Monaco's
781
- // edit area, mid-layout), and `focus()` then does nothing. Only a caret
782
- // that landed counts; otherwise try again on the editor's next change.
783
- if (document.activeElement !== textEntry)
784
- return false;
785
- settled = true;
786
- return true;
787
- }
788
834
  if (active && active !== document.body && !((_a = rowRef.current) === null || _a === void 0 ? void 0 : _a.contains(active))) {
789
835
  // Someone else holds the caret — a field the reader moved into while
790
836
  // this row's editor was still arriving. Leave it where it is.
791
837
  settled = true;
792
838
  return true;
793
839
  }
794
- // A card hands the caret only to where text goes (see `findRowFocusTarget`).
795
- var control = (0, rowFocus_1.findRowFocusTarget)(editor, { textEntryOnly: !inlineEditable });
840
+ var control = (0, rowFocus_1.findRowFocusTarget)(editor);
796
841
  if (!control)
797
842
  return false;
798
843
  // The least scroll that shows the row clear of the pinned box header,
@@ -803,10 +848,6 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
803
848
  // `preventScroll`, because the reveal above has already put the row
804
849
  // where it belongs; letting focus scroll as well moves it twice.
805
850
  control.focus({ preventScroll: true });
806
- // A control that cannot take focus yet (still laying out) did not take
807
- // the caret: try again on the editor's next change.
808
- if (document.activeElement !== control)
809
- return false;
810
851
  /* …and if the control the row offers is a PICKER, open it.
811
852
  *
812
853
  * A closed picker prints the value it holds, which is exactly what the
@@ -824,13 +865,6 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
824
865
  if (openedByAuthor.current && inlineEditable && (0, rowFocus_1.isClosedPickerTrigger)(control)) {
825
866
  openedByAuthor.current = false;
826
867
  setOpenThePicker(true);
827
- settled = true;
828
- return true;
829
- }
830
- if ((0, rowFocus_1.findRowFocusTarget)(editor, { textEntryOnly: true }) !== control) {
831
- // Not a text box: hold it until one arrives (see `provisional`).
832
- provisional = control;
833
- return false;
834
868
  }
835
869
  settled = true;
836
870
  return true;
@@ -841,9 +875,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
841
875
  if (takeCaret())
842
876
  observer.disconnect();
843
877
  });
844
- // Attributes too: an editor's text box can become focusable by an attribute or
845
- // style change after it is inserted (see the `focus()` checks above).
846
- observer.observe(editor, { childList: true, subtree: true, attributes: true });
878
+ observer.observe(editor, { childList: true, subtree: true });
847
879
  return function () { return observer.disconnect(); };
848
880
  }, [isExpanded, optionName, inlineEditable]);
849
881
  // What the field held when it was opened — the baseline Cancel restores.
@@ -859,7 +891,11 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
859
891
  var editEntryValue = react_1.default.useRef(undefined);
860
892
  react_1.default.useEffect(function () {
861
893
  if (isExpanded) {
862
- 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
+ };
863
899
  }
864
900
  else {
865
901
  editEntryValue.current = undefined;
@@ -869,15 +905,25 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
869
905
  var editedSinceOpened = isExpanded &&
870
906
  !!editEntryValue.current &&
871
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)();
872
912
  // Discard whatever was typed since the field was opened and close it. Used
873
913
  // by both the Cancel button and Escape, so the two cannot diverge.
874
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();
875
917
  var snapshot = editEntryValue.current;
876
- if (snapshot && !(0, isEqual_1.default)(snapshot.value, optionField === null || optionField === void 0 ? void 0 : optionField.value)) {
877
- 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));
878
924
  }
879
- toggleExpandedOption(optionName);
880
- }, [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]);
881
927
  // The sub-schema describing this field's value, when it has one. A value the
882
928
  // form knows the shape of is previewed THROUGH that shape (see
883
929
  // `SchemaDataView`); only genuinely undescribed data falls through to the
@@ -946,9 +992,9 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
946
992
  // whole-field revert is the only undo that makes sense.
947
993
  var revertButton = changed ?
948
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) {
949
- var _a, _b, _c, _d;
995
+ var _a;
950
996
  e.stopPropagation();
951
- 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));
952
998
  } })
953
999
  : null;
954
1000
  // Clear-value: empties a set field (keeps the field; the value goes blank)
@@ -986,9 +1032,10 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
986
1032
  // Batched commit: a changed row is a draft until Save — mark it with the
987
1033
  // product's Draft chip (always visible, unlike the hover-revealed revert).
988
1034
  var draftChip = commitMode === 'batched' && changed ?
989
- (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: calm ? undefined : { uppercase: true, spaced: 1 } })
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 } })
990
1036
  : null;
991
- 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;
992
1039
  // Cancel — the counterpart to Done, and the answer to "how do I get out of
993
1040
  // here without keeping this". Done was the only way to leave an open field,
994
1041
  // so every way out committed: the check, clicking away, and Escape (which
@@ -1001,7 +1048,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1001
1048
  // Not offered when the close action is passive (a fixed choice) —
1002
1049
  // nothing can have been typed, so there is nothing to cancel.
1003
1050
  var cancelEditButton = !isPassiveCloseAction && editedSinceOpened ?
1004
- (0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { className: 'options-readfirst-cancel', size: 'small', flat: true, minimal: true, fixed: true, icon: 'CloseLine', intent: calm ? undefined : 'warning', "aria-label": 'Cancel edit', tooltip: 'Cancel edit \u2014 discard the changes made since this field was opened', onClick: function (event) {
1051
+ (0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { className: 'options-readfirst-cancel', size: 'small', flat: true, minimal: true, fixed: true, icon: 'CloseLine', intent: 'warning', "aria-label": 'Cancel edit', tooltip: 'Cancel edit \u2014 discard the changes made since this field was opened', onClick: function (event) {
1005
1052
  event.stopPropagation();
1006
1053
  cancelEdit();
1007
1054
  } })
@@ -1010,13 +1057,18 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1010
1057
  var openedWithFormLoadValue = !editEntryValue.current ||
1011
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);
1012
1059
  var editRowRevertButton = openedWithFormLoadValue ? null : revertButton;
1013
- var closeExpandedFieldButton = ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { className: 'options-readfirst-done', size: 'small',
1014
- // Calm: a neutral button. Closing a field is not a healthy figure and
1015
- // not the page's one primary action, so it takes neither colour.
1016
- intent: !isPassiveCloseAction && !calm ? '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
+ } }));
1017
1065
  // Info tiers: Tier 1 (danger/warning + dependency hints) must be visible
1018
1066
  // without interaction; Tier 2 (info/success, default notes) sits behind ⓘ.
1019
- 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;
1020
1072
  var schemaMessages = infoActive ?
1021
1073
  (0, OptionFieldMessages_1.getShownSchemaMessages)(schema === null || schema === void 0 ? void 0 : schema.messages, availableOptions, options).map(function (m) { return ({
1022
1074
  intent: m.intent,
@@ -1039,21 +1091,18 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1039
1091
  allOptions: availableOptions,
1040
1092
  getType: getTypeForOption,
1041
1093
  isRendererOnly: isRendererOnly,
1042
- calm: calm,
1043
- readOnly: readOnly,
1044
- // Until the person has been to the field, its requirement is stated plainly.
1045
- requirementPending: !visited,
1046
1094
  }).map(function (m) { return ({ intent: m.intent, content: String(m.label) }); })
1047
1095
  : [];
1048
1096
  // TWO display channels, matching the Focus prototype:
1049
- // • dedicated schema `messages` → prominent coloured PANELS below the row;
1097
+ // • dedicated schema `messages` → prominent colored PANELS below the row;
1050
1098
  // • everything else (validation reasons, the unmet-dependency hint, the
1051
1099
  // default-value note) → a compact INLINE reason strip — not a panel.
1052
1100
  var panelMessages = schemaMessages;
1053
1101
  var inlineMessages = __spreadArray(__spreadArray([], fieldMessages, true), (infoActive && (schema === null || schema === void 0 ? void 0 : schema.default_value_desc) ?
1054
1102
  [
1055
1103
  {
1056
- 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(),
1057
1106
  },
1058
1107
  ]
1059
1108
  : []), true);
@@ -1073,12 +1122,40 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1073
1122
  // the inline editor: opening a field used to drop it, leaving an editing row
1074
1123
  // with no route to the field's description at all. Stops propagation because
1075
1124
  // both labels are click targets themselves (the row expands / collapses).
1076
- var helpIcon = (0, fieldDescription_1.fieldHasLongDescription)(schema) ?
1077
- (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) {
1078
1147
  event.stopPropagation();
1079
1148
  handleOptionLabelClick(optionName);
1149
+ }, onKeyDown: function (event) {
1150
+ if (event.key === 'Enter' || event.key === ' ') {
1151
+ event.stopPropagation();
1152
+ }
1080
1153
  } })
1081
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;
1082
1159
  // The gap rides on the message itself rather than on the panel around it:
1083
1160
  // the panel is a vertical ReqoreControlGroup, which owns its own layout and
1084
1161
  // stacks children flush, and the class rule that used to carry a 4px gap
@@ -1096,23 +1173,16 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1096
1173
  `compact` for the same reason the row inset asks for it: this is a strip
1097
1174
  inside a row, never a page, and markdown authored as a document opens with
1098
1175
  a heading that would outgrow the field label above it. Without a host
1099
- renderer the string is drawn as it always was. */
1100
- var renderInfoStrip = function (m, index) { return ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreMessage, { size: 'small', opaque: false, flat: true,
1101
- // Calm: a note that only informs takes no colour — blue is kept for "a
1102
- // filter is on", green for a healthy figure. A warning or a failure
1103
- // keeps its intent: those are what a person has to act on.
1104
- intent: (calm && (!m.intent || m.intent === 'info' || m.intent === 'success') ?
1105
- undefined
1106
- : m.intent), title: m.title, style: { marginBottom: 8 }, children: markdownRenderer && typeof m.content === 'string' ?
1176
+ renderer it reads as the plain text its markdown renders to (`plainTextNode`). */
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' ?
1107
1178
  markdownRenderer({ value: m.content, compact: true })
1108
- : 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)
1109
1181
  var reasonColor = function (intent) {
1110
- var _a;
1111
- return intent === 'danger' ? cDanger
1112
- : intent === 'warning' ? cWarning
1113
- : intent === 'success' ?
1114
- ((_a = theme === null || theme === void 0 ? void 0 : theme.intents) === null || _a === void 0 ? void 0 : _a.success) || cInfo
1115
- : "".concat(cMuted, "cc");
1182
+ return intent === 'danger' ? rowInks.danger
1183
+ : intent === 'warning' ? rowInks.warning
1184
+ : intent === 'success' ? rowInks.success
1185
+ : rowInks.mutedReason;
1116
1186
  };
1117
1187
  var infoToggle = null;
1118
1188
  // Cluster (required-group connection) — shared by the read row, its block
@@ -1132,8 +1202,13 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1132
1202
  var clusterNode = null;
1133
1203
  var clusterHoverProps = clustered && clusterMembers.length ?
1134
1204
  {
1135
- onMouseEnter: function () { return setHighlightedOptions(clusterMembers); },
1136
- 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([]); },
1137
1212
  }
1138
1213
  : {};
1139
1214
  // Items the EDITOR inside this row published — see `rowMenuContext`.
@@ -1143,8 +1218,10 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1143
1218
  // just before the Done ✓ in both expanded layouts.
1144
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([
1145
1220
  {
1146
- label: 'Edit fullscreen',
1221
+ // a card opened to read is viewed in full, not edited
1222
+ label: readOnly ? 'View fullscreen' : 'Edit fullscreen',
1147
1223
  icon: 'FullscreenLine',
1224
+ className: 'options-readfirst-fullscreen',
1148
1225
  onClick: function () { return setFocusedEditing(optionName); },
1149
1226
  }
1150
1227
  ], (removable && !hidden ?
@@ -1203,24 +1280,26 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1203
1280
  optionField.value !== '') ?
1204
1281
  (function () {
1205
1282
  var _a = (0, codeSize_1.describeCodeSize)(optionField.value), lines = _a.lines, chars = _a.chars;
1206
- 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)) }));
1207
1284
  })()
1208
1285
  : null;
1209
- if (isExpanded && !readOnly) {
1286
+ if (isExpanded && (!readOnly || readOnlyOpens)) {
1210
1287
  if (inlineEditable) {
1211
- 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
+ };
1212
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] ?
1213
1294
  { minHeight: readRowHeights.current[optionName] }
1214
- : 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": cLabel, "$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) {
1215
1296
  if (event.key === 'Enter' || event.key === ' ') {
1216
1297
  event.preventDefault();
1217
1298
  collapse_1();
1218
1299
  }
1219
- }, children: [label, required && !calm ?
1220
- (0, jsx_runtime_1.jsx)(reqore_1.ReqoreIcon, { icon: 'Asterisk', color: 'danger', size: '10px' })
1221
- : null, helpIcon] }), labelShortDesc ?
1222
- (0, jsx_runtime_1.jsx)(compactRowStyles_1.StyledLabelDesc, { className: 'options-readfirst-label-desc', size: 'small', effect: { opacity: 0.55 }, children: labelShortDesc })
1223
- : null, codeSizeNode] }), (0, jsx_runtime_1.jsxs)("div", { ref: editorRef, className: 'options-readfirst-row-editor', style: { minWidth: 0 }, onKeyDown: function (event) {
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) })
1302
+ : null, codeSizeNode] }), (0, jsx_runtime_1.jsxs)("div", { ref: editorRef, style: { minWidth: 0 }, onKeyDown: function (event) {
1224
1303
  if (event.key === 'Escape') {
1225
1304
  event.stopPropagation();
1226
1305
  // Escape discards. It used to call `collapse()`, which closed
@@ -1231,7 +1310,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1231
1310
  }
1232
1311
  }, children: [panelMessages.length ?
1233
1312
  (0, jsx_runtime_1.jsx)(reqore_1.ReqoreControlGroup, { className: 'options-readfirst-info-panel', vertical: true, fluid: true, gapSize: 'normal', children: panelMessages.map(renderInfoStrip) })
1234
- : 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) {
1235
1314
  return renderInjectedOptionAction(action, index);
1236
1315
  }), moreMenu, closeExpandedFieldButton] }), clusterNode] }), optionName));
1237
1316
  // ALWAYS wrap the editing row in the same StyledColumn so its parent stays
@@ -1241,7 +1320,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1241
1320
  // them. The wrapper carries the cluster rail class so the connection
1242
1321
  // persists while a member is being edited.
1243
1322
  return ((0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledColumn, { "data-field": optionName, className: clusterBlockClass || undefined, children: [editingRow, focusedEditing === optionName ?
1244
- (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) })] })
1245
1324
  : null] }, optionName));
1246
1325
  }
1247
1326
  // Card chrome: badge / actions / tags render here — the row only fits
@@ -1255,19 +1334,19 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1255
1334
  var schemaIntentColor = (schema === null || schema === void 0 ? void 0 : schema.intent) ?
1256
1335
  (_j = theme === null || theme === void 0 ? void 0 : theme.intents) === null || _j === void 0 ? void 0 : _j[schema.intent]
1257
1336
  : undefined;
1258
- return ((0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledEditCard, { ref: rowRef, "data-field": optionName, className: COMPACT_SINGLE_VALUE_TYPES.has(editType) ?
1337
+ return ((0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledEditCard, { "data-field": optionName, className: COMPACT_SINGLE_VALUE_TYPES.has(editType) ?
1259
1338
  'options-readfirst-card options-readfirst-card-single'
1260
- : 'options-readfirst-card', "$bg": cHover, "$border": schemaIntentColor ? "".concat(schemaIntentColor, "66") : "".concat(cInfo, "66"), "$calm": calm, 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: {
1261
1340
  display: 'flex',
1262
- 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',
1263
1344
  justifyContent: 'space-between',
1264
1345
  gap: 12,
1265
- }, children: [(0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledCardHeading, { children: [(0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledCardLabel, { "$color": cLabel, 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) ||
1266
1347
  (schema === null || schema === void 0 ? void 0 : schema.image)) ?
1267
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' })
1268
- : null, (0, jsx_runtime_1.jsxs)("span", { children: [label, required && !calm ?
1269
- (0, jsx_runtime_1.jsx)(reqore_1.ReqoreIcon, { icon: 'Asterisk', color: 'danger', size: '10px' })
1270
- : 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) {
1271
1350
  return typeof badge === 'object' ?
1272
1351
  (0, jsx_runtime_1.jsx)(reqore_1.ReqoreTag, __assign({ size: 'small', minimal: true, className: 'options-readfirst-card-badge' }, badge), index)
1273
1352
  : (0, jsx_runtime_1.jsx)(reqore_1.ReqoreTag, { size: 'small', minimal: true, className: 'options-readfirst-card-badge', label: badge }, index);
@@ -1282,18 +1361,14 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1282
1361
  return renderInjectedOptionAction(action, index);
1283
1362
  }), editRowRevertButton, cancelEditButton, hasValue && !readOnly ?
1284
1363
  (0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { size: 'small', icon: 'DeleteBinLine', minimal: true, flat: true, fixed: true, intent: 'danger', className: 'options-readfirst-clear', "aria-label": 'Clear value', tooltip: 'Clear value', onClick: confirmClearValue })
1285
- : null, moreMenu, closeExpandedFieldButton] })] }), absorbedNodes, (0, jsx_runtime_1.jsx)("div", {
1286
- // The card's editor, as the inline row's is: an opened card takes the
1287
- // caret too (the tap-to-edit rule above), so opening Description or
1288
- // Source Code by a click or by a blocked submit puts the cursor in it.
1289
- ref: editorRef, className: 'options-readfirst-row-editor', style: { display: 'contents' }, onKeyDown: function (event) {
1364
+ : null, moreMenu, closeExpandedFieldButton] })] }), absorbedNodes, (0, jsx_runtime_1.jsx)("div", { style: { display: 'contents' }, onKeyDown: function (event) {
1290
1365
  if (event.key === 'Escape') {
1291
1366
  event.stopPropagation();
1292
1367
  cancelEdit();
1293
1368
  }
1294
- }, 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 ?
1295
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 })
1296
- : 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));
1297
1372
  }
1298
1373
  var formatted = (0, readFirst_1.formatOptionValue)(optionField, schema);
1299
1374
  var empty = formatted === '';
@@ -1320,7 +1395,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1320
1395
  // default-value hints, plus a read-only covered-by note (editable covered rows
1321
1396
  // carry that in their chip instead).
1322
1397
  var valueReasons = __spreadArray(__spreadArray([], inlineMessages, true), (empty && coveredByLabel ?
1323
- [{ content: "Covered by \u201C".concat(coveredByLabel, "\u201D"), intent: calm ? undefined : 'success' }]
1398
+ [{ content: "Covered by \u201C".concat(coveredByLabel, "\u201D"), intent: 'success' }]
1324
1399
  : []), true);
1325
1400
  // A hash row reveals its sub-fields as read-only sub-rows under a "view
1326
1401
  // more" disclosure; the row itself still expands the real editor on click.
@@ -1348,7 +1423,12 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1348
1423
  typeof optionField.value === 'object' &&
1349
1424
  !Array.isArray(optionField.value) &&
1350
1425
  !isExpression;
1351
- 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) ?
1352
1432
  (0, readFirst_1.getHashEntries)(optionField, schema)
1353
1433
  : [];
1354
1434
  // A LIST OF HASHES/objects gets the same expandable structured preview a hash
@@ -1356,6 +1436,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1356
1436
  // never print "[object Object]"). StructuredDataView unwraps each item's
1357
1437
  // {type,value} envelope. Plain scalar lists keep just their joined summary.
1358
1438
  var isHashList = !hidden &&
1439
+ !hostSummarizes &&
1359
1440
  (valueType === 'list' || valueType === 'free-list' || valueType === 'array') &&
1360
1441
  Array.isArray(optionField === null || optionField === void 0 ? void 0 : optionField.value) &&
1361
1442
  optionField.value.length > 0 &&
@@ -1375,6 +1456,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1375
1456
  // "Show more" reveals the rest. Sits in the same inset the hash/list
1376
1457
  // preview uses — mutually exclusive with `showStructuredPreview`.
1377
1458
  var showCodePreview = !hidden &&
1459
+ !hostSummarizes &&
1378
1460
  valueType === 'code-editor' &&
1379
1461
  typeof (optionField === null || optionField === void 0 ? void 0 : optionField.value) === 'string' &&
1380
1462
  optionField.value.length > 0;
@@ -1421,6 +1503,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1421
1503
  // rendered as the row's own text, and a second copy of it below would make
1422
1504
  // every description row tall for nothing.
1423
1505
  var showMarkdownPreview = !hidden &&
1506
+ !hostSummarizes &&
1424
1507
  !showCodePreview &&
1425
1508
  !!markdownRenderer &&
1426
1509
  // keyed on the schema's ui_type, not on getValueType(): a markdown value
@@ -1442,6 +1525,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1442
1525
  // sentence's worth of characters (a short value wraps in place).
1443
1526
  var showLongTextInset = readOnly &&
1444
1527
  !hidden &&
1528
+ !hostSummarizes &&
1445
1529
  !showCodePreview &&
1446
1530
  !showMarkdownPreview &&
1447
1531
  !showStructuredPreview &&
@@ -1466,9 +1550,8 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1466
1550
  isMultilineMarkdown(optionField.value)) ?
1467
1551
  "".concat(optionField.value.trim().split('\n').length, " lines")
1468
1552
  : undefined;
1469
- var typeLabel = showFieldTypes ?
1470
- "<".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, "]") : '', ">")
1471
- : 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;
1472
1555
  // A `readonly` field is one the system owns — an assigned id, a recorded
1473
1556
  // provenance. The server states that on the field itself; only the older
1474
1557
  // compat projection also mapped it to `disabled`, so on this path the form
@@ -1521,7 +1604,13 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1521
1604
  // "Depends on" dropdown whose items are the blocking fields (an "any of:"
1522
1605
  // divider for OR-groups), each clickable to flash/locate the blocker.
1523
1606
  var dependsOnChip = fieldDisabled && dependencyEntries.length ?
1524
- (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([
1525
1614
  { divider: true, label: 'Unlocked by:', dividerAlign: 'left' }
1526
1615
  ], dependencyEntries.flatMap(function (entry) { return __spreadArray(__spreadArray([], (Array.isArray(entry) ?
1527
1616
  [{ divider: true, label: 'any of:', dividerAlign: 'left' }]
@@ -1552,7 +1641,12 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1552
1641
  // change has said exactly what they want, and answering with silence
1553
1642
  // teaches them the surface is broken.
1554
1643
  if (fieldDisabled || readOnly) {
1555
- 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) {
1556
1650
  onReadOnlyActivate === null || onReadOnlyActivate === void 0 ? void 0 : onReadOnlyActivate(optionName);
1557
1651
  }
1558
1652
  return;
@@ -1569,7 +1663,11 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1569
1663
  // not-yet-set field just expands its editor (with an empty value); it joins
1570
1664
  // the form's output the moment a value is set (and moves to Set / Needs
1571
1665
  // attention), and drops back to Optional when cleared. No explicit add step.
1572
- 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);
1573
1671
  };
1574
1672
  // Row chrome: icon/image before the label; schema `intent` as the edge
1575
1673
  // stripe (message-severity stripes win when both apply).
@@ -1600,26 +1698,10 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1600
1698
  covered: !!coveredByLabel || groupResolved,
1601
1699
  invalid: worstIntent === 'danger',
1602
1700
  warned: worstIntent === 'warning',
1603
- visited: visited,
1604
1701
  });
1605
1702
  // No dot at all in a read-only form: the dot reports progress on the
1606
1703
  // form, and a read view has no progress to report.
1607
- //
1608
- // Calm: no dot on a healthy row, and none on an empty required one either —
1609
- // its value column already says "Required · add a value" in amber, and one
1610
- // thing is said once. Only a failing value keeps the red dot beside the
1611
- // reason it gives.
1612
- var dotStatus = hidden || fieldDisabled || readOnly || (calm && rowStatus !== 'invalid') ?
1613
- undefined
1614
- : rowStatus;
1615
- // Calm: an empty required value is said IN the value column, in amber,
1616
- // where the value would be — instead of a dash plus a red reason beside it.
1617
- // Not on a locked field (its lock and reason speak for it) or one that
1618
- // shows the default it will fall back to.
1619
- var calmRequiredWord = calm && empty && !hidden && !!(schema === null || schema === void 0 ? void 0 : schema.required) && !fieldDisabled && !formattedDefault ?
1620
- readOnly ? formAppearance_1.CALM_REQUIRED_READ_LABEL
1621
- : formAppearance_1.CALM_REQUIRED_LABEL
1622
- : undefined;
1704
+ var dotStatus = hidden || fieldDisabled || readOnly ? undefined : rowStatus;
1623
1705
  var dotColor = dotStatus === 'invalid' ? cDanger
1624
1706
  : dotStatus === 'todo' ? cWarning
1625
1707
  : dotStatus === 'set' ? cSuccess || cInfo
@@ -1628,23 +1710,26 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1628
1710
  go. Then it takes a button's role, focus and keyboard handling, because
1629
1711
  a thing that acts on a click has to be reachable without a mouse and has
1630
1712
  to announce what it does — and "Edit X", not "X", is what it does. */
1631
- var readOnlyIsAWayIn = !!readOnly && !fieldDisabled && !!onReadOnlyActivate;
1632
- var actsOnClick = !readOnly || readOnlyIsAWayIn;
1713
+ var readOnlyIsAWayIn = !!readOnly && !fieldDisabled && !readOnlyOpens && !!onReadOnlyActivate;
1714
+ var actsOnClick = !readOnly || readOnlyIsAWayIn || readOnlyOpens;
1633
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)
1634
- : readOnly ? undefined
1635
- : 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) {
1636
1721
  if (event.key === 'Enter' || event.key === ' ') {
1637
1722
  event.preventDefault();
1638
1723
  activate(event);
1639
1724
  }
1640
- }) }, 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": cLabel, children: [rowChromeIcon, (0, jsx_runtime_1.jsxs)("span", { className: 'options-readfirst-label-text', style: { minWidth: 0 }, children: [label, requiredMark ?
1641
- (0, jsx_runtime_1.jsx)(reqore_1.ReqoreIcon, { icon: 'Asterisk', color: 'danger', size: '10px', margin: 'left', marginSize: 'tiny' })
1642
- : null, helpIcon] }), typeLabel ?
1643
- (0, jsx_runtime_1.jsx)(reqore_1.ReqoreTag, { size: 'tiny', minimal: true, label: typeLabel, labelEffect: { opacity: 0.55 } })
1644
- : null] }), showLabelDesc ?
1645
- (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) })
1646
1731
  : null, codeSizeNode, lineCountNote ?
1647
- (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 })
1648
1733
  : null] }), (0, jsx_runtime_1.jsxs)(compactRowStyles_1.StyledRowValue
1649
1734
  // A code field draws its whole value in the preview below, with
1650
1735
  // "Show more" for the rest, so a hover carrying the same text is
@@ -1672,20 +1757,23 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1672
1757
  !showsTemplateText &&
1673
1758
  typeof formatted === 'string') ?
1674
1759
  formatted
1675
- : undefined, "$color": calmRequiredWord ?
1676
- rowStatus === 'pending' ?
1677
- "".concat(cMuted, "a6")
1678
- : cWarning
1679
- : empty || hidden ? "".concat(cMuted, "66")
1680
- : cKey, "$empty": (empty || hidden) && !calmRequiredWord, children: [(showMarkdownPreview || showLongTextInset || (previewWithSchema && showStructuredPreview)) ?
1760
+ : undefined, "$color": empty || hidden ? rowInks.emptyValue : cKey, "$empty": empty || hidden, children: [(showMarkdownPreview || showLongTextInset || (previewWithSchema && showStructuredPreview)) ?
1681
1761
  null
1682
- : (0, jsx_runtime_1.jsx)("span", { className: 'options-readfirst-valuetext', children: hidden || empty ?
1683
- calmRequiredWord || formattedDefault || '—'
1684
- : renderReadFirstValue(optionField, schema, formatted, readOnly) }), readOnlyChoiceDesc ?
1685
- (0, jsx_runtime_1.jsx)("span", { className: 'options-readfirst-choice-desc', children: readOnlyChoiceDesc })
1686
- : null, (calmRequiredWord ?
1687
- valueReasons.filter(function (m) { return m.content !== calmRequiredWord; })
1688
- : 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 ?
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) })
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 ?
1689
1777
  (0, jsx_runtime_1.jsx)(reqore_1.ReqoreControlGroup, { className: 'options-readfirst-info-panel', vertical: true, fluid: true, gapSize: 'normal', children: panelMessages.map(renderInfoStrip) })
1690
1778
  : null, showStructuredPreview ?
1691
1779
  // The inset lives inside the row now, so a click on a value chip would
@@ -1727,7 +1815,7 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1727
1815
  // lives (qorus-ide registers its brand purple there).
1728
1816
  // Falling back to `info` keeps this working for a
1729
1817
  // consumer that registers nothing — the heading is
1730
- // accented either way, just in the theme's own colour
1818
+ // accented either way, just in the theme's own color
1731
1819
  // rather than one this library picked.
1732
1820
  accent: ((_q = theme === null || theme === void 0 ? void 0 : theme.intents) === null || _q === void 0 ? void 0 : _q.custom1) || cInfo,
1733
1821
  }, onItemClick: function () { return activate(); } })
@@ -1741,7 +1829,12 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1741
1829
  options: options,
1742
1830
  values: availableOptions,
1743
1831
  })
1744
- : (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 }) }) })
1745
1838
  : null, showMarkdownPreview ?
1746
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 }) }) }) })
1747
1840
  : null, showLongTextInset ?
@@ -1761,12 +1854,12 @@ exports.CompactRow = (0, react_1.memo)(function (_a) {
1761
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 }) })
1762
1855
  : null, (0, jsx_runtime_1.jsx)(compactRowStyles_1.StyledActionSlot, { className: 'options-readfirst-statusdot-slot', "$width": 12, children: changed && !readOnly && !hidden ?
1763
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) {
1764
- var _a, _b, _c, _d;
1857
+ var _a;
1765
1858
  e.stopPropagation();
1766
- 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));
1767
1860
  } })
1768
1861
  : dotColor ?
1769
- (0, jsx_runtime_1.jsx)(compactRowStyles_1.StyledStatusDot, { className: 'options-readfirst-status-dot', "$color": dotColor, "$ring": dotStatus !== 'set', "aria-hidden": true })
1862
+ (0, jsx_runtime_1.jsx)(compactRowStyles_1.StyledStatusDot, { "$color": dotColor, "$ring": dotStatus !== 'set', "aria-hidden": true })
1770
1863
  : null })] })] }), optionName));
1771
1864
  return row;
1772
1865
  });