@plumile/backoffice-react 0.1.190 → 0.1.192
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/auth/authRefreshNotice.css.js +0 -1
- package/lib/esm/auth/login/PasskeyLoginForm.js +2 -1
- package/lib/esm/auth/login/PasskeyLoginForm.js.map +1 -1
- package/lib/esm/auth/login/loginPage.css.js +0 -2
- package/lib/esm/components/backoffice/actions/BackofficeEntityActionFormDialog.js +5 -2
- package/lib/esm/components/backoffice/actions/BackofficeEntityActionFormDialog.js.map +1 -1
- package/lib/esm/components/backoffice/actions/backofficeEntityActionFormDialog.css.js +0 -1
- package/lib/esm/components/backoffice/billing/backofficeBillingUsageChart.css.js +0 -1
- package/lib/esm/components/backoffice/detail/backofficeDetailBadgeRow.css.js +0 -1
- package/lib/esm/components/backoffice/detail/backofficeDetailErrorList.css.js +0 -1
- package/lib/esm/components/backoffice/detail/backofficeDetailLayout.css.js +0 -1
- package/lib/esm/components/backoffice/detail/backofficeDetailRelationLink.css.js +0 -2
- package/lib/esm/components/backoffice/detail/backofficeDetailRelationList.css.js +0 -1
- package/lib/esm/components/backoffice/detail/backofficeEntitySummaryHeader.css.js +0 -1
- package/lib/esm/components/backoffice/detail/backofficeRelationsSummaryGrid.css.js +0 -1
- package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js +0 -1
- package/lib/esm/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.js +0 -2
- package/lib/esm/components/backoffice/layout/buildSidebarSections.js +10 -7
- package/lib/esm/components/backoffice/layout/buildSidebarSections.js.map +1 -1
- package/lib/esm/components/backoffice/layout/sidebarUtils.js +1 -1
- package/lib/esm/components/backoffice/layout/sidebarUtils.js.map +1 -1
- package/lib/esm/components/backoffice/links/backofficeLink.css.js +0 -1
- package/lib/esm/components/backoffice/list/RowFlagsCell.css.js +0 -1
- package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js +0 -1
- package/lib/esm/components/backoffice/refs/backofficeEntityIdRef.css.js +0 -1
- package/lib/esm/components/backoffice/routing/backofficeContentBoundary.css.js +0 -1
- package/lib/esm/components/backoffice/routing/backofficeContentError.css.js +0 -1
- package/lib/esm/components/backoffice/routing/backofficeContentFallback.css.js +0 -1
- package/lib/esm/components/backoffice/routing/backofficeRouteFallback.css.js +0 -1
- package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js +17 -17
- package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js.map +1 -1
- package/lib/esm/components/backoffice/scaffolds/backofficeEntityListScaffold.css.js +0 -1
- package/lib/esm/components/backoffice/scaffolds/backofficeTabbedDetailShell.css.js +0 -1
- package/lib/esm/components/backoffice/shared/backofficeInlineFilterRow.css.js +0 -1
- package/lib/esm/components/backoffice/tools/backofficeToolsForm.css.js +0 -1
- package/lib/esm/components/backoffice/tools/backofficeToolsJsonForm.css.js +0 -1
- package/lib/esm/filters/filterHelpers.js +1 -1
- package/lib/esm/filters/filterHelpers.js.map +1 -1
- package/lib/esm/hooks/useBackofficeSidebarPins.js +2 -1
- package/lib/esm/hooks/useBackofficeSidebarPins.js.map +1 -1
- package/lib/esm/hooks/useSidebarGroupCollapse.js +2 -1
- package/lib/esm/hooks/useSidebarGroupCollapse.js.map +1 -1
- package/lib/esm/node_modules/relay-test-utils/lib/RelayMockPayloadGenerator.js +2 -2
- package/lib/esm/node_modules/relay-test-utils/lib/RelayMockPayloadGenerator.js.map +1 -1
- package/lib/esm/node_modules/relay-test-utils/lib/RelayModernMockEnvironment.js +1 -1
- package/lib/esm/node_modules/relay-test-utils/lib/RelayModernMockEnvironment.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityDetailPage.helpers.js +1 -1
- package/lib/esm/pages/BackofficeEntityDetailPage.helpers.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityDetailPage.js +1 -1
- package/lib/esm/pages/BackofficeEntityDetailPage.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityListPage.js +1 -1
- package/lib/esm/pages/BackofficeEntityListPage.js.map +1 -1
- package/lib/esm/pages/backofficeDashboardPage.css.js +0 -1
- package/lib/esm/pages/backofficeEntityDetailPage.css.js +0 -1
- package/lib/esm/pages/backofficeEntityListPage.css.js +0 -1
- package/lib/esm/pages/detail/pageResolution.js +1 -1
- package/lib/esm/pages/detail/pageResolution.js.map +1 -1
- package/lib/esm/provider/entityRegistry.js +15 -15
- package/lib/esm/provider/entityRegistry.js.map +1 -1
- package/lib/esm/storybook/relay/RelayStory.css.js +0 -1
- package/lib/esm/storybook/relay/mockResolvers.js +10 -9
- package/lib/esm/storybook/relay/mockResolvers.js.map +1 -1
- package/lib/types/auth/AuthFlows.stories.d.ts.map +1 -1
- package/lib/types/auth/AuthRefreshNotice.d.ts.map +1 -1
- package/lib/types/auth/TotpQrCode.d.ts.map +1 -1
- package/lib/types/auth/login/AuthPanel.d.ts.map +1 -1
- package/lib/types/auth/login/EmailCapturePanel.d.ts.map +1 -1
- package/lib/types/auth/login/LoginFlow.d.ts.map +1 -1
- package/lib/types/auth/login/MethodChooser.d.ts.map +1 -1
- package/lib/types/auth/login/MfaChallengeForm.d.ts.map +1 -1
- package/lib/types/auth/login/OidcButtons.d.ts.map +1 -1
- package/lib/types/auth/login/PasskeyLoginForm.d.ts.map +1 -1
- package/lib/types/auth/login/PasswordLoginPanel.d.ts.map +1 -1
- package/lib/types/auth/pages/AcceptInvitationScreen.d.ts.map +1 -1
- package/lib/types/auth/pages/PasswordResetCompleteScreen.d.ts.map +1 -1
- package/lib/types/auth/pages/PasswordResetRequestScreen.d.ts.map +1 -1
- package/lib/types/auth/pages/VerifyEmailScreen.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/toastViewAction.d.ts.map +1 -1
- package/lib/types/components/backoffice/billing/BackofficeBillingUsageChart.d.ts.map +1 -1
- package/lib/types/components/backoffice/billing/BackofficeBillingUsageChart.stories.d.ts +18 -18
- package/lib/types/components/backoffice/billing/BackofficeBillingUsageChart.stories.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailBadgeRow.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailErrorList.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailFlagTag.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailPrimitives.stories.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailRelationList.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeDetailTaggedValue.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeEntitySummaryHeader.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeEnumLabel.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeLifecycleTimelineSection.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeReferenceValue.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeRelationsSummaryGrid.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeStatusGroup.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeStatusMetaBadge.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeTokenUsageBreakdown.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/BackofficeUsageCostBreakdown.d.ts.map +1 -1
- package/lib/types/components/backoffice/detail/createBackofficeEntityLinkProps.d.ts.map +1 -1
- package/lib/types/components/backoffice/errors/BackofficeErrorBoundary.d.ts.map +1 -1
- package/lib/types/components/backoffice/errors/BackofficeErrorBoundary.stories.d.ts.map +1 -1
- package/lib/types/components/backoffice/filters/BackofficeFilterAction.d.ts.map +1 -1
- package/lib/types/components/backoffice/filters/DeferredFilterSearchInput.d.ts.map +1 -1
- package/lib/types/components/backoffice/filters/EntityFilterValue.d.ts.map +1 -1
- package/lib/types/components/backoffice/filters/EntityIdFilterField.d.ts.map +1 -1
- package/lib/types/components/backoffice/filters/EntityIdFilterField.stories.d.ts +1 -1
- package/lib/types/components/backoffice/filters/EntityIdFilterField.stories.d.ts.map +1 -1
- package/lib/types/components/backoffice/hub/BackofficeHubTemplate.d.ts.map +1 -1
- package/lib/types/components/backoffice/hub/BackofficeHubTemplate.stories.d.ts +4 -3
- package/lib/types/components/backoffice/hub/BackofficeHubTemplate.stories.d.ts.map +1 -1
- package/lib/types/components/backoffice/layout/BackofficePermissionsContext.d.ts.map +1 -1
- package/lib/types/components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.d.ts.map +1 -1
- package/lib/types/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.d.ts.map +1 -1
- package/lib/types/components/backoffice/layout/breadcrumb/BackofficeTopbarPortal.d.ts.map +1 -1
- package/lib/types/components/backoffice/layout/breadcrumb/assertValidBreadcrumb.d.ts.map +1 -1
- package/lib/types/components/backoffice/layout/breadcrumb/buildBreadcrumbs.d.ts +1 -1
- package/lib/types/components/backoffice/layout/breadcrumb/buildBreadcrumbs.d.ts.map +1 -1
- package/lib/types/components/backoffice/layout/mapViewerToSidebarProfileView.d.ts.map +1 -1
- package/lib/types/components/backoffice/layout/sidebarUtils.d.ts.map +1 -1
- package/lib/types/components/backoffice/links/BackofficeInlineLink.d.ts.map +1 -1
- package/lib/types/components/backoffice/links/BackofficeLink.d.ts.map +1 -1
- package/lib/types/components/backoffice/links/BackofficeLinkContent.d.ts.map +1 -1
- package/lib/types/components/backoffice/links/BackofficeLinkLabel.d.ts.map +1 -1
- package/lib/types/components/backoffice/links/resolveBackofficeLink.d.ts.map +1 -1
- package/lib/types/components/backoffice/links/resolveBackofficeTargetIcon.d.ts.map +1 -1
- package/lib/types/components/backoffice/links/useBackofficeLink.d.ts.map +1 -1
- package/lib/types/components/backoffice/list/RowFlagsCell.d.ts.map +1 -1
- package/lib/types/components/backoffice/overview/BackofficeOverviewLayout.d.ts.map +1 -1
- package/lib/types/components/backoffice/overview/BackofficeOverviewLayout.stories.d.ts +1 -1
- package/lib/types/components/backoffice/overview/BackofficeOverviewLayout.stories.d.ts.map +1 -1
- package/lib/types/components/backoffice/pickers/EntityIdPickerDialog.d.ts.map +1 -1
- package/lib/types/components/backoffice/pickers/EntityIdPickerDialog.stories.d.ts +2 -1
- package/lib/types/components/backoffice/pickers/EntityIdPickerDialog.stories.d.ts.map +1 -1
- package/lib/types/components/backoffice/refs/BackofficeEntityIdRef.d.ts.map +1 -1
- package/lib/types/components/backoffice/refs/BackofficeEntityLink.d.ts.map +1 -1
- package/lib/types/components/backoffice/refs/BackofficeLazyEntityCount.d.ts.map +1 -1
- package/lib/types/components/backoffice/refs/BackofficeRelatedCountLink.d.ts.map +1 -1
- package/lib/types/components/backoffice/routing/BackofficeContentBoundary.d.ts.map +1 -1
- package/lib/types/components/backoffice/routing/BackofficeContentError.d.ts.map +1 -1
- package/lib/types/components/backoffice/routing/BackofficeContentFallback.d.ts.map +1 -1
- package/lib/types/components/backoffice/routing/BackofficeRouteFallback.d.ts.map +1 -1
- package/lib/types/components/backoffice/routing/BackofficeRoutePendingBar.d.ts.map +1 -1
- package/lib/types/components/backoffice/scaffolds/BackofficeEntityDetailNotFound.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.map +1 -1
- package/lib/types/components/backoffice/scaffolds/BackofficeListFilterContext.d.ts.map +1 -1
- package/lib/types/components/backoffice/scaffolds/BackofficeTabbedDetailShell.d.ts.map +1 -1
- package/lib/types/components/backoffice/scaffolds/BackofficeTabbedDetailShell.stories.d.ts +1 -1
- package/lib/types/components/backoffice/scaffolds/BackofficeTabbedDetailShell.stories.d.ts.map +1 -1
- package/lib/types/components/backoffice/scaffolds/backofficeListScrollMode.d.ts +1 -1
- package/lib/types/components/backoffice/shared/BackofficeFilterableCell.d.ts.map +1 -1
- package/lib/types/components/backoffice/shared/BackofficeFormattedCurrency.d.ts.map +1 -1
- package/lib/types/components/backoffice/shared/BackofficeFormattedNumber.d.ts.map +1 -1
- package/lib/types/components/backoffice/shared/BackofficeInlineFilterRow.d.ts.map +1 -1
- package/lib/types/components/backoffice/shared/backofficeFilterableCell.css.d.ts.map +1 -1
- package/lib/types/components/backoffice/technical/TechnicalIdentifierValue.d.ts.map +1 -1
- package/lib/types/components/backoffice/tools/BackofficeTools.stories.d.ts.map +1 -1
- package/lib/types/components/backoffice/tools/BackofficeToolsDocPanel.d.ts.map +1 -1
- package/lib/types/components/backoffice/tools/BackofficeToolsErrorFallback.d.ts.map +1 -1
- package/lib/types/components/backoffice/tools/BackofficeToolsJsonForm.d.ts.map +1 -1
- package/lib/types/components/backoffice/tools/BackofficeToolsQueryBoundary.d.ts.map +1 -1
- package/lib/types/hooks/useAuth.d.ts.map +1 -1
- package/lib/types/hooks/useBackofficeSessionAuth.d.ts.map +1 -1
- package/lib/types/hooks/useBackofficeSidebarPins.d.ts +6 -3
- package/lib/types/hooks/useBackofficeSidebarPins.d.ts.map +1 -1
- package/lib/types/hooks/useCopyToClipboard.d.ts.map +1 -1
- package/lib/types/hooks/useInfiniteConnection.d.ts.map +1 -1
- package/lib/types/hooks/useSidebarGroupCollapse.d.ts.map +1 -1
- package/lib/types/i18n/mergeResourceLanguages.d.ts +5 -2
- package/lib/types/i18n/mergeResourceLanguages.d.ts.map +1 -1
- package/lib/types/i18n/resources.d.ts.map +1 -1
- package/lib/types/modules/uploads.d.ts.map +1 -1
- package/lib/types/pages/BackofficeAcceptInvitationPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeDashboardPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeDashboardPage.helpers.d.ts.map +1 -1
- package/lib/types/pages/BackofficeDashboardPage.stories.d.ts.map +1 -1
- package/lib/types/pages/BackofficeDashboardShellPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeDashboardWidgetContent.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityDetailFramePage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityDetailLayoutPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityDetailPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityDetailPage.helpers.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityDetailPage.view-helpers.d.ts +1 -1
- package/lib/types/pages/BackofficeEntityDetailPage.view-helpers.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityDetailPageConfigPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityDetailShellPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityDetailUnknownPageRedirect.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityListDataPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityListPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityListPage.helpers.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityListRouteContext.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityListShellPage.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/BackofficeLoginPage.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/BackofficeRedirect.d.ts.map +1 -1
- package/lib/types/pages/BackofficeToolShellPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeVerifyEmailPage.d.ts.map +1 -1
- package/lib/types/pages/detail/BackofficeEntityDetailManifestFallback.d.ts.map +1 -1
- package/lib/types/pages/detail/buildTabsItems.d.ts.map +1 -1
- package/lib/types/pages/detail/pageResolution.d.ts.map +1 -1
- package/lib/types/provider/BackofficeConfigContext.d.ts.map +1 -1
- package/lib/types/provider/BackofficeListUiStateContext.d.ts +1 -1
- package/lib/types/provider/BackofficeListUiStateContext.d.ts.map +1 -1
- package/lib/types/provider/BackofficeProvider.d.ts.map +1 -1
- package/lib/types/provider/dashboardRegistrations.d.ts.map +1 -1
- package/lib/types/provider/entityRegistry.d.ts +6 -3
- package/lib/types/provider/entityRegistry.d.ts.map +1 -1
- package/lib/types/provider/lazyValue.d.ts.map +1 -1
- package/lib/types/provider/useBackofficeEntityLoader.d.ts +6 -3
- package/lib/types/provider/useBackofficeEntityLoader.d.ts.map +1 -1
- package/lib/types/provider/useBackofficeLazyValue.d.ts.map +1 -1
- package/lib/types/relay/createInlineReader.d.ts.map +1 -1
- package/lib/types/relay/envHelpers.d.ts +6 -3
- package/lib/types/relay/envHelpers.d.ts.map +1 -1
- package/lib/types/relay/identityView.d.ts.map +1 -1
- package/lib/types/relay/mutationResult.d.ts.map +1 -1
- package/lib/types/relay/typedRelayHooks.d.ts +1 -1
- package/lib/types/relay/typedRelayHooks.d.ts.map +1 -1
- package/lib/types/router/backofficeAuthPaths.d.ts.map +1 -1
- package/lib/types/router/createBackofficeRoutes.d.ts +28 -17
- package/lib/types/router/createBackofficeRoutes.d.ts.map +1 -1
- package/lib/types/storybook/relay/RelayStory.d.ts.map +1 -1
- package/lib/types/subscriptions/useCursorResumableSubscription.d.ts.map +1 -1
- package/package.json +21 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSidebarGroupCollapse.js","names":[],"sources":["../../../src/hooks/useSidebarGroupCollapse.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\n\nexport type SidebarGroupCollapseState = Record<string, boolean | undefined>;\n\nexport type UseSidebarGroupCollapseInput = {\n groupIds: readonly string[];\n activeGroupId?: string | null;\n defaultCollapsedByGroupId?: Record<string, boolean | undefined>;\n storageKey?: string;\n persist?: boolean;\n};\n\nconst readStoredState = (\n storageKey: string | undefined,\n): SidebarGroupCollapseState | null => {\n if (storageKey == null || typeof window === 'undefined') {\n return null;\n }\n try {\n const raw = window.localStorage.getItem(storageKey);\n if (raw == null) {\n return null;\n }\n const parsed = JSON.parse(raw) as unknown;\n if (parsed == null || typeof parsed !== 'object') {\n return null;\n }\n const output: SidebarGroupCollapseState = {};\n Object.entries(parsed as Record<string, unknown>).forEach(\n ([key, value]) => {\n if (typeof value === 'boolean') {\n output[key] = value;\n }\n },\n );\n return output;\n } catch {\n return null;\n }\n};\n\nconst buildInitialState = (\n groupIds: readonly string[],\n activeGroupId?: string | null,\n defaultCollapsedByGroupId?: Record<string, boolean | undefined>,\n): SidebarGroupCollapseState => {\n const state: SidebarGroupCollapseState = {};\n groupIds.forEach((groupId) => {\n state[groupId] = defaultCollapsedByGroupId?.[groupId] ?? true;\n });\n if (activeGroupId != null && groupIds.includes(activeGroupId)) {\n state[activeGroupId] = false;\n }\n return state;\n};\n\nexport const useSidebarGroupCollapse = (\n input: UseSidebarGroupCollapseInput,\n): {\n collapsedByGroupId: SidebarGroupCollapseState;\n setCollapsed: (groupId: string, collapsed: boolean) => void;\n} => {\n const {\n activeGroupId,\n defaultCollapsedByGroupId,\n groupIds,\n persist = false,\n storageKey,\n } = input;\n\n const groupIdList = useMemo(() => {\n return [...groupIds];\n }, [groupIds]);\n\n const [collapsedByGroupId, setCollapsedByGroupId] =\n useState<SidebarGroupCollapseState>(() => {\n if (persist) {\n const stored = readStoredState(storageKey);\n if (stored != null) {\n return {\n ...buildInitialState(\n groupIdList,\n activeGroupId,\n defaultCollapsedByGroupId,\n ),\n ...stored,\n };\n }\n }\n return buildInitialState(\n groupIdList,\n activeGroupId,\n defaultCollapsedByGroupId,\n );\n });\n\n useEffect(() => {\n setCollapsedByGroupId((prev) => {\n const next: SidebarGroupCollapseState = {};\n\n groupIdList.forEach((groupId) => {\n const existing = prev[groupId];\n next[groupId] =\n existing ?? defaultCollapsedByGroupId?.[groupId] ?? true;\n });\n\n if (activeGroupId != null && groupIdList.includes(activeGroupId)) {\n next[activeGroupId] = false;\n }\n\n return next;\n });\n }, [activeGroupId, defaultCollapsedByGroupId, groupIdList]);\n\n useEffect(() => {\n if (!persist || storageKey == null || typeof window === 'undefined') {\n return;\n }\n try {\n window.localStorage.setItem(\n storageKey,\n JSON.stringify(collapsedByGroupId),\n );\n } catch {\n // Ignore storage quota / privacy mode failures.\n }\n }, [collapsedByGroupId, persist, storageKey]);\n\n useEffect(() => {\n if (activeGroupId == null) {\n return;\n }\n setCollapsedByGroupId((prev) => {\n if (prev[activeGroupId] === false) {\n return prev;\n }\n return {\n ...prev,\n [activeGroupId]: false,\n };\n });\n }, [activeGroupId]);\n\n const setCollapsed = useCallback((groupId: string, collapsed: boolean) => {\n setCollapsedByGroupId((prev) => {\n if (prev[groupId] === collapsed) {\n return prev;\n }\n return {\n ...prev,\n [groupId]: collapsed,\n };\n });\n }, []);\n\n return {\n collapsedByGroupId,\n setCollapsed,\n };\n};\n\nexport default useSidebarGroupCollapse;\n"],"mappings":";;AAYA,IAAM,KACJ,MACqC;CACrC,IAAI,KAAc,QAAQ,OAAO,SAAW,KAC1C,OAAO;CAET,IAAI;EACF,IAAM,IAAM,OAAO,aAAa,QAAQ,CAAU;EAClD,IAAI,KAAO,MACT,OAAO;EAET,IAAM,IAAS,KAAK,MAAM,CAAG;EAC7B,IAAsB,OAAO,KAAW,aAApC,GACF,OAAO;EAET,IAAM,IAAoC,CAAC;EAQ3C,OAPA,OAAO,QAAQ,CAAiC,CAAC,CAAC,SAC/C,CAAC,GAAK,OAAW;GAChB,AAAI,OAAO,KAAU,cACnB,EAAO,KAAO;EAElB,CACF,GACO;CACT,QAAQ;EACN,OAAO;CACT;AACF,GAEM,KACJ,GACA,GACA,MAC8B;CAC9B,IAAM,IAAmC,CAAC;CAO1C,OANA,EAAS,SAAS,MAAY;EAC5B,EAAM,KAAW,IAA4B,MAAY;CAC3D,CAAC,GACG,KAAiB,QAAQ,EAAS,SAAS,CAAa,MAC1D,EAAM,KAAiB,KAElB;AACT,GAEa,KACX,MAIG;CACH,IAAM,EACJ,kBACA,8BACA,aACA,aAAU,IACV,kBACE,GAEE,IAAc,QACX,CAAC,GAAG,CAAQ,GAClB,CAAC,CAAQ,CAAC,GAEP,CAAC,GAAoB,KACzB,QAA0C;EACxC,IAAI,GAAS;GACX,IAAM,IAAS,EAAgB,CAAU;GACzC,IAAI,KAAU,MACZ,OAAO;IACL,GAAG,EACD,GACA,GACA,CACF;IACA,GAAG;GACL;EAEJ;EACA,OAAO,EACL,GACA,GACA,CACF;CACF,CAAC;CA6DH,OA3DA,QAAgB;EACd,GAAuB,MAAS;GAC9B,IAAM,IAAkC,CAAC;GAYzC,OAVA,EAAY,SAAS,MAAY;
|
|
1
|
+
{"version":3,"file":"useSidebarGroupCollapse.js","names":[],"sources":["../../../src/hooks/useSidebarGroupCollapse.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\n\nexport type SidebarGroupCollapseState = Record<string, boolean | undefined>;\n\nexport type UseSidebarGroupCollapseInput = {\n groupIds: readonly string[];\n activeGroupId?: string | null;\n defaultCollapsedByGroupId?: Record<string, boolean | undefined>;\n storageKey?: string;\n persist?: boolean;\n};\n\nconst readStoredState = (\n storageKey: string | undefined,\n): SidebarGroupCollapseState | null => {\n if (storageKey == null || typeof window === 'undefined') {\n return null;\n }\n try {\n const raw = window.localStorage.getItem(storageKey);\n if (raw == null) {\n return null;\n }\n const parsed = JSON.parse(raw) as unknown;\n if (parsed == null || typeof parsed !== 'object') {\n return null;\n }\n const output: SidebarGroupCollapseState = {};\n Object.entries(parsed as Record<string, unknown>).forEach(\n ([key, value]) => {\n if (typeof value === 'boolean') {\n output[key] = value;\n }\n },\n );\n return output;\n } catch {\n return null;\n }\n};\n\nconst buildInitialState = (\n groupIds: readonly string[],\n activeGroupId?: string | null,\n defaultCollapsedByGroupId?: Record<string, boolean | undefined>,\n): SidebarGroupCollapseState => {\n const state: SidebarGroupCollapseState = {};\n groupIds.forEach((groupId) => {\n state[groupId] = defaultCollapsedByGroupId?.[groupId] ?? true;\n });\n if (activeGroupId != null && groupIds.includes(activeGroupId)) {\n state[activeGroupId] = false;\n }\n return state;\n};\n\nexport const useSidebarGroupCollapse = (\n input: UseSidebarGroupCollapseInput,\n): {\n collapsedByGroupId: SidebarGroupCollapseState;\n setCollapsed: (groupId: string, collapsed: boolean) => void;\n} => {\n const {\n activeGroupId,\n defaultCollapsedByGroupId,\n groupIds,\n persist = false,\n storageKey,\n } = input;\n\n const groupIdList = useMemo(() => {\n return [...groupIds];\n }, [groupIds]);\n\n const [collapsedByGroupId, setCollapsedByGroupId] =\n useState<SidebarGroupCollapseState>(() => {\n if (persist) {\n const stored = readStoredState(storageKey);\n if (stored != null) {\n return {\n ...buildInitialState(\n groupIdList,\n activeGroupId,\n defaultCollapsedByGroupId,\n ),\n ...stored,\n };\n }\n }\n return buildInitialState(\n groupIdList,\n activeGroupId,\n defaultCollapsedByGroupId,\n );\n });\n\n useEffect(() => {\n setCollapsedByGroupId((prev) => {\n const next: SidebarGroupCollapseState = {};\n\n groupIdList.forEach((groupId) => {\n const existing = prev[groupId];\n next[groupId] =\n existing ?? defaultCollapsedByGroupId?.[groupId] ?? true;\n });\n\n if (activeGroupId != null && groupIdList.includes(activeGroupId)) {\n next[activeGroupId] = false;\n }\n\n return next;\n });\n }, [activeGroupId, defaultCollapsedByGroupId, groupIdList]);\n\n useEffect(() => {\n if (!persist || storageKey == null || typeof window === 'undefined') {\n return;\n }\n try {\n window.localStorage.setItem(\n storageKey,\n JSON.stringify(collapsedByGroupId),\n );\n } catch {\n // Ignore storage quota / privacy mode failures.\n }\n }, [collapsedByGroupId, persist, storageKey]);\n\n useEffect(() => {\n if (activeGroupId == null) {\n return;\n }\n setCollapsedByGroupId((prev) => {\n if (prev[activeGroupId] === false) {\n return prev;\n }\n return {\n ...prev,\n [activeGroupId]: false,\n };\n });\n }, [activeGroupId]);\n\n const setCollapsed = useCallback((groupId: string, collapsed: boolean) => {\n setCollapsedByGroupId((prev) => {\n if (prev[groupId] === collapsed) {\n return prev;\n }\n return {\n ...prev,\n [groupId]: collapsed,\n };\n });\n }, []);\n\n return {\n collapsedByGroupId,\n setCollapsed,\n };\n};\n\nexport default useSidebarGroupCollapse;\n"],"mappings":";;AAYA,IAAM,KACJ,MACqC;CACrC,IAAI,KAAc,QAAQ,OAAO,SAAW,KAC1C,OAAO;CAET,IAAI;EACF,IAAM,IAAM,OAAO,aAAa,QAAQ,CAAU;EAClD,IAAI,KAAO,MACT,OAAO;EAET,IAAM,IAAS,KAAK,MAAM,CAAG;EAC7B,IAAsB,OAAO,KAAW,aAApC,GACF,OAAO;EAET,IAAM,IAAoC,CAAC;EAQ3C,OAPA,OAAO,QAAQ,CAAiC,CAAC,CAAC,SAC/C,CAAC,GAAK,OAAW;GAChB,AAAI,OAAO,KAAU,cACnB,EAAO,KAAO;EAElB,CACF,GACO;CACT,QAAQ;EACN,OAAO;CACT;AACF,GAEM,KACJ,GACA,GACA,MAC8B;CAC9B,IAAM,IAAmC,CAAC;CAO1C,OANA,EAAS,SAAS,MAAY;EAC5B,EAAM,KAAW,IAA4B,MAAY;CAC3D,CAAC,GACG,KAAiB,QAAQ,EAAS,SAAS,CAAa,MAC1D,EAAM,KAAiB,KAElB;AACT,GAEa,KACX,MAIG;CACH,IAAM,EACJ,kBACA,8BACA,aACA,aAAU,IACV,kBACE,GAEE,IAAc,QACX,CAAC,GAAG,CAAQ,GAClB,CAAC,CAAQ,CAAC,GAEP,CAAC,GAAoB,KACzB,QAA0C;EACxC,IAAI,GAAS;GACX,IAAM,IAAS,EAAgB,CAAU;GACzC,IAAI,KAAU,MACZ,OAAO;IACL,GAAG,EACD,GACA,GACA,CACF;IACA,GAAG;GACL;EAEJ;EACA,OAAO,EACL,GACA,GACA,CACF;CACF,CAAC;CA6DH,OA3DA,QAAgB;EACd,GAAuB,MAAS;GAC9B,IAAM,IAAkC,CAAC;GAYzC,OAVA,EAAY,SAAS,MAAY;IAC/B,IAAM,IAAW,EAAK;IACtB,EAAK,KACH,KAAY,IAA4B,MAAY;GACxD,CAAC,GAEG,KAAiB,QAAQ,EAAY,SAAS,CAAa,MAC7D,EAAK,KAAiB,KAGjB;EACT,CAAC;CACH,GAAG;EAAC;EAAe;EAA2B;CAAW,CAAC,GAE1D,QAAgB;EACV,OAAC,KAAW,KAAc,QAAQ,OAAO,SAAW,MAGxD,IAAI;GACF,OAAO,aAAa,QAClB,GACA,KAAK,UAAU,CAAkB,CACnC;EACF,QAAQ,CAER;CACF,GAAG;EAAC;EAAoB;EAAS;CAAU,CAAC,GAE5C,QAAgB;EACV,KAAiB,QAGrB,GAAuB,MACjB,EAAK,OAAmB,KACnB,IAEF;GACL,GAAG;IACF,IAAgB;EACnB,CACD;CACH,GAAG,CAAC,CAAa,CAAC,GAcX;EACL;EACA,cAdmB,GAAa,GAAiB,MAAuB;GACxE,GAAuB,MACjB,EAAK,OAAa,IACb,IAEF;IACL,GAAG;KACF,IAAU;GACb,CACD;EACH,GAAG,CAAC,CAIF;CACF;AACF"}
|
|
@@ -29,7 +29,7 @@ var c = /* @__PURE__ */ e(((e, c) => {
|
|
|
29
29
|
}
|
|
30
30
|
}, H = "__MockObject";
|
|
31
31
|
function U(e, t, n, r) {
|
|
32
|
-
var i = arguments.length > 4 && arguments[4] !== void 0
|
|
32
|
+
var i = arguments.length > 4 && arguments[4] !== void 0 && arguments[4], a = arguments.length > 5 ? arguments[5] : void 0, o = function(i) {
|
|
33
33
|
var a, o = n != null && t != null ? t[n] : null;
|
|
34
34
|
return o != null && (a = o(r, e)), a === void 0 && (a = i ?? (n === "ID" ? V.ID(r, e) : `<mock-value-for-field-"${r.alias ?? r.name ?? "undefined"}">`)), a;
|
|
35
35
|
};
|
|
@@ -273,7 +273,7 @@ var c = /* @__PURE__ */ e(((e, c) => {
|
|
|
273
273
|
return q(r, e.request.variables, t ?? null, J(e), (0, f.default)((0, f.default)({}, n), {}, { generateDeferredPayload: !1 }))[0];
|
|
274
274
|
}
|
|
275
275
|
function X(e, t, n) {
|
|
276
|
-
var r = n ?? {}, i = r.generateDeferredPayload, a = i
|
|
276
|
+
var r = n ?? {}, i = r.generateDeferredPayload, a = i !== void 0 && i, o = (0, u.default)(r, m), s = e.request.node.operation, c = q(s, e.request.variables, t ?? null, J(e), (0, f.default)((0, f.default)({}, o), {}, { generateDeferredPayload: a }));
|
|
277
277
|
return a ? c : c[0];
|
|
278
278
|
}
|
|
279
279
|
c.exports = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelayMockPayloadGenerator.js","names":[],"sources":["../../../../../../../node_modules/relay-test-utils/lib/RelayMockPayloadGenerator.js"],"sourcesContent":["'use strict';\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\")[\"default\"];\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _objectSpread3 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread2\"));\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\nvar _excluded = [\"generateDeferredPayload\"];\nvar invariant = require('invariant');\nvar _require = require('relay-runtime'),\n __internal = _require.__internal,\n RelayConcreteNode = _require.RelayConcreteNode,\n TYPENAME_KEY = _require.TYPENAME_KEY,\n getModuleComponentKey = _require.getModuleComponentKey,\n getModuleOperationKey = _require.getModuleOperationKey;\nvar ACTOR_CHANGE = RelayConcreteNode.ACTOR_CHANGE,\n CLIENT_COMPONENT = RelayConcreteNode.CLIENT_COMPONENT,\n CLIENT_EDGE_TO_CLIENT_OBJECT = RelayConcreteNode.CLIENT_EDGE_TO_CLIENT_OBJECT,\n CLIENT_EXTENSION = RelayConcreteNode.CLIENT_EXTENSION,\n CONDITION = RelayConcreteNode.CONDITION,\n CONNECTION = RelayConcreteNode.CONNECTION,\n DEFER = RelayConcreteNode.DEFER,\n FRAGMENT_SPREAD = RelayConcreteNode.FRAGMENT_SPREAD,\n INLINE_FRAGMENT = RelayConcreteNode.INLINE_FRAGMENT,\n LINKED_FIELD = RelayConcreteNode.LINKED_FIELD,\n LINKED_HANDLE = RelayConcreteNode.LINKED_HANDLE,\n MODULE_IMPORT = RelayConcreteNode.MODULE_IMPORT,\n RELAY_RESOLVER = RelayConcreteNode.RELAY_RESOLVER,\n RELAY_LIVE_RESOLVER = RelayConcreteNode.RELAY_LIVE_RESOLVER,\n SCALAR_FIELD = RelayConcreteNode.SCALAR_FIELD,\n SCALAR_HANDLE = RelayConcreteNode.SCALAR_HANDLE,\n STREAM = RelayConcreteNode.STREAM,\n TYPE_DISCRIMINATOR = RelayConcreteNode.TYPE_DISCRIMINATOR;\nfunction createIdGenerator() {\n var id = 0;\n return function () {\n return ++id;\n };\n}\nvar DEFAULT_MOCK_RESOLVERS = {\n ID: function ID(context, generateId) {\n return \"<\".concat(context.parentType != null && context.parentType !== DEFAULT_MOCK_TYPENAME ? context.parentType + '-' : '', \"mock-id-\").concat(generateId(), \">\");\n },\n Boolean: function Boolean() {\n return false;\n },\n Int: function Int() {\n return 42;\n },\n Float: function Float() {\n return 4.2;\n }\n};\nvar DEFAULT_MOCK_TYPENAME = '__MockObject';\nfunction valueResolver(generateId, mockResolvers, typeName, context) {\n var plural = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n var defaultValue = arguments.length > 5 ? arguments[5] : undefined;\n var generateValue = function generateValue(possibleDefaultValue) {\n var mockValue;\n var mockResolver = typeName != null && mockResolvers != null ? mockResolvers[typeName] : null;\n if (mockResolver != null) {\n mockValue = mockResolver(context, generateId);\n }\n if (mockValue === undefined) {\n var _ref, _context$alias;\n mockValue = possibleDefaultValue !== null && possibleDefaultValue !== void 0 ? possibleDefaultValue : typeName === 'ID' ? DEFAULT_MOCK_RESOLVERS.ID(context, generateId) : \"<mock-value-for-field-\\\"\".concat((_ref = (_context$alias = context.alias) !== null && _context$alias !== void 0 ? _context$alias : context.name) !== null && _ref !== void 0 ? _ref : 'undefined', \"\\\">\");\n }\n return mockValue;\n };\n return plural === true ? generateMockList(Array.isArray(defaultValue) ? defaultValue : Array(1).fill(), generateValue) : generateValue(defaultValue);\n}\nfunction createValueResolver(mockResolvers) {\n var generateId = createIdGenerator();\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return valueResolver.apply(void 0, [generateId, mockResolvers].concat(args));\n };\n}\nfunction generateMockList(placeholderArray, generateListItem) {\n return placeholderArray.map(function (possibleDefaultValue, index) {\n return generateListItem(possibleDefaultValue, index);\n });\n}\nvar RelayMockPayloadGenerator = /*#__PURE__*/function () {\n function RelayMockPayloadGenerator(options) {\n var _options$mockResolver, _options$selectionMet, _options$mockClientDa, _options$generateDefe;\n this._variables = options.variables;\n this._mockResolvers = (0, _objectSpread3[\"default\"])((0, _objectSpread3[\"default\"])({}, DEFAULT_MOCK_RESOLVERS), (_options$mockResolver = options.mockResolvers) !== null && _options$mockResolver !== void 0 ? _options$mockResolver : {});\n this._selectionMetadata = (_options$selectionMet = options.selectionMetadata) !== null && _options$selectionMet !== void 0 ? _options$selectionMet : {};\n this._resolveValue = createValueResolver(this._mockResolvers);\n this._mockClientData = (_options$mockClientDa = options.mockClientData) !== null && _options$mockClientDa !== void 0 ? _options$mockClientDa : false;\n this._generateDeferredPayload = (_options$generateDefe = options.generateDeferredPayload) !== null && _options$generateDefe !== void 0 ? _options$generateDefe : false;\n this._deferredPayloads = [];\n }\n var _proto = RelayMockPayloadGenerator.prototype;\n _proto.generate = function generate(selections, operationType) {\n var defaultValues = this._getDefaultValuesForObject(operationType, null, null, [], {});\n var data = this._traverse({\n selections: selections,\n typeName: operationType,\n isAbstractType: false,\n name: null,\n alias: null,\n args: null\n }, [], null, defaultValues);\n return [{\n data: data\n }].concat((0, _toConsumableArray2[\"default\"])(this._deferredPayloads));\n };\n _proto._traverse = function _traverse(traversable, path, prevData, defaultValues) {\n var selections = traversable.selections,\n typeName = traversable.typeName,\n isAbstractType = traversable.isAbstractType;\n return this._traverseSelections(selections, typeName, isAbstractType, path, prevData, defaultValues);\n };\n _proto._traverseSelections = function _traverseSelections(selections, typeName, isAbstractType, path, prevData, defaultValues) {\n var _this = this;\n var mockData = prevData !== null && prevData !== void 0 ? prevData : {};\n selections.forEach(function (selection) {\n switch (selection.kind) {\n case SCALAR_FIELD:\n {\n mockData = _this._mockScalar(selection, typeName, path, mockData, defaultValues);\n break;\n }\n case CONNECTION:\n {\n mockData = _this._traverseSelections([selection.edges, selection.pageInfo], typeName, isAbstractType, path, prevData, defaultValues);\n break;\n }\n case LINKED_FIELD:\n {\n mockData = _this._mockLink(selection, path, mockData, defaultValues);\n break;\n }\n case CONDITION:\n var conditionValue = _this._getVariableValue(selection.condition);\n if (conditionValue === selection.passingValue) {\n mockData = _this._traverseSelections(selection.selections, typeName, isAbstractType, path, mockData, defaultValues);\n }\n break;\n case CLIENT_EXTENSION:\n if (!_this._mockClientData) {\n break;\n }\n mockData = _this._traverseSelections(selection.selections, typeName, isAbstractType, path, mockData, defaultValues);\n break;\n case DEFER:\n case STREAM:\n {\n var isDeferreable = selection[\"if\"] == null || _this._variables[selection[\"if\"]];\n if (_this._generateDeferredPayload && isDeferreable) {\n var deferredData = _this._traverseSelections(selection.selections, typeName, isAbstractType, path, {}, defaultValues);\n _this._deferredPayloads.push({\n path: (0, _toConsumableArray2[\"default\"])(path),\n label: selection.label,\n data: deferredData\n });\n break;\n }\n mockData = _this._traverseSelections(selection.selections, typeName, isAbstractType, path, mockData, defaultValues);\n break;\n }\n case CLIENT_COMPONENT:\n {\n mockData = _this._traverseSelections(selection.fragment.selections, typeName, isAbstractType, path, mockData, defaultValues);\n break;\n }\n case FRAGMENT_SPREAD:\n {\n var prevVariables = _this._variables;\n _this._variables = __internal.getLocalVariables(_this._variables, selection.fragment.argumentDefinitions, selection.args);\n mockData = _this._traverseSelections(selection.fragment.selections, typeName, isAbstractType, path, mockData, defaultValues);\n _this._variables = prevVariables;\n break;\n }\n case INLINE_FRAGMENT:\n {\n var _abstractKey = selection.abstractKey;\n if (_abstractKey != null) {\n var shouldMockFragment = (defaultValues === null || defaultValues === void 0 ? void 0 : defaultValues[_abstractKey]) === undefined || !!(defaultValues !== null && defaultValues !== void 0 && defaultValues[_abstractKey]);\n if (!shouldMockFragment) {\n break;\n }\n if (mockData != null) {\n mockData[_abstractKey] = true;\n }\n mockData = _this._traverseSelections(selection.selections, typeName, isAbstractType, path, mockData, defaultValues);\n break;\n }\n if (mockData != null && (mockData[TYPENAME_KEY] == null || mockData[TYPENAME_KEY] === DEFAULT_MOCK_TYPENAME)) {\n var _defaultValues$TYPENA;\n mockData[TYPENAME_KEY] = (_defaultValues$TYPENA = defaultValues === null || defaultValues === void 0 ? void 0 : defaultValues[TYPENAME_KEY]) !== null && _defaultValues$TYPENA !== void 0 ? _defaultValues$TYPENA : selection.type;\n }\n if (isAbstractType === true && mockData != null && mockData[TYPENAME_KEY] === typeName) {\n mockData[TYPENAME_KEY] = selection.type;\n }\n if (mockData != null && mockData[TYPENAME_KEY] === selection.type) {\n var defaults = _this._getDefaultValuesForObject(selection.type, path[path.length - 1], null, path);\n var defaultsForAbstractType = typeName !== selection.type ? _this._getDefaultValuesForObject(typeName, path[path.length - 1], null, path) : defaults;\n var defaultValuesForSelection = defaults;\n if (defaultValuesForSelection === undefined) {\n defaultValuesForSelection = defaultsForAbstractType;\n }\n if (defaultValuesForSelection === undefined) {\n defaultValuesForSelection = defaultValues;\n }\n if (defaultValuesForSelection === null) {\n mockData = null;\n break;\n }\n mockData = _this._traverseSelections(selection.selections, selection.type, isAbstractType, path, mockData, defaultValuesForSelection);\n if (mockData[TYPENAME_KEY] != null) {\n mockData[TYPENAME_KEY] = selection.type;\n }\n if (mockData.id != null && defaults != null && defaults.id != null) {\n mockData.id = defaults.id;\n }\n }\n break;\n }\n case MODULE_IMPORT:\n if (defaultValues != null) {\n var _objectSpread2;\n if (defaultValues.__typename !== typeName) {\n break;\n }\n var operation = defaultValues.__module_operation;\n !(typeof operation === 'object' && operation !== null && operation.kind === 'SplitOperation' && Array.isArray(operation.selections) && typeof operation.name === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'RelayMockPayloadGenerator(): Unexpected default value for ' + 'a field `__module_operation` in the mock resolver for ' + '@module dependency. Provided value is \"%s\" and we\\'re ' + 'expecting an object of a type `NormalizationSplitOperation`. ' + 'Please adjust mock resolver for the type \"%s\". ' + 'Typically it should require a file \"%s$normalization.graphql\".', JSON.stringify(operation), typeName, selection.fragmentName) : invariant(false) : void 0;\n var splitOperation = operation;\n var documentName = selection.documentName;\n if (mockData == null) {\n mockData = {};\n }\n mockData = (0, _objectSpread3[\"default\"])((0, _objectSpread3[\"default\"])({}, mockData), {}, (_objectSpread2 = {}, (0, _defineProperty2[\"default\"])(_objectSpread2, TYPENAME_KEY, typeName), (0, _defineProperty2[\"default\"])(_objectSpread2, getModuleOperationKey(documentName), operation.name), (0, _defineProperty2[\"default\"])(_objectSpread2, getModuleComponentKey(documentName), defaultValues.__module_component), _objectSpread2), _this._traverseSelections(splitOperation.selections, typeName, false, path, null, defaultValues));\n }\n break;\n case TYPE_DISCRIMINATOR:\n var abstractKey = selection.abstractKey;\n if (mockData != null) {\n mockData[abstractKey] = true;\n }\n break;\n case SCALAR_HANDLE:\n case LINKED_HANDLE:\n break;\n case ACTOR_CHANGE:\n throw new Error('ActorChange fields are not yet supported.');\n case RELAY_LIVE_RESOLVER:\n case RELAY_RESOLVER:\n if (selection.fragment) {\n mockData = _this._traverseSelections(selection.fragment.selections, typeName, isAbstractType, path, mockData, defaultValues);\n }\n break;\n case CLIENT_EDGE_TO_CLIENT_OBJECT:\n mockData = _this._traverseSelections([selection.backingField], typeName, isAbstractType, path, mockData, defaultValues);\n break;\n default:\n selection;\n !false ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'RelayMockPayloadGenerator(): Unexpected AST kind `%s`.', selection.kind) : invariant(false) : void 0;\n }\n });\n return mockData;\n };\n _proto._getCorrectDefaultEnum = function _getCorrectDefaultEnum(enumValues, value, path, applicationName) {\n if (value === undefined) {\n return value;\n }\n if (value === null) {\n return value;\n }\n var valueToValidate = Array.isArray(value) ? value.map(function (v) {\n return String(v).toUpperCase();\n }) : [String(value).toUpperCase()];\n var enumValuesNormalized = enumValues.map(function (s) {\n return s.toUpperCase();\n });\n var correctValues = valueToValidate.filter(function (v) {\n return enumValuesNormalized.includes(v);\n });\n if (correctValues.length !== valueToValidate.length) {\n !false ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'RelayMockPayloadGenerator: Invalid value \"%s\" provided for enum ' + 'field \"%s\" via MockResolver.' + 'Expected one of the following values: %s.', value, \"\".concat(path.join('.'), \".\").concat(applicationName), enumValues.map(function (v) {\n return \"\\\"\".concat(v, \"\\\"\");\n }).join(', ')) : invariant(false) : void 0;\n }\n var correctSpellingValues = valueToValidate.map(function (v) {\n var correctSpellingEnumIndex = enumValuesNormalized.indexOf(String(v).toUpperCase());\n return enumValues[correctSpellingEnumIndex];\n });\n return Array.isArray(value) ? correctSpellingValues : correctSpellingValues[0];\n };\n _proto._mockScalar = function _mockScalar(field, typeName, path, mockData, defaultValues) {\n var _field$alias;\n var data = mockData !== null && mockData !== void 0 ? mockData : {};\n var applicationName = (_field$alias = field.alias) !== null && _field$alias !== void 0 ? _field$alias : field.name;\n if (data.hasOwnProperty(applicationName) && field.name !== TYPENAME_KEY) {\n return data;\n }\n var value;\n if (field.name === TYPENAME_KEY) {\n value = typeName !== null && typeName !== void 0 ? typeName : DEFAULT_MOCK_TYPENAME;\n }\n var selectionPath = [].concat((0, _toConsumableArray2[\"default\"])(path), [applicationName]);\n var _this$_getScalarField = this._getScalarFieldTypeDetails(field, typeName, selectionPath),\n type = _this$_getScalarField.type,\n plural = _this$_getScalarField.plural,\n enumValues = _this$_getScalarField.enumValues;\n if (defaultValues != null && defaultValues.hasOwnProperty(applicationName)) {\n value = defaultValues[applicationName];\n if (enumValues != null) {\n value = this._getCorrectDefaultEnum(enumValues, value, path, applicationName);\n }\n if (value !== undefined && plural && !Array.isArray(value)) {\n value = [value];\n }\n }\n if (value === undefined) {\n var defaultValue = enumValues != null ? enumValues[0] : undefined;\n value = this._resolveValue(type, {\n parentType: typeName,\n name: field.name,\n alias: field.alias,\n path: selectionPath,\n args: this._getFieldArgs(field)\n }, plural, defaultValue);\n }\n data[applicationName] = value;\n return data;\n };\n _proto._mockLink = function _mockLink(field, path, prevData, defaultValues) {\n var _this2 = this;\n var _field$alias2, _this$_getTypeDetails, _field$concreteType;\n var applicationName = (_field$alias2 = field.alias) !== null && _field$alias2 !== void 0 ? _field$alias2 : field.name;\n var data = prevData !== null && prevData !== void 0 ? prevData : {};\n var args = this._getFieldArgs(field);\n var selectionPath = [].concat((0, _toConsumableArray2[\"default\"])(path), [applicationName]);\n var typeFromSelection = (_this$_getTypeDetails = this._getTypeDetailsForPath(selectionPath)) !== null && _this$_getTypeDetails !== void 0 ? _this$_getTypeDetails : {\n type: DEFAULT_MOCK_TYPENAME\n };\n var defaults;\n if (defaultValues != null && typeof defaultValues[applicationName] === 'object') {\n defaults = defaultValues[applicationName];\n }\n if (defaults === null) {\n data[applicationName] = null;\n return data;\n }\n var typeName = (_field$concreteType = field.concreteType) !== null && _field$concreteType !== void 0 ? _field$concreteType : defaults != null && typeof defaults[TYPENAME_KEY] === 'string' ? defaults[TYPENAME_KEY] : typeFromSelection.type;\n var isAbstractType = field.concreteType == null && typeName === typeFromSelection.type;\n var generateDataForField = function generateDataForField(possibleDefaultValue, index) {\n var _index$toString, _this$_getDefaultValu, _field$concreteType2;\n var fieldPath = field.plural ? [].concat((0, _toConsumableArray2[\"default\"])(selectionPath), [(_index$toString = index === null || index === void 0 ? void 0 : index.toString(10)) !== null && _index$toString !== void 0 ? _index$toString : '0']) : selectionPath;\n var fieldDefaultValue = (_this$_getDefaultValu = _this2._getDefaultValuesForObject((_field$concreteType2 = field.concreteType) !== null && _field$concreteType2 !== void 0 ? _field$concreteType2 : typeFromSelection.type, field.name, field.alias, fieldPath, args)) !== null && _this$_getDefaultValu !== void 0 ? _this$_getDefaultValu : possibleDefaultValue;\n if (fieldDefaultValue === null) {\n return null;\n }\n return _this2._traverse({\n selections: field.selections,\n typeName: typeName,\n isAbstractType: isAbstractType,\n name: field.name,\n alias: field.alias,\n args: args\n }, fieldPath, typeof data[applicationName] === 'object' ? data[applicationName] : null, fieldDefaultValue);\n };\n data[applicationName] = field.kind === 'LinkedField' && field.plural ? generateMockList(Array.isArray(defaults) ? defaults : Array(1).fill(), generateDataForField) : generateDataForField(defaults);\n return data;\n };\n _proto._getVariableValue = function _getVariableValue(name) {\n !this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'RelayMockPayloadGenerator(): Undefined variable `%s`.', name) : invariant(false) : void 0;\n return this._variables[name];\n };\n _proto._getDefaultValuesForObject = function _getDefaultValuesForObject(typeName, fieldName, fieldAlias, path, args) {\n var data;\n if (typeName != null && this._mockResolvers[typeName] != null) {\n data = this._resolveValue(typeName, {\n parentType: null,\n name: fieldName,\n alias: fieldAlias,\n args: args,\n path: path\n }, false);\n }\n if (typeof data === 'object') {\n return data;\n }\n };\n _proto._getFieldArgs = function _getFieldArgs(field) {\n var _this3 = this;\n var args = {};\n if (field.args != null) {\n field.args.forEach(function (arg) {\n args[arg.name] = _this3._getArgValue(arg);\n });\n }\n return args;\n };\n _proto._getArgValue = function _getArgValue(arg) {\n var _this4 = this;\n switch (arg.kind) {\n case 'Literal':\n return arg.value;\n case 'Variable':\n return this._getVariableValue(arg.variableName);\n case 'ObjectValue':\n {\n var value = {};\n arg.fields.forEach(function (field) {\n value[field.name] = _this4._getArgValue(field);\n });\n return value;\n }\n case 'ListValue':\n {\n var _value = [];\n arg.items.forEach(function (item) {\n _value.push(item != null ? _this4._getArgValue(item) : null);\n });\n return _value;\n }\n }\n };\n _proto._getScalarFieldTypeDetails = function _getScalarFieldTypeDetails(field, typeName, selectionPath) {\n var _this$_getTypeDetails2;\n return (_this$_getTypeDetails2 = this._getTypeDetailsForPath(selectionPath)) !== null && _this$_getTypeDetails2 !== void 0 ? _this$_getTypeDetails2 : {\n type: field.name === 'id' ? 'ID' : 'String',\n plural: false,\n enumValues: null,\n nullable: false\n };\n };\n _proto._getTypeDetailsForPath = function _getTypeDetailsForPath(path) {\n return this._selectionMetadata[path.filter(function (field) {\n return isNaN(parseInt(field, 10));\n }).join('.')];\n };\n return RelayMockPayloadGenerator;\n}();\nfunction generateData(node, variables, mockResolvers, selectionMetadata, options) {\n var mockGenerator = new RelayMockPayloadGenerator({\n variables: variables,\n mockResolvers: mockResolvers,\n selectionMetadata: selectionMetadata,\n mockClientData: options === null || options === void 0 ? void 0 : options.mockClientData,\n generateDeferredPayload: options === null || options === void 0 ? void 0 : options.generateDeferredPayload\n });\n var operationType;\n if (node.name.endsWith('Mutation')) {\n operationType = 'Mutation';\n } else if (node.name.endsWith('Subscription')) {\n operationType = 'Subscription';\n } else {\n operationType = 'Query';\n }\n return mockGenerator.generate(node.selections, operationType);\n}\nfunction getSelectionMetadataFromOperation(operation) {\n var _operation$request$no;\n var selectionTypeInfo = (_operation$request$no = operation.request.node.params.metadata) === null || _operation$request$no === void 0 ? void 0 : _operation$request$no.relayTestingSelectionTypeInfo;\n if (selectionTypeInfo != null && !Array.isArray(selectionTypeInfo) && typeof selectionTypeInfo === 'object') {\n var selectionMetadata = {};\n Object.keys(selectionTypeInfo).forEach(function (path) {\n var item = selectionTypeInfo[path];\n if (item != null && !Array.isArray(item) && typeof item === 'object') {\n if (typeof item.type === 'string' && typeof item.plural === 'boolean' && typeof item.nullable === 'boolean' && (item.enumValues === null || Array.isArray(item.enumValues))) {\n selectionMetadata[path] = {\n type: item.type,\n plural: item.plural,\n nullable: item.nullable,\n enumValues: Array.isArray(item.enumValues) ? item.enumValues.map(String) : null\n };\n }\n }\n });\n return selectionMetadata;\n }\n return null;\n}\nfunction generateDataForOperation(operation, mockResolvers, options) {\n var concreteOperation = operation.request.node.operation;\n var _generateData = generateData(concreteOperation, operation.request.variables, mockResolvers !== null && mockResolvers !== void 0 ? mockResolvers : null, getSelectionMetadataFromOperation(operation), (0, _objectSpread3[\"default\"])((0, _objectSpread3[\"default\"])({}, options), {}, {\n generateDeferredPayload: false\n })),\n initialPayload = _generateData[0];\n return initialPayload;\n}\nfunction generateWithDefer(operation, mockResolvers, options) {\n var _ref2 = options !== null && options !== void 0 ? options : {},\n _ref2$generateDeferre = _ref2.generateDeferredPayload,\n generateDeferredPayload = _ref2$generateDeferre === void 0 ? false : _ref2$generateDeferre,\n otherOptions = (0, _objectWithoutPropertiesLoose2[\"default\"])(_ref2, _excluded);\n var concreteOperation = operation.request.node.operation;\n var payloads = generateData(concreteOperation, operation.request.variables, mockResolvers !== null && mockResolvers !== void 0 ? mockResolvers : null, getSelectionMetadataFromOperation(operation), (0, _objectSpread3[\"default\"])((0, _objectSpread3[\"default\"])({}, otherOptions), {}, {\n generateDeferredPayload: generateDeferredPayload\n }));\n if (!generateDeferredPayload) {\n return payloads[0];\n }\n return payloads;\n}\nmodule.exports = {\n generate: generateDataForOperation,\n generateWithDefer: generateWithDefer\n};"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RelayMockPayloadGenerator.js","names":[],"sources":["../../../../../../../node_modules/relay-test-utils/lib/RelayMockPayloadGenerator.js"],"sourcesContent":["'use strict';\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\")[\"default\"];\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _objectSpread3 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread2\"));\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\nvar _excluded = [\"generateDeferredPayload\"];\nvar invariant = require('invariant');\nvar _require = require('relay-runtime'),\n __internal = _require.__internal,\n RelayConcreteNode = _require.RelayConcreteNode,\n TYPENAME_KEY = _require.TYPENAME_KEY,\n getModuleComponentKey = _require.getModuleComponentKey,\n getModuleOperationKey = _require.getModuleOperationKey;\nvar ACTOR_CHANGE = RelayConcreteNode.ACTOR_CHANGE,\n CLIENT_COMPONENT = RelayConcreteNode.CLIENT_COMPONENT,\n CLIENT_EDGE_TO_CLIENT_OBJECT = RelayConcreteNode.CLIENT_EDGE_TO_CLIENT_OBJECT,\n CLIENT_EXTENSION = RelayConcreteNode.CLIENT_EXTENSION,\n CONDITION = RelayConcreteNode.CONDITION,\n CONNECTION = RelayConcreteNode.CONNECTION,\n DEFER = RelayConcreteNode.DEFER,\n FRAGMENT_SPREAD = RelayConcreteNode.FRAGMENT_SPREAD,\n INLINE_FRAGMENT = RelayConcreteNode.INLINE_FRAGMENT,\n LINKED_FIELD = RelayConcreteNode.LINKED_FIELD,\n LINKED_HANDLE = RelayConcreteNode.LINKED_HANDLE,\n MODULE_IMPORT = RelayConcreteNode.MODULE_IMPORT,\n RELAY_RESOLVER = RelayConcreteNode.RELAY_RESOLVER,\n RELAY_LIVE_RESOLVER = RelayConcreteNode.RELAY_LIVE_RESOLVER,\n SCALAR_FIELD = RelayConcreteNode.SCALAR_FIELD,\n SCALAR_HANDLE = RelayConcreteNode.SCALAR_HANDLE,\n STREAM = RelayConcreteNode.STREAM,\n TYPE_DISCRIMINATOR = RelayConcreteNode.TYPE_DISCRIMINATOR;\nfunction createIdGenerator() {\n var id = 0;\n return function () {\n return ++id;\n };\n}\nvar DEFAULT_MOCK_RESOLVERS = {\n ID: function ID(context, generateId) {\n return \"<\".concat(context.parentType != null && context.parentType !== DEFAULT_MOCK_TYPENAME ? context.parentType + '-' : '', \"mock-id-\").concat(generateId(), \">\");\n },\n Boolean: function Boolean() {\n return false;\n },\n Int: function Int() {\n return 42;\n },\n Float: function Float() {\n return 4.2;\n }\n};\nvar DEFAULT_MOCK_TYPENAME = '__MockObject';\nfunction valueResolver(generateId, mockResolvers, typeName, context) {\n var plural = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n var defaultValue = arguments.length > 5 ? arguments[5] : undefined;\n var generateValue = function generateValue(possibleDefaultValue) {\n var mockValue;\n var mockResolver = typeName != null && mockResolvers != null ? mockResolvers[typeName] : null;\n if (mockResolver != null) {\n mockValue = mockResolver(context, generateId);\n }\n if (mockValue === undefined) {\n var _ref, _context$alias;\n mockValue = possibleDefaultValue !== null && possibleDefaultValue !== void 0 ? possibleDefaultValue : typeName === 'ID' ? DEFAULT_MOCK_RESOLVERS.ID(context, generateId) : \"<mock-value-for-field-\\\"\".concat((_ref = (_context$alias = context.alias) !== null && _context$alias !== void 0 ? _context$alias : context.name) !== null && _ref !== void 0 ? _ref : 'undefined', \"\\\">\");\n }\n return mockValue;\n };\n return plural === true ? generateMockList(Array.isArray(defaultValue) ? defaultValue : Array(1).fill(), generateValue) : generateValue(defaultValue);\n}\nfunction createValueResolver(mockResolvers) {\n var generateId = createIdGenerator();\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return valueResolver.apply(void 0, [generateId, mockResolvers].concat(args));\n };\n}\nfunction generateMockList(placeholderArray, generateListItem) {\n return placeholderArray.map(function (possibleDefaultValue, index) {\n return generateListItem(possibleDefaultValue, index);\n });\n}\nvar RelayMockPayloadGenerator = /*#__PURE__*/function () {\n function RelayMockPayloadGenerator(options) {\n var _options$mockResolver, _options$selectionMet, _options$mockClientDa, _options$generateDefe;\n this._variables = options.variables;\n this._mockResolvers = (0, _objectSpread3[\"default\"])((0, _objectSpread3[\"default\"])({}, DEFAULT_MOCK_RESOLVERS), (_options$mockResolver = options.mockResolvers) !== null && _options$mockResolver !== void 0 ? _options$mockResolver : {});\n this._selectionMetadata = (_options$selectionMet = options.selectionMetadata) !== null && _options$selectionMet !== void 0 ? _options$selectionMet : {};\n this._resolveValue = createValueResolver(this._mockResolvers);\n this._mockClientData = (_options$mockClientDa = options.mockClientData) !== null && _options$mockClientDa !== void 0 ? _options$mockClientDa : false;\n this._generateDeferredPayload = (_options$generateDefe = options.generateDeferredPayload) !== null && _options$generateDefe !== void 0 ? _options$generateDefe : false;\n this._deferredPayloads = [];\n }\n var _proto = RelayMockPayloadGenerator.prototype;\n _proto.generate = function generate(selections, operationType) {\n var defaultValues = this._getDefaultValuesForObject(operationType, null, null, [], {});\n var data = this._traverse({\n selections: selections,\n typeName: operationType,\n isAbstractType: false,\n name: null,\n alias: null,\n args: null\n }, [], null, defaultValues);\n return [{\n data: data\n }].concat((0, _toConsumableArray2[\"default\"])(this._deferredPayloads));\n };\n _proto._traverse = function _traverse(traversable, path, prevData, defaultValues) {\n var selections = traversable.selections,\n typeName = traversable.typeName,\n isAbstractType = traversable.isAbstractType;\n return this._traverseSelections(selections, typeName, isAbstractType, path, prevData, defaultValues);\n };\n _proto._traverseSelections = function _traverseSelections(selections, typeName, isAbstractType, path, prevData, defaultValues) {\n var _this = this;\n var mockData = prevData !== null && prevData !== void 0 ? prevData : {};\n selections.forEach(function (selection) {\n switch (selection.kind) {\n case SCALAR_FIELD:\n {\n mockData = _this._mockScalar(selection, typeName, path, mockData, defaultValues);\n break;\n }\n case CONNECTION:\n {\n mockData = _this._traverseSelections([selection.edges, selection.pageInfo], typeName, isAbstractType, path, prevData, defaultValues);\n break;\n }\n case LINKED_FIELD:\n {\n mockData = _this._mockLink(selection, path, mockData, defaultValues);\n break;\n }\n case CONDITION:\n var conditionValue = _this._getVariableValue(selection.condition);\n if (conditionValue === selection.passingValue) {\n mockData = _this._traverseSelections(selection.selections, typeName, isAbstractType, path, mockData, defaultValues);\n }\n break;\n case CLIENT_EXTENSION:\n if (!_this._mockClientData) {\n break;\n }\n mockData = _this._traverseSelections(selection.selections, typeName, isAbstractType, path, mockData, defaultValues);\n break;\n case DEFER:\n case STREAM:\n {\n var isDeferreable = selection[\"if\"] == null || _this._variables[selection[\"if\"]];\n if (_this._generateDeferredPayload && isDeferreable) {\n var deferredData = _this._traverseSelections(selection.selections, typeName, isAbstractType, path, {}, defaultValues);\n _this._deferredPayloads.push({\n path: (0, _toConsumableArray2[\"default\"])(path),\n label: selection.label,\n data: deferredData\n });\n break;\n }\n mockData = _this._traverseSelections(selection.selections, typeName, isAbstractType, path, mockData, defaultValues);\n break;\n }\n case CLIENT_COMPONENT:\n {\n mockData = _this._traverseSelections(selection.fragment.selections, typeName, isAbstractType, path, mockData, defaultValues);\n break;\n }\n case FRAGMENT_SPREAD:\n {\n var prevVariables = _this._variables;\n _this._variables = __internal.getLocalVariables(_this._variables, selection.fragment.argumentDefinitions, selection.args);\n mockData = _this._traverseSelections(selection.fragment.selections, typeName, isAbstractType, path, mockData, defaultValues);\n _this._variables = prevVariables;\n break;\n }\n case INLINE_FRAGMENT:\n {\n var _abstractKey = selection.abstractKey;\n if (_abstractKey != null) {\n var shouldMockFragment = (defaultValues === null || defaultValues === void 0 ? void 0 : defaultValues[_abstractKey]) === undefined || !!(defaultValues !== null && defaultValues !== void 0 && defaultValues[_abstractKey]);\n if (!shouldMockFragment) {\n break;\n }\n if (mockData != null) {\n mockData[_abstractKey] = true;\n }\n mockData = _this._traverseSelections(selection.selections, typeName, isAbstractType, path, mockData, defaultValues);\n break;\n }\n if (mockData != null && (mockData[TYPENAME_KEY] == null || mockData[TYPENAME_KEY] === DEFAULT_MOCK_TYPENAME)) {\n var _defaultValues$TYPENA;\n mockData[TYPENAME_KEY] = (_defaultValues$TYPENA = defaultValues === null || defaultValues === void 0 ? void 0 : defaultValues[TYPENAME_KEY]) !== null && _defaultValues$TYPENA !== void 0 ? _defaultValues$TYPENA : selection.type;\n }\n if (isAbstractType === true && mockData != null && mockData[TYPENAME_KEY] === typeName) {\n mockData[TYPENAME_KEY] = selection.type;\n }\n if (mockData != null && mockData[TYPENAME_KEY] === selection.type) {\n var defaults = _this._getDefaultValuesForObject(selection.type, path[path.length - 1], null, path);\n var defaultsForAbstractType = typeName !== selection.type ? _this._getDefaultValuesForObject(typeName, path[path.length - 1], null, path) : defaults;\n var defaultValuesForSelection = defaults;\n if (defaultValuesForSelection === undefined) {\n defaultValuesForSelection = defaultsForAbstractType;\n }\n if (defaultValuesForSelection === undefined) {\n defaultValuesForSelection = defaultValues;\n }\n if (defaultValuesForSelection === null) {\n mockData = null;\n break;\n }\n mockData = _this._traverseSelections(selection.selections, selection.type, isAbstractType, path, mockData, defaultValuesForSelection);\n if (mockData[TYPENAME_KEY] != null) {\n mockData[TYPENAME_KEY] = selection.type;\n }\n if (mockData.id != null && defaults != null && defaults.id != null) {\n mockData.id = defaults.id;\n }\n }\n break;\n }\n case MODULE_IMPORT:\n if (defaultValues != null) {\n var _objectSpread2;\n if (defaultValues.__typename !== typeName) {\n break;\n }\n var operation = defaultValues.__module_operation;\n !(typeof operation === 'object' && operation !== null && operation.kind === 'SplitOperation' && Array.isArray(operation.selections) && typeof operation.name === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'RelayMockPayloadGenerator(): Unexpected default value for ' + 'a field `__module_operation` in the mock resolver for ' + '@module dependency. Provided value is \"%s\" and we\\'re ' + 'expecting an object of a type `NormalizationSplitOperation`. ' + 'Please adjust mock resolver for the type \"%s\". ' + 'Typically it should require a file \"%s$normalization.graphql\".', JSON.stringify(operation), typeName, selection.fragmentName) : invariant(false) : void 0;\n var splitOperation = operation;\n var documentName = selection.documentName;\n if (mockData == null) {\n mockData = {};\n }\n mockData = (0, _objectSpread3[\"default\"])((0, _objectSpread3[\"default\"])({}, mockData), {}, (_objectSpread2 = {}, (0, _defineProperty2[\"default\"])(_objectSpread2, TYPENAME_KEY, typeName), (0, _defineProperty2[\"default\"])(_objectSpread2, getModuleOperationKey(documentName), operation.name), (0, _defineProperty2[\"default\"])(_objectSpread2, getModuleComponentKey(documentName), defaultValues.__module_component), _objectSpread2), _this._traverseSelections(splitOperation.selections, typeName, false, path, null, defaultValues));\n }\n break;\n case TYPE_DISCRIMINATOR:\n var abstractKey = selection.abstractKey;\n if (mockData != null) {\n mockData[abstractKey] = true;\n }\n break;\n case SCALAR_HANDLE:\n case LINKED_HANDLE:\n break;\n case ACTOR_CHANGE:\n throw new Error('ActorChange fields are not yet supported.');\n case RELAY_LIVE_RESOLVER:\n case RELAY_RESOLVER:\n if (selection.fragment) {\n mockData = _this._traverseSelections(selection.fragment.selections, typeName, isAbstractType, path, mockData, defaultValues);\n }\n break;\n case CLIENT_EDGE_TO_CLIENT_OBJECT:\n mockData = _this._traverseSelections([selection.backingField], typeName, isAbstractType, path, mockData, defaultValues);\n break;\n default:\n selection;\n !false ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'RelayMockPayloadGenerator(): Unexpected AST kind `%s`.', selection.kind) : invariant(false) : void 0;\n }\n });\n return mockData;\n };\n _proto._getCorrectDefaultEnum = function _getCorrectDefaultEnum(enumValues, value, path, applicationName) {\n if (value === undefined) {\n return value;\n }\n if (value === null) {\n return value;\n }\n var valueToValidate = Array.isArray(value) ? value.map(function (v) {\n return String(v).toUpperCase();\n }) : [String(value).toUpperCase()];\n var enumValuesNormalized = enumValues.map(function (s) {\n return s.toUpperCase();\n });\n var correctValues = valueToValidate.filter(function (v) {\n return enumValuesNormalized.includes(v);\n });\n if (correctValues.length !== valueToValidate.length) {\n !false ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'RelayMockPayloadGenerator: Invalid value \"%s\" provided for enum ' + 'field \"%s\" via MockResolver.' + 'Expected one of the following values: %s.', value, \"\".concat(path.join('.'), \".\").concat(applicationName), enumValues.map(function (v) {\n return \"\\\"\".concat(v, \"\\\"\");\n }).join(', ')) : invariant(false) : void 0;\n }\n var correctSpellingValues = valueToValidate.map(function (v) {\n var correctSpellingEnumIndex = enumValuesNormalized.indexOf(String(v).toUpperCase());\n return enumValues[correctSpellingEnumIndex];\n });\n return Array.isArray(value) ? correctSpellingValues : correctSpellingValues[0];\n };\n _proto._mockScalar = function _mockScalar(field, typeName, path, mockData, defaultValues) {\n var _field$alias;\n var data = mockData !== null && mockData !== void 0 ? mockData : {};\n var applicationName = (_field$alias = field.alias) !== null && _field$alias !== void 0 ? _field$alias : field.name;\n if (data.hasOwnProperty(applicationName) && field.name !== TYPENAME_KEY) {\n return data;\n }\n var value;\n if (field.name === TYPENAME_KEY) {\n value = typeName !== null && typeName !== void 0 ? typeName : DEFAULT_MOCK_TYPENAME;\n }\n var selectionPath = [].concat((0, _toConsumableArray2[\"default\"])(path), [applicationName]);\n var _this$_getScalarField = this._getScalarFieldTypeDetails(field, typeName, selectionPath),\n type = _this$_getScalarField.type,\n plural = _this$_getScalarField.plural,\n enumValues = _this$_getScalarField.enumValues;\n if (defaultValues != null && defaultValues.hasOwnProperty(applicationName)) {\n value = defaultValues[applicationName];\n if (enumValues != null) {\n value = this._getCorrectDefaultEnum(enumValues, value, path, applicationName);\n }\n if (value !== undefined && plural && !Array.isArray(value)) {\n value = [value];\n }\n }\n if (value === undefined) {\n var defaultValue = enumValues != null ? enumValues[0] : undefined;\n value = this._resolveValue(type, {\n parentType: typeName,\n name: field.name,\n alias: field.alias,\n path: selectionPath,\n args: this._getFieldArgs(field)\n }, plural, defaultValue);\n }\n data[applicationName] = value;\n return data;\n };\n _proto._mockLink = function _mockLink(field, path, prevData, defaultValues) {\n var _this2 = this;\n var _field$alias2, _this$_getTypeDetails, _field$concreteType;\n var applicationName = (_field$alias2 = field.alias) !== null && _field$alias2 !== void 0 ? _field$alias2 : field.name;\n var data = prevData !== null && prevData !== void 0 ? prevData : {};\n var args = this._getFieldArgs(field);\n var selectionPath = [].concat((0, _toConsumableArray2[\"default\"])(path), [applicationName]);\n var typeFromSelection = (_this$_getTypeDetails = this._getTypeDetailsForPath(selectionPath)) !== null && _this$_getTypeDetails !== void 0 ? _this$_getTypeDetails : {\n type: DEFAULT_MOCK_TYPENAME\n };\n var defaults;\n if (defaultValues != null && typeof defaultValues[applicationName] === 'object') {\n defaults = defaultValues[applicationName];\n }\n if (defaults === null) {\n data[applicationName] = null;\n return data;\n }\n var typeName = (_field$concreteType = field.concreteType) !== null && _field$concreteType !== void 0 ? _field$concreteType : defaults != null && typeof defaults[TYPENAME_KEY] === 'string' ? defaults[TYPENAME_KEY] : typeFromSelection.type;\n var isAbstractType = field.concreteType == null && typeName === typeFromSelection.type;\n var generateDataForField = function generateDataForField(possibleDefaultValue, index) {\n var _index$toString, _this$_getDefaultValu, _field$concreteType2;\n var fieldPath = field.plural ? [].concat((0, _toConsumableArray2[\"default\"])(selectionPath), [(_index$toString = index === null || index === void 0 ? void 0 : index.toString(10)) !== null && _index$toString !== void 0 ? _index$toString : '0']) : selectionPath;\n var fieldDefaultValue = (_this$_getDefaultValu = _this2._getDefaultValuesForObject((_field$concreteType2 = field.concreteType) !== null && _field$concreteType2 !== void 0 ? _field$concreteType2 : typeFromSelection.type, field.name, field.alias, fieldPath, args)) !== null && _this$_getDefaultValu !== void 0 ? _this$_getDefaultValu : possibleDefaultValue;\n if (fieldDefaultValue === null) {\n return null;\n }\n return _this2._traverse({\n selections: field.selections,\n typeName: typeName,\n isAbstractType: isAbstractType,\n name: field.name,\n alias: field.alias,\n args: args\n }, fieldPath, typeof data[applicationName] === 'object' ? data[applicationName] : null, fieldDefaultValue);\n };\n data[applicationName] = field.kind === 'LinkedField' && field.plural ? generateMockList(Array.isArray(defaults) ? defaults : Array(1).fill(), generateDataForField) : generateDataForField(defaults);\n return data;\n };\n _proto._getVariableValue = function _getVariableValue(name) {\n !this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'RelayMockPayloadGenerator(): Undefined variable `%s`.', name) : invariant(false) : void 0;\n return this._variables[name];\n };\n _proto._getDefaultValuesForObject = function _getDefaultValuesForObject(typeName, fieldName, fieldAlias, path, args) {\n var data;\n if (typeName != null && this._mockResolvers[typeName] != null) {\n data = this._resolveValue(typeName, {\n parentType: null,\n name: fieldName,\n alias: fieldAlias,\n args: args,\n path: path\n }, false);\n }\n if (typeof data === 'object') {\n return data;\n }\n };\n _proto._getFieldArgs = function _getFieldArgs(field) {\n var _this3 = this;\n var args = {};\n if (field.args != null) {\n field.args.forEach(function (arg) {\n args[arg.name] = _this3._getArgValue(arg);\n });\n }\n return args;\n };\n _proto._getArgValue = function _getArgValue(arg) {\n var _this4 = this;\n switch (arg.kind) {\n case 'Literal':\n return arg.value;\n case 'Variable':\n return this._getVariableValue(arg.variableName);\n case 'ObjectValue':\n {\n var value = {};\n arg.fields.forEach(function (field) {\n value[field.name] = _this4._getArgValue(field);\n });\n return value;\n }\n case 'ListValue':\n {\n var _value = [];\n arg.items.forEach(function (item) {\n _value.push(item != null ? _this4._getArgValue(item) : null);\n });\n return _value;\n }\n }\n };\n _proto._getScalarFieldTypeDetails = function _getScalarFieldTypeDetails(field, typeName, selectionPath) {\n var _this$_getTypeDetails2;\n return (_this$_getTypeDetails2 = this._getTypeDetailsForPath(selectionPath)) !== null && _this$_getTypeDetails2 !== void 0 ? _this$_getTypeDetails2 : {\n type: field.name === 'id' ? 'ID' : 'String',\n plural: false,\n enumValues: null,\n nullable: false\n };\n };\n _proto._getTypeDetailsForPath = function _getTypeDetailsForPath(path) {\n return this._selectionMetadata[path.filter(function (field) {\n return isNaN(parseInt(field, 10));\n }).join('.')];\n };\n return RelayMockPayloadGenerator;\n}();\nfunction generateData(node, variables, mockResolvers, selectionMetadata, options) {\n var mockGenerator = new RelayMockPayloadGenerator({\n variables: variables,\n mockResolvers: mockResolvers,\n selectionMetadata: selectionMetadata,\n mockClientData: options === null || options === void 0 ? void 0 : options.mockClientData,\n generateDeferredPayload: options === null || options === void 0 ? void 0 : options.generateDeferredPayload\n });\n var operationType;\n if (node.name.endsWith('Mutation')) {\n operationType = 'Mutation';\n } else if (node.name.endsWith('Subscription')) {\n operationType = 'Subscription';\n } else {\n operationType = 'Query';\n }\n return mockGenerator.generate(node.selections, operationType);\n}\nfunction getSelectionMetadataFromOperation(operation) {\n var _operation$request$no;\n var selectionTypeInfo = (_operation$request$no = operation.request.node.params.metadata) === null || _operation$request$no === void 0 ? void 0 : _operation$request$no.relayTestingSelectionTypeInfo;\n if (selectionTypeInfo != null && !Array.isArray(selectionTypeInfo) && typeof selectionTypeInfo === 'object') {\n var selectionMetadata = {};\n Object.keys(selectionTypeInfo).forEach(function (path) {\n var item = selectionTypeInfo[path];\n if (item != null && !Array.isArray(item) && typeof item === 'object') {\n if (typeof item.type === 'string' && typeof item.plural === 'boolean' && typeof item.nullable === 'boolean' && (item.enumValues === null || Array.isArray(item.enumValues))) {\n selectionMetadata[path] = {\n type: item.type,\n plural: item.plural,\n nullable: item.nullable,\n enumValues: Array.isArray(item.enumValues) ? item.enumValues.map(String) : null\n };\n }\n }\n });\n return selectionMetadata;\n }\n return null;\n}\nfunction generateDataForOperation(operation, mockResolvers, options) {\n var concreteOperation = operation.request.node.operation;\n var _generateData = generateData(concreteOperation, operation.request.variables, mockResolvers !== null && mockResolvers !== void 0 ? mockResolvers : null, getSelectionMetadataFromOperation(operation), (0, _objectSpread3[\"default\"])((0, _objectSpread3[\"default\"])({}, options), {}, {\n generateDeferredPayload: false\n })),\n initialPayload = _generateData[0];\n return initialPayload;\n}\nfunction generateWithDefer(operation, mockResolvers, options) {\n var _ref2 = options !== null && options !== void 0 ? options : {},\n _ref2$generateDeferre = _ref2.generateDeferredPayload,\n generateDeferredPayload = _ref2$generateDeferre === void 0 ? false : _ref2$generateDeferre,\n otherOptions = (0, _objectWithoutPropertiesLoose2[\"default\"])(_ref2, _excluded);\n var concreteOperation = operation.request.node.operation;\n var payloads = generateData(concreteOperation, operation.request.variables, mockResolvers !== null && mockResolvers !== void 0 ? mockResolvers : null, getSelectionMetadataFromOperation(operation), (0, _objectSpread3[\"default\"])((0, _objectSpread3[\"default\"])({}, otherOptions), {}, {\n generateDeferredPayload: generateDeferredPayload\n }));\n if (!generateDeferredPayload) {\n return payloads[0];\n }\n return payloads;\n}\nmodule.exports = {\n generate: generateDataForOperation,\n generateWithDefer: generateWithDefer\n};"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -89,7 +89,7 @@ var o = /* @__PURE__ */ e(((e, o) => {
|
|
|
89
89
|
var t, n;
|
|
90
90
|
e.kind === "Request" ? t = e : (n = e, t = n.request.node);
|
|
91
91
|
var r = a.filter(function(e) {
|
|
92
|
-
return l(e.request, t.params) ? n
|
|
92
|
+
return l(e.request, t.params) ? !n || l(n.request.variables, e.variables) : !1;
|
|
93
93
|
});
|
|
94
94
|
return !r.length && (process.env.NODE_ENV === "production" ? u(!1) : u(!1, "MockEnvironment: Cannot respond to request, it has not been requested yet.")), r.forEach(function(e) {
|
|
95
95
|
!e.sink && (process.env.NODE_ENV === "production" ? u(!1) : u(!1, "MockEnvironment: Cannot respond to `%s`, it has not been requested yet.", t.params.name));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelayModernMockEnvironment.js","names":["request"],"sources":["../../../../../../../node_modules/relay-test-utils/lib/RelayModernMockEnvironment.js"],"sourcesContent":["'use strict';\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\")[\"default\"];\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread2\"));\nvar areEqual = require(\"fbjs/lib/areEqual\");\nvar invariant = require('invariant');\nvar _require = require('relay-runtime'),\n Environment = _require.Environment,\n Network = _require.Network,\n Observable = _require.Observable,\n QueryResponseCache = _require.QueryResponseCache,\n RecordSource = _require.RecordSource,\n Store = _require.Store,\n createOperationDescriptor = _require.createOperationDescriptor,\n getRequest = _require.getRequest;\nvar MAX_SIZE = 10;\nvar MAX_TTL = 5 * 60 * 1000;\nfunction mockInstanceMethod(object, key) {\n object[key] = jest.fn(object[key].bind(object));\n}\nfunction mockDisposableMethod(object, key) {\n var fn = object[key].bind(object);\n object[key] = jest.fn(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var disposable = fn.apply(void 0, args);\n var dispose = jest.fn(function () {\n return disposable.dispose();\n });\n object[key].mock.dispose = dispose;\n return {\n dispose: dispose\n };\n });\n var mockClear = object[key].mockClear.bind(object[key]);\n object[key].mockClear = function () {\n mockClear();\n object[key].mock.dispose = null;\n };\n}\nfunction mockObservableMethod(object, key) {\n var fn = object[key].bind(object);\n var subscriptions = [];\n object[key] = jest.fn(function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return fn.apply(void 0, args)[\"do\"]({\n start: function start(subscription) {\n subscriptions.push(subscription);\n }\n });\n });\n object[key].mock.subscriptions = subscriptions;\n var mockClear = object[key].mockClear.bind(object[key]);\n object[key].mockClear = function () {\n mockClear();\n object[key].mock.subscriptions = [];\n };\n}\nfunction createMockEnvironment(config) {\n var _config$store, _global, _global$process, _global$process$env;\n var store = (_config$store = config === null || config === void 0 ? void 0 : config.store) !== null && _config$store !== void 0 ? _config$store : new Store(new RecordSource());\n var cache = new QueryResponseCache({\n size: MAX_SIZE,\n ttl: MAX_TTL\n });\n var pendingRequests = [];\n var pendingOperations = [];\n var queuePendingOperation = function queuePendingOperation(query, variables) {\n var operationDescriptor = createOperationDescriptor(getRequest(query), variables);\n pendingOperations = pendingOperations.concat([operationDescriptor]);\n };\n var resolversQueue = [];\n var queueOperationResolver = function queueOperationResolver(resolver) {\n resolversQueue = resolversQueue.concat([resolver]);\n };\n var execute = function execute(request, variables, cacheConfig) {\n var id = request.id,\n text = request.text;\n var cacheID = id !== null && id !== void 0 ? id : text;\n var cachedPayload = null;\n if (((cacheConfig === null || cacheConfig === void 0 ? void 0 : cacheConfig.force) == null || (cacheConfig === null || cacheConfig === void 0 ? void 0 : cacheConfig.force) === false) && cacheID != null) {\n cachedPayload = cache.get(cacheID, variables);\n }\n if (cachedPayload !== null) {\n return Observable.from(cachedPayload);\n }\n var currentOperation = pendingOperations.find(function (op) {\n return op.request.node.params === request && areEqual(op.request.variables, variables);\n });\n if (currentOperation != null && resolversQueue.length > 0) {\n var currentResolver = resolversQueue[0];\n var result = currentResolver(currentOperation);\n if (result != null) {\n resolversQueue = resolversQueue.filter(function (res) {\n return res !== currentResolver;\n });\n pendingOperations = pendingOperations.filter(function (op) {\n return op !== currentOperation;\n });\n if (result instanceof Error) {\n return Observable.create(function (sink) {\n sink.error(result);\n });\n } else {\n return Observable.from(result);\n }\n }\n }\n return Observable.create(function (sink) {\n var nextRequest = {\n request: request,\n variables: variables,\n cacheConfig: cacheConfig,\n sink: sink\n };\n pendingRequests = pendingRequests.concat([nextRequest]);\n return function () {\n pendingRequests = pendingRequests.filter(function (pending) {\n return !areEqual(pending, nextRequest);\n });\n var currentOperation = pendingOperations.find(function (op) {\n return areEqual(op.request.node.params, request) && areEqual(op.request.variables, variables);\n });\n pendingOperations = pendingOperations.filter(function (op) {\n return op !== currentOperation;\n });\n };\n });\n };\n function getConcreteRequest(input) {\n if (input.kind === 'Request') {\n var request = input;\n return request;\n } else {\n var operationDescriptor = input;\n !pendingOperations.includes(operationDescriptor) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'RelayModernMockEnvironment: Operation \"%s\" was not found in the list of pending operations', operationDescriptor.request.node.operation.name) : invariant(false) : void 0;\n return operationDescriptor.request.node;\n }\n }\n function getRequests(input) {\n var concreteRequest;\n var operationDescriptor;\n if (input.kind === 'Request') {\n concreteRequest = input;\n } else {\n operationDescriptor = input;\n concreteRequest = operationDescriptor.request.node;\n }\n var foundRequests = pendingRequests.filter(function (pending) {\n if (!areEqual(pending.request, concreteRequest.params)) {\n return false;\n }\n if (operationDescriptor) {\n return areEqual(operationDescriptor.request.variables, pending.variables);\n } else {\n return true;\n }\n });\n !foundRequests.length ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'MockEnvironment: Cannot respond to request, it has not been requested yet.') : invariant(false) : void 0;\n foundRequests.forEach(function (foundRequest) {\n !foundRequest.sink ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'MockEnvironment: Cannot respond to `%s`, it has not been requested yet.', concreteRequest.params.name) : invariant(false) : void 0;\n });\n return foundRequests;\n }\n function ensureValidPayload(payload) {\n !(typeof payload === 'object' && payload !== null && payload.hasOwnProperty('data')) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'MockEnvironment(): Expected payload to be an object with a `data` key.') : invariant(false) : void 0;\n return payload;\n }\n var cachePayload = function cachePayload(request, variables, payload) {\n var _getConcreteRequest$p = getConcreteRequest(request).params,\n id = _getConcreteRequest$p.id,\n text = _getConcreteRequest$p.text;\n var cacheID = id !== null && id !== void 0 ? id : text;\n !(cacheID != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'CacheID should not be null') : invariant(false) : void 0;\n cache.set(cacheID, variables, payload);\n };\n var clearCache = function clearCache() {\n cache.clear();\n };\n var isLoading = function isLoading(request, variables, cacheConfig) {\n return pendingRequests.some(function (pending) {\n return areEqual(pending.request, getConcreteRequest(request).params) && areEqual(pending.variables, variables) && areEqual(pending.cacheConfig, cacheConfig !== null && cacheConfig !== void 0 ? cacheConfig : {});\n });\n };\n var reject = function reject(request, error) {\n var rejectError = typeof error === 'string' ? new Error(error) : error;\n getRequests(request).forEach(function (foundRequest) {\n var sink = foundRequest.sink;\n !(sink !== null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Sink should be defined.') : invariant(false) : void 0;\n sink.error(rejectError);\n });\n };\n var nextValue = function nextValue(request, payload) {\n getRequests(request).forEach(function (foundRequest) {\n var sink = foundRequest.sink;\n !(sink !== null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Sink should be defined.') : invariant(false) : void 0;\n sink.next(ensureValidPayload(payload));\n });\n };\n var complete = function complete(request) {\n getRequests(request).forEach(function (foundRequest) {\n var sink = foundRequest.sink;\n !(sink !== null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Sink should be defined.') : invariant(false) : void 0;\n sink.complete();\n });\n };\n var resolve = function resolve(request, response) {\n getRequests(request).forEach(function (foundRequest) {\n var sink = foundRequest.sink;\n !(sink !== null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Sink should be defined.') : invariant(false) : void 0;\n var payloads = Array.isArray(response) ? response : [response];\n payloads.forEach(function (payload) {\n sink.next(ensureValidPayload(payload));\n });\n sink.complete();\n });\n };\n var getMostRecentOperation = function getMostRecentOperation() {\n var mostRecentOperation = pendingOperations[pendingOperations.length - 1];\n !(mostRecentOperation != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'RelayModernMockEnvironment: There are no pending operations in the list') : invariant(false) : void 0;\n return mostRecentOperation;\n };\n var findOperation = function findOperation(findFn) {\n var pendingOperation = pendingOperations.find(findFn);\n !(pendingOperation != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'RelayModernMockEnvironment: Operation was not found in the list of pending operations') : invariant(false) : void 0;\n return pendingOperation;\n };\n var environment = new Environment((0, _objectSpread2[\"default\"])({\n configName: 'RelayModernMockEnvironment',\n network: Network.create(execute, execute),\n store: store\n }, config));\n var createExecuteProxy = function createExecuteProxy(env, fn) {\n return function () {\n for (var _len3 = arguments.length, argumentsList = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n argumentsList[_key3] = arguments[_key3];\n }\n var operation = argumentsList[0].operation;\n pendingOperations = pendingOperations.concat([operation]);\n return fn.apply(env, argumentsList);\n };\n };\n environment.execute = createExecuteProxy(environment, environment.execute);\n environment.executeSubscription = createExecuteProxy(environment, environment.executeSubscription);\n environment.executeWithSource = createExecuteProxy(environment, environment.executeWithSource);\n environment.executeMutation = createExecuteProxy(environment, environment.executeMutation);\n if (((_global = global) === null || _global === void 0 ? void 0 : (_global$process = _global.process) === null || _global$process === void 0 ? void 0 : (_global$process$env = _global$process.env) === null || _global$process$env === void 0 ? void 0 : _global$process$env.NODE_ENV) === 'test') {\n mockDisposableMethod(environment, 'applyUpdate');\n mockInstanceMethod(environment, 'commitPayload');\n mockInstanceMethod(environment, 'getStore');\n mockInstanceMethod(environment, 'lookup');\n mockInstanceMethod(environment, 'check');\n mockDisposableMethod(environment, 'subscribe');\n mockDisposableMethod(environment, 'retain');\n mockObservableMethod(environment, 'execute');\n mockObservableMethod(environment, 'executeSubscription');\n mockObservableMethod(environment, 'executeWithSource');\n mockObservableMethod(environment, 'executeMutation');\n mockInstanceMethod(store, 'getSource');\n mockInstanceMethod(store, 'lookup');\n mockInstanceMethod(store, 'notify');\n mockInstanceMethod(store, 'publish');\n mockDisposableMethod(store, 'retain');\n mockDisposableMethod(store, 'subscribe');\n }\n var mock = {\n cachePayload: cachePayload,\n clearCache: clearCache,\n isLoading: isLoading,\n reject: reject,\n resolve: resolve,\n nextValue: nextValue,\n complete: complete,\n getMostRecentOperation: getMostRecentOperation,\n resolveMostRecentOperation: function resolveMostRecentOperation(payload) {\n var operation = getMostRecentOperation();\n var data = typeof payload === 'function' ? payload(operation) : payload;\n return resolve(operation, data);\n },\n rejectMostRecentOperation: function rejectMostRecentOperation(error) {\n var operation = getMostRecentOperation();\n var rejector = typeof error === 'function' ? error(operation) : error;\n return reject(operation, rejector);\n },\n findOperation: findOperation,\n queuePendingOperation: queuePendingOperation,\n getAllOperations: function getAllOperations() {\n return pendingOperations;\n },\n queueOperationResolver: queueOperationResolver\n };\n environment.mock = mock;\n environment.mockClear = function () {\n var _store$getSource$clea, _store$getSource;\n environment.applyUpdate.mockClear();\n environment.commitPayload.mockClear();\n environment.getStore.mockClear();\n environment.lookup.mockClear();\n environment.check.mockClear();\n environment.subscribe.mockClear();\n environment.retain.mockClear();\n environment.execute.mockClear();\n environment.executeMutation.mockClear();\n environment.executeSubscription.mockClear();\n (_store$getSource$clea = (_store$getSource = store.getSource()).clear) === null || _store$getSource$clea === void 0 ? void 0 : _store$getSource$clea.call(_store$getSource);\n store.getSource.mockClear();\n store.lookup.mockClear();\n store.notify.mockClear();\n store.publish.mockClear();\n store.retain.mockClear();\n store.subscribe.mockClear();\n cache.clear();\n pendingOperations = [];\n pendingRequests = [];\n };\n return environment;\n}\nmodule.exports = {\n createMockEnvironment: createMockEnvironment\n};"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RelayModernMockEnvironment.js","names":["request"],"sources":["../../../../../../../node_modules/relay-test-utils/lib/RelayModernMockEnvironment.js"],"sourcesContent":["'use strict';\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\")[\"default\"];\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread2\"));\nvar areEqual = require(\"fbjs/lib/areEqual\");\nvar invariant = require('invariant');\nvar _require = require('relay-runtime'),\n Environment = _require.Environment,\n Network = _require.Network,\n Observable = _require.Observable,\n QueryResponseCache = _require.QueryResponseCache,\n RecordSource = _require.RecordSource,\n Store = _require.Store,\n createOperationDescriptor = _require.createOperationDescriptor,\n getRequest = _require.getRequest;\nvar MAX_SIZE = 10;\nvar MAX_TTL = 5 * 60 * 1000;\nfunction mockInstanceMethod(object, key) {\n object[key] = jest.fn(object[key].bind(object));\n}\nfunction mockDisposableMethod(object, key) {\n var fn = object[key].bind(object);\n object[key] = jest.fn(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var disposable = fn.apply(void 0, args);\n var dispose = jest.fn(function () {\n return disposable.dispose();\n });\n object[key].mock.dispose = dispose;\n return {\n dispose: dispose\n };\n });\n var mockClear = object[key].mockClear.bind(object[key]);\n object[key].mockClear = function () {\n mockClear();\n object[key].mock.dispose = null;\n };\n}\nfunction mockObservableMethod(object, key) {\n var fn = object[key].bind(object);\n var subscriptions = [];\n object[key] = jest.fn(function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return fn.apply(void 0, args)[\"do\"]({\n start: function start(subscription) {\n subscriptions.push(subscription);\n }\n });\n });\n object[key].mock.subscriptions = subscriptions;\n var mockClear = object[key].mockClear.bind(object[key]);\n object[key].mockClear = function () {\n mockClear();\n object[key].mock.subscriptions = [];\n };\n}\nfunction createMockEnvironment(config) {\n var _config$store, _global, _global$process, _global$process$env;\n var store = (_config$store = config === null || config === void 0 ? void 0 : config.store) !== null && _config$store !== void 0 ? _config$store : new Store(new RecordSource());\n var cache = new QueryResponseCache({\n size: MAX_SIZE,\n ttl: MAX_TTL\n });\n var pendingRequests = [];\n var pendingOperations = [];\n var queuePendingOperation = function queuePendingOperation(query, variables) {\n var operationDescriptor = createOperationDescriptor(getRequest(query), variables);\n pendingOperations = pendingOperations.concat([operationDescriptor]);\n };\n var resolversQueue = [];\n var queueOperationResolver = function queueOperationResolver(resolver) {\n resolversQueue = resolversQueue.concat([resolver]);\n };\n var execute = function execute(request, variables, cacheConfig) {\n var id = request.id,\n text = request.text;\n var cacheID = id !== null && id !== void 0 ? id : text;\n var cachedPayload = null;\n if (((cacheConfig === null || cacheConfig === void 0 ? void 0 : cacheConfig.force) == null || (cacheConfig === null || cacheConfig === void 0 ? void 0 : cacheConfig.force) === false) && cacheID != null) {\n cachedPayload = cache.get(cacheID, variables);\n }\n if (cachedPayload !== null) {\n return Observable.from(cachedPayload);\n }\n var currentOperation = pendingOperations.find(function (op) {\n return op.request.node.params === request && areEqual(op.request.variables, variables);\n });\n if (currentOperation != null && resolversQueue.length > 0) {\n var currentResolver = resolversQueue[0];\n var result = currentResolver(currentOperation);\n if (result != null) {\n resolversQueue = resolversQueue.filter(function (res) {\n return res !== currentResolver;\n });\n pendingOperations = pendingOperations.filter(function (op) {\n return op !== currentOperation;\n });\n if (result instanceof Error) {\n return Observable.create(function (sink) {\n sink.error(result);\n });\n } else {\n return Observable.from(result);\n }\n }\n }\n return Observable.create(function (sink) {\n var nextRequest = {\n request: request,\n variables: variables,\n cacheConfig: cacheConfig,\n sink: sink\n };\n pendingRequests = pendingRequests.concat([nextRequest]);\n return function () {\n pendingRequests = pendingRequests.filter(function (pending) {\n return !areEqual(pending, nextRequest);\n });\n var currentOperation = pendingOperations.find(function (op) {\n return areEqual(op.request.node.params, request) && areEqual(op.request.variables, variables);\n });\n pendingOperations = pendingOperations.filter(function (op) {\n return op !== currentOperation;\n });\n };\n });\n };\n function getConcreteRequest(input) {\n if (input.kind === 'Request') {\n var request = input;\n return request;\n } else {\n var operationDescriptor = input;\n !pendingOperations.includes(operationDescriptor) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'RelayModernMockEnvironment: Operation \"%s\" was not found in the list of pending operations', operationDescriptor.request.node.operation.name) : invariant(false) : void 0;\n return operationDescriptor.request.node;\n }\n }\n function getRequests(input) {\n var concreteRequest;\n var operationDescriptor;\n if (input.kind === 'Request') {\n concreteRequest = input;\n } else {\n operationDescriptor = input;\n concreteRequest = operationDescriptor.request.node;\n }\n var foundRequests = pendingRequests.filter(function (pending) {\n if (!areEqual(pending.request, concreteRequest.params)) {\n return false;\n }\n if (operationDescriptor) {\n return areEqual(operationDescriptor.request.variables, pending.variables);\n } else {\n return true;\n }\n });\n !foundRequests.length ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'MockEnvironment: Cannot respond to request, it has not been requested yet.') : invariant(false) : void 0;\n foundRequests.forEach(function (foundRequest) {\n !foundRequest.sink ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'MockEnvironment: Cannot respond to `%s`, it has not been requested yet.', concreteRequest.params.name) : invariant(false) : void 0;\n });\n return foundRequests;\n }\n function ensureValidPayload(payload) {\n !(typeof payload === 'object' && payload !== null && payload.hasOwnProperty('data')) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'MockEnvironment(): Expected payload to be an object with a `data` key.') : invariant(false) : void 0;\n return payload;\n }\n var cachePayload = function cachePayload(request, variables, payload) {\n var _getConcreteRequest$p = getConcreteRequest(request).params,\n id = _getConcreteRequest$p.id,\n text = _getConcreteRequest$p.text;\n var cacheID = id !== null && id !== void 0 ? id : text;\n !(cacheID != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'CacheID should not be null') : invariant(false) : void 0;\n cache.set(cacheID, variables, payload);\n };\n var clearCache = function clearCache() {\n cache.clear();\n };\n var isLoading = function isLoading(request, variables, cacheConfig) {\n return pendingRequests.some(function (pending) {\n return areEqual(pending.request, getConcreteRequest(request).params) && areEqual(pending.variables, variables) && areEqual(pending.cacheConfig, cacheConfig !== null && cacheConfig !== void 0 ? cacheConfig : {});\n });\n };\n var reject = function reject(request, error) {\n var rejectError = typeof error === 'string' ? new Error(error) : error;\n getRequests(request).forEach(function (foundRequest) {\n var sink = foundRequest.sink;\n !(sink !== null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Sink should be defined.') : invariant(false) : void 0;\n sink.error(rejectError);\n });\n };\n var nextValue = function nextValue(request, payload) {\n getRequests(request).forEach(function (foundRequest) {\n var sink = foundRequest.sink;\n !(sink !== null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Sink should be defined.') : invariant(false) : void 0;\n sink.next(ensureValidPayload(payload));\n });\n };\n var complete = function complete(request) {\n getRequests(request).forEach(function (foundRequest) {\n var sink = foundRequest.sink;\n !(sink !== null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Sink should be defined.') : invariant(false) : void 0;\n sink.complete();\n });\n };\n var resolve = function resolve(request, response) {\n getRequests(request).forEach(function (foundRequest) {\n var sink = foundRequest.sink;\n !(sink !== null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Sink should be defined.') : invariant(false) : void 0;\n var payloads = Array.isArray(response) ? response : [response];\n payloads.forEach(function (payload) {\n sink.next(ensureValidPayload(payload));\n });\n sink.complete();\n });\n };\n var getMostRecentOperation = function getMostRecentOperation() {\n var mostRecentOperation = pendingOperations[pendingOperations.length - 1];\n !(mostRecentOperation != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'RelayModernMockEnvironment: There are no pending operations in the list') : invariant(false) : void 0;\n return mostRecentOperation;\n };\n var findOperation = function findOperation(findFn) {\n var pendingOperation = pendingOperations.find(findFn);\n !(pendingOperation != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'RelayModernMockEnvironment: Operation was not found in the list of pending operations') : invariant(false) : void 0;\n return pendingOperation;\n };\n var environment = new Environment((0, _objectSpread2[\"default\"])({\n configName: 'RelayModernMockEnvironment',\n network: Network.create(execute, execute),\n store: store\n }, config));\n var createExecuteProxy = function createExecuteProxy(env, fn) {\n return function () {\n for (var _len3 = arguments.length, argumentsList = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n argumentsList[_key3] = arguments[_key3];\n }\n var operation = argumentsList[0].operation;\n pendingOperations = pendingOperations.concat([operation]);\n return fn.apply(env, argumentsList);\n };\n };\n environment.execute = createExecuteProxy(environment, environment.execute);\n environment.executeSubscription = createExecuteProxy(environment, environment.executeSubscription);\n environment.executeWithSource = createExecuteProxy(environment, environment.executeWithSource);\n environment.executeMutation = createExecuteProxy(environment, environment.executeMutation);\n if (((_global = global) === null || _global === void 0 ? void 0 : (_global$process = _global.process) === null || _global$process === void 0 ? void 0 : (_global$process$env = _global$process.env) === null || _global$process$env === void 0 ? void 0 : _global$process$env.NODE_ENV) === 'test') {\n mockDisposableMethod(environment, 'applyUpdate');\n mockInstanceMethod(environment, 'commitPayload');\n mockInstanceMethod(environment, 'getStore');\n mockInstanceMethod(environment, 'lookup');\n mockInstanceMethod(environment, 'check');\n mockDisposableMethod(environment, 'subscribe');\n mockDisposableMethod(environment, 'retain');\n mockObservableMethod(environment, 'execute');\n mockObservableMethod(environment, 'executeSubscription');\n mockObservableMethod(environment, 'executeWithSource');\n mockObservableMethod(environment, 'executeMutation');\n mockInstanceMethod(store, 'getSource');\n mockInstanceMethod(store, 'lookup');\n mockInstanceMethod(store, 'notify');\n mockInstanceMethod(store, 'publish');\n mockDisposableMethod(store, 'retain');\n mockDisposableMethod(store, 'subscribe');\n }\n var mock = {\n cachePayload: cachePayload,\n clearCache: clearCache,\n isLoading: isLoading,\n reject: reject,\n resolve: resolve,\n nextValue: nextValue,\n complete: complete,\n getMostRecentOperation: getMostRecentOperation,\n resolveMostRecentOperation: function resolveMostRecentOperation(payload) {\n var operation = getMostRecentOperation();\n var data = typeof payload === 'function' ? payload(operation) : payload;\n return resolve(operation, data);\n },\n rejectMostRecentOperation: function rejectMostRecentOperation(error) {\n var operation = getMostRecentOperation();\n var rejector = typeof error === 'function' ? error(operation) : error;\n return reject(operation, rejector);\n },\n findOperation: findOperation,\n queuePendingOperation: queuePendingOperation,\n getAllOperations: function getAllOperations() {\n return pendingOperations;\n },\n queueOperationResolver: queueOperationResolver\n };\n environment.mock = mock;\n environment.mockClear = function () {\n var _store$getSource$clea, _store$getSource;\n environment.applyUpdate.mockClear();\n environment.commitPayload.mockClear();\n environment.getStore.mockClear();\n environment.lookup.mockClear();\n environment.check.mockClear();\n environment.subscribe.mockClear();\n environment.retain.mockClear();\n environment.execute.mockClear();\n environment.executeMutation.mockClear();\n environment.executeSubscription.mockClear();\n (_store$getSource$clea = (_store$getSource = store.getSource()).clear) === null || _store$getSource$clea === void 0 ? void 0 : _store$getSource$clea.call(_store$getSource);\n store.getSource.mockClear();\n store.lookup.mockClear();\n store.notify.mockClear();\n store.publish.mockClear();\n store.retain.mockClear();\n store.subscribe.mockClear();\n cache.clear();\n pendingOperations = [];\n pendingRequests = [];\n };\n return environment;\n}\nmodule.exports = {\n createMockEnvironment: createMockEnvironment\n};"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ var e = (e, t) => e(t), t = (e) => typeof e == "object" && !!e && !Array.isArray
|
|
|
7
7
|
if (e == null) return null;
|
|
8
8
|
let t = e.trim();
|
|
9
9
|
return t === "" ? null : t;
|
|
10
|
-
}, c = (e) => e == null
|
|
10
|
+
}, c = (e) => e == null || typeof e == "string" && e.trim() === "", l = (e, t) => typeof e == "function" ? e(t) : e;
|
|
11
11
|
//#endregion
|
|
12
12
|
export { n as extractMutationPayload, c as isEmptyText, a as isFormMutationAction, i as isMutationAction, t as isPlainObject, r as isRouteAction, l as resolveBadgeTone, e as resolveLabel, s as resolveRelationValue, o as resolveValueLabel };
|
|
13
13
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeEntityDetailPage.helpers.js","names":[],"sources":["../../../src/pages/BackofficeEntityDetailPage.helpers.ts"],"sourcesContent":["import type {\n BackofficeBadgeTone,\n BackofficeEntityActionSpec,\n BackofficeEntityFormMutationActionSpec,\n BackofficeEntityMutationActionSpec,\n BackofficeEntityRouteActionSpec,\n BackofficeValueLabel,\n I18nLabel,\n} from '@plumile/backoffice-core/types.js';\nimport type { MutationPayloadBase } from '../relay/mutationResult.js';\nimport type { TFunction } from 'i18next';\n\nexport const resolveLabel = (label: I18nLabel, tApp: TFunction): string => {\n return label(tApp);\n};\n\nexport const isPlainObject = (\n value: unknown,\n): value is Record<string, unknown> => {\n return typeof value === 'object' && value != null && !Array.isArray(value);\n};\n\nexport const extractMutationPayload = (\n response: unknown,\n): MutationPayloadBase | null => {\n if (!isPlainObject(response)) {\n return null;\n }\n\n for (const value of Object.values(response)) {\n if (isPlainObject(value) && ('status' in value || 'result' in value)) {\n return value;\n }\n }\n\n return null;\n};\n\nexport const isRouteAction = <Node>(\n action: BackofficeEntityActionSpec<Node>,\n): action is BackofficeEntityRouteActionSpec<Node> => {\n return action.kind === 'route';\n};\n\nexport const isMutationAction = <Node>(\n action: BackofficeEntityActionSpec<Node>,\n): action is BackofficeEntityMutationActionSpec<Node, any> => {\n return action.kind === 'mutation';\n};\n\nexport const isFormMutationAction = <Node>(\n action: BackofficeEntityActionSpec<Node>,\n): action is BackofficeEntityFormMutationActionSpec<Node, any, any, any> => {\n return action.kind === 'formMutation';\n};\n\nexport const resolveValueLabel = (\n value: BackofficeValueLabel | null | undefined,\n tApp: TFunction,\n): string | number | null => {\n if (typeof value === 'function') {\n return value(tApp);\n }\n if (value == null) {\n return null;\n }\n return value;\n};\n\nexport const resolveRelationValue = (value: string | null): string | null => {\n if (value == null) {\n return null;\n }\n const trimmed = value.trim();\n if (trimmed === '') {\n return null;\n }\n return trimmed;\n};\n\nexport const isEmptyText = (\n value: string | number | null | undefined,\n): boolean => {\n if (value == null) {\n return true;\n }\n if (typeof value === 'string') {\n return value.trim() === '';\n }\n return false;\n};\n\nexport const resolveBadgeTone = <Node>(\n tone: BackofficeBadgeTone | ((node: Node) => BackofficeBadgeTone) | undefined,\n node: Node,\n): BackofficeBadgeTone | undefined => {\n if (typeof tone === 'function') {\n return tone(node);\n }\n return tone;\n};\n"],"mappings":";AAYA,IAAa,KAAgB,GAAkB,MACtC,EAAM,CAAI,GAGN,KACX,MAEO,OAAO,KAAU,cAAY,KAAiB,CAAC,MAAM,QAAQ,CAAK,GAG9D,KACX,MAC+B;CAC/B,IAAI,CAAC,EAAc,CAAQ,GACzB,OAAO;CAGT,KAAK,IAAM,KAAS,OAAO,OAAO,CAAQ,GACxC,IAAI,EAAc,CAAK,MAAM,YAAY,KAAS,YAAY,IAC5D,OAAO;CAIX,OAAO;AACT,GAEa,KACX,MAEO,EAAO,SAAS,SAGZ,KACX,MAEO,EAAO,SAAS,YAGZ,KACX,MAEO,EAAO,SAAS,gBAGZ,KACX,GACA,MAEI,OAAO,KAAU,aACZ,EAAM,CAAI,IAEf,KACK,MAKE,KAAwB,MAAwC;CAC3E,IAAI,KAAS,MACX,OAAO;CAET,IAAM,IAAU,EAAM,KAAK;CAI3B,OAHI,MAAY,KACP,OAEF;AACT,GAEa,KACX,MAEI,KAAS,
|
|
1
|
+
{"version":3,"file":"BackofficeEntityDetailPage.helpers.js","names":[],"sources":["../../../src/pages/BackofficeEntityDetailPage.helpers.ts"],"sourcesContent":["import type {\n BackofficeBadgeTone,\n BackofficeEntityActionSpec,\n BackofficeEntityFormMutationActionSpec,\n BackofficeEntityMutationActionSpec,\n BackofficeEntityRouteActionSpec,\n BackofficeValueLabel,\n I18nLabel,\n} from '@plumile/backoffice-core/types.js';\nimport type { MutationPayloadBase } from '../relay/mutationResult.js';\nimport type { TFunction } from 'i18next';\n\nexport const resolveLabel = (label: I18nLabel, tApp: TFunction): string => {\n return label(tApp);\n};\n\nexport const isPlainObject = (\n value: unknown,\n): value is Record<string, unknown> => {\n return typeof value === 'object' && value != null && !Array.isArray(value);\n};\n\nexport const extractMutationPayload = (\n response: unknown,\n): MutationPayloadBase | null => {\n if (!isPlainObject(response)) {\n return null;\n }\n\n for (const value of Object.values(response)) {\n if (isPlainObject(value) && ('status' in value || 'result' in value)) {\n return value;\n }\n }\n\n return null;\n};\n\nexport const isRouteAction = <Node>(\n action: BackofficeEntityActionSpec<Node>,\n): action is BackofficeEntityRouteActionSpec<Node> => {\n return action.kind === 'route';\n};\n\nexport const isMutationAction = <Node>(\n action: BackofficeEntityActionSpec<Node>,\n): action is BackofficeEntityMutationActionSpec<Node, any> => {\n return action.kind === 'mutation';\n};\n\nexport const isFormMutationAction = <Node>(\n action: BackofficeEntityActionSpec<Node>,\n): action is BackofficeEntityFormMutationActionSpec<Node, any, any, any> => {\n return action.kind === 'formMutation';\n};\n\nexport const resolveValueLabel = (\n value: BackofficeValueLabel | null | undefined,\n tApp: TFunction,\n): string | number | null => {\n if (typeof value === 'function') {\n return value(tApp);\n }\n if (value == null) {\n return null;\n }\n return value;\n};\n\nexport const resolveRelationValue = (value: string | null): string | null => {\n if (value == null) {\n return null;\n }\n const trimmed = value.trim();\n if (trimmed === '') {\n return null;\n }\n return trimmed;\n};\n\nexport const isEmptyText = (\n value: string | number | null | undefined,\n): boolean => {\n if (value == null) {\n return true;\n }\n if (typeof value === 'string') {\n return value.trim() === '';\n }\n return false;\n};\n\nexport const resolveBadgeTone = <Node>(\n tone: BackofficeBadgeTone | ((node: Node) => BackofficeBadgeTone) | undefined,\n node: Node,\n): BackofficeBadgeTone | undefined => {\n if (typeof tone === 'function') {\n return tone(node);\n }\n return tone;\n};\n"],"mappings":";AAYA,IAAa,KAAgB,GAAkB,MACtC,EAAM,CAAI,GAGN,KACX,MAEO,OAAO,KAAU,cAAY,KAAiB,CAAC,MAAM,QAAQ,CAAK,GAG9D,KACX,MAC+B;CAC/B,IAAI,CAAC,EAAc,CAAQ,GACzB,OAAO;CAGT,KAAK,IAAM,KAAS,OAAO,OAAO,CAAQ,GACxC,IAAI,EAAc,CAAK,MAAM,YAAY,KAAS,YAAY,IAC5D,OAAO;CAIX,OAAO;AACT,GAEa,KACX,MAEO,EAAO,SAAS,SAGZ,KACX,MAEO,EAAO,SAAS,YAGZ,KACX,MAEO,EAAO,SAAS,gBAGZ,KACX,GACA,MAEI,OAAO,KAAU,aACZ,EAAM,CAAI,IAEf,KACK,MAKE,KAAwB,MAAwC;CAC3E,IAAI,KAAS,MACX,OAAO;CAET,IAAM,IAAU,EAAM,KAAK;CAI3B,OAHI,MAAY,KACP,OAEF;AACT,GAEa,KACX,MAEI,KAAS,QAGT,OAAO,KAAU,YACZ,EAAM,KAAK,MAAM,IAKf,KACX,GACA,MAEI,OAAO,KAAS,aACX,EAAK,CAAI,IAEX"}
|
|
@@ -150,7 +150,7 @@ var ve = (e) => {
|
|
|
150
150
|
return n == null ? null : n.routes.detail(t);
|
|
151
151
|
}, m = $.actions ?? [], h = [];
|
|
152
152
|
if (m.length > 0) {
|
|
153
|
-
let e = m.filter((e) => e.isVisible == null
|
|
153
|
+
let e = m.filter((e) => e.isVisible == null || e.isVisible(n));
|
|
154
154
|
e.length > 0 && (h = e.map((e) => {
|
|
155
155
|
let r = y(e.label, R), o = e.ariaLabel == null ? r : y(e.ariaLabel, R), s = e.variant ?? "secondary", c = e.size ?? "small", l = J[e.id] ?? !1, u = l || e.isDisabled?.(n) === !0;
|
|
156
156
|
return se(e) ? /* @__PURE__ */ S(M, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeEntityDetailPage.js","names":[],"sources":["../../../src/pages/BackofficeEntityDetailPage.tsx"],"sourcesContent":["/* eslint-disable no-ternary */\nimport { type JSX, type ReactNode, useContext, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n commitMutation,\n type PreloadedQuery,\n usePreloadedQuery,\n} from 'react-relay';\nimport type { OperationType } from 'relay-runtime';\nimport { resolveMutationOutcome } from '../relay/mutationResult.js';\n\nimport { BACKOFFICE_DATE_TIME_OPTIONS } from '@plumile/backoffice-core/constants.js';\nimport type {\n BackofficePreparedDetailPageDataRoute,\n BackofficeResolvedDetailPageFacetConfig,\n} from '@plumile/backoffice-core/types.js';\nimport { Button } from '@plumile/ui/atomic/atoms/button/Button.js';\nimport { LinkButton } from '@plumile/ui/atomic/atoms/button/LinkButton.js';\nimport { FormattedDate } from '@plumile/ui/atomic/atoms/formatted-date/FormattedDate.js';\nimport { useToast } from '@plumile/ui/atomic/molecules/toast/ToastProvider.js';\nimport { Tag } from '@plumile/ui/backoffice/atoms/tag/Tag.js';\nimport { BackofficeDetailSection } from '@plumile/ui/backoffice/molecules/backoffice_detail_section/BackofficeDetailSection.js';\nimport { BackofficeKeyValueList } from '@plumile/ui/backoffice/molecules/backoffice_key_value_list/BackofficeKeyValueList.js';\nimport { BackofficePayloadViewer } from '@plumile/ui/backoffice/molecules/backoffice_payload_viewer/BackofficePayloadViewer.js';\nimport { BackofficeScopeStack } from '@plumile/ui/backoffice/molecules/backoffice_scope_stack/BackofficeScopeStack.js';\nimport { AuditTimeline } from '@plumile/ui/backoffice/organisms/audit_timeline/AuditTimeline.js';\nimport { MetricCard } from '@plumile/ui/components/dashboard/metric_card/MetricCard.js';\nimport { MetricTileGroup } from '@plumile/ui/components/dashboard/metric_tile_group/MetricTileGroup.js';\nimport { DataTable } from '@plumile/ui/components/data-table/DataTable.js';\nimport { ChatCheckSvg } from '@plumile/ui/icons/ChatCheckSvg.js';\nimport { KeyOffSvg } from '@plumile/ui/icons/KeyOffSvg.js';\nimport { KeySvg } from '@plumile/ui/icons/KeySvg.js';\nimport { LockOpenSvg } from '@plumile/ui/icons/LockOpenSvg.js';\nimport { LockSvg } from '@plumile/ui/icons/LockSvg.js';\nimport { RobotCheckSvg } from '@plumile/ui/icons/RobotCheckSvg.js';\nimport { RobotXSvg } from '@plumile/ui/icons/RobotXSvg.js';\nimport { RocketOffSvg } from '@plumile/ui/icons/RocketOffSvg.js';\nimport { RocketSvg } from '@plumile/ui/icons/RocketSvg.js';\nimport { SettingsCheckSvg } from '@plumile/ui/icons/SettingsCheckSvg.js';\nimport { SettingsXSvg } from '@plumile/ui/icons/SettingsXSvg.js';\nimport { ShieldLockSvg } from '@plumile/ui/icons/ShieldLockSvg.js';\nimport { ShieldOffSvg } from '@plumile/ui/icons/ShieldOffSvg.js';\nimport { XBadgeSvg } from '@plumile/ui/icons/XBadgeSvg.js';\nimport Link from '@plumile/router/routing/Link.js';\nimport RoutingContext from '@plumile/router/routing/RoutingContext.js';\n\nimport { buildDataTableColumns } from '../components/backoffice/columns/buildDataTableColumns.js';\nimport { BackofficeEntityDetailScaffold } from '../components/backoffice/scaffolds/BackofficeEntityDetailScaffold.js';\nimport { useBackofficeEntityDetailNotFoundState } from '../components/backoffice/scaffolds/BackofficeEntityDetailNotFound.js';\nimport { BackofficeDetailBadgeRow } from '../components/backoffice/detail/BackofficeDetailBadgeRow.js';\nimport { BackofficeDetailFlagTag } from '../components/backoffice/detail/BackofficeDetailFlagTag.js';\nimport { BackofficeDetailTaggedValue } from '../components/backoffice/detail/BackofficeDetailTaggedValue.js';\nimport { BackofficeLifecycleTimelineSection } from '../components/backoffice/detail/BackofficeLifecycleTimelineSection.js';\nimport { BackofficeRelationsSummaryGrid } from '../components/backoffice/detail/BackofficeRelationsSummaryGrid.js';\nimport * as detailLayoutStyles from '../components/backoffice/detail/backofficeDetailLayout.css.js';\nimport { LazyBackofficeEntityActionFormDialog } from '../components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js';\nimport {\n resolveToastSpec,\n resolveToastViewActions,\n} from '../components/backoffice/actions/toastViewAction.js';\nimport * as pageStyles from './backofficeEntityDetailPage.css.js';\nimport { useBackofficeFormats } from '../i18n/useBackofficeFormats.js';\nimport { useBackofficeReactTranslation } from '../i18n/useBackofficeReactTranslation.js';\nimport { useBackofficeConfig } from '../provider/BackofficeConfigContext.js';\nimport { useBackofficeFragment } from '../relay/typedRelayHooks.js';\nimport { useRelayEnvironment } from '../relay/useRelayEnvironment.js';\nimport {\n extractMutationPayload,\n isFormMutationAction,\n isMutationAction,\n isRouteAction,\n resolveLabel,\n} from './BackofficeEntityDetailPage.helpers.js';\nimport {\n buildFieldItems,\n renderBlocks,\n type FlagIconName,\n} from './BackofficeEntityDetailPage.view-helpers.js';\n\nexport type BackofficeEntityDetailPageProps = {\n prepared: BackofficePreparedDetailPageDataRoute;\n};\n\nconst renderFlagIcon = (iconName: FlagIconName): JSX.Element => {\n const iconSize = 14;\n switch (iconName) {\n case 'shield-lock':\n return (\n <ShieldLockSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'shield-off':\n return (\n <ShieldOffSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'settings-check':\n return (\n <SettingsCheckSvg\n width={iconSize}\n height={iconSize}\n aria-hidden=\"true\"\n />\n );\n case 'settings-x':\n return (\n <SettingsXSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'x-badge':\n return (\n <XBadgeSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'chat-check':\n return (\n <ChatCheckSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'key':\n return <KeySvg width={iconSize} height={iconSize} aria-hidden=\"true\" />;\n case 'key-off':\n return (\n <KeyOffSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'lock':\n return <LockSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />;\n case 'lock-open':\n return (\n <LockOpenSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'robot-check':\n return (\n <RobotCheckSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'robot-x':\n return (\n <RobotXSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'rocket':\n return (\n <RocketSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'rocket-off':\n return (\n <RocketOffSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n default:\n throw new Error(`Unsupported flag icon: ${String(iconName)}`);\n }\n};\n\nconst resolveDetailPlacement = (item: {\n placement?: 'primary' | 'secondary' | 'main' | 'side' | 'fullWidth';\n presentation?: {\n group?: string;\n desktop?: 'primary' | 'secondary' | 'fullWidth';\n };\n kind?: string;\n fields?: readonly {\n presentation?: {\n group?: string;\n desktop?: 'primary' | 'secondary' | 'fullWidth';\n };\n }[];\n}): 'primary' | 'secondary' => {\n if (item.presentation?.desktop === 'secondary') {\n return 'secondary';\n }\n if (\n item.presentation?.group === 'scope' ||\n item.presentation?.group === 'status'\n ) {\n return 'secondary';\n }\n const fieldGroups =\n item.fields?.map((field) => {\n return field.presentation?.group;\n }) ?? [];\n if (\n fieldGroups.length > 0 &&\n fieldGroups.every((group) => {\n return group === 'scope' || group === 'status';\n })\n ) {\n return 'secondary';\n }\n if (item.placement === 'side') {\n return 'secondary';\n }\n if (item.placement === 'secondary') {\n return 'secondary';\n }\n return 'primary';\n};\n\nconst BackofficeEntityDetailPageContent = ({\n config,\n prepared,\n}: {\n config: BackofficeResolvedDetailPageFacetConfig;\n prepared: {\n pageQuery: PreloadedQuery<OperationType>;\n id: string;\n detailId?: string;\n pageId: string;\n pagePath: string;\n };\n}): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { formatNumber, formatCurrency, formatCurrencyTitle, formatPercent } =\n useBackofficeFormats();\n const { entities } = useBackofficeConfig();\n const routing = useContext(RoutingContext);\n const environment = useRelayEnvironment();\n const toast = useToast();\n const [actionState, setActionState] = useState<Record<string, boolean>>({});\n const [activeFormActionId, setActiveFormActionId] = useState<string | null>(\n null,\n );\n const setActionLoading = (actionId: string, isLoading: boolean) => {\n setActionState((prev) => {\n if (prev[actionId] === isLoading) {\n return prev;\n }\n return { ...prev, [actionId]: isLoading };\n });\n };\n\n const { page } = config;\n const notFound = useBackofficeEntityDetailNotFoundState({\n listHref: config.routes.list,\n });\n\n const pageQueryData = usePreloadedQuery(page.query, prepared.pageQuery);\n const pageNodeRef = page.resolveNode(pageQueryData, {\n id: prepared.id,\n detailId: prepared.detailId,\n });\n const resolvedNode = useBackofficeFragment<\n unknown,\n { __typename: string } | null | undefined\n >(page.fragment, pageNodeRef);\n return (\n <BackofficeEntityDetailScaffold\n node={resolvedNode}\n notFound={notFound}\n render={(node) => {\n const view = page.toView(node);\n const resolveEntityHref = (entityId: string, refId: string) => {\n const entityConfig = entities[entityId];\n if (entityConfig == null) {\n return null;\n }\n return entityConfig.routes.detail(refId);\n };\n const actions = page.actions ?? [];\n let headerActionButtons: ReactNode[] = [];\n if (actions.length > 0) {\n const visibleActions = actions.filter((action) => {\n if (action.isVisible == null) {\n return true;\n }\n return action.isVisible(view);\n });\n\n if (visibleActions.length > 0) {\n headerActionButtons = visibleActions.map((action) => {\n const label = resolveLabel(action.label, tApp);\n const ariaLabel =\n action.ariaLabel != null\n ? resolveLabel(action.ariaLabel, tApp)\n : label;\n const variant = action.variant ?? 'secondary';\n const size = action.size ?? 'small';\n const isLoading = actionState[action.id] ?? false;\n const isDisabled =\n isLoading || action.isDisabled?.(view) === true;\n\n if (isRouteAction(action)) {\n const href = action.to(view);\n return (\n <LinkButton\n key={action.id}\n to={href}\n variant={variant}\n size={size}\n isDisabled={isDisabled}\n aria-label={ariaLabel}\n preloadOnHover=\"code-and-data\"\n >\n {label}\n </LinkButton>\n );\n }\n\n if (isFormMutationAction(action)) {\n return (\n <Button\n key={action.id}\n type=\"button\"\n variant={variant}\n size={size}\n isLoading={false}\n disabled={isDisabled}\n onClick={() => {\n setActiveFormActionId(action.id);\n }}\n aria-label={ariaLabel}\n >\n {label}\n </Button>\n );\n }\n\n if (isMutationAction(action)) {\n const handleClick = () => {\n if (isLoading) {\n return;\n }\n const variables = action.getVariables(view);\n setActionLoading(action.id, true);\n commitMutation(environment, {\n mutation: action.mutation,\n variables,\n updater: (store) => {\n action.updater?.(store, view);\n },\n onCompleted: (response) => {\n setActionLoading(action.id, false);\n const mutationPayload = extractMutationPayload(response);\n if (mutationPayload != null) {\n let defaultErrorMessage = t(\n 'actions.form.errors.invalidPayload',\n );\n if (action.toasts?.error?.message != null) {\n defaultErrorMessage = resolveLabel(\n action.toasts.error.message,\n tApp,\n );\n } else if (action.toasts?.error?.title != null) {\n defaultErrorMessage = resolveLabel(\n action.toasts.error.title,\n tApp,\n );\n }\n\n const outcome = resolveMutationOutcome(\n mutationPayload,\n {\n defaultErrorMessage,\n mapReason: (reason) => {\n const mapped = action.mapErrorReason?.(\n reason,\n view,\n );\n if (mapped == null) {\n return null;\n }\n if (typeof mapped === 'function') {\n return resolveLabel(mapped, tApp);\n }\n return String(mapped);\n },\n },\n );\n if (!outcome.ok) {\n const error = new Error(outcome.message);\n action.onError?.(error, view);\n if (action.toasts?.error != null) {\n const toastSpec = resolveToastSpec(\n action.toasts.error,\n tApp,\n );\n toast.error(toastSpec.title, toastSpec.message);\n }\n return;\n }\n }\n\n action.onCompleted?.(response, view);\n if (action.toasts?.success != null) {\n const toastSpec = resolveToastSpec(\n action.toasts.success,\n tApp,\n );\n const toastActions = resolveToastViewActions({\n toast: action.toasts.success,\n response,\n node: view,\n tApp,\n entities,\n defaultLabel: t('actions.view'),\n navigateTo: (to) => {\n routing?.history.push({ pathname: to });\n },\n });\n toast.push({\n kind: 'info',\n title: toastSpec.title,\n message: toastSpec.message,\n actions: toastActions,\n });\n }\n },\n onError: (error) => {\n setActionLoading(action.id, false);\n action.onError?.(error, view);\n if (action.toasts?.error != null) {\n const toastSpec = resolveToastSpec(\n action.toasts.error,\n tApp,\n );\n toast.error(toastSpec.title, toastSpec.message);\n }\n },\n });\n };\n\n return (\n <Button\n key={action.id}\n type=\"button\"\n variant={variant}\n size={size}\n isLoading={isLoading}\n disabled={isDisabled}\n onClick={handleClick}\n aria-label={ariaLabel}\n >\n {label}\n </Button>\n );\n }\n\n return null;\n });\n }\n }\n\n const activeFormAction = actions.find((action) => {\n return action.id === activeFormActionId;\n });\n\n const { content } = page;\n\n const primaryNodes: ReactNode[] = [];\n const secondaryNodes: ReactNode[] = [];\n content.forEach((item, index) => {\n const placement = resolveDetailPlacement(item);\n const targetNodes =\n placement === 'secondary' ? secondaryNodes : primaryNodes;\n\n if (item.kind === 'fieldSet') {\n const sectionLabel = resolveLabel(item.title, tApp);\n const description =\n item.description != null\n ? resolveLabel(item.description, tApp)\n : undefined;\n const { items, customNodes } = buildFieldItems(item.fields, view, {\n tApp,\n t,\n resolveEntityHref,\n formatNumber,\n formatCurrency,\n formatCurrencyTitle,\n formatPercent,\n renderTag: (tone, label) => {\n return <Tag tone={tone}>{label}</Tag>;\n },\n renderBadgeRow: (items) => {\n return <BackofficeDetailBadgeRow items={items} />;\n },\n renderDate: (value, fallback) => {\n return (\n <FormattedDate\n value={value}\n options={BACKOFFICE_DATE_TIME_OPTIONS}\n fallback={fallback}\n />\n );\n },\n renderFlagTag: (tag) => {\n return (\n <BackofficeDetailFlagTag\n tone={tag.tone}\n icon={\n tag.iconName != null\n ? renderFlagIcon(tag.iconName)\n : undefined\n }\n label={tag.label}\n />\n );\n },\n renderLink: (href, label) => {\n return (\n <Link to={href} preloadOnHover=\"code-and-data\">\n {label}\n </Link>\n );\n },\n renderTaggedValue: (tag, value) => {\n return <BackofficeDetailTaggedValue tag={tag} value={value} />;\n },\n wrapCustomNode: (id, custom) => {\n return <div key={id}>{custom}</div>;\n },\n });\n\n const hasContent = items.length > 0 || customNodes.length > 0;\n\n if (!hasContent) {\n return;\n }\n\n targetNodes.push(\n <BackofficeDetailSection\n key={`${sectionLabel}-${index}`}\n title={sectionLabel}\n description={description}\n items={items.length > 0 ? items : undefined}\n >\n {customNodes}\n </BackofficeDetailSection>,\n );\n return;\n }\n\n const rendered = renderBlocks([item], view, {\n tApp,\n t,\n resolveEntityHref,\n keyPrefix: String(index),\n renderLink: (href, label) => {\n return (\n <Link to={href} preloadOnHover=\"code-and-data\">\n {label}\n </Link>\n );\n },\n renderDate: (value, fallback) => {\n return (\n <FormattedDate\n value={value}\n options={BACKOFFICE_DATE_TIME_OPTIONS}\n fallback={fallback}\n />\n );\n },\n renderTag: (tone, label) => {\n return <Tag tone={tone}>{label}</Tag>;\n },\n renderMetricGroup: ({\n key,\n title,\n description,\n density,\n items,\n }) => {\n return (\n <BackofficeDetailSection\n key={key}\n title={title}\n description={description}\n >\n {items.length > 0 && (\n <MetricTileGroup\n density={density ?? 'comfortable'}\n minColumn=\"180\"\n >\n {items.map((metric) => {\n return (\n <MetricCard\n key={metric.id}\n label={metric.label}\n value={metric.value}\n hint={metric.hint}\n tone={metric.tone ?? 'neutral'}\n density={density ?? 'comfortable'}\n copyValue={metric.copyValue}\n copyLabel={t('common.actions.copy')}\n copiedLabel={t('common.actions.copied')}\n />\n );\n })}\n </MetricTileGroup>\n )}\n </BackofficeDetailSection>\n );\n },\n renderTimeline: ({ key, title, description, events }) => {\n return (\n <BackofficeLifecycleTimelineSection\n key={key}\n title={title}\n description={description}\n events={events}\n />\n );\n },\n renderAuditTimeline: ({ key, title, description, events }) => {\n return (\n <BackofficeDetailSection\n key={key}\n title={title}\n description={description}\n >\n <AuditTimeline events={events} />\n </BackofficeDetailSection>\n );\n },\n renderRelations: ({ key, title, items }) => {\n return (\n <BackofficeRelationsSummaryGrid\n key={key}\n title={title}\n items={items}\n />\n );\n },\n renderContextStack: ({ key, title, items }) => {\n return (\n <BackofficeScopeStack key={key} title={title} items={items} />\n );\n },\n renderCustomSection: (key, title, child) => {\n return (\n <BackofficeDetailSection key={key} title={title}>\n {child}\n </BackofficeDetailSection>\n );\n },\n wrapCustomNode: (key, custom) => {\n return <div key={key}>{custom}</div>;\n },\n resolveTableColumns: (columns) => {\n return buildDataTableColumns(columns, {\n tApp,\n t,\n });\n },\n renderTable: ({ key, title, description, columns, rows }) => {\n return (\n <BackofficeDetailSection\n key={key}\n title={title}\n description={description}\n >\n <DataTable\n columns={columns}\n rows={rows}\n getRowId={(row, rowIndex) => {\n if (row != null && typeof row === 'object') {\n const record = row as Record<string, unknown>;\n const maybeId = record.id;\n if (\n typeof maybeId === 'string' &&\n maybeId.trim() !== ''\n ) {\n return maybeId;\n }\n }\n return String(rowIndex);\n }}\n />\n </BackofficeDetailSection>\n );\n },\n renderPayload: ({ key, title, description, content, format }) => {\n return (\n <BackofficeDetailSection\n key={key}\n title={title}\n description={description}\n >\n <BackofficePayloadViewer\n content={content}\n format={format}\n emptyState={t('common.notAvailable')}\n />\n </BackofficeDetailSection>\n );\n },\n renderKeyValueListSection: ({ key, title, description, items }) => {\n return (\n <BackofficeDetailSection\n key={key}\n title={title}\n description={description}\n >\n <BackofficeKeyValueList items={items} />\n </BackofficeDetailSection>\n );\n },\n });\n const blockNode = rendered[0];\n if (blockNode != null) {\n targetNodes.push(blockNode);\n }\n });\n\n const tabActionsNode =\n headerActionButtons.length > 0 ? (\n <div className={pageStyles.headerActions}>\n <div className={pageStyles.headerActionGroup}>\n {headerActionButtons}\n </div>\n </div>\n ) : null;\n\n const hasAside = secondaryNodes.length > 0;\n const contentNode = hasAside ? (\n <div className={detailLayoutStyles.layout}>\n <div className={detailLayoutStyles.primary}>{primaryNodes}</div>\n <aside className={detailLayoutStyles.secondary}>\n {secondaryNodes}\n </aside>\n </div>\n ) : (\n <div className={detailLayoutStyles.stacked}>{primaryNodes}</div>\n );\n\n return (\n <>\n {tabActionsNode}\n {contentNode}\n {activeFormAction != null &&\n isFormMutationAction(activeFormAction) && (\n <LazyBackofficeEntityActionFormDialog\n isOpen\n action={activeFormAction}\n node={view}\n onClose={() => {\n setActiveFormActionId(null);\n }}\n />\n )}\n </>\n );\n }}\n />\n );\n};\n\nexport const BackofficeEntityDetailPage = ({\n prepared,\n}: BackofficeEntityDetailPageProps): JSX.Element => {\n return (\n <BackofficeEntityDetailPageContent\n config={prepared.pageConfig}\n prepared={prepared}\n />\n );\n};\n\nexport default BackofficeEntityDetailPage;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BackofficeEntityDetailPage.js","names":[],"sources":["../../../src/pages/BackofficeEntityDetailPage.tsx"],"sourcesContent":["/* eslint-disable no-ternary */\nimport { type JSX, type ReactNode, useContext, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n commitMutation,\n type PreloadedQuery,\n usePreloadedQuery,\n} from 'react-relay';\nimport type { OperationType } from 'relay-runtime';\nimport { resolveMutationOutcome } from '../relay/mutationResult.js';\n\nimport { BACKOFFICE_DATE_TIME_OPTIONS } from '@plumile/backoffice-core/constants.js';\nimport type {\n BackofficePreparedDetailPageDataRoute,\n BackofficeResolvedDetailPageFacetConfig,\n} from '@plumile/backoffice-core/types.js';\nimport { Button } from '@plumile/ui/atomic/atoms/button/Button.js';\nimport { LinkButton } from '@plumile/ui/atomic/atoms/button/LinkButton.js';\nimport { FormattedDate } from '@plumile/ui/atomic/atoms/formatted-date/FormattedDate.js';\nimport { useToast } from '@plumile/ui/atomic/molecules/toast/ToastProvider.js';\nimport { Tag } from '@plumile/ui/backoffice/atoms/tag/Tag.js';\nimport { BackofficeDetailSection } from '@plumile/ui/backoffice/molecules/backoffice_detail_section/BackofficeDetailSection.js';\nimport { BackofficeKeyValueList } from '@plumile/ui/backoffice/molecules/backoffice_key_value_list/BackofficeKeyValueList.js';\nimport { BackofficePayloadViewer } from '@plumile/ui/backoffice/molecules/backoffice_payload_viewer/BackofficePayloadViewer.js';\nimport { BackofficeScopeStack } from '@plumile/ui/backoffice/molecules/backoffice_scope_stack/BackofficeScopeStack.js';\nimport { AuditTimeline } from '@plumile/ui/backoffice/organisms/audit_timeline/AuditTimeline.js';\nimport { MetricCard } from '@plumile/ui/components/dashboard/metric_card/MetricCard.js';\nimport { MetricTileGroup } from '@plumile/ui/components/dashboard/metric_tile_group/MetricTileGroup.js';\nimport { DataTable } from '@plumile/ui/components/data-table/DataTable.js';\nimport { ChatCheckSvg } from '@plumile/ui/icons/ChatCheckSvg.js';\nimport { KeyOffSvg } from '@plumile/ui/icons/KeyOffSvg.js';\nimport { KeySvg } from '@plumile/ui/icons/KeySvg.js';\nimport { LockOpenSvg } from '@plumile/ui/icons/LockOpenSvg.js';\nimport { LockSvg } from '@plumile/ui/icons/LockSvg.js';\nimport { RobotCheckSvg } from '@plumile/ui/icons/RobotCheckSvg.js';\nimport { RobotXSvg } from '@plumile/ui/icons/RobotXSvg.js';\nimport { RocketOffSvg } from '@plumile/ui/icons/RocketOffSvg.js';\nimport { RocketSvg } from '@plumile/ui/icons/RocketSvg.js';\nimport { SettingsCheckSvg } from '@plumile/ui/icons/SettingsCheckSvg.js';\nimport { SettingsXSvg } from '@plumile/ui/icons/SettingsXSvg.js';\nimport { ShieldLockSvg } from '@plumile/ui/icons/ShieldLockSvg.js';\nimport { ShieldOffSvg } from '@plumile/ui/icons/ShieldOffSvg.js';\nimport { XBadgeSvg } from '@plumile/ui/icons/XBadgeSvg.js';\nimport Link from '@plumile/router/routing/Link.js';\nimport RoutingContext from '@plumile/router/routing/RoutingContext.js';\n\nimport { buildDataTableColumns } from '../components/backoffice/columns/buildDataTableColumns.js';\nimport { BackofficeEntityDetailScaffold } from '../components/backoffice/scaffolds/BackofficeEntityDetailScaffold.js';\nimport { useBackofficeEntityDetailNotFoundState } from '../components/backoffice/scaffolds/BackofficeEntityDetailNotFound.js';\nimport { BackofficeDetailBadgeRow } from '../components/backoffice/detail/BackofficeDetailBadgeRow.js';\nimport { BackofficeDetailFlagTag } from '../components/backoffice/detail/BackofficeDetailFlagTag.js';\nimport { BackofficeDetailTaggedValue } from '../components/backoffice/detail/BackofficeDetailTaggedValue.js';\nimport { BackofficeLifecycleTimelineSection } from '../components/backoffice/detail/BackofficeLifecycleTimelineSection.js';\nimport { BackofficeRelationsSummaryGrid } from '../components/backoffice/detail/BackofficeRelationsSummaryGrid.js';\nimport * as detailLayoutStyles from '../components/backoffice/detail/backofficeDetailLayout.css.js';\nimport { LazyBackofficeEntityActionFormDialog } from '../components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js';\nimport {\n resolveToastSpec,\n resolveToastViewActions,\n} from '../components/backoffice/actions/toastViewAction.js';\nimport * as pageStyles from './backofficeEntityDetailPage.css.js';\nimport { useBackofficeFormats } from '../i18n/useBackofficeFormats.js';\nimport { useBackofficeReactTranslation } from '../i18n/useBackofficeReactTranslation.js';\nimport { useBackofficeConfig } from '../provider/BackofficeConfigContext.js';\nimport { useBackofficeFragment } from '../relay/typedRelayHooks.js';\nimport { useRelayEnvironment } from '../relay/useRelayEnvironment.js';\nimport {\n extractMutationPayload,\n isFormMutationAction,\n isMutationAction,\n isRouteAction,\n resolveLabel,\n} from './BackofficeEntityDetailPage.helpers.js';\nimport {\n buildFieldItems,\n renderBlocks,\n type FlagIconName,\n} from './BackofficeEntityDetailPage.view-helpers.js';\n\nexport type BackofficeEntityDetailPageProps = {\n prepared: BackofficePreparedDetailPageDataRoute;\n};\n\nconst renderFlagIcon = (iconName: FlagIconName): JSX.Element => {\n const iconSize = 14;\n switch (iconName) {\n case 'shield-lock':\n return (\n <ShieldLockSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'shield-off':\n return (\n <ShieldOffSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'settings-check':\n return (\n <SettingsCheckSvg\n width={iconSize}\n height={iconSize}\n aria-hidden=\"true\"\n />\n );\n case 'settings-x':\n return (\n <SettingsXSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'x-badge':\n return (\n <XBadgeSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'chat-check':\n return (\n <ChatCheckSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'key':\n return <KeySvg width={iconSize} height={iconSize} aria-hidden=\"true\" />;\n case 'key-off':\n return (\n <KeyOffSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'lock':\n return <LockSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />;\n case 'lock-open':\n return (\n <LockOpenSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'robot-check':\n return (\n <RobotCheckSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'robot-x':\n return (\n <RobotXSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'rocket':\n return (\n <RocketSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'rocket-off':\n return (\n <RocketOffSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n default:\n throw new Error(`Unsupported flag icon: ${String(iconName)}`);\n }\n};\n\nconst resolveDetailPlacement = (item: {\n placement?: 'primary' | 'secondary' | 'main' | 'side' | 'fullWidth';\n presentation?: {\n group?: string;\n desktop?: 'primary' | 'secondary' | 'fullWidth';\n };\n kind?: string;\n fields?: readonly {\n presentation?: {\n group?: string;\n desktop?: 'primary' | 'secondary' | 'fullWidth';\n };\n }[];\n}): 'primary' | 'secondary' => {\n if (item.presentation?.desktop === 'secondary') {\n return 'secondary';\n }\n if (\n item.presentation?.group === 'scope' ||\n item.presentation?.group === 'status'\n ) {\n return 'secondary';\n }\n const fieldGroups =\n item.fields?.map((field) => {\n return field.presentation?.group;\n }) ?? [];\n if (\n fieldGroups.length > 0 &&\n fieldGroups.every((group) => {\n return group === 'scope' || group === 'status';\n })\n ) {\n return 'secondary';\n }\n if (item.placement === 'side') {\n return 'secondary';\n }\n if (item.placement === 'secondary') {\n return 'secondary';\n }\n return 'primary';\n};\n\nconst BackofficeEntityDetailPageContent = ({\n config,\n prepared,\n}: {\n config: BackofficeResolvedDetailPageFacetConfig;\n prepared: {\n pageQuery: PreloadedQuery<OperationType>;\n id: string;\n detailId?: string;\n pageId: string;\n pagePath: string;\n };\n}): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { formatNumber, formatCurrency, formatCurrencyTitle, formatPercent } =\n useBackofficeFormats();\n const { entities } = useBackofficeConfig();\n const routing = useContext(RoutingContext);\n const environment = useRelayEnvironment();\n const toast = useToast();\n const [actionState, setActionState] = useState<Record<string, boolean>>({});\n const [activeFormActionId, setActiveFormActionId] = useState<string | null>(\n null,\n );\n const setActionLoading = (actionId: string, isLoading: boolean) => {\n setActionState((prev) => {\n if (prev[actionId] === isLoading) {\n return prev;\n }\n return { ...prev, [actionId]: isLoading };\n });\n };\n\n const { page } = config;\n const notFound = useBackofficeEntityDetailNotFoundState({\n listHref: config.routes.list,\n });\n\n const pageQueryData = usePreloadedQuery(page.query, prepared.pageQuery);\n const pageNodeRef = page.resolveNode(pageQueryData, {\n id: prepared.id,\n detailId: prepared.detailId,\n });\n const resolvedNode = useBackofficeFragment<\n unknown,\n { __typename: string } | null | undefined\n >(page.fragment, pageNodeRef);\n return (\n <BackofficeEntityDetailScaffold\n node={resolvedNode}\n notFound={notFound}\n render={(node) => {\n const view = page.toView(node);\n const resolveEntityHref = (entityId: string, refId: string) => {\n const entityConfig = entities[entityId];\n if (entityConfig == null) {\n return null;\n }\n return entityConfig.routes.detail(refId);\n };\n const actions = page.actions ?? [];\n let headerActionButtons: ReactNode[] = [];\n if (actions.length > 0) {\n const visibleActions = actions.filter((action) => {\n if (action.isVisible == null) {\n return true;\n }\n return action.isVisible(view);\n });\n\n if (visibleActions.length > 0) {\n headerActionButtons = visibleActions.map((action) => {\n const label = resolveLabel(action.label, tApp);\n const ariaLabel =\n action.ariaLabel != null\n ? resolveLabel(action.ariaLabel, tApp)\n : label;\n const variant = action.variant ?? 'secondary';\n const size = action.size ?? 'small';\n const isLoading = actionState[action.id] ?? false;\n const isDisabled =\n isLoading || action.isDisabled?.(view) === true;\n\n if (isRouteAction(action)) {\n const href = action.to(view);\n return (\n <LinkButton\n key={action.id}\n to={href}\n variant={variant}\n size={size}\n isDisabled={isDisabled}\n aria-label={ariaLabel}\n preloadOnHover=\"code-and-data\"\n >\n {label}\n </LinkButton>\n );\n }\n\n if (isFormMutationAction(action)) {\n return (\n <Button\n key={action.id}\n type=\"button\"\n variant={variant}\n size={size}\n isLoading={false}\n disabled={isDisabled}\n onClick={() => {\n setActiveFormActionId(action.id);\n }}\n aria-label={ariaLabel}\n >\n {label}\n </Button>\n );\n }\n\n if (isMutationAction(action)) {\n const handleClick = () => {\n if (isLoading) {\n return;\n }\n const variables = action.getVariables(view);\n setActionLoading(action.id, true);\n commitMutation(environment, {\n mutation: action.mutation,\n variables,\n updater: (store) => {\n action.updater?.(store, view);\n },\n onCompleted: (response) => {\n setActionLoading(action.id, false);\n const mutationPayload = extractMutationPayload(response);\n if (mutationPayload != null) {\n let defaultErrorMessage = t(\n 'actions.form.errors.invalidPayload',\n );\n if (action.toasts?.error?.message != null) {\n defaultErrorMessage = resolveLabel(\n action.toasts.error.message,\n tApp,\n );\n } else if (action.toasts?.error?.title != null) {\n defaultErrorMessage = resolveLabel(\n action.toasts.error.title,\n tApp,\n );\n }\n\n const outcome = resolveMutationOutcome(\n mutationPayload,\n {\n defaultErrorMessage,\n mapReason: (reason) => {\n const mapped = action.mapErrorReason?.(\n reason,\n view,\n );\n if (mapped == null) {\n return null;\n }\n if (typeof mapped === 'function') {\n return resolveLabel(mapped, tApp);\n }\n return String(mapped);\n },\n },\n );\n if (!outcome.ok) {\n const error = new Error(outcome.message);\n action.onError?.(error, view);\n if (action.toasts?.error != null) {\n const toastSpec = resolveToastSpec(\n action.toasts.error,\n tApp,\n );\n toast.error(toastSpec.title, toastSpec.message);\n }\n return;\n }\n }\n\n action.onCompleted?.(response, view);\n if (action.toasts?.success != null) {\n const toastSpec = resolveToastSpec(\n action.toasts.success,\n tApp,\n );\n const toastActions = resolveToastViewActions({\n toast: action.toasts.success,\n response,\n node: view,\n tApp,\n entities,\n defaultLabel: t('actions.view'),\n navigateTo: (to) => {\n routing?.history.push({ pathname: to });\n },\n });\n toast.push({\n kind: 'info',\n title: toastSpec.title,\n message: toastSpec.message,\n actions: toastActions,\n });\n }\n },\n onError: (error) => {\n setActionLoading(action.id, false);\n action.onError?.(error, view);\n if (action.toasts?.error != null) {\n const toastSpec = resolveToastSpec(\n action.toasts.error,\n tApp,\n );\n toast.error(toastSpec.title, toastSpec.message);\n }\n },\n });\n };\n\n return (\n <Button\n key={action.id}\n type=\"button\"\n variant={variant}\n size={size}\n isLoading={isLoading}\n disabled={isDisabled}\n onClick={handleClick}\n aria-label={ariaLabel}\n >\n {label}\n </Button>\n );\n }\n\n return null;\n });\n }\n }\n\n const activeFormAction = actions.find((action) => {\n return action.id === activeFormActionId;\n });\n\n const { content } = page;\n\n const primaryNodes: ReactNode[] = [];\n const secondaryNodes: ReactNode[] = [];\n content.forEach((item, index) => {\n const placement = resolveDetailPlacement(item);\n const targetNodes =\n placement === 'secondary' ? secondaryNodes : primaryNodes;\n\n if (item.kind === 'fieldSet') {\n const sectionLabel = resolveLabel(item.title, tApp);\n const description =\n item.description != null\n ? resolveLabel(item.description, tApp)\n : undefined;\n const { items, customNodes } = buildFieldItems(item.fields, view, {\n tApp,\n t,\n resolveEntityHref,\n formatNumber,\n formatCurrency,\n formatCurrencyTitle,\n formatPercent,\n renderTag: (tone, label) => {\n return <Tag tone={tone}>{label}</Tag>;\n },\n renderBadgeRow: (items) => {\n return <BackofficeDetailBadgeRow items={items} />;\n },\n renderDate: (value, fallback) => {\n return (\n <FormattedDate\n value={value}\n options={BACKOFFICE_DATE_TIME_OPTIONS}\n fallback={fallback}\n />\n );\n },\n renderFlagTag: (tag) => {\n return (\n <BackofficeDetailFlagTag\n tone={tag.tone}\n icon={\n tag.iconName != null\n ? renderFlagIcon(tag.iconName)\n : undefined\n }\n label={tag.label}\n />\n );\n },\n renderLink: (href, label) => {\n return (\n <Link to={href} preloadOnHover=\"code-and-data\">\n {label}\n </Link>\n );\n },\n renderTaggedValue: (tag, value) => {\n return <BackofficeDetailTaggedValue tag={tag} value={value} />;\n },\n wrapCustomNode: (id, custom) => {\n return <div key={id}>{custom}</div>;\n },\n });\n\n const hasContent = items.length > 0 || customNodes.length > 0;\n\n if (!hasContent) {\n return;\n }\n\n targetNodes.push(\n <BackofficeDetailSection\n key={`${sectionLabel}-${index}`}\n title={sectionLabel}\n description={description}\n items={items.length > 0 ? items : undefined}\n >\n {customNodes}\n </BackofficeDetailSection>,\n );\n return;\n }\n\n const rendered = renderBlocks([item], view, {\n tApp,\n t,\n resolveEntityHref,\n keyPrefix: String(index),\n renderLink: (href, label) => {\n return (\n <Link to={href} preloadOnHover=\"code-and-data\">\n {label}\n </Link>\n );\n },\n renderDate: (value, fallback) => {\n return (\n <FormattedDate\n value={value}\n options={BACKOFFICE_DATE_TIME_OPTIONS}\n fallback={fallback}\n />\n );\n },\n renderTag: (tone, label) => {\n return <Tag tone={tone}>{label}</Tag>;\n },\n renderMetricGroup: ({\n key,\n title,\n description,\n density,\n items,\n }) => {\n return (\n <BackofficeDetailSection\n key={key}\n title={title}\n description={description}\n >\n {items.length > 0 && (\n <MetricTileGroup\n density={density ?? 'comfortable'}\n minColumn=\"180\"\n >\n {items.map((metric) => {\n return (\n <MetricCard\n key={metric.id}\n label={metric.label}\n value={metric.value}\n hint={metric.hint}\n tone={metric.tone ?? 'neutral'}\n density={density ?? 'comfortable'}\n copyValue={metric.copyValue}\n copyLabel={t('common.actions.copy')}\n copiedLabel={t('common.actions.copied')}\n />\n );\n })}\n </MetricTileGroup>\n )}\n </BackofficeDetailSection>\n );\n },\n renderTimeline: ({ key, title, description, events }) => {\n return (\n <BackofficeLifecycleTimelineSection\n key={key}\n title={title}\n description={description}\n events={events}\n />\n );\n },\n renderAuditTimeline: ({ key, title, description, events }) => {\n return (\n <BackofficeDetailSection\n key={key}\n title={title}\n description={description}\n >\n <AuditTimeline events={events} />\n </BackofficeDetailSection>\n );\n },\n renderRelations: ({ key, title, items }) => {\n return (\n <BackofficeRelationsSummaryGrid\n key={key}\n title={title}\n items={items}\n />\n );\n },\n renderContextStack: ({ key, title, items }) => {\n return (\n <BackofficeScopeStack key={key} title={title} items={items} />\n );\n },\n renderCustomSection: (key, title, child) => {\n return (\n <BackofficeDetailSection key={key} title={title}>\n {child}\n </BackofficeDetailSection>\n );\n },\n wrapCustomNode: (key, custom) => {\n return <div key={key}>{custom}</div>;\n },\n resolveTableColumns: (columns) => {\n return buildDataTableColumns(columns, {\n tApp,\n t,\n });\n },\n renderTable: ({ key, title, description, columns, rows }) => {\n return (\n <BackofficeDetailSection\n key={key}\n title={title}\n description={description}\n >\n <DataTable\n columns={columns}\n rows={rows}\n getRowId={(row, rowIndex) => {\n if (row != null && typeof row === 'object') {\n const record = row as Record<string, unknown>;\n const maybeId = record.id;\n if (\n typeof maybeId === 'string' &&\n maybeId.trim() !== ''\n ) {\n return maybeId;\n }\n }\n return String(rowIndex);\n }}\n />\n </BackofficeDetailSection>\n );\n },\n renderPayload: ({ key, title, description, content, format }) => {\n return (\n <BackofficeDetailSection\n key={key}\n title={title}\n description={description}\n >\n <BackofficePayloadViewer\n content={content}\n format={format}\n emptyState={t('common.notAvailable')}\n />\n </BackofficeDetailSection>\n );\n },\n renderKeyValueListSection: ({ key, title, description, items }) => {\n return (\n <BackofficeDetailSection\n key={key}\n title={title}\n description={description}\n >\n <BackofficeKeyValueList items={items} />\n </BackofficeDetailSection>\n );\n },\n });\n const blockNode = rendered[0];\n if (blockNode != null) {\n targetNodes.push(blockNode);\n }\n });\n\n const tabActionsNode =\n headerActionButtons.length > 0 ? (\n <div className={pageStyles.headerActions}>\n <div className={pageStyles.headerActionGroup}>\n {headerActionButtons}\n </div>\n </div>\n ) : null;\n\n const hasAside = secondaryNodes.length > 0;\n const contentNode = hasAside ? (\n <div className={detailLayoutStyles.layout}>\n <div className={detailLayoutStyles.primary}>{primaryNodes}</div>\n <aside className={detailLayoutStyles.secondary}>\n {secondaryNodes}\n </aside>\n </div>\n ) : (\n <div className={detailLayoutStyles.stacked}>{primaryNodes}</div>\n );\n\n return (\n <>\n {tabActionsNode}\n {contentNode}\n {activeFormAction != null &&\n isFormMutationAction(activeFormAction) && (\n <LazyBackofficeEntityActionFormDialog\n isOpen\n action={activeFormAction}\n node={view}\n onClose={() => {\n setActiveFormActionId(null);\n }}\n />\n )}\n </>\n );\n }}\n />\n );\n};\n\nexport const BackofficeEntityDetailPage = ({\n prepared,\n}: BackofficeEntityDetailPageProps): JSX.Element => {\n return (\n <BackofficeEntityDetailPageContent\n config={prepared.pageConfig}\n prepared={prepared}\n />\n );\n};\n\nexport default BackofficeEntityDetailPage;\n"],"mappings":"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"}
|
|
@@ -81,7 +81,7 @@ var I = (e, t, n, r) => {
|
|
|
81
81
|
m
|
|
82
82
|
]), G = w((e) => p.getRowId(e), [p]), { state: K, pushState: q } = c(a), J = u(T(() => l(a.id), [a.id])), Y = w(() => {
|
|
83
83
|
B((e) => e + 1), V.current?.();
|
|
84
|
-
}, []), X = T(() => a.listActions ?? [], [a.listActions]), Z = T(() => X.filter((e) => e.isVisible == null
|
|
84
|
+
}, []), X = T(() => a.listActions ?? [], [a.listActions]), Z = T(() => X.filter((e) => e.isVisible == null || e.isVisible(null)), [X]), Q = T(() => {
|
|
85
85
|
if (Z.length !== 0) return /* @__PURE__ */ O("div", {
|
|
86
86
|
className: S,
|
|
87
87
|
children: Z.map((e, t) => {
|