@aws-amplify/ui-react-storage 3.3.2 → 3.3.4

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 (58) hide show
  1. package/dist/esm/components/FileUploader/FileUploader.mjs +2 -4
  2. package/dist/esm/components/FileUploader/hooks/useFileUploader/actions.mjs +8 -5
  3. package/dist/esm/components/FileUploader/hooks/useFileUploader/reducer.mjs +16 -28
  4. package/dist/esm/components/FileUploader/hooks/useFileUploader/types.mjs +9 -8
  5. package/dist/esm/components/FileUploader/hooks/useFileUploader/useFileUploader.mjs +31 -44
  6. package/dist/esm/components/FileUploader/hooks/useUploadFiles/useUploadFiles.mjs +5 -9
  7. package/dist/esm/components/FileUploader/utils/getInput.mjs +1 -5
  8. package/dist/esm/components/StorageManager/StorageManager.mjs +9 -11
  9. package/dist/esm/components/StorageManager/ui/FileList/FileControl.mjs +1 -1
  10. package/dist/esm/components/StorageManager/ui/FileList/FileList.mjs +1 -1
  11. package/dist/esm/components/StorageManager/ui/FileList/FileStatusMessage.mjs +1 -1
  12. package/dist/esm/version.mjs +1 -1
  13. package/dist/index.js +115 -569
  14. package/dist/styles.css +62 -23
  15. package/dist/types/components/FileUploader/hooks/useFileUploader/actions.d.ts +4 -4
  16. package/dist/types/components/FileUploader/hooks/useFileUploader/types.d.ts +12 -10
  17. package/dist/types/components/FileUploader/hooks/useFileUploader/useFileUploader.d.ts +7 -10
  18. package/dist/types/components/FileUploader/hooks/useUploadFiles/useUploadFiles.d.ts +1 -5
  19. package/dist/types/components/FileUploader/index.d.ts +1 -1
  20. package/dist/types/components/FileUploader/types.d.ts +1 -1
  21. package/dist/types/components/FileUploader/utils/getInput.d.ts +1 -4
  22. package/dist/types/components/StorageManager/index.d.ts +1 -1
  23. package/dist/types/components/StorageManager/types.d.ts +2 -9
  24. package/dist/types/components/StorageManager/ui/DropZone/types.d.ts +1 -1
  25. package/dist/types/components/StorageManager/ui/FileList/types.d.ts +2 -2
  26. package/dist/types/components/StorageManager/ui/FileListFooter/FileListFooter.d.ts +1 -1
  27. package/dist/types/components/StorageManager/ui/FileListHeader/FileListHeader.d.ts +1 -1
  28. package/dist/types/components/index.d.ts +2 -2
  29. package/dist/types/index.d.ts +1 -1
  30. package/dist/types/version.d.ts +1 -1
  31. package/package.json +4 -4
  32. package/dist/esm/components/StorageManager/hooks/useStorageManager/actions.mjs +0 -39
  33. package/dist/esm/components/StorageManager/hooks/useStorageManager/reducer.mjs +0 -93
  34. package/dist/esm/components/StorageManager/hooks/useStorageManager/types.mjs +0 -13
  35. package/dist/esm/components/StorageManager/hooks/useStorageManager/useStorageManager.mjs +0 -62
  36. package/dist/esm/components/StorageManager/hooks/useUploadFiles/useUploadFiles.mjs +0 -79
  37. package/dist/esm/components/StorageManager/types.mjs +0 -11
  38. package/dist/esm/components/StorageManager/utils/checkMaxFileSize.mjs +0 -12
  39. package/dist/esm/components/StorageManager/utils/displayText.mjs +0 -39
  40. package/dist/esm/components/StorageManager/utils/filterAllowedFiles.mjs +0 -27
  41. package/dist/esm/components/StorageManager/utils/getInput.mjs +0 -39
  42. package/dist/esm/components/StorageManager/utils/resolveFile.mjs +0 -20
  43. package/dist/esm/components/StorageManager/utils/uploadFile.mjs +0 -26
  44. package/dist/types/components/StorageManager/hooks/index.d.ts +0 -2
  45. package/dist/types/components/StorageManager/hooks/useStorageManager/actions.d.ts +0 -22
  46. package/dist/types/components/StorageManager/hooks/useStorageManager/index.d.ts +0 -1
  47. package/dist/types/components/StorageManager/hooks/useStorageManager/reducer.d.ts +0 -2
  48. package/dist/types/components/StorageManager/hooks/useStorageManager/types.d.ts +0 -50
  49. package/dist/types/components/StorageManager/hooks/useStorageManager/useStorageManager.d.ts +0 -35
  50. package/dist/types/components/StorageManager/hooks/useUploadFiles/index.d.ts +0 -1
  51. package/dist/types/components/StorageManager/hooks/useUploadFiles/useUploadFiles.d.ts +0 -12
  52. package/dist/types/components/StorageManager/utils/checkMaxFileSize.d.ts +0 -5
  53. package/dist/types/components/StorageManager/utils/displayText.d.ts +0 -22
  54. package/dist/types/components/StorageManager/utils/filterAllowedFiles.d.ts +0 -1
  55. package/dist/types/components/StorageManager/utils/getInput.d.ts +0 -17
  56. package/dist/types/components/StorageManager/utils/index.d.ts +0 -5
  57. package/dist/types/components/StorageManager/utils/resolveFile.d.ts +0 -9
  58. package/dist/types/components/StorageManager/utils/uploadFile.d.ts +0 -32
package/dist/index.js CHANGED
@@ -33,7 +33,7 @@ function _interopNamespace(e) {
33
33
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
34
34
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
35
35
 
36
- var FileStatus$1;
36
+ var FileStatus;
37
37
  (function (FileStatus) {
38
38
  FileStatus["ADDED"] = "added";
39
39
  FileStatus["QUEUED"] = "queued";
@@ -41,21 +41,22 @@ var FileStatus$1;
41
41
  FileStatus["PAUSED"] = "paused";
42
42
  FileStatus["ERROR"] = "error";
43
43
  FileStatus["UPLOADED"] = "uploaded";
44
- })(FileStatus$1 || (FileStatus$1 = {}));
44
+ })(FileStatus || (FileStatus = {}));
45
45
 
46
46
  var FileUploaderActionTypes;
