@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,9 +1,25 @@
1
- import { TableItem } from "../ObjectList";
1
+ import type { TableItem } from '../ObjectList';
2
2
  export interface ObjectCommonProps {
3
3
  bucketName: string;
4
4
  objectKey: string;
5
5
  versionId?: string;
6
6
  }
7
+ interface ObjectDetailsContextValue {
8
+ bucketName: string;
9
+ objectKey: string;
10
+ versionId?: string;
11
+ }
12
+ /**
13
+ * Context for ObjectDetails component.
14
+ *
15
+ * **Important**: Always use `useObjectDetailsContext()` hook instead of accessing this context directly.
16
+ * The hook provides proper error handling if the context is not available.
17
+ *
18
+ * This context is exported for testing purposes only.
19
+ */
20
+ export declare const ObjectDetailsContext: import("react").Context<ObjectDetailsContextValue | null>;
21
+ export declare function useObjectDetailsContext(): ObjectDetailsContextValue;
7
22
  export declare const ObjectDetails: ({ item }: {
8
- item: TableItem;
23
+ item: TableItem | null;
9
24
  }) => import("react/jsx-runtime").JSX.Element;
25
+ export {};
@@ -1,49 +1,161 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { useParams } from "react-router-dom";
3
- import { Text } from "@scality/core-ui";
4
- import { Tabs } from "@scality/core-ui/dist/next";
5
- import { ObjectSummary } from "./ObjectSummary.js";
1
+ import { Fragment, jsx } from "react/jsx-runtime";
2
+ import { Text, spacing } from "@scality/core-ui";
3
+ import { Box, Tabs } from "@scality/core-ui/dist/next";
4
+ import { createContext, memo, useContext, useMemo } from "react";
5
+ import { useParams } from "react-router";
6
+ import { useDataBrowserUICustomization } from "../../../contexts/DataBrowserUICustomizationContext.js";
6
7
  import { ObjectMetadata } from "./ObjectMetadata.js";
8
+ import { ObjectSummary } from "./ObjectSummary.js";
7
9
  import { ObjectTags } from "./ObjectTags.js";
