@payloadcms/plugin-nested-docs 1.0.3 → 1.0.4
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/README.md +100 -39
- package/dist/fields/parent.d.ts +1 -1
- package/dist/fields/parent.js +7 -1
- package/dist/fields/parent.js.map +1 -1
- package/dist/formatBreadcrumb.d.ts +4 -0
- package/dist/formatBreadcrumb.js +25 -0
- package/dist/formatBreadcrumb.js.map +1 -0
- package/dist/getParents.d.ts +4 -0
- package/dist/getParents.js +89 -0
- package/dist/getParents.js.map +1 -0
- package/dist/hooks/resaveChildren.js +5 -2
- package/dist/hooks/resaveChildren.js.map +1 -1
- package/dist/hooks/resaveSelfAfterCreate.js +2 -2
- package/dist/hooks/resaveSelfAfterCreate.js.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/populateBreadcrumbs.d.ts +4 -0
- package/dist/populateBreadcrumbs.js +83 -0
- package/dist/populateBreadcrumbs.js.map +1 -0
- package/dist/types.d.ts +4 -4
- package/dist/utilities/deepMerge.d.ts +2 -0
- package/dist/utilities/deepMerge.js +44 -0
- package/dist/utilities/deepMerge.js.map +1 -0
- package/dist/utilities/getParents.js +1 -1
- package/dist/utilities/populateBreadcrumbs.js +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
A plugin for [Payload CMS](https://github.com/payloadcms/payload) to easily allow for documents to be nested inside one another.
|
|
6
6
|
|
|
7
7
|
Core features:
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
|
|
9
|
+
- Allows for [parent/child](#parent) relationships between documents
|
|
10
|
+
- Automatically populates [breadcrumbs](#breadcrumbs) data
|
|
10
11
|
|
|
11
12
|
## Installation
|
|
12
13
|
|
|
@@ -21,32 +22,33 @@ Core features:
|
|
|
21
22
|
In the `plugins` array of your [Payload config](https://payloadcms.com/docs/configuration/overview), call the plugin with [options](#options):
|
|
22
23
|
|
|
23
24
|
```js
|
|
24
|
-
import { buildConfig } from
|
|
25
|
-
import nestedDocs from
|
|
25
|
+
import { buildConfig } from "payload/config";
|
|
26
|
+
import nestedDocs from "@payloadcms/plugin-nested-docs";
|
|
26
27
|
|
|
27
28
|
const config = buildConfig({
|
|
28
29
|
collections: [
|
|
29
30
|
{
|
|
30
|
-
slug:
|
|
31
|
+
slug: "pages",
|
|
31
32
|
fields: [
|
|
32
33
|
{
|
|
33
|
-
name:
|
|
34
|
-
type:
|
|
34
|
+
name: "title",
|
|
35
|
+
type: "text",
|
|
35
36
|
},
|
|
36
37
|
{
|
|
37
|
-
name:
|
|
38
|
-
type:
|
|
39
|
-
}
|
|
40
|
-
]
|
|
41
|
-
}
|
|
38
|
+
name: "slug",
|
|
39
|
+
type: "text",
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
},
|
|
42
43
|
],
|
|
43
44
|
plugins: [
|
|
44
45
|
nestedDocs({
|
|
45
|
-
collections: [
|
|
46
|
+
collections: ["pages"],
|
|
46
47
|
generateLabel: (_, doc) => doc.title,
|
|
47
|
-
generateURL: (docs) =>
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
generateURL: (docs) =>
|
|
49
|
+
docs.reduce((url, doc) => `${url}/${doc.slug}`, ""),
|
|
50
|
+
}),
|
|
51
|
+
],
|
|
50
52
|
});
|
|
51
53
|
|
|
52
54
|
export default config;
|
|
@@ -64,19 +66,19 @@ The `breadcrumbs` field is an array which dynamically populates all parent relat
|
|
|
64
66
|
|
|
65
67
|
The `breadcrumbs` array stores the following fields:
|
|
66
68
|
|
|
67
|
-
|
|
69
|
+
- `label`
|
|
68
70
|
|
|
69
|
-
|
|
71
|
+
The label of the breadcrumb. This field is automatically set to either the `collection.admin.useAsTitle` (if defined) or is set to the `ID` of the document. You can also dynamically define the `label` by passing a function to the options property of [`generateLabel`](#generateLabel).
|
|
70
72
|
|
|
71
|
-
|
|
73
|
+
- `url`
|
|
72
74
|
|
|
73
|
-
|
|
75
|
+
The URL of the breadcrumb. By default, this field is undefined. You can manually define this field by passing a property called function to the plugin options property of [`generateURL`](#generateURL).
|
|
74
76
|
|
|
75
77
|
### Options
|
|
76
78
|
|
|
77
79
|
#### `collections`
|
|
78
80
|
|
|
79
|
-
|
|
81
|
+
An array of collections slugs to enable nested docs.
|
|
80
82
|
|
|
81
83
|
#### `generateLabel`
|
|
82
84
|
|
|
@@ -97,8 +99,8 @@ plugins: [
|
|
|
97
99
|
|
|
98
100
|
The function takes two arguments and returns a string:
|
|
99
101
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
+
1. `breadcrumbs` - an array of the breadcrumbs up to that point
|
|
103
|
+
2. `currentDoc` - the current document being edited
|
|
102
104
|
|
|
103
105
|
#### `generateURL`
|
|
104
106
|
|
|
@@ -129,57 +131,116 @@ When defined, the `breadcrumbs` field will not be provided for you, and instead,
|
|
|
129
131
|
|
|
130
132
|
> Note - if you opt out of automatically being provided a `parent` or `breadcrumbs` field, you need to make sure that both fields are placed at the top-level of your document. They cannot exist within any nested data structures like a `group`, `array`, or `blocks`.
|
|
131
133
|
|
|
132
|
-
##
|
|
134
|
+
## Overrides
|
|
133
135
|
|
|
134
|
-
You can also extend the built-in `parent` and `breadcrumbs` fields
|
|
136
|
+
You can also extend the built-in `parent` and `breadcrumbs` fields per collection by using the `createParentField` and `createBreadcrumbField` methods. They will merge your customizations overtop the plugin's base field configurations.
|
|
135
137
|
|
|
136
138
|
```js
|
|
137
|
-
import { CollectionConfig } from
|
|
138
|
-
import createParentField from
|
|
139
|
-
import createBreadcrumbsField from
|
|
139
|
+
import { CollectionConfig } from "payload/types";
|
|
140
|
+
import createParentField from "@payloadcms/plugin-nested-docs/fields/parent";
|
|
141
|
+
import createBreadcrumbsField from "@payloadcms/plugin-nested-docs/fields/breadcrumbs";
|
|
140
142
|
|
|
141
143
|
const examplePageConfig: CollectionConfig = {
|
|
142
|
-
slug:
|
|
144
|
+
slug: "pages",
|
|
143
145
|
fields: [
|
|
144
146
|
createParentField(
|
|
145
147
|
// First argument is equal to the slug of the collection
|
|
146
148
|
// that the field references
|
|
147
|
-
|
|
149
|
+
"pages",
|
|
148
150
|
|
|
149
151
|
// Second argument is equal to field overrides that you specify,
|
|
150
152
|
// which will be merged into the base parent field config
|
|
151
153
|
{
|
|
152
154
|
admin: {
|
|
153
|
-
position:
|
|
155
|
+
position: "sidebar",
|
|
154
156
|
},
|
|
155
|
-
|
|
157
|
+
// Note: if you override the `filterOptions` of the `parent` field,
|
|
158
|
+
// be sure to continue to prevent the document from referencing itself as the parent like this:
|
|
159
|
+
// filterOptions: ({ id }) => ({ id: {not_equals: id }})`
|
|
160
|
+
}
|
|
156
161
|
),
|
|
157
162
|
createBreadcrumbsField(
|
|
158
163
|
// First argument is equal to the slug of the collection
|
|
159
164
|
// that the field references
|
|
160
|
-
|
|
165
|
+
"pages",
|
|
161
166
|
|
|
162
167
|
// Argument equal to field overrides that you specify,
|
|
163
168
|
// which will be merged into the base `breadcrumbs` field config
|
|
164
169
|
{
|
|
165
|
-
label:
|
|
170
|
+
label: "Page Breadcrumbs",
|
|
166
171
|
}
|
|
167
|
-
)
|
|
168
|
-
]
|
|
169
|
-
}
|
|
172
|
+
),
|
|
173
|
+
],
|
|
174
|
+
};
|
|
170
175
|
```
|
|
171
176
|
|
|
172
177
|
## TypeScript
|
|
173
178
|
|
|
174
179
|
All types can be directly imported:
|
|
180
|
+
|
|
175
181
|
```js
|
|
176
182
|
import {
|
|
177
183
|
nestedDocsConfig,
|
|
178
184
|
GenerateURL,
|
|
179
|
-
GenerateLabel
|
|
180
|
-
} from
|
|
185
|
+
GenerateLabel,
|
|
186
|
+
} from "@payloadcms/plugin-nested-docs/dist/types";
|
|
181
187
|
```
|
|
182
188
|
|
|
189
|
+
## Development
|
|
190
|
+
|
|
191
|
+
To actively develop or debug this plugin you can either work directly within the demo directory of this repo, or link your own project.
|
|
192
|
+
|
|
193
|
+
1. #### Internal Demo
|
|
194
|
+
|
|
195
|
+
This repo includes a fully working, self-seeding instance of Payload that installs the plugin directly from the source code. This is the easiest way to get started. To spin up this demo, follow these steps:
|
|
196
|
+
|
|
197
|
+
1. First clone the repo
|
|
198
|
+
1. Then, `cd PLUGIN_REPO && yarn && cd demo && yarn && yarn dev`
|
|
199
|
+
1. Now open `http://localhost:3000/admin` in your browser
|
|
200
|
+
1. Enter username `dev@payloadcms.com` and password `test`
|
|
201
|
+
|
|
202
|
+
That's it! Changes made in `./src` will be reflected in your demo. Keep in mind that the demo database is automatically seeded on every startup, any changes you make to the data get destroyed each time you reboot the app.
|
|
203
|
+
|
|
204
|
+
1. #### Linked Project
|
|
205
|
+
|
|
206
|
+
You can alternatively link your own project to the source code:
|
|
207
|
+
|
|
208
|
+
1. First clone the repo
|
|
209
|
+
1. Then, `cd YOUR_PLUGIN_REPO && yarn && yarn build && yarn link`
|
|
210
|
+
1. Now `cd` back into your own project and run, `yarn link @payloadcms/plugin-nested-docs`
|
|
211
|
+
1. If this plugin using React in any way, continue to the next step. Otherwise skip to step 7.
|
|
212
|
+
1. From your own project, `cd node_modules/react && yarn link && cd ../react-dom && yarn link && cd ../../`
|
|
213
|
+
1. Then, `cd YOUR_PLUGIN_REPO && yarn link react react-dom`
|
|
214
|
+
|
|
215
|
+
All set! You can now boot up your own project as normal, and your local copy of the plugin source code will be used. Keep in mind that changes to the source code require a rebuild, `yarn build`.
|
|
216
|
+
|
|
217
|
+
You might also need to alias these modules in your Webpack config. To do this, open your project's Payload config and add the following:
|
|
218
|
+
|
|
219
|
+
```js
|
|
220
|
+
import { buildConfig } from "payload/config";
|
|
221
|
+
|
|
222
|
+
export default buildConfig({
|
|
223
|
+
admin: {
|
|
224
|
+
webpack: (config) => ({
|
|
225
|
+
...config,
|
|
226
|
+
resolve: {
|
|
227
|
+
...config.resolve,
|
|
228
|
+
alias: {
|
|
229
|
+
...config.resolve.alias,
|
|
230
|
+
react: path.join(__dirname, "../node_modules/react"),
|
|
231
|
+
"react-dom": path.join(__dirname, "../node_modules/react-dom"),
|
|
232
|
+
payload: path.join(__dirname, "../node_modules/payload"),
|
|
233
|
+
"@payloadcms/plugin-nested-docs": path.join(
|
|
234
|
+
__dirname,
|
|
235
|
+
"../../payload/plugin-nested-docs/src"
|
|
236
|
+
),
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
}),
|
|
240
|
+
},
|
|
241
|
+
});
|
|
242
|
+
```
|
|
243
|
+
|
|
183
244
|
## Screenshots
|
|
184
245
|
|
|
185
246
|
<!--  -->
|
package/dist/fields/parent.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { RelationshipField } from 'payload/dist/fields/config/types';
|
|
2
2
|
import { Field } from 'payload/types';
|
|
3
|
-
declare const createParentField: (relationTo: string, overrides?: Partial<RelationshipField>
|
|
3
|
+
declare const createParentField: (relationTo: string, overrides?: Partial<RelationshipField>) => Field;
|
|
4
4
|
export default createParentField;
|
package/dist/fields/parent.js
CHANGED
|
@@ -11,6 +11,12 @@ var __assign = (this && this.__assign) || function () {
|
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
var createParentField = function (relationTo, overrides) { return (__assign({ name: 'parent', relationTo: relationTo, type: 'relationship', maxDepth: 1,
|
|
14
|
+
var createParentField = function (relationTo, overrides) { return (__assign({ name: 'parent', relationTo: relationTo, type: 'relationship', maxDepth: 1, filterOptions: function (_a) {
|
|
15
|
+
var id = _a.id;
|
|
16
|
+
return ({
|
|
17
|
+
id: { not_equals: id },
|
|
18
|
+
'breadcrumbs.doc': { not_in: [id] },
|
|
19
|
+
});
|
|
20
|
+
}, admin: __assign({ position: 'sidebar' }, (overrides === null || overrides === void 0 ? void 0 : overrides.admin) || {}) }, overrides || {})); };
|
|
15
21
|
exports.default = createParentField;
|
|
16
22
|
//# sourceMappingURL=parent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parent.js","sourceRoot":"","sources":["../../src/fields/parent.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAGA,IAAM,iBAAiB,GAAG,UAAC,UAAkB,EAAE,SAAsC,IAAY,OAAA,YAC/F,IAAI,EAAE,QAAQ,EACd,UAAU,YAAA,EACV,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,CAAC,EACX,KAAK,aACH,QAAQ,EAAE,SAAS,IAChB,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,KAAI,EAAE,KAExB,SAAS,IAAI,EAAE,EAClB,
|
|
1
|
+
{"version":3,"file":"parent.js","sourceRoot":"","sources":["../../src/fields/parent.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAGA,IAAM,iBAAiB,GAAG,UAAC,UAAkB,EAAE,SAAsC,IAAY,OAAA,YAC/F,IAAI,EAAE,QAAQ,EACd,UAAU,YAAA,EACV,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,CAAC,EACX,aAAa,EAAE,UAAC,EAAM;YAAJ,EAAE,QAAA;QAAO,OAAA,CAAC;YAC1B,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;YACtB,iBAAiB,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE;SACpC,CAAC;IAHyB,CAGzB,EACF,KAAK,aACH,QAAQ,EAAE,SAAS,IAChB,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,KAAI,EAAE,KAExB,SAAS,IAAI,EAAE,EAClB,EAd+F,CAc/F,CAAC;AAEH,kBAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var formatBreadcrumb = function (options, collection, docs) {
|
|
4
|
+
var _a;
|
|
5
|
+
var url = undefined;
|
|
6
|
+
var label;
|
|
7
|
+
var lastDoc = docs[docs.length - 1];
|
|
8
|
+
if (typeof (options === null || options === void 0 ? void 0 : options.generateURL) === 'function') {
|
|
9
|
+
url = options.generateURL(docs, lastDoc);
|
|
10
|
+
}
|
|
11
|
+
if (typeof (options === null || options === void 0 ? void 0 : options.generateLabel) === 'function') {
|
|
12
|
+
label = options.generateLabel(docs, lastDoc);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
var useAsTitle = ((_a = collection === null || collection === void 0 ? void 0 : collection.admin) === null || _a === void 0 ? void 0 : _a.useAsTitle) || 'id';
|
|
16
|
+
label = lastDoc[useAsTitle];
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
label: label,
|
|
20
|
+
url: url,
|
|
21
|
+
doc: lastDoc.id,
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
exports.default = formatBreadcrumb;
|
|
25
|
+
//# sourceMappingURL=formatBreadcrumb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatBreadcrumb.js","sourceRoot":"","sources":["../src/formatBreadcrumb.ts"],"names":[],"mappings":";;AAGA,IAAM,gBAAgB,GAAG,UACvB,OAAgB,EAChB,UAA4B,EAC5B,IAA+B;;IAE/B,IAAI,GAAG,GAAuB,SAAS,CAAC;IACxC,IAAI,KAAa,CAAC;IAElB,IAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEtC,IAAI,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAA,KAAK,UAAU,EAAE;QAC9C,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAC1C;IAED,IAAI,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,CAAA,KAAK,UAAU,EAAE;QAChD,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAC9C;SAAM;QACL,IAAM,UAAU,GAAG,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,0CAAE,UAAU,KAAI,IAAI,CAAC;QACzD,KAAK,GAAG,OAAO,CAAC,UAAU,CAAW,CAAC;KACvC;IAED,OAAO;QACL,KAAK,OAAA;QACL,GAAG,KAAA;QACH,GAAG,EAAE,OAAO,CAAC,EAAY;KAC1B,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { CollectionConfig } from 'payload/types';
|
|
2
|
+
import { Options } from './types';
|
|
3
|
+
declare const getParents: (req: any, options: Options, collection: CollectionConfig, doc: Record<string, unknown>, docs?: Record<string, unknown>[]) => Promise<Record<string, unknown>[]>;
|
|
4
|
+
export default getParents;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
39
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
40
|
+
if (ar || !(i in from)) {
|
|
41
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
42
|
+
ar[i] = from[i];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
var getParents = function (req, options, collection, doc, docs) {
|
|
49
|
+
if (docs === void 0) { docs = []; }
|
|
50
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
51
|
+
var parent, retrievedParent;
|
|
52
|
+
return __generator(this, function (_a) {
|
|
53
|
+
switch (_a.label) {
|
|
54
|
+
case 0:
|
|
55
|
+
parent = doc[(options === null || options === void 0 ? void 0 : options.parentFieldSlug) || 'parent'];
|
|
56
|
+
if (!parent) return [3 /*break*/, 3];
|
|
57
|
+
if (!(typeof parent === 'string')) return [3 /*break*/, 2];
|
|
58
|
+
return [4 /*yield*/, req.payload.findByID({
|
|
59
|
+
req: req,
|
|
60
|
+
id: parent,
|
|
61
|
+
collection: collection.slug,
|
|
62
|
+
depth: 0,
|
|
63
|
+
})];
|
|
64
|
+
case 1:
|
|
65
|
+
retrievedParent = _a.sent();
|
|
66
|
+
_a.label = 2;
|
|
67
|
+
case 2:
|
|
68
|
+
// If auto-populated
|
|
69
|
+
if (typeof parent === 'object') {
|
|
70
|
+
retrievedParent = parent;
|
|
71
|
+
}
|
|
72
|
+
if (retrievedParent) {
|
|
73
|
+
if (retrievedParent.parent) {
|
|
74
|
+
return [2 /*return*/, getParents(req, options, collection, retrievedParent, __spreadArray([
|
|
75
|
+
retrievedParent
|
|
76
|
+
], docs, true))];
|
|
77
|
+
}
|
|
78
|
+
return [2 /*return*/, __spreadArray([
|
|
79
|
+
retrievedParent
|
|
80
|
+
], docs, true)];
|
|
81
|
+
}
|
|
82
|
+
_a.label = 3;
|
|
83
|
+
case 3: return [2 /*return*/, docs];
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
exports.default = getParents;
|
|
89
|
+
//# sourceMappingURL=getParents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getParents.js","sourceRoot":"","sources":["../src/getParents.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,IAAM,UAAU,GAAG,UACjB,GAAQ,EACR,OAAgB,EAChB,UAA4B,EAC5B,GAA4B,EAC5B,IAAoC;IAApC,qBAAA,EAAA,SAAoC;;;;;;oBAE9B,MAAM,GAAG,GAAG,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,KAAI,QAAQ,CAAC,CAAC;yBAGrD,MAAM,EAAN,wBAAM;yBAEJ,CAAA,OAAO,MAAM,KAAK,QAAQ,CAAA,EAA1B,wBAA0B;oBACV,qBAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;4BAC3C,GAAG,KAAA;4BACH,EAAE,EAAE,MAAM;4BACV,UAAU,EAAE,UAAU,CAAC,IAAI;4BAC3B,KAAK,EAAE,CAAC;yBACT,CAAC,EAAA;;oBALF,eAAe,GAAG,SAKhB,CAAC;;;oBAGL,oBAAoB;oBACpB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;wBAC9B,eAAe,GAAG,MAAM,CAAC;qBAC1B;oBAED,IAAI,eAAe,EAAE;wBACnB,IAAI,eAAe,CAAC,MAAM,EAAE;4BAC1B,sBAAO,UAAU,CACf,GAAG,EACH,OAAO,EACP,UAAU,EACV,eAAe;oCAEb,eAAe;mCACZ,IAAI,QAEV,EAAC;yBACH;wBAED;gCACE,eAAe;+BACZ,IAAI,SACP;qBACH;;wBAGH,sBAAO,IAAI,EAAC;;;;CACb,CAAC;AAEF,kBAAe,UAAU,CAAC"}
|
|
@@ -25,7 +25,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
25
25
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
26
|
function step(op) {
|
|
27
27
|
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (_) try {
|
|
28
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
29
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
30
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
31
|
switch (op[0]) {
|
|
@@ -70,16 +70,19 @@ var resaveChildren = function (options, collection) { return function (_a) {
|
|
|
70
70
|
children = _a.sent();
|
|
71
71
|
try {
|
|
72
72
|
children.docs.forEach(function (child) {
|
|
73
|
+
var updateAsDraft = typeof collection.versions === 'object' && collection.versions.drafts && child._status !== 'published';
|
|
73
74
|
payload.update({
|
|
74
75
|
id: child.id,
|
|
75
76
|
collection: collection.slug,
|
|
77
|
+
draft: updateAsDraft,
|
|
76
78
|
data: __assign(__assign({}, child), { breadcrumbs: (0, populateBreadcrumbs_1.default)(req, options, collection, child) }),
|
|
77
79
|
depth: 0,
|
|
78
80
|
});
|
|
79
81
|
});
|
|
80
82
|
}
|
|
81
83
|
catch (err) {
|
|
82
|
-
|
|
84
|
+
payload.logger.error("Nested Docs plugin has had an error while resaving a child document.");
|
|
85
|
+
payload.logger.error(err);
|
|
83
86
|
}
|
|
84
87
|
return [2 /*return*/];
|
|
85
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resaveChildren.js","sourceRoot":"","sources":["../../src/hooks/resaveChildren.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yFAAmE;AAGnE,IAAM,cAAc,GAAG,UAAC,OAAgB,EAAE,UAA4B,IAAgC,OAAA,UAAC,EAA8B;QAArB,OAAO,iBAAA,EAAI,GAAG,SAAA,EAAE,GAAG,SAAA;IACjI,IAAM,mBAAmB,GAAG;;;;wBACT,qBAAM,OAAO,CAAC,IAAI,CAAC;wBAClC,UAAU,EAAE,UAAU,CAAC,IAAI;wBAC3B,KAAK,EAAE;4BACL,MAAM,EAAE;gCACN,MAAM,EAAE,GAAG,CAAC,EAAE;6BACf;yBACF;wBACD,KAAK,EAAE,CAAC;qBACT,CAAC,EAAA;;oBARI,QAAQ,GAAG,SAQf;oBAEF,IAAI;wBACF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAC,KAAU;4BAC/B,OAAO,CAAC,MAAM,CAAC;gCACb,EAAE,EAAE,KAAK,CAAC,EAAE;gCACZ,UAAU,EAAE,UAAU,CAAC,IAAI;gCAC3B,IAAI,wBACC,KAAK,KACR,WAAW,EAAE,IAAA,6BAAmB,EAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,GAClE;gCACD,KAAK,EAAE,CAAC;6BACT,CAAC,CAAC;wBACL,CAAC,CAAC,CAAC;qBACJ;oBAAC,OAAO,GAAG,EAAE;wBACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"resaveChildren.js","sourceRoot":"","sources":["../../src/hooks/resaveChildren.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yFAAmE;AAGnE,IAAM,cAAc,GAAG,UAAC,OAAgB,EAAE,UAA4B,IAAgC,OAAA,UAAC,EAA8B;QAArB,OAAO,iBAAA,EAAI,GAAG,SAAA,EAAE,GAAG,SAAA;IACjI,IAAM,mBAAmB,GAAG;;;;wBACT,qBAAM,OAAO,CAAC,IAAI,CAAC;wBAClC,UAAU,EAAE,UAAU,CAAC,IAAI;wBAC3B,KAAK,EAAE;4BACL,MAAM,EAAE;gCACN,MAAM,EAAE,GAAG,CAAC,EAAE;6BACf;yBACF;wBACD,KAAK,EAAE,CAAC;qBACT,CAAC,EAAA;;oBARI,QAAQ,GAAG,SAQf;oBAEF,IAAI;wBACF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAC,KAAU;4BAC/B,IAAM,aAAa,GAAG,OAAO,UAAU,CAAC,QAAQ,KAAK,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,WAAW,CAAC;4BAE7H,OAAO,CAAC,MAAM,CAAC;gCACb,EAAE,EAAE,KAAK,CAAC,EAAE;gCACZ,UAAU,EAAE,UAAU,CAAC,IAAI;gCAC3B,KAAK,EAAE,aAAa;gCACpB,IAAI,wBACC,KAAK,KACR,WAAW,EAAE,IAAA,6BAAmB,EAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,GAClE;gCACD,KAAK,EAAE,CAAC;6BACT,CAAC,CAAC;wBACL,CAAC,CAAC,CAAC;qBACJ;oBAAC,OAAO,GAAG,EAAE;wBACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAA;wBAC5F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;qBAC3B;;;;SACF,CAAC;IAEF,eAAe;IACf,mBAAmB,EAAE,CAAC;IAEtB,OAAO,SAAS,CAAC;AACnB,CAAC,EArCqG,CAqCrG,CAAC;AAEF,kBAAe,cAAc,CAAC"}
|
|
@@ -25,7 +25,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
25
25
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
26
|
function step(op) {
|
|
27
27
|
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (_) try {
|
|
28
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
29
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
30
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
31
|
switch (op[0]) {
|
|
@@ -74,7 +74,7 @@ var resaveSelfAfterCreate = function (collection) { return function (_a) {
|
|
|
74
74
|
id: doc.id,
|
|
75
75
|
depth: 0,
|
|
76
76
|
draft: updateAsDraft,
|
|
77
|
-
data: __assign(__assign({}, originalDocWithDepth0), { breadcrumbs: breadcrumbs.map(function (crumb, i) { return (__assign(__assign({}, crumb), { doc:
|
|
77
|
+
data: __assign(__assign({}, originalDocWithDepth0), { breadcrumbs: (breadcrumbs === null || breadcrumbs === void 0 ? void 0 : breadcrumbs.map(function (crumb, i) { return (__assign(__assign({}, crumb), { doc: breadcrumbs.length === i + 1 ? doc.id : crumb.doc })); })) || [] }),
|
|
78
78
|
})];
|
|
79
79
|
case 3:
|
|
80
80
|
_c.sent();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resaveSelfAfterCreate.js","sourceRoot":"","sources":["../../src/hooks/resaveSelfAfterCreate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,iEAAiE;AACjE,6EAA6E;AAE7E,IAAM,qBAAqB,GAAG,UAAC,UAA4B,IAAgC,OAAA,UAAO,EAAyC;QAAhC,OAAO,iBAAA,EAAI,GAAG,SAAA,EAAE,GAAG,SAAA,EAAE,SAAS,eAAA;;;;;;oBAC/H,KAAqB,GAAyB,YAA9B,EAAhB,WAAW,mBAAG,EAAE,KAAA,CAA+B;yBAEnD,CAAA,SAAS,KAAK,QAAQ,CAAA,EAAtB,wBAAsB;oBACM,qBAAM,OAAO,CAAC,QAAQ,CAAC;4BACnD,UAAU,EAAE,UAAU,CAAC,IAAI;4BAC3B,KAAK,EAAE,CAAC;4BACR,EAAE,EAAE,GAAG,CAAC,EAAE;yBACX,CAAC,EAAA;;oBAJI,qBAAqB,GAAG,SAI5B;oBAEI,aAAa,GAAG,OAAO,UAAU,CAAC,QAAQ,KAAK,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,WAAW,CAAC;;;;oBAGzH,qBAAM,OAAO,CAAC,MAAM,CAAC;4BACnB,UAAU,EAAE,UAAU,CAAC,IAAI;4BAC3B,EAAE,EAAE,GAAG,CAAC,EAAE;4BACV,KAAK,EAAE,CAAC;4BACR,KAAK,EAAE,aAAa;4BACpB,IAAI,wBACC,qBAAqB,KACxB,WAAW,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"resaveSelfAfterCreate.js","sourceRoot":"","sources":["../../src/hooks/resaveSelfAfterCreate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,iEAAiE;AACjE,6EAA6E;AAE7E,IAAM,qBAAqB,GAAG,UAAC,UAA4B,IAAgC,OAAA,UAAO,EAAyC;QAAhC,OAAO,iBAAA,EAAI,GAAG,SAAA,EAAE,GAAG,SAAA,EAAE,SAAS,eAAA;;;;;;oBAC/H,KAAqB,GAAyB,YAA9B,EAAhB,WAAW,mBAAG,EAAE,KAAA,CAA+B;yBAEnD,CAAA,SAAS,KAAK,QAAQ,CAAA,EAAtB,wBAAsB;oBACM,qBAAM,OAAO,CAAC,QAAQ,CAAC;4BACnD,UAAU,EAAE,UAAU,CAAC,IAAI;4BAC3B,KAAK,EAAE,CAAC;4BACR,EAAE,EAAE,GAAG,CAAC,EAAE;yBACX,CAAC,EAAA;;oBAJI,qBAAqB,GAAG,SAI5B;oBAEI,aAAa,GAAG,OAAO,UAAU,CAAC,QAAQ,KAAK,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,WAAW,CAAC;;;;oBAGzH,qBAAM,OAAO,CAAC,MAAM,CAAC;4BACnB,UAAU,EAAE,UAAU,CAAC,IAAI;4BAC3B,EAAE,EAAE,GAAG,CAAC,EAAE;4BACV,KAAK,EAAE,CAAC;4BACR,KAAK,EAAE,aAAa;4BACpB,IAAI,wBACC,qBAAqB,KACxB,WAAW,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,GAAG,CAAC,UAAC,KAAK,EAAE,CAAC,IAAK,OAAA,uBACvC,KAAK,KACR,GAAG,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IACtD,EAH0C,CAG1C,CAAC,KAAI,EAAE,GACV;yBACF,CAAC,EAAA;;oBAZF,SAYE,CAAC;;;;oBAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wFAAwF,CAAC,CAAA;oBAC9G,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAG,CAAC,CAAC;;wBAI9B,sBAAO,SAAS,EAAC;;;;CAClB,EAjC0F,CAiC1F,CAAC;AAEF,kBAAe,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -25,7 +25,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
25
25
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
26
|
function step(op) {
|
|
27
27
|
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (_) try {
|
|
28
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
29
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
30
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
31
|
switch (op[0]) {
|
|
@@ -72,7 +72,9 @@ var nestedDocs = function (options) { return function (config) { return (__assig
|
|
|
72
72
|
fields.push((0, parent_1.default)(collection.slug));
|
|
73
73
|
}
|
|
74
74
|
if (!options.breadcrumbsFieldSlug) {
|
|
75
|
-
fields.push((0, breadcrumbs_1.default)(collection.slug
|
|
75
|
+
fields.push((0, breadcrumbs_1.default)(collection.slug, {
|
|
76
|
+
localized: Boolean(config.localization)
|
|
77
|
+
}));
|
|
76
78
|
}
|
|
77
79
|
return __assign(__assign({}, collection), { hooks: __assign(__assign({}, collection.hooks || {}), { beforeChange: __spreadArray([
|
|
78
80
|
function (_a) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,qEAA0D;AAC1D,2DAAgD;AAChD,wFAAkE;AAClE,0EAAoD;AACpD,wFAAkE;AAElE,IAAM,UAAU,GAAG,UAAC,OAAgB,IAAK,OAAA,UAAC,MAAc,IAAa,OAAA,uBAChE,MAAM,KACT,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAC,UAAU;;QACrD,IAAI,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;YACrD,IAAM,MAAM,qBAAO,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,KAAI,EAAE,OAAC,CAAC;YAE7C,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;gBAC5B,MAAM,CAAC,IAAI,CAAC,IAAA,gBAAiB,EAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;aACjD;YAED,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;gBACjC,MAAM,CAAC,IAAI,CAAC,IAAA,qBAAsB,EAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,qEAA0D;AAC1D,2DAAgD;AAChD,wFAAkE;AAClE,0EAAoD;AACpD,wFAAkE;AAElE,IAAM,UAAU,GAAG,UAAC,OAAgB,IAAK,OAAA,UAAC,MAAc,IAAa,OAAA,uBAChE,MAAM,KACT,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAC,UAAU;;QACrD,IAAI,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;YACrD,IAAM,MAAM,qBAAO,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,KAAI,EAAE,OAAC,CAAC;YAE7C,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;gBAC5B,MAAM,CAAC,IAAI,CAAC,IAAA,gBAAiB,EAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;aACjD;YAED,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;gBACjC,MAAM,CAAC,IAAI,CAAC,IAAA,qBAAsB,EAAC,UAAU,CAAC,IAAI,EAAE;oBAClD,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;iBACxC,CAAC,CAAC,CAAC;aACL;YAED,6BACK,UAAU,KACb,KAAK,wBACA,UAAU,CAAC,KAAK,IAAI,EAAE,KACzB,YAAY;wBACV,UAAO,EAA0B;gCAAxB,GAAG,SAAA,EAAE,IAAI,UAAA,EAAE,WAAW,iBAAA;;gCAAO,sBAAA,IAAA,6BAAmB,EAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC,EAAA;;yBAAA;uBACnG,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,0CAAE,YAAY,KAAI,EAAE,SAE1C,WAAW;wBACT,IAAA,wBAAc,EAAC,OAAO,EAAE,UAAU,CAAC;wBACnC,IAAA,+BAAqB,EAAC,UAAU,CAAC;uBAC9B,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,0CAAE,WAAW,KAAI,EAAE,YAG3C,MAAM,QAAA,IACN;SACH;QAED,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC,IACF,EApCmE,CAoCnE,EApCuC,CAoCvC,CAAC;AAEH,kBAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
+
function step(op) {
|
|
27
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
+
while (_) try {
|
|
29
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
+
switch (op[0]) {
|
|
32
|
+
case 0: case 1: t = op; break;
|
|
33
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
+
default:
|
|
37
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
+
if (t[2]) _.ops.pop();
|
|
42
|
+
_.trys.pop(); continue;
|
|
43
|
+
}
|
|
44
|
+
op = body.call(thisArg, _);
|
|
45
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
50
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
51
|
+
if (ar || !(i in from)) {
|
|
52
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
53
|
+
ar[i] = from[i];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
57
|
+
};
|
|
58
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
59
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
60
|
+
};
|
|
61
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
62
|
+
var getParents_1 = __importDefault(require("./getParents"));
|
|
63
|
+
var formatBreadcrumb_1 = __importDefault(require("./formatBreadcrumb"));
|
|
64
|
+
var populateBreadcrumbs = function (req, options, collection, data, originalDoc) { return __awaiter(void 0, void 0, void 0, function () {
|
|
65
|
+
var newData, breadcrumbDocs, _a, breadcrumbs;
|
|
66
|
+
var _b;
|
|
67
|
+
return __generator(this, function (_c) {
|
|
68
|
+
switch (_c.label) {
|
|
69
|
+
case 0:
|
|
70
|
+
newData = data;
|
|
71
|
+
_a = [[]];
|
|
72
|
+
return [4 /*yield*/, (0, getParents_1.default)(req, options, collection, __assign(__assign({}, originalDoc), data))];
|
|
73
|
+
case 1:
|
|
74
|
+
breadcrumbDocs = __spreadArray.apply(void 0, [__spreadArray.apply(void 0, _a.concat([_c.sent(), true])), [
|
|
75
|
+
__assign(__assign(__assign({}, originalDoc), data), { id: originalDoc === null || originalDoc === void 0 ? void 0 : originalDoc.id }),
|
|
76
|
+
], false]);
|
|
77
|
+
breadcrumbs = breadcrumbDocs.map(function (_, i) { return (0, formatBreadcrumb_1.default)(options, collection, breadcrumbDocs.slice(0, i + 1)); });
|
|
78
|
+
return [2 /*return*/, __assign(__assign({}, newData), (_b = {}, _b[(options === null || options === void 0 ? void 0 : options.breadcrumbsFieldSlug) || 'breadcrumbs'] = breadcrumbs, _b))];
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}); };
|
|
82
|
+
exports.default = populateBreadcrumbs;
|
|
83
|
+
//# sourceMappingURL=populateBreadcrumbs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"populateBreadcrumbs.js","sourceRoot":"","sources":["../src/populateBreadcrumbs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,4DAAsC;AACtC,wEAAkD;AAElD,IAAM,mBAAmB,GAAG,UAAO,GAAQ,EAAE,OAAgB,EAAE,UAA4B,EAAE,IAAS,EAAE,WAAiB;;;;;;gBACjH,OAAO,GAAG,IAAI,CAAC;;gBAEhB,qBAAM,IAAA,oBAAU,EAAC,GAAG,EAAE,OAAO,EAAE,UAAU,wBACvC,WAAW,GACX,IAAI,EACP,EAAA;;gBAJE,cAAc,uEACf,SAGD;uDAEG,WAAW,GACX,IAAI,KACP,EAAE,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,EAAE;8BAEtB;gBAEK,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,IAAA,0BAAgB,EAAC,OAAO,EAAE,UAAU,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAArE,CAAqE,CAAC,CAAC;gBAExH,4CACK,OAAO,gBACT,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,oBAAoB,KAAI,aAAa,IAAG,WAAW,QAC7D;;;KACH,CAAC;AAEF,kBAAe,mBAAmB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type Breadcrumb = {
|
|
2
2
|
url?: string;
|
|
3
3
|
label: string;
|
|
4
4
|
doc: string;
|
|
5
5
|
};
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
6
|
+
export type GenerateURL = (docs: Record<string, unknown>[], currentDoc: Record<string, unknown>) => string;
|
|
7
|
+
export type GenerateLabel = (docs: Record<string, unknown>[], currentDoc: Record<string, unknown>) => string;
|
|
8
|
+
export type Options = {
|
|
9
9
|
collections: string[];
|
|
10
10
|
generateURL?: GenerateURL;
|
|
11
11
|
generateLabel?: GenerateLabel;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.isObject = void 0;
|
|
15
|
+
function isObject(item) {
|
|
16
|
+
return Boolean(item && typeof item === 'object' && !Array.isArray(item));
|
|
17
|
+
}
|
|
18
|
+
exports.isObject = isObject;
|
|
19
|
+
function deepMerge(target, source) {
|
|
20
|
+
var output = __assign({}, target);
|
|
21
|
+
if (isObject(target) && isObject(source)) {
|
|
22
|
+
Object.keys(source).forEach(function (key) {
|
|
23
|
+
var _a, _b;
|
|
24
|
+
// @ts-ignore
|
|
25
|
+
if (isObject(source[key])) {
|
|
26
|
+
if (!(key in target)) {
|
|
27
|
+
// @ts-ignore
|
|
28
|
+
Object.assign(output, (_a = {}, _a[key] = source[key], _a));
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
// @ts-ignore
|
|
32
|
+
output[key] = deepMerge(target[key], source[key]);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
// @ts-ignore
|
|
37
|
+
Object.assign(output, (_b = {}, _b[key] = source[key], _b));
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return output;
|
|
42
|
+
}
|
|
43
|
+
exports.default = deepMerge;
|
|
44
|
+
//# sourceMappingURL=deepMerge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepMerge.js","sourceRoot":"","sources":["../../src/utilities/deepMerge.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,SAAgB,QAAQ,CAAC,IAAa;IACpC,OAAO,OAAO,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,CAAC;AAFD,4BAEC;AAED,SAAwB,SAAS,CAAO,MAAS,EAAE,MAAS;IAC1D,IAAM,MAAM,gBAAQ,MAAM,CAAE,CAAC;IAC7B,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;QACxC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;;YAC9B,aAAa;YACb,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;gBACzB,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE;oBACpB,aAAa;oBACb,MAAM,CAAC,MAAM,CAAC,MAAM,YAAI,GAAC,GAAG,IAAG,MAAM,CAAC,GAAG,CAAC,MAAG,CAAC;iBAC/C;qBAAM;oBACL,aAAa;oBACb,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;iBACnD;aACF;iBAAM;gBACL,aAAa;gBACb,MAAM,CAAC,MAAM,CAAC,MAAM,YAAI,GAAC,GAAG,IAAG,MAAM,CAAC,GAAG,CAAC,MAAG,CAAC;aAC/C;QACH,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AArBD,4BAqBC"}
|
|
@@ -14,7 +14,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
14
14
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
15
|
function step(op) {
|
|
16
16
|
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
18
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
19
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
20
|
switch (op[0]) {
|
|
@@ -25,7 +25,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
25
25
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
26
|
function step(op) {
|
|
27
27
|
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (_) try {
|
|
28
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
29
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
30
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
31
|
switch (op[0]) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/plugin-nested-docs",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"homepage:": "https://payloadcms.com",
|
|
5
5
|
"repository": "git@github.com:payloadcms/plugin-nested-docs.git",
|
|
6
6
|
"description": "Nested documents plugin for Payload CMS",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"payload": "^0.
|
|
30
|
+
"payload": "^1.0.6",
|
|
31
31
|
"react": "^17.0.2",
|
|
32
32
|
"typescript": "^4.5.5"
|
|
33
33
|
},
|