@payloadcms/plugin-nested-docs 3.0.0-beta.9 → 3.0.0-canary.f6e77b8

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.
Files changed (49) hide show
  1. package/dist/exports/types.d.ts +2 -0
  2. package/dist/exports/types.d.ts.map +1 -0
  3. package/dist/exports/types.js +3 -0
  4. package/dist/exports/types.js.map +1 -0
  5. package/dist/fields/breadcrumbs.d.ts +0 -1
  6. package/dist/fields/breadcrumbs.d.ts.map +1 -1
  7. package/dist/fields/breadcrumbs.js +0 -1
  8. package/dist/fields/breadcrumbs.js.map +1 -1
  9. package/dist/fields/parent.d.ts +0 -1
  10. package/dist/fields/parent.d.ts.map +1 -1
  11. package/dist/fields/parent.js +0 -1
  12. package/dist/fields/parent.js.map +1 -1
  13. package/dist/fields/parentFilterOptions.d.ts +0 -1
  14. package/dist/fields/parentFilterOptions.d.ts.map +1 -1
  15. package/dist/fields/parentFilterOptions.js +0 -1
  16. package/dist/fields/parentFilterOptions.js.map +1 -1
  17. package/dist/hooks/resaveChildren.d.ts +2 -3
  18. package/dist/hooks/resaveChildren.d.ts.map +1 -1
  19. package/dist/hooks/resaveChildren.js +2 -3
  20. package/dist/hooks/resaveChildren.js.map +1 -1
  21. package/dist/hooks/resaveSelfAfterCreate.d.ts +2 -3
  22. package/dist/hooks/resaveSelfAfterCreate.d.ts.map +1 -1
  23. package/dist/hooks/resaveSelfAfterCreate.js +1 -2
  24. package/dist/hooks/resaveSelfAfterCreate.js.map +1 -1
  25. package/dist/index.d.ts +5 -3
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +8 -8
  28. package/dist/index.js.map +1 -1
  29. package/dist/types.d.ts +4 -4
  30. package/dist/types.d.ts.map +1 -1
  31. package/dist/types.js.map +1 -1
  32. package/dist/utilities/formatBreadcrumb.d.ts +2 -3
  33. package/dist/utilities/formatBreadcrumb.d.ts.map +1 -1
  34. package/dist/utilities/formatBreadcrumb.js +1 -2
  35. package/dist/utilities/formatBreadcrumb.js.map +1 -1
  36. package/dist/utilities/getParents.d.ts +2 -3
  37. package/dist/utilities/getParents.d.ts.map +1 -1
  38. package/dist/utilities/getParents.js +1 -2
  39. package/dist/utilities/getParents.js.map +1 -1
  40. package/dist/utilities/populateBreadcrumbs.d.ts +2 -3
  41. package/dist/utilities/populateBreadcrumbs.d.ts.map +1 -1
  42. package/dist/utilities/populateBreadcrumbs.js +3 -4
  43. package/dist/utilities/populateBreadcrumbs.js.map +1 -1
  44. package/package.json +21 -17
  45. package/fields.d.ts +0 -2
  46. package/fields.js +0 -7
  47. package/src/index.ts +0 -71
  48. package/types.d.ts +0 -1
  49. package/types.js +0 -1
@@ -0,0 +1,2 @@
1
+ export type { Breadcrumb, GenerateLabel, GenerateURL, NestedDocsPluginConfig } from '../types.js';
2
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/exports/types.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/exports/types.ts"],"sourcesContent":["export type { Breadcrumb, GenerateLabel, GenerateURL, NestedDocsPluginConfig } from '../types.js'\n"],"names":[],"rangeMappings":"","mappings":"AAAA,WAAiG"}
@@ -1,4 +1,3 @@
1
1
  import type { ArrayField, Field } from 'payload/types';
2
2
  export declare const createBreadcrumbsField: (relationTo: string, overrides?: Partial<ArrayField>) => Field;
3
- export default createBreadcrumbsField;
4
3
  //# sourceMappingURL=breadcrumbs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumbs.d.ts","sourceRoot":"","sources":["../../src/fields/breadcrumbs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAEtD,eAAO,MAAM,sBAAsB,eACrB,MAAM,cACP,QAAQ,UAAU,CAAC,KAC7B,KAyCD,CAAA;AAEF,eAAe,sBAAsB,CAAA"}
