@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,259 +1,38 @@
1
1
  /**
2
- * Components contributed by PROVIDERS, keyed by the capability each fills.
3
- *
4
- * ## Why this is a sibling of `ComponentRegistryService` and not an extension
5
- *
6
- * The two answer different questions, and the difference is in the KEY, the
7
- * cardinality and the lifecycle — not in whether a vocabulary is open:
8
- *
9
- * - `ComponentRegistryService` keys `componentType:preset[:category]`, where
10
- * `FrontendComponentType` is a CLOSED enum the engine owns. Exactly one
11
- * component answers a key, resolution is synchronous, and a missing
12
- * registration is a startup refusal.
13
- * - This registry keys `capability:providerRef`. The capability half is
14
- * closed too (`ProviderCapability` is the built-in set since #502 removed
15
- * module augmentation), but the PROVIDER half is not engine-owned at all:
16
- * refs arrive from engine modules, generated packages and application
17
- * packages, discovered per deployment. SEVERAL providers may answer one
18
- * capability, the component arrives asynchronously, and none of it is
19
- * required for the app to mount.
20
- *
21
- * Forcing provider components through `FrontendComponentType` would mean an
22
- * engine enum member per capability and a preset per provider, and would make "which component
23
- * answers this key" ambiguous in a registry whose whole contract is that it is
24
- * not. (This paragraph used to justify the split by calling `ProviderCapability`
25
- * OPEN; that stopped being true with #502, and the split stands on the reasons
26
- * above.)
27
- *
28
- * It also keeps the blast radius honest. `ComponentRegistryService` has sixteen
29
- * consumers across four packages (re-measured 2026-09-06; the plan's figure of
30
- * eleven predates several of them), most of them outside this slice's territory.
31
- * A sibling registry touches none of them.
32
- *
33
- * ## Several providers, and no silent winner
34
- *
35
- * `listProviders` returns every provider offering a component for a capability,
36
- * in registration order, and nothing here picks one. That is deliberate: the
37
- * defect being fixed is that resolution WAS first-match, so a Drive picker and
38
- * a Dropbox picker could not coexist and the winner depended on map order. A
39
- * surface with two providers has a choice to present; a registry that answered
40
- * it would be making a product decision in a lookup table.
41
- */
42
- import { collectDeclaredProviderScripts, loadProviderScripts, } from '@wildo-ai/external-connectors-public/app';
43
- import { describeCaughtError } from '@wildo-ai/saas-models';
44
- /** Why a provider component could not be registered or loaded. */
45
- export var ProviderComponentDiagnosticKind;
46
- (function (ProviderComponentDiagnosticKind) {
47
- /**
48
- * A second registration arrived for one capability AND provider. The first is
49
- * kept: a duplicate is a wiring mistake, and swapping the live component
50
- * under a mounted surface would be worse than ignoring it.
51
- */
52
- ProviderComponentDiagnosticKind["DUPLICATE_REGISTRATION"] = "DUPLICATE_REGISTRATION";
53
- /** The loader threw or rejected. That provider's component is unavailable; others are not affected. */
54
- ProviderComponentDiagnosticKind["LOAD_FAILED"] = "LOAD_FAILED";
55
- /**
56
- * The loader resolved something that is not a component. Almost always a
57
- * loader returning a MODULE NAMESPACE — `() => import('./Picker.js')` — where it
58
- * should return the component itself.
59
- */
60
- ProviderComponentDiagnosticKind["LOADED_VALUE_IS_NOT_A_COMPONENT"] = "LOADED_VALUE_IS_NOT_A_COMPONENT";
61
- /**
62
- * A live provider DECLARES a component for a capability and nothing supplies
63
- * its loader — neither the module (`components[cap].load`) nor the facet
64
- * library (`contributeProviderComponentLoaders`). The declaration is DATA a
65
- * reviewer can read; without code behind it the chooser would offer a picker
66
- * that cannot open. Not registered, and reported once at startup.
67
- */
68
- ProviderComponentDiagnosticKind["DECLARED_WITHOUT_LOADER"] = "DECLARED_WITHOUT_LOADER";
69
- /**
70
- * BOTH the module and the facet library supplied a loader for one
71
- * `capability:providerRef`. The module's wins — it is the provider's own
72
- * word — and the collision is reported, because the engine never authors both
73
- * and two loaders for one declaration is the map-order ambiguity #380 removed.
74
- */
75
- ProviderComponentDiagnosticKind["LOADER_SUPPLIED_TWICE"] = "LOADER_SUPPLIED_TWICE";
76
- /**
77
- * A `<script>` the declaring provider needs did not load — a network failure,
78
- * a Content-Security-Policy refusal, or an integrity mismatch. The component
79
- * resolves `null`, and that answer is CACHED exactly like `LOAD_FAILED`: the
80
- * failed element stays in the document and is not retried this session (a
81
- * vendor script can fail after partially executing, and a second copy could
82
- * initialise over the first), so a chooser re-rendering must not re-ask. A
83
- * component whose vendor global is absent is not usable, and handing it back
84
- * would only move the failure into its own mount ("The Google API script has
85
- * not loaded"), where nothing can name the provider's declaration as the cause.
86
- */
87
- ProviderComponentDiagnosticKind["SCRIPT_LOAD_FAILED"] = "SCRIPT_LOAD_FAILED";
88
- })(ProviderComponentDiagnosticKind || (ProviderComponentDiagnosticKind = {}));
89
- /**
90
- * The default script loader: the shared `loadProviderScripts` against the live
91
- * `document`, read at CALL time rather than at registry construction. No
92
- * `typeof document` guard: this package is pure-frontend (engine rule), and a
93
- * host with no DOM injects its own `loadScripts`.
2
+ * The APPLICATION's half of the provider-component registry.
3
+ *
4
+ * The registry itself — keyed `capability:providerRef`, consent-gated, script-before-component,
5
+ * browser-only — lives in `@wildo-ai/external-connectors-public` since #1703, because the website
6
+ * and the documentation site have to build the same registry from the same `components`
7
+ * declaration and neither may import this package. Read its module header
8
+ * (`createProviderComponentRegistry`) for why it is a sibling of `ComponentRegistryService` and why
9
+ * it never picks a provider.
10
+ *
11
+ * What stays here is what only the application has:
12
+ *
13
+ * - the component TYPE the application renders (`ProviderComponent`), which fills the shared
14
+ * registry's type parameter;
15
+ * - the application's facet-library door, `contributeProviderComponentLoaders`, through which
16
+ * `presets-components` supplies loaders for engine-shipped components (#394). It is module-level
17
+ * state on purpose: `registerDefaultPresets` runs before `startApplication` builds the registry,
18
+ * the same ordering `ComponentRegistryService.register` relies on. The website and the
19
+ * documentation site take the same contributions as an explicit input instead, because their
20
+ * wiring has a single construction site that can carry it.
94
21
  */
