@payloadcms/next 3.0.0-beta.108 → 3.0.0-beta.109

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/prod/styles.css +1 -1
  2. package/dist/routes/graphql/handler.d.ts.map +1 -1
  3. package/dist/routes/graphql/handler.js +23 -11
  4. package/dist/routes/graphql/handler.js.map +1 -1
  5. package/dist/routes/rest/routeError.d.ts +2 -7
  6. package/dist/routes/rest/routeError.d.ts.map +1 -1
  7. package/dist/routes/rest/routeError.js +33 -19
  8. package/dist/routes/rest/routeError.js.map +1 -1
  9. package/dist/utilities/getRequestTheme.d.ts.map +1 -1
  10. package/dist/utilities/getRequestTheme.js +3 -0
  11. package/dist/utilities/getRequestTheme.js.map +1 -1
  12. package/dist/views/Account/Settings/index.d.ts +2 -1
  13. package/dist/views/Account/Settings/index.d.ts.map +1 -1
  14. package/dist/views/Account/Settings/index.js +3 -2
  15. package/dist/views/Account/Settings/index.js.map +1 -1
  16. package/dist/views/Account/index.d.ts.map +1 -1
  17. package/dist/views/Account/index.js +3 -1
  18. package/dist/views/Account/index.js.map +1 -1
  19. package/dist/views/CreateFirstUser/index.client.d.ts.map +1 -1
  20. package/dist/views/CreateFirstUser/index.client.js +31 -15
  21. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  22. package/dist/views/Edit/Default/index.d.ts.map +1 -1
  23. package/dist/views/Edit/Default/index.js +30 -65
  24. package/dist/views/Edit/Default/index.js.map +1 -1
  25. package/dist/views/ForgotPassword/index.js +2 -2
  26. package/dist/views/ForgotPassword/index.js.map +1 -1
  27. package/dist/views/LivePreview/index.client.d.ts.map +1 -1
  28. package/dist/views/LivePreview/index.client.js +214 -203
  29. package/dist/views/LivePreview/index.client.js.map +1 -1
  30. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  31. package/dist/views/Version/Restore/index.js +8 -14
  32. package/dist/views/Version/Restore/index.js.map +1 -1
  33. package/package.json +6 -6
@@ -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;AAsDjF,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,sBAyD9E,CAAA"}
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;AAmEjF,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,sBAsD9E,CAAA"}
@@ -6,33 +6,42 @@ import { addLocalesToRequestFromData } from '../../utilities/addLocalesToRequest
6
6
  import { createPayloadRequest } from '../../utilities/createPayloadRequest.js';
7
7
  import { headersWithCors } from '../../utilities/headersWithCors.js';
8
8
  import { mergeHeaders } from '../../utilities/mergeHeaders.js';
