@payloadcms/next 3.31.0-canary.1 → 3.31.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.
@@ -0,0 +1,2 @@
1
+ export declare const getSafeRedirect: (redirectParam: string | string[], fallback?: string) => string;
2
+ //# sourceMappingURL=getSafeRedirect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSafeRedirect.d.ts","sourceRoot":"","sources":["../../src/utilities/getSafeRedirect.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,kBACX,MAAM,GAAG,MAAM,EAAE,aACtB,MAAM,KACf,MAmBF,CAAA"}
@@ -0,0 +1,18 @@
1
+ export const getSafeRedirect = (redirectParam, fallback = '/') => {
2
+ if (typeof redirectParam !== 'string') {
3
+ return fallback;
4
+ }
5
+ // Ensures that any leading or trailing whitespace doesn’t affect the checks
6
+ const redirectPath = redirectParam.trim();
7
+ const isSafeRedirect =
8
+ // Must start with a single forward slash (e.g., "/admin")
9
+ redirectPath.startsWith('/') &&
10
+ // Prevent protocol-relative URLs (e.g., "//evil.com")
11
+ !redirectPath.startsWith('//') &&
12
+ // Prevent javascript-based schemes (e.g., "/javascript:alert(1)")
13
+ !redirectPath.toLowerCase().startsWith('/javascript:') &&
14
+ // Prevent attempts to redirect to full URLs using "/http:" or "/https:"
15
+ !redirectPath.toLowerCase().startsWith('/http');
16
+ return isSafeRedirect ? redirectPath : fallback;
17
+ };
18
+ //# sourceMappingURL=getSafeRedirect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSafeRedirect.js","names":["getSafeRedirect","redirectParam","fallback","redirectPath","trim","isSafeRedirect","startsWith","toLowerCase"],"sources":["../../src/utilities/getSafeRedirect.ts"],"sourcesContent":["export const getSafeRedirect = (\n redirectParam: string | string[],\n fallback: string = '/',\n): string => {\n if (typeof redirectParam !== 'string') {\n return fallback\n }\n\n // Ensures that any leading or trailing whitespace doesn’t affect the checks\n const redirectPath = redirectParam.trim()\n\n const isSafeRedirect =\n // Must start with a single forward slash (e.g., \"/admin\")\n redirectPath.startsWith('/') &&\n // Prevent protocol-relative URLs (e.g., \"//evil.com\")\n !redirectPath.startsWith('//') &&\n // Prevent javascript-based schemes (e.g., \"/javascript:alert(1)\")\n !redirectPath.toLowerCase().startsWith('/javascript:') &&\n // Prevent attempts to redirect to full URLs using \"/http:\" or \"/https:\"\n !redirectPath.toLowerCase().startsWith('/http')\n\n return isSafeRedirect ? redirectPath : fallback\n}\n"],"mappings":"AAAA,OAAO,MAAMA,eAAA,GAAkBA,CAC7BC,aAAA,EACAC,QAAA,GAAmB,GAAG;EAEtB,IAAI,OAAOD,aAAA,KAAkB,UAAU;IACrC,OAAOC,QAAA;EACT;EAEA;EACA,MAAMC,YAAA,GAAeF,aAAA,CAAcG,IAAI;EAEvC,MAAMC,cAAA;EACJ;EACAF,YAAA,CAAaG,UAAU,CAAC;EACxB;EACA,CAACH,YAAA,CAAaG,UAAU,CAAC;EACzB;EACA,CAACH,YAAA,CAAaI,WAAW,GAAGD,UAAU,CAAC;EACvC;EACA,CAACH,YAAA,CAAaI,WAAW,GAAGD,UAAU,CAAC;EAEzC,OAAOD,cAAA,GAAiBF,YAAA,GAAeD,QAAA;AACzC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Login/LoginForm/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAqBzB,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;CAC/D,CA+FA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Login/LoginForm/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAsBzB,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;CAC/D,CAyFA,CAAA"}
@@ -6,9 +6,10 @@ import React from 'react';
6
6
  const baseClass = 'login__form';
7
7
  import { Form, FormSubmit, Link, PasswordField, useAuth, useConfig, useTranslation } from '@payloadcms/ui';
8
8
  import { formatAdminURL, getLoginOptions } from 'payload/shared';
9
+ import { getSafeRedirect } from '../../../utilities/getSafeRedirect.js';
9
10
  import { LoginField } from '../LoginField/index.js';
