@scality/data-browser-library 1.0.0-preview.9 → 1.0.1

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 (285) hide show
  1. package/dist/components/DataBrowserUI.d.ts +12 -0
  2. package/dist/components/DataBrowserUI.js +99 -0
  3. package/dist/components/Editor.d.ts +1 -1
  4. package/dist/components/Editor.js +3 -3
  5. package/dist/components/__tests__/BucketAccessor.test.js +214 -0
  6. package/dist/components/__tests__/BucketCorsPage.test.d.ts +1 -0
  7. package/dist/components/__tests__/BucketCorsPage.test.js +263 -0
  8. package/dist/components/__tests__/BucketCreate.test.js +271 -105
  9. package/dist/components/__tests__/BucketDetails.test.d.ts +1 -0
  10. package/dist/components/__tests__/BucketDetails.test.js +421 -0
  11. package/dist/components/__tests__/BucketLifecycleFormPage.test.d.ts +13 -0
  12. package/dist/components/__tests__/BucketLifecycleFormPage.test.js +178 -178
  13. package/dist/components/__tests__/BucketLifecycleList.test.js +85 -85
  14. package/dist/components/__tests__/BucketList.test.js +463 -239
  15. package/dist/components/__tests__/BucketNotificationFormPage.test.d.ts +1 -0
  16. package/dist/components/__tests__/BucketNotificationFormPage.test.js +348 -0
  17. package/dist/components/__tests__/BucketNotificationList.test.d.ts +1 -0
  18. package/dist/components/__tests__/BucketNotificationList.test.js +379 -0
  19. package/dist/components/__tests__/BucketOverview.test.js +281 -266
  20. package/dist/components/__tests__/BucketPolicyPage.test.js +151 -99
  21. package/dist/components/__tests__/BucketReplicationFormPage.test.d.ts +15 -0
  22. package/dist/components/__tests__/BucketReplicationFormPage.test.js +544 -544
  23. package/dist/components/__tests__/BucketReplicationList.test.js +106 -106
  24. package/dist/components/__tests__/CreateFolderButton.test.js +56 -56
  25. package/dist/components/__tests__/DeleteBucketButton.test.js +64 -64
  26. package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.js +47 -47
  27. package/dist/components/__tests__/DeleteObjectButton.test.js +64 -64
  28. package/dist/components/__tests__/EmptyBucketButton.test.js +59 -59
  29. package/dist/components/__tests__/MetadataSearch.test.js +65 -65
  30. package/dist/components/__tests__/ObjectList.test.js +741 -240
  31. package/dist/components/__tests__/UploadButton.test.js +45 -45
  32. package/dist/components/breadcrumb/Breadcrumb.d.ts +6 -0
  33. package/dist/components/breadcrumb/Breadcrumb.js +37 -0
  34. package/dist/components/breadcrumb/DataBrowserBreadcrumb.d.ts +1 -0
  35. package/dist/components/breadcrumb/DataBrowserBreadcrumb.js +10 -0
  36. package/dist/components/breadcrumb/__tests__/Breadcrumb.test.d.ts +1 -0
  37. package/dist/components/breadcrumb/__tests__/Breadcrumb.test.js +196 -0
  38. package/dist/components/breadcrumb/__tests__/DataBrowserBreadcrumb.test.d.ts +1 -0
  39. package/dist/components/breadcrumb/__tests__/DataBrowserBreadcrumb.test.js +153 -0
  40. package/dist/components/breadcrumb/__tests__/useBreadcrumbPaths.test.d.ts +1 -0
  41. package/dist/components/breadcrumb/__tests__/useBreadcrumbPaths.test.js +134 -0
  42. package/dist/components/breadcrumb/index.d.ts +8 -0
  43. package/dist/components/breadcrumb/index.js +4 -0
  44. package/dist/components/breadcrumb/useBreadcrumbPaths.d.ts +2 -0
  45. package/dist/components/breadcrumb/useBreadcrumbPaths.js +82 -0
  46. package/dist/components/buckets/BucketAccessor.d.ts +2 -0
  47. package/dist/components/buckets/BucketAccessor.js +125 -0
  48. package/dist/components/buckets/BucketConfigEditButton.d.ts +8 -0
  49. package/dist/components/buckets/{BucketPolicyButton.js → BucketConfigEditButton.js} +9 -5
  50. package/dist/components/buckets/BucketCorsPage.d.ts +1 -0
  51. package/dist/components/buckets/BucketCorsPage.js +234 -0
  52. package/dist/components/buckets/BucketCreate.d.ts +3 -2
  53. package/dist/components/buckets/BucketCreate.js +89 -47
  54. package/dist/components/buckets/BucketDetails.d.ts +42 -0
  55. package/dist/components/buckets/BucketDetails.js +249 -85
  56. package/dist/components/buckets/BucketLifecycleFormPage.js +206 -190
  57. package/dist/components/buckets/BucketLifecycleList.d.ts +2 -2
  58. package/dist/components/buckets/BucketLifecycleList.js +47 -47
  59. package/dist/components/buckets/BucketList.d.ts +7 -8
  60. package/dist/components/buckets/BucketList.js +158 -101
  61. package/dist/components/buckets/BucketLocation.js +4 -4
  62. package/dist/components/buckets/BucketOverview.d.ts +22 -2
  63. package/dist/components/buckets/BucketOverview.js +394 -187
  64. package/dist/components/buckets/BucketPage.js +43 -21
  65. package/dist/components/buckets/BucketPolicyPage.js +155 -127
  66. package/dist/components/buckets/BucketReplicationFormPage.js +134 -133
  67. package/dist/components/buckets/BucketReplicationList.d.ts +2 -2
  68. package/dist/components/buckets/BucketReplicationList.js +42 -42
  69. package/dist/components/buckets/BucketVersioning.d.ts +4 -0
  70. package/dist/components/buckets/BucketVersioning.js +76 -0
  71. package/dist/components/buckets/DeleteBucketButton.js +8 -8
  72. package/dist/components/buckets/DeleteBucketConfigRuleButton.d.ts +2 -2
  73. package/dist/components/buckets/DeleteBucketConfigRuleButton.js +2 -2
  74. package/dist/components/buckets/EmptyBucketButton.js +24 -24
  75. package/dist/components/buckets/EmptyBucketSummary.d.ts +2 -2
  76. package/dist/components/buckets/EmptyBucketSummary.js +1 -1
  77. package/dist/components/buckets/EmptyBucketSummaryList.d.ts +1 -1
  78. package/dist/components/buckets/EmptyBucketSummaryList.js +22 -22
  79. package/dist/components/buckets/__tests__/BucketVersioning.test.d.ts +1 -0
  80. package/dist/components/buckets/__tests__/BucketVersioning.test.js +163 -0
  81. package/dist/components/buckets/notifications/BucketNotificationFormPage.d.ts +1 -0
  82. package/dist/components/buckets/notifications/BucketNotificationFormPage.js +316 -0
  83. package/dist/components/buckets/notifications/BucketNotificationList.d.ts +10 -0
  84. package/dist/components/buckets/notifications/BucketNotificationList.js +267 -0
  85. package/dist/components/buckets/notifications/EventsSection.js +145 -29
  86. package/dist/components/buckets/notifications/__tests__/events.test.d.ts +1 -0
  87. package/dist/components/buckets/notifications/__tests__/events.test.js +56 -0
  88. package/dist/components/buckets/notifications/events.d.ts +71 -7
  89. package/dist/components/buckets/notifications/events.js +98 -16
  90. package/dist/components/index.d.ts +27 -20
  91. package/dist/components/index.js +17 -10
  92. package/dist/components/layouts/ArrowNavigation.d.ts +3 -0
  93. package/dist/components/layouts/ArrowNavigation.js +28 -0
  94. package/dist/components/layouts/BrowserPageLayout.d.ts +5 -1
  95. package/dist/components/layouts/BrowserPageLayout.js +10 -5
  96. package/dist/components/objects/CreateFolderButton.d.ts +2 -2
  97. package/dist/components/objects/CreateFolderButton.js +12 -12
  98. package/dist/components/objects/DeleteObjectButton.d.ts +1 -1
  99. package/dist/components/objects/DeleteObjectButton.js +19 -21
  100. package/dist/components/objects/GetPresignedUrlButton.d.ts +7 -0
  101. package/dist/components/objects/GetPresignedUrlButton.js +255 -0
  102. package/dist/components/objects/ObjectDetails/ObjectMetadata.d.ts +2 -2
  103. package/dist/components/objects/ObjectDetails/ObjectMetadata.js +263 -230
  104. package/dist/components/objects/ObjectDetails/ObjectSummary.d.ts +2 -2
  105. package/dist/components/objects/ObjectDetails/ObjectSummary.js +540 -138
  106. package/dist/components/objects/ObjectDetails/ObjectTags.d.ts +2 -2
  107. package/dist/components/objects/ObjectDetails/ObjectTags.js +95 -123
  108. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.d.ts +1 -0
  109. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.js +516 -0
  110. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.d.ts +1 -0
  111. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.js +1064 -0
  112. package/dist/components/objects/ObjectDetails/index.d.ts +18 -2
  113. package/dist/components/objects/ObjectDetails/index.js +152 -40
  114. package/dist/components/objects/ObjectList.d.ts +12 -10
  115. package/dist/components/objects/ObjectList.js +590 -263
  116. package/dist/components/objects/ObjectLock/EditRetentionButton.js +4 -4
  117. package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.js +15 -15
  118. package/dist/components/objects/ObjectLock/ObjectLockSettings.d.ts +1 -1
  119. package/dist/components/objects/ObjectLock/ObjectLockSettings.js +32 -31
  120. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.d.ts +1 -1
  121. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.js +6 -6
  122. package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.js +51 -51
  123. package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.js +78 -78
  124. package/dist/components/objects/ObjectPage.js +12 -8
  125. package/dist/components/objects/UploadButton.d.ts +3 -3
  126. package/dist/components/objects/UploadButton.js +10 -10
  127. package/dist/components/objects/__tests__/GetPresignedUrlButton.test.d.ts +1 -0
  128. package/dist/components/objects/__tests__/GetPresignedUrlButton.test.js +531 -0
  129. package/dist/components/providers/DataBrowserProvider.d.ts +23 -12
  130. package/dist/components/providers/DataBrowserProvider.js +60 -38
  131. package/dist/components/providers/QueryProvider.d.ts +9 -0
  132. package/dist/components/providers/QueryProvider.js +21 -0
  133. package/dist/components/search/MetadataSearch.js +29 -28
  134. package/dist/components/search/SearchHints.js +1 -1
  135. package/dist/components/ui/ArrayFieldActions.js +12 -7
  136. package/dist/components/ui/ConfirmDeleteRuleModal.d.ts +2 -2
  137. package/dist/components/ui/ConfirmDeleteRuleModal.js +6 -1
  138. package/dist/components/ui/DeleteObjectModalContent.d.ts +1 -1
  139. package/dist/components/ui/DeleteObjectModalContent.js +12 -12
  140. package/dist/components/ui/FilterFormSection.d.ts +2 -2
  141. package/dist/components/ui/FilterFormSection.js +29 -29
  142. package/dist/components/ui/Search.elements.d.ts +2 -2
  143. package/dist/components/ui/Search.elements.js +7 -7
  144. package/dist/components/ui/Table.elements.d.ts +2 -1
  145. package/dist/components/ui/Table.elements.js +18 -12
  146. package/dist/config/__tests__/factory.test.d.ts +1 -0
  147. package/dist/config/__tests__/factory.test.js +311 -0
  148. package/dist/config/factory.d.ts +10 -56
  149. package/dist/config/factory.js +23 -71
  150. package/dist/config/types.d.ts +212 -34
  151. package/dist/contexts/DataBrowserUICustomizationContext.d.ts +27 -0
  152. package/dist/contexts/DataBrowserUICustomizationContext.js +13 -0
  153. package/dist/hooks/__tests__/useAccessibleBuckets.test.d.ts +1 -0
  154. package/dist/hooks/__tests__/useAccessibleBuckets.test.js +145 -0
  155. package/dist/hooks/__tests__/useISVBucketDetection.test.js +45 -45
  156. package/dist/hooks/__tests__/useIsBucketEmpty.test.js +27 -27
  157. package/dist/hooks/__tests__/useLoginMutation.test.d.ts +1 -0
  158. package/dist/hooks/__tests__/useLoginMutation.test.js +194 -0
  159. package/dist/hooks/bucketConfiguration.d.ts +8 -1
  160. package/dist/hooks/bucketConfiguration.js +52 -51
  161. package/dist/hooks/bucketOperations.d.ts +10 -1
  162. package/dist/hooks/bucketOperations.js +10 -9
  163. package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.js +80 -80
  164. package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.js +80 -80
  165. package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.js +44 -44
  166. package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.js +63 -63
  167. package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.js +65 -65
  168. package/dist/hooks/factories/index.d.ts +4 -4
  169. package/dist/hooks/factories/index.js +2 -2
  170. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.d.ts +2 -2
  171. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.js +16 -13
  172. package/dist/hooks/factories/useCreateS3LoginHook.d.ts +2 -2
  173. package/dist/hooks/factories/useCreateS3LoginHook.js +1 -1
  174. package/dist/hooks/factories/useCreateS3MutationHook.d.ts +3 -3
  175. package/dist/hooks/factories/useCreateS3MutationHook.js +7 -2
  176. package/dist/hooks/factories/useCreateS3QueryHook.d.ts +2 -2
  177. package/dist/hooks/factories/useCreateS3QueryHook.js +11 -6
  178. package/dist/hooks/index.d.ts +19 -12
  179. package/dist/hooks/index.js +16 -9
  180. package/dist/hooks/loginOperations.d.ts +1 -1
  181. package/dist/hooks/loginOperations.js +1 -1
  182. package/dist/hooks/objectOperations.d.ts +2 -2
  183. package/dist/hooks/objectOperations.js +50 -49
  184. package/dist/hooks/presignedOperations.d.ts +4 -4
  185. package/dist/hooks/presignedOperations.js +5 -5
  186. package/dist/hooks/useAccessibleBuckets.d.ts +11 -0
  187. package/dist/hooks/useAccessibleBuckets.js +115 -0
  188. package/dist/hooks/useBatchObjectLegalHold.d.ts +11 -0
  189. package/dist/hooks/useBatchObjectLegalHold.js +48 -0
  190. package/dist/hooks/useBucketConfigEditor.d.ts +31 -0
  191. package/dist/hooks/useBucketConfigEditor.js +82 -0
  192. package/dist/hooks/useDataBrowserNavigate.d.ts +28 -0
  193. package/dist/hooks/useDataBrowserNavigate.js +24 -0
  194. package/dist/hooks/useDeleteBucketConfigRule.d.ts +2 -2
  195. package/dist/hooks/useDeleteBucketConfigRule.js +4 -4
  196. package/dist/hooks/useEmptyBucket.js +11 -11
  197. package/dist/hooks/useFeatures.d.ts +7 -0
  198. package/dist/hooks/useFeatures.js +8 -0
  199. package/dist/hooks/useISVBucketDetection.js +6 -6
  200. package/dist/hooks/useIsBucketEmpty.js +4 -4
  201. package/dist/hooks/useLimitedAccessFlow.d.ts +48 -0
  202. package/dist/hooks/useLimitedAccessFlow.js +23 -0
  203. package/dist/hooks/useS3Client.d.ts +6 -0
  204. package/dist/hooks/useS3Client.js +3 -2
  205. package/dist/hooks/useS3ConfigSwitch.d.ts +11 -0
  206. package/dist/hooks/useS3ConfigSwitch.js +37 -0
  207. package/dist/hooks/useSupportedNotificationEvents.d.ts +6 -0
  208. package/dist/hooks/useSupportedNotificationEvents.js +8 -0
  209. package/dist/index.d.ts +6 -6
  210. package/dist/index.js +2 -2
  211. package/dist/schemas/bucketPolicySchema.json +3 -13
  212. package/dist/test/msw/handlers/deleteBucket.d.ts +1 -1
  213. package/dist/test/msw/handlers/deleteBucket.js +20 -10
  214. package/dist/test/msw/handlers/getBucketAcl.d.ts +1 -1
  215. package/dist/test/msw/handlers/getBucketAcl.js +29 -17
  216. package/dist/test/msw/handlers/getBucketLocation.d.ts +1 -1
  217. package/dist/test/msw/handlers/getBucketLocation.js +29 -15
  218. package/dist/test/msw/handlers/getBucketPolicy.d.ts +1 -1
  219. package/dist/test/msw/handlers/getBucketPolicy.js +52 -32
  220. package/dist/test/msw/handlers/headObject.d.ts +1 -1
  221. package/dist/test/msw/handlers/headObject.js +31 -13
  222. package/dist/test/msw/handlers/listBuckets.d.ts +1 -1
  223. package/dist/test/msw/handlers/listBuckets.js +5 -3
  224. package/dist/test/msw/handlers/listObjectVersions.d.ts +1 -1
  225. package/dist/test/msw/handlers/listObjectVersions.js +38 -26
  226. package/dist/test/msw/handlers/listObjects.d.ts +1 -1
  227. package/dist/test/msw/handlers/listObjects.js +35 -23
  228. package/dist/test/msw/handlers/objectLegalHold.d.ts +1 -1
  229. package/dist/test/msw/handlers/objectLegalHold.js +32 -17
  230. package/dist/test/msw/handlers/objectRetention.d.ts +1 -1
  231. package/dist/test/msw/handlers/objectRetention.js +31 -17
  232. package/dist/test/msw/handlers/putBucketAcl.d.ts +1 -1
  233. package/dist/test/msw/handlers/putBucketAcl.js +29 -14
  234. package/dist/test/msw/handlers/putObject.d.ts +1 -1
  235. package/dist/test/msw/handlers/putObject.js +27 -12
  236. package/dist/test/msw/handlers.d.ts +3 -3
  237. package/dist/test/msw/handlers.js +77 -54
  238. package/dist/test/msw/index.d.ts +2 -2
  239. package/dist/test/msw/index.js +1 -1
  240. package/dist/test/msw/server.d.ts +1 -1
  241. package/dist/test/msw/server.js +1 -1
  242. package/dist/test/msw/utils.js +2 -2
  243. package/dist/test/setup.d.ts +1 -1
  244. package/dist/test/setup.js +13 -30
  245. package/dist/test/testUtils.d.ts +85 -33
  246. package/dist/test/testUtils.js +176 -111
  247. package/dist/test/utils/errorHandling.test.js +119 -119
  248. package/dist/types/index.d.ts +49 -36
  249. package/dist/types/monaco.d.ts +13 -0
  250. package/dist/types/monaco.js +0 -0
  251. package/dist/utils/__tests__/proxyMiddleware.test.d.ts +1 -0
  252. package/dist/utils/__tests__/proxyMiddleware.test.js +579 -0
  253. package/dist/utils/__tests__/s3Client.test.d.ts +1 -0
  254. package/dist/utils/__tests__/s3Client.test.js +340 -0
  255. package/dist/utils/__tests__/s3ConfigIdentifier.test.d.ts +1 -0
  256. package/dist/utils/__tests__/s3ConfigIdentifier.test.js +437 -0
  257. package/dist/utils/constants.d.ts +10 -0
  258. package/dist/utils/constants.js +19 -9
  259. package/dist/utils/deletion/index.d.ts +2 -2
  260. package/dist/utils/deletion/index.js +1 -1
  261. package/dist/utils/deletion/messages.d.ts +1 -1
  262. package/dist/utils/deletion/messages.js +4 -4
  263. package/dist/utils/errorHandling.d.ts +3 -3
  264. package/dist/utils/errorHandling.js +6 -6
  265. package/dist/utils/hooks.js +8 -8
  266. package/dist/utils/index.d.ts +5 -4
  267. package/dist/utils/index.js +4 -2
  268. package/dist/utils/proxyMiddleware.d.ts +32 -13
  269. package/dist/utils/proxyMiddleware.js +90 -36
  270. package/dist/utils/s3Client.d.ts +14 -4
  271. package/dist/utils/s3Client.js +5 -26
  272. package/dist/utils/s3ConfigIdentifier.d.ts +79 -0
  273. package/dist/utils/s3ConfigIdentifier.js +57 -0
  274. package/dist/utils/s3RuleUtils.d.ts +5 -5
  275. package/dist/utils/s3RuleUtils.js +17 -17
  276. package/package.json +10 -8
  277. package/dist/components/__tests__/BucketNotificationCreatePage.test.js +0 -316
  278. package/dist/components/buckets/BucketPolicyButton.d.ts +0 -7
  279. package/dist/components/buckets/notifications/BucketNotificationCreatePage.d.ts +0 -1
  280. package/dist/components/buckets/notifications/BucketNotificationCreatePage.js +0 -234
  281. package/dist/hooks/useLoginMutation.d.ts +0 -21
  282. package/dist/hooks/useLoginMutation.js +0 -9
  283. package/dist/utils/useFeatures.d.ts +0 -1
  284. package/dist/utils/useFeatures.js +0 -7
  285. /package/dist/components/__tests__/{BucketNotificationCreatePage.test.d.ts → BucketAccessor.test.d.ts} +0 -0
