@aws-amplify/ui-react-storage 0.0.0-studio-console-80bb2e2-20230921222703 → 0.0.0-testdelay-84839eb-20250107181059

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 (591) hide show
  1. package/browser/package.json +8 -0
  2. package/dist/browser.js +106 -0
  3. package/dist/createAmplifyAuthAdapter-va4cyg_O.js +5002 -0
  4. package/dist/esm/browser.mjs +6 -0
  5. package/dist/esm/components/FileUploader/FileUploader.mjs +182 -0
  6. package/dist/esm/components/FileUploader/hooks/useFileUploader/actions.mjs +42 -0
  7. package/dist/esm/components/FileUploader/hooks/useFileUploader/reducer.mjs +81 -0
  8. package/dist/esm/components/FileUploader/hooks/useFileUploader/types.mjs +14 -0
  9. package/dist/esm/components/FileUploader/hooks/useFileUploader/useFileUploader.mjs +49 -0
  10. package/dist/esm/components/FileUploader/hooks/useUploadFiles/useUploadFiles.mjs +75 -0
  11. package/dist/esm/components/FileUploader/types.mjs +11 -0
  12. package/dist/esm/components/FileUploader/ui/Container/Container.mjs +8 -0
  13. package/dist/esm/components/FileUploader/ui/DropZone/DropZone.mjs +16 -0
  14. package/dist/esm/components/FileUploader/ui/FileList/FileControl.mjs +23 -0
  15. package/dist/esm/components/FileUploader/ui/FileList/FileDetails.mjs +12 -0
  16. package/dist/esm/components/FileUploader/ui/FileList/FileList.mjs +44 -0
  17. package/dist/esm/components/FileUploader/ui/FileList/FileRemoveButton.mjs +12 -0
  18. package/dist/esm/components/FileUploader/ui/FileList/FileStatusMessage.mjs +28 -0
  19. package/dist/esm/components/FileUploader/ui/FileList/FileThumbnail.mjs +12 -0
  20. package/dist/esm/components/FileUploader/ui/FileListFooter/FileListFooter.mjs +13 -0
  21. package/dist/esm/components/FileUploader/ui/FileListHeader/FileListHeader.mjs +14 -0
  22. package/dist/esm/components/FileUploader/ui/FilePicker/FilePicker.mjs +9 -0
  23. package/dist/esm/components/FileUploader/utils/checkMaxFileSize.mjs +12 -0
  24. package/dist/esm/components/FileUploader/utils/displayText.mjs +39 -0
  25. package/dist/esm/components/FileUploader/utils/filterAllowedFiles.mjs +27 -0
  26. package/dist/esm/components/FileUploader/utils/getInput.mjs +35 -0
  27. package/dist/esm/components/FileUploader/utils/resolveFile.mjs +20 -0
  28. package/dist/esm/components/FileUploader/utils/uploadFile.mjs +26 -0
  29. package/dist/esm/components/StorageBrowser/ComponentsProvider.mjs +16 -0
  30. package/dist/esm/components/StorageBrowser/ErrorBoundary/ErrorBoundary.mjs +25 -0
  31. package/dist/esm/components/StorageBrowser/StorageBrowserAmplify.mjs +14 -0
  32. package/dist/esm/components/StorageBrowser/StorageBrowserDefault.mjs +29 -0
  33. package/dist/esm/components/StorageBrowser/actions/configs/context.mjs +8 -0
  34. package/dist/esm/components/StorageBrowser/actions/configs/defaults.mjs +62 -0
  35. package/dist/esm/components/StorageBrowser/actions/configs/utils.mjs +8 -0
  36. package/dist/esm/components/StorageBrowser/actions/handlers/copy.mjs +41 -0
  37. package/dist/esm/components/StorageBrowser/actions/handlers/createFolder.mjs +41 -0
  38. package/dist/esm/components/StorageBrowser/actions/handlers/delete.mjs +24 -0
  39. package/dist/esm/components/StorageBrowser/actions/handlers/download.mjs +34 -0
  40. package/dist/esm/components/StorageBrowser/actions/handlers/listLocationItems.mjs +73 -0
  41. package/dist/esm/components/StorageBrowser/actions/handlers/listLocations.mjs +32 -0
  42. package/dist/esm/components/StorageBrowser/actions/handlers/upload.mjs +58 -0
  43. package/dist/esm/components/StorageBrowser/actions/handlers/utils.mjs +89 -0
  44. package/dist/esm/components/StorageBrowser/adapters/createAmplifyAuthAdapter/createAmplifyAuthAdapter.mjs +42 -0
  45. package/dist/esm/components/StorageBrowser/adapters/createAmplifyAuthAdapter/createAmplifyListLocationsHandler.mjs +36 -0
  46. package/dist/esm/components/StorageBrowser/adapters/createAmplifyAuthAdapter/getPaginatedLocations.mjs +22 -0
  47. package/dist/esm/components/StorageBrowser/adapters/createManagedAuthAdapter/createLocationCredentialsHandler.mjs +26 -0
  48. package/dist/esm/components/StorageBrowser/adapters/createManagedAuthAdapter/createManagedAuthAdapter.mjs +38 -0
  49. package/dist/esm/components/StorageBrowser/adapters/permissionParsers.mjs +42 -0
  50. package/dist/esm/components/StorageBrowser/components/BreadcrumbNavigation.mjs +23 -0
  51. package/dist/esm/components/StorageBrowser/components/DescriptionList.mjs +16 -0
  52. package/dist/esm/components/StorageBrowser/components/DropdownMenu.mjs +31 -0
  53. package/dist/esm/components/StorageBrowser/components/Field.mjs +15 -0
  54. package/dist/esm/components/StorageBrowser/components/PaginationButton.mjs +15 -0
  55. package/dist/esm/components/StorageBrowser/components/Separator.mjs +11 -0
  56. package/dist/esm/components/StorageBrowser/components/Table.mjs +15 -0
  57. package/dist/esm/components/StorageBrowser/componentsDefault.mjs +114 -0
  58. package/dist/esm/components/StorageBrowser/composables/ActionCancel.mjs +9 -0
  59. package/dist/esm/components/StorageBrowser/composables/ActionDestination.mjs +25 -0
  60. package/dist/esm/components/StorageBrowser/composables/ActionExit.mjs +12 -0
  61. package/dist/esm/components/StorageBrowser/composables/ActionStart.mjs +9 -0
  62. package/dist/esm/components/StorageBrowser/composables/ActionsList.mjs +8 -0
  63. package/dist/esm/components/StorageBrowser/composables/AddFiles.mjs +9 -0
  64. package/dist/esm/components/StorageBrowser/composables/AddFolder.mjs +9 -0
  65. package/dist/esm/components/StorageBrowser/composables/DataRefresh.mjs +9 -0
  66. package/dist/esm/components/StorageBrowser/composables/DataTable/DataTable.mjs +77 -0
  67. package/dist/esm/components/StorageBrowser/composables/DataTable/dataCells/ButtonDataCell.mjs +25 -0
  68. package/dist/esm/components/StorageBrowser/composables/DataTable/dataCells/CheckboxDataCell.mjs +9 -0
  69. package/dist/esm/components/StorageBrowser/composables/DataTable/dataCells/DateDataCell.mjs +12 -0
  70. package/dist/esm/components/StorageBrowser/composables/DataTable/dataCells/NumberDataCell.mjs +12 -0
  71. package/dist/esm/components/StorageBrowser/composables/DataTable/dataCells/TextDataCell.mjs +14 -0
  72. package/dist/esm/components/StorageBrowser/composables/DataTable/headers/CheckboxHeader.mjs +9 -0
  73. package/dist/esm/components/StorageBrowser/composables/DataTable/headers/SortHeader.mjs +14 -0
  74. package/dist/esm/components/StorageBrowser/composables/DataTable/headers/TextHeader.mjs +12 -0
  75. package/dist/esm/components/StorageBrowser/composables/DropZone.mjs +17 -0
  76. package/dist/esm/components/StorageBrowser/composables/FolderNameField.mjs +16 -0
  77. package/dist/esm/components/StorageBrowser/composables/LoadingIndicator.mjs +13 -0
  78. package/dist/esm/components/StorageBrowser/composables/Message.mjs +30 -0
  79. package/dist/esm/components/StorageBrowser/composables/Navigation.mjs +11 -0
  80. package/dist/esm/components/StorageBrowser/composables/OverwriteToggle.mjs +12 -0
  81. package/dist/esm/components/StorageBrowser/composables/Pagination.mjs +28 -0
  82. package/dist/esm/components/StorageBrowser/composables/SearchField.mjs +22 -0
  83. package/dist/esm/components/StorageBrowser/composables/SearchSubfoldersToggle.mjs +12 -0
  84. package/dist/esm/components/StorageBrowser/composables/StatusDisplay.mjs +16 -0
  85. package/dist/esm/components/StorageBrowser/composables/Title.mjs +9 -0
  86. package/dist/esm/components/StorageBrowser/composables/context.mjs +9 -0
  87. package/dist/esm/components/StorageBrowser/composables/defaults.mjs +45 -0
  88. package/dist/esm/components/StorageBrowser/constants.mjs +4 -0
  89. package/dist/esm/components/StorageBrowser/context/elements/IconElement.mjs +40 -0
  90. package/dist/esm/components/StorageBrowser/context/elements/defaults.mjs +120 -0
  91. package/dist/esm/components/StorageBrowser/context/elements/definitions.mjs +86 -0
  92. package/dist/esm/components/StorageBrowser/controls/ActionCancelControl.mjs +12 -0
  93. package/dist/esm/components/StorageBrowser/controls/ActionDestinationControl.mjs +12 -0
  94. package/dist/esm/components/StorageBrowser/controls/ActionExitControl.mjs +12 -0
  95. package/dist/esm/components/StorageBrowser/controls/ActionStartControl.mjs +12 -0
  96. package/dist/esm/components/StorageBrowser/controls/ActionsListControl.mjs +12 -0
  97. package/dist/esm/components/StorageBrowser/controls/AddFilesControl.mjs +12 -0
  98. package/dist/esm/components/StorageBrowser/controls/AddFolderControl.mjs +12 -0
  99. package/dist/esm/components/StorageBrowser/controls/DataRefreshControl.mjs +12 -0
  100. package/dist/esm/components/StorageBrowser/controls/DataTableControl.mjs +12 -0
  101. package/dist/esm/components/StorageBrowser/controls/DropZoneControl.mjs +12 -0
  102. package/dist/esm/components/StorageBrowser/controls/FolderNameFieldControl.mjs +12 -0
  103. package/dist/esm/components/StorageBrowser/controls/LoadingIndicatorControl.mjs +12 -0
  104. package/dist/esm/components/StorageBrowser/controls/MessageControl.mjs +12 -0
  105. package/dist/esm/components/StorageBrowser/controls/NavigationControl.mjs +12 -0
  106. package/dist/esm/components/StorageBrowser/controls/OverwriteToggleControl.mjs +12 -0
  107. package/dist/esm/components/StorageBrowser/controls/PaginationControl.mjs +12 -0
  108. package/dist/esm/components/StorageBrowser/controls/SearchFieldControl.mjs +12 -0
  109. package/dist/esm/components/StorageBrowser/controls/SearchSubfoldersToggleControl.mjs +12 -0
  110. package/dist/esm/components/StorageBrowser/controls/StatusDisplayControl.mjs +12 -0
  111. package/dist/esm/components/StorageBrowser/controls/TitleControl.mjs +12 -0
  112. package/dist/esm/components/StorageBrowser/controls/context.mjs +9 -0
  113. package/dist/esm/components/StorageBrowser/controls/hooks/compareFunctions/compareButtonData.mjs +11 -0
  114. package/dist/esm/components/StorageBrowser/controls/hooks/compareFunctions/compareDateData.mjs +11 -0
  115. package/dist/esm/components/StorageBrowser/controls/hooks/compareFunctions/compareNumberData.mjs +11 -0
  116. package/dist/esm/components/StorageBrowser/controls/hooks/compareFunctions/compareTextData.mjs +11 -0
  117. package/dist/esm/components/StorageBrowser/controls/hooks/getNavigationItems.mjs +27 -0
  118. package/dist/esm/components/StorageBrowser/controls/hooks/getNavigationParts.mjs +25 -0
  119. package/dist/esm/components/StorageBrowser/controls/hooks/useActionCancel.mjs +12 -0
  120. package/dist/esm/components/StorageBrowser/controls/hooks/useActionDestination.mjs +36 -0
  121. package/dist/esm/components/StorageBrowser/controls/hooks/useActionExit.mjs +8 -0
  122. package/dist/esm/components/StorageBrowser/controls/hooks/useActionStart.mjs +12 -0
  123. package/dist/esm/components/StorageBrowser/controls/hooks/useActionsList.mjs +12 -0
  124. package/dist/esm/components/StorageBrowser/controls/hooks/useAddFiles.mjs +12 -0
  125. package/dist/esm/components/StorageBrowser/controls/hooks/useAddFolder.mjs +12 -0
  126. package/dist/esm/components/StorageBrowser/controls/hooks/useDataRefresh.mjs +8 -0
  127. package/dist/esm/components/StorageBrowser/controls/hooks/useDataTable.mjs +106 -0
  128. package/dist/esm/components/StorageBrowser/controls/hooks/useDropZone.mjs +12 -0
  129. package/dist/esm/components/StorageBrowser/controls/hooks/useFolderNameField.mjs +17 -0
  130. package/dist/esm/components/StorageBrowser/controls/hooks/useLoadingIndicator.mjs +8 -0
  131. package/dist/esm/components/StorageBrowser/controls/hooks/useMessage.mjs +8 -0
  132. package/dist/esm/components/StorageBrowser/controls/hooks/useNavigation.mjs +28 -0
  133. package/dist/esm/components/StorageBrowser/controls/hooks/useOverwriteToggle.mjs +13 -0
  134. package/dist/esm/components/StorageBrowser/controls/hooks/usePagination.mjs +9 -0
  135. package/dist/esm/components/StorageBrowser/controls/hooks/useResolvedComposable.mjs +17 -0
  136. package/dist/esm/components/StorageBrowser/controls/hooks/useSearchField.mjs +17 -0
  137. package/dist/esm/components/StorageBrowser/controls/hooks/useSearchSubfoldersToggle.mjs +12 -0
  138. package/dist/esm/components/StorageBrowser/controls/hooks/useStatusDisplay.mjs +18 -0
  139. package/dist/esm/components/StorageBrowser/controls/hooks/useTitle.mjs +10 -0
  140. package/dist/esm/components/StorageBrowser/createStorageBrowser.mjs +105 -0
  141. package/dist/esm/components/StorageBrowser/credentials/store/constants.mjs +4 -0
  142. package/dist/esm/components/StorageBrowser/credentials/store/create.mjs +30 -0
  143. package/dist/esm/components/StorageBrowser/credentials/store/registry.mjs +40 -0
  144. package/dist/esm/components/StorageBrowser/credentials/store/store.mjs +93 -0
  145. package/dist/esm/components/StorageBrowser/displayText/context.mjs +44 -0
  146. package/dist/esm/components/StorageBrowser/displayText/libraries/en/copyView.mjs +54 -0
  147. package/dist/esm/components/StorageBrowser/displayText/libraries/en/createFolderView.mjs +29 -0
  148. package/dist/esm/components/StorageBrowser/displayText/libraries/en/default.mjs +17 -0
  149. package/dist/esm/components/StorageBrowser/displayText/libraries/en/deleteView.mjs +23 -0
  150. package/dist/esm/components/StorageBrowser/displayText/libraries/en/locationDetailView.mjs +67 -0
  151. package/dist/esm/components/StorageBrowser/displayText/libraries/en/locationsView.mjs +54 -0
  152. package/dist/esm/components/StorageBrowser/displayText/libraries/en/shared.mjs +34 -0
  153. package/dist/esm/components/StorageBrowser/displayText/libraries/en/uploadView.mjs +87 -0
  154. package/dist/esm/components/StorageBrowser/providers/configuration/context.mjs +19 -0
  155. package/dist/esm/components/StorageBrowser/providers/configuration/createConfigurationProvider.mjs +17 -0
  156. package/dist/esm/components/StorageBrowser/providers/configuration/credentials/context.mjs +16 -0
  157. package/dist/esm/components/StorageBrowser/providers/configuration/credentials/useCredentialsStore.mjs +37 -0
  158. package/dist/esm/components/StorageBrowser/providers/configuration/useGetActionInputCallback.mjs +41 -0
  159. package/dist/esm/components/StorageBrowser/providers/store/StoreProvider.mjs +15 -0
  160. package/dist/esm/components/StorageBrowser/providers/store/actionType/context.mjs +16 -0
  161. package/dist/esm/components/StorageBrowser/providers/store/actionType/useActionTypeState.mjs +19 -0
  162. package/dist/esm/components/StorageBrowser/providers/store/files/context.mjs +31 -0
  163. package/dist/esm/components/StorageBrowser/providers/store/files/utils.mjs +52 -0
  164. package/dist/esm/components/StorageBrowser/providers/store/location/context.mjs +49 -0
  165. package/dist/esm/components/StorageBrowser/providers/store/locationItems/context.mjs +52 -0
  166. package/dist/esm/components/StorageBrowser/providers/store/useStore.mjs +47 -0
  167. package/dist/esm/components/StorageBrowser/tasks/constants.mjs +11 -0
  168. package/dist/esm/components/StorageBrowser/tasks/useProcessTasks.mjs +171 -0
  169. package/dist/esm/components/StorageBrowser/tasks/utils.mjs +16 -0
  170. package/dist/esm/components/StorageBrowser/useAction/constants.mjs +4 -0
  171. package/dist/esm/components/StorageBrowser/useAction/context.mjs +8 -0
  172. package/dist/esm/components/StorageBrowser/useAction/createEnhancedListHandler.mjs +123 -0
  173. package/dist/esm/components/StorageBrowser/useAction/useAction.mjs +18 -0
  174. package/dist/esm/components/StorageBrowser/useAction/useHandler.mjs +40 -0
  175. package/dist/esm/components/StorageBrowser/useAction/useList.mjs +19 -0
  176. package/dist/esm/components/StorageBrowser/useAction/useListFolderItems.mjs +23 -0
  177. package/dist/esm/components/StorageBrowser/useAction/useListLocationItems.mjs +23 -0
  178. package/dist/esm/components/StorageBrowser/useAction/useListLocations.mjs +19 -0
  179. package/dist/esm/components/StorageBrowser/useAction/utils.mjs +26 -0
  180. package/dist/esm/components/StorageBrowser/validators/assertAccountId.mjs +7 -0
  181. package/dist/esm/components/StorageBrowser/validators/assertLocationData.mjs +24 -0
  182. package/dist/esm/components/StorageBrowser/validators/assertRegisterAuthListener.mjs +9 -0
  183. package/dist/esm/components/StorageBrowser/validators/isFileTooBig.mjs +4 -0
  184. package/dist/esm/components/StorageBrowser/views/LocationActionView/CopyView/CopyView.mjs +66 -0
  185. package/dist/esm/components/StorageBrowser/views/LocationActionView/CopyView/CopyViewProvider.mjs +59 -0
  186. package/dist/esm/components/StorageBrowser/views/LocationActionView/CopyView/FoldersMessageControl.mjs +30 -0
  187. package/dist/esm/components/StorageBrowser/views/LocationActionView/CopyView/FoldersPaginationControl.mjs +15 -0
  188. package/dist/esm/components/StorageBrowser/views/LocationActionView/CopyView/FoldersTableControl.mjs +23 -0
  189. package/dist/esm/components/StorageBrowser/views/LocationActionView/CopyView/getDestinationPickerTableData.mjs +35 -0
  190. package/dist/esm/components/StorageBrowser/views/LocationActionView/CopyView/useCopyView.mjs +94 -0
  191. package/dist/esm/components/StorageBrowser/views/LocationActionView/CopyView/useFolders.mjs +97 -0
  192. package/dist/esm/components/StorageBrowser/views/LocationActionView/CreateFolderView/CreateFolderView.mjs +36 -0
  193. package/dist/esm/components/StorageBrowser/views/LocationActionView/CreateFolderView/CreateFolderViewProvider.mjs +35 -0
  194. package/dist/esm/components/StorageBrowser/views/LocationActionView/CreateFolderView/useCreateFolderView.mjs +56 -0
  195. package/dist/esm/components/StorageBrowser/views/LocationActionView/CreateFolderView/utils.mjs +6 -0
  196. package/dist/esm/components/StorageBrowser/views/LocationActionView/DeleteView/DeleteView.mjs +44 -0
  197. package/dist/esm/components/StorageBrowser/views/LocationActionView/DeleteView/DeleteViewProvider.mjs +39 -0
  198. package/dist/esm/components/StorageBrowser/views/LocationActionView/DeleteView/useDeleteView.mjs +67 -0
  199. package/dist/esm/components/StorageBrowser/views/LocationActionView/LocationActionView.mjs +21 -0
  200. package/dist/esm/components/StorageBrowser/views/LocationActionView/UploadView/UploadView.mjs +61 -0
  201. package/dist/esm/components/StorageBrowser/views/LocationActionView/UploadView/UploadViewProvider.mjs +62 -0
  202. package/dist/esm/components/StorageBrowser/views/LocationActionView/UploadView/constants.mjs +3 -0
  203. package/dist/esm/components/StorageBrowser/views/LocationActionView/UploadView/useUploadView.mjs +96 -0
  204. package/dist/esm/components/StorageBrowser/views/LocationActionView/getActionIcon.mjs +25 -0
  205. package/dist/esm/components/StorageBrowser/views/LocationActionView/getActionViewTableData.mjs +155 -0
  206. package/dist/esm/components/StorageBrowser/views/LocationActionView/getDefaultActionViewHeaders.mjs +24 -0
  207. package/dist/esm/components/StorageBrowser/views/LocationActionView/getFileTypeDisplayValue.mjs +5 -0
  208. package/dist/esm/components/StorageBrowser/views/LocationActionView/getPercentValue.mjs +3 -0
  209. package/dist/esm/components/StorageBrowser/views/LocationDetailView/LocationDetailView.mjs +56 -0
  210. package/dist/esm/components/StorageBrowser/views/LocationDetailView/LocationDetailViewProvider.mjs +64 -0
  211. package/dist/esm/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/constants.mjs +10 -0
  212. package/dist/esm/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/getFileRowContent.mjs +76 -0
  213. package/dist/esm/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/getFolderRowContent.mjs +32 -0
  214. package/dist/esm/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/getLocationDetailViewTableData.mjs +78 -0
  215. package/dist/esm/components/StorageBrowser/views/LocationDetailView/useLocationDetailView.mjs +199 -0
  216. package/dist/esm/components/StorageBrowser/views/LocationsView/LocationsView.mjs +44 -0
  217. package/dist/esm/components/StorageBrowser/views/LocationsView/LocationsViewProvider.mjs +42 -0
  218. package/dist/esm/components/StorageBrowser/views/LocationsView/getLocationsViewTableData/getHeaders.mjs +29 -0
  219. package/dist/esm/components/StorageBrowser/views/LocationsView/getLocationsViewTableData/getLocationsViewTableData.mjs +76 -0
  220. package/dist/esm/components/StorageBrowser/views/LocationsView/useLocationsView.mjs +115 -0
  221. package/dist/esm/components/StorageBrowser/views/context/actionViews.mjs +33 -0
  222. package/dist/esm/components/StorageBrowser/views/context/getViews.mjs +32 -0
  223. package/dist/esm/components/StorageBrowser/views/context/primaryViews.mjs +32 -0
  224. package/dist/esm/components/StorageBrowser/views/context/views.mjs +19 -0
  225. package/dist/esm/components/StorageBrowser/views/hooks/usePaginate.mjs +40 -0
  226. package/dist/esm/components/StorageBrowser/views/hooks/useSearch.mjs +27 -0
  227. package/dist/esm/components/StorageBrowser/views/useView.mjs +38 -0
  228. package/dist/esm/components/StorageImage/StorageImage.mjs +57 -1
  229. package/dist/esm/components/StorageManager/StorageManager.mjs +186 -1
  230. package/dist/esm/components/StorageManager/ui/Container/Container.mjs +8 -1
  231. package/dist/esm/components/StorageManager/ui/DropZone/DropZone.mjs +16 -1
  232. package/dist/esm/components/StorageManager/ui/FileList/FileControl.mjs +23 -1
  233. package/dist/esm/components/StorageManager/ui/FileList/FileDetails.mjs +12 -1
  234. package/dist/esm/components/StorageManager/ui/FileList/FileList.mjs +44 -1
  235. package/dist/esm/components/StorageManager/ui/FileList/FileRemoveButton.mjs +12 -1
  236. package/dist/esm/components/StorageManager/ui/FileList/FileStatusMessage.mjs +28 -1
  237. package/dist/esm/components/StorageManager/ui/FileList/FileThumbnail.mjs +12 -1
  238. package/dist/esm/components/StorageManager/ui/FileListFooter/FileListFooter.mjs +13 -1
  239. package/dist/esm/components/StorageManager/ui/FileListHeader/FileListHeader.mjs +14 -1
  240. package/dist/esm/components/StorageManager/ui/FilePicker/FilePicker.mjs +9 -1
  241. package/dist/esm/index.mjs +4 -1
  242. package/dist/esm/version.mjs +3 -0
  243. package/dist/index.js +1063 -1
  244. package/dist/storage-browser-styles.css +482 -0
  245. package/dist/storage-browser-styles.js +2 -0
  246. package/dist/styles.css +1156 -371
  247. package/dist/types/components/FileUploader/FileUploader.d.ts +15 -0
  248. package/dist/types/components/FileUploader/hooks/index.d.ts +2 -0
  249. package/dist/types/components/{StorageManager/hooks/useStorageManager → FileUploader/hooks/useFileUploader}/actions.d.ts +6 -5
  250. package/dist/types/components/FileUploader/hooks/useFileUploader/index.d.ts +1 -0
  251. package/dist/types/components/FileUploader/hooks/useFileUploader/reducer.d.ts +2 -0
  252. package/dist/types/components/FileUploader/hooks/useFileUploader/types.d.ts +52 -0
  253. package/dist/types/components/{StorageManager/hooks/useStorageManager/useStorageManager.d.ts → FileUploader/hooks/useFileUploader/useFileUploader.d.ts} +11 -13
  254. package/dist/types/components/FileUploader/hooks/useUploadFiles/useUploadFiles.d.ts +8 -0
  255. package/dist/types/components/FileUploader/index.d.ts +3 -0
  256. package/dist/types/components/FileUploader/types.d.ts +129 -0
  257. package/dist/types/components/FileUploader/ui/Container/Container.d.ts +6 -0
  258. package/dist/types/components/FileUploader/ui/Container/index.d.ts +1 -0
  259. package/dist/types/components/FileUploader/ui/DropZone/DropZone.d.ts +3 -0
  260. package/dist/types/components/FileUploader/ui/DropZone/index.d.ts +2 -0
  261. package/dist/types/components/FileUploader/ui/DropZone/types.d.ts +13 -0
  262. package/dist/types/components/FileUploader/ui/FileList/FileControl.d.ts +3 -0
  263. package/dist/types/components/FileUploader/ui/FileList/FileDetails.d.ts +3 -0
  264. package/dist/types/components/FileUploader/ui/FileList/FileList.d.ts +3 -0
  265. package/dist/types/components/FileUploader/ui/FileList/FileRemoveButton.d.ts +3 -0
  266. package/dist/types/components/FileUploader/ui/FileList/FileStatusMessage.d.ts +3 -0
  267. package/dist/types/components/FileUploader/ui/FileList/FileThumbnail.d.ts +3 -0
  268. package/dist/types/components/FileUploader/ui/FileList/index.d.ts +2 -0
  269. package/dist/types/components/FileUploader/ui/FileList/types.d.ts +51 -0
  270. package/dist/types/components/FileUploader/ui/FileListFooter/FileListFooter.d.ts +9 -0
  271. package/dist/types/components/FileUploader/ui/FileListFooter/index.d.ts +1 -0
  272. package/dist/types/components/FileUploader/ui/FileListHeader/FileListHeader.d.ts +10 -0
  273. package/dist/types/components/FileUploader/ui/FileListHeader/index.d.ts +1 -0
  274. package/dist/types/components/FileUploader/ui/FilePicker/FilePicker.d.ts +4 -0
  275. package/dist/types/components/FileUploader/ui/FilePicker/index.d.ts +1 -0
  276. package/dist/types/components/FileUploader/ui/index.d.ts +6 -0
  277. package/dist/types/components/FileUploader/utils/displayText.d.ts +22 -0
  278. package/dist/types/components/FileUploader/utils/getInput.d.ts +13 -0
  279. package/dist/types/components/FileUploader/utils/index.d.ts +5 -0
  280. package/dist/types/components/FileUploader/utils/resolveFile.d.ts +9 -0
  281. package/dist/types/components/FileUploader/utils/uploadFile.d.ts +32 -0
  282. package/dist/types/components/StorageBrowser/ComponentsProvider.d.ts +11 -0
  283. package/dist/types/components/StorageBrowser/ErrorBoundary/ErrorBoundary.d.ts +13 -0
  284. package/dist/types/components/StorageBrowser/ErrorBoundary/index.d.ts +1 -0
  285. package/dist/types/components/StorageBrowser/StorageBrowserAmplify.d.ts +5 -0
  286. package/dist/types/components/StorageBrowser/StorageBrowserDefault.d.ts +8 -0
  287. package/dist/types/components/StorageBrowser/actions/__testUtils__/permissions.d.ts +3 -0
  288. package/dist/types/components/StorageBrowser/actions/configs/context.d.ts +13 -0
  289. package/dist/types/components/StorageBrowser/actions/configs/defaults.d.ts +23 -0
  290. package/dist/types/components/StorageBrowser/actions/configs/index.d.ts +4 -0
  291. package/dist/types/components/StorageBrowser/actions/configs/types.d.ts +81 -0
  292. package/dist/types/components/StorageBrowser/actions/configs/utils.d.ts +2 -0
  293. package/dist/types/components/StorageBrowser/actions/handlers/copy.d.ts +18 -0
  294. package/dist/types/components/StorageBrowser/actions/handlers/createFolder.d.ts +17 -0
  295. package/dist/types/components/StorageBrowser/actions/handlers/delete.d.ts +15 -0
  296. package/dist/types/components/StorageBrowser/actions/handlers/download.d.ts +15 -0
  297. package/dist/types/components/StorageBrowser/actions/handlers/index.d.ts +9 -0
  298. package/dist/types/components/StorageBrowser/actions/handlers/listLocationItems.d.ts +16 -0
  299. package/dist/types/components/StorageBrowser/actions/handlers/listLocations.d.ts +31 -0
  300. package/dist/types/components/StorageBrowser/actions/handlers/types.d.ts +111 -0
  301. package/dist/types/components/StorageBrowser/actions/handlers/upload.d.ts +25 -0
  302. package/dist/types/components/StorageBrowser/actions/handlers/utils.d.ts +16 -0
  303. package/dist/types/components/StorageBrowser/actions/index.d.ts +2 -0
  304. package/dist/types/components/StorageBrowser/adapters/createAmplifyAuthAdapter/createAmplifyAuthAdapter.d.ts +5 -0
  305. package/dist/types/components/StorageBrowser/adapters/createAmplifyAuthAdapter/createAmplifyListLocationsHandler.d.ts +2 -0
  306. package/dist/types/components/StorageBrowser/adapters/createAmplifyAuthAdapter/getPaginatedLocations.d.ts +6 -0
  307. package/dist/types/components/StorageBrowser/adapters/createAmplifyAuthAdapter/index.d.ts +1 -0
  308. package/dist/types/components/StorageBrowser/adapters/createManagedAuthAdapter/createLocationCredentialsHandler.d.ts +10 -0
  309. package/dist/types/components/StorageBrowser/adapters/createManagedAuthAdapter/createManagedAuthAdapter.d.ts +9 -0
  310. package/dist/types/components/StorageBrowser/adapters/createManagedAuthAdapter/index.d.ts +1 -0
  311. package/dist/types/components/StorageBrowser/adapters/index.d.ts +3 -0
  312. package/dist/types/components/StorageBrowser/adapters/permissionParsers.d.ts +5 -0
  313. package/dist/types/components/StorageBrowser/adapters/types.d.ts +27 -0
  314. package/dist/types/components/StorageBrowser/components/BreadcrumbNavigation.d.ts +13 -0
  315. package/dist/types/components/StorageBrowser/components/Checkbox.d.ts +11 -0
  316. package/dist/types/components/StorageBrowser/components/DescriptionList.d.ts +11 -0
  317. package/dist/types/components/StorageBrowser/components/DropdownMenu.d.ts +20 -0
  318. package/dist/types/components/StorageBrowser/components/EmptyMessage.d.ts +6 -0
  319. package/dist/types/components/StorageBrowser/components/Field.d.ts +9 -0
  320. package/dist/types/components/StorageBrowser/components/PaginationButton.d.ts +10 -0
  321. package/dist/types/components/StorageBrowser/components/Separator.d.ts +2 -0
  322. package/dist/types/components/StorageBrowser/components/Table.d.ts +15 -0
  323. package/dist/types/components/StorageBrowser/components/types.d.ts +8 -0
  324. package/dist/types/components/StorageBrowser/componentsDefault.d.ts +2 -0
  325. package/dist/types/components/StorageBrowser/composables/ActionCancel.d.ts +7 -0
  326. package/dist/types/components/StorageBrowser/composables/ActionDestination.d.ts +8 -0
  327. package/dist/types/components/StorageBrowser/composables/ActionExit.d.ts +7 -0
  328. package/dist/types/components/StorageBrowser/composables/ActionStart.d.ts +7 -0
  329. package/dist/types/components/StorageBrowser/composables/ActionsList.d.ts +15 -0
  330. package/dist/types/components/StorageBrowser/composables/AddFiles.d.ts +7 -0
  331. package/dist/types/components/StorageBrowser/composables/AddFolder.d.ts +7 -0
  332. package/dist/types/components/StorageBrowser/composables/DataRefresh.d.ts +6 -0
  333. package/dist/types/components/StorageBrowser/composables/DataTable/DataTable.d.ts +11 -0
  334. package/dist/types/components/StorageBrowser/composables/DataTable/dataCells/ButtonDataCell.d.ts +12 -0
  335. package/dist/types/components/StorageBrowser/composables/DataTable/dataCells/CheckboxDataCell.d.ts +10 -0
  336. package/dist/types/components/StorageBrowser/composables/DataTable/dataCells/DateDataCell.d.ts +8 -0
  337. package/dist/types/components/StorageBrowser/composables/DataTable/dataCells/NumberDataCell.d.ts +8 -0
  338. package/dist/types/components/StorageBrowser/composables/DataTable/dataCells/TextDataCell.d.ts +9 -0
  339. package/dist/types/components/StorageBrowser/composables/DataTable/headers/CheckboxHeader.d.ts +10 -0
  340. package/dist/types/components/StorageBrowser/composables/DataTable/headers/SortHeader.d.ts +10 -0
  341. package/dist/types/components/StorageBrowser/composables/DataTable/headers/TextHeader.d.ts +7 -0
  342. package/dist/types/components/StorageBrowser/composables/DataTable/index.d.ts +2 -0
  343. package/dist/types/components/StorageBrowser/composables/DataTable/types.d.ts +35 -0
  344. package/dist/types/components/StorageBrowser/composables/DropZone.d.ts +6 -0
  345. package/dist/types/components/StorageBrowser/composables/FolderNameField.d.ts +11 -0
  346. package/dist/types/components/StorageBrowser/composables/LoadingIndicator.d.ts +6 -0
  347. package/dist/types/components/StorageBrowser/composables/Message.d.ts +10 -0
  348. package/dist/types/components/StorageBrowser/composables/Navigation.d.ts +11 -0
  349. package/dist/types/components/StorageBrowser/composables/OverwriteToggle.d.ts +8 -0
  350. package/dist/types/components/StorageBrowser/composables/Pagination.d.ts +8 -0
  351. package/dist/types/components/StorageBrowser/composables/SearchField.d.ts +13 -0
  352. package/dist/types/components/StorageBrowser/composables/SearchSubfoldersToggle.d.ts +7 -0
  353. package/dist/types/components/StorageBrowser/composables/StatusDisplay.d.ts +11 -0
  354. package/dist/types/components/StorageBrowser/composables/Title.d.ts +5 -0
  355. package/dist/types/components/StorageBrowser/composables/context.d.ts +5 -0
  356. package/dist/types/components/StorageBrowser/composables/defaults.d.ts +2 -0
  357. package/dist/types/components/StorageBrowser/composables/index.d.ts +3 -0
  358. package/dist/types/components/StorageBrowser/composables/types.d.ts +46 -0
  359. package/dist/types/components/StorageBrowser/constants.d.ts +2 -0
  360. package/dist/types/components/StorageBrowser/context/elements/IconElement.d.ts +7 -0
  361. package/dist/types/components/StorageBrowser/context/elements/defaults.d.ts +34 -0
  362. package/dist/types/components/StorageBrowser/context/elements/definitions.d.ts +94 -0
  363. package/dist/types/components/StorageBrowser/context/elements/index.d.ts +3 -0
  364. package/dist/types/components/StorageBrowser/controls/ActionCancelControl.d.ts +2 -0
  365. package/dist/types/components/StorageBrowser/controls/ActionDestinationControl.d.ts +2 -0
  366. package/dist/types/components/StorageBrowser/controls/ActionExitControl.d.ts +2 -0
  367. package/dist/types/components/StorageBrowser/controls/ActionStartControl.d.ts +2 -0
  368. package/dist/types/components/StorageBrowser/controls/ActionsListControl.d.ts +2 -0
  369. package/dist/types/components/StorageBrowser/controls/AddFilesControl.d.ts +2 -0
  370. package/dist/types/components/StorageBrowser/controls/AddFolderControl.d.ts +2 -0
  371. package/dist/types/components/StorageBrowser/controls/DataRefreshControl.d.ts +2 -0
  372. package/dist/types/components/StorageBrowser/controls/DataTableControl.d.ts +2 -0
  373. package/dist/types/components/StorageBrowser/controls/DropZoneControl.d.ts +4 -0
  374. package/dist/types/components/StorageBrowser/controls/FolderNameFieldControl.d.ts +2 -0
  375. package/dist/types/components/StorageBrowser/controls/LoadingIndicatorControl.d.ts +2 -0
  376. package/dist/types/components/StorageBrowser/controls/MessageControl.d.ts +2 -0
  377. package/dist/types/components/StorageBrowser/controls/NavigationControl.d.ts +2 -0
  378. package/dist/types/components/StorageBrowser/controls/OverwriteToggleControl.d.ts +2 -0
  379. package/dist/types/components/StorageBrowser/controls/PaginationControl.d.ts +2 -0
  380. package/dist/types/components/StorageBrowser/controls/SearchFieldControl.d.ts +2 -0
  381. package/dist/types/components/StorageBrowser/controls/SearchSubfoldersToggleControl.d.ts +2 -0
  382. package/dist/types/components/StorageBrowser/controls/StatusDisplayControl.d.ts +2 -0
  383. package/dist/types/components/StorageBrowser/controls/TitleControl.d.ts +2 -0
  384. package/dist/types/components/StorageBrowser/controls/context.d.ts +5 -0
  385. package/dist/types/components/StorageBrowser/controls/hooks/compareFunctions/compareButtonData.d.ts +2 -0
  386. package/dist/types/components/StorageBrowser/controls/hooks/compareFunctions/compareDateData.d.ts +3 -0
  387. package/dist/types/components/StorageBrowser/controls/hooks/compareFunctions/compareNumberData.d.ts +3 -0
  388. package/dist/types/components/StorageBrowser/controls/hooks/compareFunctions/compareTextData.d.ts +3 -0
  389. package/dist/types/components/StorageBrowser/controls/hooks/getNavigationItems.d.ts +9 -0
  390. package/dist/types/components/StorageBrowser/controls/hooks/getNavigationParts.d.ts +8 -0
  391. package/dist/types/components/StorageBrowser/controls/hooks/useActionCancel.d.ts +2 -0
  392. package/dist/types/components/StorageBrowser/controls/hooks/useActionDestination.d.ts +2 -0
  393. package/dist/types/components/StorageBrowser/controls/hooks/useActionExit.d.ts +2 -0
  394. package/dist/types/components/StorageBrowser/controls/hooks/useActionStart.d.ts +2 -0
  395. package/dist/types/components/StorageBrowser/controls/hooks/useActionsList.d.ts +2 -0
  396. package/dist/types/components/StorageBrowser/controls/hooks/useAddFiles.d.ts +2 -0
  397. package/dist/types/components/StorageBrowser/controls/hooks/useAddFolder.d.ts +2 -0
  398. package/dist/types/components/StorageBrowser/controls/hooks/useDataRefresh.d.ts +2 -0
  399. package/dist/types/components/StorageBrowser/controls/hooks/useDataTable.d.ts +2 -0
  400. package/dist/types/components/StorageBrowser/controls/hooks/useDropZone.d.ts +6 -0
  401. package/dist/types/components/StorageBrowser/controls/hooks/useFolderNameField.d.ts +2 -0
  402. package/dist/types/components/StorageBrowser/controls/hooks/useLoadingIndicator.d.ts +2 -0
  403. package/dist/types/components/StorageBrowser/controls/hooks/useMessage.d.ts +2 -0
  404. package/dist/types/components/StorageBrowser/controls/hooks/useNavigation.d.ts +2 -0
  405. package/dist/types/components/StorageBrowser/controls/hooks/useOverwriteToggle.d.ts +2 -0
  406. package/dist/types/components/StorageBrowser/controls/hooks/usePagination.d.ts +2 -0
  407. package/dist/types/components/StorageBrowser/controls/hooks/useResolvedComposable.d.ts +3 -0
  408. package/dist/types/components/StorageBrowser/controls/hooks/useSearchField.d.ts +2 -0
  409. package/dist/types/components/StorageBrowser/controls/hooks/useSearchSubfoldersToggle.d.ts +2 -0
  410. package/dist/types/components/StorageBrowser/controls/hooks/useStatusDisplay.d.ts +2 -0
  411. package/dist/types/components/StorageBrowser/controls/hooks/useTitle.d.ts +2 -0
  412. package/dist/types/components/StorageBrowser/controls/types.d.ts +90 -0
  413. package/dist/types/components/StorageBrowser/createStorageBrowser.d.ts +3 -0
  414. package/dist/types/components/StorageBrowser/credentials/store/constants.d.ts +2 -0
  415. package/dist/types/components/StorageBrowser/credentials/store/create.d.ts +2 -0
  416. package/dist/types/components/StorageBrowser/credentials/store/index.d.ts +1 -0
  417. package/dist/types/components/StorageBrowser/credentials/store/registry.d.ts +21 -0
  418. package/dist/types/components/StorageBrowser/credentials/store/store.d.ts +41 -0
  419. package/dist/types/components/StorageBrowser/credentials/types.d.ts +26 -0
  420. package/dist/types/components/StorageBrowser/displayText/context.d.ts +10 -0
  421. package/dist/types/components/StorageBrowser/displayText/en.d.ts +9 -0
  422. package/dist/types/components/StorageBrowser/displayText/index.d.ts +3 -0
  423. package/dist/types/components/StorageBrowser/displayText/libraries/en/copyView.d.ts +2 -0
  424. package/dist/types/components/StorageBrowser/displayText/libraries/en/createFolderView.d.ts +2 -0
  425. package/dist/types/components/StorageBrowser/displayText/libraries/en/default.d.ts +2 -0
  426. package/dist/types/components/StorageBrowser/displayText/libraries/en/deleteView.d.ts +2 -0
  427. package/dist/types/components/StorageBrowser/displayText/libraries/en/index.d.ts +1 -0
  428. package/dist/types/components/StorageBrowser/displayText/libraries/en/locationDetailView.d.ts +3 -0
  429. package/dist/types/components/StorageBrowser/displayText/libraries/en/locationsView.d.ts +3 -0
  430. package/dist/types/components/StorageBrowser/displayText/libraries/en/shared.d.ts +3 -0
  431. package/dist/types/components/StorageBrowser/displayText/libraries/en/uploadView.d.ts +2 -0
  432. package/dist/types/components/StorageBrowser/displayText/libraries/index.d.ts +1 -0
  433. package/dist/types/components/StorageBrowser/displayText/types.d.ts +151 -0
  434. package/dist/types/components/StorageBrowser/index.d.ts +6 -0
  435. package/dist/types/components/StorageBrowser/providers/configuration/context.d.ts +6 -0
  436. package/dist/types/components/StorageBrowser/providers/configuration/createConfigurationProvider.d.ts +3 -0
  437. package/dist/types/components/StorageBrowser/providers/configuration/credentials/context.d.ts +6 -0
  438. package/dist/types/components/StorageBrowser/providers/configuration/credentials/index.d.ts +2 -0
  439. package/dist/types/components/StorageBrowser/providers/configuration/credentials/types.d.ts +20 -0
  440. package/dist/types/components/StorageBrowser/providers/configuration/credentials/useCredentialsStore.d.ts +8 -0
  441. package/dist/types/components/StorageBrowser/providers/configuration/index.d.ts +4 -0
  442. package/dist/types/components/StorageBrowser/providers/configuration/types.d.ts +19 -0
  443. package/dist/types/components/StorageBrowser/providers/configuration/useGetActionInputCallback.d.ts +7 -0
  444. package/dist/types/components/StorageBrowser/providers/index.d.ts +2 -0
  445. package/dist/types/components/StorageBrowser/providers/store/StoreProvider.d.ts +8 -0
  446. package/dist/types/components/StorageBrowser/providers/store/actionType/context.d.ts +6 -0
  447. package/dist/types/components/StorageBrowser/providers/store/actionType/index.d.ts +2 -0
  448. package/dist/types/components/StorageBrowser/providers/store/actionType/types.d.ts +16 -0
  449. package/dist/types/components/StorageBrowser/providers/store/actionType/useActionTypeState.d.ts +2 -0
  450. package/dist/types/components/StorageBrowser/providers/store/files/context.d.ts +6 -0
  451. package/dist/types/components/StorageBrowser/providers/store/files/index.d.ts +2 -0
  452. package/dist/types/components/StorageBrowser/providers/store/files/types.d.ts +32 -0
  453. package/dist/types/components/StorageBrowser/providers/store/files/utils.d.ts +7 -0
  454. package/dist/types/components/StorageBrowser/providers/store/index.d.ts +3 -0
  455. package/dist/types/components/StorageBrowser/providers/store/location/context.d.ts +58 -0
  456. package/dist/types/components/StorageBrowser/providers/store/location/index.d.ts +1 -0
  457. package/dist/types/components/StorageBrowser/providers/store/locationItems/context.d.ts +27 -0
  458. package/dist/types/components/StorageBrowser/providers/store/locationItems/index.d.ts +1 -0
  459. package/dist/types/components/StorageBrowser/providers/store/useStore.d.ts +12 -0
  460. package/dist/types/components/StorageBrowser/storage-internal.d.ts +1 -0
  461. package/dist/types/components/StorageBrowser/tasks/constants.d.ts +2 -0
  462. package/dist/types/components/StorageBrowser/tasks/index.d.ts +3 -0
  463. package/dist/types/components/StorageBrowser/tasks/types.d.ts +33 -0
  464. package/dist/types/components/StorageBrowser/tasks/useProcessTasks.d.ts +3 -0
  465. package/dist/types/components/StorageBrowser/tasks/utils.d.ts +4 -0
  466. package/dist/types/components/StorageBrowser/types.d.ts +69 -0
  467. package/dist/types/components/StorageBrowser/useAction/constants.d.ts +3 -0
  468. package/dist/types/components/StorageBrowser/useAction/context.d.ts +5 -0
  469. package/dist/types/components/StorageBrowser/useAction/createEnhancedListHandler.d.ts +45 -0
  470. package/dist/types/components/StorageBrowser/useAction/index.d.ts +6 -0
  471. package/dist/types/components/StorageBrowser/useAction/types.d.ts +76 -0
  472. package/dist/types/components/StorageBrowser/useAction/useAction.d.ts +3 -0
  473. package/dist/types/components/StorageBrowser/useAction/useHandler.d.ts +3 -0
  474. package/dist/types/components/StorageBrowser/useAction/useList.d.ts +9 -0
  475. package/dist/types/components/StorageBrowser/useAction/useListFolderItems.d.ts +13 -0
  476. package/dist/types/components/StorageBrowser/useAction/useListLocationItems.d.ts +10 -0
  477. package/dist/types/components/StorageBrowser/useAction/useListLocations.d.ts +8 -0
  478. package/dist/types/components/StorageBrowser/useAction/utils.d.ts +6 -0
  479. package/dist/types/components/StorageBrowser/validators/assertAccountId.d.ts +1 -0
  480. package/dist/types/components/StorageBrowser/validators/assertLocationData.d.ts +3 -0
  481. package/dist/types/components/StorageBrowser/validators/assertRegisterAuthListener.d.ts +2 -0
  482. package/dist/types/components/StorageBrowser/validators/index.d.ts +4 -0
  483. package/dist/types/components/StorageBrowser/validators/isFileTooBig.d.ts +2 -0
  484. package/dist/types/components/StorageBrowser/views/LocationActionView/CopyView/CopyView.d.ts +2 -0
  485. package/dist/types/components/StorageBrowser/views/LocationActionView/CopyView/CopyViewProvider.d.ts +3 -0
  486. package/dist/types/components/StorageBrowser/views/LocationActionView/CopyView/FoldersMessageControl.d.ts +16 -0
  487. package/dist/types/components/StorageBrowser/views/LocationActionView/CopyView/FoldersPaginationControl.d.ts +9 -0
  488. package/dist/types/components/StorageBrowser/views/LocationActionView/CopyView/FoldersTableControl.d.ts +15 -0
  489. package/dist/types/components/StorageBrowser/views/LocationActionView/CopyView/getDestinationPickerTableData.d.ts +10 -0
  490. package/dist/types/components/StorageBrowser/views/LocationActionView/CopyView/index.d.ts +3 -0
  491. package/dist/types/components/StorageBrowser/views/LocationActionView/CopyView/types.d.ts +50 -0
  492. package/dist/types/components/StorageBrowser/views/LocationActionView/CopyView/useCopyView.d.ts +2 -0
  493. package/dist/types/components/StorageBrowser/views/LocationActionView/CopyView/useFolders.d.ts +13 -0
  494. package/dist/types/components/StorageBrowser/views/LocationActionView/CreateFolderView/CreateFolderView.d.ts +2 -0
  495. package/dist/types/components/StorageBrowser/views/LocationActionView/CreateFolderView/CreateFolderViewProvider.d.ts +3 -0
  496. package/dist/types/components/StorageBrowser/views/LocationActionView/CreateFolderView/index.d.ts +3 -0
  497. package/dist/types/components/StorageBrowser/views/LocationActionView/CreateFolderView/types.d.ts +24 -0
  498. package/dist/types/components/StorageBrowser/views/LocationActionView/CreateFolderView/useCreateFolderView.d.ts +2 -0
  499. package/dist/types/components/StorageBrowser/views/LocationActionView/CreateFolderView/utils.d.ts +1 -0
  500. package/dist/types/components/StorageBrowser/views/LocationActionView/DeleteView/DeleteView.d.ts +2 -0
  501. package/dist/types/components/StorageBrowser/views/LocationActionView/DeleteView/DeleteViewProvider.d.ts +3 -0
  502. package/dist/types/components/StorageBrowser/views/LocationActionView/DeleteView/index.d.ts +3 -0
  503. package/dist/types/components/StorageBrowser/views/LocationActionView/DeleteView/types.d.ts +23 -0
  504. package/dist/types/components/StorageBrowser/views/LocationActionView/DeleteView/useDeleteView.d.ts +2 -0
  505. package/dist/types/components/StorageBrowser/views/LocationActionView/LocationActionView.d.ts +2 -0
  506. package/dist/types/components/StorageBrowser/views/LocationActionView/UploadView/UploadView.d.ts +2 -0
  507. package/dist/types/components/StorageBrowser/views/LocationActionView/UploadView/UploadViewProvider.d.ts +3 -0
  508. package/dist/types/components/StorageBrowser/views/LocationActionView/UploadView/constants.d.ts +1 -0
  509. package/dist/types/components/StorageBrowser/views/LocationActionView/UploadView/index.d.ts +3 -0
  510. package/dist/types/components/StorageBrowser/views/LocationActionView/UploadView/types.d.ts +36 -0
  511. package/dist/types/components/StorageBrowser/views/LocationActionView/UploadView/useUploadView.d.ts +2 -0
  512. package/dist/types/components/StorageBrowser/views/LocationActionView/getActionIcon.d.ts +3 -0
  513. package/dist/types/components/StorageBrowser/views/LocationActionView/getActionViewTableData.d.ts +14 -0
  514. package/dist/types/components/StorageBrowser/views/LocationActionView/getDefaultActionViewHeaders.d.ts +5 -0
  515. package/dist/types/components/StorageBrowser/views/LocationActionView/getFileTypeDisplayValue.d.ts +1 -0
  516. package/dist/types/components/StorageBrowser/views/LocationActionView/getPercentValue.d.ts +1 -0
  517. package/dist/types/components/StorageBrowser/views/LocationActionView/index.d.ts +7 -0
  518. package/dist/types/components/StorageBrowser/views/LocationActionView/types.d.ts +33 -0
  519. package/dist/types/components/StorageBrowser/views/LocationActionView/useActionView.d.ts +2 -0
  520. package/dist/types/components/StorageBrowser/views/LocationDetailView/LocationDetailView.d.ts +6 -0
  521. package/dist/types/components/StorageBrowser/views/LocationDetailView/LocationDetailViewProvider.d.ts +3 -0
  522. package/dist/types/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/constants.d.ts +2 -0
  523. package/dist/types/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/getFileRowContent.d.ts +15 -0
  524. package/dist/types/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/getFolderRowContent.d.ts +6 -0
  525. package/dist/types/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/getLocationDetailViewTableData.d.ts +17 -0
  526. package/dist/types/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/index.d.ts +1 -0
  527. package/dist/types/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/types.d.ts +4 -0
  528. package/dist/types/components/StorageBrowser/views/LocationDetailView/index.d.ts +3 -0
  529. package/dist/types/components/StorageBrowser/views/LocationDetailView/types.d.ts +76 -0
  530. package/dist/types/components/StorageBrowser/views/LocationDetailView/useLocationDetailView.d.ts +6 -0
  531. package/dist/types/components/StorageBrowser/views/LocationsView/LocationsView.d.ts +2 -0
  532. package/dist/types/components/StorageBrowser/views/LocationsView/LocationsViewProvider.d.ts +3 -0
  533. package/dist/types/components/StorageBrowser/views/LocationsView/getLocationsViewTableData/getHeaders.d.ts +8 -0
  534. package/dist/types/components/StorageBrowser/views/LocationsView/getLocationsViewTableData/getLocationsViewTableData.d.ts +9 -0
  535. package/dist/types/components/StorageBrowser/views/LocationsView/getLocationsViewTableData/index.d.ts +1 -0
  536. package/dist/types/components/StorageBrowser/views/LocationsView/getLocationsViewTableData/types.d.ts +4 -0
  537. package/dist/types/components/StorageBrowser/views/LocationsView/index.d.ts +3 -0
  538. package/dist/types/components/StorageBrowser/views/LocationsView/types.d.ts +46 -0
  539. package/dist/types/components/StorageBrowser/views/LocationsView/useLocationsView.d.ts +7 -0
  540. package/dist/types/components/StorageBrowser/views/context/actionViews.d.ts +6 -0
  541. package/dist/types/components/StorageBrowser/views/context/getViews.d.ts +4 -0
  542. package/dist/types/components/StorageBrowser/views/context/index.d.ts +1 -0
  543. package/dist/types/components/StorageBrowser/views/context/primaryViews.d.ts +6 -0
  544. package/dist/types/components/StorageBrowser/views/context/types.d.ts +9 -0
  545. package/dist/types/components/StorageBrowser/views/context/views.d.ts +10 -0
  546. package/dist/types/components/StorageBrowser/views/hooks/usePaginate.d.ts +15 -0
  547. package/dist/types/components/StorageBrowser/views/hooks/useSearch.d.ts +13 -0
  548. package/dist/types/components/StorageBrowser/views/index.d.ts +4 -0
  549. package/dist/types/components/StorageBrowser/views/types.d.ts +34 -0
  550. package/dist/types/components/StorageBrowser/views/useView.d.ts +16 -0
  551. package/dist/types/components/StorageImage/StorageImage.d.ts +6 -2
  552. package/dist/types/components/StorageImage/types.d.ts +33 -2
  553. package/dist/types/components/StorageManager/StorageManager.d.ts +5 -2
  554. package/dist/types/components/StorageManager/index.d.ts +1 -1
  555. package/dist/types/components/StorageManager/types.d.ts +21 -19
  556. package/dist/types/components/StorageManager/ui/DropZone/types.d.ts +1 -1
  557. package/dist/types/components/StorageManager/ui/FileList/types.d.ts +8 -18
  558. package/dist/types/components/StorageManager/ui/FileListFooter/FileListFooter.d.ts +2 -2
  559. package/dist/types/components/StorageManager/ui/FileListHeader/FileListHeader.d.ts +2 -2
  560. package/dist/types/components/index.d.ts +2 -1
  561. package/dist/types/index.d.ts +2 -1
  562. package/dist/types/styles/storage-browser-styles.d.ts +1 -0
  563. package/dist/types/version.d.ts +1 -0
  564. package/package.json +51 -43
  565. package/dist/esm/components/StorageManager/hooks/useStorageManager/actions.mjs +0 -1
  566. package/dist/esm/components/StorageManager/hooks/useStorageManager/reducer.mjs +0 -1
  567. package/dist/esm/components/StorageManager/hooks/useStorageManager/types.mjs +0 -1
  568. package/dist/esm/components/StorageManager/hooks/useStorageManager/useStorageManager.mjs +0 -1
  569. package/dist/esm/components/StorageManager/hooks/useUploadFiles/resolveFile.mjs +0 -1
  570. package/dist/esm/components/StorageManager/hooks/useUploadFiles/useUploadFiles.mjs +0 -1
  571. package/dist/esm/components/StorageManager/types.mjs +0 -1
  572. package/dist/esm/components/StorageManager/utils/checkMaxFileSize.mjs +0 -1
  573. package/dist/esm/components/StorageManager/utils/displayText.mjs +0 -1
  574. package/dist/esm/components/StorageManager/utils/filterAllowedFiles.mjs +0 -1
  575. package/dist/esm/components/StorageManager/utils/humanFileSize.mjs +0 -1
  576. package/dist/esm/components/StorageManager/utils/uploadFile.mjs +0 -1
  577. package/dist/types/components/StorageImage/_tests_/StorageImage.test.d.ts +0 -1
  578. package/dist/types/components/StorageManager/hooks/index.d.ts +0 -2
  579. package/dist/types/components/StorageManager/hooks/useStorageManager/index.d.ts +0 -1
  580. package/dist/types/components/StorageManager/hooks/useStorageManager/reducer.d.ts +0 -2
  581. package/dist/types/components/StorageManager/hooks/useStorageManager/types.d.ts +0 -45
  582. package/dist/types/components/StorageManager/hooks/useUploadFiles/resolveFile.d.ts +0 -10
  583. package/dist/types/components/StorageManager/hooks/useUploadFiles/useUploadFiles.d.ts +0 -5
  584. package/dist/types/components/StorageManager/utils/displayText.d.ts +0 -20
  585. package/dist/types/components/StorageManager/utils/humanFileSize.d.ts +0 -11
  586. package/dist/types/components/StorageManager/utils/index.d.ts +0 -5
  587. package/dist/types/components/StorageManager/utils/uploadFile.d.ts +0 -19
  588. /package/dist/types/components/{StorageManager → FileUploader}/hooks/useUploadFiles/index.d.ts +0 -0
  589. /package/dist/types/components/{StorageManager → FileUploader}/utils/checkMaxFileSize.d.ts +0 -0
  590. /package/dist/types/components/{StorageManager → FileUploader}/utils/filterAllowedFiles.d.ts +0 -0
  591. /package/dist/types/{styles.d.ts → styles/styles.d.ts} +0 -0
