@payloadcms/plugin-nested-docs 1.0.11 → 3.0.0-alpha.42
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/fields/breadcrumbs.js +3 -21
- package/dist/fields/breadcrumbs.js.map +1 -0
- package/dist/fields/parent.js +3 -21
- package/dist/fields/parent.js.map +1 -0
- package/dist/fields/parentFilterOptions.d.ts +1 -1
- package/dist/fields/parentFilterOptions.d.ts.map +1 -1
- package/dist/fields/parentFilterOptions.js +3 -21
- package/dist/fields/parentFilterOptions.js.map +1 -0
- package/dist/hooks/resaveChildren.d.ts +1 -1
- package/dist/hooks/resaveChildren.d.ts.map +1 -1
- package/dist/hooks/resaveChildren.js +4 -19
- package/dist/hooks/resaveChildren.js.map +1 -0
- package/dist/hooks/resaveSelfAfterCreate.d.ts +1 -1
- package/dist/hooks/resaveSelfAfterCreate.d.ts.map +1 -1
- package/dist/hooks/resaveSelfAfterCreate.js +2 -12
- package/dist/hooks/resaveSelfAfterCreate.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -29
- package/dist/index.js.map +1 -0
- package/dist/types.js +2 -5
- package/dist/types.js.map +1 -0
- package/dist/utilities/formatBreadcrumb.d.ts +1 -1
- package/dist/utilities/formatBreadcrumb.d.ts.map +1 -1
- package/dist/utilities/formatBreadcrumb.js +4 -14
- package/dist/utilities/formatBreadcrumb.js.map +1 -0
- package/dist/utilities/getParents.d.ts +1 -1
- package/dist/utilities/getParents.d.ts.map +1 -1
- package/dist/utilities/getParents.js +2 -12
- package/dist/utilities/getParents.js.map +1 -0
- package/dist/utilities/populateBreadcrumbs.d.ts +1 -1
- package/dist/utilities/populateBreadcrumbs.d.ts.map +1 -1
- package/dist/utilities/populateBreadcrumbs.js +6 -21
- package/dist/utilities/populateBreadcrumbs.js.map +1 -0
- package/package.json +7 -3
|
@@ -1,22 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
createBreadcrumbsField: function() {
|
|
13
|
-
return createBreadcrumbsField;
|
|
14
|
-
},
|
|
15
|
-
default: function() {
|
|
16
|
-
return _default;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
const createBreadcrumbsField = (relationTo, overrides = {})=>({
|
|
1
|
+
export const createBreadcrumbsField = (relationTo, overrides = {})=>({
|
|
20
2
|
name: 'breadcrumbs',
|
|
21
3
|
localized: true,
|
|
22
4
|
type: 'array',
|
|
@@ -58,6 +40,6 @@ const createBreadcrumbsField = (relationTo, overrides = {})=>({
|
|
|
58
40
|
...overrides?.fields || []
|
|
59
41
|
]
|
|
60
42
|
});
|
|
61
|
-
|
|
43
|
+
export default createBreadcrumbsField;
|
|
62
44
|
|
|
63
|
-
//# sourceMappingURL=
|
|
45
|
+
//# sourceMappingURL=breadcrumbs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/fields/breadcrumbs.ts"],"sourcesContent":["import type { ArrayField, Field } from 'payload/types'\n\nexport const createBreadcrumbsField = (\n relationTo: string,\n overrides: Partial<ArrayField> = {},\n): Field => ({\n name: 'breadcrumbs',\n localized: true,\n type: 'array',\n ...(overrides || {}),\n admin: {\n readOnly: true,\n ...(overrides?.admin || {}),\n },\n fields: [\n {\n name: 'doc',\n admin: {\n disabled: true,\n },\n maxDepth: 0,\n relationTo,\n type: 'relationship',\n },\n {\n fields: [\n {\n name: 'url',\n admin: {\n width: '50%',\n },\n label: 'URL',\n type: 'text',\n },\n {\n name: 'label',\n admin: {\n width: '50%',\n },\n type: 'text',\n },\n ],\n type: 'row',\n },\n ...(overrides?.fields || []),\n ],\n})\n\nexport default createBreadcrumbsField\n"],"names":["createBreadcrumbsField","relationTo","overrides","name","localized","type","admin","readOnly","fields","disabled","maxDepth","width","label"],"mappings":"AAEA,OAAO,MAAMA,yBAAyB,CACpCC,YACAC,YAAiC,CAAC,CAAC,GACxB,CAAA;QACXC,MAAM;QACNC,WAAW;QACXC,MAAM;QACN,GAAIH,aAAa,CAAC,CAAC;QACnBI,OAAO;YACLC,UAAU;YACV,GAAIL,WAAWI,SAAS,CAAC,CAAC;QAC5B;QACAE,QAAQ;YACN;gBACEL,MAAM;gBACNG,OAAO;oBACLG,UAAU;gBACZ;gBACAC,UAAU;gBACVT;gBACAI,MAAM;YACR;YACA;gBACEG,QAAQ;oBACN;wBACEL,MAAM;wBACNG,OAAO;4BACLK,OAAO;wBACT;wBACAC,OAAO;wBACPP,MAAM;oBACR;oBACA;wBACEF,MAAM;wBACNG,OAAO;4BACLK,OAAO;wBACT;wBACAN,MAAM;oBACR;iBACD;gBACDA,MAAM;YACR;eACIH,WAAWM,UAAU,EAAE;SAC5B;IACH,CAAA,EAAE;AAEF,eAAeR,uBAAsB"}
|
package/dist/fields/parent.js
CHANGED
|
@@ -1,22 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
createParentField: function() {
|
|
13
|
-
return createParentField;
|
|
14
|
-
},
|
|
15
|
-
default: function() {
|
|
16
|
-
return _default;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
const createParentField = (relationTo, overrides)=>({
|
|
1
|
+
export const createParentField = (relationTo, overrides)=>({
|
|
20
2
|
name: 'parent',
|
|
21
3
|
admin: {
|
|
22
4
|
position: 'sidebar',
|
|
@@ -29,6 +11,6 @@ const createParentField = (relationTo, overrides)=>({
|
|
|
29
11
|
type: 'relationship',
|
|
30
12
|
...overrides || {}
|
|
31
13
|
});
|
|
32
|
-
|
|
14
|
+
export default createParentField;
|
|
33
15
|
|
|
34
|
-
//# sourceMappingURL=
|
|
16
|
+
//# sourceMappingURL=parent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/fields/parent.ts"],"sourcesContent":["import type { SingleRelationshipField } from 'payload/types'\n\nexport const createParentField = (\n relationTo: string,\n overrides?: Partial<\n SingleRelationshipField & {\n hasMany: false\n }\n >,\n): SingleRelationshipField => ({\n name: 'parent',\n admin: {\n position: 'sidebar',\n ...(overrides?.admin || {}),\n },\n // filterOptions are assigned dynamically based on the pluginConfig\n // filterOptions: parentFilterOptions(),\n maxDepth: 1,\n relationTo,\n type: 'relationship',\n ...(overrides || {}),\n})\n\nexport default createParentField\n"],"names":["createParentField","relationTo","overrides","name","admin","position","maxDepth","type"],"mappings":"AAEA,OAAO,MAAMA,oBAAoB,CAC/BC,YACAC,YAK6B,CAAA;QAC7BC,MAAM;QACNC,OAAO;YACLC,UAAU;YACV,GAAIH,WAAWE,SAAS,CAAC,CAAC;QAC5B;QACA,mEAAmE;QACnE,wCAAwC;QACxCE,UAAU;QACVL;QACAM,MAAM;QACN,GAAIL,aAAa,CAAC,CAAC;IACrB,CAAA,EAAE;AAEF,eAAeF,kBAAiB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FilterOptions } from 'payload/
|
|
1
|
+
import type { FilterOptions } from 'payload/types';
|
|
2
2
|
export declare const parentFilterOptions: (breadcrumbsFieldSlug?: string) => FilterOptions;
|
|
3
3
|
export default parentFilterOptions;
|
|
4
4
|
//# sourceMappingURL=parentFilterOptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parentFilterOptions.d.ts","sourceRoot":"","sources":["../../src/fields/parentFilterOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"parentFilterOptions.d.ts","sourceRoot":"","sources":["../../src/fields/parentFilterOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAElD,eAAO,MAAM,mBAAmB,EAAE,CAAC,oBAAoB,CAAC,EAAE,MAAM,KAAK,aAWlE,CAAA;AAEH,eAAe,mBAAmB,CAAA"}
|
|
@@ -1,22 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
parentFilterOptions: function() {
|
|
13
|
-
return parentFilterOptions;
|
|
14
|
-
},
|
|
15
|
-
default: function() {
|
|
16
|
-
return _default;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
const parentFilterOptions = (breadcrumbsFieldSlug = 'breadcrumbs')=>({ id })=>{
|
|
1
|
+
export const parentFilterOptions = (breadcrumbsFieldSlug = 'breadcrumbs')=>({ id })=>{
|
|
20
2
|
if (id) {
|
|
21
3
|
return {
|
|
22
4
|
id: {
|
|
@@ -31,6 +13,6 @@ const parentFilterOptions = (breadcrumbsFieldSlug = 'breadcrumbs')=>({ id })=>{
|
|
|
31
13
|
}
|
|
32
14
|
return null;
|
|
33
15
|
};
|
|
34
|
-
|
|
16
|
+
export default parentFilterOptions;
|
|
35
17
|
|
|
36
|
-
//# sourceMappingURL=
|
|
18
|
+
//# sourceMappingURL=parentFilterOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/fields/parentFilterOptions.ts"],"sourcesContent":["import type { FilterOptions } from 'payload/types'\n\nexport const parentFilterOptions: (breadcrumbsFieldSlug?: string) => FilterOptions =\n (breadcrumbsFieldSlug = 'breadcrumbs') =>\n ({ id }) => {\n if (id) {\n return {\n id: { not_equals: id },\n [`${breadcrumbsFieldSlug}.doc`]: { not_in: [id] },\n }\n }\n\n return null\n }\n\nexport default parentFilterOptions\n"],"names":["parentFilterOptions","breadcrumbsFieldSlug","id","not_equals","not_in"],"mappings":"AAEA,OAAO,MAAMA,sBACX,CAACC,uBAAuB,aAAa,GACrC,CAAC,EAAEC,EAAE,EAAE;QACL,IAAIA,IAAI;YACN,OAAO;gBACLA,IAAI;oBAAEC,YAAYD;gBAAG;gBACrB,CAAC,CAAC,EAAED,qBAAqB,IAAI,CAAC,CAAC,EAAE;oBAAEG,QAAQ;wBAACF;qBAAG;gBAAC;YAClD;QACF;QAEA,OAAO;IACT,EAAC;AAEH,eAAeF,oBAAmB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CollectionAfterChangeHook, CollectionConfig } from 'payload/types';
|
|
2
|
-
import type { PluginConfig } from '../types';
|
|
2
|
+
import type { PluginConfig } from '../types.js';
|
|
3
3
|
declare const resaveChildren: (pluginConfig: PluginConfig, collection: CollectionConfig) => CollectionAfterChangeHook;
|
|
4
4
|
export default resaveChildren;
|
|
5
5
|
//# sourceMappingURL=resaveChildren.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resaveChildren.d.ts","sourceRoot":"","sources":["../../src/hooks/resaveChildren.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,gBAAgB,EAAkB,MAAM,eAAe,CAAA;AAEhG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"resaveChildren.d.ts","sourceRoot":"","sources":["../../src/hooks/resaveChildren.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,gBAAgB,EAAkB,MAAM,eAAe,CAAA;AAEhG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAiE/C,QAAA,MAAM,cAAc,iBACH,YAAY,cAAc,gBAAgB,KAAG,yBAqB3D,CAAA;AACH,eAAe,cAAc,CAAA"}
|
|
@@ -1,19 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _populateBreadcrumbs = /*#__PURE__*/ _interop_require_default(require("../utilities/populateBreadcrumbs"));
|
|
12
|
-
function _interop_require_default(obj) {
|
|
13
|
-
return obj && obj.__esModule ? obj : {
|
|
14
|
-
default: obj
|
|
15
|
-
};
|
|
16
|
-
}
|
|
1
|
+
import populateBreadcrumbs from '../utilities/populateBreadcrumbs.js';
|
|
17
2
|
const resave = async ({ collection, doc, draft, pluginConfig, req })=>{
|
|
18
3
|
const parentSlug = pluginConfig?.parentFieldSlug || 'parent';
|
|
19
4
|
const parentDocIsPublished = doc._status === 'published';
|
|
@@ -40,7 +25,7 @@ const resave = async ({ collection, doc, draft, pluginConfig, req })=>{
|
|
|
40
25
|
collection: collection.slug,
|
|
41
26
|
data: {
|
|
42
27
|
...child,
|
|
43
|
-
[breadcrumbSlug]: await (
|
|
28
|
+
[breadcrumbSlug]: await populateBreadcrumbs(req, pluginConfig, collection, child)
|
|
44
29
|
},
|
|
45
30
|
depth: 0,
|
|
46
31
|
draft: !childIsPublished,
|
|
@@ -72,6 +57,6 @@ const resaveChildren = (pluginConfig, collection)=>async ({ doc, req })=>{
|
|
|
72
57
|
}
|
|
73
58
|
return undefined;
|
|
74
59
|
};
|
|
75
|
-
|
|
60
|
+
export default resaveChildren;
|
|
76
61
|
|
|
77
|
-
//# sourceMappingURL=
|
|
62
|
+
//# sourceMappingURL=resaveChildren.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/resaveChildren.ts"],"sourcesContent":["import type { CollectionAfterChangeHook, CollectionConfig, PayloadRequest } from 'payload/types'\n\nimport type { PluginConfig } from '../types.js'\n\nimport populateBreadcrumbs from '../utilities/populateBreadcrumbs.js'\n\ntype ResaveArgs = {\n collection: CollectionConfig\n doc: Record<string, unknown>\n draft: boolean\n pluginConfig: PluginConfig\n req: PayloadRequest\n}\n\nconst resave = async ({ collection, doc, draft, pluginConfig, req }: ResaveArgs) => {\n const parentSlug = pluginConfig?.parentFieldSlug || 'parent'\n const parentDocIsPublished = doc._status === 'published'\n\n const children = await req.payload.find({\n collection: collection.slug,\n depth: 0,\n draft,\n locale: req.locale,\n req,\n where: {\n [parentSlug]: {\n equals: doc.id,\n },\n },\n })\n\n const breadcrumbSlug = pluginConfig.breadcrumbsFieldSlug || 'breadcrumbs'\n\n try {\n await children.docs.reduce(async (priorSave, child) => {\n await priorSave\n\n const childIsPublished =\n typeof collection.versions === 'object' &&\n collection.versions.drafts &&\n child._status === 'published'\n\n if (!parentDocIsPublished && childIsPublished) return\n\n await req.payload.update({\n id: child.id,\n collection: collection.slug,\n data: {\n ...child,\n [breadcrumbSlug]: await populateBreadcrumbs(req, pluginConfig, collection, child),\n },\n depth: 0,\n draft: !childIsPublished,\n locale: req.locale,\n req,\n })\n }, Promise.resolve())\n } catch (err: unknown) {\n req.payload.logger.error(\n `Nested Docs plugin has had an error while re-saving a child document${\n draft ? ' as draft' : ' as published'\n }.`,\n )\n req.payload.logger.error(err)\n }\n}\n\nconst resaveChildren =\n (pluginConfig: PluginConfig, collection: CollectionConfig): CollectionAfterChangeHook =>\n async ({ doc, req }) => {\n await resave({\n collection,\n doc,\n draft: true,\n pluginConfig,\n req,\n })\n\n if (doc._status === 'published') {\n await resave({\n collection,\n doc,\n draft: false,\n pluginConfig,\n req,\n })\n }\n\n return undefined\n }\nexport default resaveChildren\n"],"names":["populateBreadcrumbs","resave","collection","doc","draft","pluginConfig","req","parentSlug","parentFieldSlug","parentDocIsPublished","_status","children","payload","find","slug","depth","locale","where","equals","id","breadcrumbSlug","breadcrumbsFieldSlug","docs","reduce","priorSave","child","childIsPublished","versions","drafts","update","data","Promise","resolve","err","logger","error","resaveChildren","undefined"],"mappings":"AAIA,OAAOA,yBAAyB,sCAAqC;AAUrE,MAAMC,SAAS,OAAO,EAAEC,UAAU,EAAEC,GAAG,EAAEC,KAAK,EAAEC,YAAY,EAAEC,GAAG,EAAc;IAC7E,MAAMC,aAAaF,cAAcG,mBAAmB;IACpD,MAAMC,uBAAuBN,IAAIO,OAAO,KAAK;IAE7C,MAAMC,WAAW,MAAML,IAAIM,OAAO,CAACC,IAAI,CAAC;QACtCX,YAAYA,WAAWY,IAAI;QAC3BC,OAAO;QACPX;QACAY,QAAQV,IAAIU,MAAM;QAClBV;QACAW,OAAO;YACL,CAACV,WAAW,EAAE;gBACZW,QAAQf,IAAIgB,EAAE;YAChB;QACF;IACF;IAEA,MAAMC,iBAAiBf,aAAagB,oBAAoB,IAAI;IAE5D,IAAI;QACF,MAAMV,SAASW,IAAI,CAACC,MAAM,CAAC,OAAOC,WAAWC;YAC3C,MAAMD;YAEN,MAAME,mBACJ,OAAOxB,WAAWyB,QAAQ,KAAK,YAC/BzB,WAAWyB,QAAQ,CAACC,MAAM,IAC1BH,MAAMf,OAAO,KAAK;YAEpB,IAAI,CAACD,wBAAwBiB,kBAAkB;YAE/C,MAAMpB,IAAIM,OAAO,CAACiB,MAAM,CAAC;gBACvBV,IAAIM,MAAMN,EAAE;gBACZjB,YAAYA,WAAWY,IAAI;gBAC3BgB,MAAM;oBACJ,GAAGL,KAAK;oBACR,CAACL,eAAe,EAAE,MAAMpB,oBAAoBM,KAAKD,cAAcH,YAAYuB;gBAC7E;gBACAV,OAAO;gBACPX,OAAO,CAACsB;gBACRV,QAAQV,IAAIU,MAAM;gBAClBV;YACF;QACF,GAAGyB,QAAQC,OAAO;IACpB,EAAE,OAAOC,KAAc;QACrB3B,IAAIM,OAAO,CAACsB,MAAM,CAACC,KAAK,CACtB,CAAC,oEAAoE,EACnE/B,QAAQ,cAAc,gBACvB,CAAC,CAAC;QAELE,IAAIM,OAAO,CAACsB,MAAM,CAACC,KAAK,CAACF;IAC3B;AACF;AAEA,MAAMG,iBACJ,CAAC/B,cAA4BH,aAC7B,OAAO,EAAEC,GAAG,EAAEG,GAAG,EAAE;QACjB,MAAML,OAAO;YACXC;YACAC;YACAC,OAAO;YACPC;YACAC;QACF;QAEA,IAAIH,IAAIO,OAAO,KAAK,aAAa;YAC/B,MAAMT,OAAO;gBACXC;gBACAC;gBACAC,OAAO;gBACPC;gBACAC;YACF;QACF;QAEA,OAAO+B;IACT;AACF,eAAeD,eAAc"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CollectionAfterChangeHook, CollectionConfig } from 'payload/types';
|
|
2
|
-
import type { PluginConfig } from '../types';
|
|
2
|
+
import type { PluginConfig } from '../types.js';
|
|
3
3
|
declare const resaveSelfAfterCreate: (pluginConfig: PluginConfig, collection: CollectionConfig) => CollectionAfterChangeHook;
|
|
4
4
|
export default resaveSelfAfterCreate;
|
|
5
5
|
//# sourceMappingURL=resaveSelfAfterCreate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resaveSelfAfterCreate.d.ts","sourceRoot":"","sources":["../../src/hooks/resaveSelfAfterCreate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"resaveSelfAfterCreate.d.ts","sourceRoot":"","sources":["../../src/hooks/resaveSelfAfterCreate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAK/C,QAAA,MAAM,qBAAqB,iBACV,YAAY,cAAc,gBAAgB,KAAG,yBA6C3D,CAAA;AAEH,eAAe,qBAAqB,CAAA"}
|
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
1
|
// This hook automatically re-saves a document after it is created
|
|
12
2
|
// so that we can build its breadcrumbs with the newly created document's ID.
|
|
13
3
|
const resaveSelfAfterCreate = (pluginConfig, collection)=>async ({ doc, operation, req })=>{
|
|
@@ -45,6 +35,6 @@ const resaveSelfAfterCreate = (pluginConfig, collection)=>async ({ doc, operatio
|
|
|
45
35
|
}
|
|
46
36
|
return undefined;
|
|
47
37
|
};
|
|
48
|
-
|
|
38
|
+
export default resaveSelfAfterCreate;
|
|
49
39
|
|
|
50
|
-
//# sourceMappingURL=
|
|
40
|
+
//# sourceMappingURL=resaveSelfAfterCreate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/resaveSelfAfterCreate.ts"],"sourcesContent":["import type { CollectionAfterChangeHook, CollectionConfig } from 'payload/types'\n\nimport type { PluginConfig } from '../types.js'\n\n// This hook automatically re-saves a document after it is created\n// so that we can build its breadcrumbs with the newly created document's ID.\n\nconst resaveSelfAfterCreate =\n (pluginConfig: PluginConfig, collection: CollectionConfig): CollectionAfterChangeHook =>\n async ({ doc, operation, req }) => {\n const { locale, payload } = req\n const breadcrumbSlug = pluginConfig.breadcrumbsFieldSlug || 'breadcrumbs'\n const breadcrumbs = doc[breadcrumbSlug]\n\n if (operation === 'create') {\n const originalDocWithDepth0 = await payload.findByID({\n id: doc.id,\n collection: collection.slug,\n depth: 0,\n req,\n })\n\n const updateAsDraft =\n typeof collection.versions === 'object' &&\n collection.versions.drafts &&\n doc._status !== 'published'\n\n try {\n await payload.update({\n id: doc.id,\n collection: collection.slug,\n data: {\n ...originalDocWithDepth0,\n [breadcrumbSlug]:\n breadcrumbs?.map((crumb, i) => ({\n ...crumb,\n doc: breadcrumbs.length === i + 1 ? doc.id : crumb.doc,\n })) || [],\n },\n depth: 0,\n draft: updateAsDraft,\n locale,\n req,\n })\n } catch (err: unknown) {\n payload.logger.error(\n `Nested Docs plugin has had an error while adding breadcrumbs during document creation.`,\n )\n payload.logger.error(err)\n }\n }\n\n return undefined\n }\n\nexport default resaveSelfAfterCreate\n"],"names":["resaveSelfAfterCreate","pluginConfig","collection","doc","operation","req","locale","payload","breadcrumbSlug","breadcrumbsFieldSlug","breadcrumbs","originalDocWithDepth0","findByID","id","slug","depth","updateAsDraft","versions","drafts","_status","update","data","map","crumb","i","length","draft","err","logger","error","undefined"],"mappings":"AAIA,kEAAkE;AAClE,6EAA6E;AAE7E,MAAMA,wBACJ,CAACC,cAA4BC,aAC7B,OAAO,EAAEC,GAAG,EAAEC,SAAS,EAAEC,GAAG,EAAE;QAC5B,MAAM,EAAEC,MAAM,EAAEC,OAAO,EAAE,GAAGF;QAC5B,MAAMG,iBAAiBP,aAAaQ,oBAAoB,IAAI;QAC5D,MAAMC,cAAcP,GAAG,CAACK,eAAe;QAEvC,IAAIJ,cAAc,UAAU;YAC1B,MAAMO,wBAAwB,MAAMJ,QAAQK,QAAQ,CAAC;gBACnDC,IAAIV,IAAIU,EAAE;gBACVX,YAAYA,WAAWY,IAAI;gBAC3BC,OAAO;gBACPV;YACF;YAEA,MAAMW,gBACJ,OAAOd,WAAWe,QAAQ,KAAK,YAC/Bf,WAAWe,QAAQ,CAACC,MAAM,IAC1Bf,IAAIgB,OAAO,KAAK;YAElB,IAAI;gBACF,MAAMZ,QAAQa,MAAM,CAAC;oBACnBP,IAAIV,IAAIU,EAAE;oBACVX,YAAYA,WAAWY,IAAI;oBAC3BO,MAAM;wBACJ,GAAGV,qBAAqB;wBACxB,CAACH,eAAe,EACdE,aAAaY,IAAI,CAACC,OAAOC,IAAO,CAAA;gCAC9B,GAAGD,KAAK;gCACRpB,KAAKO,YAAYe,MAAM,KAAKD,IAAI,IAAIrB,IAAIU,EAAE,GAAGU,MAAMpB,GAAG;4BACxD,CAAA,MAAO,EAAE;oBACb;oBACAY,OAAO;oBACPW,OAAOV;oBACPV;oBACAD;gBACF;YACF,EAAE,OAAOsB,KAAc;gBACrBpB,QAAQqB,MAAM,CAACC,KAAK,CAClB,CAAC,sFAAsF,CAAC;gBAE1FtB,QAAQqB,MAAM,CAACC,KAAK,CAACF;YACvB;QACF;QAEA,OAAOG;IACT;AAEF,eAAe9B,sBAAqB"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Plugin } from 'payload/config';
|
|
2
|
-
import type { PluginConfig } from './types';
|
|
2
|
+
import type { PluginConfig } from './types.js';
|
|
3
3
|
declare const nestedDocs: (pluginConfig: PluginConfig) => Plugin;
|
|
4
4
|
export default nestedDocs;
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAG5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAG5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAS9C,QAAA,MAAM,UAAU,iBACC,YAAY,KAAG,MAuD5B,CAAA;AAEJ,eAAe,UAAU,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,24 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
get: function() {
|
|
8
|
-
return _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _breadcrumbs = /*#__PURE__*/ _interop_require_default(require("./fields/breadcrumbs"));
|
|
12
|
-
const _parent = /*#__PURE__*/ _interop_require_default(require("./fields/parent"));
|
|
13
|
-
const _parentFilterOptions = /*#__PURE__*/ _interop_require_default(require("./fields/parentFilterOptions"));
|
|
14
|
-
const _resaveChildren = /*#__PURE__*/ _interop_require_default(require("./hooks/resaveChildren"));
|
|
15
|
-
const _resaveSelfAfterCreate = /*#__PURE__*/ _interop_require_default(require("./hooks/resaveSelfAfterCreate"));
|
|
16
|
-
const _populateBreadcrumbs = /*#__PURE__*/ _interop_require_default(require("./utilities/populateBreadcrumbs"));
|
|
17
|
-
function _interop_require_default(obj) {
|
|
18
|
-
return obj && obj.__esModule ? obj : {
|
|
19
|
-
default: obj
|
|
20
|
-
};
|
|
21
|
-
}
|
|
1
|
+
import createBreadcrumbsField from './fields/breadcrumbs.js';
|
|
2
|
+
import createParentField from './fields/parent.js';
|
|
3
|
+
import parentFilterOptions from './fields/parentFilterOptions.js';
|
|
4
|
+
import resaveChildren from './hooks/resaveChildren.js';
|
|
5
|
+
import resaveSelfAfterCreate from './hooks/resaveSelfAfterCreate.js';
|
|
6
|
+
import populateBreadcrumbs from './utilities/populateBreadcrumbs.js';
|
|
22
7
|
const nestedDocs = (pluginConfig)=>(config)=>({
|
|
23
8
|
...config,
|
|
24
9
|
collections: (config.collections || []).map((collection)=>{
|
|
@@ -28,19 +13,19 @@ const nestedDocs = (pluginConfig)=>(config)=>({
|
|
|
28
13
|
];
|
|
29
14
|
const existingBreadcrumbField = collection.fields.find((field)=>'name' in field && field.name === (pluginConfig?.breadcrumbsFieldSlug || 'breadcrumbs'));
|
|
30
15
|
const existingParentField = collection.fields.find((field)=>'name' in field && field.name === (pluginConfig?.parentFieldSlug || 'parent'));
|
|
31
|
-
const defaultFilterOptions = (
|
|
16
|
+
const defaultFilterOptions = parentFilterOptions(pluginConfig?.breadcrumbsFieldSlug);
|
|
32
17
|
if (existingParentField) {
|
|
33
18
|
if (!existingParentField.filterOptions) {
|
|
34
19
|
existingParentField.filterOptions = defaultFilterOptions;
|
|
35
20
|
}
|
|
36
21
|
}
|
|
37
22
|
if (!existingParentField && !pluginConfig.parentFieldSlug) {
|
|
38
|
-
const defaultParentField = (
|
|
23
|
+
const defaultParentField = createParentField(collection.slug);
|
|
39
24
|
defaultParentField.filterOptions = defaultFilterOptions;
|
|
40
25
|
fields.push(defaultParentField);
|
|
41
26
|
}
|
|
42
27
|
if (!existingBreadcrumbField && !pluginConfig.breadcrumbsFieldSlug) {
|
|
43
|
-
fields.push((
|
|
28
|
+
fields.push(createBreadcrumbsField(collection.slug));
|
|
44
29
|
}
|
|
45
30
|
return {
|
|
46
31
|
...collection,
|
|
@@ -48,12 +33,12 @@ const nestedDocs = (pluginConfig)=>(config)=>({
|
|
|
48
33
|
hooks: {
|
|
49
34
|
...collection.hooks || {},
|
|
50
35
|
afterChange: [
|
|
51
|
-
(
|
|
52
|
-
(
|
|
36
|
+
resaveChildren(pluginConfig, collection),
|
|
37
|
+
resaveSelfAfterCreate(pluginConfig, collection),
|
|
53
38
|
...collection?.hooks?.afterChange || []
|
|
54
39
|
],
|
|
55
40
|
beforeChange: [
|
|
56
|
-
async ({ data, originalDoc, req })=>(
|
|
41
|
+
async ({ data, originalDoc, req })=>populateBreadcrumbs(req, pluginConfig, collection, data, originalDoc),
|
|
57
42
|
...collection?.hooks?.beforeChange || []
|
|
58
43
|
]
|
|
59
44
|
}
|
|
@@ -62,6 +47,6 @@ const nestedDocs = (pluginConfig)=>(config)=>({
|
|
|
62
47
|
return collection;
|
|
63
48
|
})
|
|
64
49
|
});
|
|
65
|
-
|
|
50
|
+
export default nestedDocs;
|
|
66
51
|
|
|
67
|
-
//# sourceMappingURL=
|
|
52
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { Plugin } from 'payload/config'\nimport type { SingleRelationshipField } from 'payload/types'\n\nimport type { PluginConfig } from './types.js'\n\nimport createBreadcrumbsField from './fields/breadcrumbs.js'\nimport createParentField from './fields/parent.js'\nimport parentFilterOptions from './fields/parentFilterOptions.js'\nimport resaveChildren from './hooks/resaveChildren.js'\nimport resaveSelfAfterCreate from './hooks/resaveSelfAfterCreate.js'\nimport populateBreadcrumbs from './utilities/populateBreadcrumbs.js'\n\nconst nestedDocs =\n (pluginConfig: PluginConfig): Plugin =>\n (config) => ({\n ...config,\n collections: (config.collections || []).map((collection) => {\n if (pluginConfig.collections.indexOf(collection.slug) > -1) {\n const fields = [...(collection?.fields || [])]\n\n const existingBreadcrumbField = collection.fields.find(\n (field) =>\n 'name' in field && field.name === (pluginConfig?.breadcrumbsFieldSlug || 'breadcrumbs'),\n )\n\n const existingParentField = collection.fields.find(\n (field) => 'name' in field && field.name === (pluginConfig?.parentFieldSlug || 'parent'),\n ) as SingleRelationshipField\n\n const defaultFilterOptions = parentFilterOptions(pluginConfig?.breadcrumbsFieldSlug)\n\n if (existingParentField) {\n if (!existingParentField.filterOptions) {\n existingParentField.filterOptions = defaultFilterOptions\n }\n }\n\n if (!existingParentField && !pluginConfig.parentFieldSlug) {\n const defaultParentField = createParentField(collection.slug)\n defaultParentField.filterOptions = defaultFilterOptions\n fields.push(defaultParentField)\n }\n\n if (!existingBreadcrumbField && !pluginConfig.breadcrumbsFieldSlug) {\n fields.push(createBreadcrumbsField(collection.slug))\n }\n\n return {\n ...collection,\n fields,\n hooks: {\n ...(collection.hooks || {}),\n afterChange: [\n resaveChildren(pluginConfig, collection),\n resaveSelfAfterCreate(pluginConfig, collection),\n ...(collection?.hooks?.afterChange || []),\n ],\n beforeChange: [\n async ({ data, originalDoc, req }) =>\n populateBreadcrumbs(req, pluginConfig, collection, data, originalDoc),\n ...(collection?.hooks?.beforeChange || []),\n ],\n },\n }\n }\n\n return collection\n }),\n })\n\nexport default nestedDocs\n"],"names":["createBreadcrumbsField","createParentField","parentFilterOptions","resaveChildren","resaveSelfAfterCreate","populateBreadcrumbs","nestedDocs","pluginConfig","config","collections","map","collection","indexOf","slug","fields","existingBreadcrumbField","find","field","name","breadcrumbsFieldSlug","existingParentField","parentFieldSlug","defaultFilterOptions","filterOptions","defaultParentField","push","hooks","afterChange","beforeChange","data","originalDoc","req"],"mappings":"AAKA,OAAOA,4BAA4B,0BAAyB;AAC5D,OAAOC,uBAAuB,qBAAoB;AAClD,OAAOC,yBAAyB,kCAAiC;AACjE,OAAOC,oBAAoB,4BAA2B;AACtD,OAAOC,2BAA2B,mCAAkC;AACpE,OAAOC,yBAAyB,qCAAoC;AAEpE,MAAMC,aACJ,CAACC,eACD,CAACC,SAAY,CAAA;YACX,GAAGA,MAAM;YACTC,aAAa,AAACD,CAAAA,OAAOC,WAAW,IAAI,EAAE,AAAD,EAAGC,GAAG,CAAC,CAACC;gBAC3C,IAAIJ,aAAaE,WAAW,CAACG,OAAO,CAACD,WAAWE,IAAI,IAAI,CAAC,GAAG;oBAC1D,MAAMC,SAAS;2BAAKH,YAAYG,UAAU,EAAE;qBAAE;oBAE9C,MAAMC,0BAA0BJ,WAAWG,MAAM,CAACE,IAAI,CACpD,CAACC,QACC,UAAUA,SAASA,MAAMC,IAAI,KAAMX,CAAAA,cAAcY,wBAAwB,aAAY;oBAGzF,MAAMC,sBAAsBT,WAAWG,MAAM,CAACE,IAAI,CAChD,CAACC,QAAU,UAAUA,SAASA,MAAMC,IAAI,KAAMX,CAAAA,cAAcc,mBAAmB,QAAO;oBAGxF,MAAMC,uBAAuBpB,oBAAoBK,cAAcY;oBAE/D,IAAIC,qBAAqB;wBACvB,IAAI,CAACA,oBAAoBG,aAAa,EAAE;4BACtCH,oBAAoBG,aAAa,GAAGD;wBACtC;oBACF;oBAEA,IAAI,CAACF,uBAAuB,CAACb,aAAac,eAAe,EAAE;wBACzD,MAAMG,qBAAqBvB,kBAAkBU,WAAWE,IAAI;wBAC5DW,mBAAmBD,aAAa,GAAGD;wBACnCR,OAAOW,IAAI,CAACD;oBACd;oBAEA,IAAI,CAACT,2BAA2B,CAACR,aAAaY,oBAAoB,EAAE;wBAClEL,OAAOW,IAAI,CAACzB,uBAAuBW,WAAWE,IAAI;oBACpD;oBAEA,OAAO;wBACL,GAAGF,UAAU;wBACbG;wBACAY,OAAO;4BACL,GAAIf,WAAWe,KAAK,IAAI,CAAC,CAAC;4BAC1BC,aAAa;gCACXxB,eAAeI,cAAcI;gCAC7BP,sBAAsBG,cAAcI;mCAChCA,YAAYe,OAAOC,eAAe,EAAE;6BACzC;4BACDC,cAAc;gCACZ,OAAO,EAAEC,IAAI,EAAEC,WAAW,EAAEC,GAAG,EAAE,GAC/B1B,oBAAoB0B,KAAKxB,cAAcI,YAAYkB,MAAMC;mCACvDnB,YAAYe,OAAOE,gBAAgB,EAAE;6BAC1C;wBACH;oBACF;gBACF;gBAEA,OAAOjB;YACT;QACF,CAAA;AAEF,eAAeL,WAAU"}
|
package/dist/types.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types.ts"],"sourcesContent":["export interface Breadcrumb {\n doc: string\n label: string\n url?: string\n}\n\nexport type GenerateURL = (\n docs: Array<Record<string, unknown>>,\n currentDoc: Record<string, unknown>,\n) => string\n\nexport type GenerateLabel = (\n docs: Array<Record<string, unknown>>,\n currentDoc: Record<string, unknown>,\n) => string\n\nexport interface PluginConfig {\n /**\n * Should be supplied if using an alternative field name for the 'breadcrumbs' field in collections\n */\n breadcrumbsFieldSlug?: string\n /**\n * The slugs of the collections this plugin should extend. If you need different configs for different collections, this plugin can be added to your config more than once having different collections.\n */\n collections: string[]\n generateLabel?: GenerateLabel\n generateURL?: GenerateURL\n /**\n * Should be supplied if using an alternative field name for the 'parent' field in collections\n */\n parentFieldSlug?: string\n}\n"],"names":[],"mappings":"AAgBA,WAeC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CollectionConfig } from 'payload/types';
|
|
2
|
-
import type { Breadcrumb, PluginConfig } from '../types';
|
|
2
|
+
import type { Breadcrumb, PluginConfig } from '../types.js';
|
|
3
3
|
declare const formatBreadcrumb: (pluginConfig: PluginConfig, collection: CollectionConfig, docs: Array<Record<string, unknown>>) => Breadcrumb;
|
|
4
4
|
export default formatBreadcrumb;
|
|
5
5
|
//# sourceMappingURL=formatBreadcrumb.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatBreadcrumb.d.ts","sourceRoot":"","sources":["../../src/utilities/formatBreadcrumb.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"formatBreadcrumb.d.ts","sourceRoot":"","sources":["../../src/utilities/formatBreadcrumb.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE3D,QAAA,MAAM,gBAAgB,iBACN,YAAY,cACd,gBAAgB,QACtB,MAAM,OAAO,MAAM,EAAE,OAAO,CAAC,CAAC,KACnC,UAsBF,CAAA;AAED,eAAe,gBAAgB,CAAA"}
|
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
1
|
const formatBreadcrumb = (pluginConfig, collection, docs)=>{
|
|
12
2
|
let url = undefined;
|
|
13
3
|
let label;
|
|
@@ -22,11 +12,11 @@ const formatBreadcrumb = (pluginConfig, collection, docs)=>{
|
|
|
22
12
|
label = lastDoc[useAsTitle];
|
|
23
13
|
}
|
|
24
14
|
return {
|
|
15
|
+
doc: lastDoc.id,
|
|
25
16
|
label,
|
|
26
|
-
url
|
|
27
|
-
doc: lastDoc.id
|
|
17
|
+
url
|
|
28
18
|
};
|
|
29
19
|
};
|
|
30
|
-
|
|
20
|
+
export default formatBreadcrumb;
|
|
31
21
|
|
|
32
|
-
//# sourceMappingURL=
|
|
22
|
+
//# sourceMappingURL=formatBreadcrumb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/formatBreadcrumb.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload/types'\n\nimport type { Breadcrumb, PluginConfig } from '../types.js'\n\nconst formatBreadcrumb = (\n pluginConfig: PluginConfig,\n collection: CollectionConfig,\n docs: Array<Record<string, unknown>>,\n): Breadcrumb => {\n let url: string | undefined = undefined\n let label: string\n\n const lastDoc = docs[docs.length - 1]\n\n if (typeof pluginConfig?.generateURL === 'function') {\n url = pluginConfig.generateURL(docs, lastDoc)\n }\n\n if (typeof pluginConfig?.generateLabel === 'function') {\n label = pluginConfig.generateLabel(docs, lastDoc)\n } else {\n const useAsTitle = collection?.admin?.useAsTitle || 'id'\n label = lastDoc[useAsTitle] as string\n }\n\n return {\n doc: lastDoc.id as string,\n label,\n url,\n }\n}\n\nexport default formatBreadcrumb\n"],"names":["formatBreadcrumb","pluginConfig","collection","docs","url","undefined","label","lastDoc","length","generateURL","generateLabel","useAsTitle","admin","doc","id"],"mappings":"AAIA,MAAMA,mBAAmB,CACvBC,cACAC,YACAC;IAEA,IAAIC,MAA0BC;IAC9B,IAAIC;IAEJ,MAAMC,UAAUJ,IAAI,CAACA,KAAKK,MAAM,GAAG,EAAE;IAErC,IAAI,OAAOP,cAAcQ,gBAAgB,YAAY;QACnDL,MAAMH,aAAaQ,WAAW,CAACN,MAAMI;IACvC;IAEA,IAAI,OAAON,cAAcS,kBAAkB,YAAY;QACrDJ,QAAQL,aAAaS,aAAa,CAACP,MAAMI;IAC3C,OAAO;QACL,MAAMI,aAAaT,YAAYU,OAAOD,cAAc;QACpDL,QAAQC,OAAO,CAACI,WAAW;IAC7B;IAEA,OAAO;QACLE,KAAKN,QAAQO,EAAE;QACfR;QACAF;IACF;AACF;AAEA,eAAeJ,iBAAgB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CollectionConfig } from 'payload/types';
|
|
2
|
-
import type { PluginConfig } from '../types';
|
|
2
|
+
import type { PluginConfig } from '../types.js';
|
|
3
3
|
declare const getParents: (req: any, pluginConfig: PluginConfig, collection: CollectionConfig, doc: Record<string, unknown>, docs?: Array<Record<string, unknown>>) => Promise<Array<Record<string, unknown>>>;
|
|
4
4
|
export default getParents;
|
|
5
5
|
//# sourceMappingURL=getParents.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getParents.d.ts","sourceRoot":"","sources":["../../src/utilities/getParents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"getParents.d.ts","sourceRoot":"","sources":["../../src/utilities/getParents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,QAAA,MAAM,UAAU,QACT,GAAG,gBACM,YAAY,cACd,gBAAgB,OACvB,OAAO,MAAM,EAAE,OAAO,CAAC,SACtB,MAAM,OAAO,MAAM,EAAE,OAAO,CAAC,CAAC,KACnC,QAAQ,MAAM,OAAO,MAAM,EAAE,OAAO,CAAC,CAAC,CAmCxC,CAAA;AAED,eAAe,UAAU,CAAA"}
|
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
1
|
const getParents = async (req, pluginConfig, collection, doc, docs = [])=>{
|
|
12
2
|
const parentSlug = pluginConfig?.parentFieldSlug || 'parent';
|
|
13
3
|
const parent = doc[parentSlug];
|
|
@@ -42,6 +32,6 @@ const getParents = async (req, pluginConfig, collection, doc, docs = [])=>{
|
|
|
42
32
|
}
|
|
43
33
|
return docs;
|
|
44
34
|
};
|
|
45
|
-
|
|
35
|
+
export default getParents;
|
|
46
36
|
|
|
47
|
-
//# sourceMappingURL=
|
|
37
|
+
//# sourceMappingURL=getParents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/getParents.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload/types'\n\nimport type { PluginConfig } from '../types.js'\n\nconst getParents = async (\n req: any,\n pluginConfig: PluginConfig,\n collection: CollectionConfig,\n doc: Record<string, unknown>,\n docs: Array<Record<string, unknown>> = [],\n): Promise<Array<Record<string, unknown>>> => {\n const parentSlug = pluginConfig?.parentFieldSlug || 'parent'\n const parent = doc[parentSlug]\n let retrievedParent\n\n if (parent) {\n // If not auto-populated, and we have an ID\n if (typeof parent === 'string' || typeof parent === 'number') {\n retrievedParent = await req.payload.findByID({\n id: parent,\n collection: collection.slug,\n depth: 0,\n disableErrors: true,\n req,\n })\n }\n\n // If auto-populated\n if (typeof parent === 'object') {\n retrievedParent = parent\n }\n\n if (retrievedParent) {\n if (retrievedParent[parentSlug]) {\n return getParents(req, pluginConfig, collection, retrievedParent, [\n retrievedParent,\n ...docs,\n ])\n }\n\n return [retrievedParent, ...docs]\n }\n }\n\n return docs\n}\n\nexport default getParents\n"],"names":["getParents","req","pluginConfig","collection","doc","docs","parentSlug","parentFieldSlug","parent","retrievedParent","payload","findByID","id","slug","depth","disableErrors"],"mappings":"AAIA,MAAMA,aAAa,OACjBC,KACAC,cACAC,YACAC,KACAC,OAAuC,EAAE;IAEzC,MAAMC,aAAaJ,cAAcK,mBAAmB;IACpD,MAAMC,SAASJ,GAAG,CAACE,WAAW;IAC9B,IAAIG;IAEJ,IAAID,QAAQ;QACV,2CAA2C;QAC3C,IAAI,OAAOA,WAAW,YAAY,OAAOA,WAAW,UAAU;YAC5DC,kBAAkB,MAAMR,IAAIS,OAAO,CAACC,QAAQ,CAAC;gBAC3CC,IAAIJ;gBACJL,YAAYA,WAAWU,IAAI;gBAC3BC,OAAO;gBACPC,eAAe;gBACfd;YACF;QACF;QAEA,oBAAoB;QACpB,IAAI,OAAOO,WAAW,UAAU;YAC9BC,kBAAkBD;QACpB;QAEA,IAAIC,iBAAiB;YACnB,IAAIA,eAAe,CAACH,WAAW,EAAE;gBAC/B,OAAON,WAAWC,KAAKC,cAAcC,YAAYM,iBAAiB;oBAChEA;uBACGJ;iBACJ;YACH;YAEA,OAAO;gBAACI;mBAAoBJ;aAAK;QACnC;IACF;IAEA,OAAOA;AACT;AAEA,eAAeL,WAAU"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CollectionConfig } from 'payload/types';
|
|
2
|
-
import type { PluginConfig } from '../types';
|
|
2
|
+
import type { PluginConfig } from '../types.js';
|
|
3
3
|
declare const populateBreadcrumbs: (req: any, pluginConfig: PluginConfig, collection: CollectionConfig, data: any, originalDoc?: any) => Promise<any>;
|
|
4
4
|
export default populateBreadcrumbs;
|
|
5
5
|
//# sourceMappingURL=populateBreadcrumbs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"populateBreadcrumbs.d.ts","sourceRoot":"","sources":["../../src/utilities/populateBreadcrumbs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"populateBreadcrumbs.d.ts","sourceRoot":"","sources":["../../src/utilities/populateBreadcrumbs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAK/C,QAAA,MAAM,mBAAmB,QAClB,GAAG,gBACM,YAAY,cACd,gBAAgB,QACtB,GAAG,gBACK,GAAG,KAChB,QAAQ,GAAG,CA4Bb,CAAA;AAED,eAAe,mBAAmB,CAAA"}
|
|
@@ -1,24 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _formatBreadcrumb = /*#__PURE__*/ _interop_require_default(require("./formatBreadcrumb"));
|
|
12
|
-
const _getParents = /*#__PURE__*/ _interop_require_default(require("./getParents"));
|
|
13
|
-
function _interop_require_default(obj) {
|
|
14
|
-
return obj && obj.__esModule ? obj : {
|
|
15
|
-
default: obj
|
|
16
|
-
};
|
|
17
|
-
}
|
|
1
|
+
import formatBreadcrumb from './formatBreadcrumb.js';
|
|
2
|
+
import getParents from './getParents.js';
|
|
18
3
|
const populateBreadcrumbs = async (req, pluginConfig, collection, data, originalDoc)=>{
|
|
19
4
|
const newData = data;
|
|
20
5
|
const breadcrumbDocs = [
|
|
21
|
-
...await (
|
|
6
|
+
...await getParents(req, pluginConfig, collection, {
|
|
22
7
|
...originalDoc,
|
|
23
8
|
...data
|
|
24
9
|
})
|
|
@@ -31,13 +16,13 @@ const populateBreadcrumbs = async (req, pluginConfig, collection, data, original
|
|
|
31
16
|
currentDocBreadcrumb.id = originalDoc?.id;
|
|
32
17
|
}
|
|
33
18
|
breadcrumbDocs.push(currentDocBreadcrumb);
|
|
34
|
-
const breadcrumbs = breadcrumbDocs.map((_, i)=>(
|
|
19
|
+
const breadcrumbs = breadcrumbDocs.map((_, i)=>formatBreadcrumb(pluginConfig, collection, breadcrumbDocs.slice(0, i + 1))) // eslint-disable-line function-paren-newline
|
|
35
20
|
;
|
|
36
21
|
return {
|
|
37
22
|
...newData,
|
|
38
23
|
[pluginConfig?.breadcrumbsFieldSlug || 'breadcrumbs']: breadcrumbs
|
|
39
24
|
};
|
|
40
25
|
};
|
|
41
|
-
|
|
26
|
+
export default populateBreadcrumbs;
|
|
42
27
|
|
|
43
|
-
//# sourceMappingURL=
|
|
28
|
+
//# sourceMappingURL=populateBreadcrumbs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/populateBreadcrumbs.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload/types'\n\nimport type { PluginConfig } from '../types.js'\n\nimport formatBreadcrumb from './formatBreadcrumb.js'\nimport getParents from './getParents.js'\n\nconst populateBreadcrumbs = async (\n req: any,\n pluginConfig: PluginConfig,\n collection: CollectionConfig,\n data: any,\n originalDoc?: any,\n): Promise<any> => {\n const newData = data\n const breadcrumbDocs = [\n ...(await getParents(req, pluginConfig, collection, {\n ...originalDoc,\n ...data,\n })),\n ]\n\n const currentDocBreadcrumb = {\n ...originalDoc,\n ...data,\n }\n\n if (originalDoc?.id) {\n currentDocBreadcrumb.id = originalDoc?.id\n }\n\n breadcrumbDocs.push(currentDocBreadcrumb)\n\n const breadcrumbs = breadcrumbDocs.map((_, i) =>\n formatBreadcrumb(pluginConfig, collection, breadcrumbDocs.slice(0, i + 1)),\n ) // eslint-disable-line function-paren-newline\n\n return {\n ...newData,\n [pluginConfig?.breadcrumbsFieldSlug || 'breadcrumbs']: breadcrumbs,\n }\n}\n\nexport default populateBreadcrumbs\n"],"names":["formatBreadcrumb","getParents","populateBreadcrumbs","req","pluginConfig","collection","data","originalDoc","newData","breadcrumbDocs","currentDocBreadcrumb","id","push","breadcrumbs","map","_","i","slice","breadcrumbsFieldSlug"],"mappings":"AAIA,OAAOA,sBAAsB,wBAAuB;AACpD,OAAOC,gBAAgB,kBAAiB;AAExC,MAAMC,sBAAsB,OAC1BC,KACAC,cACAC,YACAC,MACAC;IAEA,MAAMC,UAAUF;IAChB,MAAMG,iBAAiB;WACjB,MAAMR,WAAWE,KAAKC,cAAcC,YAAY;YAClD,GAAGE,WAAW;YACd,GAAGD,IAAI;QACT;KACD;IAED,MAAMI,uBAAuB;QAC3B,GAAGH,WAAW;QACd,GAAGD,IAAI;IACT;IAEA,IAAIC,aAAaI,IAAI;QACnBD,qBAAqBC,EAAE,GAAGJ,aAAaI;IACzC;IAEAF,eAAeG,IAAI,CAACF;IAEpB,MAAMG,cAAcJ,eAAeK,GAAG,CAAC,CAACC,GAAGC,IACzChB,iBAAiBI,cAAcC,YAAYI,eAAeQ,KAAK,CAAC,GAAGD,IAAI,KACvE,6CAA6C;;IAE/C,OAAO;QACL,GAAGR,OAAO;QACV,CAACJ,cAAcc,wBAAwB,cAAc,EAAEL;IACzD;AACF;AAEA,eAAeX,oBAAmB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/plugin-nested-docs",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0-alpha.42",
|
|
4
4
|
"description": "The official Nested Docs plugin for Payload",
|
|
5
5
|
"repository": "https://github.com/payloadcms/payload",
|
|
6
6
|
"license": "MIT",
|
|
@@ -8,9 +8,13 @@
|
|
|
8
8
|
"author": "Payload CMS, Inc.",
|
|
9
9
|
"main": "./dist/index.js",
|
|
10
10
|
"types": "./dist/index.d.ts",
|
|
11
|
+
"type": "module",
|
|
11
12
|
"devDependencies": {
|
|
12
|
-
"@payloadcms/eslint-config": "1.1.
|
|
13
|
-
"payload": "
|
|
13
|
+
"@payloadcms/eslint-config": "1.1.1",
|
|
14
|
+
"payload": "3.0.0-alpha.42"
|
|
15
|
+
},
|
|
16
|
+
"peerDependencies": {
|
|
17
|
+
"payload": "3.0.0-alpha.42"
|
|
14
18
|
},
|
|
15
19
|
"exports": null,
|
|
16
20
|
"publishConfig": {
|