payload 0.10.17-beta.0 → 0.12.0
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/CHANGELOG.md +25 -25
- package/README.md +1 -1
- package/components/forms.ts +2 -0
- package/components/index.js +2 -2
- package/dist/admin/components/elements/FileDetails/Meta/index.js +2 -2
- package/dist/admin/components/elements/FileDetails/Meta/types.d.ts +1 -0
- package/dist/admin/components/elements/FileDetails/index.js +10 -5
- package/dist/admin/components/elements/ListControls/index.js +3 -3
- package/dist/admin/components/elements/SortComplex/index.js +2 -2
- package/dist/admin/components/forms/DraggableSection/index.js +2 -2
- package/dist/admin/components/forms/Form/buildStateFromSchema.js +4 -4
- package/dist/admin/components/forms/Form/fieldReducer.js +5 -2
- package/dist/admin/components/forms/RenderFields/index.js +15 -8
- package/dist/admin/components/forms/field-types/Group/index.js +2 -2
- package/dist/admin/components/forms/field-types/Relationship/index.js +58 -119
- package/dist/admin/components/forms/field-types/Relationship/types.d.ts +0 -4
- package/dist/admin/components/forms/field-types/RichText/elements/upload/Button/index.js +13 -6
- package/dist/admin/components/forms/field-types/Row/index.js +2 -2
- package/dist/admin/components/forms/field-types/UI/index.d.ts +4 -0
- package/dist/admin/components/forms/field-types/UI/index.js +10 -0
- package/dist/admin/components/forms/field-types/index.d.ts +1 -0
- package/dist/admin/components/forms/field-types/index.js +2 -0
- package/dist/admin/components/views/collections/Edit/formatFields.js +2 -2
- package/dist/admin/components/views/collections/List/buildColumns.js +5 -5
- package/dist/admin/components/views/collections/List/formatFields.js +3 -3
- package/dist/admin/components/views/collections/List/getInitialColumns.js +5 -5
- package/dist/admin/hooks/useThumbnail.js +5 -2
- package/dist/auth/operations/login.js +4 -4
- package/dist/auth/operations/resetPassword.js +2 -2
- package/dist/collections/config/sanitize.d.ts +2 -1
- package/dist/collections/config/sanitize.js +8 -14
- package/dist/collections/operations/create.js +2 -2
- package/dist/config/sanitize.js +3 -3
- package/dist/config/validate.js +5 -4
- package/dist/errors/MissingFieldType.js +2 -2
- package/dist/fields/accessPromise.d.ts +2 -2
- package/dist/fields/accessPromise.js +2 -5
- package/dist/fields/baseFields/getBaseUploadFields.d.ts +9 -0
- package/dist/fields/baseFields/getBaseUploadFields.js +128 -0
- package/dist/fields/config/sanitize.js +15 -12
- package/dist/fields/config/schema.d.ts +1 -0
- package/dist/fields/config/schema.js +17 -3
- package/dist/fields/config/types.d.ts +21 -3
- package/dist/fields/config/types.js +9 -5
- package/dist/fields/hookPromise.d.ts +2 -2
- package/dist/fields/traverseFields.js +13 -13
- package/dist/fields/validationPromise.d.ts +2 -2
- package/dist/graphql/schema/buildMutationInputType.js +6 -6
- package/dist/graphql/schema/buildObjectType.js +5 -4
- package/dist/graphql/schema/buildWhereInputType.js +30 -25
- package/dist/graphql/schema/withNullableType.d.ts +2 -2
- package/dist/graphql/schema/withNullableType.js +1 -1
- package/dist/graphql/schema/withOperators.d.ts +2 -2
- package/dist/graphql/schema/withOperators.js +1 -1
- package/dist/mongoose/buildQuery.js +14 -1
- package/dist/mongoose/buildSchema.js +19 -16
- package/dist/{fields/baseFields → uploads}/mimeTypeValidator.d.ts +1 -1
- package/dist/uploads/mimeTypeValidator.js +11 -0
- package/dist/{fields/baseFields → uploads}/mimeTypeValidator.spec.d.ts +0 -0
- package/dist/uploads/mimeTypeValidator.spec.js +50 -0
- package/dist/webpack/getBaseConfig.js +1 -2
- package/docs/fields/overview.mdx +32 -2
- package/docs/fields/rich-text.mdx +2 -2
- package/docs/fields/ui.mdx +54 -0
- package/docs/fields/upload.mdx +1 -1
- package/docs/upload/overview.mdx +1 -1
- package/package.json +1 -3
- package/dist/fields/baseFields/baseImageUploadFields.d.ts +0 -4
- package/dist/fields/baseFields/baseImageUploadFields.js +0 -81
- package/dist/fields/baseFields/baseUploadFields.d.ts +0 -3
- package/dist/fields/baseFields/baseUploadFields.js +0 -32
- package/dist/fields/baseFields/mimeTypeValidator.js +0 -11
- package/dist/fields/baseFields/mimeTypeValidator.spec.js +0 -50
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React, { useCallback, useEffect, useState, useReducer, } from 'react';
|
|
2
2
|
import { useConfig } from '@payloadcms/config-provider';
|
|
3
|
-
import some from 'async-some';
|
|
4
3
|
import withCondition from '../../withCondition';
|
|
5
4
|
import ReactSelect from '../../../elements/ReactSelect';
|
|
6
5
|
import useFieldType from '../../useFieldType';
|
|
@@ -23,9 +22,9 @@ const Relationship = (props) => {
|
|
|
23
22
|
const [lastFullyLoadedRelation, setLastFullyLoadedRelation] = useState(-1);
|
|
24
23
|
const [lastLoadedPage, setLastLoadedPage] = useState(1);
|
|
25
24
|
const [search, setSearch] = useState('');
|
|
26
|
-
const [errorLoading, setErrorLoading] = useState(
|
|
25
|
+
const [errorLoading, setErrorLoading] = useState('');
|
|
27
26
|
const [hasLoadedFirstOptions, setHasLoadedFirstOptions] = useState(false);
|
|
28
|
-
const debouncedSearch = useDebounce(search,
|
|
27
|
+
const debouncedSearch = useDebounce(search, 300);
|
|
29
28
|
const memoizedValidate = useCallback((value) => {
|
|
30
29
|
const validationResult = validate(value, { required });
|
|
31
30
|
return validationResult;
|
|
@@ -39,59 +38,41 @@ const Relationship = (props) => {
|
|
|
39
38
|
const collection = collections.find((coll) => coll.slug === relation);
|
|
40
39
|
dispatchOptions({ type: 'ADD', data, relation, hasMultipleRelations, collection });
|
|
41
40
|
}, [collections, hasMultipleRelations]);
|
|
42
|
-
const getResults = useCallback(({
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
const getResults = useCallback(async ({ lastFullyLoadedRelation: lastFullyLoadedRelationArg, lastLoadedPage: lastLoadedPageArg, search: searchArg, } = {
|
|
42
|
+
lastFullyLoadedRelation: -1,
|
|
43
|
+
lastLoadedPage: 1,
|
|
44
|
+
search: '',
|
|
45
|
+
}) => {
|
|
46
|
+
const relations = Array.isArray(relationTo) ? relationTo : [relationTo];
|
|
47
|
+
const relationsToFetch = lastFullyLoadedRelationArg === -1 ? relations : relations.slice(lastFullyLoadedRelationArg);
|
|
48
|
+
let resultsFetched = 0;
|
|
49
|
+
if (!errorLoading) {
|
|
50
|
+
relationsToFetch.reduce(async (priorRelation, relation) => {
|
|
45
51
|
var _a;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
if (
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
52
|
+
await priorRelation;
|
|
53
|
+
if (resultsFetched < 10) {
|
|
54
|
+
const collection = collections.find((coll) => coll.slug === relation);
|
|
55
|
+
const fieldToSearch = ((_a = collection === null || collection === void 0 ? void 0 : collection.admin) === null || _a === void 0 ? void 0 : _a.useAsTitle) || 'id';
|
|
56
|
+
const searchParam = searchArg ? `&where[${fieldToSearch}][like]=${searchArg}` : '';
|
|
57
|
+
const response = await fetch(`${serverURL}${api}/${relation}?limit=${maxResultsPerRequest}&page=${lastLoadedPageArg}&depth=0${searchParam}`);
|
|
58
|
+
if (response.ok) {
|
|
59
|
+
const data = await response.json();
|
|
60
|
+
if (data.docs.length > 0) {
|
|
61
|
+
resultsFetched += data.docs.length;
|
|
62
|
+
addOptions(data, relation);
|
|
63
|
+
setLastLoadedPage(data.page);
|
|
64
|
+
if (!data.nextPage) {
|
|
65
|
+
setLastFullyLoadedRelation(relations.indexOf(relation));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
setErrorLoading('An error has occurred.');
|
|
57
71
|
}
|
|
58
|
-
return callback({ relation, data });
|
|
59
|
-
}
|
|
60
|
-
return setErrorLoading(true);
|
|
61
|
-
}, (lastPage, nextPage) => {
|
|
62
|
-
if (nextPage) {
|
|
63
|
-
const { data, relation } = nextPage;
|
|
64
|
-
addOptions(data, relation);
|
|
65
|
-
setLastLoadedPage((l) => l + 1);
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
const relations = Array.isArray(relationTo) ? relationTo : [relationTo];
|
|
69
|
-
const { data, relation } = lastPage;
|
|
70
|
-
addOptions(data, relation);
|
|
71
|
-
setLastFullyLoadedRelation(relations.indexOf(relation));
|
|
72
|
-
setLastLoadedPage(1);
|
|
73
72
|
}
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
}, [addOptions, api, collections, relationTo, search, serverURL]);
|
|
77
|
-
const getNextOptions = useCallback((params = {}) => {
|
|
78
|
-
const clear = params === null || params === void 0 ? void 0 : params.clear;
|
|
79
|
-
const relations = Array.isArray(relationTo) ? relationTo : [relationTo];
|
|
80
|
-
if (clear) {
|
|
81
|
-
dispatchOptions({
|
|
82
|
-
type: 'CLEAR',
|
|
83
|
-
required,
|
|
84
|
-
});
|
|
85
|
-
setLastFullyLoadedRelation(-1);
|
|
73
|
+
}, Promise.resolve());
|
|
86
74
|
}
|
|
87
|
-
|
|
88
|
-
const relationsToSearch = lastFullyLoadedRelation === -1 ? relations : relations.slice(lastFullyLoadedRelation + 1);
|
|
89
|
-
getResults({
|
|
90
|
-
relations: relationsToSearch,
|
|
91
|
-
lastLoadedPage,
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
}, [errorLoading, required, lastFullyLoadedRelation, relationTo, getResults, lastLoadedPage]);
|
|
75
|
+
}, [addOptions, api, collections, serverURL, errorLoading, relationTo]);
|
|
95
76
|
const findOptionsByValue = useCallback(() => {
|
|
96
77
|
if (value) {
|
|
97
78
|
if (hasMany) {
|
|
@@ -154,6 +135,28 @@ const Relationship = (props) => {
|
|
|
154
135
|
}
|
|
155
136
|
}
|
|
156
137
|
}, [addOptions, api, errorLoading, serverURL]);
|
|
138
|
+
// ///////////////////////////
|
|
139
|
+
// Get first results
|
|
140
|
+
// ///////////////////////////
|
|
141
|
+
useEffect(() => {
|
|
142
|
+
getResults();
|
|
143
|
+
setHasLoadedFirstOptions(true);
|
|
144
|
+
}, [addOptions, api, required, relationTo, serverURL, getResults]);
|
|
145
|
+
// ///////////////////////////
|
|
146
|
+
// Get results when search input changes
|
|
147
|
+
// ///////////////////////////
|
|
148
|
+
useEffect(() => {
|
|
149
|
+
dispatchOptions({
|
|
150
|
+
type: 'CLEAR',
|
|
151
|
+
required,
|
|
152
|
+
});
|
|
153
|
+
setLastLoadedPage(1);
|
|
154
|
+
setLastFullyLoadedRelation(-1);
|
|
155
|
+
getResults({ search: debouncedSearch });
|
|
156
|
+
}, [getResults, debouncedSearch, relationTo, required]);
|
|
157
|
+
// ///////////////////////////
|
|
158
|
+
// Format options once first options have been retrieved
|
|
159
|
+
// ///////////////////////////
|
|
157
160
|
useEffect(() => {
|
|
158
161
|
if (value && hasLoadedFirstOptions) {
|
|
159
162
|
if (hasMany) {
|
|
@@ -183,72 +186,6 @@ const Relationship = (props) => {
|
|
|
183
186
|
}
|
|
184
187
|
}
|
|
185
188
|
}, [addOptionByID, findOptionsByValue, hasMany, hasMultipleRelations, relationTo, value, hasLoadedFirstOptions]);
|
|
186
|
-
useEffect(() => {
|
|
187
|
-
const getFirstResults = async () => {
|
|
188
|
-
dispatchOptions({
|
|
189
|
-
type: 'CLEAR',
|
|
190
|
-
required,
|
|
191
|
-
});
|
|
192
|
-
setLastLoadedPage(1);
|
|
193
|
-
setLastFullyLoadedRelation(-1);
|
|
194
|
-
setHasLoadedFirstOptions(false);
|
|
195
|
-
const relations = Array.isArray(relationTo) ? relationTo : [relationTo];
|
|
196
|
-
const res = await fetch(`${serverURL}${api}/${relations[0]}?limit=${maxResultsPerRequest}&depth=0`);
|
|
197
|
-
if (res.ok) {
|
|
198
|
-
const data = await res.json();
|
|
199
|
-
addOptions(data, relations[0]);
|
|
200
|
-
if (!data.hasNextPage) {
|
|
201
|
-
setLastFullyLoadedRelation(0);
|
|
202
|
-
if (relations[1]) {
|
|
203
|
-
const secondRes = await fetch(`${serverURL}${api}/${relations[1]}?limit=${maxResultsPerRequest}&depth=0`);
|
|
204
|
-
if (res.ok) {
|
|
205
|
-
const secondData = await secondRes.json();
|
|
206
|
-
addOptions(secondData, relations[1]);
|
|
207
|
-
if (!secondData.hasNextPage) {
|
|
208
|
-
setLastFullyLoadedRelation(1);
|
|
209
|
-
if (relations[2]) {
|
|
210
|
-
const thirdRes = await fetch(`${serverURL}${api}/${relations[2]}?limit=${maxResultsPerRequest}&depth=0`);
|
|
211
|
-
if (res.ok) {
|
|
212
|
-
const thirdData = await thirdRes.json();
|
|
213
|
-
addOptions(thirdData, relations[2]);
|
|
214
|
-
if (!thirdData.hasNextPage) {
|
|
215
|
-
setLastFullyLoadedRelation(2);
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
setLastLoadedPage(2);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
setLastLoadedPage(2);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
230
|
-
setLastLoadedPage(2);
|
|
231
|
-
}
|
|
232
|
-
setHasLoadedFirstOptions(true);
|
|
233
|
-
}
|
|
234
|
-
};
|
|
235
|
-
getFirstResults();
|
|
236
|
-
}, [addOptions, api, required, relationTo, serverURL]);
|
|
237
|
-
useEffect(() => {
|
|
238
|
-
if (debouncedSearch) {
|
|
239
|
-
dispatchOptions({
|
|
240
|
-
type: 'CLEAR',
|
|
241
|
-
required,
|
|
242
|
-
});
|
|
243
|
-
setLastLoadedPage(1);
|
|
244
|
-
setLastFullyLoadedRelation(-1);
|
|
245
|
-
const relations = Array.isArray(relationTo) ? relationTo : [relationTo];
|
|
246
|
-
getResults({
|
|
247
|
-
relations,
|
|
248
|
-
lastLoadedPage: 1,
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
}, [getResults, debouncedSearch, relationTo, required]);
|
|
252
189
|
const classes = [
|
|
253
190
|
'field-type',
|
|
254
191
|
baseClass,
|
|
@@ -284,7 +221,9 @@ const Relationship = (props) => {
|
|
|
284
221
|
else {
|
|
285
222
|
setValue(selected.value);
|
|
286
223
|
}
|
|
287
|
-
} : undefined, onMenuScrollToBottom:
|
|
224
|
+
} : undefined, onMenuScrollToBottom: () => {
|
|
225
|
+
getResults({ lastFullyLoadedRelation: lastFullyLoadedRelation + 1, lastLoadedPage });
|
|
226
|
+
}, value: valueToRender, showError: showError, disabled: formProcessing, options: options, isMulti: hasMany })),
|
|
288
227
|
errorLoading && (React.createElement("div", { className: `${baseClass}__error-loading` }, errorLoading)),
|
|
289
228
|
React.createElement(FieldDescription, { value: value, description: description })));
|
|
290
229
|
};
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import { PaginatedDocs, SanitizedCollectionConfig } from '../../../../../collections/config/types';
|
|
2
2
|
import { RelationshipField } from '../../../../../fields/config/types';
|
|
3
|
-
export declare type OptionsPage = {
|
|
4
|
-
relation: string;
|
|
5
|
-
data: PaginatedDocs;
|
|
6
|
-
};
|
|
7
3
|
export declare type Props = Omit<RelationshipField, 'type'> & {
|
|
8
4
|
path?: string;
|
|
9
5
|
};
|
|
@@ -44,15 +44,17 @@ const UploadButton = ({ path }) => {
|
|
|
44
44
|
const [renderModal, setRenderModal] = useState(false);
|
|
45
45
|
const [modalCollectionOption, setModalCollectionOption] = useState(() => {
|
|
46
46
|
const firstAvailableCollection = collections.find(({ admin: { enableRichTextRelationship }, upload }) => (Boolean(upload) && enableRichTextRelationship));
|
|
47
|
-
|
|
47
|
+
if (firstAvailableCollection) {
|
|
48
|
+
return { label: firstAvailableCollection.labels.singular, value: firstAvailableCollection.slug };
|
|
49
|
+
}
|
|
50
|
+
return undefined;
|
|
48
51
|
});
|
|
49
52
|
const [modalCollection, setModalCollection] = useState(() => collections.find(({ admin: { enableRichTextRelationship }, upload }) => (Boolean(upload) && enableRichTextRelationship)));
|
|
50
|
-
const [fields, setFields] = useState(() => formatFields(modalCollection));
|
|
53
|
+
const [fields, setFields] = useState(() => (modalCollection ? formatFields(modalCollection) : undefined));
|
|
51
54
|
const [limit, setLimit] = useState();
|
|
52
55
|
const [sort, setSort] = useState(null);
|
|
53
56
|
const [where, setWhere] = useState(null);
|
|
54
57
|
const [page, setPage] = useState(null);
|
|
55
|
-
const [hasEnabledCollections] = useState(() => collections.find(({ upload, admin: { enableRichTextRelationship } }) => upload && enableRichTextRelationship));
|
|
56
58
|
const modalSlug = `${path}-add-upload`;
|
|
57
59
|
const moreThanOneAvailableCollection = availableCollections.length > 1;
|
|
58
60
|
const isOpen = currentModal === modalSlug;
|
|
@@ -60,7 +62,9 @@ const UploadButton = ({ path }) => {
|
|
|
60
62
|
const apiURL = isOpen ? `${serverURL}${api}/${modalCollection.slug}` : null;
|
|
61
63
|
const [{ data }, { setParams }] = usePayloadAPI(apiURL, {});
|
|
62
64
|
useEffect(() => {
|
|
63
|
-
|
|
65
|
+
if (modalCollection) {
|
|
66
|
+
setFields(formatFields(modalCollection));
|
|
67
|
+
}
|
|
64
68
|
}, [modalCollection]);
|
|
65
69
|
useEffect(() => {
|
|
66
70
|
if (renderModal) {
|
|
@@ -80,10 +84,13 @@ const UploadButton = ({ path }) => {
|
|
|
80
84
|
setParams(params);
|
|
81
85
|
}, [setParams, page, sort, where, limit]);
|
|
82
86
|
useEffect(() => {
|
|
83
|
-
|
|
87
|
+
if (modalCollectionOption) {
|
|
88
|
+
setModalCollection(collections.find(({ slug }) => modalCollectionOption.value === slug));
|
|
89
|
+
}
|
|
84
90
|
}, [modalCollectionOption, collections]);
|
|
85
|
-
if (!
|
|
91
|
+
if (!modalCollection) {
|
|
86
92
|
return null;
|
|
93
|
+
}
|
|
87
94
|
return (React.createElement(Fragment, null,
|
|
88
95
|
React.createElement(ElementButton, { className: baseClass, format: "upload", onClick: () => setRenderModal(true) },
|
|
89
96
|
React.createElement(UploadIcon, null)),
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import RenderFields from '../../RenderFields';
|
|
3
3
|
import withCondition from '../../withCondition';
|
|
4
|
-
import {
|
|
4
|
+
import { fieldAffectsData } from '../../../../../fields/config/types';
|
|
5
5
|
import './index.scss';
|
|
6
6
|
const Row = (props) => {
|
|
7
7
|
const { fields, fieldTypes, path, permissions, admin: { readOnly, }, } = props;
|
|
8
8
|
return (React.createElement(RenderFields, { readOnly: readOnly, className: "field-type row", permissions: permissions === null || permissions === void 0 ? void 0 : permissions.fields, fieldTypes: fieldTypes, fieldSchema: fields.map((field) => ({
|
|
9
9
|
...field,
|
|
10
|
-
path: `${path ? `${path}.` : ''}${
|
|
10
|
+
path: `${path ? `${path}.` : ''}${fieldAffectsData(field) ? field.name : ''}`,
|
|
11
11
|
})) }));
|
|
12
12
|
};
|
|
13
13
|
export default withCondition(Row);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import withCondition from '../../withCondition';
|
|
3
|
+
const UI = (props) => {
|
|
4
|
+
const { admin: { components: { Field, }, }, } = props;
|
|
5
|
+
if (Field) {
|
|
6
|
+
return React.createElement(Field, { ...props });
|
|
7
|
+
}
|
|
8
|
+
return null;
|
|
9
|
+
};
|
|
10
|
+
export default withCondition(UI);
|
|
@@ -18,6 +18,7 @@ import group from './Group';
|
|
|
18
18
|
import array from './Array';
|
|
19
19
|
import row from './Row';
|
|
20
20
|
import upload from './Upload';
|
|
21
|
+
import ui from './UI';
|
|
21
22
|
const fieldTypes = {
|
|
22
23
|
code,
|
|
23
24
|
email,
|
|
@@ -39,5 +40,6 @@ const fieldTypes = {
|
|
|
39
40
|
array,
|
|
40
41
|
row,
|
|
41
42
|
upload,
|
|
43
|
+
ui,
|
|
42
44
|
};
|
|
43
45
|
export default fieldTypes;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { fieldAffectsData } from '../../../../../fields/config/types';
|
|
2
2
|
const formatFields = (collection, isEditing) => (isEditing
|
|
3
|
-
? collection.fields.filter((field) =>
|
|
3
|
+
? collection.fields.filter((field) => (fieldAffectsData(field) && field.name !== 'id') || true)
|
|
4
4
|
: collection.fields);
|
|
5
5
|
export default formatFields;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import Cell from './Cell';
|
|
3
3
|
import SortColumn from '../../../elements/SortColumn';
|
|
4
|
-
import { fieldHasSubFields,
|
|
4
|
+
import { fieldHasSubFields, fieldAffectsData, fieldIsPresentationalOnly } from '../../../../../fields/config/types';
|
|
5
5
|
const buildColumns = (collection, columns) => (columns || []).reduce((cols, col, colIndex) => {
|
|
6
6
|
let field = null;
|
|
7
7
|
const fields = [
|
|
@@ -23,12 +23,12 @@ const buildColumns = (collection, columns) => (columns || []).reduce((cols, col,
|
|
|
23
23
|
},
|
|
24
24
|
];
|
|
25
25
|
fields.forEach((fieldToCheck) => {
|
|
26
|
-
if (
|
|
26
|
+
if ((fieldAffectsData(fieldToCheck) || fieldIsPresentationalOnly(fieldToCheck)) && fieldToCheck.name === col) {
|
|
27
27
|
field = fieldToCheck;
|
|
28
28
|
}
|
|
29
|
-
if (!
|
|
29
|
+
if (!fieldAffectsData(fieldToCheck) && fieldHasSubFields(fieldToCheck)) {
|
|
30
30
|
fieldToCheck.fields.forEach((subField) => {
|
|
31
|
-
if (
|
|
31
|
+
if (fieldAffectsData(subField) && subField.name === col) {
|
|
32
32
|
field = subField;
|
|
33
33
|
}
|
|
34
34
|
});
|
|
@@ -41,7 +41,7 @@ const buildColumns = (collection, columns) => (columns || []).reduce((cols, col,
|
|
|
41
41
|
{
|
|
42
42
|
accessor: field.name,
|
|
43
43
|
components: {
|
|
44
|
-
Heading: (React.createElement(SortColumn, { label: field.label || field.name, name: field.name, disable: field.disableSort || undefined })),
|
|
44
|
+
Heading: (React.createElement(SortColumn, { label: field.label || field.name, name: field.name, disable: (field.disableSort || fieldIsPresentationalOnly(field)) || undefined })),
|
|
45
45
|
renderCell: (rowData, cellData) => (React.createElement(Cell, { field: field, colIndex: colIndex, collection: collection, rowData: rowData, cellData: cellData })),
|
|
46
46
|
},
|
|
47
47
|
},
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { fieldAffectsData, fieldIsPresentationalOnly } from '../../../../../fields/config/types';
|
|
2
2
|
const formatFields = (config) => {
|
|
3
|
-
const hasID = config.fields.findIndex((field) =>
|
|
3
|
+
const hasID = config.fields.findIndex((field) => fieldAffectsData(field) && field.name === 'id') > -1;
|
|
4
4
|
let fields = config.fields.reduce((formatted, field) => {
|
|
5
5
|
var _a;
|
|
6
|
-
if (field.hidden === true || ((_a = field === null || field === void 0 ? void 0 : field.admin) === null || _a === void 0 ? void 0 : _a.disabled) === true) {
|
|
6
|
+
if (!fieldIsPresentationalOnly(field) && (field.hidden === true || ((_a = field === null || field === void 0 ? void 0 : field.admin) === null || _a === void 0 ? void 0 : _a.disabled) === true)) {
|
|
7
7
|
return formatted;
|
|
8
8
|
}
|
|
9
9
|
return [
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { fieldHasSubFields,
|
|
1
|
+
import { fieldHasSubFields, fieldAffectsData } from '../../../../../fields/config/types';
|
|
2
2
|
const getInitialColumnState = (fields, useAsTitle, defaultColumns) => {
|
|
3
3
|
let initialColumns = [];
|
|
4
4
|
if (Array.isArray(defaultColumns) && defaultColumns.length >= 1) {
|
|
@@ -8,17 +8,17 @@ const getInitialColumnState = (fields, useAsTitle, defaultColumns) => {
|
|
|
8
8
|
initialColumns.push(useAsTitle);
|
|
9
9
|
}
|
|
10
10
|
const remainingColumns = fields.reduce((remaining, field) => {
|
|
11
|
-
if (
|
|
11
|
+
if (fieldAffectsData(field) && field.name === useAsTitle) {
|
|
12
12
|
return remaining;
|
|
13
13
|
}
|
|
14
|
-
if (!
|
|
14
|
+
if (!fieldAffectsData(field) && fieldHasSubFields(field)) {
|
|
15
15
|
return [
|
|
16
16
|
...remaining,
|
|
17
17
|
...field.fields.reduce((subFields, subField) => {
|
|
18
|
-
if (
|
|
18
|
+
if (fieldAffectsData(subField)) {
|
|
19
19
|
return [
|
|
20
20
|
...subFields,
|
|
21
|
-
subField.name
|
|
21
|
+
subField.name,
|
|
22
22
|
];
|
|
23
23
|
}
|
|
24
24
|
return subFields;
|
|
@@ -2,7 +2,7 @@ import { useConfig } from '@payloadcms/config-provider';
|
|
|
2
2
|
import isImage from '../../uploads/isImage';
|
|
3
3
|
const absoluteURLPattern = new RegExp('^(?:[a-z]+:)?//', 'i');
|
|
4
4
|
const useThumbnail = (collection, doc) => {
|
|
5
|
-
var _a;
|
|
5
|
+
var _a, _b;
|
|
6
6
|
const { upload: { staticURL, adminThumbnail, }, } = collection;
|
|
7
7
|
const { mimeType, sizes, filename, } = doc;
|
|
8
8
|
const { serverURL } = useConfig();
|
|
@@ -14,7 +14,10 @@ const useThumbnail = (collection, doc) => {
|
|
|
14
14
|
}
|
|
15
15
|
return `${serverURL}${thumbnailURL}`;
|
|
16
16
|
}
|
|
17
|
-
if ((_a = sizes === null || sizes === void 0 ? void 0 : sizes[adminThumbnail]) === null || _a === void 0 ? void 0 : _a.
|
|
17
|
+
if ((_a = sizes === null || sizes === void 0 ? void 0 : sizes[adminThumbnail]) === null || _a === void 0 ? void 0 : _a.url) {
|
|
18
|
+
return sizes[adminThumbnail].url;
|
|
19
|
+
}
|
|
20
|
+
if ((_b = sizes === null || sizes === void 0 ? void 0 : sizes[adminThumbnail]) === null || _b === void 0 ? void 0 : _b.filename) {
|
|
18
21
|
return `${serverURL}${staticURL}/${sizes[adminThumbnail].filename}`;
|
|
19
22
|
}
|
|
20
23
|
return `${serverURL}${staticURL}/${filename}`;
|
|
@@ -62,14 +62,14 @@ async function login(incomingArgs) {
|
|
|
62
62
|
const result = {
|
|
63
63
|
...signedFields,
|
|
64
64
|
};
|
|
65
|
-
if (!(0, types_1.
|
|
65
|
+
if (!(0, types_1.fieldAffectsData)(field) && (0, types_1.fieldHasSubFields)(field)) {
|
|
66
66
|
field.fields.forEach((subField) => {
|
|
67
|
-
if (
|
|
67
|
+
if ((0, types_1.fieldAffectsData)(subField) && subField.saveToJWT) {
|
|
68
68
|
result[subField.name] = user[subField.name];
|
|
69
69
|
}
|
|
70
70
|
});
|
|
71
71
|
}
|
|
72
|
-
if (
|
|
72
|
+
if ((0, types_1.fieldAffectsData)(field) && field.saveToJWT) {
|
|
73
73
|
result[field.name] = user[field.name];
|
|
74
74
|
}
|
|
75
75
|
return result;
|
|
@@ -140,4 +140,4 @@ async function login(incomingArgs) {
|
|
|
140
140
|
};
|
|
141
141
|
}
|
|
142
142
|
exports.default = login;
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXV0aC9vcGVyYXRpb25zL2xvZ2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0VBQStCO0FBRS9CLHlDQUErRDtBQUUvRCw4RkFBc0U7QUFDdEUsMkRBQW1DO0FBQ25DLG9HQUE0RTtBQUM1RSxxREFBdUY7QUF1QnZGLEtBQUssVUFBVSxLQUFLLENBQUMsWUFBdUI7SUFDMUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBRTVDLElBQUksSUFBSSxHQUFHLFlBQVksQ0FBQztJQUV4Qix3Q0FBd0M7SUFDeEMsK0JBQStCO0lBQy9CLHdDQUF3QztJQUV4QyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDbEYsTUFBTSxTQUFTLENBQUM7UUFFaEIsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUM7WUFDakIsSUFBSTtZQUNKLFNBQVMsRUFBRSxPQUFPO1NBQ25CLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNkLENBQUMsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUV0QixNQUFNLEVBQ0osVUFBVSxFQUFFLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFBRSxnQkFBZ0IsR0FDekIsRUFDRCxJQUFJLEVBQ0osR0FBRyxFQUNILEtBQUssRUFDTCxjQUFjLEVBQ2QsZ0JBQWdCLEdBQ2pCLEdBQUcsSUFBSSxDQUFDO0lBRVQsd0NBQXdDO0lBQ3hDLFFBQVE7SUFDUix3Q0FBd0M7SUFFeEMsTUFBTSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFFbkQsTUFBTSxLQUFLLEdBQUcsZ0JBQWdC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
|
|
@@ -25,7 +25,7 @@ async function resetPassword(args) {
|
|
|
25
25
|
await user.save();
|
|
26
26
|
await user.authenticate(data.password);
|
|
27
27
|
const fieldsToSign = collectionConfig.fields.reduce((signedFields, field) => {
|
|
28
|
-
if (
|
|
28
|
+
if ((0, types_1.fieldAffectsData)(field) && field.saveToJWT) {
|
|
29
29
|
return {
|
|
30
30
|
...signedFields,
|
|
31
31
|
[field.name]: user[field.name],
|
|
@@ -57,4 +57,4 @@ async function resetPassword(args) {
|
|
|
57
57
|
return { token, user: fullUser };
|
|
58
58
|
}
|
|
59
59
|
exports.default = resetPassword;
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXRQYXNzd29yZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL29wZXJhdGlvbnMvcmVzZXRQYXNzd29yZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdFQUErQjtBQUcvQix5Q0FBd0M7QUFDeEMsOEZBQXNFO0FBRXRFLHFEQUE2RDtBQWdCN0QsS0FBSyxVQUFVLGFBQWEsQ0FBQyxJQUFlO0lBQzFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBRWhDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7V0FDeEQsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRTtRQUNqRSxNQUFNLElBQUksaUJBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0tBQzlDO0lBRUQsTUFBTSxFQUNKLFVBQVUsRUFBRSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQUUsZ0JBQWdCLEdBQ3pCLEVBQ0QsSUFBSSxHQUNMLEdBQUcsSUFBSSxDQUFDO0lBRVQsTUFBTSxJQUFJLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQy9CLGtCQUFrQixFQUFFLElBQUksQ0FBQyxLQUFLO1FBQzlCLHVCQUF1QixFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRTtLQUM3QyxDQUFpQixDQUFDO0lBRW5CLElBQUksQ0FBQyxJQUFJO1FBQUUsTUFBTSxJQUFJLGlCQUFRLENBQUMseUNBQXlDLENBQUMsQ0FBQztJQUV6RSxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXRDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFMUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbEIsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV2QyxNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzFFLElBQUksSUFBQSx3QkFBZ0IsRUFBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFO1lBQzlDLE9BQU87Z0JBQ0wsR0FBRyxZQUFZO2dCQUNmLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2FBQy9CLENBQUM7U0FDSDtRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUMsRUFBRTtRQUNELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztRQUNqQixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7UUFDWCxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsSUFBSTtLQUNsQyxDQUFDLENBQUM7SUFFSCxNQUFNLEtBQUssR0FBRyxzQkFBRyxDQUFDLElBQUksQ0FDcEIsWUFBWSxFQUNaLE1BQU0sRUFDTjtRQUNFLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZTtLQUNqRCxDQUNGLENBQUM7SUFFRixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDWixNQUFNLGFBQWEsR0FBRztZQUNwQixJQUFJLEVBQUUsR0FBRztZQUNULFFBQVEsRUFBRSxJQUFJO1lBQ2QsT0FBTyxFQUFFLElBQUEsNkJBQW1CLEVBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUNuRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQzVDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7WUFDaEQsTUFBTSxFQUFFLFNBQVM7U0FDbEIsQ0FBQztRQUdGLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQUUsYUFBYSxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUV0RyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxZQUFZLFFBQVEsRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7S0FDdkU7SUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6RixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztBQUNuQyxDQUFDO0FBRUQsa0JBQWUsYUFBYSxDQUFDIn0=
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { SanitizedCollectionConfig, CollectionConfig } from './types';
|
|
2
|
-
|
|
2
|
+
import { Config } from '../../config/types';
|
|
3
|
+
declare const sanitizeCollection: (config: Config, collection: CollectionConfig) => SanitizedCollectionConfig;
|
|
3
4
|
export default sanitizeCollection;
|
|
@@ -4,18 +4,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const deepmerge_1 = __importDefault(require("deepmerge"));
|
|
7
|
-
const types_1 = require("../../fields/config/types");
|
|
8
7
|
const sanitize_1 = __importDefault(require("../../fields/config/sanitize"));
|
|
9
8
|
const toKebabCase_1 = __importDefault(require("../../utilities/toKebabCase"));
|
|
10
9
|
const baseAuthFields_1 = __importDefault(require("../../fields/baseFields/baseAuthFields"));
|
|
11
10
|
const baseAPIKeyFields_1 = __importDefault(require("../../fields/baseFields/baseAPIKeyFields"));
|
|
12
11
|
const baseVerificationFields_1 = __importDefault(require("../../fields/baseFields/baseVerificationFields"));
|
|
13
12
|
const baseAccountLockFields_1 = __importDefault(require("../../fields/baseFields/baseAccountLockFields"));
|
|
14
|
-
const
|
|
15
|
-
const baseImageUploadFields_1 = __importDefault(require("../../fields/baseFields/baseImageUploadFields"));
|
|
13
|
+
const getBaseUploadFields_1 = __importDefault(require("../../fields/baseFields/getBaseUploadFields"));
|
|
16
14
|
const formatLabels_1 = require("../../utilities/formatLabels");
|
|
17
15
|
const defaults_1 = require("./defaults");
|
|
18
|
-
const mimeTypeValidator_1 = require("../../fields/baseFields/mimeTypeValidator");
|
|
19
16
|
const mergeBaseFields = (fields, baseFields) => {
|
|
20
17
|
const mergedFields = [];
|
|
21
18
|
if (fields) {
|
|
@@ -48,7 +45,7 @@ const mergeBaseFields = (fields, baseFields) => {
|
|
|
48
45
|
}
|
|
49
46
|
return baseFields;
|
|
50
47
|
};
|
|
51
|
-
const sanitizeCollection = (
|
|
48
|
+
const sanitizeCollection = (config, collection) => {
|
|
52
49
|
// /////////////////////////////////
|
|
53
50
|
// Make copy of collection config
|
|
54
51
|
// /////////////////////////////////
|
|
@@ -61,13 +58,10 @@ const sanitizeCollection = (collections, collection) => {
|
|
|
61
58
|
sanitized.upload.staticDir = sanitized.upload.staticDir || sanitized.slug;
|
|
62
59
|
sanitized.upload.staticURL = sanitized.upload.staticURL || `/${sanitized.slug}`;
|
|
63
60
|
sanitized.admin.useAsTitle = (sanitized.admin.useAsTitle && sanitized.admin.useAsTitle !== 'id') ? sanitized.admin.useAsTitle : 'filename';
|
|
64
|
-
let uploadFields =
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
if (sanitized.upload.imageSizes && Array.isArray(sanitized.upload.imageSizes)) {
|
|
69
|
-
uploadFields = uploadFields.concat((0, baseImageUploadFields_1.default)(sanitized.upload.imageSizes));
|
|
70
|
-
}
|
|
61
|
+
let uploadFields = (0, getBaseUploadFields_1.default)({
|
|
62
|
+
config,
|
|
63
|
+
collection: sanitized,
|
|
64
|
+
});
|
|
71
65
|
uploadFields = mergeBaseFields(sanitized.fields, uploadFields);
|
|
72
66
|
sanitized.fields = [
|
|
73
67
|
...uploadFields,
|
|
@@ -97,9 +91,9 @@ const sanitizeCollection = (collections, collection) => {
|
|
|
97
91
|
// /////////////////////////////////
|
|
98
92
|
// Sanitize fields
|
|
99
93
|
// /////////////////////////////////
|
|
100
|
-
const validRelationships = collections.map((c) => c.slug);
|
|
94
|
+
const validRelationships = config.collections.map((c) => c.slug);
|
|
101
95
|
sanitized.fields = (0, sanitize_1.default)(sanitized.fields, validRelationships);
|
|
102
96
|
return sanitized;
|
|
103
97
|
};
|
|
104
98
|
exports.default = sanitizeCollection;
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FuaXRpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29sbGVjdGlvbnMvY29uZmlnL3Nhbml0aXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMERBQThCO0FBRzlCLDRFQUEwRDtBQUMxRCw4RUFBc0Q7QUFDdEQsNEZBQW9FO0FBQ3BFLGdHQUF3RTtBQUN4RSw0R0FBb0Y7QUFDcEYsMEdBQWtGO0FBQ2xGLHNHQUE4RTtBQUM5RSwrREFBNEQ7QUFDNUQseUNBQW9EO0FBR3BELE1BQU0sZUFBZSxHQUFHLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxFQUFFO0lBQzdDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUV4QixJQUFJLE1BQU0sRUFBRTtRQUNWLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUMvQixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUM7WUFFeEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUU7b0JBQ2pDLFlBQVksR0FBRyxDQUFDLENBQUM7b0JBQ2pCLE9BQU8sSUFBSSxDQUFDO2lCQUNiO2dCQUVELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLEtBQUssRUFBRTtnQkFDVCxNQUFNLFNBQVMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7Z0JBQy9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUUvQixJQUFJLFdBQVcsR0FBRztvQkFDaEIsR0FBRyxTQUFTO29CQUNaLEdBQUcsU0FBUztpQkFDYixDQUFDO2dCQUVGLElBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFO29C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
|