@payloadcms/ui 3.83.0-internal.06ac84e → 3.83.0-internal.ddc1147

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 (46) hide show
  1. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts.map +1 -1
  2. package/dist/elements/BulkUpload/FormsManager/createFormData.js +1 -0
  3. package/dist/elements/BulkUpload/FormsManager/createFormData.js.map +1 -1
  4. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  5. package/dist/elements/BulkUpload/FormsManager/index.js +29 -5
  6. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  7. package/dist/elements/BulkUpload/index.d.ts +2 -0
  8. package/dist/elements/BulkUpload/index.d.ts.map +1 -1
  9. package/dist/elements/BulkUpload/index.js +44 -35
  10. package/dist/elements/BulkUpload/index.js.map +1 -1
  11. package/dist/elements/EditUpload/index.d.ts.map +1 -1
  12. package/dist/elements/EditUpload/index.js +2 -2
  13. package/dist/elements/EditUpload/index.js.map +1 -1
  14. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts.map +1 -1
  15. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +23 -15
  16. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  17. package/dist/elements/PreviewSizes/index.d.ts.map +1 -1
  18. package/dist/elements/PreviewSizes/index.js +2 -2
  19. package/dist/elements/PreviewSizes/index.js.map +1 -1
  20. package/dist/elements/Table/DefaultCell/fields/File/index.d.ts.map +1 -1
  21. package/dist/elements/Table/DefaultCell/fields/File/index.js +4 -2
  22. package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
  23. package/dist/elements/Thumbnail/createThumbnail.js +1 -1
  24. package/dist/elements/Thumbnail/createThumbnail.js.map +1 -1
  25. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  26. package/dist/elements/Thumbnail/index.js +54 -123
  27. package/dist/elements/Thumbnail/index.js.map +1 -1
  28. package/dist/exports/client/index.js +12 -12
  29. package/dist/exports/client/index.js.map +4 -4
  30. package/dist/fields/Slug/index.d.ts.map +1 -1
  31. package/dist/fields/Slug/index.js +62 -51
  32. package/dist/fields/Slug/index.js.map +1 -1
  33. package/dist/forms/Form/index.d.ts.map +1 -1
  34. package/dist/forms/Form/index.js +1 -0
  35. package/dist/forms/Form/index.js.map +1 -1
  36. package/dist/providers/UploadHandlers/index.d.ts +1 -0
  37. package/dist/providers/UploadHandlers/index.d.ts.map +1 -1
  38. package/dist/providers/UploadHandlers/index.js.map +1 -1
  39. package/dist/utilities/appendCacheTag.d.ts +6 -0
  40. package/dist/utilities/appendCacheTag.d.ts.map +1 -0
  41. package/dist/utilities/appendCacheTag.js +11 -0
  42. package/dist/utilities/appendCacheTag.js.map +1 -0
  43. package/dist/utilities/appendCacheTag.spec.js +34 -0
  44. package/dist/utilities/appendCacheTag.spec.js.map +1 -0
  45. package/dist/utilities/handleLivePreview.d.ts.map +1 -1
  46. package/package.json +5 -6
@@ -1,158 +1,89 @@
1
1
  'use client';
2
2
 
3
- import { c as _c } from "react/compiler-runtime";
4
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
4
  import React from 'react';
6
5
  import './index.scss';
7
6
  const baseClass = 'thumbnail';
8
7
  import { File } from '../../graphics/File/index.js';
8
+ import { appendCacheTag } from '../../utilities/appendCacheTag.js';
9
9
  import { ShimmerEffect } from '../ShimmerEffect/index.js';
