@plumile/backoffice-react 0.1.193 → 0.1.195

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/lib/esm/auth/AuthRefreshNotice.js.map +1 -1
  2. package/lib/esm/auth/TotpQrCode.js +8 -5
  3. package/lib/esm/auth/TotpQrCode.js.map +1 -1
  4. package/lib/esm/auth/login/AuthPanel.js.map +1 -1
  5. package/lib/esm/auth/login/EmailCapturePanel.js +4 -4
  6. package/lib/esm/auth/login/EmailCapturePanel.js.map +1 -1
  7. package/lib/esm/auth/login/LoginFlow.js.map +1 -1
  8. package/lib/esm/auth/login/MethodChooser.js.map +1 -1
  9. package/lib/esm/auth/login/MfaChallengeForm.js +4 -4
  10. package/lib/esm/auth/login/MfaChallengeForm.js.map +1 -1
  11. package/lib/esm/auth/login/OidcButtons.js.map +1 -1
  12. package/lib/esm/auth/login/PasskeyLoginForm.js +4 -4
  13. package/lib/esm/auth/login/PasskeyLoginForm.js.map +1 -1
  14. package/lib/esm/auth/login/PasswordLoginPanel.js.map +1 -1
  15. package/lib/esm/auth/pages/AcceptInvitationScreen.js.map +1 -1
  16. package/lib/esm/auth/pages/PasswordResetCompleteScreen.js.map +1 -1
  17. package/lib/esm/auth/pages/PasswordResetRequestScreen.js.map +1 -1
  18. package/lib/esm/auth/pages/VerifyEmailScreen.js.map +1 -1
  19. package/lib/esm/components/backoffice/actions/BackofficeEntityActionFormDialog.js +0 -1
  20. package/lib/esm/components/backoffice/actions/BackofficeEntityActionFormDialog.js.map +1 -1
  21. package/lib/esm/components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js.map +1 -1
  22. package/lib/esm/components/backoffice/billing/BackofficeBillingUsageChart.js.map +1 -1
  23. package/lib/esm/components/backoffice/columns/buildDataTableColumns.js +16 -11
  24. package/lib/esm/components/backoffice/columns/buildDataTableColumns.js.map +1 -1
  25. package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js.map +1 -1
  26. package/lib/esm/components/backoffice/detail/BackofficeDetailErrorList.js.map +1 -1
  27. package/lib/esm/components/backoffice/detail/BackofficeEntitySummaryHeader.js.map +1 -1
  28. package/lib/esm/components/backoffice/detail/BackofficeLifecycleTimelineSection.js.map +1 -1
  29. package/lib/esm/components/backoffice/detail/BackofficeRelationsSummaryGrid.js.map +1 -1
  30. package/lib/esm/components/backoffice/detail/BackofficeTokenUsageBreakdown.js.map +1 -1
  31. package/lib/esm/components/backoffice/detail/BackofficeUsageCostBreakdown.js.map +1 -1
  32. package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js +2 -2
  33. package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js.map +1 -1
  34. package/lib/esm/components/backoffice/filters/DeferredFilterSearchInput.js.map +1 -1
  35. package/lib/esm/components/backoffice/filters/EntityFilterValue.js.map +1 -1
  36. package/lib/esm/components/backoffice/filters/EntityIdFilterField.js.map +1 -1
  37. package/lib/esm/components/backoffice/hub/BackofficeHubTemplate.js.map +1 -1
  38. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js +4 -1
  39. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js.map +1 -1
  40. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js.map +1 -1
  41. package/lib/esm/components/backoffice/layout/buildSidebarSections.js.map +1 -1
  42. package/lib/esm/components/backoffice/layout/sidebarUtils.js.map +1 -1
  43. package/lib/esm/components/backoffice/links/BackofficeInlineLink.js.map +1 -1
  44. package/lib/esm/components/backoffice/links/BackofficeLink.js.map +1 -1
  45. package/lib/esm/components/backoffice/links/BackofficeLinkContent.js.map +1 -1
  46. package/lib/esm/components/backoffice/links/BackofficeLinkLabel.js.map +1 -1
  47. package/lib/esm/components/backoffice/list/RowFlagsCell.js.map +1 -1
  48. package/lib/esm/components/backoffice/overview/BackofficeOverviewLayout.js.map +1 -1
  49. package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js +9 -9
  50. package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js.map +1 -1
  51. package/lib/esm/components/backoffice/refs/BackofficeEntityIdRef.js.map +1 -1
  52. package/lib/esm/components/backoffice/refs/BackofficeEntityLink.js.map +1 -1
  53. package/lib/esm/components/backoffice/refs/BackofficeLazyEntityCount.js.map +1 -1
  54. package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js +4 -4
  55. package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js.map +1 -1
  56. package/lib/esm/components/backoffice/routing/BackofficeContentBoundary.js.map +1 -1
  57. package/lib/esm/components/backoffice/routing/BackofficeContentError.js.map +1 -1
  58. package/lib/esm/components/backoffice/routing/BackofficeContentFallback.js.map +1 -1
  59. package/lib/esm/components/backoffice/routing/BackofficeRoutePendingBar.js.map +1 -1
  60. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityDetailNotFound.js +8 -5
  61. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityDetailNotFound.js.map +1 -1
  62. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js +306 -297
  63. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js.map +1 -1
  64. package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js.map +1 -1
  65. package/lib/esm/components/backoffice/shared/BackofficeFilterableCell.js.map +1 -1
  66. package/lib/esm/components/backoffice/shared/BackofficeFormattedCurrency.js.map +1 -1
  67. package/lib/esm/components/backoffice/shared/BackofficeFormattedNumber.js.map +1 -1
  68. package/lib/esm/components/backoffice/shared/BackofficeInlineFilterRow.js.map +1 -1
  69. package/lib/esm/components/backoffice/tools/BackofficeToolsDocPanel.js.map +1 -1
  70. package/lib/esm/components/backoffice/tools/BackofficeToolsErrorFallback.js.map +1 -1
  71. package/lib/esm/components/backoffice/tools/BackofficeToolsJsonForm.js.map +1 -1
  72. package/lib/esm/components/backoffice/tools/BackofficeToolsQueryBoundary.js +11 -11
  73. package/lib/esm/components/backoffice/tools/BackofficeToolsQueryBoundary.js.map +1 -1
  74. package/lib/esm/node_modules/relay-test-utils/lib/RelayModernMockEnvironment.js +1 -1
  75. package/lib/esm/node_modules/relay-test-utils/lib/RelayModernMockEnvironment.js.map +1 -1
  76. package/lib/esm/pages/BackofficeAcceptInvitationPage.js +8 -8
  77. package/lib/esm/pages/BackofficeAcceptInvitationPage.js.map +1 -1
  78. package/lib/esm/pages/BackofficeDashboardPage.js +4 -4
  79. package/lib/esm/pages/BackofficeDashboardPage.js.map +1 -1
  80. package/lib/esm/pages/BackofficeDashboardShellPage.js.map +1 -1
  81. package/lib/esm/pages/BackofficeDashboardWidgetContent.js +62 -43
  82. package/lib/esm/pages/BackofficeDashboardWidgetContent.js.map +1 -1
  83. package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js +4 -4
  84. package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js.map +1 -1
  85. package/lib/esm/pages/BackofficeEntityDetailPage.js +95 -89
  86. package/lib/esm/pages/BackofficeEntityDetailPage.js.map +1 -1
  87. package/lib/esm/pages/BackofficeEntityDetailPage.view-helpers.js +2 -2
  88. package/lib/esm/pages/BackofficeEntityDetailPage.view-helpers.js.map +1 -1
  89. package/lib/esm/pages/BackofficeEntityDetailPageConfigPage.js.map +1 -1
  90. package/lib/esm/pages/BackofficeEntityListDataPage.js +13 -11
  91. package/lib/esm/pages/BackofficeEntityListDataPage.js.map +1 -1
  92. package/lib/esm/pages/BackofficeEntityListPage.js +80 -76
  93. package/lib/esm/pages/BackofficeEntityListPage.js.map +1 -1
  94. package/lib/esm/pages/BackofficeEntityListShellPage.js.map +1 -1
  95. package/lib/esm/pages/BackofficeHubPage.js.map +1 -1
  96. package/lib/esm/pages/BackofficeLayoutPage.js +56 -53
  97. package/lib/esm/pages/BackofficeLayoutPage.js.map +1 -1
  98. package/lib/esm/pages/BackofficeLoginPage.js +26 -26
  99. package/lib/esm/pages/BackofficeLoginPage.js.map +1 -1
  100. package/lib/esm/pages/BackofficePasswordResetCompletePage.js +36 -36
  101. package/lib/esm/pages/BackofficePasswordResetCompletePage.js.map +1 -1
  102. package/lib/esm/pages/BackofficePasswordResetRequestPage.js +3 -3
  103. package/lib/esm/pages/BackofficePasswordResetRequestPage.js.map +1 -1
  104. package/lib/esm/pages/BackofficeToolShellPage.js.map +1 -1
  105. package/lib/esm/pages/BackofficeVerifyEmailPage.js +36 -36
  106. package/lib/esm/pages/BackofficeVerifyEmailPage.js.map +1 -1
  107. package/lib/esm/pages/detail/BackofficeEntityDetailManifestFallback.js.map +1 -1
  108. package/lib/esm/provider/BackofficeProvider.js +3 -2
  109. package/lib/esm/provider/BackofficeProvider.js.map +1 -1
  110. package/lib/esm/relay/envHelpers.js.map +1 -1
  111. package/lib/esm/router/createBackofficeRoutes.js +2 -2
  112. package/lib/esm/router/createBackofficeRoutes.js.map +1 -1
  113. package/lib/esm/storybook/relay/RelayStory.js +4 -1
  114. package/lib/esm/storybook/relay/RelayStory.js.map +1 -1
  115. package/lib/esm/subscriptions/useCursorResumableSubscription.js +4 -4
  116. package/lib/esm/subscriptions/useCursorResumableSubscription.js.map +1 -1
  117. package/package.json +20 -20
