@wildo-ai/saas-frontend-lib 1.1.5 → 1.1.6

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 (777) hide show
  1. package/dist/esm/components/actions/action-bar.d.ts +15 -0
  2. package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
  3. package/dist/esm/components/actions/action-bar.js +15 -0
  4. package/dist/esm/components/actions/action-bar.js.map +1 -1
  5. package/dist/esm/components/ai-elements/decision/approval.d.ts +97 -7
  6. package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
  7. package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
  8. package/dist/esm/components/app/AppLayout_AuthenticatedRoute.d.ts.map +1 -1
  9. package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js +8 -3
  10. package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js.map +1 -1
  11. package/dist/esm/components/auth/Auth_EnrollmentRequired.d.ts.map +1 -1
  12. package/dist/esm/components/auth/Auth_EnrollmentRequired.js +5 -1
  13. package/dist/esm/components/auth/Auth_EnrollmentRequired.js.map +1 -1
  14. package/dist/esm/components/auth/Auth_Main.d.ts.map +1 -1
  15. package/dist/esm/components/auth/Auth_Main.js +1 -4
  16. package/dist/esm/components/auth/Auth_Main.js.map +1 -1
  17. package/dist/esm/components/auth/Auth_Register.d.ts.map +1 -1
  18. package/dist/esm/components/auth/Auth_Register.js +1 -3
  19. package/dist/esm/components/auth/Auth_Register.js.map +1 -1
  20. package/dist/esm/components/auth/StepUpAuthDialog.d.ts +7 -0
  21. package/dist/esm/components/auth/StepUpAuthDialog.d.ts.map +1 -1
  22. package/dist/esm/components/auth/StepUpAuthDialog.js +13 -7
  23. package/dist/esm/components/auth/StepUpAuthDialog.js.map +1 -1
  24. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.d.ts.map +1 -1
  25. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.js +32 -33
  26. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.js.map +1 -1
  27. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.d.ts.map +1 -1
  28. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.js +18 -20
  29. package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.js.map +1 -1
  30. package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.d.ts.map +1 -1
  31. package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.js +2 -3
  32. package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.js.map +1 -1
  33. package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.d.ts +13 -16
  34. package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.d.ts.map +1 -1
  35. package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.js +18 -15
  36. package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.js.map +1 -1
  37. package/dist/esm/components/billing/billing-invoice-history.js +2 -2
  38. package/dist/esm/components/billing/billing-invoice-history.js.map +1 -1
  39. package/dist/esm/components/billing/billing-portal-link.js +2 -2
  40. package/dist/esm/components/billing/billing-portal-link.js.map +1 -1
  41. package/dist/esm/components/billing/billing-pricing-table.d.ts +33 -1
  42. package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
  43. package/dist/esm/components/billing/billing-pricing-table.js +34 -5
  44. package/dist/esm/components/billing/billing-pricing-table.js.map +1 -1
  45. package/dist/esm/components/billing/billing-subscription-status.js +2 -2
  46. package/dist/esm/components/billing/billing-subscription-status.js.map +1 -1
  47. package/dist/esm/components/billing/billing-usage-dashboard.d.ts +2 -0
  48. package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
  49. package/dist/esm/components/billing/billing-usage-dashboard.js +1 -0
  50. package/dist/esm/components/billing/billing-usage-dashboard.js.map +1 -1
  51. package/dist/esm/components/data-display/DisplayField.d.ts.map +1 -1
  52. package/dist/esm/components/data-display/DisplayField.js +15 -1
  53. package/dist/esm/components/data-display/DisplayField.js.map +1 -1
  54. package/dist/esm/components/data-display/DisplayFieldArray.d.ts.map +1 -1
  55. package/dist/esm/components/data-display/DisplayFieldArray.js +11 -0
  56. package/dist/esm/components/data-display/DisplayFieldArray.js.map +1 -1
  57. package/dist/esm/components/data-display/DisplayFieldEditable.d.ts.map +1 -1
  58. package/dist/esm/components/data-display/DisplayFieldEditable.js +2 -2
  59. package/dist/esm/components/data-display/DisplayFieldEditable.js.map +1 -1
  60. package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts +12 -2
  61. package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts.map +1 -1
  62. package/dist/esm/components/data-display/DisplayFieldEditableArray.js +3 -2
  63. package/dist/esm/components/data-display/DisplayFieldEditableArray.js.map +1 -1
  64. package/dist/esm/components/data-display/DisplayFieldReadOnly.d.ts.map +1 -1
  65. package/dist/esm/components/data-display/DisplayFieldReadOnly.js +2 -2
  66. package/dist/esm/components/data-display/DisplayFieldReadOnly.js.map +1 -1
  67. package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.d.ts.map +1 -1
  68. package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.js +8 -2
  69. package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.js.map +1 -1
  70. package/dist/esm/components/data-display/DisplayValueDispatcher.d.ts.map +1 -1
  71. package/dist/esm/components/data-display/DisplayValueDispatcher.js +18 -4
  72. package/dist/esm/components/data-display/DisplayValueDispatcher.js.map +1 -1
  73. package/dist/esm/components/data-display/ResourceAutomaticDisplayer.d.ts.map +1 -1
  74. package/dist/esm/components/data-display/ResourceAutomaticDisplayer.js +61 -3
  75. package/dist/esm/components/data-display/ResourceAutomaticDisplayer.js.map +1 -1
  76. package/dist/esm/components/data-display/ResourceSummaryDisplayer.d.ts +7 -5
  77. package/dist/esm/components/data-display/ResourceSummaryDisplayer.d.ts.map +1 -1
  78. package/dist/esm/components/data-display/ResourceSummaryDisplayer.js.map +1 -1
  79. package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts +11 -1
  80. package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts.map +1 -1
  81. package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js +36 -11
  82. package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js.map +1 -1
  83. package/dist/esm/components/data-display/display-field-resolved-props.d.ts +6 -0
  84. package/dist/esm/components/data-display/display-field-resolved-props.d.ts.map +1 -1
  85. package/dist/esm/components/data-display/display-field-resolved-props.js.map +1 -1
  86. package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.d.ts +23 -0
  87. package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.d.ts.map +1 -0
  88. package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js +35 -0
  89. package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js.map +1 -0
  90. package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.d.ts +47 -0
  91. package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.d.ts.map +1 -0
  92. package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.js +124 -0
  93. package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.js.map +1 -0
  94. package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.d.ts +8 -0
  95. package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.d.ts.map +1 -0
  96. package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.js +46 -0
  97. package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.js.map +1 -0
  98. package/dist/esm/components/feedback/resource-empty-state.d.ts +21 -8
  99. package/dist/esm/components/feedback/resource-empty-state.d.ts.map +1 -1
  100. package/dist/esm/components/feedback/resource-empty-state.js +56 -26
  101. package/dist/esm/components/feedback/resource-empty-state.js.map +1 -1
  102. package/dist/esm/components/flows-actors/approval.d.ts +29 -7
  103. package/dist/esm/components/flows-actors/approval.d.ts.map +1 -1
  104. package/dist/esm/components/flows-actors/approval.js +231 -101
  105. package/dist/esm/components/flows-actors/approval.js.map +1 -1
  106. package/dist/esm/components/flows-actors/approval.labels.d.ts.map +1 -1
  107. package/dist/esm/components/flows-actors/approval.labels.js +57 -0
  108. package/dist/esm/components/flows-actors/approval.labels.js.map +1 -1
  109. package/dist/esm/components/flows-actors/system-catalog.d.ts.map +1 -1
  110. package/dist/esm/components/flows-actors/system-catalog.js +4 -4
  111. package/dist/esm/components/flows-actors/system-catalog.js.map +1 -1
  112. package/dist/esm/components/flows-actors/system-catalog.labels.d.ts.map +1 -1
  113. package/dist/esm/components/flows-actors/system-catalog.labels.js +0 -5
  114. package/dist/esm/components/flows-actors/system-catalog.labels.js.map +1 -1
  115. package/dist/esm/components/form/Form.d.ts +2 -2
  116. package/dist/esm/components/form/Form.js +2 -2
  117. package/dist/esm/components/form/Form.js.map +1 -1
  118. package/dist/esm/components/form/automated/AutomatedArrayField.d.ts +28 -3
  119. package/dist/esm/components/form/automated/AutomatedArrayField.d.ts.map +1 -1
  120. package/dist/esm/components/form/automated/AutomatedArrayField.js +43 -14
  121. package/dist/esm/components/form/automated/AutomatedArrayField.js.map +1 -1
  122. package/dist/esm/components/form/automated/FormField.d.ts +3 -0
  123. package/dist/esm/components/form/automated/FormField.d.ts.map +1 -1
  124. package/dist/esm/components/form/automated/FormField.js +60 -21
  125. package/dist/esm/components/form/automated/FormField.js.map +1 -1
  126. package/dist/esm/components/form/automated/FormFieldArray.d.ts +6 -3
  127. package/dist/esm/components/form/automated/FormFieldArray.d.ts.map +1 -1
  128. package/dist/esm/components/form/automated/FormFieldArray.js +3 -2
  129. package/dist/esm/components/form/automated/FormFieldArray.js.map +1 -1
  130. package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts +5 -4
  131. package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts.map +1 -1
  132. package/dist/esm/components/form/automated/ResourceAutomatedForm.js +148 -55
  133. package/dist/esm/components/form/automated/ResourceAutomatedForm.js.map +1 -1
  134. package/dist/esm/components/form/automated/ResourceFormActionsContext.d.ts +30 -0
  135. package/dist/esm/components/form/automated/ResourceFormActionsContext.d.ts.map +1 -1
  136. package/dist/esm/components/form/automated/ResourceFormActionsContext.js +30 -1
  137. package/dist/esm/components/form/automated/ResourceFormActionsContext.js.map +1 -1
  138. package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.d.ts +79 -0
  139. package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.d.ts.map +1 -0
  140. package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.js +203 -0
  141. package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.js.map +1 -0
  142. package/dist/esm/components/form/automated/automated-form-submit.utils.d.ts +12 -0
  143. package/dist/esm/components/form/automated/automated-form-submit.utils.d.ts.map +1 -1
  144. package/dist/esm/components/form/automated/automated-form-submit.utils.js +11 -0
  145. package/dist/esm/components/form/automated/automated-form-submit.utils.js.map +1 -1
  146. package/dist/esm/components/form/chromes/FormFieldChrome.d.ts.map +1 -1
  147. package/dist/esm/components/form/chromes/FormFieldChrome.js +2 -2
  148. package/dist/esm/components/form/chromes/FormFieldChrome.js.map +1 -1
  149. package/dist/esm/components/form/combobox.d.ts +7 -0
  150. package/dist/esm/components/form/combobox.d.ts.map +1 -1
  151. package/dist/esm/components/form/combobox.js.map +1 -1
  152. package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +1 -1
  153. package/dist/esm/components/form/controls/form-field-checkbox-group.js +13 -0
  154. package/dist/esm/components/form/controls/form-field-checkbox-group.js.map +1 -1
  155. package/dist/esm/components/form/fields/form-field-address.d.ts +58 -0
  156. package/dist/esm/components/form/fields/form-field-address.d.ts.map +1 -1
  157. package/dist/esm/components/form/fields/form-field-address.js +34 -6
  158. package/dist/esm/components/form/fields/form-field-address.js.map +1 -1
  159. package/dist/esm/components/form/fields/form-field-address.labels.d.ts.map +1 -1
  160. package/dist/esm/components/form/fields/form-field-address.labels.js +60 -1
  161. package/dist/esm/components/form/fields/form-field-address.labels.js.map +1 -1
  162. package/dist/esm/components/form/fields/form-field-file.d.ts +0 -12
  163. package/dist/esm/components/form/fields/form-field-file.d.ts.map +1 -1
  164. package/dist/esm/components/form/fields/form-field-file.js +34 -13
  165. package/dist/esm/components/form/fields/form-field-file.js.map +1 -1
  166. package/dist/esm/components/form/fields/form-field-file.labels.d.ts.map +1 -1
  167. package/dist/esm/components/form/fields/form-field-file.labels.js +46 -0
  168. package/dist/esm/components/form/fields/form-field-file.labels.js.map +1 -1
  169. package/dist/esm/components/form/fields/form-field-string-organization-role.d.ts +73 -0
  170. package/dist/esm/components/form/fields/form-field-string-organization-role.d.ts.map +1 -0
  171. package/dist/esm/components/form/fields/form-field-string-organization-role.js +64 -0
  172. package/dist/esm/components/form/fields/form-field-string-organization-role.js.map +1 -0
  173. package/dist/esm/components/form/fields/form-field-string.d.ts.map +1 -1
  174. package/dist/esm/components/form/fields/form-field-string.js +8 -1
  175. package/dist/esm/components/form/fields/form-field-string.js.map +1 -1
  176. package/dist/esm/components/form/fields/form-field-string.labels.d.ts.map +1 -1
  177. package/dist/esm/components/form/fields/form-field-string.labels.js +4 -0
  178. package/dist/esm/components/form/fields/form-field-string.labels.js.map +1 -1
  179. package/dist/esm/components/form/validation-errors/FormErrorSummary.js +1 -1
  180. package/dist/esm/components/form/validation-errors/FormErrorSummary.js.map +1 -1
  181. package/dist/esm/components/form/validation-errors/resolver-error-nesting.d.ts +31 -0
  182. package/dist/esm/components/form/validation-errors/resolver-error-nesting.d.ts.map +1 -0
  183. package/dist/esm/components/form/validation-errors/resolver-error-nesting.js +81 -0
  184. package/dist/esm/components/form/validation-errors/resolver-error-nesting.js.map +1 -0
  185. package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.d.ts +14 -1
  186. package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.d.ts.map +1 -1
  187. package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.js +14 -0
  188. package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.js.map +1 -1
  189. package/dist/esm/components/form/validation-errors/zod-issue-resolver.d.ts +22 -0
  190. package/dist/esm/components/form/validation-errors/zod-issue-resolver.d.ts.map +1 -1
  191. package/dist/esm/components/form/validation-errors/zod-issue-resolver.js +1 -22
  192. package/dist/esm/components/form/validation-errors/zod-issue-resolver.js.map +1 -1
  193. package/dist/esm/components/layout/resizable.d.ts +11 -0
  194. package/dist/esm/components/layout/resizable.d.ts.map +1 -1
  195. package/dist/esm/components/layout/resizable.js.map +1 -1
  196. package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.d.ts +11 -1
  197. package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.d.ts.map +1 -1
  198. package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.js +15 -3
  199. package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.js.map +1 -1
  200. package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.d.ts +2 -2
  201. package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.d.ts.map +1 -1
  202. package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.js.map +1 -1
  203. package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.d.ts +2 -2
  204. package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.js +2 -2
  205. package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.js.map +1 -1
  206. package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js +18 -20
  207. package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js.map +1 -1
  208. package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.d.ts.map +1 -1
  209. package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.js +7 -1
  210. package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.js.map +1 -1
  211. package/dist/esm/components/navigation/app-level/useMenuBarBehavior.d.ts.map +1 -1
  212. package/dist/esm/components/navigation/app-level/useMenuBarBehavior.js +4 -1
  213. package/dist/esm/components/navigation/app-level/useMenuBarBehavior.js.map +1 -1
  214. package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.d.ts.map +1 -1
  215. package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.js +18 -2
  216. package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.js.map +1 -1
  217. package/dist/esm/components/navigation/app-level/useSidebarBehavior.d.ts.map +1 -1
  218. package/dist/esm/components/navigation/app-level/useSidebarBehavior.js +82 -10
  219. package/dist/esm/components/navigation/app-level/useSidebarBehavior.js.map +1 -1
  220. package/dist/esm/components/navigation/app-level/useStatusBarBehavior.d.ts +2 -2
  221. package/dist/esm/components/navigation/app-level/useStatusBarBehavior.d.ts.map +1 -1
  222. package/dist/esm/components/navigation/app-level/useStatusBarBehavior.js.map +1 -1
  223. package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.d.ts.map +1 -1
  224. package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js +8 -1
  225. package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js.map +1 -1
  226. package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts +8 -2
  227. package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts.map +1 -1
  228. package/dist/esm/components/resources/ResourceCollectionToolbar.js +6 -2
  229. package/dist/esm/components/resources/ResourceCollectionToolbar.js.map +1 -1
  230. package/dist/esm/components/resources/ResourceLayout_Breadcrumb.d.ts.map +1 -1
  231. package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js +31 -16
  232. package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js.map +1 -1
  233. package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.d.ts.map +1 -1
  234. package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.js +23 -8
  235. package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.js.map +1 -1
  236. package/dist/esm/components/resources/ResourceLayout_ContainerNested.js +2 -2
  237. package/dist/esm/components/resources/ResourceLayout_ContainerNested.js.map +1 -1
  238. package/dist/esm/components/resources/ResourceLayout_Header.d.ts +13 -0
  239. package/dist/esm/components/resources/ResourceLayout_Header.d.ts.map +1 -1
  240. package/dist/esm/components/resources/ResourceLayout_Header.js +55 -28
  241. package/dist/esm/components/resources/ResourceLayout_Header.js.map +1 -1
  242. package/dist/esm/components/resources/ResourceLayout_List.d.ts.map +1 -1
  243. package/dist/esm/components/resources/ResourceLayout_List.js +41 -20
  244. package/dist/esm/components/resources/ResourceLayout_List.js.map +1 -1
  245. package/dist/esm/components/resources/ResourceLayout_List.labels.d.ts.map +1 -1
  246. package/dist/esm/components/resources/ResourceLayout_List.labels.js +1 -2
  247. package/dist/esm/components/resources/ResourceLayout_List.labels.js.map +1 -1
  248. package/dist/esm/components/resources/ResourceLayout_Read.d.ts +9 -4
  249. package/dist/esm/components/resources/ResourceLayout_Read.d.ts.map +1 -1
  250. package/dist/esm/components/resources/ResourceLayout_Read.js +30 -11
  251. package/dist/esm/components/resources/ResourceLayout_Read.js.map +1 -1
  252. package/dist/esm/components/resources/ResourceLayout_ReadSummary.d.ts.map +1 -1
  253. package/dist/esm/components/resources/ResourceLayout_ReadSummary.js +4 -2
  254. package/dist/esm/components/resources/ResourceLayout_ReadSummary.js.map +1 -1
  255. package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.d.ts.map +1 -1
  256. package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.js +6 -2
  257. package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.js.map +1 -1
  258. package/dist/esm/components/resources/ResourceLayout_Search.d.ts.map +1 -1
  259. package/dist/esm/components/resources/ResourceLayout_Search.js +30 -14
  260. package/dist/esm/components/resources/ResourceLayout_Search.js.map +1 -1
  261. package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.d.ts.map +1 -1
  262. package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js +14 -198
  263. package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js.map +1 -1
  264. package/dist/esm/components/resources/ResourceLayout_Update.d.ts +2 -2
  265. package/dist/esm/components/resources/ResourceLayout_Update.js +2 -2
  266. package/dist/esm/components/resources/ResourceLayout_Update.js.map +1 -1
  267. package/dist/esm/components/resources/ResourceListItemRenderer.d.ts.map +1 -1
  268. package/dist/esm/components/resources/ResourceListItemRenderer.js +69 -39
  269. package/dist/esm/components/resources/ResourceListItemRenderer.js.map +1 -1
  270. package/dist/esm/components/resources/ResourceOperationActionDropdown.d.ts +32 -0
  271. package/dist/esm/components/resources/ResourceOperationActionDropdown.d.ts.map +1 -0
  272. package/dist/esm/components/resources/ResourceOperationActionDropdown.js +130 -0
  273. package/dist/esm/components/resources/ResourceOperationActionDropdown.js.map +1 -0
  274. package/dist/esm/components/resources/collection-create-placement.utils.d.ts +32 -0
  275. package/dist/esm/components/resources/collection-create-placement.utils.d.ts.map +1 -0
  276. package/dist/esm/components/resources/collection-create-placement.utils.js +37 -0
  277. package/dist/esm/components/resources/collection-create-placement.utils.js.map +1 -0
  278. package/dist/esm/components/resources/embeds/RelatedResourcePreview.d.ts.map +1 -1
  279. package/dist/esm/components/resources/embeds/RelatedResourcePreview.js +5 -1
  280. package/dist/esm/components/resources/embeds/RelatedResourcePreview.js.map +1 -1
  281. package/dist/esm/components/resources/embeds/RelatedResourceSections.d.ts +8 -1
  282. package/dist/esm/components/resources/embeds/RelatedResourceSections.d.ts.map +1 -1
  283. package/dist/esm/components/resources/embeds/RelatedResourceSections.js +49 -2
  284. package/dist/esm/components/resources/embeds/RelatedResourceSections.js.map +1 -1
  285. package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts +22 -0
  286. package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts.map +1 -1
  287. package/dist/esm/components/resources/embeds/ResourceEmbeds.js +85 -2
  288. package/dist/esm/components/resources/embeds/ResourceEmbeds.js.map +1 -1
  289. package/dist/esm/components/resources/resourceLayout.utils.d.ts +14 -0
  290. package/dist/esm/components/resources/resourceLayout.utils.d.ts.map +1 -1
  291. package/dist/esm/components/resources/resourceLayout.utils.js +22 -0
  292. package/dist/esm/components/resources/resourceLayout.utils.js.map +1 -1
  293. package/dist/esm/components/resources/skeleton/ArrayField.d.ts.map +1 -1
  294. package/dist/esm/components/resources/skeleton/ArrayField.js +3 -0
  295. package/dist/esm/components/resources/skeleton/ArrayField.js.map +1 -1
  296. package/dist/esm/components/resources/skeleton/FormLayout.d.ts.map +1 -1
  297. package/dist/esm/components/resources/skeleton/FormLayout.js +33 -1
  298. package/dist/esm/components/resources/skeleton/FormLayout.js.map +1 -1
  299. package/dist/esm/components/resources/skeleton/ObjectScope.d.ts.map +1 -1
  300. package/dist/esm/components/resources/skeleton/ObjectScope.js +3 -0
  301. package/dist/esm/components/resources/skeleton/ObjectScope.js.map +1 -1
  302. package/dist/esm/components/resources/skeleton/Section.d.ts +12 -0
  303. package/dist/esm/components/resources/skeleton/Section.d.ts.map +1 -1
  304. package/dist/esm/components/resources/skeleton/Section.js +28 -2
  305. package/dist/esm/components/resources/skeleton/Section.js.map +1 -1
  306. package/dist/esm/components/resources/skeleton/SectionFieldsContext.d.ts +70 -0
  307. package/dist/esm/components/resources/skeleton/SectionFieldsContext.d.ts.map +1 -1
  308. package/dist/esm/components/resources/skeleton/SectionFieldsContext.js +157 -1
  309. package/dist/esm/components/resources/skeleton/SectionFieldsContext.js.map +1 -1
  310. package/dist/esm/components/resources/skeleton/WizardLayout.d.ts +6 -0
  311. package/dist/esm/components/resources/skeleton/WizardLayout.d.ts.map +1 -1
  312. package/dist/esm/components/resources/skeleton/WizardLayout.js +13 -2
  313. package/dist/esm/components/resources/skeleton/WizardLayout.js.map +1 -1
  314. package/dist/esm/components/resources/skeleton/WizardStep.d.ts.map +1 -1
  315. package/dist/esm/components/resources/skeleton/WizardStep.js +2 -1
  316. package/dist/esm/components/resources/skeleton/WizardStep.js.map +1 -1
  317. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.d.ts.map +1 -1
  318. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.js +61 -15
  319. package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.js.map +1 -1
  320. package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.d.ts +24 -2
  321. package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.d.ts.map +1 -1
  322. package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.js +69 -1
  323. package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.js.map +1 -1
  324. package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.d.ts.map +1 -1
  325. package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.js +18 -19
  326. package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.js.map +1 -1
  327. package/dist/esm/components/sections/ContentSectionContainer.d.ts.map +1 -1
  328. package/dist/esm/components/sections/ContentSectionContainer.js +5 -4
  329. package/dist/esm/components/sections/ContentSectionContainer.js.map +1 -1
  330. package/dist/esm/components/sections/stepper.d.ts +5 -0
  331. package/dist/esm/components/sections/stepper.d.ts.map +1 -1
  332. package/dist/esm/components/sections/stepper.js.map +1 -1
  333. package/dist/esm/components/sections/surface.d.ts.map +1 -1
  334. package/dist/esm/components/sections/surface.js +12 -3
  335. package/dist/esm/components/sections/surface.js.map +1 -1
  336. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.d.ts +43 -0
  337. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.d.ts.map +1 -0
  338. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.js +129 -0
  339. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.js.map +1 -0
  340. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.d.ts +3 -0
  341. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.d.ts.map +1 -0
  342. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.js +34 -0
  343. package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.js.map +1 -0
  344. package/dist/esm/components/settings/AppPage_AppearanceSettings.d.ts.map +1 -1
  345. package/dist/esm/components/settings/AppPage_AppearanceSettings.js +9 -11
  346. package/dist/esm/components/settings/AppPage_AppearanceSettings.js.map +1 -1
  347. package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.d.ts.map +1 -1
  348. package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.js +3 -2
  349. package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.js.map +1 -1
  350. package/dist/esm/components/settings/AppPage_BillingSettings.d.ts +4 -2
  351. package/dist/esm/components/settings/AppPage_BillingSettings.d.ts.map +1 -1
  352. package/dist/esm/components/settings/AppPage_BillingSettings.js +21 -3
  353. package/dist/esm/components/settings/AppPage_BillingSettings.js.map +1 -1
  354. package/dist/esm/components/settings/AppPage_BillingSettings.labels.d.ts.map +1 -1
  355. package/dist/esm/components/settings/AppPage_BillingSettings.labels.js +5 -10
  356. package/dist/esm/components/settings/AppPage_BillingSettings.labels.js.map +1 -1
  357. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts +58 -0
  358. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts.map +1 -1
  359. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js +243 -40
  360. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js.map +1 -1
  361. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.d.ts.map +1 -1
  362. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js +67 -6
  363. package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js.map +1 -1
  364. package/dist/esm/components/settings/AppPage_InvitationsSettings.d.ts.map +1 -1
  365. package/dist/esm/components/settings/AppPage_InvitationsSettings.js +19 -11
  366. package/dist/esm/components/settings/AppPage_InvitationsSettings.js.map +1 -1
  367. package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.d.ts.map +1 -1
  368. package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.js +4 -2
  369. package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.js.map +1 -1
  370. package/dist/esm/components/settings/SettingsHub.d.ts.map +1 -1
  371. package/dist/esm/components/settings/SettingsHub.js +3 -0
  372. package/dist/esm/components/settings/SettingsHub.js.map +1 -1
  373. package/dist/esm/components/settings/SettingsResourceOperationPanel.d.ts.map +1 -1
  374. package/dist/esm/components/settings/SettingsResourceOperationPanel.js +16 -1
  375. package/dist/esm/components/settings/SettingsResourceOperationPanel.js.map +1 -1
  376. package/dist/esm/components/settings/useOwnerProviderConnections.d.ts +59 -0
  377. package/dist/esm/components/settings/useOwnerProviderConnections.d.ts.map +1 -0
  378. package/dist/esm/components/settings/useOwnerProviderConnections.js +136 -0
  379. package/dist/esm/components/settings/useOwnerProviderConnections.js.map +1 -0
  380. package/dist/esm/components/views/chart-view/chart-view.utils.d.ts +5 -0
  381. package/dist/esm/components/views/chart-view/chart-view.utils.d.ts.map +1 -1
  382. package/dist/esm/components/views/chart-view/chart-view.utils.js +5 -0
  383. package/dist/esm/components/views/chart-view/chart-view.utils.js.map +1 -1
  384. package/dist/esm/components/views/chart-view/useResourceChartData.d.ts +50 -0
  385. package/dist/esm/components/views/chart-view/useResourceChartData.d.ts.map +1 -0
  386. package/dist/esm/components/views/chart-view/useResourceChartData.js +72 -0
  387. package/dist/esm/components/views/chart-view/useResourceChartData.js.map +1 -0
  388. package/dist/esm/components/views/composite-view/CompositeLayout.d.ts.map +1 -1
  389. package/dist/esm/components/views/composite-view/CompositeLayout.js +2 -1
  390. package/dist/esm/components/views/composite-view/CompositeLayout.js.map +1 -1
  391. package/dist/esm/core/app-shell/AppShellBuildingBlocks.d.ts +86 -0
  392. package/dist/esm/core/app-shell/AppShellBuildingBlocks.d.ts.map +1 -0
  393. package/dist/esm/core/app-shell/AppShellBuildingBlocks.js +187 -0
  394. package/dist/esm/core/app-shell/AppShellBuildingBlocks.js.map +1 -0
  395. package/dist/esm/core/app-shell/PortalContainerContext.d.ts +5 -2
  396. package/dist/esm/core/app-shell/PortalContainerContext.d.ts.map +1 -1
  397. package/dist/esm/core/app-shell/PortalContainerContext.js +5 -2
  398. package/dist/esm/core/app-shell/PortalContainerContext.js.map +1 -1
  399. package/dist/esm/core/app-shell/app-shell.schemas.d.ts +18 -9
  400. package/dist/esm/core/app-shell/app-shell.schemas.d.ts.map +1 -1
  401. package/dist/esm/core/app-shell/app-shell.schemas.js +1 -0
  402. package/dist/esm/core/app-shell/app-shell.schemas.js.map +1 -1
  403. package/dist/esm/core/app-shell/useAppShellLayout.d.ts +10 -0
  404. package/dist/esm/core/app-shell/useAppShellLayout.d.ts.map +1 -1
  405. package/dist/esm/core/app-shell/useAppShellLayout.js +28 -5
  406. package/dist/esm/core/app-shell/useAppShellLayout.js.map +1 -1
  407. package/dist/esm/core/app-shell/usePublicShellLayout.d.ts.map +1 -1
  408. package/dist/esm/core/app-shell/usePublicShellLayout.js +38 -0
  409. package/dist/esm/core/app-shell/usePublicShellLayout.js.map +1 -1
  410. package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts +15 -1
  411. package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts.map +1 -1
  412. package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js +47 -13
  413. package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js.map +1 -1
  414. package/dist/esm/core/billing/BillingContext.d.ts +25 -2
  415. package/dist/esm/core/billing/BillingContext.d.ts.map +1 -1
  416. package/dist/esm/core/billing/BillingContext.js +16 -25
  417. package/dist/esm/core/billing/BillingContext.js.map +1 -1
  418. package/dist/esm/core/billing/billing-provider-display.frontend.utils.d.ts +11 -3
  419. package/dist/esm/core/billing/billing-provider-display.frontend.utils.d.ts.map +1 -1
  420. package/dist/esm/core/billing/billing-provider-display.frontend.utils.js +14 -8
  421. package/dist/esm/core/billing/billing-provider-display.frontend.utils.js.map +1 -1
  422. package/dist/esm/core/billing/useBillingPlanChange.d.ts.map +1 -1
  423. package/dist/esm/core/billing/useBillingPlanChange.js +2 -0
  424. package/dist/esm/core/billing/useBillingPlanChange.js.map +1 -1
  425. package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.d.ts.map +1 -1
  426. package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.js +1 -0
  427. package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.js.map +1 -1
  428. package/dist/esm/core/components-registry/provider-component-registry.frontend.service.d.ts +29 -229
  429. package/dist/esm/core/components-registry/provider-component-registry.frontend.service.d.ts.map +1 -1
  430. package/dist/esm/core/components-registry/provider-component-registry.frontend.service.js +29 -327
  431. package/dist/esm/core/components-registry/provider-component-registry.frontend.service.js.map +1 -1
  432. package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.d.ts +17 -27
  433. package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.d.ts.map +1 -1
  434. package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.js +28 -48
  435. package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.js.map +1 -1
  436. package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts +21 -11
  437. package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts.map +1 -1
  438. package/dist/esm/core/config/app-configuration-frontend.schemas.js +4 -4
  439. package/dist/esm/core/config/app-configuration-frontend.schemas.js.map +1 -1
  440. package/dist/esm/core/config/app-level-components.frontend.schemas.d.ts +17 -0
  441. package/dist/esm/core/config/app-level-components.frontend.schemas.d.ts.map +1 -1
  442. package/dist/esm/core/config/app-level-components.frontend.schemas.js +17 -0
  443. package/dist/esm/core/config/app-level-components.frontend.schemas.js.map +1 -1
  444. package/dist/esm/core/config/chart-view.frontend.schemas.d.ts +10 -10
  445. package/dist/esm/core/config/engine-settings-destinations.d.ts.map +1 -1
  446. package/dist/esm/core/config/engine-settings-destinations.js +221 -6
  447. package/dist/esm/core/config/engine-settings-destinations.js.map +1 -1
  448. package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts +8 -0
  449. package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts.map +1 -1
  450. package/dist/esm/core/config/launcher-items.frontend.schemas.js +1 -0
  451. package/dist/esm/core/config/launcher-items.frontend.schemas.js.map +1 -1
  452. package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts +10 -1
  453. package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts.map +1 -1
  454. package/dist/esm/core/config/settings-hub.frontend.schemas.js +9 -0
  455. package/dist/esm/core/config/settings-hub.frontend.schemas.js.map +1 -1
  456. package/dist/esm/core/config/verify-launcher-content.d.ts.map +1 -1
  457. package/dist/esm/core/config/verify-launcher-content.js +30 -19
  458. package/dist/esm/core/config/verify-launcher-content.js.map +1 -1
  459. package/dist/esm/core/errors/ErrorContext.d.ts.map +1 -1
  460. package/dist/esm/core/errors/ErrorContext.js +9 -1
  461. package/dist/esm/core/errors/ErrorContext.js.map +1 -1
  462. package/dist/esm/core/errors/GlobalErrorHandler.d.ts.map +1 -1
  463. package/dist/esm/core/errors/GlobalErrorHandler.js +5 -4
  464. package/dist/esm/core/errors/GlobalErrorHandler.js.map +1 -1
  465. package/dist/esm/core/errors/RouterErrorBoundary.js +1 -1
  466. package/dist/esm/core/errors/RouterErrorBoundary.js.map +1 -1
  467. package/dist/esm/core/errors/errors-builder.frontend.services.d.ts +2 -2
  468. package/dist/esm/core/errors/errors-builder.frontend.services.d.ts.map +1 -1
  469. package/dist/esm/core/errors/errors-builder.frontend.services.js +4 -4
  470. package/dist/esm/core/errors/errors-builder.frontend.services.js.map +1 -1
  471. package/dist/esm/core/errors/user-facing-error-message.frontend.utils.js +1 -1
  472. package/dist/esm/core/errors/user-facing-error-message.frontend.utils.js.map +1 -1
  473. package/dist/esm/core/events/NotificationContext.d.ts.map +1 -1
  474. package/dist/esm/core/events/NotificationContext.js +23 -5
  475. package/dist/esm/core/events/NotificationContext.js.map +1 -1
  476. package/dist/esm/core/events/events.frontend.schemas.d.ts +110 -43
  477. package/dist/esm/core/events/events.frontend.schemas.d.ts.map +1 -1
  478. package/dist/esm/core/events/events.frontend.schemas.js +89 -15
  479. package/dist/esm/core/events/events.frontend.schemas.js.map +1 -1
  480. package/dist/esm/core/execution/useExecutionParticipationRMM.d.ts +2 -0
  481. package/dist/esm/core/execution/useExecutionParticipationRMM.d.ts.map +1 -1
  482. package/dist/esm/core/execution/useExecutionParticipationRMM.js +2 -1
  483. package/dist/esm/core/execution/useExecutionParticipationRMM.js.map +1 -1
  484. package/dist/esm/core/execution/useExecutionResourceOperationSurface.d.ts +1 -1
  485. package/dist/esm/core/execution/useExecutionResourceOperationSurface.d.ts.map +1 -1
  486. package/dist/esm/core/execution/useExecutionResourceOperationSurface.js +5 -2
  487. package/dist/esm/core/execution/useExecutionResourceOperationSurface.js.map +1 -1
  488. package/dist/esm/core/external-providers/ConsentBasedProviderSdks.d.ts +63 -0
  489. package/dist/esm/core/external-providers/ConsentBasedProviderSdks.d.ts.map +1 -0
  490. package/dist/esm/core/external-providers/ConsentBasedProviderSdks.js +131 -0
  491. package/dist/esm/core/external-providers/ConsentBasedProviderSdks.js.map +1 -0
  492. package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.d.ts +61 -0
  493. package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.d.ts.map +1 -0
  494. package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.js +178 -0
  495. package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.js.map +1 -0
  496. package/dist/esm/core/external-providers/ProviderAddressLookupHost.d.ts +52 -0
  497. package/dist/esm/core/external-providers/ProviderAddressLookupHost.d.ts.map +1 -0
  498. package/dist/esm/core/external-providers/ProviderAddressLookupHost.js +144 -0
  499. package/dist/esm/core/external-providers/ProviderAddressLookupHost.js.map +1 -0
  500. package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts +22 -1
  501. package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts.map +1 -1
  502. package/dist/esm/core/external-providers/ProviderFilePickerHost.js +23 -3
  503. package/dist/esm/core/external-providers/ProviderFilePickerHost.js.map +1 -1
  504. package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.d.ts +55 -0
  505. package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.d.ts.map +1 -0
  506. package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.js +65 -0
  507. package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.js.map +1 -0
  508. package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.d.ts +63 -0
  509. package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.d.ts.map +1 -0
  510. package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.js +100 -0
  511. package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.js.map +1 -0
  512. package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts +45 -7
  513. package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts.map +1 -1
  514. package/dist/esm/core/flows-actors/FlowsActorsContext.js +112 -28
  515. package/dist/esm/core/flows-actors/FlowsActorsContext.js.map +1 -1
  516. package/dist/esm/core/flows-actors/usePendingDecisions.d.ts +32 -0
  517. package/dist/esm/core/flows-actors/usePendingDecisions.d.ts.map +1 -0
  518. package/dist/esm/core/flows-actors/usePendingDecisions.js +91 -0
  519. package/dist/esm/core/flows-actors/usePendingDecisions.js.map +1 -0
  520. package/dist/esm/core/guidance/GuidanceRenderer.d.ts.map +1 -1
  521. package/dist/esm/core/guidance/GuidanceRenderer.js +3 -2
  522. package/dist/esm/core/guidance/GuidanceRenderer.js.map +1 -1
  523. package/dist/esm/core/i18n/I18nContext.d.ts +22 -8
  524. package/dist/esm/core/i18n/I18nContext.d.ts.map +1 -1
  525. package/dist/esm/core/i18n/I18nContext.js +21 -9
  526. package/dist/esm/core/i18n/I18nContext.js.map +1 -1
  527. package/dist/esm/core/i18n/component-label-resolution.utils.d.ts +5 -3
  528. package/dist/esm/core/i18n/component-label-resolution.utils.d.ts.map +1 -1
  529. package/dist/esm/core/i18n/component-label-resolution.utils.js +5 -3
  530. package/dist/esm/core/i18n/component-label-resolution.utils.js.map +1 -1
  531. package/dist/esm/core/i18n/useI18n.d.ts +2 -1
  532. package/dist/esm/core/i18n/useI18n.d.ts.map +1 -1
  533. package/dist/esm/core/i18n/useI18n.js +2 -1
  534. package/dist/esm/core/i18n/useI18n.js.map +1 -1
  535. package/dist/esm/core/loading/LoadingContext.d.ts.map +1 -1
  536. package/dist/esm/core/loading/LoadingContext.js +7 -1
  537. package/dist/esm/core/loading/LoadingContext.js.map +1 -1
  538. package/dist/esm/core/loading/LoadingGate.d.ts.map +1 -1
  539. package/dist/esm/core/loading/LoadingGate.js +19 -1
  540. package/dist/esm/core/loading/LoadingGate.js.map +1 -1
  541. package/dist/esm/core/monitoring/analytics/AnalyticsContext.d.ts +15 -2
  542. package/dist/esm/core/monitoring/analytics/AnalyticsContext.d.ts.map +1 -1
  543. package/dist/esm/core/monitoring/analytics/AnalyticsContext.js +183 -20
  544. package/dist/esm/core/monitoring/analytics/AnalyticsContext.js.map +1 -1
  545. package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.js +2 -2
  546. package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.js.map +1 -1
  547. package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.d.ts +7 -15
  548. package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.d.ts.map +1 -1
  549. package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.js +8 -26
  550. package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.js.map +1 -1
  551. package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.d.ts +12 -3
  552. package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.d.ts.map +1 -1
  553. package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.js +3 -2
  554. package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.js.map +1 -1
  555. package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.d.ts +42 -0
  556. package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.d.ts.map +1 -1
  557. package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.js +89 -5
  558. package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.js.map +1 -1
  559. package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.d.ts +2 -0
  560. package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.d.ts.map +1 -1
  561. package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.js +2 -0
  562. package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.js.map +1 -1
  563. package/dist/esm/core/navigation/NavigationContentAreas.d.ts +78 -0
  564. package/dist/esm/core/navigation/NavigationContentAreas.d.ts.map +1 -1
  565. package/dist/esm/core/navigation/NavigationContentAreas.js +264 -16
  566. package/dist/esm/core/navigation/NavigationContentAreas.js.map +1 -1
  567. package/dist/esm/core/navigation/NavigationContext.d.ts +8 -0
  568. package/dist/esm/core/navigation/NavigationContext.d.ts.map +1 -1
  569. package/dist/esm/core/navigation/NavigationContext.js +137 -30
  570. package/dist/esm/core/navigation/NavigationContext.js.map +1 -1
  571. package/dist/esm/core/navigation/launcher-resolution.d.ts +2 -0
  572. package/dist/esm/core/navigation/launcher-resolution.d.ts.map +1 -1
  573. package/dist/esm/core/navigation/launcher-resolution.js +1 -0
  574. package/dist/esm/core/navigation/launcher-resolution.js.map +1 -1
  575. package/dist/esm/core/navigation/navigation-cascade.d.ts +46 -0
  576. package/dist/esm/core/navigation/navigation-cascade.d.ts.map +1 -0
  577. package/dist/esm/core/navigation/navigation-cascade.js +222 -0
  578. package/dist/esm/core/navigation/navigation-cascade.js.map +1 -0
  579. package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.d.ts.map +1 -1
  580. package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.js +21 -2
  581. package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.js.map +1 -1
  582. package/dist/esm/core/navigation/navigation-controller-internals.d.ts +71 -0
  583. package/dist/esm/core/navigation/navigation-controller-internals.d.ts.map +1 -0
  584. package/dist/esm/core/navigation/navigation-controller-internals.js +84 -0
  585. package/dist/esm/core/navigation/navigation-controller-internals.js.map +1 -0
  586. package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts +86 -2
  587. package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts.map +1 -1
  588. package/dist/esm/core/navigation/navigation-policy-resolver.service.js +242 -124
  589. package/dist/esm/core/navigation/navigation-policy-resolver.service.js.map +1 -1
  590. package/dist/esm/core/navigation/navigation.schemas.d.ts +170 -8
  591. package/dist/esm/core/navigation/navigation.schemas.d.ts.map +1 -1
  592. package/dist/esm/core/navigation/navigation.schemas.js +121 -2
  593. package/dist/esm/core/navigation/navigation.schemas.js.map +1 -1
  594. package/dist/esm/core/navigation/navigation.utils.d.ts +102 -6
  595. package/dist/esm/core/navigation/navigation.utils.d.ts.map +1 -1
  596. package/dist/esm/core/navigation/navigation.utils.js +283 -34
  597. package/dist/esm/core/navigation/navigation.utils.js.map +1 -1
  598. package/dist/esm/core/navigation/useIsStackEntryActive.d.ts +0 -10
  599. package/dist/esm/core/navigation/useIsStackEntryActive.d.ts.map +0 -1
  600. package/dist/esm/core/navigation/useIsStackEntryActive.js.map +0 -1
  601. package/dist/esm/core/navigation/useNavigationController.d.ts +28 -157
  602. package/dist/esm/core/navigation/useNavigationController.d.ts.map +1 -1
  603. package/dist/esm/core/navigation/useNavigationController.js +211 -1189
  604. package/dist/esm/core/navigation/useNavigationController.js.map +1 -1
  605. package/dist/esm/core/navigation/useNavigationRouterSync.d.ts +174 -0
  606. package/dist/esm/core/navigation/useNavigationRouterSync.d.ts.map +1 -0
  607. package/dist/esm/core/navigation/useNavigationRouterSync.js +977 -0
  608. package/dist/esm/core/navigation/useNavigationRouterSync.js.map +1 -0
  609. package/dist/esm/core/navigation/useOverlayTitle.d.ts +13 -1
  610. package/dist/esm/core/navigation/useOverlayTitle.d.ts.map +1 -1
  611. package/dist/esm/core/navigation/useOverlayTitle.js +15 -10
  612. package/dist/esm/core/navigation/useOverlayTitle.js.map +1 -1
  613. package/dist/esm/core/navigation/useResponsiveZoneMigration.d.ts +43 -0
  614. package/dist/esm/core/navigation/useResponsiveZoneMigration.d.ts.map +1 -0
  615. package/dist/esm/core/navigation/useResponsiveZoneMigration.js +44 -0
  616. package/dist/esm/core/navigation/useResponsiveZoneMigration.js.map +1 -0
  617. package/dist/esm/core/navigation/zone-collapse-migration.d.ts +83 -0
  618. package/dist/esm/core/navigation/zone-collapse-migration.d.ts.map +1 -0
  619. package/dist/esm/core/navigation/zone-collapse-migration.js +116 -0
  620. package/dist/esm/core/navigation/zone-collapse-migration.js.map +1 -0
  621. package/dist/esm/core/navigation/zone-collapse.d.ts +51 -0
  622. package/dist/esm/core/navigation/zone-collapse.d.ts.map +1 -0
  623. package/dist/esm/core/navigation/zone-collapse.js +59 -0
  624. package/dist/esm/core/navigation/zone-collapse.js.map +1 -0
  625. package/dist/esm/core/navigation/zone-emphasis.d.ts +3 -0
  626. package/dist/esm/core/navigation/zone-emphasis.d.ts.map +1 -1
  627. package/dist/esm/core/navigation/zone-emphasis.js +26 -4
  628. package/dist/esm/core/navigation/zone-emphasis.js.map +1 -1
  629. package/dist/esm/core/navigation/zone-visible-entry.d.ts +22 -0
  630. package/dist/esm/core/navigation/zone-visible-entry.d.ts.map +1 -1
  631. package/dist/esm/core/navigation/zone-visible-entry.js +25 -0
  632. package/dist/esm/core/navigation/zone-visible-entry.js.map +1 -1
  633. package/dist/esm/core/requests/websockets/WebSocketContext.d.ts.map +1 -1
  634. package/dist/esm/core/requests/websockets/WebSocketContext.js +53 -18
  635. package/dist/esm/core/requests/websockets/WebSocketContext.js.map +1 -1
  636. package/dist/esm/core/requests/websockets/WebSocketEventBridge.d.ts.map +1 -1
  637. package/dist/esm/core/requests/websockets/WebSocketEventBridge.js +3 -1
  638. package/dist/esm/core/requests/websockets/WebSocketEventBridge.js.map +1 -1
  639. package/dist/esm/core/requests/websockets/useNotificationBadges.d.ts +22 -0
  640. package/dist/esm/core/requests/websockets/useNotificationBadges.d.ts.map +1 -1
  641. package/dist/esm/core/requests/websockets/useNotificationBadges.js +72 -3
  642. package/dist/esm/core/requests/websockets/useNotificationBadges.js.map +1 -1
  643. package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.d.ts +28 -0
  644. package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.d.ts.map +1 -0
  645. package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.js +86 -0
  646. package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.js.map +1 -0
  647. package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts +38 -3
  648. package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts.map +1 -1
  649. package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.js +57 -2
  650. package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.js.map +1 -1
  651. package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.d.ts.map +1 -1
  652. package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.js +4 -2
  653. package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.js.map +1 -1
  654. package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts +30 -1
  655. package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts.map +1 -1
  656. package/dist/esm/core/requests/wildo-http-client.frontend.service.js +47 -4
  657. package/dist/esm/core/requests/wildo-http-client.frontend.service.js.map +1 -1
  658. package/dist/esm/core/resources/ResourceRegistryContext.d.ts.map +1 -1
  659. package/dist/esm/core/resources/ResourceRegistryContext.js +22 -1
  660. package/dist/esm/core/resources/ResourceRegistryContext.js.map +1 -1
  661. package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.js +1 -1
  662. package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.js.map +1 -1
  663. package/dist/esm/core/resources/frontend-resource.utils.d.ts +22 -1
  664. package/dist/esm/core/resources/frontend-resource.utils.d.ts.map +1 -1
  665. package/dist/esm/core/resources/frontend-resource.utils.js +25 -2
  666. package/dist/esm/core/resources/frontend-resource.utils.js.map +1 -1
  667. package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts +113 -13
  668. package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts.map +1 -1
  669. package/dist/esm/core/resources/operation-semantics.frontend.utils.js +173 -20
  670. package/dist/esm/core/resources/operation-semantics.frontend.utils.js.map +1 -1
  671. package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.d.ts +11 -0
  672. package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.d.ts.map +1 -1
  673. package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.js +7 -0
  674. package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.js.map +1 -1
  675. package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.d.ts +3 -2
  676. package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.d.ts.map +1 -1
  677. package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.js +13 -5
  678. package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.js.map +1 -1
  679. package/dist/esm/core/resources/resources-repository.frontend.service.d.ts +6 -0
  680. package/dist/esm/core/resources/resources-repository.frontend.service.d.ts.map +1 -1
  681. package/dist/esm/core/resources/resources-repository.frontend.service.js +90 -1
  682. package/dist/esm/core/resources/resources-repository.frontend.service.js.map +1 -1
  683. package/dist/esm/core/resources/resources.frontend.schemas.d.ts +139 -16
  684. package/dist/esm/core/resources/resources.frontend.schemas.d.ts.map +1 -1
  685. package/dist/esm/core/resources/resources.frontend.schemas.js +110 -11
  686. package/dist/esm/core/resources/resources.frontend.schemas.js.map +1 -1
  687. package/dist/esm/core/resources/rmm/ResourceMutationManager.d.ts.map +1 -1
  688. package/dist/esm/core/resources/rmm/ResourceMutationManager.js +3 -1
  689. package/dist/esm/core/resources/rmm/ResourceMutationManager.js.map +1 -1
  690. package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.d.ts +10 -0
  691. package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.d.ts.map +1 -1
  692. package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.js +8 -0
  693. package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.js.map +1 -1
  694. package/dist/esm/core/resources/rmm/useResourceRMM.d.ts +7 -0
  695. package/dist/esm/core/resources/rmm/useResourceRMM.d.ts.map +1 -1
  696. package/dist/esm/core/resources/rmm/useResourceRMM.js +9 -2
  697. package/dist/esm/core/resources/rmm/useResourceRMM.js.map +1 -1
  698. package/dist/esm/core/resources/useOperationDirectExecution.d.ts +59 -0
  699. package/dist/esm/core/resources/useOperationDirectExecution.d.ts.map +1 -0
  700. package/dist/esm/core/resources/useOperationDirectExecution.js +278 -0
  701. package/dist/esm/core/resources/useOperationDirectExecution.js.map +1 -0
  702. package/dist/esm/core/resources/useResourceOperationActions.d.ts +1 -1
  703. package/dist/esm/core/resources/useResourceOperationActions.d.ts.map +1 -1
  704. package/dist/esm/core/resources/useResourceOperationActions.js +69 -22
  705. package/dist/esm/core/resources/useResourceOperationActions.js.map +1 -1
  706. package/dist/esm/core/resources/useResourceOperationSurface.d.ts +8 -6
  707. package/dist/esm/core/resources/useResourceOperationSurface.d.ts.map +1 -1
  708. package/dist/esm/core/resources/useResourceOperationSurface.js +3 -2
  709. package/dist/esm/core/resources/useResourceOperationSurface.js.map +1 -1
  710. package/dist/esm/core/runtime/AppRouter.d.ts.map +1 -1
  711. package/dist/esm/core/runtime/AppRouter.js +23 -2
  712. package/dist/esm/core/runtime/AppRouter.js.map +1 -1
  713. package/dist/esm/core/runtime/ApplicationContext.shared.d.ts +4 -2
  714. package/dist/esm/core/runtime/ApplicationContext.shared.d.ts.map +1 -1
  715. package/dist/esm/core/runtime/ApplicationContext.shared.js.map +1 -1
  716. package/dist/esm/core/runtime/ApplicationMainContext.d.ts +12 -2
  717. package/dist/esm/core/runtime/ApplicationMainContext.d.ts.map +1 -1
  718. package/dist/esm/core/runtime/ApplicationMainContext.js +5 -2
  719. package/dist/esm/core/runtime/ApplicationMainContext.js.map +1 -1
  720. package/dist/esm/core/runtime/domain-module.frontend.definitions.d.ts +25 -1
  721. package/dist/esm/core/runtime/domain-module.frontend.definitions.d.ts.map +1 -1
  722. package/dist/esm/core/runtime/domain-module.frontend.definitions.js +37 -1
  723. package/dist/esm/core/runtime/domain-module.frontend.definitions.js.map +1 -1
  724. package/dist/esm/core/runtime/start-application.frontend.service.d.ts +21 -2
  725. package/dist/esm/core/runtime/start-application.frontend.service.d.ts.map +1 -1
  726. package/dist/esm/core/runtime/start-application.frontend.service.js +51 -4
  727. package/dist/esm/core/runtime/start-application.frontend.service.js.map +1 -1
  728. package/dist/esm/core/security/AuthSessionContext.d.ts +11 -0
  729. package/dist/esm/core/security/AuthSessionContext.d.ts.map +1 -1
  730. package/dist/esm/core/security/AuthSessionContext.js +70 -22
  731. package/dist/esm/core/security/AuthSessionContext.js.map +1 -1
  732. package/dist/esm/core/security/StepUpAuthContext.d.ts.map +1 -1
  733. package/dist/esm/core/security/StepUpAuthContext.js +10 -2
  734. package/dist/esm/core/security/StepUpAuthContext.js.map +1 -1
  735. package/dist/esm/core/security/UserOrgsContext.d.ts.map +1 -1
  736. package/dist/esm/core/security/UserOrgsContext.js +72 -8
  737. package/dist/esm/core/security/UserOrgsContext.js.map +1 -1
  738. package/dist/esm/core/security/route-organization-access.frontend.utils.d.ts +7 -0
  739. package/dist/esm/core/security/route-organization-access.frontend.utils.d.ts.map +1 -1
  740. package/dist/esm/core/security/route-organization-access.frontend.utils.js +8 -2
  741. package/dist/esm/core/security/route-organization-access.frontend.utils.js.map +1 -1
  742. package/dist/esm/core/security/useGrantedConsentPurposes.d.ts +30 -0
  743. package/dist/esm/core/security/useGrantedConsentPurposes.d.ts.map +1 -0
  744. package/dist/esm/core/security/useGrantedConsentPurposes.js +38 -0
  745. package/dist/esm/core/security/useGrantedConsentPurposes.js.map +1 -0
  746. package/dist/esm/core/ui/UIContext.d.ts.map +1 -1
  747. package/dist/esm/core/ui/UIContext.js +10 -6
  748. package/dist/esm/core/ui/UIContext.js.map +1 -1
  749. package/dist/esm/core/ui/color-conversion.utils.d.ts +20 -0
  750. package/dist/esm/core/ui/color-conversion.utils.d.ts.map +1 -1
  751. package/dist/esm/core/ui/color-conversion.utils.js +39 -5
  752. package/dist/esm/core/ui/color-conversion.utils.js.map +1 -1
  753. package/dist/esm/core/ui/themes/default.theme.d.ts.map +1 -1
  754. package/dist/esm/core/ui/themes/default.theme.js +22 -2
  755. package/dist/esm/core/ui/themes/default.theme.js.map +1 -1
  756. package/dist/esm/core/ui/ui.frontend.schemas.d.ts +6 -6
  757. package/dist/esm/core/ui/ui.frontend.schemas.d.ts.map +1 -1
  758. package/dist/esm/core/ui/ui.frontend.schemas.js +3 -3
  759. package/dist/esm/core/ui/ui.frontend.schemas.js.map +1 -1
  760. package/dist/esm/index.d.ts +10 -1
  761. package/dist/esm/index.d.ts.map +1 -1
  762. package/dist/esm/index.js +19 -1
  763. package/dist/esm/index.js.map +1 -1
  764. package/dist/esm/testing/app-shell-placement-coverage.d.ts +43 -0
  765. package/dist/esm/testing/app-shell-placement-coverage.d.ts.map +1 -0
  766. package/dist/esm/testing/app-shell-placement-coverage.js +114 -0
  767. package/dist/esm/testing/app-shell-placement-coverage.js.map +1 -0
  768. package/dist/esm/testing/mock-builders.d.ts.map +1 -1
  769. package/dist/esm/testing/mock-builders.js +5 -0
  770. package/dist/esm/testing/mock-builders.js.map +1 -1
  771. package/dist/esm/testing.d.ts +1 -0
  772. package/dist/esm/testing.d.ts.map +1 -1
  773. package/dist/esm/testing.js +1 -0
  774. package/dist/esm/testing.js.map +1 -1
  775. package/package.json +9 -7
  776. package/dist/esm/core/navigation/useIsStackEntryActive.js +0 -15
  777. package/dist/tsconfig.build.tsbuildinfo +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceAutomaticDisplayer.js","sourceRoot":"","sources":["../../../../../src/components/data-display/ResourceAutomaticDisplayer.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAc,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEjF,OAAO,EAEL,2BAA2B,EAC3B,SAAS,EAET,QAAQ,EAER,kCAAkC,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,6BAA6B,EAAE,MAAM,kEAAkE,CAAC;AACjH,OAAO,EACL,qBAAqB,GACtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAA2B,MAAM,0BAA0B,CAAC;AAE3F,OAAO,EAAE,kBAAkB,EAAiC,MAAM,sBAAsB,CAAC;AAEzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAKxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wDAAwD,CAAC;AAC7F,OAAO,EAAE,2BAA2B,EAAE,MAAM,gEAAgE,CAAC;AAC7G,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEzF,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,4DAA4D,CAAC;AAC1H,OAAO,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kEAAkE,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,MAAM,yDAAyD,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,uEAAuE,CAAC;AAClG,OAAO,EAAE,4BAA4B,EAAE,MAAM,2EAA2E,CAAC;AACzH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6DAA6D,CAAC;AACpG,OAAO,EAAE,8BAA8B,EAAE,MAAM,mFAAmF,CAAC;AACnI,OAAO,EAAE,0CAA0C,EAAE,MAAM,gFAAgF,CAAC;AAC5I,OAAO,EAAE,6BAA6B,EAAE,MAAM,2EAA2E,CAAC;AAE1H,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAClH,OAAO,EAAE,cAAc,EAAE,MAAM,uDAAuD,CAAC;AACvF,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,uCAAuC,GACxC,MAAM,sEAAsE,CAAC;AAC9E,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,+EAA+E,CAAC;AAEvF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oEAAoE,CAAC;AAC/G,OAAO,EAAE,kBAAkB,EAAE,MAAM,0EAA0E,CAAC;AAC9G,OAAO,EACL,6CAA6C,EAC7C,+CAA+C,GAChD,MAAM,gFAAgF,CAAC;AAExF,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,EAAE,CAAC;AACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC;AAElE,6GAA6G;AAC7G,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAC/C,gGAAgG;AAChG,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAC9C,MAAM,CAAC,mBAAmB,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;AA+ChE,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,SAAS,mCAAmC,CAAC,EAC3C,eAAe,EACf,OAAO,EACP,SAAS,EACT,cAAc,EACd,QAAQ,EAAE,YAAY,EACtB,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,8BAA8B,GAAG,8BAA8B,CAAC,YAAY,GAC5C;IAChC,WAAW;IACX,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,mBAAmB,EAAE,CAAC;IACxD,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,WAAW,EAAE,CAAC;IACrD,MAAM,EAAE,aAAa,EAAE,GAAG,oBAAoB,CAAC,EAAE,GAAG,EAAE,eAAsB,EAAE,CAAC,CAAC;IAChF,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,EAAE,SAAS,EAAE,qBAAqB,CAAC,sBAAsB,EAAE,QAAQ,EAAE,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC;IAC7I,MAAM,CAAC,YAAY,CAAC,GAAG,eAAe,EAAE,CAAC;IAEzC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC7B,aAAa,eAAe,CAAC,YAAY,EAAE;QAC3C,cAAc,qBAAqB,CAAC,sBAAsB,EAAE;KAC7D,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnC,0EAA0E;IAC1E,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,kBAAkB,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;IAEnD,oBAAoB;IACpB,cAAc,CAAC,OAAO,GAAG,WAAW,CAAC;IACrC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAC7B,eAAe,CAAC,OAAO,GAAG,YAAY,CAAC;IACvC,kBAAkB,CAAC,OAAO,GAAG,eAAe,CAAC;IAE7C,iDAAiD;IACjD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,oBAAoB,EAAE,EAAE,EAAE,CAAC,CAAC;IAEnE,gCAAgC;IAChC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,0BAA0B,EAAE,GAAG,eAAe,CAAC;IAChF,MAAM,mBAAmB,GAAG,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAElE,QAAQ;IACR,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAiC,IAAI,CAAC,CAAC;IACvE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAA6B,IAAI,CAAC,CAAC;IAC/E,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1D,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAE7H,mEAAmE;IACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5B,OAAO,qBAAqB,CAAC,eAAe,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAC3E,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;IACjC,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE9E,8DAA8D;IAC9D,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,IAAI,MAAM,CAAC;QACX,QAAQ,iBAAiB,EAAE,CAAC;YAC1B,KAAK,QAAQ,CAAC,OAAO;gBACnB,MAAM,GAAG,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,WAAW,CAAC;gBACvD,MAAM;YACR,KAAK,QAAQ,CAAC,OAAO;gBACnB,MAAM,GAAG,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,WAAW,CAAC;gBACvD,MAAM;YACR,KAAK,QAAQ,CAAC,GAAG,CAAC;YAClB;gBACE,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC;gBAC/B,MAAM;QACV,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE;gBACxD,mBAAmB;gBACnB,YAAY;gBACZ,QAAQ,EAAE,iBAAiB;aAC5B,CAAC,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,CAAC,iBAAiB,EAAE,SAAS,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAC,CAAC;IAEtE,uDAAuD;IACvD,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,OAAO,QAAQ,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IAE7B,gDAAgD;IAChD,MAAM,UAAU,GAAG,cAAc,EAAE,qBAAqB,EAAE,MAAM,EAAE,IAAI,CAAC;IAEvE,qEAAqE;IACrE,MAAM,6BAA6B,GAAG,OAAO,CAAC,GAAG,EAAE;QACjD,OAAO,qBAAqB,CAAC,kCAAkC,CAAC,0BAA0B,CAAC,CAAC;IAC9F,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEjC,4CAA4C;IAC5C,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,EAAE;QACxC,OAAO,qBAAqB,CAAC,yBAAyB,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC;QAC/F,uGAAuG;IACvG,CAAC,EAAE,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE9C,6EAA6E;IAC7E,8CAA8C;IAC9C,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,OAAO,kCAAkC,CAAC,mCAAmC,CAAC,SAAS,CAAC,CAAC;IAC3F,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,sCAAsC;IACtC,+DAA+D;IAC/D,yEAAyE;IACzE,MAAM,MAAM,GAAG,OAAO,CAA2B,GAAG,EAAE;QACpD,OAAO;YACL,eAAe,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE;YACnE,GAAG,cAAc;SAClB,CAAC;IACJ,CAAC,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAC,CAAC;IAExD,gFAAgF;IAChF,kFAAkF;IAClF,iFAAiF;IACjF,+EAA+E;IAC/E,MAAM,iBAAiB,GAAG,OAAO,CAAiD,GAAG,EAAE;QACrF,IAAI,CAAC,aAAa;YAAE,OAAO,SAAS,CAAC;QAErC,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,4BAA4B,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;YACzF,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC;YAElD,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;YACzC,MAAM,aAAa,GAAG,GAAG,UAAU,eAAe,CAAC;YAEnD,mFAAmF;YACnF,gFAAgF;YAChF,kFAAkF;YAClF,sFAAsF;YACtF,yEAAyE;YACzE,MAAM,gBAAgB,GAA2B,EAAE,CAAC;YACpD,MAAM,QAAQ,GAAG,IAAI;gBACnB,CAAC,CAAC,MAAM,CAAE,IAAgC,CAAC,GAAG;uBACtC,IAAgC,CAAC,cAAc,EAAE,uBAAuB,IAAI,KAAK,CAAC;uBACnF,EAAE,CAAC;gBACV,CAAC,CAAC,EAAE,CAAC;YACP,IAAI,cAAc,IAAI,QAAQ,EAAE,CAAC;gBAC/B,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;oBACvC,MAAM,SAAS,GAAG,6BAA6B,CAAC;wBAC9C,QAAQ;wBACR,cAAc;wBACd,SAAS;wBACT,YAAY;wBACZ,SAAS;wBACT,QAAQ;wBACR,0BAA0B;wBAC1B,oBAAoB;wBACpB,2BAA2B,EAAE,kBAAkB,CAAC,OAAO,CAAC,2BAA2B;wBACnF,UAAU;qBACX,CAAC,CAAC;oBACH,IAAI,SAAS;wBAAE,gBAAgB,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;gBACzD,CAAC;YACH,CAAC;YAED,MAAM,OAAO,GAAuC,EAAE,CAAC;YACvD,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;gBACvC,OAAO,CAAC,SAAS,CAAC,GAAG;oBACnB,WAAW,EAAE,aAAa;oBAC1B,KAAK,EAAE,gBAAgB,CAAC,SAAS,CAAC;oBAClC,gDAAgD;oBAChD,MAAM,EAAE,EAAE;oBACV,QAAQ,EAAE,SAAS;oBACnB,MAAM,EAAE,EAAE;iBACX,CAAC;YACJ,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,mFAAmF;QACnF,kFAAkF;IACpF,CAAC,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/H,kFAAkF;IAClF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,UAAqD,CAAC;QAC1D,IAAI,UAAU,GAAG,yBAAyB,CAAC;QAE3C;;;;WAIG;QACH,MAAM,SAAS,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,EAAE;YAC1C,IAAI,CAAC,OAAO;gBAAE,aAAa,CAAC,IAAI,CAAC,CAAC;YAElC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CACzC,gBAAgB,EAChB;oBACE,oBAAoB;oBACpB,2BAA2B,EAAE,kBAAkB,CAAC,OAAO,CAAC,2BAA2B;oBACnF,QAAQ,EAAE,iBAAiB;iBAC5B;gBACD,yEAAyE;gBACzE,yEAAyE;gBACzE,2EAA2E;gBAC3E,8EAA8E;gBAC9E,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAC;gBAEF,IAAI,SAAS;oBAAE,OAAO;gBACtB,aAAa,CAAC,IAAI,CAAC,CAAC;gBACpB,OAAO,CAAC,MAAM,CAAC,CAAC;gBAChB,yGAAyG;gBACzG,eAAe,CAAC,OAAO,EAAE,CAAC,MAAiC,CAAC,CAAC;YAC/D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,SAAS;oBAAE,OAAO;gBAEtB,0EAA0E;gBAC1E,wEAAwE;gBACxE,MAAM,aAAa,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAEhF,MAAM,WAAW,GAAG,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAgC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjG,MAAM,UAAU,GAAG,YAAY,CAAC,wBAAwB,CACtD,SAAS,CAAC,SAAS,EACnB;oBACE,sBAAsB,EAAE,2BAA2B,CAAC,0CAA0C;oBAC9F,gBAAgB;oBAChB,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,oBAAoB,EAAE,aAAa,CAAC,OAAO;wBAC3C,kBAAkB,EAAE,aAAa,CAAC,KAAK;wBACvC,QAAQ,EAAE,WAAW,CAAC,IAAI;wBAC1B,WAAW,EAAE,WAAW,CAAC,OAAO;qBACjC;iBACF,CACF,CAAC;gBAEF,aAAa,CAAC,UAAU,CAAC,CAAC;gBAE1B;;;;;;;;;;;;;;;mBAeG;gBACH,IAAI,yBAAyB,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;oBAClE,IAAI,UAAU,KAAK,SAAS;wBAAE,YAAY,CAAC,UAAU,CAAC,CAAC;oBACvD,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;oBAC7F,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,EAAE,uBAAuB,CAAC,CAAC;gBACjE,CAAC;gBACD,IAAI,OAAO;oBAAE,OAAO;gBAEpB,mBAAmB;gBACnB,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC;gBAC9C,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,qBAAqB,EAAE;oBACpD,GAAG,UAAU;oBACb,0BAA0B,EAAE,+CAA+C,CACzE,UAAU,CAAC,0BAA0B,CACtC;oBACD,2BAA2B,EAAE,UAAU,CAAC,2BAA2B,IAAI,EAAE;oBACzE,iBAAiB,EAAE;wBACjB,GAAG,UAAU,CAAC,iBAAiB;wBAC/B,KAAK,EAAE,aAAa,CAAC,OAAO;wBAC5B,yEAAyE;wBACzE,8DAA8D;wBAC9D,2BAA2B,EAAE,2BAA2B,CAAC,0CAA0C;qBACpG;iBACF,CAAC,CAAC;gBAEH,UAAU,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,CAAC;gBACpC,QAAQ,CAAC,aAAa,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1E,CAAC;oBAAS,CAAC;gBACT,wDAAwD;YAC1D,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,SAAS,EAAE,CAAC;QAEjB,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;YACjB,IAAI,UAAU,KAAK,SAAS;gBAAE,YAAY,CAAC,UAAU,CAAC,CAAC;QACzD,CAAC,CAAC;QACJ,gLAAgL;IAChL,CAAC,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAC;IAEzI,mGAAmG;IACnG,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE;QACrC,MAAM,QAAQ,GAAG,0BAA0B,EAAE,CAAC,YAAY,CAAC,CAAC;QAC5D,IAAI,QAAQ;YAAE,OAAO,qBAAqB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACnE,+FAA+F;QAC/F,EAAE;QACF,8FAA8F;QAC9F,+FAA+F;QAC/F,gGAAgG;QAChG,+FAA+F;QAC/F,EAAE;QACF,uFAAuF;QACvF,uFAAuF;QACvF,gGAAgG;QAChG,2FAA2F;QAC3F,EAAE;QACF,+FAA+F;QAC/F,gGAAgG;QAChG,yFAAyF;QACzF,+FAA+F;QAC/F,mEAAmE;QACnE,EAAE;QACF,gGAAgG;QAChG,6FAA6F;QAC7F,IAAI,IAAI,EAAE,CAAC;YACT,oFAAoF;YACpF,0EAA0E;YAC1E,MAAM,OAAO,GAAG,qBAAqB,CAAC,iCAAiC,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YAChG,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,iBAAiB,IAAI,IAAI;gBAAE,OAAO,iBAAiB,CAAC;YAExD,4FAA4F;YAC5F,qFAAqF;YACrF,MAAM,eAAe,GAAG,cAAc,EAAE,UAAU;gBAChD,CAAC,CAAC,sBAAsB,CAAC,cAAc,CAAC,UAAU,CAAC;gBACnD,CAAC,CAAC,SAAS,CAAC;YACd,IAAI,eAAe;gBAAE,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,CAAC,0BAA0B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;IAE3F,MAAM,wCAAwC,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5D,IAAI,CAAC,iBAAiB,IAAI,0BAA0B,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;YACrE,OAAO,0BAA0B,CAAC;QACpC,CAAC;QAED,OAAO;YACL,GAAG,0BAA0B;YAC7B,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC;SAC1C,CAAC;IACJ,CAAC,EAAE,CAAC,0BAA0B,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC;IAElE,MAAM,kCAAkC,GAAG,OAAO,CAAC,GAAG,EAAE;QACtD,MAAM,uBAAuB,GAAG,cAAc,EAAE,uBAAuB,CAAC;QACxE,IAAI,CAAC,iBAAiB,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACnD,OAAO,oBAAoB,CAAC;QAC9B,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,KAAK,UAAU,EAAE,CAAC;YAC/E,OAAO,oBAAoB,CAAC;QAC9B,CAAC;QAED,OAAO;YACL,GAAG,oBAAoB;YACvB,CAAC,uBAAuB,CAAC,EAAE,UAAU;SACtC,CAAC;IACJ,CAAC,EAAE,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,cAAc,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAEvF,gFAAgF;IAChF,2DAA2D;IAC3D,gFAAgF;IAEhF,MAAM,2BAA2B,GAAG,OAAO,CAAsD,GAAG,EAAE;QACpG,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,6BAA6B,CAAC;YACnC,cAAc;YACd,UAAU,EAAE,cAAc,CAAC,UAAU,IAAI,EAAE;YAC3C,QAAQ;YACR,aAAa,EAAE,iBAAiB,IAAI,IAAI;YACxC,0BAA0B,EAAE,wCAAwC;YACpE,oBAAoB,EAAE,kCAAkC;SACzD,CAAC,CAAC;IACL,CAAC,EAAE;QACD,wCAAwC;QACxC,kCAAkC;QAClC,iBAAiB;QACjB,SAAS;QACT,QAAQ;QACR,cAAc;KACf,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,EAAE;QACtC,OAAO,2BAA2B,KAAK,SAAS,CAAC;IACnD,CAAC,EAAE,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAElC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,cAAc,CAAC;QAC1C,YAAY;QACZ,UAAU,EAAE,iBAAiB,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI;QACxE,cAAc;QACd,oBAAoB,EAAE,kCAAkC;QACxD,2BAA2B,EAAE,eAAe,CAAC,2BAAoD;QACjG,0BAA0B,EAAE,wCAAwC;QACpE,cAAc,EAAE,cAAc,EAAE,UAAU;QAC1C,OAAO,EAAE,kBAAkB,IAAI,iBAAiB,IAAI,IAAI;QACxD,cAAc,EAAE,EAAE,QAAQ,EAAE,gBAAgB,CAAC,aAAa,EAAE;KAC7D,CAAC,CAAC;IACH,MAAM,6BAA6B,GAAG,OAAO,CAAC,GAAG,EAAE;QACjD,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,GAAG,CAAC,oBAAoB,CAAC;QAClC,CAAC;QAED,OAAO,uCAAuC,CAAC,YAAY,EAAE,QAAQ,EAAE;YACrE,aAAa,EAAE,iBAAiB,IAAI,IAAI;YACxC,0BAA0B,EAAE,wCAAwC;YACpE,oBAAoB,EAAE,kCAAkC;SACzD,CAAC,CAAC;IACL,CAAC,EAAE;QACD,QAAQ;QACR,YAAY;QACZ,GAAG;QACH,iBAAiB;QACjB,wCAAwC;QACxC,kCAAkC;KACnC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IAEhD,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,cAAc,EAAE;YACvB,YAAY;YACZ,UAAU,EAAE,iBAAiB,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS;YAC7E,SAAS,EAAE,CAAC,CAAC,GAAG;SACjB,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAE3C,SAAS,CAAC,GAAG,EAAE;QACb,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,EAAE,CAAC,6BAA6B,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC,CAAC;IAEvF;;;;;OAKG;IACH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;YAAE,OAAO;QAC1B,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,QAAQ,CAAC,aAAa,KAAK,IAAI,IAAI,aAAa,IAAI,IAAI;YAAE,OAAO;QACrE,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACnC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,oFAAoF,EAAE;gBAChG,YAAY;gBACZ,UAAU,EAAE,iBAAiB,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS;aAC9E,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;YACzB,MAAM,2BAA2B,GAAG,2BAA2B,CAAC;gBAC9D,sBAAsB,EAAE,gBAAgB;gBACxC,6BAA6B;gBAC7B,QAAQ,EAAE,iBAAiB;aAC5B,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,2BAA2B;gBAC5C,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,MAAM,uBAAuB,CAAC;oBAC5B,WAAW,EAAE,cAAc,CAAC,OAAO;oBACnC,oBAAoB,EAAE,6BAA6B;oBACnD,oBAAoB,EAAE,kCAAkC;oBACxD,2BAA2B,EAAE,kBAAkB,CAAC,OAAO,CAAC,2BAA2B;iBACpF,CAAC,CAAC;YAEP,IAAI,SAAS,IAAI,UAAU,IAAI,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ;gBAAE,OAAO;YAE9E,MAAM,GAAG,GAAG,UAAqC,CAAC;YAClD,MAAM,OAAO,GAAI,GAAG,CAAC,QAA+B,IAAI,CAAC,CAAC;YAC1D,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,WAAyD,CAAC,CAAC;YACjG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACxB,QAAQ,CAAC,iBAAiB,EAAE;gBAC1B,YAAY;gBACZ,UAAU,EAAE,iBAAiB,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC7E,OAAO;gBACP,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM;gBACnC,aAAa,EAAE,QAAQ,CAAC,aAAa,KAAK,IAAI;gBAC9C,uBAAuB,EAAE,CAAC,2BAA2B;aACtD,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACjC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,qEAAqE,EAAE;gBACjF,YAAY;gBACZ,UAAU,EAAE,iBAAiB,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC7E,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;aAClC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE;QACD,GAAG;QACH,IAAI;QACJ,iBAAiB;QACjB,gBAAgB;QAChB,6BAA6B;QAC7B,kCAAkC;QAClC,YAAY;QACZ,iBAAiB;QACjB,aAAa;KACd,CAAC,CAAC;IAEH,6EAA6E;IAC7E,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS;YAAE,OAAO;QAC5C,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC;QACpC,QAAQ,CAAC,WAAW,EAAE;YACpB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,YAAY;YACZ,UAAU,EAAE,iBAAiB,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9E,CAAC,CAAC;QACH,MAAM,+BAA+B,GAAG,6BAA6B;YACnE,CAAC,CAAC,CAAC,2BAA2B,CAAC;gBAC7B,sBAAsB,EAAE,gBAAgB;gBACxC,6BAA6B;gBAC7B,QAAQ,EAAE,iBAAiB;aAC5B,CAAC;YACF,CAAC,CAAC,KAAK,CAAC;QAEV,MAAM,oBAAoB,GAAG,GAAG,EAAE;YAChC,IAAI,CAAC,+BAA+B;gBAAE,OAAO;YAC7C,cAAc,CAAC,OAAO,CAAC,gBAAgB,EAAE;gBACvC,oBAAoB,EAAE,kCAAkC;gBACxD,2BAA2B,EAAE,kBAAkB,CAAC,OAAO,CAAC,2BAA2B;gBACnF,QAAQ,EAAE,iBAAiB;aAC5B,CAAC,CAAC,IAAI,CAAC,CAAC,MAA+B,EAAE,EAAE;gBAC1C,OAAO,CAAC,MAAiC,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACf,MAAM,CAAC,IAAI,CAAC,2EAA2E,EAAE;oBACvF,YAAY;oBACZ,KAAK,EAAE,mBAAmB,CAAC,GAAG,CAAC;iBAChC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC;gBAClC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACzB,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,kBAAkB,CAAC,OAAO,EAAE,CAAC;wBACrD,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,uBAAuB,EAAE;4BACtD,GAAG,kBAAkB,CAAC,OAAO;4BAC7B,0BAA0B,EAAE,6CAA6C,CAAC;gCACxE,0BAA0B,EAAE,kBAAkB,CAAC,OAAO,CAAC,0BAA0B;gCACjF,YAAY;gCACZ,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY;6BAClC,CAAC;4BACF,2BAA2B,EAAE,kBAAkB,CAAC,OAAO,CAAC,2BAA2B,IAAI,EAAE;4BACzF,iBAAiB,EAAE;gCACjB,GAAG,kBAAkB,CAAC,OAAO,CAAC,iBAAiB;gCAC/C,UAAU,EAAE,IAAI;gCAChB,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;6BACzC;4BACD,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY;yBACzC,CAAC,CAAC;oBACL,CAAC;oBACD,oBAAoB,EAAE,CAAC;gBACzB,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,YAAY,CAAC,aAAa,CAAC;YAChC,KAAK,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;gBACjC,oBAAoB,EAAE,CAAC;gBACvB,MAAM;YACR,CAAC;YAED,KAAK,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBACnC,MAAM;YACR,CAAC;QACH,CAAC;QACD,uHAAuH;IACzH,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;IAEjC,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,OAAO,2BAA2B,CAAC;YACjC,sBAAsB,EAAE,gBAAgB;YACxC,6BAA6B;YAC7B,QAAQ,EAAE,iBAAiB;SAC5B,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,6BAA6B,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEzE,+EAA+E;IAC/E,wFAAwF;IACxF,MAAM,aAAa,GAAG,iBAAiB,KAAK,QAAQ,CAAC,OAAO,IAAI,iBAAiB,KAAK,QAAQ,CAAC,OAAO,CAAC;IACvG,MAAM,aAAa,GAAG,CAAC,CAAC,aAAa,IAAI,gBAAgB,IAAI,GAAG,IAAI,WAAW,CAAC,cAAc,CAAC;QAC7F,CAAC,CAAC,WAAW,CAAC,cAAc;QAC5B,CAAC,CAAC,IAAI,CAAC;IAET,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,sBAAsB,EAAE;YAC/B,QAAQ,EAAE,iBAAiB;YAC3B,YAAY,EAAE,gBAAgB,IAAI,CAAC,CAAC,WAAW,EAAE,cAAc;SAChE,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;IAEvE,wFAAwF;IACxF,oEAAoE;IACpE,MAAM,uBAAuB,GAAG,WAAW,CAAC,CAAC,SAAiB,EAAE,KAAc,EAAE,EAAE;QAChF,kEAAkE;QAClE,OAAO,CAAC,CAAC,QAAa,EAAE,EAAE;YACxB,IAAI,CAAC,QAAQ;gBAAE,OAAO,QAAQ,CAAC;YAC/B,OAAO,oBAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,yFAAyF;QACzF,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,uBAAuB,EAAE;YACtD,GAAG,kBAAkB,CAAC,OAAO;YAC7B,0BAA0B,EAAE,6CAA6C,CAAC;gBACxE,0BAA0B,EAAE,kBAAkB,CAAC,OAAO,CAAC,0BAA0B;gBACjF,YAAY;gBACZ,MAAM,EAAE,KAAK;aACd,CAAC;YACF,2BAA2B,EAAE,kBAAkB,CAAC,OAAO,CAAC,2BAA2B,IAAI,EAAE;YACzF,iBAAiB,EAAE;gBACjB,GAAG,kBAAkB,CAAC,OAAO,CAAC,iBAAiB;gBAC/C,UAAU,EAAE,IAAI;gBAChB,SAAS;aACV;YACD,aAAa,EAAE,CACb,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;gBACzC,CAAC,CAAC,KAAgC;gBAClC,CAAC,CAAC,oBAAoB,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAC/C;SACF,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,wFAAwF;IACxF,MAAM,uBAAuB,GAAG,cAAc,EAAE,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;IACvF,MAAM,wBAAwB,GAAG,cAAc,EAAE,qBAAqB,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC;IAC3G,8FAA8F;IAC9F,8FAA8F;IAC9F,4FAA4F;IAC5F,wEAAwE;IACxE,MAAM,iBAAiB,GAAG,cAAc,EAAE,qBAAqB,EAAE,MAAM,EAAE,iBAAiB,CAAC;IAC3F,kGAAkG;IAClG,+EAA+E;IAC/E,MAAM,iBAAiB,GAAG,cAAc,EAAE,qBAAqB,EAAE,MAAM,EAAE,iBAAiB,CAAC;IAE3F;;;;OAIG;IACH,MAAM,wBAAwB,GAAG,cAAc,EAAE,qBAAqB,EAAE,MAAM,EAAE,+BAA+B,CAAC;IAEhH,4EAA4E;IAC5E,0DAA0D;IAC1D,2EAA2E;IAC3E,MAAM,cAAc,GAAG,OAAO,CAC5B,GAAG,EAAE;QACH,IAAI,uBAAuB;YAAE,OAAO,uBAAuB,CAAC;QAC5D,OAAO,aAAa,CAAC,CAAC,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9E,CAAC,EACD,CAAC,uBAAuB,EAAE,aAAa,CAAC,CACzC,CAAC;IAEF,+EAA+E;IAC/E,EAAE;IACF,iFAAiF;IACjF,6EAA6E;IAC7E,iFAAiF;IACjF,yEAAyE;IACzE,EAAE;IACF,kFAAkF;IAClF,gFAAgF;IAChF,kFAAkF;IAClF,oFAAoF;IACpF,gFAAgF;IAChF,sEAAsE;IACtE,EAAE;IACF,6EAA6E;IAC7E,mFAAmF;IACnF,2DAA2D;IAC3D,MAAM,8BAA8B,GAAG,2BAA2B,CAAC;QACjE,YAAY,EAAE,eAAe,CAAC,YAAY;QAC1C,WAAW,EAAE,4BAA4B,CAAC,MAAM;QAChD,aAAa,EAAE,aAAa;QAC5B,0BAA0B,EAAE,eAAe,CAAC,0BAA0B,IAAI,EAAE;QAC5E,2BAA2B,EAAE,eAAe,CAAC,2BAA2B;QACxE,cAAc,EAAE,cAAc,IAAI,kBAAkB,CAAC,OAAO;QAC5D,WAAW,EAAE,eAAe,CAAC,SAAS,EAAE,mBAAmB;KAC5D,CAAC,CAAC;IAEH,MAAM,yBAAyB,GAAG,WAAW,CAAoC,CAAC,OAAO,EAAE,EAAE;QAC3F,+EAA+E;QAC/E,gFAAgF;QAChF,MAAM,KAAK,GAAG,8BAA8B,CAAC,KAAK,CAAC,IAAI,CACrD,CAAC,IAAI,EAAqD,EAAE,CACzD,IAA0B,CAAC,IAAI,KAAK,WAAW;eAC5C,IAA0B,CAAC,IAAI,KAAK,UAAU;eAC9C,IAAyC,CAAC,mBAAmB,KAAK,OAAO,CAAC,mBAAmB,CACpG,CAAC;QAEF,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;YACpB,IAAI,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC;gBAC9B,qBAAqB,CAAC,SAAS,EAAE,CAAC,IAAI,CACpC,sCAAsC,OAAO,CAAC,SAAS,uBAAuB;sBAC5E,IAAI,OAAO,CAAC,mBAAmB,gCAAgC,eAAe,CAAC,YAAY,GAAG;sBAC9F,mGAAmG,CACtG,CAAC;YACJ,CAAC;YACD,OAAO;QACT,CAAC;QAED,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC,EAAE,CAAC,8BAA8B,CAAC,KAAK,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;IAEzE,MAAM,uBAAuB,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3C,IAAI,uBAAuB,EAAE,CAAC;YAC5B,OAAO;gBACL,gBAAgB,EAAE,EAAE;gBACpB,4BAA4B,EAAE,EAAE;aACjC,CAAC;QACJ,CAAC;QAED,8EAA8E;QAC9E,8EAA8E;QAC9E,wEAAwE;QACxE,OAAO,0CAA0C,CAAC;YAChD,YAAY;YACZ,MAAM,EAAE,aAAa;YACrB,UAAU,EAAE,aAAoD;YAChE,QAAQ;SACT,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,uBAAuB,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IAEpF,MAAM,SAAS,GAAG,CAAC,aAAa,CAAC;IAEjC,IAAI,OAAO,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAEnC,cAAc;IACd,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,UAAU,GAAG,UAAU,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,CAAC;QAChG,MAAM,YAAY,GAAG,UAAU,CAAC;QAEhC,OAAO,CACL,cAAK,SAAS,EAAE,SAAS,YACvB,eAAK,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,+DAA+D,aACzF,YAAG,SAAS,EAAC,8BAA8B,YAAE,UAAU,GAAK,EAC5D,YAAG,SAAS,EAAC,wCAAwC,YAAE,YAAY,GAAK,IACpE,GACF,CACP,CAAC;IACJ,CAAC;IAED,+BAA+B;IAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,gBAAgB,GAAG,UAAU,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,CAAC;QACxG,MAAM,WAAW,GAAG,UAAU,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,eAAe,EAAE;YAC5F,SAAS,EAAE,mBAAmB;YAC9B,QAAQ,EAAE,YAAY;SACvB,CAAC,CAAC;QAEH,OAAO,CACL,cAAK,SAAS,EAAE,SAAS,YACvB,eAAK,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,+DAA+D,aACzF,YAAG,SAAS,EAAC,8BAA8B,YAAE,gBAAgB,GAAK,EAClE,YAAG,SAAS,EAAC,wCAAwC,YAAE,WAAW,GAAK,IACnE,GACF,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,WAAW,IAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,YAC3D,KAAC,kBAAkB,IACjB,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,EACrE,oBAAoB,EAAE,kCAAkC,EACxD,0BAA0B,EAAE,wCAAwC,EACpE,2BAA2B,EAAE,eAAe,CAAC,2BAA2B,EACxE,cAAc,EAAE,cAAc,EAC9B,mBAAmB,EAAE,2BAA2B,IAAI,IAAI,EACxD,qBAAqB,EAAE,qBAAqB,EAC5C,iBAAiB,EAAE,iBAAiB,EACpC,GAAG,EAAE,YAAY,EACjB,mBAAmB,EACjB,CAAC,YAAY,IAAI,6BAA6B,CAAC,8BAA8B,CAAC;gBAC5E,CAAC,CAAC,uBAAuB;gBACzB,CAAC,CAAC,SAAS,EAEf,8BAA8B,EAAE,8BAA8B,EAC9D,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,SAAS,EACpB,wBAAwB,EAAE,wBAAwB,EAClD,iBAAiB,EAAE,iBAAiB,EACpC,iBAAiB,EAAE,iBAAiB,EACpC,wBAAwB,EAAE,wBAAwB,EAClD,gBAAgB,EAAE,uBAAuB,CAAC,gBAAgB,EAC1D,4BAA4B,EAAE,uBAAuB,CAAC,4BAA4B,EAClF,yBAAyB,EAAE,yBAAyB,GACpD,GACU,CACf,CAAC;AACJ,CAAC;AAED,mCAAmC,CAAC,WAAW,GAAG,4BAA4B,CAAC;AAE/E,MAAM,CAAC,MAAM,0BAA0B,GAAyE,mCAAmC,CAAC","sourcesContent":["/**\n * ResourceAutomaticDisplayer Component\n *\n * A fully autonomous display component that derives all configuration from a\n * FrontendResourceOperationContext. It automatically:\n * - Uses the operation's responseDto (or mainSchema) as the display schema\n * - Resolves labels from i18n based on resource type and operation\n * - Fetches data for READ operations\n * - Handles i18n loading via LoadingGate\n * - Generates a display template from schema (DD-9: template-as-skeleton)\n *\n * The template renders unconditionally — when data is still loading, individual\n * DisplayField components show `<Skeleton>` placeholders via DisplayTemplateContext.isLoading.\n */\n\nimport React, { useCallback, useEffect, useMemo, useState, useRef } from 'react';\n\nimport {\n CoreResourceOperation,\n ErrorCustomMessageReference,\n ErrorType,\n WildoError_Frontend,\n DataMode,\n type FieldMetaEntry,\n ResourcesConfig_OperationPathUtils, describeCaughtError } from '@wildo-ai/saas-models';\nimport { buildResourceFileServeBaseUrl } from '~wildo-frontend-lib/core/resources/file-serve-url.frontend.utils';\nimport {\n FrontendComponentType,\n} from '@wildo-ai/presets-components-models';\nimport { getPrimaryKeyFieldName, type FileFieldEndpoints } from '@wildo-ai/zod-decorators';\n\nimport { AutomaticDisplayer, type AutomaticDisplayerLabels } from './AutomaticDisplayer';\nimport type { ParentReferenceConfig } from './automatic-displayer.utils';\nimport { setNestedValueAtPath } from './display-field-resolution.utils';\nimport type {\n FrontendResourceConfiguration_Operation,\n FrontendResourceOperationContext,\n} from '~wildo-frontend-lib/core/resources/resources.frontend.schemas';\nimport { useResourceRegistry } from '~wildo-frontend-lib/core/resources/useResourceRegistry';\nimport { useResourceOperationActions } from '~wildo-frontend-lib/core/resources/useResourceOperationActions';\nimport { ResourceOperationDisplayMode, NavigationZoneName } from '@wildo-ai/saas-models';\nimport type { FileActivationOperationDispatcher } from '~wildo-frontend-lib/components/data-display/useFileActivation';\nimport { frontendResourceUtils, FrontendResourceUtils } from '~wildo-frontend-lib/core/resources/frontend-resource.utils';\nimport { useEventBus } from '~wildo-frontend-lib/core/events/useEventBus';\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { ErrorBuilderFrontend } from '~wildo-frontend-lib/core/errors/errors-builder.frontend.services';\nimport { FrontendEvents } from '~wildo-frontend-lib/core/events/events.frontend.schemas';\nimport { envLoader } from '~wildo-frontend-lib/core/runtime/env-variable-loader.frontend.service';\nimport { AutomatedLayoutFrontendUtils } from '~wildo-frontend-lib/core/automated-layout/automated-layout.frontend.utils';\nimport { useSearchParams } from 'react-router-dom';\nimport { LoadingGate } from '~wildo-frontend-lib/core/loading/LoadingGate';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\nimport { generateDefaultDisplayTemplate } from '~wildo-frontend-lib/core/automated-layout/default-layout-generator.frontend.utils';\nimport { resolveAutomaticRelationshipDisplayShaping } from '~wildo-frontend-lib/core/resources/relationship-surface-runtime.frontend.utils';\nimport { pickInlineFieldWriteOperation } from '~wildo-frontend-lib/core/resources/resource-addressability.frontend.utils';\n\nimport { RMMEventType, MutationSourceType, ConflictStrategy } from '~wildo-frontend-lib/core/resources/rmm/types';\nimport { useResourceRMM } from '~wildo-frontend-lib/core/resources/rmm/useResourceRMM';\nimport {\n canSeedRMMFromLoadedPayload,\n performCanonicalRMMRead,\n resolveCanonicalRMMReadOperationPathKey,\n} from '~wildo-frontend-lib/core/resources/rmm/canonical-read.frontend.utils';\nimport {\n allowsDirectOperationFallback,\n UpdateLikeMutationFallbackMode,\n} from '~wildo-frontend-lib/core/resources/rmm/update-like-mutation-fallback.frontend';\nimport type { NavigationZone } from '~wildo-frontend-lib/core/navigation/navigation.schemas';\nimport { isTransientBackendFailure } from '~wildo-frontend-lib/core/requests/auth-refresh-resilience.frontend';\nimport { isApiNotReadyError } from '~wildo-frontend-lib/core/requests/api-readiness-checker.frontend.service';\nimport {\n normalizeContextResourceIdentifiersForOutcome,\n normalizeContextResourceIdentifiersForTransport,\n} from '~wildo-frontend-lib/core/resources/context-resource-identifiers.frontend.utils';\n\nconst logger = LoggerFrontendService.getLogger();\nconst logDebug = logger.debugByType('ResourceAutomaticDisplayer');\n\n/** First retry of a transiently failed read. Short: most such failures are a restart already nearly over. */\nexport const READ_RETRY_FIRST_DELAY_MS = 2_000;\n/** The backoff's ceiling: a backend down for minutes is asked twice a minute, not ten times. */\nexport const READ_RETRY_MAX_DELAY_MS = 30_000;\nlogger.setDebugTypeLogging('ResourceAutomaticDisplayer', false);\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface ResourceAutomaticDisplayerProps {\n /** The resource operation context containing all operation details */\n resourceContext: FrontendResourceOperationContext;\n\n /** Callback when data fetch fails */\n onError?: (error: Error) => void;\n\n /** Additional CSS classes */\n className?: string;\n\n /** Override labels (merged with auto-resolved labels) */\n labelsOverride?: Partial<AutomaticDisplayerLabels>;\n\n\n /**\n * Data mode override (takes priority over query param).\n * Priority: Component prop > Query param > Backend default\n */\n dataMode?: DataMode;\n\n /**\n * Callback invoked when data is successfully loaded from the API.\n * Used by Read_Default to pass parent data to ContainerNested for\n * conditional relationship filtering (discriminator-based).\n */\n onDataLoaded?: (data: Record<string, unknown>) => void;\n\n /**\n * Parent reference configuration for inChildView display (C1: P5-02).\n * Passed through to AutomaticDisplayer → ResourceDisplayContext → FK Display Preset.\n */\n parentReferenceConfig?: ParentReferenceConfig;\n /** Current navigation zone for inline-edit quick-create flows */\n navigationZone?: NavigationZone;\n /**\n * Controls whether engine-default inline edit may downgrade to a direct UPDATE\n * operation when RMM is unavailable. Defaults to `RMM_REQUIRED`.\n */\n updateLikeMutationFallbackMode?: UpdateLikeMutationFallbackMode;\n}\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\nfunction ResourceAutomaticDisplayerComponent({\n resourceContext,\n onError,\n className,\n labelsOverride,\n dataMode: propDataMode,\n onDataLoaded,\n parentReferenceConfig,\n navigationZone,\n updateLikeMutationFallbackMode = UpdateLikeMutationFallbackMode.RMM_REQUIRED,\n}: ResourceAutomaticDisplayerProps): React.JSX.Element | null {\n // Contexts\n const { doOperation, registry } = useResourceRegistry();\n const { emit, resourceRefreshEvent } = useEventBus();\n const { lastRefreshAt } = resourceRefreshEvent({ ctx: resourceContext as any });\n const { tComponent, isReady } = useI18n({ component: FrontendComponentType.RESOURCES_LAYOUTS_READ, resource: resourceContext.resourceType });\n const [searchParams] = useSearchParams();\n\n const i18nKeys = useMemo(() => [\n `resources.${resourceContext.resourceType}`,\n `components.${FrontendComponentType.RESOURCES_LAYOUTS_READ}`,\n ], [resourceContext.resourceType]);\n\n // Refs for stable function references (avoid infinite loops in useEffect)\n const doOperationRef = useRef(doOperation);\n const emitRef = useRef(emit);\n const onErrorRef = useRef(onError);\n const onDataLoadedRef = useRef(onDataLoaded);\n const resourceContextRef = useRef(resourceContext);\n\n // Keep refs updated\n doOperationRef.current = doOperation;\n emitRef.current = emit;\n onErrorRef.current = onError;\n onDataLoadedRef.current = onDataLoaded;\n resourceContextRef.current = resourceContext;\n\n // Error builder (memoized to prevent recreation)\n const errorBuilder = useMemo(() => new ErrorBuilderFrontend(), []);\n\n // Extract from resource context\n const { resourceType, operation, contextResourceIdentifiers } = resourceContext;\n const operationIdentifier = String(operation.operationIdentifier);\n\n // State\n const [data, setData] = useState<Record<string, unknown> | null>(null);\n const [fetchError, setFetchError] = useState<WildoError_Frontend | null>(null);\n const [rmmSeedFailed, setRmmSeedFailed] = useState(false);\n\n const loadingScopes = useMemo(() => [{ resourceType, operation: operationIdentifier }], [resourceType, operationIdentifier]);\n\n // Extract dataMode: Component prop > Query param > Backend default\n const dataMode = useMemo(() => {\n return frontendResourceUtils.extractDataMode(searchParams, propDataMode);\n }, [searchParams, propDataMode]);\n const effectiveDataMode = useMemo(() => dataMode ?? DataMode.RAW, [dataMode]);\n\n // Get the display schema from the operation based on dataMode\n const displaySchema = useMemo(() => {\n let schema;\n switch (effectiveDataMode) {\n case DataMode.SUMMARY:\n schema = operation.summaryDto || operation.responseDto;\n break;\n case DataMode.CONTEXT:\n schema = operation.contextDto || operation.responseDto;\n break;\n case DataMode.RAW:\n default:\n schema = operation.responseDto;\n break;\n }\n\n if (!schema) {\n logger.error('[ResourceAutomaticDisplayer] No DTO found', {\n operationIdentifier,\n resourceType,\n dataMode: effectiveDataMode,\n });\n }\n return schema;\n }, [effectiveDataMode, operation, operationIdentifier, resourceType]);\n\n // Get resource configuration for frontendConfiguration\n const resourceConfig = useMemo(() => {\n return registry.resourceConfigurations[resourceType];\n }, [registry, resourceType]);\n\n // Resolve layout refs for i18n label resolution\n const layoutRefs = resourceConfig?.frontendConfiguration?.layout?.refs;\n\n // Build a stable key from contextResourceIdentifiers for memoization\n const contextResourceIdentifiersKey = useMemo(() => {\n return FrontendResourceUtils.buildContextResourceIdentifiersKey(contextResourceIdentifiers);\n }, [contextResourceIdentifiers]);\n\n // Build contextual parameters for API calls\n const contextualParameters = useMemo(() => {\n return FrontendResourceUtils.buildContextualParameters(contextResourceIdentifiers, registry);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- using stable key instead of object reference\n }, [contextResourceIdentifiersKey, registry]);\n\n // Fetch through the actual routed/display operation so request/response DTOs\n // stay aligned for custom read-like surfaces.\n const operationPathKey = useMemo(() => {\n return ResourcesConfig_OperationPathUtils.createOperationPathKeyFromOperation(operation);\n }, [operation]);\n\n // Build labels for AutomaticDisplayer\n // Injects resourceContext for automatic i18n label resolution.\n // Explicit labelsOverride fields/enums/sections take priority over i18n.\n const labels = useMemo<AutomaticDisplayerLabels>(() => {\n return {\n resourceContext: { resourceType, operationId: operationIdentifier },\n ...labelsOverride,\n };\n }, [resourceType, operationIdentifier, labelsOverride]);\n\n // Build fileUploadContext for display. `getMetadata` (global /files) loads file\n // metadata; `serve` is the resource-integrated, AUTHENTICATED byte-serve base for\n // inline image/PDF previews (authorization inherits the parent resource's READ —\n // the display consumer appends `/{fileId}` and fetches via the authed client).\n const fileUploadContext = useMemo<Record<string, FileFieldEndpoints> | undefined>(() => {\n if (!displaySchema) return undefined;\n\n try {\n const fileFieldPaths = AutomatedLayoutFrontendUtils.collectFileFieldPaths(displaySchema);\n if (fileFieldPaths.length === 0) return undefined;\n\n const apiBaseUrl = envLoader.getApiUrl();\n const filesBasePath = `${apiBaseUrl}/api/v1/files`;\n\n // Resolve the resource-integrated serve base per field for the CURRENT record, via\n // the shared builder (see `buildResourceFileServeBaseUrl`). A context-addressed\n // singleton READ (e.g. the user's own profile) has no resourceId in its route, so\n // the record's own `_id` (from the fetched `data`) fills the `{resourceId}` segment —\n // until `data` loads it stays unresolved → serve omitted → neutral card.\n const serveBaseByField: Record<string, string> = {};\n const recordId = data\n ? String((data as Record<string, unknown>)._id\n ?? (data as Record<string, unknown>)[resourceConfig?.resourceFieldIdentifier ?? '_id']\n ?? '')\n : '';\n if (resourceConfig && recordId) {\n for (const fieldName of fileFieldPaths) {\n const serveBase = buildResourceFileServeBaseUrl({\n registry,\n resourceConfig,\n operation,\n resourceType,\n fieldName,\n recordId,\n contextResourceIdentifiers,\n contextualParameters,\n parentResourcesRequirements: resourceContextRef.current.parentResourcesRequirements,\n apiBaseUrl,\n });\n if (serveBase) serveBaseByField[fieldName] = serveBase;\n }\n }\n\n const context: Record<string, FileFieldEndpoints> = {};\n for (const fieldName of fileFieldPaths) {\n context[fieldName] = {\n getMetadata: filesBasePath,\n serve: serveBaseByField[fieldName],\n // Upload/override/delete not needed for display\n upload: '',\n override: undefined,\n delete: '',\n };\n }\n\n return context;\n } catch {\n return undefined;\n }\n // `data` is a dep: the serve base needs the fetched record's id (context-addressed\n // singletons have no resourceId in the READ route), so it must recompute on load.\n }, [displaySchema, resourceConfig, operation, registry, contextResourceIdentifiers, contextualParameters, resourceType, data]);\n\n // Fetch data - use refs to avoid infinite loops from unstable function references\n useEffect(() => {\n let cancelled = false;\n let retryTimer: ReturnType<typeof setTimeout> | undefined;\n let retryDelay = READ_RETRY_FIRST_DELAY_MS;\n\n /*\n * `isRetry` keeps the FAILURE on screen while another attempt is made. Clearing it first would\n * flip the surface error → skeleton → error every few seconds; and a retry is not a reason to\n * pretend the last attempt worked.\n */\n const fetchData = async (isRetry = false) => {\n if (!isRetry) setFetchError(null);\n\n try {\n const result = await doOperationRef.current(\n operationPathKey,\n {\n contextualParameters,\n parentResourcesRequirements: resourceContextRef.current.parentResourcesRequirements,\n dataMode: effectiveDataMode,\n },\n // silent: this displayer owns the read-failure UX — it renders the error\n // inline (setFetchError below) AND emits NOTIFY_RESOURCE_ERROR. Suppress\n // the redundant GLOBAL error toast so a failed read doesn't triple-surface\n // (inline + resource toast + global toast). Matches the resource-owned model.\n { silent: true },\n );\n\n if (cancelled) return;\n setFetchError(null);\n setData(result);\n // Notify parent (e.g., Read_Default) of loaded data for downstream use (e.g., conditional relationships)\n onDataLoadedRef.current?.(result as Record<string, unknown>);\n } catch (error) {\n if (cancelled) return;\n\n // Preserve the real operation path key in diagnostics so custom read-like\n // surfaces are debuggable without pretending they are literal READ ops.\n const originalError = error instanceof Error ? error : new Error(String(error));\n\n const errorRecord = (error && typeof error === 'object') ? error as Record<string, unknown> : {};\n const wildoError = errorBuilder.buildWildoError_Frontend(\n ErrorType.NOT_FOUND,\n {\n customMessageReference: ErrorCustomMessageReference.FRONTEND_FORM_READ_OPERATION_NOT_AVAILABLE,\n operationPathKey,\n context: {\n resourceType,\n operationIdentifier,\n originalErrorMessage: originalError.message,\n originalErrorStack: originalError.stack,\n httpCode: errorRecord.code,\n httpContext: errorRecord.context,\n },\n }\n );\n\n setFetchError(wildoError);\n\n /*\n * A TRANSIENT failure is retried, with backoff, until it succeeds or the surface unmounts.\n *\n * A read that lost a race with a backend restart used to be the END of that surface: the\n * alert below, and nothing else, until the person navigated away and back. Measured\n * 2026-09-20 in a browser drive — a detail pane sat on \"failed to load\" for a full minute\n * while its backend had been answering again for most of it. `ApiNotReadyError` exists\n * precisely so \"callers and retry ladders\" can classify this case, and this caller had none.\n *\n * ONLY transient failures: a 404 or a 403 is an answer, and asking again is how a surface\n * comes to hammer a server that has already said no. The classifier is the framework's own\n * (`isTransientBackendFailure` — no response, 5xx, 408, the readiness gate's bounded refusal).\n *\n * The error event below fires for the FIRST failure of a sequence only, so a backend that is\n * down for two minutes produces one notification, not one per attempt.\n */\n if (isTransientBackendFailure(error) || isApiNotReadyError(error)) {\n if (retryTimer !== undefined) clearTimeout(retryTimer);\n retryTimer = setTimeout(() => { retryTimer = undefined; void fetchData(true); }, retryDelay);\n retryDelay = Math.min(retryDelay * 2, READ_RETRY_MAX_DELAY_MS);\n }\n if (isRetry) return;\n\n // Emit error event\n const currentCtx = resourceContextRef.current;\n emitRef.current(FrontendEvents.NOTIFY_RESOURCE_ERROR, {\n ...currentCtx,\n contextResourceIdentifiers: normalizeContextResourceIdentifiersForTransport(\n currentCtx.contextResourceIdentifiers,\n ),\n parentResourcesRequirements: currentCtx.parentResourcesRequirements || [],\n additionalContext: {\n ...currentCtx.additionalContext,\n error: originalError.message,\n // Let the notification layer resolve a localized message (tErrorMessage)\n // instead of falling back to the generic default-error label.\n errorCustomMessageReference: ErrorCustomMessageReference.FRONTEND_FORM_READ_OPERATION_NOT_AVAILABLE,\n },\n });\n\n onErrorRef.current?.(originalError);\n logDebug('fetch error', { resourceType, error: originalError.message });\n } finally {\n // no-op — loading tracked by centralized LoadingContext\n }\n };\n\n void fetchData();\n\n return () => {\n cancelled = true;\n if (retryTimer !== undefined) clearTimeout(retryTimer);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- using refs for unstable functions/objects; contextResourceIdentifiersKey is the stable proxy for contextualParameters\n }, [resourceType, operationPathKey, contextResourceIdentifiersKey, errorBuilder, operationIdentifier, effectiveDataMode, lastRefreshAt]);\n\n // Extract resource ID for inline editing support (must be before early returns — React hooks rule)\n const currentResourceId = useMemo(() => {\n const ctxValue = contextResourceIdentifiers?.[resourceType];\n if (ctxValue) return frontendResourceUtils.getResourceId(ctxValue);\n // ── READ-bootstrap fallback: the row had no id in its URL, so take it from the loaded data ──\n //\n // This is the path `useResourceRMM`'s own pin is named for — \"fails closed for parent-context\n // singleton updates UNTIL READ BOOTSTRAP PROVIDES THE PERSISTED CHILD ID\". A context-addressed\n // singleton (one `organizationSsoConfig` per organization) is addressed by its parent scope and\n // carries no id of its own in the route, so this is the only place its identity can come from.\n //\n // It asked for `data[resourceFieldIdentifier]` alone, and that name is a URL PARAMETER\n // (`organizationSsoConfigId`), not a payload field. Measured 2026-09-19 on the running\n // application: the READ returns `[\"_id\", \"enforcement\", \"domains\", …]` and the lookup asked for\n // `organizationSsoConfigId`, so the id stayed undefined after a perfectly successful read.\n //\n // The consequences ran three layers deep and were all silent. The RMM is keyed on the resource\n // id, so it never attached; `canInlineEdit` is `!!rmm || <a fallback that also demands an id>`,\n // so it was false; every field on every settings singleton therefore rendered read-only,\n // booleans as a ✓/✕ glyph. That is why no settings schema had ever declared `inlineEditable` —\n // doing so would have changed nothing, because the floor was here.\n //\n // The field-identifier lookup is TRIED FIRST and kept: a payload that does carry it is answered\n // exactly as before, so no resource changes behaviour by this fallback gaining a second leg.\n if (data) {\n // getResourceFieldIdentifierForType throws if unconfigured — which is correct here,\n // since we cannot extract a resource ID without a valid field identifier.\n const fieldId = FrontendResourceUtils.getResourceFieldIdentifierForType(resourceType, registry);\n const byFieldIdentifier = data[fieldId];\n if (byFieldIdentifier != null) return byFieldIdentifier;\n\n // What the row calls its own identity. Read from the resource's declared main schema rather\n // than assuming `_id`, so a resource naming its primary key otherwise is served too.\n const primaryKeyField = resourceConfig?.mainSchema\n ? getPrimaryKeyFieldName(resourceConfig.mainSchema)\n : undefined;\n if (primaryKeyField) return data[primaryKeyField];\n }\n return undefined;\n }, [contextResourceIdentifiers, resourceType, data, registry, resourceConfig?.mainSchema]);\n\n const contextResourceIdentifiersWithResourceId = useMemo(() => {\n if (!currentResourceId || contextResourceIdentifiers?.[resourceType]) {\n return contextResourceIdentifiers;\n }\n\n return {\n ...contextResourceIdentifiers,\n [resourceType]: String(currentResourceId),\n };\n }, [contextResourceIdentifiers, currentResourceId, resourceType]);\n\n const contextualParametersWithResourceId = useMemo(() => {\n const resourceFieldIdentifier = resourceConfig?.resourceFieldIdentifier;\n if (!currentResourceId || !resourceFieldIdentifier) {\n return contextualParameters;\n }\n\n const resourceId = String(currentResourceId);\n if (String(contextualParameters[resourceFieldIdentifier] ?? '') === resourceId) {\n return contextualParameters;\n }\n\n return {\n ...contextualParameters,\n [resourceFieldIdentifier]: resourceId,\n };\n }, [contextualParameters, currentResourceId, resourceConfig?.resourceFieldIdentifier]);\n\n // =============================================================================\n // RMM (Registry-based, inline-edit-capable resources only)\n // =============================================================================\n\n const resolvedInlineEditOperation = useMemo<FrontendResourceConfiguration_Operation | undefined>(() => {\n if (!resourceConfig) {\n return undefined;\n }\n\n return pickInlineFieldWriteOperation({\n resourceConfig,\n operations: resourceConfig.operations ?? [],\n registry,\n hasResourceId: currentResourceId != null,\n contextResourceIdentifiers: contextResourceIdentifiersWithResourceId,\n contextualParameters: contextualParametersWithResourceId,\n });\n }, [\n contextResourceIdentifiersWithResourceId,\n contextualParametersWithResourceId,\n currentResourceId,\n operation,\n registry,\n resourceConfig,\n ]);\n\n const hasUpdateOperation = useMemo(() => {\n return resolvedInlineEditOperation !== undefined;\n }, [resolvedInlineEditOperation]);\n\n const { rmm, rmmSnapshot } = useResourceRMM({\n resourceType,\n resourceId: currentResourceId != null ? String(currentResourceId) : null,\n doOperationRef,\n contextualParameters: contextualParametersWithResourceId,\n parentResourcesRequirements: resourceContext.parentResourcesRequirements as unknown[] | undefined,\n contextResourceIdentifiers: contextResourceIdentifiersWithResourceId,\n resourceSchema: resourceConfig?.mainSchema,\n enabled: hasUpdateOperation && currentResourceId != null,\n conflictPolicy: { strategy: ConflictStrategy.ACCEPT_REMOTE },\n });\n const canonicalReadOperationPathKey = useMemo(() => {\n if (rmm) {\n return rmm.readOperationPathKey;\n }\n\n return resolveCanonicalRMMReadOperationPathKey(resourceType, registry, {\n hasResourceId: currentResourceId != null,\n contextResourceIdentifiers: contextResourceIdentifiersWithResourceId,\n contextualParameters: contextualParametersWithResourceId,\n });\n }, [\n registry,\n resourceType,\n rmm,\n currentResourceId,\n contextResourceIdentifiersWithResourceId,\n contextualParametersWithResourceId,\n ]);\n const effectiveRmm = rmmSeedFailed ? null : rmm;\n\n useEffect(() => {\n logDebug('RMM obtained', {\n resourceType,\n resourceId: currentResourceId != null ? String(currentResourceId) : undefined,\n rmmExists: !!rmm,\n });\n }, [rmm, resourceType, currentResourceId]);\n\n useEffect(() => {\n setRmmSeedFailed(false);\n }, [canonicalReadOperationPathKey, currentResourceId, operationPathKey, resourceType]);\n\n /**\n * Initialize RMM with fetched data. Dedicated useEffect (not inside the fetch effect)\n * because `rmm` may not be available when the fetch fires (currentResourceId comes from\n * fetched data in some cases). The `confirmedData !== null` guard prevents re-initialization\n * when another consumer (e.g., a form) has already seeded the RMM.\n */\n useEffect(() => {\n if (!rmm || !data) return;\n const snapshot = rmm.getSnapshot();\n if (snapshot.confirmedData !== null && lastRefreshAt == null) return;\n if (!canonicalReadOperationPathKey) {\n setRmmSeedFailed(true);\n logger.warn('[ResourceAutomaticDisplayer] Cannot seed RMM without an addressable canonical READ', {\n resourceType,\n resourceId: currentResourceId != null ? String(currentResourceId) : undefined,\n });\n return;\n }\n\n let cancelled = false;\n const seedRMM = async () => {\n const shouldTrustDisplayedPayload = canSeedRMMFromLoadedPayload({\n loadedOperationPathKey: operationPathKey,\n canonicalReadOperationPathKey,\n dataMode: effectiveDataMode,\n });\n\n const sourceData = shouldTrustDisplayedPayload\n ? data\n : await performCanonicalRMMRead({\n doOperation: doOperationRef.current,\n readOperationPathKey: canonicalReadOperationPathKey,\n contextualParameters: contextualParametersWithResourceId,\n parentResourcesRequirements: resourceContextRef.current.parentResourcesRequirements,\n });\n\n if (cancelled || sourceData == null || typeof sourceData !== 'object') return;\n\n const row = sourceData as Record<string, unknown>;\n const version = (row._version as number | undefined) ?? 0;\n rmm.setInitialState(row, version, row._field_meta as Record<string, FieldMetaEntry> | undefined);\n setRmmSeedFailed(false);\n logDebug('setInitialState', {\n resourceType,\n resourceId: currentResourceId != null ? String(currentResourceId) : undefined,\n version,\n fieldCount: Object.keys(row).length,\n refreshDriven: snapshot.confirmedData !== null,\n seededFromCanonicalRead: !shouldTrustDisplayedPayload,\n });\n };\n\n seedRMM().catch((error: unknown) => {\n setRmmSeedFailed(true);\n logger.warn('[ResourceAutomaticDisplayer] Failed to seed RMM from canonical read', {\n resourceType,\n resourceId: currentResourceId != null ? String(currentResourceId) : undefined,\n error: describeCaughtError(error),\n });\n });\n\n return () => {\n cancelled = true;\n };\n }, [\n rmm,\n data,\n effectiveDataMode,\n operationPathKey,\n canonicalReadOperationPathKey,\n contextualParametersWithResourceId,\n resourceType,\n currentResourceId,\n lastRefreshAt,\n ]);\n\n // RMM event handler — simpler than the form's handler (no RHF state to sync)\n useEffect(() => {\n if (!rmm || !rmmSnapshot?.lastEvent) return;\n const event = rmmSnapshot.lastEvent;\n logDebug('RMM event', {\n type: event.type,\n resourceType,\n resourceId: currentResourceId != null ? String(currentResourceId) : undefined,\n });\n const shouldRefetchDisplayedOperation = canonicalReadOperationPathKey\n ? !canSeedRMMFromLoadedPayload({\n loadedOperationPathKey: operationPathKey,\n canonicalReadOperationPathKey,\n dataMode: effectiveDataMode,\n })\n : false;\n\n const refetchDisplayedData = () => {\n if (!shouldRefetchDisplayedOperation) return;\n doOperationRef.current(operationPathKey, {\n contextualParameters: contextualParametersWithResourceId,\n parentResourcesRequirements: resourceContextRef.current.parentResourcesRequirements,\n dataMode: effectiveDataMode,\n }).then((result: Record<string, unknown>) => {\n setData(result as Record<string, unknown>);\n }).catch((err) => {\n logger.warn('[ResourceAutomaticDisplayer] Summary/context refetch failed (RMM handler)', {\n resourceType,\n error: describeCaughtError(err),\n });\n });\n };\n\n switch (event.type) {\n case RMMEventType.MUTATION_RESULT: {\n if (event.result.success) {\n if (event.source.type === MutationSourceType.DISPLAY) {\n emitRef.current(FrontendEvents.NOTIFY_RESOURCE_SUCCESS, {\n ...resourceContextRef.current,\n contextResourceIdentifiers: normalizeContextResourceIdentifiersForOutcome({\n contextResourceIdentifiers: resourceContextRef.current.contextResourceIdentifiers,\n resourceType,\n result: event.result.responseData,\n }),\n parentResourcesRequirements: resourceContextRef.current.parentResourcesRequirements || [],\n additionalContext: {\n ...resourceContextRef.current.additionalContext,\n inlineEdit: true,\n fieldName: event.result.savedFields?.[0],\n },\n resultSummary: event.result.responseData,\n });\n }\n refetchDisplayedData();\n }\n break;\n }\n\n case RMMEventType.REMOTE_UPDATE:\n case RMMEventType.CONFLICT_RESET: {\n refetchDisplayedData();\n break;\n }\n\n case RMMEventType.RESOURCE_DELETED: {\n break;\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- intentional: event-driven side effects keyed on lastEvent.id\n }, [rmmSnapshot?.lastEvent?.id]);\n\n const canRenderFromRMM = useMemo(() => {\n return canSeedRMMFromLoadedPayload({\n loadedOperationPathKey: operationPathKey,\n canonicalReadOperationPathKey,\n dataMode: effectiveDataMode,\n });\n }, [canonicalReadOperationPathKey, effectiveDataMode, operationPathKey]);\n\n // Effective data source: only the canonical RAW read surface renders RMM data.\n // Other RAW read-like surfaces keep their authored payload shape even if RMM is active.\n const isSummaryMode = effectiveDataMode === DataMode.SUMMARY || effectiveDataMode === DataMode.CONTEXT;\n const effectiveData = (!isSummaryMode && canRenderFromRMM && rmm && rmmSnapshot.optimisticData)\n ? rmmSnapshot.optimisticData\n : data;\n\n useEffect(() => {\n logDebug('effectiveData source', {\n dataMode: effectiveDataMode,\n usingRmmData: canRenderFromRMM && !!rmmSnapshot?.optimisticData,\n });\n }, [canRenderFromRMM, effectiveDataMode, rmmSnapshot?.optimisticData]);\n\n // GAP-1/4: Optimistic data update after successful inline edit (non-RMM fallback path).\n // When RMM is active, snapshot.optimisticData handles this instead.\n const handleInlineEditSuccess = useCallback((fieldName: string, value: unknown) => {\n // Optimistic local merge — update the field in current data state\n setData((prevData: any) => {\n if (!prevData) return prevData;\n return setNestedValueAtPath(prevData, fieldName, value);\n });\n\n // Emit success notification so external listeners (toasts, sibling components) can react\n emitRef.current(FrontendEvents.NOTIFY_RESOURCE_SUCCESS, {\n ...resourceContextRef.current,\n contextResourceIdentifiers: normalizeContextResourceIdentifiersForOutcome({\n contextResourceIdentifiers: resourceContextRef.current.contextResourceIdentifiers,\n resourceType,\n result: value,\n }),\n parentResourcesRequirements: resourceContextRef.current.parentResourcesRequirements || [],\n additionalContext: {\n ...resourceContextRef.current.additionalContext,\n inlineEdit: true,\n fieldName,\n },\n resultSummary: (\n typeof value === 'object' && value !== null\n ? value as Record<string, unknown>\n : setNestedValueAtPath({}, fieldName, value)\n ),\n });\n }, [resourceType]);\n\n // ── Resource layout config (explicit template, default chrome, inline-edit default) ──\n const explicitDisplayTemplate = resourceConfig?.frontendConfiguration?.layout?.display;\n const defaultDisplayChromeMode = resourceConfig?.frontendConfiguration?.layout?.defaultChromeMode?.display;\n // A settings-shaped layout offers its writable fields for in-place editing without each field\n // declaring it. Read here, beside `defaultChromeMode`, because this is the one component that\n // holds BOTH the resource config and the display subtree — the generic displayers below are\n // deliberately resource-unaware. See `ResourceLayoutInlineEditDefault`.\n const defaultInlineEdit = resourceConfig?.frontendConfiguration?.layout?.defaultInlineEdit;\n // How an empty field words itself on this layout — overrides the surface policy's `em-dash` for a\n // settings surface, where a dash refuses to say which kind of emptiness it is.\n const defaultEmptyValue = resourceConfig?.frontendConfiguration?.layout?.defaultEmptyValue;\n\n /*\n * The layout's DISPLAY section container mode. Read here, beside the other three layout defaults,\n * and handed to the template host — the grouping that turns sibling sections into one container\n * inspects each child's props, so this has to reach the HOST rather than the `Section` component.\n */\n const defaultSectionAppearance = resourceConfig?.frontendConfiguration?.layout?.defaultDisplaySectionAppearance;\n\n // ── Template resolution (DD-9: schema-only, stable across data changes) ──\n // Must be before early returns to satisfy Rules of Hooks.\n // Priority: explicit layout.display template > auto-generated from schema.\n const layoutTemplate = useMemo(\n () => {\n if (explicitDisplayTemplate) return explicitDisplayTemplate;\n return displaySchema ? generateDefaultDisplayTemplate(displaySchema) : null;\n },\n [explicitDisplayTemplate, displaySchema],\n );\n\n // ── CUSTOM file activation → resource operation ─────────────────────────────\n //\n // A file field authored with `FileActivationPolicy.CUSTOM` names an OPERATION on\n // THIS resource. Resolving and running one needs resource context, which the\n // generic display components deliberately lack — so the dispatcher is built here\n // and passed down opaquely (same ownership split as `hiddenFieldNames`).\n //\n // It reuses the ACTION-BAR action set rather than executing anything itself. That\n // is the whole point of naming an operation: the action set has already applied\n // role authorization, `enabledCondition`, feature gating, confirmation policy and\n // the ADDRESSABLE→navigate / EMBEDDED→host / API_ONLY→execute dispatch. Re-deriving\n // any of that here would be a second, drifting authority — and would be the one\n // place in the file surface where a click could bypass authorization.\n //\n // An operation the action set does not expose (unauthorized, disabled by its\n // condition, or simply unknown) yields NO handler, so the activation renders inert\n // rather than as a control that does nothing when pressed.\n const fileActivationOperationActions = useResourceOperationActions({\n resourceType: resourceContext.resourceType,\n displayMode: ResourceOperationDisplayMode.DETAIL,\n currentObject: effectiveData,\n contextResourceIdentifiers: resourceContext.contextResourceIdentifiers ?? {},\n parentResourcesRequirements: resourceContext.parentResourcesRequirements,\n navigationZone: navigationZone ?? NavigationZoneName.PRIMARY,\n operationId: resourceContext.operation?.operationIdentifier,\n });\n\n const onFileActivationOperation = useCallback<FileActivationOperationDispatcher>((request) => {\n // Narrow to the BUTTON arm: a subgroup carries an `operationIdentifier` but no\n // handler, so matching on the identifier alone would find an unclickable entry.\n const match = fileActivationOperationActions.items.find(\n (item): item is Extract<typeof item, { type?: 'button' }> =>\n (item as { type?: string }).type !== 'separator'\n && (item as { type?: string }).type !== 'subgroup'\n && (item as { operationIdentifier?: string }).operationIdentifier === request.operationIdentifier,\n );\n\n if (!match?.onClick) {\n if (envLoader.isDevelopment()) {\n LoggerFrontendService.getLogger().warn(\n `[ResourceAutomaticDisplayer] File \"${request.fieldName}\" requests operation `\n + `\"${request.operationIdentifier}\", which is not available on ${resourceContext.resourceType} `\n + `for the current user/row (unauthorized, condition-disabled, or unknown). The activation is inert.`,\n );\n }\n return;\n }\n\n match.onClick();\n }, [fileActivationOperationActions.items, resourceContext.resourceType]);\n\n const automaticDisplayShaping = useMemo(() => {\n if (explicitDisplayTemplate) {\n return {\n hiddenFieldNames: [],\n inlineEditDisabledFieldNames: [],\n };\n }\n\n // Relationship ownership can depend on discriminator/condition checks against\n // the loaded parent row. Until data exists, automatic READ stays conservative\n // and does not guess nested-read ownership ahead of the actual payload.\n return resolveAutomaticRelationshipDisplayShaping({\n resourceType,\n schema: displaySchema,\n parentData: effectiveData as Record<string, unknown> | undefined,\n registry,\n });\n }, [displaySchema, effectiveData, explicitDisplayTemplate, registry, resourceType]);\n\n const isLoading = !effectiveData;\n\n if (isReady === false) return null;\n\n // Error state\n if (fetchError) {\n const errorTitle = tComponent(FrontendComponentType.RESOURCES_LAYOUTS_READ, 'failedToLoadData');\n const errorMessage = errorTitle;\n\n return (\n <div className={className}>\n <div role=\"alert\" className=\"p-card bg-destructive/10 border border-destructive rounded-lg\">\n <p className=\"text-destructive font-medium\">{errorTitle}</p>\n <p className=\"text-sm text-destructive/80 mt-item-xs\">{errorMessage}</p>\n </div>\n </div>\n );\n }\n\n // Guard against missing schema\n if (!displaySchema) {\n const configErrorTitle = tComponent(FrontendComponentType.RESOURCES_LAYOUTS_READ, 'configurationError');\n const noSchemaMsg = tComponent(FrontendComponentType.RESOURCES_LAYOUTS_READ, 'noSchemaFound', {\n operation: operationIdentifier,\n resource: resourceType,\n });\n\n return (\n <div className={className}>\n <div role=\"alert\" className=\"p-card bg-destructive/10 border border-destructive rounded-lg\">\n <p className=\"text-destructive font-medium\">{configErrorTitle}</p>\n <p className=\"text-sm text-destructive/80 mt-item-xs\">{noSchemaMsg}</p>\n </div>\n </div>\n );\n }\n\n return (\n <LoadingGate i18nKeys={i18nKeys} loadingScopes={loadingScopes}>\n <AutomaticDisplayer\n schema={displaySchema}\n data={effectiveData}\n className={className}\n labels={labels}\n layoutRefs={layoutRefs}\n resourceType={resourceType}\n resourceId={currentResourceId ? String(currentResourceId) : undefined}\n contextualParameters={contextualParametersWithResourceId}\n contextResourceIdentifiers={contextResourceIdentifiersWithResourceId}\n parentResourcesRequirements={resourceContext.parentResourcesRequirements}\n navigationZone={navigationZone}\n inlineEditOperation={resolvedInlineEditOperation ?? null}\n parentReferenceConfig={parentReferenceConfig}\n fileUploadContext={fileUploadContext}\n rmm={effectiveRmm}\n onInlineEditSuccess={\n !effectiveRmm && allowsDirectOperationFallback(updateLikeMutationFallbackMode)\n ? handleInlineEditSuccess\n : undefined\n }\n updateLikeMutationFallbackMode={updateLikeMutationFallbackMode}\n layoutTemplate={layoutTemplate}\n isLoading={isLoading}\n defaultDisplayChromeMode={defaultDisplayChromeMode}\n defaultInlineEdit={defaultInlineEdit}\n defaultEmptyValue={defaultEmptyValue}\n defaultSectionAppearance={defaultSectionAppearance}\n hiddenFieldNames={automaticDisplayShaping.hiddenFieldNames}\n inlineEditDisabledFieldNames={automaticDisplayShaping.inlineEditDisabledFieldNames}\n onFileActivationOperation={onFileActivationOperation}\n />\n </LoadingGate>\n );\n}\n\nResourceAutomaticDisplayerComponent.displayName = 'ResourceAutomaticDisplayer';\n\nexport const ResourceAutomaticDisplayer: typeof ResourceAutomaticDisplayerComponent & { displayName: string } = ResourceAutomaticDisplayerComponent;\n\n"]}
1
+ {"version":3,"file":"ResourceAutomaticDisplayer.js","sourceRoot":"","sources":["../../../../../src/components/data-display/ResourceAutomaticDisplayer.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * ResourceAutomaticDisplayer Component\n *\n * A fully autonomous display component that derives all configuration from a\n * FrontendResourceOperationContext. It automatically:\n * - Uses the operation's responseDto (or mainSchema) as the display schema\n * - Resolves labels from i18n based on resource type and operation\n * - Fetches data for READ operations\n * - Handles i18n loading via LoadingGate\n * - Generates a display template from schema (DD-9: template-as-skeleton)\n *\n * The template renders unconditionally — when data is still loading, individual\n * DisplayField components show `<Skeleton>` placeholders via DisplayTemplateContext.isLoading.\n */\n\nimport React, { useCallback, useEffect, useMemo, useState, useRef } from 'react';\n\nimport {\n CoreResourceOperation,\n ErrorCustomMessageReference,\n ErrorType,\n WildoError_Frontend,\n DataMode,\n type FieldMetaEntry,\n ResourcesConfig_OperationPathUtils, describeCaughtError } from '@wildo-ai/saas-models';\nimport { buildResourceFileServeBaseUrl } from '~wildo-frontend-lib/core/resources/file-serve-url.frontend.utils';\nimport {\n FrontendComponentType,\n} from '@wildo-ai/presets-components-models';\nimport { getPrimaryKeyFieldName, type FileFieldEndpoints } from '@wildo-ai/zod-decorators';\n\nimport { AutomaticDisplayer, type AutomaticDisplayerLabels } from './AutomaticDisplayer';\nimport type { ParentReferenceConfig } from './automatic-displayer.utils';\nimport { setNestedValueAtPath } from './display-field-resolution.utils';\nimport type {\n FrontendResourceConfiguration_Operation,\n FrontendResourceOperationContext,\n} from '~wildo-frontend-lib/core/resources/resources.frontend.schemas';\nimport { useResourceRegistry } from '~wildo-frontend-lib/core/resources/useResourceRegistry';\nimport { useResourceOperationActions } from '~wildo-frontend-lib/core/resources/useResourceOperationActions';\nimport { ResourceOperationDisplayMode, NavigationZoneName } from '@wildo-ai/saas-models';\nimport type { FileActivationOperationDispatcher } from '~wildo-frontend-lib/components/data-display/useFileActivation';\nimport { frontendResourceUtils, FrontendResourceUtils } from '~wildo-frontend-lib/core/resources/frontend-resource.utils';\nimport { useEventBus } from '~wildo-frontend-lib/core/events/useEventBus';\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { ErrorBuilderFrontend } from '~wildo-frontend-lib/core/errors/errors-builder.frontend.services';\nimport { FrontendEvents } from '~wildo-frontend-lib/core/events/events.frontend.schemas';\nimport { resolveEffectiveCoreOperationFromOperation } from '~wildo-frontend-lib/core/resources/operation-semantics.frontend.utils';\nimport { describeErrorGuidance, describeResourceErrorForNotification } from '~wildo-frontend-lib/components/form/validation-errors/resource-error-notification-context.utils';\nimport { envLoader } from '~wildo-frontend-lib/core/runtime/env-variable-loader.frontend.service';\nimport { AutomatedLayoutFrontendUtils } from '~wildo-frontend-lib/core/automated-layout/automated-layout.frontend.utils';\nimport { useSearchParams } from 'react-router-dom';\nimport { LoadingGate } from '~wildo-frontend-lib/core/loading/LoadingGate';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\nimport { generateDefaultDisplayTemplate } from '~wildo-frontend-lib/core/automated-layout/default-layout-generator.frontend.utils';\nimport { resolveAutomaticRelationshipDisplayShaping } from '~wildo-frontend-lib/core/resources/relationship-surface-runtime.frontend.utils';\nimport { pickInlineFieldWriteOperation } from '~wildo-frontend-lib/core/resources/resource-addressability.frontend.utils';\n\nimport { RMMEventType, MutationSourceType, ConflictStrategy } from '~wildo-frontend-lib/core/resources/rmm/types';\nimport { useResourceRMM } from '~wildo-frontend-lib/core/resources/rmm/useResourceRMM';\nimport {\n canSeedRMMFromLoadedPayload,\n performCanonicalRMMRead,\n resolveCanonicalRMMReadOperationPathKey,\n} from '~wildo-frontend-lib/core/resources/rmm/canonical-read.frontend.utils';\nimport {\n allowsDirectOperationFallback,\n UpdateLikeMutationFallbackMode,\n} from '~wildo-frontend-lib/core/resources/rmm/update-like-mutation-fallback.frontend';\nimport type { NavigationZone } from '~wildo-frontend-lib/core/navigation/navigation.schemas';\nimport { isTransientBackendFailure } from '~wildo-frontend-lib/core/requests/auth-refresh-resilience.frontend';\nimport { isApiNotReadyError } from '~wildo-frontend-lib/core/requests/api-readiness-checker.frontend.service';\nimport {\n normalizeContextResourceIdentifiersForOutcome,\n normalizeContextResourceIdentifiersForTransport,\n} from '~wildo-frontend-lib/core/resources/context-resource-identifiers.frontend.utils';\n\nconst logger = LoggerFrontendService.getLogger();\nconst logDebug = logger.debugByType('ResourceAutomaticDisplayer');\n\n/** First retry of a transiently failed read. Short: most such failures are a restart already nearly over. */\nexport const READ_RETRY_FIRST_DELAY_MS = 2_000;\n/** The backoff's ceiling: a backend down for minutes is asked twice a minute, not ten times. */\nexport const READ_RETRY_MAX_DELAY_MS = 30_000;\nlogger.setDebugTypeLogging('ResourceAutomaticDisplayer', false);\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface ResourceAutomaticDisplayerProps {\n /** The resource operation context containing all operation details */\n resourceContext: FrontendResourceOperationContext;\n\n /** Callback when data fetch fails */\n onError?: (error: Error) => void;\n\n /** Additional CSS classes */\n className?: string;\n\n /** Override labels (merged with auto-resolved labels) */\n labelsOverride?: Partial<AutomaticDisplayerLabels>;\n\n\n /**\n * Data mode override (takes priority over query param).\n * Priority: Component prop > Query param > Backend default\n */\n dataMode?: DataMode;\n\n /**\n * Callback invoked when data is successfully loaded from the API.\n * Used by Read_Default to pass parent data to ContainerNested for\n * conditional relationship filtering (discriminator-based).\n */\n onDataLoaded?: (data: Record<string, unknown>) => void;\n\n /**\n * Parent reference configuration for inChildView display (C1: P5-02).\n * Passed through to AutomaticDisplayer → ResourceDisplayContext → FK Display Preset.\n */\n parentReferenceConfig?: ParentReferenceConfig;\n /** Current navigation zone for inline-edit quick-create flows */\n navigationZone?: NavigationZone;\n /**\n * Controls whether engine-default inline edit may downgrade to a direct UPDATE\n * operation when RMM is unavailable. Defaults to `RMM_REQUIRED`.\n */\n updateLikeMutationFallbackMode?: UpdateLikeMutationFallbackMode;\n}\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\nfunction ResourceAutomaticDisplayerComponent({\n resourceContext,\n onError,\n className,\n labelsOverride,\n dataMode: propDataMode,\n onDataLoaded,\n parentReferenceConfig,\n navigationZone,\n updateLikeMutationFallbackMode = UpdateLikeMutationFallbackMode.RMM_REQUIRED,\n}: ResourceAutomaticDisplayerProps): React.JSX.Element | null {\n // Contexts\n const { doOperation, registry } = useResourceRegistry();\n const { emit, on, resourceRefreshEvent } = useEventBus();\n const { lastRefreshAt } = resourceRefreshEvent({ ctx: resourceContext as any });\n const { tComponent, isReady } = useI18n({ component: FrontendComponentType.RESOURCES_LAYOUTS_READ, resource: resourceContext.resourceType });\n const [searchParams] = useSearchParams();\n\n const i18nKeys = useMemo(() => [\n `resources.${resourceContext.resourceType}`,\n `components.${FrontendComponentType.RESOURCES_LAYOUTS_READ}`,\n ], [resourceContext.resourceType]);\n\n // Refs for stable function references (avoid infinite loops in useEffect)\n const doOperationRef = useRef(doOperation);\n const emitRef = useRef(emit);\n const onErrorRef = useRef(onError);\n const onDataLoadedRef = useRef(onDataLoaded);\n const resourceContextRef = useRef(resourceContext);\n\n // Keep refs updated\n doOperationRef.current = doOperation;\n emitRef.current = emit;\n onErrorRef.current = onError;\n onDataLoadedRef.current = onDataLoaded;\n resourceContextRef.current = resourceContext;\n\n // Error builder (memoized to prevent recreation)\n const errorBuilder = useMemo(() => new ErrorBuilderFrontend(), []);\n\n // Extract from resource context\n const { resourceType, operation, contextResourceIdentifiers } = resourceContext;\n const operationIdentifier = String(operation.operationIdentifier);\n\n // State\n const [data, setData] = useState<Record<string, unknown> | null>(null);\n /**\n * When an operation last succeeded on THIS row while no RMM held it (#1782). A row without an RMM is\n * read once and never read back: the RMM lane re-reads after its own mutations and receives remote\n * changes, and nothing else did. So an action run on a read-only row (a workbench secret's \"set\")\n * left the page it was run from showing the old values. Keyed into the fetch effect beside\n * `lastRefreshAt`; set by the subscription below the RMM.\n */\n const [rowChangedAt, setRowChangedAt] = useState<number | null>(null);\n const [fetchError, setFetchError] = useState<WildoError_Frontend | null>(null);\n const [rmmSeedFailed, setRmmSeedFailed] = useState(false);\n\n const loadingScopes = useMemo(() => [{ resourceType, operation: operationIdentifier }], [resourceType, operationIdentifier]);\n\n // Extract dataMode: Component prop > Query param > Backend default\n const dataMode = useMemo(() => {\n return frontendResourceUtils.extractDataMode(searchParams, propDataMode);\n }, [searchParams, propDataMode]);\n const effectiveDataMode = useMemo(() => dataMode ?? DataMode.RAW, [dataMode]);\n\n // Get the display schema from the operation based on dataMode\n const displaySchema = useMemo(() => {\n let schema;\n switch (effectiveDataMode) {\n case DataMode.SUMMARY:\n schema = operation.summaryDto || operation.responseDto;\n break;\n case DataMode.CONTEXT:\n schema = operation.contextDto || operation.responseDto;\n break;\n case DataMode.RAW:\n default:\n schema = operation.responseDto;\n break;\n }\n\n if (!schema) {\n logger.error('[ResourceAutomaticDisplayer] No DTO found', {\n operationIdentifier,\n resourceType,\n dataMode: effectiveDataMode,\n });\n }\n return schema;\n }, [effectiveDataMode, operation, operationIdentifier, resourceType]);\n\n // Get resource configuration for frontendConfiguration\n const resourceConfig = useMemo(() => {\n return registry.resourceConfigurations[resourceType];\n }, [registry, resourceType]);\n\n // Resolve layout refs for i18n label resolution\n const layoutRefs = resourceConfig?.frontendConfiguration?.layout?.refs;\n\n // Build a stable key from contextResourceIdentifiers for memoization\n const contextResourceIdentifiersKey = useMemo(() => {\n return FrontendResourceUtils.buildContextResourceIdentifiersKey(contextResourceIdentifiers);\n }, [contextResourceIdentifiers]);\n\n // Build contextual parameters for API calls\n const contextualParameters = useMemo(() => {\n return FrontendResourceUtils.buildContextualParameters(contextResourceIdentifiers, registry);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- using stable key instead of object reference\n }, [contextResourceIdentifiersKey, registry]);\n\n // Fetch through the actual routed/display operation so request/response DTOs\n // stay aligned for custom read-like surfaces.\n const operationPathKey = useMemo(() => {\n return ResourcesConfig_OperationPathUtils.createOperationPathKeyFromOperation(operation);\n }, [operation]);\n\n // Build labels for AutomaticDisplayer\n // Injects resourceContext for automatic i18n label resolution.\n // Explicit labelsOverride fields/enums/sections take priority over i18n.\n const labels = useMemo<AutomaticDisplayerLabels>(() => {\n return {\n resourceContext: { resourceType, operationId: operationIdentifier },\n ...labelsOverride,\n };\n }, [resourceType, operationIdentifier, labelsOverride]);\n\n // Build fileUploadContext for display. `getMetadata` (global /files) loads file\n // metadata; `serve` is the resource-integrated, AUTHENTICATED byte-serve base for\n // inline image/PDF previews (authorization inherits the parent resource's READ —\n // the display consumer appends `/{fileId}` and fetches via the authed client).\n const fileUploadContext = useMemo<Record<string, FileFieldEndpoints> | undefined>(() => {\n if (!displaySchema) return undefined;\n\n try {\n const fileFieldPaths = AutomatedLayoutFrontendUtils.collectFileFieldPaths(displaySchema);\n if (fileFieldPaths.length === 0) return undefined;\n\n const apiBaseUrl = envLoader.getApiUrl();\n const filesBasePath = `${apiBaseUrl}/api/v1/files`;\n\n // Resolve the resource-integrated serve base per field for the CURRENT record, via\n // the shared builder (see `buildResourceFileServeBaseUrl`). A context-addressed\n // singleton READ (e.g. the user's own profile) has no resourceId in its route, so\n // the record's own `_id` (from the fetched `data`) fills the `{resourceId}` segment —\n // until `data` loads it stays unresolved → serve omitted → neutral card.\n const serveBaseByField: Record<string, string> = {};\n const recordId = data\n ? String((data as Record<string, unknown>)._id\n ?? (data as Record<string, unknown>)[resourceConfig?.resourceFieldIdentifier ?? '_id']\n ?? '')\n : '';\n if (resourceConfig && recordId) {\n for (const fieldName of fileFieldPaths) {\n const serveBase = buildResourceFileServeBaseUrl({\n registry,\n resourceConfig,\n operation,\n resourceType,\n fieldName,\n recordId,\n contextResourceIdentifiers,\n contextualParameters,\n parentResourcesRequirements: resourceContextRef.current.parentResourcesRequirements,\n apiBaseUrl,\n });\n if (serveBase) serveBaseByField[fieldName] = serveBase;\n }\n }\n\n const context: Record<string, FileFieldEndpoints> = {};\n for (const fieldName of fileFieldPaths) {\n context[fieldName] = {\n getMetadata: filesBasePath,\n serve: serveBaseByField[fieldName],\n // Upload/override/delete not needed for display\n upload: '',\n override: undefined,\n delete: '',\n };\n }\n\n return context;\n } catch {\n return undefined;\n }\n // `data` is a dep: the serve base needs the fetched record's id (context-addressed\n // singletons have no resourceId in the READ route), so it must recompute on load.\n }, [displaySchema, resourceConfig, operation, registry, contextResourceIdentifiers, contextualParameters, resourceType, data]);\n\n // Fetch data - use refs to avoid infinite loops from unstable function references\n useEffect(() => {\n let cancelled = false;\n let retryTimer: ReturnType<typeof setTimeout> | undefined;\n let retryDelay = READ_RETRY_FIRST_DELAY_MS;\n\n /*\n * `isRetry` keeps the FAILURE on screen while another attempt is made. Clearing it first would\n * flip the surface error → skeleton → error every few seconds; and a retry is not a reason to\n * pretend the last attempt worked.\n */\n const fetchData = async (isRetry = false) => {\n if (!isRetry) setFetchError(null);\n\n try {\n const result = await doOperationRef.current(\n operationPathKey,\n {\n contextualParameters,\n parentResourcesRequirements: resourceContextRef.current.parentResourcesRequirements,\n dataMode: effectiveDataMode,\n },\n // silent: this displayer owns the read-failure UX — it renders the error\n // inline (setFetchError below) AND emits NOTIFY_RESOURCE_ERROR. Suppress\n // the redundant GLOBAL error toast so a failed read doesn't triple-surface\n // (inline + resource toast + global toast). Matches the resource-owned model.\n { silent: true },\n );\n\n if (cancelled) return;\n setFetchError(null);\n setData(result);\n // Notify parent (e.g., Read_Default) of loaded data for downstream use (e.g., conditional relationships)\n onDataLoadedRef.current?.(result as Record<string, unknown>);\n } catch (error) {\n if (cancelled) return;\n\n // Preserve the real operation path key in diagnostics so custom read-like\n // surfaces are debuggable without pretending they are literal READ ops.\n const originalError = error instanceof Error ? error : new Error(String(error));\n\n const errorRecord = (error && typeof error === 'object') ? error as Record<string, unknown> : {};\n const wildoError = errorBuilder.buildWildoError_Frontend(\n ErrorType.NOT_FOUND,\n {\n customMessageReference: ErrorCustomMessageReference.FRONTEND_FORM_READ_OPERATION_NOT_AVAILABLE,\n operationPathKey,\n context: {\n resourceType,\n operationIdentifier,\n originalErrorMessage: originalError.message,\n originalErrorStack: originalError.stack,\n httpCode: errorRecord.code,\n httpContext: errorRecord.context,\n },\n }\n );\n\n setFetchError(wildoError);\n\n /*\n * A TRANSIENT failure is retried, with backoff, until it succeeds or the surface unmounts.\n *\n * A read that lost a race with a backend restart used to be the END of that surface: the\n * alert below, and nothing else, until the person navigated away and back. Measured\n * 2026-09-20 in a browser drive — a detail pane sat on \"failed to load\" for a full minute\n * while its backend had been answering again for most of it. `ApiNotReadyError` exists\n * precisely so \"callers and retry ladders\" can classify this case, and this caller had none.\n *\n * ONLY transient failures: a 404 or a 403 is an answer, and asking again is how a surface\n * comes to hammer a server that has already said no. The classifier is the framework's own\n * (`isTransientBackendFailure` — no response, 5xx, 408, the readiness gate's bounded refusal).\n *\n * The error event below fires for the FIRST failure of a sequence only, so a backend that is\n * down for two minutes produces one notification, not one per attempt.\n */\n if (isTransientBackendFailure(error) || isApiNotReadyError(error)) {\n if (retryTimer !== undefined) clearTimeout(retryTimer);\n retryTimer = setTimeout(() => { retryTimer = undefined; void fetchData(true); }, retryDelay);\n retryDelay = Math.min(retryDelay * 2, READ_RETRY_MAX_DELAY_MS);\n }\n if (isRetry) return;\n\n // Emit error event\n const currentCtx = resourceContextRef.current;\n const { errorRefusalCode } = describeResourceErrorForNotification(error);\n emitRef.current(FrontendEvents.NOTIFY_RESOURCE_ERROR, {\n ...currentCtx,\n contextResourceIdentifiers: normalizeContextResourceIdentifiersForTransport(\n currentCtx.contextResourceIdentifiers,\n ),\n parentResourcesRequirements: currentCtx.parentResourcesRequirements || [],\n additionalContext: {\n ...currentCtx.additionalContext,\n error: originalError.message,\n // Let the notification layer resolve a localized message (tErrorMessage)\n // instead of falling back to the generic default-error label.\n errorCustomMessageReference: ErrorCustomMessageReference.FRONTEND_FORM_READ_OPERATION_NOT_AVAILABLE,\n // The server's own words outrank that category when it gave any: a declared refusal code and\n // its user guidance, as every other failed-operation notification carries them (#1782 review, F3).\n ...(errorRefusalCode ? { errorRefusalCode } : {}),\n ...describeErrorGuidance(error),\n },\n });\n\n onErrorRef.current?.(originalError);\n logDebug('fetch error', { resourceType, error: originalError.message });\n } finally {\n // no-op — loading tracked by centralized LoadingContext\n }\n };\n\n void fetchData();\n\n return () => {\n cancelled = true;\n if (retryTimer !== undefined) clearTimeout(retryTimer);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- using refs for unstable functions/objects; contextResourceIdentifiersKey is the stable proxy for contextualParameters\n }, [resourceType, operationPathKey, contextResourceIdentifiersKey, errorBuilder, operationIdentifier, effectiveDataMode, lastRefreshAt, rowChangedAt]);\n\n // Extract resource ID for inline editing support (must be before early returns — React hooks rule)\n const currentResourceId = useMemo(() => {\n const ctxValue = contextResourceIdentifiers?.[resourceType];\n if (ctxValue) return frontendResourceUtils.getResourceId(ctxValue);\n // ── READ-bootstrap fallback: the row had no id in its URL, so take it from the loaded data ──\n //\n // This is the path `useResourceRMM`'s own pin is named for — \"fails closed for parent-context\n // singleton updates UNTIL READ BOOTSTRAP PROVIDES THE PERSISTED CHILD ID\". A context-addressed\n // singleton (one `organizationSsoConfig` per organization) is addressed by its parent scope and\n // carries no id of its own in the route, so this is the only place its identity can come from.\n //\n // It asked for `data[resourceFieldIdentifier]` alone, and that name is a URL PARAMETER\n // (`organizationSsoConfigId`), not a payload field. Measured 2026-09-19 on the running\n // application: the READ returns `[\"_id\", \"enforcement\", \"domains\", …]` and the lookup asked for\n // `organizationSsoConfigId`, so the id stayed undefined after a perfectly successful read.\n //\n // The consequences ran three layers deep and were all silent. The RMM is keyed on the resource\n // id, so it never attached; `canInlineEdit` is `!!rmm || <a fallback that also demands an id>`,\n // so it was false; every field on every settings singleton therefore rendered read-only,\n // booleans as a ✓/✕ glyph. That is why no settings schema had ever declared `inlineEditable` —\n // doing so would have changed nothing, because the floor was here.\n //\n // The field-identifier lookup is TRIED FIRST and kept: a payload that does carry it is answered\n // exactly as before, so no resource changes behaviour by this fallback gaining a second leg.\n if (data) {\n // getResourceFieldIdentifierForType throws if unconfigured — which is correct here,\n // since we cannot extract a resource ID without a valid field identifier.\n const fieldId = FrontendResourceUtils.getResourceFieldIdentifierForType(resourceType, registry);\n const byFieldIdentifier = data[fieldId];\n if (byFieldIdentifier != null) return byFieldIdentifier;\n\n // What the row calls its own identity. Read from the resource's declared main schema rather\n // than assuming `_id`, so a resource naming its primary key otherwise is served too.\n const primaryKeyField = resourceConfig?.mainSchema\n ? getPrimaryKeyFieldName(resourceConfig.mainSchema)\n : undefined;\n if (primaryKeyField) return data[primaryKeyField];\n }\n return undefined;\n }, [contextResourceIdentifiers, resourceType, data, registry, resourceConfig?.mainSchema]);\n\n const contextResourceIdentifiersWithResourceId = useMemo(() => {\n if (!currentResourceId || contextResourceIdentifiers?.[resourceType]) {\n return contextResourceIdentifiers;\n }\n\n return {\n ...contextResourceIdentifiers,\n [resourceType]: String(currentResourceId),\n };\n }, [contextResourceIdentifiers, currentResourceId, resourceType]);\n\n const contextualParametersWithResourceId = useMemo(() => {\n const resourceFieldIdentifier = resourceConfig?.resourceFieldIdentifier;\n if (!currentResourceId || !resourceFieldIdentifier) {\n return contextualParameters;\n }\n\n const resourceId = String(currentResourceId);\n if (String(contextualParameters[resourceFieldIdentifier] ?? '') === resourceId) {\n return contextualParameters;\n }\n\n return {\n ...contextualParameters,\n [resourceFieldIdentifier]: resourceId,\n };\n }, [contextualParameters, currentResourceId, resourceConfig?.resourceFieldIdentifier]);\n\n // =============================================================================\n // RMM (Registry-based, inline-edit-capable resources only)\n // =============================================================================\n\n const resolvedInlineEditOperation = useMemo<FrontendResourceConfiguration_Operation | undefined>(() => {\n if (!resourceConfig) {\n return undefined;\n }\n\n return pickInlineFieldWriteOperation({\n resourceConfig,\n operations: resourceConfig.operations ?? [],\n registry,\n hasResourceId: currentResourceId != null,\n contextResourceIdentifiers: contextResourceIdentifiersWithResourceId,\n contextualParameters: contextualParametersWithResourceId,\n });\n }, [\n contextResourceIdentifiersWithResourceId,\n contextualParametersWithResourceId,\n currentResourceId,\n operation,\n registry,\n resourceConfig,\n ]);\n\n const hasUpdateOperation = useMemo(() => {\n return resolvedInlineEditOperation !== undefined;\n }, [resolvedInlineEditOperation]);\n\n const { rmm, rmmSnapshot } = useResourceRMM({\n resourceType,\n resourceId: currentResourceId != null ? String(currentResourceId) : null,\n doOperationRef,\n contextualParameters: contextualParametersWithResourceId,\n parentResourcesRequirements: resourceContext.parentResourcesRequirements as unknown[] | undefined,\n contextResourceIdentifiers: contextResourceIdentifiersWithResourceId,\n resourceSchema: resourceConfig?.mainSchema,\n enabled: hasUpdateOperation && currentResourceId != null,\n conflictPolicy: { strategy: ConflictStrategy.ACCEPT_REMOTE },\n });\n\n /*\n * Re-read the row when an operation on it succeeds and no RMM renders it (#1782). Every operation host\n * announces a success as `RESOURCE_OPERATION_EXECUTED` naming the row, so this one consumer covers the\n * form, the form-less action and the action bar alike, whichever lane ran.\n *\n * The row is matched by the id its route names OR the `_id` it loaded as, since a route may address it\n * by a business key while the announcement names it by `_id`. Skipped for bulk operations (not this row),\n * for reads (nothing changed) and for deletes (the READ layout navigates off a deleted row; re-reading it\n * would only flash a not-found).\n *\n * Skipped while an RMM renders the row. A mutation the RMM ran is read back by it, and a remote change\n * reaches it. The one case left: an action that is NOT update-like, fired straight from the action bar\n * at an RMM-held row with no WebSocket connected, is not seen until the row is read again. A failed RMM\n * seed does not count as an RMM here, because the page then renders from `data`, which this re-read\n * updates.\n */\n const loadedRowIdRef = useRef<string | null>(null);\n loadedRowIdRef.current = typeof data?._id === 'string' || typeof data?._id === 'number' ? String(data._id) : null;\n const rendersFromRmm = rmm !== null && !rmmSeedFailed;\n useEffect(() => {\n if (rendersFromRmm || currentResourceId == null) return undefined;\n const routeRowId = String(currentResourceId);\n return on(\n FrontendEvents.RESOURCE_OPERATION_EXECUTED,\n () => setRowChangedAt(Date.now()),\n (payload) => {\n if (payload.resourceType !== resourceType || payload.isBulkOperation) return false;\n const effective = resolveEffectiveCoreOperationFromOperation(payload.operation ?? { operationIdentifier: payload.operationIdentifier });\n if (\n effective === CoreResourceOperation.READ\n || effective === CoreResourceOperation.LIST\n || effective === CoreResourceOperation.SEARCH\n || effective === CoreResourceOperation.COUNT\n || effective === CoreResourceOperation.DELETE\n || effective === CoreResourceOperation.DELETE_MANY\n ) {\n return false;\n }\n // A route may name the row as a plain id or as `{ fieldIdentifier, resourceId }`; read either form.\n const named = payload.contextResourceIdentifiers?.[resourceType];\n if (named == null) return false;\n const namedId = String(frontendResourceUtils.getResourceId(named));\n return namedId === routeRowId || namedId === loadedRowIdRef.current;\n },\n );\n }, [currentResourceId, on, rendersFromRmm, resourceType]);\n\n const canonicalReadOperationPathKey = useMemo(() => {\n if (rmm) {\n return rmm.readOperationPathKey;\n }\n\n return resolveCanonicalRMMReadOperationPathKey(resourceType, registry, {\n hasResourceId: currentResourceId != null,\n contextResourceIdentifiers: contextResourceIdentifiersWithResourceId,\n contextualParameters: contextualParametersWithResourceId,\n });\n }, [\n registry,\n resourceType,\n rmm,\n currentResourceId,\n contextResourceIdentifiersWithResourceId,\n contextualParametersWithResourceId,\n ]);\n const effectiveRmm = rmmSeedFailed ? null : rmm;\n\n useEffect(() => {\n logDebug('RMM obtained', {\n resourceType,\n resourceId: currentResourceId != null ? String(currentResourceId) : undefined,\n rmmExists: !!rmm,\n });\n }, [rmm, resourceType, currentResourceId]);\n\n useEffect(() => {\n setRmmSeedFailed(false);\n }, [canonicalReadOperationPathKey, currentResourceId, operationPathKey, resourceType]);\n\n /**\n * Initialize RMM with fetched data. Dedicated useEffect (not inside the fetch effect)\n * because `rmm` may not be available when the fetch fires (currentResourceId comes from\n * fetched data in some cases). The `confirmedData !== null` guard prevents re-initialization\n * when another consumer (e.g., a form) has already seeded the RMM.\n */\n useEffect(() => {\n if (!rmm || !data) return;\n const snapshot = rmm.getSnapshot();\n if (snapshot.confirmedData !== null && lastRefreshAt == null) return;\n if (!canonicalReadOperationPathKey) {\n setRmmSeedFailed(true);\n logger.warn('[ResourceAutomaticDisplayer] Cannot seed RMM without an addressable canonical READ', {\n resourceType,\n resourceId: currentResourceId != null ? String(currentResourceId) : undefined,\n });\n return;\n }\n\n let cancelled = false;\n const seedRMM = async () => {\n const shouldTrustDisplayedPayload = canSeedRMMFromLoadedPayload({\n loadedOperationPathKey: operationPathKey,\n canonicalReadOperationPathKey,\n dataMode: effectiveDataMode,\n });\n\n const sourceData = shouldTrustDisplayedPayload\n ? data\n : await performCanonicalRMMRead({\n doOperation: doOperationRef.current,\n readOperationPathKey: canonicalReadOperationPathKey,\n contextualParameters: contextualParametersWithResourceId,\n parentResourcesRequirements: resourceContextRef.current.parentResourcesRequirements,\n });\n\n if (cancelled || sourceData == null || typeof sourceData !== 'object') return;\n\n const row = sourceData as Record<string, unknown>;\n const version = (row._version as number | undefined) ?? 0;\n rmm.setInitialState(row, version, row._field_meta as Record<string, FieldMetaEntry> | undefined);\n setRmmSeedFailed(false);\n logDebug('setInitialState', {\n resourceType,\n resourceId: currentResourceId != null ? String(currentResourceId) : undefined,\n version,\n fieldCount: Object.keys(row).length,\n refreshDriven: snapshot.confirmedData !== null,\n seededFromCanonicalRead: !shouldTrustDisplayedPayload,\n });\n };\n\n seedRMM().catch((error: unknown) => {\n setRmmSeedFailed(true);\n logger.warn('[ResourceAutomaticDisplayer] Failed to seed RMM from canonical read', {\n resourceType,\n resourceId: currentResourceId != null ? String(currentResourceId) : undefined,\n error: describeCaughtError(error),\n });\n });\n\n return () => {\n cancelled = true;\n };\n }, [\n rmm,\n data,\n effectiveDataMode,\n operationPathKey,\n canonicalReadOperationPathKey,\n contextualParametersWithResourceId,\n resourceType,\n currentResourceId,\n lastRefreshAt,\n ]);\n\n // RMM event handler — simpler than the form's handler (no RHF state to sync)\n useEffect(() => {\n if (!rmm || !rmmSnapshot?.lastEvent) return;\n const event = rmmSnapshot.lastEvent;\n logDebug('RMM event', {\n type: event.type,\n resourceType,\n resourceId: currentResourceId != null ? String(currentResourceId) : undefined,\n });\n const shouldRefetchDisplayedOperation = canonicalReadOperationPathKey\n ? !canSeedRMMFromLoadedPayload({\n loadedOperationPathKey: operationPathKey,\n canonicalReadOperationPathKey,\n dataMode: effectiveDataMode,\n })\n : false;\n\n const refetchDisplayedData = () => {\n if (!shouldRefetchDisplayedOperation) return;\n doOperationRef.current(operationPathKey, {\n contextualParameters: contextualParametersWithResourceId,\n parentResourcesRequirements: resourceContextRef.current.parentResourcesRequirements,\n dataMode: effectiveDataMode,\n }).then((result: Record<string, unknown>) => {\n setData(result as Record<string, unknown>);\n }).catch((err) => {\n logger.warn('[ResourceAutomaticDisplayer] Summary/context refetch failed (RMM handler)', {\n resourceType,\n error: describeCaughtError(err),\n });\n });\n };\n\n switch (event.type) {\n case RMMEventType.MUTATION_RESULT: {\n if (event.result.success) {\n if (event.source.type === MutationSourceType.DISPLAY) {\n emitRef.current(FrontendEvents.NOTIFY_RESOURCE_SUCCESS, {\n ...resourceContextRef.current,\n contextResourceIdentifiers: normalizeContextResourceIdentifiersForOutcome({\n contextResourceIdentifiers: resourceContextRef.current.contextResourceIdentifiers,\n resourceType,\n result: event.result.responseData,\n }),\n parentResourcesRequirements: resourceContextRef.current.parentResourcesRequirements || [],\n additionalContext: {\n ...resourceContextRef.current.additionalContext,\n inlineEdit: true,\n fieldName: event.result.savedFields?.[0],\n },\n resultSummary: event.result.responseData,\n });\n }\n refetchDisplayedData();\n }\n break;\n }\n\n case RMMEventType.REMOTE_UPDATE:\n case RMMEventType.CONFLICT_RESET: {\n refetchDisplayedData();\n break;\n }\n\n case RMMEventType.RESOURCE_DELETED: {\n break;\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- intentional: event-driven side effects keyed on lastEvent.id\n }, [rmmSnapshot?.lastEvent?.id]);\n\n const canRenderFromRMM = useMemo(() => {\n return canSeedRMMFromLoadedPayload({\n loadedOperationPathKey: operationPathKey,\n canonicalReadOperationPathKey,\n dataMode: effectiveDataMode,\n });\n }, [canonicalReadOperationPathKey, effectiveDataMode, operationPathKey]);\n\n // Effective data source: only the canonical RAW read surface renders RMM data.\n // Other RAW read-like surfaces keep their authored payload shape even if RMM is active.\n const isSummaryMode = effectiveDataMode === DataMode.SUMMARY || effectiveDataMode === DataMode.CONTEXT;\n const effectiveData = (!isSummaryMode && canRenderFromRMM && rmm && rmmSnapshot.optimisticData)\n ? rmmSnapshot.optimisticData\n : data;\n\n useEffect(() => {\n logDebug('effectiveData source', {\n dataMode: effectiveDataMode,\n usingRmmData: canRenderFromRMM && !!rmmSnapshot?.optimisticData,\n });\n }, [canRenderFromRMM, effectiveDataMode, rmmSnapshot?.optimisticData]);\n\n // GAP-1/4: Optimistic data update after successful inline edit (non-RMM fallback path).\n // When RMM is active, snapshot.optimisticData handles this instead.\n const handleInlineEditSuccess = useCallback((fieldName: string, value: unknown) => {\n // Optimistic local merge — update the field in current data state\n setData((prevData: any) => {\n if (!prevData) return prevData;\n return setNestedValueAtPath(prevData, fieldName, value);\n });\n\n // Emit success notification so external listeners (toasts, sibling components) can react\n emitRef.current(FrontendEvents.NOTIFY_RESOURCE_SUCCESS, {\n ...resourceContextRef.current,\n contextResourceIdentifiers: normalizeContextResourceIdentifiersForOutcome({\n contextResourceIdentifiers: resourceContextRef.current.contextResourceIdentifiers,\n resourceType,\n result: value,\n }),\n parentResourcesRequirements: resourceContextRef.current.parentResourcesRequirements || [],\n additionalContext: {\n ...resourceContextRef.current.additionalContext,\n inlineEdit: true,\n fieldName,\n },\n resultSummary: (\n typeof value === 'object' && value !== null\n ? value as Record<string, unknown>\n : setNestedValueAtPath({}, fieldName, value)\n ),\n });\n }, [resourceType]);\n\n // ── Resource layout config (explicit template, default chrome, inline-edit default) ──\n const explicitDisplayTemplate = resourceConfig?.frontendConfiguration?.layout?.display;\n const defaultDisplayChromeMode = resourceConfig?.frontendConfiguration?.layout?.defaultChromeMode?.display;\n // A settings-shaped layout offers its writable fields for in-place editing without each field\n // declaring it. Read here, beside `defaultChromeMode`, because this is the one component that\n // holds BOTH the resource config and the display subtree — the generic displayers below are\n // deliberately resource-unaware. See `ResourceLayoutInlineEditDefault`.\n const defaultInlineEdit = resourceConfig?.frontendConfiguration?.layout?.defaultInlineEdit;\n // How an empty field words itself on this layout — overrides the surface policy's `em-dash` for a\n // settings surface, where a dash refuses to say which kind of emptiness it is.\n const defaultEmptyValue = resourceConfig?.frontendConfiguration?.layout?.defaultEmptyValue;\n\n /*\n * The layout's DISPLAY section container mode. Read here, beside the other three layout defaults,\n * and handed to the template host — the grouping that turns sibling sections into one container\n * inspects each child's props, so this has to reach the HOST rather than the `Section` component.\n */\n const defaultSectionAppearance = resourceConfig?.frontendConfiguration?.layout?.defaultDisplaySectionAppearance;\n\n // ── Template resolution (DD-9: schema-only, stable across data changes) ──\n // Must be before early returns to satisfy Rules of Hooks.\n // Priority: explicit layout.display template > auto-generated from schema.\n const layoutTemplate = useMemo(\n () => {\n if (explicitDisplayTemplate) return explicitDisplayTemplate;\n return displaySchema ? generateDefaultDisplayTemplate(displaySchema) : null;\n },\n [explicitDisplayTemplate, displaySchema],\n );\n\n // ── CUSTOM file activation → resource operation ─────────────────────────────\n //\n // A file field authored with `FileActivationPolicy.CUSTOM` names an OPERATION on\n // THIS resource. Resolving and running one needs resource context, which the\n // generic display components deliberately lack — so the dispatcher is built here\n // and passed down opaquely (same ownership split as `hiddenFieldNames`).\n //\n // It reuses the ACTION-BAR action set rather than executing anything itself. That\n // is the whole point of naming an operation: the action set has already applied\n // role authorization, `enabledCondition`, feature gating, confirmation policy and\n // the ADDRESSABLE→navigate / EMBEDDED→host / API_ONLY→execute dispatch. Re-deriving\n // any of that here would be a second, drifting authority — and would be the one\n // place in the file surface where a click could bypass authorization.\n //\n // An operation the action set does not expose (unauthorized, disabled by its\n // condition, or simply unknown) yields NO handler, so the activation renders inert\n // rather than as a control that does nothing when pressed.\n const fileActivationOperationActions = useResourceOperationActions({\n resourceType: resourceContext.resourceType,\n displayMode: ResourceOperationDisplayMode.DETAIL,\n currentObject: effectiveData,\n contextResourceIdentifiers: resourceContext.contextResourceIdentifiers ?? {},\n parentResourcesRequirements: resourceContext.parentResourcesRequirements,\n navigationZone: navigationZone ?? NavigationZoneName.PRIMARY,\n operationId: resourceContext.operation?.operationIdentifier,\n });\n\n const onFileActivationOperation = useCallback<FileActivationOperationDispatcher>((request) => {\n // Narrow to the BUTTON arm: a subgroup carries an `operationIdentifier` but no\n // handler, so matching on the identifier alone would find an unclickable entry.\n const match = fileActivationOperationActions.items.find(\n (item): item is Extract<typeof item, { type?: 'button' }> =>\n (item as { type?: string }).type !== 'separator'\n && (item as { type?: string }).type !== 'subgroup'\n && (item as { operationIdentifier?: string }).operationIdentifier === request.operationIdentifier,\n );\n\n if (!match?.onClick) {\n if (envLoader.isDevelopment()) {\n LoggerFrontendService.getLogger().warn(\n `[ResourceAutomaticDisplayer] File \"${request.fieldName}\" requests operation `\n + `\"${request.operationIdentifier}\", which is not available on ${resourceContext.resourceType} `\n + `for the current user/row (unauthorized, condition-disabled, or unknown). The activation is inert.`,\n );\n }\n return;\n }\n\n match.onClick();\n }, [fileActivationOperationActions.items, resourceContext.resourceType]);\n\n const automaticDisplayShaping = useMemo(() => {\n if (explicitDisplayTemplate) {\n return {\n hiddenFieldNames: [],\n inlineEditDisabledFieldNames: [],\n };\n }\n\n // Relationship ownership can depend on discriminator/condition checks against\n // the loaded parent row. Until data exists, automatic READ stays conservative\n // and does not guess nested-read ownership ahead of the actual payload.\n return resolveAutomaticRelationshipDisplayShaping({\n resourceType,\n schema: displaySchema,\n parentData: effectiveData as Record<string, unknown> | undefined,\n registry,\n });\n }, [displaySchema, effectiveData, explicitDisplayTemplate, registry, resourceType]);\n\n const isLoading = !effectiveData;\n\n if (isReady === false) return null;\n\n // Error state\n if (fetchError) {\n const errorTitle = tComponent(FrontendComponentType.RESOURCES_LAYOUTS_READ, 'failedToLoadData');\n const errorMessage = errorTitle;\n\n return (\n <div className={className}>\n <div role=\"alert\" className=\"p-card bg-destructive/10 border border-destructive rounded-lg\">\n <p className=\"text-destructive font-medium\">{errorTitle}</p>\n <p className=\"text-sm text-destructive/80 mt-item-xs\">{errorMessage}</p>\n </div>\n </div>\n );\n }\n\n // Guard against missing schema\n if (!displaySchema) {\n const configErrorTitle = tComponent(FrontendComponentType.RESOURCES_LAYOUTS_READ, 'configurationError');\n const noSchemaMsg = tComponent(FrontendComponentType.RESOURCES_LAYOUTS_READ, 'noSchemaFound', {\n operation: operationIdentifier,\n resource: resourceType,\n });\n\n return (\n <div className={className}>\n <div role=\"alert\" className=\"p-card bg-destructive/10 border border-destructive rounded-lg\">\n <p className=\"text-destructive font-medium\">{configErrorTitle}</p>\n <p className=\"text-sm text-destructive/80 mt-item-xs\">{noSchemaMsg}</p>\n </div>\n </div>\n );\n }\n\n return (\n <LoadingGate i18nKeys={i18nKeys} loadingScopes={loadingScopes}>\n <AutomaticDisplayer\n schema={displaySchema}\n data={effectiveData}\n className={className}\n labels={labels}\n layoutRefs={layoutRefs}\n resourceType={resourceType}\n resourceId={currentResourceId ? String(currentResourceId) : undefined}\n contextualParameters={contextualParametersWithResourceId}\n contextResourceIdentifiers={contextResourceIdentifiersWithResourceId}\n parentResourcesRequirements={resourceContext.parentResourcesRequirements}\n navigationZone={navigationZone}\n inlineEditOperation={resolvedInlineEditOperation ?? null}\n parentReferenceConfig={parentReferenceConfig}\n fileUploadContext={fileUploadContext}\n rmm={effectiveRmm}\n onInlineEditSuccess={\n !effectiveRmm && allowsDirectOperationFallback(updateLikeMutationFallbackMode)\n ? handleInlineEditSuccess\n : undefined\n }\n updateLikeMutationFallbackMode={updateLikeMutationFallbackMode}\n layoutTemplate={layoutTemplate}\n isLoading={isLoading}\n defaultDisplayChromeMode={defaultDisplayChromeMode}\n defaultInlineEdit={defaultInlineEdit}\n defaultEmptyValue={defaultEmptyValue}\n defaultSectionAppearance={defaultSectionAppearance}\n hiddenFieldNames={automaticDisplayShaping.hiddenFieldNames}\n inlineEditDisabledFieldNames={automaticDisplayShaping.inlineEditDisabledFieldNames}\n onFileActivationOperation={onFileActivationOperation}\n />\n </LoadingGate>\n );\n}\n\nResourceAutomaticDisplayerComponent.displayName = 'ResourceAutomaticDisplayer';\n\nexport const ResourceAutomaticDisplayer: typeof ResourceAutomaticDisplayerComponent & { displayName: string } = ResourceAutomaticDisplayerComponent;\n\n"]}
@@ -30,11 +30,13 @@ export interface ResourceSummaryDisplayerProps {
30
30
  /**
31
31
  * Resolved primary label (title) of the record. When provided, the template's
32
32
  * `<SummaryTitle />` renders it (directly, or automatically via
33
- * `<SummaryLayout titlePlacement={AUTO}>`). Omit it on body-only surfaces
34
- * (inline FK-field references) where no title should appear — `<SummaryTitle />`
35
- * then renders nothing. Card/list/popover hosts pass the label they already
36
- * computed via `computeFrontendResourceLabel` (correct `t`, junction
37
- * forwardedLabel, etc.) so it is not recomputed here.
33
+ * `<SummaryLayout titlePlacement={AUTO}>`). Omit it only on a genuinely body-only
34
+ * surface — one where something ELSE on screen already names the record — and
35
+ * `<SummaryTitle />` then renders nothing. An inline FK reference in SUMMARY mode is
36
+ * NOT one: its field label names the field, not the record, and the card replaces
37
+ * the one-line label, so it passes its resolved label too. Card/list/popover/picker
38
+ * hosts pass the label they already computed via `computeFrontendResourceLabel`
39
+ * (correct `t`, junction forwardedLabel, etc.) so it is not recomputed here.
38
40
  */
39
41
  primaryLabel?: string | null;
40
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceSummaryDisplayer.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/ResourceSummaryDisplayer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAqC,MAAM,OAAO,CAAC;AAC1D,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAe7B,MAAM,WAAW,6BAA6B;IAC5C,2EAA2E;IAC3E,YAAY,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC;IAErB,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE9B,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAYD,iBAAS,iCAAiC,CAAC,EACzC,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,SAAS,EACT,YAAmB,GACpB,EAAE,6BAA6B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAmFnD;kBAzFQ,iCAAiC;;;AA6F1C,eAAO,MAAM,wBAAwB,EAAE,OAAO,iCAAiC,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CACpE,CAAC"}
1
+ {"version":3,"file":"ResourceSummaryDisplayer.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/ResourceSummaryDisplayer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAqC,MAAM,OAAO,CAAC;AAC1D,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAe7B,MAAM,WAAW,6BAA6B;IAC5C,2EAA2E;IAC3E,YAAY,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC;IAErB,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE9B,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;;OAUG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAYD,iBAAS,iCAAiC,CAAC,EACzC,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,SAAS,EACT,YAAmB,GACpB,EAAE,6BAA6B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAmFnD;kBAzFQ,iCAAiC;;;AA6F1C,eAAO,MAAM,wBAAwB,EAAE,OAAO,iCAAiC,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CACpE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceSummaryDisplayer.js","sourceRoot":"","sources":["../../../../../src/components/data-display/ResourceSummaryDisplayer.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * ResourceSummaryDisplayer — lean renderer for summary layout templates.\n *\n * Unlike ResourceAutomaticDisplayer, this component:\n * - Receives already-loaded `data` as a prop (no data fetching)\n * - Always disables inline editing\n * - Uses `layout.summary` from the resource config, falling back to\n * `generateDefaultSummaryTemplate`\n * - Defaults chrome to `DisplayChromeMode.INLINE` when `defaultChromeMode.summary`\n * is not set, ensuring compact rendering out of the box\n *\n * Intended use: list item rows, FK popovers, anywhere the caller already has\n * the data and needs a compact, read-only representation of a resource.\n */\n\nimport React, { useEffect, useMemo, useRef } from 'react';\nimport type { z } from 'zod';\nimport { DisplayChromeMode } from '@wildo-ai/zod-decorators';\nimport { CoreResourceOperation } from '@wildo-ai/saas-models';\n\nimport { useResourceRegistry } from '~wildo-frontend-lib/core/resources/useResourceRegistry';\nimport { generateDefaultSummaryTemplate } from '~wildo-frontend-lib/core/automated-layout/default-layout-generator.frontend.utils';\nimport type { AutomaticDisplayerLabels } from './AutomaticDisplayer';\nimport { AutomaticDisplayer } from './AutomaticDisplayer';\nimport { DisplayContextKind, DisplayContextKindProvider } from './DisplayContextKindContext';\nimport { SummaryContextProvider } from './SummaryContext';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface ResourceSummaryDisplayerProps {\n /** Resource type key — used to look up layout config from the registry. */\n resourceType: string;\n\n /**\n * Zod schema for the displayed data.\n * Callers provide this explicitly; it is typically the READ operation's\n * `summaryDto ?? responseDto`.\n */\n schema: z.ZodTypeAny;\n\n /** Already-loaded resource data. */\n data: Record<string, unknown>;\n\n /** Optional CSS class applied to the root element. */\n className?: string;\n\n /**\n * Resolved primary label (title) of the record. When provided, the template's\n * `<SummaryTitle />` renders it (directly, or automatically via\n * `<SummaryLayout titlePlacement={AUTO}>`). Omit it on body-only surfaces\n * (inline FK-field references) where no title should appear — `<SummaryTitle />`\n * then renders nothing. Card/list/popover hosts pass the label they already\n * computed via `computeFrontendResourceLabel` (correct `t`, junction\n * forwardedLabel, etc.) so it is not recomputed here.\n */\n primaryLabel?: string | null;\n}\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\n/**\n * Resource types already warned about a title-less authored summary template —\n * module-level so N list rows of the same resource produce ONE warning, not N.\n */\nconst warnedMissingTitleResourceTypes = new Set<string>();\n\nfunction ResourceSummaryDisplayerComponent({\n resourceType,\n schema,\n data,\n className,\n primaryLabel = null,\n}: ResourceSummaryDisplayerProps): React.JSX.Element {\n const { registry } = useResourceRegistry();\n\n const resourceConfig = useMemo(\n () => registry.resourceConfigurations[resourceType],\n [registry, resourceType],\n );\n\n const explicitSummaryTemplate = resourceConfig?.frontendConfiguration?.layout?.summary;\n const summaryChrome = resourceConfig?.frontendConfiguration?.layout?.defaultChromeMode?.summary;\n\n // `resourceConfig` is passed so the generated fallback can exclude the record's identity\n // plumbing — its `_`-prefixed fields, its field identifier and its primary-scope column.\n // Without it this displayer paints a foreign-key popover whose first two rows are a raw\n // object id and a tenant id, which is what a reader saw for any resource with no authored\n // `layout.summary`. It is in the dependency list because a registry swap changes the answer.\n const layoutTemplate = useMemo(\n () => explicitSummaryTemplate ?? generateDefaultSummaryTemplate(schema, resourceConfig),\n [explicitSummaryTemplate, schema, resourceConfig],\n );\n\n // Stable mutable tracker for the missing-title diagnostic below. Never reset:\n // once any render of this displayer mounted a `<SummaryTitle />`, the template\n // has proven it participates in the title contract.\n const titleMountTracker = useRef({ titleMounted: false }).current;\n\n const summaryContextValue = useMemo(\n () => ({ resourceType, primaryLabel, titleMountTracker }),\n [resourceType, primaryLabel, titleMountTracker],\n );\n\n // DEV DIAGNOSTIC — authored template that never mounts the title.\n // The moment `layout.summary` exists, the host (`ResourceListItemRenderer`,\n // command palette, FK popover) suppresses its own title rendering and the\n // template owns it. A template that neither wraps in `<SummaryLayout>` (AUTO\n // title) nor mounts `<SummaryTitle />` therefore renders the record with NO\n // identity anywhere it appears — a silent, high-severity authoring bug (found\n // live in the 2026-08 frontend UX audit: every todos list row / search result\n // rendered as a bare status badge). Child effects and render-time tracker\n // writes both precede this parent effect, so a mounted title is always visible\n // here. Warn once per resource type; no-op in production builds.\n useEffect(() => {\n if (process.env.NODE_ENV === 'production') return;\n if (!explicitSummaryTemplate || primaryLabel == null) return;\n if (titleMountTracker.titleMounted || warnedMissingTitleResourceTypes.has(resourceType)) return;\n warnedMissingTitleResourceTypes.add(resourceType);\n console.warn(\n `[ResourceSummaryDisplayer] Resource \"${resourceType}\" authors a frontend \\`layout.summary\\` template that never renders the record title: `\n + `the host cedes title rendering to authored templates, so rows/search results for this resource show no identity. `\n + `Wrap the template body in <SummaryLayout> (AUTO places the title for you) or mount <SummaryTitle /> explicitly (TEMPLATE_OWNED).`,\n );\n });\n\n // Thread the resource i18n scope so field/enum labels resolve through the\n // central label system (enum badges show \"Pending\", not the raw `pending`\n // value). Without it, useResourceLabels has no resource bundle to read from\n // and every summary surface fell back to raw schema values.\n const labels = useMemo<AutomaticDisplayerLabels>(\n () => ({ resourceContext: { resourceType, operationId: CoreResourceOperation.READ } }),\n [resourceType],\n );\n\n return (\n // SUMMARY context marker — field renderers below resolve their effective\n // display params as `{...display, ...summaryOverride}` (the decorator\n // contract for cards / FK previews) instead of the plain display params.\n <DisplayContextKindProvider kind={DisplayContextKind.SUMMARY}>\n {/* Feeds `<SummaryTitle />` (in the template flow) the resolved primary\n label so the title is a composable element, not a host-owned prefix. */}\n <SummaryContextProvider value={summaryContextValue}>\n <AutomaticDisplayer\n schema={schema}\n data={data}\n className={className}\n labels={labels}\n disableInlineEdit={true}\n layoutTemplate={layoutTemplate}\n defaultDisplayChromeMode={summaryChrome ?? DisplayChromeMode.INLINE}\n isLoading={false}\n />\n </SummaryContextProvider>\n </DisplayContextKindProvider>\n );\n}\n\nResourceSummaryDisplayerComponent.displayName = 'ResourceSummaryDisplayer';\n\nexport const ResourceSummaryDisplayer: typeof ResourceSummaryDisplayerComponent & { displayName: string } =\n ResourceSummaryDisplayerComponent;\n"]}
1
+ {"version":3,"file":"ResourceSummaryDisplayer.js","sourceRoot":"","sources":["../../../../../src/components/data-display/ResourceSummaryDisplayer.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * ResourceSummaryDisplayer — lean renderer for summary layout templates.\n *\n * Unlike ResourceAutomaticDisplayer, this component:\n * - Receives already-loaded `data` as a prop (no data fetching)\n * - Always disables inline editing\n * - Uses `layout.summary` from the resource config, falling back to\n * `generateDefaultSummaryTemplate`\n * - Defaults chrome to `DisplayChromeMode.INLINE` when `defaultChromeMode.summary`\n * is not set, ensuring compact rendering out of the box\n *\n * Intended use: list item rows, FK popovers, anywhere the caller already has\n * the data and needs a compact, read-only representation of a resource.\n */\n\nimport React, { useEffect, useMemo, useRef } from 'react';\nimport type { z } from 'zod';\nimport { DisplayChromeMode } from '@wildo-ai/zod-decorators';\nimport { CoreResourceOperation } from '@wildo-ai/saas-models';\n\nimport { useResourceRegistry } from '~wildo-frontend-lib/core/resources/useResourceRegistry';\nimport { generateDefaultSummaryTemplate } from '~wildo-frontend-lib/core/automated-layout/default-layout-generator.frontend.utils';\nimport type { AutomaticDisplayerLabels } from './AutomaticDisplayer';\nimport { AutomaticDisplayer } from './AutomaticDisplayer';\nimport { DisplayContextKind, DisplayContextKindProvider } from './DisplayContextKindContext';\nimport { SummaryContextProvider } from './SummaryContext';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface ResourceSummaryDisplayerProps {\n /** Resource type key — used to look up layout config from the registry. */\n resourceType: string;\n\n /**\n * Zod schema for the displayed data.\n * Callers provide this explicitly; it is typically the READ operation's\n * `summaryDto ?? responseDto`.\n */\n schema: z.ZodTypeAny;\n\n /** Already-loaded resource data. */\n data: Record<string, unknown>;\n\n /** Optional CSS class applied to the root element. */\n className?: string;\n\n /**\n * Resolved primary label (title) of the record. When provided, the template's\n * `<SummaryTitle />` renders it (directly, or automatically via\n * `<SummaryLayout titlePlacement={AUTO}>`). Omit it only on a genuinely body-only\n * surface — one where something ELSE on screen already names the record — and\n * `<SummaryTitle />` then renders nothing. An inline FK reference in SUMMARY mode is\n * NOT one: its field label names the field, not the record, and the card replaces\n * the one-line label, so it passes its resolved label too. Card/list/popover/picker\n * hosts pass the label they already computed via `computeFrontendResourceLabel`\n * (correct `t`, junction forwardedLabel, etc.) so it is not recomputed here.\n */\n primaryLabel?: string | null;\n}\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\n/**\n * Resource types already warned about a title-less authored summary template —\n * module-level so N list rows of the same resource produce ONE warning, not N.\n */\nconst warnedMissingTitleResourceTypes = new Set<string>();\n\nfunction ResourceSummaryDisplayerComponent({\n resourceType,\n schema,\n data,\n className,\n primaryLabel = null,\n}: ResourceSummaryDisplayerProps): React.JSX.Element {\n const { registry } = useResourceRegistry();\n\n const resourceConfig = useMemo(\n () => registry.resourceConfigurations[resourceType],\n [registry, resourceType],\n );\n\n const explicitSummaryTemplate = resourceConfig?.frontendConfiguration?.layout?.summary;\n const summaryChrome = resourceConfig?.frontendConfiguration?.layout?.defaultChromeMode?.summary;\n\n // `resourceConfig` is passed so the generated fallback can exclude the record's identity\n // plumbing — its `_`-prefixed fields, its field identifier and its primary-scope column.\n // Without it this displayer paints a foreign-key popover whose first two rows are a raw\n // object id and a tenant id, which is what a reader saw for any resource with no authored\n // `layout.summary`. It is in the dependency list because a registry swap changes the answer.\n const layoutTemplate = useMemo(\n () => explicitSummaryTemplate ?? generateDefaultSummaryTemplate(schema, resourceConfig),\n [explicitSummaryTemplate, schema, resourceConfig],\n );\n\n // Stable mutable tracker for the missing-title diagnostic below. Never reset:\n // once any render of this displayer mounted a `<SummaryTitle />`, the template\n // has proven it participates in the title contract.\n const titleMountTracker = useRef({ titleMounted: false }).current;\n\n const summaryContextValue = useMemo(\n () => ({ resourceType, primaryLabel, titleMountTracker }),\n [resourceType, primaryLabel, titleMountTracker],\n );\n\n // DEV DIAGNOSTIC — authored template that never mounts the title.\n // The moment `layout.summary` exists, the host (`ResourceListItemRenderer`,\n // command palette, FK popover) suppresses its own title rendering and the\n // template owns it. A template that neither wraps in `<SummaryLayout>` (AUTO\n // title) nor mounts `<SummaryTitle />` therefore renders the record with NO\n // identity anywhere it appears — a silent, high-severity authoring bug (found\n // live in the 2026-08 frontend UX audit: every todos list row / search result\n // rendered as a bare status badge). Child effects and render-time tracker\n // writes both precede this parent effect, so a mounted title is always visible\n // here. Warn once per resource type; no-op in production builds.\n useEffect(() => {\n if (process.env.NODE_ENV === 'production') return;\n if (!explicitSummaryTemplate || primaryLabel == null) return;\n if (titleMountTracker.titleMounted || warnedMissingTitleResourceTypes.has(resourceType)) return;\n warnedMissingTitleResourceTypes.add(resourceType);\n console.warn(\n `[ResourceSummaryDisplayer] Resource \"${resourceType}\" authors a frontend \\`layout.summary\\` template that never renders the record title: `\n + `the host cedes title rendering to authored templates, so rows/search results for this resource show no identity. `\n + `Wrap the template body in <SummaryLayout> (AUTO places the title for you) or mount <SummaryTitle /> explicitly (TEMPLATE_OWNED).`,\n );\n });\n\n // Thread the resource i18n scope so field/enum labels resolve through the\n // central label system (enum badges show \"Pending\", not the raw `pending`\n // value). Without it, useResourceLabels has no resource bundle to read from\n // and every summary surface fell back to raw schema values.\n const labels = useMemo<AutomaticDisplayerLabels>(\n () => ({ resourceContext: { resourceType, operationId: CoreResourceOperation.READ } }),\n [resourceType],\n );\n\n return (\n // SUMMARY context marker — field renderers below resolve their effective\n // display params as `{...display, ...summaryOverride}` (the decorator\n // contract for cards / FK previews) instead of the plain display params.\n <DisplayContextKindProvider kind={DisplayContextKind.SUMMARY}>\n {/* Feeds `<SummaryTitle />` (in the template flow) the resolved primary\n label so the title is a composable element, not a host-owned prefix. */}\n <SummaryContextProvider value={summaryContextValue}>\n <AutomaticDisplayer\n schema={schema}\n data={data}\n className={className}\n labels={labels}\n disableInlineEdit={true}\n layoutTemplate={layoutTemplate}\n defaultDisplayChromeMode={summaryChrome ?? DisplayChromeMode.INLINE}\n isLoading={false}\n />\n </SummaryContextProvider>\n </DisplayContextKindProvider>\n );\n}\n\nResourceSummaryDisplayerComponent.displayName = 'ResourceSummaryDisplayer';\n\nexport const ResourceSummaryDisplayer: typeof ResourceSummaryDisplayerComponent & { displayName: string } =\n ResourceSummaryDisplayerComponent;\n"]}
@@ -32,6 +32,7 @@ import * as React from "react";
32
32
  import { DisplayLabelStyle, DisplayChromeMode, ViewportBreakpoint, type ResponsiveAware } from "@wildo-ai/zod-decorators";
33
33
  import type { ReactNode } from 'react';
34
34
  import { type AutoLabelPlacement } from "@wildo-ai/presets-components-models";
35
+ import type { DisplayFieldProvenance } from "../../../components/data-display/external-data-provenance/external-data-provenance.frontend";
35
36
  export interface DisplayFieldChromeProps {
36
37
  mode?: ResponsiveAware<DisplayChromeMode>;
37
38
  label?: string;
@@ -43,6 +44,15 @@ export interface DisplayFieldChromeProps {
43
44
  labelPlacement?: AutoLabelPlacement;
44
45
  hideLabel?: boolean;
45
46
  hideDescription?: boolean;
47
+ /**
48
+ * Where the value came from, for a field an external-data pipeline writes (#1997): "Synced from Odoo · as of
49
+ * 12 minutes ago". The chrome places it beneath the value in the description voice, so it reads as a note about the
50
+ * value rather than as a second label; `DisplayFieldProvenanceNote` composes the words from the i18n tree.
51
+ *
52
+ * Shown in every mode that renders chrome and suppressed in COMPACT and HIDDEN, which are the bare-value modes: a
53
+ * table cell or a card has no room for a provenance note, and the cue belongs where one record is read.
54
+ */
55
+ provenance?: DisplayFieldProvenance;
46
56
  className?: string;
47
57
  children: ReactNode;
48
58
  }
@@ -59,6 +69,6 @@ export interface DisplayFieldChromeProps {
59
69
  * breakpoint remounted the control (#1191); display follows so the two stay aligned.
60
70
  */
61
71
  declare function resolveEffectiveDisplayChromeMode(chromeMode: ResponsiveAware<DisplayChromeMode> | undefined, currentBreakpoint: ViewportBreakpoint): DisplayChromeMode;
62
- declare function DisplayFieldChrome({ mode, label, labelStyle, description, tooltip, name, labelPlacement, hideLabel, hideDescription, className, children, }: DisplayFieldChromeProps): React.JSX.Element;
72
+ declare function DisplayFieldChrome({ mode, label, labelStyle, description, tooltip, name, labelPlacement, hideLabel, hideDescription, provenance, className, children, }: DisplayFieldChromeProps): React.JSX.Element;
63
73
  export { DisplayFieldChrome, resolveEffectiveDisplayChromeMode };
64
74
  //# sourceMappingURL=DisplayFieldChrome.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DisplayFieldChrome.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/chromes/DisplayFieldChrome.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAa9B,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,eAAe,EACrB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC,OAAO,EAAqC,KAAK,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AAIhH,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAA;IACzC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sFAAsF;IACtF,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,cAAc,CAAC,EAAE,kBAAkB,CAAA;IACnC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAOD;;;;;;;;;;;GAWG;AACH,iBAAS,iCAAiC,CACxC,UAAU,EAAE,eAAe,CAAC,iBAAiB,CAAC,GAAG,SAAS,EAC1D,iBAAiB,EAAE,kBAAkB,GACpC,iBAAiB,CAQnB;AAmCD,iBAAS,kBAAkB,CAAC,EAC1B,IAAI,EACJ,KAAK,EACL,UAAU,EACV,WAAW,EACX,OAAO,EACP,IAAI,EACJ,cAAc,EACd,SAAS,EACT,eAAe,EACf,SAAS,EACT,QAAQ,GACT,EAAE,uBAAuB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAiN7C;AAID,OAAO,EAAE,kBAAkB,EAAE,iCAAiC,EAAE,CAAA"}
1
+ {"version":3,"file":"DisplayFieldChrome.d.ts","sourceRoot":"","sources":["../../../../../../src/components/data-display/chromes/DisplayFieldChrome.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAa9B,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,eAAe,EACrB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC,OAAO,EAAoE,KAAK,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AAI/I,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wGAAwG,CAAA;AAEpJ,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAA;IACzC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sFAAsF;IACtF,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,cAAc,CAAC,EAAE,kBAAkB,CAAA;IACnC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,sBAAsB,CAAA;IACnC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAOD;;;;;;;;;;;GAWG;AACH,iBAAS,iCAAiC,CACxC,UAAU,EAAE,eAAe,CAAC,iBAAiB,CAAC,GAAG,SAAS,EAC1D,iBAAiB,EAAE,kBAAkB,GACpC,iBAAiB,CAQnB;AAmCD,iBAAS,kBAAkB,CAAC,EAC1B,IAAI,EACJ,KAAK,EACL,UAAU,EACV,WAAW,EACX,OAAO,EACP,IAAI,EACJ,cAAc,EACd,SAAS,EACT,eAAe,EACf,UAAU,EACV,SAAS,EACT,QAAQ,GACT,EAAE,uBAAuB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAgP7C;AAID,OAAO,EAAE,kBAAkB,EAAE,iCAAiC,EAAE,CAAA"}
@@ -8,9 +8,10 @@ import { DisplayLabelStyle, DisplayChromeMode, ViewportBreakpoint, } from "@wild
8
8
  import { useIconRegistry } from "../../../core/icons/useIconRegistry.js";
9
9
  import { StandardIconReference, IconSize } from "../../../core/icons/icon-registry.frontend.schemas.js";
10
10
  import { useI18n } from "../../../core/i18n/useI18n.js";
11
- import { FrontendComponentType, ButtonSize } from "@wildo-ai/presets-components-models";
11
+ import { FrontendComponentType, ButtonSize, TypographyVariant, UIBehavior } from "@wildo-ai/presets-components-models";
12
12
  import { useUI } from "../../../core/ui/useUI.js";
13
13
  import { Button, ButtonVariants_Variant } from "../../../components/actions/button.js";
14
+ import { DisplayFieldProvenanceNote } from "../../../components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js";
14
15
  // =============================================================================
15
16
  // VIEWPORT-AWARE MODE RESOLUTION
16
17
  // =============================================================================
@@ -49,8 +50,21 @@ function DisplayTooltipIcon({ text }) {
49
50
  // =============================================================================
50
51
  // COMPONENT
51
52
  // =============================================================================
52
- function DisplayFieldChrome({ mode, label, labelStyle, description, tooltip, name, labelPlacement, hideLabel, hideDescription, className, children, }) {
53
- const { currentBreakpoint, isMobile } = useUI();
53
+ function DisplayFieldChrome({ mode, label, labelStyle, description, tooltip, name, labelPlacement, hideLabel, hideDescription, provenance, className, children, }) {
54
+ const { currentBreakpoint, isMobile, getRecipe } = useUI();
55
+ /*
56
+ * A READ label is a TERM: it names the value beneath it and must not compete with it. The form's
57
+ * `FieldLabel` is set in the foreground at the value's own size and weight, which is right above an
58
+ * input (the label is what you read first) and wrong above a value, where it made every stacked
59
+ * read-only field one undifferentiated run of text — measured on the workbench's Roadmap and Build
60
+ * plan pages, where "Sequence", "Theme" and "Objective" could not be told from their answers.
61
+ *
62
+ * The DESCRIPTION recipe is the one the description list's `DescriptionTerm` already uses for the
63
+ * same job, so a stacked field and a description-list row name their values in one voice.
64
+ */
65
+ const termRecipe = getRecipe(UIBehavior.TYPOGRAPHY, TypographyVariant.DESCRIPTION);
66
+ /* The TITLE label style's voice: the theme's small label above a section, not a class list of its own. */
67
+ const eyebrowRecipe = getRecipe(UIBehavior.TYPOGRAPHY, TypographyVariant.EYEBROW);
54
68
  const effectiveMode = useMemo(() => resolveEffectiveDisplayChromeMode(mode, currentBreakpoint), [mode, currentBreakpoint]);
55
69
  /*
56
70
  * INLINE mode defaults to label-FIRST ('start': "Metric — value"), not the suffix 'inline'
@@ -62,6 +76,12 @@ function DisplayFieldChrome({ mode, label, labelStyle, description, tooltip, nam
62
76
  const effectiveLabelPlacement = labelPlacement ?? (effectiveMode === DisplayChromeMode.INLINE ? 'start' : 'top');
63
77
  const showLabel = !hideLabel && !!label && effectiveLabelPlacement !== 'hidden' && effectiveMode !== DisplayChromeMode.COMPACT && effectiveMode !== DisplayChromeMode.HIDDEN;
64
78
  const showDescription = !hideDescription && !!description && effectiveMode !== DisplayChromeMode.COMPACT && effectiveMode !== DisplayChromeMode.HIDDEN;
79
+ // No mode test here on purpose: the COMPACT and HIDDEN branches below return before any note is placed, so the
80
+ // bare-value modes carry none by construction (pinned in display-field-provenance-chrome.test.tsx).
81
+ const showProvenance = !!provenance;
82
+ const provenanceNote = showProvenance
83
+ ? _jsx(DisplayFieldProvenanceNote, { provenance: provenance })
84
+ : null;
65
85
  const hiddenLabel = !hideLabel && !!label && effectiveLabelPlacement === 'hidden'
66
86
  ? _jsx("span", { className: "sr-only", children: label })
67
87
  : null;
@@ -74,12 +94,17 @@ function DisplayFieldChrome({ mode, label, labelStyle, description, tooltip, nam
74
94
  return (_jsxs("div", { "data-slot": "field-chrome", "data-chrome-mode": "compact", "data-label-placement": effectiveLabelPlacement, "data-field": name, "data-testid": name ? `field-${name}` : undefined, "data-guidance-field": name, className: className, children: [hiddenLabel, children] }));
75
95
  }
76
96
  // ── INLINE mode: a snug "Label: value" fact row ──
77
- // The label reads as a small bold prefix with a colon, the value directly beside it — one
78
- // labelled fact per line ("Metric: within one day"), wrapping when the value is long. This is
79
- // deliberately NOT the horizontal Field layout (label left, value pinned to the inline-end
80
- // edge): a fact row is read as one sentence, not scanned as a settings table.
97
+ // The label reads as a prefix with a colon, the value directly beside it — one labelled fact per
98
+ // line ("Metric: within one day"), wrapping when the value is long. This is deliberately NOT the
99
+ // horizontal Field layout (label left, value pinned to the inline-end edge): a fact row is read as
100
+ // one sentence, not scanned as a settings table.
101
+ //
102
+ // The prefix is the same muted TERM as a stacked label (since 2026-09-25). It was a small bold
103
+ // foreground prefix, chosen while stacked labels were foreground too; once those became terms, an
104
+ // entry mixing the two modes named its facts in two voices — "Target window:" dark and bold
105
+ // beneath a muted "Objective" — which is the inconsistency a reader sees before reading anything.
81
106
  if (effectiveMode === DisplayChromeMode.INLINE) {
82
- return (_jsxs("div", { "data-slot": "field-chrome", "data-chrome-mode": "inline", "data-label-placement": effectiveLabelPlacement, "data-field": name, "data-testid": name ? `field-${name}` : undefined, "data-guidance-field": name, className: cn("flex flex-wrap items-baseline gap-x-1.5 gap-y-element-xs", className), children: [hiddenLabel, showLabel && (_jsxs("span", { className: "shrink-0 text-xs font-semibold text-foreground", children: [label, ":", tooltip && _jsx(DisplayTooltipIcon, { text: tooltip })] })), _jsx("div", { className: "min-w-0", children: children }), showDescription && _jsx(FieldDescription, { className: "w-full", children: description })] }));
107
+ return (_jsxs("div", { "data-slot": "field-chrome", "data-chrome-mode": "inline", "data-label-placement": effectiveLabelPlacement, "data-field": name, "data-testid": name ? `field-${name}` : undefined, "data-guidance-field": name, className: cn("flex flex-wrap items-baseline gap-x-1.5 gap-y-element-xs", className), children: [hiddenLabel, showLabel && (_jsxs("span", { className: cn("shrink-0", termRecipe.base), children: [label, ":", tooltip && _jsx(DisplayTooltipIcon, { text: tooltip })] })), _jsx("div", { className: "min-w-0", children: children }), showDescription && _jsx(FieldDescription, { className: "w-full", children: description }), showProvenance && _jsx(DisplayFieldProvenanceNote, { provenance: provenance, className: "w-full" })] }));
83
108
  }
84
109
  // ── SETTINGS_ROW mode: a self-contained settings list-item (read mode) ──
85
110
  // Read-mode counterpart of the form's SETTINGS_ROW (FormFieldChrome) — IDENTICAL
@@ -109,12 +134,12 @@ function DisplayFieldChrome({ mode, label, labelStyle, description, tooltip, nam
109
134
  // (`py-card-sm`) to keep rows compact.
110
135
  "flex min-h-10 px-card py-card-sm border-b border-border last:border-b-0 hover:bg-muted/50 transition-colors", isMobile
111
136
  ? "flex-col gap-element-xs"
112
- : cn("flex-row gap-section", showDescription ? "items-start" : "items-center"), className), children: [_jsxs("div", { className: cn("flex min-w-0 flex-col gap-element-xs", !isMobile && "flex-1"), children: [hiddenLabel, showLabel && (_jsxs(FieldLabel, { children: [label, tooltip && _jsx(DisplayTooltipIcon, { text: tooltip })] })), showDescription && _jsx(FieldDescription, { children: description })] }), _jsx("div", { className: cn("flex min-w-0 flex-col gap-element-xs", isMobile ? "w-full items-start text-start" : "w-72 max-w-[55%] shrink items-end text-end"), children: children })] }));
137
+ : cn("flex-row gap-section", showDescription ? "items-start" : "items-center"), className), children: [_jsxs("div", { className: cn("flex min-w-0 flex-col gap-element-xs", !isMobile && "flex-1"), children: [hiddenLabel, showLabel && (_jsxs(FieldLabel, { children: [label, tooltip && _jsx(DisplayTooltipIcon, { text: tooltip })] })), showDescription && _jsx(FieldDescription, { children: description })] }), _jsxs("div", { className: cn("flex min-w-0 flex-col gap-element-xs", isMobile ? "w-full items-start text-start" : "w-72 max-w-[55%] shrink items-end text-end"), children: [children, provenanceNote] })] }));
113
138
  }
114
139
  // ── Horizontal label modes ──
115
140
  if (effectiveLabelPlacement === 'start' || effectiveLabelPlacement === 'inline') {
116
141
  const isInlinePlacement = effectiveLabelPlacement === 'inline';
117
- return (_jsxs(Field, { orientation: FieldVariants_Orientation.HORIZONTAL, "data-slot": "field-chrome", "data-chrome-mode": "inline", "data-label-placement": effectiveLabelPlacement, "data-field": name, "data-testid": name ? `field-${name}` : undefined, "data-guidance-field": name, className: cn(isInlinePlacement && "flex-row-reverse", className), children: [hiddenLabel, _jsxs(FieldContent, { children: [showLabel && (_jsx(FieldTitle, { children: _jsxs(FieldLabel, { children: [label, tooltip && _jsx(DisplayTooltipIcon, { text: tooltip })] }) })), showDescription && _jsx(FieldDescription, { children: description })] }), children] }));
142
+ return (_jsxs(Field, { orientation: FieldVariants_Orientation.HORIZONTAL, "data-slot": "field-chrome", "data-chrome-mode": "inline", "data-label-placement": effectiveLabelPlacement, "data-field": name, "data-testid": name ? `field-${name}` : undefined, "data-guidance-field": name, className: cn(isInlinePlacement && "flex-row-reverse", className), children: [hiddenLabel, _jsxs(FieldContent, { children: [showLabel && (_jsx(FieldTitle, { children: _jsxs(FieldLabel, { className: termRecipe.base, children: [label, tooltip && _jsx(DisplayTooltipIcon, { text: tooltip })] }) })), showDescription && _jsx(FieldDescription, { children: description }), provenanceNote] }), children] }));
118
143
  }
119
144
  // ── STACKED mode (default): label above, value, description below ──
120
145
  return (_jsxs(Field, { orientation: FieldVariants_Orientation.VERTICAL, "data-slot": "field-chrome", "data-chrome-mode": "stacked", "data-label-placement": effectiveLabelPlacement, "data-field": name, "data-testid": name ? `field-${name}` : undefined, "data-guidance-field": name, className: className, children: [hiddenLabel, showLabel && (labelStyle === DisplayLabelStyle.TITLE ? (
@@ -123,7 +148,7 @@ function DisplayFieldChrome({ mode, label, labelStyle, description, tooltip, nam
123
148
  * acting as a mini-section inside a prose flow ("Who suffers it" above its answer),
124
149
  * where the ordinary muted label would not carry the structure.
125
150
  */
126
- _jsxs("div", { className: "pt-item-xs text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: [label, tooltip && _jsx(DisplayTooltipIcon, { text: tooltip })] })) : (_jsxs(FieldLabel, { children: [label, tooltip && _jsx(DisplayTooltipIcon, { text: tooltip })] }))), children, showDescription && _jsx(FieldDescription, { children: description })] }));
151
+ _jsxs("div", { className: cn("pt-item-xs", eyebrowRecipe.base), children: [label, tooltip && _jsx(DisplayTooltipIcon, { text: tooltip })] })) : (_jsxs(FieldLabel, { className: termRecipe.base, children: [label, tooltip && _jsx(DisplayTooltipIcon, { text: tooltip })] }))), children, showDescription && _jsx(FieldDescription, { children: description }), provenanceNote] }));
127
152
  }
128
153
  ;
129
154
  DisplayFieldChrome.displayName = "DisplayFieldChrome";