@payloadcms/next 3.0.0-beta.121 → 3.0.0-beta.123
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/DocumentLocked/index.d.ts +1 -1
- package/dist/elements/DocumentLocked/index.d.ts.map +1 -1
- package/dist/elements/DocumentLocked/index.js +24 -14
- package/dist/elements/DocumentLocked/index.js.map +1 -1
- package/dist/elements/DocumentLocked/index.scss +1 -0
- package/dist/prod/styles.css +1 -1
- package/dist/views/Dashboard/Default/index.d.ts +1 -1
- package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/index.js.map +1 -1
- package/dist/views/Dashboard/index.d.ts.map +1 -1
- package/dist/views/Dashboard/index.js +31 -28
- package/dist/views/Dashboard/index.js.map +1 -1
- package/dist/views/Edit/Default/index.d.ts.map +1 -1
- package/dist/views/Edit/Default/index.js +3 -3
- package/dist/views/Edit/Default/index.js.map +1 -1
- package/dist/views/LivePreview/index.client.d.ts.map +1 -1
- package/dist/views/LivePreview/index.client.js +3 -3
- package/dist/views/LivePreview/index.client.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Dashboard/Default/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAUpF,OAAO,KAAmB,MAAM,OAAO,CAAA;AAEvC,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE;YAAE,SAAS,EAAE,OAAO,CAAC;YAAC,aAAa,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Dashboard/Default/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAUpF,OAAO,KAAmB,MAAM,OAAO,CAAA;AAEvC,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE;YAAE,SAAS,EAAE,OAAO,CAAC;YAAC,aAAa,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;SAAE,CAAA;QAC/F,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,IAAI,EAAE,MAAM,CAAA;KACb,CAAC,CAAA;IACF,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IAC9B,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAA;IAC5C,WAAW,EAAE,WAAW,CAAA;IACxB,eAAe,EAAE,eAAe,CAAA;CACjC,GAAG,WAAW,CAAA;AAEf,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAyKrD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getTranslation","Button","Card","Gutter","Locked","SetStepNav","SetViewActions","EntityType","formatAdminURL","getCreateMappedComponent","RenderComponent","React","Fragment","baseClass","DefaultDashboard","props","globalData","i18n","t","Link","locale","navGroups","params","payload","config","admin","components","afterDashboard","beforeDashboard","routes","adminRoute","permissions","searchParams","user","createMappedComponent","importMap","serverProps","mappedBeforeDashboards","undefined","mappedAfterDashboards","_jsxs","className","_jsx","nav","actions","mappedComponent","length","map","entities","label","groupIndex","type","entity","entityIndex","title","buttonAriaLabel","createHREF","href","hasCreatePermission","isLocked","userEditing","collection","labels","plural","path","slug","collections","create","permission","global","globalLockData","find","data","_isLocked","_userEditing","lockDuration","lastEditedAt","Date","_lastEditedAt","getTime","lockDurationInMilliseconds","lockExpirationTime","id","singular","buttonStyle","el","icon","iconStyle","round","to","titleAs"],"sources":["../../../../src/views/Dashboard/Default/index.tsx"],"sourcesContent":["import type { groupNavItems } from '@payloadcms/ui/shared'\nimport type { ClientUser, Permissions, ServerProps, VisibleEntities } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { Button, Card, Gutter, Locked, SetStepNav, SetViewActions } from '@payloadcms/ui'\nimport {\n EntityType,\n formatAdminURL,\n getCreateMappedComponent,\n RenderComponent,\n} from '@payloadcms/ui/shared'\nimport React, { Fragment } from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'dashboard'\n\nexport type DashboardProps = {\n globalData: Array<{\n data: { _isLocked: boolean; _lastEditedAt: string; _userEditing: ClientUser | null }\n lockDuration?: number\n slug: string\n }>\n Link: React.ComponentType<any>\n navGroups?: ReturnType<typeof groupNavItems>\n permissions: Permissions\n visibleEntities: VisibleEntities\n} & ServerProps\n\nexport const DefaultDashboard: React.FC<DashboardProps> = (props) => {\n const {\n globalData,\n i18n,\n i18n: { t },\n Link,\n locale,\n navGroups,\n params,\n payload: {\n config: {\n admin: {\n components: { afterDashboard, beforeDashboard },\n },\n routes: { admin: adminRoute },\n },\n },\n payload,\n permissions,\n searchParams,\n user,\n } = props\n\n const createMappedComponent = getCreateMappedComponent({\n importMap: payload.importMap,\n serverProps: {\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n },\n })\n\n const mappedBeforeDashboards = createMappedComponent(\n beforeDashboard,\n undefined,\n undefined,\n 'beforeDashboard',\n )\n\n const mappedAfterDashboards = createMappedComponent(\n afterDashboard,\n undefined,\n undefined,\n 'afterDashboard',\n )\n\n return (\n <div className={baseClass}>\n <SetStepNav nav={[]} />\n <SetViewActions actions={[]} />\n <Gutter className={`${baseClass}__wrap`}>\n <RenderComponent mappedComponent={mappedBeforeDashboards} />\n <Fragment>\n <SetViewActions actions={[]} />\n {!navGroups || navGroups?.length === 0 ? (\n <p>no nav groups....</p>\n ) : (\n navGroups.map(({ entities, label }, groupIndex) => {\n return (\n <div className={`${baseClass}__group`} key={groupIndex}>\n <h2 className={`${baseClass}__label`}>{label}</h2>\n <ul className={`${baseClass}__card-list`}>\n {entities.map(({ type, entity }, entityIndex) => {\n let title: string\n let buttonAriaLabel: string\n let createHREF: string\n let href: string\n let hasCreatePermission: boolean\n let isLocked = null\n let userEditing = null\n\n if (type === EntityType.collection) {\n title = getTranslation(entity.labels.plural, i18n)\n\n buttonAriaLabel = t('general:showAllLabel', { label: title })\n\n href = formatAdminURL({ adminRoute, path: `/collections/${entity.slug}` })\n\n createHREF = formatAdminURL({\n adminRoute,\n path: `/collections/${entity.slug}/create`,\n })\n\n hasCreatePermission =\n permissions?.collections?.[entity.slug]?.create?.permission\n }\n\n if (type === EntityType.global) {\n title = getTranslation(entity.label, i18n)\n\n buttonAriaLabel = t('general:editLabel', {\n label: getTranslation(entity.label, i18n),\n })\n\n href = formatAdminURL({\n adminRoute,\n path: `/globals/${entity.slug}`,\n })\n\n // Find the lock status for the global\n const globalLockData = globalData.find(\n (global) => global.slug === entity.slug,\n )\n\n if (globalLockData) {\n isLocked = globalLockData.data._isLocked\n userEditing = globalLockData.data._userEditing\n\n // Check if the lock is expired\n const lockDuration = globalLockData?.lockDuration\n const lastEditedAt = new Date(\n globalLockData.data?._lastEditedAt,\n ).getTime()\n\n const lockDurationInMilliseconds = lockDuration * 1000\n const lockExpirationTime = lastEditedAt + lockDurationInMilliseconds\n\n if (new Date().getTime() > lockExpirationTime) {\n isLocked = false\n userEditing = null\n }\n }\n }\n\n return (\n <li key={entityIndex}>\n <Card\n actions={\n isLocked && user?.id !== userEditing?.id ? (\n <Locked className={`${baseClass}__locked`} user={userEditing} />\n ) : hasCreatePermission && type === EntityType.collection ? (\n <Button\n aria-label={t('general:createNewLabel', {\n label: getTranslation(entity.labels.singular, i18n),\n })}\n buttonStyle=\"icon-label\"\n el=\"link\"\n icon=\"plus\"\n iconStyle=\"with-border\"\n Link={Link}\n round\n to={createHREF}\n />\n ) : undefined\n }\n buttonAriaLabel={buttonAriaLabel}\n href={href}\n id={`card-${entity.slug}`}\n Link={Link}\n title={title}\n titleAs=\"h3\"\n />\n </li>\n )\n })}\n </ul>\n </div>\n )\n })\n )}\n </Fragment>\n <RenderComponent mappedComponent={mappedAfterDashboards} />\n </Gutter>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getTranslation","Button","Card","Gutter","Locked","SetStepNav","SetViewActions","EntityType","formatAdminURL","getCreateMappedComponent","RenderComponent","React","Fragment","baseClass","DefaultDashboard","props","globalData","i18n","t","Link","locale","navGroups","params","payload","config","admin","components","afterDashboard","beforeDashboard","routes","adminRoute","permissions","searchParams","user","createMappedComponent","importMap","serverProps","mappedBeforeDashboards","undefined","mappedAfterDashboards","_jsxs","className","_jsx","nav","actions","mappedComponent","length","map","entities","label","groupIndex","type","entity","entityIndex","title","buttonAriaLabel","createHREF","href","hasCreatePermission","isLocked","userEditing","collection","labels","plural","path","slug","collections","create","permission","global","globalLockData","find","data","_isLocked","_userEditing","lockDuration","lastEditedAt","Date","_lastEditedAt","getTime","lockDurationInMilliseconds","lockExpirationTime","id","singular","buttonStyle","el","icon","iconStyle","round","to","titleAs"],"sources":["../../../../src/views/Dashboard/Default/index.tsx"],"sourcesContent":["import type { groupNavItems } from '@payloadcms/ui/shared'\nimport type { ClientUser, Permissions, ServerProps, VisibleEntities } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { Button, Card, Gutter, Locked, SetStepNav, SetViewActions } from '@payloadcms/ui'\nimport {\n EntityType,\n formatAdminURL,\n getCreateMappedComponent,\n RenderComponent,\n} from '@payloadcms/ui/shared'\nimport React, { Fragment } from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'dashboard'\n\nexport type DashboardProps = {\n globalData: Array<{\n data: { _isLocked: boolean; _lastEditedAt: string; _userEditing: ClientUser | number | string }\n lockDuration?: number\n slug: string\n }>\n Link: React.ComponentType<any>\n navGroups?: ReturnType<typeof groupNavItems>\n permissions: Permissions\n visibleEntities: VisibleEntities\n} & ServerProps\n\nexport const DefaultDashboard: React.FC<DashboardProps> = (props) => {\n const {\n globalData,\n i18n,\n i18n: { t },\n Link,\n locale,\n navGroups,\n params,\n payload: {\n config: {\n admin: {\n components: { afterDashboard, beforeDashboard },\n },\n routes: { admin: adminRoute },\n },\n },\n payload,\n permissions,\n searchParams,\n user,\n } = props\n\n const createMappedComponent = getCreateMappedComponent({\n importMap: payload.importMap,\n serverProps: {\n i18n,\n locale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n },\n })\n\n const mappedBeforeDashboards = createMappedComponent(\n beforeDashboard,\n undefined,\n undefined,\n 'beforeDashboard',\n )\n\n const mappedAfterDashboards = createMappedComponent(\n afterDashboard,\n undefined,\n undefined,\n 'afterDashboard',\n )\n\n return (\n <div className={baseClass}>\n <SetStepNav nav={[]} />\n <SetViewActions actions={[]} />\n <Gutter className={`${baseClass}__wrap`}>\n <RenderComponent mappedComponent={mappedBeforeDashboards} />\n <Fragment>\n <SetViewActions actions={[]} />\n {!navGroups || navGroups?.length === 0 ? (\n <p>no nav groups....</p>\n ) : (\n navGroups.map(({ entities, label }, groupIndex) => {\n return (\n <div className={`${baseClass}__group`} key={groupIndex}>\n <h2 className={`${baseClass}__label`}>{label}</h2>\n <ul className={`${baseClass}__card-list`}>\n {entities.map(({ type, entity }, entityIndex) => {\n let title: string\n let buttonAriaLabel: string\n let createHREF: string\n let href: string\n let hasCreatePermission: boolean\n let isLocked = null\n let userEditing = null\n\n if (type === EntityType.collection) {\n title = getTranslation(entity.labels.plural, i18n)\n\n buttonAriaLabel = t('general:showAllLabel', { label: title })\n\n href = formatAdminURL({ adminRoute, path: `/collections/${entity.slug}` })\n\n createHREF = formatAdminURL({\n adminRoute,\n path: `/collections/${entity.slug}/create`,\n })\n\n hasCreatePermission =\n permissions?.collections?.[entity.slug]?.create?.permission\n }\n\n if (type === EntityType.global) {\n title = getTranslation(entity.label, i18n)\n\n buttonAriaLabel = t('general:editLabel', {\n label: getTranslation(entity.label, i18n),\n })\n\n href = formatAdminURL({\n adminRoute,\n path: `/globals/${entity.slug}`,\n })\n\n // Find the lock status for the global\n const globalLockData = globalData.find(\n (global) => global.slug === entity.slug,\n )\n\n if (globalLockData) {\n isLocked = globalLockData.data._isLocked\n userEditing = globalLockData.data._userEditing\n\n // Check if the lock is expired\n const lockDuration = globalLockData?.lockDuration\n const lastEditedAt = new Date(\n globalLockData.data?._lastEditedAt,\n ).getTime()\n\n const lockDurationInMilliseconds = lockDuration * 1000\n const lockExpirationTime = lastEditedAt + lockDurationInMilliseconds\n\n if (new Date().getTime() > lockExpirationTime) {\n isLocked = false\n userEditing = null\n }\n }\n }\n\n return (\n <li key={entityIndex}>\n <Card\n actions={\n isLocked && user?.id !== userEditing?.id ? (\n <Locked className={`${baseClass}__locked`} user={userEditing} />\n ) : hasCreatePermission && type === EntityType.collection ? (\n <Button\n aria-label={t('general:createNewLabel', {\n label: getTranslation(entity.labels.singular, i18n),\n })}\n buttonStyle=\"icon-label\"\n el=\"link\"\n icon=\"plus\"\n iconStyle=\"with-border\"\n Link={Link}\n round\n to={createHREF}\n />\n ) : undefined\n }\n buttonAriaLabel={buttonAriaLabel}\n href={href}\n id={`card-${entity.slug}`}\n Link={Link}\n title={title}\n titleAs=\"h3\"\n />\n </li>\n )\n })}\n </ul>\n </div>\n )\n })\n )}\n </Fragment>\n <RenderComponent mappedComponent={mappedAfterDashboards} />\n </Gutter>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Dashboard/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAU7C,OAAO,KAAmB,MAAM,OAAO,CAAA;AAIvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAA;AAIrD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Dashboard/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAU7C,OAAO,KAAmB,MAAM,OAAO,CAAA;AAIvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAA;AAIrD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAkI9C,CAAA"}
|
|
@@ -22,40 +22,43 @@ export const Dashboard = async ({
|
|
|
22
22
|
payload,
|
|
23
23
|
user
|
|
24
24
|
},
|
|
25
|
+
req,
|
|
25
26
|
visibleEntities
|
|
26
27
|
} = initPageResult;
|
|
27
|
-
const lockDurationDefault = 300 // Default 5 minutes in seconds
|
|
28
|
-
;
|
|
29
28
|
const CustomDashboardComponent = config.admin.components?.views?.Dashboard;
|
|
30
29
|
const collections = config.collections.filter(collection => permissions?.collections?.[collection.slug]?.read?.permission && visibleEntities.collections.includes(collection.slug));
|
|
31
30
|
const globals = config.globals.filter(global => permissions?.globals?.[global.slug]?.read?.permission && visibleEntities.globals.includes(global.slug));
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
lockDuration
|
|
47
|
-
}) => {
|
|
48
|
-
const data = await payload.findGlobal({
|
|
49
|
-
slug,
|
|
50
|
-
depth: 0,
|
|
51
|
-
includeLockStatus: true
|
|
31
|
+
// Query locked global documents only if there are globals in the config
|
|
32
|
+
let globalData = [];
|
|
33
|
+
if (config.globals.length > 0) {
|
|
34
|
+
const lockedDocuments = await payload.find({
|
|
35
|
+
collection: 'payload-locked-documents',
|
|
36
|
+
depth: 1,
|
|
37
|
+
overrideAccess: false,
|
|
38
|
+
pagination: false,
|
|
39
|
+
req,
|
|
40
|
+
where: {
|
|
41
|
+
globalSlug: {
|
|
42
|
+
exists: true
|
|
43
|
+
}
|
|
44
|
+
}
|
|
52
45
|
});
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
lockDuration
|
|
57
|
-
|
|
58
|
-
|
|
46
|
+
// Map over globals to include `lockDuration` and lock data for each global slug
|
|
47
|
+
globalData = config.globals.map(global => {
|
|
48
|
+
const lockDurationDefault = 300;
|
|
49
|
+
const lockDuration = typeof global.lockDocuments === 'object' ? global.lockDocuments.duration : lockDurationDefault;
|
|
50
|
+
const lockedDoc = lockedDocuments.docs.find(doc => doc.globalSlug === global.slug);
|
|
51
|
+
return {
|
|
52
|
+
slug: global.slug,
|
|
53
|
+
data: {
|
|
54
|
+
_isLocked: !!lockedDoc,
|
|
55
|
+
_lastEditedAt: lockedDoc?.updatedAt ?? null,
|
|
56
|
+
_userEditing: lockedDoc?.user?.value ?? null
|
|
57
|
+
},
|
|
58
|
+
lockDuration
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
}
|
|
59
62
|
const navGroups = groupNavItems([...(collections.map(collection => {
|
|
60
63
|
const entityToGroup = {
|
|
61
64
|
type: EntityType.collection,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["HydrateAuthProvider","EntityType","getCreateMappedComponent","groupNavItems","RenderComponent","LinkImport","React","Fragment","DefaultDashboard","generateDashboardMetadata","Link","default","Dashboard","initPageResult","params","searchParams","locale","permissions","req","i18n","payload","config","user","visibleEntities","
|
|
1
|
+
{"version":3,"file":"index.js","names":["HydrateAuthProvider","EntityType","getCreateMappedComponent","groupNavItems","RenderComponent","LinkImport","React","Fragment","DefaultDashboard","generateDashboardMetadata","Link","default","Dashboard","initPageResult","params","searchParams","locale","permissions","req","i18n","payload","config","user","visibleEntities","CustomDashboardComponent","admin","components","views","collections","filter","collection","slug","read","permission","includes","globals","global","globalData","length","lockedDocuments","find","depth","overrideAccess","pagination","where","globalSlug","exists","map","lockDurationDefault","lockDuration","lockDocuments","duration","lockedDoc","docs","doc","data","_isLocked","_lastEditedAt","updatedAt","_userEditing","value","navGroups","entityToGroup","type","entity","createMappedComponent","importMap","serverProps","mappedDashboardComponent","Component","undefined","_jsxs","_jsx","clientProps","mappedComponent"],"sources":["../../../src/views/Dashboard/index.tsx"],"sourcesContent":["import type { EntityToGroup } from '@payloadcms/ui/shared'\nimport type { AdminViewProps } from 'payload'\n\nimport { HydrateAuthProvider } from '@payloadcms/ui'\nimport {\n EntityType,\n getCreateMappedComponent,\n groupNavItems,\n RenderComponent,\n} from '@payloadcms/ui/shared'\nimport LinkImport from 'next/link.js'\nimport React, { Fragment } from 'react'\n\nimport { DefaultDashboard } from './Default/index.js'\n\nexport { generateDashboardMetadata } from './meta.js'\n\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nexport const Dashboard: React.FC<AdminViewProps> = async ({\n initPageResult,\n params,\n searchParams,\n}) => {\n const {\n locale,\n permissions,\n req: {\n i18n,\n payload: { config },\n payload,\n user,\n },\n req,\n visibleEntities,\n } = initPageResult\n\n const CustomDashboardComponent = config.admin.components?.views?.Dashboard\n\n const collections = config.collections.filter(\n (collection) =>\n permissions?.collections?.[collection.slug]?.read?.permission &&\n visibleEntities.collections.includes(collection.slug),\n )\n\n const globals = config.globals.filter(\n (global) =>\n permissions?.globals?.[global.slug]?.read?.permission &&\n visibleEntities.globals.includes(global.slug),\n )\n\n // Query locked global documents only if there are globals in the config\n let globalData = []\n\n if (config.globals.length > 0) {\n const lockedDocuments = await payload.find({\n collection: 'payload-locked-documents',\n depth: 1,\n overrideAccess: false,\n pagination: false,\n req,\n where: {\n globalSlug: {\n exists: true,\n },\n },\n })\n\n // Map over globals to include `lockDuration` and lock data for each global slug\n globalData = config.globals.map((global) => {\n const lockDurationDefault = 300\n const lockDuration =\n typeof global.lockDocuments === 'object'\n ? global.lockDocuments.duration\n : lockDurationDefault\n\n const lockedDoc = lockedDocuments.docs.find((doc) => doc.globalSlug === global.slug)\n\n return {\n slug: global.slug,\n data: {\n _isLocked: !!lockedDoc,\n _lastEditedAt: lockedDoc?.updatedAt ?? null,\n _userEditing: lockedDoc?.user?.value ?? null,\n },\n lockDuration,\n }\n })\n }\n\n const navGroups = groupNavItems(\n [\n ...(collections.map((collection) => {\n const entityToGroup: EntityToGroup = {\n type: EntityType.collection,\n entity: collection,\n }\n\n return entityToGroup\n }) ?? []),\n ...(globals.map((global) => {\n const entityToGroup: EntityToGroup = {\n type: EntityType.global,\n entity: global,\n }\n\n return entityToGroup\n }) ?? []),\n ],\n permissions,\n i18n,\n )\n\n const createMappedComponent = getCreateMappedComponent({\n importMap: payload.importMap,\n serverProps: {\n globalData,\n i18n,\n Link,\n locale,\n navGroups,\n params,\n payload,\n permissions,\n searchParams,\n user,\n visibleEntities,\n },\n })\n\n const mappedDashboardComponent = createMappedComponent(\n CustomDashboardComponent?.Component,\n undefined,\n DefaultDashboard,\n 'CustomDashboardComponent.Component',\n )\n\n return (\n <Fragment>\n <HydrateAuthProvider permissions={permissions} />\n <RenderComponent\n clientProps={{\n Link,\n locale,\n }}\n mappedComponent={mappedDashboardComponent}\n />\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Edit/Default/index.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAA6D,MAAM,OAAO,CAAA;AAMjF,OAAO,cAAc,CAAA;AASrB,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Edit/Default/index.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAA6D,MAAM,OAAO,CAAA;AAMjF,OAAO,cAAc,CAAA;AASrB,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EA4dnC,CAAA"}
|
|
@@ -198,7 +198,7 @@ export const DefaultEditView = () => {
|
|
|
198
198
|
});
|
|
199
199
|
setDocumentIsLocked(true);
|
|
200
200
|
if (isLockingEnabled) {
|
|
201
|
-
const previousOwnerId = documentLockStateRef.current?.user?.id;
|
|
201
|
+
const previousOwnerId = typeof documentLockStateRef.current?.user === 'object' ? documentLockStateRef.current?.user?.id : documentLockStateRef.current?.user;
|
|
202
202
|
if (lockedState) {
|
|
203
203
|
if (!documentLockStateRef.current || lockedState.user.id !== previousOwnerId) {
|
|
204
204
|
if (previousOwnerId === user.id && lockedState.user.id !== user.id) {
|
|
@@ -230,7 +230,7 @@ export const DefaultEditView = () => {
|
|
|
230
230
|
// Unlock the document only if we're actually navigating away from the document
|
|
231
231
|
if (documentId && documentIsLocked && !isStayingWithinDocument) {
|
|
232
232
|
// Check if this user is still the current editor
|
|
233
|
-
if (documentLockStateRef.current?.user?.id === user?.id) {
|
|
233
|
+
if (typeof documentLockStateRef.current?.user === 'object' ? documentLockStateRef.current?.user?.id === user?.id : documentLockStateRef.current?.user === user?.id) {
|
|
234
234
|
void unlockDocument(id, collectionSlug ?? globalSlug);
|
|
235
235
|
setDocumentIsLocked(false);
|
|
236
236
|
setCurrentEditor(null);
|
|
@@ -239,7 +239,7 @@ export const DefaultEditView = () => {
|
|
|
239
239
|
setShowTakeOverModal(false);
|
|
240
240
|
};
|
|
241
241
|
}, [collectionSlug, globalSlug, id, unlockDocument, user, setCurrentEditor, isLockingEnabled, documentIsLocked, setDocumentIsLocked]);
|
|
242
|
-
const shouldShowDocumentLockedModal = documentIsLocked && currentEditor && currentEditor.id !== user?.id && !isReadOnlyForIncomingUser && !showTakeOverModal && !documentLockStateRef.current?.hasShownLockedModal && !isLockExpired;
|
|
242
|
+
const shouldShowDocumentLockedModal = documentIsLocked && currentEditor && (typeof currentEditor === 'object' ? currentEditor.id !== user?.id : currentEditor !== user?.id) && !isReadOnlyForIncomingUser && !showTakeOverModal && !documentLockStateRef.current?.hasShownLockedModal && !isLockExpired;
|
|
243
243
|
return /*#__PURE__*/_jsx("main", {
|
|
244
244
|
className: classes.filter(Boolean).join(' '),
|
|
245
245
|
children: /*#__PURE__*/_jsx(OperationProvider, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["DocumentControls","DocumentFields","Form","OperationProvider","RenderComponent","Upload","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useEditDepth","useUploadEdits","formatAdminURL","getFormState","handleBackToDashboard","handleGoBack","handleTakeOver","useRouter","useSearchParams","React","Fragment","useCallback","useEffect","useRef","useState","DocumentLocked","DocumentTakeOver","LeaveWithoutSaving","Auth","SetDocumentStepNav","SetDocumentTitle","baseClass","DefaultEditView","id","action","AfterDocument","AfterFields","apiURL","BeforeDocument","BeforeFields","collectionSlug","currentEditor","disableActions","disableCreate","disableLeaveWithoutSaving","docPermissions","documentIsLocked","getDocPreferences","getVersions","globalSlug","hasPublishPermission","hasSavePermission","initialData","data","initialState","isEditing","isInitializing","lastUpdateTime","onDelete","onDrawerCreate","onDuplicate","onSave","onSaveFromContext","redirectAfterDelete","redirectAfterDuplicate","setCurrentEditor","setDocumentIsLocked","unlockDocument","updateDocumentEditor","refreshCookieAsync","user","config","admin","userSlug","routes","adminRoute","api","apiRoute","serverURL","getEntityConfig","router","depth","params","reportUpdate","resetUploadEdits","locale","get","collectionConfig","globalConfig","entitySlug","slug","operation","auth","undefined","upload","docConfig","lockDocumentsProp","lockDocuments","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","preventLeaveWithoutSaving","versions","drafts","autosave","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","documentLockStateRef","hasShownLockedModal","isLocked","classes","push","schemaPath","setSchemaPath","disableLocalStrategy","validateBeforeSubmit","setValidateBeforeSubmit","json","updatedAt","result","toISOString","redirectRoute","path","doc","onChange","formState","prevFormState","currentTime","timeSinceLastUpdate","updateLastEdited","docPreferences","lockedState","state","body","returnLockStatus","previousOwnerId","current","currentPath","window","location","pathname","documentId","stayWithinDocumentPaths","isStayingWithinDocument","some","includes","shouldShowDocumentLockedModal","_jsx","className","filter","Boolean","join","_jsxs","disabled","disableValidationOnSubmit","method","onSuccess","isActive","onReadOnly","onTakeOver","pluralLabel","labels","plural","useAsTitle","fallback","toString","permissions","readOnlyForIncomingUser","email","loginWithUsername","readOnly","requirePassword","useAPIKey","username","verify","components","edit","mappedComponent","uploadConfig","fields"],"sources":["../../../../src/views/Edit/Default/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig, ClientGlobalConfig, ClientUser } from 'payload'\n\nimport {\n DocumentControls,\n DocumentFields,\n Form,\n type FormProps,\n OperationProvider,\n RenderComponent,\n Upload,\n useAuth,\n useConfig,\n useDocumentEvents,\n useDocumentInfo,\n useEditDepth,\n useUploadEdits,\n} from '@payloadcms/ui'\nimport {\n formatAdminURL,\n getFormState,\n handleBackToDashboard,\n handleGoBack,\n handleTakeOver,\n} from '@payloadcms/ui/shared'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport { DocumentLocked } from '../../../elements/DocumentLocked/index.js'\nimport { DocumentTakeOver } from '../../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../../elements/LeaveWithoutSaving/index.js'\nimport { Auth } from './Auth/index.js'\nimport './index.scss'\nimport { SetDocumentStepNav } from './SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from './SetDocumentTitle/index.js'\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 const DefaultEditView: React.FC = () => {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeDocument,\n BeforeFields,\n collectionSlug,\n currentEditor,\n disableActions,\n disableCreate,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n getDocPreferences,\n getVersions,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n initialData: data,\n initialState,\n isEditing,\n isInitializing,\n lastUpdateTime,\n onDelete,\n onDrawerCreate,\n onDuplicate,\n onSave: onSaveFromContext,\n redirectAfterDelete,\n redirectAfterDuplicate,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n updateDocumentEditor,\n } = useDocumentInfo()\n\n const { refreshCookieAsync, user } = useAuth()\n const {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const router = useRouter()\n const depth = useEditDepth()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n\n const locale = params.get('locale')\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n\n const globalConfig = getEntityConfig({ globalSlug }) as ClientGlobalConfig\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 let preventLeaveWithoutSaving = true\n\n if (collectionConfig) {\n preventLeaveWithoutSaving = !(\n collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave\n )\n } else if (globalConfig) {\n preventLeaveWithoutSaving = !(\n globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave\n )\n } else if (typeof disableLeaveWithoutSaving !== 'undefined') {\n preventLeaveWithoutSaving = !disableLeaveWithoutSaving\n }\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 documentLockStateRef = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const classes = [baseClass, (id || globalSlug) && `${baseClass}--is-editing`]\n\n if (globalSlug) {\n classes.push(`global-edit--${globalSlug}`)\n }\n if (collectionSlug) {\n classes.push(`collection-edit--${collectionSlug}`)\n }\n\n const [schemaPath, setSchemaPath] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return `_${entitySlug}.auth`\n }\n\n return 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 onSave = useCallback(\n (json) => {\n reportUpdate({\n id,\n entitySlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n void getVersions()\n\n if (typeof onSaveFromContext === 'function') {\n void onSaveFromContext({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n\n // Unlock the document after save\n if ((id || globalSlug) && isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n if (!isEditing && depth < 2) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${json?.doc?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n router.push(redirectRoute)\n } else {\n resetUploadEdits()\n }\n },\n [\n onSaveFromContext,\n userSlug,\n reportUpdate,\n id,\n entitySlug,\n user,\n depth,\n collectionSlug,\n getVersions,\n isEditing,\n refreshCookieAsync,\n adminRoute,\n router,\n locale,\n resetUploadEdits,\n globalSlug,\n isLockingEnabled,\n setDocumentIsLocked,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const { lockedState, state } = await getFormState({\n apiRoute,\n body: {\n id,\n collectionSlug,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n returnLockStatus: isLockingEnabled ? true : false,\n schemaPath,\n updateLastEdited,\n },\n serverURL,\n })\n\n setDocumentIsLocked(true)\n\n if (isLockingEnabled) {\n const previousOwnerId = documentLockStateRef.current?.user?.id\n\n if (lockedState) {\n if (!documentLockStateRef.current || lockedState.user.id !== previousOwnerId) {\n if (previousOwnerId === user.id && lockedState.user.id !== user.id) {\n setShowTakeOverModal(true)\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n documentLockStateRef.current = documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user,\n }\n setCurrentEditor(lockedState.user)\n }\n }\n }\n\n return state\n },\n [\n apiRoute,\n collectionSlug,\n editSessionStartTime,\n schemaPath,\n getDocPreferences,\n globalSlug,\n id,\n operation,\n serverURL,\n user,\n documentLockStateRef,\n setCurrentEditor,\n isLockingEnabled,\n setDocumentIsLocked,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n if (!isLockingEnabled) {\n return\n }\n\n const currentPath = window.location.pathname\n\n const documentId = id || globalSlug\n\n // Routes where we do NOT want to unlock the document\n const stayWithinDocumentPaths = ['preview', 'api', 'versions']\n\n const isStayingWithinDocument = stayWithinDocumentPaths.some((path) =>\n currentPath.includes(path),\n )\n\n // Unlock the document only if we're actually navigating away from the document\n if (documentId && documentIsLocked && !isStayingWithinDocument) {\n // Check if this user is still the current editor\n if (documentLockStateRef.current?.user?.id === user?.id) {\n void unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n }\n }\n\n setShowTakeOverModal(false)\n }\n }, [\n collectionSlug,\n globalSlug,\n id,\n unlockDocument,\n user,\n setCurrentEditor,\n isLockingEnabled,\n documentIsLocked,\n setDocumentIsLocked,\n ])\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n currentEditor.id !== user?.id &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n !documentLockStateRef.current?.hasShownLockedModal &&\n !isLockExpired\n\n return (\n <main className={classes.filter(Boolean).join(' ')}>\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || isInitializing || !hasSavePermission}\n disableValidationOnSubmit={!validateBeforeSubmit}\n initialState={!isInitializing && initialState}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {BeforeDocument}\n {isLockingEnabled && shouldShowDocumentLockedModal && !isReadOnlyForIncomingUser && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n false,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n )\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {!isReadOnlyForIncomingUser && preventLeaveWithoutSaving && <LeaveWithoutSaving />}\n <SetDocumentStepNav\n collectionSlug={collectionConfig?.slug}\n globalSlug={globalConfig?.slug}\n id={id}\n pluralLabel={collectionConfig?.labels?.plural}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\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 data={data}\n disableActions={disableActions}\n disableCreate={disableCreate}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n onDelete={onDelete}\n onDrawerCreate={onDrawerCreate}\n onDuplicate={onDuplicate}\n onSave={onSave}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n true,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n setIsReadOnlyForIncomingUser,\n )\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\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 setSchemaPath={setSchemaPath}\n setValidateBeforeSubmit={setValidateBeforeSubmit}\n // eslint-disable-next-line react-compiler/react-compiler\n useAPIKey={auth.useAPIKey}\n username={data?.username}\n verify={auth.verify}\n />\n )}\n {upload && (\n <React.Fragment>\n {collectionConfig?.admin?.components?.edit?.Upload ? (\n <RenderComponent\n mappedComponent={collectionConfig.admin.components.edit.Upload}\n />\n ) : (\n <Upload\n collectionSlug={collectionConfig.slug}\n initialState={initialState}\n uploadConfig={upload}\n />\n )}\n </React.Fragment>\n )}\n </Fragment>\n )\n }\n docPermissions={docPermissions}\n fields={(collectionConfig || globalConfig)?.fields}\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission}\n schemaPath={schemaPath}\n />\n {AfterDocument}\n </Form>\n </OperationProvider>\n </main>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["DocumentControls","DocumentFields","Form","OperationProvider","RenderComponent","Upload","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useEditDepth","useUploadEdits","formatAdminURL","getFormState","handleBackToDashboard","handleGoBack","handleTakeOver","useRouter","useSearchParams","React","Fragment","useCallback","useEffect","useRef","useState","DocumentLocked","DocumentTakeOver","LeaveWithoutSaving","Auth","SetDocumentStepNav","SetDocumentTitle","baseClass","DefaultEditView","id","action","AfterDocument","AfterFields","apiURL","BeforeDocument","BeforeFields","collectionSlug","currentEditor","disableActions","disableCreate","disableLeaveWithoutSaving","docPermissions","documentIsLocked","getDocPreferences","getVersions","globalSlug","hasPublishPermission","hasSavePermission","initialData","data","initialState","isEditing","isInitializing","lastUpdateTime","onDelete","onDrawerCreate","onDuplicate","onSave","onSaveFromContext","redirectAfterDelete","redirectAfterDuplicate","setCurrentEditor","setDocumentIsLocked","unlockDocument","updateDocumentEditor","refreshCookieAsync","user","config","admin","userSlug","routes","adminRoute","api","apiRoute","serverURL","getEntityConfig","router","depth","params","reportUpdate","resetUploadEdits","locale","get","collectionConfig","globalConfig","entitySlug","slug","operation","auth","undefined","upload","docConfig","lockDocumentsProp","lockDocuments","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","preventLeaveWithoutSaving","versions","drafts","autosave","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","documentLockStateRef","hasShownLockedModal","isLocked","classes","push","schemaPath","setSchemaPath","disableLocalStrategy","validateBeforeSubmit","setValidateBeforeSubmit","json","updatedAt","result","toISOString","redirectRoute","path","doc","onChange","formState","prevFormState","currentTime","timeSinceLastUpdate","updateLastEdited","docPreferences","lockedState","state","body","returnLockStatus","previousOwnerId","current","currentPath","window","location","pathname","documentId","stayWithinDocumentPaths","isStayingWithinDocument","some","includes","shouldShowDocumentLockedModal","_jsx","className","filter","Boolean","join","_jsxs","disabled","disableValidationOnSubmit","method","onSuccess","isActive","onReadOnly","onTakeOver","pluralLabel","labels","plural","useAsTitle","fallback","toString","permissions","readOnlyForIncomingUser","email","loginWithUsername","readOnly","requirePassword","useAPIKey","username","verify","components","edit","mappedComponent","uploadConfig","fields"],"sources":["../../../../src/views/Edit/Default/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig, ClientGlobalConfig, ClientUser } from 'payload'\n\nimport {\n DocumentControls,\n DocumentFields,\n Form,\n type FormProps,\n OperationProvider,\n RenderComponent,\n Upload,\n useAuth,\n useConfig,\n useDocumentEvents,\n useDocumentInfo,\n useEditDepth,\n useUploadEdits,\n} from '@payloadcms/ui'\nimport {\n formatAdminURL,\n getFormState,\n handleBackToDashboard,\n handleGoBack,\n handleTakeOver,\n} from '@payloadcms/ui/shared'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport { DocumentLocked } from '../../../elements/DocumentLocked/index.js'\nimport { DocumentTakeOver } from '../../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../../elements/LeaveWithoutSaving/index.js'\nimport { Auth } from './Auth/index.js'\nimport './index.scss'\nimport { SetDocumentStepNav } from './SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from './SetDocumentTitle/index.js'\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 const DefaultEditView: React.FC = () => {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeDocument,\n BeforeFields,\n collectionSlug,\n currentEditor,\n disableActions,\n disableCreate,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n getDocPreferences,\n getVersions,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n initialData: data,\n initialState,\n isEditing,\n isInitializing,\n lastUpdateTime,\n onDelete,\n onDrawerCreate,\n onDuplicate,\n onSave: onSaveFromContext,\n redirectAfterDelete,\n redirectAfterDuplicate,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n updateDocumentEditor,\n } = useDocumentInfo()\n\n const { refreshCookieAsync, user } = useAuth()\n const {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const router = useRouter()\n const depth = useEditDepth()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n\n const locale = params.get('locale')\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n\n const globalConfig = getEntityConfig({ globalSlug }) as ClientGlobalConfig\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 let preventLeaveWithoutSaving = true\n\n if (collectionConfig) {\n preventLeaveWithoutSaving = !(\n collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave\n )\n } else if (globalConfig) {\n preventLeaveWithoutSaving = !(\n globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave\n )\n } else if (typeof disableLeaveWithoutSaving !== 'undefined') {\n preventLeaveWithoutSaving = !disableLeaveWithoutSaving\n }\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 documentLockStateRef = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser | number | string\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const classes = [baseClass, (id || globalSlug) && `${baseClass}--is-editing`]\n\n if (globalSlug) {\n classes.push(`global-edit--${globalSlug}`)\n }\n if (collectionSlug) {\n classes.push(`collection-edit--${collectionSlug}`)\n }\n\n const [schemaPath, setSchemaPath] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return `_${entitySlug}.auth`\n }\n\n return 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 onSave = useCallback(\n (json) => {\n reportUpdate({\n id,\n entitySlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n void getVersions()\n\n if (typeof onSaveFromContext === 'function') {\n void onSaveFromContext({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n\n // Unlock the document after save\n if ((id || globalSlug) && isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n if (!isEditing && depth < 2) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${json?.doc?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n router.push(redirectRoute)\n } else {\n resetUploadEdits()\n }\n },\n [\n onSaveFromContext,\n userSlug,\n reportUpdate,\n id,\n entitySlug,\n user,\n depth,\n collectionSlug,\n getVersions,\n isEditing,\n refreshCookieAsync,\n adminRoute,\n router,\n locale,\n resetUploadEdits,\n globalSlug,\n isLockingEnabled,\n setDocumentIsLocked,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const { lockedState, state } = await getFormState({\n apiRoute,\n body: {\n id,\n collectionSlug,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n returnLockStatus: isLockingEnabled ? true : false,\n schemaPath,\n updateLastEdited,\n },\n serverURL,\n })\n\n setDocumentIsLocked(true)\n\n if (isLockingEnabled) {\n const previousOwnerId =\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id\n : documentLockStateRef.current?.user\n\n if (lockedState) {\n if (!documentLockStateRef.current || lockedState.user.id !== previousOwnerId) {\n if (previousOwnerId === user.id && lockedState.user.id !== user.id) {\n setShowTakeOverModal(true)\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n documentLockStateRef.current = documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user,\n }\n setCurrentEditor(lockedState.user)\n }\n }\n }\n\n return state\n },\n [\n apiRoute,\n collectionSlug,\n editSessionStartTime,\n schemaPath,\n getDocPreferences,\n globalSlug,\n id,\n operation,\n serverURL,\n user,\n documentLockStateRef,\n setCurrentEditor,\n isLockingEnabled,\n setDocumentIsLocked,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n if (!isLockingEnabled) {\n return\n }\n\n const currentPath = window.location.pathname\n\n const documentId = id || globalSlug\n\n // Routes where we do NOT want to unlock the document\n const stayWithinDocumentPaths = ['preview', 'api', 'versions']\n\n const isStayingWithinDocument = stayWithinDocumentPaths.some((path) =>\n currentPath.includes(path),\n )\n\n // Unlock the document only if we're actually navigating away from the document\n if (documentId && documentIsLocked && !isStayingWithinDocument) {\n // Check if this user is still the current editor\n if (\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id === user?.id\n : documentLockStateRef.current?.user === user?.id\n ) {\n void unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n }\n }\n\n setShowTakeOverModal(false)\n }\n }, [\n collectionSlug,\n globalSlug,\n id,\n unlockDocument,\n user,\n setCurrentEditor,\n isLockingEnabled,\n documentIsLocked,\n setDocumentIsLocked,\n ])\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n (typeof currentEditor === 'object'\n ? currentEditor.id !== user?.id\n : currentEditor !== user?.id) &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n !documentLockStateRef.current?.hasShownLockedModal &&\n !isLockExpired\n\n return (\n <main className={classes.filter(Boolean).join(' ')}>\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || isInitializing || !hasSavePermission}\n disableValidationOnSubmit={!validateBeforeSubmit}\n initialState={!isInitializing && initialState}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {BeforeDocument}\n {isLockingEnabled && shouldShowDocumentLockedModal && !isReadOnlyForIncomingUser && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n false,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n )\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {!isReadOnlyForIncomingUser && preventLeaveWithoutSaving && <LeaveWithoutSaving />}\n <SetDocumentStepNav\n collectionSlug={collectionConfig?.slug}\n globalSlug={globalConfig?.slug}\n id={id}\n pluralLabel={collectionConfig?.labels?.plural}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\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 data={data}\n disableActions={disableActions}\n disableCreate={disableCreate}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n onDelete={onDelete}\n onDrawerCreate={onDrawerCreate}\n onDuplicate={onDuplicate}\n onSave={onSave}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n true,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n setIsReadOnlyForIncomingUser,\n )\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\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 setSchemaPath={setSchemaPath}\n setValidateBeforeSubmit={setValidateBeforeSubmit}\n // eslint-disable-next-line react-compiler/react-compiler\n useAPIKey={auth.useAPIKey}\n username={data?.username}\n verify={auth.verify}\n />\n )}\n {upload && (\n <React.Fragment>\n {collectionConfig?.admin?.components?.edit?.Upload ? (\n <RenderComponent\n mappedComponent={collectionConfig.admin.components.edit.Upload}\n />\n ) : (\n <Upload\n collectionSlug={collectionConfig.slug}\n initialState={initialState}\n uploadConfig={upload}\n />\n )}\n </React.Fragment>\n )}\n </Fragment>\n )\n }\n docPermissions={docPermissions}\n fields={(collectionConfig || globalConfig)?.fields}\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission}\n schemaPath={schemaPath}\n />\n {AfterDocument}\n </Form>\n </OperationProvider>\n </main>\n )\n}\n"],"mappings":"AAAA;;;AAIA,SACEA,gBAAgB,EAChBC,cAAc,EACdC,IAAI,EAEJC,iBAAiB,EACjBC,eAAe,EACfC,MAAM,EACNC,OAAO,EACPC,SAAS,EACTC,iBAAiB,EACjBC,eAAe,EACfC,YAAY,EACZC,cAAc,QACT;AACP,SACEC,cAAc,EACdC,YAAY,EACZC,qBAAqB,EACrBC,YAAY,EACZC,cAAc,QACT;AACP,SAASC,SAAS,EAAEC,eAAe,QAAQ;AAC3C,OAAOC,KAAA,IAASC,QAAQ,EAAEC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAE1E,SAASC,cAAc,QAAQ;AAC/B,SAASC,gBAAgB,QAAQ;AACjC,SAASC,kBAAkB,QAAQ;AACnC,SAASC,IAAI,QAAQ;AAErB,SAASC,kBAAkB,QAAQ;AACnC,SAASC,gBAAgB,QAAQ;AAEjC,MAAMC,SAAA,GAAY;AAElB;AACA;AACA;AACA,OAAO,MAAMC,eAAA,GAA4BA,CAAA;EACvC,MAAM;IACJC,EAAE;IACFC,MAAM;IACNC,aAAa;IACbC,WAAW;IACXC,MAAM;IACNC,cAAc;IACdC,YAAY;IACZC,cAAc;IACdC,aAAa;IACbC,cAAc;IACdC,aAAa;IACbC,yBAAyB;IACzBC,cAAc;IACdC,gBAAgB;IAChBC,iBAAiB;IACjBC,WAAW;IACXC,UAAU;IACVC,oBAAoB;IACpBC,iBAAiB;IACjBC,WAAA,EAAaC,IAAI;IACjBC,YAAY;IACZC,SAAS;IACTC,cAAc;IACdC,cAAc;IACdC,QAAQ;IACRC,cAAc;IACdC,WAAW;IACXC,MAAA,EAAQC,iBAAiB;IACzBC,mBAAmB;IACnBC,sBAAsB;IACtBC,gBAAgB;IAChBC,mBAAmB;IACnBC,cAAc;IACdC;EAAoB,CACrB,GAAG3D,eAAA;EAEJ,MAAM;IAAE4D,kBAAkB;IAAEC;EAAI,CAAE,GAAGhE,OAAA;EACrC,MAAM;IACJiE,MAAM;IACNA,MAAA,EAAQ;MACNC,KAAA,EAAO;QAAEF,IAAA,EAAMG;MAAQ,CAAE;MACzBC,MAAA,EAAQ;QAAEF,KAAA,EAAOG,UAAU;QAAEC,GAAA,EAAKC;MAAQ,CAAE;MAC5CC;IAAS,CACV;IACDC;EAAe,CAChB,GAAGxE,SAAA;EAEJ,MAAMyE,MAAA,GAAS/D,SAAA;EACf,MAAMgE,KAAA,GAAQvE,YAAA;EACd,MAAMwE,MAAA,GAAShE,eAAA;EACf,MAAM;IAAEiE;EAAY,CAAE,GAAG3E,iBAAA;EACzB,MAAM;IAAE4E;EAAgB,CAAE,GAAGzE,cAAA;EAE7B,MAAM0E,MAAA,GAASH,MAAA,CAAOI,GAAG,CAAC;EAE1B,MAAMC,gBAAA,GAAmBR,eAAA,CAAgB;IAAEvC;EAAe;EAE1D,MAAMgD,YAAA,GAAeT,eAAA,CAAgB;IAAE9B;EAAW;EAElD,MAAMwC,UAAA,GAAaF,gBAAA,EAAkBG,IAAA,IAAQF,YAAA,EAAcE,IAAA;EAE3D,MAAMC,SAAA,GAAYnD,cAAA,IAAkB,CAACP,EAAA,GAAK,WAAW;EAErD,MAAM2D,IAAA,GAAOL,gBAAA,GAAmBA,gBAAA,CAAiBK,IAAI,GAAGC,SAAA;EACxD,MAAMC,MAAA,GAASP,gBAAA,GAAmBA,gBAAA,CAAiBO,MAAM,GAAGD,SAAA;EAE5D,MAAME,SAAA,GAAYR,gBAAA,IAAoBC,YAAA;EAEtC,MAAMQ,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,IAAIG,yBAAA,GAA4B;EAEhC,IAAIhB,gBAAA,EAAkB;IACpBgB,yBAAA,GAA4B,EAC1BhB,gBAAA,EAAkBiB,QAAA,EAAUC,MAAA,IAAUlB,gBAAA,EAAkBiB,QAAA,EAAUC,MAAA,EAAQC,QAAO;EAErF,OAAO,IAAIlB,YAAA,EAAc;IACvBe,yBAAA,GAA4B,EAC1Bf,YAAA,EAAcgB,QAAA,EAAUC,MAAA,IAAUjB,YAAA,EAAcgB,QAAA,EAAUC,MAAA,EAAQC,QAAO;EAE7E,OAAO,IAAI,OAAO9D,yBAAA,KAA8B,aAAa;IAC3D2D,yBAAA,GAA4B,CAAC3D,yBAAA;EAC/B;EAEA,MAAM,CAAC+D,yBAAA,EAA2BC,4BAAA,CAA6B,GAAGpF,QAAA,CAAS;EAC3E,MAAM,CAACqF,iBAAA,EAAmBC,oBAAA,CAAqB,GAAGtF,QAAA,CAAS;EAE3D,MAAM,CAACuF,oBAAA,EAAsBC,uBAAA,CAAwB,GAAGxF,QAAA,CAASyF,IAAA,CAAKC,GAAG;EAEzE,MAAMC,cAAA,GAAiB1D,cAAA,GAAiB6C,0BAAA;EAExC,MAAMc,aAAA,GAAgBH,IAAA,CAAKC,GAAG,KAAKC,cAAA;EAEnC,MAAME,oBAAA,GAAuB9F,MAAA,CAInB;IACR+F,mBAAA,EAAqB;IACrBC,QAAA,EAAU;IACVjD,IAAA,EAAM;EACR;EAEA,MAAMkD,OAAA,GAAU,CAACzF,SAAA,EAAY,CAAAE,EAAA,IAAMgB,UAAS,KAAM,GAAGlB,SAAA,cAAuB,CAAC;EAE7E,IAAIkB,UAAA,EAAY;IACduE,OAAA,CAAQC,IAAI,CAAC,gBAAgBxE,UAAA,EAAY;EAC3C;EACA,IAAIT,cAAA,EAAgB;IAClBgF,OAAA,CAAQC,IAAI,CAAC,oBAAoBjF,cAAA,EAAgB;EACnD;EAEA,MAAM,CAACkF,UAAA,EAAYC,aAAA,CAAc,GAAGnG,QAAA,CAAS;IAC3C,IAAImE,SAAA,KAAc,YAAYC,IAAA,IAAQ,CAACA,IAAA,CAAKgC,oBAAoB,EAAE;MAChE,OAAO,IAAInC,UAAA,OAAiB;IAC9B;IAEA,OAAOA,UAAA;EACT;EACA,MAAM,CAACoC,oBAAA,EAAsBC,uBAAA,CAAwB,GAAGtG,QAAA,CAAS;IAC/D,IAAImE,SAAA,KAAc,YAAYC,IAAA,IAAQ,CAACA,IAAA,CAAKgC,oBAAoB,EAAE;MAChE,OAAO;IACT;IAEA,OAAO;EACT;EAEA,MAAM/D,MAAA,GAASxC,WAAA,CACZ0G,IAAA;IACC5C,YAAA,CAAa;MACXlD,EAAA;MACAwD,UAAA;MACAuC,SAAA,EAAWD,IAAA,EAAME,MAAA,EAAQD,SAAA,IAAa,IAAIf,IAAA,GAAOiB,WAAW;IAC9D;IAEA;IACA;IACA,IAAI5D,IAAA,IAAQ9B,cAAA,KAAmBiC,QAAA,IAAYxC,EAAA,KAAOqC,IAAA,CAAKrC,EAAE,EAAE;MACzD,KAAKoC,kBAAA;IACP;IAEA,KAAKrB,WAAA;IAEL,IAAI,OAAOc,iBAAA,KAAsB,YAAY;MAC3C,KAAKA,iBAAA,CAAkB;QACrB,GAAGiE,IAAI;QACPpC,SAAA,EAAW1D,EAAA,GAAK,WAAW;MAC7B;IACF;IAEA;IACA,IAAI,CAACA,EAAA,IAAMgB,UAAS,KAAMiD,gBAAA,EAAkB;MAC1ChC,mBAAA,CAAoB;IACtB;IAEA,IAAI,CAACX,SAAA,IAAa0B,KAAA,GAAQ,GAAG;MAC3B;MACA,MAAMkD,aAAA,GAAgBvH,cAAA,CAAe;QACnC+D,UAAA;QACAyD,IAAA,EAAM,gBAAgB5F,cAAA,IAAkBuF,IAAA,EAAMM,GAAA,EAAKpG,EAAA,GAAKoD,MAAA,GAAS,WAAWA,MAAA,EAAQ,GAAG;MACzF;MACAL,MAAA,CAAOyC,IAAI,CAACU,aAAA;IACd,OAAO;MACL/C,gBAAA;IACF;EACF,GACA,CACEtB,iBAAA,EACAW,QAAA,EACAU,YAAA,EACAlD,EAAA,EACAwD,UAAA,EACAnB,IAAA,EACAW,KAAA,EACAzC,cAAA,EACAQ,WAAA,EACAO,SAAA,EACAc,kBAAA,EACAM,UAAA,EACAK,MAAA,EACAK,MAAA,EACAD,gBAAA,EACAnC,UAAA,EACAiD,gBAAA,EACAhC,mBAAA,CACD;EAGH,MAAMoE,QAAA,GAAqCjH,WAAA,CACzC,OAAO;IAAEkH,SAAA,EAAWC;EAAa,CAAE;IACjC,MAAMC,WAAA,GAAcxB,IAAA,CAAKC,GAAG;IAC5B,MAAMwB,mBAAA,GAAsBD,WAAA,GAAc1B,oBAAA;IAE1C,MAAM4B,gBAAA,GAAmBzC,gBAAA,IAAoBwC,mBAAA,IAAuB,MAAM;IAAA;IAE1E,IAAIC,gBAAA,EAAkB;MACpB3B,uBAAA,CAAwByB,WAAA;IAC1B;IAEA,MAAMG,cAAA,GAAiB,MAAM7F,iBAAA;IAE7B,MAAM;MAAE8F,WAAW;MAAEC;IAAK,CAAE,GAAG,MAAMjI,YAAA,CAAa;MAChDgE,QAAA;MACAkE,IAAA,EAAM;QACJ9G,EAAA;QACAO,cAAA;QACAoG,cAAA;QACAL,SAAA,EAAWC,aAAA;QACXvF,UAAA;QACA0C,SAAA;QACAqD,gBAAA,EAAkB9C,gBAAA,GAAmB,OAAO;QAC5CwB,UAAA;QACAiB;MACF;MACA7D;IACF;IAEAZ,mBAAA,CAAoB;IAEpB,IAAIgC,gBAAA,EAAkB;MACpB,MAAM+C,eAAA,GACJ,OAAO5B,oBAAA,CAAqB6B,OAAO,EAAE5E,IAAA,KAAS,WAC1C+C,oBAAA,CAAqB6B,OAAO,EAAE5E,IAAA,EAAMrC,EAAA,GACpCoF,oBAAA,CAAqB6B,OAAO,EAAE5E,IAAA;MAEpC,IAAIuE,WAAA,EAAa;QACf,IAAI,CAACxB,oBAAA,CAAqB6B,OAAO,IAAIL,WAAA,CAAYvE,IAAI,CAACrC,EAAE,KAAKgH,eAAA,EAAiB;UAC5E,IAAIA,eAAA,KAAoB3E,IAAA,CAAKrC,EAAE,IAAI4G,WAAA,CAAYvE,IAAI,CAACrC,EAAE,KAAKqC,IAAA,CAAKrC,EAAE,EAAE;YAClE6E,oBAAA,CAAqB;YACrBO,oBAAA,CAAqB6B,OAAO,CAAC5B,mBAAmB,GAAG;UACrD;UAEAD,oBAAA,CAAqB6B,OAAO,GAAG7B,oBAAA,CAAqB6B,OAAO,GAAG;YAC5D5B,mBAAA,EAAqBD,oBAAA,CAAqB6B,OAAO,EAAE5B,mBAAA,IAAuB;YAC1EC,QAAA,EAAU;YACVjD,IAAA,EAAMuE,WAAA,CAAYvE;UACpB;UACAL,gBAAA,CAAiB4E,WAAA,CAAYvE,IAAI;QACnC;MACF;IACF;IAEA,OAAOwE,KAAA;EACT,GACA,CACEjE,QAAA,EACArC,cAAA,EACAuE,oBAAA,EACAW,UAAA,EACA3E,iBAAA,EACAE,UAAA,EACAhB,EAAA,EACA0D,SAAA,EACAb,SAAA,EACAR,IAAA,EACA+C,oBAAA,EACApD,gBAAA,EACAiC,gBAAA,EACAhC,mBAAA,CACD;EAGH;EACA5C,SAAA,CAAU;IACR,OAAO;MACL,IAAI,CAAC4E,gBAAA,EAAkB;QACrB;MACF;MAEA,MAAMiD,WAAA,GAAcC,MAAA,CAAOC,QAAQ,CAACC,QAAQ;MAE5C,MAAMC,UAAA,GAAatH,EAAA,IAAMgB,UAAA;MAEzB;MACA,MAAMuG,uBAAA,GAA0B,CAAC,WAAW,OAAO,WAAW;MAE9D,MAAMC,uBAAA,GAA0BD,uBAAA,CAAwBE,IAAI,CAAEtB,IAAA,IAC5De,WAAA,CAAYQ,QAAQ,CAACvB,IAAA;MAGvB;MACA,IAAImB,UAAA,IAAczG,gBAAA,IAAoB,CAAC2G,uBAAA,EAAyB;QAC9D;QACA,IACE,OAAOpC,oBAAA,CAAqB6B,OAAO,EAAE5E,IAAA,KAAS,WAC1C+C,oBAAA,CAAqB6B,OAAO,EAAE5E,IAAA,EAAMrC,EAAA,KAAOqC,IAAA,EAAMrC,EAAA,GACjDoF,oBAAA,CAAqB6B,OAAO,EAAE5E,IAAA,KAASA,IAAA,EAAMrC,EAAA,EACjD;UACA,KAAKkC,cAAA,CAAelC,EAAA,EAAIO,cAAA,IAAkBS,UAAA;UAC1CiB,mBAAA,CAAoB;UACpBD,gBAAA,CAAiB;QACnB;MACF;MAEA6C,oBAAA,CAAqB;IACvB;EACF,GAAG,CACDtE,cAAA,EACAS,UAAA,EACAhB,EAAA,EACAkC,cAAA,EACAG,IAAA,EACAL,gBAAA,EACAiC,gBAAA,EACApD,gBAAA,EACAoB,mBAAA,CACD;EAED,MAAM0F,6BAAA,GACJ9G,gBAAA,IACAL,aAAA,KACC,OAAOA,aAAA,KAAkB,WACtBA,aAAA,CAAcR,EAAE,KAAKqC,IAAA,EAAMrC,EAAA,GAC3BQ,aAAA,KAAkB6B,IAAA,EAAMrC,EAAC,KAC7B,CAAC0E,yBAAA,IACD,CAACE,iBAAA,IACD,CAACQ,oBAAA,CAAqB6B,OAAO,EAAE5B,mBAAA,IAC/B,CAACF,aAAA;EAEH,oBACEyC,IAAA,CAAC;IAAKC,SAAA,EAAWtC,OAAA,CAAQuC,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;cAC5C,aAAAJ,IAAA,CAAC1J,iBAAA;MAAkBwF,SAAA,EAAWA,SAAA;gBAC5B,aAAAuE,KAAA,CAAChK,IAAA;QACCgC,MAAA,EAAQA,MAAA;QACR4H,SAAA,EAAW,GAAG/H,SAAA,QAAiB;QAC/BoI,QAAA,EAAUxD,yBAAA,IAA6BnD,cAAA,IAAkB,CAACL,iBAAA;QAC1DiH,yBAAA,EAA2B,CAACvC,oBAAA;QAC5BvE,YAAA,EAAc,CAACE,cAAA,IAAkBF,YAAA;QACjCE,cAAA,EAAgBA,cAAA;QAChB6G,MAAA,EAAQpI,EAAA,GAAK,UAAU;QACvBqG,QAAA,EAAU,CAACA,QAAA,CAAS;QACpBgC,SAAA,EAAWzG,MAAA;mBAEVvB,cAAA,EACA4D,gBAAA,IAAoB0D,6BAAA,IAAiC,CAACjD,yBAAA,iBACrDkD,IAAA,CAACpI,cAAA;UACCV,YAAA,EAAcA,CAAA,KAAMA,YAAA,CAAa;YAAE4D,UAAA;YAAYnC,cAAA;YAAgBwC;UAAO;UACtEuF,QAAA,EAAUX,6BAAA;UACVY,UAAA,EAAYA,CAAA;YACV5D,4BAAA,CAA6B;YAC7BE,oBAAA,CAAqB;UACvB;UACA2D,UAAA,EAAYA,CAAA,KACVzJ,cAAA,CACEiB,EAAA,EACAO,cAAA,EACAS,UAAA,EACAqB,IAAA,EACA,OACAF,oBAAA,EACAH,gBAAA,EACAoD,oBAAA,EACAnB,gBAAA;UAGJ8B,SAAA,EAAWvE,cAAA;UACXa,IAAA,EAAM7B;YAGTyD,gBAAA,IAAoBW,iBAAA,iBACnBgD,IAAA,CAACnI,gBAAA;UACCZ,qBAAA,EAAuBA,CAAA,KAAMA,qBAAA,CAAsB;YAAE6D,UAAA;YAAYK;UAAO;UACxEuF,QAAA,EAAU1D,iBAAA;UACV2D,UAAA,EAAYA,CAAA;YACV5D,4BAAA,CAA6B;YAC7BE,oBAAA,CAAqB;UACvB;YAGH,CAACH,yBAAA,IAA6BJ,yBAAA,iBAA6BsD,IAAA,CAAClI,kBAAA,O,aAC7DkI,IAAA,CAAChI,kBAAA;UACCW,cAAA,EAAgB+C,gBAAA,EAAkBG,IAAA;UAClCzC,UAAA,EAAYuC,YAAA,EAAcE,IAAA;UAC1BzD,EAAA,EAAIA,EAAA;UACJyI,WAAA,EAAanF,gBAAA,EAAkBoF,MAAA,EAAQC,MAAA;UACvCC,UAAA,EAAYtF,gBAAA,EAAkBf,KAAA,EAAOqG;yBAEvChB,IAAA,CAAC/H,gBAAA;UACCyD,gBAAA,EAAkBA,gBAAA;UAClBhB,MAAA,EAAQA,MAAA;UACRuG,QAAA,EAAU7F,KAAA,IAAS,IAAIhD,EAAA,EAAI8I,QAAA,KAAalF,SAAA;UACxCL,YAAA,EAAcA;yBAEhBqE,IAAA,CAAC7J,gBAAA;UACCqC,MAAA,EAAQA,MAAA;UACRgB,IAAA,EAAMA,IAAA;UACNX,cAAA,EAAgBA,cAAA;UAChBC,aAAA,EAAeA,aAAA;UACfO,oBAAA,EAAsBA,oBAAA;UACtBC,iBAAA,EAAmBA,iBAAA;UACnBlB,EAAA,EAAIA,EAAA;UACJsB,SAAA,EAAWA,SAAA;UACXG,QAAA,EAAUA,QAAA;UACVC,cAAA,EAAgBA,cAAA;UAChBC,WAAA,EAAaA,WAAA;UACbC,MAAA,EAAQA,MAAA;UACR4G,UAAA,EAAYA,CAAA,KACVzJ,cAAA,CACEiB,EAAA,EACAO,cAAA,EACAS,UAAA,EACAqB,IAAA,EACA,MACAF,oBAAA,EACAH,gBAAA,EACAoD,oBAAA,EACAnB,gBAAA,EACAU,4BAAA;UAGJoE,WAAA,EAAanI,cAAA;UACboI,uBAAA,EAAyBtE,yBAAA;UACzB5C,mBAAA,EAAqBA,mBAAA;UACrBC,sBAAA,EAAwBA,sBAAA;UACxB0B,IAAA,EAAMH,gBAAA,EAAkBG,IAAA,IAAQF,YAAA,EAAcE,IAAA;UAC9CpB,IAAA,EAAM7B;yBAERoH,IAAA,CAAC5J,cAAA;UACCmC,WAAA,EAAaA,WAAA;UACbG,YAAA,EACEA,YAAA,iBACE2H,KAAA,CAAC9I,QAAA;uBACEwE,IAAA,iBACCiE,IAAA,CAACjI,IAAA;cACCkI,SAAA,EAAW,GAAG/H,SAAA,QAAiB;cAC/BS,cAAA,EAAgB+C,gBAAA,CAAiBG,IAAI;cACrCkC,oBAAA,EAAsBrC,gBAAA,CAAiBK,IAAI,EAAEgC,oBAAA;cAC7CsD,KAAA,EAAO7H,IAAA,EAAM6H,KAAA;cACbC,iBAAA,EAAmBvF,IAAA,EAAMuF,iBAAA;cACzBxF,SAAA,EAAWA,SAAA;cACXyF,QAAA,EAAU,CAACjI,iBAAA;cACXkI,eAAA,EAAiB,CAACpJ,EAAA;cAClB0F,aAAA,EAAeA,aAAA;cACfG,uBAAA,EAAyBA,uBAAA;cACzB;cACAwD,SAAA,EAAW1F,IAAA,CAAK0F,SAAS;cACzBC,QAAA,EAAUlI,IAAA,EAAMkI,QAAA;cAChBC,MAAA,EAAQ5F,IAAA,CAAK4F;gBAGhB1F,MAAA,iBACC+D,IAAA,CAAC1I,KAAA,CAAMC,QAAQ;wBACZmE,gBAAA,EAAkBf,KAAA,EAAOiH,UAAA,EAAYC,IAAA,EAAMrL,MAAA,gBAC1CwJ,IAAA,CAACzJ,eAAA;gBACCuL,eAAA,EAAiBpG,gBAAA,CAAiBf,KAAK,CAACiH,UAAU,CAACC,IAAI,CAACrL;gCAG1DwJ,IAAA,CAACxJ,MAAA;gBACCmC,cAAA,EAAgB+C,gBAAA,CAAiBG,IAAI;gBACrCpC,YAAA,EAAcA,YAAA;gBACdsI,YAAA,EAAc9F;;;;UAQ5BjD,cAAA,EAAgBA,cAAA;UAChBgJ,MAAA,EAAS,CAAAtG,gBAAA,IAAoBC,YAAW,GAAIqG,MAAA;UAC5CT,QAAA,EAAUzE,yBAAA,IAA6B,CAACxD,iBAAA;UACxCuE,UAAA,EAAYA;YAEbvF,aAAA;;;;AAKX","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../../src/views/LivePreview/index.client.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAMV,IAAI,EACJ,iBAAiB,EAClB,MAAM,SAAS,CAAA;AAqBhB,OAAO,KAA6D,MAAM,OAAO,CAAA;AASjF,OAAO,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../../src/views/LivePreview/index.client.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAMV,IAAI,EACJ,iBAAiB,EAClB,MAAM,SAAS,CAAA;AAqBhB,OAAO,KAA6D,MAAM,OAAO,CAAA;AASjF,OAAO,cAAc,CAAA;AA4YrB,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAA;IACtD,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAA;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB,CAmDA,CAAA"}
|
|
@@ -149,7 +149,7 @@ const PreviewView = ({
|
|
|
149
149
|
});
|
|
150
150
|
setDocumentIsLocked(true);
|
|
151
151
|
if (isLockingEnabled) {
|
|
152
|
-
const previousOwnerId = documentLockStateRef.current?.user?.id;
|
|
152
|
+
const previousOwnerId = typeof documentLockStateRef.current?.user === 'object' ? documentLockStateRef.current?.user?.id : documentLockStateRef.current?.user;
|
|
153
153
|
if (lockedState) {
|
|
154
154
|
if (!documentLockStateRef.current || lockedState.user.id !== previousOwnerId) {
|
|
155
155
|
if (previousOwnerId === user.id && lockedState.user.id !== user.id) {
|
|
@@ -181,7 +181,7 @@ const PreviewView = ({
|
|
|
181
181
|
// Unlock the document only if we're actually navigating away from the document
|
|
182
182
|
if (documentId && documentIsLocked && !isStayingWithinDocument) {
|
|
183
183
|
// Check if this user is still the current editor
|
|
184
|
-
if (documentLockStateRef.current?.user?.id === user?.id) {
|
|
184
|
+
if (typeof documentLockStateRef.current?.user === 'object' ? documentLockStateRef.current?.user?.id === user?.id : documentLockStateRef.current?.user === user?.id) {
|
|
185
185
|
void unlockDocument(id, collectionSlug ?? globalSlug);
|
|
186
186
|
setDocumentIsLocked(false);
|
|
187
187
|
setCurrentEditor(null);
|
|
@@ -190,7 +190,7 @@ const PreviewView = ({
|
|
|
190
190
|
setShowTakeOverModal(false);
|
|
191
191
|
};
|
|
192
192
|
}, [collectionSlug, globalSlug, id, unlockDocument, user, setCurrentEditor, isLockingEnabled, documentIsLocked, setDocumentIsLocked]);
|
|
193
|
-
const shouldShowDocumentLockedModal = documentIsLocked && currentEditor && currentEditor.id !== user
|
|
193
|
+
const shouldShowDocumentLockedModal = documentIsLocked && currentEditor && (typeof currentEditor === 'object' ? currentEditor.id !== user?.id : currentEditor !== user?.id) && !isReadOnlyForIncomingUser && !showTakeOverModal &&
|
|
194
194
|
// eslint-disable-next-line react-compiler/react-compiler
|
|
195
195
|
!documentLockStateRef.current?.hasShownLockedModal && !isLockExpired;
|
|
196
196
|
return /*#__PURE__*/_jsx(OperationProvider, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.client.js","names":["c","_c","DocumentControls","DocumentFields","Form","OperationProvider","SetViewActions","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useTranslation","getFormState","handleBackToDashboard","handleGoBack","handleTakeOver","useRouter","React","Fragment","useCallback","useEffect","useRef","useState","DocumentLocked","DocumentTakeOver","LeaveWithoutSaving","SetDocumentStepNav","SetDocumentTitle","useLivePreviewContext","LivePreviewProvider","LivePreview","usePopupWindow","baseClass","PreviewView","apiRoute","collectionConfig","config","fields","globalConfig","schemaPath","serverURL","id","action","AfterDocument","AfterFields","apiURL","BeforeDocument","BeforeFields","collectionSlug","currentEditor","disableActions","disableLeaveWithoutSaving","docPermissions","documentIsLocked","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","initialData","initialState","isEditing","isInitializing","lastUpdateTime","onSave","onSaveFromProps","setCurrentEditor","setDocumentIsLocked","unlockDocument","updateDocumentEditor","operation","admin","user","userSlug","routes","adminRoute","router","t","previewWindowType","refreshCookieAsync","reportUpdate","docConfig","lockDocumentsProp","lockDocuments","undefined","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","documentLockStateRef","hasShownLockedModal","isLocked","json","entitySlug","updatedAt","result","toISOString","onChange","formState","prevFormState","currentTime","timeSinceLastUpdate","updateLastEdited","docPreferences","lockedState","state","body","returnLockStatus","previousOwnerId","current","currentPath","window","location","pathname","documentId","stayWithinDocumentPaths","isStayingWithinDocument","some","path","includes","shouldShowDocumentLockedModal","_jsx","_jsxs","className","disabled","method","onSuccess","isActive","onReadOnly","onTakeOver","versions","drafts","autosave","globalLabel","label","pluralLabel","labels","plural","useAsTitle","view","fallback","toString","data","permissions","readOnlyForIncomingUser","slug","filter","Boolean","join","forceSidebarWrap","readOnly","LivePreviewClient","props","$","breakpoints","url","t0","getEntityConfig","t1","api","t2","eventType","isPopupOpen","openPopupWindow","popupRef","t3","children","actions","components","views","edit","livePreview","fieldSchema"],"sources":["../../../src/views/LivePreview/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FormProps } from '@payloadcms/ui'\nimport type {\n ClientCollectionConfig,\n ClientConfig,\n ClientField,\n ClientGlobalConfig,\n ClientUser,\n Data,\n LivePreviewConfig,\n} from 'payload'\n\nimport {\n DocumentControls,\n DocumentFields,\n Form,\n OperationProvider,\n SetViewActions,\n useAuth,\n useConfig,\n useDocumentEvents,\n useDocumentInfo,\n useTranslation,\n} from '@payloadcms/ui'\nimport {\n getFormState,\n handleBackToDashboard,\n handleGoBack,\n handleTakeOver,\n} from '@payloadcms/ui/shared'\nimport { useRouter } from 'next/navigation.js'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport { DocumentLocked } from '../../elements/DocumentLocked/index.js'\nimport { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js'\nimport { SetDocumentStepNav } from '../Edit/Default/SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from '../Edit/Default/SetDocumentTitle/index.js'\nimport { useLivePreviewContext } from './Context/context.js'\nimport { LivePreviewProvider } from './Context/index.js'\nimport './index.scss'\nimport { LivePreview } from './Preview/index.js'\nimport { usePopupWindow } from './usePopupWindow.js'\n\nconst baseClass = 'live-preview'\n\ntype Props = {\n readonly apiRoute: string\n readonly collectionConfig?: ClientCollectionConfig\n readonly config: ClientConfig\n readonly fields: ClientField[]\n readonly globalConfig?: ClientGlobalConfig\n readonly schemaPath: string\n readonly serverURL: string\n}\n\nconst PreviewView: React.FC<Props> = ({\n apiRoute,\n collectionConfig,\n config,\n fields,\n globalConfig,\n schemaPath,\n serverURL,\n}) => {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeDocument,\n BeforeFields,\n collectionSlug,\n currentEditor,\n disableActions,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n initialData,\n initialState,\n isEditing,\n isInitializing,\n lastUpdateTime,\n onSave: onSaveFromProps,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n updateDocumentEditor,\n } = useDocumentInfo()\n\n const operation = id ? 'update' : 'create'\n\n const {\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n },\n } = useConfig()\n const router = useRouter()\n const { t } = useTranslation()\n const { previewWindowType } = useLivePreviewContext()\n const { refreshCookieAsync, user } = useAuth()\n const { reportUpdate } = useDocumentEvents()\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 [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 documentLockStateRef = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const onSave = useCallback(\n (json) => {\n reportUpdate({\n id,\n entitySlug: collectionSlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n // Unlock the document after save\n if ((id || globalSlug) && isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n if (typeof onSaveFromProps === 'function') {\n void onSaveFromProps({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n },\n [\n collectionSlug,\n globalSlug,\n id,\n isLockingEnabled,\n onSaveFromProps,\n refreshCookieAsync,\n reportUpdate,\n setDocumentIsLocked,\n user,\n userSlug,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const { lockedState, state } = await getFormState({\n apiRoute,\n body: {\n id,\n collectionSlug,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n returnLockStatus: isLockingEnabled ? true : false,\n schemaPath,\n updateLastEdited,\n },\n serverURL,\n })\n\n setDocumentIsLocked(true)\n\n if (isLockingEnabled) {\n const previousOwnerId = documentLockStateRef.current?.user?.id\n\n if (lockedState) {\n if (!documentLockStateRef.current || lockedState.user.id !== previousOwnerId) {\n if (previousOwnerId === user.id && lockedState.user.id !== user.id) {\n setShowTakeOverModal(true)\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n documentLockStateRef.current = documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user,\n }\n setCurrentEditor(lockedState.user)\n }\n }\n }\n\n return state\n },\n [\n collectionSlug,\n editSessionStartTime,\n globalSlug,\n serverURL,\n apiRoute,\n id,\n isLockingEnabled,\n operation,\n schemaPath,\n getDocPreferences,\n setCurrentEditor,\n setDocumentIsLocked,\n user,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n if (!isLockingEnabled) {\n return\n }\n\n const currentPath = window.location.pathname\n\n const documentId = id || globalSlug\n\n // Routes where we do NOT want to unlock the document\n const stayWithinDocumentPaths = ['preview', 'api', 'versions']\n\n const isStayingWithinDocument = stayWithinDocumentPaths.some((path) =>\n currentPath.includes(path),\n )\n\n // Unlock the document only if we're actually navigating away from the document\n if (documentId && documentIsLocked && !isStayingWithinDocument) {\n // Check if this user is still the current editor\n if (documentLockStateRef.current?.user?.id === user?.id) {\n void unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n }\n }\n\n setShowTakeOverModal(false)\n }\n }, [\n collectionSlug,\n globalSlug,\n id,\n unlockDocument,\n user,\n setCurrentEditor,\n isLockingEnabled,\n documentIsLocked,\n setDocumentIsLocked,\n ])\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n currentEditor.id !== user.id &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n // eslint-disable-next-line react-compiler/react-compiler\n !documentLockStateRef.current?.hasShownLockedModal &&\n !isLockExpired\n\n return (\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || !hasSavePermission}\n initialState={initialState}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isLockingEnabled && shouldShowDocumentLockedModal && !isReadOnlyForIncomingUser && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n false,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n )\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {((collectionConfig &&\n !(collectionConfig.versions?.drafts && collectionConfig.versions?.drafts?.autosave)) ||\n (globalConfig &&\n !(globalConfig.versions?.drafts && globalConfig.versions?.drafts?.autosave))) &&\n !disableLeaveWithoutSaving &&\n !isReadOnlyForIncomingUser && <LeaveWithoutSaving />}\n <SetDocumentStepNav\n collectionSlug={collectionSlug}\n globalLabel={globalConfig?.label}\n globalSlug={globalSlug}\n id={id}\n pluralLabel={collectionConfig ? collectionConfig?.labels?.plural : undefined}\n useAsTitle={collectionConfig ? collectionConfig?.admin?.useAsTitle : undefined}\n view={t('general:livePreview')}\n />\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={id?.toString() || ''}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n data={initialData}\n disableActions={disableActions}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n true,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n setIsReadOnlyForIncomingUser,\n )\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <div\n className={[baseClass, previewWindowType === 'popup' && `${baseClass}--detached`]\n .filter(Boolean)\n .join(' ')}\n >\n <div\n className={[\n `${baseClass}__main`,\n previewWindowType === 'popup' && `${baseClass}__main--popup-open`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {BeforeDocument}\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={BeforeFields}\n docPermissions={docPermissions}\n fields={fields}\n forceSidebarWrap\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission}\n schemaPath={collectionSlug || globalSlug}\n />\n {AfterDocument}\n </div>\n <LivePreview collectionSlug={collectionSlug} globalSlug={globalSlug} />\n </div>\n </Form>\n </OperationProvider>\n )\n}\n\nexport const LivePreviewClient: React.FC<{\n readonly breakpoints: LivePreviewConfig['breakpoints']\n readonly initialData: Data\n readonly url: string\n}> = (props) => {\n const { breakpoints, url } = props\n const { collectionSlug, globalSlug } = useDocumentInfo()\n\n const {\n config,\n config: {\n routes: { api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const { isPopupOpen, openPopupWindow, popupRef } = usePopupWindow({\n eventType: 'payload-live-preview',\n url,\n })\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n\n const globalConfig = getEntityConfig({ globalSlug }) as ClientGlobalConfig\n\n const schemaPath = collectionSlug || globalSlug\n\n return (\n <Fragment>\n <SetViewActions\n actions={\n (collectionConfig || globalConfig)?.admin?.components?.views?.edit?.livePreview?.actions\n }\n />\n <LivePreviewProvider\n breakpoints={breakpoints}\n fieldSchema={collectionConfig?.fields || globalConfig?.fields}\n isPopupOpen={isPopupOpen}\n openPopupWindow={openPopupWindow}\n popupRef={popupRef}\n url={url}\n >\n <PreviewView\n apiRoute={apiRoute}\n collectionConfig={collectionConfig}\n config={config}\n fields={(collectionConfig || globalConfig)?.fields}\n globalConfig={globalConfig}\n schemaPath={schemaPath}\n serverURL={serverURL}\n />\n </LivePreviewProvider>\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.client.js","names":["c","_c","DocumentControls","DocumentFields","Form","OperationProvider","SetViewActions","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useTranslation","getFormState","handleBackToDashboard","handleGoBack","handleTakeOver","useRouter","React","Fragment","useCallback","useEffect","useRef","useState","DocumentLocked","DocumentTakeOver","LeaveWithoutSaving","SetDocumentStepNav","SetDocumentTitle","useLivePreviewContext","LivePreviewProvider","LivePreview","usePopupWindow","baseClass","PreviewView","apiRoute","collectionConfig","config","fields","globalConfig","schemaPath","serverURL","id","action","AfterDocument","AfterFields","apiURL","BeforeDocument","BeforeFields","collectionSlug","currentEditor","disableActions","disableLeaveWithoutSaving","docPermissions","documentIsLocked","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","initialData","initialState","isEditing","isInitializing","lastUpdateTime","onSave","onSaveFromProps","setCurrentEditor","setDocumentIsLocked","unlockDocument","updateDocumentEditor","operation","admin","user","userSlug","routes","adminRoute","router","t","previewWindowType","refreshCookieAsync","reportUpdate","docConfig","lockDocumentsProp","lockDocuments","undefined","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","documentLockStateRef","hasShownLockedModal","isLocked","json","entitySlug","updatedAt","result","toISOString","onChange","formState","prevFormState","currentTime","timeSinceLastUpdate","updateLastEdited","docPreferences","lockedState","state","body","returnLockStatus","previousOwnerId","current","currentPath","window","location","pathname","documentId","stayWithinDocumentPaths","isStayingWithinDocument","some","path","includes","shouldShowDocumentLockedModal","_jsx","_jsxs","className","disabled","method","onSuccess","isActive","onReadOnly","onTakeOver","versions","drafts","autosave","globalLabel","label","pluralLabel","labels","plural","useAsTitle","view","fallback","toString","data","permissions","readOnlyForIncomingUser","slug","filter","Boolean","join","forceSidebarWrap","readOnly","LivePreviewClient","props","$","breakpoints","url","t0","getEntityConfig","t1","api","t2","eventType","isPopupOpen","openPopupWindow","popupRef","t3","children","actions","components","views","edit","livePreview","fieldSchema"],"sources":["../../../src/views/LivePreview/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FormProps } from '@payloadcms/ui'\nimport type {\n ClientCollectionConfig,\n ClientConfig,\n ClientField,\n ClientGlobalConfig,\n ClientUser,\n Data,\n LivePreviewConfig,\n} from 'payload'\n\nimport {\n DocumentControls,\n DocumentFields,\n Form,\n OperationProvider,\n SetViewActions,\n useAuth,\n useConfig,\n useDocumentEvents,\n useDocumentInfo,\n useTranslation,\n} from '@payloadcms/ui'\nimport {\n getFormState,\n handleBackToDashboard,\n handleGoBack,\n handleTakeOver,\n} from '@payloadcms/ui/shared'\nimport { useRouter } from 'next/navigation.js'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport { DocumentLocked } from '../../elements/DocumentLocked/index.js'\nimport { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js'\nimport { SetDocumentStepNav } from '../Edit/Default/SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from '../Edit/Default/SetDocumentTitle/index.js'\nimport { useLivePreviewContext } from './Context/context.js'\nimport { LivePreviewProvider } from './Context/index.js'\nimport './index.scss'\nimport { LivePreview } from './Preview/index.js'\nimport { usePopupWindow } from './usePopupWindow.js'\n\nconst baseClass = 'live-preview'\n\ntype Props = {\n readonly apiRoute: string\n readonly collectionConfig?: ClientCollectionConfig\n readonly config: ClientConfig\n readonly fields: ClientField[]\n readonly globalConfig?: ClientGlobalConfig\n readonly schemaPath: string\n readonly serverURL: string\n}\n\nconst PreviewView: React.FC<Props> = ({\n apiRoute,\n collectionConfig,\n config,\n fields,\n globalConfig,\n schemaPath,\n serverURL,\n}) => {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeDocument,\n BeforeFields,\n collectionSlug,\n currentEditor,\n disableActions,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n initialData,\n initialState,\n isEditing,\n isInitializing,\n lastUpdateTime,\n onSave: onSaveFromProps,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n updateDocumentEditor,\n } = useDocumentInfo()\n\n const operation = id ? 'update' : 'create'\n\n const {\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n },\n } = useConfig()\n const router = useRouter()\n const { t } = useTranslation()\n const { previewWindowType } = useLivePreviewContext()\n const { refreshCookieAsync, user } = useAuth()\n const { reportUpdate } = useDocumentEvents()\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 [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 documentLockStateRef = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser | number | string\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const onSave = useCallback(\n (json) => {\n reportUpdate({\n id,\n entitySlug: collectionSlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n // Unlock the document after save\n if ((id || globalSlug) && isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n if (typeof onSaveFromProps === 'function') {\n void onSaveFromProps({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n },\n [\n collectionSlug,\n globalSlug,\n id,\n isLockingEnabled,\n onSaveFromProps,\n refreshCookieAsync,\n reportUpdate,\n setDocumentIsLocked,\n user,\n userSlug,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const { lockedState, state } = await getFormState({\n apiRoute,\n body: {\n id,\n collectionSlug,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n returnLockStatus: isLockingEnabled ? true : false,\n schemaPath,\n updateLastEdited,\n },\n serverURL,\n })\n\n setDocumentIsLocked(true)\n\n if (isLockingEnabled) {\n const previousOwnerId =\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id\n : documentLockStateRef.current?.user\n\n if (lockedState) {\n if (!documentLockStateRef.current || lockedState.user.id !== previousOwnerId) {\n if (previousOwnerId === user.id && lockedState.user.id !== user.id) {\n setShowTakeOverModal(true)\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n documentLockStateRef.current = documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user,\n }\n setCurrentEditor(lockedState.user)\n }\n }\n }\n\n return state\n },\n [\n collectionSlug,\n editSessionStartTime,\n globalSlug,\n serverURL,\n apiRoute,\n id,\n isLockingEnabled,\n operation,\n schemaPath,\n getDocPreferences,\n setCurrentEditor,\n setDocumentIsLocked,\n user,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n if (!isLockingEnabled) {\n return\n }\n\n const currentPath = window.location.pathname\n\n const documentId = id || globalSlug\n\n // Routes where we do NOT want to unlock the document\n const stayWithinDocumentPaths = ['preview', 'api', 'versions']\n\n const isStayingWithinDocument = stayWithinDocumentPaths.some((path) =>\n currentPath.includes(path),\n )\n\n // Unlock the document only if we're actually navigating away from the document\n if (documentId && documentIsLocked && !isStayingWithinDocument) {\n // Check if this user is still the current editor\n if (\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id === user?.id\n : documentLockStateRef.current?.user === user?.id\n ) {\n void unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n }\n }\n\n setShowTakeOverModal(false)\n }\n }, [\n collectionSlug,\n globalSlug,\n id,\n unlockDocument,\n user,\n setCurrentEditor,\n isLockingEnabled,\n documentIsLocked,\n setDocumentIsLocked,\n ])\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n (typeof currentEditor === 'object'\n ? currentEditor.id !== user?.id\n : currentEditor !== user?.id) &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n // eslint-disable-next-line react-compiler/react-compiler\n !documentLockStateRef.current?.hasShownLockedModal &&\n !isLockExpired\n\n return (\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || !hasSavePermission}\n initialState={initialState}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isLockingEnabled && shouldShowDocumentLockedModal && !isReadOnlyForIncomingUser && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n false,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n )\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {((collectionConfig &&\n !(collectionConfig.versions?.drafts && collectionConfig.versions?.drafts?.autosave)) ||\n (globalConfig &&\n !(globalConfig.versions?.drafts && globalConfig.versions?.drafts?.autosave))) &&\n !disableLeaveWithoutSaving &&\n !isReadOnlyForIncomingUser && <LeaveWithoutSaving />}\n <SetDocumentStepNav\n collectionSlug={collectionSlug}\n globalLabel={globalConfig?.label}\n globalSlug={globalSlug}\n id={id}\n pluralLabel={collectionConfig ? collectionConfig?.labels?.plural : undefined}\n useAsTitle={collectionConfig ? collectionConfig?.admin?.useAsTitle : undefined}\n view={t('general:livePreview')}\n />\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={id?.toString() || ''}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n data={initialData}\n disableActions={disableActions}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n true,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n setIsReadOnlyForIncomingUser,\n )\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <div\n className={[baseClass, previewWindowType === 'popup' && `${baseClass}--detached`]\n .filter(Boolean)\n .join(' ')}\n >\n <div\n className={[\n `${baseClass}__main`,\n previewWindowType === 'popup' && `${baseClass}__main--popup-open`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {BeforeDocument}\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={BeforeFields}\n docPermissions={docPermissions}\n fields={fields}\n forceSidebarWrap\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission}\n schemaPath={collectionSlug || globalSlug}\n />\n {AfterDocument}\n </div>\n <LivePreview collectionSlug={collectionSlug} globalSlug={globalSlug} />\n </div>\n </Form>\n </OperationProvider>\n )\n}\n\nexport const LivePreviewClient: React.FC<{\n readonly breakpoints: LivePreviewConfig['breakpoints']\n readonly initialData: Data\n readonly url: string\n}> = (props) => {\n const { breakpoints, url } = props\n const { collectionSlug, globalSlug } = useDocumentInfo()\n\n const {\n config,\n config: {\n routes: { api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const { isPopupOpen, openPopupWindow, popupRef } = usePopupWindow({\n eventType: 'payload-live-preview',\n url,\n })\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n\n const globalConfig = getEntityConfig({ globalSlug }) as ClientGlobalConfig\n\n const schemaPath = collectionSlug || globalSlug\n\n return (\n <Fragment>\n <SetViewActions\n actions={\n (collectionConfig || globalConfig)?.admin?.components?.views?.edit?.livePreview?.actions\n }\n />\n <LivePreviewProvider\n breakpoints={breakpoints}\n fieldSchema={collectionConfig?.fields || globalConfig?.fields}\n isPopupOpen={isPopupOpen}\n openPopupWindow={openPopupWindow}\n popupRef={popupRef}\n url={url}\n >\n <PreviewView\n apiRoute={apiRoute}\n collectionConfig={collectionConfig}\n config={config}\n fields={(collectionConfig || globalConfig)?.fields}\n globalConfig={globalConfig}\n schemaPath={schemaPath}\n serverURL={serverURL}\n />\n </LivePreviewProvider>\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|