payload-nested-docs-page-tree 1.6.7 → 1.6.9

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.
@@ -0,0 +1,76 @@
1
+ import { flattenTopLevelFields } from 'payload/shared';
2
+ function isRecord(value) {
3
+ return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
4
+ }
5
+ export function hasUniqueDocIDs(docs) {
6
+ return docs.every(({ id })=>typeof id === 'string' || typeof id === 'number') && new Set(docs.map(({ id })=>String(id))).size === docs.length;
7
+ }
8
+ export function getCompleteListDocs(data) {
9
+ if (!Array.isArray(data?.docs) || data.page !== 1 || data.hasNextPage || data.hasPrevPage || data.docs.length !== data.totalDocs || !hasUniqueDocIDs(data.docs)) {
10
+ return undefined;
11
+ }
12
+ // Native historical display status is not the plugin's current-document status.
13
+ return data.docs.map(({ _displayStatus: _nativeStatus, ...doc })=>doc);
14
+ }
15
+ export function getMissingListSelect(docs, select) {
16
+ function missing(selection, records) {
17
+ const result = {};
18
+ for (const [key, value] of Object.entries(selection)){
19
+ if (value === true) {
20
+ if (records.some((record)=>!isRecord(record) || !Object.hasOwn(record, key))) {
21
+ result[key] = true;
22
+ }
23
+ } else if (isRecord(value)) {
24
+ const child = missing(value, records.map((record)=>isRecord(record) ? record[key] : undefined));
25
+ if (Object.keys(child).length) {
26
+ result[key] = child;
27
+ }
28
+ }
29
+ }
30
+ return result;
31
+ }
32
+ return missing(select, docs);
33
+ }
34
+ export function mergeListMetadata(docs, metadata) {
35
+ function merge(original, extra) {
36
+ const result = {
37
+ ...original
38
+ };
39
+ for (const [key, value] of Object.entries(extra)){
40
+ result[key] = isRecord(value) && isRecord(result[key]) ? merge(result[key], value) : value;
41
+ }
42
+ return result;
43
+ }
44
+ const byID = new Map(metadata.map((doc)=>[
45
+ String(doc.id),
46
+ doc
47
+ ]));
48
+ return docs.flatMap((doc)=>{
49
+ const extra = byID.get(String(doc.id));
50
+ // A supplementary read must not resurrect a document that is no longer readable.
51
+ return extra ? [
52
+ merge(doc, extra)
53
+ ] : [];
54
+ });
55
+ }
56
+ export function canReuseListCells({ collectionConfig, columns, docs, useAsTitle }) {
57
+ if (collectionConfig.admin?.formatDocURL || !hasUniqueDocIDs(docs) || !columns.some((col)=>col.accessor === useAsTitle && col.active)) {
58
+ return false;
59
+ }
60
+ // Payload strips component configuration from Column.field. Inspect server fields.
61
+ const fields = flattenTopLevelFields(collectionConfig.fields, {
62
+ keepPresentationalFields: true,
63
+ moveSubFieldsToTop: true
64
+ });
65
+ return columns.every((column)=>{
66
+ if (!column.active) {
67
+ return true;
68
+ }
69
+ const field = fields.find((field)=>(field.accessor ?? field.name) === column.accessor);
70
+ // Custom cells and rich text editors may depend on the enriched tree rowData.
71
+ const customCell = field?.admin && 'components' in field.admin && field.admin.components?.Cell;
72
+ return !customCell && field?.type !== 'richText' && (column.accessor === '_status' || column.renderedCells?.length === docs.length);
73
+ });
74
+ }
75
+
76
+ //# sourceMappingURL=listReuse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utilities/listReuse.ts"],"sourcesContent":["import type { CollectionConfig, Column, PaginatedDocs, SelectType } from 'payload'\n\nimport { flattenTopLevelFields } from 'payload/shared'\n\nimport type { PageTreeSourceDoc } from '../types.js'\n\ntype RecordValue = Record<string, unknown>\n\nfunction isRecord(value: unknown): value is RecordValue {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value)\n}\n\nexport function hasUniqueDocIDs(docs: PageTreeSourceDoc[]): boolean {\n return docs.every(({ id }) => typeof id === 'string' || typeof id === 'number') &&\n new Set(docs.map(({ id }) => String(id))).size === docs.length\n}\n\nexport function getCompleteListDocs(data?: Partial<PaginatedDocs>): PageTreeSourceDoc[] | undefined {\n if (!Array.isArray(data?.docs) || data.page !== 1 || data.hasNextPage || data.hasPrevPage ||\n data.docs.length !== data.totalDocs || !hasUniqueDocIDs(data.docs)) {\n return undefined\n }\n // Native historical display status is not the plugin's current-document status.\n return data.docs.map(({ _displayStatus: _nativeStatus, ...doc }) => doc)\n}\n\nexport function getMissingListSelect(docs: PageTreeSourceDoc[], select: SelectType): SelectType {\n function missing(selection: RecordValue, records: unknown[]): RecordValue {\n const result: RecordValue = {}\n for (const [key, value] of Object.entries(selection)) {\n if (value === true) {\n if (records.some(record => !isRecord(record) || !Object.hasOwn(record, key))) {result[key] = true}\n } else if (isRecord(value)) {\n const child = missing(value, records.map(record => isRecord(record) ? record[key] : undefined))\n if (Object.keys(child).length) {result[key] = child}\n }\n }\n return result\n }\n return missing(select, docs) as SelectType\n}\n\nexport function mergeListMetadata(\n docs: PageTreeSourceDoc[],\n metadata: PageTreeSourceDoc[],\n): PageTreeSourceDoc[] {\n function merge(original: RecordValue, extra: RecordValue): RecordValue {\n const result = { ...original }\n for (const [key, value] of Object.entries(extra)) {\n result[key] = isRecord(value) && isRecord(result[key]) ? merge(result[key], value) : value\n }\n return result\n }\n const byID = new Map(metadata.map(doc => [String(doc.id), doc]))\n return docs.flatMap(doc => {\n const extra = byID.get(String(doc.id))\n // A supplementary read must not resurrect a document that is no longer readable.\n return extra ? [merge(doc, extra) as PageTreeSourceDoc] : []\n })\n}\n\nexport function canReuseListCells({\n collectionConfig,\n columns,\n docs,\n useAsTitle,\n}: {\n collectionConfig: CollectionConfig\n columns: Column[]\n docs: PageTreeSourceDoc[]\n useAsTitle: string\n}): boolean {\n if (collectionConfig.admin?.formatDocURL || !hasUniqueDocIDs(docs) ||\n !columns.some(col => col.accessor === useAsTitle && col.active)) {\n return false\n }\n // Payload strips component configuration from Column.field. Inspect server fields.\n const fields = flattenTopLevelFields(collectionConfig.fields, {\n keepPresentationalFields: true,\n moveSubFieldsToTop: true,\n })\n return columns.every(column => {\n if (!column.active) {return true}\n const field = fields.find(field => (field.accessor ?? field.name) === column.accessor)\n // Custom cells and rich text editors may depend on the enriched tree rowData.\n const customCell = field?.admin && 'components' in field.admin && field.admin.components?.Cell\n return !customCell && field?.type !== 'richText' &&\n (column.accessor === '_status' || column.renderedCells?.length === docs.length)\n })\n}\n"],"names":["flattenTopLevelFields","isRecord","value","Boolean","Array","isArray","hasUniqueDocIDs","docs","every","id","Set","map","String","size","length","getCompleteListDocs","data","page","hasNextPage","hasPrevPage","totalDocs","undefined","_displayStatus","_nativeStatus","doc","getMissingListSelect","select","missing","selection","records","result","key","Object","entries","some","record","hasOwn","child","keys","mergeListMetadata","metadata","merge","original","extra","byID","Map","flatMap","get","canReuseListCells","collectionConfig","columns","useAsTitle","admin","formatDocURL","col","accessor","active","fields","keepPresentationalFields","moveSubFieldsToTop","column","field","find","name","customCell","components","Cell","type","renderedCells"],"mappings":"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"}
@@ -78,6 +78,9 @@ export async function withPageTreeLocaleStatuses({ collectionSlug, docs, fastMod
78
78
  status: typeof displayStatus === 'string' ? displayStatus : displayStatus.status,
79
79
  ...typeof displayStatus === 'object' && displayStatus.label ? {
80
80
  label: displayStatus.label
81
+ } : {},
82
+ ...typeof displayStatus === 'object' && displayStatus.marker ? {
83
+ marker: displayStatus.marker
81
84
  } : {}
82
85
  };
83
86
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/localeStatus.ts"],"sourcesContent":["import type { CollectionSlug, Payload, PayloadRequest } from 'payload'\n\nimport type {\n PageTreeLocaleBadgeStatus,\n PageTreeLocaleBadgeVisibility,\n PageTreeSourceDoc,\n} from '../types.js'\n\nimport { getPageTreeDisplayStatus } from './status.js'\n\nfunction readLocaleStatus(value: unknown, locale: string): string | undefined {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return undefined\n }\n const status = (value as Record<string, unknown>)[locale]\n return typeof status === 'string' ? status : undefined\n}\n\nexport async function withPageTreeLocaleStatuses({\n collectionSlug,\n docs,\n fastMode,\n localeBadgeStatus,\n localeBadgeVisibility,\n locales,\n payload,\n req,\n}: {\n collectionSlug: CollectionSlug\n docs: PageTreeSourceDoc[]\n fastMode?: boolean\n localeBadgeStatus?: PageTreeLocaleBadgeStatus\n localeBadgeVisibility?: PageTreeLocaleBadgeVisibility\n locales: string[]\n payload: Payload\n req: PayloadRequest\n}): Promise<PageTreeSourceDoc[]> {\n const ids = docs\n .map(({ id }) => id)\n .filter((id): id is number | string => typeof id === 'number' || typeof id === 'string')\n\n if (!ids.length || !locales.length) {\n return docs\n }\n\n const [draftResult, currentResult] = await Promise.all(\n [true, false].map((draft) =>\n payload.find({\n collection: collectionSlug,\n depth: 0,\n draft,\n fallbackLocale: false,\n locale: 'all',\n overrideAccess: false,\n pagination: false,\n // Payload mutates the request locale for Local API calls.\n req: { ...req, query: { ...req.query } },\n select: fastMode ? { id: true, _status: true } : undefined,\n where: { id: { in: ids } },\n }),\n ),\n )\n const draftByID = new Map(draftResult.docs.map((doc) => [String(doc.id), doc]))\n const currentByID = new Map(currentResult.docs.map((doc) => [String(doc.id), doc]))\n\n return docs.map((doc) => ({\n ...doc,\n __pageTreeLocaleStatuses: locales.map((locale) => {\n const draftDoc = draftByID.get(String(doc.id))\n const draft = readLocaleStatus(draftDoc?._status, locale)\n const publishedDoc = currentByID.get(String(doc.id))\n const current = readLocaleStatus(publishedDoc?._status, locale)\n const status = getPageTreeDisplayStatus({\n _displayStatus: draft === 'draft' && current === 'published' ? 'changed' : undefined,\n _status: draft,\n })\n const displayStatus =\n localeBadgeStatus && draftDoc\n ? localeBadgeStatus({ doc: draftDoc, locale, publishedDoc, req, status })\n : status\n return {\n locale,\n ...(localeBadgeVisibility\n ? {\n visible: Boolean(\n draftDoc && localeBadgeVisibility({ doc: draftDoc, locale, publishedDoc, req }),\n ),\n }\n : {}),\n status: typeof displayStatus === 'string' ? displayStatus : displayStatus.status,\n ...(typeof displayStatus === 'object' && displayStatus.label\n ? { label: displayStatus.label }\n : {}),\n }\n }),\n }))\n}\n"],"names":["getPageTreeDisplayStatus","readLocaleStatus","value","locale","Array","isArray","undefined","status","withPageTreeLocaleStatuses","collectionSlug","docs","fastMode","localeBadgeStatus","localeBadgeVisibility","locales","payload","req","ids","map","id","filter","length","draftResult","currentResult","Promise","all","draft","find","collection","depth","fallbackLocale","overrideAccess","pagination","query","select","_status","where","in","draftByID","Map","doc","String","currentByID","__pageTreeLocaleStatuses","draftDoc","get","publishedDoc","current","_displayStatus","displayStatus","visible","Boolean","label"],"mappings":"AAQA,SAASA,wBAAwB,QAAQ,cAAa;AAEtD,SAASC,iBAAiBC,KAAc,EAAEC,MAAc;IACtD,IAAI,CAACD,SAAS,OAAOA,UAAU,YAAYE,MAAMC,OAAO,CAACH,QAAQ;QAC/D,OAAOI;IACT;IACA,MAAMC,SAAS,AAACL,KAAiC,CAACC,OAAO;IACzD,OAAO,OAAOI,WAAW,WAAWA,SAASD;AAC/C;AAEA,OAAO,eAAeE,2BAA2B,EAC/CC,cAAc,EACdC,IAAI,EACJC,QAAQ,EACRC,iBAAiB,EACjBC,qBAAqB,EACrBC,OAAO,EACPC,OAAO,EACPC,GAAG,EAUJ;IACC,MAAMC,MAAMP,KACTQ,GAAG,CAAC,CAAC,EAAEC,EAAE,EAAE,GAAKA,IAChBC,MAAM,CAAC,CAACD,KAA8B,OAAOA,OAAO,YAAY,OAAOA,OAAO;IAEjF,IAAI,CAACF,IAAII,MAAM,IAAI,CAACP,QAAQO,MAAM,EAAE;QAClC,OAAOX;IACT;IAEA,MAAM,CAACY,aAAaC,cAAc,GAAG,MAAMC,QAAQC,GAAG,CACpD;QAAC;QAAM;KAAM,CAACP,GAAG,CAAC,CAACQ,QACjBX,QAAQY,IAAI,CAAC;YACXC,YAAYnB;YACZoB,OAAO;YACPH;YACAI,gBAAgB;YAChB3B,QAAQ;YACR4B,gBAAgB;YAChBC,YAAY;YACZ,0DAA0D;YAC1DhB,KAAK;gBAAE,GAAGA,GAAG;gBAAEiB,OAAO;oBAAE,GAAGjB,IAAIiB,KAAK;gBAAC;YAAE;YACvCC,QAAQvB,WAAW;gBAAEQ,IAAI;gBAAMgB,SAAS;YAAK,IAAI7B;YACjD8B,OAAO;gBAAEjB,IAAI;oBAAEkB,IAAIpB;gBAAI;YAAE;QAC3B;IAGJ,MAAMqB,YAAY,IAAIC,IAAIjB,YAAYZ,IAAI,CAACQ,GAAG,CAAC,CAACsB,MAAQ;YAACC,OAAOD,IAAIrB,EAAE;YAAGqB;SAAI;IAC7E,MAAME,cAAc,IAAIH,IAAIhB,cAAcb,IAAI,CAACQ,GAAG,CAAC,CAACsB,MAAQ;YAACC,OAAOD,IAAIrB,EAAE;YAAGqB;SAAI;IAEjF,OAAO9B,KAAKQ,GAAG,CAAC,CAACsB,MAAS,CAAA;YACxB,GAAGA,GAAG;YACNG,0BAA0B7B,QAAQI,GAAG,CAAC,CAACf;gBACrC,MAAMyC,WAAWN,UAAUO,GAAG,CAACJ,OAAOD,IAAIrB,EAAE;gBAC5C,MAAMO,QAAQzB,iBAAiB2C,UAAUT,SAAShC;gBAClD,MAAM2C,eAAeJ,YAAYG,GAAG,CAACJ,OAAOD,IAAIrB,EAAE;gBAClD,MAAM4B,UAAU9C,iBAAiB6C,cAAcX,SAAShC;gBACxD,MAAMI,SAASP,yBAAyB;oBACtCgD,gBAAgBtB,UAAU,WAAWqB,YAAY,cAAc,YAAYzC;oBAC3E6B,SAAST;gBACX;gBACA,MAAMuB,gBACJrC,qBAAqBgC,WACjBhC,kBAAkB;oBAAE4B,KAAKI;oBAAUzC;oBAAQ2C;oBAAc9B;oBAAKT;gBAAO,KACrEA;gBACN,OAAO;oBACLJ;oBACA,GAAIU,wBACA;wBACEqC,SAASC,QACPP,YAAY/B,sBAAsB;4BAAE2B,KAAKI;4BAAUzC;4BAAQ2C;4BAAc9B;wBAAI;oBAEjF,IACA,CAAC,CAAC;oBACNT,QAAQ,OAAO0C,kBAAkB,WAAWA,gBAAgBA,cAAc1C,MAAM;oBAChF,GAAI,OAAO0C,kBAAkB,YAAYA,cAAcG,KAAK,GACxD;wBAAEA,OAAOH,cAAcG,KAAK;oBAAC,IAC7B,CAAC,CAAC;gBACR;YACF;QACF,CAAA;AACF"}
1
+ {"version":3,"sources":["../../src/utilities/localeStatus.ts"],"sourcesContent":["import type { CollectionSlug, Payload, PayloadRequest } from 'payload'\n\nimport type {\n PageTreeLocaleBadgeStatus,\n PageTreeLocaleBadgeVisibility,\n PageTreeSourceDoc,\n} from '../types.js'\n\nimport { getPageTreeDisplayStatus } from './status.js'\n\nfunction readLocaleStatus(value: unknown, locale: string): string | undefined {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return undefined\n }\n const status = (value as Record<string, unknown>)[locale]\n return typeof status === 'string' ? status : undefined\n}\n\nexport async function withPageTreeLocaleStatuses({\n collectionSlug,\n docs,\n fastMode,\n localeBadgeStatus,\n localeBadgeVisibility,\n locales,\n payload,\n req,\n}: {\n collectionSlug: CollectionSlug\n docs: PageTreeSourceDoc[]\n fastMode?: boolean\n localeBadgeStatus?: PageTreeLocaleBadgeStatus\n localeBadgeVisibility?: PageTreeLocaleBadgeVisibility\n locales: string[]\n payload: Payload\n req: PayloadRequest\n}): Promise<PageTreeSourceDoc[]> {\n const ids = docs\n .map(({ id }) => id)\n .filter((id): id is number | string => typeof id === 'number' || typeof id === 'string')\n\n if (!ids.length || !locales.length) {\n return docs\n }\n\n const [draftResult, currentResult] = await Promise.all(\n [true, false].map((draft) =>\n payload.find({\n collection: collectionSlug,\n depth: 0,\n draft,\n fallbackLocale: false,\n locale: 'all',\n overrideAccess: false,\n pagination: false,\n // Payload mutates the request locale for Local API calls.\n req: { ...req, query: { ...req.query } },\n select: fastMode ? { id: true, _status: true } : undefined,\n where: { id: { in: ids } },\n }),\n ),\n )\n const draftByID = new Map(draftResult.docs.map((doc) => [String(doc.id), doc]))\n const currentByID = new Map(currentResult.docs.map((doc) => [String(doc.id), doc]))\n\n return docs.map((doc) => ({\n ...doc,\n __pageTreeLocaleStatuses: locales.map((locale) => {\n const draftDoc = draftByID.get(String(doc.id))\n const draft = readLocaleStatus(draftDoc?._status, locale)\n const publishedDoc = currentByID.get(String(doc.id))\n const current = readLocaleStatus(publishedDoc?._status, locale)\n const status = getPageTreeDisplayStatus({\n _displayStatus: draft === 'draft' && current === 'published' ? 'changed' : undefined,\n _status: draft,\n })\n const displayStatus =\n localeBadgeStatus && draftDoc\n ? localeBadgeStatus({ doc: draftDoc, locale, publishedDoc, req, status })\n : status\n return {\n locale,\n ...(localeBadgeVisibility\n ? {\n visible: Boolean(\n draftDoc && localeBadgeVisibility({ doc: draftDoc, locale, publishedDoc, req }),\n ),\n }\n : {}),\n status: typeof displayStatus === 'string' ? displayStatus : displayStatus.status,\n ...(typeof displayStatus === 'object' && displayStatus.label\n ? { label: displayStatus.label }\n : {}),\n ...(typeof displayStatus === 'object' && displayStatus.marker\n ? { marker: displayStatus.marker }\n : {}),\n }\n }),\n }))\n}\n"],"names":["getPageTreeDisplayStatus","readLocaleStatus","value","locale","Array","isArray","undefined","status","withPageTreeLocaleStatuses","collectionSlug","docs","fastMode","localeBadgeStatus","localeBadgeVisibility","locales","payload","req","ids","map","id","filter","length","draftResult","currentResult","Promise","all","draft","find","collection","depth","fallbackLocale","overrideAccess","pagination","query","select","_status","where","in","draftByID","Map","doc","String","currentByID","__pageTreeLocaleStatuses","draftDoc","get","publishedDoc","current","_displayStatus","displayStatus","visible","Boolean","label","marker"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "payload-nested-docs-page-tree",
3
- "version": "1.6.7",
3
+ "version": "1.6.9",
4
4
  "description": "Page tree plugin for Payload nested docs collections",
5
5
  "license": "MIT",
6
6
  "author": "WLF Studios",