@@ -1 +1 @@
1
- {"version":3,"file":"BackofficeEntityLink.js","names":[],"sources":["../../../../../src/components/backoffice/refs/BackofficeEntityLink.tsx"],"sourcesContent":["import { type JSX } from 'react';\nimport type { BackofficeRuntimeResolvedListFacetConfig } from '@plumile/backoffice-core/types.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\nimport type { BackofficeLinkTarget } from '../links/types.js';\nimport { BackofficeFilterAction } from '../filters/BackofficeFilterAction.js';\nimport { BackofficeFilterableCell } from '../shared/BackofficeFilterableCell.js';\n\nexport type BackofficeEntityLinkProps = {\n id: string | null | undefined;\n label?: string | null | undefined;\n entity: string;\n filterWhereKey?: string;\n filterValue?: string;\n filterPath?: readonly string[];\n filterLabel?: string;\n listConfig?: BackofficeRuntimeResolvedListFacetConfig;\n};\n\nexport const BackofficeEntityLink = ({\n id,\n label,\n entity,\n filterWhereKey,\n filterValue,\n filterPath,\n filterLabel,\n listConfig,\n}: BackofficeEntityLinkProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n let resolvedId = '';\n if (typeof id === 'string') {\n resolvedId = id.trim();\n }\n if (resolvedId === '') {\n return <span>{t('common.notAvailable')}</span>;\n }\n\n let filterAction: JSX.Element | null = null;\n if (filterWhereKey != null) {\n const resolvedFilterValue = filterValue ?? resolvedId;\n filterAction = (\n <BackofficeFilterAction\n whereKey={filterWhereKey}\n value={resolvedFilterValue}\n path={filterPath}\n label={filterLabel}\n listConfig={listConfig}\n />\n );\n }\n\n const target = {\n kind: 'entity-detail',\n entityId: entity,\n id: resolvedId,\n } as BackofficeLinkTarget;\n let resolvedLabel = label ?? '';\n if (resolvedLabel.trim() === '' || resolvedLabel.trim() === resolvedId) {\n resolvedLabel = t('actions.view');\n }\n\n return (\n <BackofficeFilterableCell\n filterAction={filterAction}\n target={target}\n title={resolvedLabel}\n openInNewTab\n >\n {resolvedLabel}\n </BackofficeFilterableCell>\n );\n};\n\nexport default BackofficeEntityLink;\n"],"mappings":";;;;;AAmBA,IAAa,KAAwB,EACnC,OACA,UACA,WACA,mBACA,gBACA,eACA,gBACA,oBAC4C;CAC5C,IAAM,EAAE,SAAM,EAA8B,GACxC,IAAa;CAIjB,IAHI,OAAO,KAAO,aAChB,IAAa,EAAG,KAAK,IAEnB,MAAe,IACjB,OAAO,kBAAC,QAAD,EAAA,UAAO,EAAE,qBAAqB,EAAQ,CAAA;CAG/C,IAAI,IAAmC;CACvC,AAAI,KAAkB,SAEpB,IACE,kBAAC,GAAD;EACE,UAAU;EACV,OAJwB,KAAe;EAKvC,MAAM;EACN,OAAO;EACK;CACb,CAAA;CAIL,IAAM,IAAS;EACb,MAAM;EACN,UAAU;EACV,IAAI;CACN,GACI,IAAgB,KAAS;CAK7B,QAJI,EAAc,KAAK,MAAM,MAAM,EAAc,KAAK,MAAM,OAC1D,IAAgB,EAAE,cAAc,IAIhC,kBAAC,GAAD;EACgB;EACN;EACR,OAAO;EACP,cAAA;YAEC;CACuB,CAAA;AAE9B"}
1
+ {"version":3,"file":"BackofficeEntityLink.js","names":[],"sources":["../../../../../src/components/backoffice/refs/BackofficeEntityLink.tsx"],"sourcesContent":["import { type JSX } from 'react';\nimport type { BackofficeRuntimeResolvedListFacetConfig } from '@plumile/backoffice-core/types.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\nimport type { BackofficeLinkTarget } from '../links/types.js';\nimport { BackofficeFilterAction } from '../filters/BackofficeFilterAction.js';\nimport { BackofficeFilterableCell } from '../shared/BackofficeFilterableCell.js';\n\nexport type BackofficeEntityLinkProps = {\n id: string | null | undefined;\n label?: string | null | undefined;\n entity: string;\n filterWhereKey?: string;\n filterValue?: string;\n filterPath?: readonly string[];\n filterLabel?: string;\n listConfig?: BackofficeRuntimeResolvedListFacetConfig;\n};\n\nexport const BackofficeEntityLink = ({\n id,\n label,\n entity,\n filterWhereKey,\n filterValue,\n filterPath,\n filterLabel,\n listConfig,\n}: BackofficeEntityLinkProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n let resolvedId = '';\n if (typeof id === 'string') {\n resolvedId = id.trim();\n }\n if (resolvedId === '') {\n return <span>{t('common.notAvailable')}</span>;\n }\n\n let filterAction: JSX.Element | null = null;\n if (filterWhereKey != null) {\n const resolvedFilterValue = filterValue ?? resolvedId;\n filterAction = (\n <BackofficeFilterAction\n whereKey={filterWhereKey}\n value={resolvedFilterValue}\n path={filterPath}\n label={filterLabel}\n listConfig={listConfig}\n />\n );\n }\n\n const target = {\n kind: 'entity-detail',\n entityId: entity,\n id: resolvedId,\n } as BackofficeLinkTarget;\n let resolvedLabel = label ?? '';\n if (resolvedLabel.trim() === '' || resolvedLabel.trim() === resolvedId) {\n resolvedLabel = t('actions.view');\n }\n\n return (\n <BackofficeFilterableCell\n filterAction={filterAction}\n target={target}\n title={resolvedLabel}\n openInNewTab\n >\n {resolvedLabel}\n </BackofficeFilterableCell>\n );\n};\n\nexport default BackofficeEntityLink;\n"],"mappings":";;;;;AAmBA,IAAa,KAAwB,EACnC,OACA,UACA,WACA,mBACA,gBACA,eACA,gBACA,oBAC4C;CAC5C,IAAM,EAAE,SAAM,EAA8B,GACxC,IAAa;CAIjB,IAHI,OAAO,KAAO,aAChB,IAAa,EAAG,KAAK,IAEnB,MAAe,IACjB,OAAO,kBAAC,QAAD,EAAA,UAAO,EAAE,qBAAqB,EAAQ,CAAA;CAG/C,IAAI,IAAmC;CACvC,AAAI,KAAkB,SAEpB,IACE,kBAAC,GAAD;EACE,UAAU;EACV,OAJwB,KAAe;EAKvC,MAAM;EACN,OAAO;EACK;CACb,CAAA;CAIL,IAAM,IAAS;EACb,MAAM;EACN,UAAU;EACV,IAAI;CACN,GACI,IAAgB,KAAS;CAK7B,QAJI,EAAc,KAAK,MAAM,MAAM,EAAc,KAAK,MAAM,OAC1D,IAAgB,EAAE,cAAc,IAIhC,kBAAC,GAAD;EACgB;EACN;EACR,OAAO;EACP,cAAA;EAEC,UAAA;CACuB,CAAA;AAE9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"BackofficeLazyEntityCount.js","names":[],"sources":["../../../../../src/components/backoffice/refs/BackofficeLazyEntityCount.tsx"],"sourcesContent":["import { Suspense, type JSX, type ReactNode } from 'react';\nimport { useLazyLoadQuery } from 'react-relay';\nimport type { OperationType } from 'relay-runtime';\n\nimport type { BackofficeRuntimeEntityCountConfig } from '@plumile/backoffice-core/types.js';\n\nimport { useBackofficeListEntitiesLoader } from '../../../provider/useBackofficeEntityLoader.js';\nimport { BackofficeErrorBoundary } from '../errors/BackofficeErrorBoundary.js';\n\nconst COUNT_FETCH_POLICY = 'store-or-network' as const;\n\nexport type BackofficeLazyEntityCountProps<\n Where extends Record<string, unknown> = Record<string, unknown>,\n> = {\n entity: string;\n where: Where | null;\n loadingFallback: ReactNode;\n errorFallback?: ReactNode;\n};\n\ntype BackofficeEntityCountValueProps<\n Where extends Record<string, unknown> = Record<string, unknown>,\n> = {\n count: BackofficeRuntimeEntityCountConfig<Where>;\n where: Where | null;\n fetchKey?: string | number;\n children?: (value: number) => ReactNode;\n};\n\nexport type BackofficeLazyEntityCountLabelProps<\n Where extends Record<string, unknown> = Record<string, unknown>,\n> = BackofficeEntityCountValueProps<Where> & {\n loadingFallback: ReactNode;\n errorFallback?: ReactNode;\n};\n\nconst BackofficeEntityCountValue = <\n Where extends Record<string, unknown> = Record<string, unknown>,\n>({\n count,\n where,\n fetchKey,\n children,\n}: BackofficeEntityCountValueProps<Where>): JSX.Element | null => {\n const variables = count.buildVariables({ where });\n const data = useLazyLoadQuery<OperationType>(count.query, variables, {\n fetchPolicy: COUNT_FETCH_POLICY,\n fetchKey,\n });\n const value = count.getCount(data);\n if (value == null) {\n return null;\n }\n if (children == null) {\n return <>{value}</>;\n }\n return <>{children(value)}</>;\n};\n\nexport const BackofficeLazyEntityCountLabel = <\n Where extends Record<string, unknown> = Record<string, unknown>,\n>({\n loadingFallback,\n errorFallback = null,\n ...props\n}: BackofficeLazyEntityCountLabelProps<Where>): JSX.Element => {\n return (\n <BackofficeErrorBoundary\n fallback={() => {\n return <>{errorFallback}</>;\n }}\n >\n <Suspense fallback={loadingFallback}>\n <BackofficeEntityCountValue {...props} />\n </Suspense>\n </BackofficeErrorBoundary>\n );\n};\n\nconst BackofficeLazyEntityCountBody = ({\n entity,\n loadingFallback,\n where,\n}: BackofficeLazyEntityCountProps): JSX.Element | null => {\n const relatedEntitiesState = useBackofficeListEntitiesLoader([entity]);\n if (relatedEntitiesState.status !== 'loaded') {\n return <>{loadingFallback}</>;\n }\n\n const config = relatedEntitiesState.modules[entity]?.config;\n if (config == null) {\n return null;\n }\n\n return <BackofficeEntityCountValue count={config.list.count} where={where} />;\n};\n\nexport const BackofficeLazyEntityCount = ({\n entity,\n errorFallback = null,\n loadingFallback,\n where,\n}: BackofficeLazyEntityCountProps): JSX.Element | null => {\n return (\n <BackofficeErrorBoundary\n fallback={() => {\n return <>{errorFallback}</>;\n }}\n >\n <Suspense fallback={loadingFallback}>\n <BackofficeLazyEntityCountBody\n entity={entity}\n loadingFallback={loadingFallback}\n where={where}\n />\n </Suspense>\n </BackofficeErrorBoundary>\n );\n};\n\nexport default BackofficeLazyEntityCount;\n"],"mappings":";;;;;;AASA,IAAM,IAAqB,oBA2BrB,KAEJ,EACA,UACA,UACA,aACA,kBACgE;CAChE,IAAM,IAAY,EAAM,eAAe,EAAE,SAAM,CAAC,GAC1C,IAAO,EAAgC,EAAM,OAAO,GAAW;EACnE,aAAa;EACb;CACF,CAAC,GACK,IAAQ,EAAM,SAAS,CAAI;CAOjC,OANI,KAAS,OACJ,OAEL,KAAY,OACP,kBAAA,GAAA,EAAA,UAAG,EAAQ,CAAA,IAEb,kBAAA,GAAA,EAAA,UAAG,EAAS,CAAK,EAAI,CAAA;AAC9B,GAEa,KAEX,EACA,oBACA,mBAAgB,MAChB,GAAG,QAGD,kBAAC,GAAD;CACE,gBACS,kBAAA,GAAA,EAAA,UAAG,EAAgB,CAAA;WAG5B,kBAAC,GAAD;EAAU,UAAU;YAClB,kBAAC,GAAD,EAA4B,GAAI,EAAQ,CAAA;CAChC,CAAA;AACa,CAAA,GAIvB,KAAiC,EACrC,WACA,oBACA,eACwD;CACxD,IAAM,IAAuB,EAAgC,CAAC,CAAM,CAAC;CACrE,IAAI,EAAqB,WAAW,UAClC,OAAO,kBAAA,GAAA,EAAA,UAAG,EAAkB,CAAA;CAG9B,IAAM,IAAS,EAAqB,QAAQ,EAAO,EAAE;CAKrD,OAJI,KAAU,OACL,OAGF,kBAAC,GAAD;EAA4B,OAAO,EAAO,KAAK;EAAc;CAAQ,CAAA;AAC9E,GAEa,KAA6B,EACxC,WACA,mBAAgB,MAChB,oBACA,eAGE,kBAAC,GAAD;CACE,gBACS,kBAAA,GAAA,EAAA,UAAG,EAAgB,CAAA;WAG5B,kBAAC,GAAD;EAAU,UAAU;YAClB,kBAAC,GAAD;GACU;GACS;GACV;EACR,CAAA;CACO,CAAA;AACa,CAAA"}
1
+ {"version":3,"file":"BackofficeLazyEntityCount.js","names":[],"sources":["../../../../../src/components/backoffice/refs/BackofficeLazyEntityCount.tsx"],"sourcesContent":["import { Suspense, type JSX, type ReactNode } from 'react';\nimport { useLazyLoadQuery } from 'react-relay';\nimport type { OperationType } from 'relay-runtime';\n\nimport type { BackofficeRuntimeEntityCountConfig } from '@plumile/backoffice-core/types.js';\n\nimport { useBackofficeListEntitiesLoader } from '../../../provider/useBackofficeEntityLoader.js';\nimport { BackofficeErrorBoundary } from '../errors/BackofficeErrorBoundary.js';\n\nconst COUNT_FETCH_POLICY = 'store-or-network' as const;\n\nexport type BackofficeLazyEntityCountProps<\n Where extends Record<string, unknown> = Record<string, unknown>,\n> = {\n entity: string;\n where: Where | null;\n loadingFallback: ReactNode;\n errorFallback?: ReactNode;\n};\n\ntype BackofficeEntityCountValueProps<\n Where extends Record<string, unknown> = Record<string, unknown>,\n> = {\n count: BackofficeRuntimeEntityCountConfig<Where>;\n where: Where | null;\n fetchKey?: string | number;\n children?: (value: number) => ReactNode;\n};\n\nexport type BackofficeLazyEntityCountLabelProps<\n Where extends Record<string, unknown> = Record<string, unknown>,\n> = BackofficeEntityCountValueProps<Where> & {\n loadingFallback: ReactNode;\n errorFallback?: ReactNode;\n};\n\nconst BackofficeEntityCountValue = <\n Where extends Record<string, unknown> = Record<string, unknown>,\n>({\n count,\n where,\n fetchKey,\n children,\n}: BackofficeEntityCountValueProps<Where>): JSX.Element | null => {\n const variables = count.buildVariables({ where });\n const data = useLazyLoadQuery<OperationType>(count.query, variables, {\n fetchPolicy: COUNT_FETCH_POLICY,\n fetchKey,\n });\n const value = count.getCount(data);\n if (value == null) {\n return null;\n }\n if (children == null) {\n return <>{value}</>;\n }\n return <>{children(value)}</>;\n};\n\nexport const BackofficeLazyEntityCountLabel = <\n Where extends Record<string, unknown> = Record<string, unknown>,\n>({\n loadingFallback,\n errorFallback = null,\n ...props\n}: BackofficeLazyEntityCountLabelProps<Where>): JSX.Element => {\n return (\n <BackofficeErrorBoundary\n fallback={() => {\n return <>{errorFallback}</>;\n }}\n >\n <Suspense fallback={loadingFallback}>\n <BackofficeEntityCountValue {...props} />\n </Suspense>\n </BackofficeErrorBoundary>\n );\n};\n\nconst BackofficeLazyEntityCountBody = ({\n entity,\n loadingFallback,\n where,\n}: BackofficeLazyEntityCountProps): JSX.Element | null => {\n const relatedEntitiesState = useBackofficeListEntitiesLoader([entity]);\n if (relatedEntitiesState.status !== 'loaded') {\n return <>{loadingFallback}</>;\n }\n\n const config = relatedEntitiesState.modules[entity]?.config;\n if (config == null) {\n return null;\n }\n\n return <BackofficeEntityCountValue count={config.list.count} where={where} />;\n};\n\nexport const BackofficeLazyEntityCount = ({\n entity,\n errorFallback = null,\n loadingFallback,\n where,\n}: BackofficeLazyEntityCountProps): JSX.Element | null => {\n return (\n <BackofficeErrorBoundary\n fallback={() => {\n return <>{errorFallback}</>;\n }}\n >\n <Suspense fallback={loadingFallback}>\n <BackofficeLazyEntityCountBody\n entity={entity}\n loadingFallback={loadingFallback}\n where={where}\n />\n </Suspense>\n </BackofficeErrorBoundary>\n );\n};\n\nexport default BackofficeLazyEntityCount;\n"],"mappings":";;;;;;AASA,IAAM,IAAqB,oBA2BrB,KAEJ,EACA,UACA,UACA,aACA,kBACgE;CAChE,IAAM,IAAY,EAAM,eAAe,EAAE,SAAM,CAAC,GAC1C,IAAO,EAAgC,EAAM,OAAO,GAAW;EACnE,aAAa;EACb;CACF,CAAC,GACK,IAAQ,EAAM,SAAS,CAAI;CAOjC,OANI,KAAS,OACJ,OAEL,KAAY,OACP,kBAAA,GAAA,EAAA,UAAG,EAAQ,CAAA,IAEb,kBAAA,GAAA,EAAA,UAAG,EAAS,CAAK,EAAI,CAAA;AAC9B,GAEa,KAEX,EACA,oBACA,mBAAgB,MAChB,GAAG,QAGD,kBAAC,GAAD;CACE,gBACS,kBAAA,GAAA,EAAA,UAAG,EAAgB,CAAA;CAG5B,UAAA,kBAAC,GAAD;EAAU,UAAU;EAClB,UAAA,kBAAC,GAAD,EAA4B,GAAI,EAAQ,CAAA;CAChC,CAAA;AACa,CAAA,GAIvB,KAAiC,EACrC,WACA,oBACA,eACwD;CACxD,IAAM,IAAuB,EAAgC,CAAC,CAAM,CAAC;CACrE,IAAI,EAAqB,WAAW,UAClC,OAAO,kBAAA,GAAA,EAAA,UAAG,EAAkB,CAAA;CAG9B,IAAM,IAAS,EAAqB,QAAQ,EAAO,EAAE;CAKrD,OAJI,KAAU,OACL,OAGF,kBAAC,GAAD;EAA4B,OAAO,EAAO,KAAK;EAAc;CAAQ,CAAA;AAC9E,GAEa,KAA6B,EACxC,WACA,mBAAgB,MAChB,oBACA,eAGE,kBAAC,GAAD;CACE,gBACS,kBAAA,GAAA,EAAA,UAAG,EAAgB,CAAA;CAG5B,UAAA,kBAAC,GAAD;EAAU,UAAU;EAClB,UAAA,kBAAC,GAAD;GACU;GACS;GACV;EACR,CAAA;CACO,CAAA;AACa,CAAA"}
@@ -31,10 +31,10 @@ var h = ({ count: h, entity: g, where: _ }) => {
31
31
  entityId: g,
32
32
  state: { where: _ }
33
33
  }, j = async (e) => {
34
- let t = m((await S.loadListEntity(g)).config, { where: _ }), n = "";
35
- t.search !== "" && (n = `?${t.search}`), e.push({
36
- pathname: t.pathname,
37
- search: n,
34
+ let t = await S.loadListEntity(g), n = m(t.config, { where: _ }), r = "";
35
+ n.search !== "" && (r = `?${n.search}`), e.push({
36
+ pathname: n.pathname,
37
+ search: r,
38
38
  hash: ""
39
39
  });
40
40
  };
@@ -1 +1 @@
1
- {"version":3,"file":"BackofficeRelatedCountLink.js","names":[],"sources":["../../../../../src/components/backoffice/refs/BackofficeRelatedCountLink.tsx"],"sourcesContent":["import { useContext, type JSX, type MouseEvent, type ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport RoutingContext from '@plumile/router/routing/RoutingContext.js';\n\nimport { buildBackofficeListLink } from '@plumile/backoffice-core/state/buildListHref.js';\nimport { Spinner } from '@plumile/ui/backoffice/atoms/spinner/Spinner.js';\nimport { useBackofficeConfig } from '../../../provider/BackofficeConfigContext.js';\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\nimport { BackofficeInlineLink } from '../links/BackofficeInlineLink.js';\nimport { resolveBackofficeLink } from '../links/resolveBackofficeLink.js';\nimport type { BackofficeLinkTarget } from '../links/types.js';\nimport { BackofficeLazyEntityCount } from './BackofficeLazyEntityCount.js';\n\nimport * as styles from './backofficeRelatedCountLink.css.js';\n\nexport type BackofficeRelatedCountLinkProps<\n Where extends Record<string, unknown> = Record<string, unknown>,\n> = {\n count?: number | null | undefined;\n entity: string;\n where: Where;\n};\n\nexport const BackofficeRelatedCountLink = <\n Where extends Record<string, unknown> = Record<string, unknown>,\n>({\n count,\n entity,\n where,\n}: BackofficeRelatedCountLinkProps<Where>): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { entities, entityManifest, entityRegistry, sidebar } =\n useBackofficeConfig();\n const routing = useContext(RoutingContext);\n const targetManifest = entities[entity];\n if (targetManifest == null) {\n return <span>{count ?? 0}</span>;\n }\n const entityLabel = targetManifest.label(tApp);\n const actionLabel = t('relations.openFilteredList', {\n label: entityLabel,\n });\n const loadingLabel = t('common.loading');\n const loadedEntity = entityRegistry.getLoadedListEntity(entity);\n let countNode: ReactNode = (\n <BackofficeLazyEntityCount\n entity={entity}\n loadingFallback={\n <span className={styles.countLoading}>\n <Spinner ariaLabel={loadingLabel} size={12} />\n </span>\n }\n where={where}\n />\n );\n if (typeof count === 'number' && Number.isFinite(count)) {\n countNode = count;\n }\n const target = {\n kind: 'entity-list',\n entityId: entity,\n state: { where },\n } as BackofficeLinkTarget;\n\n const navigateWithLoadedEntity = async (\n history: NonNullable<typeof routing>['history'],\n ): Promise<void> => {\n const listEntity = await entityRegistry.loadListEntity(entity);\n const next = buildBackofficeListLink(listEntity.config, { where });\n\n let search = '';\n if (next.search !== '') {\n search = `?${next.search}`;\n }\n\n history.push({\n pathname: next.pathname,\n search,\n hash: '',\n });\n };\n\n const handleClick = (event: MouseEvent<HTMLAnchorElement>) => {\n if (\n loadedEntity != null ||\n routing == null ||\n event.defaultPrevented ||\n event.button !== 0 ||\n event.metaKey ||\n event.altKey ||\n event.ctrlKey ||\n event.shiftKey\n ) {\n return;\n }\n\n event.preventDefault();\n const { history } = routing;\n navigateWithLoadedEntity(history).catch(() => {\n const link = resolveBackofficeLink({\n target,\n manifest: entityManifest,\n sidebar,\n tApp,\n });\n const fallbackUrl = new URL(link.href, window.location.origin);\n history.push({\n pathname: fallbackUrl.pathname,\n search: fallbackUrl.search,\n hash: fallbackUrl.hash,\n });\n });\n };\n\n return (\n <BackofficeInlineLink\n target={target}\n className={styles.link}\n title={actionLabel}\n ariaLabel={actionLabel}\n onClick={handleClick}\n endAdornment={\n <span className={styles.icon} aria-hidden=\"true\">\n ›\n </span>\n }\n >\n <span className={styles.count}>{countNode}</span>\n </BackofficeInlineLink>\n );\n};\n\nexport default BackofficeRelatedCountLink;\n"],"mappings":";;;;;;;;;;;;;AAuBA,IAAa,KAEX,EACA,OAAA,GACA,WACA,eACyD;CACzD,IAAM,EAAE,GAAG,MAAS,EAAe,GAC7B,EAAE,SAAM,EAA8B,GACtC,EAAE,aAAU,mBAAgB,mBAAgB,eAChD,EAAoB,GAChB,IAAU,EAAW,CAAc,GACnC,IAAiB,EAAS;CAChC,IAAI,KAAkB,MACpB,OAAO,kBAAC,QAAD,EAAA,UAAO,KAAS,EAAQ,CAAA;CAGjC,IAAM,IAAc,EAAE,8BAA8B,EAClD,OAFkB,EAAe,MAAM,CAEhC,EACT,CAAC,GACK,IAAe,EAAE,gBAAgB,GACjC,IAAe,EAAe,oBAAoB,CAAM,GAC1D,IACF,kBAAC,GAAD;EACU;EACR,iBACE,kBAAC,QAAD;GAAM,WAAW;aACf,kBAAC,GAAD;IAAS,WAAW;IAAc,MAAM;GAAK,CAAA;EACzC,CAAA;EAED;CACR,CAAA;CAEH,AAAI,OAAO,KAAU,YAAY,OAAO,SAAS,CAAK,MACpD,IAAY;CAEd,IAAM,IAAS;EACb,MAAM;EACN,UAAU;EACV,OAAO,EAAE,SAAM;CACjB,GAEM,IAA2B,OAC/B,MACkB;EAElB,IAAM,IAAO,GAAwB,MADZ,EAAe,eAAe,CAAM,EAAA,CACb,QAAQ,EAAE,SAAM,CAAC,GAE7D,IAAS;EAKb,AAJI,EAAK,WAAW,OAClB,IAAS,IAAI,EAAK,WAGpB,EAAQ,KAAK;GACX,UAAU,EAAK;GACf;GACA,MAAM;EACR,CAAC;CACH;CAkCA,OACE,kBAAC,GAAD;EACU;EACR,WAAW;EACX,OAAO;EACP,WAAW;EACX,UAtCiB,MAAyC;GAC5D,IACE,KAAgB,QAChB,KAAW,QACX,EAAM,oBACN,EAAM,WAAW,KACjB,EAAM,WACN,EAAM,UACN,EAAM,WACN,EAAM,UAEN;GAGF,EAAM,eAAe;GACrB,IAAM,EAAE,eAAY;GACpB,EAAyB,CAAO,CAAC,CAAC,YAAY;IAC5C,IAAM,IAAO,EAAsB;KACjC;KACA,UAAU;KACV;KACA;IACF,CAAC,GACK,IAAc,IAAI,IAAI,EAAK,MAAM,OAAO,SAAS,MAAM;IAC7D,EAAQ,KAAK;KACX,UAAU,EAAY;KACtB,QAAQ,EAAY;KACpB,MAAM,EAAY;IACpB,CAAC;GACH,CAAC;EACH;EASI,cACE,kBAAC,QAAD;GAAM,WAAW;GAAa,eAAY;aAAO;EAE3C,CAAA;YAGR,kBAAC,QAAD;GAAM,WAAW;aAAe;EAAgB,CAAA;CAC5B,CAAA;AAE1B"}
1
+ {"version":3,"file":"BackofficeRelatedCountLink.js","names":[],"sources":["../../../../../src/components/backoffice/refs/BackofficeRelatedCountLink.tsx"],"sourcesContent":["import { useContext, type JSX, type MouseEvent, type ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport RoutingContext from '@plumile/router/routing/RoutingContext.js';\n\nimport { buildBackofficeListLink } from '@plumile/backoffice-core/state/buildListHref.js';\nimport { Spinner } from '@plumile/ui/backoffice/atoms/spinner/Spinner.js';\nimport { useBackofficeConfig } from '../../../provider/BackofficeConfigContext.js';\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\nimport { BackofficeInlineLink } from '../links/BackofficeInlineLink.js';\nimport { resolveBackofficeLink } from '../links/resolveBackofficeLink.js';\nimport type { BackofficeLinkTarget } from '../links/types.js';\nimport { BackofficeLazyEntityCount } from './BackofficeLazyEntityCount.js';\n\nimport * as styles from './backofficeRelatedCountLink.css.js';\n\nexport type BackofficeRelatedCountLinkProps<\n Where extends Record<string, unknown> = Record<string, unknown>,\n> = {\n count?: number | null | undefined;\n entity: string;\n where: Where;\n};\n\nexport const BackofficeRelatedCountLink = <\n Where extends Record<string, unknown> = Record<string, unknown>,\n>({\n count,\n entity,\n where,\n}: BackofficeRelatedCountLinkProps<Where>): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { entities, entityManifest, entityRegistry, sidebar } =\n useBackofficeConfig();\n const routing = useContext(RoutingContext);\n const targetManifest = entities[entity];\n if (targetManifest == null) {\n return <span>{count ?? 0}</span>;\n }\n const entityLabel = targetManifest.label(tApp);\n const actionLabel = t('relations.openFilteredList', {\n label: entityLabel,\n });\n const loadingLabel = t('common.loading');\n const loadedEntity = entityRegistry.getLoadedListEntity(entity);\n let countNode: ReactNode = (\n <BackofficeLazyEntityCount\n entity={entity}\n loadingFallback={\n <span className={styles.countLoading}>\n <Spinner ariaLabel={loadingLabel} size={12} />\n </span>\n }\n where={where}\n />\n );\n if (typeof count === 'number' && Number.isFinite(count)) {\n countNode = count;\n }\n const target = {\n kind: 'entity-list',\n entityId: entity,\n state: { where },\n } as BackofficeLinkTarget;\n\n const navigateWithLoadedEntity = async (\n history: NonNullable<typeof routing>['history'],\n ): Promise<void> => {\n const listEntity = await entityRegistry.loadListEntity(entity);\n const next = buildBackofficeListLink(listEntity.config, { where });\n\n let search = '';\n if (next.search !== '') {\n search = `?${next.search}`;\n }\n\n history.push({\n pathname: next.pathname,\n search,\n hash: '',\n });\n };\n\n const handleClick = (event: MouseEvent<HTMLAnchorElement>) => {\n if (\n loadedEntity != null ||\n routing == null ||\n event.defaultPrevented ||\n event.button !== 0 ||\n event.metaKey ||\n event.altKey ||\n event.ctrlKey ||\n event.shiftKey\n ) {\n return;\n }\n\n event.preventDefault();\n const { history } = routing;\n navigateWithLoadedEntity(history).catch(() => {\n const link = resolveBackofficeLink({\n target,\n manifest: entityManifest,\n sidebar,\n tApp,\n });\n const fallbackUrl = new URL(link.href, window.location.origin);\n history.push({\n pathname: fallbackUrl.pathname,\n search: fallbackUrl.search,\n hash: fallbackUrl.hash,\n });\n });\n };\n\n return (\n <BackofficeInlineLink\n target={target}\n className={styles.link}\n title={actionLabel}\n ariaLabel={actionLabel}\n onClick={handleClick}\n endAdornment={\n <span className={styles.icon} aria-hidden=\"true\">\n ›\n </span>\n }\n >\n <span className={styles.count}>{countNode}</span>\n </BackofficeInlineLink>\n );\n};\n\nexport default BackofficeRelatedCountLink;\n"],"mappings":";;;;;;;;;;;;;AAuBA,IAAa,KAEX,EACA,OAAA,GACA,WACA,eACyD;CACzD,IAAM,EAAE,GAAG,MAAS,EAAe,GAC7B,EAAE,SAAM,EAA8B,GACtC,EAAE,aAAU,mBAAgB,mBAAgB,eAChD,EAAoB,GAChB,IAAU,EAAW,CAAc,GACnC,IAAiB,EAAS;CAChC,IAAI,KAAkB,MACpB,OAAO,kBAAC,QAAD,EAAA,UAAO,KAAS,EAAQ,CAAA;CAGjC,IAAM,IAAc,EAAE,8BAA8B,EAClD,OAFkB,EAAe,MAAM,CAEhC,EACT,CAAC,GACK,IAAe,EAAE,gBAAgB,GACjC,IAAe,EAAe,oBAAoB,CAAM,GAC1D,IACF,kBAAC,GAAD;EACU;EACR,iBACE,kBAAC,QAAD;GAAM,WAAW;GACf,UAAA,kBAAC,GAAD;IAAS,WAAW;IAAc,MAAM;GAAK,CAAA;EACzC,CAAA;EAED;CACR,CAAA;CAEH,AAAI,OAAO,KAAU,YAAY,OAAO,SAAS,CAAK,MACpD,IAAY;CAEd,IAAM,IAAS;EACb,MAAM;EACN,UAAU;EACV,OAAO,EAAE,SAAM;CACjB,GAEM,IAA2B,OAC/B,MACkB;EAClB,IAAM,IAAa,MAAM,EAAe,eAAe,CAAM,GACvD,IAAO,EAAwB,EAAW,QAAQ,EAAE,SAAM,CAAC,GAE7D,IAAS;EAKb,AAJI,EAAK,WAAW,OAClB,IAAS,IAAI,EAAK,WAGpB,EAAQ,KAAK;GACX,UAAU,EAAK;GACf;GACA,MAAM;EACR,CAAC;CACH;CAkCA,OACE,kBAAC,GAAD;EACU;EACR,WAAW;EACX,OAAO;EACP,WAAW;EACX,UAtCiB,MAAyC;GAC5D,IACE,KAAgB,QAChB,KAAW,QACX,EAAM,oBACN,EAAM,WAAW,KACjB,EAAM,WACN,EAAM,UACN,EAAM,WACN,EAAM,UAEN;GAGF,EAAM,eAAe;GACrB,IAAM,EAAE,eAAY;GACpB,EAAyB,CAAO,CAAC,CAAC,YAAY;IAC5C,IAAM,IAAO,EAAsB;KACjC;KACA,UAAU;KACV;KACA;IACF,CAAC,GACK,IAAc,IAAI,IAAI,EAAK,MAAM,OAAO,SAAS,MAAM;IAC7D,EAAQ,KAAK;KACX,UAAU,EAAY;KACtB,QAAQ,EAAY;KACpB,MAAM,EAAY;IACpB,CAAC;GACH,CAAC;EACH;EASI,cACE,kBAAC,QAAD;GAAM,WAAW;GAAa,eAAY;GAAO,UAAA;EAE3C,CAAA;EAGR,UAAA,kBAAC,QAAD;GAAM,WAAW;GAAe,UAAA;EAAgB,CAAA;CAC5B,CAAA;AAE1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"BackofficeContentBoundary.js","names":[],"sources":["../../../../../src/components/backoffice/routing/BackofficeContentBoundary.tsx"],"sourcesContent":["import { isValidElement, Suspense, type JSX, type ReactNode } from 'react';\nimport useLocation from '@plumile/router/routing/useLocation.js';\n\nimport { BackofficeErrorBoundary } from '../errors/BackofficeErrorBoundary.js';\n\nimport { BackofficeContentError } from './BackofficeContentError.js';\nimport { BackofficeContentFallback } from './BackofficeContentFallback.js';\nimport * as styles from './backofficeContentBoundary.css.js';\n\nexport type BackofficeContentBoundaryProps = {\n children: ReactNode;\n};\n\ntype BackofficeContentBoundaryLocation = Pick<Location, 'pathname' | 'search'>;\n\nconst typeIdentityByObject = new WeakMap<object, number>();\nlet nextTypeIdentity = 0;\n\nconst getObjectTypeIdentity = (value: object): string => {\n const cachedIdentity = typeIdentityByObject.get(value);\n if (cachedIdentity != null) {\n return `object:${cachedIdentity}`;\n }\n nextTypeIdentity += 1;\n typeIdentityByObject.set(value, nextTypeIdentity);\n return `object:${nextTypeIdentity}`;\n};\n\nconst getElementTypeIdentity = (value: unknown): string => {\n if (typeof value === 'string') {\n return `intrinsic:${value}`;\n }\n if (typeof value === 'function') {\n return getObjectTypeIdentity(value);\n }\n if (value != null && typeof value === 'object') {\n const objectValue = value;\n let displayName: string | null = null;\n if (\n 'displayName' in objectValue &&\n typeof objectValue.displayName === 'string'\n ) {\n displayName = objectValue.displayName;\n }\n if (displayName != null) {\n return `object:${displayName}`;\n }\n return getObjectTypeIdentity(objectValue);\n }\n\n return `${typeof value}:${String(value)}`;\n};\n\nconst getBackofficeContentIdentity = (value: ReactNode): string => {\n if (Array.isArray(value)) {\n return value.map(getBackofficeContentIdentity).join('|');\n }\n\n if (isValidElement(value)) {\n return [\n 'element',\n String(value.key),\n getElementTypeIdentity(value.type),\n ].join(':');\n }\n\n if (value != null && typeof value === 'object') {\n const cachedIdentity = typeIdentityByObject.get(value);\n if (cachedIdentity != null) {\n return `object:${cachedIdentity}`;\n }\n nextTypeIdentity += 1;\n typeIdentityByObject.set(value, nextTypeIdentity);\n return `object:${nextTypeIdentity}`;\n }\n\n return `${typeof value}:${String(value)}`;\n};\n\nexport const buildBackofficeContentBoundaryKey = (\n location: BackofficeContentBoundaryLocation,\n children: ReactNode,\n): string => {\n return JSON.stringify([\n location.pathname,\n location.search,\n getBackofficeContentIdentity(children),\n ]);\n};\n\nexport const BackofficeContentBoundary = ({\n children,\n}: BackofficeContentBoundaryProps): JSX.Element => {\n const location = useLocation();\n const contentBoundaryKey = buildBackofficeContentBoundaryKey(\n location,\n children,\n );\n\n return (\n <div className={styles.root}>\n <BackofficeErrorBoundary\n key={contentBoundaryKey}\n fallback={({ error, reset }) => {\n return <BackofficeContentError error={error} onRetry={reset} />;\n }}\n >\n <Suspense fallback={<BackofficeContentFallback />}>{children}</Suspense>\n </BackofficeErrorBoundary>\n </div>\n );\n};\n\nexport default BackofficeContentBoundary;\n"],"mappings":";;;;;;;;AAeA,IAAM,oBAAuB,IAAI,QAAwB,GACrD,IAAmB,GAEjB,KAAyB,MAA0B;CACvD,IAAM,IAAiB,EAAqB,IAAI,CAAK;CAMrD,OALI,KAAkB,QAGtB,KAAoB,GACpB,EAAqB,IAAI,GAAO,CAAgB,GACzC,UAAU,OAJR,UAAU;AAKrB,GAEM,KAA0B,MAA2B;CACzD,IAAI,OAAO,KAAU,UACnB,OAAO,aAAa;CAEtB,IAAI,OAAO,KAAU,YACnB,OAAO,EAAsB,CAAK;CAEpC,IAAqB,OAAO,KAAU,YAAlC,GAA4C;EAC9C,IAAM,IAAc,GAChB,IAA6B;EAUjC,OARE,iBAAiB,KACjB,OAAO,EAAY,eAAgB,aAEnC,IAAc,EAAY,cAExB,KAAe,OAGZ,EAAsB,CAAW,IAF/B,UAAU;CAGrB;CAEA,OAAO,GAAG,OAAO,EAAM,GAAG,OAAO,CAAK;AACxC,GAEM,KAAgC,MAA6B;CACjE,IAAI,MAAM,QAAQ,CAAK,GACrB,OAAO,EAAM,IAAI,CAA4B,CAAC,CAAC,KAAK,GAAG;CAGzD,IAAI,EAAe,CAAK,GACtB,OAAO;EACL;EACA,OAAO,EAAM,GAAG;EAChB,EAAuB,EAAM,IAAI;CACnC,CAAC,CAAC,KAAK,GAAG;CAGZ,IAAqB,OAAO,KAAU,YAAlC,GAA4C;EAC9C,IAAM,IAAiB,EAAqB,IAAI,CAAK;EAMrD,OALI,KAAkB,QAGtB,KAAoB,GACpB,EAAqB,IAAI,GAAO,CAAgB,GACzC,UAAU,OAJR,UAAU;CAKrB;CAEA,OAAO,GAAG,OAAO,EAAM,GAAG,OAAO,CAAK;AACxC,GAEa,KACX,GACA,MAEO,KAAK,UAAU;CACpB,EAAS;CACT,EAAS;CACT,EAA6B,CAAQ;AACvC,CAAC,GAGU,KAA6B,EACxC,kBACiD;CAEjD,IAAM,IAAqB,EADV,EAEf,GACA,CACF;CAEA,OACE,kBAAC,OAAD;EAAK,WAAW;YACd,kBAAC,GAAD;GAEE,WAAW,EAAE,UAAO,eACX,kBAAC,GAAD;IAA+B;IAAO,SAAS;GAAQ,CAAA;aAGhE,kBAAC,GAAD;IAAU,UAAU,kBAAC,GAAD,CAA4B,CAAA;IAAI;GAAmB,CAAA;EAChD,GANlB,CAMkB;CACtB,CAAA;AAET"}
1
+ {"version":3,"file":"BackofficeContentBoundary.js","names":[],"sources":["../../../../../src/components/backoffice/routing/BackofficeContentBoundary.tsx"],"sourcesContent":["import { isValidElement, Suspense, type JSX, type ReactNode } from 'react';\nimport useLocation from '@plumile/router/routing/useLocation.js';\n\nimport { BackofficeErrorBoundary } from '../errors/BackofficeErrorBoundary.js';\n\nimport { BackofficeContentError } from './BackofficeContentError.js';\nimport { BackofficeContentFallback } from './BackofficeContentFallback.js';\nimport * as styles from './backofficeContentBoundary.css.js';\n\nexport type BackofficeContentBoundaryProps = {\n children: ReactNode;\n};\n\ntype BackofficeContentBoundaryLocation = Pick<Location, 'pathname' | 'search'>;\n\nconst typeIdentityByObject = new WeakMap<object, number>();\nlet nextTypeIdentity = 0;\n\nconst getObjectTypeIdentity = (value: object): string => {\n const cachedIdentity = typeIdentityByObject.get(value);\n if (cachedIdentity != null) {\n return `object:${cachedIdentity}`;\n }\n nextTypeIdentity += 1;\n typeIdentityByObject.set(value, nextTypeIdentity);\n return `object:${nextTypeIdentity}`;\n};\n\nconst getElementTypeIdentity = (value: unknown): string => {\n if (typeof value === 'string') {\n return `intrinsic:${value}`;\n }\n if (typeof value === 'function') {\n return getObjectTypeIdentity(value);\n }\n if (value != null && typeof value === 'object') {\n const objectValue = value;\n let displayName: string | null = null;\n if (\n 'displayName' in objectValue &&\n typeof objectValue.displayName === 'string'\n ) {\n displayName = objectValue.displayName;\n }\n if (displayName != null) {\n return `object:${displayName}`;\n }\n return getObjectTypeIdentity(objectValue);\n }\n\n return `${typeof value}:${String(value)}`;\n};\n\nconst getBackofficeContentIdentity = (value: ReactNode): string => {\n if (Array.isArray(value)) {\n return value.map(getBackofficeContentIdentity).join('|');\n }\n\n if (isValidElement(value)) {\n return [\n 'element',\n String(value.key),\n getElementTypeIdentity(value.type),\n ].join(':');\n }\n\n if (value != null && typeof value === 'object') {\n const cachedIdentity = typeIdentityByObject.get(value);\n if (cachedIdentity != null) {\n return `object:${cachedIdentity}`;\n }\n nextTypeIdentity += 1;\n typeIdentityByObject.set(value, nextTypeIdentity);\n return `object:${nextTypeIdentity}`;\n }\n\n return `${typeof value}:${String(value)}`;\n};\n\nexport const buildBackofficeContentBoundaryKey = (\n location: BackofficeContentBoundaryLocation,\n children: ReactNode,\n): string => {\n return JSON.stringify([\n location.pathname,\n location.search,\n getBackofficeContentIdentity(children),\n ]);\n};\n\nexport const BackofficeContentBoundary = ({\n children,\n}: BackofficeContentBoundaryProps): JSX.Element => {\n const location = useLocation();\n const contentBoundaryKey = buildBackofficeContentBoundaryKey(\n location,\n children,\n );\n\n return (\n <div className={styles.root}>\n <BackofficeErrorBoundary\n key={contentBoundaryKey}\n fallback={({ error, reset }) => {\n return <BackofficeContentError error={error} onRetry={reset} />;\n }}\n >\n <Suspense fallback={<BackofficeContentFallback />}>{children}</Suspense>\n </BackofficeErrorBoundary>\n </div>\n );\n};\n\nexport default BackofficeContentBoundary;\n"],"mappings":";;;;;;;;AAeA,IAAM,oBAAuB,IAAI,QAAwB,GACrD,IAAmB,GAEjB,KAAyB,MAA0B;CACvD,IAAM,IAAiB,EAAqB,IAAI,CAAK;CAMrD,OALI,KAAkB,QAGtB,KAAoB,GACpB,EAAqB,IAAI,GAAO,CAAgB,GACzC,UAAU,OAJR,UAAU;AAKrB,GAEM,KAA0B,MAA2B;CACzD,IAAI,OAAO,KAAU,UACnB,OAAO,aAAa;CAEtB,IAAI,OAAO,KAAU,YACnB,OAAO,EAAsB,CAAK;CAEpC,IAAqB,OAAO,KAAU,YAAlC,GAA4C;EAC9C,IAAM,IAAc,GAChB,IAA6B;EAUjC,OARE,iBAAiB,KACjB,OAAO,EAAY,eAAgB,aAEnC,IAAc,EAAY,cAExB,KAAe,OAGZ,EAAsB,CAAW,IAF/B,UAAU;CAGrB;CAEA,OAAO,GAAG,OAAO,EAAM,GAAG,OAAO,CAAK;AACxC,GAEM,KAAgC,MAA6B;CACjE,IAAI,MAAM,QAAQ,CAAK,GACrB,OAAO,EAAM,IAAI,CAA4B,CAAC,CAAC,KAAK,GAAG;CAGzD,IAAI,EAAe,CAAK,GACtB,OAAO;EACL;EACA,OAAO,EAAM,GAAG;EAChB,EAAuB,EAAM,IAAI;CACnC,CAAC,CAAC,KAAK,GAAG;CAGZ,IAAqB,OAAO,KAAU,YAAlC,GAA4C;EAC9C,IAAM,IAAiB,EAAqB,IAAI,CAAK;EAMrD,OALI,KAAkB,QAGtB,KAAoB,GACpB,EAAqB,IAAI,GAAO,CAAgB,GACzC,UAAU,OAJR,UAAU;CAKrB;CAEA,OAAO,GAAG,OAAO,EAAM,GAAG,OAAO,CAAK;AACxC,GAEa,KACX,GACA,MAEO,KAAK,UAAU;CACpB,EAAS;CACT,EAAS;CACT,EAA6B,CAAQ;AACvC,CAAC,GAGU,KAA6B,EACxC,kBACiD;CAEjD,IAAM,IAAqB,EADV,EAEf,GACA,CACF;CAEA,OACE,kBAAC,OAAD;EAAK,WAAW;EACd,UAAA,kBAAC,GAAD;GAEE,WAAW,EAAE,UAAO,eACX,kBAAC,GAAD;IAA+B;IAAO,SAAS;GAAQ,CAAA;GAGhE,UAAA,kBAAC,GAAD;IAAU,UAAU,kBAAC,GAAD,CAA4B,CAAA;IAAI;GAAmB,CAAA;EAChD,GANlB,CAMkB;CACtB,CAAA;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"BackofficeContentError.js","names":[],"sources":["../../../../../src/components/backoffice/routing/BackofficeContentError.tsx"],"sourcesContent":["import { type JSX } from 'react';\n\nimport { Button } from '@plumile/ui/atomic/atoms/button/Button.js';\nimport { InlineBanner } from '@plumile/ui/components/feedback/InlineBanner.js';\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\n\nimport * as styles from './backofficeContentError.css.js';\n\ntype BackofficeContentErrorProps = {\n error: unknown;\n onRetry: () => void;\n};\n\nexport const BackofficeContentError = ({\n onRetry,\n}: BackofficeContentErrorProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n\n return (\n <div className={styles.root}>\n <InlineBanner\n tone=\"danger\"\n className={styles.banner}\n actions={\n <Button\n type=\"button\"\n variant=\"secondary\"\n size=\"small\"\n onClick={onRetry}\n >\n {t('common.actions.retry')}\n </Button>\n }\n >\n {t('common.errors.unexpected')}\n </InlineBanner>\n </div>\n );\n};\n\nexport default BackofficeContentError;\n"],"mappings":";;;;;;AAaA,IAAa,KAA0B,EACrC,iBAC8C;CAC9C,IAAM,EAAE,SAAM,EAA8B;CAE5C,OACE,kBAAC,OAAD;EAAK,WAAW;YACd,kBAAC,GAAD;GACE,MAAK;GACL,WAAW;GACX,SACE,kBAAC,GAAD;IACE,MAAK;IACL,SAAQ;IACR,MAAK;IACL,SAAS;cAER,EAAE,sBAAsB;GACnB,CAAA;aAGT,EAAE,0BAA0B;EACjB,CAAA;CACX,CAAA;AAET"}
1
+ {"version":3,"file":"BackofficeContentError.js","names":[],"sources":["../../../../../src/components/backoffice/routing/BackofficeContentError.tsx"],"sourcesContent":["import { type JSX } from 'react';\n\nimport { Button } from '@plumile/ui/atomic/atoms/button/Button.js';\nimport { InlineBanner } from '@plumile/ui/components/feedback/InlineBanner.js';\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\n\nimport * as styles from './backofficeContentError.css.js';\n\ntype BackofficeContentErrorProps = {\n error: unknown;\n onRetry: () => void;\n};\n\nexport const BackofficeContentError = ({\n onRetry,\n}: BackofficeContentErrorProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n\n return (\n <div className={styles.root}>\n <InlineBanner\n tone=\"danger\"\n className={styles.banner}\n actions={\n <Button\n type=\"button\"\n variant=\"secondary\"\n size=\"small\"\n onClick={onRetry}\n >\n {t('common.actions.retry')}\n </Button>\n }\n >\n {t('common.errors.unexpected')}\n </InlineBanner>\n </div>\n );\n};\n\nexport default BackofficeContentError;\n"],"mappings":";;;;;;AAaA,IAAa,KAA0B,EACrC,iBAC8C;CAC9C,IAAM,EAAE,SAAM,EAA8B;CAE5C,OACE,kBAAC,OAAD;EAAK,WAAW;EACd,UAAA,kBAAC,GAAD;GACE,MAAK;GACL,WAAW;GACX,SACE,kBAAC,GAAD;IACE,MAAK;IACL,SAAQ;IACR,MAAK;IACL,SAAS;IAER,UAAA,EAAE,sBAAsB;GACnB,CAAA;GAGT,UAAA,EAAE,0BAA0B;EACjB,CAAA;CACX,CAAA;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"BackofficeContentFallback.js","names":[],"sources":["../../../../../src/components/backoffice/routing/BackofficeContentFallback.tsx"],"sourcesContent":["import { type JSX } from 'react';\n\nimport { Skeleton } from '@plumile/ui/backoffice/atoms/skeleton/Skeleton.js';\n\nimport * as styles from './backofficeContentFallback.css.js';\n\nexport const BackofficeContentFallback = (): JSX.Element => {\n return (\n <div\n className={styles.container}\n role=\"status\"\n aria-live=\"polite\"\n aria-busy=\"true\"\n >\n <Skeleton variant=\"text\" width=\"38%\" className={styles.title} />\n <Skeleton variant=\"text\" width=\"62%\" />\n <div className={styles.grid}>\n {Array.from({ length: 4 }, (_, index) => {\n return (\n <div key={`content-skeleton-${index}`} className={styles.card}>\n <Skeleton variant=\"text\" width=\"46%\" />\n <Skeleton variant=\"text\" width=\"82%\" lines={2} />\n <Skeleton variant=\"block\" width=\"100%\" height={120} />\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default BackofficeContentFallback;\n"],"mappings":";;;;AAMA,IAAa,UAET,kBAAC,OAAD;CACE,WAAW;CACX,MAAK;CACL,aAAU;CACV,aAAU;WAJZ;EAME,kBAAC,GAAD;GAAU,SAAQ;GAAO,OAAM;GAAM,WAAW;EAAe,CAAA;EAC/D,kBAAC,GAAD;GAAU,SAAQ;GAAO,OAAM;EAAO,CAAA;EACtC,kBAAC,OAAD;GAAK,WAAW;aACb,MAAM,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG,MAE3B,kBAAC,OAAD;IAAuC,WAAW;cAAlD;KACE,kBAAC,GAAD;MAAU,SAAQ;MAAO,OAAM;KAAO,CAAA;KACtC,kBAAC,GAAD;MAAU,SAAQ;MAAO,OAAM;MAAM,OAAO;KAAI,CAAA;KAChD,kBAAC,GAAD;MAAU,SAAQ;MAAQ,OAAM;MAAO,QAAQ;KAAM,CAAA;IAClD;MAJK,oBAAoB,GAIzB,CAER;EACE,CAAA;CACF"}
1
+ {"version":3,"file":"BackofficeContentFallback.js","names":[],"sources":["../../../../../src/components/backoffice/routing/BackofficeContentFallback.tsx"],"sourcesContent":["import { type JSX } from 'react';\n\nimport { Skeleton } from '@plumile/ui/backoffice/atoms/skeleton/Skeleton.js';\n\nimport * as styles from './backofficeContentFallback.css.js';\n\nexport const BackofficeContentFallback = (): JSX.Element => {\n return (\n <div\n className={styles.container}\n role=\"status\"\n aria-live=\"polite\"\n aria-busy=\"true\"\n >\n <Skeleton variant=\"text\" width=\"38%\" className={styles.title} />\n <Skeleton variant=\"text\" width=\"62%\" />\n <div className={styles.grid}>\n {Array.from({ length: 4 }, (_, index) => {\n return (\n <div key={`content-skeleton-${index}`} className={styles.card}>\n <Skeleton variant=\"text\" width=\"46%\" />\n <Skeleton variant=\"text\" width=\"82%\" lines={2} />\n <Skeleton variant=\"block\" width=\"100%\" height={120} />\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default BackofficeContentFallback;\n"],"mappings":";;;;AAMA,IAAa,UAET,kBAAC,OAAD;CACE,WAAW;CACX,MAAK;CACL,aAAU;CACV,aAAU;CAJZ,UAAA;EAME,kBAAC,GAAD;GAAU,SAAQ;GAAO,OAAM;GAAM,WAAW;EAAe,CAAA;EAC/D,kBAAC,GAAD;GAAU,SAAQ;GAAO,OAAM;EAAO,CAAA;EACtC,kBAAC,OAAD;GAAK,WAAW;GACb,UAAA,MAAM,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG,MAE3B,kBAAC,OAAD;IAAuC,WAAW;IAAlD,UAAA;KACE,kBAAC,GAAD;MAAU,SAAQ;MAAO,OAAM;KAAO,CAAA;KACtC,kBAAC,GAAD;MAAU,SAAQ;MAAO,OAAM;MAAM,OAAO;KAAI,CAAA;KAChD,kBAAC,GAAD;MAAU,SAAQ;MAAQ,OAAM;MAAO,QAAQ;KAAM,CAAA;IAClD;GAJK,GAAA,oBAAoB,GAIzB,CAER;EACE,CAAA;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"BackofficeRoutePendingBar.js","names":[],"sources":["../../../../../src/components/backoffice/routing/BackofficeRoutePendingBar.tsx"],"sourcesContent":["import { type JSX } from 'react';\n\nimport * as styles from './backofficeRoutePendingBar.css.js';\n\nexport const BackofficeRoutePendingBar = (): JSX.Element => {\n return (\n <div className={styles.root} aria-hidden=\"true\">\n <div className={styles.bar} />\n </div>\n );\n};\n\nexport default BackofficeRoutePendingBar;\n"],"mappings":";;;AAIA,IAAa,UAET,kBAAC,OAAD;CAAK,WAAW;CAAa,eAAY;WACvC,kBAAC,OAAD,EAAK,WAAW,EAAa,CAAA;AAC1B,CAAA"}
1
+ {"version":3,"file":"BackofficeRoutePendingBar.js","names":[],"sources":["../../../../../src/components/backoffice/routing/BackofficeRoutePendingBar.tsx"],"sourcesContent":["import { type JSX } from 'react';\n\nimport * as styles from './backofficeRoutePendingBar.css.js';\n\nexport const BackofficeRoutePendingBar = (): JSX.Element => {\n return (\n <div className={styles.root} aria-hidden=\"true\">\n <div className={styles.bar} />\n </div>\n );\n};\n\nexport default BackofficeRoutePendingBar;\n"],"mappings":";;;AAIA,IAAa,UAET,kBAAC,OAAD;CAAK,WAAW;CAAa,eAAY;CACvC,UAAA,kBAAC,OAAD,EAAK,WAAW,EAAa,CAAA;AAC1B,CAAA"}
@@ -16,11 +16,14 @@ var i = ({ listHref: t }) => {
16
16
  children: i("detail.actions.backToList")
17
17
  })
18
18
  };
19
- }, a = ({ listHref: e }) => /* @__PURE__ */ n(t, {
20
- node: null,
21
- notFound: i({ listHref: e }),
22
- render: () => null
23
- });
19
+ }, a = ({ listHref: e }) => {
20
+ let r = i({ listHref: e });
21
+ return /* @__PURE__ */ n(t, {
22
+ node: null,
23
+ notFound: r,
24
+ render: () => null
25
+ });
26
+ };
24
27
  //#endregion
25
28
  export { a as BackofficeEntityDetailNotFound, a as default, i as useBackofficeEntityDetailNotFoundState };
26
29
 
@@ -1 +1 @@
1
- {"version":3,"file":"BackofficeEntityDetailNotFound.js","names":[],"sources":["../../../../../src/components/backoffice/scaffolds/BackofficeEntityDetailNotFound.tsx"],"sourcesContent":["import { type JSX } from 'react';\n\nimport { LinkButton } from '@plumile/ui/atomic/atoms/button/LinkButton.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\nimport {\n BackofficeEntityDetailScaffold,\n type BackofficeEntityDetailNotFoundState,\n} from './BackofficeEntityDetailScaffold.js';\n\nexport type BackofficeEntityDetailNotFoundProps = {\n listHref: string;\n};\n\nexport const useBackofficeEntityDetailNotFoundState = ({\n listHref,\n}: BackofficeEntityDetailNotFoundProps): BackofficeEntityDetailNotFoundState => {\n const { t } = useBackofficeReactTranslation();\n\n return {\n title: t('detail.notFound'),\n description: t('detail.notFoundDescription'),\n actions: (\n <LinkButton\n to={listHref}\n variant=\"secondary\"\n size=\"small\"\n preloadOnHover=\"code-and-data\"\n >\n {t('detail.actions.backToList')}\n </LinkButton>\n ),\n };\n};\n\nexport const BackofficeEntityDetailNotFound = ({\n listHref,\n}: BackofficeEntityDetailNotFoundProps): JSX.Element => {\n const notFound = useBackofficeEntityDetailNotFoundState({ listHref });\n\n return (\n <BackofficeEntityDetailScaffold\n node={null}\n notFound={notFound}\n render={() => {\n return null;\n }}\n />\n );\n};\n\nexport default BackofficeEntityDetailNotFound;\n"],"mappings":";;;;;AAcA,IAAa,KAA0C,EACrD,kBAC8E;CAC9E,IAAM,EAAE,SAAM,EAA8B;CAE5C,OAAO;EACL,OAAO,EAAE,iBAAiB;EAC1B,aAAa,EAAE,4BAA4B;EAC3C,SACE,kBAAC,GAAD;GACE,IAAI;GACJ,SAAQ;GACR,MAAK;GACL,gBAAe;aAEd,EAAE,2BAA2B;EACpB,CAAA;CAEhB;AACF,GAEa,KAAkC,EAC7C,kBAKE,kBAAC,GAAD;CACE,MAAM;CACI,UALG,EAAuC,EAAE,YAAS,CAKrD;CACV,cACS;AAEV,CAAA"}
1
+ {"version":3,"file":"BackofficeEntityDetailNotFound.js","names":[],"sources":["../../../../../src/components/backoffice/scaffolds/BackofficeEntityDetailNotFound.tsx"],"sourcesContent":["import { type JSX } from 'react';\n\nimport { LinkButton } from '@plumile/ui/atomic/atoms/button/LinkButton.js';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\nimport {\n BackofficeEntityDetailScaffold,\n type BackofficeEntityDetailNotFoundState,\n} from './BackofficeEntityDetailScaffold.js';\n\nexport type BackofficeEntityDetailNotFoundProps = {\n listHref: string;\n};\n\nexport const useBackofficeEntityDetailNotFoundState = ({\n listHref,\n}: BackofficeEntityDetailNotFoundProps): BackofficeEntityDetailNotFoundState => {\n const { t } = useBackofficeReactTranslation();\n\n return {\n title: t('detail.notFound'),\n description: t('detail.notFoundDescription'),\n actions: (\n <LinkButton\n to={listHref}\n variant=\"secondary\"\n size=\"small\"\n preloadOnHover=\"code-and-data\"\n >\n {t('detail.actions.backToList')}\n </LinkButton>\n ),\n };\n};\n\nexport const BackofficeEntityDetailNotFound = ({\n listHref,\n}: BackofficeEntityDetailNotFoundProps): JSX.Element => {\n const notFound = useBackofficeEntityDetailNotFoundState({ listHref });\n\n return (\n <BackofficeEntityDetailScaffold\n node={null}\n notFound={notFound}\n render={() => {\n return null;\n }}\n />\n );\n};\n\nexport default BackofficeEntityDetailNotFound;\n"],"mappings":";;;;;AAcA,IAAa,KAA0C,EACrD,kBAC8E;CAC9E,IAAM,EAAE,SAAM,EAA8B;CAE5C,OAAO;EACL,OAAO,EAAE,iBAAiB;EAC1B,aAAa,EAAE,4BAA4B;EAC3C,SACE,kBAAC,GAAD;GACE,IAAI;GACJ,SAAQ;GACR,MAAK;GACL,gBAAe;GAEd,UAAA,EAAE,2BAA2B;EACpB,CAAA;CAEhB;AACF,GAEa,KAAkC,EAC7C,kBACsD;CACtD,IAAM,IAAW,EAAuC,EAAE,YAAS,CAAC;CAEpE,OACE,kBAAC,GAAD;EACE,MAAM;EACI;EACV,cACS;CAEV,CAAA;AAEL"}