@payloadcms/ui 3.0.0-canary.23fcb9e → 3.0.0-canary.294ea5c

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.
Files changed (140) hide show
  1. package/dist/elements/AddNewRelation/index.d.ts.map +1 -0
  2. package/dist/{fields/Relationship/AddNew → elements/AddNewRelation}/index.js +98 -82
  3. package/dist/elements/AddNewRelation/index.js.map +1 -0
  4. package/dist/elements/AddNewRelation/index.scss +42 -0
  5. package/dist/elements/AddNewRelation/types.d.ts +11 -0
  6. package/dist/elements/AddNewRelation/types.d.ts.map +1 -0
  7. package/dist/elements/AddNewRelation/types.js.map +1 -0
  8. package/dist/elements/AddNewRelation/useRelatedCollections.d.ts.map +1 -0
  9. package/dist/{fields/Relationship/AddNew → elements/AddNewRelation}/useRelatedCollections.js +1 -1
  10. package/dist/elements/AddNewRelation/useRelatedCollections.js.map +1 -0
  11. package/dist/elements/AppHeader/index.js +41 -80
  12. package/dist/elements/AppHeader/index.js.map +1 -1
  13. package/dist/elements/Autosave/index.js +148 -231
  14. package/dist/elements/Autosave/index.js.map +1 -1
  15. package/dist/elements/Button/index.js +86 -218
  16. package/dist/elements/Button/index.js.map +1 -1
  17. package/dist/elements/Collapsible/index.js +44 -62
  18. package/dist/elements/Collapsible/index.js.map +1 -1
  19. package/dist/elements/Collapsible/index.scss +15 -28
  20. package/dist/elements/CopyToClipboard/index.js +20 -54
  21. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  22. package/dist/elements/DocumentDrawer/DrawerContent.js +1 -1
  23. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  24. package/dist/elements/DocumentDrawer/index.js +1 -1
  25. package/dist/elements/DocumentDrawer/index.js.map +1 -1
  26. package/dist/elements/Dropzone/index.js +59 -119
  27. package/dist/elements/Dropzone/index.js.map +1 -1
  28. package/dist/elements/EditMany/index.js +124 -230
  29. package/dist/elements/EditMany/index.js.map +1 -1
  30. package/dist/elements/EditUpload/index.js +133 -206
  31. package/dist/elements/EditUpload/index.js.map +1 -1
  32. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts +20 -0
  33. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -0
  34. package/dist/elements/FileDetails/DraggableFileDetails/index.js +116 -0
  35. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -0
  36. package/dist/elements/FileDetails/DraggableFileDetails/index.scss +33 -0
  37. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts +17 -0
  38. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts.map +1 -0
  39. package/dist/elements/FileDetails/StaticFileDetails/index.js +71 -0
  40. package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -0
  41. package/dist/elements/FileDetails/{index.scss → StaticFileDetails/index.scss} +1 -1
  42. package/dist/elements/FileDetails/index.d.ts +19 -4
  43. package/dist/elements/FileDetails/index.d.ts.map +1 -1
  44. package/dist/elements/FileDetails/index.js +11 -62
  45. package/dist/elements/FileDetails/index.js.map +1 -1
  46. package/dist/elements/ListControls/index.d.ts.map +1 -1
  47. package/dist/elements/ListControls/index.js +91 -192
  48. package/dist/elements/ListControls/index.js.map +1 -1
  49. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  50. package/dist/elements/ListDrawer/DrawerContent.js +42 -31
  51. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  52. package/dist/elements/ListDrawer/index.d.ts.map +1 -1
  53. package/dist/elements/ListDrawer/index.js.map +1 -1
  54. package/dist/elements/ListDrawer/types.d.ts +4 -1
  55. package/dist/elements/ListDrawer/types.d.ts.map +1 -1
  56. package/dist/elements/ListDrawer/types.js.map +1 -1
  57. package/dist/elements/Nav/context.js +47 -83
  58. package/dist/elements/Nav/context.js.map +1 -1
  59. package/dist/elements/SaveButton/index.js +30 -81
  60. package/dist/elements/SaveButton/index.js.map +1 -1
  61. package/dist/elements/SaveDraftButton/index.js +54 -116
  62. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  63. package/dist/elements/SearchFilter/index.js +21 -77
  64. package/dist/elements/SearchFilter/index.js.map +1 -1
  65. package/dist/elements/SelectMany/index.d.ts +6 -0
  66. package/dist/elements/SelectMany/index.d.ts.map +1 -0
  67. package/dist/elements/SelectMany/index.js +29 -0
  68. package/dist/elements/SelectMany/index.js.map +1 -0
  69. package/dist/elements/Upload/index.js +130 -280
  70. package/dist/elements/Upload/index.js.map +1 -1
  71. package/dist/exports/client/{CodeEditor-C4FLUUO7.js → CodeEditor-MTP455NO.js} +2 -2
  72. package/dist/exports/client/chunk-NJHSEGFB.js +14 -0
  73. package/dist/exports/client/{chunk-UGBVRIVY.js.map → chunk-NJHSEGFB.js.map} +2 -2
  74. package/dist/exports/client/index.d.ts +1 -1
  75. package/dist/exports/client/index.d.ts.map +1 -1
  76. package/dist/exports/client/index.js +13 -13
  77. package/dist/exports/client/index.js.map +4 -4
  78. package/dist/fields/Relationship/index.d.ts.map +1 -1
  79. package/dist/fields/Relationship/index.js +319 -507
  80. package/dist/fields/Relationship/index.js.map +1 -1
  81. package/dist/fields/Upload/HasMany/index.d.ts +4 -0
  82. package/dist/fields/Upload/HasMany/index.d.ts.map +1 -0
  83. package/dist/fields/Upload/HasMany/index.js +238 -0
  84. package/dist/fields/Upload/HasMany/index.js.map +1 -0
  85. package/dist/fields/Upload/HasMany/index.scss +71 -0
  86. package/dist/fields/Upload/{Input.d.ts → HasOne/Input.d.ts} +1 -1
  87. package/dist/fields/Upload/HasOne/Input.d.ts.map +1 -0
  88. package/dist/fields/Upload/{Input.js → HasOne/Input.js} +12 -12
  89. package/dist/fields/Upload/HasOne/Input.js.map +1 -0
  90. package/dist/fields/Upload/HasOne/index.d.ts +12 -0
  91. package/dist/fields/Upload/HasOne/index.d.ts.map +1 -0
  92. package/dist/fields/Upload/HasOne/index.js +131 -0
  93. package/dist/fields/Upload/HasOne/index.js.map +1 -0
  94. package/dist/fields/Upload/{index.scss → HasOne/index.scss} +1 -1
  95. package/dist/fields/Upload/index.d.ts +4 -4
  96. package/dist/fields/Upload/index.d.ts.map +1 -1
  97. package/dist/fields/Upload/index.js +84 -98
  98. package/dist/fields/Upload/index.js.map +1 -1
  99. package/dist/forms/Submit/index.js +12 -28
  100. package/dist/forms/Submit/index.js.map +1 -1
  101. package/dist/forms/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
  102. package/dist/forms/buildStateFromSchema/addFieldStatePromise.js +1 -27
  103. package/dist/forms/buildStateFromSchema/addFieldStatePromise.js.map +1 -1
  104. package/dist/hooks/useDelay.js +15 -48
  105. package/dist/hooks/useDelay.js.map +1 -1
  106. package/dist/hooks/useDelayedRender.js +32 -71
  107. package/dist/hooks/useDelayedRender.js.map +1 -1
  108. package/dist/hooks/useIntersect.js +14 -20
  109. package/dist/hooks/useIntersect.js.map +1 -1
  110. package/dist/providers/Config/createClientConfig/collections.d.ts.map +1 -1
  111. package/dist/providers/Config/createClientConfig/collections.js +8 -6
  112. package/dist/providers/Config/createClientConfig/collections.js.map +1 -1
  113. package/dist/providers/ListInfo/index.d.ts +6 -0
  114. package/dist/providers/ListInfo/index.d.ts.map +1 -1
  115. package/dist/providers/ListInfo/index.js.map +1 -1
  116. package/dist/providers/Preferences/index.js +1 -3
  117. package/dist/providers/Preferences/index.js.map +1 -1
  118. package/dist/providers/Selection/index.d.ts +5 -3
  119. package/dist/providers/Selection/index.d.ts.map +1 -1
  120. package/dist/providers/Selection/index.js +102 -190
  121. package/dist/providers/Selection/index.js.map +1 -1
  122. package/dist/scss/app.scss +6 -6
  123. package/dist/scss/type.scss +4 -4
  124. package/dist/styles.css +1 -1
  125. package/package.json +8 -8
  126. package/dist/exports/client/chunk-UGBVRIVY.js +0 -14
  127. package/dist/fields/Relationship/AddNew/index.d.ts.map +0 -1
  128. package/dist/fields/Relationship/AddNew/index.js.map +0 -1
  129. package/dist/fields/Relationship/AddNew/index.scss +0 -28
  130. package/dist/fields/Relationship/AddNew/types.d.ts +0 -12
  131. package/dist/fields/Relationship/AddNew/types.d.ts.map +0 -1
  132. package/dist/fields/Relationship/AddNew/types.js.map +0 -1
  133. package/dist/fields/Relationship/AddNew/useRelatedCollections.d.ts.map +0 -1
  134. package/dist/fields/Relationship/AddNew/useRelatedCollections.js.map +0 -1
  135. package/dist/fields/Upload/Input.d.ts.map +0 -1
  136. package/dist/fields/Upload/Input.js.map +0 -1
  137. /package/dist/{fields/Relationship/AddNew → elements/AddNewRelation}/index.d.ts +0 -0
  138. /package/dist/{fields/Relationship/AddNew → elements/AddNewRelation}/types.js +0 -0
  139. /package/dist/{fields/Relationship/AddNew → elements/AddNewRelation}/useRelatedCollections.d.ts +0 -0
  140. /package/dist/exports/client/{CodeEditor-C4FLUUO7.js.map → CodeEditor-MTP455NO.js.map} +0 -0