@@ -1,10 +1,30 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
- import { ConstrainedText, FormattedDateTime, Loader, PrettyBytes, spacing } from "@scality/core-ui";
3
- import { useObjectLegalHold, useObjectMetadata, useObjectRetention } from "../../../hooks/index.js";
4
- import { Body, ExtraCell, Group, GroupContent, GroupName, GroupValues, Key, Row, Table, TableContainer, Value } from "../../ui/Table.elements.js";
2
+ import { ConstrainedText, FormattedDateTime, Icon, Loader, PrettyBytes, Text, Toggle, Tooltip, spacing, useToast } from "@scality/core-ui";
5
3
  import { CopyButton } from "@scality/core-ui/dist/components/buttonv2/CopyButton.component";
6
4
  import { Box } from "@scality/core-ui/dist/next";
5
+ import { Fragment as external_react_Fragment, useCallback, useMemo } from "react";
6
+ import { useDataBrowserUICustomization } from "../../../contexts/DataBrowserUICustomizationContext.js";
7
+ import { useGetPublicAccessBlock, useObjectAcl, useObjectLegalHold, useObjectMetadata, useObjectRetention, useSetObjectAcl, useSetObjectLegalHold } from "../../../hooks/index.js";
8
+ import { useDataBrowserConfig } from "../../providers/DataBrowserProvider.js";
9
+ import { Body, ExtraCell, Group, GroupContent, GroupName, GroupValues, Key, Row, Table, TableContainer, Value } from "../../ui/Table.elements.js";
10
+ import { GetPresignedUrlButton } from "../GetPresignedUrlButton.js";
11
+ const PUBLIC_ACL_URI = 'http://acs.amazonaws.com/groups/global/AllUsers';
12
+ const buildPublicUrl = (endpoint, bucket, key, forcePathStyle)=>{
13
+ if (!endpoint) return '';
14
+ const normalizedEndpoint = endpoint.endsWith('/') ? endpoint.slice(0, -1) : endpoint;
15
+ const encodedKey = key.split('/').map((segment)=>encodeURIComponent(segment)).join('/');
16
+ if (forcePathStyle) return `${normalizedEndpoint}/${bucket}/${encodedKey}`;
17
+ try {
18
+ const url = new URL(normalizedEndpoint);
19
+ url.hostname = `${bucket}.${url.hostname}`;
20
+ return `${url.origin}/${encodedKey}`;
21
+ } catch {
22
+ return `${normalizedEndpoint}/${bucket}/${encodedKey}`;
23
+ }
24
+ };
7
25
  const ObjectSummary = ({ bucketName, objectKey, versionId })=>{
26
+ const s3Config = useDataBrowserConfig();
27
+ const { extraObjectSummaryInformation, extraObjectSummaryDataProtection } = useDataBrowserUICustomization();
8
28
  const { data: metadata, status: metadataStatus } = useObjectMetadata({
9
29
  Bucket: bucketName,
10
30
  Key: objectKey,
@@ -26,121 +46,532 @@ const ObjectSummary = ({ bucketName, objectKey, versionId })=>{
26
46
  VersionId: versionId
27
47
  }
28
48
  });
29
- return /*#__PURE__*/ jsx(TableContainer, {
30
- children: /*#__PURE__*/ jsx(Table, {
31
- children: /*#__PURE__*/ jsxs(Body, {
32
- children: [
33
- /*#__PURE__*/ jsxs(Group, {
49
+ const { mutate: setLegalHold, isPending: isUpdatingLegalHold } = useSetObjectLegalHold();
50
+ const { showToast } = useToast();
51
+ const { data: aclData, status: aclStatus } = useObjectAcl({
52
+ Bucket: bucketName,
53
+ Key: objectKey,
54
+ ...versionId && {
55
+ VersionId: versionId
56
+ }
57
+ });
58
+ const { mutate: setObjectAcl, isPending: isUpdatingAcl } = useSetObjectAcl();
59
+ const { data: publicAccessBlockData, status: publicAccessBlockStatus, error: publicAccessBlockError } = useGetPublicAccessBlock({
60
+ Bucket: bucketName
61
+ });
62
+ const isPublic = aclData?.Grants?.some((grant)=>grant.Grantee?.URI === PUBLIC_ACL_URI && ('READ' === grant.Permission || 'FULL_CONTROL' === grant.Permission)) ?? false;
63
+ const isPublicAccessBlockPending = 'pending' === publicAccessBlockStatus;
64
+ const isPublicAccessBlockNotImplemented = publicAccessBlockError?.statusCode === 501;
65
+ const shouldHidePublicFeature = isPublicAccessBlockNotImplemented || isPublicAccessBlockPending;
66
+ const isPublicAccessBlockError = 'error' === publicAccessBlockStatus && !isPublicAccessBlockNotImplemented;
67
+ const isPublicAccessBlocked = publicAccessBlockData?.PublicAccessBlockConfiguration?.BlockPublicAcls === true || publicAccessBlockData?.PublicAccessBlockConfiguration?.IgnorePublicAcls === true;
68
+ const isToggleDisabled = isUpdatingAcl || isPublicAccessBlocked || isPublicAccessBlockError;
69
+ const getDisabledReason = useCallback(()=>{
70
+ if (isPublicAccessBlockError) return 'Unable to check public access block settings';
71
+ if (isPublicAccessBlocked) return 'Public access is blocked at bucket level';
72
+ return null;
73
+ }, [
74
+ isPublicAccessBlockError,
75
+ isPublicAccessBlocked
76
+ ]);
77
+ const publicUrl = useMemo(()=>isPublic && !shouldHidePublicFeature ? buildPublicUrl(s3Config.endpoint, bucketName, objectKey, s3Config.forcePathStyle) : '', [
78
+ isPublic,
79
+ shouldHidePublicFeature,
80
+ s3Config.endpoint,
81
+ s3Config.forcePathStyle,
82
+ bucketName,
83
+ objectKey
84
+ ]);
85
+ const isLegalHoldEnabled = legalHoldData?.LegalHold?.Status === 'ON';
86
+ const hasRetention = retentionData?.Retention?.Mode;
87
+ const isObjectLockAvailable = hasRetention || 'pending' === retentionStatus || 'success' === legalHoldStatus;
88
+ const handleLegalHoldChange = useCallback(()=>{
89
+ setLegalHold({
90
+ Bucket: bucketName,
91
+ Key: objectKey,
92
+ ...versionId && {
93
+ VersionId: versionId
94
+ },
95
+ LegalHold: {
96
+ Status: isLegalHoldEnabled ? 'OFF' : 'ON'
97
+ }
98
+ }, {
99
+ onSuccess: ()=>{
100
+ showToast({
101
+ open: true,
102
+ message: `Legal hold ${isLegalHoldEnabled ? 'inactive' : 'active'}`,
103
+ status: 'success'
104
+ });
105
+ },
106
+ onError: (error)=>{
107
+ showToast({
108
+ open: true,
109
+ message: error instanceof Error ? error.message : 'Failed to update legal hold',
110
+ status: 'error'
111
+ });
112
+ }
113
+ });
114
+ }, [
115
+ bucketName,
116
+ objectKey,
117
+ versionId,
118
+ isLegalHoldEnabled,
119
+ setLegalHold,
120
+ showToast
121
+ ]);
122
+ const handlePublicChange = useCallback(()=>{
123
+ setObjectAcl({
124
+ Bucket: bucketName,
125
+ Key: objectKey,
126
+ ...versionId && {
127
+ VersionId: versionId
128
+ },
129
+ ACL: isPublic ? 'private' : 'public-read'
130
+ }, {
131
+ onSuccess: ()=>{
132
+ showToast({
133
+ open: true,
134
+ message: `Object is now ${isPublic ? 'private' : 'public'}`,
135
+ status: 'success'
136
+ });
137
+ },
138
+ onError: (error)=>{
139
+ showToast({
140
+ open: true,
141
+ message: error instanceof Error ? error.message : 'Failed to update object visibility',
142
+ status: 'error'
143
+ });
144
+ }
145
+ });
146
+ }, [
147
+ bucketName,
148
+ objectKey,
149
+ versionId,
150
+ isPublic,
151
+ setObjectAcl,
152
+ showToast
153
+ ]);
154
+ const informationFields = useMemo(()=>{
155
+ const defaultFields = {
156
+ name: {
157
+ id: 'name',
158
+ label: 'Name',
159
+ node: /*#__PURE__*/ jsxs(Row, {
160
+ children: [
161
+ /*#__PURE__*/ jsx(Key, {
162
+ children: "Name"
163
+ }),
164
+ /*#__PURE__*/ jsx(Value, {
165
+ width: "15rem",
166
+ children: /*#__PURE__*/ jsx(ConstrainedText, {
167
+ text: objectKey,
168
+ lineClamp: 2
169
+ })
170
+ })
171
+ ]
172
+ }, "name")
173
+ },
174
+ versionId: {
175
+ id: 'versionId',
176
+ label: 'Version ID',
177
+ node: /*#__PURE__*/ jsxs(Row, {
178
+ children: [
179
+ /*#__PURE__*/ jsx(Key, {
180
+ children: "Version ID"
181
+ }),
182
+ /*#__PURE__*/ jsx(Value, {
183
+ children: 'pending' === metadataStatus ? /*#__PURE__*/ jsx(Loader, {}) : 'error' === metadataStatus ? 'Error' : /*#__PURE__*/ jsxs(GroupValues, {
184
+ children: [
185
+ /*#__PURE__*/ jsx(Box, {
186
+ flex: "1",
187
+ minWidth: "0",
188
+ children: /*#__PURE__*/ jsx(ConstrainedText, {
189
+ text: metadata?.VersionId || versionId || 'N/A',
190
+ lineClamp: 1
191
+ })
192
+ }),
193
+ /*#__PURE__*/ jsx(ExtraCell, {
194
+ marginLeft: spacing.f8,
195
+ children: /*#__PURE__*/ jsx(CopyButton, {
196
+ textToCopy: metadata?.VersionId || versionId || ''
197
+ })
198
+ })
199
+ ]
200
+ })
201
+ })
202
+ ]
203
+ }, "versionId")
204
+ },
205
+ size: {
206
+ id: 'size',
207
+ label: 'Size',
208
+ node: /*#__PURE__*/ jsxs(Row, {
209
+ children: [
210
+ /*#__PURE__*/ jsx(Key, {
211
+ children: "Size"
212
+ }),
213
+ /*#__PURE__*/ jsx(Value, {
214
+ children: 'pending' === metadataStatus ? /*#__PURE__*/ jsx(Loader, {}) : 'error' === metadataStatus ? 'Error' : /*#__PURE__*/ jsx(PrettyBytes, {
215
+ bytes: metadata?.ContentLength || 0
216
+ })
217
+ })
218
+ ]
219
+ }, "size")
220
+ },
221
+ lastModified: {
222
+ id: 'lastModified',
223
+ label: 'Modified On',
224
+ node: /*#__PURE__*/ jsxs(Row, {
225
+ children: [
226
+ /*#__PURE__*/ jsx(Key, {
227
+ children: "Modified On"
228
+ }),
229
+ /*#__PURE__*/ jsx(Value, {
230
+ children: 'pending' === metadataStatus ? /*#__PURE__*/ jsx(Loader, {}) : 'error' === metadataStatus ? 'Error' : metadata?.LastModified ? /*#__PURE__*/ jsx(FormattedDateTime, {
231
+ value: metadata.LastModified,
232
+ format: "date-time-second"
233
+ }) : 'N/A'
234
+ })
235
+ ]
236
+ }, "lastModified")
237
+ },
238
+ etag: {
239
+ id: 'etag',
240
+ label: 'ETag',
241
+ node: /*#__PURE__*/ jsxs(Row, {
242
+ children: [
243
+ /*#__PURE__*/ jsx(Key, {
244
+ children: "ETag"
245
+ }),
246
+ /*#__PURE__*/ jsx(Value, {
247
+ children: 'pending' === metadataStatus ? /*#__PURE__*/ jsx(Loader, {}) : 'error' === metadataStatus ? 'Error' : /*#__PURE__*/ jsxs(GroupValues, {
248
+ children: [
249
+ /*#__PURE__*/ jsx(Box, {
250
+ flex: "1",
251
+ minWidth: "0",
252
+ children: /*#__PURE__*/ jsx(ConstrainedText, {
253
+ text: metadata?.ETag?.replace(/^"|"$/g, '') || 'N/A',
254
+ lineClamp: 1
255
+ })
256
+ }),
257
+ /*#__PURE__*/ jsx(ExtraCell, {
258
+ marginLeft: spacing.f8,
259
+ children: /*#__PURE__*/ jsx(CopyButton, {
260
+ textToCopy: metadata?.ETag?.replace(/^"|"$/g, '') || ''
261
+ })
262
+ })
263
+ ]
264
+ })
265
+ })
266
+ ]
267
+ }, "etag")
268
+ },
269
+ location: {
270
+ id: 'location',
271
+ label: 'Location',
272
+ node: /*#__PURE__*/ jsxs(Row, {
273
+ children: [
274
+ /*#__PURE__*/ jsx(Key, {
275
+ children: "Location"
276
+ }),
277
+ /*#__PURE__*/ jsx(Value, {
278
+ children: "default"
279
+ })
280
+ ]
281
+ }, "location")
282
+ }
283
+ };
284
+ const extraFields = [];
285
+ extraObjectSummaryInformation?.forEach((fieldConfig)=>{
286
+ const RenderComponent = fieldConfig.render;
287
+ const fieldItem = {
288
+ id: fieldConfig.id,
289
+ label: fieldConfig.label,
290
+ node: /*#__PURE__*/ jsxs(Row, {
291
+ children: [
292
+ fieldConfig.label && /*#__PURE__*/ jsx(Key, {
293
+ children: fieldConfig.label
294
+ }),
295
+ /*#__PURE__*/ jsx(Value, {
296
+ children: /*#__PURE__*/ jsx(RenderComponent, {
297
+ entityName: objectKey
298
+ })
299
+ })
300
+ ]
301
+ }, fieldConfig.id)
302
+ };
303
+ if (defaultFields[fieldConfig.id]) defaultFields[fieldConfig.id] = fieldItem;
304
+ else extraFields.push(fieldItem);
305
+ });
306
+ return [
307
+ defaultFields.name,
308
+ defaultFields.versionId,
309
+ defaultFields.size,
310
+ defaultFields.lastModified,
311
+ defaultFields.etag,
312
+ defaultFields.location,
313
+ ...extraFields
314
+ ].filter((field)=>null !== field.node);
315
+ }, [
316
+ objectKey,
317
+ versionId,
318
+ metadata?.VersionId,
319
+ metadata?.ContentLength,
320
+ metadata?.LastModified,
321
+ metadata?.ETag,
322
+ metadataStatus,
323
+ extraObjectSummaryInformation
324
+ ]);
325
+ const accessFields = useMemo(()=>{
326
+ const fields = [];
327
+ if (!shouldHidePublicFeature) {
328
+ const disabledReason = getDisabledReason();
329
+ const toggleElement = /*#__PURE__*/ jsx(Toggle, {
330
+ id: "publicToggle",
331
+ disabled: isToggleDisabled,
332
+ toggle: isPublic,
333
+ label: isPublic ? 'Active' : 'Inactive',
334
+ onChange: handlePublicChange
335
+ });
336
+ if ('pending' === aclStatus) fields.push({
337
+ id: 'public',
338
+ label: 'Public',
339
+ node: /*#__PURE__*/ jsxs(Row, {
340
+ children: [
341
+ /*#__PURE__*/ jsx(Key, {
342
+ children: "Public"
343
+ }),
344
+ /*#__PURE__*/ jsx(Value, {
345
+ children: /*#__PURE__*/ jsx(Loader, {})
346
+ })
347
+ ]
348
+ }, "public")
349
+ });
350
+ else if ('error' === aclStatus) fields.push({
351
+ id: 'public',
352
+ label: 'Public',
353
+ node: /*#__PURE__*/ jsxs(Row, {
354
+ children: [
355
+ /*#__PURE__*/ jsx(Key, {
356
+ children: "Public"
357
+ }),
358
+ /*#__PURE__*/ jsx(Value, {
359
+ children: "N/A"
360
+ })
361
+ ]
362
+ }, "public")
363
+ });
364
+ else {
365
+ fields.push({
366
+ id: 'public',
367
+ label: 'Public',
368
+ node: /*#__PURE__*/ jsxs(Row, {
34
369
  children: [
35
- /*#__PURE__*/ jsx(GroupName, {
36
- children: "Information"
370
+ /*#__PURE__*/ jsx(Key, {
371
+ children: "Public"
37
372
  }),
38
- /*#__PURE__*/ jsxs(GroupContent, {
373
+ /*#__PURE__*/ jsx(Value, {
374
+ children: disabledReason ? /*#__PURE__*/ jsx(Tooltip, {
375
+ overlay: disabledReason,
376
+ children: /*#__PURE__*/ jsx(Box, {
377
+ display: "inline-block",
378
+ children: toggleElement
379
+ })
380
+ }) : toggleElement
381
+ })
382
+ ]
383
+ }, "public")
384
+ });
385
+ if (isPublic) {
386
+ fields.push({
387
+ id: 'publicHint',
388
+ label: '',
389
+ node: /*#__PURE__*/ jsx(Box, {
390
+ marginTop: `-${spacing.r16}`,
391
+ children: /*#__PURE__*/ jsxs(Row, {
39
392
  children: [
40
- /*#__PURE__*/ jsxs(Row, {
393
+ /*#__PURE__*/ jsx(Key, {}),
394
+ /*#__PURE__*/ jsx(Value, {
395
+ children: /*#__PURE__*/ jsx(Text, {
396
+ color: "statusWarning",
397
+ variant: "Small",
398
+ children: "Available to anyone with the link and endpoint access"
399
+ })
400
+ })
401
+ ]
402
+ })
403
+ }, "publicHint")
404
+ });
405
+ if (publicUrl) fields.push({
406
+ id: 'externalLink',
407
+ label: 'External link',
408
+ node: /*#__PURE__*/ jsxs(Row, {
409
+ children: [
410
+ /*#__PURE__*/ jsx(Key, {
411
+ children: "External link"
412
+ }),
413
+ /*#__PURE__*/ jsx(Value, {
414
+ children: /*#__PURE__*/ jsxs(GroupValues, {
41
415
  children: [
42
- /*#__PURE__*/ jsx(Key, {
43
- children: "Name"
44
- }),
45
- /*#__PURE__*/ jsx(Value, {
46
- width: "15rem",
416
+ /*#__PURE__*/ jsx(Box, {
417
+ flex: "1",
418
+ minWidth: "0",
47
419
  children: /*#__PURE__*/ jsx(ConstrainedText, {
48
- text: objectKey,
49
- lineClamp: 2
50
- })
51
- })
52
- ]
53
- }),
54
- /*#__PURE__*/ jsxs(Row, {
55
- children: [
56
- /*#__PURE__*/ jsx(Key, {
57
- children: "Version ID"
58
- }),
59
- /*#__PURE__*/ jsx(Value, {
60
- children: "pending" === metadataStatus ? /*#__PURE__*/ jsx(Loader, {}) : "error" === metadataStatus ? "Error" : /*#__PURE__*/ jsxs(GroupValues, {
61
- children: [
62
- /*#__PURE__*/ jsx(Box, {
63
- flex: "1",
64
- minWidth: "0",
65
- children: /*#__PURE__*/ jsx(ConstrainedText, {
66
- text: metadata?.VersionId || versionId || "N/A",
67
- lineClamp: 1
68
- })
69
- }),
70
- /*#__PURE__*/ jsx(ExtraCell, {
71
- marginLeft: spacing.f8,
72
- children: /*#__PURE__*/ jsx(CopyButton, {
73
- textToCopy: metadata?.VersionId || versionId || ""
74
- })
75
- })
76
- ]
77
- })
78
- })
79
- ]
80
- }),
81
- /*#__PURE__*/ jsxs(Row, {
82
- children: [
83
- /*#__PURE__*/ jsx(Key, {
84
- children: "Size"
85
- }),
86
- /*#__PURE__*/ jsx(Value, {
87
- children: "pending" === metadataStatus ? /*#__PURE__*/ jsx(Loader, {}) : "error" === metadataStatus ? "Error" : /*#__PURE__*/ jsx(PrettyBytes, {
88
- bytes: metadata?.ContentLength || 0
420
+ text: publicUrl,
421
+ lineClamp: 1
89
422
  })
90
- })
91
- ]
92
- }),
93
- /*#__PURE__*/ jsxs(Row, {
94
- children: [
95
- /*#__PURE__*/ jsx(Key, {
96
- children: "Modified On"
97
- }),
98
- /*#__PURE__*/ jsx(Value, {
99
- children: "pending" === metadataStatus ? /*#__PURE__*/ jsx(Loader, {}) : "error" === metadataStatus ? "Error" : metadata?.LastModified ? /*#__PURE__*/ jsx(FormattedDateTime, {
100
- value: metadata.LastModified,
101
- format: "date-time-second"
102
- }) : "N/A"
103
- })
104
- ]
105
- }),
106
- /*#__PURE__*/ jsxs(Row, {
107
- children: [
108
- /*#__PURE__*/ jsx(Key, {
109
- children: "ETag"
110
423
  }),
111
- /*#__PURE__*/ jsx(Value, {
112
- children: "pending" === metadataStatus ? /*#__PURE__*/ jsx(Loader, {}) : "error" === metadataStatus ? "Error" : /*#__PURE__*/ jsxs(GroupValues, {
113
- children: [
114
- /*#__PURE__*/ jsx(Box, {
115
- flex: "1",
116
- minWidth: "0",
117
- children: /*#__PURE__*/ jsx(ConstrainedText, {
118
- text: metadata.ETag?.replace(/^"|"$/g, "") || "N/A",
119
- lineClamp: 1
120
- })
121
- }),
122
- /*#__PURE__*/ jsx(ExtraCell, {
123
- marginLeft: spacing.f8,
124
- children: /*#__PURE__*/ jsx(CopyButton, {
125
- textToCopy: metadata.ETag?.replace(/^"|"$/g, "") || ""
126
- })
127
- })
128
- ]
424
+ /*#__PURE__*/ jsx(ExtraCell, {
425
+ marginLeft: spacing.f8,
426
+ children: /*#__PURE__*/ jsx(CopyButton, {
427
+ textToCopy: publicUrl
129
428
  })
130
429
  })
131
430
  ]
431
+ })
432
+ })
433
+ ]
434
+ }, "externalLink")
435
+ });
436
+ }
437
+ }
438
+ }
439
+ return fields;
440
+ }, [
441
+ shouldHidePublicFeature,
442
+ aclStatus,
443
+ isPublic,
444
+ isToggleDisabled,
445
+ handlePublicChange,
446
+ publicUrl,
447
+ getDisabledReason
448
+ ]);
449
+ const dataProtectionFields = useMemo(()=>{
450
+ const defaultFields = {
451
+ lock: {
452
+ id: 'lock',
453
+ label: 'Lock',
454
+ node: /*#__PURE__*/ jsxs(Row, {
455
+ children: [
456
+ /*#__PURE__*/ jsx(Key, {
457
+ children: "Lock"
458
+ }),
459
+ /*#__PURE__*/ jsx(Value, {
460
+ children: 'pending' === retentionStatus ? /*#__PURE__*/ jsx(Loader, {}) : 'error' === retentionStatus ? 'No Retention' : retentionData?.Retention?.Mode ? /*#__PURE__*/ jsxs(Fragment, {
461
+ children: [
462
+ retentionData.Retention.Mode,
463
+ " until",
464
+ ' ',
465
+ retentionData.Retention.RetainUntilDate ? /*#__PURE__*/ jsx(FormattedDateTime, {
466
+ format: "date-time-second",
467
+ value: new Date(retentionData.Retention.RetainUntilDate)
468
+ }) : 'N/A'
469
+ ]
470
+ }) : 'No Retention'
471
+ })
472
+ ]
473
+ }, "lock")
474
+ },
475
+ legalHold: {
476
+ id: 'legalHold',
477
+ label: 'Legal Hold',
478
+ node: /*#__PURE__*/ jsxs(Row, {
479
+ children: [
480
+ /*#__PURE__*/ jsx(Key, {
481
+ children: "Legal Hold"
482
+ }),
483
+ /*#__PURE__*/ jsx(Value, {
484
+ children: 'pending' === legalHoldStatus ? /*#__PURE__*/ jsx(Loader, {}) : isObjectLockAvailable ? /*#__PURE__*/ jsxs(Box, {
485
+ display: "flex",
486
+ alignItems: "center",
487
+ gap: spacing.r8,
488
+ children: [
489
+ /*#__PURE__*/ jsx(Toggle, {
490
+ id: "legalHoldToggle",
491
+ disabled: isUpdatingLegalHold,
492
+ toggle: isLegalHoldEnabled,
493
+ label: isLegalHoldEnabled ? 'Active' : 'Inactive',
494
+ onChange: handleLegalHoldChange
132
495
  }),
133
- /*#__PURE__*/ jsxs(Row, {
134
- children: [
135
- /*#__PURE__*/ jsx(Key, {
136
- children: "Location"
137
- }),
138
- /*#__PURE__*/ jsx(Value, {
139
- children: "default"
140
- })
141
- ]
496
+ isLegalHoldEnabled && /*#__PURE__*/ jsx(Icon, {
497
+ name: "Rebalance"
142
498
  })
143
499
  ]
500
+ }) : 'N/A'
501
+ })
502
+ ]
503
+ }, "legalHold")
504
+ }
505
+ };
506
+ const extraFields = [];
507
+ extraObjectSummaryDataProtection?.forEach((fieldConfig)=>{
508
+ const RenderComponent = fieldConfig.render;
509
+ const fieldItem = {
510
+ id: fieldConfig.id,
511
+ label: fieldConfig.label,
512
+ node: /*#__PURE__*/ jsxs(Row, {
513
+ children: [
514
+ fieldConfig.label && /*#__PURE__*/ jsx(Key, {
515
+ children: fieldConfig.label
516
+ }),
517
+ /*#__PURE__*/ jsx(Value, {
518
+ children: /*#__PURE__*/ jsx(RenderComponent, {
519
+ entityName: objectKey
520
+ })
521
+ })
522
+ ]
523
+ }, fieldConfig.id)
524
+ };
525
+ if (defaultFields[fieldConfig.id]) defaultFields[fieldConfig.id] = fieldItem;
526
+ else extraFields.push(fieldItem);
527
+ });
528
+ return [
529
+ defaultFields.lock,
530
+ defaultFields.legalHold,
531
+ ...extraFields
532
+ ];
533
+ }, [
534
+ objectKey,
535
+ retentionStatus,
536
+ retentionData?.Retention?.Mode,
537
+ retentionData?.Retention?.RetainUntilDate,
538
+ legalHoldStatus,
539
+ isObjectLockAvailable,
540
+ isLegalHoldEnabled,
541
+ isUpdatingLegalHold,
542
+ handleLegalHoldChange,
543
+ extraObjectSummaryDataProtection
544
+ ]);
545
+ return /*#__PURE__*/ jsx(TableContainer, {
546
+ children: /*#__PURE__*/ jsx(Table, {
547
+ children: /*#__PURE__*/ jsxs(Body, {
548
+ children: [
549
+ /*#__PURE__*/ jsxs(Group, {
550
+ children: [
551
+ /*#__PURE__*/ jsx(GroupName, {
552
+ children: "Information"
553
+ }),
554
+ /*#__PURE__*/ jsx(GroupContent, {
555
+ children: informationFields.map((field)=>/*#__PURE__*/ jsx(external_react_Fragment, {
556
+ children: field.node
557
+ }, field.id))
558
+ })
559
+ ]
560
+ }),
561
+ /*#__PURE__*/ jsxs(Group, {
562
+ children: [
563
+ /*#__PURE__*/ jsx(GroupName, {
564
+ action: /*#__PURE__*/ jsx(GetPresignedUrlButton, {
565
+ bucketName: bucketName,
566
+ objectKey: objectKey,
567
+ versionId: versionId
568
+ }),
569
+ children: "Access"
570
+ }),
571
+ /*#__PURE__*/ jsx(GroupContent, {
572
+ children: accessFields.map((field)=>/*#__PURE__*/ jsx(external_react_Fragment, {
573
+ children: field.node
574
+ }, field.id))
144
575
  })
145
576
  ]
146
577
  }),
@@ -149,39 +580,10 @@ const ObjectSummary = ({ bucketName, objectKey, versionId })=>{
149
580
  /*#__PURE__*/ jsx(GroupName, {
150
581
  children: "Data protection"
151
582
  }),
152
- /*#__PURE__*/ jsxs(GroupContent, {
153
- children: [
154
- /*#__PURE__*/ jsxs(Row, {
155
- children: [
156
- /*#__PURE__*/ jsx(Key, {
157
- children: "Lock"
158
- }),
159
- /*#__PURE__*/ jsx(Value, {
160
- children: "pending" === retentionStatus ? /*#__PURE__*/ jsx(Loader, {}) : "error" === retentionStatus ? "No Retention" : retentionData?.Retention?.Mode ? /*#__PURE__*/ jsxs(Fragment, {
161
- children: [
162
- retentionData.Retention.Mode,
163
- " until",
164
- " ",
165
- retentionData.Retention.RetainUntilDate ? /*#__PURE__*/ jsx(FormattedDateTime, {
166
- format: "date-time-second",
167
- value: new Date(retentionData.Retention.RetainUntilDate)
168
- }) : "N/A"
169
- ]
170
- }) : "No Retention"
171
- })
172
- ]
173
- }),
174
- /*#__PURE__*/ jsxs(Row, {
175
- children: [
176
- /*#__PURE__*/ jsx(Key, {
177
- children: "Legal Hold"
178
- }),
179
- /*#__PURE__*/ jsx(Value, {
180
- children: "pending" === legalHoldStatus ? /*#__PURE__*/ jsx(Loader, {}) : "error" === legalHoldStatus ? "OFF" : legalHoldData?.LegalHold?.Status === "ON" ? "ON" : "OFF"
181
- })
182
- ]
183
- })
184
- ]
583
+ /*#__PURE__*/ jsx(GroupContent, {
584
+ children: dataProtectionFields.map((field)=>/*#__PURE__*/ jsx(external_react_Fragment, {
585
+ children: field.node
586
+ }, field.id))
185
587
  })
186
588
  ]
187
589
  })