@payloadcms/next 3.56.0 → 3.57.0-canary.1

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 (40) hide show
  1. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +19 -41
  2. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js.map +1 -1
  3. package/dist/elements/Nav/index.client.js +28 -48
  4. package/dist/elements/Nav/index.client.js.map +1 -1
  5. package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
  6. package/dist/utilities/handleServerFunctions.js +9 -3
  7. package/dist/utilities/handleServerFunctions.js.map +1 -1
  8. package/dist/views/Document/handleServerFunction.d.ts.map +1 -1
  9. package/dist/views/Document/handleServerFunction.js +4 -30
  10. package/dist/views/Document/handleServerFunction.js.map +1 -1
  11. package/dist/views/List/appendUploadSelectFields.d.ts +11 -0
  12. package/dist/views/List/appendUploadSelectFields.d.ts.map +1 -0
  13. package/dist/views/List/appendUploadSelectFields.js +37 -0
  14. package/dist/views/List/appendUploadSelectFields.js.map +1 -0
  15. package/dist/views/List/handleServerFunction.d.ts.map +1 -1
  16. package/dist/views/List/handleServerFunction.js +4 -30
  17. package/dist/views/List/handleServerFunction.js.map +1 -1
  18. package/dist/views/List/index.d.ts +1 -1
  19. package/dist/views/List/index.d.ts.map +1 -1
  20. package/dist/views/List/index.js +6 -0
  21. package/dist/views/List/index.js.map +1 -1
  22. package/dist/views/Logout/LogoutClient.js +29 -31
  23. package/dist/views/Logout/LogoutClient.js.map +1 -1
  24. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js +12 -28
  25. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js.map +1 -1
  26. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js +17 -27
  27. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
  28. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +23 -33
  29. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  30. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +21 -30
  31. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  32. package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js +16 -50
  33. package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js.map +1 -1
  34. package/dist/views/Version/SelectComparison/VersionDrawer/index.js +8 -12
  35. package/dist/views/Version/SelectComparison/VersionDrawer/index.js.map +1 -1
  36. package/dist/views/Versions/cells/AutosaveCell/index.js +14 -23
  37. package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
  38. package/dist/views/Versions/cells/CreatedAt/index.js +27 -53
  39. package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
  40. package/package.json +9 -9
@@ -7,7 +7,7 @@ import { useParams, usePathname, useSearchParams } from 'next/navigation.js';
7
7
  import { formatAdminURL } from 'payload/shared';
8
8
  import React from 'react';
