payload 0.13.3 → 0.13.7-beta.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 +41 -0
- package/dist/admin/components/elements/ReactSelect/types.d.ts +4 -3
- package/dist/admin/components/forms/field-types/RichText/elements/link/index.js +1 -0
- package/dist/admin/components/forms/field-types/RichText/elements/link/index.scss +1 -0
- package/dist/admin/components/forms/field-types/RichText/elements/link/utilities.d.ts +1 -1
- package/dist/admin/components/forms/field-types/RichText/elements/link/utilities.js +6 -2
- package/dist/admin/components/forms/field-types/Select/Input.d.ts +21 -0
- package/dist/admin/components/forms/field-types/Select/Input.js +32 -0
- package/dist/admin/components/forms/field-types/Select/index.d.ts +0 -1
- package/dist/admin/components/forms/field-types/Select/index.js +6 -38
- package/dist/admin/components/forms/field-types/Select/types.d.ts +0 -4
- package/dist/admin/components/forms/field-types/Text/Input.d.ts +19 -0
- package/dist/admin/components/forms/field-types/Text/Input.js +24 -0
- package/dist/admin/components/forms/field-types/Text/index.d.ts +0 -1
- package/dist/admin/components/forms/field-types/Text/index.js +8 -35
- package/dist/admin/components/forms/field-types/Textarea/Input.d.ts +20 -0
- package/dist/admin/components/forms/field-types/Textarea/Input.js +23 -0
- package/dist/admin/components/forms/field-types/Textarea/index.js +4 -17
- package/dist/admin/components/forms/field-types/Upload/Input.d.ts +25 -0
- package/dist/admin/components/forms/field-types/Upload/Input.js +83 -0
- package/dist/admin/components/forms/field-types/Upload/index.js +14 -96
- package/dist/admin/components/forms/useField/index.js +4 -3
- package/dist/admin/components/views/collections/Edit/index.js +5 -0
- package/dist/collections/operations/update.js +2 -2
- package/dist/fields/config/types.d.ts +0 -6
- package/dist/fields/config/types.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,44 @@
|
|
|
1
|
+
## [0.13.7-beta.0](https://github.com/payloadcms/payload/compare/v0.13.6...v0.13.7-beta.0) (2021-12-14)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* [#370](https://github.com/payloadcms/payload/issues/370), only performs password functions when auth enabled ([9738873](https://github.com/payloadcms/payload/commit/97388738def687f3b26eaf8de6b067f4d3758418))
|
|
7
|
+
* [#390](https://github.com/payloadcms/payload/issues/390), safari rich text link bug ([a16b99b](https://github.com/payloadcms/payload/commit/a16b99b0c87d55f768ed74ab35708a291fc7bbb0))
|
|
8
|
+
* [#393](https://github.com/payloadcms/payload/issues/393), ensures preview button gets up to date data ([2f47e39](https://github.com/payloadcms/payload/commit/2f47e39a9f765bd8ce437d4b7500a5b314a192a5))
|
|
9
|
+
|
|
10
|
+
## [0.13.6](https://github.com/payloadcms/payload/compare/v0.13.5...v0.13.6) (2021-11-30)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* requires path in select, text, textarea, and upload components ([925a33e](https://github.com/payloadcms/payload/commit/925a33e5602336f6128188aaf73001dbd23bd411))
|
|
16
|
+
|
|
17
|
+
## [0.13.5](https://github.com/payloadcms/payload/compare/v0.13.4...v0.13.5) (2021-11-30)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* select component rendered value ([ecabf13](https://github.com/payloadcms/payload/commit/ecabf130fd1b4b87c45196d4bdf675e76b20c9e3))
|
|
23
|
+
|
|
24
|
+
## [0.13.4](https://github.com/payloadcms/payload/compare/v0.13.3...v0.13.4) (2021-11-30)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
### Bug Fixes
|
|
28
|
+
|
|
29
|
+
* passes hasMany through select component ([c77bf3a](https://github.com/payloadcms/payload/commit/c77bf3aa42d76b7a0649b28fee3fe5d4bd06dcf6))
|
|
30
|
+
* prevents uncontrolled text field component ([f0fd859](https://github.com/payloadcms/payload/commit/f0fd859347804fdf0d79bbe566412abaeec6ff6a))
|
|
31
|
+
* select component types ([7e2b259](https://github.com/payloadcms/payload/commit/7e2b2598167dc59b8982f635cb95eacf247abb43))
|
|
32
|
+
* threads props through textarea component ([0b13eda](https://github.com/payloadcms/payload/commit/0b13eda1e55299f7d6dfac2854acc04cff459396))
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
### Features
|
|
36
|
+
|
|
37
|
+
* abstracts input from text component ([615e369](https://github.com/payloadcms/payload/commit/615e3695f2e62ce5d8a43ccb84192aca57770af8))
|
|
38
|
+
* abstracts select component ([fa67137](https://github.com/payloadcms/payload/commit/fa671378c7282cda1ed6f46340a53622e3bc96dc))
|
|
39
|
+
* abstracts textarea component and improves event typing ([86480b7](https://github.com/payloadcms/payload/commit/86480b7482b2b9413272ab0f9d0a82cd5e2920b8))
|
|
40
|
+
* abstracts upload component ([f234f68](https://github.com/payloadcms/payload/commit/f234f68019f122bd46cb2af2e8f62cf07cd53c1b))
|
|
41
|
+
|
|
1
42
|
## [0.13.3](https://github.com/payloadcms/payload/compare/v0.13.2...v0.13.3) (2021-11-29)
|
|
2
43
|
|
|
3
44
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { OptionsType, GroupedOptionsType } from 'react-select';
|
|
2
|
+
export declare type Options = OptionsType<Value> | GroupedOptionsType<Value>;
|
|
2
3
|
export declare type Value = {
|
|
3
4
|
label: string;
|
|
4
|
-
value:
|
|
5
|
-
options?:
|
|
5
|
+
value: string;
|
|
6
|
+
options?: Options;
|
|
6
7
|
};
|
|
7
8
|
export declare type Props = {
|
|
8
9
|
className?: string;
|
|
@@ -10,7 +11,7 @@ export declare type Props = {
|
|
|
10
11
|
onChange?: (value: any) => void;
|
|
11
12
|
disabled?: boolean;
|
|
12
13
|
showError?: boolean;
|
|
13
|
-
options:
|
|
14
|
+
options: Options;
|
|
14
15
|
isMulti?: boolean;
|
|
15
16
|
isDisabled?: boolean;
|
|
16
17
|
onInputChange?: (val: string) => void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Editor } from 'slate';
|
|
2
2
|
export declare const isLinkActive: (editor: Editor) => boolean;
|
|
3
3
|
export declare const unwrapLink: (editor: Editor) => void;
|
|
4
|
-
export declare const wrapLink: (editor:
|
|
4
|
+
export declare const wrapLink: (editor: any, url?: string, newTab?: boolean) => void;
|
|
5
5
|
export declare const withLinks: (incomingEditor: Editor) => Editor;
|
|
@@ -10,8 +10,12 @@ export const wrapLink = (editor, url, newTab) => {
|
|
|
10
10
|
if (isLinkActive(editor)) {
|
|
11
11
|
unwrapLink(editor);
|
|
12
12
|
}
|
|
13
|
-
const { selection } = editor;
|
|
14
|
-
|
|
13
|
+
const { selection, blurSelection } = editor;
|
|
14
|
+
if (blurSelection) {
|
|
15
|
+
Transforms.select(editor, blurSelection);
|
|
16
|
+
}
|
|
17
|
+
const selectionToUse = selection || blurSelection;
|
|
18
|
+
const isCollapsed = selectionToUse && Range.isCollapsed(selectionToUse);
|
|
15
19
|
const link = {
|
|
16
20
|
type: 'link',
|
|
17
21
|
url,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { OptionObject, SelectField } from '../../../../../fields/config/types';
|
|
3
|
+
import { Description } from '../../FieldDescription/types';
|
|
4
|
+
import { Value as ReactSelectValue } from '../../../elements/ReactSelect/types';
|
|
5
|
+
import './index.scss';
|
|
6
|
+
export declare type SelectInputProps = Omit<SelectField, 'type' | 'value' | 'options'> & {
|
|
7
|
+
showError?: boolean;
|
|
8
|
+
errorMessage?: string;
|
|
9
|
+
readOnly?: boolean;
|
|
10
|
+
path: string;
|
|
11
|
+
required?: boolean;
|
|
12
|
+
value?: string | string[];
|
|
13
|
+
description?: Description;
|
|
14
|
+
onChange?: (value: ReactSelectValue) => void;
|
|
15
|
+
style?: React.CSSProperties;
|
|
16
|
+
width?: string;
|
|
17
|
+
hasMany?: boolean;
|
|
18
|
+
options?: OptionObject[];
|
|
19
|
+
};
|
|
20
|
+
declare const SelectInput: React.FC<SelectInputProps>;
|
|
21
|
+
export default SelectInput;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Label from '../../Label';
|
|
3
|
+
import Error from '../../Error';
|
|
4
|
+
import FieldDescription from '../../FieldDescription';
|
|
5
|
+
import ReactSelect from '../../../elements/ReactSelect';
|
|
6
|
+
// import { FieldType } from '../../useField/types';
|
|
7
|
+
import './index.scss';
|
|
8
|
+
const SelectInput = (props) => {
|
|
9
|
+
const { showError, errorMessage, readOnly, path, label, required, value, onChange, description, style, width, options, hasMany, } = props;
|
|
10
|
+
const classes = [
|
|
11
|
+
'field-type',
|
|
12
|
+
'select',
|
|
13
|
+
showError && 'error',
|
|
14
|
+
readOnly && 'read-only',
|
|
15
|
+
].filter(Boolean).join(' ');
|
|
16
|
+
let valueToRender;
|
|
17
|
+
if (hasMany && Array.isArray(value)) {
|
|
18
|
+
valueToRender = value.map((val) => options.find((option) => option.value === val));
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
valueToRender = options.find((option) => option.value === value);
|
|
22
|
+
}
|
|
23
|
+
return (React.createElement("div", { className: classes, style: {
|
|
24
|
+
...style,
|
|
25
|
+
width,
|
|
26
|
+
} },
|
|
27
|
+
React.createElement(Error, { showError: showError, message: errorMessage }),
|
|
28
|
+
React.createElement(Label, { htmlFor: path, label: label, required: required }),
|
|
29
|
+
React.createElement(ReactSelect, { onChange: onChange, value: valueToRender, showError: showError, isDisabled: readOnly, options: options, isMulti: hasMany }),
|
|
30
|
+
React.createElement(FieldDescription, { value: value, description: description })));
|
|
31
|
+
};
|
|
32
|
+
export default SelectInput;
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
import React, { useCallback, useState } from 'react';
|
|
2
2
|
import withCondition from '../../withCondition';
|
|
3
|
-
import ReactSelect from '../../../elements/ReactSelect';
|
|
4
3
|
import useField from '../../useField';
|
|
5
|
-
import Label from '../../Label';
|
|
6
|
-
import Error from '../../Error';
|
|
7
|
-
import FieldDescription from '../../FieldDescription';
|
|
8
4
|
import { select } from '../../../../../fields/validations';
|
|
9
|
-
import './
|
|
10
|
-
const baseClass = 'select';
|
|
5
|
+
import SelectInput from './Input';
|
|
11
6
|
const formatOptions = (options) => options.map((option) => {
|
|
12
7
|
if (typeof option === 'object' && option.value) {
|
|
13
8
|
return option;
|
|
@@ -18,14 +13,14 @@ const formatOptions = (options) => options.map((option) => {
|
|
|
18
13
|
};
|
|
19
14
|
});
|
|
20
15
|
const Select = (props) => {
|
|
21
|
-
const { path: pathFromProps, name, required, validate = select, label, options: optionsFromProps, hasMany, admin: { readOnly, style, width, description, condition, } = {},
|
|
16
|
+
const { path: pathFromProps, name, required, validate = select, label, options: optionsFromProps, hasMany, admin: { readOnly, style, width, description, condition, } = {}, } = props;
|
|
22
17
|
const path = pathFromProps || name;
|
|
23
18
|
const [options] = useState(formatOptions(optionsFromProps));
|
|
24
19
|
const memoizedValidate = useCallback((value) => {
|
|
25
20
|
const validationResult = validate(value, { required, options });
|
|
26
21
|
return validationResult;
|
|
27
22
|
}, [validate, required, options]);
|
|
28
|
-
const { value
|
|
23
|
+
const { value, showError, setValue, errorMessage, } = useField({
|
|
29
24
|
path,
|
|
30
25
|
validate: memoizedValidate,
|
|
31
26
|
condition,
|
|
@@ -44,40 +39,13 @@ const Select = (props) => {
|
|
|
44
39
|
else {
|
|
45
40
|
newValue = selectedOption.value;
|
|
46
41
|
}
|
|
47
|
-
|
|
48
|
-
onChangeFromProps(newValue);
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
setValue(newValue);
|
|
52
|
-
}
|
|
42
|
+
setValue(newValue);
|
|
53
43
|
}
|
|
54
44
|
}, [
|
|
55
45
|
readOnly,
|
|
56
46
|
hasMany,
|
|
57
|
-
|
|
58
|
-
setValue
|
|
47
|
+
setValue,
|
|
59
48
|
]);
|
|
60
|
-
|
|
61
|
-
'field-type',
|
|
62
|
-
baseClass,
|
|
63
|
-
showError && 'error',
|
|
64
|
-
readOnly && `${baseClass}--read-only`,
|
|
65
|
-
].filter(Boolean).join(' ');
|
|
66
|
-
let valueToRender;
|
|
67
|
-
const value = valueFromProps || valueFromContext || '';
|
|
68
|
-
if (hasMany && Array.isArray(value)) {
|
|
69
|
-
valueToRender = value.map((val) => options.find((option) => option.value === val));
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
valueToRender = options.find((option) => option.value === value);
|
|
73
|
-
}
|
|
74
|
-
return (React.createElement("div", { className: classes, style: {
|
|
75
|
-
...style,
|
|
76
|
-
width,
|
|
77
|
-
} },
|
|
78
|
-
React.createElement(Error, { showError: showError, message: errorMessage }),
|
|
79
|
-
React.createElement(Label, { htmlFor: path, label: label, required: required }),
|
|
80
|
-
React.createElement(ReactSelect, { onChange: onChange, value: valueToRender, showError: showError, isDisabled: readOnly, options: options, isMulti: hasMany }),
|
|
81
|
-
React.createElement(FieldDescription, { value: value, description: description })));
|
|
49
|
+
return (React.createElement(SelectInput, { path: path, onChange: onChange, value: value, name: name, options: options, label: label, showError: showError, errorMessage: errorMessage, description: description, style: style, width: width, hasMany: hasMany }));
|
|
82
50
|
};
|
|
83
51
|
export default withCondition(Select);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React, { ChangeEvent } from 'react';
|
|
2
|
+
import { TextField } from '../../../../../fields/config/types';
|
|
3
|
+
import { Description } from '../../FieldDescription/types';
|
|
4
|
+
import './index.scss';
|
|
5
|
+
export declare type TextInputProps = Omit<TextField, 'type'> & {
|
|
6
|
+
showError?: boolean;
|
|
7
|
+
errorMessage?: string;
|
|
8
|
+
readOnly?: boolean;
|
|
9
|
+
path: string;
|
|
10
|
+
required?: boolean;
|
|
11
|
+
value?: string;
|
|
12
|
+
description?: Description;
|
|
13
|
+
onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
|
|
14
|
+
placeholder?: string;
|
|
15
|
+
style?: React.CSSProperties;
|
|
16
|
+
width?: string;
|
|
17
|
+
};
|
|
18
|
+
declare const TextInput: React.FC<TextInputProps>;
|
|
19
|
+
export default TextInput;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Label from '../../Label';
|
|
3
|
+
import Error from '../../Error';
|
|
4
|
+
import FieldDescription from '../../FieldDescription';
|
|
5
|
+
// import { FieldType } from '../../useField/types';
|
|
6
|
+
import './index.scss';
|
|
7
|
+
const TextInput = (props) => {
|
|
8
|
+
const { showError, errorMessage, placeholder, readOnly, path, label, required, value, onChange, description, style, width, } = props;
|
|
9
|
+
const classes = [
|
|
10
|
+
'field-type',
|
|
11
|
+
'text',
|
|
12
|
+
showError && 'error',
|
|
13
|
+
readOnly && 'read-only',
|
|
14
|
+
].filter(Boolean).join(' ');
|
|
15
|
+
return (React.createElement("div", { className: classes, style: {
|
|
16
|
+
...style,
|
|
17
|
+
width,
|
|
18
|
+
} },
|
|
19
|
+
React.createElement(Error, { showError: showError, message: errorMessage }),
|
|
20
|
+
React.createElement(Label, { htmlFor: path, label: label, required: required }),
|
|
21
|
+
React.createElement("input", { value: value || '', onChange: onChange, disabled: readOnly, placeholder: placeholder, type: "text", id: path, name: path }),
|
|
22
|
+
React.createElement(FieldDescription, { value: value, description: description })));
|
|
23
|
+
};
|
|
24
|
+
export default TextInput;
|
|
@@ -1,47 +1,20 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import useField from '../../useField';
|
|
3
3
|
import withCondition from '../../withCondition';
|
|
4
|
-
import Label from '../../Label';
|
|
5
|
-
import Error from '../../Error';
|
|
6
4
|
import { text } from '../../../../../fields/validations';
|
|
7
|
-
import
|
|
8
|
-
import './index.scss';
|
|
5
|
+
import TextInput from './Input';
|
|
9
6
|
const Text = (props) => {
|
|
10
|
-
const { path: pathFromProps, name, required, validate = text, label, admin: { placeholder, readOnly, style, width, description, condition, } = {},
|
|
7
|
+
const { path: pathFromProps, name, required, validate = text, label, admin: { placeholder, readOnly, style, width, description, condition, } = {}, } = props;
|
|
11
8
|
const path = pathFromProps || name;
|
|
12
|
-
const
|
|
9
|
+
const field = useField({
|
|
13
10
|
path,
|
|
14
11
|
validate,
|
|
15
12
|
enableDebouncedValue: true,
|
|
16
13
|
condition,
|
|
17
14
|
});
|
|
18
|
-
const { value
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
onChangeFromProps(incomingValue);
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
setValue(e);
|
|
26
|
-
}
|
|
27
|
-
}, [
|
|
28
|
-
onChangeFromProps,
|
|
29
|
-
setValue,
|
|
30
|
-
]);
|
|
31
|
-
const classes = [
|
|
32
|
-
'field-type',
|
|
33
|
-
'text',
|
|
34
|
-
showError && 'error',
|
|
35
|
-
readOnly && 'read-only',
|
|
36
|
-
].filter(Boolean).join(' ');
|
|
37
|
-
const value = valueFromProps || valueFromContext || '';
|
|
38
|
-
return (React.createElement("div", { className: classes, style: {
|
|
39
|
-
...style,
|
|
40
|
-
width,
|
|
41
|
-
} },
|
|
42
|
-
React.createElement(Error, { showError: showError, message: errorMessage }),
|
|
43
|
-
React.createElement(Label, { htmlFor: path, label: label, required: required }),
|
|
44
|
-
React.createElement("input", { value: value, onChange: onChange, disabled: readOnly, placeholder: placeholder, type: "text", id: path, name: path }),
|
|
45
|
-
React.createElement(FieldDescription, { value: value, description: description })));
|
|
15
|
+
const { value, showError, setValue, errorMessage, } = field;
|
|
16
|
+
return (React.createElement(TextInput, { path: path, name: name, onChange: (e) => {
|
|
17
|
+
setValue(e.target.value);
|
|
18
|
+
}, showError: showError, errorMessage: errorMessage, required: required, label: label, value: value, placeholder: placeholder, readOnly: readOnly, style: style, width: width, description: description }));
|
|
46
19
|
};
|
|
47
20
|
export default withCondition(Text);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React, { ChangeEvent } from 'react';
|
|
2
|
+
import { TextareaField } from '../../../../../fields/config/types';
|
|
3
|
+
import { Description } from '../../FieldDescription/types';
|
|
4
|
+
import './index.scss';
|
|
5
|
+
export declare type TextAreaInputProps = Omit<TextareaField, 'type'> & {
|
|
6
|
+
showError?: boolean;
|
|
7
|
+
errorMessage?: string;
|
|
8
|
+
readOnly?: boolean;
|
|
9
|
+
path: string;
|
|
10
|
+
required?: boolean;
|
|
11
|
+
value?: string;
|
|
12
|
+
description?: Description;
|
|
13
|
+
onChange?: (e: ChangeEvent<HTMLTextAreaElement>) => void;
|
|
14
|
+
placeholder?: string;
|
|
15
|
+
style?: React.CSSProperties;
|
|
16
|
+
width?: string;
|
|
17
|
+
rows?: number;
|
|
18
|
+
};
|
|
19
|
+
declare const TextareaInput: React.FC<TextAreaInputProps>;
|
|
20
|
+
export default TextareaInput;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Label from '../../Label';
|
|
3
|
+
import Error from '../../Error';
|
|
4
|
+
import FieldDescription from '../../FieldDescription';
|
|
5
|
+
import './index.scss';
|
|
6
|
+
const TextareaInput = (props) => {
|
|
7
|
+
const { path, required, readOnly, style, width, placeholder, description, label, showError, value, errorMessage, onChange, rows, } = props;
|
|
8
|
+
const classes = [
|
|
9
|
+
'field-type',
|
|
10
|
+
'textarea',
|
|
11
|
+
showError && 'error',
|
|
12
|
+
readOnly && 'read-only',
|
|
13
|
+
].filter(Boolean).join(' ');
|
|
14
|
+
return (React.createElement("div", { className: classes, style: {
|
|
15
|
+
...style,
|
|
16
|
+
width,
|
|
17
|
+
} },
|
|
18
|
+
React.createElement(Error, { showError: showError, message: errorMessage }),
|
|
19
|
+
React.createElement(Label, { htmlFor: path, label: label, required: required }),
|
|
20
|
+
React.createElement("textarea", { value: value || '', onChange: onChange, disabled: readOnly, placeholder: placeholder, id: path, name: path, rows: rows }),
|
|
21
|
+
React.createElement(FieldDescription, { value: value, description: description })));
|
|
22
|
+
};
|
|
23
|
+
export default TextareaInput;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import React, { useCallback } from 'react';
|
|
2
2
|
import useField from '../../useField';
|
|
3
3
|
import withCondition from '../../withCondition';
|
|
4
|
-
import Label from '../../Label';
|
|
5
|
-
import Error from '../../Error';
|
|
6
|
-
import FieldDescription from '../../FieldDescription';
|
|
7
4
|
import { textarea } from '../../../../../fields/validations';
|
|
8
5
|
import './index.scss';
|
|
6
|
+
import TextareaInput from './Input';
|
|
9
7
|
const Textarea = (props) => {
|
|
10
8
|
const { path: pathFromProps, name, required, validate = textarea, admin: { readOnly, style, width, placeholder, rows, description, condition, } = {}, label, minLength, maxLength, } = props;
|
|
11
9
|
const path = pathFromProps || name;
|
|
@@ -19,19 +17,8 @@ const Textarea = (props) => {
|
|
|
19
17
|
enableDebouncedValue: true,
|
|
20
18
|
condition,
|
|
21
19
|
});
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
showError && 'error',
|
|
26
|
-
readOnly && 'read-only',
|
|
27
|
-
].filter(Boolean).join(' ');
|
|
28
|
-
return (React.createElement("div", { className: classes, style: {
|
|
29
|
-
...style,
|
|
30
|
-
width,
|
|
31
|
-
} },
|
|
32
|
-
React.createElement(Error, { showError: showError, message: errorMessage }),
|
|
33
|
-
React.createElement(Label, { htmlFor: path, label: label, required: required }),
|
|
34
|
-
React.createElement("textarea", { value: value || '', onChange: setValue, disabled: readOnly, placeholder: placeholder, id: path, name: path, rows: rows }),
|
|
35
|
-
React.createElement(FieldDescription, { value: value, description: description })));
|
|
20
|
+
return (React.createElement(TextareaInput, { path: path, name: name, onChange: (e) => {
|
|
21
|
+
setValue(e.target.value);
|
|
22
|
+
}, showError: showError, errorMessage: errorMessage, required: required, label: label, value: value, placeholder: placeholder, readOnly: readOnly, style: style, width: width, description: description, rows: rows }));
|
|
36
23
|
};
|
|
37
24
|
export default withCondition(Textarea);
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { UploadField } from '../../../../../fields/config/types';
|
|
3
|
+
import { Description } from '../../FieldDescription/types';
|
|
4
|
+
import { FieldTypes } from '..';
|
|
5
|
+
import { SanitizedCollectionConfig } from '../../../../../collections/config/types';
|
|
6
|
+
import './index.scss';
|
|
7
|
+
export declare type UploadInputProps = Omit<UploadField, 'type'> & {
|
|
8
|
+
showError?: boolean;
|
|
9
|
+
errorMessage?: string;
|
|
10
|
+
readOnly?: boolean;
|
|
11
|
+
path: string;
|
|
12
|
+
required?: boolean;
|
|
13
|
+
value?: string;
|
|
14
|
+
description?: Description;
|
|
15
|
+
onChange?: (e: any) => void;
|
|
16
|
+
placeholder?: string;
|
|
17
|
+
style?: React.CSSProperties;
|
|
18
|
+
width?: string;
|
|
19
|
+
fieldTypes?: FieldTypes;
|
|
20
|
+
collection?: SanitizedCollectionConfig;
|
|
21
|
+
serverURL?: string;
|
|
22
|
+
api?: string;
|
|
23
|
+
};
|
|
24
|
+
declare const UploadInput: React.FC<UploadInputProps>;
|
|
25
|
+
export default UploadInput;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
|
+
import { useModal } from '@faceless-ui/modal';
|
|
3
|
+
import Button from '../../../elements/Button';
|
|
4
|
+
import Label from '../../Label';
|
|
5
|
+
import Error from '../../Error';
|
|
6
|
+
import FileDetails from '../../../elements/FileDetails';
|
|
7
|
+
import FieldDescription from '../../FieldDescription';
|
|
8
|
+
import AddModal from './Add';
|
|
9
|
+
import SelectExistingModal from './SelectExisting';
|
|
10
|
+
import './index.scss';
|
|
11
|
+
const baseClass = 'upload';
|
|
12
|
+
const UploadInput = (props) => {
|
|
13
|
+
const { path, required, readOnly, style, width, description, label, relationTo, fieldTypes, value, onChange, showError, serverURL = 'http://localhost:3000', api = '/api', collection, errorMessage, } = props;
|
|
14
|
+
const { toggle } = useModal();
|
|
15
|
+
const addModalSlug = `${path}-add`;
|
|
16
|
+
const selectExistingModalSlug = `${path}-select-existing`;
|
|
17
|
+
const [file, setFile] = useState(undefined);
|
|
18
|
+
const [missingFile, setMissingFile] = useState(false);
|
|
19
|
+
const classes = [
|
|
20
|
+
'field-type',
|
|
21
|
+
baseClass,
|
|
22
|
+
showError && 'error',
|
|
23
|
+
readOnly && 'read-only',
|
|
24
|
+
].filter(Boolean).join(' ');
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
if (typeof value === 'string' && value !== '') {
|
|
27
|
+
const fetchFile = async () => {
|
|
28
|
+
const response = await fetch(`${serverURL}${api}/${relationTo}/${value}`);
|
|
29
|
+
if (response.ok) {
|
|
30
|
+
const json = await response.json();
|
|
31
|
+
setFile(json);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
setMissingFile(true);
|
|
35
|
+
setFile(undefined);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
fetchFile();
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
setFile(undefined);
|
|
42
|
+
}
|
|
43
|
+
}, [
|
|
44
|
+
value,
|
|
45
|
+
relationTo,
|
|
46
|
+
api,
|
|
47
|
+
serverURL,
|
|
48
|
+
]);
|
|
49
|
+
return (React.createElement("div", { className: classes, style: {
|
|
50
|
+
...style,
|
|
51
|
+
width,
|
|
52
|
+
} },
|
|
53
|
+
React.createElement(Error, { showError: showError, message: errorMessage }),
|
|
54
|
+
React.createElement(Label, { htmlFor: path, label: label, required: required }),
|
|
55
|
+
(collection === null || collection === void 0 ? void 0 : collection.upload) && (React.createElement(React.Fragment, null,
|
|
56
|
+
(file && !missingFile) && (React.createElement(FileDetails, { collection: collection, doc: file, handleRemove: () => {
|
|
57
|
+
onChange(null);
|
|
58
|
+
} })),
|
|
59
|
+
(!file || missingFile) && (React.createElement("div", { className: `${baseClass}__wrap` },
|
|
60
|
+
React.createElement(Button, { buttonStyle: "secondary", onClick: () => {
|
|
61
|
+
toggle(addModalSlug);
|
|
62
|
+
} },
|
|
63
|
+
"Upload new",
|
|
64
|
+
' ',
|
|
65
|
+
collection.labels.singular),
|
|
66
|
+
React.createElement(Button, { buttonStyle: "secondary", onClick: () => {
|
|
67
|
+
toggle(selectExistingModalSlug);
|
|
68
|
+
} }, "Choose from existing"))),
|
|
69
|
+
React.createElement(AddModal, { ...{
|
|
70
|
+
collection,
|
|
71
|
+
slug: addModalSlug,
|
|
72
|
+
fieldTypes,
|
|
73
|
+
setValue: onChange,
|
|
74
|
+
} }),
|
|
75
|
+
React.createElement(SelectExistingModal, { ...{
|
|
76
|
+
collection,
|
|
77
|
+
slug: selectExistingModalSlug,
|
|
78
|
+
setValue: onChange,
|
|
79
|
+
addModalSlug,
|
|
80
|
+
} }),
|
|
81
|
+
React.createElement(FieldDescription, { value: file, description: description })))));
|
|
82
|
+
};
|
|
83
|
+
export default UploadInput;
|
|
@@ -1,115 +1,33 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
import { useModal } from '@faceless-ui/modal';
|
|
1
|
+
import React, { useCallback } from 'react';
|
|
3
2
|
import { useConfig } from '@payloadcms/config-provider';
|
|
4
3
|
import useField from '../../useField';
|
|
5
4
|
import withCondition from '../../withCondition';
|
|
6
|
-
import Button from '../../../elements/Button';
|
|
7
|
-
import Label from '../../Label';
|
|
8
|
-
import Error from '../../Error';
|
|
9
5
|
import { upload } from '../../../../../fields/validations';
|
|
10
|
-
import
|
|
11
|
-
import AddModal from './Add';
|
|
12
|
-
import SelectExistingModal from './SelectExisting';
|
|
6
|
+
import UploadInput from './Input';
|
|
13
7
|
import './index.scss';
|
|
14
|
-
import FieldDescription from '../../FieldDescription';
|
|
15
|
-
const baseClass = 'upload';
|
|
16
8
|
const Upload = (props) => {
|
|
17
|
-
const {
|
|
18
|
-
const
|
|
19
|
-
const [missingFile, setMissingFile] = useState(false);
|
|
20
|
-
const { collections, serverURL, routes: { api } } = useConfig();
|
|
21
|
-
const { path: pathFromProps, name, required, admin: { readOnly, style, width, description, condition, } = {}, label, validate = upload, relationTo, fieldTypes, value: valueFromProps, onChange: onChangeFromProps, } = props;
|
|
9
|
+
const { collections, serverURL, routes: { api, }, } = useConfig();
|
|
10
|
+
const { path, name, required, admin: { readOnly, style, width, description, condition, } = {}, label, validate = upload, relationTo, fieldTypes, } = props;
|
|
22
11
|
const collection = collections.find((coll) => coll.slug === relationTo);
|
|
23
|
-
const path = pathFromProps || name;
|
|
24
|
-
const addModalSlug = `${path}-add`;
|
|
25
|
-
const selectExistingModalSlug = `${path}-select-existing`;
|
|
26
12
|
const memoizedValidate = useCallback((value) => {
|
|
27
13
|
const validationResult = validate(value, { required });
|
|
28
14
|
return validationResult;
|
|
29
15
|
}, [validate, required]);
|
|
30
|
-
const
|
|
16
|
+
const field = useField({
|
|
31
17
|
path,
|
|
32
18
|
validate: memoizedValidate,
|
|
33
19
|
condition,
|
|
34
20
|
});
|
|
35
|
-
const { value
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
baseClass,
|
|
40
|
-
showError && 'error',
|
|
41
|
-
readOnly && 'read-only',
|
|
42
|
-
].filter(Boolean).join(' ');
|
|
43
|
-
useEffect(() => {
|
|
44
|
-
if (typeof value === 'string') {
|
|
45
|
-
const fetchFile = async () => {
|
|
46
|
-
const response = await fetch(`${serverURL}${api}/${relationTo}/${value}`);
|
|
47
|
-
if (response.ok) {
|
|
48
|
-
const json = await response.json();
|
|
49
|
-
setInternalValue(json);
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
setInternalValue(undefined);
|
|
53
|
-
setMissingFile(true);
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
fetchFile();
|
|
57
|
-
}
|
|
21
|
+
const { value, showError, setValue, errorMessage, } = field;
|
|
22
|
+
const onChange = useCallback((incomingValue) => {
|
|
23
|
+
const incomingID = (incomingValue === null || incomingValue === void 0 ? void 0 : incomingValue.id) || incomingValue;
|
|
24
|
+
setValue(incomingID);
|
|
58
25
|
}, [
|
|
59
|
-
|
|
60
|
-
relationTo,
|
|
61
|
-
api,
|
|
62
|
-
serverURL,
|
|
63
|
-
setValue
|
|
26
|
+
setValue,
|
|
64
27
|
]);
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
setValue(incomingID);
|
|
72
|
-
}
|
|
73
|
-
}, [internalValue]);
|
|
74
|
-
return (React.createElement("div", { className: classes, style: {
|
|
75
|
-
...style,
|
|
76
|
-
width,
|
|
77
|
-
} },
|
|
78
|
-
React.createElement(Error, { showError: showError, message: errorMessage }),
|
|
79
|
-
React.createElement(Label, { htmlFor: path, label: label, required: required }),
|
|
80
|
-
(collection === null || collection === void 0 ? void 0 : collection.upload) && (React.createElement(React.Fragment, null,
|
|
81
|
-
(internalValue && !missingFile) && (React.createElement(FileDetails, { collection: collection, doc: internalValue, handleRemove: () => {
|
|
82
|
-
setInternalValue(undefined);
|
|
83
|
-
setValue(null);
|
|
84
|
-
} })),
|
|
85
|
-
(!value || missingFile) && (React.createElement("div", { className: `${baseClass}__wrap` },
|
|
86
|
-
React.createElement(Button, { buttonStyle: "secondary", onClick: () => {
|
|
87
|
-
toggle(addModalSlug);
|
|
88
|
-
} },
|
|
89
|
-
"Upload new",
|
|
90
|
-
' ',
|
|
91
|
-
collection.labels.singular),
|
|
92
|
-
React.createElement(Button, { buttonStyle: "secondary", onClick: () => {
|
|
93
|
-
toggle(selectExistingModalSlug);
|
|
94
|
-
} }, "Choose from existing"))),
|
|
95
|
-
React.createElement(AddModal, { ...{
|
|
96
|
-
collection,
|
|
97
|
-
slug: addModalSlug,
|
|
98
|
-
fieldTypes,
|
|
99
|
-
setValue: (val) => {
|
|
100
|
-
setMissingFile(false);
|
|
101
|
-
setInternalValue(val);
|
|
102
|
-
},
|
|
103
|
-
} }),
|
|
104
|
-
React.createElement(SelectExistingModal, { ...{
|
|
105
|
-
collection,
|
|
106
|
-
slug: selectExistingModalSlug,
|
|
107
|
-
setValue: (val) => {
|
|
108
|
-
setMissingFile(false);
|
|
109
|
-
setInternalValue(val);
|
|
110
|
-
},
|
|
111
|
-
addModalSlug,
|
|
112
|
-
} }),
|
|
113
|
-
React.createElement(FieldDescription, { value: value, description: description })))));
|
|
28
|
+
if (collection.upload) {
|
|
29
|
+
return (React.createElement(UploadInput, { path: path, value: value, onChange: onChange, description: description, label: label, required: required, showError: showError, serverURL: serverURL, api: api, errorMessage: errorMessage, readOnly: readOnly, style: style, width: width, collection: collection, fieldTypes: fieldTypes, name: name, relationTo: relationTo }));
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
114
32
|
};
|
|
115
33
|
export default withCondition(Upload);
|
|
@@ -51,7 +51,7 @@ const useField = (options) => {
|
|
|
51
51
|
ignoreWhileFlattening,
|
|
52
52
|
initialValue,
|
|
53
53
|
stringify,
|
|
54
|
-
condition
|
|
54
|
+
condition,
|
|
55
55
|
]);
|
|
56
56
|
// Method to return from `useField`, used to
|
|
57
57
|
// update internal field values from field component(s)
|
|
@@ -67,7 +67,7 @@ const useField = (options) => {
|
|
|
67
67
|
}, [
|
|
68
68
|
setModified,
|
|
69
69
|
modified,
|
|
70
|
-
ignoreWhileFlattening
|
|
70
|
+
ignoreWhileFlattening,
|
|
71
71
|
]);
|
|
72
72
|
useEffect(() => {
|
|
73
73
|
setInternalValue(initialValue);
|
|
@@ -81,9 +81,10 @@ const useField = (options) => {
|
|
|
81
81
|
sendField(valueToSend);
|
|
82
82
|
}
|
|
83
83
|
}, [
|
|
84
|
+
path,
|
|
84
85
|
valueToSend,
|
|
85
86
|
sendField,
|
|
86
|
-
field
|
|
87
|
+
field,
|
|
87
88
|
]);
|
|
88
89
|
return {
|
|
89
90
|
...options,
|
|
@@ -31,6 +31,11 @@ const EditView = (props) => {
|
|
|
31
31
|
else {
|
|
32
32
|
const state = await buildStateFromSchema(fields, json.doc);
|
|
33
33
|
setInitialState(state);
|
|
34
|
+
history.push({
|
|
35
|
+
state: {
|
|
36
|
+
data: json.doc,
|
|
37
|
+
},
|
|
38
|
+
});
|
|
34
39
|
}
|
|
35
40
|
};
|
|
36
41
|
const [{ data, isLoading, isError }] = usePayloadAPI((isEditing ? `${serverURL}${api}/${slug}/${id}` : null), { initialParams: { 'fallback-locale': 'null', depth: 0 } });
|
|
@@ -183,7 +183,7 @@ async function update(incomingArgs) {
|
|
|
183
183
|
// Handle potential password update
|
|
184
184
|
// /////////////////////////////////////
|
|
185
185
|
const { password } = data;
|
|
186
|
-
if (password) {
|
|
186
|
+
if (password && collectionConfig.auth) {
|
|
187
187
|
await doc.setPassword(password);
|
|
188
188
|
await doc.save();
|
|
189
189
|
delete data.password;
|
|
@@ -261,4 +261,4 @@ async function update(incomingArgs) {
|
|
|
261
261
|
return result;
|
|
262
262
|
}
|
|
263
263
|
exports.default = update;
|
|
264
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
264
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbGxlY3Rpb25zL29wZXJhdGlvbnMvdXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOERBQXFDO0FBQ3JDLGdEQUF3QjtBQUt4QixvR0FBNEU7QUFDNUUsNkVBQXFEO0FBQ3JELHlDQUErRjtBQUMvRixvRUFBNEM7QUFDNUMsOEVBQXNEO0FBQ3RELG9GQUE0RDtBQUU1RCw4RUFBdUQ7QUFJdkQsNENBQXNFO0FBQ3RFLHNGQUE4RDtBQWM5RCxLQUFLLFVBQVUsTUFBTSxDQUFDLFlBQXVCO0lBQzNDLE1BQU0sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFFaEQsSUFBSSxJQUFJLEdBQUcsWUFBWSxDQUFDO0lBRXhCLHdDQUF3QztJQUN4QywrQkFBK0I7SUFDL0Isd0NBQXdDO0lBRXhDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUNsRixNQUFNLFNBQVMsQ0FBQztRQUVoQixJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQztZQUNqQixJQUFJO1lBQ0osU0FBUyxFQUFFLFFBQVE7U0FDcEIsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ2QsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBRXRCLE1BQU0sRUFDSixLQUFLLEVBQ0wsVUFBVSxFQUFFLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFBRSxnQkFBZ0IsR0FDekIsRUFDRCxFQUFFLEVBQ0YsR0FBRyxFQUNILEdBQUcsRUFBRSxFQUNILE1BQU0sR0FDUCxFQUNELGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsc0JBQXNCLEdBQUcsS0FBSyxHQUMvQixHQUFHLElBQUksQ0FBQztJQUVULElB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
|
|
@@ -86,8 +86,6 @@ export declare type TextField = FieldBase & {
|
|
|
86
86
|
placeholder?: string;
|
|
87
87
|
autoComplete?: string;
|
|
88
88
|
};
|
|
89
|
-
value?: string;
|
|
90
|
-
onChange?: (value: string) => void;
|
|
91
89
|
};
|
|
92
90
|
export declare type EmailField = FieldBase & {
|
|
93
91
|
type: 'email';
|
|
@@ -150,8 +148,6 @@ export declare type UploadField = FieldBase & {
|
|
|
150
148
|
type: 'upload';
|
|
151
149
|
relationTo: string;
|
|
152
150
|
maxDepth?: number;
|
|
153
|
-
value?: string;
|
|
154
|
-
onChange?: (value: string) => void;
|
|
155
151
|
};
|
|
156
152
|
declare type CodeAdmin = Admin & {
|
|
157
153
|
language?: string;
|
|
@@ -166,8 +162,6 @@ export declare type SelectField = FieldBase & {
|
|
|
166
162
|
type: 'select';
|
|
167
163
|
options: Option[];
|
|
168
164
|
hasMany?: boolean;
|
|
169
|
-
value?: string;
|
|
170
|
-
onChange?: (value: string) => void;
|
|
171
165
|
};
|
|
172
166
|
export declare type RelationshipField = FieldBase & {
|
|
173
167
|
type: 'relationship';
|
|
@@ -41,4 +41,4 @@ function fieldAffectsData(field) {
|
|
|
41
41
|
return 'name' in field && !fieldIsPresentationalOnly(field);
|
|
42
42
|
}
|
|
43
43
|
exports.fieldAffectsData = fieldAffectsData;
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmllbGRzL2NvbmZpZy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFvVkEsU0FBZ0IsaUJBQWlCLENBQUMsS0FBWTtJQUM1QyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQztBQUNwRixDQUFDO0FBRkQsOENBRUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFZO0lBQzNDLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUM7QUFDaEMsQ0FBQztBQUZELDRDQUVDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsS0FBWTtJQUMzQyxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDO0FBQ2pDLENBQUM7QUFGRCw0Q0FFQztBQUVELFNBQWdCLGNBQWMsQ0FBQyxNQUFjO0lBQzNDLE9BQU8sT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDO0FBQ3BDLENBQUM7QUFGRCx3Q0FFQztBQUVELFNBQWdCLGlCQUFpQixDQUFDLE9BQWlCO0lBQ2pELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFHLENBQUMsQ0FBQyxDQUFBLEtBQUssUUFBUSxDQUFDO0FBQ3BFLENBQUM7QUFGRCw4Q0FFQztBQUVELFNBQWdCLGFBQWEsQ0FBQyxNQUFjO0lBQzFDLE9BQU8sT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDO0FBQ3BDLENBQUM7QUFGRCxzQ0FFQztBQUVELFNBQWdCLGlCQUFpQixDQUFDLEtBQVk7SUFDNUMsT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQztBQUNsRSxDQUFDO0FBRkQsOENBRUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFZO0lBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxJQUFJLE9BQU8sS0FBSyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUM7QUFDMUcsQ0FBQztBQUZELDRDQUVDO0FBRUQsU0FBZ0IseUJBQXlCLENBQUMsS0FBWTtJQUNwRCxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDO0FBQzdCLENBQUM7QUFGRCw4REFFQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLEtBQVk7SUFDM0MsT0FBTyxNQUFNLElBQUksS0FBSyxJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUZELDRDQUVDIn0=
|