@@ -90,7 +90,6 @@ export const UploadActions = t0 => {
90
90
  return t1;
91
91
  };
92
92
  export const Upload = props => {
93
- const $ = _c(52);
94
93
  const {
95
94
  collectionSlug,
96
95
  customActions,
@@ -111,316 +110,139 @@ export const Upload = props => {
111
110
  updateUploadEdits,
112
111
  uploadEdits
113
112
  } = useUploadEdits();
114
- let t0;
115
- if ($[0] !== initialState) {
116
- t0 = initialState || {};
117
- $[0] = initialState;
118
- $[1] = t0;
119
- } else {
120
- t0 = $[1];
121
- }
122
- let t1;
123
- if ($[2] !== t0) {
124
- t1 = reduceFieldsToValues(t0, true);
125
- $[2] = t0;
126
- $[3] = t1;
127
- } else {
128
- t1 = $[3];
129
- }
130
- const [doc, setDoc] = useState(t1);
113
+ const [doc, setDoc] = useState(reduceFieldsToValues(initialState || {}, true));
131
114
  const {
132
115
  docPermissions
133
116
  } = useDocumentInfo();
134
- let t2;
135
- if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
136
- t2 = {
137
- path: "file",
138
- validate
139
- };
140
- $[4] = t2;
141
- } else {
142
- t2 = $[4];
143
- }
144
117
  const {
145
118
  errorMessage,
146
119
  setValue,
147
120
  showError,
148
121
  value
149
- } = useField(t2);
122
+ } = useField({
123
+ path: 'file',
124
+ validate
125
+ });
150
126
  const [showUrlInput, setShowUrlInput] = useState(false);