1
+ {"version":3,"file":"breadcrumbs.d.ts","sourceRoot":"","sources":["../../src/fields/breadcrumbs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAEtD,eAAO,MAAM,sBAAsB,eACrB,MAAM,cACP,QAAQ,UAAU,CAAC,KAC7B,KAyCD,CAAA"}
@@ -40,6 +40,5 @@ export const createBreadcrumbsField = (relationTo, overrides = {})=>({
40
40
  ...overrides?.fields || []
41
41
  ]
42
42
  });
43
- export default createBreadcrumbsField;
44
43
 
45
44
  //# sourceMappingURL=breadcrumbs.js.map
@@ -1 +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 type: 'array',\n localized: true,\n ...(overrides || {}),\n admin: {\n readOnly: true,\n ...(overrides?.admin || {}),\n },\n fields: [\n {\n name: 'doc',\n type: 'relationship',\n admin: {\n disabled: true,\n },\n maxDepth: 0,\n relationTo,\n },\n {\n type: 'row',\n fields: [\n {\n name: 'url',\n type: 'text',\n admin: {\n width: '50%',\n },\n label: 'URL',\n },\n {\n name: 'label',\n type: 'text',\n admin: {\n width: '50%',\n },\n },\n ],\n },\n ...(overrides?.fields || []),\n ],\n})\n\nexport default createBreadcrumbsField\n"],"names":["createBreadcrumbsField","relationTo","overrides","name","type","localized","admin","readOnly","fields","disabled","maxDepth","width","label"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAO,MAAMA,yBAAyB,CACpCC,YACAC,YAAiC,CAAC,CAAC,GACxB,CAAA;QACXC,MAAM;QACNC,MAAM;QACNC,WAAW;QACX,GAAIH,aAAa,CAAC,CAAC;QACnBI,OAAO;YACLC,UAAU;YACV,GAAIL,WAAWI,SAAS,CAAC,CAAC;QAC5B;QACAE,QAAQ;YACN;gBACEL,MAAM;gBACNC,MAAM;gBACNE,OAAO;oBACLG,UAAU;gBACZ;gBACAC,UAAU;gBACVT;YACF;YACA;gBACEG,MAAM;gBACNI,QAAQ;oBACN;wBACEL,MAAM;wBACNC,MAAM;wBACNE,OAAO;4BACLK,OAAO;wBACT;wBACAC,OAAO;oBACT;oBACA;wBACET,MAAM;wBACNC,MAAM;wBACNE,OAAO;4BACLK,OAAO;wBACT;oBACF;iBACD;YACH;eACIT,WAAWM,UAAU,EAAE;SAC5B;IACH,CAAA,EAAE;AAEF,eAAeR,uBAAsB"}
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 type: 'array',\n localized: true,\n ...(overrides || {}),\n admin: {\n readOnly: true,\n ...(overrides?.admin || {}),\n },\n fields: [\n {\n name: 'doc',\n type: 'relationship',\n admin: {\n disabled: true,\n },\n maxDepth: 0,\n relationTo,\n },\n {\n type: 'row',\n fields: [\n {\n name: 'url',\n type: 'text',\n admin: {\n width: '50%',\n },\n label: 'URL',\n },\n {\n name: 'label',\n type: 'text',\n admin: {\n width: '50%',\n },\n },\n ],\n },\n ...(overrides?.fields || []),\n ],\n})\n"],"names":["createBreadcrumbsField","relationTo","overrides","name","type","localized","admin","readOnly","fields","disabled","maxDepth","width","label"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAO,MAAMA,yBAAyB,CACpCC,YACAC,YAAiC,CAAC,CAAC,GACxB,CAAA;QACXC,MAAM;QACNC,MAAM;QACNC,WAAW;QACX,GAAIH,aAAa,CAAC,CAAC;QACnBI,OAAO;YACLC,UAAU;YACV,GAAIL,WAAWI,SAAS,CAAC,CAAC;QAC5B;QACAE,QAAQ;YACN;gBACEL,MAAM;gBACNC,MAAM;gBACNE,OAAO;oBACLG,UAAU;gBACZ;gBACAC,UAAU;gBACVT;YACF;YACA;gBACEG,MAAM;gBACNI,QAAQ;oBACN;wBACEL,MAAM;wBACNC,MAAM;wBACNE,OAAO;4BACLK,OAAO;wBACT;wBACAC,OAAO;oBACT;oBACA;wBACET,MAAM;wBACNC,MAAM;wBACNE,OAAO;4BACLK,OAAO;wBACT;oBACF;iBACD;YACH;eACIT,WAAWM,UAAU,EAAE;SAC5B;IACH,CAAA,EAAE"}
@@ -2,5 +2,4 @@ import type { SingleRelationshipField } from 'payload/types';
2
2
  export declare const createParentField: (relationTo: string, overrides?: Partial<SingleRelationshipField & {
3
3
  hasMany: false;
4
4
  }>) => SingleRelationshipField;