10
10
  export const Thumbnail = props => {
11
- const $ = _c(6);
12
11
  const {
13
- className: t0,
14
- doc: t1,
12
+ className = '',
13
+ doc: {
14
+ filename
15
+ } = {},
15
16
  fileSrc,
16
17
  height,
17
18
  imageCacheTag,
18
19
  size,
19
20
  width
20
21
  } = props;
21
- const className = t0 === undefined ? "" : t0;
22
- const {
23
- filename
24
- } = t1 === undefined ? {} : t1;
25
22
  const [fileExists, setFileExists] = React.useState(undefined);
26
- const t2 = `${baseClass}--size-${size || "medium"}`;
27
- let t3;
28
- if ($[0] !== className || $[1] !== t2) {
29
- t3 = [baseClass, t2, className];
30
- $[0] = className;
31
- $[1] = t2;
32
- $[2] = t3;
33
- } else {
34
- t3 = $[2];
35
- }
36
- const classNames = t3.join(" ");
37
- let t4;
38
- let t5;
39
- if ($[3] !== fileSrc) {
40
- t4 = () => {
41
- if (!fileSrc) {
42
- setFileExists(false);
43
- return;
44
- }
45
- setFileExists(undefined);
46
- const img = new Image();
47
- img.src = fileSrc;
48
- img.onload = () => {
49
- setFileExists(true);
50
- };
51
- img.onerror = () => {
52
- setFileExists(false);
53
- };
23
+ const classNames = [baseClass, `${baseClass}--size-${size || 'medium'}`, className].join(' ');
24
+ const src = React.useMemo(() => fileSrc ? appendCacheTag(fileSrc, imageCacheTag) : null, [fileSrc, imageCacheTag]);
25
+ React.useEffect(() => {
26
+ if (!src) {
27
+ setFileExists(false);
28
+ return;
29
+ }
30
+ setFileExists(undefined);
31
+ const img = new Image();
32
+ img.src = src;
33
+ img.onload = () => {
34
+ setFileExists(true);
35
+ };
36
+ img.onerror = () => {
37
+ setFileExists(false);
54
38
  };
55
- t5 = [fileSrc];
56
- $[3] = fileSrc;
57
- $[4] = t4;
58
- $[5] = t5;
59
- } else {
60
- t4 = $[4];
61
- t5 = $[5];
62
- }
63
- React.useEffect(t4, t5);
64
- let src = null;
65
- if (fileSrc) {
66
- const queryChar = fileSrc?.includes("?") ? "&" : "?";
67
- src = imageCacheTag ? `${fileSrc}${queryChar}${encodeURIComponent(imageCacheTag)}` : fileSrc;
68
- }
69
- return _jsxs("div", {
39
+ }, [src]);
40
+ return /*#__PURE__*/_jsxs("div", {
70
41
  className: classNames,
71
- children: [fileExists === undefined && _jsx(ShimmerEffect, {
42
+ children: [fileExists === undefined && /*#__PURE__*/_jsx(ShimmerEffect, {
72
43
  height: "100%"
73
- }), fileExists && _jsx("img", {
44
+ }), fileExists && /*#__PURE__*/_jsx("img", {
74
45
  alt: filename,
75
- height,
76
- src,
77
- width
78
- }), fileExists === false && _jsx(File, {})]
46
+ height: height,
47
+ src: src,
48
+ width: width
49
+ }), fileExists === false && /*#__PURE__*/_jsx(File, {})]
79
50
  });
80
51
  };
81
52
  export function ThumbnailComponent(props) {
82
- const $ = _c(12);
83
53
  const {
84
54
  alt,
85
- className: t0,
55
+ className = '',
86
56
  filename,
87
57
  fileSrc,
88
58
  imageCacheTag,
89
59
  size
90
60
  } = props;
91
- const className = t0 === undefined ? "" : t0;
92
61
  const [fileExists, setFileExists] = React.useState(undefined);
93
- const t1 = `${baseClass}--size-${size || "medium"}`;
94
- let t2;
95
- if ($[0] !== className || $[1] !== t1) {
96
- t2 = [baseClass, t1, className];
97
- $[0] = className;
98
- $[1] = t1;
99
- $[2] = t2;
100
- } else {
101
- t2 = $[2];
102
- }
103
- const classNames = t2.join(" ");
104
- let t3;
105
- let t4;
106
- if ($[3] !== fileSrc) {
107
- t3 = () => {
108
- if (!fileSrc) {
109
- setFileExists(false);
110
- return;
111
- }
112
- setFileExists(undefined);
113
- const img = new Image();
114
- img.src = fileSrc;
115
- img.onload = () => {
116
- setFileExists(true);
117
- };
118
- img.onerror = () => {
119
- setFileExists(false);
120
- };
62
+ const classNames = [baseClass, `${baseClass}--size-${size || 'medium'}`, className].join(' ');
63
+ const src = React.useMemo(() => fileSrc ? appendCacheTag(fileSrc, imageCacheTag) : null, [fileSrc, imageCacheTag]);
64
+ React.useEffect(() => {
65
+ if (!src) {
66
+ setFileExists(false);
67
+ return;
68
+ }
69
+ setFileExists(undefined);
70
+ const img = new Image();
71
+ img.src = src;
72
+ img.onload = () => {
73
+ setFileExists(true);
74
+ };
75
+ img.onerror = () => {
76
+ setFileExists(false);
121
77
  };
122
- t4 = [fileSrc];
123
- $[3] = fileSrc;
124
- $[4] = t3;
125
- $[5] = t4;
126
- } else {
127
- t3 = $[4];
128
- t4 = $[5];
129
- }
130
- React.useEffect(t3, t4);
131
- let src = "";
132
- if (fileSrc) {
133
- const queryChar = fileSrc?.includes("?") ? "&" : "?";
134
- src = imageCacheTag ? `${fileSrc}${queryChar}${encodeURIComponent(imageCacheTag)}` : fileSrc;
135
- }
136
- let t5;
137
- if ($[6] !== alt || $[7] !== classNames || $[8] !== fileExists || $[9] !== filename || $[10] !== src) {
138
- t5 = _jsxs("div", {
139
- className: classNames,
140
- children: [fileExists === undefined && _jsx(ShimmerEffect, {
141
- height: "100%"
142
- }), fileExists && _jsx("img", {
143
- alt: alt || filename,
144
- src
145
- }), fileExists === false && _jsx(File, {})]
146
- });
147
- $[6] = alt;
148
- $[7] = classNames;
149
- $[8] = fileExists;
150
- $[9] = filename;
151
- $[10] = src;
152
- $[11] = t5;
153
- } else {
154
- t5 = $[11];
155
- }
156
- return t5;
78
+ }, [src]);
79
+ return /*#__PURE__*/_jsxs("div", {
80
+ className: classNames,
81
+ children: [fileExists === undefined && /*#__PURE__*/_jsx(ShimmerEffect, {
82
+ height: "100%"
83
+ }), fileExists && /*#__PURE__*/_jsx("img", {
84
+ alt: alt || filename,
85
+ src: src
86
+ }), fileExists === false && /*#__PURE__*/_jsx(File, {})]
87
+ });
157
88
  }
158
89
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","baseClass","File","ShimmerEffect","Thumbnail","props","$","className","t0","doc","t1","fileSrc","height","imageCacheTag","size","width","undefined","filename","fileExists","setFileExists","useState","t2","t3","classNames","join","t4","t5","img","Image","src","onload","onerror","useEffect","queryChar","includes","encodeURIComponent","_jsxs","children","_jsx","alt","ThumbnailComponent"],"sources":["../../../src/elements/Thumbnail/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'thumbnail'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { File } from '../../graphics/File/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\n\nexport type ThumbnailProps = {\n className?: string\n collectionSlug?: string\n doc?: Record<string, unknown>\n fileSrc?: string\n height?: number\n imageCacheTag?: string\n size?: 'expand' | 'large' | 'medium' | 'none' | 'small'\n uploadConfig?: SanitizedCollectionConfig['upload']\n width?: number\n}\n\nexport const Thumbnail: React.FC<ThumbnailProps> = (props) => {\n const {\n className = '',\n doc: { filename } = {},\n fileSrc,\n height,\n imageCacheTag,\n size,\n width,\n } = props\n const [fileExists, setFileExists] = React.useState(undefined)\n\n const classNames = [baseClass, `${baseClass}--size-${size || 'medium'}`, className].join(' ')\n\n React.useEffect(() => {\n if (!fileSrc) {\n setFileExists(false)\n return\n }\n setFileExists(undefined)\n\n const img = new Image()\n img.src = fileSrc\n img.onload = () => {\n setFileExists(true)\n }\n img.onerror = () => {\n setFileExists(false)\n }\n }, [fileSrc])\n\n let src: null | string = null\n\n /**\n * If an imageCacheTag is provided, append it to the fileSrc\n * Check if the fileSrc already has a query string, if it does, append the imageCacheTag with an ampersand\n */\n if (fileSrc) {\n const queryChar = fileSrc?.includes('?') ? '&' : '?'\n src = imageCacheTag ? `${fileSrc}${queryChar}${encodeURIComponent(imageCacheTag)}` : fileSrc\n }\n\n return (\n <div className={classNames}>\n {fileExists === undefined && <ShimmerEffect height=\"100%\" />}\n {fileExists && <img alt={filename as string} height={height} src={src} width={width} />}\n {fileExists === false && <File />}\n </div>\n )\n}\n\ntype ThumbnailComponentProps = {\n readonly alt?: string\n readonly className?: string\n readonly filename: string\n readonly fileSrc: string\n readonly imageCacheTag?: string\n readonly size?: 'expand' | 'large' | 'medium' | 'none' | 'small'\n}\nexport function ThumbnailComponent(props: ThumbnailComponentProps) {\n const { alt, className = '', filename, fileSrc, imageCacheTag, size } = props\n const [fileExists, setFileExists] = React.useState(undefined)\n\n const classNames = [baseClass, `${baseClass}--size-${size || 'medium'}`, className].join(' ')\n\n React.useEffect(() => {\n if (!fileSrc) {\n setFileExists(false)\n return\n }\n setFileExists(undefined)\n\n const img = new Image()\n img.src = fileSrc\n img.onload = () => {\n setFileExists(true)\n }\n img.onerror = () => {\n setFileExists(false)\n }\n }, [fileSrc])\n\n let src: string = ''\n\n /**\n * If an imageCacheTag is provided, append it to the fileSrc\n * Check if the fileSrc already has a query string, if it does, append the imageCacheTag with an ampersand\n */\n if (fileSrc) {\n const queryChar = fileSrc?.includes('?') ? '&' : '?'\n src = imageCacheTag ? `${fileSrc}${queryChar}${encodeURIComponent(imageCacheTag)}` : fileSrc\n }\n\n return (\n <div className={classNames}>\n {fileExists === undefined && <ShimmerEffect height=\"100%\" />}\n {fileExists && <img alt={alt || filename} src={src} />}\n {fileExists === false && <File />}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","baseClass","File","appendCacheTag","ShimmerEffect","Thumbnail","props","className","doc","filename","fileSrc","height","imageCacheTag","size","width","fileExists","setFileExists","useState","undefined","classNames","join","src","useMemo","useEffect","img","Image","onload","onerror","_jsxs","_jsx","alt","ThumbnailComponent"],"sources":["../../../src/elements/Thumbnail/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'thumbnail'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { File } from '../../graphics/File/index.js'\nimport { appendCacheTag } from '../../utilities/appendCacheTag.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\n\nexport type ThumbnailProps = {\n className?: string\n collectionSlug?: string\n doc?: Record<string, unknown>\n fileSrc?: string\n height?: number\n imageCacheTag?: string\n size?: 'expand' | 'large' | 'medium' | 'none' | 'small'\n uploadConfig?: SanitizedCollectionConfig['upload']\n width?: number\n}\n\nexport const Thumbnail: React.FC<ThumbnailProps> = (props) => {\n const {\n className = '',\n doc: { filename } = {},\n fileSrc,\n height,\n imageCacheTag,\n size,\n width,\n } = props\n const [fileExists, setFileExists] = React.useState(undefined)\n\n const classNames = [baseClass, `${baseClass}--size-${size || 'medium'}`, className].join(' ')\n\n const src = React.useMemo(\n () => (fileSrc ? appendCacheTag(fileSrc, imageCacheTag) : null),\n [fileSrc, imageCacheTag],\n )\n\n React.useEffect(() => {\n if (!src) {\n setFileExists(false)\n return\n }\n setFileExists(undefined)\n\n const img = new Image()\n img.src = src\n img.onload = () => {\n setFileExists(true)\n }\n img.onerror = () => {\n setFileExists(false)\n }\n }, [src])\n\n return (\n <div className={classNames}>\n {fileExists === undefined && <ShimmerEffect height=\"100%\" />}\n {fileExists && <img alt={filename as string} height={height} src={src} width={width} />}\n {fileExists === false && <File />}\n </div>\n )\n}\n\ntype ThumbnailComponentProps = {\n readonly alt?: string\n readonly className?: string\n readonly filename: string\n readonly fileSrc: string\n readonly imageCacheTag?: string\n readonly size?: 'expand' | 'large' | 'medium' | 'none' | 'small'\n}\nexport function ThumbnailComponent(props: ThumbnailComponentProps) {\n const { alt, className = '', filename, fileSrc, imageCacheTag, size } = props\n const [fileExists, setFileExists] = React.useState(undefined)\n\n const classNames = [baseClass, `${baseClass}--size-${size || 'medium'}`, className].join(' ')\n\n const src = React.useMemo(\n () => (fileSrc ? appendCacheTag(fileSrc, imageCacheTag) : null),\n [fileSrc, imageCacheTag],\n )\n\n React.useEffect(() => {\n if (!src) {\n setFileExists(false)\n return\n }\n setFileExists(undefined)\n\n const img = new Image()\n img.src = src\n img.onload = () => {\n setFileExists(true)\n }\n img.onerror = () => {\n setFileExists(false)\n }\n }, [src])\n\n return (\n <div className={classNames}>\n {fileExists === undefined && <ShimmerEffect height=\"100%\" />}\n {fileExists && <img alt={alt || filename} src={src} />}\n {fileExists === false && <File />}\n </div>\n )\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,KAAA,MAAW;AAElB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAIlB,SAASC,IAAI,QAAQ;AACrB,SAASC,cAAc,QAAQ;AAC/B,SAASC,aAAa,QAAQ;AAc9B,OAAO,MAAMC,SAAA,GAAuCC,KAAA;EAClD,MAAM;IACJC,SAAA,GAAY,EAAE;IACdC,GAAA,EAAK;MAAEC;IAAQ,CAAE,GAAG,CAAC,CAAC;IACtBC,OAAO;IACPC,MAAM;IACNC,aAAa;IACbC,IAAI;IACJC;EAAK,CACN,GAAGR,KAAA;EACJ,MAAM,CAACS,UAAA,EAAYC,aAAA,CAAc,GAAGhB,KAAA,CAAMiB,QAAQ,CAACC,SAAA;EAEnD,MAAMC,UAAA,GAAa,CAAClB,SAAA,EAAW,GAAGA,SAAA,UAAmBY,IAAA,IAAQ,UAAU,EAAEN,SAAA,CAAU,CAACa,IAAI,CAAC;EAEzF,MAAMC,GAAA,GAAMrB,KAAA,CAAMsB,OAAO,CACvB,MAAOZ,OAAA,GAAUP,cAAA,CAAeO,OAAA,EAASE,aAAA,IAAiB,MAC1D,CAACF,OAAA,EAASE,aAAA,CAAc;EAG1BZ,KAAA,CAAMuB,SAAS,CAAC;IACd,IAAI,CAACF,GAAA,EAAK;MACRL,aAAA,CAAc;MACd;IACF;IACAA,aAAA,CAAcE,SAAA;IAEd,MAAMM,GAAA,GAAM,IAAIC,KAAA;IAChBD,GAAA,CAAIH,GAAG,GAAGA,GAAA;IACVG,GAAA,CAAIE,MAAM,GAAG;MACXV,aAAA,CAAc;IAChB;IACAQ,GAAA,CAAIG,OAAO,GAAG;MACZX,aAAA,CAAc;IAChB;EACF,GAAG,CAACK,GAAA,CAAI;EAER,oBACEO,KAAA,CAAC;IAAIrB,SAAA,EAAWY,UAAA;eACbJ,UAAA,KAAeG,SAAA,iBAAaW,IAAA,CAACzB,aAAA;MAAcO,MAAA,EAAO;QAClDI,UAAA,iBAAcc,IAAA,CAAC;MAAIC,GAAA,EAAKrB,QAAA;MAAoBE,MAAA,EAAQA,MAAA;MAAQU,GAAA,EAAKA,GAAA;MAAKP,KAAA,EAAOA;QAC7EC,UAAA,KAAe,sBAASc,IAAA,CAAC3B,IAAA;;AAGhC;AAUA,OAAO,SAAS6B,mBAAmBzB,KAA8B;EAC/D,MAAM;IAAEwB,GAAG;IAAEvB,SAAA,GAAY,EAAE;IAAEE,QAAQ;IAAEC,OAAO;IAAEE,aAAa;IAAEC;EAAI,CAAE,GAAGP,KAAA;EACxE,MAAM,CAACS,UAAA,EAAYC,aAAA,CAAc,GAAGhB,KAAA,CAAMiB,QAAQ,CAACC,SAAA;EAEnD,MAAMC,UAAA,GAAa,CAAClB,SAAA,EAAW,GAAGA,SAAA,UAAmBY,IAAA,IAAQ,UAAU,EAAEN,SAAA,CAAU,CAACa,IAAI,CAAC;EAEzF,MAAMC,GAAA,GAAMrB,KAAA,CAAMsB,OAAO,CACvB,MAAOZ,OAAA,GAAUP,cAAA,CAAeO,OAAA,EAASE,aAAA,IAAiB,MAC1D,CAACF,OAAA,EAASE,aAAA,CAAc;EAG1BZ,KAAA,CAAMuB,SAAS,CAAC;IACd,IAAI,CAACF,GAAA,EAAK;MACRL,aAAA,CAAc;MACd;IACF;IACAA,aAAA,CAAcE,SAAA;IAEd,MAAMM,GAAA,GAAM,IAAIC,KAAA;IAChBD,GAAA,CAAIH,GAAG,GAAGA,GAAA;IACVG,GAAA,CAAIE,MAAM,GAAG;MACXV,aAAA,CAAc;IAChB;IACAQ,GAAA,CAAIG,OAAO,GAAG;MACZX,aAAA,CAAc;IAChB;EACF,GAAG,CAACK,GAAA,CAAI;EAER,oBACEO,KAAA,CAAC;IAAIrB,SAAA,EAAWY,UAAA;eACbJ,UAAA,KAAeG,SAAA,iBAAaW,IAAA,CAACzB,aAAA;MAAcO,MAAA,EAAO;QAClDI,UAAA,iBAAcc,IAAA,CAAC;MAAIC,GAAA,EAAKA,GAAA,IAAOrB,QAAA;MAAUY,GAAA,EAAKA;QAC9CN,UAAA,KAAe,sBAASc,IAAA,CAAC3B,IAAA;;AAGhC","ignoreList":[]}