151
- const [fileUrl, setFileUrl] = useState("");
127
+ const [fileUrl, setFileUrl] = useState('');
152
128
  const cursorPositionRef = useRef(null);
153
129
  const urlInputRef = useRef(null);
154
- let t3;
155
- if ($[5] !== setValue || $[6] !== onChange) {
156
- t3 = newFile => {
157
- if (newFile instanceof File) {
158
- setFileSrc(URL.createObjectURL(newFile));
159
- }
160
- setValue(newFile);
161
- setShowUrlInput(false);
162
- if (typeof onChange === "function") {
163
- onChange(newFile);
164
- }
165
- };
166
- $[5] = setValue;
167
- $[6] = onChange;
168
- $[7] = t3;
169
- } else {
170
- t3 = $[7];
171
- }
172
- const handleFileChange = t3;
130
+ const handleFileChange = useCallback(newFile => {
131
+ if (newFile instanceof File) {
132
+ setFileSrc(URL.createObjectURL(newFile));
133
+ }
134
+ setValue(newFile);
135
+ setShowUrlInput(false);
136
+ if (typeof onChange === 'function') {
137
+ onChange(newFile);
138
+ }
139
+ }, [onChange, setValue]);
173
140
  const handleFileNameChange = e => {
174
141
  const updatedFileName = e.target.value;
175
142
  const cursorPosition = e.target.selectionStart;
176
143
  cursorPositionRef.current = cursorPosition;
177
144
  if (value) {
178
145
  const fileValue = value;
146
+ // Creating a new File object with updated properties
179
147
  const newFile_0 = new File([fileValue], updatedFileName, {
180
148
  type: fileValue.type
181
149
  });
182
150
  handleFileChange(newFile_0);
183
151
  }
184
152
  };
