@scality/data-browser-library 1.0.0-preview.11 → 1.0.0-preview.15

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 (212) hide show
  1. package/dist/components/DataBrowserUI.d.ts +27 -0
  2. package/dist/components/DataBrowserUI.js +88 -0
  3. package/dist/components/Editor.d.ts +1 -1
  4. package/dist/components/Editor.js +3 -3
  5. package/dist/components/__tests__/BucketCreate.test.js +102 -102
  6. package/dist/components/__tests__/BucketDetails.test.d.ts +1 -0
  7. package/dist/components/__tests__/BucketDetails.test.js +420 -0
  8. package/dist/components/__tests__/BucketLifecycleFormPage.test.js +177 -177
  9. package/dist/components/__tests__/BucketLifecycleList.test.js +85 -85
  10. package/dist/components/__tests__/BucketList.test.js +463 -239
  11. package/dist/components/__tests__/BucketNotificationCreatePage.test.js +84 -84
  12. package/dist/components/__tests__/BucketOverview.test.js +273 -261
  13. package/dist/components/__tests__/BucketPolicyPage.test.js +62 -62
  14. package/dist/components/__tests__/BucketReplicationFormPage.test.js +542 -542
  15. package/dist/components/__tests__/BucketReplicationList.test.js +106 -106
  16. package/dist/components/__tests__/CreateFolderButton.test.js +56 -56
  17. package/dist/components/__tests__/DeleteBucketButton.test.js +62 -62
  18. package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.js +47 -47
  19. package/dist/components/__tests__/DeleteObjectButton.test.js +63 -63
  20. package/dist/components/__tests__/EmptyBucketButton.test.js +56 -56
  21. package/dist/components/__tests__/MetadataSearch.test.js +65 -65
  22. package/dist/components/__tests__/ObjectList.test.js +739 -238
  23. package/dist/components/__tests__/UploadButton.test.js +45 -45
  24. package/dist/components/buckets/BucketCreate.d.ts +2 -2
  25. package/dist/components/buckets/BucketCreate.js +41 -41
  26. package/dist/components/buckets/BucketDetails.d.ts +40 -0
  27. package/dist/components/buckets/BucketDetails.js +208 -88
  28. package/dist/components/buckets/BucketLifecycleFormPage.js +161 -160
  29. package/dist/components/buckets/BucketLifecycleList.d.ts +2 -2
  30. package/dist/components/buckets/BucketLifecycleList.js +46 -46
  31. package/dist/components/buckets/BucketList.d.ts +7 -8
  32. package/dist/components/buckets/BucketList.js +156 -100
  33. package/dist/components/buckets/BucketLocation.js +3 -3
  34. package/dist/components/buckets/BucketOverview.d.ts +7 -1
  35. package/dist/components/buckets/BucketOverview.js +366 -182
  36. package/dist/components/buckets/BucketPage.js +20 -16
  37. package/dist/components/buckets/BucketPolicyButton.js +2 -2
  38. package/dist/components/buckets/BucketPolicyPage.js +27 -25
  39. package/dist/components/buckets/BucketReplicationFormPage.js +133 -132
  40. package/dist/components/buckets/BucketReplicationList.d.ts +2 -2
  41. package/dist/components/buckets/BucketReplicationList.js +41 -41
  42. package/dist/components/buckets/BucketVersioning.js +13 -10
  43. package/dist/components/buckets/DeleteBucketButton.js +5 -5
  44. package/dist/components/buckets/DeleteBucketConfigRuleButton.d.ts +2 -2
  45. package/dist/components/buckets/DeleteBucketConfigRuleButton.js +1 -1
  46. package/dist/components/buckets/EmptyBucketButton.js +20 -20
  47. package/dist/components/buckets/EmptyBucketSummary.d.ts +1 -1
  48. package/dist/components/buckets/EmptyBucketSummary.js +1 -1
  49. package/dist/components/buckets/EmptyBucketSummaryList.js +22 -22
  50. package/dist/components/buckets/__tests__/BucketVersioning.test.js +45 -45
  51. package/dist/components/buckets/notifications/BucketNotificationCreatePage.js +34 -33
  52. package/dist/components/buckets/notifications/EventsSection.js +144 -28
  53. package/dist/components/buckets/notifications/__tests__/events.test.d.ts +1 -0
  54. package/dist/components/buckets/notifications/__tests__/events.test.js +56 -0
  55. package/dist/components/buckets/notifications/events.d.ts +71 -7
  56. package/dist/components/buckets/notifications/events.js +98 -16
  57. package/dist/components/index.d.ts +23 -21
  58. package/dist/components/index.js +4 -2
  59. package/dist/components/layouts/ArrowNavigation.d.ts +1 -2
  60. package/dist/components/layouts/ArrowNavigation.js +22 -10
  61. package/dist/components/layouts/BrowserPageLayout.d.ts +2 -3
  62. package/dist/components/layouts/BrowserPageLayout.js +1 -1
  63. package/dist/components/objects/CreateFolderButton.d.ts +2 -2
  64. package/dist/components/objects/CreateFolderButton.js +10 -10
  65. package/dist/components/objects/DeleteObjectButton.d.ts +1 -1
  66. package/dist/components/objects/DeleteObjectButton.js +20 -20
  67. package/dist/components/objects/ObjectDetails/ObjectMetadata.d.ts +1 -1
  68. package/dist/components/objects/ObjectDetails/ObjectMetadata.js +56 -56
  69. package/dist/components/objects/ObjectDetails/ObjectSummary.d.ts +1 -1
  70. package/dist/components/objects/ObjectDetails/ObjectSummary.js +294 -164
  71. package/dist/components/objects/ObjectDetails/ObjectTags.d.ts +1 -1
  72. package/dist/components/objects/ObjectDetails/ObjectTags.js +25 -25
  73. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.d.ts +1 -0
  74. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.js +516 -0
  75. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.d.ts +1 -0
  76. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.js +813 -0
  77. package/dist/components/objects/ObjectDetails/index.d.ts +17 -1
  78. package/dist/components/objects/ObjectDetails/index.js +136 -50
  79. package/dist/components/objects/ObjectList.d.ts +11 -9
  80. package/dist/components/objects/ObjectList.js +576 -295
  81. package/dist/components/objects/ObjectLock/EditRetentionButton.js +3 -3
  82. package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.js +14 -14
  83. package/dist/components/objects/ObjectLock/ObjectLockSettings.d.ts +1 -1
  84. package/dist/components/objects/ObjectLock/ObjectLockSettings.js +29 -28
  85. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.d.ts +1 -1
  86. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.js +6 -6
  87. package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.js +50 -50
  88. package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.js +77 -77
  89. package/dist/components/objects/ObjectPage.js +5 -4
  90. package/dist/components/objects/UploadButton.d.ts +3 -3
  91. package/dist/components/objects/UploadButton.js +6 -6
  92. package/dist/components/providers/DataBrowserProvider.d.ts +15 -4
  93. package/dist/components/providers/DataBrowserProvider.js +33 -11
  94. package/dist/components/search/MetadataSearch.js +26 -25
  95. package/dist/components/search/SearchHints.js +1 -1
  96. package/dist/components/ui/ArrayFieldActions.js +4 -4
  97. package/dist/components/ui/ConfirmDeleteRuleModal.d.ts +1 -1
  98. package/dist/components/ui/ConfirmDeleteRuleModal.js +1 -1
  99. package/dist/components/ui/DeleteObjectModalContent.d.ts +1 -1
  100. package/dist/components/ui/DeleteObjectModalContent.js +12 -12
  101. package/dist/components/ui/FilterFormSection.d.ts +2 -2
  102. package/dist/components/ui/FilterFormSection.js +29 -29
  103. package/dist/components/ui/Search.elements.d.ts +1 -1
  104. package/dist/components/ui/Search.elements.js +7 -7
  105. package/dist/components/ui/Table.elements.js +5 -5
  106. package/dist/config/factory.d.ts +23 -10
  107. package/dist/config/factory.js +22 -7
  108. package/dist/config/types.d.ts +134 -0
  109. package/dist/contexts/DataBrowserUICustomizationContext.d.ts +27 -0
  110. package/dist/contexts/DataBrowserUICustomizationContext.js +13 -0
  111. package/dist/hooks/__tests__/useISVBucketDetection.test.js +41 -41
  112. package/dist/hooks/__tests__/useIsBucketEmpty.test.js +25 -25
  113. package/dist/hooks/bucketConfiguration.d.ts +1 -1
  114. package/dist/hooks/bucketConfiguration.js +48 -48
  115. package/dist/hooks/bucketOperations.d.ts +1 -1
  116. package/dist/hooks/bucketOperations.js +6 -6
  117. package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.js +78 -78
  118. package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.js +78 -78
  119. package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.js +42 -42
  120. package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.js +61 -61
  121. package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.js +63 -63
  122. package/dist/hooks/factories/index.d.ts +4 -4
  123. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.d.ts +2 -2
  124. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.js +15 -12
  125. package/dist/hooks/factories/useCreateS3LoginHook.d.ts +2 -2
  126. package/dist/hooks/factories/useCreateS3MutationHook.d.ts +3 -3
  127. package/dist/hooks/factories/useCreateS3MutationHook.js +6 -1
  128. package/dist/hooks/factories/useCreateS3QueryHook.d.ts +2 -2
  129. package/dist/hooks/factories/useCreateS3QueryHook.js +8 -5
  130. package/dist/hooks/index.d.ts +14 -13
  131. package/dist/hooks/index.js +2 -1
  132. package/dist/hooks/loginOperations.d.ts +1 -1
  133. package/dist/hooks/loginOperations.js +1 -1
  134. package/dist/hooks/objectOperations.d.ts +2 -2
  135. package/dist/hooks/objectOperations.js +49 -49
  136. package/dist/hooks/presignedOperations.d.ts +2 -2
  137. package/dist/hooks/presignedOperations.js +3 -3
  138. package/dist/hooks/useBatchObjectLegalHold.js +7 -4
  139. package/dist/hooks/useDataBrowserNavigate.d.ts +14 -0
  140. package/dist/hooks/useDataBrowserNavigate.js +24 -0
  141. package/dist/hooks/useDeleteBucketConfigRule.d.ts +2 -2
  142. package/dist/hooks/useDeleteBucketConfigRule.js +4 -4
  143. package/dist/hooks/useEmptyBucket.js +10 -10
  144. package/dist/hooks/useISVBucketDetection.js +3 -3
  145. package/dist/hooks/useIsBucketEmpty.js +4 -4
  146. package/dist/hooks/useLoginMutation.d.ts +1 -1
  147. package/dist/hooks/useLoginMutation.js +1 -1
  148. package/dist/hooks/useS3Client.d.ts +5 -0
  149. package/dist/hooks/useS3Client.js +3 -2
  150. package/dist/hooks/useS3ConfigSwitch.d.ts +11 -0
  151. package/dist/hooks/useS3ConfigSwitch.js +37 -0
  152. package/dist/index.d.ts +6 -6
  153. package/dist/test/msw/handlers/deleteBucket.d.ts +1 -1
  154. package/dist/test/msw/handlers/deleteBucket.js +20 -10
  155. package/dist/test/msw/handlers/getBucketAcl.d.ts +1 -1
  156. package/dist/test/msw/handlers/getBucketAcl.js +29 -17
  157. package/dist/test/msw/handlers/getBucketLocation.d.ts +1 -1
  158. package/dist/test/msw/handlers/getBucketLocation.js +29 -15
  159. package/dist/test/msw/handlers/getBucketPolicy.d.ts +1 -1
  160. package/dist/test/msw/handlers/getBucketPolicy.js +52 -32
  161. package/dist/test/msw/handlers/headObject.d.ts +1 -1
  162. package/dist/test/msw/handlers/headObject.js +31 -13
  163. package/dist/test/msw/handlers/listBuckets.d.ts +1 -1
  164. package/dist/test/msw/handlers/listBuckets.js +5 -3
  165. package/dist/test/msw/handlers/listObjectVersions.d.ts +1 -1
  166. package/dist/test/msw/handlers/listObjectVersions.js +38 -26
  167. package/dist/test/msw/handlers/listObjects.d.ts +1 -1
  168. package/dist/test/msw/handlers/listObjects.js +35 -23
  169. package/dist/test/msw/handlers/objectLegalHold.d.ts +1 -1
  170. package/dist/test/msw/handlers/objectLegalHold.js +31 -16
  171. package/dist/test/msw/handlers/objectRetention.d.ts +1 -1
  172. package/dist/test/msw/handlers/objectRetention.js +31 -17
  173. package/dist/test/msw/handlers/putBucketAcl.d.ts +1 -1
  174. package/dist/test/msw/handlers/putBucketAcl.js +29 -14
  175. package/dist/test/msw/handlers/putObject.d.ts +1 -1
  176. package/dist/test/msw/handlers/putObject.js +27 -12
  177. package/dist/test/msw/handlers.d.ts +3 -3
  178. package/dist/test/msw/handlers.js +72 -49
  179. package/dist/test/msw/index.d.ts +2 -2
  180. package/dist/test/msw/server.d.ts +1 -1
  181. package/dist/test/msw/server.js +1 -1
  182. package/dist/test/msw/utils.js +2 -2
  183. package/dist/test/setup.d.ts +1 -1
  184. package/dist/test/setup.js +19 -19
  185. package/dist/test/testUtils.d.ts +70 -12
  186. package/dist/test/testUtils.js +160 -75
  187. package/dist/test/utils/errorHandling.test.js +119 -119
  188. package/dist/types/index.d.ts +8 -31
  189. package/dist/utils/__tests__/s3ConfigIdentifier.test.d.ts +1 -0
  190. package/dist/utils/__tests__/s3ConfigIdentifier.test.js +429 -0
  191. package/dist/utils/constants.d.ts +7 -0
  192. package/dist/utils/constants.js +16 -9
  193. package/dist/utils/deletion/index.d.ts +2 -2
  194. package/dist/utils/deletion/messages.d.ts +1 -1
  195. package/dist/utils/deletion/messages.js +4 -4
  196. package/dist/utils/errorHandling.d.ts +3 -3
  197. package/dist/utils/errorHandling.js +6 -6
  198. package/dist/utils/hooks.js +8 -8
  199. package/dist/utils/index.d.ts +5 -4
  200. package/dist/utils/index.js +2 -0
  201. package/dist/utils/proxyMiddleware.d.ts +1 -1
  202. package/dist/utils/proxyMiddleware.js +6 -11
  203. package/dist/utils/s3Client.d.ts +2 -2
  204. package/dist/utils/s3Client.js +1 -1
  205. package/dist/utils/s3ConfigIdentifier.d.ts +68 -0
  206. package/dist/utils/s3ConfigIdentifier.js +55 -0
  207. package/dist/utils/s3RuleUtils.d.ts +5 -5
  208. package/dist/utils/s3RuleUtils.js +17 -17
  209. package/dist/utils/useFeatures.js +1 -1
  210. package/dist/utils/useSupportedNotificationEvents.d.ts +6 -0
  211. package/dist/utils/useSupportedNotificationEvents.js +7 -0
  212. package/package.json +3 -3
