@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.
- package/dist/esm/components/actions/action-bar.d.ts +15 -0
- package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
- package/dist/esm/components/actions/action-bar.js +15 -0
- package/dist/esm/components/actions/action-bar.js.map +1 -1
- package/dist/esm/components/ai-elements/decision/approval.d.ts +97 -7
- package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
- package/dist/esm/components/app/AppLayout_AuthenticatedRoute.d.ts.map +1 -1
- package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js +8 -3
- package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js.map +1 -1
- package/dist/esm/components/auth/Auth_EnrollmentRequired.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_EnrollmentRequired.js +5 -1
- package/dist/esm/components/auth/Auth_EnrollmentRequired.js.map +1 -1
- package/dist/esm/components/auth/Auth_Main.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_Main.js +1 -4
- package/dist/esm/components/auth/Auth_Main.js.map +1 -1
- package/dist/esm/components/auth/Auth_Register.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_Register.js +1 -3
- package/dist/esm/components/auth/Auth_Register.js.map +1 -1
- package/dist/esm/components/auth/StepUpAuthDialog.d.ts +7 -0
- package/dist/esm/components/auth/StepUpAuthDialog.d.ts.map +1 -1
- package/dist/esm/components/auth/StepUpAuthDialog.js +13 -7
- package/dist/esm/components/auth/StepUpAuthDialog.js.map +1 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.d.ts.map +1 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.js +32 -33
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.js.map +1 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.d.ts.map +1 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.js +18 -20
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.js.map +1 -1
- package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.d.ts.map +1 -1
- package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.js +2 -3
- package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.js.map +1 -1
- package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.d.ts +13 -16
- package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.d.ts.map +1 -1
- package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.js +18 -15
- package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.js.map +1 -1
- package/dist/esm/components/billing/billing-invoice-history.js +2 -2
- package/dist/esm/components/billing/billing-invoice-history.js.map +1 -1
- package/dist/esm/components/billing/billing-portal-link.js +2 -2
- package/dist/esm/components/billing/billing-portal-link.js.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.d.ts +33 -1
- package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.js +34 -5
- package/dist/esm/components/billing/billing-pricing-table.js.map +1 -1
- package/dist/esm/components/billing/billing-subscription-status.js +2 -2
- package/dist/esm/components/billing/billing-subscription-status.js.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.d.ts +2 -0
- package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.js +1 -0
- package/dist/esm/components/billing/billing-usage-dashboard.js.map +1 -1
- package/dist/esm/components/data-display/DisplayField.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayField.js +15 -1
- package/dist/esm/components/data-display/DisplayField.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldArray.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldArray.js +11 -0
- package/dist/esm/components/data-display/DisplayFieldArray.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditable.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditable.js +2 -2
- package/dist/esm/components/data-display/DisplayFieldEditable.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts +12 -2
- package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditableArray.js +3 -2
- package/dist/esm/components/data-display/DisplayFieldEditableArray.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldReadOnly.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldReadOnly.js +2 -2
- package/dist/esm/components/data-display/DisplayFieldReadOnly.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.js +8 -2
- package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.js.map +1 -1
- package/dist/esm/components/data-display/DisplayValueDispatcher.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayValueDispatcher.js +18 -4
- package/dist/esm/components/data-display/DisplayValueDispatcher.js.map +1 -1
- package/dist/esm/components/data-display/ResourceAutomaticDisplayer.d.ts.map +1 -1
- package/dist/esm/components/data-display/ResourceAutomaticDisplayer.js +61 -3
- package/dist/esm/components/data-display/ResourceAutomaticDisplayer.js.map +1 -1
- package/dist/esm/components/data-display/ResourceSummaryDisplayer.d.ts +7 -5
- package/dist/esm/components/data-display/ResourceSummaryDisplayer.d.ts.map +1 -1
- package/dist/esm/components/data-display/ResourceSummaryDisplayer.js.map +1 -1
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts +11 -1
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts.map +1 -1
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js +36 -11
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js.map +1 -1
- package/dist/esm/components/data-display/display-field-resolved-props.d.ts +6 -0
- package/dist/esm/components/data-display/display-field-resolved-props.d.ts.map +1 -1
- package/dist/esm/components/data-display/display-field-resolved-props.js.map +1 -1
- package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.d.ts +23 -0
- package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.d.ts.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js +35 -0
- package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.d.ts +47 -0
- package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.d.ts.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.js +124 -0
- package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.js.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.d.ts +8 -0
- package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.d.ts.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.js +46 -0
- package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.js.map +1 -0
- package/dist/esm/components/feedback/resource-empty-state.d.ts +21 -8
- package/dist/esm/components/feedback/resource-empty-state.d.ts.map +1 -1
- package/dist/esm/components/feedback/resource-empty-state.js +56 -26
- package/dist/esm/components/feedback/resource-empty-state.js.map +1 -1
- package/dist/esm/components/flows-actors/approval.d.ts +29 -7
- package/dist/esm/components/flows-actors/approval.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/approval.js +231 -101
- package/dist/esm/components/flows-actors/approval.js.map +1 -1
- package/dist/esm/components/flows-actors/approval.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/approval.labels.js +57 -0
- package/dist/esm/components/flows-actors/approval.labels.js.map +1 -1
- package/dist/esm/components/flows-actors/system-catalog.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/system-catalog.js +4 -4
- package/dist/esm/components/flows-actors/system-catalog.js.map +1 -1
- package/dist/esm/components/flows-actors/system-catalog.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/system-catalog.labels.js +0 -5
- package/dist/esm/components/flows-actors/system-catalog.labels.js.map +1 -1
- package/dist/esm/components/form/Form.d.ts +2 -2
- package/dist/esm/components/form/Form.js +2 -2
- package/dist/esm/components/form/Form.js.map +1 -1
- package/dist/esm/components/form/automated/AutomatedArrayField.d.ts +28 -3
- package/dist/esm/components/form/automated/AutomatedArrayField.d.ts.map +1 -1
- package/dist/esm/components/form/automated/AutomatedArrayField.js +43 -14
- package/dist/esm/components/form/automated/AutomatedArrayField.js.map +1 -1
- package/dist/esm/components/form/automated/FormField.d.ts +3 -0
- package/dist/esm/components/form/automated/FormField.d.ts.map +1 -1
- package/dist/esm/components/form/automated/FormField.js +60 -21
- package/dist/esm/components/form/automated/FormField.js.map +1 -1
- package/dist/esm/components/form/automated/FormFieldArray.d.ts +6 -3
- package/dist/esm/components/form/automated/FormFieldArray.d.ts.map +1 -1
- package/dist/esm/components/form/automated/FormFieldArray.js +3 -2
- package/dist/esm/components/form/automated/FormFieldArray.js.map +1 -1
- package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts +5 -4
- package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts.map +1 -1
- package/dist/esm/components/form/automated/ResourceAutomatedForm.js +148 -55
- package/dist/esm/components/form/automated/ResourceAutomatedForm.js.map +1 -1
- package/dist/esm/components/form/automated/ResourceFormActionsContext.d.ts +30 -0
- package/dist/esm/components/form/automated/ResourceFormActionsContext.d.ts.map +1 -1
- package/dist/esm/components/form/automated/ResourceFormActionsContext.js +30 -1
- package/dist/esm/components/form/automated/ResourceFormActionsContext.js.map +1 -1
- package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.d.ts +79 -0
- package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.d.ts.map +1 -0
- package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.js +203 -0
- package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.js.map +1 -0
- package/dist/esm/components/form/automated/automated-form-submit.utils.d.ts +12 -0
- package/dist/esm/components/form/automated/automated-form-submit.utils.d.ts.map +1 -1
- package/dist/esm/components/form/automated/automated-form-submit.utils.js +11 -0
- package/dist/esm/components/form/automated/automated-form-submit.utils.js.map +1 -1
- package/dist/esm/components/form/chromes/FormFieldChrome.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/FormFieldChrome.js +2 -2
- package/dist/esm/components/form/chromes/FormFieldChrome.js.map +1 -1
- package/dist/esm/components/form/combobox.d.ts +7 -0
- package/dist/esm/components/form/combobox.d.ts.map +1 -1
- package/dist/esm/components/form/combobox.js.map +1 -1
- package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +1 -1
- package/dist/esm/components/form/controls/form-field-checkbox-group.js +13 -0
- package/dist/esm/components/form/controls/form-field-checkbox-group.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-address.d.ts +58 -0
- package/dist/esm/components/form/fields/form-field-address.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-address.js +34 -6
- package/dist/esm/components/form/fields/form-field-address.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-address.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-address.labels.js +60 -1
- package/dist/esm/components/form/fields/form-field-address.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.d.ts +0 -12
- package/dist/esm/components/form/fields/form-field-file.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.js +34 -13
- package/dist/esm/components/form/fields/form-field-file.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.labels.js +46 -0
- package/dist/esm/components/form/fields/form-field-file.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-string-organization-role.d.ts +73 -0
- package/dist/esm/components/form/fields/form-field-string-organization-role.d.ts.map +1 -0
- package/dist/esm/components/form/fields/form-field-string-organization-role.js +64 -0
- package/dist/esm/components/form/fields/form-field-string-organization-role.js.map +1 -0
- package/dist/esm/components/form/fields/form-field-string.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-string.js +8 -1
- package/dist/esm/components/form/fields/form-field-string.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-string.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-string.labels.js +4 -0
- package/dist/esm/components/form/fields/form-field-string.labels.js.map +1 -1
- package/dist/esm/components/form/validation-errors/FormErrorSummary.js +1 -1
- package/dist/esm/components/form/validation-errors/FormErrorSummary.js.map +1 -1
- package/dist/esm/components/form/validation-errors/resolver-error-nesting.d.ts +31 -0
- package/dist/esm/components/form/validation-errors/resolver-error-nesting.d.ts.map +1 -0
- package/dist/esm/components/form/validation-errors/resolver-error-nesting.js +81 -0
- package/dist/esm/components/form/validation-errors/resolver-error-nesting.js.map +1 -0
- package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.d.ts +14 -1
- package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.d.ts.map +1 -1
- package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.js +14 -0
- package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.js.map +1 -1
- package/dist/esm/components/form/validation-errors/zod-issue-resolver.d.ts +22 -0
- package/dist/esm/components/form/validation-errors/zod-issue-resolver.d.ts.map +1 -1
- package/dist/esm/components/form/validation-errors/zod-issue-resolver.js +1 -22
- package/dist/esm/components/form/validation-errors/zod-issue-resolver.js.map +1 -1
- package/dist/esm/components/layout/resizable.d.ts +11 -0
- package/dist/esm/components/layout/resizable.d.ts.map +1 -1
- package/dist/esm/components/layout/resizable.js.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.d.ts +11 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.js +15 -3
- package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.js.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.d.ts +2 -2
- package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.js.map +1 -1
- package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.d.ts +2 -2
- package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.js +2 -2
- package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.js.map +1 -1
- package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js +18 -20
- package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.js +7 -1
- package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useMenuBarBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useMenuBarBehavior.js +4 -1
- package/dist/esm/components/navigation/app-level/useMenuBarBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.js +18 -2
- package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useSidebarBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useSidebarBehavior.js +82 -10
- package/dist/esm/components/navigation/app-level/useSidebarBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useStatusBarBehavior.d.ts +2 -2
- package/dist/esm/components/navigation/app-level/useStatusBarBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useStatusBarBehavior.js.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js +8 -1
- package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts +8 -2
- package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionToolbar.js +6 -2
- package/dist/esm/components/resources/ResourceCollectionToolbar.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Breadcrumb.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js +31 -16
- package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.js +23 -8
- package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerNested.js +2 -2
- package/dist/esm/components/resources/ResourceLayout_ContainerNested.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Header.d.ts +13 -0
- package/dist/esm/components/resources/ResourceLayout_Header.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Header.js +55 -28
- package/dist/esm/components/resources/ResourceLayout_Header.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.js +41 -20
- package/dist/esm/components/resources/ResourceLayout_List.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.labels.js +1 -2
- package/dist/esm/components/resources/ResourceLayout_List.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Read.d.ts +9 -4
- package/dist/esm/components/resources/ResourceLayout_Read.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Read.js +30 -11
- package/dist/esm/components/resources/ResourceLayout_Read.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary.js +4 -2
- package/dist/esm/components/resources/ResourceLayout_ReadSummary.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.js +6 -2
- package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Search.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Search.js +30 -14
- package/dist/esm/components/resources/ResourceLayout_Search.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js +14 -198
- package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Update.d.ts +2 -2
- package/dist/esm/components/resources/ResourceLayout_Update.js +2 -2
- package/dist/esm/components/resources/ResourceLayout_Update.js.map +1 -1
- package/dist/esm/components/resources/ResourceListItemRenderer.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceListItemRenderer.js +69 -39
- package/dist/esm/components/resources/ResourceListItemRenderer.js.map +1 -1
- package/dist/esm/components/resources/ResourceOperationActionDropdown.d.ts +32 -0
- package/dist/esm/components/resources/ResourceOperationActionDropdown.d.ts.map +1 -0
- package/dist/esm/components/resources/ResourceOperationActionDropdown.js +130 -0
- package/dist/esm/components/resources/ResourceOperationActionDropdown.js.map +1 -0
- package/dist/esm/components/resources/collection-create-placement.utils.d.ts +32 -0
- package/dist/esm/components/resources/collection-create-placement.utils.d.ts.map +1 -0
- package/dist/esm/components/resources/collection-create-placement.utils.js +37 -0
- package/dist/esm/components/resources/collection-create-placement.utils.js.map +1 -0
- package/dist/esm/components/resources/embeds/RelatedResourcePreview.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/RelatedResourcePreview.js +5 -1
- package/dist/esm/components/resources/embeds/RelatedResourcePreview.js.map +1 -1
- package/dist/esm/components/resources/embeds/RelatedResourceSections.d.ts +8 -1
- package/dist/esm/components/resources/embeds/RelatedResourceSections.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/RelatedResourceSections.js +49 -2
- package/dist/esm/components/resources/embeds/RelatedResourceSections.js.map +1 -1
- package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts +22 -0
- package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/ResourceEmbeds.js +85 -2
- package/dist/esm/components/resources/embeds/ResourceEmbeds.js.map +1 -1
- package/dist/esm/components/resources/resourceLayout.utils.d.ts +14 -0
- package/dist/esm/components/resources/resourceLayout.utils.d.ts.map +1 -1
- package/dist/esm/components/resources/resourceLayout.utils.js +22 -0
- package/dist/esm/components/resources/resourceLayout.utils.js.map +1 -1
- package/dist/esm/components/resources/skeleton/ArrayField.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/ArrayField.js +3 -0
- package/dist/esm/components/resources/skeleton/ArrayField.js.map +1 -1
- package/dist/esm/components/resources/skeleton/FormLayout.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/FormLayout.js +33 -1
- package/dist/esm/components/resources/skeleton/FormLayout.js.map +1 -1
- package/dist/esm/components/resources/skeleton/ObjectScope.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/ObjectScope.js +3 -0
- package/dist/esm/components/resources/skeleton/ObjectScope.js.map +1 -1
- package/dist/esm/components/resources/skeleton/Section.d.ts +12 -0
- package/dist/esm/components/resources/skeleton/Section.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/Section.js +28 -2
- package/dist/esm/components/resources/skeleton/Section.js.map +1 -1
- package/dist/esm/components/resources/skeleton/SectionFieldsContext.d.ts +70 -0
- package/dist/esm/components/resources/skeleton/SectionFieldsContext.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/SectionFieldsContext.js +157 -1
- package/dist/esm/components/resources/skeleton/SectionFieldsContext.js.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardLayout.d.ts +6 -0
- package/dist/esm/components/resources/skeleton/WizardLayout.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardLayout.js +13 -2
- package/dist/esm/components/resources/skeleton/WizardLayout.js.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardStep.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardStep.js +2 -1
- package/dist/esm/components/resources/skeleton/WizardStep.js.map +1 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.js +61 -15
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.js.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.d.ts +24 -2
- package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.js +69 -1
- package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.js.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.js +18 -19
- package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.js.map +1 -1
- package/dist/esm/components/sections/ContentSectionContainer.d.ts.map +1 -1
- package/dist/esm/components/sections/ContentSectionContainer.js +5 -4
- package/dist/esm/components/sections/ContentSectionContainer.js.map +1 -1
- package/dist/esm/components/sections/stepper.d.ts +5 -0
- package/dist/esm/components/sections/stepper.d.ts.map +1 -1
- package/dist/esm/components/sections/stepper.js.map +1 -1
- package/dist/esm/components/sections/surface.d.ts.map +1 -1
- package/dist/esm/components/sections/surface.js +12 -3
- package/dist/esm/components/sections/surface.js.map +1 -1
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.d.ts +43 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.d.ts.map +1 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.js +129 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.js.map +1 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.d.ts +3 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.d.ts.map +1 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.js +34 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.js.map +1 -0
- package/dist/esm/components/settings/AppPage_AppearanceSettings.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_AppearanceSettings.js +9 -11
- package/dist/esm/components/settings/AppPage_AppearanceSettings.js.map +1 -1
- package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.js +3 -2
- package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.js.map +1 -1
- package/dist/esm/components/settings/AppPage_BillingSettings.d.ts +4 -2
- package/dist/esm/components/settings/AppPage_BillingSettings.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_BillingSettings.js +21 -3
- package/dist/esm/components/settings/AppPage_BillingSettings.js.map +1 -1
- package/dist/esm/components/settings/AppPage_BillingSettings.labels.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_BillingSettings.labels.js +5 -10
- package/dist/esm/components/settings/AppPage_BillingSettings.labels.js.map +1 -1
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts +58 -0
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js +243 -40
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js.map +1 -1
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js +67 -6
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js.map +1 -1
- package/dist/esm/components/settings/AppPage_InvitationsSettings.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_InvitationsSettings.js +19 -11
- package/dist/esm/components/settings/AppPage_InvitationsSettings.js.map +1 -1
- package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.js +4 -2
- package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.js.map +1 -1
- package/dist/esm/components/settings/SettingsHub.d.ts.map +1 -1
- package/dist/esm/components/settings/SettingsHub.js +3 -0
- package/dist/esm/components/settings/SettingsHub.js.map +1 -1
- package/dist/esm/components/settings/SettingsResourceOperationPanel.d.ts.map +1 -1
- package/dist/esm/components/settings/SettingsResourceOperationPanel.js +16 -1
- package/dist/esm/components/settings/SettingsResourceOperationPanel.js.map +1 -1
- package/dist/esm/components/settings/useOwnerProviderConnections.d.ts +59 -0
- package/dist/esm/components/settings/useOwnerProviderConnections.d.ts.map +1 -0
- package/dist/esm/components/settings/useOwnerProviderConnections.js +136 -0
- package/dist/esm/components/settings/useOwnerProviderConnections.js.map +1 -0
- package/dist/esm/components/views/chart-view/chart-view.utils.d.ts +5 -0
- package/dist/esm/components/views/chart-view/chart-view.utils.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/chart-view.utils.js +5 -0
- package/dist/esm/components/views/chart-view/chart-view.utils.js.map +1 -1
- package/dist/esm/components/views/chart-view/useResourceChartData.d.ts +50 -0
- package/dist/esm/components/views/chart-view/useResourceChartData.d.ts.map +1 -0
- package/dist/esm/components/views/chart-view/useResourceChartData.js +72 -0
- package/dist/esm/components/views/chart-view/useResourceChartData.js.map +1 -0
- package/dist/esm/components/views/composite-view/CompositeLayout.d.ts.map +1 -1
- package/dist/esm/components/views/composite-view/CompositeLayout.js +2 -1
- package/dist/esm/components/views/composite-view/CompositeLayout.js.map +1 -1
- package/dist/esm/core/app-shell/AppShellBuildingBlocks.d.ts +86 -0
- package/dist/esm/core/app-shell/AppShellBuildingBlocks.d.ts.map +1 -0
- package/dist/esm/core/app-shell/AppShellBuildingBlocks.js +187 -0
- package/dist/esm/core/app-shell/AppShellBuildingBlocks.js.map +1 -0
- package/dist/esm/core/app-shell/PortalContainerContext.d.ts +5 -2
- package/dist/esm/core/app-shell/PortalContainerContext.d.ts.map +1 -1
- package/dist/esm/core/app-shell/PortalContainerContext.js +5 -2
- package/dist/esm/core/app-shell/PortalContainerContext.js.map +1 -1
- package/dist/esm/core/app-shell/app-shell.schemas.d.ts +18 -9
- package/dist/esm/core/app-shell/app-shell.schemas.d.ts.map +1 -1
- package/dist/esm/core/app-shell/app-shell.schemas.js +1 -0
- package/dist/esm/core/app-shell/app-shell.schemas.js.map +1 -1
- package/dist/esm/core/app-shell/useAppShellLayout.d.ts +10 -0
- package/dist/esm/core/app-shell/useAppShellLayout.d.ts.map +1 -1
- package/dist/esm/core/app-shell/useAppShellLayout.js +28 -5
- package/dist/esm/core/app-shell/useAppShellLayout.js.map +1 -1
- package/dist/esm/core/app-shell/usePublicShellLayout.d.ts.map +1 -1
- package/dist/esm/core/app-shell/usePublicShellLayout.js +38 -0
- package/dist/esm/core/app-shell/usePublicShellLayout.js.map +1 -1
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts +15 -1
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js +47 -13
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js.map +1 -1
- package/dist/esm/core/billing/BillingContext.d.ts +25 -2
- package/dist/esm/core/billing/BillingContext.d.ts.map +1 -1
- package/dist/esm/core/billing/BillingContext.js +16 -25
- package/dist/esm/core/billing/BillingContext.js.map +1 -1
- package/dist/esm/core/billing/billing-provider-display.frontend.utils.d.ts +11 -3
- package/dist/esm/core/billing/billing-provider-display.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/billing/billing-provider-display.frontend.utils.js +14 -8
- package/dist/esm/core/billing/billing-provider-display.frontend.utils.js.map +1 -1
- package/dist/esm/core/billing/useBillingPlanChange.d.ts.map +1 -1
- package/dist/esm/core/billing/useBillingPlanChange.js +2 -0
- package/dist/esm/core/billing/useBillingPlanChange.js.map +1 -1
- package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.d.ts.map +1 -1
- package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.js +1 -0
- package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.js.map +1 -1
- package/dist/esm/core/components-registry/provider-component-registry.frontend.service.d.ts +29 -229
- package/dist/esm/core/components-registry/provider-component-registry.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/components-registry/provider-component-registry.frontend.service.js +29 -327
- package/dist/esm/core/components-registry/provider-component-registry.frontend.service.js.map +1 -1
- package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.d.ts +17 -27
- package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.d.ts.map +1 -1
- package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.js +28 -48
- package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.js.map +1 -1
- package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts +21 -11
- package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/app-configuration-frontend.schemas.js +4 -4
- package/dist/esm/core/config/app-configuration-frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/app-level-components.frontend.schemas.d.ts +17 -0
- package/dist/esm/core/config/app-level-components.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/app-level-components.frontend.schemas.js +17 -0
- package/dist/esm/core/config/app-level-components.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/chart-view.frontend.schemas.d.ts +10 -10
- package/dist/esm/core/config/engine-settings-destinations.d.ts.map +1 -1
- package/dist/esm/core/config/engine-settings-destinations.js +221 -6
- package/dist/esm/core/config/engine-settings-destinations.js.map +1 -1
- package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts +8 -0
- package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/launcher-items.frontend.schemas.js +1 -0
- package/dist/esm/core/config/launcher-items.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts +10 -1
- package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/settings-hub.frontend.schemas.js +9 -0
- package/dist/esm/core/config/settings-hub.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/verify-launcher-content.d.ts.map +1 -1
- package/dist/esm/core/config/verify-launcher-content.js +30 -19
- package/dist/esm/core/config/verify-launcher-content.js.map +1 -1
- package/dist/esm/core/errors/ErrorContext.d.ts.map +1 -1
- package/dist/esm/core/errors/ErrorContext.js +9 -1
- package/dist/esm/core/errors/ErrorContext.js.map +1 -1
- package/dist/esm/core/errors/GlobalErrorHandler.d.ts.map +1 -1
- package/dist/esm/core/errors/GlobalErrorHandler.js +5 -4
- package/dist/esm/core/errors/GlobalErrorHandler.js.map +1 -1
- package/dist/esm/core/errors/RouterErrorBoundary.js +1 -1
- package/dist/esm/core/errors/RouterErrorBoundary.js.map +1 -1
- package/dist/esm/core/errors/errors-builder.frontend.services.d.ts +2 -2
- package/dist/esm/core/errors/errors-builder.frontend.services.d.ts.map +1 -1
- package/dist/esm/core/errors/errors-builder.frontend.services.js +4 -4
- package/dist/esm/core/errors/errors-builder.frontend.services.js.map +1 -1
- package/dist/esm/core/errors/user-facing-error-message.frontend.utils.js +1 -1
- package/dist/esm/core/errors/user-facing-error-message.frontend.utils.js.map +1 -1
- package/dist/esm/core/events/NotificationContext.d.ts.map +1 -1
- package/dist/esm/core/events/NotificationContext.js +23 -5
- package/dist/esm/core/events/NotificationContext.js.map +1 -1
- package/dist/esm/core/events/events.frontend.schemas.d.ts +110 -43
- package/dist/esm/core/events/events.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/events/events.frontend.schemas.js +89 -15
- package/dist/esm/core/events/events.frontend.schemas.js.map +1 -1
- package/dist/esm/core/execution/useExecutionParticipationRMM.d.ts +2 -0
- package/dist/esm/core/execution/useExecutionParticipationRMM.d.ts.map +1 -1
- package/dist/esm/core/execution/useExecutionParticipationRMM.js +2 -1
- package/dist/esm/core/execution/useExecutionParticipationRMM.js.map +1 -1
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.d.ts +1 -1
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.d.ts.map +1 -1
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.js +5 -2
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.js.map +1 -1
- package/dist/esm/core/external-providers/ConsentBasedProviderSdks.d.ts +63 -0
- package/dist/esm/core/external-providers/ConsentBasedProviderSdks.d.ts.map +1 -0
- package/dist/esm/core/external-providers/ConsentBasedProviderSdks.js +131 -0
- package/dist/esm/core/external-providers/ConsentBasedProviderSdks.js.map +1 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.d.ts +61 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.d.ts.map +1 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.js +178 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.js.map +1 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupHost.d.ts +52 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupHost.d.ts.map +1 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupHost.js +144 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupHost.js.map +1 -0
- package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts +22 -1
- package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts.map +1 -1
- package/dist/esm/core/external-providers/ProviderFilePickerHost.js +23 -3
- package/dist/esm/core/external-providers/ProviderFilePickerHost.js.map +1 -1
- package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.d.ts +55 -0
- package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.js +65 -0
- package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.js.map +1 -0
- package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.d.ts +63 -0
- package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.d.ts.map +1 -0
- package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.js +100 -0
- package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.js.map +1 -0
- package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts +45 -7
- package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts.map +1 -1
- package/dist/esm/core/flows-actors/FlowsActorsContext.js +112 -28
- package/dist/esm/core/flows-actors/FlowsActorsContext.js.map +1 -1
- package/dist/esm/core/flows-actors/usePendingDecisions.d.ts +32 -0
- package/dist/esm/core/flows-actors/usePendingDecisions.d.ts.map +1 -0
- package/dist/esm/core/flows-actors/usePendingDecisions.js +91 -0
- package/dist/esm/core/flows-actors/usePendingDecisions.js.map +1 -0
- package/dist/esm/core/guidance/GuidanceRenderer.d.ts.map +1 -1
- package/dist/esm/core/guidance/GuidanceRenderer.js +3 -2
- package/dist/esm/core/guidance/GuidanceRenderer.js.map +1 -1
- package/dist/esm/core/i18n/I18nContext.d.ts +22 -8
- package/dist/esm/core/i18n/I18nContext.d.ts.map +1 -1
- package/dist/esm/core/i18n/I18nContext.js +21 -9
- package/dist/esm/core/i18n/I18nContext.js.map +1 -1
- package/dist/esm/core/i18n/component-label-resolution.utils.d.ts +5 -3
- package/dist/esm/core/i18n/component-label-resolution.utils.d.ts.map +1 -1
- package/dist/esm/core/i18n/component-label-resolution.utils.js +5 -3
- package/dist/esm/core/i18n/component-label-resolution.utils.js.map +1 -1
- package/dist/esm/core/i18n/useI18n.d.ts +2 -1
- package/dist/esm/core/i18n/useI18n.d.ts.map +1 -1
- package/dist/esm/core/i18n/useI18n.js +2 -1
- package/dist/esm/core/i18n/useI18n.js.map +1 -1
- package/dist/esm/core/loading/LoadingContext.d.ts.map +1 -1
- package/dist/esm/core/loading/LoadingContext.js +7 -1
- package/dist/esm/core/loading/LoadingContext.js.map +1 -1
- package/dist/esm/core/loading/LoadingGate.d.ts.map +1 -1
- package/dist/esm/core/loading/LoadingGate.js +19 -1
- package/dist/esm/core/loading/LoadingGate.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/AnalyticsContext.d.ts +15 -2
- package/dist/esm/core/monitoring/analytics/AnalyticsContext.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/AnalyticsContext.js +183 -20
- package/dist/esm/core/monitoring/analytics/AnalyticsContext.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.js +2 -2
- package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.d.ts +7 -15
- package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.js +8 -26
- package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.d.ts +12 -3
- package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.js +3 -2
- package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.d.ts +42 -0
- package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.js +89 -5
- package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.d.ts +2 -0
- package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.js +2 -0
- package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.js.map +1 -1
- package/dist/esm/core/navigation/NavigationContentAreas.d.ts +78 -0
- package/dist/esm/core/navigation/NavigationContentAreas.d.ts.map +1 -1
- package/dist/esm/core/navigation/NavigationContentAreas.js +264 -16
- package/dist/esm/core/navigation/NavigationContentAreas.js.map +1 -1
- package/dist/esm/core/navigation/NavigationContext.d.ts +8 -0
- package/dist/esm/core/navigation/NavigationContext.d.ts.map +1 -1
- package/dist/esm/core/navigation/NavigationContext.js +137 -30
- package/dist/esm/core/navigation/NavigationContext.js.map +1 -1
- package/dist/esm/core/navigation/launcher-resolution.d.ts +2 -0
- package/dist/esm/core/navigation/launcher-resolution.d.ts.map +1 -1
- package/dist/esm/core/navigation/launcher-resolution.js +1 -0
- package/dist/esm/core/navigation/launcher-resolution.js.map +1 -1
- package/dist/esm/core/navigation/navigation-cascade.d.ts +46 -0
- package/dist/esm/core/navigation/navigation-cascade.d.ts.map +1 -0
- package/dist/esm/core/navigation/navigation-cascade.js +222 -0
- package/dist/esm/core/navigation/navigation-cascade.js.map +1 -0
- package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.js +21 -2
- package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.js.map +1 -1
- package/dist/esm/core/navigation/navigation-controller-internals.d.ts +71 -0
- package/dist/esm/core/navigation/navigation-controller-internals.d.ts.map +1 -0
- package/dist/esm/core/navigation/navigation-controller-internals.js +84 -0
- package/dist/esm/core/navigation/navigation-controller-internals.js.map +1 -0
- package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts +86 -2
- package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation-policy-resolver.service.js +242 -124
- package/dist/esm/core/navigation/navigation-policy-resolver.service.js.map +1 -1
- package/dist/esm/core/navigation/navigation.schemas.d.ts +170 -8
- package/dist/esm/core/navigation/navigation.schemas.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation.schemas.js +121 -2
- package/dist/esm/core/navigation/navigation.schemas.js.map +1 -1
- package/dist/esm/core/navigation/navigation.utils.d.ts +102 -6
- package/dist/esm/core/navigation/navigation.utils.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation.utils.js +283 -34
- package/dist/esm/core/navigation/navigation.utils.js.map +1 -1
- package/dist/esm/core/navigation/useIsStackEntryActive.d.ts +0 -10
- package/dist/esm/core/navigation/useIsStackEntryActive.d.ts.map +0 -1
- package/dist/esm/core/navigation/useIsStackEntryActive.js.map +0 -1
- package/dist/esm/core/navigation/useNavigationController.d.ts +28 -157
- package/dist/esm/core/navigation/useNavigationController.d.ts.map +1 -1
- package/dist/esm/core/navigation/useNavigationController.js +211 -1189
- package/dist/esm/core/navigation/useNavigationController.js.map +1 -1
- package/dist/esm/core/navigation/useNavigationRouterSync.d.ts +174 -0
- package/dist/esm/core/navigation/useNavigationRouterSync.d.ts.map +1 -0
- package/dist/esm/core/navigation/useNavigationRouterSync.js +977 -0
- package/dist/esm/core/navigation/useNavigationRouterSync.js.map +1 -0
- package/dist/esm/core/navigation/useOverlayTitle.d.ts +13 -1
- package/dist/esm/core/navigation/useOverlayTitle.d.ts.map +1 -1
- package/dist/esm/core/navigation/useOverlayTitle.js +15 -10
- package/dist/esm/core/navigation/useOverlayTitle.js.map +1 -1
- package/dist/esm/core/navigation/useResponsiveZoneMigration.d.ts +43 -0
- package/dist/esm/core/navigation/useResponsiveZoneMigration.d.ts.map +1 -0
- package/dist/esm/core/navigation/useResponsiveZoneMigration.js +44 -0
- package/dist/esm/core/navigation/useResponsiveZoneMigration.js.map +1 -0
- package/dist/esm/core/navigation/zone-collapse-migration.d.ts +83 -0
- package/dist/esm/core/navigation/zone-collapse-migration.d.ts.map +1 -0
- package/dist/esm/core/navigation/zone-collapse-migration.js +116 -0
- package/dist/esm/core/navigation/zone-collapse-migration.js.map +1 -0
- package/dist/esm/core/navigation/zone-collapse.d.ts +51 -0
- package/dist/esm/core/navigation/zone-collapse.d.ts.map +1 -0
- package/dist/esm/core/navigation/zone-collapse.js +59 -0
- package/dist/esm/core/navigation/zone-collapse.js.map +1 -0
- package/dist/esm/core/navigation/zone-emphasis.d.ts +3 -0
- package/dist/esm/core/navigation/zone-emphasis.d.ts.map +1 -1
- package/dist/esm/core/navigation/zone-emphasis.js +26 -4
- package/dist/esm/core/navigation/zone-emphasis.js.map +1 -1
- package/dist/esm/core/navigation/zone-visible-entry.d.ts +22 -0
- package/dist/esm/core/navigation/zone-visible-entry.d.ts.map +1 -1
- package/dist/esm/core/navigation/zone-visible-entry.js +25 -0
- package/dist/esm/core/navigation/zone-visible-entry.js.map +1 -1
- package/dist/esm/core/requests/websockets/WebSocketContext.d.ts.map +1 -1
- package/dist/esm/core/requests/websockets/WebSocketContext.js +53 -18
- package/dist/esm/core/requests/websockets/WebSocketContext.js.map +1 -1
- package/dist/esm/core/requests/websockets/WebSocketEventBridge.d.ts.map +1 -1
- package/dist/esm/core/requests/websockets/WebSocketEventBridge.js +3 -1
- package/dist/esm/core/requests/websockets/WebSocketEventBridge.js.map +1 -1
- package/dist/esm/core/requests/websockets/useNotificationBadges.d.ts +22 -0
- package/dist/esm/core/requests/websockets/useNotificationBadges.d.ts.map +1 -1
- package/dist/esm/core/requests/websockets/useNotificationBadges.js +72 -3
- package/dist/esm/core/requests/websockets/useNotificationBadges.js.map +1 -1
- package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.d.ts +28 -0
- package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.d.ts.map +1 -0
- package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.js +86 -0
- package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.js.map +1 -0
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts +38 -3
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.js +57 -2
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.js.map +1 -1
- package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.js +4 -2
- package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.js.map +1 -1
- package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts +30 -1
- package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/requests/wildo-http-client.frontend.service.js +47 -4
- package/dist/esm/core/requests/wildo-http-client.frontend.service.js.map +1 -1
- package/dist/esm/core/resources/ResourceRegistryContext.d.ts.map +1 -1
- package/dist/esm/core/resources/ResourceRegistryContext.js +22 -1
- package/dist/esm/core/resources/ResourceRegistryContext.js.map +1 -1
- package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.js +1 -1
- package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/frontend-resource.utils.d.ts +22 -1
- package/dist/esm/core/resources/frontend-resource.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/frontend-resource.utils.js +25 -2
- package/dist/esm/core/resources/frontend-resource.utils.js.map +1 -1
- package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts +113 -13
- package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/operation-semantics.frontend.utils.js +173 -20
- package/dist/esm/core/resources/operation-semantics.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.d.ts +11 -0
- package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.js +7 -0
- package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.d.ts +3 -2
- package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.js +13 -5
- package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/resources-repository.frontend.service.d.ts +6 -0
- package/dist/esm/core/resources/resources-repository.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/resources/resources-repository.frontend.service.js +90 -1
- package/dist/esm/core/resources/resources-repository.frontend.service.js.map +1 -1
- package/dist/esm/core/resources/resources.frontend.schemas.d.ts +139 -16
- package/dist/esm/core/resources/resources.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/resources/resources.frontend.schemas.js +110 -11
- package/dist/esm/core/resources/resources.frontend.schemas.js.map +1 -1
- package/dist/esm/core/resources/rmm/ResourceMutationManager.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/ResourceMutationManager.js +3 -1
- package/dist/esm/core/resources/rmm/ResourceMutationManager.js.map +1 -1
- package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.d.ts +10 -0
- package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.js +8 -0
- package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.js.map +1 -1
- package/dist/esm/core/resources/rmm/useResourceRMM.d.ts +7 -0
- package/dist/esm/core/resources/rmm/useResourceRMM.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/useResourceRMM.js +9 -2
- package/dist/esm/core/resources/rmm/useResourceRMM.js.map +1 -1
- package/dist/esm/core/resources/useOperationDirectExecution.d.ts +59 -0
- package/dist/esm/core/resources/useOperationDirectExecution.d.ts.map +1 -0
- package/dist/esm/core/resources/useOperationDirectExecution.js +278 -0
- package/dist/esm/core/resources/useOperationDirectExecution.js.map +1 -0
- package/dist/esm/core/resources/useResourceOperationActions.d.ts +1 -1
- package/dist/esm/core/resources/useResourceOperationActions.d.ts.map +1 -1
- package/dist/esm/core/resources/useResourceOperationActions.js +69 -22
- package/dist/esm/core/resources/useResourceOperationActions.js.map +1 -1
- package/dist/esm/core/resources/useResourceOperationSurface.d.ts +8 -6
- package/dist/esm/core/resources/useResourceOperationSurface.d.ts.map +1 -1
- package/dist/esm/core/resources/useResourceOperationSurface.js +3 -2
- package/dist/esm/core/resources/useResourceOperationSurface.js.map +1 -1
- package/dist/esm/core/runtime/AppRouter.d.ts.map +1 -1
- package/dist/esm/core/runtime/AppRouter.js +23 -2
- package/dist/esm/core/runtime/AppRouter.js.map +1 -1
- package/dist/esm/core/runtime/ApplicationContext.shared.d.ts +4 -2
- package/dist/esm/core/runtime/ApplicationContext.shared.d.ts.map +1 -1
- package/dist/esm/core/runtime/ApplicationContext.shared.js.map +1 -1
- package/dist/esm/core/runtime/ApplicationMainContext.d.ts +12 -2
- package/dist/esm/core/runtime/ApplicationMainContext.d.ts.map +1 -1
- package/dist/esm/core/runtime/ApplicationMainContext.js +5 -2
- package/dist/esm/core/runtime/ApplicationMainContext.js.map +1 -1
- package/dist/esm/core/runtime/domain-module.frontend.definitions.d.ts +25 -1
- package/dist/esm/core/runtime/domain-module.frontend.definitions.d.ts.map +1 -1
- package/dist/esm/core/runtime/domain-module.frontend.definitions.js +37 -1
- package/dist/esm/core/runtime/domain-module.frontend.definitions.js.map +1 -1
- package/dist/esm/core/runtime/start-application.frontend.service.d.ts +21 -2
- package/dist/esm/core/runtime/start-application.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/runtime/start-application.frontend.service.js +51 -4
- package/dist/esm/core/runtime/start-application.frontend.service.js.map +1 -1
- package/dist/esm/core/security/AuthSessionContext.d.ts +11 -0
- package/dist/esm/core/security/AuthSessionContext.d.ts.map +1 -1
- package/dist/esm/core/security/AuthSessionContext.js +70 -22
- package/dist/esm/core/security/AuthSessionContext.js.map +1 -1
- package/dist/esm/core/security/StepUpAuthContext.d.ts.map +1 -1
- package/dist/esm/core/security/StepUpAuthContext.js +10 -2
- package/dist/esm/core/security/StepUpAuthContext.js.map +1 -1
- package/dist/esm/core/security/UserOrgsContext.d.ts.map +1 -1
- package/dist/esm/core/security/UserOrgsContext.js +72 -8
- package/dist/esm/core/security/UserOrgsContext.js.map +1 -1
- package/dist/esm/core/security/route-organization-access.frontend.utils.d.ts +7 -0
- package/dist/esm/core/security/route-organization-access.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/security/route-organization-access.frontend.utils.js +8 -2
- package/dist/esm/core/security/route-organization-access.frontend.utils.js.map +1 -1
- package/dist/esm/core/security/useGrantedConsentPurposes.d.ts +30 -0
- package/dist/esm/core/security/useGrantedConsentPurposes.d.ts.map +1 -0
- package/dist/esm/core/security/useGrantedConsentPurposes.js +38 -0
- package/dist/esm/core/security/useGrantedConsentPurposes.js.map +1 -0
- package/dist/esm/core/ui/UIContext.d.ts.map +1 -1
- package/dist/esm/core/ui/UIContext.js +10 -6
- package/dist/esm/core/ui/UIContext.js.map +1 -1
- package/dist/esm/core/ui/color-conversion.utils.d.ts +20 -0
- package/dist/esm/core/ui/color-conversion.utils.d.ts.map +1 -1
- package/dist/esm/core/ui/color-conversion.utils.js +39 -5
- package/dist/esm/core/ui/color-conversion.utils.js.map +1 -1
- package/dist/esm/core/ui/themes/default.theme.d.ts.map +1 -1
- package/dist/esm/core/ui/themes/default.theme.js +22 -2
- package/dist/esm/core/ui/themes/default.theme.js.map +1 -1
- package/dist/esm/core/ui/ui.frontend.schemas.d.ts +6 -6
- package/dist/esm/core/ui/ui.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/ui/ui.frontend.schemas.js +3 -3
- package/dist/esm/core/ui/ui.frontend.schemas.js.map +1 -1
- package/dist/esm/index.d.ts +10 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +19 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/testing/app-shell-placement-coverage.d.ts +43 -0
- package/dist/esm/testing/app-shell-placement-coverage.d.ts.map +1 -0
- package/dist/esm/testing/app-shell-placement-coverage.js +114 -0
- package/dist/esm/testing/app-shell-placement-coverage.js.map +1 -0
- package/dist/esm/testing/mock-builders.d.ts.map +1 -1
- package/dist/esm/testing/mock-builders.js +5 -0
- package/dist/esm/testing/mock-builders.js.map +1 -1
- package/dist/esm/testing.d.ts +1 -0
- package/dist/esm/testing.d.ts.map +1 -1
- package/dist/esm/testing.js +1 -0
- package/dist/esm/testing.js.map +1 -1
- package/package.json +9 -7
- package/dist/esm/core/navigation/useIsStackEntryActive.js +0 -15
- package/dist/tsconfig.build.tsbuildinfo +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceLayout_ContainerNested.js","sourceRoot":"","sources":["../../../../../src/components/resources/ResourceLayout_ContainerNested.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAEH,OAAc,EAAE,OAAO,EAAE,WAAW,EAA+B,MAAM,OAAO,CAAC;AAGjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wDAAwD,CAAC;AAC7F,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,gEAAgE,CAAC;AAC5G,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,4DAA4D,CAAC;AAC1H,OAAO,EAEL,0CAA0C,GAC3C,MAAM,uEAAuE,CAAC;AAC/E,OAAO,EAAE,mDAAmD,EAAE,MAAM,2EAA2E,CAAC;AAChJ,OAAO,EAAE,qBAAqB,EAAwB,8BAA8B,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzI,OAAO,EAAE,mBAAmB,EAAE,MAAM,8DAA8D,CAAC;AACnG,OAAO,EAAE,0BAA0B,EAAE,MAAM,wEAAwE,CAAC;AACpH,OAAO,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AAC/F,OAAO,EAAE,uBAAuB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AACnH,OAAO,EAEL,iCAAiC,GAClC,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6DAA6D,CAAC;AACtG,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAC/F,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAG1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iFAAiF,CAAC;AAC1H,OAAO,EAAc,eAAe,EAAE,qBAAqB,EAAsB,MAAM,qCAAqC,CAAC;AAE7H,OAAO,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6DAA6D,CAAC;AAEpG,OAAO,EACL,oCAAoC,GAErC,MAAM,gFAAgF,CAAC;AAmBxF;;;GAGG;AACH,SAAS,UAAU,CAAC,MAA2B;IAC7C,OAAO,MAAM,CAAC,UAAU,CAAC;AAC3B,CAAC;AAED,SAAS,6BAA6B,CAAC,IAA2B;IAChE,OAAO,IAAI,KAAK,WAAW,CAAC,WAAW,CAAC;AAC1C,CAAC;AAED,SAAS,sCAAsC,CAAC,OAA8B;IAC5E,MAAM,KAAK,GAAyC,EAAE,CAAC;IAEvD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAC9C,IAAI,6BAA6B,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YACvC,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7C,IACE,YAAY,EAAE,IAAI,KAAK,OAAO;eAC3B,YAAY,CAAC,WAAW,KAAK,WAAW,EAC3C,CAAC;YACD,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClC,SAAS;QACX,CAAC;QAED,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,OAAO;YACb,IAAI;YACJ,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,wEAAwE;AACxE,MAAM,2BAA2B,GAAG,IAAI,GAAG,EAAU,CAAC;AAEtD;;;;GAIG;AACH,SAAS,sBAAsB,CAAC,kBAA0B,EAAE,iBAAyB,EAAE,KAAc;IACnG,MAAM,OAAO,GAAG,GAAG,kBAAkB,KAAK,iBAAiB,EAAE,CAAC;IAC9D,IAAI,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,OAAO;IACT,CAAC;IACD,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzC,qBAAqB,CAAC,SAAS,EAAE,CAAC,IAAI,CACpC,uBAAuB,OAAO,uDAAuD;UACnF,GAAG,WAAW,gFAAgF;UAC9F,UAAU,mBAAmB,CAAC,KAAK,CAAC,EAAE,CACzC,CAAC;AACJ,CAAC;AAED,oGAAoG;AACpG,MAAM,mCAAmC,GAAG,IAAI,GAAG,EAAU,CAAC;AAE9D;;;;;;;GAOG;AACH,SAAS,kDAAkD,CACzD,kBAA0B,EAC1B,OAAgD;IAEhD,MAAM,OAAO,GAAG,GAAG,kBAAkB,KAAK,OAAO,CAAC,iBAAiB,EAAE,CAAC;IACtE,IAAI,mCAAmC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,OAAO;IACT,CAAC;IACD,mCAAmC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjD,qBAAqB,CAAC,SAAS,EAAE,CAAC,IAAI,CACpC,mCAAmC,OAAO,qCAAqC;UAC7E,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,8EAA8E;UACrH,kHAAkH;UAClH,0GAA0G,CAC7G,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,4CAA4C,GAAG,CAAC,EAC3D,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,UAAU,GACwC,EAA4B,EAAE;IAChF,MAAM,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC;IACzC,MAAM,EAAE,QAAQ,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAC3C,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAC3C,SAAS,EAAE,qBAAqB,CAAC,kCAAkC;QACnE,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAC;IACH,MAAM,EAAE,QAAQ,EAAE,GAAG,uBAAuB,EAAE,CAAC;IAC/C,MAAM,EAAE,iBAAiB,EAAE,GAAG,KAAK,EAAE,CAAC;IACtC,8EAA8E;IAC9E,2EAA2E;IAC3E,gDAAgD;IAChD,MAAM,4BAA4B,GAAG,+BAA+B,EAAE,CAAC;IAEvE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC7B,aAAa,YAAY,EAAE;QAC3B,cAAc,qBAAqB,CAAC,kCAAkC,EAAE;KACzE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,oCAAoC;IACpC,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,EAAE;QACxC,OAAO,QAAQ,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IAE7B,uFAAuF;IACvF,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,EAAE;QACtC,OAAO,oBAAoB,EAAE,qBAAqB;YAChD,CAAC,CAAC,8BAA8B,CAAC,oBAAoB,CAAC,qBAAqB,CAAC;YAC5E,CAAC,CAAC,EAAE,CAAC;IACT,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAE3B,yEAAyE;IACzE,MAAM,YAAY,GAAG,OAAO,CAAwB,GAAG,EAAE;QACvD,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE/C,MAAM,OAAO,GAA0B,EAAE,CAAC;QAE1C,KAAK,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;YACrC,MAAM,iBAAiB,GAAG,oCAAoC,CAAC;gBAC7D,kBAAkB,EAAE,YAAY;gBAChC,YAAY,EAAE,GAAG;gBACjB,UAAU;gBACV,QAAQ;gBACR,QAAQ,EAAE,iBAAiB;aAC5B,CAAC,CAAC;YACH,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,SAAS;YACX,CAAC;YAED,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,iBAAiB,CAAC;YAE9D,MAAM,WAAW,GAAG,QAAQ,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;YAEvE,IAAI,CAAC,WAAW;gBAAE,SAAS;YAE3B,0EAA0E;YAC1E,MAAM,eAAe,GAAG,iBAAiB,CAAC,UAAU,CAAC;YAErD,4EAA4E;YAC5E,4EAA4E;YAC5E,yEAAyE;YACzE,sEAAsE;YACtE,4EAA4E;YAC5E,0BAA0B;YAC1B,EAAE;YACF,2EAA2E;YAC3E,kFAAkF;YAClF,4EAA4E;YAC5E,wEAAwE;YACxE,uEAAuE;YACvE,6BAA6B;YAC7B,EAAE;YACF,sEAAsE;YACtE,yEAAyE;YACzE,IAAI,uBAA4F,CAAC;YACjG,IAAI,CAAC;gBACH,uBAAuB,GAAG,qBAAqB,CAAC,0BAA0B,CACxE,eAAe,EACf;oBACE,YAAY,EAAE,iBAAiB;oBAC/B,mBAAmB,EAAE,eAAe,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI;oBAC9F,0BAA0B,EAAE;wBAC1B,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC,eAAe;qBAClD;iBACF,EACD,QAAQ,CACT,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,sBAAsB,CAAC,YAAY,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;gBAC/D,SAAS;YACX,CAAC;YACD,MAAM,+BAA+B,GAAG,qBAAqB,CAAC,yBAAyB,CACrF,uBAAuB,CAAC,0BAA0B,EAClD,QAAQ,CACT,CAAC;YAEF,MAAM,gBAAgB,GAAG,eAAe;gBACtC,CAAC,CAAC,mDAAmD,CAAC;oBACpD,cAAc,EAAE,WAAW;oBAC3B,UAAU,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE;oBACxC,aAAa,EAAE,qBAAqB,CAAC,IAAI;oBACzC,QAAQ;oBACR,aAAa,EAAE,OAAO,CACpB,qBAAqB,CAAC,aAAa,CAAC,uBAAuB,CAAC,0BAA0B,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAC7G;oBACD,0BAA0B,EAAE,uBAAuB,CAAC,0BAA0B;oBAC9E,oBAAoB,EAAE,+BAA+B;iBACtD,CAAC;gBACF,CAAC,CAAC,uBAAuB,IAAI,+BAA+B;oBAC1D,CAAC,CAAC,iCAAiC,CAAC;wBAClC,UAAU,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE;wBACxC,YAAY,EAAE,uBAAuB;wBACrC,oBAAoB,EAAE,+BAA+B;qBACtD,CAAC;oBACF,CAAC,CAAC,SAAS,CAAC;YAChB,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,0EAA0E;gBAC1E,wEAAwE;gBACxE,uEAAuE;gBACvE,0EAA0E;gBAC1E,0EAA0E;gBAC1E,4DAA4D;gBAC5D,kDAAkD,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;gBACpF,SAAS;YACX,CAAC;YAED,MAAM,KAAK,GAAG,0BAA0B,CAAC;gBACvC,eAAe;gBACf,YAAY,EAAE,iBAAiB;gBAC/B,GAAG,EAAE,OAAO;aACb,CAAC,CAAC;YAEH,OAAO,CAAC,IAAI,CAAC;gBACX,GAAG,iBAAiB;gBACpB,KAAK;aACN,CAAC,CAAC;QACL,CAAC;QAED,4EAA4E;QAC5E,sEAAsE;QACtE,wEAAwE;QAExE,OAAO,OAAO,CAAC;QACf,gFAAgF;QAChF,8EAA8E;QAC9E,2EAA2E;QAC3E,0EAA0E;QAC1E,mBAAmB;IACrB,CAAC,EAAE,CAAC,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAElH,MAAM,eAAe,GAAG,OAAO,CAC7B,GAAG,EAAE,CAAC,sCAAsC,CAAC,YAAY,CAAC,EAC1D,CAAC,YAAY,CAAC,CACf,CAAC;IAEF,0GAA0G;IAC1G,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,MAAM,UAAU,GAAG,eAAe,CAAC,0BAA0B,EAAE,CAAC,YAAY,CAAC,CAAC;QAC9E,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QAClC,IAAI,OAAO,UAAU,KAAK,QAAQ;YAAE,OAAO,UAAU,CAAC;QACtD,OAAO,UAAU,CAAC,UAAU,CAAC;IAC/B,CAAC,EAAE,CAAC,eAAe,CAAC,0BAA0B,EAAE,YAAY,CAAC,CAAC,CAAC;IAE/D,MAAM,+BAA+B,GAAG,WAAW,CAAC,CAClD,MAA2B,EAC3B,SAAkD,EAClD,EAAE,CAAC,qBAAqB,CAAC,0BAA0B,CACnD,eAAe,EACf;QACE,YAAY,EAAE,MAAM,CAAC,iBAAiB;QACtC,mBAAmB,EAAE,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC;QAC1D,SAAS;QACT,0BAA0B,EAAE;YAC1B,qEAAqE;YACrE,wEAAwE;YACxE,iEAAiE;YACjE,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,eAAe;SACvC;KACF,EACD,QAAQ,CACT,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;IAE9C,MAAM,oCAAoC,GAAG,WAAW,CAAC,CAAC,MAA2B,EAAuD,EAAE;QAC5I,MAAM,mBAAmB,GAAG,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACtF,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,0BAA0B,CACzE,eAAe,EACf;YACE,YAAY,EAAE,MAAM,CAAC,iBAAiB;YACtC,mBAAmB,EAAE,qBAAqB,CAAC,IAAI;YAC/C,0BAA0B,EAAE;gBAC1B,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,eAAe;aACvC;SACF,EACD,QAAQ,CACT,CAAC;QACF,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,yBAAyB,CAC1E,kBAAkB,CAAC,0BAA0B,EAC7C,QAAQ,CACT,CAAC;QAEF,OAAO,mDAAmD,CAAC;YACzD,cAAc,EAAE,mBAAmB;YACnC,UAAU,EAAE,mBAAmB,CAAC,UAAU,IAAI,EAAE;YAChD,aAAa,EAAE,qBAAqB,CAAC,IAAI;YACzC,QAAQ;YACR,aAAa,EAAE,OAAO,CACpB,qBAAqB,CAAC,aAAa,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAC/G;YACD,0BAA0B,EAAE,kBAAkB,CAAC,0BAA0B;YACzE,oBAAoB;SACrB,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;IAE9C,MAAM,oCAAoC,GAAG,WAAW,CAAC,CAAC,MAA2B,EAAuD,EAAE;QAC5I,MAAM,mBAAmB,GAAG,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACtF,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,0BAA0B,CACzE,eAAe,EACf;YACE,YAAY,EAAE,MAAM,CAAC,iBAAiB;YACtC,mBAAmB,EAAE,qBAAqB,CAAC,IAAI;YAC/C,0BAA0B,EAAE;gBAC1B,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,eAAe;aACvC;SACF,EACD,QAAQ,CACT,CAAC;QACF,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,yBAAyB,CAC1E,kBAAkB,CAAC,0BAA0B,EAC7C,QAAQ,CACT,CAAC;QAEF,OAAO,iCAAiC,CAAC;YACvC,UAAU,EAAE,mBAAmB,CAAC,UAAU,IAAI,EAAE;YAChD,YAAY,EAAE,kBAAkB;YAChC,oBAAoB;SACrB,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;IAE9C,iDAAiD;IACjD,+FAA+F;IAC/F,qFAAqF;IACrF,MAAM,mBAAmB,GAAG,WAAW,CAAC,CAAC,MAA2B,EAAE,EAAE;QACtE,MAAM,mBAAmB,GAAG,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACtF,MAAM,eAAe,GAAG,mBAAmB;YACzC,CAAC,CAAC,CACE,MAAM,CAAC,UAAU;gBACf,CAAC,CAAC,oCAAoC,CAAC,MAAM,CAAC;gBAC9C,CAAC,CAAC,oCAAoC,CAAC,MAAM,CAAC,CACjD;YACH,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,eAAe;YAAE,OAAO;QAE7B,MAAM,YAAY,GAAG,+BAA+B,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAE9E,QAAQ,CAAC;YACP,OAAO,EAAE;gBACP,WAAW,EAAE,qBAAqB,CAAC,kBAAkB;gBACrD,eAAe,EAAE,YAAY;aAC9B;YACD,SAAS,EAAE;gBACT,UAAU,EAAE,cAAc;gBAC1B,eAAe,EAAE,0CAA0C,CAAC,eAAe,CAAC;gBAC5E,kBAAkB,EAAE;oBAClB,kBAAkB,EAAE,YAAY;oBAChC,gBAAgB;oBAChB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;oBAC3C,eAAe,EAAE,MAAM,CAAC,eAAe;oBACvC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;oBAC/C,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW;iBACtD;aACF;YACD,sBAAsB,EAAE,MAAM,CAAC,UAAU;YACzC;;;;;;;eAOG;YACH,oBAAoB,EAAE,MAAM,CAAC,gBAAgB,EAAE,QAAQ;SACxD,CAAC,CAAC;IACL,CAAC,EAAE;QACD,+BAA+B;QAC/B,QAAQ;QACR,QAAQ;QACR,cAAc;QACd,YAAY;QACZ,gBAAgB;QAChB,oCAAoC;QACpC,oCAAoC;KACrC,CAAC,CAAC;IAEH,qEAAqE;IACrE,MAAM,WAAW,GAAG,CAAC,MAA2B,EAAE,EAAE;QAClD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,CACL,KAAC,MAAM,IAEL,OAAO,EAAE,sBAAsB,CAAC,OAAO,EACvC,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,YAEzC,MAAM,CAAC,KAAK,IAJR,MAAM,CAAC,mBAAmB,CAKxB,CACV,CAAC;QACJ,CAAC;QAED,MAAM,mBAAmB,GAAG,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEtF,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,kEAAkE;YAClE,MAAM,aAAa,GAAG,mBAAmB;gBACvC,CAAC,CAAC,oCAAoC,CAAC,MAAM,CAAC;gBAC9C,CAAC,CAAC,SAAS,CAAC;YAEd,IAAI,aAAa,EAAE,CAAC;gBAClB,2CAA2C;gBAC3C,MAAM,YAAY,GAAG,+BAA+B,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;gBAE5E,OAAO,CACL,KAAC,0BAA0B,IAEzB,eAAe,EAAE,YAAY,IADxB,MAAM,CAAC,mBAAmB,CAE/B,CACH,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,aAAa,GAAG,mBAAmB;YACvC,CAAC,CAAC,oCAAoC,CAAC,MAAM,CAAC;YAC9C,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC;QAEhC,gEAAgE;QAChE,MAAM,YAAY,GAAG,+BAA+B,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAE5E,6EAA6E;QAC7E,6EAA6E;QAC7E,iFAAiF;QACjF,8EAA8E;QAC9E,yEAAyE;QAEzE,MAAM,wBAAwB,GAAwB;YACpD,kBAAkB,EAAE,YAAY;YAChC,gBAAgB;YAChB,UAAU,EAAE,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU;SACtG,CAAC;QAEF,OAAO,CACL,KAAC,mBAAmB,IAElB,eAAe,EAAE,YAAY,EAC7B,cAAc,EAAE,cAAc,EAC9B,mBAAmB,EAAE,mBAAmB,EACxC,mBAAmB,EAAE,wBAAwB,EAC7C,kBAAkB,EAAE;gBAClB,kBAAkB,EAAE,YAAY;gBAChC,gBAAgB;gBAChB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;gBAC3C,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;gBAC/C,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW;aACtD,IAZI,MAAM,CAAC,mBAAmB,CAa/B,CACH,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,+BAA+B,GAAG,WAAW,CAAC,CAAC,MAA2B,EAAE,EAAE,CAAC,CAAC;QACpF,EAAE,EAAE,MAAM,CAAC,mBAAmB;QAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,6EAA6E;QAC7E,6EAA6E;QAC7E,0EAA0E;QAC1E,yEAAyE;QACzE,0EAA0E;QAC1E,8EAA8E;QAC9E,4EAA4E;QAC5E,2BAA2B;QAC3B,OAAO,EAAE;QACP,wEAAwE;QACxE,0EAA0E;QAC1E,2EAA2E;QAC3E,wEAAwE;QACxE,qEAAqE;QACrE,4EAA4E;QAC5E,6CAA6C;QAC7C,KAAC,+BAA+B,IAC9B,UAAU,EAAE,UAAU,MAAM,CAAC,mBAAmB,KAAK,gBAAgB,IAAI,QAAQ,EAAE,YAEnF,KAAC,yBAAyB,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,YAC5C,WAAW,CAAC,MAAM,CAAC,GACe,GACL,CACnC;KACF,CAAC,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAErC,mFAAmF;IACnF,gFAAgF;IAChF,6EAA6E;IAC7E,EAAE;IACF,kFAAkF;IAClF,iFAAiF;IACjF,mFAAmF;IACnF,kFAAkF;IAClF,iFAAiF;IACjF,kFAAkF;IAClF,kFAAkF;IAClF,sBAAsB;IACtB,EAAE;IACF,wEAAwE;IACxE,0EAA0E;IAC1E,4EAA4E;IAC5E,6BAA6B,CAC3B,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,4BAA4B,CACpE,CAAC;IAEF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,+EAA+E;IAC/E,4EAA4E;IAC5E,yEAAyE;IACzE,6EAA6E;IAC7E,4EAA4E;IAC5E,yEAAyE;IACzE,EAAE;IACF,wEAAwE;IACxE,8EAA8E;IAC9E,wEAAwE;IACxE,IAAI,4BAA4B;QAAE,OAAO,IAAI,CAAC;IAE9C,OAAO,CACL,KAAC,WAAW,IAAC,QAAQ,EAAE,QAAQ,YAC7B,cAAK,SAAS,EAAC,iBAAiB,YAC7B,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC5C,IAAI,CAAC,IAAI,KAAK,QAAQ;gBACpB,CAAC,CAAC,CACA,KAAC,uBAAuB,IAEtB,MAAM,EAAE;wBACN,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB;wBACnC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,KAAK,WAAW,CAAC,WAAW;4BACnE,CAAC,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE;4BAChC,CAAC,CAAC,EAAE,CAAC;qBACR,EACD,QAAQ,EAAE,CAAC,+BAA+B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAPnD,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAQpC,CACH;gBACD,CAAC,CAAC,CACA,KAAC,uBAAuB,IAEtB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,oBAAoB,EAC5C,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,IAFtD,sBAAsB,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,CAG/C,CACH,CACJ,CAAC,GACI,GACM,CACf,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,8BAA8B,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,GAAG,KAAK,EAA4E;IACrK,MAAM,SAAS,GAAG,uBAAuB,CAAoD,qBAAqB,CAAC,kCAAkC,EAAE,gCAAgC,CAAC,CAAC,MAAM,CAAC,CAAC;IACjM,OAAO,KAAC,SAAS,OAAK,KAAK,GAAI,CAAC;AAClC,CAAC","sourcesContent":["/**\n * ResourceLayoutPreset_ContainerNested_Default\n *\n * Displays relationship-aware nested read surfaces in the parent's READ view.\n * It only renders child-direction relationships that actually expose a nested\n * read projection; pure reference-only edges stay outside this container.\n *\n * This container is the AUTOMATIC composition path, and it is deliberately\n * unparameterized. A parent no longer configures how its children appear inside\n * its own view — there is no per-edge composition config left to read. A view\n * that wants anything other than the standard shape places its children itself\n * (`RelatedResourceSections` / `EmbedRelatedResourceList`), and doing so silences\n * this container entirely through the ownership registry.\n *\n * What the relationship still contributes is SEMANTICS, not composition:\n * - `display.inParentNavigation.transition` = undefined → inline (embedded);\n * section shape follows CARDINALITY alone (1:1 → INLINE, 1:N/N:N → TABS)\n * - `display.inParentNavigation.transition` = set → navigation transition\n * (split, push, overlay, …)\n *\n * Labels are handled by the i18n mechanism via tResourceHeader.\n *\n * ## Conditional Relationship Filtering (discriminator + condition)\n *\n * When a relationship carries a `discriminator` or `condition`, this component\n * evaluates them against `parentData` (the parent resource's actual data):\n *\n * 1. If `parentData` is not yet loaded (undefined), the relationship is deferred\n * (skipped). This prevents a flash of content that would appear and then\n * disappear once the parent data loads and the condition evaluates to false.\n *\n * 2. **Static discriminator**: evaluation is delegated through the relationship\n * surface runtime, which itself reuses the shared\n * `Resources_SharedUtils.isRelationshipActiveForParent()` helper and\n * preserves the same `String()` coercion semantics as backend runtime\n * evaluation.\n *\n * 3. **Function-based condition**: still evaluated through that same runtime /\n * shared-helper chain, but with frontend fail-safe behavior\n * (`onConditionError = 'exclude'`) so a buggy condition cannot crash the\n * React tree.\n *\n * Both checks use AND semantics — if both are present, both must pass.\n * Relationships without discriminator or condition are always rendered.\n */\n\nimport React, { useMemo, useCallback, useState, useEffect, useRef } from 'react';\nimport { InlineParentContext } from '~wildo-frontend-lib/components/resources/component-props.resources-layout.frontend.schemas';\n\nimport { useResourceRegistry } from '~wildo-frontend-lib/core/resources/useResourceRegistry';\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { resolveResourceHeaderLabel } from '~wildo-frontend-lib/core/i18n/component-label-resolution.utils';\nimport { frontendResourceUtils, FrontendResourceUtils } from '~wildo-frontend-lib/core/resources/frontend-resource.utils';\nimport {\n pickPreferredOperationForCoreSemantic,\n resolveEffectiveCoreOperationFromOperation,\n} from '~wildo-frontend-lib/core/resources/operation-semantics.frontend.utils';\nimport { pickPreferredOperationForCoreSemanticAddressability } from '~wildo-frontend-lib/core/resources/resource-addressability.frontend.utils';\nimport { CoreResourceOperation, NavigationTransition, getChildDirectionRelationships, describeCaughtError } from '@wildo-ai/saas-models';\nimport { ResourceLayout_List } from '~wildo-frontend-lib/components/resources/ResourceLayout_List';\nimport { ResourceAutomaticDisplayer } from '~wildo-frontend-lib/components/data-display/ResourceAutomaticDisplayer';\nimport { Button, ButtonVariants_Variant } from '~wildo-frontend-lib/components/actions/button';\nimport { ContentSectionContainer } from '~wildo-frontend-lib/components/sections/ContentSectionContainer';\nimport { SectionHostHeadingContext } from './skeleton/SectionHostHeadingContext';\nimport { EmbeddedResourceDescentBoundary } from './embeds/EmbeddedResourceDescent';\nimport { useTemplateOwnsChildComposition, useReportAutomaticComposition } from './embeds/ComposedChildrenRegistry';\nimport {\n isListOperationAddressableForChildContext,\n pickAddressableChildListOperation,\n} from './embeds/child-operation-addressability.utils';\nimport { SectionMode } from '@wildo-ai/zod-decorators';\nimport { useNavigationController } from '~wildo-frontend-lib/core/navigation/useNavigationController';\nimport { NavigationContentType } from '~wildo-frontend-lib/core/navigation/navigation.schemas';\nimport { useUI } from '~wildo-frontend-lib/core/ui/useUI';\n\nimport { BaseResourcesLayoutProps } from './component-props.resources-layout.frontend.schemas'\nimport { createComponentResolver } from '~wildo-frontend-lib/core/components-registry/component-resolver.frontend.helper';\nimport { ButtonSize, CorePresetNames, FrontendComponentType, type SectionConfig } from '@wildo-ai/presets-components-models';\nimport { ComponentPresetProps } from '~wildo-frontend-lib/core/components-registry/component-registry.frontend.schemas';\nimport { LoadingGate } from '~wildo-frontend-lib/core/loading/LoadingGate';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\nimport type { FrontendResourceConfiguration_Operation } from '~wildo-frontend-lib/core/resources/resources.frontend.schemas';\nimport {\n resolveRelationshipNestedReadSurface,\n type RelationshipNestedReadSurfaceDescriptor,\n} from '~wildo-frontend-lib/core/resources/relationship-surface-runtime.frontend.utils';\n\n// --- Contract ---\nexport interface ResourceLayoutPreset_ContainerNested_DefaultProps extends BaseResourcesLayoutProps {\n /** Parent resource data object — used for conditional relationship filtering. */\n parentData?: Record<string, unknown>;\n}\n\ninterface ChildResourceConfig extends RelationshipNestedReadSurfaceDescriptor {\n label: string;\n}\n\ninterface GroupedRelationshipChildren {\n items: Array<\n | { type: 'single'; config: ChildResourceConfig }\n | { type: 'group'; mode: SectionConfig['mode']; configs: ChildResourceConfig[]; groupingKey: string }\n >;\n}\n\n/**\n * Check if a relationship represents a 1:1 (or 0:1) cardinality on the child side.\n * This means the parent should display a single child resource, not a list.\n */\nfunction isOneToOne(config: ChildResourceConfig): boolean {\n return config.isOneToOne;\n}\n\nfunction isRelationshipSoloSectionMode(mode: SectionConfig['mode']): boolean {\n return mode === SectionMode.COLLAPSIBLE;\n}\n\nfunction groupRelationshipChildrenBySectionMode(configs: ChildResourceConfig[]): GroupedRelationshipChildren {\n const items: GroupedRelationshipChildren['items'] = [];\n\n for (const config of configs) {\n const mode = config.contentSectionConfig.mode;\n if (isRelationshipSoloSectionMode(mode)) {\n items.push({ type: 'single', config });\n continue;\n }\n\n const groupingKey = JSON.stringify(config.contentSectionConfig);\n const previousItem = items[items.length - 1];\n if (\n previousItem?.type === 'group'\n && previousItem.groupingKey === groupingKey\n ) {\n previousItem.configs.push(config);\n continue;\n }\n\n items.push({\n type: 'group',\n mode,\n configs: [config],\n groupingKey,\n });\n }\n\n return { items };\n}\n\n/** Dedup guard for {@link warnUndisplayableChild} (runs per render). */\nconst warnedUndisplayableChildren = new Set<string>();\n\n/**\n * Warn (once per parent→child edge) when a child cannot even have a context\n * derived for it — its LIST/READ operation is absent or ambiguous — so automatic\n * composition skips it instead of crashing the parent surface.\n */\nfunction warnUndisplayableChild(parentResourceType: string, childResourceType: string, error: unknown): void {\n const edgeKey = `${parentResourceType}->${childResourceType}`;\n if (warnedUndisplayableChildren.has(edgeKey)) {\n return;\n }\n warnedUndisplayableChildren.add(edgeKey);\n LoggerFrontendService.getLogger().warn(\n `[nested-container] \"${edgeKey}\" is not displayable and was SKIPPED: no unambiguous `\n + `${'LIST/READ'} operation could be resolved for the child. The parent surface still renders. `\n + `Cause: ${describeCaughtError(error)}`,\n );\n}\n\n/** Dedup guard for {@link warnAuthoredNestedSectionWithNoResolvableOperation} (runs per render). */\nconst warnedNestedSectionsWithNoOperation = new Set<string>();\n\n/**\n * Warn (once per parent→child edge) when the author declared an\n * `inParentView.contentSectionConfig` (a nested section) but no addressable\n * READ/LIST operation resolves for the child in the current parent context, so\n * the section renders nothing. Complements the read-model-eligibility warning in\n * `resolveRelationshipNestedReadSurface` — this catches the ELIGIBLE-but-\n * unrenderable case (e.g. a child whose LIST is `contextPolicy`-disabled).\n */\nfunction warnAuthoredNestedSectionWithNoResolvableOperation(\n parentResourceType: string,\n surface: RelationshipNestedReadSurfaceDescriptor,\n): void {\n const edgeKey = `${parentResourceType}->${surface.childResourceType}`;\n if (warnedNestedSectionsWithNoOperation.has(edgeKey)) {\n return;\n }\n warnedNestedSectionsWithNoOperation.add(edgeKey);\n LoggerFrontendService.getLogger().warn(\n `[nested-container] owned child \"${edgeKey}\" composes NOTHING: no addressable `\n + `${surface.isOneToOne ? 'READ' : 'LIST'} operation resolves for the child in this parent context. Common cause: the `\n + 'child operation is contextPolicy-disabled (e.g. operationOverrides.LIST.enabled=false) or not addressable here. '\n + 'Surface the child explicitly (a composite view / EmbedRelatedResourceOperation) or enable the operation.',\n );\n}\n\nexport const ResourceLayoutPreset_ContainerNested_Default = ({\n resourceContext,\n navigationZone,\n navigationInitiator,\n parentData,\n}: ResourceLayoutPreset_ContainerNested_DefaultProps): React.JSX.Element | null => {\n const { resourceType } = resourceContext;\n const { registry } = useResourceRegistry();\n const { tResourceHeader, isReady } = useI18n({\n component: FrontendComponentType.RESOURCES_LAYOUTS_CONTAINER_NESTED,\n resource: resourceType,\n });\n const { navigate } = useNavigationController();\n const { currentBreakpoint } = useUI();\n // D1/D12 — did the view template compose the child region itself? Read during\n // render, in the same pass the template registered (this container renders\n // after the displayer that hosts the template).\n const templateOwnsChildComposition = useTemplateOwnsChildComposition();\n\n const i18nKeys = useMemo(() => [\n `resources.${resourceType}`,\n `components.${FrontendComponentType.RESOURCES_LAYOUTS_CONTAINER_NESTED}`,\n ], [resourceType]);\n\n // Get parent resource configuration\n const parentResourceConfig = useMemo(() => {\n return registry.resourceConfigurations[resourceType];\n }, [registry, resourceType]);\n\n // Get child relationships from parent config (includes self-referencing relationships)\n const childRelationships = useMemo(() => {\n return parentResourceConfig?.resourceRelationships\n ? getChildDirectionRelationships(parentResourceConfig.resourceRelationships)\n : [];\n }, [parentResourceConfig]);\n\n // Build child resource configurations from relationship display settings\n const childConfigs = useMemo<ChildResourceConfig[]>(() => {\n if (childRelationships.length === 0) return [];\n\n const configs: ChildResourceConfig[] = [];\n\n for (const rel of childRelationships) {\n const nestedReadSurface = resolveRelationshipNestedReadSurface({\n parentResourceType: resourceType,\n relationship: rel,\n parentData,\n registry,\n viewport: currentBreakpoint,\n });\n if (!nestedReadSurface) {\n continue;\n }\n\n const childResourceType = nestedReadSurface.childResourceType;\n\n const childConfig = registry.resourceConfigurations[childResourceType];\n\n if (!childConfig) continue;\n\n // Check if child has a displayable operation (LIST for 1:N, READ for 1:1)\n const isChildOneToOne = nestedReadSurface.isOneToOne;\n\n // This enumeration is SPECULATIVE: it walks every owned child of the parent\n // and asks whether each could be displayed. `deriveChildResourceContext` is\n // strict by design — it THROWS when the requested operation is absent or\n // ambiguous on the child — which is right for a caller that named one\n // resource deliberately, and wrong here, where an unresolvable candidate is\n // simply not displayable.\n //\n // Left unguarded, ONE such child takes down the entire parent surface: the\n // whole record page renders the surface error fallback, not just the section that\n // could not resolve. That is what an organization's settings page did — the\n // container never ran for engine resources until the ownership gate was\n // fixed, so the crash arrived with the capability rather than with any\n // change to this derivation.\n //\n // Skipping matches the posture two lines below, where a child with no\n // ADDRESSABLE operation is skipped with a warning rather than thrown on.\n let preliminaryChildContext: ReturnType<typeof frontendResourceUtils.deriveChildResourceContext>;\n try {\n preliminaryChildContext = frontendResourceUtils.deriveChildResourceContext(\n resourceContext,\n {\n resourceType: childResourceType,\n operationIdentifier: isChildOneToOne ? CoreResourceOperation.READ : CoreResourceOperation.LIST,\n relationshipFieldOverrides: {\n [resourceType]: nestedReadSurface.foreignKeyField,\n },\n },\n registry,\n );\n } catch (error) {\n warnUndisplayableChild(resourceType, childResourceType, error);\n continue;\n }\n const preliminaryContextualParameters = FrontendResourceUtils.buildContextualParameters(\n preliminaryChildContext.contextResourceIdentifiers,\n registry,\n );\n\n const displayOperation = isChildOneToOne\n ? pickPreferredOperationForCoreSemanticAddressability({\n resourceConfig: childConfig,\n operations: childConfig.operations ?? [],\n coreOperation: CoreResourceOperation.READ,\n registry,\n hasResourceId: Boolean(\n frontendResourceUtils.getResourceId(preliminaryChildContext.contextResourceIdentifiers?.[childResourceType]),\n ),\n contextResourceIdentifiers: preliminaryChildContext.contextResourceIdentifiers,\n contextualParameters: preliminaryContextualParameters,\n })\n : preliminaryChildContext && preliminaryContextualParameters\n ? pickAddressableChildListOperation({\n operations: childConfig.operations ?? [],\n childContext: preliminaryChildContext,\n contextualParameters: preliminaryContextualParameters,\n })\n : undefined;\n if (!displayOperation) {\n // The relationship is nested-read-ELIGIBLE (it produced a surface) but no\n // addressable READ/LIST operation resolves for the child in THIS parent\n // context — so an authored `inParentView.contentSectionConfig` renders\n // nothing. Warn loudly (this is the gap the read-model-only F3 warning in\n // `resolveRelationshipNestedReadSurface` misses — e.g. `todos→tasks` with\n // `contextPolicy.operationOverrides.LIST.enabled = false`).\n warnAuthoredNestedSectionWithNoResolvableOperation(resourceType, nestedReadSurface);\n continue;\n }\n\n const label = resolveResourceHeaderLabel({\n tResourceHeader,\n resourceType: childResourceType,\n key: 'title',\n });\n\n configs.push({\n ...nestedReadSurface,\n label,\n });\n }\n\n // Registration order. `orderIndex` is gone: ordering an automatic block was\n // the config axis's job, and a view that cares about order places its\n // children itself, where order is simply the order they are written in.\n\n return configs;\n // `composedByTemplate` is a ref-backed Set with a STABLE identity, so it cannot\n // serve as a dependency — it is read during this render and reflects the pass\n // the template just registered in. The memo is recomputed by `parentData`,\n // which is precisely what changes when a data-conditional template starts\n // placing a child.\n }, [childRelationships, registry, resourceContext, resourceType, tResourceHeader, parentData, currentBreakpoint]);\n\n const groupedChildren = useMemo(\n () => groupRelationshipChildrenBySectionMode(childConfigs),\n [childConfigs],\n );\n\n // Resolve parent resource ID from contextResourceIdentifiers (used by inline context + pane-targeted nav)\n const parentResourceId = useMemo(() => {\n const identifier = resourceContext.contextResourceIdentifiers?.[resourceType];\n if (!identifier) return undefined;\n if (typeof identifier === 'string') return identifier;\n return identifier.resourceId;\n }, [resourceContext.contextResourceIdentifiers, resourceType]);\n\n const deriveChildContextWithOperation = useCallback((\n config: ChildResourceConfig,\n operation: FrontendResourceConfiguration_Operation,\n ) => frontendResourceUtils.deriveChildResourceContext(\n resourceContext,\n {\n resourceType: config.childResourceType,\n operationIdentifier: String(operation.operationIdentifier),\n operation,\n relationshipFieldOverrides: {\n // Reuse the exact edge we are rendering, especially for same-type or\n // duplicate child relationships. Otherwise child context derivation may\n // know the parent type but still lose which FK path got us here.\n [resourceType]: config.foreignKeyField,\n },\n },\n registry\n ), [registry, resourceContext, resourceType]);\n\n const resolveAddressableChildReadOperation = useCallback((config: ChildResourceConfig): FrontendResourceConfiguration_Operation | undefined => {\n const childResourceConfig = registry.resourceConfigurations[config.childResourceType];\n if (!childResourceConfig) {\n return undefined;\n }\n\n const preliminaryContext = frontendResourceUtils.deriveChildResourceContext(\n resourceContext,\n {\n resourceType: config.childResourceType,\n operationIdentifier: CoreResourceOperation.READ,\n relationshipFieldOverrides: {\n [resourceType]: config.foreignKeyField,\n },\n },\n registry,\n );\n const contextualParameters = FrontendResourceUtils.buildContextualParameters(\n preliminaryContext.contextResourceIdentifiers,\n registry,\n );\n\n return pickPreferredOperationForCoreSemanticAddressability({\n resourceConfig: childResourceConfig,\n operations: childResourceConfig.operations ?? [],\n coreOperation: CoreResourceOperation.READ,\n registry,\n hasResourceId: Boolean(\n frontendResourceUtils.getResourceId(preliminaryContext.contextResourceIdentifiers?.[config.childResourceType]),\n ),\n contextResourceIdentifiers: preliminaryContext.contextResourceIdentifiers,\n contextualParameters,\n });\n }, [registry, resourceContext, resourceType]);\n\n const resolveAddressableChildListOperation = useCallback((config: ChildResourceConfig): FrontendResourceConfiguration_Operation | undefined => {\n const childResourceConfig = registry.resourceConfigurations[config.childResourceType];\n if (!childResourceConfig) {\n return undefined;\n }\n\n const preliminaryContext = frontendResourceUtils.deriveChildResourceContext(\n resourceContext,\n {\n resourceType: config.childResourceType,\n operationIdentifier: CoreResourceOperation.LIST,\n relationshipFieldOverrides: {\n [resourceType]: config.foreignKeyField,\n },\n },\n registry,\n );\n const contextualParameters = FrontendResourceUtils.buildContextualParameters(\n preliminaryContext.contextResourceIdentifiers,\n registry,\n );\n\n return pickAddressableChildListOperation({\n operations: childResourceConfig.operations ?? [],\n childContext: preliminaryContext,\n contextualParameters,\n });\n }, [registry, resourceContext, resourceType]);\n\n // Navigate to a child resource's full LIST view.\n // Used by: the related-resource preview's \"view all\" link and navigation-intent child buttons.\n // The v3 resolver determines zone + transition from the layout config + source zone.\n const handleNavigateChild = useCallback((config: ChildResourceConfig) => {\n const childResourceConfig = registry.resourceConfigurations[config.childResourceType];\n const targetOperation = childResourceConfig\n ? (\n config.isOneToOne\n ? resolveAddressableChildReadOperation(config)\n : resolveAddressableChildListOperation(config)\n )\n : undefined;\n if (!targetOperation) return;\n\n const childContext = deriveChildContextWithOperation(config, targetOperation);\n\n navigate({\n content: {\n contentType: NavigationContentType.RESOURCE_OPERATION,\n resourceContext: childContext,\n },\n initiator: {\n sourceZone: navigationZone,\n sourceOperation: resolveEffectiveCoreOperationFromOperation(targetOperation),\n sourceRelationship: {\n parentResourceType: resourceType,\n parentResourceId,\n childResourceType: config.childResourceType,\n foreignKeyField: config.foreignKeyField,\n relationshipEdgeKey: config.relationshipEdgeKey,\n inChildView: config.relationship.display?.inChildView,\n },\n },\n relationshipTransition: config.transition,\n /*\n * `RelationshipDisplayInParentNavigation.maxDepth` — this relationship's override of the\n * layout's global push ceiling. Read straight off the descriptor's `navigationConfig`, which\n * IS that schema, rather than re-resolved: `transition` beside it comes from the same object.\n *\n * Nothing read it before #411, so a relationship that declared a ceiling got unbounded pushes\n * and no error.\n */\n relationshipMaxDepth: config.navigationConfig?.maxDepth,\n });\n }, [\n deriveChildContextWithOperation,\n registry,\n navigate,\n navigationZone,\n resourceType,\n parentResourceId,\n resolveAddressableChildReadOperation,\n resolveAddressableChildListOperation,\n ]);\n\n // Render a child resource — list for 1:N/N:N, single display for 1:1\n const renderChild = (config: ChildResourceConfig) => {\n if (config.transition) {\n return (\n <Button\n key={config.relationshipEdgeKey}\n variant={ButtonVariants_Variant.OUTLINE}\n onClick={() => handleNavigateChild(config)}\n >\n {config.label}\n </Button>\n );\n }\n\n const childResourceConfig = registry.resourceConfigurations[config.childResourceType];\n\n if (isOneToOne(config)) {\n // 1:1 relationship — render as a single resource display via READ\n const readOperation = childResourceConfig\n ? resolveAddressableChildReadOperation(config)\n : undefined;\n\n if (readOperation) {\n // Derive child context with READ operation\n const childContext = deriveChildContextWithOperation(config, readOperation);\n\n return (\n <ResourceAutomaticDisplayer\n key={config.relationshipEdgeKey}\n resourceContext={childContext}\n />\n );\n }\n return null;\n }\n\n const listOperation = childResourceConfig\n ? resolveAddressableChildListOperation(config)\n : undefined;\n\n if (!listOperation) return null;\n\n // Create child context with parent filter (LIST-like operation)\n const childContext = deriveChildContextWithOperation(config, listOperation);\n\n // No preview branch here any more. Automatic composition renders the child's\n // full LIST surface; a compact preview is a DELIBERATE choice, so it is made\n // where deliberate choices live — a template placing `<RelatedResourcePreview>`.\n // It used to be selected by an `inParentView.inlineLimit` key that nothing in\n // the repository ever authored, which is how the capability stayed dark.\n\n const childInlineParentContext: InlineParentContext = {\n parentResourceType: resourceType,\n parentResourceId,\n transition: typeof config.transition === 'string' ? config.transition : config.transition?.transition,\n };\n\n return (\n <ResourceLayout_List\n key={config.relationshipEdgeKey}\n resourceContext={childContext}\n navigationZone={navigationZone}\n navigationInitiator={navigationInitiator}\n inlineParentContext={childInlineParentContext}\n sourceRelationship={{\n parentResourceType: resourceType,\n parentResourceId,\n childResourceType: config.childResourceType,\n foreignKeyField: config.foreignKeyField,\n relationshipEdgeKey: config.relationshipEdgeKey,\n inChildView: config.relationship.display?.inChildView,\n }}\n />\n );\n };\n\n const buildRelationshipContentSection = useCallback((config: ChildResourceConfig) => ({\n id: config.relationshipEdgeKey,\n title: config.label,\n // This host renders a visible heading for the region (`title` above), so the\n // embedded child surface must not stack its OWN standalone page chrome under\n // it — its generic heading, its description and its parent breadcrumb all\n // restate what the section title and the surrounding record already say.\n // Threading the heading context is what every other section-grouping host\n // does (FormLayout / DisplayLayout / CompositeLayout pass `providesHeading`);\n // this one never did, which was invisible only because the nested container\n // could not render at all.\n content: (\n // D9 — each automatically-composed child is a level of DESCENT, bounded\n // exactly like an explicitly embedded one. Keyed on `(edge, parent row)`:\n // a self-referencing hierarchy walks the SAME edge over DIFFERENT rows and\n // must keep descending, while the same record reached twice is a cycle.\n // Self edges are in scope — `getChildDirectionRelationships` returns\n // `[...childRelationships, ...selfRelationships]`, so `Category → Category`\n // already renders itself as a section today.\n <EmbeddedResourceDescentBoundary\n descentKey={`nested:${config.relationshipEdgeKey}::${parentResourceId || 'no-row'}`}\n >\n <SectionHostHeadingContext.Provider value={true}>\n {renderChild(config)}\n </SectionHostHeadingContext.Provider>\n </EmbeddedResourceDescentBoundary>\n ),\n }), [renderChild, parentResourceId]);\n\n // MOVED here (was above `renderChild`, before the `useCallback` below it) to fix a\n // Rules-of-Hooks violation: returning early while a hook still followed meant a\n // render with no children called ONE FEWER hook than a render with children.\n //\n // Not theoretical. `childConfigs` is derived from `parentData`, and a conditional\n // or discriminated relationship is DEFERRED while `parentData` is undefined (see\n // the header). So on a resource whose child relationships are ALL conditional, the\n // first render returned early and the second — once `parentData` arrived — called\n // the extra hook, which is React's \"Rendered more hooks than during the previous\n // render.\" A resource with any unconditional child never reached it, which is why\n // it survived unnoticed. `rules-of-hooks` would have caught it; lint does not run\n // in this repository.\n //\n // Every guard now sits together, AFTER the last hook. Keep it that way.\n // Report what this container actually DID, for the provider's post-commit\n // duplication check. `true` only on the path that reaches the render below.\n useReportAutomaticComposition(\n childConfigs.length > 0 && isReady && !templateOwnsChildComposition,\n );\n\n if (childConfigs.length === 0) return null;\n\n if (!isReady) return null;\n\n // D12 — the template composed the child region itself, so this automatic block\n // stands down ENTIRELY rather than appending the children it did not place.\n // Same contract an authored `layout.display` already has for fields: the\n // template REPLACES the generated surface, it is not merged with it. Merging\n // is what would require a per-edge suppression flag on every relationship a\n // parent chose not to show — the configuration axis this design removes.\n //\n // Note it does NOT touch `resolveRelationshipNestedReadSurface`, so raw\n // relationship-object-field hiding stays independent of placement: omitting a\n // child hides it rather than downgrading it to a raw array in the body.\n if (templateOwnsChildComposition) return null;\n\n return (\n <LoadingGate i18nKeys={i18nKeys}>\n <div className=\"space-y-section\">\n {groupedChildren.items.map((item, index) => (\n item.type === 'single'\n ? (\n <ContentSectionContainer\n key={item.config.relationshipEdgeKey}\n config={{\n ...item.config.contentSectionConfig,\n ...(item.config.contentSectionConfig.mode === SectionMode.COLLAPSIBLE\n ? { showSingleSectionNav: true }\n : {}),\n }}\n sections={[buildRelationshipContentSection(item.config)]}\n />\n )\n : (\n <ContentSectionContainer\n key={`relationship-group-${item.mode}-${index}`}\n config={item.configs[0].contentSectionConfig}\n sections={item.configs.map(buildRelationshipContentSection)}\n />\n )\n ))}\n </div>\n </LoadingGate>\n );\n};\n\nexport function ResourceLayout_ContainerNested({ preset = CorePresetNames.DEFAULT, ...props }: ResourceLayoutPreset_ContainerNested_DefaultProps & ComponentPresetProps): React.JSX.Element {\n const Component = createComponentResolver<ResourceLayoutPreset_ContainerNested_DefaultProps>(FrontendComponentType.RESOURCES_LAYOUTS_CONTAINER_NESTED, 'ResourceLayout_ContainerNested')(preset);\n return <Component {...props} />;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ResourceLayout_ContainerNested.js","sourceRoot":"","sources":["../../../../../src/components/resources/ResourceLayout_ContainerNested.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * ResourceLayoutPreset_ContainerNested_Default\n *\n * Displays relationship-aware nested read surfaces in the parent's READ view.\n * It only renders child-direction relationships that actually expose a nested\n * read projection; pure reference-only edges stay outside this container.\n *\n * This container is the AUTOMATIC composition path, and it is deliberately\n * unparameterized. A parent no longer configures how its children appear inside\n * its own view — there is no per-edge composition config left to read. A view\n * that wants anything other than the standard shape places its children itself\n * (`RelatedResourceSections` / `EmbedRelatedResourceList`), and doing so silences\n * this container entirely through the ownership registry.\n *\n * What the relationship still contributes is SEMANTICS, not composition:\n * - `display.inParentNavigation.transition` = undefined → inline (embedded);\n * section shape follows CARDINALITY alone (1:1 → INLINE, 1:N/N:N → TABS)\n * - `display.inParentNavigation.transition` = set → navigation transition\n * (split, push, overlay, …)\n *\n * Labels are handled by the i18n mechanism via tResourceHeader.\n *\n * ## Conditional Relationship Filtering (discriminator + condition)\n *\n * When a relationship carries a `discriminator` or `condition`, this component\n * evaluates them against `parentData` (the parent resource's actual data):\n *\n * 1. If `parentData` is not yet loaded (undefined), the relationship is deferred\n * (skipped). This prevents a flash of content that would appear and then\n * disappear once the parent data loads and the condition evaluates to false.\n *\n * 2. **Static discriminator**: evaluation is delegated through the relationship\n * surface runtime, which itself reuses the shared\n * `Resources_SharedUtils.isRelationshipActiveForParent()` helper and\n * preserves the same `String()` coercion semantics as backend runtime\n * evaluation.\n *\n * 3. **Function-based condition**: still evaluated through that same runtime /\n * shared-helper chain, but with frontend fail-safe behavior\n * (`onConditionError = 'exclude'`) so a buggy condition cannot crash the\n * React tree.\n *\n * Both checks use AND semantics — if both are present, both must pass.\n * Relationships without discriminator or condition are always rendered.\n */\n\nimport React, { useMemo, useCallback, useState, useEffect, useRef } from 'react';\nimport { InlineParentContext } from '~wildo-frontend-lib/components/resources/component-props.resources-layout.frontend.schemas';\n\nimport { useResourceRegistry } from '~wildo-frontend-lib/core/resources/useResourceRegistry';\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { resolveResourceHeaderLabel } from '~wildo-frontend-lib/core/i18n/component-label-resolution.utils';\nimport { frontendResourceUtils, FrontendResourceUtils } from '~wildo-frontend-lib/core/resources/frontend-resource.utils';\nimport {\n pickPreferredOperationForCoreSemantic,\n resolveEffectiveCoreOperationFromOperation,\n} from '~wildo-frontend-lib/core/resources/operation-semantics.frontend.utils';\nimport { pickPreferredOperationForCoreSemanticAddressability } from '~wildo-frontend-lib/core/resources/resource-addressability.frontend.utils';\nimport { CoreResourceOperation, NavigationTransition, getChildDirectionRelationships, describeCaughtError } from '@wildo-ai/saas-models';\nimport { ResourceLayout_List } from '~wildo-frontend-lib/components/resources/ResourceLayout_List';\nimport { ResourceAutomaticDisplayer } from '~wildo-frontend-lib/components/data-display/ResourceAutomaticDisplayer';\nimport { Button, ButtonVariants_Variant } from '~wildo-frontend-lib/components/actions/button';\nimport { ContentSectionContainer } from '~wildo-frontend-lib/components/sections/ContentSectionContainer';\nimport { SectionHostHeadingContext } from './skeleton/SectionHostHeadingContext';\nimport { EmbeddedResourceDescentBoundary } from './embeds/EmbeddedResourceDescent';\nimport { useTemplateOwnsChildComposition, useReportAutomaticComposition } from './embeds/ComposedChildrenRegistry';\nimport {\n isListOperationAddressableForChildContext,\n pickAddressableChildListOperation,\n} from './embeds/child-operation-addressability.utils';\nimport { SectionMode } from '@wildo-ai/zod-decorators';\nimport { useNavigationController } from '~wildo-frontend-lib/core/navigation/useNavigationController';\nimport { NavigationContentType } from '~wildo-frontend-lib/core/navigation/navigation.schemas';\nimport { useUI } from '~wildo-frontend-lib/core/ui/useUI';\n\nimport { BaseResourcesLayoutProps } from './component-props.resources-layout.frontend.schemas'\nimport { createComponentResolver } from '~wildo-frontend-lib/core/components-registry/component-resolver.frontend.helper';\nimport { ButtonSize, CorePresetNames, FrontendComponentType, type SectionConfig } from '@wildo-ai/presets-components-models';\nimport { ComponentPresetProps } from '~wildo-frontend-lib/core/components-registry/component-registry.frontend.schemas';\nimport { LoadingGate } from '~wildo-frontend-lib/core/loading/LoadingGate';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\nimport type { FrontendResourceConfiguration_Operation } from '~wildo-frontend-lib/core/resources/resources.frontend.schemas';\nimport {\n resolveRelationshipNestedReadSurface,\n type RelationshipNestedReadSurfaceDescriptor,\n} from '~wildo-frontend-lib/core/resources/relationship-surface-runtime.frontend.utils';\n\n// --- Contract ---\nexport interface ResourceLayoutPreset_ContainerNested_DefaultProps extends BaseResourcesLayoutProps {\n /** Parent resource data object — used for conditional relationship filtering. */\n parentData?: Record<string, unknown>;\n}\n\ninterface ChildResourceConfig extends RelationshipNestedReadSurfaceDescriptor {\n label: string;\n}\n\ninterface GroupedRelationshipChildren {\n items: Array<\n | { type: 'single'; config: ChildResourceConfig }\n | { type: 'group'; mode: SectionConfig['mode']; configs: ChildResourceConfig[]; groupingKey: string }\n >;\n}\n\n/**\n * Check if a relationship represents a 1:1 (or 0:1) cardinality on the child side.\n * This means the parent should display a single child resource, not a list.\n */\nfunction isOneToOne(config: ChildResourceConfig): boolean {\n return config.isOneToOne;\n}\n\nfunction isRelationshipSoloSectionMode(mode: SectionConfig['mode']): boolean {\n return mode === SectionMode.COLLAPSIBLE;\n}\n\nfunction groupRelationshipChildrenBySectionMode(configs: ChildResourceConfig[]): GroupedRelationshipChildren {\n const items: GroupedRelationshipChildren['items'] = [];\n\n for (const config of configs) {\n const mode = config.contentSectionConfig.mode;\n if (isRelationshipSoloSectionMode(mode)) {\n items.push({ type: 'single', config });\n continue;\n }\n\n const groupingKey = JSON.stringify(config.contentSectionConfig);\n const previousItem = items[items.length - 1];\n if (\n previousItem?.type === 'group'\n && previousItem.groupingKey === groupingKey\n ) {\n previousItem.configs.push(config);\n continue;\n }\n\n items.push({\n type: 'group',\n mode,\n configs: [config],\n groupingKey,\n });\n }\n\n return { items };\n}\n\n/** Dedup guard for {@link warnUndisplayableChild} (runs per render). */\nconst warnedUndisplayableChildren = new Set<string>();\n\n/**\n * Warn (once per parent→child edge) when a child cannot even have a context\n * derived for it — its LIST/READ operation is absent or ambiguous — so automatic\n * composition skips it instead of crashing the parent surface.\n */\nfunction warnUndisplayableChild(parentResourceType: string, childResourceType: string, error: unknown): void {\n const edgeKey = `${parentResourceType}->${childResourceType}`;\n if (warnedUndisplayableChildren.has(edgeKey)) {\n return;\n }\n warnedUndisplayableChildren.add(edgeKey);\n LoggerFrontendService.getLogger().warn(\n `[nested-container] \"${edgeKey}\" is not displayable and was SKIPPED: no unambiguous `\n + `${'LIST/READ'} operation could be resolved for the child. The parent surface still renders. `\n + `Cause: ${describeCaughtError(error)}`,\n );\n}\n\n/** Dedup guard for {@link warnAuthoredNestedSectionWithNoResolvableOperation} (runs per render). */\nconst warnedNestedSectionsWithNoOperation = new Set<string>();\n\n/**\n * Warn (once per parent→child edge) when the author declared an\n * `inParentView.contentSectionConfig` (a nested section) but no addressable\n * READ/LIST operation resolves for the child in the current parent context, so\n * the section renders nothing. Complements the read-model-eligibility warning in\n * `resolveRelationshipNestedReadSurface` — this catches the ELIGIBLE-but-\n * unrenderable case (e.g. a child whose LIST is `contextPolicy`-disabled).\n */\nfunction warnAuthoredNestedSectionWithNoResolvableOperation(\n parentResourceType: string,\n surface: RelationshipNestedReadSurfaceDescriptor,\n): void {\n const edgeKey = `${parentResourceType}->${surface.childResourceType}`;\n if (warnedNestedSectionsWithNoOperation.has(edgeKey)) {\n return;\n }\n warnedNestedSectionsWithNoOperation.add(edgeKey);\n LoggerFrontendService.getLogger().warn(\n `[nested-container] owned child \"${edgeKey}\" composes NOTHING: no addressable `\n + `${surface.isOneToOne ? 'READ' : 'LIST'} operation resolves for the child in this parent context. Common cause: the `\n + 'child operation is contextPolicy-disabled (e.g. operationOverrides.LIST.enabled=false) or not addressable here. '\n + 'Surface the child explicitly (a composite view / EmbedRelatedResourceOperation) or enable the operation.',\n );\n}\n\nexport const ResourceLayoutPreset_ContainerNested_Default = ({\n resourceContext,\n navigationZone,\n navigationInitiator,\n parentData,\n}: ResourceLayoutPreset_ContainerNested_DefaultProps): React.JSX.Element | null => {\n const { resourceType } = resourceContext;\n const { registry } = useResourceRegistry();\n const { tResourceHeader, isReady } = useI18n({\n component: FrontendComponentType.RESOURCES_LAYOUTS_CONTAINER_NESTED,\n resource: resourceType,\n });\n const { navigate } = useNavigationController();\n const { currentBreakpoint } = useUI();\n // D1/D12 — did the view template compose the child region itself? Read during\n // render, in the same pass the template registered (this container renders\n // after the displayer that hosts the template).\n const templateOwnsChildComposition = useTemplateOwnsChildComposition();\n\n const i18nKeys = useMemo(() => [\n `resources.${resourceType}`,\n `components.${FrontendComponentType.RESOURCES_LAYOUTS_CONTAINER_NESTED}`,\n ], [resourceType]);\n\n // Get parent resource configuration\n const parentResourceConfig = useMemo(() => {\n return registry.resourceConfigurations[resourceType];\n }, [registry, resourceType]);\n\n // Get child relationships from parent config (includes self-referencing relationships)\n const childRelationships = useMemo(() => {\n return parentResourceConfig?.resourceRelationships\n ? getChildDirectionRelationships(parentResourceConfig.resourceRelationships)\n : [];\n }, [parentResourceConfig]);\n\n // Build child resource configurations from relationship display settings\n const childConfigs = useMemo<ChildResourceConfig[]>(() => {\n if (childRelationships.length === 0) return [];\n\n const configs: ChildResourceConfig[] = [];\n\n for (const rel of childRelationships) {\n const nestedReadSurface = resolveRelationshipNestedReadSurface({\n parentResourceType: resourceType,\n relationship: rel,\n parentData,\n registry,\n viewport: currentBreakpoint,\n });\n if (!nestedReadSurface) {\n continue;\n }\n\n const childResourceType = nestedReadSurface.childResourceType;\n\n const childConfig = registry.resourceConfigurations[childResourceType];\n\n if (!childConfig) continue;\n\n // Check if child has a displayable operation (LIST for 1:N, READ for 1:1)\n const isChildOneToOne = nestedReadSurface.isOneToOne;\n\n // This enumeration is SPECULATIVE: it walks every owned child of the parent\n // and asks whether each could be displayed. `deriveChildResourceContext` is\n // strict by design — it THROWS when the requested operation is absent or\n // ambiguous on the child — which is right for a caller that named one\n // resource deliberately, and wrong here, where an unresolvable candidate is\n // simply not displayable.\n //\n // Left unguarded, ONE such child takes down the entire parent surface: the\n // whole record page renders the surface error fallback, not just the section that\n // could not resolve. That is what an organization's settings page did — the\n // container never ran for engine resources until the ownership gate was\n // fixed, so the crash arrived with the capability rather than with any\n // change to this derivation.\n //\n // Skipping matches the posture two lines below, where a child with no\n // ADDRESSABLE operation is skipped with a warning rather than thrown on.\n let preliminaryChildContext: ReturnType<typeof frontendResourceUtils.deriveChildResourceContext>;\n try {\n preliminaryChildContext = frontendResourceUtils.deriveChildResourceContext(\n resourceContext,\n {\n resourceType: childResourceType,\n operationIdentifier: isChildOneToOne ? CoreResourceOperation.READ : CoreResourceOperation.LIST,\n relationshipFieldOverrides: {\n [resourceType]: nestedReadSurface.foreignKeyField,\n },\n },\n registry,\n );\n } catch (error) {\n warnUndisplayableChild(resourceType, childResourceType, error);\n continue;\n }\n const preliminaryContextualParameters = FrontendResourceUtils.buildContextualParameters(\n preliminaryChildContext.contextResourceIdentifiers,\n registry,\n );\n\n const displayOperation = isChildOneToOne\n ? pickPreferredOperationForCoreSemanticAddressability({\n resourceConfig: childConfig,\n operations: childConfig.operations ?? [],\n coreOperation: CoreResourceOperation.READ,\n registry,\n hasResourceId: Boolean(\n frontendResourceUtils.getResourceId(preliminaryChildContext.contextResourceIdentifiers?.[childResourceType]),\n ),\n contextResourceIdentifiers: preliminaryChildContext.contextResourceIdentifiers,\n contextualParameters: preliminaryContextualParameters,\n })\n : preliminaryChildContext && preliminaryContextualParameters\n ? pickAddressableChildListOperation({\n operations: childConfig.operations ?? [],\n childContext: preliminaryChildContext,\n contextualParameters: preliminaryContextualParameters,\n })\n : undefined;\n if (!displayOperation) {\n // The relationship is nested-read-ELIGIBLE (it produced a surface) but no\n // addressable READ/LIST operation resolves for the child in THIS parent\n // context — so an authored `inParentView.contentSectionConfig` renders\n // nothing. Warn loudly (this is the gap the read-model-only F3 warning in\n // `resolveRelationshipNestedReadSurface` misses — e.g. `todos→tasks` with\n // `contextPolicy.operationOverrides.LIST.enabled = false`).\n warnAuthoredNestedSectionWithNoResolvableOperation(resourceType, nestedReadSurface);\n continue;\n }\n\n const label = resolveResourceHeaderLabel({\n tResourceHeader,\n resourceType: childResourceType,\n key: 'title',\n });\n\n configs.push({\n ...nestedReadSurface,\n label,\n });\n }\n\n // Registration order. `orderIndex` is gone: ordering an automatic block was\n // the config axis's job, and a view that cares about order places its\n // children itself, where order is simply the order they are written in.\n\n return configs;\n // `composedByTemplate` is a ref-backed Set with a STABLE identity, so it cannot\n // serve as a dependency — it is read during this render and reflects the pass\n // the template just registered in. The memo is recomputed by `parentData`,\n // which is precisely what changes when a data-conditional template starts\n // placing a child.\n }, [childRelationships, registry, resourceContext, resourceType, tResourceHeader, parentData, currentBreakpoint]);\n\n const groupedChildren = useMemo(\n () => groupRelationshipChildrenBySectionMode(childConfigs),\n [childConfigs],\n );\n\n // Resolve parent resource ID from contextResourceIdentifiers (used by inline context + pane-targeted nav)\n const parentResourceId = useMemo(() => {\n const identifier = resourceContext.contextResourceIdentifiers?.[resourceType];\n if (!identifier) return undefined;\n if (typeof identifier === 'string') return identifier;\n return identifier.resourceId;\n }, [resourceContext.contextResourceIdentifiers, resourceType]);\n\n const deriveChildContextWithOperation = useCallback((\n config: ChildResourceConfig,\n operation: FrontendResourceConfiguration_Operation,\n ) => frontendResourceUtils.deriveChildResourceContext(\n resourceContext,\n {\n resourceType: config.childResourceType,\n operationIdentifier: String(operation.operationIdentifier),\n operation,\n relationshipFieldOverrides: {\n // Reuse the exact edge we are rendering, especially for same-type or\n // duplicate child relationships. Otherwise child context derivation may\n // know the parent type but still lose which FK path got us here.\n [resourceType]: config.foreignKeyField,\n },\n },\n registry\n ), [registry, resourceContext, resourceType]);\n\n const resolveAddressableChildReadOperation = useCallback((config: ChildResourceConfig): FrontendResourceConfiguration_Operation | undefined => {\n const childResourceConfig = registry.resourceConfigurations[config.childResourceType];\n if (!childResourceConfig) {\n return undefined;\n }\n\n const preliminaryContext = frontendResourceUtils.deriveChildResourceContext(\n resourceContext,\n {\n resourceType: config.childResourceType,\n operationIdentifier: CoreResourceOperation.READ,\n relationshipFieldOverrides: {\n [resourceType]: config.foreignKeyField,\n },\n },\n registry,\n );\n const contextualParameters = FrontendResourceUtils.buildContextualParameters(\n preliminaryContext.contextResourceIdentifiers,\n registry,\n );\n\n return pickPreferredOperationForCoreSemanticAddressability({\n resourceConfig: childResourceConfig,\n operations: childResourceConfig.operations ?? [],\n coreOperation: CoreResourceOperation.READ,\n registry,\n hasResourceId: Boolean(\n frontendResourceUtils.getResourceId(preliminaryContext.contextResourceIdentifiers?.[config.childResourceType]),\n ),\n contextResourceIdentifiers: preliminaryContext.contextResourceIdentifiers,\n contextualParameters,\n });\n }, [registry, resourceContext, resourceType]);\n\n const resolveAddressableChildListOperation = useCallback((config: ChildResourceConfig): FrontendResourceConfiguration_Operation | undefined => {\n const childResourceConfig = registry.resourceConfigurations[config.childResourceType];\n if (!childResourceConfig) {\n return undefined;\n }\n\n const preliminaryContext = frontendResourceUtils.deriveChildResourceContext(\n resourceContext,\n {\n resourceType: config.childResourceType,\n operationIdentifier: CoreResourceOperation.LIST,\n relationshipFieldOverrides: {\n [resourceType]: config.foreignKeyField,\n },\n },\n registry,\n );\n const contextualParameters = FrontendResourceUtils.buildContextualParameters(\n preliminaryContext.contextResourceIdentifiers,\n registry,\n );\n\n return pickAddressableChildListOperation({\n operations: childResourceConfig.operations ?? [],\n childContext: preliminaryContext,\n contextualParameters,\n });\n }, [registry, resourceContext, resourceType]);\n\n // Navigate to a child resource's full LIST view.\n // Used by: the related-resource preview's \"view all\" link and navigation-intent child buttons.\n // The v3 resolver determines zone + transition from the layout config + source zone.\n const handleNavigateChild = useCallback((config: ChildResourceConfig) => {\n const childResourceConfig = registry.resourceConfigurations[config.childResourceType];\n const targetOperation = childResourceConfig\n ? (\n config.isOneToOne\n ? resolveAddressableChildReadOperation(config)\n : resolveAddressableChildListOperation(config)\n )\n : undefined;\n if (!targetOperation) return;\n\n const childContext = deriveChildContextWithOperation(config, targetOperation);\n\n navigate({\n content: {\n contentType: NavigationContentType.RESOURCE_OPERATION,\n resourceContext: childContext,\n },\n initiator: {\n sourceZone: navigationZone,\n sourceOperation: resolveEffectiveCoreOperationFromOperation(targetOperation),\n sourceRelationship: {\n parentResourceType: resourceType,\n parentResourceId,\n childResourceType: config.childResourceType,\n foreignKeyField: config.foreignKeyField,\n relationshipEdgeKey: config.relationshipEdgeKey,\n inChildView: config.inChildView,\n },\n },\n relationshipTransition: config.transition,\n /*\n * `RelationshipDisplayInParentNavigation.maxDepth` — this relationship's override of the\n * layout's global push ceiling. Read straight off the descriptor's `navigationConfig`, which\n * IS that schema, rather than re-resolved: `transition` beside it comes from the same object.\n *\n * Nothing read it before #411, so a relationship that declared a ceiling got unbounded pushes\n * and no error.\n */\n relationshipMaxDepth: config.navigationConfig?.maxDepth,\n });\n }, [\n deriveChildContextWithOperation,\n registry,\n navigate,\n navigationZone,\n resourceType,\n parentResourceId,\n resolveAddressableChildReadOperation,\n resolveAddressableChildListOperation,\n ]);\n\n // Render a child resource — list for 1:N/N:N, single display for 1:1\n const renderChild = (config: ChildResourceConfig) => {\n if (config.transition) {\n return (\n <Button\n key={config.relationshipEdgeKey}\n variant={ButtonVariants_Variant.OUTLINE}\n onClick={() => handleNavigateChild(config)}\n >\n {config.label}\n </Button>\n );\n }\n\n const childResourceConfig = registry.resourceConfigurations[config.childResourceType];\n\n if (isOneToOne(config)) {\n // 1:1 relationship — render as a single resource display via READ\n const readOperation = childResourceConfig\n ? resolveAddressableChildReadOperation(config)\n : undefined;\n\n if (readOperation) {\n // Derive child context with READ operation\n const childContext = deriveChildContextWithOperation(config, readOperation);\n\n return (\n <ResourceAutomaticDisplayer\n key={config.relationshipEdgeKey}\n resourceContext={childContext}\n />\n );\n }\n return null;\n }\n\n const listOperation = childResourceConfig\n ? resolveAddressableChildListOperation(config)\n : undefined;\n\n if (!listOperation) return null;\n\n // Create child context with parent filter (LIST-like operation)\n const childContext = deriveChildContextWithOperation(config, listOperation);\n\n // No preview branch here any more. Automatic composition renders the child's\n // full LIST surface; a compact preview is a DELIBERATE choice, so it is made\n // where deliberate choices live — a template placing `<RelatedResourcePreview>`.\n // It used to be selected by an `inParentView.inlineLimit` key that nothing in\n // the repository ever authored, which is how the capability stayed dark.\n\n const childInlineParentContext: InlineParentContext = {\n parentResourceType: resourceType,\n parentResourceId,\n transition: typeof config.transition === 'string' ? config.transition : config.transition?.transition,\n };\n\n return (\n <ResourceLayout_List\n key={config.relationshipEdgeKey}\n resourceContext={childContext}\n navigationZone={navigationZone}\n navigationInitiator={navigationInitiator}\n inlineParentContext={childInlineParentContext}\n sourceRelationship={{\n parentResourceType: resourceType,\n parentResourceId,\n childResourceType: config.childResourceType,\n foreignKeyField: config.foreignKeyField,\n relationshipEdgeKey: config.relationshipEdgeKey,\n inChildView: config.inChildView,\n }}\n />\n );\n };\n\n const buildRelationshipContentSection = useCallback((config: ChildResourceConfig) => ({\n id: config.relationshipEdgeKey,\n title: config.label,\n // This host renders a visible heading for the region (`title` above), so the\n // embedded child surface must not stack its OWN standalone page chrome under\n // it — its generic heading, its description and its parent breadcrumb all\n // restate what the section title and the surrounding record already say.\n // Threading the heading context is what every other section-grouping host\n // does (FormLayout / DisplayLayout / CompositeLayout pass `providesHeading`);\n // this one never did, which was invisible only because the nested container\n // could not render at all.\n content: (\n // D9 — each automatically-composed child is a level of DESCENT, bounded\n // exactly like an explicitly embedded one. Keyed on `(edge, parent row)`:\n // a self-referencing hierarchy walks the SAME edge over DIFFERENT rows and\n // must keep descending, while the same record reached twice is a cycle.\n // Self edges are in scope — `getChildDirectionRelationships` returns\n // `[...childRelationships, ...selfRelationships]`, so `Category → Category`\n // already renders itself as a section today.\n <EmbeddedResourceDescentBoundary\n descentKey={`nested:${config.relationshipEdgeKey}::${parentResourceId || 'no-row'}`}\n >\n <SectionHostHeadingContext.Provider value={true}>\n {renderChild(config)}\n </SectionHostHeadingContext.Provider>\n </EmbeddedResourceDescentBoundary>\n ),\n }), [renderChild, parentResourceId]);\n\n // MOVED here (was above `renderChild`, before the `useCallback` below it) to fix a\n // Rules-of-Hooks violation: returning early while a hook still followed meant a\n // render with no children called ONE FEWER hook than a render with children.\n //\n // Not theoretical. `childConfigs` is derived from `parentData`, and a conditional\n // or discriminated relationship is DEFERRED while `parentData` is undefined (see\n // the header). So on a resource whose child relationships are ALL conditional, the\n // first render returned early and the second — once `parentData` arrived — called\n // the extra hook, which is React's \"Rendered more hooks than during the previous\n // render.\" A resource with any unconditional child never reached it, which is why\n // it survived unnoticed. `rules-of-hooks` would have caught it; lint does not run\n // in this repository.\n //\n // Every guard now sits together, AFTER the last hook. Keep it that way.\n // Report what this container actually DID, for the provider's post-commit\n // duplication check. `true` only on the path that reaches the render below.\n useReportAutomaticComposition(\n childConfigs.length > 0 && isReady && !templateOwnsChildComposition,\n );\n\n if (childConfigs.length === 0) return null;\n\n if (!isReady) return null;\n\n // D12 — the template composed the child region itself, so this automatic block\n // stands down ENTIRELY rather than appending the children it did not place.\n // Same contract an authored `layout.display` already has for fields: the\n // template REPLACES the generated surface, it is not merged with it. Merging\n // is what would require a per-edge suppression flag on every relationship a\n // parent chose not to show — the configuration axis this design removes.\n //\n // Note it does NOT touch `resolveRelationshipNestedReadSurface`, so raw\n // relationship-object-field hiding stays independent of placement: omitting a\n // child hides it rather than downgrading it to a raw array in the body.\n if (templateOwnsChildComposition) return null;\n\n return (\n <LoadingGate i18nKeys={i18nKeys}>\n <div className=\"space-y-section\">\n {groupedChildren.items.map((item, index) => (\n item.type === 'single'\n ? (\n <ContentSectionContainer\n key={item.config.relationshipEdgeKey}\n config={{\n ...item.config.contentSectionConfig,\n ...(item.config.contentSectionConfig.mode === SectionMode.COLLAPSIBLE\n ? { showSingleSectionNav: true }\n : {}),\n }}\n sections={[buildRelationshipContentSection(item.config)]}\n />\n )\n : (\n <ContentSectionContainer\n key={`relationship-group-${item.mode}-${index}`}\n config={item.configs[0].contentSectionConfig}\n sections={item.configs.map(buildRelationshipContentSection)}\n />\n )\n ))}\n </div>\n </LoadingGate>\n );\n};\n\nexport function ResourceLayout_ContainerNested({ preset = CorePresetNames.DEFAULT, ...props }: ResourceLayoutPreset_ContainerNested_DefaultProps & ComponentPresetProps): React.JSX.Element {\n const Component = createComponentResolver<ResourceLayoutPreset_ContainerNested_DefaultProps>(FrontendComponentType.RESOURCES_LAYOUTS_CONTAINER_NESTED, 'ResourceLayout_ContainerNested')(preset);\n return <Component {...props} />;\n}\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import type { ParentReferenceConfig } from '../../components/data-display/automatic-displayer.utils';
|
|
2
3
|
import { BaseResourcesLayoutProps } from './component-props.resources-layout.frontend.schemas';
|
|
3
4
|
import { ComponentPresetProps } from '../../core/components-registry/component-registry.frontend.schemas';
|
|
4
5
|
export interface ResourceLayoutPreset_Header_DefaultProps extends BaseResourcesLayoutProps {
|
|
@@ -16,6 +17,18 @@ export interface ResourceLayoutPreset_Header_DefaultProps extends BaseResourcesL
|
|
|
16
17
|
* band in one place is what makes the alignment un-driftable.
|
|
17
18
|
*/
|
|
18
19
|
actions?: React.ReactNode;
|
|
20
|
+
/**
|
|
21
|
+
* The parent-reference presentation for THIS record, as the READ layout resolved it — the parent's
|
|
22
|
+
* type and id, the declared `ParentDisplay`, and the controller-managed link back. Forwarded to the
|
|
23
|
+
* header template so a parent FK PLACED there renders the way the resource declared it, exactly as
|
|
24
|
+
* it would in the body.
|
|
25
|
+
*
|
|
26
|
+
* A parent reference is not an element the framework adds: it is how the parent FK field renders,
|
|
27
|
+
* wherever a template places it. Wonder Todos declares a todo's list as a linked BADGE and puts the
|
|
28
|
+
* list in the header (the chip "that links back"), and the header never received this config, so
|
|
29
|
+
* the declaration had nothing to act on and only the breadcrumb linked to the list (#1945).
|
|
30
|
+
*/
|
|
31
|
+
parentReferenceConfig?: ParentReferenceConfig;
|
|
19
32
|
}
|
|
20
33
|
/**
|
|
21
34
|
* Centralized resource header component.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceLayout_Header.d.ts","sourceRoot":"","sources":["../../../../../src/components/resources/ResourceLayout_Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ResourceLayout_Header.d.ts","sourceRoot":"","sources":["../../../../../src/components/resources/ResourceLayout_Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAqBpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uEAAuE,CAAC;AAcnH,OAAO,EAAE,wBAAwB,EAAE,MAAM,qDAAqD,CAAA;AAE9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,kFAAkF,CAAC;AAwBxH,MAAM,WAAW,wCAAyC,SAAQ,wBAAwB;IACxF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;;;;;;;;OAUG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;CAC/C;AAQD;;;GAGG;AACH,eAAO,MAAM,mCAAmC,EAAE,KAAK,CAAC,EAAE,CAAC,wCAAwC,CAsgBlG,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,EACpC,MAAgC,EAChC,GAAG,KAAK,EACT,EAAE,wCAAwC,GAAG,oBAAoB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAGrF"}
|
|
@@ -8,7 +8,7 @@ import { useResourceRegistry } from '../../core/resources/useResourceRegistry.js
|
|
|
8
8
|
import { useIconRegistry } from '../../core/icons/useIconRegistry.js';
|
|
9
9
|
import { useOptionalResourceOperationViewContext } from '../../core/resources/ResourceOperationViewContext.js';
|
|
10
10
|
import { FrontendResourceUtils, frontendResourceUtils } from '../../core/resources/frontend-resource.utils.js';
|
|
11
|
-
import { resolveEffectiveCoreOperationFromOperation } from '../../core/resources/operation-semantics.frontend.utils.js';
|
|
11
|
+
import { resolveEffectiveCoreOperationFromOperation, resolveSurfaceTitleOperationIdentifier } from '../../core/resources/operation-semantics.frontend.utils.js';
|
|
12
12
|
import { HeaderIconPlacement } from '../../core/resources/resources.frontend.schemas.js';
|
|
13
13
|
import { resolveCanonicalRMMReadOperation, } from '../../core/resources/rmm/canonical-read.frontend.utils.js';
|
|
14
14
|
import { ApplicationLevel_NavigationBack, NavigationBackHost } from '../../components/navigation/app-level/ApplicationLevel_NavigationBack.js';
|
|
@@ -32,7 +32,7 @@ import { CorePresetNames, FrontendComponentType } from '@wildo-ai/presets-compon
|
|
|
32
32
|
* nothing beneath the header. `h-7` is `text-xl`'s own line box.
|
|
33
33
|
*/
|
|
34
34
|
function PendingRecordNameBand({ className, actions }) {
|
|
35
|
-
return (_jsx("div", { className: cn(className || 'flex-1'), "data-resource-header-pending": "true", children: _jsxs("div", { className: "flex items-center gap-field", children: [_jsx("div", { className: "min-w-0 flex-1", children: _jsx(Skeleton, { className: "h-7 w-48 max-w-full", "aria-hidden": "true" }) }), actions && _jsx("div", { className: "flex shrink-0 items-center", children: actions })] }) }));
|
|
35
|
+
return (_jsx("div", { className: cn(className || 'flex-1'), "data-resource-header-pending": "true", children: _jsxs("div", { className: "flex flex-wrap items-center gap-field", children: [_jsx("div", { className: "min-w-0 flex-1 basis-60", children: _jsx(Skeleton, { className: "h-7 w-48 max-w-full", "aria-hidden": "true" }) }), actions && _jsx("div", { className: "ml-auto flex shrink-0 items-center", children: actions })] }) }));
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
38
38
|
* Resource types already warned about a title-less authored header template —
|
|
@@ -43,7 +43,7 @@ const warnedMissingHeaderTitleResourceTypes = new Set();
|
|
|
43
43
|
* Centralized resource header component.
|
|
44
44
|
* Displays title and description for resource operations with consistent styling.
|
|
45
45
|
*/
|
|
46
|
-
export const ResourceLayoutPreset_Header_Default = ({ resourceContext, navigationZone, navigationInitiator, title: titleOverride, description: descriptionOverride, className, actions, }) => {
|
|
46
|
+
export const ResourceLayoutPreset_Header_Default = ({ resourceContext, navigationZone, navigationInitiator, title: titleOverride, description: descriptionOverride, className, actions, parentReferenceConfig, }) => {
|
|
47
47
|
const hostProvidesHeading = useSectionHostProvidesHeading();
|
|
48
48
|
const ambientOperationViewContext = useOptionalResourceOperationViewContext();
|
|
49
49
|
// The operation-view provider describes the ROUTED host operation, and an
|
|
@@ -61,7 +61,7 @@ export const ResourceLayoutPreset_Header_Default = ({ resourceContext, navigatio
|
|
|
61
61
|
: undefined;
|
|
62
62
|
const effectiveResourceContext = operationViewContext?.resourceContext ?? resourceContext;
|
|
63
63
|
const { resourceType, operation, contextResourceIdentifiers } = effectiveResourceContext;
|
|
64
|
-
const { tResourceHeader, tResourceOperation, t, isReady } = useI18n({
|
|
64
|
+
const { tResourceHeader, tResourceOperation, t, formatDate, formatDateTime, isReady } = useI18n({
|
|
65
65
|
component: FrontendComponentType.RESOURCES_LAYOUTS_HEADER,
|
|
66
66
|
resource: resourceType,
|
|
67
67
|
});
|
|
@@ -92,14 +92,23 @@ export const ResourceLayoutPreset_Header_Default = ({ resourceContext, navigatio
|
|
|
92
92
|
// RECORD, so it needs the row fetched even when the resource declares no
|
|
93
93
|
// `getFrontendResourceLabel` (the template may show only badges and rely on
|
|
94
94
|
// the operation-title fallback for the name).
|
|
95
|
-
|
|
95
|
+
//
|
|
96
|
+
// It is the READ page's identity line and nothing else. An UPDATE surface renders the same header
|
|
97
|
+
// band above a FORM, and every state badge a header template places (status, priority, the parent
|
|
98
|
+
// chip) is a field that form is editing: measured on Wonder Todos, the task edit dialog showed
|
|
99
|
+
// "B — OVER estimate · Pending · High · <parent todo>" directly above inputs holding those same four
|
|
100
|
+
// values, so each fact appeared twice and the static copy went stale the moment a control moved.
|
|
101
|
+
// A DELETE confirmation needs to know WHICH record, which the name answers; its state is not the
|
|
102
|
+
// question being asked. So on every non-READ surface the header falls back to the record name.
|
|
103
|
+
const headerTemplate = effectiveCoreOperation === CoreResourceOperation.READ
|
|
104
|
+
? resourceConfig?.frontendConfiguration?.layout?.header
|
|
105
|
+
: undefined;
|
|
96
106
|
const shouldFetchLabel = !!getFrontendResourceLabel && !!resourceId && isRowScopedSurface;
|
|
97
107
|
const shouldFetchRecord = (!!getFrontendResourceLabel || !!headerTemplate) && !!resourceId && isRowScopedSurface;
|
|
98
108
|
// Boolean (not object identity) — the label-fetch effect only needs "is a
|
|
99
109
|
// config present", and the context-provided config object may churn identity.
|
|
100
110
|
const hasResourceConfig = !!resourceConfig;
|
|
101
111
|
// State for resource label
|
|
102
|
-
const [resourceLabel, setResourceLabel] = useState(null);
|
|
103
112
|
/** The fetched record — feeds an authored `layout.header` template's fields. */
|
|
104
113
|
const [resourceData, setResourceData] = useState(undefined);
|
|
105
114
|
const [isLoadingLabel, setIsLoadingLabel] = useState(false);
|
|
@@ -159,15 +168,11 @@ export const ResourceLayoutPreset_Header_Default = ({ resourceContext, navigatio
|
|
|
159
168
|
: CoreResourceOperation.READ,
|
|
160
169
|
discriminator: resourceId ?? undefined,
|
|
161
170
|
}));
|
|
162
|
-
//
|
|
171
|
+
// A ref keeps the fetch effect from re-running when `doOperation` changes identity.
|
|
163
172
|
const doOperationRef = useRef(doOperation);
|
|
164
|
-
const tRef = useRef(t);
|
|
165
173
|
useEffect(() => {
|
|
166
174
|
doOperationRef.current = doOperation;
|
|
167
175
|
}, [doOperation]);
|
|
168
|
-
useEffect(() => {
|
|
169
|
-
tRef.current = t;
|
|
170
|
-
}, [t]);
|
|
171
176
|
// Fetch resource and compute label
|
|
172
177
|
useEffect(() => {
|
|
173
178
|
// `operationPathKey` is null when the resource has no URL-bearing READ — no
|
|
@@ -178,7 +183,6 @@ export const ResourceLayoutPreset_Header_Default = ({ resourceContext, navigatio
|
|
|
178
183
|
let cancelled = false;
|
|
179
184
|
const fetchAndComputeLabel = async () => {
|
|
180
185
|
setIsLoadingLabel(true);
|
|
181
|
-
setResourceLabel(null);
|
|
182
186
|
setResourceData(undefined);
|
|
183
187
|
setLabelError(null);
|
|
184
188
|
try {
|
|
@@ -192,15 +196,6 @@ export const ResourceLayoutPreset_Header_Default = ({ resourceContext, navigatio
|
|
|
192
196
|
if (resourceData && typeof resourceData === 'object' && !Array.isArray(resourceData)) {
|
|
193
197
|
setResourceData(resourceData);
|
|
194
198
|
}
|
|
195
|
-
const label = FrontendResourceUtils.computeFrontendResourceLabel({
|
|
196
|
-
resourceType,
|
|
197
|
-
registry,
|
|
198
|
-
currentObject: resourceData,
|
|
199
|
-
objectContext: effectiveResourceContext,
|
|
200
|
-
initiatorUserContext: undefined,
|
|
201
|
-
t: tRef.current,
|
|
202
|
-
});
|
|
203
|
-
setResourceLabel(label);
|
|
204
199
|
}
|
|
205
200
|
catch (error) {
|
|
206
201
|
if (cancelled)
|
|
@@ -210,7 +205,6 @@ export const ResourceLayoutPreset_Header_Default = ({ resourceContext, navigatio
|
|
|
210
205
|
// Rendered to the person (and as its tooltip): localized text, never the reference (#1160).
|
|
211
206
|
setLabelError({ ...errorInfo, message: toUserFacingErrorMessage(error) });
|
|
212
207
|
// On error, fall back to showing resourceId
|
|
213
|
-
setResourceLabel(null);
|
|
214
208
|
setResourceData(undefined);
|
|
215
209
|
}
|
|
216
210
|
finally {
|
|
@@ -225,6 +219,26 @@ export const ResourceLayoutPreset_Header_Default = ({ resourceContext, navigatio
|
|
|
225
219
|
};
|
|
226
220
|
// eslint-disable-next-line react-hooks/exhaustive-deps -- refs for functions; CONTENT keys (not object identities) for contextResourceIdentifiers / contextualParameters / parentResourcesRequirements so provider re-renders with unchanged content don't refire the fetch (audit I1). The closed-over objects are only stale when content is identical, which is exactly when re-running would be redundant.
|
|
227
221
|
}, [shouldFetchRecord, operationPathKey, contextResourceIdentifiersKey, contextualParametersKey, parentResourcesRequirementsKey, hasResourceConfig, resourceType]);
|
|
222
|
+
/*
|
|
223
|
+
* The record's name is DERIVED from the fetched row, not stored at fetch time: a name built with `t` or a
|
|
224
|
+
* date formatter must follow the viewer's language and regional preferences when they change, without
|
|
225
|
+
* fetching the row again. It used to be computed once inside the fetch, through refs, and kept the
|
|
226
|
+
* words and date format of the moment the row arrived.
|
|
227
|
+
*/
|
|
228
|
+
const resourceLabel = useMemo(() => {
|
|
229
|
+
if (!resourceData)
|
|
230
|
+
return null;
|
|
231
|
+
return FrontendResourceUtils.computeFrontendResourceLabel({
|
|
232
|
+
resourceType,
|
|
233
|
+
registry,
|
|
234
|
+
currentObject: resourceData,
|
|
235
|
+
objectContext: effectiveResourceContext,
|
|
236
|
+
initiatorUserContext: undefined,
|
|
237
|
+
t,
|
|
238
|
+
formatDate,
|
|
239
|
+
formatDateTime,
|
|
240
|
+
});
|
|
241
|
+
}, [resourceData, resourceType, registry, effectiveResourceContext, t, formatDate, formatDateTime]);
|
|
228
242
|
// Resolve title — an explicit override, else the OPERATION's own title
|
|
229
243
|
// (`resources.<type>.operations.<op>.title`), which the labelling pipeline plans for every
|
|
230
244
|
// operation. The framework never surfaces the generic `components.RESOURCES_LAYOUTS_HEADER.title`
|
|
@@ -234,11 +248,16 @@ export const ResourceLayoutPreset_Header_Default = ({ resourceContext, navigatio
|
|
|
234
248
|
// An operation whose title is not generated yet shows that title's KEY (#1450). Until then
|
|
235
249
|
// `tResourceOperation` answered '' and this chain fell through to the resource's HEADER title, a
|
|
236
250
|
// fallback that could only ever fire for a resource with no labels at all — where it was a key too.
|
|
251
|
+
//
|
|
252
|
+
// Which operation's title names this surface is decided once, for the header and the overlay title alike
|
|
253
|
+
// (`resolveSurfaceTitleOperationIdentifier`): the core edit page takes READ's heading, a named action keeps
|
|
254
|
+
// its own. A record label, where the resource declares one, still replaces either (see `displayLabel`).
|
|
255
|
+
const titleOperationId = resolveSurfaceTitleOperationIdentifier(operation.operationIdentifier, resourceConfig?.operations);
|
|
237
256
|
const title = useMemo(() => {
|
|
238
257
|
if (titleOverride)
|
|
239
258
|
return titleOverride;
|
|
240
|
-
return tResourceOperation(resourceType,
|
|
241
|
-
}, [titleOverride, tResourceOperation, resourceType,
|
|
259
|
+
return tResourceOperation(resourceType, titleOperationId, 'title');
|
|
260
|
+
}, [titleOverride, tResourceOperation, resourceType, titleOperationId]);
|
|
242
261
|
// Resolve description — prefer override, then resource header. No
|
|
243
262
|
// component-level fallback: the generic "Manage and organize your resource
|
|
244
263
|
// layouts efficiently." is a component-scoped label, not a per-resource one,
|
|
@@ -247,13 +266,21 @@ export const ResourceLayoutPreset_Header_Default = ({ resourceContext, navigatio
|
|
|
247
266
|
// description that the labelling planner would otherwise be prompted to
|
|
248
267
|
// fill. Returning `null` lets the header collapse cleanly until a real
|
|
249
268
|
// description is authored.
|
|
269
|
+
//
|
|
270
|
+
// The resource's description describes the COLLECTION, so it is shown on the collection surface and nowhere
|
|
271
|
+
// else. A create or edit dialog opens over that very list, and printed the same sentence under its own title,
|
|
272
|
+
// once on the page and once in the dialog (measured on every Wonder Todos create/edit dialog); a record's
|
|
273
|
+
// page is about the record. An explicit `description` from the host is still shown wherever it is passed.
|
|
274
|
+
const isCollectionSurface = effectiveCoreOperation === CoreResourceOperation.LIST || effectiveCoreOperation === CoreResourceOperation.SEARCH;
|
|
250
275
|
const description = useMemo(() => {
|
|
251
276
|
if (descriptionOverride)
|
|
252
277
|
return descriptionOverride;
|
|
278
|
+
if (!isCollectionSurface)
|
|
279
|
+
return null;
|
|
253
280
|
// OPTIONAL by decision, not by falsy check: a description is supplementary text, so its
|
|
254
281
|
// absence collapses the header instead of rendering a key under a title that is fine.
|
|
255
282
|
return resolveOptionalResourceHeaderDescription({ tResourceHeader, resourceType }) ?? null;
|
|
256
|
-
}, [descriptionOverride, tResourceHeader, resourceType]);
|
|
283
|
+
}, [descriptionOverride, isCollectionSurface, tResourceHeader, resourceType]);
|
|
257
284
|
// Determine what to show in description
|
|
258
285
|
// L-1: combine local in-flight flag with Tier-2 derived loading; both must
|
|
259
286
|
// be quiet to commit a label render. `isInitialLoad` lets us suppress the
|
|
@@ -379,17 +406,17 @@ export const ResourceLayoutPreset_Header_Default = ({ resourceContext, navigatio
|
|
|
379
406
|
// at the same x as the icon below it instead of being indented past it; the
|
|
380
407
|
// icon lives INSIDE the title row (items-center against the h1 alone), so a
|
|
381
408
|
// description can never pull the icon off the resource-name line.
|
|
382
|
-
return (_jsxs("div", { className: cn(className || 'flex-1'), children: [!hostProvidesHeading && (_jsx(ResourceLayout_Breadcrumb, { resourceContext: effectiveResourceContext, navigationZone: navigationZone, navigationInitiator: navigationInitiator })), _jsxs("div", { className: "flex items-center gap-field", children: [_jsx(ApplicationLevel_NavigationBack, { host: NavigationBackHost.SURFACE, navigationZone: navigationZone }), resourceIcon && (_jsx("div", { className: "shrink-0", children: resourceIcon })), headerTemplate && headerSchema ? (
|
|
409
|
+
return (_jsxs("div", { className: cn(className || 'flex-1'), children: [!hostProvidesHeading && (_jsx(ResourceLayout_Breadcrumb, { resourceContext: effectiveResourceContext, navigationZone: navigationZone, navigationInitiator: navigationInitiator })), _jsxs("div", { className: "flex flex-wrap items-center gap-field", children: [_jsx(ApplicationLevel_NavigationBack, { host: NavigationBackHost.SURFACE, navigationZone: navigationZone }), resourceIcon && (_jsx("div", { className: "shrink-0", children: resourceIcon })), headerTemplate && headerSchema ? (
|
|
383
410
|
/* The resource composes the identity line itself — see `layout.header`.
|
|
384
411
|
`flex-1 min-w-0` keeps the composed row claiming the band between the
|
|
385
412
|
icon and the actions, and lets a long name truncate rather than push
|
|
386
413
|
the action cluster off the row. */
|
|
387
|
-
_jsx("div", { className: "min-w-0 flex-1", children: _jsx(ResourceHeaderContextProvider, { value: headerContextValue, children: _jsx(AutomaticDisplayer, { schema: headerSchema, data: resourceData, labels: headerLabels, disableInlineEdit: true, layoutTemplate: headerTemplate, defaultDisplayChromeMode: DisplayChromeMode.INLINE, isLoading: !resourceData }) }) })) : (
|
|
414
|
+
_jsx("div", { className: "min-w-0 flex-1 basis-60", children: _jsx(ResourceHeaderContextProvider, { value: headerContextValue, children: _jsx(AutomaticDisplayer, { schema: headerSchema, data: resourceData, labels: headerLabels, resourceType: resourceType, resourceId: resourceId ? String(resourceId) : undefined, contextualParameters: contextualParameters, contextResourceIdentifiers: contextResourceIdentifiers, parentResourcesRequirements: effectiveResourceContext.parentResourcesRequirements, navigationZone: navigationZone, parentReferenceConfig: parentReferenceConfig, disableInlineEdit: true, layoutTemplate: headerTemplate, defaultDisplayChromeMode: DisplayChromeMode.INLINE, isLoading: !resourceData }) }) })) : (
|
|
388
415
|
// A PAGE title is the level-1 heading on BOTH paths: `ResourceHeaderTitle` (the templated path) became an
|
|
389
416
|
// `h1` in #533, and this default path stayed `h2`, so a page's title level depended on whether its resource
|
|
390
417
|
// authored a header template (#1101). Under a host section that owns the heading (an embedded READ showing
|
|
391
418
|
// its record name) this is not the page title, so it sits one level below the host's heading.
|
|
392
|
-
hostProvidesHeading ? (_jsx("h2", { className: "min-w-0 flex-1 text-xl font-semibold text-foreground", children: hasDisplayLabel ? displayLabel : title })) : (_jsx("h1", { className: "min-w-0 flex-1 text-xl font-semibold text-foreground", children: hasDisplayLabel ? displayLabel : title }))), actions && _jsx("div", { className: "flex shrink-0 items-center", children: actions })] }), !hasDisplayLabel && description && (_jsx("p", { className: "mt-item-xs text-sm text-muted-foreground", children: description })), labelError && (_jsxs("p", { className: "mt-item-xs text-xs text-destructive/80 inline-flex items-center gap-item-xs", role: "alert", "aria-live": "polite", title: labelError.message, children: [renderIcon(StandardIconReference.WARNING, { size: IconSize.XS }), _jsx("span", { children: labelError.message })] }))] }));
|
|
419
|
+
hostProvidesHeading ? (_jsx("h2", { className: "min-w-0 flex-1 basis-60 text-xl font-semibold text-foreground", children: hasDisplayLabel ? displayLabel : title })) : (_jsx("h1", { className: "min-w-0 flex-1 basis-60 text-xl font-semibold text-foreground", children: hasDisplayLabel ? displayLabel : title }))), actions && _jsx("div", { className: "ml-auto flex shrink-0 items-center", children: actions })] }), !hasDisplayLabel && description && (_jsx("p", { className: "mt-item-xs text-sm text-muted-foreground", children: description })), labelError && (_jsxs("p", { className: "mt-item-xs text-xs text-destructive/80 inline-flex items-center gap-item-xs", role: "alert", "aria-live": "polite", title: labelError.message, children: [renderIcon(StandardIconReference.WARNING, { size: IconSize.XS }), _jsx("span", { children: labelError.message })] }))] }));
|
|
393
420
|
};
|
|
394
421
|
export function ResourceLayout_Header({ preset = CorePresetNames.DEFAULT, ...props }) {
|
|
395
422
|
const Component = createComponentResolver(FrontendComponentType.RESOURCES_LAYOUTS_HEADER, 'ResourceLayout_Header')(preset);
|