@strapi/upload 5.52.2 → 5.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/AssetCard/AssetCard.js +1 -0
- package/dist/admin/components/AssetCard/AssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/AssetCard.mjs +1 -0
- package/dist/admin/components/AssetCard/AssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/AssetCardBase.js +1 -0
- package/dist/admin/components/AssetCard/AssetCardBase.js.map +1 -1
- package/dist/admin/components/AssetCard/AssetCardBase.mjs +1 -0
- package/dist/admin/components/AssetCard/AssetCardBase.mjs.map +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.js +1 -0
- package/dist/admin/components/AssetCard/ImageAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.mjs +1 -0
- package/dist/admin/components/AssetCard/ImageAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.js +1 -0
- package/dist/admin/components/AssetCard/UploadingAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.mjs +1 -0
- package/dist/admin/components/AssetCard/UploadingAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.js +1 -0
- package/dist/admin/components/AssetCard/VideoAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.mjs +1 -0
- package/dist/admin/components/AssetCard/VideoAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.js +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js +1 -0
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js.map +1 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs +1 -0
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs.map +1 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js +1 -0
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs +1 -0
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js +1 -0
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js +1 -0
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs.map +1 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js +1 -0
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js.map +1 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs +1 -0
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs.map +1 -1
- package/dist/admin/components/FilterList/FilterList.js +2 -2
- package/dist/admin/components/FilterList/FilterList.js.map +1 -1
- package/dist/admin/components/FilterList/FilterList.mjs +2 -2
- package/dist/admin/components/FilterList/FilterList.mjs.map +1 -1
- package/dist/admin/components/FilterPopover/FilterPopover.js +4 -4
- package/dist/admin/components/FilterPopover/FilterPopover.js.map +1 -1
- package/dist/admin/components/FilterPopover/FilterPopover.mjs +4 -4
- package/dist/admin/components/FilterPopover/FilterPopover.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js +1 -0
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs +1 -0
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js +1 -0
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs +1 -0
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js +4 -10
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs +4 -10
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs.map +1 -1
- package/dist/admin/components/SortPicker/SortPicker.js +1 -0
- package/dist/admin/components/SortPicker/SortPicker.js.map +1 -1
- package/dist/admin/components/SortPicker/SortPicker.mjs +1 -0
- package/dist/admin/components/SortPicker/SortPicker.mjs.map +1 -1
- package/dist/admin/components/TableList/CellContent.js +1 -0
- package/dist/admin/components/TableList/CellContent.js.map +1 -1
- package/dist/admin/components/TableList/CellContent.mjs +1 -0
- package/dist/admin/components/TableList/CellContent.mjs.map +1 -1
- package/dist/admin/components/TableList/PreviewCell.js +1 -0
- package/dist/admin/components/TableList/PreviewCell.js.map +1 -1
- package/dist/admin/components/TableList/PreviewCell.mjs +1 -0
- package/dist/admin/components/TableList/PreviewCell.mjs.map +1 -1
- package/dist/admin/components/TableList/TableList.js +1 -0
- package/dist/admin/components/TableList/TableList.js.map +1 -1
- package/dist/admin/components/TableList/TableList.mjs +1 -0
- package/dist/admin/components/TableList/TableList.mjs.map +1 -1
- package/dist/admin/components/TableList/TableRows.js +1 -0
- package/dist/admin/components/TableList/TableRows.js.map +1 -1
- package/dist/admin/components/TableList/TableRows.mjs +1 -0
- package/dist/admin/components/TableList/TableRows.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js +1 -0
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs +1 -0
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js +9 -21
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs +9 -21
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js +1 -0
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs +1 -0
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js +1 -0
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs +1 -0
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +1 -1
- package/dist/admin/constants.js +1 -0
- package/dist/admin/constants.js.map +1 -1
- package/dist/admin/constants.mjs +1 -0
- package/dist/admin/constants.mjs.map +1 -1
- package/dist/admin/future/components/Drawer.js +17 -3
- package/dist/admin/future/components/Drawer.js.map +1 -1
- package/dist/admin/future/components/Drawer.mjs +17 -3
- package/dist/admin/future/components/Drawer.mjs.map +1 -1
- package/dist/admin/future/components/UploadProgressDialog.js +46 -12
- package/dist/admin/future/components/UploadProgressDialog.js.map +1 -1
- package/dist/admin/future/components/UploadProgressDialog.mjs +47 -13
- package/dist/admin/future/components/UploadProgressDialog.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.js +27 -2
- package/dist/admin/future/pages/Assets/AssetsPage.js.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.mjs +27 -2
- package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.js +9 -1
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.mjs +9 -1
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js +19 -4
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs +19 -4
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +64 -10
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +66 -12
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js +17 -5
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs +17 -5
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.js +56 -28
- package/dist/admin/future/pages/Assets/components/AssetsTable.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs +58 -30
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.js +203 -83
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs +207 -87
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js +21 -3
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs +21 -3
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/MainAreaContextMenu.js +181 -0
- package/dist/admin/future/pages/Assets/components/MainAreaContextMenu.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/MainAreaContextMenu.mjs +179 -0
- package/dist/admin/future/pages/Assets/components/MainAreaContextMenu.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/constants.js +22 -0
- package/dist/admin/future/pages/Assets/constants.js.map +1 -1
- package/dist/admin/future/pages/Assets/constants.mjs +19 -1
- package/dist/admin/future/pages/Assets/constants.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js +4 -3
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs +5 -4
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js +105 -12
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs +106 -13
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useListFilters.js +5 -5
- package/dist/admin/future/pages/Assets/hooks/useListFilters.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useListFilters.mjs +6 -6
- package/dist/admin/future/pages/Assets/hooks/useListFilters.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useListScrollRestoration.js +111 -0
- package/dist/admin/future/pages/Assets/hooks/useListScrollRestoration.js.map +1 -0
- package/dist/admin/future/pages/Assets/hooks/useListScrollRestoration.mjs +109 -0
- package/dist/admin/future/pages/Assets/hooks/useListScrollRestoration.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/hooks/useListSort.js +10 -10
- package/dist/admin/future/pages/Assets/hooks/useListSort.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useListSort.mjs +11 -11
- package/dist/admin/future/pages/Assets/hooks/useListSort.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.js +86 -0
- package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.js.map +1 -0
- package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.mjs +83 -0
- package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/utils/renderedKeys.js +19 -0
- package/dist/admin/future/pages/Assets/utils/renderedKeys.js.map +1 -0
- package/dist/admin/future/pages/Assets/utils/renderedKeys.mjs +17 -0
- package/dist/admin/future/pages/Assets/utils/renderedKeys.mjs.map +1 -0
- package/dist/admin/future/services/api.js +19 -6
- package/dist/admin/future/services/api.js.map +1 -1
- package/dist/admin/future/services/api.mjs +19 -6
- package/dist/admin/future/services/api.mjs.map +1 -1
- package/dist/admin/future/store/uploadProgress.js +55 -2
- package/dist/admin/future/store/uploadProgress.js.map +1 -1
- package/dist/admin/future/store/uploadProgress.mjs +53 -3
- package/dist/admin/future/store/uploadProgress.mjs.map +1 -1
- package/dist/admin/index.js +1 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -0
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.js +1 -0
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs +1 -0
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs.map +1 -1
- package/dist/admin/pages/App/MediaLibrary.js +7 -9
- package/dist/admin/pages/App/MediaLibrary.js.map +1 -1
- package/dist/admin/pages/App/MediaLibrary.mjs +8 -10
- package/dist/admin/pages/App/MediaLibrary.mjs.map +1 -1
- package/dist/admin/pages/App/components/BulkActions.js +1 -0
- package/dist/admin/pages/App/components/BulkActions.js.map +1 -1
- package/dist/admin/pages/App/components/BulkActions.mjs +1 -0
- package/dist/admin/pages/App/components/BulkActions.mjs.map +1 -1
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.js +1 -0
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.js.map +1 -1
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.mjs +1 -0
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.mjs.map +1 -1
- package/dist/admin/pages/App/components/Filters.js +8 -8
- package/dist/admin/pages/App/components/Filters.js.map +1 -1
- package/dist/admin/pages/App/components/Filters.mjs +9 -9
- package/dist/admin/pages/App/components/Filters.mjs.map +1 -1
- package/dist/admin/pages/App/components/Header.js +1 -1
- package/dist/admin/pages/App/components/Header.js.map +1 -1
- package/dist/admin/pages/App/components/Header.mjs +2 -2
- package/dist/admin/pages/App/components/Header.mjs.map +1 -1
- package/dist/admin/src/future/components/Drawer.d.ts +10 -0
- package/dist/admin/src/future/pages/Assets/components/AssetsGrid.d.ts +4 -1
- package/dist/admin/src/future/pages/Assets/components/AssetsTable.d.ts +4 -1
- package/dist/admin/src/future/pages/Assets/components/BulkActionsBar.d.ts +8 -1
- package/dist/admin/src/future/pages/Assets/components/MainAreaContextMenu.d.ts +28 -0
- package/dist/admin/src/future/pages/Assets/constants.d.ts +20 -0
- package/dist/admin/src/future/pages/Assets/hooks/useInfiniteAssets.d.ts +4 -0
- package/dist/admin/src/future/pages/Assets/hooks/useListScrollRestoration.d.ts +15 -0
- package/dist/admin/src/future/pages/Assets/utils/mergeUploadedAssets.d.ts +35 -0
- package/dist/admin/src/future/pages/Assets/utils/renderedKeys.d.ts +19 -0
- package/dist/admin/src/future/store/uploadProgress.d.ts +51 -0
- package/dist/admin/src/utils/index.d.ts +1 -0
- package/dist/admin/src/utils/rawFileToAsset.d.ts +2 -2
- package/dist/admin/src/utils/resolveFileMime.d.ts +13 -0
- package/dist/admin/translations/en.json.js +5 -1
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +5 -1
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/utils/getFolderURL.js +2 -1
- package/dist/admin/utils/getFolderURL.js.map +1 -1
- package/dist/admin/utils/getFolderURL.mjs +2 -1
- package/dist/admin/utils/getFolderURL.mjs.map +1 -1
- package/dist/admin/utils/rawFileToAsset.js +5 -3
- package/dist/admin/utils/rawFileToAsset.js.map +1 -1
- package/dist/admin/utils/rawFileToAsset.mjs +5 -3
- package/dist/admin/utils/rawFileToAsset.mjs.map +1 -1
- package/dist/admin/utils/resolveFileMime.js +69 -0
- package/dist/admin/utils/resolveFileMime.js.map +1 -0
- package/dist/admin/utils/resolveFileMime.mjs +64 -0
- package/dist/admin/utils/resolveFileMime.mjs.map +1 -0
- package/dist/admin/utils/urlsToAssets.js +8 -4
- package/dist/admin/utils/urlsToAssets.js.map +1 -1
- package/dist/admin/utils/urlsToAssets.mjs +8 -4
- package/dist/admin/utils/urlsToAssets.mjs.map +1 -1
- package/dist/server/services/upload.js +20 -8
- package/dist/server/services/upload.js.map +1 -1
- package/dist/server/services/upload.mjs +20 -8
- package/dist/server/services/upload.mjs.map +1 -1
- package/dist/server/src/index.d.ts +2 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +2 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/upload.d.ts +2 -0
- package/dist/server/src/services/upload.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -4,6 +4,7 @@ import parseISO from 'date-fns/parseISO';
|
|
|
4
4
|
import { useIntl } from 'react-intl';
|
|
5
5
|
import { formatBytes } from '../../utils/formatBytes.mjs';
|
|
6
6
|
import 'date-fns';
|
|
7
|
+
import '@strapi/admin/strapi-admin';
|
|
7
8
|
import 'qs';
|
|
8
9
|
import { getFileExtension } from '../../utils/getFileExtension.mjs';
|
|
9
10
|
import '../../utils/urlYupSchema.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellContent.mjs","sources":["../../../../admin/src/components/TableList/CellContent.tsx"],"sourcesContent":["import { Typography } from '@strapi/design-system';\nimport parseISO from 'date-fns/parseISO';\nimport { useIntl } from 'react-intl';\n\nimport { formatBytes, getFileExtension } from '../../utils';\n\nimport { PreviewCell } from './PreviewCell';\n\nimport type { File } from '../../../../shared/contracts/files';\n\nexport interface CellContentProps {\n cellType: string;\n contentType?: string;\n content: File;\n name: string;\n}\n\nexport const CellContent = ({ cellType, contentType, content, name }: CellContentProps) => {\n const { formatDate, formatMessage } = useIntl();\n const contentValue = content[name as Extract<keyof File, string>];\n\n switch (cellType) {\n case 'image':\n return <PreviewCell type={contentType} content={content} />;\n\n case 'date':\n if (typeof contentValue === 'string') {\n return <Typography>{formatDate(parseISO(contentValue), { dateStyle: 'full' })}</Typography>;\n }\n\n case 'size':\n if (contentType === 'folder')\n return (\n <Typography\n aria-label={formatMessage({\n id: 'list.table.content.empty-label',\n defaultMessage: 'This field is empty',\n })}\n >\n -\n </Typography>\n );\n if (typeof contentValue === 'string' || typeof contentValue === 'number') {\n return <Typography>{formatBytes(contentValue)}</Typography>;\n }\n\n case 'ext':\n if (contentType === 'folder')\n return (\n <Typography\n aria-label={formatMessage({\n id: 'list.table.content.empty-label',\n defaultMessage: 'This field is empty',\n })}\n >\n -\n </Typography>\n );\n\n if (typeof contentValue === 'string') {\n return <Typography>{getFileExtension(contentValue)?.toUpperCase()}</Typography>;\n }\n case 'text':\n if (typeof contentValue === 'string') {\n return <Typography>{contentValue}</Typography>;\n }\n\n default:\n return (\n <Typography\n aria-label={formatMessage({\n id: 'list.table.content.empty-label',\n defaultMessage: 'This field is empty',\n })}\n >\n -\n </Typography>\n );\n }\n};\n"],"names":["CellContent","cellType","contentType","content","name","formatDate","formatMessage","useIntl","contentValue","_jsx","PreviewCell","type","Typography","parseISO","dateStyle","aria-label","id","defaultMessage","formatBytes","getFileExtension","toUpperCase"],"mappings":"
|
|
1
|
+
{"version":3,"file":"CellContent.mjs","sources":["../../../../admin/src/components/TableList/CellContent.tsx"],"sourcesContent":["import { Typography } from '@strapi/design-system';\nimport parseISO from 'date-fns/parseISO';\nimport { useIntl } from 'react-intl';\n\nimport { formatBytes, getFileExtension } from '../../utils';\n\nimport { PreviewCell } from './PreviewCell';\n\nimport type { File } from '../../../../shared/contracts/files';\n\nexport interface CellContentProps {\n cellType: string;\n contentType?: string;\n content: File;\n name: string;\n}\n\nexport const CellContent = ({ cellType, contentType, content, name }: CellContentProps) => {\n const { formatDate, formatMessage } = useIntl();\n const contentValue = content[name as Extract<keyof File, string>];\n\n switch (cellType) {\n case 'image':\n return <PreviewCell type={contentType} content={content} />;\n\n case 'date':\n if (typeof contentValue === 'string') {\n return <Typography>{formatDate(parseISO(contentValue), { dateStyle: 'full' })}</Typography>;\n }\n\n case 'size':\n if (contentType === 'folder')\n return (\n <Typography\n aria-label={formatMessage({\n id: 'list.table.content.empty-label',\n defaultMessage: 'This field is empty',\n })}\n >\n -\n </Typography>\n );\n if (typeof contentValue === 'string' || typeof contentValue === 'number') {\n return <Typography>{formatBytes(contentValue)}</Typography>;\n }\n\n case 'ext':\n if (contentType === 'folder')\n return (\n <Typography\n aria-label={formatMessage({\n id: 'list.table.content.empty-label',\n defaultMessage: 'This field is empty',\n })}\n >\n -\n </Typography>\n );\n\n if (typeof contentValue === 'string') {\n return <Typography>{getFileExtension(contentValue)?.toUpperCase()}</Typography>;\n }\n case 'text':\n if (typeof contentValue === 'string') {\n return <Typography>{contentValue}</Typography>;\n }\n\n default:\n return (\n <Typography\n aria-label={formatMessage({\n id: 'list.table.content.empty-label',\n defaultMessage: 'This field is empty',\n })}\n >\n -\n </Typography>\n );\n }\n};\n"],"names":["CellContent","cellType","contentType","content","name","formatDate","formatMessage","useIntl","contentValue","_jsx","PreviewCell","type","Typography","parseISO","dateStyle","aria-label","id","defaultMessage","formatBytes","getFileExtension","toUpperCase"],"mappings":";;;;;;;;;;;;AAiBO,MAAMA,WAAAA,GAAc,CAAC,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,OAAO,EAAEC,IAAI,EAAoB,GAAA;AACpF,IAAA,MAAM,EAAEC,UAAU,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IACtC,MAAMC,YAAAA,GAAeL,OAAO,CAACC,IAAAA,CAAoC;IAEjE,OAAQH,QAAAA;QACN,KAAK,OAAA;AACH,YAAA,qBAAOQ,GAAA,CAACC,WAAAA,EAAAA;gBAAYC,IAAAA,EAAMT,WAAAA;gBAAaC,OAAAA,EAASA;;QAElD,KAAK,MAAA;YACH,IAAI,OAAOK,iBAAiB,QAAA,EAAU;AACpC,gBAAA,qBAAOC,GAAA,CAACG,UAAAA,EAAAA;AAAYP,oBAAAA,QAAAA,EAAAA,UAAAA,CAAWQ,SAASL,YAAAA,CAAAA,EAAe;wBAAEM,SAAAA,EAAW;AAAO,qBAAA;;AAC7E,YAAA;QAEF,KAAK,MAAA;YACH,IAAIZ,WAAAA,KAAgB,QAAA,EAClB,qBACEO,GAAA,CAACG,UAAAA,EAAAA;AACCG,gBAAAA,YAAAA,EAAYT,aAAAA,CAAc;oBACxBU,EAAAA,EAAI,gCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;AACD,gBAAA,QAAA,EAAA;;AAIL,YAAA,IAAI,OAAOT,YAAAA,KAAiB,QAAA,IAAY,OAAOA,iBAAiB,QAAA,EAAU;AACxE,gBAAA,qBAAOC,GAAA,CAACG,UAAAA,EAAAA;8BAAYM,WAAAA,CAAYV,YAAAA;;AAClC,YAAA;QAEF,KAAK,KAAA;YACH,IAAIN,WAAAA,KAAgB,QAAA,EAClB,qBACEO,GAAA,CAACG,UAAAA,EAAAA;AACCG,gBAAAA,YAAAA,EAAYT,aAAAA,CAAc;oBACxBU,EAAAA,EAAI,gCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;AACD,gBAAA,QAAA,EAAA;;YAKL,IAAI,OAAOT,iBAAiB,QAAA,EAAU;AACpC,gBAAA,qBAAOC,GAAA,CAACG,UAAAA,EAAAA;AAAYO,oBAAAA,QAAAA,EAAAA,gBAAAA,CAAiBX,YAAAA,CAAAA,EAAeY,WAAAA;;AACtD,YAAA;QACF,KAAK,MAAA;YACH,IAAI,OAAOZ,iBAAiB,QAAA,EAAU;AACpC,gBAAA,qBAAOC,GAAA,CAACG,UAAAA,EAAAA;AAAYJ,oBAAAA,QAAAA,EAAAA;;AACtB,YAAA;AAEF,QAAA;AACE,YAAA,qBACEC,GAAA,CAACG,UAAAA,EAAAA;AACCG,gBAAAA,YAAAA,EAAYT,aAAAA,CAAc;oBACxBU,EAAAA,EAAI,gCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;AACD,gBAAA,QAAA,EAAA;;AAIP;AACF;;;;"}
|
|
@@ -10,6 +10,7 @@ var createAssetUrl = require('../../utils/createAssetUrl.js');
|
|
|
10
10
|
require('byte-size');
|
|
11
11
|
require('date-fns');
|
|
12
12
|
var getTrad = require('../../utils/getTrad.js');
|
|
13
|
+
require('@strapi/admin/strapi-admin');
|
|
13
14
|
require('qs');
|
|
14
15
|
var getFileExtension = require('../../utils/getFileExtension.js');
|
|
15
16
|
var prefixFileUrlWithBackendUrl = require('../../utils/prefixFileUrlWithBackendUrl.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewCell.js","sources":["../../../../admin/src/components/TableList/PreviewCell.tsx"],"sourcesContent":["import { Avatar, Box, Flex } from '@strapi/design-system';\nimport {\n File as FileIcon,\n FileCsv,\n FilePdf,\n FileXls,\n FileZip,\n Folder,\n VolumeUp,\n} from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ASSET_TYPES } from '../../enums';\nimport {\n createAssetUrl,\n getFileExtension,\n getTrad,\n prefixFileUrlWithBackendUrl,\n} from '../../utils';\nimport { VideoPreview } from '../AssetCard/VideoPreview';\n\nimport type { File } from '../../../../shared/contracts/files';\n\nconst VideoPreviewWrapper = styled(Box)`\n figure {\n width: ${({ theme }) => theme.spaces[7]};\n height: ${({ theme }) => theme.spaces[7]};\n }\n\n canvas,\n video {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 50%;\n }\n`;\n\ninterface PreviewCellProps {\n content: File;\n type?: string;\n}\n\nexport const PreviewCell = ({ type, content }: PreviewCellProps) => {\n const { formatMessage } = useIntl();\n if (type === 'folder') {\n return (\n <Flex\n justifyContent=\"center\"\n background=\"secondary100\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n borderRadius=\"50%\"\n >\n <Folder\n aria-label={formatMessage({\n id: getTrad('header.actions.add-assets.folder'),\n defaultMessage: 'folder',\n })}\n fill=\"secondary500\"\n width=\"1.6rem\"\n height=\"1.6rem\"\n />\n </Flex>\n );\n }\n\n const { alternativeText, ext, formats, isLocal, isUrlSigned, mime, name, url } = content;\n\n const fileExtension = getFileExtension(ext);\n\n if (mime?.includes(ASSET_TYPES.Image)) {\n const mediaURL =\n prefixFileUrlWithBackendUrl(formats?.thumbnail?.url) ?? prefixFileUrlWithBackendUrl(url);\n\n return (\n <Avatar.Item\n src={mediaURL}\n alt={alternativeText || undefined}\n // Only signed remote URLs need crossOrigin (cache collision with the\n // preview). Public/unsigned remote thumbnails must render without a\n // bucket CORS rule. See #26581.\n crossOrigin={!isLocal && isUrlSigned ? 'anonymous' : undefined}\n preview\n fallback={alternativeText}\n />\n );\n }\n\n if (mime?.includes(ASSET_TYPES.Video)) {\n return (\n <VideoPreviewWrapper>\n <VideoPreview\n url={createAssetUrl(content, true) || ''}\n mime={mime}\n alt={alternativeText ?? name}\n />\n </VideoPreviewWrapper>\n );\n }\n\n if (mime?.includes(ASSET_TYPES.Audio)) {\n return (\n <Flex\n background=\"neutral100\"\n borderRadius=\"100%\"\n color=\"neutral500\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n justifyContent=\"center\"\n >\n <VolumeUp width={16} height={16} />\n </Flex>\n );\n }\n\n type IconComponent = typeof FileIcon;\n const DOC_ICON_MAP: Record<string, IconComponent> = {\n pdf: FilePdf,\n csv: FileCsv,\n xls: FileXls,\n zip: FileZip,\n };\n\n const DocIcon = fileExtension ? DOC_ICON_MAP[fileExtension] || FileIcon : FileIcon;\n const testId =\n fileExtension && DOC_ICON_MAP[fileExtension] ? `file-${fileExtension}-icon` : 'file-icon';\n\n return (\n <Flex\n justifyContent=\"center\"\n borderRadius=\"100%\"\n background=\"neutral100\"\n color=\"neutral500\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n >\n <DocIcon width={16} height={16} data-testid={testId} />\n </Flex>\n );\n};\n"],"names":["VideoPreviewWrapper","styled","Box","theme","spaces","PreviewCell","type","content","formatMessage","useIntl","_jsx","Flex","justifyContent","background","width","height","borderRadius","Folder","aria-label","id","getTrad","defaultMessage","fill","alternativeText","ext","formats","isLocal","isUrlSigned","mime","name","url","fileExtension","getFileExtension","includes","ASSET_TYPES","Image","mediaURL","prefixFileUrlWithBackendUrl","thumbnail","Avatar","Item","src","alt","undefined","crossOrigin","preview","fallback","Video","VideoPreview","createAssetUrl","Audio","color","VolumeUp","DOC_ICON_MAP","pdf","FilePdf","csv","FileCsv","xls","FileXls","zip","FileZip","DocIcon","FileIcon","testId","data-testid"],"mappings":"
|
|
1
|
+
{"version":3,"file":"PreviewCell.js","sources":["../../../../admin/src/components/TableList/PreviewCell.tsx"],"sourcesContent":["import { Avatar, Box, Flex } from '@strapi/design-system';\nimport {\n File as FileIcon,\n FileCsv,\n FilePdf,\n FileXls,\n FileZip,\n Folder,\n VolumeUp,\n} from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ASSET_TYPES } from '../../enums';\nimport {\n createAssetUrl,\n getFileExtension,\n getTrad,\n prefixFileUrlWithBackendUrl,\n} from '../../utils';\nimport { VideoPreview } from '../AssetCard/VideoPreview';\n\nimport type { File } from '../../../../shared/contracts/files';\n\nconst VideoPreviewWrapper = styled(Box)`\n figure {\n width: ${({ theme }) => theme.spaces[7]};\n height: ${({ theme }) => theme.spaces[7]};\n }\n\n canvas,\n video {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 50%;\n }\n`;\n\ninterface PreviewCellProps {\n content: File;\n type?: string;\n}\n\nexport const PreviewCell = ({ type, content }: PreviewCellProps) => {\n const { formatMessage } = useIntl();\n if (type === 'folder') {\n return (\n <Flex\n justifyContent=\"center\"\n background=\"secondary100\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n borderRadius=\"50%\"\n >\n <Folder\n aria-label={formatMessage({\n id: getTrad('header.actions.add-assets.folder'),\n defaultMessage: 'folder',\n })}\n fill=\"secondary500\"\n width=\"1.6rem\"\n height=\"1.6rem\"\n />\n </Flex>\n );\n }\n\n const { alternativeText, ext, formats, isLocal, isUrlSigned, mime, name, url } = content;\n\n const fileExtension = getFileExtension(ext);\n\n if (mime?.includes(ASSET_TYPES.Image)) {\n const mediaURL =\n prefixFileUrlWithBackendUrl(formats?.thumbnail?.url) ?? prefixFileUrlWithBackendUrl(url);\n\n return (\n <Avatar.Item\n src={mediaURL}\n alt={alternativeText || undefined}\n // Only signed remote URLs need crossOrigin (cache collision with the\n // preview). Public/unsigned remote thumbnails must render without a\n // bucket CORS rule. See #26581.\n crossOrigin={!isLocal && isUrlSigned ? 'anonymous' : undefined}\n preview\n fallback={alternativeText}\n />\n );\n }\n\n if (mime?.includes(ASSET_TYPES.Video)) {\n return (\n <VideoPreviewWrapper>\n <VideoPreview\n url={createAssetUrl(content, true) || ''}\n mime={mime}\n alt={alternativeText ?? name}\n />\n </VideoPreviewWrapper>\n );\n }\n\n if (mime?.includes(ASSET_TYPES.Audio)) {\n return (\n <Flex\n background=\"neutral100\"\n borderRadius=\"100%\"\n color=\"neutral500\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n justifyContent=\"center\"\n >\n <VolumeUp width={16} height={16} />\n </Flex>\n );\n }\n\n type IconComponent = typeof FileIcon;\n const DOC_ICON_MAP: Record<string, IconComponent> = {\n pdf: FilePdf,\n csv: FileCsv,\n xls: FileXls,\n zip: FileZip,\n };\n\n const DocIcon = fileExtension ? DOC_ICON_MAP[fileExtension] || FileIcon : FileIcon;\n const testId =\n fileExtension && DOC_ICON_MAP[fileExtension] ? `file-${fileExtension}-icon` : 'file-icon';\n\n return (\n <Flex\n justifyContent=\"center\"\n borderRadius=\"100%\"\n background=\"neutral100\"\n color=\"neutral500\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n >\n <DocIcon width={16} height={16} data-testid={testId} />\n </Flex>\n );\n};\n"],"names":["VideoPreviewWrapper","styled","Box","theme","spaces","PreviewCell","type","content","formatMessage","useIntl","_jsx","Flex","justifyContent","background","width","height","borderRadius","Folder","aria-label","id","getTrad","defaultMessage","fill","alternativeText","ext","formats","isLocal","isUrlSigned","mime","name","url","fileExtension","getFileExtension","includes","ASSET_TYPES","Image","mediaURL","prefixFileUrlWithBackendUrl","thumbnail","Avatar","Item","src","alt","undefined","crossOrigin","preview","fallback","Video","VideoPreview","createAssetUrl","Audio","color","VolumeUp","DOC_ICON_MAP","pdf","FilePdf","csv","FileCsv","xls","FileXls","zip","FileZip","DocIcon","FileIcon","testId","data-testid"],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ import { createAssetUrl } from '../../utils/createAssetUrl.mjs';
|
|
|
8
8
|
import 'byte-size';
|
|
9
9
|
import 'date-fns';
|
|
10
10
|
import { getTrad } from '../../utils/getTrad.mjs';
|
|
11
|
+
import '@strapi/admin/strapi-admin';
|
|
11
12
|
import 'qs';
|
|
12
13
|
import { getFileExtension } from '../../utils/getFileExtension.mjs';
|
|
13
14
|
import { prefixFileUrlWithBackendUrl } from '../../utils/prefixFileUrlWithBackendUrl.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewCell.mjs","sources":["../../../../admin/src/components/TableList/PreviewCell.tsx"],"sourcesContent":["import { Avatar, Box, Flex } from '@strapi/design-system';\nimport {\n File as FileIcon,\n FileCsv,\n FilePdf,\n FileXls,\n FileZip,\n Folder,\n VolumeUp,\n} from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ASSET_TYPES } from '../../enums';\nimport {\n createAssetUrl,\n getFileExtension,\n getTrad,\n prefixFileUrlWithBackendUrl,\n} from '../../utils';\nimport { VideoPreview } from '../AssetCard/VideoPreview';\n\nimport type { File } from '../../../../shared/contracts/files';\n\nconst VideoPreviewWrapper = styled(Box)`\n figure {\n width: ${({ theme }) => theme.spaces[7]};\n height: ${({ theme }) => theme.spaces[7]};\n }\n\n canvas,\n video {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 50%;\n }\n`;\n\ninterface PreviewCellProps {\n content: File;\n type?: string;\n}\n\nexport const PreviewCell = ({ type, content }: PreviewCellProps) => {\n const { formatMessage } = useIntl();\n if (type === 'folder') {\n return (\n <Flex\n justifyContent=\"center\"\n background=\"secondary100\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n borderRadius=\"50%\"\n >\n <Folder\n aria-label={formatMessage({\n id: getTrad('header.actions.add-assets.folder'),\n defaultMessage: 'folder',\n })}\n fill=\"secondary500\"\n width=\"1.6rem\"\n height=\"1.6rem\"\n />\n </Flex>\n );\n }\n\n const { alternativeText, ext, formats, isLocal, isUrlSigned, mime, name, url } = content;\n\n const fileExtension = getFileExtension(ext);\n\n if (mime?.includes(ASSET_TYPES.Image)) {\n const mediaURL =\n prefixFileUrlWithBackendUrl(formats?.thumbnail?.url) ?? prefixFileUrlWithBackendUrl(url);\n\n return (\n <Avatar.Item\n src={mediaURL}\n alt={alternativeText || undefined}\n // Only signed remote URLs need crossOrigin (cache collision with the\n // preview). Public/unsigned remote thumbnails must render without a\n // bucket CORS rule. See #26581.\n crossOrigin={!isLocal && isUrlSigned ? 'anonymous' : undefined}\n preview\n fallback={alternativeText}\n />\n );\n }\n\n if (mime?.includes(ASSET_TYPES.Video)) {\n return (\n <VideoPreviewWrapper>\n <VideoPreview\n url={createAssetUrl(content, true) || ''}\n mime={mime}\n alt={alternativeText ?? name}\n />\n </VideoPreviewWrapper>\n );\n }\n\n if (mime?.includes(ASSET_TYPES.Audio)) {\n return (\n <Flex\n background=\"neutral100\"\n borderRadius=\"100%\"\n color=\"neutral500\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n justifyContent=\"center\"\n >\n <VolumeUp width={16} height={16} />\n </Flex>\n );\n }\n\n type IconComponent = typeof FileIcon;\n const DOC_ICON_MAP: Record<string, IconComponent> = {\n pdf: FilePdf,\n csv: FileCsv,\n xls: FileXls,\n zip: FileZip,\n };\n\n const DocIcon = fileExtension ? DOC_ICON_MAP[fileExtension] || FileIcon : FileIcon;\n const testId =\n fileExtension && DOC_ICON_MAP[fileExtension] ? `file-${fileExtension}-icon` : 'file-icon';\n\n return (\n <Flex\n justifyContent=\"center\"\n borderRadius=\"100%\"\n background=\"neutral100\"\n color=\"neutral500\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n >\n <DocIcon width={16} height={16} data-testid={testId} />\n </Flex>\n );\n};\n"],"names":["VideoPreviewWrapper","styled","Box","theme","spaces","PreviewCell","type","content","formatMessage","useIntl","_jsx","Flex","justifyContent","background","width","height","borderRadius","Folder","aria-label","id","getTrad","defaultMessage","fill","alternativeText","ext","formats","isLocal","isUrlSigned","mime","name","url","fileExtension","getFileExtension","includes","ASSET_TYPES","Image","mediaURL","prefixFileUrlWithBackendUrl","thumbnail","Avatar","Item","src","alt","undefined","crossOrigin","preview","fallback","Video","VideoPreview","createAssetUrl","Audio","color","VolumeUp","DOC_ICON_MAP","pdf","FilePdf","csv","FileCsv","xls","FileXls","zip","FileZip","DocIcon","FileIcon","testId","data-testid"],"mappings":"
|
|
1
|
+
{"version":3,"file":"PreviewCell.mjs","sources":["../../../../admin/src/components/TableList/PreviewCell.tsx"],"sourcesContent":["import { Avatar, Box, Flex } from '@strapi/design-system';\nimport {\n File as FileIcon,\n FileCsv,\n FilePdf,\n FileXls,\n FileZip,\n Folder,\n VolumeUp,\n} from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ASSET_TYPES } from '../../enums';\nimport {\n createAssetUrl,\n getFileExtension,\n getTrad,\n prefixFileUrlWithBackendUrl,\n} from '../../utils';\nimport { VideoPreview } from '../AssetCard/VideoPreview';\n\nimport type { File } from '../../../../shared/contracts/files';\n\nconst VideoPreviewWrapper = styled(Box)`\n figure {\n width: ${({ theme }) => theme.spaces[7]};\n height: ${({ theme }) => theme.spaces[7]};\n }\n\n canvas,\n video {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 50%;\n }\n`;\n\ninterface PreviewCellProps {\n content: File;\n type?: string;\n}\n\nexport const PreviewCell = ({ type, content }: PreviewCellProps) => {\n const { formatMessage } = useIntl();\n if (type === 'folder') {\n return (\n <Flex\n justifyContent=\"center\"\n background=\"secondary100\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n borderRadius=\"50%\"\n >\n <Folder\n aria-label={formatMessage({\n id: getTrad('header.actions.add-assets.folder'),\n defaultMessage: 'folder',\n })}\n fill=\"secondary500\"\n width=\"1.6rem\"\n height=\"1.6rem\"\n />\n </Flex>\n );\n }\n\n const { alternativeText, ext, formats, isLocal, isUrlSigned, mime, name, url } = content;\n\n const fileExtension = getFileExtension(ext);\n\n if (mime?.includes(ASSET_TYPES.Image)) {\n const mediaURL =\n prefixFileUrlWithBackendUrl(formats?.thumbnail?.url) ?? prefixFileUrlWithBackendUrl(url);\n\n return (\n <Avatar.Item\n src={mediaURL}\n alt={alternativeText || undefined}\n // Only signed remote URLs need crossOrigin (cache collision with the\n // preview). Public/unsigned remote thumbnails must render without a\n // bucket CORS rule. See #26581.\n crossOrigin={!isLocal && isUrlSigned ? 'anonymous' : undefined}\n preview\n fallback={alternativeText}\n />\n );\n }\n\n if (mime?.includes(ASSET_TYPES.Video)) {\n return (\n <VideoPreviewWrapper>\n <VideoPreview\n url={createAssetUrl(content, true) || ''}\n mime={mime}\n alt={alternativeText ?? name}\n />\n </VideoPreviewWrapper>\n );\n }\n\n if (mime?.includes(ASSET_TYPES.Audio)) {\n return (\n <Flex\n background=\"neutral100\"\n borderRadius=\"100%\"\n color=\"neutral500\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n justifyContent=\"center\"\n >\n <VolumeUp width={16} height={16} />\n </Flex>\n );\n }\n\n type IconComponent = typeof FileIcon;\n const DOC_ICON_MAP: Record<string, IconComponent> = {\n pdf: FilePdf,\n csv: FileCsv,\n xls: FileXls,\n zip: FileZip,\n };\n\n const DocIcon = fileExtension ? DOC_ICON_MAP[fileExtension] || FileIcon : FileIcon;\n const testId =\n fileExtension && DOC_ICON_MAP[fileExtension] ? `file-${fileExtension}-icon` : 'file-icon';\n\n return (\n <Flex\n justifyContent=\"center\"\n borderRadius=\"100%\"\n background=\"neutral100\"\n color=\"neutral500\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n >\n <DocIcon width={16} height={16} data-testid={testId} />\n </Flex>\n );\n};\n"],"names":["VideoPreviewWrapper","styled","Box","theme","spaces","PreviewCell","type","content","formatMessage","useIntl","_jsx","Flex","justifyContent","background","width","height","borderRadius","Folder","aria-label","id","getTrad","defaultMessage","fill","alternativeText","ext","formats","isLocal","isUrlSigned","mime","name","url","fileExtension","getFileExtension","includes","ASSET_TYPES","Image","mediaURL","prefixFileUrlWithBackendUrl","thumbnail","Avatar","Item","src","alt","undefined","crossOrigin","preview","fallback","Video","VideoPreview","createAssetUrl","Audio","color","VolumeUp","DOC_ICON_MAP","pdf","FilePdf","csv","FileCsv","xls","FileXls","zip","FileZip","DocIcon","FileIcon","testId","data-testid"],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ var constants = require('../../constants.js');
|
|
|
8
8
|
require('byte-size');
|
|
9
9
|
require('date-fns');
|
|
10
10
|
var getTrad = require('../../utils/getTrad.js');
|
|
11
|
+
require('@strapi/admin/strapi-admin');
|
|
11
12
|
require('qs');
|
|
12
13
|
require('../../utils/urlYupSchema.js');
|
|
13
14
|
var TableRows = require('./TableRows.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableList.js","sources":["../../../../admin/src/components/TableList/TableList.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport {\n Checkbox,\n IconButton,\n Table,\n Th,\n Thead,\n Tooltip,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { CaretDown, CaretUp } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { tableHeaders } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { TableRows } from './TableRows';\n\nimport type { File } from '../../../../shared/contracts/files';\nimport type { Folder } from '../../../../shared/contracts/folders';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\n\nexport interface FileRow extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface TableListProps {\n isFolderSelectionAllowed?: boolean;\n allowedTypes?: AllowedTypes[];\n assetCount?: number;\n folderCount?: number;\n indeterminate?: boolean;\n onChangeSort?: ((sortQuery: string) => void) | null;\n onChangeFolder?: ((folderId: number, folderPath?: string) => void) | null;\n onEditAsset?: ((asset: FileRow) => void) | null;\n onEditFolder?: ((folder: FolderRow) => void) | null;\n onSelectAll: (checked: boolean | string, rows?: FolderRow[] | FileRow[]) => void;\n onSelectOne: (element: FileRow | FolderRow) => void;\n rows?: FileRow[] | FolderRow[];\n selected?: FileRow[] | FolderRow[];\n shouldDisableBulkSelect?: boolean;\n sortQuery?: string;\n}\n\nexport const TableList = ({\n assetCount = 0,\n folderCount = 0,\n indeterminate = false,\n onChangeSort = null,\n onChangeFolder = null,\n onEditAsset = null,\n onEditFolder = null,\n onSelectAll,\n onSelectOne,\n rows = [],\n selected = [],\n shouldDisableBulkSelect = false,\n sortQuery = '',\n}: TableListProps) => {\n const { formatMessage } = useIntl();\n const [sortBy, sortOrder] = sortQuery.split(':');\n\n const handleClickSort = (isSorted: boolean, name: string) => {\n const nextSortOrder = isSorted && sortOrder === 'ASC' ? 'DESC' : 'ASC';\n const nextSort = `${name}:${nextSortOrder}`;\n\n onChangeSort?.(nextSort);\n };\n\n return (\n <Table colCount={tableHeaders.length + 2} rowCount={assetCount + folderCount + 1}>\n <Thead>\n <Tr>\n <Th>\n <Checkbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all folders & assets',\n })}\n disabled={shouldDisableBulkSelect}\n onCheckedChange={(checked) => onSelectAll(checked, rows)}\n checked={\n indeterminate && !shouldDisableBulkSelect\n ? 'indeterminate'\n : (assetCount > 0 || folderCount > 0) &&\n selected.length === assetCount + folderCount\n }\n />\n </Th>\n {tableHeaders.map(({ metadatas: { label, isSortable }, name, key }) => {\n const isSorted = sortBy === name;\n const isUp = sortOrder === 'ASC';\n const tableHeaderLabel = formatMessage(label);\n const sortLabel = formatMessage(\n { id: 'list.table.header.sort', defaultMessage: 'Sort on {label}' },\n { label: tableHeaderLabel }\n );\n\n return (\n <Th\n action={\n isSorted && (\n <IconButton\n label={sortLabel}\n onClick={() => handleClickSort(isSorted, name)}\n variant=\"ghost\"\n >\n {isUp ? <CaretUp /> : <CaretDown />}\n </IconButton>\n )\n }\n key={key}\n >\n <Tooltip label={isSortable ? sortLabel : tableHeaderLabel}>\n {isSortable ? (\n <Typography\n onClick={() => handleClickSort(isSorted, name)}\n tag={isSorted ? 'span' : 'button'}\n textColor=\"neutral600\"\n variant=\"sigma\"\n >\n {tableHeaderLabel}\n </Typography>\n ) : (\n <Typography textColor=\"neutral600\" variant=\"sigma\">\n {tableHeaderLabel}\n </Typography>\n )}\n </Tooltip>\n </Th>\n );\n })}\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: getTrad('list.table.header.actions'),\n defaultMessage: 'actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <TableRows\n onChangeFolder={onChangeFolder}\n onEditAsset={onEditAsset!}\n onEditFolder={onEditFolder!}\n rows={rows}\n onSelectOne={onSelectOne}\n selected={selected}\n />\n </Table>\n );\n};\n"],"names":["TableList","assetCount","folderCount","indeterminate","onChangeSort","onChangeFolder","onEditAsset","onEditFolder","onSelectAll","onSelectOne","rows","selected","shouldDisableBulkSelect","sortQuery","formatMessage","useIntl","sortBy","sortOrder","split","handleClickSort","isSorted","name","nextSortOrder","nextSort","_jsxs","Table","colCount","tableHeaders","length","rowCount","_jsx","Thead","Tr","Th","Checkbox","aria-label","id","getTrad","defaultMessage","disabled","onCheckedChange","checked","map","metadatas","label","isSortable","key","isUp","tableHeaderLabel","sortLabel","action","IconButton","onClick","variant","CaretUp","CaretDown","Tooltip","Typography","tag","textColor","VisuallyHidden","TableRows"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TableList.js","sources":["../../../../admin/src/components/TableList/TableList.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport {\n Checkbox,\n IconButton,\n Table,\n Th,\n Thead,\n Tooltip,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { CaretDown, CaretUp } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { tableHeaders } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { TableRows } from './TableRows';\n\nimport type { File } from '../../../../shared/contracts/files';\nimport type { Folder } from '../../../../shared/contracts/folders';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\n\nexport interface FileRow extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface TableListProps {\n isFolderSelectionAllowed?: boolean;\n allowedTypes?: AllowedTypes[];\n assetCount?: number;\n folderCount?: number;\n indeterminate?: boolean;\n onChangeSort?: ((sortQuery: string) => void) | null;\n onChangeFolder?: ((folderId: number, folderPath?: string) => void) | null;\n onEditAsset?: ((asset: FileRow) => void) | null;\n onEditFolder?: ((folder: FolderRow) => void) | null;\n onSelectAll: (checked: boolean | string, rows?: FolderRow[] | FileRow[]) => void;\n onSelectOne: (element: FileRow | FolderRow) => void;\n rows?: FileRow[] | FolderRow[];\n selected?: FileRow[] | FolderRow[];\n shouldDisableBulkSelect?: boolean;\n sortQuery?: string;\n}\n\nexport const TableList = ({\n assetCount = 0,\n folderCount = 0,\n indeterminate = false,\n onChangeSort = null,\n onChangeFolder = null,\n onEditAsset = null,\n onEditFolder = null,\n onSelectAll,\n onSelectOne,\n rows = [],\n selected = [],\n shouldDisableBulkSelect = false,\n sortQuery = '',\n}: TableListProps) => {\n const { formatMessage } = useIntl();\n const [sortBy, sortOrder] = sortQuery.split(':');\n\n const handleClickSort = (isSorted: boolean, name: string) => {\n const nextSortOrder = isSorted && sortOrder === 'ASC' ? 'DESC' : 'ASC';\n const nextSort = `${name}:${nextSortOrder}`;\n\n onChangeSort?.(nextSort);\n };\n\n return (\n <Table colCount={tableHeaders.length + 2} rowCount={assetCount + folderCount + 1}>\n <Thead>\n <Tr>\n <Th>\n <Checkbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all folders & assets',\n })}\n disabled={shouldDisableBulkSelect}\n onCheckedChange={(checked) => onSelectAll(checked, rows)}\n checked={\n indeterminate && !shouldDisableBulkSelect\n ? 'indeterminate'\n : (assetCount > 0 || folderCount > 0) &&\n selected.length === assetCount + folderCount\n }\n />\n </Th>\n {tableHeaders.map(({ metadatas: { label, isSortable }, name, key }) => {\n const isSorted = sortBy === name;\n const isUp = sortOrder === 'ASC';\n const tableHeaderLabel = formatMessage(label);\n const sortLabel = formatMessage(\n { id: 'list.table.header.sort', defaultMessage: 'Sort on {label}' },\n { label: tableHeaderLabel }\n );\n\n return (\n <Th\n action={\n isSorted && (\n <IconButton\n label={sortLabel}\n onClick={() => handleClickSort(isSorted, name)}\n variant=\"ghost\"\n >\n {isUp ? <CaretUp /> : <CaretDown />}\n </IconButton>\n )\n }\n key={key}\n >\n <Tooltip label={isSortable ? sortLabel : tableHeaderLabel}>\n {isSortable ? (\n <Typography\n onClick={() => handleClickSort(isSorted, name)}\n tag={isSorted ? 'span' : 'button'}\n textColor=\"neutral600\"\n variant=\"sigma\"\n >\n {tableHeaderLabel}\n </Typography>\n ) : (\n <Typography textColor=\"neutral600\" variant=\"sigma\">\n {tableHeaderLabel}\n </Typography>\n )}\n </Tooltip>\n </Th>\n );\n })}\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: getTrad('list.table.header.actions'),\n defaultMessage: 'actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <TableRows\n onChangeFolder={onChangeFolder}\n onEditAsset={onEditAsset!}\n onEditFolder={onEditFolder!}\n rows={rows}\n onSelectOne={onSelectOne}\n selected={selected}\n />\n </Table>\n );\n};\n"],"names":["TableList","assetCount","folderCount","indeterminate","onChangeSort","onChangeFolder","onEditAsset","onEditFolder","onSelectAll","onSelectOne","rows","selected","shouldDisableBulkSelect","sortQuery","formatMessage","useIntl","sortBy","sortOrder","split","handleClickSort","isSorted","name","nextSortOrder","nextSort","_jsxs","Table","colCount","tableHeaders","length","rowCount","_jsx","Thead","Tr","Th","Checkbox","aria-label","id","getTrad","defaultMessage","disabled","onCheckedChange","checked","map","metadatas","label","isSortable","key","isUp","tableHeaderLabel","sortLabel","action","IconButton","onClick","variant","CaretUp","CaretDown","Tooltip","Typography","tag","textColor","VisuallyHidden","TableRows"],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import { tableHeaders } from '../../constants.mjs';
|
|
|
6
6
|
import 'byte-size';
|
|
7
7
|
import 'date-fns';
|
|
8
8
|
import { getTrad } from '../../utils/getTrad.mjs';
|
|
9
|
+
import '@strapi/admin/strapi-admin';
|
|
9
10
|
import 'qs';
|
|
10
11
|
import '../../utils/urlYupSchema.mjs';
|
|
11
12
|
import { TableRows } from './TableRows.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableList.mjs","sources":["../../../../admin/src/components/TableList/TableList.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport {\n Checkbox,\n IconButton,\n Table,\n Th,\n Thead,\n Tooltip,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { CaretDown, CaretUp } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { tableHeaders } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { TableRows } from './TableRows';\n\nimport type { File } from '../../../../shared/contracts/files';\nimport type { Folder } from '../../../../shared/contracts/folders';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\n\nexport interface FileRow extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface TableListProps {\n isFolderSelectionAllowed?: boolean;\n allowedTypes?: AllowedTypes[];\n assetCount?: number;\n folderCount?: number;\n indeterminate?: boolean;\n onChangeSort?: ((sortQuery: string) => void) | null;\n onChangeFolder?: ((folderId: number, folderPath?: string) => void) | null;\n onEditAsset?: ((asset: FileRow) => void) | null;\n onEditFolder?: ((folder: FolderRow) => void) | null;\n onSelectAll: (checked: boolean | string, rows?: FolderRow[] | FileRow[]) => void;\n onSelectOne: (element: FileRow | FolderRow) => void;\n rows?: FileRow[] | FolderRow[];\n selected?: FileRow[] | FolderRow[];\n shouldDisableBulkSelect?: boolean;\n sortQuery?: string;\n}\n\nexport const TableList = ({\n assetCount = 0,\n folderCount = 0,\n indeterminate = false,\n onChangeSort = null,\n onChangeFolder = null,\n onEditAsset = null,\n onEditFolder = null,\n onSelectAll,\n onSelectOne,\n rows = [],\n selected = [],\n shouldDisableBulkSelect = false,\n sortQuery = '',\n}: TableListProps) => {\n const { formatMessage } = useIntl();\n const [sortBy, sortOrder] = sortQuery.split(':');\n\n const handleClickSort = (isSorted: boolean, name: string) => {\n const nextSortOrder = isSorted && sortOrder === 'ASC' ? 'DESC' : 'ASC';\n const nextSort = `${name}:${nextSortOrder}`;\n\n onChangeSort?.(nextSort);\n };\n\n return (\n <Table colCount={tableHeaders.length + 2} rowCount={assetCount + folderCount + 1}>\n <Thead>\n <Tr>\n <Th>\n <Checkbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all folders & assets',\n })}\n disabled={shouldDisableBulkSelect}\n onCheckedChange={(checked) => onSelectAll(checked, rows)}\n checked={\n indeterminate && !shouldDisableBulkSelect\n ? 'indeterminate'\n : (assetCount > 0 || folderCount > 0) &&\n selected.length === assetCount + folderCount\n }\n />\n </Th>\n {tableHeaders.map(({ metadatas: { label, isSortable }, name, key }) => {\n const isSorted = sortBy === name;\n const isUp = sortOrder === 'ASC';\n const tableHeaderLabel = formatMessage(label);\n const sortLabel = formatMessage(\n { id: 'list.table.header.sort', defaultMessage: 'Sort on {label}' },\n { label: tableHeaderLabel }\n );\n\n return (\n <Th\n action={\n isSorted && (\n <IconButton\n label={sortLabel}\n onClick={() => handleClickSort(isSorted, name)}\n variant=\"ghost\"\n >\n {isUp ? <CaretUp /> : <CaretDown />}\n </IconButton>\n )\n }\n key={key}\n >\n <Tooltip label={isSortable ? sortLabel : tableHeaderLabel}>\n {isSortable ? (\n <Typography\n onClick={() => handleClickSort(isSorted, name)}\n tag={isSorted ? 'span' : 'button'}\n textColor=\"neutral600\"\n variant=\"sigma\"\n >\n {tableHeaderLabel}\n </Typography>\n ) : (\n <Typography textColor=\"neutral600\" variant=\"sigma\">\n {tableHeaderLabel}\n </Typography>\n )}\n </Tooltip>\n </Th>\n );\n })}\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: getTrad('list.table.header.actions'),\n defaultMessage: 'actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <TableRows\n onChangeFolder={onChangeFolder}\n onEditAsset={onEditAsset!}\n onEditFolder={onEditFolder!}\n rows={rows}\n onSelectOne={onSelectOne}\n selected={selected}\n />\n </Table>\n );\n};\n"],"names":["TableList","assetCount","folderCount","indeterminate","onChangeSort","onChangeFolder","onEditAsset","onEditFolder","onSelectAll","onSelectOne","rows","selected","shouldDisableBulkSelect","sortQuery","formatMessage","useIntl","sortBy","sortOrder","split","handleClickSort","isSorted","name","nextSortOrder","nextSort","_jsxs","Table","colCount","tableHeaders","length","rowCount","_jsx","Thead","Tr","Th","Checkbox","aria-label","id","getTrad","defaultMessage","disabled","onCheckedChange","checked","map","metadatas","label","isSortable","key","isUp","tableHeaderLabel","sortLabel","action","IconButton","onClick","variant","CaretUp","CaretDown","Tooltip","Typography","tag","textColor","VisuallyHidden","TableRows"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TableList.mjs","sources":["../../../../admin/src/components/TableList/TableList.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport {\n Checkbox,\n IconButton,\n Table,\n Th,\n Thead,\n Tooltip,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { CaretDown, CaretUp } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { tableHeaders } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { TableRows } from './TableRows';\n\nimport type { File } from '../../../../shared/contracts/files';\nimport type { Folder } from '../../../../shared/contracts/folders';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\n\nexport interface FileRow extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface TableListProps {\n isFolderSelectionAllowed?: boolean;\n allowedTypes?: AllowedTypes[];\n assetCount?: number;\n folderCount?: number;\n indeterminate?: boolean;\n onChangeSort?: ((sortQuery: string) => void) | null;\n onChangeFolder?: ((folderId: number, folderPath?: string) => void) | null;\n onEditAsset?: ((asset: FileRow) => void) | null;\n onEditFolder?: ((folder: FolderRow) => void) | null;\n onSelectAll: (checked: boolean | string, rows?: FolderRow[] | FileRow[]) => void;\n onSelectOne: (element: FileRow | FolderRow) => void;\n rows?: FileRow[] | FolderRow[];\n selected?: FileRow[] | FolderRow[];\n shouldDisableBulkSelect?: boolean;\n sortQuery?: string;\n}\n\nexport const TableList = ({\n assetCount = 0,\n folderCount = 0,\n indeterminate = false,\n onChangeSort = null,\n onChangeFolder = null,\n onEditAsset = null,\n onEditFolder = null,\n onSelectAll,\n onSelectOne,\n rows = [],\n selected = [],\n shouldDisableBulkSelect = false,\n sortQuery = '',\n}: TableListProps) => {\n const { formatMessage } = useIntl();\n const [sortBy, sortOrder] = sortQuery.split(':');\n\n const handleClickSort = (isSorted: boolean, name: string) => {\n const nextSortOrder = isSorted && sortOrder === 'ASC' ? 'DESC' : 'ASC';\n const nextSort = `${name}:${nextSortOrder}`;\n\n onChangeSort?.(nextSort);\n };\n\n return (\n <Table colCount={tableHeaders.length + 2} rowCount={assetCount + folderCount + 1}>\n <Thead>\n <Tr>\n <Th>\n <Checkbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all folders & assets',\n })}\n disabled={shouldDisableBulkSelect}\n onCheckedChange={(checked) => onSelectAll(checked, rows)}\n checked={\n indeterminate && !shouldDisableBulkSelect\n ? 'indeterminate'\n : (assetCount > 0 || folderCount > 0) &&\n selected.length === assetCount + folderCount\n }\n />\n </Th>\n {tableHeaders.map(({ metadatas: { label, isSortable }, name, key }) => {\n const isSorted = sortBy === name;\n const isUp = sortOrder === 'ASC';\n const tableHeaderLabel = formatMessage(label);\n const sortLabel = formatMessage(\n { id: 'list.table.header.sort', defaultMessage: 'Sort on {label}' },\n { label: tableHeaderLabel }\n );\n\n return (\n <Th\n action={\n isSorted && (\n <IconButton\n label={sortLabel}\n onClick={() => handleClickSort(isSorted, name)}\n variant=\"ghost\"\n >\n {isUp ? <CaretUp /> : <CaretDown />}\n </IconButton>\n )\n }\n key={key}\n >\n <Tooltip label={isSortable ? sortLabel : tableHeaderLabel}>\n {isSortable ? (\n <Typography\n onClick={() => handleClickSort(isSorted, name)}\n tag={isSorted ? 'span' : 'button'}\n textColor=\"neutral600\"\n variant=\"sigma\"\n >\n {tableHeaderLabel}\n </Typography>\n ) : (\n <Typography textColor=\"neutral600\" variant=\"sigma\">\n {tableHeaderLabel}\n </Typography>\n )}\n </Tooltip>\n </Th>\n );\n })}\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: getTrad('list.table.header.actions'),\n defaultMessage: 'actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <TableRows\n onChangeFolder={onChangeFolder}\n onEditAsset={onEditAsset!}\n onEditFolder={onEditFolder!}\n rows={rows}\n onSelectOne={onSelectOne}\n selected={selected}\n />\n </Table>\n );\n};\n"],"names":["TableList","assetCount","folderCount","indeterminate","onChangeSort","onChangeFolder","onEditAsset","onEditFolder","onSelectAll","onSelectOne","rows","selected","shouldDisableBulkSelect","sortQuery","formatMessage","useIntl","sortBy","sortOrder","split","handleClickSort","isSorted","name","nextSortOrder","nextSort","_jsxs","Table","colCount","tableHeaders","length","rowCount","_jsx","Thead","Tr","Th","Checkbox","aria-label","id","getTrad","defaultMessage","disabled","onCheckedChange","checked","map","metadatas","label","isSortable","key","isUp","tableHeaderLabel","sortLabel","action","IconButton","onClick","variant","CaretUp","CaretDown","Tooltip","Typography","tag","textColor","VisuallyHidden","TableRows"],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ var constants = require('../../constants.js');
|
|
|
9
9
|
require('byte-size');
|
|
10
10
|
require('date-fns');
|
|
11
11
|
var getTrad = require('../../utils/getTrad.js');
|
|
12
|
+
require('@strapi/admin/strapi-admin');
|
|
12
13
|
require('qs');
|
|
13
14
|
require('../../utils/urlYupSchema.js');
|
|
14
15
|
var CellContent = require('./CellContent.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableRows.js","sources":["../../../../admin/src/components/TableList/TableRows.tsx"],"sourcesContent":["import { Checkbox, Flex, IconButton, Tbody, Td, Tr } from '@strapi/design-system';\nimport { Eye, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { tableHeaders as cells } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { CellContent } from './CellContent';\n\nimport type { File } from '../../../../shared/contracts/files';\nimport type { Folder } from '../../../../shared/contracts/folders';\n\ninterface FileRow extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\ninterface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface TableRowsProps {\n onChangeFolder?: ((folderId: number, folderPath?: string) => void) | null;\n onEditAsset: (asset: FileRow) => void;\n onEditFolder: (folder: FolderRow) => void;\n onSelectOne: (element: FileRow | FolderRow) => void;\n rows: FileRow[] | FolderRow[];\n selected: FileRow[] | FolderRow[];\n}\n\nexport const TableRows = ({\n onChangeFolder = null,\n onEditAsset,\n onEditFolder,\n onSelectOne,\n rows = [],\n selected = [],\n}: TableRowsProps) => {\n const { formatMessage } = useIntl();\n\n const handleRowClickFn = (\n element: FileRow | FolderRow,\n id: number,\n path: FolderRow['path'],\n elementType?: string\n ) => {\n if (elementType === 'asset') {\n onEditAsset(element as FileRow);\n } else {\n if (onChangeFolder) {\n onChangeFolder(id, path);\n }\n }\n };\n\n return (\n <Tbody>\n {rows.map((element) => {\n const { path, id, isSelectable, name, folderURL, type: contentType } = element;\n\n const isSelected = !!selected.find(\n (currentRow) => currentRow.id === id && currentRow.type === contentType\n );\n\n return (\n <Tr\n key={`${contentType}-${id}`}\n onClick={() => handleRowClickFn(element, id, path || undefined, contentType)}\n >\n <Td onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label={formatMessage(\n {\n id: contentType === 'asset' ? 'list-assets-select' : 'list.folder.select',\n defaultMessage:\n contentType === 'asset' ? 'Select {name} asset' : 'Select {name} folder',\n },\n { name }\n )}\n disabled={!isSelectable}\n onCheckedChange={() => onSelectOne(element)}\n onPointerDown={(e) => {\n e.preventDefault();\n }}\n checked={isSelected}\n />\n </Td>\n {cells.map(({ name, type: cellType }) => {\n return (\n <Td key={name}>\n <CellContent\n content={element as FileRow}\n cellType={cellType}\n contentType={contentType}\n name={name}\n />\n </Td>\n );\n })}\n\n <Td onClick={(e) => e.stopPropagation()}>\n <Flex justifyContent=\"flex-end\">\n {contentType === 'folder' &&\n (folderURL ? (\n <IconButton\n tag={Link}\n label={formatMessage({\n id: getTrad('list.folders.link-label'),\n defaultMessage: 'Access folder',\n })}\n to={folderURL}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n ) : (\n <IconButton\n tag=\"button\"\n label={formatMessage({\n id: getTrad('list.folders.link-label'),\n defaultMessage: 'Access folder',\n })}\n onClick={() => onChangeFolder && onChangeFolder(id)}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n ))}\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.edit'),\n defaultMessage: 'Edit',\n })}\n onClick={() =>\n contentType === 'asset'\n ? onEditAsset(element as FileRow)\n : onEditFolder(element as FolderRow)\n }\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n </Flex>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n );\n};\n"],"names":["TableRows","onChangeFolder","onEditAsset","onEditFolder","onSelectOne","rows","selected","formatMessage","useIntl","handleRowClickFn","element","id","path","elementType","_jsx","Tbody","map","isSelectable","name","folderURL","type","contentType","isSelected","find","currentRow","_jsxs","Tr","onClick","undefined","Td","e","stopPropagation","Checkbox","aria-label","defaultMessage","disabled","onCheckedChange","onPointerDown","preventDefault","checked","cells","cellType","CellContent","content","Flex","justifyContent","IconButton","tag","Link","label","getTrad","to","variant","Eye","Pencil"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TableRows.js","sources":["../../../../admin/src/components/TableList/TableRows.tsx"],"sourcesContent":["import { Checkbox, Flex, IconButton, Tbody, Td, Tr } from '@strapi/design-system';\nimport { Eye, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { tableHeaders as cells } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { CellContent } from './CellContent';\n\nimport type { File } from '../../../../shared/contracts/files';\nimport type { Folder } from '../../../../shared/contracts/folders';\n\ninterface FileRow extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\ninterface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface TableRowsProps {\n onChangeFolder?: ((folderId: number, folderPath?: string) => void) | null;\n onEditAsset: (asset: FileRow) => void;\n onEditFolder: (folder: FolderRow) => void;\n onSelectOne: (element: FileRow | FolderRow) => void;\n rows: FileRow[] | FolderRow[];\n selected: FileRow[] | FolderRow[];\n}\n\nexport const TableRows = ({\n onChangeFolder = null,\n onEditAsset,\n onEditFolder,\n onSelectOne,\n rows = [],\n selected = [],\n}: TableRowsProps) => {\n const { formatMessage } = useIntl();\n\n const handleRowClickFn = (\n element: FileRow | FolderRow,\n id: number,\n path: FolderRow['path'],\n elementType?: string\n ) => {\n if (elementType === 'asset') {\n onEditAsset(element as FileRow);\n } else {\n if (onChangeFolder) {\n onChangeFolder(id, path);\n }\n }\n };\n\n return (\n <Tbody>\n {rows.map((element) => {\n const { path, id, isSelectable, name, folderURL, type: contentType } = element;\n\n const isSelected = !!selected.find(\n (currentRow) => currentRow.id === id && currentRow.type === contentType\n );\n\n return (\n <Tr\n key={`${contentType}-${id}`}\n onClick={() => handleRowClickFn(element, id, path || undefined, contentType)}\n >\n <Td onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label={formatMessage(\n {\n id: contentType === 'asset' ? 'list-assets-select' : 'list.folder.select',\n defaultMessage:\n contentType === 'asset' ? 'Select {name} asset' : 'Select {name} folder',\n },\n { name }\n )}\n disabled={!isSelectable}\n onCheckedChange={() => onSelectOne(element)}\n onPointerDown={(e) => {\n e.preventDefault();\n }}\n checked={isSelected}\n />\n </Td>\n {cells.map(({ name, type: cellType }) => {\n return (\n <Td key={name}>\n <CellContent\n content={element as FileRow}\n cellType={cellType}\n contentType={contentType}\n name={name}\n />\n </Td>\n );\n })}\n\n <Td onClick={(e) => e.stopPropagation()}>\n <Flex justifyContent=\"flex-end\">\n {contentType === 'folder' &&\n (folderURL ? (\n <IconButton\n tag={Link}\n label={formatMessage({\n id: getTrad('list.folders.link-label'),\n defaultMessage: 'Access folder',\n })}\n to={folderURL}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n ) : (\n <IconButton\n tag=\"button\"\n label={formatMessage({\n id: getTrad('list.folders.link-label'),\n defaultMessage: 'Access folder',\n })}\n onClick={() => onChangeFolder && onChangeFolder(id)}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n ))}\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.edit'),\n defaultMessage: 'Edit',\n })}\n onClick={() =>\n contentType === 'asset'\n ? onEditAsset(element as FileRow)\n : onEditFolder(element as FolderRow)\n }\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n </Flex>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n );\n};\n"],"names":["TableRows","onChangeFolder","onEditAsset","onEditFolder","onSelectOne","rows","selected","formatMessage","useIntl","handleRowClickFn","element","id","path","elementType","_jsx","Tbody","map","isSelectable","name","folderURL","type","contentType","isSelected","find","currentRow","_jsxs","Tr","onClick","undefined","Td","e","stopPropagation","Checkbox","aria-label","defaultMessage","disabled","onCheckedChange","onPointerDown","preventDefault","checked","cells","cellType","CellContent","content","Flex","justifyContent","IconButton","tag","Link","label","getTrad","to","variant","Eye","Pencil"],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import { tableHeaders } from '../../constants.mjs';
|
|
|
7
7
|
import 'byte-size';
|
|
8
8
|
import 'date-fns';
|
|
9
9
|
import { getTrad } from '../../utils/getTrad.mjs';
|
|
10
|
+
import '@strapi/admin/strapi-admin';
|
|
10
11
|
import 'qs';
|
|
11
12
|
import '../../utils/urlYupSchema.mjs';
|
|
12
13
|
import { CellContent } from './CellContent.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableRows.mjs","sources":["../../../../admin/src/components/TableList/TableRows.tsx"],"sourcesContent":["import { Checkbox, Flex, IconButton, Tbody, Td, Tr } from '@strapi/design-system';\nimport { Eye, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { tableHeaders as cells } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { CellContent } from './CellContent';\n\nimport type { File } from '../../../../shared/contracts/files';\nimport type { Folder } from '../../../../shared/contracts/folders';\n\ninterface FileRow extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\ninterface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface TableRowsProps {\n onChangeFolder?: ((folderId: number, folderPath?: string) => void) | null;\n onEditAsset: (asset: FileRow) => void;\n onEditFolder: (folder: FolderRow) => void;\n onSelectOne: (element: FileRow | FolderRow) => void;\n rows: FileRow[] | FolderRow[];\n selected: FileRow[] | FolderRow[];\n}\n\nexport const TableRows = ({\n onChangeFolder = null,\n onEditAsset,\n onEditFolder,\n onSelectOne,\n rows = [],\n selected = [],\n}: TableRowsProps) => {\n const { formatMessage } = useIntl();\n\n const handleRowClickFn = (\n element: FileRow | FolderRow,\n id: number,\n path: FolderRow['path'],\n elementType?: string\n ) => {\n if (elementType === 'asset') {\n onEditAsset(element as FileRow);\n } else {\n if (onChangeFolder) {\n onChangeFolder(id, path);\n }\n }\n };\n\n return (\n <Tbody>\n {rows.map((element) => {\n const { path, id, isSelectable, name, folderURL, type: contentType } = element;\n\n const isSelected = !!selected.find(\n (currentRow) => currentRow.id === id && currentRow.type === contentType\n );\n\n return (\n <Tr\n key={`${contentType}-${id}`}\n onClick={() => handleRowClickFn(element, id, path || undefined, contentType)}\n >\n <Td onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label={formatMessage(\n {\n id: contentType === 'asset' ? 'list-assets-select' : 'list.folder.select',\n defaultMessage:\n contentType === 'asset' ? 'Select {name} asset' : 'Select {name} folder',\n },\n { name }\n )}\n disabled={!isSelectable}\n onCheckedChange={() => onSelectOne(element)}\n onPointerDown={(e) => {\n e.preventDefault();\n }}\n checked={isSelected}\n />\n </Td>\n {cells.map(({ name, type: cellType }) => {\n return (\n <Td key={name}>\n <CellContent\n content={element as FileRow}\n cellType={cellType}\n contentType={contentType}\n name={name}\n />\n </Td>\n );\n })}\n\n <Td onClick={(e) => e.stopPropagation()}>\n <Flex justifyContent=\"flex-end\">\n {contentType === 'folder' &&\n (folderURL ? (\n <IconButton\n tag={Link}\n label={formatMessage({\n id: getTrad('list.folders.link-label'),\n defaultMessage: 'Access folder',\n })}\n to={folderURL}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n ) : (\n <IconButton\n tag=\"button\"\n label={formatMessage({\n id: getTrad('list.folders.link-label'),\n defaultMessage: 'Access folder',\n })}\n onClick={() => onChangeFolder && onChangeFolder(id)}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n ))}\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.edit'),\n defaultMessage: 'Edit',\n })}\n onClick={() =>\n contentType === 'asset'\n ? onEditAsset(element as FileRow)\n : onEditFolder(element as FolderRow)\n }\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n </Flex>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n );\n};\n"],"names":["TableRows","onChangeFolder","onEditAsset","onEditFolder","onSelectOne","rows","selected","formatMessage","useIntl","handleRowClickFn","element","id","path","elementType","_jsx","Tbody","map","isSelectable","name","folderURL","type","contentType","isSelected","find","currentRow","_jsxs","Tr","onClick","undefined","Td","e","stopPropagation","Checkbox","aria-label","defaultMessage","disabled","onCheckedChange","onPointerDown","preventDefault","checked","cells","cellType","CellContent","content","Flex","justifyContent","IconButton","tag","Link","label","getTrad","to","variant","Eye","Pencil"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TableRows.mjs","sources":["../../../../admin/src/components/TableList/TableRows.tsx"],"sourcesContent":["import { Checkbox, Flex, IconButton, Tbody, Td, Tr } from '@strapi/design-system';\nimport { Eye, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { tableHeaders as cells } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { CellContent } from './CellContent';\n\nimport type { File } from '../../../../shared/contracts/files';\nimport type { Folder } from '../../../../shared/contracts/folders';\n\ninterface FileRow extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\ninterface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface TableRowsProps {\n onChangeFolder?: ((folderId: number, folderPath?: string) => void) | null;\n onEditAsset: (asset: FileRow) => void;\n onEditFolder: (folder: FolderRow) => void;\n onSelectOne: (element: FileRow | FolderRow) => void;\n rows: FileRow[] | FolderRow[];\n selected: FileRow[] | FolderRow[];\n}\n\nexport const TableRows = ({\n onChangeFolder = null,\n onEditAsset,\n onEditFolder,\n onSelectOne,\n rows = [],\n selected = [],\n}: TableRowsProps) => {\n const { formatMessage } = useIntl();\n\n const handleRowClickFn = (\n element: FileRow | FolderRow,\n id: number,\n path: FolderRow['path'],\n elementType?: string\n ) => {\n if (elementType === 'asset') {\n onEditAsset(element as FileRow);\n } else {\n if (onChangeFolder) {\n onChangeFolder(id, path);\n }\n }\n };\n\n return (\n <Tbody>\n {rows.map((element) => {\n const { path, id, isSelectable, name, folderURL, type: contentType } = element;\n\n const isSelected = !!selected.find(\n (currentRow) => currentRow.id === id && currentRow.type === contentType\n );\n\n return (\n <Tr\n key={`${contentType}-${id}`}\n onClick={() => handleRowClickFn(element, id, path || undefined, contentType)}\n >\n <Td onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label={formatMessage(\n {\n id: contentType === 'asset' ? 'list-assets-select' : 'list.folder.select',\n defaultMessage:\n contentType === 'asset' ? 'Select {name} asset' : 'Select {name} folder',\n },\n { name }\n )}\n disabled={!isSelectable}\n onCheckedChange={() => onSelectOne(element)}\n onPointerDown={(e) => {\n e.preventDefault();\n }}\n checked={isSelected}\n />\n </Td>\n {cells.map(({ name, type: cellType }) => {\n return (\n <Td key={name}>\n <CellContent\n content={element as FileRow}\n cellType={cellType}\n contentType={contentType}\n name={name}\n />\n </Td>\n );\n })}\n\n <Td onClick={(e) => e.stopPropagation()}>\n <Flex justifyContent=\"flex-end\">\n {contentType === 'folder' &&\n (folderURL ? (\n <IconButton\n tag={Link}\n label={formatMessage({\n id: getTrad('list.folders.link-label'),\n defaultMessage: 'Access folder',\n })}\n to={folderURL}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n ) : (\n <IconButton\n tag=\"button\"\n label={formatMessage({\n id: getTrad('list.folders.link-label'),\n defaultMessage: 'Access folder',\n })}\n onClick={() => onChangeFolder && onChangeFolder(id)}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n ))}\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.edit'),\n defaultMessage: 'Edit',\n })}\n onClick={() =>\n contentType === 'asset'\n ? onEditAsset(element as FileRow)\n : onEditFolder(element as FolderRow)\n }\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n </Flex>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n );\n};\n"],"names":["TableRows","onChangeFolder","onEditAsset","onEditFolder","onSelectOne","rows","selected","formatMessage","useIntl","handleRowClickFn","element","id","path","elementType","_jsx","Tbody","map","isSelectable","name","folderURL","type","contentType","isSelected","find","currentRow","_jsxs","Tr","onClick","undefined","Td","e","stopPropagation","Checkbox","aria-label","defaultMessage","disabled","onCheckedChange","onPointerDown","preventDefault","checked","cells","cellType","CellContent","content","Flex","justifyContent","IconButton","tag","Link","label","getTrad","to","variant","Eye","Pencil"],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ var reactIntl = require('react-intl');
|
|
|
6
6
|
require('byte-size');
|
|
7
7
|
require('date-fns');
|
|
8
8
|
var getTrad = require('../../../utils/getTrad.js');
|
|
9
|
+
require('@strapi/admin/strapi-admin');
|
|
9
10
|
require('qs');
|
|
10
11
|
require('../../../utils/urlYupSchema.js');
|
|
11
12
|
var FromComputerForm = require('./FromComputerForm.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddAssetStep.js","sources":["../../../../../admin/src/components/UploadAssetDialog/AddAssetStep/AddAssetStep.tsx"],"sourcesContent":["import { Box, Divider, Modal, Tabs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\n\nimport { FromComputerForm } from './FromComputerForm';\nimport { FromUrlForm } from './FromUrlForm';\n\nimport type { RawFile, File } from '../../../../../shared/contracts/files';\n\nexport interface FileWithRawFile extends Omit<File, 'id' | 'hash'> {\n id?: string;\n hash?: string;\n rawFile: RawFile;\n}\n\ninterface AddAssetStepProps {\n onClose: () => void;\n onAddAsset: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const AddAssetStep = ({ onClose, onAddAsset, trackedLocation }: AddAssetStepProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n <Tabs.Root variant=\"simple\" defaultValue=\"computer\">\n <Box paddingLeft={8} paddingRight={8} paddingTop={6}>\n <Tabs.List\n aria-label={formatMessage({\n id: getTrad('tabs.title'),\n defaultMessage: 'How do you want to upload your assets?',\n })}\n >\n <Tabs.Trigger value=\"computer\">\n {formatMessage({\n id: getTrad('modal.nav.computer'),\n defaultMessage: 'From computer',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"url\">\n {formatMessage({\n id: getTrad('modal.nav.url'),\n defaultMessage: 'From URL',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n\n <Divider />\n </Box>\n <Tabs.Content value=\"computer\">\n <FromComputerForm\n onClose={onClose}\n onAddAssets={onAddAsset}\n trackedLocation={trackedLocation}\n />\n </Tabs.Content>\n <Tabs.Content value=\"url\">\n <FromUrlForm\n onClose={onClose}\n onAddAsset={onAddAsset}\n trackedLocation={trackedLocation}\n />\n </Tabs.Content>\n </Tabs.Root>\n </>\n );\n};\n"],"names":["AddAssetStep","onClose","onAddAsset","trackedLocation","formatMessage","useIntl","_jsxs","_Fragment","_jsx","Modal","Header","Title","id","getTrad","defaultMessage","Tabs","Root","variant","defaultValue","Box","paddingLeft","paddingRight","paddingTop","List","aria-label","Trigger","value","Divider","Content","FromComputerForm","onAddAssets","FromUrlForm"],"mappings":"
|
|
1
|
+
{"version":3,"file":"AddAssetStep.js","sources":["../../../../../admin/src/components/UploadAssetDialog/AddAssetStep/AddAssetStep.tsx"],"sourcesContent":["import { Box, Divider, Modal, Tabs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\n\nimport { FromComputerForm } from './FromComputerForm';\nimport { FromUrlForm } from './FromUrlForm';\n\nimport type { RawFile, File } from '../../../../../shared/contracts/files';\n\nexport interface FileWithRawFile extends Omit<File, 'id' | 'hash'> {\n id?: string;\n hash?: string;\n rawFile: RawFile;\n}\n\ninterface AddAssetStepProps {\n onClose: () => void;\n onAddAsset: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const AddAssetStep = ({ onClose, onAddAsset, trackedLocation }: AddAssetStepProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n <Tabs.Root variant=\"simple\" defaultValue=\"computer\">\n <Box paddingLeft={8} paddingRight={8} paddingTop={6}>\n <Tabs.List\n aria-label={formatMessage({\n id: getTrad('tabs.title'),\n defaultMessage: 'How do you want to upload your assets?',\n })}\n >\n <Tabs.Trigger value=\"computer\">\n {formatMessage({\n id: getTrad('modal.nav.computer'),\n defaultMessage: 'From computer',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"url\">\n {formatMessage({\n id: getTrad('modal.nav.url'),\n defaultMessage: 'From URL',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n\n <Divider />\n </Box>\n <Tabs.Content value=\"computer\">\n <FromComputerForm\n onClose={onClose}\n onAddAssets={onAddAsset}\n trackedLocation={trackedLocation}\n />\n </Tabs.Content>\n <Tabs.Content value=\"url\">\n <FromUrlForm\n onClose={onClose}\n onAddAsset={onAddAsset}\n trackedLocation={trackedLocation}\n />\n </Tabs.Content>\n </Tabs.Root>\n </>\n );\n};\n"],"names":["AddAssetStep","onClose","onAddAsset","trackedLocation","formatMessage","useIntl","_jsxs","_Fragment","_jsx","Modal","Header","Title","id","getTrad","defaultMessage","Tabs","Root","variant","defaultValue","Box","paddingLeft","paddingRight","paddingTop","List","aria-label","Trigger","value","Divider","Content","FromComputerForm","onAddAssets","FromUrlForm"],"mappings":";;;;;;;;;;;;;;AAsBO,MAAMA,eAAe,CAAC,EAAEC,OAAO,EAAEC,UAAU,EAAEC,eAAe,EAAqB,GAAA;IACtF,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,qBACEC,eAAA,CAAAC,mBAAA,EAAA;;AACE,0BAAAC,cAAA,CAACC,mBAAMC,MAAM,EAAA;wCACXF,cAAA,CAACC,mBAAME,KAAK,EAAA;8BACTP,aAAAA,CAAc;AACbQ,wBAAAA,EAAAA,EAAIC,eAAAA,CAAQ,2BAAA,CAAA;wBACZC,cAAAA,EAAgB;AAClB,qBAAA;;;AAGJ,0BAAAR,eAAA,CAACS,kBAAKC,IAAI,EAAA;gBAACC,OAAAA,EAAQ,QAAA;gBAASC,YAAAA,EAAa,UAAA;;kCACvCZ,eAAA,CAACa,gBAAAA,EAAAA;wBAAIC,WAAAA,EAAa,CAAA;wBAAGC,YAAAA,EAAc,CAAA;wBAAGC,UAAAA,EAAY,CAAA;;AAChD,0CAAAhB,eAAA,CAACS,kBAAKQ,IAAI,EAAA;AACRC,gCAAAA,YAAAA,EAAYpB,aAAAA,CAAc;AACxBQ,oCAAAA,EAAAA,EAAIC,eAAAA,CAAQ,YAAA,CAAA;oCACZC,cAAAA,EAAgB;AAClB,iCAAA,CAAA;;AAEA,kDAAAN,cAAA,CAACO,kBAAKU,OAAO,EAAA;wCAACC,KAAAA,EAAM,UAAA;kDACjBtB,aAAAA,CAAc;AACbQ,4CAAAA,EAAAA,EAAIC,eAAAA,CAAQ,oBAAA,CAAA;4CACZC,cAAAA,EAAgB;AAClB,yCAAA;;AAEF,kDAAAN,cAAA,CAACO,kBAAKU,OAAO,EAAA;wCAACC,KAAAA,EAAM,KAAA;kDACjBtB,aAAAA,CAAc;AACbQ,4CAAAA,EAAAA,EAAIC,eAAAA,CAAQ,eAAA,CAAA;4CACZC,cAAAA,EAAgB;AAClB,yCAAA;;;;0CAIJN,cAAA,CAACmB,oBAAAA,EAAAA,EAAAA;;;AAEH,kCAAAnB,cAAA,CAACO,kBAAKa,OAAO,EAAA;wBAACF,KAAAA,EAAM,UAAA;AAClB,wBAAA,QAAA,gBAAAlB,cAAA,CAACqB,iCAAAA,EAAAA;4BACC5B,OAAAA,EAASA,OAAAA;4BACT6B,WAAAA,EAAa5B,UAAAA;4BACbC,eAAAA,EAAiBA;;;AAGrB,kCAAAK,cAAA,CAACO,kBAAKa,OAAO,EAAA;wBAACF,KAAAA,EAAM,KAAA;AAClB,wBAAA,QAAA,gBAAAlB,cAAA,CAACuB,uBAAAA,EAAAA;4BACC9B,OAAAA,EAASA,OAAAA;4BACTC,UAAAA,EAAYA,UAAAA;4BACZC,eAAAA,EAAiBA;;;;;;;AAM7B;;;;"}
|
|
@@ -4,6 +4,7 @@ import { useIntl } from 'react-intl';
|
|
|
4
4
|
import 'byte-size';
|
|
5
5
|
import 'date-fns';
|
|
6
6
|
import { getTrad } from '../../../utils/getTrad.mjs';
|
|
7
|
+
import '@strapi/admin/strapi-admin';
|
|
7
8
|
import 'qs';
|
|
8
9
|
import '../../../utils/urlYupSchema.mjs';
|
|
9
10
|
import { FromComputerForm } from './FromComputerForm.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddAssetStep.mjs","sources":["../../../../../admin/src/components/UploadAssetDialog/AddAssetStep/AddAssetStep.tsx"],"sourcesContent":["import { Box, Divider, Modal, Tabs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\n\nimport { FromComputerForm } from './FromComputerForm';\nimport { FromUrlForm } from './FromUrlForm';\n\nimport type { RawFile, File } from '../../../../../shared/contracts/files';\n\nexport interface FileWithRawFile extends Omit<File, 'id' | 'hash'> {\n id?: string;\n hash?: string;\n rawFile: RawFile;\n}\n\ninterface AddAssetStepProps {\n onClose: () => void;\n onAddAsset: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const AddAssetStep = ({ onClose, onAddAsset, trackedLocation }: AddAssetStepProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n <Tabs.Root variant=\"simple\" defaultValue=\"computer\">\n <Box paddingLeft={8} paddingRight={8} paddingTop={6}>\n <Tabs.List\n aria-label={formatMessage({\n id: getTrad('tabs.title'),\n defaultMessage: 'How do you want to upload your assets?',\n })}\n >\n <Tabs.Trigger value=\"computer\">\n {formatMessage({\n id: getTrad('modal.nav.computer'),\n defaultMessage: 'From computer',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"url\">\n {formatMessage({\n id: getTrad('modal.nav.url'),\n defaultMessage: 'From URL',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n\n <Divider />\n </Box>\n <Tabs.Content value=\"computer\">\n <FromComputerForm\n onClose={onClose}\n onAddAssets={onAddAsset}\n trackedLocation={trackedLocation}\n />\n </Tabs.Content>\n <Tabs.Content value=\"url\">\n <FromUrlForm\n onClose={onClose}\n onAddAsset={onAddAsset}\n trackedLocation={trackedLocation}\n />\n </Tabs.Content>\n </Tabs.Root>\n </>\n );\n};\n"],"names":["AddAssetStep","onClose","onAddAsset","trackedLocation","formatMessage","useIntl","_jsxs","_Fragment","_jsx","Modal","Header","Title","id","getTrad","defaultMessage","Tabs","Root","variant","defaultValue","Box","paddingLeft","paddingRight","paddingTop","List","aria-label","Trigger","value","Divider","Content","FromComputerForm","onAddAssets","FromUrlForm"],"mappings":"
|
|
1
|
+
{"version":3,"file":"AddAssetStep.mjs","sources":["../../../../../admin/src/components/UploadAssetDialog/AddAssetStep/AddAssetStep.tsx"],"sourcesContent":["import { Box, Divider, Modal, Tabs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\n\nimport { FromComputerForm } from './FromComputerForm';\nimport { FromUrlForm } from './FromUrlForm';\n\nimport type { RawFile, File } from '../../../../../shared/contracts/files';\n\nexport interface FileWithRawFile extends Omit<File, 'id' | 'hash'> {\n id?: string;\n hash?: string;\n rawFile: RawFile;\n}\n\ninterface AddAssetStepProps {\n onClose: () => void;\n onAddAsset: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const AddAssetStep = ({ onClose, onAddAsset, trackedLocation }: AddAssetStepProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n <Tabs.Root variant=\"simple\" defaultValue=\"computer\">\n <Box paddingLeft={8} paddingRight={8} paddingTop={6}>\n <Tabs.List\n aria-label={formatMessage({\n id: getTrad('tabs.title'),\n defaultMessage: 'How do you want to upload your assets?',\n })}\n >\n <Tabs.Trigger value=\"computer\">\n {formatMessage({\n id: getTrad('modal.nav.computer'),\n defaultMessage: 'From computer',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"url\">\n {formatMessage({\n id: getTrad('modal.nav.url'),\n defaultMessage: 'From URL',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n\n <Divider />\n </Box>\n <Tabs.Content value=\"computer\">\n <FromComputerForm\n onClose={onClose}\n onAddAssets={onAddAsset}\n trackedLocation={trackedLocation}\n />\n </Tabs.Content>\n <Tabs.Content value=\"url\">\n <FromUrlForm\n onClose={onClose}\n onAddAsset={onAddAsset}\n trackedLocation={trackedLocation}\n />\n </Tabs.Content>\n </Tabs.Root>\n </>\n );\n};\n"],"names":["AddAssetStep","onClose","onAddAsset","trackedLocation","formatMessage","useIntl","_jsxs","_Fragment","_jsx","Modal","Header","Title","id","getTrad","defaultMessage","Tabs","Root","variant","defaultValue","Box","paddingLeft","paddingRight","paddingTop","List","aria-label","Trigger","value","Divider","Content","FromComputerForm","onAddAssets","FromUrlForm"],"mappings":";;;;;;;;;;;;AAsBO,MAAMA,eAAe,CAAC,EAAEC,OAAO,EAAEC,UAAU,EAAEC,eAAe,EAAqB,GAAA;IACtF,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,qBACEC,IAAA,CAAAC,QAAA,EAAA;;AACE,0BAAAC,GAAA,CAACC,MAAMC,MAAM,EAAA;wCACXF,GAAA,CAACC,MAAME,KAAK,EAAA;8BACTP,aAAAA,CAAc;AACbQ,wBAAAA,EAAAA,EAAIC,OAAAA,CAAQ,2BAAA,CAAA;wBACZC,cAAAA,EAAgB;AAClB,qBAAA;;;AAGJ,0BAAAR,IAAA,CAACS,KAAKC,IAAI,EAAA;gBAACC,OAAAA,EAAQ,QAAA;gBAASC,YAAAA,EAAa,UAAA;;kCACvCZ,IAAA,CAACa,GAAAA,EAAAA;wBAAIC,WAAAA,EAAa,CAAA;wBAAGC,YAAAA,EAAc,CAAA;wBAAGC,UAAAA,EAAY,CAAA;;AAChD,0CAAAhB,IAAA,CAACS,KAAKQ,IAAI,EAAA;AACRC,gCAAAA,YAAAA,EAAYpB,aAAAA,CAAc;AACxBQ,oCAAAA,EAAAA,EAAIC,OAAAA,CAAQ,YAAA,CAAA;oCACZC,cAAAA,EAAgB;AAClB,iCAAA,CAAA;;AAEA,kDAAAN,GAAA,CAACO,KAAKU,OAAO,EAAA;wCAACC,KAAAA,EAAM,UAAA;kDACjBtB,aAAAA,CAAc;AACbQ,4CAAAA,EAAAA,EAAIC,OAAAA,CAAQ,oBAAA,CAAA;4CACZC,cAAAA,EAAgB;AAClB,yCAAA;;AAEF,kDAAAN,GAAA,CAACO,KAAKU,OAAO,EAAA;wCAACC,KAAAA,EAAM,KAAA;kDACjBtB,aAAAA,CAAc;AACbQ,4CAAAA,EAAAA,EAAIC,OAAAA,CAAQ,eAAA,CAAA;4CACZC,cAAAA,EAAgB;AAClB,yCAAA;;;;0CAIJN,GAAA,CAACmB,OAAAA,EAAAA,EAAAA;;;AAEH,kCAAAnB,GAAA,CAACO,KAAKa,OAAO,EAAA;wBAACF,KAAAA,EAAM,UAAA;AAClB,wBAAA,QAAA,gBAAAlB,GAAA,CAACqB,gBAAAA,EAAAA;4BACC5B,OAAAA,EAASA,OAAAA;4BACT6B,WAAAA,EAAa5B,UAAAA;4BACbC,eAAAA,EAAiBA;;;AAGrB,kCAAAK,GAAA,CAACO,KAAKa,OAAO,EAAA;wBAACF,KAAAA,EAAM,KAAA;AAClB,wBAAA,QAAA,gBAAAlB,GAAA,CAACuB,WAAAA,EAAAA;4BACC9B,OAAAA,EAASA,OAAAA;4BACTC,UAAAA,EAAYA,UAAAA;4BACZC,eAAAA,EAAiBA;;;;;;;AAM7B;;;;"}
|
|
@@ -11,6 +11,7 @@ var useTracking = require('../../../hooks/useTracking.js');
|
|
|
11
11
|
require('byte-size');
|
|
12
12
|
require('date-fns');
|
|
13
13
|
var getTrad = require('../../../utils/getTrad.js');
|
|
14
|
+
require('@strapi/admin/strapi-admin');
|
|
14
15
|
require('qs');
|
|
15
16
|
var rawFileToAsset = require('../../../utils/rawFileToAsset.js');
|
|
16
17
|
require('../../../utils/urlYupSchema.js');
|
|
@@ -65,18 +66,13 @@ const FromComputerForm = ({ onClose, onAddAssets, trackedLocation })=>{
|
|
|
65
66
|
setDragOver(true);
|
|
66
67
|
};
|
|
67
68
|
const handleDragLeave = ()=>setDragOver(false);
|
|
68
|
-
const
|
|
69
|
+
const filesToAssets = async (fileList)=>{
|
|
70
|
+
const files = Array.from(fileList);
|
|
71
|
+
return Promise.all(files.map((file)=>rawFileToAsset.rawFileToAsset(file, constants.ASSET_SOURCES.Computer)));
|
|
72
|
+
};
|
|
73
|
+
const handleChange = async ()=>{
|
|
69
74
|
const files = inputRef.current?.files;
|
|
70
|
-
const assets = [];
|
|
71
|
-
if (files) {
|
|
72
|
-
for(let i = 0; i < files.length; i++){
|
|
73
|
-
const file = files.item(i);
|
|
74
|
-
if (file) {
|
|
75
|
-
const asset = rawFileToAsset.rawFileToAsset(file, constants.ASSET_SOURCES.Computer);
|
|
76
|
-
assets.push(asset);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
75
|
+
const assets = files ? await filesToAssets(files) : [];
|
|
80
76
|
if (trackedLocation) {
|
|
81
77
|
trackUsage('didSelectFile', {
|
|
82
78
|
source: 'computer',
|
|
@@ -85,18 +81,10 @@ const FromComputerForm = ({ onClose, onAddAssets, trackedLocation })=>{
|
|
|
85
81
|
}
|
|
86
82
|
onAddAssets(assets);
|
|
87
83
|
};
|
|
88
|
-
const handleDrop = (e)=>{
|
|
84
|
+
const handleDrop = async (e)=>{
|
|
89
85
|
e.preventDefault();
|
|
90
86
|
if (e?.dataTransfer?.files) {
|
|
91
|
-
const
|
|
92
|
-
const assets = [];
|
|
93
|
-
for(let i = 0; i < files.length; i++){
|
|
94
|
-
const file = files.item(i);
|
|
95
|
-
if (file) {
|
|
96
|
-
const asset = rawFileToAsset.rawFileToAsset(file, constants.ASSET_SOURCES.Computer);
|
|
97
|
-
assets.push(asset);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
87
|
+
const assets = await filesToAssets(e.dataTransfer.files);
|
|
100
88
|
onAddAssets(assets);
|
|
101
89
|
}
|
|
102
90
|
setDragOver(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FromComputerForm.js","sources":["../../../../../admin/src/components/UploadAssetDialog/AddAssetStep/FromComputerForm.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Modal, Typography } from '@strapi/design-system';\nimport { PlusCircle as PicturePlus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ASSET_SOURCES } from '../../../constants';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { getTrad, rawFileToAsset } from '../../../utils';\n\nimport type { FileWithRawFile } from './AddAssetStep';\n\nconst Wrapper = styled(Flex)`\n flex-direction: column;\n`;\n\nconst IconWrapper = styled.div`\n font-size: 6rem;\n\n svg path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nconst MediaBox = styled(Box)`\n border-style: dashed;\n`;\n\nconst OpaqueBox = styled(Box)`\n opacity: 0;\n cursor: pointer;\n`;\n\ninterface FromComputerFormProps {\n onClose: () => void;\n onAddAssets: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const FromComputerForm = ({\n onClose,\n onAddAssets,\n trackedLocation,\n}: FromComputerFormProps) => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const { trackUsage } = useTracking();\n\n const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n };\n\n const handleDragEnter = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setDragOver(true);\n };\n\n const handleDragLeave = () => setDragOver(false);\n\n const handleChange = () => {\n const files = inputRef.current?.files;\n const assets: FileWithRawFile[] = [];\n\n if (files) {\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (file) {\n const asset = rawFileToAsset(file, ASSET_SOURCES.Computer);\n assets.push(asset);\n }\n }\n }\n\n if (trackedLocation) {\n trackUsage('didSelectFile', { source: 'computer', location: trackedLocation });\n }\n\n onAddAssets(assets);\n };\n\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n\n if (e?.dataTransfer?.files) {\n const files = e.dataTransfer.files;\n const assets = [];\n\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (file) {\n const asset = rawFileToAsset(file, ASSET_SOURCES.Computer);\n assets.push(asset);\n }\n }\n\n onAddAssets(assets);\n }\n\n setDragOver(false);\n };\n\n return (\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <label>\n <MediaBox\n paddingTop={11}\n paddingBottom={11}\n hasRadius\n justifyContent=\"center\"\n borderColor={dragOver ? 'primary500' : 'neutral300'}\n background={dragOver ? 'primary100' : 'neutral100'}\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <Flex justifyContent=\"center\">\n <Wrapper>\n <IconWrapper>\n <PicturePlus aria-hidden width=\"3.2rem\" height=\"3.2rem\" />\n </IconWrapper>\n\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" textColor=\"neutral600\" tag=\"span\">\n {formatMessage({\n id: getTrad('input.label'),\n defaultMessage: 'Drag & Drop here or',\n })}\n </Typography>\n </Box>\n\n <OpaqueBox\n tag=\"input\"\n position=\"absolute\"\n left={0}\n right={0}\n bottom={0}\n top={0}\n width=\"100%\"\n type=\"file\"\n multiple\n name=\"files\"\n aria-label={formatMessage({\n id: getTrad('input.label'),\n defaultMessage: 'Drag & Drop here or',\n })}\n tabIndex={-1}\n ref={inputRef}\n zIndex={1}\n onChange={handleChange}\n />\n </Wrapper>\n </Flex>\n </MediaBox>\n </label>\n </Box>\n\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'cancel',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n"],"names":["Wrapper","styled","Flex","IconWrapper","div","theme","colors","primary600","MediaBox","Box","OpaqueBox","FromComputerForm","onClose","onAddAssets","trackedLocation","formatMessage","useIntl","dragOver","setDragOver","React","useState","inputRef","useRef","trackUsage","useTracking","handleDragOver","event","preventDefault","handleDragEnter","handleDragLeave","handleChange","files","current","assets","i","length","file","item","asset","rawFileToAsset","ASSET_SOURCES","Computer","push","source","location","handleDrop","e","dataTransfer","_jsxs","form","_jsx","paddingLeft","paddingRight","paddingTop","paddingBottom","label","hasRadius","justifyContent","borderColor","background","position","onDragEnter","onDragLeave","onDragOver","onDrop","PicturePlus","aria-hidden","width","height","Typography","variant","textColor","tag","id","getTrad","defaultMessage","left","right","bottom","top","type","multiple","name","aria-label","tabIndex","ref","zIndex","onChange","Modal","Footer","Button","onClick"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,MAAMA,OAAAA,GAAUC,uBAAAA,CAAOC,iBAAAA,CAAK;;AAE5B,CAAC;AAED,MAAMC,WAAAA,GAAcF,uBAAAA,CAAOG,GAAG;;;;UAIpB,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACC,UAAU,CAAC;;AAEnD,CAAC;AAED,MAAMC,QAAAA,GAAWP,uBAAAA,CAAOQ,gBAAAA,CAAI;;AAE5B,CAAC;AAED,MAAMC,SAAAA,GAAYT,uBAAAA,CAAOQ,gBAAAA,CAAI;;;AAG7B,CAAC;AAQM,MAAME,mBAAmB,CAAC,EAC/BC,OAAO,EACPC,WAAW,EACXC,eAAe,EACO,GAAA;IACtB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACC,QAAAA,EAAUC,WAAAA,CAAY,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IAC/C,MAAMC,QAAAA,GAAWF,gBAAAA,CAAMG,MAAM,CAAmB,IAAA,CAAA;IAChD,MAAM,EAAEC,UAAU,EAAE,GAAGC,uBAAAA,EAAAA;AAEvB,IAAA,MAAMC,iBAAiB,CAACC,KAAAA,GAAAA;AACtBA,QAAAA,KAAAA,CAAMC,cAAc,EAAA;AACtB,IAAA,CAAA;AAEA,IAAA,MAAMC,kBAAkB,CAACF,KAAAA,GAAAA;AACvBA,QAAAA,KAAAA,CAAMC,cAAc,EAAA;QACpBT,WAAAA,CAAY,IAAA,CAAA;AACd,IAAA,CAAA;IAEA,MAAMW,eAAAA,GAAkB,IAAMX,WAAAA,CAAY,KAAA,CAAA;AAE1C,IAAA,MAAMY,YAAAA,GAAe,IAAA;QACnB,MAAMC,KAAAA,GAAQV,QAAAA,CAASW,OAAO,EAAED,KAAAA;AAChC,QAAA,MAAME,SAA4B,EAAE;AAEpC,QAAA,IAAIF,KAAAA,EAAO;AACT,YAAA,IAAK,IAAIG,CAAAA,GAAI,CAAA,EAAGA,IAAIH,KAAAA,CAAMI,MAAM,EAAED,CAAAA,EAAAA,CAAK;gBACrC,MAAME,IAAAA,GAAOL,KAAAA,CAAMM,IAAI,CAACH,CAAAA,CAAAA;AACxB,gBAAA,IAAIE,IAAAA,EAAM;AACR,oBAAA,MAAME,KAAAA,GAAQC,6BAAAA,CAAeH,IAAAA,EAAMI,uBAAAA,CAAcC,QAAQ,CAAA;AACzDR,oBAAAA,MAAAA,CAAOS,IAAI,CAACJ,KAAAA,CAAAA;AACd,gBAAA;AACF,YAAA;AACF,QAAA;AAEA,QAAA,IAAIxB,eAAAA,EAAiB;AACnBS,YAAAA,UAAAA,CAAW,eAAA,EAAiB;gBAAEoB,MAAAA,EAAQ,UAAA;gBAAYC,QAAAA,EAAU9B;AAAgB,aAAA,CAAA;AAC9E,QAAA;QAEAD,WAAAA,CAAYoB,MAAAA,CAAAA;AACd,IAAA,CAAA;AAEA,IAAA,MAAMY,aAAa,CAACC,CAAAA,GAAAA;AAClBA,QAAAA,CAAAA,CAAEnB,cAAc,EAAA;QAEhB,IAAImB,CAAAA,EAAGC,cAAchB,KAAAA,EAAO;AAC1B,YAAA,MAAMA,KAAAA,GAAQe,CAAAA,CAAEC,YAAY,CAAChB,KAAK;AAClC,YAAA,MAAME,SAAS,EAAE;AAEjB,YAAA,IAAK,IAAIC,CAAAA,GAAI,CAAA,EAAGA,IAAIH,KAAAA,CAAMI,MAAM,EAAED,CAAAA,EAAAA,CAAK;gBACrC,MAAME,IAAAA,GAAOL,KAAAA,CAAMM,IAAI,CAACH,CAAAA,CAAAA;AACxB,gBAAA,IAAIE,IAAAA,EAAM;AACR,oBAAA,MAAME,KAAAA,GAAQC,6BAAAA,CAAeH,IAAAA,EAAMI,uBAAAA,CAAcC,QAAQ,CAAA;AACzDR,oBAAAA,MAAAA,CAAOS,IAAI,CAACJ,KAAAA,CAAAA;AACd,gBAAA;AACF,YAAA;YAEAzB,WAAAA,CAAYoB,MAAAA,CAAAA;AACd,QAAA;QAEAf,WAAAA,CAAY,KAAA,CAAA;AACd,IAAA,CAAA;AAEA,IAAA,qBACE8B,eAAA,CAACC,MAAAA,EAAAA;;0BACCC,cAAA,CAACzC,gBAAAA,EAAAA;gBAAI0C,WAAAA,EAAa,CAAA;gBAAGC,YAAAA,EAAc,CAAA;gBAAGC,UAAAA,EAAY,CAAA;gBAAGC,aAAAA,EAAe,CAAA;AAClE,gBAAA,QAAA,gBAAAJ,cAAA,CAACK,OAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAL,cAAA,CAAC1C,QAAAA,EAAAA;wBACC6C,UAAAA,EAAY,EAAA;wBACZC,aAAAA,EAAe,EAAA;wBACfE,SAAS,EAAA,IAAA;wBACTC,cAAAA,EAAe,QAAA;AACfC,wBAAAA,WAAAA,EAAazC,WAAW,YAAA,GAAe,YAAA;AACvC0C,wBAAAA,UAAAA,EAAY1C,WAAW,YAAA,GAAe,YAAA;wBACtC2C,QAAAA,EAAS,UAAA;wBACTC,WAAAA,EAAajC,eAAAA;wBACbkC,WAAAA,EAAajC,eAAAA;wBACbkC,UAAAA,EAAYtC,cAAAA;wBACZuC,MAAAA,EAAQnB,UAAAA;AAER,wBAAA,QAAA,gBAAAK,cAAA,CAAChD,iBAAAA,EAAAA;4BAAKuD,cAAAA,EAAe,QAAA;AACnB,4BAAA,QAAA,gBAAAT,eAAA,CAAChD,OAAAA,EAAAA;;kDACCkD,cAAA,CAAC/C,WAAAA,EAAAA;AACC,wCAAA,QAAA,gBAAA+C,cAAA,CAACe,gBAAAA,EAAAA;4CAAYC,aAAW,EAAA,IAAA;4CAACC,KAAAA,EAAM,QAAA;4CAASC,MAAAA,EAAO;;;kDAGjDlB,cAAA,CAACzC,gBAAAA,EAAAA;wCAAI4C,UAAAA,EAAY,CAAA;wCAAGC,aAAAA,EAAe,CAAA;AACjC,wCAAA,QAAA,gBAAAJ,cAAA,CAACmB,uBAAAA,EAAAA;4CAAWC,OAAAA,EAAQ,OAAA;4CAAQC,SAAAA,EAAU,YAAA;4CAAaC,GAAAA,EAAI,MAAA;sDACpDzD,aAAAA,CAAc;AACb0D,gDAAAA,EAAAA,EAAIC,eAAAA,CAAQ,aAAA,CAAA;gDACZC,cAAAA,EAAgB;AAClB,6CAAA;;;kDAIJzB,cAAA,CAACxC,SAAAA,EAAAA;wCACC8D,GAAAA,EAAI,OAAA;wCACJZ,QAAAA,EAAS,UAAA;wCACTgB,IAAAA,EAAM,CAAA;wCACNC,KAAAA,EAAO,CAAA;wCACPC,MAAAA,EAAQ,CAAA;wCACRC,GAAAA,EAAK,CAAA;wCACLZ,KAAAA,EAAM,MAAA;wCACNa,IAAAA,EAAK,MAAA;wCACLC,QAAQ,EAAA,IAAA;wCACRC,IAAAA,EAAK,OAAA;AACLC,wCAAAA,YAAAA,EAAYpE,aAAAA,CAAc;AACxB0D,4CAAAA,EAAAA,EAAIC,eAAAA,CAAQ,aAAA,CAAA;4CACZC,cAAAA,EAAgB;AAClB,yCAAA,CAAA;AACAS,wCAAAA,QAAAA,EAAU,EAAC;wCACXC,GAAAA,EAAKhE,QAAAA;wCACLiE,MAAAA,EAAQ,CAAA;wCACRC,QAAAA,EAAUzD;;;;;;;;AAQtB,0BAAAoB,cAAA,CAACsC,mBAAMC,MAAM,EAAA;AACX,gBAAA,QAAA,gBAAAvC,cAAA,CAACwC,mBAAAA,EAAAA;oBAAOC,OAAAA,EAAS/E,OAAAA;oBAAS0D,OAAAA,EAAQ,UAAA;8BAC/BvD,aAAAA,CAAc;wBACb0D,EAAAA,EAAI,8BAAA;wBACJE,cAAAA,EAAgB;AAClB,qBAAA;;;;;AAKV;;;;"}
|
|
1
|
+
{"version":3,"file":"FromComputerForm.js","sources":["../../../../../admin/src/components/UploadAssetDialog/AddAssetStep/FromComputerForm.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Modal, Typography } from '@strapi/design-system';\nimport { PlusCircle as PicturePlus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ASSET_SOURCES } from '../../../constants';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { getTrad, rawFileToAsset } from '../../../utils';\n\nimport type { FileWithRawFile } from './AddAssetStep';\n\nconst Wrapper = styled(Flex)`\n flex-direction: column;\n`;\n\nconst IconWrapper = styled.div`\n font-size: 6rem;\n\n svg path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nconst MediaBox = styled(Box)`\n border-style: dashed;\n`;\n\nconst OpaqueBox = styled(Box)`\n opacity: 0;\n cursor: pointer;\n`;\n\ninterface FromComputerFormProps {\n onClose: () => void;\n onAddAssets: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const FromComputerForm = ({\n onClose,\n onAddAssets,\n trackedLocation,\n}: FromComputerFormProps) => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const { trackUsage } = useTracking();\n\n const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n };\n\n const handleDragEnter = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setDragOver(true);\n };\n\n const handleDragLeave = () => setDragOver(false);\n\n const filesToAssets = async (fileList: FileList) => {\n const files = Array.from(fileList);\n\n return Promise.all(files.map((file) => rawFileToAsset(file, ASSET_SOURCES.Computer)));\n };\n\n const handleChange = async () => {\n const files = inputRef.current?.files;\n const assets = files ? await filesToAssets(files) : [];\n\n if (trackedLocation) {\n trackUsage('didSelectFile', { source: 'computer', location: trackedLocation });\n }\n\n onAddAssets(assets);\n };\n\n const handleDrop = async (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n\n if (e?.dataTransfer?.files) {\n const assets = await filesToAssets(e.dataTransfer.files);\n onAddAssets(assets);\n }\n\n setDragOver(false);\n };\n\n return (\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <label>\n <MediaBox\n paddingTop={11}\n paddingBottom={11}\n hasRadius\n justifyContent=\"center\"\n borderColor={dragOver ? 'primary500' : 'neutral300'}\n background={dragOver ? 'primary100' : 'neutral100'}\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <Flex justifyContent=\"center\">\n <Wrapper>\n <IconWrapper>\n <PicturePlus aria-hidden width=\"3.2rem\" height=\"3.2rem\" />\n </IconWrapper>\n\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" textColor=\"neutral600\" tag=\"span\">\n {formatMessage({\n id: getTrad('input.label'),\n defaultMessage: 'Drag & Drop here or',\n })}\n </Typography>\n </Box>\n\n <OpaqueBox\n tag=\"input\"\n position=\"absolute\"\n left={0}\n right={0}\n bottom={0}\n top={0}\n width=\"100%\"\n type=\"file\"\n multiple\n name=\"files\"\n aria-label={formatMessage({\n id: getTrad('input.label'),\n defaultMessage: 'Drag & Drop here or',\n })}\n tabIndex={-1}\n ref={inputRef}\n zIndex={1}\n onChange={handleChange}\n />\n </Wrapper>\n </Flex>\n </MediaBox>\n </label>\n </Box>\n\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'cancel',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n"],"names":["Wrapper","styled","Flex","IconWrapper","div","theme","colors","primary600","MediaBox","Box","OpaqueBox","FromComputerForm","onClose","onAddAssets","trackedLocation","formatMessage","useIntl","dragOver","setDragOver","React","useState","inputRef","useRef","trackUsage","useTracking","handleDragOver","event","preventDefault","handleDragEnter","handleDragLeave","filesToAssets","fileList","files","Array","from","Promise","all","map","file","rawFileToAsset","ASSET_SOURCES","Computer","handleChange","current","assets","source","location","handleDrop","e","dataTransfer","_jsxs","form","_jsx","paddingLeft","paddingRight","paddingTop","paddingBottom","label","hasRadius","justifyContent","borderColor","background","position","onDragEnter","onDragLeave","onDragOver","onDrop","PicturePlus","aria-hidden","width","height","Typography","variant","textColor","tag","id","getTrad","defaultMessage","left","right","bottom","top","type","multiple","name","aria-label","tabIndex","ref","zIndex","onChange","Modal","Footer","Button","onClick"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,MAAMA,OAAAA,GAAUC,uBAAAA,CAAOC,iBAAAA,CAAK;;AAE5B,CAAC;AAED,MAAMC,WAAAA,GAAcF,uBAAAA,CAAOG,GAAG;;;;UAIpB,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACC,UAAU,CAAC;;AAEnD,CAAC;AAED,MAAMC,QAAAA,GAAWP,uBAAAA,CAAOQ,gBAAAA,CAAI;;AAE5B,CAAC;AAED,MAAMC,SAAAA,GAAYT,uBAAAA,CAAOQ,gBAAAA,CAAI;;;AAG7B,CAAC;AAQM,MAAME,mBAAmB,CAAC,EAC/BC,OAAO,EACPC,WAAW,EACXC,eAAe,EACO,GAAA;IACtB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACC,QAAAA,EAAUC,WAAAA,CAAY,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IAC/C,MAAMC,QAAAA,GAAWF,gBAAAA,CAAMG,MAAM,CAAmB,IAAA,CAAA;IAChD,MAAM,EAAEC,UAAU,EAAE,GAAGC,uBAAAA,EAAAA;AAEvB,IAAA,MAAMC,iBAAiB,CAACC,KAAAA,GAAAA;AACtBA,QAAAA,KAAAA,CAAMC,cAAc,EAAA;AACtB,IAAA,CAAA;AAEA,IAAA,MAAMC,kBAAkB,CAACF,KAAAA,GAAAA;AACvBA,QAAAA,KAAAA,CAAMC,cAAc,EAAA;QACpBT,WAAAA,CAAY,IAAA,CAAA;AACd,IAAA,CAAA;IAEA,MAAMW,eAAAA,GAAkB,IAAMX,WAAAA,CAAY,KAAA,CAAA;AAE1C,IAAA,MAAMY,gBAAgB,OAAOC,QAAAA,GAAAA;QAC3B,MAAMC,KAAAA,GAAQC,KAAAA,CAAMC,IAAI,CAACH,QAAAA,CAAAA;QAEzB,OAAOI,OAAAA,CAAQC,GAAG,CAACJ,KAAAA,CAAMK,GAAG,CAAC,CAACC,IAAAA,GAASC,6BAAAA,CAAeD,IAAAA,EAAME,uBAAAA,CAAcC,QAAQ,CAAA,CAAA,CAAA;AACpF,IAAA,CAAA;AAEA,IAAA,MAAMC,YAAAA,GAAe,UAAA;QACnB,MAAMV,KAAAA,GAAQX,QAAAA,CAASsB,OAAO,EAAEX,KAAAA;AAChC,QAAA,MAAMY,MAAAA,GAASZ,KAAAA,GAAQ,MAAMF,aAAAA,CAAcE,SAAS,EAAE;AAEtD,QAAA,IAAIlB,eAAAA,EAAiB;AACnBS,YAAAA,UAAAA,CAAW,eAAA,EAAiB;gBAAEsB,MAAAA,EAAQ,UAAA;gBAAYC,QAAAA,EAAUhC;AAAgB,aAAA,CAAA;AAC9E,QAAA;QAEAD,WAAAA,CAAY+B,MAAAA,CAAAA;AACd,IAAA,CAAA;AAEA,IAAA,MAAMG,aAAa,OAAOC,CAAAA,GAAAA;AACxBA,QAAAA,CAAAA,CAAErB,cAAc,EAAA;QAEhB,IAAIqB,CAAAA,EAAGC,cAAcjB,KAAAA,EAAO;AAC1B,YAAA,MAAMY,SAAS,MAAMd,aAAAA,CAAckB,CAAAA,CAAEC,YAAY,CAACjB,KAAK,CAAA;YACvDnB,WAAAA,CAAY+B,MAAAA,CAAAA;AACd,QAAA;QAEA1B,WAAAA,CAAY,KAAA,CAAA;AACd,IAAA,CAAA;AAEA,IAAA,qBACEgC,eAAA,CAACC,MAAAA,EAAAA;;0BACCC,cAAA,CAAC3C,gBAAAA,EAAAA;gBAAI4C,WAAAA,EAAa,CAAA;gBAAGC,YAAAA,EAAc,CAAA;gBAAGC,UAAAA,EAAY,CAAA;gBAAGC,aAAAA,EAAe,CAAA;AAClE,gBAAA,QAAA,gBAAAJ,cAAA,CAACK,OAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAL,cAAA,CAAC5C,QAAAA,EAAAA;wBACC+C,UAAAA,EAAY,EAAA;wBACZC,aAAAA,EAAe,EAAA;wBACfE,SAAS,EAAA,IAAA;wBACTC,cAAAA,EAAe,QAAA;AACfC,wBAAAA,WAAAA,EAAa3C,WAAW,YAAA,GAAe,YAAA;AACvC4C,wBAAAA,UAAAA,EAAY5C,WAAW,YAAA,GAAe,YAAA;wBACtC6C,QAAAA,EAAS,UAAA;wBACTC,WAAAA,EAAanC,eAAAA;wBACboC,WAAAA,EAAanC,eAAAA;wBACboC,UAAAA,EAAYxC,cAAAA;wBACZyC,MAAAA,EAAQnB,UAAAA;AAER,wBAAA,QAAA,gBAAAK,cAAA,CAAClD,iBAAAA,EAAAA;4BAAKyD,cAAAA,EAAe,QAAA;AACnB,4BAAA,QAAA,gBAAAT,eAAA,CAAClD,OAAAA,EAAAA;;kDACCoD,cAAA,CAACjD,WAAAA,EAAAA;AACC,wCAAA,QAAA,gBAAAiD,cAAA,CAACe,gBAAAA,EAAAA;4CAAYC,aAAW,EAAA,IAAA;4CAACC,KAAAA,EAAM,QAAA;4CAASC,MAAAA,EAAO;;;kDAGjDlB,cAAA,CAAC3C,gBAAAA,EAAAA;wCAAI8C,UAAAA,EAAY,CAAA;wCAAGC,aAAAA,EAAe,CAAA;AACjC,wCAAA,QAAA,gBAAAJ,cAAA,CAACmB,uBAAAA,EAAAA;4CAAWC,OAAAA,EAAQ,OAAA;4CAAQC,SAAAA,EAAU,YAAA;4CAAaC,GAAAA,EAAI,MAAA;sDACpD3D,aAAAA,CAAc;AACb4D,gDAAAA,EAAAA,EAAIC,eAAAA,CAAQ,aAAA,CAAA;gDACZC,cAAAA,EAAgB;AAClB,6CAAA;;;kDAIJzB,cAAA,CAAC1C,SAAAA,EAAAA;wCACCgE,GAAAA,EAAI,OAAA;wCACJZ,QAAAA,EAAS,UAAA;wCACTgB,IAAAA,EAAM,CAAA;wCACNC,KAAAA,EAAO,CAAA;wCACPC,MAAAA,EAAQ,CAAA;wCACRC,GAAAA,EAAK,CAAA;wCACLZ,KAAAA,EAAM,MAAA;wCACNa,IAAAA,EAAK,MAAA;wCACLC,QAAQ,EAAA,IAAA;wCACRC,IAAAA,EAAK,OAAA;AACLC,wCAAAA,YAAAA,EAAYtE,aAAAA,CAAc;AACxB4D,4CAAAA,EAAAA,EAAIC,eAAAA,CAAQ,aAAA,CAAA;4CACZC,cAAAA,EAAgB;AAClB,yCAAA,CAAA;AACAS,wCAAAA,QAAAA,EAAU,EAAC;wCACXC,GAAAA,EAAKlE,QAAAA;wCACLmE,MAAAA,EAAQ,CAAA;wCACRC,QAAAA,EAAU/C;;;;;;;;AAQtB,0BAAAU,cAAA,CAACsC,mBAAMC,MAAM,EAAA;AACX,gBAAA,QAAA,gBAAAvC,cAAA,CAACwC,mBAAAA,EAAAA;oBAAOC,OAAAA,EAASjF,OAAAA;oBAAS4D,OAAAA,EAAQ,UAAA;8BAC/BzD,aAAAA,CAAc;wBACb4D,EAAAA,EAAI,8BAAA;wBACJE,cAAAA,EAAgB;AAClB,qBAAA;;;;;AAKV;;;;"}
|