@payloadcms/ui 3.28.0 → 3.29.0-internal.0ad276c

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.
@@ -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,KAA6D,MAAM,OAAO,CAAA;AAiBjF,OAAO,cAAc,CAAA;AAKrB,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,sBAiCnB,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,CAyWxC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Upload/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,SAAS,EAAE,yBAAyB,EAAe,MAAM,SAAS,CAAA;AAG/F,OAAO,KAA6D,MAAM,OAAO,CAAA;AAiBjF,OAAO,cAAc,CAAA;AAMrB,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,sBAiCnB,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,CAkXxC,CAAA"}
@@ -12,14 +12,15 @@ import { useField } from '../../forms/useField/index.js';
12
12
  import { useConfig } from '../../providers/Config/index.js';
13
13
  import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
14
14
  import { EditDepthProvider } from '../../providers/EditDepth/index.js';
15
+ import { useServerFunctions } from '../../providers/ServerFunctions/index.js';
15
16
  import { useTranslation } from '../../providers/Translation/index.js';
16
17
  import { useUploadEdits } from '../../providers/UploadEdits/index.js';
17
18
  import { Button } from '../Button/index.js';
18
19
  import { Drawer, DrawerToggler } from '../Drawer/index.js';
19
20
  import { Dropzone } from '../Dropzone/index.js';
20
21
  import { EditUpload } from '../EditUpload/index.js';
21
- import { FileDetails } from '../FileDetails/index.js';
22
22
  import './index.scss';
23
+ import { FileDetails } from '../FileDetails/index.js';
23
24
  import { PreviewSizes } from '../PreviewSizes/index.js';
24
25
  import { Thumbnail } from '../Thumbnail/index.js';
25
26
  const baseClass = 'file-field';
@@ -99,6 +100,10 @@ export const Upload = props => {
99
100
  onChange,
100
101
  uploadConfig
101
102
  } = props;