5
- export default createParentField;
6
5
  //# sourceMappingURL=parent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parent.d.ts","sourceRoot":"","sources":["../../src/fields/parent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAE5D,eAAO,MAAM,iBAAiB,eAChB,MAAM,cACN,QACV,uBAAuB,GAAG;IACxB,OAAO,EAAE,KAAK,CAAA;CACf,CACF,KACA,uBAYD,CAAA;AAEF,eAAe,iBAAiB,CAAA"}
1
+ {"version":3,"file":"parent.d.ts","sourceRoot":"","sources":["../../src/fields/parent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAE5D,eAAO,MAAM,iBAAiB,eAChB,MAAM,cACN,QACV,uBAAuB,GAAG;IACxB,OAAO,EAAE,KAAK,CAAA;CACf,CACF,KACA,uBAYD,CAAA"}
@@ -11,6 +11,5 @@ export const createParentField = (relationTo, overrides)=>({
11
11
  relationTo,
12
12
  ...overrides || {}
13
13
  });
14
- export default createParentField;
15
14
 
16
15
  //# sourceMappingURL=parent.js.map
@@ -1 +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 type: 'relationship',\n maxDepth: 1,\n relationTo,\n ...(overrides || {}),\n})\n\nexport default createParentField\n"],"names":["createParentField","relationTo","overrides","name","admin","position","type","maxDepth"],"rangeMappings":";;;;;;;;;;;;;","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,MAAM;QACNC,UAAU;QACVN;QACA,GAAIC,aAAa,CAAC,CAAC;IACrB,CAAA,EAAE;AAEF,eAAeF,kBAAiB"}
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 type: 'relationship',\n maxDepth: 1,\n relationTo,\n ...(overrides || {}),\n})\n"],"names":["createParentField","relationTo","overrides","name","admin","position","type","maxDepth"],"rangeMappings":";;;;;;;;;;;;","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,MAAM;QACNC,UAAU;QACVN;QACA,GAAIC,aAAa,CAAC,CAAC;IACrB,CAAA,EAAE"}
@@ -1,4 +1,3 @@
1
1
  import type { FilterOptions } from 'payload/types';
2
2
  export declare const parentFilterOptions: (breadcrumbsFieldSlug?: string) => FilterOptions;
3
- export default parentFilterOptions;
4
3
  //# 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,eAAe,CAAA;AAElD,eAAO,MAAM,mBAAmB,EAAE,CAAC,oBAAoB,CAAC,EAAE,MAAM,KAAK,aAWlE,CAAA;AAEH,eAAe,mBAAmB,CAAA"}
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"}
@@ -13,6 +13,5 @@ export const parentFilterOptions = (breadcrumbsFieldSlug = 'breadcrumbs')=>({ id
13
13
  }
14
14
  return null;
15
15
  };
16
- export default parentFilterOptions;
17
16
 
18
17
  //# sourceMappingURL=parentFilterOptions.js.map
@@ -1 +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"],"rangeMappings":";;;;;;;;;;;;;;;","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
+ {"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"],"names":["parentFilterOptions","breadcrumbsFieldSlug","id","not_equals","not_in"],"rangeMappings":";;;;;;;;;;;;;;","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"}
@@ -1,5 +1,4 @@
1
1
  import type { CollectionAfterChangeHook, CollectionConfig } from 'payload/types';
2
- import type { PluginConfig } from '../types.js';
3
- declare const resaveChildren: (pluginConfig: PluginConfig, collection: CollectionConfig) => CollectionAfterChangeHook;
4
- export default resaveChildren;
2
+ import type { NestedDocsPluginConfig } from '../types.js';
3
+ export declare const resaveChildren: (pluginConfig: NestedDocsPluginConfig, collection: CollectionConfig) => CollectionAfterChangeHook;
5
4
  //# 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,aAAa,CAAA;AAiE/C,QAAA,MAAM,cAAc,iBACH,YAAY,cAAc,gBAAgB,KAAG,yBAqB3D,CAAA;AACH,eAAe,cAAc,CAAA"}
