@1money/component-ui 0.0.70 → 0.0.73
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/es/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +3 -2
- package/es/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +2 -2
- package/es/business/Select/Network/NetworkSelect.js +2 -2
- package/es/components/Accordion/Accordion.js +3 -2
- package/es/components/Calendar/Calendar.js +3 -2
- package/es/components/Carousel/Carousel.js +3 -2
- package/es/components/Checkbox/BaseCheckbox.js +3 -2
- package/es/components/Checkbox/Checkbox.js +2 -2
- package/es/components/Checkbox/CheckboxGroup.js +3 -2
- package/es/components/CoachMark/CoachMark.js +3 -2
- package/es/components/Copy/Copy.js +2 -2
- package/es/components/Dialog/Dialog.js +2 -2
- package/es/components/Drawer/Drawer.js +2 -2
- package/es/components/Input/Amount/Amount.js +2 -2
- package/es/components/Input/Input/Input.js +3 -2
- package/es/components/Input/Mask/Mask.js +3 -2
- package/es/components/Input/OTP/OTP.js +3 -2
- package/es/components/Input/Password/Password.js +3 -2
- package/es/components/Input/Search/Search.js +3 -2
- package/es/components/Input/TextArea/TextArea.js +3 -2
- package/es/components/Input/Trade/Trade.js +2 -2
- package/es/components/Input/useAmountInput.js +4 -2
- package/es/components/Input/useSyncRef.js +2 -2
- package/es/components/Navigation/Nav.js +2 -2
- package/es/components/Navigation/Navigation.js +5 -2
- package/es/components/Pagination/Pagination.js +2 -2
- package/es/components/Pagination/usePagination.js +3 -2
- package/es/components/Popconfirm/Popconfirm.js +2 -2
- package/es/components/Portal/Portal.js +2 -2
- package/es/components/ProForm/ProForm.d.ts +10 -2
- package/es/components/ProForm/ProForm.js +60 -24
- package/es/components/ProForm/ProFormDependency.js +4 -1
- package/es/components/ProForm/ProFormGroup.js +2 -2
- package/es/components/ProForm/ProFormItem.js +73 -36
- package/es/components/ProForm/ProFormList.js +3 -2
- package/es/components/ProForm/SchemaForm.d.ts +7 -0
- package/es/components/ProForm/SchemaForm.js +103 -0
- package/es/components/ProForm/Submitter.js +13 -3
- package/es/components/ProForm/context.d.ts +22 -3
- package/es/components/ProForm/context.js +49 -10
- package/es/components/ProForm/core/constants.d.ts +8 -1
- package/es/components/ProForm/core/constants.js +9 -6
- package/es/components/ProForm/core/hooks/useForm.js +174 -320
- package/es/components/ProForm/core/hooks/useFormCore.js +84 -178
- package/es/components/ProForm/core/interface.d.ts +33 -12
- package/es/components/ProForm/core/pathUtils.d.ts +6 -0
- package/es/components/ProForm/core/pathUtils.js +59 -0
- package/es/components/ProForm/core/runRules.d.ts +23 -0
- package/es/components/ProForm/core/runRules.js +233 -0
- package/es/components/ProForm/core/useFormItem.d.ts +10 -1
- package/es/components/ProForm/core/useFormItem.js +105 -61
- package/es/components/ProForm/fields/ProFormDatePicker.js +4 -1
- package/es/components/ProForm/fields/createProFormField.js +64 -59
- package/es/components/ProForm/hooks/useFieldRequest.js +7 -5
- package/es/components/ProForm/index.d.ts +11 -4
- package/es/components/ProForm/index.js +7 -2
- package/es/components/ProForm/interface.d.ts +89 -14
- package/es/components/ProForm/layouts/DialogForm.d.ts +5 -1
- package/es/components/ProForm/layouts/DialogForm.js +2 -1
- package/es/components/ProForm/layouts/DrawerForm.d.ts +5 -1
- package/es/components/ProForm/layouts/DrawerForm.js +2 -1
- package/es/components/ProForm/layouts/QueryFilter.d.ts +5 -2
- package/es/components/ProForm/layouts/QueryFilter.js +79 -13
- package/es/components/ProForm/layouts/useOverlayForm.js +23 -21
- package/es/components/ProForm/style/ProForm.css +6 -0
- package/es/components/ProForm/utils.d.ts +14 -3
- package/es/components/ProForm/utils.js +73 -70
- package/es/components/ProTable/ProTable.js +3 -2
- package/es/components/ProTable/core/useAwaitableReload.js +3 -2
- package/es/components/ProTable/useFetchData.js +4 -2
- package/es/components/Radio/Radio.js +3 -2
- package/es/components/Radio/RadioGroup.js +3 -2
- package/es/components/ResizeObserver/useResizeObserver.js +2 -2
- package/es/components/Segment/Segment.js +4 -2
- package/es/components/Select/Select.js +3 -2
- package/es/components/Select/SelectCustom.js +2 -2
- package/es/components/Select/useSelectShell.js +3 -2
- package/es/components/Slider/Slider.js +3 -2
- package/es/components/Switch/Switch.js +3 -2
- package/es/components/Table/Table.js +14 -28
- package/es/components/Table/VirtualTable.js +18 -28
- package/es/components/Table/core/columnUtil.d.ts +9 -0
- package/es/components/Table/core/columnUtil.js +34 -0
- package/es/components/Table/core/useTableColumns.d.ts +4 -13
- package/es/components/Table/core/useTableColumns.js +55 -24
- package/es/components/Table/core/useTableDataPipeline.d.ts +11 -16
- package/es/components/Table/core/useTableDataPipeline.js +66 -73
- package/es/components/Table/core/useTableExpand.js +3 -2
- package/es/components/Table/core/useTableSelection.js +7 -4
- package/es/components/Table/core/useTableSetup.js +4 -2
- package/es/components/Table/features/ExpandTrigger.d.ts +9 -3
- package/es/components/Table/features/ExpandTrigger.js +14 -8
- package/es/components/Table/features/FilterTrigger.js +21 -17
- package/es/components/Table/features/SelectionColumn.d.ts +11 -6
- package/es/components/Table/features/SelectionColumn.js +12 -5
- package/es/components/Table/features/SortTrigger.d.ts +4 -2
- package/es/components/Table/features/SortTrigger.js +8 -3
- package/es/components/Table/internal/kernel/Body/MeasureCell.js +2 -2
- package/es/components/Table/internal/kernel/Cell/index.js +2 -2
- package/es/components/Table/internal/kernel/Table.js +3 -3
- package/es/components/Table/internal/kernel/VirtualTable/index.js +2 -2
- package/es/components/Table/internal/kernel/hooks/useRowInfo.js +2 -2
- package/es/components/Table/internal/kernel/selector-context/context.js +3 -3
- package/es/components/Table/renderers/HeaderCell.js +3 -2
- package/es/components/Table/renderers/TableShell.d.ts +13 -0
- package/es/components/Table/renderers/TableShell.js +25 -0
- package/es/components/Table/style/Table.css +3 -0
- package/es/components/Tabs/Tabs.js +4 -2
- package/es/components/Tooltip/Tooltip.js +3 -2
- package/es/components/Tooltip/style/Tooltip.css +1 -0
- package/es/components/Tour/Tour.js +3 -2
- package/es/components/Trigger/Trigger.js +3 -2
- package/es/components/Typography/Typography.js +2 -2
- package/es/components/Typography/useTypographyEnhancements.js +3 -2
- package/es/components/Upload/Upload.js +2 -2
- package/es/components/Upload/UploadFileBar.js +2 -2
- package/es/components/VirtualList/VirtualList.js +3 -2
- package/es/components/VirtualList/hooks/useMobileTouchMove.js +2 -2
- package/es/components/VirtualList/hooks/useScrollTo.js +2 -2
- package/es/index.css +1 -1
- package/es/index.d.ts +2 -2
- package/es/index.js +2 -2
- package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +9 -8
- package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +3 -3
- package/lib/business/Select/Network/NetworkSelect.js +3 -3
- package/lib/components/Accordion/Accordion.js +5 -4
- package/lib/components/Calendar/Calendar.js +6 -5
- package/lib/components/Carousel/Carousel.js +5 -4
- package/lib/components/Checkbox/BaseCheckbox.js +5 -4
- package/lib/components/Checkbox/Checkbox.js +3 -3
- package/lib/components/Checkbox/CheckboxGroup.js +7 -6
- package/lib/components/CoachMark/CoachMark.js +7 -6
- package/lib/components/Copy/Copy.js +3 -3
- package/lib/components/Dialog/Dialog.js +6 -6
- package/lib/components/Drawer/Drawer.js +10 -10
- package/lib/components/Input/Amount/Amount.js +6 -5
- package/lib/components/Input/Input/Input.js +7 -6
- package/lib/components/Input/Mask/Mask.js +9 -8
- package/lib/components/Input/OTP/OTP.js +9 -8
- package/lib/components/Input/Password/Password.js +6 -5
- package/lib/components/Input/Search/Search.js +8 -7
- package/lib/components/Input/TextArea/TextArea.js +5 -4
- package/lib/components/Input/Trade/Trade.js +5 -4
- package/lib/components/Input/useAmountInput.js +13 -11
- package/lib/components/Input/useSyncRef.js +4 -3
- package/lib/components/Navigation/Nav.js +3 -3
- package/lib/components/Navigation/Navigation.js +10 -7
- package/lib/components/Pagination/Pagination.js +4 -3
- package/lib/components/Pagination/usePagination.js +7 -6
- package/lib/components/Popconfirm/Popconfirm.js +3 -3
- package/lib/components/Portal/Portal.js +4 -4
- package/lib/components/ProForm/ProForm.d.ts +10 -2
- package/lib/components/ProForm/ProForm.js +66 -30
- package/lib/components/ProForm/ProFormDependency.js +4 -1
- package/lib/components/ProForm/ProFormGroup.js +3 -3
- package/lib/components/ProForm/ProFormItem.js +72 -34
- package/lib/components/ProForm/ProFormList.js +10 -9
- package/lib/components/ProForm/SchemaForm.d.ts +7 -0
- package/lib/components/ProForm/SchemaForm.js +110 -0
- package/lib/components/ProForm/Submitter.js +15 -5
- package/lib/components/ProForm/context.d.ts +22 -3
- package/lib/components/ProForm/context.js +49 -10
- package/lib/components/ProForm/core/constants.d.ts +8 -1
- package/lib/components/ProForm/core/constants.js +10 -7
- package/lib/components/ProForm/core/hooks/useForm.js +181 -327
- package/lib/components/ProForm/core/hooks/useFormCore.js +96 -190
- package/lib/components/ProForm/core/interface.d.ts +33 -12
- package/lib/components/ProForm/core/pathUtils.d.ts +6 -0
- package/lib/components/ProForm/core/pathUtils.js +68 -0
- package/lib/components/ProForm/core/runRules.d.ts +23 -0
- package/lib/components/ProForm/core/runRules.js +242 -0
- package/lib/components/ProForm/core/useFormItem.d.ts +10 -1
- package/lib/components/ProForm/core/useFormItem.js +106 -62
- package/lib/components/ProForm/fields/ProFormDatePicker.js +4 -1
- package/lib/components/ProForm/fields/createProFormField.js +63 -58
- package/lib/components/ProForm/hooks/useFieldRequest.js +9 -7
- package/lib/components/ProForm/index.d.ts +11 -4
- package/lib/components/ProForm/index.js +16 -1
- package/lib/components/ProForm/interface.d.ts +89 -14
- package/lib/components/ProForm/layouts/DialogForm.d.ts +5 -1
- package/lib/components/ProForm/layouts/DialogForm.js +2 -1
- package/lib/components/ProForm/layouts/DrawerForm.d.ts +5 -1
- package/lib/components/ProForm/layouts/DrawerForm.js +2 -1
- package/lib/components/ProForm/layouts/QueryFilter.d.ts +5 -2
- package/lib/components/ProForm/layouts/QueryFilter.js +84 -18
- package/lib/components/ProForm/layouts/useOverlayForm.js +27 -27
- package/lib/components/ProForm/style/ProForm.css +6 -0
- package/lib/components/ProForm/utils.d.ts +14 -3
- package/lib/components/ProForm/utils.js +91 -74
- package/lib/components/ProTable/ProTable.js +10 -9
- package/lib/components/ProTable/core/useAwaitableReload.js +6 -5
- package/lib/components/ProTable/useFetchData.js +15 -13
- package/lib/components/Radio/Radio.js +6 -5
- package/lib/components/Radio/RadioGroup.js +5 -4
- package/lib/components/ResizeObserver/useResizeObserver.js +4 -3
- package/lib/components/Segment/Segment.js +7 -5
- package/lib/components/Select/Select.js +23 -22
- package/lib/components/Select/SelectCustom.js +8 -8
- package/lib/components/Select/useSelectShell.js +5 -4
- package/lib/components/Slider/Slider.js +6 -5
- package/lib/components/Switch/Switch.js +5 -4
- package/lib/components/Table/Table.js +13 -27
- package/lib/components/Table/VirtualTable.js +17 -27
- package/lib/components/Table/core/columnUtil.d.ts +9 -0
- package/lib/components/Table/core/columnUtil.js +42 -0
- package/lib/components/Table/core/useTableColumns.d.ts +4 -13
- package/lib/components/Table/core/useTableColumns.js +57 -26
- package/lib/components/Table/core/useTableDataPipeline.d.ts +11 -16
- package/lib/components/Table/core/useTableDataPipeline.js +73 -80
- package/lib/components/Table/core/useTableExpand.js +6 -5
- package/lib/components/Table/core/useTableSelection.js +13 -10
- package/lib/components/Table/core/useTableSetup.js +8 -5
- package/lib/components/Table/features/ExpandTrigger.d.ts +9 -3
- package/lib/components/Table/features/ExpandTrigger.js +14 -8
- package/lib/components/Table/features/FilterTrigger.js +21 -17
- package/lib/components/Table/features/SelectionColumn.d.ts +11 -6
- package/lib/components/Table/features/SelectionColumn.js +12 -5
- package/lib/components/Table/features/SortTrigger.d.ts +4 -2
- package/lib/components/Table/features/SortTrigger.js +8 -3
- package/lib/components/Table/internal/kernel/Body/MeasureCell.js +3 -3
- package/lib/components/Table/internal/kernel/Cell/index.js +4 -4
- package/lib/components/Table/internal/kernel/Table.js +7 -6
- package/lib/components/Table/internal/kernel/VirtualTable/index.js +4 -4
- package/lib/components/Table/internal/kernel/hooks/useRowInfo.js +3 -3
- package/lib/components/Table/internal/kernel/selector-context/context.js +6 -5
- package/lib/components/Table/renderers/HeaderCell.js +3 -2
- package/lib/components/Table/renderers/TableShell.d.ts +13 -0
- package/lib/components/Table/renderers/TableShell.js +31 -0
- package/lib/components/Table/style/Table.css +3 -0
- package/lib/components/Tabs/Tabs.js +7 -5
- package/lib/components/Tooltip/Tooltip.js +5 -4
- package/lib/components/Tooltip/style/Tooltip.css +1 -0
- package/lib/components/Tour/Tour.js +7 -6
- package/lib/components/Trigger/Trigger.js +5 -4
- package/lib/components/Typography/Typography.js +5 -4
- package/lib/components/Typography/useTypographyEnhancements.js +8 -7
- package/lib/components/Upload/Upload.js +5 -4
- package/lib/components/Upload/UploadFileBar.js +4 -3
- package/lib/components/VirtualList/VirtualList.js +8 -7
- package/lib/components/VirtualList/hooks/useMobileTouchMove.js +4 -3
- package/lib/components/VirtualList/hooks/useScrollTo.js +3 -3
- package/lib/index.css +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +13 -1
- package/package.json +2 -2
- package/scripts/mcp-server/examples.generated.json +54 -0
- package/scripts/mcp-server/index.generated.json +1212 -80
|
@@ -6,6 +6,7 @@ import type { GridRowProps, GridColSize } from "../Grid";
|
|
|
6
6
|
import type { DialogProps } from "../Dialog";
|
|
7
7
|
import type { ProFormMode } from './constants';
|
|
8
8
|
export type ProFormFieldTransformFn = (value: unknown, name: string, allValues: Record<string, unknown>) => unknown;
|
|
9
|
+
export type ProFormDateFormatter = 'string' | 'number' | (string & {}) | ((value: Date, name: string) => unknown) | false;
|
|
9
10
|
export type ProFormFieldConvertValueFn = (value: unknown, name: string) => unknown;
|
|
10
11
|
export type ProFormValueEnumObj = Record<string | number, string | {
|
|
11
12
|
text: string;
|
|
@@ -22,23 +23,27 @@ export interface ProFormRequestOption {
|
|
|
22
23
|
value: unknown;
|
|
23
24
|
disabled?: boolean;
|
|
24
25
|
}
|
|
25
|
-
export interface ProFormFormInstance extends FormInstance {
|
|
26
|
-
getFieldsFormatValue: () =>
|
|
26
|
+
export interface ProFormFormInstance<Values = Record<string, unknown>> extends FormInstance<Values> {
|
|
27
|
+
getFieldsFormatValue: () => Values;
|
|
27
28
|
validateFieldsReturnFormatValue: () => Promise<{
|
|
28
29
|
success: boolean;
|
|
29
|
-
values?:
|
|
30
|
+
values?: Values;
|
|
30
31
|
errors?: Record<string, string>;
|
|
31
32
|
}>;
|
|
32
33
|
submitForm: () => Promise<void>;
|
|
33
34
|
}
|
|
34
|
-
export interface
|
|
35
|
+
export interface ProFormStateContextValue {
|
|
35
36
|
values: Record<string, unknown>;
|
|
36
37
|
errors: Record<string, string>;
|
|
38
|
+
warnings: Record<string, string>;
|
|
37
39
|
touched: Record<string, boolean>;
|
|
38
40
|
validating: Record<string, boolean>;
|
|
41
|
+
}
|
|
42
|
+
export interface ProFormStableContextValue {
|
|
39
43
|
formInstance: ProFormFormInstance;
|
|
40
44
|
setFieldValue: (name: string, value: unknown) => void;
|
|
41
45
|
setFieldError: (name: string, error: string | null) => void;
|
|
46
|
+
setFieldWarning: (name: string, warning: string | null) => void;
|
|
42
47
|
validateField: (name: string, rules: Rule[], providedValue?: unknown) => boolean;
|
|
43
48
|
validateFieldAsync: (name: string, value: unknown, rules: Rule[]) => Promise<{
|
|
44
49
|
isValid: boolean;
|
|
@@ -59,6 +64,15 @@ export interface ProFormContextValue {
|
|
|
59
64
|
colProps: ProFormColProps;
|
|
60
65
|
registerTransform: (name: string, fn: ProFormFieldTransformFn) => void;
|
|
61
66
|
unregisterTransform: (name: string) => void;
|
|
67
|
+
/** Register a field's valueType for valueType-aware submit formatting (dateFormatter) */
|
|
68
|
+
registerValueType: (name: string, valueType: ProFormValueType) => void;
|
|
69
|
+
unregisterValueType: (name: string) => void;
|
|
70
|
+
/** Form-level defaults injected into every ProFormXxx field's component props (field-level wins) */
|
|
71
|
+
fieldProps?: Record<string, unknown>;
|
|
72
|
+
/** Form-level defaults merged into every ProForm.Item (item-level wins) */
|
|
73
|
+
formItemProps?: ProFormItemSharedProps;
|
|
74
|
+
}
|
|
75
|
+
export interface ProFormContextValue extends ProFormStableContextValue, ProFormStateContextValue {
|
|
62
76
|
}
|
|
63
77
|
export interface ProFormFieldProps<FieldProps = Record<string, unknown>> {
|
|
64
78
|
name?: string;
|
|
@@ -93,6 +107,14 @@ export interface ProFormFieldProps<FieldProps = Record<string, unknown>> {
|
|
|
93
107
|
params?: Record<string, unknown>;
|
|
94
108
|
valueEnum?: ProFormValueEnumObj;
|
|
95
109
|
debounceTime?: number;
|
|
110
|
+
/** Debounce (ms) applied to onChange-triggered validation */
|
|
111
|
+
validateDebounce?: number;
|
|
112
|
+
/**
|
|
113
|
+
* Registered into the form's valueType registry (drives valueType-aware
|
|
114
|
+
* dateFormatter, e.g. `"dateTime"` → `YYYY-MM-DD HH:mm:ss`) and read-mode
|
|
115
|
+
* rendering. Overrides the factory's default valueType.
|
|
116
|
+
*/
|
|
117
|
+
valueType?: ProFormValueType;
|
|
96
118
|
}
|
|
97
119
|
export type ProFormValueType = 'text' | 'password' | 'digit' | 'date' | 'dateTime' | 'select' | 'radio' | 'switch' | 'tag';
|
|
98
120
|
export interface ProFormItemProps {
|
|
@@ -125,7 +147,13 @@ export interface ProFormItemProps {
|
|
|
125
147
|
emptyText?: ReactNode;
|
|
126
148
|
/** Value enum for select/radio/tag value types */
|
|
127
149
|
valueEnum?: ProFormValueEnumObj;
|
|
150
|
+
/** Prop name the controlled value is injected under (default `value`; e.g. `checked` for Switch/Checkbox) */
|
|
151
|
+
valuePropName?: string;
|
|
152
|
+
/** Debounce (ms) applied to onChange-triggered validation */
|
|
153
|
+
validateDebounce?: number;
|
|
128
154
|
}
|
|
155
|
+
/** Item props that can be shared form-wide via ProForm's `formItemProps` */
|
|
156
|
+
export type ProFormItemSharedProps = Partial<Omit<ProFormItemProps, 'children' | 'name' | 'label' | 'rules'>>;
|
|
129
157
|
export interface SubmitterProps {
|
|
130
158
|
submitText?: ReactNode;
|
|
131
159
|
resetText?: ReactNode;
|
|
@@ -139,17 +167,17 @@ export interface SubmitterProps {
|
|
|
139
167
|
submitButtonProps?: Partial<ButtonProps>;
|
|
140
168
|
resetButtonProps?: Partial<ButtonProps>;
|
|
141
169
|
}
|
|
142
|
-
export interface ProFormProps extends Omit<FormHTMLAttributes<HTMLFormElement>, 'onSubmit' | 'onReset'> {
|
|
170
|
+
export interface ProFormProps<Values = Record<string, unknown>> extends Omit<FormHTMLAttributes<HTMLFormElement>, 'onSubmit' | 'onReset'> {
|
|
143
171
|
children?: ReactNode;
|
|
144
172
|
className?: string;
|
|
145
173
|
prefixCls?: string;
|
|
146
|
-
initialValues?:
|
|
147
|
-
onFinish?: (values:
|
|
174
|
+
initialValues?: Partial<Values>;
|
|
175
|
+
onFinish?: (values: Values) => void | Promise<void>;
|
|
148
176
|
onFinishFailed?: (errorInfo: {
|
|
149
|
-
values:
|
|
177
|
+
values: Values;
|
|
150
178
|
errors: Record<string, string>;
|
|
151
179
|
}) => void;
|
|
152
|
-
onValuesChange?: (changedValues:
|
|
180
|
+
onValuesChange?: (changedValues: Partial<Values>, allValues: Values) => void;
|
|
153
181
|
onReset?: () => void;
|
|
154
182
|
size?: FormSize;
|
|
155
183
|
labelAlign?: LabelAlign;
|
|
@@ -165,10 +193,21 @@ export interface ProFormProps extends Omit<FormHTMLAttributes<HTMLFormElement>,
|
|
|
165
193
|
colProps?: ProFormColProps;
|
|
166
194
|
rowProps?: Partial<GridRowProps>;
|
|
167
195
|
loading?: boolean;
|
|
168
|
-
request?: (params?: unknown) => Promise<
|
|
196
|
+
request?: (params?: unknown) => Promise<Partial<Values>>;
|
|
169
197
|
params?: unknown;
|
|
170
|
-
formRef?: MutableRefObject<ProFormFormInstance | undefined>;
|
|
198
|
+
formRef?: MutableRefObject<ProFormFormInstance<Values> | undefined>;
|
|
171
199
|
omitNil?: boolean;
|
|
200
|
+
/**
|
|
201
|
+
* How Date values are serialized in the submit pipeline (default `'string'`):
|
|
202
|
+
* `'string'` → `YYYY-MM-DD` (`YYYY-MM-DD HH:mm:ss` for `valueType="dateTime"` fields),
|
|
203
|
+
* `'number'` → timestamp, a custom pattern (e.g. `'YYYY/MM/DD'`), a function, or
|
|
204
|
+
* `false` to pass Date objects through untouched.
|
|
205
|
+
*/
|
|
206
|
+
dateFormatter?: ProFormDateFormatter;
|
|
207
|
+
/** Defaults injected into every ProFormXxx field's component props (field-level wins) */
|
|
208
|
+
fieldProps?: Record<string, unknown>;
|
|
209
|
+
/** Defaults merged into every ProForm.Item (item-level wins) */
|
|
210
|
+
formItemProps?: ProFormItemSharedProps;
|
|
172
211
|
}
|
|
173
212
|
export interface ProFormListAction {
|
|
174
213
|
add: (defaultValue?: Record<string, unknown>, index?: number) => void;
|
|
@@ -238,7 +277,7 @@ export interface ProFormGroupProps {
|
|
|
238
277
|
style?: CSSProperties;
|
|
239
278
|
children?: ReactNode;
|
|
240
279
|
}
|
|
241
|
-
export interface DialogFormProps extends Omit<ProFormProps
|
|
280
|
+
export interface DialogFormProps<Values = Record<string, unknown>> extends Omit<ProFormProps<Values>, 'title'> {
|
|
242
281
|
open?: boolean;
|
|
243
282
|
onOpenChange?: (open: boolean) => void;
|
|
244
283
|
trigger?: ReactElement;
|
|
@@ -249,7 +288,7 @@ export interface DialogFormProps extends Omit<ProFormProps, 'title'> {
|
|
|
249
288
|
destroyOnClose?: boolean;
|
|
250
289
|
dialogProps?: Partial<DialogProps>;
|
|
251
290
|
}
|
|
252
|
-
export interface DrawerFormProps extends Omit<ProFormProps
|
|
291
|
+
export interface DrawerFormProps<Values = Record<string, unknown>> extends Omit<ProFormProps<Values>, 'title'> {
|
|
253
292
|
open?: boolean;
|
|
254
293
|
onOpenChange?: (open: boolean) => void;
|
|
255
294
|
trigger?: ReactElement;
|
|
@@ -261,7 +300,7 @@ export interface DrawerFormProps extends Omit<ProFormProps, 'title'> {
|
|
|
261
300
|
destroyOnClose?: boolean;
|
|
262
301
|
drawerProps?: Partial<DrawerProps>;
|
|
263
302
|
}
|
|
264
|
-
export interface QueryFilterProps extends ProFormProps {
|
|
303
|
+
export interface QueryFilterProps<Values = Record<string, unknown>> extends ProFormProps<Values> {
|
|
265
304
|
defaultCollapsed?: boolean;
|
|
266
305
|
collapsed?: boolean;
|
|
267
306
|
onCollapse?: (collapsed: boolean) => void;
|
|
@@ -276,11 +315,47 @@ export interface QueryFilterProps extends ProFormProps {
|
|
|
276
315
|
};
|
|
277
316
|
syncToUrl?: boolean | ((values: Record<string, unknown>, type: 'get' | 'set') => Record<string, unknown>);
|
|
278
317
|
}
|
|
318
|
+
export type ProFormSchemaValueType = 'text' | 'password' | 'textarea' | 'digit' | 'select' | 'checkbox' | 'checkboxGroup' | 'radioGroup' | 'switch' | 'slider' | 'date' | 'dateTime' | 'upload';
|
|
319
|
+
export interface ProFormSchemaColumn {
|
|
320
|
+
/** Field label */
|
|
321
|
+
title?: ReactNode;
|
|
322
|
+
/** Field name; dot-paths supported (e.g. `"address.city"`) */
|
|
323
|
+
dataIndex: string;
|
|
324
|
+
/** Which ProForm field renders the column (default `'text'`) */
|
|
325
|
+
valueType?: ProFormSchemaValueType;
|
|
326
|
+
valueEnum?: ProFormValueEnumObj;
|
|
327
|
+
/** Seeded into the form's initialValues (form-level initialValues win) */
|
|
328
|
+
initialValue?: unknown;
|
|
329
|
+
rules?: Rule[];
|
|
330
|
+
required?: boolean;
|
|
331
|
+
description?: ReactNode;
|
|
332
|
+
placeholder?: string;
|
|
333
|
+
disabled?: boolean;
|
|
334
|
+
hidden?: boolean;
|
|
335
|
+
mode?: ProFormMode;
|
|
336
|
+
width?: 'sm' | 'md' | 'lg' | 'xl' | number;
|
|
337
|
+
colProps?: ProFormColProps;
|
|
338
|
+
fieldProps?: Record<string, unknown>;
|
|
339
|
+
transform?: ProFormFieldTransformFn;
|
|
340
|
+
convertValue?: ProFormFieldConvertValueFn;
|
|
341
|
+
dependencies?: string[];
|
|
342
|
+
request?: (params?: Record<string, unknown>) => Promise<ProFormRequestOption[]>;
|
|
343
|
+
params?: Record<string, unknown>;
|
|
344
|
+
debounceTime?: number;
|
|
345
|
+
validateDebounce?: number;
|
|
346
|
+
/** Fully custom renderer for this column; overrides valueType mapping */
|
|
347
|
+
renderFormItem?: (column: ProFormSchemaColumn) => ReactNode;
|
|
348
|
+
}
|
|
349
|
+
export interface SchemaFormProps<Values = Record<string, unknown>> extends Omit<ProFormProps<Values>, 'children'> {
|
|
350
|
+
columns: ProFormSchemaColumn[];
|
|
351
|
+
}
|
|
279
352
|
export interface CreateProFormFieldConfig<FieldProps> {
|
|
280
353
|
component: FC<FieldProps> | (FC<FieldProps> & {
|
|
281
354
|
displayName?: string;
|
|
282
355
|
});
|
|
283
356
|
valuePropName?: string;
|
|
357
|
+
/** Default valueType registered for fields from this factory (per-field `valueType` prop overrides) */
|
|
358
|
+
valueType?: ProFormValueType;
|
|
284
359
|
mapProps?: (props: Record<string, unknown>) => Record<string, unknown>;
|
|
285
360
|
renderReadonly?: (value: unknown, props?: Partial<FieldProps>) => ReactNode;
|
|
286
361
|
}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
1
2
|
import type { DialogFormProps } from '../interface';
|
|
2
|
-
export
|
|
3
|
+
/** Generic-aware export — keeps `<DialogForm<MyValues> …>` fully typed. */
|
|
4
|
+
export declare const DialogForm: (<Values = Record<string, unknown>>(props: DialogFormProps<Values>) => ReactElement | null) & {
|
|
5
|
+
displayName?: string;
|
|
6
|
+
};
|
|
3
7
|
export default DialogForm;
|
|
@@ -76,6 +76,7 @@ var DialogFormBase = function DialogFormBase(props) {
|
|
|
76
76
|
});
|
|
77
77
|
};
|
|
78
78
|
DialogFormBase.displayName = 'DialogForm';
|
|
79
|
+
/** Generic-aware export — keeps `<DialogForm<MyValues> …>` fully typed. */
|
|
79
80
|
var DialogForm = exports.DialogForm = /*#__PURE__*/(0, _react.memo)(DialogFormBase);
|
|
80
81
|
var _default = exports["default"] = DialogForm;
|
|
81
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL0RpYWxvZ0Zvcm0uanMiLCJjb21wb25lbnRzL1Byb0Zvcm0vc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL0RpYWxvZ0Zvcm0udHN4Il0sIm5hbWVzIjpbIl9qc3hSdW50aW1lIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9jbGFzc25hbWVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9EaWFsb2ciLCJfUHJvRm9ybSIsIl9jb25zdGFudHMiLCJfdXNlT3ZlcmxheUZvcm0yIiwiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjbGFzc2VzIiwiY2xhc3NuYW1lcyIsImNvbmNhdCIsIkNTU19QUkVGSVgiLCJEaWFsb2dGb3JtQmFzZSIsInByb3BzIiwiX2EiLCJvcGVuIiwib25PcGVuQ2hhbmdlIiwidHJpZ2dlciIsInRpdGxlIiwid2lkdGgiLCJzdWJtaXRUaW1lb3V0IiwiX3Byb3BzJGF1dG9DbG9zZSIsImF1dG9DbG9zZSIsImRpYWxvZ1Byb3BzIiwib25GaW5pc2giLCJzdWJtaXR0ZXIiLCJjaGlsZHJlbiIsIl9kZXN0cm95T25DbG9zZSIsImRlc3Ryb3lPbkNsb3NlIiwiZm9ybVByb3BzIiwiX3VzZU92ZXJsYXlGb3JtIiwidXNlT3ZlcmxheUZvcm0iLCJtZXJnZWRPcGVuIiwidHJpZ2dlck5vZGUiLCJoYW5kbGVGaW5pc2giLCJoYW5kbGVIaWRlIiwiX2pzeHMiLCJfRnJhZ21lbnQiLCJfanN4IiwiRGlhbG9nIiwiYXNzaWduIiwib25DYW5jZWwiLCJmb290ZXIiLCJ1bmRlZmluZWQiLCJyb290U3R5bGUiLCJjbGFzc05hbWUiLCJQcm9Gb3JtIiwicmVzZXRCdXR0b25Qcm9wcyIsIm9uQ2xpY2siLCJyZXNldFRleHQiLCJjYW5jZWxUZXh0IiwiZGlzcGxheU5hbWUiLCJEaWFsb2dGb3JtIiwiZXhwb3J0cyIsIm1lbW8iLCJfZGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVdBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1hBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLFdBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGdCQUFBLEdBQUFQLE9BQUE7QUROQSxJQUFJUSxNQUFNLEdBQUksVUFBUSxTQUFLQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNWLEtBQUssSUFBSUMsQ0FBQyxJQUFJSCxDQUFDLEVBQUUsSUFBSUksTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQyxJQUFJRixDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUMvRUQsQ0FBQyxDQUFDQyxDQUFDLENBQUMsR0FBR0gsQ0FBQyxDQUFDRyxDQUFDLENBQUM7RUFDZixJQUFJSCxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU9JLE1BQU0sQ0FBQ0sscUJBQXFCLEtBQUssVUFBVSxFQUMvRCxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVQLENBQUMsR0FBR0MsTUFBTSxDQUFDSyxxQkFBcUIsQ0FBQ1QsQ0FBQyxDQUFDLEVBQUVVLENBQUMsR0FBR1AsQ0FBQyxDQUFDUSxNQUFNLEVBQUVELENBQUMsRUFBRSxFQUFFO0lBQ3BFLElBQUlULENBQUMsQ0FBQ08sT0FBTyxDQUFDTCxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJTixNQUFN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QUFBLEVBQUE7UUFBS08sU0FBUyxFQUFFckMsT0FBTyxDQUFBLENBQUU7UUFBQWtCLFFBQUEsRUFDdkIsSUFBQVksZUFBQSxFQUFDUSxnQkFBTyxFQUFBL0MsTUFBQSxDQUFBeUMsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUNGWCxTQUFTLEVBQUE7VUFDYkwsUUFBUSxFQUFFVSxZQUFZO1VBQ3RCVCxTQUFTLEVBQUVBLFNBQVMsS0FBS2tCLFNBQVMsR0FBR2xCLFNBQVMsR0FBRztZQUMvQ3NCLGdCQUFnQixFQUFFO2NBQUVDLE9BQU8sRUFBRWI7WUFBVSxDQUFFO1lBQ3pDYyxTQUFTLEVBQUUsQ0FBQW5DLEVBQUEsR0FBQVMsV0FBVyxLQUFBLElBQUEsSUFBWEEsV0FBVyxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFYQSxXQUFXLENBQUUyQixVQUFVLE1BQUEsSUFBQSxJQUFBcEMsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUk7VUQ1QjVCLENDNkJYO1VBQUFZLFFBQUEsRUFFQUE7UUFBUSxDQUFBLENBQUE7TUFDRCxDQUFBO0lBQ04sQ0FBQSxDQUFBLENBQ0M7RUFBQSxDQUFBLENBQ1I7QUFFUCxDQUFDO0FBRURkLGNBQWMsQ0FBQ3VDLFdBQVcsR0FBRyxZQUFZO0FBRXpDO0FBQ08sSUFBTUMsVUFBVSxHQUFBQyxPQUFBLENBQUFELFVBQUEsZ0JBQUcsSUFBQUUsV0FBSSxFQUFDMUMsY0FBYyxDQUVPO0FBQUMsSUFBQTJDLFFBQUEsR0FBQUYsT0FBQSxjQUV0Q0QsVUFBVSIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy9EaWFsb2dGb3JtLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIEZyYWdtZW50IGFzIF9GcmFnbWVudCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgRGlhbG9nIH0gZnJvbSAnLi4vLi4vRGlhbG9nJztcbmltcG9ydCB7IFByb0Zvcm0gfSBmcm9tICcuLi9Qcm9Gb3JtJztcbmltcG9ydCB7IENTU19QUkVGSVggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgdXNlT3ZlcmxheUZvcm0gfSBmcm9tICcuL3VzZU92ZXJsYXlGb3JtJztcbmNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKGAke0NTU19QUkVGSVh9LWRpYWxvZy1mb3JtYCk7XG5jb25zdCBEaWFsb2dGb3JtQmFzZSA9IChwcm9wcykgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCB7IG9wZW4sIG9uT3BlbkNoYW5nZSwgdHJpZ2dlciwgdGl0bGUsIHdpZHRoLCBzdWJtaXRUaW1lb3V0LCBhdXRvQ2xvc2UgPSB0cnVlLCBkaWFsb2dQcm9wcywgb25GaW5pc2gsIHN1Ym1pdHRlciwgY2hpbGRyZW4sIFxuICAgIC8vIGRlc3Ryb3lPbkNsb3NlIGlzIGFjY2VwdGVkIGZvciBBUEkgY29tcGF0IGJ1dCBub3QgdXNlZCDigJRcbiAgICAvLyBEaWFsb2cncyBvd24gdXNlUHJlc2VuY2UgYWxyZWFkeSB1bm1vdW50cyB0aGUgZW50aXJlIERPTSB0cmVlXG4gICAgLy8gKGluY2x1ZGluZyBmb3JtIGNvbnRlbnQpIGFmdGVyIHRoZSBjbG9zZSBhbmltYXRpb24gZmluaXNoZXMuXG4gICAgZGVzdHJveU9uQ2xvc2U6IF9kZXN0cm95T25DbG9zZSB9ID0gcHJvcHMsIGZvcm1Qcm9wcyA9IF9fcmVzdChwcm9wcywgW1wib3BlblwiLCBcIm9uT3BlbkNoYW5nZVwiLCBcInRyaWdnZXJcIiwgXCJ0aXRsZVwiLCBcIndpZHRoXCIsIFwic3VibWl0VGltZW91dFwiLCBcImF1dG9DbG9zZVwiLCBcImRpYWxvZ1Byb3BzXCIsIFwib25GaW5pc2hcIiwgXCJzdWJtaXR0ZXJcIiwgXCJjaGlsZHJlblwiLCBcImRlc3Ryb3lPbkNsb3NlXCJdKTtcbiAgICBjb25zdCB7IG1lcmdlZE9wZW4sIHRyaWdnZXJOb2RlLCBoYW5kbGVGaW5pc2gsIGhhbmRsZUhpZGUsIH0gPSB1c2VPdmVybGF5Rm9ybSh7IG9wZW4sIG9uT3BlbkNoYW5nZSwgdHJpZ2dlciwgYXV0b0Nsb3NlLCBzdWJtaXRUaW1lb3V0IH0sIG9uRmluaXNoKTtcbiAgICByZXR1cm4gKF9qc3hzKF9GcmFnbWVudCwgeyBjaGlsZHJlbjogW3RyaWdnZXJOb2RlLCBfanN4KERpYWxvZywgT2JqZWN0LmFzc2lnbih7fSwgZGlhbG9nUHJvcHMsIHsgb3BlbjogbWVyZ2VkT3BlbiwgdGl0bGU6IHRpdGxlLCBvbkNhbmNlbDogaGFuZGxlSGlkZSwgZm9vdGVyOiBudWxsIH0sICh3aWR0aCAhPT0gdW5kZWZpbmVkID8geyByb290U3R5bGU6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZGlhbG9nUHJvcHMgPT09IG51bGwgfHwgZGlhbG9nUHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRpYWxvZ1Byb3BzLnJvb3RTdHlsZSksIHsgd2lkdGggfSkgfSA6IHt9KSwgeyBjaGlsZHJlbjogX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygpLCBjaGlsZHJlbjogX2pzeChQcm9Gb3JtLCBPYmplY3QuYXNzaWduKHt9LCBmb3JtUHJvcHMsIHsgb25GaW5pc2g6IGhhbmRsZUZpbmlzaCwgc3VibWl0dGVyOiBzdWJtaXR0ZXIgIT09IHVuZGVmaW5lZCA/IHN1Ym1pdHRlciA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldEJ1dHRvblByb3BzOiB7IG9uQ2xpY2s6IGhhbmRsZUhpZGUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldFRleHQ6IChfYSA9IGRpYWxvZ1Byb3BzID09PSBudWxsIHx8IGRpYWxvZ1Byb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkaWFsb2dQcm9wcy5jYW5jZWxUZXh0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnQ2FuY2VsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGNoaWxkcmVuOiBjaGlsZHJlbiB9KSkgfSkgfSkpXSB9KSk7XG59O1xuRGlhbG9nRm9ybUJhc2UuZGlzcGxheU5hbWUgPSAnRGlhbG9nRm9ybSc7XG4vKiogR2VuZXJpYy1hd2FyZSBleHBvcnQg4oCUIGtlZXBzIGA8RGlhbG9nRm9ybTxNeVZhbHVlcz4g4oCmPmAgZnVsbHkgdHlwZWQuICovXG5leHBvcnQgY29uc3QgRGlhbG9nRm9ybSA9IG1lbW8oRGlhbG9nRm9ybUJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgRGlhbG9nRm9ybTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
1
2
|
import type { DrawerFormProps } from '../interface';
|
|
2
|
-
export
|
|
3
|
+
/** Generic-aware export — keeps `<DrawerForm<MyValues> …>` fully typed. */
|
|
4
|
+
export declare const DrawerForm: (<Values = Record<string, unknown>>(props: DrawerFormProps<Values>) => ReactElement | null) & {
|
|
5
|
+
displayName?: string;
|
|
6
|
+
};
|
|
3
7
|
export default DrawerForm;
|
|
@@ -75,6 +75,7 @@ var DrawerFormBase = function DrawerFormBase(props) {
|
|
|
75
75
|
});
|
|
76
76
|
};
|
|
77
77
|
DrawerFormBase.displayName = 'DrawerForm';
|
|
78
|
+
/** Generic-aware export — keeps `<DrawerForm<MyValues> …>` fully typed. */
|
|
78
79
|
var DrawerForm = exports.DrawerForm = /*#__PURE__*/(0, _react.memo)(DrawerFormBase);
|
|
79
80
|
var _default = exports["default"] = DrawerForm;
|
|
80
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL0RyYXdlckZvcm0uanMiLCJjb21wb25lbnRzL1Byb0Zvcm0vc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL0RyYXdlckZvcm0udHN4Il0sIm5hbWVzIjpbIl9qc3hSdW50aW1lIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9jbGFzc25hbWVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9EcmF3ZXIiLCJfUHJvRm9ybSIsIl9jb25zdGFudHMiLCJfdXNlT3ZlcmxheUZvcm0yIiwiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjbGFzc2VzIiwiY2xhc3NuYW1lcyIsImNvbmNhdCIsIkNTU19QUkVGSVgiLCJEcmF3ZXJGb3JtQmFzZSIsInByb3BzIiwib3BlbiIsIm9uT3BlbkNoYW5nZSIsInRyaWdnZXIiLCJ0aXRsZSIsIl9wcm9wcyR3aWR0aCIsIndpZHRoIiwiX3Byb3BzJHBsYWNlbWVudCIsInBsYWNlbWVudCIsInN1Ym1pdFRpbWVvdXQiLCJfcHJvcHMkYXV0b0Nsb3NlIiwiYXV0b0Nsb3NlIiwiZHJhd2VyUHJvcHMiLCJvbkZpbmlzaCIsInN1Ym1pdHRlciIsImNoaWxkcmVuIiwiX2Rlc3Ryb3lPbkNsb3NlIiwiZGVzdHJveU9uQ2xvc2UiLCJmb3JtUHJvcHMiLCJfdXNlT3ZlcmxheUZvcm0iLCJ1c2VPdmVybGF5Rm9ybSIsIm1lcmdlZE9wZW4iLCJ0cmlnZ2VyTm9kZSIsImhhbmRsZUZpbmlzaCIsImhhbmRsZUhpZGUiLCJfanN4cyIsIl9GcmFnbWVudCIsIl9qc3giLCJEcmF3ZXIiLCJhc3NpZ24iLCJvbkNsb3NlIiwiZm9vdGVyIiwiY2xhc3NOYW1lIiwiUHJvRm9ybSIsInVuZGVmaW5lZCIsInJlc2V0QnV0dG9uUHJvcHMiLCJvbkNsaWNrIiwicmVzZXRUZXh0IiwiZGlzcGxheU5hbWUiLCJEcmF3ZXJGb3JtIiwiZXhwb3J0cyIsIm1lbW8iLCJfZGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVdBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1hBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLFdBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGdCQUFBLEdBQUFQLE9BQUE7QUROQSxJQUFJUSxNQUFNLEdBQUksVUFBUSxTQUFLQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNWLEtBQUssSUFBSUMsQ0FBQyxJQUFJSCxDQUFDLEVBQUUsSUFBSUksTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQyxJQUFJRixDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUMvRUQsQ0FBQyxDQUFDQyxDQUFDLENBQUMsR0FBR0gsQ0FBQyxDQUFDRyxDQUFDLENBQUM7RUFDZixJQUFJSCxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU9JLE1BQU0sQ0FBQ0sscUJBQXFCLEtBQUssVUFBVSxFQUMvRCxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVQLENBQUMsR0FBR0MsTUFBTSxDQUFDSyxxQkFBcUIsQ0FBQ1QsQ0FBQyxDQUFDLEVBQUVVLENBQUMsR0FBR1AsQ0FBQyxDQUFDUSxNQUFNLEVBQUVELENBQUMsRUFBRSxFQUFFO0lBQ3BFLElBQUlULENBQUMsQ0FBQ08sT0FBTyxDQUFDTCxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJTixNQUFNLENBQUNDLFNBQVMsQ0FBQ08sb0JBQW9CLENBQUNMLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEVBQzFFUixDQUFDLENBQUNDLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLENBQUMsR0FBR1YsQ0FBQyxDQUFDRyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDO0VBQ3pCO0VBQ0osT0FBT1IsQ0FBQztBQUNaLENBQUM7QUNERCxJQUFNVyxPQUFPLEdBQUcsSUFBQUMsc0JBQVUsS0FBQUMsTUFBQSxDQUFJQyxxQkFBVSxpQkFBYyxDQUFDO0FBRXZELElBQU1DLGNBQWMsR0FBd0IsU0FBdENBLGNBQWNBLENBQXlCQyxLQUFLLEVBQUk7RUFDcEQsSUFDRUMsSUFBSSxHQWlCRkQsS0FBSyxDQWpCUEMsSUFBSTtJQUNKQyxZQUFZLEdBZ0JWRixLQUFLLENBaEJQRSxZQUFZO0lBQ1pDLE9BQU8sR0FlTEgsS0FBSyxDQWZQRyxPQUFPO0lBQ1BDLEtBQUssR0FjSEosS0FBSyxDQWRQSSxLQUFLO0lBQUFDLFlBQUEsR0FjSEwsS0FBSyxDQWJQTSxLQUFLO0lBQUxBLEtBQUssR0FBQUQsWUFBQSxjQUFHLEdBQUcsR0FBQUEsWUFBQTtJQUFBRSxnQkFBQSxHQWFUUCxLQUFLLENBWlBRLFNBQVM7SUFBVEEsU0FBUyxHQUFBRCxnQkFBQSxjQUFHLE9BQU8sR0FBQUEsZ0JBQUE7SUFDbkJFLGFBQWEsR0FXWFQsS0FBSyxDQVhQUyxhQUFhO0lBQUFDLGdCQUFBLEdBV1hWLEtBQUssQ0FWUFcsU0FBUztJQUFUQSxTQUFTLEdBQUFELGdCQUFBLGNBQUcsSUFBSSxHQUFBQSxnQkFBQTtJQUNoQkUsV0FBVyxHQVNUWixLQUFLLENBVFBZLFdBQVc7SUFDWEMsUUFBUSxHQVFOYixLQUFLLENBUlBhLFFBQVE7SUFDUkMsU0FBUyxHQU9QZCxLQUFLLENBUFBjLFNBQVM7SUFDVEMsUUFBUSxHQU1OZixLQUFLLENBTlBlLFFBQVE7SUFJUUMsZUFBZSxHQUU3QmhCLEtBQUssQ0FGUGlCLGNBQWM7SUFDWEMsU0FBUyxHQUFBckMsTUFBQSxDQUNWbUIsS0FBSyxFQWxCSCxDQUFBLE1BQUEsRUFBQSxjQUFBLEVBQUEsU0FBQSxFQUFBLE9BQUEsRUFBQSxPQUFBLEVBQUEsV0FBQSxFQUFBLGVBQUEsRUFBQSxXQUFBLEVBQUEsYUFBQSxFQUFBLFVBQUEsRUFBQSxXQUFBLEVBQUEsVUFBQSxFQUFBLGdCQUFBLENBa0JMLENBQVE7RUFFVCxJQUFBbUIsZUFBQSxHQUtJLElBQUFDLCtCQUFjLEVBQ2hCO01BQUVuQixJQUFJLEVBQUpBLElBQUk7TUFBRUMsWUFBWSxFQUFaQSxZQUFZO01BQUVDLE9BQU8sRUFBUEEsT0FBTztNQUFFUSxTQUFTLEVBQVRBLFNBQVM7TUFBRUYsYUFBYSxFQUFiQTtJQUFhLENBQUUsRUFDekRJLFFBQVEsQ0FDVDtJQVBDUSxVQUFVLEdBQUFGLGVBQUEsQ0FBVkUsVUFBVTtJQUNWQyxXQUFXLEdBQUFILGVBQUEsQ0FBWEcsV0FBVztJQUNYQyxZQUFZLEdBQUFKLGVBQUEsQ0FBWkksWUFBWTtJQUNaQyxVQUFVLEdBQUFMLGVBQUEsQ0FBVkssVUFBVTtFQU1aLE9BQ0UsSUFBQUMsZ0JBQUEsRUFBQUMsb0JBQUEsRUFBQTtJQUFBWCxRQUFBLEVBQUEsQ0FDR08sV0FBVyxFQUNaLElBQUFLLGVBQUEsRUFBQ0MsY0FBTSxFQUFBMUMsTUFBQSxDQUFBMkMsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUNEakIsV0FBVyxFQUFBO01BQ2ZYLElBQUksRUFBRW9CLFVBQVU7TUFDaEJqQixLQUFLLEVBQUVBLEtBQUs7TUFDWkksU0FBUyxFQUFFQSxTQUFTO01BQ3BCRixLQUFLLEVBQUVBLEtBQUs7TUFDWndCLE9BQU8sRUFBRU4sVUFBVTtNQUNuQk8sTUFBTSxFQUFFLElBQUk7TUFBQWhCLFFBQUEsRUFFWixJQUFBWSxlQUFBLEVBQUEsS0FBQSxFQUFBO1FBQUtLLFNBQVMsRUFBRXJDLE9BQU8sQ0FBQSxDQUFFO1FBQUFvQixRQUFBLEVBQ3ZCLElBQUFZLGVBQUEsRUFBQ00sZ0JBQU8sRUFBQS9DLE1BQUEsQ0FBQTJDLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFDRlgsU0FBUyxFQUFBO1VBQ2JMLFFBQVEsRUFBRVUsWUFBWTtVQUN0QlQsU0FBUyxFQUFFQSxTQUFTLEtBQUtvQixTQUFTLEdBQUdwQixTQUFTLEdBQUc7WUFDL0NxQixnQkFBZ0IsRUFBRTtjQUFFQyxPQUFPLEVBQUVaO1lBQVUsQ0FBRTtZQUN6Q2EsU0FBUyxFQUFFO1VEL0JELENDZ0NYO1VBQUF0QixRQUFBLEVBRUFBO1FBQVEsQ0FBQSxDQUFBO01BQ0QsQ0FBQTtJQUNOLENBQUEsQ0FBQSxDQUNDO0VBQUEsQ0FBQSxDQUNSO0FBRVAsQ0FBQztBQUVEaEIsY0FBYyxDQUFDdUMsV0FBVyxHQUFHLFlBQVk7QUFFekM7QUFDTyxJQUFNQyxVQUFVLEdBQUFDLE9BQUEsQ0FBQUQsVUFBQSxnQkFBRyxJQUFBRSxXQUFJLEVBQUMxQyxjQUFjLENBRU87QUFBQyxJQUFBMkMsUUFBQSxHQUFBRixPQUFBLGNBRXRDRCxVQUFVIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL0RyYXdlckZvcm0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwgRnJhZ21lbnQgYXMgX0ZyYWdtZW50LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBEcmF3ZXIgfSBmcm9tICcuLi8uLi9EcmF3ZXInO1xuaW1wb3J0IHsgUHJvRm9ybSB9IGZyb20gJy4uL1Byb0Zvcm0nO1xuaW1wb3J0IHsgQ1NTX1BSRUZJWCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB1c2VPdmVybGF5Rm9ybSB9IGZyb20gJy4vdXNlT3ZlcmxheUZvcm0nO1xuY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoYCR7Q1NTX1BSRUZJWH0tZHJhd2VyLWZvcm1gKTtcbmNvbnN0IERyYXdlckZvcm1CYXNlID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBvcGVuLCBvbk9wZW5DaGFuZ2UsIHRyaWdnZXIsIHRpdGxlLCB3aWR0aCA9IDQ4MCwgcGxhY2VtZW50ID0gJ3JpZ2h0Jywgc3VibWl0VGltZW91dCwgYXV0b0Nsb3NlID0gdHJ1ZSwgZHJhd2VyUHJvcHMsIG9uRmluaXNoLCBzdWJtaXR0ZXIsIGNoaWxkcmVuLCBcbiAgICAvLyBkZXN0cm95T25DbG9zZSBpcyBhY2NlcHRlZCBmb3IgQVBJIGNvbXBhdCBidXQgbm90IHVzZWQg4oCUXG4gICAgLy8gRHJhd2VyJ3Mgb3duIHVzZURyYXdlclRyYW5zaXRpb24gYWxyZWFkeSB1bm1vdW50cyB0aGUgZW50aXJlXG4gICAgLy8gRE9NIHRyZWUgKGluY2x1ZGluZyBmb3JtIGNvbnRlbnQpIGFmdGVyIHRoZSBjbG9zZSBhbmltYXRpb24uXG4gICAgZGVzdHJveU9uQ2xvc2U6IF9kZXN0cm95T25DbG9zZSB9ID0gcHJvcHMsIGZvcm1Qcm9wcyA9IF9fcmVzdChwcm9wcywgW1wib3BlblwiLCBcIm9uT3BlbkNoYW5nZVwiLCBcInRyaWdnZXJcIiwgXCJ0aXRsZVwiLCBcIndpZHRoXCIsIFwicGxhY2VtZW50XCIsIFwic3VibWl0VGltZW91dFwiLCBcImF1dG9DbG9zZVwiLCBcImRyYXdlclByb3BzXCIsIFwib25GaW5pc2hcIiwgXCJzdWJtaXR0ZXJcIiwgXCJjaGlsZHJlblwiLCBcImRlc3Ryb3lPbkNsb3NlXCJdKTtcbiAgICBjb25zdCB7IG1lcmdlZE9wZW4sIHRyaWdnZXJOb2RlLCBoYW5kbGVGaW5pc2gsIGhhbmRsZUhpZGUsIH0gPSB1c2VPdmVybGF5Rm9ybSh7IG9wZW4sIG9uT3BlbkNoYW5nZSwgdHJpZ2dlciwgYXV0b0Nsb3NlLCBzdWJtaXRUaW1lb3V0IH0sIG9uRmluaXNoKTtcbiAgICByZXR1cm4gKF9qc3hzKF9GcmFnbWVudCwgeyBjaGlsZHJlbjogW3RyaWdnZXJOb2RlLCBfanN4KERyYXdlciwgT2JqZWN0LmFzc2lnbih7fSwgZHJhd2VyUHJvcHMsIHsgb3BlbjogbWVyZ2VkT3BlbiwgdGl0bGU6IHRpdGxlLCBwbGFjZW1lbnQ6IHBsYWNlbWVudCwgd2lkdGg6IHdpZHRoLCBvbkNsb3NlOiBoYW5kbGVIaWRlLCBmb290ZXI6IG51bGwsIGNoaWxkcmVuOiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCksIGNoaWxkcmVuOiBfanN4KFByb0Zvcm0sIE9iamVjdC5hc3NpZ24oe30sIGZvcm1Qcm9wcywgeyBvbkZpbmlzaDogaGFuZGxlRmluaXNoLCBzdWJtaXR0ZXI6IHN1Ym1pdHRlciAhPT0gdW5kZWZpbmVkID8gc3VibWl0dGVyIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0QnV0dG9uUHJvcHM6IHsgb25DbGljazogaGFuZGxlSGlkZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0VGV4dDogJ0NhbmNlbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBjaGlsZHJlbjogY2hpbGRyZW4gfSkpIH0pIH0pKV0gfSkpO1xufTtcbkRyYXdlckZvcm1CYXNlLmRpc3BsYXlOYW1lID0gJ0RyYXdlckZvcm0nO1xuLyoqIEdlbmVyaWMtYXdhcmUgZXhwb3J0IOKAlCBrZWVwcyBgPERyYXdlckZvcm08TXlWYWx1ZXM+IOKApj5gIGZ1bGx5IHR5cGVkLiAqL1xuZXhwb3J0IGNvbnN0IERyYXdlckZvcm0gPSBtZW1vKERyYXdlckZvcm1CYXNlKTtcbmV4cG9ydCBkZWZhdWx0IERyYXdlckZvcm07IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
1
2
|
import type { QueryFilterProps } from '../interface';
|
|
2
|
-
|
|
3
|
-
export declare const QueryFilter:
|
|
3
|
+
/** Generic-aware export — keeps `<QueryFilter<MyValues> …>` fully typed. */
|
|
4
|
+
export declare const QueryFilter: (<Values = Record<string, unknown>>(props: QueryFilterProps<Values>) => ReactElement | null) & {
|
|
5
|
+
displayName?: string;
|
|
6
|
+
};
|
|
4
7
|
export default QueryFilter;
|
|
@@ -9,7 +9,8 @@ exports["default"] = exports.QueryFilter = void 0;
|
|
|
9
9
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
10
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
-
var
|
|
12
|
+
var _useControlledState3 = _interopRequireDefault(require("@1money/hooks/useControlledState"));
|
|
13
|
+
var _useMemoizedFn = _interopRequireDefault(require("@1money/hooks/useMemoizedFn"));
|
|
13
14
|
var _classnames = _interopRequireDefault(require("../../../utils/classnames"));
|
|
14
15
|
var _Button = require("../../Button");
|
|
15
16
|
var _ProForm = require("../ProForm");
|
|
@@ -36,20 +37,32 @@ function getUrlParams() {
|
|
|
36
37
|
});
|
|
37
38
|
return params;
|
|
38
39
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
/**
|
|
41
|
+
* Write the filter values into the URL while PRESERVING unrelated query params
|
|
42
|
+
* (e.g. `?tab=...`). Only keys previously written by this filter (tracked in
|
|
43
|
+
* `managedKeys`) are cleared before writing, so reset removes exactly what the
|
|
44
|
+
* filter added. Returns the new set of managed keys.
|
|
45
|
+
*/
|
|
46
|
+
function setUrlParams(params, managedKeys) {
|
|
47
|
+
if (typeof window === 'undefined') return new Set(managedKeys);
|
|
48
|
+
var sp = new URLSearchParams(window.location.search);
|
|
49
|
+
managedKeys.forEach(function (k) {
|
|
50
|
+
return sp["delete"](k);
|
|
51
|
+
});
|
|
52
|
+
var written = new Set();
|
|
42
53
|
for (var _i = 0, _Object$entries = Object.entries(params); _i < _Object$entries.length; _i++) {
|
|
43
54
|
var _Object$entries$_i = (0, _slicedToArray2["default"])(_Object$entries[_i], 2),
|
|
44
55
|
k = _Object$entries$_i[0],
|
|
45
56
|
v = _Object$entries$_i[1];
|
|
46
57
|
if (v !== null && v !== undefined && v !== '') {
|
|
47
58
|
sp.set(k, String(v));
|
|
59
|
+
written.add(k);
|
|
48
60
|
}
|
|
49
61
|
}
|
|
50
62
|
var search = sp.toString();
|
|
51
63
|
var url = search ? "".concat(window.location.pathname, "?").concat(search) : window.location.pathname;
|
|
52
64
|
window.history.replaceState(null, '', url);
|
|
65
|
+
return written;
|
|
53
66
|
}
|
|
54
67
|
// ---------------------------------------------------------------------------
|
|
55
68
|
// QueryFilter
|
|
@@ -74,35 +87,87 @@ var QueryFilterBase = function QueryFilterBase(props) {
|
|
|
74
87
|
submitter = _props$submitter === void 0 ? false : _props$submitter,
|
|
75
88
|
initialValuesProp = props.initialValues,
|
|
76
89
|
formProps = __rest(props, ["defaultCollapsed", "collapsed", "onCollapse", "defaultColsNumber", "labelWidth", "split", "searchConfig", "syncToUrl", "onFinish", "onReset", "children", "submitter", "initialValues"]);
|
|
77
|
-
var _useControlledState = (0,
|
|
90
|
+
var _useControlledState = (0, _useControlledState3["default"])(defaultCollapsed, controlledCollapsed),
|
|
78
91
|
_useControlledState2 = (0, _slicedToArray2["default"])(_useControlledState, 2),
|
|
79
92
|
collapsed = _useControlledState2[0],
|
|
80
93
|
setCollapsed = _useControlledState2[1];
|
|
81
94
|
// ── syncToUrl: merge URL params into initial values on mount ──
|
|
82
|
-
|
|
95
|
+
// One-time snapshot of the URL params at mount. Lazy ref init is IDEMPOTENT,
|
|
96
|
+
// so it is safe under StrictMode's double render (an impure "first run" flag
|
|
97
|
+
// inside useMemo would return the unmerged value on the replay invocation).
|
|
98
|
+
var urlParamsAtMountRef = (0, _react.useRef)(null);
|
|
99
|
+
if (urlParamsAtMountRef.current === null) {
|
|
100
|
+
urlParamsAtMountRef.current = syncToUrl ? getUrlParams() : {};
|
|
101
|
+
}
|
|
102
|
+
// Keys this filter has WRITTEN to the URL — the only keys submit/reset is
|
|
103
|
+
// allowed to clear. The function form of syncToUrl also seeds this from its
|
|
104
|
+
// filtered 'get' result (those keys are the filter's own by definition).
|
|
105
|
+
var managedKeysRef = (0, _react.useRef)(new Set());
|
|
106
|
+
// Boolean-mode only: URL params merged into initialValues but NOT yet
|
|
107
|
+
// claimed. The boolean form cannot tell its own params from foreign ones
|
|
108
|
+
// (?tab=…), so a seeded key is claimed only once its value changes (or it
|
|
109
|
+
// disappears from the submitted values, i.e. the user cleared the field).
|
|
110
|
+
var urlSeededRef = (0, _react.useRef)({});
|
|
83
111
|
var initialValues = (0, _react.useMemo)(function () {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
var urlParams =
|
|
112
|
+
var _a;
|
|
113
|
+
if (!syncToUrl) return initialValuesProp;
|
|
114
|
+
var urlParams = (_a = urlParamsAtMountRef.current) !== null && _a !== void 0 ? _a : {};
|
|
87
115
|
if (typeof syncToUrl === 'function') {
|
|
88
|
-
|
|
116
|
+
var fromUrl = syncToUrl(urlParams, 'get');
|
|
117
|
+
// Idempotent ref writes — same input on every invocation.
|
|
118
|
+
managedKeysRef.current = new Set(Object.keys(fromUrl));
|
|
119
|
+
return Object.assign(Object.assign({}, initialValuesProp), fromUrl);
|
|
89
120
|
}
|
|
121
|
+
urlSeededRef.current = Object.assign({}, urlParams);
|
|
90
122
|
return Object.assign(Object.assign({}, initialValuesProp), urlParams);
|
|
91
123
|
}, []);
|
|
92
|
-
var handleSyncSet = (0,
|
|
124
|
+
var handleSyncSet = (0, _useMemoizedFn["default"])(function (values) {
|
|
93
125
|
if (!syncToUrl) return;
|
|
94
|
-
var toWrite
|
|
95
|
-
|
|
126
|
+
var toWrite;
|
|
127
|
+
var toClear = new Set(managedKeysRef.current);
|
|
128
|
+
if (typeof syncToUrl === 'function') {
|
|
129
|
+
toWrite = syncToUrl(values, 'set');
|
|
130
|
+
} else {
|
|
131
|
+
// Skip URL-seeded keys we never wrote whose value is unchanged — they
|
|
132
|
+
// may belong to someone else (?tab=…); leave them in the URL untouched.
|
|
133
|
+
// A seeded key whose value DID change is claimed from now on.
|
|
134
|
+
toWrite = {};
|
|
135
|
+
for (var _i2 = 0, _Object$entries2 = Object.entries(values); _i2 < _Object$entries2.length; _i2++) {
|
|
136
|
+
var _Object$entries2$_i = (0, _slicedToArray2["default"])(_Object$entries2[_i2], 2),
|
|
137
|
+
key = _Object$entries2$_i[0],
|
|
138
|
+
value = _Object$entries2$_i[1];
|
|
139
|
+
var seeded = urlSeededRef.current[key];
|
|
140
|
+
if (seeded !== undefined && !managedKeysRef.current.has(key) && String(value) === seeded) {
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
delete urlSeededRef.current[key];
|
|
144
|
+
toClear.add(key);
|
|
145
|
+
toWrite[key] = value;
|
|
146
|
+
}
|
|
147
|
+
// Seeded keys missing from the submitted values were cleared by the
|
|
148
|
+
// user (omitNil strips empty values) — claim them and remove their
|
|
149
|
+
// stale params from the URL.
|
|
150
|
+
for (var _i3 = 0, _Object$keys = Object.keys(urlSeededRef.current); _i3 < _Object$keys.length; _i3++) {
|
|
151
|
+
var _key = _Object$keys[_i3];
|
|
152
|
+
if (!(_key in values)) {
|
|
153
|
+
delete urlSeededRef.current[_key];
|
|
154
|
+
toClear.add(_key);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
managedKeysRef.current = setUrlParams(toWrite, toClear);
|
|
96
159
|
});
|
|
97
|
-
var handleFinish = (0,
|
|
160
|
+
var handleFinish = (0, _useMemoizedFn["default"])(function (values) {
|
|
98
161
|
handleSyncSet(values);
|
|
99
162
|
onFinish === null || onFinish === void 0 ? void 0 : onFinish(values);
|
|
100
163
|
});
|
|
101
|
-
var handleReset = (0,
|
|
102
|
-
if (syncToUrl)
|
|
164
|
+
var handleReset = (0, _useMemoizedFn["default"])(function () {
|
|
165
|
+
if (syncToUrl) {
|
|
166
|
+
managedKeysRef.current = setUrlParams({}, managedKeysRef.current);
|
|
167
|
+
}
|
|
103
168
|
onReset === null || onReset === void 0 ? void 0 : onReset();
|
|
104
169
|
});
|
|
105
|
-
var handleCollapse = (0,
|
|
170
|
+
var handleCollapse = (0, _useMemoizedFn["default"])(function () {
|
|
106
171
|
var next = !collapsed;
|
|
107
172
|
setCollapsed(next);
|
|
108
173
|
onCollapse === null || onCollapse === void 0 ? void 0 : onCollapse(next);
|
|
@@ -166,6 +231,7 @@ var QueryFilterBase = function QueryFilterBase(props) {
|
|
|
166
231
|
}));
|
|
167
232
|
};
|
|
168
233
|
QueryFilterBase.displayName = 'QueryFilter';
|
|
234
|
+
/** Generic-aware export — keeps `<QueryFilter<MyValues> …>` fully typed. */
|
|
169
235
|
var QueryFilter = exports.QueryFilter = /*#__PURE__*/(0, _react.memo)(QueryFilterBase);
|
|
170
236
|
var _default = exports["default"] = QueryFilter;
|
|
171
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL1F1ZXJ5RmlsdGVyLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy9RdWVyeUZpbHRlci50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfaG9va3MiLCJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfQnV0dG9uIiwiX1Byb0Zvcm0iLCJfY29uc3RhbnRzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX19yZXN0IiwicyIsInAiLCJwcm90b3R5cGUiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjbGFzc2VzIiwiY2xhc3NuYW1lcyIsImNvbmNhdCIsIkNTU19QUkVGSVgiLCJnZXRVcmxQYXJhbXMiLCJ3aW5kb3ciLCJwYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJsb2NhdGlvbiIsInNlYXJjaCIsImZvckVhY2giLCJ2IiwiayIsInNldFVybFBhcmFtcyIsInNwIiwiX2kiLCJfT2JqZWN0JGVudHJpZXMiLCJlbnRyaWVzIiwiX09iamVjdCRlbnRyaWVzJF9pIiwiX3NsaWNlZFRvQXJyYXkyIiwidW5kZWZpbmVkIiwiU3RyaW5nIiwidG9TdHJpbmciLCJ1cmwiLCJwYXRobmFtZSIsImhpc3RvcnkiLCJyZXBsYWNlU3RhdGUiLCJRdWVyeUZpbHRlckJhc2UiLCJwcm9wcyIsIl9hIiwiX2IiLCJfcHJvcHMkZGVmYXVsdENvbGxhcHMiLCJkZWZhdWx0Q29sbGFwc2VkIiwiY29udHJvbGxlZENvbGxhcHNlZCIsImNvbGxhcHNlZCIsIm9uQ29sbGFwc2UiLCJfcHJvcHMkZGVmYXVsdENvbHNOdW0iLCJkZWZhdWx0Q29sc051bWJlciIsImxhYmVsV2lkdGgiLCJfcHJvcHMkc3BsaXQiLCJzcGxpdCIsInNlYXJjaENvbmZpZyIsInN5bmNUb1VybCIsIm9uRmluaXNoIiwib25SZXNldCIsImNoaWxkcmVuIiwiX3Byb3BzJHN1Ym1pdHRlciIsInN1Ym1pdHRlciIsImluaXRpYWxWYWx1ZXNQcm9wIiwiaW5pdGlhbFZhbHVlcyIsImZvcm1Qcm9wcyIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VDb250cm9sbGVkU3RhdGUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsInNldENvbGxhcHNlZCIsInN5bmNJbml0UmVmIiwidXNlUmVmIiwidXNlTWVtbyIsImN1cnJlbnQiLCJ1cmxQYXJhbXMiLCJhc3NpZ24iLCJoYW5kbGVTeW5jU2V0IiwidXNlTWVtb2l6ZWRGbiIsInZhbHVlcyIsInRvV3JpdGUiLCJoYW5kbGVGaW5pc2giLCJoYW5kbGVSZXNldCIsImhhbmRsZUNvbGxhcHNlIiwibmV4dCIsImNoaWxkQXJyYXkiLCJhcnIiLCJSZWFjdCIsIkNoaWxkcmVuIiwiY2hpbGQiLCJpc1ZhbGlkRWxlbWVudCIsInB1c2giLCJ2aXNpYmxlQ2hpbGRyZW4iLCJzbGljZSIsImhhc01vcmUiLCJzZWFyY2hUZXh0IiwiREVGQVVMVF9URVhUIiwicmVzZXRUZXh0IiwicmVzZXQiLCJidXR0b25TaXplIiwic2l6ZSIsImxhYmVsU3R5bGUiLCJ3aWR0aCIsIl9qc3giLCJQcm9Gb3JtIiwiX2pzeHMiLCJjbGFzc05hbWUiLCJtYXAiLCJpbmRleCIsIkZyYWdtZW50Iiwic3R5bGUiLCJCdXR0b24iLCJ0eXBlIiwiY29sb3IiLCJvbkNsaWNrIiwidmFyaWFudCIsImV4cGFuZCIsImNvbGxhcHNlIiwi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QUEsRUFOa0JtQixLQUFLLENBT1Q7TUFBQSxDQUNsQixDQUFDLEVBRUYsSUFBQUgsZ0JBQUEsRUFBQSxLQUFBLEVBQUE7UUFBS0MsU0FBUyxFQUFFMUYsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUFBNkMsUUFBQSxFQUFBLENBQ2hDLElBQUEwQyxlQUFBLEVBQUNRLGNBQU0sRUFBQTtVQUFDQyxJQUFJLEVBQUMsUUFBUTtVQUFDQyxLQUFLLEVBQUMsU0FBUztVQUFDYixJQUFJLEVBQUVELFVBQVU7VUFBQXRDLFFBQUEsRUFDbkRrQztRQUFVLENBQUEsQ0FDSixFQUNULElBQUFRLGVBQUEsRUFBQ1EsY0FBTSxFQUFBO1VBQUNDLElBQUksRUFBQyxRQUFRO1VBQUNDLEtBQUssRUFBQyxXQUFXO1VBQUNiLElBQUksRUFBRUQsVUFBVTtVQUFFZSxPQUFPLEVBQUVoQyxXQUFXO1VBQUFyQixRQUFBLEVBQzNFb0M7UUFBUyxDQUFBLENBQ0gsRUFDUkgsT0FBTyxJQUNOLElBQUFTLGVBQUEsRUFBQ1EsY0FBTSxFQUFBO1VBQUNDLElBQUksRUFBQyxRQUFRO1VBQUNHLE9BQU8sRUFBQyxNQUFNO1VBQUNmLElBQUksRUFBRUQsVUFBVTtVQUFFZSxPQUFPLEVBQUUvQixjQUFjO1VBQUF0QixRQUFBLEVBQzNFWCxTQUFTLEdBQUc4Qyx1QkFBWSxDQUFDb0IsTUFBTSxHQUFHcEIsdUJBQVksQ0FBQ3FCO1FBQVEsQ0FBQSxDQUUzRDtNQUFBLENBQUEsQ0FDRztJQUFBLENBQUE7RUFDRixDQUFBLENBQUEsQ0FDRTtBQUVkLENBQUM7QUFFRDFFLGVBQWUsQ0FBQzJFLFdBQVcsR0FBRyxhQUFhO0FBRXBDLElBQU1DLFdBQVcsR0FBQUMsT0FBQSxDQUFBRCxXQUFBLGdCQUFHLElBQUFFLFdBQUksRUFBQzlFLGVBQWUsQ0FBQztBQUFDLElBQUErRSxRQUFBLEdBQUFGLE9BQUEsY0FFbENELFdBQVciLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2xheW91dHMvUXVlcnlGaWx0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udHJvbGxlZFN0YXRlLCB1c2VNZW1vaXplZEZuIH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uLy4uL0J1dHRvbic7XG5pbXBvcnQgeyBQcm9Gb3JtIH0gZnJvbSAnLi4vUHJvRm9ybSc7XG5pbXBvcnQgeyBDU1NfUFJFRklYLCBERUZBVUxUX1RFWFQgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKGAke0NTU19QUkVGSVh9LXF1ZXJ5LWZpbHRlcmApO1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBVUkwgc3luYyBoZWxwZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGdldFVybFBhcmFtcygpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgIHJldHVybiB7fTtcbiAgICBjb25zdCBwYXJhbXMgPSB7fTtcbiAgICBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLmZvckVhY2goKHYsIGspID0+IHtcbiAgICAgICAgcGFyYW1zW2tdID0gdjtcbiAgICB9KTtcbiAgICByZXR1cm4gcGFyYW1zO1xufVxuZnVuY3Rpb24gc2V0VXJsUGFyYW1zKHBhcmFtcykge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IHNwID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFtcykpIHtcbiAgICAgICAgaWYgKHYgIT09IG51bGwgJiYgdiAhPT0gdW5kZWZpbmVkICYmIHYgIT09ICcnKSB7XG4gICAgICAgICAgICBzcC5zZXQoaywgU3RyaW5nKHYpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBzZWFyY2ggPSBzcC50b1N0cmluZygpO1xuICAgIGNvbnN0IHVybCA9IHNlYXJjaCA/IGAke3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX0/JHtzZWFyY2h9YCA6IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIHVybCk7XG59XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFF1ZXJ5RmlsdGVyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmNvbnN0IFF1ZXJ5RmlsdGVyQmFzZSA9IChwcm9wcykgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgY29uc3QgeyBkZWZhdWx0Q29sbGFwc2VkID0gdHJ1ZSwgY29sbGFwc2VkOiBjb250cm9sbGVkQ29sbGFwc2VkLCBvbkNvbGxhcHNlLCBkZWZhdWx0Q29sc051bWJlciA9IDMsIGxhYmVsV2lkdGgsIHNwbGl0ID0gZmFsc2UsIHNlYXJjaENvbmZpZywgc3luY1RvVXJsLCBvbkZpbmlzaCwgb25SZXNldCwgY2hpbGRyZW4sIHN1Ym1pdHRlciA9IGZhbHNlLCBpbml0aWFsVmFsdWVzOiBpbml0aWFsVmFsdWVzUHJvcCB9ID0gcHJvcHMsIGZvcm1Qcm9wcyA9IF9fcmVzdChwcm9wcywgW1wiZGVmYXVsdENvbGxhcHNlZFwiLCBcImNvbGxhcHNlZFwiLCBcIm9uQ29sbGFwc2VcIiwgXCJkZWZhdWx0Q29sc051bWJlclwiLCBcImxhYmVsV2lkdGhcIiwgXCJzcGxpdFwiLCBcInNlYXJjaENvbmZpZ1wiLCBcInN5bmNUb1VybFwiLCBcIm9uRmluaXNoXCIsIFwib25SZXNldFwiLCBcImNoaWxkcmVuXCIsIFwic3VibWl0dGVyXCIsIFwiaW5pdGlhbFZhbHVlc1wiXSk7XG4gICAgY29uc3QgW2NvbGxhcHNlZCwgc2V0Q29sbGFwc2VkXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0Q29sbGFwc2VkLCBjb250cm9sbGVkQ29sbGFwc2VkKTtcbiAgICAvLyDilIDilIAgc3luY1RvVXJsOiBtZXJnZSBVUkwgcGFyYW1zIGludG8gaW5pdGlhbCB2YWx1ZXMgb24gbW91bnQg4pSA4pSAXG4gICAgY29uc3Qgc3luY0luaXRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGluaXRpYWxWYWx1ZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKCFzeW5jVG9VcmwgfHwgc3luY0luaXRSZWYuY3VycmVudClcbiAgICAgICAgICAgIHJldHVybiBpbml0aWFsVmFsdWVzUHJvcDtcbiAgICAgICAgc3luY0luaXRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIGNvbnN0IHVybFBhcmFtcyA9IGdldFVybFBhcmFtcygpO1xuICAgICAgICBpZiAodHlwZW9mIHN5bmNUb1VybCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgaW5pdGlhbFZhbHVlc1Byb3ApLCBzeW5jVG9VcmwodXJsUGFyYW1zLCAnZ2V0JykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGluaXRpYWxWYWx1ZXNQcm9wKSwgdXJsUGFyYW1zKTtcbiAgICB9LCBbXSk7XG4gICAgY29uc3QgaGFuZGxlU3luY1NldCA9IHVzZU1lbW9pemVkRm4oKHZhbHVlcykgPT4ge1xuICAgICAgICBpZiAoIXN5bmNUb1VybClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgdG9Xcml0ZSA9IHR5cGVvZiBzeW5jVG9VcmwgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgID8gc3luY1RvVXJsKHZhbHVlcywgJ3NldCcpXG4gICAgICAgICAgICA6IHZhbHVlcztcbiAgICAgICAgc2V0VXJsUGFyYW1zKHRvV3JpdGUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUZpbmlzaCA9IHVzZU1lbW9pemVkRm4oKHZhbHVlcykgPT4ge1xuICAgICAgICBoYW5kbGVTeW5jU2V0KHZhbHVlcyk7XG4gICAgICAgIG9uRmluaXNoID09PSBudWxsIHx8IG9uRmluaXNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaCh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVJlc2V0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGlmIChzeW5jVG9VcmwpXG4gICAgICAgICAgICBzZXRVcmxQYXJhbXMoe30pO1xuICAgICAgICBvblJlc2V0ID09PSBudWxsIHx8IG9uUmVzZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUmVzZXQoKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVDb2xsYXBzZSA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICBjb25zdCBuZXh0ID0gIWNvbGxhcHNlZDtcbiAgICAgICAgc2V0Q29sbGFwc2VkKG5leHQpO1xuICAgICAgICBvbkNvbGxhcHNlID09PSBudWxsIHx8IG9uQ29sbGFwc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ29sbGFwc2UobmV4dCk7XG4gICAgfSk7XG4gICAgLy8gQ291bnQgY2hpbGRyZW4gYW5kIHNwbGl0IHZpc2libGUvaGlkZGVuXG4gICAgY29uc3QgY2hpbGRBcnJheSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBjb25zdCBhcnIgPSBbXTtcbiAgICAgICAgUmVhY3QuQ2hpbGRyZW4uZm9yRWFjaChjaGlsZHJlbiwgKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgYXJyLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9LCBbY2hpbGRyZW5dKTtcbiAgICBjb25zdCB2aXNpYmxlQ2hpbGRyZW4gPSBjb2xsYXBzZWRcbiAgICAgICAgPyBjaGlsZEFycmF5LnNsaWNlKDAsIGRlZmF1bHRDb2xzTnVtYmVyKVxuICAgICAgICA6IGNoaWxkQXJyYXk7XG4gICAgY29uc3QgaGFzTW9yZSA9IGNoaWxkQXJyYXkubGVuZ3RoID4gZGVmYXVsdENvbHNOdW1iZXI7XG4gICAgY29uc3Qgc2VhcmNoVGV4dCA9IChfYSA9IHNlYXJjaENvbmZpZyA9PT0gbnVsbCB8fCBzZWFyY2hDb25maWcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlYXJjaENvbmZpZy5zZWFyY2hUZXh0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBERUZBVUxUX1RFWFQuc2VhcmNoO1xuICAgIGNvbnN0IHJlc2V0VGV4dCA9IChfYiA9IHNlYXJjaENvbmZpZyA9PT0gbnVsbCB8fCBzZWFyY2hDb25maWcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlYXJjaENvbmZpZy5yZXNldFRleHQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IERFRkFVTFRfVEVYVC5yZXNldDtcbiAgICBjb25zdCBidXR0b25TaXplID0gc2VhcmNoQ29uZmlnID09PSBudWxsIHx8IHNlYXJjaENvbmZpZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VhcmNoQ29uZmlnLnNpemU7XG4gICAgY29uc3QgbGFiZWxTdHlsZSA9IGxhYmVsV2lkdGggIT09IHVuZGVmaW5lZCAmJiBsYWJlbFdpZHRoICE9PSAnYXV0bydcbiAgICAgICAgPyB7IHdpZHRoOiBsYWJlbFdpZHRoIH1cbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChfanN4KFByb0Zvcm0sIE9iamVjdC5hc3NpZ24oe30sIGZvcm1Qcm9wcywgeyBpbml0aWFsVmFsdWVzOiBpbml0aWFsVmFsdWVzLCBvbkZpbmlzaDogaGFuZGxlRmluaXNoLCBvblJlc2V0OiBoYW5kbGVSZXNldCwgc3VibWl0dGVyOiBmYWxzZSwgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCksIGNoaWxkcmVuOiBbdmlzaWJsZUNoaWxkcmVuLm1hcCgoY2hpbGQsIGluZGV4KSA9PiAoX2pzeHMoUmVhY3QuRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtzcGxpdCAmJiBpbmRleCA+IDAgJiYgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnc3BsaXQnKSB9KSwgbGFiZWxTdHlsZSA/IChfanN4KFwiZGl2XCIsIHsgc3R5bGU6IGxhYmVsU3R5bGUsIGNoaWxkcmVuOiBjaGlsZCB9KSkgOiAoY2hpbGQpXSB9LCBpbmRleCkpKSwgX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2FjdGlvbnMnKSwgY2hpbGRyZW46IFtfanN4KEJ1dHRvbiwgeyB0eXBlOiBcInN1Ym1pdFwiLCBjb2xvcjogXCJwcmltYXJ5XCIsIHNpemU6IGJ1dHRvblNpemUsIGNoaWxkcmVuOiBzZWFyY2hUZXh0IH0pLCBfanN4KEJ1dHRvbiwgeyB0eXBlOiBcImJ1dHRvblwiLCBjb2xvcjogXCJzZWNvbmRhcnlcIiwgc2l6ZTogYnV0dG9uU2l6ZSwgb25DbGljazogaGFuZGxlUmVzZXQsIGNoaWxkcmVuOiByZXNldFRleHQgfSksIGhhc01vcmUgJiYgKF9qc3goQnV0dG9uLCB7IHR5cGU6IFwiYnV0dG9uXCIsIHZhcmlhbnQ6IFwidGV4dFwiLCBzaXplOiBidXR0b25TaXplLCBvbkNsaWNrOiBoYW5kbGVDb2xsYXBzZSwgY2hpbGRyZW46IGNvbGxhcHNlZCA/IERFRkFVTFRfVEVYVC5leHBhbmQgOiBERUZBVUxUX1RFWFQuY29sbGFwc2UgfSkpXSB9KV0gfSkgfSkpKTtcbn07XG5RdWVyeUZpbHRlckJhc2UuZGlzcGxheU5hbWUgPSAnUXVlcnlGaWx0ZXInO1xuZXhwb3J0IGNvbnN0IFF1ZXJ5RmlsdGVyID0gbWVtbyhRdWVyeUZpbHRlckJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgUXVlcnlGaWx0ZXI7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
237
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL1F1ZXJ5RmlsdGVyLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy9RdWVyeUZpbHRlci50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdXNlQ29udHJvbGxlZFN0YXRlMyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXNlTWVtb2l6ZWRGbiIsIl9jbGFzc25hbWVzIiwiX0J1dHRvbiIsIl9Qcm9Gb3JtIiwiX2NvbnN0YW50cyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9fcmVzdCIsInMiLCJwIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiY2xhc3NlcyIsImNsYXNzbmFtZXMiLCJjb25jYXQiLCJDU1NfUFJFRklYIiwiZ2V0VXJsUGFyYW1zIiwid2luZG93IiwicGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwibG9jYXRpb24iLCJzZWFyY2giLCJmb3JFYWNoIiwidiIsImsiLCJzZXRVcmxQYXJhbXMiLCJtYW5hZ2VkS2V5cyIsIlNldCIsInNwIiwid3JpdHRlbiIsIl9pIiwiX09iamVjdCRlbnRyaWVzIiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsIl9zbGljZWRUb0FycmF5MiIsInVuZGVmaW5lZCIsIlN0cmluZyIsImFkZCIsInRvU3RyaW5nIiwidXJsIiwicGF0aG5hbWUiLCJoaXN0b3J5IiwicmVwbGFjZVN0YXRlIiwiUXVlcnlGaWx0ZXJCYXNlIiwicHJvcHMiLCJfYSIsIl9iIiwiX3Byb3BzJGRlZmF1bHRDb2xsYXBzIiwiZGVmYXVsdENvbGxhcHNlZCIsImNvbnRyb2xsZWRDb2xsYXBzZWQiLCJjb2xsYXBzZWQiLCJvbkNvbGxhcHNlIiwiX3Byb3BzJGRlZmF1bHRDb2xzTnVtIiwiZGVmYXVsdENvbHNOdW1iZXIiLCJsYWJlbFdpZHRoIiwiX3Byb3BzJHNwbGl0Iiwic3BsaXQiLCJzZWFyY2hDb25maWciLCJzeW5jVG9VcmwiLCJvbkZpbmlzaCIsIm9uUmVzZXQiLCJjaGlsZHJlbiIsIl9wcm9wcyRzdWJtaXR0ZXIiLCJzdWJtaXR0ZXIiLCJpbml0aWFsVmFsdWVzUHJvcCIsImluaXRpYWxWYWx1ZXMiLCJmb3JtUHJvcHMiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwidXNlQ29udHJvbGxlZFN0YXRlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTIiLCJzZXRDb2xsYXBzZWQiLCJ1cmxQYXJhbXNBdE1vdW50UmVmIiwidXNlUmVmIiwiY3VycmVudCIsIm1hbmFnZWRLZXlzUmVmIiwidXJsU2VlZGVkUmVmIiwidXNlTWVtbyIsInVybFBhcmFtcyIsImZyb21VcmwiLCJrZXlzIiwiYXNzaWduIiwiaGFuZGxlU3luY1NldCIsInVzZU1lbW9pemVkRm4iLCJ2YWx1ZXMiLCJ0b1dyaXRlIiwidG9DbGVhciIsIl9pMiIsIl9PYmplY3QkZW50cmllczIiLCJfT2JqZWN0JGVudHJpZXMyJF9pIiwia2V5IiwidmFsdWUiLCJzZWVkZWQiLCJfaTMiLCJfT2JqZWN0JGtleXMiLCJoYW5kbGVGaW5pc2giLCJoYW5kbGVSZXNldCIsImhhbmRsZUNvbGxhcHNlIiwibmV4dCIsImNoaWxkQXJyYXkiLCJhcnIiLCJSZWFjdCIsIkNoaWxkcmVuIiwiY2hpbGQiLCJpc1ZhbGlkRWxlbWVudCIsInB1c2giLCJ2aXNpYmxlQ2hpbGRyZW4iLCJzbGljZSIsImhhc01vcmUiLCJzZWFyY2hUZXh0IiwiREVGQVVMVF9URVhUIiwicmVzZXRUZXh0IiwicmVzZXQiLCJidXR0b25TaXplIiwic2l6ZSIsImxhYmVsU3R5bGUiLCJ3aWR0aCIsIl9qc3giLCJQcm9Gb3JtIiwiX2pzeHMiLCJjbGFzc05hbWUiLCJtYXAiLCJpbmRleCIsIkZyYWdtZW50Iiwic3R5bGUiLCJCdXR0b24iLCJ0eXBlIiwiY29sb3IiLCJvbkNsaWNrIiwidmFyaWFudCIsImV4cGFuZCIsImNvbGxhcHNlIiwiZGlzcGxheU5hbWUiLCJRdWVyeUZpbHRlciIsImV4cG9ydHMiLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVdBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1hBLElBQUFDLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFHLG9CQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFELHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBTSxXQUFBLEdBQUFGLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBTyxPQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxRQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxVQUFBLEdBQUFULE9BQUE7QUFBd0QsU0FBQVUseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFULHdCQUFBUyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENB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QUFDLE1BQU07VUFBQ2YsSUFBSSxFQUFFRCxVQUFVO1VBQUVlLE9BQU8sRUFBRS9CLGNBQWM7VUFBQW5DLFFBQUEsRUFDM0VYLFNBQVMsR0FBRzJELHVCQUFZLENBQUNvQixNQUFNLEdBQUdwQix1QkFBWSxDQUFDcUI7UUFBUSxDQUFBLENBRTNEO01BQUEsQ0FBQSxDQUNHO0lBQUEsQ0FBQTtFQUNGLENBQUEsQ0FBQSxDQUNFO0FBRWQsQ0FBQztBQUVEdkYsZUFBZSxDQUFDd0YsV0FBVyxHQUFHLGFBQWE7QUFFM0M7QUFDTyxJQUFNQyxXQUFXLEdBQUFDLE9BQUEsQ0FBQUQsV0FBQSxnQkFBRyxJQUFBRSxXQUFJLEVBQUMzRixlQUFlLENBRUs7QUFBQyxJQUFBNEYsUUFBQSxHQUFBRixPQUFBLGNBRXRDRCxXQUFXIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL1F1ZXJ5RmlsdGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8sIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDb250cm9sbGVkU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vLi4vQnV0dG9uJztcbmltcG9ydCB7IFByb0Zvcm0gfSBmcm9tICcuLi9Qcm9Gb3JtJztcbmltcG9ydCB7IENTU19QUkVGSVgsIERFRkFVTFRfVEVYVCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoYCR7Q1NTX1BSRUZJWH0tcXVlcnktZmlsdGVyYCk7XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFVSTCBzeW5jIGhlbHBlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gZ2V0VXJsUGFyYW1zKCkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuICAgIG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCkuZm9yRWFjaCgodiwgaykgPT4ge1xuICAgICAgICBwYXJhbXNba10gPSB2O1xuICAgIH0pO1xuICAgIHJldHVybiBwYXJhbXM7XG59XG4vKipcbiAqIFdyaXRlIHRoZSBmaWx0ZXIgdmFsdWVzIGludG8gdGhlIFVSTCB3aGlsZSBQUkVTRVJWSU5HIHVucmVsYXRlZCBxdWVyeSBwYXJhbXNcbiAqIChlLmcuIGA/dGFiPS4uLmApLiBPbmx5IGtleXMgcHJldmlvdXNseSB3cml0dGVuIGJ5IHRoaXMgZmlsdGVyICh0cmFja2VkIGluXG4gKiBgbWFuYWdlZEtleXNgKSBhcmUgY2xlYXJlZCBiZWZvcmUgd3JpdGluZywgc28gcmVzZXQgcmVtb3ZlcyBleGFjdGx5IHdoYXQgdGhlXG4gKiBmaWx0ZXIgYWRkZWQuIFJldHVybnMgdGhlIG5ldyBzZXQgb2YgbWFuYWdlZCBrZXlzLlxuICovXG5mdW5jdGlvbiBzZXRVcmxQYXJhbXMocGFyYW1zLCBtYW5hZ2VkS2V5cykge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQobWFuYWdlZEtleXMpO1xuICAgIGNvbnN0IHNwID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICBtYW5hZ2VkS2V5cy5mb3JFYWNoKChrKSA9PiBzcC5kZWxldGUoaykpO1xuICAgIGNvbnN0IHdyaXR0ZW4gPSBuZXcgU2V0KCk7XG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMocGFyYW1zKSkge1xuICAgICAgICBpZiAodiAhPT0gbnVsbCAmJiB2ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gJycpIHtcbiAgICAgICAgICAgIHNwLnNldChrLCBTdHJpbmcodikpO1xuICAgICAgICAgICAgd3JpdHRlbi5hZGQoayk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgc2VhcmNoID0gc3AudG9TdHJpbmcoKTtcbiAgICBjb25zdCB1cmwgPSBzZWFyY2ggPyBgJHt3aW5kb3cubG9jYXRpb24ucGF0aG5hbWV9PyR7c2VhcmNofWAgOiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7XG4gICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCB1cmwpO1xuICAgIHJldHVybiB3cml0dGVuO1xufVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBRdWVyeUZpbHRlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5jb25zdCBRdWVyeUZpbHRlckJhc2UgPSAocHJvcHMpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHsgZGVmYXVsdENvbGxhcHNlZCA9IHRydWUsIGNvbGxhcHNlZDogY29udHJvbGxlZENvbGxhcHNlZCwgb25Db2xsYXBzZSwgZGVmYXVsdENvbHNOdW1iZXIgPSAzLCBsYWJlbFdpZHRoLCBzcGxpdCA9IGZhbHNlLCBzZWFyY2hDb25maWcsIHN5bmNUb1VybCwgb25GaW5pc2gsIG9uUmVzZXQsIGNoaWxkcmVuLCBzdWJtaXR0ZXIgPSBmYWxzZSwgaW5pdGlhbFZhbHVlczogaW5pdGlhbFZhbHVlc1Byb3AgfSA9IHByb3BzLCBmb3JtUHJvcHMgPSBfX3Jlc3QocHJvcHMsIFtcImRlZmF1bHRDb2xsYXBzZWRcIiwgXCJjb2xsYXBzZWRcIiwgXCJvbkNvbGxhcHNlXCIsIFwiZGVmYXVsdENvbHNOdW1iZXJcIiwgXCJsYWJlbFdpZHRoXCIsIFwic3BsaXRcIiwgXCJzZWFyY2hDb25maWdcIiwgXCJzeW5jVG9VcmxcIiwgXCJvbkZpbmlzaFwiLCBcIm9uUmVzZXRcIiwgXCJjaGlsZHJlblwiLCBcInN1Ym1pdHRlclwiLCBcImluaXRpYWxWYWx1ZXNcIl0pO1xuICAgIGNvbnN0IFtjb2xsYXBzZWQsIHNldENvbGxhcHNlZF0gPSB1c2VDb250cm9sbGVkU3RhdGUoZGVmYXVsdENvbGxhcHNlZCwgY29udHJvbGxlZENvbGxhcHNlZCk7XG4gICAgLy8g4pSA4pSAIHN5bmNUb1VybDogbWVyZ2UgVVJMIHBhcmFtcyBpbnRvIGluaXRpYWwgdmFsdWVzIG9uIG1vdW50IOKUgOKUgFxuICAgIC8vIE9uZS10aW1lIHNuYXBzaG90IG9mIHRoZSBVUkwgcGFyYW1zIGF0IG1vdW50LiBMYXp5IHJlZiBpbml0IGlzIElERU1QT1RFTlQsXG4gICAgLy8gc28gaXQgaXMgc2FmZSB1bmRlciBTdHJpY3RNb2RlJ3MgZG91YmxlIHJlbmRlciAoYW4gaW1wdXJlIFwiZmlyc3QgcnVuXCIgZmxhZ1xuICAgIC8vIGluc2lkZSB1c2VNZW1vIHdvdWxkIHJldHVybiB0aGUgdW5tZXJnZWQgdmFsdWUgb24gdGhlIHJlcGxheSBpbnZvY2F0aW9uKS5cbiAgICBjb25zdCB1cmxQYXJhbXNBdE1vdW50UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGlmICh1cmxQYXJhbXNBdE1vdW50UmVmLmN1cnJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgdXJsUGFyYW1zQXRNb3VudFJlZi5jdXJyZW50ID0gc3luY1RvVXJsID8gZ2V0VXJsUGFyYW1zKCkgOiB7fTtcbiAgICB9XG4gICAgLy8gS2V5cyB0aGlzIGZpbHRlciBoYXMgV1JJVFRFTiB0byB0aGUgVVJMIOKAlCB0aGUgb25seSBrZXlzIHN1Ym1pdC9yZXNldCBpc1xuICAgIC8vIGFsbG93ZWQgdG8gY2xlYXIuIFRoZSBmdW5jdGlvbiBmb3JtIG9mIHN5bmNUb1VybCBhbHNvIHNlZWRzIHRoaXMgZnJvbSBpdHNcbiAgICAvLyBmaWx0ZXJlZCAnZ2V0JyByZXN1bHQgKHRob3NlIGtleXMgYXJlIHRoZSBmaWx0ZXIncyBvd24gYnkgZGVmaW5pdGlvbikuXG4gICAgY29uc3QgbWFuYWdlZEtleXNSZWYgPSB1c2VSZWYobmV3IFNldCgpKTtcbiAgICAvLyBCb29sZWFuLW1vZGUgb25seTogVVJMIHBhcmFtcyBtZXJnZWQgaW50byBpbml0aWFsVmFsdWVzIGJ1dCBOT1QgeWV0XG4gICAgLy8gY2xhaW1lZC4gVGhlIGJvb2xlYW4gZm9ybSBjYW5ub3QgdGVsbCBpdHMgb3duIHBhcmFtcyBmcm9tIGZvcmVpZ24gb25lc1xuICAgIC8vICg/dGFiPeKApiksIHNvIGEgc2VlZGVkIGtleSBpcyBjbGFpbWVkIG9ubHkgb25jZSBpdHMgdmFsdWUgY2hhbmdlcyAob3IgaXRcbiAgICAvLyBkaXNhcHBlYXJzIGZyb20gdGhlIHN1Ym1pdHRlZCB2YWx1ZXMsIGkuZS4gdGhlIHVzZXIgY2xlYXJlZCB0aGUgZmllbGQpLlxuICAgIGNvbnN0IHVybFNlZWRlZFJlZiA9IHVzZVJlZih7fSk7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghc3luY1RvVXJsKVxuICAgICAgICAgICAgcmV0dXJuIGluaXRpYWxWYWx1ZXNQcm9wO1xuICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSAoX2EgPSB1cmxQYXJhbXNBdE1vdW50UmVmLmN1cnJlbnQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHt9O1xuICAgICAgICBpZiAodHlwZW9mIHN5bmNUb1VybCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29uc3QgZnJvbVVybCA9IHN5bmNUb1VybCh1cmxQYXJhbXMsICdnZXQnKTtcbiAgICAgICAgICAgIC8vIElkZW1wb3RlbnQgcmVmIHdyaXRlcyDigJQgc2FtZSBpbnB1dCBvbiBldmVyeSBpbnZvY2F0aW9uLlxuICAgICAgICAgICAgbWFuYWdlZEtleXNSZWYuY3VycmVudCA9IG5ldyBTZXQoT2JqZWN0LmtleXMoZnJvbVVybCkpO1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgaW5pdGlhbFZhbHVlc1Byb3ApLCBmcm9tVXJsKTtcbiAgICAgICAgfVxuICAgICAgICB1cmxTZWVkZWRSZWYuY3VycmVudCA9IE9iamVjdC5hc3NpZ24oe30sIHVybFBhcmFtcyk7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGluaXRpYWxWYWx1ZXNQcm9wKSwgdXJsUGFyYW1zKTtcbiAgICB9LCBbXSk7XG4gICAgY29uc3QgaGFuZGxlU3luY1NldCA9IHVzZU1lbW9pemVkRm4oKHZhbHVlcykgPT4ge1xuICAgICAgICBpZiAoIXN5bmNUb1VybClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IHRvV3JpdGU7XG4gICAgICAgIGNvbnN0IHRvQ2xlYXIgPSBuZXcgU2V0KG1hbmFnZWRLZXlzUmVmLmN1cnJlbnQpO1xuICAgICAgICBpZiAodHlwZW9mIHN5bmNUb1VybCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdG9Xcml0ZSA9IHN5bmNUb1VybCh2YWx1ZXMsICdzZXQnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIFNraXAgVVJMLXNlZWRlZCBrZXlzIHdlIG5ldmVyIHdyb3RlIHdob3NlIHZhbHVlIGlzIHVuY2hhbmdlZCDigJQgdGhleVxuICAgICAgICAgICAgLy8gbWF5IGJlbG9uZyB0byBzb21lb25lIGVsc2UgKD90YWI94oCmKTsgbGVhdmUgdGhlbSBpbiB0aGUgVVJMIHVudG91Y2hlZC5cbiAgICAgICAgICAgIC8vIEEgc2VlZGVkIGtleSB3aG9zZSB2YWx1ZSBESUQgY2hhbmdlIGlzIGNsYWltZWQgZnJvbSBub3cgb24uXG4gICAgICAgICAgICB0b1dyaXRlID0ge307XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YWx1ZXMpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VlZGVkID0gdXJsU2VlZGVkUmVmLmN1cnJlbnRba2V5XTtcbiAgICAgICAgICAgICAgICBpZiAoc2VlZGVkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgIW1hbmFnZWRLZXlzUmVmLmN1cnJlbnQuaGFzKGtleSkgJiZcbiAgICAgICAgICAgICAgICAgICAgU3RyaW5nKHZhbHVlKSA9PT0gc2VlZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWxldGUgdXJsU2VlZGVkUmVmLmN1cnJlbnRba2V5XTtcbiAgICAgICAgICAgICAgICB0b0NsZWFyLmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIHRvV3JpdGVba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU2VlZGVkIGtleXMgbWlzc2luZyBmcm9tIHRoZSBzdWJtaXR0ZWQgdmFsdWVzIHdlcmUgY2xlYXJlZCBieSB0aGVcbiAgICAgICAgICAgIC8vIHVzZXIgKG9taXROaWwgc3RyaXBzIGVtcHR5IHZhbHVlcykg4oCUIGNsYWltIHRoZW0gYW5kIHJlbW92ZSB0aGVpclxuICAgICAgICAgICAgLy8gc3RhbGUgcGFyYW1zIGZyb20gdGhlIFVSTC5cbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHVybFNlZWRlZFJlZi5jdXJyZW50KSkge1xuICAgICAgICAgICAgICAgIGlmICghKGtleSBpbiB2YWx1ZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB1cmxTZWVkZWRSZWYuY3VycmVudFtrZXldO1xuICAgICAgICAgICAgICAgICAgICB0b0NsZWFyLmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBtYW5hZ2VkS2V5c1JlZi5jdXJyZW50ID0gc2V0VXJsUGFyYW1zKHRvV3JpdGUsIHRvQ2xlYXIpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUZpbmlzaCA9IHVzZU1lbW9pemVkRm4oKHZhbHVlcykgPT4ge1xuICAgICAgICBoYW5kbGVTeW5jU2V0KHZhbHVlcyk7XG4gICAgICAgIG9uRmluaXNoID09PSBudWxsIHx8IG9uRmluaXNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaCh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVJlc2V0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGlmIChzeW5jVG9VcmwpIHtcbiAgICAgICAgICAgIG1hbmFnZWRLZXlzUmVmLmN1cnJlbnQgPSBzZXRVcmxQYXJhbXMoe30sIG1hbmFnZWRLZXlzUmVmLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIG9uUmVzZXQgPT09IG51bGwgfHwgb25SZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SZXNldCgpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUNvbGxhcHNlID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHQgPSAhY29sbGFwc2VkO1xuICAgICAgICBzZXRDb2xsYXBzZWQobmV4dCk7XG4gICAgICAgIG9uQ29sbGFwc2UgPT09IG51bGwgfHwgb25Db2xsYXBzZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Db2xsYXBzZShuZXh0KTtcbiAgICB9KTtcbiAgICAvLyBDb3VudCBjaGlsZHJlbiBhbmQgc3BsaXQgdmlzaWJsZS9oaWRkZW5cbiAgICBjb25zdCBjaGlsZEFycmF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IGFyciA9IFtdO1xuICAgICAgICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCAoY2hpbGQpID0+IHtcbiAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgICAgICAgICAgICBhcnIucHVzaChjaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH0sIFtjaGlsZHJlbl0pO1xuICAgIGNvbnN0IHZpc2libGVDaGlsZHJlbiA9IGNvbGxhcHNlZFxuICAgICAgICA/IGNoaWxkQXJyYXkuc2xpY2UoMCwgZGVmYXVsdENvbHNOdW1iZXIpXG4gICAgICAgIDogY2hpbGRBcnJheTtcbiAgICBjb25zdCBoYXNNb3JlID0gY2hpbGRBcnJheS5sZW5ndGggPiBkZWZhdWx0Q29sc051bWJlcjtcbiAgICBjb25zdCBzZWFyY2hUZXh0ID0gKF9hID0gc2VhcmNoQ29uZmlnID09PSBudWxsIHx8IHNlYXJjaENvbmZpZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VhcmNoQ29uZmlnLnNlYXJjaFRleHQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IERFRkFVTFRfVEVYVC5zZWFyY2g7XG4gICAgY29uc3QgcmVzZXRUZXh0ID0gKF9iID0gc2VhcmNoQ29uZmlnID09PSBudWxsIHx8IHNlYXJjaENvbmZpZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VhcmNoQ29uZmlnLnJlc2V0VGV4dCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogREVGQVVMVF9URVhULnJlc2V0O1xuICAgIGNvbnN0IGJ1dHRvblNpemUgPSBzZWFyY2hDb25maWcgPT09IG51bGwgfHwgc2VhcmNoQ29uZmlnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDb25maWcuc2l6ZTtcbiAgICBjb25zdCBsYWJlbFN0eWxlID0gbGFiZWxXaWR0aCAhPT0gdW5kZWZpbmVkICYmIGxhYmVsV2lkdGggIT09ICdhdXRvJ1xuICAgICAgICA/IHsgd2lkdGg6IGxhYmVsV2lkdGggfVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gKF9qc3goUHJvRm9ybSwgT2JqZWN0LmFzc2lnbih7fSwgZm9ybVByb3BzLCB7IGluaXRpYWxWYWx1ZXM6IGluaXRpYWxWYWx1ZXMsIG9uRmluaXNoOiBoYW5kbGVGaW5pc2gsIG9uUmVzZXQ6IGhhbmRsZVJlc2V0LCBzdWJtaXR0ZXI6IGZhbHNlLCBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoKSwgY2hpbGRyZW46IFt2aXNpYmxlQ2hpbGRyZW4ubWFwKChjaGlsZCwgaW5kZXgpID0+IChfanN4cyhSZWFjdC5GcmFnbWVudCwgeyBjaGlsZHJlbjogW3NwbGl0ICYmIGluZGV4ID4gMCAmJiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdzcGxpdCcpIH0pLCBsYWJlbFN0eWxlID8gKF9qc3goXCJkaXZcIiwgeyBzdHlsZTogbGFiZWxTdHlsZSwgY2hpbGRyZW46IGNoaWxkIH0pKSA6IChjaGlsZCldIH0sIGluZGV4KSkpLCBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnYWN0aW9ucycpLCBjaGlsZHJlbjogW19qc3goQnV0dG9uLCB7IHR5cGU6IFwic3VibWl0XCIsIGNvbG9yOiBcInByaW1hcnlcIiwgc2l6ZTogYnV0dG9uU2l6ZSwgY2hpbGRyZW46IHNlYXJjaFRleHQgfSksIF9qc3goQnV0dG9uLCB7IHR5cGU6IFwiYnV0dG9uXCIsIGNvbG9yOiBcInNlY29uZGFyeVwiLCBzaXplOiBidXR0b25TaXplLCBvbkNsaWNrOiBoYW5kbGVSZXNldCwgY2hpbGRyZW46IHJlc2V0VGV4dCB9KSwgaGFzTW9yZSAmJiAoX2pzeChCdXR0b24sIHsgdHlwZTogXCJidXR0b25cIiwgdmFyaWFudDogXCJ0ZXh0XCIsIHNpemU6IGJ1dHRvblNpemUsIG9uQ2xpY2s6IGhhbmRsZUNvbGxhcHNlLCBjaGlsZHJlbjogY29sbGFwc2VkID8gREVGQVVMVF9URVhULmV4cGFuZCA6IERFRkFVTFRfVEVYVC5jb2xsYXBzZSB9KSldIH0pXSB9KSB9KSkpO1xufTtcblF1ZXJ5RmlsdGVyQmFzZS5kaXNwbGF5TmFtZSA9ICdRdWVyeUZpbHRlcic7XG4vKiogR2VuZXJpYy1hd2FyZSBleHBvcnQg4oCUIGtlZXBzIGA8UXVlcnlGaWx0ZXI8TXlWYWx1ZXM+IOKApj5gIGZ1bGx5IHR5cGVkLiAqL1xuZXhwb3J0IGNvbnN0IFF1ZXJ5RmlsdGVyID0gbWVtbyhRdWVyeUZpbHRlckJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgUXVlcnlGaWx0ZXI7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|