@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":"ResourceFieldDisplayPreset_ResourceReference_Default.js","sourceRoot":"","sources":["../../../../../../../src/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEjF,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,kDAAkD,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,mDAAmD,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,yDAAyD,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wDAAwD,CAAC;AAC7F,OAAO,EAAE,gCAAgC,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACxH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAChE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,4DAA4D,CAAC;AAC1H,OAAO,EAAE,mDAAmD,EAAE,MAAM,2EAA2E,CAAC;AAChJ,OAAO,EAAE,yBAAyB,EAAE,MAAM,uEAAuE,CAAC;AAClH,OAAO,EAAE,4BAA4B,EAAE,MAAM,0DAA0D,CAAC;AACxG,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,yCAAyC,EAAE,MAAM,uBAAuB,CAAC;AACxH,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,wDAAwD,CAAC;AAC/G,OAAO,EAAE,eAAe,EAAE,MAAM,sDAAsD,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,sEAAsE,CAAC;AAChH,OAAO,EAAE,yBAAyB,EAAE,MAAM,2DAA2D,CAAC;AAEtG,OAAO,EACL,oCAAoC,EACpC,wCAAwC,GACzC,MAAM,oGAAoG,CAAC;AAE5G,OAAO,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAC;AAezE,SAAS,mCAAmC,CAAC,MAI5C;IACC,MAAM,yBAAyB,GAAG,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,uBAAuB;WACnH,MAAM,CAAC,QAAQ,CAAC,2BAA2B,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;WAC3F,MAAM,CAAC,MAAM,CAAC,GAAG;WACjB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IAEtB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvE,CAAC;AAED,gFAAgF;AAChF,2BAA2B;AAC3B,gFAAgF;AAEhF,MAAM,CAAC,MAAM,oDAAoD,GAAG,CAAC,EACnE,SAAS,EACT,KAAK,EACL,YAAY,EAAE,gBAAgB,EAC9B,IAAI,EAAE,gBAAgB,EACtB,aAAa,EACb,aAAa,EACb,MAAM,EACN,SAAS,GACiD,EAAqB,EAAE;IACjF,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,mBAAmB,EAAE,CAAC;IACxD,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,cAAc,GAAG,yBAAyB,EAAE,CAAC;IACnD,MAAM,iBAAiB,GAAG,4BAA4B,EAAE,CAAC;IAEzD;;;;;OAKG;IACH,MAAM,sBAAsB,GAAG,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC;IACxG,MAAM,YAAY,GAAG,gBAAgB;WAChC,sBAAsB;WACtB,qBAAqB,CAAC,gCAAgC,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEzF,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,EAAE,SAAS,EAAE,qBAAqB,CAAC,mCAAmC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;IACjI,MAAM,wBAAwB,GAAG,yBAAyB,EAAE,CAAC;IAE7D,0DAA0D;IAC1D,uGAAuG;IACvG,4FAA4F;IAC5F,MAAM,0BAA0B,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9C,0DAA0D;QAC1D,IAAI,cAAc,EAAE,oBAAoB,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxG,OAAO,cAAc,CAAC,oBAAoB,CAAC;QAC7C,CAAC;QACD,wEAAwE;QACxE,IAAI,iBAAiB,EAAE,0BAA0B,EAAE,CAAC;YAClD,OAAO,qBAAqB,CAAC,yBAAyB,CACpD,iBAAiB,CAAC,0BAA0B,EAAE,QAAQ,CACvD,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,EAAE,CAAC,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEpG,+CAA+C;IAC/C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAkC,IAAI,GAAG,EAAE,CAAC,CAAC;IAC3F,6FAA6F;IAC7F,0FAA0F;IAC1F,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,GAAG,EAA8B,CAAC,CAAC;IAErE,4FAA4F;IAC5F,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,EAAU,EAAE,KAAyB,EAAE,EAAE;QAC5E,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACtC,cAAc,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,+EAA+E;IAC/E,kFAAkF;IAClF,qFAAqF;IACrF,kFAAkF;IAClF,gFAAgF;IAChF,qFAAqF;IACrF,sFAAsF;IACtF,8BAA8B;IAC9B,MAAM,WAAW,GAAG,aAAa,EAAE,IAAI,IAAI,gCAAgC,CAAC;IAE5E,yEAAyE;IACzE,MAAM,eAAe,GAAG,cAAc,EAAE,qBAAqB,CAAC;IAE9D,MAAM,iBAAiB,GAAG,OAAO,CAC/B,eAAe,IAAI,YAAY,IAAI,eAAe,CAAC,kBAAkB,KAAK,YAAY,CACvF,CAAC;IAEF;;;;;;;OAOG;IACH,MAAM,oBAAoB,GAAG,OAAO,CAAwC,GAAG,EAAE;QAC/E,IAAI,CAAC,iBAAiB,IAAI,CAAC,eAAe;YAAE,OAAO,WAAW,CAAC;QAE/D,QAAQ,eAAe,CAAC,WAAW,EAAE,CAAC;YACpC,KAAK,aAAa,CAAC,OAAO,CAAC;YAC3B,KAAK,aAAa,CAAC,UAAU;gBAC3B,OAAO,WAAW,CAAC;YACrB,KAAK,aAAa,CAAC,KAAK,CAAC;YACzB,KAAK,aAAa,CAAC,OAAO,CAAC;YAC3B,KAAK,aAAa,CAAC,IAAI;gBACrB,OAAO,eAAe,CAAC,WAAW,CAAC;YACrC,OAAO,CAAC,CAAC,OAAO,WAAW,CAAC;QAC9B,CAAC;IACH,CAAC,EAAE,CAAC,iBAAiB,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC;IAEtD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9B,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,eAAe,EAAE,cAAc,KAAK,KAAK,EAAE,CAAC;gBAC9C,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IACE,eAAe,EAAE,WAAW,KAAK,aAAa,CAAC,OAAO;gBACtD,eAAe,EAAE,WAAW,KAAK,aAAa,CAAC,UAAU,EACzD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,aAAa,EAAE,QAAQ,IAAI,IAAI,CAAC;IACzC,CAAC,EAAE,CAAC,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClE,MAAM,cAAc,GAAG,cAAc,EAAE,cAAc,IAAI,iBAAiB,EAAE,cAAc,CAAC;IAE3F,2BAA2B;IAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAChC,OAAO,wCAAwC,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,kFAAkF;IAClF,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC3C,IAAI,CAAC,gBAAgB,IAAI,OAAO,gBAAgB,KAAK,QAAQ,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QAE5F,yDAAyD;QACzD,qFAAqF;QACrF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,MAAM,cAAc,GAAG,mCAAmC,CAAC;YACzD,MAAM,EAAE,gBAAgB;YACxB,YAAY;YACZ,QAAQ;SACT,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,IAAI,cAAc,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC;QAE7D,iGAAiG;QACjG,+FAA+F;QAC/F,8FAA8F;QAC9F,6EAA6E;QAC7E,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,gBAA2C,CAAC;aAC/E,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,cAAc,CAAC,CAAC;QAClJ,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC;QAEjC,OAAO,qBAAqB,CAAC,4BAA4B,CAAC;YACxD,YAAY;YACZ,QAAQ;YACR,aAAa,EAAE,gBAAgB;YAC/B,CAAC;SACF,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,gBAAgB,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;IAEzD,wEAAwE;IACxE,+EAA+E;IAC/E,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAE9C,MAAM,iBAAiB,GAAG,QAAQ,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;QACxE,IAAI,CAAC,iBAAiB;YAAE,OAAO,IAAI,CAAC;QAEpC,4DAA4D;QAC5D,gFAAgF;QAChF,MAAM,wBAAwB,GAA2B,EAAE,CAAC;QAC5D,MAAM,UAAU,GAAG,cAAc,EAAE,0BAA0B,IAAI,iBAAiB,EAAE,0BAA0B,CAAC;QAC/G,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5D,MAAM,OAAO,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,OAAmC,EAAE,UAAU,CAAC;gBACzG,IAAI,OAAO;oBAAE,wBAAwB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,MAAM,0BAA0B,GAAG,cAAc,EAAE,YAAY,IAAI,iBAAiB,EAAE,YAAY,CAAC;QACnG,MAAM,yBAAyB,GAAG,0BAA0B,IAAI,UAAU;YACxE,CAAC,CAAC,qBAAqB,CAAC,gCAAgC,CACpD,0BAA0B,EAC1B,UAAU,EACV,QAAQ,CACT;YACH,CAAC,CAAC,EAAE,CAAC;QAEP,8FAA8F;QAC9F,MAAM,kBAAkB,GAAG,QAAQ,CAAC,2BAA2B,EAAE,CAAC,YAAY,CAAC,CAAC;QAEhF,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,CAAC;IACxG,CAAC,EAAE;QACD,YAAY;QACZ,UAAU;QACV,QAAQ;QACR,cAAc,EAAE,0BAA0B;QAC1C,cAAc,EAAE,YAAY;QAC5B,iBAAiB,EAAE,0BAA0B;QAC7C,iBAAiB,EAAE,YAAY;KAChC,CAAC,CAAC;IAEH;;;OAGG;IACH,MAAM,yBAAyB,GAAG,WAAW,CAAC,CAAC,EAAU,EAIhD,EAAE;QACT,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QAEjD,MAAM,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,GAAG,aAAa,CAAC;QAErH,yDAAyD;QACzD,MAAM,sBAAsB,GAAG,EAAE,GAAG,wBAAwB,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC;QACnF,MAAM,oBAAoB,GAAG;YAC3B,GAAG,0BAA0B;YAC7B,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D,CAAC;QACF,MAAM,MAAM,GAAG,mDAAmD,CAAC;YACjE,cAAc,EAAE,iBAAiB;YACjC,UAAU,EAAE,iBAAiB,CAAC,UAAU,IAAI,EAAE;YAC9C,aAAa,EAAE,qBAAqB,CAAC,IAAI;YACzC,QAAQ;YACR,aAAa,EAAE,IAAI;YACnB,0BAA0B,EAAE,IAAI;YAChC,0BAA0B,EAAE,sBAAsB;YAClD,oBAAoB;SACrB,CAAC,CAAC;QACH,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,MAAM,UAAU,GAAG,yCAAyC,CAAC,gCAAgC,CAC3F,iBAAiB,EACjB,MAAM,EACN,QAAQ,CAAC,2BAA2B,CACrC,CAAC;QACF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAEzC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,qBAAqB,CAAC,uBAAuB,CAChE,UAAU,EACV,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,EAClB,yBAAyB,EACzB,QAAQ,CAAC,2BAA2B,CACrC,CAAC;YACF,IAAI,CAAC,YAAY,EAAE,GAAG;gBAAE,OAAO,IAAI,CAAC;YACpC,MAAM,iCAAiC,GAAG,qBAAqB,CAAC,+CAA+C,CAC7G,YAAY,CAAC,UAAU,IAAI,EAAE,EAC7B,YAAY,EACZ,QAAQ,CACT,CAAC;YAEF,yDAAyD;YACzD,MAAM,gBAAgB,GAA2B,EAAE,CAAC;YACpD,6DAA6D;YAC7D,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,EAAE,CAAC;gBACpE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;oBAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7E,CAAC;YACD,6CAA6C;YAC7C,IAAI,kBAAkB,EAAE,CAAC;gBACvB,gBAAgB,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;YAC5C,CAAC;YAED,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;YACpF,mEAAmE;YACnE,IAAI,QAAQ,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACrE,OAAO;oBACL,GAAG,EAAE,QAAQ;oBACb,2BAA2B,EAAE,iCAAiC;oBAC9D,MAAM;iBACP,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wDAAwD;QAC1D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,0BAA0B,CAAC,CAAC,CAAC;IAExE;;;;;;;;OAQG;IACH,MAAM,sBAAsB,GAAG,WAAW,CAAC,CAAC,EAAU,EAE7C,EAAE;QACT,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QACjD,MAAM,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,GAAG,aAAa,CAAC;QAC1F,MAAM,sBAAsB,GAAG,EAAE,GAAG,wBAAwB,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC;QACnF,MAAM,MAAM,GAAG,mDAAmD,CAAC;YACjE,cAAc,EAAE,iBAAiB;YACjC,UAAU,EAAE,iBAAiB,CAAC,UAAU,IAAI,EAAE;YAC9C,aAAa,EAAE,qBAAqB,CAAC,IAAI;YACzC,QAAQ;YACR,aAAa,EAAE,IAAI;YACnB,0BAA0B,EAAE,KAAK;YACjC,0BAA0B,EAAE,sBAAsB;YAClD,oBAAoB,EAAE;gBACpB,GAAG,0BAA0B;gBAC7B,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5D;SACF,CAAC,CAAC;QACH,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,MAAM,CAAC,uBAAuB,EAAE,OAAO,KAAK,gCAAgC,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QACvG,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,0BAA0B,CAAC,CAAC,CAAC;IAExE,oCAAoC;IACpC,MAAM,iBAAiB,GAAG,WAAW,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE;QACzD,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE;YAAE,OAAO;QAEjC,+EAA+E;QAC/E,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAChE,OAAO;QACT,CAAC;QAED,0EAA0E;QAC1E,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEvE,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,MAAM,oCAAoC,CAAC;gBAClF,YAAY;gBACZ,EAAE;gBACF,QAAQ;gBACR,WAAW;gBACX,oBAAoB,EAAE,0BAA0B;gBAChD,CAAC;aACF,CAAC,CAAC;YAEH,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,qGAAqG;YACrG,oCAAoC;YACpC,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,wBAAwB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACnG,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,EAAE,0BAA0B,EAAE,aAAa,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAEnI,wFAAwF;IACxF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEjD,yFAAyF;QACzF,IAAI,oBAAoB,KAAK,qBAAqB,CAAC,EAAE,IAAI,oBAAoB,KAAK,aAAa,CAAC,IAAI;YAAE,OAAO;QAE7G,iFAAiF;QACjF,IAAI,iBAAiB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;gBACzB,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;gBACb,KAAK,EAAE,iBAAiB;gBACxB,IAAI,EAAE,gBAAuD;gBAC7D,KAAK,EAAE,IAAI;gBACX,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YAClB,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC1C,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;QACL,wKAAwK;IACxK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAExG;;;OAGG;IACH,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,EAAU,EAAE,OAAwB,EAAmB,EAAE;QACzF,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY;YAAE,OAAO,OAAO,CAAC;QAEjD,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,6BAA6B,GAAG,OAAO,CAAC,cAAc,IAAI,gBAAgB,EAAE,MAAM,IAAI,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAEnH,MAAM,yBAAyB,GAAG,CAAC,CAAmB,EAAE,EAAE;YACxD,IACE,CAAC,6BAA6B;mBAC3B,CAAC,gBAAgB;mBACjB,CAAC,CAAC,MAAM,KAAK,CAAC;mBACd,CAAC,CAAC,OAAO;mBACT,CAAC,CAAC,OAAO;mBACT,CAAC,CAAC,QAAQ;mBACV,CAAC,CAAC,MAAM,EACX,CAAC;gBACD,OAAO;YACT,CAAC;YAED,MAAM,sBAAsB,GAAG;gBAC7B,GAAG,aAAa,CAAC,wBAAwB;gBACzC,CAAC,YAAY,CAAC,EAAE,EAAE;aACnB,CAAC;YACF,MAAM,WAAW,GAAG,qBAAqB,CAAC,mDAAmD,CAAC;gBAC5F,YAAY;gBACZ,SAAS,EAAE,gBAAgB,CAAC,MAAM;gBAClC,0BAA0B,EAAE,sBAAsB;gBAClD,2BAA2B,EAAE,gBAAgB,CAAC,2BAA2B;aAC1E,CAAC,CAAC;YAEH,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE;gBACtC,OAAO,EAAE;oBACP,WAAW,EAAE,qBAAqB,CAAC,kBAAkB;oBACrD,eAAe,EAAE,WAAW;iBAC7B;gBACD,SAAS,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE;gBACzC,OAAO,EAAE,gBAAgB,CAAC,GAAG;aAC9B,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,iBAAiB,IAAI,eAAe,EAAE,kBAAkB,EAAE,CAAC;YAC7D,MAAM,WAAW,GAAG,CAAC,CAAmB,EAAE,EAAE;gBAC1C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM;oBAAE,OAAO;gBAC/E,MAAM,OAAO,GAAG,eAAe,CAAC,kBAAmB,CAAC,EAAE,CAAC,CAAC;gBACxD,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;oBACtB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC;YAEF,IAAI,gBAAgB,EAAE,GAAG,EAAE,CAAC;gBAC1B,OAAO,CACL,KAAC,IAAI,IAAC,EAAE,EAAE,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAC,8BAA8B,EAAC,OAAO,EAAE,WAAW,YAC1F,OAAO,GACH,CACR,CAAC;YACJ,CAAC;YACD,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ;gBACb;;;;;;;;;;;mBAWG;gBACH,SAAS,EAAC,4FAA4F,EACtG,OAAO,EAAE,GAAG,EAAE;oBACZ,eAAe,CAAC,kBAAmB,CAAC,EAAE,CAAC,CAAC;gBAC1C,CAAC,YAEA,OAAO,GACD,CACV,CAAC;QACJ,CAAC;QAED,IAAI,gBAAgB,EAAE,GAAG,EAAE,CAAC;YAC1B,OAAO,CACL,KAAC,IAAI,IAAC,EAAE,EAAE,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAC,8BAA8B,EAAC,OAAO,EAAE,yBAAyB,YACxG,OAAO,GACH,CACR,CAAC;QACJ,CAAC;QAED;;;;;;;WAOG;QACH,MAAM,aAAa,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC;QACjD,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,WAAW,GAAG,CAAC,CAAmB,EAAE,EAAE;gBAC1C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM;oBAAE,OAAO;gBAC/E,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,MAAM,WAAW,GAAG,qBAAqB,CAAC,mDAAmD,CAAC;oBAC5F,YAAY;oBACZ,SAAS,EAAE,aAAa,CAAC,MAAM;oBAC/B,0BAA0B,EAAE;wBAC1B,GAAG,aAAa,EAAE,wBAAwB;wBAC1C,CAAC,YAAY,CAAC,EAAE,EAAE;qBACnB;oBACD,2BAA2B,EAAE,aAAa,EAAE,yBAAyB,IAAI,EAAE;iBAC5E,CAAC,CAAC;gBACH,2FAA2F;gBAC3F,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE;oBACtC,OAAO,EAAE;wBACP,WAAW,EAAE,qBAAqB,CAAC,kBAAkB;wBACrD,eAAe,EAAE,WAAW;qBAC7B;oBACD,SAAS,EAAE,EAAE,UAAU,EAAE,cAAc,IAAI,cAAc,CAAC,OAAO,EAAE;iBACpE,CAAC,CAAC;YACL,CAAC,CAAC;YACF,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ;gBACb;;;;;;;;;;;mBAWG;gBACH,SAAS,EAAC,4FAA4F,EACtG,OAAO,EAAE,WAAW,YAEnB,OAAO,GACD,CACV,CAAC;QACJ,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAAC;IAE3J,wBAAwB;IACxB,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,EAAU,EAAE,EAAE;QAC7C,IAAI,oBAAoB,KAAK,qBAAqB,CAAC,EAAE,EAAE,CAAC;YACtD,OAAO,eAAM,SAAS,EAAC,mBAAmB,YAAE,EAAE,GAAQ,CAAC;QACzD,CAAC;QAED,IAAI,oBAAoB,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,QAAQ,EAAE,SAAS,IAAI,KAAK,CAAC;QAE/C,IAAI,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,KAAC,QAAQ,IAAC,SAAS,EAAC,uBAAuB,GAAG,CAAC;QACxD,CAAC;QAED,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,4FAA4F;YAC5F,4FAA4F;YAC5F,2FAA2F;YAC3F,yDAAyD;YACzD,EAAE;YACF,+FAA+F;YAC/F,yFAAyF;YACzF,0FAA0F;YAC1F,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,CACL,eAAM,SAAS,EAAC,+BAA+B,EAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,YAClE,aAAa,GACT,CACR,CAAC;YACJ,CAAC;YACD,OAAO,CACL,eAAM,SAAS,EAAC,yCAAyC,EAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,YAC5E,EAAE,GACE,CACR,CAAC;QACJ,CAAC;QAED,+FAA+F;QAC/F,8FAA8F;QAC9F,+DAA+D;QAC/D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,aAAa,IAAI,EAAE,CAAC;QAEpD,IAAI,oBAAoB,KAAK,aAAa,CAAC,KAAK,EAAE,CAAC;YACjD,MAAM,gBAAgB,GAAG,UAAU,IAAI,eAAe,EAAE,kBAAkB;gBACxE,CAAC,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,kBAAmB,CAAC,EAAE,CAAC;gBAC/C,CAAC,CAAC,SAAS,CAAC;YACd,OAAO,CACL,KAAC,KAAK,IACJ,OAAO,EAAC,WAAW,EACnB,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAAC,SAAS,EAC/F,OAAO,EAAE,gBAAgB,YAExB,KAAK,GACA,CACT,CAAC;QACJ,CAAC;QAED,iFAAiF;QACjF,iEAAiE;QACjE,IAAI,oBAAoB,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;YACnD,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,iBAAiB,GAAG,UAAU,IAAI,eAAe,EAAE,kBAAkB;oBACzE,CAAC,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,kBAAmB,CAAC,EAAE,CAAC;oBAC/C,CAAC,CAAC,SAAS,CAAC;gBACd,OAAO,CACL,eACE,SAAS,EAAE,iCAAiC,iBAAiB,CAAC,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC,EAAE,EAAE,EAC/H,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAC9C,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAC3C,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;wBAAC,CAAC,CAAC,cAAc,EAAE,CAAC;wBAAC,iBAAiB,EAAE,CAAC;oBAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,SAAS,YAExI,KAAK,GACD,CACR,CAAC;YACJ,CAAC;YAED,0DAA0D;YAC1D,IAAI,QAAQ,CAAC,IAAI,IAAI,YAAY,EAAE,CAAC;gBAClC,MAAM,SAAS,GAAG,QAAQ,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;gBAChE,MAAM,aAAa,GAAG,SAAS,EAAE,UAAU,CAAC;gBAC5C,IAAI,aAAa,EAAE,CAAC;oBAClB,MAAM,cAAc,GAAG,CACrB,KAAC,wBAAwB,IACvB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,QAAQ,CAAC,IAAI,GACnB,CACH,CAAC;oBACF,OAAO,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;gBACxE,CAAC;YACH,CAAC;YAED,OAAO,YAAY,CAAC,EAAE,EAAE,yBAAO,KAAK,GAAQ,CAAC,CAAC;QAChD,CAAC;QAED,oEAAoE;QACpE,IAAI,oBAAoB,KAAK,qBAAqB,CAAC,KAAK,EAAE,CAAC;YACzD,OAAO,YAAY,CAAC,EAAE,EAAE,yBAAO,KAAK,GAAQ,CAAC,CAAC;QAChD,CAAC;QAED,6BAA6B;QAC7B,OAAO,YAAY,CAAC,EAAE,EAAE,yBAAO,KAAK,GAAQ,CAAC,CAAC;IAChD,CAAC,EAAE,CAAC,oBAAoB,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAE9H,sBAAsB;IACtB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,eAAM,SAAS,EAAC,uBAAuB,kBAAS,CAAC;IAC1D,CAAC;IAED,IAAI,oBAAoB,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;QAChD,OAAO,eAAM,SAAS,EAAC,uBAAuB,kBAAS,CAAC;IAC1D,CAAC;IAED,gCAAgC;IAChC,IAAI,CAAC,YAAY,IAAI,oBAAoB,KAAK,qBAAqB,CAAC,EAAE,EAAE,CAAC;QACvE,0CAA0C;QAC1C,OAAO,CACL,cAAK,SAAS,EAAE,SAAS,EAAE,KAAK,EAAC,qCAAqC,YACnE,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACrB,eAAM,SAAS,EAAC,mBAAmB,YAAE,MAAM,CAAC,CAAC,CAAC,GAAQ,CACvD,CAAC,CAAC,CAAC,CACF,aAAI,SAAS,EAAC,gCAAgC,YAC3C,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAChB,aAAa,SAAS,EAAC,mBAAmB,YAAE,EAAE,IAArC,EAAE,CAAyC,CACrD,CAAC,GACC,CACN,GACG,CACP,CAAC;IACJ,CAAC;IAED,eAAe;IACf,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,cAAK,SAAS,EAAE,SAAS,YAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAO,CAAC;IACnE,CAAC;IAED,mCAAmC;IACrC;;;;;;;;;;;;;;OAcG;IACD,OAAO,CACL,aAAI,SAAS,EAAE,EAAE,CAAC,gCAAgC,EAAE,SAAS,CAAC,YAC3D,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAChB,uBAAc,WAAW,CAAC,EAAE,CAAC,IAApB,EAAE,CAAwB,CACpC,CAAC,GACC,CACN,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/**\n * ResourceFieldDisplayPreset_ResourceReference_Default\n *\n * Displays relationship selectors by resolving target ids to human-readable labels.\n *\n * Callers may come from plain FK fields or from relationship-object display\n * bridges (`user`, `products`, ...). When the resource type is not passed\n * explicitly, the preset resolves it from relationship/FK metadata in the\n * frontend registry rather than from local naming guesses alone.\n */\n\nimport React, { useEffect, useState, useCallback, useMemo, useRef } from 'react';\nimport { z } from 'zod';\nimport { Link } from 'react-router-dom';\nimport { Skeleton } from '~wildo-frontend-lib/components/feedback/skeleton';\nimport { Badge } from '~wildo-frontend-lib/components/data-display/badge';\nimport { useEventBus } from '~wildo-frontend-lib/core/events/useEventBus';\nimport { FrontendEvents } from '~wildo-frontend-lib/core/events/events.frontend.schemas';\nimport { useResourceRegistry } from '~wildo-frontend-lib/core/resources/useResourceRegistry';\nimport { DEFAULT_FOREIGN_KEY_DISPLAY_MODE, ForeignKeyDisplayMode, getForeignKeyParams } from '@wildo-ai/zod-decorators';\nimport { FrontendComponentType } from '@wildo-ai/presets-components-models';\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { cn } from '~wildo-frontend-lib/core/ui/cn';\nimport { FrontendResourceUtils, frontendResourceUtils } from '~wildo-frontend-lib/core/resources/frontend-resource.utils';\nimport { pickPreferredOperationForCoreSemanticAddressability } from '~wildo-frontend-lib/core/resources/resource-addressability.frontend.utils';\nimport { useResourceDisplayContext } from '~wildo-frontend-lib/components/data-display/automatic-displayer.utils';\nimport { useOptionalFormSchemaContext } from '~wildo-frontend-lib/components/form/useFormSchemaContext';\nimport { CoreResourceOperation, ParentDisplay, ResourcesConfigOperationsUrlsBuilderUtils } from '@wildo-ai/saas-models';\nimport { NavigationContentType, NavigationZone } from '~wildo-frontend-lib/core/navigation/navigation.schemas';\nimport { NavigationUtils } from '~wildo-frontend-lib/core/navigation/navigation.utils';\nimport { ResourceSummaryDisplayer } from '~wildo-frontend-lib/components/data-display/ResourceSummaryDisplayer';\nimport { useUserFacingErrorMessage } from '~wildo-frontend-lib/core/errors/useUserFacingErrorMessage';\nimport type { ResourceFieldDisplayPreset_ResourceReference_DefaultProps } from '~wildo-frontend-lib/components/resources-fields/resource-reference/ResourceFieldDisplay_ResourceReference';\nimport {\n fetchResourceReferenceRecordAndLabel,\n normalizeResourceReferenceSelectionValue,\n} from '~wildo-frontend-lib/components/resources-fields/resource-reference/resource-reference.shared.utils';\nimport type { FrontendResourceConfiguration_Operation } from '~wildo-frontend-lib/core/resources/resources.frontend.schemas';\nimport { ResourceOperationFrontendSurface } from '@wildo-ai/saas-models';\n\n// =============================================================================\n// TYPES (internal)\n// =============================================================================\n\ninterface ResolvedForeignKey {\n id: string;\n label: string | null;\n /** Full fetched data for SUMMARY display mode rendering. */\n data?: Record<string, unknown>;\n error: string | null;\n isLoading: boolean;\n}\n\nfunction resolvePrePopulatedRecordIdentifier(params: {\n record: Record<string, unknown>;\n resourceType: string;\n registry: ReturnType<typeof useResourceRegistry>['registry'];\n}): string | undefined {\n const configuredFieldIdentifier = params.registry.resourceConfigurations?.[params.resourceType]?.resourceFieldIdentifier\n ?? params.registry.allResourceFieldIdentifiers?.[params.resourceType];\n const rawId = (configuredFieldIdentifier ? params.record[configuredFieldIdentifier] : undefined)\n ?? params.record._id\n ?? params.record.id;\n\n return typeof rawId === 'string' && rawId !== '' ? rawId : undefined;\n}\n\n// =============================================================================\n// COMPONENT IMPLEMENTATION\n// =============================================================================\n\nexport const ResourceFieldDisplayPreset_ResourceReference_Default = ({\n fieldName,\n value,\n resourceType: resourceTypeProp,\n data: prePopulatedData,\n displayParams,\n labelFallback,\n schema,\n className,\n}: ResourceFieldDisplayPreset_ResourceReference_DefaultProps): React.JSX.Element => {\n const { registry, doOperation } = useResourceRegistry();\n const { emit } = useEventBus();\n const displayContext = useResourceDisplayContext();\n const formSchemaContext = useOptionalFormSchemaContext();\n\n /*\n * Target resolution precedence: an explicit prop (the dispatcher's per-record polymorphic\n * resolution) → the decorator's declared `referencedResourceType` (an FK named in its own\n * vocabulary — see the param's JSDoc) → the field-name map, which THROWS on a miss because an\n * unresolvable FK is a configuration error.\n */\n const declaredReferencedType = schema ? getForeignKeyParams(schema)?.referencedResourceType : undefined;\n const resourceType = resourceTypeProp\n || declaredReferencedType\n || FrontendResourceUtils.resolveResourceTypeForForeignKey(fieldName, schema, registry);\n\n const { t, isReady } = useI18n({ component: FrontendComponentType.RESOURCES_FIELDS_RESOURCE_REFERENCE, resource: resourceType });\n const toUserFacingErrorMessage = useUserFacingErrorMessage();\n\n // Resolve contextual parameters for scoped FK READ calls.\n // Display path: AutomaticDisplayer already built contextualParameters from contextResourceIdentifiers.\n // Form path: FormSchemaContext provides contextResourceIdentifiers, build params from them.\n const scopedContextualParameters = useMemo(() => {\n // Display path — pre-built contextualParameters available\n if (displayContext?.contextualParameters && Object.keys(displayContext.contextualParameters).length > 0) {\n return displayContext.contextualParameters;\n }\n // Form path — build from FormSchemaContext's contextResourceIdentifiers\n if (formSchemaContext?.contextResourceIdentifiers) {\n return FrontendResourceUtils.buildContextualParameters(\n formSchemaContext.contextResourceIdentifiers, registry\n );\n }\n return {};\n }, [displayContext?.contextualParameters, formSchemaContext?.contextResourceIdentifiers, registry]);\n\n // State for resolved labels (drives rendering)\n const [resolvedFKs, setResolvedFKs] = useState<Map<string, ResolvedForeignKey>>(new Map());\n // Ref for non-reactive reads in callbacks/effects — avoids stale closure & dependency cycle.\n // Mutated in place for synchronous accuracy across concurrent calls within the same loop.\n const resolvedFKsRef = useRef(new Map<string, ResolvedForeignKey>());\n\n /** Update both ref (immediate, for concurrent call detection) and state (for rendering). */\n const trackResolvedFK = useCallback((id: string, entry: ResolvedForeignKey) => {\n resolvedFKsRef.current.set(id, entry);\n setResolvedFKs(new Map(resolvedFKsRef.current));\n }, []);\n\n // The fallback for a caller that supplies no display params at all — today the\n // relationship-object branch of `DisplayValueDispatcher`, which renders a related\n // record rather than a decorated FK field. It derives from the SAME named source the\n // FK metadata reader (`getForeignKeyUIDisplay`) falls back to, so an unconfigured\n // reference reads identically whichever branch reached this preset. Restating a\n // `ForeignKeyDisplayMode` member here is what previously made the two disagree: this\n // site said SUMMARY while the metadata reader said LABEL, and which one an app author\n // saw depended on the branch.\n const displayMode = displayParams?.mode ?? DEFAULT_FOREIGN_KEY_DISPLAY_MODE;\n\n // ── C1 (P5-02): Parent reference display mode reconciliation ──────────\n const parentRefConfig = displayContext?.parentReferenceConfig;\n\n const isParentReference = Boolean(\n parentRefConfig && resourceType && parentRefConfig.parentResourceType === resourceType\n );\n\n /**\n * Effective display mode after reconciliation with ParentDisplay enum:\n * - CONTEXT / BREADCRUMB → forces linkable, keeps current FK mode\n * - BADGE → renders as Badge component\n * - SUMMARY → renders as inline summary text\n * - NONE → suppresses the parent reference rendering\n * - Not a parent reference → uses the decorator-based displayMode as-is\n */\n const effectiveDisplayMode = useMemo<ForeignKeyDisplayMode | ParentDisplay>(() => {\n if (!isParentReference || !parentRefConfig) return displayMode;\n\n switch (parentRefConfig.displayMode) {\n case ParentDisplay.CONTEXT:\n case ParentDisplay.BREADCRUMB:\n return displayMode;\n case ParentDisplay.BADGE:\n case ParentDisplay.SUMMARY:\n case ParentDisplay.NONE:\n return parentRefConfig.displayMode;\n default: return displayMode;\n }\n }, [isParentReference, parentRefConfig, displayMode]);\n\n const isLinkable = useMemo(() => {\n if (isParentReference) {\n if (parentRefConfig?.showParentLink === false) {\n return false;\n }\n if (\n parentRefConfig?.displayMode === ParentDisplay.CONTEXT ||\n parentRefConfig?.displayMode === ParentDisplay.BREADCRUMB\n ) {\n return true;\n }\n }\n return displayParams?.linkable ?? true;\n }, [isParentReference, parentRefConfig, displayParams?.linkable]);\n const navigationZone = displayContext?.navigationZone ?? formSchemaContext?.navigationZone;\n\n // Normalize value to array\n const values = React.useMemo(() => {\n return normalizeResourceReferenceSelectionValue(value);\n }, [value]);\n\n // Check if pre-populated data is usable through the configured resource id field.\n const prePopulatedLabel = React.useMemo(() => {\n if (!prePopulatedData || typeof prePopulatedData !== 'object' || !resourceType) return null;\n\n // For single FK: prePopulatedData._id should match value\n // For array FK: prePopulatedData is not applicable (arrays need per-item population)\n if (Array.isArray(value)) return null;\n const prePopulatedId = resolvePrePopulatedRecordIdentifier({\n record: prePopulatedData,\n resourceType,\n registry,\n });\n if (!prePopulatedId || prePopulatedId !== value) return null;\n\n // An IDENTITY-ONLY object carries no label. A context read declared `ID_ONLY`, or a parent whose\n // fetch degraded, arrives as `{ _id }`, and labelling it would fall through to the id itself —\n // seeding an ObjectId as the \"resolved\" label and suppressing the fetch that would have found\n // the name (#579). Only content beyond the identity counts as pre-populated.\n const carriesContent = Object.entries(prePopulatedData as Record<string, unknown>)\n .some(([key, fieldValue]) => key !== '_id' && key !== 'id' && fieldValue !== null && fieldValue !== undefined && fieldValue !== prePopulatedId);\n if (!carriesContent) return null;\n\n return FrontendResourceUtils.computeFrontendResourceLabel({\n resourceType,\n registry,\n currentObject: prePopulatedData,\n t,\n });\n }, [prePopulatedData, resourceType, value, registry, t]);\n\n // ── B1 (P4-03): FK link URL infrastructure ───────────────────────────\n // Memoize route path selection for the referenced resource type when linkable.\n const fkLinkUrlInfo = useMemo(() => {\n if (!resourceType || !isLinkable) return null;\n\n const refResourceConfig = registry.resourceConfigurations[resourceType];\n if (!refResourceConfig) return null;\n\n // Gather parent context identifiers for route path matching\n // (display context or form context — same source as scopedContextualParameters)\n const parentContextIdentifiers: Record<string, string> = {};\n const contextIds = displayContext?.contextResourceIdentifiers || formSchemaContext?.contextResourceIdentifiers;\n if (contextIds) {\n for (const [resType, idOrObj] of Object.entries(contextIds)) {\n const idValue = typeof idOrObj === 'string' ? idOrObj : (idOrObj as { resourceId?: string })?.resourceId;\n if (idValue) parentContextIdentifiers[resType] = idValue;\n }\n }\n\n const currentContextResourceType = displayContext?.resourceType || formSchemaContext?.resourceType;\n const currentParentRequirements = currentContextResourceType && contextIds\n ? frontendResourceUtils.buildParentResourcesRequirements(\n currentContextResourceType,\n contextIds,\n registry,\n )\n : [];\n\n // The resource's own field identifier (e.g., 'userId' for USERS) — for URL param substitution\n const ownFieldIdentifier = registry.allResourceFieldIdentifiers?.[resourceType];\n\n return { refResourceConfig, parentContextIdentifiers, ownFieldIdentifier, currentParentRequirements };\n }, [\n resourceType,\n isLinkable,\n registry,\n displayContext?.contextResourceIdentifiers,\n displayContext?.resourceType,\n formSchemaContext?.contextResourceIdentifiers,\n formSchemaContext?.resourceType,\n ]);\n\n /**\n * Resolve a concrete link URL for a given FK value.\n * Builds scoped URLs like /organizations/org-123/users/user-456 instead of /USERS/user-456.\n */\n const resolveFkNavigationTarget = useCallback((id: string): {\n url: string;\n parentResourcesRequirements: ReturnType<typeof frontendResourceUtils.buildParentResourcesRequirementsFromRouteParams>;\n readOp: FrontendResourceConfiguration_Operation;\n } | null => {\n if (!fkLinkUrlInfo || !resourceType) return null;\n\n const { refResourceConfig, parentContextIdentifiers, ownFieldIdentifier, currentParentRequirements } = fkLinkUrlInfo;\n\n // Add the FK's own resource type → ID for route matching\n const fullContextIdentifiers = { ...parentContextIdentifiers, [resourceType]: id };\n const contextualParameters = {\n ...scopedContextualParameters,\n ...(ownFieldIdentifier ? { [ownFieldIdentifier]: id } : {}),\n };\n const readOp = pickPreferredOperationForCoreSemanticAddressability({\n resourceConfig: refResourceConfig,\n operations: refResourceConfig.operations ?? [],\n coreOperation: CoreResourceOperation.READ,\n registry,\n hasResourceId: true,\n requireFrontendAddressable: true,\n contextResourceIdentifiers: fullContextIdentifiers,\n contextualParameters,\n });\n if (!readOp) return null;\n\n const routePaths = ResourcesConfigOperationsUrlsBuilderUtils.buildOperationFrontendRoutePaths(\n refResourceConfig,\n readOp,\n registry.allResourceFieldIdentifiers,\n );\n if (routePaths.length === 0) return null;\n\n try {\n const matchingPath = frontendResourceUtils.selectMatchingRoutePath(\n routePaths,\n fullContextIdentifiers,\n resourceType,\n ownFieldIdentifier,\n currentParentRequirements,\n registry.allResourceFieldIdentifiers,\n );\n if (!matchingPath?.url) return null;\n const targetParentResourcesRequirements = frontendResourceUtils.buildParentResourcesRequirementsFromRouteParams(\n matchingPath.parameters ?? [],\n resourceType,\n registry,\n );\n\n // Build field identifiers for URL parameter substitution\n const fieldIdentifiers: Record<string, string> = {};\n // Parent field identifiers from scoped contextual parameters\n for (const [key, val] of Object.entries(scopedContextualParameters)) {\n if (val !== undefined && val !== null) fieldIdentifiers[key] = String(val);\n }\n // Resource's own field identifier → FK value\n if (ownFieldIdentifier) {\n fieldIdentifiers[ownFieldIdentifier] = id;\n }\n\n const resolved = NavigationUtils.resolveUrlPath(matchingPath.url, fieldIdentifiers);\n // Only return if fully resolved (no remaining :param placeholders)\n if (resolved && !NavigationUtils.hasUnresolvedPlaceholders(resolved)) {\n return {\n url: resolved,\n parentResourcesRequirements: targetParentResourcesRequirements,\n readOp,\n };\n }\n } catch {\n // selectMatchingRoutePath may throw — graceful fallback\n }\n\n return null;\n }, [fkLinkUrlInfo, registry, resourceType, scopedContextualParameters]);\n\n /**\n * The OVERLAY fallback — a reference whose target READ is `EMBEDDED` (decided 2026-09-01).\n *\n * An EMBEDDED read has no route by contract (\"rendered within a host — overlay/drill-in when\n * standalone\"), so the URL resolver above answers null and the reference used to render as a\n * DEAD label. The navigation layer already escalates EMBEDDED content to an overlay\n * (`navigation-policy-resolver`: EMBEDDED never becomes THE PAGE) — all this resolver adds is\n * the read operation to hand it. API_ONLY stays dead on purpose: headless means no interface.\n */\n const resolveFkOverlayTarget = useCallback((id: string): {\n readOp: FrontendResourceConfiguration_Operation;\n } | null => {\n if (!fkLinkUrlInfo || !resourceType) return null;\n const { refResourceConfig, parentContextIdentifiers, ownFieldIdentifier } = fkLinkUrlInfo;\n const fullContextIdentifiers = { ...parentContextIdentifiers, [resourceType]: id };\n const readOp = pickPreferredOperationForCoreSemanticAddressability({\n resourceConfig: refResourceConfig,\n operations: refResourceConfig.operations ?? [],\n coreOperation: CoreResourceOperation.READ,\n registry,\n hasResourceId: true,\n requireFrontendAddressable: false,\n contextResourceIdentifiers: fullContextIdentifiers,\n contextualParameters: {\n ...scopedContextualParameters,\n ...(ownFieldIdentifier ? { [ownFieldIdentifier]: id } : {}),\n },\n });\n if (!readOp) return null;\n if (readOp.operationFrontendConfig?.surface !== ResourceOperationFrontendSurface.EMBEDDED) return null;\n return { readOp };\n }, [fkLinkUrlInfo, registry, resourceType, scopedContextualParameters]);\n\n // Resolve a single FK value via API\n const resolveForeignKey = useCallback(async (id: string) => {\n if (!resourceType || !id) return;\n\n // Skip if already resolved or loading (read from ref for synchronous accuracy)\n const existing = resolvedFKsRef.current.get(id);\n if (existing && (existing.label !== null || existing.isLoading)) {\n return;\n }\n\n // Mark as loading — ref update is immediate for concurrent call detection\n trackResolvedFK(id, { id, label: null, error: null, isLoading: true });\n\n try {\n const { record: fetchedRecord, label } = await fetchResourceReferenceRecordAndLabel({\n resourceType,\n id,\n registry,\n doOperation,\n contextualParameters: scopedContextualParameters,\n t,\n });\n\n trackResolvedFK(id, { id, label, data: fetchedRecord, error: null, isLoading: false });\n } catch (err) {\n // Shown as the id's tooltip, so resolved to localized text — `extractErrorInfo(err).message` was the\n // backend's i18n REFERENCE (#1160).\n trackResolvedFK(id, { id, label: null, error: toUserFacingErrorMessage(err), isLoading: false });\n }\n }, [resourceType, registry, doOperation, trackResolvedFK, t, scopedContextualParameters, fkLinkUrlInfo, toUserFacingErrorMessage]);\n\n // Resolve all FK values on mount/change — skip API when pre-populated data is available\n useEffect(() => {\n if (!resourceType || values.length === 0) return;\n\n // Only resolve if mode requires it — skip for ID display and suppressed parent reference\n if (effectiveDisplayMode === ForeignKeyDisplayMode.ID || effectiveDisplayMode === ParentDisplay.NONE) return;\n\n // If pre-populated label is available for single value, seed it into resolvedFKs\n if (prePopulatedLabel && values.length === 1 && !resolvedFKsRef.current.has(values[0])) {\n trackResolvedFK(values[0], {\n id: values[0],\n label: prePopulatedLabel,\n data: prePopulatedData as Record<string, unknown> | undefined,\n error: null,\n isLoading: false,\n });\n return;\n }\n\n values.forEach(id => {\n if (id && !resolvedFKsRef.current.has(id)) {\n resolveForeignKey(id);\n }\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps -- resolvedFKsRef used for non-reactive reads; resolvedFKs state intentionally excluded to break re-render cycle\n }, [resourceType, values, effectiveDisplayMode, resolveForeignKey, trackResolvedFK, prePopulatedLabel]);\n\n /**\n * Wrap content in a link/clickable element when linkable.\n * Parent references use onNavigateToParent (controller-managed) with URL fallback.\n */\n const wrapWithLink = useCallback((id: string, content: React.ReactNode): React.ReactNode => {\n if (!isLinkable || !resourceType) return content;\n\n const navigationTarget = resolveFkNavigationTarget(id);\n const shouldUseControllerNavigation = Boolean(navigationZone && navigationTarget?.readOp && navigationTarget?.url);\n\n const handleReferenceNavigation = (e: React.MouseEvent) => {\n if (\n !shouldUseControllerNavigation\n || !navigationTarget\n || e.button !== 0\n || e.ctrlKey\n || e.metaKey\n || e.shiftKey\n || e.altKey\n ) {\n return;\n }\n\n const fullContextIdentifiers = {\n ...fkLinkUrlInfo.parentContextIdentifiers,\n [resourceType]: id,\n };\n const readContext = frontendResourceUtils.createFrontendResourceOperationContextFromOperation({\n resourceType,\n operation: navigationTarget.readOp,\n contextResourceIdentifiers: fullContextIdentifiers,\n parentResourcesRequirements: navigationTarget.parentResourcesRequirements,\n });\n\n e.preventDefault();\n emit(FrontendEvents.NAVIGATION_REQUEST, {\n content: {\n contentType: NavigationContentType.RESOURCE_OPERATION,\n resourceContext: readContext,\n },\n initiator: { sourceZone: navigationZone },\n urlPath: navigationTarget.url,\n });\n };\n\n if (isParentReference && parentRefConfig?.onNavigateToParent) {\n const handleClick = (e: React.MouseEvent) => {\n if (e.button !== 0 || e.ctrlKey || e.metaKey || e.shiftKey || e.altKey) return;\n const handled = parentRefConfig.onNavigateToParent!(id);\n if (handled !== false) {\n e.preventDefault();\n }\n };\n\n if (navigationTarget?.url) {\n return (\n <Link to={navigationTarget.url} className=\"text-primary hover:underline\" onClick={handleClick}>\n {content}\n </Link>\n );\n }\n return (\n <button\n type=\"button\"\n /*\n * `block`, not the button default `inline-block` — and `inline` cannot work here.\n *\n * An inline-block's baseline is the baseline of its LAST line box, so inside a bulleted\n * list item a two-line reference dragged the ::marker down to its final line (measured on\n * the workbench's Requirements page, where every multi-valued \"Serves jobs\" link wraps).\n * The obvious fix, `display: inline`, is silently overridden: browsers fix up `inline` on\n * form controls to `inline-block` (verified via CDP — the cascade applied `.inline` and\n * the computed value stayed `inline-block`), so the class sat in the DOM doing nothing.\n * A BLOCK child is the shape that works: an outside marker aligns with the first line box\n * of a list item's block content, exactly like `<li><p>…</p></li>`.\n */\n className=\"block text-primary hover:underline bg-transparent border-none p-0 cursor-pointer text-left\"\n onClick={() => {\n parentRefConfig.onNavigateToParent!(id);\n }}\n >\n {content}\n </button>\n );\n }\n\n if (navigationTarget?.url) {\n return (\n <Link to={navigationTarget.url} className=\"text-primary hover:underline\" onClick={handleReferenceNavigation}>\n {content}\n </Link>\n );\n }\n\n /*\n * No route — the EMBEDDED-read overlay fallback (see `resolveFkOverlayTarget`).\n *\n * The source zone DEFAULTS to PRIMARY rather than gating on a context-provided zone: a\n * reference rendered by a display host that never plumbed `navigationZone` (an artifact\n * document, a composite view) would otherwise render its resolved label as dead text — the\n * silent-degradation shape this fallback exists to remove. PRIMARY is where such hosts live.\n */\n const overlayTarget = resolveFkOverlayTarget(id);\n if (overlayTarget) {\n const openOverlay = (e: React.MouseEvent) => {\n if (e.button !== 0 || e.ctrlKey || e.metaKey || e.shiftKey || e.altKey) return;\n e.preventDefault();\n const readContext = frontendResourceUtils.createFrontendResourceOperationContextFromOperation({\n resourceType,\n operation: overlayTarget.readOp,\n contextResourceIdentifiers: {\n ...fkLinkUrlInfo?.parentContextIdentifiers,\n [resourceType]: id,\n },\n parentResourcesRequirements: fkLinkUrlInfo?.currentParentRequirements ?? [],\n });\n // No urlPath on purpose: an overlay is not a place — nothing to deep-link, nothing to pop.\n emit(FrontendEvents.NAVIGATION_REQUEST, {\n content: {\n contentType: NavigationContentType.RESOURCE_OPERATION,\n resourceContext: readContext,\n },\n initiator: { sourceZone: navigationZone ?? NavigationZone.PRIMARY },\n });\n };\n return (\n <button\n type=\"button\"\n /*\n * `block`, not the button default `inline-block` — and `inline` cannot work here.\n *\n * An inline-block's baseline is the baseline of its LAST line box, so inside a bulleted\n * list item a two-line reference dragged the ::marker down to its final line (measured on\n * the workbench's Requirements page, where every multi-valued \"Serves jobs\" link wraps).\n * The obvious fix, `display: inline`, is silently overridden: browsers fix up `inline` on\n * form controls to `inline-block` (verified via CDP — the cascade applied `.inline` and\n * the computed value stayed `inline-block`), so the class sat in the DOM doing nothing.\n * A BLOCK child is the shape that works: an outside marker aligns with the first line box\n * of a list item's block content, exactly like `<li><p>…</p></li>`.\n */\n className=\"block text-primary hover:underline bg-transparent border-none p-0 cursor-pointer text-left\"\n onClick={openOverlay}\n >\n {content}\n </button>\n );\n }\n\n return content;\n }, [emit, fkLinkUrlInfo, isLinkable, isParentReference, navigationZone, parentRefConfig, resolveFkNavigationTarget, resolveFkOverlayTarget, resourceType]);\n\n // Render a single value\n const renderValue = useCallback((id: string) => {\n if (effectiveDisplayMode === ForeignKeyDisplayMode.ID) {\n return <span className=\"font-mono text-sm\">{id}</span>;\n }\n\n if (effectiveDisplayMode === ParentDisplay.NONE) {\n return null;\n }\n\n const resolved = resolvedFKs.get(id);\n const isLoading = resolved?.isLoading ?? false;\n\n if (isLoading || !resolved) {\n return <Skeleton className=\"h-4 w-24 inline-block\" />;\n }\n\n if (resolved.error) {\n // A FAILED resolution is exactly where the record's own readable copy earns its keep — more\n // so than an empty one. Measured 2026-09-19 on the member directory: reading another user's\n // record answers 403 for most rows, so this branch (not the empty-label one below) is what\n // printed `6aaba6b3a2d3b6b0ad61f33e` in the USER column.\n //\n // The error is NOT swallowed: it stays on `title`, so the failure is still discoverable, and a\n // field that declares no `labelFallbackField` still shows the id exactly as before. What\n // changes is only that a readable value present on the row is preferred to an opaque one.\n if (labelFallback) {\n return (\n <span className=\"text-muted-foreground text-sm\" title={resolved.error}>\n {labelFallback}\n </span>\n );\n }\n return (\n <span className=\"text-muted-foreground font-mono text-sm\" title={resolved.error}>\n {id}\n </span>\n );\n }\n\n // The id is the LAST resort, not the first. A record carrying a readable copy of the reference\n // (`labelFallbackField`) shows that instead — which is what keeps a member directory readable\n // for people who have no profile for a label to be built from.\n const label = resolved.label || labelFallback || id;\n\n if (effectiveDisplayMode === ParentDisplay.BADGE) {\n const handleBadgeClick = isLinkable && parentRefConfig?.onNavigateToParent\n ? () => parentRefConfig.onNavigateToParent!(id)\n : undefined;\n return (\n <Badge\n variant=\"secondary\"\n className={handleBadgeClick ? 'cursor-pointer hover:opacity-[var(--opacity-hover)]' : undefined}\n onClick={handleBadgeClick}\n >\n {label}\n </Badge>\n );\n }\n\n // \"summary\" mode — ParentDisplay.SUMMARY and ForeignKeyDisplayMode.SUMMARY share\n // the same string value, so we distinguish by isParentReference.\n if (effectiveDisplayMode === ParentDisplay.SUMMARY) {\n if (isParentReference) {\n const handleInlineClick = isLinkable && parentRefConfig?.onNavigateToParent\n ? () => parentRefConfig.onNavigateToParent!(id)\n : undefined;\n return (\n <span\n className={`text-muted-foreground text-sm ${handleInlineClick ? 'cursor-pointer hover:text-foreground transition-colors' : ''}`}\n onClick={handleInlineClick}\n role={handleInlineClick ? 'button' : undefined}\n tabIndex={handleInlineClick ? 0 : undefined}\n onKeyDown={handleInlineClick ? (e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); handleInlineClick(); }} : undefined}\n >\n {label}\n </span>\n );\n }\n\n // FK field SUMMARY mode — render ResourceSummaryDisplayer\n if (resolved.data && resourceType) {\n const refConfig = registry.resourceConfigurations[resourceType];\n const summarySchema = refConfig?.mainSchema;\n if (summarySchema) {\n const summaryContent = (\n <ResourceSummaryDisplayer\n resourceType={resourceType}\n schema={summarySchema}\n data={resolved.data}\n />\n );\n return isLinkable ? wrapWithLink(id, summaryContent) : summaryContent;\n }\n }\n\n return wrapWithLink(id, <span>{label}</span>);\n }\n\n // ForeignKeyDisplayMode.LABEL — resolved label, optionally linkable\n if (effectiveDisplayMode === ForeignKeyDisplayMode.LABEL) {\n return wrapWithLink(id, <span>{label}</span>);\n }\n\n // Fallback — render as label\n return wrapWithLink(id, <span>{label}</span>);\n }, [effectiveDisplayMode, resolvedFKs, resourceType, isParentReference, parentRefConfig, wrapWithLink, registry, isLinkable]);\n\n // Handle empty values\n if (values.length === 0) {\n return <span className=\"text-muted-foreground\">-</span>;\n }\n\n if (effectiveDisplayMode === ParentDisplay.NONE) {\n return <span className=\"text-muted-foreground\">-</span>;\n }\n\n // Unknown resource type warning\n if (!resourceType && effectiveDisplayMode !== ForeignKeyDisplayMode.ID) {\n // Fall back to showing IDs with a warning\n return (\n <div className={className} title=\"Unknown resource type - showing IDs\">\n {values.length === 1 ? (\n <span className=\"font-mono text-sm\">{values[0]}</span>\n ) : (\n <ul className=\"list-disc ms-4 space-y-item-xs\">\n {values.map(id => (\n <li key={id} className=\"font-mono text-sm\">{id}</li>\n ))}\n </ul>\n )}\n </div>\n );\n }\n\n // Single value\n if (values.length === 1) {\n return <div className={className}>{renderValue(values[0])}</div>;\n }\n\n // Multiple values - render as list\n/*\n * `list-outside` (the default) with a margin, NOT `list-inside`.\n *\n * `list-inside` puts the marker into the item's INLINE FLOW, where it has to share the first line\n * with the item's content — and the content here is a reference button, which is `inline-block`. An\n * inline-block box cannot break across lines, so as soon as its label is longer than the remaining\n * first line it wraps as ONE unit to the next, leaving the bullet stranded alone on a line of its\n * own. Measured on the workbench's Requirements page: every \"Serves jobs\" entry rendered as a bare\n * dot above its link, while \"Serves ICPs\" looked fine purely because it had ONE short-labelled\n * value — the single-value branch above renders no list at all, and a short label happened to fit.\n *\n * Outside markers sit in the margin and take no part in the inline flow, so the content may wrap\n * freely and the marker stays on the first line. `ms-4` matches the marker inset the array\n * renderer already uses for its own bulleted lists.\n */\n return (\n <ul className={cn('list-disc ms-4 space-y-item-xs', className)}>\n {values.map(id => (\n <li key={id}>{renderValue(id)}</li>\n ))}\n </ul>\n );\n};\n"]}
1
+ {"version":3,"file":"ResourceFieldDisplayPreset_ResourceReference_Default.js","sourceRoot":"","sources":["../../../../../../../src/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * ResourceFieldDisplayPreset_ResourceReference_Default\n *\n * Displays relationship selectors by resolving target ids to human-readable labels.\n *\n * Callers may come from plain FK fields or from relationship-object display\n * bridges (`user`, `products`, ...). When the resource type is not passed\n * explicitly, the preset resolves it from relationship/FK metadata in the\n * frontend registry rather than from local naming guesses alone.\n */\n\nimport React, { useEffect, useState, useCallback, useMemo, useRef } from 'react';\nimport { z } from 'zod';\nimport { Link } from 'react-router-dom';\nimport { Skeleton } from '~wildo-frontend-lib/components/feedback/skeleton';\nimport { Badge } from '~wildo-frontend-lib/components/data-display/badge';\nimport { Text } from '~wildo-frontend-lib/components/typography/text';\nimport { useEventBus } from '~wildo-frontend-lib/core/events/useEventBus';\nimport { FrontendEvents } from '~wildo-frontend-lib/core/events/events.frontend.schemas';\nimport { useResourceRegistry } from '~wildo-frontend-lib/core/resources/useResourceRegistry';\nimport { DEFAULT_FOREIGN_KEY_DISPLAY_MODE, ForeignKeyDisplayMode, getForeignKeyParams } from '@wildo-ai/zod-decorators';\nimport { FrontendComponentType, TextVariant } from '@wildo-ai/presets-components-models';\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { cn } from '~wildo-frontend-lib/core/ui/cn';\nimport { FrontendResourceUtils, frontendResourceUtils } from '~wildo-frontend-lib/core/resources/frontend-resource.utils';\nimport { pickPreferredOperationForCoreSemanticAddressability } from '~wildo-frontend-lib/core/resources/resource-addressability.frontend.utils';\nimport { useResourceDisplayContext } from '~wildo-frontend-lib/components/data-display/automatic-displayer.utils';\nimport { useOptionalFormSchemaContext } from '~wildo-frontend-lib/components/form/useFormSchemaContext';\nimport { CoreResourceOperation, ParentDisplay, ResourcesConfigOperationsUrlsBuilderUtils } from '@wildo-ai/saas-models';\nimport { NavigationContentType, NavigationZone } from '~wildo-frontend-lib/core/navigation/navigation.schemas';\nimport { NavigationUtils } from '~wildo-frontend-lib/core/navigation/navigation.utils';\nimport { ResourceSummaryDisplayer } from '~wildo-frontend-lib/components/data-display/ResourceSummaryDisplayer';\nimport { useUserFacingErrorMessage } from '~wildo-frontend-lib/core/errors/useUserFacingErrorMessage';\nimport type { ResourceFieldDisplayPreset_ResourceReference_DefaultProps } from '~wildo-frontend-lib/components/resources-fields/resource-reference/ResourceFieldDisplay_ResourceReference';\nimport {\n fetchResourceReferenceRecordAndLabel,\n normalizeResourceReferenceSelectionValue,\n} from '~wildo-frontend-lib/components/resources-fields/resource-reference/resource-reference.shared.utils';\nimport type { AnyFrontendResourceConfiguration, FrontendResourceConfiguration_Operation } from '~wildo-frontend-lib/core/resources/resources.frontend.schemas';\nimport { ResourceOperationFrontendSurface } from '@wildo-ai/saas-models';\n\n// =============================================================================\n// TYPES (internal)\n// =============================================================================\n\ninterface ResolvedForeignKey {\n id: string;\n label: string | null;\n /** Full fetched data for SUMMARY display mode rendering. */\n data?: Record<string, unknown>;\n error: string | null;\n isLoading: boolean;\n}\n\nfunction resolvePrePopulatedRecordIdentifier(params: {\n record: Record<string, unknown>;\n resourceType: string;\n registry: ReturnType<typeof useResourceRegistry>['registry'];\n}): string | undefined {\n const configuredFieldIdentifier = params.registry.resourceConfigurations?.[params.resourceType]?.resourceFieldIdentifier\n ?? params.registry.allResourceFieldIdentifiers?.[params.resourceType];\n const rawId = (configuredFieldIdentifier ? params.record[configuredFieldIdentifier] : undefined)\n ?? params.record._id\n ?? params.record.id;\n\n return typeof rawId === 'string' && rawId !== '' ? rawId : undefined;\n}\n\n// =============================================================================\n// COMPONENT IMPLEMENTATION\n// =============================================================================\n\n/**\n * A reference's resolved LABEL, set in the body text recipe.\n *\n * It was a bare `<span>`, which takes its size from whatever encloses the value: every other display\n * value is a `Text` (the string formatter's own output), so a reference printed at the page's root\n * size while the facts around it printed at the body size — measured on the workbench's Build plan\n * and Roadmap pages, where each linked requirement read a size larger than the text it sat among.\n * `as=\"span\"` because the label sits inside a link or a button, where a block `<p>` is not allowed.\n *\n * `TextVariant.INHERIT` because the COLOUR is the wrapper's: the link or button around the label\n * carries `text-primary`, and the default variant would paint the label in the foreground colour —\n * every linkable reference in every application would stop looking like a link.\n */\nfunction ReferenceLabel({ label }: { readonly label: string }): React.JSX.Element {\n return <Text as=\"span\" variant={TextVariant.INHERIT}>{label}</Text>;\n}\n\nexport const ResourceFieldDisplayPreset_ResourceReference_Default = ({\n fieldName,\n value,\n resourceType: resourceTypeProp,\n data: prePopulatedData,\n displayParams,\n labelFallback,\n schema,\n className,\n}: ResourceFieldDisplayPreset_ResourceReference_DefaultProps): React.JSX.Element => {\n const { registry, doOperation } = useResourceRegistry();\n const { emit } = useEventBus();\n const displayContext = useResourceDisplayContext();\n const formSchemaContext = useOptionalFormSchemaContext();\n\n /*\n * Target resolution precedence: an explicit prop (the dispatcher's per-record polymorphic\n * resolution) → the decorator's declared `referencedResourceType` (an FK named in its own\n * vocabulary — see the param's JSDoc) → the field-name map, which THROWS on a miss because an\n * unresolvable FK is a configuration error.\n */\n const declaredReferencedType = schema ? getForeignKeyParams(schema)?.referencedResourceType : undefined;\n const resourceType = resourceTypeProp\n || declaredReferencedType\n || FrontendResourceUtils.resolveResourceTypeForForeignKey(fieldName, schema, registry);\n\n const { t, formatDate, formatDateTime, isReady } = useI18n({ component: FrontendComponentType.RESOURCES_FIELDS_RESOURCE_REFERENCE, resource: resourceType });\n const toUserFacingErrorMessage = useUserFacingErrorMessage();\n\n // Resolve contextual parameters for scoped FK READ calls.\n // Display path: AutomaticDisplayer already built contextualParameters from contextResourceIdentifiers.\n // Form path: FormSchemaContext provides contextResourceIdentifiers, build params from them.\n const scopedContextualParameters = useMemo(() => {\n // Display path — pre-built contextualParameters available\n if (displayContext?.contextualParameters && Object.keys(displayContext.contextualParameters).length > 0) {\n return displayContext.contextualParameters;\n }\n // Form path — build from FormSchemaContext's contextResourceIdentifiers\n if (formSchemaContext?.contextResourceIdentifiers) {\n return FrontendResourceUtils.buildContextualParameters(\n formSchemaContext.contextResourceIdentifiers, registry\n );\n }\n return {};\n }, [displayContext?.contextualParameters, formSchemaContext?.contextResourceIdentifiers, registry]);\n\n // State for resolved labels (drives rendering)\n const [resolvedFKs, setResolvedFKs] = useState<Map<string, ResolvedForeignKey>>(new Map());\n // Ref for non-reactive reads in callbacks/effects — avoids stale closure & dependency cycle.\n // Mutated in place for synchronous accuracy across concurrent calls within the same loop.\n const resolvedFKsRef = useRef(new Map<string, ResolvedForeignKey>());\n\n /** Update both ref (immediate, for concurrent call detection) and state (for rendering). */\n const trackResolvedFK = useCallback((id: string, entry: ResolvedForeignKey) => {\n resolvedFKsRef.current.set(id, entry);\n setResolvedFKs(new Map(resolvedFKsRef.current));\n }, []);\n\n // The fallback for a caller that supplies no display params at all — today the\n // relationship-object branch of `DisplayValueDispatcher`, which renders a related\n // record rather than a decorated FK field. It derives from the SAME named source the\n // FK metadata reader (`getForeignKeyUIDisplay`) falls back to, so an unconfigured\n // reference reads identically whichever branch reached this preset. Restating a\n // `ForeignKeyDisplayMode` member here is what previously made the two disagree: this\n // site said SUMMARY while the metadata reader said LABEL, and which one an app author\n // saw depended on the branch.\n const displayMode = displayParams?.mode ?? DEFAULT_FOREIGN_KEY_DISPLAY_MODE;\n\n // ── C1 (P5-02): Parent reference display mode reconciliation ──────────\n const parentRefConfig = displayContext?.parentReferenceConfig;\n\n const isParentReference = Boolean(\n parentRefConfig && resourceType && parentRefConfig.parentResourceType === resourceType\n );\n\n /**\n * Effective display mode after reconciliation with ParentDisplay enum:\n * - CONTEXT / BREADCRUMB → forces linkable, keeps current FK mode\n * - BADGE → renders as Badge component\n * - SUMMARY → renders as inline summary text\n * - NONE → suppresses the parent reference rendering\n * - Not a parent reference → uses the decorator-based displayMode as-is\n */\n const effectiveDisplayMode = useMemo<ForeignKeyDisplayMode | ParentDisplay>(() => {\n if (!isParentReference || !parentRefConfig) return displayMode;\n\n switch (parentRefConfig.displayMode) {\n case ParentDisplay.CONTEXT:\n case ParentDisplay.BREADCRUMB:\n return displayMode;\n case ParentDisplay.BADGE:\n case ParentDisplay.SUMMARY:\n case ParentDisplay.NONE:\n return parentRefConfig.displayMode;\n default: return displayMode;\n }\n }, [isParentReference, parentRefConfig, displayMode]);\n\n const isLinkable = useMemo(() => {\n if (isParentReference) {\n if (parentRefConfig?.showParentLink === false) {\n return false;\n }\n if (\n parentRefConfig?.displayMode === ParentDisplay.CONTEXT ||\n parentRefConfig?.displayMode === ParentDisplay.BREADCRUMB\n ) {\n return true;\n }\n }\n return displayParams?.linkable ?? true;\n }, [isParentReference, parentRefConfig, displayParams?.linkable]);\n const navigationZone = displayContext?.navigationZone ?? formSchemaContext?.navigationZone;\n\n // Normalize value to array\n const values = React.useMemo(() => {\n return normalizeResourceReferenceSelectionValue(value);\n }, [value]);\n\n // Check if pre-populated data is usable through the configured resource id field.\n const prePopulatedLabel = React.useMemo(() => {\n if (!prePopulatedData || typeof prePopulatedData !== 'object' || !resourceType) return null;\n\n // For single FK: prePopulatedData._id should match value\n // For array FK: prePopulatedData is not applicable (arrays need per-item population)\n if (Array.isArray(value)) return null;\n const prePopulatedId = resolvePrePopulatedRecordIdentifier({\n record: prePopulatedData,\n resourceType,\n registry,\n });\n if (!prePopulatedId || prePopulatedId !== value) return null;\n\n // An IDENTITY-ONLY object carries no label. A context read declared `ID_ONLY`, or a parent whose\n // fetch degraded, arrives as `{ _id }`, and labelling it would fall through to the id itself —\n // seeding an ObjectId as the \"resolved\" label and suppressing the fetch that would have found\n // the name (#579). Only content beyond the identity counts as pre-populated.\n const carriesContent = Object.entries(prePopulatedData as Record<string, unknown>)\n .some(([key, fieldValue]) => key !== '_id' && key !== 'id' && fieldValue !== null && fieldValue !== undefined && fieldValue !== prePopulatedId);\n if (!carriesContent) return null;\n\n return FrontendResourceUtils.computeFrontendResourceLabel({\n resourceType,\n registry,\n currentObject: prePopulatedData,\n t,\n formatDate,\n formatDateTime,\n });\n }, [prePopulatedData, resourceType, value, registry, t, formatDate, formatDateTime]);\n\n // ── B1 (P4-03): FK link URL infrastructure ───────────────────────────\n // Memoize route path selection for the referenced resource type when linkable.\n const fkLinkUrlInfo = useMemo(() => {\n if (!resourceType || !isLinkable) return null;\n\n const refResourceConfig = registry.resourceConfigurations[resourceType];\n if (!refResourceConfig) return null;\n\n // Gather parent context identifiers for route path matching\n // (display context or form context — same source as scopedContextualParameters)\n const parentContextIdentifiers: Record<string, string> = {};\n const contextIds = displayContext?.contextResourceIdentifiers || formSchemaContext?.contextResourceIdentifiers;\n if (contextIds) {\n for (const [resType, idOrObj] of Object.entries(contextIds)) {\n const idValue = typeof idOrObj === 'string' ? idOrObj : (idOrObj as { resourceId?: string })?.resourceId;\n if (idValue) parentContextIdentifiers[resType] = idValue;\n }\n }\n\n const currentContextResourceType = displayContext?.resourceType || formSchemaContext?.resourceType;\n const currentParentRequirements = currentContextResourceType && contextIds\n ? frontendResourceUtils.buildParentResourcesRequirements(\n currentContextResourceType,\n contextIds,\n registry,\n )\n : [];\n\n // The resource's own field identifier (e.g., 'userId' for USERS) — for URL param substitution\n const ownFieldIdentifier = registry.allResourceFieldIdentifiers?.[resourceType];\n\n return { refResourceConfig, parentContextIdentifiers, ownFieldIdentifier, currentParentRequirements };\n }, [\n resourceType,\n isLinkable,\n registry,\n displayContext?.contextResourceIdentifiers,\n displayContext?.resourceType,\n formSchemaContext?.contextResourceIdentifiers,\n formSchemaContext?.resourceType,\n ]);\n\n /**\n * Resolve a concrete link URL for a given FK value.\n * Builds scoped URLs like /organizations/org-123/users/user-456 instead of /USERS/user-456.\n */\n const resolveFkNavigationTarget = useCallback((id: string): {\n url: string;\n parentResourcesRequirements: ReturnType<typeof frontendResourceUtils.buildParentResourcesRequirementsFromRouteParams>;\n readOp: FrontendResourceConfiguration_Operation;\n } | null => {\n if (!fkLinkUrlInfo || !resourceType) return null;\n\n const { refResourceConfig, parentContextIdentifiers, ownFieldIdentifier, currentParentRequirements } = fkLinkUrlInfo;\n\n // Add the FK's own resource type → ID for route matching\n const fullContextIdentifiers = { ...parentContextIdentifiers, [resourceType]: id };\n const contextualParameters = {\n ...scopedContextualParameters,\n ...(ownFieldIdentifier ? { [ownFieldIdentifier]: id } : {}),\n };\n const readOp = pickPreferredOperationForCoreSemanticAddressability({\n resourceConfig: refResourceConfig,\n operations: refResourceConfig.operations ?? [],\n coreOperation: CoreResourceOperation.READ,\n registry,\n hasResourceId: true,\n requireFrontendAddressable: true,\n contextResourceIdentifiers: fullContextIdentifiers,\n contextualParameters,\n });\n if (!readOp) return null;\n\n const routePaths = ResourcesConfigOperationsUrlsBuilderUtils.buildOperationFrontendRoutePaths(\n refResourceConfig,\n readOp,\n registry.allResourceFieldIdentifiers,\n );\n if (routePaths.length === 0) return null;\n\n try {\n const matchingPath = frontendResourceUtils.selectMatchingRoutePath(\n routePaths,\n fullContextIdentifiers,\n resourceType,\n ownFieldIdentifier,\n currentParentRequirements,\n registry.allResourceFieldIdentifiers,\n );\n if (!matchingPath?.url) return null;\n const targetParentResourcesRequirements = frontendResourceUtils.buildParentResourcesRequirementsFromRouteParams(\n matchingPath.parameters ?? [],\n resourceType,\n registry,\n );\n\n // Build field identifiers for URL parameter substitution\n const fieldIdentifiers: Record<string, string> = {};\n // Parent field identifiers from scoped contextual parameters\n for (const [key, val] of Object.entries(scopedContextualParameters)) {\n if (val !== undefined && val !== null) fieldIdentifiers[key] = String(val);\n }\n // Resource's own field identifier → FK value\n if (ownFieldIdentifier) {\n fieldIdentifiers[ownFieldIdentifier] = id;\n }\n\n const resolved = NavigationUtils.resolveUrlPath(matchingPath.url, fieldIdentifiers);\n // Only return if fully resolved (no remaining :param placeholders)\n if (resolved && !NavigationUtils.hasUnresolvedPlaceholders(resolved)) {\n return {\n url: resolved,\n parentResourcesRequirements: targetParentResourcesRequirements,\n readOp,\n };\n }\n } catch {\n // selectMatchingRoutePath may throw — graceful fallback\n }\n\n return null;\n }, [fkLinkUrlInfo, registry, resourceType, scopedContextualParameters]);\n\n /**\n * The OVERLAY fallback — a reference whose target READ is `EMBEDDED` (decided 2026-09-01).\n *\n * An EMBEDDED read has no route by contract (\"rendered within a host — overlay/drill-in when\n * standalone\"), so the URL resolver above answers null and the reference used to render as a\n * DEAD label. The navigation layer already escalates EMBEDDED content to an overlay\n * (`navigation-policy-resolver`: EMBEDDED never becomes THE PAGE) — all this resolver adds is\n * the read operation to hand it. API_ONLY stays dead on purpose: headless means no interface.\n */\n const resolveFkOverlayTarget = useCallback((id: string): {\n readOp: FrontendResourceConfiguration_Operation;\n } | null => {\n if (!fkLinkUrlInfo || !resourceType) return null;\n const { refResourceConfig, parentContextIdentifiers, ownFieldIdentifier } = fkLinkUrlInfo;\n const fullContextIdentifiers = { ...parentContextIdentifiers, [resourceType]: id };\n const readOp = pickPreferredOperationForCoreSemanticAddressability({\n resourceConfig: refResourceConfig,\n operations: refResourceConfig.operations ?? [],\n coreOperation: CoreResourceOperation.READ,\n registry,\n hasResourceId: true,\n requireFrontendAddressable: false,\n contextResourceIdentifiers: fullContextIdentifiers,\n contextualParameters: {\n ...scopedContextualParameters,\n ...(ownFieldIdentifier ? { [ownFieldIdentifier]: id } : {}),\n },\n });\n if (!readOp) return null;\n if (readOp.operationFrontendConfig?.surface !== ResourceOperationFrontendSurface.EMBEDDED) return null;\n return { readOp };\n }, [fkLinkUrlInfo, registry, resourceType, scopedContextualParameters]);\n\n // Resolve a single FK value via API\n const resolveForeignKey = useCallback(async (id: string) => {\n if (!resourceType || !id) return;\n\n // Skip if already resolved or loading (read from ref for synchronous accuracy)\n const existing = resolvedFKsRef.current.get(id);\n if (existing && (existing.label !== null || existing.isLoading)) {\n return;\n }\n\n // Mark as loading — ref update is immediate for concurrent call detection\n trackResolvedFK(id, { id, label: null, error: null, isLoading: true });\n\n try {\n const { record: fetchedRecord, label } = await fetchResourceReferenceRecordAndLabel({\n resourceType,\n id,\n registry,\n doOperation,\n contextualParameters: scopedContextualParameters,\n t,\n formatDate,\n formatDateTime,\n });\n\n trackResolvedFK(id, { id, label, data: fetchedRecord, error: null, isLoading: false });\n } catch (err) {\n // Shown as the id's tooltip, so resolved to localized text — `extractErrorInfo(err).message` was the\n // backend's i18n REFERENCE (#1160).\n trackResolvedFK(id, { id, label: null, error: toUserFacingErrorMessage(err), isLoading: false });\n }\n }, [resourceType, registry, doOperation, trackResolvedFK, t, formatDate, formatDateTime, scopedContextualParameters, fkLinkUrlInfo, toUserFacingErrorMessage]);\n\n // Resolve all FK values on mount/change — skip API when pre-populated data is available\n useEffect(() => {\n if (!resourceType || values.length === 0) return;\n\n // Only resolve if mode requires it — skip for ID display and suppressed parent reference\n if (effectiveDisplayMode === ForeignKeyDisplayMode.ID || effectiveDisplayMode === ParentDisplay.NONE) return;\n\n // If pre-populated label is available for single value, seed it into resolvedFKs\n if (prePopulatedLabel && values.length === 1 && !resolvedFKsRef.current.has(values[0])) {\n trackResolvedFK(values[0], {\n id: values[0],\n label: prePopulatedLabel,\n data: prePopulatedData as Record<string, unknown> | undefined,\n error: null,\n isLoading: false,\n });\n return;\n }\n\n values.forEach(id => {\n if (id && !resolvedFKsRef.current.has(id)) {\n resolveForeignKey(id);\n }\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps -- resolvedFKsRef used for non-reactive reads; resolvedFKs state intentionally excluded to break re-render cycle\n }, [resourceType, values, effectiveDisplayMode, resolveForeignKey, trackResolvedFK, prePopulatedLabel]);\n\n /**\n * Wrap content in a link/clickable element when linkable.\n * Parent references use onNavigateToParent (controller-managed) with URL fallback.\n */\n const wrapWithLink = useCallback((id: string, content: React.ReactNode): React.ReactNode => {\n if (!isLinkable || !resourceType) return content;\n\n const navigationTarget = resolveFkNavigationTarget(id);\n const shouldUseControllerNavigation = Boolean(navigationZone && navigationTarget?.readOp && navigationTarget?.url);\n\n const handleReferenceNavigation = (e: React.MouseEvent) => {\n if (\n !shouldUseControllerNavigation\n || !navigationTarget\n || e.button !== 0\n || e.ctrlKey\n || e.metaKey\n || e.shiftKey\n || e.altKey\n ) {\n return;\n }\n\n const fullContextIdentifiers = {\n ...fkLinkUrlInfo.parentContextIdentifiers,\n [resourceType]: id,\n };\n const readContext = frontendResourceUtils.createFrontendResourceOperationContextFromOperation({\n resourceType,\n operation: navigationTarget.readOp,\n contextResourceIdentifiers: fullContextIdentifiers,\n parentResourcesRequirements: navigationTarget.parentResourcesRequirements,\n });\n\n e.preventDefault();\n emit(FrontendEvents.NAVIGATION_REQUEST, {\n content: {\n contentType: NavigationContentType.RESOURCE_OPERATION,\n resourceContext: readContext,\n },\n initiator: { sourceZone: navigationZone },\n urlPath: navigationTarget.url,\n });\n };\n\n if (isParentReference && parentRefConfig?.onNavigateToParent) {\n const handleClick = (e: React.MouseEvent) => {\n if (e.button !== 0 || e.ctrlKey || e.metaKey || e.shiftKey || e.altKey) return;\n const handled = parentRefConfig.onNavigateToParent!(id);\n if (handled !== false) {\n e.preventDefault();\n }\n };\n\n if (navigationTarget?.url) {\n return (\n <Link to={navigationTarget.url} className=\"text-primary hover:underline\" onClick={handleClick}>\n {content}\n </Link>\n );\n }\n return (\n <button\n type=\"button\"\n /*\n * `block`, not the button default `inline-block` — and `inline` cannot work here.\n *\n * An inline-block's baseline is the baseline of its LAST line box, so inside a bulleted\n * list item a two-line reference dragged the ::marker down to its final line (measured on\n * the workbench's Requirements page, where every multi-valued \"Serves jobs\" link wraps).\n * The obvious fix, `display: inline`, is silently overridden: browsers fix up `inline` on\n * form controls to `inline-block` (verified via CDP — the cascade applied `.inline` and\n * the computed value stayed `inline-block`), so the class sat in the DOM doing nothing.\n * A BLOCK child is the shape that works: an outside marker aligns with the first line box\n * of a list item's block content, exactly like `<li><p>…</p></li>`.\n */\n className=\"block text-primary hover:underline bg-transparent border-none p-0 cursor-pointer text-left\"\n onClick={() => {\n parentRefConfig.onNavigateToParent!(id);\n }}\n >\n {content}\n </button>\n );\n }\n\n if (navigationTarget?.url) {\n return (\n <Link to={navigationTarget.url} className=\"text-primary hover:underline\" onClick={handleReferenceNavigation}>\n {content}\n </Link>\n );\n }\n\n /*\n * No route — the EMBEDDED-read overlay fallback (see `resolveFkOverlayTarget`).\n *\n * The source zone DEFAULTS to PRIMARY rather than gating on a context-provided zone: a\n * reference rendered by a display host that never plumbed `navigationZone` (an artifact\n * document, a composite view) would otherwise render its resolved label as dead text — the\n * silent-degradation shape this fallback exists to remove. PRIMARY is where such hosts live.\n */\n const overlayTarget = resolveFkOverlayTarget(id);\n if (overlayTarget) {\n const openOverlay = (e: React.MouseEvent) => {\n if (e.button !== 0 || e.ctrlKey || e.metaKey || e.shiftKey || e.altKey) return;\n e.preventDefault();\n const readContext = frontendResourceUtils.createFrontendResourceOperationContextFromOperation({\n resourceType,\n operation: overlayTarget.readOp,\n contextResourceIdentifiers: {\n ...fkLinkUrlInfo?.parentContextIdentifiers,\n [resourceType]: id,\n },\n parentResourcesRequirements: fkLinkUrlInfo?.currentParentRequirements ?? [],\n });\n // No urlPath on purpose: an overlay is not a place — nothing to deep-link, nothing to pop.\n emit(FrontendEvents.NAVIGATION_REQUEST, {\n content: {\n contentType: NavigationContentType.RESOURCE_OPERATION,\n resourceContext: readContext,\n },\n initiator: { sourceZone: navigationZone ?? NavigationZone.PRIMARY },\n });\n };\n return (\n <button\n type=\"button\"\n /*\n * `block`, not the button default `inline-block` — and `inline` cannot work here.\n *\n * An inline-block's baseline is the baseline of its LAST line box, so inside a bulleted\n * list item a two-line reference dragged the ::marker down to its final line (measured on\n * the workbench's Requirements page, where every multi-valued \"Serves jobs\" link wraps).\n * The obvious fix, `display: inline`, is silently overridden: browsers fix up `inline` on\n * form controls to `inline-block` (verified via CDP — the cascade applied `.inline` and\n * the computed value stayed `inline-block`), so the class sat in the DOM doing nothing.\n * A BLOCK child is the shape that works: an outside marker aligns with the first line box\n * of a list item's block content, exactly like `<li><p>…</p></li>`.\n */\n className=\"block text-primary hover:underline bg-transparent border-none p-0 cursor-pointer text-left\"\n onClick={openOverlay}\n >\n {content}\n </button>\n );\n }\n\n return content;\n }, [emit, fkLinkUrlInfo, isLinkable, isParentReference, navigationZone, parentRefConfig, resolveFkNavigationTarget, resolveFkOverlayTarget, resourceType]);\n\n // Render a single value\n const renderValue = useCallback((id: string) => {\n if (effectiveDisplayMode === ForeignKeyDisplayMode.ID) {\n return <span className=\"font-mono text-sm\">{id}</span>;\n }\n\n if (effectiveDisplayMode === ParentDisplay.NONE) {\n return null;\n }\n\n const resolved = resolvedFKs.get(id);\n const isLoading = resolved?.isLoading ?? false;\n\n if (isLoading || !resolved) {\n return <Skeleton className=\"h-4 w-24 inline-block\" />;\n }\n\n if (resolved.error) {\n // A FAILED resolution is exactly where the record's own readable copy earns its keep — more\n // so than an empty one. Measured 2026-09-19 on the member directory: reading another user's\n // record answers 403 for most rows, so this branch (not the empty-label one below) is what\n // printed `6aaba6b3a2d3b6b0ad61f33e` in the USER column.\n //\n // The error is NOT swallowed: it stays on `title`, so the failure is still discoverable, and a\n // field that declares no `labelFallbackField` still shows the id exactly as before. What\n // changes is only that a readable value present on the row is preferred to an opaque one.\n if (labelFallback) {\n return (\n <span className=\"text-muted-foreground text-sm\" title={resolved.error}>\n {labelFallback}\n </span>\n );\n }\n return (\n <span className=\"text-muted-foreground font-mono text-sm\" title={resolved.error}>\n {id}\n </span>\n );\n }\n\n // The id is the LAST resort, not the first. A record carrying a readable copy of the reference\n // (`labelFallbackField`) shows that instead — which is what keeps a member directory readable\n // for people who have no profile for a label to be built from.\n /*\n * Named from the fetched record with the CURRENT `t`, not the label frozen at fetch time (#1851 review). A\n * record whose name reads another label section (a product named by `billing_products.<key>.name`) could be\n * fetched before those words arrived, and the stored label then kept its key for the life of the component.\n * The stored label is used only when there is no stored record (`data`) or the resource declares no label\n * strategy: such a name cannot change with the words, and the resolver would log its configuration gap on every\n * render. A strategy that returns an empty name for some record also logs on each render; accepted, since\n * that is a labelling defect in the strategy and the log names it.\n */\n const hasLabelStrategy = !!resourceType\n && !!(registry.resourceConfigurations?.[resourceType] as AnyFrontendResourceConfiguration | undefined)?.frontendConfiguration?.getFrontendResourceLabel;\n const currentLabel = resolved.data && resourceType && hasLabelStrategy\n ? FrontendResourceUtils.computeFrontendResourceLabel({ resourceType, registry, currentObject: resolved.data, t, formatDate, formatDateTime })\n : null;\n const label = currentLabel || resolved.label || labelFallback || id;\n\n if (effectiveDisplayMode === ParentDisplay.BADGE) {\n const handleBadgeClick = isLinkable && parentRefConfig?.onNavigateToParent\n ? () => parentRefConfig.onNavigateToParent!(id)\n : undefined;\n return (\n <Badge\n variant=\"secondary\"\n className={handleBadgeClick ? 'cursor-pointer hover:opacity-[var(--opacity-hover)]' : undefined}\n onClick={handleBadgeClick}\n >\n {label}\n </Badge>\n );\n }\n\n // \"summary\" mode — ParentDisplay.SUMMARY and ForeignKeyDisplayMode.SUMMARY share\n // the same string value, so we distinguish by isParentReference.\n if (effectiveDisplayMode === ParentDisplay.SUMMARY) {\n if (isParentReference) {\n const handleInlineClick = isLinkable && parentRefConfig?.onNavigateToParent\n ? () => parentRefConfig.onNavigateToParent!(id)\n : undefined;\n return (\n <span\n className={`text-muted-foreground text-sm ${handleInlineClick ? 'cursor-pointer hover:text-foreground transition-colors' : ''}`}\n onClick={handleInlineClick}\n role={handleInlineClick ? 'button' : undefined}\n tabIndex={handleInlineClick ? 0 : undefined}\n onKeyDown={handleInlineClick ? (e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); handleInlineClick(); }} : undefined}\n >\n {label}\n </span>\n );\n }\n\n // FK field SUMMARY mode — render ResourceSummaryDisplayer\n if (resolved.data && resourceType) {\n const refConfig = registry.resourceConfigurations[resourceType];\n const summarySchema = refConfig?.mainSchema;\n if (summarySchema) {\n const summaryContent = (\n <ResourceSummaryDisplayer\n resourceType={resourceType}\n schema={summarySchema}\n data={resolved.data}\n // The referenced record's NAME. The field's own label names the FIELD (\"Target todo\"),\n // never the record, and this card REPLACES the one-line label — so without it nothing on\n // screen says which record is referenced. Measured on Wonder Todos: a relationship row\n // read \"Blocks → Pending –\", the blocked todo's badges with no title. The edit picker\n // passes its option label for the same reason.\n primaryLabel={label}\n />\n );\n return isLinkable ? wrapWithLink(id, summaryContent) : summaryContent;\n }\n }\n\n return wrapWithLink(id, <ReferenceLabel label={label} />);\n }\n\n // ForeignKeyDisplayMode.LABEL — resolved label, optionally linkable\n if (effectiveDisplayMode === ForeignKeyDisplayMode.LABEL) {\n return wrapWithLink(id, <ReferenceLabel label={label} />);\n }\n\n // Fallback — render as label\n return wrapWithLink(id, <ReferenceLabel label={label} />);\n }, [effectiveDisplayMode, resolvedFKs, resourceType, isParentReference, parentRefConfig, wrapWithLink, registry, isLinkable, t, formatDate, formatDateTime, labelFallback]);\n\n // Handle empty values\n if (values.length === 0) {\n return <span className=\"text-muted-foreground\">-</span>;\n }\n\n if (effectiveDisplayMode === ParentDisplay.NONE) {\n return <span className=\"text-muted-foreground\">-</span>;\n }\n\n // Unknown resource type warning\n if (!resourceType && effectiveDisplayMode !== ForeignKeyDisplayMode.ID) {\n // Fall back to showing IDs with a warning\n return (\n <div className={className} title=\"Unknown resource type - showing IDs\">\n {values.length === 1 ? (\n <span className=\"font-mono text-sm\">{values[0]}</span>\n ) : (\n <ul className=\"list-disc ps-4 space-y-item-xs\">\n {values.map(id => (\n <li key={id} className=\"font-mono text-sm\">{id}</li>\n ))}\n </ul>\n )}\n </div>\n );\n }\n\n // Single value\n if (values.length === 1) {\n return <div className={className}>{renderValue(values[0])}</div>;\n }\n\n // Multiple values - render as list\n/*\n * `list-outside` (the default) with a start PADDING, NOT `list-inside`.\n *\n * `list-inside` puts the marker into the item's INLINE FLOW, where it has to share the first line\n * with the item's content — and the content here is a reference button, which is `inline-block`. An\n * inline-block box cannot break across lines, so as soon as its label is longer than the remaining\n * first line it wraps as ONE unit to the next, leaving the bullet stranded alone on a line of its\n * own. Measured on the workbench's Requirements page: every \"Serves jobs\" entry rendered as a bare\n * dot above its link, while \"Serves ICPs\" looked fine purely because it had ONE short-labelled\n * value — the single-value branch above renders no list at all, and a short label happened to fit.\n *\n * Outside markers sit in the margin and take no part in the inline flow, so the content may wrap\n * freely and the marker stays on the first line.\n *\n * PADDING rather than the `ms-4` margin this used until 2026-09-25, because the list is the value's\n * ROOT and a vertical field chrome stretches its children to `w-full`: a margin then pushes a\n * full-width box 1rem past its column, measured on the workbench's Build plan page where every\n * \"Serves functional requirements\" link ran to the pane's edge. An outside marker is drawn in the\n * list's padding box, so `ps-4` keeps the same inset inside the width instead of beyond it.\n */\n return (\n <ul className={cn('list-disc ps-4 space-y-item-xs', className)}>\n {values.map(id => (\n <li key={id}>{renderValue(id)}</li>\n ))}\n </ul>\n );\n};\n"]}
@@ -2,15 +2,35 @@ import { type ResourceType } from '@wildo-ai/saas-models';
2
2
  import type { FieldOption } from '../../../components/form/form-field-types';