9
9
  export const DocumentTabLink = t0 => {
10
- const $ = _c(19);
10
+ const $ = _c(13);
11
11
  const {
12
12
  adminRoute,
13
13
  ariaLabel,
@@ -49,55 +49,33 @@ export const DocumentTabLink = t0 => {
49
49
  const href = `${docPath}${hrefFromProps}`;
50
50
  const hrefWithLocale = `${href}${locale ? `?locale=${locale}` : ""}`;
51
51
  let t3;
52
- if ($[3] !== docPath || $[4] !== href || $[5] !== isActiveFromProps || $[6] !== pathname) {
53
- t3 = href === docPath && pathname === docPath || href !== docPath && pathname.startsWith(href) || isActiveFromProps;
54
- $[3] = docPath;
55
- $[4] = href;
56
- $[5] = isActiveFromProps;
57
- $[6] = pathname;
58
- $[7] = t3;
59
- } else {
60
- t3 = $[7];
61
- }
62
- const isActive = t3;
63
- const t4 = isActive && `${baseClass}--active`;
64
- let t5;
65
- if ($[8] !== baseClass || $[9] !== t4) {
66
- t5 = [baseClass, t4].filter(Boolean);
67
- $[8] = baseClass;
68
- $[9] = t4;
69
- $[10] = t5;
70
- } else {
71
- t5 = $[10];
72
- }
73
- const t6 = t5.join(" ");
74
- const t7 = !isActive || href !== pathname ? "link" : "div";
75
- const t8 = !isActive || href !== pathname ? hrefWithLocale : undefined;
76
- let t9;
77
- if ($[11] !== ariaLabel || $[12] !== children || $[13] !== isActive || $[14] !== newTab || $[15] !== t6 || $[16] !== t7 || $[17] !== t8) {
78
- t9 = _jsx(Button, {
52
+ if ($[3] !== ariaLabel || $[4] !== baseClass || $[5] !== children || $[6] !== docPath || $[7] !== href || $[8] !== hrefWithLocale || $[9] !== isActiveFromProps || $[10] !== newTab || $[11] !== pathname) {
53
+ const isActive = href === docPath && pathname === docPath || href !== docPath && pathname.startsWith(href) || isActiveFromProps;
54
+ t3 = _jsx(Button, {
79
55
  "aria-label": ariaLabel,
80
56
  buttonStyle: "tab",
81
- className: t6,
57
+ className: [baseClass, isActive && `${baseClass}--active`].filter(Boolean).join(" "),
82
58
  disabled: isActive,
83
- el: t7,
59
+ el: !isActive || href !== pathname ? "link" : "div",
84
60
  margin: false,
85
61
  newTab,
86
62
  size: "medium",
87
- to: t8,
63
+ to: !isActive || href !== pathname ? hrefWithLocale : undefined,
88
64
  children
89
65
  });
90
- $[11] = ariaLabel;
91
- $[12] = children;
92
- $[13] = isActive;
93
- $[14] = newTab;
94
- $[15] = t6;
95
- $[16] = t7;
96
- $[17] = t8;
97
- $[18] = t9;
66
+ $[3] = ariaLabel;
67
+ $[4] = baseClass;
68
+ $[5] = children;
69
+ $[6] = docPath;
70
+ $[7] = href;
71
+ $[8] = hrefWithLocale;
72
+ $[9] = isActiveFromProps;
73
+ $[10] = newTab;
74
+ $[11] = pathname;
75
+ $[12] = t3;
98
76
  } else {
99
- t9 = $[18];
77
+ t3 = $[12];
100
78
  }
101
- return t9;
79
+ return t3;
102
80
  };
103
81
  //# sourceMappingURL=TabLink.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TabLink.js","names":["c","_c","Button","useParams","usePathname","useSearchParams","formatAdminURL","React","DocumentTabLink","t0","$","adminRoute","ariaLabel","baseClass","children","href","hrefFromProps","isActive","isActiveFromProps","newTab","pathname","params","searchParams","locale","get","entityType","entitySlug","segmentThree","segmentFour","segments","isCollection","t1","t2","path","docPath","hrefWithLocale","t3","startsWith","t4","t5","filter","Boolean","t6","join","t7","t8","undefined","t9","_jsx","buttonStyle","className","disabled","el","margin","size","to"],"sources":["../../../../../src/elements/DocumentHeader/Tabs/Tab/TabLink.tsx"],"sourcesContent":["'use client'\nimport type { SanitizedConfig } from 'payload'\n\nimport { Button } from '@payloadcms/ui'\nimport { useParams, usePathname, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React from 'react'\n\nexport const DocumentTabLink: React.FC<{\n adminRoute: SanitizedConfig['routes']['admin']\n ariaLabel?: string\n baseClass: string\n children?: React.ReactNode\n href: string\n isActive?: boolean\n newTab?: boolean\n}> = ({\n adminRoute,\n ariaLabel,\n baseClass,\n children,\n href: hrefFromProps,\n isActive: isActiveFromProps,\n newTab,\n}) => {\n const pathname = usePathname()\n const params = useParams()\n\n const searchParams = useSearchParams()\n\n const locale = searchParams.get('locale')\n\n const [entityType, entitySlug, segmentThree, segmentFour, ...rest] = params.segments || []\n const isCollection = entityType === 'collections'\n\n let docPath = formatAdminURL({\n adminRoute,\n path: `/${isCollection ? 'collections' : 'globals'}/${entitySlug}`,\n })\n\n if (isCollection) {\n if (segmentThree === 'trash' && segmentFour) {\n docPath += `/trash/${segmentFour}`\n } else if (segmentThree) {\n docPath += `/${segmentThree}`\n }\n }\n\n const href = `${docPath}${hrefFromProps}`\n // separated the two so it doesn't break checks against pathname\n const hrefWithLocale = `${href}${locale ? `?locale=${locale}` : ''}`\n\n const isActive =\n (href === docPath && pathname === docPath) ||\n (href !== docPath && pathname.startsWith(href)) ||\n isActiveFromProps\n\n return (\n <Button\n aria-label={ariaLabel}\n buttonStyle=\"tab\"\n className={[baseClass, isActive && `${baseClass}--active`].filter(Boolean).join(' ')}\n disabled={isActive}\n el={!isActive || href !== pathname ? 'link' : 'div'}\n margin={false}\n newTab={newTab}\n size=\"medium\"\n to={!isActive || href !== pathname ? hrefWithLocale : undefined}\n >\n {children}\n </Button>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"TabLink.js","names":["c","_c","Button","useParams","usePathname","useSearchParams","formatAdminURL","React","DocumentTabLink","t0","$","adminRoute","ariaLabel","baseClass","children","href","hrefFromProps","isActive","isActiveFromProps","newTab","pathname","params","searchParams","locale","get","entityType","entitySlug","segmentThree","segmentFour","segments","isCollection","t1","t2","path","docPath","hrefWithLocale","t3","startsWith","_jsx","buttonStyle","className","filter","Boolean","join","disabled","el","margin","size","to","undefined"],"sources":["../../../../../src/elements/DocumentHeader/Tabs/Tab/TabLink.tsx"],"sourcesContent":["'use client'\nimport type { SanitizedConfig } from 'payload'\n\nimport { Button } from '@payloadcms/ui'\nimport { useParams, usePathname, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React from 'react'\n\nexport const DocumentTabLink: React.FC<{\n adminRoute: SanitizedConfig['routes']['admin']\n ariaLabel?: string\n baseClass: string\n children?: React.ReactNode\n href: string\n isActive?: boolean\n newTab?: boolean\n}> = ({\n adminRoute,\n ariaLabel,\n baseClass,\n children,\n href: hrefFromProps,\n isActive: isActiveFromProps,\n newTab,\n}) => {\n const pathname = usePathname()\n const params = useParams()\n\n const searchParams = useSearchParams()\n\n const locale = searchParams.get('locale')\n\n const [entityType, entitySlug, segmentThree, segmentFour, ...rest] = params.segments || []\n const isCollection = entityType === 'collections'\n\n let docPath = formatAdminURL({\n adminRoute,\n path: `/${isCollection ? 'collections' : 'globals'}/${entitySlug}`,\n })\n\n if (isCollection) {\n if (segmentThree === 'trash' && segmentFour) {\n docPath += `/trash/${segmentFour}`\n } else if (segmentThree) {\n docPath += `/${segmentThree}`\n }\n }\n\n const href = `${docPath}${hrefFromProps}`\n // separated the two so it doesn't break checks against pathname\n const hrefWithLocale = `${href}${locale ? `?locale=${locale}` : ''}`\n\n const isActive =\n (href === docPath && pathname === docPath) ||\n (href !== docPath && pathname.startsWith(href)) ||\n isActiveFromProps\n\n return (\n <Button\n aria-label={ariaLabel}\n buttonStyle=\"tab\"\n className={[baseClass, isActive && `${baseClass}--active`].filter(Boolean).join(' ')}\n disabled={isActive}\n el={!isActive || href !== pathname ? 'link' : 'div'}\n margin={false}\n newTab={newTab}\n size=\"medium\"\n to={!isActive || href !== pathname ? hrefWithLocale : undefined}\n >\n {children}\n </Button>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,MAAM,QAAQ;AACvB,SAASC,SAAS,EAAEC,WAAW,EAAEC,eAAe,QAAQ;AACxD,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,MAAW;AAElB,OAAO,MAAMC,eAAA,GAQRC,EAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EAAC;IAAAU,UAAA;IAAAC,SAAA;IAAAC,SAAA;IAAAC,QAAA;IAAAC,IAAA,EAAAC,aAAA;IAAAC,QAAA,EAAAC,iBAAA;IAAAC;EAAA,IAAAV,EAQL;EACC,MAAAW,QAAA,GAAiBhB,WAAA;EACjB,MAAAiB,MAAA,GAAelB,SAAA;EAEf,MAAAmB,YAAA,GAAqBjB,eAAA;EAErB,MAAAkB,MAAA,GAAeD,YAAA,CAAAE,GAAA,CAAiB;EAEhC,OAAAC,UAAA,EAAAC,UAAA,EAAAC,YAAA,EAAAC,WAAA,IAAqEP,MAAA,CAAAQ,QAAA,MAAqB;EAC1F,MAAAC,YAAA,GAAqBL,UAAA,KAAe;EAI5B,MAAAM,EAAA,OAAID,YAAA,GAAe,gBAAgB,aAAaJ,UAAA,EAAY;EAAA,IAAAM,EAAA;EAAA,IAAAtB,CAAA,QAAAC,UAAA,IAAAD,CAAA,QAAAqB,EAAA;IAFtDC,EAAA,GAAA1B,cAAA;MAAAK,UAAA;MAAAsB,IAAA,EAENF;IAA4D,CACpE;IAAArB,CAAA,MAAAC,UAAA;IAAAD,CAAA,MAAAqB,EAAA;IAAArB,CAAA,MAAAsB,EAAA;EAAA;IAAAA,EAAA,GAAAtB,CAAA;EAAA;EAHA,IAAAwB,OAAA,GAAcF,EAGd;EAAA,IAEIF,YAAA;IAAA,IACEH,YAAA,KAAiB,WAAWC,WAAA;MAC9BM,OAAA,GAAAA,OAAA,GAAW,UAAUN,WAAA,EAAa;IAAA;MAAA,IACzBD,YAAA;QACTO,OAAA,GAAAA,OAAA,GAAW,IAAIP,YAAA,EAAc;MAAA;IAAA;EAAA;EAIjC,MAAAZ,IAAA,GAAa,GAAGmB,OAAA,GAAUlB,aAAA,EAAe;EAEzC,MAAAmB,cAAA,GAAuB,GAAGpB,IAAA,GAAOQ,MAAA,GAAS,WAAWA,MAAA,EAAQ,GAAG,IAAI;EAAA,IAAAa,EAAA;EAAA,IAAA1B,CAAA,QAAAE,SAAA,IAAAF,CAAA,QAAAG,SAAA,IAAAH,CAAA,QAAAI,QAAA,IAAAJ,CAAA,QAAAwB,OAAA,IAAAxB,CAAA,QAAAK,IAAA,IAAAL,CAAA,QAAAyB,cAAA,IAAAzB,CAAA,QAAAQ,iBAAA,IAAAR,CAAA,SAAAS,MAAA,IAAAT,CAAA,SAAAU,QAAA;IAEpE,MAAAH,QAAA,GACEF,IAAC,KAASmB,OAAA,IAAWd,QAAA,KAAac,OAAA,IACjCnB,IAAA,KAASmB,OAAA,IAAWd,QAAA,CAAAiB,UAAA,CAAoBtB,IAAA,KACzCG,iBAAA;IAGAkB,EAAA,GAAAE,IAAA,CAAApC,MAAA;MAAA,cACcU,SAAA;MAAA2B,WAAA,EACA;MAAAC,SAAA,EACD,CAAC3B,SAAA,EAAWI,QAAA,IAAY,GAAGJ,SAAA,UAAmB,EAAA4B,MAAA,CAAAC,OAAS,EAAAC,IAAA,CAAc;MAAAC,QAAA,EACtE3B,QAAA;MAAA4B,EAAA,EACN,CAAC5B,QAAA,IAAYF,IAAA,KAASK,QAAA,GAAW,SAAS;MAAA0B,MAAA;MAAA3B,MAAA;MAAA4B,IAAA,EAGzC;MAAAC,EAAA,EACD,CAAC/B,QAAA,IAAYF,IAAA,KAASK,QAAA,GAAWe,cAAA,GAAAc,SAAiB;MAAAnC;IAAA,C;;;;;;;;;;;;;;SATxDsB,E;CAcJ","ignoreList":[]}
@@ -10,7 +10,7 @@ import { formatAdminURL } from 'payload/shared';
10
10
  import React, { Fragment } from 'react';
11
11
  const baseClass = 'nav';
12
12
  export const DefaultNavClient = t0 => {
13
- const $ = _c(21);
13
+ const $ = _c(13);
14
14
  const {
15
15
  groups,
16
16
  navPreferences
@@ -37,49 +37,28 @@ export const DefaultNavClient = t0 => {
37
37
  i18n
38
38
  } = useTranslation();
39
39
  let t5;
40
- let t6;
41
- let t7;
42
- if ($[0] !== adminRoute || $[1] !== folders || $[2] !== foldersRoute || $[3] !== pathname) {
40
+ if ($[0] !== adminRoute || $[1] !== folders || $[2] !== foldersRoute || $[3] !== groups || $[4] !== i18n || $[5] !== navPreferences?.groups || $[6] !== pathname) {
43
41
  const folderURL = formatAdminURL({
44
42
  adminRoute,
45
43
  path: foldersRoute
46
44
  });
47
45
  const viewingRootFolderView = pathname.startsWith(folderURL);
48
- t6 = _jsxs;
49
- t7 = Fragment;
50
- t5 = folders && folders.browseByFolder && _jsx(BrowseByFolderButton, {
51
- active: viewingRootFolderView
52
- });
53
- $[0] = adminRoute;
54
- $[1] = folders;
55
- $[2] = foldersRoute;
56
- $[3] = pathname;
57
- $[4] = t5;
58
- $[5] = t6;
59
- $[6] = t7;
60
- } else {
61
- t5 = $[4];
62
- t6 = $[5];
63
- t7 = $[6];
64
- }
65
- let t8;
66
- if ($[7] !== adminRoute || $[8] !== groups || $[9] !== i18n || $[10] !== navPreferences?.groups || $[11] !== pathname || $[12] !== t5 || $[13] !== t6 || $[14] !== t7) {
67
- let t9;
68
- if ($[16] !== adminRoute || $[17] !== i18n || $[18] !== navPreferences?.groups || $[19] !== pathname) {
69
- t9 = (t10, key) => {
46
+ let t6;
47
+ if ($[8] !== adminRoute || $[9] !== i18n || $[10] !== navPreferences?.groups || $[11] !== pathname) {
48
+ t6 = (t7, key) => {
70
49
  const {
71
50
  entities,
72
51
  label
73
- } = t10;
52
+ } = t7;
74
53
  return _jsx(NavGroup, {
75
54
  isOpen: navPreferences?.groups?.[label]?.open,
76
55
  label,
77
- children: entities.map((t11, i) => {
56
+ children: entities.map((t8, i) => {
78
57
  const {
79
58
  slug,
80
59
  type,
81
60
  label: label_0
82
- } = t11;
61
+ } = t8;
83
62
  let href;
84
63
  let id;
85
64
  if (type === EntityType.collection) {
@@ -122,29 +101,30 @@ export const DefaultNavClient = t0 => {
122
101
  })
123
102
  }, key);
124
103
  };
125
- $[16] = adminRoute;
126
- $[17] = i18n;
127
- $[18] = navPreferences?.groups;
128
- $[19] = pathname;
129
- $[20] = t9;
104
+ $[8] = adminRoute;
105
+ $[9] = i18n;
106
+ $[10] = navPreferences?.groups;
107
+ $[11] = pathname;
108
+ $[12] = t6;
130
109
  } else {
131
- t9 = $[20];
110
+ t6 = $[12];
132
111
  }
133
- t8 = t6(t7, {
134
- children: [t5, groups.map(t9)]
112
+ t5 = _jsxs(Fragment, {
113
+ children: [folders && folders.browseByFolder && _jsx(BrowseByFolderButton, {
114
+ active: viewingRootFolderView
115
+ }), groups.map(t6)]
135
116
  });
136
- $[7] = adminRoute;
137
- $[8] = groups;
138
- $[9] = i18n;
139
- $[10] = navPreferences?.groups;
140
- $[11] = pathname;
141
- $[12] = t5;
142
- $[13] = t6;
143
- $[14] = t7;
144
- $[15] = t8;
117
+ $[0] = adminRoute;
118
+ $[1] = folders;
119
+ $[2] = foldersRoute;
120
+ $[3] = groups;
121
+ $[4] = i18n;
122
+ $[5] = navPreferences?.groups;
123
+ $[6] = pathname;
124
+ $[7] = t5;
145
125
  } else {
146
- t8 = $[15];
126
+ t5 = $[7];
147
127
  }
148
- return t8;
128
+ return t5;
149
129
  };
150
130
  //# sourceMappingURL=index.client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.client.js","names":["c","_c","getTranslation","BrowseByFolderButton","Link","NavGroup","useConfig","useTranslation","EntityType","usePathname","formatAdminURL","React","Fragment","baseClass","DefaultNavClient","t0","$","groups","navPreferences","pathname","config","t1","admin","t2","folders","routes","t3","t4","browseByFolder","foldersRoute","adminRoute","i18n","t5","t6","t7","folderURL","path","viewingRootFolderView","startsWith","_jsxs","_jsx","active","t9","t10","key","entities","label","isOpen","open","children","map","t11","i","slug","type","label_0","href","id","collection","global","isActive","undefined","includes","length","Label","_Fragment","className","prefetch","t8"],"sources":["../../../src/elements/Nav/index.client.tsx"],"sourcesContent":["'use client'\n\nimport type { groupNavItems } from '@payloadcms/ui/shared'\nimport type { NavPreferences } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { BrowseByFolderButton, Link, NavGroup, useConfig, useTranslation } from '@payloadcms/ui'\nimport { EntityType } from '@payloadcms/ui/shared'\nimport { usePathname } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { Fragment } from 'react'\n\nconst baseClass = 'nav'\n\nexport const DefaultNavClient: React.FC<{\n groups: ReturnType<typeof groupNavItems>\n navPreferences: NavPreferences\n}> = ({ groups, navPreferences }) => {\n const pathname = usePathname()\n\n const {\n config: {\n admin: {\n routes: { browseByFolder: foldersRoute },\n },\n folders,\n routes: { admin: adminRoute },\n },\n } = useConfig()\n\n const { i18n } = useTranslation()\n\n const folderURL = formatAdminURL({\n adminRoute,\n path: foldersRoute,\n })\n\n const viewingRootFolderView = pathname.startsWith(folderURL)\n\n return (\n <Fragment>\n {folders && folders.browseByFolder && <BrowseByFolderButton active={viewingRootFolderView} />}\n {groups.map(({ entities, label }, key) => {\n return (\n <NavGroup isOpen={navPreferences?.groups?.[label]?.open} key={key} label={label}>\n {entities.map(({ slug, type, label }, i) => {\n let href: string\n let id: string\n\n if (type === EntityType.collection) {\n href = formatAdminURL({ adminRoute, path: `/collections/${slug}` })\n id = `nav-${slug}`\n }\n\n if (type === EntityType.global) {\n href = formatAdminURL({ adminRoute, path: `/globals/${slug}` })\n id = `nav-global-${slug}`\n }\n\n const isActive =\n pathname.startsWith(href) && ['/', undefined].includes(pathname[href.length])\n\n const Label = (\n <>\n {isActive && <div className={`${baseClass}__link-indicator`} />}\n <span className={`${baseClass}__link-label`}>{getTranslation(label, i18n)}</span>\n </>\n )\n\n // If the URL matches the link exactly\n if (pathname === href) {\n return (\n <div className={`${baseClass}__link`} id={id} key={i}>\n {Label}\n </div>\n )\n }\n\n return (\n <Link className={`${baseClass}__link`} href={href} id={id} key={i} prefetch={false}>\n {Label}\n </Link>\n )\n })}\n </NavGroup>\n )\n })}\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.client.js","names":["c","_c","getTranslation","BrowseByFolderButton","Link","NavGroup","useConfig","useTranslation","EntityType","usePathname","formatAdminURL","React","Fragment","baseClass","DefaultNavClient","t0","$","groups","navPreferences","pathname","config","t1","admin","t2","folders","routes","t3","t4","browseByFolder","foldersRoute","adminRoute","i18n","t5","folderURL","path","viewingRootFolderView","startsWith","t6","t7","key","entities","label","_jsx","isOpen","open","children","map","t8","i","slug","type","label_0","href","id","collection","global","isActive","undefined","includes","length","Label","_jsxs","_Fragment","className","prefetch","active"],"sources":["../../../src/elements/Nav/index.client.tsx"],"sourcesContent":["'use client'\n\nimport type { groupNavItems } from '@payloadcms/ui/shared'\nimport type { NavPreferences } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { BrowseByFolderButton, Link, NavGroup, useConfig, useTranslation } from '@payloadcms/ui'\nimport { EntityType } from '@payloadcms/ui/shared'\nimport { usePathname } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { Fragment } from 'react'\n\nconst baseClass = 'nav'\n\nexport const DefaultNavClient: React.FC<{\n groups: ReturnType<typeof groupNavItems>\n navPreferences: NavPreferences\n}> = ({ groups, navPreferences }) => {\n const pathname = usePathname()\n\n const {\n config: {\n admin: {\n routes: { browseByFolder: foldersRoute },\n },\n folders,\n routes: { admin: adminRoute },\n },\n } = useConfig()\n\n const { i18n } = useTranslation()\n\n const folderURL = formatAdminURL({\n adminRoute,\n path: foldersRoute,\n })\n\n const viewingRootFolderView = pathname.startsWith(folderURL)\n\n return (\n <Fragment>\n {folders && folders.browseByFolder && <BrowseByFolderButton active={viewingRootFolderView} />}\n {groups.map(({ entities, label }, key) => {\n return (\n <NavGroup isOpen={navPreferences?.groups?.[label]?.open} key={key} label={label}>\n {entities.map(({ slug, type, label }, i) => {\n let href: string\n let id: string\n\n if (type === EntityType.collection) {\n href = formatAdminURL({ adminRoute, path: `/collections/${slug}` })\n id = `nav-${slug}`\n }\n\n if (type === EntityType.global) {\n href = formatAdminURL({ adminRoute, path: `/globals/${slug}` })\n id = `nav-global-${slug}`\n }\n\n const isActive =\n pathname.startsWith(href) && ['/', undefined].includes(pathname[href.length])\n\n const Label = (\n <>\n {isActive && <div className={`${baseClass}__link-indicator`} />}\n <span className={`${baseClass}__link-label`}>{getTranslation(label, i18n)}</span>\n </>\n )\n\n // If the URL matches the link exactly\n if (pathname === href) {\n return (\n <div className={`${baseClass}__link`} id={id} key={i}>\n {Label}\n </div>\n )\n }\n\n return (\n <Link className={`${baseClass}__link`} href={href} id={id} key={i} prefetch={false}>\n {Label}\n </Link>\n )\n })}\n </NavGroup>\n )\n })}\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"handleServerFunctions.d.ts","sourceRoot":"","sources":["../../src/utilities/handleServerFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAwBpE,eAAO,MAAM,qBAAqB,EAAE,qBAsBnC,CAAA"}
1
+ {"version":3,"file":"handleServerFunctions.d.ts","sourceRoot":"","sources":["../../src/utilities/handleServerFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAyBpE,eAAO,MAAM,qBAAqB,EAAE,qBAiCnC,CAAA"}
@@ -1,4 +1,4 @@
1
- import { copyDataFromLocaleHandler } from '@payloadcms/ui/rsc';
1
+ import { _internal_renderFieldHandler, copyDataFromLocaleHandler } from '@payloadcms/ui/rsc';
2
2
  import { buildFormStateHandler } from '@payloadcms/ui/utilities/buildFormState';
3
3
  import { buildTableStateHandler } from '@payloadcms/ui/utilities/buildTableState';
4
4
  import { getFolderResultsComponentAndDataHandler } from '@payloadcms/ui/utilities/getFolderResultsComponentAndData';
@@ -7,12 +7,13 @@ import { renderDocumentHandler } from '../views/Document/handleServerFunction.js
7
7
  import { renderDocumentSlotsHandler } from '../views/Document/renderDocumentSlots.js';
8
8
  import { renderListHandler } from '../views/List/handleServerFunction.js';
9
9
  import { initReq } from './initReq.js';
10
- const serverFunctions = {
10
+ const baseServerFunctions = {
11
11
  'copy-data-from-locale': copyDataFromLocaleHandler,
12
12
  'form-state': buildFormStateHandler,
13
13
  'get-folder-results-component-and-data': getFolderResultsComponentAndDataHandler,
14
14
  'render-document': renderDocumentHandler,
15
15
  'render-document-slots': renderDocumentSlotsHandler,
16
+ 'render-field': _internal_renderFieldHandler,
16
17
  'render-list': renderListHandler,
17
18
  'schedule-publish': schedulePublishHandler,
18
19
  'table-state': buildTableStateHandler
@@ -22,7 +23,8 @@ export const handleServerFunctions = async args => {
22
23
  name: fnKey,
23
24
  args: fnArgs,
24
25
  config: configPromise,
25
- importMap
26
+ importMap,
27
+ serverFunctions: extraServerFunctions
26
28
  } = args;
27
29
  const {
28
30
  req
@@ -36,6 +38,10 @@ export const handleServerFunctions = async args => {
36
38
  importMap,
37
39
  req
38
40
  };
41
+ const serverFunctions = {
42
+ ...baseServerFunctions,
43
+ ...(extraServerFunctions || {})
44
+ };
39
45
  const fn = serverFunctions[fnKey];
40
46
  if (!fn) {
41
47
  throw new Error(`Unknown Server Function: ${fnKey}`);
@@ -1 +1 @@
1
- {"version":3,"file":"handleServerFunctions.js","names":["copyDataFromLocaleHandler","buildFormStateHandler","buildTableStateHandler","getFolderResultsComponentAndDataHandler","schedulePublishHandler","renderDocumentHandler","renderDocumentSlotsHandler","renderListHandler","initReq","serverFunctions","handleServerFunctions","args","name","fnKey","fnArgs","config","configPromise","importMap","req","key","augmentedArgs","fn","Error"],"sources":["../../src/utilities/handleServerFunctions.ts"],"sourcesContent":["import type { ServerFunction, ServerFunctionHandler } from 'payload'\n\nimport { copyDataFromLocaleHandler } from '@payloadcms/ui/rsc'\nimport { buildFormStateHandler } from '@payloadcms/ui/utilities/buildFormState'\nimport { buildTableStateHandler } from '@payloadcms/ui/utilities/buildTableState'\nimport { getFolderResultsComponentAndDataHandler } from '@payloadcms/ui/utilities/getFolderResultsComponentAndData'\nimport { schedulePublishHandler } from '@payloadcms/ui/utilities/schedulePublishHandler'\n\nimport { renderDocumentHandler } from '../views/Document/handleServerFunction.js'\nimport { renderDocumentSlotsHandler } from '../views/Document/renderDocumentSlots.js'\nimport { renderListHandler } from '../views/List/handleServerFunction.js'\nimport { initReq } from './initReq.js'\n\nconst serverFunctions: Record<string, ServerFunction> = {\n 'copy-data-from-locale': copyDataFromLocaleHandler,\n 'form-state': buildFormStateHandler,\n 'get-folder-results-component-and-data': getFolderResultsComponentAndDataHandler,\n 'render-document': renderDocumentHandler,\n 'render-document-slots': renderDocumentSlotsHandler,\n 'render-list': renderListHandler,\n 'schedule-publish': schedulePublishHandler,\n 'table-state': buildTableStateHandler,\n}\n\nexport const handleServerFunctions: ServerFunctionHandler = async (args) => {\n const { name: fnKey, args: fnArgs, config: configPromise, importMap } = args\n\n const { req } = await initReq({\n configPromise,\n importMap,\n key: 'RootLayout',\n })\n\n const augmentedArgs: Parameters<ServerFunction>[0] = {\n ...fnArgs,\n importMap,\n req,\n }\n\n const fn = serverFunctions[fnKey]\n\n if (!fn) {\n throw new Error(`Unknown Server Function: ${fnKey}`)\n }\n\n return fn(augmentedArgs)\n}\n"],"mappings":"AAEA,SAASA,yBAAyB,QAAQ;AAC1C,SAASC,qBAAqB,QAAQ;AACtC,SAASC,sBAAsB,QAAQ;AACvC,SAASC,uCAAuC,QAAQ;AACxD,SAASC,sBAAsB,QAAQ;AAEvC,SAASC,qBAAqB,QAAQ;AACtC,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,iBAAiB,QAAQ;AAClC,SAASC,OAAO,QAAQ;AAExB,MAAMC,eAAA,GAAkD;EACtD,yBAAyBT,yBAAA;EACzB,cAAcC,qBAAA;EACd,yCAAyCE,uCAAA;EACzC,mBAAmBE,qBAAA;EACnB,yBAAyBC,0BAAA;EACzB,eAAeC,iBAAA;EACf,oBAAoBH,sBAAA;EACpB,eAAeF;AACjB;AAEA,OAAO,MAAMQ,qBAAA,GAA+C,MAAOC,IAAA;EACjE,MAAM;IAAEC,IAAA,EAAMC,KAAK;IAAEF,IAAA,EAAMG,MAAM;IAAEC,MAAA,EAAQC,aAAa;IAAEC;EAAS,CAAE,GAAGN,IAAA;EAExE,MAAM;IAAEO;EAAG,CAAE,GAAG,MAAMV,OAAA,CAAQ;IAC5BQ,aAAA;IACAC,SAAA;IACAE,GAAA,EAAK;EACP;EAEA,MAAMC,aAAA,GAA+C;IACnD,GAAGN,MAAM;IACTG,SAAA;IACAC;EACF;EAEA,MAAMG,EAAA,GAAKZ,eAAe,CAACI,KAAA,CAAM;EAEjC,IAAI,CAACQ,EAAA,EAAI;IACP,MAAM,IAAIC,KAAA,CAAM,4BAA4BT,KAAA,EAAO;EACrD;EAEA,OAAOQ,EAAA,CAAGD,aAAA;AACZ","ignoreList":[]}
1
+ {"version":3,"file":"handleServerFunctions.js","names":["_internal_renderFieldHandler","copyDataFromLocaleHandler","buildFormStateHandler","buildTableStateHandler","getFolderResultsComponentAndDataHandler","schedulePublishHandler","renderDocumentHandler","renderDocumentSlotsHandler","renderListHandler","initReq","baseServerFunctions","handleServerFunctions","args","name","fnKey","fnArgs","config","configPromise","importMap","serverFunctions","extraServerFunctions","req","key","augmentedArgs","fn","Error"],"sources":["../../src/utilities/handleServerFunctions.ts"],"sourcesContent":["import type { ServerFunction, ServerFunctionHandler } from 'payload'\n\nimport { _internal_renderFieldHandler, copyDataFromLocaleHandler } from '@payloadcms/ui/rsc'\nimport { buildFormStateHandler } from '@payloadcms/ui/utilities/buildFormState'\nimport { buildTableStateHandler } from '@payloadcms/ui/utilities/buildTableState'\nimport { getFolderResultsComponentAndDataHandler } from '@payloadcms/ui/utilities/getFolderResultsComponentAndData'\nimport { schedulePublishHandler } from '@payloadcms/ui/utilities/schedulePublishHandler'\n\nimport { renderDocumentHandler } from '../views/Document/handleServerFunction.js'\nimport { renderDocumentSlotsHandler } from '../views/Document/renderDocumentSlots.js'\nimport { renderListHandler } from '../views/List/handleServerFunction.js'\nimport { initReq } from './initReq.js'\n\nconst baseServerFunctions: Record<string, ServerFunction<any, any>> = {\n 'copy-data-from-locale': copyDataFromLocaleHandler,\n 'form-state': buildFormStateHandler,\n 'get-folder-results-component-and-data': getFolderResultsComponentAndDataHandler,\n 'render-document': renderDocumentHandler,\n 'render-document-slots': renderDocumentSlotsHandler,\n 'render-field': _internal_renderFieldHandler,\n 'render-list': renderListHandler,\n 'schedule-publish': schedulePublishHandler,\n 'table-state': buildTableStateHandler,\n}\n\nexport const handleServerFunctions: ServerFunctionHandler = async (args) => {\n const {\n name: fnKey,\n args: fnArgs,\n config: configPromise,\n importMap,\n serverFunctions: extraServerFunctions,\n } = args\n\n const { req } = await initReq({\n configPromise,\n importMap,\n key: 'RootLayout',\n })\n\n const augmentedArgs: Parameters<ServerFunction>[0] = {\n ...fnArgs,\n importMap,\n req,\n }\n\n const serverFunctions = {\n ...baseServerFunctions,\n ...(extraServerFunctions || {}),\n }\n\n const fn = serverFunctions[fnKey]\n\n if (!fn) {\n throw new Error(`Unknown Server Function: ${fnKey}`)\n }\n\n return fn(augmentedArgs)\n}\n"],"mappings":"AAEA,SAASA,4BAA4B,EAAEC,yBAAyB,QAAQ;AACxE,SAASC,qBAAqB,QAAQ;AACtC,SAASC,sBAAsB,QAAQ;AACvC,SAASC,uCAAuC,QAAQ;AACxD,SAASC,sBAAsB,QAAQ;AAEvC,SAASC,qBAAqB,QAAQ;AACtC,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,iBAAiB,QAAQ;AAClC,SAASC,OAAO,QAAQ;AAExB,MAAMC,mBAAA,GAAgE;EACpE,yBAAyBT,yBAAA;EACzB,cAAcC,qBAAA;EACd,yCAAyCE,uCAAA;EACzC,mBAAmBE,qBAAA;EACnB,yBAAyBC,0BAAA;EACzB,gBAAgBP,4BAAA;EAChB,eAAeQ,iBAAA;EACf,oBAAoBH,sBAAA;EACpB,eAAeF;AACjB;AAEA,OAAO,MAAMQ,qBAAA,GAA+C,MAAOC,IAAA;EACjE,MAAM;IACJC,IAAA,EAAMC,KAAK;IACXF,IAAA,EAAMG,MAAM;IACZC,MAAA,EAAQC,aAAa;IACrBC,SAAS;IACTC,eAAA,EAAiBC;EAAoB,CACtC,GAAGR,IAAA;EAEJ,MAAM;IAAES;EAAG,CAAE,GAAG,MAAMZ,OAAA,CAAQ;IAC5BQ,aAAA;IACAC,SAAA;IACAI,GAAA,EAAK;EACP;EAEA,MAAMC,aAAA,GAA+C;IACnD,GAAGR,MAAM;IACTG,SAAA;IACAG;EACF;EAEA,MAAMF,eAAA,GAAkB;IACtB,GAAGT,mBAAmB;IACtB,IAAIU,oBAAA,IAAwB,CAAC,CAAC;EAChC;EAEA,MAAMI,EAAA,GAAKL,eAAe,CAACL,KAAA,CAAM;EAEjC,IAAI,CAACU,EAAA,EAAI;IACP,MAAM,IAAIC,KAAA,CAAM,4BAA4BX,KAAA,EAAO;EACrD;EAEA,OAAOU,EAAA,CAAGD,aAAA;AACZ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"handleServerFunction.d.ts","sourceRoot":"","sources":["../../../src/views/Document/handleServerFunction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAA;AASlE,eAAO,MAAM,qBAAqB,EAAE,4BAwJnC,CAAA"}
1
+ {"version":3,"file":"handleServerFunction.d.ts","sourceRoot":"","sources":["../../../src/views/Document/handleServerFunction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAA;AASlE,eAAO,MAAM,qBAAqB,EAAE,4BAyHnC,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig';
2
2
  import { headers as getHeaders } from 'next/headers.js';
3
- import { getAccessResults, isEntityHidden, parseCookies } from 'payload';
3
+ import { canAccessAdmin, getAccessResults, isEntityHidden, parseCookies } from 'payload';
4
4
  import { renderDocument } from './index.js';
5
5
  export const renderDocumentHandler = async args => {
6
6
  const {
@@ -29,35 +29,9 @@ export const renderDocumentHandler = async args => {
29
29
  } = args;
30
30
  const headers = await getHeaders();
31
31
  const cookies = parseCookies(headers);
32
- const incomingUserSlug = user?.collection;
33
- const adminUserSlug = config.admin.user;
34
- // If we have a user slug, test it against the functions
35
- if (incomingUserSlug) {
36
- const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin;
37
- // Run the admin access function from the config if it exists
38
- if (adminAccessFunction) {
39
- const canAccessAdmin = await adminAccessFunction({
40
- req
41
- });
42
- if (!canAccessAdmin) {
43
- throw new Error('Unauthorized');
44
- }
45
- // Match the user collection to the global admin config
46
- } else if (adminUserSlug !== incomingUserSlug) {
47
- throw new Error('Unauthorized');
48
- }
49
- } else {
50
- const hasUsers = await payload.find({
51
- collection: adminUserSlug,
52
- depth: 0,
53
- limit: 1,
54
- pagination: false
55
- });
56
- // If there are users, we should not allow access because of /create-first-user
57
- if (hasUsers.docs.length) {
58
- throw new Error('Unauthorized');
59
- }
60
- }
32
+ await canAccessAdmin({
33
+ req
34
+ });
61
35
  const clientConfig = getClientConfig({
62
36
  config,
63
37
  i18n,
@@ -1 +1 @@
1
- {"version":3,"file":"handleServerFunction.js","names":["getClientConfig","headers","getHeaders","getAccessResults","isEntityHidden","parseCookies","renderDocument","renderDocumentHandler","args","collectionSlug","disableActions","docID","drawerSlug","initialData","locale","overrideEntityVisibility","paramsOverride","redirectAfterCreate","redirectAfterDelete","redirectAfterDuplicate","req","i18n","payload","config","user","searchParams","versions","cookies","incomingUserSlug","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","clientConfig","importMap","preferences","preferencesKey","where","and","key","equals","id","then","res","value","visibleEntities","map","slug","hidden","filter","Boolean","globals","permissions","data","Document","documentSubViewType","initPageResult","collectionConfig","globalConfig","global","languageOptions","undefined","translations","params","segments","String","viewType"],"sources":["../../../src/views/Document/handleServerFunction.tsx"],"sourcesContent":["import type { RenderDocumentServerFunction } from '@payloadcms/ui'\nimport type { DocumentPreferences, VisibleEntities } from 'payload'\n\nimport { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { getAccessResults, isEntityHidden, parseCookies } from 'payload'\n\nimport { renderDocument } from './index.js'\n\nexport const renderDocumentHandler: RenderDocumentServerFunction = async (args) => {\n const {\n collectionSlug,\n disableActions,\n docID,\n drawerSlug,\n initialData,\n locale,\n overrideEntityVisibility,\n paramsOverride,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n searchParams = {},\n versions,\n } = args\n\n const headers = await getHeaders()\n\n const cookies = parseCookies(headers)\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: req.payload.importMap,\n user,\n })\n\n let preferences: DocumentPreferences\n\n if (docID) {\n const preferencesKey = `${collectionSlug}-edit-${docID}`\n\n preferences = await payload\n .find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n where: {\n and: [\n {\n key: {\n equals: preferencesKey,\n },\n },\n {\n 'user.relationTo': {\n equals: user.collection,\n },\n },\n {\n 'user.value': {\n equals: user.id,\n },\n },\n ],\n },\n })\n .then((res) => res.docs[0]?.value as DocumentPreferences)\n }\n\n const visibleEntities: VisibleEntities = {\n collections: payload.config.collections\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n globals: payload.config.globals\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n }\n\n const permissions = await getAccessResults({\n req,\n })\n\n const { data, Document } = await renderDocument({\n clientConfig,\n disableActions,\n documentSubViewType: 'default',\n drawerSlug,\n i18n,\n importMap: payload.importMap,\n initialData,\n initPageResult: {\n collectionConfig: payload?.collections?.[collectionSlug]?.config,\n cookies,\n docID,\n globalConfig: payload.config.globals.find((global) => global.slug === collectionSlug),\n languageOptions: undefined, // TODO\n locale,\n permissions,\n req,\n translations: undefined, // TODO\n visibleEntities,\n },\n overrideEntityVisibility,\n params: paramsOverride ?? {\n segments: ['collections', collectionSlug, String(docID)],\n },\n payload,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n searchParams,\n versions,\n viewType: 'document',\n })\n\n return {\n data,\n Document,\n preferences,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"handleServerFunction.js","names":["getClientConfig","headers","getHeaders","canAccessAdmin","getAccessResults","isEntityHidden","parseCookies","renderDocument","renderDocumentHandler","args","collectionSlug","disableActions","docID","drawerSlug","initialData","locale","overrideEntityVisibility","paramsOverride","redirectAfterCreate","redirectAfterDelete","redirectAfterDuplicate","req","i18n","payload","config","user","searchParams","versions","cookies","clientConfig","importMap","preferences","preferencesKey","find","collection","depth","limit","where","and","key","equals","id","then","res","docs","value","visibleEntities","collections","map","slug","admin","hidden","filter","Boolean","globals","permissions","data","Document","documentSubViewType","initPageResult","collectionConfig","globalConfig","global","languageOptions","undefined","translations","params","segments","String","viewType"],"sources":["../../../src/views/Document/handleServerFunction.tsx"],"sourcesContent":["import type { RenderDocumentServerFunction } from '@payloadcms/ui'\nimport type { DocumentPreferences, VisibleEntities } from 'payload'\n\nimport { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { canAccessAdmin, getAccessResults, isEntityHidden, parseCookies } from 'payload'\n\nimport { renderDocument } from './index.js'\n\nexport const renderDocumentHandler: RenderDocumentServerFunction = async (args) => {\n const {\n collectionSlug,\n disableActions,\n docID,\n drawerSlug,\n initialData,\n locale,\n overrideEntityVisibility,\n paramsOverride,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n searchParams = {},\n versions,\n } = args\n\n const headers = await getHeaders()\n\n const cookies = parseCookies(headers)\n\n await canAccessAdmin({ req })\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: req.payload.importMap,\n user,\n })\n\n let preferences: DocumentPreferences\n\n if (docID) {\n const preferencesKey = `${collectionSlug}-edit-${docID}`\n\n preferences = await payload\n .find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n where: {\n and: [\n {\n key: {\n equals: preferencesKey,\n },\n },\n {\n 'user.relationTo': {\n equals: user.collection,\n },\n },\n {\n 'user.value': {\n equals: user.id,\n },\n },\n ],\n },\n })\n .then((res) => res.docs[0]?.value as DocumentPreferences)\n }\n\n const visibleEntities: VisibleEntities = {\n collections: payload.config.collections\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n globals: payload.config.globals\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n }\n\n const permissions = await getAccessResults({\n req,\n })\n\n const { data, Document } = await renderDocument({\n clientConfig,\n disableActions,\n documentSubViewType: 'default',\n drawerSlug,\n i18n,\n importMap: payload.importMap,\n initialData,\n initPageResult: {\n collectionConfig: payload?.collections?.[collectionSlug]?.config,\n cookies,\n docID,\n globalConfig: payload.config.globals.find((global) => global.slug === collectionSlug),\n languageOptions: undefined, // TODO\n locale,\n permissions,\n req,\n translations: undefined, // TODO\n visibleEntities,\n },\n overrideEntityVisibility,\n params: paramsOverride ?? {\n segments: ['collections', collectionSlug, String(docID)],\n },\n payload,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n searchParams,\n versions,\n viewType: 'document',\n })\n\n return {\n data,\n Document,\n preferences,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ import type { SanitizedCollectionConfig, SelectType } from 'payload';
2
+ /**
3
+ * Mutates the incoming select object to append fields required for upload thumbnails
4
+ * @param collectionConfig
5
+ * @param select
6
+ */
7
+ export declare const appendUploadSelectFields: ({ collectionConfig, select, }: {
8
+ collectionConfig: SanitizedCollectionConfig;
9
+ select: SelectType;
10
+ }) => void;
11
+ //# sourceMappingURL=appendUploadSelectFields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appendUploadSelectFields.d.ts","sourceRoot":"","sources":["../../../src/views/List/appendUploadSelectFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEpE;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,kCAGlC;IACD,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,MAAM,EAAE,UAAU,CAAA;CACnB,SAmCA,CAAA"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Mutates the incoming select object to append fields required for upload thumbnails
3
+ * @param collectionConfig
4
+ * @param select
5
+ */export const appendUploadSelectFields = ({
6
+ collectionConfig,
7
+ select
8
+ }) => {
9
+ if (!collectionConfig.upload || !select) {
10
+ return;
11
+ }
12
+ select.mimeType = true;
13
+ select.thumbnailURL = true;
14
+ if (collectionConfig.upload.imageSizes && collectionConfig.upload.imageSizes.length > 0) {
15
+ if (collectionConfig.upload.adminThumbnail && typeof collectionConfig.upload.adminThumbnail === 'string') {
16
+ /** Only return image size properties that are required to generate the adminThumbnailURL */select.sizes = {
17
+ [collectionConfig.upload.adminThumbnail]: {
18
+ filename: true
19
+ }
20
+ };
21
+ } else {
22
+ /** Only return image size properties that are required for thumbnails */select.sizes = collectionConfig.upload.imageSizes.reduce((acc, imageSizeConfig) => {
23
+ return {
24
+ ...acc,
25
+ [imageSizeConfig.name]: {
26
+ filename: true,
27
+ url: true,
28
+ width: true
29
+ }
30
+ };
31
+ }, {});
32
+ }
33
+ } else {
34
+ select.url = true;
35
+ }
36
+ };
37
+ //# sourceMappingURL=appendUploadSelectFields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appendUploadSelectFields.js","names":["appendUploadSelectFields","collectionConfig","select","upload","mimeType","thumbnailURL","imageSizes","length","adminThumbnail","sizes","filename","reduce","acc","imageSizeConfig","name","url","width"],"sources":["../../../src/views/List/appendUploadSelectFields.ts"],"sourcesContent":["import type { SanitizedCollectionConfig, SelectType } from 'payload'\n\n/**\n * Mutates the incoming select object to append fields required for upload thumbnails\n * @param collectionConfig\n * @param select\n */\nexport const appendUploadSelectFields = ({\n collectionConfig,\n select,\n}: {\n collectionConfig: SanitizedCollectionConfig\n select: SelectType\n}) => {\n if (!collectionConfig.upload || !select) {\n return\n }\n\n select.mimeType = true\n select.thumbnailURL = true\n\n if (collectionConfig.upload.imageSizes && collectionConfig.upload.imageSizes.length > 0) {\n if (\n collectionConfig.upload.adminThumbnail &&\n typeof collectionConfig.upload.adminThumbnail === 'string'\n ) {\n /** Only return image size properties that are required to generate the adminThumbnailURL */\n select.sizes = {\n [collectionConfig.upload.adminThumbnail]: {\n filename: true,\n },\n }\n } else {\n /** Only return image size properties that are required for thumbnails */\n select.sizes = collectionConfig.upload.imageSizes.reduce((acc, imageSizeConfig) => {\n return {\n ...acc,\n [imageSizeConfig.name]: {\n filename: true,\n url: true,\n width: true,\n },\n }\n }, {})\n }\n } else {\n select.url = true\n }\n}\n"],"mappings":"AAEA;;;;GAKA,OAAO,MAAMA,wBAAA,GAA2BA,CAAC;EACvCC,gBAAgB;EAChBC;AAAM,CAIP;EACC,IAAI,CAACD,gBAAA,CAAiBE,MAAM,IAAI,CAACD,MAAA,EAAQ;IACvC;EACF;EAEAA,MAAA,CAAOE,QAAQ,GAAG;EAClBF,MAAA,CAAOG,YAAY,GAAG;EAEtB,IAAIJ,gBAAA,CAAiBE,MAAM,CAACG,UAAU,IAAIL,gBAAA,CAAiBE,MAAM,CAACG,UAAU,CAACC,MAAM,GAAG,GAAG;IACvF,IACEN,gBAAA,CAAiBE,MAAM,CAACK,cAAc,IACtC,OAAOP,gBAAA,CAAiBE,MAAM,CAACK,cAAc,KAAK,UAClD;MACA,4FACAN,MAAA,CAAOO,KAAK,GAAG;QACb,CAACR,gBAAA,CAAiBE,MAAM,CAACK,cAAc,GAAG;UACxCE,QAAA,EAAU;QACZ;MACF;IACF,OAAO;MACL,yEACAR,MAAA,CAAOO,KAAK,GAAGR,gBAAA,CAAiBE,MAAM,CAACG,UAAU,CAACK,MAAM,CAAC,CAACC,GAAA,EAAKC,eAAA;QAC7D,OAAO;UACL,GAAGD,GAAG;UACN,CAACC,eAAA,CAAgBC,IAAI,GAAG;YACtBJ,QAAA,EAAU;YACVK,GAAA,EAAK;YACLC,KAAA,EAAO;UACT;QACF;MACF,GAAG,CAAC;IACN;EACF,OAAO;IACLd,MAAA,CAAOa,GAAG,GAAG;EACf;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"handleServerFunction.d.ts","sourceRoot":"","sources":["../../../src/views/List/handleServerFunction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,cAAc,EAAmB,MAAM,SAAS,CAAA;AAQhG,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;IACrB,WAAW,EAAE,qBAAqB,CAAA;CACnC,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAC5C;IACE,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,EAAE,SAAS,CAAA;IAChB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,sBAAsB,EAAE,OAAO,CAAA;CAChC,EACD,OAAO,CAAC,gBAAgB,CAAC,CAiJ1B,CAAA"}
1
+ {"version":3,"file":"handleServerFunction.d.ts","sourceRoot":"","sources":["../../../src/views/List/handleServerFunction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,cAAc,EAAmB,MAAM,SAAS,CAAA;AAQhG,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;IACrB,WAAW,EAAE,qBAAqB,CAAA;CACnC,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAC5C;IACE,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,EAAE,SAAS,CAAA;IAChB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,sBAAsB,EAAE,OAAO,CAAA;CAChC,EACD,OAAO,CAAC,gBAAgB,CAAC,CAkH1B,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig';
2
2
  import { headers as getHeaders } from 'next/headers.js';
3
- import { getAccessResults, isEntityHidden, parseCookies } from 'payload';
3
+ import { canAccessAdmin, getAccessResults, isEntityHidden, parseCookies } from 'payload';
4
4
  import { renderListView } from './index.js';
5
5
  export const renderListHandler = async args => {
6
6
  const {
@@ -27,35 +27,9 @@ export const renderListHandler = async args => {
27
27
  } = args;
28
28
  const headers = await getHeaders();
29
29
  const cookies = parseCookies(headers);
30
- const incomingUserSlug = user?.collection;
31
- const adminUserSlug = config.admin.user;
32
- // If we have a user slug, test it against the functions
33
- if (incomingUserSlug) {
34
- const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin;
35
- // Run the admin access function from the config if it exists
36
- if (adminAccessFunction) {
37
- const canAccessAdmin = await adminAccessFunction({
38
- req
39
- });
40
- if (!canAccessAdmin) {
41
- throw new Error('Unauthorized');
42
- }
43
- // Match the user collection to the global admin config
44
- } else if (adminUserSlug !== incomingUserSlug) {
45
- throw new Error('Unauthorized');
46
- }
47
- } else {
48
- const hasUsers = await payload.find({
49
- collection: adminUserSlug,
50
- depth: 0,
51
- limit: 1,
52
- pagination: false
53
- });
54
- // If there are users, we should not allow access because of /create-first-user
55
- if (hasUsers.docs.length) {
56
- throw new Error('Unauthorized');
57
- }
58
- }
30
+ await canAccessAdmin({
31
+ req
32
+ });
59
33
  const clientConfig = getClientConfig({
60
34
  config,
61
35
  i18n,
@@ -1 +1 @@
1
- {"version":3,"file":"handleServerFunction.js","names":["getClientConfig","headers","getHeaders","getAccessResults","isEntityHidden","parseCookies","renderListView","renderListHandler","args","collectionSlug","disableActions","disableBulkDelete","disableBulkEdit","disableQueryPresets","drawerSlug","enableRowSelections","overrideEntityVisibility","query","redirectAfterDelete","redirectAfterDuplicate","req","i18n","payload","config","user","cookies","incomingUserSlug","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","clientConfig","importMap","preferencesKey","preferences","where","and","key","equals","id","then","res","value","visibleEntities","map","slug","hidden","filter","Boolean","globals","permissions","List","initPageResult","collectionConfig","globalConfig","global","languageOptions","undefined","translations","params","segments","searchParams","viewType"],"sources":["../../../src/views/List/handleServerFunction.tsx"],"sourcesContent":["import type { CollectionPreferences, ListQuery, ServerFunction, VisibleEntities } from 'payload'\n\nimport { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { getAccessResults, isEntityHidden, parseCookies } from 'payload'\n\nimport { renderListView } from './index.js'\n\ntype RenderListResult = {\n List: React.ReactNode\n preferences: CollectionPreferences\n}\n\nexport const renderListHandler: ServerFunction<\n {\n collectionSlug: string\n disableActions?: boolean\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n disableQueryPresets?: boolean\n documentDrawerSlug: string\n drawerSlug?: string\n enableRowSelections: boolean\n overrideEntityVisibility?: boolean\n query: ListQuery\n redirectAfterDelete: boolean\n redirectAfterDuplicate: boolean\n },\n Promise<RenderListResult>\n> = async (args) => {\n const {\n collectionSlug,\n disableActions,\n disableBulkDelete,\n disableBulkEdit,\n disableQueryPresets,\n drawerSlug,\n enableRowSelections,\n overrideEntityVisibility,\n query,\n redirectAfterDelete,\n redirectAfterDuplicate,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n } = args\n\n const headers = await getHeaders()\n\n const cookies = parseCookies(headers)\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: payload.importMap,\n user,\n })\n\n const preferencesKey = `collection-${collectionSlug}`\n\n const preferences = await payload\n .find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n where: {\n and: [\n {\n key: {\n equals: preferencesKey,\n },\n },\n {\n 'user.relationTo': {\n equals: user.collection,\n },\n },\n {\n 'user.value': {\n equals: user.id,\n },\n },\n ],\n },\n })\n .then((res) => res.docs[0]?.value as CollectionPreferences)\n\n const visibleEntities: VisibleEntities = {\n collections: payload.config.collections\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n globals: payload.config.globals\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n }\n\n const permissions = await getAccessResults({\n req,\n })\n\n const { List } = await renderListView({\n clientConfig,\n disableActions,\n disableBulkDelete,\n disableBulkEdit,\n disableQueryPresets,\n drawerSlug,\n enableRowSelections,\n i18n,\n importMap: payload.importMap,\n initPageResult: {\n collectionConfig: payload?.collections?.[collectionSlug]?.config,\n cookies,\n globalConfig: payload.config.globals.find((global) => global.slug === collectionSlug),\n languageOptions: undefined, // TODO\n permissions,\n req,\n translations: undefined, // TODO\n visibleEntities,\n },\n overrideEntityVisibility,\n params: {\n segments: ['collections', collectionSlug],\n },\n payload,\n query,\n redirectAfterDelete,\n redirectAfterDuplicate,\n searchParams: {},\n viewType: 'list',\n })\n\n return {\n List,\n preferences,\n }\n}\n"],"mappings":"AAEA,SAASA,eAAe,QAAQ;AAChC,SAASC,OAAA,IAAWC,UAAU,QAAQ;AACtC,SAASC,gBAAgB,EAAEC,cAAc,EAAEC,YAAY,QAAQ;AAE/D,SAASC,cAAc,QAAQ;AAO/B,OAAO,MAAMC,iBAAA,GAgBT,MAAOC,IAAA;EACT,MAAM;IACJC,cAAc;IACdC,cAAc;IACdC,iBAAiB;IACjBC,eAAe;IACfC,mBAAmB;IACnBC,UAAU;IACVC,mBAAmB;IACnBC,wBAAwB;IACxBC,KAAK;IACLC,mBAAmB;IACnBC,sBAAsB;IACtBC,GAAG;IACHA,GAAA,EAAK;MACHC,IAAI;MACJC,OAAO;MACPA,OAAA,EAAS;QAAEC;MAAM,CAAE;MACnBC;IAAI;EACL,CACF,GAAGhB,IAAA;EAEJ,MAAMP,OAAA,GAAU,MAAMC,UAAA;EAEtB,MAAMuB,OAAA,GAAUpB,YAAA,CAAaJ,OAAA;EAE7B,MAAMyB,gBAAA,GAAmBF,IAAA,EAAMG,UAAA;EAE/B,MAAMC,aAAA,GAAgBL,MAAA,CAAOM,KAAK,CAACL,IAAI;EAEvC;EACA,IAAIE,gBAAA,EAAkB;IACpB,MAAMI,mBAAA,GAAsBR,OAAA,CAAQS,WAAW,CAACL,gBAAA,CAAiB,CAACH,MAAM,CAACS,MAAM,EAAEH,KAAA;IAEjF;IACA,IAAIC,mBAAA,EAAqB;MACvB,MAAMG,cAAA,GAAiB,MAAMH,mBAAA,CAAoB;QAAEV;MAAI;MAEvD,IAAI,CAACa,cAAA,EAAgB;QACnB,MAAM,IAAIC,KAAA,CAAM;MAClB;MACA;IACF,OAAO,IAAIN,aAAA,KAAkBF,gBAAA,EAAkB;MAC7C,MAAM,IAAIQ,KAAA,CAAM;IAClB;EACF,OAAO;IACL,MAAMC,QAAA,GAAW,MAAMb,OAAA,CAAQc,IAAI,CAAC;MAClCT,UAAA,EAAYC,aAAA;MACZS,KAAA,EAAO;MACPC,KAAA,EAAO;MACPC,UAAA,EAAY;IACd;IAEA;IACA,IAAIJ,QAAA,CAASK,IAAI,CAACC,MAAM,EAAE;MACxB,MAAM,IAAIP,KAAA,CAAM;IAClB;EACF;EAEA,MAAMQ,YAAA,GAAe1C,eAAA,CAAgB;IACnCuB,MAAA;IACAF,IAAA;IACAsB,SAAA,EAAWrB,OAAA,CAAQqB,SAAS;IAC5BnB;EACF;EAEA,MAAMoB,cAAA,GAAiB,cAAcnC,cAAA,EAAgB;EAErD,MAAMoC,WAAA,GAAc,MAAMvB,OAAA,CACvBc,IAAI,CAAC;IACJT,UAAA,EAAY;IACZU,KAAA,EAAO;IACPC,KAAA,EAAO;IACPQ,KAAA,EAAO;MACLC,GAAA,EAAK,CACH;QACEC,GAAA,EAAK;UACHC,MAAA,EAAQL;QACV;MACF,GACA;QACE,mBAAmB;UACjBK,MAAA,EAAQzB,IAAA,CAAKG;QACf;MACF,GACA;QACE,cAAc;UACZsB,MAAA,EAAQzB,IAAA,CAAK0B;QACf;MACF;IAEJ;EACF,GACCC,IAAI,CAAEC,GAAA,IAAQA,GAAA,CAAIZ,IAAI,CAAC,EAAE,EAAEa,KAAA;EAE9B,MAAMC,eAAA,GAAmC;IACvCvB,WAAA,EAAaT,OAAA,CAAQC,MAAM,CAACQ,WAAW,CACpCwB,GAAG,CAAC,CAAC;MAAEC,IAAI;MAAE3B,KAAA,EAAO;QAAE4B;MAAM;IAAE,CAAE,KAAM,CAACrD,cAAA,CAAe;MAAEqD,MAAA;MAAQjC;IAAK,KAAKgC,IAAA,GAAO,MACjFE,MAAM,CAACC,OAAA;IACVC,OAAA,EAAStC,OAAA,CAAQC,MAAM,CAACqC,OAAO,CAC5BL,GAAG,CAAC,CAAC;MAAEC,IAAI;MAAE3B,KAAA,EAAO;QAAE4B;MAAM;IAAE,CAAE,KAAM,CAACrD,cAAA,CAAe;MAAEqD,MAAA;MAAQjC;IAAK,KAAKgC,IAAA,GAAO,MACjFE,MAAM,CAACC,OAAA;EACZ;EAEA,MAAME,WAAA,GAAc,MAAM1D,gBAAA,CAAiB;IACzCiB;EACF;EAEA,MAAM;IAAE0C;EAAI,CAAE,GAAG,MAAMxD,cAAA,CAAe;IACpCoC,YAAA;IACAhC,cAAA;IACAC,iBAAA;IACAC,eAAA;IACAC,mBAAA;IACAC,UAAA;IACAC,mBAAA;IACAM,IAAA;IACAsB,SAAA,EAAWrB,OAAA,CAAQqB,SAAS;IAC5BoB,cAAA,EAAgB;MACdC,gBAAA,EAAkB1C,OAAA,EAASS,WAAA,GAActB,cAAA,CAAe,EAAEc,MAAA;MAC1DE,OAAA;MACAwC,YAAA,EAAc3C,OAAA,CAAQC,MAAM,CAACqC,OAAO,CAACxB,IAAI,CAAE8B,MAAA,IAAWA,MAAA,CAAOV,IAAI,KAAK/C,cAAA;MACtE0D,eAAA,EAAiBC,SAAA;MACjBP,WAAA;MACAzC,GAAA;MACAiD,YAAA,EAAcD,SAAA;MACdd;IACF;IACAtC,wBAAA;IACAsD,MAAA,EAAQ;MACNC,QAAA,EAAU,CAAC,eAAe9D,cAAA;IAC5B;IACAa,OAAA;IACAL,KAAA;IACAC,mBAAA;IACAC,sBAAA;IACAqD,YAAA,EAAc,CAAC;IACfC,QAAA,EAAU;EACZ;EAEA,OAAO;IACLX,IAAA;IACAjB;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"file":"handleServerFunction.js","names":["getClientConfig","headers","getHeaders","canAccessAdmin","getAccessResults","isEntityHidden","parseCookies","renderListView","renderListHandler","args","collectionSlug","disableActions","disableBulkDelete","disableBulkEdit","disableQueryPresets","drawerSlug","enableRowSelections","overrideEntityVisibility","query","redirectAfterDelete","redirectAfterDuplicate","req","i18n","payload","config","user","cookies","clientConfig","importMap","preferencesKey","preferences","find","collection","depth","limit","where","and","key","equals","id","then","res","docs","value","visibleEntities","collections","map","slug","admin","hidden","filter","Boolean","globals","permissions","List","initPageResult","collectionConfig","globalConfig","global","languageOptions","undefined","translations","params","segments","searchParams","viewType"],"sources":["../../../src/views/List/handleServerFunction.tsx"],"sourcesContent":["import type { CollectionPreferences, ListQuery, ServerFunction, VisibleEntities } from 'payload'\n\nimport { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { canAccessAdmin, getAccessResults, isEntityHidden, parseCookies } from 'payload'\n\nimport { renderListView } from './index.js'\n\ntype RenderListResult = {\n List: React.ReactNode\n preferences: CollectionPreferences\n}\n\nexport const renderListHandler: ServerFunction<\n {\n collectionSlug: string\n disableActions?: boolean\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n disableQueryPresets?: boolean\n documentDrawerSlug: string\n drawerSlug?: string\n enableRowSelections: boolean\n overrideEntityVisibility?: boolean\n query: ListQuery\n redirectAfterDelete: boolean\n redirectAfterDuplicate: boolean\n },\n Promise<RenderListResult>\n> = async (args) => {\n const {\n collectionSlug,\n disableActions,\n disableBulkDelete,\n disableBulkEdit,\n disableQueryPresets,\n drawerSlug,\n enableRowSelections,\n overrideEntityVisibility,\n query,\n redirectAfterDelete,\n redirectAfterDuplicate,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n } = args\n\n const headers = await getHeaders()\n\n const cookies = parseCookies(headers)\n\n await canAccessAdmin({ req })\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: payload.importMap,\n user,\n })\n\n const preferencesKey = `collection-${collectionSlug}`\n\n const preferences = await payload\n .find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n where: {\n and: [\n {\n key: {\n equals: preferencesKey,\n },\n },\n {\n 'user.relationTo': {\n equals: user.collection,\n },\n },\n {\n 'user.value': {\n equals: user.id,\n },\n },\n ],\n },\n })\n .then((res) => res.docs[0]?.value as CollectionPreferences)\n\n const visibleEntities: VisibleEntities = {\n collections: payload.config.collections\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n globals: payload.config.globals\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n }\n\n const permissions = await getAccessResults({\n req,\n })\n\n const { List } = await renderListView({\n clientConfig,\n disableActions,\n disableBulkDelete,\n disableBulkEdit,\n disableQueryPresets,\n drawerSlug,\n enableRowSelections,\n i18n,\n importMap: payload.importMap,\n initPageResult: {\n collectionConfig: payload?.collections?.[collectionSlug]?.config,\n cookies,\n globalConfig: payload.config.globals.find((global) => global.slug === collectionSlug),\n languageOptions: undefined, // TODO\n permissions,\n req,\n translations: undefined, // TODO\n visibleEntities,\n },\n overrideEntityVisibility,\n params: {\n segments: ['collections', collectionSlug],\n },\n payload,\n query,\n redirectAfterDelete,\n redirectAfterDuplicate,\n searchParams: {},\n viewType: 'list',\n })\n\n return {\n List,\n preferences,\n }\n}\n"],"mappings":"AAEA,SAASA,eAAe,QAAQ;AAChC,SAASC,OAAA,IAAWC,UAAU,QAAQ;AACtC,SAASC,cAAc,EAAEC,gBAAgB,EAAEC,cAAc,EAAEC,YAAY,QAAQ;AAE/E,SAASC,cAAc,QAAQ;AAO/B,OAAO,MAAMC,iBAAA,GAgBT,MAAOC,IAAA;EACT,MAAM;IACJC,cAAc;IACdC,cAAc;IACdC,iBAAiB;IACjBC,eAAe;IACfC,mBAAmB;IACnBC,UAAU;IACVC,mBAAmB;IACnBC,wBAAwB;IACxBC,KAAK;IACLC,mBAAmB;IACnBC,sBAAsB;IACtBC,GAAG;IACHA,GAAA,EAAK;MACHC,IAAI;MACJC,OAAO;MACPA,OAAA,EAAS;QAAEC;MAAM,CAAE;MACnBC;IAAI;EACL,CACF,GAAGhB,IAAA;EAEJ,MAAMR,OAAA,GAAU,MAAMC,UAAA;EAEtB,MAAMwB,OAAA,GAAUpB,YAAA,CAAaL,OAAA;EAE7B,MAAME,cAAA,CAAe;IAAEkB;EAAI;EAE3B,MAAMM,YAAA,GAAe3B,eAAA,CAAgB;IACnCwB,MAAA;IACAF,IAAA;IACAM,SAAA,EAAWL,OAAA,CAAQK,SAAS;IAC5BH;EACF;EAEA,MAAMI,cAAA,GAAiB,cAAcnB,cAAA,EAAgB;EAErD,MAAMoB,WAAA,GAAc,MAAMP,OAAA,CACvBQ,IAAI,CAAC;IACJC,UAAA,EAAY;IACZC,KAAA,EAAO;IACPC,KAAA,EAAO;IACPC,KAAA,EAAO;MACLC,GAAA,EAAK,CACH;QACEC,GAAA,EAAK;UACHC,MAAA,EAAQT;QACV;MACF,GACA;QACE,mBAAmB;UACjBS,MAAA,EAAQb,IAAA,CAAKO;QACf;MACF,GACA;QACE,cAAc;UACZM,MAAA,EAAQb,IAAA,CAAKc;QACf;MACF;IAEJ;EACF,GACCC,IAAI,CAAEC,GAAA,IAAQA,GAAA,CAAIC,IAAI,CAAC,EAAE,EAAEC,KAAA;EAE9B,MAAMC,eAAA,GAAmC;IACvCC,WAAA,EAAatB,OAAA,CAAQC,MAAM,CAACqB,WAAW,CACpCC,GAAG,CAAC,CAAC;MAAEC,IAAI;MAAEC,KAAA,EAAO;QAAEC;MAAM;IAAE,CAAE,KAAM,CAAC5C,cAAA,CAAe;MAAE4C,MAAA;MAAQxB;IAAK,KAAKsB,IAAA,GAAO,MACjFG,MAAM,CAACC,OAAA;IACVC,OAAA,EAAS7B,OAAA,CAAQC,MAAM,CAAC4B,OAAO,CAC5BN,GAAG,CAAC,CAAC;MAAEC,IAAI;MAAEC,KAAA,EAAO;QAAEC;MAAM;IAAE,CAAE,KAAM,CAAC5C,cAAA,CAAe;MAAE4C,MAAA;MAAQxB;IAAK,KAAKsB,IAAA,GAAO,MACjFG,MAAM,CAACC,OAAA;EACZ;EAEA,MAAME,WAAA,GAAc,MAAMjD,gBAAA,CAAiB;IACzCiB;EACF;EAEA,MAAM;IAAEiC;EAAI,CAAE,GAAG,MAAM/C,cAAA,CAAe;IACpCoB,YAAA;IACAhB,cAAA;IACAC,iBAAA;IACAC,eAAA;IACAC,mBAAA;IACAC,UAAA;IACAC,mBAAA;IACAM,IAAA;IACAM,SAAA,EAAWL,OAAA,CAAQK,SAAS;IAC5B2B,cAAA,EAAgB;MACdC,gBAAA,EAAkBjC,OAAA,EAASsB,WAAA,GAAcnC,cAAA,CAAe,EAAEc,MAAA;MAC1DE,OAAA;MACA+B,YAAA,EAAclC,OAAA,CAAQC,MAAM,CAAC4B,OAAO,CAACrB,IAAI,CAAE2B,MAAA,IAAWA,MAAA,CAAOX,IAAI,KAAKrC,cAAA;MACtEiD,eAAA,EAAiBC,SAAA;MACjBP,WAAA;MACAhC,GAAA;MACAwC,YAAA,EAAcD,SAAA;MACdhB;IACF;IACA3B,wBAAA;IACA6C,MAAA,EAAQ;MACNC,QAAA,EAAU,CAAC,eAAerD,cAAA;IAC5B;IACAa,OAAA;IACAL,KAAA;IACAC,mBAAA;IACAC,sBAAA;IACA4C,YAAA,EAAc,CAAC;IACfC,QAAA,EAAU;EACZ;EAEA,OAAO;IACLX,IAAA;IACAxB;EACF;AACF","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { type AdminViewServerProps, type ListQuery } from 'payload';
1
+ import type { AdminViewServerProps, ListQuery } from 'payload';
2
2
  import React from 'react';
3
3
  type RenderListViewArgs = {
4
4
  customCellProps?: Record<string, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/List/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,oBAAoB,EAIzB,KAAK,SAAS,EAMf,MAAM,SAAS,CAAA;AAShB,OAAO,KAAmB,MAAM,OAAO,CAAA;AAQvC,KAAK,kBAAkB,GAAG;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,EAAE,SAAS,CAAA;IAChB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,GAAG,oBAAoB,CAAA;AAExB;;;;;GAKG;AACH,eAAO,MAAM,cAAc,SACnB,kBAAkB,KACvB,OAAO,CAAC;IACT,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;CACtB,CA2UA,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAWjD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/List/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAIpB,SAAS,EAMV,MAAM,SAAS,CAAA;AAchB,OAAO,KAAmB,MAAM,OAAO,CAAA;AASvC,KAAK,kBAAkB,GAAG;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,EAAE,SAAS,CAAA;IAChB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,GAAG,oBAAoB,CAAA;AAExB;;;;;GAKG;AACH,eAAO,MAAM,cAAc,SACnB,kBAAkB,KACvB,OAAO,CAAC;IACT,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;CACtB,CAiVA,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAWjD,CAAA"}