@payloadcms/ui 3.0.0-beta.90 → 3.0.0-beta.92
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/AddNewRelation/index.d.ts.map +1 -1
- package/dist/elements/AddNewRelation/index.js +1 -1
- package/dist/elements/AddNewRelation/index.js.map +1 -1
- package/dist/elements/AddNewRelation/index.scss +14 -4
- package/dist/elements/AppHeader/index.js +41 -80
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/Autosave/index.js +148 -231
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/Button/index.js +86 -218
- package/dist/elements/Button/index.js.map +1 -1
- package/dist/elements/Collapsible/index.js +44 -62
- package/dist/elements/Collapsible/index.js.map +1 -1
- package/dist/elements/Collapsible/index.scss +15 -28
- package/dist/elements/CopyToClipboard/index.js +20 -54
- package/dist/elements/CopyToClipboard/index.js.map +1 -1
- package/dist/elements/Dropzone/index.js +59 -119
- package/dist/elements/Dropzone/index.js.map +1 -1
- package/dist/elements/EditMany/index.js +124 -230
- package/dist/elements/EditMany/index.js.map +1 -1
- package/dist/elements/EditUpload/index.js +133 -206
- package/dist/elements/EditUpload/index.js.map +1 -1
- package/dist/elements/ListControls/index.js +82 -188
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/Nav/context.js +47 -83
- package/dist/elements/Nav/context.js.map +1 -1
- package/dist/elements/SaveButton/index.js +30 -81
- package/dist/elements/SaveButton/index.js.map +1 -1
- package/dist/elements/SaveDraftButton/index.js +54 -116
- package/dist/elements/SaveDraftButton/index.js.map +1 -1
- package/dist/elements/SearchFilter/index.js +21 -77
- package/dist/elements/SearchFilter/index.js.map +1 -1
- package/dist/elements/Upload/index.js +130 -280
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/exports/client/{CodeEditor-C4FLUUO7.js → CodeEditor-MTP455NO.js} +2 -2
- package/dist/exports/client/chunk-NJHSEGFB.js +14 -0
- package/dist/exports/client/{chunk-UGBVRIVY.js.map → chunk-NJHSEGFB.js.map} +2 -2
- package/dist/exports/client/index.d.ts +1 -1
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +19 -19
- package/dist/exports/client/index.js.map +3 -3
- package/dist/fields/Relationship/index.js +318 -504
- package/dist/fields/Relationship/index.js.map +1 -1
- package/dist/fields/Upload/HasMany/index.d.ts.map +1 -1
- package/dist/fields/Upload/HasMany/index.js +192 -422
- package/dist/fields/Upload/HasMany/index.js.map +1 -1
- package/dist/fields/Upload/HasMany/index.scss +19 -1
- package/dist/forms/Submit/index.js +12 -28
- package/dist/forms/Submit/index.js.map +1 -1
- package/dist/hooks/useDelay.js +15 -48
- package/dist/hooks/useDelay.js.map +1 -1
- package/dist/hooks/useDelayedRender.js +32 -71
- package/dist/hooks/useDelayedRender.js.map +1 -1
- package/dist/hooks/useIntersect.js +14 -20
- package/dist/hooks/useIntersect.js.map +1 -1
- package/dist/providers/Config/createClientConfig/collections.d.ts.map +1 -1
- package/dist/providers/Config/createClientConfig/collections.js +8 -6
- package/dist/providers/Config/createClientConfig/collections.js.map +1 -1
- package/dist/providers/Preferences/index.js +1 -3
- package/dist/providers/Preferences/index.js.map +1 -1
- package/dist/providers/Selection/index.js +102 -190
- package/dist/providers/Selection/index.js.map +1 -1
- package/dist/scss/app.scss +6 -6
- package/dist/scss/type.scss +4 -4
- package/dist/styles.css +1 -1
- package/package.json +9 -9
- package/dist/exports/client/chunk-UGBVRIVY.js +0 -14
- /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
|
-
|
|
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(
|
|
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
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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
|
-
},
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
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
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
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
|
-
},
|
|
310
|
-
const canRemoveUpload = docPermissions?.update?.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:
|
|
316
|
-
focalPoint
|
|
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
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
300
|
+
tooltip: t('general:cancel')
|
|
479
301
|
})]
|
|
480
302
|
})]
|
|
481
|
-
}),
|
|
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":[]}
|