@qoretechnologies/reqraft 0.10.55-pr.124.g43fa138 → 0.10.55

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 (375) hide show
  1. package/.claude/CLAUDE.md +25 -0
  2. package/.tasks/INDEX.md +1 -0
  3. package/.tasks/STORY_NETWORK_ISOLATION.md +98 -0
  4. package/README.md +1 -1
  5. package/design/FORM_ENGINE_COMPACT.md +34 -0
  6. package/design/FORM_ENGINE_EXPRESSIONS.md +110 -0
  7. package/design/FORM_ENGINE_FIELD_MIGRATION.md +155 -1
  8. package/design/IDE_INTEGRATION.md +13 -0
  9. package/design/RENDER_EXPRESSION_TRANSPORT.md +76 -10
  10. package/design/SELECT_DIALOG_FLOOR.md +86 -0
  11. package/design/SMART_EDITOR_UX.md +21 -0
  12. package/design/UNAVAILABLE_ALLOWED_VALUES.md +226 -0
  13. package/dist/components/composer/Composer.d.ts +8 -3
  14. package/dist/components/composer/Composer.d.ts.map +1 -1
  15. package/dist/components/composer/Composer.js.map +1 -1
  16. package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
  17. package/dist/components/dpqlEditor/DpqlEditor.js +3 -3
  18. package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
  19. package/dist/components/dpqlEditor/dpqlHelpers.d.ts +6 -0
  20. package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
  21. package/dist/components/dpqlEditor/dpqlHelpers.js +21 -2
  22. package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
  23. package/dist/components/dpqlEditor/dpqlProbe.d.ts +37 -0
  24. package/dist/components/dpqlEditor/dpqlProbe.d.ts.map +1 -0
  25. package/dist/components/dpqlEditor/dpqlProbe.js +203 -0
  26. package/dist/components/dpqlEditor/dpqlProbe.js.map +1 -0
  27. package/dist/components/dpqlEditor/dpqlTags.d.ts +8 -0
  28. package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
  29. package/dist/components/dpqlEditor/dpqlTags.js +5 -1
  30. package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
  31. package/dist/components/dpqlEditor/index.d.ts +4 -0
  32. package/dist/components/dpqlEditor/index.d.ts.map +1 -1
  33. package/dist/components/dpqlEditor/index.js +5 -1
  34. package/dist/components/dpqlEditor/index.js.map +1 -1
  35. package/dist/components/dpqlEditor/types.d.ts +42 -2
  36. package/dist/components/dpqlEditor/types.d.ts.map +1 -1
  37. package/dist/components/dpqlEditor/types.js +0 -4
  38. package/dist/components/dpqlEditor/types.js.map +1 -1
  39. package/dist/components/dpqlEditor/useDpqlProbe.d.ts +4 -0
  40. package/dist/components/dpqlEditor/useDpqlProbe.d.ts.map +1 -0
  41. package/dist/components/dpqlEditor/useDpqlProbe.js +29 -0
  42. package/dist/components/dpqlEditor/useDpqlProbe.js.map +1 -0
  43. package/dist/components/dpqlEditor/useDpqlSession.d.ts +5 -2
  44. package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
  45. package/dist/components/dpqlEditor/useDpqlSession.js +8 -2
  46. package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
  47. package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
  48. package/dist/components/form/engine/CompactRow.js +414 -128
  49. package/dist/components/form/engine/CompactRow.js.map +1 -1
  50. package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
  51. package/dist/components/form/engine/CompactToolbar.js +5 -2
  52. package/dist/components/form/engine/CompactToolbar.js.map +1 -1
  53. package/dist/components/form/engine/FormEngine.d.ts +273 -22
  54. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  55. package/dist/components/form/engine/FormEngine.js +669 -192
  56. package/dist/components/form/engine/FormEngine.js.map +1 -1
  57. package/dist/components/form/engine/FormFieldsSkeleton.d.ts +48 -0
  58. package/dist/components/form/engine/FormFieldsSkeleton.d.ts.map +1 -0
  59. package/dist/components/form/engine/FormFieldsSkeleton.js +41 -0
  60. package/dist/components/form/engine/FormFieldsSkeleton.js.map +1 -0
  61. package/dist/components/form/engine/OptionFieldMessages.d.ts +108 -2
  62. package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
  63. package/dist/components/form/engine/OptionFieldMessages.js +203 -13
  64. package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
  65. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
  66. package/dist/components/form/engine/_structuredData/SchemaDataView.js +68 -5
  67. package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
  68. package/dist/components/form/engine/compactRowContext.d.ts +15 -1
  69. package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
  70. package/dist/components/form/engine/compactRowContext.js.map +1 -1
  71. package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
  72. package/dist/components/form/engine/compactRowStyles.js +55 -29
  73. package/dist/components/form/engine/compactRowStyles.js.map +1 -1
  74. package/dist/components/form/engine/compactToolbarContext.d.ts +1 -0
  75. package/dist/components/form/engine/compactToolbarContext.d.ts.map +1 -1
  76. package/dist/components/form/engine/optionActions.d.ts +37 -1
  77. package/dist/components/form/engine/optionActions.d.ts.map +1 -1
  78. package/dist/components/form/engine/optionActions.js +71 -1
  79. package/dist/components/form/engine/optionActions.js.map +1 -1
  80. package/dist/components/form/engine/optionsContext.d.ts +22 -0
  81. package/dist/components/form/engine/optionsContext.d.ts.map +1 -0
  82. package/dist/components/form/engine/optionsContext.js +20 -0
  83. package/dist/components/form/engine/optionsContext.js.map +1 -0
  84. package/dist/components/form/engine/readFirst.d.ts +42 -1
  85. package/dist/components/form/engine/readFirst.d.ts.map +1 -1
  86. package/dist/components/form/engine/readFirst.js +76 -8
  87. package/dist/components/form/engine/readFirst.js.map +1 -1
  88. package/dist/components/form/engine/rendererTypes.d.ts +42 -3
  89. package/dist/components/form/engine/rendererTypes.d.ts.map +1 -1
  90. package/dist/components/form/engine/rendererTypes.js +3 -1
  91. package/dist/components/form/engine/rendererTypes.js.map +1 -1
  92. package/dist/components/form/engine/rowFocus.d.ts +30 -0
  93. package/dist/components/form/engine/rowFocus.d.ts.map +1 -0
  94. package/dist/components/form/engine/rowFocus.js +93 -0
  95. package/dist/components/form/engine/rowFocus.js.map +1 -0
  96. package/dist/components/form/engine/rowMenuContext.d.ts +78 -0
  97. package/dist/components/form/engine/rowMenuContext.d.ts.map +1 -0
  98. package/dist/components/form/engine/rowMenuContext.js +103 -0
  99. package/dist/components/form/engine/rowMenuContext.js.map +1 -0
  100. package/dist/components/form/engine/rowOpenPicker.d.ts +27 -0
  101. package/dist/components/form/engine/rowOpenPicker.d.ts.map +1 -0
  102. package/dist/components/form/engine/rowOpenPicker.js +30 -0
  103. package/dist/components/form/engine/rowOpenPicker.js.map +1 -0
  104. package/dist/components/form/engine/typeChoices.d.ts +42 -0
  105. package/dist/components/form/engine/typeChoices.d.ts.map +1 -0
  106. package/dist/components/form/engine/typeChoices.js +33 -0
  107. package/dist/components/form/engine/typeChoices.js.map +1 -0
  108. package/dist/components/form/expressions/DpqlRendering.d.ts +26 -0
  109. package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -0
  110. package/dist/components/form/expressions/DpqlRendering.js +53 -0
  111. package/dist/components/form/expressions/DpqlRendering.js.map +1 -0
  112. package/dist/components/form/expressions/ExpressionField.d.ts +7 -1
  113. package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
  114. package/dist/components/form/expressions/ExpressionField.js +203 -45
  115. package/dist/components/form/expressions/ExpressionField.js.map +1 -1
  116. package/dist/components/form/expressions/argumentPresence.d.ts +84 -0
  117. package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -0
  118. package/dist/components/form/expressions/argumentPresence.js +217 -0
  119. package/dist/components/form/expressions/argumentPresence.js.map +1 -0
  120. package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
  121. package/dist/components/form/expressions/builder/argumentLabel.js +9 -4
  122. package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
  123. package/dist/components/form/expressions/builder/index.d.ts +15 -2
  124. package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
  125. package/dist/components/form/expressions/builder/index.js +21 -65
  126. package/dist/components/form/expressions/builder/index.js.map +1 -1
  127. package/dist/components/form/expressions/builder/renderTemplate.d.ts +4 -1
  128. package/dist/components/form/expressions/builder/renderTemplate.d.ts.map +1 -1
  129. package/dist/components/form/expressions/builder/renderTemplate.js +10 -67
  130. package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
  131. package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
  132. package/dist/components/form/expressions/mockExpressions.js +8 -4
  133. package/dist/components/form/expressions/mockExpressions.js.map +1 -1
  134. package/dist/components/form/expressions/renderExpressionToText.d.ts +1 -1
  135. package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
  136. package/dist/components/form/expressions/renderExpressionToText.js +95 -19
  137. package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
  138. package/dist/components/form/expressions/types.d.ts +17 -2
  139. package/dist/components/form/expressions/types.d.ts.map +1 -1
  140. package/dist/components/form/expressions/useExpressions.d.ts.map +1 -1
  141. package/dist/components/form/expressions/useExpressions.js +5 -2
  142. package/dist/components/form/expressions/useExpressions.js.map +1 -1
  143. package/dist/components/form/expressions/useRenderExpression.d.ts +7 -16
  144. package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
  145. package/dist/components/form/expressions/useRenderExpression.js +50 -126
  146. package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
  147. package/dist/components/form/fields/Field.d.ts +21 -0
  148. package/dist/components/form/fields/Field.d.ts.map +1 -1
  149. package/dist/components/form/fields/Field.js +54 -8
  150. package/dist/components/form/fields/Field.js.map +1 -1
  151. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts +11 -1
  152. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
  153. package/dist/components/form/fields/allowed-values/AllowedValues.js +52 -8
  154. package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
  155. package/dist/components/form/fields/auto/AutoFormField.d.ts +7 -1
  156. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
  157. package/dist/components/form/fields/auto/AutoFormField.js +91 -28
  158. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
  159. package/dist/components/form/fields/date/Date.d.ts +1 -1
  160. package/dist/components/form/fields/date/Date.d.ts.map +1 -1
  161. package/dist/components/form/fields/date/Date.js +16 -2
  162. package/dist/components/form/fields/date/Date.js.map +1 -1
  163. package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
  164. package/dist/components/form/fields/long-string/LongString.js +14 -2
  165. package/dist/components/form/fields/long-string/LongString.js.map +1 -1
  166. package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
  167. package/dist/components/form/fields/multi-select/MultiSelectFormField.js +50 -4
  168. package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
  169. package/dist/components/form/fields/number/Number.d.ts +12 -1
  170. package/dist/components/form/fields/number/Number.d.ts.map +1 -1
  171. package/dist/components/form/fields/number/Number.js +6 -3
  172. package/dist/components/form/fields/number/Number.js.map +1 -1
  173. package/dist/components/form/fields/rich-text/RichText.d.ts +47 -2
  174. package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
  175. package/dist/components/form/fields/rich-text/RichText.js +153 -12
  176. package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
  177. package/dist/components/form/fields/select/Select.d.ts.map +1 -1
  178. package/dist/components/form/fields/select/Select.js +120 -20
  179. package/dist/components/form/fields/select/Select.js.map +1 -1
  180. package/dist/components/form/fields/select/SelectCollection.d.ts +166 -9
  181. package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
  182. package/dist/components/form/fields/select/SelectCollection.js +200 -7
  183. package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
  184. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +2 -1
  185. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
  186. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +3 -2
  187. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
  188. package/dist/components/form/fields/template/TemplateField.d.ts +34 -2
  189. package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
  190. package/dist/components/form/fields/template/TemplateField.js +606 -58
  191. package/dist/components/form/fields/template/TemplateField.js.map +1 -1
  192. package/dist/components/form/fields/template/TemplateText.d.ts +36 -0
  193. package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -0
  194. package/dist/components/form/fields/template/TemplateText.js +80 -0
  195. package/dist/components/form/fields/template/TemplateText.js.map +1 -0
  196. package/dist/components/form/index.d.ts +2 -0
  197. package/dist/components/form/index.d.ts.map +1 -1
  198. package/dist/components/form/index.js +4 -0
  199. package/dist/components/form/index.js.map +1 -1
  200. package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
  201. package/dist/components/smartEditor/SmartEditor.js +29 -8
  202. package/dist/components/smartEditor/SmartEditor.js.map +1 -1
  203. package/dist/components/smartEditor/useLspSession.d.ts +5 -1
  204. package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
  205. package/dist/components/smartEditor/useLspSession.js +16 -2
  206. package/dist/components/smartEditor/useLspSession.js.map +1 -1
  207. package/dist/components/supportTicket/TicketReplyBox.d.ts +8 -4
  208. package/dist/components/supportTicket/TicketReplyBox.d.ts.map +1 -1
  209. package/dist/components/supportTicket/TicketReplyBox.js.map +1 -1
  210. package/dist/helpers/common.d.ts.map +1 -1
  211. package/dist/helpers/common.js +7 -3
  212. package/dist/helpers/common.js.map +1 -1
  213. package/dist/helpers/dpqlDetection.d.ts +58 -0
  214. package/dist/helpers/dpqlDetection.d.ts.map +1 -0
  215. package/dist/helpers/dpqlDetection.js +164 -0
  216. package/dist/helpers/dpqlDetection.js.map +1 -0
  217. package/dist/helpers/optionUiTypes.d.ts +31 -3
  218. package/dist/helpers/optionUiTypes.d.ts.map +1 -1
  219. package/dist/helpers/optionUiTypes.js +36 -1
  220. package/dist/helpers/optionUiTypes.js.map +1 -1
  221. package/dist/helpers/options.d.ts +57 -0
  222. package/dist/helpers/options.d.ts.map +1 -1
  223. package/dist/helpers/options.js +97 -1
  224. package/dist/helpers/options.js.map +1 -1
  225. package/dist/helpers/templateItems.d.ts +47 -0
  226. package/dist/helpers/templateItems.d.ts.map +1 -0
  227. package/dist/helpers/templateItems.js +88 -0
  228. package/dist/helpers/templateItems.js.map +1 -0
  229. package/dist/helpers/templateText.d.ts +80 -0
  230. package/dist/helpers/templateText.d.ts.map +1 -0
  231. package/dist/helpers/templateText.js +291 -0
  232. package/dist/helpers/templateText.js.map +1 -0
  233. package/dist/helpers/templates.d.ts +30 -12
  234. package/dist/helpers/templates.d.ts.map +1 -1
  235. package/dist/helpers/templates.js +91 -33
  236. package/dist/helpers/templates.js.map +1 -1
  237. package/dist/helpers/validations.d.ts +35 -8
  238. package/dist/helpers/validations.d.ts.map +1 -1
  239. package/dist/helpers/validations.js +162 -25
  240. package/dist/helpers/validations.js.map +1 -1
  241. package/dist/hooks/useArgSchema.d.ts +2 -1
  242. package/dist/hooks/useArgSchema.d.ts.map +1 -1
  243. package/dist/hooks/useFetch/useFetch.d.ts +3 -1
  244. package/dist/hooks/useFetch/useFetch.d.ts.map +1 -1
  245. package/dist/hooks/useFetch/useFetch.js +47 -9
  246. package/dist/hooks/useFetch/useFetch.js.map +1 -1
  247. package/dist/hooks/useTemplates.d.ts +20 -0
  248. package/dist/hooks/useTemplates.d.ts.map +1 -1
  249. package/dist/hooks/useTemplates.js +34 -2
  250. package/dist/hooks/useTemplates.js.map +1 -1
  251. package/dist/index.d.ts +2 -1
  252. package/dist/index.d.ts.map +1 -1
  253. package/dist/index.js +5 -1
  254. package/dist/index.js.map +1 -1
  255. package/dist/utils/fetch.d.ts +151 -1
  256. package/dist/utils/fetch.d.ts.map +1 -1
  257. package/dist/utils/fetch.js +256 -44
  258. package/dist/utils/fetch.js.map +1 -1
  259. package/dist/utils/lspClient.d.ts +6 -0
  260. package/dist/utils/lspClient.d.ts.map +1 -1
  261. package/dist/utils/lspClient.js +62 -11
  262. package/dist/utils/lspClient.js.map +1 -1
  263. package/dist/utils/websocket.d.ts +6 -0
  264. package/dist/utils/websocket.d.ts.map +1 -1
  265. package/dist/utils/websocket.js +15 -7
  266. package/dist/utils/websocket.js.map +1 -1
  267. package/package.json +10 -6
  268. package/src/components/composer/Composer.tsx +7 -2
  269. package/src/components/dpqlEditor/DpqlEditor.stories.tsx +3 -119
  270. package/src/components/dpqlEditor/DpqlEditor.tsx +5 -2
  271. package/src/components/dpqlEditor/dpqlHelpers.ts +20 -1
  272. package/src/components/dpqlEditor/dpqlProbe.ts +165 -0
  273. package/src/components/dpqlEditor/dpqlTags.ts +13 -0
  274. package/src/components/dpqlEditor/index.ts +4 -0
  275. package/src/components/dpqlEditor/types.ts +38 -2
  276. package/src/components/dpqlEditor/useDpqlProbe.ts +33 -0
  277. package/src/components/dpqlEditor/useDpqlSession.ts +20 -4
  278. package/src/components/form/engine/CompactRow.tsx +487 -160
  279. package/src/components/form/engine/CompactToolbar.tsx +10 -3
  280. package/src/components/form/engine/FormEngine.stories.tsx +1269 -201
  281. package/src/components/form/engine/FormEngine.tsx +922 -270
  282. package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +331 -0
  283. package/src/components/form/engine/FormFieldsSkeleton.tsx +77 -0
  284. package/src/components/form/engine/OptionFieldMessages.tsx +300 -14
  285. package/src/components/form/engine/_structuredData/SchemaDataView.tsx +94 -3
  286. package/src/components/form/engine/compactRowContext.ts +15 -6
  287. package/src/components/form/engine/compactRowStyles.ts +56 -2
  288. package/src/components/form/engine/compactToolbarContext.ts +1 -1
  289. package/src/components/form/engine/optionActions.ts +89 -1
  290. package/src/components/form/engine/optionsContext.ts +24 -0
  291. package/src/components/form/engine/readFirst.ts +88 -8
  292. package/src/components/form/engine/rendererTypes.ts +48 -4
  293. package/src/components/form/engine/rowFocus.ts +101 -0
  294. package/src/components/form/engine/rowMenuContext.ts +159 -0
  295. package/src/components/form/engine/rowOpenPicker.ts +27 -0
  296. package/src/components/form/engine/typeChoices.ts +63 -0
  297. package/src/components/form/expressions/DpqlRendering.tsx +85 -0
  298. package/src/components/form/expressions/ExpressionField.stories.tsx +826 -48
  299. package/src/components/form/expressions/ExpressionField.tsx +269 -55
  300. package/src/components/form/expressions/argumentPresence.ts +213 -0
  301. package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +38 -21
  302. package/src/components/form/expressions/builder/argumentLabel.tsx +10 -4
  303. package/src/components/form/expressions/builder/index.tsx +39 -81
  304. package/src/components/form/expressions/builder/renderTemplate.tsx +23 -56
  305. package/src/components/form/expressions/dpqlMockLanguage.ts +565 -0
  306. package/src/components/form/expressions/dpqlMockLsp.ts +109 -83
  307. package/src/components/form/expressions/mockExpressions.ts +8 -4
  308. package/src/components/form/expressions/renderExpressionToText.ts +112 -22
  309. package/src/components/form/expressions/types.ts +17 -2
  310. package/src/components/form/expressions/useExpressions.ts +5 -1
  311. package/src/components/form/expressions/useRenderExpression.ts +43 -127
  312. package/src/components/form/fields/Field.tsx +102 -20
  313. package/src/components/form/fields/allowed-values/AllowedValues.tsx +106 -44
  314. package/src/components/form/fields/auto/AutoFormField.stories.tsx +85 -18
  315. package/src/components/form/fields/auto/AutoFormField.tsx +97 -21
  316. package/src/components/form/fields/date/Date.tsx +17 -1
  317. package/src/components/form/fields/long-string/LongString.tsx +15 -3
  318. package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +65 -6
  319. package/src/components/form/fields/number/Number.tsx +25 -0
  320. package/src/components/form/fields/rich-text/RichText.tsx +248 -30
  321. package/src/components/form/fields/select/Select.stories.tsx +392 -0
  322. package/src/components/form/fields/select/Select.tsx +164 -27
  323. package/src/components/form/fields/select/SelectCollection.tsx +350 -6
  324. package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +4 -2
  325. package/src/components/form/fields/template/TemplateField.stories.tsx +93 -14
  326. package/src/components/form/fields/template/TemplateField.tsx +825 -131
  327. package/src/components/form/fields/template/TemplateText.tsx +115 -0
  328. package/src/components/form/index.tsx +4 -0
  329. package/src/components/log/Log.stories.tsx +2 -1
  330. package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +3 -3
  331. package/src/components/smartEditor/SmartEditor.tsx +41 -9
  332. package/src/components/smartEditor/__fixtures__/mockLspServer.ts +52 -3
  333. package/src/components/smartEditor/useLspSession.ts +21 -3
  334. package/src/components/supportTicket/TicketReplyBox.tsx +8 -4
  335. package/src/components/ticketThread/TicketThread.stories.tsx +1 -0
  336. package/src/helpers/common.ts +7 -3
  337. package/src/helpers/dpqlDetection.ts +209 -0
  338. package/src/helpers/optionUiTypes.ts +38 -0
  339. package/src/helpers/options.ts +96 -0
  340. package/src/helpers/templateItems.ts +81 -0
  341. package/src/helpers/templateText.ts +350 -0
  342. package/src/helpers/templates.ts +94 -41
  343. package/src/helpers/validations.ts +203 -51
  344. package/src/hooks/useFetch/useFetch.stories.tsx +6 -5
  345. package/src/hooks/useFetch/useFetch.tsx +53 -7
  346. package/src/hooks/useStorage/useStorage.stories.tsx +2 -1
  347. package/src/hooks/useTemplates.ts +41 -0
  348. package/src/hooks/useWebSocket/useWebsocket.stories.tsx +2 -1
  349. package/src/index.tsx +14 -1
  350. package/src/stores/currentUser/currentUser.stories.tsx +2 -1
  351. package/src/stories/storyNetwork.ts +92 -0
  352. package/src/utils/fetch.ts +311 -21
  353. package/src/utils/lspClient.ts +68 -11
  354. package/src/utils/websocket.ts +20 -9
  355. package/dist/components/form/engine/__fixtures__/basicFormOptions.d.ts +0 -73
  356. package/dist/components/form/engine/__fixtures__/basicFormOptions.d.ts.map +0 -1
  357. package/dist/components/form/engine/__fixtures__/basicFormOptions.js +0 -317
  358. package/dist/components/form/engine/__fixtures__/basicFormOptions.js.map +0 -1
  359. package/dist/components/form/engine/__fixtures__/fieldChromeOptions.d.ts +0 -41
  360. package/dist/components/form/engine/__fixtures__/fieldChromeOptions.d.ts.map +0 -1
  361. package/dist/components/form/engine/__fixtures__/fieldChromeOptions.js +0 -45
  362. package/dist/components/form/engine/__fixtures__/fieldChromeOptions.js.map +0 -1
  363. package/dist/components/form/expressions/dpqlMockLsp.d.ts +0 -3
  364. package/dist/components/form/expressions/dpqlMockLsp.d.ts.map +0 -1
  365. package/dist/components/form/expressions/dpqlMockLsp.js +0 -91
  366. package/dist/components/form/expressions/dpqlMockLsp.js.map +0 -1
  367. package/dist/components/form/fields/template/__fixtures__/longExampleValue.d.ts +0 -2
  368. package/dist/components/form/fields/template/__fixtures__/longExampleValue.d.ts.map +0 -1
  369. package/dist/components/form/fields/template/__fixtures__/longExampleValue.js +0 -9
  370. package/dist/components/form/fields/template/__fixtures__/longExampleValue.js.map +0 -1
  371. package/dist/components/smartEditor/__fixtures__/mockLspServer.d.ts +0 -55
  372. package/dist/components/smartEditor/__fixtures__/mockLspServer.d.ts.map +0 -1
  373. package/dist/components/smartEditor/__fixtures__/mockLspServer.js +0 -126
  374. package/dist/components/smartEditor/__fixtures__/mockLspServer.js.map +0 -1
  375. package/dist/stories/Data/fileFieldArgSchema.json +0 -86
