@plumile/backoffice-react 0.1.104 → 0.1.106
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/lib/esm/_virtual/_rolldown/runtime.js +7 -0
- package/lib/esm/auth/AuthRefreshNotice.js +38 -0
- package/lib/esm/auth/AuthRefreshNotice.js.map +1 -0
- package/lib/esm/auth/TotpQrCode.js +28 -0
- package/lib/esm/auth/TotpQrCode.js.map +1 -0
- package/lib/esm/auth/authRefreshNotice.css.js +7 -0
- package/lib/esm/auth/authRefreshNotice.css.js.map +1 -0
- package/lib/esm/{AuthPanel-BaIRFGbX.js → auth/login/AuthPanel.js} +7 -7
- package/lib/esm/auth/login/AuthPanel.js.map +1 -0
- package/lib/esm/auth/login/EmailCapturePanel.js +50 -0
- package/lib/esm/auth/login/EmailCapturePanel.js.map +1 -0
- package/lib/esm/auth/login/LoginFlow.js +130 -0
- package/lib/esm/auth/login/LoginFlow.js.map +1 -0
- package/lib/esm/auth/login/MethodChooser.js +49 -0
- package/lib/esm/auth/login/MethodChooser.js.map +1 -0
- package/lib/esm/auth/login/MfaChallengeForm.js +80 -0
- package/lib/esm/auth/login/MfaChallengeForm.js.map +1 -0
- package/lib/esm/auth/login/OidcButtons.js +29 -0
- package/lib/esm/auth/login/OidcButtons.js.map +1 -0
- package/lib/esm/auth/login/PasskeyLoginForm.js +81 -0
- package/lib/esm/auth/login/PasskeyLoginForm.js.map +1 -0
- package/lib/esm/auth/login/PasswordLoginPanel.js +37 -0
- package/lib/esm/auth/login/PasswordLoginPanel.js.map +1 -0
- package/lib/esm/auth/login/loginPage.css.js +7 -0
- package/lib/esm/auth/login/loginPage.css.js.map +1 -0
- package/lib/esm/auth/login/synchronizeAuthStatusQuery.js +10 -0
- package/lib/esm/auth/login/synchronizeAuthStatusQuery.js.map +1 -0
- package/lib/esm/{AcceptInvitationScreen-B1IPafwD.js → auth/pages/AcceptInvitationScreen.js} +13 -13
- package/lib/esm/auth/pages/AcceptInvitationScreen.js.map +1 -0
- package/lib/esm/{PasswordResetCompleteScreen-Cgg96DPo.js → auth/pages/PasswordResetCompleteScreen.js} +10 -10
- package/lib/esm/auth/pages/PasswordResetCompleteScreen.js.map +1 -0
- package/lib/esm/{PasswordResetRequestScreen-I1nFvGLd.js → auth/pages/PasswordResetRequestScreen.js} +10 -10
- package/lib/esm/auth/pages/PasswordResetRequestScreen.js.map +1 -0
- package/lib/esm/{VerifyEmailScreen-Br5KyHjg.js → auth/pages/VerifyEmailScreen.js} +7 -7
- package/lib/esm/auth/pages/VerifyEmailScreen.js.map +1 -0
- package/lib/esm/components/backoffice/actions/BackofficeEntityActionFormDialog.js +591 -0
- package/lib/esm/components/backoffice/actions/BackofficeEntityActionFormDialog.js.map +1 -0
- package/lib/esm/components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js +26 -0
- package/lib/esm/components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js.map +1 -0
- package/lib/esm/components/backoffice/actions/backofficeEntityActionFormDialog.css.js +7 -0
- package/lib/esm/components/backoffice/actions/backofficeEntityActionFormDialog.css.js.map +1 -0
- package/lib/esm/{toastViewAction-DJkv_4p9.js → components/backoffice/actions/toastViewAction.js} +2 -2
- package/lib/esm/{toastViewAction-DJkv_4p9.js.map → components/backoffice/actions/toastViewAction.js.map} +1 -1
- package/lib/esm/{buildDataTableColumns-DGPjPK4N.js → components/backoffice/columns/buildDataTableColumns.js} +18 -18
- package/lib/esm/{buildDataTableColumns-DGPjPK4N.js.map → components/backoffice/columns/buildDataTableColumns.js.map} +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeAuditMetadataPanel.js +31 -0
- package/lib/esm/components/backoffice/detail/BackofficeAuditMetadataPanel.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js +22 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailErrorList.js +40 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailErrorList.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailField.js +30 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailField.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.css.js +7 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.js +24 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailLayout.js +20 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailLayout.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailPayload.js +18 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailPayload.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailRelationLink.js +56 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailRelationLink.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailRelationList.js +11 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailRelationList.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js +123 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailSection.js +36 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailSection.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailTaggedValue.js +18 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailTaggedValue.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeEntityRefLink.js +17 -0
- package/lib/esm/components/backoffice/detail/BackofficeEntityRefLink.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeEntitySummaryHeader.js +72 -0
- package/lib/esm/components/backoffice/detail/BackofficeEntitySummaryHeader.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeEnumLabel.js +11 -0
- package/lib/esm/components/backoffice/detail/BackofficeEnumLabel.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeKpiStrip.js +35 -0
- package/lib/esm/components/backoffice/detail/BackofficeKpiStrip.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeLifecycleTimelineSection.js +37 -0
- package/lib/esm/components/backoffice/detail/BackofficeLifecycleTimelineSection.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficePayloadInspectorSection.js +36 -0
- package/lib/esm/components/backoffice/detail/BackofficePayloadInspectorSection.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeReferenceValue.js +22 -0
- package/lib/esm/components/backoffice/detail/BackofficeReferenceValue.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeRelationsSummaryGrid.js +43 -0
- package/lib/esm/components/backoffice/detail/BackofficeRelationsSummaryGrid.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeScopeStack.js +28 -0
- package/lib/esm/components/backoffice/detail/BackofficeScopeStack.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeStatusMetaBadge.js +27 -0
- package/lib/esm/components/backoffice/detail/BackofficeStatusMetaBadge.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeTokenUsageBreakdown.js +37 -0
- package/lib/esm/components/backoffice/detail/BackofficeTokenUsageBreakdown.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeUsageCostBreakdown.js +84 -0
- package/lib/esm/components/backoffice/detail/BackofficeUsageCostBreakdown.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeAuditMetadataPanel.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeAuditMetadataPanel.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailBadgeRow.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailBadgeRow.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailErrorList.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailErrorList.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailField.css.js +15 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailField.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailLayout.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailLayout.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailRelationLink.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailRelationLink.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailRelationList.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailRelationList.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailSection.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailSection.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailTaggedValue.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailTaggedValue.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeEntitySummaryHeader.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeEntitySummaryHeader.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeKpiStrip.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeKpiStrip.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeLifecycleTimelineSection.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeLifecycleTimelineSection.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficePayloadInspectorSection.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficePayloadInspectorSection.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeReferenceValue.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeReferenceValue.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeRelationsSummaryGrid.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeRelationsSummaryGrid.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeScopeStack.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeScopeStack.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeStatusMetaBadge.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeStatusMetaBadge.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeUsageCostBreakdown.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeUsageCostBreakdown.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/createBackofficeEntityLinkProps.js +21 -0
- package/lib/esm/components/backoffice/detail/createBackofficeEntityLinkProps.js.map +1 -0
- package/lib/esm/components/backoffice/detail/detailPayloadUtils.js +17 -0
- package/lib/esm/components/backoffice/detail/detailPayloadUtils.js.map +1 -0
- package/lib/esm/{BackofficeErrorBoundary-BwRVSDHU.js → components/backoffice/errors/BackofficeErrorBoundary.js} +2 -2
- package/lib/esm/{BackofficeErrorBoundary-BwRVSDHU.js.map → components/backoffice/errors/BackofficeErrorBoundary.js.map} +1 -1
- package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js +46 -0
- package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js.map +1 -0
- package/lib/esm/components/backoffice/filters/DeferredFilterSearchInput.js +67 -0
- package/lib/esm/components/backoffice/filters/DeferredFilterSearchInput.js.map +1 -0
- package/lib/esm/components/backoffice/filters/EntityFilterValue.js +46 -0
- package/lib/esm/components/backoffice/filters/EntityFilterValue.js.map +1 -0
- package/lib/esm/components/backoffice/filters/EntityIdFilterField.js +65 -0
- package/lib/esm/components/backoffice/filters/EntityIdFilterField.js.map +1 -0
- package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js +7 -0
- package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js.map +1 -0
- package/lib/esm/components/backoffice/filters/deferredFilterSearchInput.css.js +7 -0
- package/lib/esm/components/backoffice/filters/deferredFilterSearchInput.css.js.map +1 -0
- package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js +7 -0
- package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js.map +1 -0
- package/lib/esm/components/backoffice/hub/BackofficeHubTemplate.js +83 -0
- package/lib/esm/components/backoffice/hub/BackofficeHubTemplate.js.map +1 -0
- package/lib/esm/components/backoffice/hub/backofficeHubTemplate.css.js +7 -0
- package/lib/esm/components/backoffice/hub/backofficeHubTemplate.css.js.map +1 -0
- package/lib/esm/{BackofficePermissionsContext-CmWwudBU.js → components/backoffice/layout/BackofficePermissionsContext.js} +2 -2
- package/lib/esm/{BackofficePermissionsContext-CmWwudBU.js.map → components/backoffice/layout/BackofficePermissionsContext.js.map} +1 -1
- package/lib/esm/components/backoffice/layout/backofficeSidebarActions.css.js +7 -0
- package/lib/esm/components/backoffice/layout/backofficeSidebarActions.css.js.map +1 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js +10 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js.map +1 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js +69 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js.map +1 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortal.js +12 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortal.js.map +1 -0
- package/lib/esm/{BackofficeTopbarPortalContext-CphoSrZD.js → components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.js} +2 -2
- package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.js.map +1 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/assertValidBreadcrumb.js +16 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/assertValidBreadcrumb.js.map +1 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.js +7 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.js.map +1 -0
- package/lib/esm/{buildBreadcrumbs-C9cyiXb7.js → components/backoffice/layout/breadcrumb/buildBreadcrumbs.js} +7 -3
- package/lib/esm/components/backoffice/layout/breadcrumb/buildBreadcrumbs.js.map +1 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/types.js +0 -0
- package/lib/esm/components/backoffice/layout/buildSidebarSections.js +301 -0
- package/lib/esm/components/backoffice/layout/buildSidebarSections.js.map +1 -0
- package/lib/esm/components/backoffice/layout/mapViewerToSidebarProfileView.js +18 -0
- package/lib/esm/components/backoffice/layout/mapViewerToSidebarProfileView.js.map +1 -0
- package/lib/esm/components/backoffice/layout/sidebarUtils.js +98 -0
- package/lib/esm/components/backoffice/layout/sidebarUtils.js.map +1 -0
- package/lib/esm/components/backoffice/list/RowFlagsCell.css.js +7 -0
- package/lib/esm/components/backoffice/list/RowFlagsCell.css.js.map +1 -0
- package/lib/esm/components/backoffice/list/RowFlagsCell.js +37 -0
- package/lib/esm/components/backoffice/list/RowFlagsCell.js.map +1 -0
- package/lib/esm/components/backoffice/lists/BackofficeListToolbar.js +33 -0
- package/lib/esm/components/backoffice/lists/BackofficeListToolbar.js.map +1 -0
- package/lib/esm/components/backoffice/lists/backofficeListToolbar.css.js +13 -0
- package/lib/esm/components/backoffice/lists/backofficeListToolbar.css.js.map +1 -0
- package/lib/esm/components/backoffice/overview/BackofficeOverviewLayout.js +31 -0
- package/lib/esm/components/backoffice/overview/BackofficeOverviewLayout.js.map +1 -0
- package/lib/esm/components/backoffice/overview/backofficeOverviewLayout.css.js +7 -0
- package/lib/esm/components/backoffice/overview/backofficeOverviewLayout.css.js.map +1 -0
- package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js +117 -0
- package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js.map +1 -0
- package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js +7 -0
- package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js.map +1 -0
- package/lib/esm/components/backoffice/pickers/shared/EntityPickerList.js +27 -0
- package/lib/esm/components/backoffice/pickers/shared/EntityPickerList.js.map +1 -0
- package/lib/esm/components/backoffice/pickers/shared/EntityPickerRowBase.js +23 -0
- package/lib/esm/components/backoffice/pickers/shared/EntityPickerRowBase.js.map +1 -0
- package/lib/esm/components/backoffice/pickers/shared/EntityPickerShell.js +28 -0
- package/lib/esm/components/backoffice/pickers/shared/EntityPickerShell.js.map +1 -0
- package/lib/esm/components/backoffice/pickers/types.js +0 -0
- package/lib/esm/components/backoffice/refs/BackofficeEntityIdRef.js +35 -0
- package/lib/esm/components/backoffice/refs/BackofficeEntityIdRef.js.map +1 -0
- package/lib/esm/components/backoffice/refs/BackofficeEntityLink.js +30 -0
- package/lib/esm/components/backoffice/refs/BackofficeEntityLink.js.map +1 -0
- package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js +65 -0
- package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js.map +1 -0
- package/lib/esm/components/backoffice/refs/backofficeEntityIdRef.css.js +7 -0
- package/lib/esm/components/backoffice/refs/backofficeEntityIdRef.css.js.map +1 -0
- package/lib/esm/components/backoffice/refs/backofficeRelatedCountLink.css.js +7 -0
- package/lib/esm/components/backoffice/refs/backofficeRelatedCountLink.css.js.map +1 -0
- package/lib/esm/components/backoffice/routing/BackofficeContentBoundary.js +24 -0
- package/lib/esm/components/backoffice/routing/BackofficeContentBoundary.js.map +1 -0
- package/lib/esm/components/backoffice/routing/BackofficeContentError.js +27 -0
- package/lib/esm/components/backoffice/routing/BackofficeContentError.js.map +1 -0
- package/lib/esm/components/backoffice/routing/BackofficeContentFallback.js +47 -0
- package/lib/esm/components/backoffice/routing/BackofficeContentFallback.js.map +1 -0
- package/lib/esm/components/backoffice/routing/BackofficeRouteFallback.js +25 -0
- package/lib/esm/components/backoffice/routing/BackofficeRouteFallback.js.map +1 -0
- package/lib/esm/components/backoffice/routing/BackofficeRoutePendingBar.js +12 -0
- package/lib/esm/components/backoffice/routing/BackofficeRoutePendingBar.js.map +1 -0
- package/lib/esm/components/backoffice/routing/backofficeContentBoundary.css.js +7 -0
- package/lib/esm/components/backoffice/routing/backofficeContentBoundary.css.js.map +1 -0
- package/lib/esm/components/backoffice/routing/backofficeContentError.css.js +7 -0
- package/lib/esm/components/backoffice/routing/backofficeContentError.css.js.map +1 -0
- package/lib/esm/components/backoffice/routing/backofficeContentFallback.css.js +7 -0
- package/lib/esm/components/backoffice/routing/backofficeContentFallback.css.js.map +1 -0
- package/lib/esm/components/backoffice/routing/backofficeRouteFallback.css.js +7 -0
- package/lib/esm/components/backoffice/routing/backofficeRouteFallback.css.js.map +1 -0
- package/lib/esm/components/backoffice/routing/backofficeRoutePendingBar.css.js +7 -0
- package/lib/esm/components/backoffice/routing/backofficeRoutePendingBar.css.js.map +1 -0
- package/lib/esm/components/backoffice/scaffolds/BackofficeEntityDetailScaffold.js +12 -0
- package/lib/esm/components/backoffice/scaffolds/BackofficeEntityDetailScaffold.js.map +1 -0
- package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js +506 -0
- package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js.map +1 -0
- package/lib/esm/components/backoffice/scaffolds/BackofficeListFilterContext.js +40 -0
- package/lib/esm/components/backoffice/scaffolds/BackofficeListFilterContext.js.map +1 -0
- package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js +24 -0
- package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js.map +1 -0
- package/lib/esm/components/backoffice/scaffolds/backofficeEntityListScaffold.css.js +7 -0
- package/lib/esm/components/backoffice/scaffolds/backofficeEntityListScaffold.css.js.map +1 -0
- package/lib/esm/components/backoffice/scaffolds/backofficeTabbedDetailShell.css.js +7 -0
- package/lib/esm/components/backoffice/scaffolds/backofficeTabbedDetailShell.css.js.map +1 -0
- package/lib/esm/components/backoffice/shared/BackofficeFilterableCell.js +41 -0
- package/lib/esm/components/backoffice/shared/BackofficeFilterableCell.js.map +1 -0
- package/lib/esm/components/backoffice/shared/BackofficeFormattedCurrency.js +17 -0
- package/lib/esm/components/backoffice/shared/BackofficeFormattedCurrency.js.map +1 -0
- package/lib/esm/components/backoffice/shared/BackofficeFormattedNumber.js +17 -0
- package/lib/esm/components/backoffice/shared/BackofficeFormattedNumber.js.map +1 -0
- package/lib/esm/components/backoffice/shared/BackofficeInlineFilterRow.js +12 -0
- package/lib/esm/components/backoffice/shared/BackofficeInlineFilterRow.js.map +1 -0
- package/lib/esm/components/backoffice/shared/backofficeFilterableCell.css.js +16 -0
- package/lib/esm/components/backoffice/shared/backofficeFilterableCell.css.js.map +1 -0
- package/lib/esm/components/backoffice/shared/backofficeInlineFilterRow.css.js +7 -0
- package/lib/esm/components/backoffice/shared/backofficeInlineFilterRow.css.js.map +1 -0
- package/lib/esm/components/backoffice/tools/BackofficeToolsDocPanel.js +41 -0
- package/lib/esm/components/backoffice/tools/BackofficeToolsDocPanel.js.map +1 -0
- package/lib/esm/components/backoffice/tools/BackofficeToolsErrorFallback.js +48 -0
- package/lib/esm/components/backoffice/tools/BackofficeToolsErrorFallback.js.map +1 -0
- package/lib/esm/components/backoffice/tools/BackofficeToolsJsonForm.js +63 -0
- package/lib/esm/components/backoffice/tools/BackofficeToolsJsonForm.js.map +1 -0
- package/lib/esm/components/backoffice/tools/BackofficeToolsQueryBoundary.js +35 -0
- package/lib/esm/components/backoffice/tools/BackofficeToolsQueryBoundary.js.map +1 -0
- package/lib/esm/components/backoffice/tools/backofficeToolsDocPanel.css.js +7 -0
- package/lib/esm/components/backoffice/tools/backofficeToolsDocPanel.css.js.map +1 -0
- package/lib/esm/components/backoffice/tools/backofficeToolsForm.css.js +7 -0
- package/lib/esm/components/backoffice/tools/backofficeToolsForm.css.js.map +1 -0
- package/lib/esm/components/backoffice/tools/backofficeToolsJsonForm.css.js +7 -0
- package/lib/esm/components/backoffice/tools/backofficeToolsJsonForm.css.js.map +1 -0
- package/lib/esm/components/backoffice/tools/parseToolJson.js +13 -0
- package/lib/esm/components/backoffice/tools/parseToolJson.js.map +1 -0
- package/lib/esm/filters/filterHelpers.js +26 -0
- package/lib/esm/filters/filterHelpers.js.map +1 -0
- package/lib/esm/hooks/useAuth.js +444 -0
- package/lib/esm/hooks/useAuth.js.map +1 -0
- package/lib/esm/hooks/useBackofficeAuth.js +89 -0
- package/lib/esm/hooks/useBackofficeAuth.js.map +1 -0
- package/lib/esm/hooks/useBackofficeInfiniteScrollSentinel.js +39 -0
- package/lib/esm/hooks/useBackofficeInfiniteScrollSentinel.js.map +1 -0
- package/lib/esm/hooks/useBackofficeListRefetch.js +50 -0
- package/lib/esm/hooks/useBackofficeListRefetch.js.map +1 -0
- package/lib/esm/{useBackofficeListUrlState-D4fx5O7u.js → hooks/useBackofficeListUrlState.js} +2 -2
- package/lib/esm/hooks/useBackofficeListUrlState.js.map +1 -0
- package/lib/esm/hooks/useBackofficeLoadMore.js +18 -0
- package/lib/esm/hooks/useBackofficeLoadMore.js.map +1 -0
- package/lib/esm/hooks/useBackofficeSessionAuth.js +33 -0
- package/lib/esm/hooks/useBackofficeSessionAuth.js.map +1 -0
- package/lib/esm/hooks/useBackofficeSidebarPins.js +89 -0
- package/lib/esm/hooks/useBackofficeSidebarPins.js.map +1 -0
- package/lib/esm/hooks/useConditionalSubscription.js +63 -0
- package/lib/esm/hooks/useConditionalSubscription.js.map +1 -0
- package/lib/esm/hooks/useCopyToClipboard.js +31 -0
- package/lib/esm/hooks/useCopyToClipboard.js.map +1 -0
- package/lib/esm/hooks/useInfiniteConnection.js +95 -0
- package/lib/esm/hooks/useInfiniteConnection.js.map +1 -0
- package/lib/esm/hooks/useRefetchNeededReload.js +23 -0
- package/lib/esm/hooks/useRefetchNeededReload.js.map +1 -0
- package/lib/esm/hooks/useSidebarGroupCollapse.js +70 -0
- package/lib/esm/hooks/useSidebarGroupCollapse.js.map +1 -0
- package/lib/esm/i18n/createI18nInstance.js +68 -0
- package/lib/esm/i18n/createI18nInstance.js.map +1 -0
- package/lib/esm/i18n/locales/en/backofficeReact.js +436 -0
- package/lib/esm/i18n/locales/en/backofficeReact.js.map +1 -0
- package/lib/esm/i18n/locales/fr/backofficeReact.js +439 -0
- package/lib/esm/i18n/locales/fr/backofficeReact.js.map +1 -0
- package/lib/esm/i18n/mergeResourceLanguages.js +22 -0
- package/lib/esm/i18n/mergeResourceLanguages.js.map +1 -0
- package/lib/esm/i18n/resources.js +23 -0
- package/lib/esm/i18n/resources.js.map +1 -0
- package/lib/esm/i18n/useBackofficeFormats.js +23 -0
- package/lib/esm/i18n/useBackofficeFormats.js.map +1 -0
- package/lib/esm/i18n/useBackofficeReactTranslation.js +9 -0
- package/lib/esm/i18n/useBackofficeReactTranslation.js.map +1 -0
- package/lib/esm/i18n/useReviewStatusLabel.js +19 -0
- package/lib/esm/i18n/useReviewStatusLabel.js.map +1 -0
- package/lib/esm/index.js +73 -0
- package/lib/esm/modules/base64.js +21 -0
- package/lib/esm/modules/base64.js.map +1 -0
- package/lib/esm/modules/formatFileSize.js +28 -0
- package/lib/esm/modules/formatFileSize.js.map +1 -0
- package/lib/esm/modules/sharedSchemaTypes.js +0 -0
- package/lib/esm/modules/webauthn.js +33 -0
- package/lib/esm/modules/webauthn.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/arrayLikeToArray.js +15 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/arrayLikeToArray.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js +15 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/defineProperty.js +20 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/defineProperty.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/interopRequireDefault.js +13 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/interopRequireDefault.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/iterableToArray.js +13 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/iterableToArray.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/nonIterableSpread.js +13 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/nonIterableSpread.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/objectSpread2.js +33 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/objectSpread2.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js +19 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/toConsumableArray.js +18 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/toConsumableArray.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/toPrimitive.js +22 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/toPrimitive.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/toPropertyKey.js +17 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/toPropertyKey.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/typeof.js +18 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/typeof.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js +19 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js.map +1 -0
- package/lib/esm/node_modules/@vanilla-extract/recipes/dist/createRuntimeFn-62c9670f.esm.js +80 -0
- package/lib/esm/node_modules/@vanilla-extract/recipes/dist/createRuntimeFn-62c9670f.esm.js.map +1 -0
- package/lib/esm/node_modules/fbjs/lib/areEqual.js +42 -0
- package/lib/esm/node_modules/fbjs/lib/areEqual.js.map +1 -0
- package/lib/esm/node_modules/invariant/browser.js +30 -0
- package/lib/esm/node_modules/invariant/browser.js.map +1 -0
- package/lib/esm/node_modules/relay-test-utils/index.js +11 -0
- package/lib/esm/node_modules/relay-test-utils/index.js.map +1 -0
- package/lib/esm/node_modules/relay-test-utils/lib/RelayMockPayloadGenerator.js +288 -0
- package/lib/esm/node_modules/relay-test-utils/lib/RelayMockPayloadGenerator.js.map +1 -0
- package/lib/esm/node_modules/relay-test-utils/lib/RelayModernMockEnvironment.js +183 -0
- package/lib/esm/node_modules/relay-test-utils/lib/RelayModernMockEnvironment.js.map +1 -0
- package/lib/esm/node_modules/relay-test-utils/lib/RelayResolverTestUtils.js +19 -0
- package/lib/esm/node_modules/relay-test-utils/lib/RelayResolverTestUtils.js.map +1 -0
- package/lib/esm/node_modules/relay-test-utils/lib/index.js +21 -0
- package/lib/esm/node_modules/relay-test-utils/lib/index.js.map +1 -0
- package/lib/esm/node_modules/relay-test-utils/lib/unwrapContainer.js +16 -0
- package/lib/esm/node_modules/relay-test-utils/lib/unwrapContainer.js.map +1 -0
- package/lib/esm/pages/BackofficeAcceptInvitationPage.js +24 -0
- package/lib/esm/pages/BackofficeAcceptInvitationPage.js.map +1 -0
- package/lib/esm/pages/BackofficeDashboardPage.helpers.js +18 -0
- package/lib/esm/pages/BackofficeDashboardPage.helpers.js.map +1 -0
- package/lib/esm/pages/BackofficeDashboardPage.js +266 -0
- package/lib/esm/pages/BackofficeDashboardPage.js.map +1 -0
- package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js +18 -0
- package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js.map +1 -0
- package/lib/esm/pages/BackofficeEntityDetailPage.helpers.js +14 -0
- package/lib/esm/pages/BackofficeEntityDetailPage.helpers.js.map +1 -0
- package/lib/esm/pages/BackofficeEntityDetailPage.js +474 -0
- package/lib/esm/pages/BackofficeEntityDetailPage.js.map +1 -0
- package/lib/esm/pages/BackofficeEntityDetailPage.view-helpers.js +414 -0
- package/lib/esm/pages/BackofficeEntityDetailPage.view-helpers.js.map +1 -0
- package/lib/esm/{BackofficeEntityDetailUnknownPageRedirect-xupMeril.js → pages/BackofficeEntityDetailUnknownPageRedirect.js} +3 -3
- package/lib/esm/pages/BackofficeEntityDetailUnknownPageRedirect.js.map +1 -0
- package/lib/esm/pages/BackofficeEntityListPage.helpers.js +37 -0
- package/lib/esm/pages/BackofficeEntityListPage.helpers.js.map +1 -0
- package/lib/esm/pages/BackofficeEntityListPage.js +381 -0
- package/lib/esm/pages/BackofficeEntityListPage.js.map +1 -0
- package/lib/esm/pages/BackofficeHubPage.js +122 -0
- package/lib/esm/pages/BackofficeHubPage.js.map +1 -0
- package/lib/esm/pages/BackofficeLayoutPage.js +273 -0
- package/lib/esm/pages/BackofficeLayoutPage.js.map +1 -0
- package/lib/esm/pages/BackofficeLoginPage.js +47 -0
- package/lib/esm/pages/BackofficeLoginPage.js.map +1 -0
- package/lib/esm/{BackofficePasswordResetCompletePage-OApMUiOi.js → pages/BackofficePasswordResetCompletePage.js} +17 -17
- package/lib/esm/pages/BackofficePasswordResetCompletePage.js.map +1 -0
- package/lib/esm/{BackofficePasswordResetRequestPage-DPDImb37.js → pages/BackofficePasswordResetRequestPage.js} +14 -15
- package/lib/esm/pages/BackofficePasswordResetRequestPage.js.map +1 -0
- package/lib/esm/{BackofficeVerifyEmailPage-DHuSOxDf.js → pages/BackofficeVerifyEmailPage.js} +17 -17
- package/lib/esm/pages/BackofficeVerifyEmailPage.js.map +1 -0
- package/lib/esm/pages/backofficeDashboardPage.css.js +7 -0
- package/lib/esm/pages/backofficeDashboardPage.css.js.map +1 -0
- package/lib/esm/pages/backofficeEntityDetailPage.css.js +7 -0
- package/lib/esm/pages/backofficeEntityDetailPage.css.js.map +1 -0
- package/lib/esm/pages/backofficeEntityListPage.css.js +7 -0
- package/lib/esm/pages/backofficeEntityListPage.css.js.map +1 -0
- package/lib/esm/pages/dashboard/DashboardMetricGroup.js +25 -0
- package/lib/esm/pages/dashboard/DashboardMetricGroup.js.map +1 -0
- package/lib/esm/pages/dashboard/DashboardPanel.js +15 -0
- package/lib/esm/pages/dashboard/DashboardPanel.js.map +1 -0
- package/lib/esm/pages/dashboard/DashboardQuickActions.js +27 -0
- package/lib/esm/pages/dashboard/DashboardQuickActions.js.map +1 -0
- package/lib/esm/pages/dashboard/DashboardStatusList.js +28 -0
- package/lib/esm/pages/dashboard/DashboardStatusList.js.map +1 -0
- package/lib/esm/pages/dashboard/dashboardMetricGroup.css.js +8 -0
- package/lib/esm/pages/dashboard/dashboardMetricGroup.css.js.map +1 -0
- package/lib/esm/pages/dashboard/dashboardPanel.css.js +7 -0
- package/lib/esm/pages/dashboard/dashboardPanel.css.js.map +1 -0
- package/lib/esm/pages/dashboard/dashboardQuickActions.css.js +7 -0
- package/lib/esm/pages/dashboard/dashboardQuickActions.css.js.map +1 -0
- package/lib/esm/pages/dashboard/dashboardStatusList.css.js +7 -0
- package/lib/esm/pages/dashboard/dashboardStatusList.css.js.map +1 -0
- package/lib/esm/{BackofficeEntityDetailLayoutContext-DeuH5PCW.js → pages/detail/BackofficeEntityDetailLayoutContext.js} +2 -2
- package/lib/esm/pages/detail/BackofficeEntityDetailLayoutContext.js.map +1 -0
- package/lib/esm/pages/detail/buildTabsItems.js +10 -0
- package/lib/esm/pages/detail/buildTabsItems.js.map +1 -0
- package/lib/esm/{pageResolution-hAQA5C6S.js → pages/detail/pageResolution.js} +2 -2
- package/lib/esm/pages/detail/pageResolution.js.map +1 -0
- package/lib/esm/provider/BackofficeConfigContext.js +12 -0
- package/lib/esm/provider/BackofficeConfigContext.js.map +1 -0
- package/lib/esm/provider/BackofficeProvider.js +171 -0
- package/lib/esm/provider/BackofficeProvider.js.map +1 -0
- package/lib/esm/provider/entityRegistry.js +95 -0
- package/lib/esm/provider/entityRegistry.js.map +1 -0
- package/lib/esm/provider/lazyValue.js +14 -0
- package/lib/esm/provider/lazyValue.js.map +1 -0
- package/lib/esm/provider/types.js +0 -0
- package/lib/esm/provider/useBackofficeEntityLoader.js +141 -0
- package/lib/esm/provider/useBackofficeEntityLoader.js.map +1 -0
- package/lib/esm/{useBackofficeLazyValue-CoIAK-5N.js → provider/useBackofficeLazyValue.js} +15 -7
- package/lib/esm/provider/useBackofficeLazyValue.js.map +1 -0
- package/lib/esm/relay/RelayProvider.js +13 -0
- package/lib/esm/relay/RelayProvider.js.map +1 -0
- package/lib/esm/relay/connectionUtils.js +19 -0
- package/lib/esm/relay/connectionUtils.js.map +1 -0
- package/lib/esm/relay/createInlineDataReader.js +2 -0
- package/lib/esm/relay/createInlineReader.js +7 -0
- package/lib/esm/relay/createInlineReader.js.map +1 -0
- package/lib/esm/relay/envHelpers.js +55 -0
- package/lib/esm/relay/envHelpers.js.map +1 -0
- package/lib/esm/{environment-DQfVyWHJ.js → relay/environment.js} +90 -100
- package/lib/esm/relay/environment.js.map +1 -0
- package/lib/esm/relay/identityView.js +6 -0
- package/lib/esm/relay/identityView.js.map +1 -0
- package/lib/esm/{mutationResult-CcQMY13J.js → relay/mutationResult.js} +2 -2
- package/lib/esm/relay/mutationResult.js.map +1 -0
- package/lib/esm/{useRelayEnvironment-vQ86aW-n.js → relay/useRelayEnvironment.js} +2 -2
- package/lib/esm/relay/useRelayEnvironment.js.map +1 -0
- package/lib/esm/{backofficeAuthPaths-2KMmkBLv.js → router/backofficeAuthPaths.js} +2 -2
- package/lib/esm/router/backofficeAuthPaths.js.map +1 -0
- package/lib/esm/router/createBackofficeRoutes.js +322 -0
- package/lib/esm/router/createBackofficeRoutes.js.map +1 -0
- package/lib/esm/storybook/relay/RelayStory.css.js +7 -0
- package/lib/esm/storybook/relay/RelayStory.css.js.map +1 -0
- package/lib/esm/storybook/relay/RelayStory.js +86 -0
- package/lib/esm/storybook/relay/RelayStory.js.map +1 -0
- package/lib/esm/storybook/relay/mockResolvers.js +99 -0
- package/lib/esm/storybook/relay/mockResolvers.js.map +1 -0
- package/lib/esm/storybook/relay/relay-test-utils.d.js +0 -0
- package/lib/esm/style.css +1 -1
- package/lib/esm/style.js +1 -0
- package/lib/esm/subscriptions/useCursorResumableSubscription.js +29 -0
- package/lib/esm/subscriptions/useCursorResumableSubscription.js.map +1 -0
- package/lib/types/auth/AuthRefreshNotice.d.ts +14 -0
- package/lib/types/auth/AuthRefreshNotice.d.ts.map +1 -0
- package/lib/types/auth/TotpQrCode.d.ts +17 -0
- package/lib/types/auth/TotpQrCode.d.ts.map +1 -0
- package/lib/types/auth/authRefreshNotice.css.d.ts +4 -0
- package/lib/types/auth/authRefreshNotice.css.d.ts.map +1 -0
- package/lib/types/auth/login/LoginFlow.d.ts.map +1 -1
- package/lib/types/auth/login/MfaChallengeForm.d.ts.map +1 -1
- package/lib/types/auth/login/PasskeyLoginForm.d.ts.map +1 -1
- package/lib/types/auth/pages/AcceptInvitationScreen.d.ts.map +1 -1
- package/lib/types/components/backoffice/actions/BackofficeEntityActionFormDialog.d.ts.map +1 -1
- package/lib/types/components/backoffice/actions/LazyBackofficeEntityActionFormDialog.d.ts.map +1 -1
- package/lib/types/components/backoffice/actions/backofficeEntityActionFormDialog.css.d.ts +4 -0
- package/lib/types/components/backoffice/actions/backofficeEntityActionFormDialog.css.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeAuditMetadataPanel.d.ts +19 -0
- package/lib/types/components/backoffice/detail/BackofficeAuditMetadataPanel.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeDetailRelationLink.d.ts +3 -5
- package/lib/types/components/backoffice/detail/BackofficeDetailRelationLink.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailRelationListBlock.d.ts +3 -4
- package/lib/types/components/backoffice/detail/BackofficeDetailRelationListBlock.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailSection.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeEntityRefLink.d.ts +15 -0
- package/lib/types/components/backoffice/detail/BackofficeEntityRefLink.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeEntitySummaryHeader.d.ts +34 -0
- package/lib/types/components/backoffice/detail/BackofficeEntitySummaryHeader.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeEnumLabel.d.ts +9 -0
- package/lib/types/components/backoffice/detail/BackofficeEnumLabel.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeKpiStrip.d.ts +17 -0
- package/lib/types/components/backoffice/detail/BackofficeKpiStrip.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeLifecycleTimelineSection.d.ts +20 -0
- package/lib/types/components/backoffice/detail/BackofficeLifecycleTimelineSection.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficePayloadInspectorSection.d.ts +15 -0
- package/lib/types/components/backoffice/detail/BackofficePayloadInspectorSection.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeReferenceValue.d.ts +9 -0
- package/lib/types/components/backoffice/detail/BackofficeReferenceValue.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeRelationsSummaryGrid.d.ts +17 -0
- package/lib/types/components/backoffice/detail/BackofficeRelationsSummaryGrid.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeScopeStack.d.ts +13 -0
- package/lib/types/components/backoffice/detail/BackofficeScopeStack.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeStatusMetaBadge.d.ts +13 -0
- package/lib/types/components/backoffice/detail/BackofficeStatusMetaBadge.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeTokenUsageBreakdown.d.ts +18 -0
- package/lib/types/components/backoffice/detail/BackofficeTokenUsageBreakdown.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeUsageCostBreakdown.d.ts +31 -0
- package/lib/types/components/backoffice/detail/BackofficeUsageCostBreakdown.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/backofficeAuditMetadataPanel.css.d.ts +5 -0
- package/lib/types/components/backoffice/detail/backofficeAuditMetadataPanel.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/backofficeDetailField.css.d.ts +1 -0
- package/lib/types/components/backoffice/detail/backofficeDetailField.css.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/backofficeDetailLayout.css.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/backofficeDetailRelationLink.css.d.ts +2 -0
- package/lib/types/components/backoffice/detail/backofficeDetailRelationLink.css.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/backofficeEntitySummaryHeader.css.d.ts +12 -0
- package/lib/types/components/backoffice/detail/backofficeEntitySummaryHeader.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/backofficeKpiStrip.css.d.ts +5 -0
- package/lib/types/components/backoffice/detail/backofficeKpiStrip.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/backofficeLifecycleTimelineSection.css.d.ts +3 -0
- package/lib/types/components/backoffice/detail/backofficeLifecycleTimelineSection.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/backofficePayloadInspectorSection.css.d.ts +4 -0
- package/lib/types/components/backoffice/detail/backofficePayloadInspectorSection.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/backofficeReferenceValue.css.d.ts +3 -0
- package/lib/types/components/backoffice/detail/backofficeReferenceValue.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/backofficeRelationsSummaryGrid.css.d.ts +6 -0
- package/lib/types/components/backoffice/detail/backofficeRelationsSummaryGrid.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/backofficeScopeStack.css.d.ts +5 -0
- package/lib/types/components/backoffice/detail/backofficeScopeStack.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/backofficeStatusMetaBadge.css.d.ts +2 -0
- package/lib/types/components/backoffice/detail/backofficeStatusMetaBadge.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/backofficeUsageCostBreakdown.css.d.ts +7 -0
- package/lib/types/components/backoffice/detail/backofficeUsageCostBreakdown.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/createBackofficeEntityLinkProps.d.ts +30 -0
- package/lib/types/components/backoffice/detail/createBackofficeEntityLinkProps.d.ts.map +1 -0
- package/lib/types/components/backoffice/errors/BackofficeErrorBoundary.stories.d.ts +12 -0
- package/lib/types/components/backoffice/errors/BackofficeErrorBoundary.stories.d.ts.map +1 -0
- package/lib/types/components/backoffice/filters/BackofficeFilterAction.d.ts +4 -4
- package/lib/types/components/backoffice/filters/BackofficeFilterAction.d.ts.map +1 -1
- package/lib/types/components/backoffice/filters/DeferredFilterSearchInput.d.ts +13 -0
- package/lib/types/components/backoffice/filters/DeferredFilterSearchInput.d.ts.map +1 -0
- package/lib/types/components/backoffice/filters/EntityIdFilterField.d.ts +4 -0
- package/lib/types/components/backoffice/filters/EntityIdFilterField.d.ts.map +1 -1
- package/lib/types/components/backoffice/filters/EntityIdFilterField.stories.d.ts +12 -0
- package/lib/types/components/backoffice/filters/EntityIdFilterField.stories.d.ts.map +1 -0
- package/lib/types/components/backoffice/filters/deferredFilterSearchInput.css.d.ts +3 -0
- package/lib/types/components/backoffice/filters/deferredFilterSearchInput.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/filters/entityIdFilterField.css.d.ts +3 -0
- package/lib/types/components/backoffice/filters/entityIdFilterField.css.d.ts.map +1 -1
- package/lib/types/components/backoffice/hub/BackofficeHubTemplate.d.ts +36 -0
- package/lib/types/components/backoffice/hub/BackofficeHubTemplate.d.ts.map +1 -0
- package/lib/types/{pages/backofficeHubPage.css.d.ts → components/backoffice/hub/backofficeHubTemplate.css.d.ts} +5 -3
- package/lib/types/components/backoffice/hub/backofficeHubTemplate.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.d.ts.map +1 -1
- package/lib/types/components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.d.ts +2 -0
- package/lib/types/components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.d.ts.map +1 -1
- package/lib/types/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.d.ts +3 -0
- package/lib/types/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.d.ts.map +1 -1
- package/lib/types/components/backoffice/layout/breadcrumb/buildBreadcrumbs.d.ts +2 -2
- package/lib/types/components/backoffice/layout/breadcrumb/buildBreadcrumbs.d.ts.map +1 -1
- package/lib/types/components/backoffice/layout/buildSidebarSections.d.ts +1 -0
- package/lib/types/components/backoffice/layout/buildSidebarSections.d.ts.map +1 -1
- package/lib/types/components/backoffice/layout/sidebarUtils.d.ts +2 -1
- package/lib/types/components/backoffice/layout/sidebarUtils.d.ts.map +1 -1
- package/lib/types/components/backoffice/lists/BackofficeListToolbar.d.ts +16 -0
- package/lib/types/components/backoffice/lists/BackofficeListToolbar.d.ts.map +1 -0
- package/lib/types/components/backoffice/lists/backofficeListToolbar.css.d.ts +16 -0
- package/lib/types/components/backoffice/lists/backofficeListToolbar.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/overview/BackofficeOverviewLayout.stories.d.ts +11 -0
- package/lib/types/components/backoffice/overview/BackofficeOverviewLayout.stories.d.ts.map +1 -0
- package/lib/types/components/backoffice/pickers/EntityIdPickerDialog.d.ts +1 -1
- package/lib/types/components/backoffice/pickers/EntityIdPickerDialog.d.ts.map +1 -1
- package/lib/types/components/backoffice/pickers/entityIdPickerDialog.css.d.ts +2 -0
- package/lib/types/components/backoffice/pickers/entityIdPickerDialog.css.d.ts.map +1 -1
- package/lib/types/components/backoffice/pickers/shared/EntityPickerList.d.ts.map +1 -1
- package/lib/types/components/backoffice/pickers/shared/EntityPickerShell.d.ts.map +1 -1
- package/lib/types/components/backoffice/pickers/types.d.ts +1 -1
- package/lib/types/components/backoffice/pickers/types.d.ts.map +1 -1
- package/lib/types/components/backoffice/refs/BackofficeEntityIdRef.d.ts +4 -4
- package/lib/types/components/backoffice/refs/BackofficeEntityIdRef.d.ts.map +1 -1
- package/lib/types/components/backoffice/refs/BackofficeEntityLink.d.ts +15 -0
- package/lib/types/components/backoffice/refs/BackofficeEntityLink.d.ts.map +1 -0
- package/lib/types/components/backoffice/refs/BackofficeRelatedCountLink.d.ts.map +1 -1
- package/lib/types/components/backoffice/refs/backofficeRelatedCountLink.css.d.ts +2 -0
- package/lib/types/components/backoffice/refs/backofficeRelatedCountLink.css.d.ts.map +1 -1
- package/lib/types/components/backoffice/routing/BackofficeContentError.d.ts +1 -1
- package/lib/types/components/backoffice/routing/BackofficeContentError.d.ts.map +1 -1
- package/lib/types/components/backoffice/routing/BackofficeRouteFallback.d.ts +4 -0
- package/lib/types/components/backoffice/routing/BackofficeRouteFallback.d.ts.map +1 -1
- package/lib/types/components/backoffice/scaffolds/BackofficeEntityDetailScaffold.d.ts.map +1 -1
- package/lib/types/components/backoffice/scaffolds/BackofficeEntityListScaffold.d.ts +10 -6
- package/lib/types/components/backoffice/scaffolds/BackofficeEntityListScaffold.d.ts.map +1 -1
- package/lib/types/components/backoffice/scaffolds/BackofficeListFilterContext.d.ts +3 -3
- package/lib/types/components/backoffice/scaffolds/BackofficeListFilterContext.d.ts.map +1 -1
- package/lib/types/components/backoffice/scaffolds/BackofficeTabbedDetailShell.stories.d.ts +11 -0
- package/lib/types/components/backoffice/scaffolds/BackofficeTabbedDetailShell.stories.d.ts.map +1 -0
- package/lib/types/components/backoffice/scaffolds/backofficeEntityListScaffold.css.d.ts.map +1 -1
- package/lib/types/components/backoffice/shared/BackofficeFilterableCell.d.ts +13 -0
- package/lib/types/components/backoffice/shared/BackofficeFilterableCell.d.ts.map +1 -0
- package/lib/types/components/backoffice/shared/BackofficeFormattedCurrency.d.ts +9 -0
- package/lib/types/components/backoffice/shared/BackofficeFormattedCurrency.d.ts.map +1 -0
- package/lib/types/components/backoffice/shared/BackofficeFormattedNumber.d.ts +9 -0
- package/lib/types/components/backoffice/shared/BackofficeFormattedNumber.d.ts.map +1 -0
- package/lib/types/components/backoffice/shared/backofficeFilterableCell.css.d.ts +12 -0
- package/lib/types/components/backoffice/shared/backofficeFilterableCell.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/shared/backofficeInlineFilterRow.css.d.ts.map +1 -1
- package/lib/types/components/backoffice/tools/BackofficeToolsDocPanel.d.ts +11 -0
- package/lib/types/components/backoffice/tools/BackofficeToolsDocPanel.d.ts.map +1 -0
- package/lib/types/components/backoffice/tools/BackofficeToolsErrorFallback.d.ts +8 -0
- package/lib/types/components/backoffice/tools/BackofficeToolsErrorFallback.d.ts.map +1 -0
- package/lib/types/components/backoffice/tools/BackofficeToolsJsonForm.d.ts +15 -0
- package/lib/types/components/backoffice/tools/BackofficeToolsJsonForm.d.ts.map +1 -0
- package/lib/types/components/backoffice/tools/BackofficeToolsQueryBoundary.d.ts +7 -0
- package/lib/types/components/backoffice/tools/BackofficeToolsQueryBoundary.d.ts.map +1 -0
- package/lib/types/components/backoffice/tools/backofficeToolsDocPanel.css.d.ts +8 -0
- package/lib/types/components/backoffice/tools/backofficeToolsDocPanel.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/tools/backofficeToolsForm.css.d.ts +7 -0
- package/lib/types/components/backoffice/tools/backofficeToolsForm.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/tools/backofficeToolsJsonForm.css.d.ts +4 -0
- package/lib/types/components/backoffice/tools/backofficeToolsJsonForm.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/tools/parseToolJson.d.ts +2 -0
- package/lib/types/components/backoffice/tools/parseToolJson.d.ts.map +1 -0
- package/lib/types/filters/filterHelpers.d.ts +3 -3
- package/lib/types/filters/filterHelpers.d.ts.map +1 -1
- package/lib/types/hooks/useAuth.d.ts.map +1 -1
- package/lib/types/hooks/useBackofficeInfiniteScrollSentinel.d.ts.map +1 -1
- package/lib/types/hooks/useBackofficeListRefetch.d.ts +7 -3
- package/lib/types/hooks/useBackofficeListRefetch.d.ts.map +1 -1
- package/lib/types/hooks/useBackofficeListUrlState.d.ts +2 -2
- package/lib/types/hooks/useBackofficeListUrlState.d.ts.map +1 -1
- package/lib/types/hooks/useInfiniteConnection.d.ts +37 -0
- package/lib/types/hooks/useInfiniteConnection.d.ts.map +1 -0
- package/lib/types/i18n/resources.d.ts +138 -7
- package/lib/types/i18n/resources.d.ts.map +1 -1
- package/lib/types/index.d.ts +31 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/pages/BackofficeDashboardPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityDetailPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityDetailPage.view-helpers.d.ts +3 -8
- package/lib/types/pages/BackofficeEntityDetailPage.view-helpers.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityListPage.d.ts +2 -2
- package/lib/types/pages/BackofficeEntityListPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityListPage.helpers.d.ts +8 -4
- package/lib/types/pages/BackofficeEntityListPage.helpers.d.ts.map +1 -1
- package/lib/types/pages/BackofficeHubPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeLayoutPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficePasswordResetCompletePage.d.ts.map +1 -1
- package/lib/types/pages/BackofficePasswordResetRequestPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeVerifyEmailPage.d.ts.map +1 -1
- package/lib/types/pages/backofficeDashboardPage.css.d.ts +1 -14
- package/lib/types/pages/backofficeDashboardPage.css.d.ts.map +1 -1
- package/lib/types/pages/backofficeEntityDetailPage.css.d.ts +2 -0
- package/lib/types/pages/backofficeEntityDetailPage.css.d.ts.map +1 -1
- package/lib/types/pages/dashboard/DashboardMetricGroup.d.ts +14 -0
- package/lib/types/pages/dashboard/DashboardMetricGroup.d.ts.map +1 -0
- package/lib/types/pages/dashboard/DashboardPanel.d.ts +9 -0
- package/lib/types/pages/dashboard/DashboardPanel.d.ts.map +1 -0
- package/lib/types/pages/dashboard/DashboardQuickActions.d.ts +13 -0
- package/lib/types/pages/dashboard/DashboardQuickActions.d.ts.map +1 -0
- package/lib/types/pages/dashboard/DashboardStatusList.d.ts +13 -0
- package/lib/types/pages/dashboard/DashboardStatusList.d.ts.map +1 -0
- package/lib/types/pages/dashboard/dashboardMetricGroup.css.d.ts +4 -0
- package/lib/types/pages/dashboard/dashboardMetricGroup.css.d.ts.map +1 -0
- package/lib/types/pages/dashboard/dashboardPanel.css.d.ts +2 -0
- package/lib/types/pages/dashboard/dashboardPanel.css.d.ts.map +1 -0
- package/lib/types/pages/dashboard/dashboardQuickActions.css.d.ts +5 -0
- package/lib/types/pages/dashboard/dashboardQuickActions.css.d.ts.map +1 -0
- package/lib/types/pages/dashboard/dashboardStatusList.css.d.ts +6 -0
- package/lib/types/pages/dashboard/dashboardStatusList.css.d.ts.map +1 -0
- package/lib/types/provider/BackofficeProvider.d.ts.map +1 -1
- package/lib/types/provider/types.d.ts +5 -1
- package/lib/types/provider/types.d.ts.map +1 -1
- package/lib/types/relay/connectionUtils.d.ts +10 -0
- package/lib/types/relay/connectionUtils.d.ts.map +1 -0
- package/lib/types/router/createBackofficeRoutes.d.ts.map +1 -1
- package/lib/types/storybook/relay/RelayStory.css.d.ts +5 -0
- package/lib/types/storybook/relay/RelayStory.css.d.ts.map +1 -0
- package/lib/types/storybook/relay/RelayStory.d.ts +35 -0
- package/lib/types/storybook/relay/RelayStory.d.ts.map +1 -0
- package/lib/types/storybook/relay/mockResolvers.d.ts +3 -0
- package/lib/types/storybook/relay/mockResolvers.d.ts.map +1 -0
- package/lib/types/subscriptions/useCursorResumableSubscription.d.ts +16 -0
- package/lib/types/subscriptions/useCursorResumableSubscription.d.ts.map +1 -0
- package/package.json +24 -9
- package/lib/esm/AcceptInvitationScreen-B1IPafwD.js.map +0 -1
- package/lib/esm/AuthPanel-BaIRFGbX.js.map +0 -1
- package/lib/esm/BackofficeAcceptInvitationPage-BfRsORii.js +0 -24
- package/lib/esm/BackofficeAcceptInvitationPage-BfRsORii.js.map +0 -1
- package/lib/esm/BackofficeDashboardPage-CZAcZwRc.js +0 -344
- package/lib/esm/BackofficeDashboardPage-CZAcZwRc.js.map +0 -1
- package/lib/esm/BackofficeDetailPayload-P61MDRLE.js +0 -94
- package/lib/esm/BackofficeDetailPayload-P61MDRLE.js.map +0 -1
- package/lib/esm/BackofficeEntityActionFormDialog-BgMuhyU8.js +0 -512
- package/lib/esm/BackofficeEntityActionFormDialog-BgMuhyU8.js.map +0 -1
- package/lib/esm/BackofficeEntityDetailLayoutContext-DeuH5PCW.js.map +0 -1
- package/lib/esm/BackofficeEntityDetailLayoutPage-Duc_DcIV.js +0 -18
- package/lib/esm/BackofficeEntityDetailLayoutPage-Duc_DcIV.js.map +0 -1
- package/lib/esm/BackofficeEntityDetailPage-ChxBrqz8.js +0 -1053
- package/lib/esm/BackofficeEntityDetailPage-ChxBrqz8.js.map +0 -1
- package/lib/esm/BackofficeEntityDetailUnknownPageRedirect-xupMeril.js.map +0 -1
- package/lib/esm/BackofficeEntityListPage-BACvfX6c.js +0 -404
- package/lib/esm/BackofficeEntityListPage-BACvfX6c.js.map +0 -1
- package/lib/esm/BackofficeHubPage-BsUXulN0.js +0 -136
- package/lib/esm/BackofficeHubPage-BsUXulN0.js.map +0 -1
- package/lib/esm/BackofficeLayoutPage-r6dXo9SI.js +0 -699
- package/lib/esm/BackofficeLayoutPage-r6dXo9SI.js.map +0 -1
- package/lib/esm/BackofficeLoginPage-BMPhO1cr.js +0 -46
- package/lib/esm/BackofficeLoginPage-BMPhO1cr.js.map +0 -1
- package/lib/esm/BackofficePasswordResetCompletePage-OApMUiOi.js.map +0 -1
- package/lib/esm/BackofficePasswordResetRequestPage-DPDImb37.js.map +0 -1
- package/lib/esm/BackofficeRightPageLayout-BZb7LhT-.js +0 -53
- package/lib/esm/BackofficeRightPageLayout-BZb7LhT-.js.map +0 -1
- package/lib/esm/BackofficeTopbarPortalContext-CphoSrZD.js.map +0 -1
- package/lib/esm/BackofficeVerifyEmailPage-DHuSOxDf.js.map +0 -1
- package/lib/esm/EntityFilterValue-BWUdPBwp.js +0 -78
- package/lib/esm/EntityFilterValue-BWUdPBwp.js.map +0 -1
- package/lib/esm/EntityIdPickerDialog-Yhmr-WsV.js +0 -308
- package/lib/esm/EntityIdPickerDialog-Yhmr-WsV.js.map +0 -1
- package/lib/esm/LazyBackofficeEntityActionFormDialog-uyYFFJGM.js +0 -522
- package/lib/esm/LazyBackofficeEntityActionFormDialog-uyYFFJGM.js.map +0 -1
- package/lib/esm/PasswordResetCompleteScreen-Cgg96DPo.js.map +0 -1
- package/lib/esm/PasswordResetRequestScreen-I1nFvGLd.js.map +0 -1
- package/lib/esm/VerifyEmailScreen-Br5KyHjg.js.map +0 -1
- package/lib/esm/backoffice-react.js +0 -1687
- package/lib/esm/backoffice-react.js.map +0 -1
- package/lib/esm/backofficeAuthPaths-2KMmkBLv.js.map +0 -1
- package/lib/esm/buildBreadcrumbs-C9cyiXb7.js.map +0 -1
- package/lib/esm/environment-DQfVyWHJ.js.map +0 -1
- package/lib/esm/loginPage.css-B7Io_DuU.js +0 -6
- package/lib/esm/loginPage.css-B7Io_DuU.js.map +0 -1
- package/lib/esm/mutationResult-CcQMY13J.js.map +0 -1
- package/lib/esm/pageResolution-hAQA5C6S.js.map +0 -1
- package/lib/esm/sidebarUtils-BZETlHea.js +0 -74
- package/lib/esm/sidebarUtils-BZETlHea.js.map +0 -1
- package/lib/esm/synchronizeAuthStatusQuery-BoPKMrP1.js +0 -324
- package/lib/esm/synchronizeAuthStatusQuery-BoPKMrP1.js.map +0 -1
- package/lib/esm/useAuth-CheTnq60.js +0 -544
- package/lib/esm/useAuth-CheTnq60.js.map +0 -1
- package/lib/esm/useBackofficeAuth-DVAXNAjP.js +0 -89
- package/lib/esm/useBackofficeAuth-DVAXNAjP.js.map +0 -1
- package/lib/esm/useBackofficeLazyValue-CoIAK-5N.js.map +0 -1
- package/lib/esm/useBackofficeListUrlState-D4fx5O7u.js.map +0 -1
- package/lib/esm/useBackofficeReactTranslation-Btt58EIo.js +0 -18
- package/lib/esm/useBackofficeReactTranslation-Btt58EIo.js.map +0 -1
- package/lib/esm/useRelayEnvironment-vQ86aW-n.js.map +0 -1
- package/lib/types/pages/backofficeHubPage.css.d.ts.map +0 -1
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { useBackofficeConfig as e } from "../provider/BackofficeConfigContext.js";
|
|
2
|
+
import { createUseAuth as t } from "./useAuth.js";
|
|
3
|
+
import { useRelayEnvironment as n } from "../relay/useRelayEnvironment.js";
|
|
4
|
+
import { useCallback as r, useMemo as i, useState as a } from "react";
|
|
5
|
+
import * as o from "react-relay";
|
|
6
|
+
//#region src/hooks/useBackofficeAuth.ts
|
|
7
|
+
var { commitMutation: s } = o, c = (e) => e instanceof Error ? e : /* @__PURE__ */ Error("Unable to load auth mutation."), l = (e) => {
|
|
8
|
+
let t = n(), [i, o] = a(0);
|
|
9
|
+
return {
|
|
10
|
+
commit: r((n) => {
|
|
11
|
+
o((e) => e + 1);
|
|
12
|
+
let r = () => {
|
|
13
|
+
o((e) => Math.max(0, e - 1));
|
|
14
|
+
};
|
|
15
|
+
e().then((e) => {
|
|
16
|
+
if (e == null) throw Error("Missing auth mutation config.");
|
|
17
|
+
s(t, {
|
|
18
|
+
mutation: e,
|
|
19
|
+
variables: n.variables,
|
|
20
|
+
onCompleted: (e, t) => {
|
|
21
|
+
r(), n.onCompleted?.(e, t ?? null);
|
|
22
|
+
},
|
|
23
|
+
onError: (e) => {
|
|
24
|
+
r(), n.onError?.(e);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}).catch((e) => {
|
|
28
|
+
r(), n.onError?.(c(e));
|
|
29
|
+
});
|
|
30
|
+
}, [e, t]),
|
|
31
|
+
isInFlight: i > 0
|
|
32
|
+
};
|
|
33
|
+
}, u = async (e, t, n) => e ?? (t == null ? null : n(await t.load()));
|
|
34
|
+
function d() {
|
|
35
|
+
let { auth: n } = e(), { commit: a, isInFlight: o } = l(r(async () => u(n.login.get()?.loginMutation, n.login, (e) => e.loginMutation), [n.login])), { commit: s, isInFlight: c } = l(r(async () => (await n.logout.load()).logoutMutation, [n.logout])), { commit: d, isInFlight: f } = l(r(async () => u(n.login.get()?.completeMfaMutation, n.completeMfa, (e) => e.completeMfaMutation), [n.completeMfa, n.login])), { commit: p, isInFlight: m } = l(r(async () => u(n.login.get()?.beginPasskeyLoginMutation, n.passkeyLogin, (e) => e.beginPasskeyLoginMutation), [n.login, n.passkeyLogin])), { commit: h, isInFlight: g } = l(r(async () => u(n.login.get()?.finishPasskeyLoginMutation, n.passkeyLogin, (e) => e.finishPasskeyLoginMutation), [n.login, n.passkeyLogin])), { commit: _, isInFlight: v } = l(r(async () => u(n.login.get()?.beginAuthenticationMutation, n.authentication, (e) => e.beginAuthenticationMutation), [n.authentication, n.login])), { commit: y, isInFlight: b } = l(r(async () => u(n.login.get()?.acceptInvitationMutation, n.acceptInvitation, (e) => e.acceptInvitationMutation), [n.acceptInvitation, n.login])), x = n.login.get()?.acceptInvitationMutation != null || n.acceptInvitation != null;
|
|
36
|
+
return i(() => {
|
|
37
|
+
let e;
|
|
38
|
+
return x && (e = {
|
|
39
|
+
commit: y,
|
|
40
|
+
isInFlight: b
|
|
41
|
+
}), t({
|
|
42
|
+
login: {
|
|
43
|
+
commit: a,
|
|
44
|
+
isInFlight: o
|
|
45
|
+
},
|
|
46
|
+
logout: {
|
|
47
|
+
commit: s,
|
|
48
|
+
isInFlight: c
|
|
49
|
+
},
|
|
50
|
+
completeMfa: {
|
|
51
|
+
commit: d,
|
|
52
|
+
isInFlight: f
|
|
53
|
+
},
|
|
54
|
+
beginPasskeyLogin: {
|
|
55
|
+
commit: p,
|
|
56
|
+
isInFlight: m
|
|
57
|
+
},
|
|
58
|
+
finishPasskeyLogin: {
|
|
59
|
+
commit: h,
|
|
60
|
+
isInFlight: g
|
|
61
|
+
},
|
|
62
|
+
beginAuthentication: {
|
|
63
|
+
commit: _,
|
|
64
|
+
isInFlight: v
|
|
65
|
+
},
|
|
66
|
+
acceptInvitation: e
|
|
67
|
+
});
|
|
68
|
+
}, [
|
|
69
|
+
y,
|
|
70
|
+
_,
|
|
71
|
+
p,
|
|
72
|
+
d,
|
|
73
|
+
h,
|
|
74
|
+
a,
|
|
75
|
+
s,
|
|
76
|
+
x,
|
|
77
|
+
b,
|
|
78
|
+
v,
|
|
79
|
+
m,
|
|
80
|
+
f,
|
|
81
|
+
g,
|
|
82
|
+
o,
|
|
83
|
+
c
|
|
84
|
+
])();
|
|
85
|
+
}
|
|
86
|
+
//#endregion
|
|
87
|
+
export { d as useBackofficeAuth };
|
|
88
|
+
|
|
89
|
+
//# sourceMappingURL=useBackofficeAuth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBackofficeAuth.js","names":[],"sources":["../../../src/hooks/useBackofficeAuth.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react';\nimport * as ReactRelay from 'react-relay';\nimport type { GraphQLTaggedNode, PayloadError } from 'relay-runtime';\n\nimport {\n createUseAuth,\n type UseAuthReturn,\n type AcceptInvitationResponse,\n type AcceptInvitationVariables,\n type BeginAuthenticationResponse,\n type BeginAuthenticationVariables,\n type BeginPasskeyLoginResponse,\n type BeginPasskeyLoginVariables,\n type CompleteMfaResponse,\n type CompleteMfaVariables,\n type FinishPasskeyLoginResponse,\n type FinishPasskeyLoginVariables,\n type LoginResponse,\n type LoginVariables,\n type LogoutResponse,\n type LogoutVariables,\n} from './useAuth.js';\nimport { useBackofficeConfig } from '../provider/BackofficeConfigContext.js';\nimport type { BackofficeLazyValue } from '../provider/lazyValue.js';\nimport { useRelayEnvironment } from '../relay/useRelayEnvironment.js';\n\nconst { commitMutation } = ReactRelay;\n\ntype MutationCommitConfig<TVariables, TResponse> = {\n variables: TVariables;\n onCompleted?: (\n response: TResponse,\n errors: readonly PayloadError[] | null,\n ) => void;\n onError?: (error: Error) => void;\n};\n\nconst toMutationLoadError = (error: unknown): Error => {\n if (error instanceof Error) {\n return error;\n }\n return new Error('Unable to load auth mutation.');\n};\n\nconst useDeferredMutation = <TVariables extends object, TResponse>(\n loadMutation: () => Promise<GraphQLTaggedNode | null>,\n) => {\n const relayEnvironment = useRelayEnvironment();\n const [inFlightCount, setInFlightCount] = useState(0);\n\n const commit = useCallback(\n (config: MutationCommitConfig<TVariables, TResponse>) => {\n setInFlightCount((count) => {\n return count + 1;\n });\n\n const finish = () => {\n setInFlightCount((count) => {\n return Math.max(0, count - 1);\n });\n };\n\n loadMutation()\n .then((mutation) => {\n if (mutation == null) {\n throw new Error('Missing auth mutation config.');\n }\n\n commitMutation(relayEnvironment, {\n mutation,\n variables: config.variables,\n onCompleted: (response, errors) => {\n finish();\n config.onCompleted?.(response as TResponse, errors ?? null);\n },\n onError: (error) => {\n finish();\n config.onError?.(error);\n },\n });\n })\n .catch((error: unknown) => {\n finish();\n config.onError?.(toMutationLoadError(error));\n });\n },\n [loadMutation, relayEnvironment],\n );\n\n return {\n commit,\n isInFlight: inFlightCount > 0,\n };\n};\n\nconst loadOptionalMutation = async <TConfig>(\n eagerMutation: GraphQLTaggedNode | null | undefined,\n lazyConfig: BackofficeLazyValue<TConfig> | null | undefined,\n selectMutation: (config: TConfig) => GraphQLTaggedNode,\n): Promise<GraphQLTaggedNode | null> => {\n if (eagerMutation != null) {\n return eagerMutation;\n }\n if (lazyConfig == null) {\n return null;\n }\n const loadedConfig = await lazyConfig.load();\n return selectMutation(loadedConfig);\n};\n\n/**\n * Provides auth actions/state backed by Relay mutations from BackofficeProvider.\n */\nexport function useBackofficeAuth(): UseAuthReturn {\n const { auth: authConfig } = useBackofficeConfig();\n const { commit: commitLogin, isInFlight: isLoginInFlight } =\n useDeferredMutation<LoginVariables, LoginResponse>(\n useCallback(async () => {\n const loginConfig = authConfig.login.get();\n return loadOptionalMutation(\n loginConfig?.loginMutation,\n authConfig.login,\n (config) => {\n return config.loginMutation;\n },\n );\n }, [authConfig.login]),\n );\n const { commit: commitLogout, isInFlight: isLogoutInFlight } =\n useDeferredMutation<LogoutVariables, LogoutResponse>(\n useCallback(async () => {\n const logoutConfig = await authConfig.logout.load();\n return logoutConfig.logoutMutation;\n }, [authConfig.logout]),\n );\n const { commit: commitCompleteMfa, isInFlight: isCompleteMfaInFlight } =\n useDeferredMutation<CompleteMfaVariables, CompleteMfaResponse>(\n useCallback(async () => {\n return loadOptionalMutation(\n authConfig.login.get()?.completeMfaMutation,\n authConfig.completeMfa,\n (config) => {\n return config.completeMfaMutation;\n },\n );\n }, [authConfig.completeMfa, authConfig.login]),\n );\n const {\n commit: commitBeginPasskeyLogin,\n isInFlight: isBeginPasskeyLoginInFlight,\n } = useDeferredMutation<\n BeginPasskeyLoginVariables,\n BeginPasskeyLoginResponse\n >(\n useCallback(async () => {\n return loadOptionalMutation(\n authConfig.login.get()?.beginPasskeyLoginMutation,\n authConfig.passkeyLogin,\n (config) => {\n return config.beginPasskeyLoginMutation;\n },\n );\n }, [authConfig.login, authConfig.passkeyLogin]),\n );\n const {\n commit: commitFinishPasskeyLogin,\n isInFlight: isFinishPasskeyLoginInFlight,\n } = useDeferredMutation<\n FinishPasskeyLoginVariables,\n FinishPasskeyLoginResponse\n >(\n useCallback(async () => {\n return loadOptionalMutation(\n authConfig.login.get()?.finishPasskeyLoginMutation,\n authConfig.passkeyLogin,\n (config) => {\n return config.finishPasskeyLoginMutation;\n },\n );\n }, [authConfig.login, authConfig.passkeyLogin]),\n );\n const {\n commit: commitBeginAuthentication,\n isInFlight: isBeginAuthenticationInFlight,\n } = useDeferredMutation<\n BeginAuthenticationVariables,\n BeginAuthenticationResponse\n >(\n useCallback(async () => {\n return loadOptionalMutation(\n authConfig.login.get()?.beginAuthenticationMutation,\n authConfig.authentication,\n (config) => {\n return config.beginAuthenticationMutation;\n },\n );\n }, [authConfig.authentication, authConfig.login]),\n );\n const {\n commit: commitAcceptInvitation,\n isInFlight: isAcceptInvitationInFlight,\n } = useDeferredMutation<AcceptInvitationVariables, AcceptInvitationResponse>(\n useCallback(async () => {\n return loadOptionalMutation(\n authConfig.login.get()?.acceptInvitationMutation,\n authConfig.acceptInvitation,\n (config) => {\n return config.acceptInvitationMutation;\n },\n );\n }, [authConfig.acceptInvitation, authConfig.login]),\n );\n const hasAcceptInvitationMutation =\n authConfig.login.get()?.acceptInvitationMutation != null ||\n authConfig.acceptInvitation != null;\n\n const useAuthWithMutations = useMemo(() => {\n let acceptInvitation:\n | {\n commit: typeof commitAcceptInvitation;\n isInFlight: boolean;\n }\n | undefined;\n if (hasAcceptInvitationMutation) {\n acceptInvitation = {\n commit: commitAcceptInvitation,\n isInFlight: isAcceptInvitationInFlight,\n };\n }\n return createUseAuth({\n login: { commit: commitLogin, isInFlight: isLoginInFlight },\n logout: { commit: commitLogout, isInFlight: isLogoutInFlight },\n completeMfa: {\n commit: commitCompleteMfa,\n isInFlight: isCompleteMfaInFlight,\n },\n beginPasskeyLogin: {\n commit: commitBeginPasskeyLogin,\n isInFlight: isBeginPasskeyLoginInFlight,\n },\n finishPasskeyLogin: {\n commit: commitFinishPasskeyLogin,\n isInFlight: isFinishPasskeyLoginInFlight,\n },\n beginAuthentication: {\n commit: commitBeginAuthentication,\n isInFlight: isBeginAuthenticationInFlight,\n },\n acceptInvitation,\n });\n }, [\n commitAcceptInvitation,\n commitBeginAuthentication,\n commitBeginPasskeyLogin,\n commitCompleteMfa,\n commitFinishPasskeyLogin,\n commitLogin,\n commitLogout,\n hasAcceptInvitationMutation,\n isAcceptInvitationInFlight,\n isBeginAuthenticationInFlight,\n isBeginPasskeyLoginInFlight,\n isCompleteMfaInFlight,\n isFinishPasskeyLoginInFlight,\n isLoginInFlight,\n isLogoutInFlight,\n ]);\n\n return useAuthWithMutations();\n}\n"],"mappings":";;;;;;AA0BA,IAAM,EAAE,gBAAA,MAAmB,GAWrB,KAAuB,MACvB,aAAiB,QACZ,IAEF,gBAAI,MAAM,gCAAgC,EAG7C,KACJ,MACG;CACH,IAAM,IAAmB,GAAqB,EACxC,CAAC,GAAe,KAAoB,EAAS,EAAE;CAyCrD,OAAO;EACL,QAxCa,GACZ,MAAwD;GACvD,GAAkB,MACT,IAAQ,EACf;GAEF,IAAM,UAAe;IACnB,GAAkB,MACT,KAAK,IAAI,GAAG,IAAQ,EAAE,CAC7B;;GAGJ,GAAc,CACX,MAAM,MAAa;IAClB,IAAI,KAAY,MACd,MAAU,MAAM,gCAAgC;IAGlD,EAAe,GAAkB;KAC/B;KACA,WAAW,EAAO;KAClB,cAAc,GAAU,MAAW;MAEjC,AADA,GAAQ,EACR,EAAO,cAAc,GAAuB,KAAU,KAAK;;KAE7D,UAAU,MAAU;MAElB,AADA,GAAQ,EACR,EAAO,UAAU,EAAM;;KAE1B,CAAC;KACF,CACD,OAAO,MAAmB;IAEzB,AADA,GAAQ,EACR,EAAO,UAAU,EAAoB,EAAM,CAAC;KAC5C;KAEN,CAAC,GAAc,EAAiB,CAIhC;EACA,YAAY,IAAgB;EAC7B;GAGG,IAAuB,OAC3B,GACA,GACA,MAEI,MAGA,KAAc,OACT,OAGF,EAAe,MADK,EAAW,MAAM,CACT;AAMrC,SAAgB,IAAmC;CACjD,IAAM,EAAE,MAAM,MAAe,GAAqB,EAC5C,EAAE,QAAQ,GAAa,YAAY,MACvC,EACE,EAAY,YAEH,EADa,EAAW,MAAM,KAEnC,EAAa,eACb,EAAW,QACV,MACQ,EAAO,cAEjB,EACA,CAAC,EAAW,MAAM,CAAC,CACvB,EACG,EAAE,QAAQ,GAAc,YAAY,MACxC,EACE,EAAY,aAEH,MADoB,EAAW,OAAO,MAAM,EAC/B,gBACnB,CAAC,EAAW,OAAO,CAAC,CACxB,EACG,EAAE,QAAQ,GAAmB,YAAY,MAC7C,EACE,EAAY,YACH,EACL,EAAW,MAAM,KAAK,EAAE,qBACxB,EAAW,cACV,MACQ,EAAO,oBAEjB,EACA,CAAC,EAAW,aAAa,EAAW,MAAM,CAAC,CAC/C,EACG,EACJ,QAAQ,GACR,YAAY,MACV,EAIF,EAAY,YACH,EACL,EAAW,MAAM,KAAK,EAAE,2BACxB,EAAW,eACV,MACQ,EAAO,0BAEjB,EACA,CAAC,EAAW,OAAO,EAAW,aAAa,CAAC,CAChD,EACK,EACJ,QAAQ,GACR,YAAY,MACV,EAIF,EAAY,YACH,EACL,EAAW,MAAM,KAAK,EAAE,4BACxB,EAAW,eACV,MACQ,EAAO,2BAEjB,EACA,CAAC,EAAW,OAAO,EAAW,aAAa,CAAC,CAChD,EACK,EACJ,QAAQ,GACR,YAAY,MACV,EAIF,EAAY,YACH,EACL,EAAW,MAAM,KAAK,EAAE,6BACxB,EAAW,iBACV,MACQ,EAAO,4BAEjB,EACA,CAAC,EAAW,gBAAgB,EAAW,MAAM,CAAC,CAClD,EACK,EACJ,QAAQ,GACR,YAAY,MACV,EACF,EAAY,YACH,EACL,EAAW,MAAM,KAAK,EAAE,0BACxB,EAAW,mBACV,MACQ,EAAO,yBAEjB,EACA,CAAC,EAAW,kBAAkB,EAAW,MAAM,CAAC,CACpD,EACK,IACJ,EAAW,MAAM,KAAK,EAAE,4BAA4B,QACpD,EAAW,oBAAoB;CAsDjC,OApD6B,QAAc;EACzC,IAAI;EAYJ,OANI,MACF,IAAmB;GACjB,QAAQ;GACR,YAAY;GACb,GAEI,EAAc;GACnB,OAAO;IAAE,QAAQ;IAAa,YAAY;IAAiB;GAC3D,QAAQ;IAAE,QAAQ;IAAc,YAAY;IAAkB;GAC9D,aAAa;IACX,QAAQ;IACR,YAAY;IACb;GACD,mBAAmB;IACjB,QAAQ;IACR,YAAY;IACb;GACD,oBAAoB;IAClB,QAAQ;IACR,YAAY;IACb;GACD,qBAAqB;IACnB,QAAQ;IACR,YAAY;IACb;GACD;GACD,CAAC;IACD;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAEM,EAAsB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { useCallback as e, useEffect as t, useRef as n, useState as r } from "react";
|
|
2
|
+
//#region src/hooks/useBackofficeInfiniteScrollSentinel.ts
|
|
3
|
+
function i({ enabled: i, hasNextPage: a, isLoading: o, onIntersect: s, root: c = null, rootMargin: l = "360px 0px", threshold: u = 0 }) {
|
|
4
|
+
let [d, f] = r(null), p = n(s), m = n(0);
|
|
5
|
+
return t(() => {
|
|
6
|
+
p.current = s;
|
|
7
|
+
}, [s]), t(() => {
|
|
8
|
+
if (!i || !a || o || d == null) return () => {};
|
|
9
|
+
let e = () => {
|
|
10
|
+
let e = Date.now();
|
|
11
|
+
e - m.current < 250 || (m.current = e, p.current());
|
|
12
|
+
};
|
|
13
|
+
if (typeof IntersectionObserver > "u") return e(), () => {};
|
|
14
|
+
let t = new IntersectionObserver((t) => {
|
|
15
|
+
t[0]?.isIntersecting === !0 && e();
|
|
16
|
+
}, {
|
|
17
|
+
root: c,
|
|
18
|
+
rootMargin: l,
|
|
19
|
+
threshold: u
|
|
20
|
+
});
|
|
21
|
+
return t.observe(d), () => {
|
|
22
|
+
t.disconnect();
|
|
23
|
+
};
|
|
24
|
+
}, [
|
|
25
|
+
i,
|
|
26
|
+
a,
|
|
27
|
+
o,
|
|
28
|
+
d,
|
|
29
|
+
c,
|
|
30
|
+
l,
|
|
31
|
+
u
|
|
32
|
+
]), { sentinelRef: e((e) => {
|
|
33
|
+
f(e);
|
|
34
|
+
}, []) };
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { i as useBackofficeInfiniteScrollSentinel };
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=useBackofficeInfiniteScrollSentinel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBackofficeInfiniteScrollSentinel.js","names":[],"sources":["../../../src/hooks/useBackofficeInfiniteScrollSentinel.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nexport type UseBackofficeInfiniteScrollSentinelOptions = {\n enabled: boolean;\n hasNextPage: boolean;\n isLoading: boolean;\n root?: Element | null;\n rootMargin?: string;\n threshold?: number;\n onIntersect: () => void;\n};\n\nexport type UseBackofficeInfiniteScrollSentinelResult = {\n sentinelRef: (node: HTMLElement | null) => void;\n};\n\n/**\n * Observes a sentinel element and triggers pagination when it enters the viewport.\n */\nexport function useBackofficeInfiniteScrollSentinel({\n enabled,\n hasNextPage,\n isLoading,\n onIntersect,\n root = null,\n rootMargin = '360px 0px',\n threshold = 0,\n}: UseBackofficeInfiniteScrollSentinelOptions): UseBackofficeInfiniteScrollSentinelResult {\n const [node, setNode] = useState<HTMLElement | null>(null);\n const onIntersectRef = useRef(onIntersect);\n const lastIntersectAtRef = useRef(0);\n\n useEffect(() => {\n onIntersectRef.current = onIntersect;\n }, [onIntersect]);\n\n useEffect(() => {\n if (!enabled || !hasNextPage || isLoading || node == null) {\n return () => {};\n }\n\n const triggerIntersect = () => {\n const now = Date.now();\n if (now - lastIntersectAtRef.current < 250) {\n return;\n }\n lastIntersectAtRef.current = now;\n onIntersectRef.current();\n };\n\n if (typeof IntersectionObserver === 'undefined') {\n triggerIntersect();\n return () => {};\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (entry?.isIntersecting === true) {\n triggerIntersect();\n }\n },\n {\n root,\n rootMargin,\n threshold,\n },\n );\n\n observer.observe(node);\n\n return () => {\n observer.disconnect();\n };\n }, [enabled, hasNextPage, isLoading, node, root, rootMargin, threshold]);\n\n const sentinelRef = useCallback((next: HTMLElement | null) => {\n setNode(next);\n }, []);\n\n return { sentinelRef };\n}\n"],"mappings":";;AAmBA,SAAgB,EAAoC,EAClD,YACA,gBACA,cACA,gBACA,UAAO,MACP,gBAAa,aACb,eAAY,KAC4E;CACxF,IAAM,CAAC,GAAM,KAAW,EAA6B,KAAK,EACpD,IAAiB,EAAO,EAAY,EACpC,IAAqB,EAAO,EAAE;CAkDpC,OAhDA,QAAgB;EACd,EAAe,UAAU;IACxB,CAAC,EAAY,CAAC,EAEjB,QAAgB;EACd,IAAI,CAAC,KAAW,CAAC,KAAe,KAAa,KAAQ,MACnD,aAAa;EAGf,IAAM,UAAyB;GAC7B,IAAM,IAAM,KAAK,KAAK;GAClB,IAAM,EAAmB,UAAU,QAGvC,EAAmB,UAAU,GAC7B,EAAe,SAAS;;EAG1B,IAAI,OAAO,uBAAyB,KAElC,OADA,GAAkB,QACL;EAGf,IAAM,IAAW,IAAI,sBAClB,MAAY;GAEX,AADc,EAAQ,IACX,mBAAmB,MAC5B,GAAkB;KAGtB;GACE;GACA;GACA;GACD,CACF;EAID,OAFA,EAAS,QAAQ,EAAK,QAET;GACX,EAAS,YAAY;;IAEtB;EAAC;EAAS;EAAa;EAAW;EAAM;EAAM;EAAY;EAAU,CAAC,EAMjE,EAAE,aAJW,GAAa,MAA6B;EAC5D,EAAQ,EAAK;IACZ,EAAE,CAEI,EAAa"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { startTransition as e, useCallback as t, useEffect as n, useRef as r, useState as i } from "react";
|
|
2
|
+
import { stableListVariablesKey as a } from "@plumile/backoffice-core/state/stableKey.js";
|
|
3
|
+
//#region src/hooks/useBackofficeListRefetch.ts
|
|
4
|
+
function o({ refetch: o, variables: s, defaults: c, fetchPolicy: l, buildQueryVariables: u }) {
|
|
5
|
+
let [d, f] = i(!1), p = r(0), m = r(a({
|
|
6
|
+
where: c.where,
|
|
7
|
+
sort: c.sort,
|
|
8
|
+
count: c.count
|
|
9
|
+
})), h = t((e) => u(e), [u]), g = t((t) => {
|
|
10
|
+
let n = p.current + 1;
|
|
11
|
+
p.current = n, f(!0);
|
|
12
|
+
let r = h({
|
|
13
|
+
...t,
|
|
14
|
+
cursor: null
|
|
15
|
+
});
|
|
16
|
+
try {
|
|
17
|
+
e(() => {
|
|
18
|
+
o(r, {
|
|
19
|
+
fetchPolicy: l,
|
|
20
|
+
onComplete: () => {
|
|
21
|
+
p.current === n && f(!1);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
} catch (e) {
|
|
26
|
+
throw p.current === n && f(!1), e;
|
|
27
|
+
}
|
|
28
|
+
}, [
|
|
29
|
+
l,
|
|
30
|
+
o,
|
|
31
|
+
h
|
|
32
|
+
]);
|
|
33
|
+
return n(() => {
|
|
34
|
+
let e = a({
|
|
35
|
+
where: s.where,
|
|
36
|
+
sort: s.sort,
|
|
37
|
+
count: s.count
|
|
38
|
+
});
|
|
39
|
+
m.current !== e && (m.current = e, g(s));
|
|
40
|
+
}, [g, s]), {
|
|
41
|
+
isRefreshing: d,
|
|
42
|
+
onRefresh: t(() => {
|
|
43
|
+
g(s);
|
|
44
|
+
}, [g, s])
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
export { o as useBackofficeListRefetch };
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=useBackofficeListRefetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBackofficeListRefetch.js","names":[],"sources":["../../../src/hooks/useBackofficeListRefetch.ts"],"sourcesContent":["import {\n startTransition,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport type { FetchPolicy } from 'relay-runtime';\n\nimport { stableListVariablesKey } from '@plumile/backoffice-core/state/stableKey.js';\nimport type { BackofficeListVariables } from '@plumile/backoffice-core/types.js';\n\ntype RefetchFn<TVariables> = (\n vars: TVariables,\n opts: {\n fetchPolicy: FetchPolicy;\n onComplete?: (error: Error | null) => void;\n },\n) => { dispose: () => void } | undefined;\n\ntype Params<Where, Sort extends string, Variables> = {\n refetch: RefetchFn<Variables>;\n variables: BackofficeListVariables<Where, Sort>;\n defaults: BackofficeListVariables<Where, Sort>;\n fetchPolicy: FetchPolicy;\n buildQueryVariables: (\n input: BackofficeListVariables<Where, Sort>,\n ) => Variables;\n};\n\n/**\n * Standardizes refetch behavior for backoffice list components:\n * - Refetches when list URL state changes (where/sort/count), gated by a stable key.\n * - Exposes a manual refresh callback using the same variables.\n *\n * This hook must not call Relay hooks (`useFragment`, `usePaginationFragment`, ...).\n */\nexport function useBackofficeListRefetch<\n Where,\n Sort extends string,\n Variables extends Record<string, unknown>,\n>({\n refetch,\n variables,\n defaults,\n fetchPolicy,\n buildQueryVariables,\n}: Params<Where, Sort, Variables>): {\n isRefreshing: boolean;\n onRefresh: () => void;\n} {\n const [isRefreshing, setIsRefreshing] = useState(false);\n const requestIdRef = useRef(0);\n const lastRefetchKeyRef = useRef<string | null>(\n stableListVariablesKey({\n where: defaults.where,\n sort: defaults.sort,\n count: defaults.count,\n }),\n );\n\n const resolveVariables = useCallback(\n (input: BackofficeListVariables<Where, Sort>) => {\n return buildQueryVariables(input);\n },\n [buildQueryVariables],\n );\n\n const runRefetch = useCallback(\n (input: BackofficeListVariables<Where, Sort>) => {\n const requestId = requestIdRef.current + 1;\n requestIdRef.current = requestId;\n setIsRefreshing(true);\n\n const nextVariables = resolveVariables({ ...input, cursor: null });\n try {\n startTransition(() => {\n refetch(nextVariables, {\n fetchPolicy,\n onComplete: () => {\n if (requestIdRef.current === requestId) {\n setIsRefreshing(false);\n }\n },\n });\n });\n } catch (error) {\n if (requestIdRef.current === requestId) {\n setIsRefreshing(false);\n }\n throw error;\n }\n },\n [fetchPolicy, refetch, resolveVariables],\n );\n\n useEffect(() => {\n const key = stableListVariablesKey({\n where: variables.where,\n sort: variables.sort,\n count: variables.count,\n });\n if (lastRefetchKeyRef.current === key) {\n return;\n }\n lastRefetchKeyRef.current = key;\n\n runRefetch(variables);\n }, [runRefetch, variables]);\n\n const onRefresh = useCallback(() => {\n runRefetch(variables);\n }, [runRefetch, variables]);\n\n return { isRefreshing, onRefresh };\n}\n"],"mappings":";;;AAqCA,SAAgB,EAId,EACA,YACA,cACA,aACA,gBACA,0BAIA;CACA,IAAM,CAAC,GAAc,KAAmB,EAAS,GAAM,EACjD,IAAe,EAAO,EAAE,EACxB,IAAoB,EACxB,EAAuB;EACrB,OAAO,EAAS;EAChB,MAAM,EAAS;EACf,OAAO,EAAS;EACjB,CAAC,CACH,EAEK,IAAmB,GACtB,MACQ,EAAoB,EAAM,EAEnC,CAAC,EAAoB,CACtB,EAEK,IAAa,GAChB,MAAgD;EAC/C,IAAM,IAAY,EAAa,UAAU;EAEzC,AADA,EAAa,UAAU,GACvB,EAAgB,GAAK;EAErB,IAAM,IAAgB,EAAiB;GAAE,GAAG;GAAO,QAAQ;GAAM,CAAC;EAClE,IAAI;GACF,QAAsB;IACpB,EAAQ,GAAe;KACrB;KACA,kBAAkB;MAChB,AAAI,EAAa,YAAY,KAC3B,EAAgB,GAAM;;KAG3B,CAAC;KACF;WACK,GAAO;GAId,MAHI,EAAa,YAAY,KAC3B,EAAgB,GAAM,EAElB;;IAGV;EAAC;EAAa;EAAS;EAAiB,CACzC;CAoBD,OAlBA,QAAgB;EACd,IAAM,IAAM,EAAuB;GACjC,OAAO,EAAU;GACjB,MAAM,EAAU;GAChB,OAAO,EAAU;GAClB,CAAC;EACE,EAAkB,YAAY,MAGlC,EAAkB,UAAU,GAE5B,EAAW,EAAU;IACpB,CAAC,GAAY,EAAU,CAAC,EAMpB;EAAE;EAAc,WAJL,QAAkB;GAClC,EAAW,EAAU;KACpB,CAAC,GAAY,EAAU,CAEH;EAAW"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBackofficeListUrlState.js","names":[],"sources":["../../../src/hooks/useBackofficeListUrlState.ts"],"sourcesContent":["import { useCallback, useContext, useMemo } from 'react';\nimport { RoutingContext, useLocation } from '@plumile/router';\n\nimport type {\n BackofficeListState,\n BackofficeRuntimeResolvedListFacetConfig,\n} from '@plumile/backoffice-core/types.js';\n\n/** Normalizes a router `location.search` string into URLSearchParams. */\nfunction normalizeSearch(value: string): URLSearchParams {\n if (value.trim() === '') {\n return new URLSearchParams();\n }\n return new URLSearchParams(value);\n}\n\ntype ReturnValue<Where extends Record<string, unknown>, Sort extends string> = {\n state: BackofficeListState<Where, Sort>;\n pushState: (next: BackofficeListState<Where, Sort>) => void;\n};\n\n/** Keeps list state in sync with the URL search params for backoffice pages. */\nexport function useBackofficeListUrlState<\n Where extends Record<string, unknown>,\n Sort extends string,\n>(config: BackofficeRuntimeResolvedListFacetConfig): ReturnValue<Where, Sort> {\n const routing = useContext(RoutingContext);\n const { hash, pathname, search } = useLocation();\n const fallbackState = useMemo(() => {\n return {\n where: null,\n sort: null,\n };\n }, []);\n\n const state = useMemo(() => {\n if (config.listUrlCodec == null) {\n return fallbackState;\n }\n return config.listUrlCodec.parse(\n normalizeSearch(search),\n ) as BackofficeListState<Where, Sort>;\n }, [config.listUrlCodec, fallbackState, search]);\n\n const pushState = useCallback(\n (next: BackofficeListState<Where, Sort>) => {\n if (routing == null) {\n return;\n }\n if (config.listUrlCodec == null) {\n return;\n }\n\n const params = config.listUrlCodec.serialize(next as never);\n const qs = params.toString();\n\n let nextSearch = '';\n if (qs !== '') {\n nextSearch = `?${qs}`;\n }\n\n routing.history.push({\n pathname,\n search: nextSearch,\n hash,\n });\n },\n [config.listUrlCodec, hash, pathname, routing],\n );\n\n return { state, pushState };\n}\n"],"mappings":";;;AASA,SAAS,EAAgB,GAAgC;CAIvD,OAHI,EAAM,MAAM,KAAK,KACZ,IAAI,iBAAiB,GAEvB,IAAI,gBAAgB,EAAM;;AASnC,SAAgB,EAGd,GAA4E;CAC5E,IAAM,IAAU,EAAW,EAAe,EACpC,EAAE,SAAM,aAAU,cAAW,GAAa,EAC1C,IAAgB,SACb;EACL,OAAO;EACP,MAAM;EACP,GACA,EAAE,CAAC;CAqCN,OAAO;EAAE,OAnCK,QACR,EAAO,gBAAgB,OAClB,IAEF,EAAO,aAAa,MACzB,EAAgB,EAAO,CACxB,EACA;GAAC,EAAO;GAAc;GAAe;GAAO,CA4BtC;EAAO,WA1BE,GACf,MAA2C;GAI1C,IAHI,KAAW,QAGX,EAAO,gBAAgB,MACzB;GAIF,IAAM,IADS,EAAO,aAAa,UAAU,EAClC,CAAO,UAAU,EAExB,IAAa;GAKjB,AAJI,MAAO,OACT,IAAa,IAAI,MAGnB,EAAQ,QAAQ,KAAK;IACnB;IACA,QAAQ;IACR;IACD,CAAC;KAEJ;GAAC,EAAO;GAAc;GAAM;GAAU;GAAQ,CAGhC;EAAW"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { startTransition as e, useCallback as t } from "react";
|
|
2
|
+
//#region src/hooks/useBackofficeLoadMore.ts
|
|
3
|
+
function n({ hasNext: n, isLoadingNext: r, loadNext: i, count: a }) {
|
|
4
|
+
return t(() => {
|
|
5
|
+
!n || r || e(() => {
|
|
6
|
+
i(a);
|
|
7
|
+
});
|
|
8
|
+
}, [
|
|
9
|
+
a,
|
|
10
|
+
n,
|
|
11
|
+
r,
|
|
12
|
+
i
|
|
13
|
+
]);
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { n as useBackofficeLoadMore };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=useBackofficeLoadMore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBackofficeLoadMore.js","names":[],"sources":["../../../src/hooks/useBackofficeLoadMore.ts"],"sourcesContent":["import { startTransition, useCallback } from 'react';\n\ntype Params = {\n hasNext: boolean;\n isLoadingNext: boolean;\n loadNext: (count: number) => void;\n count: number;\n};\n\n/**\n * Wraps Relay `loadNext()` with consistent guards and `startTransition()`.\n */\nexport function useBackofficeLoadMore({\n hasNext,\n isLoadingNext,\n loadNext,\n count,\n}: Params): () => void {\n return useCallback(() => {\n if (!hasNext || isLoadingNext) {\n return;\n }\n\n startTransition(() => {\n loadNext(count);\n });\n }, [count, hasNext, isLoadingNext, loadNext]);\n}\n"],"mappings":";;AAYA,SAAgB,EAAsB,EACpC,YACA,kBACA,aACA,YACqB;CACrB,OAAO,QAAkB;EACnB,CAAC,KAAW,KAIhB,QAAsB;GACpB,EAAS,EAAM;IACf;IACD;EAAC;EAAO;EAAS;EAAe;EAAS,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { useBackofficeConfig as e } from "../provider/BackofficeConfigContext.js";
|
|
2
|
+
import { useBackofficeAuthLogoutConfig as t } from "../provider/useBackofficeLazyValue.js";
|
|
3
|
+
import * as n from "react-relay";
|
|
4
|
+
//#region src/hooks/useBackofficeSessionAuth.ts
|
|
5
|
+
var { useMutation: r } = n, i = (e) => e instanceof Error ? e : /* @__PURE__ */ Error("Logout cleanup failed."), a = () => {
|
|
6
|
+
let { auth: n } = e(), [a, o] = r(t().logoutMutation);
|
|
7
|
+
return {
|
|
8
|
+
logout: async () => new Promise((e, t) => {
|
|
9
|
+
a({
|
|
10
|
+
variables: {},
|
|
11
|
+
onCompleted: () => {
|
|
12
|
+
Promise.resolve(n.lifecycle?.onLogoutSuccess?.()).then(() => {
|
|
13
|
+
e();
|
|
14
|
+
}, (e) => {
|
|
15
|
+
t(i(e));
|
|
16
|
+
});
|
|
17
|
+
},
|
|
18
|
+
onError: (e) => {
|
|
19
|
+
if (e instanceof Error) {
|
|
20
|
+
t(e);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
t(/* @__PURE__ */ Error("Logout failed."));
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}),
|
|
27
|
+
isLoading: o
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
//#endregion
|
|
31
|
+
export { a as default, a as useBackofficeSessionAuth };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=useBackofficeSessionAuth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBackofficeSessionAuth.js","names":[],"sources":["../../../src/hooks/useBackofficeSessionAuth.ts"],"sourcesContent":["import * as ReactRelay from 'react-relay';\nimport type { MutationParameters } from 'relay-runtime';\n\nimport type { LogoutResponse, LogoutVariables } from './useAuth.js';\nimport { useBackofficeConfig } from '../provider/BackofficeConfigContext.js';\nimport { useBackofficeAuthLogoutConfig } from '../provider/useBackofficeLazyValue.js';\n\nconst { useMutation } = ReactRelay;\n\nconst toLogoutCleanupError = (error: unknown): Error => {\n if (error instanceof Error) {\n return error;\n }\n return new Error('Logout cleanup failed.');\n};\n\nexport type BackofficeSessionAuth = {\n logout: () => Promise<void>;\n isLoading: boolean;\n};\n\nexport const useBackofficeSessionAuth = (): BackofficeSessionAuth => {\n const { auth: authConfig } = useBackofficeConfig();\n const auth = useBackofficeAuthLogoutConfig();\n\n type LogoutMutation = MutationParameters & {\n response: LogoutResponse;\n variables: LogoutVariables;\n };\n\n const [commitLogout, isLogoutInFlight] = useMutation<LogoutMutation>(\n auth.logoutMutation,\n );\n\n return {\n logout: async () => {\n return new Promise((resolve, reject) => {\n commitLogout({\n variables: {},\n onCompleted: () => {\n Promise.resolve(authConfig.lifecycle?.onLogoutSuccess?.()).then(\n () => {\n resolve();\n },\n (error: unknown) => {\n reject(toLogoutCleanupError(error));\n },\n );\n },\n onError: (error) => {\n if (error instanceof Error) {\n reject(error);\n return;\n }\n reject(new Error('Logout failed.'));\n },\n });\n });\n },\n isLoading: isLogoutInFlight,\n };\n};\n\nexport default useBackofficeSessionAuth;\n"],"mappings":";;;;AAOA,IAAM,EAAE,mBAAgB,GAElB,KAAwB,MACxB,aAAiB,QACZ,IAEF,gBAAI,MAAM,yBAAyB,EAQ/B,UAAwD;CACnE,IAAM,EAAE,MAAM,MAAe,GAAqB,EAQ5C,CAAC,GAAc,KAAoB,EAP5B,GAQX,CAAK,eACN;CAED,OAAO;EACL,QAAQ,YACC,IAAI,SAAS,GAAS,MAAW;GACtC,EAAa;IACX,WAAW,EAAE;IACb,mBAAmB;KACjB,QAAQ,QAAQ,EAAW,WAAW,mBAAmB,CAAC,CAAC,WACnD;MACJ,GAAS;SAEV,MAAmB;MAClB,EAAO,EAAqB,EAAM,CAAC;OAEtC;;IAEH,UAAU,MAAU;KAClB,IAAI,aAAiB,OAAO;MAC1B,EAAO,EAAM;MACb;;KAEF,EAAO,gBAAI,MAAM,iBAAiB,CAAC;;IAEtC,CAAC;IACF;EAEJ,WAAW;EACZ"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { useCallback as e, useEffect as t, useMemo as n, useState as r } from "react";
|
|
2
|
+
//#region src/hooks/useBackofficeSidebarPins.ts
|
|
3
|
+
var i = "backoffice.sidebar.pins.v1", a = (e) => {
|
|
4
|
+
if (typeof window > "u") return [];
|
|
5
|
+
try {
|
|
6
|
+
let t = window.localStorage.getItem(e);
|
|
7
|
+
if (t == null) return [];
|
|
8
|
+
let n = JSON.parse(t);
|
|
9
|
+
return Array.isArray(n) ? n.filter((e) => typeof e == "string") : [];
|
|
10
|
+
} catch {
|
|
11
|
+
return [];
|
|
12
|
+
}
|
|
13
|
+
}, o = (e, t) => {
|
|
14
|
+
let n = [], r = /* @__PURE__ */ new Set();
|
|
15
|
+
return e.forEach((e) => {
|
|
16
|
+
t.has(e) && (r.has(e) || (r.add(e), n.push(e)));
|
|
17
|
+
}), n;
|
|
18
|
+
}, s = (s) => {
|
|
19
|
+
let { enabled: c = !0, storageKey: l = i, visibleEntityIds: u } = s, d = n(() => new Set(u), [u]), [f, p] = r(() => c ? o(a(l), d) : []);
|
|
20
|
+
t(() => {
|
|
21
|
+
if (!c) {
|
|
22
|
+
p([]);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
p((e) => {
|
|
26
|
+
let t = o(e, d);
|
|
27
|
+
if (t.length === e.length) {
|
|
28
|
+
let n = !0;
|
|
29
|
+
for (let r = 0; r < t.length; r += 1) if (t[r] !== e[r]) {
|
|
30
|
+
n = !1;
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
if (n) return e;
|
|
34
|
+
}
|
|
35
|
+
return t;
|
|
36
|
+
});
|
|
37
|
+
}, [c, d]), t(() => {
|
|
38
|
+
if (!c) {
|
|
39
|
+
p([]);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
p(o(a(l), d));
|
|
43
|
+
}, [
|
|
44
|
+
c,
|
|
45
|
+
l,
|
|
46
|
+
d
|
|
47
|
+
]), t(() => {
|
|
48
|
+
if (!(!c || typeof window > "u")) try {
|
|
49
|
+
window.localStorage.setItem(l, JSON.stringify(f));
|
|
50
|
+
} catch {}
|
|
51
|
+
}, [
|
|
52
|
+
c,
|
|
53
|
+
f,
|
|
54
|
+
l
|
|
55
|
+
]);
|
|
56
|
+
let m = n(() => new Set(f), [f]), h = e((e) => {
|
|
57
|
+
c && d.has(e) && p((t) => t.includes(e) ? t : [...t, e]);
|
|
58
|
+
}, [c, d]), g = e((e) => {
|
|
59
|
+
c && p((t) => t.filter((t) => t !== e));
|
|
60
|
+
}, [c]), _ = e((e) => {
|
|
61
|
+
m.has(e) ? g(e) : h(e);
|
|
62
|
+
}, [
|
|
63
|
+
h,
|
|
64
|
+
m,
|
|
65
|
+
g
|
|
66
|
+
]), v = e((e, t) => {
|
|
67
|
+
c && e !== t && p((n) => {
|
|
68
|
+
let r = n.indexOf(e), i = n.indexOf(t);
|
|
69
|
+
if (r === -1 || i === -1 || r === i) return n;
|
|
70
|
+
let a = [...n];
|
|
71
|
+
return a.splice(r, 1), a.splice(i, 0, e), a;
|
|
72
|
+
});
|
|
73
|
+
}, [c]);
|
|
74
|
+
return {
|
|
75
|
+
pins: f,
|
|
76
|
+
isPinned: e((e) => m.has(e), [m]),
|
|
77
|
+
pin: h,
|
|
78
|
+
unpin: g,
|
|
79
|
+
toggle: _,
|
|
80
|
+
reorder: v
|
|
81
|
+
};
|
|
82
|
+
}, c = {
|
|
83
|
+
normalizePins: o,
|
|
84
|
+
readPinsFromStorage: a
|
|
85
|
+
};
|
|
86
|
+
//#endregion
|
|
87
|
+
export { c as __test, s as default, s as useBackofficeSidebarPins };
|
|
88
|
+
|
|
89
|
+
//# sourceMappingURL=useBackofficeSidebarPins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBackofficeSidebarPins.js","names":[],"sources":["../../../src/hooks/useBackofficeSidebarPins.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\n\nconst DEFAULT_STORAGE_KEY = 'backoffice.sidebar.pins.v1';\n\ntype PinsPayload = unknown;\n\nconst readPinsFromStorage = (storageKey: string): string[] => {\n if (typeof window === 'undefined') {\n return [];\n }\n try {\n const raw = window.localStorage.getItem(storageKey);\n if (raw == null) {\n return [];\n }\n const parsed = JSON.parse(raw) as PinsPayload;\n if (!Array.isArray(parsed)) {\n return [];\n }\n return parsed.filter((entry): entry is string => {\n return typeof entry === 'string';\n });\n } catch {\n return [];\n }\n};\n\nconst normalizePins = (\n pins: readonly string[],\n validIds: Set<string>,\n): string[] => {\n const output: string[] = [];\n const seen = new Set<string>();\n pins.forEach((entry) => {\n if (!validIds.has(entry)) {\n return;\n }\n if (seen.has(entry)) {\n return;\n }\n seen.add(entry);\n output.push(entry);\n });\n return output;\n};\n\nexport type SidebarPinsState = {\n pins: readonly string[];\n isPinned: (id: string) => boolean;\n pin: (id: string) => void;\n unpin: (id: string) => void;\n toggle: (id: string) => void;\n reorder: (fromId: string, toId: string) => void;\n};\n\nexport type UseBackofficeSidebarPinsInput = {\n enabled?: boolean;\n storageKey?: string;\n visibleEntityIds: readonly string[];\n};\n\nexport const useBackofficeSidebarPins = (\n input: UseBackofficeSidebarPinsInput,\n): SidebarPinsState => {\n const {\n enabled = true,\n storageKey = DEFAULT_STORAGE_KEY,\n visibleEntityIds,\n } = input;\n const validIds = useMemo(() => {\n return new Set(visibleEntityIds);\n }, [visibleEntityIds]);\n\n const [pins, setPins] = useState<string[]>(() => {\n if (!enabled) {\n return [];\n }\n const stored = readPinsFromStorage(storageKey);\n return normalizePins(stored, validIds);\n });\n\n useEffect(() => {\n if (!enabled) {\n setPins([]);\n return;\n }\n setPins((prev) => {\n const normalized = normalizePins(prev, validIds);\n if (normalized.length === prev.length) {\n let unchanged = true;\n for (let index = 0; index < normalized.length; index += 1) {\n if (normalized[index] !== prev[index]) {\n unchanged = false;\n break;\n }\n }\n if (unchanged) {\n return prev;\n }\n }\n return normalized;\n });\n }, [enabled, validIds]);\n\n useEffect(() => {\n if (!enabled) {\n setPins([]);\n return;\n }\n const stored = readPinsFromStorage(storageKey);\n setPins(normalizePins(stored, validIds));\n }, [enabled, storageKey, validIds]);\n\n useEffect(() => {\n if (!enabled || typeof window === 'undefined') {\n return;\n }\n try {\n window.localStorage.setItem(storageKey, JSON.stringify(pins));\n } catch {\n // Ignore storage errors in non-browser or restricted environments.\n }\n }, [enabled, pins, storageKey]);\n\n const pinsSet = useMemo(() => {\n return new Set(pins);\n }, [pins]);\n\n const pin = useCallback(\n (id: string) => {\n if (!enabled) {\n return;\n }\n if (!validIds.has(id)) {\n return;\n }\n setPins((prev) => {\n if (prev.includes(id)) {\n return prev;\n }\n return [...prev, id];\n });\n },\n [enabled, validIds],\n );\n\n const unpin = useCallback(\n (id: string) => {\n if (!enabled) {\n return;\n }\n setPins((prev) => {\n return prev.filter((entry) => {\n return entry !== id;\n });\n });\n },\n [enabled],\n );\n\n const toggle = useCallback(\n (id: string) => {\n if (pinsSet.has(id)) {\n unpin(id);\n } else {\n pin(id);\n }\n },\n [pin, pinsSet, unpin],\n );\n\n const reorder = useCallback(\n (fromId: string, toId: string) => {\n if (!enabled) {\n return;\n }\n if (fromId === toId) {\n return;\n }\n setPins((prev) => {\n const fromIndex = prev.indexOf(fromId);\n const toIndex = prev.indexOf(toId);\n if (fromIndex === -1 || toIndex === -1) {\n return prev;\n }\n if (fromIndex === toIndex) {\n return prev;\n }\n const next = [...prev];\n next.splice(fromIndex, 1);\n next.splice(toIndex, 0, fromId);\n return next;\n });\n },\n [enabled],\n );\n\n const isPinned = useCallback(\n (id: string) => {\n return pinsSet.has(id);\n },\n [pinsSet],\n );\n\n return {\n pins,\n isPinned,\n pin,\n unpin,\n toggle,\n reorder,\n };\n};\n\nexport const __test = {\n normalizePins,\n readPinsFromStorage,\n};\n\nexport default useBackofficeSidebarPins;\n"],"mappings":";;AAEA,IAAM,IAAsB,8BAItB,KAAuB,MAAiC;CAC5D,IAAI,OAAO,SAAW,KACpB,OAAO,EAAE;CAEX,IAAI;EACF,IAAM,IAAM,OAAO,aAAa,QAAQ,EAAW;EACnD,IAAI,KAAO,MACT,OAAO,EAAE;EAEX,IAAM,IAAS,KAAK,MAAM,EAAI;EAI9B,OAHK,MAAM,QAAQ,EAAO,GAGnB,EAAO,QAAQ,MACb,OAAO,KAAU,SACxB,GAJO,EAAE;SAKL;EACN,OAAO,EAAE;;GAIP,KACJ,GACA,MACa;CACb,IAAM,IAAmB,EAAE,EACrB,oBAAO,IAAI,KAAa;CAW9B,OAVA,EAAK,SAAS,MAAU;EACjB,EAAS,IAAI,EAAM,KAGpB,EAAK,IAAI,EAAM,KAGnB,EAAK,IAAI,EAAM,EACf,EAAO,KAAK,EAAM;GAClB,EACK;GAkBI,KACX,MACqB;CACrB,IAAM,EACJ,aAAU,IACV,gBAAa,GACb,wBACE,GACE,IAAW,QACR,IAAI,IAAI,EAAiB,EAC/B,CAAC,EAAiB,CAAC,EAEhB,CAAC,GAAM,KAAW,QACjB,IAIE,EADQ,EAAoB,EACd,EAAQ,EAAS,GAH7B,EAAE,CAIX;CAkCF,AAhCA,QAAgB;EACd,IAAI,CAAC,GAAS;GACZ,EAAQ,EAAE,CAAC;GACX;;EAEF,GAAS,MAAS;GAChB,IAAM,IAAa,EAAc,GAAM,EAAS;GAChD,IAAI,EAAW,WAAW,EAAK,QAAQ;IACrC,IAAI,IAAY;IAChB,KAAK,IAAI,IAAQ,GAAG,IAAQ,EAAW,QAAQ,KAAS,GACtD,IAAI,EAAW,OAAW,EAAK,IAAQ;KACrC,IAAY;KACZ;;IAGJ,IAAI,GACF,OAAO;;GAGX,OAAO;IACP;IACD,CAAC,GAAS,EAAS,CAAC,EAEvB,QAAgB;EACd,IAAI,CAAC,GAAS;GACZ,EAAQ,EAAE,CAAC;GACX;;EAGF,EAAQ,EADO,EAAoB,EACb,EAAQ,EAAS,CAAC;IACvC;EAAC;EAAS;EAAY;EAAS,CAAC,EAEnC,QAAgB;EACV,OAAC,KAAW,OAAO,SAAW,MAGlC,IAAI;GACF,OAAO,aAAa,QAAQ,GAAY,KAAK,UAAU,EAAK,CAAC;UACvD;IAGP;EAAC;EAAS;EAAM;EAAW,CAAC;CAE/B,IAAM,IAAU,QACP,IAAI,IAAI,EAAK,EACnB,CAAC,EAAK,CAAC,EAEJ,IAAM,GACT,MAAe;EACT,KAGA,EAAS,IAAI,EAAG,IAGrB,GAAS,MACH,EAAK,SAAS,EAAG,GACZ,IAEF,CAAC,GAAG,GAAM,EAAG,CACpB;IAEJ,CAAC,GAAS,EAAS,CACpB,EAEK,IAAQ,GACX,MAAe;EACT,KAGL,GAAS,MACA,EAAK,QAAQ,MACX,MAAU,EACjB,CACF;IAEJ,CAAC,EAAQ,CACV,EAEK,IAAS,GACZ,MAAe;EACd,AAAI,EAAQ,IAAI,EAAG,GACjB,EAAM,EAAG,GAET,EAAI,EAAG;IAGX;EAAC;EAAK;EAAS;EAAM,CACtB,EAEK,IAAU,GACb,GAAgB,MAAiB;EAC3B,KAGD,MAAW,KAGf,GAAS,MAAS;GAChB,IAAM,IAAY,EAAK,QAAQ,EAAO,EAChC,IAAU,EAAK,QAAQ,EAAK;GAIlC,IAHI,MAAc,MAAM,MAAY,MAGhC,MAAc,GAChB,OAAO;GAET,IAAM,IAAO,CAAC,GAAG,EAAK;GAGtB,OAFA,EAAK,OAAO,GAAW,EAAE,EACzB,EAAK,OAAO,GAAS,GAAG,EAAO,EACxB;IACP;IAEJ,CAAC,EAAQ,CACV;CASD,OAAO;EACL;EACA,UATe,GACd,MACQ,EAAQ,IAAI,EAAG,EAExB,CAAC,EAAQ,CAKT;EACA;EACA;EACA;EACA;EACD;GAGU,IAAS;CACpB;CACA;CACD"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { getRelayTransportSnapshot as e, subscribeRelayTransport as t } from "../relay/environment.js";
|
|
2
|
+
import { useCallback as n, useEffect as r, useMemo as i, useRef as a, useState as o, useSyncExternalStore as s } from "react";
|
|
3
|
+
import * as c from "react-relay";
|
|
4
|
+
//#region src/hooks/useConditionalSubscription.ts
|
|
5
|
+
var l = [];
|
|
6
|
+
function u() {
|
|
7
|
+
return Reflect.get(c, "default") ?? c;
|
|
8
|
+
}
|
|
9
|
+
var d = u();
|
|
10
|
+
function f(c, u) {
|
|
11
|
+
let f = d.useRelayEnvironment(), [p, m] = o(null), [h, g] = o(!1), [_, v] = o(!1), y = s(t, () => e().generation, () => e().generation), { enabled: b = !0, deps: x = l, getVariables: S } = u, C = n(() => {
|
|
12
|
+
try {
|
|
13
|
+
return S == null ? c.variables : S();
|
|
14
|
+
} catch {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
}, [c.variables, S]), w = i(() => C(), [C]), T = i(() => {
|
|
18
|
+
if (w == null) return null;
|
|
19
|
+
try {
|
|
20
|
+
return JSON.stringify(w);
|
|
21
|
+
} catch {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
}, [w]), E = !!b, D = E && w != null && h && p == null && !_, O = a(null);
|
|
25
|
+
return r(() => {
|
|
26
|
+
let e = null, t = C();
|
|
27
|
+
return E && t != null && (m(null), v(!1), g(!0), e = d.requestSubscription(f, {
|
|
28
|
+
subscription: c.subscription,
|
|
29
|
+
variables: t,
|
|
30
|
+
cacheConfig: c.cacheConfig,
|
|
31
|
+
configs: c.configs,
|
|
32
|
+
onCompleted: () => {
|
|
33
|
+
v(!0), g(!1), c.onCompleted?.();
|
|
34
|
+
},
|
|
35
|
+
onError: (e) => {
|
|
36
|
+
m(e), g(!1), c.onError?.(e);
|
|
37
|
+
},
|
|
38
|
+
onNext: c.onNext,
|
|
39
|
+
updater: c.updater
|
|
40
|
+
}), O.current = e), () => {
|
|
41
|
+
if (g(!1), e != null) try {
|
|
42
|
+
e.dispose();
|
|
43
|
+
} catch {}
|
|
44
|
+
O.current === e && (O.current = null);
|
|
45
|
+
};
|
|
46
|
+
}, [
|
|
47
|
+
c,
|
|
48
|
+
x,
|
|
49
|
+
f,
|
|
50
|
+
E,
|
|
51
|
+
C,
|
|
52
|
+
T,
|
|
53
|
+
y
|
|
54
|
+
]), {
|
|
55
|
+
active: D,
|
|
56
|
+
completed: _,
|
|
57
|
+
error: p
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//#endregion
|
|
61
|
+
export { f as useConditionalSubscription };
|
|
62
|
+
|
|
63
|
+
//# sourceMappingURL=useConditionalSubscription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useConditionalSubscription.js","names":[],"sources":["../../../src/hooks/useConditionalSubscription.ts"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from 'react';\nimport * as ReactRelay from 'react-relay';\nimport type { GraphQLSubscriptionConfig, OperationType } from 'relay-runtime';\n\nimport {\n getRelayTransportSnapshot,\n subscribeRelayTransport,\n} from '../relay/environment.js';\n\ntype ConditionalOptions<T extends OperationType> = {\n enabled: boolean;\n deps?: readonly unknown[];\n getVariables?: () => T['variables'];\n};\n\ntype UseConditionalSubscriptionReturn = {\n active: boolean;\n completed: boolean;\n error: Error | null;\n};\n\ntype Hop = { dispose: () => void } | null;\n\nconst EMPTY_DEPS: readonly unknown[] = [];\n\n/** Resolve the Relay module regardless of whether the package exposes a default export shim. */\nfunction resolveRelayApi(): typeof ReactRelay {\n const relayDefault: unknown = Reflect.get(ReactRelay, 'default');\n if (relayDefault != null) {\n return relayDefault as typeof ReactRelay;\n }\n return ReactRelay;\n}\n\nconst relayApi = resolveRelayApi();\n\n/** Subscribe only when the caller enables the subscription and variables exist. */\nexport function useConditionalSubscription<T extends OperationType>(\n config: GraphQLSubscriptionConfig<T>,\n options: ConditionalOptions<T>,\n): UseConditionalSubscriptionReturn {\n const environment = relayApi.useRelayEnvironment();\n const [error, setError] = useState<Error | null>(null);\n const [isSubscribed, setIsSubscribed] = useState(false);\n const [completed, setCompleted] = useState(false);\n const transportGeneration = useSyncExternalStore(\n subscribeRelayTransport,\n () => {\n return getRelayTransportSnapshot().generation;\n },\n () => {\n return getRelayTransportSnapshot().generation;\n },\n );\n\n const { enabled = true, deps = EMPTY_DEPS, getVariables } = options;\n\n const resolveVariables = useCallback((): T['variables'] | null => {\n try {\n if (getVariables != null) {\n return getVariables();\n }\n return config.variables;\n } catch {\n return null;\n }\n }, [config.variables, getVariables]);\n\n const resolvedVariables = useMemo<T['variables'] | null>(() => {\n return resolveVariables();\n }, [resolveVariables]);\n\n const stableVarsString = useMemo(() => {\n if (resolvedVariables == null) {\n return null;\n }\n try {\n return JSON.stringify(resolvedVariables);\n } catch {\n return null;\n }\n }, [resolvedVariables]);\n\n const isEnabled = Boolean(enabled);\n const variables = resolvedVariables;\n const canSubscribe = isEnabled && variables != null;\n const active = canSubscribe && isSubscribed && error == null && !completed;\n\n const disposableRef = useRef<Hop>(null);\n\n useEffect(() => {\n let disposable: Hop = null;\n const variables = resolveVariables();\n\n if (isEnabled && variables != null) {\n setError(null);\n setCompleted(false);\n setIsSubscribed(true);\n\n disposable = relayApi.requestSubscription<T>(environment, {\n subscription: config.subscription,\n variables,\n cacheConfig: config.cacheConfig,\n configs: config.configs,\n onCompleted: () => {\n setCompleted(true);\n setIsSubscribed(false);\n config.onCompleted?.();\n },\n onError: (nextError) => {\n setError(nextError);\n setIsSubscribed(false);\n config.onError?.(nextError);\n },\n onNext: config.onNext,\n updater: config.updater,\n });\n\n disposableRef.current = disposable;\n }\n\n return () => {\n setIsSubscribed(false);\n if (disposable != null) {\n try {\n disposable.dispose();\n } catch {\n // ignore cleanup failures\n }\n }\n if (disposableRef.current === disposable) {\n disposableRef.current = null;\n }\n };\n }, [\n config,\n deps,\n environment,\n isEnabled,\n resolveVariables,\n stableVarsString,\n transportGeneration,\n ]);\n\n return { active, completed, error };\n}\n"],"mappings":";;;;AA8BA,IAAM,IAAiC,EAAE;AAGzC,SAAS,IAAqC;CAK5C,OAJ8B,QAAQ,IAAI,GAAY,UAClD,IAGG;;AAGT,IAAM,IAAW,GAAiB;AAGlC,SAAgB,EACd,GACA,GACkC;CAClC,IAAM,IAAc,EAAS,qBAAqB,EAC5C,CAAC,GAAO,KAAY,EAAuB,KAAK,EAChD,CAAC,GAAc,KAAmB,EAAS,GAAM,EACjD,CAAC,GAAW,KAAgB,EAAS,GAAM,EAC3C,IAAsB,EAC1B,SAES,GAA2B,CAAC,kBAG5B,GAA2B,CAAC,WAEtC,EAEK,EAAE,aAAU,IAAM,UAAO,GAAY,oBAAiB,GAEtD,IAAmB,QAAyC;EAChE,IAAI;GAIF,OAHI,KAAgB,OAGb,EAAO,YAFL,GAAc;UAGjB;GACN,OAAO;;IAER,CAAC,EAAO,WAAW,EAAa,CAAC,EAE9B,IAAoB,QACjB,GAAkB,EACxB,CAAC,EAAiB,CAAC,EAEhB,IAAmB,QAAc;EACrC,IAAI,KAAqB,MACvB,OAAO;EAET,IAAI;GACF,OAAO,KAAK,UAAU,EAAkB;UAClC;GACN,OAAO;;IAER,CAAC,EAAkB,CAAC,EAEjB,IAAY,EAAQ,GAGpB,IADe,KAAa,KAAa,QAChB,KAAgB,KAAS,QAAQ,CAAC,GAE3D,IAAgB,EAAY,KAAK;CAwDvC,OAtDA,QAAgB;EACd,IAAI,IAAkB,MAChB,IAAY,GAAkB;EA6BpC,OA3BI,KAAa,KAAa,SAC5B,EAAS,KAAK,EACd,EAAa,GAAM,EACnB,EAAgB,GAAK,EAErB,IAAa,EAAS,oBAAuB,GAAa;GACxD,cAAc,EAAO;GACrB;GACA,aAAa,EAAO;GACpB,SAAS,EAAO;GAChB,mBAAmB;IAGjB,AAFA,EAAa,GAAK,EAClB,EAAgB,GAAM,EACtB,EAAO,eAAe;;GAExB,UAAU,MAAc;IAGtB,AAFA,EAAS,EAAU,EACnB,EAAgB,GAAM,EACtB,EAAO,UAAU,EAAU;;GAE7B,QAAQ,EAAO;GACf,SAAS,EAAO;GACjB,CAAC,EAEF,EAAc,UAAU,UAGb;GAEX,IADA,EAAgB,GAAM,EAClB,KAAc,MAChB,IAAI;IACF,EAAW,SAAS;WACd;GAIV,AAAI,EAAc,YAAY,MAC5B,EAAc,UAAU;;IAG3B;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC,EAEK;EAAE;EAAQ;EAAW;EAAO"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useCallback as e, useEffect as t, useRef as n, useState as r } from "react";
|
|
2
|
+
//#region src/hooks/useCopyToClipboard.ts
|
|
3
|
+
var i = "copy-to-clipboard-fallback";
|
|
4
|
+
function a(e) {
|
|
5
|
+
if (typeof document > "u") return;
|
|
6
|
+
let t = document.getElementById(i);
|
|
7
|
+
t ?? (t = document.createElement("textarea"), t.id = i, t.setAttribute("readonly", ""), t.style.position = "absolute", t.style.left = "-9999px", t.style.top = "0", t.style.opacity = "0", document.body.appendChild(t)), t.value = e, t.select(), document.execCommand("copy");
|
|
8
|
+
}
|
|
9
|
+
function o(i = 2e3) {
|
|
10
|
+
let [o, s] = r(null), c = n(null);
|
|
11
|
+
return t(() => () => {
|
|
12
|
+
c.current != null && window.clearTimeout(c.current);
|
|
13
|
+
}, []), {
|
|
14
|
+
copiedKey: o,
|
|
15
|
+
copy: e(async (e, t) => {
|
|
16
|
+
let n = !1, r;
|
|
17
|
+
if (typeof navigator < "u" && (r = navigator.clipboard), r != null) try {
|
|
18
|
+
await r.writeText(e), n = !0;
|
|
19
|
+
} catch {
|
|
20
|
+
n = !1;
|
|
21
|
+
}
|
|
22
|
+
return n ||= (a(e), !0), t != null && (s(t), c.current != null && window.clearTimeout(c.current), c.current = window.setTimeout(() => {
|
|
23
|
+
s(null), c.current = null;
|
|
24
|
+
}, i)), n;
|
|
25
|
+
}, [i])
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
export { o as default, o as useCopyToClipboard };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=useCopyToClipboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCopyToClipboard.js","names":[],"sources":["../../../src/hooks/useCopyToClipboard.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nconst FALLBACK_TEXTAREA_ID = 'copy-to-clipboard-fallback';\n\n/** Write to the clipboard via a hidden textarea when the Clipboard API is unavailable. */\nfunction writeWithFallback(value: string): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n let textarea = document.getElementById(\n FALLBACK_TEXTAREA_ID,\n ) as HTMLTextAreaElement | null;\n\n if (textarea == null) {\n textarea = document.createElement('textarea');\n textarea.id = FALLBACK_TEXTAREA_ID;\n textarea.setAttribute('readonly', '');\n textarea.style.position = 'absolute';\n textarea.style.left = '-9999px';\n textarea.style.top = '0';\n textarea.style.opacity = '0';\n document.body.appendChild(textarea);\n }\n\n textarea.value = value;\n textarea.select();\n document.execCommand('copy');\n}\n\n/** Copy text with best-effort browser fallback and short-lived copied state. */\nexport function useCopyToClipboard(timeoutMs = 2000): {\n copiedKey: string | null;\n copy: (value: string, key?: string) => Promise<boolean>;\n} {\n const [copiedKey, setCopiedKey] = useState<string | null>(null);\n const timeoutRef = useRef<number | null>(null);\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current != null) {\n window.clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n const copy = useCallback(\n async (value: string, key?: string): Promise<boolean> => {\n let succeeded = false;\n\n let clipboard: Clipboard | undefined;\n if (typeof navigator !== 'undefined') {\n clipboard = navigator.clipboard;\n }\n\n if (clipboard != null) {\n try {\n await clipboard.writeText(value);\n succeeded = true;\n } catch {\n succeeded = false;\n }\n }\n\n if (!succeeded) {\n writeWithFallback(value);\n succeeded = true;\n }\n\n if (key != null) {\n setCopiedKey(key);\n if (timeoutRef.current != null) {\n window.clearTimeout(timeoutRef.current);\n }\n timeoutRef.current = window.setTimeout(() => {\n setCopiedKey(null);\n timeoutRef.current = null;\n }, timeoutMs);\n }\n\n return succeeded;\n },\n [timeoutMs],\n );\n\n return { copiedKey, copy };\n}\n\nexport default useCopyToClipboard;\n"],"mappings":";;AAEA,IAAM,IAAuB;AAG7B,SAAS,EAAkB,GAAqB;CAC9C,IAAI,OAAO,WAAa,KACtB;CAGF,IAAI,IAAW,SAAS,eACtB,EACD;CAeD,AAbI,MACF,IAAW,SAAS,cAAc,WAAW,EAC7C,EAAS,KAAK,GACd,EAAS,aAAa,YAAY,GAAG,EACrC,EAAS,MAAM,WAAW,YAC1B,EAAS,MAAM,OAAO,WACtB,EAAS,MAAM,MAAM,KACrB,EAAS,MAAM,UAAU,KACzB,SAAS,KAAK,YAAY,EAAS,GAGrC,EAAS,QAAQ,GACjB,EAAS,QAAQ,EACjB,SAAS,YAAY,OAAO;;AAI9B,SAAgB,EAAmB,IAAY,KAG7C;CACA,IAAM,CAAC,GAAW,KAAgB,EAAwB,KAAK,EACzD,IAAa,EAAsB,KAAK;CAiD9C,OA/CA,cACe;EACX,AAAI,EAAW,WAAW,QACxB,OAAO,aAAa,EAAW,QAAQ;IAG1C,EAAE,CAAC,EAyCC;EAAE;EAAW,MAvCP,EACX,OAAO,GAAe,MAAmC;GACvD,IAAI,IAAY,IAEZ;GAKJ,IAJI,OAAO,YAAc,QACvB,IAAY,UAAU,YAGpB,KAAa,MACf,IAAI;IAEF,AADA,MAAM,EAAU,UAAU,EAAM,EAChC,IAAY;WACN;IACN,IAAY;;GAoBhB,OAhBA,AAEE,OADA,EAAkB,EAAM,EACZ,KAGV,KAAO,SACT,EAAa,EAAI,EACb,EAAW,WAAW,QACxB,OAAO,aAAa,EAAW,QAAQ,EAEzC,EAAW,UAAU,OAAO,iBAAiB;IAE3C,AADA,EAAa,KAAK,EAClB,EAAW,UAAU;MACpB,EAAU,GAGR;KAET,CAAC,EAAU,CAGO;EAAM"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { startTransition as e, useCallback as t, useEffect as n, useMemo as r, useRef as i, useState as a } from "react";
|
|
2
|
+
//#region src/hooks/useInfiniteConnection.ts
|
|
3
|
+
var o = ({ nodes: o, hasNext: s, isLoadingNext: c, runLoadMore: l, surface: u = "unknown", timeoutMs: d = 15e3, onTelemetry: f, onUiError: p, onError: m }) => {
|
|
4
|
+
let [h, g] = a(null), _ = i(!1), v = i(null), y = i(0), b = t(() => {
|
|
5
|
+
v.current != null && (clearTimeout(v.current), v.current = null);
|
|
6
|
+
}, []);
|
|
7
|
+
n(() => () => {
|
|
8
|
+
b();
|
|
9
|
+
}, [b]);
|
|
10
|
+
let x = t(() => {
|
|
11
|
+
if (!s || c || _.current) return;
|
|
12
|
+
_.current = !0;
|
|
13
|
+
let t = y.current + 1;
|
|
14
|
+
y.current = t, g(null);
|
|
15
|
+
let n = Date.now();
|
|
16
|
+
f?.("list_load_more_requested", {
|
|
17
|
+
surface: u,
|
|
18
|
+
loadedCount: o.length
|
|
19
|
+
}), b(), v.current = setTimeout(() => {
|
|
20
|
+
y.current === t && (y.current = t + 1, _.current = !1, g(/* @__PURE__ */ Error("timeout")), f?.("list_load_more_failed", {
|
|
21
|
+
surface: u,
|
|
22
|
+
durationMs: d
|
|
23
|
+
}), m?.({
|
|
24
|
+
scope: "infinite_scroll_timeout",
|
|
25
|
+
message: "Load more timed out",
|
|
26
|
+
payload: {
|
|
27
|
+
surface: u,
|
|
28
|
+
durationMs: d
|
|
29
|
+
}
|
|
30
|
+
}), p?.("infinite_scroll_timeout", "Load more timed out", {
|
|
31
|
+
surface: u,
|
|
32
|
+
durationMs: d
|
|
33
|
+
}));
|
|
34
|
+
}, d), e(() => {
|
|
35
|
+
l((e) => {
|
|
36
|
+
if (y.current !== t) return;
|
|
37
|
+
y.current = t + 1, _.current = !1, b();
|
|
38
|
+
let r = Date.now() - n;
|
|
39
|
+
if (e != null) {
|
|
40
|
+
g(e), f?.("list_load_more_failed", {
|
|
41
|
+
surface: u,
|
|
42
|
+
durationMs: r
|
|
43
|
+
}), m?.({
|
|
44
|
+
scope: "infinite_scroll",
|
|
45
|
+
message: e.message,
|
|
46
|
+
payload: {
|
|
47
|
+
surface: u,
|
|
48
|
+
durationMs: r
|
|
49
|
+
}
|
|
50
|
+
}), p?.("infinite_scroll", e.message, {
|
|
51
|
+
surface: u,
|
|
52
|
+
durationMs: r
|
|
53
|
+
});
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
f?.("list_load_more_succeeded", {
|
|
57
|
+
surface: u,
|
|
58
|
+
durationMs: r
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}, [
|
|
63
|
+
b,
|
|
64
|
+
s,
|
|
65
|
+
c,
|
|
66
|
+
o.length,
|
|
67
|
+
m,
|
|
68
|
+
f,
|
|
69
|
+
p,
|
|
70
|
+
l,
|
|
71
|
+
u,
|
|
72
|
+
d
|
|
73
|
+
]), S = t(() => {
|
|
74
|
+
x();
|
|
75
|
+
}, [x]);
|
|
76
|
+
return r(() => ({
|
|
77
|
+
nodes: o,
|
|
78
|
+
hasNext: s,
|
|
79
|
+
isLoadingNext: c,
|
|
80
|
+
incrementalError: h,
|
|
81
|
+
loadMoreSafe: x,
|
|
82
|
+
retryLoadMore: S
|
|
83
|
+
}), [
|
|
84
|
+
o,
|
|
85
|
+
s,
|
|
86
|
+
c,
|
|
87
|
+
h,
|
|
88
|
+
x,
|
|
89
|
+
S
|
|
90
|
+
]);
|
|
91
|
+
};
|
|
92
|
+
//#endregion
|
|
93
|
+
export { o as default, o as useInfiniteConnection };
|
|
94
|
+
|
|
95
|
+
//# sourceMappingURL=useInfiniteConnection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInfiniteConnection.js","names":[],"sources":["../../../src/hooks/useInfiniteConnection.ts"],"sourcesContent":["import {\n startTransition,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nexport type LoadMoreRunner = (\n onComplete: (error: Error | null) => void,\n) => void;\n\nexport type InfiniteConnectionTelemetryPayload = {\n surface: string;\n loadedCount?: number;\n durationMs?: number;\n};\n\nexport type InfiniteConnectionTelemetryEvent =\n | 'list_load_more_requested'\n | 'list_load_more_failed'\n | 'list_load_more_succeeded';\n\nexport type InfiniteConnectionErrorEvent = {\n scope: 'infinite_scroll' | 'infinite_scroll_timeout';\n message: string;\n payload: {\n surface: string;\n durationMs: number;\n };\n};\n\nexport type UseInfiniteConnectionParams<TNode> = {\n nodes: readonly TNode[];\n hasNext: boolean;\n isLoadingNext: boolean;\n runLoadMore: LoadMoreRunner;\n surface?: string;\n timeoutMs?: number;\n onTelemetry?: (\n event: InfiniteConnectionTelemetryEvent,\n payload: InfiniteConnectionTelemetryPayload,\n ) => void;\n onUiError?: (\n scope: InfiniteConnectionErrorEvent['scope'],\n message: string,\n payload: InfiniteConnectionErrorEvent['payload'],\n ) => void;\n onError?: (event: InfiniteConnectionErrorEvent) => void;\n};\n\nexport type UseInfiniteConnectionResult<TNode> = {\n nodes: readonly TNode[];\n hasNext: boolean;\n isLoadingNext: boolean;\n incrementalError: Error | null;\n loadMoreSafe: () => void;\n retryLoadMore: () => void;\n};\n\nexport const useInfiniteConnection = <TNode>({\n nodes,\n hasNext,\n isLoadingNext,\n runLoadMore,\n surface = 'unknown',\n timeoutMs = 15_000,\n onTelemetry,\n onUiError,\n onError,\n}: UseInfiniteConnectionParams<TNode>): UseInfiniteConnectionResult<TNode> => {\n const [incrementalError, setIncrementalError] = useState<Error | null>(null);\n const inFlightRef = useRef(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const requestTokenRef = useRef(0);\n\n const clearPendingTimeout = useCallback(() => {\n if (timeoutRef.current == null) {\n return;\n }\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }, []);\n\n useEffect(() => {\n return () => {\n clearPendingTimeout();\n };\n }, [clearPendingTimeout]);\n\n const loadMoreSafe = useCallback(() => {\n if (!hasNext || isLoadingNext || inFlightRef.current) {\n return;\n }\n inFlightRef.current = true;\n const requestToken = requestTokenRef.current + 1;\n requestTokenRef.current = requestToken;\n setIncrementalError(null);\n const startedAt = Date.now();\n onTelemetry?.('list_load_more_requested', {\n surface,\n loadedCount: nodes.length,\n });\n clearPendingTimeout();\n timeoutRef.current = setTimeout(() => {\n if (requestTokenRef.current !== requestToken) {\n return;\n }\n requestTokenRef.current = requestToken + 1;\n inFlightRef.current = false;\n setIncrementalError(new Error('timeout'));\n onTelemetry?.('list_load_more_failed', {\n surface,\n durationMs: timeoutMs,\n });\n onError?.({\n scope: 'infinite_scroll_timeout',\n message: 'Load more timed out',\n payload: {\n surface,\n durationMs: timeoutMs,\n },\n });\n onUiError?.('infinite_scroll_timeout', 'Load more timed out', {\n surface,\n durationMs: timeoutMs,\n });\n }, timeoutMs);\n\n startTransition(() => {\n runLoadMore((error) => {\n if (requestTokenRef.current !== requestToken) {\n return;\n }\n requestTokenRef.current = requestToken + 1;\n inFlightRef.current = false;\n clearPendingTimeout();\n const durationMs = Date.now() - startedAt;\n if (error != null) {\n setIncrementalError(error);\n onTelemetry?.('list_load_more_failed', {\n surface,\n durationMs,\n });\n onError?.({\n scope: 'infinite_scroll',\n message: error.message,\n payload: {\n surface,\n durationMs,\n },\n });\n onUiError?.('infinite_scroll', error.message, {\n surface,\n durationMs,\n });\n return;\n }\n onTelemetry?.('list_load_more_succeeded', {\n surface,\n durationMs,\n });\n });\n });\n }, [\n clearPendingTimeout,\n hasNext,\n isLoadingNext,\n nodes.length,\n onError,\n onTelemetry,\n onUiError,\n runLoadMore,\n surface,\n timeoutMs,\n ]);\n\n const retryLoadMore = useCallback(() => {\n loadMoreSafe();\n }, [loadMoreSafe]);\n\n return useMemo(() => {\n return {\n nodes,\n hasNext,\n isLoadingNext,\n incrementalError,\n loadMoreSafe,\n retryLoadMore,\n };\n }, [\n nodes,\n hasNext,\n isLoadingNext,\n incrementalError,\n loadMoreSafe,\n retryLoadMore,\n ]);\n};\n\nexport default useInfiniteConnection;\n"],"mappings":";;AA6DA,IAAa,KAAgC,EAC3C,UACA,YACA,kBACA,gBACA,aAAU,WACV,eAAY,MACZ,gBACA,cACA,iBAC4E;CAC5E,IAAM,CAAC,GAAkB,KAAuB,EAAuB,KAAK,EACtE,IAAc,EAAO,GAAM,EAC3B,IAAa,EAA6C,KAAK,EAC/D,IAAkB,EAAO,EAAE,EAE3B,IAAsB,QAAkB;EACxC,EAAW,WAAW,SAG1B,aAAa,EAAW,QAAQ,EAChC,EAAW,UAAU;IACpB,EAAE,CAAC;CAEN,cACe;EACX,GAAqB;IAEtB,CAAC,EAAoB,CAAC;CAEzB,IAAM,IAAe,QAAkB;EACrC,IAAI,CAAC,KAAW,KAAiB,EAAY,SAC3C;EAEF,EAAY,UAAU;EACtB,IAAM,IAAe,EAAgB,UAAU;EAE/C,AADA,EAAgB,UAAU,GAC1B,EAAoB,KAAK;EACzB,IAAM,IAAY,KAAK,KAAK;EA+B5B,AA9BA,IAAc,4BAA4B;GACxC;GACA,aAAa,EAAM;GACpB,CAAC,EACF,GAAqB,EACrB,EAAW,UAAU,iBAAiB;GAChC,EAAgB,YAAY,MAGhC,EAAgB,UAAU,IAAe,GACzC,EAAY,UAAU,IACtB,EAAoB,gBAAI,MAAM,UAAU,CAAC,EACzC,IAAc,yBAAyB;IACrC;IACA,YAAY;IACb,CAAC,EACF,IAAU;IACR,OAAO;IACP,SAAS;IACT,SAAS;KACP;KACA,YAAY;KACb;IACF,CAAC,EACF,IAAY,2BAA2B,uBAAuB;IAC5D;IACA,YAAY;IACb,CAAC;KACD,EAAU,EAEb,QAAsB;GACpB,GAAa,MAAU;IACrB,IAAI,EAAgB,YAAY,GAC9B;IAIF,AAFA,EAAgB,UAAU,IAAe,GACzC,EAAY,UAAU,IACtB,GAAqB;IACrB,IAAM,IAAa,KAAK,KAAK,GAAG;IAChC,IAAI,KAAS,MAAM;KAcjB,AAbA,EAAoB,EAAM,EAC1B,IAAc,yBAAyB;MACrC;MACA;MACD,CAAC,EACF,IAAU;MACR,OAAO;MACP,SAAS,EAAM;MACf,SAAS;OACP;OACA;OACD;MACF,CAAC,EACF,IAAY,mBAAmB,EAAM,SAAS;MAC5C;MACA;MACD,CAAC;KACF;;IAEF,IAAc,4BAA4B;KACxC;KACA;KACD,CAAC;KACF;IACF;IACD;EACD;EACA;EACA;EACA,EAAM;EACN;EACA;EACA;EACA;EACA;EACA;EACD,CAAC,EAEI,IAAgB,QAAkB;EACtC,GAAc;IACb,CAAC,EAAa,CAAC;CAElB,OAAO,SACE;EACL;EACA;EACA;EACA;EACA;EACA;EACD,GACA;EACD;EACA;EACA;EACA;EACA;EACA;EACD,CAAC"}
|