3
3
  import type { ResourceRegistryContextType } from '../../../core/resources/ResourceRegistryContext';
4
4
  import type { FrontendResourceConfiguration_Operation, FrontendResourcesRegistry } from '../../../core/resources/resources.frontend.schemas';
5
+ type ResourceReferenceDateFormatter = (value: Date | string | number) => string;
5
6
  type ResourceReferenceTranslator = (toTranslate: string, translateParams?: {
6
7
  [key: string]: any;
7
8
  }) => string;
9
+ /**
10
+ * The ONE scope a reference to `resourceType` must be searched within, when that target is a peer of a
11
+ * scope present in the context through a junction — e.g. users ↔ organizations via
12
+ * organizationMembers, with the viewer's `organizationId` in context. Returns the single contextual
13
+ * parameter that selects the scope-anchored route (`/organizations/{org}/users/search`), whose rows
14
+ * are confined to that scope's members; `undefined` when no such junction applies.
15
+ *
16
+ * Restricting to that ONE parameter is deliberate: an unrelated context parameter (the viewer's own
17
+ * `userId`, say) would otherwise hijack route selection and collapse the result to a single record.
18
+ * Shared by the picker (`useResourceSearch`) and the label probe below, so the two can never disagree
19
+ * about which door a reference is reached through.
20
+ */
21
+ export declare function resolveScopeRequiredReferenceParameters(params: {
22
+ resourceType: ResourceType;
23
+ registry: FrontendResourcesRegistry;
24
+ contextualParameters: Record<string, string | number>;
25
+ }): Record<string, string | number> | undefined;
8
26
  export declare function normalizeResourceReferenceSelectionValue(value: string | string[] | null | undefined): string[];