95
- const loadProviderScriptsIntoDocument = (scripts) => loadProviderScripts(scripts, document);
96
- function isModuleNamespace(value) {
97
- return (typeof value === 'object'
98
- && value !== null
99
- && value[Symbol.toStringTag] === 'Module');
100
- }
22
+ import { indexProviderComponentLoaderContributions } from '@wildo-ai/external-connectors-public/app';
23
+ let contributedLoaders = new Map();
101
24
  /**
102
- * A React component is a function, or an object for `memo` / `forwardRef` /
103
- * `lazy`. Anything else — a namespace, a string, a plain data object — cannot
104
- * be rendered, and finding out at render time means a blank surface with a
105
- * stack trace pointing at React rather than at the provider.
106
- */
107
- function looksLikeComponent(value) {
108
- return typeof value === 'function' || (typeof value === 'object' && value !== null);
109
- }
110
- export function createProviderComponentRegistry(input) {
111
- const raise = (diagnostic) => {
112
- input?.onDiagnostic?.(diagnostic);
113
- };
114
- const loaders = new Map();
115
- const scriptsByKey = new Map();
116
- const loadScripts = input?.loadScripts ?? loadProviderScriptsIntoDocument;
117
- const descriptors = new Map();
118
- const byCapability = new Map();
119
- const loaded = new Map();
120
- const keyOf = (capability, providerRef) => `${capability}:${providerRef}`;
121
- for (const registration of input?.registrations ?? []) {
122
- const key = keyOf(registration.capability, registration.providerRef);
123
- if (loaders.has(key)) {
124
- raise({
125
- kind: ProviderComponentDiagnosticKind.DUPLICATE_REGISTRATION,
126
- capability: registration.capability,
127
- providerRef: registration.providerRef,
128
- message: `Provider "${registration.providerRef}" registered a component for "${registration.capability}" `
129
- + 'more than once. The first registration is kept.',
130
- });
131
- continue;
132
- }
133
- loaders.set(key, registration.load);
134
- if (registration.scripts !== undefined && registration.scripts.length > 0) {
135
- scriptsByKey.set(key, registration.scripts);
136
- }
137
- descriptors.set(key, registration.descriptor);
138
- const providers = byCapability.get(registration.capability) ?? [];
139
- providers.push(registration.providerRef);
140
- byCapability.set(registration.capability, providers);
141
- }
142
- return {
143
- listProviders(capability) {
144
- return byCapability.get(capability) ?? [];
145
- },
146
- has(capability, providerRef) {
147
- return loaders.has(keyOf(capability, providerRef));
148
- },
149
- describe(capability, providerRef) {
150
- return descriptors.get(keyOf(capability, providerRef));
151
- },
152
- resolve(capability, providerRef) {
153
- const key = keyOf(capability, providerRef);
154
- const cached = loaded.get(key);
155
- if (cached !== undefined)
156
- return cached;
157
- const load = loaders.get(key);
158
- if (load === undefined)
159
- return Promise.resolve(null);
160
- const declaredScripts = scriptsByKey.get(key) ?? [];
161
- const pending = (async () => {
162
- // Both halves start together: the picker chunk and the vendor loader are
163
- // independent downloads, and serialising them would make every first
164
- // open wait for their SUM instead of the slower of the two.
165
- //
166
- // Each half is started through `Promise.resolve().then(...)` so a loader
167
- // that throws SYNCHRONOUSLY is still a reported failure rather than an
168
- // exception escaping `resolve`, and a script loader that breaks its
169
- // never-rejects contract is still a SCRIPT_LOAD_FAILED rather than an
170
- // unhandled rejection in a render path.
171
- const scriptsToLoad = declaredScripts.map((declaration) => ({ providerRef, declaration }));
172
- const [componentResult, scriptOutcome] = await Promise.all([
173
- Promise.resolve().then(load).then((value) => ({ ok: true, value }), (cause) => ({ ok: false, cause })),
174
- scriptsToLoad.length === 0
175
- ? Promise.resolve(undefined)
176
- : Promise.resolve().then(() => loadScripts(scriptsToLoad)).catch((cause) => ({
177
- loaded: [],
178
- failed: scriptsToLoad.map(({ declaration }) => ({
179
- providerRef,
180
- src: declaration.src,
181
- message: `The script loader failed before reporting an outcome: ${describeCaughtError(cause)}`,
182
- })),
183
- })),
184
- ]);
185
- // Reported independently so a first open that fails on BOTH halves names
186
- // both causes, rather than making the second one visible only after the
187
- // first is fixed.
188
- for (const failure of scriptOutcome?.failed ?? []) {
189
- raise({
190
- kind: ProviderComponentDiagnosticKind.SCRIPT_LOAD_FAILED,
191
- capability,
192
- providerRef,
193
- message: `Provider "${providerRef}" cannot offer its "${capability}" component: a script it declares did not load. `
194
- + failure.message,
195
- });
196
- }
197
- if (componentResult.ok === false) {
198
- raise({
199
- kind: ProviderComponentDiagnosticKind.LOAD_FAILED,
200
- capability,
201
- providerRef,
202
- message: `Provider "${providerRef}" failed to load its "${capability}" component.`,
203
- cause: componentResult.cause,
204
- });
205
- return null;
206
- }
207
- if ((scriptOutcome?.failed.length ?? 0) > 0)
208
- return null;
209
- const value = componentResult.value;
210
- if (isModuleNamespace(value)) {
211
- raise({
212
- kind: ProviderComponentDiagnosticKind.LOADED_VALUE_IS_NOT_A_COMPONENT,
213
- capability,
214
- providerRef,
215
- message: `Provider "${providerRef}" returned a MODULE for its "${capability}" component instead of the `
216
- + "component itself. Write `async () => (await import('./Picker.js')).Picker` rather than "
217
- + "`() => import('./Picker.js')`.",
218
- });
219
- return null;
220
- }
221
- if (!looksLikeComponent(value)) {
222
- raise({
223
- kind: ProviderComponentDiagnosticKind.LOADED_VALUE_IS_NOT_A_COMPONENT,
224
- capability,
225
- providerRef,
226
- message: `Provider "${providerRef}" returned a ${typeof value} for its "${capability}" component. A React `
227
- + 'component is a function, or an object for memo / forwardRef / lazy.',
228
- });
229
- return null;
230
- }
231
- return value;
232
- })();
233
- // Cached even when it resolves to null: a loader — or a script — that failed
234
- // once must not be retried on every render of a chooser that lists it.
235
- loaded.set(key, pending);
236
- return pending;
237
- },
238
- };
239
- }
240
- const contributedLoaders = new Map();
241
- const loaderKeyOf = (capability, providerRef) => `${capability}:${providerRef}`;
242
- /**
243
- * Registers loaders for provider components a facet library ships. Module-level
244
- * and idempotent per key, like `ComponentRegistryService.register`: the app
245
- * calls the library's registration entry once at startup, and a second
246
- * contribution for one key replaces the first rather than duplicating it —
25
+ * Registers loaders for provider components a facet library ships. Module-level and idempotent per
26
+ * key, like `ComponentRegistryService.register`: the app calls the library's registration entry once
27
+ * at startup, and a second contribution for one key replaces the first rather than duplicating it —
247
28
  * the library is one author, and the last thing it said is what it means.
248
29
  *
249
- * A contribution for a provider the DATA channel does not declare live is
250
- * SILENT, by the same rule as code without data in `hydrateFrontendProviderModules`:
251
- * a bundle legitimately ships a picker an environment leaves off.
30
+ * A contribution for a provider the DATA channel does not declare live is SILENT, by the same rule
31
+ * as code without data in `hydrateFrontendProviderModules`: a bundle legitimately ships a picker an
32
+ * environment leaves off.
252
33
  */
