@plumile/backoffice-react 0.1.196 → 0.1.197
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/README.md +7 -0
- package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js +23 -20
- package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js.map +1 -1
- package/lib/esm/components/backoffice/layout/breadcrumb/buildBreadcrumbs.js.map +1 -1
- package/lib/esm/components/backoffice/links/BackofficeInlineLink.js +19 -9
- package/lib/esm/components/backoffice/links/BackofficeInlineLink.js.map +1 -1
- package/lib/esm/components/backoffice/links/BackofficeLink.js +12 -8
- package/lib/esm/components/backoffice/links/BackofficeLink.js.map +1 -1
- package/lib/esm/components/backoffice/links/resolveBackofficeLink.js +64 -45
- package/lib/esm/components/backoffice/links/resolveBackofficeLink.js.map +1 -1
- package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js +30 -61
- package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js.map +1 -1
- package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js +1 -4
- package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js.map +1 -1
- package/lib/esm/components/backoffice/scaffolds/BackofficeListFilterContext.js +18 -27
- package/lib/esm/components/backoffice/scaffolds/BackofficeListFilterContext.js.map +1 -1
- package/lib/esm/hooks/useBackofficeListUrlState.js +27 -24
- package/lib/esm/hooks/useBackofficeListUrlState.js.map +1 -1
- package/lib/esm/pages/BackofficeDashboardWidgetContent.js +194 -227
- package/lib/esm/pages/BackofficeDashboardWidgetContent.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js +107 -120
- package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityListDataPage.js +2 -8
- package/lib/esm/pages/BackofficeEntityListDataPage.js.map +1 -1
- package/lib/esm/pages/resolveDashboardTargetDestination.js +17 -0
- package/lib/esm/pages/resolveDashboardTargetDestination.js.map +1 -0
- package/lib/esm/router/createBackofficeRoutes.js +88 -99
- package/lib/esm/router/createBackofficeRoutes.js.map +1 -1
- package/lib/types/components/backoffice/filters/BackofficeFilterAction.d.ts.map +1 -1
- package/lib/types/components/backoffice/layout/breadcrumb/buildBreadcrumbs.d.ts +3 -3
- package/lib/types/components/backoffice/layout/breadcrumb/buildBreadcrumbs.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/resolveBackofficeLink.d.ts.map +1 -1
- package/lib/types/components/backoffice/links/types.d.ts +19 -15
- package/lib/types/components/backoffice/links/types.d.ts.map +1 -1
- package/lib/types/components/backoffice/refs/BackofficeRelatedCountLink.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 +0 -4
- package/lib/types/components/backoffice/scaffolds/BackofficeListFilterContext.d.ts.map +1 -1
- package/lib/types/hooks/useBackofficeListUrlState.d.ts.map +1 -1
- package/lib/types/index.d.ts +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/pages/BackofficeDashboardWidgetContent.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityDetailLayoutPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityListDataPage.d.ts.map +1 -1
- package/lib/types/pages/resolveDashboardTargetDestination.d.ts +5 -0
- package/lib/types/pages/resolveDashboardTargetDestination.d.ts.map +1 -0
- package/lib/types/router/createBackofficeRoutes.d.ts +0 -2
- package/lib/types/router/createBackofficeRoutes.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeEntityListDataPage.js","names":[],"sources":["../../../src/pages/BackofficeEntityListDataPage.tsx"],"sourcesContent":["import {\n type JSX,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { loadQuery, usePreloadedQuery } from 'react-relay';\nimport type { OperationType } from 'relay-runtime';\nimport {\n BACKOFFICE_LIST_DEFAULTS,\n BACKOFFICE_LIST_REFETCH_POLICY,\n} from '@plumile/backoffice-core/constants.js';\nimport { stableListVariablesKey } from '@plumile/backoffice-core/state/stableKey.js';\nimport type { BackofficePreparedListDataRoute } from '@plumile/backoffice-core/types.js';\nimport { Button } from '@plumile/ui/atomic/atoms/button/Button.js';\nimport { InlineBanner } from '@plumile/ui/components/feedback/InlineBanner.js';\n\nimport { BackofficeErrorBoundary } from '../components/backoffice/errors/BackofficeErrorBoundary.js';\nimport { BackofficeEntityListScaffold } from '../components/backoffice/scaffolds/BackofficeEntityListScaffold.js';\nimport { BackofficeLazyEntityCountLabel } from '../components/backoffice/refs/BackofficeLazyEntityCount.js';\nimport { useBackofficeLoadMore } from '../hooks/useBackofficeLoadMore.js';\nimport { useBackofficeListRefetch } from '../hooks/useBackofficeListRefetch.js';\nimport { useBackofficeReactTranslation } from '../i18n/useBackofficeReactTranslation.js';\nimport { useBackofficePaginationFragment } from '../relay/typedRelayHooks.js';\nimport { useRelayEnvironment } from '../relay/useRelayEnvironment.js';\nimport { useBackofficeEntityListRouteContext } from './BackofficeEntityListRouteContext.js';\n\nexport type BackofficeEntityListDataPageProps = {\n prepared: BackofficePreparedListDataRoute;\n};\n\ntype BackofficeEntityConnectionListDataProps = {\n queryRef: BackofficePreparedListDataRoute['query'];\n};\n\n/**\n * Renders the Relay-backed row data under the list layout route boundary.\n */\nfunction BackofficeEntityConnectionListData({\n queryRef,\n}: BackofficeEntityConnectionListDataProps): JSX.Element | null {\n const {\n config,\n state,\n pushState,\n headerActions,\n columns,\n gridTemplateColumns,\n getRowId,\n countFetchKey,\n bumpCountFetchKey,\n filterDrawerState,\n registerRefresh,\n } = useBackofficeEntityListRouteContext();\n const listConfig = config.list;\n const { t } = useBackofficeReactTranslation();\n\n const queryData = usePreloadedQuery(listConfig.query, queryRef);\n const {\n data: fragmentData,\n loadNext,\n hasNext,\n isLoadingNext,\n refetch,\n } = useBackofficePaginationFragment<OperationType, unknown, unknown>(\n listConfig.fragment,\n queryData,\n );\n\n const connection = listConfig.getConnection(fragmentData);\n\n const rows = useMemo(() => {\n return connection.edges.map((edge) => {\n return listConfig.toRow(edge.node);\n });\n }, [connection.edges, listConfig]);\n\n const listDefaults = config.listDefaults ??\n listConfig.defaultState ?? { where: null, sort: null };\n const resolvedSort = state.sort ?? listDefaults.sort;\n const { pageSize } = BACKOFFICE_LIST_DEFAULTS;\n\n const baseVariables = useMemo(() => {\n return {\n where: state.where,\n sort: resolvedSort,\n count: pageSize,\n cursor: null,\n };\n }, [pageSize, resolvedSort, state.where]);\n const countVariablesKey = useMemo(() => {\n return stableListVariablesKey(baseVariables);\n }, [baseVariables]);\n const previousCountVariablesKeyRef = useRef(countVariablesKey);\n\n const { isRefreshing, onRefresh } = useBackofficeListRefetch({\n refetch,\n variables: baseVariables,\n defaults: {\n where: listDefaults.where,\n sort: listDefaults.sort,\n count: pageSize,\n cursor: null,\n },\n fetchPolicy: BACKOFFICE_LIST_REFETCH_POLICY,\n buildQueryVariables: listConfig.buildQueryVariables,\n });\n\n useEffect(() => {\n if (previousCountVariablesKeyRef.current === countVariablesKey) {\n return;\n }\n previousCountVariablesKeyRef.current = countVariablesKey;\n bumpCountFetchKey();\n }, [bumpCountFetchKey, countVariablesKey]);\n\n const handleRefresh = useCallback(() => {\n bumpCountFetchKey();\n onRefresh();\n }, [bumpCountFetchKey, onRefresh]);\n\n useEffect(() => {\n registerRefresh(handleRefresh);\n return () => {\n registerRefresh(null);\n };\n }, [handleRefresh, registerRefresh]);\n\n const handleLoadMore = useBackofficeLoadMore({\n hasNext,\n isLoadingNext,\n loadNext,\n count: pageSize,\n });\n\n let loadedCountFallback: JSX.Element = <span>{t('common.loading')}</span>;\n if (rows.length > 0) {\n loadedCountFallback = (\n <span>\n {t('list.loaded', {\n count: rows.length,\n })}\n </span>\n );\n }\n const loadedCountLabel = (\n <BackofficeLazyEntityCountLabel\n count={listConfig.count}\n where={state.where}\n fetchKey={countFetchKey}\n loadingFallback={loadedCountFallback}\n >\n {(totalCount) => {\n return (\n <span>\n {t('list.showing', {\n shown: rows.length,\n total: totalCount,\n })}\n </span>\n );\n }}\n </BackofficeLazyEntityCountLabel>\n );\n\n return (\n <BackofficeEntityListScaffold\n config={config}\n state={state}\n pushState={pushState}\n headerActions={headerActions}\n rows={rows}\n columns={columns}\n gridTemplateColumns={gridTemplateColumns}\n getRowId={getRowId}\n hasNextPage={hasNext}\n isLoadingMore={isLoadingNext}\n isRefreshing={isRefreshing}\n onLoadMore={handleLoadMore}\n onRefresh={handleRefresh}\n totalCount={null}\n loadedCountLabel={loadedCountLabel}\n filterDrawerState={filterDrawerState}\n />\n );\n}\n\nexport const BackofficeEntityListDataPage = ({\n prepared,\n}: BackofficeEntityListDataPageProps): JSX.Element | null => {\n const {\n config,\n state,\n pushState,\n headerActions,\n columns,\n gridTemplateColumns,\n getRowId,\n filterDrawerState,\n } = useBackofficeEntityListRouteContext();\n const relayEnvironment = useRelayEnvironment();\n const { t } = useBackofficeReactTranslation();\n const [queryRef, setQueryRef] = useState(() => {\n return prepared.query;\n });\n const ownedQueryRef = useRef<BackofficePreparedListDataRoute['query'] | null>(\n null,\n );\n\n const disposeOwnedQueryRef = useCallback(() => {\n ownedQueryRef.current?.dispose();\n ownedQueryRef.current = null;\n }, []);\n\n useEffect(() => {\n disposeOwnedQueryRef();\n setQueryRef(prepared.query);\n }, [disposeOwnedQueryRef, prepared.query]);\n\n useEffect(() => {\n return () => {\n disposeOwnedQueryRef();\n };\n }, [disposeOwnedQueryRef]);\n\n const reloadInitialQuery = useCallback(() => {\n const listConfig = config.list;\n const listDefaults = config.listDefaults ??\n listConfig.defaultState ?? { where: null, sort: null };\n const { pageSize } = BACKOFFICE_LIST_DEFAULTS;\n const variablesBase = {\n where: state.where,\n sort: state.sort ?? listDefaults.sort,\n count: pageSize,\n cursor: null,\n };\n const variables = listConfig.buildQueryVariables(variablesBase);\n const nextQueryRef = loadQuery<OperationType>(\n relayEnvironment,\n listConfig.query,\n variables,\n {\n fetchPolicy: 'network-only',\n },\n );\n disposeOwnedQueryRef();\n ownedQueryRef.current = nextQueryRef;\n setQueryRef(nextQueryRef);\n }, [config, disposeOwnedQueryRef, relayEnvironment, state.sort, state.where]);\n\n return (\n <BackofficeErrorBoundary\n fallback={({ reset }) => {\n return (\n <BackofficeEntityListScaffold\n config={config}\n state={state}\n pushState={pushState}\n headerActions={headerActions}\n rows={[]}\n columns={columns}\n gridTemplateColumns={gridTemplateColumns}\n getRowId={getRowId}\n hasNextPage={false}\n isLoadingMore={false}\n isRefreshing={false}\n onLoadMore={() => {}}\n onRefresh={() => {\n reset();\n reloadInitialQuery();\n }}\n totalCount={null}\n filterDrawerState={filterDrawerState}\n emptyState={\n <InlineBanner\n tone=\"danger\"\n title={t('list.errors.title')}\n actions={\n <Button\n type=\"button\"\n variant=\"secondary\"\n size=\"small\"\n onClick={() => {\n reset();\n reloadInitialQuery();\n }}\n >\n {t('list.actions.retry')}\n </Button>\n }\n >\n {t('list.errors.tableFailed')}\n </InlineBanner>\n }\n />\n );\n }}\n >\n <BackofficeEntityConnectionListData queryRef={queryRef} />\n </BackofficeErrorBoundary>\n );\n};\n\nexport default BackofficeEntityListDataPage;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BackofficeEntityListDataPage.js","names":[],"sources":["../../../src/pages/BackofficeEntityListDataPage.tsx"],"sourcesContent":["import {\n type JSX,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { loadQuery, usePreloadedQuery } from 'react-relay';\nimport type { OperationType } from 'relay-runtime';\nimport {\n BACKOFFICE_LIST_DEFAULTS,\n BACKOFFICE_LIST_REFETCH_POLICY,\n} from '@plumile/backoffice-core/constants.js';\nimport { stableListVariablesKey } from '@plumile/backoffice-core/state/stableKey.js';\nimport type { BackofficePreparedListDataRoute } from '@plumile/backoffice-core/types.js';\nimport { Button } from '@plumile/ui/atomic/atoms/button/Button.js';\nimport { InlineBanner } from '@plumile/ui/components/feedback/InlineBanner.js';\n\nimport { BackofficeErrorBoundary } from '../components/backoffice/errors/BackofficeErrorBoundary.js';\nimport { BackofficeEntityListScaffold } from '../components/backoffice/scaffolds/BackofficeEntityListScaffold.js';\nimport { BackofficeLazyEntityCountLabel } from '../components/backoffice/refs/BackofficeLazyEntityCount.js';\nimport { useBackofficeLoadMore } from '../hooks/useBackofficeLoadMore.js';\nimport { useBackofficeListRefetch } from '../hooks/useBackofficeListRefetch.js';\nimport { useBackofficeReactTranslation } from '../i18n/useBackofficeReactTranslation.js';\nimport { useBackofficePaginationFragment } from '../relay/typedRelayHooks.js';\nimport { useRelayEnvironment } from '../relay/useRelayEnvironment.js';\nimport { useBackofficeEntityListRouteContext } from './BackofficeEntityListRouteContext.js';\n\nexport type BackofficeEntityListDataPageProps = {\n prepared: BackofficePreparedListDataRoute;\n};\n\ntype BackofficeEntityConnectionListDataProps = {\n queryRef: BackofficePreparedListDataRoute['query'];\n};\n\n/**\n * Renders the Relay-backed row data under the list layout route boundary.\n */\nfunction BackofficeEntityConnectionListData({\n queryRef,\n}: BackofficeEntityConnectionListDataProps): JSX.Element | null {\n const {\n config,\n state,\n pushState,\n headerActions,\n columns,\n gridTemplateColumns,\n getRowId,\n countFetchKey,\n bumpCountFetchKey,\n filterDrawerState,\n registerRefresh,\n } = useBackofficeEntityListRouteContext();\n const listConfig = config.list;\n const { t } = useBackofficeReactTranslation();\n\n const queryData = usePreloadedQuery(listConfig.query, queryRef);\n const {\n data: fragmentData,\n loadNext,\n hasNext,\n isLoadingNext,\n refetch,\n } = useBackofficePaginationFragment<OperationType, unknown, unknown>(\n listConfig.fragment,\n queryData,\n );\n\n const connection = listConfig.getConnection(fragmentData);\n\n const rows = useMemo(() => {\n return connection.edges.map((edge) => {\n return listConfig.toRow(edge.node);\n });\n }, [connection.edges, listConfig]);\n\n const { listDefaults } = config;\n const resolvedSort = state.sort ?? listDefaults.sort;\n const { pageSize } = BACKOFFICE_LIST_DEFAULTS;\n\n const baseVariables = useMemo(() => {\n return {\n where: state.where,\n sort: resolvedSort,\n count: pageSize,\n cursor: null,\n };\n }, [pageSize, resolvedSort, state.where]);\n const countVariablesKey = useMemo(() => {\n return stableListVariablesKey(baseVariables);\n }, [baseVariables]);\n const previousCountVariablesKeyRef = useRef(countVariablesKey);\n\n const { isRefreshing, onRefresh } = useBackofficeListRefetch({\n refetch,\n variables: baseVariables,\n defaults: {\n where: listDefaults.where,\n sort: listDefaults.sort,\n count: pageSize,\n cursor: null,\n },\n fetchPolicy: BACKOFFICE_LIST_REFETCH_POLICY,\n buildQueryVariables: listConfig.buildQueryVariables,\n });\n\n useEffect(() => {\n if (previousCountVariablesKeyRef.current === countVariablesKey) {\n return;\n }\n previousCountVariablesKeyRef.current = countVariablesKey;\n bumpCountFetchKey();\n }, [bumpCountFetchKey, countVariablesKey]);\n\n const handleRefresh = useCallback(() => {\n bumpCountFetchKey();\n onRefresh();\n }, [bumpCountFetchKey, onRefresh]);\n\n useEffect(() => {\n registerRefresh(handleRefresh);\n return () => {\n registerRefresh(null);\n };\n }, [handleRefresh, registerRefresh]);\n\n const handleLoadMore = useBackofficeLoadMore({\n hasNext,\n isLoadingNext,\n loadNext,\n count: pageSize,\n });\n\n let loadedCountFallback: JSX.Element = <span>{t('common.loading')}</span>;\n if (rows.length > 0) {\n loadedCountFallback = (\n <span>\n {t('list.loaded', {\n count: rows.length,\n })}\n </span>\n );\n }\n const loadedCountLabel = (\n <BackofficeLazyEntityCountLabel\n count={listConfig.count}\n where={state.where}\n fetchKey={countFetchKey}\n loadingFallback={loadedCountFallback}\n >\n {(totalCount) => {\n return (\n <span>\n {t('list.showing', {\n shown: rows.length,\n total: totalCount,\n })}\n </span>\n );\n }}\n </BackofficeLazyEntityCountLabel>\n );\n\n return (\n <BackofficeEntityListScaffold\n config={config}\n state={state}\n pushState={pushState}\n headerActions={headerActions}\n rows={rows}\n columns={columns}\n gridTemplateColumns={gridTemplateColumns}\n getRowId={getRowId}\n hasNextPage={hasNext}\n isLoadingMore={isLoadingNext}\n isRefreshing={isRefreshing}\n onLoadMore={handleLoadMore}\n onRefresh={handleRefresh}\n totalCount={null}\n loadedCountLabel={loadedCountLabel}\n filterDrawerState={filterDrawerState}\n />\n );\n}\n\nexport const BackofficeEntityListDataPage = ({\n prepared,\n}: BackofficeEntityListDataPageProps): JSX.Element | null => {\n const {\n config,\n state,\n pushState,\n headerActions,\n columns,\n gridTemplateColumns,\n getRowId,\n filterDrawerState,\n } = useBackofficeEntityListRouteContext();\n const relayEnvironment = useRelayEnvironment();\n const { t } = useBackofficeReactTranslation();\n const [queryRef, setQueryRef] = useState(() => {\n return prepared.query;\n });\n const ownedQueryRef = useRef<BackofficePreparedListDataRoute['query'] | null>(\n null,\n );\n\n const disposeOwnedQueryRef = useCallback(() => {\n ownedQueryRef.current?.dispose();\n ownedQueryRef.current = null;\n }, []);\n\n useEffect(() => {\n disposeOwnedQueryRef();\n setQueryRef(prepared.query);\n }, [disposeOwnedQueryRef, prepared.query]);\n\n useEffect(() => {\n return () => {\n disposeOwnedQueryRef();\n };\n }, [disposeOwnedQueryRef]);\n\n const reloadInitialQuery = useCallback(() => {\n const listConfig = config.list;\n const { listDefaults } = config;\n const { pageSize } = BACKOFFICE_LIST_DEFAULTS;\n const variablesBase = {\n where: state.where,\n sort: state.sort ?? listDefaults.sort,\n count: pageSize,\n cursor: null,\n };\n const variables = listConfig.buildQueryVariables(variablesBase);\n const nextQueryRef = loadQuery<OperationType>(\n relayEnvironment,\n listConfig.query,\n variables,\n {\n fetchPolicy: 'network-only',\n },\n );\n disposeOwnedQueryRef();\n ownedQueryRef.current = nextQueryRef;\n setQueryRef(nextQueryRef);\n }, [config, disposeOwnedQueryRef, relayEnvironment, state.sort, state.where]);\n\n return (\n <BackofficeErrorBoundary\n fallback={({ reset }) => {\n return (\n <BackofficeEntityListScaffold\n config={config}\n state={state}\n pushState={pushState}\n headerActions={headerActions}\n rows={[]}\n columns={columns}\n gridTemplateColumns={gridTemplateColumns}\n getRowId={getRowId}\n hasNextPage={false}\n isLoadingMore={false}\n isRefreshing={false}\n onLoadMore={() => {}}\n onRefresh={() => {\n reset();\n reloadInitialQuery();\n }}\n totalCount={null}\n filterDrawerState={filterDrawerState}\n emptyState={\n <InlineBanner\n tone=\"danger\"\n title={t('list.errors.title')}\n actions={\n <Button\n type=\"button\"\n variant=\"secondary\"\n size=\"small\"\n onClick={() => {\n reset();\n reloadInitialQuery();\n }}\n >\n {t('list.actions.retry')}\n </Button>\n }\n >\n {t('list.errors.tableFailed')}\n </InlineBanner>\n }\n />\n );\n }}\n >\n <BackofficeEntityConnectionListData queryRef={queryRef} />\n </BackofficeErrorBoundary>\n );\n};\n\nexport default BackofficeEntityListDataPage;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/pages/resolveDashboardTargetDestination.ts
|
|
2
|
+
var e = (e, t, n) => {
|
|
3
|
+
if (e == null) return n == null ? void 0 : { pathname: n };
|
|
4
|
+
if (e.kind === "href") return { pathname: e.href };
|
|
5
|
+
let r = t[e.entityId];
|
|
6
|
+
if (r?.hasList !== !0) return n == null ? void 0 : { pathname: n };
|
|
7
|
+
let i = r.listNavigation.encode(e.state ?? {});
|
|
8
|
+
return {
|
|
9
|
+
pathname: r.routes.list,
|
|
10
|
+
filters: i.filters,
|
|
11
|
+
query: i.query
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
//#endregion
|
|
15
|
+
export { e as default, e as resolveDashboardTargetDestination };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=resolveDashboardTargetDestination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveDashboardTargetDestination.js","names":[],"sources":["../../../src/pages/resolveDashboardTargetDestination.ts"],"sourcesContent":["import type {\n BackofficeDashboardLinkTarget,\n BackofficeEntityManifestMap,\n} from '@plumile/backoffice-core/types.js';\nimport type { RouterDestination } from '@plumile/router/types.js';\n\n/** Resolves dashboard targets synchronously from the eager entity manifest. */\nexport const resolveDashboardTargetDestination = (\n target: BackofficeDashboardLinkTarget | undefined,\n entities: BackofficeEntityManifestMap,\n fallbackHref: string | undefined,\n): RouterDestination | undefined => {\n if (target == null) {\n if (fallbackHref == null) {\n return undefined;\n }\n return { pathname: fallbackHref };\n }\n if (target.kind === 'href') {\n return { pathname: target.href };\n }\n\n const entity = entities[target.entityId];\n if (entity?.hasList !== true) {\n if (fallbackHref == null) {\n return undefined;\n }\n return { pathname: fallbackHref };\n }\n\n const encoded = entity.listNavigation.encode(target.state ?? {});\n return {\n pathname: entity.routes.list,\n filters: encoded.filters,\n query: encoded.query,\n };\n};\n\nexport default resolveDashboardTargetDestination;\n"],"mappings":";AAOA,IAAa,KACX,GACA,GACA,MACkC;CAClC,IAAI,KAAU,MAIZ,OAHI,KAAgB,OAClB,SAEK,EAAE,UAAU,EAAa;CAElC,IAAI,EAAO,SAAS,QAClB,OAAO,EAAE,UAAU,EAAO,KAAK;CAGjC,IAAM,IAAS,EAAS,EAAO;CAC/B,IAAI,GAAQ,YAAY,IAItB,OAHI,KAAgB,OAClB,SAEK,EAAE,UAAU,EAAa;CAGlC,IAAM,IAAU,EAAO,eAAe,OAAO,EAAO,SAAS,CAAC,CAAC;CAC/D,OAAO;EACL,UAAU,EAAO,OAAO;EACxB,SAAS,EAAQ;EACjB,OAAO,EAAQ;CACjB;AACF"}
|
|
@@ -9,7 +9,7 @@ import { BACKOFFICE_LIST_DEFAULTS as ee } from "@plumile/backoffice-core/constan
|
|
|
9
9
|
import { getResourcePage as u } from "@plumile/router/ResourcePage.js";
|
|
10
10
|
import { r as d } from "@plumile/router/tools.js";
|
|
11
11
|
//#region src/router/createBackofficeRoutes.tsx
|
|
12
|
-
var { loadQuery: f, usePreloadedQuery: p } = c, m = u("WrapperPage", async () => ({ default: (await import("@plumile/ui/pages/WrapperPage.js")).WrapperPage })), h = u("BackofficeLayoutPage", async () => import("../pages/BackofficeLayoutPage.js")), g = u("BackofficeEntityListPage", async () => import("../pages/BackofficeEntityListPage.js")), _ = u("BackofficeEntityListShellPage", async () => import("../pages/BackofficeEntityListShellPage.js")), v = u("BackofficeEntityListDataPage", async () => import("../pages/BackofficeEntityListDataPage.js")), te = u("BackofficeEntityDetailPage", async () => import("../pages/BackofficeEntityDetailPage.js")), y = u("BackofficeEntityDetailFramePage", async () => import("../pages/BackofficeEntityDetailFramePage.js")), b = u("BackofficeEntityDetailLayoutPage", async () => import("../pages/BackofficeEntityDetailLayoutPage.js")), x = u("BackofficeEntityDetailPageConfigPage", async () => import("../pages/BackofficeEntityDetailPageConfigPage.js")), S = u("BackofficeEntityDetailShellPage", async () => import("../pages/BackofficeEntityDetailShellPage.js")), C = u("BackofficeEntityDetailUnknownPageRedirect", async () => import("../pages/BackofficeEntityDetailUnknownPageRedirect.js")), w = u("BackofficeDashboardPage", async () => import("../pages/BackofficeDashboardPage.js")), T = u("BackofficeDashboardShellPage", async () => import("../pages/BackofficeDashboardShellPage.js")), E = u("BackofficeToolShellPage", async () => import("../pages/BackofficeToolShellPage.js")),
|
|
12
|
+
var { loadQuery: f, usePreloadedQuery: p } = c, m = u("WrapperPage", async () => ({ default: (await import("@plumile/ui/pages/WrapperPage.js")).WrapperPage })), h = u("BackofficeLayoutPage", async () => import("../pages/BackofficeLayoutPage.js")), g = u("BackofficeEntityListPage", async () => import("../pages/BackofficeEntityListPage.js")), _ = u("BackofficeEntityListShellPage", async () => import("../pages/BackofficeEntityListShellPage.js")), v = u("BackofficeEntityListDataPage", async () => import("../pages/BackofficeEntityListDataPage.js")), te = u("BackofficeEntityDetailPage", async () => import("../pages/BackofficeEntityDetailPage.js")), y = u("BackofficeEntityDetailFramePage", async () => import("../pages/BackofficeEntityDetailFramePage.js")), b = u("BackofficeEntityDetailLayoutPage", async () => import("../pages/BackofficeEntityDetailLayoutPage.js")), x = u("BackofficeEntityDetailPageConfigPage", async () => import("../pages/BackofficeEntityDetailPageConfigPage.js")), S = u("BackofficeEntityDetailShellPage", async () => import("../pages/BackofficeEntityDetailShellPage.js")), C = u("BackofficeEntityDetailUnknownPageRedirect", async () => import("../pages/BackofficeEntityDetailUnknownPageRedirect.js")), w = u("BackofficeDashboardPage", async () => import("../pages/BackofficeDashboardPage.js")), T = u("BackofficeDashboardShellPage", async () => import("../pages/BackofficeDashboardShellPage.js")), E = u("BackofficeToolShellPage", async () => import("../pages/BackofficeToolShellPage.js")), D = u("BackofficeHubPage", async () => import("../pages/BackofficeHubPage.js")), ne = u("BackofficeLoginPage", async () => import("../pages/BackofficeLoginPage.js")), re = u("BackofficePasswordResetRequestPage", async () => import("../pages/BackofficePasswordResetRequestPage.js")), ie = u("BackofficePasswordResetCompletePage", async () => import("../pages/BackofficePasswordResetCompletePage.js")), O = u("BackofficeVerifyEmailPage", async () => import("../pages/BackofficeVerifyEmailPage.js")), k = u("BackofficeAcceptInvitationPage", async () => import("../pages/BackofficeAcceptInvitationPage.js")), A = ({ pathname: e }) => {
|
|
13
13
|
let t = a(l);
|
|
14
14
|
return o(() => {
|
|
15
15
|
t?.history.set({ pathname: e });
|
|
@@ -51,64 +51,51 @@ var { loadQuery: f, usePreloadedQuery: p } = c, m = u("WrapperPage", async () =>
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
return null;
|
|
54
|
-
}, z = (e) => {
|
|
55
|
-
let t = new URLSearchParams();
|
|
56
|
-
return Object.entries(e).forEach(([e, n]) => {
|
|
57
|
-
if (n != null) {
|
|
58
|
-
if (Array.isArray(n)) {
|
|
59
|
-
n.forEach((n) => {
|
|
60
|
-
n != null && t.append(e, String(n));
|
|
61
|
-
});
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
t.set(e, String(n));
|
|
65
|
-
}
|
|
66
|
-
}), t;
|
|
67
|
-
}, B = (e, t) => {
|
|
54
|
+
}, z = (e, t) => {
|
|
68
55
|
let n = I(t);
|
|
69
56
|
return e.detailPages?.find((e) => I(e.pathSegment) === n) ?? null;
|
|
70
|
-
},
|
|
71
|
-
function
|
|
72
|
-
let { basePath: o, entityManifest: c, entityRegistry: l, sidebar: u, auth: d, dashboard: p } = a, N = r(a.dashboards), I = M(o),
|
|
57
|
+
}, B = (e, t) => z(e, t)?.id ?? t, V = d;
|
|
58
|
+
function H(a) {
|
|
59
|
+
let { basePath: o, entityManifest: c, entityRegistry: l, sidebar: u, auth: d, dashboard: p } = a, N = r(a.dashboards), I = M(o), z = P(I, "login"), H = P(I, "login/reset"), U = P(I, "login/reset/complete"), oe = P(I, "verify-email"), se = P(I, "accept-invitation"), ce = F(I, "login"), W = t(c, u), le = n(W, u), ue = e(W, u), G = /* @__PURE__ */ new Map();
|
|
73
60
|
ue.forEach((e, t) => {
|
|
74
|
-
|
|
61
|
+
G.set(t, e.groupId);
|
|
75
62
|
});
|
|
76
|
-
let
|
|
63
|
+
let K = /* @__PURE__ */ new WeakMap(), q = /* @__PURE__ */ new WeakMap(), J = u?.permissionsQuery, de = async ({ context: e }) => {
|
|
77
64
|
let t = await d.session.load();
|
|
78
65
|
return {
|
|
79
|
-
permissionsQuery:
|
|
66
|
+
permissionsQuery: J == null ? null : f(e.relayEnvironment, J, {}),
|
|
80
67
|
authStatusQuery: t.authStatusQuery == null ? null : f(e.relayEnvironment, t.authStatusQuery, {}, { fetchPolicy: "network-only" })
|
|
81
68
|
};
|
|
82
|
-
},
|
|
69
|
+
}, Y = async () => p == null ? null : {
|
|
83
70
|
dashboardId: "dashboard",
|
|
84
71
|
config: await p.load()
|
|
85
|
-
},
|
|
72
|
+
}, X = () => p == null ? null : { dashboardId: "dashboard" }, Z = ({ prepared: e, Component: t }) => t == null ? null : /* @__PURE__ */ s(t, { prepared: e }), Q = ({ children: e, prepared: t, Component: n }) => n == null ? null : /* @__PURE__ */ s(n, {
|
|
86
73
|
prepared: t,
|
|
87
74
|
children: e
|
|
88
|
-
}),
|
|
75
|
+
}), fe = V({
|
|
89
76
|
path: "",
|
|
90
77
|
resourcePage: T,
|
|
91
|
-
prepare:
|
|
78
|
+
prepare: X,
|
|
92
79
|
render: Q,
|
|
93
|
-
children: [
|
|
80
|
+
children: [V({
|
|
94
81
|
path: "",
|
|
95
82
|
resourcePage: w,
|
|
96
|
-
prepare:
|
|
83
|
+
prepare: Y,
|
|
97
84
|
render: Z
|
|
98
85
|
})]
|
|
99
|
-
}),
|
|
86
|
+
}), pe = V({
|
|
100
87
|
path: "dashboard",
|
|
101
88
|
resourcePage: T,
|
|
102
|
-
prepare:
|
|
89
|
+
prepare: X,
|
|
103
90
|
render: Q,
|
|
104
|
-
children: [
|
|
91
|
+
children: [V({
|
|
105
92
|
path: "",
|
|
106
93
|
resourcePage: w,
|
|
107
|
-
prepare:
|
|
94
|
+
prepare: Y,
|
|
108
95
|
render: Z
|
|
109
96
|
})]
|
|
110
|
-
}),
|
|
111
|
-
let t =
|
|
97
|
+
}), me = N.map((e) => {
|
|
98
|
+
let t = V({
|
|
112
99
|
path: "",
|
|
113
100
|
resourcePage: w,
|
|
114
101
|
prepare: async () => {
|
|
@@ -121,7 +108,7 @@ function U(a) {
|
|
|
121
108
|
},
|
|
122
109
|
render: Z
|
|
123
110
|
});
|
|
124
|
-
return
|
|
111
|
+
return V({
|
|
125
112
|
path: `dashboard/${e.id}`,
|
|
126
113
|
resourcePage: T,
|
|
127
114
|
prepare: () => ({
|
|
@@ -131,20 +118,20 @@ function U(a) {
|
|
|
131
118
|
render: Q,
|
|
132
119
|
children: [t]
|
|
133
120
|
});
|
|
134
|
-
}),
|
|
135
|
-
let t =
|
|
121
|
+
}), he = Object.values(c).filter((e) => e.kind === "list-detail"), ge = le.map((e) => {
|
|
122
|
+
let t = V({
|
|
136
123
|
path: L(e.hub.href, I),
|
|
137
|
-
resourcePage:
|
|
124
|
+
resourcePage: D,
|
|
138
125
|
prepare: () => ({
|
|
139
126
|
hubId: e.hub.id,
|
|
140
127
|
hub: e.hub
|
|
141
128
|
}),
|
|
142
129
|
render: ({ prepared: e, Component: t }) => t == null ? null : /* @__PURE__ */ s(t, { prepared: e })
|
|
143
130
|
});
|
|
144
|
-
return e.groupId != null &&
|
|
145
|
-
}),
|
|
131
|
+
return e.groupId != null && q.set(t, e.groupId), t;
|
|
132
|
+
}), _e = he.map((e) => {
|
|
146
133
|
let t = e.routes.list, n = L(t, I), r = [], a = ({ match: t }) => {
|
|
147
|
-
let n = String(t?.params.id ?? ""), r = typeof t?.params.pagePath == "string" ? t.params.pagePath : null, a = r == null ? e.defaultDetailPageId ?? "overview" :
|
|
134
|
+
let n = String(t?.params.id ?? ""), r = typeof t?.params.pagePath == "string" ? t.params.pagePath : null, a = r == null ? e.defaultDetailPageId ?? "overview" : B(e, r);
|
|
148
135
|
return /* @__PURE__ */ s(i, {
|
|
149
136
|
entityManifest: e,
|
|
150
137
|
id: n,
|
|
@@ -153,36 +140,39 @@ function U(a) {
|
|
|
153
140
|
});
|
|
154
141
|
};
|
|
155
142
|
if (e.hasList) {
|
|
156
|
-
let t =
|
|
143
|
+
let t = V({
|
|
157
144
|
path: "",
|
|
145
|
+
querySchema: e.listNavigation.querySchema,
|
|
158
146
|
resourcePage: v,
|
|
159
147
|
prepareSearchBehavior: "path",
|
|
160
|
-
prepare: async ({ context: t,
|
|
161
|
-
let { config:
|
|
162
|
-
|
|
163
|
-
let
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
148
|
+
prepare: async ({ context: t, filters: n, query: r }) => {
|
|
149
|
+
let { config: i } = await l.loadListEntity(e.id), { list: a } = i, { defaults: o } = e.listNavigation, s = {};
|
|
150
|
+
typeof r.sort == "string" && (s.sort = r.sort);
|
|
151
|
+
let c = n, u = e.listNavigation.decode({
|
|
152
|
+
filters: c,
|
|
153
|
+
query: s
|
|
154
|
+
}), { pageSize: d } = ee, p = {
|
|
155
|
+
where: u.where,
|
|
156
|
+
sort: u.sort ?? o.sort,
|
|
157
|
+
count: d,
|
|
167
158
|
cursor: null
|
|
168
|
-
},
|
|
159
|
+
}, m = a.buildQueryVariables(p), h = f(t.relayEnvironment, a.query, m);
|
|
169
160
|
return {
|
|
170
161
|
entityId: e.id,
|
|
171
162
|
entityManifest: e,
|
|
172
|
-
entityConfig:
|
|
173
|
-
query:
|
|
163
|
+
entityConfig: i,
|
|
164
|
+
query: h
|
|
174
165
|
};
|
|
175
166
|
},
|
|
176
167
|
render: ({ prepared: e, Component: t }) => t == null ? null : /* @__PURE__ */ s(t, { prepared: e })
|
|
177
168
|
});
|
|
178
|
-
|
|
179
|
-
let n =
|
|
169
|
+
K.set(t, e.id);
|
|
170
|
+
let n = V({
|
|
180
171
|
path: "",
|
|
181
172
|
resourcePage: g,
|
|
182
173
|
prepareSearchBehavior: "path",
|
|
183
174
|
prepare: async () => {
|
|
184
|
-
let { config: t } = await l.loadListEntity(e.id)
|
|
185
|
-
if (n == null || r == null) throw Error(`Backoffice entity ${e.id} does not expose a list configuration.`);
|
|
175
|
+
let { config: t } = await l.loadListEntity(e.id);
|
|
186
176
|
return {
|
|
187
177
|
entityId: e.id,
|
|
188
178
|
entityManifest: e,
|
|
@@ -201,8 +191,8 @@ function U(a) {
|
|
|
201
191
|
},
|
|
202
192
|
children: [t]
|
|
203
193
|
});
|
|
204
|
-
|
|
205
|
-
let i =
|
|
194
|
+
K.set(n, e.id);
|
|
195
|
+
let i = V({
|
|
206
196
|
path: "",
|
|
207
197
|
resourcePage: _,
|
|
208
198
|
prepareSearchBehavior: "path",
|
|
@@ -221,10 +211,10 @@ function U(a) {
|
|
|
221
211
|
},
|
|
222
212
|
children: [n]
|
|
223
213
|
});
|
|
224
|
-
|
|
214
|
+
K.set(i, e.id), r.push(i);
|
|
225
215
|
}
|
|
226
216
|
let o = (e.detailPages ?? []).map((t) => {
|
|
227
|
-
let n =
|
|
217
|
+
let n = V({
|
|
228
218
|
path: "",
|
|
229
219
|
resourcePage: te,
|
|
230
220
|
suspenseBoundary: "segment",
|
|
@@ -244,8 +234,8 @@ function U(a) {
|
|
|
244
234
|
},
|
|
245
235
|
render: ({ prepared: e, Component: t }) => t == null ? null : /* @__PURE__ */ s(t, { prepared: e })
|
|
246
236
|
});
|
|
247
|
-
|
|
248
|
-
let r =
|
|
237
|
+
K.set(n, e.id);
|
|
238
|
+
let r = V({
|
|
249
239
|
path: t.pathSegment,
|
|
250
240
|
resourcePage: x,
|
|
251
241
|
suspenseBoundary: "segment",
|
|
@@ -273,8 +263,8 @@ function U(a) {
|
|
|
273
263
|
},
|
|
274
264
|
children: [n]
|
|
275
265
|
});
|
|
276
|
-
return
|
|
277
|
-
}), c =
|
|
266
|
+
return K.set(r, e.id), r;
|
|
267
|
+
}), c = V({
|
|
278
268
|
path: "",
|
|
279
269
|
resourcePage: b,
|
|
280
270
|
suspenseBoundary: "segment",
|
|
@@ -300,7 +290,7 @@ function U(a) {
|
|
|
300
290
|
});
|
|
301
291
|
},
|
|
302
292
|
children: [
|
|
303
|
-
|
|
293
|
+
V({
|
|
304
294
|
path: "",
|
|
305
295
|
resourcePage: m,
|
|
306
296
|
prepare: ({ variables: t }) => {
|
|
@@ -313,7 +303,7 @@ function U(a) {
|
|
|
313
303
|
}
|
|
314
304
|
}),
|
|
315
305
|
...o,
|
|
316
|
-
|
|
306
|
+
V({
|
|
317
307
|
path: ":pagePath",
|
|
318
308
|
resourcePage: C,
|
|
319
309
|
suspenseBoundary: "segment",
|
|
@@ -340,14 +330,14 @@ function U(a) {
|
|
|
340
330
|
})
|
|
341
331
|
]
|
|
342
332
|
});
|
|
343
|
-
|
|
344
|
-
let u =
|
|
333
|
+
K.set(c, e.id);
|
|
334
|
+
let u = V({
|
|
345
335
|
path: "",
|
|
346
336
|
resourcePage: S,
|
|
347
337
|
suspenseBoundary: "segment",
|
|
348
338
|
fallback: a,
|
|
349
339
|
prepare: ({ variables: t }) => {
|
|
350
|
-
let n = String(t.id ?? ""), r = typeof t.pagePath == "string" ? t.pagePath : null, i = r == null ? e.defaultDetailPageId ?? "overview" :
|
|
340
|
+
let n = String(t.id ?? ""), r = typeof t.pagePath == "string" ? t.pagePath : null, i = r == null ? e.defaultDetailPageId ?? "overview" : B(e, r);
|
|
351
341
|
return {
|
|
352
342
|
entityId: e.id,
|
|
353
343
|
entityManifest: e,
|
|
@@ -367,8 +357,8 @@ function U(a) {
|
|
|
367
357
|
},
|
|
368
358
|
children: [c]
|
|
369
359
|
});
|
|
370
|
-
|
|
371
|
-
let d =
|
|
360
|
+
K.set(u, e.id);
|
|
361
|
+
let d = V({
|
|
372
362
|
path: ":id",
|
|
373
363
|
resourcePage: y,
|
|
374
364
|
suspenseBoundary: "segment",
|
|
@@ -392,14 +382,14 @@ function U(a) {
|
|
|
392
382
|
},
|
|
393
383
|
children: [u]
|
|
394
384
|
});
|
|
395
|
-
return
|
|
385
|
+
return K.set(d, e.id), r.push(d), V({
|
|
396
386
|
path: n,
|
|
397
387
|
children: r,
|
|
398
388
|
resourcePage: m,
|
|
399
389
|
suspenseBoundary: "segment"
|
|
400
390
|
});
|
|
401
|
-
}),
|
|
402
|
-
let t = L(e.routes.list, I), n =
|
|
391
|
+
}), ve = Object.values(c).filter((e) => e.kind === "tool").map((e) => {
|
|
392
|
+
let t = L(e.routes.list, I), n = V({
|
|
403
393
|
path: "",
|
|
404
394
|
resourcePage: a.toolsOperationPage ?? null,
|
|
405
395
|
prepare: async () => {
|
|
@@ -420,8 +410,8 @@ function U(a) {
|
|
|
420
410
|
});
|
|
421
411
|
}
|
|
422
412
|
});
|
|
423
|
-
|
|
424
|
-
let r =
|
|
413
|
+
K.set(n, e.id);
|
|
414
|
+
let r = V({
|
|
425
415
|
path: t,
|
|
426
416
|
resourcePage: E,
|
|
427
417
|
prepare: () => ({
|
|
@@ -439,8 +429,8 @@ function U(a) {
|
|
|
439
429
|
},
|
|
440
430
|
children: [n]
|
|
441
431
|
});
|
|
442
|
-
return
|
|
443
|
-
}),
|
|
432
|
+
return K.set(r, e.id), r;
|
|
433
|
+
}), ye = V({
|
|
444
434
|
path: I,
|
|
445
435
|
resourcePage: h,
|
|
446
436
|
prepareSearchBehavior: "path",
|
|
@@ -448,7 +438,7 @@ function U(a) {
|
|
|
448
438
|
prepare: de,
|
|
449
439
|
render: ({ children: e, prepared: t, route: n, Component: r }) => {
|
|
450
440
|
if (r == null) return null;
|
|
451
|
-
let i = t, a = R(n,
|
|
441
|
+
let i = t, a = R(n, K), o = a == null ? R(n, q) : G.get(a) ?? null, c = r, l = d.session.get()?.authStatusQuery ?? null;
|
|
452
442
|
return l != null && i?.authStatusQuery != null ? /* @__PURE__ */ s(j, {
|
|
453
443
|
Component: c,
|
|
454
444
|
preparedLayout: i,
|
|
@@ -467,63 +457,62 @@ function U(a) {
|
|
|
467
457
|
});
|
|
468
458
|
},
|
|
469
459
|
children: [
|
|
470
|
-
|
|
460
|
+
fe,
|
|
461
|
+
...ge,
|
|
471
462
|
..._e,
|
|
472
463
|
...ve,
|
|
473
|
-
...
|
|
474
|
-
|
|
475
|
-
me
|
|
464
|
+
...me,
|
|
465
|
+
pe
|
|
476
466
|
]
|
|
477
467
|
}), $ = [
|
|
478
|
-
|
|
479
|
-
path:
|
|
480
|
-
resourcePage:
|
|
468
|
+
V({
|
|
469
|
+
path: z,
|
|
470
|
+
resourcePage: ne,
|
|
481
471
|
prepare: async ({ context: e }) => {
|
|
482
472
|
let t = await d.login.load();
|
|
483
473
|
return { query: f(e.relayEnvironment, t.loginQuery, {}) };
|
|
484
474
|
},
|
|
485
475
|
render: ({ prepared: e, Component: t }) => t == null ? null : /* @__PURE__ */ s(t, { prepared: e })
|
|
486
476
|
}),
|
|
487
|
-
|
|
488
|
-
path:
|
|
489
|
-
resourcePage:
|
|
477
|
+
V({
|
|
478
|
+
path: H,
|
|
479
|
+
resourcePage: re,
|
|
490
480
|
prepare: async () => (await d.passwordResetRequest.load(), null),
|
|
491
481
|
render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ s(e, {})
|
|
492
482
|
}),
|
|
493
|
-
|
|
494
|
-
path:
|
|
495
|
-
resourcePage:
|
|
483
|
+
V({
|
|
484
|
+
path: U,
|
|
485
|
+
resourcePage: ie,
|
|
496
486
|
prepare: async () => (await d.passwordResetComplete.load(), null),
|
|
497
487
|
render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ s(e, {})
|
|
498
488
|
}),
|
|
499
|
-
|
|
489
|
+
V({
|
|
500
490
|
path: oe,
|
|
501
491
|
resourcePage: O,
|
|
502
492
|
prepare: async () => (await d.verifyEmail.load(), null),
|
|
503
493
|
render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ s(e, {})
|
|
504
494
|
})
|
|
505
495
|
];
|
|
506
|
-
return (d.hasAcceptInvitation === !0 || d.acceptInvitation != null) && $.push(
|
|
496
|
+
return (d.hasAcceptInvitation === !0 || d.acceptInvitation != null) && $.push(V({
|
|
507
497
|
path: se,
|
|
508
498
|
resourcePage: k,
|
|
509
499
|
prepare: async () => (await d.acceptInvitation?.load(), null),
|
|
510
500
|
render: ({ Component: e }) => e == null ? null : /* @__PURE__ */ s(e, {})
|
|
511
|
-
})), $.push(
|
|
501
|
+
})), $.push(ye), $;
|
|
512
502
|
}
|
|
513
|
-
var
|
|
503
|
+
var U = {
|
|
514
504
|
normalizeBaseSegment: M,
|
|
515
505
|
normalizePath: N,
|
|
516
506
|
buildScopedPath: P,
|
|
517
507
|
buildScopedAbsolutePath: F,
|
|
518
508
|
buildRelativePath: L,
|
|
519
509
|
resolveActiveEntityIdFromRoute: R,
|
|
520
|
-
resolveDetailPageIdForPath:
|
|
521
|
-
resolveDetailPageManifestByPath:
|
|
522
|
-
toSearchParams: z,
|
|
510
|
+
resolveDetailPageIdForPath: B,
|
|
511
|
+
resolveDetailPageManifestByPath: z,
|
|
523
512
|
validateBackofficeDashboardRegistrations: r,
|
|
524
513
|
BackofficeLayoutRouteWithAuthStatus: j
|
|
525
514
|
};
|
|
526
515
|
//#endregion
|
|
527
|
-
export { k as BackofficeAcceptInvitationPageResource, w as BackofficeDashboardPageResource, T as BackofficeDashboardShellPageResource, y as BackofficeEntityDetailFramePageResource, b as BackofficeEntityDetailLayoutPageResource, x as BackofficeEntityDetailPageConfigPageResource, te as BackofficeEntityDetailPageResource, S as BackofficeEntityDetailShellPageResource, C as BackofficeEntityDetailUnknownPageRedirectResource, v as BackofficeEntityListDataPageResource, g as BackofficeEntityListPageResource, _ as BackofficeEntityListShellPageResource,
|
|
516
|
+
export { k as BackofficeAcceptInvitationPageResource, w as BackofficeDashboardPageResource, T as BackofficeDashboardShellPageResource, y as BackofficeEntityDetailFramePageResource, b as BackofficeEntityDetailLayoutPageResource, x as BackofficeEntityDetailPageConfigPageResource, te as BackofficeEntityDetailPageResource, S as BackofficeEntityDetailShellPageResource, C as BackofficeEntityDetailUnknownPageRedirectResource, v as BackofficeEntityListDataPageResource, g as BackofficeEntityListPageResource, _ as BackofficeEntityListShellPageResource, D as BackofficeHubPageResource, h as BackofficeLayoutPageResource, ne as BackofficeLoginPageResource, ie as BackofficePasswordResetCompletePageResource, re as BackofficePasswordResetRequestPageResource, E as BackofficeToolShellPageResource, O as BackofficeVerifyEmailPageResource, m as WrapperPageResource, U as __test, H as createBackofficeRoutes, H as default };
|
|
528
517
|
|
|
529
518
|
//# sourceMappingURL=createBackofficeRoutes.js.map
|