10
11
  export const LoginForm = t0 => {
11
- const $ = _c(26);
12
+ const $ = _c(23);
12
13
  const {
13
14
  prefillEmail,
14
15
  prefillPassword,
@@ -84,7 +85,7 @@ export const LoginForm = t0 => {
84
85
  const t6 = prefillPassword ?? undefined;
85
86
  const t7 = prefillPassword ?? undefined;
86
87
  let t8;
87
- if ($[7] !== adminRoute || $[8] !== apiRoute || $[9] !== forgotRoute || $[10] !== loginType || $[11] !== loginWithUsername || $[12] !== prefillEmail || $[13] !== prefillUsername || $[14] !== searchParams || $[15] !== setUser || $[16] !== t || $[17] !== t6 || $[18] !== t7 || $[19] !== userSlug) {
88
+ if ($[7] !== adminRoute || $[8] !== apiRoute || $[9] !== forgotRoute || $[10] !== loginType || $[11] !== loginWithUsername || $[12] !== prefillEmail || $[13] !== prefillUsername || $[14] !== searchParams?.redirect || $[15] !== setUser || $[16] !== t || $[17] !== t6 || $[18] !== t7 || $[19] !== userSlug) {
88
89
  const initialState = {
89
90
  password: {
90
91
  initialValue: t6,
@@ -116,15 +117,6 @@ export const LoginForm = t0 => {
116
117
  t9 = $[22];
117
118
  }
118
119
  const handleLogin = t9;
119
- let t10;
120
- if ($[23] !== adminRoute || $[24] !== searchParams) {
121
- t10 = typeof searchParams?.redirect === "string" ? searchParams.redirect.startsWith("/") ? searchParams.redirect : encodeURIComponent(searchParams.redirect) : adminRoute;
122
- $[23] = adminRoute;
123
- $[24] = searchParams;
124
- $[25] = t10;
125
- } else {
126
- t10 = $[25];
127
- }
128
120
  t8 = _jsxs(Form, {
129
121
  action: `${apiRoute}/${userSlug}/login`,
130
122
  className: baseClass,
@@ -132,7 +124,7 @@ export const LoginForm = t0 => {
132
124
  initialState,
133
125
  method: "POST",
134
126
  onSuccess: handleLogin,
135
- redirect: t10,
127
+ redirect: getSafeRedirect(searchParams?.redirect, adminRoute),
136
128
  waitForAutocomplete: true,
137
129
  children: [_jsxs("div", {
138
130
  className: `${baseClass}__inputWrap`,
@@ -165,7 +157,7 @@ export const LoginForm = t0 => {
165
157
  $[11] = loginWithUsername;
166
158
  $[12] = prefillEmail;
167
159
  $[13] = prefillUsername;
168
- $[14] = searchParams;
160
+ $[14] = searchParams?.redirect;
169
161
  $[15] = setUser;
170
162
  $[16] = t;
171
163
  $[17] = t6;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","baseClass","Form","FormSubmit","Link","PasswordField","useAuth","useConfig","useTranslation","formatAdminURL","getLoginOptions","LoginField","LoginForm","t0","$","prefillEmail","prefillPassword","prefillUsername","searchParams","config","getEntityConfig","admin","t1","routes","t2","t3","user","userSlug","forgot","forgotRoute","adminRoute","api","apiRoute","loginWithUsername","t4","collectionConfig","collectionSlug","auth","authOptions","canLoginWithEmail","canLoginWithUsername","t5","loginType","useState","t","setUser","t6","undefined","t7","t8","initialState","password","initialValue","valid","value","username","email","t9","data","handleLogin","t10","redirect","startsWith","encodeURIComponent","_jsxs","action","className","disableSuccessStatus","method","onSuccess","waitForAutocomplete","children","_jsx","type","field","name","label","required","path","href","prefetch","size"],"sources":["../../../../src/views/Login/LoginForm/index.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nconst baseClass = 'login__form'\n\nimport type { UserWithToken } from '@payloadcms/ui'\nimport type { FormState } from 'payload'\n\nimport {\n Form,\n FormSubmit,\n Link,\n PasswordField,\n useAuth,\n useConfig,\n useTranslation,\n} from '@payloadcms/ui'\nimport { formatAdminURL, getLoginOptions } from 'payload/shared'\n\nimport type { LoginFieldProps } from '../LoginField/index.js'\n\nimport { LoginField } from '../LoginField/index.js'\nimport './index.scss'\n\nexport const LoginForm: React.FC<{\n prefillEmail?: string\n prefillPassword?: string\n prefillUsername?: string\n searchParams: { [key: string]: string | string[] | undefined }\n}> = ({ prefillEmail, prefillPassword, prefillUsername, searchParams }) => {\n const { config, getEntityConfig } = useConfig()\n\n const {\n admin: {\n routes: { forgot: forgotRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n } = config\n\n const collectionConfig = getEntityConfig({ collectionSlug: userSlug })\n const { auth: authOptions } = collectionConfig\n const loginWithUsername = authOptions.loginWithUsername\n const { canLoginWithEmail, canLoginWithUsername } = getLoginOptions(loginWithUsername)\n\n const [loginType] = React.useState<LoginFieldProps['type']>(() => {\n if (canLoginWithEmail && canLoginWithUsername) {\n return 'emailOrUsername'\n }\n if (canLoginWithUsername) {\n return 'username'\n }\n return 'email'\n })\n\n const { t } = useTranslation()\n const { setUser } = useAuth()\n\n const initialState: FormState = {\n password: {\n initialValue: prefillPassword ?? undefined,\n valid: true,\n value: prefillPassword ?? undefined,\n },\n }\n\n if (loginWithUsername) {\n initialState.username = {\n initialValue: prefillUsername ?? undefined,\n valid: true,\n value: prefillUsername ?? undefined,\n }\n } else {\n initialState.email = {\n initialValue: prefillEmail ?? undefined,\n valid: true,\n value: prefillEmail ?? undefined,\n }\n }\n\n const handleLogin = (data: UserWithToken) => {\n setUser(data)\n }\n\n return (\n <Form\n action={`${apiRoute}/${userSlug}/login`}\n className={baseClass}\n disableSuccessStatus\n initialState={initialState}\n method=\"POST\"\n onSuccess={handleLogin}\n redirect={\n typeof searchParams?.redirect === 'string'\n ? searchParams.redirect.startsWith('/')\n ? searchParams.redirect\n : encodeURIComponent(searchParams.redirect)\n : adminRoute\n }\n waitForAutocomplete\n >\n <div className={`${baseClass}__inputWrap`}>\n <LoginField type={loginType} />\n <PasswordField\n field={{\n name: 'password',\n label: t('general:password'),\n required: true,\n }}\n path=\"password\"\n />\n </div>\n <Link\n href={formatAdminURL({\n adminRoute,\n path: forgotRoute,\n })}\n prefetch={false}\n >\n {t('authentication:forgotPasswordQuestion')}\n </Link>\n <FormSubmit size=\"large\">{t('authentication:login')}</FormSubmit>\n </Form>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","baseClass","Form","FormSubmit","Link","PasswordField","useAuth","useConfig","useTranslation","formatAdminURL","getLoginOptions","getSafeRedirect","LoginField","LoginForm","t0","$","prefillEmail","prefillPassword","prefillUsername","searchParams","config","getEntityConfig","admin","t1","routes","t2","t3","user","userSlug","forgot","forgotRoute","adminRoute","api","apiRoute","loginWithUsername","t4","collectionConfig","collectionSlug","auth","authOptions","canLoginWithEmail","canLoginWithUsername","t5","loginType","useState","t","setUser","t6","undefined","t7","t8","redirect","initialState","password","initialValue","valid","value","username","email","t9","data","handleLogin","_jsxs","action","className","disableSuccessStatus","method","onSuccess","waitForAutocomplete","children","_jsx","type","field","name","label","required","path","href","prefetch","size"],"sources":["../../../../src/views/Login/LoginForm/index.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nconst baseClass = 'login__form'\n\nimport type { UserWithToken } from '@payloadcms/ui'\nimport type { FormState } from 'payload'\n\nimport {\n Form,\n FormSubmit,\n Link,\n PasswordField,\n useAuth,\n useConfig,\n useTranslation,\n} from '@payloadcms/ui'\nimport { formatAdminURL, getLoginOptions } from 'payload/shared'\n\nimport type { LoginFieldProps } from '../LoginField/index.js'\n\nimport { getSafeRedirect } from '../../../utilities/getSafeRedirect.js'\nimport { LoginField } from '../LoginField/index.js'\nimport './index.scss'\n\nexport const LoginForm: React.FC<{\n prefillEmail?: string\n prefillPassword?: string\n prefillUsername?: string\n searchParams: { [key: string]: string | string[] | undefined }\n}> = ({ prefillEmail, prefillPassword, prefillUsername, searchParams }) => {\n const { config, getEntityConfig } = useConfig()\n\n const {\n admin: {\n routes: { forgot: forgotRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n } = config\n\n const collectionConfig = getEntityConfig({ collectionSlug: userSlug })\n const { auth: authOptions } = collectionConfig\n const loginWithUsername = authOptions.loginWithUsername\n const { canLoginWithEmail, canLoginWithUsername } = getLoginOptions(loginWithUsername)\n\n const [loginType] = React.useState<LoginFieldProps['type']>(() => {\n if (canLoginWithEmail && canLoginWithUsername) {\n return 'emailOrUsername'\n }\n if (canLoginWithUsername) {\n return 'username'\n }\n return 'email'\n })\n\n const { t } = useTranslation()\n const { setUser } = useAuth()\n\n const initialState: FormState = {\n password: {\n initialValue: prefillPassword ?? undefined,\n valid: true,\n value: prefillPassword ?? undefined,\n },\n }\n\n if (loginWithUsername) {\n initialState.username = {\n initialValue: prefillUsername ?? undefined,\n valid: true,\n value: prefillUsername ?? undefined,\n }\n } else {\n initialState.email = {\n initialValue: prefillEmail ?? undefined,\n valid: true,\n value: prefillEmail ?? undefined,\n }\n }\n\n const handleLogin = (data: UserWithToken) => {\n setUser(data)\n }\n\n return (\n <Form\n action={`${apiRoute}/${userSlug}/login`}\n className={baseClass}\n disableSuccessStatus\n initialState={initialState}\n method=\"POST\"\n onSuccess={handleLogin}\n redirect={getSafeRedirect(searchParams?.redirect, adminRoute)}\n waitForAutocomplete\n >\n <div className={`${baseClass}__inputWrap`}>\n <LoginField type={loginType} />\n <PasswordField\n field={{\n name: 'password',\n label: t('general:password'),\n required: true,\n }}\n path=\"password\"\n />\n </div>\n <Link\n href={formatAdminURL({\n adminRoute,\n path: forgotRoute,\n })}\n prefetch={false}\n >\n {t('authentication:forgotPasswordQuestion')}\n </Link>\n <FormSubmit size=\"large\">{t('authentication:login')}</FormSubmit>\n </Form>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Login/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAe,MAAM,SAAS,CAAA;AAIhE,OAAO,KAAmB,MAAM,OAAO,CAAA;AAIvC,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,cAAc,UAAU,CAAA;AAErC,wBAAgB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,oBAAoB,qBA+FvF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Login/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAe,MAAM,SAAS,CAAA;AAIhE,OAAO,KAAmB,MAAM,OAAO,CAAA;AAKvC,OAAO,cAAc,CAAA;AACrB,eAAO,MAAM,cAAc,UAAU,CAAA;AAErC,wBAAgB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,oBAAoB,qBA0FvF"}
@@ -3,6 +3,7 @@ import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerCompo
3
3
  import { redirect } from 'next/navigation.js';
4
4
  import React, { Fragment } from 'react';
5
5
  import { Logo } from '../../elements/Logo/index.js';
6
+ import { getSafeRedirect } from '../../utilities/getSafeRedirect.js';
6
7
  import { LoginForm } from './LoginForm/index.js';
7
8
  export const loginBaseClass = 'login';
8
9
  export function LoginView({
@@ -35,9 +36,7 @@ export function LoginView({
35
36
  admin
36
37
  }
37
38
  } = config;
38
- const redirectUrl = typeof searchParams.redirect === 'string' ? searchParams.redirect.startsWith('/') // If it's a relative path, keep it
39
- ? searchParams.redirect : encodeURIComponent(searchParams.redirect) // Otherwise, encode it
40
- : admin;
39
+ const redirectUrl = getSafeRedirect(searchParams.redirect, admin);
41
40
  if (user) {
42
41
  redirect(redirectUrl);
43
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["RenderServerComponent","redirect","React","Fragment","Logo","LoginForm","loginBaseClass","LoginView","initPageResult","params","searchParams","locale","permissions","req","i18n","payload","config","user","admin","components","afterLogin","beforeLogin","userSlug","routes","redirectUrl","startsWith","encodeURIComponent","collectionConfig","collections","prefillAutoLogin","autoLogin","prefillOnly","prefillUsername","username","undefined","prefillEmail","email","prefillPassword","password","_jsxs","_jsx","className","Component","importMap","serverProps","auth","disableLocalStrategy"],"sources":["../../../src/views/Login/index.tsx"],"sourcesContent":["import type { AdminViewServerProps, ServerProps } from 'payload'\n\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { redirect } from 'next/navigation.js'\nimport React, { Fragment } from 'react'\n\nimport { Logo } from '../../elements/Logo/index.js'\nimport { LoginForm } from './LoginForm/index.js'\nimport './index.scss'\n\nexport const loginBaseClass = 'login'\n\nexport function LoginView({ initPageResult, params, searchParams }: AdminViewServerProps) {\n const { locale, permissions, req } = initPageResult\n\n const {\n i18n,\n payload: { config },\n payload,\n user,\n } = req\n\n const {\n admin: { components: { afterLogin, beforeLogin } = {}, user: userSlug },\n routes: { admin },\n } = config\n\n const redirectUrl =\n typeof searchParams.redirect === 'string'\n ? searchParams.redirect.startsWith('/') // If it's a relative path, keep it\n ? searchParams.redirect\n : encodeURIComponent(searchParams.redirect) // Otherwise, encode it\n : admin\n\n if (user) {\n redirect(redirectUrl)\n }\n\n const collectionConfig = payload?.collections?.[userSlug]?.config\n\n const prefillAutoLogin =\n typeof config.admin?.autoLogin === 'object' && config.admin?.autoLogin.prefillOnly\n\n const prefillUsername =\n prefillAutoLogin && typeof config.admin?.autoLogin === 'object'\n ? config.admin?.autoLogin.username\n : undefined\n\n const prefillEmail =\n prefillAutoLogin && typeof config.admin?.autoLogin === 'object'\n ? config.admin?.autoLogin.email\n : undefined\n\n const prefillPassword =\n prefillAutoLogin && typeof config.admin?.autoLogin === 'object'\n ? config.admin?.autoLogin.password\n : undefined\n\n return (\n <Fragment>\n <div className={`${loginBaseClass}__brand`}>\n <Logo\n i18n={i18n}\n locale={locale}\n params={params}\n payload={payload}\n permissions={permissions}\n searchParams={searchParams}\n user={user}\n />\n </div>\n {RenderServerComponent({\n Component: beforeLogin,\n importMap: payload.importMap,\n serverProps: {\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n } satisfies ServerProps,\n })}\n {!collectionConfig?.auth?.disableLocalStrategy && (\n <LoginForm\n prefillEmail={prefillEmail}\n prefillPassword={prefillPassword}\n prefillUsername={prefillUsername}\n searchParams={searchParams}\n />\n )}\n {RenderServerComponent({\n Component: afterLogin,\n importMap: payload.importMap,\n serverProps: {\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n } satisfies ServerProps,\n })}\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["RenderServerComponent","redirect","React","Fragment","Logo","getSafeRedirect","LoginForm","loginBaseClass","LoginView","initPageResult","params","searchParams","locale","permissions","req","i18n","payload","config","user","admin","components","afterLogin","beforeLogin","userSlug","routes","redirectUrl","collectionConfig","collections","prefillAutoLogin","autoLogin","prefillOnly","prefillUsername","username","undefined","prefillEmail","email","prefillPassword","password","_jsxs","_jsx","className","Component","importMap","serverProps","auth","disableLocalStrategy"],"sources":["../../../src/views/Login/index.tsx"],"sourcesContent":["import type { AdminViewServerProps, ServerProps } from 'payload'\n\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { redirect } from 'next/navigation.js'\nimport React, { Fragment } from 'react'\n\nimport { Logo } from '../../elements/Logo/index.js'\nimport { getSafeRedirect } from '../../utilities/getSafeRedirect.js'\nimport { LoginForm } from './LoginForm/index.js'\nimport './index.scss'\nexport const loginBaseClass = 'login'\n\nexport function LoginView({ initPageResult, params, searchParams }: AdminViewServerProps) {\n const { locale, permissions, req } = initPageResult\n\n const {\n i18n,\n payload: { config },\n payload,\n user,\n } = req\n\n const {\n admin: { components: { afterLogin, beforeLogin } = {}, user: userSlug },\n routes: { admin },\n } = config\n\n const redirectUrl = getSafeRedirect(searchParams.redirect, admin)\n\n if (user) {\n redirect(redirectUrl)\n }\n\n const collectionConfig = payload?.collections?.[userSlug]?.config\n\n const prefillAutoLogin =\n typeof config.admin?.autoLogin === 'object' && config.admin?.autoLogin.prefillOnly\n\n const prefillUsername =\n prefillAutoLogin && typeof config.admin?.autoLogin === 'object'\n ? config.admin?.autoLogin.username\n : undefined\n\n const prefillEmail =\n prefillAutoLogin && typeof config.admin?.autoLogin === 'object'\n ? config.admin?.autoLogin.email\n : undefined\n\n const prefillPassword =\n prefillAutoLogin && typeof config.admin?.autoLogin === 'object'\n ? config.admin?.autoLogin.password\n : undefined\n\n return (\n <Fragment>\n <div className={`${loginBaseClass}__brand`}>\n <Logo\n i18n={i18n}\n locale={locale}\n params={params}\n payload={payload}\n permissions={permissions}\n searchParams={searchParams}\n user={user}\n />\n </div>\n {RenderServerComponent({\n Component: beforeLogin,\n importMap: payload.importMap,\n serverProps: {\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n } satisfies ServerProps,\n })}\n {!collectionConfig?.auth?.disableLocalStrategy && (\n <LoginForm\n prefillEmail={prefillEmail}\n prefillPassword={prefillPassword}\n prefillUsername={prefillUsername}\n searchParams={searchParams}\n />\n )}\n {RenderServerComponent({\n Component: afterLogin,\n importMap: payload.importMap,\n serverProps: {\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n } satisfies ServerProps,\n })}\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"buildVersionFields.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/RenderFieldsToDiff/buildVersionFields.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAGV,oBAAoB,EACpB,KAAK,EACL,oBAAoB,EACpB,oBAAoB,EACpB,UAAU,EAEV,gBAAgB,EAChB,cAAc,EACd,yBAAyB,EACzB,YAAY,EACb,MAAM,SAAS,CAAA;AAWhB,MAAM,MAAM,sBAAsB,GAAG;IACnC,eAAe,EAAE,oBAAoB,CAAA;IACrC,qBAAqB,EAAE,MAAM,CAAA;IAC7B,oBAAoB,EAAE,OAAO,CAC3B,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC,CACjF,CAAA;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EACZ;QACE,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,CAAA;KACzC,GACD,IAAI,CAAA;IACR,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,YAAY,EAAE,OAAO,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;IACnB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,4OAgB5B,sBAAsB,KAAG;IAC1B,aAAa,EAAE,YAAY,EAAE,CAAA;CAwG9B,CAAA"}
1
+ {"version":3,"file":"buildVersionFields.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/RenderFieldsToDiff/buildVersionFields.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAGV,oBAAoB,EACpB,KAAK,EACL,oBAAoB,EACpB,oBAAoB,EACpB,UAAU,EAEV,gBAAgB,EAChB,cAAc,EACd,yBAAyB,EACzB,YAAY,EACb,MAAM,SAAS,CAAA;AAWhB,MAAM,MAAM,sBAAsB,GAAG;IACnC,eAAe,EAAE,oBAAoB,CAAA;IACrC,qBAAqB,EAAE,MAAM,CAAA;IAC7B,oBAAoB,EAAE,OAAO,CAC3B,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC,CACjF,CAAA;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EACZ;QACE,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,CAAA;KACzC,GACD,IAAI,CAAA;IACR,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,YAAY,EAAE,OAAO,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;IACnB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,4OAgB5B,sBAAsB,KAAG;IAC1B,aAAa,EAAE,YAAY,EAAE,CAAA;CA0G9B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildVersionFields.js","names":["RenderServerComponent","dequal","fieldIsID","fieldShouldBeLocalized","getUniqueListBy","tabHasName","diffMethods","diffComponents","getFieldPathsModified","buildVersionFields","clientSchemaMap","comparisonSiblingData","customDiffComponents","entitySlug","fieldPermissions","fields","i18n","modifiedOnly","parentIndexPath","parentIsLocalized","parentPath","parentSchemaPath","req","selectedLocales","versionSiblingData","versionFields","fieldIndex","field","indexPath","path","schemaPath","index","clientField","get","payload","logger","error","clientFieldKey","clientSchemaMapKeys","Array","from","keys","msg","Error","versionField","isLocalized","fieldName","name","versionValue","comparisonValue","fieldByLocale","locale","localizedVersionField","buildVersionField","baseVersionField","localized","push","diffMethod","type","hasPermission","read","subFieldPermissions","CustomComponent","admin","components","Diff","DefaultComponent","tabs","tabIndex","tab","isNamedTab","tabAsField","tabIndexPath","tabPath","tabSchemaPath","label","arrayValue","isArray","rows","i","length","comparisonRow","versionRow","blocksValue","blockSlugToMatch","blockType","versionBlock","blocks","blockReferences","find","block","slug","comparisonBlockSlugToMatch","comparisonBlock","clientCellProps","undefined","serverCellProps","clientProps","Component","Fallback","importMap","key","serverProps"],"sources":["../../../../src/views/Version/RenderFieldsToDiff/buildVersionFields.tsx"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n BaseVersionField,\n ClientField,\n ClientFieldSchemaMap,\n Field,\n FieldDiffClientProps,\n FieldDiffServerProps,\n FieldTypes,\n FlattenedBlock,\n PayloadComponent,\n PayloadRequest,\n SanitizedFieldPermissions,\n VersionField,\n} from 'payload'\nimport type { DiffMethod } from 'react-diff-viewer-continued'\n\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { dequal } from 'dequal/lite'\nimport { fieldIsID, fieldShouldBeLocalized, getUniqueListBy, tabHasName } from 'payload/shared'\n\nimport { diffMethods } from './fields/diffMethods.js'\nimport { diffComponents } from './fields/index.js'\nimport { getFieldPathsModified } from './utilities/getFieldPathsModified.js'\n\nexport type BuildVersionFieldsArgs = {\n clientSchemaMap: ClientFieldSchemaMap\n comparisonSiblingData: object\n customDiffComponents: Partial<\n Record<FieldTypes, PayloadComponent<FieldDiffServerProps, FieldDiffClientProps>>\n >\n entitySlug: string\n fieldPermissions:\n | {\n [key: string]: SanitizedFieldPermissions\n }\n | true\n fields: Field[]\n i18n: I18nClient\n modifiedOnly: boolean\n parentIndexPath: string\n parentIsLocalized: boolean\n parentPath: string\n parentSchemaPath: string\n req: PayloadRequest\n selectedLocales: string[]\n versionSiblingData: object\n}\n\n/**\n * Build up an object that contains rendered diff components for each field.\n * This is then sent to the client to be rendered.\n *\n * Here, the server is responsible for traversing through the document data and building up this\n * version state object.\n */\nexport const buildVersionFields = ({\n clientSchemaMap,\n comparisonSiblingData,\n customDiffComponents,\n entitySlug,\n fieldPermissions,\n fields,\n i18n,\n modifiedOnly,\n parentIndexPath,\n parentIsLocalized,\n parentPath,\n parentSchemaPath,\n req,\n selectedLocales,\n versionSiblingData,\n}: BuildVersionFieldsArgs): {\n versionFields: VersionField[]\n} => {\n const versionFields: VersionField[] = []\n let fieldIndex = -1\n for (const field of fields) {\n fieldIndex++\n if (fieldIsID(field)) {\n continue\n }\n\n const { indexPath, path, schemaPath } = getFieldPathsModified({\n field,\n index: fieldIndex,\n parentIndexPath,\n parentPath,\n parentSchemaPath,\n })\n\n const clientField = clientSchemaMap.get(entitySlug + '.' + schemaPath)\n\n if (!clientField) {\n req.payload.logger.error({\n clientFieldKey: entitySlug + '.' + schemaPath,\n clientSchemaMapKeys: Array.from(clientSchemaMap.keys()),\n msg: 'No client field found for ' + entitySlug + '.' + schemaPath,\n parentPath,\n parentSchemaPath,\n path,\n schemaPath,\n })\n throw new Error('No client field found for ' + entitySlug + '.' + schemaPath)\n }\n\n const versionField: VersionField = {}\n const isLocalized = fieldShouldBeLocalized({ field, parentIsLocalized })\n\n const fieldName: null | string = 'name' in field ? field.name : null\n\n const versionValue = fieldName ? versionSiblingData?.[fieldName] : versionSiblingData\n\n const comparisonValue = fieldName ? comparisonSiblingData?.[fieldName] : comparisonSiblingData\n\n if (isLocalized) {\n versionField.fieldByLocale = {}\n\n for (const locale of selectedLocales) {\n const localizedVersionField = buildVersionField({\n clientField: clientField as ClientField,\n clientSchemaMap,\n comparisonValue: comparisonValue?.[locale],\n customDiffComponents,\n entitySlug,\n field,\n fieldPermissions,\n i18n,\n indexPath,\n locale,\n modifiedOnly,\n parentIsLocalized: true,\n parentPath,\n parentSchemaPath,\n path,\n req,\n schemaPath,\n selectedLocales,\n versionValue: versionValue?.[locale],\n })\n if (localizedVersionField) {\n versionField.fieldByLocale[locale] = localizedVersionField\n }\n }\n } else {\n const baseVersionField = buildVersionField({\n clientField: clientField as ClientField,\n clientSchemaMap,\n comparisonValue,\n customDiffComponents,\n entitySlug,\n field,\n fieldPermissions,\n i18n,\n indexPath,\n modifiedOnly,\n parentIsLocalized: parentIsLocalized || ('localized' in field && field.localized),\n parentPath,\n parentSchemaPath,\n path,\n req,\n schemaPath,\n selectedLocales,\n versionValue,\n })\n\n if (baseVersionField) {\n versionField.field = baseVersionField\n }\n }\n\n versionFields.push(versionField)\n }\n\n return {\n versionFields,\n }\n}\n\nconst buildVersionField = ({\n clientField,\n clientSchemaMap,\n comparisonValue,\n customDiffComponents,\n entitySlug,\n field,\n fieldPermissions,\n i18n,\n indexPath,\n locale,\n modifiedOnly,\n parentIsLocalized,\n parentPath,\n parentSchemaPath,\n path,\n req,\n schemaPath,\n selectedLocales,\n versionValue,\n}: {\n clientField: ClientField\n comparisonValue: unknown\n field: Field\n indexPath: string\n locale?: string\n modifiedOnly?: boolean\n parentIsLocalized: boolean\n path: string\n schemaPath: string\n versionValue: unknown\n} & Omit<\n BuildVersionFieldsArgs,\n 'comparisonSiblingData' | 'fields' | 'parentIndexPath' | 'versionSiblingData'\n>): BaseVersionField | null => {\n const fieldName: null | string = 'name' in field ? field.name : null\n\n const diffMethod: DiffMethod = diffMethods[field.type] || 'CHARS'\n\n const hasPermission =\n fieldPermissions === true ||\n !fieldName ||\n fieldPermissions?.[fieldName] === true ||\n fieldPermissions?.[fieldName]?.read\n\n const subFieldPermissions =\n fieldPermissions === true ||\n !fieldName ||\n fieldPermissions?.[fieldName] === true ||\n fieldPermissions?.[fieldName]?.fields\n\n if (!hasPermission) {\n return null\n }\n\n if (modifiedOnly && dequal(versionValue, comparisonValue)) {\n return null\n }\n\n const CustomComponent = field?.admin?.components?.Diff ?? customDiffComponents?.[field.type]\n const DefaultComponent = diffComponents?.[field.type]\n\n const baseVersionField: BaseVersionField = {\n type: field.type,\n fields: [],\n path,\n schemaPath,\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n baseVersionField.tabs = []\n let tabIndex = -1\n for (const tab of field.tabs) {\n tabIndex++\n const isNamedTab = tabHasName(tab)\n\n const tabAsField = { ...tab, type: 'tab' }\n\n const {\n indexPath: tabIndexPath,\n path: tabPath,\n schemaPath: tabSchemaPath,\n } = getFieldPathsModified({\n field: tabAsField,\n index: tabIndex,\n parentIndexPath: indexPath,\n parentPath,\n parentSchemaPath,\n })\n baseVersionField.tabs.push({\n name: 'name' in tab ? tab.name : null,\n fields: buildVersionFields({\n clientSchemaMap,\n comparisonSiblingData: 'name' in tab ? comparisonValue?.[tab.name] : comparisonValue,\n customDiffComponents,\n entitySlug,\n fieldPermissions,\n fields: tab.fields,\n i18n,\n modifiedOnly,\n parentIndexPath: isNamedTab ? '' : tabIndexPath,\n parentIsLocalized: parentIsLocalized || tab.localized,\n parentPath: isNamedTab ? tabPath : path,\n parentSchemaPath: isNamedTab ? tabSchemaPath : parentSchemaPath,\n req,\n selectedLocales,\n versionSiblingData: 'name' in tab ? versionValue?.[tab.name] : versionValue,\n }).versionFields,\n label: tab.label,\n })\n }\n } // At this point, we are dealing with a `row`, `collapsible`, etc\n else if ('fields' in field) {\n if (field.type === 'array' && versionValue) {\n const arrayValue = Array.isArray(versionValue) ? versionValue : []\n baseVersionField.rows = []\n\n for (let i = 0; i < arrayValue.length; i++) {\n const comparisonRow = comparisonValue?.[i] || {}\n const versionRow = arrayValue?.[i] || {}\n baseVersionField.rows[i] = buildVersionFields({\n clientSchemaMap,\n comparisonSiblingData: comparisonRow,\n customDiffComponents,\n entitySlug,\n fieldPermissions,\n fields: field.fields,\n i18n,\n modifiedOnly,\n parentIndexPath: 'name' in field ? '' : indexPath,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path + '.' + i,\n parentSchemaPath: schemaPath,\n req,\n selectedLocales,\n versionSiblingData: versionRow,\n }).versionFields\n }\n } else {\n baseVersionField.fields = buildVersionFields({\n clientSchemaMap,\n comparisonSiblingData: comparisonValue as object,\n customDiffComponents,\n entitySlug,\n fieldPermissions,\n fields: field.fields,\n i18n,\n modifiedOnly,\n parentIndexPath: 'name' in field ? '' : indexPath,\n parentIsLocalized: parentIsLocalized || ('localized' in field && field.localized),\n parentPath: 'name' in field ? path : parentPath,\n parentSchemaPath: 'name' in field ? schemaPath : parentSchemaPath,\n req,\n selectedLocales,\n versionSiblingData: versionValue as object,\n }).versionFields\n }\n } else if (field.type === 'blocks') {\n baseVersionField.rows = []\n\n const blocksValue = Array.isArray(versionValue) ? versionValue : []\n\n for (let i = 0; i < blocksValue.length; i++) {\n const comparisonRow = comparisonValue?.[i] || {}\n const versionRow = blocksValue[i] || {}\n\n const blockSlugToMatch: string = versionRow.blockType\n const versionBlock =\n req.payload.blocks[blockSlugToMatch] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === blockSlugToMatch,\n ) as FlattenedBlock | undefined)\n\n let fields = []\n\n if (versionRow.blockType === comparisonRow.blockType) {\n fields = versionBlock.fields\n } else {\n const comparisonBlockSlugToMatch: string = versionRow.blockType\n\n const comparisonBlock =\n req.payload.blocks[comparisonBlockSlugToMatch] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === comparisonBlockSlugToMatch,\n ) as FlattenedBlock | undefined)\n\n if (comparisonBlock) {\n fields = getUniqueListBy<Field>(\n [...versionBlock.fields, ...comparisonBlock.fields],\n 'name',\n )\n } else {\n fields = versionBlock.fields\n }\n }\n\n baseVersionField.rows[i] = buildVersionFields({\n clientSchemaMap,\n comparisonSiblingData: comparisonRow,\n customDiffComponents,\n entitySlug,\n fieldPermissions,\n fields,\n i18n,\n modifiedOnly,\n parentIndexPath: 'name' in field ? '' : indexPath,\n parentIsLocalized: parentIsLocalized || ('localized' in field && field.localized),\n parentPath: path + '.' + i,\n parentSchemaPath: schemaPath + '.' + versionBlock.slug,\n req,\n selectedLocales,\n versionSiblingData: versionRow,\n }).versionFields\n }\n }\n\n const clientCellProps: FieldDiffClientProps = {\n baseVersionField: {\n ...baseVersionField,\n CustomComponent: undefined,\n },\n comparisonValue,\n diffMethod,\n field: clientField,\n fieldPermissions: subFieldPermissions,\n parentIsLocalized,\n versionValue,\n }\n\n const serverCellProps: FieldDiffServerProps = {\n ...clientCellProps,\n clientField,\n field,\n i18n,\n req,\n selectedLocales,\n }\n\n baseVersionField.CustomComponent = RenderServerComponent({\n clientProps: locale\n ? ({\n ...clientCellProps,\n locale,\n } as FieldDiffClientProps)\n : clientCellProps,\n Component: CustomComponent,\n Fallback: DefaultComponent,\n importMap: req.payload.importMap,\n key: 'diff component',\n serverProps: locale\n ? ({\n ...serverCellProps,\n locale,\n } as FieldDiffServerProps)\n : serverCellProps,\n })\n\n return baseVersionField\n}\n"],"mappings":"AAiBA,SAASA,qBAAqB,QAAQ;AACtC,SAASC,MAAM,QAAQ;AACvB,SAASC,SAAS,EAAEC,sBAAsB,EAAEC,eAAe,EAAEC,UAAU,QAAQ;AAE/E,SAASC,WAAW,QAAQ;AAC5B,SAASC,cAAc,QAAQ;AAC/B,SAASC,qBAAqB,QAAQ;AA0BtC;;;;;;;AAOA,OAAO,MAAMC,kBAAA,GAAqBA,CAAC;EACjCC,eAAe;EACfC,qBAAqB;EACrBC,oBAAoB;EACpBC,UAAU;EACVC,gBAAgB;EAChBC,MAAM;EACNC,IAAI;EACJC,YAAY;EACZC,eAAe;EACfC,iBAAiB;EACjBC,UAAU;EACVC,gBAAgB;EAChBC,GAAG;EACHC,eAAe;EACfC;AAAkB,CACK;EAGvB,MAAMC,aAAA,GAAgC,EAAE;EACxC,IAAIC,UAAA,GAAa,CAAC;EAClB,KAAK,MAAMC,KAAA,IAASZ,MAAA,EAAQ;IAC1BW,UAAA;IACA,IAAIxB,SAAA,CAAUyB,KAAA,GAAQ;MACpB;IACF;IAEA,MAAM;MAAEC,SAAS;MAAEC,IAAI;MAAEC;IAAU,CAAE,GAAGtB,qBAAA,CAAsB;MAC5DmB,KAAA;MACAI,KAAA,EAAOL,UAAA;MACPR,eAAA;MACAE,UAAA;MACAC;IACF;IAEA,MAAMW,WAAA,GAActB,eAAA,CAAgBuB,GAAG,CAACpB,UAAA,GAAa,MAAMiB,UAAA;IAE3D,IAAI,CAACE,WAAA,EAAa;MAChBV,GAAA,CAAIY,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC;QACvBC,cAAA,EAAgBxB,UAAA,GAAa,MAAMiB,UAAA;QACnCQ,mBAAA,EAAqBC,KAAA,CAAMC,IAAI,CAAC9B,eAAA,CAAgB+B,IAAI;QACpDC,GAAA,EAAK,+BAA+B7B,UAAA,GAAa,MAAMiB,UAAA;QACvDV,UAAA;QACAC,gBAAA;QACAQ,IAAA;QACAC;MACF;MACA,MAAM,IAAIa,KAAA,CAAM,+BAA+B9B,UAAA,GAAa,MAAMiB,UAAA;IACpE;IAEA,MAAMc,YAAA,GAA6B,CAAC;IACpC,MAAMC,WAAA,GAAc1C,sBAAA,CAAuB;MAAEwB,KAAA;MAAOR;IAAkB;IAEtE,MAAM2B,SAAA,GAA2B,UAAUnB,KAAA,GAAQA,KAAA,CAAMoB,IAAI,GAAG;IAEhE,MAAMC,YAAA,GAAeF,SAAA,GAAYtB,kBAAA,GAAqBsB,SAAA,CAAU,GAAGtB,kBAAA;IAEnE,MAAMyB,eAAA,GAAkBH,SAAA,GAAYnC,qBAAA,GAAwBmC,SAAA,CAAU,GAAGnC,qBAAA;IAEzE,IAAIkC,WAAA,EAAa;MACfD,YAAA,CAAaM,aAAa,GAAG,CAAC;MAE9B,KAAK,MAAMC,MAAA,IAAU5B,eAAA,EAAiB;QACpC,MAAM6B,qBAAA,GAAwBC,iBAAA,CAAkB;UAC9CrB,WAAA,EAAaA,WAAA;UACbtB,eAAA;UACAuC,eAAA,EAAiBA,eAAA,GAAkBE,MAAA,CAAO;UAC1CvC,oBAAA;UACAC,UAAA;UACAc,KAAA;UACAb,gBAAA;UACAE,IAAA;UACAY,SAAA;UACAuB,MAAA;UACAlC,YAAA;UACAE,iBAAA,EAAmB;UACnBC,UAAA;UACAC,gBAAA;UACAQ,IAAA;UACAP,GAAA;UACAQ,UAAA;UACAP,eAAA;UACAyB,YAAA,EAAcA,YAAA,GAAeG,MAAA;QAC/B;QACA,IAAIC,qBAAA,EAAuB;UACzBR,YAAA,CAAaM,aAAa,CAACC,MAAA,CAAO,GAAGC,qBAAA;QACvC;MACF;IACF,OAAO;MACL,MAAME,gBAAA,GAAmBD,iBAAA,CAAkB;QACzCrB,WAAA,EAAaA,WAAA;QACbtB,eAAA;QACAuC,eAAA;QACArC,oBAAA;QACAC,UAAA;QACAc,KAAA;QACAb,gBAAA;QACAE,IAAA;QACAY,SAAA;QACAX,YAAA;QACAE,iBAAA,EAAmBA,iBAAA,IAAsB,eAAeQ,KAAA,IAASA,KAAA,CAAM4B,SAAS;QAChFnC,UAAA;QACAC,gBAAA;QACAQ,IAAA;QACAP,GAAA;QACAQ,UAAA;QACAP,eAAA;QACAyB;MACF;MAEA,IAAIM,gBAAA,EAAkB;QACpBV,YAAA,CAAajB,KAAK,GAAG2B,gBAAA;MACvB;IACF;IAEA7B,aAAA,CAAc+B,IAAI,CAACZ,YAAA;EACrB;EAEA,OAAO;IACLnB;EACF;AACF;AAEA,MAAM4B,iBAAA,GAAoBA,CAAC;EACzBrB,WAAW;EACXtB,eAAe;EACfuC,eAAe;EACfrC,oBAAoB;EACpBC,UAAU;EACVc,KAAK;EACLb,gBAAgB;EAChBE,IAAI;EACJY,SAAS;EACTuB,MAAM;EACNlC,YAAY;EACZE,iBAAiB;EACjBC,UAAU;EACVC,gBAAgB;EAChBQ,IAAI;EACJP,GAAG;EACHQ,UAAU;EACVP,eAAe;EACfyB;AAAY,CAeb;EACC,MAAMF,SAAA,GAA2B,UAAUnB,KAAA,GAAQA,KAAA,CAAMoB,IAAI,GAAG;EAEhE,MAAMU,UAAA,GAAyBnD,WAAW,CAACqB,KAAA,CAAM+B,IAAI,CAAC,IAAI;EAE1D,MAAMC,aAAA,GACJ7C,gBAAA,KAAqB,QACrB,CAACgC,SAAA,IACDhC,gBAAA,GAAmBgC,SAAA,CAAU,KAAK,QAClChC,gBAAA,GAAmBgC,SAAA,CAAU,EAAEc,IAAA;EAEjC,MAAMC,mBAAA,GACJ/C,gBAAA,KAAqB,QACrB,CAACgC,SAAA,IACDhC,gBAAA,GAAmBgC,SAAA,CAAU,KAAK,QAClChC,gBAAA,GAAmBgC,SAAA,CAAU,EAAE/B,MAAA;EAEjC,IAAI,CAAC4C,aAAA,EAAe;IAClB,OAAO;EACT;EAEA,IAAI1C,YAAA,IAAgBhB,MAAA,CAAO+C,YAAA,EAAcC,eAAA,GAAkB;IACzD,OAAO;EACT;EAEA,MAAMa,eAAA,GAAkBnC,KAAA,EAAOoC,KAAA,EAAOC,UAAA,EAAYC,IAAA,IAAQrD,oBAAA,GAAuBe,KAAA,CAAM+B,IAAI,CAAC;EAC5F,MAAMQ,gBAAA,GAAmB3D,cAAA,GAAiBoB,KAAA,CAAM+B,IAAI,CAAC;EAErD,MAAMJ,gBAAA,GAAqC;IACzCI,IAAA,EAAM/B,KAAA,CAAM+B,IAAI;IAChB3C,MAAA,EAAQ,EAAE;IACVc,IAAA;IACAC;EACF;EAEA,IAAIH,KAAA,CAAM+B,IAAI,KAAK,UAAU,UAAU/B,KAAA,EAAO;IAC5C2B,gBAAA,CAAiBa,IAAI,GAAG,EAAE;IAC1B,IAAIC,QAAA,GAAW,CAAC;IAChB,KAAK,MAAMC,GAAA,IAAO1C,KAAA,CAAMwC,IAAI,EAAE;MAC5BC,QAAA;MACA,MAAME,UAAA,GAAajE,UAAA,CAAWgE,GAAA;MAE9B,MAAME,UAAA,GAAa;QAAE,GAAGF,GAAG;QAAEX,IAAA,EAAM;MAAM;MAEzC,MAAM;QACJ9B,SAAA,EAAW4C,YAAY;QACvB3C,IAAA,EAAM4C,OAAO;QACb3C,UAAA,EAAY4C;MAAa,CAC1B,GAAGlE,qBAAA,CAAsB;QACxBmB,KAAA,EAAO4C,UAAA;QACPxC,KAAA,EAAOqC,QAAA;QACPlD,eAAA,EAAiBU,SAAA;QACjBR,UAAA;QACAC;MACF;MACAiC,gBAAA,CAAiBa,IAAI,CAACX,IAAI,CAAC;QACzBT,IAAA,EAAM,UAAUsB,GAAA,GAAMA,GAAA,CAAItB,IAAI,GAAG;QACjChC,MAAA,EAAQN,kBAAA,CAAmB;UACzBC,eAAA;UACAC,qBAAA,EAAuB,UAAU0D,GAAA,GAAMpB,eAAA,GAAkBoB,GAAA,CAAItB,IAAI,CAAC,GAAGE,eAAA;UACrErC,oBAAA;UACAC,UAAA;UACAC,gBAAA;UACAC,MAAA,EAAQsD,GAAA,CAAItD,MAAM;UAClBC,IAAA;UACAC,YAAA;UACAC,eAAA,EAAiBoD,UAAA,GAAa,KAAKE,YAAA;UACnCrD,iBAAA,EAAmBA,iBAAA,IAAqBkD,GAAA,CAAId,SAAS;UACrDnC,UAAA,EAAYkD,UAAA,GAAaG,OAAA,GAAU5C,IAAA;UACnCR,gBAAA,EAAkBiD,UAAA,GAAaI,aAAA,GAAgBrD,gBAAA;UAC/CC,GAAA;UACAC,eAAA;UACAC,kBAAA,EAAoB,UAAU6C,GAAA,GAAMrB,YAAA,GAAeqB,GAAA,CAAItB,IAAI,CAAC,GAAGC;QACjE,GAAGvB,aAAa;QAChBkD,KAAA,EAAON,GAAA,CAAIM;MACb;IACF;EACF,OACK,IAAI,YAAYhD,KAAA,EAAO;IAC1B,IAAIA,KAAA,CAAM+B,IAAI,KAAK,WAAWV,YAAA,EAAc;MAC1C,MAAM4B,UAAA,GAAarC,KAAA,CAAMsC,OAAO,CAAC7B,YAAA,IAAgBA,YAAA,GAAe,EAAE;MAClEM,gBAAA,CAAiBwB,IAAI,GAAG,EAAE;MAE1B,KAAK,IAAIC,CAAA,GAAI,GAAGA,CAAA,GAAIH,UAAA,CAAWI,MAAM,EAAED,CAAA,IAAK;QAC1C,MAAME,aAAA,GAAgBhC,eAAA,GAAkB8B,CAAA,CAAE,IAAI,CAAC;QAC/C,MAAMG,UAAA,GAAaN,UAAA,GAAaG,CAAA,CAAE,IAAI,CAAC;QACvCzB,gBAAA,CAAiBwB,IAAI,CAACC,CAAA,CAAE,GAAGtE,kBAAA,CAAmB;UAC5CC,eAAA;UACAC,qBAAA,EAAuBsE,aAAA;UACvBrE,oBAAA;UACAC,UAAA;UACAC,gBAAA;UACAC,MAAA,EAAQY,KAAA,CAAMZ,MAAM;UACpBC,IAAA;UACAC,YAAA;UACAC,eAAA,EAAiB,UAAUS,KAAA,GAAQ,KAAKC,SAAA;UACxCT,iBAAA,EAAmBA,iBAAA,IAAqBQ,KAAA,CAAM4B,SAAS;UACvDnC,UAAA,EAAYS,IAAA,GAAO,MAAMkD,CAAA;UACzB1D,gBAAA,EAAkBS,UAAA;UAClBR,GAAA;UACAC,eAAA;UACAC,kBAAA,EAAoB0D;QACtB,GAAGzD,aAAa;MAClB;IACF,OAAO;MACL6B,gBAAA,CAAiBvC,MAAM,GAAGN,kBAAA,CAAmB;QAC3CC,eAAA;QACAC,qBAAA,EAAuBsC,eAAA;QACvBrC,oBAAA;QACAC,UAAA;QACAC,gBAAA;QACAC,MAAA,EAAQY,KAAA,CAAMZ,MAAM;QACpBC,IAAA;QACAC,YAAA;QACAC,eAAA,EAAiB,UAAUS,KAAA,GAAQ,KAAKC,SAAA;QACxCT,iBAAA,EAAmBA,iBAAA,IAAsB,eAAeQ,KAAA,IAASA,KAAA,CAAM4B,SAAS;QAChFnC,UAAA,EAAY,UAAUO,KAAA,GAAQE,IAAA,GAAOT,UAAA;QACrCC,gBAAA,EAAkB,UAAUM,KAAA,GAAQG,UAAA,GAAaT,gBAAA;QACjDC,GAAA;QACAC,eAAA;QACAC,kBAAA,EAAoBwB;MACtB,GAAGvB,aAAa;IAClB;EACF,OAAO,IAAIE,KAAA,CAAM+B,IAAI,KAAK,UAAU;IAClCJ,gBAAA,CAAiBwB,IAAI,GAAG,EAAE;IAE1B,MAAMK,WAAA,GAAc5C,KAAA,CAAMsC,OAAO,CAAC7B,YAAA,IAAgBA,YAAA,GAAe,EAAE;IAEnE,KAAK,IAAI+B,CAAA,GAAI,GAAGA,CAAA,GAAII,WAAA,CAAYH,MAAM,EAAED,CAAA,IAAK;MAC3C,MAAME,aAAA,GAAgBhC,eAAA,GAAkB8B,CAAA,CAAE,IAAI,CAAC;MAC/C,MAAMG,UAAA,GAAaC,WAAW,CAACJ,CAAA,CAAE,IAAI,CAAC;MAEtC,MAAMK,gBAAA,GAA2BF,UAAA,CAAWG,SAAS;MACrD,MAAMC,YAAA,GACJhE,GAAA,CAAIY,OAAO,CAACqD,MAAM,CAACH,gBAAA,CAAiB,IACnC,CAACzD,KAAA,CAAM6D,eAAe,IAAI7D,KAAA,CAAM4D,MAAM,EAAEE,IAAI,CAC1CC,KAAA,IAAU,OAAOA,KAAA,KAAU,YAAYA,KAAA,CAAMC,IAAI,KAAKP,gBAAA;MAG3D,IAAIrE,MAAA,GAAS,EAAE;MAEf,IAAImE,UAAA,CAAWG,SAAS,KAAKJ,aAAA,CAAcI,SAAS,EAAE;QACpDtE,MAAA,GAASuE,YAAA,CAAavE,MAAM;MAC9B,OAAO;QACL,MAAM6E,0BAAA,GAAqCV,UAAA,CAAWG,SAAS;QAE/D,MAAMQ,eAAA,GACJvE,GAAA,CAAIY,OAAO,CAACqD,MAAM,CAACK,0BAAA,CAA2B,IAC7C,CAACjE,KAAA,CAAM6D,eAAe,IAAI7D,KAAA,CAAM4D,MAAM,EAAEE,IAAI,CAC1CC,KAAA,IAAU,OAAOA,KAAA,KAAU,YAAYA,KAAA,CAAMC,IAAI,KAAKC,0BAAA;QAG3D,IAAIC,eAAA,EAAiB;UACnB9E,MAAA,GAASX,eAAA,CACP,C,GAAIkF,YAAA,CAAavE,MAAM,E,GAAK8E,eAAA,CAAgB9E,MAAM,CAAC,EACnD;QAEJ,OAAO;UACLA,MAAA,GAASuE,YAAA,CAAavE,MAAM;QAC9B;MACF;MAEAuC,gBAAA,CAAiBwB,IAAI,CAACC,CAAA,CAAE,GAAGtE,kBAAA,CAAmB;QAC5CC,eAAA;QACAC,qBAAA,EAAuBsE,aAAA;QACvBrE,oBAAA;QACAC,UAAA;QACAC,gBAAA;QACAC,MAAA;QACAC,IAAA;QACAC,YAAA;QACAC,eAAA,EAAiB,UAAUS,KAAA,GAAQ,KAAKC,SAAA;QACxCT,iBAAA,EAAmBA,iBAAA,IAAsB,eAAeQ,KAAA,IAASA,KAAA,CAAM4B,SAAS;QAChFnC,UAAA,EAAYS,IAAA,GAAO,MAAMkD,CAAA;QACzB1D,gBAAA,EAAkBS,UAAA,GAAa,MAAMwD,YAAA,CAAaK,IAAI;QACtDrE,GAAA;QACAC,eAAA;QACAC,kBAAA,EAAoB0D;MACtB,GAAGzD,aAAa;IAClB;EACF;EAEA,MAAMqE,eAAA,GAAwC;IAC5CxC,gBAAA,EAAkB;MAChB,GAAGA,gBAAgB;MACnBQ,eAAA,EAAiBiC;IACnB;IACA9C,eAAA;IACAQ,UAAA;IACA9B,KAAA,EAAOK,WAAA;IACPlB,gBAAA,EAAkB+C,mBAAA;IAClB1C,iBAAA;IACA6B;EACF;EAEA,MAAMgD,eAAA,GAAwC;IAC5C,GAAGF,eAAe;IAClB9D,WAAA;IACAL,KAAA;IACAX,IAAA;IACAM,GAAA;IACAC;EACF;EAEA+B,gBAAA,CAAiBQ,eAAe,GAAG9D,qBAAA,CAAsB;IACvDiG,WAAA,EAAa9C,MAAA,GACR;MACC,GAAG2C,eAAe;MAClB3C;IACF,IACA2C,eAAA;IACJI,SAAA,EAAWpC,eAAA;IACXqC,QAAA,EAAUjC,gBAAA;IACVkC,SAAA,EAAW9E,GAAA,CAAIY,OAAO,CAACkE,SAAS;IAChCC,GAAA,EAAK;IACLC,WAAA,EAAanD,MAAA,GACR;MACC,GAAG6C,eAAe;MAClB7C;IACF,IACA6C;EACN;EAEA,OAAO1C,gBAAA;AACT","ignoreList":[]}
1
+ {"version":3,"file":"buildVersionFields.js","names":["RenderServerComponent","dequal","fieldIsID","fieldShouldBeLocalized","getUniqueListBy","tabHasName","diffMethods","diffComponents","getFieldPathsModified","buildVersionFields","clientSchemaMap","comparisonSiblingData","customDiffComponents","entitySlug","fieldPermissions","fields","i18n","modifiedOnly","parentIndexPath","parentIsLocalized","parentPath","parentSchemaPath","req","selectedLocales","versionSiblingData","versionFields","fieldIndex","field","indexPath","path","schemaPath","index","clientField","get","payload","logger","error","clientFieldKey","clientSchemaMapKeys","Array","from","keys","msg","Error","versionField","isLocalized","fieldName","name","versionValue","comparisonValue","fieldByLocale","locale","localizedVersionField","buildVersionField","baseVersionField","localized","push","diffMethod","type","hasPermission","read","subFieldPermissions","CustomComponent","admin","components","Diff","DefaultComponent","tabs","tabIndex","tab","isNamedTab","tabAsField","tabIndexPath","tabPath","tabSchemaPath","label","arrayValue","isArray","rows","i","length","comparisonRow","versionRow","blocksValue","blockSlugToMatch","blockType","versionBlock","blocks","blockReferences","find","block","slug","comparisonBlockSlugToMatch","comparisonBlock","clientCellProps","undefined","serverCellProps","clientProps","Component","Fallback","importMap","key","serverProps"],"sources":["../../../../src/views/Version/RenderFieldsToDiff/buildVersionFields.tsx"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n BaseVersionField,\n ClientField,\n ClientFieldSchemaMap,\n Field,\n FieldDiffClientProps,\n FieldDiffServerProps,\n FieldTypes,\n FlattenedBlock,\n PayloadComponent,\n PayloadRequest,\n SanitizedFieldPermissions,\n VersionField,\n} from 'payload'\nimport type { DiffMethod } from 'react-diff-viewer-continued'\n\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { dequal } from 'dequal/lite'\nimport { fieldIsID, fieldShouldBeLocalized, getUniqueListBy, tabHasName } from 'payload/shared'\n\nimport { diffMethods } from './fields/diffMethods.js'\nimport { diffComponents } from './fields/index.js'\nimport { getFieldPathsModified } from './utilities/getFieldPathsModified.js'\n\nexport type BuildVersionFieldsArgs = {\n clientSchemaMap: ClientFieldSchemaMap\n comparisonSiblingData: object\n customDiffComponents: Partial<\n Record<FieldTypes, PayloadComponent<FieldDiffServerProps, FieldDiffClientProps>>\n >\n entitySlug: string\n fieldPermissions:\n | {\n [key: string]: SanitizedFieldPermissions\n }\n | true\n fields: Field[]\n i18n: I18nClient\n modifiedOnly: boolean\n parentIndexPath: string\n parentIsLocalized: boolean\n parentPath: string\n parentSchemaPath: string\n req: PayloadRequest\n selectedLocales: string[]\n versionSiblingData: object\n}\n\n/**\n * Build up an object that contains rendered diff components for each field.\n * This is then sent to the client to be rendered.\n *\n * Here, the server is responsible for traversing through the document data and building up this\n * version state object.\n */\nexport const buildVersionFields = ({\n clientSchemaMap,\n comparisonSiblingData,\n customDiffComponents,\n entitySlug,\n fieldPermissions,\n fields,\n i18n,\n modifiedOnly,\n parentIndexPath,\n parentIsLocalized,\n parentPath,\n parentSchemaPath,\n req,\n selectedLocales,\n versionSiblingData,\n}: BuildVersionFieldsArgs): {\n versionFields: VersionField[]\n} => {\n const versionFields: VersionField[] = []\n let fieldIndex = -1\n\n for (const field of fields) {\n fieldIndex++\n\n if (fieldIsID(field)) {\n continue\n }\n\n const { indexPath, path, schemaPath } = getFieldPathsModified({\n field,\n index: fieldIndex,\n parentIndexPath,\n parentPath,\n parentSchemaPath,\n })\n\n const clientField = clientSchemaMap.get(entitySlug + '.' + schemaPath)\n\n if (!clientField) {\n req.payload.logger.error({\n clientFieldKey: entitySlug + '.' + schemaPath,\n clientSchemaMapKeys: Array.from(clientSchemaMap.keys()),\n msg: 'No client field found for ' + entitySlug + '.' + schemaPath,\n parentPath,\n parentSchemaPath,\n path,\n schemaPath,\n })\n throw new Error('No client field found for ' + entitySlug + '.' + schemaPath)\n }\n\n const versionField: VersionField = {}\n const isLocalized = fieldShouldBeLocalized({ field, parentIsLocalized })\n\n const fieldName: null | string = 'name' in field ? field.name : null\n\n const versionValue = fieldName ? versionSiblingData?.[fieldName] : versionSiblingData\n\n const comparisonValue = fieldName ? comparisonSiblingData?.[fieldName] : comparisonSiblingData\n\n if (isLocalized) {\n versionField.fieldByLocale = {}\n\n for (const locale of selectedLocales) {\n const localizedVersionField = buildVersionField({\n clientField: clientField as ClientField,\n clientSchemaMap,\n comparisonValue: comparisonValue?.[locale],\n customDiffComponents,\n entitySlug,\n field,\n fieldPermissions,\n i18n,\n indexPath,\n locale,\n modifiedOnly,\n parentIsLocalized: true,\n parentPath,\n parentSchemaPath,\n path,\n req,\n schemaPath,\n selectedLocales,\n versionValue: versionValue?.[locale],\n })\n if (localizedVersionField) {\n versionField.fieldByLocale[locale] = localizedVersionField\n }\n }\n } else {\n const baseVersionField = buildVersionField({\n clientField: clientField as ClientField,\n clientSchemaMap,\n comparisonValue,\n customDiffComponents,\n entitySlug,\n field,\n fieldPermissions,\n i18n,\n indexPath,\n modifiedOnly,\n parentIsLocalized: parentIsLocalized || ('localized' in field && field.localized),\n parentPath,\n parentSchemaPath,\n path,\n req,\n schemaPath,\n selectedLocales,\n versionValue,\n })\n\n if (baseVersionField) {\n versionField.field = baseVersionField\n }\n }\n\n versionFields.push(versionField)\n }\n\n return {\n versionFields,\n }\n}\n\nconst buildVersionField = ({\n clientField,\n clientSchemaMap,\n comparisonValue,\n customDiffComponents,\n entitySlug,\n field,\n fieldPermissions,\n i18n,\n indexPath,\n locale,\n modifiedOnly,\n parentIsLocalized,\n parentPath,\n parentSchemaPath,\n path,\n req,\n schemaPath,\n selectedLocales,\n versionValue,\n}: {\n clientField: ClientField\n comparisonValue: unknown\n field: Field\n indexPath: string\n locale?: string\n modifiedOnly?: boolean\n parentIsLocalized: boolean\n path: string\n schemaPath: string\n versionValue: unknown\n} & Omit<\n BuildVersionFieldsArgs,\n 'comparisonSiblingData' | 'fields' | 'parentIndexPath' | 'versionSiblingData'\n>): BaseVersionField | null => {\n const fieldName: null | string = 'name' in field ? field.name : null\n\n const diffMethod: DiffMethod = diffMethods[field.type] || 'CHARS'\n\n const hasPermission =\n fieldPermissions === true ||\n !fieldName ||\n fieldPermissions?.[fieldName] === true ||\n fieldPermissions?.[fieldName]?.read\n\n const subFieldPermissions =\n fieldPermissions === true ||\n !fieldName ||\n fieldPermissions?.[fieldName] === true ||\n fieldPermissions?.[fieldName]?.fields\n\n if (!hasPermission) {\n return null\n }\n\n if (modifiedOnly && dequal(versionValue, comparisonValue)) {\n return null\n }\n\n const CustomComponent = field?.admin?.components?.Diff ?? customDiffComponents?.[field.type]\n const DefaultComponent = diffComponents?.[field.type]\n\n const baseVersionField: BaseVersionField = {\n type: field.type,\n fields: [],\n path,\n schemaPath,\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n baseVersionField.tabs = []\n let tabIndex = -1\n for (const tab of field.tabs) {\n tabIndex++\n const isNamedTab = tabHasName(tab)\n\n const tabAsField = { ...tab, type: 'tab' }\n\n const {\n indexPath: tabIndexPath,\n path: tabPath,\n schemaPath: tabSchemaPath,\n } = getFieldPathsModified({\n field: tabAsField,\n index: tabIndex,\n parentIndexPath: indexPath,\n parentPath,\n parentSchemaPath,\n })\n baseVersionField.tabs.push({\n name: 'name' in tab ? tab.name : null,\n fields: buildVersionFields({\n clientSchemaMap,\n comparisonSiblingData: 'name' in tab ? comparisonValue?.[tab.name] : comparisonValue,\n customDiffComponents,\n entitySlug,\n fieldPermissions,\n fields: tab.fields,\n i18n,\n modifiedOnly,\n parentIndexPath: isNamedTab ? '' : tabIndexPath,\n parentIsLocalized: parentIsLocalized || tab.localized,\n parentPath: isNamedTab ? tabPath : path,\n parentSchemaPath: isNamedTab ? tabSchemaPath : parentSchemaPath,\n req,\n selectedLocales,\n versionSiblingData: 'name' in tab ? versionValue?.[tab.name] : versionValue,\n }).versionFields,\n label: tab.label,\n })\n }\n } // At this point, we are dealing with a `row`, `collapsible`, etc\n else if ('fields' in field) {\n if (field.type === 'array' && versionValue) {\n const arrayValue = Array.isArray(versionValue) ? versionValue : []\n baseVersionField.rows = []\n\n for (let i = 0; i < arrayValue.length; i++) {\n const comparisonRow = comparisonValue?.[i] || {}\n const versionRow = arrayValue?.[i] || {}\n baseVersionField.rows[i] = buildVersionFields({\n clientSchemaMap,\n comparisonSiblingData: comparisonRow,\n customDiffComponents,\n entitySlug,\n fieldPermissions,\n fields: field.fields,\n i18n,\n modifiedOnly,\n parentIndexPath: 'name' in field ? '' : indexPath,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentPath: path + '.' + i,\n parentSchemaPath: schemaPath,\n req,\n selectedLocales,\n versionSiblingData: versionRow,\n }).versionFields\n }\n } else {\n baseVersionField.fields = buildVersionFields({\n clientSchemaMap,\n comparisonSiblingData: comparisonValue as object,\n customDiffComponents,\n entitySlug,\n fieldPermissions,\n fields: field.fields,\n i18n,\n modifiedOnly,\n parentIndexPath: 'name' in field ? '' : indexPath,\n parentIsLocalized: parentIsLocalized || ('localized' in field && field.localized),\n parentPath: 'name' in field ? path : parentPath,\n parentSchemaPath: 'name' in field ? schemaPath : parentSchemaPath,\n req,\n selectedLocales,\n versionSiblingData: versionValue as object,\n }).versionFields\n }\n } else if (field.type === 'blocks') {\n baseVersionField.rows = []\n\n const blocksValue = Array.isArray(versionValue) ? versionValue : []\n\n for (let i = 0; i < blocksValue.length; i++) {\n const comparisonRow = comparisonValue?.[i] || {}\n const versionRow = blocksValue[i] || {}\n\n const blockSlugToMatch: string = versionRow.blockType\n const versionBlock =\n req.payload.blocks[blockSlugToMatch] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === blockSlugToMatch,\n ) as FlattenedBlock | undefined)\n\n let fields = []\n\n if (versionRow.blockType === comparisonRow.blockType) {\n fields = versionBlock.fields\n } else {\n const comparisonBlockSlugToMatch: string = versionRow.blockType\n\n const comparisonBlock =\n req.payload.blocks[comparisonBlockSlugToMatch] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === comparisonBlockSlugToMatch,\n ) as FlattenedBlock | undefined)\n\n if (comparisonBlock) {\n fields = getUniqueListBy<Field>(\n [...versionBlock.fields, ...comparisonBlock.fields],\n 'name',\n )\n } else {\n fields = versionBlock.fields\n }\n }\n\n baseVersionField.rows[i] = buildVersionFields({\n clientSchemaMap,\n comparisonSiblingData: comparisonRow,\n customDiffComponents,\n entitySlug,\n fieldPermissions,\n fields,\n i18n,\n modifiedOnly,\n parentIndexPath: 'name' in field ? '' : indexPath,\n parentIsLocalized: parentIsLocalized || ('localized' in field && field.localized),\n parentPath: path + '.' + i,\n parentSchemaPath: schemaPath + '.' + versionBlock.slug,\n req,\n selectedLocales,\n versionSiblingData: versionRow,\n }).versionFields\n }\n }\n\n const clientCellProps: FieldDiffClientProps = {\n baseVersionField: {\n ...baseVersionField,\n CustomComponent: undefined,\n },\n comparisonValue,\n diffMethod,\n field: clientField,\n fieldPermissions: subFieldPermissions,\n parentIsLocalized,\n versionValue,\n }\n\n const serverCellProps: FieldDiffServerProps = {\n ...clientCellProps,\n clientField,\n field,\n i18n,\n req,\n selectedLocales,\n }\n\n baseVersionField.CustomComponent = RenderServerComponent({\n clientProps: locale\n ? ({\n ...clientCellProps,\n locale,\n } as FieldDiffClientProps)\n : clientCellProps,\n Component: CustomComponent,\n Fallback: DefaultComponent,\n importMap: req.payload.importMap,\n key: 'diff component',\n serverProps: locale\n ? ({\n ...serverCellProps,\n locale,\n } as FieldDiffServerProps)\n : serverCellProps,\n })\n\n return baseVersionField\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Version/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,uBAAuB,EAKxB,MAAM,SAAS,CAAA;AAMhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,wBAAsB,WAAW,CAAC,KAAK,EAAE,uBAAuB,8BAiP/D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Version/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,uBAAuB,EAKxB,MAAM,SAAS,CAAA;AAMhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,wBAAsB,WAAW,CAAC,KAAK,EAAE,uBAAuB,8BAkP/D"}
@@ -78,7 +78,7 @@ export async function VersionView(props) {
78
78
  status: 'published'
79
79
  });
80
80
  }
81
- } catch (error) {
81
+ } catch (_err) {
82
82
  return notFound();
83
83
  }
84
84
  }
@@ -116,7 +116,7 @@ export async function VersionView(props) {
116
116
  status: 'published'
117
117
  });
118
118
  }
119
- } catch (error) {
119
+ } catch (_err) {
120
120
  return notFound();
121
121
  }
122
122
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getClientConfig","getClientSchemaMap","getSchemaMap","notFound","React","getLatestVersion","DefaultVersionView","RenderDiff","VersionView","props","i18n","initPageResult","routeSegments","searchParams","collectionConfig","docID","id","globalConfig","permissions","req","payload","config","user","versionID","length","collectionSlug","slug","globalSlug","localeCodesFromParams","localeCodes","JSON","parse","comparisonVersionIDFromParams","compareValue","modifiedOnly","localization","docPermissions","doc","latestPublishedVersion","latestDraftVersion","collections","findVersionByID","collection","depth","locale","overrideAccess","versions","drafts","type","parentID","status","error","globals","findGlobalVersionByID","publishedNewerThanDraft","updatedAt","selectedLocales","locales","code","find","push","filterAvailableLocales","map","label","value","latestVersion","comparisonDoc","schemaMap","clientSchemaMap","importMap","RenderedDiff","comparisonSiblingData","version","customDiffComponents","entitySlug","fieldPermissions","fields","parentIndexPath","parentIsLocalized","parentPath","parentSchemaPath","versionSiblingData","createdAt","_jsx","canUpdate","update"],"sources":["../../../src/views/Version/index.tsx"],"sourcesContent":["import type {\n Document,\n DocumentViewServerProps,\n Locale,\n OptionObject,\n SanitizedCollectionPermission,\n SanitizedGlobalPermission,\n} from 'payload'\n\nimport { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig'\nimport { getClientSchemaMap } from '@payloadcms/ui/utilities/getClientSchemaMap'\nimport { getSchemaMap } from '@payloadcms/ui/utilities/getSchemaMap'\nimport { notFound } from 'next/navigation.js'\nimport React from 'react'\n\nimport { getLatestVersion } from '../Versions/getLatestVersion.js'\nimport { DefaultVersionView } from './Default/index.js'\nimport { RenderDiff } from './RenderFieldsToDiff/index.js'\n\nexport async function VersionView(props: DocumentViewServerProps) {\n const { i18n, initPageResult, routeSegments, searchParams } = props\n\n const {\n collectionConfig,\n docID: id,\n globalConfig,\n permissions,\n req,\n req: { payload, payload: { config } = {}, user } = {},\n } = initPageResult\n\n const versionID = routeSegments[routeSegments.length - 1]\n\n const collectionSlug = collectionConfig?.slug\n const globalSlug = globalConfig?.slug\n\n const localeCodesFromParams = searchParams.localeCodes\n ? JSON.parse(searchParams.localeCodes as string)\n : null\n const comparisonVersionIDFromParams: string = searchParams.compareValue as string\n\n const modifiedOnly: boolean = searchParams.modifiedOnly === 'true'\n\n const { localization } = config\n\n let docPermissions: SanitizedCollectionPermission | SanitizedGlobalPermission\n let slug: string\n\n let doc: Document\n let latestPublishedVersion = null\n let latestDraftVersion = null\n\n if (collectionSlug) {\n // /collections/:slug/:id/versions/:versionID\n slug = collectionSlug\n docPermissions = permissions.collections[collectionSlug]\n\n try {\n doc = await payload.findVersionByID({\n id: versionID,\n collection: slug,\n depth: 0,\n locale: 'all',\n overrideAccess: false,\n req,\n user,\n })\n\n if (collectionConfig?.versions?.drafts) {\n latestDraftVersion = await getLatestVersion({\n slug,\n type: 'collection',\n locale: 'all',\n overrideAccess: false,\n parentID: id,\n payload,\n req,\n status: 'draft',\n })\n latestPublishedVersion = await getLatestVersion({\n slug,\n type: 'collection',\n locale: 'all',\n overrideAccess: false,\n parentID: id,\n payload,\n req,\n status: 'published',\n })\n }\n } catch (error) {\n return notFound()\n }\n }\n\n if (globalSlug) {\n // /globals/:slug/versions/:versionID\n slug = globalSlug\n docPermissions = permissions.globals[globalSlug]\n\n try {\n doc = await payload.findGlobalVersionByID({\n id: versionID,\n slug,\n depth: 0,\n locale: 'all',\n overrideAccess: false,\n req,\n user,\n })\n\n if (globalConfig?.versions?.drafts) {\n latestDraftVersion = await getLatestVersion({\n slug,\n type: 'global',\n locale: 'all',\n overrideAccess: false,\n payload,\n req,\n status: 'draft',\n })\n latestPublishedVersion = await getLatestVersion({\n slug,\n type: 'global',\n locale: 'all',\n overrideAccess: false,\n payload,\n req,\n status: 'published',\n })\n }\n } catch (error) {\n return notFound()\n }\n }\n\n const publishedNewerThanDraft = latestPublishedVersion?.updatedAt > latestDraftVersion?.updatedAt\n\n if (publishedNewerThanDraft) {\n latestDraftVersion = {\n id: '',\n updatedAt: '',\n }\n }\n\n let selectedLocales: OptionObject[] = []\n if (localization) {\n let locales: Locale[] = []\n if (localeCodesFromParams) {\n for (const code of localeCodesFromParams) {\n const locale = localization.locales.find((locale) => locale.code === code)\n if (!locale) {\n continue\n }\n locales.push(locale)\n }\n } else {\n locales = localization.locales\n }\n\n if (localization.filterAvailableLocales) {\n locales = (await localization.filterAvailableLocales({ locales, req })) || []\n }\n\n selectedLocales = locales.map((locale) => ({\n label: locale.label,\n value: locale.code,\n }))\n }\n\n const latestVersion =\n latestPublishedVersion?.updatedAt > latestDraftVersion?.updatedAt\n ? latestPublishedVersion\n : latestDraftVersion\n\n if (!doc) {\n return notFound()\n }\n\n /**\n * The doc to compare this version to is either the latest version, or a specific version if specified in the URL.\n * This specific version is added to the URL when a user selects a version to compare to.\n */\n let comparisonDoc = null\n if (comparisonVersionIDFromParams) {\n if (collectionSlug) {\n comparisonDoc = await payload.findVersionByID({\n id: comparisonVersionIDFromParams,\n collection: collectionSlug,\n depth: 0,\n locale: 'all',\n overrideAccess: false,\n req,\n })\n } else {\n comparisonDoc = await payload.findGlobalVersionByID({\n id: comparisonVersionIDFromParams,\n slug: globalSlug,\n depth: 0,\n locale: 'all',\n overrideAccess: false,\n req,\n })\n }\n } else {\n comparisonDoc = latestVersion\n }\n\n const schemaMap = getSchemaMap({\n collectionSlug,\n config,\n globalSlug,\n i18n,\n })\n\n const clientSchemaMap = getClientSchemaMap({\n collectionSlug,\n config: getClientConfig({ config: payload.config, i18n, importMap: payload.importMap }),\n globalSlug,\n i18n,\n payload,\n schemaMap,\n })\n\n const RenderedDiff = RenderDiff({\n clientSchemaMap,\n comparisonSiblingData: comparisonDoc?.version,\n customDiffComponents: {},\n entitySlug: collectionSlug || globalSlug,\n fieldPermissions: docPermissions?.fields,\n fields: (collectionConfig || globalConfig)?.fields,\n i18n,\n modifiedOnly,\n parentIndexPath: '',\n parentIsLocalized: false,\n parentPath: '',\n parentSchemaPath: '',\n req,\n selectedLocales: selectedLocales && selectedLocales.map((locale) => locale.value),\n versionSiblingData: globalConfig\n ? {\n ...doc?.version,\n createdAt: doc?.version?.createdAt || doc.createdAt,\n updatedAt: doc?.version?.updatedAt || doc.updatedAt,\n }\n : doc?.version,\n })\n\n return (\n <DefaultVersionView\n canUpdate={docPermissions?.update}\n doc={doc}\n latestDraftVersion={latestDraftVersion?.id}\n latestPublishedVersion={latestPublishedVersion?.id}\n modifiedOnly={modifiedOnly}\n RenderedDiff={RenderedDiff}\n selectedLocales={selectedLocales}\n versionID={versionID}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getClientConfig","getClientSchemaMap","getSchemaMap","notFound","React","getLatestVersion","DefaultVersionView","RenderDiff","VersionView","props","i18n","initPageResult","routeSegments","searchParams","collectionConfig","docID","id","globalConfig","permissions","req","payload","config","user","versionID","length","collectionSlug","slug","globalSlug","localeCodesFromParams","localeCodes","JSON","parse","comparisonVersionIDFromParams","compareValue","modifiedOnly","localization","docPermissions","doc","latestPublishedVersion","latestDraftVersion","collections","findVersionByID","collection","depth","locale","overrideAccess","versions","drafts","type","parentID","status","_err","globals","findGlobalVersionByID","publishedNewerThanDraft","updatedAt","selectedLocales","locales","code","find","push","filterAvailableLocales","map","label","value","latestVersion","comparisonDoc","schemaMap","clientSchemaMap","importMap","RenderedDiff","comparisonSiblingData","version","customDiffComponents","entitySlug","fieldPermissions","fields","parentIndexPath","parentIsLocalized","parentPath","parentSchemaPath","versionSiblingData","createdAt","_jsx","canUpdate","update"],"sources":["../../../src/views/Version/index.tsx"],"sourcesContent":["import type {\n Document,\n DocumentViewServerProps,\n Locale,\n OptionObject,\n SanitizedCollectionPermission,\n SanitizedGlobalPermission,\n} from 'payload'\n\nimport { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig'\nimport { getClientSchemaMap } from '@payloadcms/ui/utilities/getClientSchemaMap'\nimport { getSchemaMap } from '@payloadcms/ui/utilities/getSchemaMap'\nimport { notFound } from 'next/navigation.js'\nimport React from 'react'\n\nimport { getLatestVersion } from '../Versions/getLatestVersion.js'\nimport { DefaultVersionView } from './Default/index.js'\nimport { RenderDiff } from './RenderFieldsToDiff/index.js'\n\nexport async function VersionView(props: DocumentViewServerProps) {\n const { i18n, initPageResult, routeSegments, searchParams } = props\n\n const {\n collectionConfig,\n docID: id,\n globalConfig,\n permissions,\n req,\n req: { payload, payload: { config } = {}, user } = {},\n } = initPageResult\n\n const versionID = routeSegments[routeSegments.length - 1]\n\n const collectionSlug = collectionConfig?.slug\n const globalSlug = globalConfig?.slug\n\n const localeCodesFromParams = searchParams.localeCodes\n ? JSON.parse(searchParams.localeCodes as string)\n : null\n\n const comparisonVersionIDFromParams: string = searchParams.compareValue as string\n\n const modifiedOnly: boolean = searchParams.modifiedOnly === 'true'\n\n const { localization } = config\n\n let docPermissions: SanitizedCollectionPermission | SanitizedGlobalPermission\n let slug: string\n\n let doc: Document\n let latestPublishedVersion = null\n let latestDraftVersion = null\n\n if (collectionSlug) {\n // /collections/:slug/:id/versions/:versionID\n slug = collectionSlug\n docPermissions = permissions.collections[collectionSlug]\n\n try {\n doc = await payload.findVersionByID({\n id: versionID,\n collection: slug,\n depth: 0,\n locale: 'all',\n overrideAccess: false,\n req,\n user,\n })\n\n if (collectionConfig?.versions?.drafts) {\n latestDraftVersion = await getLatestVersion({\n slug,\n type: 'collection',\n locale: 'all',\n overrideAccess: false,\n parentID: id,\n payload,\n req,\n status: 'draft',\n })\n latestPublishedVersion = await getLatestVersion({\n slug,\n type: 'collection',\n locale: 'all',\n overrideAccess: false,\n parentID: id,\n payload,\n req,\n status: 'published',\n })\n }\n } catch (_err) {\n return notFound()\n }\n }\n\n if (globalSlug) {\n // /globals/:slug/versions/:versionID\n slug = globalSlug\n docPermissions = permissions.globals[globalSlug]\n\n try {\n doc = await payload.findGlobalVersionByID({\n id: versionID,\n slug,\n depth: 0,\n locale: 'all',\n overrideAccess: false,\n req,\n user,\n })\n\n if (globalConfig?.versions?.drafts) {\n latestDraftVersion = await getLatestVersion({\n slug,\n type: 'global',\n locale: 'all',\n overrideAccess: false,\n payload,\n req,\n status: 'draft',\n })\n latestPublishedVersion = await getLatestVersion({\n slug,\n type: 'global',\n locale: 'all',\n overrideAccess: false,\n payload,\n req,\n status: 'published',\n })\n }\n } catch (_err) {\n return notFound()\n }\n }\n\n const publishedNewerThanDraft = latestPublishedVersion?.updatedAt > latestDraftVersion?.updatedAt\n\n if (publishedNewerThanDraft) {\n latestDraftVersion = {\n id: '',\n updatedAt: '',\n }\n }\n\n let selectedLocales: OptionObject[] = []\n if (localization) {\n let locales: Locale[] = []\n if (localeCodesFromParams) {\n for (const code of localeCodesFromParams) {\n const locale = localization.locales.find((locale) => locale.code === code)\n if (!locale) {\n continue\n }\n locales.push(locale)\n }\n } else {\n locales = localization.locales\n }\n\n if (localization.filterAvailableLocales) {\n locales = (await localization.filterAvailableLocales({ locales, req })) || []\n }\n\n selectedLocales = locales.map((locale) => ({\n label: locale.label,\n value: locale.code,\n }))\n }\n\n const latestVersion =\n latestPublishedVersion?.updatedAt > latestDraftVersion?.updatedAt\n ? latestPublishedVersion\n : latestDraftVersion\n\n if (!doc) {\n return notFound()\n }\n\n /**\n * The doc to compare this version to is either the latest version, or a specific version if specified in the URL.\n * This specific version is added to the URL when a user selects a version to compare to.\n */\n let comparisonDoc = null\n if (comparisonVersionIDFromParams) {\n if (collectionSlug) {\n comparisonDoc = await payload.findVersionByID({\n id: comparisonVersionIDFromParams,\n collection: collectionSlug,\n depth: 0,\n locale: 'all',\n overrideAccess: false,\n req,\n })\n } else {\n comparisonDoc = await payload.findGlobalVersionByID({\n id: comparisonVersionIDFromParams,\n slug: globalSlug,\n depth: 0,\n locale: 'all',\n overrideAccess: false,\n req,\n })\n }\n } else {\n comparisonDoc = latestVersion\n }\n\n const schemaMap = getSchemaMap({\n collectionSlug,\n config,\n globalSlug,\n i18n,\n })\n\n const clientSchemaMap = getClientSchemaMap({\n collectionSlug,\n config: getClientConfig({ config: payload.config, i18n, importMap: payload.importMap }),\n globalSlug,\n i18n,\n payload,\n schemaMap,\n })\n\n const RenderedDiff = RenderDiff({\n clientSchemaMap,\n comparisonSiblingData: comparisonDoc?.version,\n customDiffComponents: {},\n entitySlug: collectionSlug || globalSlug,\n fieldPermissions: docPermissions?.fields,\n fields: (collectionConfig || globalConfig)?.fields,\n i18n,\n modifiedOnly,\n parentIndexPath: '',\n parentIsLocalized: false,\n parentPath: '',\n parentSchemaPath: '',\n req,\n selectedLocales: selectedLocales && selectedLocales.map((locale) => locale.value),\n versionSiblingData: globalConfig\n ? {\n ...doc?.version,\n createdAt: doc?.version?.createdAt || doc.createdAt,\n updatedAt: doc?.version?.updatedAt || doc.updatedAt,\n }\n : doc?.version,\n })\n\n return (\n <DefaultVersionView\n canUpdate={docPermissions?.update}\n doc={doc}\n latestDraftVersion={latestDraftVersion?.id}\n latestPublishedVersion={latestPublishedVersion?.id}\n modifiedOnly={modifiedOnly}\n RenderedDiff={RenderedDiff}\n selectedLocales={selectedLocales}\n versionID={versionID}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/next",
3
- "version": "3.31.0-canary.1",
3
+ "version": "3.31.0",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -79,9 +79,9 @@
79
79
  "react-diff-viewer-continued": "4.0.5",
80
80
  "sass": "1.77.4",
81
81
  "uuid": "10.0.0",
82
- "@payloadcms/graphql": "3.31.0-canary.1",
83
- "@payloadcms/translations": "3.31.0-canary.1",
84
- "@payloadcms/ui": "3.31.0-canary.1"
82
+ "@payloadcms/translations": "3.31.0",
83
+ "@payloadcms/graphql": "3.31.0",
84
+ "@payloadcms/ui": "3.31.0"
85
85
  },
86
86
  "devDependencies": {
87
87
  "@babel/cli": "7.26.4",
@@ -99,13 +99,13 @@
99
99
  "esbuild-sass-plugin": "3.3.1",
100
100
  "eslint-plugin-react-compiler": "19.0.0-beta-714736e-20250131",
101
101
  "swc-plugin-transform-remove-imports": "3.1.0",
102
- "payload": "3.31.0-canary.1",
102
+ "payload": "3.31.0",
103
103
  "@payloadcms/eslint-config": "3.28.0"
104
104
  },
105
105
  "peerDependencies": {
106
106
  "graphql": "^16.8.1",
107
107
  "next": "^15.2.3",
108
- "payload": "3.31.0-canary.1"
108
+ "payload": "3.31.0"
109
109
  },
110
110
  "engines": {
111
111
  "node": "^18.20.2 || >=20.9.0"