package/dist/index.js CHANGED
@@ -1 +1,1063 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),a=require("classnames"),t=require("@aws-amplify/ui"),s=require("@aws-amplify/ui-react"),l=require("@aws-amplify/ui-react/internal"),r=require("aws-amplify");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function n(e){if(e&&e.__esModule)return e;var a=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var s=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(a,t,s.get?s:{enumerable:!0,get:function(){return e[t]}})}})),a.default=e,Object.freeze(a)}var i=n(e),u=o(e),c=o(a);var d,m;function p(e,a){switch(a.type){case m.ADD_FILES:{const{files:t,status:s}=a,l=t.map((e=>{const t=a.getFileErrorMessage(e);return{id:e.name,file:e,error:t,key:e.name,status:t?d.ERROR:s,isImage:e.type.startsWith("image/"),progress:-1}})),r=[...e.files,...l];return{...e,files:r}}case m.CLEAR_FILES:return{...e,files:[]};case m.QUEUE_FILES:{const{files:a}=e,t=a.reduce(((e,a)=>[...e,{...a,status:d.QUEUED}]),[]);return{...e,files:t}}case m.SET_STATUS_UPLOADING:{const{id:t,uploadTask:s}=a,{files:l}=e,r=l.reduce(((e,a)=>a.id===t?[...e,{...a,status:d.UPLOADING,progress:0,uploadTask:s||void 0}]:[...e,a]),[]);return{...e,files:r}}case m.SET_UPLOAD_PROGRESS:{const{id:t,progress:s}=a,{files:l}=e,r=l.reduce(((e,a)=>a.id===t?[...e,{...a,progress:s}]:[...e,a]),[]);return{...e,files:r}}case m.SET_STATUS:{const{id:t,status:s}=a,{files:l}=e,r=l.reduce(((e,a)=>a.id===t?[...e,{...a,status:s}]:[...e,a]),[]);return{...e,files:r}}case m.REMOVE_UPLOAD:{const{id:t}=a,{files:s}=e,l=s.reduce(((e,a)=>a.id===t?[...e]:[...e,a]),[]);return{...e,files:l}}}}!function(e){e.ADDED="added",e.QUEUED="queued",e.UPLOADING="uploading",e.PAUSED="paused",e.ERROR="error",e.UPLOADED="uploaded"}(d||(d={})),function(e){e.ADD_FILES="ADD_FILES",e.CLEAR_FILES="CLEAR_FILES",e.QUEUE_FILES="QUEUE_FILES",e.SET_STATUS="SET_STATUS",e.SET_STATUS_UPLOADING="SET_STATUS_UPLOADING",e.SET_UPLOAD_PROGRESS="SET_UPLOAD_PROGRESS",e.REMOVE_UPLOAD="REMOVE_UPLOAD"}(m||(m={}));const g=({files:e,status:a,getFileErrorMessage:t})=>({type:m.ADD_FILES,files:e,status:a,getFileErrorMessage:t}),f=()=>({type:m.CLEAR_FILES}),E=()=>({type:m.QUEUE_FILES}),S=({id:e,uploadTask:a})=>({type:m.SET_STATUS_UPLOADING,id:e,uploadTask:a}),T=({id:e,progress:a})=>({type:m.SET_UPLOAD_PROGRESS,id:e,progress:a}),U=({id:e,status:a})=>({type:m.SET_STATUS,id:e,status:a}),F=({id:e})=>({type:m.REMOVE_UPLOAD,id:e}),C=e=>(e=>!(!t.isObject(e)||!e.key))(e)?{...e,id:e.key,status:d.UPLOADED}:void 0;function D({file:e,key:a,level:t="private",progressCallback:s,errorCallback:l,completeCallback:o,isResumable:n=!1,provider:i,...u}){const c=e.type||"binary/octet-stream";return!0===n?r.Storage.put(a,e,{level:t,resumable:!0,progressCallback:s,errorCallback:l,completeCallback:o,contentType:c,provider:i,...u}):r.Storage.put(a,e,{level:t,resumable:!1,progressCallback:s,contentType:c,provider:i,...u}).then(o,l)}const x=({processFile:e,file:a,key:s})=>new Promise(((l,r)=>{const o=t.isFunction(e)?e({file:a,key:s}):{file:a,key:s};o instanceof Promise?o.then(l).catch(r):l(o)}));function N({children:e,className:a}){return u.default.createElement(s.View,{className:a},e)}function y({children:e,displayText:a,inDropZone:r,onDragEnter:o,onDragLeave:n,onDragOver:i,onDragStart:d,onDrop:m,testId:p}){const{dropFilesText:g}=a,f=l.useIcons("storageManager");return u.default.createElement(s.View,{className:c.default(r&&t.classNameModifier(t.ComponentClassName.StorageManagerDropZone,"active"),t.ComponentClassName.StorageManagerDropZone),"data-testid":p,onDragStart:d,onDragEnter:o,onDragLeave:n,onDrop:m,onDragOver:i},u.default.createElement(s.View,{as:"span","aria-hidden":!0,className:t.ComponentClassName.StorageManagerDropZoneIcon},f?.upload??u.default.createElement(l.IconUpload,null)),u.default.createElement(s.Text,{className:t.ComponentClassName.StorageManagerDropZoneText},g),e)}const L=({errorMessage:e,getPausedText:a,getUploadingText:r,percentage:o,status:n,uploadSuccessfulText:i})=>{const m=l.useIcons("storageManager");switch(n){case d.UPLOADING:return u.default.createElement(s.Text,{className:t.ComponentClassName.StorageManagerFileStatus},r(o));case d.PAUSED:return u.default.createElement(s.Text,{className:t.ComponentClassName.StorageManagerFileStatus},a(o));case d.UPLOADED:return u.default.createElement(s.Text,{className:c.default(t.ComponentClassName.StorageManagerFileStatus,t.classNameModifier(t.ComponentClassName.StorageManagerFileStatus,"success"))},u.default.createElement(s.View,{as:"span",fontSize:"xl"},m?.success??u.default.createElement(l.IconCheck,null)),i);case d.ERROR:return u.default.createElement(s.Text,{className:c.default(t.ComponentClassName.StorageManagerFileStatus,t.classNameModifier(t.ComponentClassName.StorageManagerFileStatus,"error"))},u.default.createElement(s.View,{as:"span",fontSize:"xl"},m?.error??u.default.createElement(l.IconError,null)),e);default:return null}},P=({altText:e,onClick:a})=>{const t=l.useIcons("storageManager");return u.default.createElement(s.Button,{size:"small",onClick:a},u.default.createElement(s.VisuallyHidden,null,e),u.default.createElement(s.View,{as:"span","aria-hidden":!0,fontSize:"medium"},t?.remove??u.default.createElement(l.IconClose,null)))};function A(e,a=!1,t=1){const s=a?1e3:1024;if(Math.abs(e)<s)return`${e} B`;const l=a?["kB","MB","GB","TB","PB","EB","ZB","YB"]:["KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"];let r=-1;const o=10**t;do{e/=s,++r}while(Math.round(Math.abs(e)*o)/o>=s&&r<l.length-1);return e.toFixed(t)+" "+l[r]}const k={getFilesUploadedText:e=>`${e} ${1===e?"file uploaded":"files uploaded"}`,getFileSizeErrorText:e=>`File size must be below ${e}`,getRemainingFilesText:e=>`${e} ${1===e?"file":"files"} uploading`,getSelectedFilesText:e=>`${e} ${1===e?"file":"files"} selected`,getUploadingText:e=>"Uploading"+(e>0?`: ${e}%`:""),getUploadButtonText:e=>`Upload ${e} ${1===e?"file":"files"}`,getMaxFilesErrorText:e=>`Cannot choose more than ${e} ${1===e?"file":"files"}. Remove files before updating`,getErrorText:e=>e,doneButtonText:"Done",clearAllButtonText:"Clear all",extensionNotAllowedText:"Extension not allowed",browseFilesText:"Browse files",dropFilesText:"Drop files here or",pauseText:"Pause",resumeText:"Resume",uploadSuccessfulText:"Uploaded",getPausedText:e=>`Paused: ${e}%`},M=({displayName:e,fileSize:a})=>u.default.createElement(u.default.Fragment,null,u.default.createElement(s.View,{className:t.ComponentClassName.StorageManagerFileMain},u.default.createElement(s.Text,{className:t.ComponentClassName.StorageManagerFileName},e)),u.default.createElement(s.Text,{as:"span",className:t.ComponentClassName.StorageManagerFileSize},a?A(a,!0):"")),h=({fileName:e,isImage:a,url:r})=>{const o=l.useIcons("storageManager"),n=a?u.default.createElement(s.Image,{alt:e,src:r}):o?.file??u.default.createElement(l.IconFile,null);return u.default.createElement(s.View,{className:t.ComponentClassName.StorageManagerFileImage},n)};function v({onPause:e,onResume:a,displayName:l,errorMessage:r,isImage:o,isResumable:n,loaderIsDeterminate:i,onRemove:c,progress:m,showThumbnails:p=!0,size:g,status:f,displayText:E,thumbnailUrl:S}){const{getPausedText:T,getUploadingText:U,uploadSuccessfulText:F,pauseText:C,resumeText:D}=E;return u.default.createElement(s.View,{className:t.ComponentClassName.StorageManagerFile},u.default.createElement(s.View,{className:t.ComponentClassName.StorageManagerFileWrapper},p?u.default.createElement(h,{isImage:o,fileName:l,url:S}):null,u.default.createElement(M,{displayName:l,fileSize:g}),f===d.UPLOADING?u.default.createElement(s.Loader,{className:t.ComponentClassName.StorageManagerLoader,variation:"linear",percentage:m,isDeterminate:i,isPercentageTextHidden:!0}):null,!n||f!==d.UPLOADING&&f!==d.PAUSED?null:f===d.PAUSED?u.default.createElement(s.Button,{onClick:a,size:"small",variation:"link"},D):u.default.createElement(s.Button,{onClick:e,size:"small",variation:"link"},C),u.default.createElement(P,{altText:`Remove file ${l}`,onClick:c})),u.default.createElement(L,{uploadSuccessfulText:F,getUploadingText:U,getPausedText:T,status:f,errorMessage:r,percentage:m}))}function R({displayText:e,files:a,hasMaxFilesError:l,isResumable:r,onCancelUpload:o,onDeleteUpload:n,onResume:i,onPause:c,showThumbnails:m,maxFileCount:p}){if(a.length<1)return null;const{getMaxFilesErrorText:g}=e,f=g(p);return u.default.createElement(s.View,{className:t.ComponentClassName.StorageManagerFileList},a.map((a=>{const{file:t,status:s,progress:l,error:p,key:g,isImage:f,id:E,uploadTask:S}=a,T=t&&f?URL.createObjectURL(t):"",U=!r||l>0,F=s===d.UPLOADING;return u.default.createElement(v,{displayName:g,errorMessage:p,displayText:e,isImage:f,isUploading:F,isResumable:r,key:E,loaderIsDeterminate:U,onRemove:()=>{r&&(s===d.UPLOADING||s===d.PAUSED)&&S?o({id:E,uploadTask:S}):n({id:E})},onPause:()=>{S&&c({id:E,uploadTask:S})},onResume:()=>{S&&i({id:E,uploadTask:S})},progress:l,showThumbnails:m,size:t?.size,status:s,thumbnailUrl:T})})),l&&u.default.createElement(s.Alert,{variation:"error",heading:f}))}function I({allUploadsSuccessful:e,displayText:a,fileCount:l,remainingFilesCount:r,selectedFilesCount:o=0}){const{getFilesUploadedText:n,getRemainingFilesText:i,getSelectedFilesText:c}=a;return u.default.createElement(s.Text,{className:t.ComponentClassName.StorageManagerPreviewerText},o?c(o):e?n(l):i(r))}function b({displayText:e,remainingFilesCount:a,onClearAll:l,onUploadAll:r}){const{clearAllButtonText:o,getUploadButtonText:n}=e;return u.default.createElement(s.View,{className:t.ComponentClassName.StorageManagerPreviewerFooter},u.default.createElement(s.View,{className:t.ComponentClassName.StorageManagerPreviewerActions},u.default.createElement(s.Button,{size:"small",variation:"link",onClick:l},o),u.default.createElement(s.Button,{size:"small",variation:"primary",onClick:r},n(a))))}function O({children:e,className:a=t.ComponentClassName.StorageManagerFilePicker,size:l="small",...r}){return u.default.createElement(s.Button,{...r,className:a,size:l},e)}const w=new r.Logger("Storage.StorageManager");const _=Object.assign(i.forwardRef((function({acceptedFileTypes:e=[],accessLevel:a,autoUpload:r=!0,defaultFiles:o,displayText:n,isResumable:c=!1,maxFileCount:m,maxFileSize:L,onUploadError:P,onUploadSuccess:M,onFileRemove:h,onUploadStart:v,showThumbnails:_=!0,processFile:B,components:z,provider:G,path:V},$){a&&m||w.warn("StorageManager requires accessLevel and maxFileCount props");const j={Container:N,DropZone:y,FileList:R,FilePicker:O,FileListHeader:I,FileListFooter:b,...z},Z=void 0===m||"number"==typeof m&&m>1,q={...k,...n},{getFileSizeErrorText:Q}=q,H=e=>(({file:e,getFileSizeErrorText:a,maxFileSize:t})=>void 0===t?"":e.size>t?a(A(t,!0)):"")({file:e,maxFileSize:L,getFileSizeErrorText:Q}),{addFiles:W,clearFiles:K,files:Y,removeUpload:J,queueFiles:X,setUploadingFile:ee,setUploadPaused:ae,setUploadProgress:te,setUploadSuccess:se,setUploadResumed:le}=function(e=[]){const[{files:a},t]=u.default.useReducer(p,{files:Array.isArray(e)?e.map(C).filter((e=>!!e)):[]});return{removeUpload:({id:e})=>{t(F({id:e}))},setUploadPaused:({id:e})=>{t(U({id:e,status:d.PAUSED}))},setUploadProgress:({progress:e,id:a})=>{t(T({id:a,progress:e}))},setUploadResumed:({id:e})=>{t(U({id:e,status:d.UPLOADING}))},setUploadSuccess:({id:e})=>{t(U({id:e,status:d.UPLOADED}))},setUploadingFile:({uploadTask:e,id:a})=>{t(S({id:a,uploadTask:e}))},queueFiles:()=>{t(E())},addFiles:({files:e,status:a,getFileErrorMessage:s})=>{t(g({files:e,status:a,getFileErrorMessage:s}))},clearFiles:()=>{t(f())},files:a}}(o);i.useImperativeHandle($,(()=>({clearFiles:K})));const{dragState:re,...oe}=l.useDropZone({acceptedFileTypes:e,onDropComplete:({acceptedFiles:a,rejectedFiles:t})=>{t&&t.length>0&&w.warn("Rejected files: ",t);const s=((e,a)=>!a||0===a.length||a.includes("*")?e:e.filter((e=>{const t=e.name||"",s=(e.type||"").toLowerCase(),l=s.replace(/\/.*$/,"");return a.some((e=>{const a=e.trim().toLowerCase();return"."===a.charAt(0)?t.toLowerCase().endsWith(a):a.endsWith("/*")?l===a.replace(/\/.*$/,""):s===a}))})))(a,e);W({files:s,status:r?d.QUEUED:d.ADDED,getFileErrorMessage:H})}});!function({files:e,accessLevel:a,isResumable:t,setUploadProgress:s,setUploadingFile:l,setUploadSuccess:r,onUploadError:o,onUploadSuccess:n,onUploadStart:u,maxFileCount:c,processFile:m,provider:p,path:g=""}){i.useEffect((()=>{const i=e.filter((e=>e.status===d.QUEUED));if(!(i.length>c))for(const{file:e,key:c,id:d}of i){const i=e=>{n?.(e),r({id:d})},f=e=>{const a=0===e.total?100:Math.floor(e.loaded/e.total*100);s({id:d,progress:a})},E=e=>{o?.(e,{key:c})};e&&x({processFile:m,file:e,key:c}).then((({key:e,...s})=>{u?.({key:e});const r=D({...s,isResumable:t,provider:p,key:g+e,level:a,completeCallback:i,progressCallback:f,errorCallback:E});l({id:d,uploadTask:t?r:void 0})}))}}),[e,a,t,s,l,o,n,u,c,r,m,p,g])}({accessLevel:a,files:Y,isResumable:c,maxFileCount:m,onUploadError:P,onUploadSuccess:M,onUploadStart:v,setUploadingFile:ee,setUploadProgress:te,setUploadSuccess:se,processFile:B,provider:G,path:V});const ne=0!==Y.length&&Y.every((e=>e?.status===d.UPLOADED)),ie=Y.filter((e=>e.progress<100)).length>m,ue=Y.filter((e=>e?.status===d.UPLOADED)).length,ce=Y.length-ue,de=r?0:ce,me=Y.length>0,pe=!r&&ce>0,ge=i.useRef(null);return i.createElement(j.Container,{className:`${t.ComponentClassName.StorageManager} ${me?t.ComponentClassName.StorageManagerPreviewer:""}`},i.createElement(j.DropZone,{inDropZone:"inactive"!==re,...oe,displayText:q},i.createElement(i.Fragment,null,i.createElement(j.FilePicker,{onClick:function(){ge.current&&(ge.current.click(),ge.current.value="")}},q.browseFilesText),i.createElement(s.VisuallyHidden,null,i.createElement("input",{type:"file",tabIndex:-1,ref:ge,onChange:e=>{const{files:a}=e.target;a&&0!==a.length&&W({files:Array.from(a),status:r?d.QUEUED:d.ADDED,getFileErrorMessage:H})},multiple:Z,accept:e.join(",")})))),me?i.createElement(j.FileListHeader,{allUploadsSuccessful:ne,displayText:q,fileCount:Y.length,remainingFilesCount:ce,selectedFilesCount:de}):null,i.createElement(j.FileList,{displayText:q,files:Y,isResumable:c,onCancelUpload:({id:e,uploadTask:a})=>{a.pause(),J({id:e})},onDeleteUpload:({id:e})=>{if(J({id:e}),"function"==typeof h){const a=Y.find((a=>a.id===e));a&&h({key:a.key})}},onResume:({id:e,uploadTask:a})=>{a.resume(),le({id:e})},onPause:({id:e,uploadTask:a})=>{a.pause(),ae({id:e})},showThumbnails:_,hasMaxFilesError:ie,maxFileCount:m}),pe?i.createElement(j.FileListFooter,{displayText:q,remainingFilesCount:ce,onClearAll:()=>{K()},onUploadAll:()=>{X()}}):null)})),{Container:N,DropZone:y,FileList:R,FileListHeader:I,FileListFooter:b,FilePicker:O});exports.StorageImage=({accessLevel:e,className:a,fallbackSrc:r,identityId:o,imgKey:n,onStorageGetError:u,...d})=>{const m=i.useMemo((()=>({level:e,identityId:o})),[e,o]),p=l.useStorageURL({key:n,options:m,fallbackURL:r,onStorageGetError:u});return i.createElement(s.Image,{...d,className:c.default(t.ComponentClassName.StorageImage,a),src:p})},exports.StorageManager=_;
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var ui = require('@aws-amplify/ui');
7
+ var uiReact = require('@aws-amplify/ui-react');
8
+ var uiReactCore = require('@aws-amplify/ui-react-core');
9
+ var auth = require('aws-amplify/auth');
10
+ var storage = require('aws-amplify/storage');
11
+ var internal = require('@aws-amplify/ui-react/internal');
12
+ var createAmplifyAuthAdapter = require('./createAmplifyAuthAdapter-va4cyg_O.js');
13
+ require('@aws-amplify/storage/internals');
14
+ require('@aws-amplify/ui-react-core/elements');
15
+ require('aws-amplify');
16
+ require('aws-amplify/utils');
17
+
18
+ function _interopNamespace(e) {
19
+ if (e && e.__esModule) return e;
20
+ var n = Object.create(null);
21
+ if (e) {
22
+ Object.keys(e).forEach(function (k) {
23
+ if (k !== 'default') {
24
+ var d = Object.getOwnPropertyDescriptor(e, k);
25
+ Object.defineProperty(n, k, d.get ? d : {
26
+ enumerable: true,
27
+ get: function () { return e[k]; }
28
+ });
29
+ }
30
+ });
31
+ }
32
+ n["default"] = e;
33
+ return Object.freeze(n);
34
+ }
35
+
36
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
37
+
38
+ var FileStatus;
39
+ (function (FileStatus) {
40
+ FileStatus["ADDED"] = "added";
41
+ FileStatus["QUEUED"] = "queued";
42
+ FileStatus["UPLOADING"] = "uploading";
43
+ FileStatus["PAUSED"] = "paused";
44
+ FileStatus["ERROR"] = "error";
45
+ FileStatus["UPLOADED"] = "uploaded";
46
+ })(FileStatus || (FileStatus = {}));
47
+
48
+ var FileUploaderActionTypes;
49
+ (function (FileUploaderActionTypes) {
50
+ FileUploaderActionTypes[FileUploaderActionTypes["ADD_FILES"] = 0] = "ADD_FILES";
51
+ FileUploaderActionTypes[FileUploaderActionTypes["CLEAR_FILES"] = 1] = "CLEAR_FILES";
52
+ FileUploaderActionTypes[FileUploaderActionTypes["QUEUE_FILES"] = 2] = "QUEUE_FILES";
53
+ FileUploaderActionTypes[FileUploaderActionTypes["REMOVE_UPLOAD"] = 3] = "REMOVE_UPLOAD";
54
+ FileUploaderActionTypes[FileUploaderActionTypes["SET_STATUS"] = 4] = "SET_STATUS";
55
+ FileUploaderActionTypes[FileUploaderActionTypes["SET_PROCESSED_FILE_KEY"] = 5] = "SET_PROCESSED_FILE_KEY";
56
+ FileUploaderActionTypes[FileUploaderActionTypes["SET_STATUS_UPLOADED"] = 6] = "SET_STATUS_UPLOADED";
57
+ FileUploaderActionTypes[FileUploaderActionTypes["SET_STATUS_UPLOADING"] = 7] = "SET_STATUS_UPLOADING";
58
+ FileUploaderActionTypes[FileUploaderActionTypes["SET_UPLOAD_PROGRESS"] = 8] = "SET_UPLOAD_PROGRESS";
59
+ })(FileUploaderActionTypes || (FileUploaderActionTypes = {}));
60
+
61
+ const updateFiles = (files, nextFileData) => files.reduce((files, currentFile) => {
62
+ if (currentFile.id === nextFileData.id) {
63
+ return [...files, { ...currentFile, ...nextFileData }];
64
+ }
65
+ return [...files, currentFile];
66
+ }, []);
67
+ function fileUploaderStateReducer(state, action) {
68
+ switch (action.type) {
69
+ case FileUploaderActionTypes.ADD_FILES: {
70
+ const { files, status } = action;
71
+ const newUploads = files.map((file) => {
72
+ const errorText = action.getFileErrorMessage(file);
73
+ return {
74
+ // make sure id is unique,
75
+ // we only use it internally and don't send it to Storage
76
+ id: `${Date.now()}-${file.name}`,
77
+ file,
78
+ error: errorText,
79
+ key: file.name,
80
+ status: errorText ? FileStatus.ERROR : status,
81
+ isImage: file.type.startsWith('image/'),
82
+ progress: -1,
83
+ };
84
+ });
85
+ const newFiles = [...state.files, ...newUploads];
86
+ return { ...state, files: newFiles };
87
+ }
88
+ case FileUploaderActionTypes.CLEAR_FILES: {
89
+ return { ...state, files: [] };
90
+ }
91
+ case FileUploaderActionTypes.QUEUE_FILES: {
92
+ const { files } = state;
93
+ const newFiles = files.reduce((files, currentFile) => [
94
+ ...files,
95
+ {
96
+ ...currentFile,
97
+ ...(currentFile.status === FileStatus.ADDED
98
+ ? { status: FileStatus.QUEUED }
99
+ : {}),
100
+ },
101
+ ], []);
102
+ return { ...state, files: newFiles };
103
+ }
104
+ case FileUploaderActionTypes.SET_STATUS_UPLOADING: {
105
+ const { id, uploadTask } = action;
106
+ const status = FileStatus.UPLOADING;
107
+ const progress = 0;
108
+ const nextFileData = { status, progress, id, uploadTask };
109
+ const files = updateFiles(state.files, nextFileData);
110
+ return { ...state, files };
111
+ }
112
+ case FileUploaderActionTypes.SET_STATUS_UPLOADED: {
113
+ const files = updateFiles(state.files, action);
114
+ return { ...state, files };
115
+ }
116
+ case FileUploaderActionTypes.SET_UPLOAD_PROGRESS: {
117
+ const { id, progress } = action;
118
+ const files = updateFiles(state.files, { id, progress });
119
+ return { ...state, files };
120
+ }
121
+ case FileUploaderActionTypes.SET_STATUS: {
122
+ const { id, status } = action;
123
+ const files = updateFiles(state.files, { id, status });
124
+ return { ...state, files };
125
+ }
126
+ case FileUploaderActionTypes.REMOVE_UPLOAD: {
127
+ const { id } = action;
128
+ const { files } = state;
129
+ const newFiles = files.reduce((files, currentFile) => {
130
+ // remove by not returning currentFile
131
+ return currentFile.id === id ? [...files] : [...files, currentFile];
132
+ }, []);
133
+ return { ...state, files: newFiles };
134
+ }
135
+ }
136
+ }
137
+
138
+ const addFilesAction = ({ files, status, getFileErrorMessage, }) => ({
139
+ type: FileUploaderActionTypes.ADD_FILES,
140
+ files,
141
+ status,
142
+ getFileErrorMessage,
143
+ });
144
+ const clearFilesAction = () => ({
145
+ type: FileUploaderActionTypes.CLEAR_FILES,
146
+ });
147
+ const queueFilesAction = () => ({
148
+ type: FileUploaderActionTypes.QUEUE_FILES,
149
+ });
150
+ const setUploadingFileAction = ({ id, uploadTask, }) => ({
151
+ type: FileUploaderActionTypes.SET_STATUS_UPLOADING,
152
+ id,
153
+ uploadTask,
154
+ });
155
+ const setUploadProgressAction = ({ id, progress, }) => ({
156
+ type: FileUploaderActionTypes.SET_UPLOAD_PROGRESS,
157
+ id,
158
+ progress,
159
+ });
160
+ const setUploadStatusAction = ({ id, status, }) => ({
161
+ type: FileUploaderActionTypes.SET_STATUS,
162
+ id,
163
+ status,
164
+ });
165
+ const setUploadSuccessAction = ({ id, resolvedKey, }) => ({
166
+ type: FileUploaderActionTypes.SET_STATUS_UPLOADED,
167
+ id,
168
+ resolvedKey,
169
+ status: FileStatus.UPLOADED,
170
+ });
171
+ const removeUploadAction = ({ id }) => ({
172
+ type: FileUploaderActionTypes.REMOVE_UPLOAD,
173
+ id,
174
+ });
175
+
176
+ const isDefaultFile = (file) => !!(ui.isObject(file) && file.key);
177
+ const createFileFromDefault = (file) => isDefaultFile(file)
178
+ ? { ...file, id: file.key, status: FileStatus.UPLOADED }
179
+ : undefined;
180
+ function useFileUploader(defaultFiles = []) {
181
+ const [{ files }, dispatch] = React__namespace["default"].useReducer(fileUploaderStateReducer, {
182
+ files: (Array.isArray(defaultFiles)
183
+ ? defaultFiles.map(createFileFromDefault).filter((file) => !!file)
184
+ : []),
185
+ });
186
+ const dispatchers = React__namespace["default"].useMemo(() => ({
187
+ addFiles: (params) => {
188
+ dispatch(addFilesAction(params));
189
+ },
190
+ clearFiles: () => {
191
+ dispatch(clearFilesAction());
192
+ },
193
+ queueFiles: () => {
194
+ dispatch(queueFilesAction());
195
+ },
196
+ setUploadingFile: (params) => {
197
+ dispatch(setUploadingFileAction(params));
198
+ },
199
+ setUploadProgress: (params) => {
200
+ dispatch(setUploadProgressAction(params));
201
+ },
202
+ setUploadSuccess: (params) => {
203
+ dispatch(setUploadSuccessAction(params));
204
+ },
205
+ setUploadPaused: ({ id }) => {
206
+ dispatch(setUploadStatusAction({ id, status: FileStatus.PAUSED }));
207
+ },
208
+ setUploadResumed: ({ id }) => {
209
+ dispatch(setUploadStatusAction({ id, status: FileStatus.UPLOADING }));
210
+ },
211
+ removeUpload: ({ id }) => {
212
+ dispatch(removeUploadAction({ id }));
213
+ },
214
+ }), []);
215
+ return { ...dispatchers, files };
216
+ }
217
+
218
+ const checkMaxFileSize = ({ file, getFileSizeErrorText, maxFileSize, }) => {
219
+ if (maxFileSize === undefined)
220
+ return '';
221
+ if (file.size > maxFileSize) {
222
+ return getFileSizeErrorText(ui.humanFileSize(maxFileSize, true));
223
+ }
224
+ return '';
225
+ };
226
+
227
+ const defaultFileUploaderDisplayText = {
228
+ getFilesUploadedText(count) {
229
+ return `${count} ${count === 1 ? 'file uploaded' : 'files uploaded'}`;
230
+ },
231
+ getFileSizeErrorText(sizeText) {
232
+ return `File size must be below ${sizeText}`;
233
+ },
234
+ getRemainingFilesText(count) {
235
+ return `${count} ${count === 1 ? 'file' : 'files'} uploading`;
236
+ },
237
+ getSelectedFilesText(count) {
238
+ return `${count} ${count === 1 ? 'file' : 'files'} selected`;
239
+ },
240
+ getUploadingText(percentage) {
241
+ return `Uploading${percentage > 0 ? `: ${percentage}%` : ''}`;
242
+ },
243
+ getUploadButtonText(count) {
244
+ return `Upload ${count} ${count === 1 ? 'file' : 'files'}`;
245
+ },
246
+ getMaxFilesErrorText(count) {
247
+ return `Cannot choose more than ${count} ${count === 1 ? 'file' : 'files'}. Remove files before updating`;
248
+ },
249
+ getErrorText(message) {
250
+ return message;
251
+ },
252
+ doneButtonText: 'Done',
253
+ clearAllButtonText: 'Clear all',
254
+ extensionNotAllowedText: 'Extension not allowed',
255
+ browseFilesText: 'Browse files',
256
+ dropFilesText: 'Drop files here or',
257
+ pauseButtonText: 'Pause',
258
+ resumeButtonText: 'Resume',
259
+ uploadSuccessfulText: 'Uploaded',
260
+ getPausedText(percentage) {
261
+ return `Paused: ${percentage}%`;
262
+ },
263
+ };
264
+
265
+ const filterAllowedFiles = (files, acceptedFileTypes) => {
266
+ // Allow any files if acceptedFileTypes is undefined, empty array, or contains '*'
267
+ if (!acceptedFileTypes ||
268
+ acceptedFileTypes.length === 0 ||
269
+ acceptedFileTypes.includes('*')) {
270
+ return files;
271
+ }
272
+ // Remove any files that are not in the accepted file list
273
+ return files.filter((file) => {
274
+ const fileName = file.name || '';
275
+ const mimeType = (file.type || '').toLowerCase();
276
+ const baseMimeType = mimeType.replace(/\/.*$/, '');
277
+ return acceptedFileTypes.some((type) => {
278
+ const validType = type.trim().toLowerCase();
279
+ if (validType.charAt(0) === '.') {
280
+ return fileName.toLowerCase().endsWith(validType);
281
+ }
282
+ else if (validType.endsWith('/*')) {
283
+ // This is something like a image/* mime type
284
+ return baseMimeType === validType.replace(/\/.*$/, '');
285
+ }
286
+ return mimeType === validType;
287
+ });
288
+ });
289
+ };
290
+
291
+ /**
292
+ * Utility function that takes the processFile prop, along with a file a key
293
+ * and returns a Promise that resolves to { file, key, ..rest }
294
+ * regardless if processFile is defined and if it is sync or async
295
+ */
296
+ const resolveFile = ({ processFile, ...input }) => {
297
+ return new Promise((resolve, reject) => {
298
+ const result = ui.isFunction(processFile) ? processFile(input) : input;
299
+ if (result instanceof Promise) {
300
+ result.then(resolve).catch(reject);
301
+ }
302
+ else {
303
+ resolve(result);
304
+ }
305
+ });
306
+ };
307
+
308
+ const getInput = ({ accessLevel, file, key, onProgress, path, processFile, useAccelerateEndpoint, }) => {
309
+ return async () => {
310
+ const hasCallbackPath = ui.isFunction(path);
311
+ const hasStringPath = ui.isString(path);
312
+ const hasKeyInput = !!accessLevel && !hasCallbackPath;
313
+ const { file: data, key: processedKey, ...rest } = await resolveFile({ file, key, processFile });
314
+ const contentType = file.type || 'binary/octet-stream';
315
+ // IMPORTANT: always pass `...rest` here for backwards compatibility
316
+ const options = { contentType, onProgress, useAccelerateEndpoint, ...rest };
317
+ let inputResult;
318
+ if (hasKeyInput) {
319
+ // legacy handling of `path` is to prefix to `fileKey`
320
+ const resolvedKey = hasStringPath
321
+ ? `${path}${processedKey}`
322
+ : processedKey;
323
+ inputResult = {
324
+ data,
325
+ key: resolvedKey,
326
+ options: { ...options, accessLevel },
327
+ };
328
+ }
329
+ else {
330
+ const { identityId } = await auth.fetchAuthSession();
331
+ const resolvedPath = `${hasCallbackPath ? path({ identityId }) : path}${processedKey}`;
332
+ inputResult = { data, path: resolvedPath, options };
333
+ }
334
+ return inputResult;
335
+ };
336
+ };
337
+
338
+ async function uploadFile({ input, onError, onStart, onComplete, }) {
339
+ const resolvedInput = await input();
340
+ const uploadTask = storage.uploadData(resolvedInput);
341
+ const key = resolvedInput?.key ??
342
+ resolvedInput?.path;
343
+ if (ui.isFunction(onStart)) {
344
+ onStart({ key, uploadTask });
345
+ }
346
+ uploadTask.result
347
+ .then((result) => {
348
+ if (ui.isFunction(onComplete) && uploadTask.state === 'SUCCESS') {
349
+ onComplete(result);
350
+ }
351
+ })
352
+ .catch((error) => {
353
+ if (ui.isFunction(onError)) {
354
+ onError({ key, error });
355
+ }
356
+ });
357
+ return uploadTask;
358
+ }
359
+
360
+ function useUploadFiles({ accessLevel, files, isResumable, maxFileCount, onUploadError, onUploadStart, onUploadSuccess, path, processFile, setUploadingFile, setUploadProgress, setUploadSuccess, useAccelerateEndpoint, }) {
361
+ React__namespace.useEffect(() => {
362
+ const filesReadyToUpload = files.filter((file) => file.status === FileStatus.QUEUED);
363
+ if (filesReadyToUpload.length > maxFileCount) {
364
+ return;
365
+ }
366
+ for (const { file, key, id } of filesReadyToUpload) {
367
+ const onProgress = (event) => {
368
+ /**
369
+ * When a file is zero bytes, the progress.total will equal zero.
370
+ * Therefore, this will prevent a divide by zero error.
371
+ */
372
+ const progress = event.totalBytes === undefined || event.totalBytes === 0
373
+ ? 100
374
+ : Math.floor((event.transferredBytes / event.totalBytes) * 100);
375
+ setUploadProgress({ id, progress });
376
+ };
377
+ if (file) {
378
+ const input = getInput({
379
+ accessLevel,
380
+ file,
381
+ key,
382
+ onProgress,
383
+ path,
384
+ processFile,
385
+ useAccelerateEndpoint,
386
+ });
387
+ uploadFile({
388
+ input,
389
+ onComplete: (event) => {
390
+ const resolvedKey = event.key ??
391
+ event.path;
392
+ if (ui.isFunction(onUploadSuccess)) {
393
+ onUploadSuccess({ key: resolvedKey });
394
+ }
395
+ setUploadSuccess({ id, resolvedKey });
396
+ },
397
+ onError: ({ key, error }) => {
398
+ if (ui.isFunction(onUploadError)) {
399
+ onUploadError(error.message, { key });
400
+ }
401
+ },
402
+ onStart: ({ key, uploadTask }) => {
403
+ if (ui.isFunction(onUploadStart)) {
404
+ onUploadStart({ key });
405
+ }
406
+ setUploadingFile({ id, uploadTask });
407
+ },
408
+ });
409
+ }
410
+ }
411
+ }, [
412
+ files,
413
+ accessLevel,
414
+ isResumable,
415
+ setUploadProgress,
416
+ setUploadingFile,
417
+ onUploadError,
418
+ onUploadSuccess,
419
+ onUploadStart,
420
+ maxFileCount,
421
+ setUploadSuccess,
422
+ processFile,
423
+ path,
424
+ useAccelerateEndpoint,
425
+ ]);
426
+ }
427
+
428
+ function Container$1({ children, className, }) {
429
+ return React__namespace["default"].createElement(uiReact.View, { className: className }, children);
430
+ }
431
+
432
+ function DropZone$1({ children, displayText, inDropZone, onDragEnter, onDragLeave, onDragOver, onDragStart, onDrop, testId, }) {
433
+ const { dropFilesText } = displayText;
434
+ const icons = internal.useIcons('storageManager');
435
+ return (React__namespace["default"].createElement(uiReact.View, { className: ui.classNames(inDropZone &&
436
+ ui.classNameModifier(ui.ComponentClassName.FileUploaderDropZone, 'active'), ui.ComponentClassName.FileUploaderDropZone), "data-testid": testId, onDragStart: onDragStart, onDragEnter: onDragEnter, onDragLeave: onDragLeave, onDrop: onDrop, onDragOver: onDragOver },
437
+ React__namespace["default"].createElement(uiReact.View, { as: "span", "aria-hidden": true, className: ui.ComponentClassName.FileUploaderDropZoneIcon }, icons?.upload ?? React__namespace["default"].createElement(internal.IconUpload, null)),
438
+ React__namespace["default"].createElement(uiReact.Text, { className: ui.ComponentClassName.FileUploaderDropZoneText }, dropFilesText),
439
+ children));
440
+ }
441
+
442
+ const FileStatusMessage$1 = ({ errorMessage, getPausedText, getUploadingText, percentage, status, uploadSuccessfulText, }) => {
443
+ const icons = internal.useIcons('storageManager');
444
+ switch (status) {
445
+ case FileStatus.UPLOADING: {
446
+ return (React__namespace["default"].createElement(uiReact.Text, { className: ui.ComponentClassName.FileUploaderFileStatus }, getUploadingText(percentage)));
447
+ }
448
+ case FileStatus.PAUSED:
449
+ return (React__namespace["default"].createElement(uiReact.Text, { className: ui.ComponentClassName.FileUploaderFileStatus }, getPausedText(percentage)));
450
+ case FileStatus.UPLOADED:
451
+ return (React__namespace["default"].createElement(uiReact.Text, { className: ui.classNames(ui.ComponentClassName.FileUploaderFileStatus, ui.classNameModifier(ui.ComponentClassName.FileUploaderFileStatus, 'success')) },
452
+ React__namespace["default"].createElement(uiReact.View, { as: "span", fontSize: "xl" }, icons?.success ?? React__namespace["default"].createElement(internal.IconCheck, null)),
453
+ uploadSuccessfulText));
454
+ case FileStatus.ERROR:
455
+ return (React__namespace["default"].createElement(uiReact.Text, { className: ui.classNames(ui.ComponentClassName.FileUploaderFileStatus, ui.classNameModifier(ui.ComponentClassName.FileUploaderFileStatus, 'error')) },
456
+ React__namespace["default"].createElement(uiReact.View, { as: "span", fontSize: "xl" }, icons?.error ?? React__namespace["default"].createElement(internal.IconError, null)),
457
+ errorMessage));
458
+ default:
459
+ return null;
460
+ }
461
+ };
462
+
463
+ const FileRemoveButton$1 = ({ altText, onClick, }) => {
464
+ const icons = internal.useIcons('storageManager');
465
+ return (React__namespace["default"].createElement(uiReact.Button, { size: "small", onClick: onClick, testId: "storage-manager-remove-button" },
466
+ React__namespace["default"].createElement(uiReact.VisuallyHidden, null, altText),
467
+ React__namespace["default"].createElement(uiReact.View, { as: "span", "aria-hidden": true, fontSize: "medium" }, icons?.remove ?? React__namespace["default"].createElement(internal.IconClose, null))));
468
+ };
469
+
470
+ const UploadDetails$1 = ({ displayName, fileSize, }) => {
471
+ return (React__namespace["default"].createElement(React__namespace["default"].Fragment, null,
472
+ React__namespace["default"].createElement(uiReact.View, { className: ui.ComponentClassName.FileUploaderFileMain },
473
+ React__namespace["default"].createElement(uiReact.Text, { className: ui.ComponentClassName.FileUploaderFileName }, displayName)),
474
+ React__namespace["default"].createElement(uiReact.Text, { as: "span", className: ui.ComponentClassName.FileUploaderFileSize }, fileSize ? ui.humanFileSize(fileSize, true) : '')));
475
+ };
476
+
477
+ const FileThumbnail$1 = ({ fileName, isImage, url, }) => {
478
+ const icons = internal.useIcons('storageManager');
479
+ const thumbnail = isImage ? (React__namespace["default"].createElement(uiReact.Image, { alt: fileName, src: url })) : (icons?.file ?? React__namespace["default"].createElement(internal.IconFile, null));
480
+ return (React__namespace["default"].createElement(uiReact.View, { className: ui.ComponentClassName.FileUploaderFileImage }, thumbnail));
481
+ };
482
+
483
+ function FileControl$1({ onPause, onResume, displayName, errorMessage, isImage, isResumable, loaderIsDeterminate, onRemove, progress, showThumbnails = true, size, status, displayText, thumbnailUrl, }) {
484
+ const { getPausedText, getUploadingText, uploadSuccessfulText, pauseButtonText, resumeButtonText, } = displayText;
485
+ return (React__namespace["default"].createElement(uiReact.View, { className: ui.ComponentClassName.FileUploaderFile },
486
+ React__namespace["default"].createElement(uiReact.View, { className: ui.ComponentClassName.FileUploaderFileWrapper },
487
+ showThumbnails ? (React__namespace["default"].createElement(FileThumbnail$1, { isImage: isImage, fileName: displayName, url: thumbnailUrl })) : null,
488
+ React__namespace["default"].createElement(UploadDetails$1, { displayName: displayName, fileSize: size }),
489
+ status === FileStatus.UPLOADING ? (React__namespace["default"].createElement(uiReact.Loader, { className: ui.ComponentClassName.FileUploaderLoader, variation: "linear", percentage: progress, isDeterminate: loaderIsDeterminate, isPercentageTextHidden: true })) : null,
490
+ isResumable &&
491
+ (status === FileStatus.UPLOADING || status === FileStatus.PAUSED) ? (status === FileStatus.PAUSED ? (React__namespace["default"].createElement(uiReact.Button, { onClick: onResume, size: "small", variation: "link" }, resumeButtonText)) : (React__namespace["default"].createElement(uiReact.Button, { onClick: onPause, size: "small", variation: "link" }, pauseButtonText))) : null,
492
+ React__namespace["default"].createElement(FileRemoveButton$1, { altText: `Remove file ${displayName}`, onClick: onRemove })),
493
+ React__namespace["default"].createElement(FileStatusMessage$1, { uploadSuccessfulText: uploadSuccessfulText, getUploadingText: getUploadingText, getPausedText: getPausedText, status: status, errorMessage: errorMessage, percentage: progress })));
494
+ }
495
+
496
+ function FileList$1({ displayText, files, hasMaxFilesError, isResumable, onCancelUpload, onDeleteUpload, onResume, onPause, showThumbnails, maxFileCount, }) {
497
+ if (files.length < 1) {
498
+ return null;
499
+ }
500
+ const { getMaxFilesErrorText } = displayText;
501
+ const headingMaxFiles = getMaxFilesErrorText(maxFileCount);
502
+ return (React__namespace["default"].createElement(uiReact.View, { className: ui.ComponentClassName.FileUploaderFileList },
503
+ files.map((storageFile) => {
504
+ const { file, status, progress, error, key, isImage, id, uploadTask } = storageFile;
505
+ const thumbnailUrl = file && isImage ? URL.createObjectURL(file) : '';
506
+ const loaderIsDeterminate = isResumable ? progress > 0 : true;
507
+ const isUploading = status === FileStatus.UPLOADING;
508
+ const onRemove = () => {
509
+ if (isResumable &&
510
+ (status === FileStatus.UPLOADING || status === FileStatus.PAUSED) &&
511
+ uploadTask) {
512
+ onCancelUpload({ id, uploadTask });
513
+ }
514
+ else {
515
+ onDeleteUpload({ id });
516
+ }
517
+ };
518
+ const handlePauseUpload = () => {
519
+ if (uploadTask) {
520
+ onPause({ id, uploadTask });
521
+ }
522
+ };
523
+ const handleResumeUpload = () => {
524
+ if (uploadTask) {
525
+ onResume({ id, uploadTask });
526
+ }
527
+ };
528
+ return (React__namespace["default"].createElement(FileControl$1, { displayName: key, errorMessage: error, displayText: displayText, isImage: isImage, isUploading: isUploading, isResumable: isResumable, key: id, loaderIsDeterminate: loaderIsDeterminate, onRemove: onRemove, onPause: handlePauseUpload, onResume: handleResumeUpload, progress: progress, showThumbnails: showThumbnails, size: file?.size, status: status, thumbnailUrl: thumbnailUrl }));
529
+ }),
530
+ hasMaxFilesError && (React__namespace["default"].createElement(uiReact.Alert, { variation: "error", heading: headingMaxFiles }))));
531
+ }
532
+
533
+ function FileListHeader$1({ allUploadsSuccessful, displayText, fileCount, remainingFilesCount, selectedFilesCount = 0, }) {
534
+ const { getFilesUploadedText, getRemainingFilesText, getSelectedFilesText } = displayText;
535
+ return (React__namespace["default"].createElement(uiReact.Text, { className: ui.ComponentClassName.FileUploaderPreviewerText }, selectedFilesCount
536
+ ? getSelectedFilesText(selectedFilesCount)
537
+ : allUploadsSuccessful
538
+ ? getFilesUploadedText(fileCount)
539
+ : getRemainingFilesText(remainingFilesCount)));
540
+ }
541
+
542
+ function FileListFooter$1({ displayText, remainingFilesCount, onClearAll, onUploadAll, }) {
543
+ const { clearAllButtonText, getUploadButtonText } = displayText;
544
+ return (React__namespace["default"].createElement(uiReact.View, { className: ui.ComponentClassName.FileUploaderPreviewerFooter },
545
+ React__namespace["default"].createElement(uiReact.View, { className: ui.ComponentClassName.FileUploaderPreviewerActions },
546
+ React__namespace["default"].createElement(uiReact.Button, { size: "small", variation: "link", onClick: onClearAll }, clearAllButtonText),
547
+ React__namespace["default"].createElement(uiReact.Button, { size: "small", variation: "primary", onClick: onUploadAll }, getUploadButtonText(remainingFilesCount)))));
548
+ }
549
+
550
+ function FilePicker$1({ children, className = ui.ComponentClassName.FileUploaderFilePicker, size = 'small', ...props }) {
551
+ return (React__namespace["default"].createElement(uiReact.Button, { ...props, className: className, size: size }, children));
552
+ }
553
+
554
+ const logger$1 = ui.getLogger('Storage');
555
+ const MISSING_REQUIRED_PROPS_MESSAGE$1 = '`FileUploader` requires a `maxFileCount` prop to be provided.';
556
+ const ACCESS_LEVEL_WITH_PATH_CALLBACK_MESSAGE$1 = '`FileUploader` does not allow usage of a `path` callback prop with an `accessLevel` prop.';
557
+ const ACCESS_LEVEL_DEPRECATION_MESSAGE$1 = '`accessLevel` has been deprecated and will be removed in a future major version. See migration notes at https://ui.docs.amplify.aws/react/connected-components/storage/FileUploader';
558
+ const FileUploaderBase = React__namespace.forwardRef(function FileUploader({ acceptedFileTypes = [], accessLevel, autoUpload = true, components, defaultFiles, displayText: overrideDisplayText, isResumable = false, maxFileCount, maxFileSize, onFileRemove, onUploadError, onUploadStart, onUploadSuccess, path, processFile, showThumbnails = true, useAccelerateEndpoint, }, ref) {
559
+ if (!maxFileCount) {
560
+ // eslint-disable-next-line no-console
561
+ console.warn(MISSING_REQUIRED_PROPS_MESSAGE$1);
562
+ }
563
+ if (accessLevel && typeof path === 'function') {
564
+ throw new Error(ACCESS_LEVEL_WITH_PATH_CALLBACK_MESSAGE$1);
565
+ }
566
+ uiReactCore.useDeprecationWarning({
567
+ message: ACCESS_LEVEL_DEPRECATION_MESSAGE$1,
568
+ shouldWarn: !!accessLevel,
569
+ });
570
+ const Components = {
571
+ Container: Container$1,
572
+ DropZone: DropZone$1,
573
+ FileList: FileList$1,
574
+ FilePicker: FilePicker$1,
575
+ FileListHeader: FileListHeader$1,
576
+ FileListFooter: FileListFooter$1,
577
+ ...components,
578
+ };
579
+ const allowMultipleFiles = maxFileCount === undefined ||
580
+ (typeof maxFileCount === 'number' && maxFileCount > 1);
581
+ const displayText = {
582
+ ...defaultFileUploaderDisplayText,
583
+ ...overrideDisplayText,
584
+ };
585
+ const { getFileSizeErrorText } = displayText;
586
+ const getMaxFileSizeErrorMessage = (file) => {
587
+ return checkMaxFileSize({
588
+ file,
589
+ maxFileSize,
590
+ getFileSizeErrorText,
591
+ });
592
+ };
593
+ const { addFiles, clearFiles, files, removeUpload, queueFiles, setUploadingFile, setUploadPaused, setUploadProgress, setUploadSuccess, setUploadResumed, } = useFileUploader(defaultFiles);
594
+ React__namespace.useImperativeHandle(ref, () => ({ clearFiles }));
595
+ const { dragState, ...dropZoneProps } = uiReactCore.useDropZone({
596
+ acceptedFileTypes,
597
+ onDropComplete: ({ acceptedFiles, rejectedFiles }) => {
598
+ if (rejectedFiles && rejectedFiles.length > 0) {
599
+ logger$1.warn('Rejected files: ', rejectedFiles);
600
+ }
601
+ // We need to filter out files by extension here,
602
+ // we don't get filenames on the drag event, only on drop
603
+ const _acceptedFiles = filterAllowedFiles(acceptedFiles, acceptedFileTypes);
604
+ addFiles({
605
+ files: _acceptedFiles,
606
+ status: autoUpload ? FileStatus.QUEUED : FileStatus.ADDED,
607
+ getFileErrorMessage: getMaxFileSizeErrorMessage,
608
+ });
609
+ },
610
+ });
611
+ useUploadFiles({
612
+ accessLevel,
613
+ files,
614
+ isResumable,
615
+ maxFileCount,
616
+ onUploadError,
617
+ onUploadSuccess,
618
+ onUploadStart,
619
+ setUploadingFile,
620
+ setUploadProgress,
621
+ setUploadSuccess,
622
+ processFile,
623
+ path,
624
+ useAccelerateEndpoint,
625
+ });
626
+ const onFilePickerChange = (event) => {
627
+ const { files } = event.target;
628
+ if (!files || files.length === 0) {
629
+ return;
630
+ }
631
+ addFiles({
632
+ files: Array.from(files),
633
+ status: autoUpload ? FileStatus.QUEUED : FileStatus.ADDED,
634
+ getFileErrorMessage: getMaxFileSizeErrorMessage,
635
+ });
636
+ };
637
+ const onClearAll = () => {
638
+ clearFiles();
639
+ };
640
+ const onUploadAll = () => {
641
+ queueFiles();
642
+ };
643
+ const onPauseUpload = ({ id, uploadTask }) => {
644
+ uploadTask.pause();
645
+ setUploadPaused({ id });
646
+ };
647
+ const onResumeUpload = ({ id, uploadTask }) => {
648
+ uploadTask.resume();
649
+ setUploadResumed({ id });
650
+ };
651
+ const onCancelUpload = ({ id, uploadTask }) => {
652
+ // At this time we don't know if the delete
653
+ // permissions are enabled (required to cancel upload),
654
+ // so we do a pause instead and remove from files
655
+ uploadTask.pause();
656
+ removeUpload({ id });
657
+ };
658
+ const onDeleteUpload = ({ id }) => {
659
+ // At this time we don't know if the delete
660
+ // permissions are enabled, so we do a soft delete
661
+ // from file list, but don't remove from storage
662
+ removeUpload({ id });
663
+ if (typeof onFileRemove === 'function') {
664
+ const file = files.find((file) => file.id === id);
665
+ if (file) {
666
+ const key = file.resolvedKey ?? file.key;
667
+ onFileRemove({ key });
668
+ }
669
+ }
670
+ };
671
+ // checks if all downloads completed to 100%
672
+ const allUploadsSuccessful = files.length === 0
673
+ ? false
674
+ : files.every((file) => file?.status === FileStatus.UPLOADED);
675
+ // Displays if over max files
676
+ const hasMaxFilesError = files.filter((file) => file.progress < 100).length > maxFileCount;
677
+ const uploadedFilesLength = files.filter((file) => file?.status === FileStatus.UPLOADED).length;
678
+ const remainingFilesCount = files.length - uploadedFilesLength;
679
+ // number of files selected for upload when autoUpload is turned off
680
+ const selectedFilesCount = autoUpload ? 0 : remainingFilesCount;
681
+ const hasFiles = files.length > 0;
682
+ const hasUploadActions = !autoUpload && remainingFilesCount > 0;
683
+ const hiddenInput = React__namespace.useRef(null);
684
+ function handleClick() {
685
+ if (hiddenInput.current) {
686
+ hiddenInput.current.click();
687
+ hiddenInput.current.value = '';
688
+ }
689
+ }
690
+ uiReactCore.useSetUserAgent({
691
+ componentName: 'FileUploader',
692
+ packageName: 'react-storage',
693
+ version: createAmplifyAuthAdapter.VERSION,
694
+ });
695
+ return (React__namespace.createElement(Components.Container, { className: `${ui.ComponentClassName.FileUploader} ${hasFiles ? ui.ComponentClassName.FileUploaderPreviewer : ''}` },
696
+ React__namespace.createElement(Components.DropZone, { inDropZone: dragState !== 'inactive', ...dropZoneProps, displayText: displayText },
697
+ React__namespace.createElement(React__namespace.Fragment, null,
698
+ React__namespace.createElement(Components.FilePicker, { onClick: handleClick }, displayText.browseFilesText),
699
+ React__namespace.createElement(uiReact.VisuallyHidden, null,
700
+ React__namespace.createElement("input", { type: "file", tabIndex: -1, ref: hiddenInput, onChange: onFilePickerChange, multiple: allowMultipleFiles, accept: acceptedFileTypes.join(',') })))),
701
+ hasFiles ? (React__namespace.createElement(Components.FileListHeader, { allUploadsSuccessful: allUploadsSuccessful, displayText: displayText, fileCount: files.length, remainingFilesCount: remainingFilesCount, selectedFilesCount: selectedFilesCount })) : null,
702
+ React__namespace.createElement(Components.FileList, { displayText: displayText, files: files, isResumable: isResumable, onCancelUpload: onCancelUpload, onDeleteUpload: onDeleteUpload, onResume: onResumeUpload, onPause: onPauseUpload, showThumbnails: showThumbnails, hasMaxFilesError: hasMaxFilesError, maxFileCount: maxFileCount }),
703
+ hasUploadActions ? (React__namespace.createElement(Components.FileListFooter, { displayText: displayText, remainingFilesCount: remainingFilesCount, onClearAll: onClearAll, onUploadAll: onUploadAll })) : null));
704
+ });
705
+ // pass an empty object as first param to avoid destructive action on `FileUploaderBase`
706
+ const FileUploader = Object.assign({}, FileUploaderBase, {
707
+ Container: Container$1,
708
+ DropZone: DropZone$1,
709
+ FileList: FileList$1,
710
+ FileListHeader: FileListHeader$1,
711
+ FileListFooter: FileListFooter$1,
712
+ FilePicker: FilePicker$1,
713
+ });
714
+
715
+ const MISSING_REQUIRED_PROP_MESSAGE = '`StorageImage` requires either an `imgKey` or `path` prop.';
716
+ const HAS_DEPRECATED_PROPS_MESSAGE = '`imgKey`, `accessLevel`, and `identityId` will be replaced with `path` in a future major version. See https://ui.docs.amplify.aws/react/connected-components/storage/storageimage#props';
717
+ const HAS_PATH_AND_KEY_MESSAGE = '`imgKey` is ignored when both `imgKey` and `path` props are provided.';
718
+ const HAS_PATH_AND_UNSUPPORTED_OPTIONS_MESSAGE = '`accessLevel` and `identityId` are ignored when the `path` prop is provided.';
719
+ const getDeprecationMessage = ({ hasImgkey, hasPath, hasDeprecatedOptions, }) => {
720
+ let message = '';
721
+ if (hasPath && hasImgkey) {
722
+ message = HAS_PATH_AND_KEY_MESSAGE;
723
+ }
724
+ else if (hasPath && hasDeprecatedOptions) {
725
+ message = HAS_PATH_AND_UNSUPPORTED_OPTIONS_MESSAGE;
726
+ }
727
+ else if (hasImgkey) {
728
+ message = HAS_DEPRECATED_PROPS_MESSAGE;
729
+ }
730
+ return message;
731
+ };
732
+ const StorageImage = ({ accessLevel, className, fallbackSrc, identityId, imgKey, path, onStorageGetError, onGetUrlError, validateObjectExistence = true, ...rest }) => {
733
+ const hasImgkey = !!imgKey;
734
+ const hasPath = !!path;
735
+ const hasDeprecatedOptions = !!accessLevel || !!identityId;
736
+ const message = getDeprecationMessage({
737
+ hasDeprecatedOptions,
738
+ hasImgkey,
739
+ hasPath,
740
+ });
741
+ internal.useDeprecationWarning({ message, shouldWarn: !!message });
742
+ if (!hasImgkey && !hasPath) {
743
+ throw new Error(MISSING_REQUIRED_PROP_MESSAGE);
744
+ }
745
+ uiReactCore.useSetUserAgent({
746
+ componentName: 'StorageImage',
747
+ packageName: 'react-storage',
748
+ version: createAmplifyAuthAdapter.VERSION,
749
+ });
750
+ const onError = onGetUrlError ?? onStorageGetError;
751
+ const input = React__namespace.useMemo(() => ({
752
+ ...(path ? { path } : { key: imgKey }),
753
+ onError,
754
+ options: {
755
+ accessLevel,
756
+ targetIdentityId: identityId,
757
+ validateObjectExistence,
758
+ },
759
+ }), [accessLevel, imgKey, identityId, onError, path, validateObjectExistence]);
760
+ const { url } = uiReactCore.useGetUrl(input);
761
+ return (React__namespace.createElement(uiReact.Image, { ...rest, className: ui.classNames(ui.ComponentClassName.StorageImage, className), src: url?.toString() ?? fallbackSrc }));
762
+ };
763
+
764
+ function Container({ children, className, }) {
765
+ return React__namespace["default"].createElement(uiReact.View, { className: className }, children);
766
+ }
767
+
768
+ function DropZone({ children, displayText, inDropZone, onDragEnter, onDragLeave, onDragOver, onDragStart, onDrop, testId, }) {
769
+ const { dropFilesText } = displayText;
770
+ const icons = internal.useIcons('storageManager');
771
+ return (React__namespace["default"].createElement(uiReact.View, { className: ui.classNames(inDropZone &&
772
+ ui.classNameModifier(ui.ComponentClassName.StorageManagerDropZone, 'active'), ui.ComponentClassName.StorageManagerDropZone), "data-testid": testId, onDragStart: onDragStart, onDragEnter: onDragEnter, onDragLeave: onDragLeave, onDrop: onDrop, onDragOver: onDragOver },
773
+ React__namespace["default"].createElement(uiReact.View, { as: "span", "aria-hidden": true, className: ui.ComponentClassName.StorageManagerDropZoneIcon }, icons?.upload ?? React__namespace["default"].createElement(internal.IconUpload, null)),
774
+ React__namespace["default"].createElement(uiReact.Text, { className: ui.ComponentClassName.StorageManagerDropZoneText }, dropFilesText),
775
+ children));
776
+ }
777
+
778
+ const FileStatusMessage = ({ errorMessage, getPausedText, getUploadingText, percentage, status, uploadSuccessfulText, }) => {
779
+ const icons = internal.useIcons('storageManager');
780
+ switch (status) {
781
+ case FileStatus.UPLOADING: {
782
+ return (React__namespace["default"].createElement(uiReact.Text, { className: ui.ComponentClassName.StorageManagerFileStatus }, getUploadingText(percentage)));
783
+ }
784
+ case FileStatus.PAUSED:
785
+ return (React__namespace["default"].createElement(uiReact.Text, { className: ui.ComponentClassName.StorageManagerFileStatus }, getPausedText(percentage)));
786
+ case FileStatus.UPLOADED:
787
+ return (React__namespace["default"].createElement(uiReact.Text, { className: ui.classNames(ui.ComponentClassName.StorageManagerFileStatus, ui.classNameModifier(ui.ComponentClassName.StorageManagerFileStatus, 'success')) },
788
+ React__namespace["default"].createElement(uiReact.View, { as: "span", fontSize: "xl" }, icons?.success ?? React__namespace["default"].createElement(internal.IconCheck, null)),
789
+ uploadSuccessfulText));
790
+ case FileStatus.ERROR:
791
+ return (React__namespace["default"].createElement(uiReact.Text, { className: ui.classNames(ui.ComponentClassName.StorageManagerFileStatus, ui.classNameModifier(ui.ComponentClassName.StorageManagerFileStatus, 'error')) },
792
+ React__namespace["default"].createElement(uiReact.View, { as: "span", fontSize: "xl" }, icons?.error ?? React__namespace["default"].createElement(internal.IconError, null)),
793
+ errorMessage));
794
+ default:
795
+ return null;
796
+ }
797
+ };
798
+
799
+ const FileRemoveButton = ({ altText, onClick, }) => {
800
+ const icons = internal.useIcons('storageManager');
801
+ return (React__namespace["default"].createElement(uiReact.Button, { size: "small", onClick: onClick, testId: "storage-manager-remove-button" },
802
+ React__namespace["default"].createElement(uiReact.VisuallyHidden, null, altText),
803
+ React__namespace["default"].createElement(uiReact.View, { as: "span", "aria-hidden": true, fontSize: "medium" }, icons?.remove ?? React__namespace["default"].createElement(internal.IconClose, null))));
804
+ };
805
+
806
+ const UploadDetails = ({ displayName, fileSize, }) => {
807
+ return (React__namespace["default"].createElement(React__namespace["default"].Fragment, null,
808
+ React__namespace["default"].createElement(uiReact.View, { className: ui.ComponentClassName.StorageManagerFileMain },
809
+ React__namespace["default"].createElement(uiReact.Text, { className: ui.ComponentClassName.StorageManagerFileName }, displayName)),
810
+ React__namespace["default"].createElement(uiReact.Text, { as: "span", className: ui.ComponentClassName.StorageManagerFileSize }, fileSize ? ui.humanFileSize(fileSize, true) : '')));
811
+ };
812
+
813
+ const FileThumbnail = ({ fileName, isImage, url, }) => {
814
+ const icons = internal.useIcons('storageManager');
815
+ const thumbnail = isImage ? (React__namespace["default"].createElement(uiReact.Image, { alt: fileName, src: url })) : (icons?.file ?? React__namespace["default"].createElement(internal.IconFile, null));
816
+ return (React__namespace["default"].createElement(uiReact.View, { className: ui.ComponentClassName.StorageManagerFileImage }, thumbnail));
817
+ };
818
+
819
+ function FileControl({ onPause, onResume, displayName, errorMessage, isImage, isResumable, loaderIsDeterminate, onRemove, progress, showThumbnails = true, size, status, displayText, thumbnailUrl, }) {
820
+ const { getPausedText, getUploadingText, uploadSuccessfulText, pauseButtonText, resumeButtonText, } = displayText;
821
+ return (React__namespace["default"].createElement(uiReact.View, { className: ui.ComponentClassName.StorageManagerFile },
822
+ React__namespace["default"].createElement(uiReact.View, { className: ui.ComponentClassName.StorageManagerFileWrapper },
823
+ showThumbnails ? (React__namespace["default"].createElement(FileThumbnail, { isImage: isImage, fileName: displayName, url: thumbnailUrl })) : null,
824
+ React__namespace["default"].createElement(UploadDetails, { displayName: displayName, fileSize: size }),
825
+ status === FileStatus.UPLOADING ? (React__namespace["default"].createElement(uiReact.Loader, { className: ui.ComponentClassName.StorageManagerLoader, variation: "linear", percentage: progress, isDeterminate: loaderIsDeterminate, isPercentageTextHidden: true })) : null,
826
+ isResumable &&
827
+ (status === FileStatus.UPLOADING || status === FileStatus.PAUSED) ? (status === FileStatus.PAUSED ? (React__namespace["default"].createElement(uiReact.Button, { onClick: onResume, size: "small", variation: "link" }, resumeButtonText)) : (React__namespace["default"].createElement(uiReact.Button, { onClick: onPause, size: "small", variation: "link" }, pauseButtonText))) : null,
828
+ React__namespace["default"].createElement(FileRemoveButton, { altText: `Remove file ${displayName}`, onClick: onRemove })),
829
+ React__namespace["default"].createElement(FileStatusMessage, { uploadSuccessfulText: uploadSuccessfulText, getUploadingText: getUploadingText, getPausedText: getPausedText, status: status, errorMessage: errorMessage, percentage: progress })));
830
+ }
831
+
832
+ function FileList({ displayText, files, hasMaxFilesError, isResumable, onCancelUpload, onDeleteUpload, onResume, onPause, showThumbnails, maxFileCount, }) {
833
+ if (files.length < 1) {
834
+ return null;
835
+ }
836
+ const { getMaxFilesErrorText } = displayText;
837
+ const headingMaxFiles = getMaxFilesErrorText(maxFileCount);
838
+ return (React__namespace["default"].createElement(uiReact.View, { className: ui.ComponentClassName.StorageManagerFileList },
839
+ files.map((storageFile) => {
840
+ const { file, status, progress, error, key, isImage, id, uploadTask } = storageFile;
841
+ const thumbnailUrl = file && isImage ? URL.createObjectURL(file) : '';
842
+ const loaderIsDeterminate = isResumable ? progress > 0 : true;
843
+ const isUploading = status === FileStatus.UPLOADING;
844
+ const onRemove = () => {
845
+ if (isResumable &&
846
+ (status === FileStatus.UPLOADING || status === FileStatus.PAUSED) &&
847
+ uploadTask) {
848
+ onCancelUpload({ id, uploadTask });
849
+ }
850
+ else {
851
+ onDeleteUpload({ id });
852
+ }
853
+ };
854
+ const handlePauseUpload = () => {
855
+ if (uploadTask) {
856
+ onPause({ id, uploadTask });
857
+ }
858
+ };
859
+ const handleResumeUpload = () => {
860
+ if (uploadTask) {
861
+ onResume({ id, uploadTask });
862
+ }
863
+ };
864
+ return (React__namespace["default"].createElement(FileControl, { displayName: key, errorMessage: error, displayText: displayText, isImage: isImage, isUploading: isUploading, isResumable: isResumable, key: id, loaderIsDeterminate: loaderIsDeterminate, onRemove: onRemove, onPause: handlePauseUpload, onResume: handleResumeUpload, progress: progress, showThumbnails: showThumbnails, size: file?.size, status: status, thumbnailUrl: thumbnailUrl }));
865
+ }),
866
+ hasMaxFilesError && (React__namespace["default"].createElement(uiReact.Alert, { variation: "error", heading: headingMaxFiles }))));
867
+ }
868
+
869
+ function FileListHeader({ allUploadsSuccessful, displayText, fileCount, remainingFilesCount, selectedFilesCount = 0, }) {
870
+ const { getFilesUploadedText, getRemainingFilesText, getSelectedFilesText } = displayText;
871
+ return (React__namespace["default"].createElement(uiReact.Text, { className: ui.ComponentClassName.StorageManagerPreviewerText }, selectedFilesCount
872
+ ? getSelectedFilesText(selectedFilesCount)
873
+ : allUploadsSuccessful
874
+ ? getFilesUploadedText(fileCount)
875
+ : getRemainingFilesText(remainingFilesCount)));
876
+ }
877
+
878
+ function FileListFooter({ displayText, remainingFilesCount, onClearAll, onUploadAll, }) {
879
+ const { clearAllButtonText, getUploadButtonText } = displayText;
880
+ return (React__namespace["default"].createElement(uiReact.View, { className: ui.ComponentClassName.StorageManagerPreviewerFooter },
881
+ React__namespace["default"].createElement(uiReact.View, { className: ui.ComponentClassName.StorageManagerPreviewerActions },
882
+ React__namespace["default"].createElement(uiReact.Button, { size: "small", variation: "link", onClick: onClearAll }, clearAllButtonText),
883
+ React__namespace["default"].createElement(uiReact.Button, { size: "small", variation: "primary", onClick: onUploadAll }, getUploadButtonText(remainingFilesCount)))));
884
+ }
885
+
886
+ function FilePicker({ children, className = ui.ComponentClassName.StorageManagerFilePicker, size = 'small', ...props }) {
887
+ return (React__namespace["default"].createElement(uiReact.Button, { ...props, className: className, size: size }, children));
888
+ }
889
+
890
+ const logger = ui.getLogger('Storage');
891
+ const MISSING_REQUIRED_PROPS_MESSAGE = '`StorageManager` requires a `maxFileCount` prop to be provided.';
892
+ const ACCESS_LEVEL_WITH_PATH_CALLBACK_MESSAGE = '`StorageManager` does not allow usage of a `path` callback prop with an `accessLevel` prop.';
893
+ const ACCESS_LEVEL_DEPRECATION_MESSAGE = '`accessLevel` has been deprecated and will be removed in a future major version. See migration notes at https://ui.docs.amplify.aws/react/connected-components/storage/storagemanager';
894
+ const StorageManagerBase = React__namespace.forwardRef(function StorageManager({ acceptedFileTypes = [], accessLevel, autoUpload = true, components, defaultFiles, displayText: overrideDisplayText, isResumable = false, maxFileCount, maxFileSize, onFileRemove, onUploadError, onUploadStart, onUploadSuccess, path, processFile, showThumbnails = true, useAccelerateEndpoint, }, ref) {
895
+ uiReactCore.useDeprecationWarning({
896
+ message: 'The `StorageManager` component has been renamed as the `FileUploader` component.',
897
+ shouldWarn: false,
898
+ });
899
+ if (!maxFileCount) {
900
+ // eslint-disable-next-line no-console
901
+ console.warn(MISSING_REQUIRED_PROPS_MESSAGE);
902
+ }
903
+ if (accessLevel && typeof path === 'function') {
904
+ throw new Error(ACCESS_LEVEL_WITH_PATH_CALLBACK_MESSAGE);
905
+ }
906
+ uiReactCore.useDeprecationWarning({
907
+ message: ACCESS_LEVEL_DEPRECATION_MESSAGE,
908
+ shouldWarn: !!accessLevel,
909
+ });
910
+ const Components = {
911
+ Container,
912
+ DropZone,
913
+ FileList,
914
+ FilePicker,
915
+ FileListHeader,
916
+ FileListFooter,
917
+ ...components,
918
+ };
919
+ const allowMultipleFiles = maxFileCount === undefined ||
920
+ (typeof maxFileCount === 'number' && maxFileCount > 1);
921
+ const displayText = {
922
+ ...defaultFileUploaderDisplayText,
923
+ ...overrideDisplayText,
924
+ };
925
+ const { getFileSizeErrorText } = displayText;
926
+ const getMaxFileSizeErrorMessage = (file) => {
927
+ return checkMaxFileSize({
928
+ file,
929
+ maxFileSize,
930
+ getFileSizeErrorText,
931
+ });
932
+ };
933
+ const { addFiles, clearFiles, files, removeUpload, queueFiles, setUploadingFile, setUploadPaused, setUploadProgress, setUploadSuccess, setUploadResumed, } = useFileUploader(defaultFiles);
934
+ React__namespace.useImperativeHandle(ref, () => ({ clearFiles }));
935
+ const { dragState, ...dropZoneProps } = uiReactCore.useDropZone({
936
+ acceptedFileTypes,
937
+ onDropComplete: ({ acceptedFiles, rejectedFiles }) => {
938
+ if (rejectedFiles && rejectedFiles.length > 0) {
939
+ logger.warn('Rejected files: ', rejectedFiles);
940
+ }
941
+ // We need to filter out files by extension here,
942
+ // we don't get filenames on the drag event, only on drop
943
+ const _acceptedFiles = filterAllowedFiles(acceptedFiles, acceptedFileTypes);
944
+ addFiles({
945
+ files: _acceptedFiles,
946
+ status: autoUpload ? FileStatus.QUEUED : FileStatus.ADDED,
947
+ getFileErrorMessage: getMaxFileSizeErrorMessage,
948
+ });
949
+ },
950
+ });
951
+ useUploadFiles({
952
+ accessLevel,
953
+ files,
954
+ isResumable,
955
+ maxFileCount,
956
+ onUploadError,
957
+ onUploadSuccess,
958
+ onUploadStart,
959
+ setUploadingFile,
960
+ setUploadProgress,
961
+ setUploadSuccess,
962
+ processFile,
963
+ path,
964
+ useAccelerateEndpoint,
965
+ });
966
+ const onFilePickerChange = (event) => {
967
+ const { files } = event.target;
968
+ if (!files || files.length === 0) {
969
+ return;
970
+ }
971
+ addFiles({
972
+ files: Array.from(files),
973
+ status: autoUpload ? FileStatus.QUEUED : FileStatus.ADDED,
974
+ getFileErrorMessage: getMaxFileSizeErrorMessage,
975
+ });
976
+ };
977
+ const onClearAll = () => {
978
+ clearFiles();
979
+ };
980
+ const onUploadAll = () => {
981
+ queueFiles();
982
+ };
983
+ const onPauseUpload = ({ id, uploadTask }) => {
984
+ uploadTask.pause();
985
+ setUploadPaused({ id });
986
+ };
987
+ const onResumeUpload = ({ id, uploadTask }) => {
988
+ uploadTask.resume();
989
+ setUploadResumed({ id });
990
+ };
991
+ const onCancelUpload = ({ id, uploadTask }) => {
992
+ // At this time we don't know if the delete
993
+ // permissions are enabled (required to cancel upload),
994
+ // so we do a pause instead and remove from files
995
+ uploadTask.pause();
996
+ removeUpload({ id });
997
+ };
998
+ const onDeleteUpload = ({ id }) => {
999
+ // At this time we don't know if the delete
1000
+ // permissions are enabled, so we do a soft delete
1001
+ // from file list, but don't remove from storage
1002
+ removeUpload({ id });
1003
+ if (typeof onFileRemove === 'function') {
1004
+ const file = files.find((file) => file.id === id);
1005
+ if (file) {
1006
+ const key = file.resolvedKey ?? file.key;
1007
+ onFileRemove({ key });
1008
+ }
1009
+ }
1010
+ };
1011
+ // checks if all downloads completed to 100%
1012
+ const allUploadsSuccessful = files.length === 0
1013
+ ? false
1014
+ : files.every((file) => file?.status === FileStatus.UPLOADED);
1015
+ // Displays if over max files
1016
+ const hasMaxFilesError = files.filter((file) => file.progress < 100).length > maxFileCount;
1017
+ const uploadedFilesLength = files.filter((file) => file?.status === FileStatus.UPLOADED).length;
1018
+ const remainingFilesCount = files.length - uploadedFilesLength;
1019
+ // number of files selected for upload when autoUpload is turned off
1020
+ const selectedFilesCount = autoUpload ? 0 : remainingFilesCount;
1021
+ const hasFiles = files.length > 0;
1022
+ const hasUploadActions = !autoUpload && remainingFilesCount > 0;
1023
+ const hiddenInput = React__namespace.useRef(null);
1024
+ function handleClick() {
1025
+ if (hiddenInput.current) {
1026
+ hiddenInput.current.click();
1027
+ hiddenInput.current.value = '';
1028
+ }
1029
+ }
1030
+ uiReactCore.useSetUserAgent({
1031
+ componentName: 'StorageManager',
1032
+ packageName: 'react-storage',
1033
+ version: createAmplifyAuthAdapter.VERSION,
1034
+ });
1035
+ return (React__namespace.createElement(Components.Container, { className: `${ui.ComponentClassName.StorageManager} ${hasFiles ? ui.ComponentClassName.StorageManagerPreviewer : ''}` },
1036
+ React__namespace.createElement(Components.DropZone, { inDropZone: dragState !== 'inactive', ...dropZoneProps, displayText: displayText },
1037
+ React__namespace.createElement(React__namespace.Fragment, null,
1038
+ React__namespace.createElement(Components.FilePicker, { onClick: handleClick }, displayText.browseFilesText),
1039
+ React__namespace.createElement(uiReact.VisuallyHidden, null,
1040
+ React__namespace.createElement("input", { type: "file", tabIndex: -1, ref: hiddenInput, onChange: onFilePickerChange, multiple: allowMultipleFiles, accept: acceptedFileTypes.join(',') })))),
1041
+ hasFiles ? (React__namespace.createElement(Components.FileListHeader, { allUploadsSuccessful: allUploadsSuccessful, displayText: displayText, fileCount: files.length, remainingFilesCount: remainingFilesCount, selectedFilesCount: selectedFilesCount })) : null,
1042
+ React__namespace.createElement(Components.FileList, { displayText: displayText, files: files, isResumable: isResumable, onCancelUpload: onCancelUpload, onDeleteUpload: onDeleteUpload, onResume: onResumeUpload, onPause: onPauseUpload, showThumbnails: showThumbnails, hasMaxFilesError: hasMaxFilesError, maxFileCount: maxFileCount }),
1043
+ hasUploadActions ? (React__namespace.createElement(Components.FileListFooter, { displayText: displayText, remainingFilesCount: remainingFilesCount, onClearAll: onClearAll, onUploadAll: onUploadAll })) : null));
1044
+ });
1045
+ // pass an empty object as first param to avoid destructive action on `StorageManagerBase`
1046
+ const StorageManager = Object.assign({}, StorageManagerBase, {
1047
+ Container,
1048
+ DropZone,
1049
+ FileList,
1050
+ FileListHeader,
1051
+ FileListFooter,
1052
+ FilePicker,
1053
+ });
1054
+
1055
+ const StorageBrowser = ({ views, displayText, }) => {
1056
+ const { StorageBrowser } = React__namespace["default"].useRef(createAmplifyAuthAdapter.createStorageBrowser({ config: createAmplifyAuthAdapter.createAmplifyAuthAdapter() })).current;
1057
+ return React__namespace["default"].createElement(StorageBrowser, { views: views, displayText: displayText });
1058
+ };
1059
+
1060
+ exports.FileUploader = FileUploader;
1061
+ exports.StorageBrowser = StorageBrowser;
1062
+ exports.StorageImage = StorageImage;
1063
+ exports.StorageManager = StorageManager;