@payloadcms/next 3.40.0-internal.e3ed6ab → 3.40.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.
- package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.d.ts.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +1 -0
- package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js.map +1 -1
- package/dist/exports/utilities.d.ts +2 -1
- package/dist/exports/utilities.d.ts.map +1 -1
- package/dist/prod/styles.css +1 -1
- package/dist/routes/graphql/handler.d.ts.map +1 -1
- package/dist/routes/graphql/handler.js +1 -0
- package/dist/routes/graphql/handler.js.map +1 -1
- package/dist/utilities/initReq.d.ts +2 -1
- package/dist/utilities/initReq.d.ts.map +1 -1
- package/dist/utilities/initReq.js +2 -0
- package/dist/utilities/initReq.js.map +1 -1
- package/dist/views/BrowseByFolder/buildView.d.ts.map +1 -1
- package/dist/views/BrowseByFolder/buildView.js +2 -3
- package/dist/views/BrowseByFolder/buildView.js.map +1 -1
- package/dist/views/CollectionFolders/buildView.d.ts.map +1 -1
- package/dist/views/CollectionFolders/buildView.js +2 -3
- package/dist/views/CollectionFolders/buildView.js.map +1 -1
- package/dist/views/LivePreview/index.client.d.ts.map +1 -1
- package/dist/views/LivePreview/index.client.js +16 -12
- package/dist/views/LivePreview/index.client.js.map +1 -1
- package/dist/views/LivePreview/index.d.ts.map +1 -1
- package/dist/views/LivePreview/index.js +12 -0
- package/dist/views/LivePreview/index.js.map +1 -1
- package/dist/views/Login/LoginForm/index.d.ts.map +1 -1
- package/dist/views/Login/LoginForm/index.js +5 -3
- package/dist/views/Login/LoginForm/index.js.map +1 -1
- package/dist/views/Login/index.d.ts.map +1 -1
- package/dist/views/Login/index.js +5 -2
- package/dist/views/Login/index.js.map +1 -1
- package/dist/views/Versions/cells/AutosaveCell/index.d.ts +1 -0
- package/dist/views/Versions/cells/AutosaveCell/index.d.ts.map +1 -1
- package/dist/views/Versions/cells/AutosaveCell/index.js +7 -5
- package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
- package/dist/views/Versions/cells/AutosaveCell/index.scss +9 -0
- package/package.json +7 -7
- package/dist/utilities/getSafeRedirect.d.ts +0 -2
- package/dist/utilities/getSafeRedirect.d.ts.map +0 -1
- package/dist/utilities/getSafeRedirect.js +0 -28
- package/dist/utilities/getSafeRedirect.js.map +0 -1
- package/dist/utilities/getSafeRedirect.spec.js +0 -32
- package/dist/utilities/getSafeRedirect.spec.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/routes/graphql/handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAqC,eAAe,EAAE,MAAM,SAAS,CAAA;AAqEjF,eAAO,MAAM,UAAU,WAAkB,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,iBAyBlF,CAAA;AAED,eAAO,MAAM,IAAI,WACN,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,eAAqB,OAAO,
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/routes/graphql/handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAqC,eAAe,EAAE,MAAM,SAAS,CAAA;AAqEjF,eAAO,MAAM,UAAU,WAAkB,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,iBAyBlF,CAAA;AAED,eAAO,MAAM,IAAI,WACN,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,eAAqB,OAAO,sBAuD9E,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","names":["configToSchema","createHandler","status","httpStatus","addDataAndFileToRequest","addLocalesToRequestFromData","createPayloadRequest","headersWithCors","logError","mergeHeaders","handleError","err","payload","req","originalError","INTERNAL_SERVER_ERROR","errorMessage","message","config","debug","response","extensions","name","undefined","data","stack","statusCode","locations","path","hooks","afterError","reduce","promise","hook","result","context","error","graphqlResult","Promise","resolve","cached","global","_payload_graphql","graphql","getGraphql","process","env","NODE_ENV","resolvedConfig","schema","e","POST","request","originalRequest","clone","validationRules","headers","apiResponse","onOperation","args","errors","all","map","_","defaultRules","concat","resHeaders","Headers","key","append","Response","body","responseHeaders"],"sources":["../../../src/routes/graphql/handler.ts"],"sourcesContent":["import type { GraphQLError, GraphQLFormattedError } from 'graphql'\nimport type { APIError, Payload, PayloadRequest, SanitizedConfig } from 'payload'\n\nimport { configToSchema } from '@payloadcms/graphql'\nimport { createHandler } from 'graphql-http/lib/use/fetch'\nimport { status as httpStatus } from 'http-status'\nimport {\n addDataAndFileToRequest,\n addLocalesToRequestFromData,\n createPayloadRequest,\n headersWithCors,\n logError,\n mergeHeaders,\n} from 'payload'\n\nconst handleError = async ({\n err,\n payload,\n req,\n}: {\n err: GraphQLError\n payload: Payload\n req: PayloadRequest\n}): Promise<GraphQLFormattedError> => {\n const status = (err.originalError as APIError).status || httpStatus.INTERNAL_SERVER_ERROR\n let errorMessage = err.message\n logError({ err, payload })\n\n // Internal server errors can contain anything, including potentially sensitive data.\n // Therefore, error details will be hidden from the response unless `config.debug` is `true`\n if (!payload.config.debug && status === httpStatus.INTERNAL_SERVER_ERROR) {\n errorMessage = 'Something went wrong.'\n }\n\n let response: GraphQLFormattedError = {\n extensions: {\n name: err?.originalError?.name || undefined,\n data: (err && err.originalError && (err.originalError as APIError).data) || undefined,\n stack: payload.config.debug ? err.stack : undefined,\n statusCode: status,\n },\n locations: err.locations,\n message: errorMessage,\n path: err.path,\n }\n\n await payload.config.hooks.afterError?.reduce(async (promise, hook) => {\n await promise\n\n const result = await hook({\n context: req.context,\n error: err,\n graphqlResult: response,\n req,\n })\n\n if (result) {\n response = result.graphqlResult || response\n }\n }, Promise.resolve())\n\n return response\n}\n\nlet cached = global._payload_graphql\n\nif (!cached) {\n cached = global._payload_graphql = { graphql: null, promise: null }\n}\n\nexport const getGraphql = async (config: Promise<SanitizedConfig> | SanitizedConfig) => {\n if (process.env.NODE_ENV === 'development') {\n cached = global._payload_graphql = { graphql: null, promise: null }\n }\n\n if (cached.graphql) {\n return cached.graphql\n }\n\n if (!cached.promise) {\n const resolvedConfig = await config\n cached.promise = new Promise((resolve) => {\n const schema = configToSchema(resolvedConfig)\n resolve(cached.graphql || schema)\n })\n }\n\n try {\n cached.graphql = await cached.promise\n } catch (e) {\n cached.promise = null\n throw e\n }\n\n return cached.graphql\n}\n\nexport const POST =\n (config: Promise<SanitizedConfig> | SanitizedConfig) => async (request: Request) => {\n const originalRequest = request.clone()\n const req = await createPayloadRequest({\n config,\n request,\n })\n\n await addDataAndFileToRequest(req)\n addLocalesToRequestFromData(req)\n\n const { schema, validationRules } = await getGraphql(config)\n\n const { payload } = req\n\n const headers = {}\n const apiResponse = await createHandler({\n context: { headers, req },\n onOperation: async (request, args, result) => {\n const response =\n typeof payload.extensions === 'function'\n ? await payload.extensions({\n args,\n req: request,\n result,\n })\n : result\n if (response.errors) {\n const errors = (await Promise.all(\n result.errors.map((error) => {\n return handleError({ err: error, payload, req })\n }),\n )) as GraphQLError[]\n // errors type should be FormattedGraphQLError[] but onOperation has a return type of ExecutionResult instead of FormattedExecutionResult\n return { ...response, errors }\n }\n return response\n },\n schema,\n validationRules: (_, args, defaultRules) => defaultRules.concat(validationRules(args)),\n })(originalRequest)\n\n const resHeaders = headersWithCors({\n headers: new Headers(apiResponse.headers),\n req,\n })\n\n for (const key in headers) {\n resHeaders.append(key, headers[key])\n }\n\n return new Response(apiResponse.body, {\n headers: req.responseHeaders ? mergeHeaders(req.responseHeaders, resHeaders) : resHeaders,\n status: apiResponse.status,\n })\n }\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"handler.js","names":["configToSchema","createHandler","status","httpStatus","addDataAndFileToRequest","addLocalesToRequestFromData","createPayloadRequest","headersWithCors","logError","mergeHeaders","handleError","err","payload","req","originalError","INTERNAL_SERVER_ERROR","errorMessage","message","config","debug","response","extensions","name","undefined","data","stack","statusCode","locations","path","hooks","afterError","reduce","promise","hook","result","context","error","graphqlResult","Promise","resolve","cached","global","_payload_graphql","graphql","getGraphql","process","env","NODE_ENV","resolvedConfig","schema","e","POST","request","originalRequest","clone","canSetHeaders","validationRules","headers","apiResponse","onOperation","args","errors","all","map","_","defaultRules","concat","resHeaders","Headers","key","append","Response","body","responseHeaders"],"sources":["../../../src/routes/graphql/handler.ts"],"sourcesContent":["import type { GraphQLError, GraphQLFormattedError } from 'graphql'\nimport type { APIError, Payload, PayloadRequest, SanitizedConfig } from 'payload'\n\nimport { configToSchema } from '@payloadcms/graphql'\nimport { createHandler } from 'graphql-http/lib/use/fetch'\nimport { status as httpStatus } from 'http-status'\nimport {\n addDataAndFileToRequest,\n addLocalesToRequestFromData,\n createPayloadRequest,\n headersWithCors,\n logError,\n mergeHeaders,\n} from 'payload'\n\nconst handleError = async ({\n err,\n payload,\n req,\n}: {\n err: GraphQLError\n payload: Payload\n req: PayloadRequest\n}): Promise<GraphQLFormattedError> => {\n const status = (err.originalError as APIError).status || httpStatus.INTERNAL_SERVER_ERROR\n let errorMessage = err.message\n logError({ err, payload })\n\n // Internal server errors can contain anything, including potentially sensitive data.\n // Therefore, error details will be hidden from the response unless `config.debug` is `true`\n if (!payload.config.debug && status === httpStatus.INTERNAL_SERVER_ERROR) {\n errorMessage = 'Something went wrong.'\n }\n\n let response: GraphQLFormattedError = {\n extensions: {\n name: err?.originalError?.name || undefined,\n data: (err && err.originalError && (err.originalError as APIError).data) || undefined,\n stack: payload.config.debug ? err.stack : undefined,\n statusCode: status,\n },\n locations: err.locations,\n message: errorMessage,\n path: err.path,\n }\n\n await payload.config.hooks.afterError?.reduce(async (promise, hook) => {\n await promise\n\n const result = await hook({\n context: req.context,\n error: err,\n graphqlResult: response,\n req,\n })\n\n if (result) {\n response = result.graphqlResult || response\n }\n }, Promise.resolve())\n\n return response\n}\n\nlet cached = global._payload_graphql\n\nif (!cached) {\n cached = global._payload_graphql = { graphql: null, promise: null }\n}\n\nexport const getGraphql = async (config: Promise<SanitizedConfig> | SanitizedConfig) => {\n if (process.env.NODE_ENV === 'development') {\n cached = global._payload_graphql = { graphql: null, promise: null }\n }\n\n if (cached.graphql) {\n return cached.graphql\n }\n\n if (!cached.promise) {\n const resolvedConfig = await config\n cached.promise = new Promise((resolve) => {\n const schema = configToSchema(resolvedConfig)\n resolve(cached.graphql || schema)\n })\n }\n\n try {\n cached.graphql = await cached.promise\n } catch (e) {\n cached.promise = null\n throw e\n }\n\n return cached.graphql\n}\n\nexport const POST =\n (config: Promise<SanitizedConfig> | SanitizedConfig) => async (request: Request) => {\n const originalRequest = request.clone()\n const req = await createPayloadRequest({\n canSetHeaders: true,\n config,\n request,\n })\n\n await addDataAndFileToRequest(req)\n addLocalesToRequestFromData(req)\n\n const { schema, validationRules } = await getGraphql(config)\n\n const { payload } = req\n\n const headers = {}\n const apiResponse = await createHandler({\n context: { headers, req },\n onOperation: async (request, args, result) => {\n const response =\n typeof payload.extensions === 'function'\n ? await payload.extensions({\n args,\n req: request,\n result,\n })\n : result\n if (response.errors) {\n const errors = (await Promise.all(\n result.errors.map((error) => {\n return handleError({ err: error, payload, req })\n }),\n )) as GraphQLError[]\n // errors type should be FormattedGraphQLError[] but onOperation has a return type of ExecutionResult instead of FormattedExecutionResult\n return { ...response, errors }\n }\n return response\n },\n schema,\n validationRules: (_, args, defaultRules) => defaultRules.concat(validationRules(args)),\n })(originalRequest)\n\n const resHeaders = headersWithCors({\n headers: new Headers(apiResponse.headers),\n req,\n })\n\n for (const key in headers) {\n resHeaders.append(key, headers[key])\n }\n\n return new Response(apiResponse.body, {\n headers: req.responseHeaders ? mergeHeaders(req.responseHeaders, resHeaders) : resHeaders,\n status: apiResponse.status,\n })\n }\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,7 +14,8 @@ type Result = {
|
|
|
14
14
|
* Initializes a full request object, including the `req` object and access control.
|
|
15
15
|
* As access control and getting the request locale is dependent on the current URL and
|
|
16
16
|
*/
|
|
17
|
-
export declare const initReq: ({ configPromise, importMap, key, overrides, }: {
|
|
17
|
+
export declare const initReq: ({ canSetHeaders, configPromise, importMap, key, overrides, }: {
|
|
18
|
+
canSetHeaders?: boolean;
|
|
18
19
|
configPromise: Promise<SanitizedConfig> | SanitizedConfig;
|
|
19
20
|
importMap: ImportMap;
|
|
20
21
|
key: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initReq.d.ts","sourceRoot":"","sources":["../../src/utilities/initReq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAoB,MAAM,0BAA0B,CAAA;AACnF,OAAO,KAAK,EACV,SAAS,EACT,MAAM,EAEN,cAAc,EACd,eAAe,EACf,oBAAoB,EAErB,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EACL,cAAc,EAMf,MAAM,SAAS,CAAA;AAKhB,KAAK,MAAM,GAAG;IACZ,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAA;IAC/C,YAAY,EAAE,iBAAiB,CAAA;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,oBAAoB,CAAA;IACjC,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAcD;;;GAGG;AACH,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"initReq.d.ts","sourceRoot":"","sources":["../../src/utilities/initReq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAoB,MAAM,0BAA0B,CAAA;AACnF,OAAO,KAAK,EACV,SAAS,EACT,MAAM,EAEN,cAAc,EACd,eAAe,EACf,oBAAoB,EAErB,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EACL,cAAc,EAMf,MAAM,SAAS,CAAA;AAKhB,KAAK,MAAM,GAAG;IACZ,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAA;IAC/C,YAAY,EAAE,iBAAiB,CAAA;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,oBAAoB,CAAA;IACjC,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAcD;;;GAGG;AACH,eAAO,MAAM,OAAO,iEAMjB;IACD,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAA;IACzD,SAAS,EAAE,SAAS,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;CACjD,KAAG,OAAO,CAAC,MAAM,CAwEjB,CAAA"}
|
|
@@ -11,6 +11,7 @@ const reqCache = selectiveCache('req');
|
|
|
11
11
|
* As access control and getting the request locale is dependent on the current URL and
|
|
12
12
|
*/
|
|
13
13
|
export const initReq = async function ({
|
|
14
|
+
canSetHeaders,
|
|
14
15
|
configPromise,
|
|
15
16
|
importMap,
|
|
16
17
|
key,
|
|
@@ -38,6 +39,7 @@ export const initReq = async function ({
|
|
|
38
39
|
responseHeaders,
|
|
39
40
|
user
|
|
40
41
|
} = await executeAuthStrategies({
|
|
42
|
+
canSetHeaders,
|
|
41
43
|
headers,
|
|
42
44
|
payload
|
|
43
45
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initReq.js","names":["initI18n","headers","getHeaders","createLocalReq","executeAuthStrategies","getAccessResults","getPayload","getRequestLanguage","parseCookies","getRequestLocale","selectiveCache","partialReqCache","reqCache","initReq","configPromise","importMap","key","overrides","cookies","partialResult","get","config","payload","languageCode","i18n","context","language","responseHeaders","user","req","reqOverrides","optionsOverrides","host","locale","code","permissions"],"sources":["../../src/utilities/initReq.ts"],"sourcesContent":["import type { AcceptedLanguages, I18n, I18nClient } from '@payloadcms/translations'\nimport type {\n ImportMap,\n Locale,\n Payload,\n PayloadRequest,\n SanitizedConfig,\n SanitizedPermissions,\n User,\n} from 'payload'\n\nimport { initI18n } from '@payloadcms/translations'\nimport { headers as getHeaders } from 'next/headers.js'\nimport {\n createLocalReq,\n executeAuthStrategies,\n getAccessResults,\n getPayload,\n getRequestLanguage,\n parseCookies,\n} from 'payload'\n\nimport { getRequestLocale } from './getRequestLocale.js'\nimport { selectiveCache } from './selectiveCache.js'\n\ntype Result = {\n cookies: Map<string, string>\n headers: Awaited<ReturnType<typeof getHeaders>>\n languageCode: AcceptedLanguages\n locale?: Locale\n permissions: SanitizedPermissions\n req: PayloadRequest\n}\n\ntype PartialResult = {\n i18n: I18nClient\n languageCode: AcceptedLanguages\n payload: Payload\n responseHeaders: Headers\n user: null | User\n}\n\n// Create cache instances for different parts of our application\nconst partialReqCache = selectiveCache<PartialResult>('partialReq')\nconst reqCache = selectiveCache<Result>('req')\n\n/**\n * Initializes a full request object, including the `req` object and access control.\n * As access control and getting the request locale is dependent on the current URL and\n */\nexport const initReq = async function ({\n configPromise,\n importMap,\n key,\n overrides,\n}: {\n configPromise: Promise<SanitizedConfig> | SanitizedConfig\n importMap: ImportMap\n key: string\n overrides?: Parameters<typeof createLocalReq>[0]\n}): Promise<Result> {\n const headers = await getHeaders()\n const cookies = parseCookies(headers)\n\n const partialResult = await partialReqCache.get(async () => {\n const config = await configPromise\n const payload = await getPayload({ config, importMap })\n const languageCode = getRequestLanguage({\n config,\n cookies,\n headers,\n })\n const i18n: I18nClient = await initI18n({\n config: config.i18n,\n context: 'client',\n language: languageCode,\n })\n\n const { responseHeaders, user } = await executeAuthStrategies({\n headers,\n payload,\n })\n\n return {\n i18n,\n languageCode,\n payload,\n responseHeaders,\n user,\n }\n }, 'global')\n\n return reqCache.get(async () => {\n const { i18n, languageCode, payload, responseHeaders, user } = partialResult\n\n const { req: reqOverrides, ...optionsOverrides } = overrides || {}\n\n const req = await createLocalReq(\n {\n req: {\n headers,\n host: headers.get('host'),\n i18n: i18n as I18n,\n responseHeaders,\n user,\n ...(reqOverrides || {}),\n },\n ...(optionsOverrides || {}),\n },\n payload,\n )\n\n const locale = await getRequestLocale({\n req,\n })\n\n req.locale = locale?.code\n\n const permissions = await getAccessResults({\n req,\n })\n\n return {\n cookies,\n headers,\n languageCode,\n locale,\n permissions,\n req,\n }\n }, key)\n}\n"],"mappings":"AAWA,SAASA,QAAQ,QAAQ;AACzB,SAASC,OAAA,IAAWC,UAAU,QAAQ;AACtC,SACEC,cAAc,EACdC,qBAAqB,EACrBC,gBAAgB,EAChBC,UAAU,EACVC,kBAAkB,EAClBC,YAAY,QACP;AAEP,SAASC,gBAAgB,QAAQ;AACjC,SAASC,cAAc,QAAQ;AAmB/B;AACA,MAAMC,eAAA,GAAkBD,cAAA,CAA8B;AACtD,MAAME,QAAA,GAAWF,cAAA,CAAuB;AAExC;;;;AAIA,OAAO,MAAMG,OAAA,GAAU,eAAAA,CAAgB;EACrCC,aAAa;EACbC,SAAS;EACTC,GAAG;EACHC;AAAS,
|
|
1
|
+
{"version":3,"file":"initReq.js","names":["initI18n","headers","getHeaders","createLocalReq","executeAuthStrategies","getAccessResults","getPayload","getRequestLanguage","parseCookies","getRequestLocale","selectiveCache","partialReqCache","reqCache","initReq","canSetHeaders","configPromise","importMap","key","overrides","cookies","partialResult","get","config","payload","languageCode","i18n","context","language","responseHeaders","user","req","reqOverrides","optionsOverrides","host","locale","code","permissions"],"sources":["../../src/utilities/initReq.ts"],"sourcesContent":["import type { AcceptedLanguages, I18n, I18nClient } from '@payloadcms/translations'\nimport type {\n ImportMap,\n Locale,\n Payload,\n PayloadRequest,\n SanitizedConfig,\n SanitizedPermissions,\n User,\n} from 'payload'\n\nimport { initI18n } from '@payloadcms/translations'\nimport { headers as getHeaders } from 'next/headers.js'\nimport {\n createLocalReq,\n executeAuthStrategies,\n getAccessResults,\n getPayload,\n getRequestLanguage,\n parseCookies,\n} from 'payload'\n\nimport { getRequestLocale } from './getRequestLocale.js'\nimport { selectiveCache } from './selectiveCache.js'\n\ntype Result = {\n cookies: Map<string, string>\n headers: Awaited<ReturnType<typeof getHeaders>>\n languageCode: AcceptedLanguages\n locale?: Locale\n permissions: SanitizedPermissions\n req: PayloadRequest\n}\n\ntype PartialResult = {\n i18n: I18nClient\n languageCode: AcceptedLanguages\n payload: Payload\n responseHeaders: Headers\n user: null | User\n}\n\n// Create cache instances for different parts of our application\nconst partialReqCache = selectiveCache<PartialResult>('partialReq')\nconst reqCache = selectiveCache<Result>('req')\n\n/**\n * Initializes a full request object, including the `req` object and access control.\n * As access control and getting the request locale is dependent on the current URL and\n */\nexport const initReq = async function ({\n canSetHeaders,\n configPromise,\n importMap,\n key,\n overrides,\n}: {\n canSetHeaders?: boolean\n configPromise: Promise<SanitizedConfig> | SanitizedConfig\n importMap: ImportMap\n key: string\n overrides?: Parameters<typeof createLocalReq>[0]\n}): Promise<Result> {\n const headers = await getHeaders()\n const cookies = parseCookies(headers)\n\n const partialResult = await partialReqCache.get(async () => {\n const config = await configPromise\n const payload = await getPayload({ config, importMap })\n const languageCode = getRequestLanguage({\n config,\n cookies,\n headers,\n })\n const i18n: I18nClient = await initI18n({\n config: config.i18n,\n context: 'client',\n language: languageCode,\n })\n\n const { responseHeaders, user } = await executeAuthStrategies({\n canSetHeaders,\n headers,\n payload,\n })\n\n return {\n i18n,\n languageCode,\n payload,\n responseHeaders,\n user,\n }\n }, 'global')\n\n return reqCache.get(async () => {\n const { i18n, languageCode, payload, responseHeaders, user } = partialResult\n\n const { req: reqOverrides, ...optionsOverrides } = overrides || {}\n\n const req = await createLocalReq(\n {\n req: {\n headers,\n host: headers.get('host'),\n i18n: i18n as I18n,\n responseHeaders,\n user,\n ...(reqOverrides || {}),\n },\n ...(optionsOverrides || {}),\n },\n payload,\n )\n\n const locale = await getRequestLocale({\n req,\n })\n\n req.locale = locale?.code\n\n const permissions = await getAccessResults({\n req,\n })\n\n return {\n cookies,\n headers,\n languageCode,\n locale,\n permissions,\n req,\n }\n }, key)\n}\n"],"mappings":"AAWA,SAASA,QAAQ,QAAQ;AACzB,SAASC,OAAA,IAAWC,UAAU,QAAQ;AACtC,SACEC,cAAc,EACdC,qBAAqB,EACrBC,gBAAgB,EAChBC,UAAU,EACVC,kBAAkB,EAClBC,YAAY,QACP;AAEP,SAASC,gBAAgB,QAAQ;AACjC,SAASC,cAAc,QAAQ;AAmB/B;AACA,MAAMC,eAAA,GAAkBD,cAAA,CAA8B;AACtD,MAAME,QAAA,GAAWF,cAAA,CAAuB;AAExC;;;;AAIA,OAAO,MAAMG,OAAA,GAAU,eAAAA,CAAgB;EACrCC,aAAa;EACbC,aAAa;EACbC,SAAS;EACTC,GAAG;EACHC;AAAS,CAOV;EACC,MAAMjB,OAAA,GAAU,MAAMC,UAAA;EACtB,MAAMiB,OAAA,GAAUX,YAAA,CAAaP,OAAA;EAE7B,MAAMmB,aAAA,GAAgB,MAAMT,eAAA,CAAgBU,GAAG,CAAC;IAC9C,MAAMC,MAAA,GAAS,MAAMP,aAAA;IACrB,MAAMQ,OAAA,GAAU,MAAMjB,UAAA,CAAW;MAAEgB,MAAA;MAAQN;IAAU;IACrD,MAAMQ,YAAA,GAAejB,kBAAA,CAAmB;MACtCe,MAAA;MACAH,OAAA;MACAlB;IACF;IACA,MAAMwB,IAAA,GAAmB,MAAMzB,QAAA,CAAS;MACtCsB,MAAA,EAAQA,MAAA,CAAOG,IAAI;MACnBC,OAAA,EAAS;MACTC,QAAA,EAAUH;IACZ;IAEA,MAAM;MAAEI,eAAe;MAAEC;IAAI,CAAE,GAAG,MAAMzB,qBAAA,CAAsB;MAC5DU,aAAA;MACAb,OAAA;MACAsB;IACF;IAEA,OAAO;MACLE,IAAA;MACAD,YAAA;MACAD,OAAA;MACAK,eAAA;MACAC;IACF;EACF,GAAG;EAEH,OAAOjB,QAAA,CAASS,GAAG,CAAC;IAClB,MAAM;MAAEI,IAAI;MAAED,YAAY;MAAED,OAAO;MAAEK,eAAe;MAAEC;IAAI,CAAE,GAAGT,aAAA;IAE/D,MAAM;MAAEU,GAAA,EAAKC,YAAY;MAAE,GAAGC;IAAA,CAAkB,GAAGd,SAAA,IAAa,CAAC;IAEjE,MAAMY,GAAA,GAAM,MAAM3B,cAAA,CAChB;MACE2B,GAAA,EAAK;QACH7B,OAAA;QACAgC,IAAA,EAAMhC,OAAA,CAAQoB,GAAG,CAAC;QAClBI,IAAA,EAAMA,IAAA;QACNG,eAAA;QACAC,IAAA;QACA,IAAIE,YAAA,IAAgB,CAAC,CAAC;MACxB;MACA,IAAIC,gBAAA,IAAoB,CAAC,CAAC;IAC5B,GACAT,OAAA;IAGF,MAAMW,MAAA,GAAS,MAAMzB,gBAAA,CAAiB;MACpCqB;IACF;IAEAA,GAAA,CAAII,MAAM,GAAGA,MAAA,EAAQC,IAAA;IAErB,MAAMC,WAAA,GAAc,MAAM/B,gBAAA,CAAiB;MACzCyB;IACF;IAEA,OAAO;MACLX,OAAA;MACAlB,OAAA;MACAuB,YAAA;MACAU,MAAA;MACAE,WAAA;MACAN;IACF;EACF,GAAGb,GAAA;AACL","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildView.d.ts","sourceRoot":"","sources":["../../../src/views/BrowseByFolder/buildView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,+BAA+B,EAE/B,SAAS,EACV,MAAM,SAAS,CAAA;AAWhB,MAAM,MAAM,mBAAmB,GAAG;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,EAAE,SAAS,CAAA;CACjB,GAAG,oBAAoB,CAAA;AAExB,eAAO,MAAM,uBAAuB,SAC5B,mBAAmB,KACxB,OAAO,CAAC,+BAA+B,
|
|
1
|
+
{"version":3,"file":"buildView.d.ts","sourceRoot":"","sources":["../../../src/views/BrowseByFolder/buildView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,+BAA+B,EAE/B,SAAS,EACV,MAAM,SAAS,CAAA;AAWhB,MAAM,MAAM,mBAAmB,GAAG;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,EAAE,SAAS,CAAA;CACjB,GAAG,oBAAoB,CAAA;AAExB,eAAO,MAAM,uBAAuB,SAC5B,mBAAmB,KACxB,OAAO,CAAC,+BAA+B,CAkIzC,CAAA"}
|
|
@@ -50,9 +50,8 @@ export const buildBrowseByFolderView = async args => {
|
|
|
50
50
|
subfolders
|
|
51
51
|
} = await getFolderData({
|
|
52
52
|
folderID,
|
|
53
|
-
|
|
54
|
-
search: query?.search
|
|
55
|
-
user: initPageResult.req.user
|
|
53
|
+
req: initPageResult.req,
|
|
54
|
+
search: query?.search
|
|
56
55
|
});
|
|
57
56
|
const resolvedFolderID = breadcrumbs[breadcrumbs.length - 1]?.id;
|
|
58
57
|
if (!isInDrawer && (resolvedFolderID && folderID && folderID !== resolvedFolderID || folderID && !resolvedFolderID)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildView.js","names":["DefaultBrowseByFolderView","FolderProvider","HydrateAuthProvider","RenderServerComponent","formatAdminURL","redirect","getFolderData","React","getPreferences","buildBrowseByFolderView","args","disableBulkDelete","disableBulkEdit","enableRowSelections","folderCollectionSlugs","folderID","initPageResult","isInDrawer","params","query","queryFromArgs","searchParams","locale","fullLocale","permissions","req","i18n","payload","config","queryFromReq","user","visibleEntities","collections","filter","collectionSlug","read","includes","length","Error","selectedCollectionSlugs","Array","isArray","relationTo","folders","slug","routes","admin","adminRoute","breadcrumbs","documents","subfolders","search","resolvedFolderID","id","path","browseByFolder","serverURL","browseByFolderPreferences","collection","serverProps","hasCreatePermissionCollectionSlugs","View","_jsxs","filteredCollectionSlugs","_jsx","clientProps","viewPreference","value","Fallback","importMap"],"sources":["../../../src/views/BrowseByFolder/buildView.tsx"],"sourcesContent":["import type {\n AdminViewServerProps,\n BuildCollectionFolderViewResult,\n FolderListViewServerPropsOnly,\n ListQuery,\n} from 'payload'\n\nimport { DefaultBrowseByFolderView, FolderProvider, HydrateAuthProvider } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\nimport { redirect } from 'next/navigation.js'\nimport { getFolderData } from 'payload'\nimport React from 'react'\n\nimport { getPreferences } from '../../utilities/getPreferences.js'\n\nexport type BuildFolderViewArgs = {\n customCellProps?: Record<string, any>\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n enableRowSelections: boolean\n folderID?: number | string\n isInDrawer?: boolean\n overrideEntityVisibility?: boolean\n query: ListQuery\n} & AdminViewServerProps\n\nexport const buildBrowseByFolderView = async (\n args: BuildFolderViewArgs,\n): Promise<BuildCollectionFolderViewResult> => {\n const {\n disableBulkDelete,\n disableBulkEdit,\n enableRowSelections,\n folderCollectionSlugs,\n folderID,\n initPageResult,\n isInDrawer,\n params,\n query: queryFromArgs,\n searchParams,\n } = args\n\n const {\n locale: fullLocale,\n permissions,\n req: {\n i18n,\n payload,\n payload: { config },\n query: queryFromReq,\n user,\n },\n visibleEntities,\n } = initPageResult\n\n const collections = folderCollectionSlugs.filter(\n (collectionSlug) =>\n permissions?.collections?.[collectionSlug]?.read &&\n visibleEntities.collections.includes(collectionSlug),\n )\n\n if (!collections.length) {\n throw new Error('not-found')\n }\n\n const query = queryFromArgs || queryFromReq\n const selectedCollectionSlugs: string[] =\n Array.isArray(query?.relationTo) && query.relationTo.length\n ? query.relationTo\n : [...folderCollectionSlugs, config.folders.slug]\n\n const {\n routes: { admin: adminRoute },\n } = config\n\n const { breadcrumbs, documents, subfolders } = await getFolderData({\n folderID,\n
|
|
1
|
+
{"version":3,"file":"buildView.js","names":["DefaultBrowseByFolderView","FolderProvider","HydrateAuthProvider","RenderServerComponent","formatAdminURL","redirect","getFolderData","React","getPreferences","buildBrowseByFolderView","args","disableBulkDelete","disableBulkEdit","enableRowSelections","folderCollectionSlugs","folderID","initPageResult","isInDrawer","params","query","queryFromArgs","searchParams","locale","fullLocale","permissions","req","i18n","payload","config","queryFromReq","user","visibleEntities","collections","filter","collectionSlug","read","includes","length","Error","selectedCollectionSlugs","Array","isArray","relationTo","folders","slug","routes","admin","adminRoute","breadcrumbs","documents","subfolders","search","resolvedFolderID","id","path","browseByFolder","serverURL","browseByFolderPreferences","collection","serverProps","hasCreatePermissionCollectionSlugs","View","_jsxs","filteredCollectionSlugs","_jsx","clientProps","viewPreference","value","Fallback","importMap"],"sources":["../../../src/views/BrowseByFolder/buildView.tsx"],"sourcesContent":["import type {\n AdminViewServerProps,\n BuildCollectionFolderViewResult,\n FolderListViewServerPropsOnly,\n ListQuery,\n} from 'payload'\n\nimport { DefaultBrowseByFolderView, FolderProvider, HydrateAuthProvider } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\nimport { redirect } from 'next/navigation.js'\nimport { getFolderData } from 'payload'\nimport React from 'react'\n\nimport { getPreferences } from '../../utilities/getPreferences.js'\n\nexport type BuildFolderViewArgs = {\n customCellProps?: Record<string, any>\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n enableRowSelections: boolean\n folderID?: number | string\n isInDrawer?: boolean\n overrideEntityVisibility?: boolean\n query: ListQuery\n} & AdminViewServerProps\n\nexport const buildBrowseByFolderView = async (\n args: BuildFolderViewArgs,\n): Promise<BuildCollectionFolderViewResult> => {\n const {\n disableBulkDelete,\n disableBulkEdit,\n enableRowSelections,\n folderCollectionSlugs,\n folderID,\n initPageResult,\n isInDrawer,\n params,\n query: queryFromArgs,\n searchParams,\n } = args\n\n const {\n locale: fullLocale,\n permissions,\n req: {\n i18n,\n payload,\n payload: { config },\n query: queryFromReq,\n user,\n },\n visibleEntities,\n } = initPageResult\n\n const collections = folderCollectionSlugs.filter(\n (collectionSlug) =>\n permissions?.collections?.[collectionSlug]?.read &&\n visibleEntities.collections.includes(collectionSlug),\n )\n\n if (!collections.length) {\n throw new Error('not-found')\n }\n\n const query = queryFromArgs || queryFromReq\n const selectedCollectionSlugs: string[] =\n Array.isArray(query?.relationTo) && query.relationTo.length\n ? query.relationTo\n : [...folderCollectionSlugs, config.folders.slug]\n\n const {\n routes: { admin: adminRoute },\n } = config\n\n const { breadcrumbs, documents, subfolders } = await getFolderData({\n folderID,\n req: initPageResult.req,\n search: query?.search as string,\n })\n\n const resolvedFolderID = breadcrumbs[breadcrumbs.length - 1]?.id\n\n if (\n !isInDrawer &&\n ((resolvedFolderID && folderID && folderID !== resolvedFolderID) ||\n (folderID && !resolvedFolderID))\n ) {\n redirect(\n formatAdminURL({\n adminRoute,\n path: config.admin.routes.browseByFolder,\n serverURL: config.serverURL,\n }),\n )\n }\n\n const browseByFolderPreferences = await getPreferences<{ viewPreference: string }>(\n 'browse-by-folder',\n payload,\n user.id,\n user.collection,\n )\n\n const serverProps: Omit<FolderListViewServerPropsOnly, 'collectionConfig' | 'listPreferences'> = {\n documents,\n i18n,\n locale: fullLocale,\n params,\n payload,\n permissions,\n searchParams,\n subfolders,\n user,\n }\n\n // const folderViewSlots = renderFolderViewSlots({\n // clientProps: {\n // },\n // description: staticDescription,\n // payload,\n // serverProps,\n // })\n\n // documents cannot be created without a parent folder in this view\n const hasCreatePermissionCollectionSlugs = folderID\n ? [config.folders.slug, ...folderCollectionSlugs]\n : [config.folders.slug]\n\n return {\n View: (\n <FolderProvider\n breadcrumbs={breadcrumbs}\n documents={documents}\n filteredCollectionSlugs={selectedCollectionSlugs}\n folderCollectionSlugs={folderCollectionSlugs}\n folderID={folderID}\n subfolders={subfolders}\n >\n <HydrateAuthProvider permissions={permissions} />\n {RenderServerComponent({\n clientProps: {\n // ...folderViewSlots,\n disableBulkDelete,\n disableBulkEdit,\n enableRowSelections,\n hasCreatePermissionCollectionSlugs,\n selectedCollectionSlugs,\n viewPreference: browseByFolderPreferences?.value?.viewPreference,\n },\n // Component:config.folders?.components?.views?.list?.Component,\n Fallback: DefaultBrowseByFolderView,\n importMap: payload.importMap,\n serverProps,\n })}\n </FolderProvider>\n ),\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildView.d.ts","sourceRoot":"","sources":["../../../src/views/CollectionFolders/buildView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,+BAA+B,EAE/B,SAAS,EAEV,MAAM,SAAS,CAAA;AAahB,MAAM,MAAM,kCAAkC,GAAG;IAC/C,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,EAAE,SAAS,CAAA;CACjB,GAAG,oBAAoB,CAAA;AAExB;;GAEG;AACH,eAAO,MAAM,yBAAyB,SAC9B,kCAAkC,KACvC,OAAO,CAAC,+BAA+B,
|
|
1
|
+
{"version":3,"file":"buildView.d.ts","sourceRoot":"","sources":["../../../src/views/CollectionFolders/buildView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,+BAA+B,EAE/B,SAAS,EAEV,MAAM,SAAS,CAAA;AAahB,MAAM,MAAM,kCAAkC,GAAG;IAC/C,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,EAAE,SAAS,CAAA;CACjB,GAAG,oBAAoB,CAAA;AAExB;;GAEG;AACH,eAAO,MAAM,yBAAyB,SAC9B,kCAAkC,KACvC,OAAO,CAAC,+BAA+B,CA2KzC,CAAA"}
|
|
@@ -84,9 +84,8 @@ export const buildCollectionFolderView = async args => {
|
|
|
84
84
|
} = await getFolderData({
|
|
85
85
|
collectionSlug,
|
|
86
86
|
folderID,
|
|
87
|
-
|
|
88
|
-
search: query?.search
|
|
89
|
-
user: initPageResult.req.user
|
|
87
|
+
req: initPageResult.req,
|
|
88
|
+
search: query?.search
|
|
90
89
|
});
|
|
91
90
|
const resolvedFolderID = breadcrumbs[breadcrumbs.length - 1]?.id;
|
|
92
91
|
if (!isInDrawer && (resolvedFolderID && folderID && folderID !== resolvedFolderID || folderID && !resolvedFolderID)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildView.js","names":["DefaultCollectionFolderView","FolderProvider","HydrateAuthProvider","RenderServerComponent","formatAdminURL","mergeListSearchAndWhere","redirect","getFolderData","parseDocumentID","React","getPreferences","buildCollectionFolderView","args","disableBulkDelete","disableBulkEdit","enableRowSelections","folderCollectionSlugs","folderID","initPageResult","isInDrawer","overrideEntityVisibility","params","query","queryFromArgs","searchParams","collectionConfig","slug","collectionSlug","locale","fullLocale","permissions","req","i18n","payload","config","queryFromReq","user","visibleEntities","collections","read","Error","collectionFolderPreferences","id","collection","routes","admin","adminRoute","includes","whereConstraints","search","undefined","where","push","folders","fieldName","equals","exists","breadcrumbs","documents","subfolders","resolvedFolderID","length","path","serverURL","newDocumentURL","hasCreatePermission","create","serverProps","View","_jsxs","_jsx","clientProps","viewPreference","value","Component","components","views","list","Fallback","importMap"],"sources":["../../../src/views/CollectionFolders/buildView.tsx"],"sourcesContent":["import type {\n AdminViewServerProps,\n BuildCollectionFolderViewResult,\n FolderListViewServerPropsOnly,\n ListQuery,\n Where,\n} from 'payload'\n\nimport { DefaultCollectionFolderView, FolderProvider, HydrateAuthProvider } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { formatAdminURL, mergeListSearchAndWhere } from '@payloadcms/ui/shared'\nimport { redirect } from 'next/navigation.js'\nimport { getFolderData, parseDocumentID } from 'payload'\nimport React from 'react'\n\nimport { getPreferences } from '../../utilities/getPreferences.js'\n\n// import { renderFolderViewSlots } from './renderFolderViewSlots.js'\n\nexport type BuildCollectionFolderViewStateArgs = {\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n enableRowSelections: boolean\n folderID?: number | string\n isInDrawer?: boolean\n overrideEntityVisibility?: boolean\n query: ListQuery\n} & AdminViewServerProps\n\n/**\n * Builds the entire view for collection-folder views on the server\n */\nexport const buildCollectionFolderView = async (\n args: BuildCollectionFolderViewStateArgs,\n): Promise<BuildCollectionFolderViewResult> => {\n const {\n disableBulkDelete,\n disableBulkEdit,\n enableRowSelections,\n folderCollectionSlugs,\n folderID,\n initPageResult,\n isInDrawer,\n overrideEntityVisibility,\n params,\n query: queryFromArgs,\n searchParams,\n } = args\n\n const {\n collectionConfig,\n collectionConfig: { slug: collectionSlug },\n locale: fullLocale,\n permissions,\n req: {\n i18n,\n payload,\n payload: { config },\n query: queryFromReq,\n user,\n },\n visibleEntities,\n } = initPageResult\n\n if (!permissions?.collections?.[collectionSlug]?.read) {\n throw new Error('not-found')\n }\n\n if (collectionConfig) {\n const query = queryFromArgs || queryFromReq\n\n const collectionFolderPreferences = await getPreferences<{ viewPreference: string }>(\n `${collectionSlug}-collection-folder`,\n payload,\n user.id,\n user.collection,\n )\n\n const {\n routes: { admin: adminRoute },\n } = config\n\n if (\n (!visibleEntities.collections.includes(collectionSlug) && !overrideEntityVisibility) ||\n !folderCollectionSlugs.includes(collectionSlug)\n ) {\n throw new Error('not-found')\n }\n\n const whereConstraints = [\n mergeListSearchAndWhere({\n collectionConfig,\n search: typeof query?.search === 'string' ? query.search : undefined,\n where: (query?.where as Where) || undefined,\n }),\n ]\n\n if (folderID) {\n whereConstraints.push({\n [config.folders.fieldName]: {\n equals: parseDocumentID({ id: folderID, collectionSlug, payload }),\n },\n })\n } else {\n whereConstraints.push({\n [config.folders.fieldName]: {\n exists: false,\n },\n })\n }\n\n const { breadcrumbs, documents, subfolders } = await getFolderData({\n collectionSlug,\n folderID,\n payload: initPageResult.req.payload,\n search: query?.search as string,\n user: initPageResult.req.user,\n })\n\n const resolvedFolderID = breadcrumbs[breadcrumbs.length - 1]?.id\n\n if (\n !isInDrawer &&\n ((resolvedFolderID && folderID && folderID !== resolvedFolderID) ||\n (folderID && !resolvedFolderID))\n ) {\n redirect(\n formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${config.folders.slug}`,\n serverURL: config.serverURL,\n }),\n )\n }\n\n const newDocumentURL = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/create`,\n })\n\n const hasCreatePermission = permissions?.collections?.[collectionSlug]?.create\n\n const serverProps: FolderListViewServerPropsOnly = {\n collectionConfig,\n documents,\n i18n,\n locale: fullLocale,\n params,\n payload,\n permissions,\n searchParams,\n subfolders,\n user,\n }\n\n // We could support slots in the folder view in the future\n // const folderViewSlots = renderFolderViewSlots({\n // clientProps: {\n // collectionSlug,\n // hasCreatePermission,\n // newDocumentURL,\n // },\n // collectionConfig,\n // description: typeof collectionConfig.admin.description === 'function'\n // ? collectionConfig.admin.description({ t: i18n.t })\n // : collectionConfig.admin.description,\n // payload,\n // serverProps,\n // })\n\n const search = query?.search as string\n\n return {\n View: (\n <FolderProvider\n breadcrumbs={breadcrumbs}\n collectionSlug={collectionSlug}\n documents={documents}\n folderCollectionSlugs={folderCollectionSlugs}\n folderID={folderID}\n search={search}\n subfolders={subfolders}\n >\n <HydrateAuthProvider permissions={permissions} />\n {RenderServerComponent({\n clientProps: {\n // ...folderViewSlots,\n collectionSlug,\n disableBulkDelete,\n disableBulkEdit,\n enableRowSelections,\n hasCreatePermission,\n newDocumentURL,\n viewPreference: collectionFolderPreferences?.value?.viewPreference,\n },\n Component: collectionConfig?.admin?.components?.views?.list?.Component,\n Fallback: DefaultCollectionFolderView,\n importMap: payload.importMap,\n serverProps,\n })}\n </FolderProvider>\n ),\n }\n }\n\n throw new Error('not-found')\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"buildView.js","names":["DefaultCollectionFolderView","FolderProvider","HydrateAuthProvider","RenderServerComponent","formatAdminURL","mergeListSearchAndWhere","redirect","getFolderData","parseDocumentID","React","getPreferences","buildCollectionFolderView","args","disableBulkDelete","disableBulkEdit","enableRowSelections","folderCollectionSlugs","folderID","initPageResult","isInDrawer","overrideEntityVisibility","params","query","queryFromArgs","searchParams","collectionConfig","slug","collectionSlug","locale","fullLocale","permissions","req","i18n","payload","config","queryFromReq","user","visibleEntities","collections","read","Error","collectionFolderPreferences","id","collection","routes","admin","adminRoute","includes","whereConstraints","search","undefined","where","push","folders","fieldName","equals","exists","breadcrumbs","documents","subfolders","resolvedFolderID","length","path","serverURL","newDocumentURL","hasCreatePermission","create","serverProps","View","_jsxs","_jsx","clientProps","viewPreference","value","Component","components","views","list","Fallback","importMap"],"sources":["../../../src/views/CollectionFolders/buildView.tsx"],"sourcesContent":["import type {\n AdminViewServerProps,\n BuildCollectionFolderViewResult,\n FolderListViewServerPropsOnly,\n ListQuery,\n Where,\n} from 'payload'\n\nimport { DefaultCollectionFolderView, FolderProvider, HydrateAuthProvider } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { formatAdminURL, mergeListSearchAndWhere } from '@payloadcms/ui/shared'\nimport { redirect } from 'next/navigation.js'\nimport { getFolderData, parseDocumentID } from 'payload'\nimport React from 'react'\n\nimport { getPreferences } from '../../utilities/getPreferences.js'\n\n// import { renderFolderViewSlots } from './renderFolderViewSlots.js'\n\nexport type BuildCollectionFolderViewStateArgs = {\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n enableRowSelections: boolean\n folderID?: number | string\n isInDrawer?: boolean\n overrideEntityVisibility?: boolean\n query: ListQuery\n} & AdminViewServerProps\n\n/**\n * Builds the entire view for collection-folder views on the server\n */\nexport const buildCollectionFolderView = async (\n args: BuildCollectionFolderViewStateArgs,\n): Promise<BuildCollectionFolderViewResult> => {\n const {\n disableBulkDelete,\n disableBulkEdit,\n enableRowSelections,\n folderCollectionSlugs,\n folderID,\n initPageResult,\n isInDrawer,\n overrideEntityVisibility,\n params,\n query: queryFromArgs,\n searchParams,\n } = args\n\n const {\n collectionConfig,\n collectionConfig: { slug: collectionSlug },\n locale: fullLocale,\n permissions,\n req: {\n i18n,\n payload,\n payload: { config },\n query: queryFromReq,\n user,\n },\n visibleEntities,\n } = initPageResult\n\n if (!permissions?.collections?.[collectionSlug]?.read) {\n throw new Error('not-found')\n }\n\n if (collectionConfig) {\n const query = queryFromArgs || queryFromReq\n\n const collectionFolderPreferences = await getPreferences<{ viewPreference: string }>(\n `${collectionSlug}-collection-folder`,\n payload,\n user.id,\n user.collection,\n )\n\n const {\n routes: { admin: adminRoute },\n } = config\n\n if (\n (!visibleEntities.collections.includes(collectionSlug) && !overrideEntityVisibility) ||\n !folderCollectionSlugs.includes(collectionSlug)\n ) {\n throw new Error('not-found')\n }\n\n const whereConstraints = [\n mergeListSearchAndWhere({\n collectionConfig,\n search: typeof query?.search === 'string' ? query.search : undefined,\n where: (query?.where as Where) || undefined,\n }),\n ]\n\n if (folderID) {\n whereConstraints.push({\n [config.folders.fieldName]: {\n equals: parseDocumentID({ id: folderID, collectionSlug, payload }),\n },\n })\n } else {\n whereConstraints.push({\n [config.folders.fieldName]: {\n exists: false,\n },\n })\n }\n\n const { breadcrumbs, documents, subfolders } = await getFolderData({\n collectionSlug,\n folderID,\n req: initPageResult.req,\n search: query?.search as string,\n })\n\n const resolvedFolderID = breadcrumbs[breadcrumbs.length - 1]?.id\n\n if (\n !isInDrawer &&\n ((resolvedFolderID && folderID && folderID !== resolvedFolderID) ||\n (folderID && !resolvedFolderID))\n ) {\n redirect(\n formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${config.folders.slug}`,\n serverURL: config.serverURL,\n }),\n )\n }\n\n const newDocumentURL = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/create`,\n })\n\n const hasCreatePermission = permissions?.collections?.[collectionSlug]?.create\n\n const serverProps: FolderListViewServerPropsOnly = {\n collectionConfig,\n documents,\n i18n,\n locale: fullLocale,\n params,\n payload,\n permissions,\n searchParams,\n subfolders,\n user,\n }\n\n // We could support slots in the folder view in the future\n // const folderViewSlots = renderFolderViewSlots({\n // clientProps: {\n // collectionSlug,\n // hasCreatePermission,\n // newDocumentURL,\n // },\n // collectionConfig,\n // description: typeof collectionConfig.admin.description === 'function'\n // ? collectionConfig.admin.description({ t: i18n.t })\n // : collectionConfig.admin.description,\n // payload,\n // serverProps,\n // })\n\n const search = query?.search as string\n\n return {\n View: (\n <FolderProvider\n breadcrumbs={breadcrumbs}\n collectionSlug={collectionSlug}\n documents={documents}\n folderCollectionSlugs={folderCollectionSlugs}\n folderID={folderID}\n search={search}\n subfolders={subfolders}\n >\n <HydrateAuthProvider permissions={permissions} />\n {RenderServerComponent({\n clientProps: {\n // ...folderViewSlots,\n collectionSlug,\n disableBulkDelete,\n disableBulkEdit,\n enableRowSelections,\n hasCreatePermission,\n newDocumentURL,\n viewPreference: collectionFolderPreferences?.value?.viewPreference,\n },\n Component: collectionConfig?.admin?.components?.views?.list?.Component,\n Fallback: DefaultCollectionFolderView,\n importMap: payload.importMap,\n serverProps,\n })}\n </FolderProvider>\n ),\n }\n }\n\n throw new Error('not-found')\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../../src/views/LivePreview/index.client.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAMV,IAAI,EACJ,aAAa,EAEb,iBAAiB,EAClB,MAAM,SAAS,CAAA;AAgChB,OAAO,KAA6D,MAAM,OAAO,CAAA;AAGjF,OAAO,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../../src/views/LivePreview/index.client.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAMV,IAAI,EACJ,aAAa,EAEb,iBAAiB,EAClB,MAAM,SAAS,CAAA;AAgChB,OAAO,KAA6D,MAAM,OAAO,CAAA;AAGjF,OAAO,cAAc,CAAA;AAkgBrB,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CACtC;IACE,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAA;IACtD,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAA;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB,GAAG,aAAa,CA2DlB,CAAA"}
|
|
@@ -20,6 +20,7 @@ const getAbsoluteUrl = url => {
|
|
|
20
20
|
}
|
|
21
21
|
};
|
|
22
22
|
const PreviewView = ({
|
|
23
|
+
BeforeDocumentControls,
|
|
23
24
|
collectionConfig,
|
|
24
25
|
config,
|
|
25
26
|
Description,
|
|
@@ -318,6 +319,7 @@ const PreviewView = ({
|
|
|
318
319
|
globalConfig: globalConfig
|
|
319
320
|
}), /*#__PURE__*/_jsx(DocumentControls, {
|
|
320
321
|
apiURL: apiURL,
|
|
322
|
+
BeforeDocumentControls: BeforeDocumentControls,
|
|
321
323
|
customComponents: {
|
|
322
324
|
PreviewButton,
|
|
323
325
|
PublishButton,
|
|
@@ -358,7 +360,7 @@ const PreviewView = ({
|
|
|
358
360
|
});
|
|
359
361
|
};
|
|
360
362
|
export const LivePreviewClient = props => {
|
|
361
|
-
const $ = _c(
|
|
363
|
+
const $ = _c(23);
|
|
362
364
|
const {
|
|
363
365
|
breakpoints,
|
|
364
366
|
url: incomingUrl
|
|
@@ -405,7 +407,7 @@ export const LivePreviewClient = props => {
|
|
|
405
407
|
popupRef
|
|
406
408
|
} = usePopupWindow(t3);
|
|
407
409
|
let t4;
|
|
408
|
-
if ($[4] !== apiRoute || $[5] !== breakpoints || $[6] !== collectionSlug || $[7] !== config || $[8] !== getEntityConfig || $[9] !== globalSlug || $[10] !== isPopupOpen || $[11] !== openPopupWindow || $[12] !== popupRef || $[13] !== props.
|
|
410
|
+
if ($[4] !== apiRoute || $[5] !== breakpoints || $[6] !== collectionSlug || $[7] !== config || $[8] !== getEntityConfig || $[9] !== globalSlug || $[10] !== isPopupOpen || $[11] !== openPopupWindow || $[12] !== popupRef || $[13] !== props.BeforeDocumentControls || $[14] !== props.Description || $[15] !== props.PreviewButton || $[16] !== props.PublishButton || $[17] !== props.SaveButton || $[18] !== props.SaveDraftButton || $[19] !== props.Upload || $[20] !== serverURL || $[21] !== url) {
|
|
409
411
|
const collectionConfig = getEntityConfig({
|
|
410
412
|
collectionSlug
|
|
411
413
|
});
|
|
@@ -423,6 +425,7 @@ export const LivePreviewClient = props => {
|
|
|
423
425
|
url,
|
|
424
426
|
children: _jsx(PreviewView, {
|
|
425
427
|
apiRoute,
|
|
428
|
+
BeforeDocumentControls: props.BeforeDocumentControls,
|
|
426
429
|
collectionConfig,
|
|
427
430
|
config,
|
|
428
431
|
Description: props.Description,
|
|
@@ -447,17 +450,18 @@ export const LivePreviewClient = props => {
|
|
|
447
450
|
$[10] = isPopupOpen;
|
|
448
451
|
$[11] = openPopupWindow;
|
|
449
452
|
$[12] = popupRef;
|
|
450
|
-
$[13] = props.
|
|
451
|
-
$[14] = props.
|
|
452
|
-
$[15] = props.
|
|
453
|
-
$[16] = props.
|
|
454
|
-
$[17] = props.
|
|
455
|
-
$[18] = props.
|
|
456
|
-
$[19] =
|
|
457
|
-
$[20] =
|
|
458
|
-
$[21] =
|
|
453
|
+
$[13] = props.BeforeDocumentControls;
|
|
454
|
+
$[14] = props.Description;
|
|
455
|
+
$[15] = props.PreviewButton;
|
|
456
|
+
$[16] = props.PublishButton;
|
|
457
|
+
$[17] = props.SaveButton;
|
|
458
|
+
$[18] = props.SaveDraftButton;
|
|
459
|
+
$[19] = props.Upload;
|
|
460
|
+
$[20] = serverURL;
|
|
461
|
+
$[21] = url;
|
|
462
|
+
$[22] = t4;
|
|
459
463
|
} else {
|
|
460
|
-
t4 = $[
|
|
464
|
+
t4 = $[22];
|
|
461
465
|
}
|
|
462
466
|
return t4;
|
|
463
467
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.client.js","names":["c","_c","DocumentControls","DocumentFields","DocumentLocked","DocumentTakeOver","Form","LeaveWithoutSaving","OperationProvider","SetDocumentStepNav","SetDocumentTitle","useAuth","useConfig","useDocumentDrawerContext","useDocumentEvents","useDocumentInfo","useEditDepth","useRouteTransition","useServerFunctions","useTranslation","useUploadEdits","abortAndIgnore","handleAbortRef","handleBackToDashboard","handleGoBack","handleTakeOver","useRouter","useSearchParams","formatAdminURL","React","Fragment","useCallback","useEffect","useRef","useState","useLivePreviewContext","LivePreviewProvider","LivePreview","usePopupWindow","baseClass","getAbsoluteUrl","url","URL","window","location","origin","href","PreviewView","collectionConfig","config","Description","fields","globalConfig","PreviewButton","PublishButton","SaveButton","SaveDraftButton","schemaPath","id","action","AfterDocument","AfterFields","apiURL","BeforeFields","collectionSlug","currentEditor","disableActions","disableLeaveWithoutSaving","docPermissions","documentIsLocked","getDocPermissions","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","incrementVersionCount","initialData","initialState","isEditing","isInitializing","lastUpdateTime","setCurrentEditor","setDocumentIsLocked","unlockDocument","updateDocumentEditor","updateSavedDocumentData","onSave","onSaveFromContext","operation","admin","user","userSlug","routes","adminRoute","router","params","locale","get","t","previewWindowType","refreshCookieAsync","reportUpdate","resetUploadEdits","getFormState","startRouteTransition","docConfig","entitySlug","slug","depth","lockDocumentsProp","lockDocuments","undefined","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","autosaveEnabled","Boolean","versions","drafts","autosave","preventLeaveWithoutSaving","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","abortOnChangeRef","abortOnSaveRef","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","documentLockStateRef","hasShownLockedModal","isLocked","json","controller","updatedAt","result","toISOString","doc","redirectRoute","path","push","docPreferences","state","data","renderAllFields","returnLockStatus","signal","skipValidation","current","onChange","formState","prevFormState","submitted","currentTime","timeSinceLastUpdate","updateLastEdited","lockedState","previousOwnerID","lockedUserID","currentPath","pathname","documentID","stayWithinDocumentPaths","isStayingWithinDocument","some","includes","abortOnChange","abortOnSave","shouldShowDocumentLockedModal","_jsx","_jsxs","className","disabled","method","onSuccess","isActive","onReadOnly","onTakeOver","globalLabel","label","pluralLabel","labels","plural","useAsTitle","view","fallback","toString","customComponents","permissions","readOnlyForIncomingUser","filter","join","forceSidebarWrap","readOnly","schemaPathSegments","LivePreviewClient","props","$","breakpoints","incomingUrl","t0","getEntityConfig","t1","serverURL","api","apiRoute","t2","startsWith","t3","eventType","isPopupOpen","openPopupWindow","popupRef","t4","Upload","children","fieldSchema"],"sources":["../../../src/views/LivePreview/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FormProps } from '@payloadcms/ui'\nimport type {\n ClientCollectionConfig,\n ClientConfig,\n ClientField,\n ClientGlobalConfig,\n ClientUser,\n Data,\n DocumentSlots,\n FormState,\n LivePreviewConfig,\n} from 'payload'\n\nimport {\n DocumentControls,\n DocumentFields,\n DocumentLocked,\n DocumentTakeOver,\n Form,\n LeaveWithoutSaving,\n OperationProvider,\n SetDocumentStepNav,\n SetDocumentTitle,\n useAuth,\n useConfig,\n useDocumentDrawerContext,\n useDocumentEvents,\n useDocumentInfo,\n useEditDepth,\n useRouteTransition,\n useServerFunctions,\n useTranslation,\n useUploadEdits,\n} from '@payloadcms/ui'\nimport {\n abortAndIgnore,\n handleAbortRef,\n handleBackToDashboard,\n handleGoBack,\n handleTakeOver,\n} from '@payloadcms/ui/shared'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport { useLivePreviewContext } from './Context/context.js'\nimport './index.scss'\nimport { LivePreviewProvider } from './Context/index.js'\nimport { LivePreview } from './Preview/index.js'\nimport { usePopupWindow } from './usePopupWindow.js'\n\nconst baseClass = 'live-preview'\n\ntype Props = {\n readonly apiRoute: string\n readonly collectionConfig?: ClientCollectionConfig\n readonly config: ClientConfig\n readonly fields: ClientField[]\n readonly globalConfig?: ClientGlobalConfig\n readonly schemaPath: string\n readonly serverURL: string\n} & DocumentSlots\n\nconst getAbsoluteUrl = (url) => {\n try {\n return new URL(url, window.location.origin).href\n } catch {\n return url\n }\n}\n\nconst PreviewView: React.FC<Props> = ({\n collectionConfig,\n config,\n Description,\n fields,\n globalConfig,\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n schemaPath,\n}) => {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeFields,\n collectionSlug,\n currentEditor,\n disableActions,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n getDocPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialData,\n initialState,\n isEditing,\n isInitializing,\n lastUpdateTime,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n updateDocumentEditor,\n updateSavedDocumentData,\n } = useDocumentInfo()\n\n const { onSave: onSaveFromContext } = useDocumentDrawerContext()\n\n const operation = id ? 'update' : 'create'\n\n const {\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n },\n } = useConfig()\n const router = useRouter()\n const params = useSearchParams()\n const locale = params.get('locale')\n const { t } = useTranslation()\n const { previewWindowType } = useLivePreviewContext()\n const { refreshCookieAsync, user } = useAuth()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n const { getFormState } = useServerFunctions()\n const { startRouteTransition } = useRouteTransition()\n\n const docConfig = collectionConfig || globalConfig\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const depth = useEditDepth()\n\n const lockDocumentsProp = docConfig?.lockDocuments !== undefined ? docConfig?.lockDocuments : true\n const isLockingEnabled = lockDocumentsProp !== false\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const autosaveEnabled = Boolean(\n (collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave) ||\n (globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave),\n )\n\n const preventLeaveWithoutSaving =\n typeof disableLeaveWithoutSaving !== 'undefined' ? !disableLeaveWithoutSaving : !autosaveEnabled\n\n const [isReadOnlyForIncomingUser, setIsReadOnlyForIncomingUser] = useState(false)\n const [showTakeOverModal, setShowTakeOverModal] = useState(false)\n\n const abortOnChangeRef = useRef<AbortController>(null)\n const abortOnSaveRef = useRef<AbortController>(null)\n\n const [editSessionStartTime, setEditSessionStartTime] = useState(Date.now())\n\n const lockExpiryTime = lastUpdateTime + lockDurationInMilliseconds\n\n const isLockExpired = Date.now() > lockExpiryTime\n\n const documentLockStateRef = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser | number | string\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const onSave = useCallback(\n async (json): Promise<FormState> => {\n const controller = handleAbortRef(abortOnSaveRef)\n\n reportUpdate({\n id,\n entitySlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n incrementVersionCount()\n\n if (typeof updateSavedDocumentData === 'function') {\n void updateSavedDocumentData(json?.doc || {})\n }\n\n if (typeof onSaveFromContext === 'function') {\n void onSaveFromContext({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n\n if (!isEditing && depth < 2) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${json?.doc?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n\n startRouteTransition(() => router.push(redirectRoute))\n } else {\n resetUploadEdits()\n }\n\n await getDocPermissions(json)\n\n if ((id || globalSlug) && !autosaveEnabled) {\n const docPreferences = await getDocPreferences()\n\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: json?.doc || json?.result,\n docPermissions,\n docPreferences,\n globalSlug,\n operation,\n renderAllFields: true,\n returnLockStatus: false,\n schemaPath: entitySlug,\n signal: controller.signal,\n skipValidation: true,\n })\n\n // Unlock the document after save\n if (isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n abortOnSaveRef.current = null\n\n return state\n }\n },\n [\n adminRoute,\n collectionSlug,\n depth,\n docPermissions,\n entitySlug,\n getDocPermissions,\n getDocPreferences,\n getFormState,\n globalSlug,\n id,\n incrementVersionCount,\n isEditing,\n isLockingEnabled,\n locale,\n onSaveFromContext,\n operation,\n refreshCookieAsync,\n reportUpdate,\n resetUploadEdits,\n router,\n setDocumentIsLocked,\n updateSavedDocumentData,\n startRouteTransition,\n user,\n userSlug,\n autosaveEnabled,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState, submitted }) => {\n const controller = handleAbortRef(abortOnChangeRef)\n\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const { lockedState, state } = await getFormState({\n id,\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n returnLockStatus: isLockingEnabled ? true : false,\n schemaPath,\n signal: controller.signal,\n skipValidation: !submitted,\n updateLastEdited,\n })\n\n setDocumentIsLocked(true)\n\n if (isLockingEnabled) {\n const previousOwnerID =\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id\n : documentLockStateRef.current?.user\n\n if (lockedState) {\n const lockedUserID =\n typeof lockedState.user === 'string' || typeof lockedState.user === 'number'\n ? lockedState.user\n : lockedState.user.id\n\n if (!documentLockStateRef.current || lockedUserID !== previousOwnerID) {\n if (previousOwnerID === user.id && lockedUserID !== user.id) {\n setShowTakeOverModal(true)\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n documentLockStateRef.current = documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user as ClientUser,\n }\n\n setCurrentEditor(lockedState.user as ClientUser)\n }\n }\n }\n\n abortOnChangeRef.current = null\n\n return state\n },\n [\n editSessionStartTime,\n isLockingEnabled,\n getDocPreferences,\n getFormState,\n id,\n collectionSlug,\n docPermissions,\n globalSlug,\n operation,\n schemaPath,\n setDocumentIsLocked,\n user?.id,\n setCurrentEditor,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n if (!isLockingEnabled) {\n return\n }\n\n const currentPath = window.location.pathname\n\n const documentID = id || globalSlug\n\n // Routes where we do NOT want to unlock the document\n const stayWithinDocumentPaths = ['preview', 'api', 'versions']\n\n const isStayingWithinDocument = stayWithinDocumentPaths.some((path) =>\n currentPath.includes(path),\n )\n\n // Unlock the document only if we're actually navigating away from the document\n if (documentID && documentIsLocked && !isStayingWithinDocument) {\n // Check if this user is still the current editor\n if (\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id === user?.id\n : documentLockStateRef.current?.user === user?.id\n ) {\n void unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n }\n }\n\n setShowTakeOverModal(false)\n }\n }, [\n collectionSlug,\n globalSlug,\n id,\n unlockDocument,\n user,\n setCurrentEditor,\n isLockingEnabled,\n documentIsLocked,\n setDocumentIsLocked,\n ])\n\n useEffect(() => {\n const abortOnChange = abortOnChangeRef.current\n const abortOnSave = abortOnSaveRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n abortAndIgnore(abortOnSave)\n }\n })\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n (typeof currentEditor === 'object'\n ? currentEditor.id !== user?.id\n : currentEditor !== user?.id) &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n // eslint-disable-next-line react-compiler/react-compiler\n !documentLockStateRef.current?.hasShownLockedModal &&\n !isLockExpired\n\n return (\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || !hasSavePermission}\n initialState={initialState}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isLockingEnabled && shouldShowDocumentLockedModal && !isReadOnlyForIncomingUser && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n false,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n )\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {!isReadOnlyForIncomingUser && preventLeaveWithoutSaving && <LeaveWithoutSaving />}\n <SetDocumentStepNav\n collectionSlug={collectionSlug}\n globalLabel={globalConfig?.label}\n globalSlug={globalSlug}\n id={id}\n pluralLabel={collectionConfig ? collectionConfig?.labels?.plural : undefined}\n useAsTitle={collectionConfig ? collectionConfig?.admin?.useAsTitle : undefined}\n view={t('general:livePreview')}\n />\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={id?.toString() || ''}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n customComponents={{\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n }}\n data={initialData}\n disableActions={disableActions}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n true,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n setIsReadOnlyForIncomingUser,\n )\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <div\n className={[baseClass, previewWindowType === 'popup' && `${baseClass}--detached`]\n .filter(Boolean)\n .join(' ')}\n >\n <div\n className={[\n `${baseClass}__main`,\n previewWindowType === 'popup' && `${baseClass}__main--popup-open`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={BeforeFields}\n Description={Description}\n docPermissions={docPermissions}\n fields={fields}\n forceSidebarWrap\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission}\n schemaPathSegments={[collectionSlug || globalSlug]}\n />\n {AfterDocument}\n </div>\n <LivePreview collectionSlug={collectionSlug} globalSlug={globalSlug} />\n </div>\n </Form>\n </OperationProvider>\n )\n}\n\nexport const LivePreviewClient: React.FC<\n {\n readonly breakpoints: LivePreviewConfig['breakpoints']\n readonly initialData: Data\n readonly url: string\n } & DocumentSlots\n> = (props) => {\n const { breakpoints, url: incomingUrl } = props\n const { collectionSlug, globalSlug } = useDocumentInfo()\n\n const {\n config,\n config: {\n routes: { api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const url =\n incomingUrl.startsWith('http://') || incomingUrl.startsWith('https://')\n ? incomingUrl\n : getAbsoluteUrl(incomingUrl)\n\n const { isPopupOpen, openPopupWindow, popupRef } = usePopupWindow({\n eventType: 'payload-live-preview',\n url,\n })\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const globalConfig = getEntityConfig({ globalSlug })\n\n const schemaPath = collectionSlug || globalSlug\n\n return (\n <Fragment>\n <LivePreviewProvider\n breakpoints={breakpoints}\n fieldSchema={collectionConfig?.fields || globalConfig?.fields}\n isPopupOpen={isPopupOpen}\n openPopupWindow={openPopupWindow}\n popupRef={popupRef}\n url={url}\n >\n <PreviewView\n apiRoute={apiRoute}\n collectionConfig={collectionConfig}\n config={config}\n Description={props.Description}\n fields={(collectionConfig || globalConfig)?.fields}\n globalConfig={globalConfig}\n PreviewButton={props.PreviewButton}\n PublishButton={props.PublishButton}\n SaveButton={props.SaveButton}\n SaveDraftButton={props.SaveDraftButton}\n schemaPath={schemaPath}\n serverURL={serverURL}\n Upload={props.Upload}\n />\n </LivePreviewProvider>\n </Fragment>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAcA,SACEC,gBAAgB,EAChBC,cAAc,EACdC,cAAc,EACdC,gBAAgB,EAChBC,IAAI,EACJC,kBAAkB,EAClBC,iBAAiB,EACjBC,kBAAkB,EAClBC,gBAAgB,EAChBC,OAAO,EACPC,SAAS,EACTC,wBAAwB,EACxBC,iBAAiB,EACjBC,eAAe,EACfC,YAAY,EACZC,kBAAkB,EAClBC,kBAAkB,EAClBC,cAAc,EACdC,cAAc,QACT;AACP,SACEC,cAAc,EACdC,cAAc,EACdC,qBAAqB,EACrBC,YAAY,EACZC,cAAc,QACT;AACP,SAASC,SAAS,EAAEC,eAAe,QAAQ;AAC3C,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,IAASC,QAAQ,EAAEC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAE1E,SAASC,qBAAqB,QAAQ;AAEtC,SAASC,mBAAmB,QAAQ;AACpC,SAASC,WAAW,QAAQ;AAC5B,SAASC,cAAc,QAAQ;AAE/B,MAAMC,SAAA,GAAY;AAYlB,MAAMC,cAAA,GAAkBC,GAAA;EACtB,IAAI;IACF,OAAO,IAAIC,GAAA,CAAID,GAAA,EAAKE,MAAA,CAAOC,QAAQ,CAACC,MAAM,EAAEC,IAAI;EAClD,EAAE,MAAM;IACN,OAAOL,GAAA;EACT;AACF;AAEA,MAAMM,WAAA,GAA+BA,CAAC;EACpCC,gBAAgB;EAChBC,MAAM;EACNC,WAAW;EACXC,MAAM;EACNC,YAAY;EACZC,aAAa;EACbC,aAAa;EACbC,UAAU;EACVC,eAAe;EACfC;AAAU,CACX;EACC,MAAM;IACJC,EAAE;IACFC,MAAM;IACNC,aAAa;IACbC,WAAW;IACXC,MAAM;IACNC,YAAY;IACZC,cAAc;IACdC,aAAa;IACbC,cAAc;IACdC,yBAAyB;IACzBC,cAAc;IACdC,gBAAgB;IAChBC,iBAAiB;IACjBC,iBAAiB;IACjBC,UAAU;IACVC,oBAAoB;IACpBC,iBAAiB;IACjBC,qBAAqB;IACrBC,WAAW;IACXC,YAAY;IACZC,SAAS;IACTC,cAAc;IACdC,cAAc;IACdC,gBAAgB;IAChBC,mBAAmB;IACnBC,cAAc;IACdC,oBAAoB;IACpBC;EAAuB,CACxB,GAAGtE,eAAA;EAEJ,MAAM;IAAEuE,MAAA,EAAQC;EAAiB,CAAE,GAAG1E,wBAAA;EAEtC,MAAM2E,SAAA,GAAY9B,EAAA,GAAK,WAAW;EAElC,MAAM;IACJT,MAAA,EAAQ;MACNwC,KAAA,EAAO;QAAEC,IAAA,EAAMC;MAAQ,CAAE;MACzBC,MAAA,EAAQ;QAAEH,KAAA,EAAOI;MAAU;IAAE;EAC9B,CACF,GAAGjF,SAAA;EACJ,MAAMkF,MAAA,GAASpE,SAAA;EACf,MAAMqE,MAAA,GAASpE,eAAA;EACf,MAAMqE,MAAA,GAASD,MAAA,CAAOE,GAAG,CAAC;EAC1B,MAAM;IAAEC;EAAC,CAAE,GAAG/E,cAAA;EACd,MAAM;IAAEgF;EAAiB,CAAE,GAAGhE,qBAAA;EAC9B,MAAM;IAAEiE,kBAAkB;IAAEV;EAAI,CAAE,GAAG/E,OAAA;EACrC,MAAM;IAAE0F;EAAY,CAAE,GAAGvF,iBAAA;EACzB,MAAM;IAAEwF;EAAgB,CAAE,GAAGlF,cAAA;EAC7B,MAAM;IAAEmF;EAAY,CAAE,GAAGrF,kBAAA;EACzB,MAAM;IAAEsF;EAAoB,CAAE,GAAGvF,kBAAA;EAEjC,MAAMwF,SAAA,GAAYzD,gBAAA,IAAoBI,YAAA;EAEtC,MAAMsD,UAAA,GAAa1D,gBAAA,EAAkB2D,IAAA,IAAQvD,YAAA,EAAcuD,IAAA;EAE3D,MAAMC,KAAA,GAAQ5F,YAAA;EAEd,MAAM6F,iBAAA,GAAoBJ,SAAA,EAAWK,aAAA,KAAkBC,SAAA,GAAYN,SAAA,EAAWK,aAAA,GAAgB;EAC9F,MAAME,gBAAA,GAAmBH,iBAAA,KAAsB;EAE/C,MAAMI,mBAAA,GAAsB,IAAI;EAAA;EAChC,MAAMC,YAAA,GACJ,OAAOL,iBAAA,KAAsB,WAAWA,iBAAA,CAAkBM,QAAQ,GAAGF,mBAAA;EACvE,MAAMG,0BAAA,GAA6BF,YAAA,GAAe;EAElD,MAAMG,eAAA,GAAkBC,OAAA,CACtBtE,gBAAC,EAAkBuE,QAAA,EAAUC,MAAA,IAAUxE,gBAAA,EAAkBuE,QAAA,EAAUC,MAAA,EAAQC,QAAA,IACxErE,YAAA,EAAcmE,QAAA,EAAUC,MAAA,IAAUpE,YAAA,EAAcmE,QAAA,EAAUC,MAAA,EAAQC,QAAA;EAGvE,MAAMC,yBAAA,GACJ,OAAOvD,yBAAA,KAA8B,cAAc,CAACA,yBAAA,GAA4B,CAACkD,eAAA;EAEnF,MAAM,CAACM,yBAAA,EAA2BC,4BAAA,CAA6B,GAAG1F,QAAA,CAAS;EAC3E,MAAM,CAAC2F,iBAAA,EAAmBC,oBAAA,CAAqB,GAAG5F,QAAA,CAAS;EAE3D,MAAM6F,gBAAA,GAAmB9F,MAAA,CAAwB;EACjD,MAAM+F,cAAA,GAAiB/F,MAAA,CAAwB;EAE/C,MAAM,CAACgG,oBAAA,EAAsBC,uBAAA,CAAwB,GAAGhG,QAAA,CAASiG,IAAA,CAAKC,GAAG;EAEzE,MAAMC,cAAA,GAAiBrD,cAAA,GAAiBoC,0BAAA;EAExC,MAAMkB,aAAA,GAAgBH,IAAA,CAAKC,GAAG,KAAKC,cAAA;EAEnC,MAAME,oBAAA,GAAuBtG,MAAA,CAInB;IACRuG,mBAAA,EAAqB;IACrBC,QAAA,EAAU;IACV/C,IAAA,EAAM;EACR;EAEA,MAAMJ,MAAA,GAASvD,WAAA,CACb,MAAO2G,IAAA;IACL,MAAMC,UAAA,GAAarH,cAAA,CAAe0G,cAAA;IAElC3B,YAAA,CAAa;MACX3C,EAAA;MACAgD,UAAA;MACAkC,SAAA,EAAWF,IAAA,EAAMG,MAAA,EAAQD,SAAA,IAAa,IAAIT,IAAA,GAAOW,WAAW;IAC9D;IAEA;IACA;IACA,IAAIpD,IAAA,IAAQ1B,cAAA,KAAmB2B,QAAA,IAAYjC,EAAA,KAAOgC,IAAA,CAAKhC,EAAE,EAAE;MACzD,KAAK0C,kBAAA;IACP;IAEAzB,qBAAA;IAEA,IAAI,OAAOU,uBAAA,KAA4B,YAAY;MACjD,KAAKA,uBAAA,CAAwBqD,IAAA,EAAMK,GAAA,IAAO,CAAC;IAC7C;IAEA,IAAI,OAAOxD,iBAAA,KAAsB,YAAY;MAC3C,KAAKA,iBAAA,CAAkB;QACrB,GAAGmD,IAAI;QACPlD,SAAA,EAAW9B,EAAA,GAAK,WAAW;MAC7B;IACF;IAEA,IAAI,CAACoB,SAAA,IAAa8B,KAAA,GAAQ,GAAG;MAC3B;MACA,MAAMoC,aAAA,GAAgBpH,cAAA,CAAe;QACnCiE,UAAA;QACAoD,IAAA,EAAM,gBAAgBjF,cAAA,IAAkB0E,IAAA,EAAMK,GAAA,EAAKrF,EAAA,GAAKsC,MAAA,GAAS,WAAWA,MAAA,EAAQ,GAAG;MACzF;MAEAQ,oBAAA,CAAqB,MAAMV,MAAA,CAAOoD,IAAI,CAACF,aAAA;IACzC,OAAO;MACL1C,gBAAA;IACF;IAEA,MAAMhC,iBAAA,CAAkBoE,IAAA;IAExB,IAAI,CAAChF,EAAA,IAAMc,UAAS,KAAM,CAAC6C,eAAA,EAAiB;MAC1C,MAAM8B,cAAA,GAAiB,MAAM5E,iBAAA;MAE7B,MAAM;QAAE6E;MAAK,CAAE,GAAG,MAAM7C,YAAA,CAAa;QACnC7C,EAAA;QACAM,cAAA;QACAqF,IAAA,EAAMX,IAAA,EAAMK,GAAA,IAAOL,IAAA,EAAMG,MAAA;QACzBzE,cAAA;QACA+E,cAAA;QACA3E,UAAA;QACAgB,SAAA;QACA8D,eAAA,EAAiB;QACjBC,gBAAA,EAAkB;QAClB9F,UAAA,EAAYiD,UAAA;QACZ8C,MAAA,EAAQb,UAAA,CAAWa,MAAM;QACzBC,cAAA,EAAgB;MAClB;MAEA;MACA,IAAIzC,gBAAA,EAAkB;QACpB9B,mBAAA,CAAoB;MACtB;MAEA8C,cAAA,CAAe0B,OAAO,GAAG;MAEzB,OAAON,KAAA;IACT;EACF,GACA,CACEvD,UAAA,EACA7B,cAAA,EACA4C,KAAA,EACAxC,cAAA,EACAsC,UAAA,EACApC,iBAAA,EACAC,iBAAA,EACAgC,YAAA,EACA/B,UAAA,EACAd,EAAA,EACAiB,qBAAA,EACAG,SAAA,EACAkC,gBAAA,EACAhB,MAAA,EACAT,iBAAA,EACAC,SAAA,EACAY,kBAAA,EACAC,YAAA,EACAC,gBAAA,EACAR,MAAA,EACAZ,mBAAA,EACAG,uBAAA,EACAmB,oBAAA,EACAd,IAAA,EACAC,QAAA,EACA0B,eAAA,CACD;EAGH,MAAMsC,QAAA,GAAqC5H,WAAA,CACzC,OAAO;IAAE6H,SAAA,EAAWC,aAAa;IAAEC;EAAS,CAAE;IAC5C,MAAMnB,YAAA,GAAarH,cAAA,CAAeyG,gBAAA;IAElC,MAAMgC,WAAA,GAAc5B,IAAA,CAAKC,GAAG;IAC5B,MAAM4B,mBAAA,GAAsBD,WAAA,GAAc9B,oBAAA;IAE1C,MAAMgC,gBAAA,GAAmBjD,gBAAA,IAAoBgD,mBAAA,IAAuB,MAAM;IAAA;IAE1E,IAAIC,gBAAA,EAAkB;MACpB/B,uBAAA,CAAwB6B,WAAA;IAC1B;IAEA,MAAMZ,gBAAA,GAAiB,MAAM5E,iBAAA;IAE7B,MAAM;MAAE2F,WAAW;MAAEd,KAAK,EAALA;IAAK,CAAE,GAAG,MAAM7C,YAAA,CAAa;MAChD7C,EAAA;MACAM,cAAA;MACAI,cAAA;MACA+E,cAAA,EAAAA,gBAAA;MACAS,SAAA,EAAWC,aAAA;MACXrF,UAAA;MACAgB,SAAA;MACA+D,gBAAA,EAAkBvC,gBAAA,GAAmB,OAAO;MAC5CvD,UAAA;MACA+F,MAAA,EAAQb,YAAA,CAAWa,MAAM;MACzBC,cAAA,EAAgB,CAACK,SAAA;MACjBG;IACF;IAEA/E,mBAAA,CAAoB;IAEpB,IAAI8B,gBAAA,EAAkB;MACpB,MAAMmD,eAAA,GACJ,OAAO5B,oBAAA,CAAqBmB,OAAO,EAAEhE,IAAA,KAAS,WAC1C6C,oBAAA,CAAqBmB,OAAO,EAAEhE,IAAA,EAAMhC,EAAA,GACpC6E,oBAAA,CAAqBmB,OAAO,EAAEhE,IAAA;MAEpC,IAAIwE,WAAA,EAAa;QACf,MAAME,YAAA,GACJ,OAAOF,WAAA,CAAYxE,IAAI,KAAK,YAAY,OAAOwE,WAAA,CAAYxE,IAAI,KAAK,WAChEwE,WAAA,CAAYxE,IAAI,GAChBwE,WAAA,CAAYxE,IAAI,CAAChC,EAAE;QAEzB,IAAI,CAAC6E,oBAAA,CAAqBmB,OAAO,IAAIU,YAAA,KAAiBD,eAAA,EAAiB;UACrE,IAAIA,eAAA,KAAoBzE,IAAA,CAAKhC,EAAE,IAAI0G,YAAA,KAAiB1E,IAAA,CAAKhC,EAAE,EAAE;YAC3DoE,oBAAA,CAAqB;YACrBS,oBAAA,CAAqBmB,OAAO,CAAClB,mBAAmB,GAAG;UACrD;UAEAD,oBAAA,CAAqBmB,OAAO,GAAGnB,oBAAA,CAAqBmB,OAAO,GAAG;YAC5DlB,mBAAA,EAAqBD,oBAAA,CAAqBmB,OAAO,EAAElB,mBAAA,IAAuB;YAC1EC,QAAA,EAAU;YACV/C,IAAA,EAAMwE,WAAA,CAAYxE;UACpB;UAEAT,gBAAA,CAAiBiF,WAAA,CAAYxE,IAAI;QACnC;MACF;IACF;IAEAqC,gBAAA,CAAiB2B,OAAO,GAAG;IAE3B,OAAON,OAAA;EACT,GACA,CACEnB,oBAAA,EACAjB,gBAAA,EACAzC,iBAAA,EACAgC,YAAA,EACA7C,EAAA,EACAM,cAAA,EACAI,cAAA,EACAI,UAAA,EACAgB,SAAA,EACA/B,UAAA,EACAyB,mBAAA,EACAQ,IAAA,EAAMhC,EAAA,EACNuB,gBAAA,CACD;EAGH;EACAjD,SAAA,CAAU;IACR,OAAO;MACL,IAAI,CAACgF,gBAAA,EAAkB;QACrB;MACF;MAEA,MAAMqD,WAAA,GAAc1H,MAAA,CAAOC,QAAQ,CAAC0H,QAAQ;MAE5C,MAAMC,UAAA,GAAa7G,EAAA,IAAMc,UAAA;MAEzB;MACA,MAAMgG,uBAAA,GAA0B,CAAC,WAAW,OAAO,WAAW;MAE9D,MAAMC,uBAAA,GAA0BD,uBAAA,CAAwBE,IAAI,CAAEzB,IAAA,IAC5DoB,WAAA,CAAYM,QAAQ,CAAC1B,IAAA;MAGvB;MACA,IAAIsB,UAAA,IAAclG,gBAAA,IAAoB,CAACoG,uBAAA,EAAyB;QAC9D;QACA,IACE,OAAOlC,oBAAA,CAAqBmB,OAAO,EAAEhE,IAAA,KAAS,WAC1C6C,oBAAA,CAAqBmB,OAAO,EAAEhE,IAAA,EAAMhC,EAAA,KAAOgC,IAAA,EAAMhC,EAAA,GACjD6E,oBAAA,CAAqBmB,OAAO,EAAEhE,IAAA,KAASA,IAAA,EAAMhC,EAAA,EACjD;UACA,KAAKyB,cAAA,CAAezB,EAAA,EAAIM,cAAA,IAAkBQ,UAAA;UAC1CU,mBAAA,CAAoB;UACpBD,gBAAA,CAAiB;QACnB;MACF;MAEA6C,oBAAA,CAAqB;IACvB;EACF,GAAG,CACD9D,cAAA,EACAQ,UAAA,EACAd,EAAA,EACAyB,cAAA,EACAO,IAAA,EACAT,gBAAA,EACA+B,gBAAA,EACA3C,gBAAA,EACAa,mBAAA,CACD;EAEDlD,SAAA,CAAU;IACR,MAAM4I,aAAA,GAAgB7C,gBAAA,CAAiB2B,OAAO;IAC9C,MAAMmB,WAAA,GAAc7C,cAAA,CAAe0B,OAAO;IAE1C,OAAO;MACLrI,cAAA,CAAeuJ,aAAA;MACfvJ,cAAA,CAAewJ,WAAA;IACjB;EACF;EAEA,MAAMC,6BAAA,GACJzG,gBAAA,IACAJ,aAAA,KACC,OAAOA,aAAA,KAAkB,WACtBA,aAAA,CAAcP,EAAE,KAAKgC,IAAA,EAAMhC,EAAA,GAC3BO,aAAA,KAAkByB,IAAA,EAAMhC,EAAC,KAC7B,CAACiE,yBAAA,IACD,CAACE,iBAAA;EACD;EACA,CAACU,oBAAA,CAAqBmB,OAAO,EAAElB,mBAAA,IAC/B,CAACF,aAAA;EAEH,oBACEyC,IAAA,CAACvK,iBAAA;IAAkBgF,SAAA,EAAWA,SAAA;cAC5B,aAAAwF,KAAA,CAAC1K,IAAA;MACCqD,MAAA,EAAQA,MAAA;MACRsH,SAAA,EAAW,GAAG1I,SAAA,QAAiB;MAC/B2I,QAAA,EAAUvD,yBAAA,IAA6B,CAACjD,iBAAA;MACxCG,YAAA,EAAcA,YAAA;MACdE,cAAA,EAAgBA,cAAA;MAChBoG,MAAA,EAAQzH,EAAA,GAAK,UAAU;MACvBiG,QAAA,EAAU,CAACA,QAAA,CAAS;MACpByB,SAAA,EAAW9F,MAAA;iBAEV0B,gBAAA,IAAoB8D,6BAAA,IAAiC,CAACnD,yBAAA,iBACrDoD,IAAA,CAAC3K,cAAA;QACCoB,YAAA,EAAcA,CAAA,KAAMA,YAAA,CAAa;UAAEqE,UAAA;UAAY7B,cAAA;UAAgB8B;QAAO;QACtEuF,QAAA,EAAUP,6BAAA;QACVQ,UAAA,EAAYA,CAAA;UACV1D,4BAAA,CAA6B;UAC7BE,oBAAA,CAAqB;QACvB;QACAyD,UAAA,EAAYA,CAAA,KACV9J,cAAA,CACEiC,EAAA,EACAM,cAAA,EACAQ,UAAA,EACAkB,IAAA,EACA,OACAN,oBAAA,EACAH,gBAAA,EACAsD,oBAAA,EACAvB,gBAAA;QAGJ4B,SAAA,EAAW5D,cAAA;QACXU,IAAA,EAAMzB;UAGT+C,gBAAA,IAAoBa,iBAAA,iBACnBkD,IAAA,CAAC1K,gBAAA;QACCkB,qBAAA,EAAuBA,CAAA,KAAMA,qBAAA,CAAsB;UAAEsE,UAAA;UAAYC;QAAO;QACxEuF,QAAA,EAAUxD,iBAAA;QACVyD,UAAA,EAAYA,CAAA;UACV1D,4BAAA,CAA6B;UAC7BE,oBAAA,CAAqB;QACvB;UAGH,CAACH,yBAAA,IAA6BD,yBAAA,iBAA6BqD,IAAA,CAACxK,kBAAA,O,aAC7DwK,IAAA,CAACtK,kBAAA;QACCuD,cAAA,EAAgBA,cAAA;QAChBwH,WAAA,EAAapI,YAAA,EAAcqI,KAAA;QAC3BjH,UAAA,EAAYA,UAAA;QACZd,EAAA,EAAIA,EAAA;QACJgI,WAAA,EAAa1I,gBAAA,GAAmBA,gBAAA,EAAkB2I,MAAA,EAAQC,MAAA,GAAS7E,SAAA;QACnE8E,UAAA,EAAY7I,gBAAA,GAAmBA,gBAAA,EAAkByC,KAAA,EAAOoG,UAAA,GAAa9E,SAAA;QACrE+E,IAAA,EAAM5F,CAAA,CAAE;uBAEV6E,IAAA,CAACrK,gBAAA;QACCsC,gBAAA,EAAkBA,gBAAA;QAClBC,MAAA,EAAQA,MAAA;QACR8I,QAAA,EAAUrI,EAAA,EAAIsI,QAAA,MAAc;QAC5B5I,YAAA,EAAcA;uBAEhB2H,IAAA,CAAC7K,gBAAA;QACC4D,MAAA,EAAQA,MAAA;QACRmI,gBAAA,EAAkB;UAChB5I,aAAA;UACAC,aAAA;UACAC,UAAA;UACAC;QACF;QACA6F,IAAA,EAAMzE,WAAA;QACNV,cAAA,EAAgBA,cAAA;QAChBO,oBAAA,EAAsBA,oBAAA;QACtBC,iBAAA,EAAmBA,iBAAA;QACnBhB,EAAA,EAAIA,EAAA;QACJoB,SAAA,EAAWA,SAAA;QACXyG,UAAA,EAAYA,CAAA,KACV9J,cAAA,CACEiC,EAAA,EACAM,cAAA,EACAQ,UAAA,EACAkB,IAAA,EACA,MACAN,oBAAA,EACAH,gBAAA,EACAsD,oBAAA,EACAvB,gBAAA,EACAY,4BAAA;QAGJsE,WAAA,EAAa9H,cAAA;QACb+H,uBAAA,EAAyBxE,yBAAA;QACzBhB,IAAA,EAAM3D,gBAAA,EAAkB2D,IAAA,IAAQvD,YAAA,EAAcuD,IAAA;QAC9CjB,IAAA,EAAMzB;uBAER+G,KAAA,CAAC;QACCC,SAAA,EAAW,CAAC1I,SAAA,EAAW4D,iBAAA,KAAsB,WAAW,GAAG5D,SAAA,YAAqB,CAAC,CAC9E6J,MAAM,CAAC9E,OAAA,EACP+E,IAAI,CAAC;gCAERrB,KAAA,CAAC;UACCC,SAAA,EAAW,CACT,GAAG1I,SAAA,QAAiB,EACpB4D,iBAAA,KAAsB,WAAW,GAAG5D,SAAA,oBAA6B,CAClE,CACE6J,MAAM,CAAC9E,OAAA,EACP+E,IAAI,CAAC;kCAERtB,IAAA,CAAC5K,cAAA;YACC0D,WAAA,EAAaA,WAAA;YACbE,YAAA,EAAcA,YAAA;YACdb,WAAA,EAAaA,WAAA;YACbkB,cAAA,EAAgBA,cAAA;YAChBjB,MAAA,EAAQA,MAAA;YACRmJ,gBAAgB;YAChBC,QAAA,EAAU5E,yBAAA,IAA6B,CAACjD,iBAAA;YACxC8H,kBAAA,EAAoB,CAACxI,cAAA,IAAkBQ,UAAA;cAExCZ,aAAA;yBAEHmH,IAAA,CAAC1I,WAAA;UAAY2B,cAAA,EAAgBA,cAAA;UAAgBQ,UAAA,EAAYA;;;;;AAKnE;AAEA,OAAO,MAAMiI,iBAAA,GAMTC,KAAA;EAAA,MAAAC,CAAA,GAAA1M,EAAA;EACF;IAAA2M,WAAA;IAAAnK,GAAA,EAAAoK;EAAA,IAA0CH,KAAA;EAC1C;IAAA1I,cAAA;IAAAQ;EAAA,IAAuCzD,eAAA;EAEvC;IAAAkC,MAAA;IAAAA,MAAA,EAAA6J,EAAA;IAAAC;EAAA,IAOInM,SAAA;EALM;IAAAgF,MAAA,EAAAoH,EAAA;IAAAC;EAAA,IAAAH,EAGP;EAFS;IAAAI,GAAA,EAAAC;EAAA,IAAAH,EAAiB;EAAA,IAAAI,EAAA;EAAA,IAAAT,CAAA,QAAAE,WAAA;IAO3BO,EAAA,GAAAP,WAAA,CAAAQ,UAAA,CAAuB,cAAcR,WAAA,CAAAQ,UAAA,CAAuB,cACxDR,WAAA,GACArK,cAAA,CAAeqK,WAAA;IAAAF,CAAA,MAAAE,WAAA;IAAAF,CAAA,MAAAS,EAAA;EAAA;IAAAA,EAAA,GAAAT,CAAA;EAAA;EAHrB,MAAAlK,GAAA,GACE2K,EAEmB;EAAA,IAAAE,EAAA;EAAA,IAAAX,CAAA,QAAAlK,GAAA;IAE6C6K,EAAA;MAAAC,SAAA,EACrD;MAAA9K;IAAA;IAEbkK,CAAA,MAAAlK,GAAA;IAAAkK,CAAA,MAAAW,EAAA;EAAA;IAAAA,EAAA,GAAAX,CAAA;EAAA;EAHA;IAAAa,WAAA;IAAAC,eAAA;IAAAC;EAAA,IAAmDpL,cAAA,CAAegL,EAGlE;EAAA,IAAAK,EAAA;EAAA,IAAAhB,CAAA,QAAAQ,QAAA,IAAAR,CAAA,QAAAC,WAAA,IAAAD,CAAA,QAAA3I,cAAA,IAAA2I,CAAA,QAAA1J,MAAA,IAAA0J,CAAA,QAAAI,eAAA,IAAAJ,CAAA,QAAAnI,UAAA,IAAAmI,CAAA,SAAAa,WAAA,IAAAb,CAAA,SAAAc,eAAA,IAAAd,CAAA,SAAAe,QAAA,IAAAf,CAAA,SAAAD,KAAA,CAAAxJ,WAAA,IAAAyJ,CAAA,SAAAD,KAAA,CAAArJ,aAAA,IAAAsJ,CAAA,SAAAD,KAAA,CAAApJ,aAAA,IAAAqJ,CAAA,SAAAD,KAAA,CAAAnJ,UAAA,IAAAoJ,CAAA,SAAAD,KAAA,CAAAlJ,eAAA,IAAAmJ,CAAA,SAAAD,KAAA,CAAAkB,MAAA,IAAAjB,CAAA,SAAAM,SAAA,IAAAN,CAAA,SAAAlK,GAAA;IAEA,MAAAO,gBAAA,GAAyB+J,eAAA;MAAA/I;IAAA,CAAiC;IAE1D,MAAAZ,YAAA,GAAqB2J,eAAA;MAAAvI;IAAA,CAA6B;IAElD,MAAAf,UAAA,GAAmBO,cAAA,IAAkBQ,UAAA;IAGnCmJ,EAAA,GAAA5C,IAAA,CAAAjJ,QAAA;MAAA+L,QAAA,EACE9C,IAAA,CAAA3I,mBAAA;QAAAwK,WAAA;QAAAkB,WAAA,EAEe9K,gBAAA,EAAAG,MAAA,IAA4BC,YAAA,EAAAD,MAAc;QAAAqK,WAAA;QAAAC,eAAA;QAAAC,QAAA;QAAAjL,GAAA;QAAAoL,QAAA,EAMvD9C,IAAA,CAAAhI,WAAA;UAAAoK,QAAA;UAAAnK,gBAAA;UAAAC,MAAA;UAAAC,WAAA,EAIewJ,KAAA,CAAAxJ,WAAA;UAAAC,MAAA,GACJH,gBAAA,IAAoBI,YAAW,GAAAD,MAAA;UAAAC,YAAA;UAAAC,aAAA,EAEzBqJ,KAAA,CAAArJ,aAAA;UAAAC,aAAA,EACAoJ,KAAA,CAAApJ,aAAA;UAAAC,UAAA,EACHmJ,KAAA,CAAAnJ,UAAA;UAAAC,eAAA,EACKkJ,KAAA,CAAAlJ,eAAA;UAAAC,UAAA;UAAAwJ,SAAA;UAAAW,MAAA,EAGTlB,KAAA,CAAAkB;QAAA,C;;;;;;;;;;;;;;;;;;;;;;;;SAtBdD,E;CA2BJ","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.client.js","names":["c","_c","DocumentControls","DocumentFields","DocumentLocked","DocumentTakeOver","Form","LeaveWithoutSaving","OperationProvider","SetDocumentStepNav","SetDocumentTitle","useAuth","useConfig","useDocumentDrawerContext","useDocumentEvents","useDocumentInfo","useEditDepth","useRouteTransition","useServerFunctions","useTranslation","useUploadEdits","abortAndIgnore","handleAbortRef","handleBackToDashboard","handleGoBack","handleTakeOver","useRouter","useSearchParams","formatAdminURL","React","Fragment","useCallback","useEffect","useRef","useState","useLivePreviewContext","LivePreviewProvider","LivePreview","usePopupWindow","baseClass","getAbsoluteUrl","url","URL","window","location","origin","href","PreviewView","BeforeDocumentControls","collectionConfig","config","Description","fields","globalConfig","PreviewButton","PublishButton","SaveButton","SaveDraftButton","schemaPath","id","action","AfterDocument","AfterFields","apiURL","BeforeFields","collectionSlug","currentEditor","disableActions","disableLeaveWithoutSaving","docPermissions","documentIsLocked","getDocPermissions","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","incrementVersionCount","initialData","initialState","isEditing","isInitializing","lastUpdateTime","setCurrentEditor","setDocumentIsLocked","unlockDocument","updateDocumentEditor","updateSavedDocumentData","onSave","onSaveFromContext","operation","admin","user","userSlug","routes","adminRoute","router","params","locale","get","t","previewWindowType","refreshCookieAsync","reportUpdate","resetUploadEdits","getFormState","startRouteTransition","docConfig","entitySlug","slug","depth","lockDocumentsProp","lockDocuments","undefined","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","autosaveEnabled","Boolean","versions","drafts","autosave","preventLeaveWithoutSaving","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","abortOnChangeRef","abortOnSaveRef","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","documentLockStateRef","hasShownLockedModal","isLocked","json","controller","updatedAt","result","toISOString","doc","redirectRoute","path","push","docPreferences","state","data","renderAllFields","returnLockStatus","signal","skipValidation","current","onChange","formState","prevFormState","submitted","currentTime","timeSinceLastUpdate","updateLastEdited","lockedState","previousOwnerID","lockedUserID","currentPath","pathname","documentID","stayWithinDocumentPaths","isStayingWithinDocument","some","includes","abortOnChange","abortOnSave","shouldShowDocumentLockedModal","_jsx","_jsxs","className","disabled","method","onSuccess","isActive","onReadOnly","onTakeOver","globalLabel","label","pluralLabel","labels","plural","useAsTitle","view","fallback","toString","customComponents","permissions","readOnlyForIncomingUser","filter","join","forceSidebarWrap","readOnly","schemaPathSegments","LivePreviewClient","props","$","breakpoints","incomingUrl","t0","getEntityConfig","t1","serverURL","api","apiRoute","t2","startsWith","t3","eventType","isPopupOpen","openPopupWindow","popupRef","t4","Upload","children","fieldSchema"],"sources":["../../../src/views/LivePreview/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FormProps } from '@payloadcms/ui'\nimport type {\n ClientCollectionConfig,\n ClientConfig,\n ClientField,\n ClientGlobalConfig,\n ClientUser,\n Data,\n DocumentSlots,\n FormState,\n LivePreviewConfig,\n} from 'payload'\n\nimport {\n DocumentControls,\n DocumentFields,\n DocumentLocked,\n DocumentTakeOver,\n Form,\n LeaveWithoutSaving,\n OperationProvider,\n SetDocumentStepNav,\n SetDocumentTitle,\n useAuth,\n useConfig,\n useDocumentDrawerContext,\n useDocumentEvents,\n useDocumentInfo,\n useEditDepth,\n useRouteTransition,\n useServerFunctions,\n useTranslation,\n useUploadEdits,\n} from '@payloadcms/ui'\nimport {\n abortAndIgnore,\n handleAbortRef,\n handleBackToDashboard,\n handleGoBack,\n handleTakeOver,\n} from '@payloadcms/ui/shared'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport { useLivePreviewContext } from './Context/context.js'\nimport './index.scss'\nimport { LivePreviewProvider } from './Context/index.js'\nimport { LivePreview } from './Preview/index.js'\nimport { usePopupWindow } from './usePopupWindow.js'\n\nconst baseClass = 'live-preview'\n\ntype Props = {\n readonly apiRoute: string\n readonly collectionConfig?: ClientCollectionConfig\n readonly config: ClientConfig\n readonly fields: ClientField[]\n readonly globalConfig?: ClientGlobalConfig\n readonly schemaPath: string\n readonly serverURL: string\n} & DocumentSlots\n\nconst getAbsoluteUrl = (url) => {\n try {\n return new URL(url, window.location.origin).href\n } catch {\n return url\n }\n}\n\nconst PreviewView: React.FC<Props> = ({\n BeforeDocumentControls,\n collectionConfig,\n config,\n Description,\n fields,\n globalConfig,\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n schemaPath,\n}) => {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeFields,\n collectionSlug,\n currentEditor,\n disableActions,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n getDocPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialData,\n initialState,\n isEditing,\n isInitializing,\n lastUpdateTime,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n updateDocumentEditor,\n updateSavedDocumentData,\n } = useDocumentInfo()\n\n const { onSave: onSaveFromContext } = useDocumentDrawerContext()\n\n const operation = id ? 'update' : 'create'\n\n const {\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n },\n } = useConfig()\n const router = useRouter()\n const params = useSearchParams()\n const locale = params.get('locale')\n const { t } = useTranslation()\n const { previewWindowType } = useLivePreviewContext()\n const { refreshCookieAsync, user } = useAuth()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n const { getFormState } = useServerFunctions()\n const { startRouteTransition } = useRouteTransition()\n\n const docConfig = collectionConfig || globalConfig\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const depth = useEditDepth()\n\n const lockDocumentsProp = docConfig?.lockDocuments !== undefined ? docConfig?.lockDocuments : true\n const isLockingEnabled = lockDocumentsProp !== false\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const autosaveEnabled = Boolean(\n (collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave) ||\n (globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave),\n )\n\n const preventLeaveWithoutSaving =\n typeof disableLeaveWithoutSaving !== 'undefined' ? !disableLeaveWithoutSaving : !autosaveEnabled\n\n const [isReadOnlyForIncomingUser, setIsReadOnlyForIncomingUser] = useState(false)\n const [showTakeOverModal, setShowTakeOverModal] = useState(false)\n\n const abortOnChangeRef = useRef<AbortController>(null)\n const abortOnSaveRef = useRef<AbortController>(null)\n\n const [editSessionStartTime, setEditSessionStartTime] = useState(Date.now())\n\n const lockExpiryTime = lastUpdateTime + lockDurationInMilliseconds\n\n const isLockExpired = Date.now() > lockExpiryTime\n\n const documentLockStateRef = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser | number | string\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const onSave = useCallback(\n async (json): Promise<FormState> => {\n const controller = handleAbortRef(abortOnSaveRef)\n\n reportUpdate({\n id,\n entitySlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n incrementVersionCount()\n\n if (typeof updateSavedDocumentData === 'function') {\n void updateSavedDocumentData(json?.doc || {})\n }\n\n if (typeof onSaveFromContext === 'function') {\n void onSaveFromContext({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n\n if (!isEditing && depth < 2) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${json?.doc?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n\n startRouteTransition(() => router.push(redirectRoute))\n } else {\n resetUploadEdits()\n }\n\n await getDocPermissions(json)\n\n if ((id || globalSlug) && !autosaveEnabled) {\n const docPreferences = await getDocPreferences()\n\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: json?.doc || json?.result,\n docPermissions,\n docPreferences,\n globalSlug,\n operation,\n renderAllFields: true,\n returnLockStatus: false,\n schemaPath: entitySlug,\n signal: controller.signal,\n skipValidation: true,\n })\n\n // Unlock the document after save\n if (isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n abortOnSaveRef.current = null\n\n return state\n }\n },\n [\n adminRoute,\n collectionSlug,\n depth,\n docPermissions,\n entitySlug,\n getDocPermissions,\n getDocPreferences,\n getFormState,\n globalSlug,\n id,\n incrementVersionCount,\n isEditing,\n isLockingEnabled,\n locale,\n onSaveFromContext,\n operation,\n refreshCookieAsync,\n reportUpdate,\n resetUploadEdits,\n router,\n setDocumentIsLocked,\n updateSavedDocumentData,\n startRouteTransition,\n user,\n userSlug,\n autosaveEnabled,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState, submitted }) => {\n const controller = handleAbortRef(abortOnChangeRef)\n\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const { lockedState, state } = await getFormState({\n id,\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n returnLockStatus: isLockingEnabled ? true : false,\n schemaPath,\n signal: controller.signal,\n skipValidation: !submitted,\n updateLastEdited,\n })\n\n setDocumentIsLocked(true)\n\n if (isLockingEnabled) {\n const previousOwnerID =\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id\n : documentLockStateRef.current?.user\n\n if (lockedState) {\n const lockedUserID =\n typeof lockedState.user === 'string' || typeof lockedState.user === 'number'\n ? lockedState.user\n : lockedState.user.id\n\n if (!documentLockStateRef.current || lockedUserID !== previousOwnerID) {\n if (previousOwnerID === user.id && lockedUserID !== user.id) {\n setShowTakeOverModal(true)\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n documentLockStateRef.current = documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user as ClientUser,\n }\n\n setCurrentEditor(lockedState.user as ClientUser)\n }\n }\n }\n\n abortOnChangeRef.current = null\n\n return state\n },\n [\n editSessionStartTime,\n isLockingEnabled,\n getDocPreferences,\n getFormState,\n id,\n collectionSlug,\n docPermissions,\n globalSlug,\n operation,\n schemaPath,\n setDocumentIsLocked,\n user?.id,\n setCurrentEditor,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n if (!isLockingEnabled) {\n return\n }\n\n const currentPath = window.location.pathname\n\n const documentID = id || globalSlug\n\n // Routes where we do NOT want to unlock the document\n const stayWithinDocumentPaths = ['preview', 'api', 'versions']\n\n const isStayingWithinDocument = stayWithinDocumentPaths.some((path) =>\n currentPath.includes(path),\n )\n\n // Unlock the document only if we're actually navigating away from the document\n if (documentID && documentIsLocked && !isStayingWithinDocument) {\n // Check if this user is still the current editor\n if (\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id === user?.id\n : documentLockStateRef.current?.user === user?.id\n ) {\n void unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n }\n }\n\n setShowTakeOverModal(false)\n }\n }, [\n collectionSlug,\n globalSlug,\n id,\n unlockDocument,\n user,\n setCurrentEditor,\n isLockingEnabled,\n documentIsLocked,\n setDocumentIsLocked,\n ])\n\n useEffect(() => {\n const abortOnChange = abortOnChangeRef.current\n const abortOnSave = abortOnSaveRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n abortAndIgnore(abortOnSave)\n }\n })\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n (typeof currentEditor === 'object'\n ? currentEditor.id !== user?.id\n : currentEditor !== user?.id) &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n // eslint-disable-next-line react-compiler/react-compiler\n !documentLockStateRef.current?.hasShownLockedModal &&\n !isLockExpired\n\n return (\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || !hasSavePermission}\n initialState={initialState}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isLockingEnabled && shouldShowDocumentLockedModal && !isReadOnlyForIncomingUser && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n false,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n )\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {!isReadOnlyForIncomingUser && preventLeaveWithoutSaving && <LeaveWithoutSaving />}\n <SetDocumentStepNav\n collectionSlug={collectionSlug}\n globalLabel={globalConfig?.label}\n globalSlug={globalSlug}\n id={id}\n pluralLabel={collectionConfig ? collectionConfig?.labels?.plural : undefined}\n useAsTitle={collectionConfig ? collectionConfig?.admin?.useAsTitle : undefined}\n view={t('general:livePreview')}\n />\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={id?.toString() || ''}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n BeforeDocumentControls={BeforeDocumentControls}\n customComponents={{\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n }}\n data={initialData}\n disableActions={disableActions}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n true,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n setIsReadOnlyForIncomingUser,\n )\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <div\n className={[baseClass, previewWindowType === 'popup' && `${baseClass}--detached`]\n .filter(Boolean)\n .join(' ')}\n >\n <div\n className={[\n `${baseClass}__main`,\n previewWindowType === 'popup' && `${baseClass}__main--popup-open`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={BeforeFields}\n Description={Description}\n docPermissions={docPermissions}\n fields={fields}\n forceSidebarWrap\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission}\n schemaPathSegments={[collectionSlug || globalSlug]}\n />\n {AfterDocument}\n </div>\n <LivePreview collectionSlug={collectionSlug} globalSlug={globalSlug} />\n </div>\n </Form>\n </OperationProvider>\n )\n}\n\nexport const LivePreviewClient: React.FC<\n {\n readonly breakpoints: LivePreviewConfig['breakpoints']\n readonly initialData: Data\n readonly url: string\n } & DocumentSlots\n> = (props) => {\n const { breakpoints, url: incomingUrl } = props\n const { collectionSlug, globalSlug } = useDocumentInfo()\n\n const {\n config,\n config: {\n routes: { api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const url =\n incomingUrl.startsWith('http://') || incomingUrl.startsWith('https://')\n ? incomingUrl\n : getAbsoluteUrl(incomingUrl)\n\n const { isPopupOpen, openPopupWindow, popupRef } = usePopupWindow({\n eventType: 'payload-live-preview',\n url,\n })\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const globalConfig = getEntityConfig({ globalSlug })\n\n const schemaPath = collectionSlug || globalSlug\n\n return (\n <Fragment>\n <LivePreviewProvider\n breakpoints={breakpoints}\n fieldSchema={collectionConfig?.fields || globalConfig?.fields}\n isPopupOpen={isPopupOpen}\n openPopupWindow={openPopupWindow}\n popupRef={popupRef}\n url={url}\n >\n <PreviewView\n apiRoute={apiRoute}\n BeforeDocumentControls={props.BeforeDocumentControls}\n collectionConfig={collectionConfig}\n config={config}\n Description={props.Description}\n fields={(collectionConfig || globalConfig)?.fields}\n globalConfig={globalConfig}\n PreviewButton={props.PreviewButton}\n PublishButton={props.PublishButton}\n SaveButton={props.SaveButton}\n SaveDraftButton={props.SaveDraftButton}\n schemaPath={schemaPath}\n serverURL={serverURL}\n Upload={props.Upload}\n />\n </LivePreviewProvider>\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/LivePreview/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/LivePreview/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,uBAAuB,EAGxB,MAAM,SAAS,CAAA;AAGhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,cAAc,CAAA;AAGrB,wBAAsB,eAAe,CAAC,KAAK,EAAE,uBAAuB,8BAgFnE"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent';
|
|
2
3
|
import React from 'react';
|
|
3
4
|
import { LivePreviewClient } from './index.client.js';
|
|
4
5
|
export async function LivePreviewView(props) {
|
|
@@ -13,6 +14,11 @@ export async function LivePreviewView(props) {
|
|
|
13
14
|
req
|
|
14
15
|
} = initPageResult;
|
|
15
16
|
let livePreviewConfig = req.payload.config?.admin?.livePreview;
|
|
17
|
+
const serverProps = {
|
|
18
|
+
i18n: req.i18n,
|
|
19
|
+
payload: req.payload,
|
|
20
|
+
user: req.user
|
|
21
|
+
};
|
|
16
22
|
if (collectionConfig) {
|
|
17
23
|
livePreviewConfig = {
|
|
18
24
|
...(livePreviewConfig || {}),
|
|
@@ -25,6 +31,7 @@ export async function LivePreviewView(props) {
|
|
|
25
31
|
...(globalConfig.admin.livePreview || {})
|
|
26
32
|
};
|
|
27
33
|
}
|
|
34
|
+
const BeforeDocumentControls = collectionConfig?.admin?.components?.edit?.beforeDocumentControls || globalConfig?.admin?.components?.elements?.beforeDocumentControls;
|
|
28
35
|
const breakpoints = [...(livePreviewConfig?.breakpoints || []), {
|
|
29
36
|
name: 'responsive',
|
|
30
37
|
height: '100%',
|
|
@@ -44,6 +51,11 @@ export async function LivePreviewView(props) {
|
|
|
44
51
|
payload: initPageResult.req.payload
|
|
45
52
|
}) : livePreviewConfig?.url;
|
|
46
53
|
return /*#__PURE__*/_jsx(LivePreviewClient, {
|
|
54
|
+
BeforeDocumentControls: BeforeDocumentControls ? RenderServerComponent({
|
|
55
|
+
Component: BeforeDocumentControls,
|
|
56
|
+
importMap: req.payload.importMap,
|
|
57
|
+
serverProps: serverProps
|
|
58
|
+
}) : null,
|
|
47
59
|
breakpoints: breakpoints,
|
|
48
60
|
Description: props.Description,
|
|
49
61
|
initialData: doc,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","LivePreviewClient","LivePreviewView","props","doc","initPageResult","collectionConfig","globalConfig","locale","req","livePreviewConfig","payload","config","admin","livePreview","breakpoints","name","height","label","width","url","data","_jsx","Description","initialData","PreviewButton","PublishButton","SaveButton","SaveDraftButton","Upload"],"sources":["../../../src/views/LivePreview/index.tsx"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"index.js","names":["RenderServerComponent","React","LivePreviewClient","LivePreviewView","props","doc","initPageResult","collectionConfig","globalConfig","locale","req","livePreviewConfig","payload","config","admin","livePreview","serverProps","i18n","user","BeforeDocumentControls","components","edit","beforeDocumentControls","elements","breakpoints","name","height","label","width","url","data","_jsx","Component","importMap","Description","initialData","PreviewButton","PublishButton","SaveButton","SaveDraftButton","Upload"],"sources":["../../../src/views/LivePreview/index.tsx"],"sourcesContent":["import type {\n BeforeDocumentControlsServerPropsOnly,\n DocumentViewServerProps,\n LivePreviewConfig,\n ServerProps,\n} from 'payload'\n\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport React from 'react'\n\nimport './index.scss'\nimport { LivePreviewClient } from './index.client.js'\n\nexport async function LivePreviewView(props: DocumentViewServerProps) {\n const { doc, initPageResult } = props\n\n const { collectionConfig, globalConfig, locale, req } = initPageResult\n\n let livePreviewConfig: LivePreviewConfig = req.payload.config?.admin?.livePreview\n\n const serverProps: ServerProps = {\n i18n: req.i18n,\n payload: req.payload,\n user: req.user,\n // TODO: Add remaining serverProps\n }\n\n if (collectionConfig) {\n livePreviewConfig = {\n ...(livePreviewConfig || {}),\n ...(collectionConfig.admin.livePreview || {}),\n }\n }\n\n if (globalConfig) {\n livePreviewConfig = {\n ...(livePreviewConfig || {}),\n ...(globalConfig.admin.livePreview || {}),\n }\n }\n\n const BeforeDocumentControls =\n collectionConfig?.admin?.components?.edit?.beforeDocumentControls ||\n globalConfig?.admin?.components?.elements?.beforeDocumentControls\n\n const breakpoints: LivePreviewConfig['breakpoints'] = [\n ...(livePreviewConfig?.breakpoints || []),\n {\n name: 'responsive',\n height: '100%',\n label: 'Responsive',\n width: '100%',\n },\n ]\n\n const url =\n typeof livePreviewConfig?.url === 'function'\n ? await livePreviewConfig.url({\n collectionConfig,\n data: doc,\n globalConfig,\n locale,\n req,\n /**\n * @deprecated\n * Use `req.payload` instead. This will be removed in the next major version.\n */\n payload: initPageResult.req.payload,\n })\n : livePreviewConfig?.url\n\n return (\n <LivePreviewClient\n BeforeDocumentControls={\n BeforeDocumentControls\n ? RenderServerComponent({\n Component: BeforeDocumentControls,\n importMap: req.payload.importMap,\n serverProps: serverProps satisfies BeforeDocumentControlsServerPropsOnly,\n })\n : null\n }\n breakpoints={breakpoints}\n Description={props.Description}\n initialData={doc}\n PreviewButton={props.PreviewButton}\n PublishButton={props.PublishButton}\n SaveButton={props.SaveButton}\n SaveDraftButton={props.SaveDraftButton}\n Upload={props.Upload}\n url={url}\n />\n )\n}\n"],"mappings":";AAOA,SAASA,qBAAqB,QAAQ;AACtC,OAAOC,KAAA,MAAW;AAGlB,SAASC,iBAAiB,QAAQ;AAElC,OAAO,eAAeC,gBAAgBC,KAA8B;EAClE,MAAM;IAAEC,GAAG;IAAEC;EAAc,CAAE,GAAGF,KAAA;EAEhC,MAAM;IAAEG,gBAAgB;IAAEC,YAAY;IAAEC,MAAM;IAAEC;EAAG,CAAE,GAAGJ,cAAA;EAExD,IAAIK,iBAAA,GAAuCD,GAAA,CAAIE,OAAO,CAACC,MAAM,EAAEC,KAAA,EAAOC,WAAA;EAEtE,MAAMC,WAAA,GAA2B;IAC/BC,IAAA,EAAMP,GAAA,CAAIO,IAAI;IACdL,OAAA,EAASF,GAAA,CAAIE,OAAO;IACpBM,IAAA,EAAMR,GAAA,CAAIQ;EAEZ;EAEA,IAAIX,gBAAA,EAAkB;IACpBI,iBAAA,GAAoB;MAClB,IAAIA,iBAAA,IAAqB,CAAC,CAAC;MAC3B,IAAIJ,gBAAA,CAAiBO,KAAK,CAACC,WAAW,IAAI,CAAC,CAAC;IAC9C;EACF;EAEA,IAAIP,YAAA,EAAc;IAChBG,iBAAA,GAAoB;MAClB,IAAIA,iBAAA,IAAqB,CAAC,CAAC;MAC3B,IAAIH,YAAA,CAAaM,KAAK,CAACC,WAAW,IAAI,CAAC,CAAC;IAC1C;EACF;EAEA,MAAMI,sBAAA,GACJZ,gBAAA,EAAkBO,KAAA,EAAOM,UAAA,EAAYC,IAAA,EAAMC,sBAAA,IAC3Cd,YAAA,EAAcM,KAAA,EAAOM,UAAA,EAAYG,QAAA,EAAUD,sBAAA;EAE7C,MAAME,WAAA,GAAgD,C,IAChDb,iBAAA,EAAmBa,WAAA,IAAe,EAAE,GACxC;IACEC,IAAA,EAAM;IACNC,MAAA,EAAQ;IACRC,KAAA,EAAO;IACPC,KAAA,EAAO;EACT,EACD;EAED,MAAMC,GAAA,GACJ,OAAOlB,iBAAA,EAAmBkB,GAAA,KAAQ,aAC9B,MAAMlB,iBAAA,CAAkBkB,GAAG,CAAC;IAC1BtB,gBAAA;IACAuB,IAAA,EAAMzB,GAAA;IACNG,YAAA;IACAC,MAAA;IACAC,GAAA;IACA;;;;IAIAE,OAAA,EAASN,cAAA,CAAeI,GAAG,CAACE;EAC9B,KACAD,iBAAA,EAAmBkB,GAAA;EAEzB,oBACEE,IAAA,CAAC7B,iBAAA;IACCiB,sBAAA,EACEA,sBAAA,GACInB,qBAAA,CAAsB;MACpBgC,SAAA,EAAWb,sBAAA;MACXc,SAAA,EAAWvB,GAAA,CAAIE,OAAO,CAACqB,SAAS;MAChCjB,WAAA,EAAaA;IACf,KACA;IAENQ,WAAA,EAAaA,WAAA;IACbU,WAAA,EAAa9B,KAAA,CAAM8B,WAAW;IAC9BC,WAAA,EAAa9B,GAAA;IACb+B,aAAA,EAAehC,KAAA,CAAMgC,aAAa;IAClCC,aAAA,EAAejC,KAAA,CAAMiC,aAAa;IAClCC,UAAA,EAAYlC,KAAA,CAAMkC,UAAU;IAC5BC,eAAA,EAAiBnC,KAAA,CAAMmC,eAAe;IACtCC,MAAA,EAAQpC,KAAA,CAAMoC,MAAM;IACpBX,GAAA,EAAKA;;AAGX","ignoreList":[]}
|