185
- let t4;
186
- if ($[8] !== value) {
187
- t4 = [value];
188
- $[8] = value;
189
- $[9] = t4;
190
- } else {
191
- t4 = $[9];
192
- }
193
153
  useEffect(() => {
154
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
194
155
  const inputElement = document.querySelector(`.${baseClass}__filename`);
195
156
  if (inputElement && cursorPositionRef.current !== null) {
196
157
  inputElement.setSelectionRange(cursorPositionRef.current, cursorPositionRef.current);
197
158
  }
198
- }, t4);
199
- let t5;
200
- if ($[10] !== handleFileChange) {
201
- t5 = files => {
202
- const fileToUpload = files?.[0];
203
- handleFileChange(fileToUpload);
204
- };
205
- $[10] = handleFileChange;
206
- $[11] = t5;
207
- } else {
208
- t5 = $[11];
209
- }
210
- const handleFileSelection = t5;
211
- let t6;
212
- if ($[12] !== handleFileChange || $[13] !== resetUploadEdits) {
213
- t6 = () => {
214
- setReplacingFile(true);
215
- handleFileChange(null);
216
- setFileSrc("");
217
- setFileUrl("");
218
- setDoc({});
219
- resetUploadEdits();
220
- setShowUrlInput(false);
221
- };
222
- $[12] = handleFileChange;
223
- $[13] = resetUploadEdits;
224
- $[14] = t6;
225
- } else {
226
- t6 = $[14];
227
- }
228
- const handleFileRemoval = t6;
229
- let t7;
230
- if ($[15] !== setModified || $[16] !== updateUploadEdits) {
231
- t7 = args => {
232
- setModified(true);
233
- updateUploadEdits(args);
234
- };
235
- $[15] = setModified;
236
- $[16] = updateUploadEdits;
237
- $[17] = t7;
238
- } else {
239
- t7 = $[17];
240
- }
241
- const onEditsSave = t7;
242
- let t8;
243
- if ($[18] === Symbol.for("react.memo_cache_sentinel")) {
244
- t8 = () => {
245
- setShowUrlInput(prev => !prev);
246
- };
247
- $[18] = t8;
248
- } else {
249
- t8 = $[18];
250
- }
251
- const handlePasteUrlClick = t8;
252
- let t9;
253
- if ($[19] !== fileUrl || $[20] !== handleFileChange) {
254
- t9 = async () => {
255
- if (fileUrl) {
256
- ;
257
- try {
258
- const response = await fetch(fileUrl);
259
- const data = await response.blob();
260
- const fileName = fileUrl.split("/").pop();
261
- const file = new File([data], fileName, {
262
- type: data.type
263
- });
264
- handleFileChange(file);
265
- } catch (t10) {
266
- const e_0 = t10;
267
- toast.error(e_0.message);
268
- }
269
- }
270
- };
271
- $[19] = fileUrl;
272
- $[20] = handleFileChange;
273
- $[21] = t9;
274
- } else {
275
- t9 = $[21];
276
- }
277
- const handleUrlSubmit = t9;
278
- let t10;
279
- let t11;
280
- if ($[22] !== initialState) {
281
- t10 = () => {
282
- setDoc(reduceFieldsToValues(initialState || {}, true));
283
- if (initialState?.file?.value instanceof File) {
284
- setFileSrc(URL.createObjectURL(initialState.file.value));
159
+ }, [value]);
160
+ const handleFileSelection = useCallback(files => {
161
+ const fileToUpload = files?.[0];
162
+ handleFileChange(fileToUpload);
163
+ }, [handleFileChange]);
164
+ const handleFileRemoval = useCallback(() => {
165
+ setReplacingFile(true);
166
+ handleFileChange(null);
167
+ setFileSrc('');
168
+ setFileUrl('');
169
+ setDoc({});
170
+ resetUploadEdits();
171
+ setShowUrlInput(false);
172
+ }, [handleFileChange, resetUploadEdits]);
173
+ const onEditsSave = useCallback(args => {
174
+ setModified(true);
175
+ updateUploadEdits(args);
176
+ }, [setModified, updateUploadEdits]);
177
+ const handlePasteUrlClick = () => {
178
+ setShowUrlInput(prev => !prev);
179
+ };
180
+ const handleUrlSubmit = async () => {
181
+ if (fileUrl) {
182
+ try {
183
+ const response = await fetch(fileUrl);
184
+ const data = await response.blob();
185
+ // Extract the file name from the URL
186
+ const fileName = fileUrl.split('/').pop();
187
+ // Create a new File object from the Blob data
188
+ const file = new File([data], fileName, {
189
+ type: data.type
190
+ });
191
+ handleFileChange(file);
192
+ } catch (e_0) {
193
+ toast.error(e_0.message);
285
194
  }
286
- setReplacingFile(false);
287
- };
288
- t11 = [initialState];
289
- $[22] = initialState;
290
- $[23] = t10;
291
- $[24] = t11;
292
- } else {
293
- t10 = $[23];
294
- t11 = $[24];
295
- }
296
- useEffect(t10, t11);
297
- let t12;
298
- if ($[25] !== showUrlInput) {
299
- t12 = [showUrlInput];
300
- $[25] = showUrlInput;
301
- $[26] = t12;
302
- } else {
303
- t12 = $[26];
304
- }
195
+ }
196
+ };
197
+ useEffect(() => {
198
+ setDoc(reduceFieldsToValues(initialState || {}, true));
199
+ if (initialState?.file?.value instanceof File) {
200
+ setFileSrc(URL.createObjectURL(initialState.file.value));
201
+ }
202
+ setReplacingFile(false);
203
+ }, [initialState]);
305
204
  useEffect(() => {
306
205
  if (showUrlInput && urlInputRef.current) {
307
- urlInputRef.current.focus();
206
+ urlInputRef.current.focus() // Focus on the remote-url input field when showUrlInput is true
207
+ ;
308
208
  }
309
- }, t12);
310
- const canRemoveUpload = docPermissions?.update?.permission && "delete" in docPermissions && docPermissions?.delete?.permission;
209
+ }, [showUrlInput]);
210
+ const canRemoveUpload = docPermissions?.update?.permission && 'delete' in docPermissions && docPermissions?.delete?.permission;
311
211
  const hasImageSizes = uploadConfig?.imageSizes?.length > 0;
