@aws-amplify/ui-react-storage 3.10.1 → 3.10.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -15
- package/dist/browser.js +1 -1
- package/dist/{createStorageBrowser-BfRLqdUj.js → createStorageBrowser-B75dAYRb.js} +52 -55
- package/dist/esm/components/StorageBrowser/tasks/useProcessTasks.mjs +20 -11
- package/dist/esm/components/StorageBrowser/useAction/createEnhancedListHandler.mjs +20 -101
- package/dist/esm/components/StorageBrowser/useAction/searchItems.mjs +74 -0
- package/dist/esm/components/StorageBrowser/useAction/useHandler.mjs +5 -5
- package/dist/esm/components/StorageBrowser/useAction/useListLocationItems.mjs +1 -0
- package/dist/esm/components/StorageBrowser/views/LocationActionView/CopyView/useFolders.mjs +1 -2
- package/dist/esm/components/StorageBrowser/views/LocationDetailView/useLocationDetailView.mjs +1 -2
- package/dist/esm/components/StorageBrowser/views/LocationsView/useLocationsView.mjs +1 -2
- package/dist/esm/version.mjs +1 -1
- package/dist/index.js +1 -1
- package/dist/types/components/FileUploader/FileUploader.d.ts +1 -1
- package/dist/types/components/FileUploader/hooks/index.d.ts +2 -1
- package/dist/types/components/FileUploader/hooks/useFileUploader/actions.d.ts +2 -2
- package/dist/types/components/FileUploader/hooks/useFileUploader/index.d.ts +2 -1
- package/dist/types/components/FileUploader/hooks/useFileUploader/reducer.d.ts +1 -1
- package/dist/types/components/FileUploader/hooks/useFileUploader/types.d.ts +2 -2
- package/dist/types/components/FileUploader/hooks/useFileUploader/useFileUploader.d.ts +4 -3
- package/dist/types/components/FileUploader/hooks/useUploadFiles/index.d.ts +2 -1
- package/dist/types/components/FileUploader/hooks/useUploadFiles/useUploadFiles.d.ts +3 -3
- package/dist/types/components/FileUploader/index.d.ts +2 -2
- package/dist/types/components/FileUploader/types.d.ts +3 -3
- package/dist/types/components/FileUploader/ui/Container/index.d.ts +2 -1
- package/dist/types/components/FileUploader/ui/DropZone/DropZone.d.ts +1 -1
- package/dist/types/components/FileUploader/ui/DropZone/index.d.ts +1 -1
- package/dist/types/components/FileUploader/ui/DropZone/types.d.ts +1 -1
- package/dist/types/components/FileUploader/ui/FileList/FileControl.d.ts +1 -1
- package/dist/types/components/FileUploader/ui/FileList/FileDetails.d.ts +1 -1
- package/dist/types/components/FileUploader/ui/FileList/FileList.d.ts +1 -1
- package/dist/types/components/FileUploader/ui/FileList/FileRemoveButton.d.ts +1 -1
- package/dist/types/components/FileUploader/ui/FileList/FileStatusMessage.d.ts +1 -1
- package/dist/types/components/FileUploader/ui/FileList/FileThumbnail.d.ts +1 -1
- package/dist/types/components/FileUploader/ui/FileList/index.d.ts +1 -1
- package/dist/types/components/FileUploader/ui/FileList/types.d.ts +2 -2
- package/dist/types/components/FileUploader/ui/FileListFooter/FileListFooter.d.ts +1 -1
- package/dist/types/components/FileUploader/ui/FileListFooter/index.d.ts +2 -1
- package/dist/types/components/FileUploader/ui/FileListHeader/FileListHeader.d.ts +1 -1
- package/dist/types/components/FileUploader/ui/FileListHeader/index.d.ts +2 -1
- package/dist/types/components/FileUploader/ui/FilePicker/FilePicker.d.ts +1 -1
- package/dist/types/components/FileUploader/ui/FilePicker/index.d.ts +2 -1
- package/dist/types/components/FileUploader/ui/index.d.ts +12 -6
- package/dist/types/components/FileUploader/utils/displayText.d.ts +1 -1
- package/dist/types/components/FileUploader/utils/getInput.d.ts +3 -3
- package/dist/types/components/FileUploader/utils/index.d.ts +4 -2
- package/dist/types/components/FileUploader/utils/resolveFile.d.ts +1 -1
- package/dist/types/components/FileUploader/utils/uploadFile.d.ts +1 -1
- package/dist/types/components/StorageBrowser/ErrorBoundary/index.d.ts +2 -1
- package/dist/types/components/StorageBrowser/StorageBrowserAmplify.d.ts +1 -1
- package/dist/types/components/StorageBrowser/actions/__testUtils__/permissions.d.ts +1 -1
- package/dist/types/components/StorageBrowser/actions/configs/context.d.ts +1 -1
- package/dist/types/components/StorageBrowser/actions/configs/defaults.d.ts +1 -1
- package/dist/types/components/StorageBrowser/actions/configs/index.d.ts +4 -2
- package/dist/types/components/StorageBrowser/actions/configs/types.d.ts +2 -2
- package/dist/types/components/StorageBrowser/actions/configs/utils.d.ts +1 -1
- package/dist/types/components/StorageBrowser/actions/handlers/copy.d.ts +1 -1
- package/dist/types/components/StorageBrowser/actions/handlers/createFolder.d.ts +1 -1
- package/dist/types/components/StorageBrowser/actions/handlers/defaults.d.ts +6 -6
- package/dist/types/components/StorageBrowser/actions/handlers/delete.d.ts +1 -1
- package/dist/types/components/StorageBrowser/actions/handlers/download.d.ts +1 -1
- package/dist/types/components/StorageBrowser/actions/handlers/listLocationItems.d.ts +2 -2
- package/dist/types/components/StorageBrowser/actions/handlers/listLocations.d.ts +1 -1
- package/dist/types/components/StorageBrowser/actions/handlers/types.d.ts +1 -1
- package/dist/types/components/StorageBrowser/actions/handlers/upload.d.ts +1 -1
- package/dist/types/components/StorageBrowser/actions/handlers/utils.d.ts +3 -3
- package/dist/types/components/StorageBrowser/actions/index.d.ts +4 -2
- package/dist/types/components/StorageBrowser/adapters/createAmplifyAuthAdapter/createAmplifyAuthAdapter.d.ts +1 -1
- package/dist/types/components/StorageBrowser/adapters/createAmplifyAuthAdapter/createAmplifyListLocationsHandler.d.ts +1 -1
- package/dist/types/components/StorageBrowser/adapters/createAmplifyAuthAdapter/getPaginatedLocations.d.ts +1 -1
- package/dist/types/components/StorageBrowser/adapters/createManagedAuthAdapter/createLocationCredentialsHandler.d.ts +2 -2
- package/dist/types/components/StorageBrowser/adapters/createManagedAuthAdapter/createManagedAuthAdapter.d.ts +1 -1
- package/dist/types/components/StorageBrowser/adapters/index.d.ts +1 -1
- package/dist/types/components/StorageBrowser/adapters/permissionParsers.d.ts +2 -2
- package/dist/types/components/StorageBrowser/adapters/types.d.ts +3 -3
- package/dist/types/components/StorageBrowser/components/ComponentsProvider.d.ts +1 -1
- package/dist/types/components/StorageBrowser/components/base/DropdownMenu.d.ts +1 -1
- package/dist/types/components/StorageBrowser/components/base/Field.d.ts +1 -1
- package/dist/types/components/StorageBrowser/components/base/PaginationButton.d.ts +1 -1
- package/dist/types/components/StorageBrowser/components/base/Table.d.ts +1 -1
- package/dist/types/components/StorageBrowser/components/composables/ActionDestination.d.ts +1 -1
- package/dist/types/components/StorageBrowser/components/composables/ActionsList.d.ts +1 -1
- package/dist/types/components/StorageBrowser/components/composables/DataTable/DataTable.d.ts +2 -2
- package/dist/types/components/StorageBrowser/components/composables/DataTable/dataCells/ButtonDataCell.d.ts +1 -1
- package/dist/types/components/StorageBrowser/components/composables/DataTable/dataCells/TextDataCell.d.ts +1 -1
- package/dist/types/components/StorageBrowser/components/composables/DataTable/headers/SortHeader.d.ts +1 -1
- package/dist/types/components/StorageBrowser/components/composables/DataTable/index.d.ts +3 -2
- package/dist/types/components/StorageBrowser/components/composables/DataTable/types.d.ts +8 -8
- package/dist/types/components/StorageBrowser/components/composables/Message.d.ts +1 -1
- package/dist/types/components/StorageBrowser/components/composables/context.d.ts +1 -1
- package/dist/types/components/StorageBrowser/components/composables/defaults.d.ts +1 -1
- package/dist/types/components/StorageBrowser/components/composables/index.d.ts +1 -1
- package/dist/types/components/StorageBrowser/components/composables/types.d.ts +20 -20
- package/dist/types/components/StorageBrowser/components/defaults.d.ts +1 -1
- package/dist/types/components/StorageBrowser/components/elements/IconElement.d.ts +2 -1
- package/dist/types/components/StorageBrowser/components/elements/defaults.d.ts +1 -1
- package/dist/types/components/StorageBrowser/components/elements/index.d.ts +4 -2
- package/dist/types/components/StorageBrowser/components/index.d.ts +9 -6
- package/dist/types/components/StorageBrowser/components/types.d.ts +1 -1
- package/dist/types/components/StorageBrowser/configuration/context.d.ts +1 -1
- package/dist/types/components/StorageBrowser/configuration/createConfigurationProvider.d.ts +1 -1
- package/dist/types/components/StorageBrowser/configuration/index.d.ts +1 -1
- package/dist/types/components/StorageBrowser/configuration/types.d.ts +3 -3
- package/dist/types/components/StorageBrowser/configuration/useGetActionInputCallback.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/context.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/compareFunctions/compareButtonData.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/compareFunctions/compareDateData.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/compareFunctions/compareNumberData.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/compareFunctions/compareTextData.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/getNavigationItems.d.ts +2 -2
- package/dist/types/components/StorageBrowser/controls/hooks/getNavigationParts.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/useActionCancel.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/useActionDestination.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/useActionExit.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/useActionStart.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/useActionsList.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/useAddFiles.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/useAddFolder.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/useDataRefresh.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/useDataTable.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/useDropZone.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/useFolderNameField.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/useLoadingIndicator.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/useMessage.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/useNavigation.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/useOverwriteToggle.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/usePagination.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/useResolvedComposable.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/useSearchField.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/useSearchSubfoldersToggle.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/useStatusDisplay.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/hooks/useTitle.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/index.d.ts +1 -1
- package/dist/types/components/StorageBrowser/controls/types.d.ts +4 -4
- package/dist/types/components/StorageBrowser/createStorageBrowser/createProvider.d.ts +1 -1
- package/dist/types/components/StorageBrowser/createStorageBrowser/createStorageBrowser.d.ts +1 -1
- package/dist/types/components/StorageBrowser/createStorageBrowser/index.d.ts +1 -1
- package/dist/types/components/StorageBrowser/createStorageBrowser/types.d.ts +9 -9
- package/dist/types/components/StorageBrowser/credentials/context.d.ts +1 -1
- package/dist/types/components/StorageBrowser/credentials/credentialsStore/create.d.ts +1 -1
- package/dist/types/components/StorageBrowser/credentials/credentialsStore/index.d.ts +1 -1
- package/dist/types/components/StorageBrowser/credentials/credentialsStore/registry.d.ts +2 -2
- package/dist/types/components/StorageBrowser/credentials/credentialsStore/store.d.ts +2 -2
- package/dist/types/components/StorageBrowser/credentials/credentialsStore/types.d.ts +2 -2
- package/dist/types/components/StorageBrowser/credentials/index.d.ts +3 -2
- package/dist/types/components/StorageBrowser/credentials/types.d.ts +4 -4
- package/dist/types/components/StorageBrowser/credentials/useCredentialsStore.d.ts +2 -2
- package/dist/types/components/StorageBrowser/displayText/context.d.ts +1 -1
- package/dist/types/components/StorageBrowser/displayText/index.d.ts +1 -1
- package/dist/types/components/StorageBrowser/displayText/libraries/en/copyView.d.ts +1 -1
- package/dist/types/components/StorageBrowser/displayText/libraries/en/createFolderView.d.ts +1 -1
- package/dist/types/components/StorageBrowser/displayText/libraries/en/default.d.ts +1 -1
- package/dist/types/components/StorageBrowser/displayText/libraries/en/deleteView.d.ts +1 -1
- package/dist/types/components/StorageBrowser/displayText/libraries/en/locationDetailView.d.ts +1 -1
- package/dist/types/components/StorageBrowser/displayText/libraries/en/locationsView.d.ts +1 -1
- package/dist/types/components/StorageBrowser/displayText/libraries/en/shared.d.ts +1 -1
- package/dist/types/components/StorageBrowser/displayText/libraries/en/uploadView.d.ts +1 -1
- package/dist/types/components/StorageBrowser/displayText/types.d.ts +5 -5
- package/dist/types/components/StorageBrowser/displayText/utils.d.ts +1 -1
- package/dist/types/components/StorageBrowser/files/context.d.ts +1 -1
- package/dist/types/components/StorageBrowser/files/types.d.ts +1 -1
- package/dist/types/components/StorageBrowser/files/utils.d.ts +2 -2
- package/dist/types/components/StorageBrowser/index.d.ts +12 -7
- package/dist/types/components/StorageBrowser/locationItems/context.d.ts +1 -1
- package/dist/types/components/StorageBrowser/locationItems/index.d.ts +2 -1
- package/dist/types/components/StorageBrowser/storage-internal.d.ts +2 -1
- package/dist/types/components/StorageBrowser/store/constants.d.ts +1 -1
- package/dist/types/components/StorageBrowser/store/context.d.ts +1 -1
- package/dist/types/components/StorageBrowser/store/index.d.ts +1 -1
- package/dist/types/components/StorageBrowser/store/storeReducer.d.ts +1 -1
- package/dist/types/components/StorageBrowser/store/types.d.ts +2 -2
- package/dist/types/components/StorageBrowser/store/useStoreReducer.d.ts +1 -1
- package/dist/types/components/StorageBrowser/store/utils.d.ts +2 -2
- package/dist/types/components/StorageBrowser/store/validateStoreProps.d.ts +1 -1
- package/dist/types/components/StorageBrowser/tasks/constants.d.ts +1 -1
- package/dist/types/components/StorageBrowser/tasks/index.d.ts +1 -1
- package/dist/types/components/StorageBrowser/tasks/types.d.ts +10 -3
- package/dist/types/components/StorageBrowser/tasks/useProcessTasks.d.ts +2 -2
- package/dist/types/components/StorageBrowser/tasks/utils.d.ts +1 -1
- package/dist/types/components/StorageBrowser/useAction/context.d.ts +1 -1
- package/dist/types/components/StorageBrowser/useAction/createEnhancedListHandler.d.ts +19 -41
- package/dist/types/components/StorageBrowser/useAction/index.d.ts +1 -1
- package/dist/types/components/StorageBrowser/useAction/searchItems.d.ts +24 -0
- package/dist/types/components/StorageBrowser/useAction/types.d.ts +5 -5
- package/dist/types/components/StorageBrowser/useAction/useAction.d.ts +1 -1
- package/dist/types/components/StorageBrowser/useAction/useHandler.d.ts +2 -2
- package/dist/types/components/StorageBrowser/useAction/useList.d.ts +3 -3
- package/dist/types/components/StorageBrowser/useAction/useListFolderItems.d.ts +4 -8
- package/dist/types/components/StorageBrowser/useAction/useListLocationItems.d.ts +5 -5
- package/dist/types/components/StorageBrowser/useAction/useListLocations.d.ts +4 -4
- package/dist/types/components/StorageBrowser/useAction/utils.d.ts +2 -2
- package/dist/types/components/StorageBrowser/validators/assertLocationData.d.ts +1 -1
- package/dist/types/components/StorageBrowser/validators/assertRegisterAuthListener.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationActionView/CopyView/CopyView.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationActionView/CopyView/CopyViewProvider.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationActionView/CopyView/FoldersMessageControl.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationActionView/CopyView/FoldersPaginationControl.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationActionView/CopyView/FoldersTableControl.d.ts +2 -2
- package/dist/types/components/StorageBrowser/views/LocationActionView/CopyView/getDestinationPickerTableData.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationActionView/CopyView/types.d.ts +3 -3
- package/dist/types/components/StorageBrowser/views/LocationActionView/CopyView/useCopyView.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationActionView/CopyView/useFolders.d.ts +2 -2
- package/dist/types/components/StorageBrowser/views/LocationActionView/CreateFolderView/CreateFolderView.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationActionView/CreateFolderView/CreateFolderViewProvider.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationActionView/CreateFolderView/types.d.ts +2 -2
- package/dist/types/components/StorageBrowser/views/LocationActionView/CreateFolderView/useCreateFolderView.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationActionView/DeleteView/DeleteView.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationActionView/DeleteView/DeleteViewProvider.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationActionView/DeleteView/types.d.ts +2 -2
- package/dist/types/components/StorageBrowser/views/LocationActionView/DeleteView/useDeleteView.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationActionView/LocationActionView.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationActionView/UploadView/UploadView.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationActionView/UploadView/UploadViewProvider.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationActionView/UploadView/types.d.ts +3 -3
- package/dist/types/components/StorageBrowser/views/LocationActionView/UploadView/useUploadView.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationActionView/index.d.ts +9 -5
- package/dist/types/components/StorageBrowser/views/LocationActionView/types.d.ts +4 -4
- package/dist/types/components/StorageBrowser/views/LocationDetailView/LocationDetailView.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationDetailView/LocationDetailViewProvider.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/constants.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/getFileRowContent.d.ts +2 -2
- package/dist/types/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/getFolderRowContent.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/getHeaders.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/getLocationDetailViewTableData.d.ts +4 -4
- package/dist/types/components/StorageBrowser/views/LocationDetailView/getLocationDetailViewTableData/types.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationDetailView/index.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationDetailView/types.d.ts +4 -4
- package/dist/types/components/StorageBrowser/views/LocationDetailView/useLocationDetailView.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationsView/LocationsView.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationsView/LocationsViewProvider.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationsView/getLocationsViewTableData/getHeaders.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationsView/getLocationsViewTableData/getLocationsViewTableData.d.ts +3 -3
- package/dist/types/components/StorageBrowser/views/LocationsView/getLocationsViewTableData/types.d.ts +2 -2
- package/dist/types/components/StorageBrowser/views/LocationsView/index.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/LocationsView/types.d.ts +2 -2
- package/dist/types/components/StorageBrowser/views/LocationsView/useLocationsView.d.ts +2 -2
- package/dist/types/components/StorageBrowser/views/context/actionViews.d.ts +2 -2
- package/dist/types/components/StorageBrowser/views/context/getViews.d.ts +3 -3
- package/dist/types/components/StorageBrowser/views/context/primaryViews.d.ts +2 -2
- package/dist/types/components/StorageBrowser/views/context/types.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/context/views.d.ts +3 -3
- package/dist/types/components/StorageBrowser/views/hooks/useResolveTableData/index.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/hooks/useResolveTableData/types.d.ts +2 -2
- package/dist/types/components/StorageBrowser/views/hooks/useResolveTableData/useResolveTableData.d.ts +2 -2
- package/dist/types/components/StorageBrowser/views/index.d.ts +8 -4
- package/dist/types/components/StorageBrowser/views/types.d.ts +5 -5
- package/dist/types/components/StorageBrowser/views/useView.d.ts +3 -3
- package/dist/types/components/StorageBrowser/views/utils/tableResolvers/__testUtils__/tasks.d.ts +2 -2
- package/dist/types/components/StorageBrowser/views/utils/tableResolvers/copyResolvers.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/utils/tableResolvers/deleteResolvers.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/utils/tableResolvers/types.d.ts +4 -4
- package/dist/types/components/StorageBrowser/views/utils/tableResolvers/uploadResolvers.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/utils/tableResolvers/utils.d.ts +2 -2
- package/dist/types/components/StorageImage/index.d.ts +1 -1
- package/dist/types/components/StorageImage/types.d.ts +3 -3
- package/dist/types/components/StorageManager/StorageManager.d.ts +1 -1
- package/dist/types/components/StorageManager/index.d.ts +2 -2
- package/dist/types/components/StorageManager/types.d.ts +2 -2
- package/dist/types/components/StorageManager/ui/Container/index.d.ts +2 -1
- package/dist/types/components/StorageManager/ui/DropZone/DropZone.d.ts +1 -1
- package/dist/types/components/StorageManager/ui/DropZone/index.d.ts +1 -1
- package/dist/types/components/StorageManager/ui/DropZone/types.d.ts +1 -1
- package/dist/types/components/StorageManager/ui/FileList/FileControl.d.ts +1 -1
- package/dist/types/components/StorageManager/ui/FileList/FileDetails.d.ts +1 -1
- package/dist/types/components/StorageManager/ui/FileList/FileList.d.ts +1 -1
- package/dist/types/components/StorageManager/ui/FileList/FileRemoveButton.d.ts +1 -1
- package/dist/types/components/StorageManager/ui/FileList/FileStatusMessage.d.ts +1 -1
- package/dist/types/components/StorageManager/ui/FileList/FileThumbnail.d.ts +1 -1
- package/dist/types/components/StorageManager/ui/FileList/index.d.ts +1 -1
- package/dist/types/components/StorageManager/ui/FileList/types.d.ts +2 -2
- package/dist/types/components/StorageManager/ui/FileListFooter/FileListFooter.d.ts +1 -1
- package/dist/types/components/StorageManager/ui/FileListFooter/index.d.ts +2 -1
- package/dist/types/components/StorageManager/ui/FileListHeader/FileListHeader.d.ts +1 -1
- package/dist/types/components/StorageManager/ui/FileListHeader/index.d.ts +2 -1
- package/dist/types/components/StorageManager/ui/FilePicker/FilePicker.d.ts +1 -1
- package/dist/types/components/StorageManager/ui/FilePicker/index.d.ts +2 -1
- package/dist/types/components/StorageManager/ui/index.d.ts +12 -6
- package/dist/types/components/index.d.ts +6 -3
- package/dist/types/index.d.ts +4 -2
- package/dist/types/version.d.ts +1 -1
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -1,23 +1,31 @@
|
|
|
1
|
-
# Amplify UI
|
|
1
|
+
# Amplify UI React Storage
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The React Storage package provides components for file storage and management in Amplify connected applications.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
2. Primitive components that create consistency across Amplify UI and allow you to build complete applications that fit your brand, like Buttons and Badges.
|
|
7
|
-
3. Data-bound components that make it easy to display dynamic data, like DataStoreCollections.
|
|
8
|
-
4. Theming capabilities that allow you to customize the appearance of Amplify UI to match your brand.
|
|
5
|
+
## Contents
|
|
9
6
|
|
|
10
|
-
|
|
7
|
+
### Core Components
|
|
11
8
|
|
|
12
|
-
-
|
|
9
|
+
- `FileUploader` - Component for uploading files
|
|
10
|
+
- `StorageImage` - Component for displaying images from storage
|
|
11
|
+
- `StorageManager` - Component for managing storage
|
|
12
|
+
- `StorageBrowser` - Component for browsing storage
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
### Props Types
|
|
15
15
|
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
16
|
+
- `FileUploaderProps` - Props for FileUploader component
|
|
17
|
+
- `StorageImageProps` - Props for StorageImage component
|
|
18
|
+
- `StorageManagerProps` - Props for StorageManager component
|
|
19
|
+
- `StorageBrowserProps` - Props for StorageBrowser component
|
|
20
|
+
- `DropZoneProps` - Props for drop zone functionality
|
|
21
|
+
- `ContainerProps` - Props for container components
|
|
22
|
+
- `FileListProps` - Props for file list components
|
|
23
|
+
- `FilePickerProps` - Props for file picker components
|
|
24
|
+
- `FileListHeaderProps` - Props for file list header components
|
|
25
|
+
- `FileListFooterProps` - Props for file list footer components
|
|
26
|
+
- `FileUploaderHandle` - React.ForwardRef handle for FileUploader component
|
|
27
|
+
- `StorageManagerHandle` - React.ForwardRef handle for StorageManager component
|
|
20
28
|
|
|
21
|
-
##
|
|
29
|
+
## React Documentation
|
|
22
30
|
|
|
23
|
-
|
|
31
|
+
- https://ui.docs.amplify.aws/react
|
package/dist/browser.js
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var internals = require('@aws-amplify/storage/internals');
|
|
6
6
|
require('@aws-amplify/ui');
|
|
7
|
-
var createStorageBrowser = require('./createStorageBrowser-
|
|
7
|
+
var createStorageBrowser = require('./createStorageBrowser-B75dAYRb.js');
|
|
8
8
|
require('aws-amplify/storage');
|
|
9
9
|
require('react');
|
|
10
10
|
require('@aws-amplify/ui-react');
|
|
@@ -32,7 +32,7 @@ function _interopNamespace(e) {
|
|
|
32
32
|
|
|
33
33
|
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
34
34
|
|
|
35
|
-
const VERSION = '3.10.
|
|
35
|
+
const VERSION = '3.10.3';
|
|
36
36
|
|
|
37
37
|
const toAccessGrantPermission = (permission) => {
|
|
38
38
|
let result = '';
|
|
@@ -1359,8 +1359,6 @@ const { ActionHandlersProvider, useActionHandlers } = uiReactCore.createContextU
|
|
|
1359
1359
|
errorMessage: '`useActionHandlers` must be called from within an `ActionHandlersProvider',
|
|
1360
1360
|
});
|
|
1361
1361
|
|
|
1362
|
-
const SEARCH_LIMIT = 10000;
|
|
1363
|
-
const SEARCH_PAGE_SIZE = 1000;
|
|
1364
1362
|
/**
|
|
1365
1363
|
* Normalizes and converts a string to lower case,
|
|
1366
1364
|
* handling Unicode characters and locale-specific case mappings.
|
|
@@ -1389,10 +1387,10 @@ function normalize(input) {
|
|
|
1389
1387
|
function caseInsensitiveIncludes(input, query) {
|
|
1390
1388
|
return normalize(input).includes(normalize(query));
|
|
1391
1389
|
}
|
|
1392
|
-
function searchItems({ prefix = '',
|
|
1390
|
+
function searchItems({ prefix = '', items, options, }) {
|
|
1393
1391
|
const { query, filterBy, groupBy } = options;
|
|
1394
1392
|
// filter keys that match `filterBy` search option
|
|
1395
|
-
const filteredItems =
|
|
1393
|
+
const filteredItems = items.filter((item) => {
|
|
1396
1394
|
const key = typeof filterBy === 'function' ? filterBy(item) : filterBy;
|
|
1397
1395
|
const path = item[key];
|
|
1398
1396
|
const suffix = path.slice(prefix.length);
|
|
@@ -1433,7 +1431,10 @@ function searchItems({ prefix = '', list, options }) {
|
|
|
1433
1431
|
}
|
|
1434
1432
|
return Array.from(uniquePaths.values());
|
|
1435
1433
|
}
|
|
1436
|
-
|
|
1434
|
+
|
|
1435
|
+
const SEARCH_LIMIT = 10000;
|
|
1436
|
+
const SEARCH_PAGE_SIZE = 1000;
|
|
1437
|
+
const createEnhancedListHandler = (handler) => {
|
|
1437
1438
|
return async function listActionHandler(prevState, { options, ...input }) {
|
|
1438
1439
|
const { nextToken: _nextToken, refresh, reset, search, ...rest } = options ?? {};
|
|
1439
1440
|
if (reset) {
|
|
@@ -1441,43 +1442,32 @@ const createEnhancedListHandler = (action) => {
|
|
|
1441
1442
|
}
|
|
1442
1443
|
// collect and filter results on `search`
|
|
1443
1444
|
if (search) {
|
|
1444
|
-
const
|
|
1445
|
-
let
|
|
1445
|
+
const items = [];
|
|
1446
|
+
let nextToken = undefined;
|
|
1446
1447
|
do {
|
|
1447
|
-
const output =
|
|
1448
|
+
const output = await handler({
|
|
1448
1449
|
...input,
|
|
1449
|
-
options: {
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
result.push(...output.items);
|
|
1456
|
-
nextNextToken = output.nextToken;
|
|
1457
|
-
} while (nextNextToken && result.length < SEARCH_LIMIT);
|
|
1450
|
+
options: { ...rest, pageSize: SEARCH_PAGE_SIZE, nextToken },
|
|
1451
|
+
});
|
|
1452
|
+
items.push(...output.items);
|
|
1453
|
+
// eslint-disable-next-line prefer-destructuring
|
|
1454
|
+
nextToken = output.nextToken;
|
|
1455
|
+
} while (nextToken && items.length < SEARCH_LIMIT);
|
|
1458
1456
|
return {
|
|
1459
|
-
items: searchItems({
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
options: search,
|
|
1463
|
-
}),
|
|
1464
|
-
search: {
|
|
1465
|
-
// search limit reached but we still have a next token
|
|
1466
|
-
hasExhaustedSearch: !!nextNextToken,
|
|
1467
|
-
},
|
|
1457
|
+
items: searchItems({ items, prefix: input.prefix, options: search }),
|
|
1458
|
+
// search limit reached but we still have a next token
|
|
1459
|
+
hasExhaustedSearch: !!nextToken,
|
|
1468
1460
|
nextToken: undefined,
|
|
1469
1461
|
};
|
|
1470
1462
|
}
|
|
1471
1463
|
// ignore provided `nextToken` on `refresh`
|
|
1472
1464
|
const nextToken = refresh ? undefined : _nextToken;
|
|
1473
|
-
const output =
|
|
1465
|
+
const output = await handler({
|
|
1474
1466
|
...input,
|
|
1475
1467
|
options: { ...rest, nextToken },
|
|
1476
|
-
})
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
nextToken: output.nextToken,
|
|
1480
|
-
};
|
|
1468
|
+
});
|
|
1469
|
+
const items = [...(refresh ? [] : prevState.items), ...output.items];
|
|
1470
|
+
return { ...output, items };
|
|
1481
1471
|
};
|
|
1482
1472
|
};
|
|
1483
1473
|
|
|
@@ -1923,9 +1913,9 @@ const QUEUED_TASK_BASE = {
|
|
|
1923
1913
|
progress: undefined,
|
|
1924
1914
|
status: 'QUEUED',
|
|
1925
1915
|
};
|
|
1926
|
-
const
|
|
1916
|
+
const isSingleTaskInput = (input) => !!input.data;
|
|
1927
1917
|
function useProcessTasks(handler, options) {
|
|
1928
|
-
const {
|
|
1918
|
+
const { items, ...callbacks } = options ?? {};
|
|
1929
1919
|
const callbacksRef = React__namespace["default"].useRef(callbacks);
|
|
1930
1920
|
if (callbacks) {
|
|
1931
1921
|
callbacksRef.current = callbacks;
|
|
@@ -1996,13 +1986,13 @@ function useProcessTasks(handler, options) {
|
|
|
1996
1986
|
});
|
|
1997
1987
|
flush();
|
|
1998
1988
|
}, [createTask, flush, updateTask, items, refreshTaskData]);
|
|
1999
|
-
const
|
|
2000
|
-
const
|
|
2001
|
-
if (
|
|
1989
|
+
const processTask = (_input) => {
|
|
1990
|
+
const isSingleTask = isSingleTaskInput(_input);
|
|
1991
|
+
if (isSingleTask) {
|
|
2002
1992
|
createTask(_input.data);
|
|
2003
1993
|
flush();
|
|
2004
1994
|
}
|
|
2005
|
-
const { data } =
|
|
1995
|
+
const { data } = isSingleTask
|
|
2006
1996
|
? _input
|
|
2007
1997
|
: [...tasksRef.current.values()].find(({ status }) => status === 'QUEUED') ?? {};
|
|
2008
1998
|
if (!data)
|
|
@@ -2047,10 +2037,10 @@ function useProcessTasks(handler, options) {
|
|
|
2047
2037
|
const task = getTask();
|
|
2048
2038
|
if (task && ui.isFunction(onTaskComplete))
|
|
2049
2039
|
onTaskComplete(task);
|
|
2050
|
-
// ignore process next task for single
|
|
2051
|
-
if (
|
|
2040
|
+
// ignore process next task for single task
|
|
2041
|
+
if (isSingleTask)
|
|
2052
2042
|
return;
|
|
2053
|
-
|
|
2043
|
+
processTask(_input);
|
|
2054
2044
|
});
|
|
2055
2045
|
updateTask(data.id, { cancel, status: 'PENDING' });
|
|
2056
2046
|
};
|
|
@@ -2062,13 +2052,22 @@ function useProcessTasks(handler, options) {
|
|
|
2062
2052
|
if (isProcessing) {
|
|
2063
2053
|
return;
|
|
2064
2054
|
}
|
|
2055
|
+
// if single task, run `processTask` once
|
|
2056
|
+
if (isSingleTaskInput(input)) {
|
|
2057
|
+
processTask(input);
|
|
2058
|
+
return;
|
|
2059
|
+
}
|
|
2060
|
+
const { concurrency, ...options } = input.options ?? {};
|
|
2061
|
+
// reconstruct `input` without `concurrency`
|
|
2062
|
+
const _input = { ...input, options };
|
|
2063
|
+
// for batch tasks, if no `concurrency` process tasks individually
|
|
2065
2064
|
if (!concurrency) {
|
|
2066
|
-
|
|
2065
|
+
processTask(_input);
|
|
2067
2066
|
return;
|
|
2068
2067
|
}
|
|
2069
2068
|
let count = 0;
|
|
2070
2069
|
while (count < concurrency) {
|
|
2071
|
-
|
|
2070
|
+
processTask(_input);
|
|
2072
2071
|
count++;
|
|
2073
2072
|
}
|
|
2074
2073
|
};
|
|
@@ -2084,10 +2083,7 @@ function useProcessTasks(handler, options) {
|
|
|
2084
2083
|
const isOptionsWithItems = (options) => !!options?.items;
|
|
2085
2084
|
const isHandleTaskInput = (value) => !!value?.data;
|
|
2086
2085
|
function useHandler(handler, options) {
|
|
2087
|
-
const [state, handleProcessing] = useProcessTasks(handler,
|
|
2088
|
-
...options,
|
|
2089
|
-
concurrency: DEFAULT_ACTION_CONCURRENCY,
|
|
2090
|
-
});
|
|
2086
|
+
const [state, handleProcessing] = useProcessTasks(handler, options);
|
|
2091
2087
|
const getConfig = useGetActionInput();
|
|
2092
2088
|
const { reset, isProcessing, tasks, ...rest } = state;
|
|
2093
2089
|
const handleDispatch = React__namespace["default"].useCallback((input) => {
|
|
@@ -2098,7 +2094,10 @@ function useHandler(handler, options) {
|
|
|
2098
2094
|
reset();
|
|
2099
2095
|
handleProcessing({
|
|
2100
2096
|
config,
|
|
2101
|
-
...(hasData
|
|
2097
|
+
...(hasData
|
|
2098
|
+
? { data: input.data }
|
|
2099
|
+
: // if no `data` provided, provide `concurrency` to `options`
|
|
2100
|
+
{ options: { concurrency: DEFAULT_ACTION_CONCURRENCY } }),
|
|
2102
2101
|
});
|
|
2103
2102
|
}, [getConfig, handleProcessing, reset]);
|
|
2104
2103
|
if (isOptionsWithItems(options)) {
|
|
@@ -2149,6 +2148,7 @@ const useListLocationItems = () => {
|
|
|
2149
2148
|
const enhancedHandler = React__namespace["default"].useMemo(() => createEnhancedListHandler((input) => listLocationItems({ ...input, config: getConfig() })), [getConfig, listLocationItems]);
|
|
2150
2149
|
return uiReactCore.useAsyncReducer(enhancedHandler, {
|
|
2151
2150
|
items: [],
|
|
2151
|
+
hasExhaustedSearch: false,
|
|
2152
2152
|
nextToken: undefined,
|
|
2153
2153
|
});
|
|
2154
2154
|
};
|
|
@@ -4006,8 +4006,7 @@ const DEFAULT_REFRESH_OPTIONS = { ...DEFAULT_LIST_OPTIONS$2, refresh: true };
|
|
|
4006
4006
|
const useFolders = ({ destination, setDestination, }) => {
|
|
4007
4007
|
const { current, key } = destination;
|
|
4008
4008
|
const [{ value, hasError, isLoading, message }, handleList] = useList('folderItems');
|
|
4009
|
-
const { items, nextToken,
|
|
4010
|
-
const { hasExhaustedSearch = false } = search ?? {};
|
|
4009
|
+
const { items, nextToken, hasExhaustedSearch = false } = value;
|
|
4011
4010
|
const onInitialize = React__namespace["default"].useCallback(() => {
|
|
4012
4011
|
handleList({
|
|
4013
4012
|
prefix: key,
|
|
@@ -4646,8 +4645,7 @@ const useLocationDetailView = (options) => {
|
|
|
4646
4645
|
const [{ task }, handleDownload] = useAction('download');
|
|
4647
4646
|
const [{ value, isLoading, hasError, message }, handleList] = useList('locationItems');
|
|
4648
4647
|
// set up pagination
|
|
4649
|
-
const { items, nextToken,
|
|
4650
|
-
const { hasExhaustedSearch = false } = search ?? {};
|
|
4648
|
+
const { items, nextToken, hasExhaustedSearch = false } = value;
|
|
4651
4649
|
const onPaginate = () => {
|
|
4652
4650
|
if (hasInvalidPrefix || !nextToken)
|
|
4653
4651
|
return;
|
|
@@ -4982,9 +4980,8 @@ const useLocationsView = (options) => {
|
|
|
4982
4980
|
const [state, handleList] = useList('locations');
|
|
4983
4981
|
const dispatchStoreAction = useStore()[1];
|
|
4984
4982
|
const { value, message, hasError, isLoading } = state;
|
|
4985
|
-
const { items, nextToken,
|
|
4983
|
+
const { items, nextToken, hasExhaustedSearch = false } = value;
|
|
4986
4984
|
const hasNextToken = !!nextToken;
|
|
4987
|
-
const { hasExhaustedSearch = false } = search ?? {};
|
|
4988
4985
|
const onNavigate = options?.onNavigate;
|
|
4989
4986
|
const initialValues = options?.initialValues ?? {};
|
|
4990
4987
|
const listOptionsRef = React__namespace["default"].useRef({
|
|
@@ -8,9 +8,9 @@ const QUEUED_TASK_BASE = {
|
|
|
8
8
|
progress: undefined,
|
|
9
9
|
status: 'QUEUED',
|
|
10
10
|
};
|
|
11
|
-
const
|
|
11
|
+
const isSingleTaskInput = (input) => !!input.data;
|
|
12
12
|
function useProcessTasks(handler, options) {
|
|
13
|
-
const {
|
|
13
|
+
const { items, ...callbacks } = options ?? {};
|
|
14
14
|
const callbacksRef = React__default.useRef(callbacks);
|
|
15
15
|
if (callbacks) {
|
|
16
16
|
callbacksRef.current = callbacks;
|
|
@@ -81,13 +81,13 @@ function useProcessTasks(handler, options) {
|
|
|
81
81
|
});
|
|
82
82
|
flush();
|
|
83
83
|
}, [createTask, flush, updateTask, items, refreshTaskData]);
|
|
84
|
-
const
|
|
85
|
-
const
|
|
86
|
-
if (
|
|
84
|
+
const processTask = (_input) => {
|
|
85
|
+
const isSingleTask = isSingleTaskInput(_input);
|
|
86
|
+
if (isSingleTask) {
|
|
87
87
|
createTask(_input.data);
|
|
88
88
|
flush();
|
|
89
89
|
}
|
|
90
|
-
const { data } =
|
|
90
|
+
const { data } = isSingleTask
|
|
91
91
|
? _input
|
|
92
92
|
: [...tasksRef.current.values()].find(({ status }) => status === 'QUEUED') ?? {};
|
|
93
93
|
if (!data)
|
|
@@ -132,10 +132,10 @@ function useProcessTasks(handler, options) {
|
|
|
132
132
|
const task = getTask();
|
|
133
133
|
if (task && isFunction(onTaskComplete))
|
|
134
134
|
onTaskComplete(task);
|
|
135
|
-
// ignore process next task for single
|
|
136
|
-
if (
|
|
135
|
+
// ignore process next task for single task
|
|
136
|
+
if (isSingleTask)
|
|
137
137
|
return;
|
|
138
|
-
|
|
138
|
+
processTask(_input);
|
|
139
139
|
});
|
|
140
140
|
updateTask(data.id, { cancel, status: 'PENDING' });
|
|
141
141
|
};
|
|
@@ -147,13 +147,22 @@ function useProcessTasks(handler, options) {
|
|
|
147
147
|
if (isProcessing) {
|
|
148
148
|
return;
|
|
149
149
|
}
|
|
150
|
+
// if single task, run `processTask` once
|
|
151
|
+
if (isSingleTaskInput(input)) {
|
|
152
|
+
processTask(input);
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
const { concurrency, ...options } = input.options ?? {};
|
|
156
|
+
// reconstruct `input` without `concurrency`
|
|
157
|
+
const _input = { ...input, options };
|
|
158
|
+
// for batch tasks, if no `concurrency` process tasks individually
|
|
150
159
|
if (!concurrency) {
|
|
151
|
-
|
|
160
|
+
processTask(_input);
|
|
152
161
|
return;
|
|
153
162
|
}
|
|
154
163
|
let count = 0;
|
|
155
164
|
while (count < concurrency) {
|
|
156
|
-
|
|
165
|
+
processTask(_input);
|
|
157
166
|
count++;
|
|
158
167
|
}
|
|
159
168
|
};
|
|
@@ -1,78 +1,8 @@
|
|
|
1
|
+
import { searchItems } from './searchItems.mjs';
|
|
2
|
+
|
|
1
3
|
const SEARCH_LIMIT = 10000;
|
|
2
4
|
const SEARCH_PAGE_SIZE = 1000;
|
|
3
|
-
|
|
4
|
-
* Normalizes and converts a string to lower case,
|
|
5
|
-
* handling Unicode characters and locale-specific case mappings.
|
|
6
|
-
* Uses NFKD to fully decompose unicode: https://unicode.org/reports/tr15/#Normalization_Forms_Table
|
|
7
|
-
*/
|
|
8
|
-
function normalize(input) {
|
|
9
|
-
return input
|
|
10
|
-
.normalize('NFKD')
|
|
11
|
-
.replace(/[\u0300-\u036f]/g, '') // remove diacritic modifiers
|
|
12
|
-
.toLocaleLowerCase();
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Performs a case-insensitive check to determine if a string includes another string,
|
|
16
|
-
* handling Unicode characters and locale-specific case mappings.
|
|
17
|
-
*
|
|
18
|
-
* @param {string} input - The string to search within.
|
|
19
|
-
* @param {string} query - The substring to search for.
|
|
20
|
-
* @returns {boolean} - Returns `true` if `query` is found in `input` (case-insensitively), otherwise `false`.
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* caseInsensitiveIncludes("Photos", "photo"); // true
|
|
24
|
-
* caseInsensitiveIncludes("Hello", "HELLO"); // true
|
|
25
|
-
* caseInsensitiveIncludes("\uFB00", "\u0046\u0046"); // ff = FF true
|
|
26
|
-
* caseInsensitiveIncludes("Cafè", "cafe"); // true
|
|
27
|
-
*/
|
|
28
|
-
function caseInsensitiveIncludes(input, query) {
|
|
29
|
-
return normalize(input).includes(normalize(query));
|
|
30
|
-
}
|
|
31
|
-
function searchItems({ prefix = '', list, options }) {
|
|
32
|
-
const { query, filterBy, groupBy } = options;
|
|
33
|
-
// filter keys that match `filterBy` search option
|
|
34
|
-
const filteredItems = list.filter((item) => {
|
|
35
|
-
const key = typeof filterBy === 'function' ? filterBy(item) : filterBy;
|
|
36
|
-
const path = item[key];
|
|
37
|
-
const suffix = path.slice(prefix.length);
|
|
38
|
-
return caseInsensitiveIncludes(suffix, query);
|
|
39
|
-
});
|
|
40
|
-
if (!groupBy) {
|
|
41
|
-
return filteredItems;
|
|
42
|
-
}
|
|
43
|
-
// group items using the provided grouping delimiter
|
|
44
|
-
const uniquePaths = new Map();
|
|
45
|
-
for (const item of filteredItems) {
|
|
46
|
-
const key = typeof filterBy === 'function' ? filterBy(item) : filterBy;
|
|
47
|
-
const path = item[key];
|
|
48
|
-
const components = path.split(groupBy);
|
|
49
|
-
for (const [i, component] of components.entries()) {
|
|
50
|
-
if (!caseInsensitiveIncludes(component, query)) {
|
|
51
|
-
continue;
|
|
52
|
-
}
|
|
53
|
-
// list of components ending with match
|
|
54
|
-
const matchedPathSegments = components.slice(0, i + 1);
|
|
55
|
-
// create new path
|
|
56
|
-
let matchedPath = matchedPathSegments.join(groupBy);
|
|
57
|
-
const isFolder = matchedPath !== path;
|
|
58
|
-
if (isFolder) {
|
|
59
|
-
matchedPath += groupBy;
|
|
60
|
-
}
|
|
61
|
-
// ignore anything below the prefix for matching
|
|
62
|
-
if (matchedPath.length > prefix.length && !uniquePaths.has(matchedPath)) {
|
|
63
|
-
// add a new item
|
|
64
|
-
uniquePaths.set(matchedPath, {
|
|
65
|
-
...item,
|
|
66
|
-
id: crypto.randomUUID(),
|
|
67
|
-
[key]: matchedPath,
|
|
68
|
-
type: isFolder ? 'FOLDER' : 'FILE',
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
return Array.from(uniquePaths.values());
|
|
74
|
-
}
|
|
75
|
-
const createEnhancedListHandler = (action) => {
|
|
5
|
+
const createEnhancedListHandler = (handler) => {
|
|
76
6
|
return async function listActionHandler(prevState, { options, ...input }) {
|
|
77
7
|
const { nextToken: _nextToken, refresh, reset, search, ...rest } = options ?? {};
|
|
78
8
|
if (reset) {
|
|
@@ -80,44 +10,33 @@ const createEnhancedListHandler = (action) => {
|
|
|
80
10
|
}
|
|
81
11
|
// collect and filter results on `search`
|
|
82
12
|
if (search) {
|
|
83
|
-
const
|
|
84
|
-
let
|
|
13
|
+
const items = [];
|
|
14
|
+
let nextToken = undefined;
|
|
85
15
|
do {
|
|
86
|
-
const output =
|
|
16
|
+
const output = await handler({
|
|
87
17
|
...input,
|
|
88
|
-
options: {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
result.push(...output.items);
|
|
95
|
-
nextNextToken = output.nextToken;
|
|
96
|
-
} while (nextNextToken && result.length < SEARCH_LIMIT);
|
|
18
|
+
options: { ...rest, pageSize: SEARCH_PAGE_SIZE, nextToken },
|
|
19
|
+
});
|
|
20
|
+
items.push(...output.items);
|
|
21
|
+
// eslint-disable-next-line prefer-destructuring
|
|
22
|
+
nextToken = output.nextToken;
|
|
23
|
+
} while (nextToken && items.length < SEARCH_LIMIT);
|
|
97
24
|
return {
|
|
98
|
-
items: searchItems({
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
options: search,
|
|
102
|
-
}),
|
|
103
|
-
search: {
|
|
104
|
-
// search limit reached but we still have a next token
|
|
105
|
-
hasExhaustedSearch: !!nextNextToken,
|
|
106
|
-
},
|
|
25
|
+
items: searchItems({ items, prefix: input.prefix, options: search }),
|
|
26
|
+
// search limit reached but we still have a next token
|
|
27
|
+
hasExhaustedSearch: !!nextToken,
|
|
107
28
|
nextToken: undefined,
|
|
108
29
|
};
|
|
109
30
|
}
|
|
110
31
|
// ignore provided `nextToken` on `refresh`
|
|
111
32
|
const nextToken = refresh ? undefined : _nextToken;
|
|
112
|
-
const output =
|
|
33
|
+
const output = await handler({
|
|
113
34
|
...input,
|
|
114
35
|
options: { ...rest, nextToken },
|
|
115
|
-
})
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
nextToken: output.nextToken,
|
|
119
|
-
};
|
|
36
|
+
});
|
|
37
|
+
const items = [...(refresh ? [] : prevState.items), ...output.items];
|
|
38
|
+
return { ...output, items };
|
|
120
39
|
};
|
|
121
40
|
};
|
|
122
41
|
|
|
123
|
-
export { SEARCH_LIMIT, SEARCH_PAGE_SIZE, createEnhancedListHandler
|
|
42
|
+
export { SEARCH_LIMIT, SEARCH_PAGE_SIZE, createEnhancedListHandler };
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalizes and converts a string to lower case,
|
|
3
|
+
* handling Unicode characters and locale-specific case mappings.
|
|
4
|
+
* Uses NFKD to fully decompose unicode: https://unicode.org/reports/tr15/#Normalization_Forms_Table
|
|
5
|
+
*/
|
|
6
|
+
function normalize(input) {
|
|
7
|
+
return input
|
|
8
|
+
.normalize('NFKD')
|
|
9
|
+
.replace(/[\u0300-\u036f]/g, '') // remove diacritic modifiers
|
|
10
|
+
.toLocaleLowerCase();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Performs a case-insensitive check to determine if a string includes another string,
|
|
14
|
+
* handling Unicode characters and locale-specific case mappings.
|
|
15
|
+
*
|
|
16
|
+
* @param {string} input - The string to search within.
|
|
17
|
+
* @param {string} query - The substring to search for.
|
|
18
|
+
* @returns {boolean} - Returns `true` if `query` is found in `input` (case-insensitively), otherwise `false`.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* caseInsensitiveIncludes("Photos", "photo"); // true
|
|
22
|
+
* caseInsensitiveIncludes("Hello", "HELLO"); // true
|
|
23
|
+
* caseInsensitiveIncludes("\uFB00", "\u0046\u0046"); // ff = FF true
|
|
24
|
+
* caseInsensitiveIncludes("Cafè", "cafe"); // true
|
|
25
|
+
*/
|
|
26
|
+
function caseInsensitiveIncludes(input, query) {
|
|
27
|
+
return normalize(input).includes(normalize(query));
|
|
28
|
+
}
|
|
29
|
+
function searchItems({ prefix = '', items, options, }) {
|
|
30
|
+
const { query, filterBy, groupBy } = options;
|
|
31
|
+
// filter keys that match `filterBy` search option
|
|
32
|
+
const filteredItems = items.filter((item) => {
|
|
33
|
+
const key = typeof filterBy === 'function' ? filterBy(item) : filterBy;
|
|
34
|
+
const path = item[key];
|
|
35
|
+
const suffix = path.slice(prefix.length);
|
|
36
|
+
return caseInsensitiveIncludes(suffix, query);
|
|
37
|
+
});
|
|
38
|
+
if (!groupBy) {
|
|
39
|
+
return filteredItems;
|
|
40
|
+
}
|
|
41
|
+
// group items using the provided grouping delimiter
|
|
42
|
+
const uniquePaths = new Map();
|
|
43
|
+
for (const item of filteredItems) {
|
|
44
|
+
const key = typeof filterBy === 'function' ? filterBy(item) : filterBy;
|
|
45
|
+
const path = item[key];
|
|
46
|
+
const components = path.split(groupBy);
|
|
47
|
+
for (const [i, component] of components.entries()) {
|
|
48
|
+
if (!caseInsensitiveIncludes(component, query)) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
// list of components ending with match
|
|
52
|
+
const matchedPathSegments = components.slice(0, i + 1);
|
|
53
|
+
// create new path
|
|
54
|
+
let matchedPath = matchedPathSegments.join(groupBy);
|
|
55
|
+
const isFolder = matchedPath !== path;
|
|
56
|
+
if (isFolder) {
|
|
57
|
+
matchedPath += groupBy;
|
|
58
|
+
}
|
|
59
|
+
// ignore anything below the prefix for matching
|
|
60
|
+
if (matchedPath.length > prefix.length && !uniquePaths.has(matchedPath)) {
|
|
61
|
+
// add a new item
|
|
62
|
+
uniquePaths.set(matchedPath, {
|
|
63
|
+
...item,
|
|
64
|
+
id: crypto.randomUUID(),
|
|
65
|
+
[key]: matchedPath,
|
|
66
|
+
type: isFolder ? 'FOLDER' : 'FILE',
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return Array.from(uniquePaths.values());
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export { searchItems };
|
|
@@ -9,10 +9,7 @@ import { useProcessTasks } from '../tasks/useProcessTasks.mjs';
|
|
|
9
9
|
const isOptionsWithItems = (options) => !!options?.items;
|
|
10
10
|
const isHandleTaskInput = (value) => !!value?.data;
|
|
11
11
|
function useHandler(handler, options) {
|
|
12
|
-
const [state, handleProcessing] = useProcessTasks(handler,
|
|
13
|
-
...options,
|
|
14
|
-
concurrency: DEFAULT_ACTION_CONCURRENCY,
|
|
15
|
-
});
|
|
12
|
+
const [state, handleProcessing] = useProcessTasks(handler, options);
|
|
16
13
|
const getConfig = useGetActionInput();
|
|
17
14
|
const { reset, isProcessing, tasks, ...rest } = state;
|
|
18
15
|
const handleDispatch = React__default.useCallback((input) => {
|
|
@@ -23,7 +20,10 @@ function useHandler(handler, options) {
|
|
|
23
20
|
reset();
|
|
24
21
|
handleProcessing({
|
|
25
22
|
config,
|
|
26
|
-
...(hasData
|
|
23
|
+
...(hasData
|
|
24
|
+
? { data: input.data }
|
|
25
|
+
: // if no `data` provided, provide `concurrency` to `options`
|
|
26
|
+
{ options: { concurrency: DEFAULT_ACTION_CONCURRENCY } }),
|
|
27
27
|
});
|
|
28
28
|
}, [getConfig, handleProcessing, reset]);
|
|
29
29
|
if (isOptionsWithItems(options)) {
|
|
@@ -17,6 +17,7 @@ const useListLocationItems = () => {
|
|
|
17
17
|
const enhancedHandler = React__default.useMemo(() => createEnhancedListHandler((input) => listLocationItems({ ...input, config: getConfig() })), [getConfig, listLocationItems]);
|
|
18
18
|
return useAsyncReducer(enhancedHandler, {
|
|
19
19
|
items: [],
|
|
20
|
+
hasExhaustedSearch: false,
|
|
20
21
|
nextToken: undefined,
|
|
21
22
|
});
|
|
22
23
|
};
|
|
@@ -22,8 +22,7 @@ const DEFAULT_REFRESH_OPTIONS = { ...DEFAULT_LIST_OPTIONS, refresh: true };
|
|
|
22
22
|
const useFolders = ({ destination, setDestination, }) => {
|
|
23
23
|
const { current, key } = destination;
|
|
24
24
|
const [{ value, hasError, isLoading, message }, handleList] = useList('folderItems');
|
|
25
|
-
const { items, nextToken,
|
|
26
|
-
const { hasExhaustedSearch = false } = search ?? {};
|
|
25
|
+
const { items, nextToken, hasExhaustedSearch = false } = value;
|
|
27
26
|
const onInitialize = React__default.useCallback(() => {
|
|
28
27
|
handleList({
|
|
29
28
|
prefix: key,
|
package/dist/esm/components/StorageBrowser/views/LocationDetailView/useLocationDetailView.mjs
CHANGED
|
@@ -40,8 +40,7 @@ const useLocationDetailView = (options) => {
|
|
|
40
40
|
const [{ task }, handleDownload] = useAction('download');
|
|
41
41
|
const [{ value, isLoading, hasError, message }, handleList] = useList('locationItems');
|
|
42
42
|
// set up pagination
|
|
43
|
-
const { items, nextToken,
|
|
44
|
-
const { hasExhaustedSearch = false } = search ?? {};
|
|
43
|
+
const { items, nextToken, hasExhaustedSearch = false } = value;
|
|
45
44
|
const onPaginate = () => {
|
|
46
45
|
if (hasInvalidPrefix || !nextToken)
|
|
47
46
|
return;
|
|
@@ -25,9 +25,8 @@ const useLocationsView = (options) => {
|
|
|
25
25
|
const [state, handleList] = useList('locations');
|
|
26
26
|
const dispatchStoreAction = useStore()[1];
|
|
27
27
|
const { value, message, hasError, isLoading } = state;
|
|
28
|
-
const { items, nextToken,
|
|
28
|
+
const { items, nextToken, hasExhaustedSearch = false } = value;
|
|
29
29
|
const hasNextToken = !!nextToken;
|
|
30
|
-
const { hasExhaustedSearch = false } = search ?? {};
|
|
31
30
|
const onNavigate = options?.onNavigate;
|
|
32
31
|
const initialValues = options?.initialValues ?? {};
|
|
33
32
|
const listOptionsRef = React__default.useRef({
|
package/dist/esm/version.mjs
CHANGED
package/dist/index.js
CHANGED
|
@@ -9,7 +9,7 @@ var uiReactCore = require('@aws-amplify/ui-react-core');
|
|
|
9
9
|
var auth = require('aws-amplify/auth');
|
|
10
10
|
var storage = require('aws-amplify/storage');
|
|
11
11
|
var internal = require('@aws-amplify/ui-react/internal');
|
|
12
|
-
var createStorageBrowser = require('./createStorageBrowser-
|
|
12
|
+
var createStorageBrowser = require('./createStorageBrowser-B75dAYRb.js');
|
|
13
13
|
require('@aws-amplify/storage/internals');
|
|
14
14
|
require('aws-amplify');
|
|
15
15
|
require('aws-amplify/utils');
|