9
27
  export declare function mapResourceReferenceOptions(params: {
10
28
  items: Record<string, unknown>[];
11
29
  resourceType: ResourceType;
12
30
  registry: FrontendResourcesRegistry;
13
- t?: ResourceReferenceTranslator;
31
+ t: ResourceReferenceTranslator;
32
+ formatDate: ResourceReferenceDateFormatter;
33
+ formatDateTime: ResourceReferenceDateFormatter;
14
34
  }): FieldOption<string>[];
15
35
  export declare function fetchResourceReferenceRecordAndLabel(params: {
16
36
  resourceType: ResourceType;
@@ -19,7 +39,9 @@ export declare function fetchResourceReferenceRecordAndLabel(params: {
19
39
  doOperation: ResourceRegistryContextType['doOperation'];
20
40
  contextualParameters?: Record<string, string | number>;
21
41
  readOperation?: FrontendResourceConfiguration_Operation | null;
22
- t?: ResourceReferenceTranslator;
42
+ t: ResourceReferenceTranslator;
43
+ formatDate: ResourceReferenceDateFormatter;
44
+ formatDateTime: ResourceReferenceDateFormatter;
23
45
  }): Promise<{
24
46
  record: Record<string, unknown>;
25
47
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"resource-reference.shared.utils.d.ts","sourceRoot":"","sources":["../../../../../../src/components/resources-fields/resource-reference/resource-reference.shared.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqD,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC7G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sDAAsD,CAAC;AACxF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4DAA4D,CAAC;AAG9G,OAAO,KAAK,EACV,uCAAuC,EACvC,yBAAyB,EAC1B,MAAM,+DAA+D,CAAC;AAEvE,KAAK,2BAA2B,GAAG,CACjC,WAAW,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,KACrC,MAAM,CAAC;AAEZ,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,GAC1C,MAAM,EAAE,CAQV;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE;IAClD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACjC,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,yBAAyB,CAAC;IACpC,CAAC,CAAC,EAAE,2BAA2B,CAAC;CACjC,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,CA4BxB;AAED,wBAAsB,oCAAoC,CAAC,MAAM,EAAE;IACjE,YAAY,EAAE,YAAY,CAAC;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,yBAAyB,CAAC;IACpC,WAAW,EAAE,2BAA2B,CAAC,aAAa,CAAC,CAAC;IACxD,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACvD,aAAa,CAAC,EAAE,uCAAuC,GAAG,IAAI,CAAC;IAC/D,CAAC,CAAC,EAAE,2BAA2B,CAAC;CACjC,GAAG,OAAO,CAAC;IACV,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAoED"}
1
+ {"version":3,"file":"resource-reference.shared.utils.d.ts","sourceRoot":"","sources":["../../../../../../src/components/resources-fields/resource-reference/resource-reference.shared.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4E,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACpI,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sDAAsD,CAAC;AACxF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4DAA4D,CAAC;AAG9G,OAAO,KAAK,EACV,uCAAuC,EACvC,yBAAyB,EAC1B,MAAM,+DAA+D,CAAC;AAEvE,KAAK,8BAA8B,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;AAEhF,KAAK,2BAA2B,GAAG,CACjC,WAAW,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,KACrC,MAAM,CAAC;AAEZ;;;;;;;;;;;GAWG;AACH,wBAAgB,uCAAuC,CAAC,MAAM,EAAE;IAC9D,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,yBAAyB,CAAC;IACpC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CACvD,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,SAAS,CAc9C;AAED,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,GAC1C,MAAM,EAAE,CAQV;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE;IAClD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACjC,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,yBAAyB,CAAC;IAEpC,CAAC,EAAE,2BAA2B,CAAC;IAE/B,UAAU,EAAE,8BAA8B,CAAC;IAE3C,cAAc,EAAE,8BAA8B,CAAC;CAChD,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,CA8BxB;AAED,wBAAsB,oCAAoC,CAAC,MAAM,EAAE;IACjE,YAAY,EAAE,YAAY,CAAC;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,yBAAyB,CAAC;IACpC,WAAW,EAAE,2BAA2B,CAAC,aAAa,CAAC,CAAC;IACxD,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACvD,aAAa,CAAC,EAAE,uCAAuC,GAAG,IAAI,CAAC;IAE/D,CAAC,EAAE,2BAA2B,CAAC;IAE/B,UAAU,EAAE,8BAA8B,CAAC;IAE3C,cAAc,EAAE,8BAA8B,CAAC;CAChD,GAAG,OAAO,CAAC;IACV,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAkHD"}
@@ -1,6 +1,31 @@
1
- import { CoreResourceOperation, ResourceOperationRiskLevel } from '@wildo-ai/saas-models';
1
+ import { CoreResourceOperation, ResourceOperationRiskLevel, Resources_SharedUtils } from '@wildo-ai/saas-models';
2
2
  import { frontendResourceUtils, FrontendResourceUtils } from '../../../core/resources/frontend-resource.utils.js';
3
3
  import { isFrontendOperationAddressableForCurrentContext, pickPreferredOperationForCoreSemanticAddressability } from '../../../core/resources/resource-addressability.frontend.utils.js';
4
+ /**
5
+ * The ONE scope a reference to `resourceType` must be searched within, when that target is a peer of a
6
+ * scope present in the context through a junction — e.g. users ↔ organizations via
7
+ * organizationMembers, with the viewer's `organizationId` in context. Returns the single contextual
8
+ * parameter that selects the scope-anchored route (`/organizations/{org}/users/search`), whose rows
9
+ * are confined to that scope's members; `undefined` when no such junction applies.
10
+ *
11
+ * Restricting to that ONE parameter is deliberate: an unrelated context parameter (the viewer's own
12
+ * `userId`, say) would otherwise hijack route selection and collapse the result to a single record.
13
+ * Shared by the picker (`useResourceSearch`) and the label probe below, so the two can never disagree
14
+ * about which door a reference is reached through.
15
+ */
16
+ export function resolveScopeRequiredReferenceParameters(params) {
17
+ // Guard for partial (test) registries with no map.
18
+ if (!params.registry.manyToManyScopeJunctions)
19
+ return undefined;
20
+ const scopeJunction = Resources_SharedUtils.findScopeJunctionForTargetInContext(params.registry.manyToManyScopeJunctions, params.resourceType, new Set(Object.keys(params.contextualParameters)));
21
+ if (!scopeJunction)
22
+ return undefined;
23
+ const scopeValue = params.contextualParameters[scopeJunction.scopeFkField];
24
+ if ((typeof scopeValue !== 'string' && typeof scopeValue !== 'number') || String(scopeValue).trim() === '') {
25
+ return undefined;
26
+ }
27
+ return { [scopeJunction.scopeFkField]: scopeValue };
28
+ }
4
29
  export function normalizeResourceReferenceSelectionValue(value) {
5
30
  if (value === undefined || value === null || value === '') {
6
31
  return [];
@@ -25,6 +50,8 @@ export function mapResourceReferenceOptions(params) {
25
50
  registry: params.registry,
26
51
  currentObject: item,
27
52
  t: params.t,
53
+ formatDate: params.formatDate,
54
+ formatDateTime: params.formatDateTime,
28
55
  }) ?? id;
29
56
  // Carry the full summary record so the picker can optionally render each option
30
57
  // as a summary card (ForeignKeyDisplayMode.SUMMARY) instead of just `label`. The
@@ -33,6 +60,45 @@ export function mapResourceReferenceOptions(params) {
33
60
  });
34
61
  }
35
62
  export async function fetchResourceReferenceRecordAndLabel(params) {
63
+ /*
64
+ * A reference REACHED THROUGH A SCOPE JUNCTION is labelled through that same confined door, not the
65
+ * target's READ (#1661). The users READ lets a user read only themselves, so an assignee or owner
66
+ * who is someone else could never be labelled — it rendered as a raw id. The org-scoped people
67
+ * search already returns that organization's members to its members, so filtering it to this one
68
+ * id narrows what the picker shows and exposes nothing new.
69
+ *
70
+ * The match is by id on the CLIENT too: a target whose search does not offer an `_id` filter
71
+ * would return its first page unfiltered, and taking row 0 would put the wrong name on the
72
+ * reference. Not found is the dangling case, reported like a failed READ.
73
+ */
74
+ const scopedParameters = resolveScopeRequiredReferenceParameters({
75
+ resourceType: params.resourceType,
76
+ registry: params.registry,
77
+ contextualParameters: params.contextualParameters ?? {},
78
+ });
79
+ if (scopedParameters) {
80
+ const result = await params.doOperation(FrontendResourceUtils.buildForeignKeySearchOperationPath(params.resourceType, params.registry), { contextualParameters: scopedParameters, queryParameters: { _id: params.id, limit: 1 } }, { silent: true, riskLevel: ResourceOperationRiskLevel.LOW });
81
+ const items = Array.isArray(result)
82
+ ? result
83
+ : (result?.data
84
+ ?? result?.items
85
+ ?? []);
86
+ const record = items.find((item) => item._id === params.id);
87
+ if (!record) {
88
+ throw new Error(`Reference ${params.resourceType}:${params.id} is not reachable within its scope.`);
89
+ }
90
+ return {
91
+ record,
92
+ label: FrontendResourceUtils.computeFrontendResourceLabel({
93
+ resourceType: params.resourceType,
94
+ registry: params.registry,
95
+ currentObject: record,
96
+ t: params.t,
97
+ formatDate: params.formatDate,
98
+ formatDateTime: params.formatDateTime,
99
+ }) ?? params.id,
100
+ };
101
+ }
36
102
  const fkFetchParams = FrontendResourceUtils.buildForeignKeyFetchParams(params.resourceType, params.id, params.registry);
37
103
  const resourceConfig = params.registry.resourceConfigurations[params.resourceType];
38
104
  const contextResourceIdentifiers = {
@@ -87,6 +153,8 @@ export async function fetchResourceReferenceRecordAndLabel(params) {
87
153
  registry: params.registry,
88
154
  currentObject: record,
89
155
  t: params.t,
156
+ formatDate: params.formatDate,
157
+ formatDateTime: params.formatDateTime,
90
158
  }) ?? params.id,
91
159
  };
92
160
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resource-reference.shared.utils.js","sourceRoot":"","sources":["../../../../../../src/components/resources-fields/resource-reference/resource-reference.shared.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { CoreResourceOperation, ResourceOperationRiskLevel, type ResourceType } from '@wildo-ai/saas-models';\nimport type { FieldOption } from '~wildo-frontend-lib/components/form/form-field-types';\nimport type { ResourceRegistryContextType } from '~wildo-frontend-lib/core/resources/ResourceRegistryContext';\nimport { frontendResourceUtils, FrontendResourceUtils } from '~wildo-frontend-lib/core/resources/frontend-resource.utils';\nimport { isFrontendOperationAddressableForCurrentContext, pickPreferredOperationForCoreSemanticAddressability } from '~wildo-frontend-lib/core/resources/resource-addressability.frontend.utils';\nimport type {\n FrontendResourceConfiguration_Operation,\n FrontendResourcesRegistry,\n} from '~wildo-frontend-lib/core/resources/resources.frontend.schemas';\n\ntype ResourceReferenceTranslator = (\n toTranslate: string,\n translateParams?: { [key: string]: any },\n) => string;\n\nexport function normalizeResourceReferenceSelectionValue(\n value: string | string[] | null | undefined,\n): string[] {\n if (value === undefined || value === null || value === '') {\n return [];\n }\n\n return Array.isArray(value)\n ? value.filter((entry): entry is string => typeof entry === 'string' && entry !== '')\n : [value];\n}\n\nexport function mapResourceReferenceOptions(params: {\n items: Record<string, unknown>[];\n resourceType: ResourceType;\n registry: FrontendResourcesRegistry;\n t?: ResourceReferenceTranslator;\n}): FieldOption<string>[] {\n const fieldIdentifier = FrontendResourceUtils.getResourceFieldIdentifierForType(\n params.resourceType,\n params.registry,\n );\n\n return params.items.flatMap((item) => {\n // The picker searches the FK target directly, so each record's own id (`_id`)\n // IS the FK value. Resolve it via `getResourceObjectId` (NOT the cross-resource\n // field-identifier name, which is absent from a plain record — without that\n // every reference option was silently dropped).\n const id = FrontendResourceUtils.getResourceObjectId(item as Record<string, unknown>, fieldIdentifier);\n if (!id) {\n return [];\n }\n\n const label = FrontendResourceUtils.computeFrontendResourceLabel({\n resourceType: params.resourceType,\n registry: params.registry,\n currentObject: item,\n t: params.t,\n }) ?? id;\n\n // Carry the full summary record so the picker can optionally render each option\n // as a summary card (ForeignKeyDisplayMode.SUMMARY) instead of just `label`. The\n // search already returns summary-mode DTOs, so this needs no extra fetch.\n return [{ value: id, label, data: item }];\n });\n}\n\nexport async function fetchResourceReferenceRecordAndLabel(params: {\n resourceType: ResourceType;\n id: string;\n registry: FrontendResourcesRegistry;\n doOperation: ResourceRegistryContextType['doOperation'];\n contextualParameters?: Record<string, string | number>;\n readOperation?: FrontendResourceConfiguration_Operation | null;\n t?: ResourceReferenceTranslator;\n}): Promise<{\n record: Record<string, unknown>;\n label: string;\n}> {\n const fkFetchParams = FrontendResourceUtils.buildForeignKeyFetchParams(\n params.resourceType,\n params.id,\n params.registry,\n );\n const resourceConfig = params.registry.resourceConfigurations[params.resourceType];\n const contextResourceIdentifiers = {\n [params.resourceType]: params.id,\n };\n const contextualParameters = {\n ...(params.contextualParameters ?? {}),\n ...(fkFetchParams.contextualParameters || {}),\n };\n const runtimeAddressableReadOperation = resourceConfig\n ? (\n params.readOperation\n && isFrontendOperationAddressableForCurrentContext({\n resourceConfig,\n operation: params.readOperation,\n registry: params.registry,\n hasResourceId: frontendResourceUtils.getResourceId(contextResourceIdentifiers[params.resourceType]).length > 0,\n contextResourceIdentifiers,\n contextualParameters,\n })\n ? params.readOperation\n : pickPreferredOperationForCoreSemanticAddressability({\n resourceConfig,\n operations: resourceConfig.operations ?? [],\n coreOperation: CoreResourceOperation.READ,\n registry: params.registry,\n hasResourceId: true,\n contextResourceIdentifiers,\n contextualParameters,\n })\n )\n : params.readOperation;\n const operationPath = FrontendResourceUtils.buildForeignKeyReadOperationPath(\n params.resourceType,\n params.registry,\n runtimeAddressableReadOperation,\n );\n /*\n * A LABEL PROBE, declared as one. It is a background read whose only purpose is a display string,\n * and its one expected failure is a DANGLING reference — an OPTIONAL edge whose target has gone\n * (a build-plan task a probe dispatch named that the accepted plan does not carry). The caller\n * renders the raw id with the reason as a tooltip, which is the whole user-facing answer; so the\n * request is `silent` (the caller owns the UX) and LOW risk (the 404 row of the behaviour matrix\n * drops the notification at LOW). Without both, every render of a list carrying one such\n * reference produced a global error notification and a console error for a field that was\n * already rendering correctly.\n */\n const record = await params.doOperation<Record<string, unknown>>(operationPath, {\n contextualParameters,\n }, {\n silent: true,\n riskLevel: ResourceOperationRiskLevel.LOW,\n });\n\n return {\n record,\n label: FrontendResourceUtils.computeFrontendResourceLabel({\n resourceType: params.resourceType,\n registry: params.registry,\n currentObject: record,\n t: params.t,\n }) ?? params.id,\n };\n}\n"]}
1
+ {"version":3,"file":"resource-reference.shared.utils.js","sourceRoot":"","sources":["../../../../../../src/components/resources-fields/resource-reference/resource-reference.shared.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { CoreResourceOperation, ResourceOperationRiskLevel, Resources_SharedUtils, type ResourceType } from '@wildo-ai/saas-models';\nimport type { FieldOption } from '~wildo-frontend-lib/components/form/form-field-types';\nimport type { ResourceRegistryContextType } from '~wildo-frontend-lib/core/resources/ResourceRegistryContext';\nimport { frontendResourceUtils, FrontendResourceUtils } from '~wildo-frontend-lib/core/resources/frontend-resource.utils';\nimport { isFrontendOperationAddressableForCurrentContext, pickPreferredOperationForCoreSemanticAddressability } from '~wildo-frontend-lib/core/resources/resource-addressability.frontend.utils';\nimport type {\n FrontendResourceConfiguration_Operation,\n FrontendResourcesRegistry,\n} from '~wildo-frontend-lib/core/resources/resources.frontend.schemas';\n\ntype ResourceReferenceDateFormatter = (value: Date | string | number) => string;\n\ntype ResourceReferenceTranslator = (\n toTranslate: string,\n translateParams?: { [key: string]: any },\n) => string;\n\n/**\n * The ONE scope a reference to `resourceType` must be searched within, when that target is a peer of a\n * scope present in the context through a junction — e.g. users ↔ organizations via\n * organizationMembers, with the viewer's `organizationId` in context. Returns the single contextual\n * parameter that selects the scope-anchored route (`/organizations/{org}/users/search`), whose rows\n * are confined to that scope's members; `undefined` when no such junction applies.\n *\n * Restricting to that ONE parameter is deliberate: an unrelated context parameter (the viewer's own\n * `userId`, say) would otherwise hijack route selection and collapse the result to a single record.\n * Shared by the picker (`useResourceSearch`) and the label probe below, so the two can never disagree\n * about which door a reference is reached through.\n */\nexport function resolveScopeRequiredReferenceParameters(params: {\n resourceType: ResourceType;\n registry: FrontendResourcesRegistry;\n contextualParameters: Record<string, string | number>;\n}): Record<string, string | number> | undefined {\n // Guard for partial (test) registries with no map.\n if (!params.registry.manyToManyScopeJunctions) return undefined;\n const scopeJunction = Resources_SharedUtils.findScopeJunctionForTargetInContext(\n params.registry.manyToManyScopeJunctions,\n params.resourceType,\n new Set(Object.keys(params.contextualParameters)),\n );\n if (!scopeJunction) return undefined;\n const scopeValue = params.contextualParameters[scopeJunction.scopeFkField];\n if ((typeof scopeValue !== 'string' && typeof scopeValue !== 'number') || String(scopeValue).trim() === '') {\n return undefined;\n }\n return { [scopeJunction.scopeFkField]: scopeValue };\n}\n\nexport function normalizeResourceReferenceSelectionValue(\n value: string | string[] | null | undefined,\n): string[] {\n if (value === undefined || value === null || value === '') {\n return [];\n }\n\n return Array.isArray(value)\n ? value.filter((entry): entry is string => typeof entry === 'string' && entry !== '')\n : [value];\n}\n\nexport function mapResourceReferenceOptions(params: {\n items: Record<string, unknown>[];\n resourceType: ResourceType;\n registry: FrontendResourcesRegistry;\n /* Required, as on `computeFrontendResourceLabel`, which it is forwarded to (#1454 review). */\n t: ResourceReferenceTranslator;\n /* Required beside `t`: forwarded to `computeFrontendResourceLabel` for a label callback that formats a date. */\n formatDate: ResourceReferenceDateFormatter;\n /* Required beside `formatDate`, for a label callback whose name is an instant. */\n formatDateTime: ResourceReferenceDateFormatter;\n}): FieldOption<string>[] {\n const fieldIdentifier = FrontendResourceUtils.getResourceFieldIdentifierForType(\n params.resourceType,\n params.registry,\n );\n\n return params.items.flatMap((item) => {\n // The picker searches the FK target directly, so each record's own id (`_id`)\n // IS the FK value. Resolve it via `getResourceObjectId` (NOT the cross-resource\n // field-identifier name, which is absent from a plain record — without that\n // every reference option was silently dropped).\n const id = FrontendResourceUtils.getResourceObjectId(item as Record<string, unknown>, fieldIdentifier);\n if (!id) {\n return [];\n }\n\n const label = FrontendResourceUtils.computeFrontendResourceLabel({\n resourceType: params.resourceType,\n registry: params.registry,\n currentObject: item,\n t: params.t,\n formatDate: params.formatDate,\n formatDateTime: params.formatDateTime,\n }) ?? id;\n\n // Carry the full summary record so the picker can optionally render each option\n // as a summary card (ForeignKeyDisplayMode.SUMMARY) instead of just `label`. The\n // search already returns summary-mode DTOs, so this needs no extra fetch.\n return [{ value: id, label, data: item }];\n });\n}\n\nexport async function fetchResourceReferenceRecordAndLabel(params: {\n resourceType: ResourceType;\n id: string;\n registry: FrontendResourcesRegistry;\n doOperation: ResourceRegistryContextType['doOperation'];\n contextualParameters?: Record<string, string | number>;\n readOperation?: FrontendResourceConfiguration_Operation | null;\n /* Required, as on `computeFrontendResourceLabel`, which it is forwarded to (#1454 review). */\n t: ResourceReferenceTranslator;\n /* Required beside `t`: forwarded to `computeFrontendResourceLabel` for a label callback that formats a date. */\n formatDate: ResourceReferenceDateFormatter;\n /* Required beside `formatDate`, for a label callback whose name is an instant. */\n formatDateTime: ResourceReferenceDateFormatter;\n}): Promise<{\n record: Record<string, unknown>;\n label: string;\n}> {\n /*\n * A reference REACHED THROUGH A SCOPE JUNCTION is labelled through that same confined door, not the\n * target's READ (#1661). The users READ lets a user read only themselves, so an assignee or owner\n * who is someone else could never be labelled — it rendered as a raw id. The org-scoped people\n * search already returns that organization's members to its members, so filtering it to this one\n * id narrows what the picker shows and exposes nothing new.\n *\n * The match is by id on the CLIENT too: a target whose search does not offer an `_id` filter\n * would return its first page unfiltered, and taking row 0 would put the wrong name on the\n * reference. Not found is the dangling case, reported like a failed READ.\n */\n const scopedParameters = resolveScopeRequiredReferenceParameters({\n resourceType: params.resourceType,\n registry: params.registry,\n contextualParameters: params.contextualParameters ?? {},\n });\n if (scopedParameters) {\n const result = await params.doOperation<unknown>(\n FrontendResourceUtils.buildForeignKeySearchOperationPath(params.resourceType, params.registry),\n { contextualParameters: scopedParameters, queryParameters: { _id: params.id, limit: 1 } },\n { silent: true, riskLevel: ResourceOperationRiskLevel.LOW },\n );\n const items: Record<string, unknown>[] = Array.isArray(result)\n ? result as Record<string, unknown>[]\n : ((result as { data?: Record<string, unknown>[]; items?: Record<string, unknown>[] } | null)?.data\n ?? (result as { items?: Record<string, unknown>[] } | null)?.items\n ?? []);\n const record = items.find((item) => item._id === params.id);\n if (!record) {\n throw new Error(`Reference ${params.resourceType}:${params.id} is not reachable within its scope.`);\n }\n return {\n record,\n label: FrontendResourceUtils.computeFrontendResourceLabel({\n resourceType: params.resourceType,\n registry: params.registry,\n currentObject: record,\n t: params.t,\n formatDate: params.formatDate,\n formatDateTime: params.formatDateTime,\n }) ?? params.id,\n };\n }\n\n const fkFetchParams = FrontendResourceUtils.buildForeignKeyFetchParams(\n params.resourceType,\n params.id,\n params.registry,\n );\n const resourceConfig = params.registry.resourceConfigurations[params.resourceType];\n const contextResourceIdentifiers = {\n [params.resourceType]: params.id,\n };\n const contextualParameters = {\n ...(params.contextualParameters ?? {}),\n ...(fkFetchParams.contextualParameters || {}),\n };\n const runtimeAddressableReadOperation = resourceConfig\n ? (\n params.readOperation\n && isFrontendOperationAddressableForCurrentContext({\n resourceConfig,\n operation: params.readOperation,\n registry: params.registry,\n hasResourceId: frontendResourceUtils.getResourceId(contextResourceIdentifiers[params.resourceType]).length > 0,\n contextResourceIdentifiers,\n contextualParameters,\n })\n ? params.readOperation\n : pickPreferredOperationForCoreSemanticAddressability({\n resourceConfig,\n operations: resourceConfig.operations ?? [],\n coreOperation: CoreResourceOperation.READ,\n registry: params.registry,\n hasResourceId: true,\n contextResourceIdentifiers,\n contextualParameters,\n })\n )\n : params.readOperation;\n const operationPath = FrontendResourceUtils.buildForeignKeyReadOperationPath(\n params.resourceType,\n params.registry,\n runtimeAddressableReadOperation,\n );\n /*\n * A LABEL PROBE, declared as one. It is a background read whose only purpose is a display string,\n * and its one expected failure is a DANGLING reference — an OPTIONAL edge whose target has gone\n * (a build-plan task a probe dispatch named that the accepted plan does not carry). The caller\n * renders the raw id with the reason as a tooltip, which is the whole user-facing answer; so the\n * request is `silent` (the caller owns the UX) and LOW risk (the 404 row of the behaviour matrix\n * drops the notification at LOW). Without both, every render of a list carrying one such\n * reference produced a global error notification and a console error for a field that was\n * already rendering correctly.\n */\n const record = await params.doOperation<Record<string, unknown>>(operationPath, {\n contextualParameters,\n }, {\n silent: true,\n riskLevel: ResourceOperationRiskLevel.LOW,\n });\n\n return {\n record,\n label: FrontendResourceUtils.computeFrontendResourceLabel({\n resourceType: params.resourceType,\n registry: params.registry,\n currentObject: record,\n t: params.t,\n formatDate: params.formatDate,\n formatDateTime: params.formatDateTime,\n }) ?? params.id,\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"useResourceSearch.d.ts","sourceRoot":"","sources":["../../../../../../src/components/resources-fields/resource-reference/useResourceSearch.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sDAAsD,CAAC;AAMxF,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,yDAAyD,CAAC;AAgBlH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACrC;AAMD,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,IAAI,EACJ,KAAK,EACL,kBAAkB,GACnB,EAAE,wBAAwB,GAAG,uBAAuB,CAqUpD"}
1
+ {"version":3,"file":"useResourceSearch.d.ts","sourceRoot":"","sources":["../../../../../../src/components/resources-fields/resource-reference/useResourceSearch.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sDAAsD,CAAC;AAOxF,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,yDAAyD,CAAC;AAgBlH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACrC;AAMD,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,IAAI,EACJ,KAAK,EACL,kBAAkB,GACnB,EAAE,wBAAwB,GAAG,uBAAuB,CA+TpD"}
@@ -17,8 +17,8 @@ import { useOptionalFormSchemaContext } from '../../../components/form/useFormSc
17
17
  import { resolveComponentLabel } from '../../../core/i18n/component-label-resolution.utils.js';
18
18
  import { useOptionalResourceOperationViewContext } from '../../../core/resources/ResourceOperationViewContext.js';
19
19
  import { FrontendComponentType } from '@wildo-ai/presets-components-models';
20
- import { CoreResourceOperation, Resources_SharedUtils } from '@wildo-ai/saas-models';
21
- import { fetchResourceReferenceRecordAndLabel, mapResourceReferenceOptions, normalizeResourceReferenceSelectionValue, } from './resource-reference.shared.utils.js';
20
+ import { CoreResourceOperation } from '@wildo-ai/saas-models';
21
+ import { fetchResourceReferenceRecordAndLabel, mapResourceReferenceOptions, normalizeResourceReferenceSelectionValue, resolveScopeRequiredReferenceParameters, } from './resource-reference.shared.utils.js';
22
22
  import { extractErrorInfo } from '../../../core/errors/errors.frontend.schemas.js';
23
23
  import { useUserFacingErrorMessage } from '../../../core/errors/useUserFacingErrorMessage.js';
24
24
  import { LoggerFrontendService } from '../../../core/monitoring/logger.frontend.service.js';
@@ -33,7 +33,7 @@ const MIN_SEARCH_CHARS = 2;
33
33
  // =============================================================================
34
34
  export function useResourceSearch({ schema, name, value, targetResourceType, }) {
35
35
  const { registry, doOperation } = useResourceRegistry();
36
- const { t, tComponent, tResourceFieldEdit } = useI18n({ component: FrontendComponentType.RESOURCES_FIELDS_RESOURCE_REFERENCE });
36
+ const { t, formatDate, formatDateTime, tComponent, tResourceFieldEdit } = useI18n({ component: FrontendComponentType.RESOURCES_FIELDS_RESOURCE_REFERENCE });
37
37
  const toUserFacingErrorMessage = useUserFacingErrorMessage();
38
38
  const formSchemaContext = useOptionalFormSchemaContext();
39
39
  // Filter pickers render OUTSIDE a form (no FormSchemaContext) but INSIDE the
@@ -110,21 +110,16 @@ export function useResourceSearch({ schema, name, value, targetResourceType, })
110
110
  try {
111
111
  const operationPath = FrontendResourceUtils.buildForeignKeySearchOperationPath(resourceType, registry);
112
112
  const searchParams = FrontendResourceUtils.buildForeignKeySearchParams(query, INITIAL_LOAD_LIMIT);
113
- // Infer the scope junction (if any) for this FK target from the registry
114
- // map, using the scope params present in the LIVE context. When found,
115
- // restrict the search to that ONE scope param so the backend's
116
- // scope-anchored route is selected (members of the caller's org) and no
117
- // unrelated context param (e.g. the caller's own userId) hijacks route
118
- // selection. Otherwise pass the host context unchanged for a plain target
119
- // search. Guard for partial (test) registries with no map.
113
+ // Infer the scope junction (if any) for this FK target from the LIVE context, and restrict the
114
+ // search to that ONE scope param so the scope-anchored route is selected (members of the
115
+ // caller's org). Otherwise pass the host context unchanged for a plain target search. One
116
+ // definition, shared with the label probe — see `resolveScopeRequiredReferenceParameters`.
120
117
  const hostContextualParameters = contextualParametersRef.current;
121
- const scopeJunction = registry.manyToManyScopeJunctions
122
- ? Resources_SharedUtils.findScopeJunctionForTargetInContext(registry.manyToManyScopeJunctions, resourceType, new Set(Object.keys(hostContextualParameters)))
123
- : undefined;
124
- const scopeValue = scopeJunction ? hostContextualParameters[scopeJunction.scopeFkField] : undefined;
125
- const effectiveContextualParameters = scopeJunction && (typeof scopeValue === 'string' || typeof scopeValue === 'number') && String(scopeValue).trim() !== ''
126
- ? { [scopeJunction.scopeFkField]: scopeValue }
127
- : hostContextualParameters;
118
+ const effectiveContextualParameters = resolveScopeRequiredReferenceParameters({
119
+ resourceType,
120
+ registry,
121
+ contextualParameters: hostContextualParameters,
122
+ }) ?? hostContextualParameters;
128
123
  const result = await doOperationRef.current(operationPath, {
129
124
  contextualParameters: effectiveContextualParameters,
130
125
  queryParameters: searchParams.queryParameters,
@@ -145,6 +140,8 @@ export function useResourceSearch({ schema, name, value, targetResourceType, })
145
140
  resourceType,
146
141
  registry,
147
142
  t,
143
+ formatDate,
144
+ formatDateTime,
148
145
  }));
149
146
  }
150
147
  catch (err) {
@@ -158,7 +155,7 @@ export function useResourceSearch({ schema, name, value, targetResourceType, })
158
155
  finally {
159
156
  setIsLoading(false);
160
157
  }
161
- }, [resourceType, registry, t]);
158
+ }, [resourceType, registry, t, formatDate, formatDateTime]);
162
159
  // =========================================================================
163
160
  // RESOLVE CURRENT VALUE LABELS
164
161
  // =========================================================================
@@ -182,6 +179,8 @@ export function useResourceSearch({ schema, name, value, targetResourceType, })
182
179
  contextualParameters: contextualParametersRef.current,
183
180
  readOperation,
184
181
  t,
182
+ formatDate,
183
+ formatDateTime,
185
184
  });
186
185
  newLabels.set(id, label);
187
186
  }
@@ -191,7 +190,7 @@ export function useResourceSearch({ schema, name, value, targetResourceType, })
191
190
  }
192
191
  setCurrentValueLabels(newLabels);
193
192
  setIsLoadingCurrentValue(false);
194
- }, [resourceType, normalizedValue, registry, readOperation, t]);
193
+ }, [resourceType, normalizedValue, registry, readOperation, t, formatDate, formatDateTime]);
195
194
  // =========================================================================
196
195
  // EFFECTS
197
196
  // =========================================================================