@payloadcms/ui 3.44.0-internal.6b79dc2 → 3.45.0-canary.0

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 (171) hide show
  1. package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
  2. package/dist/elements/BulkUpload/FileSidebar/index.js +74 -29
  3. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  4. package/dist/elements/BulkUpload/FileSidebar/index.scss +5 -4
  5. package/dist/elements/BulkUpload/FormsManager/index.d.ts +0 -1
  6. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  7. package/dist/elements/BulkUpload/FormsManager/index.js +37 -64
  8. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  9. package/dist/elements/BulkUpload/FormsManager/reducer.d.ts +1 -0
  10. package/dist/elements/BulkUpload/FormsManager/reducer.d.ts.map +1 -1
  11. package/dist/elements/BulkUpload/FormsManager/reducer.js +1 -0
  12. package/dist/elements/BulkUpload/FormsManager/reducer.js.map +1 -1
  13. package/dist/elements/Button/index.d.ts.map +1 -1
  14. package/dist/elements/Button/index.js +2 -1
  15. package/dist/elements/Button/index.js.map +1 -1
  16. package/dist/elements/Button/index.scss +2 -2
  17. package/dist/elements/DocumentControls/index.d.ts +1 -0
  18. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  19. package/dist/elements/DocumentControls/index.js +26 -11
  20. package/dist/elements/DocumentControls/index.js.map +1 -1
  21. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  22. package/dist/elements/DocumentFields/index.js.map +1 -1
  23. package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts.map +1 -1
  24. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js +14 -10
  25. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +1 -1
  26. package/dist/elements/LivePreview/Device/index.d.ts +5 -0
  27. package/dist/elements/LivePreview/Device/index.d.ts.map +1 -0
  28. package/dist/elements/LivePreview/Device/index.js +92 -0
  29. package/dist/elements/LivePreview/Device/index.js.map +1 -0
  30. package/dist/elements/LivePreview/DeviceContainer/index.d.ts +5 -0
  31. package/dist/elements/LivePreview/DeviceContainer/index.d.ts.map +1 -0
  32. package/dist/elements/LivePreview/DeviceContainer/index.js +55 -0
  33. package/dist/elements/LivePreview/DeviceContainer/index.js.map +1 -0
  34. package/dist/elements/LivePreview/IFrame/index.d.ts +10 -0
  35. package/dist/elements/LivePreview/IFrame/index.d.ts.map +1 -0
  36. package/dist/elements/LivePreview/IFrame/index.js +30 -0
  37. package/dist/elements/LivePreview/IFrame/index.js.map +1 -0
  38. package/dist/elements/LivePreview/IFrame/index.scss +9 -0
  39. package/dist/elements/LivePreview/Toggler/index.d.ts +4 -0
  40. package/dist/elements/LivePreview/Toggler/index.d.ts.map +1 -0
  41. package/dist/elements/LivePreview/Toggler/index.js +30 -0
  42. package/dist/elements/LivePreview/Toggler/index.js.map +1 -0
  43. package/dist/elements/LivePreview/Toggler/index.scss +48 -0
  44. package/dist/elements/LivePreview/Toolbar/Controls/index.d.ts +5 -0
  45. package/dist/elements/LivePreview/Toolbar/Controls/index.d.ts.map +1 -0
  46. package/dist/elements/LivePreview/Toolbar/Controls/index.js +157 -0
  47. package/dist/elements/LivePreview/Toolbar/Controls/index.js.map +1 -0
  48. package/dist/elements/LivePreview/Toolbar/Controls/index.scss +61 -0
  49. package/dist/elements/LivePreview/Toolbar/SizeInput/index.d.ts +6 -0
  50. package/dist/elements/LivePreview/Toolbar/SizeInput/index.d.ts.map +1 -0
  51. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js +101 -0
  52. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js.map +1 -0
  53. package/dist/elements/LivePreview/Toolbar/SizeInput/index.scss +12 -0
  54. package/dist/elements/LivePreview/Toolbar/index.d.ts +7 -0
  55. package/dist/elements/LivePreview/Toolbar/index.d.ts.map +1 -0
  56. package/dist/elements/LivePreview/Toolbar/index.js +97 -0
  57. package/dist/elements/LivePreview/Toolbar/index.js.map +1 -0
  58. package/dist/elements/LivePreview/Toolbar/index.scss +43 -0
  59. package/dist/elements/LivePreview/ToolbarArea/index.d.ts +6 -0
  60. package/dist/elements/LivePreview/ToolbarArea/index.d.ts.map +1 -0
  61. package/dist/elements/LivePreview/ToolbarArea/index.js +41 -0
  62. package/dist/elements/LivePreview/ToolbarArea/index.js.map +1 -0
  63. package/dist/elements/LivePreview/ToolbarArea/index.scss +6 -0
  64. package/dist/elements/LivePreview/Window/index.d.ts +5 -0
  65. package/dist/elements/LivePreview/Window/index.d.ts.map +1 -0
  66. package/dist/elements/LivePreview/Window/index.js +182 -0
  67. package/dist/elements/LivePreview/Window/index.js.map +1 -0
  68. package/dist/elements/LivePreview/Window/index.scss +48 -0
  69. package/dist/elements/PreviewButton/index.d.ts +1 -0
  70. package/dist/elements/PreviewButton/index.d.ts.map +1 -1
  71. package/dist/elements/PreviewButton/index.js +13 -10
  72. package/dist/elements/PreviewButton/index.js.map +1 -1
  73. package/dist/elements/PreviewButton/index.scss +39 -0
  74. package/dist/elements/PreviewButton/usePreviewURL.d.ts.map +1 -1
  75. package/dist/elements/PreviewButton/usePreviewURL.js +1 -1
  76. package/dist/elements/PreviewButton/usePreviewURL.js.map +1 -1
  77. package/dist/elements/RelationshipTable/AddNewButton.d.ts +17 -0
  78. package/dist/elements/RelationshipTable/AddNewButton.d.ts.map +1 -0
  79. package/dist/elements/RelationshipTable/AddNewButton.js +64 -0
  80. package/dist/elements/RelationshipTable/AddNewButton.js.map +1 -0
  81. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  82. package/dist/elements/RelationshipTable/index.js +35 -49
  83. package/dist/elements/RelationshipTable/index.js.map +1 -1
  84. package/dist/elements/RelationshipTable/index.scss +4 -0
  85. package/dist/elements/ShimmerEffect/index.d.ts +2 -0
  86. package/dist/elements/ShimmerEffect/index.d.ts.map +1 -1
  87. package/dist/elements/ShimmerEffect/index.js +5 -3
  88. package/dist/elements/ShimmerEffect/index.js.map +1 -1
  89. package/dist/elements/Table/index.scss +1 -0
  90. package/dist/elements/Thumbnail/createThumbnail.d.ts.map +1 -1
  91. package/dist/elements/Thumbnail/createThumbnail.js +8 -2
  92. package/dist/elements/Thumbnail/createThumbnail.js.map +1 -1
  93. package/dist/exports/client/{CodeEditor-Z3ZZJH7C.js → CodeEditor-YP63NRLU.js} +2 -2
  94. package/dist/exports/client/{chunk-CNCOIY3Y.js → chunk-5EP6VERX.js} +4 -4
  95. package/dist/exports/client/{chunk-CNCOIY3Y.js.map → chunk-5EP6VERX.js.map} +3 -3
  96. package/dist/exports/client/index.d.ts +3 -2
  97. package/dist/exports/client/index.d.ts.map +1 -1
  98. package/dist/exports/client/index.js +22 -22
  99. package/dist/exports/client/index.js.map +4 -4
  100. package/dist/exports/shared/index.js +1 -1
  101. package/dist/exports/shared/index.js.map +2 -2
  102. package/dist/fields/DateTime/index.d.ts.map +1 -1
  103. package/dist/fields/DateTime/index.js +1 -0
  104. package/dist/fields/DateTime/index.js.map +1 -1
  105. package/dist/forms/Form/index.d.ts.map +1 -1
  106. package/dist/forms/Form/index.js +1 -1
  107. package/dist/forms/Form/index.js.map +1 -1
  108. package/dist/forms/Form/mergeServerFormState.js +1 -1
  109. package/dist/forms/Form/mergeServerFormState.js.map +1 -1
  110. package/dist/hooks/usePopupWindow.d.ts +20 -0
  111. package/dist/hooks/usePopupWindow.d.ts.map +1 -0
  112. package/dist/hooks/usePopupWindow.js +144 -0
  113. package/dist/hooks/usePopupWindow.js.map +1 -0
  114. package/dist/icons/ExternalLink/index.d.ts.map +1 -0
  115. package/dist/icons/ExternalLink/index.js.map +1 -0
  116. package/dist/icons/Eye/index.d.ts +7 -0
  117. package/dist/icons/Eye/index.d.ts.map +1 -0
  118. package/dist/icons/Eye/index.js +28 -0
  119. package/dist/icons/Eye/index.js.map +1 -0
  120. package/dist/icons/Eye/index.scss +20 -0
  121. package/dist/providers/ListQuery/types.d.ts +2 -2
  122. package/dist/providers/ListQuery/types.d.ts.map +1 -1
  123. package/dist/providers/ListQuery/types.js.map +1 -1
  124. package/dist/providers/LivePreview/collisionDetection.d.ts +3 -0
  125. package/dist/providers/LivePreview/collisionDetection.d.ts.map +1 -0
  126. package/dist/providers/LivePreview/collisionDetection.js +29 -0
  127. package/dist/providers/LivePreview/collisionDetection.js.map +1 -0
  128. package/dist/providers/LivePreview/context.d.ts +55 -0
  129. package/dist/providers/LivePreview/context.d.ts.map +1 -0
  130. package/dist/providers/LivePreview/context.js +44 -0
  131. package/dist/providers/LivePreview/context.js.map +1 -0
  132. package/dist/providers/LivePreview/index.d.ts +16 -0
  133. package/dist/providers/LivePreview/index.d.ts.map +1 -0
  134. package/dist/providers/LivePreview/index.js +206 -0
  135. package/dist/providers/LivePreview/index.js.map +1 -0
  136. package/dist/providers/LivePreview/index.scss +68 -0
  137. package/dist/providers/LivePreview/sizeReducer.d.ts +20 -0
  138. package/dist/providers/LivePreview/sizeReducer.d.ts.map +1 -0
  139. package/dist/providers/LivePreview/sizeReducer.js +30 -0
  140. package/dist/providers/LivePreview/sizeReducer.js.map +1 -0
  141. package/dist/providers/TableColumns/buildColumnState/index.d.ts +3 -3
  142. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  143. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  144. package/dist/providers/TableColumns/getInitialColumns.d.ts +2 -2
  145. package/dist/providers/TableColumns/getInitialColumns.d.ts.map +1 -1
  146. package/dist/providers/TableColumns/getInitialColumns.js.map +1 -1
  147. package/dist/providers/TableColumns/types.d.ts +2 -2
  148. package/dist/providers/TableColumns/types.d.ts.map +1 -1
  149. package/dist/providers/TableColumns/types.js.map +1 -1
  150. package/dist/styles.css +1 -1
  151. package/dist/utilities/buildTableState.d.ts +2 -2
  152. package/dist/utilities/buildTableState.d.ts.map +1 -1
  153. package/dist/utilities/buildTableState.js +4 -4
  154. package/dist/utilities/buildTableState.js.map +1 -1
  155. package/dist/utilities/formatDocTitle/index.js +2 -2
  156. package/dist/utilities/formatDocTitle/index.js.map +1 -1
  157. package/dist/utilities/renderTable.d.ts +3 -3
  158. package/dist/utilities/renderTable.d.ts.map +1 -1
  159. package/dist/utilities/renderTable.js.map +1 -1
  160. package/dist/views/Edit/index.d.ts.map +1 -1
  161. package/dist/views/Edit/index.js +52 -41
  162. package/dist/views/Edit/index.js.map +1 -1
  163. package/dist/views/Edit/index.scss +39 -1
  164. package/package.json +4 -4
  165. package/dist/elements/BulkUpload/index.scss +0 -0
  166. package/dist/graphics/ExternalLink/index.d.ts.map +0 -1
  167. package/dist/graphics/ExternalLink/index.js.map +0 -1
  168. /package/dist/exports/client/{CodeEditor-Z3ZZJH7C.js.map → CodeEditor-YP63NRLU.js.map} +0 -0
  169. /package/dist/{graphics → icons}/ExternalLink/index.d.ts +0 -0
  170. /package/dist/{graphics → icons}/ExternalLink/index.js +0 -0
  171. /package/dist/{graphics → icons}/ExternalLink/index.scss +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;AAazB,OAAO,cAAc,CAAA;AASrB,wBAAgB,WAAW,sBA8K1B"}
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"}
@@ -15,16 +15,17 @@ 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';
18
19
  import { Thumbnail } from '../../Thumbnail/index.js';
