@payloadcms/ui 3.9.0 → 3.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -112,17 +112,17 @@ const DocumentInfo = ({
112
112
  preferencesKey = `collection-${slug}-${id}`;
113
113
  }
114
114
  }
115
- const unlockDocument = useCallback(async (docId, slug_0) => {
115
+ const unlockDocument = useCallback(async (docID, slug_0) => {
116
116
  try {
117
117
  const isGlobal = slug_0 === globalSlug;
118
- const query = isGlobal ? `where[globalSlug][equals]=${slug_0}` : `where[document.value][equals]=${docId}&where[document.relationTo][equals]=${slug_0}`;
118
+ const query = isGlobal ? `where[globalSlug][equals]=${slug_0}` : `where[document.value][equals]=${docID}&where[document.relationTo][equals]=${slug_0}`;
119
119
  const request = await requests.get(`${serverURL}${api}/payload-locked-documents?${query}`);
120
120
  const {
121
121
  docs
122
122
  } = await request.json();
123
123
  if (docs.length > 0) {
124
- const lockId = docs[0].id;
125
- await requests.delete(`${serverURL}${api}/payload-locked-documents/${lockId}`, {
124
+ const lockID = docs[0].id;
125
+ await requests.delete(`${serverURL}${api}/payload-locked-documents/${lockID}`, {
126
126
  headers: {
127
127
  'Content-Type': 'application/json'
128
128
  }
@@ -134,17 +134,17 @@ const DocumentInfo = ({
134
134
  console.error('Failed to unlock the document', error);
135
135
  }
136
136
  }, [serverURL, api, globalSlug]);
137
- const updateDocumentEditor = useCallback(async (docId_0, slug_1, user) => {
137
+ const updateDocumentEditor = useCallback(async (docID_0, slug_1, user) => {
138
138
  try {
139
139
  const isGlobal_0 = slug_1 === globalSlug;
140
- const query_0 = isGlobal_0 ? `where[globalSlug][equals]=${slug_1}` : `where[document.value][equals]=${docId_0}&where[document.relationTo][equals]=${slug_1}`;
140
+ const query_0 = isGlobal_0 ? `where[globalSlug][equals]=${slug_1}` : `where[document.value][equals]=${docID_0}&where[document.relationTo][equals]=${slug_1}`;
141
141
  // Check if the document is already locked
142
142
  const request_0 = await requests.get(`${serverURL}${api}/payload-locked-documents?${query_0}`);
143
143
  const {
144
144
  docs: docs_0
145
145
  } = await request_0.json();
146
146
  if (docs_0.length > 0) {
147
- const lockId_0 = docs_0[0].id;
147
+ const lockID_0 = docs_0[0].id;
148
148
  const userData = typeof user === 'object' ? {
149
149
  relationTo: user.collection,
150
150
  value: user.id
@@ -153,7 +153,7 @@ const DocumentInfo = ({
153
153
  value: user
154
154
  };
155
155
  // Send a patch request to update the _lastEdited info
156
- await requests.patch(`${serverURL}${api}/payload-locked-documents/${lockId_0}`, {
156
+ await requests.patch(`${serverURL}${api}/payload-locked-documents/${lockID_0}`, {
157
157
  body: JSON.stringify({
158
158
  user: userData
159
159
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["qs","React","createContext","useCallback","useContext","useEffect","useRef","useState","useAuth","requests","formatDocTitle","useConfig","useLocale","usePreferences","useTranslation","UploadEditsProvider","useUploadEdits","useGetDocPermissions","Context","useDocumentInfo","DocumentInfo","children","props","id","collectionSlug","currentEditor","currentEditorFromProps","docPermissions","docPermissionsFromProps","globalSlug","hasPublishedDoc","hasPublishedDocFromProps","hasPublishPermission","hasPublishPermissionFromProps","hasSavePermission","hasSavePermissionFromProps","initialData","initialState","isLocked","isLockedFromProps","lastUpdateTime","lastUpdateTimeFromProps","mostRecentVersionIsAutosaved","mostRecentVersionIsAutosavedFromProps","unpublishedVersionCount","unpublishedVersionCountFromProps","versionCount","versionCountFromProps","setDocPermissions","setHasSavePermission","setHasPublishPermission","permissions","config","admin","dateFormat","routes","api","serverURL","getEntityConfig","collectionConfig","globalConfig","abortControllerRef","AbortController","docConfig","i18n","uploadEdits","documentTitle","setDocumentTitle","data","fallback","toString","setMostRecentVersionIsAutosaved","setVersionCount","setHasPublishedDoc","setUnpublishedVersionCount","documentIsLocked","setDocumentIsLocked","setCurrentEditor","setLastUpdateTime","savedDocumentData","setSavedDocumentData","isInitializing","undefined","getPreference","setPreference","code","locale","baseURL","slug","pluralType","preferencesKey","unlockDocument","docId","isGlobal","query","request","get","docs","json","length","lockId","delete","headers","error","console","updateDocumentEditor","user","userData","relationTo","collection","value","patch","body","JSON","stringify","getDocPermissions","getDocPreferences","setDocFieldPreferences","path","fieldPreferences","allPreferences","fields","e","incrementVersionCount","versions","Math","min","maxPerDoc","max","updateSavedDocumentData","re1","current","abort","_err","action","useMemo","docURL","params","depth","addQueryPrefix","title","_jsx","Provider","DocumentInfoProvider"],"sources":["../../../src/providers/DocumentInfo/index.tsx"],"sourcesContent":["'use client'\nimport type {\n ClientCollectionConfig,\n ClientGlobalConfig,\n ClientUser,\n DocumentPreferences,\n SanitizedDocumentPermissions,\n} from 'payload'\n\nimport * as qs from 'qs-esm'\nimport React, { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react'\n\nimport type { DocumentInfoContext, DocumentInfoProps } from './types.js'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { formatDocTitle } from '../../utilities/formatDocTitle.js'\nimport { useConfig } from '../Config/index.js'\nimport { useLocale } from '../Locale/index.js'\nimport { usePreferences } from '../Preferences/index.js'\nimport { useTranslation } from '../Translation/index.js'\nimport { UploadEditsProvider, useUploadEdits } from '../UploadEdits/index.js'\nimport { useGetDocPermissions } from './useGetDocPermissions.js'\n\nconst Context = createContext({} as DocumentInfoContext)\n\nexport type * from './types.js'\n\nexport const useDocumentInfo = (): DocumentInfoContext => useContext(Context)\n\nconst DocumentInfo: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = ({ children, ...props }) => {\n const {\n id,\n collectionSlug,\n currentEditor: currentEditorFromProps,\n docPermissions: docPermissionsFromProps,\n globalSlug,\n hasPublishedDoc: hasPublishedDocFromProps,\n hasPublishPermission: hasPublishPermissionFromProps,\n hasSavePermission: hasSavePermissionFromProps,\n initialData,\n initialState,\n isLocked: isLockedFromProps,\n lastUpdateTime: lastUpdateTimeFromProps,\n mostRecentVersionIsAutosaved: mostRecentVersionIsAutosavedFromProps,\n unpublishedVersionCount: unpublishedVersionCountFromProps,\n versionCount: versionCountFromProps,\n } = props\n\n const [docPermissions, setDocPermissions] =\n useState<SanitizedDocumentPermissions>(docPermissionsFromProps)\n\n const [hasSavePermission, setHasSavePermission] = useState<boolean>(hasSavePermissionFromProps)\n\n const [hasPublishPermission, setHasPublishPermission] = useState<boolean>(\n hasPublishPermissionFromProps,\n )\n\n const { permissions } = useAuth()\n\n const {\n config: {\n admin: { dateFormat },\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n const globalConfig = getEntityConfig({ globalSlug }) as ClientGlobalConfig\n\n const abortControllerRef = useRef(new AbortController())\n const docConfig = collectionConfig || globalConfig\n\n const { i18n } = useTranslation()\n\n const { uploadEdits } = useUploadEdits()\n\n const [documentTitle, setDocumentTitle] = useState(() =>\n formatDocTitle({\n collectionConfig,\n data: { ...(initialData || {}), id },\n dateFormat,\n fallback: id?.toString(),\n globalConfig,\n i18n,\n }),\n )\n\n const [mostRecentVersionIsAutosaved, setMostRecentVersionIsAutosaved] = useState(\n mostRecentVersionIsAutosavedFromProps,\n )\n const [versionCount, setVersionCount] = useState(versionCountFromProps)\n\n const [hasPublishedDoc, setHasPublishedDoc] = useState(hasPublishedDocFromProps)\n const [unpublishedVersionCount, setUnpublishedVersionCount] = useState(\n unpublishedVersionCountFromProps,\n )\n\n const [documentIsLocked, setDocumentIsLocked] = useState<boolean | undefined>(isLockedFromProps)\n const [currentEditor, setCurrentEditor] = useState<ClientUser | null>(currentEditorFromProps)\n const [lastUpdateTime, setLastUpdateTime] = useState<number>(lastUpdateTimeFromProps)\n const [savedDocumentData, setSavedDocumentData] = useState(initialData)\n\n const isInitializing = initialState === undefined || initialData === undefined\n\n const { getPreference, setPreference } = usePreferences()\n const { code: locale } = useLocale()\n\n const baseURL = `${serverURL}${api}`\n let slug: string\n let pluralType: 'collections' | 'globals'\n let preferencesKey: string\n\n if (globalSlug) {\n slug = globalSlug\n pluralType = 'globals'\n preferencesKey = `global-${slug}`\n }\n\n if (collectionSlug) {\n slug = collectionSlug\n pluralType = 'collections'\n\n if (id) {\n preferencesKey = `collection-${slug}-${id}`\n }\n }\n\n const unlockDocument = useCallback(\n async (docId: number | string, slug: string) => {\n try {\n const isGlobal = slug === globalSlug\n\n const query = isGlobal\n ? `where[globalSlug][equals]=${slug}`\n : `where[document.value][equals]=${docId}&where[document.relationTo][equals]=${slug}`\n\n const request = await requests.get(`${serverURL}${api}/payload-locked-documents?${query}`)\n\n const { docs } = await request.json()\n\n if (docs.length > 0) {\n const lockId = docs[0].id\n await requests.delete(`${serverURL}${api}/payload-locked-documents/${lockId}`, {\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n setDocumentIsLocked(false)\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to unlock the document', error)\n }\n },\n [serverURL, api, globalSlug],\n )\n\n const updateDocumentEditor = useCallback(\n async (docId: number | string, slug: string, user: ClientUser | number | string) => {\n try {\n const isGlobal = slug === globalSlug\n\n const query = isGlobal\n ? `where[globalSlug][equals]=${slug}`\n : `where[document.value][equals]=${docId}&where[document.relationTo][equals]=${slug}`\n\n // Check if the document is already locked\n const request = await requests.get(`${serverURL}${api}/payload-locked-documents?${query}`)\n\n const { docs } = await request.json()\n\n if (docs.length > 0) {\n const lockId = docs[0].id\n\n const userData =\n typeof user === 'object'\n ? { relationTo: user.collection, value: user.id }\n : { relationTo: 'users', value: user }\n\n // Send a patch request to update the _lastEdited info\n await requests.patch(`${serverURL}${api}/payload-locked-documents/${lockId}`, {\n body: JSON.stringify({\n user: userData,\n }),\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to update the document editor', error)\n }\n },\n [serverURL, api, globalSlug],\n )\n\n const getDocPermissions = useGetDocPermissions({\n id: id as string,\n api,\n collectionSlug,\n globalSlug,\n i18n,\n locale,\n permissions,\n serverURL,\n setDocPermissions,\n setHasPublishPermission,\n setHasSavePermission,\n })\n\n const getDocPreferences = useCallback(() => {\n return getPreference<DocumentPreferences>(preferencesKey)\n }, [getPreference, preferencesKey])\n\n const setDocFieldPreferences = useCallback<DocumentInfoContext['setDocFieldPreferences']>(\n async (path, fieldPreferences) => {\n const allPreferences = await getDocPreferences()\n\n if (preferencesKey) {\n try {\n await setPreference(preferencesKey, {\n ...allPreferences,\n fields: {\n ...(allPreferences?.fields || {}),\n [path]: {\n ...allPreferences?.fields?.[path],\n ...fieldPreferences,\n },\n },\n })\n } catch (e) {\n console.error(e) // eslint-disable-line no-console\n }\n }\n },\n [setPreference, preferencesKey, getDocPreferences],\n )\n\n const incrementVersionCount = useCallback(() => {\n if (collectionConfig && collectionConfig.versions) {\n setVersionCount(Math.min(versionCount + 1, collectionConfig.versions.maxPerDoc))\n } else if (globalConfig && globalConfig.versions) {\n setVersionCount(Math.min(versionCount + 1, globalConfig.versions.max))\n }\n }, [collectionConfig, globalConfig, versionCount])\n\n const updateSavedDocumentData = React.useCallback<DocumentInfoContext['updateSavedDocumentData']>(\n (json) => {\n setSavedDocumentData(json)\n },\n [],\n )\n\n useEffect(() => {\n setDocumentTitle(\n formatDocTitle({\n collectionConfig,\n data: { ...savedDocumentData, id },\n dateFormat,\n fallback: id?.toString(),\n globalConfig,\n i18n,\n }),\n )\n }, [collectionConfig, globalConfig, savedDocumentData, dateFormat, i18n, id])\n\n // clean on unmount\n useEffect(() => {\n const re1 = abortControllerRef.current\n\n return () => {\n if (re1) {\n try {\n re1.abort()\n } catch (_err) {\n // swallow error\n }\n }\n }\n }, [])\n\n const action: string = React.useMemo(() => {\n const docURL = `${baseURL}${pluralType === 'globals' ? `/globals` : ''}/${slug}${id ? `/${id}` : ''}`\n const params = {\n depth: 0,\n 'fallback-locale': 'null',\n locale,\n uploadEdits: uploadEdits || undefined,\n }\n\n return `${docURL}${qs.stringify(params, {\n addQueryPrefix: true,\n })}`\n }, [baseURL, locale, pluralType, id, slug, uploadEdits])\n\n const value: DocumentInfoContext = {\n ...props,\n action,\n currentEditor,\n docConfig,\n docPermissions,\n documentIsLocked,\n getDocPermissions,\n getDocPreferences,\n hasPublishedDoc,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialData,\n initialState,\n isInitializing,\n lastUpdateTime,\n mostRecentVersionIsAutosaved,\n preferencesKey,\n savedDocumentData,\n setCurrentEditor,\n setDocFieldPreferences,\n setDocumentIsLocked,\n setDocumentTitle,\n setHasPublishedDoc,\n setLastUpdateTime,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n title: documentTitle,\n unlockDocument,\n unpublishedVersionCount,\n updateDocumentEditor,\n updateSavedDocumentData,\n versionCount,\n }\n\n return <Context.Provider value={value}>{children}</Context.Provider>\n}\n\nexport const DocumentInfoProvider: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = (props) => {\n return (\n <UploadEditsProvider>\n <DocumentInfo {...props} />\n </UploadEditsProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["qs","React","createContext","useCallback","useContext","useEffect","useRef","useState","useAuth","requests","formatDocTitle","useConfig","useLocale","usePreferences","useTranslation","UploadEditsProvider","useUploadEdits","useGetDocPermissions","Context","useDocumentInfo","DocumentInfo","children","props","id","collectionSlug","currentEditor","currentEditorFromProps","docPermissions","docPermissionsFromProps","globalSlug","hasPublishedDoc","hasPublishedDocFromProps","hasPublishPermission","hasPublishPermissionFromProps","hasSavePermission","hasSavePermissionFromProps","initialData","initialState","isLocked","isLockedFromProps","lastUpdateTime","lastUpdateTimeFromProps","mostRecentVersionIsAutosaved","mostRecentVersionIsAutosavedFromProps","unpublishedVersionCount","unpublishedVersionCountFromProps","versionCount","versionCountFromProps","setDocPermissions","setHasSavePermission","setHasPublishPermission","permissions","config","admin","dateFormat","routes","api","serverURL","getEntityConfig","collectionConfig","globalConfig","abortControllerRef","AbortController","docConfig","i18n","uploadEdits","documentTitle","setDocumentTitle","data","fallback","toString","setMostRecentVersionIsAutosaved","setVersionCount","setHasPublishedDoc","setUnpublishedVersionCount","documentIsLocked","setDocumentIsLocked","setCurrentEditor","setLastUpdateTime","savedDocumentData","setSavedDocumentData","isInitializing","undefined","getPreference","setPreference","code","locale","baseURL","slug","pluralType","preferencesKey","unlockDocument","docID","isGlobal","query","request","get","docs","json","length","lockID","delete","headers","error","console","updateDocumentEditor","user","userData","relationTo","collection","value","patch","body","JSON","stringify","getDocPermissions","getDocPreferences","setDocFieldPreferences","path","fieldPreferences","allPreferences","fields","e","incrementVersionCount","versions","Math","min","maxPerDoc","max","updateSavedDocumentData","re1","current","abort","_err","action","useMemo","docURL","params","depth","addQueryPrefix","title","_jsx","Provider","DocumentInfoProvider"],"sources":["../../../src/providers/DocumentInfo/index.tsx"],"sourcesContent":["'use client'\nimport type {\n ClientCollectionConfig,\n ClientGlobalConfig,\n ClientUser,\n DocumentPreferences,\n SanitizedDocumentPermissions,\n} from 'payload'\n\nimport * as qs from 'qs-esm'\nimport React, { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react'\n\nimport type { DocumentInfoContext, DocumentInfoProps } from './types.js'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { formatDocTitle } from '../../utilities/formatDocTitle.js'\nimport { useConfig } from '../Config/index.js'\nimport { useLocale } from '../Locale/index.js'\nimport { usePreferences } from '../Preferences/index.js'\nimport { useTranslation } from '../Translation/index.js'\nimport { UploadEditsProvider, useUploadEdits } from '../UploadEdits/index.js'\nimport { useGetDocPermissions } from './useGetDocPermissions.js'\n\nconst Context = createContext({} as DocumentInfoContext)\n\nexport type * from './types.js'\n\nexport const useDocumentInfo = (): DocumentInfoContext => useContext(Context)\n\nconst DocumentInfo: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = ({ children, ...props }) => {\n const {\n id,\n collectionSlug,\n currentEditor: currentEditorFromProps,\n docPermissions: docPermissionsFromProps,\n globalSlug,\n hasPublishedDoc: hasPublishedDocFromProps,\n hasPublishPermission: hasPublishPermissionFromProps,\n hasSavePermission: hasSavePermissionFromProps,\n initialData,\n initialState,\n isLocked: isLockedFromProps,\n lastUpdateTime: lastUpdateTimeFromProps,\n mostRecentVersionIsAutosaved: mostRecentVersionIsAutosavedFromProps,\n unpublishedVersionCount: unpublishedVersionCountFromProps,\n versionCount: versionCountFromProps,\n } = props\n\n const [docPermissions, setDocPermissions] =\n useState<SanitizedDocumentPermissions>(docPermissionsFromProps)\n\n const [hasSavePermission, setHasSavePermission] = useState<boolean>(hasSavePermissionFromProps)\n\n const [hasPublishPermission, setHasPublishPermission] = useState<boolean>(\n hasPublishPermissionFromProps,\n )\n\n const { permissions } = useAuth()\n\n const {\n config: {\n admin: { dateFormat },\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n const globalConfig = getEntityConfig({ globalSlug }) as ClientGlobalConfig\n\n const abortControllerRef = useRef(new AbortController())\n const docConfig = collectionConfig || globalConfig\n\n const { i18n } = useTranslation()\n\n const { uploadEdits } = useUploadEdits()\n\n const [documentTitle, setDocumentTitle] = useState(() =>\n formatDocTitle({\n collectionConfig,\n data: { ...(initialData || {}), id },\n dateFormat,\n fallback: id?.toString(),\n globalConfig,\n i18n,\n }),\n )\n\n const [mostRecentVersionIsAutosaved, setMostRecentVersionIsAutosaved] = useState(\n mostRecentVersionIsAutosavedFromProps,\n )\n const [versionCount, setVersionCount] = useState(versionCountFromProps)\n\n const [hasPublishedDoc, setHasPublishedDoc] = useState(hasPublishedDocFromProps)\n const [unpublishedVersionCount, setUnpublishedVersionCount] = useState(\n unpublishedVersionCountFromProps,\n )\n\n const [documentIsLocked, setDocumentIsLocked] = useState<boolean | undefined>(isLockedFromProps)\n const [currentEditor, setCurrentEditor] = useState<ClientUser | null>(currentEditorFromProps)\n const [lastUpdateTime, setLastUpdateTime] = useState<number>(lastUpdateTimeFromProps)\n const [savedDocumentData, setSavedDocumentData] = useState(initialData)\n\n const isInitializing = initialState === undefined || initialData === undefined\n\n const { getPreference, setPreference } = usePreferences()\n const { code: locale } = useLocale()\n\n const baseURL = `${serverURL}${api}`\n let slug: string\n let pluralType: 'collections' | 'globals'\n let preferencesKey: string\n\n if (globalSlug) {\n slug = globalSlug\n pluralType = 'globals'\n preferencesKey = `global-${slug}`\n }\n\n if (collectionSlug) {\n slug = collectionSlug\n pluralType = 'collections'\n\n if (id) {\n preferencesKey = `collection-${slug}-${id}`\n }\n }\n\n const unlockDocument = useCallback(\n async (docID: number | string, slug: string) => {\n try {\n const isGlobal = slug === globalSlug\n\n const query = isGlobal\n ? `where[globalSlug][equals]=${slug}`\n : `where[document.value][equals]=${docID}&where[document.relationTo][equals]=${slug}`\n\n const request = await requests.get(`${serverURL}${api}/payload-locked-documents?${query}`)\n\n const { docs } = await request.json()\n\n if (docs.length > 0) {\n const lockID = docs[0].id\n await requests.delete(`${serverURL}${api}/payload-locked-documents/${lockID}`, {\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n setDocumentIsLocked(false)\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to unlock the document', error)\n }\n },\n [serverURL, api, globalSlug],\n )\n\n const updateDocumentEditor = useCallback(\n async (docID: number | string, slug: string, user: ClientUser | number | string) => {\n try {\n const isGlobal = slug === globalSlug\n\n const query = isGlobal\n ? `where[globalSlug][equals]=${slug}`\n : `where[document.value][equals]=${docID}&where[document.relationTo][equals]=${slug}`\n\n // Check if the document is already locked\n const request = await requests.get(`${serverURL}${api}/payload-locked-documents?${query}`)\n\n const { docs } = await request.json()\n\n if (docs.length > 0) {\n const lockID = docs[0].id\n\n const userData =\n typeof user === 'object'\n ? { relationTo: user.collection, value: user.id }\n : { relationTo: 'users', value: user }\n\n // Send a patch request to update the _lastEdited info\n await requests.patch(`${serverURL}${api}/payload-locked-documents/${lockID}`, {\n body: JSON.stringify({\n user: userData,\n }),\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to update the document editor', error)\n }\n },\n [serverURL, api, globalSlug],\n )\n\n const getDocPermissions = useGetDocPermissions({\n id: id as string,\n api,\n collectionSlug,\n globalSlug,\n i18n,\n locale,\n permissions,\n serverURL,\n setDocPermissions,\n setHasPublishPermission,\n setHasSavePermission,\n })\n\n const getDocPreferences = useCallback(() => {\n return getPreference<DocumentPreferences>(preferencesKey)\n }, [getPreference, preferencesKey])\n\n const setDocFieldPreferences = useCallback<DocumentInfoContext['setDocFieldPreferences']>(\n async (path, fieldPreferences) => {\n const allPreferences = await getDocPreferences()\n\n if (preferencesKey) {\n try {\n await setPreference(preferencesKey, {\n ...allPreferences,\n fields: {\n ...(allPreferences?.fields || {}),\n [path]: {\n ...allPreferences?.fields?.[path],\n ...fieldPreferences,\n },\n },\n })\n } catch (e) {\n console.error(e) // eslint-disable-line no-console\n }\n }\n },\n [setPreference, preferencesKey, getDocPreferences],\n )\n\n const incrementVersionCount = useCallback(() => {\n if (collectionConfig && collectionConfig.versions) {\n setVersionCount(Math.min(versionCount + 1, collectionConfig.versions.maxPerDoc))\n } else if (globalConfig && globalConfig.versions) {\n setVersionCount(Math.min(versionCount + 1, globalConfig.versions.max))\n }\n }, [collectionConfig, globalConfig, versionCount])\n\n const updateSavedDocumentData = React.useCallback<DocumentInfoContext['updateSavedDocumentData']>(\n (json) => {\n setSavedDocumentData(json)\n },\n [],\n )\n\n useEffect(() => {\n setDocumentTitle(\n formatDocTitle({\n collectionConfig,\n data: { ...savedDocumentData, id },\n dateFormat,\n fallback: id?.toString(),\n globalConfig,\n i18n,\n }),\n )\n }, [collectionConfig, globalConfig, savedDocumentData, dateFormat, i18n, id])\n\n // clean on unmount\n useEffect(() => {\n const re1 = abortControllerRef.current\n\n return () => {\n if (re1) {\n try {\n re1.abort()\n } catch (_err) {\n // swallow error\n }\n }\n }\n }, [])\n\n const action: string = React.useMemo(() => {\n const docURL = `${baseURL}${pluralType === 'globals' ? `/globals` : ''}/${slug}${id ? `/${id}` : ''}`\n const params = {\n depth: 0,\n 'fallback-locale': 'null',\n locale,\n uploadEdits: uploadEdits || undefined,\n }\n\n return `${docURL}${qs.stringify(params, {\n addQueryPrefix: true,\n })}`\n }, [baseURL, locale, pluralType, id, slug, uploadEdits])\n\n const value: DocumentInfoContext = {\n ...props,\n action,\n currentEditor,\n docConfig,\n docPermissions,\n documentIsLocked,\n getDocPermissions,\n getDocPreferences,\n hasPublishedDoc,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialData,\n initialState,\n isInitializing,\n lastUpdateTime,\n mostRecentVersionIsAutosaved,\n preferencesKey,\n savedDocumentData,\n setCurrentEditor,\n setDocFieldPreferences,\n setDocumentIsLocked,\n setDocumentTitle,\n setHasPublishedDoc,\n setLastUpdateTime,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n title: documentTitle,\n unlockDocument,\n unpublishedVersionCount,\n updateDocumentEditor,\n updateSavedDocumentData,\n versionCount,\n }\n\n return <Context.Provider value={value}>{children}</Context.Provider>\n}\n\nexport const DocumentInfoProvider: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = (props) => {\n return (\n <UploadEditsProvider>\n <DocumentInfo {...props} />\n </UploadEditsProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -55,9 +55,9 @@ export type DocumentInfoContext = {
55
55
  setMostRecentVersionIsAutosaved: React.Dispatch<React.SetStateAction<boolean>>;
56
56
  setUnpublishedVersionCount: React.Dispatch<React.SetStateAction<number>>;
57
57
  title: string;
58
- unlockDocument: (docId: number | string, slug: string) => Promise<void>;
58
+ unlockDocument: (docID: number | string, slug: string) => Promise<void>;
59
59
  unpublishedVersionCount: number;
60
- updateDocumentEditor: (docId: number | string, slug: string, user: ClientUser) => Promise<void>;
60
+ updateDocumentEditor: (docID: number | string, slug: string, user: ClientUser) => Promise<void>;
61
61
  updateSavedDocumentData: (data: Data) => void;
62
62
  versionCount: number;
63
63
  } & DocumentInfoProps;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/providers/DocumentInfo/types.ts"],"sourcesContent":["import type {\n ClientCollectionConfig,\n ClientGlobalConfig,\n ClientUser,\n Data,\n DocumentPreferences,\n FormState,\n InsideFieldsPreferences,\n SanitizedCollectionConfig,\n SanitizedDocumentPermissions,\n SanitizedGlobalConfig,\n TypedUser,\n} from 'payload'\nimport type React from 'react'\n\nexport type DocumentInfoProps = {\n readonly action?: string\n readonly AfterDocument?: React.ReactNode\n readonly AfterFields?: React.ReactNode\n readonly apiURL?: string\n readonly BeforeFields?: React.ReactNode\n readonly collectionSlug?: SanitizedCollectionConfig['slug']\n readonly currentEditor: TypedUser\n readonly disableActions?: boolean\n readonly disableCreate?: boolean\n readonly disableLeaveWithoutSaving?: boolean\n readonly docPermissions?: SanitizedDocumentPermissions\n readonly globalSlug?: SanitizedGlobalConfig['slug']\n readonly hasPublishedDoc: boolean\n readonly hasPublishPermission?: boolean\n readonly hasSavePermission?: boolean\n readonly id?: number | string\n readonly initialData?: Data\n readonly initialState?: FormState\n readonly isEditing?: boolean\n readonly isLocked: boolean\n readonly lastUpdateTime: number\n readonly mostRecentVersionIsAutosaved: boolean\n readonly redirectAfterDelete?: boolean\n readonly redirectAfterDuplicate?: boolean\n readonly unpublishedVersionCount: number\n readonly Upload?: React.ReactNode\n readonly versionCount: number\n}\n\nexport type DocumentInfoContext = {\n currentEditor?: ClientUser | null | number | string\n docConfig?: ClientCollectionConfig | ClientGlobalConfig\n documentIsLocked?: boolean\n getDocPermissions: (data?: Data) => Promise<void>\n getDocPreferences: () => Promise<DocumentPreferences>\n hasPublishedDoc: boolean\n incrementVersionCount: () => void\n initialData: Data\n initialState?: FormState\n isInitializing: boolean\n lastUpdateTime?: number\n mostRecentVersionIsAutosaved: boolean\n preferencesKey?: string\n savedDocumentData?: Data\n setCurrentEditor?: React.Dispatch<React.SetStateAction<ClientUser>>\n setDocFieldPreferences: (\n field: string,\n fieldPreferences: { [key: string]: unknown } & Partial<InsideFieldsPreferences>,\n ) => void\n setDocumentIsLocked?: React.Dispatch<React.SetStateAction<boolean>>\n setDocumentTitle: (title: string) => void\n setHasPublishedDoc: React.Dispatch<React.SetStateAction<boolean>>\n setLastUpdateTime: React.Dispatch<React.SetStateAction<number>>\n setMostRecentVersionIsAutosaved: React.Dispatch<React.SetStateAction<boolean>>\n setUnpublishedVersionCount: React.Dispatch<React.SetStateAction<number>>\n title: string\n unlockDocument: (docId: number | string, slug: string) => Promise<void>\n unpublishedVersionCount: number\n updateDocumentEditor: (docId: number | string, slug: string, user: ClientUser) => Promise<void>\n updateSavedDocumentData: (data: Data) => void\n versionCount: number\n} & DocumentInfoProps\n"],"mappings":"AA6CA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/providers/DocumentInfo/types.ts"],"sourcesContent":["import type {\n ClientCollectionConfig,\n ClientGlobalConfig,\n ClientUser,\n Data,\n DocumentPreferences,\n FormState,\n InsideFieldsPreferences,\n SanitizedCollectionConfig,\n SanitizedDocumentPermissions,\n SanitizedGlobalConfig,\n TypedUser,\n} from 'payload'\nimport type React from 'react'\n\nexport type DocumentInfoProps = {\n readonly action?: string\n readonly AfterDocument?: React.ReactNode\n readonly AfterFields?: React.ReactNode\n readonly apiURL?: string\n readonly BeforeFields?: React.ReactNode\n readonly collectionSlug?: SanitizedCollectionConfig['slug']\n readonly currentEditor: TypedUser\n readonly disableActions?: boolean\n readonly disableCreate?: boolean\n readonly disableLeaveWithoutSaving?: boolean\n readonly docPermissions?: SanitizedDocumentPermissions\n readonly globalSlug?: SanitizedGlobalConfig['slug']\n readonly hasPublishedDoc: boolean\n readonly hasPublishPermission?: boolean\n readonly hasSavePermission?: boolean\n readonly id?: number | string\n readonly initialData?: Data\n readonly initialState?: FormState\n readonly isEditing?: boolean\n readonly isLocked: boolean\n readonly lastUpdateTime: number\n readonly mostRecentVersionIsAutosaved: boolean\n readonly redirectAfterDelete?: boolean\n readonly redirectAfterDuplicate?: boolean\n readonly unpublishedVersionCount: number\n readonly Upload?: React.ReactNode\n readonly versionCount: number\n}\n\nexport type DocumentInfoContext = {\n currentEditor?: ClientUser | null | number | string\n docConfig?: ClientCollectionConfig | ClientGlobalConfig\n documentIsLocked?: boolean\n getDocPermissions: (data?: Data) => Promise<void>\n getDocPreferences: () => Promise<DocumentPreferences>\n hasPublishedDoc: boolean\n incrementVersionCount: () => void\n initialData: Data\n initialState?: FormState\n isInitializing: boolean\n lastUpdateTime?: number\n mostRecentVersionIsAutosaved: boolean\n preferencesKey?: string\n savedDocumentData?: Data\n setCurrentEditor?: React.Dispatch<React.SetStateAction<ClientUser>>\n setDocFieldPreferences: (\n field: string,\n fieldPreferences: { [key: string]: unknown } & Partial<InsideFieldsPreferences>,\n ) => void\n setDocumentIsLocked?: React.Dispatch<React.SetStateAction<boolean>>\n setDocumentTitle: (title: string) => void\n setHasPublishedDoc: React.Dispatch<React.SetStateAction<boolean>>\n setLastUpdateTime: React.Dispatch<React.SetStateAction<number>>\n setMostRecentVersionIsAutosaved: React.Dispatch<React.SetStateAction<boolean>>\n setUnpublishedVersionCount: React.Dispatch<React.SetStateAction<number>>\n title: string\n unlockDocument: (docID: number | string, slug: string) => Promise<void>\n unpublishedVersionCount: number\n updateDocumentEditor: (docID: number | string, slug: string, user: ClientUser) => Promise<void>\n updateSavedDocumentData: (data: Data) => void\n versionCount: number\n} & DocumentInfoProps\n"],"mappings":"AA6CA","ignoreList":[]}
@@ -57,9 +57,9 @@ export const handleFormStateLocking = async ({
57
57
  lastEditedAt: lockedDocument.docs[0]?.updatedAt,
58
58
  user: lockedDocument.docs[0]?.user?.value
59
59
  };
60
- const lockOwnerId = typeof lockedDocument.docs[0]?.user?.value === 'object' ? lockedDocument.docs[0]?.user?.value?.id : lockedDocument.docs[0]?.user?.value;
60
+ const lockOwnerID = typeof lockedDocument.docs[0]?.user?.value === 'object' ? lockedDocument.docs[0]?.user?.value?.id : lockedDocument.docs[0]?.user?.value;
61
61
  // Should only update doc if the incoming / current user is also the owner of the locked doc
62
- if (updateLastEdited && req.user && lockOwnerId === req.user.id) {
62
+ if (updateLastEdited && req.user && lockOwnerID === req.user.id) {
63
63
  await req.payload.db.updateOne({
64
64
  id: lockedDocument.docs[0].id,
65
65
  collection: 'payload-locked-documents',
@@ -1 +1 @@
1
- {"version":3,"file":"handleFormStateLocking.js","names":["handleFormStateLocking","id","collectionSlug","globalSlug","req","updateLastEdited","result","lockedDocumentQuery","and","equals","lockDurationDefault","lockDocumentsProp","payload","config","collections","find","c","slug","lockDocuments","globals","g","lockDuration","duration","lockDurationInMilliseconds","now","Date","getTime","push","updatedAt","greater_than","toISOString","lockedDocument","collection","depth","limit","overrideAccess","pagination","where","docs","length","isLocked","lastEditedAt","user","value","lockOwnerId","db","updateOne","data","deleteExpiredLocksQuery","less_than","deleteMany","create","document","relationTo","undefined"],"sources":["../../src/utilities/handleFormStateLocking.ts"],"sourcesContent":["import type { PayloadRequest, TypedUser } from 'payload'\n\ntype Args = {\n collectionSlug?: string\n globalSlug?: string\n id?: number | string\n req: PayloadRequest\n updateLastEdited?: boolean\n}\n\ntype Result = {\n isLocked: boolean\n lastEditedAt: string\n user: TypedUser\n}\n\nexport const handleFormStateLocking = async ({\n id,\n collectionSlug,\n globalSlug,\n req,\n updateLastEdited,\n}: Args): Promise<Result> => {\n let result: Result\n\n if (id || globalSlug) {\n let lockedDocumentQuery\n\n if (collectionSlug) {\n lockedDocumentQuery = {\n and: [\n { 'document.relationTo': { equals: collectionSlug } },\n { 'document.value': { equals: id } },\n ],\n }\n } else if (globalSlug) {\n lockedDocumentQuery = {\n and: [{ globalSlug: { equals: globalSlug } }],\n }\n }\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDocumentsProp = collectionSlug\n ? req.payload.config.collections.find((c) => c.slug === collectionSlug)?.lockDocuments\n : req.payload.config.globals.find((g) => g.slug === globalSlug)?.lockDocuments\n\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n const now = new Date().getTime()\n\n if (lockedDocumentQuery) {\n // Query where the lock is newer than the current time minus the lock duration\n lockedDocumentQuery.and.push({\n updatedAt: {\n greater_than: new Date(now - lockDurationInMilliseconds).toISOString(),\n },\n })\n\n const lockedDocument = await req.payload.find({\n collection: 'payload-locked-documents',\n depth: 1,\n limit: 1,\n overrideAccess: false,\n pagination: false,\n req,\n where: lockedDocumentQuery,\n })\n\n if (lockedDocument.docs && lockedDocument.docs.length > 0) {\n result = {\n isLocked: true,\n lastEditedAt: lockedDocument.docs[0]?.updatedAt,\n user: lockedDocument.docs[0]?.user?.value,\n }\n\n const lockOwnerId =\n typeof lockedDocument.docs[0]?.user?.value === 'object'\n ? lockedDocument.docs[0]?.user?.value?.id\n : lockedDocument.docs[0]?.user?.value\n // Should only update doc if the incoming / current user is also the owner of the locked doc\n if (updateLastEdited && req.user && lockOwnerId === req.user.id) {\n await req.payload.db.updateOne({\n id: lockedDocument.docs[0].id,\n collection: 'payload-locked-documents',\n data: {},\n req,\n })\n }\n } else {\n // If NO ACTIVE lock document exists, first delete any expired locks and then create a fresh lock\n // Where updatedAt is older than the duration that is specified in the config\n let deleteExpiredLocksQuery\n\n if (collectionSlug) {\n deleteExpiredLocksQuery = {\n and: [\n { 'document.relationTo': { equals: collectionSlug } },\n {\n updatedAt: {\n less_than: new Date(now - lockDurationInMilliseconds).toISOString(),\n },\n },\n ],\n }\n } else if (globalSlug) {\n deleteExpiredLocksQuery = {\n and: [\n { globalSlug: { equals: globalSlug } },\n {\n updatedAt: {\n less_than: new Date(now - lockDurationInMilliseconds).toISOString(),\n },\n },\n ],\n }\n }\n\n await req.payload.db.deleteMany({\n collection: 'payload-locked-documents',\n req,\n where: deleteExpiredLocksQuery,\n })\n\n await req.payload.db.create({\n collection: 'payload-locked-documents',\n data: {\n document: collectionSlug\n ? {\n relationTo: collectionSlug,\n value: id,\n }\n : undefined,\n globalSlug: globalSlug ? globalSlug : undefined,\n user: {\n relationTo: req.user.collection,\n value: req.user.id,\n },\n },\n req,\n })\n\n result = {\n isLocked: true,\n lastEditedAt: new Date().toISOString(),\n user: req.user,\n }\n }\n }\n }\n\n return result\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"handleFormStateLocking.js","names":["handleFormStateLocking","id","collectionSlug","globalSlug","req","updateLastEdited","result","lockedDocumentQuery","and","equals","lockDurationDefault","lockDocumentsProp","payload","config","collections","find","c","slug","lockDocuments","globals","g","lockDuration","duration","lockDurationInMilliseconds","now","Date","getTime","push","updatedAt","greater_than","toISOString","lockedDocument","collection","depth","limit","overrideAccess","pagination","where","docs","length","isLocked","lastEditedAt","user","value","lockOwnerID","db","updateOne","data","deleteExpiredLocksQuery","less_than","deleteMany","create","document","relationTo","undefined"],"sources":["../../src/utilities/handleFormStateLocking.ts"],"sourcesContent":["import type { PayloadRequest, TypedUser } from 'payload'\n\ntype Args = {\n collectionSlug?: string\n globalSlug?: string\n id?: number | string\n req: PayloadRequest\n updateLastEdited?: boolean\n}\n\ntype Result = {\n isLocked: boolean\n lastEditedAt: string\n user: TypedUser\n}\n\nexport const handleFormStateLocking = async ({\n id,\n collectionSlug,\n globalSlug,\n req,\n updateLastEdited,\n}: Args): Promise<Result> => {\n let result: Result\n\n if (id || globalSlug) {\n let lockedDocumentQuery\n\n if (collectionSlug) {\n lockedDocumentQuery = {\n and: [\n { 'document.relationTo': { equals: collectionSlug } },\n { 'document.value': { equals: id } },\n ],\n }\n } else if (globalSlug) {\n lockedDocumentQuery = {\n and: [{ globalSlug: { equals: globalSlug } }],\n }\n }\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDocumentsProp = collectionSlug\n ? req.payload.config.collections.find((c) => c.slug === collectionSlug)?.lockDocuments\n : req.payload.config.globals.find((g) => g.slug === globalSlug)?.lockDocuments\n\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n const now = new Date().getTime()\n\n if (lockedDocumentQuery) {\n // Query where the lock is newer than the current time minus the lock duration\n lockedDocumentQuery.and.push({\n updatedAt: {\n greater_than: new Date(now - lockDurationInMilliseconds).toISOString(),\n },\n })\n\n const lockedDocument = await req.payload.find({\n collection: 'payload-locked-documents',\n depth: 1,\n limit: 1,\n overrideAccess: false,\n pagination: false,\n req,\n where: lockedDocumentQuery,\n })\n\n if (lockedDocument.docs && lockedDocument.docs.length > 0) {\n result = {\n isLocked: true,\n lastEditedAt: lockedDocument.docs[0]?.updatedAt,\n user: lockedDocument.docs[0]?.user?.value,\n }\n\n const lockOwnerID =\n typeof lockedDocument.docs[0]?.user?.value === 'object'\n ? lockedDocument.docs[0]?.user?.value?.id\n : lockedDocument.docs[0]?.user?.value\n // Should only update doc if the incoming / current user is also the owner of the locked doc\n if (updateLastEdited && req.user && lockOwnerID === req.user.id) {\n await req.payload.db.updateOne({\n id: lockedDocument.docs[0].id,\n collection: 'payload-locked-documents',\n data: {},\n req,\n })\n }\n } else {\n // If NO ACTIVE lock document exists, first delete any expired locks and then create a fresh lock\n // Where updatedAt is older than the duration that is specified in the config\n let deleteExpiredLocksQuery\n\n if (collectionSlug) {\n deleteExpiredLocksQuery = {\n and: [\n { 'document.relationTo': { equals: collectionSlug } },\n {\n updatedAt: {\n less_than: new Date(now - lockDurationInMilliseconds).toISOString(),\n },\n },\n ],\n }\n } else if (globalSlug) {\n deleteExpiredLocksQuery = {\n and: [\n { globalSlug: { equals: globalSlug } },\n {\n updatedAt: {\n less_than: new Date(now - lockDurationInMilliseconds).toISOString(),\n },\n },\n ],\n }\n }\n\n await req.payload.db.deleteMany({\n collection: 'payload-locked-documents',\n req,\n where: deleteExpiredLocksQuery,\n })\n\n await req.payload.db.create({\n collection: 'payload-locked-documents',\n data: {\n document: collectionSlug\n ? {\n relationTo: collectionSlug,\n value: id,\n }\n : undefined,\n globalSlug: globalSlug ? globalSlug : undefined,\n user: {\n relationTo: req.user.collection,\n value: req.user.id,\n },\n },\n req,\n })\n\n result = {\n isLocked: true,\n lastEditedAt: new Date().toISOString(),\n user: req.user,\n }\n }\n }\n }\n\n return result\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import type { ClientUser } from 'payload';
2
- export declare const handleTakeOver: (id: number | string, collectionSlug: string, globalSlug: string, user: ClientUser | number | string, isWithinDoc: boolean, updateDocumentEditor: (docId: number | string, slug: string, user: ClientUser | number | string) => Promise<void>, setCurrentEditor: (value: React.SetStateAction<ClientUser | number | string>) => void, documentLockStateRef: React.RefObject<{
2
+ export declare const handleTakeOver: (id: number | string, collectionSlug: string, globalSlug: string, user: ClientUser | number | string, isWithinDoc: boolean, updateDocumentEditor: (docID: number | string, slug: string, user: ClientUser | number | string) => Promise<void>, setCurrentEditor: (value: React.SetStateAction<ClientUser | number | string>) => void, documentLockStateRef: React.RefObject<{
3
3
  hasShownLockedModal: boolean;
4
4
  isLocked: boolean;
5
5
  user: ClientUser | number | string;
@@ -1 +1 @@
1
- {"version":3,"file":"handleTakeOver.js","names":["handleTakeOver","id","collectionSlug","globalSlug","user","isWithinDoc","updateDocumentEditor","setCurrentEditor","documentLockStateRef","isLockingEnabled","setIsReadOnlyForIncomingUser","current","hasShownLockedModal","isLocked","error","console"],"sources":["../../src/utilities/handleTakeOver.tsx"],"sourcesContent":["import type { ClientUser } from 'payload'\n\nexport const handleTakeOver = (\n id: number | string,\n collectionSlug: string,\n globalSlug: string,\n user: ClientUser | number | string,\n isWithinDoc: boolean,\n updateDocumentEditor: (\n docId: number | string,\n slug: string,\n user: ClientUser | number | string,\n ) => Promise<void>,\n setCurrentEditor: (value: React.SetStateAction<ClientUser | number | string>) => void,\n documentLockStateRef: React.RefObject<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser | number | string\n }>,\n isLockingEnabled: boolean,\n setIsReadOnlyForIncomingUser?: (value: React.SetStateAction<boolean>) => void,\n): void => {\n if (!isLockingEnabled) {\n return\n }\n\n try {\n // Call updateDocumentEditor to update the document's owner to the current user\n void updateDocumentEditor(id, collectionSlug ?? globalSlug, user)\n\n if (!isWithinDoc) {\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n // Update the locked state to reflect the current user as the owner\n documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal,\n isLocked: true,\n user,\n }\n setCurrentEditor(user)\n\n // If this is a takeover within the document, ensure the document is editable\n if (isWithinDoc && setIsReadOnlyForIncomingUser) {\n setIsReadOnlyForIncomingUser(false)\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error during document takeover:', error)\n }\n}\n"],"mappings":"AAEA,OAAO,MAAMA,cAAA,GAAiBA,CAC5BC,EAAA,EACAC,cAAA,EACAC,UAAA,EACAC,IAAA,EACAC,WAAA,EACAC,oBAAA,EAKAC,gBAAA,EACAC,oBAAA,EAKAC,gBAAA,EACAC,4BAAA;EAEA,IAAI,CAACD,gBAAA,EAAkB;IACrB;EACF;EAEA,IAAI;IACF;IACA,KAAKH,oBAAA,CAAqBL,EAAA,EAAIC,cAAA,IAAkBC,UAAA,EAAYC,IAAA;IAE5D,IAAI,CAACC,WAAA,EAAa;MAChBG,oBAAA,CAAqBG,OAAO,CAACC,mBAAmB,GAAG;IACrD;IAEA;IACAJ,oBAAA,CAAqBG,OAAO,GAAG;MAC7BC,mBAAA,EAAqBJ,oBAAA,CAAqBG,OAAO,EAAEC,mBAAA;MACnDC,QAAA,EAAU;MACVT;IACF;IACAG,gBAAA,CAAiBH,IAAA;IAEjB;IACA,IAAIC,WAAA,IAAeK,4BAAA,EAA8B;MAC/CA,4BAAA,CAA6B;IAC/B;EACF,EAAE,OAAOI,KAAA,EAAO;IACd;IACAC,OAAA,CAAQD,KAAK,CAAC,mCAAmCA,KAAA;EACnD;AACF","ignoreList":[]}
1
+ {"version":3,"file":"handleTakeOver.js","names":["handleTakeOver","id","collectionSlug","globalSlug","user","isWithinDoc","updateDocumentEditor","setCurrentEditor","documentLockStateRef","isLockingEnabled","setIsReadOnlyForIncomingUser","current","hasShownLockedModal","isLocked","error","console"],"sources":["../../src/utilities/handleTakeOver.tsx"],"sourcesContent":["import type { ClientUser } from 'payload'\n\nexport const handleTakeOver = (\n id: number | string,\n collectionSlug: string,\n globalSlug: string,\n user: ClientUser | number | string,\n isWithinDoc: boolean,\n updateDocumentEditor: (\n docID: number | string,\n slug: string,\n user: ClientUser | number | string,\n ) => Promise<void>,\n setCurrentEditor: (value: React.SetStateAction<ClientUser | number | string>) => void,\n documentLockStateRef: React.RefObject<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser | number | string\n }>,\n isLockingEnabled: boolean,\n setIsReadOnlyForIncomingUser?: (value: React.SetStateAction<boolean>) => void,\n): void => {\n if (!isLockingEnabled) {\n return\n }\n\n try {\n // Call updateDocumentEditor to update the document's owner to the current user\n void updateDocumentEditor(id, collectionSlug ?? globalSlug, user)\n\n if (!isWithinDoc) {\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n // Update the locked state to reflect the current user as the owner\n documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal,\n isLocked: true,\n user,\n }\n setCurrentEditor(user)\n\n // If this is a takeover within the document, ensure the document is editable\n if (isWithinDoc && setIsReadOnlyForIncomingUser) {\n setIsReadOnlyForIncomingUser(false)\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error during document takeover:', error)\n }\n}\n"],"mappings":"AAEA,OAAO,MAAMA,cAAA,GAAiBA,CAC5BC,EAAA,EACAC,cAAA,EACAC,UAAA,EACAC,IAAA,EACAC,WAAA,EACAC,oBAAA,EAKAC,gBAAA,EACAC,oBAAA,EAKAC,gBAAA,EACAC,4BAAA;EAEA,IAAI,CAACD,gBAAA,EAAkB;IACrB;EACF;EAEA,IAAI;IACF;IACA,KAAKH,oBAAA,CAAqBL,EAAA,EAAIC,cAAA,IAAkBC,UAAA,EAAYC,IAAA;IAE5D,IAAI,CAACC,WAAA,EAAa;MAChBG,oBAAA,CAAqBG,OAAO,CAACC,mBAAmB,GAAG;IACrD;IAEA;IACAJ,oBAAA,CAAqBG,OAAO,GAAG;MAC7BC,mBAAA,EAAqBJ,oBAAA,CAAqBG,OAAO,EAAEC,mBAAA;MACnDC,QAAA,EAAU;MACVT;IACF;IACAG,gBAAA,CAAiBH,IAAA;IAEjB;IACA,IAAIC,WAAA,IAAeK,4BAAA,EAA8B;MAC/CA,4BAAA,CAA6B;IAC/B;EACF,EAAE,OAAOI,KAAA,EAAO;IACd;IACAC,OAAA,CAAQD,KAAK,CAAC,mCAAmCA,KAAA;EACnD;AACF","ignoreList":[]}
@@ -172,11 +172,11 @@ export const DefaultEditView = ({
172
172
  });
173
173
  const handleDocumentLocking = useCallback(lockedState => {
174
174
  setDocumentIsLocked(true);
175
- const previousOwnerId = typeof documentLockStateRef.current?.user === 'object' ? documentLockStateRef.current?.user?.id : documentLockStateRef.current?.user;
175
+ const previousOwnerID = typeof documentLockStateRef.current?.user === 'object' ? documentLockStateRef.current?.user?.id : documentLockStateRef.current?.user;
176
176
  if (lockedState) {
177
177
  const lockedUserID = typeof lockedState.user === 'string' || typeof lockedState.user === 'number' ? lockedState.user : lockedState.user.id;
178
- if (!documentLockStateRef.current || lockedUserID !== previousOwnerId) {
179
- if (previousOwnerId === user.id && lockedUserID !== user.id) {
178
+ if (!documentLockStateRef.current || lockedUserID !== previousOwnerID) {
179
+ if (previousOwnerID === user.id && lockedUserID !== user.id) {
180
180
  setShowTakeOverModal(true);
181
181
  documentLockStateRef.current.hasShownLockedModal = true;
182
182
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useRouter","useSearchParams","React","Fragment","useCallback","useEffect","useRef","useState","DocumentControls","DocumentDrawerHeader","useDocumentDrawerContext","DocumentFields","DocumentLocked","DocumentTakeOver","LeaveWithoutSaving","Upload","Form","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useEditDepth","OperationProvider","useServerFunctions","useUploadEdits","abortAndIgnore","formatAdminURL","handleBackToDashboard","handleGoBack","handleTakeOver","Auth","SetDocumentStepNav","SetDocumentTitle","baseClass","DefaultEditView","Description","PreviewButton","PublishButton","SaveButton","SaveDraftButton","CustomUpload","id","action","AfterDocument","AfterFields","apiURL","BeforeFields","collectionSlug","currentEditor","disableActions","disableCreate","disableLeaveWithoutSaving","docPermissions","documentIsLocked","getDocPermissions","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","incrementVersionCount","initialState","isEditing","isInitializing","lastUpdateTime","redirectAfterDelete","redirectAfterDuplicate","savedDocumentData","setCurrentEditor","setDocumentIsLocked","unlockDocument","updateDocumentEditor","updateSavedDocumentData","clearDoc","drawerSlug","onDelete","onDuplicate","onSave","onSaveFromContext","isInDrawer","Boolean","refreshCookieAsync","user","config","admin","userSlug","routes","adminRoute","getEntityConfig","collectionConfig","globalConfig","depth","router","params","reportUpdate","resetUploadEdits","getFormState","onChangeAbortControllerRef","onSaveAbortControllerRef","locale","get","entitySlug","slug","operation","auth","undefined","upload","docConfig","lockDocumentsProp","lockDocuments","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","preventLeaveWithoutSaving","autosaveEnabled","versions","drafts","autosave","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","documentLockStateRef","hasShownLockedModal","isLocked","classes","push","schemaPathSegments","setSchemaPathSegments","disableLocalStrategy","validateBeforeSubmit","setValidateBeforeSubmit","handleDocumentLocking","lockedState","previousOwnerId","current","lockedUserID","json","updatedAt","result","toISOString","doc","redirectRoute","path","controller","AbortController","docPreferences","state","data","renderAllFields","returnLockStatus","schemaPath","join","signal","onChange","formState","prevFormState","currentTime","timeSinceLastUpdate","updateLastEdited","shouldUnlockDocument","some","window","location","pathname","includes","shouldShowDocumentLockedModal","_jsx","className","filter","_jsxs","disabled","disableValidationOnSubmit","method","onSuccess","isActive","onReadOnly","onTakeOver","pluralLabel","labels","plural","useAsTitle","fallback","toString","customComponents","onDrawerCreateNew","permissions","readOnlyForIncomingUser","email","loginWithUsername","readOnly","requirePassword","useAPIKey","username","verify","uploadConfig","fields"],"sources":["../../../src/views/Edit/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n ClientCollectionConfig,\n ClientGlobalConfig,\n ClientSideEditViewProps,\n ClientUser,\n FormState,\n} from 'payload'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\nimport type { LockedState } from '../../utilities/buildFormState.js'\n\nimport { DocumentControls } from '../../elements/DocumentControls/index.js'\nimport { DocumentDrawerHeader } from '../../elements/DocumentDrawer/DrawerHeader/index.js'\nimport { useDocumentDrawerContext } from '../../elements/DocumentDrawer/Provider.js'\nimport { DocumentFields } from '../../elements/DocumentFields/index.js'\nimport { DocumentLocked } from '../../elements/DocumentLocked/index.js'\nimport { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js'\nimport { Upload } from '../../elements/Upload/index.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { OperationProvider } from '../../providers/Operation/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { abortAndIgnore } from '../../utilities/abortAndIgnore.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { handleBackToDashboard } from '../../utilities/handleBackToDashboard.js'\nimport { handleGoBack } from '../../utilities/handleGoBack.js'\nimport { handleTakeOver } from '../../utilities/handleTakeOver.js'\nimport { Auth } from './Auth/index.js'\nimport { SetDocumentStepNav } from './SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from './SetDocumentTitle/index.js'\nimport './index.scss'\n\nconst baseClass = 'collection-edit'\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\nexport const DefaultEditView: React.FC<ClientSideEditViewProps> = ({\n Description,\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n Upload: CustomUpload,\n}) => {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeFields,\n collectionSlug,\n currentEditor,\n disableActions,\n disableCreate,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n getDocPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialState,\n isEditing,\n isInitializing,\n lastUpdateTime,\n redirectAfterDelete,\n redirectAfterDuplicate,\n savedDocumentData,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n updateDocumentEditor,\n updateSavedDocumentData,\n } = useDocumentInfo()\n\n const {\n clearDoc,\n drawerSlug,\n onDelete,\n onDuplicate,\n onSave: onSaveFromContext,\n } = useDocumentDrawerContext()\n\n const isInDrawer = Boolean(drawerSlug)\n\n const { refreshCookieAsync, user } = useAuth()\n\n const {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n const globalConfig = getEntityConfig({ globalSlug }) as ClientGlobalConfig\n\n const depth = useEditDepth()\n\n const router = useRouter()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n const { getFormState } = useServerFunctions()\n\n const onChangeAbortControllerRef = useRef<AbortController>(null)\n const onSaveAbortControllerRef = useRef<AbortController>(null)\n\n const locale = params.get('locale')\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const operation = collectionSlug && !id ? 'create' : 'update'\n\n const auth = collectionConfig ? collectionConfig.auth : undefined\n const upload = collectionConfig ? collectionConfig.upload : undefined\n\n const docConfig = collectionConfig || globalConfig\n\n const lockDocumentsProp = docConfig?.lockDocuments !== undefined ? docConfig?.lockDocuments : true\n const isLockingEnabled = lockDocumentsProp !== false\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n let preventLeaveWithoutSaving = true\n let autosaveEnabled = false\n\n if (collectionConfig) {\n autosaveEnabled = Boolean(\n collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave,\n )\n preventLeaveWithoutSaving = !autosaveEnabled\n } else if (globalConfig) {\n autosaveEnabled = Boolean(\n globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave,\n )\n preventLeaveWithoutSaving = !autosaveEnabled\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\n if (collectionSlug) {\n classes.push(`collection-edit--${collectionSlug}`)\n }\n\n const [schemaPathSegments, setSchemaPathSegments] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return [`_${entitySlug}`, 'auth']\n }\n\n return [entitySlug]\n })\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 handleDocumentLocking = useCallback(\n (lockedState: LockedState) => {\n setDocumentIsLocked(true)\n const previousOwnerId =\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id\n : documentLockStateRef.current?.user\n\n if (lockedState) {\n const lockedUserID =\n typeof lockedState.user === 'string' || typeof lockedState.user === 'number'\n ? lockedState.user\n : lockedState.user.id\n\n if (!documentLockStateRef.current || lockedUserID !== previousOwnerId) {\n if (previousOwnerId === user.id && lockedUserID !== user.id) {\n setShowTakeOverModal(true)\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user as ClientUser,\n }\n setCurrentEditor(lockedState.user as ClientUser)\n }\n }\n },\n [setCurrentEditor, setDocumentIsLocked, user?.id],\n )\n\n const onSave = useCallback(\n async (json): Promise<FormState> => {\n reportUpdate({\n id,\n entitySlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n incrementVersionCount()\n\n if (typeof updateSavedDocumentData === 'function') {\n void updateSavedDocumentData(json?.doc || {})\n }\n\n if (typeof onSaveFromContext === 'function') {\n void onSaveFromContext({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n\n if (!isEditing && depth < 2) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${json?.doc?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n router.push(redirectRoute)\n } else {\n resetUploadEdits()\n }\n\n await getDocPermissions(json)\n\n if ((id || globalSlug) && !autosaveEnabled) {\n abortAndIgnore(onSaveAbortControllerRef.current)\n const controller = new AbortController()\n onSaveAbortControllerRef.current = controller\n\n const docPreferences = await getDocPreferences()\n\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: json?.doc || json?.result,\n docPermissions,\n docPreferences,\n globalSlug,\n operation,\n renderAllFields: true,\n returnLockStatus: false,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n })\n\n // Unlock the document after save\n if (isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n return state\n }\n },\n [\n adminRoute,\n collectionSlug,\n depth,\n docPermissions,\n entitySlug,\n getDocPermissions,\n getDocPreferences,\n getFormState,\n globalSlug,\n id,\n incrementVersionCount,\n isEditing,\n isLockingEnabled,\n locale,\n onSaveFromContext,\n operation,\n refreshCookieAsync,\n reportUpdate,\n resetUploadEdits,\n router,\n schemaPathSegments,\n setDocumentIsLocked,\n updateSavedDocumentData,\n user,\n userSlug,\n autosaveEnabled,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const { lockedState, state } = await getFormState({\n id,\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n // Performance optimization: Setting it to false ensure that only fields that have explicit requireRender set in the form state will be rendered (e.g. new array rows).\n // We only want to render ALL fields on initial render, not in onChange.\n renderAllFields: false,\n returnLockStatus: isLockingEnabled,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n updateLastEdited,\n })\n\n if (isLockingEnabled) {\n handleDocumentLocking(lockedState)\n }\n\n return state\n },\n [\n id,\n collectionSlug,\n getDocPreferences,\n getFormState,\n globalSlug,\n handleDocumentLocking,\n isLockingEnabled,\n operation,\n schemaPathSegments,\n docPermissions,\n editSessionStartTime,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n if (isLockingEnabled && documentIsLocked && (id || globalSlug)) {\n // Only retain the lock if the user is still viewing the document\n const shouldUnlockDocument = !['preview', 'api', 'versions'].some((path) =>\n window.location.pathname.includes(path),\n )\n if (shouldUnlockDocument) {\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\n setShowTakeOverModal(false)\n }\n }, [\n collectionSlug,\n globalSlug,\n id,\n unlockDocument,\n user,\n setCurrentEditor,\n isLockingEnabled,\n documentIsLocked,\n setDocumentIsLocked,\n ])\n\n useEffect(() => {\n return () => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n abortAndIgnore(onSaveAbortControllerRef.current)\n }\n }, [])\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n (typeof currentEditor === 'object'\n ? currentEditor.id !== user?.id\n : currentEditor !== user?.id) &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n !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 {isInDrawer && <DocumentDrawerHeader drawerSlug={drawerSlug} />}\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 customComponents={{\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n }}\n data={savedDocumentData}\n disableActions={disableActions}\n disableCreate={disableCreate}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n onDelete={onDelete}\n onDrawerCreateNew={clearDoc}\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={savedDocumentData?.email}\n loginWithUsername={auth?.loginWithUsername}\n operation={operation}\n readOnly={!hasSavePermission}\n requirePassword={!id}\n setSchemaPathSegments={setSchemaPathSegments}\n setValidateBeforeSubmit={setValidateBeforeSubmit}\n useAPIKey={auth.useAPIKey}\n username={savedDocumentData?.username}\n verify={auth.verify}\n />\n )}\n {upload && (\n <React.Fragment>\n {CustomUpload || (\n <Upload\n collectionSlug={collectionConfig.slug}\n initialState={initialState}\n uploadConfig={upload}\n />\n )}\n </React.Fragment>\n )}\n </Fragment>\n )\n }\n Description={Description}\n docPermissions={docPermissions}\n fields={docConfig.fields}\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission}\n schemaPathSegments={schemaPathSegments}\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":["useRouter","useSearchParams","React","Fragment","useCallback","useEffect","useRef","useState","DocumentControls","DocumentDrawerHeader","useDocumentDrawerContext","DocumentFields","DocumentLocked","DocumentTakeOver","LeaveWithoutSaving","Upload","Form","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useEditDepth","OperationProvider","useServerFunctions","useUploadEdits","abortAndIgnore","formatAdminURL","handleBackToDashboard","handleGoBack","handleTakeOver","Auth","SetDocumentStepNav","SetDocumentTitle","baseClass","DefaultEditView","Description","PreviewButton","PublishButton","SaveButton","SaveDraftButton","CustomUpload","id","action","AfterDocument","AfterFields","apiURL","BeforeFields","collectionSlug","currentEditor","disableActions","disableCreate","disableLeaveWithoutSaving","docPermissions","documentIsLocked","getDocPermissions","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","incrementVersionCount","initialState","isEditing","isInitializing","lastUpdateTime","redirectAfterDelete","redirectAfterDuplicate","savedDocumentData","setCurrentEditor","setDocumentIsLocked","unlockDocument","updateDocumentEditor","updateSavedDocumentData","clearDoc","drawerSlug","onDelete","onDuplicate","onSave","onSaveFromContext","isInDrawer","Boolean","refreshCookieAsync","user","config","admin","userSlug","routes","adminRoute","getEntityConfig","collectionConfig","globalConfig","depth","router","params","reportUpdate","resetUploadEdits","getFormState","onChangeAbortControllerRef","onSaveAbortControllerRef","locale","get","entitySlug","slug","operation","auth","undefined","upload","docConfig","lockDocumentsProp","lockDocuments","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","preventLeaveWithoutSaving","autosaveEnabled","versions","drafts","autosave","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","documentLockStateRef","hasShownLockedModal","isLocked","classes","push","schemaPathSegments","setSchemaPathSegments","disableLocalStrategy","validateBeforeSubmit","setValidateBeforeSubmit","handleDocumentLocking","lockedState","previousOwnerID","current","lockedUserID","json","updatedAt","result","toISOString","doc","redirectRoute","path","controller","AbortController","docPreferences","state","data","renderAllFields","returnLockStatus","schemaPath","join","signal","onChange","formState","prevFormState","currentTime","timeSinceLastUpdate","updateLastEdited","shouldUnlockDocument","some","window","location","pathname","includes","shouldShowDocumentLockedModal","_jsx","className","filter","_jsxs","disabled","disableValidationOnSubmit","method","onSuccess","isActive","onReadOnly","onTakeOver","pluralLabel","labels","plural","useAsTitle","fallback","toString","customComponents","onDrawerCreateNew","permissions","readOnlyForIncomingUser","email","loginWithUsername","readOnly","requirePassword","useAPIKey","username","verify","uploadConfig","fields"],"sources":["../../../src/views/Edit/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n ClientCollectionConfig,\n ClientGlobalConfig,\n ClientSideEditViewProps,\n ClientUser,\n FormState,\n} from 'payload'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\nimport type { LockedState } from '../../utilities/buildFormState.js'\n\nimport { DocumentControls } from '../../elements/DocumentControls/index.js'\nimport { DocumentDrawerHeader } from '../../elements/DocumentDrawer/DrawerHeader/index.js'\nimport { useDocumentDrawerContext } from '../../elements/DocumentDrawer/Provider.js'\nimport { DocumentFields } from '../../elements/DocumentFields/index.js'\nimport { DocumentLocked } from '../../elements/DocumentLocked/index.js'\nimport { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js'\nimport { Upload } from '../../elements/Upload/index.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { OperationProvider } from '../../providers/Operation/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { abortAndIgnore } from '../../utilities/abortAndIgnore.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { handleBackToDashboard } from '../../utilities/handleBackToDashboard.js'\nimport { handleGoBack } from '../../utilities/handleGoBack.js'\nimport { handleTakeOver } from '../../utilities/handleTakeOver.js'\nimport { Auth } from './Auth/index.js'\nimport { SetDocumentStepNav } from './SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from './SetDocumentTitle/index.js'\nimport './index.scss'\n\nconst baseClass = 'collection-edit'\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\nexport const DefaultEditView: React.FC<ClientSideEditViewProps> = ({\n Description,\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n Upload: CustomUpload,\n}) => {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeFields,\n collectionSlug,\n currentEditor,\n disableActions,\n disableCreate,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n getDocPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialState,\n isEditing,\n isInitializing,\n lastUpdateTime,\n redirectAfterDelete,\n redirectAfterDuplicate,\n savedDocumentData,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n updateDocumentEditor,\n updateSavedDocumentData,\n } = useDocumentInfo()\n\n const {\n clearDoc,\n drawerSlug,\n onDelete,\n onDuplicate,\n onSave: onSaveFromContext,\n } = useDocumentDrawerContext()\n\n const isInDrawer = Boolean(drawerSlug)\n\n const { refreshCookieAsync, user } = useAuth()\n\n const {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n const globalConfig = getEntityConfig({ globalSlug }) as ClientGlobalConfig\n\n const depth = useEditDepth()\n\n const router = useRouter()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n const { getFormState } = useServerFunctions()\n\n const onChangeAbortControllerRef = useRef<AbortController>(null)\n const onSaveAbortControllerRef = useRef<AbortController>(null)\n\n const locale = params.get('locale')\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const operation = collectionSlug && !id ? 'create' : 'update'\n\n const auth = collectionConfig ? collectionConfig.auth : undefined\n const upload = collectionConfig ? collectionConfig.upload : undefined\n\n const docConfig = collectionConfig || globalConfig\n\n const lockDocumentsProp = docConfig?.lockDocuments !== undefined ? docConfig?.lockDocuments : true\n const isLockingEnabled = lockDocumentsProp !== false\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n let preventLeaveWithoutSaving = true\n let autosaveEnabled = false\n\n if (collectionConfig) {\n autosaveEnabled = Boolean(\n collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave,\n )\n preventLeaveWithoutSaving = !autosaveEnabled\n } else if (globalConfig) {\n autosaveEnabled = Boolean(\n globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave,\n )\n preventLeaveWithoutSaving = !autosaveEnabled\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\n if (collectionSlug) {\n classes.push(`collection-edit--${collectionSlug}`)\n }\n\n const [schemaPathSegments, setSchemaPathSegments] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return [`_${entitySlug}`, 'auth']\n }\n\n return [entitySlug]\n })\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 handleDocumentLocking = useCallback(\n (lockedState: LockedState) => {\n setDocumentIsLocked(true)\n const previousOwnerID =\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id\n : documentLockStateRef.current?.user\n\n if (lockedState) {\n const lockedUserID =\n typeof lockedState.user === 'string' || typeof lockedState.user === 'number'\n ? lockedState.user\n : lockedState.user.id\n\n if (!documentLockStateRef.current || lockedUserID !== previousOwnerID) {\n if (previousOwnerID === user.id && lockedUserID !== user.id) {\n setShowTakeOverModal(true)\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user as ClientUser,\n }\n setCurrentEditor(lockedState.user as ClientUser)\n }\n }\n },\n [setCurrentEditor, setDocumentIsLocked, user?.id],\n )\n\n const onSave = useCallback(\n async (json): Promise<FormState> => {\n reportUpdate({\n id,\n entitySlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n incrementVersionCount()\n\n if (typeof updateSavedDocumentData === 'function') {\n void updateSavedDocumentData(json?.doc || {})\n }\n\n if (typeof onSaveFromContext === 'function') {\n void onSaveFromContext({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n\n if (!isEditing && depth < 2) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${json?.doc?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n router.push(redirectRoute)\n } else {\n resetUploadEdits()\n }\n\n await getDocPermissions(json)\n\n if ((id || globalSlug) && !autosaveEnabled) {\n abortAndIgnore(onSaveAbortControllerRef.current)\n const controller = new AbortController()\n onSaveAbortControllerRef.current = controller\n\n const docPreferences = await getDocPreferences()\n\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: json?.doc || json?.result,\n docPermissions,\n docPreferences,\n globalSlug,\n operation,\n renderAllFields: true,\n returnLockStatus: false,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n })\n\n // Unlock the document after save\n if (isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n return state\n }\n },\n [\n adminRoute,\n collectionSlug,\n depth,\n docPermissions,\n entitySlug,\n getDocPermissions,\n getDocPreferences,\n getFormState,\n globalSlug,\n id,\n incrementVersionCount,\n isEditing,\n isLockingEnabled,\n locale,\n onSaveFromContext,\n operation,\n refreshCookieAsync,\n reportUpdate,\n resetUploadEdits,\n router,\n schemaPathSegments,\n setDocumentIsLocked,\n updateSavedDocumentData,\n user,\n userSlug,\n autosaveEnabled,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const { lockedState, state } = await getFormState({\n id,\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n // Performance optimization: Setting it to false ensure that only fields that have explicit requireRender set in the form state will be rendered (e.g. new array rows).\n // We only want to render ALL fields on initial render, not in onChange.\n renderAllFields: false,\n returnLockStatus: isLockingEnabled,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n updateLastEdited,\n })\n\n if (isLockingEnabled) {\n handleDocumentLocking(lockedState)\n }\n\n return state\n },\n [\n id,\n collectionSlug,\n getDocPreferences,\n getFormState,\n globalSlug,\n handleDocumentLocking,\n isLockingEnabled,\n operation,\n schemaPathSegments,\n docPermissions,\n editSessionStartTime,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n if (isLockingEnabled && documentIsLocked && (id || globalSlug)) {\n // Only retain the lock if the user is still viewing the document\n const shouldUnlockDocument = !['preview', 'api', 'versions'].some((path) =>\n window.location.pathname.includes(path),\n )\n if (shouldUnlockDocument) {\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\n setShowTakeOverModal(false)\n }\n }, [\n collectionSlug,\n globalSlug,\n id,\n unlockDocument,\n user,\n setCurrentEditor,\n isLockingEnabled,\n documentIsLocked,\n setDocumentIsLocked,\n ])\n\n useEffect(() => {\n return () => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n abortAndIgnore(onSaveAbortControllerRef.current)\n }\n }, [])\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n (typeof currentEditor === 'object'\n ? currentEditor.id !== user?.id\n : currentEditor !== user?.id) &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n !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 {isInDrawer && <DocumentDrawerHeader drawerSlug={drawerSlug} />}\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 customComponents={{\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n }}\n data={savedDocumentData}\n disableActions={disableActions}\n disableCreate={disableCreate}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n onDelete={onDelete}\n onDrawerCreateNew={clearDoc}\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={savedDocumentData?.email}\n loginWithUsername={auth?.loginWithUsername}\n operation={operation}\n readOnly={!hasSavePermission}\n requirePassword={!id}\n setSchemaPathSegments={setSchemaPathSegments}\n setValidateBeforeSubmit={setValidateBeforeSubmit}\n useAPIKey={auth.useAPIKey}\n username={savedDocumentData?.username}\n verify={auth.verify}\n />\n )}\n {upload && (\n <React.Fragment>\n {CustomUpload || (\n <Upload\n collectionSlug={collectionConfig.slug}\n initialState={initialState}\n uploadConfig={upload}\n />\n )}\n </React.Fragment>\n )}\n </Fragment>\n )\n }\n Description={Description}\n docPermissions={docPermissions}\n fields={docConfig.fields}\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission}\n schemaPathSegments={schemaPathSegments}\n />\n {AfterDocument}\n </Form>\n </OperationProvider>\n </main>\n )\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/ui",
3
- "version": "3.9.0",
3
+ "version": "3.10.0",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -132,7 +132,7 @@
132
132
  "ts-essentials": "10.0.3",
133
133
  "use-context-selector": "2.0.0",
134
134
  "uuid": "10.0.0",
135
- "@payloadcms/translations": "3.9.0"
135
+ "@payloadcms/translations": "3.10.0"
136
136
  },
137
137
  "devDependencies": {
138
138
  "@babel/cli": "7.25.9",
@@ -149,14 +149,14 @@
149
149
  "esbuild": "0.24.0",
150
150
  "esbuild-sass-plugin": "3.3.1",
151
151
  "eslint-plugin-react-compiler": "19.0.0-beta-df7b47d-20241124",
152
- "@payloadcms/eslint-config": "3.0.0",
153
- "payload": "3.9.0"
152
+ "payload": "3.10.0",
153
+ "@payloadcms/eslint-config": "3.9.0"
154
154
  },
155
155
  "peerDependencies": {
156
156
  "next": "^15.0.0",
157
157
  "react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
158
158
  "react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
159
- "payload": "3.9.0"
159
+ "payload": "3.10.0"
160
160
  },
161
161
  "engines": {
162
162
  "node": "^18.20.2 || >=20.9.0"