@payloadcms/next 3.1.1 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/layouts/Root/checkDependencies.d.ts +1 -1
- package/dist/layouts/Root/checkDependencies.d.ts.map +1 -1
- package/dist/layouts/Root/checkDependencies.js +2 -2
- package/dist/layouts/Root/checkDependencies.js.map +1 -1
- package/dist/layouts/Root/index.d.ts.map +1 -1
- package/dist/layouts/Root/index.js +3 -4
- package/dist/layouts/Root/index.js.map +1 -1
- package/dist/prod/styles.css +1 -1
- package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
- package/dist/utilities/handleServerFunctions.js +2 -0
- package/dist/utilities/handleServerFunctions.js.map +1 -1
- package/dist/views/Account/index.d.ts.map +1 -1
- package/dist/views/Account/index.js +1 -0
- package/dist/views/Account/index.js.map +1 -1
- package/dist/views/Document/getVersions.d.ts +8 -1
- package/dist/views/Document/getVersions.d.ts.map +1 -1
- package/dist/views/Document/getVersions.js +57 -33
- package/dist/views/Document/getVersions.js.map +1 -1
- package/dist/views/Document/handleServerFunction.d.ts +2 -7
- package/dist/views/Document/handleServerFunction.d.ts.map +1 -1
- package/dist/views/Document/handleServerFunction.js +5 -22
- package/dist/views/Document/handleServerFunction.js.map +1 -1
- package/dist/views/Document/index.d.ts +3 -1
- package/dist/views/Document/index.d.ts.map +1 -1
- package/dist/views/Document/index.js +3 -1
- package/dist/views/Document/index.js.map +1 -1
- package/dist/views/List/handleServerFunction.d.ts +2 -7
- package/dist/views/List/handleServerFunction.d.ts.map +1 -1
- package/dist/views/List/handleServerFunction.js +5 -22
- package/dist/views/List/handleServerFunction.js.map +1 -1
- package/dist/views/List/index.d.ts +1 -0
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +2 -1
- package/dist/views/List/index.js.map +1 -1
- package/dist/views/Login/LoginForm/index.d.ts.map +1 -1
- package/dist/views/Login/LoginForm/index.js +39 -33
- package/dist/views/Login/LoginForm/index.js.map +1 -1
- package/dist/views/Root/index.d.ts.map +1 -1
- package/dist/views/Root/index.js +2 -2
- package/dist/views/Root/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +3 -3
- package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts +3 -3
- package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/types.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/index.js +3 -2
- package/dist/views/Version/RenderFieldsToDiff/index.js.map +1 -1
- package/package.json +6 -6
- package/dist/utilities/getClientConfig.d.ts +0 -8
- package/dist/utilities/getClientConfig.d.ts.map +0 -1
- package/dist/utilities/getClientConfig.js +0 -16
- package/dist/utilities/getClientConfig.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleServerFunctions.d.ts","sourceRoot":"","sources":["../../src/utilities/handleServerFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,qBAAqB,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"handleServerFunctions.d.ts","sourceRoot":"","sources":["../../src/utilities/handleServerFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAWpE,eAAO,MAAM,qBAAqB,EAAE,qBA2BnC,CAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { copyDataFromLocaleHandler } from '@payloadcms/ui/rsc';
|
|
1
2
|
import { buildFormStateHandler } from '@payloadcms/ui/utilities/buildFormState';
|
|
2
3
|
import { buildTableStateHandler } from '@payloadcms/ui/utilities/buildTableState';
|
|
3
4
|
import { renderDocumentHandler } from '../views/Document/handleServerFunction.js';
|
|
@@ -20,6 +21,7 @@ export const handleServerFunctions = async args => {
|
|
|
20
21
|
req
|
|
21
22
|
};
|
|
22
23
|
const serverFunctions = {
|
|
24
|
+
'copy-data-from-locale': copyDataFromLocaleHandler,
|
|
23
25
|
'form-state': buildFormStateHandler,
|
|
24
26
|
'render-document': renderDocumentHandler,
|
|
25
27
|
'render-document-slots': renderDocumentSlotsHandler,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleServerFunctions.js","names":["buildFormStateHandler","buildTableStateHandler","renderDocumentHandler","renderDocumentSlotsHandler","renderListHandler","initReq","handleServerFunctions","args","name","fnKey","fnArgs","config","configPromise","importMap","req","augmentedArgs","serverFunctions","fn","Error"],"sources":["../../src/utilities/handleServerFunctions.ts"],"sourcesContent":["import type { ServerFunction, ServerFunctionHandler } from 'payload'\n\nimport { buildFormStateHandler } from '@payloadcms/ui/utilities/buildFormState'\nimport { buildTableStateHandler } from '@payloadcms/ui/utilities/buildTableState'\n\nimport { renderDocumentHandler } from '../views/Document/handleServerFunction.js'\nimport { renderDocumentSlotsHandler } from '../views/Document/renderDocumentSlots.js'\nimport { renderListHandler } from '../views/List/handleServerFunction.js'\nimport { initReq } from './initReq.js'\n\nexport const handleServerFunctions: ServerFunctionHandler = async (args) => {\n const { name: fnKey, args: fnArgs, config: configPromise, importMap } = args\n\n const { req } = await initReq(configPromise)\n\n const augmentedArgs: Parameters<ServerFunction>[0] = {\n ...fnArgs,\n importMap,\n req,\n }\n\n const serverFunctions = {\n 'form-state': buildFormStateHandler as any as ServerFunction,\n 'render-document': renderDocumentHandler as any as ServerFunction,\n 'render-document-slots': renderDocumentSlotsHandler as any as ServerFunction,\n 'render-list': renderListHandler as any as ServerFunction,\n 'table-state': buildTableStateHandler as any as ServerFunction,\n }\n\n const fn = serverFunctions[fnKey]\n\n if (!fn) {\n throw new Error(`Unknown Server Function: ${fnKey}`)\n }\n\n return fn(augmentedArgs)\n}\n"],"mappings":"AAEA,SAASA,qBAAqB,QAAQ;AACtC,SAASC,sBAAsB,QAAQ;AAEvC,SAASC,qBAAqB,QAAQ;AACtC,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,iBAAiB,QAAQ;AAClC,SAASC,OAAO,QAAQ;AAExB,OAAO,MAAMC,qBAAA,GAA+C,MAAOC,IAAA;EACjE,MAAM;IAAEC,IAAA,EAAMC,KAAK;IAAEF,IAAA,EAAMG,MAAM;IAAEC,MAAA,EAAQC,aAAa;IAAEC;EAAS,CAAE,GAAGN,IAAA;EAExE,MAAM;IAAEO;EAAG,CAAE,GAAG,MAAMT,OAAA,CAAQO,aAAA;EAE9B,MAAMG,aAAA,GAA+C;IACnD,GAAGL,MAAM;IACTG,SAAA;IACAC;EACF;EAEA,MAAME,eAAA,GAAkB;IACtB,
|
|
1
|
+
{"version":3,"file":"handleServerFunctions.js","names":["copyDataFromLocaleHandler","buildFormStateHandler","buildTableStateHandler","renderDocumentHandler","renderDocumentSlotsHandler","renderListHandler","initReq","handleServerFunctions","args","name","fnKey","fnArgs","config","configPromise","importMap","req","augmentedArgs","serverFunctions","fn","Error"],"sources":["../../src/utilities/handleServerFunctions.ts"],"sourcesContent":["import type { ServerFunction, ServerFunctionHandler } from 'payload'\n\nimport { copyDataFromLocaleHandler } from '@payloadcms/ui/rsc'\nimport { buildFormStateHandler } from '@payloadcms/ui/utilities/buildFormState'\nimport { buildTableStateHandler } from '@payloadcms/ui/utilities/buildTableState'\n\nimport { renderDocumentHandler } from '../views/Document/handleServerFunction.js'\nimport { renderDocumentSlotsHandler } from '../views/Document/renderDocumentSlots.js'\nimport { renderListHandler } from '../views/List/handleServerFunction.js'\nimport { initReq } from './initReq.js'\n\nexport const handleServerFunctions: ServerFunctionHandler = async (args) => {\n const { name: fnKey, args: fnArgs, config: configPromise, importMap } = args\n\n const { req } = await initReq(configPromise)\n\n const augmentedArgs: Parameters<ServerFunction>[0] = {\n ...fnArgs,\n importMap,\n req,\n }\n\n const serverFunctions = {\n 'copy-data-from-locale': copyDataFromLocaleHandler as any as ServerFunction,\n 'form-state': buildFormStateHandler as any as ServerFunction,\n 'render-document': renderDocumentHandler as any as ServerFunction,\n 'render-document-slots': renderDocumentSlotsHandler as any as ServerFunction,\n 'render-list': renderListHandler as any as ServerFunction,\n 'table-state': buildTableStateHandler as any as ServerFunction,\n }\n\n const fn = serverFunctions[fnKey]\n\n if (!fn) {\n throw new Error(`Unknown Server Function: ${fnKey}`)\n }\n\n return fn(augmentedArgs)\n}\n"],"mappings":"AAEA,SAASA,yBAAyB,QAAQ;AAC1C,SAASC,qBAAqB,QAAQ;AACtC,SAASC,sBAAsB,QAAQ;AAEvC,SAASC,qBAAqB,QAAQ;AACtC,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,iBAAiB,QAAQ;AAClC,SAASC,OAAO,QAAQ;AAExB,OAAO,MAAMC,qBAAA,GAA+C,MAAOC,IAAA;EACjE,MAAM;IAAEC,IAAA,EAAMC,KAAK;IAAEF,IAAA,EAAMG,MAAM;IAAEC,MAAA,EAAQC,aAAa;IAAEC;EAAS,CAAE,GAAGN,IAAA;EAExE,MAAM;IAAEO;EAAG,CAAE,GAAG,MAAMT,OAAA,CAAQO,aAAA;EAE9B,MAAMG,aAAA,GAA+C;IACnD,GAAGL,MAAM;IACTG,SAAA;IACAC;EACF;EAEA,MAAME,eAAA,GAAkB;IACtB,yBAAyBjB,yBAAA;IACzB,cAAcC,qBAAA;IACd,mBAAmBE,qBAAA;IACnB,yBAAyBC,0BAAA;IACzB,eAAeC,iBAAA;IACf,eAAeH;EACjB;EAEA,MAAMgB,EAAA,GAAKD,eAAe,CAACP,KAAA,CAAM;EAEjC,IAAI,CAACQ,EAAA,EAAI;IACP,MAAM,IAAIC,KAAA,CAAM,4BAA4BT,KAAA,EAAO;EACrD;EAEA,OAAOQ,EAAA,CAAGF,aAAA;AACZ","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Account/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAM7C,OAAO,KAAK,MAAM,OAAO,CAAA;AAYzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AAEnD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Account/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAM7C,OAAO,KAAK,MAAM,OAAO,CAAA;AAYzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AAEnD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA+I5C,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["DocumentInfoProvider","EditDepthProvider","HydrateAuthProvider","RenderServerComponent","buildFormState","notFound","React","DocumentHeader","getDocPreferences","getDocumentData","getDocumentPermissions","getIsLocked","getVersions","EditView","AccountClient","Settings","generateAccountMetadata","Account","initPageResult","params","searchParams","languageOptions","locale","permissions","req","i18n","payload","config","user","admin","theme","userSlug","routes","api","serverURL","collectionConfig","collections","find","collection","slug","id","data","collectionSlug","Error","docPreferences","docPermissions","hasPublishPermission","hasSavePermission","state","formState","code","operation","renderAllFields","schemaPath","currentEditor","isLocked","lastUpdateTime","isEditing","hasPublishedDoc","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","_jsx","AfterFields","apiURL","initialData","initialState","_jsxs","hideTabs","Component","components","views","account","Fallback","importMap","serverProps","routeSegments"],"sources":["../../../src/views/Account/index.tsx"],"sourcesContent":["import type { AdminViewProps } from 'payload'\n\nimport { DocumentInfoProvider, EditDepthProvider, HydrateAuthProvider } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { buildFormState } from '@payloadcms/ui/utilities/buildFormState'\nimport { notFound } from 'next/navigation.js'\nimport React from 'react'\n\nimport { DocumentHeader } from '../../elements/DocumentHeader/index.js'\nimport { getDocPreferences } from '../Document/getDocPreferences.js'\nimport { getDocumentData } from '../Document/getDocumentData.js'\nimport { getDocumentPermissions } from '../Document/getDocumentPermissions.js'\nimport { getIsLocked } from '../Document/getIsLocked.js'\nimport { getVersions } from '../Document/getVersions.js'\nimport { EditView } from '../Edit/index.js'\nimport { AccountClient } from './index.client.js'\nimport { Settings } from './Settings/index.js'\n\nexport { generateAccountMetadata } from './meta.js'\n\nexport const Account: React.FC<AdminViewProps> = async ({\n initPageResult,\n params,\n searchParams,\n}) => {\n const {\n languageOptions,\n locale,\n permissions,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n } = initPageResult\n\n const {\n admin: { theme, user: userSlug },\n routes: { api },\n serverURL,\n } = config\n\n const collectionConfig = config.collections.find((collection) => collection.slug === userSlug)\n\n if (collectionConfig && user?.id) {\n // Fetch the data required for the view\n const data = await getDocumentData({\n id: user.id,\n collectionSlug: collectionConfig.slug,\n locale,\n payload,\n user,\n })\n\n if (!data) {\n throw new Error('not-found')\n }\n\n // Get document preferences\n const docPreferences = await getDocPreferences({\n id: user.id,\n collectionSlug: collectionConfig.slug,\n payload,\n user,\n })\n\n // Get permissions\n const { docPermissions, hasPublishPermission, hasSavePermission } =\n await getDocumentPermissions({\n id: user.id,\n collectionConfig,\n data,\n req,\n })\n\n // Build initial form state from data\n const { state: formState } = await buildFormState({\n id: user.id,\n collectionSlug: collectionConfig.slug,\n data,\n docPermissions,\n docPreferences,\n locale: locale?.code,\n operation: 'update',\n renderAllFields: true,\n req,\n schemaPath: collectionConfig.slug,\n })\n\n // Fetch document lock state\n const { currentEditor, isLocked, lastUpdateTime } = await getIsLocked({\n id: user.id,\n collectionConfig,\n isEditing: true,\n req,\n })\n\n // Get all versions required for UI\n const { hasPublishedDoc, mostRecentVersionIsAutosaved, unpublishedVersionCount, versionCount } =\n await getVersions({\n id: user.id,\n collectionConfig,\n docPermissions,\n locale: locale?.code,\n payload,\n user,\n })\n\n return (\n <DocumentInfoProvider\n AfterFields={<Settings i18n={i18n} languageOptions={languageOptions} theme={theme} />}\n apiURL={`${serverURL}${api}/${userSlug}${user?.id ? `/${user.id}` : ''}`}\n collectionSlug={userSlug}\n currentEditor={currentEditor}\n docPermissions={docPermissions}\n hasPublishedDoc={hasPublishedDoc}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={user?.id}\n initialData={data}\n initialState={formState}\n isEditing\n isLocked={isLocked}\n lastUpdateTime={lastUpdateTime}\n mostRecentVersionIsAutosaved={mostRecentVersionIsAutosaved}\n unpublishedVersionCount={unpublishedVersionCount}\n versionCount={versionCount}\n >\n <EditDepthProvider>\n <DocumentHeader\n collectionConfig={collectionConfig}\n hideTabs\n i18n={i18n}\n payload={payload}\n permissions={permissions}\n />\n <HydrateAuthProvider permissions={permissions} />\n {RenderServerComponent({\n Component: config.admin?.components?.views?.account?.Component,\n Fallback: EditView,\n importMap: payload.importMap,\n serverProps: {\n i18n,\n initPageResult,\n locale,\n params,\n payload,\n permissions,\n routeSegments: [],\n searchParams,\n user,\n },\n })}\n <AccountClient />\n </EditDepthProvider>\n </DocumentInfoProvider>\n )\n }\n\n return notFound()\n}\n"],"mappings":";AAEA,SAASA,oBAAoB,EAAEC,iBAAiB,EAAEC,mBAAmB,QAAQ;AAC7E,SAASC,qBAAqB,QAAQ;AACtC,SAASC,cAAc,QAAQ;AAC/B,SAASC,QAAQ,QAAQ;AACzB,OAAOC,KAAA,MAAW;AAElB,SAASC,cAAc,QAAQ;AAC/B,SAASC,iBAAiB,QAAQ;AAClC,SAASC,eAAe,QAAQ;AAChC,SAASC,sBAAsB,QAAQ;AACvC,SAASC,WAAW,QAAQ;AAC5B,SAASC,WAAW,QAAQ;AAC5B,SAASC,QAAQ,QAAQ;AACzB,SAASC,aAAa,QAAQ;AAC9B,SAASC,QAAQ,QAAQ;AAEzB,SAASC,uBAAuB,QAAQ;AAExC,OAAO,MAAMC,OAAA,GAAoC,MAAAA,CAAO;EACtDC,cAAc;EACdC,MAAM;EACNC;AAAY,CACb;EACC,MAAM;IACJC,eAAe;IACfC,MAAM;IACNC,WAAW;IACXC,GAAG;IACHA,GAAA,EAAK;MACHC,IAAI;MACJC,OAAO;MACPA,OAAA,EAAS;QAAEC;MAAM,CAAE;MACnBC;IAAI;EACL,CACF,GAAGV,cAAA;EAEJ,MAAM;IACJW,KAAA,EAAO;MAAEC,KAAK;MAAEF,IAAA,EAAMG;IAAQ,CAAE;IAChCC,MAAA,EAAQ;MAAEC;IAAG,CAAE;IACfC;EAAS,CACV,GAAGP,MAAA;EAEJ,MAAMQ,gBAAA,GAAmBR,MAAA,CAAOS,WAAW,CAACC,IAAI,CAAEC,UAAA,IAAeA,UAAA,CAAWC,IAAI,KAAKR,QAAA;EAErF,IAAII,gBAAA,IAAoBP,IAAA,EAAMY,EAAA,EAAI;IAChC;IACA,MAAMC,IAAA,GAAO,MAAMhC,eAAA,CAAgB;MACjC+B,EAAA,EAAIZ,IAAA,CAAKY,EAAE;MACXE,cAAA,EAAgBP,gBAAA,CAAiBI,IAAI;MACrCjB,MAAA;MACAI,OAAA;MACAE;IACF;IAEA,IAAI,CAACa,IAAA,EAAM;MACT,MAAM,IAAIE,KAAA,CAAM;IAClB;IAEA;IACA,MAAMC,cAAA,GAAiB,MAAMpC,iBAAA,CAAkB;MAC7CgC,EAAA,EAAIZ,IAAA,CAAKY,EAAE;MACXE,cAAA,EAAgBP,gBAAA,CAAiBI,IAAI;MACrCb,OAAA;MACAE;IACF;IAEA;IACA,MAAM;MAAEiB,cAAc;MAAEC,oBAAoB;MAAEC;IAAiB,CAAE,GAC/D,MAAMrC,sBAAA,CAAuB;MAC3B8B,EAAA,EAAIZ,IAAA,CAAKY,EAAE;MACXL,gBAAA;MACAM,IAAA;MACAjB;IACF;IAEF;IACA,MAAM;MAAEwB,KAAA,EAAOC;IAAS,CAAE,GAAG,MAAM7C,cAAA,CAAe;MAChDoC,EAAA,EAAIZ,IAAA,CAAKY,EAAE;MACXE,cAAA,EAAgBP,gBAAA,CAAiBI,IAAI;MACrCE,IAAA;MACAI,cAAA;MACAD,cAAA;MACAtB,MAAA,EAAQA,MAAA,EAAQ4B,IAAA;MAChBC,SAAA,EAAW;MACXC,eAAA,EAAiB;MACjB5B,GAAA;MACA6B,UAAA,EAAYlB,gBAAA,CAAiBI;IAC/B;IAEA;IACA,MAAM;MAAEe,aAAa;MAAEC,QAAQ;MAAEC;IAAc,CAAE,GAAG,MAAM7C,WAAA,CAAY;MACpE6B,EAAA,EAAIZ,IAAA,CAAKY,EAAE;MACXL,gBAAA;MACAsB,SAAA,EAAW;MACXjC;IACF;IAEA;IACA,MAAM;MAAEkC,eAAe;MAAEC,4BAA4B;MAAEC,uBAAuB;MAAEC;IAAY,CAAE,GAC5F,MAAMjD,WAAA,CAAY;MAChB4B,EAAA,EAAIZ,IAAA,CAAKY,EAAE;MACXL,gBAAA;
|
|
1
|
+
{"version":3,"file":"index.js","names":["DocumentInfoProvider","EditDepthProvider","HydrateAuthProvider","RenderServerComponent","buildFormState","notFound","React","DocumentHeader","getDocPreferences","getDocumentData","getDocumentPermissions","getIsLocked","getVersions","EditView","AccountClient","Settings","generateAccountMetadata","Account","initPageResult","params","searchParams","languageOptions","locale","permissions","req","i18n","payload","config","user","admin","theme","userSlug","routes","api","serverURL","collectionConfig","collections","find","collection","slug","id","data","collectionSlug","Error","docPreferences","docPermissions","hasPublishPermission","hasSavePermission","state","formState","code","operation","renderAllFields","schemaPath","currentEditor","isLocked","lastUpdateTime","isEditing","hasPublishedDoc","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","doc","_jsx","AfterFields","apiURL","initialData","initialState","_jsxs","hideTabs","Component","components","views","account","Fallback","importMap","serverProps","routeSegments"],"sources":["../../../src/views/Account/index.tsx"],"sourcesContent":["import type { AdminViewProps } from 'payload'\n\nimport { DocumentInfoProvider, EditDepthProvider, HydrateAuthProvider } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { buildFormState } from '@payloadcms/ui/utilities/buildFormState'\nimport { notFound } from 'next/navigation.js'\nimport React from 'react'\n\nimport { DocumentHeader } from '../../elements/DocumentHeader/index.js'\nimport { getDocPreferences } from '../Document/getDocPreferences.js'\nimport { getDocumentData } from '../Document/getDocumentData.js'\nimport { getDocumentPermissions } from '../Document/getDocumentPermissions.js'\nimport { getIsLocked } from '../Document/getIsLocked.js'\nimport { getVersions } from '../Document/getVersions.js'\nimport { EditView } from '../Edit/index.js'\nimport { AccountClient } from './index.client.js'\nimport { Settings } from './Settings/index.js'\n\nexport { generateAccountMetadata } from './meta.js'\n\nexport const Account: React.FC<AdminViewProps> = async ({\n initPageResult,\n params,\n searchParams,\n}) => {\n const {\n languageOptions,\n locale,\n permissions,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n } = initPageResult\n\n const {\n admin: { theme, user: userSlug },\n routes: { api },\n serverURL,\n } = config\n\n const collectionConfig = config.collections.find((collection) => collection.slug === userSlug)\n\n if (collectionConfig && user?.id) {\n // Fetch the data required for the view\n const data = await getDocumentData({\n id: user.id,\n collectionSlug: collectionConfig.slug,\n locale,\n payload,\n user,\n })\n\n if (!data) {\n throw new Error('not-found')\n }\n\n // Get document preferences\n const docPreferences = await getDocPreferences({\n id: user.id,\n collectionSlug: collectionConfig.slug,\n payload,\n user,\n })\n\n // Get permissions\n const { docPermissions, hasPublishPermission, hasSavePermission } =\n await getDocumentPermissions({\n id: user.id,\n collectionConfig,\n data,\n req,\n })\n\n // Build initial form state from data\n const { state: formState } = await buildFormState({\n id: user.id,\n collectionSlug: collectionConfig.slug,\n data,\n docPermissions,\n docPreferences,\n locale: locale?.code,\n operation: 'update',\n renderAllFields: true,\n req,\n schemaPath: collectionConfig.slug,\n })\n\n // Fetch document lock state\n const { currentEditor, isLocked, lastUpdateTime } = await getIsLocked({\n id: user.id,\n collectionConfig,\n isEditing: true,\n req,\n })\n\n // Get all versions required for UI\n const { hasPublishedDoc, mostRecentVersionIsAutosaved, unpublishedVersionCount, versionCount } =\n await getVersions({\n id: user.id,\n collectionConfig,\n doc: data,\n docPermissions,\n locale: locale?.code,\n payload,\n user,\n })\n\n return (\n <DocumentInfoProvider\n AfterFields={<Settings i18n={i18n} languageOptions={languageOptions} theme={theme} />}\n apiURL={`${serverURL}${api}/${userSlug}${user?.id ? `/${user.id}` : ''}`}\n collectionSlug={userSlug}\n currentEditor={currentEditor}\n docPermissions={docPermissions}\n hasPublishedDoc={hasPublishedDoc}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={user?.id}\n initialData={data}\n initialState={formState}\n isEditing\n isLocked={isLocked}\n lastUpdateTime={lastUpdateTime}\n mostRecentVersionIsAutosaved={mostRecentVersionIsAutosaved}\n unpublishedVersionCount={unpublishedVersionCount}\n versionCount={versionCount}\n >\n <EditDepthProvider>\n <DocumentHeader\n collectionConfig={collectionConfig}\n hideTabs\n i18n={i18n}\n payload={payload}\n permissions={permissions}\n />\n <HydrateAuthProvider permissions={permissions} />\n {RenderServerComponent({\n Component: config.admin?.components?.views?.account?.Component,\n Fallback: EditView,\n importMap: payload.importMap,\n serverProps: {\n i18n,\n initPageResult,\n locale,\n params,\n payload,\n permissions,\n routeSegments: [],\n searchParams,\n user,\n },\n })}\n <AccountClient />\n </EditDepthProvider>\n </DocumentInfoProvider>\n )\n }\n\n return notFound()\n}\n"],"mappings":";AAEA,SAASA,oBAAoB,EAAEC,iBAAiB,EAAEC,mBAAmB,QAAQ;AAC7E,SAASC,qBAAqB,QAAQ;AACtC,SAASC,cAAc,QAAQ;AAC/B,SAASC,QAAQ,QAAQ;AACzB,OAAOC,KAAA,MAAW;AAElB,SAASC,cAAc,QAAQ;AAC/B,SAASC,iBAAiB,QAAQ;AAClC,SAASC,eAAe,QAAQ;AAChC,SAASC,sBAAsB,QAAQ;AACvC,SAASC,WAAW,QAAQ;AAC5B,SAASC,WAAW,QAAQ;AAC5B,SAASC,QAAQ,QAAQ;AACzB,SAASC,aAAa,QAAQ;AAC9B,SAASC,QAAQ,QAAQ;AAEzB,SAASC,uBAAuB,QAAQ;AAExC,OAAO,MAAMC,OAAA,GAAoC,MAAAA,CAAO;EACtDC,cAAc;EACdC,MAAM;EACNC;AAAY,CACb;EACC,MAAM;IACJC,eAAe;IACfC,MAAM;IACNC,WAAW;IACXC,GAAG;IACHA,GAAA,EAAK;MACHC,IAAI;MACJC,OAAO;MACPA,OAAA,EAAS;QAAEC;MAAM,CAAE;MACnBC;IAAI;EACL,CACF,GAAGV,cAAA;EAEJ,MAAM;IACJW,KAAA,EAAO;MAAEC,KAAK;MAAEF,IAAA,EAAMG;IAAQ,CAAE;IAChCC,MAAA,EAAQ;MAAEC;IAAG,CAAE;IACfC;EAAS,CACV,GAAGP,MAAA;EAEJ,MAAMQ,gBAAA,GAAmBR,MAAA,CAAOS,WAAW,CAACC,IAAI,CAAEC,UAAA,IAAeA,UAAA,CAAWC,IAAI,KAAKR,QAAA;EAErF,IAAII,gBAAA,IAAoBP,IAAA,EAAMY,EAAA,EAAI;IAChC;IACA,MAAMC,IAAA,GAAO,MAAMhC,eAAA,CAAgB;MACjC+B,EAAA,EAAIZ,IAAA,CAAKY,EAAE;MACXE,cAAA,EAAgBP,gBAAA,CAAiBI,IAAI;MACrCjB,MAAA;MACAI,OAAA;MACAE;IACF;IAEA,IAAI,CAACa,IAAA,EAAM;MACT,MAAM,IAAIE,KAAA,CAAM;IAClB;IAEA;IACA,MAAMC,cAAA,GAAiB,MAAMpC,iBAAA,CAAkB;MAC7CgC,EAAA,EAAIZ,IAAA,CAAKY,EAAE;MACXE,cAAA,EAAgBP,gBAAA,CAAiBI,IAAI;MACrCb,OAAA;MACAE;IACF;IAEA;IACA,MAAM;MAAEiB,cAAc;MAAEC,oBAAoB;MAAEC;IAAiB,CAAE,GAC/D,MAAMrC,sBAAA,CAAuB;MAC3B8B,EAAA,EAAIZ,IAAA,CAAKY,EAAE;MACXL,gBAAA;MACAM,IAAA;MACAjB;IACF;IAEF;IACA,MAAM;MAAEwB,KAAA,EAAOC;IAAS,CAAE,GAAG,MAAM7C,cAAA,CAAe;MAChDoC,EAAA,EAAIZ,IAAA,CAAKY,EAAE;MACXE,cAAA,EAAgBP,gBAAA,CAAiBI,IAAI;MACrCE,IAAA;MACAI,cAAA;MACAD,cAAA;MACAtB,MAAA,EAAQA,MAAA,EAAQ4B,IAAA;MAChBC,SAAA,EAAW;MACXC,eAAA,EAAiB;MACjB5B,GAAA;MACA6B,UAAA,EAAYlB,gBAAA,CAAiBI;IAC/B;IAEA;IACA,MAAM;MAAEe,aAAa;MAAEC,QAAQ;MAAEC;IAAc,CAAE,GAAG,MAAM7C,WAAA,CAAY;MACpE6B,EAAA,EAAIZ,IAAA,CAAKY,EAAE;MACXL,gBAAA;MACAsB,SAAA,EAAW;MACXjC;IACF;IAEA;IACA,MAAM;MAAEkC,eAAe;MAAEC,4BAA4B;MAAEC,uBAAuB;MAAEC;IAAY,CAAE,GAC5F,MAAMjD,WAAA,CAAY;MAChB4B,EAAA,EAAIZ,IAAA,CAAKY,EAAE;MACXL,gBAAA;MACA2B,GAAA,EAAKrB,IAAA;MACLI,cAAA;MACAvB,MAAA,EAAQA,MAAA,EAAQ4B,IAAA;MAChBxB,OAAA;MACAE;IACF;IAEF,oBACEmC,IAAA,CAAC/D,oBAAA;MACCgE,WAAA,eAAaD,IAAA,CAAChD,QAAA;QAASU,IAAA,EAAMA,IAAA;QAAMJ,eAAA,EAAiBA,eAAA;QAAiBS,KAAA,EAAOA;;MAC5EmC,MAAA,EAAQ,GAAG/B,SAAA,GAAYD,GAAA,IAAOF,QAAA,GAAWH,IAAA,EAAMY,EAAA,GAAK,IAAIZ,IAAA,CAAKY,EAAE,EAAE,GAAG,IAAI;MACxEE,cAAA,EAAgBX,QAAA;MAChBuB,aAAA,EAAeA,aAAA;MACfT,cAAA,EAAgBA,cAAA;MAChBa,eAAA,EAAiBA,eAAA;MACjBZ,oBAAA,EAAsBA,oBAAA;MACtBC,iBAAA,EAAmBA,iBAAA;MACnBP,EAAA,EAAIZ,IAAA,EAAMY,EAAA;MACV0B,WAAA,EAAazB,IAAA;MACb0B,YAAA,EAAclB,SAAA;MACdQ,SAAS;MACTF,QAAA,EAAUA,QAAA;MACVC,cAAA,EAAgBA,cAAA;MAChBG,4BAAA,EAA8BA,4BAAA;MAC9BC,uBAAA,EAAyBA,uBAAA;MACzBC,YAAA,EAAcA,YAAA;gBAEd,aAAAO,KAAA,CAACnE,iBAAA;gCACC8D,IAAA,CAACxD,cAAA;UACC4B,gBAAA,EAAkBA,gBAAA;UAClBkC,QAAQ;UACR5C,IAAA,EAAMA,IAAA;UACNC,OAAA,EAASA,OAAA;UACTH,WAAA,EAAaA;yBAEfwC,IAAA,CAAC7D,mBAAA;UAAoBqB,WAAA,EAAaA;YACjCpB,qBAAA,CAAsB;UACrBmE,SAAA,EAAW3C,MAAA,CAAOE,KAAK,EAAE0C,UAAA,EAAYC,KAAA,EAAOC,OAAA,EAASH,SAAA;UACrDI,QAAA,EAAU7D,QAAA;UACV8D,SAAA,EAAWjD,OAAA,CAAQiD,SAAS;UAC5BC,WAAA,EAAa;YACXnD,IAAA;YACAP,cAAA;YACAI,MAAA;YACAH,MAAA;YACAO,OAAA;YACAH,WAAA;YACAsD,aAAA,EAAe,EAAE;YACjBzD,YAAA;YACAQ;UACF;QACF,I,aACAmC,IAAA,CAACjD,aAAA;;;EAIT;EAEA,OAAOT,QAAA;AACT","ignoreList":[]}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import type { Payload, SanitizedCollectionConfig, SanitizedDocumentPermissions, SanitizedGlobalConfig, TypedUser } from 'payload';
|
|
2
2
|
type Args = {
|
|
3
3
|
collectionConfig?: SanitizedCollectionConfig;
|
|
4
|
+
/**
|
|
5
|
+
* Optional - performance optimization.
|
|
6
|
+
* If a document has been fetched before fetching versions, pass it here.
|
|
7
|
+
* If this document is set to published, we can skip the query to find out if a published document exists,
|
|
8
|
+
* as the passed in document is proof of its existence.
|
|
9
|
+
*/
|
|
10
|
+
doc?: Record<string, any>;
|
|
4
11
|
docPermissions: SanitizedDocumentPermissions;
|
|
5
12
|
globalConfig?: SanitizedGlobalConfig;
|
|
6
13
|
id?: number | string;
|
|
@@ -14,6 +21,6 @@ type Result = Promise<{
|
|
|
14
21
|
unpublishedVersionCount: number;
|
|
15
22
|
versionCount: number;
|
|
16
23
|
}>;
|
|
17
|
-
export declare const getVersions: ({ id: idArg, collectionConfig, docPermissions, globalConfig, locale, payload, user, }: Args) => Result;
|
|
24
|
+
export declare const getVersions: ({ id: idArg, collectionConfig, doc, docPermissions, globalConfig, locale, payload, user, }: Args) => Result;
|
|
18
25
|
export {};
|
|
19
26
|
//# sourceMappingURL=getVersions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getVersions.d.ts","sourceRoot":"","sources":["../../../src/views/Document/getVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,yBAAyB,EACzB,4BAA4B,EAC5B,qBAAqB,EACrB,SAAS,EACV,MAAM,SAAS,CAAA;AAIhB,KAAK,IAAI,GAAG;IACV,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,cAAc,EAAE,4BAA4B,CAAA;IAC5C,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,SAAS,CAAA;CAChB,CAAA;AAED,KAAK,MAAM,GAAG,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAA;IACxB,4BAA4B,EAAE,OAAO,CAAA;IACrC,uBAAuB,EAAE,MAAM,CAAA;IAC/B,YAAY,EAAE,MAAM,CAAA;CACrB,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"getVersions.d.ts","sourceRoot":"","sources":["../../../src/views/Document/getVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,yBAAyB,EACzB,4BAA4B,EAC5B,qBAAqB,EACrB,SAAS,EACV,MAAM,SAAS,CAAA;AAIhB,KAAK,IAAI,GAAG;IACV,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,cAAc,EAAE,4BAA4B,CAAA;IAC5C,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,SAAS,CAAA;CAChB,CAAA;AAED,KAAK,MAAM,GAAG,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAA;IACxB,4BAA4B,EAAE,OAAO,CAAA;IACrC,uBAAuB,EAAE,MAAM,CAAA;IAC/B,YAAY,EAAE,MAAM,CAAA;CACrB,CAAC,CAAA;AAKF,eAAO,MAAM,WAAW,+FASrB,IAAI,KAAG,MAqOT,CAAA"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { sanitizeID } from '@payloadcms/ui/shared';
|
|
2
2
|
// TODO: in the future, we can parallelize some of these queries
|
|
3
3
|
// this will speed up the API by ~30-100ms or so
|
|
4
|
+
// Note from the future: I have attempted parallelizing these queries, but it made this function almost 2x slower.
|
|
4
5
|
export const getVersions = async ({
|
|
5
6
|
id: idArg,
|
|
6
7
|
collectionConfig,
|
|
8
|
+
doc,
|
|
7
9
|
docPermissions,
|
|
8
10
|
globalConfig,
|
|
9
11
|
locale,
|
|
@@ -11,7 +13,7 @@ export const getVersions = async ({
|
|
|
11
13
|
user
|
|
12
14
|
}) => {
|
|
13
15
|
const id = sanitizeID(idArg);
|
|
14
|
-
let
|
|
16
|
+
let publishedDoc;
|
|
15
17
|
let hasPublishedDoc = false;
|
|
16
18
|
let mostRecentVersionIsAutosaved = false;
|
|
17
19
|
let unpublishedVersionCount = 0;
|
|
@@ -38,30 +40,40 @@ export const getVersions = async ({
|
|
|
38
40
|
};
|
|
39
41
|
}
|
|
40
42
|
if (versionsConfig?.drafts) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
43
|
+
// Find out if a published document exists
|
|
44
|
+
if (doc?._status === 'published') {
|
|
45
|
+
publishedDoc = doc;
|
|
46
|
+
} else {
|
|
47
|
+
publishedDoc = (await payload.find({
|
|
48
|
+
collection: collectionConfig.slug,
|
|
49
|
+
depth: 0,
|
|
50
|
+
limit: 1,
|
|
51
|
+
locale: locale || undefined,
|
|
52
|
+
pagination: false,
|
|
53
|
+
select: {
|
|
54
|
+
updatedAt: true
|
|
55
|
+
},
|
|
56
|
+
user,
|
|
57
|
+
where: {
|
|
58
|
+
and: [{
|
|
59
|
+
or: [{
|
|
60
|
+
_status: {
|
|
61
|
+
equals: 'published'
|
|
62
|
+
}
|
|
63
|
+
}, {
|
|
64
|
+
_status: {
|
|
65
|
+
exists: false
|
|
66
|
+
}
|
|
67
|
+
}]
|
|
52
68
|
}, {
|
|
53
|
-
|
|
54
|
-
|
|
69
|
+
id: {
|
|
70
|
+
equals: id
|
|
55
71
|
}
|
|
56
72
|
}]
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}]
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
if (publishedQuery.docs?.[0]) {
|
|
73
|
+
}
|
|
74
|
+
}))?.docs?.[0];
|
|
75
|
+
}
|
|
76
|
+
if (publishedDoc) {
|
|
65
77
|
hasPublishedDoc = true;
|
|
66
78
|
}
|
|
67
79
|
if (versionsConfig.drafts?.autosave) {
|
|
@@ -69,6 +81,9 @@ export const getVersions = async ({
|
|
|
69
81
|
collection: collectionConfig.slug,
|
|
70
82
|
depth: 0,
|
|
71
83
|
limit: 1,
|
|
84
|
+
select: {
|
|
85
|
+
autosave: true
|
|
86
|
+
},
|
|
72
87
|
user,
|
|
73
88
|
where: {
|
|
74
89
|
and: [{
|
|
@@ -82,7 +97,7 @@ export const getVersions = async ({
|
|
|
82
97
|
mostRecentVersionIsAutosaved = true;
|
|
83
98
|
}
|
|
84
99
|
}
|
|
85
|
-
if (
|
|
100
|
+
if (publishedDoc?.updatedAt) {
|
|
86
101
|
({
|
|
87
102
|
totalDocs: unpublishedVersionCount
|
|
88
103
|
} = await payload.countVersions({
|
|
@@ -99,7 +114,7 @@ export const getVersions = async ({
|
|
|
99
114
|
}
|
|
100
115
|
}, {
|
|
101
116
|
updatedAt: {
|
|
102
|
-
greater_than:
|
|
117
|
+
greater_than: publishedDoc.updatedAt
|
|
103
118
|
}
|
|
104
119
|
}]
|
|
105
120
|
}
|
|
@@ -110,6 +125,7 @@ export const getVersions = async ({
|
|
|
110
125
|
totalDocs: versionCount
|
|
111
126
|
} = await payload.countVersions({
|
|
112
127
|
collection: collectionConfig.slug,
|
|
128
|
+
depth: 0,
|
|
113
129
|
user,
|
|
114
130
|
where: {
|
|
115
131
|
and: [{
|
|
@@ -121,14 +137,22 @@ export const getVersions = async ({
|
|
|
121
137
|
}));
|
|
122
138
|
}
|
|
123
139
|
if (globalConfig) {
|
|
140
|
+
// Find out if a published document exists
|
|
124
141
|
if (versionsConfig?.drafts) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
142
|
+
if (doc?._status === 'published') {
|
|
143
|
+
publishedDoc = doc;
|
|
144
|
+
} else {
|
|
145
|
+
publishedDoc = await payload.findGlobal({
|
|
146
|
+
slug: globalConfig.slug,
|
|
147
|
+
depth: 0,
|
|
148
|
+
locale,
|
|
149
|
+
select: {
|
|
150
|
+
updatedAt: true
|
|
151
|
+
},
|
|
152
|
+
user
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
if (publishedDoc?._status === 'published') {
|
|
132
156
|
hasPublishedDoc = true;
|
|
133
157
|
}
|
|
134
158
|
if (versionsConfig.drafts?.autosave) {
|
|
@@ -144,7 +168,7 @@ export const getVersions = async ({
|
|
|
144
168
|
mostRecentVersionIsAutosaved = true;
|
|
145
169
|
}
|
|
146
170
|
}
|
|
147
|
-
if (
|
|
171
|
+
if (publishedDoc?.updatedAt) {
|
|
148
172
|
({
|
|
149
173
|
totalDocs: unpublishedVersionCount
|
|
150
174
|
} = await payload.countGlobalVersions({
|
|
@@ -158,7 +182,7 @@ export const getVersions = async ({
|
|
|
158
182
|
}
|
|
159
183
|
}, {
|
|
160
184
|
updatedAt: {
|
|
161
|
-
greater_than:
|
|
185
|
+
greater_than: publishedDoc.updatedAt
|
|
162
186
|
}
|
|
163
187
|
}]
|
|
164
188
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getVersions.js","names":["sanitizeID","getVersions","id","idArg","collectionConfig","docPermissions","globalConfig","locale","payload","user","publishedQuery","hasPublishedDoc","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","entityConfig","versionsConfig","versions","shouldFetchVersions","Boolean","readVersions","drafts","find","collection","slug","depth","undefined","where","and","or","_status","equals","exists","docs","autosave","mostRecentVersion","findVersions","limit","parent","updatedAt","totalDocs","countVersions","greater_than","findGlobal","findGlobalVersions","select","countGlobalVersions","global"],"sources":["../../../src/views/Document/getVersions.ts"],"sourcesContent":["import type {\n Payload,\n SanitizedCollectionConfig,\n SanitizedDocumentPermissions,\n SanitizedGlobalConfig,\n TypedUser,\n} from 'payload'\n\nimport { sanitizeID } from '@payloadcms/ui/shared'\n\ntype Args = {\n collectionConfig?: SanitizedCollectionConfig\n docPermissions: SanitizedDocumentPermissions\n globalConfig?: SanitizedGlobalConfig\n id?: number | string\n locale?: string\n payload: Payload\n user: TypedUser\n}\n\ntype Result = Promise<{\n hasPublishedDoc: boolean\n mostRecentVersionIsAutosaved: boolean\n unpublishedVersionCount: number\n versionCount: number\n}>\n\n// TODO: in the future, we can parallelize some of these queries\n// this will speed up the API by ~30-100ms or so\nexport const getVersions = async ({\n id: idArg,\n collectionConfig,\n docPermissions,\n globalConfig,\n locale,\n payload,\n user,\n}: Args): Result => {\n const id = sanitizeID(idArg)\n let publishedQuery\n let hasPublishedDoc = false\n let mostRecentVersionIsAutosaved = false\n let unpublishedVersionCount = 0\n let versionCount = 0\n\n const entityConfig = collectionConfig || globalConfig\n const versionsConfig = entityConfig?.versions\n\n const shouldFetchVersions = Boolean(versionsConfig && docPermissions?.readVersions)\n\n if (!shouldFetchVersions) {\n const hasPublishedDoc = Boolean((collectionConfig && id) || globalConfig)\n\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n }\n\n if (collectionConfig) {\n if (!id) {\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n }\n\n if (versionsConfig?.drafts) {\n publishedQuery = await payload.find({\n collection: collectionConfig.slug,\n depth: 0,\n locale: locale || undefined,\n user,\n where: {\n and: [\n {\n or: [\n {\n _status: {\n equals: 'published',\n },\n },\n {\n _status: {\n exists: false,\n },\n },\n ],\n },\n {\n id: {\n equals: id,\n },\n },\n ],\n },\n })\n\n if (publishedQuery.docs?.[0]) {\n hasPublishedDoc = true\n }\n\n if (versionsConfig.drafts?.autosave) {\n const mostRecentVersion = await payload.findVersions({\n collection: collectionConfig.slug,\n depth: 0,\n limit: 1,\n user,\n where: {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n ],\n },\n })\n\n if (\n mostRecentVersion.docs[0] &&\n 'autosave' in mostRecentVersion.docs[0] &&\n mostRecentVersion.docs[0].autosave\n ) {\n mostRecentVersionIsAutosaved = true\n }\n }\n\n if (publishedQuery.docs?.[0]?.updatedAt) {\n ;({ totalDocs: unpublishedVersionCount } = await payload.countVersions({\n collection: collectionConfig.slug,\n user,\n where: {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n {\n 'version._status': {\n equals: 'draft',\n },\n },\n {\n updatedAt: {\n greater_than: publishedQuery.docs[0].updatedAt,\n },\n },\n ],\n },\n }))\n }\n }\n\n ;({ totalDocs: versionCount } = await payload.countVersions({\n collection: collectionConfig.slug,\n user,\n where: {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n ],\n },\n }))\n }\n\n if (globalConfig) {\n if (versionsConfig?.drafts) {\n publishedQuery = await payload.findGlobal({\n slug: globalConfig.slug,\n depth: 0,\n locale,\n user,\n })\n\n if (publishedQuery?._status === 'published') {\n hasPublishedDoc = true\n }\n\n if (versionsConfig.drafts?.autosave) {\n const mostRecentVersion = await payload.findGlobalVersions({\n slug: globalConfig.slug,\n limit: 1,\n select: {\n autosave: true,\n },\n user,\n })\n\n if (\n mostRecentVersion.docs[0] &&\n 'autosave' in mostRecentVersion.docs[0] &&\n mostRecentVersion.docs[0].autosave\n ) {\n mostRecentVersionIsAutosaved = true\n }\n }\n\n if (publishedQuery?.updatedAt) {\n ;({ totalDocs: unpublishedVersionCount } = await payload.countGlobalVersions({\n depth: 0,\n global: globalConfig.slug,\n user,\n where: {\n and: [\n {\n 'version._status': {\n equals: 'draft',\n },\n },\n {\n updatedAt: {\n greater_than: publishedQuery.updatedAt,\n },\n },\n ],\n },\n }))\n }\n }\n\n ;({ totalDocs: versionCount } = await payload.countGlobalVersions({\n depth: 0,\n global: globalConfig.slug,\n user,\n }))\n }\n\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"getVersions.js","names":["sanitizeID","getVersions","id","idArg","collectionConfig","doc","docPermissions","globalConfig","locale","payload","user","publishedDoc","hasPublishedDoc","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","entityConfig","versionsConfig","versions","shouldFetchVersions","Boolean","readVersions","drafts","_status","find","collection","slug","depth","limit","undefined","pagination","select","updatedAt","where","and","or","equals","exists","docs","autosave","mostRecentVersion","findVersions","parent","totalDocs","countVersions","greater_than","findGlobal","findGlobalVersions","countGlobalVersions","global"],"sources":["../../../src/views/Document/getVersions.ts"],"sourcesContent":["import type {\n Payload,\n SanitizedCollectionConfig,\n SanitizedDocumentPermissions,\n SanitizedGlobalConfig,\n TypedUser,\n} from 'payload'\n\nimport { sanitizeID } from '@payloadcms/ui/shared'\n\ntype Args = {\n collectionConfig?: SanitizedCollectionConfig\n /**\n * Optional - performance optimization.\n * If a document has been fetched before fetching versions, pass it here.\n * If this document is set to published, we can skip the query to find out if a published document exists,\n * as the passed in document is proof of its existence.\n */\n doc?: Record<string, any>\n docPermissions: SanitizedDocumentPermissions\n globalConfig?: SanitizedGlobalConfig\n id?: number | string\n locale?: string\n payload: Payload\n user: TypedUser\n}\n\ntype Result = Promise<{\n hasPublishedDoc: boolean\n mostRecentVersionIsAutosaved: boolean\n unpublishedVersionCount: number\n versionCount: number\n}>\n\n// TODO: in the future, we can parallelize some of these queries\n// this will speed up the API by ~30-100ms or so\n// Note from the future: I have attempted parallelizing these queries, but it made this function almost 2x slower.\nexport const getVersions = async ({\n id: idArg,\n collectionConfig,\n doc,\n docPermissions,\n globalConfig,\n locale,\n payload,\n user,\n}: Args): Result => {\n const id = sanitizeID(idArg)\n let publishedDoc\n let hasPublishedDoc = false\n let mostRecentVersionIsAutosaved = false\n let unpublishedVersionCount = 0\n let versionCount = 0\n\n const entityConfig = collectionConfig || globalConfig\n const versionsConfig = entityConfig?.versions\n\n const shouldFetchVersions = Boolean(versionsConfig && docPermissions?.readVersions)\n\n if (!shouldFetchVersions) {\n const hasPublishedDoc = Boolean((collectionConfig && id) || globalConfig)\n\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n }\n\n if (collectionConfig) {\n if (!id) {\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n }\n\n if (versionsConfig?.drafts) {\n // Find out if a published document exists\n if (doc?._status === 'published') {\n publishedDoc = doc\n } else {\n publishedDoc = (\n await payload.find({\n collection: collectionConfig.slug,\n depth: 0,\n limit: 1,\n locale: locale || undefined,\n pagination: false,\n select: {\n updatedAt: true,\n },\n user,\n where: {\n and: [\n {\n or: [\n {\n _status: {\n equals: 'published',\n },\n },\n {\n _status: {\n exists: false,\n },\n },\n ],\n },\n {\n id: {\n equals: id,\n },\n },\n ],\n },\n })\n )?.docs?.[0]\n }\n\n if (publishedDoc) {\n hasPublishedDoc = true\n }\n\n if (versionsConfig.drafts?.autosave) {\n const mostRecentVersion = await payload.findVersions({\n collection: collectionConfig.slug,\n depth: 0,\n limit: 1,\n select: {\n autosave: true,\n },\n user,\n where: {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n ],\n },\n })\n\n if (\n mostRecentVersion.docs[0] &&\n 'autosave' in mostRecentVersion.docs[0] &&\n mostRecentVersion.docs[0].autosave\n ) {\n mostRecentVersionIsAutosaved = true\n }\n }\n\n if (publishedDoc?.updatedAt) {\n ;({ totalDocs: unpublishedVersionCount } = await payload.countVersions({\n collection: collectionConfig.slug,\n user,\n where: {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n {\n 'version._status': {\n equals: 'draft',\n },\n },\n {\n updatedAt: {\n greater_than: publishedDoc.updatedAt,\n },\n },\n ],\n },\n }))\n }\n }\n\n ;({ totalDocs: versionCount } = await payload.countVersions({\n collection: collectionConfig.slug,\n depth: 0,\n user,\n where: {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n ],\n },\n }))\n }\n\n if (globalConfig) {\n // Find out if a published document exists\n if (versionsConfig?.drafts) {\n if (doc?._status === 'published') {\n publishedDoc = doc\n } else {\n publishedDoc = await payload.findGlobal({\n slug: globalConfig.slug,\n depth: 0,\n locale,\n select: {\n updatedAt: true,\n },\n user,\n })\n }\n\n if (publishedDoc?._status === 'published') {\n hasPublishedDoc = true\n }\n\n if (versionsConfig.drafts?.autosave) {\n const mostRecentVersion = await payload.findGlobalVersions({\n slug: globalConfig.slug,\n limit: 1,\n select: {\n autosave: true,\n },\n user,\n })\n\n if (\n mostRecentVersion.docs[0] &&\n 'autosave' in mostRecentVersion.docs[0] &&\n mostRecentVersion.docs[0].autosave\n ) {\n mostRecentVersionIsAutosaved = true\n }\n }\n\n if (publishedDoc?.updatedAt) {\n ;({ totalDocs: unpublishedVersionCount } = await payload.countGlobalVersions({\n depth: 0,\n global: globalConfig.slug,\n user,\n where: {\n and: [\n {\n 'version._status': {\n equals: 'draft',\n },\n },\n {\n updatedAt: {\n greater_than: publishedDoc.updatedAt,\n },\n },\n ],\n },\n }))\n }\n }\n\n ;({ totalDocs: versionCount } = await payload.countGlobalVersions({\n depth: 0,\n global: globalConfig.slug,\n user,\n }))\n }\n\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { ClientConfig, Data, DocumentPreferences, FormState, ImportMap, PayloadRequest, SanitizedConfig } from 'payload';
|
|
3
|
-
export declare const getClientConfig: (args: {
|
|
4
|
-
config: SanitizedConfig;
|
|
5
|
-
i18n: I18nClient;
|
|
6
|
-
importMap: ImportMap;
|
|
7
|
-
}) => ClientConfig;
|
|
1
|
+
import type { Data, DocumentPreferences, FormState, PayloadRequest } from 'payload';
|
|
8
2
|
type RenderDocumentResult = {
|
|
9
3
|
data: any;
|
|
10
4
|
Document: React.ReactNode;
|
|
@@ -17,6 +11,7 @@ export declare const renderDocumentHandler: (args: {
|
|
|
17
11
|
drawerSlug?: string;
|
|
18
12
|
initialData?: Data;
|
|
19
13
|
initialState?: FormState;
|
|
14
|
+
overrideEntityVisibility?: boolean;
|
|
20
15
|
redirectAfterDelete: boolean;
|
|
21
16
|
redirectAfterDuplicate: boolean;
|
|
22
17
|
req: PayloadRequest;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleServerFunction.d.ts","sourceRoot":"","sources":["../../../src/views/Document/handleServerFunction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"handleServerFunction.d.ts","sourceRoot":"","sources":["../../../src/views/Document/handleServerFunction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,cAAc,EAAmB,MAAM,SAAS,CAAA;AAQpG,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,GAAG,CAAA;IACT,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,WAAW,EAAE,mBAAmB,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,qBAAqB,SAAgB;IAChD,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,mBAAmB,EAAE,OAAO,CAAA;IAC5B,sBAAsB,EAAE,OAAO,CAAA;IAC/B,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC,oBAAoB,CA6I/B,CAAA"}
|
|
@@ -1,26 +1,7 @@
|
|
|
1
|
+
import { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig';
|
|
1
2
|
import { headers as getHeaders } from 'next/headers.js';
|
|
2
|
-
import {
|
|
3
|
+
import { getAccessResults, isEntityHidden, parseCookies } from 'payload';
|
|
3
4
|
import { renderDocument } from './index.js';
|
|
4
|
-
let cachedClientConfig = global._payload_clientConfig;
|
|
5
|
-
if (!cachedClientConfig) {
|
|
6
|
-
cachedClientConfig = global._payload_clientConfig = null;
|
|
7
|
-
}
|
|
8
|
-
export const getClientConfig = args => {
|
|
9
|
-
const {
|
|
10
|
-
config,
|
|
11
|
-
i18n,
|
|
12
|
-
importMap
|
|
13
|
-
} = args;
|
|
14
|
-
if (cachedClientConfig && process.env.NODE_ENV !== 'development') {
|
|
15
|
-
return cachedClientConfig;
|
|
16
|
-
}
|
|
17
|
-
cachedClientConfig = createClientConfig({
|
|
18
|
-
config,
|
|
19
|
-
i18n,
|
|
20
|
-
importMap
|
|
21
|
-
});
|
|
22
|
-
return cachedClientConfig;
|
|
23
|
-
};
|
|
24
5
|
export const renderDocumentHandler = async args => {
|
|
25
6
|
const {
|
|
26
7
|
collectionSlug,
|
|
@@ -28,6 +9,7 @@ export const renderDocumentHandler = async args => {
|
|
|
28
9
|
docID,
|
|
29
10
|
drawerSlug,
|
|
30
11
|
initialData,
|
|
12
|
+
overrideEntityVisibility,
|
|
31
13
|
redirectAfterDelete,
|
|
32
14
|
redirectAfterDuplicate,
|
|
33
15
|
req,
|
|
@@ -136,13 +118,14 @@ export const renderDocumentHandler = async args => {
|
|
|
136
118
|
collectionConfig: payload.config.collections.find(collection => collection.slug === collectionSlug),
|
|
137
119
|
cookies,
|
|
138
120
|
docID,
|
|
139
|
-
globalConfig: payload.config.globals.find(
|
|
121
|
+
globalConfig: payload.config.globals.find(global => global.slug === collectionSlug),
|
|
140
122
|
languageOptions: undefined,
|
|
141
123
|
permissions,
|
|
142
124
|
req,
|
|
143
125
|
translations: undefined,
|
|
144
126
|
visibleEntities
|
|
145
127
|
},
|
|
128
|
+
overrideEntityVisibility,
|
|
146
129
|
params: {
|
|
147
130
|
segments: ['collections', collectionSlug, docID]
|
|
148
131
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleServerFunction.js","names":["
|
|
1
|
+
{"version":3,"file":"handleServerFunction.js","names":["getClientConfig","headers","getHeaders","getAccessResults","isEntityHidden","parseCookies","renderDocument","renderDocumentHandler","args","collectionSlug","disableActions","docID","drawerSlug","initialData","overrideEntityVisibility","redirectAfterDelete","redirectAfterDuplicate","req","i18n","payload","config","user","cookies","incomingUserSlug","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","clientConfig","importMap","preferences","preferencesKey","where","and","key","equals","id","then","res","value","visibleEntities","map","slug","hidden","filter","Boolean","globals","permissions","data","Document","initPageResult","collectionConfig","globalConfig","global","languageOptions","undefined","translations","params","segments","searchParams"],"sources":["../../../src/views/Document/handleServerFunction.tsx"],"sourcesContent":["import type { Data, DocumentPreferences, FormState, PayloadRequest, VisibleEntities } from 'payload'\n\nimport { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig'\nimport { headers as getHeaders } from 'next/headers.js'\nimport { getAccessResults, isEntityHidden, parseCookies } from 'payload'\n\nimport { renderDocument } from './index.js'\n\ntype RenderDocumentResult = {\n data: any\n Document: React.ReactNode\n preferences: DocumentPreferences\n}\n\nexport const renderDocumentHandler = async (args: {\n collectionSlug: string\n disableActions?: boolean\n docID: string\n drawerSlug?: string\n initialData?: Data\n initialState?: FormState\n overrideEntityVisibility?: boolean\n redirectAfterDelete: boolean\n redirectAfterDuplicate: boolean\n req: PayloadRequest\n}): Promise<RenderDocumentResult> => {\n const {\n collectionSlug,\n disableActions,\n docID,\n drawerSlug,\n initialData,\n overrideEntityVisibility,\n redirectAfterDelete,\n redirectAfterDuplicate,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n } = args\n\n const headers = await getHeaders()\n\n const cookies = parseCookies(headers)\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: req.payload.importMap,\n })\n\n let preferences: DocumentPreferences\n\n if (docID) {\n const preferencesKey = `${collectionSlug}-edit-${docID}`\n\n preferences = await payload\n .find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n where: {\n and: [\n {\n key: {\n equals: preferencesKey,\n },\n },\n {\n 'user.relationTo': {\n equals: user.collection,\n },\n },\n {\n 'user.value': {\n equals: user.id,\n },\n },\n ],\n },\n })\n .then((res) => res.docs[0]?.value as DocumentPreferences)\n }\n\n const visibleEntities: VisibleEntities = {\n collections: payload.config.collections\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n globals: payload.config.globals\n .map(({ slug, admin: { hidden } }) => (!isEntityHidden({ hidden, user }) ? slug : null))\n .filter(Boolean),\n }\n\n const permissions = await getAccessResults({\n req,\n })\n\n const { data, Document } = await renderDocument({\n clientConfig,\n disableActions,\n drawerSlug,\n importMap: payload.importMap,\n initialData,\n initPageResult: {\n collectionConfig: payload.config.collections.find(\n (collection) => collection.slug === collectionSlug,\n ),\n cookies,\n docID,\n globalConfig: payload.config.globals.find((global) => global.slug === collectionSlug),\n languageOptions: undefined, // TODO\n permissions,\n req,\n translations: undefined, // TODO\n visibleEntities,\n },\n overrideEntityVisibility,\n params: {\n segments: ['collections', collectionSlug, docID],\n },\n redirectAfterDelete,\n redirectAfterDuplicate,\n searchParams: {},\n })\n\n return {\n data,\n Document,\n preferences,\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,7 +2,9 @@ import type { AdminViewProps, Data } from 'payload';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import type { GenerateEditViewMetadata } from './getMetaBySegment.js';
|
|
4
4
|
export declare const generateMetadata: GenerateEditViewMetadata;
|
|
5
|
-
export declare const renderDocument: ({ disableActions, drawerSlug, importMap, initialData, initPageResult, params, redirectAfterDelete, redirectAfterDuplicate, searchParams, }:
|
|
5
|
+
export declare const renderDocument: ({ disableActions, drawerSlug, importMap, initialData, initPageResult, overrideEntityVisibility, params, redirectAfterDelete, redirectAfterDuplicate, searchParams, }: {
|
|
6
|
+
overrideEntityVisibility?: boolean;
|
|
7
|
+
} & AdminViewProps) => Promise<{
|
|
6
8
|
data: Data;
|
|
7
9
|
Document: React.ReactNode;
|
|
8
10
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Document/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Document/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAA6C,MAAM,SAAS,CAAA;AAQ9F,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAcrE,eAAO,MAAM,gBAAgB,EAAE,wBAAiE,CAAA;AAKhG,eAAO,MAAM,cAAc,yKAWxB;IACD,wBAAwB,CAAC,EAAE,OAAO,CAAA;CACnC,GAAG,cAAc,KAAG,OAAO,CAAC;IAC3B,IAAI,EAAE,IAAI,CAAA;IACV,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CA4UA,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAc7C,CAAA"}
|
|
@@ -26,6 +26,7 @@ export const renderDocument = async ({
|
|
|
26
26
|
importMap,
|
|
27
27
|
initialData,
|
|
28
28
|
initPageResult,
|
|
29
|
+
overrideEntityVisibility,
|
|
29
30
|
params,
|
|
30
31
|
redirectAfterDelete,
|
|
31
32
|
redirectAfterDuplicate,
|
|
@@ -123,6 +124,7 @@ export const renderDocument = async ({
|
|
|
123
124
|
}] = await Promise.all([getVersions({
|
|
124
125
|
id: idFromArgs,
|
|
125
126
|
collectionConfig,
|
|
127
|
+
doc,
|
|
126
128
|
docPermissions,
|
|
127
129
|
globalConfig,
|
|
128
130
|
locale: locale?.code,
|
|
@@ -155,7 +157,7 @@ export const renderDocument = async ({
|
|
|
155
157
|
user
|
|
156
158
|
};
|
|
157
159
|
if (collectionConfig) {
|
|
158
|
-
if (!visibleEntities?.collections?.find(visibleSlug => visibleSlug === collectionSlug)) {
|
|
160
|
+
if (!visibleEntities?.collections?.find(visibleSlug => visibleSlug === collectionSlug) && !overrideEntityVisibility) {
|
|
159
161
|
throw new Error('not-found');
|
|
160
162
|
}
|
|
161
163
|
const params = new URLSearchParams();
|