103
+ const {
104
+ getDocumentSlots
105
+ } = useServerFunctions();
106
+ const [documentSlots, setDocumentSlots] = React.useState({});
102
107
  const {
103
108
  config: {
104
109
  routes: {
@@ -257,9 +262,14 @@ export const Upload = props => {
257
262
  const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled);
258
263
  const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ');
259
264
  const imageCacheTag = uploadConfig?.cacheTags && savedDocumentData?.updatedAt;
260
- if (uploadConfig.hideFileInputOnCreate && !savedDocumentData?.filename) {
261
- return null;
262
- }
265
+ useEffect(() => {
266
+ void (async () => {
267
+ const slots = await getDocumentSlots({
268
+ collectionSlug
269
+ });
270
+ setDocumentSlots(slots);
271
+ })();
272
+ }, [getDocumentSlots, collectionSlug]);
263
273
  return /*#__PURE__*/_jsxs("div", {
264
274
  className: [fieldBaseClass, baseClass].filter(Boolean).join(' '),
265
275
  children: [/*#__PURE__*/_jsx(FieldError, {
@@ -316,6 +326,8 @@ export const Upload = props => {
316
326
  size: "small",
317
327
  children: t('upload:pasteURL')
318
328
  })]
329
+ }), uploadConfig?.admin?.components?.controls && documentSlots?.UploadControls !== undefined && /*#__PURE__*/_jsx(Fragment, {
330
+ children: documentSlots.UploadControls
319
331
  })]
320
332
  }), /*#__PURE__*/_jsxs("p", {
321
333
  className: `${baseClass}__dragAndDropText`,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","isImage","React","Fragment","useCallback","useEffect","useRef","useState","toast","FieldError","fieldBaseClass","useForm","useFormProcessing","useField","useConfig","useDocumentInfo","EditDepthProvider","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","_jsx","slug","Upload","props","collectionSlug","initialState","onChange","uploadConfig","config","routes","api","serverURL","setModified","resetUploadEdits","updateUploadEdits","uploadEdits","id","docPermissions","savedDocumentData","setUploadStatus","isFormSubmitting","errorMessage","setValue","showError","path","fileSrc","setFileSrc","removedFile","setRemovedFile","filename","setFilename","name","showUrlInput","setShowUrlInput","fileUrl","setFileUrl","urlInputRef","inputRef","useServerSideFetch","pasteURL","allowList","handleFileChange","newFile","File","URL","createObjectURL","renameFile","fileToChange","newName","type","lastModified","handleFileNameChange","e","updatedFileName","target","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","args","handleUrlSubmit","clientResponse","fetch","ok","Error","status","blob","fileName","decodeURIComponent","split","pop","file","_clientError","error","encodeURIComponent","serverResponse","_serverError","current","canRemoveUpload","update","delete","hasImageSizes","imageSizes","hasResizeOptions","Boolean","resizeOptions","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","acceptMimeTypes","mimeTypes","join","imageCacheTag","cacheTags","updatedAt","hideFileInputOnCreate","filter","message","customUploadActions","doc","handleRemove","hideRemoveFile","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 } from 'payload/shared'\nimport React, { Fragment, 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, useFormProcessing } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/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 './index.scss'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\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 =\n isImage(mimeType) && mimeType !== 'image/svg+xml' && mimeType !== 'image/jxl'\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 {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n const { id, docPermissions, savedDocumentData, setUploadStatus } = useDocumentInfo()\n const isFormSubmitting = useFormProcessing()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const [removedFile, setRemovedFile] = 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 useServerSideFetch =\n typeof uploadConfig?.pasteURL === 'object' && uploadConfig.pasteURL.allowList?.length > 0\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 setRemovedFile(true)\n handleFileChange(null)\n setFileSrc('')\n setFileUrl('')\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 || uploadConfig?.pasteURL === false) {\n return\n }\n\n setUploadStatus('uploading')\n try {\n // Attempt client-side fetch\n const clientResponse = await fetch(fileUrl)\n\n if (!clientResponse.ok) {\n throw new Error(`Fetch failed with status: ${clientResponse.status}`)\n }\n\n const blob = await clientResponse.blob()\n const fileName = decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange(file)\n setUploadStatus('idle')\n return // Exit if client-side fetch succeeds\n } catch (_clientError) {\n if (!useServerSideFetch) {\n // If server-side fetch is not enabled, show client-side error\n toast.error('Failed to fetch the file.')\n setUploadStatus('failed')\n return\n }\n }\n\n // Attempt server-side fetch if client-side fetch fails and useServerSideFetch is true\n try {\n const pasteURL = `/${collectionSlug}/paste-url${id ? `/${id}?` : '?'}src=${encodeURIComponent(fileUrl)}`\n const serverResponse = await fetch(`${serverURL}${api}${pasteURL}`)\n\n if (!serverResponse.ok) {\n throw new Error(`Fetch failed with status: ${serverResponse.status}`)\n }\n\n const blob = await serverResponse.blob()\n const fileName = decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange(file)\n setUploadStatus('idle')\n } catch (_serverError) {\n toast.error('The provided URL is not allowed.')\n setUploadStatus('failed')\n }\n }\n\n useEffect(() => {\n if (initialState?.file?.value instanceof File) {\n setFileSrc(URL.createObjectURL(initialState.file.value))\n setRemovedFile(false)\n }\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 useEffect(() => {\n if (isFormSubmitting) {\n setRemovedFile(false)\n }\n }, [isFormSubmitting])\n\n const canRemoveUpload =\n docPermissions?.update && 'delete' in docPermissions && docPermissions?.delete\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 const imageCacheTag = uploadConfig?.cacheTags && savedDocumentData?.updatedAt\n\n if (uploadConfig.hideFileInputOnCreate && !savedDocumentData?.filename) {\n return null\n }\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} showError={showError} />\n {savedDocumentData && savedDocumentData.filename && !removedFile && (\n <FileDetails\n collectionSlug={collectionSlug}\n customUploadActions={customActions}\n doc={savedDocumentData}\n enableAdjustments={showCrop || showFocalPoint}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n hideRemoveFile={uploadConfig.hideRemoveFile}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n )}\n {((!uploadConfig.hideFileInputOnCreate && !savedDocumentData?.filename) || removedFile) && (\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 {uploadConfig?.pasteURL !== false && (\n <Fragment>\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 </Fragment>\n )}\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 && savedDocumentData?.filename && !removedFile}\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 || savedDocumentData?.filename) && (\n <EditDepthProvider>\n <Drawer Header={null} slug={editDrawerSlug}>\n <EditUpload\n fileName={value?.name || savedDocumentData?.filename}\n fileSrc={savedDocumentData?.url || fileSrc}\n imageCacheTag={imageCacheTag}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || savedDocumentData?.focalX || 50,\n y: uploadEdits?.focalPoint?.y || savedDocumentData?.focalY || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </Drawer>\n </EditDepthProvider>\n )}\n {savedDocumentData && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: savedDocumentData.filename })}\n >\n <PreviewSizes\n doc={savedDocumentData}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n </Drawer>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","isImage","React","Fragment","useCallback","useEffect","useRef","useState","toast","FieldError","fieldBaseClass","useForm","useFormProcessing","useField","useConfig","useDocumentInfo","EditDepthProvider","useServerFunctions","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","_jsx","slug","Upload","props","collectionSlug","initialState","onChange","uploadConfig","getDocumentSlots","documentSlots","setDocumentSlots","config","routes","api","serverURL","setModified","resetUploadEdits","updateUploadEdits","uploadEdits","id","docPermissions","savedDocumentData","setUploadStatus","isFormSubmitting","errorMessage","setValue","showError","path","fileSrc","setFileSrc","removedFile","setRemovedFile","filename","setFilename","name","showUrlInput","setShowUrlInput","fileUrl","setFileUrl","urlInputRef","inputRef","useServerSideFetch","pasteURL","allowList","handleFileChange","newFile","File","URL","createObjectURL","renameFile","fileToChange","newName","type","lastModified","handleFileNameChange","e","updatedFileName","target","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","args","handleUrlSubmit","clientResponse","fetch","ok","Error","status","blob","fileName","decodeURIComponent","split","pop","file","_clientError","error","encodeURIComponent","serverResponse","_serverError","current","canRemoveUpload","update","delete","hasImageSizes","imageSizes","hasResizeOptions","Boolean","resizeOptions","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","acceptMimeTypes","mimeTypes","join","imageCacheTag","cacheTags","updatedAt","slots","filter","message","customUploadActions","doc","handleRemove","hideRemoveFile","hideFileInputOnCreate","buttonStyle","onClick","click","size","accept","hidden","ref","admin","components","controls","UploadControls","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 { DocumentSlots, FormState, SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { isImage } from 'payload/shared'\nimport React, { Fragment, 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, useFormProcessing } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/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 './index.scss'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\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 =\n isImage(mimeType) && mimeType !== 'image/svg+xml' && mimeType !== 'image/jxl'\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 const { getDocumentSlots } = useServerFunctions()\n const [documentSlots, setDocumentSlots] = React.useState<DocumentSlots>({})\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n const { id, docPermissions, savedDocumentData, setUploadStatus } = useDocumentInfo()\n const isFormSubmitting = useFormProcessing()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const [removedFile, setRemovedFile] = 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 useServerSideFetch =\n typeof uploadConfig?.pasteURL === 'object' && uploadConfig.pasteURL.allowList?.length > 0\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 setRemovedFile(true)\n handleFileChange(null)\n setFileSrc('')\n setFileUrl('')\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 || uploadConfig?.pasteURL === false) {\n return\n }\n\n setUploadStatus('uploading')\n try {\n // Attempt client-side fetch\n const clientResponse = await fetch(fileUrl)\n\n if (!clientResponse.ok) {\n throw new Error(`Fetch failed with status: ${clientResponse.status}`)\n }\n\n const blob = await clientResponse.blob()\n const fileName = decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange(file)\n setUploadStatus('idle')\n return // Exit if client-side fetch succeeds\n } catch (_clientError) {\n if (!useServerSideFetch) {\n // If server-side fetch is not enabled, show client-side error\n toast.error('Failed to fetch the file.')\n setUploadStatus('failed')\n return\n }\n }\n\n // Attempt server-side fetch if client-side fetch fails and useServerSideFetch is true\n try {\n const pasteURL = `/${collectionSlug}/paste-url${id ? `/${id}?` : '?'}src=${encodeURIComponent(fileUrl)}`\n const serverResponse = await fetch(`${serverURL}${api}${pasteURL}`)\n\n if (!serverResponse.ok) {\n throw new Error(`Fetch failed with status: ${serverResponse.status}`)\n }\n\n const blob = await serverResponse.blob()\n const fileName = decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange(file)\n setUploadStatus('idle')\n } catch (_serverError) {\n toast.error('The provided URL is not allowed.')\n setUploadStatus('failed')\n }\n }\n\n useEffect(() => {\n if (initialState?.file?.value instanceof File) {\n setFileSrc(URL.createObjectURL(initialState.file.value))\n setRemovedFile(false)\n }\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 useEffect(() => {\n if (isFormSubmitting) {\n setRemovedFile(false)\n }\n }, [isFormSubmitting])\n\n const canRemoveUpload =\n docPermissions?.update && 'delete' in docPermissions && docPermissions?.delete\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 const imageCacheTag = uploadConfig?.cacheTags && savedDocumentData?.updatedAt\n\n useEffect(() => {\n void (async () => {\n const slots = await getDocumentSlots({ collectionSlug })\n setDocumentSlots(slots)\n })()\n }, [getDocumentSlots, collectionSlug])\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} showError={showError} />\n {savedDocumentData && savedDocumentData.filename && !removedFile && (\n <FileDetails\n collectionSlug={collectionSlug}\n customUploadActions={customActions}\n doc={savedDocumentData}\n enableAdjustments={showCrop || showFocalPoint}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n hideRemoveFile={uploadConfig.hideRemoveFile}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n )}\n {((!uploadConfig.hideFileInputOnCreate && !savedDocumentData?.filename) || removedFile) && (\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 {uploadConfig?.pasteURL !== false && (\n <Fragment>\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 </Fragment>\n )}\n\n {uploadConfig?.admin?.components?.controls &&\n documentSlots?.UploadControls !== undefined && (\n <Fragment>{documentSlots.UploadControls}</Fragment>\n )}\n </div>\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 && savedDocumentData?.filename && !removedFile}\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 || savedDocumentData?.filename) && (\n <EditDepthProvider>\n <Drawer Header={null} slug={editDrawerSlug}>\n <EditUpload\n fileName={value?.name || savedDocumentData?.filename}\n fileSrc={savedDocumentData?.url || fileSrc}\n imageCacheTag={imageCacheTag}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || savedDocumentData?.focalX || 50,\n y: uploadEdits?.focalPoint?.y || savedDocumentData?.focalY || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </Drawer>\n </EditDepthProvider>\n )}\n {savedDocumentData && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: savedDocumentData.filename })}\n >\n <PreviewSizes\n doc={savedDocumentData}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n </Drawer>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}