19
20
  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';
24
25
  const addMoreFilesDrawerSlug = 'bulk-upload-drawer--add-more-files';
25
26
  const baseClass = 'file-selections';
26
27
  export function FileSidebar() {
27
- const $ = _c(36);
28
+ const $ = _c(34);
28
29
  const {
29
30
  activeIndex,
30
31
  addFiles,
@@ -32,7 +33,6 @@ export function FileSidebar() {
32
33
  isInitializing,
33
34
  removeFile,
34
35
  setActiveIndex,
35
- thumbnailUrls,
36
36
  totalErrorCount
37
37
  } = useFormsManager();
38
38
  const {
@@ -88,27 +88,28 @@ 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] !== thumbnailUrls || $[23] !== totalErrorCount || $[24] !== 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] !== totalErrorCount || $[23] !== totalFileCount) {
92
92
  let t6;
93
- if ($[26] === Symbol.for("react.memo_cache_sentinel")) {
93
+ if ($[25] === Symbol.for("react.memo_cache_sentinel")) {
94
94
  t6 = () => setShowFiles(_temp2);
95
- $[26] = t6;
95
+ $[25] = t6;
96
96
  } else {
97
- t6 = $[26];
97
+ t6 = $[25];
98
98
  }
99
99
  let t7;
100
- if ($[27] !== closeModal) {
100
+ if ($[26] !== closeModal) {
101
101
  t7 = () => closeModal(addMoreFilesDrawerSlug);
102
- $[27] = closeModal;
103
- $[28] = t7;
102
+ $[26] = closeModal;
103
+ $[27] = t7;
104
104
  } else {
105
- t7 = $[28];
105
+ t7 = $[27];
106
106
  }
107
107
  let t8;
108
- if ($[29] !== activeIndex || $[30] !== handleRemoveFile || $[31] !== i18n || $[32] !== setActiveIndex || $[33] !== t || $[34] !== thumbnailUrls) {
108
+ if ($[28] !== activeIndex || $[29] !== handleRemoveFile || $[30] !== i18n || $[31] !== setActiveIndex || $[32] !== t) {
109
109
  t8 = (t9, index_0) => {
110
110
  const {
111
111
  errorCount,
112
+ formID,
112
113
  formState
113
114
  } = t9;
114
115
  const currentFile = formState?.file?.value || {};
@@ -118,9 +119,9 @@ export function FileSidebar() {
118
119
  className: `${baseClass}__fileRow`,
119
120
  onClick: () => setActiveIndex(index_0),
120
121
  type: "button",
121
- children: [_jsx(Thumbnail, {
122
- className: `${baseClass}__thumbnail`,
123
- fileSrc: isImage(currentFile.type) ? thumbnailUrls[index_0] : null
122
+ children: [_jsx(SidebarThumbnail, {
123
+ file: currentFile,
124
+ formID
124
125
  }), _jsx("div", {
125
126
  className: `${baseClass}__fileDetails`,
126
127
  children: _jsx("p", {
@@ -146,17 +147,16 @@ export function FileSidebar() {
146
147
  type: "button",
147
148
  children: _jsx(XIcon, {})
148
149
  })]
149
- }, index_0);
150
+ }, formID);
150
151
  };
151
- $[29] = activeIndex;
152
- $[30] = handleRemoveFile;
153
- $[31] = i18n;
154
- $[32] = setActiveIndex;
155
- $[33] = t;
156
- $[34] = thumbnailUrls;
157
- $[35] = t8;
152
+ $[28] = activeIndex;
153
+ $[29] = handleRemoveFile;
154
+ $[30] = i18n;
155
+ $[31] = setActiveIndex;
156
+ $[32] = t;
157
+ $[33] = t8;
158
158
  } else {
159
- t8 = $[35];
159
+ t8 = $[33];
160
160
  }
161
161
  t5 = _jsxs("div", {
162
162
  className: t4,
@@ -238,12 +238,11 @@ export function FileSidebar() {
238
238
  $[19] = showFiles;
239
239
  $[20] = t;
240
240
  $[21] = t4;
241
- $[22] = thumbnailUrls;
242
- $[23] = totalErrorCount;
243
- $[24] = totalFileCount;
244
- $[25] = t5;
241
+ $[22] = totalErrorCount;
242
+ $[23] = totalFileCount;
243
+ $[24] = t5;
245
244
  } else {
246
- t5 = $[25];
245
+ t5 = $[24];
247
246
  }
248
247
  return t5;
249
248
  }
@@ -263,4 +262,50 @@ function _temp(file) {
263
262
  const formattedSize = (size / Math.pow(1024, i)).toFixed(decimals) + " " + ["B", "kB", "MB", "GB", "TB"][i];
264
263
  return formattedSize;
265
264
  }
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
+ }
266
311
  //# 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","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":[]}
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":"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","ignoreList":[]}
@@ -83,12 +83,13 @@
83
83
  background-color: var(--theme-elevation-100);
84
84
  }
85
85
 
86
- .thumbnail {
87
- width: base(1.2);
88
- height: base(1.2);
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);
89
91
  flex-shrink: 0;
90
92
  object-fit: cover;
91
- border-radius: var(--style-radius-s);
92
93
  }
93
94
 
94
95
  p {
@@ -24,7 +24,6 @@ type FormsManagerContext = {
24
24
  errorCount: number;
25
25
  index: number;
26
26
  }) => void;
27
- readonly thumbnailUrls: string[];
28
27
  readonly totalErrorCount?: number;
29
28
  readonly updateUploadEdits: (args: UploadEdits) => void;
30
29
  };
@@ -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;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"}
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"}
@@ -2,7 +2,6 @@
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';
6
5
  import * as qs from 'qs-esm';
7
6
  import React from 'react';
8
7
  import { toast } from 'sonner';
@@ -15,7 +14,6 @@ import { useUploadHandlers } from '../../../providers/UploadHandlers/index.js';
15
14
  import { hasSavePermission as getHasSavePermission } from '../../../utilities/hasSavePermission.js';
16
15
  import { LoadingOverlay } from '../../Loading/index.js';
17
16
  import { useLoadingOverlay } from '../../LoadingOverlay/index.js';
18
- import { createThumbnail } from '../../Thumbnail/createThumbnail.js';
19
17
  import { useBulkUpload } from '../index.js';
20
18
  import { createFormData } from './createFormData.js';
21
19
  import { formsManagementReducer } from './reducer.js';
@@ -38,7 +36,6 @@ const Context = /*#__PURE__*/React.createContext({
38
36
  saveAllDocs: () => Promise.resolve(),
39
37
  setActiveIndex: () => 0,
40
38
  setFormTotalErrorCount: () => {},
41
- thumbnailUrls: [],
42
39
  totalErrorCount: 0,
43
40
  updateUploadEdits: () => {}
44
41
  });
@@ -89,33 +86,6 @@ export function FormsManagerProvider({
89
86
  } = state;
90
87
  const formsRef = React.useRef(forms);
91
88
  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]);
119
89
  const {
120
90
  toggleLoadingOverlay
121
91
  } = useLoadingOverlay();
@@ -204,10 +174,11 @@ export function FormsManagerProvider({
204
174
  type: 'REPLACE',
205
175
  state: {
206
176
  activeIndex: index,
207
- forms: forms.map((form, i_0) => {
208
- if (i_0 === activeIndex) {
177
+ forms: forms.map((form, i) => {
178
+ if (i === activeIndex) {
209
179
  return {
210
180
  errorCount: form.errorCount,
181
+ formID: form.formID,
211
182
  formState: currentFormsData,
212
183
  uploadEdits: form.uploadEdits
213
184
  };
@@ -218,6 +189,15 @@ export function FormsManagerProvider({
218
189
  });
219
190
  }, [forms, activeIndex]);
220
191
  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
+ }
221
201
  toggleLoadingOverlay({
222
202
  isLoading: true,
223
203
  key: 'addingDocs'
@@ -234,18 +214,13 @@ export function FormsManagerProvider({
234
214
  isLoading: false,
235
215
  key: 'addingDocs'
236
216
  });
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
- }, []);
217
+ }, [initializeSharedFormState, hasInitializedState, toggleLoadingOverlay, activeIndex, forms]);
242
218
  const removeFile = React.useCallback(index_0 => {
243
219
  dispatch({
244
220
  type: 'REMOVE_FORM',
245
221
  index: index_0
246
222
  });
247
- removeThumbnails([index_0]);
248
- }, [removeThumbnails]);
223
+ }, []);
249
224
  const setFormTotalErrorCount = React.useCallback(({
250
225
  errorCount,
251
226
  index: index_1
@@ -263,16 +238,17 @@ export function FormsManagerProvider({
263
238
  const currentForms = [...forms];
264
239
  currentForms[activeIndex] = {
265
240
  errorCount: currentForms[activeIndex].errorCount,
241
+ formID: currentForms[activeIndex].formID,
266
242
  formState: currentFormsData_0,
267
243
  uploadEdits: currentForms[activeIndex].uploadEdits
268
244
  };
269
245
  const newDocs = [];
270
246
  setIsUploading(true);
271
- for (let i_2 = 0; i_2 < currentForms.length; i_2++) {
247
+ for (let i_0 = 0; i_0 < currentForms.length; i_0++) {
272
248
  try {
273
- const form_0 = currentForms[i_2];
249
+ const form_0 = currentForms[i_0];
274
250
  setLoadingText(t('general:uploadingBulk', {
275
- current: i_2 + 1,
251
+ current: i_0 + 1,
276
252
  total: currentForms.length
277
253
  }));
278
254
  const actionURLWithParams = `${actionURL}${qs.stringify({
@@ -308,22 +284,23 @@ export function FormsManagerProvider({
308
284
  }
309
285
  return [[...fieldErrs, ...newFieldErrs], [...nonFieldErrs, ...newNonFieldErrs]];
310
286
  }, [[], []]);
311
- currentForms[i_2] = {
287
+ currentForms[i_0] = {
312
288
  errorCount: fieldErrors.length,
313
- formState: fieldReducer(currentForms[i_2].formState, {
289
+ formID: currentForms[i_0].formID,
290
+ formState: fieldReducer(currentForms[i_0].formState, {
314
291
  type: 'ADD_SERVER_ERRORS',
315
292
  errors: fieldErrors
316
293
  })
317
294
  };
318
295
  if (req.status === 413 || req.status === 400) {
319
296
  // file too large
320
- currentForms[i_2] = {
321
- ...currentForms[i_2],
322
- errorCount: currentForms[i_2].errorCount + 1
297
+ currentForms[i_0] = {
298
+ ...currentForms[i_0],
299
+ errorCount: currentForms[i_0].errorCount + 1
323
300
  };
324
301
  toast.error(nonFieldErrors[0]?.message);
325
302
  }
326
- } catch (__0) {
303
+ } catch (_) {
327
304
  // swallow
328
305
  }
329
306
  }
@@ -334,11 +311,11 @@ export function FormsManagerProvider({
334
311
  const thumbnailIndexesToRemove = [];
335
312
  currentForms.forEach(({
336
313
  errorCount: errorCount_0
337
- }, i_3) => {
314
+ }, i_1) => {
338
315
  if (errorCount_0) {
339
- remainingForms.push(currentForms[i_3]);
316
+ remainingForms.push(currentForms[i_1]);
340
317
  } else {
341
- thumbnailIndexesToRemove.push(i_3);
318
+ thumbnailIndexesToRemove.push(i_1);
342
319
  }
343
320
  });
344
321
  const successCount = Math.max(0, currentForms.length - remainingForms.length);
@@ -348,9 +325,6 @@ export function FormsManagerProvider({
348
325
  if (typeof onSuccess === 'function') {
349
326
  onSuccess(newDocs, errorCount_1);
350
327
  }
351
- if (remainingForms.length && thumbnailIndexesToRemove.length) {
352
- removeThumbnails(thumbnailIndexesToRemove);
353
- }
354
328
  }
355
329
  if (errorCount_1) {
356
330
  toast.error(`Failed to save ${errorCount_1} files`);
@@ -367,17 +341,17 @@ export function FormsManagerProvider({
367
341
  }) => acc + errorCount_2, 0)
368
342
  }
369
343
  });
370
- }, [actionURL, activeIndex, forms, removeThumbnails, onSuccess, collectionSlug, getUploadHandler, t, closeModal, drawerSlug]);
344
+ }, [actionURL, collectionSlug, getUploadHandler, t, forms, activeIndex, closeModal, drawerSlug, onSuccess]);
371
345
  const bulkUpdateForm = React.useCallback(async (updatedFields, afterStateUpdate) => {
372
- for (let i_4 = 0; i_4 < forms.length; i_4++) {
346
+ for (let i_2 = 0; i_2 < forms.length; i_2++) {
373
347
  Object.entries(updatedFields).forEach(([path, value]) => {
374
- if (forms[i_4].formState[path]) {
375
- forms[i_4].formState[path].value = value;
348
+ if (forms[i_2].formState[path]) {
349
+ forms[i_2].formState[path].value = value;
376
350
  dispatch({
377
351
  type: 'UPDATE_FORM',
378
- errorCount: forms[i_4].errorCount,
379
- formState: forms[i_4].formState,
380
- index: i_4
352
+ errorCount: forms[i_2].errorCount,
353
+ formState: forms[i_2].formState,
354
+ index: i_2
381
355
  });
382
356
  }
383
357
  });
@@ -391,7 +365,7 @@ export function FormsManagerProvider({
391
365
  collectionSlug,
392
366
  docPermissions,
393
367
  docPreferences: null,
394
- formState: forms[i_4].formState,
368
+ formState: forms[i_2].formState,
395
369
  operation: 'create',
396
370
  schemaPath: collectionSlug
397
371
  });
@@ -400,7 +374,7 @@ export function FormsManagerProvider({
400
374
  type: 'UPDATE_FORM',
401
375
  errorCount: newFormErrorCount,
402
376
  formState: state_0,
403
- index: i_4
377
+ index: i_2
404
378
  });
405
379
  }
406
380
  }
@@ -467,7 +441,6 @@ export function FormsManagerProvider({
467
441
  saveAllDocs,
468
442
  setActiveIndex,
469
443
  setFormTotalErrorCount,
470
- thumbnailUrls: renderedThumbnails,
471
444
  totalErrorCount,
472
445
  updateUploadEdits
473
446
  },