9
- const handleError = async (payload, err, debug, afterErrorHook) => {
9
+ const handleError = async ({
10
+ err,
11
+ payload,
12
+ req
13
+ }) => {
10
14
  const status = err.originalError.status || httpStatus.INTERNAL_SERVER_ERROR;
11
15
  let errorMessage = err.message;
12
16
  payload.logger.error(err.stack);
13
17
  // Internal server errors can contain anything, including potentially sensitive data.
14
18
  // Therefore, error details will be hidden from the response unless `config.debug` is `true`
15
- if (!debug && status === httpStatus.INTERNAL_SERVER_ERROR) {
19
+ if (!payload.config.debug && status === httpStatus.INTERNAL_SERVER_ERROR) {
16
20
  errorMessage = 'Something went wrong.';
17
21
  }
18
22
  let response = {
19
23
  extensions: {
20
24
  name: err?.originalError?.name || undefined,
21
25
  data: err && err.originalError && err.originalError.data || undefined,
22
- stack: debug ? err.stack : undefined,
26
+ stack: payload.config.debug ? err.stack : undefined,
23
27
  statusCode: status
24
28
  },
25
29
  locations: err.locations,
26
30
  message: errorMessage,
27
31
  path: err.path
28
32
  };
29
- if (afterErrorHook) {
30
- ({
31
- response
32
- } = afterErrorHook(err, response, null, null) || {
33
- response
33
+ await payload.config.hooks.afterError?.reduce(async (promise, hook) => {
34
+ await promise;
35
+ const result = await hook({
36
+ context: req.context,
37
+ error: err,
38
+ graphqlResult: response,
39
+ req
34
40
  });
35
- }
41
+ if (result) {
42
+ response = result.graphqlResult || response;
43
+ }
44
+ }, Promise.resolve());
36
45
  return response;
37
46
  };
38
47
  let cached = global._payload_graphql;
@@ -82,7 +91,6 @@ export const POST = config => async request => {
82
91
  const {
83
92
  payload
84
93
  } = req;
85
- const afterErrorHook = typeof payload.config.hooks.afterError === 'function' ? payload.config.hooks.afterError : null;
86
94
  const headers = {};
87
95
  const apiResponse = await createHandler({
88
96
  context: {
@@ -97,7 +105,11 @@ export const POST = config => async request => {
97
105
  }) : result;
98
106
  if (response.errors) {
99
107
  const errors = await Promise.all(result.errors.map(error => {
100
- return handleError(payload, error, payload.config.debug, afterErrorHook);
108
+ return handleError({
109
+ err: error,
110
+ payload,
111
+ req
112
+ });
101
113
  }));
102
114
  // errors type should be FormattedGraphQLError[] but onOperation has a return type of ExecutionResult instead of FormattedExecutionResult
103
115
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","names":["configToSchema","createHandler","httpStatus","addDataAndFileToRequest","addLocalesToRequestFromData","createPayloadRequest","headersWithCors","mergeHeaders","handleError","payload","err","debug","afterErrorHook","status","originalError","INTERNAL_SERVER_ERROR","errorMessage","message","logger","error","stack","response","extensions","name","undefined","data","statusCode","locations","path","cached","global","_payload_graphql","graphql","promise","getGraphql","config","process","env","NODE_ENV","resolvedConfig","Promise","resolve","schema","e","POST","request","originalRequest","clone","req","validationRules","hooks","afterError","headers","apiResponse","context","onOperation","args","result","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 { CollectionAfterErrorHook, Payload, SanitizedConfig } from 'payload'\n\nimport { configToSchema } from '@payloadcms/graphql'\nimport { createHandler } from 'graphql-http/lib/use/fetch'\nimport httpStatus from 'http-status'\n\nimport { addDataAndFileToRequest } from '../../utilities/addDataAndFileToRequest.js'\nimport { addLocalesToRequestFromData } from '../../utilities/addLocalesToRequest.js'\nimport { createPayloadRequest } from '../../utilities/createPayloadRequest.js'\nimport { headersWithCors } from '../../utilities/headersWithCors.js'\nimport { mergeHeaders } from '../../utilities/mergeHeaders.js'\n\nconst handleError = async (\n payload: Payload,\n err: any,\n debug: boolean,\n afterErrorHook: CollectionAfterErrorHook,\n // eslint-disable-next-line @typescript-eslint/require-await\n): Promise<GraphQLFormattedError> => {\n const status = err.originalError.status || httpStatus.INTERNAL_SERVER_ERROR\n let errorMessage = err.message\n payload.logger.error(err.stack)\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 (!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.data) || undefined,\n stack: debug ? err.stack : undefined,\n statusCode: status,\n },\n locations: err.locations,\n message: errorMessage,\n path: err.path,\n }\n\n if (afterErrorHook) {\n ;({ response } = afterErrorHook(err, response, null, null) || { response })\n }\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 afterErrorHook =\n typeof payload.config.hooks.afterError === 'function' ? payload.config.hooks.afterError : null\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(payload, error, payload.config.debug, afterErrorHook)\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":[]}
1
+ {"version":3,"file":"handler.js","names":["configToSchema","createHandler","httpStatus","addDataAndFileToRequest","addLocalesToRequestFromData","createPayloadRequest","headersWithCors","mergeHeaders","handleError","err","payload","req","status","originalError","INTERNAL_SERVER_ERROR","errorMessage","message","logger","error","stack","config","debug","response","extensions","name","undefined","data","statusCode","locations","path","hooks","afterError","reduce","promise","hook","result","context","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 httpStatus from 'http-status'\n\nimport { addDataAndFileToRequest } from '../../utilities/addDataAndFileToRequest.js'\nimport { addLocalesToRequestFromData } from '../../utilities/addLocalesToRequest.js'\nimport { createPayloadRequest } from '../../utilities/createPayloadRequest.js'\nimport { headersWithCors } from '../../utilities/headersWithCors.js'\nimport { mergeHeaders } from '../../utilities/mergeHeaders.js'\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 payload.logger.error(err.stack)\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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","ignoreList":[]}
@@ -1,14 +1,9 @@
1
1
  import type { Collection, PayloadRequest, SanitizedConfig } from 'payload';
2
2
  import { APIError } from 'payload';
3
- export type ErrorResponse = {
4
- data?: any;
5
- errors: unknown[];
6
- stack?: string;
7
- };
8
- export declare const routeError: ({ collection, config: configArg, err, req, }: {
3
+ export declare const routeError: ({ collection, config: configArg, err, req: incomingReq, }: {
9
4
  collection?: Collection;
10
5
  config: Promise<SanitizedConfig> | SanitizedConfig;
11
6
  err: APIError;
12
- req: Partial<PayloadRequest>;
7
+ req: PayloadRequest | Request;
13
8
  }) => Promise<Response>;
14
9
  //# sourceMappingURL=routeError.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"routeError.d.ts","sourceRoot":"","sources":["../../../src/routes/rest/routeError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAG1E,OAAO,EAAE,QAAQ,EAAqC,MAAM,SAAS,CAAA;AAKrE,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,OAAO,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AA+D7E,eAAO,MAAM,UAAU,iDAKpB;IACD,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAA;IAClD,GAAG,EAAE,QAAQ,CAAA;IACb,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;CAC7B,sBA8DA,CAAA"}
1
+ {"version":3,"file":"routeError.d.ts","sourceRoot":"","sources":["../../../src/routes/rest/routeError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAe,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAGvF,OAAO,EAAE,QAAQ,EAAqC,MAAM,SAAS,CAAA;AAmErE,eAAO,MAAM,UAAU,8DAKpB;IACD,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAA;IAClD,GAAG,EAAE,QAAQ,CAAA;IACb,GAAG,EAAE,cAAc,GAAG,OAAO,CAAA;CAC9B,sBAkFA,CAAA"}
@@ -2,6 +2,7 @@ import httpStatus from 'http-status';
2
2
  import { APIError, APIErrorName, ValidationErrorName } from 'payload';
3
3
  import { getPayloadHMR } from '../../utilities/getPayloadHMR.js';
4
4
  import { headersWithCors } from '../../utilities/headersWithCors.js';
5
+ import { mergeHeaders } from '../../utilities/mergeHeaders.js';
5
6
  const formatErrors = incoming => {
6
7
  if (incoming) {
7
8
  // Cannot use `instanceof` to check error type: https://github.com/microsoft/TypeScript/issues/13965
@@ -52,9 +53,9 @@ export const routeError = async ({
52
53
  collection,
53
54
  config: configArg,
54
55
  err,
55
- req
56
+ req: incomingReq
56
57
  }) => {
57
- let payload = req?.payload;
58
+ let payload = 'payload' in incomingReq && incomingReq?.payload;
58
59
  if (!payload) {
59
60
  try {
60
61
  payload = await getPayloadHMR({
@@ -68,6 +69,7 @@ export const routeError = async ({
68
69
  });
69
70
  }
70
71
  }
72
+ const req = incomingReq;
71
73
  req.payload = payload;
72
74
  const headers = headersWithCors({
73
75
  headers: new Headers(),
@@ -88,26 +90,38 @@ export const routeError = async ({
88
90
  if (config.debug && config.debug === true) {
89
91
  response.stack = err.stack;
90
92
  }
91
- if (collection && typeof collection.config.hooks.afterError === 'function') {
92
- ({
93
- response,
94
- status
95
- } = collection.config.hooks.afterError(err, response, req?.context, collection.config) || {
96
- response,
97
- status
98
- });
93
+ if (collection) {
94
+ await collection.config.hooks.afterError?.reduce(async (promise, hook) => {
95
+ await promise;
96
+ const result = await hook({
97
+ collection: collection.config,
98
+ context: req.context,
99
+ error: err,
100
+ req,
101
+ result: response
102
+ });
103
+ if (result) {
104
+ response = result.response || response;
105
+ status = result.status || status;
106
+ }
107
+ }, Promise.resolve());
99
108
  }
100
- if (typeof config.hooks.afterError === 'function') {
101
- ({
102
- response,
103
- status
104
- } = config.hooks.afterError(err, response, req?.context, collection?.config) || {
105
- response,
106
- status
109
+ await config.hooks.afterError?.reduce(async (promise, hook) => {
110
+ await promise;
111
+ const result = await hook({
112
+ collection: collection?.config,
113
+ context: req.context,
114
+ error: err,
115
+ req,
116
+ result: response
107
117
  });
108
- }
118
+ if (result) {
119
+ response = result.response || response;
120
+ status = result.status || status;
121
+ }
122
+ }, Promise.resolve());
109
123
  return Response.json(response, {
110
- headers,
124
+ headers: req.responseHeaders ? mergeHeaders(req.responseHeaders, headers) : headers,
111
125
  status
112
126
  });
113
127
  };
@@ -1 +1 @@
1
- {"version":3,"file":"routeError.js","names":["httpStatus","APIError","APIErrorName","ValidationErrorName","getPayloadHMR","headersWithCors","formatErrors","incoming","proto","Object","getPrototypeOf","constructor","name","data","errors","message","keys","reduce","acc","key","push","field","path","Array","isArray","routeError","collection","config","configArg","err","req","payload","e","Response","json","status","INTERNAL_SERVER_ERROR","headers","Headers","logger","response","error","stack","debug","hooks","afterError","context"],"sources":["../../../src/routes/rest/routeError.ts"],"sourcesContent":["import type { Collection, PayloadRequest, SanitizedConfig } from 'payload'\n\nimport httpStatus from 'http-status'\nimport { APIError, APIErrorName, ValidationErrorName } from 'payload'\n\nimport { getPayloadHMR } from '../../utilities/getPayloadHMR.js'\nimport { headersWithCors } from '../../utilities/headersWithCors.js'\n\nexport type ErrorResponse = { data?: any; errors: unknown[]; stack?: string }\n\nconst formatErrors = (incoming: { [key: string]: unknown } | APIError): ErrorResponse => {\n if (incoming) {\n // Cannot use `instanceof` to check error type: https://github.com/microsoft/TypeScript/issues/13965\n // Instead, get the prototype of the incoming error and check its constructor name\n const proto = Object.getPrototypeOf(incoming)\n\n // Payload 'ValidationError' and 'APIError'\n if (\n (proto.constructor.name === ValidationErrorName || proto.constructor.name === APIErrorName) &&\n incoming.data\n ) {\n return {\n errors: [\n {\n name: incoming.name,\n data: incoming.data,\n message: incoming.message,\n },\n ],\n }\n }\n\n // Mongoose 'ValidationError': https://mongoosejs.com/docs/api/error.html#Error.ValidationError\n if (proto.constructor.name === ValidationErrorName && 'errors' in incoming && incoming.errors) {\n return {\n errors: Object.keys(incoming.errors).reduce((acc, key) => {\n acc.push({\n field: incoming.errors[key].path,\n message: incoming.errors[key].message,\n })\n return acc\n }, []),\n }\n }\n\n if (Array.isArray(incoming.message)) {\n return {\n errors: incoming.message,\n }\n }\n\n if (incoming.name) {\n return {\n errors: [\n {\n message: incoming.message,\n },\n ],\n }\n }\n }\n\n return {\n errors: [\n {\n message: 'An unknown error occurred.',\n },\n ],\n }\n}\n\nexport const routeError = async ({\n collection,\n config: configArg,\n err,\n req,\n}: {\n collection?: Collection\n config: Promise<SanitizedConfig> | SanitizedConfig\n err: APIError\n req: Partial<PayloadRequest>\n}) => {\n let payload = req?.payload\n\n if (!payload) {\n try {\n payload = await getPayloadHMR({ config: configArg })\n } catch (e) {\n return Response.json(\n {\n message: 'There was an error initializing Payload',\n },\n { status: httpStatus.INTERNAL_SERVER_ERROR },\n )\n }\n }\n\n req.payload = payload\n const headers = headersWithCors({\n headers: new Headers(),\n req,\n })\n\n const { config, logger } = payload\n\n let response = formatErrors(err)\n\n let status = err.status || httpStatus.INTERNAL_SERVER_ERROR\n\n logger.error(err.stack)\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 (!config.debug && status === httpStatus.INTERNAL_SERVER_ERROR) {\n response = formatErrors(new APIError('Something went wrong.'))\n }\n\n if (config.debug && config.debug === true) {\n response.stack = err.stack\n }\n\n if (collection && typeof collection.config.hooks.afterError === 'function') {\n ;({ response, status } = collection.config.hooks.afterError(\n err,\n response,\n req?.context,\n collection.config,\n ) || { response, status })\n }\n\n if (typeof config.hooks.afterError === 'function') {\n ;({ response, status } = config.hooks.afterError(\n err,\n response,\n req?.context,\n collection?.config,\n ) || {\n response,\n status,\n })\n }\n\n return Response.json(response, { headers, status })\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"routeError.js","names":["httpStatus","APIError","APIErrorName","ValidationErrorName","getPayloadHMR","headersWithCors","mergeHeaders","formatErrors","incoming","proto","Object","getPrototypeOf","constructor","name","data","errors","message","keys","reduce","acc","key","push","field","path","Array","isArray","routeError","collection","config","configArg","err","req","incomingReq","payload","e","Response","json","status","INTERNAL_SERVER_ERROR","headers","Headers","logger","response","error","stack","debug","hooks","afterError","promise","hook","result","context","Promise","resolve","responseHeaders"],"sources":["../../../src/routes/rest/routeError.ts"],"sourcesContent":["import type { Collection, ErrorResult, PayloadRequest, SanitizedConfig } from 'payload'\n\nimport httpStatus from 'http-status'\nimport { APIError, APIErrorName, ValidationErrorName } from 'payload'\n\nimport { getPayloadHMR } from '../../utilities/getPayloadHMR.js'\nimport { headersWithCors } from '../../utilities/headersWithCors.js'\nimport { mergeHeaders } from '../../utilities/mergeHeaders.js'\n\nconst formatErrors = (incoming: { [key: string]: unknown } | APIError): ErrorResult => {\n if (incoming) {\n // Cannot use `instanceof` to check error type: https://github.com/microsoft/TypeScript/issues/13965\n // Instead, get the prototype of the incoming error and check its constructor name\n const proto = Object.getPrototypeOf(incoming)\n\n // Payload 'ValidationError' and 'APIError'\n if (\n (proto.constructor.name === ValidationErrorName || proto.constructor.name === APIErrorName) &&\n incoming.data\n ) {\n return {\n errors: [\n {\n name: incoming.name,\n data: incoming.data,\n message: incoming.message,\n },\n ],\n }\n }\n\n // Mongoose 'ValidationError': https://mongoosejs.com/docs/api/error.html#Error.ValidationError\n if (proto.constructor.name === ValidationErrorName && 'errors' in incoming && incoming.errors) {\n return {\n errors: Object.keys(incoming.errors).reduce((acc, key) => {\n acc.push({\n field: incoming.errors[key].path,\n message: incoming.errors[key].message,\n })\n return acc\n }, []),\n }\n }\n\n if (Array.isArray(incoming.message)) {\n return {\n errors: incoming.message,\n }\n }\n\n if (incoming.name) {\n return {\n errors: [\n {\n message: incoming.message,\n },\n ],\n }\n }\n }\n\n return {\n errors: [\n {\n message: 'An unknown error occurred.',\n },\n ],\n }\n}\n\nexport const routeError = async ({\n collection,\n config: configArg,\n err,\n req: incomingReq,\n}: {\n collection?: Collection\n config: Promise<SanitizedConfig> | SanitizedConfig\n err: APIError\n req: PayloadRequest | Request\n}) => {\n let payload = 'payload' in incomingReq && incomingReq?.payload\n\n if (!payload) {\n try {\n payload = await getPayloadHMR({ config: configArg })\n } catch (e) {\n return Response.json(\n {\n message: 'There was an error initializing Payload',\n },\n { status: httpStatus.INTERNAL_SERVER_ERROR },\n )\n }\n }\n\n const req = incomingReq as PayloadRequest\n\n req.payload = payload\n const headers = headersWithCors({\n headers: new Headers(),\n req,\n })\n\n const { config, logger } = payload\n\n let response = formatErrors(err)\n\n let status = err.status || httpStatus.INTERNAL_SERVER_ERROR\n\n logger.error(err.stack)\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 (!config.debug && status === httpStatus.INTERNAL_SERVER_ERROR) {\n response = formatErrors(new APIError('Something went wrong.'))\n }\n\n if (config.debug && config.debug === true) {\n response.stack = err.stack\n }\n\n if (collection) {\n await collection.config.hooks.afterError?.reduce(async (promise, hook) => {\n await promise\n\n const result = await hook({\n collection: collection.config,\n context: req.context,\n error: err,\n req,\n result: response,\n })\n\n if (result) {\n response = (result.response as ErrorResult) || response\n status = result.status || status\n }\n }, Promise.resolve())\n }\n\n await config.hooks.afterError?.reduce(async (promise, hook) => {\n await promise\n\n const result = await hook({\n collection: collection?.config,\n context: req.context,\n error: err,\n req,\n result: response,\n })\n\n if (result) {\n response = (result.response as ErrorResult) || response\n status = result.status || status\n }\n }, Promise.resolve())\n\n return Response.json(response, {\n headers: req.responseHeaders ? mergeHeaders(req.responseHeaders, headers) : headers,\n status,\n })\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"getRequestTheme.d.ts","sourceRoot":"","sources":["../../src/utilities/getRequestTheme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iEAAiE,CAAA;AAC7G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,EAAgB,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAEzD,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,sBAAsB,CAAA;IACrD,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;CAC5B,CAAA;AAID,eAAO,MAAM,eAAe,iCAAkC,sBAAsB,KAAG,KAkBtF,CAAA"}
1
+ {"version":3,"file":"getRequestTheme.d.ts","sourceRoot":"","sources":["../../src/utilities/getRequestTheme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iEAAiE,CAAA;AAC7G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,EAAgB,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAEzD,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,sBAAsB,CAAA;IACrD,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;CAC5B,CAAA;AAID,eAAO,MAAM,eAAe,iCAAkC,sBAAsB,KAAG,KAsBtF,CAAA"}
@@ -5,6 +5,9 @@ export const getRequestTheme = ({
5
5
  cookies,
6
6
  headers
7
7
  }) => {
8
+ if (config.admin.theme !== 'all' && acceptedThemes.includes(config.admin.theme)) {
9
+ return config.admin.theme;
10
+ }
8
11
  const themeCookie = cookies.get(`${config.cookiePrefix || 'payload'}-theme`);
9
12
  const themeFromCookie = typeof themeCookie === 'string' ? themeCookie : themeCookie?.value;
10
13
  if (themeFromCookie && acceptedThemes.includes(themeFromCookie)) {
@@ -1 +1 @@
1
- {"version":3,"file":"getRequestTheme.js","names":["defaultTheme","acceptedThemes","getRequestTheme","config","cookies","headers","themeCookie","get","cookiePrefix","themeFromCookie","value","includes","themeFromHeader"],"sources":["../../src/utilities/getRequestTheme.ts"],"sourcesContent":["import type { ReadonlyRequestCookies } from 'next/dist/server/web/spec-extension/adapters/request-cookies.js'\nimport type { SanitizedConfig } from 'payload'\n\nimport { defaultTheme, type Theme } from '@payloadcms/ui'\n\ntype GetRequestLanguageArgs = {\n config: SanitizedConfig\n cookies: Map<string, string> | ReadonlyRequestCookies\n headers: Request['headers']\n}\n\nconst acceptedThemes: Theme[] = ['dark', 'light']\n\nexport const getRequestTheme = ({ config, cookies, headers }: GetRequestLanguageArgs): Theme => {\n const themeCookie = cookies.get(`${config.cookiePrefix || 'payload'}-theme`)\n\n const themeFromCookie: Theme = (\n typeof themeCookie === 'string' ? themeCookie : themeCookie?.value\n ) as Theme\n\n if (themeFromCookie && acceptedThemes.includes(themeFromCookie)) {\n return themeFromCookie\n }\n\n const themeFromHeader = headers.get('Sec-CH-Prefers-Color-Scheme') as Theme\n\n if (themeFromHeader && acceptedThemes.includes(themeFromHeader)) {\n return themeFromHeader\n }\n\n return defaultTheme\n}\n"],"mappings":"AAGA,SAASA,YAAY,QAAoB;AAQzC,MAAMC,cAAA,GAA0B,CAAC,QAAQ,QAAQ;AAEjD,OAAO,MAAMC,eAAA,GAAkBA,CAAC;EAAEC,MAAM;EAAEC,OAAO;EAAEC;AAAO,CAA0B;EAClF,MAAMC,WAAA,GAAcF,OAAA,CAAQG,GAAG,CAAC,GAAGJ,MAAA,CAAOK,YAAY,IAAI,iBAAiB;EAE3E,MAAMC,eAAA,GACJ,OAAOH,WAAA,KAAgB,WAAWA,WAAA,GAAcA,WAAA,EAAaI,KAAA;EAG/D,IAAID,eAAA,IAAmBR,cAAA,CAAeU,QAAQ,CAACF,eAAA,GAAkB;IAC/D,OAAOA,eAAA;EACT;EAEA,MAAMG,eAAA,GAAkBP,OAAA,CAAQE,GAAG,CAAC;EAEpC,IAAIK,eAAA,IAAmBX,cAAA,CAAeU,QAAQ,CAACC,eAAA,GAAkB;IAC/D,OAAOA,eAAA;EACT;EAEA,OAAOZ,YAAA;AACT","ignoreList":[]}
1
+ {"version":3,"file":"getRequestTheme.js","names":["defaultTheme","acceptedThemes","getRequestTheme","config","cookies","headers","admin","theme","includes","themeCookie","get","cookiePrefix","themeFromCookie","value","themeFromHeader"],"sources":["../../src/utilities/getRequestTheme.ts"],"sourcesContent":["import type { ReadonlyRequestCookies } from 'next/dist/server/web/spec-extension/adapters/request-cookies.js'\nimport type { SanitizedConfig } from 'payload'\n\nimport { defaultTheme, type Theme } from '@payloadcms/ui'\n\ntype GetRequestLanguageArgs = {\n config: SanitizedConfig\n cookies: Map<string, string> | ReadonlyRequestCookies\n headers: Request['headers']\n}\n\nconst acceptedThemes: Theme[] = ['dark', 'light']\n\nexport const getRequestTheme = ({ config, cookies, headers }: GetRequestLanguageArgs): Theme => {\n if (config.admin.theme !== 'all' && acceptedThemes.includes(config.admin.theme)) {\n return config.admin.theme\n }\n\n const themeCookie = cookies.get(`${config.cookiePrefix || 'payload'}-theme`)\n\n const themeFromCookie: Theme = (\n typeof themeCookie === 'string' ? themeCookie : themeCookie?.value\n ) as Theme\n\n if (themeFromCookie && acceptedThemes.includes(themeFromCookie)) {\n return themeFromCookie\n }\n\n const themeFromHeader = headers.get('Sec-CH-Prefers-Color-Scheme') as Theme\n\n if (themeFromHeader && acceptedThemes.includes(themeFromHeader)) {\n return themeFromHeader\n }\n\n return defaultTheme\n}\n"],"mappings":"AAGA,SAASA,YAAY,QAAoB;AAQzC,MAAMC,cAAA,GAA0B,CAAC,QAAQ,QAAQ;AAEjD,OAAO,MAAMC,eAAA,GAAkBA,CAAC;EAAEC,MAAM;EAAEC,OAAO;EAAEC;AAAO,CAA0B;EAClF,IAAIF,MAAA,CAAOG,KAAK,CAACC,KAAK,KAAK,SAASN,cAAA,CAAeO,QAAQ,CAACL,MAAA,CAAOG,KAAK,CAACC,KAAK,GAAG;IAC/E,OAAOJ,MAAA,CAAOG,KAAK,CAACC,KAAK;EAC3B;EAEA,MAAME,WAAA,GAAcL,OAAA,CAAQM,GAAG,CAAC,GAAGP,MAAA,CAAOQ,YAAY,IAAI,iBAAiB;EAE3E,MAAMC,eAAA,GACJ,OAAOH,WAAA,KAAgB,WAAWA,WAAA,GAAcA,WAAA,EAAaI,KAAA;EAG/D,IAAID,eAAA,IAAmBX,cAAA,CAAeO,QAAQ,CAACI,eAAA,GAAkB;IAC/D,OAAOA,eAAA;EACT;EAEA,MAAME,eAAA,GAAkBT,OAAA,CAAQK,GAAG,CAAC;EAEpC,IAAII,eAAA,IAAmBb,cAAA,CAAeO,QAAQ,CAACM,eAAA,GAAkB;IAC/D,OAAOA,eAAA;EACT;EAEA,OAAOd,YAAA;AACT","ignoreList":[]}
@@ -1,10 +1,11 @@
1
1
  import type { I18n } from '@payloadcms/translations';
2
- import type { LanguageOptions } from 'payload';
2
+ import type { Config, LanguageOptions } from 'payload';
3
3
  import React from 'react';
4
4
  import './index.scss';
5
5
  export declare const Settings: React.FC<{
6
6
  readonly className?: string;
7
7
  readonly i18n: I18n;
8
8
  readonly languageOptions: LanguageOptions;
9
+ readonly theme: Config['admin']['theme'];
9
10
  }>;
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Account/Settings/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAG9C,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,cAAc,CAAA;AAKrB,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;CAC1C,CAaA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Account/Settings/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAGtD,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,cAAc,CAAA;AAKrB,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAA;CACzC,CAaA,CAAA"}
@@ -8,7 +8,8 @@ export const Settings = props => {
8
8
  const {
9
9
  className,
10
10
  i18n,
11
- languageOptions
11
+ languageOptions,
12
+ theme
12
13
  } = props;
13
14
  return /*#__PURE__*/_jsxs("div", {
14
15
  className: [baseClass, className].filter(Boolean).join(' '),
@@ -23,7 +24,7 @@ export const Settings = props => {
23
24
  }), /*#__PURE__*/_jsx(LanguageSelector, {
24
25
  languageOptions: languageOptions
25
26
  })]
26
- }), /*#__PURE__*/_jsx(ToggleTheme, {})]
27
+ }), theme === 'all' && /*#__PURE__*/_jsx(ToggleTheme, {})]
27
28
  });
28
29
  };
29
30
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["FieldLabel","React","ToggleTheme","LanguageSelector","baseClass","Settings","props","className","i18n","languageOptions","_jsxs","filter","Boolean","join","_jsx","t","field","htmlFor","label"],"sources":["../../../../src/views/Account/Settings/index.tsx"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type { LanguageOptions } from 'payload'\n\nimport { FieldLabel } from '@payloadcms/ui'\nimport React from 'react'\n\nimport { ToggleTheme } from '../ToggleTheme/index.js'\nimport './index.scss'\nimport { LanguageSelector } from './LanguageSelector.js'\n\nconst baseClass = 'payload-settings'\n\nexport const Settings: React.FC<{\n readonly className?: string\n readonly i18n: I18n\n readonly languageOptions: LanguageOptions\n}> = (props) => {\n const { className, i18n, languageOptions } = props\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <h3>{i18n.t('general:payloadSettings')}</h3>\n <div className={`${baseClass}__language`}>\n <FieldLabel field={null} htmlFor=\"language-select\" label={i18n.t('general:language')} />\n <LanguageSelector languageOptions={languageOptions} />\n </div>\n <ToggleTheme />\n </div>\n )\n}\n"],"mappings":";AAGA,SAASA,UAAU,QAAQ;AAC3B,OAAOC,KAAA,MAAW;AAElB,SAASC,WAAW,QAAQ;AAE5B,SAASC,gBAAgB,QAAQ;AAEjC,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,QAAA,GAIPC,KAAA;EACJ,MAAM;IAAEC,SAAS;IAAEC,IAAI;IAAEC;EAAe,CAAE,GAAGH,KAAA;EAE7C,oBACEI,KAAA,CAAC;IAAIH,SAAA,EAAW,CAACH,SAAA,EAAWG,SAAA,CAAU,CAACI,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;4BAC1DC,IAAA,CAAC;gBAAIN,IAAA,CAAKO,CAAC,CAAC;qBACZL,KAAA,CAAC;MAAIH,SAAA,EAAW,GAAGH,SAAA,YAAqB;8BACtCU,IAAA,CAACd,UAAA;QAAWgB,KAAA,EAAO;QAAMC,OAAA,EAAQ;QAAkBC,KAAA,EAAOV,IAAA,CAAKO,CAAC,CAAC;uBACjED,IAAA,CAACX,gBAAA;QAAiBM,eAAA,EAAiBA;;qBAErCK,IAAA,CAACZ,WAAA;;AAGP","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["FieldLabel","React","ToggleTheme","LanguageSelector","baseClass","Settings","props","className","i18n","languageOptions","theme","_jsxs","filter","Boolean","join","_jsx","t","field","htmlFor","label"],"sources":["../../../../src/views/Account/Settings/index.tsx"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type { Config, LanguageOptions } from 'payload'\n\nimport { FieldLabel } from '@payloadcms/ui'\nimport React from 'react'\n\nimport { ToggleTheme } from '../ToggleTheme/index.js'\nimport './index.scss'\nimport { LanguageSelector } from './LanguageSelector.js'\n\nconst baseClass = 'payload-settings'\n\nexport const Settings: React.FC<{\n readonly className?: string\n readonly i18n: I18n\n readonly languageOptions: LanguageOptions\n readonly theme: Config['admin']['theme']\n}> = (props) => {\n const { className, i18n, languageOptions, theme } = props\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <h3>{i18n.t('general:payloadSettings')}</h3>\n <div className={`${baseClass}__language`}>\n <FieldLabel field={null} htmlFor=\"language-select\" label={i18n.t('general:language')} />\n <LanguageSelector languageOptions={languageOptions} />\n </div>\n {theme === 'all' && <ToggleTheme />}\n </div>\n )\n}\n"],"mappings":";AAGA,SAASA,UAAU,QAAQ;AAC3B,OAAOC,KAAA,MAAW;AAElB,SAASC,WAAW,QAAQ;AAE5B,SAASC,gBAAgB,QAAQ;AAEjC,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,QAAA,GAKPC,KAAA;EACJ,MAAM;IAAEC,SAAS;IAAEC,IAAI;IAAEC,eAAe;IAAEC;EAAK,CAAE,GAAGJ,KAAA;EAEpD,oBACEK,KAAA,CAAC;IAAIJ,SAAA,EAAW,CAACH,SAAA,EAAWG,SAAA,CAAU,CAACK,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;4BAC1DC,IAAA,CAAC;gBAAIP,IAAA,CAAKQ,CAAC,CAAC;qBACZL,KAAA,CAAC;MAAIJ,SAAA,EAAW,GAAGH,SAAA,YAAqB;8BACtCW,IAAA,CAACf,UAAA;QAAWiB,KAAA,EAAO;QAAMC,OAAA,EAAQ;QAAkBC,KAAA,EAAOX,IAAA,CAAKQ,CAAC,CAAC;uBACjED,IAAA,CAACZ,gBAAA;QAAiBM,eAAA,EAAiBA;;QAEpCC,KAAA,KAAU,sBAASK,IAAA,CAACb,WAAA;;AAG3B","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Account/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAU7C,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AAEnD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA8F5C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Account/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAU7C,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AAEnD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAkG5C,CAAA"}
@@ -36,6 +36,7 @@ export const Account = async ({
36
36
  Account: CustomAccountComponent
37
37
  } = {}
38
38
  } = {},
39
+ theme,
39
40
  user: userSlug
40
41
  },
41
42
  routes: {
@@ -82,7 +83,8 @@ export const Account = async ({
82
83
  return /*#__PURE__*/_jsx(DocumentInfoProvider, {
83
84
  AfterFields: /*#__PURE__*/_jsx(Settings, {
84
85
  i18n: i18n,
85
- languageOptions: languageOptions
86
+ languageOptions: languageOptions,
87
+ theme: theme
86
88
  }),
87
89
  apiURL: `${serverURL}${api}/${userSlug}${user?.id ? `/${user.id}` : ''}`,
88
90
  collectionSlug: userSlug,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["DocumentInfoProvider","EditDepthProvider","HydrateAuthProvider","RenderComponent","getCreateMappedComponent","notFound","React","DocumentHeader","getDocumentData","getDocumentPermissions","EditView","AccountClient","Settings","generateAccountMetadata","Account","initPageResult","params","searchParams","languageOptions","locale","permissions","req","i18n","payload","config","user","admin","components","views","CustomAccountComponent","userSlug","routes","api","serverURL","collectionConfig","collections","find","collection","slug","id","docPermissions","hasPublishPermission","hasSavePermission","data","formState","createMappedComponent","importMap","serverProps","routeSegments","mappedAccountComponent","Component","undefined","_jsx","AfterFields","apiURL","collectionSlug","toString","initialData","initialState","isEditing","_jsxs","depth","hideTabs","mappedComponent"],"sources":["../../../src/views/Account/index.tsx"],"sourcesContent":["import type { AdminViewProps } from 'payload'\n\nimport {\n DocumentInfoProvider,\n EditDepthProvider,\n HydrateAuthProvider,\n RenderComponent,\n} from '@payloadcms/ui'\nimport { getCreateMappedComponent } from '@payloadcms/ui/shared'\nimport { notFound } from 'next/navigation.js'\nimport React from 'react'\n\nimport { DocumentHeader } from '../../elements/DocumentHeader/index.js'\nimport { getDocumentData } from '../Document/getDocumentData.js'\nimport { getDocumentPermissions } from '../Document/getDocumentPermissions.js'\nimport { EditView } from '../Edit/index.js'\nimport { AccountClient } from './index.client.js'\nimport { Settings } from './Settings/index.js'\n\nexport { generateAccountMetadata } from './meta.js'\n\nexport const Account: React.FC<AdminViewProps> = async ({\n initPageResult,\n params,\n searchParams,\n}) => {\n const {\n languageOptions,\n locale,\n permissions,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n } = initPageResult\n\n const {\n admin: { components: { views: { Account: CustomAccountComponent } = {} } = {}, user: userSlug },\n routes: { api },\n serverURL,\n } = config\n\n const collectionConfig = config.collections.find((collection) => collection.slug === userSlug)\n\n if (collectionConfig && user?.id) {\n const { docPermissions, hasPublishPermission, hasSavePermission } =\n await getDocumentPermissions({\n id: user.id,\n collectionConfig,\n data: user,\n req,\n })\n\n const { data, formState } = await getDocumentData({\n id: user.id,\n collectionConfig,\n locale,\n req,\n })\n\n const createMappedComponent = getCreateMappedComponent({\n importMap: payload.importMap,\n serverProps: {\n i18n,\n initPageResult,\n locale,\n params,\n payload,\n permissions,\n routeSegments: [],\n searchParams,\n user,\n },\n })\n\n const mappedAccountComponent = createMappedComponent(\n CustomAccountComponent?.Component,\n undefined,\n EditView,\n 'CustomAccountComponent.Component',\n )\n\n return (\n <DocumentInfoProvider\n AfterFields={<Settings i18n={i18n} languageOptions={languageOptions} />}\n apiURL={`${serverURL}${api}/${userSlug}${user?.id ? `/${user.id}` : ''}`}\n collectionSlug={userSlug}\n docPermissions={docPermissions}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={user?.id.toString()}\n initialData={data}\n initialState={formState}\n isEditing\n >\n <EditDepthProvider depth={1}>\n <DocumentHeader\n collectionConfig={collectionConfig}\n hideTabs\n i18n={i18n}\n payload={payload}\n permissions={permissions}\n />\n <HydrateAuthProvider permissions={permissions} />\n <RenderComponent mappedComponent={mappedAccountComponent} />\n <AccountClient />\n </EditDepthProvider>\n </DocumentInfoProvider>\n )\n }\n\n return notFound()\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["DocumentInfoProvider","EditDepthProvider","HydrateAuthProvider","RenderComponent","getCreateMappedComponent","notFound","React","DocumentHeader","getDocumentData","getDocumentPermissions","EditView","AccountClient","Settings","generateAccountMetadata","Account","initPageResult","params","searchParams","languageOptions","locale","permissions","req","i18n","payload","config","user","admin","components","views","CustomAccountComponent","theme","userSlug","routes","api","serverURL","collectionConfig","collections","find","collection","slug","id","docPermissions","hasPublishPermission","hasSavePermission","data","formState","createMappedComponent","importMap","serverProps","routeSegments","mappedAccountComponent","Component","undefined","_jsx","AfterFields","apiURL","collectionSlug","toString","initialData","initialState","isEditing","_jsxs","depth","hideTabs","mappedComponent"],"sources":["../../../src/views/Account/index.tsx"],"sourcesContent":["import type { AdminViewProps } from 'payload'\n\nimport {\n DocumentInfoProvider,\n EditDepthProvider,\n HydrateAuthProvider,\n RenderComponent,\n} from '@payloadcms/ui'\nimport { getCreateMappedComponent } from '@payloadcms/ui/shared'\nimport { notFound } from 'next/navigation.js'\nimport React from 'react'\n\nimport { DocumentHeader } from '../../elements/DocumentHeader/index.js'\nimport { getDocumentData } from '../Document/getDocumentData.js'\nimport { getDocumentPermissions } from '../Document/getDocumentPermissions.js'\nimport { EditView } from '../Edit/index.js'\nimport { AccountClient } from './index.client.js'\nimport { Settings } from './Settings/index.js'\n\nexport { generateAccountMetadata } from './meta.js'\n\nexport const Account: React.FC<AdminViewProps> = async ({\n initPageResult,\n params,\n searchParams,\n}) => {\n const {\n languageOptions,\n locale,\n permissions,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n } = initPageResult\n\n const {\n admin: {\n components: { views: { Account: CustomAccountComponent } = {} } = {},\n theme,\n user: userSlug,\n },\n routes: { api },\n serverURL,\n } = config\n\n const collectionConfig = config.collections.find((collection) => collection.slug === userSlug)\n\n if (collectionConfig && user?.id) {\n const { docPermissions, hasPublishPermission, hasSavePermission } =\n await getDocumentPermissions({\n id: user.id,\n collectionConfig,\n data: user,\n req,\n })\n\n const { data, formState } = await getDocumentData({\n id: user.id,\n collectionConfig,\n locale,\n req,\n })\n\n const createMappedComponent = getCreateMappedComponent({\n importMap: payload.importMap,\n serverProps: {\n i18n,\n initPageResult,\n locale,\n params,\n payload,\n permissions,\n routeSegments: [],\n searchParams,\n user,\n },\n })\n\n const mappedAccountComponent = createMappedComponent(\n CustomAccountComponent?.Component,\n undefined,\n EditView,\n 'CustomAccountComponent.Component',\n )\n\n return (\n <DocumentInfoProvider\n AfterFields={<Settings i18n={i18n} languageOptions={languageOptions} theme={theme} />}\n apiURL={`${serverURL}${api}/${userSlug}${user?.id ? `/${user.id}` : ''}`}\n collectionSlug={userSlug}\n docPermissions={docPermissions}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={user?.id.toString()}\n initialData={data}\n initialState={formState}\n isEditing\n >\n <EditDepthProvider depth={1}>\n <DocumentHeader\n collectionConfig={collectionConfig}\n hideTabs\n i18n={i18n}\n payload={payload}\n permissions={permissions}\n />\n <HydrateAuthProvider permissions={permissions} />\n <RenderComponent mappedComponent={mappedAccountComponent} />\n <AccountClient />\n </EditDepthProvider>\n </DocumentInfoProvider>\n )\n }\n\n return notFound()\n}\n"],"mappings":";AAEA,SACEA,oBAAoB,EACpBC,iBAAiB,EACjBC,mBAAmB,EACnBC,eAAe,QACV;AACP,SAASC,wBAAwB,QAAQ;AACzC,SAASC,QAAQ,QAAQ;AACzB,OAAOC,KAAA,MAAW;AAElB,SAASC,cAAc,QAAQ;AAC/B,SAASC,eAAe,QAAQ;AAChC,SAASC,sBAAsB,QAAQ;AACvC,SAASC,QAAQ,QAAQ;AACzB,SAASC,aAAa,QAAQ;AAC9B,SAASC,QAAQ,QAAQ;AAEzB,SAASC,uBAAuB,QAAQ;AAExC,OAAO,MAAMC,OAAA,GAAoC,MAAAA,CAAO;EACtDC,cAAc;EACdC,MAAM;EACNC;AAAY,CACb;EACC,MAAM;IACJC,eAAe;IACfC,MAAM;IACNC,WAAW;IACXC,GAAG;IACHA,GAAA,EAAK;MACHC,IAAI;MACJC,OAAO;MACPA,OAAA,EAAS;QAAEC;MAAM,CAAE;MACnBC;IAAI;EACL,CACF,GAAGV,cAAA;EAEJ,MAAM;IACJW,KAAA,EAAO;MACLC,UAAA,EAAY;QAAEC,KAAA,EAAO;UAAEd,OAAA,EAASe;QAAsB,CAAE,GAAG,CAAC;MAAC,CAAE,GAAG,CAAC,CAAC;MACpEC,KAAK;MACLL,IAAA,EAAMM;IAAQ,CACf;IACDC,MAAA,EAAQ;MAAEC;IAAG,CAAE;IACfC;EAAS,CACV,GAAGV,MAAA;EAEJ,MAAMW,gBAAA,GAAmBX,MAAA,CAAOY,WAAW,CAACC,IAAI,CAAEC,UAAA,IAAeA,UAAA,CAAWC,IAAI,KAAKR,QAAA;EAErF,IAAII,gBAAA,IAAoBV,IAAA,EAAMe,EAAA,EAAI;IAChC,MAAM;MAAEC,cAAc;MAAEC,oBAAoB;MAAEC;IAAiB,CAAE,GAC/D,MAAMlC,sBAAA,CAAuB;MAC3B+B,EAAA,EAAIf,IAAA,CAAKe,EAAE;MACXL,gBAAA;MACAS,IAAA,EAAMnB,IAAA;MACNJ;IACF;IAEF,MAAM;MAAEuB,IAAI;MAAEC;IAAS,CAAE,GAAG,MAAMrC,eAAA,CAAgB;MAChDgC,EAAA,EAAIf,IAAA,CAAKe,EAAE;MACXL,gBAAA;MACAhB,MAAA;MACAE;IACF;IAEA,MAAMyB,qBAAA,GAAwB1C,wBAAA,CAAyB;MACrD2C,SAAA,EAAWxB,OAAA,CAAQwB,SAAS;MAC5BC,WAAA,EAAa;QACX1B,IAAA;QACAP,cAAA;QACAI,MAAA;QACAH,MAAA;QACAO,OAAA;QACAH,WAAA;QACA6B,aAAA,EAAe,EAAE;QACjBhC,YAAA;QACAQ;MACF;IACF;IAEA,MAAMyB,sBAAA,GAAyBJ,qBAAA,CAC7BjB,sBAAA,EAAwBsB,SAAA,EACxBC,SAAA,EACA1C,QAAA,EACA;IAGF,oBACE2C,IAAA,CAACrD,oBAAA;MACCsD,WAAA,eAAaD,IAAA,CAACzC,QAAA;QAASU,IAAA,EAAMA,IAAA;QAAMJ,eAAA,EAAiBA,eAAA;QAAiBY,KAAA,EAAOA;;MAC5EyB,MAAA,EAAQ,GAAGrB,SAAA,GAAYD,GAAA,IAAOF,QAAA,GAAWN,IAAA,EAAMe,EAAA,GAAK,IAAIf,IAAA,CAAKe,EAAE,EAAE,GAAG,IAAI;MACxEgB,cAAA,EAAgBzB,QAAA;MAChBU,cAAA,EAAgBA,cAAA;MAChBC,oBAAA,EAAsBA,oBAAA;MACtBC,iBAAA,EAAmBA,iBAAA;MACnBH,EAAA,EAAIf,IAAA,EAAMe,EAAA,CAAGiB,QAAA;MACbC,WAAA,EAAad,IAAA;MACbe,YAAA,EAAcd,SAAA;MACde,SAAS;gBAET,aAAAC,KAAA,CAAC5D,iBAAA;QAAkB6D,KAAA,EAAO;gCACxBT,IAAA,CAAC9C,cAAA;UACC4B,gBAAA,EAAkBA,gBAAA;UAClB4B,QAAQ;UACRzC,IAAA,EAAMA,IAAA;UACNC,OAAA,EAASA,OAAA;UACTH,WAAA,EAAaA;yBAEfiC,IAAA,CAACnD,mBAAA;UAAoBkB,WAAA,EAAaA;yBAClCiC,IAAA,CAAClD,eAAA;UAAgB6D,eAAA,EAAiBd;yBAClCG,IAAA,CAAC1C,aAAA;;;EAIT;EAEA,OAAON,QAAA;AACT","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../../src/views/CreateFirstUser/index.client.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA0B,SAAS,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAa1F,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC;IAC3C,YAAY,EAAE,SAAS,CAAA;IACvB,iBAAiB,CAAC,EAAE,KAAK,GAAG,wBAAwB,CAAA;IACpD,QAAQ,EAAE,MAAM,CAAA;CACjB,CAiEA,CAAA"}
1
+ {"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../../src/views/CreateFirstUser/index.client.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,SAAS,EACT,wBAAwB,EACzB,MAAM,SAAS,CAAA;AAchB,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC;IAC3C,YAAY,EAAE,SAAS,CAAA;IACvB,iBAAiB,CAAC,EAAE,KAAK,GAAG,wBAAwB,CAAA;IACpD,QAAQ,EAAE,MAAM,CAAA;CACjB,CAuEA,CAAA"}
@@ -2,12 +2,12 @@
2
2
 
3
3
  import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
- import { ConfirmPasswordField, Form, FormSubmit, PasswordField, RenderFields, useConfig, useTranslation } from '@payloadcms/ui';
5
+ import { ConfirmPasswordField, Form, FormSubmit, PasswordField, RenderFields, useAuth, useConfig, useTranslation } from '@payloadcms/ui';
6
6
  import { getFormState } from '@payloadcms/ui/shared';
7
7
  import React from 'react';
8
8
  import { RenderEmailAndUsernameFields } from '../../elements/EmailAndUsername/index.js';
9
9
  export const CreateFirstUserClient = t0 => {
10
- const $ = _c(13);
10
+ const $ = _c(16);
11
11
  const {
12
12
  initialState,
13
13
  loginWithUsername,
@@ -28,13 +28,16 @@ export const CreateFirstUserClient = t0 => {
28
28
  const {
29
29
  t
30
30
  } = useTranslation();
31
+ const {
32
+ setUser
33
+ } = useAuth();
31
34
  let t3;
32
- if ($[0] !== userSlug || $[1] !== getEntityConfig || $[2] !== apiRoute || $[3] !== serverURL || $[4] !== loginWithUsername || $[5] !== t || $[6] !== initialState || $[7] !== admin) {
35
+ if ($[0] !== userSlug || $[1] !== getEntityConfig || $[2] !== apiRoute || $[3] !== serverURL || $[4] !== setUser || $[5] !== loginWithUsername || $[6] !== t || $[7] !== initialState || $[8] !== admin) {
33
36
  const collectionConfig = getEntityConfig({
34
37
  collectionSlug: userSlug
35
38
  });
36
39
  let t4;
37
- if ($[9] !== apiRoute || $[10] !== userSlug || $[11] !== serverURL) {
40
+ if ($[10] !== apiRoute || $[11] !== userSlug || $[12] !== serverURL) {
38
41
  t4 = async t5 => {
39
42
  const {
40
43
  formState: prevFormState
@@ -53,19 +56,31 @@ export const CreateFirstUserClient = t0 => {
53
56
  });
54
57
  return state;
55
58
  };
56
- $[9] = apiRoute;
57
- $[10] = userSlug;
58
- $[11] = serverURL;
59
- $[12] = t4;
59
+ $[10] = apiRoute;
60
+ $[11] = userSlug;
61
+ $[12] = serverURL;
62
+ $[13] = t4;
60
63
  } else {
61
- t4 = $[12];
64
+ t4 = $[13];
62
65
  }
63
66
  const onChange = t4;
67
+ let t5;
68
+ if ($[14] !== setUser) {
69
+ t5 = data => {
70
+ setUser(data.user);
71
+ };
72
+ $[14] = setUser;
73
+ $[15] = t5;
74
+ } else {
75
+ t5 = $[15];
76
+ }
77
+ const handleFirstRegister = t5;
64
78
  t3 = _jsxs(Form, {
65
79
  action: `${serverURL}${apiRoute}/${userSlug}/first-register`,
66
80
  initialState,
67
81
  method: "POST",
68
82
  onChange: [onChange],
83
+ onSuccess: handleFirstRegister,
69
84
  redirect: admin,
70
85
  validationOperation: "create",
71
86
  children: [_jsx(RenderEmailAndUsernameFields, {
@@ -96,13 +111,14 @@ export const CreateFirstUserClient = t0 => {
96
111
  $[1] = getEntityConfig;
97
112
  $[2] = apiRoute;
98
113
  $[3] = serverURL;
99
- $[4] = loginWithUsername;
100
- $[5] = t;
101
- $[6] = initialState;
102
- $[7] = admin;
103
- $[8] = t3;
114
+ $[4] = setUser;
115
+ $[5] = loginWithUsername;
116
+ $[6] = t;
117
+ $[7] = initialState;
118
+ $[8] = admin;
119
+ $[9] = t3;
104
120
  } else {
105
- t3 = $[8];
121
+ t3 = $[9];
106
122
  }
107
123
  return t3;
108
124
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.client.js","names":["c","_c","ConfirmPasswordField","Form","FormSubmit","PasswordField","RenderFields","useConfig","useTranslation","getFormState","React","RenderEmailAndUsernameFields","CreateFirstUserClient","t0","$","initialState","loginWithUsername","userSlug","config","t1","getEntityConfig","routes","t2","serverURL","admin","api","apiRoute","t","t3","collectionConfig","collectionSlug","t4","t5","formState","prevFormState","state","body","operation","schemaPath","onChange","_jsxs","action","method","redirect","validationOperation","children","_jsx","className","readOnly","autoComplete","field","name","label","required","fields","forceRender","path","size"],"sources":["../../../src/views/CreateFirstUser/index.client.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, FormState, LoginWithUsernameOptions } from 'payload'\n\nimport {\n ConfirmPasswordField,\n Form,\n type FormProps,\n FormSubmit,\n PasswordField,\n RenderFields,\n useConfig,\n useTranslation,\n} from '@payloadcms/ui'\nimport { getFormState } from '@payloadcms/ui/shared'\nimport React from 'react'\n\nimport { RenderEmailAndUsernameFields } from '../../elements/EmailAndUsername/index.js'\n\nexport const CreateFirstUserClient: React.FC<{\n initialState: FormState\n loginWithUsername?: false | LoginWithUsernameOptions\n userSlug: string\n}> = ({ initialState, loginWithUsername, userSlug }) => {\n const {\n config: {\n routes: { admin, api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const { t } = useTranslation()\n\n const collectionConfig = getEntityConfig({ collectionSlug: userSlug }) as ClientCollectionConfig\n\n const onChange: FormProps['onChange'][0] = React.useCallback(\n async ({ formState: prevFormState }) => {\n const { state } = await getFormState({\n apiRoute,\n body: {\n collectionSlug: userSlug,\n formState: prevFormState,\n operation: 'create',\n schemaPath: `_${userSlug}.auth`,\n },\n serverURL,\n })\n return state\n },\n [apiRoute, userSlug, serverURL],\n )\n\n return (\n <Form\n action={`${serverURL}${apiRoute}/${userSlug}/first-register`}\n initialState={initialState}\n method=\"POST\"\n onChange={[onChange]}\n redirect={admin}\n validationOperation=\"create\"\n >\n <RenderEmailAndUsernameFields\n className=\"emailAndUsername\"\n loginWithUsername={loginWithUsername}\n operation=\"create\"\n readOnly={false}\n />\n <PasswordField\n autoComplete={'off'}\n field={{\n name: 'password',\n label: t('authentication:newPassword'),\n required: true,\n }}\n />\n <ConfirmPasswordField />\n <RenderFields\n fields={collectionConfig.fields}\n forceRender\n operation=\"create\"\n path=\"\"\n readOnly={false}\n schemaPath={userSlug}\n />\n <FormSubmit size=\"large\">{t('general:create')}</FormSubmit>\n </Form>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SACEC,oBAAoB,EACpBC,IAAI,EAEJC,UAAU,EACVC,aAAa,EACbC,YAAY,EACZC,SAAS,EACTC,cAAc,QACT;AACP,SAASC,YAAY,QAAQ;AAC7B,OAAOC,KAAA,MAAW;AAElB,SAASC,4BAA4B,QAAQ;AAE7C,OAAO,MAAMC,qBAAA,GAIRC,EAAA;EAAA,MAAAC,CAAA,GAAAb,EAAA;EAAC;IAAAc,YAAA;IAAAC,iBAAA;IAAAC;EAAA,IAAAJ,EAA6C;EACjD;IAAAK,MAAA,EAAAC,EAAA;IAAAC;EAAA,IAMIb,SAAA;EALM;IAAAc,MAAA,EAAAC,EAAA;IAAAC;EAAA,IAAAJ,EAGP;EAFS;IAAAK,KAAA;IAAAC,GAAA,EAAAC;EAAA,IAAAJ,EAAwB;EAMpC;IAAAK;EAAA,IAAcnB,cAAA;EAAA,IAAAoB,EAAA;EAAA,IAAAd,CAAA,QAAAG,QAAA,IAAAH,CAAA,QAAAM,eAAA,IAAAN,CAAA,QAAAY,QAAA,IAAAZ,CAAA,QAAAS,SAAA,IAAAT,CAAA,QAAAE,iBAAA,IAAAF,CAAA,QAAAa,CAAA,IAAAb,CAAA,QAAAC,YAAA,IAAAD,CAAA,QAAAU,KAAA;IAEd,MAAAK,gBAAA,GAAyBT,eAAA;MAAAU,cAAA,EAAkCb;IAAA,CAAS;IAAA,IAAAc,EAAA;IAAA,IAAAjB,CAAA,QAAAY,QAAA,IAAAZ,CAAA,SAAAG,QAAA,IAAAH,CAAA,SAAAS,SAAA;MAGlEQ,EAAA,SAAAC,EAAA;QAAO;UAAAC,SAAA,EAAAC;QAAA,IAAAF,EAA4B;QACjC;UAAAG;QAAA,UAAwB1B,YAAA;UAAAiB,QAAA;UAAAU,IAAA;YAAAN,cAAA,EAGJb,QAAA;YAAAgB,SAAA,EACLC,aAAA;YAAAG,SAAA,EACA;YAAAC,UAAA,EACC,IAAIrB,QAAA;UAAe;UAAAM;QAAA,CAGnC;QAAA,OACOY,KAAA;MAAA;MACTrB,CAAA,MAAAY,QAAA;MAAAZ,CAAA,OAAAG,QAAA;MAAAH,CAAA,OAAAS,SAAA;MAAAT,CAAA,OAAAiB,EAAA;IAAA;MAAAA,EAAA,GAAAjB,CAAA;IAAA;IAbF,MAAAyB,QAAA,GAA2CR,EAcV;IAI/BH,EAAA,GAAAY,KAAA,CAAArC,IAAA;MAAAsC,MAAA,EACU,GAAGlB,SAAA,GAAYG,QAAA,IAAYT,QAAA,iBAAyB;MAAAF,YAAA;MAAA2B,MAAA,EAErD;MAAAH,QAAA,GACIA,QAAA;MAAAI,QAAA,EACDnB,KAAA;MAAAoB,mBAAA,EACU;MAAAC,QAAA,GAEpBC,IAAA,CAAAnC,4BAAA;QAAAoC,SAAA,EACY;QAAA/B,iBAAA;QAAAqB,SAAA,EAEA;QAAAW,QAAA;MAAA,C,GAGZF,IAAA,CAAAzC,aAAA;QAAA4C,YAAA,EACgB;QAAAC,KAAA;UAAAC,IAAA,EAEN;UAAAC,KAAA,EACCzB,CAAA,CAAE;UAAA0B,QAAA;QAAA;MAAA,C,GAIbP,IAAA,CAAA5C,oBAAA,IAAC,GACD4C,IAAA,CAAAxC,YAAA;QAAAgD,MAAA,EACUzB,gBAAA,CAAAyB,MAAA;QAAAC,WAAA;QAAAlB,SAAA,EAEE;QAAAmB,IAAA,EACL;QAAAR,QAAA;QAAAV,UAAA,EAEOrB;MAAA,C,GAEd6B,IAAA,CAAA1C,UAAA;QAAAqD,IAAA,EAAiB;QAAAZ,QAAA,EAASlB,CAAA,CAAE;MAAA,C;;;;;;;;;;;;;;SA/B9BC,E;CAkCJ","ignoreList":[]}
1
+ {"version":3,"file":"index.client.js","names":["c","_c","ConfirmPasswordField","Form","FormSubmit","PasswordField","RenderFields","useAuth","useConfig","useTranslation","getFormState","React","RenderEmailAndUsernameFields","CreateFirstUserClient","t0","$","initialState","loginWithUsername","userSlug","config","t1","getEntityConfig","routes","t2","serverURL","admin","api","apiRoute","t","setUser","t3","collectionConfig","collectionSlug","t4","t5","formState","prevFormState","state","body","operation","schemaPath","onChange","data","user","handleFirstRegister","_jsxs","action","method","onSuccess","redirect","validationOperation","children","_jsx","className","readOnly","autoComplete","field","name","label","required","fields","forceRender","path","size"],"sources":["../../../src/views/CreateFirstUser/index.client.tsx"],"sourcesContent":["'use client'\nimport type {\n ClientCollectionConfig,\n ClientUser,\n FormState,\n LoginWithUsernameOptions,\n} from 'payload'\n\nimport {\n ConfirmPasswordField,\n Form,\n type FormProps,\n FormSubmit,\n PasswordField,\n RenderFields,\n useAuth,\n useConfig,\n useTranslation,\n} from '@payloadcms/ui'\nimport { getFormState } from '@payloadcms/ui/shared'\nimport React from 'react'\n\nimport { RenderEmailAndUsernameFields } from '../../elements/EmailAndUsername/index.js'\n\nexport const CreateFirstUserClient: React.FC<{\n initialState: FormState\n loginWithUsername?: false | LoginWithUsernameOptions\n userSlug: string\n}> = ({ initialState, loginWithUsername, userSlug }) => {\n const {\n config: {\n routes: { admin, api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const { t } = useTranslation()\n const { setUser } = useAuth()\n\n const collectionConfig = getEntityConfig({ collectionSlug: userSlug }) as ClientCollectionConfig\n\n const onChange: FormProps['onChange'][0] = React.useCallback(\n async ({ formState: prevFormState }) => {\n const { state } = await getFormState({\n apiRoute,\n body: {\n collectionSlug: userSlug,\n formState: prevFormState,\n operation: 'create',\n schemaPath: `_${userSlug}.auth`,\n },\n serverURL,\n })\n return state\n },\n [apiRoute, userSlug, serverURL],\n )\n\n const handleFirstRegister = (data: { user: ClientUser }) => {\n setUser(data.user)\n }\n\n return (\n <Form\n action={`${serverURL}${apiRoute}/${userSlug}/first-register`}\n initialState={initialState}\n method=\"POST\"\n onChange={[onChange]}\n onSuccess={handleFirstRegister}\n redirect={admin}\n validationOperation=\"create\"\n >\n <RenderEmailAndUsernameFields\n className=\"emailAndUsername\"\n loginWithUsername={loginWithUsername}\n operation=\"create\"\n readOnly={false}\n />\n <PasswordField\n autoComplete={'off'}\n field={{\n name: 'password',\n label: t('authentication:newPassword'),\n required: true,\n }}\n />\n <ConfirmPasswordField />\n <RenderFields\n fields={collectionConfig.fields}\n forceRender\n operation=\"create\"\n path=\"\"\n readOnly={false}\n schemaPath={userSlug}\n />\n <FormSubmit size=\"large\">{t('general:create')}</FormSubmit>\n </Form>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Edit/Default/index.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAA6D,MAAM,OAAO,CAAA;AAMjF,OAAO,cAAc,CAAA;AASrB,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EA6enC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Edit/Default/index.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAA6D,MAAM,OAAO,CAAA;AAMjF,OAAO,cAAc,CAAA;AASrB,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAycnC,CAAA"}