@@ -1,4 +1,5 @@
1
1
  import { IReqoreTagProps } from '@qoretechnologies/reqore/dist/components/Tag';
2
+ import { TReqoreIntent } from '@qoretechnologies/reqore/dist/constants/theme';
2
3
  import { IQorusFormField, IQorusFormSchema, TQorusForm } from '@qoretechnologies/ts-toolkit';
3
4
  /** A `messages` entry that appears only for certain values of its siblings. */
4
5
  export interface IConditionalFieldMessage {
@@ -35,18 +36,123 @@ export interface IConditionalFieldMessage {
35
36
  export declare const isConditionalMessageShown: (message: IConditionalFieldMessage, allOptions?: TQorusForm, optionsSchema?: IQorusFormSchema) => boolean;
36
37
  /** The subset of a field's `messages` that applies right now. */
37
38
  export declare const getShownSchemaMessages: <T extends IConditionalFieldMessage>(messages: T[] | undefined, allOptions?: TQorusForm, optionsSchema?: IQorusFormSchema) => T[];
39
+ /**
40
+ * The whole `depends_on` list as one phrase.
41
+ *
42
+ * A nested entry is an OR — only one of its members has to hold. It used to be
43
+ * flattened into the same comma-separated list as the top-level entries, which
44
+ * are an AND, so an either/or was shown to the reader as a set of things all
45
+ * required. The alternatives now stay grouped and joined by "or".
46
+ */
47
+ export declare const describeDependencies: (dependencies: (string | string[])[] | string[][], schema: IQorusFormSchema) => string;
48
+ /**
49
+ * An allowed VALUE, as far as being offered is concerned.
50
+ *
51
+ * ts-toolkit 0.5.82 carries both `IQorusAllowedValue.depends_on` and
52
+ * `IQorusFormFieldMessage.when` / `unless`, so this no longer waits on a publish.
53
+ * It remains its own shape because it states only what DECIDING AVAILABILITY needs —
54
+ * three keys out of the twenty an allowed value can carry — so a caller that has
55
+ * only those three can be answered, and the predicate cannot quietly start reading
56
+ * a fourth.
57
+ */
58
+ export interface IAllowedValueAvailabilityInput {
59
+ /**
60
+ * The value is offered only while every entry holds — the SAME grammar, the
61
+ * same parser and the same evaluator a field's `depends_on` uses, one level
62
+ * down. For what this form can decide on its own.
63
+ */
64
+ depends_on?: (string | string[])[];
65
+ /**
66
+ * Someone who already knows has refused it — the server, for a sandbox or
67
+ * permission context, a capability of the selected kind, or a requirement in
68
+ * a scope `depends_on` deliberately cannot reach.
69
+ */
70
+ disabled?: boolean;
71
+ /** Where a refusal says why. */
72
+ messages?: IConditionalFieldMessage[];
73
+ }
74
+ /** Whether a value can be picked, and the sentence that stands in for it. */
75
+ export interface IAllowedValueAvailability {
76
+ available: boolean;
77
+ /** Why not. Read by the row itself, by its tooltip and by the list's search. */
78
+ reason?: string;
79
+ /** A heading the refusal came with, when it came with one. */
80
+ title?: string;
81
+ intent?: TReqoreIntent;
82
+ }
83
+ /** One object for every available value, so identity says "nothing to show". */
84
+ export declare const ALLOWED_VALUE_AVAILABLE: IAllowedValueAvailability;
85
+ /**
86
+ * Whether an offered value can be picked, and why not.
87
+ *
88
+ * Two things can refuse a value and they render identically, because a reader
89
+ * has no way to tell them apart and no reason to care:
90
+ *
91
+ * - **the predicate** — the value's own `depends_on`, judged against the form
92
+ * it is standing in. Whatever the form itself can decide.
93
+ * - **the pre-resolved refusal** — `disabled: true` with a message, from
94
+ * whoever already knows. A sandbox that denies a domain, a capability of the
95
+ * selected kind, a requirement in another value scope: none of them are
96
+ * reachable from a sibling's answer, and a predicate that pretended otherwise
97
+ * would be a predicate that never fires.
98
+ *
99
+ * The predicate is checked first when both could speak. It names a field in
100
+ * this very form, so the reader can act on it without leaving the row; a served
101
+ * reason is a statement about somewhere else.
102
+ *
103
+ * A value is never HIDDEN for either reason. A choice that vanishes takes its
104
+ * own explanation with it, and leaves the reader looking for something they
105
+ * were told exists.
106
+ */
107
+ export declare const getAllowedValueAvailability: (value: IAllowedValueAvailabilityInput | undefined, allOptions?: TQorusForm, schema?: IQorusFormSchema) => IAllowedValueAvailability;
108
+ /**
109
+ * The availability of each offered value, against the form the picker stands in.
110
+ *
111
+ * Aligned with `items`: the result at index `i` describes `items[i]`.
112
+ *
113
+ * The answer is computed INSIDE the context selector, not from a copy of the
114
+ * form values pulled out of it. `OptionsContext` hands down a fresh object on
115
+ * every render of the engine, so a picker that selected the values themselves
116
+ * would re-render on every keystroke anywhere in the form; selecting the
117
+ * computed answer re-renders it only when an availability actually changes.
118
+ *
119
+ * Values that gate on nothing skip the computation entirely, and that is a
120
+ * claim about each VALUE rather than about the field it belongs to. The gate
121
+ * used to be one flag for the whole list, so a single gated value in a
122
+ * thousand-item picker resolved all thousand and serialised all thousand on
123
+ * every keystroke anywhere in the form. Only the gated indices are resolved
124
+ * and serialised; every other position is the same frozen
125
+ * {@link ALLOWED_VALUE_AVAILABLE}, which costs nothing to fill in and lets
126
+ * identity say "nothing to show".
127
+ */
128
+ export declare const useAllowedValueAvailability: (items: readonly IAllowedValueAvailabilityInput[] | undefined) => IAllowedValueAvailability[];
38
129
  export interface IOptionFieldMessagesProps {
39
130
  schema: IQorusFormSchema;
40
131
  option: IQorusFormField;
41
132
  allOptions?: TQorusForm;
42
133
  name: string;
43
134
  getType: (type: string) => string;
135
+ /**
136
+ * The reader has not edited this field in this session.
137
+ *
138
+ * An error is a report that something went WRONG. "This field is required"
139
+ * under a field nobody has been in yet reports nothing: the form is empty
140
+ * because it is new. The requirement is already carried three other ways —
141
+ * the asterisk on the label, the Needs-attention box the row sits in, and the
142
+ * completion meter — so the message waits until the reader has been in the
143
+ * field and left it empty, which IS a thing that went wrong.
144
+ *
145
+ * Only the plain required message is held back. A value that fails
146
+ * validation, an unmet required GROUP and a locked dependency are all facts
147
+ * about what the form currently holds, and they show immediately.
148
+ */
149
+ untouched?: boolean;
44
150
  }
45
151
  /**
46
152
  * Compute the validation / required-group / dependency messages for an option —
47
153
  * pure, so the compact read-first rows can surface the same messages the
48
154
  * expanded editor shows (single source of truth).
49
155
  */
50
- export declare const getOptionFieldMessages: ({ schema, option, name, allOptions, getType, }: IOptionFieldMessagesProps) => IReqoreTagProps[];
51
- export declare const OptionFieldMessages: ({ schema, option, name, allOptions, getType, }: IOptionFieldMessagesProps) => import("react/jsx-runtime").JSX.Element;
156
+ export declare const getOptionFieldMessages: ({ schema, option, name, allOptions, getType, untouched, }: IOptionFieldMessagesProps) => IReqoreTagProps[];
157
+ export declare const OptionFieldMessages: ({ schema, option, name, allOptions, getType, untouched, }: IOptionFieldMessagesProps) => import("react/jsx-runtime").JSX.Element;
52
158
  //# sourceMappingURL=OptionFieldMessages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OptionFieldMessages.d.ts","sourceRoot":"","sources":["../../../../src/components/form/engine/OptionFieldMessages.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAU7F,+EAA+E;AAC/E,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;IAC7B,8EAA8E;IAC9E,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,yBAAyB,YAC3B,wBAAwB,eACpB,UAAU,kBACP,gBAAgB,KAC/B,OASF,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,sBAAsB,iDACvB,CAAC,EAAE,GAAG,SAAS,eACZ,UAAU,kBACP,gBAAgB,KAC/B,CAAC,EAA6F,CAAC;AAElG,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACnC;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,mDAMhC,yBAAyB,KAAG,eAAe,EA+D7C,CAAC;AAEF,eAAO,MAAM,mBAAmB,mDAM7B,yBAAyB,4CAoB3B,CAAC"}
1
+ {"version":3,"file":"OptionFieldMessages.d.ts","sourceRoot":"","sources":["../../../../src/components/form/engine/OptionFieldMessages.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAkB7F,+EAA+E;AAC/E,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;IAC7B,8EAA8E;IAC9E,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,yBAAyB,YAC3B,wBAAwB,eACpB,UAAU,kBACP,gBAAgB,KAC/B,OAYF,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,sBAAsB,iDACvB,CAAC,EAAE,GAAG,SAAS,eACZ,UAAU,kBACP,gBAAgB,KAC/B,CAAC,EAA6F,CAAC;AAoClG;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,iBACjB,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,UACxC,gBAAgB,KACvB,MAeY,CAAC;AAEhB;;;;;;;;;GASG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC;CACvC;AAED,6EAA6E;AAC7E,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,gFAAgF;AAChF,eAAO,MAAM,uBAAuB,EAAE,yBAEpC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,2BAA2B,UAC/B,8BAA8B,GAAG,SAAS,eACpC,UAAU,WACd,gBAAgB,KACxB,yBAiDF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,2BAA2B,UAC/B,SAAS,8BAA8B,EAAE,GAAG,SAAS,KAC3D,yBAAyB,EAsC3B,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAClC;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,8DAOhC,yBAAyB,KAAG,eAAe,EA6E7C,CAAC;AAEF,eAAO,MAAM,mBAAmB,8DAO7B,yBAAyB,4CAoB3B,CAAC"}
@@ -11,13 +11,16 @@ var __assign = (this && this.__assign) || function () {
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.OptionFieldMessages = exports.getOptionFieldMessages = exports.getShownSchemaMessages = exports.isConditionalMessageShown = void 0;
14
+ exports.OptionFieldMessages = exports.getOptionFieldMessages = exports.useAllowedValueAvailability = exports.getAllowedValueAvailability = exports.ALLOWED_VALUE_AVAILABLE = exports.describeDependencies = exports.getShownSchemaMessages = exports.isConditionalMessageShown = void 0;
15
15
  var jsx_runtime_1 = require("react/jsx-runtime");
16
16
  var reqore_1 = require("@qoretechnologies/reqore");
17
17
  var lodash_1 = require("lodash");
18
18
  var react_1 = require("react");
19
+ var use_context_selector_1 = require("use-context-selector");
19
20
  var options_1 = require("../../../helpers/options");
21
+ var optionUiTypes_1 = require("../../../helpers/optionUiTypes");
20
22
  var validations_1 = require("../../../helpers/validations");
23
+ var optionsContext_1 = require("./optionsContext");
21
24
  /**
22
25
  * Whether a schema message applies to the form as it currently stands.
23
26
  *
@@ -41,7 +44,8 @@ var isConditionalMessageShown = function (message, allOptions, optionsSchema) {
41
44
  if (message.when && !(0, validations_1.hasAllDependenciesFullfilled)(message.when, values, optionsSchema)) {
42
45
  return false;
43
46
  }
44
- if (message.unless && (0, validations_1.hasAllDependenciesFullfilled)(message.unless, values, optionsSchema)) {
47
+ if (message.unless &&
48
+ (0, validations_1.hasAllDependenciesFullfilled)(message.unless, values, optionsSchema)) {
45
49
  return false;
46
50
  }
47
51
  return true;
@@ -50,17 +54,202 @@ exports.isConditionalMessageShown = isConditionalMessageShown;
50
54
  /** The subset of a field's `messages` that applies right now. */
51
55
  var getShownSchemaMessages = function (messages, allOptions, optionsSchema) { return (messages || []).filter(function (m) { return (0, exports.isConditionalMessageShown)(m, allOptions, optionsSchema); }); };
52
56
  exports.getShownSchemaMessages = getShownSchemaMessages;
57
+ /**
58
+ * Name one `depends_on` entry so the reader can act on it.
59
+ *
60
+ * The list used to be built by looking each entry up as a whole field name,
61
+ * which is only ever true of the bare-name form. A COMPARISON entry
62
+ * (`kind=type`, `kind!=type`) matched no field, was dropped, and a field whose
63
+ * dependencies are all comparisons — the shape every subject field of a test
64
+ * uses — rendered "…are not fulfilled:" with nothing after the colon. The
65
+ * reader was told a dependency was unmet and not which one, by a sentence that
66
+ * stopped mid-way.
67
+ *
68
+ * One parser for both halves, the same one the evaluator uses, so the sentence
69
+ * and the lock cannot disagree about what an entry means.
70
+ */
71
+ var describeDependency = function (dependency, schema) {
72
+ var _a = (0, validations_1.parseDependency)(dependency), name = _a.name, op = _a.op, value = _a.value;
73
+ var dependencySchema = schema[name];
74
+ if (!dependencySchema) {
75
+ return undefined;
76
+ }
77
+ var label = "\"".concat(dependencySchema.display_name || name, "\"");
78
+ // `!name` names no value to compare against — it is satisfied by the sibling
79
+ // being unanswered — so it gets a sentence of its own rather than the
80
+ // comparison template, which would read `must not be "undefined"`.
81
+ if (op === '!') {
82
+ return "".concat(label, " must have no value");
83
+ }
84
+ return op ? "".concat(label, " must ").concat(op === '!=' ? 'not ' : '', "be \"").concat(value, "\"") : label;
85
+ };
86
+ /**
87
+ * The whole `depends_on` list as one phrase.
88
+ *
89
+ * A nested entry is an OR — only one of its members has to hold. It used to be
90
+ * flattened into the same comma-separated list as the top-level entries, which
91
+ * are an AND, so an either/or was shown to the reader as a set of things all
92
+ * required. The alternatives now stay grouped and joined by "or".
93
+ */
94
+ var describeDependencies = function (dependencies, schema) {
95
+ return dependencies
96
+ .map(function (entry) {
97
+ if (!(0, lodash_1.isArray)(entry)) {
98
+ return describeDependency(entry, schema);
99
+ }
100
+ var alternatives = entry
101
+ .map(function (dep) { return describeDependency(dep, schema); })
102
+ .filter(function (dep) { return !!dep; });
103
+ if (!alternatives.length) {
104
+ return undefined;
105
+ }
106
+ return alternatives.length > 1 ? "(".concat(alternatives.join(' or '), ")") : alternatives[0];
107
+ })
108
+ .filter(function (entry) { return !!entry; })
109
+ .join(', ');
110
+ };
111
+ exports.describeDependencies = describeDependencies;
112
+ /** One object for every available value, so identity says "nothing to show". */
113
+ exports.ALLOWED_VALUE_AVAILABLE = Object.freeze({
114
+ available: true,
115
+ });
116
+ /**
117
+ * Whether an offered value can be picked, and why not.
118
+ *
119
+ * Two things can refuse a value and they render identically, because a reader
120
+ * has no way to tell them apart and no reason to care:
121
+ *
122
+ * - **the predicate** — the value's own `depends_on`, judged against the form
123
+ * it is standing in. Whatever the form itself can decide.
124
+ * - **the pre-resolved refusal** — `disabled: true` with a message, from
125
+ * whoever already knows. A sandbox that denies a domain, a capability of the
126
+ * selected kind, a requirement in another value scope: none of them are
127
+ * reachable from a sibling's answer, and a predicate that pretended otherwise
128
+ * would be a predicate that never fires.
129
+ *
130
+ * The predicate is checked first when both could speak. It names a field in
131
+ * this very form, so the reader can act on it without leaving the row; a served
132
+ * reason is a statement about somewhere else.
133
+ *
134
+ * A value is never HIDDEN for either reason. A choice that vanishes takes its
135
+ * own explanation with it, and leaves the reader looking for something they
136
+ * were told exists.
137
+ */
138
+ var getAllowedValueAvailability = function (value, allOptions, schema) {
139
+ if (!value) {
140
+ return exports.ALLOWED_VALUE_AVAILABLE;
141
+ }
142
+ /* `allOptions` is undefined only when there is no form around the picker at
143
+ all (see `OptionsContext`). A predicate about siblings has nothing to judge
144
+ there, and locking every gated value in a standalone picker would be a
145
+ rendering fault rather than a fact about the form. */
146
+ if ((0, lodash_1.size)(value.depends_on) &&
147
+ allOptions &&
148
+ !(0, validations_1.hasAllDependenciesFullfilled)(value.depends_on, allOptions, schema)) {
149
+ var dependsOn = schema ? (0, exports.describeDependencies)(value.depends_on, schema) : '';
150
+ return {
151
+ available: false,
152
+ intent: 'warning',
153
+ reason: dependsOn ?
154
+ "Unavailable because some dependencies are not fulfilled: ".concat(dependsOn)
155
+ // Nothing nameable: every entry pointed at a field this schema does
156
+ // not contain. A sentence that ends in a colon and then stops reads
157
+ // as a rendering fault rather than as a fact about the form.
158
+ : 'Unavailable because some dependencies are not fulfilled',
159
+ };
160
+ }
161
+ if (value.disabled) {
162
+ /* The refusal picks its own words out of `messages`, through the same
163
+ `when`/`unless` filter a field's messages go through — a served reason
164
+ can itself be conditional. The most serious one speaks: a `danger`
165
+ message is the one that explains a refusal, and an `info` note beside it
166
+ is not. */
167
+ var explanation = (0, options_1.getRefusalMessage)((0, exports.getShownSchemaMessages)(value.messages, allOptions, schema));
168
+ return {
169
+ available: false,
170
+ intent: (explanation === null || explanation === void 0 ? void 0 : explanation.intent) || 'warning',
171
+ title: explanation === null || explanation === void 0 ? void 0 : explanation.title,
172
+ // A refusal with no message at all still has to say something: silence
173
+ // over a value that will not respond is the defect this whole mechanism
174
+ // exists to remove.
175
+ reason: (explanation === null || explanation === void 0 ? void 0 : explanation.content) || options_1.UNAVAILABLE_VALUE_FALLBACK_REASON,
176
+ };
177
+ }
178
+ return exports.ALLOWED_VALUE_AVAILABLE;
179
+ };
180
+ exports.getAllowedValueAvailability = getAllowedValueAvailability;
181
+ /**
182
+ * The availability of each offered value, against the form the picker stands in.
183
+ *
184
+ * Aligned with `items`: the result at index `i` describes `items[i]`.
185
+ *
186
+ * The answer is computed INSIDE the context selector, not from a copy of the
187
+ * form values pulled out of it. `OptionsContext` hands down a fresh object on
188
+ * every render of the engine, so a picker that selected the values themselves
189
+ * would re-render on every keystroke anywhere in the form; selecting the
190
+ * computed answer re-renders it only when an availability actually changes.
191
+ *
192
+ * Values that gate on nothing skip the computation entirely, and that is a
193
+ * claim about each VALUE rather than about the field it belongs to. The gate
194
+ * used to be one flag for the whole list, so a single gated value in a
195
+ * thousand-item picker resolved all thousand and serialised all thousand on
196
+ * every keystroke anywhere in the form. Only the gated indices are resolved
197
+ * and serialised; every other position is the same frozen
198
+ * {@link ALLOWED_VALUE_AVAILABLE}, which costs nothing to fill in and lets
199
+ * identity say "nothing to show".
200
+ */
201
+ var useAllowedValueAvailability = function (items) {
202
+ var gatedIndices = (0, react_1.useMemo)(function () {
203
+ return (items || []).reduce(function (indices, item, index) {
204
+ if ((0, lodash_1.size)(item === null || item === void 0 ? void 0 : item.depends_on) || (item === null || item === void 0 ? void 0 : item.disabled) === true) {
205
+ indices.push(index);
206
+ }
207
+ return indices;
208
+ }, []);
209
+ }, [items]);
210
+ var serialized = (0, use_context_selector_1.useContextSelector)(optionsContext_1.OptionsContext, function (context) {
211
+ return gatedIndices.length ?
212
+ JSON.stringify(gatedIndices.map(function (index) {
213
+ return (0, exports.getAllowedValueAvailability)(items[index], context.value, context.schema);
214
+ }))
215
+ : '';
216
+ });
217
+ return (0, react_1.useMemo)(function () {
218
+ var result = (items || []).map(function () { return exports.ALLOWED_VALUE_AVAILABLE; });
219
+ if (!serialized) {
220
+ return result;
221
+ }
222
+ // Aligned back onto the caller's own indices: the picker asks for
223
+ // `availability[i]` and must get the answer for `items[i]`.
224
+ var resolved = JSON.parse(serialized);
225
+ gatedIndices.forEach(function (index, position) {
226
+ result[index] = resolved[position];
227
+ });
228
+ return result;
229
+ }, [serialized, items, gatedIndices]);
230
+ };
231
+ exports.useAllowedValueAvailability = useAllowedValueAvailability;
53
232
  /**
54
233
  * Compute the validation / required-group / dependency messages for an option —
55
234
  * pure, so the compact read-first rows can surface the same messages the
56
235
  * expanded editor shows (single source of truth).
57
236
  */
58
237
  var getOptionFieldMessages = function (_a) {
59
- var schema = _a.schema, option = _a.option, name = _a.name, allOptions = _a.allOptions, getType = _a.getType;
238
+ var schema = _a.schema, option = _a.option, name = _a.name, allOptions = _a.allOptions, getType = _a.getType, untouched = _a.untouched;
60
239
  var optionSchema = schema[name];
61
240
  var result = [];
62
241
  if (option.value || option.value === false || option.value === 0 || option.value === null) {
63
- var validationData = (0, validations_1.validateFieldWithResult)(getType((optionSchema === null || optionSchema === void 0 ? void 0 : optionSchema.ui_type) || option.type), option.value, __assign(__assign({ has_to_have_value: true, isFunction: option.is_expression }, optionSchema), { optionSchema: schema }));
242
+ /* A concrete type the VALUE carries beats an untyped schema.
243
+ `auto`/`any` declare no type — the author picks one (Binary, Date, …)
244
+ and it is recorded beside the value. Reading the schema first validated
245
+ a binary value as `auto`, which auto-detects from the value and accepts
246
+ anything, so the form said the field needed attention while the field
247
+ itself gave no reason. The form's own check already prefers the stored
248
+ type (`getOptionFieldStorageType`); this is the same precedence. */
249
+ var schemaType = optionSchema === null || optionSchema === void 0 ? void 0 : optionSchema.ui_type;
250
+ var storedType = option.type;
251
+ var typeToValidate = (0, optionUiTypes_1.isUntypedOptionType)(schemaType) && storedType ? storedType : schemaType || storedType;
252
+ var validationData = (0, validations_1.validateFieldWithResult)(getType(typeToValidate), option.value, __assign(__assign({ has_to_have_value: true, isFunction: option.is_expression }, optionSchema), { optionSchema: schema }));
64
253
  if (!validationData.isValid) {
65
254
  result.push({
66
255
  label: validationData.reason || 'Field value is not valid',
@@ -69,7 +258,7 @@ var getOptionFieldMessages = function (_a) {
69
258
  }
70
259
  }
71
260
  else {
72
- if (optionSchema === null || optionSchema === void 0 ? void 0 : optionSchema.required) {
261
+ if ((optionSchema === null || optionSchema === void 0 ? void 0 : optionSchema.required) && !untouched) {
73
262
  result.push({ label: 'This field is required', intent: 'danger' });
74
263
  }
75
264
  if ((optionSchema === null || optionSchema === void 0 ? void 0 : optionSchema.required_groups) &&
@@ -83,13 +272,14 @@ var getOptionFieldMessages = function (_a) {
83
272
  }
84
273
  if ((optionSchema === null || optionSchema === void 0 ? void 0 : optionSchema.depends_on) &&
85
274
  !(0, validations_1.hasAllDependenciesFullfilled)(optionSchema.depends_on, allOptions, schema)) {
86
- var dependsOn = (0, lodash_1.flatten)(optionSchema.depends_on)
87
- .filter(function (dep) { return !!schema[dep]; })
88
- .map(function (dep) { return schema[dep].display_name || dep; })
89
- .map(function (dep) { return "\"".concat(dep, "\""); })
90
- .join(', ');
275
+ var dependsOn = (0, exports.describeDependencies)(optionSchema.depends_on, schema);
91
276
  result.push({
92
- label: "This field is disabled because some dependencies are not fulfilled: ".concat(dependsOn),
277
+ label: dependsOn ?
278
+ "This field is disabled because some dependencies are not fulfilled: ".concat(dependsOn)
279
+ // Nothing nameable: every entry pointed at a field this schema does
280
+ // not contain. A sentence that ends in a colon and then stops reads
281
+ // as a rendering fault rather than as a fact about the form.
282
+ : 'This field is disabled because some dependencies are not fulfilled',
93
283
  intent: 'warning',
94
284
  });
95
285
  }
@@ -97,8 +287,8 @@ var getOptionFieldMessages = function (_a) {
97
287
  };
98
288
  exports.getOptionFieldMessages = getOptionFieldMessages;
99
289
  var OptionFieldMessages = function (_a) {
100
- var schema = _a.schema, option = _a.option, name = _a.name, allOptions = _a.allOptions, getType = _a.getType;
101
- var messages = (0, react_1.useMemo)(function () { return (0, exports.getOptionFieldMessages)({ schema: schema, option: option, name: name, allOptions: allOptions, getType: getType }); }, [JSON.stringify(schema), JSON.stringify(option), JSON.stringify(allOptions), name]);
290
+ var schema = _a.schema, option = _a.option, name = _a.name, allOptions = _a.allOptions, getType = _a.getType, untouched = _a.untouched;
291
+ var messages = (0, react_1.useMemo)(function () { return (0, exports.getOptionFieldMessages)({ schema: schema, option: option, name: name, allOptions: allOptions, getType: getType, untouched: untouched }); }, [JSON.stringify(schema), JSON.stringify(option), JSON.stringify(allOptions), name, untouched]);
102
292
  if (!(0, lodash_1.size)(messages)) {
103
293
  return null;
104
294
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OptionFieldMessages.js","sourceRoot":"","sources":["../../../../src/components/form/engine/OptionFieldMessages.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OptionFieldMessages.js","sourceRoot":"","sources":["../../../../src/components/form/engine/OptionFieldMessages.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaDataView.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/engine/_structuredData/SchemaDataView.tsx"],"names":[],"mappings":"AAOA,OAAO,EAEL,gBAAgB,EAEjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAkQ1B,MAAM,WAAW,oBAAoB;IACnC,mEAAmE;IACnE,KAAK,EAAE,OAAO,CAAC;IACf,iEAAiE;IACjE,MAAM,EAAE,gBAAgB,CAAC;IACzB,uDAAuD;IACvD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;;OASG;IACH,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AA2UD,eAAO,MAAM,cAAc,gFAC2B,oBAAoB,6CASzE,CAAC;AAIF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,UAAW,OAAO,UAAU,OAAO,KAAG,OASrE,CAAC"}
1
+ {"version":3,"file":"SchemaDataView.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/engine/_structuredData/SchemaDataView.tsx"],"names":[],"mappings":"AAQA,OAAO,EAEL,gBAAgB,EAEjB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAqQ1B,MAAM,WAAW,oBAAoB;IACnC,mEAAmE;IACnE,KAAK,EAAE,OAAO,CAAC;IACf,iEAAiE;IACjE,MAAM,EAAE,gBAAgB,CAAC;IACzB,uDAAuD;IACvD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;;OASG;IACH,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAgaD,eAAO,MAAM,cAAc,gFAC2B,oBAAoB,6CASzE,CAAC;AAIF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,UAAW,OAAO,UAAU,OAAO,KAAG,OASrE,CAAC"}
@@ -10,12 +10,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.canRenderWithSchema = exports.SchemaDataView = void 0;
11
11
  var jsx_runtime_1 = require("react/jsx-runtime");
12
12
  var reqore_1 = require("@qoretechnologies/reqore");
13
+ var templateText_1 = require("../../../../helpers/templateText");
13
14
  var react_1 = __importDefault(require("react"));
14
15
  var styled_components_1 = __importDefault(require("styled-components"));
15
16
  var use_context_selector_1 = require("use-context-selector");
16
17
  var compactRowContext_1 = require("../compactRowContext");
17
18
  var compactRowStyles_1 = require("../compactRowStyles");
18
19
  var readFirst_1 = require("../readFirst");
20
+ var TemplateText_1 = require("../../fields/template/TemplateText");
19
21
  var structuredData_1 = require("./structuredData");
20
22
  /**
21
23
  * A read-only rendering of a value THROUGH the schema that describes it.
@@ -215,13 +217,40 @@ var labelColumn = function (value, schema) {
215
217
  var isNavigableUrl = function (value) {
216
218
  return typeof value === 'string' && /^(https?|wss?|ftps?):\/\//i.test(value);
217
219
  };
220
+ /**
221
+ * The reference chips inside a formatted value — none when it holds no
222
+ * reference at all.
223
+ *
224
+ * The preview is the SAME value the row above draws, one level down, and it
225
+ * reached the mono cell as a raw string: a sub-field holding
226
+ * `$._case.mode != 'simulate'` read as a chip on the row and as the engine's
227
+ * own spelling in the inset beneath it, which is a row disagreeing with itself
228
+ * about what its value is.
229
+ *
230
+ * A field's OWN list and grammar win where it declares them — the same
231
+ * precedence the rows use — falling back to the form's shared catalogue.
232
+ */
233
+ var referenceSegments = function (text, templates, fieldSchema) {
234
+ var _a;
235
+ if (typeof text !== 'string' || !text) {
236
+ return [];
237
+ }
238
+ var own = fieldSchema;
239
+ var segments = (0, templateText_1.templateTextSegments)(text, (_a = own === null || own === void 0 ? void 0 : own.templates) !== null && _a !== void 0 ? _a : templates, own === null || own === void 0 ? void 0 : own.templateToken);
240
+ return segments.some(function (segment) { return segment.kind === 'tag'; }) ? segments : [];
241
+ };
218
242
  /** One field's value, rendered the way its row above renders it. */
219
243
  var FieldValue = function (_a) {
244
+ var _b;
220
245
  var field = _a.field, fieldSchema = _a.fieldSchema, color = _a.color;
221
246
  var formatted = (0, readFirst_1.formatOptionValue)(field, fieldSchema);
222
247
  // An allowed value that carries a logo shows it here too, exactly as the row
223
248
  // above does — the preview is the same value, so it gets the same treatment.
249
+ // An option marked with an ICON rather than a logo gets the same, for the same
250
+ // reason: the mark is how a list of bare words is told apart, and dropping it
251
+ // here would make the preview disagree with the row it previews.
224
252
  var image = (0, readFirst_1.getAllowedValueImage)(field.value, fieldSchema);
253
+ var icon = (0, readFirst_1.getAllowedValueIcon)(field.value, fieldSchema);
225
254
  // Data reads in mono; a chosen label does not.
226
255
  //
227
256
  // "qorus-session" is a literal the author typed — an identifier where the
@@ -231,18 +260,43 @@ var FieldValue = function (_a) {
231
260
  // dress up a label as a value. Resolving through `allowed_values` is what
232
261
  // separates the two, and it is the same lookup that produced the text.
233
262
  var isChosenLabel = !!(0, readFirst_1.findAllowedValueOption)(field.value, fieldSchema);
263
+ /* Read from context, like the code renderer above: a level is arbitrarily
264
+ deep, and the form's catalogue is a property of the form rather than of any
265
+ one level. See `referenceSegments`. */
266
+ var templates = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.templates; });
267
+ var fieldTemplates = (_b = fieldSchema === null || fieldSchema === void 0 ? void 0 : fieldSchema.templates) !== null && _b !== void 0 ? _b : templates;
268
+ var segments = isNavigableUrl(field.value) ? [] : referenceSegments(formatted, templates, fieldSchema);
234
269
  return ((0, jsx_runtime_1.jsx)(compactRowStyles_1.StyledRowValue, { "$color": color, children: field.value === true || field.value === false ?
235
270
  (0, jsx_runtime_1.jsx)(reqore_1.ReqoreTag, { size: 'small', minimal: true, intent: field.value === true ? 'success' : 'danger', label: formatted })
236
271
  : (0, jsx_runtime_1.jsxs)("span", { className: "options-readfirst-valuetext".concat(isChosenLabel ? '' : ' schema-view-data'), style: isChosenLabel ? undefined : { fontFamily: compactRowStyles_1.MONO_FONT_STACK }, children: [image ?
237
272
  (0, jsx_runtime_1.jsx)(reqore_1.ReqoreIcon, { image: image, size: '14px', style: { flexShrink: 0, marginRight: 6, verticalAlign: 'middle' } })
238
- : null, isNavigableUrl(field.value) ?
273
+ : icon ?
274
+ (0, jsx_runtime_1.jsx)(reqore_1.ReqoreIcon, { icon: icon, size: '14px', style: { flexShrink: 0, marginRight: 6, verticalAlign: 'middle' } })
275
+ : null, isNavigableUrl(field.value) ?
239
276
  // The address IS the link — it used to render as inert text with a
240
277
  // separate icon button beside it to open it, which is two things
241
278
  // where there is one. ReqoreLink renders a real anchor, so
242
279
  // middle-click and "copy link address" still work;
243
280
  // `stopPropagation` because the row around it toggles.
244
281
  (0, jsx_runtime_1.jsx)(reqore_1.ReqoreLink, { className: 'schema-view-open-url', href: field.value, target: '_blank', rel: 'noreferrer noopener', onClick: function (event) { return event.stopPropagation(); }, children: formatted })
245
- : formatted] }) }));
282
+ : segments.length ?
283
+ // `full`: the preview is where a value that the row had to cut is
284
+ // shown whole, so its chips wrap rather than clipping.
285
+ (0, jsx_runtime_1.jsx)(TemplateText_1.TemplateText, { segments: segments, templates: fieldTemplates, full: true })
286
+ : formatted] }) }));
287
+ };
288
+ /**
289
+ * A value with no field schema of its own — a bare entry in a list, a level
290
+ * that turned out to be a scalar. It still reads as prose with named chips
291
+ * where it holds references, because a reference is not more raw for having
292
+ * arrived without a schema.
293
+ */
294
+ var ScalarText = function (_a) {
295
+ var text = _a.text, templates = _a.templates;
296
+ var segments = referenceSegments(text, templates);
297
+ return segments.length ?
298
+ (0, jsx_runtime_1.jsx)(TemplateText_1.TemplateText, { segments: segments, templates: templates, full: true })
299
+ : (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: text });
246
300
  };
247
301
  /** One described hash: its fields as label/value pairs in the shared columns. */
248
302
  var SchemaRecord = function (_a) {
@@ -302,6 +356,9 @@ var SchemaRecord = function (_a) {
302
356
  var SchemaLevel = function (_a) {
303
357
  var value = _a.value, schema = _a.schema, showTypes = _a.showTypes, colors = _a.colors;
304
358
  var inner = unwrap(value);
359
+ // Same reason as `FieldValue`: a heading and a bare list entry are values too,
360
+ // and a reference in one reads as a name everywhere else in the form.
361
+ var templates = (0, use_context_selector_1.useContextSelector)(compactRowContext_1.CompactRowContext, function (v) { return v.templates; });
305
362
  if (Array.isArray(inner)) {
306
363
  return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: inner.map(function (item, index) {
307
364
  var record = unwrap(item);
@@ -311,15 +368,21 @@ var SchemaLevel = function (_a) {
311
368
  if (!identity) {
312
369
  return null;
313
370
  }
314
- return ((0, jsx_runtime_1.jsx)(StyledItemTitle, { className: 'schema-view-item-title', "$color": colors.key, "$mono": identity.mono, "$accent": colors.accent, title: identity.label, children: identity.text }));
371
+ // An item is headed by one of its own fields, so the
372
+ // heading is that field's value and reads like it: a case
373
+ // named by a reference is named by the reference's NAME.
374
+ var titleSegments = referenceSegments(identity.text, templates, schema[identity.key]);
375
+ return ((0, jsx_runtime_1.jsx)(StyledItemTitle, { className: 'schema-view-item-title', "$color": colors.key, "$mono": identity.mono, "$accent": colors.accent, title: identity.label, children: titleSegments.length ?
376
+ (0, jsx_runtime_1.jsx)(TemplateText_1.TemplateText, { segments: titleSegments, templates: templates, full: true })
377
+ : identity.text }));
315
378
  })(), (0, jsx_runtime_1.jsx)(SchemaRecord, { record: record, schema: schema, showTypes: showTypes, colors: colors, skipKey: (0, readFirst_1.titleKeyFor)(record, schema) })] })
316
- : (0, jsx_runtime_1.jsx)(compactRowStyles_1.StyledRowValue, { "$color": colors.key, children: (0, jsx_runtime_1.jsx)("span", { className: 'options-readfirst-valuetext schema-view-data', style: { fontFamily: compactRowStyles_1.MONO_FONT_STACK }, children: (0, readFirst_1.formatOptionValue)({ value: record }) }) }) })] }, index));
379
+ : (0, jsx_runtime_1.jsx)(compactRowStyles_1.StyledRowValue, { "$color": colors.key, children: (0, jsx_runtime_1.jsx)("span", { className: 'options-readfirst-valuetext schema-view-data', style: { fontFamily: compactRowStyles_1.MONO_FONT_STACK }, children: (0, jsx_runtime_1.jsx)(ScalarText, { text: (0, readFirst_1.formatOptionValue)({ value: record }), templates: templates }) }) }) })] }, index));
317
380
  }) }));
318
381
  }
319
382
  if (isRecord(inner)) {
320
383
  return (0, jsx_runtime_1.jsx)(SchemaRecord, { record: inner, schema: schema, showTypes: showTypes, colors: colors });
321
384
  }
322
- return ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreP, { size: 'small', style: { color: colors.key }, children: (0, readFirst_1.formatOptionValue)({ value: inner }) }));
385
+ return ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreP, { size: 'small', style: { color: colors.key }, children: (0, jsx_runtime_1.jsx)(ScalarText, { text: (0, readFirst_1.formatOptionValue)({ value: inner }), templates: templates }) }));
323
386
  };
324
387
  exports.SchemaDataView = react_1.default.memo(function (_a) {
325
388
  var _b;