@strapi/upload 5.48.1 → 5.49.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/ai/components/AIAssetCard.js +3 -2
- package/dist/admin/ai/components/AIAssetCard.js.map +1 -1
- package/dist/admin/ai/components/AIUploadModal.js +3 -2
- package/dist/admin/ai/components/AIUploadModal.js.map +1 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.js +3 -2
- package/dist/admin/components/AssetCard/UploadingAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.js +3 -2
- package/dist/admin/components/AssetCard/VideoAssetCard.js.map +1 -1
- package/dist/admin/components/AssetDialog/AssetDialog.js +3 -2
- package/dist/admin/components/AssetDialog/AssetDialog.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.js +3 -2
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.js +3 -2
- package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js +3 -2
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +1 -1
- package/dist/admin/components/AssetGridList/Draggable.js +3 -2
- package/dist/admin/components/AssetGridList/Draggable.js.map +1 -1
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js +3 -2
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +1 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js +5 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js +8 -4
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js +7 -3
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +7 -3
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js +3 -2
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js.map +1 -1
- package/dist/admin/components/EditFolderDialog/EditFolderDialog.js +8 -4
- package/dist/admin/components/EditFolderDialog/EditFolderDialog.js.map +1 -1
- package/dist/admin/components/FilterPopover/FilterPopover.js +3 -2
- package/dist/admin/components/FilterPopover/FilterPopover.js.map +1 -1
- package/dist/admin/components/FolderCard/FolderCard/FolderCard.js +3 -2
- package/dist/admin/components/FolderCard/FolderCard/FolderCard.js.map +1 -1
- package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.js +5 -3
- package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.js.map +1 -1
- package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.mjs +2 -1
- package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js +3 -2
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js +3 -2
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js +3 -2
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
- package/dist/admin/components/SelectTree/SelectTree.js +7 -3
- package/dist/admin/components/SelectTree/SelectTree.js.map +1 -1
- package/dist/admin/components/TableList/CellContent.js +5 -1
- package/dist/admin/components/TableList/CellContent.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js +3 -2
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js +3 -2
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js +3 -2
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.js +3 -2
- package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.js.map +1 -1
- package/dist/admin/future/components/Drawer.js +4 -3
- package/dist/admin/future/components/Drawer.js.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.js +29 -4
- package/dist/admin/future/pages/Assets/AssetsPage.js.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.mjs +28 -4
- package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +3 -2
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.js +3 -2
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.js +3 -2
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js +389 -0
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs +387 -0
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/ImportFromUrlDialog.js +3 -2
- package/dist/admin/future/pages/Assets/components/ImportFromUrlDialog.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderInfo.js +4 -4
- package/dist/admin/future/pages/Assets/hooks/useFolderInfo.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderInfo.mjs +4 -4
- package/dist/admin/future/pages/Assets/hooks/useFolderInfo.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js +48 -2
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs +48 -2
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs.map +1 -1
- package/dist/admin/future/services/folders.js +28 -1
- package/dist/admin/future/services/folders.js.map +1 -1
- package/dist/admin/future/services/folders.mjs +28 -2
- package/dist/admin/future/services/folders.mjs.map +1 -1
- package/dist/admin/future/utils/files.js +5 -1
- package/dist/admin/future/utils/files.js.map +1 -1
- package/dist/admin/hooks/useAIMetadataJob.js +3 -2
- package/dist/admin/hooks/useAIMetadataJob.js.map +1 -1
- package/dist/admin/hooks/useAssets.js +3 -2
- package/dist/admin/hooks/useAssets.js.map +1 -1
- package/dist/admin/hooks/useCropImg.js +7 -3
- package/dist/admin/hooks/useCropImg.js.map +1 -1
- package/dist/admin/hooks/useEditAsset.js +3 -2
- package/dist/admin/hooks/useEditAsset.js.map +1 -1
- package/dist/admin/hooks/useFolders.js +3 -2
- package/dist/admin/hooks/useFolders.js.map +1 -1
- package/dist/admin/hooks/useModalQueryParams.js +3 -2
- package/dist/admin/hooks/useModalQueryParams.js.map +1 -1
- package/dist/admin/hooks/useSelectionState.js +3 -2
- package/dist/admin/hooks/useSelectionState.js.map +1 -1
- package/dist/admin/hooks/useUpload.js +3 -2
- package/dist/admin/hooks/useUpload.js.map +1 -1
- package/dist/admin/pages/App/App.js +3 -2
- package/dist/admin/pages/App/App.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js +7 -3
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/reducer.js +7 -2
- package/dist/admin/pages/App/ConfigureTheView/state/reducer.js.map +1 -1
- package/dist/admin/pages/App/MediaLibrary.js +3 -2
- package/dist/admin/pages/App/MediaLibrary.js.map +1 -1
- package/dist/admin/pages/App/components/BulkMoveButton.js +3 -2
- package/dist/admin/pages/App/components/BulkMoveButton.js.map +1 -1
- package/dist/admin/pages/App/components/Filters.js +3 -2
- package/dist/admin/pages/App/components/Filters.js.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.js +7 -3
- package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -1
- package/dist/admin/pages/SettingsPage/reducer.js +5 -1
- package/dist/admin/pages/SettingsPage/reducer.js.map +1 -1
- package/dist/admin/src/components/MediaLibraryDialog/MediaLibraryDialog.d.ts +2 -1
- package/dist/admin/src/future/pages/Assets/components/FolderTree/FolderTree.d.ts +19 -0
- package/dist/admin/src/future/pages/Assets/hooks/useFolderNavigation.d.ts +2 -0
- package/dist/admin/src/future/services/folders.d.ts +2 -2
- package/dist/admin/translations/en.json.js +10 -1
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +10 -1
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/utils/formatBytes.js +5 -1
- package/dist/admin/utils/formatBytes.js.map +1 -1
- package/dist/admin/utils/urlYupSchema.js +3 -2
- package/dist/admin/utils/urlYupSchema.js.map +1 -1
- package/dist/server/controllers/admin-upload.js +11 -4
- package/dist/server/controllers/admin-upload.js.map +1 -1
- package/dist/server/controllers/content-api.js +7 -2
- package/dist/server/controllers/content-api.js.map +1 -1
- package/dist/server/controllers/utils/find-entity-and-check-permissions.js +7 -3
- package/dist/server/controllers/utils/find-entity-and-check-permissions.js.map +1 -1
- package/dist/server/middlewares/upload.js +7 -2
- package/dist/server/middlewares/upload.js.map +1 -1
- package/dist/server/register.js +9 -4
- package/dist/server/register.js.map +1 -1
- package/dist/server/routes/content-api.js +3 -2
- package/dist/server/routes/content-api.js.map +1 -1
- package/dist/server/routes/validation/upload.js +3 -2
- package/dist/server/routes/validation/upload.js.map +1 -1
- package/dist/server/services/file.js +13 -6
- package/dist/server/services/file.js.map +1 -1
- package/dist/server/services/image-manipulation.js +18 -12
- package/dist/server/services/image-manipulation.js.map +1 -1
- package/dist/server/services/provider.js +24 -0
- package/dist/server/services/provider.js.map +1 -1
- package/dist/server/services/provider.mjs +24 -0
- package/dist/server/services/provider.mjs.map +1 -1
- package/dist/server/services/upload.js +99 -32
- package/dist/server/services/upload.js.map +1 -1
- package/dist/server/services/upload.mjs +69 -10
- package/dist/server/services/upload.mjs.map +1 -1
- package/dist/server/src/index.d.ts +1 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +1 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/provider.d.ts +2 -1
- package/dist/server/src/services/provider.d.ts.map +1 -1
- package/dist/server/src/services/upload.d.ts.map +1 -1
- package/dist/server/src/utils/mime-validation.d.ts.map +1 -1
- package/dist/server/utils/mime-validation.js +8 -2
- package/dist/server/utils/mime-validation.js.map +1 -1
- package/dist/server/utils/mime-validation.mjs +9 -3
- package/dist/server/utils/mime-validation.mjs.map +1 -1
- package/package.json +6 -6
|
@@ -5,7 +5,8 @@ var qs = require('qs');
|
|
|
5
5
|
var useConfig = require('./useConfig.js');
|
|
6
6
|
var useTracking = require('./useTracking.js');
|
|
7
7
|
|
|
8
|
-
function
|
|
8
|
+
function _interopNamespace(e) {
|
|
9
|
+
if (e && e.__esModule) return e;
|
|
9
10
|
var n = Object.create(null);
|
|
10
11
|
if (e) {
|
|
11
12
|
Object.keys(e).forEach(function (k) {
|
|
@@ -22,7 +23,7 @@ function _interopNamespaceDefault(e) {
|
|
|
22
23
|
return Object.freeze(n);
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
var React__namespace = /*#__PURE__*/
|
|
26
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
26
27
|
|
|
27
28
|
const useModalQueryParams = (initialState)=>{
|
|
28
29
|
const { trackUsage } = useTracking.useTracking();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useModalQueryParams.js","sources":["../../../admin/src/hooks/useModalQueryParams.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { stringify } from 'qs';\n\nimport { useConfig } from './useConfig';\nimport { useTracking } from './useTracking';\n\nimport type { Query, FilterCondition } from '../../../shared/contracts/files';\n\nexport const useModalQueryParams = (initialState?: Partial<Query>) => {\n const { trackUsage } = useTracking();\n const {\n config: { data: config },\n } = useConfig();\n\n const [queryObject, setQueryObject] = React.useState<Query>({\n page: 1,\n sort: 'updatedAt:DESC',\n pageSize: 10,\n filters: {\n $and: [],\n },\n ...initialState,\n });\n\n React.useEffect(() => {\n if (config && 'sort' in config && 'pageSize' in config) {\n setQueryObject((prevQuery) => ({\n ...prevQuery,\n sort: config.sort,\n pageSize: config.pageSize,\n }));\n }\n }, [config]);\n\n const handleChangeFilters = (nextFilters: FilterCondition<string>[]) => {\n if (nextFilters) {\n trackUsage('didFilterMediaLibraryElements', {\n location: 'content-manager',\n filter: Object.keys(nextFilters[nextFilters.length - 1])[0],\n });\n setQueryObject((prev) => ({ ...prev, page: 1, filters: { $and: nextFilters } }));\n }\n };\n\n const handleChangePageSize = (pageSize: Query['pageSize']) => {\n setQueryObject((prev) => ({\n ...prev,\n pageSize: typeof pageSize === 'string' ? parseInt(pageSize, 10) : pageSize,\n page: 1,\n }));\n };\n\n const handeChangePage = (page: Query['page']) => {\n setQueryObject((prev) => ({ ...prev, page }));\n };\n\n const handleChangeSort = (sort: Query['sort']) => {\n if (sort) {\n trackUsage('didSortMediaLibraryElements', {\n location: 'content-manager',\n sort,\n });\n setQueryObject((prev) => ({ ...prev, sort }));\n }\n };\n\n const handleChangeSearch = (_q: Query['_q'] | null) => {\n if (_q) {\n setQueryObject((prev) => ({ ...prev, _q, page: 1 }));\n } else {\n const newState: Query = { page: 1 };\n\n Object.keys(queryObject).forEach((key) => {\n if (!['page', '_q'].includes(key)) {\n (newState as Record<string, string | number | undefined>)[key] = (\n queryObject as Record<string, string | number | undefined>\n )[key];\n }\n });\n\n setQueryObject(newState);\n }\n };\n\n const handleChangeFolder = (folder: Query['folder'], folderPath: Query['folderPath']) => {\n setQueryObject((prev) => ({ ...prev, folder: folder ?? null, folderPath }));\n };\n\n return [\n { queryObject, rawQuery: stringify(queryObject, { encode: false }) },\n {\n onChangeFilters: handleChangeFilters,\n onChangeFolder: handleChangeFolder,\n onChangePage: handeChangePage,\n onChangePageSize: handleChangePageSize,\n onChangeSort: handleChangeSort,\n onChangeSearch: handleChangeSearch,\n },\n ];\n};\n"],"names":["useModalQueryParams","initialState","trackUsage","useTracking","config","data","useConfig","queryObject","setQueryObject","React","useState","page","sort","pageSize","filters","$and","useEffect","prevQuery","handleChangeFilters","nextFilters","location","filter","Object","keys","length","prev","handleChangePageSize","parseInt","handeChangePage","handleChangeSort","handleChangeSearch","_q","newState","forEach","key","includes","handleChangeFolder","folder","folderPath","rawQuery","stringify","encode","onChangeFilters","onChangeFolder","onChangePage","onChangePageSize","onChangeSort","onChangeSearch"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useModalQueryParams.js","sources":["../../../admin/src/hooks/useModalQueryParams.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { stringify } from 'qs';\n\nimport { useConfig } from './useConfig';\nimport { useTracking } from './useTracking';\n\nimport type { Query, FilterCondition } from '../../../shared/contracts/files';\n\nexport const useModalQueryParams = (initialState?: Partial<Query>) => {\n const { trackUsage } = useTracking();\n const {\n config: { data: config },\n } = useConfig();\n\n const [queryObject, setQueryObject] = React.useState<Query>({\n page: 1,\n sort: 'updatedAt:DESC',\n pageSize: 10,\n filters: {\n $and: [],\n },\n ...initialState,\n });\n\n React.useEffect(() => {\n if (config && 'sort' in config && 'pageSize' in config) {\n setQueryObject((prevQuery) => ({\n ...prevQuery,\n sort: config.sort,\n pageSize: config.pageSize,\n }));\n }\n }, [config]);\n\n const handleChangeFilters = (nextFilters: FilterCondition<string>[]) => {\n if (nextFilters) {\n trackUsage('didFilterMediaLibraryElements', {\n location: 'content-manager',\n filter: Object.keys(nextFilters[nextFilters.length - 1])[0],\n });\n setQueryObject((prev) => ({ ...prev, page: 1, filters: { $and: nextFilters } }));\n }\n };\n\n const handleChangePageSize = (pageSize: Query['pageSize']) => {\n setQueryObject((prev) => ({\n ...prev,\n pageSize: typeof pageSize === 'string' ? parseInt(pageSize, 10) : pageSize,\n page: 1,\n }));\n };\n\n const handeChangePage = (page: Query['page']) => {\n setQueryObject((prev) => ({ ...prev, page }));\n };\n\n const handleChangeSort = (sort: Query['sort']) => {\n if (sort) {\n trackUsage('didSortMediaLibraryElements', {\n location: 'content-manager',\n sort,\n });\n setQueryObject((prev) => ({ ...prev, sort }));\n }\n };\n\n const handleChangeSearch = (_q: Query['_q'] | null) => {\n if (_q) {\n setQueryObject((prev) => ({ ...prev, _q, page: 1 }));\n } else {\n const newState: Query = { page: 1 };\n\n Object.keys(queryObject).forEach((key) => {\n if (!['page', '_q'].includes(key)) {\n (newState as Record<string, string | number | undefined>)[key] = (\n queryObject as Record<string, string | number | undefined>\n )[key];\n }\n });\n\n setQueryObject(newState);\n }\n };\n\n const handleChangeFolder = (folder: Query['folder'], folderPath: Query['folderPath']) => {\n setQueryObject((prev) => ({ ...prev, folder: folder ?? null, folderPath }));\n };\n\n return [\n { queryObject, rawQuery: stringify(queryObject, { encode: false }) },\n {\n onChangeFilters: handleChangeFilters,\n onChangeFolder: handleChangeFolder,\n onChangePage: handeChangePage,\n onChangePageSize: handleChangePageSize,\n onChangeSort: handleChangeSort,\n onChangeSearch: handleChangeSearch,\n },\n ];\n};\n"],"names":["useModalQueryParams","initialState","trackUsage","useTracking","config","data","useConfig","queryObject","setQueryObject","React","useState","page","sort","pageSize","filters","$and","useEffect","prevQuery","handleChangeFilters","nextFilters","location","filter","Object","keys","length","prev","handleChangePageSize","parseInt","handeChangePage","handleChangeSort","handleChangeSearch","_q","newState","forEach","key","includes","handleChangeFolder","folder","folderPath","rawQuery","stringify","encode","onChangeFilters","onChangeFolder","onChangePage","onChangePageSize","onChangeSort","onChangeSearch"],"mappings":"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"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
|
|
5
|
-
function
|
|
5
|
+
function _interopNamespace(e) {
|
|
6
|
+
if (e && e.__esModule) return e;
|
|
6
7
|
var n = Object.create(null);
|
|
7
8
|
if (e) {
|
|
8
9
|
Object.keys(e).forEach(function (k) {
|
|
@@ -19,7 +20,7 @@ function _interopNamespaceDefault(e) {
|
|
|
19
20
|
return Object.freeze(n);
|
|
20
21
|
}
|
|
21
22
|
|
|
22
|
-
var React__namespace = /*#__PURE__*/
|
|
23
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
23
24
|
|
|
24
25
|
const useSelectionState = (keys, initialValue)=>{
|
|
25
26
|
const [selections, setSelections] = React__namespace.useState(initialValue);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSelectionState.js","sources":["../../../admin/src/hooks/useSelectionState.ts"],"sourcesContent":["import * as React from 'react';\n\nexport const useSelectionState = <TValues extends object>(\n keys: Array<keyof TValues>,\n initialValue: TValues[]\n) => {\n const [selections, setSelections] = React.useState(initialValue);\n\n const selectOne = (selection: TValues) => {\n const index = selections.findIndex((currentSelection) =>\n keys.every((key) => currentSelection[key] === selection[key])\n );\n\n if (index > -1) {\n setSelections((prevSelected) => [\n ...prevSelected.slice(0, index),\n ...prevSelected.slice(index + 1),\n ]);\n } else {\n setSelections((prevSelected) => [...prevSelected, selection]);\n }\n };\n\n const selectAll = (nextSelections?: TValues[]) => {\n if (selections.length > 0) {\n setSelections([]);\n } else {\n setSelections(nextSelections!);\n }\n };\n\n const selectOnly = (nextSelection: TValues) => {\n const index = selections.findIndex((currentSelection) =>\n keys.every((key) => currentSelection[key] === nextSelection[key])\n );\n\n if (index > -1) {\n setSelections([]);\n } else {\n setSelections([nextSelection]);\n }\n };\n\n const selectMultiple = (nextSelections: TValues[]) => {\n setSelections((currSelections) => [\n // already selected items\n ...currSelections,\n // filter out already selected items from nextSelections\n ...nextSelections.filter(\n (nextSelection) =>\n currSelections.findIndex((currentSelection) =>\n keys.every((key) => currentSelection[key] === nextSelection[key])\n ) === -1\n ),\n ]);\n };\n\n const deselectMultiple = (nextSelections: TValues[]) => {\n setSelections((currSelections) => [\n // filter out items in currSelections that are in nextSelections\n ...currSelections.filter(\n (currentSelection) =>\n nextSelections.findIndex((nextSelection) =>\n keys.every((key) => currentSelection[key] === nextSelection[key])\n ) === -1\n ),\n ]);\n };\n\n return [\n selections,\n { selectOne, selectAll, selectOnly, selectMultiple, deselectMultiple, setSelections },\n ] as const;\n};\n"],"names":["useSelectionState","keys","initialValue","selections","setSelections","React","useState","selectOne","selection","index","findIndex","currentSelection","every","key","prevSelected","slice","selectAll","nextSelections","length","selectOnly","nextSelection","selectMultiple","currSelections","filter","deselectMultiple"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useSelectionState.js","sources":["../../../admin/src/hooks/useSelectionState.ts"],"sourcesContent":["import * as React from 'react';\n\nexport const useSelectionState = <TValues extends object>(\n keys: Array<keyof TValues>,\n initialValue: TValues[]\n) => {\n const [selections, setSelections] = React.useState(initialValue);\n\n const selectOne = (selection: TValues) => {\n const index = selections.findIndex((currentSelection) =>\n keys.every((key) => currentSelection[key] === selection[key])\n );\n\n if (index > -1) {\n setSelections((prevSelected) => [\n ...prevSelected.slice(0, index),\n ...prevSelected.slice(index + 1),\n ]);\n } else {\n setSelections((prevSelected) => [...prevSelected, selection]);\n }\n };\n\n const selectAll = (nextSelections?: TValues[]) => {\n if (selections.length > 0) {\n setSelections([]);\n } else {\n setSelections(nextSelections!);\n }\n };\n\n const selectOnly = (nextSelection: TValues) => {\n const index = selections.findIndex((currentSelection) =>\n keys.every((key) => currentSelection[key] === nextSelection[key])\n );\n\n if (index > -1) {\n setSelections([]);\n } else {\n setSelections([nextSelection]);\n }\n };\n\n const selectMultiple = (nextSelections: TValues[]) => {\n setSelections((currSelections) => [\n // already selected items\n ...currSelections,\n // filter out already selected items from nextSelections\n ...nextSelections.filter(\n (nextSelection) =>\n currSelections.findIndex((currentSelection) =>\n keys.every((key) => currentSelection[key] === nextSelection[key])\n ) === -1\n ),\n ]);\n };\n\n const deselectMultiple = (nextSelections: TValues[]) => {\n setSelections((currSelections) => [\n // filter out items in currSelections that are in nextSelections\n ...currSelections.filter(\n (currentSelection) =>\n nextSelections.findIndex((nextSelection) =>\n keys.every((key) => currentSelection[key] === nextSelection[key])\n ) === -1\n ),\n ]);\n };\n\n return [\n selections,\n { selectOne, selectAll, selectOnly, selectMultiple, deselectMultiple, setSelections },\n ] as const;\n};\n"],"names":["useSelectionState","keys","initialValue","selections","setSelections","React","useState","selectOne","selection","index","findIndex","currentSelection","every","key","prevSelected","slice","selectAll","nextSelections","length","selectOnly","nextSelection","selectMultiple","currSelections","filter","deselectMultiple"],"mappings":"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"}
|
|
@@ -6,7 +6,8 @@ var reactQuery = require('react-query');
|
|
|
6
6
|
var reactRedux = require('react-redux');
|
|
7
7
|
var pluginId = require('../pluginId.js');
|
|
8
8
|
|
|
9
|
-
function
|
|
9
|
+
function _interopNamespace(e) {
|
|
10
|
+
if (e && e.__esModule) return e;
|
|
10
11
|
var n = Object.create(null);
|
|
11
12
|
if (e) {
|
|
12
13
|
Object.keys(e).forEach(function (k) {
|
|
@@ -23,7 +24,7 @@ function _interopNamespaceDefault(e) {
|
|
|
23
24
|
return Object.freeze(n);
|
|
24
25
|
}
|
|
25
26
|
|
|
26
|
-
var React__namespace = /*#__PURE__*/
|
|
27
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
27
28
|
|
|
28
29
|
const endpoint = `/${pluginId.pluginId}`;
|
|
29
30
|
const uploadAssets = (assets, folderId, signal, onProgress, post)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUpload.js","sources":["../../../admin/src/hooks/useUpload.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useFetchClient, FetchClient, adminApi } from '@strapi/admin/strapi-admin';\nimport { useMutation, useQueryClient } from 'react-query';\nimport { useDispatch } from 'react-redux';\n\nimport { File, RawFile, CreateFile } from '../../../shared/contracts/files';\nimport { pluginId } from '../pluginId';\n\nconst endpoint = `/${pluginId}`;\n\ninterface Asset extends Omit<File, 'id' | 'hash'> {\n rawFile?: RawFile;\n id?: File['id'];\n hash?: File['hash'];\n}\n\nconst uploadAssets = (\n assets: Asset | Asset[],\n folderId: number | null,\n signal: AbortSignal,\n onProgress: (progress: number) => void,\n post: FetchClient['post']\n) => {\n const assetsArray = Array.isArray(assets) ? assets : [assets];\n const formData = new FormData();\n\n // Add all files to the form data\n assetsArray.forEach((asset) => {\n if (asset.rawFile) {\n formData.append('files', asset.rawFile);\n }\n });\n\n // Add each fileInfo as a separate stringified field\n assetsArray.forEach((asset) => {\n formData.append(\n 'fileInfo',\n JSON.stringify({\n name: asset.name,\n caption: asset.caption,\n alternativeText: asset.alternativeText,\n folder: folderId,\n })\n );\n });\n\n /**\n * onProgress is not possible using native fetch\n * need to look into an alternative to make it work\n * perhaps using xhr like Axios does\n */\n return post(endpoint, formData, {\n signal,\n }).then((res) => res.data);\n};\n\nexport const useUpload = () => {\n const dispatch = useDispatch();\n const [progress, setProgress] = React.useState(0);\n const queryClient = useQueryClient();\n const abortController = new AbortController();\n const signal = abortController.signal;\n const { post } = useFetchClient();\n\n const mutation = useMutation<\n CreateFile.Response['data'],\n CreateFile.Response['error'],\n { assets: Asset | Asset[]; folderId: number | null }\n >(\n ({ assets, folderId }) => {\n return uploadAssets(assets, folderId, signal, setProgress, post);\n },\n {\n onSuccess() {\n queryClient.refetchQueries([pluginId, 'assets'], { active: true });\n queryClient.refetchQueries([pluginId, 'asset-count'], { active: true });\n dispatch(adminApi.util.invalidateTags(['HomepageKeyStatistics', 'AiUsage']));\n },\n }\n );\n\n const upload = (assets: Asset | Asset[], folderId: number | null) =>\n mutation.mutateAsync({ assets, folderId });\n\n const cancel = () => abortController.abort();\n\n return {\n upload,\n isLoading: mutation.isLoading,\n cancel,\n error: mutation.error,\n progress,\n status: mutation.status,\n };\n};\n"],"names":["endpoint","pluginId","uploadAssets","assets","folderId","signal","onProgress","post","assetsArray","Array","isArray","formData","FormData","forEach","asset","rawFile","append","JSON","stringify","name","caption","alternativeText","folder","then","res","data","useUpload","dispatch","useDispatch","progress","setProgress","React","useState","queryClient","useQueryClient","abortController","AbortController","useFetchClient","mutation","useMutation","onSuccess","refetchQueries","active","adminApi","util","invalidateTags","upload","mutateAsync","cancel","abort","isLoading","error","status"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useUpload.js","sources":["../../../admin/src/hooks/useUpload.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useFetchClient, FetchClient, adminApi } from '@strapi/admin/strapi-admin';\nimport { useMutation, useQueryClient } from 'react-query';\nimport { useDispatch } from 'react-redux';\n\nimport { File, RawFile, CreateFile } from '../../../shared/contracts/files';\nimport { pluginId } from '../pluginId';\n\nconst endpoint = `/${pluginId}`;\n\ninterface Asset extends Omit<File, 'id' | 'hash'> {\n rawFile?: RawFile;\n id?: File['id'];\n hash?: File['hash'];\n}\n\nconst uploadAssets = (\n assets: Asset | Asset[],\n folderId: number | null,\n signal: AbortSignal,\n onProgress: (progress: number) => void,\n post: FetchClient['post']\n) => {\n const assetsArray = Array.isArray(assets) ? assets : [assets];\n const formData = new FormData();\n\n // Add all files to the form data\n assetsArray.forEach((asset) => {\n if (asset.rawFile) {\n formData.append('files', asset.rawFile);\n }\n });\n\n // Add each fileInfo as a separate stringified field\n assetsArray.forEach((asset) => {\n formData.append(\n 'fileInfo',\n JSON.stringify({\n name: asset.name,\n caption: asset.caption,\n alternativeText: asset.alternativeText,\n folder: folderId,\n })\n );\n });\n\n /**\n * onProgress is not possible using native fetch\n * need to look into an alternative to make it work\n * perhaps using xhr like Axios does\n */\n return post(endpoint, formData, {\n signal,\n }).then((res) => res.data);\n};\n\nexport const useUpload = () => {\n const dispatch = useDispatch();\n const [progress, setProgress] = React.useState(0);\n const queryClient = useQueryClient();\n const abortController = new AbortController();\n const signal = abortController.signal;\n const { post } = useFetchClient();\n\n const mutation = useMutation<\n CreateFile.Response['data'],\n CreateFile.Response['error'],\n { assets: Asset | Asset[]; folderId: number | null }\n >(\n ({ assets, folderId }) => {\n return uploadAssets(assets, folderId, signal, setProgress, post);\n },\n {\n onSuccess() {\n queryClient.refetchQueries([pluginId, 'assets'], { active: true });\n queryClient.refetchQueries([pluginId, 'asset-count'], { active: true });\n dispatch(adminApi.util.invalidateTags(['HomepageKeyStatistics', 'AiUsage']));\n },\n }\n );\n\n const upload = (assets: Asset | Asset[], folderId: number | null) =>\n mutation.mutateAsync({ assets, folderId });\n\n const cancel = () => abortController.abort();\n\n return {\n upload,\n isLoading: mutation.isLoading,\n cancel,\n error: mutation.error,\n progress,\n status: mutation.status,\n };\n};\n"],"names":["endpoint","pluginId","uploadAssets","assets","folderId","signal","onProgress","post","assetsArray","Array","isArray","formData","FormData","forEach","asset","rawFile","append","JSON","stringify","name","caption","alternativeText","folder","then","res","data","useUpload","dispatch","useDispatch","progress","setProgress","React","useState","queryClient","useQueryClient","abortController","AbortController","useFetchClient","mutation","useMutation","onSuccess","refetchQueries","active","adminApi","util","invalidateTags","upload","mutateAsync","cancel","abort","isLoading","error","status"],"mappings":"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"}
|
|
@@ -14,7 +14,8 @@ require('../../utils/typeFromMime.js');
|
|
|
14
14
|
require('../../utils/urlYupSchema.js');
|
|
15
15
|
var MediaLibrary = require('./MediaLibrary.js');
|
|
16
16
|
|
|
17
|
-
function
|
|
17
|
+
function _interopNamespace(e) {
|
|
18
|
+
if (e && e.__esModule) return e;
|
|
18
19
|
var n = Object.create(null);
|
|
19
20
|
if (e) {
|
|
20
21
|
Object.keys(e).forEach(function (k) {
|
|
@@ -31,7 +32,7 @@ function _interopNamespaceDefault(e) {
|
|
|
31
32
|
return Object.freeze(n);
|
|
32
33
|
}
|
|
33
34
|
|
|
34
|
-
var React__namespace = /*#__PURE__*/
|
|
35
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
35
36
|
|
|
36
37
|
// TODO: find a better naming convention for the file that was an index file before
|
|
37
38
|
const ConfigureTheView = /*#__PURE__*/ React__namespace.lazy(async ()=>Promise.resolve().then(function () { return require('./ConfigureTheView/ConfigureTheView.js'); }).then((mod)=>({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.js","sources":["../../../../admin/src/pages/App/App.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { Page, useQueryParams } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Route, Routes } from 'react-router-dom';\n\nimport { useConfig } from '../../hooks/useConfig';\nimport { getTrad } from '../../utils';\n\nimport { MediaLibrary } from './MediaLibrary';\n\nimport type { Configuration } from '../../../../shared/contracts/configuration';\n\nconst ConfigureTheView = React.lazy(async () =>\n import('./ConfigureTheView/ConfigureTheView').then((mod) => ({ default: mod.ConfigureTheView }))\n);\n\nexport const Upload = () => {\n const {\n config: { isLoading, isError, data: config },\n } = useConfig() as { config: { isLoading: boolean; isError: boolean; data: Configuration } };\n\n const [{ rawQuery }, setQuery] = useQueryParams();\n const { formatMessage } = useIntl();\n const title = formatMessage({ id: getTrad('plugin.name'), defaultMessage: 'Media Library' });\n\n React.useEffect(() => {\n if (isLoading || isError || rawQuery) {\n return;\n }\n setQuery({\n sort: config.sort,\n page: 1,\n pageSize: config.pageSize,\n });\n }, [isLoading, isError, config, rawQuery, setQuery]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>{title}</Page.Title>\n {rawQuery ? (\n <React.Suspense fallback={<Page.Loading />}>\n <Routes>\n <Route index element={<MediaLibrary />} />\n <Route\n path=\"configuration\"\n element={<ConfigureTheView config={config as Configuration} />}\n />\n </Routes>\n </React.Suspense>\n ) : null}\n </Page.Main>\n );\n};\n"],"names":["ConfigureTheView","React","lazy","then","mod","default","Upload","config","isLoading","isError","data","useConfig","rawQuery","setQuery","useQueryParams","formatMessage","useIntl","title","id","getTrad","defaultMessage","useEffect","sort","page","pageSize","_jsx","Page","Loading","_jsxs","Main","Title","Suspense","fallback","Routes","Route","index","element","MediaLibrary","path"],"mappings":"
|
|
1
|
+
{"version":3,"file":"App.js","sources":["../../../../admin/src/pages/App/App.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { Page, useQueryParams } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Route, Routes } from 'react-router-dom';\n\nimport { useConfig } from '../../hooks/useConfig';\nimport { getTrad } from '../../utils';\n\nimport { MediaLibrary } from './MediaLibrary';\n\nimport type { Configuration } from '../../../../shared/contracts/configuration';\n\nconst ConfigureTheView = React.lazy(async () =>\n import('./ConfigureTheView/ConfigureTheView').then((mod) => ({ default: mod.ConfigureTheView }))\n);\n\nexport const Upload = () => {\n const {\n config: { isLoading, isError, data: config },\n } = useConfig() as { config: { isLoading: boolean; isError: boolean; data: Configuration } };\n\n const [{ rawQuery }, setQuery] = useQueryParams();\n const { formatMessage } = useIntl();\n const title = formatMessage({ id: getTrad('plugin.name'), defaultMessage: 'Media Library' });\n\n React.useEffect(() => {\n if (isLoading || isError || rawQuery) {\n return;\n }\n setQuery({\n sort: config.sort,\n page: 1,\n pageSize: config.pageSize,\n });\n }, [isLoading, isError, config, rawQuery, setQuery]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>{title}</Page.Title>\n {rawQuery ? (\n <React.Suspense fallback={<Page.Loading />}>\n <Routes>\n <Route index element={<MediaLibrary />} />\n <Route\n path=\"configuration\"\n element={<ConfigureTheView config={config as Configuration} />}\n />\n </Routes>\n </React.Suspense>\n ) : null}\n </Page.Main>\n );\n};\n"],"names":["ConfigureTheView","React","lazy","then","mod","default","Upload","config","isLoading","isError","data","useConfig","rawQuery","setQuery","useQueryParams","formatMessage","useIntl","title","id","getTrad","defaultMessage","useEffect","sort","page","pageSize","_jsx","Page","Loading","_jsxs","Main","Title","Suspense","fallback","Routes","Route","index","element","MediaLibrary","path"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAcA,MAAMA,gBAAAA,iBAAmBC,gBAAAA,CAAMC,IAAI,CAAC,UAClC,oDAAO,wCAAA,KAAA,CAAuCC,IAAI,CAAC,CAACC,GAAAA,IAAS;AAAEC,YAAAA,OAAAA,EAASD,IAAIJ;SAAiB,CAAA,CAAA,CAAA;MAGlFM,MAAAA,GAAS,IAAA;IACpB,MAAM,EACJC,MAAAA,EAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,IAAAA,EAAMH,MAAM,EAAE,EAC7C,GAAGI,mBAAAA,EAAAA;AAEJ,IAAA,MAAM,CAAC,EAAEC,QAAQ,EAAE,EAAEC,SAAS,GAAGC,0BAAAA,EAAAA;IACjC,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAQF,aAAAA,CAAc;AAAEG,QAAAA,EAAAA,EAAIC,eAAAA,CAAQ,aAAA,CAAA;QAAgBC,cAAAA,EAAgB;AAAgB,KAAA,CAAA;AAE1FnB,IAAAA,gBAAAA,CAAMoB,SAAS,CAAC,IAAA;QACd,IAAIb,SAAAA,IAAaC,WAAWG,QAAAA,EAAU;AACpC,YAAA;AACF,QAAA;QACAC,QAAAA,CAAS;AACPS,YAAAA,IAAAA,EAAMf,OAAOe,IAAI;YACjBC,IAAAA,EAAM,CAAA;AACNC,YAAAA,QAAAA,EAAUjB,OAAOiB;AACnB,SAAA,CAAA;IACF,CAAA,EAAG;AAAChB,QAAAA,SAAAA;AAAWC,QAAAA,OAAAA;AAASF,QAAAA,MAAAA;AAAQK,QAAAA,QAAAA;AAAUC,QAAAA;AAAS,KAAA,CAAA;AAEnD,IAAA,IAAIL,SAAAA,EAAW;QACb,qBAAOiB,cAAA,CAACC,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB,IAAA;IAEA,qBACEC,eAAA,CAACF,iBAAKG,IAAI,EAAA;;AACR,0BAAAJ,cAAA,CAACC,iBAAKI,KAAK,EAAA;AAAEb,gBAAAA,QAAAA,EAAAA;;YACZL,QAAAA,iBACCa,cAAA,CAACxB,iBAAM8B,QAAQ,EAAA;gBAACC,QAAAA,gBAAUP,cAAA,CAACC,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACrC,gBAAA,QAAA,gBAAAC,eAAA,CAACK,qBAAAA,EAAAA;;sCACCR,cAAA,CAACS,oBAAAA,EAAAA;4BAAMC,KAAK,EAAA,IAAA;AAACC,4BAAAA,OAAAA,gBAASX,cAAA,CAACY,yBAAAA,EAAAA,EAAAA;;sCACvBZ,cAAA,CAACS,oBAAAA,EAAAA;4BACCI,IAAAA,EAAK,eAAA;AACLF,4BAAAA,OAAAA,gBAASX,cAAA,CAACzB,gBAAAA,EAAAA;gCAAiBO,MAAAA,EAAQA;;;;;AAIvC,aAAA,CAAA,GAAA;;;AAGV;;;;"}
|
|
@@ -21,7 +21,10 @@ var actions = require('./state/actions.js');
|
|
|
21
21
|
var init = require('./state/init.js');
|
|
22
22
|
var reducer = require('./state/reducer.js');
|
|
23
23
|
|
|
24
|
-
function
|
|
24
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
25
|
+
|
|
26
|
+
function _interopNamespace(e) {
|
|
27
|
+
if (e && e.__esModule) return e;
|
|
25
28
|
var n = Object.create(null);
|
|
26
29
|
if (e) {
|
|
27
30
|
Object.keys(e).forEach(function (k) {
|
|
@@ -38,7 +41,8 @@ function _interopNamespaceDefault(e) {
|
|
|
38
41
|
return Object.freeze(n);
|
|
39
42
|
}
|
|
40
43
|
|
|
41
|
-
var React__namespace = /*#__PURE__*/
|
|
44
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
45
|
+
var isEqual__default = /*#__PURE__*/_interopDefault(isEqual);
|
|
42
46
|
|
|
43
47
|
// TODO: find a better naming convention for the file that was an index file before
|
|
44
48
|
const ConfigureTheView = ({ config })=>{
|
|
@@ -95,7 +99,7 @@ const ConfigureTheView = ({ config })=>{
|
|
|
95
99
|
primaryAction: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
|
|
96
100
|
size: "S",
|
|
97
101
|
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Check, {}),
|
|
98
|
-
disabled:
|
|
102
|
+
disabled: isEqual__default.default(modifiedData, initialData),
|
|
99
103
|
type: "submit",
|
|
100
104
|
fullWidth: true,
|
|
101
105
|
children: formatMessage({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigureTheView.js","sources":["../../../../../admin/src/pages/App/ConfigureTheView/ConfigureTheView.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport {\n ConfirmDialog,\n useTracking,\n useNotification,\n Page,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Dialog, Link } from '@strapi/design-system';\nimport { ArrowLeft, Check } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { useConfig } from '../../../hooks/useConfig';\nimport { pluginId } from '../../../pluginId';\nimport { getTrad } from '../../../utils';\n\nimport { Settings } from './components/Settings';\nimport { onChange, setLoaded } from './state/actions';\nimport { init, initialState } from './state/init';\nimport { reducer } from './state/reducer';\n\nimport type { InitialState } from './state/init';\nimport type { Action } from './state/reducer';\nimport type { Configuration } from '../../../../../shared/contracts/configuration';\n\ninterface ConfigureTheViewProps {\n config: Configuration;\n}\n\nexport const ConfigureTheView = ({ config }: ConfigureTheViewProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { mutateConfig } = useConfig();\n const { isLoading: isSubmittingForm } = mutateConfig;\n\n const [showWarningSubmit, setWarningSubmit] = React.useState(false);\n const toggleWarningSubmit = () => setWarningSubmit((prevState) => !prevState);\n\n const [reducerState, dispatch] = React.useReducer(\n reducer,\n initialState,\n (): InitialState => init(config)\n );\n const typedDispatch: React.Dispatch<Action> = dispatch;\n const { initialData, modifiedData } = reducerState;\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n toggleWarningSubmit();\n };\n\n const handleConfirm = async () => {\n trackUsage('willEditMediaLibraryConfig');\n await mutateConfig.mutateAsync(modifiedData as Configuration);\n setWarningSubmit(false);\n typedDispatch(setLoaded());\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.form.success.fields',\n defaultMessage: 'Changes saved',\n }),\n });\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: keyof Configuration; value: string | number };\n }) => {\n typedDispatch(onChange({ name, value }));\n };\n\n return (\n <Layouts.Root>\n <Page.Main aria-busy={isSubmittingForm}>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n navigationAction={\n <Link\n tag={NavLink}\n startIcon={<ArrowLeft />}\n to={`/plugins/${pluginId}`}\n id=\"go-back\"\n >\n {formatMessage({ id: getTrad('config.back'), defaultMessage: 'Back' })}\n </Link>\n }\n primaryAction={\n <Button\n size=\"S\"\n startIcon={<Check />}\n disabled={isEqual(modifiedData, initialData)}\n type=\"submit\"\n fullWidth\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('config.subtitle'),\n defaultMessage: 'Define the view settings of the media library.',\n })}\n title={formatMessage({\n id: getTrad('config.title'),\n defaultMessage: 'Configure the view - Media Library',\n })}\n />\n <Layouts.Content>\n <Settings\n data-testid=\"settings\"\n pageSize={modifiedData.pageSize || ''}\n sort={modifiedData.sort || ''}\n onChange={handleChange}\n />\n </Layouts.Content>\n <Dialog.Root open={showWarningSubmit} onOpenChange={toggleWarningSubmit}>\n <ConfirmDialog onConfirm={handleConfirm} variant=\"default\">\n {formatMessage({\n id: getTrad('config.popUpWarning.warning.updateAllSettings'),\n defaultMessage: 'This will modify all your settings',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </form>\n </Page.Main>\n </Layouts.Root>\n );\n};\n"],"names":["ConfigureTheView","config","trackUsage","useTracking","formatMessage","useIntl","toggleNotification","useNotification","mutateConfig","useConfig","isLoading","isSubmittingForm","showWarningSubmit","setWarningSubmit","React","useState","toggleWarningSubmit","prevState","reducerState","dispatch","useReducer","reducer","initialState","init","typedDispatch","initialData","modifiedData","handleSubmit","e","preventDefault","handleConfirm","mutateAsync","setLoaded","type","message","id","defaultMessage","handleChange","target","name","value","onChange","_jsx","Layouts","Root","Page","Main","aria-busy","_jsxs","form","onSubmit","Header","navigationAction","Link","tag","NavLink","startIcon","ArrowLeft","to","pluginId","getTrad","primaryAction","Button","size","Check","disabled","isEqual","fullWidth","subtitle","title","Content","Settings","data-testid","pageSize","sort","Dialog","open","onOpenChange","ConfirmDialog","onConfirm","variant"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ConfigureTheView.js","sources":["../../../../../admin/src/pages/App/ConfigureTheView/ConfigureTheView.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport {\n ConfirmDialog,\n useTracking,\n useNotification,\n Page,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Dialog, Link } from '@strapi/design-system';\nimport { ArrowLeft, Check } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { useConfig } from '../../../hooks/useConfig';\nimport { pluginId } from '../../../pluginId';\nimport { getTrad } from '../../../utils';\n\nimport { Settings } from './components/Settings';\nimport { onChange, setLoaded } from './state/actions';\nimport { init, initialState } from './state/init';\nimport { reducer } from './state/reducer';\n\nimport type { InitialState } from './state/init';\nimport type { Action } from './state/reducer';\nimport type { Configuration } from '../../../../../shared/contracts/configuration';\n\ninterface ConfigureTheViewProps {\n config: Configuration;\n}\n\nexport const ConfigureTheView = ({ config }: ConfigureTheViewProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { mutateConfig } = useConfig();\n const { isLoading: isSubmittingForm } = mutateConfig;\n\n const [showWarningSubmit, setWarningSubmit] = React.useState(false);\n const toggleWarningSubmit = () => setWarningSubmit((prevState) => !prevState);\n\n const [reducerState, dispatch] = React.useReducer(\n reducer,\n initialState,\n (): InitialState => init(config)\n );\n const typedDispatch: React.Dispatch<Action> = dispatch;\n const { initialData, modifiedData } = reducerState;\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n toggleWarningSubmit();\n };\n\n const handleConfirm = async () => {\n trackUsage('willEditMediaLibraryConfig');\n await mutateConfig.mutateAsync(modifiedData as Configuration);\n setWarningSubmit(false);\n typedDispatch(setLoaded());\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.form.success.fields',\n defaultMessage: 'Changes saved',\n }),\n });\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: keyof Configuration; value: string | number };\n }) => {\n typedDispatch(onChange({ name, value }));\n };\n\n return (\n <Layouts.Root>\n <Page.Main aria-busy={isSubmittingForm}>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n navigationAction={\n <Link\n tag={NavLink}\n startIcon={<ArrowLeft />}\n to={`/plugins/${pluginId}`}\n id=\"go-back\"\n >\n {formatMessage({ id: getTrad('config.back'), defaultMessage: 'Back' })}\n </Link>\n }\n primaryAction={\n <Button\n size=\"S\"\n startIcon={<Check />}\n disabled={isEqual(modifiedData, initialData)}\n type=\"submit\"\n fullWidth\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('config.subtitle'),\n defaultMessage: 'Define the view settings of the media library.',\n })}\n title={formatMessage({\n id: getTrad('config.title'),\n defaultMessage: 'Configure the view - Media Library',\n })}\n />\n <Layouts.Content>\n <Settings\n data-testid=\"settings\"\n pageSize={modifiedData.pageSize || ''}\n sort={modifiedData.sort || ''}\n onChange={handleChange}\n />\n </Layouts.Content>\n <Dialog.Root open={showWarningSubmit} onOpenChange={toggleWarningSubmit}>\n <ConfirmDialog onConfirm={handleConfirm} variant=\"default\">\n {formatMessage({\n id: getTrad('config.popUpWarning.warning.updateAllSettings'),\n defaultMessage: 'This will modify all your settings',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </form>\n </Page.Main>\n </Layouts.Root>\n );\n};\n"],"names":["ConfigureTheView","config","trackUsage","useTracking","formatMessage","useIntl","toggleNotification","useNotification","mutateConfig","useConfig","isLoading","isSubmittingForm","showWarningSubmit","setWarningSubmit","React","useState","toggleWarningSubmit","prevState","reducerState","dispatch","useReducer","reducer","initialState","init","typedDispatch","initialData","modifiedData","handleSubmit","e","preventDefault","handleConfirm","mutateAsync","setLoaded","type","message","id","defaultMessage","handleChange","target","name","value","onChange","_jsx","Layouts","Root","Page","Main","aria-busy","_jsxs","form","onSubmit","Header","navigationAction","Link","tag","NavLink","startIcon","ArrowLeft","to","pluginId","getTrad","primaryAction","Button","size","Check","disabled","isEqual","fullWidth","subtitle","title","Content","Settings","data-testid","pageSize","sort","Dialog","open","onOpenChange","ConfirmDialog","onConfirm","variant"],"mappings":"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"}
|
|
@@ -6,6 +6,11 @@ var set = require('lodash/set');
|
|
|
6
6
|
var actionTypes = require('./actionTypes.js');
|
|
7
7
|
var init = require('./init.js');
|
|
8
8
|
|
|
9
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
|
|
11
|
+
var get__default = /*#__PURE__*/_interopDefault(get);
|
|
12
|
+
var set__default = /*#__PURE__*/_interopDefault(set);
|
|
13
|
+
|
|
9
14
|
const reducer = (state = init.initialState, action = {
|
|
10
15
|
type: ''
|
|
11
16
|
})=>// eslint-disable-next-line consistent-return
|
|
@@ -14,7 +19,7 @@ const reducer = (state = init.initialState, action = {
|
|
|
14
19
|
case actionTypes.ON_CHANGE:
|
|
15
20
|
{
|
|
16
21
|
if ('keys' in action && 'value' in action && action.keys) {
|
|
17
|
-
|
|
22
|
+
set__default.default(draftState, [
|
|
18
23
|
'modifiedData',
|
|
19
24
|
...action.keys.split('.')
|
|
20
25
|
], action.value);
|
|
@@ -24,7 +29,7 @@ const reducer = (state = init.initialState, action = {
|
|
|
24
29
|
case actionTypes.SET_LOADED:
|
|
25
30
|
{
|
|
26
31
|
// This action re-initialises the state using the current modifiedData.
|
|
27
|
-
const reInitialise = init.init(
|
|
32
|
+
const reInitialise = init.init(get__default.default(draftState, [
|
|
28
33
|
'modifiedData'
|
|
29
34
|
], {}));
|
|
30
35
|
draftState.initialData = reInitialise.initialData;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.js","sources":["../../../../../../admin/src/pages/App/ConfigureTheView/state/reducer.ts"],"sourcesContent":["import { produce } from 'immer'; // current\nimport get from 'lodash/get';\nimport set from 'lodash/set';\n\nimport { ON_CHANGE, SET_LOADED } from './actionTypes';\nimport { init, initialState } from './init';\n\nimport type { InitialState } from './init';\n\nexport interface ActionOnChange {\n type: string;\n keys?: string;\n value: string | number;\n}\n\nexport interface ActionSetLoaded {\n type: string;\n}\n\ninterface ActionInitialValue {\n type: string;\n}\n\nexport type Action = ActionSetLoaded | ActionOnChange | ActionInitialValue;\n\nexport const reducer = (\n state: InitialState = initialState,\n action: Action = {\n type: '',\n }\n) =>\n // eslint-disable-next-line consistent-return\n produce(state, (draftState) => {\n switch (action.type) {\n case ON_CHANGE: {\n if ('keys' in action && 'value' in action && action.keys) {\n set(draftState, ['modifiedData', ...action.keys.split('.')], action.value);\n }\n break;\n }\n case SET_LOADED: {\n // This action re-initialises the state using the current modifiedData.\n const reInitialise = init(get(draftState, ['modifiedData'], {}));\n draftState.initialData = reInitialise.initialData;\n draftState.modifiedData = reInitialise.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n"],"names":["reducer","state","initialState","action","type","produce","draftState","ON_CHANGE","keys","set","split","value","SET_LOADED","reInitialise","init","get","initialData","modifiedData"],"mappings":"
|
|
1
|
+
{"version":3,"file":"reducer.js","sources":["../../../../../../admin/src/pages/App/ConfigureTheView/state/reducer.ts"],"sourcesContent":["import { produce } from 'immer'; // current\nimport get from 'lodash/get';\nimport set from 'lodash/set';\n\nimport { ON_CHANGE, SET_LOADED } from './actionTypes';\nimport { init, initialState } from './init';\n\nimport type { InitialState } from './init';\n\nexport interface ActionOnChange {\n type: string;\n keys?: string;\n value: string | number;\n}\n\nexport interface ActionSetLoaded {\n type: string;\n}\n\ninterface ActionInitialValue {\n type: string;\n}\n\nexport type Action = ActionSetLoaded | ActionOnChange | ActionInitialValue;\n\nexport const reducer = (\n state: InitialState = initialState,\n action: Action = {\n type: '',\n }\n) =>\n // eslint-disable-next-line consistent-return\n produce(state, (draftState) => {\n switch (action.type) {\n case ON_CHANGE: {\n if ('keys' in action && 'value' in action && action.keys) {\n set(draftState, ['modifiedData', ...action.keys.split('.')], action.value);\n }\n break;\n }\n case SET_LOADED: {\n // This action re-initialises the state using the current modifiedData.\n const reInitialise = init(get(draftState, ['modifiedData'], {}));\n draftState.initialData = reInitialise.initialData;\n draftState.modifiedData = reInitialise.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n"],"names":["reducer","state","initialState","action","type","produce","draftState","ON_CHANGE","keys","set","split","value","SET_LOADED","reInitialise","init","get","initialData","modifiedData"],"mappings":";;;;;;;;;;;;;MAyBaA,OAAAA,GAAU,CACrBC,KAAAA,GAAsBC,iBAAY,EAClCC,MAAAA,GAAiB;IACfC,IAAAA,EAAM;AACR,CAAC;AAGDC,IAAAA,aAAAA,CAAQJ,OAAO,CAACK,UAAAA,GAAAA;AACd,QAAA,OAAQH,OAAOC,IAAI;YACjB,KAAKG,qBAAAA;AAAW,gBAAA;AACd,oBAAA,IAAI,UAAUJ,MAAAA,IAAU,OAAA,IAAWA,MAAAA,IAAUA,MAAAA,CAAOK,IAAI,EAAE;AACxDC,wBAAAA,oBAAAA,CAAIH,UAAAA,EAAY;AAAC,4BAAA,cAAA;+BAAmBH,MAAAA,CAAOK,IAAI,CAACE,KAAK,CAAC,GAAA;AAAK,yBAAA,EAAEP,OAAOQ,KAAK,CAAA;AAC3E,oBAAA;AACA,oBAAA;AACF,gBAAA;YACA,KAAKC,sBAAAA;AAAY,gBAAA;;oBAEf,MAAMC,YAAAA,GAAeC,SAAAA,CAAKC,oBAAAA,CAAIT,UAAAA,EAAY;AAAC,wBAAA;AAAe,qBAAA,EAAE,EAAC,CAAA,CAAA;oBAC7DA,UAAAA,CAAWU,WAAW,GAAGH,YAAAA,CAAaG,WAAW;oBACjDV,UAAAA,CAAWW,YAAY,GAAGJ,YAAAA,CAAaI,YAAY;AACnD,oBAAA;AACF,gBAAA;AACA,YAAA;gBACE,OAAOX,UAAAA;AACX;IACF,CAAA;;;;"}
|
|
@@ -42,7 +42,8 @@ var EmptyOrNoPermissions = require('./components/EmptyOrNoPermissions.js');
|
|
|
42
42
|
var Filters = require('./components/Filters.js');
|
|
43
43
|
var Header = require('./components/Header.js');
|
|
44
44
|
|
|
45
|
-
function
|
|
45
|
+
function _interopNamespace(e) {
|
|
46
|
+
if (e && e.__esModule) return e;
|
|
46
47
|
var n = Object.create(null);
|
|
47
48
|
if (e) {
|
|
48
49
|
Object.keys(e).forEach(function (k) {
|
|
@@ -59,7 +60,7 @@ function _interopNamespaceDefault(e) {
|
|
|
59
60
|
return Object.freeze(n);
|
|
60
61
|
}
|
|
61
62
|
|
|
62
|
-
var React__namespace = /*#__PURE__*/
|
|
63
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
63
64
|
|
|
64
65
|
// TODO: find a better naming convention for the file that was an index file before
|
|
65
66
|
const BoxWithHeight = styledComponents.styled(designSystem.Box)`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaLibrary.js","sources":["../../../../admin/src/pages/App/MediaLibrary.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport {\n Page,\n SearchInput,\n Pagination,\n useTracking,\n useQueryParams,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport {\n Checkbox,\n Box,\n Divider,\n Flex,\n IconButton,\n Typography,\n VisuallyHidden,\n Grid,\n} from '@strapi/design-system';\nimport { Cog, GridFour as GridIcon, List, Pencil } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink, useNavigate, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { AIUploadModal } from '../../ai/components/AIUploadModal';\nimport { AssetGridList } from '../../components/AssetGridList/AssetGridList';\nimport { EditAssetDialog } from '../../components/EditAssetDialog/EditAssetContent';\nimport { EditFolderDialog } from '../../components/EditFolderDialog/EditFolderDialog';\nimport { FolderCard } from '../../components/FolderCard/FolderCard/FolderCard';\nimport { FolderCardBody } from '../../components/FolderCard/FolderCardBody/FolderCardBody';\nimport { FolderCardBodyAction } from '../../components/FolderCard/FolderCardBodyAction/FolderCardBodyAction';\nimport { FolderCardCheckbox } from '../../components/FolderCard/FolderCardCheckbox/FolderCardCheckbox';\nimport { FolderGridList } from '../../components/FolderGridList/FolderGridList';\nimport { SortPicker } from '../../components/SortPicker/SortPicker';\nimport { TableList } from '../../components/TableList/TableList';\nimport { UploadAssetDialog } from '../../components/UploadAssetDialog/UploadAssetDialog';\nimport { localStorageKeys, viewOptions } from '../../constants';\nimport { useAIAvailability } from '../../hooks/useAiAvailability';\nimport { useAssets } from '../../hooks/useAssets';\nimport { useFolder } from '../../hooks/useFolder';\nimport { useFolders } from '../../hooks/useFolders';\nimport { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions';\nimport { usePersistentState } from '../../hooks/usePersistentState';\nimport { useSelectionState } from '../../hooks/useSelectionState';\nimport { containsAssetFilter, getBreadcrumbDataML, getFolderURL, getTrad } from '../../utils';\n\nimport { BulkActions } from './components/BulkActions';\nimport { EmptyOrNoPermissions } from './components/EmptyOrNoPermissions';\nimport { Filters } from './components/Filters';\nimport { Header } from './components/Header';\n\nimport type { BulkActionsProps } from './components/BulkActions';\nimport type { HeaderProps } from './components/Header';\nimport type { Query } from '../../../../shared/contracts/files';\nimport type { FolderDefinition } from '../../../../shared/contracts/folders';\nimport type { AssetGridListProps } from '../../components/AssetGridList/AssetGridList';\nimport type { Asset } from '../../components/EditAssetDialog/EditAssetContent';\nimport type { FolderRow, FileRow, TableListProps } from '../../components/TableList/TableList';\n\nconst BoxWithHeight = styled(Box)`\n height: 3.2rem;\n display: flex;\n align-items: center;\n`;\n\nconst TypographyMaxWidth = styled(Typography)`\n max-width: 100%;\n`;\n\nconst ActionContainer = styled(Box)`\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n`;\n\nexport const MediaLibrary = () => {\n const navigate = useNavigate();\n const {\n canRead,\n canCreate,\n canUpdate,\n canCopyLink,\n canDownload,\n canConfigureView,\n isLoading: permissionsLoading,\n } = useMediaLibraryPermissions();\n const { isEnabled: isAiEnabled, status: aiAvailabilityStatus } = useAIAvailability();\n const currentFolderToEditRef = React.useRef<HTMLDivElement>();\n const { formatMessage } = useIntl();\n const { pathname } = useLocation();\n const { trackUsage } = useTracking();\n const [{ query }, setQuery] = useQueryParams<Query>();\n const isFiltering = Boolean(query._q || query.filters);\n const [view, setView] = usePersistentState(localStorageKeys.view, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n const {\n data: assetsData,\n isLoading: assetsLoading,\n error: assetsError,\n } = useAssets({\n skipWhen: !canRead,\n query,\n });\n\n const {\n data: foldersData,\n isLoading: foldersLoading,\n error: foldersError,\n } = useFolders({\n enabled: canRead && assetsData?.pagination?.page === 1 && !containsAssetFilter(query),\n query,\n });\n\n const {\n data: currentFolder,\n isLoading: isCurrentFolderLoading,\n error: currentFolderError,\n } = useFolder(query?.folder as number | null | undefined, {\n enabled: canRead && !!query?.folder,\n });\n\n // Folder was not found: redirect to the media library root\n if (currentFolderError?.name === 'NotFoundError') {\n navigate(pathname);\n }\n\n const folders =\n foldersData?.map((folder) => ({\n ...folder,\n type: 'folder',\n folderURL: getFolderURL(pathname, query, {\n folder: folder.id.toString(),\n folderPath: folder.path,\n }),\n isSelectable: canUpdate,\n })) ?? [];\n const folderCount = folders?.length || 0;\n const assets =\n assetsData?.results?.map((asset) => ({ ...asset, type: 'asset', isSelectable: canUpdate })) ||\n [];\n const assetCount = assets?.length ?? 0;\n const totalAssetCount = assetsData?.pagination?.total;\n\n const isLoading =\n isCurrentFolderLoading ||\n foldersLoading ||\n permissionsLoading ||\n assetsLoading ||\n aiAvailabilityStatus === 'loading';\n const [showUploadAssetDialog, setShowUploadAssetDialog] = React.useState(false);\n const [showEditFolderDialog, setShowEditFolderDialog] = React.useState(false);\n const [assetToEdit, setAssetToEdit] = React.useState<Asset | undefined>(undefined);\n const [folderToEdit, setFolderToEdit] = React.useState<FolderRow | undefined | null>(undefined);\n const [selected, { selectOne, selectAll, setSelections }] = useSelectionState<\n FolderRow | FileRow\n >(['type', 'id'], []);\n // reset selection when folder changes to hide bulk actions\n React.useEffect(() => {\n setSelections([]);\n }, [query.folder, setSelections]);\n\n const indeterminateBulkSelect =\n selected?.length > 0 && selected?.length !== assetCount + folderCount;\n const toggleUploadAssetDialog = () => setShowUploadAssetDialog((prev) => !prev);\n const toggleEditFolderDialog = ({ created = false } = {}) => {\n // folders are only displayed on the first page, therefore\n // we have to navigate the user to that page, in case a folder\n // was created successfully in order for them to see it\n if (created && query?.page !== '1') {\n setQuery({\n ...query,\n page: 1,\n });\n }\n\n setShowEditFolderDialog((prev) => !prev);\n };\n\n const handleBulkSelect = (\n checked: boolean | 'indeterminate',\n elements?: FolderRow[] | FileRow[]\n ) => {\n if (checked) {\n trackUsage('didSelectAllMediaLibraryElements');\n }\n\n selectAll(elements as (FolderRow | FileRow)[]);\n };\n\n const handleChangeSort = (value: Query['sort'] | string) => {\n trackUsage('didSortMediaLibraryElements', {\n location: 'upload',\n sort: value,\n });\n setQuery({ sort: value as Query['sort'] });\n };\n\n const handleEditFolder = (folder: FolderRow) => {\n setFolderToEdit(folder);\n setShowEditFolderDialog(true);\n };\n\n const handleEditFolderClose = (payload?: { created?: boolean | undefined }) => {\n setFolderToEdit(null);\n toggleEditFolderDialog(payload);\n\n if (currentFolderToEditRef.current) {\n currentFolderToEditRef.current.focus();\n }\n };\n\n const handleAssetDeleted = (numberOfAssets: number) => {\n if (\n numberOfAssets === assetCount &&\n assetsData?.pagination?.page === assetsData?.pagination?.pageCount &&\n assetsData?.pagination?.page &&\n assetsData.pagination.page > 1\n ) {\n setQuery({\n ...query,\n page: assetsData.pagination.page - 1,\n });\n }\n };\n\n const handleBulkActionSuccess = () => {\n selectAll();\n\n handleAssetDeleted(selected.length);\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (assetsError || foldersError || aiAvailabilityStatus === 'error') {\n return <Page.Error />;\n }\n\n return (\n <Layouts.Root>\n <Page.Main>\n <Header\n breadcrumbs={\n !isCurrentFolderLoading\n ? (getBreadcrumbDataML(currentFolder!, {\n pathname,\n query,\n }) as HeaderProps['breadcrumbs'])\n : null\n }\n canCreate={canCreate}\n onToggleEditFolderDialog={toggleEditFolderDialog}\n onToggleUploadAssetDialog={toggleUploadAssetDialog}\n folder={currentFolder as HeaderProps['folder']}\n />\n <Layouts.Action\n startActions={\n <>\n {canUpdate && isGridView && (assetCount > 0 || folderCount > 0) && (\n <BoxWithHeight\n paddingLeft={2}\n paddingRight={2}\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n >\n <Checkbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all folders & assets',\n })}\n checked={\n indeterminateBulkSelect\n ? 'indeterminate'\n : (assetCount > 0 || folderCount > 0) &&\n selected.length === assetCount + folderCount\n }\n onCheckedChange={(e) =>\n handleBulkSelect(e, [...assets, ...folders] as FolderRow[] | FileRow[])\n }\n />\n </BoxWithHeight>\n )}\n {canRead && isGridView && (\n <SortPicker value={query?.sort} onChangeSort={handleChangeSort} />\n )}\n {canRead && <Filters />}\n </>\n }\n endActions={\n <>\n {canConfigureView ? (\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n tag={ReactRouterLink}\n to={{\n pathname: `${pathname}/configuration`,\n search: stringify(query, { encode: false }),\n }}\n label={formatMessage({\n id: 'app.links.configure-view',\n defaultMessage: 'Configure the view',\n })}\n >\n <Cog />\n </IconButton>\n </ActionContainer>\n ) : null}\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n label={\n isGridView\n ? formatMessage({\n id: getTrad('view-switch.list'),\n defaultMessage: 'List View',\n })\n : formatMessage({\n id: getTrad('view-switch.grid'),\n defaultMessage: 'Grid View',\n })\n }\n onClick={() => setView(isGridView ? viewOptions.LIST : viewOptions.GRID)}\n >\n {isGridView ? <List /> : <GridIcon />}\n </IconButton>\n </ActionContainer>\n <SearchInput\n label={formatMessage({\n id: getTrad('search.label'),\n defaultMessage: 'Search for an asset',\n })}\n trackedEvent=\"didSearchMediaLibraryElements\"\n trackedEventDetails={{ location: 'upload' }}\n />\n </>\n }\n />\n\n <Layouts.Content>\n {selected.length > 0 && (\n <BulkActions\n currentFolder={currentFolder as BulkActionsProps['currentFolder']}\n selected={selected as BulkActionsProps['selected']}\n onSuccess={handleBulkActionSuccess}\n />\n )}\n\n {folderCount === 0 && assetCount === 0 && (\n <EmptyOrNoPermissions\n canCreate={canCreate}\n canRead={canRead}\n isFiltering={isFiltering}\n onActionClick={toggleUploadAssetDialog}\n />\n )}\n\n {/* TODO: fix AssetListTable should handle no assets views (loading) */}\n {canRead && !isGridView && (assetCount > 0 || folderCount > 0) && (\n <TableList\n assetCount={assetCount}\n folderCount={folderCount}\n indeterminate={indeterminateBulkSelect}\n onChangeSort={handleChangeSort}\n onChangeFolder={(folderID, folderPath) =>\n navigate(getFolderURL(pathname, query, { folder: folderID.toString(), folderPath }))\n }\n onEditAsset={setAssetToEdit as TableListProps['onEditAsset']}\n onEditFolder={handleEditFolder}\n onSelectOne={selectOne}\n onSelectAll={handleBulkSelect as TableListProps['onSelectAll']}\n rows={[...folders, ...assets] as TableListProps['rows']}\n selected={selected as TableListProps['selected']}\n shouldDisableBulkSelect={!canUpdate}\n sortQuery={query?.sort ?? ''}\n />\n )}\n\n {canRead && isGridView && (\n <>\n {folderCount > 0 && (\n <FolderGridList\n title={\n // Folders title should only appear if:\n // user is filtering and there are assets to display, to divide both type of elements\n // user is not filtering\n (((isFiltering && assetCount > 0) || !isFiltering) &&\n formatMessage(\n {\n id: getTrad('list.folders.title'),\n defaultMessage: 'Folders ({count})',\n },\n { count: folderCount }\n )) ||\n ''\n }\n >\n {folders.map((folder) => {\n const selectedFolders = selected.filter(({ type }) => type === 'folder');\n const isSelected = !!selectedFolders.find(\n (currentFolder) => currentFolder.id === folder.id\n );\n\n const url = getFolderURL(pathname, query, {\n folder: folder?.id.toString(),\n folderPath: folder?.path,\n });\n\n return (\n <Grid.Item\n col={3}\n m={4}\n s={6}\n xs={12}\n key={`folder-${folder.id}`}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FolderCard\n ref={\n folderToEdit && folder.id === folderToEdit.id\n ? currentFolderToEditRef\n : undefined\n }\n ariaLabel={folder.name}\n id={`folder-${folder.id}`}\n to={url}\n startAction={\n folder.isSelectable ? (\n <FolderCardCheckbox\n data-testid={`folder-checkbox-${folder.id}`}\n checked={isSelected}\n onCheckedChange={() => selectOne(folder)}\n />\n ) : null\n }\n cardActions={\n <IconButton\n label={formatMessage({\n id: getTrad('list.folder.edit'),\n defaultMessage: 'Edit folder',\n })}\n onClick={() => handleEditFolder(folder)}\n >\n <Pencil />\n </IconButton>\n }\n >\n <FolderCardBody>\n <FolderCardBodyAction to={url}>\n <Flex tag=\"h2\" direction=\"column\" alignItems=\"start\" maxWidth=\"100%\">\n <TypographyMaxWidth\n fontWeight=\"semiBold\"\n textColor=\"neutral800\"\n ellipsis\n >\n {folder.name}\n <VisuallyHidden>:</VisuallyHidden>\n </TypographyMaxWidth>\n\n <TypographyMaxWidth\n tag=\"span\"\n textColor=\"neutral600\"\n variant=\"pi\"\n ellipsis\n >\n {formatMessage(\n {\n id: getTrad('list.folder.subtitle'),\n defaultMessage:\n '{folderCount, plural, one {# folder} other {# folders}}, {filesCount, plural, one {# asset} other {# assets}}',\n },\n {\n folderCount: (folder as FolderDefinition).children?.count,\n filesCount: (folder as FolderDefinition).files?.count,\n }\n )}\n </TypographyMaxWidth>\n </Flex>\n </FolderCardBodyAction>\n </FolderCardBody>\n </FolderCard>\n </Grid.Item>\n );\n })}\n </FolderGridList>\n )}\n\n {assetCount > 0 && folderCount > 0 && (\n <Box paddingTop={6} paddingBottom={4}>\n <Divider />\n </Box>\n )}\n\n {assetCount > 0 && (\n <AssetGridList\n assets={assets}\n onEditAsset={setAssetToEdit as AssetGridListProps['onEditAsset']}\n onSelectAsset={selectOne}\n selectedAssets={\n selected.filter(\n ({ type }) => type === 'asset'\n ) as AssetGridListProps['selectedAssets']\n }\n title={\n // Assets title should only appear if:\n // - user is not filtering\n // - user is filtering and there are folders to display, to separate them\n // - user is on page 1 since folders won't appear on any other page than the first one (no need to visually separate them)\n ((!isFiltering || (isFiltering && folderCount > 0)) &&\n assetsData?.pagination?.page === 1 &&\n formatMessage(\n {\n id: getTrad('list.assets.title'),\n defaultMessage: 'Assets ({count})',\n },\n { count: totalAssetCount }\n )) ||\n ''\n }\n />\n )}\n </>\n )}\n <Pagination.Root {...assetsData?.pagination}>\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Layouts.Content>\n </Page.Main>\n {showUploadAssetDialog &&\n (isAiEnabled ? (\n <AIUploadModal\n open={showUploadAssetDialog}\n onClose={toggleUploadAssetDialog}\n folderId={query?.folder ? Number(query.folder) : null}\n />\n ) : (\n <UploadAssetDialog\n open={showUploadAssetDialog}\n onClose={toggleUploadAssetDialog}\n trackedLocation=\"upload\"\n folderId={query?.folder as string | number | null | undefined}\n />\n ))}\n {showEditFolderDialog && (\n <EditFolderDialog\n open={showEditFolderDialog}\n onClose={() => handleEditFolderClose()}\n folder={folderToEdit as FolderDefinition}\n parentFolderId={query?.folder as string | number | null | undefined}\n location=\"upload\"\n />\n )}\n {assetToEdit && (\n <EditAssetDialog\n onClose={(editedAsset) => {\n // The asset has been deleted\n if (editedAsset === null) {\n handleAssetDeleted(1);\n }\n\n setAssetToEdit(undefined);\n }}\n open={!!assetToEdit}\n asset={assetToEdit}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n trackedLocation=\"upload\"\n />\n )}\n </Layouts.Root>\n );\n};\n"],"names":["BoxWithHeight","styled","Box","TypographyMaxWidth","Typography","ActionContainer","theme","colors","neutral500","MediaLibrary","navigate","useNavigate","canRead","canCreate","canUpdate","canCopyLink","canDownload","canConfigureView","isLoading","permissionsLoading","useMediaLibraryPermissions","isEnabled","isAiEnabled","status","aiAvailabilityStatus","useAIAvailability","currentFolderToEditRef","React","useRef","formatMessage","useIntl","pathname","useLocation","trackUsage","useTracking","query","setQuery","useQueryParams","isFiltering","Boolean","_q","filters","view","setView","usePersistentState","localStorageKeys","viewOptions","GRID","isGridView","data","assetsData","assetsLoading","error","assetsError","useAssets","skipWhen","foldersData","foldersLoading","foldersError","useFolders","enabled","pagination","page","containsAssetFilter","currentFolder","isCurrentFolderLoading","currentFolderError","useFolder","folder","name","folders","map","type","folderURL","getFolderURL","id","toString","folderPath","path","isSelectable","folderCount","length","assets","results","asset","assetCount","totalAssetCount","total","showUploadAssetDialog","setShowUploadAssetDialog","useState","showEditFolderDialog","setShowEditFolderDialog","assetToEdit","setAssetToEdit","undefined","folderToEdit","setFolderToEdit","selected","selectOne","selectAll","setSelections","useSelectionState","useEffect","indeterminateBulkSelect","toggleUploadAssetDialog","prev","toggleEditFolderDialog","created","handleBulkSelect","checked","elements","handleChangeSort","value","location","sort","handleEditFolder","handleEditFolderClose","payload","current","focus","handleAssetDeleted","numberOfAssets","pageCount","handleBulkActionSuccess","_jsx","Page","Loading","Error","_jsxs","Layouts","Root","Main","Header","breadcrumbs","getBreadcrumbDataML","onToggleEditFolderDialog","onToggleUploadAssetDialog","Action","startActions","_Fragment","paddingLeft","paddingRight","background","hasRadius","borderColor","Checkbox","aria-label","getTrad","defaultMessage","onCheckedChange","e","SortPicker","onChangeSort","Filters","endActions","paddingTop","paddingBottom","IconButton","tag","ReactRouterLink","to","search","stringify","encode","label","Cog","onClick","LIST","List","GridIcon","SearchInput","trackedEvent","trackedEventDetails","Content","BulkActions","onSuccess","EmptyOrNoPermissions","onActionClick","TableList","indeterminate","onChangeFolder","folderID","onEditAsset","onEditFolder","onSelectOne","onSelectAll","rows","shouldDisableBulkSelect","sortQuery","FolderGridList","title","count","selectedFolders","filter","isSelected","find","url","Grid","Item","col","m","s","xs","direction","alignItems","FolderCard","ref","ariaLabel","startAction","FolderCardCheckbox","data-testid","cardActions","Pencil","FolderCardBody","FolderCardBodyAction","Flex","maxWidth","fontWeight","textColor","ellipsis","VisuallyHidden","variant","children","filesCount","files","Divider","AssetGridList","onSelectAsset","selectedAssets","Pagination","PageSize","Links","AIUploadModal","open","onClose","folderId","Number","UploadAssetDialog","trackedLocation","EditFolderDialog","parentFolderId","EditAssetDialog","editedAsset"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MediaLibrary.js","sources":["../../../../admin/src/pages/App/MediaLibrary.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport {\n Page,\n SearchInput,\n Pagination,\n useTracking,\n useQueryParams,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport {\n Checkbox,\n Box,\n Divider,\n Flex,\n IconButton,\n Typography,\n VisuallyHidden,\n Grid,\n} from '@strapi/design-system';\nimport { Cog, GridFour as GridIcon, List, Pencil } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink, useNavigate, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { AIUploadModal } from '../../ai/components/AIUploadModal';\nimport { AssetGridList } from '../../components/AssetGridList/AssetGridList';\nimport { EditAssetDialog } from '../../components/EditAssetDialog/EditAssetContent';\nimport { EditFolderDialog } from '../../components/EditFolderDialog/EditFolderDialog';\nimport { FolderCard } from '../../components/FolderCard/FolderCard/FolderCard';\nimport { FolderCardBody } from '../../components/FolderCard/FolderCardBody/FolderCardBody';\nimport { FolderCardBodyAction } from '../../components/FolderCard/FolderCardBodyAction/FolderCardBodyAction';\nimport { FolderCardCheckbox } from '../../components/FolderCard/FolderCardCheckbox/FolderCardCheckbox';\nimport { FolderGridList } from '../../components/FolderGridList/FolderGridList';\nimport { SortPicker } from '../../components/SortPicker/SortPicker';\nimport { TableList } from '../../components/TableList/TableList';\nimport { UploadAssetDialog } from '../../components/UploadAssetDialog/UploadAssetDialog';\nimport { localStorageKeys, viewOptions } from '../../constants';\nimport { useAIAvailability } from '../../hooks/useAiAvailability';\nimport { useAssets } from '../../hooks/useAssets';\nimport { useFolder } from '../../hooks/useFolder';\nimport { useFolders } from '../../hooks/useFolders';\nimport { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions';\nimport { usePersistentState } from '../../hooks/usePersistentState';\nimport { useSelectionState } from '../../hooks/useSelectionState';\nimport { containsAssetFilter, getBreadcrumbDataML, getFolderURL, getTrad } from '../../utils';\n\nimport { BulkActions } from './components/BulkActions';\nimport { EmptyOrNoPermissions } from './components/EmptyOrNoPermissions';\nimport { Filters } from './components/Filters';\nimport { Header } from './components/Header';\n\nimport type { BulkActionsProps } from './components/BulkActions';\nimport type { HeaderProps } from './components/Header';\nimport type { Query } from '../../../../shared/contracts/files';\nimport type { FolderDefinition } from '../../../../shared/contracts/folders';\nimport type { AssetGridListProps } from '../../components/AssetGridList/AssetGridList';\nimport type { Asset } from '../../components/EditAssetDialog/EditAssetContent';\nimport type { FolderRow, FileRow, TableListProps } from '../../components/TableList/TableList';\n\nconst BoxWithHeight = styled(Box)`\n height: 3.2rem;\n display: flex;\n align-items: center;\n`;\n\nconst TypographyMaxWidth = styled(Typography)`\n max-width: 100%;\n`;\n\nconst ActionContainer = styled(Box)`\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n`;\n\nexport const MediaLibrary = () => {\n const navigate = useNavigate();\n const {\n canRead,\n canCreate,\n canUpdate,\n canCopyLink,\n canDownload,\n canConfigureView,\n isLoading: permissionsLoading,\n } = useMediaLibraryPermissions();\n const { isEnabled: isAiEnabled, status: aiAvailabilityStatus } = useAIAvailability();\n const currentFolderToEditRef = React.useRef<HTMLDivElement>();\n const { formatMessage } = useIntl();\n const { pathname } = useLocation();\n const { trackUsage } = useTracking();\n const [{ query }, setQuery] = useQueryParams<Query>();\n const isFiltering = Boolean(query._q || query.filters);\n const [view, setView] = usePersistentState(localStorageKeys.view, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n const {\n data: assetsData,\n isLoading: assetsLoading,\n error: assetsError,\n } = useAssets({\n skipWhen: !canRead,\n query,\n });\n\n const {\n data: foldersData,\n isLoading: foldersLoading,\n error: foldersError,\n } = useFolders({\n enabled: canRead && assetsData?.pagination?.page === 1 && !containsAssetFilter(query),\n query,\n });\n\n const {\n data: currentFolder,\n isLoading: isCurrentFolderLoading,\n error: currentFolderError,\n } = useFolder(query?.folder as number | null | undefined, {\n enabled: canRead && !!query?.folder,\n });\n\n // Folder was not found: redirect to the media library root\n if (currentFolderError?.name === 'NotFoundError') {\n navigate(pathname);\n }\n\n const folders =\n foldersData?.map((folder) => ({\n ...folder,\n type: 'folder',\n folderURL: getFolderURL(pathname, query, {\n folder: folder.id.toString(),\n folderPath: folder.path,\n }),\n isSelectable: canUpdate,\n })) ?? [];\n const folderCount = folders?.length || 0;\n const assets =\n assetsData?.results?.map((asset) => ({ ...asset, type: 'asset', isSelectable: canUpdate })) ||\n [];\n const assetCount = assets?.length ?? 0;\n const totalAssetCount = assetsData?.pagination?.total;\n\n const isLoading =\n isCurrentFolderLoading ||\n foldersLoading ||\n permissionsLoading ||\n assetsLoading ||\n aiAvailabilityStatus === 'loading';\n const [showUploadAssetDialog, setShowUploadAssetDialog] = React.useState(false);\n const [showEditFolderDialog, setShowEditFolderDialog] = React.useState(false);\n const [assetToEdit, setAssetToEdit] = React.useState<Asset | undefined>(undefined);\n const [folderToEdit, setFolderToEdit] = React.useState<FolderRow | undefined | null>(undefined);\n const [selected, { selectOne, selectAll, setSelections }] = useSelectionState<\n FolderRow | FileRow\n >(['type', 'id'], []);\n // reset selection when folder changes to hide bulk actions\n React.useEffect(() => {\n setSelections([]);\n }, [query.folder, setSelections]);\n\n const indeterminateBulkSelect =\n selected?.length > 0 && selected?.length !== assetCount + folderCount;\n const toggleUploadAssetDialog = () => setShowUploadAssetDialog((prev) => !prev);\n const toggleEditFolderDialog = ({ created = false } = {}) => {\n // folders are only displayed on the first page, therefore\n // we have to navigate the user to that page, in case a folder\n // was created successfully in order for them to see it\n if (created && query?.page !== '1') {\n setQuery({\n ...query,\n page: 1,\n });\n }\n\n setShowEditFolderDialog((prev) => !prev);\n };\n\n const handleBulkSelect = (\n checked: boolean | 'indeterminate',\n elements?: FolderRow[] | FileRow[]\n ) => {\n if (checked) {\n trackUsage('didSelectAllMediaLibraryElements');\n }\n\n selectAll(elements as (FolderRow | FileRow)[]);\n };\n\n const handleChangeSort = (value: Query['sort'] | string) => {\n trackUsage('didSortMediaLibraryElements', {\n location: 'upload',\n sort: value,\n });\n setQuery({ sort: value as Query['sort'] });\n };\n\n const handleEditFolder = (folder: FolderRow) => {\n setFolderToEdit(folder);\n setShowEditFolderDialog(true);\n };\n\n const handleEditFolderClose = (payload?: { created?: boolean | undefined }) => {\n setFolderToEdit(null);\n toggleEditFolderDialog(payload);\n\n if (currentFolderToEditRef.current) {\n currentFolderToEditRef.current.focus();\n }\n };\n\n const handleAssetDeleted = (numberOfAssets: number) => {\n if (\n numberOfAssets === assetCount &&\n assetsData?.pagination?.page === assetsData?.pagination?.pageCount &&\n assetsData?.pagination?.page &&\n assetsData.pagination.page > 1\n ) {\n setQuery({\n ...query,\n page: assetsData.pagination.page - 1,\n });\n }\n };\n\n const handleBulkActionSuccess = () => {\n selectAll();\n\n handleAssetDeleted(selected.length);\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (assetsError || foldersError || aiAvailabilityStatus === 'error') {\n return <Page.Error />;\n }\n\n return (\n <Layouts.Root>\n <Page.Main>\n <Header\n breadcrumbs={\n !isCurrentFolderLoading\n ? (getBreadcrumbDataML(currentFolder!, {\n pathname,\n query,\n }) as HeaderProps['breadcrumbs'])\n : null\n }\n canCreate={canCreate}\n onToggleEditFolderDialog={toggleEditFolderDialog}\n onToggleUploadAssetDialog={toggleUploadAssetDialog}\n folder={currentFolder as HeaderProps['folder']}\n />\n <Layouts.Action\n startActions={\n <>\n {canUpdate && isGridView && (assetCount > 0 || folderCount > 0) && (\n <BoxWithHeight\n paddingLeft={2}\n paddingRight={2}\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n >\n <Checkbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all folders & assets',\n })}\n checked={\n indeterminateBulkSelect\n ? 'indeterminate'\n : (assetCount > 0 || folderCount > 0) &&\n selected.length === assetCount + folderCount\n }\n onCheckedChange={(e) =>\n handleBulkSelect(e, [...assets, ...folders] as FolderRow[] | FileRow[])\n }\n />\n </BoxWithHeight>\n )}\n {canRead && isGridView && (\n <SortPicker value={query?.sort} onChangeSort={handleChangeSort} />\n )}\n {canRead && <Filters />}\n </>\n }\n endActions={\n <>\n {canConfigureView ? (\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n tag={ReactRouterLink}\n to={{\n pathname: `${pathname}/configuration`,\n search: stringify(query, { encode: false }),\n }}\n label={formatMessage({\n id: 'app.links.configure-view',\n defaultMessage: 'Configure the view',\n })}\n >\n <Cog />\n </IconButton>\n </ActionContainer>\n ) : null}\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n label={\n isGridView\n ? formatMessage({\n id: getTrad('view-switch.list'),\n defaultMessage: 'List View',\n })\n : formatMessage({\n id: getTrad('view-switch.grid'),\n defaultMessage: 'Grid View',\n })\n }\n onClick={() => setView(isGridView ? viewOptions.LIST : viewOptions.GRID)}\n >\n {isGridView ? <List /> : <GridIcon />}\n </IconButton>\n </ActionContainer>\n <SearchInput\n label={formatMessage({\n id: getTrad('search.label'),\n defaultMessage: 'Search for an asset',\n })}\n trackedEvent=\"didSearchMediaLibraryElements\"\n trackedEventDetails={{ location: 'upload' }}\n />\n </>\n }\n />\n\n <Layouts.Content>\n {selected.length > 0 && (\n <BulkActions\n currentFolder={currentFolder as BulkActionsProps['currentFolder']}\n selected={selected as BulkActionsProps['selected']}\n onSuccess={handleBulkActionSuccess}\n />\n )}\n\n {folderCount === 0 && assetCount === 0 && (\n <EmptyOrNoPermissions\n canCreate={canCreate}\n canRead={canRead}\n isFiltering={isFiltering}\n onActionClick={toggleUploadAssetDialog}\n />\n )}\n\n {/* TODO: fix AssetListTable should handle no assets views (loading) */}\n {canRead && !isGridView && (assetCount > 0 || folderCount > 0) && (\n <TableList\n assetCount={assetCount}\n folderCount={folderCount}\n indeterminate={indeterminateBulkSelect}\n onChangeSort={handleChangeSort}\n onChangeFolder={(folderID, folderPath) =>\n navigate(getFolderURL(pathname, query, { folder: folderID.toString(), folderPath }))\n }\n onEditAsset={setAssetToEdit as TableListProps['onEditAsset']}\n onEditFolder={handleEditFolder}\n onSelectOne={selectOne}\n onSelectAll={handleBulkSelect as TableListProps['onSelectAll']}\n rows={[...folders, ...assets] as TableListProps['rows']}\n selected={selected as TableListProps['selected']}\n shouldDisableBulkSelect={!canUpdate}\n sortQuery={query?.sort ?? ''}\n />\n )}\n\n {canRead && isGridView && (\n <>\n {folderCount > 0 && (\n <FolderGridList\n title={\n // Folders title should only appear if:\n // user is filtering and there are assets to display, to divide both type of elements\n // user is not filtering\n (((isFiltering && assetCount > 0) || !isFiltering) &&\n formatMessage(\n {\n id: getTrad('list.folders.title'),\n defaultMessage: 'Folders ({count})',\n },\n { count: folderCount }\n )) ||\n ''\n }\n >\n {folders.map((folder) => {\n const selectedFolders = selected.filter(({ type }) => type === 'folder');\n const isSelected = !!selectedFolders.find(\n (currentFolder) => currentFolder.id === folder.id\n );\n\n const url = getFolderURL(pathname, query, {\n folder: folder?.id.toString(),\n folderPath: folder?.path,\n });\n\n return (\n <Grid.Item\n col={3}\n m={4}\n s={6}\n xs={12}\n key={`folder-${folder.id}`}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FolderCard\n ref={\n folderToEdit && folder.id === folderToEdit.id\n ? currentFolderToEditRef\n : undefined\n }\n ariaLabel={folder.name}\n id={`folder-${folder.id}`}\n to={url}\n startAction={\n folder.isSelectable ? (\n <FolderCardCheckbox\n data-testid={`folder-checkbox-${folder.id}`}\n checked={isSelected}\n onCheckedChange={() => selectOne(folder)}\n />\n ) : null\n }\n cardActions={\n <IconButton\n label={formatMessage({\n id: getTrad('list.folder.edit'),\n defaultMessage: 'Edit folder',\n })}\n onClick={() => handleEditFolder(folder)}\n >\n <Pencil />\n </IconButton>\n }\n >\n <FolderCardBody>\n <FolderCardBodyAction to={url}>\n <Flex tag=\"h2\" direction=\"column\" alignItems=\"start\" maxWidth=\"100%\">\n <TypographyMaxWidth\n fontWeight=\"semiBold\"\n textColor=\"neutral800\"\n ellipsis\n >\n {folder.name}\n <VisuallyHidden>:</VisuallyHidden>\n </TypographyMaxWidth>\n\n <TypographyMaxWidth\n tag=\"span\"\n textColor=\"neutral600\"\n variant=\"pi\"\n ellipsis\n >\n {formatMessage(\n {\n id: getTrad('list.folder.subtitle'),\n defaultMessage:\n '{folderCount, plural, one {# folder} other {# folders}}, {filesCount, plural, one {# asset} other {# assets}}',\n },\n {\n folderCount: (folder as FolderDefinition).children?.count,\n filesCount: (folder as FolderDefinition).files?.count,\n }\n )}\n </TypographyMaxWidth>\n </Flex>\n </FolderCardBodyAction>\n </FolderCardBody>\n </FolderCard>\n </Grid.Item>\n );\n })}\n </FolderGridList>\n )}\n\n {assetCount > 0 && folderCount > 0 && (\n <Box paddingTop={6} paddingBottom={4}>\n <Divider />\n </Box>\n )}\n\n {assetCount > 0 && (\n <AssetGridList\n assets={assets}\n onEditAsset={setAssetToEdit as AssetGridListProps['onEditAsset']}\n onSelectAsset={selectOne}\n selectedAssets={\n selected.filter(\n ({ type }) => type === 'asset'\n ) as AssetGridListProps['selectedAssets']\n }\n title={\n // Assets title should only appear if:\n // - user is not filtering\n // - user is filtering and there are folders to display, to separate them\n // - user is on page 1 since folders won't appear on any other page than the first one (no need to visually separate them)\n ((!isFiltering || (isFiltering && folderCount > 0)) &&\n assetsData?.pagination?.page === 1 &&\n formatMessage(\n {\n id: getTrad('list.assets.title'),\n defaultMessage: 'Assets ({count})',\n },\n { count: totalAssetCount }\n )) ||\n ''\n }\n />\n )}\n </>\n )}\n <Pagination.Root {...assetsData?.pagination}>\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Layouts.Content>\n </Page.Main>\n {showUploadAssetDialog &&\n (isAiEnabled ? (\n <AIUploadModal\n open={showUploadAssetDialog}\n onClose={toggleUploadAssetDialog}\n folderId={query?.folder ? Number(query.folder) : null}\n />\n ) : (\n <UploadAssetDialog\n open={showUploadAssetDialog}\n onClose={toggleUploadAssetDialog}\n trackedLocation=\"upload\"\n folderId={query?.folder as string | number | null | undefined}\n />\n ))}\n {showEditFolderDialog && (\n <EditFolderDialog\n open={showEditFolderDialog}\n onClose={() => handleEditFolderClose()}\n folder={folderToEdit as FolderDefinition}\n parentFolderId={query?.folder as string | number | null | undefined}\n location=\"upload\"\n />\n )}\n {assetToEdit && (\n <EditAssetDialog\n onClose={(editedAsset) => {\n // The asset has been deleted\n if (editedAsset === null) {\n handleAssetDeleted(1);\n }\n\n setAssetToEdit(undefined);\n }}\n open={!!assetToEdit}\n asset={assetToEdit}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n trackedLocation=\"upload\"\n />\n )}\n </Layouts.Root>\n );\n};\n"],"names":["BoxWithHeight","styled","Box","TypographyMaxWidth","Typography","ActionContainer","theme","colors","neutral500","MediaLibrary","navigate","useNavigate","canRead","canCreate","canUpdate","canCopyLink","canDownload","canConfigureView","isLoading","permissionsLoading","useMediaLibraryPermissions","isEnabled","isAiEnabled","status","aiAvailabilityStatus","useAIAvailability","currentFolderToEditRef","React","useRef","formatMessage","useIntl","pathname","useLocation","trackUsage","useTracking","query","setQuery","useQueryParams","isFiltering","Boolean","_q","filters","view","setView","usePersistentState","localStorageKeys","viewOptions","GRID","isGridView","data","assetsData","assetsLoading","error","assetsError","useAssets","skipWhen","foldersData","foldersLoading","foldersError","useFolders","enabled","pagination","page","containsAssetFilter","currentFolder","isCurrentFolderLoading","currentFolderError","useFolder","folder","name","folders","map","type","folderURL","getFolderURL","id","toString","folderPath","path","isSelectable","folderCount","length","assets","results","asset","assetCount","totalAssetCount","total","showUploadAssetDialog","setShowUploadAssetDialog","useState","showEditFolderDialog","setShowEditFolderDialog","assetToEdit","setAssetToEdit","undefined","folderToEdit","setFolderToEdit","selected","selectOne","selectAll","setSelections","useSelectionState","useEffect","indeterminateBulkSelect","toggleUploadAssetDialog","prev","toggleEditFolderDialog","created","handleBulkSelect","checked","elements","handleChangeSort","value","location","sort","handleEditFolder","handleEditFolderClose","payload","current","focus","handleAssetDeleted","numberOfAssets","pageCount","handleBulkActionSuccess","_jsx","Page","Loading","Error","_jsxs","Layouts","Root","Main","Header","breadcrumbs","getBreadcrumbDataML","onToggleEditFolderDialog","onToggleUploadAssetDialog","Action","startActions","_Fragment","paddingLeft","paddingRight","background","hasRadius","borderColor","Checkbox","aria-label","getTrad","defaultMessage","onCheckedChange","e","SortPicker","onChangeSort","Filters","endActions","paddingTop","paddingBottom","IconButton","tag","ReactRouterLink","to","search","stringify","encode","label","Cog","onClick","LIST","List","GridIcon","SearchInput","trackedEvent","trackedEventDetails","Content","BulkActions","onSuccess","EmptyOrNoPermissions","onActionClick","TableList","indeterminate","onChangeFolder","folderID","onEditAsset","onEditFolder","onSelectOne","onSelectAll","rows","shouldDisableBulkSelect","sortQuery","FolderGridList","title","count","selectedFolders","filter","isSelected","find","url","Grid","Item","col","m","s","xs","direction","alignItems","FolderCard","ref","ariaLabel","startAction","FolderCardCheckbox","data-testid","cardActions","Pencil","FolderCardBody","FolderCardBodyAction","Flex","maxWidth","fontWeight","textColor","ellipsis","VisuallyHidden","variant","children","filesCount","files","Divider","AssetGridList","onSelectAsset","selectedAssets","Pagination","PageSize","Links","AIUploadModal","open","onClose","folderId","Number","UploadAssetDialog","trackedLocation","EditFolderDialog","parentFolderId","EditAssetDialog","editedAsset"],"mappings":"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"}
|
|
@@ -7,7 +7,8 @@ var icons = require('@strapi/icons');
|
|
|
7
7
|
var reactIntl = require('react-intl');
|
|
8
8
|
var BulkMoveDialog = require('../../../components/BulkMoveDialog/BulkMoveDialog.js');
|
|
9
9
|
|
|
10
|
-
function
|
|
10
|
+
function _interopNamespace(e) {
|
|
11
|
+
if (e && e.__esModule) return e;
|
|
11
12
|
var n = Object.create(null);
|
|
12
13
|
if (e) {
|
|
13
14
|
Object.keys(e).forEach(function (k) {
|
|
@@ -24,7 +25,7 @@ function _interopNamespaceDefault(e) {
|
|
|
24
25
|
return Object.freeze(n);
|
|
25
26
|
}
|
|
26
27
|
|
|
27
|
-
var React__namespace = /*#__PURE__*/
|
|
28
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
28
29
|
|
|
29
30
|
const BulkMoveButton = ({ selected = [], onSuccess, currentFolder })=>{
|
|
30
31
|
const { formatMessage } = reactIntl.useIntl();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BulkMoveButton.js","sources":["../../../../../admin/src/pages/App/components/BulkMoveButton.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Modal } from '@strapi/design-system';\nimport { Folder } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { BulkMoveDialog } from '../../../components/BulkMoveDialog/BulkMoveDialog';\n\nimport type { File } from '../../../../../shared/contracts/files';\nimport type { Folder as FolderDefinition } from '../../../../../shared/contracts/folders';\n\ninterface FolderWithType extends FolderDefinition {\n type: string;\n}\n\ninterface FileWithType extends File {\n type: string;\n}\n\nexport interface BulkMoveButtonProps {\n onSuccess: () => void;\n currentFolder?: FolderWithType;\n selected?: Array<FolderWithType | FileWithType>;\n}\n\nexport const BulkMoveButton = ({\n selected = [],\n onSuccess,\n currentFolder,\n}: BulkMoveButtonProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const handleConfirmMove = () => {\n setShowConfirmDialog(false);\n onSuccess();\n };\n\n return (\n <Modal.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Modal.Trigger>\n <Button variant=\"secondary\" size=\"S\" startIcon={<Folder />}>\n {formatMessage({ id: 'global.move', defaultMessage: 'Move' })}\n </Button>\n </Modal.Trigger>\n <BulkMoveDialog\n currentFolder={currentFolder}\n onClose={handleConfirmMove}\n selected={selected}\n />\n </Modal.Root>\n );\n};\n"],"names":["BulkMoveButton","selected","onSuccess","currentFolder","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","React","useState","handleConfirmMove","_jsxs","Modal","Root","open","onOpenChange","_jsx","Trigger","Button","variant","size","startIcon","Folder","id","defaultMessage","BulkMoveDialog","onClose"],"mappings":"
|
|
1
|
+
{"version":3,"file":"BulkMoveButton.js","sources":["../../../../../admin/src/pages/App/components/BulkMoveButton.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Modal } from '@strapi/design-system';\nimport { Folder } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { BulkMoveDialog } from '../../../components/BulkMoveDialog/BulkMoveDialog';\n\nimport type { File } from '../../../../../shared/contracts/files';\nimport type { Folder as FolderDefinition } from '../../../../../shared/contracts/folders';\n\ninterface FolderWithType extends FolderDefinition {\n type: string;\n}\n\ninterface FileWithType extends File {\n type: string;\n}\n\nexport interface BulkMoveButtonProps {\n onSuccess: () => void;\n currentFolder?: FolderWithType;\n selected?: Array<FolderWithType | FileWithType>;\n}\n\nexport const BulkMoveButton = ({\n selected = [],\n onSuccess,\n currentFolder,\n}: BulkMoveButtonProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const handleConfirmMove = () => {\n setShowConfirmDialog(false);\n onSuccess();\n };\n\n return (\n <Modal.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Modal.Trigger>\n <Button variant=\"secondary\" size=\"S\" startIcon={<Folder />}>\n {formatMessage({ id: 'global.move', defaultMessage: 'Move' })}\n </Button>\n </Modal.Trigger>\n <BulkMoveDialog\n currentFolder={currentFolder}\n onClose={handleConfirmMove}\n selected={selected}\n />\n </Modal.Root>\n );\n};\n"],"names":["BulkMoveButton","selected","onSuccess","currentFolder","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","React","useState","handleConfirmMove","_jsxs","Modal","Root","open","onOpenChange","_jsx","Trigger","Button","variant","size","startIcon","Folder","id","defaultMessage","BulkMoveDialog","onClose"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBO,MAAMA,cAAAA,GAAiB,CAAC,EAC7BC,QAAAA,GAAW,EAAE,EACbC,SAAS,EACTC,aAAa,EACO,GAAA;IACpB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACC,iBAAAA,EAAmBC,oBAAAA,CAAqB,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AAEjE,IAAA,MAAMC,iBAAAA,GAAoB,IAAA;QACxBH,oBAAAA,CAAqB,KAAA,CAAA;AACrBL,QAAAA,SAAAA,EAAAA;AACF,IAAA,CAAA;IAEA,qBACES,eAAA,CAACC,mBAAMC,IAAI,EAAA;QAACC,IAAAA,EAAMR,iBAAAA;QAAmBS,YAAAA,EAAcR,oBAAAA;;AACjD,0BAAAS,cAAA,CAACJ,mBAAMK,OAAO,EAAA;AACZ,gBAAA,QAAA,gBAAAD,cAAA,CAACE,mBAAAA,EAAAA;oBAAOC,OAAAA,EAAQ,WAAA;oBAAYC,IAAAA,EAAK,GAAA;AAAIC,oBAAAA,SAAAA,gBAAWL,cAAA,CAACM,YAAAA,EAAAA,EAAAA,CAAAA;8BAC9ClB,aAAAA,CAAc;wBAAEmB,EAAAA,EAAI,aAAA;wBAAeC,cAAAA,EAAgB;AAAO,qBAAA;;;0BAG/DR,cAAA,CAACS,6BAAAA,EAAAA;gBACCtB,aAAAA,EAAeA,aAAAA;gBACfuB,OAAAA,EAAShB,iBAAAA;gBACTT,QAAAA,EAAUA;;;;AAIlB;;;;"}
|