@payloadcms/ui 3.44.0-canary.10 → 3.44.0-canary.2

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 (82) hide show
  1. package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
  2. package/dist/elements/BulkUpload/FileSidebar/index.js +29 -74
  3. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  4. package/dist/elements/BulkUpload/FileSidebar/index.scss +4 -5
  5. package/dist/elements/BulkUpload/FormsManager/index.d.ts +1 -0
  6. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  7. package/dist/elements/BulkUpload/FormsManager/index.js +64 -37
  8. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  9. package/dist/elements/BulkUpload/FormsManager/reducer.d.ts +0 -1
  10. package/dist/elements/BulkUpload/FormsManager/reducer.d.ts.map +1 -1
  11. package/dist/elements/BulkUpload/FormsManager/reducer.js +0 -1
  12. package/dist/elements/BulkUpload/FormsManager/reducer.js.map +1 -1
  13. package/dist/elements/BulkUpload/index.scss +0 -0
  14. package/dist/elements/EditMany/DrawerContent.d.ts +1 -5
  15. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  16. package/dist/elements/EditMany/DrawerContent.js +1 -5
  17. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  18. package/dist/elements/EditMany/index.d.ts +0 -1
  19. package/dist/elements/EditMany/index.d.ts.map +1 -1
  20. package/dist/elements/EditMany/index.js +18 -32
  21. package/dist/elements/EditMany/index.js.map +1 -1
  22. package/dist/elements/EmailAndUsername/index.d.ts +0 -1
  23. package/dist/elements/EmailAndUsername/index.d.ts.map +1 -1
  24. package/dist/elements/EmailAndUsername/index.js +30 -64
  25. package/dist/elements/EmailAndUsername/index.js.map +1 -1
  26. package/dist/elements/PublishMany/DrawerContent.d.ts +0 -1
  27. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  28. package/dist/elements/PublishMany/DrawerContent.js +1 -5
  29. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  30. package/dist/elements/PublishMany/index.d.ts +0 -1
  31. package/dist/elements/PublishMany/index.d.ts.map +1 -1
  32. package/dist/elements/PublishMany/index.js +17 -31
  33. package/dist/elements/PublishMany/index.js.map +1 -1
  34. package/dist/elements/ShimmerEffect/index.d.ts +0 -2
  35. package/dist/elements/ShimmerEffect/index.d.ts.map +1 -1
  36. package/dist/elements/ShimmerEffect/index.js +3 -5
  37. package/dist/elements/ShimmerEffect/index.js.map +1 -1
  38. package/dist/elements/Thumbnail/createThumbnail.d.ts.map +1 -1
  39. package/dist/elements/Thumbnail/createThumbnail.js +2 -8
  40. package/dist/elements/Thumbnail/createThumbnail.js.map +1 -1
  41. package/dist/elements/UnpublishMany/DrawerContent.d.ts +0 -1
  42. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  43. package/dist/elements/UnpublishMany/DrawerContent.js +1 -5
  44. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  45. package/dist/elements/UnpublishMany/index.d.ts +0 -1
  46. package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
  47. package/dist/elements/UnpublishMany/index.js +17 -31
  48. package/dist/elements/UnpublishMany/index.js.map +1 -1
  49. package/dist/exports/client/{CodeEditor-YP63NRLU.js → CodeEditor-Z3ZZJH7C.js} +2 -2
  50. package/dist/exports/client/{chunk-5EP6VERX.js → chunk-CNCOIY3Y.js} +4 -4
  51. package/dist/exports/client/{chunk-5EP6VERX.js.map → chunk-CNCOIY3Y.js.map} +3 -3
  52. package/dist/exports/client/index.d.ts +0 -2
  53. package/dist/exports/client/index.d.ts.map +1 -1
  54. package/dist/exports/client/index.js +16 -16
  55. package/dist/exports/client/index.js.map +4 -4
  56. package/dist/fields/Checkbox/index.d.ts.map +1 -1
  57. package/dist/fields/Checkbox/index.js +0 -9
  58. package/dist/fields/Checkbox/index.js.map +1 -1
  59. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  60. package/dist/forms/Form/fieldReducer.js +0 -5
  61. package/dist/forms/Form/fieldReducer.js.map +1 -1
  62. package/dist/forms/useField/index.d.ts.map +1 -1
  63. package/dist/forms/useField/index.js +1 -2
  64. package/dist/forms/useField/index.js.map +1 -1
  65. package/dist/styles.css +1 -1
  66. package/dist/utilities/getFolderResultsComponentAndData.d.ts.map +1 -1
  67. package/dist/utilities/getFolderResultsComponentAndData.js +2 -1
  68. package/dist/utilities/getFolderResultsComponentAndData.js.map +1 -1
  69. package/dist/views/CollectionFolder/index.js +1 -1
  70. package/dist/views/CollectionFolder/index.js.map +1 -1
  71. package/dist/views/Edit/Auth/index.d.ts.map +1 -1
  72. package/dist/views/Edit/Auth/index.js +136 -163
  73. package/dist/views/Edit/Auth/index.js.map +1 -1
  74. package/dist/views/Edit/SetDocumentTitle/index.d.ts.map +1 -1
  75. package/dist/views/Edit/SetDocumentTitle/index.js +21 -24
  76. package/dist/views/Edit/SetDocumentTitle/index.js.map +1 -1
  77. package/dist/views/List/ListSelection/index.d.ts.map +1 -1
  78. package/dist/views/List/ListSelection/index.js +18 -31
  79. package/dist/views/List/ListSelection/index.js.map +1 -1
  80. package/package.json +5 -5
  81. package/dist/elements/EmailAndUsername/index.scss +0 -9
  82. /package/dist/exports/client/{CodeEditor-YP63NRLU.js.map → CodeEditor-Z3ZZJH7C.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FileSidebar/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAA;AAiBzB,OAAO,cAAc,CAAA;AAMrB,wBAAgB,WAAW,sBA0K1B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FileSidebar/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAA;AAazB,OAAO,cAAc,CAAA;AASrB,wBAAgB,WAAW,sBA8K1B"}
@@ -15,17 +15,16 @@ import { Drawer } from '../../Drawer/index.js';
15
15
  import { ErrorPill } from '../../ErrorPill/index.js';
16
16
  import { Pill } from '../../Pill/index.js';
17
17
  import { ShimmerEffect } from '../../ShimmerEffect/index.js';
18
- import { createThumbnail } from '../../Thumbnail/createThumbnail.js';
19
18
  import { Thumbnail } from '../../Thumbnail/index.js';
20
19
  import { Actions } from '../ActionsBar/index.js';
20
+ import './index.scss';
21
21
  import { AddFilesView } from '../AddFilesView/index.js';
22
22
  import { useFormsManager } from '../FormsManager/index.js';
23
23
  import { useBulkUpload } from '../index.js';
24
- import './index.scss';
25
24
  const addMoreFilesDrawerSlug = 'bulk-upload-drawer--add-more-files';
26
25
  const baseClass = 'file-selections';
27
26
  export function FileSidebar() {
28
- const $ = _c(34);
27
+ const $ = _c(36);
29
28
  const {
30
29
  activeIndex,
31
30
  addFiles,
@@ -33,6 +32,7 @@ export function FileSidebar() {
33
32
  isInitializing,
34
33
  removeFile,
35
34
  setActiveIndex,
35
+ thumbnailUrls,
36
36
  totalErrorCount
37
37
  } = useFormsManager();
38
38
  const {
@@ -88,28 +88,27 @@ export function FileSidebar() {
88
88
  }
89
89
  const t4 = t3.join(" ");
90
90
  let t5;
91
- if ($[7] !== activeIndex || $[8] !== breakpoints.m || $[9] !== closeModal || $[10] !== forms || $[11] !== handleAddFiles || $[12] !== handleRemoveFile || $[13] !== i18n || $[14] !== initialFiles || $[15] !== isInitializing || $[16] !== maxFiles || $[17] !== openModal || $[18] !== setActiveIndex || $[19] !== showFiles || $[20] !== t || $[21] !== t4 || $[22] !== totalErrorCount || $[23] !== totalFileCount) {
91
+ if ($[7] !== activeIndex || $[8] !== breakpoints.m || $[9] !== closeModal || $[10] !== forms || $[11] !== handleAddFiles || $[12] !== handleRemoveFile || $[13] !== i18n || $[14] !== initialFiles || $[15] !== isInitializing || $[16] !== maxFiles || $[17] !== openModal || $[18] !== setActiveIndex || $[19] !== showFiles || $[20] !== t || $[21] !== t4 || $[22] !== thumbnailUrls || $[23] !== totalErrorCount || $[24] !== totalFileCount) {
92
92
  let t6;
93
- if ($[25] === Symbol.for("react.memo_cache_sentinel")) {
93
+ if ($[26] === Symbol.for("react.memo_cache_sentinel")) {
94
94
  t6 = () => setShowFiles(_temp2);
95
- $[25] = t6;
95
+ $[26] = t6;
96
96
  } else {
97
- t6 = $[25];
97
+ t6 = $[26];
98
98
  }
99
99
  let t7;
100
- if ($[26] !== closeModal) {
100
+ if ($[27] !== closeModal) {
101
101
  t7 = () => closeModal(addMoreFilesDrawerSlug);
102
- $[26] = closeModal;
103
- $[27] = t7;
102
+ $[27] = closeModal;
103
+ $[28] = t7;
104
104
  } else {
105
- t7 = $[27];
105
+ t7 = $[28];
106
106
  }
107
107
  let t8;
108
- if ($[28] !== activeIndex || $[29] !== handleRemoveFile || $[30] !== i18n || $[31] !== setActiveIndex || $[32] !== t) {
108
+ if ($[29] !== activeIndex || $[30] !== handleRemoveFile || $[31] !== i18n || $[32] !== setActiveIndex || $[33] !== t || $[34] !== thumbnailUrls) {
109
109
  t8 = (t9, index_0) => {
110
110
  const {
111
111
  errorCount,
112
- formID,
113
112
  formState
114
113
  } = t9;
115
114
  const currentFile = formState?.file?.value || {};
@@ -119,9 +118,9 @@ export function FileSidebar() {
119
118
  className: `${baseClass}__fileRow`,
120
119
  onClick: () => setActiveIndex(index_0),
121
120
  type: "button",
122
- children: [_jsx(SidebarThumbnail, {
123
- file: currentFile,
124
- formID
121
+ children: [_jsx(Thumbnail, {
122
+ className: `${baseClass}__thumbnail`,
123
+ fileSrc: isImage(currentFile.type) ? thumbnailUrls[index_0] : null
125
124
  }), _jsx("div", {
126
125
  className: `${baseClass}__fileDetails`,
127
126
  children: _jsx("p", {
@@ -147,16 +146,17 @@ export function FileSidebar() {
147
146
  type: "button",
148
147
  children: _jsx(XIcon, {})
149
148
  })]
150
- }, formID);
149
+ }, index_0);
151
150
  };
152
- $[28] = activeIndex;
153
- $[29] = handleRemoveFile;
154
- $[30] = i18n;
155
- $[31] = setActiveIndex;
156
- $[32] = t;
157
- $[33] = t8;
151
+ $[29] = activeIndex;
152
+ $[30] = handleRemoveFile;
153
+ $[31] = i18n;
154
+ $[32] = setActiveIndex;
155
+ $[33] = t;
156
+ $[34] = thumbnailUrls;
157
+ $[35] = t8;
158
158
  } else {
159
- t8 = $[33];
159
+ t8 = $[35];
160
160
  }
161
161
  t5 = _jsxs("div", {
162
162
  className: t4,
@@ -238,11 +238,12 @@ export function FileSidebar() {
238
238
  $[19] = showFiles;
239
239
  $[20] = t;
240
240
  $[21] = t4;
241
- $[22] = totalErrorCount;
242
- $[23] = totalFileCount;
243
- $[24] = t5;
241
+ $[22] = thumbnailUrls;
242
+ $[23] = totalErrorCount;
243
+ $[24] = totalFileCount;
244
+ $[25] = t5;
244
245
  } else {
245
- t5 = $[24];
246
+ t5 = $[25];
246
247
  }
247
248
  return t5;
248
249
  }
@@ -262,50 +263,4 @@ function _temp(file) {
262
263
  const formattedSize = (size / Math.pow(1024, i)).toFixed(decimals) + " " + ["B", "kB", "MB", "GB", "TB"][i];
263
264
  return formattedSize;
264
265
  }
265
- function SidebarThumbnail({
266
- file,
267
- formID
268
- }) {
269
- const [thumbnailURL, setThumbnailURL] = React.useState(null);
270
- const [isLoading, setIsLoading] = React.useState(true);
271
- React.useEffect(() => {
272
- let isCancelled = false;
273
- async function generateThumbnail() {
274
- setIsLoading(true);
275
- setThumbnailURL(null);
276
- try {
277
- if (isImage(file.type)) {
278
- const url = await createThumbnail(file);
279
- if (!isCancelled) {
280
- setThumbnailURL(url);
281
- }
282
- } else {
283
- setThumbnailURL(null);
284
- }
285
- } catch (_) {
286
- if (!isCancelled) {
287
- setThumbnailURL(null);
288
- }
289
- } finally {
290
- if (!isCancelled) {
291
- setIsLoading(false);
292
- }
293
- }
294
- }
295
- void generateThumbnail();
296
- return () => {
297
- isCancelled = true;
298
- };
299
- }, [file]);
300
- if (isLoading) {
301
- return /*#__PURE__*/_jsx(ShimmerEffect, {
302
- className: `${baseClass}__thumbnail-shimmer`,
303
- disableInlineStyles: true
304
- });
305
- }
306
- return /*#__PURE__*/_jsx(Thumbnail, {
307
- className: `${baseClass}__thumbnail`,
308
- fileSrc: thumbnailURL
309
- }, `${formID}-${thumbnailURL || 'placeholder'}`);
310
- }
311
266
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useModal","useWindowInfo","isImage","React","ChevronIcon","XIcon","useTranslation","AnimateHeight","Button","Drawer","ErrorPill","Pill","ShimmerEffect","createThumbnail","Thumbnail","Actions","AddFilesView","useFormsManager","useBulkUpload","addMoreFilesDrawerSlug","baseClass","FileSidebar","$","activeIndex","addFiles","forms","isInitializing","removeFile","setActiveIndex","totalErrorCount","initialFiles","maxFiles","i18n","t","closeModal","openModal","showFiles","setShowFiles","useState","breakpoints","t0","indexToRemove","handleRemoveFile","t1","filelist","handleAddFiles","getFileSize","_temp","totalFileCount","length","t2","t3","filter","Boolean","t4","join","t5","m","t6","Symbol","for","_temp2","t7","t8","t9","index_0","errorCount","formID","formState","currentFile","file","value","_jsxs","className","index","children","onClick","type","_jsx","SidebarThumbnail","title","name","File","count","withMessage","size","buttonStyle","direction","gutter","Header","slug","onCancel","onDrop","height","Array","from","map","_temp3","file_0","animationDelay","prev","i","Math","floor","log","decimals","formattedSize","pow","toFixed","thumbnailURL","setThumbnailURL","isLoading","setIsLoading","useEffect","isCancelled","generateThumbnail","url","_","disableInlineStyles","fileSrc"],"sources":["../../../../src/elements/BulkUpload/FileSidebar/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { isImage } from 'payload/shared'\nimport React from 'react'\n\nimport { ChevronIcon } from '../../../icons/Chevron/index.js'\nimport { XIcon } from '../../../icons/X/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { AnimateHeight } from '../../AnimateHeight/index.js'\nimport { Button } from '../../Button/index.js'\nimport { Drawer } from '../../Drawer/index.js'\nimport { ErrorPill } from '../../ErrorPill/index.js'\nimport { Pill } from '../../Pill/index.js'\nimport { ShimmerEffect } from '../../ShimmerEffect/index.js'\nimport { createThumbnail } from '../../Thumbnail/createThumbnail.js'\nimport { Thumbnail } from '../../Thumbnail/index.js'\nimport { Actions } from '../ActionsBar/index.js'\nimport { AddFilesView } from '../AddFilesView/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport { useBulkUpload } from '../index.js'\nimport './index.scss'\n\nconst addMoreFilesDrawerSlug = 'bulk-upload-drawer--add-more-files'\n\nconst baseClass = 'file-selections'\n\nexport function FileSidebar() {\n const {\n activeIndex,\n addFiles,\n forms,\n isInitializing,\n removeFile,\n setActiveIndex,\n totalErrorCount,\n } = useFormsManager()\n const { initialFiles, maxFiles } = useBulkUpload()\n const { i18n, t } = useTranslation()\n const { closeModal, openModal } = useModal()\n const [showFiles, setShowFiles] = React.useState(false)\n const { breakpoints } = useWindowInfo()\n\n const handleRemoveFile = React.useCallback(\n (indexToRemove: number) => {\n removeFile(indexToRemove)\n },\n [removeFile],\n )\n\n const handleAddFiles = React.useCallback(\n (filelist: FileList) => {\n void addFiles(filelist)\n closeModal(addMoreFilesDrawerSlug)\n },\n [addFiles, closeModal],\n )\n\n const getFileSize = React.useCallback((file: File) => {\n const size = file.size\n const i = size === 0 ? 0 : Math.floor(Math.log(size) / Math.log(1024))\n const decimals = i > 1 ? 1 : 0\n const formattedSize =\n (size / Math.pow(1024, i)).toFixed(decimals) + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i]\n return formattedSize\n }, [])\n\n const totalFileCount = isInitializing ? initialFiles.length : forms.length\n\n return (\n <div\n className={[baseClass, showFiles && `${baseClass}__showingFiles`].filter(Boolean).join(' ')}\n >\n {breakpoints.m && showFiles ? <div className={`${baseClass}__mobileBlur`} /> : null}\n <div className={`${baseClass}__header`}>\n <div className={`${baseClass}__headerTopRow`}>\n <div className={`${baseClass}__header__text`}>\n <ErrorPill count={totalErrorCount} i18n={i18n} withMessage />\n <p>\n <strong\n title={`${totalFileCount} ${t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}`}\n >\n {totalFileCount}{' '}\n {t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}\n </strong>\n </p>\n </div>\n\n <div className={`${baseClass}__header__actions`}>\n {(typeof maxFiles === 'number' ? totalFileCount < maxFiles : true) ? (\n <Pill\n className={`${baseClass}__header__addFile`}\n onClick={() => openModal(addMoreFilesDrawerSlug)}\n size=\"small\"\n >\n {t('upload:addFile')}\n </Pill>\n ) : null}\n <Button\n buttonStyle=\"transparent\"\n className={`${baseClass}__toggler`}\n onClick={() => setShowFiles((prev) => !prev)}\n >\n <span className={`${baseClass}__toggler__label`}>\n <strong\n title={`${totalFileCount} ${t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}`}\n >\n {totalFileCount}{' '}\n {t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}\n </strong>\n </span>\n <ChevronIcon direction={showFiles ? 'down' : 'up'} />\n </Button>\n\n <Drawer gutter={false} Header={null} slug={addMoreFilesDrawerSlug}>\n <AddFilesView\n onCancel={() => closeModal(addMoreFilesDrawerSlug)}\n onDrop={handleAddFiles}\n />\n </Drawer>\n </div>\n </div>\n\n <div className={`${baseClass}__header__mobileDocActions`}>\n <Actions />\n </div>\n </div>\n\n <div className={`${baseClass}__animateWrapper`}>\n <AnimateHeight height={!breakpoints.m || showFiles ? 'auto' : 0}>\n <div className={`${baseClass}__filesContainer`}>\n {isInitializing && forms.length === 0 && initialFiles.length > 0\n ? Array.from(initialFiles).map((file, index) => (\n <ShimmerEffect\n animationDelay={`calc(${index} * ${60}ms)`}\n height=\"35px\"\n key={index}\n />\n ))\n : null}\n {forms.map(({ errorCount, formID, formState }, index) => {\n const currentFile = (formState?.file?.value as File) || ({} as File)\n\n return (\n <div\n className={[\n `${baseClass}__fileRowContainer`,\n index === activeIndex && `${baseClass}__fileRowContainer--active`,\n errorCount && errorCount > 0 && `${baseClass}__fileRowContainer--error`,\n ]\n .filter(Boolean)\n .join(' ')}\n key={formID}\n >\n <button\n className={`${baseClass}__fileRow`}\n onClick={() => setActiveIndex(index)}\n type=\"button\"\n >\n <SidebarThumbnail file={currentFile} formID={formID} />\n <div className={`${baseClass}__fileDetails`}>\n <p className={`${baseClass}__fileName`} title={currentFile.name}>\n {currentFile.name || t('upload:noFile')}\n </p>\n </div>\n {currentFile instanceof File ? (\n <p className={`${baseClass}__fileSize`}>{getFileSize(currentFile)}</p>\n ) : null}\n <div className={`${baseClass}__remove ${baseClass}__remove--underlay`}>\n <XIcon />\n </div>\n\n {errorCount ? (\n <ErrorPill\n className={`${baseClass}__errorCount`}\n count={errorCount}\n i18n={i18n}\n />\n ) : null}\n </button>\n\n <button\n aria-label={t('general:remove')}\n className={`${baseClass}__remove ${baseClass}__remove--overlay`}\n onClick={() => handleRemoveFile(index)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n )\n })}\n </div>\n </AnimateHeight>\n </div>\n </div>\n )\n}\n\nfunction SidebarThumbnail({ file, formID }: { file: File; formID: string }) {\n const [thumbnailURL, setThumbnailURL] = React.useState<null | string>(null)\n const [isLoading, setIsLoading] = React.useState(true)\n\n React.useEffect(() => {\n let isCancelled = false\n\n async function generateThumbnail() {\n setIsLoading(true)\n setThumbnailURL(null)\n\n try {\n if (isImage(file.type)) {\n const url = await createThumbnail(file)\n if (!isCancelled) {\n setThumbnailURL(url)\n }\n } else {\n setThumbnailURL(null)\n }\n } catch (_) {\n if (!isCancelled) {\n setThumbnailURL(null)\n }\n } finally {\n if (!isCancelled) {\n setIsLoading(false)\n }\n }\n }\n\n void generateThumbnail()\n\n return () => {\n isCancelled = true\n }\n }, [file])\n\n if (isLoading) {\n return <ShimmerEffect className={`${baseClass}__thumbnail-shimmer`} disableInlineStyles />\n }\n\n return (\n <Thumbnail\n className={`${baseClass}__thumbnail`}\n fileSrc={thumbnailURL}\n key={`${formID}-${thumbnailURL || 'placeholder'}`}\n />\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,SAASC,QAAQ,QAAQ;AACzB,SAASC,aAAa,QAAQ;AAC9B,SAASC,OAAO,QAAQ;AACxB,OAAOC,KAAA,MAAW;AAElB,SAASC,WAAW,QAAQ;AAC5B,SAASC,KAAK,QAAQ;AACtB,SAASC,cAAc,QAAQ;AAC/B,SAASC,aAAa,QAAQ;AAC9B,SAASC,MAAM,QAAQ;AACvB,SAASC,MAAM,QAAQ;AACvB,SAASC,SAAS,QAAQ;AAC1B,SAASC,IAAI,QAAQ;AACrB,SAASC,aAAa,QAAQ;AAC9B,SAASC,eAAe,QAAQ;AAChC,SAASC,SAAS,QAAQ;AAC1B,SAASC,OAAO,QAAQ;AACxB,SAASC,YAAY,QAAQ;AAC7B,SAASC,eAAe,QAAQ;AAChC,SAASC,aAAa,QAAQ;AAC9B,OAAO;AAEP,MAAMC,sBAAA,GAAyB;AAE/B,MAAMC,SAAA,GAAY;AAElB,OAAO,SAAAC,YAAA;EAAA,MAAAC,CAAA,GAAAvB,EAAA;EACL;IAAAwB,WAAA;IAAAC,QAAA;IAAAC,KAAA;IAAAC,cAAA;IAAAC,UAAA;IAAAC,cAAA;IAAAC;EAAA,IAQIZ,eAAA;EACJ;IAAAa,YAAA;IAAAC;EAAA,IAAmCb,aAAA;EACnC;IAAAc,IAAA;IAAAC;EAAA,IAAoB3B,cAAA;EACpB;IAAA4B,UAAA;IAAAC;EAAA,IAAkCnC,QAAA;EAClC,OAAAoC,SAAA,EAAAC,YAAA,IAAkClC,KAAA,CAAAmC,QAAA,MAAe;EACjD;IAAAC;EAAA,IAAwBtC,aAAA;EAAA,IAAAuC,EAAA;EAAA,IAAAlB,CAAA,QAAAK,UAAA;IAGtBa,EAAA,GAAAC,aAAA;MACEd,UAAA,CAAWc,aAAA;IAAA;IACbnB,CAAA,MAAAK,UAAA;IAAAL,CAAA,MAAAkB,EAAA;EAAA;IAAAA,EAAA,GAAAlB,CAAA;EAAA;EAHF,MAAAoB,gBAAA,GAAyBF,EAIX;EAAA,IAAAG,EAAA;EAAA,IAAArB,CAAA,QAAAE,QAAA,IAAAF,CAAA,QAAAY,UAAA;IAIZS,EAAA,GAAAC,QAAA;MACOpB,QAAA,CAASoB,QAAA;MACdV,UAAA,CAAAf,sBAAW;IAAA;IACbG,CAAA,MAAAE,QAAA;IAAAF,CAAA,MAAAY,UAAA;IAAAZ,CAAA,MAAAqB,EAAA;EAAA;IAAAA,EAAA,GAAArB,CAAA;EAAA;EAJF,MAAAuB,cAAA,GAAuBF,EAKC;EAGxB,MAAAG,WAAA,GAAAC,KAAA;EASA,MAAAC,cAAA,GAAuBtB,cAAA,GAAiBI,YAAA,CAAAmB,MAAA,GAAsBxB,KAAA,CAAAwB,MAAY;EAI/C,MAAAC,EAAA,GAAAd,SAAA,IAAa,GAAAhB,SAAA,gBAA4B;EAAA,IAAA+B,EAAA;EAAA,IAAA7B,CAAA,QAAA4B,EAAA;IAArDC,EAAA,IAAA/B,SAAA,EAAY8B,EAAyC,EAAAE,MAAA,CAAAC,OAAS;IAAA/B,CAAA,MAAA4B,EAAA;IAAA5B,CAAA,MAAA6B,EAAA;EAAA;IAAAA,EAAA,GAAA7B,CAAA;EAAA;EAA9D,MAAAgC,EAAA,GAAAH,EAA8D,CAAAI,IAAA,CAAc;EAAA,IAAAC,EAAA;EAAA,IAAAlC,CAAA,QAAAC,WAAA,IAAAD,CAAA,QAAAiB,WAAA,CAAAkB,CAAA,IAAAnC,CAAA,QAAAY,UAAA,IAAAZ,CAAA,SAAAG,KAAA,IAAAH,CAAA,SAAAuB,cAAA,IAAAvB,CAAA,SAAAoB,gBAAA,IAAApB,CAAA,SAAAU,IAAA,IAAAV,CAAA,SAAAQ,YAAA,IAAAR,CAAA,SAAAI,cAAA,IAAAJ,CAAA,SAAAS,QAAA,IAAAT,CAAA,SAAAa,SAAA,IAAAb,CAAA,SAAAM,cAAA,IAAAN,CAAA,SAAAc,SAAA,IAAAd,CAAA,SAAAW,CAAA,IAAAX,CAAA,SAAAgC,EAAA,IAAAhC,CAAA,SAAAO,eAAA,IAAAP,CAAA,SAAA0B,cAAA;IAAA,IAAAU,EAAA;IAAA,IAAApC,CAAA,SAAAqC,MAAA,CAAAC,GAAA;MA8BtEF,EAAA,GAAAA,CAAA,KAAMrB,YAAA,CAAAwB,MAAwB;MAAAvC,CAAA,OAAAoC,EAAA;IAAA;MAAAA,EAAA,GAAApC,CAAA;IAAA;IAAA,IAAAwC,EAAA;IAAA,IAAAxC,CAAA,SAAAY,UAAA;MAe3B4B,EAAA,GAAAA,CAAA,KAAM5B,UAAA,CAAAf,sBAAW;MAAAG,CAAA,OAAAY,UAAA;MAAAZ,CAAA,OAAAwC,EAAA;IAAA;MAAAA,EAAA,GAAAxC,CAAA;IAAA;IAAA,IAAAyC,EAAA;IAAA,IAAAzC,CAAA,SAAAC,WAAA,IAAAD,CAAA,SAAAoB,gBAAA,IAAApB,CAAA,SAAAU,IAAA,IAAAV,CAAA,SAAAM,cAAA,IAAAN,CAAA,SAAAW,CAAA;MAwBpB8B,EAAA,GAAAA,CAAAC,EAAA,EAAAC,OAAA;QAAC;UAAAC,UAAA;UAAAC,MAAA;UAAAC;QAAA,IAAAJ,EAAiC;QAC3C,MAAAK,WAAA,GAAoBD,SAAC,EAAAE,IAAA,EAAAC,KAAA,MAAqC;QAAA,OAGxDC,KAAA,CAAC;UAAAC,SAAA,EACY,CACT,GAAArD,SAAA,oBAAgC,EAChCsD,OAAA,KAAUnD,WAAA,IAAe,GAAAH,SAAA,4BAAwC,EACjE8C,UAAA,IAAcA,UAAA,IAAa,IAAK,GAAA9C,SAAA,2BAAuC,EAAAgC,MAAA,CAAAC,OAE/D,EAAAE,IAAA,CACF;UAAAoB,QAAA,GAGRH,KAAA,CAAC;YAAAC,SAAA,EACY,GAAArD,SAAA,WAAuB;YAAAwD,OAAA,EAAAA,CAAA,KACnBhD,cAAA,CAAe8C,OAAA;YAAAG,IAAA,EACzB;YAAAF,QAAA,GAELG,IAAA,CAAAC,gBAAA;cAAAT,IAAA,EAAwBD,WAAA;cAAAF;YAAA,C,GACxBW,IAAA,CAAC;cAAAL,SAAA,EAAe,GAAArD,SAAA,eAA2B;cAAAuD,QAAA,EACzCG,IAAA,CAAC;gBAAAL,SAAA,EAAa,GAAArD,SAAA,YAAwB;gBAAA4D,KAAA,EAASX,WAAA,CAAAY,IAAA;gBAAAN,QAAA,EAC5CN,WAAA,CAAAY,IAAA,IAAoBhD,CAAA,CAAE;cAAA,C;gBAG1BoC,WAAA,YAAAa,IAAuB,GACtBJ,IAAA,CAAC;cAAAL,SAAA,EAAa,GAAArD,SAAA,YAAwB;cAAAuD,QAAA,EAAG7B,WAAA,CAAYuB,WAAA;YAAA,C,QACnD,EACJS,IAAA,CAAC;cAAAL,SAAA,EAAe,GAAArD,SAAA,YAAAA,SAAA,oBAAqD;cAAAuD,QAAA,EACnEG,IAAA,CAAAzE,KAAA,IAAC;YAAA,C,GAGF6D,UAAA,GACCY,IAAA,CAAApE,SAAA;cAAA+D,SAAA,EACa,GAAArD,SAAA,cAA0B;cAAA+D,KAAA,EAC9BjB,UAAA;cAAAlC;YAAA,C,QAGP;UAAA,C,GAGN8C,IAAA,CAAC;YAAA,cACa7C,CAAA,CAAE;YAAAwC,SAAA,EACH,GAAArD,SAAA,YAAAA,SAAA,mBAAoD;YAAAwD,OAAA,EAAAA,CAAA,KAChDlC,gBAAA,CAAiBgC,OAAA;YAAAG,IAAA,EAC3B;YAAAF,QAAA,EAELG,IAAA,CAAAzE,KAAA,IAAC;UAAA,C;WAnCE8D,MAAA;MAAA;MAuCX7C,CAAA,OAAAC,WAAA;MAAAD,CAAA,OAAAoB,gBAAA;MAAApB,CAAA,OAAAU,IAAA;MAAAV,CAAA,OAAAM,cAAA;MAAAN,CAAA,OAAAW,CAAA;MAAAX,CAAA,OAAAyC,EAAA;IAAA;MAAAA,EAAA,GAAAzC,CAAA;IAAA;IAzHRkC,EAAA,GAAAgB,KAAA,CAAC;MAAAC,SAAA,EACYnB,EAA4E;MAAAqB,QAAA,GAEtFpC,WAAA,CAAAkB,CAAA,IAAiBrB,SAAA,GAAY0C,IAAA,CAAC;QAAAL,SAAA,EAAe,GAAArD,SAAA;MAA0B,C,QAAO,EAC/EoD,KAAA,CAAC;QAAAC,SAAA,EAAe,GAAArD,SAAA,UAAsB;QAAAuD,QAAA,GACpCH,KAAA,CAAC;UAAAC,SAAA,EAAe,GAAArD,SAAA,gBAA4B;UAAAuD,QAAA,GAC1CH,KAAA,CAAC;YAAAC,SAAA,EAAe,GAAArD,SAAA,gBAA4B;YAAAuD,QAAA,GAC1CG,IAAA,CAAApE,SAAA;cAAAyE,KAAA,EAAkBtD,eAAA;cAAAG,IAAA;cAAAoD,WAAA;YAAA,C,GAClBN,IAAA,CAAC;cAAAH,QAAA,EACCH,KAAA,CAAC;gBAAAQ,KAAA,EACQ,GAAGhC,cAAA,IAAkBf,CAAA,CAAEe,cAAA,IAAiB,GAAI,yBAAyB,wBAAwB;gBAAA2B,QAAA,GAEnG3B,cAAA,EAAgB,KAChBf,CAAA,CAAEe,cAAA,IAAiB,GAAI,yBAAyB;cAAA,C;;cAKvDwB,KAAA,CAAC;YAAAC,SAAA,EAAe,GAAArD,SAAA,mBAA+B;YAAAuD,QAAA,GAC3C,QAAO5C,QAAA,KAAa,WAAWiB,cAAA,GAAiBjB,QAAA,OAAc,IAC9D+C,IAAA,CAAAnE,IAAA;cAAA8D,SAAA,EACa,GAAArD,SAAA,mBAA+B;cAAAwD,OAAA,EAAAA,CAAA,KAC3BzC,SAAA,CAAAhB,sBAAU;cAAAkE,IAAA,EACpB;cAAAV,QAAA,EAEJ1C,CAAA,CAAE;YAAA,C,QAEH,EACJuC,KAAA,CAAAhE,MAAA;cAAA8E,WAAA,EACc;cAAAb,SAAA,EACD,GAAArD,SAAA,WAAuB;cAAAwD,OAAA,EACzBlB,EAA8B;cAAAiB,QAAA,GAEvCG,IAAA,CAAC;gBAAAL,SAAA,EAAgB,GAAArD,SAAA,kBAA8B;gBAAAuD,QAAA,EAC7CH,KAAA,CAAC;kBAAAQ,KAAA,EACQ,GAAGhC,cAAA,IAAkBf,CAAA,CAAEe,cAAA,IAAiB,GAAI,yBAAyB,wBAAwB;kBAAA2B,QAAA,GAEnG3B,cAAA,EAAgB,KAChBf,CAAA,CAAEe,cAAA,IAAiB,GAAI,yBAAyB;gBAAA,C;kBAGrD8B,IAAA,CAAA1E,WAAA;gBAAAmF,SAAA,EAAwBnD,SAAA,GAAY,SAAS;cAAA,C;gBAG/C0C,IAAA,CAAArE,MAAA;cAAA+E,MAAA;cAAAC,MAAA;cAAAC,IAAA,EAAAvE,sBAAA;cAAAwD,QAAA,EACEG,IAAA,CAAA9D,YAAA;gBAAA2E,QAAA,EACY7B,EAAiB;gBAAA8B,MAAA,EACnB/C;cAAA,C;;;YAMhBiC,IAAA,CAAC;UAAAL,SAAA,EAAe,GAAArD,SAAA,4BAAwC;UAAAuD,QAAA,EACtDG,IAAA,CAAA/D,OAAA,IAAC;QAAA,C;UAIL+D,IAAA,CAAC;QAAAL,SAAA,EAAe,GAAArD,SAAA,kBAA8B;QAAAuD,QAAA,EAC5CG,IAAA,CAAAvE,aAAA;UAAAsF,MAAA,EAAuB,CAACtD,WAAA,CAAAkB,CAAA,IAAiBrB,SAAA,GAAY,UAAS;UAAAuC,QAAA,EAC5DH,KAAA,CAAC;YAAAC,SAAA,EAAe,GAAArD,SAAA,kBAA8B;YAAAuD,QAAA,GAC3CjD,cAAA,IAAkBD,KAAA,CAAAwB,MAAA,MAAiB,IAAKnB,YAAA,CAAAmB,MAAA,IAAsB,GAC3D6C,KAAA,CAAAC,IAAA,CAAWjE,YAAA,EAAAkE,GAAA,CAAAC,MAIF,QAGT,EACHxE,KAAA,CAAAuE,GAAA,CAAUjC,EAmDX;UAAA,C;;;;;;;;;;;;;;;;;;;;;;;;;SAzHRP,E;;AA3CG,SAAAyC,OAAAC,MAAA,EAAAxB,KAAA;EAAA,OA0GWI,IAAA,CAAAlE,aAAA;IAAAuF,cAAA,EACkB,QAAQzB,KAAA,aAAkB;IAAAmB,MAAA,EACnC;EAAA,GACFnB,KAAA;AAAA;AA7GlB,SAAAb,OAAAuC,IAAA;EAAA,QA0E8CA,IAAA;AAAA;AA1E9C,SAAArD,MAAAuB,IAAA;EAgCH,MAAAe,IAAA,GAAaf,IAAA,CAAAe,IAAA;EACb,MAAAgB,CAAA,GAAUhB,IAAA,MAAS,OAAQiB,IAAA,CAAAC,KAAA,CAAWD,IAAA,CAAAE,GAAA,CAASnB,IAAA,IAAQiB,IAAA,CAAAE,GAAA,KAAS;EAChE,MAAAC,QAAA,GAAiBJ,CAAA,IAAI,QAAQ;EAC7B,MAAAK,aAAA,GACE,CAACrB,IAAA,GAAOiB,IAAA,CAAAK,GAAA,OAAeN,CAAA,CAAC,EAAAO,OAAA,CAAWH,QAAA,IAAY,OAAO,KAAK,MAAM,MAAM,MAAM,MAAMJ,CAAA,CAAE;EAAA,OAChFK,aAAA;AAAA;AAuIX,SAAS3B,iBAAiB;EAAET,IAAI;EAAEH;AAAM,CAAkC;EACxE,MAAM,CAAC0C,YAAA,EAAcC,eAAA,CAAgB,GAAG3G,KAAA,CAAMmC,QAAQ,CAAgB;EACtE,MAAM,CAACyE,SAAA,EAAWC,YAAA,CAAa,GAAG7G,KAAA,CAAMmC,QAAQ,CAAC;EAEjDnC,KAAA,CAAM8G,SAAS,CAAC;IACd,IAAIC,WAAA,GAAc;IAElB,eAAeC,kBAAA;MACbH,YAAA,CAAa;MACbF,eAAA,CAAgB;MAEhB,IAAI;QACF,IAAI5G,OAAA,CAAQoE,IAAA,CAAKO,IAAI,GAAG;UACtB,MAAMuC,GAAA,GAAM,MAAMvG,eAAA,CAAgByD,IAAA;UAClC,IAAI,CAAC4C,WAAA,EAAa;YAChBJ,eAAA,CAAgBM,GAAA;UAClB;QACF,OAAO;UACLN,eAAA,CAAgB;QAClB;MACF,EAAE,OAAOO,CAAA,EAAG;QACV,IAAI,CAACH,WAAA,EAAa;UAChBJ,eAAA,CAAgB;QAClB;MACF,UAAU;QACR,IAAI,CAACI,WAAA,EAAa;UAChBF,YAAA,CAAa;QACf;MACF;IACF;IAEA,KAAKG,iBAAA;IAEL,OAAO;MACLD,WAAA,GAAc;IAChB;EACF,GAAG,CAAC5C,IAAA,CAAK;EAET,IAAIyC,SAAA,EAAW;IACb,oBAAOjC,IAAA,CAAClE,aAAA;MAAc6D,SAAA,EAAW,GAAGrD,SAAA,qBAA8B;MAAEkG,mBAAmB;;EACzF;EAEA,oBACExC,IAAA,CAAChE,SAAA;IACC2D,SAAA,EAAW,GAAGrD,SAAA,aAAsB;IACpCmG,OAAA,EAASV;KACJ,GAAG1C,MAAA,IAAU0C,YAAA,IAAgB,eAAe;AAGvD","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useModal","useWindowInfo","isImage","React","ChevronIcon","XIcon","useTranslation","AnimateHeight","Button","Drawer","ErrorPill","Pill","ShimmerEffect","Thumbnail","Actions","AddFilesView","useFormsManager","useBulkUpload","addMoreFilesDrawerSlug","baseClass","FileSidebar","$","activeIndex","addFiles","forms","isInitializing","removeFile","setActiveIndex","thumbnailUrls","totalErrorCount","initialFiles","maxFiles","i18n","t","closeModal","openModal","showFiles","setShowFiles","useState","breakpoints","t0","indexToRemove","handleRemoveFile","t1","filelist","handleAddFiles","getFileSize","_temp","totalFileCount","length","t2","t3","filter","Boolean","t4","join","t5","m","t6","Symbol","for","_temp2","t7","t8","t9","index_0","errorCount","formState","currentFile","file","value","_jsxs","className","index","children","onClick","type","_jsx","fileSrc","title","name","File","count","withMessage","size","buttonStyle","direction","gutter","Header","slug","onCancel","onDrop","height","Array","from","map","_temp3","file_0","animationDelay","prev","i","Math","floor","log","decimals","formattedSize","pow","toFixed"],"sources":["../../../../src/elements/BulkUpload/FileSidebar/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { isImage } from 'payload/shared'\nimport React from 'react'\n\nimport { ChevronIcon } from '../../../icons/Chevron/index.js'\nimport { XIcon } from '../../../icons/X/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { AnimateHeight } from '../../AnimateHeight/index.js'\nimport { Button } from '../../Button/index.js'\nimport { Drawer } from '../../Drawer/index.js'\nimport { ErrorPill } from '../../ErrorPill/index.js'\nimport { Pill } from '../../Pill/index.js'\nimport { ShimmerEffect } from '../../ShimmerEffect/index.js'\nimport { Thumbnail } from '../../Thumbnail/index.js'\nimport { Actions } from '../ActionsBar/index.js'\nimport './index.scss'\nimport { AddFilesView } from '../AddFilesView/index.js'\nimport { useFormsManager } from '../FormsManager/index.js'\nimport { useBulkUpload } from '../index.js'\n\nconst addMoreFilesDrawerSlug = 'bulk-upload-drawer--add-more-files'\n\nconst baseClass = 'file-selections'\n\nexport function FileSidebar() {\n const {\n activeIndex,\n addFiles,\n forms,\n isInitializing,\n removeFile,\n setActiveIndex,\n thumbnailUrls,\n totalErrorCount,\n } = useFormsManager()\n const { initialFiles, maxFiles } = useBulkUpload()\n const { i18n, t } = useTranslation()\n const { closeModal, openModal } = useModal()\n const [showFiles, setShowFiles] = React.useState(false)\n const { breakpoints } = useWindowInfo()\n\n const handleRemoveFile = React.useCallback(\n (indexToRemove: number) => {\n removeFile(indexToRemove)\n },\n [removeFile],\n )\n\n const handleAddFiles = React.useCallback(\n (filelist: FileList) => {\n void addFiles(filelist)\n closeModal(addMoreFilesDrawerSlug)\n },\n [addFiles, closeModal],\n )\n\n const getFileSize = React.useCallback((file: File) => {\n const size = file.size\n const i = size === 0 ? 0 : Math.floor(Math.log(size) / Math.log(1024))\n const decimals = i > 1 ? 1 : 0\n const formattedSize =\n (size / Math.pow(1024, i)).toFixed(decimals) + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i]\n return formattedSize\n }, [])\n\n const totalFileCount = isInitializing ? initialFiles.length : forms.length\n\n return (\n <div\n className={[baseClass, showFiles && `${baseClass}__showingFiles`].filter(Boolean).join(' ')}\n >\n {breakpoints.m && showFiles ? <div className={`${baseClass}__mobileBlur`} /> : null}\n <div className={`${baseClass}__header`}>\n <div className={`${baseClass}__headerTopRow`}>\n <div className={`${baseClass}__header__text`}>\n <ErrorPill count={totalErrorCount} i18n={i18n} withMessage />\n <p>\n <strong\n title={`${totalFileCount} ${t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}`}\n >\n {totalFileCount}{' '}\n {t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}\n </strong>\n </p>\n </div>\n\n <div className={`${baseClass}__header__actions`}>\n {(typeof maxFiles === 'number' ? totalFileCount < maxFiles : true) ? (\n <Pill\n className={`${baseClass}__header__addFile`}\n onClick={() => openModal(addMoreFilesDrawerSlug)}\n size=\"small\"\n >\n {t('upload:addFile')}\n </Pill>\n ) : null}\n <Button\n buttonStyle=\"transparent\"\n className={`${baseClass}__toggler`}\n onClick={() => setShowFiles((prev) => !prev)}\n >\n <span className={`${baseClass}__toggler__label`}>\n <strong\n title={`${totalFileCount} ${t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}`}\n >\n {totalFileCount}{' '}\n {t(totalFileCount > 1 ? 'upload:filesToUpload' : 'upload:fileToUpload')}\n </strong>\n </span>\n <ChevronIcon direction={showFiles ? 'down' : 'up'} />\n </Button>\n\n <Drawer gutter={false} Header={null} slug={addMoreFilesDrawerSlug}>\n <AddFilesView\n onCancel={() => closeModal(addMoreFilesDrawerSlug)}\n onDrop={handleAddFiles}\n />\n </Drawer>\n </div>\n </div>\n\n <div className={`${baseClass}__header__mobileDocActions`}>\n <Actions />\n </div>\n </div>\n\n <div className={`${baseClass}__animateWrapper`}>\n <AnimateHeight height={!breakpoints.m || showFiles ? 'auto' : 0}>\n <div className={`${baseClass}__filesContainer`}>\n {isInitializing && forms.length === 0 && initialFiles.length > 0\n ? Array.from(initialFiles).map((file, index) => (\n <ShimmerEffect\n animationDelay={`calc(${index} * ${60}ms)`}\n height=\"35px\"\n key={index}\n />\n ))\n : null}\n {forms.map(({ errorCount, formState }, index) => {\n const currentFile = (formState?.file?.value as File) || ({} as File)\n\n return (\n <div\n className={[\n `${baseClass}__fileRowContainer`,\n index === activeIndex && `${baseClass}__fileRowContainer--active`,\n errorCount && errorCount > 0 && `${baseClass}__fileRowContainer--error`,\n ]\n .filter(Boolean)\n .join(' ')}\n key={index}\n >\n <button\n className={`${baseClass}__fileRow`}\n onClick={() => setActiveIndex(index)}\n type=\"button\"\n >\n <Thumbnail\n className={`${baseClass}__thumbnail`}\n fileSrc={isImage(currentFile.type) ? thumbnailUrls[index] : null}\n />\n <div className={`${baseClass}__fileDetails`}>\n <p className={`${baseClass}__fileName`} title={currentFile.name}>\n {currentFile.name || t('upload:noFile')}\n </p>\n </div>\n {currentFile instanceof File ? (\n <p className={`${baseClass}__fileSize`}>{getFileSize(currentFile)}</p>\n ) : null}\n <div className={`${baseClass}__remove ${baseClass}__remove--underlay`}>\n <XIcon />\n </div>\n\n {errorCount ? (\n <ErrorPill\n className={`${baseClass}__errorCount`}\n count={errorCount}\n i18n={i18n}\n />\n ) : null}\n </button>\n\n <button\n aria-label={t('general:remove')}\n className={`${baseClass}__remove ${baseClass}__remove--overlay`}\n onClick={() => handleRemoveFile(index)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n )\n })}\n </div>\n </AnimateHeight>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -83,13 +83,12 @@
83
83
  background-color: var(--theme-elevation-100);
84
84
  }
85
85
 
86
- .file-selections__thumbnail,
87
- .file-selections__thumbnail-shimmer {
88
- width: calc(var(--base) * 1.2);
89
- height: calc(var(--base) * 1.2);
90
- border-radius: var(--style-radius-s);
86
+ .thumbnail {
87
+ width: base(1.2);
88
+ height: base(1.2);
91
89
  flex-shrink: 0;
92
90
  object-fit: cover;
91
+ border-radius: var(--style-radius-s);
93
92
  }
94
93
 
95
94
  p {
@@ -24,6 +24,7 @@ type FormsManagerContext = {
24
24
  errorCount: number;
25
25
  index: number;
26
26
  }) => void;
27
+ readonly thumbnailUrls: string[];
27
28
  readonly totalErrorCount?: number;
28
29
  readonly updateUploadEdits: (args: UploadEdits) => void;
29
30
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,IAAI,EACJ,aAAa,EAEb,4BAA4B,EAC5B,WAAW,EACZ,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAezC,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,QAAQ,CAAC,cAAc,EAAE,CACvB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,gBAAgB,CAAC,EAAE,MAAM,IAAI,KAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,4BAA4B,CAAA;IACtD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAA;IAC3C,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAChG,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,sBAAsB,EAAE,CAAC,EAChC,UAAU,EACV,KAAK,GACN,EAAE;QACD,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;KACd,KAAK,IAAI,CAAA;IACV,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;CACxD,CAAA;AA6BD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAAA;AAED,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,qBAmdnE;AAED,wBAAgB,eAAe,wBAE9B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/BulkUpload/FormsManager/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,IAAI,EACJ,aAAa,EAEb,4BAA4B,EAC5B,WAAW,EACZ,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAgBzC,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,QAAQ,CAAC,cAAc,EAAE,CACvB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,gBAAgB,CAAC,EAAE,MAAM,IAAI,KAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,4BAA4B,CAAA;IACtD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAA;IAC3C,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAChG,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,sBAAsB,EAAE,CAAC,EAChC,UAAU,EACV,KAAK,GACN,EAAE;QACD,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;KACd,KAAK,IAAI,CAAA;IACV,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;CACxD,CAAA;AA8BD,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAAA;AAED,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,qBAofnE;AAED,wBAAgB,eAAe,wBAE9B"}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { useModal } from '@faceless-ui/modal';
5
+ import { isImage } from 'payload/shared';
5
6
  import * as qs from 'qs-esm';
6
7
  import React from 'react';
7
8
  import { toast } from 'sonner';
@@ -14,6 +15,7 @@ import { useUploadHandlers } from '../../../providers/UploadHandlers/index.js';
14
15
  import { hasSavePermission as getHasSavePermission } from '../../../utilities/hasSavePermission.js';
15
16
  import { LoadingOverlay } from '../../Loading/index.js';
16
17
  import { useLoadingOverlay } from '../../LoadingOverlay/index.js';
18
+ import { createThumbnail } from '../../Thumbnail/createThumbnail.js';
17
19
  import { useBulkUpload } from '../index.js';
18
20
  import { createFormData } from './createFormData.js';
19
21
  import { formsManagementReducer } from './reducer.js';
@@ -36,6 +38,7 @@ const Context = /*#__PURE__*/React.createContext({
36
38
  saveAllDocs: () => Promise.resolve(),
37
39
  setActiveIndex: () => 0,
38
40
  setFormTotalErrorCount: () => {},
41
+ thumbnailUrls: [],
39
42
  totalErrorCount: 0,
40
43
  updateUploadEdits: () => {}
41
44
  });
@@ -86,6 +89,33 @@ export function FormsManagerProvider({
86
89
  } = state;
87
90
  const formsRef = React.useRef(forms);
88
91
  formsRef.current = forms;
92
+ const formsCount = forms.length;
93
+ const thumbnailUrlsRef = React.useRef([]);
94
+ const processedFiles = React.useRef(new Set()) // Track already-processed files
95
+ ;
96
+ const [renderedThumbnails, setRenderedThumbnails] = React.useState([]);
97
+ React.useEffect(() => {
98
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
99
+ ;
100
+ (async () => {
101
+ const newThumbnails = [...thumbnailUrlsRef.current];
102
+ for (let i = 0; i < formsCount; i++) {
103
+ const file = formsRef.current[i].formState.file.value;
104
+ // Skip if already processed
105
+ if (processedFiles.current.has(file) || !file || !isImage(file.type)) {
106
+ continue;
107
+ }
108
+ processedFiles.current.add(file);
109
+ // Generate thumbnail and update ref
110
+ const thumbnailUrl = await createThumbnail(file);
111
+ newThumbnails[i] = thumbnailUrl;
112
+ thumbnailUrlsRef.current = newThumbnails;
113
+ // Trigger re-render in batches
114
+ setRenderedThumbnails([...newThumbnails]);
115
+ await new Promise(resolve => setTimeout(resolve, 100));
116
+ }
117
+ })();
118
+ }, [formsCount]);
89
119
  const {
90
120
  toggleLoadingOverlay
91
121
  } = useLoadingOverlay();
@@ -174,11 +204,10 @@ export function FormsManagerProvider({
174
204
  type: 'REPLACE',
175
205
  state: {
176
206
  activeIndex: index,
177
- forms: forms.map((form, i) => {
178
- if (i === activeIndex) {
207
+ forms: forms.map((form, i_0) => {
208
+ if (i_0 === activeIndex) {
179
209
  return {
180
210
  errorCount: form.errorCount,
181
- formID: form.formID,
182
211
  formState: currentFormsData,
183
212
  uploadEdits: form.uploadEdits
184
213
  };
@@ -189,15 +218,6 @@ export function FormsManagerProvider({
189
218
  });
190
219
  }, [forms, activeIndex]);
191
220
  const addFiles = React.useCallback(async files => {
192
- if (forms.length) {
193
- // save the state of the current form before adding new files
194
- dispatch({
195
- type: 'UPDATE_FORM',
196
- errorCount: forms[activeIndex].errorCount,
197
- formState: getFormDataRef.current(),
198
- index: activeIndex
199
- });
200
- }
201
221
  toggleLoadingOverlay({
202
222
  isLoading: true,
203
223
  key: 'addingDocs'
@@ -214,13 +234,18 @@ export function FormsManagerProvider({
214
234
  isLoading: false,
215
235
  key: 'addingDocs'
216
236
  });
217
- }, [initializeSharedFormState, hasInitializedState, toggleLoadingOverlay, activeIndex, forms]);
237
+ }, [initializeSharedFormState, hasInitializedState, toggleLoadingOverlay]);
238
+ const removeThumbnails = React.useCallback(indexes => {
239
+ thumbnailUrlsRef.current = thumbnailUrlsRef.current.filter((_, i_1) => !indexes.includes(i_1));
240
+ setRenderedThumbnails([...thumbnailUrlsRef.current]);
241
+ }, []);
218
242
  const removeFile = React.useCallback(index_0 => {
219
243
  dispatch({
220
244
  type: 'REMOVE_FORM',
221
245
  index: index_0
222
246
  });
223
- }, []);
247
+ removeThumbnails([index_0]);
248
+ }, [removeThumbnails]);
224
249
  const setFormTotalErrorCount = React.useCallback(({
225
250
  errorCount,
226
251
  index: index_1
@@ -238,17 +263,16 @@ export function FormsManagerProvider({
238
263
  const currentForms = [...forms];
239
264
  currentForms[activeIndex] = {
240
265
  errorCount: currentForms[activeIndex].errorCount,
241
- formID: currentForms[activeIndex].formID,
242
266
  formState: currentFormsData_0,
243
267
  uploadEdits: currentForms[activeIndex].uploadEdits
244
268
  };
245
269
  const newDocs = [];
246
270
  setIsUploading(true);
247
- for (let i_0 = 0; i_0 < currentForms.length; i_0++) {
271
+ for (let i_2 = 0; i_2 < currentForms.length; i_2++) {
248
272
  try {
249
- const form_0 = currentForms[i_0];
273
+ const form_0 = currentForms[i_2];
250
274
  setLoadingText(t('general:uploadingBulk', {
251
- current: i_0 + 1,
275
+ current: i_2 + 1,
252
276
  total: currentForms.length
253
277
  }));
254
278
  const actionURLWithParams = `${actionURL}${qs.stringify({
@@ -284,23 +308,22 @@ export function FormsManagerProvider({
284
308
  }
285
309
  return [[...fieldErrs, ...newFieldErrs], [...nonFieldErrs, ...newNonFieldErrs]];
286
310
  }, [[], []]);
287
- currentForms[i_0] = {
311
+ currentForms[i_2] = {
288
312
  errorCount: fieldErrors.length,
289
- formID: currentForms[i_0].formID,
290
- formState: fieldReducer(currentForms[i_0].formState, {
313
+ formState: fieldReducer(currentForms[i_2].formState, {
291
314
  type: 'ADD_SERVER_ERRORS',
292
315
  errors: fieldErrors
293
316
  })
294
317
  };
295
318
  if (req.status === 413 || req.status === 400) {
296
319
  // file too large
297
- currentForms[i_0] = {
298
- ...currentForms[i_0],
299
- errorCount: currentForms[i_0].errorCount + 1
320
+ currentForms[i_2] = {
321
+ ...currentForms[i_2],
322
+ errorCount: currentForms[i_2].errorCount + 1
300
323
  };
301
324
  toast.error(nonFieldErrors[0]?.message);
302
325
  }
303
- } catch (_) {
326
+ } catch (__0) {
304
327
  // swallow
305
328
  }
306
329
  }
@@ -311,11 +334,11 @@ export function FormsManagerProvider({
311
334
  const thumbnailIndexesToRemove = [];
312
335
  currentForms.forEach(({
313
336
  errorCount: errorCount_0
314
- }, i_1) => {
337
+ }, i_3) => {
315
338
  if (errorCount_0) {
316
- remainingForms.push(currentForms[i_1]);
339
+ remainingForms.push(currentForms[i_3]);
317
340
  } else {
318
- thumbnailIndexesToRemove.push(i_1);
341
+ thumbnailIndexesToRemove.push(i_3);
319
342
  }
320
343
  });
321
344
  const successCount = Math.max(0, currentForms.length - remainingForms.length);
@@ -325,6 +348,9 @@ export function FormsManagerProvider({
325
348
  if (typeof onSuccess === 'function') {
326
349
  onSuccess(newDocs, errorCount_1);
327
350
  }
351
+ if (remainingForms.length && thumbnailIndexesToRemove.length) {
352
+ removeThumbnails(thumbnailIndexesToRemove);
353
+ }
328
354
  }
329
355
  if (errorCount_1) {
330
356
  toast.error(`Failed to save ${errorCount_1} files`);
@@ -341,17 +367,17 @@ export function FormsManagerProvider({
341
367
  }) => acc + errorCount_2, 0)
342
368
  }
343
369
  });
344
- }, [actionURL, collectionSlug, getUploadHandler, t, forms, activeIndex, closeModal, drawerSlug, onSuccess]);
370
+ }, [actionURL, activeIndex, forms, removeThumbnails, onSuccess, collectionSlug, getUploadHandler, t, closeModal, drawerSlug]);
345
371
  const bulkUpdateForm = React.useCallback(async (updatedFields, afterStateUpdate) => {
346
- for (let i_2 = 0; i_2 < forms.length; i_2++) {
372
+ for (let i_4 = 0; i_4 < forms.length; i_4++) {
347
373
  Object.entries(updatedFields).forEach(([path, value]) => {
348
- if (forms[i_2].formState[path]) {
349
- forms[i_2].formState[path].value = value;
374
+ if (forms[i_4].formState[path]) {
375
+ forms[i_4].formState[path].value = value;
350
376
  dispatch({
351
377
  type: 'UPDATE_FORM',
352
- errorCount: forms[i_2].errorCount,
353
- formState: forms[i_2].formState,
354
- index: i_2
378
+ errorCount: forms[i_4].errorCount,
379
+ formState: forms[i_4].formState,
380
+ index: i_4
355
381
  });
356
382
  }
357
383
  });
@@ -365,7 +391,7 @@ export function FormsManagerProvider({
365
391
  collectionSlug,
366
392
  docPermissions,
367
393
  docPreferences: null,
368
- formState: forms[i_2].formState,
394
+ formState: forms[i_4].formState,
369
395
  operation: 'create',
370
396
  schemaPath: collectionSlug
371
397
  });
@@ -374,7 +400,7 @@ export function FormsManagerProvider({
374
400
  type: 'UPDATE_FORM',
375
401
  errorCount: newFormErrorCount,
376
402
  formState: state_0,
377
- index: i_2
403
+ index: i_4
378
404
  });
379
405
  }
380
406
  }
@@ -441,6 +467,7 @@ export function FormsManagerProvider({
441
467
  saveAllDocs,
442
468
  setActiveIndex,
443
469
  setFormTotalErrorCount,
470
+ thumbnailUrls: renderedThumbnails,
444
471
  totalErrorCount,
445
472
  updateUploadEdits
446
473
  },