1
+ {"version":3,"file":"resaveChildren.d.ts","sourceRoot":"","sources":["../../src/hooks/resaveChildren.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,gBAAgB,EAEjB,MAAM,eAAe,CAAA;AAEtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAiEzD,eAAO,MAAM,cAAc,iBACV,sBAAsB,cAAc,gBAAgB,KAAG,yBAqBrE,CAAA"}
@@ -1,4 +1,4 @@
1
- import populateBreadcrumbs from '../utilities/populateBreadcrumbs.js';
1
+ import { populateBreadcrumbs } from '../utilities/populateBreadcrumbs.js';
2
2
  const resave = async ({ collection, doc, draft, pluginConfig, req })=>{
3
3
  const parentSlug = pluginConfig?.parentFieldSlug || 'parent';
4
4
  const parentDocIsPublished = doc._status === 'published';
@@ -38,7 +38,7 @@ const resave = async ({ collection, doc, draft, pluginConfig, req })=>{
38
38
  req.payload.logger.error(err);
39
39
  }
40
40
  };
41
- const resaveChildren = (pluginConfig, collection)=>async ({ doc, req })=>{
41
+ export const resaveChildren = (pluginConfig, collection)=>async ({ doc, req })=>{
42
42
  await resave({
43
43
  collection,
44
44
  doc,
@@ -57,6 +57,5 @@ const resaveChildren = (pluginConfig, collection)=>async ({ doc, req })=>{
57
57
  }
58
58
  return undefined;
59
59
  };
60
- export default resaveChildren;
61
60
 
62
61
  //# sourceMappingURL=resaveChildren.js.map
@@ -1 +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"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","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
+ {"version":3,"sources":["../../src/hooks/resaveChildren.ts"],"sourcesContent":["import type {\n CollectionAfterChangeHook,\n CollectionConfig,\n PayloadRequestWithData,\n} from 'payload/types'\n\nimport type { NestedDocsPluginConfig } 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: NestedDocsPluginConfig\n req: PayloadRequestWithData\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\nexport const resaveChildren =\n (pluginConfig: NestedDocsPluginConfig, 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 }\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"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAQA,SAASA,mBAAmB,QAAQ,sCAAqC;AAUzE,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,OAAO,MAAMG,iBACX,CAAC/B,cAAsCH,aACvC,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,EAAC"}
@@ -1,5 +1,4 @@
1
1
  import type { CollectionAfterChangeHook, CollectionConfig } from 'payload/types';
2
- import type { PluginConfig } from '../types.js';
3
- declare const resaveSelfAfterCreate: (pluginConfig: PluginConfig, collection: CollectionConfig) => CollectionAfterChangeHook;
4
- export default resaveSelfAfterCreate;
2
+ import type { NestedDocsPluginConfig } from '../types.js';
3
+ export declare const resaveSelfAfterCreate: (pluginConfig: NestedDocsPluginConfig, collection: CollectionConfig) => CollectionAfterChangeHook;
5
4
  //# 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,aAAa,CAAA;AAK/C,QAAA,MAAM,qBAAqB,iBACV,YAAY,cAAc,gBAAgB,KAAG,yBA6C3D,CAAA;AAEH,eAAe,qBAAqB,CAAA"}
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,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAKzD,eAAO,MAAM,qBAAqB,iBACjB,sBAAsB,cAAc,gBAAgB,KAAG,yBA6CrE,CAAA"}
@@ -1,6 +1,6 @@
1
1
  // This hook automatically re-saves a document after it is created
2
2
  // so that we can build its breadcrumbs with the newly created document's ID.
3
- const resaveSelfAfterCreate = (pluginConfig, collection)=>async ({ doc, operation, req })=>{
3
+ export const resaveSelfAfterCreate = (pluginConfig, collection)=>async ({ doc, operation, req })=>{
4
4
  const { locale, payload } = req;
5
5
  const breadcrumbSlug = pluginConfig.breadcrumbsFieldSlug || 'breadcrumbs';
6
6
  const breadcrumbs = doc[breadcrumbSlug];
@@ -35,6 +35,5 @@ const resaveSelfAfterCreate = (pluginConfig, collection)=>async ({ doc, operatio
35
35
  }
36
36
  return undefined;
37
37
  };
38
- export default resaveSelfAfterCreate;
39
38
 
40
39
  //# sourceMappingURL=resaveSelfAfterCreate.js.map
@@ -1 +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"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","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"}
1
+ {"version":3,"sources":["../../src/hooks/resaveSelfAfterCreate.ts"],"sourcesContent":["import type { CollectionAfterChangeHook, CollectionConfig } from 'payload/types'\n\nimport type { NestedDocsPluginConfig } 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\nexport const resaveSelfAfterCreate =\n (pluginConfig: NestedDocsPluginConfig, 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"],"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"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,kEAAkE;AAClE,6EAA6E;AAE7E,OAAO,MAAMA,wBACX,CAACC,cAAsCC,aACvC,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,EAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import type { Plugin } from 'payload/config';
2
- import type { PluginConfig } from './types.js';
3
- declare const nestedDocs: (pluginConfig: PluginConfig) => Plugin;
4
- export default nestedDocs;
2
+ import type { NestedDocsPluginConfig } from './types.js';
3
+ import { createBreadcrumbsField } from './fields/breadcrumbs.js';
4
+ import { createParentField } from './fields/parent.js';
5
+ export { createBreadcrumbsField, createParentField };
6
+ export declare const nestedDocsPlugin: (pluginConfig: NestedDocsPluginConfig) => Plugin;
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -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,YAAY,CAAA;AAS9C,QAAA,MAAM,UAAU,iBACC,YAAY,KAAG,MAuD5B,CAAA;AAEJ,eAAe,UAAU,CAAA"}
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,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAExD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAMtD,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,CAAA;AAEpD,eAAO,MAAM,gBAAgB,iBACZ,sBAAsB,KAAG,MAuDtC,CAAA"}
package/dist/index.js CHANGED
@@ -1,10 +1,11 @@
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';
7
- const nestedDocs = (pluginConfig)=>(config)=>({
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';
7
+ export { createBreadcrumbsField, createParentField };
8
+ export const nestedDocsPlugin = (pluginConfig)=>(config)=>({
8
9
  ...config,
9
10
  collections: (config.collections || []).map((collection)=>{
10
11
  if (pluginConfig.collections.indexOf(collection.slug) > -1) {
@@ -47,6 +48,5 @@ const nestedDocs = (pluginConfig)=>(config)=>({
47
48
  return collection;
48
49
  })
49
50
  });
50
- export default nestedDocs;
51
51
 
52
52
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +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"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","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"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { Plugin } from 'payload/config'\nimport type { SingleRelationshipField } from 'payload/types'\n\nimport type { NestedDocsPluginConfig } 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\nexport { createBreadcrumbsField, createParentField }\n\nexport const nestedDocsPlugin =\n (pluginConfig: NestedDocsPluginConfig): 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"],"names":["createBreadcrumbsField","createParentField","parentFilterOptions","resaveChildren","resaveSelfAfterCreate","populateBreadcrumbs","nestedDocsPlugin","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"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAKA,SAASA,sBAAsB,QAAQ,0BAAyB;AAChE,SAASC,iBAAiB,QAAQ,qBAAoB;AACtD,SAASC,mBAAmB,QAAQ,kCAAiC;AACrE,SAASC,cAAc,QAAQ,4BAA2B;AAC1D,SAASC,qBAAqB,QAAQ,mCAAkC;AACxE,SAASC,mBAAmB,QAAQ,qCAAoC;AAExE,SAASL,sBAAsB,EAAEC,iBAAiB,GAAE;AAEpD,OAAO,MAAMK,mBACX,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,EAAE"}
package/dist/types.d.ts CHANGED
@@ -1,11 +1,11 @@
1
- export interface Breadcrumb {
1
+ export type Breadcrumb = {
2
2
  doc: string;
3
3
  label: string;
4
4
  url?: string;
5
- }
5
+ };
6
6
  export type GenerateURL = (docs: Array<Record<string, unknown>>, currentDoc: Record<string, unknown>) => string;
7
7
  export type GenerateLabel = (docs: Array<Record<string, unknown>>, currentDoc: Record<string, unknown>) => string;
8
- export interface PluginConfig {
8
+ export type NestedDocsPluginConfig = {
9
9
  /**
10
10
  * Should be supplied if using an alternative field name for the 'breadcrumbs' field in collections
11
11
  */
@@ -20,5 +20,5 @@ export interface PluginConfig {
20
20
  * Should be supplied if using an alternative field name for the 'parent' field in collections
21
21
  */
22
22
  parentFieldSlug?: string;
23
- }
23
+ };
24
24
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,MAAM,WAAW,GAAG,CACxB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAChC,MAAM,CAAA;AAEX,MAAM,MAAM,aAAa,GAAG,CAC1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAChC,MAAM,CAAA;AAEX,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B;;OAEG;IACH,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,CACxB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAChC,MAAM,CAAA;AAEX,MAAM,MAAM,aAAa,GAAG,CAC1B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAChC,MAAM,CAAA;AAEX,MAAM,MAAM,sBAAsB,GAAG;IACnC;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B;;OAEG;IACH,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA"}
package/dist/types.js.map CHANGED
@@ -1 +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":[],"rangeMappings":"","mappings":"AAgBA,WAeC"}
1
+ {"version":3,"sources":["../src/types.ts"],"sourcesContent":["export type 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 type NestedDocsPluginConfig = {\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":[],"rangeMappings":"","mappings":"AAgBA,WAeC"}
@@ -1,5 +1,4 @@
1
1
  import type { CollectionConfig } from 'payload/types';
2
- import type { Breadcrumb, PluginConfig } from '../types.js';
3
- declare const formatBreadcrumb: (pluginConfig: PluginConfig, collection: CollectionConfig, docs: Array<Record<string, unknown>>) => Breadcrumb;
4
- export default formatBreadcrumb;
2
+ import type { Breadcrumb, NestedDocsPluginConfig } from '../types.js';
3
+ export declare const formatBreadcrumb: (pluginConfig: NestedDocsPluginConfig, collection: CollectionConfig, docs: Array<Record<string, unknown>>) => Breadcrumb;
5
4
  //# 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,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
+ {"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,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAErE,eAAO,MAAM,gBAAgB,iBACb,sBAAsB,cACxB,gBAAgB,QACtB,MAAM,OAAO,MAAM,EAAE,OAAO,CAAC,CAAC,KACnC,UAsBF,CAAA"}
@@ -1,4 +1,4 @@
1
- const formatBreadcrumb = (pluginConfig, collection, docs)=>{
1
+ export const formatBreadcrumb = (pluginConfig, collection, docs)=>{
2
2
  let url = undefined;
3
3
  let label;
4
4
  const lastDoc = docs[docs.length - 1];
@@ -17,6 +17,5 @@ const formatBreadcrumb = (pluginConfig, collection, docs)=>{
17
17
  url
18
18
  };
19
19
  };
20
- export default formatBreadcrumb;
21
20
 
22
21
  //# sourceMappingURL=formatBreadcrumb.js.map
@@ -1 +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"],"rangeMappings":";;;;;;;;;;;;;;;;;;;","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
+ {"version":3,"sources":["../../src/utilities/formatBreadcrumb.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload/types'\n\nimport type { Breadcrumb, NestedDocsPluginConfig } from '../types.js'\n\nexport const formatBreadcrumb = (\n pluginConfig: NestedDocsPluginConfig,\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"],"names":["formatBreadcrumb","pluginConfig","collection","docs","url","undefined","label","lastDoc","length","generateURL","generateLabel","useAsTitle","admin","doc","id"],"rangeMappings":";;;;;;;;;;;;;;;;;;","mappings":"AAIA,OAAO,MAAMA,mBAAmB,CAC9BC,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,EAAC"}
@@ -1,5 +1,4 @@
1
1
  import type { CollectionConfig } from 'payload/types';
2
- import type { PluginConfig } from '../types.js';
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
- export default getParents;
2
+ import type { NestedDocsPluginConfig } from '../types.js';
3
+ export declare const getParents: (req: any, pluginConfig: NestedDocsPluginConfig, collection: CollectionConfig, doc: Record<string, unknown>, docs?: Array<Record<string, unknown>>) => Promise<Array<Record<string, unknown>>>;
5
4
  //# 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,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
+ {"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,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEzD,eAAO,MAAM,UAAU,QAChB,GAAG,gBACM,sBAAsB,cACxB,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"}
@@ -1,4 +1,4 @@
1
- const getParents = async (req, pluginConfig, collection, doc, docs = [])=>{
1
+ export const getParents = async (req, pluginConfig, collection, doc, docs = [])=>{
2
2
  const parentSlug = pluginConfig?.parentFieldSlug || 'parent';
3
3
  const parent = doc[parentSlug];
4
4
  let retrievedParent;
@@ -32,6 +32,5 @@ const getParents = async (req, pluginConfig, collection, doc, docs = [])=>{
32
32
  }
33
33
  return docs;
34
34
  };
35
- export default getParents;
36
35
 
37
36
  //# sourceMappingURL=getParents.js.map
@@ -1 +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"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","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
+ {"version":3,"sources":["../../src/utilities/getParents.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload/types'\n\nimport type { NestedDocsPluginConfig } from '../types.js'\n\nexport const getParents = async (\n req: any,\n pluginConfig: NestedDocsPluginConfig,\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"],"names":["getParents","req","pluginConfig","collection","doc","docs","parentSlug","parentFieldSlug","parent","retrievedParent","payload","findByID","id","slug","depth","disableErrors"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,OAAO,MAAMA,aAAa,OACxBC,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,EAAC"}
@@ -1,5 +1,4 @@
1
1
  import type { CollectionConfig } from 'payload/types';
2
- import type { PluginConfig } from '../types.js';
3
- declare const populateBreadcrumbs: (req: any, pluginConfig: PluginConfig, collection: CollectionConfig, data: any, originalDoc?: any) => Promise<any>;
4
- export default populateBreadcrumbs;
2
+ import type { NestedDocsPluginConfig } from '../types.js';
3
+ export declare const populateBreadcrumbs: (req: any, pluginConfig: NestedDocsPluginConfig, collection: CollectionConfig, data: any, originalDoc?: any) => Promise<any>;
5
4
  //# 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,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
+ {"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,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAKzD,eAAO,MAAM,mBAAmB,QACzB,GAAG,gBACM,sBAAsB,cACxB,gBAAgB,QACtB,GAAG,gBACK,GAAG,KAChB,QAAQ,GAAG,CA4Bb,CAAA"}
@@ -1,6 +1,6 @@
1
- import formatBreadcrumb from './formatBreadcrumb.js';
2
- import getParents from './getParents.js';
3
- const populateBreadcrumbs = async (req, pluginConfig, collection, data, originalDoc)=>{
1
+ import { formatBreadcrumb } from './formatBreadcrumb.js';
2
+ import { getParents } from './getParents.js';
3
+ export const populateBreadcrumbs = async (req, pluginConfig, collection, data, originalDoc)=>{
4
4
  const newData = data;
5
5
  const breadcrumbDocs = [
6
6
  ...await getParents(req, pluginConfig, collection, {
@@ -23,6 +23,5 @@ const populateBreadcrumbs = async (req, pluginConfig, collection, data, original
23
23
  [pluginConfig?.breadcrumbsFieldSlug || 'breadcrumbs']: breadcrumbs
24
24
  };
25
25
  };
26
- export default populateBreadcrumbs;
27
26
 
28
27
  //# sourceMappingURL=populateBreadcrumbs.js.map
@@ -1 +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"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;","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"}
1
+ {"version":3,"sources":["../../src/utilities/populateBreadcrumbs.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload/types'\n\nimport type { NestedDocsPluginConfig } from '../types.js'\n\nimport { formatBreadcrumb } from './formatBreadcrumb.js'\nimport { getParents } from './getParents.js'\n\nexport const populateBreadcrumbs = async (\n req: any,\n pluginConfig: NestedDocsPluginConfig,\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"],"names":["formatBreadcrumb","getParents","populateBreadcrumbs","req","pluginConfig","collection","data","originalDoc","newData","breadcrumbDocs","currentDocBreadcrumb","id","push","breadcrumbs","map","_","i","slice","breadcrumbsFieldSlug"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,gBAAgB,QAAQ,wBAAuB;AACxD,SAASC,UAAU,QAAQ,kBAAiB;AAE5C,OAAO,MAAMC,sBAAsB,OACjCC,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,EAAC"}
package/package.json CHANGED
@@ -1,39 +1,43 @@
1
1
  {
2
2
  "name": "@payloadcms/plugin-nested-docs",
3
- "version": "3.0.0-beta.9",
3
+ "version": "3.0.0-canary.f6e77b8",
4
4
  "description": "The official Nested Docs plugin for Payload",
5
+ "homepage": "https://payloadcms.com",
5
6
  "repository": {
6
7
  "type": "git",
7
8
  "url": "https://github.com/payloadcms/payload.git",
8
9
  "directory": "packages/plugin-nested-docs"
9
10
  },
10
11
  "license": "MIT",
11
- "homepage": "https://payloadcms.com",
12
- "author": "Payload CMS, Inc.",
13
- "main": "./dist/index.js",
14
- "types": "./dist/index.d.ts",
12
+ "author": "Payload <dev@payloadcms.com> (https://payloadcms.com)",
15
13
  "type": "module",
16
- "devDependencies": {
17
- "@payloadcms/eslint-config": "1.1.1",
18
- "payload": "3.0.0-beta.9"
19
- },
20
- "peerDependencies": {
21
- "payload": "3.0.0-beta.9"
22
- },
23
14
  "exports": {
24
15
  ".": {
25
16
  "import": "./dist/index.js",
26
17
  "require": "./dist/index.js",
27
18
  "types": "./dist/index.d.ts"
19
+ },
20
+ "./*": {
21
+ "import": "./dist/exports/*.js",
22
+ "require": "./dist/exports/*.js",
23
+ "types": "./dist/exports/*.d.ts"
28
24
  }
29
25
  },
26
+ "main": "./dist/index.js",
27
+ "types": "./dist/index.d.ts",
30
28
  "files": [
31
- "dist",
32
- "fields.js",
33
- "fields.d.ts",
34
- "types.js",
35
- "types.d.ts"
29
+ "dist"
36
30
  ],
31
+ "devDependencies": {
32
+ "@payloadcms/eslint-config": "1.1.1",
33
+ "payload": "3.0.0-canary.f6e77b8"
34
+ },
35
+ "peerDependencies": {
36
+ "payload": "3.0.0-canary.f6e77b8"
37
+ },
38
+ "publishConfig": {
39
+ "registry": "https://registry.npmjs.org/"
40
+ },
37
41
  "scripts": {
38
42
  "build": "pnpm copyfiles && pnpm build:swc && pnpm build:types",
39
43
  "build:swc": "swc ./src -d ./dist --config-file .swcrc",
package/fields.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from './dist/fields/breadcrumbs'
2
- export * from './dist/fields/parent'
package/fields.js DELETED
@@ -1,7 +0,0 @@
1
- const breadcrumbs = require('./dist/fields/breadcrumbs')
2
- const parent = require('./dist/fields/parent')
3
-
4
- module.exports = {
5
- breadcrumbs,
6
- parent,
7
- }
package/src/index.ts DELETED
@@ -1,71 +0,0 @@
1
- import type { Plugin } from 'payload/config'
2
- import type { SingleRelationshipField } from 'payload/types'
3
-
4
- import type { PluginConfig } from './types.js'
5
-
6
- import createBreadcrumbsField from './fields/breadcrumbs.js'
7
- import createParentField from './fields/parent.js'
8
- import parentFilterOptions from './fields/parentFilterOptions.js'
9
- import resaveChildren from './hooks/resaveChildren.js'
10
- import resaveSelfAfterCreate from './hooks/resaveSelfAfterCreate.js'
11
- import populateBreadcrumbs from './utilities/populateBreadcrumbs.js'
12
-
13
- const nestedDocs =
14
- (pluginConfig: PluginConfig): Plugin =>
15
- (config) => ({
16
- ...config,
17
- collections: (config.collections || []).map((collection) => {
18
- if (pluginConfig.collections.indexOf(collection.slug) > -1) {
19
- const fields = [...(collection?.fields || [])]
20
-
21
- const existingBreadcrumbField = collection.fields.find(
22
- (field) =>
23
- 'name' in field && field.name === (pluginConfig?.breadcrumbsFieldSlug || 'breadcrumbs'),
24
- )
25
-
26
- const existingParentField = collection.fields.find(
27
- (field) => 'name' in field && field.name === (pluginConfig?.parentFieldSlug || 'parent'),
28
- ) as SingleRelationshipField
29
-
30
- const defaultFilterOptions = parentFilterOptions(pluginConfig?.breadcrumbsFieldSlug)
31
-
32
- if (existingParentField) {
33
- if (!existingParentField.filterOptions) {
34
- existingParentField.filterOptions = defaultFilterOptions
35
- }
36
- }
37
-
38
- if (!existingParentField && !pluginConfig.parentFieldSlug) {
39
- const defaultParentField = createParentField(collection.slug)
40
- defaultParentField.filterOptions = defaultFilterOptions
41
- fields.push(defaultParentField)
42
- }
43
-
44
- if (!existingBreadcrumbField && !pluginConfig.breadcrumbsFieldSlug) {
45
- fields.push(createBreadcrumbsField(collection.slug))
46
- }
47
-
48
- return {
49
- ...collection,
50
- fields,
51
- hooks: {
52
- ...(collection.hooks || {}),
53
- afterChange: [
54
- resaveChildren(pluginConfig, collection),
55
- resaveSelfAfterCreate(pluginConfig, collection),
56
- ...(collection?.hooks?.afterChange || []),
57
- ],
58
- beforeChange: [
59
- async ({ data, originalDoc, req }) =>
60
- populateBreadcrumbs(req, pluginConfig, collection, data, originalDoc),
61
- ...(collection?.hooks?.beforeChange || []),
62
- ],
63
- },
64
- }
65
- }
66
-
67
- return collection
68
- }),
69
- })
70
-
71
- export default nestedDocs
package/types.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from './dist/types'
package/types.js DELETED
@@ -1 +0,0 @@
1
- module.exports = require('./dist/types')