253
34
  export function contributeProviderComponentLoaders(loaders) {
254
- for (const loader of loaders) {
255
- contributedLoaders.set(loaderKeyOf(loader.capability, loader.providerRef), loader);
256
- }
35
+ contributedLoaders = indexProviderComponentLoaderContributions([...contributedLoaders.values(), ...loaders]);
257
36
  }
258
37
  /** Every contributed loader, keyed `capability:providerRef`. Read at registry construction. */
259
38
  export function listContributedProviderComponentLoaders() {
@@ -261,83 +40,6 @@ export function listContributedProviderComponentLoaders() {
261
40
  }
262
41
  /** Tests only: forget every contributed loader. */
263
42
  export function _clearContributedProviderComponentLoaders() {
264
- contributedLoaders.clear();
265
- }
266
- /**
267
- * Turns the live provider modules into registrations, joining each declared
268
- * component to its loader — from the module when it carries one, else from
269
- * the facet library's contributions.
270
- *
271
- * Order follows the registry's iteration order, which is the order the service
272
- * declared its providers — so `listProviders` is stable across reloads and a
273
- * surface that shows a chooser does not reorder itself between renders.
274
- *
275
- * A declaration nothing can load is NOT registered: a chooser must offer only
276
- * what can render. It is reported through `onDiagnostic` instead, once, at
277
- * startup — which is the moment somebody can still fix it.
278
- */
279
- export function collectProviderComponentRegistrations(modules, input) {
280
- const registrations = [];
281
- const contributed = input?.contributedLoaders ?? listContributedProviderComponentLoaders();
282
- for (const module of modules) {
283
- for (const [capability, declaration] of Object.entries(module.components ?? {})) {
284
- const providerRef = module.metadata.ref;
285
- const supplied = contributed.get(loaderKeyOf(capability, providerRef));
286
- if (declaration.load !== undefined && supplied !== undefined) {
287
- input?.onDiagnostic?.({
288
- kind: ProviderComponentDiagnosticKind.LOADER_SUPPLIED_TWICE,
289
- capability,
290
- providerRef,
291
- message: `Provider "${providerRef}" carries its own loader for "${capability}" AND the facet library contributed `
292
- + "one. The module's is used; remove one of the two.",
293
- });
294
- }
295
- const load = declaration.load ?? supplied?.load;
296
- if (load === undefined) {
297
- input?.onDiagnostic?.({
298
- kind: ProviderComponentDiagnosticKind.DECLARED_WITHOUT_LOADER,
299
- capability,
300
- providerRef,
301
- message: `Provider "${providerRef}" declares a "${capability}" component and nothing supplies its loader — `
302
- + 'neither the module nor the facet library. It is not offered. An engine-shipped component is '
303
- + 'registered by the facet library (presets-components for the app); a provider package supplies '
304
- + '`components[capability].load`.',
305
- });
306
- continue;
307
- }
308
- registrations.push({
309
- capability: capability,
310
- providerRef,
311
- load,
312
- // Only the declared half, never the whole declaration: `load` is already
313
- // carried beside it, and a registration holding the same function twice
314
- // is two places for one fact to go stale.
315
- descriptor: { selectionDelivery: declaration.selectionDelivery },
316
- // The PROVIDER's scripts, not the component's: a module declares scripts
317
- // once, and the component is the first of its code to run on this surface
318
- // — so it is what they load with.
319
- ...(module.scripts !== undefined && module.scripts.length > 0 ? { scripts: module.scripts } : {}),
320
- });
321
- }
322
- }
323
- return registrations;
324
- }
325
- /**
326
- * The scripts a surface must load at STARTUP: those declared by live providers that
327
- * contribute NO registered component.
328
- *
329
- * A provider's scripts load when its code first runs on the surface. A provider with a
330
- * registered component has that moment — the registry loads its scripts when the
331
- * component is first resolved, so no page pays for a picker's vendor loader nobody
332
- * opened. A provider without one never will, so its scripts load at startup, the same
333
- * population rule SDK activation uses. A provider that DECLARES a component nothing
334
- * can load is not registered and therefore counts as contributing none: its scripts
335
- * still load, since whatever else the provider does may need them.
336
- */
337
- export function collectProviderScriptsWithoutComponents(modules, registrations) {
338
- const providersWithComponents = new Set();
339
- for (const registration of registrations)
340
- providersWithComponents.add(registration.providerRef);
341
- return collectDeclaredProviderScripts([...modules].filter((module) => !providersWithComponents.has(module.metadata.ref)));
43
+ contributedLoaders = new Map();
342
44
  }
343
45
  //# sourceMappingURL=provider-component-registry.frontend.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider-component-registry.frontend.service.js","sourceRoot":"","sources":["../../../../../src/core/components-registry/provider-component-registry.frontend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Components contributed by PROVIDERS, keyed by the capability each fills.\n *\n * ## Why this is a sibling of `ComponentRegistryService` and not an extension\n *\n * The two answer different questions, and the difference is in the KEY, the\n * cardinality and the lifecycle — not in whether a vocabulary is open:\n *\n * - `ComponentRegistryService` keys `componentType:preset[:category]`, where\n * `FrontendComponentType` is a CLOSED enum the engine owns. Exactly one\n * component answers a key, resolution is synchronous, and a missing\n * registration is a startup refusal.\n * - This registry keys `capability:providerRef`. The capability half is\n * closed too (`ProviderCapability` is the built-in set since #502 removed\n * module augmentation), but the PROVIDER half is not engine-owned at all:\n * refs arrive from engine modules, generated packages and application\n * packages, discovered per deployment. SEVERAL providers may answer one\n * capability, the component arrives asynchronously, and none of it is\n * required for the app to mount.\n *\n * Forcing provider components through `FrontendComponentType` would mean an\n * engine enum member per capability and a preset per provider, and would make \"which component\n * answers this key\" ambiguous in a registry whose whole contract is that it is\n * not. (This paragraph used to justify the split by calling `ProviderCapability`\n * OPEN; that stopped being true with #502, and the split stands on the reasons\n * above.)\n *\n * It also keeps the blast radius honest. `ComponentRegistryService` has sixteen\n * consumers across four packages (re-measured 2026-09-06; the plan's figure of\n * eleven predates several of them), most of them outside this slice's territory.\n * A sibling registry touches none of them.\n *\n * ## Several providers, and no silent winner\n *\n * `listProviders` returns every provider offering a component for a capability,\n * in registration order, and nothing here picks one. That is deliberate: the\n * defect being fixed is that resolution WAS first-match, so a Drive picker and\n * a Dropbox picker could not coexist and the winner depended on map order. A\n * surface with two providers has a choice to present; a registry that answered\n * it would be making a product decision in a lookup table.\n */\n\nimport type React from 'react';\nimport type { ProviderCapability } from '@wildo-ai/saas-models';\nimport type {\n ProviderFrontendComponentDescriptor,\n ProviderFrontendScriptDeclaration,\n} from '@wildo-ai/saas-models/public-runtime';\nimport {\n collectDeclaredProviderScripts,\n loadProviderScripts,\n type DeclaredProviderScript,\n type ProviderScriptLoadOutcome,\n} from '@wildo-ai/external-connectors-public/app';\n\nimport { describeCaughtError } from '@wildo-ai/saas-models';\n/** A loader as a provider module declares it: on demand, returning the component. */\nexport type ProviderComponentLoader = () => Promise<unknown>;\n\n/** Why a provider component could not be registered or loaded. */\nexport enum ProviderComponentDiagnosticKind {\n /**\n * A second registration arrived for one capability AND provider. The first is\n * kept: a duplicate is a wiring mistake, and swapping the live component\n * under a mounted surface would be worse than ignoring it.\n */\n DUPLICATE_REGISTRATION = 'DUPLICATE_REGISTRATION',\n /** The loader threw or rejected. That provider's component is unavailable; others are not affected. */\n LOAD_FAILED = 'LOAD_FAILED',\n /**\n * The loader resolved something that is not a component. Almost always a\n * loader returning a MODULE NAMESPACE — `() => import('./Picker')` — where it\n * should return the component itself.\n */\n LOADED_VALUE_IS_NOT_A_COMPONENT = 'LOADED_VALUE_IS_NOT_A_COMPONENT',\n /**\n * A live provider DECLARES a component for a capability and nothing supplies\n * its loader — neither the module (`components[cap].load`) nor the facet\n * library (`contributeProviderComponentLoaders`). The declaration is DATA a\n * reviewer can read; without code behind it the chooser would offer a picker\n * that cannot open. Not registered, and reported once at startup.\n */\n DECLARED_WITHOUT_LOADER = 'DECLARED_WITHOUT_LOADER',\n /**\n * BOTH the module and the facet library supplied a loader for one\n * `capability:providerRef`. The module's wins — it is the provider's own\n * word — and the collision is reported, because the engine never authors both\n * and two loaders for one declaration is the map-order ambiguity #380 removed.\n */\n LOADER_SUPPLIED_TWICE = 'LOADER_SUPPLIED_TWICE',\n /**\n * A `<script>` the declaring provider needs did not load — a network failure,\n * a Content-Security-Policy refusal, or an integrity mismatch. The component\n * resolves `null`, and that answer is CACHED exactly like `LOAD_FAILED`: the\n * failed element stays in the document and is not retried this session (a\n * vendor script can fail after partially executing, and a second copy could\n * initialise over the first), so a chooser re-rendering must not re-ask. A\n * component whose vendor global is absent is not usable, and handing it back\n * would only move the failure into its own mount (\"The Google API script has\n * not loaded\"), where nothing can name the provider's declaration as the cause.\n */\n SCRIPT_LOAD_FAILED = 'SCRIPT_LOAD_FAILED',\n}\n\nexport interface ProviderComponentDiagnostic {\n readonly kind: ProviderComponentDiagnosticKind;\n readonly capability: string;\n readonly providerRef: string;\n readonly message: string;\n readonly cause?: unknown;\n}\n\nexport interface ProviderComponentRegistration {\n readonly capability: ProviderCapability;\n readonly providerRef: string;\n readonly load: ProviderComponentLoader;\n /**\n * What the provider DECLARED about this component — today, what a selection\n * from it contains. Kept beside the loader rather than looked up from the\n * DATA entry at the use site, because a surface needs it BEFORE it decides to\n * load anything, and because the two would then be two sources for one fact.\n */\n readonly descriptor: ProviderFrontendComponentDescriptor;\n /**\n * The third-party `<script>` tags the DECLARING PROVIDER needs (its module's\n * `scripts`), loaded before the component is handed back. Carried on the\n * registration because a provider's scripts load when its code first runs on\n * this surface — with its component, when it contributes one — so no page pays\n * for a vendor loader nobody opened. Absent means the component depends on no\n * script.\n */\n readonly scripts?: ReadonlyArray<ProviderFrontendScriptDeclaration>;\n}\n\n/**\n * Loads a provider's declared scripts and resolves once each has executed or\n * failed. Never rejects: failures come back in the outcome.\n */\nexport type ProviderComponentScriptLoader = (\n scripts: ReadonlyArray<DeclaredProviderScript>,\n) => Promise<ProviderScriptLoadOutcome>;\n\n/**\n * The default script loader: the shared `loadProviderScripts` against the live\n * `document`, read at CALL time rather than at registry construction. No\n * `typeof document` guard: this package is pure-frontend (engine rule), and a\n * host with no DOM injects its own `loadScripts`.\n */\nconst loadProviderScriptsIntoDocument: ProviderComponentScriptLoader = (scripts) => loadProviderScripts(scripts, document);\n\n/** A component type this registry will hand back once loaded. */\nexport type ProviderComponent = React.ComponentType<never>;\n\nexport interface ProviderComponentRegistry {\n /**\n * Every provider offering a component for this capability, in registration\n * order. Synchronous ON PURPOSE: a surface has to render its chooser before\n * any component is loaded, and awaiting here would make an empty frame.\n */\n listProviders(capability: ProviderCapability): ReadonlyArray<string>;\n /** Whether this exact provider offers a component for this capability. */\n has(capability: ProviderCapability, providerRef: string): boolean;\n /**\n * What the provider declared about its component, without loading it —\n * `undefined` when this provider offers none for this capability.\n *\n * Synchronous and separate from `resolve` on purpose: the framework routes a\n * selection according to what was DECLARED, and a routing decision that had to\n * await a download would mean downloading a picker to find out whether the\n * surface can use it.\n */\n describe(capability: ProviderCapability, providerRef: string): ProviderFrontendComponentDescriptor | undefined;\n /**\n * Loads one provider's component AND the scripts its provider declares, in\n * parallel, and hands the component back only once both are present — a\n * component is usable only once what it depends on is. The loader runs at most\n * once per pair — a chooser that mounts and unmounts must not re-download a\n * picker — and a failure of either half is reported and returns `null` rather\n * than throwing into a render.\n */\n resolve(capability: ProviderCapability, providerRef: string): Promise<ProviderComponent | null>;\n}\n\nfunction isModuleNamespace(value: unknown): boolean {\n return (\n typeof value === 'object'\n && value !== null\n && (value as { [Symbol.toStringTag]?: unknown })[Symbol.toStringTag] === 'Module'\n );\n}\n\n/**\n * A React component is a function, or an object for `memo` / `forwardRef` /\n * `lazy`. Anything else — a namespace, a string, a plain data object — cannot\n * be rendered, and finding out at render time means a blank surface with a\n * stack trace pointing at React rather than at the provider.\n */\nfunction looksLikeComponent(value: unknown): value is ProviderComponent {\n return typeof value === 'function' || (typeof value === 'object' && value !== null);\n}\n\nexport function createProviderComponentRegistry(input?: {\n readonly registrations?: Iterable<ProviderComponentRegistration>;\n readonly onDiagnostic?: (diagnostic: ProviderComponentDiagnostic) => void;\n /**\n * How declared scripts are loaded. Defaults to the shared injector on the live\n * `document`; injectable so a test can settle a script without a network and a\n * non-DOM host can say what loading means for it.\n */\n readonly loadScripts?: ProviderComponentScriptLoader;\n}): ProviderComponentRegistry {\n const raise = (diagnostic: ProviderComponentDiagnostic): void => {\n input?.onDiagnostic?.(diagnostic);\n };\n const loaders = new Map<string, ProviderComponentLoader>();\n const scriptsByKey = new Map<string, ReadonlyArray<ProviderFrontendScriptDeclaration>>();\n const loadScripts = input?.loadScripts ?? loadProviderScriptsIntoDocument;\n const descriptors = new Map<string, ProviderFrontendComponentDescriptor>();\n const byCapability = new Map<string, string[]>();\n const loaded = new Map<string, Promise<ProviderComponent | null>>();\n const keyOf = (capability: string, providerRef: string): string => `${capability}:${providerRef}`;\n\n for (const registration of input?.registrations ?? []) {\n const key = keyOf(registration.capability, registration.providerRef);\n if (loaders.has(key)) {\n raise({\n kind: ProviderComponentDiagnosticKind.DUPLICATE_REGISTRATION,\n capability: registration.capability,\n providerRef: registration.providerRef,\n message:\n `Provider \"${registration.providerRef}\" registered a component for \"${registration.capability}\" `\n + 'more than once. The first registration is kept.',\n });\n continue;\n }\n\n loaders.set(key, registration.load);\n if (registration.scripts !== undefined && registration.scripts.length > 0) {\n scriptsByKey.set(key, registration.scripts);\n }\n descriptors.set(key, registration.descriptor);\n const providers = byCapability.get(registration.capability) ?? [];\n providers.push(registration.providerRef);\n byCapability.set(registration.capability, providers);\n }\n\n return {\n listProviders(capability) {\n return byCapability.get(capability) ?? [];\n },\n\n has(capability, providerRef) {\n return loaders.has(keyOf(capability, providerRef));\n },\n\n describe(capability, providerRef) {\n return descriptors.get(keyOf(capability, providerRef));\n },\n\n resolve(capability, providerRef) {\n const key = keyOf(capability, providerRef);\n const cached = loaded.get(key);\n if (cached !== undefined) return cached;\n\n const load = loaders.get(key);\n if (load === undefined) return Promise.resolve(null);\n\n const declaredScripts = scriptsByKey.get(key) ?? [];\n\n const pending = (async (): Promise<ProviderComponent | null> => {\n // Both halves start together: the picker chunk and the vendor loader are\n // independent downloads, and serialising them would make every first\n // open wait for their SUM instead of the slower of the two.\n //\n // Each half is started through `Promise.resolve().then(...)` so a loader\n // that throws SYNCHRONOUSLY is still a reported failure rather than an\n // exception escaping `resolve`, and a script loader that breaks its\n // never-rejects contract is still a SCRIPT_LOAD_FAILED rather than an\n // unhandled rejection in a render path.\n const scriptsToLoad: ReadonlyArray<DeclaredProviderScript> = declaredScripts.map((declaration) => ({ providerRef, declaration }));\n const [componentResult, scriptOutcome] = await Promise.all([\n Promise.resolve().then(load).then(\n (value): { readonly ok: true; readonly value: unknown } => ({ ok: true, value }),\n (cause: unknown): { readonly ok: false; readonly cause: unknown } => ({ ok: false, cause }),\n ),\n scriptsToLoad.length === 0\n ? Promise.resolve<ProviderScriptLoadOutcome | undefined>(undefined)\n : Promise.resolve().then(() => loadScripts(scriptsToLoad)).catch((cause: unknown): ProviderScriptLoadOutcome => ({\n loaded: [],\n failed: scriptsToLoad.map(({ declaration }) => ({\n providerRef,\n src: declaration.src,\n message: `The script loader failed before reporting an outcome: ${describeCaughtError(cause)}`,\n })),\n })),\n ]);\n\n // Reported independently so a first open that fails on BOTH halves names\n // both causes, rather than making the second one visible only after the\n // first is fixed.\n for (const failure of scriptOutcome?.failed ?? []) {\n raise({\n kind: ProviderComponentDiagnosticKind.SCRIPT_LOAD_FAILED,\n capability,\n providerRef,\n message:\n `Provider \"${providerRef}\" cannot offer its \"${capability}\" component: a script it declares did not load. `\n + failure.message,\n });\n }\n\n if (componentResult.ok === false) {\n raise({\n kind: ProviderComponentDiagnosticKind.LOAD_FAILED,\n capability,\n providerRef,\n message: `Provider \"${providerRef}\" failed to load its \"${capability}\" component.`,\n cause: componentResult.cause,\n });\n return null;\n }\n\n if ((scriptOutcome?.failed.length ?? 0) > 0) return null;\n\n const value = componentResult.value;\n\n if (isModuleNamespace(value)) {\n raise({\n kind: ProviderComponentDiagnosticKind.LOADED_VALUE_IS_NOT_A_COMPONENT,\n capability,\n providerRef,\n message:\n `Provider \"${providerRef}\" returned a MODULE for its \"${capability}\" component instead of the `\n + \"component itself. Write `async () => (await import('./Picker')).Picker` rather than \"\n + \"`() => import('./Picker')`.\",\n });\n return null;\n }\n\n if (!looksLikeComponent(value)) {\n raise({\n kind: ProviderComponentDiagnosticKind.LOADED_VALUE_IS_NOT_A_COMPONENT,\n capability,\n providerRef,\n message:\n `Provider \"${providerRef}\" returned a ${typeof value} for its \"${capability}\" component. A React `\n + 'component is a function, or an object for memo / forwardRef / lazy.',\n });\n return null;\n }\n\n return value;\n })();\n\n // Cached even when it resolves to null: a loader — or a script — that failed\n // once must not be retried on every render of a chooser that lists it.\n loaded.set(key, pending);\n return pending;\n },\n };\n}\n\n/** The shape this derivation needs off a hydrated provider module. */\ninterface ComponentBearingProviderModule {\n metadata: { ref: string };\n scripts?: ReadonlyArray<ProviderFrontendScriptDeclaration>;\n components?: Readonly<Record<string, ProviderFrontendComponentDescriptor & { load?: ProviderComponentLoader }>>;\n}\n\n/**\n * A loader the FACET LIBRARY supplies for a component a provider module\n * declares — the second of the two doors, and the one every engine-shipped\n * component uses (#394).\n *\n * The provider module, in `@wildo-ai/external-connectors-public`, declares the\n * DATA half (`components[cap].selectionDelivery`) and cannot name a loader that\n * reaches a React component: that package is deliberately renderer-free, and it\n * sits BELOW the component libraries in the layering, so a dynamic import from\n * it would close a package cycle. The library that owns the component\n * (`presets-components` for the app facet) contributes the loader here instead,\n * from the same place it registers its presets. A provider PACKAGE that ships\n * its own component still uses `components[cap].load` — both doors exist, the\n * engine authors exactly one per declaration, and a collision is reported.\n */\nexport interface ProviderComponentLoaderContribution {\n readonly capability: ProviderCapability;\n readonly providerRef: string;\n readonly load: ProviderComponentLoader;\n}\n\nconst contributedLoaders = new Map<string, ProviderComponentLoaderContribution>();\nconst loaderKeyOf = (capability: string, providerRef: string): string => `${capability}:${providerRef}`;\n\n/**\n * Registers loaders for provider components a facet library ships. Module-level\n * and idempotent per key, like `ComponentRegistryService.register`: the app\n * calls the library's registration entry once at startup, and a second\n * contribution for one key replaces the first rather than duplicating it —\n * the library is one author, and the last thing it said is what it means.\n *\n * A contribution for a provider the DATA channel does not declare live is\n * SILENT, by the same rule as code without data in `hydrateFrontendProviderModules`:\n * a bundle legitimately ships a picker an environment leaves off.\n */\nexport function contributeProviderComponentLoaders(loaders: Iterable<ProviderComponentLoaderContribution>): void {\n for (const loader of loaders) {\n contributedLoaders.set(loaderKeyOf(loader.capability, loader.providerRef), loader);\n }\n}\n\n/** Every contributed loader, keyed `capability:providerRef`. Read at registry construction. */\nexport function listContributedProviderComponentLoaders(): ReadonlyMap<string, ProviderComponentLoaderContribution> {\n return contributedLoaders;\n}\n\n/** Tests only: forget every contributed loader. */\nexport function _clearContributedProviderComponentLoaders(): void {\n contributedLoaders.clear();\n}\n\n/**\n * Turns the live provider modules into registrations, joining each declared\n * component to its loader — from the module when it carries one, else from\n * the facet library's contributions.\n *\n * Order follows the registry's iteration order, which is the order the service\n * declared its providers — so `listProviders` is stable across reloads and a\n * surface that shows a chooser does not reorder itself between renders.\n *\n * A declaration nothing can load is NOT registered: a chooser must offer only\n * what can render. It is reported through `onDiagnostic` instead, once, at\n * startup — which is the moment somebody can still fix it.\n */\nexport function collectProviderComponentRegistrations(\n modules: Iterable<ComponentBearingProviderModule>,\n input?: {\n readonly contributedLoaders?: ReadonlyMap<string, ProviderComponentLoaderContribution>;\n readonly onDiagnostic?: (diagnostic: ProviderComponentDiagnostic) => void;\n },\n): ProviderComponentRegistration[] {\n const registrations: ProviderComponentRegistration[] = [];\n const contributed = input?.contributedLoaders ?? listContributedProviderComponentLoaders();\n\n for (const module of modules) {\n for (const [capability, declaration] of Object.entries(module.components ?? {})) {\n const providerRef = module.metadata.ref;\n const supplied = contributed.get(loaderKeyOf(capability, providerRef));\n\n if (declaration.load !== undefined && supplied !== undefined) {\n input?.onDiagnostic?.({\n kind: ProviderComponentDiagnosticKind.LOADER_SUPPLIED_TWICE,\n capability,\n providerRef,\n message:\n `Provider \"${providerRef}\" carries its own loader for \"${capability}\" AND the facet library contributed `\n + \"one. The module's is used; remove one of the two.\",\n });\n }\n\n const load = declaration.load ?? supplied?.load;\n if (load === undefined) {\n input?.onDiagnostic?.({\n kind: ProviderComponentDiagnosticKind.DECLARED_WITHOUT_LOADER,\n capability,\n providerRef,\n message:\n `Provider \"${providerRef}\" declares a \"${capability}\" component and nothing supplies its loader — `\n + 'neither the module nor the facet library. It is not offered. An engine-shipped component is '\n + 'registered by the facet library (presets-components for the app); a provider package supplies '\n + '`components[capability].load`.',\n });\n continue;\n }\n\n registrations.push({\n capability: capability as ProviderCapability,\n providerRef,\n load,\n // Only the declared half, never the whole declaration: `load` is already\n // carried beside it, and a registration holding the same function twice\n // is two places for one fact to go stale.\n descriptor: { selectionDelivery: declaration.selectionDelivery },\n // The PROVIDER's scripts, not the component's: a module declares scripts\n // once, and the component is the first of its code to run on this surface\n // — so it is what they load with.\n ...(module.scripts !== undefined && module.scripts.length > 0 ? { scripts: module.scripts } : {}),\n });\n }\n }\n\n return registrations;\n}\n\n/**\n * The scripts a surface must load at STARTUP: those declared by live providers that\n * contribute NO registered component.\n *\n * A provider's scripts load when its code first runs on the surface. A provider with a\n * registered component has that moment — the registry loads its scripts when the\n * component is first resolved, so no page pays for a picker's vendor loader nobody\n * opened. A provider without one never will, so its scripts load at startup, the same\n * population rule SDK activation uses. A provider that DECLARES a component nothing\n * can load is not registered and therefore counts as contributing none: its scripts\n * still load, since whatever else the provider does may need them.\n */\nexport function collectProviderScriptsWithoutComponents(\n modules: Iterable<ComponentBearingProviderModule>,\n registrations: Iterable<ProviderComponentRegistration>,\n): ReadonlyArray<DeclaredProviderScript> {\n const providersWithComponents = new Set<string>();\n for (const registration of registrations) providersWithComponents.add(registration.providerRef);\n return collectDeclaredProviderScripts(\n [...modules].filter((module) => !providersWithComponents.has(module.metadata.ref)),\n );\n}\n"]}
1
+ {"version":3,"file":"provider-component-registry.frontend.service.js","sourceRoot":"","sources":["../../../../../src/core/components-registry/provider-component-registry.frontend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH,OAAO,EAAE,yCAAyC,EAAE,MAAM,0CAA0C,CAAC;AAQrG,IAAI,kBAAkB,GAA6D,IAAI,GAAG,EAAE,CAAC;AAE7F;;;;;;;;;GASG;AACH,MAAM,UAAU,kCAAkC,CAAC,OAAsD;IACvG,kBAAkB,GAAG,yCAAyC,CAAC,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;AAC/G,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,uCAAuC;IACrD,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,yCAAyC;IACvD,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;AACjC,CAAC","sourcesContent":["/**\n * The APPLICATION's half of the provider-component registry.\n *\n * The registry itself — keyed `capability:providerRef`, consent-gated, script-before-component,\n * browser-only — lives in `@wildo-ai/external-connectors-public` since #1703, because the website\n * and the documentation site have to build the same registry from the same `components`\n * declaration and neither may import this package. Read its module header\n * (`createProviderComponentRegistry`) for why it is a sibling of `ComponentRegistryService` and why\n * it never picks a provider.\n *\n * What stays here is what only the application has:\n *\n * - the component TYPE the application renders (`ProviderComponent`), which fills the shared\n * registry's type parameter;\n * - the application's facet-library door, `contributeProviderComponentLoaders`, through which\n * `presets-components` supplies loaders for engine-shipped components (#394). It is module-level\n * state on purpose: `registerDefaultPresets` runs before `startApplication` builds the registry,\n * the same ordering `ComponentRegistryService.register` relies on. The website and the\n * documentation site take the same contributions as an explicit input instead, because their\n * wiring has a single construction site that can carry it.\n */\n\nimport type React from 'react';\nimport type {\n ProviderComponentLoaderContribution,\n ProviderComponentRegistry,\n} from '@wildo-ai/external-connectors-public/app';\nimport { indexProviderComponentLoaderContributions } from '@wildo-ai/external-connectors-public/app';\n\n/** A component type the application's registry hands back once loaded. */\nexport type ProviderComponent = React.ComponentType<never>;\n\n/** The application's provider-component registry: the shared registry, holding React components. */\nexport type AppProviderComponentRegistry = ProviderComponentRegistry<ProviderComponent>;\n\nlet contributedLoaders: ReadonlyMap<string, ProviderComponentLoaderContribution> = new Map();\n\n/**\n * Registers loaders for provider components a facet library ships. Module-level and idempotent per\n * key, like `ComponentRegistryService.register`: the app calls the library's registration entry once\n * at startup, and a second contribution for one key replaces the first rather than duplicating it —\n * the library is one author, and the last thing it said is what it means.\n *\n * A contribution for a provider the DATA channel does not declare live is SILENT, by the same rule\n * as code without data in `hydrateFrontendProviderModules`: a bundle legitimately ships a picker an\n * environment leaves off.\n */\nexport function contributeProviderComponentLoaders(loaders: Iterable<ProviderComponentLoaderContribution>): void {\n contributedLoaders = indexProviderComponentLoaderContributions([...contributedLoaders.values(), ...loaders]);\n}\n\n/** Every contributed loader, keyed `capability:providerRef`. Read at registry construction. */\nexport function listContributedProviderComponentLoaders(): ReadonlyMap<string, ProviderComponentLoaderContribution> {\n return contributedLoaders;\n}\n\n/** Tests only: forget every contributed loader. */\nexport function _clearContributedProviderComponentLoaders(): void {\n contributedLoaders = new Map();\n}\n"]}
@@ -23,6 +23,7 @@
23
23
  */
24
24
  import type { ProviderCapability } from '@wildo-ai/saas-models';
25
25
  import type { FileStorageAccepted } from '@wildo-ai/saas-models/public-runtime';
26
+ import { type ProviderComponentLoadState } from '@wildo-ai/external-connectors-public/app';
26
27
  import type { ProviderComponent } from './provider-component-registry.frontend.service';
27
28
  export interface ProviderComponentChoice {
28
29
  readonly providerRef: string;
@@ -48,36 +49,25 @@ export interface ProviderComponentChoice {
48
49
  * render.
49
50
  */
50
51
  export declare function useProviderComponentChoices(capability: ProviderCapability): ReadonlyArray<ProviderComponentChoice>;
51
- /** Why a provider component is not on screen yet. */
52
- export declare enum ProviderComponentStatus {
53
- /** No provider was chosen, or none offers a component for this capability. */
54
- NONE = "NONE",
55
- /** The component, or a script its provider declares, is still downloading. */
56
- LOADING = "LOADING",
57
- /**
58
- * The component is loaded AND every `<script>` its provider declares has
59
- * executed — so a picker that reads a vendor global on mount finds it. Never
60
- * READY on the component alone.
61
- */
62
- READY = "READY",
63
- /**
64
- * The loader failed, returned something unrenderable, or a script the provider
65
- * declares did not load. The registry has already reported why; a surface
66
- * should fall back rather than retry, because the registry will not run a
67
- * failed loader — or re-inject a failed script — again.
68
- */
69
- UNAVAILABLE = "UNAVAILABLE"
70
- }
71
- export interface ProviderComponentState {
72
- readonly status: ProviderComponentStatus;
73
- readonly Component: ProviderComponent | null;
74
- }
52
+ /**
53
+ * What `useProviderComponent` returns: the shared load state (#1703), holding the application's
54
+ * component type. The status vocabulary — `ProviderComponentStatus` — is the ONE the website and the
55
+ * documentation site use too, exported from `@wildo-ai/external-connectors-public/app`.
56
+ */
57
+ export type ProviderComponentState = ProviderComponentLoadState<ProviderComponent>;
75
58
  /**
76
59
  * Loads one provider's component for a capability.
77
60
  *
78
- * Pass `undefined` for the ref while nothing is chosen — the hook does not
79
- * choose, and a surface with several providers must not load all of them
80
- * speculatively.
61
+ * Pass `undefined` for the ref while nothing is chosen — the hook does not choose, and a surface with
62
+ * several providers must not load all of them speculatively.
63
+ *
64
+ * The decision itself (consent first, then load, then READY / UNAVAILABLE, and a cancelled answer
65
+ * never overwriting a later choice) is `startProviderComponentLoad`, shared with the website and the
66
+ * documentation site so the three surfaces cannot come to disagree about it. This hook supplies the
67
+ * application's two inputs: the registry built at startup, and the signed-in person's grant.
68
+ * `ProviderComponentStatus.CONSENT_REQUIRED` means NOTHING of the provider was downloaded; a surface
69
+ * renders a consent-required state there, never a blank, and granting reloads it without a re-mount,
70
+ * because the hook re-evaluates when the grant changes.
81
71
  */
82
72
  export declare function useProviderComponent(capability: ProviderCapability, providerRef: string | undefined): ProviderComponentState;
83
73
  //# sourceMappingURL=useProviderComponent.frontend.hooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useProviderComponent.frontend.hooks.d.ts","sourceRoot":"","sources":["../../../../../src/core/components-registry/useProviderComponent.frontend.hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAGhF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAExF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,kFAAkF;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC;CAC5C;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,kBAAkB,GAC7B,aAAa,CAAC,uBAAuB,CAAC,CAexC;AAED,qDAAqD;AACrD,oBAAY,uBAAuB;IACjC,8EAA8E;IAC9E,IAAI,SAAS;IACb,8EAA8E;IAC9E,OAAO,YAAY;IACnB;;;;OAIG;IACH,KAAK,UAAU;IACf;;;;;OAKG;IACH,WAAW,gBAAgB;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC9C;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,kBAAkB,EAC9B,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,sBAAsB,CAiCxB"}
1
+ {"version":3,"file":"useProviderComponent.frontend.hooks.d.ts","sourceRoot":"","sources":["../../../../../src/core/components-registry/useProviderComponent.frontend.hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,0CAA0C,CAAC;AAIlD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAExF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,kFAAkF;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC;CAC5C;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,kBAAkB,GAC7B,aAAa,CAAC,uBAAuB,CAAC,CAexC;AAED;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;AAEnF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,kBAAkB,EAC9B,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,sBAAsB,CAuBxB"}
@@ -22,8 +22,10 @@
22
22
  * translation invisible.
23
23
  */
24
24
  import { useEffect, useState } from 'react';
25
+ import { idleProviderComponentLoadState, startProviderComponentLoad, } from '@wildo-ai/external-connectors-public/app';
25
26
  import { buildProviderDisplayNameLabelKey } from '@wildo-ai/saas-models/public-runtime';
26
27
  import { useApplication } from '../../core/runtime/useApplication.js';
28
+ import { useGrantedConsentPurposes } from '../../core/security/useGrantedConsentPurposes.js';
27
29
  /**
28
30
  * The providers that are BOTH live for this service and carry a component for
29
31
  * this capability.
@@ -47,60 +49,38 @@ export function useProviderComponentChoices(capability) {
47
49
  };
48
50
  });
49
51
  }
50
- /** Why a provider component is not on screen yet. */
51
- export var ProviderComponentStatus;
52
- (function (ProviderComponentStatus) {
53
- /** No provider was chosen, or none offers a component for this capability. */
54
- ProviderComponentStatus["NONE"] = "NONE";
55
- /** The component, or a script its provider declares, is still downloading. */
56
- ProviderComponentStatus["LOADING"] = "LOADING";
57
- /**
58
- * The component is loaded AND every `<script>` its provider declares has
59
- * executed — so a picker that reads a vendor global on mount finds it. Never
60
- * READY on the component alone.
61
- */
62
- ProviderComponentStatus["READY"] = "READY";
63
- /**
64
- * The loader failed, returned something unrenderable, or a script the provider
65
- * declares did not load. The registry has already reported why; a surface
66
- * should fall back rather than retry, because the registry will not run a
67
- * failed loader — or re-inject a failed script — again.
68
- */
69
- ProviderComponentStatus["UNAVAILABLE"] = "UNAVAILABLE";
70
- })(ProviderComponentStatus || (ProviderComponentStatus = {}));
71
52
  /**
72
53
  * Loads one provider's component for a capability.
73
54
  *
74
- * Pass `undefined` for the ref while nothing is chosen — the hook does not
75
- * choose, and a surface with several providers must not load all of them
76
- * speculatively.
55
+ * Pass `undefined` for the ref while nothing is chosen — the hook does not choose, and a surface with
56
+ * several providers must not load all of them speculatively.
57
+ *
58
+ * The decision itself (consent first, then load, then READY / UNAVAILABLE, and a cancelled answer
59
+ * never overwriting a later choice) is `startProviderComponentLoad`, shared with the website and the
60
+ * documentation site so the three surfaces cannot come to disagree about it. This hook supplies the
61
+ * application's two inputs: the registry built at startup, and the signed-in person's grant.
62
+ * `ProviderComponentStatus.CONSENT_REQUIRED` means NOTHING of the provider was downloaded; a surface
63
+ * renders a consent-required state there, never a blank, and granting reloads it without a re-mount,
64
+ * because the hook re-evaluates when the grant changes.
77
65
  */
78
66
  export function useProviderComponent(capability, providerRef) {
79
67
  const { providerComponentRegistry } = useApplication();
80
- const [state, setState] = useState({
81
- status: ProviderComponentStatus.NONE,
82
- Component: null,
83
- });
84
- useEffect(() => {
85
- if (providerComponentRegistry === undefined || providerRef === undefined) {
86
- setState({ status: ProviderComponentStatus.NONE, Component: null });
87
- return;
88
- }
89
- let current = true;
90
- setState({ status: ProviderComponentStatus.LOADING, Component: null });
91
- void providerComponentRegistry.resolve(capability, providerRef).then((Component) => {
92
- // A user can switch provider while one is still downloading. Without this
93
- // the slower answer would arrive last and replace the one they chose.
94
- if (!current)
95
- return;
96
- setState(Component === null
97
- ? { status: ProviderComponentStatus.UNAVAILABLE, Component: null }
98
- : { status: ProviderComponentStatus.READY, Component });
99
- });
100
- return () => {
101
- current = false;
102
- };
103
- }, [capability, providerRef, providerComponentRegistry]);
68
+ // The signed-in person's grant (#1702). Keyed by value below, so an unrelated preference change does not
69
+ // re-run the load.
70
+ const { granted } = useGrantedConsentPurposes();
71
+ const grantedKey = granted.join(',');
72
+ const [state, setState] = useState(() => idleProviderComponentLoadState());
73
+ useEffect(() => startProviderComponentLoad({
74
+ registry: providerComponentRegistry,
75
+ capability,
76
+ providerRef,
77
+ grantedConsentPurposes: granted,
78
+ onState: setState,
79
+ }),
80
+ // `granted` is read through `grantedKey`: its identity changes with every preferences object, its
81
+ // meaning only when the set changes.
82
+ // eslint-disable-next-line react-hooks/exhaustive-deps
83
+ [capability, providerRef, providerComponentRegistry, grantedKey]);
104
84
  return state;
105
85
  }
106
86
  //# sourceMappingURL=useProviderComponent.frontend.hooks.js.map