312
212
  const hasResizeOptions = Boolean(uploadConfig?.resizeOptions);
213
+ // Explicity check if set to true, default is undefined
313
214
  const focalPointEnabled = uploadConfig?.focalPoint === true;
314
215
  const {
315
- crop: t13,
316
- focalPoint: t14
216
+ crop: showCrop = true,
217
+ focalPoint = true
317
218
  } = uploadConfig;
318
- const showCrop = t13 === undefined ? true : t13;
319
- const focalPoint = t14 === undefined ? true : t14;
320
219
  const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled);
321
- let t15;
322
- if ($[27] === Symbol.for("react.memo_cache_sentinel")) {
323
- t15 = [fieldBaseClass, baseClass].filter(Boolean);
324
- $[27] = t15;
325
- } else {
326
- t15 = $[27];
327
- }
328
- let t16;
329
- if ($[28] !== doc || $[29] !== replacingFile || $[30] !== showCrop || $[31] !== showFocalPoint || $[32] !== canRemoveUpload || $[33] !== handleFileRemoval || $[34] !== collectionSlug || $[35] !== customActions || $[36] !== hasImageSizes || $[37] !== uploadConfig) {
330
- t16 = doc.filename && !replacingFile && _jsx(FileDetails, {
331
- collectionSlug,
220
+ return /*#__PURE__*/_jsxs("div", {
221
+ className: [fieldBaseClass, baseClass].filter(Boolean).join(' '),
222
+ children: [/*#__PURE__*/_jsx(FieldError, {
223
+ field: null,
224
+ message: errorMessage,
225
+ showError: showError
226
+ }), doc.filename && !replacingFile && /*#__PURE__*/_jsx(FileDetails, {
227
+ collectionSlug: collectionSlug,
332
228
  customUploadActions: customActions,
333
- doc,
229
+ doc: doc,
334
230
  enableAdjustments: showCrop || showFocalPoint,
335
231
  handleRemove: canRemoveUpload ? handleFileRemoval : undefined,
336
- hasImageSizes,
232
+ hasImageSizes: hasImageSizes,
337
233
  imageCacheTag: doc.updatedAt,
338
- uploadConfig
339
- });
340
- $[28] = doc;
341
- $[29] = replacingFile;
342
- $[30] = showCrop;
343
- $[31] = showFocalPoint;
344
- $[32] = canRemoveUpload;
345
- $[33] = handleFileRemoval;
346
- $[34] = collectionSlug;
347
- $[35] = customActions;
348
- $[36] = hasImageSizes;
349
- $[37] = uploadConfig;
350
- $[38] = t16;
351
- } else {
352
- t16 = $[38];
353
- }
354
- let t17;
355
- if ($[39] !== value || $[40] !== doc || $[41] !== fileSrc || $[42] !== uploadEdits || $[43] !== onEditsSave || $[44] !== showCrop || $[45] !== showFocalPoint) {
356
- t17 = (value || doc.filename) && _jsx(Drawer, {
357
- Header: null,
358
- slug: editDrawerSlug,
359
- children: _jsx(EditUpload, {
360
- fileName: value?.name || doc?.filename,
361
- fileSrc: doc?.url || fileSrc,
362
- imageCacheTag: doc.updatedAt,
363
- initialCrop: uploadEdits?.crop ?? undefined,
364
- initialFocalPoint: {
365
- x: uploadEdits?.focalPoint?.x || doc.focalX || 50,
366
- y: uploadEdits?.focalPoint?.y || doc.focalY || 50
367
- },
368
- onSave: onEditsSave,
369
- showCrop,
370
- showFocalPoint
371
- })
372
- });
373
- $[39] = value;
374
- $[40] = doc;
375
- $[41] = fileSrc;
376
- $[42] = uploadEdits;
377
- $[43] = onEditsSave;
378
- $[44] = showCrop;
379
- $[45] = showFocalPoint;
380
- $[46] = t17;
381
- } else {
382
- t17 = $[46];
383
- }
384
- let t18;
385
- if ($[47] !== doc || $[48] !== hasImageSizes || $[49] !== t || $[50] !== uploadConfig) {
386
- t18 = doc && hasImageSizes && _jsx(Drawer, {
387
- className: `${baseClass}__previewDrawer`,
388
- hoverTitle: true,
389
- slug: sizePreviewSlug,
390
- title: t("upload:sizesFor", {
391
- label: doc?.filename
392
- }),
393
- children: _jsx(PreviewSizes, {
394
- doc,
395
- imageCacheTag: doc.updatedAt,
396
- uploadConfig
397
- })
398
- });
399
- $[47] = doc;
400
- $[48] = hasImageSizes;
401
- $[49] = t;
402
- $[50] = uploadConfig;
403
- $[51] = t18;
404
- } else {
405
- t18 = $[51];
406
- }
407
- return _jsxs("div", {
408
- className: t15.join(" "),
409
- children: [_jsx(FieldError, {
410
- field: null,
411
- message: errorMessage,
412
- showError
413
- }), t16, (!doc.filename || replacingFile) && _jsxs("div", {
234
+ uploadConfig: uploadConfig
235
+ }), (!doc.filename || replacingFile) && /*#__PURE__*/_jsxs("div", {
414
236
  className: `${baseClass}__upload`,
415
- children: [!value && !showUrlInput && _jsx(Dropzone, {
237
+ children: [!value && !showUrlInput && /*#__PURE__*/_jsx(Dropzone, {
416
238
  className: `${baseClass}__dropzone`,
417
239
  mimeTypes: uploadConfig?.mimeTypes,
418
240
  onChange: handleFileSelection,
419
241
  onPasteUrlClick: handlePasteUrlClick
420
- }), showUrlInput && _jsxs(React.Fragment, {
421
- children: [_jsxs("div", {
242
+ }), showUrlInput && /*#__PURE__*/_jsxs(React.Fragment, {
243
+ children: [/*#__PURE__*/_jsxs("div", {
422
244
  className: `${baseClass}__remote-file-wrap`,
423
- children: [_jsx("input", {
245
+ children: [/*#__PURE__*/_jsx("input", {
424
246
  className: `${baseClass}__remote-file`,
425
247
  onChange: e_1 => {
426
248
  setFileUrl(e_1.target.value);
@@ -428,57 +250,85 @@ export const Upload = props => {
428
250
  ref: urlInputRef,
429
251
  type: "text",
430
252
  value: fileUrl
431
- }), _jsx("div", {
253
+ }), /*#__PURE__*/_jsx("div", {
432
254
  className: `${baseClass}__add-file-wrap`,
433
- children: _jsx("button", {
255
+ children: /*#__PURE__*/_jsx("button", {
434
256
  className: `${baseClass}__add-file`,
435
257
  onClick: () => {
436
- handleUrlSubmit();
258
+ void handleUrlSubmit();
437
259
  },
438
260
  type: "button",
439
- children: t("upload:addFile")
261
+ children: t('upload:addFile')
440
262
  })
441
263
  })]
442
- }), _jsx(Button, {
264
+ }), /*#__PURE__*/_jsx(Button, {
443
265
  buttonStyle: "icon-label",
444
266
  className: `${baseClass}__remove`,
445
267
  icon: "x",
446
268
  iconStyle: "with-border",
447
269
  onClick: handleFileRemoval,
448
270
  round: true,
449
- tooltip: t("general:cancel")
271
+ tooltip: t('general:cancel')
450
272
  })]
451
- }), value && fileSrc && _jsxs(React.Fragment, {
452
- children: [_jsx("div", {
273
+ }), value && fileSrc && /*#__PURE__*/_jsxs(React.Fragment, {
274
+ children: [/*#__PURE__*/_jsx("div", {
453
275
  className: `${baseClass}__thumbnail-wrap`,
454
- children: _jsx(Thumbnail, {
455
- collectionSlug,
276
+ children: /*#__PURE__*/_jsx(Thumbnail, {
277
+ collectionSlug: collectionSlug,
456
278
  fileSrc: isImage(value.type) ? fileSrc : null
457
279
  })
458
- }), _jsxs("div", {
280
+ }), /*#__PURE__*/_jsxs("div", {
459
281
  className: `${baseClass}__file-adjustments`,
460
- children: [_jsx("input", {
282
+ children: [/*#__PURE__*/_jsx("input", {
461
283
  className: `${baseClass}__filename`,
462
284
  onChange: handleFileNameChange,
463
285
  type: "text",
464
286
  value: value.name
465
- }), _jsx(UploadActions, {
466
- customActions,
287
+ }), /*#__PURE__*/_jsx(UploadActions, {
288
+ customActions: customActions,
467
289
  enableAdjustments: showCrop || showFocalPoint,
468
290
  enablePreviewSizes: hasImageSizes && doc.filename && !replacingFile,
469
291
  mimeType: value.type
470
292
  })]
471
- }), _jsx(Button, {
293
+ }), /*#__PURE__*/_jsx(Button, {
472
294
  buttonStyle: "icon-label",
473
295
  className: `${baseClass}__remove`,
474
296
  icon: "x",
475
297
  iconStyle: "with-border",
476
298
  onClick: handleFileRemoval,
477
299
  round: true,
478
- tooltip: t("general:cancel")
300
+ tooltip: t('general:cancel')
479
301
  })]
480
302
  })]
481
- }), t17, t18]
303
+ }), (value || doc.filename) && /*#__PURE__*/_jsx(Drawer, {
304
+ Header: null,
305
+ slug: editDrawerSlug,
306
+ children: /*#__PURE__*/_jsx(EditUpload, {
307
+ fileName: value?.name || doc?.filename,
308
+ fileSrc: doc?.url || fileSrc,
309
+ imageCacheTag: doc.updatedAt,
310
+ initialCrop: uploadEdits?.crop ?? undefined,
311
+ initialFocalPoint: {
312
+ x: uploadEdits?.focalPoint?.x || doc.focalX || 50,
313
+ y: uploadEdits?.focalPoint?.y || doc.focalY || 50
314
+ },
315
+ onSave: onEditsSave,
316
+ showCrop: showCrop,
317
+ showFocalPoint: showFocalPoint
318
+ })
319
+ }), doc && hasImageSizes && /*#__PURE__*/_jsx(Drawer, {
320
+ className: `${baseClass}__previewDrawer`,
321
+ hoverTitle: true,
322
+ slug: sizePreviewSlug,
323
+ title: t('upload:sizesFor', {
324
+ label: doc?.filename
325
+ }),
326
+ children: /*#__PURE__*/_jsx(PreviewSizes, {
327
+ doc: doc,
328
+ imageCacheTag: doc.updatedAt,
329
+ uploadConfig: uploadConfig
330
+ })
331
+ })]
482
332
  });
483
333
  };
484
334
  function _temp(CustomAction, i) {
@@ -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","replacingFile","setReplacingFile","fileSrc","setFileSrc","setModified","resetUploadEdits","updateUploadEdits","uploadEdits","doc","setDoc","docPermissions","path","errorMessage","setValue","showError","showUrlInput","setShowUrlInput","fileUrl","setFileUrl","cursorPositionRef","urlInputRef","newFile","File","URL","createObjectURL","handleFileChange","handleFileNameChange","e","updatedFileName","target","cursorPosition","selectionStart","current","fileValue","newFile_0","type","t4","inputElement","document","querySelector","setSelectionRange","t5","files","fileToUpload","handleFileSelection","t6","handleFileRemoval","t7","args","onEditsSave","t8","prev","handlePasteUrlClick","t9","response","fetch","data","blob","fileName","split","pop","file","t10","error","message","handleUrlSubmit","t11","t12","focus","canRemoveUpload","update","permission","delete","hasImageSizes","imageSizes","hasResizeOptions","Boolean","resizeOptions","focalPointEnabled","focalPoint","crop","t13","t14","showCrop","showFocalPoint","t15","filter","t16","filename","customUploadActions","handleRemove","imageCacheTag","updatedAt","t17","Header","name","url","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","t18","hoverTitle","title","label","join","field","mimeTypes","onPasteUrlClick","e_1","ref","onClick","buttonStyle","icon","iconStyle","round","tooltip","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)) return null\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 [replacingFile, setReplacingFile] = useState(false)\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n const [doc, setDoc] = useState(reduceFieldsToValues(initialState || {}, true))\n const { docPermissions } = useDocumentInfo()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const [showUrlInput, setShowUrlInput] = useState(false)\n const [fileUrl, setFileUrl] = useState<string>('')\n\n const cursorPositionRef = useRef(null)\n const urlInputRef = 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 handleFileNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n const cursorPosition = e.target.selectionStart\n\n cursorPositionRef.current = cursorPosition\n\n if (value) {\n const fileValue = value\n // Creating a new File object with updated properties\n const newFile = new File([fileValue], updatedFileName, { type: fileValue.type })\n handleFileChange(newFile)\n }\n }\n\n useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n const inputElement = document.querySelector(`.${baseClass}__filename`) as HTMLInputElement\n if (inputElement && cursorPositionRef.current !== null) {\n inputElement.setSelectionRange(cursorPositionRef.current, cursorPositionRef.current)\n }\n }, [value])\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 handlePasteUrlClick = () => {\n setShowUrlInput((prev) => !prev)\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\n className={`${baseClass}__dropzone`}\n mimeTypes={uploadConfig?.mimeTypes}\n onChange={handleFileSelection}\n onPasteUrlClick={handlePasteUrlClick}\n />\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={handleFileRemoval}\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={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","replacingFile","setReplacingFile","fileSrc","setFileSrc","setModified","resetUploadEdits","updateUploadEdits","uploadEdits","doc","setDoc","docPermissions","errorMessage","setValue","showError","path","showUrlInput","setShowUrlInput","fileUrl","setFileUrl","cursorPositionRef","urlInputRef","handleFileChange","newFile","File","URL","createObjectURL","handleFileNameChange","e","updatedFileName","target","cursorPosition","selectionStart","current","fileValue","type","inputElement","document","querySelector","setSelectionRange","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","args","handlePasteUrlClick","prev","handleUrlSubmit","response","fetch","data","blob","fileName","split","pop","file","error","message","focus","canRemoveUpload","update","permission","delete","hasImageSizes","imageSizes","hasResizeOptions","Boolean","resizeOptions","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","filter","join","field","filename","customUploadActions","handleRemove","imageCacheTag","updatedAt","mimeTypes","onPasteUrlClick","ref","onClick","buttonStyle","icon","iconStyle","round","tooltip","name","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)) return null\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 [replacingFile, setReplacingFile] = useState(false)\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n const [doc, setDoc] = useState(reduceFieldsToValues(initialState || {}, true))\n const { docPermissions } = useDocumentInfo()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const [showUrlInput, setShowUrlInput] = useState(false)\n const [fileUrl, setFileUrl] = useState<string>('')\n\n const cursorPositionRef = useRef(null)\n const urlInputRef = 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 handleFileNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n const cursorPosition = e.target.selectionStart\n\n cursorPositionRef.current = cursorPosition\n\n if (value) {\n const fileValue = value\n // Creating a new File object with updated properties\n const newFile = new File([fileValue], updatedFileName, { type: fileValue.type })\n handleFileChange(newFile)\n }\n }\n\n useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n const inputElement = document.querySelector(`.${baseClass}__filename`) as HTMLInputElement\n if (inputElement && cursorPositionRef.current !== null) {\n inputElement.setSelectionRange(cursorPositionRef.current, cursorPositionRef.current)\n }\n }, [value])\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 handlePasteUrlClick = () => {\n setShowUrlInput((prev) => !prev)\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\n className={`${baseClass}__dropzone`}\n mimeTypes={uploadConfig?.mimeTypes}\n onChange={handleFileSelection}\n onPasteUrlClick={handlePasteUrlClick}\n />\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={handleFileRemoval}\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={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":[]}