47
47
  (function (FileUploaderActionTypes) {
48
- FileUploaderActionTypes["ADD_FILES"] = "ADD_FILES";
49
- FileUploaderActionTypes["CLEAR_FILES"] = "CLEAR_FILES";
50
- FileUploaderActionTypes["QUEUE_FILES"] = "QUEUE_FILES";
51
- FileUploaderActionTypes["SET_STATUS"] = "SET_STATUS";
52
- FileUploaderActionTypes["SET_PROCESSED_FILE_KEY"] = "SET_PROCESSED_FILE_KEY";
53
- FileUploaderActionTypes["SET_STATUS_UPLOADING"] = "SET_STATUS_UPLOADING";
54
- FileUploaderActionTypes["SET_UPLOAD_PROGRESS"] = "SET_UPLOAD_PROGRESS";
55
- FileUploaderActionTypes["REMOVE_UPLOAD"] = "REMOVE_UPLOAD";
48
+ FileUploaderActionTypes[FileUploaderActionTypes["ADD_FILES"] = 0] = "ADD_FILES";
49
+ FileUploaderActionTypes[FileUploaderActionTypes["CLEAR_FILES"] = 1] = "CLEAR_FILES";
50
+ FileUploaderActionTypes[FileUploaderActionTypes["QUEUE_FILES"] = 2] = "QUEUE_FILES";
51
+ FileUploaderActionTypes[FileUploaderActionTypes["REMOVE_UPLOAD"] = 3] = "REMOVE_UPLOAD";
52
+ FileUploaderActionTypes[FileUploaderActionTypes["SET_STATUS"] = 4] = "SET_STATUS";
53
+ FileUploaderActionTypes[FileUploaderActionTypes["SET_PROCESSED_FILE_KEY"] = 5] = "SET_PROCESSED_FILE_KEY";
54
+ FileUploaderActionTypes[FileUploaderActionTypes["SET_STATUS_UPLOADED"] = 6] = "SET_STATUS_UPLOADED";
55
+ FileUploaderActionTypes[FileUploaderActionTypes["SET_STATUS_UPLOADING"] = 7] = "SET_STATUS_UPLOADING";
56
+ FileUploaderActionTypes[FileUploaderActionTypes["SET_UPLOAD_PROGRESS"] = 8] = "SET_UPLOAD_PROGRESS";
56
57
  })(FileUploaderActionTypes || (FileUploaderActionTypes = {}));
57
58
 
