@payloadcms/ui 3.0.0-beta.114 → 3.0.0-beta.115
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/elements/AppHeader/index.scss +0 -1
- package/dist/elements/BulkUpload/AddFilesView/index.d.ts +2 -1
- package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/AddFilesView/index.js +2 -0
- package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
- package/dist/elements/BulkUpload/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/index.js +22 -42
- package/dist/elements/BulkUpload/index.js.map +1 -1
- package/dist/elements/Upload/index.d.ts.map +1 -1
- package/dist/elements/Upload/index.js +2 -0
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/exports/client/index.js +7 -7
- package/dist/exports/client/index.js.map +3 -3
- package/dist/styles.css +1 -1
- package/package.json +4 -4
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import './index.scss';
|
|
3
3
|
type Props = {
|
|
4
|
+
readonly acceptMimeTypes?: string;
|
|
4
5
|
readonly onCancel: () => void;
|
|
5
6
|
readonly onDrop: (acceptedFiles: FileList) => void;
|
|
6
7
|
};
|
|
7
|
-
export declare function AddFilesView({ onCancel, onDrop }: Props): React.JSX.Element;
|
|
8
|
+
export declare function AddFilesView({ acceptMimeTypes, onCancel, onDrop }: Props): React.JSX.Element;
|
|
8
9
|
export {};
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/AddFilesView/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,OAAO,cAAc,CAAA;AAIrB,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,QAAQ,KAAK,IAAI,CAAA;CACnD,CAAA;AACD,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/AddFilesView/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,OAAO,cAAc,CAAA;AAIrB,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,QAAQ,KAAK,IAAI,CAAA;CACnD,CAAA;AACD,wBAAgB,YAAY,CAAC,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,qBA4CxE"}
|
|
@@ -9,6 +9,7 @@ import { DrawerHeader } from '../Header/index.js';
|
|
|
9
9
|
import './index.scss';
|
|
10
10
|
const baseClass = 'bulk-upload--add-files';
|
|
11
11
|
export function AddFilesView({
|
|
12
|
+
acceptMimeTypes,
|
|
12
13
|
onCancel,
|
|
13
14
|
onDrop
|
|
14
15
|
}) {
|
|
@@ -37,6 +38,7 @@ export function AddFilesView({
|
|
|
37
38
|
size: "small",
|
|
38
39
|
children: t('upload:selectFile')
|
|
39
40
|
}), /*#__PURE__*/_jsx("input", {
|
|
41
|
+
accept: acceptMimeTypes,
|
|
40
42
|
"aria-hidden": "true",
|
|
41
43
|
className: `${baseClass}__hidden-input`,
|
|
42
44
|
hidden: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useTranslation","Button","Dropzone","DrawerHeader","baseClass","AddFilesView","onCancel","onDrop","t","inputRef","useRef","_jsxs","className","_jsx","onClose","title","multipleFiles","onChange","buttonStyle","iconPosition","onClick","current","click","size","hidden","multiple","e","target","files","length","ref","type"],"sources":["../../../../src/elements/BulkUpload/AddFilesView/index.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { Dropzone } from '../../Dropzone/index.js'\nimport { DrawerHeader } from '../Header/index.js'\nimport './index.scss'\n\nconst baseClass = 'bulk-upload--add-files'\n\ntype Props = {\n readonly onCancel: () => void\n readonly onDrop: (acceptedFiles: FileList) => void\n}\nexport function AddFilesView({ onCancel, onDrop }: Props) {\n const { t } = useTranslation()\n\n const inputRef = React.useRef(null)\n\n return (\n <div className={baseClass}>\n <DrawerHeader onClose={onCancel} title={t('upload:addFiles')} />\n <div className={`${baseClass}__dropArea`}>\n <Dropzone multipleFiles onChange={onDrop}>\n <Button\n buttonStyle=\"pill\"\n iconPosition=\"left\"\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }}\n size=\"small\"\n >\n {t('upload:selectFile')}\n </Button>\n <input\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n multiple\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n onDrop(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </Dropzone>\n </div>\n </div>\n )\n}\n"],"mappings":"AAAA;;;AAEA,OAAOA,KAAA,MAAW;AAElB,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,QAAQ,QAAQ;AACzB,SAASC,YAAY,QAAQ;AAC7B,OAAO;AAEP,MAAMC,SAAA,GAAY;
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useTranslation","Button","Dropzone","DrawerHeader","baseClass","AddFilesView","acceptMimeTypes","onCancel","onDrop","t","inputRef","useRef","_jsxs","className","_jsx","onClose","title","multipleFiles","onChange","buttonStyle","iconPosition","onClick","current","click","size","accept","hidden","multiple","e","target","files","length","ref","type"],"sources":["../../../../src/elements/BulkUpload/AddFilesView/index.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { Dropzone } from '../../Dropzone/index.js'\nimport { DrawerHeader } from '../Header/index.js'\nimport './index.scss'\n\nconst baseClass = 'bulk-upload--add-files'\n\ntype Props = {\n readonly acceptMimeTypes?: string\n readonly onCancel: () => void\n readonly onDrop: (acceptedFiles: FileList) => void\n}\nexport function AddFilesView({ acceptMimeTypes, onCancel, onDrop }: Props) {\n const { t } = useTranslation()\n\n const inputRef = React.useRef(null)\n\n return (\n <div className={baseClass}>\n <DrawerHeader onClose={onCancel} title={t('upload:addFiles')} />\n <div className={`${baseClass}__dropArea`}>\n <Dropzone multipleFiles onChange={onDrop}>\n <Button\n buttonStyle=\"pill\"\n iconPosition=\"left\"\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }}\n size=\"small\"\n >\n {t('upload:selectFile')}\n </Button>\n <input\n accept={acceptMimeTypes}\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n multiple\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n onDrop(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </Dropzone>\n </div>\n </div>\n )\n}\n"],"mappings":"AAAA;;;AAEA,OAAOA,KAAA,MAAW;AAElB,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,QAAQ,QAAQ;AACzB,SAASC,YAAY,QAAQ;AAC7B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAOlB,OAAO,SAASC,aAAa;EAAEC,eAAe;EAAEC,QAAQ;EAAEC;AAAM,CAAS;EACvE,MAAM;IAAEC;EAAC,CAAE,GAAGT,cAAA;EAEd,MAAMU,QAAA,GAAWX,KAAA,CAAMY,MAAM,CAAC;EAE9B,oBACEC,KAAA,CAAC;IAAIC,SAAA,EAAWT,SAAA;4BACdU,IAAA,CAACX,YAAA;MAAaY,OAAA,EAASR,QAAA;MAAUS,KAAA,EAAOP,CAAA,CAAE;qBAC1CK,IAAA,CAAC;MAAID,SAAA,EAAW,GAAGT,SAAA,YAAqB;gBACtC,aAAAQ,KAAA,CAACV,QAAA;QAASe,aAAa;QAACC,QAAA,EAAUV,MAAA;gCAChCM,IAAA,CAACb,MAAA;UACCkB,WAAA,EAAY;UACZC,YAAA,EAAa;UACbC,OAAA,EAASA,CAAA;YACP,IAAIX,QAAA,CAASY,OAAO,EAAE;cACpBZ,QAAA,CAASY,OAAO,CAACC,KAAK;YACxB;UACF;UACAC,IAAA,EAAK;oBAEJf,CAAA,CAAE;yBAELK,IAAA,CAAC;UACCW,MAAA,EAAQnB,eAAA;UACR,eAAY;UACZO,SAAA,EAAW,GAAGT,SAAA,gBAAyB;UACvCsB,MAAM;UACNC,QAAQ;UACRT,QAAA,EAAWU,CAAA;YACT,IAAIA,CAAA,CAAEC,MAAM,CAACC,KAAK,IAAIF,CAAA,CAAEC,MAAM,CAACC,KAAK,CAACC,MAAM,GAAG,GAAG;cAC/CvB,MAAA,CAAOoB,CAAA,CAAEC,MAAM,CAACC,KAAK;YACvB;UACF;UACAE,GAAA,EAAKtB,QAAA;UACLuB,IAAA,EAAK;yBAGPrB,KAAA,CAAC;UAAEC,SAAA,EAAW,GAAGT,SAAA,mBAA4B;qBAC1CK,CAAA,CAAE,eAAc,KAAEA,CAAA,CAAE;;;;;AAMjC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/BulkUpload/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGzC,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/BulkUpload/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGzC,OAAO,KAAK,MAAM,OAAO,CAAA;AAuDzB,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAAA;AAED,wBAAgB,gBAAgB,sBAa/B;AAED,KAAK,iBAAiB,GAAG;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,QAAQ,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,SAAS,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9D,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,eAAe,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;IAC1C,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,WAAW,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,KAAK,IAAI,CAAA;IAC9D,YAAY,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,KAAK,IAAI,CAAA;CAClE,CAAA;AAeD,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,qBA8CtF;AAED,eAAO,MAAM,aAAa,yBAAkC,CAAA;AAE5D,wBAAgB,uBAAuB,WAItC"}
|
|
@@ -4,6 +4,7 @@ import { c as _c } from "react/compiler-runtime";
|
|
|
4
4
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
5
|
import { useModal } from '@faceless-ui/modal';
|
|
6
6
|
import React from 'react';
|
|
7
|
+
import { useConfig } from '../../providers/Config/index.js';
|
|
7
8
|
import { EditDepthProvider, useEditDepth } from '../../providers/EditDepth/index.js';
|
|
8
9
|
import { Drawer } from '../Drawer/index.js';
|
|
9
10
|
import { AddFilesView } from './AddFilesView/index.js';
|
|
@@ -11,7 +12,6 @@ import { AddingFilesView } from './AddingFilesView/index.js';
|
|
|
11
12
|
import { FormsManagerProvider, useFormsManager } from './FormsManager/index.js';
|
|
12
13
|
const drawerSlug = 'bulk-upload-drawer-slug';
|
|
13
14
|
function DrawerContent() {
|
|
14
|
-
const $ = _c(9);
|
|
15
15
|
const {
|
|
16
16
|
addFiles,
|
|
17
17
|
forms,
|
|
@@ -24,52 +24,32 @@ function DrawerContent() {
|
|
|
24
24
|
collectionSlug,
|
|
25
25
|
drawerSlug
|
|
26
26
|
} = useBulkUpload();
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
27
|
+
const {
|
|
28
|
+
config
|
|
29
|
+
} = useConfig();
|
|
30
|
+
const uploadCollection = config.collections.find(col => col.slug === collectionSlug);
|
|
31
|
+
const uploadConfig = uploadCollection.upload;
|
|
32
|
+
const uploadMimeTypes = uploadConfig.mimeTypes;
|
|
33
|
+
const onDrop = React.useCallback(acceptedFiles => {
|
|
34
|
+
const fileTransfer = new DataTransfer();
|
|
35
|
+
for (const candidateFile of acceptedFiles) {
|
|
36
|
+
if (uploadMimeTypes === undefined || uploadMimeTypes.length === 0 || uploadMimeTypes?.includes(candidateFile.type)) {
|
|
37
|
+
fileTransfer.items.add(candidateFile);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
void addFiles(fileTransfer.files);
|
|
41
|
+
}, [addFiles, uploadMimeTypes]);
|
|
38
42
|
if (!collectionSlug) {
|
|
39
43
|
return null;
|
|
40
44
|
}
|
|
41
45
|
if (!forms.length && !isInitializing) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
$[4] = t1;
|
|
48
|
-
} else {
|
|
49
|
-
t1 = $[4];
|
|
50
|
-
}
|
|
51
|
-
let t2;
|
|
52
|
-
if ($[5] !== t1 || $[6] !== onDrop) {
|
|
53
|
-
t2 = _jsx(AddFilesView, {
|
|
54
|
-
onCancel: t1,
|
|
55
|
-
onDrop
|
|
56
|
-
});
|
|
57
|
-
$[5] = t1;
|
|
58
|
-
$[6] = onDrop;
|
|
59
|
-
$[7] = t2;
|
|
60
|
-
} else {
|
|
61
|
-
t2 = $[7];
|
|
62
|
-
}
|
|
63
|
-
return t2;
|
|
46
|
+
return /*#__PURE__*/_jsx(AddFilesView, {
|
|
47
|
+
acceptMimeTypes: uploadMimeTypes?.join(', '),
|
|
48
|
+
onCancel: () => closeModal(drawerSlug),
|
|
49
|
+
onDrop: onDrop
|
|
50
|
+
});
|
|
64
51
|
} else {
|
|
65
|
-
|
|
66
|
-
if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
|
|
67
|
-
t1 = _jsx(AddingFilesView, {});
|
|
68
|
-
$[8] = t1;
|
|
69
|
-
} else {
|
|
70
|
-
t1 = $[8];
|
|
71
|
-
}
|
|
72
|
-
return t1;
|
|
52
|
+
return /*#__PURE__*/_jsx(AddingFilesView, {});
|
|
73
53
|
}
|
|
74
54
|
}
|
|
75
55
|
export function BulkUploadDrawer() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useModal","React","EditDepthProvider","useEditDepth","Drawer","AddFilesView","AddingFilesView","FormsManagerProvider","useFormsManager","drawerSlug","DrawerContent","$","addFiles","forms","isInitializing","closeModal","collectionSlug","useBulkUpload","t0","acceptedFiles","onDrop","length","t1","t2","_jsx","onCancel","BulkUploadDrawer","currentDepth","depth","children","gutter","Header","slug","Context","createContext","initialFiles","undefined","maxFiles","onSuccess","setCollectionSlug","setInitialFiles","setMaxFiles","setOnCancel","setOnSuccess","BulkUploadProvider","collection","setCollection","useState","onSuccessFunction","setOnSuccessFunction","onCancelFunction","setOnCancelFunction","useBulkUploadDrawerSlug","Symbol","for","t3","t4","docIDs","errorCount","t5","Provider","value","_jsxs","Fragment","useContext"],"sources":["../../../src/elements/BulkUpload/index.tsx"],"sourcesContent":["'use client'\n\nimport type { JsonObject } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React from 'react'\n\nimport { EditDepthProvider, useEditDepth } from '../../providers/EditDepth/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { AddFilesView } from './AddFilesView/index.js'\nimport { AddingFilesView } from './AddingFilesView/index.js'\nimport { FormsManagerProvider, useFormsManager } from './FormsManager/index.js'\n\nconst drawerSlug = 'bulk-upload-drawer-slug'\n\nfunction DrawerContent() {\n const { addFiles, forms, isInitializing } = useFormsManager()\n const { closeModal } = useModal()\n const { collectionSlug, drawerSlug } = useBulkUpload()\n\n const onDrop = React.useCallback(\n (acceptedFiles: FileList) => {\n void addFiles(acceptedFiles)\n },\n [addFiles],\n )\n\n if (!collectionSlug) {\n return null\n }\n\n if (!forms.length && !isInitializing) {\n return <AddFilesView onCancel={() => closeModal(drawerSlug)} onDrop={onDrop} />\n } else {\n return <AddingFilesView />\n }\n}\n\nexport type BulkUploadProps = {\n readonly children: React.ReactNode\n}\n\nexport function BulkUploadDrawer() {\n const currentDepth = useEditDepth()\n const { drawerSlug } = useBulkUpload()\n\n return (\n <EditDepthProvider depth={currentDepth || 1}>\n <Drawer gutter={false} Header={null} slug={drawerSlug}>\n <FormsManagerProvider>\n <DrawerContent />\n </FormsManagerProvider>\n </Drawer>\n </EditDepthProvider>\n )\n}\n\ntype BulkUploadContext = {\n collectionSlug: string\n drawerSlug: string\n initialFiles: FileList\n maxFiles: number\n onCancel: () => void\n onSuccess: (newDocs: JsonObject[], errorCount: number) => void\n setCollectionSlug: (slug: string) => void\n setInitialFiles: (files: FileList) => void\n setMaxFiles: (maxFiles: number) => void\n setOnCancel: (onCancel: BulkUploadContext['onCancel']) => void\n setOnSuccess: (onSuccess: BulkUploadContext['onSuccess']) => void\n}\n\nconst Context = React.createContext<BulkUploadContext>({\n collectionSlug: '',\n drawerSlug: '',\n initialFiles: undefined,\n maxFiles: undefined,\n onCancel: () => null,\n onSuccess: () => null,\n setCollectionSlug: () => null,\n setInitialFiles: () => null,\n setMaxFiles: () => null,\n setOnCancel: () => null,\n setOnSuccess: () => null,\n})\nexport function BulkUploadProvider({ children }: { readonly children: React.ReactNode }) {\n const [collection, setCollection] = React.useState<string>()\n const [onSuccessFunction, setOnSuccessFunction] = React.useState<BulkUploadContext['onSuccess']>()\n const [onCancelFunction, setOnCancelFunction] = React.useState<BulkUploadContext['onCancel']>()\n const [initialFiles, setInitialFiles] = React.useState<FileList>(undefined)\n const [maxFiles, setMaxFiles] = React.useState<number>(undefined)\n const drawerSlug = useBulkUploadDrawerSlug()\n\n const setCollectionSlug: BulkUploadContext['setCollectionSlug'] = (slug) => {\n setCollection(slug)\n }\n\n const setOnSuccess: BulkUploadContext['setOnSuccess'] = (onSuccess) => {\n setOnSuccessFunction(() => onSuccess)\n }\n\n return (\n <Context.Provider\n value={{\n collectionSlug: collection,\n drawerSlug,\n initialFiles,\n maxFiles,\n onCancel: () => {\n if (typeof onCancelFunction === 'function') {\n onCancelFunction()\n }\n },\n onSuccess: (docIDs, errorCount) => {\n if (typeof onSuccessFunction === 'function') {\n onSuccessFunction(docIDs, errorCount)\n }\n },\n setCollectionSlug,\n setInitialFiles,\n setMaxFiles,\n setOnCancel: setOnCancelFunction,\n setOnSuccess,\n }}\n >\n <React.Fragment>\n {children}\n <BulkUploadDrawer />\n </React.Fragment>\n </Context.Provider>\n )\n}\n\nexport const useBulkUpload = () => React.useContext(Context)\n\nexport function useBulkUploadDrawerSlug() {\n const depth = useEditDepth()\n\n return `${drawerSlug}-${depth || 1}`\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useModal","React","useConfig","EditDepthProvider","useEditDepth","Drawer","AddFilesView","AddingFilesView","FormsManagerProvider","useFormsManager","drawerSlug","DrawerContent","addFiles","forms","isInitializing","closeModal","collectionSlug","useBulkUpload","config","uploadCollection","collections","find","col","slug","uploadConfig","upload","uploadMimeTypes","mimeTypes","onDrop","useCallback","acceptedFiles","fileTransfer","DataTransfer","candidateFile","undefined","length","includes","type","items","add","files","_jsx","acceptMimeTypes","join","onCancel","BulkUploadDrawer","$","currentDepth","t0","t1","depth","children","gutter","Header","Context","createContext","initialFiles","maxFiles","onSuccess","setCollectionSlug","setInitialFiles","setMaxFiles","setOnCancel","setOnSuccess","BulkUploadProvider","collection","setCollection","useState","onSuccessFunction","setOnSuccessFunction","onCancelFunction","setOnCancelFunction","useBulkUploadDrawerSlug","Symbol","for","t2","t3","t4","docIDs","errorCount","t5","Provider","value","_jsxs","Fragment","useContext"],"sources":["../../../src/elements/BulkUpload/index.tsx"],"sourcesContent":["'use client'\n\nimport type { JsonObject } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React from 'react'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { EditDepthProvider, useEditDepth } from '../../providers/EditDepth/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { AddFilesView } from './AddFilesView/index.js'\nimport { AddingFilesView } from './AddingFilesView/index.js'\nimport { FormsManagerProvider, useFormsManager } from './FormsManager/index.js'\n\nconst drawerSlug = 'bulk-upload-drawer-slug'\n\nfunction DrawerContent() {\n const { addFiles, forms, isInitializing } = useFormsManager()\n const { closeModal } = useModal()\n const { collectionSlug, drawerSlug } = useBulkUpload()\n const { config } = useConfig()\n\n const uploadCollection = config.collections.find((col) => col.slug === collectionSlug)\n const uploadConfig = uploadCollection.upload\n const uploadMimeTypes = uploadConfig.mimeTypes\n\n const onDrop = React.useCallback(\n (acceptedFiles: FileList) => {\n const fileTransfer = new DataTransfer()\n for (const candidateFile of acceptedFiles) {\n if (\n uploadMimeTypes === undefined ||\n uploadMimeTypes.length === 0 ||\n uploadMimeTypes?.includes(candidateFile.type)\n ) {\n fileTransfer.items.add(candidateFile)\n }\n }\n void addFiles(fileTransfer.files)\n },\n [addFiles, uploadMimeTypes],\n )\n\n if (!collectionSlug) {\n return null\n }\n\n if (!forms.length && !isInitializing) {\n return (\n <AddFilesView\n acceptMimeTypes={uploadMimeTypes?.join(', ')}\n onCancel={() => closeModal(drawerSlug)}\n onDrop={onDrop}\n />\n )\n } else {\n return <AddingFilesView />\n }\n}\n\nexport type BulkUploadProps = {\n readonly children: React.ReactNode\n}\n\nexport function BulkUploadDrawer() {\n const currentDepth = useEditDepth()\n const { drawerSlug } = useBulkUpload()\n\n return (\n <EditDepthProvider depth={currentDepth || 1}>\n <Drawer gutter={false} Header={null} slug={drawerSlug}>\n <FormsManagerProvider>\n <DrawerContent />\n </FormsManagerProvider>\n </Drawer>\n </EditDepthProvider>\n )\n}\n\ntype BulkUploadContext = {\n collectionSlug: string\n drawerSlug: string\n initialFiles: FileList\n maxFiles: number\n onCancel: () => void\n onSuccess: (newDocs: JsonObject[], errorCount: number) => void\n setCollectionSlug: (slug: string) => void\n setInitialFiles: (files: FileList) => void\n setMaxFiles: (maxFiles: number) => void\n setOnCancel: (onCancel: BulkUploadContext['onCancel']) => void\n setOnSuccess: (onSuccess: BulkUploadContext['onSuccess']) => void\n}\n\nconst Context = React.createContext<BulkUploadContext>({\n collectionSlug: '',\n drawerSlug: '',\n initialFiles: undefined,\n maxFiles: undefined,\n onCancel: () => null,\n onSuccess: () => null,\n setCollectionSlug: () => null,\n setInitialFiles: () => null,\n setMaxFiles: () => null,\n setOnCancel: () => null,\n setOnSuccess: () => null,\n})\nexport function BulkUploadProvider({ children }: { readonly children: React.ReactNode }) {\n const [collection, setCollection] = React.useState<string>()\n const [onSuccessFunction, setOnSuccessFunction] = React.useState<BulkUploadContext['onSuccess']>()\n const [onCancelFunction, setOnCancelFunction] = React.useState<BulkUploadContext['onCancel']>()\n const [initialFiles, setInitialFiles] = React.useState<FileList>(undefined)\n const [maxFiles, setMaxFiles] = React.useState<number>(undefined)\n const drawerSlug = useBulkUploadDrawerSlug()\n\n const setCollectionSlug: BulkUploadContext['setCollectionSlug'] = (slug) => {\n setCollection(slug)\n }\n\n const setOnSuccess: BulkUploadContext['setOnSuccess'] = (onSuccess) => {\n setOnSuccessFunction(() => onSuccess)\n }\n\n return (\n <Context.Provider\n value={{\n collectionSlug: collection,\n drawerSlug,\n initialFiles,\n maxFiles,\n onCancel: () => {\n if (typeof onCancelFunction === 'function') {\n onCancelFunction()\n }\n },\n onSuccess: (docIDs, errorCount) => {\n if (typeof onSuccessFunction === 'function') {\n onSuccessFunction(docIDs, errorCount)\n }\n },\n setCollectionSlug,\n setInitialFiles,\n setMaxFiles,\n setOnCancel: setOnCancelFunction,\n setOnSuccess,\n }}\n >\n <React.Fragment>\n {children}\n <BulkUploadDrawer />\n </React.Fragment>\n </Context.Provider>\n )\n}\n\nexport const useBulkUpload = () => React.useContext(Context)\n\nexport function useBulkUploadDrawerSlug() {\n const depth = useEditDepth()\n\n return `${drawerSlug}-${depth || 1}`\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Upload/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,yBAAyB,EAAe,MAAM,SAAS,CAAA;AAGhF,OAAO,KAAmD,MAAM,OAAO,CAAA;AAiBvE,OAAO,cAAc,CAAA;AAGrB,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAC3C,eAAO,MAAM,eAAe,kBAAkB,CAAA;AAU9C,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,aAAa,wEAKvB,iBAAiB,sBAgCnB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAA;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAA;IACzC,QAAQ,CAAC,YAAY,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAA;CAC3D,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Upload/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,yBAAyB,EAAe,MAAM,SAAS,CAAA;AAGhF,OAAO,KAAmD,MAAM,OAAO,CAAA;AAiBvE,OAAO,cAAc,CAAA;AAGrB,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAC3C,eAAO,MAAM,eAAe,kBAAkB,CAAA;AAU9C,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,aAAa,wEAKvB,iBAAiB,sBAgCnB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAA;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAA;IACzC,QAAQ,CAAC,YAAY,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAA;CAC3D,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA2SxC,CAAA"}
|
|
@@ -209,6 +209,7 @@ export const Upload = props => {
|
|
|
209
209
|
focalPoint = true
|
|
210
210
|
} = uploadConfig;
|
|
211
211
|
const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled);
|
|
212
|
+
const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ');
|
|
212
213
|
return /*#__PURE__*/_jsxs("div", {
|
|
213
214
|
className: [fieldBaseClass, baseClass].filter(Boolean).join(' '),
|
|
214
215
|
children: [/*#__PURE__*/_jsx(FieldError, {
|
|
@@ -242,6 +243,7 @@ export const Upload = props => {
|
|
|
242
243
|
size: "small",
|
|
243
244
|
children: t('upload:selectFile')
|
|
244
245
|
}), /*#__PURE__*/_jsx("input", {
|
|
246
|
+
accept: acceptMimeTypes,
|
|
245
247
|
"aria-hidden": "true",
|
|
246
248
|
className: `${baseClass}__hidden-input`,
|
|
247
249
|
hidden: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","isImage","reduceFieldsToValues","React","useCallback","useEffect","useRef","useState","toast","FieldError","fieldBaseClass","useForm","useField","useDocumentInfo","useTranslation","useUploadEdits","Button","Drawer","DrawerToggler","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","UploadActions","t0","$","customActions","enableAdjustments","enablePreviewSizes","mimeType","t","t1","t2","Symbol","for","bb0","fileTypeIsAdjustable","length","t3","map","_temp","_jsxs","className","children","Fragment","_jsx","slug","Upload","props","collectionSlug","initialState","onChange","uploadConfig","setModified","resetUploadEdits","updateUploadEdits","uploadEdits","docPermissions","errorMessage","setValue","showError","path","doc","setDoc","fileSrc","setFileSrc","replacingFile","setReplacingFile","filename","setFilename","name","showUrlInput","setShowUrlInput","fileUrl","setFileUrl","urlInputRef","inputRef","handleFileChange","newFile","File","URL","createObjectURL","renameFile","fileToChange","newName","type","lastModified","handleFileNameChange","e","updatedFileName","target","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","args","handleUrlSubmit","response","fetch","data","blob","fileName","split","pop","file","error","message","current","canRemoveUpload","update","permission","delete","hasImageSizes","imageSizes","hasResizeOptions","Boolean","resizeOptions","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","filter","join","field","customUploadActions","handleRemove","imageCacheTag","updatedAt","buttonStyle","onClick","click","size","hidden","ref","icon","iconStyle","round","tooltip","Header","url","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","hoverTitle","title","label","CustomAction","i"],"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { isImage, reduceFieldsToValues } from 'payload/shared'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { useForm } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\nimport './index.scss'\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n return true\n}\n\ntype UploadActionsArgs = {\n readonly customActions?: React.ReactNode[]\n readonly enableAdjustments: boolean\n readonly enablePreviewSizes: boolean\n readonly mimeType: string\n}\n\nexport const UploadActions = ({\n customActions,\n enableAdjustments,\n enablePreviewSizes,\n mimeType,\n}: UploadActionsArgs) => {\n const { t } = useTranslation()\n\n const fileTypeIsAdjustable = isImage(mimeType) && mimeType !== 'image/svg+xml'\n\n if (!fileTypeIsAdjustable && (!customActions || customActions.length === 0)) {\n return null\n }\n\n return (\n <div className={`${baseClass}__upload-actions`}>\n {fileTypeIsAdjustable && (\n <React.Fragment>\n {enablePreviewSizes && (\n <DrawerToggler className={`${baseClass}__previewSizes`} slug={sizePreviewSlug}>\n {t('upload:previewSizes')}\n </DrawerToggler>\n )}\n {enableAdjustments && (\n <DrawerToggler className={`${baseClass}__edit`} slug={editDrawerSlug}>\n {t('upload:editImage')}\n </DrawerToggler>\n )}\n </React.Fragment>\n )}\n\n {customActions &&\n customActions.map((CustomAction, i) => {\n return <React.Fragment key={i}>{CustomAction}</React.Fragment>\n })}\n </div>\n )\n}\n\nexport type UploadProps = {\n readonly collectionSlug: string\n readonly customActions?: React.ReactNode[]\n readonly initialState?: FormState\n readonly onChange?: (file?: File) => void\n readonly uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { collectionSlug, customActions, initialState, onChange, uploadConfig } = props\n\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n const { docPermissions } = useDocumentInfo()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const [doc, setDoc] = useState(reduceFieldsToValues(initialState || {}, true))\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const [replacingFile, setReplacingFile] = useState(false)\n const [filename, setFilename] = useState<string>(value?.name || '')\n const [showUrlInput, setShowUrlInput] = useState(false)\n const [fileUrl, setFileUrl] = useState<string>('')\n\n const urlInputRef = useRef<HTMLInputElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n\n const handleFileChange = useCallback(\n (newFile: File) => {\n if (newFile instanceof File) {\n setFileSrc(URL.createObjectURL(newFile))\n }\n\n setValue(newFile)\n setShowUrlInput(false)\n\n if (typeof onChange === 'function') {\n onChange(newFile)\n }\n },\n [onChange, setValue],\n )\n\n const renameFile = (fileToChange: File, newName: string): File => {\n // Creating a new File object with updated properties\n const newFile = new File([fileToChange], newName, {\n type: fileToChange.type,\n lastModified: fileToChange.lastModified,\n })\n return newFile\n }\n\n const handleFileNameChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n\n if (value) {\n handleFileChange(renameFile(value, updatedFileName))\n setFilename(updatedFileName)\n }\n },\n [handleFileChange, value],\n )\n\n const handleFileSelection = useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n handleFileChange(fileToUpload)\n },\n [handleFileChange],\n )\n\n const handleFileRemoval = useCallback(() => {\n setReplacingFile(true)\n handleFileChange(null)\n setFileSrc('')\n setFileUrl('')\n setDoc({})\n resetUploadEdits()\n setShowUrlInput(false)\n }, [handleFileChange, resetUploadEdits])\n\n const onEditsSave = useCallback(\n (args: UploadEdits) => {\n setModified(true)\n updateUploadEdits(args)\n },\n [setModified, updateUploadEdits],\n )\n\n const handleUrlSubmit = async () => {\n if (fileUrl) {\n try {\n const response = await fetch(fileUrl)\n const data = await response.blob()\n\n // Extract the file name from the URL\n const fileName = fileUrl.split('/').pop()\n\n // Create a new File object from the Blob data\n const file = new File([data], fileName, { type: data.type })\n handleFileChange(file)\n } catch (e) {\n toast.error(e.message)\n }\n }\n }\n\n useEffect(() => {\n setDoc(reduceFieldsToValues(initialState || {}, true))\n if (initialState?.file?.value instanceof File) {\n setFileSrc(URL.createObjectURL(initialState.file.value))\n }\n setReplacingFile(false)\n }, [initialState])\n\n useEffect(() => {\n if (showUrlInput && urlInputRef.current) {\n // urlInputRef.current.focus() // Focus on the remote-url input field when showUrlInput is true\n }\n }, [showUrlInput])\n\n const canRemoveUpload =\n docPermissions?.update?.permission &&\n 'delete' in docPermissions &&\n docPermissions?.delete?.permission\n\n const hasImageSizes = uploadConfig?.imageSizes?.length > 0\n const hasResizeOptions = Boolean(uploadConfig?.resizeOptions)\n // Explicity check if set to true, default is undefined\n const focalPointEnabled = uploadConfig?.focalPoint === true\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled)\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError field={null} message={errorMessage} showError={showError} />\n {doc.filename && !replacingFile && (\n <FileDetails\n collectionSlug={collectionSlug}\n customUploadActions={customActions}\n doc={doc}\n enableAdjustments={showCrop || showFocalPoint}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n imageCacheTag={doc.updatedAt}\n uploadConfig={uploadConfig}\n />\n )}\n {(!doc.filename || replacingFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && !showUrlInput && (\n <Dropzone onChange={handleFileSelection}>\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneButtons`}>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }}\n size=\"small\"\n >\n {t('upload:selectFile')}\n </Button>\n <input\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n handleFileSelection(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n <span className={`${baseClass}__orText`}>{t('general:or')}</span>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n setShowUrlInput(true)\n }}\n size=\"small\"\n >\n {t('upload:pasteURL')}\n </Button>\n </div>\n\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n </Dropzone>\n )}\n {showUrlInput && (\n <React.Fragment>\n <div className={`${baseClass}__remote-file-wrap`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__remote-file`}\n onChange={(e) => {\n setFileUrl(e.target.value)\n }}\n ref={urlInputRef}\n type=\"text\"\n value={fileUrl}\n />\n <div className={`${baseClass}__add-file-wrap`}>\n <button\n className={`${baseClass}__add-file`}\n onClick={() => {\n void handleUrlSubmit()\n }}\n type=\"button\"\n >\n {t('upload:addFile')}\n </button>\n </div>\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={() => {\n setShowUrlInput(false)\n }}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n {value && fileSrc && (\n <React.Fragment>\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__filename`}\n onChange={handleFileNameChange}\n type=\"text\"\n value={filename || value.name}\n />\n <UploadActions\n customActions={customActions}\n enableAdjustments={showCrop || showFocalPoint}\n enablePreviewSizes={hasImageSizes && doc.filename && !replacingFile}\n mimeType={value.type}\n />\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n </div>\n )}\n {(value || doc.filename) && (\n <Drawer Header={null} slug={editDrawerSlug}>\n <EditUpload\n fileName={value?.name || doc?.filename}\n fileSrc={doc?.url || fileSrc}\n imageCacheTag={doc.updatedAt}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || doc.focalX || 50,\n y: uploadEdits?.focalPoint?.y || doc.focalY || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </Drawer>\n )}\n {doc && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: doc?.filename })}\n >\n <PreviewSizes doc={doc} imageCacheTag={doc.updatedAt} uploadConfig={uploadConfig} />\n </Drawer>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","isImage","reduceFieldsToValues","React","useCallback","useEffect","useRef","useState","toast","FieldError","fieldBaseClass","useForm","useField","useDocumentInfo","useTranslation","useUploadEdits","Button","Drawer","DrawerToggler","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","UploadActions","t0","$","customActions","enableAdjustments","enablePreviewSizes","mimeType","t","t1","t2","Symbol","for","bb0","fileTypeIsAdjustable","length","t3","map","_temp","_jsxs","className","children","Fragment","_jsx","slug","Upload","props","collectionSlug","initialState","onChange","uploadConfig","setModified","resetUploadEdits","updateUploadEdits","uploadEdits","docPermissions","errorMessage","setValue","showError","path","doc","setDoc","fileSrc","setFileSrc","replacingFile","setReplacingFile","filename","setFilename","name","showUrlInput","setShowUrlInput","fileUrl","setFileUrl","urlInputRef","inputRef","handleFileChange","newFile","File","URL","createObjectURL","renameFile","fileToChange","newName","type","lastModified","handleFileNameChange","e","updatedFileName","target","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","args","handleUrlSubmit","response","fetch","data","blob","fileName","split","pop","file","error","message","current","canRemoveUpload","update","permission","delete","hasImageSizes","imageSizes","hasResizeOptions","Boolean","resizeOptions","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","acceptMimeTypes","mimeTypes","join","filter","field","customUploadActions","handleRemove","imageCacheTag","updatedAt","buttonStyle","onClick","click","size","accept","hidden","ref","icon","iconStyle","round","tooltip","Header","url","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","hoverTitle","title","label","CustomAction","i"],"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { isImage, reduceFieldsToValues } from 'payload/shared'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { useForm } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\nimport './index.scss'\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n return true\n}\n\ntype UploadActionsArgs = {\n readonly customActions?: React.ReactNode[]\n readonly enableAdjustments: boolean\n readonly enablePreviewSizes: boolean\n readonly mimeType: string\n}\n\nexport const UploadActions = ({\n customActions,\n enableAdjustments,\n enablePreviewSizes,\n mimeType,\n}: UploadActionsArgs) => {\n const { t } = useTranslation()\n\n const fileTypeIsAdjustable = isImage(mimeType) && mimeType !== 'image/svg+xml'\n\n if (!fileTypeIsAdjustable && (!customActions || customActions.length === 0)) {\n return null\n }\n\n return (\n <div className={`${baseClass}__upload-actions`}>\n {fileTypeIsAdjustable && (\n <React.Fragment>\n {enablePreviewSizes && (\n <DrawerToggler className={`${baseClass}__previewSizes`} slug={sizePreviewSlug}>\n {t('upload:previewSizes')}\n </DrawerToggler>\n )}\n {enableAdjustments && (\n <DrawerToggler className={`${baseClass}__edit`} slug={editDrawerSlug}>\n {t('upload:editImage')}\n </DrawerToggler>\n )}\n </React.Fragment>\n )}\n\n {customActions &&\n customActions.map((CustomAction, i) => {\n return <React.Fragment key={i}>{CustomAction}</React.Fragment>\n })}\n </div>\n )\n}\n\nexport type UploadProps = {\n readonly collectionSlug: string\n readonly customActions?: React.ReactNode[]\n readonly initialState?: FormState\n readonly onChange?: (file?: File) => void\n readonly uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { collectionSlug, customActions, initialState, onChange, uploadConfig } = props\n\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n const { docPermissions } = useDocumentInfo()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const [doc, setDoc] = useState(reduceFieldsToValues(initialState || {}, true))\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const [replacingFile, setReplacingFile] = useState(false)\n const [filename, setFilename] = useState<string>(value?.name || '')\n const [showUrlInput, setShowUrlInput] = useState(false)\n const [fileUrl, setFileUrl] = useState<string>('')\n\n const urlInputRef = useRef<HTMLInputElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n\n const handleFileChange = useCallback(\n (newFile: File) => {\n if (newFile instanceof File) {\n setFileSrc(URL.createObjectURL(newFile))\n }\n\n setValue(newFile)\n setShowUrlInput(false)\n\n if (typeof onChange === 'function') {\n onChange(newFile)\n }\n },\n [onChange, setValue],\n )\n\n const renameFile = (fileToChange: File, newName: string): File => {\n // Creating a new File object with updated properties\n const newFile = new File([fileToChange], newName, {\n type: fileToChange.type,\n lastModified: fileToChange.lastModified,\n })\n return newFile\n }\n\n const handleFileNameChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n\n if (value) {\n handleFileChange(renameFile(value, updatedFileName))\n setFilename(updatedFileName)\n }\n },\n [handleFileChange, value],\n )\n\n const handleFileSelection = useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n handleFileChange(fileToUpload)\n },\n [handleFileChange],\n )\n\n const handleFileRemoval = useCallback(() => {\n setReplacingFile(true)\n handleFileChange(null)\n setFileSrc('')\n setFileUrl('')\n setDoc({})\n resetUploadEdits()\n setShowUrlInput(false)\n }, [handleFileChange, resetUploadEdits])\n\n const onEditsSave = useCallback(\n (args: UploadEdits) => {\n setModified(true)\n updateUploadEdits(args)\n },\n [setModified, updateUploadEdits],\n )\n\n const handleUrlSubmit = async () => {\n if (fileUrl) {\n try {\n const response = await fetch(fileUrl)\n const data = await response.blob()\n\n // Extract the file name from the URL\n const fileName = fileUrl.split('/').pop()\n\n // Create a new File object from the Blob data\n const file = new File([data], fileName, { type: data.type })\n handleFileChange(file)\n } catch (e) {\n toast.error(e.message)\n }\n }\n }\n\n useEffect(() => {\n setDoc(reduceFieldsToValues(initialState || {}, true))\n if (initialState?.file?.value instanceof File) {\n setFileSrc(URL.createObjectURL(initialState.file.value))\n }\n setReplacingFile(false)\n }, [initialState])\n\n useEffect(() => {\n if (showUrlInput && urlInputRef.current) {\n // urlInputRef.current.focus() // Focus on the remote-url input field when showUrlInput is true\n }\n }, [showUrlInput])\n\n const canRemoveUpload =\n docPermissions?.update?.permission &&\n 'delete' in docPermissions &&\n docPermissions?.delete?.permission\n\n const hasImageSizes = uploadConfig?.imageSizes?.length > 0\n const hasResizeOptions = Boolean(uploadConfig?.resizeOptions)\n // Explicity check if set to true, default is undefined\n const focalPointEnabled = uploadConfig?.focalPoint === true\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled)\n\n const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ')\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError field={null} message={errorMessage} showError={showError} />\n {doc.filename && !replacingFile && (\n <FileDetails\n collectionSlug={collectionSlug}\n customUploadActions={customActions}\n doc={doc}\n enableAdjustments={showCrop || showFocalPoint}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n imageCacheTag={doc.updatedAt}\n uploadConfig={uploadConfig}\n />\n )}\n {(!doc.filename || replacingFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && !showUrlInput && (\n <Dropzone onChange={handleFileSelection}>\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneButtons`}>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }}\n size=\"small\"\n >\n {t('upload:selectFile')}\n </Button>\n <input\n accept={acceptMimeTypes}\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n handleFileSelection(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n <span className={`${baseClass}__orText`}>{t('general:or')}</span>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n setShowUrlInput(true)\n }}\n size=\"small\"\n >\n {t('upload:pasteURL')}\n </Button>\n </div>\n\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n </Dropzone>\n )}\n {showUrlInput && (\n <React.Fragment>\n <div className={`${baseClass}__remote-file-wrap`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__remote-file`}\n onChange={(e) => {\n setFileUrl(e.target.value)\n }}\n ref={urlInputRef}\n type=\"text\"\n value={fileUrl}\n />\n <div className={`${baseClass}__add-file-wrap`}>\n <button\n className={`${baseClass}__add-file`}\n onClick={() => {\n void handleUrlSubmit()\n }}\n type=\"button\"\n >\n {t('upload:addFile')}\n </button>\n </div>\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={() => {\n setShowUrlInput(false)\n }}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n {value && fileSrc && (\n <React.Fragment>\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__filename`}\n onChange={handleFileNameChange}\n type=\"text\"\n value={filename || value.name}\n />\n <UploadActions\n customActions={customActions}\n enableAdjustments={showCrop || showFocalPoint}\n enablePreviewSizes={hasImageSizes && doc.filename && !replacingFile}\n mimeType={value.type}\n />\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n </div>\n )}\n {(value || doc.filename) && (\n <Drawer Header={null} slug={editDrawerSlug}>\n <EditUpload\n fileName={value?.name || doc?.filename}\n fileSrc={doc?.url || fileSrc}\n imageCacheTag={doc.updatedAt}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || doc.focalX || 50,\n y: uploadEdits?.focalPoint?.y || doc.focalY || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </Drawer>\n )}\n {doc && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: doc?.filename })}\n >\n <PreviewSizes doc={doc} imageCacheTag={doc.updatedAt} uploadConfig={uploadConfig} />\n </Drawer>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|