@aws-amplify/ui-react-storage 3.12.2 → 3.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.js +1 -1
- package/dist/{createStorageBrowser-pzJe4BD8.js → createStorageBrowser-BazPNsU_.js} +1884 -1068
- package/dist/esm/browser.mjs +6 -2
- package/dist/esm/components/StorageBrowser/ErrorBoundary/ErrorBoundary.mjs +9 -0
- package/dist/esm/components/StorageBrowser/components/ComponentsProvider.mjs +9 -0
- package/dist/esm/components/StorageBrowser/components/base/Table.mjs +1 -1
- package/dist/esm/components/StorageBrowser/components/base/preview/DownloadButton.mjs +39 -0
- package/dist/esm/components/StorageBrowser/components/base/preview/FileMetadata.mjs +40 -0
- package/dist/esm/components/StorageBrowser/components/base/preview/FilePreviewLayout.mjs +19 -0
- package/dist/esm/components/StorageBrowser/components/base/preview/ImagePreview.mjs +37 -0
- package/dist/esm/components/StorageBrowser/components/base/preview/PreviewFallback.mjs +34 -0
- package/dist/esm/components/StorageBrowser/components/base/preview/PreviewPlaceholder.mjs +13 -0
- package/dist/esm/components/StorageBrowser/components/base/preview/TextPreview.mjs +64 -0
- package/dist/esm/components/StorageBrowser/components/base/preview/VideoPreview.mjs +61 -0
- package/dist/esm/components/StorageBrowser/components/composables/DataTable/DataTable.mjs +2 -1
- package/dist/esm/components/StorageBrowser/components/composables/FilePreview.mjs +85 -0
- package/dist/esm/components/StorageBrowser/components/composables/defaults.mjs +2 -0
- package/dist/esm/components/StorageBrowser/components/elements/definitions.mjs +2 -2
- package/dist/esm/components/StorageBrowser/controls/DataTableControl.mjs +9 -0
- package/dist/esm/components/StorageBrowser/controls/FilePreviewControl.mjs +24 -0
- package/dist/esm/components/StorageBrowser/createStorageBrowser/StorageBrowserDefault.mjs +1 -0
- package/dist/esm/components/StorageBrowser/createStorageBrowser/createProvider.mjs +4 -2
- package/dist/esm/components/StorageBrowser/createStorageBrowser/createStorageBrowser.mjs +1 -0
- package/dist/esm/components/StorageBrowser/displayText/context.mjs +4 -0
- package/dist/esm/components/StorageBrowser/displayText/libraries/en/locationDetailView.mjs +28 -0
- package/dist/esm/components/StorageBrowser/filePreview/context.mjs +12 -0
- package/dist/esm/components/StorageBrowser/views/LocationActionView/CopyView/CopyView.mjs +9 -0
- package/dist/esm/components/StorageBrowser/views/LocationActionView/CopyView/CopyViewProvider.mjs +8 -0
- package/dist/esm/components/StorageBrowser/views/LocationActionView/CopyView/FoldersMessageControl.mjs +8 -0
- package/dist/esm/components/StorageBrowser/views/LocationActionView/CreateFolderView/CreateFolderView.mjs +9 -0
- package/dist/esm/components/StorageBrowser/views/LocationActionView/DeleteView/DeleteView.mjs +9 -0
- package/dist/esm/components/StorageBrowser/views/LocationActionView/DownloadView/DownloadView.mjs +9 -0
- package/dist/esm/components/StorageBrowser/views/LocationActionView/UploadView/UploadView.mjs +9 -0
- package/dist/esm/components/StorageBrowser/views/LocationDetailView/LocationDetailView.mjs +17 -4
- package/dist/esm/components/StorageBrowser/views/LocationDetailView/LocationDetailViewProvider.mjs +9 -2
- package/dist/esm/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/constants.mjs +69 -1
- package/dist/esm/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/fileIcon.mjs +11 -0
- package/dist/esm/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/getFileRowContent.mjs +8 -5
- package/dist/esm/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/getLocationDetailViewTableData.mjs +8 -1
- package/dist/esm/components/StorageBrowser/views/LocationDetailView/useLocationDetailView.mjs +76 -3
- package/dist/esm/components/StorageBrowser/views/LocationsView/LocationsView.mjs +9 -0
- package/dist/esm/components/StorageBrowser/views/LocationsView/LocationsViewProvider.mjs +8 -0
- package/dist/esm/components/StorageBrowser/views/context/primaryViews.mjs +1 -0
- package/dist/esm/components/StorageBrowser/views/hooks/useFilePreview/useFilePreview.mjs +115 -0
- package/dist/esm/components/StorageBrowser/views/utils/files/const.mjs +62 -0
- package/dist/esm/components/StorageBrowser/views/utils/files/fileName.mjs +12 -0
- package/dist/esm/components/StorageBrowser/views/utils/files/fileSize.mjs +23 -0
- package/dist/esm/components/StorageBrowser/views/utils/files/fileType.mjs +87 -0
- package/dist/esm/components/StorageBrowser/views/utils/files/safeGetProperties.mjs +12 -0
- package/dist/esm/components/StorageBrowser/views/utils/files/url.mjs +16 -0
- package/dist/esm/version.mjs +1 -1
- package/dist/index.js +1 -1
- package/dist/styles.css +250 -0
- package/dist/types/components/StorageBrowser/actions/configs/defaults.d.ts +2 -2
- package/dist/types/components/StorageBrowser/actions/handlers/types.d.ts +4 -0
- package/dist/types/components/StorageBrowser/components/base/Table.d.ts +1 -0
- package/dist/types/components/StorageBrowser/components/base/preview/DownloadButton.d.ts +4 -0
- package/dist/types/components/StorageBrowser/components/base/preview/FileMetadata.d.ts +7 -0
- package/dist/types/components/StorageBrowser/components/base/preview/FilePreviewLayout.d.ts +8 -0
- package/dist/types/components/StorageBrowser/components/base/preview/ImagePreview.d.ts +3 -0
- package/dist/types/components/StorageBrowser/components/base/preview/PreviewFallback.d.ts +10 -0
- package/dist/types/components/StorageBrowser/components/base/preview/PreviewPlaceholder.d.ts +2 -0
- package/dist/types/components/StorageBrowser/components/base/preview/TextPreview.d.ts +3 -0
- package/dist/types/components/StorageBrowser/components/base/preview/VideoPreview.d.ts +3 -0
- package/dist/types/components/StorageBrowser/components/base/preview/type.d.ts +6 -0
- package/dist/types/components/StorageBrowser/components/composables/DataTable/DataTable.d.ts +1 -0
- package/dist/types/components/StorageBrowser/components/composables/FilePreview.d.ts +12 -0
- package/dist/types/components/StorageBrowser/components/composables/types.d.ts +2 -0
- package/dist/types/components/StorageBrowser/controls/FilePreviewControl.d.ts +2 -0
- package/dist/types/components/StorageBrowser/controls/types.d.ts +11 -2
- package/dist/types/components/StorageBrowser/createStorageBrowser/createProvider.d.ts +2 -1
- package/dist/types/components/StorageBrowser/createStorageBrowser/createStorageBrowser.d.ts +4 -1
- package/dist/types/components/StorageBrowser/createStorageBrowser/types.d.ts +78 -2
- package/dist/types/components/StorageBrowser/displayText/types.d.ts +30 -1
- package/dist/types/components/StorageBrowser/filePreview/context.d.ts +10 -0
- package/dist/types/components/StorageBrowser/filePreview/index.d.ts +1 -0
- package/dist/types/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/constants.d.ts +6 -0
- package/dist/types/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/fileIcon.d.ts +2 -0
- package/dist/types/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/getFileRowContent.d.ts +3 -1
- package/dist/types/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/getLocationDetailViewTableData.d.ts +5 -2
- package/dist/types/components/StorageBrowser/views/LocationDetailView/types.d.ts +10 -0
- package/dist/types/components/StorageBrowser/views/hooks/useFilePreview/index.d.ts +2 -0
- package/dist/types/components/StorageBrowser/views/hooks/useFilePreview/types.d.ts +28 -0
- package/dist/types/components/StorageBrowser/views/hooks/useFilePreview/useFilePreview.d.ts +5 -0
- package/dist/types/components/StorageBrowser/views/utils/files/const.d.ts +9 -0
- package/dist/types/components/StorageBrowser/views/utils/files/fileName.d.ts +6 -0
- package/dist/types/components/StorageBrowser/views/utils/files/fileSize.d.ts +2 -0
- package/dist/types/components/StorageBrowser/views/utils/files/fileType.d.ts +12 -0
- package/dist/types/components/StorageBrowser/views/utils/files/safeGetProperties.d.ts +2 -0
- package/dist/types/components/StorageBrowser/views/utils/files/url.d.ts +2 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface PreviewFallbackProps {
|
|
3
|
+
fileKey: string;
|
|
4
|
+
message: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
isError?: boolean;
|
|
7
|
+
onRetry?: () => void;
|
|
8
|
+
showRetry?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function PreviewFallback({ fileKey, message, description, isError, onRetry, showRetry, }: PreviewFallbackProps): React.JSX.Element;
|
package/dist/types/components/StorageBrowser/components/composables/DataTable/DataTable.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import type { WithKey } from '../../types';
|
|
3
3
|
import type { DataTableDataCell, DataTableHeader } from './types';
|
|
4
4
|
export interface DataTableRow {
|
|
5
|
+
active?: boolean;
|
|
5
6
|
content: WithKey<DataTableDataCell>[];
|
|
6
7
|
}
|
|
7
8
|
export interface DataTableProps {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { FilePreviewState } from '../../views/hooks/useFilePreview';
|
|
3
|
+
import type { FileData } from '../../actions';
|
|
4
|
+
export type FilePreviewProps = {
|
|
5
|
+
activeFileHasNext?: boolean;
|
|
6
|
+
activeFileHasPrev?: boolean;
|
|
7
|
+
activeFile?: FileData;
|
|
8
|
+
filePreview?: FilePreviewState;
|
|
9
|
+
onSelectActiveFile?: (f?: FileData | 'prev' | 'next') => void;
|
|
10
|
+
onRetryFilePreview?: () => void;
|
|
11
|
+
};
|
|
12
|
+
export declare function FilePreview(props: FilePreviewProps): React.JSX.Element | null;
|
|
@@ -18,6 +18,7 @@ import type { PaginationProps } from './Pagination';
|
|
|
18
18
|
import type { SearchFieldProps } from './SearchField';
|
|
19
19
|
import type { SearchSubfoldersToggleProps } from './SearchSubfoldersToggle';
|
|
20
20
|
import type { TitleProps } from './Title';
|
|
21
|
+
import type { FilePreviewProps } from './FilePreview';
|
|
21
22
|
export interface Composables {
|
|
22
23
|
ActionCancel: React.ComponentType<ActionCancelProps>;
|
|
23
24
|
ActionDestination: React.ComponentType<ActionDestinationProps>;
|
|
@@ -39,6 +40,7 @@ export interface Composables {
|
|
|
39
40
|
SearchSubfoldersToggle: React.ComponentType<SearchSubfoldersToggleProps>;
|
|
40
41
|
StatusDisplay: React.ComponentType<StatusDisplayProps>;
|
|
41
42
|
Title: React.ComponentType<TitleProps>;
|
|
43
|
+
FilePreview: React.ComponentType<FilePreviewProps>;
|
|
42
44
|
}
|
|
43
45
|
export interface ComposablesContext {
|
|
44
46
|
composables?: Composables;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { LocationData } from '../actions';
|
|
2
|
-
import type { ActionListItem, Composables,
|
|
1
|
+
import type { FileData, LocationData } from '../actions';
|
|
2
|
+
import type { ActionListItem, Composables, DataTableProps, DataTableSortHeader, MessageProps } from '../components';
|
|
3
3
|
import type { LocationState } from '../store';
|
|
4
4
|
import type { StatusCounts } from '../tasks';
|
|
5
|
+
import type { FilePreviewState } from '../views/hooks/useFilePreview';
|
|
5
6
|
export interface Controls {
|
|
6
7
|
props: React.ComponentProps<Composables[keyof Composables]>;
|
|
7
8
|
}
|
|
@@ -21,6 +22,9 @@ interface PaginationData {
|
|
|
21
22
|
export interface ControlsContext {
|
|
22
23
|
data: {
|
|
23
24
|
actions?: ActionListItem[];
|
|
25
|
+
activeFile?: FileData;
|
|
26
|
+
activeFileHasNext?: boolean;
|
|
27
|
+
activeFileHasPrev?: boolean;
|
|
24
28
|
actionCancelLabel?: string;
|
|
25
29
|
actionDestinationLabel?: string;
|
|
26
30
|
actionExitLabel?: string;
|
|
@@ -52,6 +56,7 @@ export interface ControlsContext {
|
|
|
52
56
|
paginationData?: PaginationData;
|
|
53
57
|
searchPlaceholder?: string;
|
|
54
58
|
searchQuery?: string;
|
|
59
|
+
filePreviewState?: FilePreviewState;
|
|
55
60
|
searchSubfoldersToggleLabel?: string;
|
|
56
61
|
searchSubmitLabel?: string;
|
|
57
62
|
searchClearLabel?: string;
|
|
@@ -76,8 +81,12 @@ export interface ControlsContext {
|
|
|
76
81
|
onPaginate?: (page: number) => void;
|
|
77
82
|
onRefresh?: () => void;
|
|
78
83
|
onSearch?: () => void;
|
|
84
|
+
onSelectActiveFile?: (file?: FileData | 'prev' | 'next') => void;
|
|
79
85
|
onSearchClear?: () => void;
|
|
80
86
|
onSearchQueryChange?: (value: string) => void;
|
|
87
|
+
onOpenFilePreview?: (f: FileData) => void;
|
|
88
|
+
onCloseFilePreview?: () => void;
|
|
89
|
+
onRetryFilePreview?: () => void;
|
|
81
90
|
onSelectDestination?: (location: LocationData, path?: string) => void;
|
|
82
91
|
onToggleOverwrite?: () => void;
|
|
83
92
|
onToggleSearchSubfolders?: () => void;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import type { FileData } from '../actions';
|
|
2
3
|
import type { CreateStorageBrowserInput, StorageBrowserProviderProps } from './types';
|
|
3
|
-
export default function createProvider({ actions, components, config, options, }: CreateStorageBrowserInput): (props: StorageBrowserProviderProps) => React.JSX.Element;
|
|
4
|
+
export default function createProvider<TResolver extends ((properties: FileData) => unknown) | undefined>({ actions, components, config, options, filePreview, }: CreateStorageBrowserInput<TResolver>): (props: StorageBrowserProviderProps) => React.JSX.Element;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { CreateStorageBrowserInput, CreateStorageBrowserOutput } from './types';
|
|
2
|
+
import type { FileData } from '../actions/handlers';
|
|
2
3
|
/**
|
|
3
4
|
* Creates a `StorageBrowser` component and utility hooks from provided configuration `input`.
|
|
4
5
|
*
|
|
5
6
|
* @param input - `StorageBrowser` auth, actions and ui configuration values
|
|
6
7
|
* @returns `StorageBrowser` component, `useAction` and `useView` hooks
|
|
7
8
|
*/
|
|
8
|
-
export default function createStorageBrowser<TInput extends CreateStorageBrowserInput
|
|
9
|
+
export default function createStorageBrowser<TResolver extends ((properties: FileData) => unknown) | undefined, TInput extends CreateStorageBrowserInput<TResolver>, TActions extends NonNullable<TInput['actions']>>(input: CreateStorageBrowserInput<TResolver> & {
|
|
10
|
+
actions?: TActions;
|
|
11
|
+
}): CreateStorageBrowserOutput<TActions>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
import type { CustomActionConfigs, DefaultActionConfigs, ExtendedActionConfigs, ListLocations, LocationData } from '../actions';
|
|
2
|
+
import type { CustomActionConfigs, DefaultActionConfigs, ExtendedActionConfigs, FileData, ListLocations, LocationData } from '../actions';
|
|
3
3
|
import type { StorageBrowserComponents } from '../components';
|
|
4
4
|
import type { GetLocationCredentials, RegisterAuthListener } from '../credentials';
|
|
5
5
|
import type { StorageBrowserDisplayText } from '../displayText';
|
|
@@ -100,10 +100,82 @@ export interface StorageBrowserOptions {
|
|
|
100
100
|
*/
|
|
101
101
|
validateFile?: (file: File) => boolean;
|
|
102
102
|
}
|
|
103
|
+
declare const BUILT_IN_FILE_TYPES: readonly ["text", "video", "image"];
|
|
104
|
+
export type BuiltInFileType = (typeof BUILT_IN_FILE_TYPES)[number];
|
|
105
|
+
type CustomFileType<T> = T extends (properties: FileData) => infer R ? R extends string | undefined ? Exclude<NonNullable<R>, BuiltInFileType> : never : never;
|
|
106
|
+
export type AllFileTypes<T extends undefined | any = undefined> = T extends undefined ? BuiltInFileType : BuiltInFileType | CustomFileType<T>;
|
|
107
|
+
export type FileSizeResolver<T extends string = BuiltInFileType> = (fileType: T) => number | undefined;
|
|
108
|
+
export type UrlOptionsResolver<T extends string = BuiltInFileType> = (fileType: T) => FilePreviewUrlOptions | undefined;
|
|
109
|
+
export type FilePreview<TResolver extends ((properties: FileData) => unknown) | undefined = undefined> = {
|
|
110
|
+
/**
|
|
111
|
+
* @description Function to determine file type from file properties
|
|
112
|
+
* @param properties - File metadata and properties
|
|
113
|
+
* @returns FileType or undefined that will fallback to the built-in file type detection
|
|
114
|
+
*/
|
|
115
|
+
fileTypeResolver?: TResolver;
|
|
116
|
+
/**
|
|
117
|
+
* @description Function that dynamically returns a custom React component for rendering specific file types based on file type
|
|
118
|
+
* @param fileType - The resolved file type
|
|
119
|
+
* @returns React component or undefined to use built-in renderer
|
|
120
|
+
* @example fileType => fileType === 'image' ? CustomImagePreview : undefined
|
|
121
|
+
* @example fileType => {
|
|
122
|
+
* if (fileType === 'text') return CodeRenderer;
|
|
123
|
+
* if (fileType === 'pdf') return CustomPDFViewer;
|
|
124
|
+
* return undefined; // Use built-in renderer
|
|
125
|
+
* }
|
|
126
|
+
*/
|
|
127
|
+
rendererResolver?: (fileType: AllFileTypes<TResolver>) => React.ComponentType<FilePreviewProps> | undefined;
|
|
128
|
+
/**
|
|
129
|
+
* @description Options for generating preview URLs.
|
|
130
|
+
* Can be:
|
|
131
|
+
* - A static configuration object
|
|
132
|
+
* - A function that dynamically returns URL options based on file type
|
|
133
|
+
* @example { expiresIn: 1800, validateObjectExistence: true }
|
|
134
|
+
* @example fileType => fileType === 'video' ? { expiresIn: 3600, validateObjectExistence: true } : undefined
|
|
135
|
+
*/
|
|
136
|
+
urlOptions?: FilePreviewUrlOptions | UrlOptionsResolver<AllFileTypes<TResolver>>;
|
|
137
|
+
/**
|
|
138
|
+
* @description Maximum file sizes allowed for preview in kilobytes (KB).
|
|
139
|
+
* Can be:
|
|
140
|
+
* - A single limit for all file types
|
|
141
|
+
* - A function that dynamically calculates the limit based on file type
|
|
142
|
+
* @example 10240 // 10MB limit for all files
|
|
143
|
+
* @example fileType => fileType === 'image' ? 5120 : undefined
|
|
144
|
+
*/
|
|
145
|
+
maxFileSize?: number | FileSizeResolver<AllFileTypes<TResolver>>;
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* @description Options for generating file preview URLs
|
|
149
|
+
*/
|
|
150
|
+
export interface FilePreviewUrlOptions {
|
|
151
|
+
/**
|
|
152
|
+
* @description Whether to validate that the object exists before generating the URL
|
|
153
|
+
* @default false
|
|
154
|
+
*/
|
|
155
|
+
validateObjectExistence?: boolean;
|
|
156
|
+
/**
|
|
157
|
+
* @description Time in seconds until the generated URL expires
|
|
158
|
+
* @default 900 (15 minutes)
|
|
159
|
+
*/
|
|
160
|
+
expiresIn?: number;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* @description Props provided to custom file preview renderer components
|
|
164
|
+
*/
|
|
165
|
+
export interface FilePreviewProps {
|
|
166
|
+
/**
|
|
167
|
+
* @description File metadata including content type and other properties
|
|
168
|
+
*/
|
|
169
|
+
fileData: FileData;
|
|
170
|
+
/**
|
|
171
|
+
* @description Pre-signed URL for the file.
|
|
172
|
+
*/
|
|
173
|
+
url: string;
|
|
174
|
+
}
|
|
103
175
|
/**
|
|
104
176
|
* @description configuration and options for `createStorageBrowser`
|
|
105
177
|
*/
|
|
106
|
-
export interface CreateStorageBrowserInput {
|
|
178
|
+
export interface CreateStorageBrowserInput<TResolver extends ((properties: FileData) => unknown) | undefined = undefined> {
|
|
107
179
|
/**
|
|
108
180
|
* @description override and default `StorageBrowser` actions and action view configs
|
|
109
181
|
*/
|
|
@@ -125,6 +197,10 @@ export interface CreateStorageBrowserInput {
|
|
|
125
197
|
* @description Additional options and overrides for `StorageBrowser`
|
|
126
198
|
*/
|
|
127
199
|
options?: StorageBrowserOptions;
|
|
200
|
+
/**
|
|
201
|
+
* @description Configuration for file preview functionality including custom renderers, file type resolution, and size limits
|
|
202
|
+
*/
|
|
203
|
+
filePreview?: FilePreview<TResolver> | false;
|
|
128
204
|
}
|
|
129
205
|
/**
|
|
130
206
|
* `StorageBrowser` component properties
|
|
@@ -39,6 +39,33 @@ export interface DefaultLocationsViewDisplayText extends DefaultListViewDisplayT
|
|
|
39
39
|
interface ListItemsMessageData extends ListMessageData {
|
|
40
40
|
items: LocationItemData[] | undefined;
|
|
41
41
|
}
|
|
42
|
+
export interface DefaultFilePreviewDisplayText {
|
|
43
|
+
closeButtonLabel: string;
|
|
44
|
+
filePreviewTitle: string;
|
|
45
|
+
fileInformationTitle: string;
|
|
46
|
+
errorMessage: string;
|
|
47
|
+
sizeLimitMessage: string;
|
|
48
|
+
unsupportedFileMessage: string;
|
|
49
|
+
keyLabel: string;
|
|
50
|
+
sizeLabel: string;
|
|
51
|
+
versionIdLabel: string;
|
|
52
|
+
lastModifiedLabel: string;
|
|
53
|
+
entityTagLabel: string;
|
|
54
|
+
typeLabel: string;
|
|
55
|
+
unknownValue: string;
|
|
56
|
+
errorDescription: string;
|
|
57
|
+
unsupportedFileDescription: string;
|
|
58
|
+
imageLoadErrorDescription: string;
|
|
59
|
+
videoLoadErrorDescription: string;
|
|
60
|
+
textLoadErrorDescription: string;
|
|
61
|
+
generalPreviewErrorDescription: string;
|
|
62
|
+
fileSizeLimitDescription: string;
|
|
63
|
+
filePrefix: string;
|
|
64
|
+
retryButtonLabel: string;
|
|
65
|
+
downloadButtonLabel: string;
|
|
66
|
+
getTextErrorMessage: (error: string) => string;
|
|
67
|
+
emptyFileMessage: string;
|
|
68
|
+
}
|
|
42
69
|
export interface DefaultLocationDetailViewDisplayText extends DefaultListViewDisplayText {
|
|
43
70
|
getListItemsResultMessage: (data: ListItemsMessageData) => {
|
|
44
71
|
content?: string;
|
|
@@ -53,6 +80,7 @@ export interface DefaultLocationDetailViewDisplayText extends DefaultListViewDis
|
|
|
53
80
|
tableColumnTypeHeader: string;
|
|
54
81
|
getActionListItemLabel: (key: string | undefined) => string;
|
|
55
82
|
getTitle: (location: LocationState) => string;
|
|
83
|
+
filePreview: DefaultFilePreviewDisplayText;
|
|
56
84
|
}
|
|
57
85
|
/**
|
|
58
86
|
* Action view display text values
|
|
@@ -149,7 +177,8 @@ export interface DownloadViewDisplayText extends Partial<DefaultDownloadViewDisp
|
|
|
149
177
|
}
|
|
150
178
|
export interface LocationsViewDisplayText extends Partial<DefaultLocationsViewDisplayText> {
|
|
151
179
|
}
|
|
152
|
-
export interface LocationDetailViewDisplayText extends Partial<DefaultLocationDetailViewDisplayText
|
|
180
|
+
export interface LocationDetailViewDisplayText extends Partial<Omit<DefaultLocationDetailViewDisplayText, 'filePreview'>> {
|
|
181
|
+
filePreview?: Partial<DefaultFilePreviewDisplayText>;
|
|
153
182
|
}
|
|
154
183
|
export interface UploadViewDisplayText extends Partial<DefaultUploadViewDisplayText> {
|
|
155
184
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { FilePreview } from '../createStorageBrowser/types';
|
|
3
|
+
import type { FileData } from '../actions';
|
|
4
|
+
export declare const FilePreviewContext: React.Context<false | FilePreview | undefined>, useFilePreviewContext: (params?: {
|
|
5
|
+
errorMessage?: string | undefined;
|
|
6
|
+
} | undefined) => false | FilePreview | undefined;
|
|
7
|
+
export declare function FilePreviewProvider<TResolver extends ((properties: FileData) => unknown) | undefined>({ children, filePreview, }: {
|
|
8
|
+
children: React.ReactNode;
|
|
9
|
+
filePreview?: FilePreview<TResolver> | false;
|
|
10
|
+
}): React.JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { FilePreviewProvider, useFilePreviewContext } from './context';
|
|
@@ -1,2 +1,8 @@
|
|
|
1
|
+
import type { StorageBrowserIconType } from '../../../components';
|
|
1
2
|
import type { HeaderKeys } from './types';
|
|
2
3
|
export declare const LOCATION_DETAIL_VIEW_HEADERS: HeaderKeys[];
|
|
4
|
+
export interface ThumbnailExtensionsMapping {
|
|
5
|
+
[key: string]: StorageBrowserIconType;
|
|
6
|
+
}
|
|
7
|
+
export declare const GENERIC_FILE_ICON = "file";
|
|
8
|
+
export declare const EXTENSION_THUMBNAIL_MAPPINGS: ThumbnailExtensionsMapping;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { LocationPermissions } from '../../../actions';
|
|
2
2
|
import type { DataTableProps } from '../../../components';
|
|
3
|
-
export declare const getFileRowContent: ({ permissions, isSelected, itemLocationKey, getDateDisplayValue, lastModified, rowId, rowKey, selectFileLabel, size, onDownload, onSelect, }: {
|
|
3
|
+
export declare const getFileRowContent: ({ filePreviewEnabled, permissions, isSelected, itemLocationKey, getDateDisplayValue, lastModified, rowId, rowKey, selectFileLabel, size, onDownload, onSelect, onClick, }: {
|
|
4
|
+
filePreviewEnabled: boolean;
|
|
4
5
|
permissions: LocationPermissions;
|
|
5
6
|
isSelected: boolean;
|
|
6
7
|
itemLocationKey: string;
|
|
@@ -12,4 +13,5 @@ export declare const getFileRowContent: ({ permissions, isSelected, itemLocation
|
|
|
12
13
|
size: number;
|
|
13
14
|
onDownload: () => void;
|
|
14
15
|
onSelect: () => void;
|
|
16
|
+
onClick: (() => void) | undefined;
|
|
15
17
|
}) => DataTableProps['rows'][number]['content'];
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import type { FileData, FileDataItem,
|
|
1
|
+
import type { FileData, FileDataItem, LocationData, LocationItemData } from '../../../actions';
|
|
2
2
|
import type { DataTableProps } from '../../../components';
|
|
3
3
|
import type { DefaultLocationDetailViewDisplayText } from '../../../displayText/types';
|
|
4
4
|
import type { LocationState } from '../../../store';
|
|
5
|
-
export declare const getLocationDetailViewTableData: ({ areAllFilesSelected, displayText, location, fileDataItems, hasFiles, pageItems, selectFileLabel, selectAllFilesLabel, getDateDisplayValue, onDownload, onNavigate, onSelect, onSelectAll, }: {
|
|
5
|
+
export declare const getLocationDetailViewTableData: ({ filePreviewEnabled, activeFile, onSelectActiveFile, areAllFilesSelected, displayText, location, fileDataItems, hasFiles, pageItems, selectFileLabel, selectAllFilesLabel, getDateDisplayValue, onDownload, onNavigate, onSelect, onSelectAll, }: {
|
|
6
|
+
filePreviewEnabled: boolean;
|
|
7
|
+
activeFile: FileData | undefined;
|
|
8
|
+
onSelectActiveFile: (arg: FileData) => void;
|
|
6
9
|
areAllFilesSelected: boolean;
|
|
7
10
|
displayText: DefaultLocationDetailViewDisplayText;
|
|
8
11
|
location: LocationState;
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import type { FileData, FileDataItem, LocationData, LocationItemData } from '../../actions';
|
|
2
2
|
import type { ActionListItem } from '../../components/composables/ActionsList';
|
|
3
|
+
import type { FilePreviewProps } from '../../components/composables/FilePreview';
|
|
3
4
|
import type { LocationState } from '../../store';
|
|
5
|
+
import type { FilePreviewState } from '../hooks/useFilePreview';
|
|
4
6
|
import type { ListViewProps } from '../types';
|
|
5
7
|
export interface LocationDetailViewState {
|
|
6
8
|
actionItems: ActionListItem[];
|
|
9
|
+
activeFile: FileData | undefined;
|
|
10
|
+
activeFileHasNext: boolean;
|
|
11
|
+
activeFileHasPrev: boolean;
|
|
7
12
|
actionType: string | undefined;
|
|
8
13
|
downloadErrorMessage: string | undefined;
|
|
9
14
|
fileDataItems: FileDataItem[] | undefined;
|
|
@@ -27,12 +32,16 @@ export interface LocationDetailViewState {
|
|
|
27
32
|
onSearch: () => void;
|
|
28
33
|
onSearchClear: () => void;
|
|
29
34
|
onSearchQueryChange: (value: string) => void;
|
|
35
|
+
onRetryFilePreview: () => void;
|
|
30
36
|
onSelect: (isSelected: boolean, fileItem: FileData) => void;
|
|
37
|
+
onSelectActiveFile: (file?: FileData | 'prev' | 'next') => void;
|
|
31
38
|
onToggleSearchSubfolders: () => void;
|
|
32
39
|
onToggleSelectAll: () => void;
|
|
33
40
|
page: number;
|
|
34
41
|
pageItems: LocationItemData[];
|
|
35
42
|
searchQuery: string;
|
|
43
|
+
filePreviewState: FilePreviewState;
|
|
44
|
+
filePreviewEnabled: boolean;
|
|
36
45
|
}
|
|
37
46
|
export interface LocationDetailViewProps extends ListViewProps {
|
|
38
47
|
onActionSelect?: (type: string) => void;
|
|
@@ -61,6 +70,7 @@ export interface LocationDetailViewType {
|
|
|
61
70
|
Search: () => React.JSX.Element | null;
|
|
62
71
|
SearchSubfoldersToggle: () => React.JSX.Element | null;
|
|
63
72
|
Title: () => React.JSX.Element | null;
|
|
73
|
+
FilePreview: (props: FilePreviewProps) => React.JSX.Element | null;
|
|
64
74
|
}
|
|
65
75
|
interface InitialValues {
|
|
66
76
|
pageSize?: number;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { FileData } from '../../../actions';
|
|
2
|
+
export type OKFilePreviewContent = {
|
|
3
|
+
ok: true;
|
|
4
|
+
isLoading: false;
|
|
5
|
+
fileData: FileData;
|
|
6
|
+
url: string;
|
|
7
|
+
};
|
|
8
|
+
export type FailFilePreviewContent = {
|
|
9
|
+
isLoading: false;
|
|
10
|
+
ok: false;
|
|
11
|
+
error: string;
|
|
12
|
+
};
|
|
13
|
+
export type LoadingFilePreviewContent = {
|
|
14
|
+
isLoading: true;
|
|
15
|
+
};
|
|
16
|
+
export type FilePreviewContent = OKFilePreviewContent | FailFilePreviewContent | LoadingFilePreviewContent;
|
|
17
|
+
type DisabledFilePreviewState = {
|
|
18
|
+
enabled: false;
|
|
19
|
+
};
|
|
20
|
+
export type EnabledFilePreviewState = FilePreviewContent & {
|
|
21
|
+
enabled: true;
|
|
22
|
+
};
|
|
23
|
+
export type FilePreviewState = EnabledFilePreviewState | DisabledFilePreviewState;
|
|
24
|
+
export type UseFilePreviewState = FilePreviewState & {
|
|
25
|
+
optout: boolean;
|
|
26
|
+
handleRetry: () => void;
|
|
27
|
+
};
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AllFileTypes, FilePreviewUrlOptions } from '../../../createStorageBrowser/types';
|
|
2
|
+
export interface FileTypeMapping {
|
|
3
|
+
[key: string]: AllFileTypes;
|
|
4
|
+
}
|
|
5
|
+
export declare const DEFAULT_URL_OPTIONS: FilePreviewUrlOptions;
|
|
6
|
+
export declare const DEFAULT_FILE_SIZE_LIMIT: number;
|
|
7
|
+
export declare const DEFAULT_FILE_SIZE_LIMITS: Record<AllFileTypes, number>;
|
|
8
|
+
export declare const GENERIC_CONTENT_TYPES: ReadonlySet<string>;
|
|
9
|
+
export declare const EXTENSION_MAPPINGS: FileTypeMapping;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracts the filename from a file key path
|
|
3
|
+
* @param fileKey - The full file key/path
|
|
4
|
+
* @returns The filename (last part after '/') or empty string if fileKey is null/undefined
|
|
5
|
+
*/
|
|
6
|
+
export declare function getFileName(fileKey: string | null | undefined): string;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { FileData } from '../../../actions';
|
|
2
|
+
import type { AllFileTypes } from '../../../createStorageBrowser/types';
|
|
3
|
+
export declare function isGenericContentType(contentType?: string): boolean;
|
|
4
|
+
export declare function getFileTypeFromContentType(contentType?: string): AllFileTypes | null;
|
|
5
|
+
interface DetermineFileTypeOptions {
|
|
6
|
+
fileTypeResolver?: (p: FileData) => AllFileTypes | undefined;
|
|
7
|
+
fileData: FileData;
|
|
8
|
+
}
|
|
9
|
+
export declare function getFileExtension(key?: string): string | null;
|
|
10
|
+
export declare function getFileTypeFromExtension(extension?: string | null): AllFileTypes | null;
|
|
11
|
+
export declare function determineFileType(options: DetermineFileTypeOptions): AllFileTypes | null;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import type { AllFileTypes, FilePreviewUrlOptions, UrlOptionsResolver } from '../../../createStorageBrowser/types';
|
|
2
|
+
export declare function resolveUrlOptions(options: FilePreviewUrlOptions | UrlOptionsResolver | undefined, fileType: AllFileTypes | null): FilePreviewUrlOptions;
|
package/dist/types/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "3.
|
|
1
|
+
export declare const VERSION = "3.13.0";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-amplify/ui-react-storage",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.13.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "dist/esm/index.mjs",
|
|
6
6
|
"exports": {
|
|
@@ -45,9 +45,9 @@
|
|
|
45
45
|
"typecheck": "tsc --noEmit"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@aws-amplify/ui": "6.
|
|
49
|
-
"@aws-amplify/ui-react": "6.
|
|
50
|
-
"@aws-amplify/ui-react-core": "3.4.
|
|
48
|
+
"@aws-amplify/ui": "6.12.0",
|
|
49
|
+
"@aws-amplify/ui-react": "6.13.0",
|
|
50
|
+
"@aws-amplify/ui-react-core": "3.4.5",
|
|
51
51
|
"tslib": "^2.5.2"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"name": "createStorageBrowser",
|
|
67
67
|
"path": "dist/esm/browser.mjs",
|
|
68
68
|
"import": "{ createStorageBrowser }",
|
|
69
|
-
"limit": "
|
|
69
|
+
"limit": "70 kB",
|
|
70
70
|
"ignore": [
|
|
71
71
|
"@aws-amplify/storage"
|
|
72
72
|
]
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"name": "StorageBrowser",
|
|
76
76
|
"path": "dist/esm/index.mjs",
|
|
77
77
|
"import": "{ StorageBrowser }",
|
|
78
|
-
"limit": "
|
|
78
|
+
"limit": "92 kB"
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
"name": "FileUploader",
|