ng-zorro-antd-extension 17.4.2 → 17.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/configurable-query/configurable-query.component.d.ts +12 -8
- package/configurable-query/configurable-query.module.d.ts +5 -3
- package/configurable-query/controls/abstract.control.d.ts +2 -1
- package/configurable-query/query-config.service.d.ts +3 -0
- package/dynamic-form/config/dynamic-form-config.d.ts +18 -0
- package/dynamic-form/controls/abstract.control.d.ts +11 -0
- package/dynamic-form/controls/date-picker.control.d.ts +6 -0
- package/dynamic-form/controls/input.control.d.ts +6 -0
- package/dynamic-form/controls/range-picker.control.d.ts +6 -0
- package/dynamic-form/controls/select.control.d.ts +6 -0
- package/dynamic-form/controls/template.control.d.ts +6 -0
- package/dynamic-form/dynamic-form-item/dynamic-form-item.component.d.ts +12 -0
- package/dynamic-form/dynamic-form.component.d.ts +5 -0
- package/dynamic-form/dynamic-form.module.d.ts +23 -0
- package/dynamic-form/index.d.ts +5 -0
- package/dynamic-form/public-api.d.ts +7 -0
- package/dynamic-form/wrapper/control/abstract-control-wrapper.d.ts +12 -0
- package/dynamic-form/wrapper/control/built-in-control-wrapper.d.ts +7 -0
- package/dynamic-form/wrapper/item/abstract-item-wrapper.d.ts +14 -0
- package/dynamic-form/wrapper/item/built-in-item-wrapper.d.ts +6 -0
- package/dynamic-form/wrapper/label/abstract-label-wrapper.d.ts +5 -0
- package/dynamic-form/wrapper/label/built-in-label-wrapper.d.ts +6 -0
- package/esm2022/configurable-query/configurable-query-item/configurable-query-item.component.mjs +4 -3
- package/esm2022/configurable-query/configurable-query.component.mjs +18 -12
- package/esm2022/configurable-query/configurable-query.module.mjs +14 -6
- package/esm2022/configurable-query/controls/abstract.control.mjs +4 -1
- package/esm2022/configurable-query/controls/date-picker.control.mjs +6 -5
- package/esm2022/configurable-query/controls/input.control.mjs +6 -5
- package/esm2022/configurable-query/controls/range-picker.control.mjs +6 -5
- package/esm2022/configurable-query/controls/select.control.mjs +6 -5
- package/esm2022/configurable-query/controls/template.control.mjs +6 -5
- package/esm2022/configurable-query/query-config.service.mjs +4 -1
- package/esm2022/dynamic-form/config/dynamic-form-config.mjs +47 -0
- package/esm2022/dynamic-form/controls/abstract.control.mjs +17 -0
- package/esm2022/dynamic-form/controls/date-picker.control.mjs +20 -0
- package/esm2022/dynamic-form/controls/input.control.mjs +15 -0
- package/esm2022/dynamic-form/controls/range-picker.control.mjs +15 -0
- package/esm2022/dynamic-form/controls/select.control.mjs +49 -0
- package/esm2022/dynamic-form/controls/template.control.mjs +30 -0
- package/esm2022/dynamic-form/dynamic-form-item/dynamic-form-item.component.mjs +31 -0
- package/esm2022/dynamic-form/dynamic-form.component.mjs +45 -0
- package/esm2022/dynamic-form/dynamic-form.module.mjs +72 -0
- package/esm2022/dynamic-form/ng-zorro-antd-extension-dynamic-form.mjs +5 -0
- package/esm2022/dynamic-form/public-api.mjs +8 -0
- package/esm2022/dynamic-form/wrapper/control/abstract-control-wrapper.mjs +30 -0
- package/esm2022/dynamic-form/wrapper/control/built-in-control-wrapper.mjs +32 -0
- package/esm2022/dynamic-form/wrapper/item/abstract-item-wrapper.mjs +44 -0
- package/esm2022/dynamic-form/wrapper/item/built-in-item-wrapper.mjs +27 -0
- package/esm2022/dynamic-form/wrapper/label/abstract-label-wrapper.mjs +10 -0
- package/esm2022/dynamic-form/wrapper/label/built-in-label-wrapper.mjs +17 -0
- package/esm2022/print/nzx-print-content.directive.mjs +2 -2
- package/esm2022/print/nzx-print.module.mjs +1 -1
- package/esm2022/util/lib/getElementByTag.mjs +15 -8
- package/fesm2022/ng-zorro-antd-extension-configurable-query.mjs +53 -27
- package/fesm2022/ng-zorro-antd-extension-configurable-query.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-dynamic-form.mjs +444 -0
- package/fesm2022/ng-zorro-antd-extension-dynamic-form.mjs.map +1 -0
- package/fesm2022/ng-zorro-antd-extension-print.mjs.map +1 -1
- package/fesm2022/ng-zorro-antd-extension-util.mjs +13 -7
- package/fesm2022/ng-zorro-antd-extension-util.mjs.map +1 -1
- package/package.json +12 -6
- package/print/nzx-print-content.directive.d.ts +1 -1
- package/table-select/abstract-table-select.d.ts +1 -1
|
@@ -14,29 +14,32 @@ export declare class NzxConfigurableQueryComponent implements OnChanges, OnInit,
|
|
|
14
14
|
private i18n;
|
|
15
15
|
private fb;
|
|
16
16
|
private cd;
|
|
17
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* 配置项用来生成查询表单
|
|
19
|
+
*/
|
|
18
20
|
controls: Array<NzxQueryControlOptions>;
|
|
19
|
-
/**
|
|
21
|
+
/** 查询表单排列方式默认start */
|
|
20
22
|
nzxJustify: NzJustify;
|
|
21
|
-
/**
|
|
23
|
+
/** 查询项间隔默认为8 */
|
|
22
24
|
nzxGutter: number;
|
|
23
|
-
/**
|
|
25
|
+
/** 一行展示多少查询项默认展示3个 */
|
|
24
26
|
lineNumber: number;
|
|
25
27
|
/** 操作按钮所占栅格数,24则换行 */
|
|
26
28
|
nzxBtnSpan: number | null;
|
|
27
|
-
/**
|
|
29
|
+
/** 初始化时,是否主动触发查询 */
|
|
28
30
|
initQuery: boolean;
|
|
29
|
-
/** 缺省
|
|
31
|
+
/** 缺省 固定参数会固定携带在抛出事件中 */
|
|
30
32
|
fixedParams: {};
|
|
31
33
|
/** 查询时会触发抛出查询参数 */
|
|
32
34
|
queryChange: EventEmitter<NzxQueryParams>;
|
|
33
35
|
/** 重置时会触发抛出查询参数 */
|
|
34
36
|
resetChange: EventEmitter<NzxQueryParams>;
|
|
35
|
-
/**
|
|
37
|
+
/** 组件最终的查询参数 */
|
|
36
38
|
get queryParams(): any;
|
|
37
39
|
set queryParams(value: any);
|
|
40
|
+
/** 判断当前组件是否展示展开折叠按钮 */
|
|
38
41
|
get nzxCollapse(): boolean;
|
|
39
|
-
/** form
|
|
42
|
+
/** 内置 form 查询表单实例 */
|
|
40
43
|
queryForm: FormGroup;
|
|
41
44
|
locale: NzxQueryI18nInterface;
|
|
42
45
|
collapseIcon: string;
|
|
@@ -87,6 +90,7 @@ export declare class NzxConfigurableQueryComponent implements OnChanges, OnInit,
|
|
|
87
90
|
/**展开、收起*/
|
|
88
91
|
toggleCollapse(): void;
|
|
89
92
|
ngOnDestroy(): void;
|
|
93
|
+
/** 计算展开收起icon、文案 */
|
|
90
94
|
private calculateText;
|
|
91
95
|
/** 清空表单控件 */
|
|
92
96
|
private clearFormControl;
|
|
@@ -17,12 +17,14 @@ import * as i13 from "ng-zorro-antd/grid";
|
|
|
17
17
|
import * as i14 from "ng-zorro-antd/button";
|
|
18
18
|
import * as i15 from "ng-zorro-antd/select";
|
|
19
19
|
import * as i16 from "ng-zorro-antd/date-picker";
|
|
20
|
-
import * as i17 from "ng-zorro-antd/
|
|
21
|
-
import * as i18 from "ng-zorro-antd/
|
|
20
|
+
import * as i17 from "ng-zorro-antd/card";
|
|
21
|
+
import * as i18 from "ng-zorro-antd/space";
|
|
22
|
+
import * as i19 from "ng-zorro-antd/icon";
|
|
23
|
+
import * as i20 from "ng-zorro-antd/i18n";
|
|
22
24
|
export declare class NzxConfigurableQueryModule {
|
|
23
25
|
static forRoot(nzxQueryConfig: NzxQueryConfig): ModuleWithProviders<NzxConfigurableQueryModule>;
|
|
24
26
|
static forChild(nzxQueryConfig: NzxQueryConfig): ModuleWithProviders<NzxConfigurableQueryModule>;
|
|
25
27
|
static ɵfac: i0.ɵɵFactoryDeclaration<NzxConfigurableQueryModule, never>;
|
|
26
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<NzxConfigurableQueryModule, [typeof i1.NzxConfigurableQueryComponent, typeof i2.NzxControlDirective, typeof i3.NzxConfigurableQueryItemComponent, typeof i4.NzxInputControlComponent, typeof i5.NzxTemplateControlComponent, typeof i6.NzxSelectControlComponent, typeof i7.NzxDatePickerControlComponent, typeof i8.NzxRangePickerControlComponent], [typeof i9.CommonModule, typeof i10.ReactiveFormsModule, typeof i11.NzInputModule, typeof i12.NzFormModule, typeof i13.NzGridModule, typeof i14.NzButtonModule, typeof i15.NzSelectModule, typeof i16.NzDatePickerModule, typeof i17.
|
|
28
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<NzxConfigurableQueryModule, [typeof i1.NzxConfigurableQueryComponent, typeof i2.NzxControlDirective, typeof i3.NzxConfigurableQueryItemComponent, typeof i4.NzxInputControlComponent, typeof i5.NzxTemplateControlComponent, typeof i6.NzxSelectControlComponent, typeof i7.NzxDatePickerControlComponent, typeof i8.NzxRangePickerControlComponent], [typeof i9.CommonModule, typeof i10.ReactiveFormsModule, typeof i11.NzInputModule, typeof i12.NzFormModule, typeof i13.NzGridModule, typeof i14.NzButtonModule, typeof i15.NzSelectModule, typeof i16.NzDatePickerModule, typeof i17.NzCardModule, typeof i18.NzSpaceModule, typeof i19.NzIconModule, typeof i20.NzI18nModule], [typeof i2.NzxControlDirective, typeof i1.NzxConfigurableQueryComponent]>;
|
|
27
29
|
static ɵinj: i0.ɵɵInjectorDeclaration<NzxConfigurableQueryModule>;
|
|
28
30
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NzxQueryControlOptions } from '../type';
|
|
2
|
-
import { FormGroup } from '@angular/forms';
|
|
2
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
/**
|
|
5
5
|
* 用来动态添加control type类型控件,类型控件需要继承此控件
|
|
@@ -7,6 +7,7 @@ import * as i0 from "@angular/core";
|
|
|
7
7
|
export declare abstract class NzxAbstractControl {
|
|
8
8
|
form: FormGroup<any>;
|
|
9
9
|
control: NzxQueryControlOptions;
|
|
10
|
+
get formControl(): FormControl<any>;
|
|
10
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<NzxAbstractControl, never>;
|
|
11
12
|
static ɵdir: i0.ɵɵDirectiveDeclaration<NzxAbstractControl, never, never, { "form": { "alias": "form"; "required": false; }; "control": { "alias": "control"; "required": false; }; }, {}, never, never, false, never>;
|
|
12
13
|
}
|
|
@@ -10,8 +10,11 @@ export declare class NzxQueryConfigService {
|
|
|
10
10
|
private controlTypePoll;
|
|
11
11
|
controlTypes$: BehaviorSubject<NzxQueryControlType[]>;
|
|
12
12
|
constructor(nzxQueryConfig: NzxQueryConfig);
|
|
13
|
+
/** 添加controlType 类型控件 */
|
|
13
14
|
addControlType(controlType: NzxQueryControlType): void;
|
|
15
|
+
/** 删除controlType 类型控件 */
|
|
14
16
|
removeControlType(key: string): void;
|
|
17
|
+
/** 刷新 */
|
|
15
18
|
refreshControlType(): void;
|
|
16
19
|
static ɵfac: i0.ɵɵFactoryDeclaration<NzxQueryConfigService, [{ optional: true; }]>;
|
|
17
20
|
static ɵprov: i0.ɵɵInjectableDeclaration<NzxQueryConfigService>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { NzxDFAbstractItemWrapper } from '../wrapper/item/abstract-item-wrapper';
|
|
2
|
+
import { NzxDFAbstractLabelWrapper } from '../wrapper/label/abstract-label-wrapper';
|
|
3
|
+
import { NzxDFAbstractControlWrapper } from '../wrapper/control/abstract-control-wrapper';
|
|
4
|
+
import { NzxDFAbstractControl } from '../controls/abstract.control';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class NzxDFConfigService {
|
|
7
|
+
private itemWrapperMap;
|
|
8
|
+
private labelWrapperMap;
|
|
9
|
+
private controlWrapperMap;
|
|
10
|
+
private controlMap;
|
|
11
|
+
constructor();
|
|
12
|
+
getItemWrapper(key: string): typeof NzxDFAbstractItemWrapper;
|
|
13
|
+
getLabelWrapper(key: string): typeof NzxDFAbstractLabelWrapper;
|
|
14
|
+
getControlWrapper(key: string): typeof NzxDFAbstractControlWrapper;
|
|
15
|
+
getControl(key: string): typeof NzxDFAbstractControl;
|
|
16
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NzxDFConfigService, never>;
|
|
17
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<NzxDFConfigService>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FormGroup } from '@angular/forms';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* 用来动态添加control type类型控件,类型控件需要继承此控件
|
|
5
|
+
*/
|
|
6
|
+
export declare class NzxDFAbstractControl {
|
|
7
|
+
form: FormGroup<any>;
|
|
8
|
+
control: any;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NzxDFAbstractControl, never>;
|
|
10
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NzxDFAbstractControl, never, never, { "form": { "alias": "form"; "required": false; }; "control": { "alias": "control"; "required": false; }; }, {}, never, never, false, never>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { NzxDFAbstractControl } from './abstract.control';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class NzxDFDatePickerControlComponent extends NzxDFAbstractControl {
|
|
4
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NzxDFDatePickerControlComponent, never>;
|
|
5
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NzxDFDatePickerControlComponent, "ng-component", never, {}, {}, never, never, false, never>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { NzxDFAbstractControl } from './abstract.control';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class NzxDFInputControlComponent extends NzxDFAbstractControl {
|
|
4
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NzxDFInputControlComponent, never>;
|
|
5
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NzxDFInputControlComponent, "ng-component", never, {}, {}, never, never, false, never>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { NzxDFAbstractControl } from './abstract.control';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class NzxDFRangePickerControlComponent extends NzxDFAbstractControl {
|
|
4
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NzxDFRangePickerControlComponent, never>;
|
|
5
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NzxDFRangePickerControlComponent, "ng-component", never, {}, {}, never, never, false, never>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { NzxDFAbstractControl } from './abstract.control';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class NzxDFSelectControlComponent extends NzxDFAbstractControl {
|
|
4
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NzxDFSelectControlComponent, never>;
|
|
5
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NzxDFSelectControlComponent, "ng-component", never, {}, {}, never, never, false, never>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { NzxDFAbstractControl } from './abstract.control';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class NzxDFTemplateControlComponent extends NzxDFAbstractControl {
|
|
4
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NzxDFTemplateControlComponent, never>;
|
|
5
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NzxDFTemplateControlComponent, "ng-component", never, {}, {}, never, never, false, never>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { NzxDFConfigService } from '../config/dynamic-form-config';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class DynamicFormItemComponent implements OnInit {
|
|
5
|
+
private nzxDFConfig;
|
|
6
|
+
private itemTemplateView;
|
|
7
|
+
constructor(nzxDFConfig: NzxDFConfigService);
|
|
8
|
+
ngOnInit(): void;
|
|
9
|
+
private renderItem;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DynamicFormItemComponent, never>;
|
|
11
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DynamicFormItemComponent, "nzx-dynamic-form-item", never, {}, {}, never, never, false, never>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class NzxDynamicFormComponent {
|
|
3
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NzxDynamicFormComponent, never>;
|
|
4
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NzxDynamicFormComponent, "nzx-dynamic-form", never, {}, {}, never, never, false, never>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ModuleWithProviders } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./dynamic-form.component";
|
|
4
|
+
import * as i2 from "./dynamic-form-item/dynamic-form-item.component";
|
|
5
|
+
import * as i3 from "./wrapper/item/built-in-item-wrapper";
|
|
6
|
+
import * as i4 from "./wrapper/label/built-in-label-wrapper";
|
|
7
|
+
import * as i5 from "./wrapper/control/built-in-control-wrapper";
|
|
8
|
+
import * as i6 from "./controls/date-picker.control";
|
|
9
|
+
import * as i7 from "./controls/input.control";
|
|
10
|
+
import * as i8 from "./controls/range-picker.control";
|
|
11
|
+
import * as i9 from "./controls/select.control";
|
|
12
|
+
import * as i10 from "@angular/common";
|
|
13
|
+
import * as i11 from "@angular/forms";
|
|
14
|
+
import * as i12 from "ng-zorro-antd/form";
|
|
15
|
+
import * as i13 from "ng-zorro-antd/input";
|
|
16
|
+
import * as i14 from "ng-zorro-antd/select";
|
|
17
|
+
import * as i15 from "ng-zorro-antd/date-picker";
|
|
18
|
+
export declare class NzxDynamicFormModule {
|
|
19
|
+
static forRoot(): ModuleWithProviders<NzxDynamicFormModule>;
|
|
20
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NzxDynamicFormModule, never>;
|
|
21
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<NzxDynamicFormModule, [typeof i1.NzxDynamicFormComponent, typeof i2.DynamicFormItemComponent, typeof i3.NzxDFBuiltInItemWrapperComponent, typeof i4.NzxDFBuiltInLabelWrapperComponent, typeof i5.NzxDFBuiltInControlWrapperComponent, typeof i6.NzxDFDatePickerControlComponent, typeof i7.NzxDFInputControlComponent, typeof i8.NzxDFRangePickerControlComponent, typeof i9.NzxDFSelectControlComponent], [typeof i10.CommonModule, typeof i11.ReactiveFormsModule, typeof i12.NzFormModule, typeof i13.NzInputModule, typeof i14.NzSelectModule, typeof i15.NzDatePickerModule], [typeof i1.NzxDynamicFormComponent]>;
|
|
22
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<NzxDynamicFormModule>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
3
|
+
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
|
|
4
|
+
*/
|
|
5
|
+
export * from './config/dynamic-form-config';
|
|
6
|
+
export * from './dynamic-form.component';
|
|
7
|
+
export * from './dynamic-form.module';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { NzxDFConfigService } from '../../config/dynamic-form-config';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class NzxDFAbstractControlWrapper implements OnInit {
|
|
5
|
+
private nzxDFConfig;
|
|
6
|
+
private controlTemplateView;
|
|
7
|
+
constructor(nzxDFConfig: NzxDFConfigService);
|
|
8
|
+
ngOnInit(): void;
|
|
9
|
+
private renderControl;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NzxDFAbstractControlWrapper, never>;
|
|
11
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NzxDFAbstractControlWrapper, never, never, {}, {}, never, never, false, never>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { NzxDFAbstractControlWrapper } from './abstract-control-wrapper';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class NzxDFBuiltInControlWrapperComponent extends NzxDFAbstractControlWrapper {
|
|
4
|
+
controlWrapper: boolean;
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NzxDFBuiltInControlWrapperComponent, never>;
|
|
6
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NzxDFBuiltInControlWrapperComponent, "nzx-built-in-control-wrapper", never, {}, {}, never, never, false, never>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { NzxDFConfigService } from '../../config/dynamic-form-config';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class NzxDFAbstractItemWrapper implements OnInit {
|
|
5
|
+
private nzxDFConfig;
|
|
6
|
+
private labelWrapperTemplateView;
|
|
7
|
+
private controlWrapperTemplateView;
|
|
8
|
+
constructor(nzxDFConfig: NzxDFConfigService);
|
|
9
|
+
ngOnInit(): void;
|
|
10
|
+
private renderLabel;
|
|
11
|
+
private renderControl;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NzxDFAbstractItemWrapper, never>;
|
|
13
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NzxDFAbstractItemWrapper, never, never, {}, {}, never, never, false, never>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { NzxDFAbstractItemWrapper } from './abstract-item-wrapper';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class NzxDFBuiltInItemWrapperComponent extends NzxDFAbstractItemWrapper {
|
|
4
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NzxDFBuiltInItemWrapperComponent, never>;
|
|
5
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NzxDFBuiltInItemWrapperComponent, "nzx-built-in-item-wrapper", never, {}, {}, never, never, false, never>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class NzxDFAbstractLabelWrapper {
|
|
3
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NzxDFAbstractLabelWrapper, never>;
|
|
4
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NzxDFAbstractLabelWrapper, never, never, {}, {}, never, never, false, never>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { NzxDFAbstractLabelWrapper } from './abstract-label-wrapper';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class NzxDFBuiltInLabelWrapperComponent extends NzxDFAbstractLabelWrapper {
|
|
4
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NzxDFBuiltInLabelWrapperComponent, never>;
|
|
5
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NzxDFBuiltInLabelWrapperComponent, "nzx-built-in-label-wrapper", never, {}, {}, never, never, false, never>;
|
|
6
|
+
}
|
package/esm2022/configurable-query/configurable-query-item/configurable-query-item.component.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Input, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
2
2
|
import { Subject, takeUntil } from 'rxjs';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "../query-config.service";
|
|
@@ -51,7 +51,7 @@ export class NzxConfigurableQueryItemComponent {
|
|
|
51
51
|
<ng-template #controlTemp></ng-template>
|
|
52
52
|
</nz-form-control>
|
|
53
53
|
</nz-form-item>
|
|
54
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i3.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "component", type: i4.NzFormItemComponent, selector: "nz-form-item", exportAs: ["nzFormItem"] }, { kind: "component", type: i4.NzFormLabelComponent, selector: "nz-form-label", inputs: ["nzFor", "nzRequired", "nzNoColon", "nzTooltipTitle", "nzTooltipIcon", "nzLabelAlign", "nzLabelWrap"], exportAs: ["nzFormLabel"] }, { kind: "component", type: i4.NzFormControlComponent, selector: "nz-form-control", inputs: ["nzSuccessTip", "nzWarningTip", "nzErrorTip", "nzValidatingTip", "nzExtra", "nzAutoTips", "nzDisableAutoTips", "nzHasFeedback", "nzValidateStatus"], exportAs: ["nzFormControl"] }] }); }
|
|
54
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i3.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "component", type: i4.NzFormItemComponent, selector: "nz-form-item", exportAs: ["nzFormItem"] }, { kind: "component", type: i4.NzFormLabelComponent, selector: "nz-form-label", inputs: ["nzFor", "nzRequired", "nzNoColon", "nzTooltipTitle", "nzTooltipIcon", "nzLabelAlign", "nzLabelWrap"], exportAs: ["nzFormLabel"] }, { kind: "component", type: i4.NzFormControlComponent, selector: "nz-form-control", inputs: ["nzSuccessTip", "nzWarningTip", "nzErrorTip", "nzValidatingTip", "nzExtra", "nzAutoTips", "nzDisableAutoTips", "nzHasFeedback", "nzValidateStatus"], exportAs: ["nzFormControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
55
55
|
}
|
|
56
56
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NzxConfigurableQueryItemComponent, decorators: [{
|
|
57
57
|
type: Component,
|
|
@@ -73,6 +73,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
73
73
|
</nz-form-control>
|
|
74
74
|
</nz-form-item>
|
|
75
75
|
`,
|
|
76
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
76
77
|
}]
|
|
77
78
|
}], ctorParameters: () => [{ type: i1.NzxQueryConfigService }], propDecorators: { form: [{
|
|
78
79
|
type: Input
|
|
@@ -82,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
82
83
|
type: ViewChild,
|
|
83
84
|
args: ['controlTemp', { static: true, read: ViewContainerRef }]
|
|
84
85
|
}] } });
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhYmxlLXF1ZXJ5LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50cy9jb25maWd1cmFibGUtcXVlcnkvY29uZmlndXJhYmxlLXF1ZXJ5LWl0ZW0vY29uZmlndXJhYmxlLXF1ZXJ5LWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFHTCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUF3QjFDLE1BQU0sT0FBTyxpQ0FBaUM7SUFTNUMsWUFBb0IscUJBQTRDO1FBQTVDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFGeEQsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFNEIsQ0FBQztJQUVwRSxRQUFRO1FBQ04sSUFBSSxDQUFDLHFCQUFxQixDQUFDLGFBQWE7YUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFFTyxhQUFhLENBQUMsSUFBMkI7UUFDL0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwRSxJQUFJLE1BQU0sRUFBRTtZQUNWLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQzNELE1BQU0sQ0FBQyxTQUFnQixDQUN4QixDQUFDO1lBQ0YsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9DLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMxQzthQUFNO1lBQ0wsTUFBTSxrQkFBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLGlCQUFpQixDQUFDO1NBQ25FO0lBQ0gsQ0FBQzsrR0F0Q1UsaUNBQWlDO21HQUFqQyxpQ0FBaUMsZ05BSUksZ0JBQWdCLDJDQXRCdEQ7Ozs7Ozs7Ozs7Ozs7OztHQWVUOzs0RkFHVSxpQ0FBaUM7a0JBcEI3QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7O0dBZVQ7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzBGQUVVLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0UsbUJBQW1CO3NCQUQxQixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE56eFF1ZXJ5Q29uZmlnU2VydmljZSB9IGZyb20gJy4uL3F1ZXJ5LWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IE56eFF1ZXJ5Q29udHJvbE9wdGlvbnMsIE56eFF1ZXJ5Q29udHJvbFR5cGUgfSBmcm9tICcuLi90eXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnp4LWNvbmZpZ3VyYWJsZS1xdWVyeS1pdGVtJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bnotZm9ybS1pdGVtPlxuICAgICAgPG56LWZvcm0tbGFiZWwgKm5nSWY9XCJjb250cm9sLmxhYmVsXCIgW256U3Bhbl09XCJjb250cm9sLm56eExTcGFuIHx8IDZcIj5cbiAgICAgICAge3sgY29udHJvbC5sYWJlbCB9fVxuICAgICAgPC9uei1mb3JtLWxhYmVsPlxuICAgICAgPG56LWZvcm0tY29udHJvbFxuICAgICAgICBbbnpTcGFuXT1cImNvbnRyb2wubnp4UlNwYW4gfHwgMThcIlxuICAgICAgICBbbnpWYWxpZGF0ZVN0YXR1c109XCJcbiAgICAgICAgICBjb250cm9sPy5jb250cm9sSW5zdGFuY2UgPz8gJGFueShmb3JtLmdldChjb250cm9sLmNvbnRyb2xOYW1lISkpXG4gICAgICAgIFwiXG4gICAgICAgIFtuekVycm9yVGlwXT1cImNvbnRyb2wuZXJyb3JUaXBcIlxuICAgICAgPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2NvbnRyb2xUZW1wPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L256LWZvcm0tY29udHJvbD5cbiAgICA8L256LWZvcm0taXRlbT5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE56eENvbmZpZ3VyYWJsZVF1ZXJ5SXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgZm9ybSE6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgY29udHJvbCE6IE56eFF1ZXJ5Q29udHJvbE9wdGlvbnM7XG5cbiAgQFZpZXdDaGlsZCgnY29udHJvbFRlbXAnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxuICBwcml2YXRlIGNvbnRyb2xUZW1wbGF0ZVZpZXchOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbnp4UXVlcnlDb25maWdTZXJ2aWNlOiBOenhRdWVyeUNvbmZpZ1NlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5uenhRdWVyeUNvbmZpZ1NlcnZpY2UuY29udHJvbFR5cGVzJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgobGlzdCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlckNvbnRyb2wobGlzdCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRlc3Ryb3kkKSB7XG4gICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbmRlckNvbnRyb2wobGlzdDogTnp4UXVlcnlDb250cm9sVHlwZVtdKSB7XG4gICAgdGhpcy5jb250cm9sVGVtcGxhdGVWaWV3LmNsZWFyKCk7XG4gICAgY29uc3QgY29uZmlnID0gbGlzdC5maW5kKChpKSA9PiBpLmtleSA9PT0gdGhpcy5jb250cm9sLmNvbnRyb2xUeXBlKTtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbnRyb2xUZW1wbGF0ZVZpZXcuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgICBjb25maWcuY29tcG9uZW50IGFzIGFueVxuICAgICAgKTtcbiAgICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dCgnY29udHJvbCcsIHRoaXMuY29udHJvbCk7XG4gICAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoJ2Zvcm0nLCB0aGlzLmZvcm0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBgQ29udHJvbFR5cGU6OiAnJHt0aGlzLmNvbnRyb2wuY29udHJvbFR5cGV9JyBpcyBpbnZhbGlkYXRlYDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -11,20 +11,23 @@ import * as i5 from "ng-zorro-antd/form";
|
|
|
11
11
|
import * as i6 from "ng-zorro-antd/button";
|
|
12
12
|
import * as i7 from "ng-zorro-antd/core/transition-patch";
|
|
13
13
|
import * as i8 from "ng-zorro-antd/core/wave";
|
|
14
|
-
import * as i9 from "ng-zorro-antd/
|
|
15
|
-
import * as i10 from "
|
|
14
|
+
import * as i9 from "ng-zorro-antd/card";
|
|
15
|
+
import * as i10 from "ng-zorro-antd/space";
|
|
16
|
+
import * as i11 from "ng-zorro-antd/icon";
|
|
17
|
+
import * as i12 from "./configurable-query-item/configurable-query-item.component";
|
|
16
18
|
/**
|
|
17
19
|
* 查询组件
|
|
18
20
|
* 支持模板自定义,在使用模板自定义时,要注意controlType应该设置为Template并且确保controlName与指令上的nzxControl应该相同
|
|
19
21
|
*/
|
|
20
22
|
export class NzxConfigurableQueryComponent {
|
|
21
|
-
/**
|
|
23
|
+
/** 组件最终的查询参数 */
|
|
22
24
|
get queryParams() {
|
|
23
25
|
return this._queryParams;
|
|
24
26
|
}
|
|
25
27
|
set queryParams(value) {
|
|
26
28
|
this._queryParams = value;
|
|
27
29
|
}
|
|
30
|
+
/** 判断当前组件是否展示展开折叠按钮 */
|
|
28
31
|
get nzxCollapse() {
|
|
29
32
|
return this.controls.some((i) => i.hasOwnProperty('collapse'));
|
|
30
33
|
}
|
|
@@ -32,19 +35,21 @@ export class NzxConfigurableQueryComponent {
|
|
|
32
35
|
this.i18n = i18n;
|
|
33
36
|
this.fb = fb;
|
|
34
37
|
this.cd = cd;
|
|
35
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* 配置项用来生成查询表单
|
|
40
|
+
*/
|
|
36
41
|
this.controls = [];
|
|
37
|
-
/**
|
|
42
|
+
/** 查询表单排列方式默认start */
|
|
38
43
|
this.nzxJustify = 'start';
|
|
39
|
-
/**
|
|
44
|
+
/** 查询项间隔默认为8 */
|
|
40
45
|
this.nzxGutter = 8;
|
|
41
|
-
/**
|
|
46
|
+
/** 一行展示多少查询项默认展示3个 */
|
|
42
47
|
this.lineNumber = 3;
|
|
43
48
|
/** 操作按钮所占栅格数,24则换行 */
|
|
44
49
|
this.nzxBtnSpan = null;
|
|
45
|
-
/**
|
|
50
|
+
/** 初始化时,是否主动触发查询 */
|
|
46
51
|
this.initQuery = false;
|
|
47
|
-
/** 缺省
|
|
52
|
+
/** 缺省 固定参数会固定携带在抛出事件中 */
|
|
48
53
|
this.fixedParams = {};
|
|
49
54
|
/** 查询时会触发抛出查询参数 */
|
|
50
55
|
this.queryChange = new EventEmitter();
|
|
@@ -212,6 +217,7 @@ export class NzxConfigurableQueryComponent {
|
|
|
212
217
|
this.destroy$.next();
|
|
213
218
|
this.destroy$.complete();
|
|
214
219
|
}
|
|
220
|
+
/** 计算展开收起icon、文案 */
|
|
215
221
|
calculateText() {
|
|
216
222
|
if (this.controls.some((i) => i.collapse === true)) {
|
|
217
223
|
this.collapseIcon = 'down';
|
|
@@ -270,11 +276,11 @@ export class NzxConfigurableQueryComponent {
|
|
|
270
276
|
}
|
|
271
277
|
}
|
|
272
278
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NzxConfigurableQueryComponent, deps: [{ token: i1.NzI18nService }, { token: i2.FormBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
273
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NzxConfigurableQueryComponent, selector: "nzx-configurable-query", inputs: { controls: "controls", nzxJustify: "nzxJustify", nzxGutter: "nzxGutter", lineNumber: "lineNumber", nzxBtnSpan: "nzxBtnSpan", initQuery: "initQuery", fixedParams: "fixedParams" }, outputs: { queryChange: "queryChange", resetChange: "resetChange" }, queries: [{ propertyName: "controlTemplateList", predicate: NzxControlDirective, descendants: true }], viewQueries: [{ propertyName: "queyFormEl", first: true, predicate: ["queyForm"], descendants: true }], exportAs: ["NzxConfigurableQuery"], usesOnChanges: true, ngImport: i0, template: "<form #queyForm class=\"nzx-query-container\" nz-form [formGroup]=\"queryForm\">\n
|
|
279
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NzxConfigurableQueryComponent, selector: "nzx-configurable-query", inputs: { controls: "controls", nzxJustify: "nzxJustify", nzxGutter: "nzxGutter", lineNumber: "lineNumber", nzxBtnSpan: "nzxBtnSpan", initQuery: "initQuery", fixedParams: "fixedParams" }, outputs: { queryChange: "queryChange", resetChange: "resetChange" }, queries: [{ propertyName: "controlTemplateList", predicate: NzxControlDirective, descendants: true }], viewQueries: [{ propertyName: "queyFormEl", first: true, predicate: ["queyForm"], descendants: true }], exportAs: ["NzxConfigurableQuery"], usesOnChanges: true, ngImport: i0, template: "<nz-card>\n <form #queyForm class=\"nzx-query-container\" nz-form [formGroup]=\"queryForm\">\n <div nz-row [nzGutter]=\"nzxGutter\" [nzJustify]=\"nzxJustify\">\n <ng-container *ngFor=\"let config of controls; let i = index\">\n <div\n *ngIf=\"!config.hidden\"\n nz-col\n [nzSpan]=\"config.nzxSpan || 24 / lineNumber\"\n [hidden]=\"config.collapse\"\n [nzOrder]=\"i\"\n >\n <nzx-configurable-query-item\n *ngIf=\"config.controlName\"\n [form]=\"queryForm\"\n [control]=\"config\"\n ></nzx-configurable-query-item>\n </div>\n </ng-container>\n\n <div\n class=\"nzx-query-btn\"\n nz-col\n [nzOrder]=\"controls.length\"\n [nzSpan]=\"nzxBtnSpan || 24 / lineNumber\"\n >\n <div nz-row nzJustify=\"end\" nzAlign=\"middle\">\n <nz-space>\n <button\n *nzSpaceItem\n nz-button\n nzType=\"primary\"\n type=\"button\"\n title=\"Enter\"\n (click)=\"search()\"\n >\n {{ locale['query'] }}\n </button>\n <button\n *nzSpaceItem\n nz-button\n type=\"button\"\n title=\"ctrl+r\"\n (click)=\"reset()\"\n >\n {{ locale['reset'] }}\n </button>\n <ng-container *nzSpaceItem>\n <ng-content></ng-content>\n </ng-container>\n <ng-container *ngIf=\"nzxCollapse\">\n <a\n *nzSpaceItem\n nz-button\n nzType=\"link\"\n (click)=\"toggleCollapse()\"\n >\n {{ collapseText }}\n <i nz-icon [nzType]=\"collapseIcon\"></i>\n </a>\n </ng-container>\n </nz-space>\n </div>\n </div>\n </div>\n </form>\n</nz-card>\n", styles: [".nzx-query-container [nz-form-label]{overflow:visible}.nzx-query-container .nzx-query-btn{flex-grow:2;max-width:none}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i4.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "directive", type: i5.NzFormDirective, selector: "[nz-form]", inputs: ["nzLayout", "nzNoColon", "nzAutoTips", "nzDisableAutoTips", "nzTooltipIcon", "nzLabelAlign", "nzLabelWrap"], exportAs: ["nzForm"] }, { kind: "component", type: i6.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i7.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i8.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "component", type: i9.NzCardComponent, selector: "nz-card", inputs: ["nzBordered", "nzBorderless", "nzLoading", "nzHoverable", "nzBodyStyle", "nzCover", "nzActions", "nzType", "nzSize", "nzTitle", "nzExtra"], exportAs: ["nzCard"] }, { kind: "component", type: i10.NzSpaceComponent, selector: "nz-space, [nz-space]", inputs: ["nzDirection", "nzAlign", "nzSplit", "nzWrap", "nzSize"], exportAs: ["NzSpace"] }, { kind: "directive", type: i10.NzSpaceItemDirective, selector: "[nzSpaceItem]" }, { kind: "directive", type: i11.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i12.NzxConfigurableQueryItemComponent, selector: "nzx-configurable-query-item", inputs: ["form", "control"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
274
280
|
}
|
|
275
281
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NzxConfigurableQueryComponent, decorators: [{
|
|
276
282
|
type: Component,
|
|
277
|
-
args: [{ selector: 'nzx-configurable-query', changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'NzxConfigurableQuery', template: "<form #queyForm class=\"nzx-query-container\" nz-form [formGroup]=\"queryForm\">\n
|
|
283
|
+
args: [{ selector: 'nzx-configurable-query', changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'NzxConfigurableQuery', template: "<nz-card>\n <form #queyForm class=\"nzx-query-container\" nz-form [formGroup]=\"queryForm\">\n <div nz-row [nzGutter]=\"nzxGutter\" [nzJustify]=\"nzxJustify\">\n <ng-container *ngFor=\"let config of controls; let i = index\">\n <div\n *ngIf=\"!config.hidden\"\n nz-col\n [nzSpan]=\"config.nzxSpan || 24 / lineNumber\"\n [hidden]=\"config.collapse\"\n [nzOrder]=\"i\"\n >\n <nzx-configurable-query-item\n *ngIf=\"config.controlName\"\n [form]=\"queryForm\"\n [control]=\"config\"\n ></nzx-configurable-query-item>\n </div>\n </ng-container>\n\n <div\n class=\"nzx-query-btn\"\n nz-col\n [nzOrder]=\"controls.length\"\n [nzSpan]=\"nzxBtnSpan || 24 / lineNumber\"\n >\n <div nz-row nzJustify=\"end\" nzAlign=\"middle\">\n <nz-space>\n <button\n *nzSpaceItem\n nz-button\n nzType=\"primary\"\n type=\"button\"\n title=\"Enter\"\n (click)=\"search()\"\n >\n {{ locale['query'] }}\n </button>\n <button\n *nzSpaceItem\n nz-button\n type=\"button\"\n title=\"ctrl+r\"\n (click)=\"reset()\"\n >\n {{ locale['reset'] }}\n </button>\n <ng-container *nzSpaceItem>\n <ng-content></ng-content>\n </ng-container>\n <ng-container *ngIf=\"nzxCollapse\">\n <a\n *nzSpaceItem\n nz-button\n nzType=\"link\"\n (click)=\"toggleCollapse()\"\n >\n {{ collapseText }}\n <i nz-icon [nzType]=\"collapseIcon\"></i>\n </a>\n </ng-container>\n </nz-space>\n </div>\n </div>\n </div>\n </form>\n</nz-card>\n", styles: [".nzx-query-container [nz-form-label]{overflow:visible}.nzx-query-container .nzx-query-btn{flex-grow:2;max-width:none}\n"] }]
|
|
278
284
|
}], ctorParameters: () => [{ type: i1.NzI18nService }, { type: i2.FormBuilder }, { type: i0.ChangeDetectorRef }], propDecorators: { controls: [{
|
|
279
285
|
type: Input
|
|
280
286
|
}], nzxJustify: [{
|
|
@@ -300,4 +306,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
300
306
|
type: ContentChildren,
|
|
301
307
|
args: [NzxControlDirective, { descendants: true }]
|
|
302
308
|
}] } });
|
|
303
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhYmxlLXF1ZXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY29uZmlndXJhYmxlLXF1ZXJ5L2NvbmZpZ3VyYWJsZS1xdWVyeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NvbmZpZ3VyYWJsZS1xdWVyeS9jb25maWd1cmFibGUtcXVlcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUduRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7OztBQUcxRDs7O0dBR0c7QUFTSCxNQUFNLE9BQU8sNkJBQTZCO0lBdUJ4QyxZQUFZO0lBQ1osSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFJLFdBQVcsQ0FBQyxLQUFVO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQWtCRCxZQUNVLElBQW1CLEVBQ25CLEVBQWUsRUFDZixFQUFxQjtRQUZyQixTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25C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ZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgTnp4UXVlcnlJMThuSW50ZXJmYWNlIH0gZnJvbSAnbmctem9ycm8tYW50ZC1leHRlbnNpb24vaTE4bic7XHJcbmltcG9ydCB7IHVwZGF0ZUNvbnRyb2xTdGF0dXMgfSBmcm9tICduZy16b3Jyby1hbnRkLWV4dGVuc2lvbi91dGlsJztcclxuaW1wb3J0IHsgTnpKdXN0aWZ5IH0gZnJvbSAnbmctem9ycm8tYW50ZC9ncmlkJztcclxuaW1wb3J0IHsgTnpJMThuU2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvaTE4bic7XHJcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE56eENvbnRyb2xEaXJlY3RpdmUgfSBmcm9tICcuL2NvbnRyb2wuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTnp4UXVlcnlDb250cm9sT3B0aW9ucywgTnp4UXVlcnlQYXJhbXMgfSBmcm9tICcuL3R5cGUnO1xyXG5cclxuLyoqXHJcbiAqIOafpeivoue7hOS7tlxyXG4gKiDmlK/mjIHmqKHmnb/oh6rlrprkuYnvvIzlnKjkvb/nlKjmqKHmnb/oh6rlrprkuYnml7bvvIzopoHms6jmhI9jb250cm9sVHlwZeW6lOivpeiuvue9ruS4ulRlbXBsYXRl5bm25LiU56Gu5L+dY29udHJvbE5hbWXkuI7mjIfku6TkuIrnmoRuenhDb250cm9s5bqU6K+l55u45ZCMXHJcbiAqL1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduengtY29uZmlndXJhYmxlLXF1ZXJ5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29uZmlndXJhYmxlLXF1ZXJ5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb25maWd1cmFibGUtcXVlcnkuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBleHBvcnRBczogJ056eENvbmZpZ3VyYWJsZVF1ZXJ5JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE56eENvbmZpZ3VyYWJsZVF1ZXJ5Q29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95XHJcbntcclxuICAvKiog6YWN572u6aG5ICovXHJcbiAgQElucHV0KCkgY29udHJvbHM6IEFycmF5PE56eFF1ZXJ5Q29udHJvbE9wdGlvbnM+ID0gW107XHJcbiAgLyoqIOafpeivouihqOWNleaOkuWIl+aWueW8jyAqL1xyXG4gIEBJbnB1dCgpIG56eEp1c3RpZnk6IE56SnVzdGlmeSA9ICdzdGFydCc7XHJcbiAgLyoqIOafpeivoumhuemXtOmalCAqL1xyXG4gIEBJbnB1dCgpIG56eEd1dHRlcjogbnVtYmVyID0gODtcclxuICAvKiog5LiA6KGM5bGV56S65aSa5bCR5p+l6K+i6aG5ICovXHJcbiAgQElucHV0KCkgbGluZU51bWJlcjogbnVtYmVyID0gMztcclxuICAvKiog5pON5L2c5oyJ6ZKu5omA5Y2g5qCF5qC85pWw77yMMjTliJnmjaLooYwgKi9cclxuICBASW5wdXQoKSBuenhCdG5TcGFuOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICAvKiog5Yid5aeL5YyW5pe277yM5Li75Yqo5p+l6K+iICovXHJcbiAgQElucHV0KCkgaW5pdFF1ZXJ5ID0gZmFsc2U7XHJcbiAgLyoqIOe8uuecgSDlm7rlrprlj4LmlbAgKi9cclxuICBASW5wdXQoKSBmaXhlZFBhcmFtcyA9IHt9O1xyXG5cclxuICAvKiog5p+l6K+i5pe25Lya6Kem5Y+R5oqb5Ye65p+l6K+i5Y+C5pWwICovXHJcbiAgQE91dHB1dCgpIHF1ZXJ5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxOenhRdWVyeVBhcmFtcz4oKTtcclxuICAvKiog6YeN572u5pe25Lya6Kem5Y+R5oqb5Ye65p+l6K+i5Y+C5pWwICovXHJcbiAgQE91dHB1dCgpIHJlc2V0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxOenhRdWVyeVBhcmFtcz4oKTtcclxuXHJcbiAgLyoqIOafpeivoue7hOS7tuWHuuWPgiovXHJcbiAgZ2V0IHF1ZXJ5UGFyYW1zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5UGFyYW1zO1xyXG4gIH1cclxuICBzZXQgcXVlcnlQYXJhbXModmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5fcXVlcnlQYXJhbXMgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBuenhDb2xsYXBzZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2xzLnNvbWUoKGkpID0+IGkuaGFzT3duUHJvcGVydHkoJ2NvbGxhcHNlJykpO1xyXG4gIH1cclxuXHJcbiAgLyoqIGZvcm0g6KGo5Y2VKi9cclxuICBxdWVyeUZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgbG9jYWxlITogTnp4UXVlcnlJMThuSW50ZXJmYWNlO1xyXG4gIGNvbGxhcHNlSWNvbjogc3RyaW5nID0gJ2Rvd24nO1xyXG4gIGNvbGxhcHNlVGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIHByaXZhdGUgX3F1ZXJ5UGFyYW1zOiBOenhRdWVyeVBhcmFtcyA9IHt9O1xyXG4gIC8qKiDph43nva7ml7bnlKjmnaXnu5nmn6Xor6LmoYbpu5jorqTlgLwgKi9cclxuICBwcml2YXRlIGRlZmF1bHRWYWx1ZTogTnp4UXVlcnlQYXJhbXMgPSB7fTtcclxuICBwcml2YXRlIGNhY2hlUGFyYW1zOiBOenhRdWVyeVBhcmFtcyA9IHt9O1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdxdWV5Rm9ybScpIHByaXZhdGUgcXVleUZvcm1FbCE6IEVsZW1lbnRSZWY8SFRNTEZvcm1FbGVtZW50PjtcclxuICBAQ29udGVudENoaWxkcmVuKE56eENvbnRyb2xEaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcclxuICBjb250cm9sVGVtcGxhdGVMaXN0ITogUXVlcnlMaXN0PE56eENvbnRyb2xEaXJlY3RpdmU+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaTE4bjogTnpJMThuU2VydmljZSxcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHtcclxuICAgIHRoaXMucXVlcnlGb3JtID0gdGhpcy5mYi5ncm91cCh7fSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snY29udHJvbHMnXSAmJiAhY2hhbmdlc1snY29udHJvbHMnXS5pc0ZpcnN0Q2hhbmdlKCkpIHtcclxuICAgICAgY29uc3QgY29udHJvbHMgPSBjaGFuZ2VzWydjb250cm9scyddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29udHJvbHMpKSB7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZUZvcm0oY29udHJvbHMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaTE4bi5sb2NhbGVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9jYWxlID0gdGhpcy5pMThuLmdldExvY2FsZURhdGEoJ1F1ZXJ5Jyk7XHJcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnF1ZXJ5Rm9ybS52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgICB0aGlzLl9xdWVyeVBhcmFtcyA9IHtcclxuICAgICAgICAgIC4uLnZhbCxcclxuICAgICAgICAgIC4uLnRoaXMuZml4ZWRQYXJhbXMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5xdWV5Rm9ybUVsKSB7XHJcbiAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pih0aGlzLnF1ZXlGb3JtRWwubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2goKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIOajgOafpeaYr+WQpuWQjOaXtuaMieS4i+S6hkN0cmzplK7vvIjlnKhXaW5kb3dzL0xpbnV45LiK77yJ5ZKMU+mUrlxyXG4gICAgICAgICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LmtleSA9PT0gJ3InKSB7XHJcbiAgICAgICAgICAgIC8vIOazqOaEj++8mmV2ZW50Lm1ldGFLZXnnlKjkuo7lhbzlrrlNYWPnmoRDb21tYW5k6ZSuXHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIOmYu+atoua1j+iniOWZqOm7mOiupOeahOS/neWtmOihjOS4ulxyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5nZW5lcmF0ZUZvcm0odGhpcy5jb250cm9scyk7XHJcblxyXG4gICAgaWYgKHRoaXMuaW5pdFF1ZXJ5KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiog6K6+572u5p+l6K+i5YC86L+b6KGM5Zue5pi+ICovXHJcbiAgc2V0UXVlcnlQYXJhbXMoY2FjaGVQYXJhbXM6IE56eFF1ZXJ5UGFyYW1zKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhY2hlUGFyYW1zID0gY2FjaGVQYXJhbXM7XHJcbiAgICB0aGlzLnF1ZXJ5Rm9ybS5wYXRjaFZhbHVlKGNhY2hlUGFyYW1zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOagueaNrmNvbnRyb2xOYW1l6K6+572uY29uZmln5YC8XHJcbiAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZVJlc2V0dGFibGUg5re75Yqg55qE6KGo5Y2V5o6n5Lu26buY6K6k5YC85piv5ZCm5Y+v5Lul6YeN572u77yM6buY6K6k5LiN5Y+v5LulXHJcbiAgICovXHJcbiAgc2V0Q29udHJvbChcclxuICAgIGNvbnRyb2xOYW1lOiBzdHJpbmcsXHJcbiAgICBjb25maWc6IFBhcnRpYWw8Tnp4UXVlcnlDb250cm9sT3B0aW9ucz4sXHJcbiAgICBkZWZhdWx0VmFsdWVSZXNldHRhYmxlID0gZmFsc2VcclxuICApOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woY29udHJvbE5hbWUpO1xyXG4gICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgT2JqZWN0LmtleXMoY29uZmlnKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICAoY29udHJvbCBhcyBhbnkpW2tleV0gPSAoY29uZmlnIGFzIGFueSlba2V5XTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZ2VuZXJhdGVDb250cm9sKGNvbnRyb2wsIGRlZmF1bHRWYWx1ZVJlc2V0dGFibGUpO1xyXG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yqo5oCB5re75Yqg5o6n5Lu2XHJcbiAgICogQHBhcmFtIGNvbmZpZyDphY3nva7poblcclxuICAgKiBAcGFyYW0gcG9zaXRpb24g5re75Yqg5L2N572uIOS4jeS8oOS4uuacq+WwvlxyXG4gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWVSZXNldHRhYmxlIOa3u+WKoOeahOihqOWNleaOp+S7tum7mOiupOWAvOaYr+WQpuWPr+S7pemHjee9ru+8jOm7mOiupOS4jeWPr+S7pVxyXG4gICAqL1xyXG4gIGFkZENvbnRyb2woXHJcbiAgICBjb25maWc6IE56eFF1ZXJ5Q29udHJvbE9wdGlvbnMsXHJcbiAgICBwb3NpdGlvbj86IG51bWJlciB8IHVuZGVmaW5lZCxcclxuICAgIGRlZmF1bHRWYWx1ZVJlc2V0dGFibGUgPSBmYWxzZVxyXG4gICk6IHZvaWQge1xyXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChjb25maWcuY29udHJvbE5hbWUpO1xyXG4gICAgaWYgKCFjb250cm9sKSB7XHJcbiAgICAgIGlmIChjb25maWcgJiYgY29uZmlnWydoYXNPd25Qcm9wZXJ0eSddKCdjb2xsYXBzZScpKSB7XHJcbiAgICAgICAgY29uc3QgaGFzQ29sbGFwc2VQcm9wZXJ0eSA9IHRoaXMuY29udHJvbHMuc29tZSgoaSkgPT5cclxuICAgICAgICAgIGlbJ2hhc093blByb3BlcnR5J10oJ2NvbGxhcHNlJylcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChoYXNDb2xsYXBzZVByb3BlcnR5KSB7XHJcbiAgICAgICAgICBjb25maWcuY29sbGFwc2UgPSB0aGlzLmNvbnRyb2xzLnNvbWUoKGkpID0+IGkuY29sbGFwc2UgPT09IHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5nZW5lcmF0ZUNvbnRyb2woY29uZmlnLCBkZWZhdWx0VmFsdWVSZXNldHRhYmxlKTtcclxuXHJcbiAgICAgIGlmIChwb3NpdGlvbiA9PT0gdm9pZCAwIHx8IHBvc2l0aW9uID09PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9scy5wdXNoKGNvbmZpZyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9scy5zcGxpY2UocG9zaXRpb24gLSAxLCAwLCBjb25maWcpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2FsY3VsYXRlVGV4dCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgYFRoZSBjb250cm9sIG5hbWU6ICcke2NvbmZpZy5jb250cm9sTmFtZX0nIGFscmVhZHkgZXhpc3RzIWA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmoLnmja7mjqfku7blkI3liKDpmaTmjqfku7ZcclxuICAgKi9cclxuICByZW1vdmVDb250cm9sKGNvbnRyb2xOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woY29udHJvbE5hbWUpO1xyXG4gICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgdGhpcy5xdWVyeUZvcm0ucmVtb3ZlQ29udHJvbChjb250cm9sTmFtZSk7XHJcbiAgICAgIHRoaXMuY29udHJvbHMgPSB0aGlzLmNvbnRyb2xzLmZpbHRlcihcclxuICAgICAgICAoYykgPT4gYy5jb250cm9sTmFtZSAhPT0gY29udHJvbE5hbWVcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5jYWxjdWxhdGVUZXh0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBgVGhlIGNvbnRyb2wgbmFtZTogJyR7Y29udHJvbE5hbWV9JyBub3QgZmluZCFgO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qC55o2uY29udHJvbE5hbWXojrflj5Zjb25maWfpoblcclxuICAgKi9cclxuICBnZXRDb250cm9sKFxyXG4gICAgY29udHJvbE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZFxyXG4gICk6IE56eFF1ZXJ5Q29udHJvbE9wdGlvbnMgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbHMuZmluZCgoY29uZmlnKSA9PiBjb25maWcuY29udHJvbE5hbWUgPT09IGNvbnRyb2xOYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOajgOe0oue7meWumuaOp+S7tuWQjeensOaIlui3r+W+hOeahOWtkOaOp+S7tuOAglxyXG4gICAqIOi/meS4qiBnZXRGb3JtQ29udHJvbCDnrb7lkI3mlK/mjIHlrZfnrKbkuLLlkowgY29uc3Qg5pWw57uE77yILmdldEZvcm1Db250cm9sKFsnZm9vJywgJ2JhciddIGFzIGNvbnN0Ke+8iVxyXG4gICAqL1xyXG4gIGdldEZvcm1Db250cm9sKFxyXG4gICAgcGF0aDogc3RyaW5nIHwgcmVhZG9ubHkgKHN0cmluZyB8IG51bWJlcilbXVxyXG4gICk6IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLnF1ZXJ5Rm9ybS5nZXQocGF0aCk7XHJcbiAgfVxyXG5cclxuICAvKiog5p+l6K+iICovXHJcbiAgc2VhcmNoKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucXVlcnlGb3JtLmludmFsaWQpIHtcclxuICAgICAgdXBkYXRlQ29udHJvbFN0YXR1cyh0aGlzLnF1ZXJ5Rm9ybSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucXVlcnlDaGFuZ2UuZW1pdCh0aGlzLl9xdWVyeVBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICAvKiog6YeN572uICovXHJcbiAgcmVzZXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnF1ZXJ5Rm9ybS5yZXNldCh0aGlzLmRlZmF1bHRWYWx1ZSk7XHJcbiAgICB0aGlzLnJlc2V0Q2hhbmdlLmVtaXQodGhpcy5fcXVlcnlQYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgLyoq5bGV5byA44CB5pS26LW3Ki9cclxuICB0b2dnbGVDb2xsYXBzZSgpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmNvbnRyb2xzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbnRyb2xzW2luZGV4XTtcclxuICAgICAgY29uc3QgaGFzUHJvcGVydHkgPSBjb25maWcuaGFzT3duUHJvcGVydHkoJ2NvbGxhcHNlJyk7XHJcbiAgICAgIGlmIChoYXNQcm9wZXJ0eSAmJiBjb25maWcuY29sbGFwc2UpIHtcclxuICAgICAgICBjb25maWcuY29sbGFwc2UgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIGlmIChoYXNQcm9wZXJ0eSAmJiAhY29uZmlnLmNvbGxhcHNlKSB7XHJcbiAgICAgICAgY29uZmlnLmNvbGxhcHNlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jYWxjdWxhdGVUZXh0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVUZXh0KCkge1xyXG4gICAgaWYgKHRoaXMuY29udHJvbHMuc29tZSgoaSkgPT4gaS5jb2xsYXBzZSA9PT0gdHJ1ZSkpIHtcclxuICAgICAgdGhpcy5jb2xsYXBzZUljb24gPSAnZG93bic7XHJcbiAgICAgIHRoaXMuY29sbGFwc2VUZXh0ID0gdGhpcy5sb2NhbGUuZXhwYW5kO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb2xsYXBzZUljb24gPSAndXAnO1xyXG4gICAgICB0aGlzLmNvbGxhcHNlVGV4dCA9IHRoaXMubG9jYWxlLmNvbGxhcHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIC8qKiDmuIXnqbrooajljZXmjqfku7YgKi9cclxuICBwcml2YXRlIGNsZWFyRm9ybUNvbnRyb2woKTogdm9pZCB7XHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLnF1ZXJ5Rm9ybS5jb250cm9scykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgIHRoaXMucXVlcnlGb3JtLnJlbW92ZUNvbnRyb2woa2V5KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIOeUn+aIkCBxdWVyeUZvcm0g6KGo5Y2VICovXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUZvcm0oY29udHJvbENvbmZpZ3M6IEFycmF5PE56eFF1ZXJ5Q29udHJvbE9wdGlvbnM+KTogdm9pZCB7XHJcbiAgICB0aGlzLmNsZWFyRm9ybUNvbnRyb2woKTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb250cm9sQ29uZmlncykge1xyXG4gICAgICB0aGlzLmdlbmVyYXRlQ29udHJvbChjb25maWcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kZWZhdWx0VmFsdWUgPSB0aGlzLnF1ZXJ5Rm9ybS5nZXRSYXdWYWx1ZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLmNhY2hlUGFyYW1zKSB7XHJcbiAgICAgIC8vIOe8k+WtmOWbnuaYvuafpeivouadoeS7tlxyXG4gICAgICB0aGlzLnF1ZXJ5Rm9ybS5wYXRjaFZhbHVlKHRoaXMuY2FjaGVQYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2FsY3VsYXRlVGV4dCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gY29udHJvbENvbmZpZyBjb250cm9s6YWN572uXHJcbiAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZVJlc2V0dGFibGUg5re75Yqg55qE6KGo5Y2V5o6n5Lu26buY6K6k5YC85piv5ZCm5Y+v5Lul6YeN572u77yM6buY6K6k5LiN5Y+v5LulXHJcbiAgICpcclxuICAgKiAxLiDnlJ/miJDljZXkuKrooajljZXmjqfku7blubblsIblhbbmt7vliqDliLBxdWVyeUZvcm3kuK1cclxuICAgKiAyLiDlpoLmnpzmsqHmnIl0ZW1wbGF0ZVJlZuagueaNrmNvbnRyb2xOYW1l6I635Y+W5oqV5b2x55qEdGVtcGxhdGVMaXN05Lit55qEdGVtcGxhdGVSZWbnu5kgdGVtcGxhdGVSZWYg6LWL5YC8XHJcbiAgICpcclxuICAgKiovXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUNvbnRyb2woXHJcbiAgICBjb25maWc6IE56eFF1ZXJ5Q29udHJvbE9wdGlvbnMsXHJcbiAgICBkZWZhdWx0VmFsdWVSZXNldHRhYmxlID0gZmFsc2VcclxuICApIHtcclxuICAgIGlmIChjb25maWcuY29udHJvbE5hbWUpIHtcclxuICAgICAgaWYgKCFjb25maWc/LnRlbXBsYXRlUmVmKSB7XHJcbiAgICAgICAgY29uc3QgZCA9IHRoaXMuY29udHJvbFRlbXBsYXRlTGlzdC5maW5kKFxyXG4gICAgICAgICAgKGQpID0+IGQubnp4Q29udHJvbCA9PT0gY29uZmlnLmNvbnRyb2xOYW1lXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoZCkge1xyXG4gICAgICAgICAgY29uZmlnLnRlbXBsYXRlUmVmID0gZC50ZW1wbGF0ZVJlZjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucXVlcnlGb3JtLnNldENvbnRyb2woXHJcbiAgICAgICAgY29uZmlnLmNvbnRyb2xOYW1lLFxyXG4gICAgICAgIGNvbmZpZy5jb250cm9sSW5zdGFuY2UgPz8gdGhpcy5mYi5jb250cm9sKGNvbmZpZy5kZWZhdWx0ID8/IG51bGwpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAoIWRlZmF1bHRWYWx1ZVJlc2V0dGFibGUpIHtcclxuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5xdWVyeUZvcm0uZ2V0KGNvbmZpZy5jb250cm9sTmFtZSk7XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSB7XHJcbiAgICAgICAgICAuLi50aGlzLmRlZmF1bHRWYWx1ZSxcclxuICAgICAgICAgIFtjb25maWcuY29udHJvbE5hbWVdOiBjb250cm9sLnZhbHVlLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGZvcm0gI3F1ZXlGb3JtIGNsYXNzPVwibnp4LXF1ZXJ5LWNvbnRhaW5lclwiIG56LWZvcm0gW2Zvcm1Hcm91cF09XCJxdWVyeUZvcm1cIj5cbiAgPGRpdiBuei1yb3cgW256R3V0dGVyXT1cIm56eEd1dHRlclwiIFtuekp1c3RpZnldPVwibnp4SnVzdGlmeVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbmZpZyBvZiBjb250cm9sczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIiFjb25maWcuaGlkZGVuXCJcbiAgICAgICAgbnotY29sXG4gICAgICAgIFtuelNwYW5dPVwiY29uZmlnLm56eFNwYW4gfHwgMjQgLyBsaW5lTnVtYmVyXCJcbiAgICAgICAgW2hpZGRlbl09XCJjb25maWcuY29sbGFwc2VcIlxuICAgICAgICBbbnpPcmRlcl09XCJpXCJcbiAgICAgID5cbiAgICAgICAgPG56eC1jb25maWd1cmFibGUtcXVlcnktaXRlbVxuICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmNvbnRyb2xOYW1lXCJcbiAgICAgICAgICBbZm9ybV09XCJxdWVyeUZvcm1cIlxuICAgICAgICAgIFtjb250cm9sXT1cImNvbmZpZ1wiXG4gICAgICAgID48L256eC1jb25maWd1cmFibGUtcXVlcnktaXRlbT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdlxuICAgICAgW256T3JkZXJdPVwiY29udHJvbHMubGVuZ3RoXCJcbiAgICAgIGNsYXNzPVwibnp4LXF1ZXJ5LWJ0blwiXG4gICAgICBuei1jb2xcbiAgICAgIFtuelNwYW5dPVwibnp4QnRuU3BhbiB8fCAyNCAvIGxpbmVOdW1iZXJcIlxuICAgID5cbiAgICAgIDxkaXYgbnotcm93IG56SnVzdGlmeT1cImVuZFwiIG56QWxpZ249XCJtaWRkbGVcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG56LWJ1dHRvblxuICAgICAgICAgIG56VHlwZT1cInByaW1hcnlcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIHRpdGxlPVwiRW50ZXJcIlxuICAgICAgICAgIChjbGljayk9XCJzZWFyY2goKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBsb2NhbGVbJ3F1ZXJ5J10gfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbnotYnV0dG9uIHR5cGU9XCJidXR0b25cIiB0aXRsZT1cImN0cmwrclwiIChjbGljayk9XCJyZXNldCgpXCI+XG4gICAgICAgICAge3sgbG9jYWxlWydyZXNldCddIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxhXG4gICAgICAgICAgKm5nSWY9XCJuenhDb2xsYXBzZVwiXG4gICAgICAgICAgbnotYnV0dG9uXG4gICAgICAgICAgbnpUeXBlPVwibGlua1wiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgY29sbGFwc2VUZXh0IH19XG4gICAgICAgICAgPGkgbnotaWNvbiBbbnpUeXBlXT1cImNvbGxhcHNlSWNvblwiPjwvaT5cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
|
|
309
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhYmxlLXF1ZXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY29uZmlndXJhYmxlLXF1ZXJ5L2NvbmZpZ3VyYWJsZS1xdWVyeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NvbmZpZ3VyYWJsZS1xdWVyeS9jb25maWd1cmFibGUtcXVlcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUduRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBRzFEOzs7R0FHRztBQVNILE1BQU0sT0FBTyw2QkFBNkI7SUF5QnhDLGdCQUFnQjtJQUNoQixJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksV0FBVyxDQUFDLEtBQVU7UUFDeEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELHVCQUF1QjtJQUN2QixJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQWtCRCxZQUNVLElBQW1CLEVBQ25CLEVBQWUsRUFDZixFQUFxQjtRQUZyQixTQUFJLEdB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dCB7XHJcbiAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgTnp4UXVlcnlJMThuSW50ZXJmYWNlIH0gZnJvbSAnbmctem9ycm8tYW50ZC1leHRlbnNpb24vaTE4bic7XHJcbmltcG9ydCB7IHVwZGF0ZUNvbnRyb2xTdGF0dXMgfSBmcm9tICduZy16b3Jyby1hbnRkLWV4dGVuc2lvbi91dGlsJztcclxuaW1wb3J0IHsgTnpKdXN0aWZ5IH0gZnJvbSAnbmctem9ycm8tYW50ZC9ncmlkJztcclxuaW1wb3J0IHsgTnpJMThuU2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvaTE4bic7XHJcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE56eENvbnRyb2xEaXJlY3RpdmUgfSBmcm9tICcuL2NvbnRyb2wuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTnp4UXVlcnlDb250cm9sT3B0aW9ucywgTnp4UXVlcnlQYXJhbXMgfSBmcm9tICcuL3R5cGUnO1xyXG5cclxuLyoqXHJcbiAqIOafpeivoue7hOS7tlxyXG4gKiDmlK/mjIHmqKHmnb/oh6rlrprkuYnvvIzlnKjkvb/nlKjmqKHmnb/oh6rlrprkuYnml7bvvIzopoHms6jmhI9jb250cm9sVHlwZeW6lOivpeiuvue9ruS4ulRlbXBsYXRl5bm25LiU56Gu5L+dY29udHJvbE5hbWXkuI7mjIfku6TkuIrnmoRuenhDb250cm9s5bqU6K+l55u45ZCMXHJcbiAqL1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduengtY29uZmlndXJhYmxlLXF1ZXJ5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29uZmlndXJhYmxlLXF1ZXJ5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb25maWd1cmFibGUtcXVlcnkuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBleHBvcnRBczogJ056eENvbmZpZ3VyYWJsZVF1ZXJ5JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE56eENvbmZpZ3VyYWJsZVF1ZXJ5Q29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95XHJcbntcclxuICAvKipcclxuICAgKiDphY3nva7pobnnlKjmnaXnlJ/miJDmn6Xor6LooajljZVcclxuICAgKi9cclxuICBASW5wdXQoKSBjb250cm9sczogQXJyYXk8Tnp4UXVlcnlDb250cm9sT3B0aW9ucz4gPSBbXTtcclxuICAvKiog5p+l6K+i6KGo5Y2V5o6S5YiX5pa55byP6buY6K6kc3RhcnQgKi9cclxuICBASW5wdXQoKSBuenhKdXN0aWZ5OiBOekp1c3RpZnkgPSAnc3RhcnQnO1xyXG4gIC8qKiDmn6Xor6Lpobnpl7TpmpTpu5jorqTkuLo4ICovXHJcbiAgQElucHV0KCkgbnp4R3V0dGVyOiBudW1iZXIgPSA4O1xyXG4gIC8qKiDkuIDooYzlsZXnpLrlpJrlsJHmn6Xor6Lpobnpu5jorqTlsZXnpLoz5LiqICovXHJcbiAgQElucHV0KCkgbGluZU51bWJlcjogbnVtYmVyID0gMztcclxuICAvKiog5pON5L2c5oyJ6ZKu5omA5Y2g5qCF5qC85pWw77yMMjTliJnmjaLooYwgKi9cclxuICBASW5wdXQoKSBuenhCdG5TcGFuOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICAvKiog5Yid5aeL5YyW5pe277yM5piv5ZCm5Li75Yqo6Kem5Y+R5p+l6K+iICovXHJcbiAgQElucHV0KCkgaW5pdFF1ZXJ5ID0gZmFsc2U7XHJcbiAgLyoqIOe8uuecgSDlm7rlrprlj4LmlbDkvJrlm7rlrprmkLrluKblnKjmipvlh7rkuovku7bkuK0gKi9cclxuICBASW5wdXQoKSBmaXhlZFBhcmFtcyA9IHt9O1xyXG5cclxuICAvKiog5p+l6K+i5pe25Lya6Kem5Y+R5oqb5Ye65p+l6K+i5Y+C5pWwICovXHJcbiAgQE91dHB1dCgpIHF1ZXJ5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxOenhRdWVyeVBhcmFtcz4oKTtcclxuICAvKiog6YeN572u5pe25Lya6Kem5Y+R5oqb5Ye65p+l6K+i5Y+C5pWwICovXHJcbiAgQE91dHB1dCgpIHJlc2V0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxOenhRdWVyeVBhcmFtcz4oKTtcclxuXHJcbiAgLyoqIOe7hOS7tuacgOe7iOeahOafpeivouWPguaVsCAqL1xyXG4gIGdldCBxdWVyeVBhcmFtcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9xdWVyeVBhcmFtcztcclxuICB9XHJcbiAgc2V0IHF1ZXJ5UGFyYW1zKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuX3F1ZXJ5UGFyYW1zID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKiog5Yik5pat5b2T5YmN57uE5Lu25piv5ZCm5bGV56S65bGV5byA5oqY5Y+g5oyJ6ZKuICovXHJcbiAgZ2V0IG56eENvbGxhcHNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbHMuc29tZSgoaSkgPT4gaS5oYXNPd25Qcm9wZXJ0eSgnY29sbGFwc2UnKSk7XHJcbiAgfVxyXG5cclxuICAvKiog5YaF572uIGZvcm0g5p+l6K+i6KGo5Y2V5a6e5L6LICovXHJcbiAgcXVlcnlGb3JtITogRm9ybUdyb3VwO1xyXG4gIGxvY2FsZSE6IE56eFF1ZXJ5STE4bkludGVyZmFjZTtcclxuICBjb2xsYXBzZUljb246IHN0cmluZyA9ICdkb3duJztcclxuICBjb2xsYXBzZVRleHQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBwcml2YXRlIF9xdWVyeVBhcmFtczogTnp4UXVlcnlQYXJhbXMgPSB7fTtcclxuICAvKiog6YeN572u5pe255So5p2l57uZ5p+l6K+i5qGG6buY6K6k5YC8ICovXHJcbiAgcHJpdmF0ZSBkZWZhdWx0VmFsdWU6IE56eFF1ZXJ5UGFyYW1zID0ge307XHJcbiAgcHJpdmF0ZSBjYWNoZVBhcmFtczogTnp4UXVlcnlQYXJhbXMgPSB7fTtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgncXVleUZvcm0nKSBwcml2YXRlIHF1ZXlGb3JtRWwhOiBFbGVtZW50UmVmPEhUTUxGb3JtRWxlbWVudD47XHJcbiAgQENvbnRlbnRDaGlsZHJlbihOenhDb250cm9sRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXHJcbiAgY29udHJvbFRlbXBsYXRlTGlzdCE6IFF1ZXJ5TGlzdDxOenhDb250cm9sRGlyZWN0aXZlPjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGkxOG46IE56STE4blNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgICB0aGlzLnF1ZXJ5Rm9ybSA9IHRoaXMuZmIuZ3JvdXAoe30pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbnRyb2xzJ10gJiYgIWNoYW5nZXNbJ2NvbnRyb2xzJ10uaXNGaXJzdENoYW5nZSgpKSB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2xzID0gY2hhbmdlc1snY29udHJvbHMnXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbnRyb2xzKSkge1xyXG4gICAgICAgIHRoaXMuZ2VuZXJhdGVGb3JtKGNvbnRyb2xzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmkxOG4ubG9jYWxlQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmxvY2FsZSA9IHRoaXMuaTE4bi5nZXRMb2NhbGVEYXRhKCdRdWVyeScpO1xyXG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5xdWVyeUZvcm0udmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fcXVlcnlQYXJhbXMgPSB7XHJcbiAgICAgICAgICAuLi52YWwsXHJcbiAgICAgICAgICAuLi50aGlzLmZpeGVkUGFyYW1zLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucXVleUZvcm1FbCkge1xyXG4gICAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4odGhpcy5xdWV5Rm9ybUVsLm5hdGl2ZUVsZW1lbnQsICdrZXlkb3duJylcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyDmo4Dmn6XmmK/lkKblkIzml7bmjInkuIvkuoZDdHJs6ZSu77yI5ZyoV2luZG93cy9MaW51eOS4iu+8ieWSjFPplK5cclxuICAgICAgICAgIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkgPT09ICdyJykge1xyXG4gICAgICAgICAgICAvLyDms6jmhI/vvJpldmVudC5tZXRhS2V555So5LqO5YW85a65TWFj55qEQ29tbWFuZOmUrlxyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyDpmLvmraLmtY/op4jlmajpu5jorqTnmoTkv53lrZjooYzkuLpcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2VuZXJhdGVGb3JtKHRoaXMuY29udHJvbHMpO1xyXG5cclxuICAgIGlmICh0aGlzLmluaXRRdWVyeSkge1xyXG4gICAgICB0aGlzLnNlYXJjaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIOiuvue9ruafpeivouWAvOi/m+ihjOWbnuaYviAqL1xyXG4gIHNldFF1ZXJ5UGFyYW1zKGNhY2hlUGFyYW1zOiBOenhRdWVyeVBhcmFtcyk6IHZvaWQge1xyXG4gICAgdGhpcy5jYWNoZVBhcmFtcyA9IGNhY2hlUGFyYW1zO1xyXG4gICAgdGhpcy5xdWVyeUZvcm0ucGF0Y2hWYWx1ZShjYWNoZVBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmoLnmja5jb250cm9sTmFtZeiuvue9rmNvbmZpZ+WAvFxyXG4gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWVSZXNldHRhYmxlIOa3u+WKoOeahOihqOWNleaOp+S7tum7mOiupOWAvOaYr+WQpuWPr+S7pemHjee9ru+8jOm7mOiupOS4jeWPr+S7pVxyXG4gICAqL1xyXG4gIHNldENvbnRyb2woXHJcbiAgICBjb250cm9sTmFtZTogc3RyaW5nLFxyXG4gICAgY29uZmlnOiBQYXJ0aWFsPE56eFF1ZXJ5Q29udHJvbE9wdGlvbnM+LFxyXG4gICAgZGVmYXVsdFZhbHVlUmVzZXR0YWJsZSA9IGZhbHNlXHJcbiAgKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRDb250cm9sKGNvbnRyb2xOYW1lKTtcclxuICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKGNvbmZpZykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgKGNvbnRyb2wgYXMgYW55KVtrZXldID0gKGNvbmZpZyBhcyBhbnkpW2tleV07XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmdlbmVyYXRlQ29udHJvbChjb250cm9sLCBkZWZhdWx0VmFsdWVSZXNldHRhYmxlKTtcclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWKqOaAgea3u+WKoOaOp+S7tlxyXG4gICAqIEBwYXJhbSBjb25maWcg6YWN572u6aG5XHJcbiAgICogQHBhcmFtIHBvc2l0aW9uIOa3u+WKoOS9jee9riDkuI3kvKDkuLrmnKvlsL5cclxuICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlUmVzZXR0YWJsZSDmt7vliqDnmoTooajljZXmjqfku7bpu5jorqTlgLzmmK/lkKblj6/ku6Xph43nva7vvIzpu5jorqTkuI3lj6/ku6VcclxuICAgKi9cclxuICBhZGRDb250cm9sKFxyXG4gICAgY29uZmlnOiBOenhRdWVyeUNvbnRyb2xPcHRpb25zLFxyXG4gICAgcG9zaXRpb24/OiBudW1iZXIgfCB1bmRlZmluZWQsXHJcbiAgICBkZWZhdWx0VmFsdWVSZXNldHRhYmxlID0gZmFsc2VcclxuICApOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woY29uZmlnLmNvbnRyb2xOYW1lKTtcclxuICAgIGlmICghY29udHJvbCkge1xyXG4gICAgICBpZiAoY29uZmlnICYmIGNvbmZpZ1snaGFzT3duUHJvcGVydHknXSgnY29sbGFwc2UnKSkge1xyXG4gICAgICAgIGNvbnN0IGhhc0NvbGxhcHNlUHJvcGVydHkgPSB0aGlzLmNvbnRyb2xzLnNvbWUoKGkpID0+XHJcbiAgICAgICAgICBpWydoYXNPd25Qcm9wZXJ0eSddKCdjb2xsYXBzZScpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoaGFzQ29sbGFwc2VQcm9wZXJ0eSkge1xyXG4gICAgICAgICAgY29uZmlnLmNvbGxhcHNlID0gdGhpcy5jb250cm9scy5zb21lKChpKSA9PiBpLmNvbGxhcHNlID09PSB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZ2VuZXJhdGVDb250cm9sKGNvbmZpZywgZGVmYXVsdFZhbHVlUmVzZXR0YWJsZSk7XHJcblxyXG4gICAgICBpZiAocG9zaXRpb24gPT09IHZvaWQgMCB8fCBwb3NpdGlvbiA9PT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuY29udHJvbHMucHVzaChjb25maWcpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29udHJvbHMuc3BsaWNlKHBvc2l0aW9uIC0gMSwgMCwgY29uZmlnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNhbGN1bGF0ZVRleHQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IGBUaGUgY29udHJvbCBuYW1lOiAnJHtjb25maWcuY29udHJvbE5hbWV9JyBhbHJlYWR5IGV4aXN0cyFgO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qC55o2u5o6n5Lu25ZCN5Yig6Zmk5o6n5Lu2XHJcbiAgICovXHJcbiAgcmVtb3ZlQ29udHJvbChjb250cm9sTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRDb250cm9sKGNvbnRyb2xOYW1lKTtcclxuICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgIHRoaXMucXVlcnlGb3JtLnJlbW92ZUNvbnRyb2woY29udHJvbE5hbWUpO1xyXG4gICAgICB0aGlzLmNvbnRyb2xzID0gdGhpcy5jb250cm9scy5maWx0ZXIoXHJcbiAgICAgICAgKGMpID0+IGMuY29udHJvbE5hbWUgIT09IGNvbnRyb2xOYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuY2FsY3VsYXRlVGV4dCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgYFRoZSBjb250cm9sIG5hbWU6ICcke2NvbnRyb2xOYW1lfScgbm90IGZpbmQhYDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOagueaNrmNvbnRyb2xOYW1l6I635Y+WY29uZmln6aG5XHJcbiAgICovXHJcbiAgZ2V0Q29udHJvbChcclxuICAgIGNvbnRyb2xOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWRcclxuICApOiBOenhRdWVyeUNvbnRyb2xPcHRpb25zIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2xzLmZpbmQoKGNvbmZpZykgPT4gY29uZmlnLmNvbnRyb2xOYW1lID09PSBjb250cm9sTmFtZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmo4DntKLnu5nlrprmjqfku7blkI3np7DmiJbot6/lvoTnmoTlrZDmjqfku7bjgIJcclxuICAgKiDov5nkuKogZ2V0Rm9ybUNvbnRyb2wg562+5ZCN5pSv5oyB5a2X56ym5Liy5ZKMIGNvbnN0IOaVsOe7hO+8iC5nZXRGb3JtQ29udHJvbChbJ2ZvbycsICdiYXInXSBhcyBjb25zdCnvvIlcclxuICAgKi9cclxuICBnZXRGb3JtQ29udHJvbChcclxuICAgIHBhdGg6IHN0cmluZyB8IHJlYWRvbmx5IChzdHJpbmcgfCBudW1iZXIpW11cclxuICApOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+IHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5xdWVyeUZvcm0uZ2V0KHBhdGgpO1xyXG4gIH1cclxuXHJcbiAgLyoqIOafpeivoiAqL1xyXG4gIHNlYXJjaCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnF1ZXJ5Rm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHVwZGF0ZUNvbnRyb2xTdGF0dXModGhpcy5xdWVyeUZvcm0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnF1ZXJ5Q2hhbmdlLmVtaXQodGhpcy5fcXVlcnlQYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqIOmHjee9riAqL1xyXG4gIHJlc2V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5xdWVyeUZvcm0ucmVzZXQodGhpcy5kZWZhdWx0VmFsdWUpO1xyXG4gICAgdGhpcy5yZXNldENoYW5nZS5lbWl0KHRoaXMuX3F1ZXJ5UGFyYW1zKTtcclxuICB9XHJcblxyXG4gIC8qKuWxleW8gOOAgeaUtui1tyovXHJcbiAgdG9nZ2xlQ29sbGFwc2UoKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5jb250cm9scy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5jb250cm9sc1tpbmRleF07XHJcbiAgICAgIGNvbnN0IGhhc1Byb3BlcnR5ID0gY29uZmlnLmhhc093blByb3BlcnR5KCdjb2xsYXBzZScpO1xyXG4gICAgICBpZiAoaGFzUHJvcGVydHkgJiYgY29uZmlnLmNvbGxhcHNlKSB7XHJcbiAgICAgICAgY29uZmlnLmNvbGxhcHNlID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSBpZiAoaGFzUHJvcGVydHkgJiYgIWNvbmZpZy5jb2xsYXBzZSkge1xyXG4gICAgICAgIGNvbmZpZy5jb2xsYXBzZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY2FsY3VsYXRlVGV4dCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIC8qKiDorqHnrpflsZXlvIDmlLbotbdpY29u44CB5paH5qGIICovXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVUZXh0KCkge1xyXG4gICAgaWYgKHRoaXMuY29udHJvbHMuc29tZSgoaSkgPT4gaS5jb2xsYXBzZSA9PT0gdHJ1ZSkpIHtcclxuICAgICAgdGhpcy5jb2xsYXBzZUljb24gPSAnZG93bic7XHJcbiAgICAgIHRoaXMuY29sbGFwc2VUZXh0ID0gdGhpcy5sb2NhbGUuZXhwYW5kO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb2xsYXBzZUljb24gPSAndXAnO1xyXG4gICAgICB0aGlzLmNvbGxhcHNlVGV4dCA9IHRoaXMubG9jYWxlLmNvbGxhcHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIC8qKiDmuIXnqbrooajljZXmjqfku7YgKi9cclxuICBwcml2YXRlIGNsZWFyRm9ybUNvbnRyb2woKTogdm9pZCB7XHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLnF1ZXJ5Rm9ybS5jb250cm9scykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgIHRoaXMucXVlcnlGb3JtLnJlbW92ZUNvbnRyb2woa2V5KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIOeUn+aIkCBxdWVyeUZvcm0g6KGo5Y2VICovXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUZvcm0oY29udHJvbENvbmZpZ3M6IEFycmF5PE56eFF1ZXJ5Q29udHJvbE9wdGlvbnM+KTogdm9pZCB7XHJcbiAgICB0aGlzLmNsZWFyRm9ybUNvbnRyb2woKTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb250cm9sQ29uZmlncykge1xyXG4gICAgICB0aGlzLmdlbmVyYXRlQ29udHJvbChjb25maWcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kZWZhdWx0VmFsdWUgPSB0aGlzLnF1ZXJ5Rm9ybS5nZXRSYXdWYWx1ZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLmNhY2hlUGFyYW1zKSB7XHJcbiAgICAgIC8vIOe8k+WtmOWbnuaYvuafpeivouadoeS7tlxyXG4gICAgICB0aGlzLnF1ZXJ5Rm9ybS5wYXRjaFZhbHVlKHRoaXMuY2FjaGVQYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2FsY3VsYXRlVGV4dCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gY29udHJvbENvbmZpZyBjb250cm9s6YWN572uXHJcbiAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZVJlc2V0dGFibGUg5re75Yqg55qE6KGo5Y2V5o6n5Lu26buY6K6k5YC85piv5ZCm5Y+v5Lul6YeN572u77yM6buY6K6k5LiN5Y+v5LulXHJcbiAgICpcclxuICAgKiAxLiDnlJ/miJDljZXkuKrooajljZXmjqfku7blubblsIblhbbmt7vliqDliLBxdWVyeUZvcm3kuK1cclxuICAgKiAyLiDlpoLmnpzmsqHmnIl0ZW1wbGF0ZVJlZuagueaNrmNvbnRyb2xOYW1l6I635Y+W5oqV5b2x55qEdGVtcGxhdGVMaXN05Lit55qEdGVtcGxhdGVSZWbnu5kgdGVtcGxhdGVSZWYg6LWL5YC8XHJcbiAgICpcclxuICAgKiovXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUNvbnRyb2woXHJcbiAgICBjb25maWc6IE56eFF1ZXJ5Q29udHJvbE9wdGlvbnMsXHJcbiAgICBkZWZhdWx0VmFsdWVSZXNldHRhYmxlID0gZmFsc2VcclxuICApIHtcclxuICAgIGlmIChjb25maWcuY29udHJvbE5hbWUpIHtcclxuICAgICAgaWYgKCFjb25maWc/LnRlbXBsYXRlUmVmKSB7XHJcbiAgICAgICAgY29uc3QgZCA9IHRoaXMuY29udHJvbFRlbXBsYXRlTGlzdC5maW5kKFxyXG4gICAgICAgICAgKGQpID0+IGQubnp4Q29udHJvbCA9PT0gY29uZmlnLmNvbnRyb2xOYW1lXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoZCkge1xyXG4gICAgICAgICAgY29uZmlnLnRlbXBsYXRlUmVmID0gZC50ZW1wbGF0ZVJlZjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucXVlcnlGb3JtLnNldENvbnRyb2woXHJcbiAgICAgICAgY29uZmlnLmNvbnRyb2xOYW1lLFxyXG4gICAgICAgIGNvbmZpZy5jb250cm9sSW5zdGFuY2UgPz8gdGhpcy5mYi5jb250cm9sKGNvbmZpZy5kZWZhdWx0ID8/IG51bGwpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAoIWRlZmF1bHRWYWx1ZVJlc2V0dGFibGUpIHtcclxuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5xdWVyeUZvcm0uZ2V0KGNvbmZpZy5jb250cm9sTmFtZSk7XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSB7XHJcbiAgICAgICAgICAuLi50aGlzLmRlZmF1bHRWYWx1ZSxcclxuICAgICAgICAgIFtjb25maWcuY29udHJvbE5hbWVdOiBjb250cm9sLnZhbHVlLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPG56LWNhcmQ+XG4gIDxmb3JtICNxdWV5Rm9ybSBjbGFzcz1cIm56eC1xdWVyeS1jb250YWluZXJcIiBuei1mb3JtIFtmb3JtR3JvdXBdPVwicXVlcnlGb3JtXCI+XG4gICAgPGRpdiBuei1yb3cgW256R3V0dGVyXT1cIm56eEd1dHRlclwiIFtuekp1c3RpZnldPVwibnp4SnVzdGlmeVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29uZmlnIG9mIGNvbnRyb2xzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cIiFjb25maWcuaGlkZGVuXCJcbiAgICAgICAgICBuei1jb2xcbiAgICAgICAgICBbbnpTcGFuXT1cImNvbmZpZy5uenhTcGFuIHx8IDI0IC8gbGluZU51bWJlclwiXG4gICAgICAgICAgW2hpZGRlbl09XCJjb25maWcuY29sbGFwc2VcIlxuICAgICAgICAgIFtuek9yZGVyXT1cImlcIlxuICAgICAgICA+XG4gICAgICAgICAgPG56eC1jb25maWd1cmFibGUtcXVlcnktaXRlbVxuICAgICAgICAgICAgKm5nSWY9XCJjb25maWcuY29udHJvbE5hbWVcIlxuICAgICAgICAgICAgW2Zvcm1dPVwicXVlcnlGb3JtXCJcbiAgICAgICAgICAgIFtjb250cm9sXT1cImNvbmZpZ1wiXG4gICAgICAgICAgPjwvbnp4LWNvbmZpZ3VyYWJsZS1xdWVyeS1pdGVtPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibnp4LXF1ZXJ5LWJ0blwiXG4gICAgICAgIG56LWNvbFxuICAgICAgICBbbnpPcmRlcl09XCJjb250cm9scy5sZW5ndGhcIlxuICAgICAgICBbbnpTcGFuXT1cIm56eEJ0blNwYW4gfHwgMjQgLyBsaW5lTnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBuei1yb3cgbnpKdXN0aWZ5PVwiZW5kXCIgbnpBbGlnbj1cIm1pZGRsZVwiPlxuICAgICAgICAgIDxuei1zcGFjZT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm56U3BhY2VJdGVtXG4gICAgICAgICAgICAgIG56LWJ1dHRvblxuICAgICAgICAgICAgICBuelR5cGU9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHRpdGxlPVwiRW50ZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VhcmNoKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBsb2NhbGVbJ3F1ZXJ5J10gfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbnpTcGFjZUl0ZW1cbiAgICAgICAgICAgICAgbnotYnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICB0aXRsZT1cImN0cmwrclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZXNldCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgbG9jYWxlWydyZXNldCddIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm56U3BhY2VJdGVtPlxuICAgICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuenhDb2xsYXBzZVwiPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICpuelNwYWNlSXRlbVxuICAgICAgICAgICAgICAgIG56LWJ1dHRvblxuICAgICAgICAgICAgICAgIG56VHlwZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDb2xsYXBzZSgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGNvbGxhcHNlVGV4dCB9fVxuICAgICAgICAgICAgICAgIDxpIG56LWljb24gW256VHlwZV09XCJjb2xsYXBzZUljb25cIj48L2k+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbnotc3BhY2U+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvbnotY2FyZD5cbiJdfQ==
|