@@ -1,9 +1,25 @@
1
- import { TableItem } from "../ObjectList";
1
+ import { 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
23
  item: TableItem | null;
9
24
  }) => import("react/jsx-runtime").JSX.Element;
25
+ export {};
@@ -1,75 +1,161 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { useParams } from "react-router-dom";
1
+ import { Fragment, jsx } from "react/jsx-runtime";
2
+ import { createContext, memo, useContext, useMemo } from "react";
3
+ import { useParams } from "react-router";
3
4
  import { Text, spacing } from "@scality/core-ui";
4
5
  import { Box, Tabs } from "@scality/core-ui/dist/next";
6
+ import { useDataBrowserUICustomization } from "../../../contexts/DataBrowserUICustomizationContext.js";
5
7
  import { ObjectSummary } from "./ObjectSummary.js";
6
8
  import { ObjectMetadata } from "./ObjectMetadata.js";
7
9
  import { ObjectTags } from "./ObjectTags.js";
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
22
+ });
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
31
+ });
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';
8
47
  const ObjectDetails = ({ item })=>{
9
48
  const { bucketName } = useParams();
10
- const mainTabs = [
11
- {
12
- label: "Summary",
13
- query: ""
14
- },
15
- {
16
- label: "Metadata",
17
- query: "metadata"
18
- },
19
- {
20
- label: "Tags",
21
- query: "tags"
22
- }
23
- ];
49
+ const { extraObjectTabs } = useDataBrowserUICustomization();
24
50
  const getPlaceholderMessage = ()=>{
25
51
  if (!bucketName || !item || !item.Key) return /*#__PURE__*/ jsx(Text, {
26
52
  children: "Select an object to view details"
27
53
  });
28
- if ("deleteMarker" === item.type) return /*#__PURE__*/ jsx(Text, {
54
+ if ('deleteMarker' === item.type) return /*#__PURE__*/ jsx(Text, {
29
55
  children: 'A "Delete Marker" is selected'
30
56
  });
31
- if ("folder" === item.type) return /*#__PURE__*/ jsx(Text, {
57
+ if ('folder' === item.type) return /*#__PURE__*/ jsx(Text, {
32
58
  children: 'A "Folder" is selected'
33
59
  });
34
60
  return /*#__PURE__*/ jsx(Text, {
35
61
  children: "Select an object to view details"
36
62
  });
37
63
  };
38
- if (!bucketName || !item || !item.Key || "deleteMarker" === item.type || "folder" === item.type) {
39
- const placeholderMessage = getPlaceholderMessage();
40
- return /*#__PURE__*/ jsx(Tabs, {
41
- children: mainTabs.map((tab)=>/*#__PURE__*/ jsx(Tabs.Tab, {
42
- label: tab.label,
43
- path: "",
44
- query: {
45
- tab: tab.query
46
- },
47
- children: /*#__PURE__*/ jsx(Box, {
48
- padding: spacing.r16,
49
- display: "flex",
50
- justifyContent: "center",
51
- children: placeholderMessage
52
- })
53
- }, tab.query || "summary"))
54
- });
55
- }
56
- const versionId = "version" === item.type ? item.VersionId : void 0;
57
- return /*#__PURE__*/ jsx(Tabs, {
58
- children: mainTabs.map((tab)=>{
59
- const Component = "Summary" === tab.label ? ObjectSummary : "Metadata" === tab.label ? ObjectMetadata : ObjectTags;
60
- return /*#__PURE__*/ jsx(Tabs.Tab, {
61
- label: tab.label,
62
- path: "",
64
+ const defaultTabsMap = useMemo(()=>({
65
+ summary: {
66
+ id: 'summary',
67
+ label: 'Summary',
68
+ path: '',
69
+ withoutPadding: false,
63
70
  query: {
64
- tab: tab.query
71
+ tab: ''
65
72
  },
66
- children: /*#__PURE__*/ jsx(Component, {
67
- bucketName: bucketName,
68
- objectKey: item.Key,
69
- versionId: versionId
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 || '',
104
+ query: {
105
+ tab: tabConfig.id
106
+ },
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
70
146
  })
71
- }, 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
72
158
  })
73
159
  });
74
160
  };
75
- export { ObjectDetails };
161
+ export { ObjectDetails, ObjectDetailsContext, useObjectDetailsContext };
@@ -1,35 +1,37 @@
1
- import type { _Object, DeleteMarkerEntry, ObjectVersion } from "@aws-sdk/client-s3";
1
+ import type { _Object as S3Object, DeleteMarkerEntry, ObjectVersion } 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;