58
- const updateFiles$1 = (files, nextFileData) => files.reduce((files, currentFile) => {
59
+ const updateFiles = (files, nextFileData) => files.reduce((files, currentFile) => {
59
60
  if (currentFile.id === nextFileData.id) {
60
61
  return [...files, { ...currentFile, ...nextFileData }];
61
62
  }
@@ -74,7 +75,7 @@ function fileUploaderStateReducer(state, action) {
74
75
  file,
75
76
  error: errorText,
76
77
  key: file.name,
77
- status: errorText ? FileStatus$1.ERROR : status,
78
+ status: errorText ? FileStatus.ERROR : status,
78
79
  isImage: file.type.startsWith('image/'),
79
80
  progress: -1,
80
81
  };
@@ -87,155 +88,132 @@ function fileUploaderStateReducer(state, action) {
87
88
  }
88
89
  case FileUploaderActionTypes.QUEUE_FILES: {
89
90
  const { files } = state;
90
- const newFiles = files.reduce((files, currentFile) => {
91
- return [
92
- ...files,
93
- {
94
- ...currentFile,
95
- ...(currentFile.status === FileStatus$1.ADDED
96
- ? { status: FileStatus$1.QUEUED }
97
- : {}),
98
- },
99
- ];
100
- }, []);
101
- return {
102
- ...state,
103
- files: newFiles,
104
- };
91
+ const newFiles = files.reduce((files, currentFile) => [
92
+ ...files,
93
+ {
94
+ ...currentFile,
95
+ ...(currentFile.status === FileStatus.ADDED
96
+ ? { status: FileStatus.QUEUED }
97
+ : {}),
98
+ },
99
+ ], []);
100
+ return { ...state, files: newFiles };
105
101
  }
106
102
  case FileUploaderActionTypes.SET_STATUS_UPLOADING: {
107
103
  const { id, uploadTask } = action;
108
- const status = FileStatus$1.UPLOADING;
104
+ const status = FileStatus.UPLOADING;
109
105
  const progress = 0;
110
106
  const nextFileData = { status, progress, id, uploadTask };
111
- const files = updateFiles$1(state.files, nextFileData);
107
+ const files = updateFiles(state.files, nextFileData);
112
108
  return { ...state, files };
113
109
  }
114
- case FileUploaderActionTypes.SET_PROCESSED_FILE_KEY: {
115
- const { processedKey, id } = action;
116
- const files = updateFiles$1(state.files, { processedKey, id });
117
- return { files };
110
+ case FileUploaderActionTypes.SET_STATUS_UPLOADED: {
111
+ const files = updateFiles(state.files, action);
112
+ return { ...state, files };
118
113
  }
119
114
  case FileUploaderActionTypes.SET_UPLOAD_PROGRESS: {
120
115
  const { id, progress } = action;
121
- const files = updateFiles$1(state.files, { id, progress });
116
+ const files = updateFiles(state.files, { id, progress });
122
117
  return { ...state, files };
123
118
  }
124
119
  case FileUploaderActionTypes.SET_STATUS: {
125
120
  const { id, status } = action;
126
- const files = updateFiles$1(state.files, { id, status });
121
+ const files = updateFiles(state.files, { id, status });
127
122
  return { ...state, files };
128
123
  }
129
124
  case FileUploaderActionTypes.REMOVE_UPLOAD: {
130
125
  const { id } = action;
131
126
  const { files } = state;
132
127
  const newFiles = files.reduce((files, currentFile) => {
133
- if (currentFile.id === id) {
134
- // remove by not returning currentFile
135
- return [...files];
136
- }
137
- return [...files, currentFile];
128
+ // remove by not returning currentFile
129
+ return currentFile.id === id ? [...files] : [...files, currentFile];
138
130
  }, []);
139
- return {
140
- ...state,
141
- files: newFiles,
142
- };
131
+ return { ...state, files: newFiles };
143
132
  }
144
133
  }
145
134
  }
146
135
 
147
- const addFilesAction$1 = ({ files, status, getFileErrorMessage, }) => ({
136
+ const addFilesAction = ({ files, status, getFileErrorMessage, }) => ({
148
137
  type: FileUploaderActionTypes.ADD_FILES,
149
138
  files,
150
139
  status,
151
140
  getFileErrorMessage,
152
141
  });
153
- const clearFilesAction$1 = () => ({
142
+ const clearFilesAction = () => ({
154
143
  type: FileUploaderActionTypes.CLEAR_FILES,
155
144
  });
156
- const queueFilesAction$1 = () => ({
145
+ const queueFilesAction = () => ({
157
146
  type: FileUploaderActionTypes.QUEUE_FILES,
158
147
  });
159
- const setProcessedKeyAction$1 = (input) => ({
160
- ...input,
161
- type: FileUploaderActionTypes.SET_PROCESSED_FILE_KEY,
162
- });
163
- const setUploadingFileAction$1 = ({ id, uploadTask, }) => ({
148
+ const setUploadingFileAction = ({ id, uploadTask, }) => ({
164
149
  type: FileUploaderActionTypes.SET_STATUS_UPLOADING,
165
150
  id,
166
151
  uploadTask,
167
152
  });
168
- const setUploadProgressAction$1 = ({ id, progress, }) => ({
153
+ const setUploadProgressAction = ({ id, progress, }) => ({
169
154
  type: FileUploaderActionTypes.SET_UPLOAD_PROGRESS,
170
155
  id,
171
156
  progress,
172
157
  });
173
- const setUploadStatusAction$1 = ({ id, status, }) => ({
158
+ const setUploadStatusAction = ({ id, status, }) => ({
174
159
  type: FileUploaderActionTypes.SET_STATUS,
175
160
  id,
176
161
  status,
177
162
  });
178
- const removeUploadAction$1 = ({ id }) => ({
163
+ const setUploadSuccessAction = ({ id, resolvedKey, }) => ({
164
+ type: FileUploaderActionTypes.SET_STATUS_UPLOADED,
165
+ id,
166
+ resolvedKey,
167
+ status: FileStatus.UPLOADED,
168
+ });
169
+ const removeUploadAction = ({ id }) => ({
179
170
  type: FileUploaderActionTypes.REMOVE_UPLOAD,
180
171
  id,
181
172
  });
182
173
 
183
- const isDefaultFile$1 = (file) => !!(ui.isObject(file) && file.key);
184
- const createFileFromDefault$1 = (file) => isDefaultFile$1(file)
185
- ? { ...file, id: file.key, status: FileStatus$1.UPLOADED }
174
+ const isDefaultFile = (file) => !!(ui.isObject(file) && file.key);
175
+ const createFileFromDefault = (file) => isDefaultFile(file)
176
+ ? { ...file, id: file.key, status: FileStatus.UPLOADED }
186
177
  : undefined;
187
178
  function useFileUploader(defaultFiles = []) {
188
179
  const [{ files }, dispatch] = React__default["default"].useReducer(fileUploaderStateReducer, {
189
180
  files: (Array.isArray(defaultFiles)
190
- ? defaultFiles.map(createFileFromDefault$1).filter((file) => !!file)
181
+ ? defaultFiles.map(createFileFromDefault).filter((file) => !!file)
191
182
  : []),
192
183
  });
193
- const addFiles = ({ files, status, getFileErrorMessage, }) => {
194
- dispatch(addFilesAction$1({ files, status, getFileErrorMessage }));
195
- };
196
- const clearFiles = () => {
197
- dispatch(clearFilesAction$1());
198
- };
199
- const queueFiles = () => {
200
- dispatch(queueFilesAction$1());
201
- };
202
- const setUploadingFile = ({ uploadTask, id, }) => {
203
- dispatch(setUploadingFileAction$1({ id, uploadTask }));
204
- };
205
- const setProcessedKey = (input) => {
206
- dispatch(setProcessedKeyAction$1(input));
207
- };
208
- const setUploadProgress = ({ progress, id, }) => {
209
- dispatch(setUploadProgressAction$1({ id, progress }));
210
- };
211
- const setUploadSuccess = ({ id }) => {
212
- dispatch(setUploadStatusAction$1({ id, status: FileStatus$1.UPLOADED }));
213
- };
214
- const setUploadPaused = ({ id }) => {
215
- dispatch(setUploadStatusAction$1({ id, status: FileStatus$1.PAUSED }));
216
- };
217
- const setUploadResumed = ({ id }) => {
218
- dispatch(setUploadStatusAction$1({ id, status: FileStatus$1.UPLOADING }));
219
- };
220
- const removeUpload = ({ id }) => {
221
- dispatch(removeUploadAction$1({ id }));
222
- };
223
- return {
224
- removeUpload,
225
- setProcessedKey,
226
- setUploadPaused,
227
- setUploadProgress,
228
- setUploadResumed,
229
- setUploadSuccess,
230
- setUploadingFile,
231
- queueFiles,
232
- addFiles,
233
- clearFiles,
234
- files,
235
- };
184
+ const dispatchers = React__default["default"].useMemo(() => ({
185
+ addFiles: (params) => {
186
+ dispatch(addFilesAction(params));
187
+ },
188
+ clearFiles: () => {
189
+ dispatch(clearFilesAction());
190
+ },
191
+ queueFiles: () => {
192
+ dispatch(queueFilesAction());
193
+ },
194
+ setUploadingFile: (params) => {
195
+ dispatch(setUploadingFileAction(params));
196
+ },
197
+ setUploadProgress: (params) => {
198
+ dispatch(setUploadProgressAction(params));
199
+ },
200
+ setUploadSuccess: (params) => {
201
+ dispatch(setUploadSuccessAction(params));
202
+ },
203
+ setUploadPaused: ({ id }) => {
204
+ dispatch(setUploadStatusAction({ id, status: FileStatus.PAUSED }));
205
+ },
206
+ setUploadResumed: ({ id }) => {
207
+ dispatch(setUploadStatusAction({ id, status: FileStatus.UPLOADING }));
208
+ },
209
+ removeUpload: ({ id }) => {
210
+ dispatch(removeUploadAction({ id }));
211
+ },
212
+ }), []);
213
+ return { ...dispatchers, files };
236
214
  }
237
215
 
238
- const checkMaxFileSize$1 = ({ file, getFileSizeErrorText, maxFileSize, }) => {
216
+ const checkMaxFileSize = ({ file, getFileSizeErrorText, maxFileSize, }) => {
239
217
  if (maxFileSize === undefined)
240
218
  return '';
241
219
  if (file.size > maxFileSize) {
@@ -282,7 +260,7 @@ const defaultFileUploaderDisplayText = {
282
260
  },
283
261
  };
284
262
 
285
- const filterAllowedFiles$1 = (files, acceptedFileTypes) => {
263
+ const filterAllowedFiles = (files, acceptedFileTypes) => {
286
264
  // Allow any files if acceptedFileTypes is undefined, empty array, or contains '*'
287
265
  if (!acceptedFileTypes ||
288
266
  acceptedFileTypes.length === 0 ||
@@ -313,7 +291,7 @@ const filterAllowedFiles$1 = (files, acceptedFileTypes) => {
313
291
  * and returns a Promise that resolves to { file, key, ..rest }
314
292
  * regardless if processFile is defined and if it is sync or async
315
293
  */
316
- const resolveFile$1 = ({ processFile, ...input }) => {
294
+ const resolveFile = ({ processFile, ...input }) => {
317
295
  return new Promise((resolve, reject) => {
318
296
  const result = ui.isFunction(processFile) ? processFile(input) : input;
319
297
  if (result instanceof Promise) {
@@ -325,12 +303,12 @@ const resolveFile$1 = ({ processFile, ...input }) => {
325
303
  });
326
304
  };
327
305
 
328
- const getInput$1 = ({ accessLevel, file, key, onProcessFileSuccess, onProgress, path, processFile, useAccelerateEndpoint, }) => {
306
+ const getInput = ({ accessLevel, file, key, onProgress, path, processFile, useAccelerateEndpoint, }) => {
329
307
  return async () => {
330
308
  const hasCallbackPath = ui.isTypedFunction(path);
331
309
  const hasStringPath = ui.isString(path);
332
310
  const hasKeyInput = !!accessLevel && !hasCallbackPath;
333
- const { file: data, key: processedKey, ...rest } = await resolveFile$1({ file, key, processFile });
311
+ const { file: data, key: processedKey, ...rest } = await resolveFile({ file, key, processFile });
334
312
  const contentType = file.type || 'binary/octet-stream';
335
313
  // IMPORTANT: always pass `...rest` here for backwards compatibility
336
314
  const options = { contentType, onProgress, useAccelerateEndpoint, ...rest };
@@ -351,15 +329,11 @@ const getInput$1 = ({ accessLevel, file, key, onProcessFileSuccess, onProgress,
351
329
  const resolvedPath = `${hasCallbackPath ? path({ identityId }) : path}${processedKey}`;
352
330
  inputResult = { data: file, path: resolvedPath, options };
353
331
  }
354
- if (processFile) {
355
- // provide post-processing value of target `key`
356
- onProcessFileSuccess({ processedKey });
357
- }
358
332
  return inputResult;
359
333
  };
360
334
  };
361
335
 
362
- async function uploadFile$1({ input, onError, onStart, onComplete, }) {
336
+ async function uploadFile({ input, onError, onStart, onComplete, }) {
363
337
  const resolvedInput = await input();
364
338
  const uploadTask = storage.uploadData(resolvedInput);
365
339
  const key = resolvedInput?.key ??
@@ -381,9 +355,9 @@ async function uploadFile$1({ input, onError, onStart, onComplete, }) {
381
355
  return uploadTask;
382
356
  }
383
357
 
384
- function useUploadFiles$1({ accessLevel, files, isResumable, maxFileCount, onProcessFileSuccess, onUploadError, onUploadStart, onUploadSuccess, path, processFile, setUploadingFile, setUploadProgress, setUploadSuccess, useAccelerateEndpoint, }) {
358
+ function useUploadFiles({ accessLevel, files, isResumable, maxFileCount, onUploadError, onUploadStart, onUploadSuccess, path, processFile, setUploadingFile, setUploadProgress, setUploadSuccess, useAccelerateEndpoint, }) {
385
359
  React__namespace.useEffect(() => {
386
- const filesReadyToUpload = files.filter((file) => file.status === FileStatus$1.QUEUED);
360
+ const filesReadyToUpload = files.filter((file) => file.status === FileStatus.QUEUED);
387
361
  if (filesReadyToUpload.length > maxFileCount) {
388
362
  return;
389
363
  }
@@ -399,27 +373,24 @@ function useUploadFiles$1({ accessLevel, files, isResumable, maxFileCount, onPro
399
373
  setUploadProgress({ id, progress });
400
374
  };
401
375
  if (file) {
402
- const handleProcessFileSuccess = (input) => onProcessFileSuccess({ id, ...input });
403
- const input = getInput$1({
376
+ const input = getInput({
404
377
  accessLevel,
405
378
  file,
406
379
  key,
407
- onProcessFileSuccess: handleProcessFileSuccess,
408
380
  onProgress,
409
381
  path,
410
382
  processFile,
411
383
  useAccelerateEndpoint,
412
384
  });
413
- uploadFile$1({
385
+ uploadFile({
414
386
  input,
415
387
  onComplete: (event) => {
388
+ const resolvedKey = event.key ??
389
+ event.path;
416
390
  if (ui.isFunction(onUploadSuccess)) {
417
- onUploadSuccess({
418
- key: event.key ??
419
- event.path,
420
- });
391
+ onUploadSuccess({ key: resolvedKey });
421
392
  }
422
- setUploadSuccess({ id });
393
+ setUploadSuccess({ id, resolvedKey });
423
394
  },
424
395
  onError: ({ key, error }) => {
425
396
  if (ui.isFunction(onUploadError)) {
@@ -442,7 +413,6 @@ function useUploadFiles$1({ accessLevel, files, isResumable, maxFileCount, onPro
442
413
  setUploadProgress,
443
414
  setUploadingFile,
444
415
  onUploadError,
445
- onProcessFileSuccess,
446
416
  onUploadSuccess,
447
417
  onUploadStart,
448
418
  maxFileCount,
@@ -470,16 +440,16 @@ function DropZone$1({ children, displayText, inDropZone, onDragEnter, onDragLeav
470
440
  const FileStatusMessage$1 = ({ errorMessage, getPausedText, getUploadingText, percentage, status, uploadSuccessfulText, }) => {
471
441
  const icons = internal.useIcons('storageManager');
472
442
  switch (status) {
473
- case FileStatus$1.UPLOADING: {
443
+ case FileStatus.UPLOADING: {
474
444
  return (React__default["default"].createElement(uiReact.Text, { className: ui.ComponentClassName.FileUploaderFileStatus }, getUploadingText(percentage)));
475
445
  }
476
- case FileStatus$1.PAUSED:
446
+ case FileStatus.PAUSED:
477
447
  return (React__default["default"].createElement(uiReact.Text, { className: ui.ComponentClassName.FileUploaderFileStatus }, getPausedText(percentage)));
478
- case FileStatus$1.UPLOADED:
448
+ case FileStatus.UPLOADED:
479
449
  return (React__default["default"].createElement(uiReact.Text, { className: ui.classNames(ui.ComponentClassName.FileUploaderFileStatus, ui.classNameModifier(ui.ComponentClassName.FileUploaderFileStatus, 'success')) },
480
450
  React__default["default"].createElement(uiReact.View, { as: "span", fontSize: "xl" }, icons?.success ?? React__default["default"].createElement(internal.IconCheck, null)),
481
451
  uploadSuccessfulText));
482
- case FileStatus$1.ERROR:
452
+ case FileStatus.ERROR:
483
453
  return (React__default["default"].createElement(uiReact.Text, { className: ui.classNames(ui.ComponentClassName.FileUploaderFileStatus, ui.classNameModifier(ui.ComponentClassName.FileUploaderFileStatus, 'error')) },
484
454
  React__default["default"].createElement(uiReact.View, { as: "span", fontSize: "xl" }, icons?.error ?? React__default["default"].createElement(internal.IconError, null)),
485
455
  errorMessage));
@@ -514,9 +484,9 @@ function FileControl$1({ onPause, onResume, displayName, errorMessage, isImage,
514
484
  React__default["default"].createElement(uiReact.View, { className: ui.ComponentClassName.FileUploaderFileWrapper },
515
485
  showThumbnails ? (React__default["default"].createElement(FileThumbnail$1, { isImage: isImage, fileName: displayName, url: thumbnailUrl })) : null,
516
486
  React__default["default"].createElement(UploadDetails$1, { displayName: displayName, fileSize: size }),
517
- status === FileStatus$1.UPLOADING ? (React__default["default"].createElement(uiReact.Loader, { className: ui.ComponentClassName.FileUploaderLoader, variation: "linear", percentage: progress, isDeterminate: loaderIsDeterminate, isPercentageTextHidden: true })) : null,
487
+ status === FileStatus.UPLOADING ? (React__default["default"].createElement(uiReact.Loader, { className: ui.ComponentClassName.FileUploaderLoader, variation: "linear", percentage: progress, isDeterminate: loaderIsDeterminate, isPercentageTextHidden: true })) : null,
518
488
  isResumable &&
519
- (status === FileStatus$1.UPLOADING || status === FileStatus$1.PAUSED) ? (status === FileStatus$1.PAUSED ? (React__default["default"].createElement(uiReact.Button, { onClick: onResume, size: "small", variation: "link" }, resumeButtonText)) : (React__default["default"].createElement(uiReact.Button, { onClick: onPause, size: "small", variation: "link" }, pauseButtonText))) : null,
489
+ (status === FileStatus.UPLOADING || status === FileStatus.PAUSED) ? (status === FileStatus.PAUSED ? (React__default["default"].createElement(uiReact.Button, { onClick: onResume, size: "small", variation: "link" }, resumeButtonText)) : (React__default["default"].createElement(uiReact.Button, { onClick: onPause, size: "small", variation: "link" }, pauseButtonText))) : null,
520
490
  React__default["default"].createElement(FileRemoveButton$1, { altText: `Remove file ${displayName}`, onClick: onRemove })),
521
491
  React__default["default"].createElement(FileStatusMessage$1, { uploadSuccessfulText: uploadSuccessfulText, getUploadingText: getUploadingText, getPausedText: getPausedText, status: status, errorMessage: errorMessage, percentage: progress })));
522
492
  }
@@ -532,10 +502,10 @@ function FileList$1({ displayText, files, hasMaxFilesError, isResumable, onCance
532
502
  const { file, status, progress, error, key, isImage, id, uploadTask } = storageFile;
533
503
  const thumbnailUrl = file && isImage ? URL.createObjectURL(file) : '';
534
504
  const loaderIsDeterminate = isResumable ? progress > 0 : true;
535
- const isUploading = status === FileStatus$1.UPLOADING;
505
+ const isUploading = status === FileStatus.UPLOADING;
536
506
  const onRemove = () => {
537
507
  if (isResumable &&
538
- (status === FileStatus$1.UPLOADING || status === FileStatus$1.PAUSED) &&
508
+ (status === FileStatus.UPLOADING || status === FileStatus.PAUSED) &&
539
509
  uploadTask) {
540
510
  onCancelUpload({ id, uploadTask });
541
511
  }
@@ -579,7 +549,7 @@ function FilePicker$1({ children, className = ui.ComponentClassName.FileUploader
579
549
  return (React__default["default"].createElement(uiReact.Button, { ...props, className: className, size: size }, children));
580
550
  }
581
551
 
582
- const VERSION = '3.3.2';
552
+ const VERSION = '3.3.4';
583
553
 
584
554
  const logger$1 = ui.getLogger('Storage');
585
555
  const MISSING_REQUIRED_PROPS_MESSAGE$1 = '`FileUploader` requires a `maxFileCount` prop to be provided.';
@@ -614,13 +584,13 @@ const FileUploaderBase = React__namespace.forwardRef(function FileUploader({ acc
614
584
  };
615
585
  const { getFileSizeErrorText } = displayText;
616
586
  const getMaxFileSizeErrorMessage = (file) => {
617
- return checkMaxFileSize$1({
587
+ return checkMaxFileSize({
618
588
  file,
619
589
  maxFileSize,
620
590
  getFileSizeErrorText,
621
591
  });
622
592
  };
623
- const { addFiles, clearFiles, files, removeUpload, queueFiles, setProcessedKey, setUploadingFile, setUploadPaused, setUploadProgress, setUploadSuccess, setUploadResumed, } = useFileUploader(defaultFiles);
593
+ const { addFiles, clearFiles, files, removeUpload, queueFiles, setUploadingFile, setUploadPaused, setUploadProgress, setUploadSuccess, setUploadResumed, } = useFileUploader(defaultFiles);
624
594
  React__namespace.useImperativeHandle(ref, () => ({ clearFiles }));
625
595
  const { dragState, ...dropZoneProps } = internal.useDropZone({
626
596
  acceptedFileTypes,
@@ -630,15 +600,15 @@ const FileUploaderBase = React__namespace.forwardRef(function FileUploader({ acc
630
600
  }
631
601
  // We need to filter out files by extension here,
632
602
  // we don't get filenames on the drag event, only on drop
633
- const _acceptedFiles = filterAllowedFiles$1(acceptedFiles, acceptedFileTypes);
603
+ const _acceptedFiles = filterAllowedFiles(acceptedFiles, acceptedFileTypes);
634
604
  addFiles({
635
605
  files: _acceptedFiles,
636
- status: autoUpload ? FileStatus$1.QUEUED : FileStatus$1.ADDED,
606
+ status: autoUpload ? FileStatus.QUEUED : FileStatus.ADDED,
637
607
  getFileErrorMessage: getMaxFileSizeErrorMessage,
638
608
  });
639
609
  },
640
610
  });
641
- useUploadFiles$1({
611
+ useUploadFiles({
642
612
  accessLevel,
643
613
  files,
644
614
  isResumable,
@@ -646,7 +616,6 @@ const FileUploaderBase = React__namespace.forwardRef(function FileUploader({ acc
646
616
  onUploadError,
647
617
  onUploadSuccess,
648
618
  onUploadStart,
649
- onProcessFileSuccess: setProcessedKey,
650
619
  setUploadingFile,
651
620
  setUploadProgress,
652
621
  setUploadSuccess,
@@ -661,7 +630,7 @@ const FileUploaderBase = React__namespace.forwardRef(function FileUploader({ acc
661
630
  }
662
631
  addFiles({
663
632
  files: Array.from(files),
664
- status: autoUpload ? FileStatus$1.QUEUED : FileStatus$1.ADDED,
633
+ status: autoUpload ? FileStatus.QUEUED : FileStatus.ADDED,
665
634
  getFileErrorMessage: getMaxFileSizeErrorMessage,
666
635
  });
667
636
  };
@@ -694,8 +663,7 @@ const FileUploaderBase = React__namespace.forwardRef(function FileUploader({ acc
694
663
  if (typeof onFileRemove === 'function') {
695
664
  const file = files.find((file) => file.id === id);
696
665
  if (file) {
697
- // return `processedKey` if available and `processFile` is provided
698
- const key = (processFile && file?.processedKey) ?? file.key;
666
+ const key = file.resolvedKey ?? file.key;
699
667
  onFileRemove({ key });
700
668
  }
701
669
  }
@@ -703,10 +671,10 @@ const FileUploaderBase = React__namespace.forwardRef(function FileUploader({ acc
703
671
  // checks if all downloads completed to 100%
704
672
  const allUploadsSuccessful = files.length === 0
705
673
  ? false
706
- : files.every((file) => file?.status === FileStatus$1.UPLOADED);
674
+ : files.every((file) => file?.status === FileStatus.UPLOADED);
707
675
  // Displays if over max files
708
676
  const hasMaxFilesError = files.filter((file) => file.progress < 100).length > maxFileCount;
709
- const uploadedFilesLength = files.filter((file) => file?.status === FileStatus$1.UPLOADED).length;
677
+ const uploadedFilesLength = files.filter((file) => file?.status === FileStatus.UPLOADED).length;
710
678
  const remainingFilesCount = files.length - uploadedFilesLength;
711
679
  // number of files selected for upload when autoUpload is turned off
712
680
  const selectedFilesCount = autoUpload ? 0 : remainingFilesCount;
@@ -793,426 +761,6 @@ const StorageImage = ({ accessLevel, className, fallbackSrc, identityId, imgKey,
793
761
  return (React__namespace.createElement(uiReact.Image, { ...rest, className: ui.classNames(ui.ComponentClassName.StorageImage, className), src: url?.toString() ?? fallbackSrc }));
794
762
  };
795
763
 
796
- var FileStatus;
797
- (function (FileStatus) {
798
- FileStatus["ADDED"] = "added";
799
- FileStatus["QUEUED"] = "queued";
800
- FileStatus["UPLOADING"] = "uploading";
801
- FileStatus["PAUSED"] = "paused";
802
- FileStatus["ERROR"] = "error";
803
- FileStatus["UPLOADED"] = "uploaded";
804
- })(FileStatus || (FileStatus = {}));
805
-
806
- var StorageManagerActionTypes;
807
- (function (StorageManagerActionTypes) {
808
- StorageManagerActionTypes["ADD_FILES"] = "ADD_FILES";
809
- StorageManagerActionTypes["CLEAR_FILES"] = "CLEAR_FILES";
810
- StorageManagerActionTypes["QUEUE_FILES"] = "QUEUE_FILES";
811
- StorageManagerActionTypes["SET_STATUS"] = "SET_STATUS";
812
- StorageManagerActionTypes["SET_PROCESSED_FILE_KEY"] = "SET_PROCESSED_FILE_KEY";
813
- StorageManagerActionTypes["SET_STATUS_UPLOADING"] = "SET_STATUS_UPLOADING";
814
- StorageManagerActionTypes["SET_UPLOAD_PROGRESS"] = "SET_UPLOAD_PROGRESS";
815
- StorageManagerActionTypes["REMOVE_UPLOAD"] = "REMOVE_UPLOAD";
816
- })(StorageManagerActionTypes || (StorageManagerActionTypes = {}));
817
-
818
- const updateFiles = (files, nextFileData) => files.reduce((files, currentFile) => {
819
- if (currentFile.id === nextFileData.id) {
820
- return [...files, { ...currentFile, ...nextFileData }];
821
- }
822
- return [...files, currentFile];
823
- }, []);
824
- function storageManagerStateReducer(state, action) {
825
- switch (action.type) {
826
- case StorageManagerActionTypes.ADD_FILES: {
827
- const { files, status } = action;
828
- const newUploads = files.map((file) => {
829
- const errorText = action.getFileErrorMessage(file);
830
- return {
831
- // make sure id is unique,
832
- // we only use it internally and don't send it to Storage
833
- id: `${Date.now()}-${file.name}`,
834
- file,
835
- error: errorText,
836
- key: file.name,
837
- status: errorText ? FileStatus.ERROR : status,
838
- isImage: file.type.startsWith('image/'),
839
- progress: -1,
840
- };
841
- });
842
- const newFiles = [...state.files, ...newUploads];
843
- return { ...state, files: newFiles };
844
- }
845
- case StorageManagerActionTypes.CLEAR_FILES: {
846
- return { ...state, files: [] };
847
- }
848
- case StorageManagerActionTypes.QUEUE_FILES: {
849
- const { files } = state;
850
- const newFiles = files.reduce((files, currentFile) => {
851
- return [
852
- ...files,
853
- {
854
- ...currentFile,
855
- ...(currentFile.status === FileStatus.ADDED
856
- ? { status: FileStatus.QUEUED }
857
- : {}),
858
- },
859
- ];
860
- }, []);
861
- return {
862
- ...state,
863
- files: newFiles,
864
- };
865
- }
866
- case StorageManagerActionTypes.SET_STATUS_UPLOADING: {
867
- const { id, uploadTask } = action;
868
- const status = FileStatus.UPLOADING;
869
- const progress = 0;
870
- const nextFileData = { status, progress, id, uploadTask };
871
- const files = updateFiles(state.files, nextFileData);
872
- return { ...state, files };
873
- }
874
- case StorageManagerActionTypes.SET_PROCESSED_FILE_KEY: {
875
- const { processedKey, id } = action;
876
- const files = updateFiles(state.files, { processedKey, id });
877
- return { files };
878
- }
879
- case StorageManagerActionTypes.SET_UPLOAD_PROGRESS: {
880
- const { id, progress } = action;
881
- const files = updateFiles(state.files, { id, progress });
882
- return { ...state, files };
883
- }
884
- case StorageManagerActionTypes.SET_STATUS: {
885
- const { id, status } = action;
886
- const files = updateFiles(state.files, { id, status });
887
- return { ...state, files };
888
- }
889
- case StorageManagerActionTypes.REMOVE_UPLOAD: {
890
- const { id } = action;
891
- const { files } = state;
892
- const newFiles = files.reduce((files, currentFile) => {
893
- if (currentFile.id === id) {
894
- // remove by not returning currentFile
895
- return [...files];
896
- }
897
- return [...files, currentFile];
898
- }, []);
899
- return {
900
- ...state,
901
- files: newFiles,
902
- };
903
- }
904
- }
905
- }
906
-
907
- const addFilesAction = ({ files, status, getFileErrorMessage, }) => ({
908
- type: StorageManagerActionTypes.ADD_FILES,
909
- files,
910
- status,
911
- getFileErrorMessage,
912
- });
913
- const clearFilesAction = () => ({
914
- type: StorageManagerActionTypes.CLEAR_FILES,
915
- });
916
- const queueFilesAction = () => ({
917
- type: StorageManagerActionTypes.QUEUE_FILES,
918
- });
919
- const setProcessedKeyAction = (input) => ({
920
- ...input,
921
- type: StorageManagerActionTypes.SET_PROCESSED_FILE_KEY,
922
- });
923
- const setUploadingFileAction = ({ id, uploadTask, }) => ({
924
- type: StorageManagerActionTypes.SET_STATUS_UPLOADING,
925
- id,
926
- uploadTask,
927
- });
928
- const setUploadProgressAction = ({ id, progress, }) => ({
929
- type: StorageManagerActionTypes.SET_UPLOAD_PROGRESS,
930
- id,
931
- progress,
932
- });
933
- const setUploadStatusAction = ({ id, status, }) => ({
934
- type: StorageManagerActionTypes.SET_STATUS,
935
- id,
936
- status,
937
- });
938
- const removeUploadAction = ({ id }) => ({
939
- type: StorageManagerActionTypes.REMOVE_UPLOAD,
940
- id,
941
- });
942
-
943
- const isDefaultFile = (file) => !!(ui.isObject(file) && file.key);
944
- const createFileFromDefault = (file) => isDefaultFile(file)
945
- ? { ...file, id: file.key, status: FileStatus.UPLOADED }
946
- : undefined;
947
- function useStorageManager(defaultFiles = []) {
948
- const [{ files }, dispatch] = React__default["default"].useReducer(storageManagerStateReducer, {
949
- files: (Array.isArray(defaultFiles)
950
- ? defaultFiles.map(createFileFromDefault).filter((file) => !!file)
951
- : []),
952
- });
953
- const addFiles = ({ files, status, getFileErrorMessage, }) => {
954
- dispatch(addFilesAction({ files, status, getFileErrorMessage }));
955
- };
956
- const clearFiles = () => {
957
- dispatch(clearFilesAction());
958
- };
959
- const queueFiles = () => {
960
- dispatch(queueFilesAction());
961
- };
962
- const setUploadingFile = ({ uploadTask, id, }) => {
963
- dispatch(setUploadingFileAction({ id, uploadTask }));
964
- };
965
- const setProcessedKey = (input) => {
966
- dispatch(setProcessedKeyAction(input));
967
- };
968
- const setUploadProgress = ({ progress, id, }) => {
969
- dispatch(setUploadProgressAction({ id, progress }));
970
- };
971
- const setUploadSuccess = ({ id }) => {
972
- dispatch(setUploadStatusAction({ id, status: FileStatus.UPLOADED }));
973
- };
974
- const setUploadPaused = ({ id }) => {
975
- dispatch(setUploadStatusAction({ id, status: FileStatus.PAUSED }));
976
- };
977
- const setUploadResumed = ({ id }) => {
978
- dispatch(setUploadStatusAction({ id, status: FileStatus.UPLOADING }));
979
- };
980
- const removeUpload = ({ id }) => {
981
- dispatch(removeUploadAction({ id }));
982
- };
983
- return {
984
- removeUpload,
985
- setProcessedKey,
986
- setUploadPaused,
987
- setUploadProgress,
988
- setUploadResumed,
989
- setUploadSuccess,
990
- setUploadingFile,
991
- queueFiles,
992
- addFiles,
993
- clearFiles,
994
- files,
995
- };
996
- }
997
-
998
- const checkMaxFileSize = ({ file, getFileSizeErrorText, maxFileSize, }) => {
999
- if (maxFileSize === undefined)
1000
- return '';
1001
- if (file.size > maxFileSize) {
1002
- return getFileSizeErrorText(ui.humanFileSize(maxFileSize, true));
1003
- }
1004
- return '';
1005
- };
1006
-
1007
- const defaultStorageManagerDisplayText = {
1008
- getFilesUploadedText(count) {
1009
- return `${count} ${count === 1 ? 'file uploaded' : 'files uploaded'}`;
1010
- },
1011
- getFileSizeErrorText(sizeText) {
1012
- return `File size must be below ${sizeText}`;
1013
- },
1014
- getRemainingFilesText(count) {
1015
- return `${count} ${count === 1 ? 'file' : 'files'} uploading`;
1016
- },
1017
- getSelectedFilesText(count) {
1018
- return `${count} ${count === 1 ? 'file' : 'files'} selected`;
1019
- },
1020
- getUploadingText(percentage) {
1021
- return `Uploading${percentage > 0 ? `: ${percentage}%` : ''}`;
1022
- },
1023
- getUploadButtonText(count) {
1024
- return `Upload ${count} ${count === 1 ? 'file' : 'files'}`;
1025
- },
1026
- getMaxFilesErrorText(count) {
1027
- return `Cannot choose more than ${count} ${count === 1 ? 'file' : 'files'}. Remove files before updating`;
1028
- },
1029
- getErrorText(message) {
1030
- return message;
1031
- },
1032
- doneButtonText: 'Done',
1033
- clearAllButtonText: 'Clear all',
1034
- extensionNotAllowedText: 'Extension not allowed',
1035
- browseFilesText: 'Browse files',
1036
- dropFilesText: 'Drop files here or',
1037
- pauseButtonText: 'Pause',
1038
- resumeButtonText: 'Resume',
1039
- uploadSuccessfulText: 'Uploaded',
1040
- getPausedText(percentage) {
1041
- return `Paused: ${percentage}%`;
1042
- },
1043
- };
1044
-
1045
- const filterAllowedFiles = (files, acceptedFileTypes) => {
1046
- // Allow any files if acceptedFileTypes is undefined, empty array, or contains '*'
1047
- if (!acceptedFileTypes ||
1048
- acceptedFileTypes.length === 0 ||
1049
- acceptedFileTypes.includes('*')) {
1050
- return files;
1051
- }
1052
- // Remove any files that are not in the accepted file list
1053
- return files.filter((file) => {
1054
- const fileName = file.name || '';
1055
- const mimeType = (file.type || '').toLowerCase();
1056
- const baseMimeType = mimeType.replace(/\/.*$/, '');
1057
- return acceptedFileTypes.some((type) => {
1058
- const validType = type.trim().toLowerCase();
1059
- if (validType.charAt(0) === '.') {
1060
- return fileName.toLowerCase().endsWith(validType);
1061
- }
1062
- else if (validType.endsWith('/*')) {
1063
- // This is something like a image/* mime type
1064
- return baseMimeType === validType.replace(/\/.*$/, '');
1065
- }
1066
- return mimeType === validType;
1067
- });
1068
- });
1069
- };
1070
-
1071
- /**
1072
- * Utility function that takes the processFile prop, along with a file a key
1073
- * and returns a Promise that resolves to { file, key, ..rest }
1074
- * regardless if processFile is defined and if it is sync or async
1075
- */
1076
- const resolveFile = ({ processFile, ...input }) => {
1077
- return new Promise((resolve, reject) => {
1078
- const result = ui.isFunction(processFile) ? processFile(input) : input;
1079
- if (result instanceof Promise) {
1080
- result.then(resolve).catch(reject);
1081
- }
1082
- else {
1083
- resolve(result);
1084
- }
1085
- });
1086
- };
1087
-
1088
- const getInput = ({ accessLevel, file, key, onProcessFileSuccess, onProgress, path, processFile, useAccelerateEndpoint, }) => {
1089
- return async () => {
1090
- const hasCallbackPath = ui.isTypedFunction(path);
1091
- const hasStringPath = ui.isString(path);
1092
- const hasKeyInput = !!accessLevel && !hasCallbackPath;
1093
- const { file: data, key: processedKey, ...rest } = await resolveFile({ file, key, processFile });
1094
- const contentType = file.type || 'binary/octet-stream';
1095
- // IMPORTANT: always pass `...rest` here for backwards compatibility
1096
- const options = { contentType, onProgress, useAccelerateEndpoint, ...rest };
1097
- let inputResult;
1098
- if (hasKeyInput) {
1099
- // legacy handling of `path` is to prefix to `fileKey`
1100
- const resolvedKey = hasStringPath
1101
- ? `${path}${processedKey}`
1102
- : processedKey;
1103
- inputResult = {
1104
- data,
1105
- key: resolvedKey,
1106
- options: { ...options, accessLevel },
1107
- };
1108
- }
1109
- else {
1110
- const { identityId } = await auth.fetchAuthSession();
1111
- const resolvedPath = `${hasCallbackPath ? path({ identityId }) : path}${processedKey}`;
1112
- inputResult = { data: file, path: resolvedPath, options };
1113
- }
1114
- if (processFile) {
1115
- // provide post-processing value of target `key`
1116
- onProcessFileSuccess({ processedKey });
1117
- }
1118
- return inputResult;
1119
- };
1120
- };
1121
-
1122
- async function uploadFile({ input, onError, onStart, onComplete, }) {
1123
- const resolvedInput = await input();
1124
- const uploadTask = storage.uploadData(resolvedInput);
1125
- const key = resolvedInput?.key ??
1126
- resolvedInput?.path;
1127
- if (ui.isFunction(onStart)) {
1128
- onStart({ key, uploadTask });
1129
- }
1130
- uploadTask.result
1131
- .then((result) => {
1132
- if (ui.isFunction(onComplete) && uploadTask.state === 'SUCCESS') {
1133
- onComplete(result);
1134
- }
1135
- })
1136
- .catch((error) => {
1137
- if (ui.isFunction(onError)) {
1138
- onError({ key, error });
1139
- }
1140
- });
1141
- return uploadTask;
1142
- }
1143
-
1144
- function useUploadFiles({ accessLevel, files, isResumable, maxFileCount, onProcessFileSuccess, onUploadError, onUploadStart, onUploadSuccess, path, processFile, setUploadingFile, setUploadProgress, setUploadSuccess, useAccelerateEndpoint, }) {
1145
- React__namespace.useEffect(() => {
1146
- const filesReadyToUpload = files.filter((file) => file.status === FileStatus.QUEUED);
1147
- if (filesReadyToUpload.length > maxFileCount) {
1148
- return;
1149
- }
1150
- for (const { file, key, id } of filesReadyToUpload) {
1151
- const onProgress = (event) => {
1152
- /**
1153
- * When a file is zero bytes, the progress.total will equal zero.
1154
- * Therefore, this will prevent a divide by zero error.
1155
- */
1156
- const progress = event.totalBytes === undefined || event.totalBytes === 0
1157
- ? 100
1158
- : Math.floor((event.transferredBytes / event.totalBytes) * 100);
1159
- setUploadProgress({ id, progress });
1160
- };
1161
- if (file) {
1162
- const handleProcessFileSuccess = (input) => onProcessFileSuccess({ id, ...input });
1163
- const input = getInput({
1164
- accessLevel,
1165
- file,
1166
- key,
1167
- onProcessFileSuccess: handleProcessFileSuccess,
1168
- onProgress,
1169
- path,
1170
- processFile,
1171
- useAccelerateEndpoint,
1172
- });
1173
- uploadFile({
1174
- input,
1175
- onComplete: (event) => {
1176
- if (ui.isFunction(onUploadSuccess)) {
1177
- onUploadSuccess({
1178
- key: event.key ??
1179
- event.path,
1180
- });
1181
- }
1182
- setUploadSuccess({ id });
1183
- },
1184
- onError: ({ key, error }) => {
1185
- if (ui.isFunction(onUploadError)) {
1186
- onUploadError(error.message, { key });
1187
- }
1188
- },
1189
- onStart: ({ key, uploadTask }) => {
1190
- if (ui.isFunction(onUploadStart)) {
1191
- onUploadStart({ key });
1192
- }
1193
- setUploadingFile({ id, uploadTask });
1194
- },
1195
- });
1196
- }
1197
- }
1198
- }, [
1199
- files,
1200
- accessLevel,
1201
- isResumable,
1202
- setUploadProgress,
1203
- setUploadingFile,
1204
- onUploadError,
1205
- onProcessFileSuccess,
1206
- onUploadSuccess,
1207
- onUploadStart,
1208
- maxFileCount,
1209
- setUploadSuccess,
1210
- processFile,
1211
- path,
1212
- useAccelerateEndpoint,
1213
- ]);
1214
- }
1215
-
1216
764
  function Container({ children, className, }) {
1217
765
  return React__default["default"].createElement(uiReact.View, { className: className }, children);
1218
766
  }
@@ -1371,7 +919,7 @@ const StorageManagerBase = React__namespace.forwardRef(function StorageManager({
1371
919
  const allowMultipleFiles = maxFileCount === undefined ||
1372
920
  (typeof maxFileCount === 'number' && maxFileCount > 1);
1373
921
  const displayText = {
1374
- ...defaultStorageManagerDisplayText,
922
+ ...defaultFileUploaderDisplayText,
1375
923
  ...overrideDisplayText,
1376
924
  };
1377
925
  const { getFileSizeErrorText } = displayText;
@@ -1382,7 +930,7 @@ const StorageManagerBase = React__namespace.forwardRef(function StorageManager({
1382
930
  getFileSizeErrorText,
1383
931
  });
1384
932
  };
1385
- const { addFiles, clearFiles, files, removeUpload, queueFiles, setProcessedKey, setUploadingFile, setUploadPaused, setUploadProgress, setUploadSuccess, setUploadResumed, } = useStorageManager(defaultFiles);
933
+ const { addFiles, clearFiles, files, removeUpload, queueFiles, setUploadingFile, setUploadPaused, setUploadProgress, setUploadSuccess, setUploadResumed, } = useFileUploader(defaultFiles);
1386
934
  React__namespace.useImperativeHandle(ref, () => ({ clearFiles }));
1387
935
  const { dragState, ...dropZoneProps } = internal.useDropZone({
1388
936
  acceptedFileTypes,
@@ -1408,7 +956,6 @@ const StorageManagerBase = React__namespace.forwardRef(function StorageManager({
1408
956
  onUploadError,
1409
957
  onUploadSuccess,
1410
958
  onUploadStart,
1411
- onProcessFileSuccess: setProcessedKey,
1412
959
  setUploadingFile,
1413
960
  setUploadProgress,
1414
961
  setUploadSuccess,
@@ -1456,8 +1003,7 @@ const StorageManagerBase = React__namespace.forwardRef(function StorageManager({
1456
1003
  if (typeof onFileRemove === 'function') {
1457
1004
  const file = files.find((file) => file.id === id);
1458
1005
  if (file) {
1459
- // return `processedKey` if available and `processFile` is provided
1460
- const key = (processFile && file?.processedKey) ?? file.key;
1006
+ const key = file.resolvedKey ?? file.key;
1461
1007
  onFileRemove({ key });
1462
1008
  }
1463
1009
  }