@cobaltcore-dev/aurora 1.3.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/DeleteFlavorModal-C2MqUgGR.mjs +801 -0
- package/dist/client/DeleteFlavorModal-C2MqUgGR.mjs.map +1 -0
- package/dist/client/{FiltersInput-CKI6zWnm.mjs → FiltersInput-Becwxo_J.mjs} +36 -33
- package/dist/client/FiltersInput-Becwxo_J.mjs.map +1 -0
- package/dist/client/{FloatingIpActionModals-Ch8uozH9.mjs → FloatingIpActionModals-Cq10WljB.mjs} +2 -2
- package/dist/client/{FloatingIpActionModals-Ch8uozH9.mjs.map → FloatingIpActionModals-Cq10WljB.mjs.map} +1 -1
- package/dist/client/ImageToastNotifications-BWfzOUMc.mjs +1135 -0
- package/dist/client/ImageToastNotifications-BWfzOUMc.mjs.map +1 -0
- package/dist/client/RouteIdLevelDefaultError-CSseJ1yG.mjs +26 -0
- package/dist/client/RouteIdLevelDefaultError-CSseJ1yG.mjs.map +1 -0
- package/dist/client/{_flavorId-Dg7MS0Af.mjs → _flavorId-CaA4-Pnf.mjs} +4 -3
- package/dist/client/_flavorId-CaA4-Pnf.mjs.map +1 -0
- package/dist/client/_flavorId-DYv_StX22.mjs +276 -0
- package/dist/client/_flavorId-DYv_StX22.mjs.map +1 -0
- package/dist/client/_flavorId-YV3jCS5g.mjs +22 -0
- package/dist/client/_flavorId-YV3jCS5g.mjs.map +1 -0
- package/dist/client/{_floatingIpId-C9xfRWot.mjs → _floatingIpId-BeYElanB.mjs} +2 -2
- package/dist/client/{_floatingIpId-C9xfRWot.mjs.map → _floatingIpId-BeYElanB.mjs.map} +1 -1
- package/dist/client/{_floatingIpId-DNn6ABCB.mjs → _floatingIpId-Dpsc7GU4.mjs} +5 -5
- package/dist/client/{_floatingIpId-DNn6ABCB.mjs.map → _floatingIpId-Dpsc7GU4.mjs.map} +1 -1
- package/dist/client/_imageId-mfKp3JHn.mjs +558 -0
- package/dist/client/_imageId-mfKp3JHn.mjs.map +1 -0
- package/dist/client/_imageId-mpXUMCh_.mjs +22 -0
- package/dist/client/_imageId-mpXUMCh_.mjs.map +1 -0
- package/dist/client/{_imageId-8JIbFmGB.mjs → _imageId-pBSS0YcC.mjs} +4 -3
- package/dist/client/_imageId-pBSS0YcC.mjs.map +1 -0
- package/dist/client/{_projectId-B3wmSala.mjs → _projectId-AjgJX6Gl.mjs} +2 -2
- package/dist/client/_projectId-AjgJX6Gl.mjs.map +1 -0
- package/dist/client/{_projectId-DPzv0CCp.mjs → _projectId-BnTBxKfp.mjs} +4 -4
- package/dist/client/_projectId-BnTBxKfp.mjs.map +1 -0
- package/dist/client/{_projectId-DfeVJy0G.mjs → _projectId-CVrdJ52s.mjs} +2 -2
- package/dist/client/_projectId-CVrdJ52s.mjs.map +1 -0
- package/dist/client/_projectId-DgciZslU.mjs +92 -0
- package/dist/client/_projectId-DgciZslU.mjs.map +1 -0
- package/dist/client/{_securityGroupId-C6eHmrx_.mjs → _securityGroupId-AO3wnH8g.mjs} +2 -2
- package/dist/client/_securityGroupId-AO3wnH8g.mjs.map +1 -0
- package/dist/client/{_securityGroupId-DmplhDgt.mjs → _securityGroupId-Bq0ZyG6z.mjs} +750 -741
- package/dist/client/_securityGroupId-Bq0ZyG6z.mjs.map +1 -0
- package/dist/client/_storageType-c-DAu8qr.mjs +858 -0
- package/dist/client/_storageType-c-DAu8qr.mjs.map +1 -0
- package/dist/client/components/{Error → Errors}/RouteError.d.ts +5 -0
- package/dist/client/components/Errors/RouteIdLevelDefaultError.d.ts +17 -0
- package/dist/client/components/Errors/ServiceLevelDefaultError.d.ts +9 -0
- package/dist/client/components/ListToolbar/SelectedFilters.d.ts +7 -2
- package/dist/client/components/ListToolbar/types.d.ts +6 -0
- package/dist/client/components/ListToolbar/valueLabels.d.ts +11 -0
- package/dist/client/flavors-Bgq3KZmx.mjs +659 -0
- package/dist/client/flavors-Bgq3KZmx.mjs.map +1 -0
- package/dist/client/{flavors-B1SDOPDu.mjs → flavors-ZudiAiTU.mjs} +2 -2
- package/dist/client/{flavors-B1SDOPDu.mjs.map → flavors-ZudiAiTU.mjs.map} +1 -1
- package/dist/client/{floatingips-DrCvtXtT.mjs → floatingips-B1oLH8z6.mjs} +6 -6
- package/dist/client/{floatingips-DrCvtXtT.mjs.map → floatingips-B1oLH8z6.mjs.map} +1 -1
- package/dist/client/floatingips-BeQEkVH8.mjs +14 -0
- package/dist/client/floatingips-BeQEkVH8.mjs.map +1 -0
- package/dist/client/floatingips-BtLg3yEQ.mjs +22 -0
- package/dist/client/floatingips-BtLg3yEQ.mjs.map +1 -0
- package/dist/client/floatingips-Cz9k80cc.mjs.map +1 -1
- package/dist/client/{images-BGQv9kKT.mjs → images-CnTW3bpy.mjs} +810 -770
- package/dist/client/images-CnTW3bpy.mjs.map +1 -0
- package/dist/client/{images-CPmMa4SQ.mjs → images-DZHDYDQu.mjs} +2 -2
- package/dist/client/{images-CPmMa4SQ.mjs.map → images-DZHDYDQu.mjs.map} +1 -1
- package/dist/client/index.js +412 -409
- package/dist/client/index.js.map +1 -1
- package/dist/client/{objects-DVccbrL1.mjs → objects-25xsh4Ia.mjs} +2 -2
- package/dist/client/objects-25xsh4Ia.mjs.map +1 -0
- package/dist/client/objects-KXY6dgwq.mjs +82 -0
- package/dist/client/objects-KXY6dgwq.mjs.map +1 -0
- package/dist/client/objects-QryuClU3.mjs +82 -0
- package/dist/client/objects-QryuClU3.mjs.map +1 -0
- package/dist/client/{objects-BR3eeSNH.mjs → objects-jYQBFzwg.mjs} +4668 -4699
- package/dist/client/objects-jYQBFzwg.mjs.map +1 -0
- package/dist/client/projects-yiK0HGSA.mjs.map +1 -1
- package/dist/client/securitygroups--0PS2wbM.mjs +580 -0
- package/dist/client/securitygroups--0PS2wbM.mjs.map +1 -0
- package/dist/client/{securitygroups-DEJQBcxm.mjs → securitygroups-BRndk7wh.mjs} +2 -2
- package/dist/client/{securitygroups-DEJQBcxm.mjs.map → securitygroups-BRndk7wh.mjs.map} +1 -1
- package/dist/client/securitygroups-CdN4yAAw.mjs +14 -0
- package/dist/client/securitygroups-CdN4yAAw.mjs.map +1 -0
- package/dist/client/securitygroups-Cs2Op-tu.mjs +22 -0
- package/dist/client/securitygroups-Cs2Op-tu.mjs.map +1 -0
- package/dist/client/securitygroups-CtKne8UQ.mjs.map +1 -1
- package/dist/client/trpcClient.d.ts +6 -1
- package/dist/client/useModalTracking-BYd37pXm.mjs +37 -0
- package/dist/client/useModalTracking-BYd37pXm.mjs.map +1 -0
- package/dist/client/useSecurityGroupPermissions--hK4aR8Y.mjs +294 -0
- package/dist/client/useSecurityGroupPermissions--hK4aR8Y.mjs.map +1 -0
- package/dist/server/index.d.ts +6 -1
- package/dist/server/index.js +96 -30
- package/package.json +4 -4
- package/dist/client/DeleteFlavorModal-V44QCJBd.mjs +0 -773
- package/dist/client/DeleteFlavorModal-V44QCJBd.mjs.map +0 -1
- package/dist/client/FiltersInput-CKI6zWnm.mjs.map +0 -1
- package/dist/client/ImageToastNotifications-m6c3tVPb.mjs +0 -1152
- package/dist/client/ImageToastNotifications-m6c3tVPb.mjs.map +0 -1
- package/dist/client/_flavorId-Dg7MS0Af.mjs.map +0 -1
- package/dist/client/_flavorId-kHl-b8rI.mjs +0 -232
- package/dist/client/_flavorId-kHl-b8rI.mjs.map +0 -1
- package/dist/client/_imageId-8JIbFmGB.mjs.map +0 -1
- package/dist/client/_imageId-BBAlRioC.mjs +0 -574
- package/dist/client/_imageId-BBAlRioC.mjs.map +0 -1
- package/dist/client/_projectId-7Nl1MQTJ.mjs +0 -99
- package/dist/client/_projectId-7Nl1MQTJ.mjs.map +0 -1
- package/dist/client/_projectId-B3wmSala.mjs.map +0 -1
- package/dist/client/_projectId-DPzv0CCp.mjs.map +0 -1
- package/dist/client/_projectId-DfeVJy0G.mjs.map +0 -1
- package/dist/client/_securityGroupId-C6eHmrx_.mjs.map +0 -1
- package/dist/client/_securityGroupId-DmplhDgt.mjs.map +0 -1
- package/dist/client/_storageType-C5gS9eut.mjs +0 -845
- package/dist/client/_storageType-C5gS9eut.mjs.map +0 -1
- package/dist/client/flavors-D8_PzQUB.mjs +0 -628
- package/dist/client/flavors-D8_PzQUB.mjs.map +0 -1
- package/dist/client/images-BGQv9kKT.mjs.map +0 -1
- package/dist/client/objects-AERkhfiM.mjs +0 -66
- package/dist/client/objects-AERkhfiM.mjs.map +0 -1
- package/dist/client/objects-BR3eeSNH.mjs.map +0 -1
- package/dist/client/objects-DVccbrL1.mjs.map +0 -1
- package/dist/client/securitygroups-BjhgLBHm.mjs +0 -620
- package/dist/client/securitygroups-BjhgLBHm.mjs.map +0 -1
- package/dist/client/useModalTracking-BcOKTYRN.mjs +0 -33
- package/dist/client/useModalTracking-BcOKTYRN.mjs.map +0 -1
- package/dist/client/useSecurityGroupPermissions-BOyLQLdC.mjs +0 -227
- package/dist/client/useSecurityGroupPermissions-BOyLQLdC.mjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as e, S as t, b as n, n as r, t as i, v as a, x as o } from "./objects-
|
|
1
|
+
import { C as e, S as t, b as n, n as r, t as i, v as a, x as o } from "./objects-jYQBFzwg.mjs";
|
|
2
2
|
import { t as s } from "./useSetBreadcrumb-tn7lBaQV.mjs";
|
|
3
3
|
import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
4
4
|
import { useParams as d } from "@tanstack/react-router";
|
|
@@ -63,4 +63,4 @@ var h = () => /*#__PURE__*/ l(m, {});
|
|
|
63
63
|
//#endregion
|
|
64
64
|
export { m as ObjectsDashboard, h as component };
|
|
65
65
|
|
|
66
|
-
//# sourceMappingURL=objects-
|
|
66
|
+
//# sourceMappingURL=objects-25xsh4Ia.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objects-25xsh4Ia.mjs","names":["useParams","ErrorBoundary","Trans","SwiftObjects","CephObjects","CephCorsRules","CephLifecycleRules","BucketHeader","ContainerHeader","useSetBreadcrumb","Route","ObjectsDashboard","projectId","provider","containerName","from","select","params","id","prefix","sortBy","sortDirection","search","view","useSearch","undefined","SplitComponent","component"],"sources":["../../src/client/routes/_auth/projects/$projectId/storage/$provider/$storageType/$containerName/objects/index.tsx?tsr-split=component"],"sourcesContent":["import { createFileRoute, useNavigate, useParams } from \"@tanstack/react-router\"\nimport { Button } from \"@cloudoperators/juno-ui-components\"\nimport { checkServiceAvailability } from \"../../../../-components/utils/serviceAvailability\"\nimport { ErrorBoundary } from \"react-error-boundary\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport { SwiftObjects } from \"../../../../-components/Swift/Objects\"\nimport { CephObjects } from \"../../../../-components/Ceph/Objects\"\nimport { CephCorsRules, CephLifecycleRules } from \"../../../../-components/Ceph/Buckets\"\nimport { z } from \"zod\"\nimport type { RouteInfo } from \"@/client/routes/routeInfo\"\nimport { RouteIdLevelDefaultError } from \"@/client/components/Errors/RouteIdLevelDefaultError\"\nimport { BucketHeader } from \"../../../../-components/Ceph/Buckets/BucketHeader\"\nimport { ContainerHeader } from \"../../../../-components/Swift/Containers/ContainerHeader\"\nimport { useSetBreadcrumb } from \"@/client/hooks/useSetBreadcrumb\"\n\nfunction ObjectStorageErrorComponent() {\n const { t } = useLingui()\n const navigate = useNavigate()\n const { projectId, provider, storageType } = Route.useParams()\n const isCeph = provider === \"ceph\"\n\n return (\n <RouteIdLevelDefaultError\n action={\n <Button\n variant=\"primary\"\n onClick={() =>\n navigate({\n to: \"/projects/$projectId/storage/$provider/$storageType\",\n params: { projectId, provider, storageType },\n })\n }\n >\n {isCeph ? t`Back to Buckets` : t`Back to Containers`}\n </Button>\n }\n />\n )\n}\n\n// Search params schema\n// - prefix: base64-encoded current folder path, safe to carry \"/\" chars in the URL\n// - sortBy: active sort column key — persisted so deep links and back navigation restore sort state\n// Accepts both Swift keys (last_modified, bytes) and Ceph keys (lastModified, size) for compatibility\n// - sortDirection: \"asc\" | \"desc\" — persisted alongside sortBy\n// - view: tab selection for Ceph bucket details page (overview shows objects, cors-rules shows CORS config, lifecycle-rules shows lifecycle config)\n// - corsSortBy: active sort column for CORS rules tab (ID, AllowedOrigins, etc.) — separate from objects sortBy\n// - corsSortDirection: \"asc\" | \"desc\" for CORS rules — separate from objects sortDirection\n// - corsSearch: search term for filtering CORS rules by Rule ID — separate from objects search\n// - lifecycleSortBy: active sort column for lifecycle rules tab (ID, Status, Expiration) — separate from objects sortBy\n// - lifecycleSortDirection: \"asc\" | \"desc\" for lifecycle rules — separate from objects sortDirection\n// - lifecycleSearch: search term for filtering lifecycle rules by Rule ID — separate from objects search\nconst objectsSearchSchema = z.object({\n prefix: z.string().optional(),\n sortBy: z.enum([\"name\", \"last_modified\", \"bytes\", \"lastModified\", \"size\"]).optional().default(\"name\"),\n sortDirection: z.enum([\"asc\", \"desc\"]).optional().default(\"asc\"),\n search: z.string().optional(),\n tab: z.enum([\"all\", \"deleted\"]).optional().default(\"all\"),\n view: z.enum([\"overview\", \"cors-rules\", \"lifecycle-rules\"]).optional().default(\"overview\"),\n corsSortBy: z\n .enum([\"ID\", \"AllowedOrigins\", \"AllowedMethods\", \"AllowedHeaders\", \"ExposeHeaders\", \"MaxAgeSeconds\"])\n .optional()\n .default(\"ID\"),\n corsSortDirection: z.enum([\"asc\", \"desc\"]).optional().default(\"asc\"),\n corsSearch: z.string().optional(),\n lifecycleSortBy: z.enum([\"ID\", \"Status\", \"Expiration\"]).optional().default(\"ID\"),\n lifecycleSortDirection: z.enum([\"asc\", \"desc\"]).optional().default(\"asc\"),\n lifecycleSearch: z.string().optional(),\n})\n\nexport const Route = createFileRoute(\n \"/_auth/projects/$projectId/storage/$provider/$storageType/$containerName/objects/\"\n)({\n staticData: {\n section: \"storage\",\n service: \"containers\",\n analytics: {\n name: \"storage.objectstore.detail\",\n },\n } satisfies RouteInfo,\n validateSearch: objectsSearchSchema,\n head: ({ match }) => ({\n meta: [{ title: match.params.containerName }],\n }),\n component: () => {\n return <ObjectsDashboard />\n },\n notFoundComponent: ObjectStorageErrorComponent,\n errorComponent: ObjectStorageErrorComponent,\n loader: async ({ context }) => {\n const { trpcClient } = context\n const availableServices = await trpcClient?.auth.getAvailableServices.query()\n\n return {\n client: trpcClient,\n availableServices,\n }\n },\n beforeLoad: async ({ context, params }) => {\n const { trpcClient } = context\n const availableServices = await trpcClient?.auth.getAvailableServices.query()\n checkServiceAvailability(availableServices!, params)\n },\n})\n\nexport function ObjectsDashboard() {\n const { projectId, provider, containerName } = useParams({\n from: \"/_auth/projects/$projectId/storage/$provider/$storageType/$containerName/objects/\",\n select: (params) => ({\n projectId: params.projectId,\n provider: params.provider,\n containerName: params.containerName,\n }),\n })\n\n useSetBreadcrumb(Route.id, containerName)\n\n const { prefix, sortBy, sortDirection, search, view } = Route.useSearch()\n\n return (\n <>\n {provider === \"ceph\" && <BucketHeader bucketName={containerName} />}\n {provider === \"swift\" && <ContainerHeader containerName={containerName} />}\n {/* Ceph gets extra breathing room below its header from BucketHeader's own\n tabs block; Swift has no such block, so pad the content wrapper directly\n to avoid the overflow menu sitting too close to the toolbar below it. */}\n <div className={provider === \"swift\" ? \"pt-4\" : undefined}>\n {projectId ? (\n <ErrorBoundary\n resetKeys={[projectId, provider, containerName, prefix, sortBy, sortDirection, search, view]}\n fallback={\n <div className=\"p-4 text-center\">\n <Trans>Error loading component</Trans>\n </div>\n }\n >\n {(() => {\n switch (provider) {\n case \"swift\":\n return <SwiftObjects provider={provider} containerName={containerName} />\n case \"ceph\":\n if (view === \"lifecycle-rules\") {\n return <CephLifecycleRules bucketName={containerName} />\n }\n if (view === \"cors-rules\") {\n return <CephCorsRules bucketName={containerName} />\n }\n return <CephObjects bucketName={containerName} />\n default:\n return (\n <div className=\"p-4\">\n <Trans>Objects: {containerName}</Trans>\n </div>\n )\n }\n })()}\n </ErrorBoundary>\n ) : (\n <div className=\"p-4 text-center\">\n <Trans>No project selected</Trans>\n </div>\n )}\n </div>\n </>\n )\n}\n"],"mappings":";;;;;;;AAyGA,SAAgBW,IAAAA;CACd,IAAM,EAAEC,cAAWC,aAAUC,qBAAkBd,EAAU;EACvDe,MAAM;EACNC,SAASC,OAAY;GACnBL,WAAWK,EAAOL;GAClBC,UAAUI,EAAOJ;GACjBC,eAAeG,EAAOH;EACxB;CACF,CAAA;CAEAL,EAAiBC,EAAMQ,IAAIJ,CAAAA;CAE3B,IAAM,EAAEK,WAAQC,WAAQC,kBAAeC,WAAQC,YAASb,EAAMc,UAAS;CAEvE,OACE,gBAAA,GAAA,EAAA,UAAA;EACGX,MAAa,UAAU,gBAAC,GAAA,EAAa,YAAYC,EAAAA,CAAAA;EACjDD,MAAa,WAAW,gBAAC,GAAA,EAA+BC,iBAAAA,CAAAA;EAIzD,gBAAC,OAAA;GAAI,WAAWD,MAAa,UAAU,SAASY,KAAAA;GAC7Cb,UAAAA,IACC,gBAAC,GAAA;IACC,WAAW;KAACA;KAAWC;KAAUC;KAAeK;KAAQC;KAAQC;KAAeC;KAAQC;IAAK;IAC5F,UACE,gBAAC,OAAA;KAAI,WAAU;KACb,UAAA,gBAAA,GAAA,EAAA,IAAA,SAAA,CAAA;;IAIH,iBAAC;KACA,QAAQV,GAAR;MACE,KAAK,SACH,OAAO,gBAAC,GAAA;OAAuBA;OAAyBC;;MAC1D,KAAK,QAOH,OALS,EADLS,MAAS,oBACH,IAENA,MAAS,eACH,IAEF,GALE,EAAmB,YAAYT,EAAAA,CAAAA;MAM3C,SACE,OACE,gBAAC,OAAA;OAAI,WAAU;OACb,UAAA,gBAAA,GAAA;;QAAiBA,QAAAA,EAAAA,iBAAAA;;;KAGzB;IACF,EAAA,CAAA;GAGF,CAAA,IAAA,gBAAC,OAAA;IAAI,WAAU;IACb,UAAA,gBAAA,GAAA,EAAA,IAAA,SAAA,CAAA;;;;AAMZ;AAAC,IAAAY,UAhFU,gBAAC,GAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { i as e } from "./build-WuxXRAqf.mjs";
|
|
2
|
+
import { C as t, S as n, b as r, n as i, t as a, v as o, x as s } from "./objects-jYQBFzwg.mjs";
|
|
3
|
+
import { t as c } from "./useSetBreadcrumb-tn7lBaQV.mjs";
|
|
4
|
+
import { t as l } from "./RouteIdLevelDefaultError-CSseJ1yG.mjs";
|
|
5
|
+
import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
6
|
+
import { useNavigate as p, useParams as m } from "@tanstack/react-router";
|
|
7
|
+
import { Trans as h, useLingui as g } from "@lingui/react";
|
|
8
|
+
import { ErrorBoundary as _ } from "react-error-boundary";
|
|
9
|
+
//#region src/client/routes/_auth/projects/$projectId/storage/$provider/$storageType/$containerName/objects/index.tsx?tsr-split=notFoundComponent
|
|
10
|
+
function v() {
|
|
11
|
+
let { i18n: t, _: n } = g(), r = p(), { projectId: i, provider: o, storageType: s } = a.useParams();
|
|
12
|
+
return /*#__PURE__*/ d(l, { action: /*#__PURE__*/ d(e, {
|
|
13
|
+
variant: "primary",
|
|
14
|
+
onClick: () => r({
|
|
15
|
+
to: "/projects/$projectId/storage/$provider/$storageType",
|
|
16
|
+
params: {
|
|
17
|
+
projectId: i,
|
|
18
|
+
provider: o,
|
|
19
|
+
storageType: s
|
|
20
|
+
}
|
|
21
|
+
}),
|
|
22
|
+
children: o === "ceph" ? t._({ id: "Rzahyj" }) : t._({ id: "6nrGLS" })
|
|
23
|
+
}) });
|
|
24
|
+
}
|
|
25
|
+
function y() {
|
|
26
|
+
let { projectId: e, provider: l, containerName: p } = m({
|
|
27
|
+
from: "/_auth/projects/$projectId/storage/$provider/$storageType/$containerName/objects/",
|
|
28
|
+
select: (e) => ({
|
|
29
|
+
projectId: e.projectId,
|
|
30
|
+
provider: e.provider,
|
|
31
|
+
containerName: e.containerName
|
|
32
|
+
})
|
|
33
|
+
});
|
|
34
|
+
c(a.id, p);
|
|
35
|
+
let { prefix: g, sortBy: v, sortDirection: y, search: b, view: x } = a.useSearch();
|
|
36
|
+
return /*#__PURE__*/ f(u, { children: [
|
|
37
|
+
l === "ceph" && /*#__PURE__*/ d(o, { bucketName: p }),
|
|
38
|
+
l === "swift" && /*#__PURE__*/ d(i, { containerName: p }),
|
|
39
|
+
/*#__PURE__*/ d("div", {
|
|
40
|
+
className: l === "swift" ? "pt-4" : void 0,
|
|
41
|
+
children: e ? /*#__PURE__*/ d(_, {
|
|
42
|
+
resetKeys: [
|
|
43
|
+
e,
|
|
44
|
+
l,
|
|
45
|
+
p,
|
|
46
|
+
g,
|
|
47
|
+
v,
|
|
48
|
+
y,
|
|
49
|
+
b,
|
|
50
|
+
x
|
|
51
|
+
],
|
|
52
|
+
fallback: /*#__PURE__*/ d("div", {
|
|
53
|
+
className: "p-4 text-center",
|
|
54
|
+
children: /*#__PURE__*/ d(h, { id: "diFNkW" })
|
|
55
|
+
}),
|
|
56
|
+
children: (() => {
|
|
57
|
+
switch (l) {
|
|
58
|
+
case "swift": return /*#__PURE__*/ d(t, {
|
|
59
|
+
provider: l,
|
|
60
|
+
containerName: p
|
|
61
|
+
});
|
|
62
|
+
case "ceph": return d(x === "lifecycle-rules" ? r : x === "cors-rules" ? s : n, { bucketName: p });
|
|
63
|
+
default: return /*#__PURE__*/ d("div", {
|
|
64
|
+
className: "p-4",
|
|
65
|
+
children: /*#__PURE__*/ d(h, {
|
|
66
|
+
id: "ubUrot",
|
|
67
|
+
values: { containerName: p }
|
|
68
|
+
})
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
})()
|
|
72
|
+
}) : /*#__PURE__*/ d("div", {
|
|
73
|
+
className: "p-4 text-center",
|
|
74
|
+
children: /*#__PURE__*/ d(h, { id: "Z2fZGD" })
|
|
75
|
+
})
|
|
76
|
+
})
|
|
77
|
+
] });
|
|
78
|
+
}
|
|
79
|
+
//#endregion
|
|
80
|
+
export { y as ObjectsDashboard, v as notFoundComponent };
|
|
81
|
+
|
|
82
|
+
//# sourceMappingURL=objects-KXY6dgwq.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objects-KXY6dgwq.mjs","names":["useNavigate","useParams","Button","ErrorBoundary","Trans","useLingui","SwiftObjects","CephObjects","CephCorsRules","CephLifecycleRules","RouteIdLevelDefaultError","BucketHeader","ContainerHeader","useSetBreadcrumb","ObjectStorageErrorComponent","t","navigate","projectId","provider","storageType","Route","isCeph","to","params","ObjectsDashboard","containerName","from","select","id","prefix","sortBy","sortDirection","search","view","useSearch","undefined","notFoundComponent"],"sources":["../../src/client/routes/_auth/projects/$projectId/storage/$provider/$storageType/$containerName/objects/index.tsx?tsr-split=notFoundComponent"],"sourcesContent":["import { createFileRoute, useNavigate, useParams } from \"@tanstack/react-router\"\nimport { Button } from \"@cloudoperators/juno-ui-components\"\nimport { checkServiceAvailability } from \"../../../../-components/utils/serviceAvailability\"\nimport { ErrorBoundary } from \"react-error-boundary\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport { SwiftObjects } from \"../../../../-components/Swift/Objects\"\nimport { CephObjects } from \"../../../../-components/Ceph/Objects\"\nimport { CephCorsRules, CephLifecycleRules } from \"../../../../-components/Ceph/Buckets\"\nimport { z } from \"zod\"\nimport type { RouteInfo } from \"@/client/routes/routeInfo\"\nimport { RouteIdLevelDefaultError } from \"@/client/components/Errors/RouteIdLevelDefaultError\"\nimport { BucketHeader } from \"../../../../-components/Ceph/Buckets/BucketHeader\"\nimport { ContainerHeader } from \"../../../../-components/Swift/Containers/ContainerHeader\"\nimport { useSetBreadcrumb } from \"@/client/hooks/useSetBreadcrumb\"\n\nfunction ObjectStorageErrorComponent() {\n const { t } = useLingui()\n const navigate = useNavigate()\n const { projectId, provider, storageType } = Route.useParams()\n const isCeph = provider === \"ceph\"\n\n return (\n <RouteIdLevelDefaultError\n action={\n <Button\n variant=\"primary\"\n onClick={() =>\n navigate({\n to: \"/projects/$projectId/storage/$provider/$storageType\",\n params: { projectId, provider, storageType },\n })\n }\n >\n {isCeph ? t`Back to Buckets` : t`Back to Containers`}\n </Button>\n }\n />\n )\n}\n\n// Search params schema\n// - prefix: base64-encoded current folder path, safe to carry \"/\" chars in the URL\n// - sortBy: active sort column key — persisted so deep links and back navigation restore sort state\n// Accepts both Swift keys (last_modified, bytes) and Ceph keys (lastModified, size) for compatibility\n// - sortDirection: \"asc\" | \"desc\" — persisted alongside sortBy\n// - view: tab selection for Ceph bucket details page (overview shows objects, cors-rules shows CORS config, lifecycle-rules shows lifecycle config)\n// - corsSortBy: active sort column for CORS rules tab (ID, AllowedOrigins, etc.) — separate from objects sortBy\n// - corsSortDirection: \"asc\" | \"desc\" for CORS rules — separate from objects sortDirection\n// - corsSearch: search term for filtering CORS rules by Rule ID — separate from objects search\n// - lifecycleSortBy: active sort column for lifecycle rules tab (ID, Status, Expiration) — separate from objects sortBy\n// - lifecycleSortDirection: \"asc\" | \"desc\" for lifecycle rules — separate from objects sortDirection\n// - lifecycleSearch: search term for filtering lifecycle rules by Rule ID — separate from objects search\nconst objectsSearchSchema = z.object({\n prefix: z.string().optional(),\n sortBy: z.enum([\"name\", \"last_modified\", \"bytes\", \"lastModified\", \"size\"]).optional().default(\"name\"),\n sortDirection: z.enum([\"asc\", \"desc\"]).optional().default(\"asc\"),\n search: z.string().optional(),\n tab: z.enum([\"all\", \"deleted\"]).optional().default(\"all\"),\n view: z.enum([\"overview\", \"cors-rules\", \"lifecycle-rules\"]).optional().default(\"overview\"),\n corsSortBy: z\n .enum([\"ID\", \"AllowedOrigins\", \"AllowedMethods\", \"AllowedHeaders\", \"ExposeHeaders\", \"MaxAgeSeconds\"])\n .optional()\n .default(\"ID\"),\n corsSortDirection: z.enum([\"asc\", \"desc\"]).optional().default(\"asc\"),\n corsSearch: z.string().optional(),\n lifecycleSortBy: z.enum([\"ID\", \"Status\", \"Expiration\"]).optional().default(\"ID\"),\n lifecycleSortDirection: z.enum([\"asc\", \"desc\"]).optional().default(\"asc\"),\n lifecycleSearch: z.string().optional(),\n})\n\nexport const Route = createFileRoute(\n \"/_auth/projects/$projectId/storage/$provider/$storageType/$containerName/objects/\"\n)({\n staticData: {\n section: \"storage\",\n service: \"containers\",\n analytics: {\n name: \"storage.objectstore.detail\",\n },\n } satisfies RouteInfo,\n validateSearch: objectsSearchSchema,\n head: ({ match }) => ({\n meta: [{ title: match.params.containerName }],\n }),\n component: () => {\n return <ObjectsDashboard />\n },\n notFoundComponent: ObjectStorageErrorComponent,\n errorComponent: ObjectStorageErrorComponent,\n loader: async ({ context }) => {\n const { trpcClient } = context\n const availableServices = await trpcClient?.auth.getAvailableServices.query()\n\n return {\n client: trpcClient,\n availableServices,\n }\n },\n beforeLoad: async ({ context, params }) => {\n const { trpcClient } = context\n const availableServices = await trpcClient?.auth.getAvailableServices.query()\n checkServiceAvailability(availableServices!, params)\n },\n})\n\nexport function ObjectsDashboard() {\n const { projectId, provider, containerName } = useParams({\n from: \"/_auth/projects/$projectId/storage/$provider/$storageType/$containerName/objects/\",\n select: (params) => ({\n projectId: params.projectId,\n provider: params.provider,\n containerName: params.containerName,\n }),\n })\n\n useSetBreadcrumb(Route.id, containerName)\n\n const { prefix, sortBy, sortDirection, search, view } = Route.useSearch()\n\n return (\n <>\n {provider === \"ceph\" && <BucketHeader bucketName={containerName} />}\n {provider === \"swift\" && <ContainerHeader containerName={containerName} />}\n {/* Ceph gets extra breathing room below its header from BucketHeader's own\n tabs block; Swift has no such block, so pad the content wrapper directly\n to avoid the overflow menu sitting too close to the toolbar below it. */}\n <div className={provider === \"swift\" ? \"pt-4\" : undefined}>\n {projectId ? (\n <ErrorBoundary\n resetKeys={[projectId, provider, containerName, prefix, sortBy, sortDirection, search, view]}\n fallback={\n <div className=\"p-4 text-center\">\n <Trans>Error loading component</Trans>\n </div>\n }\n >\n {(() => {\n switch (provider) {\n case \"swift\":\n return <SwiftObjects provider={provider} containerName={containerName} />\n case \"ceph\":\n if (view === \"lifecycle-rules\") {\n return <CephLifecycleRules bucketName={containerName} />\n }\n if (view === \"cors-rules\") {\n return <CephCorsRules bucketName={containerName} />\n }\n return <CephObjects bucketName={containerName} />\n default:\n return (\n <div className=\"p-4\">\n <Trans>Objects: {containerName}</Trans>\n </div>\n )\n }\n })()}\n </ErrorBoundary>\n ) : (\n <div className=\"p-4 text-center\">\n <Trans>No project selected</Trans>\n </div>\n )}\n </div>\n </>\n )\n}\n"],"mappings":";;;;;;;;;AAeA,SAASc,IAAAA;CACP,IAAM,EAAA,MAAA,GAAA,GAAA,MAAQT,EAAAA,GACRW,IAAWhB,EAAAA,GACX,EAAEiB,cAAWC,aAAUC,mBAAgBC,EAAMnB,UAAS;CAG5D,OACE,gBAAC,GAAA,EACC,QACE,gBAAC,GAAA;EACC,SAAQ;EACR,eACEe,EAAS;GACPM,IAAI;GACJC,QAAQ;IAAEN;IAAWC;IAAUC;GAAY;EAC7C,CAAA;EAGDE,UAdMH,MAAa,SAcVH,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA,IAAoBA,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA;;AAK1C;AAmEA,SAAgBS,IAAAA;CACd,IAAM,EAAEP,cAAWC,aAAUO,qBAAkBxB,EAAU;EACvDyB,MAAM;EACNC,SAASJ,OAAY;GACnBN,WAAWM,EAAON;GAClBC,UAAUK,EAAOL;GACjBO,eAAeF,EAAOE;EACxB;CACF,CAAA;CAEAZ,EAAiBO,EAAMQ,IAAIH,CAAAA;CAE3B,IAAM,EAAEI,WAAQC,WAAQC,kBAAeC,WAAQC,YAASb,EAAMc,UAAS;CAEvE,OACE,gBAAA,GAAA,EAAA,UAAA;EACGhB,MAAa,UAAU,gBAAC,GAAA,EAAa,YAAYO,EAAAA,CAAAA;EACjDP,MAAa,WAAW,gBAAC,GAAA,EAA+BO,iBAAAA,CAAAA;EAIzD,gBAAC,OAAA;GAAI,WAAWP,MAAa,UAAU,SAASiB,KAAAA;GAC7ClB,UAAAA,IACC,gBAAC,GAAA;IACC,WAAW;KAACA;KAAWC;KAAUO;KAAeI;KAAQC;KAAQC;KAAeC;KAAQC;IAAK;IAC5F,UACE,gBAAC,OAAA;KAAI,WAAU;KACb,UAAA,gBAAA,GAAA,EAAA,IAAA,SAAA,CAAA;;IAIH,iBAAC;KACA,QAAQf,GAAR;MACE,KAAK,SACH,OAAO,gBAAC,GAAA;OAAuBA;OAAyBO;;MAC1D,KAAK,QAOH,OALS,EADLQ,MAAS,oBACH,IAENA,MAAS,eACH,IAEF,GALE,EAAmB,YAAYR,EAAAA,CAAAA;MAM3C,SACE,OACE,gBAAC,OAAA;OAAI,WAAU;OACb,UAAA,gBAAA,GAAA;;QAAiBA,QAAAA,EAAAA,iBAAAA;;;KAGzB;IACF,EAAA,CAAA;GAGF,CAAA,IAAA,gBAAC,OAAA;IAAI,WAAU;IACb,UAAA,gBAAA,GAAA,EAAA,IAAA,SAAA,CAAA;;;;AAMZ"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { i as e } from "./build-WuxXRAqf.mjs";
|
|
2
|
+
import { C as t, S as n, b as r, n as i, t as a, v as o, x as s } from "./objects-jYQBFzwg.mjs";
|
|
3
|
+
import { t as c } from "./useSetBreadcrumb-tn7lBaQV.mjs";
|
|
4
|
+
import { t as l } from "./RouteIdLevelDefaultError-CSseJ1yG.mjs";
|
|
5
|
+
import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
6
|
+
import { useNavigate as p, useParams as m } from "@tanstack/react-router";
|
|
7
|
+
import { Trans as h, useLingui as g } from "@lingui/react";
|
|
8
|
+
import { ErrorBoundary as _ } from "react-error-boundary";
|
|
9
|
+
//#region src/client/routes/_auth/projects/$projectId/storage/$provider/$storageType/$containerName/objects/index.tsx?tsr-split=errorComponent
|
|
10
|
+
function v() {
|
|
11
|
+
let { i18n: t, _: n } = g(), r = p(), { projectId: i, provider: o, storageType: s } = a.useParams();
|
|
12
|
+
return /*#__PURE__*/ d(l, { action: /*#__PURE__*/ d(e, {
|
|
13
|
+
variant: "primary",
|
|
14
|
+
onClick: () => r({
|
|
15
|
+
to: "/projects/$projectId/storage/$provider/$storageType",
|
|
16
|
+
params: {
|
|
17
|
+
projectId: i,
|
|
18
|
+
provider: o,
|
|
19
|
+
storageType: s
|
|
20
|
+
}
|
|
21
|
+
}),
|
|
22
|
+
children: o === "ceph" ? t._({ id: "Rzahyj" }) : t._({ id: "6nrGLS" })
|
|
23
|
+
}) });
|
|
24
|
+
}
|
|
25
|
+
function y() {
|
|
26
|
+
let { projectId: e, provider: l, containerName: p } = m({
|
|
27
|
+
from: "/_auth/projects/$projectId/storage/$provider/$storageType/$containerName/objects/",
|
|
28
|
+
select: (e) => ({
|
|
29
|
+
projectId: e.projectId,
|
|
30
|
+
provider: e.provider,
|
|
31
|
+
containerName: e.containerName
|
|
32
|
+
})
|
|
33
|
+
});
|
|
34
|
+
c(a.id, p);
|
|
35
|
+
let { prefix: g, sortBy: v, sortDirection: y, search: b, view: x } = a.useSearch();
|
|
36
|
+
return /*#__PURE__*/ f(u, { children: [
|
|
37
|
+
l === "ceph" && /*#__PURE__*/ d(o, { bucketName: p }),
|
|
38
|
+
l === "swift" && /*#__PURE__*/ d(i, { containerName: p }),
|
|
39
|
+
/*#__PURE__*/ d("div", {
|
|
40
|
+
className: l === "swift" ? "pt-4" : void 0,
|
|
41
|
+
children: e ? /*#__PURE__*/ d(_, {
|
|
42
|
+
resetKeys: [
|
|
43
|
+
e,
|
|
44
|
+
l,
|
|
45
|
+
p,
|
|
46
|
+
g,
|
|
47
|
+
v,
|
|
48
|
+
y,
|
|
49
|
+
b,
|
|
50
|
+
x
|
|
51
|
+
],
|
|
52
|
+
fallback: /*#__PURE__*/ d("div", {
|
|
53
|
+
className: "p-4 text-center",
|
|
54
|
+
children: /*#__PURE__*/ d(h, { id: "diFNkW" })
|
|
55
|
+
}),
|
|
56
|
+
children: (() => {
|
|
57
|
+
switch (l) {
|
|
58
|
+
case "swift": return /*#__PURE__*/ d(t, {
|
|
59
|
+
provider: l,
|
|
60
|
+
containerName: p
|
|
61
|
+
});
|
|
62
|
+
case "ceph": return d(x === "lifecycle-rules" ? r : x === "cors-rules" ? s : n, { bucketName: p });
|
|
63
|
+
default: return /*#__PURE__*/ d("div", {
|
|
64
|
+
className: "p-4",
|
|
65
|
+
children: /*#__PURE__*/ d(h, {
|
|
66
|
+
id: "ubUrot",
|
|
67
|
+
values: { containerName: p }
|
|
68
|
+
})
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
})()
|
|
72
|
+
}) : /*#__PURE__*/ d("div", {
|
|
73
|
+
className: "p-4 text-center",
|
|
74
|
+
children: /*#__PURE__*/ d(h, { id: "Z2fZGD" })
|
|
75
|
+
})
|
|
76
|
+
})
|
|
77
|
+
] });
|
|
78
|
+
}
|
|
79
|
+
//#endregion
|
|
80
|
+
export { y as ObjectsDashboard, v as errorComponent };
|
|
81
|
+
|
|
82
|
+
//# sourceMappingURL=objects-QryuClU3.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objects-QryuClU3.mjs","names":["useNavigate","useParams","Button","ErrorBoundary","Trans","useLingui","SwiftObjects","CephObjects","CephCorsRules","CephLifecycleRules","RouteIdLevelDefaultError","BucketHeader","ContainerHeader","useSetBreadcrumb","ObjectStorageErrorComponent","t","navigate","projectId","provider","storageType","Route","isCeph","to","params","ObjectsDashboard","containerName","from","select","id","prefix","sortBy","sortDirection","search","view","useSearch","undefined","errorComponent"],"sources":["../../src/client/routes/_auth/projects/$projectId/storage/$provider/$storageType/$containerName/objects/index.tsx?tsr-split=errorComponent"],"sourcesContent":["import { createFileRoute, useNavigate, useParams } from \"@tanstack/react-router\"\nimport { Button } from \"@cloudoperators/juno-ui-components\"\nimport { checkServiceAvailability } from \"../../../../-components/utils/serviceAvailability\"\nimport { ErrorBoundary } from \"react-error-boundary\"\nimport { Trans, useLingui } from \"@lingui/react/macro\"\nimport { SwiftObjects } from \"../../../../-components/Swift/Objects\"\nimport { CephObjects } from \"../../../../-components/Ceph/Objects\"\nimport { CephCorsRules, CephLifecycleRules } from \"../../../../-components/Ceph/Buckets\"\nimport { z } from \"zod\"\nimport type { RouteInfo } from \"@/client/routes/routeInfo\"\nimport { RouteIdLevelDefaultError } from \"@/client/components/Errors/RouteIdLevelDefaultError\"\nimport { BucketHeader } from \"../../../../-components/Ceph/Buckets/BucketHeader\"\nimport { ContainerHeader } from \"../../../../-components/Swift/Containers/ContainerHeader\"\nimport { useSetBreadcrumb } from \"@/client/hooks/useSetBreadcrumb\"\n\nfunction ObjectStorageErrorComponent() {\n const { t } = useLingui()\n const navigate = useNavigate()\n const { projectId, provider, storageType } = Route.useParams()\n const isCeph = provider === \"ceph\"\n\n return (\n <RouteIdLevelDefaultError\n action={\n <Button\n variant=\"primary\"\n onClick={() =>\n navigate({\n to: \"/projects/$projectId/storage/$provider/$storageType\",\n params: { projectId, provider, storageType },\n })\n }\n >\n {isCeph ? t`Back to Buckets` : t`Back to Containers`}\n </Button>\n }\n />\n )\n}\n\n// Search params schema\n// - prefix: base64-encoded current folder path, safe to carry \"/\" chars in the URL\n// - sortBy: active sort column key — persisted so deep links and back navigation restore sort state\n// Accepts both Swift keys (last_modified, bytes) and Ceph keys (lastModified, size) for compatibility\n// - sortDirection: \"asc\" | \"desc\" — persisted alongside sortBy\n// - view: tab selection for Ceph bucket details page (overview shows objects, cors-rules shows CORS config, lifecycle-rules shows lifecycle config)\n// - corsSortBy: active sort column for CORS rules tab (ID, AllowedOrigins, etc.) — separate from objects sortBy\n// - corsSortDirection: \"asc\" | \"desc\" for CORS rules — separate from objects sortDirection\n// - corsSearch: search term for filtering CORS rules by Rule ID — separate from objects search\n// - lifecycleSortBy: active sort column for lifecycle rules tab (ID, Status, Expiration) — separate from objects sortBy\n// - lifecycleSortDirection: \"asc\" | \"desc\" for lifecycle rules — separate from objects sortDirection\n// - lifecycleSearch: search term for filtering lifecycle rules by Rule ID — separate from objects search\nconst objectsSearchSchema = z.object({\n prefix: z.string().optional(),\n sortBy: z.enum([\"name\", \"last_modified\", \"bytes\", \"lastModified\", \"size\"]).optional().default(\"name\"),\n sortDirection: z.enum([\"asc\", \"desc\"]).optional().default(\"asc\"),\n search: z.string().optional(),\n tab: z.enum([\"all\", \"deleted\"]).optional().default(\"all\"),\n view: z.enum([\"overview\", \"cors-rules\", \"lifecycle-rules\"]).optional().default(\"overview\"),\n corsSortBy: z\n .enum([\"ID\", \"AllowedOrigins\", \"AllowedMethods\", \"AllowedHeaders\", \"ExposeHeaders\", \"MaxAgeSeconds\"])\n .optional()\n .default(\"ID\"),\n corsSortDirection: z.enum([\"asc\", \"desc\"]).optional().default(\"asc\"),\n corsSearch: z.string().optional(),\n lifecycleSortBy: z.enum([\"ID\", \"Status\", \"Expiration\"]).optional().default(\"ID\"),\n lifecycleSortDirection: z.enum([\"asc\", \"desc\"]).optional().default(\"asc\"),\n lifecycleSearch: z.string().optional(),\n})\n\nexport const Route = createFileRoute(\n \"/_auth/projects/$projectId/storage/$provider/$storageType/$containerName/objects/\"\n)({\n staticData: {\n section: \"storage\",\n service: \"containers\",\n analytics: {\n name: \"storage.objectstore.detail\",\n },\n } satisfies RouteInfo,\n validateSearch: objectsSearchSchema,\n head: ({ match }) => ({\n meta: [{ title: match.params.containerName }],\n }),\n component: () => {\n return <ObjectsDashboard />\n },\n notFoundComponent: ObjectStorageErrorComponent,\n errorComponent: ObjectStorageErrorComponent,\n loader: async ({ context }) => {\n const { trpcClient } = context\n const availableServices = await trpcClient?.auth.getAvailableServices.query()\n\n return {\n client: trpcClient,\n availableServices,\n }\n },\n beforeLoad: async ({ context, params }) => {\n const { trpcClient } = context\n const availableServices = await trpcClient?.auth.getAvailableServices.query()\n checkServiceAvailability(availableServices!, params)\n },\n})\n\nexport function ObjectsDashboard() {\n const { projectId, provider, containerName } = useParams({\n from: \"/_auth/projects/$projectId/storage/$provider/$storageType/$containerName/objects/\",\n select: (params) => ({\n projectId: params.projectId,\n provider: params.provider,\n containerName: params.containerName,\n }),\n })\n\n useSetBreadcrumb(Route.id, containerName)\n\n const { prefix, sortBy, sortDirection, search, view } = Route.useSearch()\n\n return (\n <>\n {provider === \"ceph\" && <BucketHeader bucketName={containerName} />}\n {provider === \"swift\" && <ContainerHeader containerName={containerName} />}\n {/* Ceph gets extra breathing room below its header from BucketHeader's own\n tabs block; Swift has no such block, so pad the content wrapper directly\n to avoid the overflow menu sitting too close to the toolbar below it. */}\n <div className={provider === \"swift\" ? \"pt-4\" : undefined}>\n {projectId ? (\n <ErrorBoundary\n resetKeys={[projectId, provider, containerName, prefix, sortBy, sortDirection, search, view]}\n fallback={\n <div className=\"p-4 text-center\">\n <Trans>Error loading component</Trans>\n </div>\n }\n >\n {(() => {\n switch (provider) {\n case \"swift\":\n return <SwiftObjects provider={provider} containerName={containerName} />\n case \"ceph\":\n if (view === \"lifecycle-rules\") {\n return <CephLifecycleRules bucketName={containerName} />\n }\n if (view === \"cors-rules\") {\n return <CephCorsRules bucketName={containerName} />\n }\n return <CephObjects bucketName={containerName} />\n default:\n return (\n <div className=\"p-4\">\n <Trans>Objects: {containerName}</Trans>\n </div>\n )\n }\n })()}\n </ErrorBoundary>\n ) : (\n <div className=\"p-4 text-center\">\n <Trans>No project selected</Trans>\n </div>\n )}\n </div>\n </>\n )\n}\n"],"mappings":";;;;;;;;;AAeA,SAASc,IAAAA;CACP,IAAM,EAAA,MAAA,GAAA,GAAA,MAAQT,EAAAA,GACRW,IAAWhB,EAAAA,GACX,EAAEiB,cAAWC,aAAUC,mBAAgBC,EAAMnB,UAAS;CAG5D,OACE,gBAAC,GAAA,EACC,QACE,gBAAC,GAAA;EACC,SAAQ;EACR,eACEe,EAAS;GACPM,IAAI;GACJC,QAAQ;IAAEN;IAAWC;IAAUC;GAAY;EAC7C,CAAA;EAGDE,UAdMH,MAAa,SAcVH,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA,IAAoBA,EAAAA,EAAC,EAAA,IAAA,SAAA,CAAA;;AAK1C;AAmEA,SAAgBS,IAAAA;CACd,IAAM,EAAEP,cAAWC,aAAUO,qBAAkBxB,EAAU;EACvDyB,MAAM;EACNC,SAASJ,OAAY;GACnBN,WAAWM,EAAON;GAClBC,UAAUK,EAAOL;GACjBO,eAAeF,EAAOE;EACxB;CACF,CAAA;CAEAZ,EAAiBO,EAAMQ,IAAIH,CAAAA;CAE3B,IAAM,EAAEI,WAAQC,WAAQC,kBAAeC,WAAQC,YAASb,EAAMc,UAAS;CAEvE,OACE,gBAAA,GAAA,EAAA,UAAA;EACGhB,MAAa,UAAU,gBAAC,GAAA,EAAa,YAAYO,EAAAA,CAAAA;EACjDP,MAAa,WAAW,gBAAC,GAAA,EAA+BO,iBAAAA,CAAAA;EAIzD,gBAAC,OAAA;GAAI,WAAWP,MAAa,UAAU,SAASiB,KAAAA;GAC7ClB,UAAAA,IACC,gBAAC,GAAA;IACC,WAAW;KAACA;KAAWC;KAAUO;KAAeI;KAAQC;KAAQC;KAAeC;KAAQC;IAAK;IAC5F,UACE,gBAAC,OAAA;KAAI,WAAU;KACb,UAAA,gBAAA,GAAA,EAAA,IAAA,SAAA,CAAA;;IAIH,iBAAC;KACA,QAAQf,GAAR;MACE,KAAK,SACH,OAAO,gBAAC,GAAA;OAAuBA;OAAyBO;;MAC1D,KAAK,QAOH,OALS,EADLQ,MAAS,oBACH,IAENA,MAAS,eACH,IAEF,GALE,EAAmB,YAAYR,EAAAA,CAAAA;MAM3C,SACE,OACE,gBAAC,OAAA;OAAI,WAAU;OACb,UAAA,gBAAA,GAAA;;QAAiBA,QAAAA,EAAAA,iBAAAA;;;KAGzB;IACF,EAAA,CAAA;GAGF,CAAA,IAAA,gBAAC,OAAA;IAAI,WAAU;IACb,UAAA,gBAAA,GAAA,EAAA,IAAA,SAAA,CAAA;;;;AAMZ"}
|