@strapi/upload 5.35.0 → 5.36.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/future/App.js +4 -9
- package/dist/admin/future/App.js.map +1 -1
- package/dist/admin/future/App.mjs +4 -9
- package/dist/admin/future/App.mjs.map +1 -1
- package/dist/admin/future/enums.js +12 -0
- package/dist/admin/future/enums.js.map +1 -0
- package/dist/admin/future/enums.mjs +10 -0
- package/dist/admin/future/enums.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/AssetsPage.js +342 -0
- package/dist/admin/future/pages/Assets/AssetsPage.js.map +1 -0
- package/dist/admin/future/pages/Assets/AssetsPage.mjs +321 -0
- package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js +164 -0
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs +162 -0
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetsTable.js +198 -0
- package/dist/admin/future/pages/Assets/components/AssetsTable.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs +196 -0
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/DropZone/DropZoneWithOverlay.js +33 -0
- package/dist/admin/future/pages/Assets/components/DropZone/DropZoneWithOverlay.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/DropZone/DropZoneWithOverlay.mjs +31 -0
- package/dist/admin/future/pages/Assets/components/DropZone/DropZoneWithOverlay.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.js +107 -0
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.mjs +104 -0
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/constants.js +54 -0
- package/dist/admin/future/pages/Assets/constants.js.map +1 -0
- package/dist/admin/future/pages/Assets/constants.mjs +50 -0
- package/dist/admin/future/pages/Assets/constants.mjs.map +1 -0
- package/dist/admin/future/services/assets.js +37 -0
- package/dist/admin/future/services/assets.js.map +1 -0
- package/dist/admin/future/services/assets.mjs +35 -0
- package/dist/admin/future/services/assets.mjs.map +1 -0
- package/dist/admin/future/utils/files.js +23 -0
- package/dist/admin/future/utils/files.js.map +1 -0
- package/dist/admin/future/utils/files.mjs +19 -0
- package/dist/admin/future/utils/files.mjs.map +1 -0
- package/dist/admin/future/utils/getAssetIcon.js +28 -0
- package/dist/admin/future/utils/getAssetIcon.js.map +1 -0
- package/dist/admin/future/utils/getAssetIcon.mjs +26 -0
- package/dist/admin/future/utils/getAssetIcon.mjs.map +1 -0
- package/dist/admin/package.json.js +7 -6
- package/dist/admin/package.json.js.map +1 -1
- package/dist/admin/package.json.mjs +7 -6
- package/dist/admin/package.json.mjs.map +1 -1
- package/dist/admin/src/future/enums.d.ts +6 -0
- package/dist/admin/src/future/pages/Assets/AssetsPage.d.ts +1 -0
- package/dist/admin/src/future/pages/Assets/components/AssetsGrid.d.ts +6 -0
- package/dist/admin/src/future/pages/Assets/components/AssetsTable.d.ts +6 -0
- package/dist/admin/src/future/pages/Assets/components/DropZone/DropZoneWithOverlay.d.ts +4 -0
- package/dist/admin/src/future/pages/Assets/components/DropZone/UploadDropZoneContext.d.ts +11 -0
- package/dist/admin/src/future/pages/Assets/constants.d.ts +17 -0
- package/dist/admin/src/future/services/assets.d.ts +13 -0
- package/dist/admin/src/future/utils/files.d.ts +3 -0
- package/dist/admin/src/future/utils/getAssetIcon.d.ts +12 -0
- package/dist/admin/translations/en.json.js +3 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +3 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/package.json +7 -6
- package/dist/admin/future/pages/MediaLibraryPage.js +0 -119
- package/dist/admin/future/pages/MediaLibraryPage.js.map +0 -1
- package/dist/admin/future/pages/MediaLibraryPage.mjs +0 -98
- package/dist/admin/future/pages/MediaLibraryPage.mjs.map +0 -1
- package/dist/admin/src/future/pages/MediaLibraryPage.d.ts +0 -1
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Images, Monitor, VolumeUp, File, FilePdf, FileCsv, FileXls, FileZip } from '@strapi/icons';
|
|
2
|
+
import { AssetType } from '../enums.mjs';
|
|
3
|
+
import { getFileExtension } from './files.mjs';
|
|
4
|
+
|
|
5
|
+
const DOC_ICON_MAP = {
|
|
6
|
+
pdf: FilePdf,
|
|
7
|
+
csv: FileCsv,
|
|
8
|
+
xls: FileXls,
|
|
9
|
+
zip: FileZip
|
|
10
|
+
};
|
|
11
|
+
const getAssetIcon = (mime, ext)=>{
|
|
12
|
+
const fileExtension = getFileExtension(ext);
|
|
13
|
+
if (mime?.includes(AssetType.Image)) {
|
|
14
|
+
return Images;
|
|
15
|
+
}
|
|
16
|
+
if (mime?.includes(AssetType.Video)) {
|
|
17
|
+
return Monitor;
|
|
18
|
+
}
|
|
19
|
+
if (mime?.includes(AssetType.Audio)) {
|
|
20
|
+
return VolumeUp;
|
|
21
|
+
}
|
|
22
|
+
return fileExtension ? DOC_ICON_MAP[fileExtension] || File : File;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export { getAssetIcon };
|
|
26
|
+
//# sourceMappingURL=getAssetIcon.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAssetIcon.mjs","sources":["../../../../admin/src/future/utils/getAssetIcon.ts"],"sourcesContent":["import { SVGProps } from 'react';\n\nimport {\n File as FileIcon,\n FileCsv,\n FilePdf,\n FileXls,\n FileZip,\n Monitor,\n VolumeUp,\n Images,\n} from '@strapi/icons';\nimport { DefaultTheme } from 'styled-components';\n\nimport { AssetType } from '../enums';\n\nimport { getFileExtension } from './files';\n\n// NOTE: IconProps interface is not exported from our design library package, so we need to redefine it here\ninterface IconProps extends Omit<SVGProps<SVGSVGElement>, 'fill' | 'stroke'> {\n /**\n * @default \"currentColor\"\n */\n fill?: keyof DefaultTheme['colors'] | string;\n stroke?: keyof DefaultTheme['colors'] | string;\n}\n\ntype IconComponent = React.FC<IconProps>;\n\nconst DOC_ICON_MAP: Record<string, IconComponent> = {\n pdf: FilePdf,\n csv: FileCsv,\n xls: FileXls,\n zip: FileZip,\n};\n\nexport const getAssetIcon = (mime: string | undefined, ext: string | undefined): IconComponent => {\n const fileExtension = getFileExtension(ext);\n\n if (mime?.includes(AssetType.Image)) {\n return Images;\n }\n\n if (mime?.includes(AssetType.Video)) {\n return Monitor;\n }\n\n if (mime?.includes(AssetType.Audio)) {\n return VolumeUp;\n }\n\n return fileExtension ? DOC_ICON_MAP[fileExtension] || FileIcon : FileIcon;\n};\n"],"names":["DOC_ICON_MAP","pdf","FilePdf","csv","FileCsv","xls","FileXls","zip","FileZip","getAssetIcon","mime","ext","fileExtension","getFileExtension","includes","AssetType","Image","Images","Video","Monitor","Audio","VolumeUp","FileIcon"],"mappings":";;;;AA6BA,MAAMA,YAA8C,GAAA;IAClDC,GAAKC,EAAAA,OAAAA;IACLC,GAAKC,EAAAA,OAAAA;IACLC,GAAKC,EAAAA,OAAAA;IACLC,GAAKC,EAAAA;AACP,CAAA;AAEO,MAAMC,YAAe,GAAA,CAACC,IAA0BC,EAAAA,GAAAA,GAAAA;AACrD,IAAA,MAAMC,gBAAgBC,gBAAiBF,CAAAA,GAAAA,CAAAA;AAEvC,IAAA,IAAID,IAAMI,EAAAA,QAAAA,CAASC,SAAUC,CAAAA,KAAK,CAAG,EAAA;QACnC,OAAOC,MAAAA;AACT;AAEA,IAAA,IAAIP,IAAMI,EAAAA,QAAAA,CAASC,SAAUG,CAAAA,KAAK,CAAG,EAAA;QACnC,OAAOC,OAAAA;AACT;AAEA,IAAA,IAAIT,IAAMI,EAAAA,QAAAA,CAASC,SAAUK,CAAAA,KAAK,CAAG,EAAA;QACnC,OAAOC,QAAAA;AACT;AAEA,IAAA,OAAOT,aAAgBZ,GAAAA,YAAY,CAACY,aAAAA,CAAc,IAAIU,IAAWA,GAAAA,IAAAA;AACnE;;;;"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var name = "@strapi/upload";
|
|
6
|
-
var version = "5.
|
|
6
|
+
var version = "5.36.0";
|
|
7
7
|
var description = "Makes it easy to upload images and files to your Strapi Application.";
|
|
8
8
|
var license = "SEE LICENSE IN LICENSE";
|
|
9
9
|
var author = {
|
|
@@ -64,12 +64,13 @@ var scripts = {
|
|
|
64
64
|
};
|
|
65
65
|
var dependencies = {
|
|
66
66
|
"@mux/mux-player-react": "3.1.0",
|
|
67
|
+
"@radix-ui/react-toggle-group": "1.1.11",
|
|
67
68
|
"@reduxjs/toolkit": "1.9.7",
|
|
68
|
-
"@strapi/database": "5.
|
|
69
|
+
"@strapi/database": "5.36.0",
|
|
69
70
|
"@strapi/design-system": "2.1.2",
|
|
70
71
|
"@strapi/icons": "2.1.2",
|
|
71
|
-
"@strapi/provider-upload-local": "5.
|
|
72
|
-
"@strapi/utils": "5.
|
|
72
|
+
"@strapi/provider-upload-local": "5.36.0",
|
|
73
|
+
"@strapi/utils": "5.36.0",
|
|
73
74
|
"byte-size": "8.1.1",
|
|
74
75
|
cropperjs: "1.6.1",
|
|
75
76
|
"date-fns": "2.30.0",
|
|
@@ -93,8 +94,8 @@ var dependencies = {
|
|
|
93
94
|
zod: "3.25.67"
|
|
94
95
|
};
|
|
95
96
|
var devDependencies = {
|
|
96
|
-
"@strapi/admin": "5.
|
|
97
|
-
"@strapi/types": "5.
|
|
97
|
+
"@strapi/admin": "5.36.0",
|
|
98
|
+
"@strapi/types": "5.36.0",
|
|
98
99
|
"@testing-library/dom": "10.4.1",
|
|
99
100
|
"@testing-library/react": "16.3.0",
|
|
100
101
|
"@testing-library/user-event": "14.6.1",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var name = "@strapi/upload";
|
|
2
|
-
var version = "5.
|
|
2
|
+
var version = "5.36.0";
|
|
3
3
|
var description = "Makes it easy to upload images and files to your Strapi Application.";
|
|
4
4
|
var license = "SEE LICENSE IN LICENSE";
|
|
5
5
|
var author = {
|
|
@@ -60,12 +60,13 @@ var scripts = {
|
|
|
60
60
|
};
|
|
61
61
|
var dependencies = {
|
|
62
62
|
"@mux/mux-player-react": "3.1.0",
|
|
63
|
+
"@radix-ui/react-toggle-group": "1.1.11",
|
|
63
64
|
"@reduxjs/toolkit": "1.9.7",
|
|
64
|
-
"@strapi/database": "5.
|
|
65
|
+
"@strapi/database": "5.36.0",
|
|
65
66
|
"@strapi/design-system": "2.1.2",
|
|
66
67
|
"@strapi/icons": "2.1.2",
|
|
67
|
-
"@strapi/provider-upload-local": "5.
|
|
68
|
-
"@strapi/utils": "5.
|
|
68
|
+
"@strapi/provider-upload-local": "5.36.0",
|
|
69
|
+
"@strapi/utils": "5.36.0",
|
|
69
70
|
"byte-size": "8.1.1",
|
|
70
71
|
cropperjs: "1.6.1",
|
|
71
72
|
"date-fns": "2.30.0",
|
|
@@ -89,8 +90,8 @@ var dependencies = {
|
|
|
89
90
|
zod: "3.25.67"
|
|
90
91
|
};
|
|
91
92
|
var devDependencies = {
|
|
92
|
-
"@strapi/admin": "5.
|
|
93
|
-
"@strapi/types": "5.
|
|
93
|
+
"@strapi/admin": "5.36.0",
|
|
94
|
+
"@strapi/types": "5.36.0",
|
|
94
95
|
"@testing-library/dom": "10.4.1",
|
|
95
96
|
"@testing-library/react": "16.3.0",
|
|
96
97
|
"@testing-library/user-event": "14.6.1",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const AssetsPage: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
type DropHandler = (files: File[]) => void | Promise<void>;
|
|
3
|
+
interface UploadDropZoneProps {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
onDrop?: DropHandler;
|
|
6
|
+
}
|
|
7
|
+
export declare const UploadDropZoneProvider: ({ children, onDrop }: UploadDropZoneProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare const useUploadDropZone: () => {
|
|
9
|
+
isDragging: boolean;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const localStorageKeys: {
|
|
2
|
+
view: string;
|
|
3
|
+
};
|
|
4
|
+
export declare const viewOptions: {
|
|
5
|
+
GRID: number;
|
|
6
|
+
TABLE: number;
|
|
7
|
+
};
|
|
8
|
+
interface TableHeader {
|
|
9
|
+
name: string;
|
|
10
|
+
label: {
|
|
11
|
+
id: string;
|
|
12
|
+
defaultMessage: string;
|
|
13
|
+
};
|
|
14
|
+
isVisuallyHidden?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare const TABLE_HEADERS: TableHeader[];
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { File, Pagination } from '../../../../shared/contracts/files';
|
|
2
|
+
interface GetAssetsParams {
|
|
3
|
+
page?: number;
|
|
4
|
+
pageSize?: number;
|
|
5
|
+
folder?: number | null;
|
|
6
|
+
sort?: string;
|
|
7
|
+
}
|
|
8
|
+
interface GetAssetsResponse {
|
|
9
|
+
results: File[];
|
|
10
|
+
pagination: Pagination;
|
|
11
|
+
}
|
|
12
|
+
export declare const useGetAssetsQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void | GetAssetsParams, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AIUsage" | "AIFeatureConfig" | "Asset" | "Folder", GetAssetsResponse, "adminApi">>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function formatBytes(receivedBytes: number | string, decimals?: number): string;
|
|
2
|
+
export declare const getFileExtension: (ext?: string | null) => string | null | undefined;
|
|
3
|
+
export declare const prefixFileUrlWithBackendUrl: (fileURL?: string) => string | undefined;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SVGProps } from 'react';
|
|
2
|
+
import { DefaultTheme } from 'styled-components';
|
|
3
|
+
interface IconProps extends Omit<SVGProps<SVGSVGElement>, 'fill' | 'stroke'> {
|
|
4
|
+
/**
|
|
5
|
+
* @default "currentColor"
|
|
6
|
+
*/
|
|
7
|
+
fill?: keyof DefaultTheme['colors'] | string;
|
|
8
|
+
stroke?: keyof DefaultTheme['colors'] | string;
|
|
9
|
+
}
|
|
10
|
+
type IconComponent = React.FC<IconProps>;
|
|
11
|
+
export declare const getAssetIcon: (mime: string | undefined, ext: string | undefined) => IconComponent;
|
|
12
|
+
export {};
|
|
@@ -24,6 +24,7 @@ var en = {
|
|
|
24
24
|
"control-card.replace-media": "Replace Media",
|
|
25
25
|
"control-card.save": "Save",
|
|
26
26
|
"control-card.stop-crop": "Stop cropping",
|
|
27
|
+
"dropzone.upload.message": "Drop here to upload to",
|
|
27
28
|
"filter.add": "Add filter",
|
|
28
29
|
"form.button.replace-media": "Replace media",
|
|
29
30
|
"form.input.description.file-alt": "This text will be displayed if the asset can’t be shown.",
|
|
@@ -145,6 +146,8 @@ var en = {
|
|
|
145
146
|
"list.table.header.size": "size",
|
|
146
147
|
"list.table.header.createdAt": "created",
|
|
147
148
|
"list.table.header.updatedAt": "last update",
|
|
149
|
+
"list.table.header.creationDate": "Creation Date",
|
|
150
|
+
"list.table.header.lastModified": "Last Modified",
|
|
148
151
|
"list.table.header.sort": "Sort on {label}",
|
|
149
152
|
"list.table.content.empty-label": "This field is empty",
|
|
150
153
|
"tabs.title": "How do you want to upload your assets?",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -22,6 +22,7 @@ var en = {
|
|
|
22
22
|
"control-card.replace-media": "Replace Media",
|
|
23
23
|
"control-card.save": "Save",
|
|
24
24
|
"control-card.stop-crop": "Stop cropping",
|
|
25
|
+
"dropzone.upload.message": "Drop here to upload to",
|
|
25
26
|
"filter.add": "Add filter",
|
|
26
27
|
"form.button.replace-media": "Replace media",
|
|
27
28
|
"form.input.description.file-alt": "This text will be displayed if the asset can’t be shown.",
|
|
@@ -143,6 +144,8 @@ var en = {
|
|
|
143
144
|
"list.table.header.size": "size",
|
|
144
145
|
"list.table.header.createdAt": "created",
|
|
145
146
|
"list.table.header.updatedAt": "last update",
|
|
147
|
+
"list.table.header.creationDate": "Creation Date",
|
|
148
|
+
"list.table.header.lastModified": "Last Modified",
|
|
146
149
|
"list.table.header.sort": "Sort on {label}",
|
|
147
150
|
"list.table.content.empty-label": "This field is empty",
|
|
148
151
|
"tabs.title": "How do you want to upload your assets?",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/upload",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.36.0",
|
|
4
4
|
"description": "Makes it easy to upload images and files to your Strapi Application.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": {
|
|
@@ -61,12 +61,13 @@
|
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
63
|
"@mux/mux-player-react": "3.1.0",
|
|
64
|
+
"@radix-ui/react-toggle-group": "1.1.11",
|
|
64
65
|
"@reduxjs/toolkit": "1.9.7",
|
|
65
|
-
"@strapi/database": "5.
|
|
66
|
+
"@strapi/database": "5.36.0",
|
|
66
67
|
"@strapi/design-system": "2.1.2",
|
|
67
68
|
"@strapi/icons": "2.1.2",
|
|
68
|
-
"@strapi/provider-upload-local": "5.
|
|
69
|
-
"@strapi/utils": "5.
|
|
69
|
+
"@strapi/provider-upload-local": "5.36.0",
|
|
70
|
+
"@strapi/utils": "5.36.0",
|
|
70
71
|
"byte-size": "8.1.1",
|
|
71
72
|
"cropperjs": "1.6.1",
|
|
72
73
|
"date-fns": "2.30.0",
|
|
@@ -90,8 +91,8 @@
|
|
|
90
91
|
"zod": "3.25.67"
|
|
91
92
|
},
|
|
92
93
|
"devDependencies": {
|
|
93
|
-
"@strapi/admin": "5.
|
|
94
|
-
"@strapi/types": "5.
|
|
94
|
+
"@strapi/admin": "5.36.0",
|
|
95
|
+
"@strapi/types": "5.36.0",
|
|
95
96
|
"@testing-library/dom": "10.4.1",
|
|
96
97
|
"@testing-library/react": "16.3.0",
|
|
97
98
|
"@testing-library/user-event": "14.6.1",
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var React = require('react');
|
|
5
|
-
var strapiAdmin = require('@strapi/admin/strapi-admin');
|
|
6
|
-
var designSystem = require('@strapi/design-system');
|
|
7
|
-
var icons = require('@strapi/icons');
|
|
8
|
-
var reactIntl = require('react-intl');
|
|
9
|
-
var api = require('../services/api.js');
|
|
10
|
-
var translations = require('../utils/translations.js');
|
|
11
|
-
|
|
12
|
-
function _interopNamespaceDefault(e) {
|
|
13
|
-
var n = Object.create(null);
|
|
14
|
-
if (e) {
|
|
15
|
-
Object.keys(e).forEach(function (k) {
|
|
16
|
-
if (k !== 'default') {
|
|
17
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
18
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
19
|
-
enumerable: true,
|
|
20
|
-
get: function () { return e[k]; }
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
n.default = e;
|
|
26
|
-
return Object.freeze(n);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
30
|
-
|
|
31
|
-
const MediaLibraryPage = ()=>{
|
|
32
|
-
const { formatMessage } = reactIntl.useIntl();
|
|
33
|
-
const { toggleNotification } = strapiAdmin.useNotification();
|
|
34
|
-
const { _unstableFormatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
35
|
-
const fileInputRef = React__namespace.useRef(null);
|
|
36
|
-
const [uploadFiles] = api.useUploadFilesMutation();
|
|
37
|
-
const handleFileSelect = ()=>{
|
|
38
|
-
fileInputRef.current?.click();
|
|
39
|
-
};
|
|
40
|
-
const handleFileChange = async (e)=>{
|
|
41
|
-
const files = e.target.files;
|
|
42
|
-
if (files && files.length > 0) {
|
|
43
|
-
const formData = new FormData();
|
|
44
|
-
const filesArray = Array.from(files);
|
|
45
|
-
// Add files and fileInfo to the form data
|
|
46
|
-
filesArray.forEach((file)=>{
|
|
47
|
-
formData.append('files', file);
|
|
48
|
-
formData.append('fileInfo', JSON.stringify({
|
|
49
|
-
name: file.name,
|
|
50
|
-
caption: null,
|
|
51
|
-
alternativeText: null,
|
|
52
|
-
folder: null
|
|
53
|
-
}));
|
|
54
|
-
});
|
|
55
|
-
try {
|
|
56
|
-
// unwrap() is needed to throw errors and trigger the catch block
|
|
57
|
-
// Without it, RTK Query never rejects and catch would never execute
|
|
58
|
-
await uploadFiles(formData).unwrap();
|
|
59
|
-
toggleNotification({
|
|
60
|
-
type: 'success',
|
|
61
|
-
message: formatMessage({
|
|
62
|
-
id: translations.getTranslationKey('assets.uploaded'),
|
|
63
|
-
defaultMessage: '{number, plural, one {# asset} other {# assets}} uploaded successfully'
|
|
64
|
-
}, {
|
|
65
|
-
number: filesArray.length
|
|
66
|
-
})
|
|
67
|
-
});
|
|
68
|
-
} catch (error) {
|
|
69
|
-
// Format the error message using the API error handler to provide
|
|
70
|
-
// context-specific feedback (e.g., file size limits, format restrictions, network errors)
|
|
71
|
-
const errorMessage = _unstableFormatAPIError(error);
|
|
72
|
-
toggleNotification({
|
|
73
|
-
type: 'danger',
|
|
74
|
-
message: errorMessage
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
// Reset input so the same file can be selected again
|
|
79
|
-
e.target.value = '';
|
|
80
|
-
};
|
|
81
|
-
return /*#__PURE__*/ jsxRuntime.jsxs(strapiAdmin.Layouts.Root, {
|
|
82
|
-
children: [
|
|
83
|
-
/*#__PURE__*/ jsxRuntime.jsx(designSystem.VisuallyHidden, {
|
|
84
|
-
children: /*#__PURE__*/ jsxRuntime.jsx("input", {
|
|
85
|
-
type: "file",
|
|
86
|
-
ref: fileInputRef,
|
|
87
|
-
onChange: handleFileChange,
|
|
88
|
-
multiple: true
|
|
89
|
-
})
|
|
90
|
-
}),
|
|
91
|
-
/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Layouts.Header, {
|
|
92
|
-
title: "TODO: Folder location",
|
|
93
|
-
primaryAction: /*#__PURE__*/ jsxRuntime.jsx(designSystem.SimpleMenu, {
|
|
94
|
-
popoverPlacement: "bottom-end",
|
|
95
|
-
variant: "default",
|
|
96
|
-
endIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.ChevronDown, {}),
|
|
97
|
-
label: formatMessage({
|
|
98
|
-
id: translations.getTranslationKey('new'),
|
|
99
|
-
defaultMessage: 'New'
|
|
100
|
-
}),
|
|
101
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.MenuItem, {
|
|
102
|
-
onSelect: handleFileSelect,
|
|
103
|
-
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Files, {}),
|
|
104
|
-
children: formatMessage({
|
|
105
|
-
id: translations.getTranslationKey('import-files'),
|
|
106
|
-
defaultMessage: 'Import files'
|
|
107
|
-
})
|
|
108
|
-
})
|
|
109
|
-
})
|
|
110
|
-
}),
|
|
111
|
-
/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Layouts.Content, {
|
|
112
|
-
children: "TODO: List/Grid views"
|
|
113
|
-
})
|
|
114
|
-
]
|
|
115
|
-
});
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
exports.MediaLibraryPage = MediaLibraryPage;
|
|
119
|
-
//# sourceMappingURL=MediaLibraryPage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MediaLibraryPage.js","sources":["../../../../admin/src/future/pages/MediaLibraryPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Layouts, useNotification, useAPIErrorHandler } from '@strapi/admin/strapi-admin';\nimport { MenuItem, SimpleMenu, VisuallyHidden } from '@strapi/design-system';\nimport { ChevronDown, Files } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useUploadFilesMutation } from '../services/api';\nimport { getTranslationKey } from '../utils/translations';\n\nexport const MediaLibraryPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError } = useAPIErrorHandler();\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n const [uploadFiles] = useUploadFilesMutation();\n\n const handleFileSelect = () => {\n fileInputRef.current?.click();\n };\n\n const handleFileChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files;\n if (files && files.length > 0) {\n const formData = new FormData();\n const filesArray = Array.from(files);\n\n // Add files and fileInfo to the form data\n filesArray.forEach((file) => {\n formData.append('files', file);\n formData.append(\n 'fileInfo',\n JSON.stringify({\n name: file.name,\n caption: null,\n alternativeText: null,\n folder: null,\n })\n );\n });\n\n try {\n // unwrap() is needed to throw errors and trigger the catch block\n // Without it, RTK Query never rejects and catch would never execute\n await uploadFiles(formData).unwrap();\n toggleNotification({\n type: 'success',\n message: formatMessage(\n {\n id: getTranslationKey('assets.uploaded'),\n defaultMessage:\n '{number, plural, one {# asset} other {# assets}} uploaded successfully',\n },\n { number: filesArray.length }\n ),\n });\n } catch (error) {\n // Format the error message using the API error handler to provide\n // context-specific feedback (e.g., file size limits, format restrictions, network errors)\n const errorMessage = _unstableFormatAPIError(error as Error);\n toggleNotification({\n type: 'danger',\n message: errorMessage,\n });\n }\n }\n // Reset input so the same file can be selected again\n e.target.value = '';\n };\n\n return (\n <Layouts.Root>\n <VisuallyHidden>\n <input type=\"file\" ref={fileInputRef} onChange={handleFileChange} multiple />\n </VisuallyHidden>\n <Layouts.Header\n title=\"TODO: Folder location\"\n primaryAction={\n <SimpleMenu\n popoverPlacement=\"bottom-end\"\n variant=\"default\"\n endIcon={<ChevronDown />}\n label={formatMessage({ id: getTranslationKey('new'), defaultMessage: 'New' })}\n >\n <MenuItem onSelect={handleFileSelect} startIcon={<Files />}>\n {formatMessage({\n id: getTranslationKey('import-files'),\n defaultMessage: 'Import files',\n })}\n </MenuItem>\n </SimpleMenu>\n }\n />\n\n <Layouts.Content>TODO: List/Grid views</Layouts.Content>\n </Layouts.Root>\n );\n};\n"],"names":["MediaLibraryPage","formatMessage","useIntl","toggleNotification","useNotification","_unstableFormatAPIError","useAPIErrorHandler","fileInputRef","React","useRef","uploadFiles","useUploadFilesMutation","handleFileSelect","current","click","handleFileChange","e","files","target","length","formData","FormData","filesArray","Array","from","forEach","file","append","JSON","stringify","name","caption","alternativeText","folder","unwrap","type","message","id","getTranslationKey","defaultMessage","number","error","errorMessage","value","_jsxs","Layouts","Root","_jsx","VisuallyHidden","input","ref","onChange","multiple","Header","title","primaryAction","SimpleMenu","popoverPlacement","variant","endIcon","ChevronDown","label","MenuItem","onSelect","startIcon","Files","Content"],"mappings":"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"}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
import { useNotification, useAPIErrorHandler, Layouts } from '@strapi/admin/strapi-admin';
|
|
4
|
-
import { VisuallyHidden, SimpleMenu, MenuItem } from '@strapi/design-system';
|
|
5
|
-
import { ChevronDown, Files } from '@strapi/icons';
|
|
6
|
-
import { useIntl } from 'react-intl';
|
|
7
|
-
import { useUploadFilesMutation } from '../services/api.mjs';
|
|
8
|
-
import { getTranslationKey } from '../utils/translations.mjs';
|
|
9
|
-
|
|
10
|
-
const MediaLibraryPage = ()=>{
|
|
11
|
-
const { formatMessage } = useIntl();
|
|
12
|
-
const { toggleNotification } = useNotification();
|
|
13
|
-
const { _unstableFormatAPIError } = useAPIErrorHandler();
|
|
14
|
-
const fileInputRef = React.useRef(null);
|
|
15
|
-
const [uploadFiles] = useUploadFilesMutation();
|
|
16
|
-
const handleFileSelect = ()=>{
|
|
17
|
-
fileInputRef.current?.click();
|
|
18
|
-
};
|
|
19
|
-
const handleFileChange = async (e)=>{
|
|
20
|
-
const files = e.target.files;
|
|
21
|
-
if (files && files.length > 0) {
|
|
22
|
-
const formData = new FormData();
|
|
23
|
-
const filesArray = Array.from(files);
|
|
24
|
-
// Add files and fileInfo to the form data
|
|
25
|
-
filesArray.forEach((file)=>{
|
|
26
|
-
formData.append('files', file);
|
|
27
|
-
formData.append('fileInfo', JSON.stringify({
|
|
28
|
-
name: file.name,
|
|
29
|
-
caption: null,
|
|
30
|
-
alternativeText: null,
|
|
31
|
-
folder: null
|
|
32
|
-
}));
|
|
33
|
-
});
|
|
34
|
-
try {
|
|
35
|
-
// unwrap() is needed to throw errors and trigger the catch block
|
|
36
|
-
// Without it, RTK Query never rejects and catch would never execute
|
|
37
|
-
await uploadFiles(formData).unwrap();
|
|
38
|
-
toggleNotification({
|
|
39
|
-
type: 'success',
|
|
40
|
-
message: formatMessage({
|
|
41
|
-
id: getTranslationKey('assets.uploaded'),
|
|
42
|
-
defaultMessage: '{number, plural, one {# asset} other {# assets}} uploaded successfully'
|
|
43
|
-
}, {
|
|
44
|
-
number: filesArray.length
|
|
45
|
-
})
|
|
46
|
-
});
|
|
47
|
-
} catch (error) {
|
|
48
|
-
// Format the error message using the API error handler to provide
|
|
49
|
-
// context-specific feedback (e.g., file size limits, format restrictions, network errors)
|
|
50
|
-
const errorMessage = _unstableFormatAPIError(error);
|
|
51
|
-
toggleNotification({
|
|
52
|
-
type: 'danger',
|
|
53
|
-
message: errorMessage
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
// Reset input so the same file can be selected again
|
|
58
|
-
e.target.value = '';
|
|
59
|
-
};
|
|
60
|
-
return /*#__PURE__*/ jsxs(Layouts.Root, {
|
|
61
|
-
children: [
|
|
62
|
-
/*#__PURE__*/ jsx(VisuallyHidden, {
|
|
63
|
-
children: /*#__PURE__*/ jsx("input", {
|
|
64
|
-
type: "file",
|
|
65
|
-
ref: fileInputRef,
|
|
66
|
-
onChange: handleFileChange,
|
|
67
|
-
multiple: true
|
|
68
|
-
})
|
|
69
|
-
}),
|
|
70
|
-
/*#__PURE__*/ jsx(Layouts.Header, {
|
|
71
|
-
title: "TODO: Folder location",
|
|
72
|
-
primaryAction: /*#__PURE__*/ jsx(SimpleMenu, {
|
|
73
|
-
popoverPlacement: "bottom-end",
|
|
74
|
-
variant: "default",
|
|
75
|
-
endIcon: /*#__PURE__*/ jsx(ChevronDown, {}),
|
|
76
|
-
label: formatMessage({
|
|
77
|
-
id: getTranslationKey('new'),
|
|
78
|
-
defaultMessage: 'New'
|
|
79
|
-
}),
|
|
80
|
-
children: /*#__PURE__*/ jsx(MenuItem, {
|
|
81
|
-
onSelect: handleFileSelect,
|
|
82
|
-
startIcon: /*#__PURE__*/ jsx(Files, {}),
|
|
83
|
-
children: formatMessage({
|
|
84
|
-
id: getTranslationKey('import-files'),
|
|
85
|
-
defaultMessage: 'Import files'
|
|
86
|
-
})
|
|
87
|
-
})
|
|
88
|
-
})
|
|
89
|
-
}),
|
|
90
|
-
/*#__PURE__*/ jsx(Layouts.Content, {
|
|
91
|
-
children: "TODO: List/Grid views"
|
|
92
|
-
})
|
|
93
|
-
]
|
|
94
|
-
});
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
export { MediaLibraryPage };
|
|
98
|
-
//# sourceMappingURL=MediaLibraryPage.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MediaLibraryPage.mjs","sources":["../../../../admin/src/future/pages/MediaLibraryPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Layouts, useNotification, useAPIErrorHandler } from '@strapi/admin/strapi-admin';\nimport { MenuItem, SimpleMenu, VisuallyHidden } from '@strapi/design-system';\nimport { ChevronDown, Files } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useUploadFilesMutation } from '../services/api';\nimport { getTranslationKey } from '../utils/translations';\n\nexport const MediaLibraryPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError } = useAPIErrorHandler();\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n const [uploadFiles] = useUploadFilesMutation();\n\n const handleFileSelect = () => {\n fileInputRef.current?.click();\n };\n\n const handleFileChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files;\n if (files && files.length > 0) {\n const formData = new FormData();\n const filesArray = Array.from(files);\n\n // Add files and fileInfo to the form data\n filesArray.forEach((file) => {\n formData.append('files', file);\n formData.append(\n 'fileInfo',\n JSON.stringify({\n name: file.name,\n caption: null,\n alternativeText: null,\n folder: null,\n })\n );\n });\n\n try {\n // unwrap() is needed to throw errors and trigger the catch block\n // Without it, RTK Query never rejects and catch would never execute\n await uploadFiles(formData).unwrap();\n toggleNotification({\n type: 'success',\n message: formatMessage(\n {\n id: getTranslationKey('assets.uploaded'),\n defaultMessage:\n '{number, plural, one {# asset} other {# assets}} uploaded successfully',\n },\n { number: filesArray.length }\n ),\n });\n } catch (error) {\n // Format the error message using the API error handler to provide\n // context-specific feedback (e.g., file size limits, format restrictions, network errors)\n const errorMessage = _unstableFormatAPIError(error as Error);\n toggleNotification({\n type: 'danger',\n message: errorMessage,\n });\n }\n }\n // Reset input so the same file can be selected again\n e.target.value = '';\n };\n\n return (\n <Layouts.Root>\n <VisuallyHidden>\n <input type=\"file\" ref={fileInputRef} onChange={handleFileChange} multiple />\n </VisuallyHidden>\n <Layouts.Header\n title=\"TODO: Folder location\"\n primaryAction={\n <SimpleMenu\n popoverPlacement=\"bottom-end\"\n variant=\"default\"\n endIcon={<ChevronDown />}\n label={formatMessage({ id: getTranslationKey('new'), defaultMessage: 'New' })}\n >\n <MenuItem onSelect={handleFileSelect} startIcon={<Files />}>\n {formatMessage({\n id: getTranslationKey('import-files'),\n defaultMessage: 'Import files',\n })}\n </MenuItem>\n </SimpleMenu>\n }\n />\n\n <Layouts.Content>TODO: List/Grid views</Layouts.Content>\n </Layouts.Root>\n );\n};\n"],"names":["MediaLibraryPage","formatMessage","useIntl","toggleNotification","useNotification","_unstableFormatAPIError","useAPIErrorHandler","fileInputRef","React","useRef","uploadFiles","useUploadFilesMutation","handleFileSelect","current","click","handleFileChange","e","files","target","length","formData","FormData","filesArray","Array","from","forEach","file","append","JSON","stringify","name","caption","alternativeText","folder","unwrap","type","message","id","getTranslationKey","defaultMessage","number","error","errorMessage","value","_jsxs","Layouts","Root","_jsx","VisuallyHidden","input","ref","onChange","multiple","Header","title","primaryAction","SimpleMenu","popoverPlacement","variant","endIcon","ChevronDown","label","MenuItem","onSelect","startIcon","Files","Content"],"mappings":";;;;;;;;;MAUaA,gBAAmB,GAAA,IAAA;IAC9B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;IAC/B,MAAM,EAAEC,uBAAuB,EAAE,GAAGC,kBAAAA,EAAAA;IACpC,MAAMC,YAAAA,GAAeC,KAAMC,CAAAA,MAAM,CAAmB,IAAA,CAAA;IACpD,MAAM,CAACC,YAAY,GAAGC,sBAAAA,EAAAA;AAEtB,IAAA,MAAMC,gBAAmB,GAAA,IAAA;AACvBL,QAAAA,YAAAA,CAAaM,OAAO,EAAEC,KAAAA,EAAAA;AACxB,KAAA;AAEA,IAAA,MAAMC,mBAAmB,OAAOC,CAAAA,GAAAA;AAC9B,QAAA,MAAMC,KAAQD,GAAAA,CAAAA,CAAEE,MAAM,CAACD,KAAK;AAC5B,QAAA,IAAIA,KAASA,IAAAA,KAAAA,CAAME,MAAM,GAAG,CAAG,EAAA;AAC7B,YAAA,MAAMC,WAAW,IAAIC,QAAAA,EAAAA;YACrB,MAAMC,UAAAA,GAAaC,KAAMC,CAAAA,IAAI,CAACP,KAAAA,CAAAA;;YAG9BK,UAAWG,CAAAA,OAAO,CAAC,CAACC,IAAAA,GAAAA;gBAClBN,QAASO,CAAAA,MAAM,CAAC,OAASD,EAAAA,IAAAA,CAAAA;AACzBN,gBAAAA,QAAAA,CAASO,MAAM,CACb,UACAC,EAAAA,IAAAA,CAAKC,SAAS,CAAC;AACbC,oBAAAA,IAAAA,EAAMJ,KAAKI,IAAI;oBACfC,OAAS,EAAA,IAAA;oBACTC,eAAiB,EAAA,IAAA;oBACjBC,MAAQ,EAAA;AACV,iBAAA,CAAA,CAAA;AAEJ,aAAA,CAAA;YAEA,IAAI;;;gBAGF,MAAMvB,WAAAA,CAAYU,UAAUc,MAAM,EAAA;gBAClC/B,kBAAmB,CAAA;oBACjBgC,IAAM,EAAA,SAAA;AACNC,oBAAAA,OAAAA,EAASnC,aACP,CAAA;AACEoC,wBAAAA,EAAAA,EAAIC,iBAAkB,CAAA,iBAAA,CAAA;wBACtBC,cACE,EAAA;qBAEJ,EAAA;AAAEC,wBAAAA,MAAAA,EAAQlB,WAAWH;AAAO,qBAAA;AAEhC,iBAAA,CAAA;AACF,aAAA,CAAE,OAAOsB,KAAO,EAAA;;;AAGd,gBAAA,MAAMC,eAAerC,uBAAwBoC,CAAAA,KAAAA,CAAAA;gBAC7CtC,kBAAmB,CAAA;oBACjBgC,IAAM,EAAA,QAAA;oBACNC,OAASM,EAAAA;AACX,iBAAA,CAAA;AACF;AACF;;QAEA1B,CAAEE,CAAAA,MAAM,CAACyB,KAAK,GAAG,EAAA;AACnB,KAAA;IAEA,qBACEC,IAAA,CAACC,QAAQC,IAAI,EAAA;;0BACXC,GAACC,CAAAA,cAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAD,GAACE,CAAAA,OAAAA,EAAAA;oBAAMd,IAAK,EAAA,MAAA;oBAAOe,GAAK3C,EAAAA,YAAAA;oBAAc4C,QAAUpC,EAAAA,gBAAAA;oBAAkBqC,QAAQ,EAAA;;;AAE5E,0BAAAL,GAAA,CAACF,QAAQQ,MAAM,EAAA;gBACbC,KAAM,EAAA,uBAAA;AACNC,gBAAAA,aAAAA,gBACER,GAACS,CAAAA,UAAAA,EAAAA;oBACCC,gBAAiB,EAAA,YAAA;oBACjBC,OAAQ,EAAA,SAAA;AACRC,oBAAAA,OAAAA,gBAASZ,GAACa,CAAAA,WAAAA,EAAAA,EAAAA,CAAAA;AACVC,oBAAAA,KAAAA,EAAO5D,aAAc,CAAA;AAAEoC,wBAAAA,EAAAA,EAAIC,iBAAkB,CAAA,KAAA,CAAA;wBAAQC,cAAgB,EAAA;AAAM,qBAAA,CAAA;AAE3E,oBAAA,QAAA,gBAAAQ,GAACe,CAAAA,QAAAA,EAAAA;wBAASC,QAAUnD,EAAAA,gBAAAA;AAAkBoD,wBAAAA,SAAAA,gBAAWjB,GAACkB,CAAAA,KAAAA,EAAAA,EAAAA,CAAAA;kCAC/ChE,aAAc,CAAA;AACboC,4BAAAA,EAAAA,EAAIC,iBAAkB,CAAA,cAAA,CAAA;4BACtBC,cAAgB,EAAA;AAClB,yBAAA;;;;AAMR,0BAAAQ,GAAA,CAACF,QAAQqB,OAAO,EAAA;AAAC,gBAAA,QAAA,EAAA;;;;AAGvB;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const MediaLibraryPage: () => import("react/jsx-runtime").JSX.Element;
|