8
- const ObjectDetails = ({ item })=>{
9
- const { bucketName } = useParams();
10
- if (!bucketName || !item.Key) return /*#__PURE__*/ jsx(Text, {
11
- children: "No object selected"
10
+ const ObjectDetailsContext = /*#__PURE__*/ createContext(null);
11
+ function useObjectDetailsContext() {
12
+ const context = useContext(ObjectDetailsContext);
13
+ if (!context) throw new Error('ObjectDetails components must be used within ObjectDetails');
14
+ return context;
15
+ }
16
+ const SummaryTab = /*#__PURE__*/ memo(()=>{
17
+ const { bucketName, objectKey, versionId } = useObjectDetailsContext();
18
+ return /*#__PURE__*/ jsx(ObjectSummary, {
19
+ bucketName: bucketName,
20
+ objectKey: objectKey,
21
+ versionId: versionId
12
22
  });
13
- if ("deleteMarker" === item.type) return /*#__PURE__*/ jsx(Text, {
14
- children: 'A "Delete Marker" is selected'
23
+ });
24
+ SummaryTab.displayName = 'ObjectDetails.SummaryTab';
25
+ const MetadataTab = /*#__PURE__*/ memo(()=>{
26
+ const { bucketName, objectKey, versionId } = useObjectDetailsContext();
27
+ return /*#__PURE__*/ jsx(ObjectMetadata, {
28
+ bucketName: bucketName,
29
+ objectKey: objectKey,
30
+ versionId: versionId
15
31
  });
16
- const versionId = "version" === item.type ? item.VersionId : void 0;
17
- const mainTabs = [
18
- {
19
- label: "Summary",
20
- Component: ObjectSummary,
21
- query: ""
22
- },
23
- {
24
- label: "Metadata",
25
- Component: ObjectMetadata,
26
- query: "metadata"
27
- },
28
- {
29
- label: "Tags",
30
- Component: ObjectTags,
31
- query: "tags"
32
- }
33
- ];
34
- return /*#__PURE__*/ jsx(Tabs, {
35
- children: mainTabs.map((tab)=>/*#__PURE__*/ jsx(Tabs.Tab, {
36
- label: tab.label,
37
- path: "",
32
+ });
33
+ MetadataTab.displayName = 'ObjectDetails.MetadataTab';
34
+ const TagsTab = /*#__PURE__*/ memo(()=>{
35
+ const { bucketName, objectKey, versionId } = useObjectDetailsContext();
36
+ return /*#__PURE__*/ jsx(ObjectTags, {
37
+ bucketName: bucketName,
38
+ objectKey: objectKey,
39
+ versionId: versionId
40
+ });
41
+ });
42
+ TagsTab.displayName = 'ObjectDetails.TagsTab';
43
+ const CustomTab = ({ config })=>/*#__PURE__*/ jsx(Fragment, {
44
+ children: config.render()
45
+ });
46
+ CustomTab.displayName = 'ObjectDetails.CustomTab';
47
+ const ObjectDetails = ({ item })=>{
48
+ const { bucketName } = useParams();
49
+ const { extraObjectTabs } = useDataBrowserUICustomization();
50
+ const getPlaceholderMessage = ()=>{
51
+ if (!bucketName || !item || !item.Key) return /*#__PURE__*/ jsx(Text, {
52
+ children: "Select an object to view details"
53
+ });
54
+ if ('deleteMarker' === item.type) return /*#__PURE__*/ jsx(Text, {
55
+ children: 'A "Delete Marker" is selected'
56
+ });
57
+ if ('folder' === item.type) return /*#__PURE__*/ jsx(Text, {
58
+ children: 'A "Folder" is selected'
59
+ });
60
+ return /*#__PURE__*/ jsx(Text, {
61
+ children: "Select an object to view details"
62
+ });
63
+ };
64
+ const defaultTabsMap = useMemo(()=>({
65
+ summary: {
66
+ id: 'summary',
67
+ label: 'Summary',
68
+ path: '',
69
+ withoutPadding: false,
70
+ query: {
71
+ tab: ''
72
+ },
73
+ type: 'default',
74
+ Component: SummaryTab
75
+ },
76
+ metadata: {
77
+ id: 'metadata',
78
+ label: 'Metadata',
79
+ path: '',
80
+ withoutPadding: false,
81
+ query: {
82
+ tab: 'metadata'
83
+ },
84
+ type: 'default',
85
+ Component: MetadataTab
86
+ },
87
+ tags: {
88
+ id: 'tags',
89
+ label: 'Tags',
90
+ path: '',
91
+ withoutPadding: false,
92
+ query: {
93
+ tab: 'tags'
94
+ },
95
+ type: 'default',
96
+ Component: TagsTab
97
+ }
98
+ }), []);
99
+ const allTabs = useMemo(()=>{
100
+ const customTabConfigs = extraObjectTabs ? extraObjectTabs.map((tabConfig)=>({
101
+ id: tabConfig.id,
102
+ label: tabConfig.title,
103
+ path: tabConfig.path || '',
38
104
  query: {
39
- tab: tab.query
105
+ tab: tabConfig.id
40
106
  },
41
- children: /*#__PURE__*/ jsx(tab.Component, {
42
- bucketName: bucketName,
43
- objectKey: item.Key,
44
- versionId: versionId
107
+ withoutPadding: tabConfig.withoutPadding || false,
108
+ type: 'custom',
109
+ config: tabConfig
110
+ })) : [];
111
+ const overrideIds = new Set(customTabConfigs.filter((t)=>t.id in defaultTabsMap).map((t)=>t.id));
112
+ const defaults = Object.values(defaultTabsMap).filter((tab)=>!overrideIds.has(tab.id));
113
+ return [
114
+ ...defaults,
115
+ ...customTabConfigs
116
+ ];
117
+ }, [
118
+ extraObjectTabs,
119
+ defaultTabsMap
120
+ ]);
121
+ const versionId = item?.type === 'version' ? item.VersionId : void 0;
122
+ const objectKey = item?.Key || '';
123
+ const contextValue = useMemo(()=>({
124
+ bucketName: bucketName || '',
125
+ objectKey,
126
+ versionId
127
+ }), [
128
+ bucketName,
129
+ objectKey,
130
+ versionId
131
+ ]);
132
+ const isPlaceholder = !bucketName || !item || !item.Key || 'deleteMarker' === item.type || 'folder' === item.type;
133
+ const placeholderMessage = isPlaceholder ? getPlaceholderMessage() : null;
134
+ const tabsContent = useMemo(()=>allTabs.map((tab)=>/*#__PURE__*/ jsx(Tabs.Tab, {
135
+ label: tab.label,
136
+ path: tab.path,
137
+ query: tab.query,
138
+ withoutPadding: tab.withoutPadding,
139
+ children: isPlaceholder ? /*#__PURE__*/ jsx(Box, {
140
+ padding: spacing.r16,
141
+ display: "flex",
142
+ justifyContent: "center",
143
+ children: placeholderMessage
144
+ }) : 'default' === tab.type ? /*#__PURE__*/ jsx(tab.Component, {}) : /*#__PURE__*/ jsx(CustomTab, {
145
+ config: tab.config
45
146
  })
46
- }, tab.query || "summary"))
147
+ }, tab.id)), [
148
+ allTabs,
149
+ isPlaceholder,
150
+ placeholderMessage
151
+ ]);
152
+ return isPlaceholder ? /*#__PURE__*/ jsx(Tabs, {
153
+ children: tabsContent
154
+ }) : /*#__PURE__*/ jsx(ObjectDetailsContext.Provider, {
155
+ value: contextValue,
156
+ children: /*#__PURE__*/ jsx(Tabs, {
157
+ children: tabsContent
158
+ })
47
159
  });
48
160
  };
49
- export { ObjectDetails };
161
+ export { ObjectDetails, ObjectDetailsContext, useObjectDetailsContext };
@@ -1,40 +1,42 @@
1
- import type { _Object, DeleteMarkerEntry, ObjectVersion } from "@aws-sdk/client-s3";
1
+ import type { DeleteMarkerEntry, ObjectVersion, _Object as S3Object } from '@aws-sdk/client-s3';
2
2
  type FolderItem = {
3
3
  Key: string;
4
4
  displayName: string;
5
- type: "folder";
5
+ type: 'folder';
6
6
  LastModified?: undefined;
7
7
  Size?: undefined;
8
8
  StorageClass?: undefined;
9
9
  VersionId?: undefined;
10
10
  IsLatest?: undefined;
11
11
  };
12
- type ObjectItem = _Object & {
12
+ type ObjectItem = S3Object & {
13
13
  displayName: string;
14
- type: "object";
14
+ type: 'object';
15
15
  IsLatest?: boolean;
16
16
  VersionId?: string;
17
+ isLegalHoldEnabled?: boolean;
17
18
  };
18
19
  type VersionItem = ObjectVersion & {
19
20
  displayName: string;
20
- type: "version";
21
+ type: 'version';
21
22
  IsLatest?: boolean;
23
+ isLegalHoldEnabled?: boolean;
22
24
  };
23
25
  type DeleteMarkerItem = DeleteMarkerEntry & {
24
26
  displayName: string;
25
- type: "deleteMarker";
27
+ type: 'deleteMarker';
26
28
  isDeleteMarker: true;
27
29
  IsLatest?: boolean;
28
30
  Size?: number;
31
+ isLegalHoldEnabled?: boolean;
29
32
  };
30
- export type TableItem = (FolderItem | ObjectItem | VersionItem | DeleteMarkerItem) & {
31
- [key: string]: unknown;
32
- };
33
+ export type TableItem = FolderItem | ObjectItem | VersionItem | DeleteMarkerItem;
34
+ export declare const isObjectLike: (item: TableItem) => item is ObjectItem | VersionItem | DeleteMarkerItem;
33
35
  interface ObjectListProps {
34
36
  bucketName: string;
35
37
  prefix: string;
36
38
  onObjectSelect: (object: TableItem) => void;
37
39
  onPrefixChange: (newPrefix: string) => void;
38
40
  }
39
- export declare const ObjectList: ({ bucketName, prefix, onObjectSelect, onPrefixChange, }: ObjectListProps) => import("react/jsx-runtime").JSX.Element;
41
+ export declare const ObjectList: ({ bucketName, prefix, onObjectSelect, onPrefixChange }: ObjectListProps) => import("react/jsx-runtime").JSX.Element;
40
42
  export {};