@payloadcms/next 3.23.0 → 3.24.0-canary.10637cd
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/prod/styles.css +1 -1
- package/dist/routes/rest/index.d.ts.map +1 -1
- package/dist/routes/rest/index.js +1 -1
- package/dist/routes/rest/index.js.map +1 -1
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +6 -0
- package/dist/views/List/index.js.map +1 -1
- package/dist/views/List/resolveAllFilterOptions.d.ts +6 -0
- package/dist/views/List/resolveAllFilterOptions.d.ts.map +1 -0
- package/dist/views/List/resolveAllFilterOptions.js +27 -0
- package/dist/views/List/resolveAllFilterOptions.js.map +1 -0
- package/dist/views/LivePreview/Context/index.d.ts.map +1 -1
- package/dist/views/LivePreview/Context/index.js +5 -1
- package/dist/views/LivePreview/Context/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js +122 -59
- package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +4 -2
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +16 -11
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts +5 -3
- package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +12 -0
- package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.d.ts +3 -2
- package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js +7 -6
- package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/rest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/rest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,SAAS,CAAA;AA6C/D,eAAO,MAAM,OAAO,WAtCT,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,eAExC,OAAO,QACV;IACJ,MAAM,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CACpC,KACA,OAAO,CAAC,QAAQ,CAgCgB,CAAA;AAErC,eAAO,MAAM,GAAG,WAxCL,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,eAExC,OAAO,QACV;IACJ,MAAM,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CACpC,KACA,OAAO,CAAC,QAAQ,CAkCY,CAAA;AAEjC,eAAO,MAAM,IAAI,WA1CN,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,eAExC,OAAO,QACV;IACJ,MAAM,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CACpC,KACA,OAAO,CAAC,QAAQ,CAoCa,CAAA;AAElC,eAAO,MAAM,MAAM,WA5CR,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,eAExC,OAAO,QACV;IACJ,MAAM,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CACpC,KACA,OAAO,CAAC,QAAQ,CAsCe,CAAA;AAEpC,eAAO,MAAM,KAAK,WA9CP,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,eAExC,OAAO,QACV;IACJ,MAAM,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CACpC,KACA,OAAO,CAAC,QAAQ,CAwCc,CAAA;AAEnC,eAAO,MAAM,GAAG,WAhDL,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,eAExC,OAAO,QACV;IACJ,MAAM,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CACpC,KACA,OAAO,CAAC,QAAQ,CA0CY,CAAA"}
|
|
@@ -15,7 +15,7 @@ const handlerBuilder = config => async (request, args) => {
|
|
|
15
15
|
const awaitedParams = await args.params;
|
|
16
16
|
const response = await handleEndpoints({
|
|
17
17
|
config,
|
|
18
|
-
path: `${awaitedConfig.routes.api}/${awaitedParams.slug.join('/')}
|
|
18
|
+
path: awaitedParams ? `${awaitedConfig.routes.api}/${awaitedParams.slug.join('/')}` : undefined,
|
|
19
19
|
request
|
|
20
20
|
});
|
|
21
21
|
return response;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["handleEndpoints","generateOGImage","initedOGEndpoint","handlerBuilder","config","request","args","awaitedConfig","endpoints","some","endpoint","path","method","push","handler","awaitedParams","params","response","routes","api","slug","join","OPTIONS","GET","POST","DELETE","PATCH","PUT"],"sources":["../../../src/routes/rest/index.ts"],"sourcesContent":["import { handleEndpoints, type SanitizedConfig } from 'payload'\n\nimport { generateOGImage } from './og/index.js'\n\nlet initedOGEndpoint = false\n\nconst handlerBuilder =\n (config: Promise<SanitizedConfig> | SanitizedConfig) =>\n async (\n request: Request,\n args: {\n params: Promise<{ slug: string[] }>\n },\n ): Promise<Response> => {\n const awaitedConfig = await config\n\n // Add this endpoint only when using Next.js, still can be overriden.\n if (\n initedOGEndpoint === false &&\n !awaitedConfig.endpoints.some(\n (endpoint) => endpoint.path === '/og' && endpoint.method === 'get',\n )\n ) {\n awaitedConfig.endpoints.push({\n handler: generateOGImage,\n method: 'get',\n path: '/og',\n })\n }\n\n initedOGEndpoint = true\n\n const awaitedParams = await args.params\n\n const response = await handleEndpoints({\n config,\n path: `${awaitedConfig.routes.api}/${awaitedParams.slug.join('/')}
|
|
1
|
+
{"version":3,"file":"index.js","names":["handleEndpoints","generateOGImage","initedOGEndpoint","handlerBuilder","config","request","args","awaitedConfig","endpoints","some","endpoint","path","method","push","handler","awaitedParams","params","response","routes","api","slug","join","undefined","OPTIONS","GET","POST","DELETE","PATCH","PUT"],"sources":["../../../src/routes/rest/index.ts"],"sourcesContent":["import { handleEndpoints, type SanitizedConfig } from 'payload'\n\nimport { generateOGImage } from './og/index.js'\n\nlet initedOGEndpoint = false\n\nconst handlerBuilder =\n (config: Promise<SanitizedConfig> | SanitizedConfig) =>\n async (\n request: Request,\n args: {\n params: Promise<{ slug: string[] }>\n },\n ): Promise<Response> => {\n const awaitedConfig = await config\n\n // Add this endpoint only when using Next.js, still can be overriden.\n if (\n initedOGEndpoint === false &&\n !awaitedConfig.endpoints.some(\n (endpoint) => endpoint.path === '/og' && endpoint.method === 'get',\n )\n ) {\n awaitedConfig.endpoints.push({\n handler: generateOGImage,\n method: 'get',\n path: '/og',\n })\n }\n\n initedOGEndpoint = true\n\n const awaitedParams = await args.params\n\n const response = await handleEndpoints({\n config,\n path: awaitedParams\n ? `${awaitedConfig.routes.api}/${awaitedParams.slug.join('/')}`\n : undefined,\n request,\n })\n\n return response\n }\n\nexport const OPTIONS = handlerBuilder\n\nexport const GET = handlerBuilder\n\nexport const POST = handlerBuilder\n\nexport const DELETE = handlerBuilder\n\nexport const PATCH = handlerBuilder\n\nexport const PUT = handlerBuilder\n"],"mappings":"AAAA,SAASA,eAAe,QAA8B;AAEtD,SAASC,eAAe,QAAQ;AAEhC,IAAIC,gBAAA,GAAmB;AAEvB,MAAMC,cAAA,GACHC,MAAA,IACD,OACEC,OAAA,EACAC,IAAA;EAIA,MAAMC,aAAA,GAAgB,MAAMH,MAAA;EAE5B;EACA,IACEF,gBAAA,KAAqB,SACrB,CAACK,aAAA,CAAcC,SAAS,CAACC,IAAI,CAC1BC,QAAA,IAAaA,QAAA,CAASC,IAAI,KAAK,SAASD,QAAA,CAASE,MAAM,KAAK,QAE/D;IACAL,aAAA,CAAcC,SAAS,CAACK,IAAI,CAAC;MAC3BC,OAAA,EAASb,eAAA;MACTW,MAAA,EAAQ;MACRD,IAAA,EAAM;IACR;EACF;EAEAT,gBAAA,GAAmB;EAEnB,MAAMa,aAAA,GAAgB,MAAMT,IAAA,CAAKU,MAAM;EAEvC,MAAMC,QAAA,GAAW,MAAMjB,eAAA,CAAgB;IACrCI,MAAA;IACAO,IAAA,EAAMI,aAAA,GACF,GAAGR,aAAA,CAAcW,MAAM,CAACC,GAAG,IAAIJ,aAAA,CAAcK,IAAI,CAACC,IAAI,CAAC,MAAM,GAC7DC,SAAA;IACJjB;EACF;EAEA,OAAOY,QAAA;AACT;AAEF,OAAO,MAAMM,OAAA,GAAUpB,cAAA;AAEvB,OAAO,MAAMqB,GAAA,GAAMrB,cAAA;AAEnB,OAAO,MAAMsB,IAAA,GAAOtB,cAAA;AAEpB,OAAO,MAAMuB,MAAA,GAASvB,cAAA;AAEtB,OAAO,MAAMwB,KAAA,GAAQxB,cAAA;AAErB,OAAO,MAAMyB,GAAA,GAAMzB,cAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/List/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAS,MAAM,SAAS,CAAA;AAQ/D,OAAO,KAAmB,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/List/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAS,MAAM,SAAS,CAAA;AAQ/D,OAAO,KAAmB,MAAM,OAAO,CAAA;AAKvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAEhD,KAAK,YAAY,GAAG;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,EAAE,SAAS,CAAA;CACjB,GAAG,cAAc,CAAA;AAElB,eAAO,MAAM,cAAc,SACnB,YAAY,KACjB,OAAO,CAAC;IACT,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;CACtB,CAyMA,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAW3C,CAAA"}
|
package/dist/views/List/index.js
CHANGED
|
@@ -7,6 +7,7 @@ import { notFound } from 'next/navigation.js';
|
|
|
7
7
|
import { isNumber } from 'payload/shared';
|
|
8
8
|
import React, { Fragment } from 'react';
|
|
9
9
|
import { renderListViewSlots } from './renderListViewSlots.js';
|
|
10
|
+
import { resolveAllFilterOptions } from './resolveAllFilterOptions.js';
|
|
10
11
|
export { generateListMetadata } from './meta.js';
|
|
11
12
|
export const renderListView = async args => {
|
|
12
13
|
const {
|
|
@@ -116,6 +117,10 @@ export const renderListView = async args => {
|
|
|
116
117
|
useAsTitle: collectionConfig.admin.useAsTitle
|
|
117
118
|
});
|
|
118
119
|
const renderedFilters = renderFilters(collectionConfig.fields, req.payload.importMap);
|
|
120
|
+
const resolvedFilterOptions = await resolveAllFilterOptions({
|
|
121
|
+
collectionConfig,
|
|
122
|
+
req
|
|
123
|
+
});
|
|
119
124
|
const staticDescription = typeof collectionConfig.admin.description === 'function' ? collectionConfig.admin.description({
|
|
120
125
|
t: i18n.t
|
|
121
126
|
}) : collectionConfig.admin.description;
|
|
@@ -154,6 +159,7 @@ export const renderListView = async args => {
|
|
|
154
159
|
enableRowSelections,
|
|
155
160
|
listPreferences,
|
|
156
161
|
renderedFilters,
|
|
162
|
+
resolvedFilterOptions,
|
|
157
163
|
Table
|
|
158
164
|
};
|
|
159
165
|
const isInDrawer = Boolean(drawerSlug);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["DefaultListView","HydrateAuthProvider","ListQueryProvider","RenderServerComponent","renderFilters","renderTable","upsertPreferences","formatAdminURL","mergeListSearchAndWhere","notFound","isNumber","React","Fragment","renderListViewSlots","generateListMetadata","renderListView","args","clientConfig","customCellProps","disableBulkDelete","disableBulkEdit","drawerSlug","enableRowSelections","initPageResult","overrideEntityVisibility","params","query","queryFromArgs","searchParams","collectionConfig","slug","collectionSlug","locale","fullLocale","permissions","req","i18n","payload","config","queryFromReq","user","visibleEntities","collections","read","Error","listPreferences","key","value","limit","Number","undefined","sort","routes","admin","adminRoute","includes","page","pagination","defaultLimit","defaultSort","where","search","baseListFilter","and","filter","Boolean","data","find","collection","depth","draft","fallbackLocale","includeLockStatus","overrideAccess","clientCollectionConfig","c","columnState","Table","columnPreferences","columns","docs","useAsTitle","renderedFilters","fields","importMap","staticDescription","description","t","sharedClientProps","hasCreatePermission","create","newDocumentURL","path","sharedServerProps","listViewSlots","clientProps","serverProps","isInDrawer","List","_jsxs","_jsx","modifySearchParams","Component","components","views","list","Fallback","listSearchableFields","ListView","RenderedList","error","message","console"],"sources":["../../../src/views/List/index.tsx"],"sourcesContent":["import type {\n ListComponentClientProps,\n ListComponentServerProps,\n ListPreferences,\n ListViewClientProps,\n} from '@payloadcms/ui'\nimport type { AdminViewProps, ListQuery, Where } from 'payload'\n\nimport { DefaultListView, HydrateAuthProvider, ListQueryProvider } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { renderFilters, renderTable, upsertPreferences } from '@payloadcms/ui/rsc'\nimport { formatAdminURL, mergeListSearchAndWhere } from '@payloadcms/ui/shared'\nimport { notFound } from 'next/navigation.js'\nimport { isNumber } from 'payload/shared'\nimport React, { Fragment } from 'react'\n\nimport { renderListViewSlots } from './renderListViewSlots.js'\n\nexport { generateListMetadata } from './meta.js'\n\ntype ListViewArgs = {\n customCellProps?: Record<string, any>\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n enableRowSelections: boolean\n overrideEntityVisibility?: boolean\n query: ListQuery\n} & AdminViewProps\n\nexport const renderListView = async (\n args: ListViewArgs,\n): Promise<{\n List: React.ReactNode\n}> => {\n const {\n clientConfig,\n customCellProps,\n disableBulkDelete,\n disableBulkEdit,\n drawerSlug,\n enableRowSelections,\n initPageResult,\n overrideEntityVisibility,\n params,\n query: queryFromArgs,\n searchParams,\n } = args\n\n const {\n collectionConfig,\n collectionConfig: { slug: collectionSlug },\n locale: fullLocale,\n permissions,\n req,\n req: {\n i18n,\n locale,\n payload,\n payload: { config },\n query: queryFromReq,\n user,\n },\n visibleEntities,\n } = initPageResult\n\n if (!permissions?.collections?.[collectionSlug]?.read) {\n throw new Error('not-found')\n }\n\n const query = queryFromArgs || queryFromReq\n\n const listPreferences = await upsertPreferences<ListPreferences>({\n key: `${collectionSlug}-list`,\n req,\n value: {\n limit: isNumber(query?.limit) ? Number(query.limit) : undefined,\n sort: query?.sort as string,\n },\n })\n\n const {\n routes: { admin: adminRoute },\n } = config\n\n if (collectionConfig) {\n if (!visibleEntities.collections.includes(collectionSlug) && !overrideEntityVisibility) {\n throw new Error('not-found')\n }\n\n const page = isNumber(query?.page) ? Number(query.page) : 0\n\n const limit = listPreferences?.limit || collectionConfig.admin.pagination.defaultLimit\n\n const sort =\n listPreferences?.sort ||\n (typeof collectionConfig.defaultSort === 'string' ? collectionConfig.defaultSort : undefined)\n\n let where = mergeListSearchAndWhere({\n collectionConfig,\n search: typeof query?.search === 'string' ? query.search : undefined,\n where: (query?.where as Where) || undefined,\n })\n\n if (typeof collectionConfig.admin?.baseListFilter === 'function') {\n const baseListFilter = await collectionConfig.admin.baseListFilter({\n limit,\n page,\n req,\n sort,\n })\n\n if (baseListFilter) {\n where = {\n and: [where, baseListFilter].filter(Boolean),\n }\n }\n }\n\n const data = await payload.find({\n collection: collectionSlug,\n depth: 0,\n draft: true,\n fallbackLocale: false,\n includeLockStatus: true,\n limit,\n locale,\n overrideAccess: false,\n page,\n req,\n sort,\n user,\n where: where || {},\n })\n\n const clientCollectionConfig = clientConfig.collections.find((c) => c.slug === collectionSlug)\n\n const { columnState, Table } = renderTable({\n clientCollectionConfig,\n collectionConfig,\n columnPreferences: listPreferences?.columns,\n customCellProps,\n docs: data.docs,\n drawerSlug,\n enableRowSelections,\n i18n: req.i18n,\n payload,\n useAsTitle: collectionConfig.admin.useAsTitle,\n })\n\n const renderedFilters = renderFilters(collectionConfig.fields, req.payload.importMap)\n\n const staticDescription =\n typeof collectionConfig.admin.description === 'function'\n ? collectionConfig.admin.description({ t: i18n.t })\n : collectionConfig.admin.description\n\n const sharedClientProps: ListComponentClientProps = {\n collectionSlug,\n hasCreatePermission: permissions?.collections?.[collectionSlug]?.create,\n newDocumentURL: formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/create`,\n }),\n }\n\n const sharedServerProps: ListComponentServerProps = {\n collectionConfig,\n i18n,\n limit,\n locale: fullLocale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n }\n\n const listViewSlots = renderListViewSlots({\n clientProps: sharedClientProps,\n collectionConfig,\n description: staticDescription,\n payload,\n serverProps: sharedServerProps,\n })\n\n const clientProps: ListViewClientProps = {\n ...listViewSlots,\n ...sharedClientProps,\n columnState,\n disableBulkDelete,\n disableBulkEdit,\n enableRowSelections,\n listPreferences,\n renderedFilters,\n Table,\n }\n\n const isInDrawer = Boolean(drawerSlug)\n\n return {\n List: (\n <Fragment>\n <HydrateAuthProvider permissions={permissions} />\n <ListQueryProvider\n data={data}\n defaultLimit={limit}\n defaultSort={sort}\n modifySearchParams={!isInDrawer}\n >\n {RenderServerComponent({\n clientProps,\n Component: collectionConfig?.admin?.components?.views?.list?.Component,\n Fallback: DefaultListView,\n importMap: payload.importMap,\n serverProps: {\n ...sharedServerProps,\n data,\n listPreferences,\n listSearchableFields: collectionConfig.admin.listSearchableFields,\n },\n })}\n </ListQueryProvider>\n </Fragment>\n ),\n }\n }\n\n throw new Error('not-found')\n}\n\nexport const ListView: React.FC<ListViewArgs> = async (args) => {\n try {\n const { List: RenderedList } = await renderListView({ ...args, enableRowSelections: true })\n return RenderedList\n } catch (error) {\n if (error.message === 'not-found') {\n notFound()\n } else {\n console.error(error) // eslint-disable-line no-console\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["DefaultListView","HydrateAuthProvider","ListQueryProvider","RenderServerComponent","renderFilters","renderTable","upsertPreferences","formatAdminURL","mergeListSearchAndWhere","notFound","isNumber","React","Fragment","renderListViewSlots","resolveAllFilterOptions","generateListMetadata","renderListView","args","clientConfig","customCellProps","disableBulkDelete","disableBulkEdit","drawerSlug","enableRowSelections","initPageResult","overrideEntityVisibility","params","query","queryFromArgs","searchParams","collectionConfig","slug","collectionSlug","locale","fullLocale","permissions","req","i18n","payload","config","queryFromReq","user","visibleEntities","collections","read","Error","listPreferences","key","value","limit","Number","undefined","sort","routes","admin","adminRoute","includes","page","pagination","defaultLimit","defaultSort","where","search","baseListFilter","and","filter","Boolean","data","find","collection","depth","draft","fallbackLocale","includeLockStatus","overrideAccess","clientCollectionConfig","c","columnState","Table","columnPreferences","columns","docs","useAsTitle","renderedFilters","fields","importMap","resolvedFilterOptions","staticDescription","description","t","sharedClientProps","hasCreatePermission","create","newDocumentURL","path","sharedServerProps","listViewSlots","clientProps","serverProps","isInDrawer","List","_jsxs","_jsx","modifySearchParams","Component","components","views","list","Fallback","listSearchableFields","ListView","RenderedList","error","message","console"],"sources":["../../../src/views/List/index.tsx"],"sourcesContent":["import type {\n ListComponentClientProps,\n ListComponentServerProps,\n ListPreferences,\n ListViewClientProps,\n} from '@payloadcms/ui'\nimport type { AdminViewProps, ListQuery, Where } from 'payload'\n\nimport { DefaultListView, HydrateAuthProvider, ListQueryProvider } from '@payloadcms/ui'\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { renderFilters, renderTable, upsertPreferences } from '@payloadcms/ui/rsc'\nimport { formatAdminURL, mergeListSearchAndWhere } from '@payloadcms/ui/shared'\nimport { notFound } from 'next/navigation.js'\nimport { isNumber } from 'payload/shared'\nimport React, { Fragment } from 'react'\n\nimport { renderListViewSlots } from './renderListViewSlots.js'\nimport { resolveAllFilterOptions } from './resolveAllFilterOptions.js'\n\nexport { generateListMetadata } from './meta.js'\n\ntype ListViewArgs = {\n customCellProps?: Record<string, any>\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n enableRowSelections: boolean\n overrideEntityVisibility?: boolean\n query: ListQuery\n} & AdminViewProps\n\nexport const renderListView = async (\n args: ListViewArgs,\n): Promise<{\n List: React.ReactNode\n}> => {\n const {\n clientConfig,\n customCellProps,\n disableBulkDelete,\n disableBulkEdit,\n drawerSlug,\n enableRowSelections,\n initPageResult,\n overrideEntityVisibility,\n params,\n query: queryFromArgs,\n searchParams,\n } = args\n\n const {\n collectionConfig,\n collectionConfig: { slug: collectionSlug },\n locale: fullLocale,\n permissions,\n req,\n req: {\n i18n,\n locale,\n payload,\n payload: { config },\n query: queryFromReq,\n user,\n },\n visibleEntities,\n } = initPageResult\n\n if (!permissions?.collections?.[collectionSlug]?.read) {\n throw new Error('not-found')\n }\n\n const query = queryFromArgs || queryFromReq\n\n const listPreferences = await upsertPreferences<ListPreferences>({\n key: `${collectionSlug}-list`,\n req,\n value: {\n limit: isNumber(query?.limit) ? Number(query.limit) : undefined,\n sort: query?.sort as string,\n },\n })\n\n const {\n routes: { admin: adminRoute },\n } = config\n\n if (collectionConfig) {\n if (!visibleEntities.collections.includes(collectionSlug) && !overrideEntityVisibility) {\n throw new Error('not-found')\n }\n\n const page = isNumber(query?.page) ? Number(query.page) : 0\n\n const limit = listPreferences?.limit || collectionConfig.admin.pagination.defaultLimit\n\n const sort =\n listPreferences?.sort ||\n (typeof collectionConfig.defaultSort === 'string' ? collectionConfig.defaultSort : undefined)\n\n let where = mergeListSearchAndWhere({\n collectionConfig,\n search: typeof query?.search === 'string' ? query.search : undefined,\n where: (query?.where as Where) || undefined,\n })\n\n if (typeof collectionConfig.admin?.baseListFilter === 'function') {\n const baseListFilter = await collectionConfig.admin.baseListFilter({\n limit,\n page,\n req,\n sort,\n })\n\n if (baseListFilter) {\n where = {\n and: [where, baseListFilter].filter(Boolean),\n }\n }\n }\n\n const data = await payload.find({\n collection: collectionSlug,\n depth: 0,\n draft: true,\n fallbackLocale: false,\n includeLockStatus: true,\n limit,\n locale,\n overrideAccess: false,\n page,\n req,\n sort,\n user,\n where: where || {},\n })\n\n const clientCollectionConfig = clientConfig.collections.find((c) => c.slug === collectionSlug)\n\n const { columnState, Table } = renderTable({\n clientCollectionConfig,\n collectionConfig,\n columnPreferences: listPreferences?.columns,\n customCellProps,\n docs: data.docs,\n drawerSlug,\n enableRowSelections,\n i18n: req.i18n,\n payload,\n useAsTitle: collectionConfig.admin.useAsTitle,\n })\n\n const renderedFilters = renderFilters(collectionConfig.fields, req.payload.importMap)\n\n const resolvedFilterOptions = await resolveAllFilterOptions({\n collectionConfig,\n req,\n })\n\n const staticDescription =\n typeof collectionConfig.admin.description === 'function'\n ? collectionConfig.admin.description({ t: i18n.t })\n : collectionConfig.admin.description\n\n const sharedClientProps: ListComponentClientProps = {\n collectionSlug,\n hasCreatePermission: permissions?.collections?.[collectionSlug]?.create,\n newDocumentURL: formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/create`,\n }),\n }\n\n const sharedServerProps: ListComponentServerProps = {\n collectionConfig,\n i18n,\n limit,\n locale: fullLocale,\n params,\n payload,\n permissions,\n searchParams,\n user,\n }\n\n const listViewSlots = renderListViewSlots({\n clientProps: sharedClientProps,\n collectionConfig,\n description: staticDescription,\n payload,\n serverProps: sharedServerProps,\n })\n\n const clientProps: ListViewClientProps = {\n ...listViewSlots,\n ...sharedClientProps,\n columnState,\n disableBulkDelete,\n disableBulkEdit,\n enableRowSelections,\n listPreferences,\n renderedFilters,\n resolvedFilterOptions,\n Table,\n }\n\n const isInDrawer = Boolean(drawerSlug)\n\n return {\n List: (\n <Fragment>\n <HydrateAuthProvider permissions={permissions} />\n <ListQueryProvider\n data={data}\n defaultLimit={limit}\n defaultSort={sort}\n modifySearchParams={!isInDrawer}\n >\n {RenderServerComponent({\n clientProps,\n Component: collectionConfig?.admin?.components?.views?.list?.Component,\n Fallback: DefaultListView,\n importMap: payload.importMap,\n serverProps: {\n ...sharedServerProps,\n data,\n listPreferences,\n listSearchableFields: collectionConfig.admin.listSearchableFields,\n },\n })}\n </ListQueryProvider>\n </Fragment>\n ),\n }\n }\n\n throw new Error('not-found')\n}\n\nexport const ListView: React.FC<ListViewArgs> = async (args) => {\n try {\n const { List: RenderedList } = await renderListView({ ...args, enableRowSelections: true })\n return RenderedList\n } catch (error) {\n if (error.message === 'not-found') {\n notFound()\n } else {\n console.error(error) // eslint-disable-line no-console\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CollectionConfig, PayloadRequest, ResolvedFilterOptions } from 'payload';
|
|
2
|
+
export declare const resolveAllFilterOptions: ({ collectionConfig, req, }: {
|
|
3
|
+
collectionConfig: CollectionConfig;
|
|
4
|
+
req: PayloadRequest;
|
|
5
|
+
}) => Promise<Map<string, ResolvedFilterOptions>>;
|
|
6
|
+
//# sourceMappingURL=resolveAllFilterOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveAllFilterOptions.d.ts","sourceRoot":"","sources":["../../../src/views/List/resolveAllFilterOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAKtF,eAAO,MAAM,uBAAuB,+BAGjC;IACD,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAyB7C,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { resolveFilterOptions } from '@payloadcms/ui/rsc';
|
|
2
|
+
import { fieldIsHiddenOrDisabled } from 'payload/shared';
|
|
3
|
+
export const resolveAllFilterOptions = async ({
|
|
4
|
+
collectionConfig,
|
|
5
|
+
req
|
|
6
|
+
}) => {
|
|
7
|
+
const resolvedFilterOptions = new Map();
|
|
8
|
+
await Promise.all(collectionConfig.fields.map(async field => {
|
|
9
|
+
if (fieldIsHiddenOrDisabled(field)) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
if ('name' in field && 'filterOptions' in field && field.filterOptions) {
|
|
13
|
+
const options = await resolveFilterOptions(field.filterOptions, {
|
|
14
|
+
id: undefined,
|
|
15
|
+
blockData: undefined,
|
|
16
|
+
data: {},
|
|
17
|
+
relationTo: field.relationTo,
|
|
18
|
+
req,
|
|
19
|
+
siblingData: {},
|
|
20
|
+
user: req.user
|
|
21
|
+
});
|
|
22
|
+
resolvedFilterOptions.set(field.name, options);
|
|
23
|
+
}
|
|
24
|
+
}));
|
|
25
|
+
return resolvedFilterOptions;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=resolveAllFilterOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveAllFilterOptions.js","names":["resolveFilterOptions","fieldIsHiddenOrDisabled","resolveAllFilterOptions","collectionConfig","req","resolvedFilterOptions","Map","Promise","all","fields","map","field","filterOptions","options","id","undefined","blockData","data","relationTo","siblingData","user","set","name"],"sources":["../../../src/views/List/resolveAllFilterOptions.ts"],"sourcesContent":["import type { CollectionConfig, PayloadRequest, ResolvedFilterOptions } from 'payload'\n\nimport { resolveFilterOptions } from '@payloadcms/ui/rsc'\nimport { fieldIsHiddenOrDisabled } from 'payload/shared'\n\nexport const resolveAllFilterOptions = async ({\n collectionConfig,\n req,\n}: {\n collectionConfig: CollectionConfig\n req: PayloadRequest\n}): Promise<Map<string, ResolvedFilterOptions>> => {\n const resolvedFilterOptions = new Map<string, ResolvedFilterOptions>()\n\n await Promise.all(\n collectionConfig.fields.map(async (field) => {\n if (fieldIsHiddenOrDisabled(field)) {\n return\n }\n\n if ('name' in field && 'filterOptions' in field && field.filterOptions) {\n const options = await resolveFilterOptions(field.filterOptions, {\n id: undefined,\n blockData: undefined,\n data: {}, // use empty object to prevent breaking queries when accessing properties of data\n relationTo: field.relationTo,\n req,\n siblingData: {}, // use empty object to prevent breaking queries when accessing properties of data\n user: req.user,\n })\n resolvedFilterOptions.set(field.name, options)\n }\n }),\n )\n\n return resolvedFilterOptions\n}\n"],"mappings":"AAEA,SAASA,oBAAoB,QAAQ;AACrC,SAASC,uBAAuB,QAAQ;AAExC,OAAO,MAAMC,uBAAA,GAA0B,MAAAA,CAAO;EAC5CC,gBAAgB;EAChBC;AAAG,CAIJ;EACC,MAAMC,qBAAA,GAAwB,IAAIC,GAAA;EAElC,MAAMC,OAAA,CAAQC,GAAG,CACfL,gBAAA,CAAiBM,MAAM,CAACC,GAAG,CAAC,MAAOC,KAAA;IACjC,IAAIV,uBAAA,CAAwBU,KAAA,GAAQ;MAClC;IACF;IAEA,IAAI,UAAUA,KAAA,IAAS,mBAAmBA,KAAA,IAASA,KAAA,CAAMC,aAAa,EAAE;MACtE,MAAMC,OAAA,GAAU,MAAMb,oBAAA,CAAqBW,KAAA,CAAMC,aAAa,EAAE;QAC9DE,EAAA,EAAIC,SAAA;QACJC,SAAA,EAAWD,SAAA;QACXE,IAAA,EAAM,CAAC;QACPC,UAAA,EAAYP,KAAA,CAAMO,UAAU;QAC5Bd,GAAA;QACAe,WAAA,EAAa,CAAC;QACdC,IAAA,EAAMhB,GAAA,CAAIgB;MACZ;MACAf,qBAAA,CAAsBgB,GAAG,CAACV,KAAA,CAAMW,IAAI,EAAET,OAAA;IACxC;EACF;EAGF,OAAOR,qBAAA;AACT","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/LivePreview/Context/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/LivePreview/Context/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAK7D,OAAO,KAA2C,MAAM,OAAO,CAAA;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAM1D,MAAM,MAAM,wBAAwB,GAAG;IACrC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAA;IAC9C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,UAAU,CAAC,EAAE;QACX,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;IACD,WAAW,EAAE,WAAW,EAAE,CAAA;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,eAAe,CAAC,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,iBAAiB,CAAC,CAAA;IACtE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAClC,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA6KlE,CAAA"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
4
|
import { DndContext } from '@dnd-kit/core';
|
|
5
|
+
import { useConfig } from '@payloadcms/ui';
|
|
5
6
|
import { fieldSchemaToJSON } from 'payload/shared';
|
|
6
7
|
import React, { useCallback, useEffect, useState } from 'react';
|
|
7
8
|
import { customCollisionDetection } from './collisionDetection.js';
|
|
@@ -21,6 +22,9 @@ export const LivePreviewProvider = ({
|
|
|
21
22
|
const [listeningForMessages, setListeningForMessages] = useState(false);
|
|
22
23
|
const iframeRef = React.useRef(null);
|
|
23
24
|
const [iframeHasLoaded, setIframeHasLoaded] = useState(false);
|
|
25
|
+
const {
|
|
26
|
+
config
|
|
27
|
+
} = useConfig();
|
|
24
28
|
const [zoom, setZoom] = useState(1);
|
|
25
29
|
const [position, setPosition] = useState({
|
|
26
30
|
x: 0,
|
|
@@ -36,7 +40,7 @@ export const LivePreviewProvider = ({
|
|
|
36
40
|
});
|
|
37
41
|
const [breakpoint, setBreakpoint] = React.useState('responsive');
|
|
38
42
|
const [fieldSchemaJSON] = useState(() => {
|
|
39
|
-
return fieldSchemaToJSON(fieldSchema);
|
|
43
|
+
return fieldSchemaToJSON(fieldSchema, config);
|
|
40
44
|
});
|
|
41
45
|
// The toolbar needs to freely drag and drop around the page
|
|
42
46
|
const handleDragEnd = ev => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["DndContext","fieldSchemaToJSON","React","useCallback","useEffect","useState","customCollisionDetection","LivePreviewContext","sizeReducer","LivePreviewProvider","breakpoints","children","fieldSchema","isPopupOpen","openPopupWindow","popupRef","url","previewWindowType","setPreviewWindowType","appIsReady","setAppIsReady","listeningForMessages","setListeningForMessages","iframeRef","useRef","iframeHasLoaded","setIframeHasLoaded","zoom","setZoom","position","setPosition","x","y","size","setSize","useReducer","height","width","measuredDeviceSize","setMeasuredDeviceSize","breakpoint","setBreakpoint","fieldSchemaJSON","handleDragEnd","ev","over","id","newPos","delta","setWidth","type","value","setHeight","foundBreakpoint","find","bp","name","handleMessage","event","startsWith","origin","data","ready","window","addEventListener","removeEventListener","handleWindowChange","newPreviewWindowType","_jsx","Provider","setToolbarPosition","toolbarPosition","collisionDetection","onDragEnd"],"sources":["../../../../src/views/LivePreview/Context/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientField, LivePreviewConfig } from 'payload'\n\nimport { DndContext } from '@dnd-kit/core'\nimport { fieldSchemaToJSON } from 'payload/shared'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { usePopupWindow } from '../usePopupWindow.js'\n\nimport { customCollisionDetection } from './collisionDetection.js'\nimport { LivePreviewContext } from './context.js'\nimport { sizeReducer } from './sizeReducer.js'\n\nexport type LivePreviewProviderProps = {\n appIsReady?: boolean\n breakpoints?: LivePreviewConfig['breakpoints']\n children: React.ReactNode\n deviceSize?: {\n height: number\n width: number\n }\n fieldSchema: ClientField[]\n isPopupOpen?: boolean\n openPopupWindow?: ReturnType<typeof usePopupWindow>['openPopupWindow']\n popupRef?: React.RefObject<Window>\n url?: string\n}\n\nexport const LivePreviewProvider: React.FC<LivePreviewProviderProps> = ({\n breakpoints,\n children,\n fieldSchema,\n isPopupOpen,\n openPopupWindow,\n popupRef,\n url,\n}) => {\n const [previewWindowType, setPreviewWindowType] = useState<'iframe' | 'popup'>('iframe')\n\n const [appIsReady, setAppIsReady] = useState(false)\n const [listeningForMessages, setListeningForMessages] = useState(false)\n\n const iframeRef = React.useRef<HTMLIFrameElement>(null)\n\n const [iframeHasLoaded, setIframeHasLoaded] = useState(false)\n\n const [zoom, setZoom] = useState(1)\n\n const [position, setPosition] = useState({ x: 0, y: 0 })\n\n const [size, setSize] = React.useReducer(sizeReducer, { height: 0, width: 0 })\n\n const [measuredDeviceSize, setMeasuredDeviceSize] = useState({\n height: 0,\n width: 0,\n })\n\n const [breakpoint, setBreakpoint] =\n React.useState<LivePreviewConfig['breakpoints'][0]['name']>('responsive')\n\n const [fieldSchemaJSON] = useState(() => {\n return fieldSchemaToJSON(fieldSchema)\n })\n\n // The toolbar needs to freely drag and drop around the page\n const handleDragEnd = (ev) => {\n // only update position if the toolbar is completely within the preview area\n // otherwise reset it back to the previous position\n // TODO: reset to the nearest edge of the preview area\n if (ev.over && ev.over.id === 'live-preview-area') {\n const newPos = {\n x: position.x + ev.delta.x,\n y: position.y + ev.delta.y,\n }\n\n setPosition(newPos)\n } else {\n // reset\n }\n }\n\n const setWidth = useCallback(\n (width) => {\n setSize({ type: 'width', value: width })\n },\n [setSize],\n )\n\n const setHeight = useCallback(\n (height) => {\n setSize({ type: 'height', value: height })\n },\n [setSize],\n )\n\n // explicitly set new width and height when as new breakpoints are selected\n // exclude `custom` breakpoint as it is handled by the `setWidth` and `setHeight` directly\n useEffect(() => {\n const foundBreakpoint = breakpoints?.find((bp) => bp.name === breakpoint)\n\n if (\n foundBreakpoint &&\n breakpoint !== 'responsive' &&\n breakpoint !== 'custom' &&\n typeof foundBreakpoint?.width === 'number' &&\n typeof foundBreakpoint?.height === 'number'\n ) {\n setSize({\n type: 'reset',\n value: {\n height: foundBreakpoint.height,\n width: foundBreakpoint.width,\n },\n })\n }\n }, [breakpoint, breakpoints])\n\n // Receive the `ready` message from the popup window\n // This indicates that the app is ready to receive `window.postMessage` events\n // This is also the only cross-origin way of detecting when a popup window has loaded\n // Unlike iframe elements which have an `onLoad` handler, there is no way to access `window.open` on popups\n useEffect(() => {\n const handleMessage = (event: MessageEvent) => {\n if (\n url?.startsWith(event.origin) &&\n event.data &&\n typeof event.data === 'object' &&\n event.data.type === 'payload-live-preview'\n ) {\n if (event.data.ready) {\n setAppIsReady(true)\n }\n }\n }\n\n window.addEventListener('message', handleMessage)\n\n setListeningForMessages(true)\n\n return () => {\n window.removeEventListener('message', handleMessage)\n }\n }, [url, listeningForMessages])\n\n const handleWindowChange = useCallback(\n (type: 'iframe' | 'popup') => {\n setAppIsReady(false)\n setPreviewWindowType(type)\n if (type === 'popup') {\n openPopupWindow()\n }\n },\n [openPopupWindow],\n )\n\n // when the user closes the popup window, switch back to the iframe\n // the `usePopupWindow` reports the `isPopupOpen` state for us to use here\n useEffect(() => {\n const newPreviewWindowType = isPopupOpen ? 'popup' : 'iframe'\n\n if (newPreviewWindowType !== previewWindowType) {\n handleWindowChange('iframe')\n }\n }, [previewWindowType, isPopupOpen, handleWindowChange])\n\n return (\n <LivePreviewContext.Provider\n value={{\n appIsReady,\n breakpoint,\n breakpoints,\n fieldSchemaJSON,\n iframeHasLoaded,\n iframeRef,\n isPopupOpen,\n measuredDeviceSize,\n openPopupWindow,\n popupRef,\n previewWindowType,\n setAppIsReady,\n setBreakpoint,\n setHeight,\n setIframeHasLoaded,\n setMeasuredDeviceSize,\n setPreviewWindowType: handleWindowChange,\n setSize,\n setToolbarPosition: setPosition,\n setWidth,\n setZoom,\n size,\n toolbarPosition: position,\n url,\n zoom,\n }}\n >\n <DndContext collisionDetection={customCollisionDetection} onDragEnd={handleDragEnd}>\n {listeningForMessages && children}\n </DndContext>\n </LivePreviewContext.Provider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["DndContext","useConfig","fieldSchemaToJSON","React","useCallback","useEffect","useState","customCollisionDetection","LivePreviewContext","sizeReducer","LivePreviewProvider","breakpoints","children","fieldSchema","isPopupOpen","openPopupWindow","popupRef","url","previewWindowType","setPreviewWindowType","appIsReady","setAppIsReady","listeningForMessages","setListeningForMessages","iframeRef","useRef","iframeHasLoaded","setIframeHasLoaded","config","zoom","setZoom","position","setPosition","x","y","size","setSize","useReducer","height","width","measuredDeviceSize","setMeasuredDeviceSize","breakpoint","setBreakpoint","fieldSchemaJSON","handleDragEnd","ev","over","id","newPos","delta","setWidth","type","value","setHeight","foundBreakpoint","find","bp","name","handleMessage","event","startsWith","origin","data","ready","window","addEventListener","removeEventListener","handleWindowChange","newPreviewWindowType","_jsx","Provider","setToolbarPosition","toolbarPosition","collisionDetection","onDragEnd"],"sources":["../../../../src/views/LivePreview/Context/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientField, LivePreviewConfig } from 'payload'\n\nimport { DndContext } from '@dnd-kit/core'\nimport { useConfig } from '@payloadcms/ui'\nimport { fieldSchemaToJSON } from 'payload/shared'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { usePopupWindow } from '../usePopupWindow.js'\n\nimport { customCollisionDetection } from './collisionDetection.js'\nimport { LivePreviewContext } from './context.js'\nimport { sizeReducer } from './sizeReducer.js'\n\nexport type LivePreviewProviderProps = {\n appIsReady?: boolean\n breakpoints?: LivePreviewConfig['breakpoints']\n children: React.ReactNode\n deviceSize?: {\n height: number\n width: number\n }\n fieldSchema: ClientField[]\n isPopupOpen?: boolean\n openPopupWindow?: ReturnType<typeof usePopupWindow>['openPopupWindow']\n popupRef?: React.RefObject<Window>\n url?: string\n}\n\nexport const LivePreviewProvider: React.FC<LivePreviewProviderProps> = ({\n breakpoints,\n children,\n fieldSchema,\n isPopupOpen,\n openPopupWindow,\n popupRef,\n url,\n}) => {\n const [previewWindowType, setPreviewWindowType] = useState<'iframe' | 'popup'>('iframe')\n\n const [appIsReady, setAppIsReady] = useState(false)\n const [listeningForMessages, setListeningForMessages] = useState(false)\n\n const iframeRef = React.useRef<HTMLIFrameElement>(null)\n\n const [iframeHasLoaded, setIframeHasLoaded] = useState(false)\n const { config } = useConfig()\n\n const [zoom, setZoom] = useState(1)\n\n const [position, setPosition] = useState({ x: 0, y: 0 })\n\n const [size, setSize] = React.useReducer(sizeReducer, { height: 0, width: 0 })\n\n const [measuredDeviceSize, setMeasuredDeviceSize] = useState({\n height: 0,\n width: 0,\n })\n\n const [breakpoint, setBreakpoint] =\n React.useState<LivePreviewConfig['breakpoints'][0]['name']>('responsive')\n\n const [fieldSchemaJSON] = useState(() => {\n return fieldSchemaToJSON(fieldSchema, config)\n })\n\n // The toolbar needs to freely drag and drop around the page\n const handleDragEnd = (ev) => {\n // only update position if the toolbar is completely within the preview area\n // otherwise reset it back to the previous position\n // TODO: reset to the nearest edge of the preview area\n if (ev.over && ev.over.id === 'live-preview-area') {\n const newPos = {\n x: position.x + ev.delta.x,\n y: position.y + ev.delta.y,\n }\n\n setPosition(newPos)\n } else {\n // reset\n }\n }\n\n const setWidth = useCallback(\n (width) => {\n setSize({ type: 'width', value: width })\n },\n [setSize],\n )\n\n const setHeight = useCallback(\n (height) => {\n setSize({ type: 'height', value: height })\n },\n [setSize],\n )\n\n // explicitly set new width and height when as new breakpoints are selected\n // exclude `custom` breakpoint as it is handled by the `setWidth` and `setHeight` directly\n useEffect(() => {\n const foundBreakpoint = breakpoints?.find((bp) => bp.name === breakpoint)\n\n if (\n foundBreakpoint &&\n breakpoint !== 'responsive' &&\n breakpoint !== 'custom' &&\n typeof foundBreakpoint?.width === 'number' &&\n typeof foundBreakpoint?.height === 'number'\n ) {\n setSize({\n type: 'reset',\n value: {\n height: foundBreakpoint.height,\n width: foundBreakpoint.width,\n },\n })\n }\n }, [breakpoint, breakpoints])\n\n // Receive the `ready` message from the popup window\n // This indicates that the app is ready to receive `window.postMessage` events\n // This is also the only cross-origin way of detecting when a popup window has loaded\n // Unlike iframe elements which have an `onLoad` handler, there is no way to access `window.open` on popups\n useEffect(() => {\n const handleMessage = (event: MessageEvent) => {\n if (\n url?.startsWith(event.origin) &&\n event.data &&\n typeof event.data === 'object' &&\n event.data.type === 'payload-live-preview'\n ) {\n if (event.data.ready) {\n setAppIsReady(true)\n }\n }\n }\n\n window.addEventListener('message', handleMessage)\n\n setListeningForMessages(true)\n\n return () => {\n window.removeEventListener('message', handleMessage)\n }\n }, [url, listeningForMessages])\n\n const handleWindowChange = useCallback(\n (type: 'iframe' | 'popup') => {\n setAppIsReady(false)\n setPreviewWindowType(type)\n if (type === 'popup') {\n openPopupWindow()\n }\n },\n [openPopupWindow],\n )\n\n // when the user closes the popup window, switch back to the iframe\n // the `usePopupWindow` reports the `isPopupOpen` state for us to use here\n useEffect(() => {\n const newPreviewWindowType = isPopupOpen ? 'popup' : 'iframe'\n\n if (newPreviewWindowType !== previewWindowType) {\n handleWindowChange('iframe')\n }\n }, [previewWindowType, isPopupOpen, handleWindowChange])\n\n return (\n <LivePreviewContext.Provider\n value={{\n appIsReady,\n breakpoint,\n breakpoints,\n fieldSchemaJSON,\n iframeHasLoaded,\n iframeRef,\n isPopupOpen,\n measuredDeviceSize,\n openPopupWindow,\n popupRef,\n previewWindowType,\n setAppIsReady,\n setBreakpoint,\n setHeight,\n setIframeHasLoaded,\n setMeasuredDeviceSize,\n setPreviewWindowType: handleWindowChange,\n setSize,\n setToolbarPosition: setPosition,\n setWidth,\n setZoom,\n size,\n toolbarPosition: position,\n url,\n zoom,\n }}\n >\n <DndContext collisionDetection={customCollisionDetection} onDragEnd={handleDragEnd}>\n {listeningForMessages && children}\n </DndContext>\n </LivePreviewContext.Provider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/views/Version/RenderFieldsToDiff/DiffCollapser/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/views/Version/RenderFieldsToDiff/DiffCollapser/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAI1C,OAAO,KAAmB,MAAM,OAAO,CAAA;AAGvC,OAAO,cAAc,CAAA;AAKrB,KAAK,KAAK,GACN;IAEE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,UAAU,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC7B,OAAO,EAAE,OAAO,CAAA;CACjB,GACD;IAEE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,WAAW,CAAA;IAClB,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,EAAE,IAAI,CAAA;IAChB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC7B,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAEL,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA6EzC,CAAA"}
|
|
@@ -1,76 +1,139 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { c as _c } from "react/compiler-runtime";
|
|
1
4
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { ChevronIcon, Pill, useTranslation } from '@payloadcms/ui';
|
|
5
|
+
import { ChevronIcon, Pill, useConfig, useTranslation } from '@payloadcms/ui';
|
|
3
6
|
import { fieldIsArrayType, fieldIsBlockType } from 'payload/shared';
|
|
4
7
|
import React, { useState } from 'react';
|
|
5
8
|
import Label from '../Label/index.js';
|
|
6
9
|
import { countChangedFields, countChangedFieldsInRows } from '../utilities/countChangedFields.js';
|
|
7
10
|
const baseClass = 'diff-collapser';
|
|
8
|
-
export const DiffCollapser =
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
export const DiffCollapser = t0 => {
|
|
12
|
+
const $ = _c(20);
|
|
13
|
+
const {
|
|
14
|
+
children,
|
|
15
|
+
comparison,
|
|
16
|
+
field,
|
|
17
|
+
fields,
|
|
18
|
+
initCollapsed: t1,
|
|
19
|
+
isIterable: t2,
|
|
20
|
+
label,
|
|
21
|
+
locales,
|
|
22
|
+
version
|
|
23
|
+
} = t0;
|
|
24
|
+
const initCollapsed = t1 === undefined ? false : t1;
|
|
25
|
+
const isIterable = t2 === undefined ? false : t2;
|
|
19
26
|
const {
|
|
20
27
|
t
|
|
21
28
|
} = useTranslation();
|
|
22
29
|
const [isCollapsed, setIsCollapsed] = useState(initCollapsed);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
30
|
+
const {
|
|
31
|
+
config
|
|
32
|
+
} = useConfig();
|
|
33
|
+
let t3;
|
|
34
|
+
if ($[0] !== children || $[1] !== comparison || $[2] !== config || $[3] !== field || $[4] !== fields || $[5] !== isCollapsed || $[6] !== isIterable || $[7] !== label || $[8] !== locales || $[9] !== t || $[10] !== version) {
|
|
35
|
+
let changeCount;
|
|
36
|
+
if (isIterable) {
|
|
37
|
+
if (!fieldIsArrayType(field) && !fieldIsBlockType(field)) {
|
|
38
|
+
throw new Error("DiffCollapser: field must be an array or blocks field when isIterable is true");
|
|
39
|
+
}
|
|
40
|
+
let t4;
|
|
41
|
+
if ($[12] !== comparison) {
|
|
42
|
+
t4 = comparison ?? [];
|
|
43
|
+
$[12] = comparison;
|
|
44
|
+
$[13] = t4;
|
|
45
|
+
} else {
|
|
46
|
+
t4 = $[13];
|
|
47
|
+
}
|
|
48
|
+
const comparisonRows = t4;
|
|
49
|
+
let t5;
|
|
50
|
+
if ($[14] !== version) {
|
|
51
|
+
t5 = version ?? [];
|
|
52
|
+
$[14] = version;
|
|
53
|
+
$[15] = t5;
|
|
54
|
+
} else {
|
|
55
|
+
t5 = $[15];
|
|
56
|
+
}
|
|
57
|
+
const versionRows = t5;
|
|
58
|
+
if (!Array.isArray(comparisonRows) || !Array.isArray(versionRows)) {
|
|
59
|
+
throw new Error("DiffCollapser: comparison and version must be arrays when isIterable is true");
|
|
60
|
+
}
|
|
61
|
+
changeCount = countChangedFieldsInRows({
|
|
62
|
+
comparisonRows,
|
|
63
|
+
config,
|
|
64
|
+
field,
|
|
65
|
+
locales,
|
|
66
|
+
versionRows
|
|
67
|
+
});
|
|
68
|
+
} else {
|
|
69
|
+
changeCount = countChangedFields({
|
|
70
|
+
comparison,
|
|
71
|
+
config,
|
|
72
|
+
fields,
|
|
73
|
+
locales,
|
|
74
|
+
version
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
const t4 = isCollapsed && `${baseClass}__content--is-collapsed`;
|
|
78
|
+
let t5;
|
|
79
|
+
if ($[16] !== t4) {
|
|
80
|
+
t5 = [`${baseClass}__content`, t4].filter(Boolean);
|
|
81
|
+
$[16] = t4;
|
|
82
|
+
$[17] = t5;
|
|
83
|
+
} else {
|
|
84
|
+
t5 = $[17];
|
|
27
85
|
}
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
if (
|
|
31
|
-
|
|
86
|
+
const contentClassNames = t5.join(" ");
|
|
87
|
+
let t6;
|
|
88
|
+
if ($[18] !== isCollapsed) {
|
|
89
|
+
t6 = () => setIsCollapsed(!isCollapsed);
|
|
90
|
+
$[18] = isCollapsed;
|
|
91
|
+
$[19] = t6;
|
|
92
|
+
} else {
|
|
93
|
+
t6 = $[19];
|
|
32
94
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
95
|
+
t3 = _jsxs("div", {
|
|
96
|
+
className: baseClass,
|
|
97
|
+
children: [_jsxs(Label, {
|
|
98
|
+
children: [_jsx("button", {
|
|
99
|
+
"aria-label": isCollapsed ? "Expand" : "Collapse",
|
|
100
|
+
className: `${baseClass}__toggle-button`,
|
|
101
|
+
onClick: t6,
|
|
102
|
+
type: "button",
|
|
103
|
+
children: _jsx(ChevronIcon, {
|
|
104
|
+
direction: isCollapsed ? "right" : "down"
|
|
105
|
+
})
|
|
106
|
+
}), _jsx("span", {
|
|
107
|
+
className: `${baseClass}__label`,
|
|
108
|
+
children: label
|
|
109
|
+
}), changeCount > 0 && _jsx(Pill, {
|
|
110
|
+
className: `${baseClass}__field-change-count`,
|
|
111
|
+
pillStyle: "light-gray",
|
|
112
|
+
size: "small",
|
|
113
|
+
children: t("version:changedFieldsCount", {
|
|
114
|
+
count: changeCount
|
|
115
|
+
})
|
|
116
|
+
})]
|
|
117
|
+
}), _jsx("div", {
|
|
118
|
+
className: contentClassNames,
|
|
119
|
+
children
|
|
120
|
+
})]
|
|
38
121
|
});
|
|
122
|
+
$[0] = children;
|
|
123
|
+
$[1] = comparison;
|
|
124
|
+
$[2] = config;
|
|
125
|
+
$[3] = field;
|
|
126
|
+
$[4] = fields;
|
|
127
|
+
$[5] = isCollapsed;
|
|
128
|
+
$[6] = isIterable;
|
|
129
|
+
$[7] = label;
|
|
130
|
+
$[8] = locales;
|
|
131
|
+
$[9] = t;
|
|
132
|
+
$[10] = version;
|
|
133
|
+
$[11] = t3;
|
|
39
134
|
} else {
|
|
40
|
-
|
|
41
|
-
comparison,
|
|
42
|
-
fields,
|
|
43
|
-
locales,
|
|
44
|
-
version
|
|
45
|
-
});
|
|
135
|
+
t3 = $[11];
|
|
46
136
|
}
|
|
47
|
-
|
|
48
|
-
return /*#__PURE__*/_jsxs("div", {
|
|
49
|
-
className: baseClass,
|
|
50
|
-
children: [/*#__PURE__*/_jsxs(Label, {
|
|
51
|
-
children: [/*#__PURE__*/_jsx("button", {
|
|
52
|
-
"aria-label": isCollapsed ? 'Expand' : 'Collapse',
|
|
53
|
-
className: `${baseClass}__toggle-button`,
|
|
54
|
-
onClick: () => setIsCollapsed(!isCollapsed),
|
|
55
|
-
type: "button",
|
|
56
|
-
children: /*#__PURE__*/_jsx(ChevronIcon, {
|
|
57
|
-
direction: isCollapsed ? 'right' : 'down'
|
|
58
|
-
})
|
|
59
|
-
}), /*#__PURE__*/_jsx("span", {
|
|
60
|
-
className: `${baseClass}__label`,
|
|
61
|
-
children: label
|
|
62
|
-
}), changeCount > 0 && /*#__PURE__*/_jsx(Pill, {
|
|
63
|
-
className: `${baseClass}__field-change-count`,
|
|
64
|
-
pillStyle: "light-gray",
|
|
65
|
-
size: "small",
|
|
66
|
-
children: t('version:changedFieldsCount', {
|
|
67
|
-
count: changeCount
|
|
68
|
-
})
|
|
69
|
-
})]
|
|
70
|
-
}), /*#__PURE__*/_jsx("div", {
|
|
71
|
-
className: contentClassNames,
|
|
72
|
-
children: children
|
|
73
|
-
})]
|
|
74
|
-
});
|
|
137
|
+
return t3;
|
|
75
138
|
};
|
|
76
139
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["ChevronIcon","Pill","useTranslation","fieldIsArrayType","fieldIsBlockType","React","useState","Label","countChangedFields","countChangedFieldsInRows","baseClass","DiffCollapser","children","comparison","field","fields","initCollapsed","isIterable","label","locales","version","t","isCollapsed","setIsCollapsed","changeCount","Error","comparisonRows","versionRows","Array","isArray","
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","ChevronIcon","Pill","useConfig","useTranslation","fieldIsArrayType","fieldIsBlockType","React","useState","Label","countChangedFields","countChangedFieldsInRows","baseClass","DiffCollapser","t0","$","children","comparison","field","fields","initCollapsed","t1","isIterable","t2","label","locales","version","undefined","t","isCollapsed","setIsCollapsed","config","t3","changeCount","Error","t4","comparisonRows","t5","versionRows","Array","isArray","filter","Boolean","contentClassNames","join","t6","_jsxs","className","_jsx","onClick","type","direction","pillStyle","size","count"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/DiffCollapser/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientField } from 'payload'\n\nimport { ChevronIcon, Pill, useConfig, useTranslation } from '@payloadcms/ui'\nimport { fieldIsArrayType, fieldIsBlockType } from 'payload/shared'\nimport React, { useState } from 'react'\n\nimport Label from '../Label/index.js'\nimport './index.scss'\nimport { countChangedFields, countChangedFieldsInRows } from '../utilities/countChangedFields.js'\n\nconst baseClass = 'diff-collapser'\n\ntype Props =\n | {\n // fields collapser\n children: React.ReactNode\n comparison: unknown\n field?: never\n fields: ClientField[]\n initCollapsed?: boolean\n isIterable?: false\n label: React.ReactNode\n locales: string[] | undefined\n version: unknown\n }\n | {\n // iterable collapser\n children: React.ReactNode\n comparison?: unknown\n field: ClientField\n fields?: never\n initCollapsed?: boolean\n isIterable: true\n label: React.ReactNode\n locales: string[] | undefined\n version: unknown\n }\n\nexport const DiffCollapser: React.FC<Props> = ({\n children,\n comparison,\n field,\n fields,\n initCollapsed = false,\n isIterable = false,\n label,\n locales,\n version,\n}) => {\n const { t } = useTranslation()\n const [isCollapsed, setIsCollapsed] = useState(initCollapsed)\n const { config } = useConfig()\n\n let changeCount = 0\n\n if (isIterable) {\n if (!fieldIsArrayType(field) && !fieldIsBlockType(field)) {\n throw new Error(\n 'DiffCollapser: field must be an array or blocks field when isIterable is true',\n )\n }\n const comparisonRows = comparison ?? []\n const versionRows = version ?? []\n\n if (!Array.isArray(comparisonRows) || !Array.isArray(versionRows)) {\n throw new Error(\n 'DiffCollapser: comparison and version must be arrays when isIterable is true',\n )\n }\n\n changeCount = countChangedFieldsInRows({\n comparisonRows,\n config,\n field,\n locales,\n versionRows,\n })\n } else {\n changeCount = countChangedFields({\n comparison,\n config,\n fields,\n locales,\n version,\n })\n }\n\n const contentClassNames = [\n `${baseClass}__content`,\n isCollapsed && `${baseClass}__content--is-collapsed`,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div className={baseClass}>\n <Label>\n <button\n aria-label={isCollapsed ? 'Expand' : 'Collapse'}\n className={`${baseClass}__toggle-button`}\n onClick={() => setIsCollapsed(!isCollapsed)}\n type=\"button\"\n >\n <ChevronIcon direction={isCollapsed ? 'right' : 'down'} />\n </button>\n <span className={`${baseClass}__label`}>{label}</span>\n {changeCount > 0 && (\n <Pill className={`${baseClass}__field-change-count`} pillStyle=\"light-gray\" size=\"small\">\n {t('version:changedFieldsCount', { count: changeCount })}\n </Pill>\n )}\n </Label>\n <div className={contentClassNames}>{children}</div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildVersionFields.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/RenderFieldsToDiff/buildVersionFields.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAGV,oBAAoB,EACpB,KAAK,EACL,oBAAoB,EACpB,oBAAoB,EACpB,UAAU,
|
|
1
|
+
{"version":3,"file":"buildVersionFields.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/RenderFieldsToDiff/buildVersionFields.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAGV,oBAAoB,EACpB,KAAK,EACL,oBAAoB,EACpB,oBAAoB,EACpB,UAAU,EAEV,gBAAgB,EAChB,cAAc,EACd,yBAAyB,EACzB,YAAY,EACb,MAAM,SAAS,CAAA;AAWhB,MAAM,MAAM,sBAAsB,GAAG;IACnC,eAAe,EAAE,oBAAoB,CAAA;IACrC,qBAAqB,EAAE,MAAM,CAAA;IAC7B,oBAAoB,EAAE,OAAO,CAC3B,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC,CACjF,CAAA;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EACZ;QACE,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,CAAA;KACzC,GACD,IAAI,CAAA;IACR,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,YAAY,EAAE,OAAO,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;IACnB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,yNAe5B,sBAAsB,KAAG;IAC1B,aAAa,EAAE,YAAY,EAAE,CAAA;CAqG9B,CAAA"}
|
|
@@ -247,12 +247,14 @@ const buildVersionField = ({
|
|
|
247
247
|
for (let i = 0; i < blocksValue.length; i++) {
|
|
248
248
|
const comparisonRow = comparisonValue?.[i] || {};
|
|
249
249
|
const versionRow = blocksValue[i] || {};
|
|
250
|
-
const
|
|
250
|
+
const blockSlugToMatch = versionRow.blockType;
|
|
251
|
+
const versionBlock = req.payload.blocks[blockSlugToMatch] ?? (field.blockReferences ?? field.blocks).find(block => typeof block !== 'string' && block.slug === blockSlugToMatch);
|
|
251
252
|
let fields = [];
|
|
252
253
|
if (versionRow.blockType === comparisonRow.blockType) {
|
|
253
254
|
fields = versionBlock.fields;
|
|
254
255
|
} else {
|
|
255
|
-
const
|
|
256
|
+
const comparisonBlockSlugToMatch = versionRow.blockType;
|
|
257
|
+
const comparisonBlock = req.payload.blocks[comparisonBlockSlugToMatch] ?? (field.blockReferences ?? field.blocks).find(block => typeof block !== 'string' && block.slug === comparisonBlockSlugToMatch);
|
|
256
258
|
if (comparisonBlock) {
|
|
257
259
|
fields = getUniqueListBy([...versionBlock.fields, ...comparisonBlock.fields], 'name');
|
|
258
260
|
} else {
|