@payloadcms/ui 3.53.0-internal.2dadf5b → 3.53.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/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +2 -3
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/CodeEditor/CodeEditor.js +1 -1
- package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
- package/dist/elements/CopyToClipboard/index.d.ts.map +1 -1
- package/dist/elements/CopyToClipboard/index.js +78 -33
- package/dist/elements/CopyToClipboard/index.js.map +1 -1
- package/dist/elements/CopyToClipboard/index.scss +0 -8
- package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/elements/DatePicker/DatePicker.js +1 -1
- package/dist/elements/DatePicker/DatePicker.js.map +1 -1
- package/dist/elements/Link/index.d.ts +29 -2
- package/dist/elements/Link/index.d.ts.map +1 -1
- package/dist/elements/Link/index.js +1 -1
- package/dist/elements/Link/index.js.map +1 -1
- package/dist/elements/Upload/index.js +31 -15
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/exports/client/{CodeEditor-YP63NRLU.js → CodeEditor-POJ47VX6.js} +2 -2
- package/dist/exports/client/{DatePicker-QBWPYX2E.js → DatePicker-NMDEHPWL.js} +2 -2
- package/dist/exports/client/{chunk-TIQCV7VX.js → chunk-7RGKTZG2.js} +2 -2
- package/dist/exports/client/{chunk-TIQCV7VX.js.map → chunk-7RGKTZG2.js.map} +2 -2
- package/dist/exports/client/{chunk-5EP6VERX.js → chunk-PLMZTUXI.js} +3 -3
- package/dist/exports/client/chunk-PLMZTUXI.js.map +7 -0
- package/dist/exports/client/index.js +12 -12
- package/dist/exports/client/index.js.map +3 -3
- package/dist/exports/shared/index.js +2 -2
- package/dist/exports/shared/index.js.map +3 -3
- package/dist/fields/Array/index.d.ts +1 -1
- package/dist/fields/Blocks/index.d.ts +1 -1
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +4 -0
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Checkbox/index.d.ts +1 -1
- package/dist/fields/Code/index.d.ts +1 -1
- package/dist/fields/Collapsible/index.d.ts +1 -1
- package/dist/fields/DateTime/index.d.ts +1 -1
- package/dist/fields/Email/index.d.ts +1 -1
- package/dist/fields/Group/index.d.ts +1 -1
- package/dist/fields/JSON/index.d.ts +1 -1
- package/dist/fields/Join/index.d.ts +1 -1
- package/dist/fields/Join/index.d.ts.map +1 -1
- package/dist/fields/Join/index.js +1 -1
- package/dist/fields/Join/index.js.map +1 -1
- package/dist/fields/Number/index.d.ts +1 -1
- package/dist/fields/Point/index.d.ts +1 -1
- package/dist/fields/Relationship/index.d.ts +1 -1
- package/dist/fields/Row/index.d.ts +1 -1
- package/dist/fields/Select/index.d.ts +2 -2
- package/dist/fields/Tabs/index.d.ts +1 -1
- package/dist/fields/Text/index.d.ts +1 -1
- package/dist/fields/Textarea/index.d.ts +1 -1
- package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
- package/dist/forms/Form/fieldReducer.js +1 -1
- package/dist/forms/Form/fieldReducer.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +3 -2
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/mergeServerFormState.d.ts +4 -1
- package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
- package/dist/forms/Form/mergeServerFormState.js +37 -19
- package/dist/forms/Form/mergeServerFormState.js.map +1 -1
- package/dist/forms/Form/types.d.ts +15 -10
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
- package/dist/graphics/Account/Gravatar/index.js +1 -1
- package/dist/graphics/Account/Gravatar/index.js.map +1 -1
- package/dist/graphics/Account/index.d.ts.map +1 -1
- package/dist/graphics/Account/index.js +0 -1
- package/dist/graphics/Account/index.js.map +1 -1
- package/dist/graphics/File/index.d.ts.map +1 -1
- package/dist/graphics/File/index.js +4 -6
- package/dist/graphics/File/index.js.map +1 -1
- package/dist/providers/Auth/index.d.ts.map +1 -1
- package/dist/providers/Auth/index.js +12 -12
- package/dist/providers/Auth/index.js.map +1 -1
- package/dist/providers/DocumentInfo/types.d.ts +2 -1
- package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/types.js.map +1 -1
- package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts +2 -1
- package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/useGetDocPermissions.js +1 -1
- package/dist/providers/DocumentInfo/useGetDocPermissions.js.map +1 -1
- package/dist/providers/ServerFunctions/index.d.ts +1 -0
- package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
- package/dist/providers/ServerFunctions/index.js.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/filterFields.d.ts +2 -2
- package/dist/providers/TableColumns/buildColumnState/filterFields.d.ts.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/filterFields.js +26 -13
- package/dist/providers/TableColumns/buildColumnState/filterFields.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utilities/buildFormState.d.ts.map +1 -1
- package/dist/utilities/buildFormState.js +3 -6
- package/dist/utilities/buildFormState.js.map +1 -1
- package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
- package/dist/utilities/copyDataFromLocale.js +1 -1
- package/dist/utilities/copyDataFromLocale.js.map +1 -1
- package/dist/views/Edit/index.d.ts +4 -0
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +7 -4
- package/dist/views/Edit/index.js.map +1 -1
- package/package.json +5 -5
- package/dist/exports/client/chunk-5EP6VERX.js.map +0 -7
- /package/dist/exports/client/{CodeEditor-YP63NRLU.js.map → CodeEditor-POJ47VX6.js.map} +0 -0
- /package/dist/exports/client/{DatePicker-QBWPYX2E.js.map → DatePicker-NMDEHPWL.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildFormState.d.ts","sourceRoot":"","sources":["../../src/utilities/buildFormState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,SAAS,EACT,cAAc,EACf,MAAM,SAAS,CAAA;AAYhB,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;CACnC,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,KAAK,yBAAyB,GAAG;IAC/B,WAAW,CAAC,EAAE,KAAK,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,CACA;IACE,OAAO,EAAE,MAAM,CAAA;CAChB,GACD,WAAW,CACd,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,yBAAyB,GAAG,2BAA2B,CAAA;AAE1F,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAChD,kBAAkB,EAClB,OAAO,CAAC,oBAAoB,CAAC,CAsD9B,CAAA;AAED,eAAO,MAAM,cAAc,SACnB,kBAAkB,KACvB,OAAO,CAAC,2BAA2B,
|
|
1
|
+
{"version":3,"file":"buildFormState.d.ts","sourceRoot":"","sources":["../../src/utilities/buildFormState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,SAAS,EACT,cAAc,EACf,MAAM,SAAS,CAAA;AAYhB,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;CACnC,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,KAAK,yBAAyB,GAAG;IAC/B,WAAW,CAAC,EAAE,KAAK,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,CACA;IACE,OAAO,EAAE,MAAM,CAAA;CAChB,GACD,WAAW,CACd,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,yBAAyB,GAAG,2BAA2B,CAAA;AAE1F,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAChD,kBAAkB,EAClB,OAAO,CAAC,oBAAoB,CAAC,CAsD9B,CAAA;AAED,eAAO,MAAM,cAAc,SACnB,kBAAkB,KACvB,OAAO,CAAC,2BAA2B,CAoJrC,CAAA"}
|
|
@@ -89,7 +89,6 @@ export const buildFormState = async args => {
|
|
|
89
89
|
updateLastEdited
|
|
90
90
|
} = args;
|
|
91
91
|
const selectMode = select ? getSelectMode(select) : undefined;
|
|
92
|
-
let data = incomingData;
|
|
93
92
|
if (!collectionSlug && !globalSlug) {
|
|
94
93
|
throw new Error('Either collectionSlug or globalSlug must be provided');
|
|
95
94
|
}
|
|
@@ -119,11 +118,9 @@ export const buildFormState = async args => {
|
|
|
119
118
|
if ((!('fields' in fieldOrEntityConfig) || !fieldOrEntityConfig.fields || !fieldOrEntityConfig.fields.length) && 'type' in fieldOrEntityConfig && fieldOrEntityConfig.type !== 'blocks') {
|
|
120
119
|
throw new Error(`The field found in fieldSchemaMap for "${schemaPath}" does not contain any subfields.`);
|
|
121
120
|
}
|
|
122
|
-
// If there is
|
|
123
|
-
//
|
|
124
|
-
|
|
125
|
-
data = reduceFieldsToValues(formState, true);
|
|
126
|
-
}
|
|
121
|
+
// If there is form state but no data, deduce data from that form state, e.g. on initial load
|
|
122
|
+
// Otherwise, use the incoming data as the source of truth, e.g. on subsequent saves
|
|
123
|
+
const data = incomingData || reduceFieldsToValues(formState, true);
|
|
127
124
|
let documentData = undefined;
|
|
128
125
|
if (documentFormState) {
|
|
129
126
|
documentData = reduceFieldsToValues(documentFormState, true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildFormState.js","names":["formatErrors","getSelectMode","reduceFieldsToValues","fieldSchemasToFormState","renderField","getClientConfig","getClientSchemaMap","getSchemaMap","handleFormStateLocking","buildFormStateHandler","args","req","incomingUserSlug","user","collection","adminUserSlug","payload","config","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","res","buildFormState","err","logger","error","msg","message","id","idFromArgs","collectionSlug","data","incomingData","docPermissions","docPreferences","documentFormState","formState","globalSlug","initialBlockData","initialBlockFormState","mockRSCs","operation","readOnly","renderAllFields","i18n","returnLockStatus","schemaPath","select","skipValidation","updateLastEdited","selectMode","undefined","schemaMap","clientSchemaMap","importMap","fieldOrEntityConfig","get","fields","type","documentData","blockData","Array","isArray","formStateResult","clientFieldSchemaMap","fieldSchemaMap","permissions","preferences","previousFormState","renderFieldFn","upload","file","lockedStateResult","lockedState","state"],"sources":["../../src/utilities/buildFormState.ts"],"sourcesContent":["import type {\n BuildFormStateArgs,\n ClientConfig,\n ClientUser,\n ErrorResult,\n FormState,\n ServerFunction,\n} from 'payload'\n\nimport { formatErrors } from 'payload'\nimport { getSelectMode, reduceFieldsToValues } from 'payload/shared'\n\nimport { fieldSchemasToFormState } from '../forms/fieldSchemasToFormState/index.js'\nimport { renderField } from '../forms/fieldSchemasToFormState/renderField.js'\nimport { getClientConfig } from './getClientConfig.js'\nimport { getClientSchemaMap } from './getClientSchemaMap.js'\nimport { getSchemaMap } from './getSchemaMap.js'\nimport { handleFormStateLocking } from './handleFormStateLocking.js'\n\nexport type LockedState = {\n isLocked: boolean\n lastEditedAt: string\n user: ClientUser | number | string\n}\n\ntype BuildFormStateSuccessResult = {\n clientConfig?: ClientConfig\n errors?: never\n indexPath?: string\n lockedState?: LockedState\n state: FormState\n}\n\ntype BuildFormStateErrorResult = {\n lockedState?: never\n state?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildFormStateResult = BuildFormStateErrorResult | BuildFormStateSuccessResult\n\nexport const buildFormStateHandler: ServerFunction<\n BuildFormStateArgs,\n Promise<BuildFormStateResult>\n> = async (args) => {\n const { req } = args\n\n const incomingUserSlug = req.user?.collection\n const adminUserSlug = req.payload.config.admin.user\n\n try {\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = req.payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await req.payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const res = await buildFormState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n throw new Error('Unauthorized')\n }\n\n return formatErrors(err)\n }\n}\n\nexport const buildFormState = async (\n args: BuildFormStateArgs,\n): Promise<BuildFormStateSuccessResult> => {\n const {\n id: idFromArgs,\n collectionSlug,\n data: incomingData,\n docPermissions,\n docPreferences,\n documentFormState,\n formState,\n globalSlug,\n initialBlockData,\n initialBlockFormState,\n mockRSCs,\n operation,\n readOnly,\n renderAllFields,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n },\n returnLockStatus,\n schemaPath = collectionSlug || globalSlug,\n select,\n skipValidation,\n updateLastEdited,\n } = args\n\n const selectMode = select ? getSelectMode(select) : undefined\n\n let data = incomingData\n\n if (!collectionSlug && !globalSlug) {\n throw new Error('Either collectionSlug or globalSlug must be provided')\n }\n\n const schemaMap = getSchemaMap({\n collectionSlug,\n config,\n globalSlug,\n i18n,\n })\n\n const clientSchemaMap = getClientSchemaMap({\n collectionSlug,\n config: getClientConfig({ config, i18n, importMap: req.payload.importMap }),\n globalSlug,\n i18n,\n payload,\n schemaMap,\n })\n\n const id = collectionSlug ? idFromArgs : undefined\n const fieldOrEntityConfig = schemaMap.get(schemaPath)\n\n if (!fieldOrEntityConfig) {\n throw new Error(`Could not find \"${schemaPath}\" in the fieldSchemaMap`)\n }\n\n if (\n (!('fields' in fieldOrEntityConfig) ||\n !fieldOrEntityConfig.fields ||\n !fieldOrEntityConfig.fields.length) &&\n 'type' in fieldOrEntityConfig &&\n fieldOrEntityConfig.type !== 'blocks'\n ) {\n throw new Error(\n `The field found in fieldSchemaMap for \"${schemaPath}\" does not contain any subfields.`,\n )\n }\n\n // If there is a form state,\n // then we can deduce data from that form state\n if (formState) {\n data = reduceFieldsToValues(formState, true)\n }\n\n let documentData = undefined\n\n if (documentFormState) {\n documentData = reduceFieldsToValues(documentFormState, true)\n }\n\n let blockData = initialBlockData\n\n if (initialBlockFormState) {\n blockData = reduceFieldsToValues(initialBlockFormState, true)\n }\n\n /**\n * When building state for sub schemas we need to adjust:\n * - `fields`\n * - `parentSchemaPath`\n * - `parentPath`\n *\n * Type assertion is fine because we wrap sub schemas in an array\n * so we can safely map over them within `fieldSchemasToFormState`\n */\n const fields = Array.isArray(fieldOrEntityConfig)\n ? fieldOrEntityConfig\n : 'fields' in fieldOrEntityConfig\n ? fieldOrEntityConfig.fields\n : [fieldOrEntityConfig]\n\n const formStateResult = await fieldSchemasToFormState({\n id,\n clientFieldSchemaMap: clientSchemaMap,\n collectionSlug,\n data,\n documentData,\n fields,\n fieldSchemaMap: schemaMap,\n initialBlockData: blockData,\n mockRSCs,\n operation,\n permissions: docPermissions?.fields || {},\n preferences: docPreferences || { fields: {} },\n previousFormState: formState,\n readOnly,\n renderAllFields,\n renderFieldFn: renderField,\n req,\n schemaPath,\n select,\n selectMode,\n skipValidation,\n })\n\n // Maintain form state of auth / upload fields\n if (collectionSlug && formState) {\n if (payload.collections[collectionSlug]?.config?.upload && formState.file) {\n formStateResult.file = formState.file\n }\n }\n\n let lockedStateResult\n\n if (returnLockStatus) {\n lockedStateResult = await handleFormStateLocking({\n id,\n collectionSlug,\n globalSlug,\n req,\n updateLastEdited,\n })\n }\n\n return {\n lockedState: lockedStateResult,\n state: formStateResult,\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"buildFormState.js","names":["formatErrors","getSelectMode","reduceFieldsToValues","fieldSchemasToFormState","renderField","getClientConfig","getClientSchemaMap","getSchemaMap","handleFormStateLocking","buildFormStateHandler","args","req","incomingUserSlug","user","collection","adminUserSlug","payload","config","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","res","buildFormState","err","logger","error","msg","message","id","idFromArgs","collectionSlug","data","incomingData","docPermissions","docPreferences","documentFormState","formState","globalSlug","initialBlockData","initialBlockFormState","mockRSCs","operation","readOnly","renderAllFields","i18n","returnLockStatus","schemaPath","select","skipValidation","updateLastEdited","selectMode","undefined","schemaMap","clientSchemaMap","importMap","fieldOrEntityConfig","get","fields","type","documentData","blockData","Array","isArray","formStateResult","clientFieldSchemaMap","fieldSchemaMap","permissions","preferences","previousFormState","renderFieldFn","upload","file","lockedStateResult","lockedState","state"],"sources":["../../src/utilities/buildFormState.ts"],"sourcesContent":["import type {\n BuildFormStateArgs,\n ClientConfig,\n ClientUser,\n ErrorResult,\n FormState,\n ServerFunction,\n} from 'payload'\n\nimport { formatErrors } from 'payload'\nimport { getSelectMode, reduceFieldsToValues } from 'payload/shared'\n\nimport { fieldSchemasToFormState } from '../forms/fieldSchemasToFormState/index.js'\nimport { renderField } from '../forms/fieldSchemasToFormState/renderField.js'\nimport { getClientConfig } from './getClientConfig.js'\nimport { getClientSchemaMap } from './getClientSchemaMap.js'\nimport { getSchemaMap } from './getSchemaMap.js'\nimport { handleFormStateLocking } from './handleFormStateLocking.js'\n\nexport type LockedState = {\n isLocked: boolean\n lastEditedAt: string\n user: ClientUser | number | string\n}\n\ntype BuildFormStateSuccessResult = {\n clientConfig?: ClientConfig\n errors?: never\n indexPath?: string\n lockedState?: LockedState\n state: FormState\n}\n\ntype BuildFormStateErrorResult = {\n lockedState?: never\n state?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildFormStateResult = BuildFormStateErrorResult | BuildFormStateSuccessResult\n\nexport const buildFormStateHandler: ServerFunction<\n BuildFormStateArgs,\n Promise<BuildFormStateResult>\n> = async (args) => {\n const { req } = args\n\n const incomingUserSlug = req.user?.collection\n const adminUserSlug = req.payload.config.admin.user\n\n try {\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = req.payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await req.payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const res = await buildFormState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n throw new Error('Unauthorized')\n }\n\n return formatErrors(err)\n }\n}\n\nexport const buildFormState = async (\n args: BuildFormStateArgs,\n): Promise<BuildFormStateSuccessResult> => {\n const {\n id: idFromArgs,\n collectionSlug,\n data: incomingData,\n docPermissions,\n docPreferences,\n documentFormState,\n formState,\n globalSlug,\n initialBlockData,\n initialBlockFormState,\n mockRSCs,\n operation,\n readOnly,\n renderAllFields,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n },\n returnLockStatus,\n schemaPath = collectionSlug || globalSlug,\n select,\n skipValidation,\n updateLastEdited,\n } = args\n\n const selectMode = select ? getSelectMode(select) : undefined\n\n if (!collectionSlug && !globalSlug) {\n throw new Error('Either collectionSlug or globalSlug must be provided')\n }\n\n const schemaMap = getSchemaMap({\n collectionSlug,\n config,\n globalSlug,\n i18n,\n })\n\n const clientSchemaMap = getClientSchemaMap({\n collectionSlug,\n config: getClientConfig({ config, i18n, importMap: req.payload.importMap }),\n globalSlug,\n i18n,\n payload,\n schemaMap,\n })\n\n const id = collectionSlug ? idFromArgs : undefined\n const fieldOrEntityConfig = schemaMap.get(schemaPath)\n\n if (!fieldOrEntityConfig) {\n throw new Error(`Could not find \"${schemaPath}\" in the fieldSchemaMap`)\n }\n\n if (\n (!('fields' in fieldOrEntityConfig) ||\n !fieldOrEntityConfig.fields ||\n !fieldOrEntityConfig.fields.length) &&\n 'type' in fieldOrEntityConfig &&\n fieldOrEntityConfig.type !== 'blocks'\n ) {\n throw new Error(\n `The field found in fieldSchemaMap for \"${schemaPath}\" does not contain any subfields.`,\n )\n }\n\n // If there is form state but no data, deduce data from that form state, e.g. on initial load\n // Otherwise, use the incoming data as the source of truth, e.g. on subsequent saves\n const data = incomingData || reduceFieldsToValues(formState, true)\n\n let documentData = undefined\n\n if (documentFormState) {\n documentData = reduceFieldsToValues(documentFormState, true)\n }\n\n let blockData = initialBlockData\n\n if (initialBlockFormState) {\n blockData = reduceFieldsToValues(initialBlockFormState, true)\n }\n\n /**\n * When building state for sub schemas we need to adjust:\n * - `fields`\n * - `parentSchemaPath`\n * - `parentPath`\n *\n * Type assertion is fine because we wrap sub schemas in an array\n * so we can safely map over them within `fieldSchemasToFormState`\n */\n const fields = Array.isArray(fieldOrEntityConfig)\n ? fieldOrEntityConfig\n : 'fields' in fieldOrEntityConfig\n ? fieldOrEntityConfig.fields\n : [fieldOrEntityConfig]\n\n const formStateResult = await fieldSchemasToFormState({\n id,\n clientFieldSchemaMap: clientSchemaMap,\n collectionSlug,\n data,\n documentData,\n fields,\n fieldSchemaMap: schemaMap,\n initialBlockData: blockData,\n mockRSCs,\n operation,\n permissions: docPermissions?.fields || {},\n preferences: docPreferences || { fields: {} },\n previousFormState: formState,\n readOnly,\n renderAllFields,\n renderFieldFn: renderField,\n req,\n schemaPath,\n select,\n selectMode,\n skipValidation,\n })\n\n // Maintain form state of auth / upload fields\n if (collectionSlug && formState) {\n if (payload.collections[collectionSlug]?.config?.upload && formState.file) {\n formStateResult.file = formState.file\n }\n }\n\n let lockedStateResult\n\n if (returnLockStatus) {\n lockedStateResult = await handleFormStateLocking({\n id,\n collectionSlug,\n globalSlug,\n req,\n updateLastEdited,\n })\n }\n\n return {\n lockedState: lockedStateResult,\n state: formStateResult,\n }\n}\n"],"mappings":"AASA,SAASA,YAAY,QAAQ;AAC7B,SAASC,aAAa,EAAEC,oBAAoB,QAAQ;AAEpD,SAASC,uBAAuB,QAAQ;AACxC,SAASC,WAAW,QAAQ;AAC5B,SAASC,eAAe,QAAQ;AAChC,SAASC,kBAAkB,QAAQ;AACnC,SAASC,YAAY,QAAQ;AAC7B,SAASC,sBAAsB,QAAQ;AA4BvC,OAAO,MAAMC,qBAAA,GAGT,MAAOC,IAAA;EACT,MAAM;IAAEC;EAAG,CAAE,GAAGD,IAAA;EAEhB,MAAME,gBAAA,GAAmBD,GAAA,CAAIE,IAAI,EAAEC,UAAA;EACnC,MAAMC,aAAA,GAAgBJ,GAAA,CAAIK,OAAO,CAACC,MAAM,CAACC,KAAK,CAACL,IAAI;EAEnD,IAAI;IACF;IACA,IAAID,gBAAA,EAAkB;MACpB,MAAMO,mBAAA,GAAsBR,GAAA,CAAIK,OAAO,CAACI,WAAW,CAACR,gBAAA,CAAiB,CAACK,MAAM,CAACI,MAAM,EAAEH,KAAA;MAErF;MACA,IAAIC,mBAAA,EAAqB;QACvB,MAAMG,cAAA,GAAiB,MAAMH,mBAAA,CAAoB;UAAER;QAAI;QAEvD,IAAI,CAACW,cAAA,EAAgB;UACnB,MAAM,IAAIC,KAAA,CAAM;QAClB;QACA;MACF,OAAO,IAAIR,aAAA,KAAkBH,gBAAA,EAAkB;QAC7C,MAAM,IAAIW,KAAA,CAAM;MAClB;IACF,OAAO;MACL,MAAMC,QAAA,GAAW,MAAMb,GAAA,CAAIK,OAAO,CAACS,IAAI,CAAC;QACtCX,UAAA,EAAYC,aAAA;QACZW,KAAA,EAAO;QACPC,KAAA,EAAO;QACPC,UAAA,EAAY;MACd;MAEA;MACA,IAAIJ,QAAA,CAASK,IAAI,CAACC,MAAM,EAAE;QACxB,MAAM,IAAIP,KAAA,CAAM;MAClB;IACF;IAEA,MAAMQ,GAAA,GAAM,MAAMC,cAAA,CAAetB,IAAA;IACjC,OAAOqB,GAAA;EACT,EAAE,OAAOE,GAAA,EAAK;IACZtB,GAAA,CAAIK,OAAO,CAACkB,MAAM,CAACC,KAAK,CAAC;MAAEF,GAAA;MAAKG,GAAA,EAAK;IAAyC;IAE9E,IAAIH,GAAA,CAAII,OAAO,KAAK,8CAA8C;MAChE,OAAO;QACLA,OAAA,EAASJ,GAAA,CAAII;MACf;IACF;IAEA,IAAIJ,GAAA,CAAII,OAAO,KAAK,gBAAgB;MAClC,MAAM,IAAId,KAAA,CAAM;IAClB;IAEA,OAAOvB,YAAA,CAAaiC,GAAA;EACtB;AACF;AAEA,OAAO,MAAMD,cAAA,GAAiB,MAC5BtB,IAAA;EAEA,MAAM;IACJ4B,EAAA,EAAIC,UAAU;IACdC,cAAc;IACdC,IAAA,EAAMC,YAAY;IAClBC,cAAc;IACdC,cAAc;IACdC,iBAAiB;IACjBC,SAAS;IACTC,UAAU;IACVC,gBAAgB;IAChBC,qBAAqB;IACrBC,QAAQ;IACRC,SAAS;IACTC,QAAQ;IACRC,eAAe;IACf1C,GAAG;IACHA,GAAA,EAAK;MACH2C,IAAI;MACJtC,OAAO;MACPA,OAAA,EAAS;QAAEC;MAAM;IAAE,CACpB;IACDsC,gBAAgB;IAChBC,UAAA,GAAahB,cAAA,IAAkBO,UAAU;IACzCU,MAAM;IACNC,cAAc;IACdC;EAAgB,CACjB,GAAGjD,IAAA;EAEJ,MAAMkD,UAAA,GAAaH,MAAA,GAASxD,aAAA,CAAcwD,MAAA,IAAUI,SAAA;EAEpD,IAAI,CAACrB,cAAA,IAAkB,CAACO,UAAA,EAAY;IAClC,MAAM,IAAIxB,KAAA,CAAM;EAClB;EAEA,MAAMuC,SAAA,GAAYvD,YAAA,CAAa;IAC7BiC,cAAA;IACAvB,MAAA;IACA8B,UAAA;IACAO;EACF;EAEA,MAAMS,eAAA,GAAkBzD,kBAAA,CAAmB;IACzCkC,cAAA;IACAvB,MAAA,EAAQZ,eAAA,CAAgB;MAAEY,MAAA;MAAQqC,IAAA;MAAMU,SAAA,EAAWrD,GAAA,CAAIK,OAAO,CAACgD;IAAU;IACzEjB,UAAA;IACAO,IAAA;IACAtC,OAAA;IACA8C;EACF;EAEA,MAAMxB,EAAA,GAAKE,cAAA,GAAiBD,UAAA,GAAasB,SAAA;EACzC,MAAMI,mBAAA,GAAsBH,SAAA,CAAUI,GAAG,CAACV,UAAA;EAE1C,IAAI,CAACS,mBAAA,EAAqB;IACxB,MAAM,IAAI1C,KAAA,CAAM,mBAAmBiC,UAAA,yBAAmC;EACxE;EAEA,IACE,CAAC,EAAE,YAAYS,mBAAkB,KAC/B,CAACA,mBAAA,CAAoBE,MAAM,IAC3B,CAACF,mBAAA,CAAoBE,MAAM,CAACrC,MAAM,KACpC,UAAUmC,mBAAA,IACVA,mBAAA,CAAoBG,IAAI,KAAK,UAC7B;IACA,MAAM,IAAI7C,KAAA,CACR,0CAA0CiC,UAAA,mCAA6C;EAE3F;EAEA;EACA;EACA,MAAMf,IAAA,GAAOC,YAAA,IAAgBxC,oBAAA,CAAqB4C,SAAA,EAAW;EAE7D,IAAIuB,YAAA,GAAeR,SAAA;EAEnB,IAAIhB,iBAAA,EAAmB;IACrBwB,YAAA,GAAenE,oBAAA,CAAqB2C,iBAAA,EAAmB;EACzD;EAEA,IAAIyB,SAAA,GAAYtB,gBAAA;EAEhB,IAAIC,qBAAA,EAAuB;IACzBqB,SAAA,GAAYpE,oBAAA,CAAqB+C,qBAAA,EAAuB;EAC1D;EAEA;;;;;;;;;EASA,MAAMkB,MAAA,GAASI,KAAA,CAAMC,OAAO,CAACP,mBAAA,IACzBA,mBAAA,GACA,YAAYA,mBAAA,GACVA,mBAAA,CAAoBE,MAAM,GAC1B,CAACF,mBAAA,CAAoB;EAE3B,MAAMQ,eAAA,GAAkB,MAAMtE,uBAAA,CAAwB;IACpDmC,EAAA;IACAoC,oBAAA,EAAsBX,eAAA;IACtBvB,cAAA;IACAC,IAAA;IACA4B,YAAA;IACAF,MAAA;IACAQ,cAAA,EAAgBb,SAAA;IAChBd,gBAAA,EAAkBsB,SAAA;IAClBpB,QAAA;IACAC,SAAA;IACAyB,WAAA,EAAajC,cAAA,EAAgBwB,MAAA,IAAU,CAAC;IACxCU,WAAA,EAAajC,cAAA,IAAkB;MAAEuB,MAAA,EAAQ,CAAC;IAAE;IAC5CW,iBAAA,EAAmBhC,SAAA;IACnBM,QAAA;IACAC,eAAA;IACA0B,aAAA,EAAe3E,WAAA;IACfO,GAAA;IACA6C,UAAA;IACAC,MAAA;IACAG,UAAA;IACAF;EACF;EAEA;EACA,IAAIlB,cAAA,IAAkBM,SAAA,EAAW;IAC/B,IAAI9B,OAAA,CAAQI,WAAW,CAACoB,cAAA,CAAe,EAAEvB,MAAA,EAAQ+D,MAAA,IAAUlC,SAAA,CAAUmC,IAAI,EAAE;MACzER,eAAA,CAAgBQ,IAAI,GAAGnC,SAAA,CAAUmC,IAAI;IACvC;EACF;EAEA,IAAIC,iBAAA;EAEJ,IAAI3B,gBAAA,EAAkB;IACpB2B,iBAAA,GAAoB,MAAM1E,sBAAA,CAAuB;MAC/C8B,EAAA;MACAE,cAAA;MACAO,UAAA;MACApC,GAAA;MACAgD;IACF;EACF;EAEA,OAAO;IACLwB,WAAA,EAAaD,iBAAA;IACbE,KAAA,EAAOX;EACT;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copyDataFromLocale.d.ts","sourceRoot":"","sources":["../../src/utilities/copyDataFromLocale.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EAKnB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"copyDataFromLocale.d.ts","sourceRoot":"","sources":["../../src/utilities/copyDataFromLocale.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EAKnB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,SAAS,CAAA;AAKhB,MAAM,MAAM,sBAAsB,GAAG;IACnC,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,GAAG,EAAE,cAAc,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AA6LD,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,sBAAsB,CAiB5E,CAAA;AAED,eAAO,MAAM,kBAAkB,SAAgB,sBAAsB,0CAqHpE,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import ObjectIdImport from 'bson-objectid';
|
|
2
2
|
import { formatErrors, traverseFields } from 'payload';
|
|
3
3
|
import { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from 'payload/shared';
|
|
4
|
-
const ObjectId = ObjectIdImport.default
|
|
4
|
+
const ObjectId = 'default' in ObjectIdImport ? ObjectIdImport.default : ObjectIdImport;
|
|
5
5
|
function iterateFields(fields, fromLocaleData, toLocaleData, req, parentIsLocalized) {
|
|
6
6
|
fields.map(field => {
|
|
7
7
|
if (fieldAffectsData(field)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copyDataFromLocale.js","names":["ObjectIdImport","formatErrors","traverseFields","fieldAffectsData","fieldShouldBeLocalized","tabHasName","ObjectId","default","iterateFields","fields","fromLocaleData","toLocaleData","req","parentIsLocalized","map","field","type","name","undefined","includes","item","index","id","toHexString","localized","Array","isArray","length","blockData","block","payload","blocks","blockType","blockReferences","find","slug","tabs","tab","mergeData","removeIdIfParentIsLocalized","data","callback","ref","fillEmpty","copyDataFromLocaleHandler","args","copyDataFromLocale","err","logger","error","msg","fromLocale","toLocale","message","collectionSlug","docID","globalSlug","overrideData","collections","globals","user","incomingUserSlug","collection","adminUserSlug","config","admin","adminAccessFunction","access","canAccessAdmin","Error","Promise","allSettled","findGlobal","depth","locale","overrideAccess","findByID","joins","status","fromLocaleDataWithoutID","value","toLocaleDataWithoutID","dataWithID","updateGlobal","update"],"sources":["../../src/utilities/copyDataFromLocale.ts"],"sourcesContent":["import ObjectIdImport from 'bson-objectid'\nimport {\n type CollectionSlug,\n type Data,\n type Field,\n type FlattenedBlock,\n formatErrors,\n type PayloadRequest,\n type ServerFunction,\n traverseFields,\n} from 'payload'\nimport { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from 'payload/shared'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\n\nexport type CopyDataFromLocaleArgs = {\n collectionSlug?: CollectionSlug\n docID?: number | string\n fromLocale: string\n globalSlug?: string\n overrideData?: boolean\n req: PayloadRequest\n toLocale: string\n}\n\nfunction iterateFields(\n fields: Field[],\n fromLocaleData: Data,\n toLocaleData: Data,\n req: PayloadRequest,\n parentIsLocalized: boolean,\n): void {\n fields.map((field) => {\n if (fieldAffectsData(field)) {\n switch (field.type) {\n case 'array':\n // if the field has no value, take the source value\n if (\n field.name in toLocaleData &&\n // only replace if the target value is null or undefined\n [null, undefined].includes(toLocaleData[field.name]) &&\n field.name in fromLocaleData\n ) {\n toLocaleData[field.name] = fromLocaleData[field.name]\n break\n }\n\n // if the field has a value - loop over the data from target\n if (field.name in toLocaleData) {\n toLocaleData[field.name].map((item: Data, index: number) => {\n if (fromLocaleData[field.name]?.[index]) {\n // Generate new IDs if the field is localized to prevent errors with relational DBs.\n if (fieldShouldBeLocalized({ field, parentIsLocalized })) {\n toLocaleData[field.name][index].id = new ObjectId().toHexString()\n }\n\n iterateFields(\n field.fields,\n fromLocaleData[field.name][index],\n item,\n req,\n parentIsLocalized || field.localized,\n )\n }\n })\n }\n break\n\n case 'blocks':\n // if the field has no value, take the source value\n if (\n field.name in toLocaleData &&\n // only replace if the target value is null, undefined, or empty array\n ([null, undefined].includes(toLocaleData[field.name]) ||\n (Array.isArray(toLocaleData[field.name]) && toLocaleData[field.name].length === 0)) &&\n field.name in fromLocaleData\n ) {\n toLocaleData[field.name] = fromLocaleData[field.name]\n break\n }\n\n // if the field has a value - loop over the data from target\n if (field.name in toLocaleData) {\n toLocaleData[field.name].map((blockData: Data, index: number) => {\n const block =\n req.payload.blocks[blockData.blockType] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === blockData.blockType,\n ) as FlattenedBlock | undefined)\n\n // Generate new IDs if the field is localized to prevent errors with relational DBs.\n if (fieldShouldBeLocalized({ field, parentIsLocalized })) {\n toLocaleData[field.name][index].id = new ObjectId().toHexString()\n }\n\n if (block?.fields?.length) {\n iterateFields(\n block?.fields,\n fromLocaleData[field.name][index],\n blockData,\n req,\n parentIsLocalized || field.localized,\n )\n }\n })\n }\n\n break\n\n case 'checkbox':\n case 'code':\n case 'date':\n case 'email':\n case 'json':\n case 'number':\n case 'point':\n case 'radio':\n case 'relationship':\n case 'richText':\n case 'select':\n case 'text':\n case 'textarea':\n case 'upload':\n if (\n field.name in toLocaleData &&\n // only replace if the target value is null or undefined\n [null, undefined].includes(toLocaleData[field.name]) &&\n field.name in fromLocaleData\n ) {\n toLocaleData[field.name] = fromLocaleData[field.name]\n }\n break\n\n case 'group': {\n if (\n fieldAffectsData(field) &&\n field.name in toLocaleData &&\n fromLocaleData?.[field.name] !== undefined\n ) {\n iterateFields(\n field.fields,\n fromLocaleData[field.name],\n toLocaleData[field.name],\n req,\n parentIsLocalized || field.localized,\n )\n } else {\n iterateFields(field.fields, fromLocaleData, toLocaleData, req, parentIsLocalized)\n }\n break\n }\n }\n } else {\n switch (field.type) {\n case 'collapsible':\n case 'row':\n iterateFields(field.fields, fromLocaleData, toLocaleData, req, parentIsLocalized)\n break\n\n case 'tabs':\n field.tabs.map((tab) => {\n if (tabHasName(tab)) {\n if (tab.name in toLocaleData && fromLocaleData?.[tab.name] !== undefined) {\n iterateFields(\n tab.fields,\n fromLocaleData[tab.name],\n toLocaleData[tab.name],\n req,\n parentIsLocalized,\n )\n }\n } else {\n iterateFields(tab.fields, fromLocaleData, toLocaleData, req, parentIsLocalized)\n }\n })\n break\n }\n }\n })\n}\n\nfunction mergeData(\n fromLocaleData: Data,\n toLocaleData: Data,\n fields: Field[],\n req: PayloadRequest,\n parentIsLocalized: boolean,\n): Data {\n iterateFields(fields, fromLocaleData, toLocaleData, req, parentIsLocalized)\n\n return toLocaleData\n}\n\n/**\n * We don't have to recursively remove all ids,\n * just the ones from the fields inside a localized array or block.\n */\nfunction removeIdIfParentIsLocalized(data: Data, fields: Field[]): Data {\n traverseFields({\n callback: ({ parentIsLocalized, ref }) => {\n if (parentIsLocalized) {\n delete (ref as { id: unknown }).id\n }\n },\n fields,\n fillEmpty: false,\n ref: data,\n })\n\n return data\n}\n\nexport const copyDataFromLocaleHandler: ServerFunction<CopyDataFromLocaleArgs> = async (args) => {\n const { req } = args\n\n try {\n return await copyDataFromLocale(args)\n } catch (err) {\n req.payload.logger.error({\n err,\n msg: `There was an error copying data from \"${args.fromLocale}\" to \"${args.toLocale}\"`,\n })\n\n if (err.message === 'Unauthorized') {\n return null\n }\n\n return formatErrors(err)\n }\n}\n\nexport const copyDataFromLocale = async (args: CopyDataFromLocaleArgs) => {\n const {\n collectionSlug,\n docID,\n fromLocale,\n globalSlug,\n overrideData = false,\n req: {\n payload,\n payload: { collections, globals },\n user,\n },\n req,\n toLocale,\n } = args\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = payload.config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req: args.req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n }\n\n const [fromLocaleData, toLocaleData] = await Promise.allSettled([\n globalSlug\n ? payload.findGlobal({\n slug: globalSlug,\n depth: 0,\n locale: fromLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n })\n : payload.findByID({\n id: docID,\n collection: collectionSlug,\n depth: 0,\n joins: false,\n locale: fromLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n }),\n globalSlug\n ? payload.findGlobal({\n slug: globalSlug,\n depth: 0,\n locale: toLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n })\n : payload.findByID({\n id: docID,\n collection: collectionSlug,\n depth: 0,\n joins: false,\n locale: toLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n }),\n ])\n\n if (fromLocaleData.status === 'rejected') {\n throw new Error(`Error fetching data from locale \"${fromLocale}\"`)\n }\n\n if (toLocaleData.status === 'rejected') {\n throw new Error(`Error fetching data from locale \"${toLocale}\"`)\n }\n\n const fields = globalSlug\n ? globals[globalSlug].config.fields\n : collections[collectionSlug].config.fields\n\n const fromLocaleDataWithoutID = fromLocaleData.value\n const toLocaleDataWithoutID = toLocaleData.value\n\n const dataWithID = overrideData\n ? fromLocaleDataWithoutID\n : mergeData(fromLocaleDataWithoutID, toLocaleDataWithoutID, fields, req, false)\n\n const data = removeIdIfParentIsLocalized(dataWithID, fields)\n\n return globalSlug\n ? await payload.updateGlobal({\n slug: globalSlug,\n data,\n locale: toLocale,\n overrideAccess: false,\n req,\n user,\n })\n : await payload.update({\n id: docID,\n collection: collectionSlug,\n data,\n locale: toLocale,\n overrideAccess: false,\n req,\n user,\n })\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"copyDataFromLocale.js","names":["ObjectIdImport","formatErrors","traverseFields","fieldAffectsData","fieldShouldBeLocalized","tabHasName","ObjectId","default","iterateFields","fields","fromLocaleData","toLocaleData","req","parentIsLocalized","map","field","type","name","undefined","includes","item","index","id","toHexString","localized","Array","isArray","length","blockData","block","payload","blocks","blockType","blockReferences","find","slug","tabs","tab","mergeData","removeIdIfParentIsLocalized","data","callback","ref","fillEmpty","copyDataFromLocaleHandler","args","copyDataFromLocale","err","logger","error","msg","fromLocale","toLocale","message","collectionSlug","docID","globalSlug","overrideData","collections","globals","user","incomingUserSlug","collection","adminUserSlug","config","admin","adminAccessFunction","access","canAccessAdmin","Error","Promise","allSettled","findGlobal","depth","locale","overrideAccess","findByID","joins","status","fromLocaleDataWithoutID","value","toLocaleDataWithoutID","dataWithID","updateGlobal","update"],"sources":["../../src/utilities/copyDataFromLocale.ts"],"sourcesContent":["import ObjectIdImport from 'bson-objectid'\nimport {\n type CollectionSlug,\n type Data,\n type Field,\n type FlattenedBlock,\n formatErrors,\n type PayloadRequest,\n type ServerFunction,\n traverseFields,\n} from 'payload'\nimport { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from 'payload/shared'\n\nconst ObjectId = 'default' in ObjectIdImport ? ObjectIdImport.default : ObjectIdImport\n\nexport type CopyDataFromLocaleArgs = {\n collectionSlug?: CollectionSlug\n docID?: number | string\n fromLocale: string\n globalSlug?: string\n overrideData?: boolean\n req: PayloadRequest\n toLocale: string\n}\n\nfunction iterateFields(\n fields: Field[],\n fromLocaleData: Data,\n toLocaleData: Data,\n req: PayloadRequest,\n parentIsLocalized: boolean,\n): void {\n fields.map((field) => {\n if (fieldAffectsData(field)) {\n switch (field.type) {\n case 'array':\n // if the field has no value, take the source value\n if (\n field.name in toLocaleData &&\n // only replace if the target value is null or undefined\n [null, undefined].includes(toLocaleData[field.name]) &&\n field.name in fromLocaleData\n ) {\n toLocaleData[field.name] = fromLocaleData[field.name]\n break\n }\n\n // if the field has a value - loop over the data from target\n if (field.name in toLocaleData) {\n toLocaleData[field.name].map((item: Data, index: number) => {\n if (fromLocaleData[field.name]?.[index]) {\n // Generate new IDs if the field is localized to prevent errors with relational DBs.\n if (fieldShouldBeLocalized({ field, parentIsLocalized })) {\n toLocaleData[field.name][index].id = new ObjectId().toHexString()\n }\n\n iterateFields(\n field.fields,\n fromLocaleData[field.name][index],\n item,\n req,\n parentIsLocalized || field.localized,\n )\n }\n })\n }\n break\n\n case 'blocks':\n // if the field has no value, take the source value\n if (\n field.name in toLocaleData &&\n // only replace if the target value is null, undefined, or empty array\n ([null, undefined].includes(toLocaleData[field.name]) ||\n (Array.isArray(toLocaleData[field.name]) && toLocaleData[field.name].length === 0)) &&\n field.name in fromLocaleData\n ) {\n toLocaleData[field.name] = fromLocaleData[field.name]\n break\n }\n\n // if the field has a value - loop over the data from target\n if (field.name in toLocaleData) {\n toLocaleData[field.name].map((blockData: Data, index: number) => {\n const block =\n req.payload.blocks[blockData.blockType] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === blockData.blockType,\n ) as FlattenedBlock | undefined)\n\n // Generate new IDs if the field is localized to prevent errors with relational DBs.\n if (fieldShouldBeLocalized({ field, parentIsLocalized })) {\n toLocaleData[field.name][index].id = new ObjectId().toHexString()\n }\n\n if (block?.fields?.length) {\n iterateFields(\n block?.fields,\n fromLocaleData[field.name][index],\n blockData,\n req,\n parentIsLocalized || field.localized,\n )\n }\n })\n }\n\n break\n\n case 'checkbox':\n case 'code':\n case 'date':\n case 'email':\n case 'json':\n case 'number':\n case 'point':\n case 'radio':\n case 'relationship':\n case 'richText':\n case 'select':\n case 'text':\n case 'textarea':\n case 'upload':\n if (\n field.name in toLocaleData &&\n // only replace if the target value is null or undefined\n [null, undefined].includes(toLocaleData[field.name]) &&\n field.name in fromLocaleData\n ) {\n toLocaleData[field.name] = fromLocaleData[field.name]\n }\n break\n\n case 'group': {\n if (\n fieldAffectsData(field) &&\n field.name in toLocaleData &&\n fromLocaleData?.[field.name] !== undefined\n ) {\n iterateFields(\n field.fields,\n fromLocaleData[field.name],\n toLocaleData[field.name],\n req,\n parentIsLocalized || field.localized,\n )\n } else {\n iterateFields(field.fields, fromLocaleData, toLocaleData, req, parentIsLocalized)\n }\n break\n }\n }\n } else {\n switch (field.type) {\n case 'collapsible':\n case 'row':\n iterateFields(field.fields, fromLocaleData, toLocaleData, req, parentIsLocalized)\n break\n\n case 'tabs':\n field.tabs.map((tab) => {\n if (tabHasName(tab)) {\n if (tab.name in toLocaleData && fromLocaleData?.[tab.name] !== undefined) {\n iterateFields(\n tab.fields,\n fromLocaleData[tab.name],\n toLocaleData[tab.name],\n req,\n parentIsLocalized,\n )\n }\n } else {\n iterateFields(tab.fields, fromLocaleData, toLocaleData, req, parentIsLocalized)\n }\n })\n break\n }\n }\n })\n}\n\nfunction mergeData(\n fromLocaleData: Data,\n toLocaleData: Data,\n fields: Field[],\n req: PayloadRequest,\n parentIsLocalized: boolean,\n): Data {\n iterateFields(fields, fromLocaleData, toLocaleData, req, parentIsLocalized)\n\n return toLocaleData\n}\n\n/**\n * We don't have to recursively remove all ids,\n * just the ones from the fields inside a localized array or block.\n */\nfunction removeIdIfParentIsLocalized(data: Data, fields: Field[]): Data {\n traverseFields({\n callback: ({ parentIsLocalized, ref }) => {\n if (parentIsLocalized) {\n delete (ref as { id: unknown }).id\n }\n },\n fields,\n fillEmpty: false,\n ref: data,\n })\n\n return data\n}\n\nexport const copyDataFromLocaleHandler: ServerFunction<CopyDataFromLocaleArgs> = async (args) => {\n const { req } = args\n\n try {\n return await copyDataFromLocale(args)\n } catch (err) {\n req.payload.logger.error({\n err,\n msg: `There was an error copying data from \"${args.fromLocale}\" to \"${args.toLocale}\"`,\n })\n\n if (err.message === 'Unauthorized') {\n return null\n }\n\n return formatErrors(err)\n }\n}\n\nexport const copyDataFromLocale = async (args: CopyDataFromLocaleArgs) => {\n const {\n collectionSlug,\n docID,\n fromLocale,\n globalSlug,\n overrideData = false,\n req: {\n payload,\n payload: { collections, globals },\n user,\n },\n req,\n toLocale,\n } = args\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = payload.config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req: args.req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n }\n\n const [fromLocaleData, toLocaleData] = await Promise.allSettled([\n globalSlug\n ? payload.findGlobal({\n slug: globalSlug,\n depth: 0,\n locale: fromLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n })\n : payload.findByID({\n id: docID,\n collection: collectionSlug,\n depth: 0,\n joins: false,\n locale: fromLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n }),\n globalSlug\n ? payload.findGlobal({\n slug: globalSlug,\n depth: 0,\n locale: toLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n })\n : payload.findByID({\n id: docID,\n collection: collectionSlug,\n depth: 0,\n joins: false,\n locale: toLocale,\n overrideAccess: false,\n user,\n // `select` would allow us to select only the fields we need in the future\n }),\n ])\n\n if (fromLocaleData.status === 'rejected') {\n throw new Error(`Error fetching data from locale \"${fromLocale}\"`)\n }\n\n if (toLocaleData.status === 'rejected') {\n throw new Error(`Error fetching data from locale \"${toLocale}\"`)\n }\n\n const fields = globalSlug\n ? globals[globalSlug].config.fields\n : collections[collectionSlug].config.fields\n\n const fromLocaleDataWithoutID = fromLocaleData.value\n const toLocaleDataWithoutID = toLocaleData.value\n\n const dataWithID = overrideData\n ? fromLocaleDataWithoutID\n : mergeData(fromLocaleDataWithoutID, toLocaleDataWithoutID, fields, req, false)\n\n const data = removeIdIfParentIsLocalized(dataWithID, fields)\n\n return globalSlug\n ? await payload.updateGlobal({\n slug: globalSlug,\n data,\n locale: toLocale,\n overrideAccess: false,\n req,\n user,\n })\n : await payload.update({\n id: docID,\n collection: collectionSlug,\n data,\n locale: toLocale,\n overrideAccess: false,\n req,\n user,\n })\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import type { DocumentViewClientProps } from 'payload';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import './index.scss';
|
|
4
|
+
export type OnSaveContext = {
|
|
5
|
+
getDocPermissions?: boolean;
|
|
6
|
+
incrementVersionCount?: boolean;
|
|
7
|
+
};
|
|
4
8
|
export declare function DefaultEditView({ BeforeDocumentControls, Description, EditMenuItems, PreviewButton, PublishButton, SaveButton, SaveDraftButton, Upload: CustomUpload, UploadControls, }: DocumentViewClientProps): React.JSX.Element;
|
|
5
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Edit/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAc,uBAAuB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Edit/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAc,uBAAuB,EAAa,MAAM,SAAS,CAAA;AAI7E,OAAO,KAAsE,MAAM,OAAO,CAAA;AAkC1F,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,aAAa,GAAG;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAKD,wBAAgB,eAAe,CAAC,EAC9B,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,eAAe,EACf,MAAM,EAAE,YAAY,EACpB,cAAc,GACf,EAAE,uBAAuB,qBAumBzB"}
|
package/dist/views/Edit/index.js
CHANGED
|
@@ -212,10 +212,10 @@ export function DefaultEditView({
|
|
|
212
212
|
}, [collectionSlug, documentIsLocked, documentLockState, globalSlug, id, isLockingEnabled, setCurrentEditor, setDocumentIsLocked, unlockDocument, user?.id]);
|
|
213
213
|
const onSave = useCallback(async (json, options) => {
|
|
214
214
|
const {
|
|
215
|
-
context
|
|
215
|
+
context,
|
|
216
|
+
formState
|
|
216
217
|
} = options || {};
|
|
217
218
|
const controller = handleAbortRef(abortOnSaveRef);
|
|
218
|
-
// @ts-expect-error can ignore
|
|
219
219
|
const document = json?.doc || json?.result;
|
|
220
220
|
const updatedAt = document?.updatedAt || new Date().toISOString();
|
|
221
221
|
reportUpdate({
|
|
@@ -255,7 +255,9 @@ export function DefaultEditView({
|
|
|
255
255
|
} else {
|
|
256
256
|
resetUploadEdits();
|
|
257
257
|
}
|
|
258
|
-
|
|
258
|
+
if (context?.getDocPermissions !== false) {
|
|
259
|
+
await getDocPermissions(json);
|
|
260
|
+
}
|
|
259
261
|
if (id || globalSlug) {
|
|
260
262
|
const docPreferences = await getDocPreferences();
|
|
261
263
|
const {
|
|
@@ -266,9 +268,10 @@ export function DefaultEditView({
|
|
|
266
268
|
data: document,
|
|
267
269
|
docPermissions,
|
|
268
270
|
docPreferences,
|
|
271
|
+
formState,
|
|
269
272
|
globalSlug,
|
|
270
273
|
operation,
|
|
271
|
-
renderAllFields:
|
|
274
|
+
renderAllFields: false,
|
|
272
275
|
returnLockStatus: false,
|
|
273
276
|
schemaPath: schemaPathSegments.join('.'),
|
|
274
277
|
signal: controller.signal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useRouter","useSearchParams","formatAdminURL","React","Fragment","useCallback","useEffect","useMemo","useRef","useState","DocumentControls","DocumentDrawerHeader","useDocumentDrawerContext","DocumentFields","DocumentLocked","DocumentTakeOver","LeaveWithoutSaving","LivePreviewWindow","Upload","Form","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useEditDepth","useLivePreviewContext","OperationProvider","useRouteTransition","useServerFunctions","UploadControlsProvider","useUploadEdits","abortAndIgnore","handleAbortRef","handleBackToDashboard","handleGoBack","handleTakeOver","Auth","SetDocumentStepNav","SetDocumentTitle","baseClass","DefaultEditView","BeforeDocumentControls","Description","EditMenuItems","PreviewButton","PublishButton","SaveButton","SaveDraftButton","CustomUpload","UploadControls","id","action","AfterDocument","AfterFields","apiURL","BeforeFields","collectionSlug","currentEditor","data","disableActions","disableCreate","disableLeaveWithoutSaving","docPermissions","documentIsLocked","documentLockState","getDocPermissions","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","incrementVersionCount","initialState","isEditing","isInitializing","isTrashed","lastUpdateTime","redirectAfterCreate","redirectAfterDelete","redirectAfterDuplicate","redirectAfterRestore","setCurrentEditor","setData","setDocumentIsLocked","setLastUpdateTime","unlockDocument","updateDocumentEditor","clearDoc","drawerSlug","onDelete","onDuplicate","onRestore","onSave","onSaveFromContext","isInDrawer","Boolean","refreshCookieAsync","user","config","admin","userSlug","routes","adminRoute","getEntityConfig","collectionConfig","globalConfig","depth","router","params","reportUpdate","resetUploadEdits","getFormState","startRouteTransition","isLivePreviewEnabled","isLivePreviewing","previewWindowType","abortOnChangeRef","abortOnSaveRef","locale","get","entitySlug","slug","operation","auth","undefined","upload","docConfig","lockDocumentsProp","lockDocuments","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","autosaveEnabled","versions","drafts","autosave","preventLeaveWithoutSaving","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","schemaPathSegments","validateBeforeSubmit","setValidateBeforeSubmit","disableLocalStrategy","nextHrefRef","handleDocumentLocking","lockedState","previousOwnerID","current","lockedUserID","hasShownLockedModal","isLocked","handlePrevent","nextHref","handleLeaveConfirm","lockUser","isLockOwnedByCurrentUser","nextPath","URL","pathname","isInternalView","some","path","includes","err","console","error","json","options","context","controller","document","doc","result","updatedAt","toISOString","redirectRoute","push","docPreferences","state","renderAllFields","returnLockStatus","schemaPath","join","signal","skipValidation","onChange","formState","prevFormState","submitted","currentTime","timeSinceLastUpdate","updateLastEdited","abortOnChange","abortOnSave","shouldShowDocumentLockedModal","isFolderCollection","folders","_jsx","className","filter","_jsxs","disabled","disableValidationOnSubmit","isDocumentForm","method","onSuccess","showDocumentID","isActive","onReadOnly","onTakeOver","onConfirm","onPrevent","pluralLabel","labels","plural","useAsTitle","fallback","toString","customComponents","onDrawerCreateNew","permissions","readOnlyForIncomingUser","email","loginWithUsername","readOnly","requirePassword","useAPIKey","username","verify","uploadConfig","fields","forceSidebarWrap"],"sources":["../../../src/views/Edit/index.tsx"],"sourcesContent":["/* eslint-disable react-compiler/react-compiler -- TODO: fix */\n'use client'\n\nimport type { ClientUser, DocumentViewClientProps } from 'payload'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\nimport type { LockedState } from '../../utilities/buildFormState.js'\n\nimport { DocumentControls } from '../../elements/DocumentControls/index.js'\nimport { DocumentDrawerHeader } from '../../elements/DocumentDrawer/DrawerHeader/index.js'\nimport { useDocumentDrawerContext } from '../../elements/DocumentDrawer/Provider.js'\nimport { DocumentFields } from '../../elements/DocumentFields/index.js'\nimport { DocumentLocked } from '../../elements/DocumentLocked/index.js'\nimport { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js'\nimport { LivePreviewWindow } from '../../elements/LivePreview/Window/index.js'\nimport { Upload } from '../../elements/Upload/index.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLivePreviewContext } from '../../providers/LivePreview/context.js'\nimport { OperationProvider } from '../../providers/Operation/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { UploadControlsProvider } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { handleBackToDashboard } from '../../utilities/handleBackToDashboard.js'\nimport { handleGoBack } from '../../utilities/handleGoBack.js'\nimport { handleTakeOver } from '../../utilities/handleTakeOver.js'\nimport { Auth } from './Auth/index.js'\nimport { SetDocumentStepNav } from './SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from './SetDocumentTitle/index.js'\nimport './index.scss'\n\nconst baseClass = 'collection-edit'\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\nexport function DefaultEditView({\n BeforeDocumentControls,\n Description,\n EditMenuItems,\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n Upload: CustomUpload,\n UploadControls,\n}: DocumentViewClientProps) {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeFields,\n collectionSlug,\n currentEditor,\n data,\n disableActions,\n disableCreate,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n documentLockState,\n getDocPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialState,\n isEditing,\n isInitializing,\n isTrashed,\n lastUpdateTime,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n redirectAfterRestore,\n setCurrentEditor,\n setData,\n setDocumentIsLocked,\n setLastUpdateTime,\n unlockDocument,\n updateDocumentEditor,\n } = useDocumentInfo()\n\n const {\n clearDoc,\n drawerSlug,\n onDelete,\n onDuplicate,\n onRestore,\n onSave: onSaveFromContext,\n } = useDocumentDrawerContext()\n\n const isInDrawer = Boolean(drawerSlug)\n\n const { refreshCookieAsync, user } = useAuth()\n\n const {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const globalConfig = getEntityConfig({ globalSlug })\n\n const depth = useEditDepth()\n\n const router = useRouter()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n const { getFormState } = useServerFunctions()\n const { startRouteTransition } = useRouteTransition()\n const { isLivePreviewEnabled, isLivePreviewing, previewWindowType } = useLivePreviewContext()\n\n const abortOnChangeRef = useRef<AbortController>(null)\n const abortOnSaveRef = useRef<AbortController>(null)\n\n const locale = params.get('locale')\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const operation = collectionSlug && !id ? 'create' : 'update'\n\n const auth = collectionConfig ? collectionConfig.auth : undefined\n const upload = collectionConfig ? collectionConfig.upload : undefined\n\n const docConfig = collectionConfig || globalConfig\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 [editSessionStartTime, setEditSessionStartTime] = useState(Date.now())\n\n const lockExpiryTime = lastUpdateTime + lockDurationInMilliseconds\n\n const isLockExpired = Date.now() > lockExpiryTime\n\n const schemaPathSegments = useMemo(() => [entitySlug], [entitySlug])\n\n const [validateBeforeSubmit, setValidateBeforeSubmit] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return true\n }\n\n return false\n })\n\n const nextHrefRef = React.useRef<null | string>(null)\n\n const handleDocumentLocking = useCallback(\n (lockedState: LockedState) => {\n setDocumentIsLocked(true)\n const previousOwnerID =\n typeof documentLockState.current?.user === 'object'\n ? documentLockState.current?.user?.id\n : documentLockState.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 (!documentLockState.current || lockedUserID !== previousOwnerID) {\n if (previousOwnerID === user.id && lockedUserID !== user.id) {\n setShowTakeOverModal(true)\n documentLockState.current.hasShownLockedModal = true\n }\n\n documentLockState.current = {\n hasShownLockedModal: documentLockState.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user as ClientUser,\n }\n setCurrentEditor(lockedState.user as ClientUser)\n }\n }\n },\n [documentLockState, setCurrentEditor, setDocumentIsLocked, user?.id],\n )\n\n const handlePrevent = useCallback((nextHref: null | string) => {\n nextHrefRef.current = nextHref\n }, [])\n\n const handleLeaveConfirm = useCallback(async () => {\n const lockUser = documentLockState.current?.user\n\n const isLockOwnedByCurrentUser =\n typeof lockUser === 'object' ? lockUser?.id === user?.id : lockUser === user?.id\n\n if (isLockingEnabled && documentIsLocked && (id || globalSlug)) {\n // Check where user is trying to go\n const nextPath = nextHrefRef.current ? new URL(nextHrefRef.current).pathname : ''\n const isInternalView = ['/preview', '/api', '/versions'].some((path) =>\n nextPath.includes(path),\n )\n\n // Only retain the lock if the user is still viewing the document\n if (!isInternalView) {\n if (isLockOwnedByCurrentUser) {\n try {\n await unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n } catch (err) {\n console.error('Failed to unlock before leave', err) // eslint-disable-line no-console\n }\n }\n }\n }\n }, [\n collectionSlug,\n documentIsLocked,\n documentLockState,\n globalSlug,\n id,\n isLockingEnabled,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n user?.id,\n ])\n\n const onSave = useCallback<FormProps['onSuccess']>(\n async (json, options) => {\n const { context } = options || {}\n\n const controller = handleAbortRef(abortOnSaveRef)\n\n // @ts-expect-error can ignore\n const document = json?.doc || json?.result\n\n const updatedAt = document?.updatedAt || new Date().toISOString()\n\n reportUpdate({\n id,\n entitySlug,\n updatedAt,\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 setLastUpdateTime(updatedAt)\n\n if (context?.incrementVersionCount !== false) {\n incrementVersionCount()\n }\n\n if (typeof setData === 'function') {\n void setData(document || {})\n }\n\n if (typeof onSaveFromContext === 'function') {\n const operation = id ? 'update' : 'create'\n\n void onSaveFromContext({\n ...(json as Record<string, unknown>),\n context,\n operation,\n // @ts-expect-error todo: this is not right, should be under `doc`?\n updatedAt:\n operation === 'update'\n ? new Date().toISOString()\n : document?.updatedAt || new Date().toISOString(),\n })\n }\n\n if (!isEditing && depth < 2 && redirectAfterCreate !== false) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${document?.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) {\n const docPreferences = await getDocPreferences()\n\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: document,\n docPermissions,\n docPreferences,\n globalSlug,\n operation,\n renderAllFields: true,\n returnLockStatus: false,\n schemaPath: schemaPathSegments.join('.'),\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 reportUpdate,\n id,\n entitySlug,\n user,\n collectionSlug,\n userSlug,\n setLastUpdateTime,\n setData,\n onSaveFromContext,\n isEditing,\n depth,\n redirectAfterCreate,\n getDocPermissions,\n globalSlug,\n refreshCookieAsync,\n incrementVersionCount,\n adminRoute,\n locale,\n startRouteTransition,\n router,\n resetUploadEdits,\n getDocPreferences,\n getFormState,\n docPermissions,\n operation,\n schemaPathSegments,\n isLockingEnabled,\n setDocumentIsLocked,\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 result = await getFormState({\n id,\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n renderAllFields: false,\n returnLockStatus: isLockingEnabled,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n skipValidation: !submitted,\n updateLastEdited,\n })\n\n if (!result) {\n return\n }\n\n const { lockedState, state } = result\n\n if (isLockingEnabled) {\n handleDocumentLocking(lockedState)\n }\n\n abortOnChangeRef.current = null\n\n return state\n },\n [\n id,\n collectionSlug,\n getDocPreferences,\n getFormState,\n globalSlug,\n handleDocumentLocking,\n isLockingEnabled,\n operation,\n schemaPathSegments,\n docPermissions,\n editSessionStartTime,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n setShowTakeOverModal(false)\n }\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 !documentLockState.current?.hasShownLockedModal &&\n !isLockExpired\n\n const isFolderCollection = config.folders && collectionSlug === config.folders?.slug\n\n return (\n <main\n className={[\n baseClass,\n (id || globalSlug) && `${baseClass}--is-editing`,\n globalSlug && `global-edit--${globalSlug}`,\n collectionSlug && `collection-edit--${collectionSlug}`,\n isLivePreviewing && previewWindowType === 'iframe' && `${baseClass}--is-live-previewing`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || isInitializing || !hasSavePermission || isTrashed}\n disableValidationOnSubmit={!validateBeforeSubmit}\n initialState={!isInitializing && initialState}\n isDocumentForm={true}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isInDrawer && (\n <DocumentDrawerHeader drawerSlug={drawerSlug} showDocumentID={!isFolderCollection} />\n )}\n {isLockingEnabled && shouldShowDocumentLockedModal && (\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 documentLockState,\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 && (\n <LeaveWithoutSaving onConfirm={handleLeaveConfirm} onPrevent={handlePrevent} />\n )}\n {!isInDrawer && (\n <SetDocumentStepNav\n collectionSlug={collectionConfig?.slug}\n globalSlug={globalConfig?.slug}\n id={id}\n isTrashed={isTrashed}\n pluralLabel={collectionConfig?.labels?.plural}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n )}\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={depth <= 1 ? id?.toString() : undefined}\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={data}\n disableActions={disableActions || isFolderCollection || isTrashed}\n disableCreate={disableCreate}\n EditMenuItems={EditMenuItems}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n isInDrawer={isInDrawer}\n isTrashed={isTrashed}\n onDelete={onDelete}\n onDrawerCreateNew={clearDoc}\n onDuplicate={onDuplicate}\n onRestore={onRestore}\n onSave={onSave}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n true,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockState,\n isLockingEnabled,\n setIsReadOnlyForIncomingUser,\n )\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n redirectAfterRestore={redirectAfterRestore}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <div\n className={[\n `${baseClass}__main-wrapper`,\n previewWindowType === 'popup' && `${baseClass}--detached`,\n ]\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={\n BeforeFields || (\n <Fragment>\n {auth && (\n <Auth\n className={`${baseClass}__auth`}\n collectionSlug={collectionConfig.slug}\n disableLocalStrategy={collectionConfig.auth?.disableLocalStrategy}\n email={data?.email}\n loginWithUsername={auth?.loginWithUsername}\n operation={operation}\n readOnly={!hasSavePermission}\n requirePassword={!id}\n setValidateBeforeSubmit={setValidateBeforeSubmit}\n useAPIKey={auth.useAPIKey}\n username={data?.username}\n verify={auth.verify}\n />\n )}\n {upload && (\n <React.Fragment>\n <UploadControlsProvider>\n {CustomUpload || (\n <Upload\n collectionSlug={collectionConfig.slug}\n initialState={initialState}\n uploadConfig={upload}\n UploadControls={UploadControls}\n />\n )}\n </UploadControlsProvider>\n </React.Fragment>\n )}\n </Fragment>\n )\n }\n Description={Description}\n docPermissions={docPermissions}\n fields={docConfig.fields}\n forceSidebarWrap={isLivePreviewing}\n isTrashed={isTrashed}\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission || isTrashed}\n schemaPathSegments={schemaPathSegments}\n />\n {AfterDocument}\n </div>\n {isLivePreviewEnabled && !isInDrawer && (\n <LivePreviewWindow collectionSlug={collectionSlug} globalSlug={globalSlug} />\n )}\n </div>\n </Form>\n </OperationProvider>\n </main>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useRouter","useSearchParams","formatAdminURL","React","Fragment","useCallback","useEffect","useMemo","useRef","useState","DocumentControls","DocumentDrawerHeader","useDocumentDrawerContext","DocumentFields","DocumentLocked","DocumentTakeOver","LeaveWithoutSaving","LivePreviewWindow","Upload","Form","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useEditDepth","useLivePreviewContext","OperationProvider","useRouteTransition","useServerFunctions","UploadControlsProvider","useUploadEdits","abortAndIgnore","handleAbortRef","handleBackToDashboard","handleGoBack","handleTakeOver","Auth","SetDocumentStepNav","SetDocumentTitle","baseClass","DefaultEditView","BeforeDocumentControls","Description","EditMenuItems","PreviewButton","PublishButton","SaveButton","SaveDraftButton","CustomUpload","UploadControls","id","action","AfterDocument","AfterFields","apiURL","BeforeFields","collectionSlug","currentEditor","data","disableActions","disableCreate","disableLeaveWithoutSaving","docPermissions","documentIsLocked","documentLockState","getDocPermissions","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","incrementVersionCount","initialState","isEditing","isInitializing","isTrashed","lastUpdateTime","redirectAfterCreate","redirectAfterDelete","redirectAfterDuplicate","redirectAfterRestore","setCurrentEditor","setData","setDocumentIsLocked","setLastUpdateTime","unlockDocument","updateDocumentEditor","clearDoc","drawerSlug","onDelete","onDuplicate","onRestore","onSave","onSaveFromContext","isInDrawer","Boolean","refreshCookieAsync","user","config","admin","userSlug","routes","adminRoute","getEntityConfig","collectionConfig","globalConfig","depth","router","params","reportUpdate","resetUploadEdits","getFormState","startRouteTransition","isLivePreviewEnabled","isLivePreviewing","previewWindowType","abortOnChangeRef","abortOnSaveRef","locale","get","entitySlug","slug","operation","auth","undefined","upload","docConfig","lockDocumentsProp","lockDocuments","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","autosaveEnabled","versions","drafts","autosave","preventLeaveWithoutSaving","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","schemaPathSegments","validateBeforeSubmit","setValidateBeforeSubmit","disableLocalStrategy","nextHrefRef","handleDocumentLocking","lockedState","previousOwnerID","current","lockedUserID","hasShownLockedModal","isLocked","handlePrevent","nextHref","handleLeaveConfirm","lockUser","isLockOwnedByCurrentUser","nextPath","URL","pathname","isInternalView","some","path","includes","err","console","error","json","options","context","formState","controller","document","doc","result","updatedAt","toISOString","redirectRoute","push","docPreferences","state","renderAllFields","returnLockStatus","schemaPath","join","signal","skipValidation","onChange","prevFormState","submitted","currentTime","timeSinceLastUpdate","updateLastEdited","abortOnChange","abortOnSave","shouldShowDocumentLockedModal","isFolderCollection","folders","_jsx","className","filter","_jsxs","disabled","disableValidationOnSubmit","isDocumentForm","method","onSuccess","showDocumentID","isActive","onReadOnly","onTakeOver","onConfirm","onPrevent","pluralLabel","labels","plural","useAsTitle","fallback","toString","customComponents","onDrawerCreateNew","permissions","readOnlyForIncomingUser","email","loginWithUsername","readOnly","requirePassword","useAPIKey","username","verify","uploadConfig","fields","forceSidebarWrap"],"sources":["../../../src/views/Edit/index.tsx"],"sourcesContent":["/* eslint-disable react-compiler/react-compiler -- TODO: fix */\n'use client'\n\nimport type { ClientUser, DocumentViewClientProps, FormState } from 'payload'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\nimport type { FormOnSuccess } from '../../forms/Form/types.js'\nimport type { LockedState } from '../../utilities/buildFormState.js'\n\nimport { DocumentControls } from '../../elements/DocumentControls/index.js'\nimport { DocumentDrawerHeader } from '../../elements/DocumentDrawer/DrawerHeader/index.js'\nimport { useDocumentDrawerContext } from '../../elements/DocumentDrawer/Provider.js'\nimport { DocumentFields } from '../../elements/DocumentFields/index.js'\nimport { DocumentLocked } from '../../elements/DocumentLocked/index.js'\nimport { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js'\nimport { LivePreviewWindow } from '../../elements/LivePreview/Window/index.js'\nimport { Upload } from '../../elements/Upload/index.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLivePreviewContext } from '../../providers/LivePreview/context.js'\nimport { OperationProvider } from '../../providers/Operation/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { UploadControlsProvider } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { handleBackToDashboard } from '../../utilities/handleBackToDashboard.js'\nimport { handleGoBack } from '../../utilities/handleGoBack.js'\nimport { handleTakeOver } from '../../utilities/handleTakeOver.js'\nimport { Auth } from './Auth/index.js'\nimport { SetDocumentStepNav } from './SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from './SetDocumentTitle/index.js'\nimport './index.scss'\n\nconst baseClass = 'collection-edit'\n\nexport type OnSaveContext = {\n getDocPermissions?: boolean\n incrementVersionCount?: boolean\n}\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\nexport function DefaultEditView({\n BeforeDocumentControls,\n Description,\n EditMenuItems,\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n Upload: CustomUpload,\n UploadControls,\n}: DocumentViewClientProps) {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeFields,\n collectionSlug,\n currentEditor,\n data,\n disableActions,\n disableCreate,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n documentLockState,\n getDocPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialState,\n isEditing,\n isInitializing,\n isTrashed,\n lastUpdateTime,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n redirectAfterRestore,\n setCurrentEditor,\n setData,\n setDocumentIsLocked,\n setLastUpdateTime,\n unlockDocument,\n updateDocumentEditor,\n } = useDocumentInfo()\n\n const {\n clearDoc,\n drawerSlug,\n onDelete,\n onDuplicate,\n onRestore,\n onSave: onSaveFromContext,\n } = useDocumentDrawerContext()\n\n const isInDrawer = Boolean(drawerSlug)\n\n const { refreshCookieAsync, user } = useAuth()\n\n const {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const globalConfig = getEntityConfig({ globalSlug })\n\n const depth = useEditDepth()\n\n const router = useRouter()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n const { getFormState } = useServerFunctions()\n const { startRouteTransition } = useRouteTransition()\n const { isLivePreviewEnabled, isLivePreviewing, previewWindowType } = useLivePreviewContext()\n\n const abortOnChangeRef = useRef<AbortController>(null)\n const abortOnSaveRef = useRef<AbortController>(null)\n\n const locale = params.get('locale')\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const operation = collectionSlug && !id ? 'create' : 'update'\n\n const auth = collectionConfig ? collectionConfig.auth : undefined\n const upload = collectionConfig ? collectionConfig.upload : undefined\n\n const docConfig = collectionConfig || globalConfig\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 [editSessionStartTime, setEditSessionStartTime] = useState(Date.now())\n\n const lockExpiryTime = lastUpdateTime + lockDurationInMilliseconds\n\n const isLockExpired = Date.now() > lockExpiryTime\n\n const schemaPathSegments = useMemo(() => [entitySlug], [entitySlug])\n\n const [validateBeforeSubmit, setValidateBeforeSubmit] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return true\n }\n\n return false\n })\n\n const nextHrefRef = React.useRef<null | string>(null)\n\n const handleDocumentLocking = useCallback(\n (lockedState: LockedState) => {\n setDocumentIsLocked(true)\n const previousOwnerID =\n typeof documentLockState.current?.user === 'object'\n ? documentLockState.current?.user?.id\n : documentLockState.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 (!documentLockState.current || lockedUserID !== previousOwnerID) {\n if (previousOwnerID === user.id && lockedUserID !== user.id) {\n setShowTakeOverModal(true)\n documentLockState.current.hasShownLockedModal = true\n }\n\n documentLockState.current = {\n hasShownLockedModal: documentLockState.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user as ClientUser,\n }\n setCurrentEditor(lockedState.user as ClientUser)\n }\n }\n },\n [documentLockState, setCurrentEditor, setDocumentIsLocked, user?.id],\n )\n\n const handlePrevent = useCallback((nextHref: null | string) => {\n nextHrefRef.current = nextHref\n }, [])\n\n const handleLeaveConfirm = useCallback(async () => {\n const lockUser = documentLockState.current?.user\n\n const isLockOwnedByCurrentUser =\n typeof lockUser === 'object' ? lockUser?.id === user?.id : lockUser === user?.id\n\n if (isLockingEnabled && documentIsLocked && (id || globalSlug)) {\n // Check where user is trying to go\n const nextPath = nextHrefRef.current ? new URL(nextHrefRef.current).pathname : ''\n const isInternalView = ['/preview', '/api', '/versions'].some((path) =>\n nextPath.includes(path),\n )\n\n // Only retain the lock if the user is still viewing the document\n if (!isInternalView) {\n if (isLockOwnedByCurrentUser) {\n try {\n await unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n } catch (err) {\n console.error('Failed to unlock before leave', err) // eslint-disable-line no-console\n }\n }\n }\n }\n }, [\n collectionSlug,\n documentIsLocked,\n documentLockState,\n globalSlug,\n id,\n isLockingEnabled,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n user?.id,\n ])\n\n const onSave: FormOnSuccess<any, OnSaveContext> = useCallback(\n async (json, options) => {\n const { context, formState } = options || {}\n\n const controller = handleAbortRef(abortOnSaveRef)\n\n const document = json?.doc || json?.result\n\n const updatedAt = document?.updatedAt || new Date().toISOString()\n\n reportUpdate({\n id,\n entitySlug,\n updatedAt,\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 setLastUpdateTime(updatedAt)\n\n if (context?.incrementVersionCount !== false) {\n incrementVersionCount()\n }\n\n if (typeof setData === 'function') {\n void setData(document || {})\n }\n\n if (typeof onSaveFromContext === 'function') {\n const operation = id ? 'update' : 'create'\n\n void onSaveFromContext({\n ...(json as Record<string, unknown>),\n context,\n operation,\n // @ts-expect-error todo: this is not right, should be under `doc`?\n updatedAt:\n operation === 'update'\n ? new Date().toISOString()\n : document?.updatedAt || new Date().toISOString(),\n })\n }\n\n if (!isEditing && depth < 2 && redirectAfterCreate !== false) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${document?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n\n startRouteTransition(() => router.push(redirectRoute))\n } else {\n resetUploadEdits()\n }\n\n if (context?.getDocPermissions !== false) {\n await getDocPermissions(json)\n }\n\n if (id || globalSlug) {\n const docPreferences = await getDocPreferences()\n\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: document,\n docPermissions,\n docPreferences,\n formState,\n globalSlug,\n operation,\n renderAllFields: false,\n returnLockStatus: false,\n schemaPath: schemaPathSegments.join('.'),\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 reportUpdate,\n id,\n entitySlug,\n user,\n collectionSlug,\n userSlug,\n setLastUpdateTime,\n setData,\n onSaveFromContext,\n isEditing,\n depth,\n redirectAfterCreate,\n getDocPermissions,\n globalSlug,\n refreshCookieAsync,\n incrementVersionCount,\n adminRoute,\n locale,\n startRouteTransition,\n router,\n resetUploadEdits,\n getDocPreferences,\n getFormState,\n docPermissions,\n operation,\n schemaPathSegments,\n isLockingEnabled,\n setDocumentIsLocked,\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 result = await getFormState({\n id,\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n renderAllFields: false,\n returnLockStatus: isLockingEnabled,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n skipValidation: !submitted,\n updateLastEdited,\n })\n\n if (!result) {\n return\n }\n\n const { lockedState, state } = result\n\n if (isLockingEnabled) {\n handleDocumentLocking(lockedState)\n }\n\n abortOnChangeRef.current = null\n\n return state\n },\n [\n id,\n collectionSlug,\n getDocPreferences,\n getFormState,\n globalSlug,\n handleDocumentLocking,\n isLockingEnabled,\n operation,\n schemaPathSegments,\n docPermissions,\n editSessionStartTime,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n setShowTakeOverModal(false)\n }\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 !documentLockState.current?.hasShownLockedModal &&\n !isLockExpired\n\n const isFolderCollection = config.folders && collectionSlug === config.folders?.slug\n\n return (\n <main\n className={[\n baseClass,\n (id || globalSlug) && `${baseClass}--is-editing`,\n globalSlug && `global-edit--${globalSlug}`,\n collectionSlug && `collection-edit--${collectionSlug}`,\n isLivePreviewing && previewWindowType === 'iframe' && `${baseClass}--is-live-previewing`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || isInitializing || !hasSavePermission || isTrashed}\n disableValidationOnSubmit={!validateBeforeSubmit}\n initialState={!isInitializing && initialState}\n isDocumentForm={true}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isInDrawer && (\n <DocumentDrawerHeader drawerSlug={drawerSlug} showDocumentID={!isFolderCollection} />\n )}\n {isLockingEnabled && shouldShowDocumentLockedModal && (\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 documentLockState,\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 && (\n <LeaveWithoutSaving onConfirm={handleLeaveConfirm} onPrevent={handlePrevent} />\n )}\n {!isInDrawer && (\n <SetDocumentStepNav\n collectionSlug={collectionConfig?.slug}\n globalSlug={globalConfig?.slug}\n id={id}\n isTrashed={isTrashed}\n pluralLabel={collectionConfig?.labels?.plural}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n )}\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={depth <= 1 ? id?.toString() : undefined}\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={data}\n disableActions={disableActions || isFolderCollection || isTrashed}\n disableCreate={disableCreate}\n EditMenuItems={EditMenuItems}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n isInDrawer={isInDrawer}\n isTrashed={isTrashed}\n onDelete={onDelete}\n onDrawerCreateNew={clearDoc}\n onDuplicate={onDuplicate}\n onRestore={onRestore}\n onSave={onSave}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n true,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockState,\n isLockingEnabled,\n setIsReadOnlyForIncomingUser,\n )\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n redirectAfterRestore={redirectAfterRestore}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <div\n className={[\n `${baseClass}__main-wrapper`,\n previewWindowType === 'popup' && `${baseClass}--detached`,\n ]\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={\n BeforeFields || (\n <Fragment>\n {auth && (\n <Auth\n className={`${baseClass}__auth`}\n collectionSlug={collectionConfig.slug}\n disableLocalStrategy={collectionConfig.auth?.disableLocalStrategy}\n email={data?.email}\n loginWithUsername={auth?.loginWithUsername}\n operation={operation}\n readOnly={!hasSavePermission}\n requirePassword={!id}\n setValidateBeforeSubmit={setValidateBeforeSubmit}\n useAPIKey={auth.useAPIKey}\n username={data?.username}\n verify={auth.verify}\n />\n )}\n {upload && (\n <React.Fragment>\n <UploadControlsProvider>\n {CustomUpload || (\n <Upload\n collectionSlug={collectionConfig.slug}\n initialState={initialState}\n uploadConfig={upload}\n UploadControls={UploadControls}\n />\n )}\n </UploadControlsProvider>\n </React.Fragment>\n )}\n </Fragment>\n )\n }\n Description={Description}\n docPermissions={docPermissions}\n fields={docConfig.fields}\n forceSidebarWrap={isLivePreviewing}\n isTrashed={isTrashed}\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission || isTrashed}\n schemaPathSegments={schemaPathSegments}\n />\n {AfterDocument}\n </div>\n {isLivePreviewEnabled && !isInDrawer && (\n <LivePreviewWindow collectionSlug={collectionSlug} globalSlug={globalSlug} />\n )}\n </div>\n </Form>\n </OperationProvider>\n </main>\n )\n}\n"],"mappings":"AAAA,+DACA;;;AAIA,SAASA,SAAS,EAAEC,eAAe,QAAQ;AAC3C,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,IAASC,QAAQ,EAAEC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAMnF,SAASC,gBAAgB,QAAQ;AACjC,SAASC,oBAAoB,QAAQ;AACrC,SAASC,wBAAwB,QAAQ;AACzC,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,QAAQ;AAC/B,SAASC,gBAAgB,QAAQ;AACjC,SAASC,kBAAkB,QAAQ;AACnC,SAASC,iBAAiB,QAAQ;AAClC,SAASC,MAAM,QAAQ;AACvB,SAASC,IAAI,QAAQ;AACrB,SAASC,OAAO,QAAQ;AACxB,SAASC,SAAS,QAAQ;AAC1B,SAASC,iBAAiB,QAAQ;AAClC,SAASC,eAAe,QAAQ;AAChC,SAASC,YAAY,QAAQ;AAC7B,SAASC,qBAAqB,QAAQ;AACtC,SAASC,iBAAiB,QAAQ;AAClC,SAASC,kBAAkB,QAAQ;AACnC,SAASC,kBAAkB,QAAQ;AACnC,SAASC,sBAAsB,QAAQ;AACvC,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,EAAEC,cAAc,QAAQ;AAC/C,SAASC,qBAAqB,QAAQ;AACtC,SAASC,YAAY,QAAQ;AAC7B,SAASC,cAAc,QAAQ;AAC/B,SAASC,IAAI,QAAQ;AACrB,SAASC,kBAAkB,QAAQ;AACnC,SAASC,gBAAgB,QAAQ;AACjC,OAAO;AAEP,MAAMC,SAAA,GAAY;AAOlB;AACA;AACA;AACA,OAAO,SAASC,gBAAgB;EAC9BC,sBAAsB;EACtBC,WAAW;EACXC,aAAa;EACbC,aAAa;EACbC,aAAa;EACbC,UAAU;EACVC,eAAe;EACf7B,MAAA,EAAQ8B,YAAY;EACpBC;AAAc,CACU;EACxB,MAAM;IACJC,EAAE;IACFC,MAAM;IACNC,aAAa;IACbC,WAAW;IACXC,MAAM;IACNC,YAAY;IACZC,cAAc;IACdC,aAAa;IACbC,IAAI;IACJC,cAAc;IACdC,aAAa;IACbC,yBAAyB;IACzBC,cAAc;IACdC,gBAAgB;IAChBC,iBAAiB;IACjBC,iBAAiB;IACjBC,iBAAiB;IACjBC,UAAU;IACVC,oBAAoB;IACpBC,iBAAiB;IACjBC,qBAAqB;IACrBC,YAAY;IACZC,SAAS;IACTC,cAAc;IACdC,SAAS;IACTC,cAAc;IACdC,mBAAmB;IACnBC,mBAAmB;IACnBC,sBAAsB;IACtBC,oBAAoB;IACpBC,gBAAgB;IAChBC,OAAO;IACPC,mBAAmB;IACnBC,iBAAiB;IACjBC,cAAc;IACdC;EAAoB,CACrB,GAAG9D,eAAA;EAEJ,MAAM;IACJ+D,QAAQ;IACRC,UAAU;IACVC,QAAQ;IACRC,WAAW;IACXC,SAAS;IACTC,MAAA,EAAQC;EAAiB,CAC1B,GAAGhF,wBAAA;EAEJ,MAAMiF,UAAA,GAAaC,OAAA,CAAQP,UAAA;EAE3B,MAAM;IAAEQ,kBAAkB;IAAEC;EAAI,CAAE,GAAG5E,OAAA;EAErC,MAAM;IACJ6E,MAAM;IACNA,MAAA,EAAQ;MACNC,KAAA,EAAO;QAAEF,IAAA,EAAMG;MAAQ,CAAE;MACzBC,MAAA,EAAQ;QAAEF,KAAA,EAAOG;MAAU;IAAE,CAC9B;IACDC;EAAe,CAChB,GAAGjF,SAAA;EAEJ,MAAMkF,gBAAA,GAAmBD,eAAA,CAAgB;IAAE9C;EAAe;EAC1D,MAAMgD,YAAA,GAAeF,eAAA,CAAgB;IAAEnC;EAAW;EAElD,MAAMsC,KAAA,GAAQjF,YAAA;EAEd,MAAMkF,MAAA,GAAS1G,SAAA;EACf,MAAM2G,MAAA,GAAS1G,eAAA;EACf,MAAM;IAAE2G;EAAY,CAAE,GAAGtF,iBAAA;EACzB,MAAM;IAAEuF;EAAgB,CAAE,GAAG/E,cAAA;EAC7B,MAAM;IAAEgF;EAAY,CAAE,GAAGlF,kBAAA;EACzB,MAAM;IAAEmF;EAAoB,CAAE,GAAGpF,kBAAA;EACjC,MAAM;IAAEqF,oBAAoB;IAAEC,gBAAgB;IAAEC;EAAiB,CAAE,GAAGzF,qBAAA;EAEtE,MAAM0F,gBAAA,GAAmB3G,MAAA,CAAwB;EACjD,MAAM4G,cAAA,GAAiB5G,MAAA,CAAwB;EAE/C,MAAM6G,MAAA,GAASV,MAAA,CAAOW,GAAG,CAAC;EAE1B,MAAMC,UAAA,GAAahB,gBAAA,EAAkBiB,IAAA,IAAQhB,YAAA,EAAcgB,IAAA;EAE3D,MAAMC,SAAA,GAAYjE,cAAA,IAAkB,CAACN,EAAA,GAAK,WAAW;EAErD,MAAMwE,IAAA,GAAOnB,gBAAA,GAAmBA,gBAAA,CAAiBmB,IAAI,GAAGC,SAAA;EACxD,MAAMC,MAAA,GAASrB,gBAAA,GAAmBA,gBAAA,CAAiBqB,MAAM,GAAGD,SAAA;EAE5D,MAAME,SAAA,GAAYtB,gBAAA,IAAoBC,YAAA;EAEtC,MAAMsB,iBAAA,GAAoBD,SAAA,EAAWE,aAAA,KAAkBJ,SAAA,GAAYE,SAAA,EAAWE,aAAA,GAAgB;EAC9F,MAAMC,gBAAA,GAAmBF,iBAAA,KAAsB;EAE/C,MAAMG,mBAAA,GAAsB,IAAI;EAAA;EAChC,MAAMC,YAAA,GACJ,OAAOJ,iBAAA,KAAsB,WAAWA,iBAAA,CAAkBK,QAAQ,GAAGF,mBAAA;EACvE,MAAMG,0BAAA,GAA6BF,YAAA,GAAe;EAElD,MAAMG,eAAA,GAAkBvC,OAAA,CACtBS,gBAAC,EAAkB+B,QAAA,EAAUC,MAAA,IAAUhC,gBAAA,EAAkB+B,QAAA,EAAUC,MAAA,EAAQC,QAAA,IACxEhC,YAAA,EAAc8B,QAAA,EAAUC,MAAA,IAAU/B,YAAA,EAAc8B,QAAA,EAAUC,MAAA,EAAQC,QAAA;EAGvE,MAAMC,yBAAA,GACJ,OAAO5E,yBAAA,KAA8B,cAAc,CAACA,yBAAA,GAA4B,CAACwE,eAAA;EAEnF,MAAM,CAACK,yBAAA,EAA2BC,4BAAA,CAA6B,GAAGlI,QAAA,CAAS;EAC3E,MAAM,CAACmI,iBAAA,EAAmBC,oBAAA,CAAqB,GAAGpI,QAAA,CAAS;EAE3D,MAAM,CAACqI,oBAAA,EAAsBC,uBAAA,CAAwB,GAAGtI,QAAA,CAASuI,IAAA,CAAKC,GAAG;EAEzE,MAAMC,cAAA,GAAiBvE,cAAA,GAAiByD,0BAAA;EAExC,MAAMe,aAAA,GAAgBH,IAAA,CAAKC,GAAG,KAAKC,cAAA;EAEnC,MAAME,kBAAA,GAAqB7I,OAAA,CAAQ,MAAM,CAACgH,UAAA,CAAW,EAAE,CAACA,UAAA,CAAW;EAEnE,MAAM,CAAC8B,oBAAA,EAAsBC,uBAAA,CAAwB,GAAG7I,QAAA,CAAS;IAC/D,IAAIgH,SAAA,KAAc,YAAYC,IAAA,IAAQ,CAACA,IAAA,CAAK6B,oBAAoB,EAAE;MAChE,OAAO;IACT;IAEA,OAAO;EACT;EAEA,MAAMC,WAAA,GAAcrJ,KAAA,CAAMK,MAAM,CAAgB;EAEhD,MAAMiJ,qBAAA,GAAwBpJ,WAAA,CAC3BqJ,WAAA;IACCxE,mBAAA,CAAoB;IACpB,MAAMyE,eAAA,GACJ,OAAO3F,iBAAA,CAAkB4F,OAAO,EAAE5D,IAAA,KAAS,WACvChC,iBAAA,CAAkB4F,OAAO,EAAE5D,IAAA,EAAM9C,EAAA,GACjCc,iBAAA,CAAkB4F,OAAO,EAAE5D,IAAA;IAEjC,IAAI0D,WAAA,EAAa;MACf,MAAMG,YAAA,GACJ,OAAOH,WAAA,CAAY1D,IAAI,KAAK,YAAY,OAAO0D,WAAA,CAAY1D,IAAI,KAAK,WAChE0D,WAAA,CAAY1D,IAAI,GAChB0D,WAAA,CAAY1D,IAAI,CAAC9C,EAAE;MAEzB,IAAI,CAACc,iBAAA,CAAkB4F,OAAO,IAAIC,YAAA,KAAiBF,eAAA,EAAiB;QAClE,IAAIA,eAAA,KAAoB3D,IAAA,CAAK9C,EAAE,IAAI2G,YAAA,KAAiB7D,IAAA,CAAK9C,EAAE,EAAE;UAC3D2F,oBAAA,CAAqB;UACrB7E,iBAAA,CAAkB4F,OAAO,CAACE,mBAAmB,GAAG;QAClD;QAEA9F,iBAAA,CAAkB4F,OAAO,GAAG;UAC1BE,mBAAA,EAAqB9F,iBAAA,CAAkB4F,OAAO,EAAEE,mBAAA,IAAuB;UACvEC,QAAA,EAAU;UACV/D,IAAA,EAAM0D,WAAA,CAAY1D;QACpB;QACAhB,gBAAA,CAAiB0E,WAAA,CAAY1D,IAAI;MACnC;IACF;EACF,GACA,CAAChC,iBAAA,EAAmBgB,gBAAA,EAAkBE,mBAAA,EAAqBc,IAAA,EAAM9C,EAAA,CAAG;EAGtE,MAAM8G,aAAA,GAAgB3J,WAAA,CAAa4J,QAAA;IACjCT,WAAA,CAAYI,OAAO,GAAGK,QAAA;EACxB,GAAG,EAAE;EAEL,MAAMC,kBAAA,GAAqB7J,WAAA,CAAY;IACrC,MAAM8J,QAAA,GAAWnG,iBAAA,CAAkB4F,OAAO,EAAE5D,IAAA;IAE5C,MAAMoE,wBAAA,GACJ,OAAOD,QAAA,KAAa,WAAWA,QAAA,EAAUjH,EAAA,KAAO8C,IAAA,EAAM9C,EAAA,GAAKiH,QAAA,KAAanE,IAAA,EAAM9C,EAAA;IAEhF,IAAI8E,gBAAA,IAAoBjE,gBAAA,KAAqBb,EAAA,IAAMiB,UAAS,GAAI;MAC9D;MACA,MAAMkG,QAAA,GAAWb,WAAA,CAAYI,OAAO,GAAG,IAAIU,GAAA,CAAId,WAAA,CAAYI,OAAO,EAAEW,QAAQ,GAAG;MAC/E,MAAMC,cAAA,GAAiB,CAAC,YAAY,QAAQ,YAAY,CAACC,IAAI,CAAEC,IAAA,IAC7DL,QAAA,CAASM,QAAQ,CAACD,IAAA;MAGpB;MACA,IAAI,CAACF,cAAA,EAAgB;QACnB,IAAIJ,wBAAA,EAA0B;UAC5B,IAAI;YACF,MAAMhF,cAAA,CAAelC,EAAA,EAAIM,cAAA,IAAkBW,UAAA;YAC3Ce,mBAAA,CAAoB;YACpBF,gBAAA,CAAiB;UACnB,EAAE,OAAO4F,GAAA,EAAK;YACZC,OAAA,CAAQC,KAAK,CAAC,iCAAiCF,GAAA,EAAK;YAAA;UACtD;QACF;MACF;IACF;EACF,GAAG,CACDpH,cAAA,EACAO,gBAAA,EACAC,iBAAA,EACAG,UAAA,EACAjB,EAAA,EACA8E,gBAAA,EACAhD,gBAAA,EACAE,mBAAA,EACAE,cAAA,EACAY,IAAA,EAAM9C,EAAA,CACP;EAED,MAAMyC,MAAA,GAA4CtF,WAAA,CAChD,OAAO0K,IAAA,EAAMC,OAAA;IACX,MAAM;MAAEC,OAAO;MAAEC;IAAS,CAAE,GAAGF,OAAA,IAAW,CAAC;IAE3C,MAAMG,UAAA,GAAanJ,cAAA,CAAeoF,cAAA;IAElC,MAAMgE,QAAA,GAAWL,IAAA,EAAMM,GAAA,IAAON,IAAA,EAAMO,MAAA;IAEpC,MAAMC,SAAA,GAAYH,QAAA,EAAUG,SAAA,IAAa,IAAIvC,IAAA,GAAOwC,WAAW;IAE/D5E,YAAA,CAAa;MACX1D,EAAA;MACAqE,UAAA;MACAgE;IACF;IAEA;IACA;IACA,IAAIvF,IAAA,IAAQxC,cAAA,KAAmB2C,QAAA,IAAYjD,EAAA,KAAO8C,IAAA,CAAK9C,EAAE,EAAE;MACzD,KAAK6C,kBAAA;IACP;IAEAZ,iBAAA,CAAkBoG,SAAA;IAElB,IAAIN,OAAA,EAAS3G,qBAAA,KAA0B,OAAO;MAC5CA,qBAAA;IACF;IAEA,IAAI,OAAOW,OAAA,KAAY,YAAY;MACjC,KAAKA,OAAA,CAAQmG,QAAA,IAAY,CAAC;IAC5B;IAEA,IAAI,OAAOxF,iBAAA,KAAsB,YAAY;MAC3C,MAAM6B,WAAA,GAAYvE,EAAA,GAAK,WAAW;MAElC,KAAK0C,iBAAA,CAAkB;QACrB,GAAImF,IAAI;QACRE,OAAA;QACAxD,SAAA,EAAAA,WAAA;QACA;QACA8D,SAAA,EACE9D,WAAA,KAAc,WACV,IAAIuB,IAAA,GAAOwC,WAAW,KACtBJ,QAAA,EAAUG,SAAA,IAAa,IAAIvC,IAAA,GAAOwC,WAAW;MACrD;IACF;IAEA,IAAI,CAAChH,SAAA,IAAaiC,KAAA,GAAQ,KAAK7B,mBAAA,KAAwB,OAAO;MAC5D;MACA,MAAM6G,aAAA,GAAgBvL,cAAA,CAAe;QACnCmG,UAAA;QACAqE,IAAA,EAAM,gBAAgBlH,cAAA,IAAkB4H,QAAA,EAAUlI,EAAA,GAAKmE,MAAA,GAAS,WAAWA,MAAA,EAAQ,GAAG;MACxF;MAEAN,oBAAA,CAAqB,MAAML,MAAA,CAAOgF,IAAI,CAACD,aAAA;IACzC,OAAO;MACL5E,gBAAA;IACF;IAEA,IAAIoE,OAAA,EAAShH,iBAAA,KAAsB,OAAO;MACxC,MAAMA,iBAAA,CAAkB8G,IAAA;IAC1B;IAEA,IAAI7H,EAAA,IAAMiB,UAAA,EAAY;MACpB,MAAMwH,cAAA,GAAiB,MAAMzH,iBAAA;MAE7B,MAAM;QAAE0H;MAAK,CAAE,GAAG,MAAM9E,YAAA,CAAa;QACnC5D,EAAA;QACAM,cAAA;QACAE,IAAA,EAAM0H,QAAA;QACNtH,cAAA;QACA6H,cAAA;QACAT,SAAA;QACA/G,UAAA;QACAsD,SAAA;QACAoE,eAAA,EAAiB;QACjBC,gBAAA,EAAkB;QAClBC,UAAA,EAAY3C,kBAAA,CAAmB4C,IAAI,CAAC;QACpCC,MAAA,EAAQd,UAAA,CAAWc,MAAM;QACzBC,cAAA,EAAgB;MAClB;MAEA;MACA,IAAIlE,gBAAA,EAAkB;QACpB9C,mBAAA,CAAoB;MACtB;MAEAkC,cAAA,CAAewC,OAAO,GAAG;MAEzB,OAAOgC,KAAA;IACT;EACF,GACA,CACEhF,YAAA,EACA1D,EAAA,EACAqE,UAAA,EACAvB,IAAA,EACAxC,cAAA,EACA2C,QAAA,EACAhB,iBAAA,EACAF,OAAA,EACAW,iBAAA,EACApB,SAAA,EACAiC,KAAA,EACA7B,mBAAA,EACAX,iBAAA,EACAE,UAAA,EACA4B,kBAAA,EACAzB,qBAAA,EACA+B,UAAA,EACAgB,MAAA,EACAN,oBAAA,EACAL,MAAA,EACAG,gBAAA,EACA3C,iBAAA,EACA4C,YAAA,EACAhD,cAAA,EACA2D,SAAA,EACA2B,kBAAA,EACApB,gBAAA,EACA9C,mBAAA,CACD;EAGH,MAAMiH,QAAA,GAAqC9L,WAAA,CACzC,OAAO;IAAE6K,SAAA,EAAWkB,aAAa;IAAEC;EAAS,CAAE;IAC5C,MAAMlB,YAAA,GAAanJ,cAAA,CAAemF,gBAAA;IAElC,MAAMmF,WAAA,GAActD,IAAA,CAAKC,GAAG;IAC5B,MAAMsD,mBAAA,GAAsBD,WAAA,GAAcxD,oBAAA;IAE1C,MAAM0D,gBAAA,GAAmBxE,gBAAA,IAAoBuE,mBAAA,IAAuB,MAAM;IAAA;IAE1E,IAAIC,gBAAA,EAAkB;MACpBzD,uBAAA,CAAwBuD,WAAA;IAC1B;IAEA,MAAMX,gBAAA,GAAiB,MAAMzH,iBAAA;IAE7B,MAAMoH,MAAA,GAAS,MAAMxE,YAAA,CAAa;MAChC5D,EAAA;MACAM,cAAA;MACAM,cAAA;MACA6H,cAAA,EAAAA,gBAAA;MACAT,SAAA,EAAWkB,aAAA;MACXjI,UAAA;MACAsD,SAAA;MACAoE,eAAA,EAAiB;MACjBC,gBAAA,EAAkB9D,gBAAA;MAClB+D,UAAA,EAAY3C,kBAAA,CAAmB4C,IAAI,CAAC;MACpCC,MAAA,EAAQd,YAAA,CAAWc,MAAM;MACzBC,cAAA,EAAgB,CAACG,SAAA;MACjBG;IACF;IAEA,IAAI,CAAClB,MAAA,EAAQ;MACX;IACF;IAEA,MAAM;MAAE5B,WAAW,EAAXA,aAAW;MAAEkC,KAAK,EAALA;IAAK,CAAE,GAAGN,MAAA;IAE/B,IAAItD,gBAAA,EAAkB;MACpByB,qBAAA,CAAsBC,aAAA;IACxB;IAEAvC,gBAAA,CAAiByC,OAAO,GAAG;IAE3B,OAAOgC,OAAA;EACT,GACA,CACE1I,EAAA,EACAM,cAAA,EACAU,iBAAA,EACA4C,YAAA,EACA3C,UAAA,EACAsF,qBAAA,EACAzB,gBAAA,EACAP,SAAA,EACA2B,kBAAA,EACAtF,cAAA,EACAgF,oBAAA,CACD;EAGH;EACAxI,SAAA,CAAU;IACR,OAAO;MACLuI,oBAAA,CAAqB;IACvB;EACF,GAAG,EAAE;EAELvI,SAAA,CAAU;IACR,MAAMmM,aAAA,GAAgBtF,gBAAA,CAAiByC,OAAO;IAC9C,MAAM8C,WAAA,GAActF,cAAA,CAAewC,OAAO;IAE1C,OAAO;MACL7H,cAAA,CAAe0K,aAAA;MACf1K,cAAA,CAAe2K,WAAA;IACjB;EACF,GAAG,EAAE;EAEL,MAAMC,6BAAA,GACJ5I,gBAAA,IACAN,aAAA,KACC,OAAOA,aAAA,KAAkB,WACtBA,aAAA,CAAcP,EAAE,KAAK8C,IAAA,EAAM9C,EAAA,GAC3BO,aAAA,KAAkBuC,IAAA,EAAM9C,EAAC,KAC7B,CAACwF,yBAAA,IACD,CAACE,iBAAA,IACD,CAAC5E,iBAAA,CAAkB4F,OAAO,EAAEE,mBAAA,IAC5B,CAACX,aAAA;EAEH,MAAMyD,kBAAA,GAAqB3G,MAAA,CAAO4G,OAAO,IAAIrJ,cAAA,KAAmByC,MAAA,CAAO4G,OAAO,EAAErF,IAAA;EAEhF,oBACEsF,IAAA,CAAC;IACCC,SAAA,EAAW,CACTxK,SAAA,EACC,CAAAW,EAAA,IAAMiB,UAAS,KAAM,GAAG5B,SAAA,cAAuB,EAChD4B,UAAA,IAAc,gBAAgBA,UAAA,EAAY,EAC1CX,cAAA,IAAkB,oBAAoBA,cAAA,EAAgB,EACtDyD,gBAAA,IAAoBC,iBAAA,KAAsB,YAAY,GAAG3E,SAAA,sBAA+B,CACzF,CACEyK,MAAM,CAAClH,OAAA,EACPkG,IAAI,CAAC;cAER,aAAAc,IAAA,CAACpL,iBAAA;MAAkB+F,SAAA,EAAWA,SAAA;gBAC5B,aAAAwF,KAAA,CAAC9L,IAAA;QACCgC,MAAA,EAAQA,MAAA;QACR4J,SAAA,EAAW,GAAGxK,SAAA,QAAiB;QAC/B2K,QAAA,EAAUxE,yBAAA,IAA6BjE,cAAA,IAAkB,CAACJ,iBAAA,IAAqBK,SAAA;QAC/EyI,yBAAA,EAA2B,CAAC9D,oBAAA;QAC5B9E,YAAA,EAAc,CAACE,cAAA,IAAkBF,YAAA;QACjC6I,cAAA,EAAgB;QAChB3I,cAAA,EAAgBA,cAAA;QAChB4I,MAAA,EAAQnK,EAAA,GAAK,UAAU;QACvBiJ,QAAA,EAAU,CAACA,QAAA,CAAS;QACpBmB,SAAA,EAAW3H,MAAA;mBAEVE,UAAA,iBACCiH,IAAA,CAACnM,oBAAA;UAAqB4E,UAAA,EAAYA,UAAA;UAAYgI,cAAA,EAAgB,CAACX;YAEhE5E,gBAAA,IAAoB2E,6BAAA,iBACnBG,IAAA,CAAChM,cAAA;UACCoB,YAAA,EAAcA,CAAA,KAAMA,YAAA,CAAa;YAAEmE,UAAA;YAAY7C,cAAA;YAAgBkD;UAAO;UACtE8G,QAAA,EAAUb,6BAAA;UACVc,UAAA,EAAYA,CAAA;YACV9E,4BAAA,CAA6B;YAC7BE,oBAAA,CAAqB;UACvB;UACA6E,UAAA,EAAYA,CAAA,KACVvL,cAAA,CACEe,EAAA,EACAM,cAAA,EACAW,UAAA,EACA6B,IAAA,EACA,OACAX,oBAAA,EACAL,gBAAA,EACAhB,iBAAA,EACAgE,gBAAA;UAGJuD,SAAA,EAAW5G,cAAA;UACXqB,IAAA,EAAMvC;YAGTuE,gBAAA,IAAoBY,iBAAA,iBACnBkE,IAAA,CAAC/L,gBAAA;UACCkB,qBAAA,EAAuBA,CAAA,KAAMA,qBAAA,CAAsB;YAAEoE,UAAA;YAAYK;UAAO;UACxE8G,QAAA,EAAU5E,iBAAA;UACV6E,UAAA,EAAYA,CAAA;YACV9E,4BAAA,CAA6B;YAC7BE,oBAAA,CAAqB;UACvB;YAGH,CAACH,yBAAA,IAA6BD,yBAAA,iBAC7BqE,IAAA,CAAC9L,kBAAA;UAAmB2M,SAAA,EAAWzD,kBAAA;UAAoB0D,SAAA,EAAW5D;YAE/D,CAACnE,UAAA,iBACAiH,IAAA,CAACzK,kBAAA;UACCmB,cAAA,EAAgB+C,gBAAA,EAAkBiB,IAAA;UAClCrD,UAAA,EAAYqC,YAAA,EAAcgB,IAAA;UAC1BtE,EAAA,EAAIA,EAAA;UACJwB,SAAA,EAAWA,SAAA;UACXmJ,WAAA,EAAatH,gBAAA,EAAkBuH,MAAA,EAAQC,MAAA;UACvCC,UAAA,EAAYzH,gBAAA,EAAkBL,KAAA,EAAO8H;yBAGzClB,IAAA,CAACxK,gBAAA;UACCiE,gBAAA,EAAkBA,gBAAA;UAClBN,MAAA,EAAQA,MAAA;UACRgI,QAAA,EAAUxH,KAAA,IAAS,IAAIvD,EAAA,EAAIgL,QAAA,KAAavG,SAAA;UACxCnB,YAAA,EAAcA;yBAEhBsG,IAAA,CAACpM,gBAAA;UACC4C,MAAA,EAAQA,MAAA;UACRb,sBAAA,EAAwBA,sBAAA;UACxB0L,gBAAA,EAAkB;YAChBvL,aAAA;YACAC,aAAA;YACAC,UAAA;YACAC;UACF;UACAW,IAAA,EAAMA,IAAA;UACNC,cAAA,EAAgBA,cAAA,IAAkBiJ,kBAAA,IAAsBlI,SAAA;UACxDd,aAAA,EAAeA,aAAA;UACfjB,aAAA,EAAeA,aAAA;UACfyB,oBAAA,EAAsBA,oBAAA;UACtBC,iBAAA,EAAmBA,iBAAA;UACnBnB,EAAA,EAAIA,EAAA;UACJsB,SAAA,EAAWA,SAAA;UACXqB,UAAA,EAAYA,UAAA;UACZnB,SAAA,EAAWA,SAAA;UACXc,QAAA,EAAUA,QAAA;UACV4I,iBAAA,EAAmB9I,QAAA;UACnBG,WAAA,EAAaA,WAAA;UACbC,SAAA,EAAWA,SAAA;UACXC,MAAA,EAAQA,MAAA;UACR+H,UAAA,EAAYA,CAAA,KACVvL,cAAA,CACEe,EAAA,EACAM,cAAA,EACAW,UAAA,EACA6B,IAAA,EACA,MACAX,oBAAA,EACAL,gBAAA,EACAhB,iBAAA,EACAgE,gBAAA,EACAW,4BAAA;UAGJ0F,WAAA,EAAavK,cAAA;UACbwK,uBAAA,EAAyB5F,yBAAA;UACzB7D,mBAAA,EAAqBA,mBAAA;UACrBC,sBAAA,EAAwBA,sBAAA;UACxBC,oBAAA,EAAsBA,oBAAA;UACtByC,IAAA,EAAMjB,gBAAA,EAAkBiB,IAAA,IAAQhB,YAAA,EAAcgB,IAAA;UAC9CxB,IAAA,EAAMvC;yBAERwJ,KAAA,CAAC;UACCF,SAAA,EAAW,CACT,GAAGxK,SAAA,gBAAyB,EAC5B2E,iBAAA,KAAsB,WAAW,GAAG3E,SAAA,YAAqB,CAC1D,CACEyK,MAAM,CAAClH,OAAA,EACPkG,IAAI,CAAC;kCAERiB,KAAA,CAAC;YACCF,SAAA,EAAW,CACT,GAAGxK,SAAA,QAAiB,EACpB2E,iBAAA,KAAsB,WAAW,GAAG3E,SAAA,oBAA6B,CAClE,CACEyK,MAAM,CAAClH,OAAA,EACPkG,IAAI,CAAC;oCAERc,IAAA,CAACjM,cAAA;cACCwC,WAAA,EAAaA,WAAA;cACbE,YAAA,EACEA,YAAA,iBACE0J,KAAA,CAAC7M,QAAA;2BACEsH,IAAA,iBACCoF,IAAA,CAAC1K,IAAA;kBACC2K,SAAA,EAAW,GAAGxK,SAAA,QAAiB;kBAC/BiB,cAAA,EAAgB+C,gBAAA,CAAiBiB,IAAI;kBACrC+B,oBAAA,EAAsBhD,gBAAA,CAAiBmB,IAAI,EAAE6B,oBAAA;kBAC7CgF,KAAA,EAAO7K,IAAA,EAAM6K,KAAA;kBACbC,iBAAA,EAAmB9G,IAAA,EAAM8G,iBAAA;kBACzB/G,SAAA,EAAWA,SAAA;kBACXgH,QAAA,EAAU,CAACpK,iBAAA;kBACXqK,eAAA,EAAiB,CAACxL,EAAA;kBAClBoG,uBAAA,EAAyBA,uBAAA;kBACzBqF,SAAA,EAAWjH,IAAA,CAAKiH,SAAS;kBACzBC,QAAA,EAAUlL,IAAA,EAAMkL,QAAA;kBAChBC,MAAA,EAAQnH,IAAA,CAAKmH;oBAGhBjH,MAAA,iBACCkF,IAAA,CAAC3M,KAAA,CAAMC,QAAQ;4BACb,aAAA0M,IAAA,CAACjL,sBAAA;8BACEmB,YAAA,iBACC8J,IAAA,CAAC5L,MAAA;sBACCsC,cAAA,EAAgB+C,gBAAA,CAAiBiB,IAAI;sBACrCjD,YAAA,EAAcA,YAAA;sBACduK,YAAA,EAAclH,MAAA;sBACd3E,cAAA,EAAgBA;;;;;cAShCP,WAAA,EAAaA,WAAA;cACboB,cAAA,EAAgBA,cAAA;cAChBiL,MAAA,EAAQlH,SAAA,CAAUkH,MAAM;cACxBC,gBAAA,EAAkB/H,gBAAA;cAClBvC,SAAA,EAAWA,SAAA;cACX+J,QAAA,EAAU/F,yBAAA,IAA6B,CAACrE,iBAAA,IAAqBK,SAAA;cAC7D0E,kBAAA,EAAoBA;gBAErBhG,aAAA;cAEF4D,oBAAA,IAAwB,CAACnB,UAAA,iBACxBiH,IAAA,CAAC7L,iBAAA;YAAkBuC,cAAA,EAAgBA,cAAA;YAAgBW,UAAA,EAAYA;;;;;;AAO7E","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/ui",
|
|
3
|
-
"version": "3.53.0
|
|
3
|
+
"version": "3.53.0",
|
|
4
4
|
"homepage": "https://payloadcms.com",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -136,7 +136,7 @@
|
|
|
136
136
|
"ts-essentials": "10.0.3",
|
|
137
137
|
"use-context-selector": "2.0.0",
|
|
138
138
|
"uuid": "10.0.0",
|
|
139
|
-
"@payloadcms/translations": "3.53.0
|
|
139
|
+
"@payloadcms/translations": "3.53.0"
|
|
140
140
|
},
|
|
141
141
|
"devDependencies": {
|
|
142
142
|
"@babel/cli": "7.27.2",
|
|
@@ -151,14 +151,14 @@
|
|
|
151
151
|
"babel-plugin-react-compiler": "19.1.0-rc.2",
|
|
152
152
|
"esbuild": "0.25.5",
|
|
153
153
|
"esbuild-sass-plugin": "3.3.1",
|
|
154
|
-
"
|
|
155
|
-
"
|
|
154
|
+
"@payloadcms/eslint-config": "3.28.0",
|
|
155
|
+
"payload": "3.53.0"
|
|
156
156
|
},
|
|
157
157
|
"peerDependencies": {
|
|
158
158
|
"next": "^15.2.3",
|
|
159
159
|
"react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
|
|
160
160
|
"react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
|
|
161
|
-
"payload": "3.53.0
|
|
161
|
+
"payload": "3.53.0"
|
|
162
162
|
},
|
|
163
163
|
"engines": {
|
|
164
164
|
"node": "^18.20.2 || >=20.9.0"
|